├── .github
└── FUNDING.yml
├── .gitignore
├── .nojekyll
├── .nvmrc
├── .vscode
└── extensions.json
├── LICENSE
├── README.md
├── astro.config.mjs
├── docs
├── .nojekyll
├── _astro
│ └── index.bxDPHZnf.css
├── img
│ ├── features
│ │ ├── icon1.svg
│ │ ├── icon2.svg
│ │ ├── icon3.svg
│ │ ├── icon4.svg
│ │ ├── icon5.svg
│ │ ├── icon6.svg
│ │ ├── icon7.svg
│ │ └── icon8.svg
│ ├── github.svg
│ ├── logo.svg
│ ├── undraw_Friends_online_re_r7pq.svg
│ └── undraw_asset_selection_ix3v.svg
├── imprint
│ └── index.html
├── index.html
├── privacy
│ └── index.html
└── robots.txt
├── package-lock.json
├── package.json
├── preview.png
├── public
├── img
│ ├── features
│ │ ├── icon1.svg
│ │ ├── icon2.svg
│ │ ├── icon3.svg
│ │ ├── icon4.svg
│ │ ├── icon5.svg
│ │ ├── icon6.svg
│ │ ├── icon7.svg
│ │ └── icon8.svg
│ ├── github.svg
│ ├── logo.svg
│ ├── undraw_Friends_online_re_r7pq.svg
│ └── undraw_asset_selection_ix3v.svg
└── robots.txt
├── src
├── components
│ ├── Footer.astro
│ ├── Head.astro
│ ├── JS.astro
│ ├── Navbar.astro
│ └── sections
│ │ ├── About.astro
│ │ ├── Features.astro
│ │ ├── Header.astro
│ │ ├── Register.astro
│ │ ├── SectionResolver.astro
│ │ └── Wrapper.astro
├── content
│ ├── config.ts
│ └── sections
│ │ ├── about.md
│ │ ├── features.md
│ │ └── register.md
├── data
│ ├── features.json
│ └── site.json
├── env.d.ts
├── layouts
│ ├── Base.astro
│ └── Page.astro
├── pages
│ ├── imprint.md
│ ├── index.astro
│ └── privacy.md
└── styles
│ ├── global.css
│ └── normalize.css
├── tailwind.config.cjs
└── tsconfig.json
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: [ttntm]
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | otechie: # Replace with a single Otechie username
12 | custom: ['https://www.buymeacoffee.com/ttntm']
13 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .env
2 | .astro/
3 |
4 | # Logs
5 | logs
6 | *.log
7 | npm-debug.log*
8 | yarn-debug.log*
9 | yarn-error.log*
10 | lerna-debug.log*
11 |
12 | # Diagnostic reports (https://nodejs.org/api/report.html)
13 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
14 |
15 | # Runtime data
16 | pids
17 | *.pid
18 | *.seed
19 | *.pid.lock
20 |
21 | # Directory for instrumented libs generated by jscoverage/JSCover
22 | lib-cov
23 |
24 | # Coverage directory used by tools like istanbul
25 | coverage
26 | *.lcov
27 |
28 | # nyc test coverage
29 | .nyc_output
30 |
31 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
32 | .grunt
33 |
34 | # Bower dependency directory (https://bower.io/)
35 | bower_components
36 |
37 | # node-waf configuration
38 | .lock-wscript
39 |
40 | # Compiled binary addons (https://nodejs.org/api/addons.html)
41 | build/Release
42 |
43 | # Dependency directories
44 | node_modules/
45 | jspm_packages/
46 |
47 | # TypeScript v1 declaration files
48 | typings/
49 |
50 | # TypeScript cache
51 | *.tsbuildinfo
52 |
53 | # Optional npm cache directory
54 | .npm
55 |
56 | # Optional eslint cache
57 | .eslintcache
58 |
59 | # Microbundle cache
60 | .rpt2_cache/
61 | .rts2_cache_cjs/
62 | .rts2_cache_es/
63 | .rts2_cache_umd/
64 |
65 | # Optional REPL history
66 | .node_repl_history
67 |
68 | # Output of 'npm pack'
69 | *.tgz
70 |
71 | # Yarn Integrity file
72 | .yarn-integrity
73 |
74 | # dotenv environment variables file
75 | .env
76 | .env.test
77 |
78 | # parcel-bundler cache (https://parceljs.org/)
79 | .cache
80 |
81 | # Next.js build output
82 | .next
83 |
84 | # Nuxt.js build / generate output
85 | .nuxt
86 | dist
87 |
88 | # Gatsby files
89 | .cache/
90 | # Comment in the public line in if your project uses Gatsby and *not* Next.js
91 | # https://nextjs.org/blog/next-9-1#public-directory-support
92 | # public
93 |
94 | # vuepress build output
95 | .vuepress/dist
96 |
97 | # Serverless directories
98 | .serverless/
99 |
100 | # FuseBox cache
101 | .fusebox/
102 |
103 | # DynamoDB Local files
104 | .dynamodb/
105 |
106 | # TernJS port file
107 | .tern-port
108 |
--------------------------------------------------------------------------------
/.nojekyll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ttntm/astro-landing-page/cc5b255a79e828ff68532a65da43717489b39eea/.nojekyll
--------------------------------------------------------------------------------
/.nvmrc:
--------------------------------------------------------------------------------
1 | 18.14.1
2 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": [
3 | "astro-build.astro-vscode",
4 | "bradlc.vscode-tailwindcss"
5 | ]
6 | }
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Tom Doe
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # astro-landing-page
2 |
3 | A simple landing page built with Astro and Tailwind CSS.
4 |
5 | [](https://awesomestro.ttntm.me)
6 |
7 | > Port of the [11ty](https://github.com/ttntm/11ty-landing-page) & [Hugo](https://github.com/ttntm/hugo-landing-page) versions
8 |
9 | ## How to use this template
10 |
11 | **Requirements:**
12 |
13 | 1. Astro (developed and tested with version 2.10.12)
14 | 2. Tailwind CSS (Astro integration)
15 |
16 | All other dependencies are either linked from a CDN or included in this repository.
17 |
18 | **Setup:**
19 |
20 | 1. Fork, clone or download
21 | 2. `cd` into the root folder
22 | 3. run `npm install`
23 | 4. run `npm run dev`
24 | 5. open a browser and go to `http://localhost:4321`
25 |
26 | **Setup Alternative:**
27 |
28 | `npm create astro@latest -- --template ttntm/astro-landing-page`
29 |
30 | See: [Starter Templates](https://docs.astro.build/en/install/auto/#starter-templates) in the official docs.
31 |
32 | **Basic configuration:**
33 |
34 | 1. Astro -> `./astro.config.mjs`
35 | 2. Tailwind -> `./tailwind.config.cjs`
36 | 3. Netlify -> `./netlify.toml`
37 |
38 | CSS (in `./src/styles/`) is processed by Astro directly; this project is using the [Tailwind integration module](https://docs.astro.build/en/guides/integrations-guide/tailwind/).
39 |
40 | **Deployment:**
41 |
42 | Astro requires the final deployed URL in its config file.
43 |
44 | Replace the placeholder with your site's URL and keep the trailing slash:
45 |
46 | ```js
47 | case 'production':
48 | build.siteURL = 'https://example.com/'
49 | break
50 | ```
51 |
52 | **Change Content:**
53 |
54 | Page content is stored in
55 |
56 | - `./src/pages/`
57 | - `imprint.md`
58 | - `privacy.md`
59 | - `./src/content/sections/`
60 | - `./src/data/features.json`
61 |
62 | **Change Templates/Layout:**
63 |
64 | Page structure and templates are stored in `./src/layouts/` and can be edited there.
65 |
66 | Best have a look at `./layouts/Base.astro` first to understand how it all comes together - the page itself is constructed from partial templates stored in `./src/components/` and each section has a corresponding template file in the `sections` subfolder.
67 |
68 | Sections are a so called [collection](https://docs.astro.build/en/guides/content-collections/) that's defined in `./src/content/config.ts`. They are processed in alphabetical order (as stored in `./src/content/sections/`) by the `Wrapper.astro` component (`./src/components/sections/`). The wrapper passes them into the `SectionResolver.astro` component (`./src/components/sections/`); this intermediary resolver should help reduce redundancy in keeping the actual section components as "dumb" as possible.
69 |
70 | **Change images:**
71 |
72 | Images are stored in `./public/img/`; everything in there can be considered a placeholder that should eventually be replaced with your actual production images.
73 |
--------------------------------------------------------------------------------
/astro.config.mjs:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'astro/config'
2 | import tailwind from '@astrojs/tailwind'
3 |
4 | const build = {
5 | baseURL: '/',
6 | outDir: './dist',
7 | siteURL: 'http://localhost:4321/'
8 | }
9 |
10 | const env = process.env.NODE_ENV
11 |
12 | switch (env) {
13 | case 'pages':
14 | build.baseURL = '/astro-landing-page/'
15 | build.outDir = './docs'
16 | build.siteURL = 'https://ttntm.github.io/astro-landing-page/'
17 | break
18 |
19 | case 'production':
20 | build.siteURL = 'https://example.com/'
21 | break
22 |
23 | default:
24 | break
25 | }
26 |
27 | // https://astro.build/config
28 | export default defineConfig({
29 | site: build.siteURL,
30 | base: build.baseURL,
31 | outDir: build.outDir,
32 | integrations: [
33 | tailwind({
34 | applyBaseStyles: false
35 | })
36 | ]
37 | })
38 |
--------------------------------------------------------------------------------
/docs/.nojekyll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ttntm/astro-landing-page/cc5b255a79e828ff68532a65da43717489b39eea/docs/.nojekyll
--------------------------------------------------------------------------------
/docs/_astro/index.bxDPHZnf.css:
--------------------------------------------------------------------------------
1 | *,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.fixed{position:fixed}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.m-6{margin:1.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-12{margin-top:3rem;margin-bottom:3rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-20{margin-top:5rem;margin-bottom:5rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mt-4{margin-top:1rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.hidden{display:none}.h-12{height:3rem}.h-full{height:100%}.h-px{height:1px}.min-h-screen{min-height:100vh}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-16{width:4rem}.w-2\/3{width:66.666667%}.w-auto{width:auto}.w-full{width:100%}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.flex-shrink-0{flex-shrink:0}.cursor-pointer{cursor:pointer}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.self-center{align-self:center}.rounded-full{border-radius:9999px}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-indigo-800{--tw-border-opacity: 1;border-color:rgb(55 48 163 / var(--tw-border-opacity))}.border-purple-600{--tw-border-opacity: 1;border-color:rgb(147 51 234 / var(--tw-border-opacity))}.border-transparent{border-color:transparent}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-blue-900{--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.bg-purple-600{--tw-bg-opacity: 1;background-color:rgb(147 51 234 / var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.p-1{padding:.25rem}.p-4{padding:1rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pb-12{padding-bottom:3rem}.pb-4{padding-bottom:1rem}.pl-0{padding-left:0}.pr-0{padding-right:0}.pt-16{padding-top:4rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.font-sans{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-bold{font-weight:700}.font-light{font-weight:300}.uppercase{text-transform:uppercase}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-blue-200{--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.text-purple-300{--tw-text-opacity: 1;color:rgb(216 180 254 / var(--tw-text-opacity))}.text-purple-600{--tw-text-opacity: 1;color:rgb(147 51 234 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.no-underline{text-decoration-line:none}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}*,*:before,*:after{scroll-behavior:smooth}html{-webkit-tap-highlight-color:rgba(0,0,0,0)}@media (min-width: 576px){body::-webkit-scrollbar-track{box-shadow:inset 0 0 6px #0000004d;-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);background-color:#f5f7fa}body::-webkit-scrollbar{width:6px;background-color:#f5f7fa}body::-webkit-scrollbar-thumb{background-color:#7c3aed}}.hamburger{cursor:pointer;width:48px;height:48px;transition:all .25s}.hamburger__top-bun,.hamburger__bottom-bun{content:"";position:absolute;width:24px;height:2px;background:#000;transform:rotate(0);transition:all .5s}.hamburger:hover [class*=-bun]{background:#333}.hamburger__top-bun{transform:translateY(-5px)}.hamburger__bottom-bun{transform:translateY(3px)}.open{transform:rotate(90deg);transform:translateY(-1px)}.open .hamburger__top-bun{transform:rotate(45deg) translateY(0)}.open .hamburger__bottom-bun{transform:rotate(-45deg) translateY(0)}*:hover{transition:all .4s ease}.header{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 304 304' width='304' height='304'%3E%3Cpath fill='%23f5f7fa' fill-opacity='0.4' d='M44.1 224a5 5 0 1 1 0 2H0v-2h44.1zm160 48a5 5 0 1 1 0 2H82v-2h122.1zm57.8-46a5 5 0 1 1 0-2H304v2h-42.1zm0 16a5 5 0 1 1 0-2H304v2h-42.1zm6.2-114a5 5 0 1 1 0 2h-86.2a5 5 0 1 1 0-2h86.2zm-256-48a5 5 0 1 1 0 2H0v-2h12.1zm185.8 34a5 5 0 1 1 0-2h86.2a5 5 0 1 1 0 2h-86.2zM258 12.1a5 5 0 1 1-2 0V0h2v12.1zm-64 208a5 5 0 1 1-2 0v-54.2a5 5 0 1 1 2 0v54.2zm48-198.2V80h62v2h-64V21.9a5 5 0 1 1 2 0zm16 16V64h46v2h-48V37.9a5 5 0 1 1 2 0zm-128 96V208h16v12.1a5 5 0 1 1-2 0V210h-16v-76.1a5 5 0 1 1 2 0zm-5.9-21.9a5 5 0 1 1 0 2H114v48H85.9a5 5 0 1 1 0-2H112v-48h12.1zm-6.2 130a5 5 0 1 1 0-2H176v-74.1a5 5 0 1 1 2 0V242h-60.1zm-16-64a5 5 0 1 1 0-2H114v48h10.1a5 5 0 1 1 0 2H112v-48h-10.1zM66 284.1a5 5 0 1 1-2 0V274H50v30h-2v-32h18v12.1zM236.1 176a5 5 0 1 1 0 2H226v94h48v32h-2v-30h-48v-98h12.1zm25.8-30a5 5 0 1 1 0-2H274v44.1a5 5 0 1 1-2 0V146h-10.1zm-64 96a5 5 0 1 1 0-2H208v-80h16v-14h-42.1a5 5 0 1 1 0-2H226v18h-16v80h-12.1zm86.2-210a5 5 0 1 1 0 2H272V0h2v32h10.1zM98 101.9V146H53.9a5 5 0 1 1 0-2H96v-42.1a5 5 0 1 1 2 0zM53.9 34a5 5 0 1 1 0-2H80V0h2v34H53.9zm60.1 3.9V66H82v64H69.9a5 5 0 1 1 0-2H80V64h32V37.9a5 5 0 1 1 2 0zM101.9 82a5 5 0 1 1 0-2H128V37.9a5 5 0 1 1 2 0V82h-28.1zm16-64a5 5 0 1 1 0-2H146v44.1a5 5 0 1 1-2 0V18h-26.1zm102.2 270a5 5 0 1 1 0 2H98v14h-2v-16h124.1zM242 149.9V160h16v34h-16v62h48v48h-2v-46h-48v-66h16v-30h-16v-12.1a5 5 0 1 1 2 0zM53.9 18a5 5 0 1 1 0-2H64V2H48V0h18v18H53.9zm112 32a5 5 0 1 1 0-2H192V0h50v2h-48v48h-28.1zm-48-48a5 5 0 0 1-9.8-2h2.07a3 3 0 1 0 5.66 0H178v34h-18V21.9a5 5 0 1 1 2 0V32h14V2h-58.1zm0 96a5 5 0 1 1 0-2H137l32-32h39V21.9a5 5 0 1 1 2 0V66h-40.17l-32 32H117.9zm28.1 90.1a5 5 0 1 1-2 0v-76.51L175.59 80H224V21.9a5 5 0 1 1 2 0V82h-49.59L146 112.41v75.69zm16 32a5 5 0 1 1-2 0v-99.51L184.59 96H300.1a5 5 0 0 1 3.9-3.9v2.07a3 3 0 0 0 0 5.66v2.07a5 5 0 0 1-3.9-3.9H185.41L162 121.41v98.69zm-144-64a5 5 0 1 1-2 0v-3.51l48-48V48h32V0h2v50H66v55.41l-48 48v2.69zM50 53.9v43.51l-48 48V208h26.1a5 5 0 1 1 0 2H0v-65.41l48-48V53.9a5 5 0 1 1 2 0zm-16 16V89.41l-34 34v-2.82l32-32V69.9a5 5 0 1 1 2 0zM12.1 32a5 5 0 1 1 0 2H9.41L0 43.41V40.6L8.59 32h3.51zm265.8 18a5 5 0 1 1 0-2h18.69l7.41-7.41v2.82L297.41 50H277.9zm-16 160a5 5 0 1 1 0-2H288v-71.41l16-16v2.82l-14 14V210h-28.1zm-208 32a5 5 0 1 1 0-2H64v-22.59L40.59 194H21.9a5 5 0 1 1 0-2H41.41L66 216.59V242H53.9zm150.2 14a5 5 0 1 1 0 2H96v-56.6L56.6 162H37.9a5 5 0 1 1 0-2h19.5L98 200.6V256h106.1zm-150.2 2a5 5 0 1 1 0-2H80v-46.59L48.59 178H21.9a5 5 0 1 1 0-2H49.41L82 208.59V258H53.9zM34 39.8v1.61L9.41 66H0v-2h8.59L32 40.59V0h2v39.8zM2 300.1a5 5 0 0 1 3.9 3.9H3.83A3 3 0 0 0 0 302.17V256h18v48h-2v-46H2v42.1zM34 241v63h-2v-62H0v-2h34v1zM17 18H0v-2h16V0h2v18h-1zm273-2h14v2h-16V0h2v16zm-32 273v15h-2v-14h-14v14h-2v-16h18v1zM0 92.1A5.02 5.02 0 0 1 6 97a5 5 0 0 1-6 4.9v-2.07a3 3 0 1 0 0-5.66V92.1zM80 272h2v32h-2v-32zm37.9 32h-2.07a3 3 0 0 0-5.66 0h-2.07a5 5 0 0 1 9.8 0zM5.9 0A5.02 5.02 0 0 1 0 5.9V3.83A3 3 0 0 0 3.83 0H5.9zm294.2 0h2.07A3 3 0 0 0 304 3.83V5.9a5 5 0 0 1-3.9-5.9zm3.9 300.1v2.07a3 3 0 0 0-1.83 1.83h-2.07a5 5 0 0 1 3.9-3.9zM97 100a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-48 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 96a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-144a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-96 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm96 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-32 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM49 36a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-32 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM33 68a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 240a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm80-176a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm112 176a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM17 180a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM17 84a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6z'%3E%3C/path%3E%3C/svg%3E"),linear-gradient(135deg,rgba(245,247,250,1) 0%,#fff 20%,#fff 80%,rgba(245,247,250,1) 100%)}.content__container{overflow:hidden;height:40px}.content__container__list{list-style:none;animation-name:change;animation-duration:20s;animation-iteration-count:infinite}.content__container__list__item{margin:0;line-height:40px}@keyframes change{0%,7.14%,to{transform:translateZ(0)}14.28%{transform:translate3d(0,-14.28%,0)}21.42%{transform:translate3d(0,-28.57%,0)}28.57%{transform:translate3d(0,-42.85%,0)}35.71%{transform:translate3d(0,-57.14%,0)}42.85%{transform:translate3d(0,-71.42%,0)}53.5%{transform:translate3d(0,-85.71%,0)}64.28%{transform:translate3d(0,-71.42%,0)}71.42%{transform:translate3d(0,-57.14%,0)}78.54%{transform:translate3d(0,-42.85%,0)}85.71%{transform:translate3d(0,-28.57%,0)}92.85%{transform:translate3d(0,-14.28%,0)}}.tippy-tooltip{background-color:#ccc;color:#c3dafe;opacity:.85}.tippy-tooltip[data-animatefill]{background-color:transparent}.tippy-tooltip .tippy-backdrop{background-color:#ccc;opacity:.5}.tippy-tooltip[x-placement^=bottom] .tippy-arrow{border-bottom-color:#ccc}.hover\:border-purple-600:hover{--tw-border-opacity: 1;border-color:rgb(147 51 234 / var(--tw-border-opacity))}.hover\:bg-blue-800:hover{--tw-bg-opacity: 1;background-color:rgb(30 64 175 / var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.hover\:bg-gray-800:hover{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.hover\:bg-white:hover{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.hover\:bg-opacity-50:hover{--tw-bg-opacity: .5}.hover\:text-black:hover{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.hover\:text-gray-800:hover{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.hover\:text-purple-600:hover{--tw-text-opacity: 1;color:rgb(147 51 234 / var(--tw-text-opacity))}.hover\:no-underline:hover{text-decoration-line:none}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:border-gray-400:focus{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity))}.focus\:bg-gray-300:focus{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity))}.focus\:text-gray-800:focus{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}@media (min-width: 640px){.sm\:mx-0{margin-left:0;margin-right:0}.sm\:mx-auto{margin-left:auto;margin-right:auto}.sm\:my-0{margin-top:0;margin-bottom:0}.sm\:ml-4{margin-left:1rem}.sm\:inline-block{display:inline-block}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:h-auto{height:auto}.sm\:w-1\/2{width:50%}.sm\:w-1\/3{width:33.333333%}.sm\:w-2\/3{width:66.666667%}.sm\:w-auto{width:auto}.sm\:w-px{width:1px}.sm\:flex-none{flex:none}.sm\:flex-row{flex-direction:row}.sm\:justify-center{justify-content:center}.sm\:self-center{align-self:center}.sm\:bg-transparent{background-color:transparent}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:px-8{padding-left:2rem;padding-right:2rem}.sm\:py-0{padding-top:0;padding-bottom:0}.sm\:py-1{padding-top:.25rem;padding-bottom:.25rem}.sm\:py-12{padding-top:3rem;padding-bottom:3rem}.sm\:pb-0{padding-bottom:0}.sm\:pl-8{padding-left:2rem}.sm\:pr-4{padding-right:1rem}.sm\:pr-8{padding-right:2rem}.sm\:text-left{text-align:left}.sm\:shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}}@media (min-width: 768px){.md\:w-5\/6{width:83.333333%}}@media (min-width: 1280px){.xl\:w-1\/2{width:50%}.xl\:w-1\/3{width:33.333333%}.xl\:w-1\/4{width:25%}.xl\:w-2\/3{width:66.666667%}.xl\:w-3\/4{width:75%}.xl\:w-4\/5{width:80%}.xl\:pl-3{padding-left:.75rem}}
2 |
--------------------------------------------------------------------------------
/docs/img/features/icon1.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/docs/img/features/icon2.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/docs/img/features/icon3.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/docs/img/features/icon4.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/docs/img/features/icon5.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/docs/img/features/icon6.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/docs/img/features/icon7.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/docs/img/features/icon8.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/docs/img/github.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/docs/img/logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
17 |
19 |
20 |
22 | image/svg+xml
23 |
25 |
26 |
27 |
28 |
30 |
50 |
54 |
58 |
62 |
66 |
70 |
74 |
78 |
82 |
88 |
92 |
93 |
--------------------------------------------------------------------------------
/docs/img/undraw_Friends_online_re_r7pq.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/docs/img/undraw_asset_selection_ix3v.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/docs/imprint/index.html:
--------------------------------------------------------------------------------
1 |
Imprint | AWE.SOME
2 | Imprint Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut id rhoncus est. Nullam sit amet justo nisi. Aliquam elementum iaculis nulla bibendum congue. Integer convallis ut nisi at tincidunt. Sed eu diam ex. Ut efficitur velit ut ultrices semper. Morbi suscipit ut purus a placerat. Cras massa lorem, pretium et nibh in, faucibus fermentum dolor. Nulla lacinia malesuada molestie. Proin et risus turpis. Aenean lacinia, orci at egestas fringilla, sem libero facilisis lectus, ut porta justo ligula a quam. Mauris vulputate purus mauris, eget semper ante rutrum id. Duis vestibulum, turpis at ultricies aliquam, enim dolor lobortis leo, at laoreet elit odio at nunc. Aliquam sit amet erat mi.
4 |
Cras mattis justo id convallis porta. Pellentesque ullamcorper fringilla odio at pretium. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nulla mattis erat dui, ut tempor lectus dictum id. Mauris ornare massa a nisi gravida, id ultrices ex cursus. Donec quis porttitor nisl, non viverra dui. Donec nec gravida arcu. Pellentesque dignissim at libero id bibendum. Vivamus pulvinar nibh risus, et egestas odio interdum id. Cras eleifend risus molestie mollis finibus. Aenean tortor elit, accumsan vel fermentum pharetra, molestie ut felis.
5 |
Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt. Aliquam semper felis sed leo sodales scelerisque. Vivamus vitae erat vel tellus condimentum consectetur at ac velit. Mauris massa tortor, cursus sit amet turpis in, lacinia ultricies nulla.
6 |
Integer finibus sem sit amet diam luctus, ut posuere enim dapibus. Nunc euismod dignissim dui a maximus. Phasellus pulvinar neque at lorem ultricies suscipit. Maecenas felis erat, ornare eget egestas et, ultricies vitae ante. In convallis quam lectus, sit amet elementum ligula pulvinar ac. Integer sapien ipsum, congue a purus vel, sollicitudin lacinia ligula. Ut varius sit amet lectus quis congue. Ut viverra lectus tellus, a pharetra neque egestas eu. Morbi feugiat, arcu id bibendum vulputate, risus mi finibus enim, sed pulvinar ipsum sem eu risus. Aenean accumsan elementum ipsum, eu porttitor libero auctor at. Duis nec ipsum velit. Aliquam ac ullamcorper nisl. Duis mattis malesuada leo, quis egestas turpis molestie nec. Curabitur dui tortor, volutpat quis varius et, posuere eget augue. Praesent sed pretium dui. Vivamus auctor ex vitae nisl commodo interdum.
7 |
Nam non quam vel velit sagittis consequat non vel odio. Phasellus condimentum dictum orci, quis rhoncus lacus hendrerit non. Ut vel nisl lectus. Duis vitae varius enim. Morbi placerat urna sit amet sollicitudin viverra. Vivamus maximus metus ac ornare venenatis. Ut suscipit nec sapien ac fringilla. Phasellus et justo eget odio lacinia feugiat. Nullam laoreet eros a lectus pretium, sed euismod velit tincidunt.
8 |
Images: Undraw via undraw.co/illustrations
9 |
Feature icons: “Webicons” created by Vlad Cristea, obtained via www.graphicdelivery.com/webicons
10 | © AWE.SOME
Mastodon LinkedIn
--------------------------------------------------------------------------------
/docs/index.html:
--------------------------------------------------------------------------------
1 | 🚀 AWE.SOME - An Astro Landing Page Template AWE.SOME Heading Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt. Vivamus vitae erat vel tellus condimentum consectetur.
Most AWE.SOME Features Pellentesque ullamcorper fringilla odio at pretium. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nulla mattis erat dui, ut tempor lectus dictum id.
AWE.SOME Feature One Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt.
AWE.SOME Feature Two Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt.
AWE.SOME Feature Three Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt.
AWE.SOME Feature Four Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt.
AWE.SOME Feature Five Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt.
AWE.SOME Feature Six Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt.
...and so much more! Registration Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi.
10 | © AWE.SOME
Mastodon LinkedIn
--------------------------------------------------------------------------------
/docs/privacy/index.html:
--------------------------------------------------------------------------------
1 | Privacy Policy | AWE.SOME
2 | Privacy Policy Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut id rhoncus est. Nullam sit amet justo nisi. Aliquam elementum iaculis nulla bibendum congue. Integer convallis ut nisi at tincidunt. Sed eu diam ex. Ut efficitur velit ut ultrices semper. Morbi suscipit ut purus a placerat. Cras massa lorem, pretium et nibh in, faucibus fermentum dolor. Nulla lacinia malesuada molestie. Proin et risus turpis. Aenean lacinia, orci at egestas fringilla, sem libero facilisis lectus, ut porta justo ligula a quam. Mauris vulputate purus mauris, eget semper ante rutrum id. Duis vestibulum, turpis at ultricies aliquam, enim dolor lobortis leo, at laoreet elit odio at nunc. Aliquam sit amet erat mi.
4 |
Cras mattis justo id convallis porta. Pellentesque ullamcorper fringilla odio at pretium. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nulla mattis erat dui, ut tempor lectus dictum id. Mauris ornare massa a nisi gravida, id ultrices ex cursus. Donec quis porttitor nisl, non viverra dui. Donec nec gravida arcu. Pellentesque dignissim at libero id bibendum. Vivamus pulvinar nibh risus, et egestas odio interdum id. Cras eleifend risus molestie mollis finibus. Aenean tortor elit, accumsan vel fermentum pharetra, molestie ut felis.
5 |
Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt. Aliquam semper felis sed leo sodales scelerisque. Vivamus vitae erat vel tellus condimentum consectetur at ac velit. Mauris massa tortor, cursus sit amet turpis in, lacinia ultricies nulla.
6 |
Integer finibus sem sit amet diam luctus, ut posuere enim dapibus. Nunc euismod dignissim dui a maximus. Phasellus pulvinar neque at lorem ultricies suscipit. Maecenas felis erat, ornare eget egestas et, ultricies vitae ante. In convallis quam lectus, sit amet elementum ligula pulvinar ac. Integer sapien ipsum, congue a purus vel, sollicitudin lacinia ligula. Ut varius sit amet lectus quis congue. Ut viverra lectus tellus, a pharetra neque egestas eu. Morbi feugiat, arcu id bibendum vulputate, risus mi finibus enim, sed pulvinar ipsum sem eu risus. Aenean accumsan elementum ipsum, eu porttitor libero auctor at. Duis nec ipsum velit. Aliquam ac ullamcorper nisl. Duis mattis malesuada leo, quis egestas turpis molestie nec. Curabitur dui tortor, volutpat quis varius et, posuere eget augue. Praesent sed pretium dui. Vivamus auctor ex vitae nisl commodo interdum.
7 |
Nam non quam vel velit sagittis consequat non vel odio. Phasellus condimentum dictum orci, quis rhoncus lacus hendrerit non. Ut vel nisl lectus. Duis vitae varius enim. Morbi placerat urna sit amet sollicitudin viverra. Vivamus maximus metus ac ornare venenatis. Ut suscipit nec sapien ac fringilla. Phasellus et justo eget odio lacinia feugiat. Nullam laoreet eros a lectus pretium, sed euismod velit tincidunt.
8 |
Website enhancements
9 |
This website uses the follwing packages from unpkg.com :
10 |
11 | ‐ popper.js
12 | ‐ tippy.js
13 |
14 |
Using these packages, personal data may be transmitted.
15 |
Your rights
16 |
Integer finibus sem sit amet diam luctus, ut posuere enim dapibus. Nunc euismod dignissim dui a maximus. Phasellus pulvinar neque at lorem ultricies suscipit. Maecenas felis erat, ornare eget egestas et, ultricies vitae ante. In convallis quam lectus, sit amet elementum ligula pulvinar ac. Integer sapien ipsum, congue a purus vel, sollicitudin lacinia ligula. Ut varius sit amet lectus quis congue. Ut viverra lectus tellus, a pharetra neque egestas eu. Morbi feugiat, arcu id bibendum vulputate, risus mi finibus enim, sed pulvinar ipsum sem eu risus. Aenean accumsan elementum ipsum, eu porttitor libero auctor at. Duis nec ipsum velit. Aliquam ac ullamcorper nisl. Duis mattis malesuada leo, quis egestas turpis molestie nec. Curabitur dui tortor, volutpat quis varius et, posuere eget augue. Praesent sed pretium dui. Vivamus auctor ex vitae nisl commodo interdum.
17 | © AWE.SOME
Mastodon LinkedIn
--------------------------------------------------------------------------------
/docs/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Allow: /
3 |
4 | User-agent: CCBot
5 | Disallow: /
6 |
7 | User-agent: ChatGPT-User
8 | Disallow: /
9 |
10 | User-agent: GPTBot
11 | Disallow: /
12 |
13 | User-agent: Google-Extended
14 | Disallow: /
15 |
16 | User-agent: Omgilibot
17 | Disallow: /
18 |
19 | User-Agent: FacebookBot
20 | Disallow: /
21 |
22 | User-agent: Amazonbot
23 | Disallow: /
24 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "alp",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "dev": "NODE_ENV=dev astro dev",
8 | "start": "NODE_ENV=dev astro dev",
9 | "build": "NODE_ENV=production astro build",
10 | "build-ghp": "NODE_ENV=pages astro build && cp .nojekyll ./docs",
11 | "preview": "astro preview"
12 | },
13 | "keywords": [],
14 | "author": "ttntm",
15 | "license": "MIT",
16 | "dependencies": {
17 | "@astrojs/tailwind": "^5.0.3",
18 | "@tailwindcss/typography": "^0.5.9",
19 | "astro": "^4.0.2",
20 | "tailwindcss": "^3.3.3"
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ttntm/astro-landing-page/cc5b255a79e828ff68532a65da43717489b39eea/preview.png
--------------------------------------------------------------------------------
/public/img/features/icon1.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/img/features/icon2.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/img/features/icon3.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/img/features/icon4.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/img/features/icon5.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/img/features/icon6.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/img/features/icon7.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/img/features/icon8.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/img/github.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/public/img/logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
17 |
19 |
20 |
22 | image/svg+xml
23 |
25 |
26 |
27 |
28 |
30 |
50 |
54 |
58 |
62 |
66 |
70 |
74 |
78 |
82 |
88 |
92 |
93 |
--------------------------------------------------------------------------------
/public/img/undraw_Friends_online_re_r7pq.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/img/undraw_asset_selection_ix3v.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Allow: /
3 |
4 | User-agent: CCBot
5 | Disallow: /
6 |
7 | User-agent: ChatGPT-User
8 | Disallow: /
9 |
10 | User-agent: GPTBot
11 | Disallow: /
12 |
13 | User-agent: Google-Extended
14 | Disallow: /
15 |
16 | User-agent: Omgilibot
17 | Disallow: /
18 |
19 | User-Agent: FacebookBot
20 | Disallow: /
21 |
22 | User-agent: Amazonbot
23 | Disallow: /
24 |
--------------------------------------------------------------------------------
/src/components/Footer.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import siteData from '../data/site.json'
3 |
4 | const pn = Astro.url.pathname
5 | const isHome = pn === '/'
6 | const site = Astro.site
7 | const abtLink = isHome
8 | ? '#about'
9 | : `${site}#about`
10 | const ftLink = isHome
11 | ? '#features'
12 | : `${site}#features`
13 | ---
14 |
15 |
16 |
17 | {siteData.social.map((scm) => (
18 |
19 | {scm.title}
20 |
21 | ))}
22 |
23 |
24 |
25 |
35 |
36 |
46 |
47 |
48 |
49 | © {siteData.author}
50 |
51 |
52 |
55 |
60 |
61 |
62 | {siteData.social.map((scm) => (
63 | {scm.title}
64 | ))}
65 |
66 |
--------------------------------------------------------------------------------
/src/components/Head.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import siteData from '../data/site.json'
3 |
4 | interface Props {
5 | image?: string,
6 | title?: string
7 | }
8 |
9 | const { image, title } = Astro.props
10 | const canonicalURL = new URL(Astro.url.pathname, Astro.site)
11 | const imageURL = image
12 | ? new URL(image, Astro.site)
13 | : undefined
14 | ---
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 | {imageURL && }
32 |
33 |
34 |
35 | {title ? title : siteData.title}
36 |
--------------------------------------------------------------------------------
/src/components/JS.astro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
41 |
--------------------------------------------------------------------------------
/src/components/Navbar.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import siteData from '../data/site.json'
3 |
4 | const pn = Astro.url.pathname
5 | const isHome = pn === '/'
6 | const site = Astro.site
7 | const abtLink = isHome
8 | ? '#about'
9 | : `${site}#about`
10 | const ftLink = isHome
11 | ? '#features'
12 | : `${site}#features`
13 | const regLink = isHome
14 | ? '#register'
15 | : `${site}#register`
16 | ---
17 |
18 |
27 |
36 |
37 |
--------------------------------------------------------------------------------
/src/components/sections/About.astro:
--------------------------------------------------------------------------------
1 | ---
2 | interface Props {
3 | title: string
4 | }
5 |
6 | const site = Astro.site
7 | const { title } = Astro.props
8 | ---
9 |
10 |
11 |
{title}
12 |
13 |
14 |
15 |
16 |
17 |
20 |
21 |
--------------------------------------------------------------------------------
/src/components/sections/Features.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import features from '../../data/features.json'
3 |
4 | interface Props {
5 | afterTitle?: string,
6 | title: string
7 | }
8 |
9 | const site = Astro.site
10 | const { afterTitle, title } = Astro.props
11 | ---
12 |
13 |
14 |
{title}
15 |
16 |
17 |
18 |
19 |
20 | {features.map((feat) => (
21 |
22 |
23 |
24 |
25 |
26 |
{feat.title}
27 |
28 | {feat.content}
29 |
30 |
31 |
32 | ))}
33 |
34 |
35 | {afterTitle &&
{afterTitle} }
36 |
37 |
40 |
41 |
--------------------------------------------------------------------------------
/src/components/sections/Header.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Navbar from '../Navbar.astro'
3 |
4 | const headerListItems = [
5 | 'Cool Feature',
6 | 'Another Feature',
7 | 'Something Else',
8 | 'Why Not',
9 | 'Rotating',
10 | 'List',
11 | 'Items Here'
12 | ]
13 | const site = Astro.site
14 | ---
15 |
44 |
--------------------------------------------------------------------------------
/src/components/sections/Register.astro:
--------------------------------------------------------------------------------
1 | ---
2 | interface Props {
3 | title: string
4 | }
5 |
6 | const { title } = Astro.props
7 | ---
8 |
9 |
10 |
{title}
11 |
12 |
13 |
14 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/src/components/sections/SectionResolver.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import type { CollectionEntry } from 'astro:content'
3 | import About from './About.astro'
4 | import Features from './Features.astro'
5 | import Register from './Register.astro'
6 |
7 | interface Props {
8 | afterTitle: string,
9 | sect: CollectionEntry<'sections'>,
10 | title: string,
11 | type: string
12 | }
13 |
14 | const { afterTitle, sect, title, type } = Astro.props
15 | const { Content } = await sect.render()
16 | ---
17 |
18 | {type === 'about' &&
19 |
20 | }
21 |
22 | {type === 'features' &&
23 |
24 | }
25 |
26 | {type === 'register' &&
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/src/components/sections/Wrapper.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import { getCollection } from 'astro:content'
3 | import Header from './Header.astro'
4 | import SectionResolver from './SectionResolver.astro'
5 |
6 | const sections = await getCollection('sections')
7 | ---
8 |
9 |
10 | {sections.map(sect => {
11 | return
17 | })}
18 |
19 |
--------------------------------------------------------------------------------
/src/content/config.ts:
--------------------------------------------------------------------------------
1 | // 1. Import utilities from `astro:content`
2 | import { z, defineCollection } from 'astro:content'
3 |
4 | // 2. Define a `type` and `schema` for each collection
5 | const sectionsCollection = defineCollection({
6 | type: 'content', // v2.5.0 and later
7 | schema: z.object({
8 | title: z.string(),
9 | afterTitle: z.string().optional(),
10 | type: z.string()
11 | })
12 | })
13 |
14 | // 3. Export a single `collections` object to register your collection(s)
15 | export const collections = {
16 | 'sections': sectionsCollection
17 | }
18 |
--------------------------------------------------------------------------------
/src/content/sections/about.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: AWE.SOME Heading
3 | type: about
4 | ---
5 |
6 | Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt. Vivamus vitae erat vel tellus condimentum consectetur.
--------------------------------------------------------------------------------
/src/content/sections/features.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Most AWE.SOME Features
3 | afterTitle: ...and so much more!
4 | type: features
5 | ---
6 |
7 | Pellentesque ullamcorper fringilla odio at pretium. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nulla mattis erat dui, ut tempor lectus dictum id.
--------------------------------------------------------------------------------
/src/content/sections/register.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Registration
3 | type: register
4 | ---
5 |
6 | Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi.
--------------------------------------------------------------------------------
/src/data/features.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "title": "AWE.SOME Feature One",
4 | "icon": "icon1.svg",
5 | "content": "Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt."
6 | },
7 | {
8 | "title": "AWE.SOME Feature Two",
9 | "icon": "icon2.svg",
10 | "content": "Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt."
11 | },
12 | {
13 | "title": "AWE.SOME Feature Three",
14 | "icon": "icon3.svg",
15 | "content": "Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt."
16 | },
17 | {
18 | "title": "AWE.SOME Feature Four",
19 | "icon": "icon4.svg",
20 | "content": "Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt."
21 | },
22 | {
23 | "title": "AWE.SOME Feature Five",
24 | "icon": "icon5.svg",
25 | "content": "Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt."
26 | },
27 | {
28 | "title": "AWE.SOME Feature Six",
29 | "icon": "icon6.svg",
30 | "content": "Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt."
31 | }
32 | ]
--------------------------------------------------------------------------------
/src/data/site.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": "AWE.SOME",
3 | "description": "AWE.SOME - An Astro Landing Page Template",
4 | "title": "🚀 AWE.SOME - An Astro Landing Page Template",
5 | "language": "en",
6 | "social": [
7 | {
8 | "title": "Mastodon",
9 | "url": "https://mastodon.social/#"
10 | },
11 | {
12 | "title": "LinkedIn",
13 | "url": "https://linkedin.com/company/#"
14 | }
15 | ]
16 | }
--------------------------------------------------------------------------------
/src/env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
--------------------------------------------------------------------------------
/src/layouts/Base.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import siteData from '../data/site.json'
3 | import Footer from '../components/Footer.astro'
4 | import Head from '../components/Head.astro'
5 | import JS from '../components/JS.astro'
6 | import '../styles/global.css'
7 | ---
8 |
9 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/layouts/Page.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import siteData from '../data/site.json'
3 | import Footer from '../components/Footer.astro'
4 | import Head from '../components/Head.astro'
5 | import JS from '../components/JS.astro'
6 | import Navbar from '../components/Navbar.astro'
7 | import '../styles/global.css'
8 | import '../styles/normalize.css'
9 |
10 | const {frontmatter} = Astro.props
11 | ---
12 |
13 |
15 |
16 |
17 |
18 |
{frontmatter.title}
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/src/pages/imprint.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: ../layouts/Page.astro
3 | title: Imprint
4 | description: Information according to whatever legal requirements apply.
5 | ---
6 |
7 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut id rhoncus est. Nullam sit amet justo nisi. Aliquam elementum iaculis nulla bibendum congue. Integer convallis ut nisi at tincidunt. Sed eu diam ex. Ut efficitur velit ut ultrices semper. Morbi suscipit ut purus a placerat. Cras massa lorem, pretium et nibh in, faucibus fermentum dolor. Nulla lacinia malesuada molestie. Proin et risus turpis. Aenean lacinia, orci at egestas fringilla, sem libero facilisis lectus, ut porta justo ligula a quam. Mauris vulputate purus mauris, eget semper ante rutrum id. Duis vestibulum, turpis at ultricies aliquam, enim dolor lobortis leo, at laoreet elit odio at nunc. Aliquam sit amet erat mi.
8 |
9 | Cras mattis justo id convallis porta. Pellentesque ullamcorper fringilla odio at pretium. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nulla mattis erat dui, ut tempor lectus dictum id. Mauris ornare massa a nisi gravida, id ultrices ex cursus. Donec quis porttitor nisl, non viverra dui. Donec nec gravida arcu. Pellentesque dignissim at libero id bibendum. Vivamus pulvinar nibh risus, et egestas odio interdum id. Cras eleifend risus molestie mollis finibus. Aenean tortor elit, accumsan vel fermentum pharetra, molestie ut felis.
10 |
11 | Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt. Aliquam semper felis sed leo sodales scelerisque. Vivamus vitae erat vel tellus condimentum consectetur at ac velit. Mauris massa tortor, cursus sit amet turpis in, lacinia ultricies nulla.
12 |
13 | Integer finibus sem sit amet diam luctus, ut posuere enim dapibus. Nunc euismod dignissim dui a maximus. Phasellus pulvinar neque at lorem ultricies suscipit. Maecenas felis erat, ornare eget egestas et, ultricies vitae ante. In convallis quam lectus, sit amet elementum ligula pulvinar ac. Integer sapien ipsum, congue a purus vel, sollicitudin lacinia ligula. Ut varius sit amet lectus quis congue. Ut viverra lectus tellus, a pharetra neque egestas eu. Morbi feugiat, arcu id bibendum vulputate, risus mi finibus enim, sed pulvinar ipsum sem eu risus. Aenean accumsan elementum ipsum, eu porttitor libero auctor at. Duis nec ipsum velit. Aliquam ac ullamcorper nisl. Duis mattis malesuada leo, quis egestas turpis molestie nec. Curabitur dui tortor, volutpat quis varius et, posuere eget augue. Praesent sed pretium dui. Vivamus auctor ex vitae nisl commodo interdum.
14 |
15 | Nam non quam vel velit sagittis consequat non vel odio. Phasellus condimentum dictum orci, quis rhoncus lacus hendrerit non. Ut vel nisl lectus. Duis vitae varius enim. Morbi placerat urna sit amet sollicitudin viverra. Vivamus maximus metus ac ornare venenatis. Ut suscipit nec sapien ac fringilla. Phasellus et justo eget odio lacinia feugiat. Nullam laoreet eros a lectus pretium, sed euismod velit tincidunt.
16 |
17 | Images: Undraw via undraw.co/illustrations
18 |
19 | Feature icons: "Webicons" created by Vlad Cristea, obtained via www.graphicdelivery.com/webicons
20 |
--------------------------------------------------------------------------------
/src/pages/index.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Base from '../layouts/Base.astro'
3 | import Wrapper from '../components/sections/Wrapper.astro'
4 | ---
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/pages/privacy.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: ../layouts/Page.astro
3 | title: Privacy Policy
4 | ---
5 |
6 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut id rhoncus est. Nullam sit amet justo nisi. Aliquam elementum iaculis nulla bibendum congue. Integer convallis ut nisi at tincidunt. Sed eu diam ex. Ut efficitur velit ut ultrices semper. Morbi suscipit ut purus a placerat. Cras massa lorem, pretium et nibh in, faucibus fermentum dolor. Nulla lacinia malesuada molestie. Proin et risus turpis. Aenean lacinia, orci at egestas fringilla, sem libero facilisis lectus, ut porta justo ligula a quam. Mauris vulputate purus mauris, eget semper ante rutrum id. Duis vestibulum, turpis at ultricies aliquam, enim dolor lobortis leo, at laoreet elit odio at nunc. Aliquam sit amet erat mi.
7 |
8 | Cras mattis justo id convallis porta. Pellentesque ullamcorper fringilla odio at pretium. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nulla mattis erat dui, ut tempor lectus dictum id. Mauris ornare massa a nisi gravida, id ultrices ex cursus. Donec quis porttitor nisl, non viverra dui. Donec nec gravida arcu. Pellentesque dignissim at libero id bibendum. Vivamus pulvinar nibh risus, et egestas odio interdum id. Cras eleifend risus molestie mollis finibus. Aenean tortor elit, accumsan vel fermentum pharetra, molestie ut felis.
9 |
10 | Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt. Aliquam semper felis sed leo sodales scelerisque. Vivamus vitae erat vel tellus condimentum consectetur at ac velit. Mauris massa tortor, cursus sit amet turpis in, lacinia ultricies nulla.
11 |
12 | Integer finibus sem sit amet diam luctus, ut posuere enim dapibus. Nunc euismod dignissim dui a maximus. Phasellus pulvinar neque at lorem ultricies suscipit. Maecenas felis erat, ornare eget egestas et, ultricies vitae ante. In convallis quam lectus, sit amet elementum ligula pulvinar ac. Integer sapien ipsum, congue a purus vel, sollicitudin lacinia ligula. Ut varius sit amet lectus quis congue. Ut viverra lectus tellus, a pharetra neque egestas eu. Morbi feugiat, arcu id bibendum vulputate, risus mi finibus enim, sed pulvinar ipsum sem eu risus. Aenean accumsan elementum ipsum, eu porttitor libero auctor at. Duis nec ipsum velit. Aliquam ac ullamcorper nisl. Duis mattis malesuada leo, quis egestas turpis molestie nec. Curabitur dui tortor, volutpat quis varius et, posuere eget augue. Praesent sed pretium dui. Vivamus auctor ex vitae nisl commodo interdum.
13 |
14 | Nam non quam vel velit sagittis consequat non vel odio. Phasellus condimentum dictum orci, quis rhoncus lacus hendrerit non. Ut vel nisl lectus. Duis vitae varius enim. Morbi placerat urna sit amet sollicitudin viverra. Vivamus maximus metus ac ornare venenatis. Ut suscipit nec sapien ac fringilla. Phasellus et justo eget odio lacinia feugiat. Nullam laoreet eros a lectus pretium, sed euismod velit tincidunt.
15 |
16 | #### Website enhancements ####
17 |
18 | This website uses the follwing packages from unpkg.com :
19 |
20 | - ‐ popper.js
21 | - ‐ tippy.js
22 |
23 | Using these packages, personal data may be transmitted.
24 |
25 | ### Your rights ###
26 |
27 | Integer finibus sem sit amet diam luctus, ut posuere enim dapibus. Nunc euismod dignissim dui a maximus. Phasellus pulvinar neque at lorem ultricies suscipit. Maecenas felis erat, ornare eget egestas et, ultricies vitae ante. In convallis quam lectus, sit amet elementum ligula pulvinar ac. Integer sapien ipsum, congue a purus vel, sollicitudin lacinia ligula. Ut varius sit amet lectus quis congue. Ut viverra lectus tellus, a pharetra neque egestas eu. Morbi feugiat, arcu id bibendum vulputate, risus mi finibus enim, sed pulvinar ipsum sem eu risus. Aenean accumsan elementum ipsum, eu porttitor libero auctor at. Duis nec ipsum velit. Aliquam ac ullamcorper nisl. Duis mattis malesuada leo, quis egestas turpis molestie nec. Curabitur dui tortor, volutpat quis varius et, posuere eget augue. Praesent sed pretium dui. Vivamus auctor ex vitae nisl commodo interdum.
28 |
--------------------------------------------------------------------------------
/src/styles/global.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
5 | *,
6 | *::before,
7 | *::after {
8 | scroll-behavior: smooth;
9 | }
10 |
11 | html {
12 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
13 | }
14 |
15 | /* scrollbar styles */
16 |
17 | @media (min-width: 576px) {
18 | body::-webkit-scrollbar-track {
19 | box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
20 | -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
21 | background-color: #f5f7fa;
22 | }
23 |
24 | body::-webkit-scrollbar {
25 | width: 6px;
26 | background-color: #f5f7fa;
27 | }
28 |
29 | body::-webkit-scrollbar-thumb {
30 | background-color: #7c3aed;
31 | }
32 | }
33 |
34 | .hamburger {
35 | cursor: pointer;
36 | width: 48px;
37 | height: 48px;
38 | transition: all 0.25s;
39 | }
40 |
41 | .hamburger__top-bun,
42 | .hamburger__bottom-bun {
43 | content: "";
44 | position: absolute;
45 | width: 24px;
46 | height: 2px;
47 | background: #000;
48 | transform: rotate(0);
49 | transition: all 0.5s;
50 | }
51 |
52 | .hamburger:hover [class*="-bun"] {
53 | background: #333;
54 | }
55 |
56 | .hamburger__top-bun {
57 | transform: translateY(-5px);
58 | }
59 |
60 | .hamburger__bottom-bun {
61 | transform: translateY(3px);
62 | }
63 |
64 | .open {
65 | transform: rotate(90deg);
66 | transform: translateY(-1px);
67 | }
68 |
69 | .open .hamburger__top-bun {
70 | transform: rotate(45deg) translateY(0px);
71 | }
72 |
73 | .open .hamburger__bottom-bun {
74 | transform: rotate(-45deg) translateY(0px);
75 | }
76 |
77 | *:hover {
78 | transition: all 400ms ease;
79 | }
80 |
81 | .header {
82 | background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 304 304' width='304' height='304'%3E%3Cpath fill='%23f5f7fa' fill-opacity='0.4' d='M44.1 224a5 5 0 1 1 0 2H0v-2h44.1zm160 48a5 5 0 1 1 0 2H82v-2h122.1zm57.8-46a5 5 0 1 1 0-2H304v2h-42.1zm0 16a5 5 0 1 1 0-2H304v2h-42.1zm6.2-114a5 5 0 1 1 0 2h-86.2a5 5 0 1 1 0-2h86.2zm-256-48a5 5 0 1 1 0 2H0v-2h12.1zm185.8 34a5 5 0 1 1 0-2h86.2a5 5 0 1 1 0 2h-86.2zM258 12.1a5 5 0 1 1-2 0V0h2v12.1zm-64 208a5 5 0 1 1-2 0v-54.2a5 5 0 1 1 2 0v54.2zm48-198.2V80h62v2h-64V21.9a5 5 0 1 1 2 0zm16 16V64h46v2h-48V37.9a5 5 0 1 1 2 0zm-128 96V208h16v12.1a5 5 0 1 1-2 0V210h-16v-76.1a5 5 0 1 1 2 0zm-5.9-21.9a5 5 0 1 1 0 2H114v48H85.9a5 5 0 1 1 0-2H112v-48h12.1zm-6.2 130a5 5 0 1 1 0-2H176v-74.1a5 5 0 1 1 2 0V242h-60.1zm-16-64a5 5 0 1 1 0-2H114v48h10.1a5 5 0 1 1 0 2H112v-48h-10.1zM66 284.1a5 5 0 1 1-2 0V274H50v30h-2v-32h18v12.1zM236.1 176a5 5 0 1 1 0 2H226v94h48v32h-2v-30h-48v-98h12.1zm25.8-30a5 5 0 1 1 0-2H274v44.1a5 5 0 1 1-2 0V146h-10.1zm-64 96a5 5 0 1 1 0-2H208v-80h16v-14h-42.1a5 5 0 1 1 0-2H226v18h-16v80h-12.1zm86.2-210a5 5 0 1 1 0 2H272V0h2v32h10.1zM98 101.9V146H53.9a5 5 0 1 1 0-2H96v-42.1a5 5 0 1 1 2 0zM53.9 34a5 5 0 1 1 0-2H80V0h2v34H53.9zm60.1 3.9V66H82v64H69.9a5 5 0 1 1 0-2H80V64h32V37.9a5 5 0 1 1 2 0zM101.9 82a5 5 0 1 1 0-2H128V37.9a5 5 0 1 1 2 0V82h-28.1zm16-64a5 5 0 1 1 0-2H146v44.1a5 5 0 1 1-2 0V18h-26.1zm102.2 270a5 5 0 1 1 0 2H98v14h-2v-16h124.1zM242 149.9V160h16v34h-16v62h48v48h-2v-46h-48v-66h16v-30h-16v-12.1a5 5 0 1 1 2 0zM53.9 18a5 5 0 1 1 0-2H64V2H48V0h18v18H53.9zm112 32a5 5 0 1 1 0-2H192V0h50v2h-48v48h-28.1zm-48-48a5 5 0 0 1-9.8-2h2.07a3 3 0 1 0 5.66 0H178v34h-18V21.9a5 5 0 1 1 2 0V32h14V2h-58.1zm0 96a5 5 0 1 1 0-2H137l32-32h39V21.9a5 5 0 1 1 2 0V66h-40.17l-32 32H117.9zm28.1 90.1a5 5 0 1 1-2 0v-76.51L175.59 80H224V21.9a5 5 0 1 1 2 0V82h-49.59L146 112.41v75.69zm16 32a5 5 0 1 1-2 0v-99.51L184.59 96H300.1a5 5 0 0 1 3.9-3.9v2.07a3 3 0 0 0 0 5.66v2.07a5 5 0 0 1-3.9-3.9H185.41L162 121.41v98.69zm-144-64a5 5 0 1 1-2 0v-3.51l48-48V48h32V0h2v50H66v55.41l-48 48v2.69zM50 53.9v43.51l-48 48V208h26.1a5 5 0 1 1 0 2H0v-65.41l48-48V53.9a5 5 0 1 1 2 0zm-16 16V89.41l-34 34v-2.82l32-32V69.9a5 5 0 1 1 2 0zM12.1 32a5 5 0 1 1 0 2H9.41L0 43.41V40.6L8.59 32h3.51zm265.8 18a5 5 0 1 1 0-2h18.69l7.41-7.41v2.82L297.41 50H277.9zm-16 160a5 5 0 1 1 0-2H288v-71.41l16-16v2.82l-14 14V210h-28.1zm-208 32a5 5 0 1 1 0-2H64v-22.59L40.59 194H21.9a5 5 0 1 1 0-2H41.41L66 216.59V242H53.9zm150.2 14a5 5 0 1 1 0 2H96v-56.6L56.6 162H37.9a5 5 0 1 1 0-2h19.5L98 200.6V256h106.1zm-150.2 2a5 5 0 1 1 0-2H80v-46.59L48.59 178H21.9a5 5 0 1 1 0-2H49.41L82 208.59V258H53.9zM34 39.8v1.61L9.41 66H0v-2h8.59L32 40.59V0h2v39.8zM2 300.1a5 5 0 0 1 3.9 3.9H3.83A3 3 0 0 0 0 302.17V256h18v48h-2v-46H2v42.1zM34 241v63h-2v-62H0v-2h34v1zM17 18H0v-2h16V0h2v18h-1zm273-2h14v2h-16V0h2v16zm-32 273v15h-2v-14h-14v14h-2v-16h18v1zM0 92.1A5.02 5.02 0 0 1 6 97a5 5 0 0 1-6 4.9v-2.07a3 3 0 1 0 0-5.66V92.1zM80 272h2v32h-2v-32zm37.9 32h-2.07a3 3 0 0 0-5.66 0h-2.07a5 5 0 0 1 9.8 0zM5.9 0A5.02 5.02 0 0 1 0 5.9V3.83A3 3 0 0 0 3.83 0H5.9zm294.2 0h2.07A3 3 0 0 0 304 3.83V5.9a5 5 0 0 1-3.9-5.9zm3.9 300.1v2.07a3 3 0 0 0-1.83 1.83h-2.07a5 5 0 0 1 3.9-3.9zM97 100a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-48 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 96a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-144a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-96 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm96 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-32 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM49 36a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-32 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM33 68a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 240a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm80-176a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm112 176a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM17 180a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM17 84a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6z'%3E%3C/path%3E%3C/svg%3E"),
83 | linear-gradient(
84 | 135deg,
85 | rgba(245, 247, 250, 1) 0%,
86 | #fff 20%,
87 | #fff 80%,
88 | rgba(245, 247, 250, 1) 100%
89 | );
90 | }
91 |
92 | .content__container {
93 | overflow: hidden;
94 | height: 40px;
95 | }
96 |
97 | .content__container__list {
98 | list-style: none;
99 | animation-name: change;
100 | animation-duration: 20s;
101 | animation-iteration-count: infinite;
102 | }
103 |
104 | .content__container__list__item {
105 | margin: 0;
106 | line-height: 40px;
107 | }
108 |
109 | @keyframes change {
110 | 0%,
111 | 7.14%,
112 | 100% {
113 | transform: translate3d(0, 0, 0);
114 | }
115 | 14.28% {
116 | transform: translate3d(0, -14.28%, 0);
117 | }
118 | 21.42% {
119 | transform: translate3d(0, -28.57%, 0);
120 | }
121 | 28.57% {
122 | transform: translate3d(0, -42.85%, 0);
123 | }
124 | 35.71% {
125 | transform: translate3d(0, -57.14%, 0);
126 | }
127 | 42.85% {
128 | transform: translate3d(0, -71.42%, 0);
129 | }
130 | 53.5% {
131 | transform: translate3d(0, -85.71%, 0);
132 | }
133 | 64.28% {
134 | transform: translate3d(0, -71.42%, 0);
135 | }
136 | 71.42% {
137 | transform: translate3d(0, -57.14%, 0);
138 | }
139 | 78.54% {
140 | transform: translate3d(0, -42.85%, 0);
141 | }
142 | 85.71% {
143 | transform: translate3d(0, -28.57%, 0);
144 | }
145 | 92.85% {
146 | transform: translate3d(0, -14.28%, 0);
147 | }
148 | }
149 |
150 | .tippy-tooltip {
151 | background-color: #ccc;
152 | color: #c3dafe;
153 | opacity: 0.85;
154 | }
155 |
156 | .tippy-tooltip[data-animatefill] {
157 | background-color: transparent;
158 | }
159 |
160 | .tippy-tooltip .tippy-backdrop {
161 | background-color: #ccc;
162 | opacity: 0.5;
163 | }
164 |
165 | .tippy-tooltip[x-placement^="bottom"] .tippy-arrow {
166 | border-bottom-color: #ccc;
167 | }
168 |
--------------------------------------------------------------------------------
/src/styles/normalize.css:
--------------------------------------------------------------------------------
1 | *,
2 | *::before,
3 | *::after {
4 | box-sizing: border-box;
5 | }
6 |
7 | @-ms-viewport {
8 | width: device-width;
9 | }
10 |
11 | hr {
12 | box-sizing: content-box;
13 | height: 0;
14 | overflow: visible;
15 | }
16 |
17 | h1, h2, h3, h4, h5, h6 {
18 | margin-top: 0;
19 | margin-bottom: 0.5rem;
20 | }
21 |
22 | p {
23 | margin-top: 0;
24 | margin-bottom: 1rem;
25 | }
26 |
27 | ol,
28 | ul,
29 | dl {
30 | margin-top: 0;
31 | margin-bottom: 1rem;
32 | }
33 |
34 | ol ol,
35 | ul ul,
36 | ol ul,
37 | ul ol {
38 | margin-bottom: 0;
39 | }
40 |
41 | dt {
42 | font-weight: 700;
43 | }
44 |
45 | dd {
46 | margin-bottom: .5rem;
47 | margin-left: 0;
48 | }
49 |
50 | blockquote {
51 | margin: 0 0 1rem;
52 | }
53 |
54 | b,
55 | strong {
56 | font-weight: bolder;
57 | }
58 |
59 | small, .small {
60 | font-size: 80%;
61 | }
62 |
63 | a {
64 | text-decoration: underline;
65 | background-color: transparent;
66 | -webkit-text-decoration-skip: objects;
67 | }
68 |
69 | a:hover {
70 | text-decoration: none;
71 | }
72 |
73 | a:not([href]):not([tabindex]) {
74 | color: inherit;
75 | text-decoration: none;
76 | }
77 |
78 | a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {
79 | color: inherit;
80 | text-decoration: none;
81 | }
82 |
83 | a:not([href]):not([tabindex]):focus {
84 | outline: 0;
85 | }
86 |
87 | figure {
88 | margin: 0 0 1rem;
89 | }
90 |
91 | img {
92 | vertical-align: middle;
93 | border-style: none;
94 | }
95 |
96 | svg {
97 | overflow: hidden;
98 | vertical-align: middle;
99 | }
100 |
101 | [hidden] {
102 | display: none !important;
103 | }
--------------------------------------------------------------------------------
/tailwind.config.cjs:
--------------------------------------------------------------------------------
1 | /** @type {import('tailwindcss').Config} */
2 | module.exports = {
3 | content: ['./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}'],
4 | theme: {
5 | extend: {},
6 | },
7 | plugins: [
8 | require('@tailwindcss/typography')
9 | ],
10 | }
11 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | // Note: No change needed if you use "astro/tsconfigs/strict" or "astro/tsconfigs/strictest"
3 | "extends": "astro/tsconfigs/base",
4 | "compilerOptions": {
5 | "strictNullChecks": true,
6 | "allowJs": true,
7 | "allowSyntheticDefaultImports": true
8 | }
9 | }
--------------------------------------------------------------------------------