├── .eslintrc.json
├── .gitignore
├── README.md
├── components
├── database
│ ├── features_DB.js
│ └── resources_DB.js
├── footer
│ ├── Footer.jsx
│ ├── Footer.module.css
│ └── footer_DB.js
├── home
│ ├── MainCard.jsx
│ ├── MainDetails.jsx
│ ├── Mainhero.jsx
│ ├── index.js
│ └── main.module.css
└── navbar
│ ├── Drawer.js
│ ├── Navbar.js
│ ├── Search.js
│ └── pages.js
├── next.config.js
├── package-lock.json
├── package.json
├── pages
├── _app.js
├── blog
│ └── index.js
├── docs
│ └── index.js
├── events
│ ├── event.module.css
│ └── index.jsx
├── features
│ └── index.jsx
├── index.js
└── resources
│ └── index.jsx
├── public
├── angular.svg
├── angular_whiteTransparent_withMargin.png
├── code-icon.svg
├── devolopment.png
├── feature-icon.svg
├── joyful-development.svg
├── logo-nav@2x.png
├── loved-by-millions.svg
├── responsive-framework.svg
├── shield-large.svg
└── speed-performance.svg
├── styles
├── Home.module.css
└── globals.css
└── yarn.lock
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "next/core-web-vitals"
3 | }
4 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # next.js
12 | /.next/
13 | /out/
14 |
15 | # production
16 | /build
17 |
18 | # misc
19 | .DS_Store
20 | *.pem
21 |
22 | # debug
23 | npm-debug.log*
24 | yarn-debug.log*
25 | yarn-error.log*
26 | .pnpm-debug.log*
27 |
28 | # local env files
29 | .env*.local
30 |
31 | # vercel
32 | .vercel
33 |
34 | # typescript
35 | *.tsbuildinfo
36 | next-env.d.ts
37 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
2 |
3 | ## Getting Started
4 |
5 | First, run the development server:
6 |
7 | ```bash
8 | npm run dev
9 | # or
10 | yarn dev
11 | ```
12 |
13 | Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
14 |
15 | You can start editing the page by modifying `pages/index.js`. The page auto-updates as you edit the file.
16 |
17 | [API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.js`.
18 |
19 | The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages.
20 |
21 | ## Learn More
22 |
23 | To learn more about Next.js, take a look at the following resources:
24 |
25 | - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
26 | - [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
27 |
28 | You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
29 |
30 | ## Deploy on Vercel
31 |
32 | The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
33 |
34 | Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
35 |
--------------------------------------------------------------------------------
/components/database/features_DB.js:
--------------------------------------------------------------------------------
1 | const logo = "/feature-icon.svg";
2 |
3 | const featuresDb = [
4 | {
5 | id: 1,
6 | title: "CROSS PLATFORM",
7 | image: logo,
8 | items: [
9 | {
10 | itemId: 1,
11 | itemName: "Progressive Web Apps",
12 | itemDetails:
13 | "Use modern web platform capabilities to deliver app-like experiences. High performance, offline, and zero-step installation.",
14 | },
15 | {
16 | itemId: 2,
17 | itemName: "Native",
18 | itemDetails:
19 | "Build native mobile apps with strategies from Cordova, Ionic, or NativeScript.",
20 | },
21 | {
22 | itemId: 3,
23 | itemName: "Desktop",
24 | itemDetails:
25 | "Create desktop-installed apps across Mac, Windows, and Linux using the same Angular methods you've learned for the web plus the ability to access native OS APIs.",
26 | },
27 | ],
28 | },
29 | {
30 | id: 2,
31 | title: "SPEED AND PERFORMANCE",
32 | image: logo,
33 | items: [
34 | {
35 | itemId: 1,
36 | itemName: "Code Generation",
37 | itemDetails:
38 | "Use modern web platform capabilities to deliver app-like experiences. High performance, offline, and zero-step installation.",
39 | },
40 | {
41 | itemId: 2,
42 | itemName: "Universal",
43 | itemDetails:
44 | "Serve the first view of your application on Node.js®, .NET, PHP, and other servers for near-instant rendering in just HTML and CSS. Also paves the way for sites that optimize for SEO.",
45 | },
46 | {
47 | itemId: 3,
48 | itemName: "Code Splitting",
49 | itemDetails:
50 | "Angular apps load quickly with the new Component Router, which delivers automatic code-splitting so users only load code required to render the view they request.",
51 | },
52 | ],
53 | },
54 | {
55 | id: 3,
56 | title: "PRODUCTIVITY",
57 | image: logo,
58 | items: [
59 | {
60 | itemId: 1,
61 | itemName: "Templates",
62 | itemDetails:
63 | "Quickly create UI views with simple and powerful template syntax.",
64 | },
65 | {
66 | itemId: 2,
67 | itemName: "Angular CLI",
68 | itemDetails:
69 | "Command line tools: start building fast, add components and tests, then instantly deploy.",
70 | },
71 | {
72 | itemId: 3,
73 | itemName: "IDEs",
74 | itemDetails:
75 | "Get intelligent code completion, instant errors, and other feedback in popular editors and IDEs.",
76 | },
77 | ],
78 | },
79 | {
80 | id: 4,
81 | title: "FULL DEVELOPMENT STORY",
82 | image: logo,
83 | items: [
84 | {
85 | itemId: 1,
86 | itemName: "Testing",
87 | itemDetails:
88 | "With Karma for unit tests, you can know if you've broken things every time you save.",
89 | },
90 | {
91 | itemId: 2,
92 | itemName: "Animation",
93 | itemDetails:
94 | "Create high-performance, complex choreographies and animation timelines with very little code through Angular's intuitive API.",
95 | },
96 | {
97 | itemId: 3,
98 | itemName: "Accessibility",
99 | itemDetails:
100 | "Create accessible applications with ARIA-enabled components, developer guides, and built-in a11y test infrastructure.",
101 | },
102 | ],
103 | },
104 | ];
105 |
106 | export default featuresDb;
107 |
--------------------------------------------------------------------------------
/components/database/resources_DB.js:
--------------------------------------------------------------------------------
1 | const resourcesDB = [
2 | {
3 | id: 1,
4 | category: "development",
5 | resourceitems: [
6 | {
7 | itemTitle: "IDEs",
8 | items: [
9 | {
10 | itemHeading:
11 | "Amexio Canvas Web Based Drag and Drop IDE by MetaMagic",
12 | itemDetails:
13 | "Amexio Canvas is Drag and Drop Environment to create Fully Responsive Web and Smart Device HTML5/Angular Apps. Code will be auto generated and hot deployed by the Canvas for live testing. Out of the box 50+ Material Design Theme support. Commit your code to GitHub public or private repository.",
14 | },
15 | {
16 | itemHeading: "Angular IDE by Webclipse",
17 | itemDetails:
18 | "Built first and foremost for Angular. Turnkey setup for beginners; powerful for experts.",
19 | },
20 | {
21 | itemHeading: "IntelliJ IDEA",
22 | itemDetails: "Capable and Ergonomic Java * IDE",
23 | },
24 | {
25 | itemHeading: "Visual Studio Code",
26 | itemDetails:
27 | "VS Code is a Free, Lightweight Tool for Editing and Debugging Web Apps.",
28 | },
29 | {
30 | itemHeading: "WebStorm",
31 | itemDetails:
32 | "Lightweight yet powerful IDE, perfectly equipped for complex client-side development and server-side development with Node.js",
33 | },
34 | ],
35 | },
36 | {
37 | itemTitle: "Tooling",
38 | items: [
39 | {
40 | itemHeading: "Angular CLI",
41 | itemDetails:
42 | "The official Angular CLI makes it easy to create and develop applications from initial commit to production deployment. It already follows our best practices right out of the box!",
43 | },
44 | {
45 | itemHeading: "Angular ESLint",
46 | itemDetails:
47 | "The tooling which enables ESLint to lint Angular projects.",
48 | },
49 | {
50 | itemHeading: "Angular Playground",
51 | itemDetails:
52 | "UI development environment for building, testing, and documenting Angular applications.",
53 | },
54 | {
55 | itemHeading: "Angular Universal",
56 | itemDetails: "Server-side Rendering for Angular apps.",
57 | },
58 | ],
59 | },
60 | {
61 | itemTitle: "Data Libraries",
62 | items: [
63 | {
64 | itemHeading: "Akita",
65 | itemDetails: "Akita is a state management pattern,",
66 | },
67 | {
68 | itemHeading: "Angular Fire",
69 | itemDetails: "The official library for Firebase and Angular",
70 | },
71 | {
72 | itemHeading: "Apollo",
73 | itemDetails:
74 | "Apollo is a data stack for modern apps, built with GraphQL.",
75 | },
76 | {
77 | itemHeading: "ButterCMS",
78 | itemDetails:
79 | "ButterCMS is a headless CMS that lets you manage content using our dashboard and integrate it into your Angular Application",
80 | },
81 | ],
82 | },
83 | {
84 | itemTitle: "UI Components",
85 | items: [
86 | {
87 | itemHeading: "ag-Grid",
88 | itemDetails:
89 | "A datagrid for Angular with enterprise style features such as sorting, filtering, custom rendering, editing, grouping, aggregation and pivoting.",
90 | },
91 | {
92 | itemHeading: "Alyle UI",
93 | itemDetails: "Minimal Design, a set of components for Angular.",
94 | },
95 | {
96 | itemHeading: "Amexio - Angular Extensions",
97 | itemDetails:
98 | "Amexio is a rich set of Angular components powered by HTML5 & CSS3 for Responsive Web Design and 80+ built-in Material Design Themes. Amexio has 3 Editions, Standard, Enterprise and Creative.",
99 | },
100 | {
101 | itemHeading: "Angular & Material Design 2.0 for Bootstrap 5",
102 | itemDetails:
103 | "Free components, templates & plugins for the latest Bootstrap 4 styled in accordance with Material Design (guidelines introduced in 2015)",
104 | },
105 | ],
106 | },
107 | {
108 | itemTitle: "Cross-Platform Development",
109 | items: [
110 | {
111 | itemHeading: "Electron",
112 | itemDetails: "Electron Platform for Angular.",
113 | },
114 | {
115 | itemHeading: "Alyle UI",
116 | itemDetails: "Minimal Design, a set of components for Angular.",
117 | },
118 | {
119 | itemHeading: "Amexio - Angular Extensions",
120 | itemDetails:
121 | "Amexio is a rich set of Angular components powered by HTML5 & CSS3 for Responsive Web Design and 80+ .",
122 | },
123 | {
124 | itemHeading: "Angular & Material Design 2.0 for Bootstrap 5",
125 | itemDetails:
126 | "Free components, templates & plugins for the latest Bootstrap 4 styled in accordance with Material Design (guidelines introduced in 2015)",
127 | },
128 | ],
129 | },
130 | ],
131 | },
132 | {
133 | id: 2,
134 | category: "education",
135 | resourceitems: [
136 | {
137 | itemTitle: "Books",
138 | items: [
139 | {
140 | itemHeading: "Angular from Scratch",
141 | itemDetails: "Learn Angular from Scratch, building a sales application",
142 | },
143 | {
144 | itemHeading: "Angular Projects - Second Edition",
145 | itemDetails: "Build modern web apps by exploring Angular with 10 different projects and cutting-edge technologies",
146 | },
147 | {
148 | itemHeading: "Angular Router",
149 | itemDetails: "This book is a comprehensive guide to the Angular router written by its designer. The book explores the library in depth, including the mental model, design constraints, subtleties of the API.",
150 | },
151 | {
152 | itemHeading: "Angular-Buch (German)",
153 | itemDetails: "How to build Angular applications using NGRX",
154 | },
155 | {
156 | itemHeading: "Becoming a Ninja with Angular",
157 | itemDetails: "This ebook will help you getting the philosophy of the framework: what comes from 1.x, what has been introduced and why",
158 | },
159 | {
160 | itemHeading: "Developing with Angular",
161 | itemDetails: "Practical journey with Angular framework, ES6, TypeScript, webpack and Angular CLI.",
162 | },
163 | {
164 | itemHeading: "How to integrate ButterCMS into Angular 2+ App",
165 | itemDetails: "Integrate a Headless CMS into your Angular App, create blog posts and pages",
166 | },
167 | ],
168 | },
169 | {
170 | itemTitle: "Workshops & Onsite Training",
171 | items: [
172 | {
173 | itemHeading: "Accelebrate",
174 | itemDetails: "Customized, Instructor-Led Angular Training",
175 | },
176 | {
177 | itemHeading: "Angular Projects - Second Edition",
178 | itemDetails: "Build modern web apps by exploring Angular with 10 different projects and cutting-edge technologies",
179 | },
180 | {
181 | itemHeading: "Angular Academy (Canada)",
182 | itemDetails: "Angular Academy is a two day hands-on public course given in-person across Canada!",
183 | },
184 | {
185 | itemHeading: "Angular-Buch (German)",
186 | itemDetails: "How to build Angular applications using NGRX",
187 | },
188 | {
189 | itemHeading: "Becoming a Ninja with Angular",
190 | itemDetails: "This ebook will help you getting the philosophy of the framework: what comes from 1.x, what has been introduced and why",
191 | },
192 | {
193 | itemHeading: "Developing with Angular",
194 | itemDetails: "Practical journey with Angular framework, ES6, TypeScript, webpack and Angular CLI.",
195 | },
196 | {
197 | itemHeading: "How to integrate ButterCMS into Angular 2+ App",
198 | itemDetails: "Integrate a Headless CMS into your Angular App, create blog posts and pages",
199 | },
200 | ],
201 | },
202 | {
203 | itemTitle: "Online Training",
204 | items: [
205 | {
206 | itemHeading: "Accelebrate",
207 | itemDetails: "Customized, Instructor-Led Angular Training",
208 | },
209 | {
210 | itemHeading: "Angular Projects - Second Edition",
211 | itemDetails: "Build modern web apps by exploring Angular with 10 different projects and cutting-edge technologies",
212 | },
213 | {
214 | itemHeading: "Angular Academy (Canada)",
215 | itemDetails: "Angular Academy is a two day hands-on public course given in-person across Canada!",
216 | },
217 | {
218 | itemHeading: "Accelebrate",
219 | itemDetails: "Customized, Instructor-Led Angular Training",
220 | },
221 | {
222 | itemHeading: "Angular Projects - Second Edition",
223 | itemDetails: "Build modern web apps by exploring Angular with 10 different projects and cutting-edge technologies",
224 | },
225 | {
226 | itemHeading: "Angular Academy (Canada)",
227 | itemDetails: "Angular Academy is a two day hands-on public course given in-person across Canada!",
228 | },
229 | ],
230 | },
231 | ],
232 | },
233 | {
234 | id: 3,
235 | category: "community",
236 | resourceitems: [
237 | {
238 | itemTitle: "Community Curations",
239 | items: [
240 | {
241 | itemHeading: "Angular Builders",
242 | itemDetails: "A collection of Angular builders for your Angular projects",
243 | },
244 | {
245 | itemHeading: "Angular Community Meetup",
246 | itemDetails: "Angular-RU Community on GitHub is a single entry point for all resources, chats, podcasts and meetups for Angular in Russia.",
247 | },
248 | {
249 | itemHeading: "Angular Conferences and Angular Camps in Moscow, Russia.",
250 | itemDetails: "This book is a comprehensive guide to the Angular router written by its designer. The book explores the library in depth, including the mental model, design constraints, subtleties of the API.",
251 | },
252 | {
253 | itemHeading: "Angular inDepth",
254 | itemDetails: "Peer-reviewed Angular articles and tutorials.",
255 | },
256 | {
257 | itemHeading: "Angular Nation",
258 | itemDetails: "Angular Nation is a free private network created for Angular developers to network, collaborate, and ask questions.",
259 | },
260 | {
261 | itemHeading: "Angular Subreddit",
262 | itemDetails: "An Angular-dedicated subreddit.",
263 | },
264 | {
265 | itemHeading: "API Based CMS with Butter",
266 | itemDetails: "Add API Based CMS to your Angular app",
267 | },
268 | ],
269 | },
270 | {
271 | itemTitle: "Podcasts",
272 | items: [
273 | {
274 | itemHeading: "Adventures in Angular",
275 | itemDetails: "Adventures in Angular is a weekly podcast dedicated to the Angular platform and related technologies, tools, languages, and practices.",
276 | },
277 | {
278 | itemHeading: "Angular Experience (NgXP)",
279 | itemDetails: "Weekly technical-adjacent podcast by Brooke Avery & Erik Slack. Don't just code in Angular, come enjoy the Angular Experience!",
280 | },
281 | {
282 | itemHeading: "Angular Router",
283 | itemDetails: "This book is a comprehensive guide to the Angular router written by its designer. The book explores the library in depth, including the mental model, design constraints, subtleties of the API.",
284 | },
285 | {
286 | itemHeading: "Angular-Buch (German)",
287 | itemDetails: "How to build Angular applications using NGRX",
288 | },
289 | {
290 | itemHeading: "Becoming a Ninja with Angular",
291 | itemDetails: "This ebook will help you getting the philosophy of the framework: what comes from 1.x, what has been introduced and why",
292 | },
293 | {
294 | itemHeading: "Developing with Angular",
295 | itemDetails: "Practical journey with Angular framework, ES6, TypeScript, webpack and Angular CLI.",
296 | },
297 | {
298 | itemHeading: "How to integrate ButterCMS into Angular 2+ App",
299 | itemDetails: "Integrate a Headless CMS into your Angular App, create blog posts and pages",
300 | },
301 | ],
302 | },
303 | ],
304 | },
305 | ];
306 |
307 | export default resourcesDB;
308 |
--------------------------------------------------------------------------------
/components/footer/Footer.jsx:
--------------------------------------------------------------------------------
1 | import { Box, Container, Grid, Link, Typography } from "@mui/material";
2 | import React from "react";
3 | import styles from "./Footer.module.css";
4 | import footerData from "./footer_DB";
5 |
6 | export default function Footer() {
7 | return (
8 |
9 |
10 |
11 | {footerData.map((item, idx) => (
12 |
13 | {item.heading}
14 |
15 | {item.lists.map((item, idx) => (
16 | -
17 |
18 | {item.listName}
19 |
20 |
21 | ))}
22 |
23 |
24 | ))}
25 |
26 |
27 |
28 | Super-powered by Google ©2010-2022.
29 |
30 |
31 | Code licensed under an MIT-style License. Documentation licensed
32 | under CC BY 4.0.
33 |
34 |
35 | Version 14.2.8-local+sha.7c4f77a062.
36 |
37 |
38 |
39 |
40 | );
41 | }
42 |
--------------------------------------------------------------------------------
/components/footer/Footer.module.css:
--------------------------------------------------------------------------------
1 | .footer {
2 | background-color: #1976d2;
3 | position: relative;
4 | line-height: 24px;
5 | line-height: 2.4rem;
6 | flex: 1;
7 | padding: 48px 25px;
8 | z-index: 0;
9 | font-weight: 300;
10 | }
11 | .footer::after {
12 | content: "";
13 | position: absolute;
14 | z-index: -1;
15 | top: 0;
16 | bottom: 0;
17 | left: 0;
18 | right: 0;
19 | background: url(/angular_whiteTransparent_withMargin.png) top 0 left 0
20 | repeat,
21 | url(/angular_whiteTransparent_withMargin.png) top 80px left 160px
22 | repeat;
23 | opacity: 0.05;
24 | background-size: 320px auto;
25 | }
26 |
27 | .oderlist {
28 | list-style: none;
29 | padding: 0;
30 | line-height: 2rem;
31 | }
32 |
--------------------------------------------------------------------------------
/components/footer/footer_DB.js:
--------------------------------------------------------------------------------
1 | const footerData = [
2 | {
3 | id: 1,
4 | heading: "RESOURCES",
5 | lists: [
6 | {
7 | listName: "About",
8 | link: "#",
9 | },
10 | {
11 | listName: "Resource listing",
12 | link: "#",
13 | },
14 | {
15 | listName: "Press kit",
16 | link: "#",
17 | },
18 | {
19 | listName: "Blog",
20 | link: "#",
21 | },
22 | {
23 | listName: "Usage analytics",
24 | link: "#",
25 | },
26 | ],
27 | },
28 | {
29 | id: 2,
30 | heading: "HELP",
31 | lists: [
32 | {
33 | listName: "Stack Overflow",
34 | link: "#",
35 | },
36 | {
37 | listName: "Join Discord",
38 | link: "#",
39 | },
40 | {
41 | listName: "Gitter",
42 | link: "#",
43 | },
44 | {
45 | listName: "Report Issues",
46 | link: "#",
47 | },
48 | {
49 | listName: "Code of Conduct",
50 | link: "#",
51 | },
52 | ],
53 | },
54 | {
55 | id: 3,
56 | heading: "COMMUNITY",
57 | lists: [
58 | {
59 | listName: "Events",
60 | link: "#",
61 | },
62 | {
63 | listName: "Meetups",
64 | link: "#",
65 | },
66 | {
67 | listName: "Twitter",
68 | link: "#",
69 | },
70 | {
71 | listName: "GitHub",
72 | link: "#",
73 | },
74 | {
75 | listName: "Contribute",
76 | link: "#",
77 | },
78 | ],
79 | },
80 | {
81 | id: 4,
82 | heading: "LANGUAGES",
83 | lists: [
84 | {
85 | listName: "Español",
86 | link: "#",
87 | },
88 | {
89 | listName: "简体中文版",
90 | link: "#",
91 | },
92 | {
93 | listName: "正體中文版",
94 | link: "#",
95 | },
96 | {
97 | listName: "日本語版",
98 | link: "#",
99 | },
100 | {
101 | listName: "한국어",
102 | link: "#",
103 | },
104 | {
105 | listName: "Complete language list",
106 | link: "#",
107 | },
108 | ],
109 | },
110 | ];
111 |
112 | export default footerData;
113 |
--------------------------------------------------------------------------------
/components/home/MainCard.jsx:
--------------------------------------------------------------------------------
1 | import {
2 | Card,
3 | CardActionArea,
4 | CardContent,
5 | Container,
6 | Grid,
7 | Typography,
8 | } from "@mui/material";
9 | import Image from "next/image";
10 | import React from "react";
11 | // import logo from "../../assets/code-icon.svg";
12 |
13 | export default function MainCard() {
14 | return (
15 |
16 |
22 |
33 |
34 |
35 |
36 |
37 |
43 | TRY IT NOW
44 |
45 |
46 | Explore Angular`s capabilities with a ready-made sample app.
47 | No setup required.
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | );
56 | }
57 |
--------------------------------------------------------------------------------
/components/home/MainDetails.jsx:
--------------------------------------------------------------------------------
1 | import { Container, Divider, Grid, Typography } from "@mui/material";
2 | import React from "react";
3 | import Image from "next/image";
4 |
5 |
6 | export default function MainDetails() {
7 | return (
8 | <>
9 |
10 |
17 |
18 |
19 |
20 |
21 |
22 | DEVELOP ACROSS ALL PLATFORMS
23 |
24 |
30 | Learn one way to build applications with Angular and reuse your
31 | code and abilities to build apps for any deployment target. For
32 | web, mobile web, native mobile and native desktop.
33 |
34 |
35 |
36 |
37 |
44 |
45 |
46 | DEVELOP ACROSS ALL PLATFORMS
47 |
48 |
54 | Learn one way to build applications with Angular and reuse your
55 | code and abilities to build apps for any deployment target. For
56 | web, mobile web, native mobile and native desktop.
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
71 |
72 |
73 |
74 |
75 |
76 | DEVELOP ACROSS ALL PLATFORMS
77 |
78 |
84 | Learn one way to build applications with Angular and reuse your
85 | code and abilities to build apps for any deployment target. For
86 | web, mobile web, native mobile and native desktop.
87 |
88 |
89 |
90 |
91 |
92 |
99 |
100 |
101 |
102 | DEVELOP ACROSS ALL PLATFORMS
103 |
104 |
110 | Learn one way to build applications with Angular and reuse your
111 | code and abilities to build apps for any deployment target. For
112 | web, mobile web, native mobile and native desktop.
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 | >
123 | );
124 | }
125 |
--------------------------------------------------------------------------------
/components/home/Mainhero.jsx:
--------------------------------------------------------------------------------
1 | import { Box, Button, Grid, Typography } from "@mui/material";
2 | import { Container } from "@mui/system";
3 | import React from "react";
4 | import style from "./main.module.css";
5 | import Image from "next/image";
6 |
7 | export default function Mainhero() {
8 | return (
9 |
10 |
11 |
12 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 | {"The modern web developer's platform"}
26 |
27 |
51 |
52 |
53 |
54 |
55 |
56 | );
57 | }
58 |
--------------------------------------------------------------------------------
/components/home/index.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import Mainhero from "./Mainhero";
3 | import MainDetails from "./MainDetails";
4 | import MainCard from "./MainCard";
5 | export default function Home() {
6 | return (
7 |
8 |
9 |
10 |
11 |
12 | );
13 | }
14 |
--------------------------------------------------------------------------------
/components/home/main.module.css:
--------------------------------------------------------------------------------
1 | .hero {
2 | display: flex;
3 | flex-direction: column;
4 | justify-content: center;
5 | align-items: center;
6 | position: absolute;
7 | width: 100%;
8 | min-height: 500px;
9 | height: 80vh;
10 | max-height: 580px;
11 | box-sizing: border-box;
12 | padding: 48px 48px 32px;
13 | overflow: hidden;
14 | -webkit-transform: skewY(8deg);
15 | transform: skewY(8deg);
16 | -webkit-transform-origin: 100%;
17 | transform-origin: 100%;
18 | z-index: -1;
19 | margin-top: -80px;
20 | }
21 | .background {
22 | background-color: #1976d2 !important;
23 | background: linear-gradient(145deg, #0d47a1, #42a5f5);
24 | color: #fff;
25 | }
26 |
27 | .cardDesign {
28 | box-shadow: 8px 12px 40px -19px rgba(0, 0, 0, 0.52);
29 | -webkit-box-shadow: 8px 12px 40px -19px rgba(0, 0, 0, 0.52);
30 | -moz-box-shadow: 8px 12px 40px -19px rgba(0, 0, 0, 0.52);
31 | }
32 |
33 | .heading {
34 | font-size: 2.9rem;
35 | color: #fff;
36 | }
37 |
38 |
39 | @media only screen and (max-width: 650px) {
40 | .hero {
41 | -webkit-transform: skewY(0deg);
42 | transform: skewY(0deg);
43 | }
44 | .heading {
45 | font-size: 2.1rem;
46 | text-align: center;
47 | }
48 | .button{
49 | text-align: center;
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/components/navbar/Drawer.js:
--------------------------------------------------------------------------------
1 | import * as React from "react";
2 | import {
3 | Box,
4 | Drawer,
5 | List,
6 | ListItem,
7 | ListItemButton,
8 | ListItemIcon,
9 | ListItemText,
10 | } from "@mui/material";
11 | import MenuIcon from "@mui/icons-material/Menu";
12 |
13 |
14 | export default function TemporaryDrawer() {
15 | const [state, setState] = React.useState({
16 | left: false,
17 | });
18 |
19 | const toggleDrawer = (anchor, open) => (event) => {
20 | if (
21 | event.type === "keydown" &&
22 | (event.key === "Tab" || event.key === "Shift")
23 | ) {
24 | return;
25 | }
26 |
27 | setState({ ...state, [anchor]: open });
28 | };
29 |
30 | const list = (anchor) => (
31 |
37 |
38 | {["Inbox", "Starred", "Send email", "Drafts"].map((text, index) => (
39 |
40 |
41 |
42 |
43 |
44 | ))}
45 |
46 |
47 | );
48 | const anchor = "left";
49 | return (
50 |
51 |
52 |
53 |
59 | {list(anchor)}
60 |
61 |
62 |
63 | );
64 | }
65 |
--------------------------------------------------------------------------------
/components/navbar/Navbar.js:
--------------------------------------------------------------------------------
1 | import {useContext, useState} from "react";
2 | import {
3 | Divider,
4 | IconButton,
5 | AppBar,
6 | Box,
7 | Toolbar,
8 | Container,
9 | Button,
10 | } from "@mui/material";
11 |
12 | import Link from "next/link";
13 | import Image from "next/image";
14 | import { useTheme } from "@mui/material/styles";
15 | import { useRouter } from "next/router";
16 | import { Search , SearchIconWrapper , StyledInputBase} from "./Search";
17 | import pages from "./pages"
18 | // icons
19 | import DarkModeIcon from "@mui/icons-material/DarkMode";
20 | import TwitterIcon from "@mui/icons-material/Twitter";
21 | import GitHubIcon from "@mui/icons-material/GitHub";
22 | import SearchIcon from "@mui/icons-material/Search";
23 | import YouTubeIcon from "@mui/icons-material/YouTube";
24 | import LightModeIcon from "@mui/icons-material/LightMode";
25 | import Drawer from "./Drawer";
26 |
27 | function Navbar({ ColorModeContext }) {
28 | const [toggle, setToggle] = useState(true)
29 |
30 | const router = useRouter();
31 | const theme = useTheme();
32 | const { pathname } = router;
33 | const colorMode = useContext(ColorModeContext);
34 |
35 | const appbar = {
36 | backgroundColor: `${pathname === "/" ? "transparent" : "#1976d2"}`,
37 | boxShadow: `${pathname === "/" && "none"}`,
38 | position: "none",
39 | };
40 |
41 | const handleClick = () => {
42 | setToggle(!toggle);
43 | console.log(toggle);
44 |
45 | }
46 | return (
47 |
192 | );
193 | }
194 | export default Navbar;
195 |
--------------------------------------------------------------------------------
/components/navbar/Search.js:
--------------------------------------------------------------------------------
1 | import { InputBase } from "@mui/material";
2 | import { styled, alpha } from "@mui/material/styles";
3 | import { useTheme } from "@mui/material/styles";
4 |
5 | export const Search = styled("div")(({ theme }) => ({
6 | position: "relative",
7 | borderRadius: "20px",
8 | backgroundColor: alpha(theme.palette.common.white, 1),
9 | color: alpha(theme.palette.common.black, 1),
10 | "&:hover": {
11 | backgroundColor: alpha(theme.palette.common.white, 1),
12 | },
13 | marginLeft: 0,
14 | width: "100%",
15 | [theme.breakpoints.up("md")]: {
16 | marginLeft: theme.spacing(1),
17 | width: "auto",
18 | },
19 | }));
20 |
21 | export const SearchIconWrapper = styled("div")(({ theme }) => ({
22 | padding: theme.spacing(0, 2),
23 | height: "100%",
24 | position: "absolute",
25 | pointerEvents: "none",
26 | display: "flex",
27 | alignItems: "center",
28 | justifyContent: "center",
29 | }));
30 |
31 | export const StyledInputBase = styled(InputBase)(({ theme }) => ({
32 | color: "inherit",
33 | "& .MuiInputBase-input": {
34 | padding: theme.spacing(1, 1, 1, 0),
35 | paddingLeft: `calc(1em + ${theme.spacing(4)})`,
36 | transition: theme.transitions.create("width"),
37 | width: "80%",
38 | [theme.breakpoints.up("sm")]: {
39 | width: "13ch",
40 | "&:focus": {
41 | width: "15ch",
42 | },
43 | },
44 | },
45 | }));
46 |
47 |
--------------------------------------------------------------------------------
/components/navbar/pages.js:
--------------------------------------------------------------------------------
1 | const pages = [
2 | {
3 | id: 1,
4 | name: "FEATURES",
5 | path: "/features",
6 | },
7 | {
8 | id: 2,
9 | name: "RESOURCES",
10 | path: "/resources",
11 | },
12 | ];
13 |
14 | export default pages
--------------------------------------------------------------------------------
/next.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | const nextConfig = {
3 | reactStrictMode: true,
4 | swcMinify: true,
5 | }
6 |
7 | module.exports = nextConfig
8 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "angular-next-web",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "dev": "next dev",
7 | "build": "next build",
8 | "start": "next start",
9 | "lint": "next lint"
10 | },
11 | "dependencies": {
12 | "@emotion/react": "^11.10.4",
13 | "@emotion/styled": "^11.10.4",
14 | "@mui/icons-material": "^5.10.9",
15 | "@mui/lab": "^5.0.0-alpha.104",
16 | "@mui/material": "^5.10.10",
17 | "@mui/x-data-grid": "^5.17.8",
18 | "next": "12.3.1",
19 | "react": "18.2.0",
20 | "react-dom": "18.2.0"
21 | },
22 | "devDependencies": {
23 | "eslint": "8.26.0",
24 | "eslint-config-next": "12.3.1"
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/pages/_app.js:
--------------------------------------------------------------------------------
1 | import "../styles/globals.css";
2 | import { useState, useMemo, createContext } from "react";
3 | import Footer from "../components/footer/Footer";
4 | import Navbar from "../components/navbar/Navbar";
5 | import { ThemeProvider, createTheme } from "@mui/material/styles";
6 | import CssBaseline from "@mui/material/CssBaseline";
7 |
8 | function MyApp({ Component, pageProps }) {
9 | const [mode, setMode] = useState("light");
10 | const ColorModeContext = createContext({ toggleColorMode: () => {} });
11 | const colorMode = useMemo(
12 | () => ({
13 | toggleColorMode: () => {
14 | setMode((prevMode) => (prevMode === "light" ? "dark" : "light"));
15 | },
16 | }),
17 | []
18 | );
19 |
20 | const theme = useMemo(
21 | () =>
22 | createTheme({
23 | palette: {
24 | mode,
25 | },
26 | }),
27 | [mode]
28 | );
29 | return (
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 | );
39 | }
40 |
41 | export default MyApp;
42 |
--------------------------------------------------------------------------------
/pages/blog/index.js:
--------------------------------------------------------------------------------
1 | // import React from "react";
2 |
3 | // export default function index() {
4 | // return (
5 | //
13 | // Blogs
14 | //
15 | // );
16 | // }
17 | import * as React from "react";
18 | import IconButton from "@mui/material/IconButton";
19 | import Box from "@mui/material/Box";
20 | import { useTheme, ThemeProvider, createTheme } from "@mui/material/styles";
21 | import Brightness4Icon from "@mui/icons-material/Brightness4";
22 | import Brightness7Icon from "@mui/icons-material/Brightness7";
23 |
24 | const ColorModeContext = React.createContext({ toggleColorMode: () => {} });
25 |
26 | function MyApp() {
27 | const theme = useTheme();
28 |
29 | const colorMode = React.useContext(ColorModeContext);
30 |
31 | return (
32 |
44 | {theme.palette.mode} mode
45 |
50 | {theme.palette.mode === "dark" ? (
51 |
52 | ) : (
53 |
54 | )}
55 |
56 |
57 | );
58 | }
59 |
60 | export default function ToggleColorMode() {
61 | const [mode, setMode] = React.useState("light");
62 | const colorMode = React.useMemo(
63 | () => ({
64 | toggleColorMode: () => {
65 | setMode((prevMode) => (prevMode === "light" ? "dark" : "light"));
66 | },
67 | }),
68 | []
69 | );
70 |
71 | const theme = React.useMemo(
72 | () =>
73 | createTheme({
74 | palette: {
75 | mode,
76 | },
77 | }),
78 | [mode]
79 | );
80 |
81 | return (
82 |
83 |
84 |
85 |
86 |
87 | );
88 | }
89 |
--------------------------------------------------------------------------------
/pages/docs/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 |
3 | export default function index() {
4 | return (
5 |
13 | Docs
14 |
15 | )
16 | }
17 |
--------------------------------------------------------------------------------
/pages/events/event.module.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/masud-pervez/angular-web-clone/48dde2e91edf8a6bd829ee28aeef23e7bcbf82d6/pages/events/event.module.css
--------------------------------------------------------------------------------
/pages/events/index.jsx:
--------------------------------------------------------------------------------
1 | import { Grid, Typography } from "@mui/material";
2 | import React from "react";
3 |
4 | export default function index() {
5 | return (
6 |
7 |
15 |
21 | EVENTS
22 |
23 |
24 |
25 | );
26 | }
27 |
--------------------------------------------------------------------------------
/pages/features/index.jsx:
--------------------------------------------------------------------------------
1 | import {
2 | Box,
3 | Button,
4 | Container,
5 | Divider,
6 | Grid,
7 | Stack,
8 | Typography,
9 | } from "@mui/material";
10 | import Image from "next/image";
11 | import Link from "next/link";
12 | import React from "react";
13 | import featuresDb from "../../components/database/features_DB";
14 |
15 | export default function Features() {
16 | return (
17 |
18 |
19 |
25 | FEATURES & BENEFITS
26 |
27 |
28 |
29 |
30 | {featuresDb.map((item, idx) => {
31 | return (
32 |
33 |
34 |
41 | {item.title}
42 |
43 |
50 |
51 |
52 |
53 |
59 | {item.items.map((itm, idx) => (
60 |
61 |
62 | {itm.itemName}
63 |
64 |
70 | {itm.itemDetails}
71 |
72 |
73 | ))}
74 |
75 |
76 | );
77 | })}
78 |
79 |
86 |
87 |
104 |
105 |
106 |
107 |
108 | );
109 | }
110 |
--------------------------------------------------------------------------------
/pages/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import Home from "../components/home/index"
3 |
4 | export default function Homes() {
5 | return (
6 |
7 | )
8 | }
9 |
--------------------------------------------------------------------------------
/pages/resources/index.jsx:
--------------------------------------------------------------------------------
1 | /* eslint-disable react-hooks/rules-of-hooks */
2 | import {
3 | Box,
4 | Card,
5 | CardContent,
6 | CardHeader,
7 | Grid,
8 | Typography,
9 | } from "@mui/material";
10 | import * as React from "react";
11 | import { useState } from "react";
12 | import Tab from "@mui/material/Tab";
13 | import TabContext from "@mui/lab/TabContext";
14 | import TabList from "@mui/lab/TabList";
15 | import TabPanel from "@mui/lab/TabPanel";
16 | import resourcesDB from "../../components/database/resources_DB";
17 |
18 | export default function index() {
19 | const [value, setValue] = useState("development");
20 |
21 | const handleChange = (event, newValue) => {
22 | setValue(newValue);
23 | };
24 |
25 | return (
26 |
27 |
35 |
41 | EXPLORE ANGULAR RESOURCES
42 |
43 |
44 |
45 |
55 |
58 |
59 |
60 |
66 |
67 |
68 |
69 |
70 |
71 |
72 | {resourcesDB.map((resitm) => {
73 | const { id, category, resourceitems } = resitm;
74 | return (
75 |
76 |
77 | {resourceitems.map((resource, idx) => {
78 | const { itemTitle, items } = resource;
79 | return (
80 |
81 |
85 | {items.map((item, idx) => {
86 | const { itemDetails, itemHeading } = item;
87 |
88 | return (
89 |
107 |
112 | {itemHeading}
113 |
114 |
115 | {itemDetails}
116 |
117 |
118 | );
119 | })}
120 |
121 | );
122 | })}
123 |
124 |
125 | );
126 | })}
127 |
128 |
129 |
130 |
131 | );
132 | }
133 |
--------------------------------------------------------------------------------
/public/angular.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
17 |
--------------------------------------------------------------------------------
/public/angular_whiteTransparent_withMargin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/masud-pervez/angular-web-clone/48dde2e91edf8a6bd829ee28aeef23e7bcbf82d6/public/angular_whiteTransparent_withMargin.png
--------------------------------------------------------------------------------
/public/code-icon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/devolopment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/masud-pervez/angular-web-clone/48dde2e91edf8a6bd829ee28aeef23e7bcbf82d6/public/devolopment.png
--------------------------------------------------------------------------------
/public/feature-icon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/joyful-development.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
74 |
--------------------------------------------------------------------------------
/public/logo-nav@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/masud-pervez/angular-web-clone/48dde2e91edf8a6bd829ee28aeef23e7bcbf82d6/public/logo-nav@2x.png
--------------------------------------------------------------------------------
/public/responsive-framework.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/shield-large.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/speed-performance.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/styles/Home.module.css:
--------------------------------------------------------------------------------
1 | .container {
2 | padding: 0 2rem;
3 | }
4 |
5 | .main {
6 | min-height: 100vh;
7 | padding: 4rem 0;
8 | flex: 1;
9 | display: flex;
10 | flex-direction: column;
11 | justify-content: center;
12 | align-items: center;
13 | }
14 |
15 | .footer {
16 | display: flex;
17 | flex: 1;
18 | padding: 2rem 0;
19 | border-top: 1px solid #eaeaea;
20 | justify-content: center;
21 | align-items: center;
22 | }
23 |
24 | .footer a {
25 | display: flex;
26 | justify-content: center;
27 | align-items: center;
28 | flex-grow: 1;
29 | }
30 |
31 | .title a {
32 | color: #0070f3;
33 | text-decoration: none;
34 | }
35 |
36 | .title a:hover,
37 | .title a:focus,
38 | .title a:active {
39 | text-decoration: underline;
40 | }
41 |
42 | .title {
43 | margin: 0;
44 | line-height: 1.15;
45 | font-size: 4rem;
46 | }
47 |
48 | .title,
49 | .description {
50 | text-align: center;
51 | }
52 |
53 | .description {
54 | margin: 4rem 0;
55 | line-height: 1.5;
56 | font-size: 1.5rem;
57 | }
58 |
59 | .code {
60 | background: #fafafa;
61 | border-radius: 5px;
62 | padding: 0.75rem;
63 | font-size: 1.1rem;
64 | font-family: Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono,
65 | Bitstream Vera Sans Mono, Courier New, monospace;
66 | }
67 |
68 | .grid {
69 | display: flex;
70 | align-items: center;
71 | justify-content: center;
72 | flex-wrap: wrap;
73 | max-width: 800px;
74 | }
75 |
76 | .card {
77 | margin: 1rem;
78 | padding: 1.5rem;
79 | text-align: left;
80 | color: inherit;
81 | text-decoration: none;
82 | border: 1px solid #eaeaea;
83 | border-radius: 10px;
84 | transition: color 0.15s ease, border-color 0.15s ease;
85 | max-width: 300px;
86 | }
87 |
88 | .card:hover,
89 | .card:focus,
90 | .card:active {
91 | color: #0070f3;
92 | border-color: #0070f3;
93 | }
94 |
95 | .card h2 {
96 | margin: 0 0 1rem 0;
97 | font-size: 1.5rem;
98 | }
99 |
100 | .card p {
101 | margin: 0;
102 | font-size: 1.25rem;
103 | line-height: 1.5;
104 | }
105 |
106 | .logo {
107 | height: 1em;
108 | margin-left: 0.5rem;
109 | }
110 |
111 | @media (max-width: 600px) {
112 | .grid {
113 | width: 100%;
114 | flex-direction: column;
115 | }
116 | }
117 |
118 | @media (prefers-color-scheme: dark) {
119 | .card,
120 | .footer {
121 | border-color: #222;
122 | }
123 | .code {
124 | background: #111;
125 | }
126 | .logo img {
127 | filter: invert(1);
128 | }
129 | }
130 |
--------------------------------------------------------------------------------
/styles/globals.css:
--------------------------------------------------------------------------------
1 | html,
2 | body {
3 | padding: 0;
4 | margin: 0;
5 | font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
6 | Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
7 | }
8 |
9 | a {
10 | color: inherit;
11 | text-decoration: none;
12 | }
13 |
14 | * {
15 | box-sizing: border-box;
16 | }
17 |
18 | @media (prefers-color-scheme: dark) {
19 | html {
20 | color-scheme: dark;
21 | }
22 | body {
23 | color: white;
24 | background: black;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------