diff --git a/package-lock.json b/package-lock.json index 808c1b5..07f5d04 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ }, "devDependencies": { "@eslint/eslintrc": "^3", + "@iconify-icon/react": "^3.0.0", "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", @@ -281,6 +282,29 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@iconify-icon/react": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@iconify-icon/react/-/react-3.0.0.tgz", + "integrity": "sha512-TOyzGUIfOFbmRQflMbf8k8bBGbeVAVCnvJ/rKz2SgBOV6VZLv7E9gzLvkPzfkZ2HZL+GbRtLNX/GJq2EI54OFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "iconify-icon": "^3.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/cyberalien" + }, + "peerDependencies": { + "react": ">=16" + } + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "dev": true, + "license": "MIT" + }, "node_modules/@img/sharp-darwin-arm64": { "version": "0.34.2", "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.2.tgz", @@ -3444,6 +3468,19 @@ "url": "https://github.com/sponsors/typicode" } }, + "node_modules/iconify-icon": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/iconify-icon/-/iconify-icon-3.0.0.tgz", + "integrity": "sha512-yPcnpkn8HUEUckrxxJBOer3jbGv3bqozHsLMLBRxhk3As1X76BgV2mS2a1HTNOIagR8nUs30H3qAd9GLe8Mnlg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@iconify/types": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/cyberalien" + } + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", diff --git a/package.json b/package.json index bdb7904..d449e5a 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ }, "devDependencies": { "@eslint/eslintrc": "^3", + "@iconify-icon/react": "^3.0.0", "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", diff --git a/public/images/dtr-logo-eagle.png b/public/images/dtr-logo-eagle.png new file mode 100644 index 0000000..68ca859 Binary files /dev/null and b/public/images/dtr-logo-eagle.png differ diff --git a/public/next.svg b/public/svg/next.svg similarity index 100% rename from public/next.svg rename to public/svg/next.svg diff --git a/src/app/layout.tsx b/src/app/layout.tsx index ab5d140..82989fa 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,6 +1,6 @@ import type { Metadata } from 'next'; import { ReactNode } from 'react'; -import { Roboto } from 'next/font/google'; +import { Montserrat, Roboto } from 'next/font/google'; import '@core/styles/globals.scss'; import '@core/styles/reset.scss'; @@ -10,6 +10,12 @@ const roboto = Roboto({ variable: '--font-roboto', }); +const montseratt = Montserrat({ + subsets: ['cyrillic'], + weight: ['300', '400', '500', '600', '700'], + variable: '--font-montseratt', +}); + export const metadata: Metadata = { title: 'Независимая оценка и судебная экспертиза | Компания ДИТРАСО', description: @@ -21,7 +27,9 @@ export default function RootLayout({ }: Readonly<{ children: ReactNode }>) { return ( - {children} + + {children} + ); } diff --git a/src/app/page.tsx b/src/app/page.tsx index 8e52ae9..5f51e64 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,3 +1,9 @@ -export default function Home() { - return
Main
; +import { Home } from '@/views'; + +export default function HomePage() { + return ( +
+ +
+ ); } diff --git a/src/core/styles/variables.scss b/src/core/styles/variables.scss index a08b916..123cb88 100644 --- a/src/core/styles/variables.scss +++ b/src/core/styles/variables.scss @@ -5,7 +5,8 @@ $laptop: 1024px; $desktop: 1440px; //fonts -$font-open-sans: var(--font-roboto), sans-serif; +$font-roboto: var(--font-roboto), sans-serif; +$font-montseratt: var(--font-montseratt), sans-serif; $base-font-size: 16px; @@ -18,13 +19,12 @@ $font-bold: 700; // colors $color-white: #FFFFFF; $color-black: #000000; -$color-orange: #E96526; -$color-orange-hover: #ea4b05; $color-lightgray: #E4E1E1; $color-darkgray: #999999; $color-text: #333333; $color-text-light: #222222; -$color-mark: #E96526; +$color-link: #333333; +$color-link-hover: #009283; $color-error: #ff0000; $color-error-light: #ff9191; $color-gray-border: #555555; \ No newline at end of file diff --git a/src/entities/base-menu/index.ts b/src/entities/base-menu/index.ts new file mode 100644 index 0000000..5ecdd1f --- /dev/null +++ b/src/entities/base-menu/index.ts @@ -0,0 +1 @@ +export * from './ui'; diff --git a/src/entities/base-menu/styles.module.scss b/src/entities/base-menu/styles.module.scss new file mode 100644 index 0000000..e05306e --- /dev/null +++ b/src/entities/base-menu/styles.module.scss @@ -0,0 +1,106 @@ +.ContainerNavbar { + box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.5); +} + +.Navbar { + margin: 0 auto; + width: rem(1540px); + height: 100px; + display: flex; + flex-direction: row; + align-items: center; + gap: 20px; + + + .Nav { + margin-left: auto; + + .Menu { + display: flex; + flex-direction: row; + align-items: center; + gap: rem(24px); + } + + .Parent { + display: block; + position: relative; + float: left; + line-height: 40px; + //background-color: #ffc72c; + //border-right: #CCC 1px solid; + } + + .Parent a { + //margin: 10px 24px; + //color: #5d3200; + text-decoration: none; + } + + .Parent:hover > ul { + display: block; + position: absolute; + box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.5); + } + + .Child { + display: none; + } + + .Child li { + background-color: #FFFFFF; + line-height: 40px; + padding: 0 10px; + width: 100%; + } + + .Child li a { + color: $color-text; + } + + ul { + list-style: none; + margin: 0; + padding: 0px; + min-width: 12em; + font-family: $font-montseratt; + font-weight: $font-medium; + font-size: rem(16px); + line-height: 100%; + color: $color-text; + } + + ul ul ul { + left: 100%; + top: 0; + margin-left: 1px; + } + + li:hover { + color: $color-link-hover; + } + + .Parent li:hover { + background-color: $color-link-hover; //#F0F0F0 + color: $color-white; + + & > a { + color: $color-white; + } + + & > .Expand { + color: $color-white; + } + } + + .Expand { + font-size: 16px; + float: right; + margin-left: 8px; + color: $color-text + } + } + + .Invite { + } +} \ No newline at end of file diff --git a/src/entities/base-menu/ui.tsx b/src/entities/base-menu/ui.tsx new file mode 100644 index 0000000..8ac689d --- /dev/null +++ b/src/entities/base-menu/ui.tsx @@ -0,0 +1,135 @@ +import s from './styles.module.scss'; +import Image from 'next/image'; +import dtrLogo from '@public/images/dtr-logo-eagle.png'; + +function BaseMenu() { + return ( +
+
+ {'ДиТрасо'} + +
+ +
+
+
+ ); +} + +export { BaseMenu }; + +const Menu = [ + { + menuItem: { + name: 'Home', + link: '/home', + }, + }, + { + menuItem: { + name: 'Link1', + children: [ + { + menuItem: { + name: 'link1-1', + link: '/home', + }, + }, + { + menuItem: { + name: 'link1-2', + link: '/home', + }, + }, + { + menuItem: { + name: 'link1-3', + link: '/home', + }, + }, + ], + }, + }, + { + menuItem: { + name: 'Link2', + children: [ + { + menuItem: { + name: 'link2-1', + link: '/home', + }, + }, + { + menuItem: { + name: 'link2-2', + children: [ + { + menuItem: { + name: 'link2-1', + link: '/home', + }, + }, + { + menuItem: { + name: 'link2-2', + link: '/home', + }, + }, + { + menuItem: { + name: 'link2-3', + link: '/home', + }, + }, + ], + }, + }, + { + menuItem: { + name: 'link2-3', + link: '/home', + }, + }, + ], + }, + }, +]; diff --git a/src/entities/index.ts b/src/entities/index.ts new file mode 100644 index 0000000..181c0b2 --- /dev/null +++ b/src/entities/index.ts @@ -0,0 +1,2 @@ +export { TopMenu } from './top-menu'; +export { BaseMenu } from './base-menu'; diff --git a/src/entities/top-menu/index.ts b/src/entities/top-menu/index.ts new file mode 100644 index 0000000..5ecdd1f --- /dev/null +++ b/src/entities/top-menu/index.ts @@ -0,0 +1 @@ +export * from './ui'; diff --git a/src/entities/top-menu/styles.module.scss b/src/entities/top-menu/styles.module.scss new file mode 100644 index 0000000..4065af5 --- /dev/null +++ b/src/entities/top-menu/styles.module.scss @@ -0,0 +1,49 @@ +.Container { + background: #007c6f; + padding: rem(8px) 0; +} + +.Top { + margin: 0 auto; + width: rem(1540px); + display: flex; + justify-content: space-between; + + .Icons { + display: flex; + flex-direction: row; + align-items: center; + gap: rem(20px); + + .Icon { + cursor: pointer; + } + } + + .Contacts { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + gap: rem(60px); + + .Item { + font-family: $font-roboto; + font-weight: $font-bold; + font-size: rem(16px); + line-height: 100%; + color: $color-white; + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + gap: rem(8px); + + .IconBox { + padding: rem(4px); + border-radius: 50%; + background: $color-white; + } + } + } +} \ No newline at end of file diff --git a/src/entities/top-menu/ui.tsx b/src/entities/top-menu/ui.tsx new file mode 100644 index 0000000..b81023f --- /dev/null +++ b/src/entities/top-menu/ui.tsx @@ -0,0 +1,35 @@ +import s from './styles.module.scss'; +import { + CiPhoneIcon, + EnvelopeIcon, + MapIcon, + TgIcon, + WaIcon, +} from '@shared/ui/icon'; + +function TopMenu() { + return ( +
+
+
+ + + +
+
+

+ + spo-71@yandex.ru +

+ +

+ + г. Сочи, Навагинская д. 9д, оф. 35 +

+
+
+
+ ); +} + +export { TopMenu }; diff --git a/src/shared/ui/icon/index.ts b/src/shared/ui/icon/index.ts new file mode 100644 index 0000000..5ecdd1f --- /dev/null +++ b/src/shared/ui/icon/index.ts @@ -0,0 +1 @@ +export * from './ui'; diff --git a/src/shared/ui/icon/styles.module.scss b/src/shared/ui/icon/styles.module.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/shared/ui/icon/ui.tsx b/src/shared/ui/icon/ui.tsx new file mode 100644 index 0000000..1cd4e89 --- /dev/null +++ b/src/shared/ui/icon/ui.tsx @@ -0,0 +1,106 @@ +/** Based on https://iconify.design/ + * + */ +import type { SVGProps } from 'react'; + +type SVGIcon = SVGProps; + +//RiMapPinLine +function MapIcon(props: SVGIcon) { + return ( + + + + ); +} + +//MynauiEnvelope +function EnvelopeIcon(props: SVGIcon) { + return ( + + + + ); +} + +//IcBaselineWhatsapp +function WaIcon(props: SVGIcon) { + return ( + + + + ); +} + +//IcBaselineTelegram +function TgIcon(props: SVGIcon) { + return ( + + + + ); +} + +// CiPhone +function CiPhoneIcon(props: SVGIcon) { + return ( + + + + ); +} + +export { MapIcon, EnvelopeIcon, WaIcon, TgIcon, CiPhoneIcon }; diff --git a/src/views/home/index.ts b/src/views/home/index.ts new file mode 100644 index 0000000..e23ecc4 --- /dev/null +++ b/src/views/home/index.ts @@ -0,0 +1 @@ +export { default as Home } from './ui'; diff --git a/src/views/home/styles.module.scss b/src/views/home/styles.module.scss new file mode 100644 index 0000000..b758439 --- /dev/null +++ b/src/views/home/styles.module.scss @@ -0,0 +1,15 @@ +.Header { + display: flex; + flex-direction: column; +} + +.Container { + margin: 0 auto; + width: rem(1540px); + padding: 40px 0; +} + +.Footer { + margin: 0 auto; + width: rem(1540px); +} \ No newline at end of file diff --git a/src/views/home/ui.tsx b/src/views/home/ui.tsx new file mode 100644 index 0000000..6bd8516 --- /dev/null +++ b/src/views/home/ui.tsx @@ -0,0 +1,279 @@ +import s from './styles.module.scss'; +import { BaseMenu, TopMenu } from '@/entities'; + +export default function Main() { + return ( +
+
+ + +
+ +
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Asperiores + cupiditate delectus dicta dignissimos eius esse est eum harum minus + omnis perspiciatis quaerat, quasi quia, quod ratione tempora vel velit + voluptates. +
+
+ Accusamus aliquam cumque dignissimos quasi repudiandae suscipit + veniam! Accusamus atque commodi distinctio dolorum esse exercitationem + explicabo, facilis in mollitia neque nostrum officia praesentium quod + ratione, repudiandae, tempora totam ut vel? +
+
+ Atque corporis dignissimos dolorem enim et eum fuga fugiat fugit + inventore iure iusto minima, nesciunt odio sed soluta vel voluptates. + A accusamus dolor earum excepturi odit quaerat repudiandae sed + tempore! +
+
+ Commodi cumque ducimus incidunt, nam numquam quo tempora voluptas? + Debitis iure, vero. Aperiam atque beatae delectus dolores enim facilis + fuga, ipsam laborum minus, molestiae obcaecati odio pariatur quis + reiciendis voluptate? +
+
+ Adipisci aspernatur consequatur cum distinctio ea error ex explicabo + fuga harum hic itaque molestiae nesciunt, omnis placeat reprehenderit + rerum sed temporibus vel! Doloribus facilis id labore quia quisquam + sequi voluptate. +
+
+ Adipisci atque dolorem ducimus enim facere fugit incidunt ipsam ipsum + laudantium magni minima mollitia neque nesciunt nostrum odio officia + perferendis quam, qui quia quisquam similique sunt temporibus vel + veritatis vitae? +
+
+ Culpa fuga incidunt magni nemo porro quas quia quod sunt voluptas + voluptate. Blanditiis ducimus eos eum facere fuga hic laborum minus, + mollitia necessitatibus officiis perspiciatis recusandae, rerum saepe, + temporibus ut? +
+
+ Consequatur ducimus eius, illo ipsa laborum magnam nesciunt numquam + officia porro provident quasi reprehenderit sapiente sed temporibus + unde vel veniam voluptatem. Amet commodi illum minus optio praesentium + quis repellat, repudiandae. +
+
+ A ad aperiam architecto aut autem consequuntur cumque dolor ducimus ea + eligendi ipsa iste laudantium magni maxime minima nostrum officia + pariatur quae quasi quia quo, reiciendis repudiandae, saepe ullam + voluptatum! +
+
+ Aperiam, aut commodi corporis dignissimos, eaque enim eos harum ipsa + optio quia quos reiciendis, repellat. Architecto dolores error minus + nihil non numquam, omnis optio porro tempora! Error eveniet nisi quod? +
+
+ Ab ad adipisci alias amet consequatur delectus deserunt dignissimos + distinctio dolor eius id ipsa, laboriosam libero nam natus non numquam + quidem quis quod rem saepe, tempora tenetur unde vel velit? +
+
+ Aliquam at consectetur culpa debitis doloribus ducimus eligendi + eveniet facere fugiat ipsam itaque, laudantium maiores maxime + molestiae molestias mollitia necessitatibus nisi numquam obcaecati + quaerat quidem quis recusandae rerum, vel voluptas? +
+
+ Ab ad alias aliquam, amet corporis cumque doloribus ducimus ea error + et excepturi exercitationem, explicabo impedit iste iure laudantium + necessitatibus optio pariatur quia quidem ratione, rem similique sint + totam voluptatem? +
+
+ Eius ipsa nihil odio perspiciatis sed sequi tempora, ullam? + Consequuntur enim ex illo laborum nam, repellat tempore totam ut + voluptatibus! Ad assumenda blanditiis distinctio dolorem, ex illum + iusto magnam tempore. +
+
+ Aspernatur consequatur delectus deleniti est fugit laborum minima nisi + quos suscipit vero. Accusantium ex illum maxime numquam obcaecati + perspiciatis, quod reiciendis temporibus vitae. Eos laboriosam nostrum + odit quidem reiciendis vitae. +
+
+ Animi at libero minima necessitatibus obcaecati, officia perferendis + quo! Ab ad dolorum excepturi laborum libero, officia quibusdam + sapiente! Accusamus adipisci consectetur cumque debitis dolore id + impedit nesciunt nisi omnis voluptas. +
+
+ Accusantium animi debitis ducimus, iste molestias quos rem. + Consectetur dicta, doloremque error eveniet excepturi fugit in, + incidunt natus nulla omnis, quia quidem quisquam sint soluta + voluptatibus. Eveniet maxime quae recusandae. +
+
+ Ad aliquam architecto distinctio eius eos maxime minima optio porro + quis voluptatem. Accusantium atque debitis eligendi esse hic ipsam + ipsum, nihil officia perspiciatis quasi rerum soluta, tempora vel + voluptas voluptatibus. +
+
+ Aperiam dolor exercitationem expedita illum labore modi molestias + repudiandae saepe velit voluptas. Accusamus consequuntur, dignissimos + eius eligendi fuga harum illo illum nam, nulla, odit officia quaerat + quis reiciendis sit tempore! +
+
+ A aliquam asperiores consequatur cum dignissimos distinctio dolorem + eius eos eum excepturi expedita impedit laborum molestiae mollitia, + natus quam quidem quis quo reprehenderit similique tempore unde + veritatis voluptatem, voluptatibus voluptatum? +
+
+ Accusamus adipisci assumenda beatae consequatur, eum exercitationem + explicabo maxime obcaecati officiis porro quae qui ratione sapiente + sequi suscipit velit veritatis? Harum molestiae quis quod? Et harum + neque quam reprehenderit voluptates! +
+
+ Aspernatur deleniti distinctio, illum, inventore iure labore maiores + nemo quod sapiente sit voluptas, voluptatem! Minus nobis perspiciatis + rem velit. Delectus, dolores natus? Eos laborum laudantium molestiae, + nobis perferendis unde. Animi. +
+
+ Dolores magni nulla quasi? Accusamus aliquam animi aperiam corporis + distinctio eligendi explicabo illo ipsum laboriosam laborum maiores + molestias obcaecati optio provident, quae, quaerat quas quisquam rerum + saepe voluptatum? Asperiores, unde. +
+
+ Dignissimos distinctio dolore, ea error fugiat ipsum modi pariatur + praesentium quia velit. Aliquam aut consequuntur corporis, debitis + esse hic iste laboriosam magni mollitia natus non obcaecati placeat + quia recusandae veniam? +
+
+ Accusantium aliquam corporis debitis distinctio dolore dolorem earum + eligendi fugiat harum impedit ipsam, libero magni minus molestias nisi + odit officiis possimus quae, quaerat quia quibusdam sit sunt totam ut + vel? +
+
+ Animi assumenda dicta dignissimos itaque, nesciunt quo. Aliquam + asperiores aspernatur delectus deleniti dolorem, dolorum eaque ex + exercitationem expedita fugit id, iusto mollitia nesciunt officia quam + suscipit temporibus ullam ut voluptates. +
+
+ Ad, at consequuntur dicta dolor, eius ex excepturi, fugit ipsum nisi + nostrum numquam qui reprehenderit sint suscipit tempora unde + voluptatibus. Dicta doloremque eaque est in nemo perspiciatis quae + quisquam, similique? +
+
+ Accusantium culpa eaque eius id incidunt ipsam ipsum, laboriosam + nesciunt recusandae, repellendus temporibus vel voluptates voluptatum. + Aliquid consectetur dolores in praesentium voluptate? Accusamus + consequuntur delectus facilis fuga nulla saepe veritatis? +
+
+ A aliquid animi commodi dolor est in, iure magnam molestias nesciunt + numquam quam, repellat sunt, veniam! Consectetur facere neque nulla + quos saepe! Dicta eum impedit molestias officiis temporibus tenetur + vitae? +
+
+ Animi dignissimos fugiat nihil odit perspiciatis soluta! Commodi + consectetur cupiditate iusto, possimus veritatis voluptas voluptatem. + Adipisci, alias consequuntur cum impedit itaque, minima modi natus + nulla quaerat quam quidem sed unde! +
+
+ Accusantium ad aliquid animi aspernatur corporis cumque cupiditate + delectus dolore ea expedita id iste, iure laudantium maiores modi odio + quae quas quis quod quos recusandae rerum sunt totam veniam + voluptatibus? +
+
+ Aperiam, aspernatur cum dolorum error exercitationem fuga id + necessitatibus nisi quo rem repudiandae soluta veniam? A architecto + commodi consequuntur culpa deserunt ducimus est et fugit, iusto nihil + odio quo rem? +
+
+ Alias distinctio dolorem ducimus eaque, eligendi error eveniet harum + iste iure modi mollitia odit perspiciatis praesentium quaerat quam + quidem rem repudiandae rerum sed sequi sit soluta ut veniam veritatis + voluptate. +
+
+ Cumque debitis eaque, error fugiat hic molestias placeat unde? + Accusamus, ad, amet architecto at beatae culpa deleniti expedita + labore magni maiores maxime odio quos repudiandae soluta voluptate? + Esse, nisi, provident. +
+
+ A aperiam autem eius error expedita id incidunt ipsum molestias nulla + porro reprehenderit, velit, vero voluptatem voluptatibus voluptatum! + Doloremque ducimus eum expedita molestias numquam porro quisquam + ratione repellendus tenetur voluptatibus. +
+
+ A accusamus architecto asperiores consectetur, consequuntur culpa cum + error est, explicabo illum impedit ipsum magnam, molestias nulla + obcaecati officiis pariatur possimus quia recusandae reprehenderit + tempora tempore ullam vitae voluptatem voluptatibus! +
+
+ A accusantium alias aliquam aut blanditiis consequatur cumque delectus + distinctio doloremque eligendi error et inventore ipsa ipsum iste + laborum neque odit qui quia, quo repudiandae saepe sit, totam vitae + voluptatem! +
+
+ Alias, aliquam animi aspernatur blanditiis consectetur consequatur + corporis cupiditate, dolorum error esse impedit laudantium magni + maiores natus non nulla odit perferendis quam, similique soluta + suscipit tenetur totam vel veniam voluptatem! +
+
+ Consequatur corporis cumque, dolore earum esse et fuga itaque laborum + magni maiores modi nihil odit officia officiis omnis praesentium, quae + quo quod ratione repellendus soluta suscipit, ullam! Accusamus, est, + reprehenderit! +
+
+ At consectetur debitis dolores, dolorum et expedita laboriosam minus + nemo nihil numquam perspiciatis quas quibusdam repellendus repudiandae + sint tenetur, voluptatibus. Alias dignissimos, labore laudantium nemo + numquam reprehenderit repudiandae similique vero? +
+
+ Architecto dignissimos enim et laboriosam quibusdam quisquam + reprehenderit rerum vel veniam voluptatum. Delectus facere modi + veritatis. A ad eaque eligendi enim fugiat harum maiores mollitia nisi + optio quibusdam sint, voluptate. +
+
+ Ab commodi iste laboriosam laudantium maiores maxime non odit placeat + quaerat quas reiciendis, sequi temporibus, totam vel veritatis! + Doloremque eveniet expedita, fuga quam quis recusandae veniam? + Exercitationem repellendus veniam voluptates? +
+
+ Animi aperiam asperiores autem delectus dignissimos illo impedit + ipsam, iusto natus numquam pariatur quae qui quis quisquam ratione + sequi sit suscipit ullam unde vel! Alias autem nemo odit quod + voluptate. +
+
+ Accusamus aspernatur consectetur culpa cum cumque cupiditate doloribus + ducimus explicabo hic, id ipsa laboriosam maiores, molestiae nobis + quasi quia quod rem tempora tempore, voluptatem. Alias atque labore + maiores quia reprehenderit. +
+
+ +
+ ); +} diff --git a/src/views/index.ts b/src/views/index.ts new file mode 100644 index 0000000..e20557b --- /dev/null +++ b/src/views/index.ts @@ -0,0 +1 @@ +export * from './home';