spoko-design-system 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/.astro/icon.d.ts +2193 -0
  2. package/.github/workflows/deploy.yml +40 -0
  3. package/.stackblitzrc +6 -0
  4. package/.vscode/extensions.json +4 -0
  5. package/.vscode/launch.json +11 -0
  6. package/LICENSE +21 -0
  7. package/Layout/Header.astro +89 -0
  8. package/README.md +69 -0
  9. package/astro-i18next.config.mjs +18 -0
  10. package/astro-i18next.config.ts +11 -0
  11. package/astro.config.mjs +43 -0
  12. package/index.ts +6 -0
  13. package/package.json +71 -0
  14. package/public/Components.jpg +0 -0
  15. package/public/Core.jpg +0 -0
  16. package/public/Patterns.jpg +0 -0
  17. package/public/astro-design-system-logo.svg +10 -0
  18. package/public/default-og-image.png +0 -0
  19. package/public/favicon.ico +0 -0
  20. package/public/fonts/VWHeadline-LtTab.woff2 +0 -0
  21. package/public/fonts/lg.svg +54 -0
  22. package/public/fonts/lg.svg.br +0 -0
  23. package/public/fonts/lg.svg.gz +0 -0
  24. package/public/fonts/lg.ttf +0 -0
  25. package/public/fonts/lg.woff +0 -0
  26. package/public/fonts/lg.woff2 +0 -0
  27. package/public/fonts/nova-mono-v13-latin-regular.woff +0 -0
  28. package/public/fonts/nova-mono-v13-latin-regular.woff2 +0 -0
  29. package/public/fonts/vwhead-bold-demo.html +549 -0
  30. package/public/fonts/vwhead-bold-webfont.woff +0 -0
  31. package/public/fonts/vwhead-bold-webfont.woff2 +0 -0
  32. package/public/fonts/vwhead-light-webfont.woff +0 -0
  33. package/public/fonts/vwhead-light-webfont.woff2 +0 -0
  34. package/public/fonts/vwhead-regular-demo.html +549 -0
  35. package/public/fonts/vwhead-regular-webfont-OLD.woff +0 -0
  36. package/public/fonts/vwhead-regular-webfont-OLD.woff2 +0 -0
  37. package/public/fonts/vwhead-regular-webfont.woff +0 -0
  38. package/public/fonts/vwhead-regular-webfont.woff2 +0 -0
  39. package/public/fonts/vwtext-bold-demo.html +549 -0
  40. package/public/fonts/vwtext-bold-webfont.woff +0 -0
  41. package/public/fonts/vwtext-bold-webfont.woff2 +0 -0
  42. package/public/fonts/vwtext-light-webfont.woff +0 -0
  43. package/public/fonts/vwtext-light-webfont.woff2 +0 -0
  44. package/public/fonts/vwtext-regular-demo.html +549 -0
  45. package/public/fonts/vwtext-regular-webfont.woff +0 -0
  46. package/public/fonts/vwtext-regular-webfont.woff2 +0 -0
  47. package/public/github.svg +3 -0
  48. package/public/grid_dot.svg +4 -0
  49. package/public/linkedin.svg +44 -0
  50. package/public/locales/en/translation.json +6 -0
  51. package/public/locales/pl/translation.json +6 -0
  52. package/public/make-scrollable-code-focusable.js +3 -0
  53. package/public/twitter.svg +46 -0
  54. package/sandbox.config.json +11 -0
  55. package/src/MyComponent.astro +8 -0
  56. package/src/assets/hand-drive.svg +1 -0
  57. package/src/components/Badge.vue +20 -0
  58. package/src/components/Badges.vue +23 -0
  59. package/src/components/Breadcrumbs.vue +111 -0
  60. package/src/components/Copyright.astro +12 -0
  61. package/src/components/FuckRussia.vue +65 -0
  62. package/src/components/HandDrive.astro +31 -0
  63. package/src/components/HeadCommon.astro +40 -0
  64. package/src/components/HeadSEO.astro +41 -0
  65. package/src/components/Header/AstroLogo.astro +27 -0
  66. package/src/components/Header/Header.astro +48 -0
  67. package/src/components/Header/SkipToContent.astro +1 -0
  68. package/src/components/Jumbatron.vue +31 -0
  69. package/src/components/LeftSidebar.astro +44 -0
  70. package/src/components/MainButton.vue +26 -0
  71. package/src/components/MainColors.vue +29 -0
  72. package/src/components/MainInput.vue +18 -0
  73. package/src/components/MainStatusPill.vue +32 -0
  74. package/src/components/MainTable.vue +45 -0
  75. package/src/components/PageContent.astro +14 -0
  76. package/src/components/RightSidebar.astro +11 -0
  77. package/src/components/SlimBanner.vue +60 -0
  78. package/src/components/TableOfContents.astro +12 -0
  79. package/src/components/flags/FlagPL.vue +3 -0
  80. package/src/components/flags/FlagUA.vue +3 -0
  81. package/src/components/layout/Container.astro +7 -0
  82. package/src/components/layout/Header.astro +99 -0
  83. package/src/config.ts +42 -0
  84. package/src/design.config.ts +92 -0
  85. package/src/env.d.ts +2 -0
  86. package/src/layouts/MainLayout.astro +50 -0
  87. package/src/pages/components/badges.mdx +35 -0
  88. package/src/pages/components/breadcrumbs.mdx +103 -0
  89. package/src/pages/components/buttons.mdx +60 -0
  90. package/src/pages/components/copyright.mdx +24 -0
  91. package/src/pages/components/flags.mdx +27 -0
  92. package/src/pages/components/fuck-russia.mdx +16 -0
  93. package/src/pages/components/hand-drive.mdx +27 -0
  94. package/src/pages/components/icons.astro +45 -0
  95. package/src/pages/components/input.mdx +15 -0
  96. package/src/pages/components/jumbatron.mdx +48 -0
  97. package/src/pages/components/slimbanner.mdx +27 -0
  98. package/src/pages/components/status-pill.mdx +22 -0
  99. package/src/pages/components/table.mdx +20 -0
  100. package/src/pages/core/colors.mdx +8 -0
  101. package/src/pages/core/introduction.mdx +68 -0
  102. package/src/pages/core/shadows.astro +21 -0
  103. package/src/pages/core/typography.astro +47 -0
  104. package/src/pages/index.astro +52 -0
  105. package/src/pages/patterns/introduction.mdx +61 -0
  106. package/src/styles/_variables.scss +75 -0
  107. package/src/styles/base/_base.scss +158 -0
  108. package/src/styles/base/_typography.scss +148 -0
  109. package/src/styles/content.scss +72 -0
  110. package/src/styles/main.scss +22 -0
  111. package/tailwind.config.cjs +8 -0
  112. package/tsconfig.json +12 -0
  113. package/uno.config.ts +228 -0
@@ -0,0 +1,60 @@
1
+ ---
2
+ title: "Buttons"
3
+ layout: "../../layouts/MainLayout.astro"
4
+ ---
5
+ import MainButton from '../../components/MainButton.vue'
6
+
7
+ ## All buttons
8
+
9
+ This page is an example on how to document your button components, most of the copy was written by AI so don't take it very seriously.
10
+
11
+ Find the code for this page in the `src/pages/components/buttons.md` file.
12
+
13
+ <div class="component-preview">
14
+ <MainButton primary><b>Primary</b></MainButton>
15
+ <MainButton secondary>Secondary</MainButton>
16
+ <MainButton text>Text</MainButton>
17
+ </div>
18
+
19
+ ```js
20
+ <MainButton primary>Primary</MainButton>
21
+ <MainButton secondary>Secondary</MainButton>
22
+ <MainButton text>Text</MainButton>
23
+ ```
24
+
25
+ ## Primary button
26
+
27
+ We use the primary button for main actions like saving a form or creating a new item.
28
+
29
+ <div class="component-preview">
30
+ <MainButton primary>Primary button</MainButton>
31
+ </div>
32
+
33
+ ```js
34
+ <MainButton primary>Primary button</MainButton>
35
+ ```
36
+
37
+ ## Secondary button
38
+
39
+ Secondary buttons accompany primary buttons to provide additional actions.
40
+ For example, cancel buttons are secondary buttons.
41
+
42
+ <div class="component-preview">
43
+ <MainButton secondary>Secondary button</MainButton>
44
+ </div>
45
+
46
+ ```js
47
+ <MainButton secondary>Secondary button</MainButton>
48
+ ```
49
+
50
+ ## Text button
51
+
52
+ Text buttons are used for actions that do not require a primary or secondary button.
53
+
54
+ <div class="component-preview">
55
+ <MainButton text>Text button</MainButton>
56
+ </div>
57
+
58
+ ```js
59
+ <MainButton text>Text button</MainButton>
60
+ ```
@@ -0,0 +1,24 @@
1
+ ---
2
+ title: "Copyright"
3
+ layout: "../../layouts/MainLayout.astro"
4
+ ---
5
+ import Copyright from '../../components/Copyright.astro'
6
+
7
+ ## Copyright
8
+
9
+ Copyright component
10
+ <div class="component-preview">
11
+ <Copyright class="z-0 w-full">
12
+ <div slot="left-item">left item</div>
13
+ <div slot="middle-item">middle item</div>
14
+ <div slot="right-item">right item</div>
15
+ </Copyright>
16
+ </div>
17
+
18
+ ```js
19
+ <Copyright class="fixed bottom-0 z-0 w-full" >
20
+ <div slot="left-item">left item</div>
21
+ <div slot="middle-item">middle item</div>
22
+ <div slot="right-item">right item</div>
23
+ </Copyright>
24
+ ```
@@ -0,0 +1,27 @@
1
+ ---
2
+ title: "FuckRussia"
3
+ layout: "../../layouts/MainLayout.astro"
4
+ ---
5
+ import FlagPL from '../../components/flags/FlagPL.vue'
6
+ import FlagUA from '../../components/flags/FlagUA.vue'
7
+
8
+ ## Flags
9
+ Flags - icons
10
+
11
+ ### Flag PL
12
+ <div class="component-preview">
13
+ <FlagPL />
14
+ </div>
15
+
16
+ ```js
17
+ <FlagPL />
18
+ ```
19
+
20
+ ###Flag UA
21
+ <div class="component-preview">
22
+ <FlagUA />
23
+ </div>
24
+
25
+ ```js
26
+ <FlagUA />
27
+ ```
@@ -0,0 +1,16 @@
1
+ ---
2
+ title: "FuckRussia"
3
+ layout: "../../layouts/MainLayout.astro"
4
+ ---
5
+ import FuckRussia from '../../components/FuckRussia.vue'
6
+
7
+ ## FuckRussia
8
+
9
+ FuckRussia - solidarity with Ukraine.
10
+ <div class="component-preview">
11
+ <FuckRussia class="flex" />
12
+ </div>
13
+
14
+ ```js
15
+ <FuckRussia class="flex" />
16
+ ```
@@ -0,0 +1,27 @@
1
+ ---
2
+ title: "HandDrive"
3
+ layout: "../../layouts/MainLayout.astro"
4
+ ---
5
+ import HandDrive from '../../components/HandDrive.astro'
6
+
7
+ ## HandDrive
8
+
9
+ ### HandDrive RHD
10
+ <div class="component-preview">
11
+ <HandDrive handDrive={0} />
12
+ </div>
13
+
14
+ ```js
15
+ <HandDrive handDrive={0} />
16
+ ```
17
+
18
+
19
+
20
+ ### HandDrive LHD
21
+ <div class="component-preview">
22
+ <HandDrive handDrive={1} />
23
+ </div>
24
+
25
+ ```js
26
+ <HandDrive handDrive={1} />
27
+ ```
@@ -0,0 +1,45 @@
1
+ ---
2
+ import MainLayout from '../../layouts/MainLayout.astro';
3
+ import { Icon } from 'astro-icon/components';
4
+
5
+ const ICONS = {
6
+ mdi: ["facebook", "instagram", "post-it-note-edit-outline"], // Loads only Material Design Icon's "account" SVG
7
+ 'ant-design': ["menu-fold-outlined", "menu-unfold-outlined", "menu-outlined" ],
8
+ bi: ["envelope-open", "credit-card"],
9
+ bx: ["arrow-back"],
10
+ carbon: ["language", "checkmark", "home", "dicom-overlay"],
11
+ el: ["star-empty", "star"],
12
+ 'eos-icons': ["three-dots-loading"],
13
+ fluent: ["share-android-24-regular"],
14
+ 'fluent-emoji': ["cookie"],
15
+ la: ["arrow-right", "arrow-left"],
16
+ octicon: ["chevron-left-24", "x-24"],
17
+ uil: ["map-marker", "envelope", "phone"]
18
+ }
19
+
20
+ ---
21
+
22
+ <MainLayout>
23
+ <h1>Icons</h1>
24
+ <pre class="astro-code bg-slate-800 text-white">import &#123; Icon &#125; from 'astro-icon/components';</pre>
25
+ <div class="">
26
+ {Object.keys(ICONS).map((key) => (
27
+ <h2>{key}</h2>
28
+ <div class="inline-grid grid-cols-4 gap-0 w-full">
29
+ {ICONS[key].map((value) => (
30
+ <div>
31
+ <div class="component-preview ">
32
+ <Icon name={`${key}:${value}`} />
33
+ </div>
34
+ <pre class="astro-code bg-slate-800 text-white text-sm">&lt;Icon name={`${key}:${value}`} /&gt;</pre>
35
+ </div>
36
+ ))}
37
+ </div>
38
+ ))}
39
+ </div>
40
+
41
+
42
+
43
+ </MainLayout>
44
+
45
+
@@ -0,0 +1,15 @@
1
+ ---
2
+ title: Input
3
+ layout: ../../layouts/MainLayout.astro
4
+ ---
5
+ import MainInput from '../../components/MainInput.vue'
6
+
7
+ ## Input text
8
+
9
+ <div class="component-preview">
10
+ <MainInput label="Name"></MainInput>
11
+ </div>
12
+
13
+ ```js
14
+ <MainInput type="text" value="Hello world!"></MainInput>
15
+ ```
@@ -0,0 +1,48 @@
1
+ ---
2
+ title: "Jumbatron"
3
+ layout: "../../layouts/MainLayout.astro"
4
+ ---
5
+ import Jumbatron from '../../components/Jumbatron.vue'
6
+
7
+ ## Jumbatron
8
+
9
+ This page is an example on how to document your button components, most of the copy was written by AI so don't take it very seriously.
10
+
11
+ Find the code for this page in the `src/pages/components/buttons.md` file.
12
+ <div class="component-preview">
13
+ <Jumbatron class="w-full">
14
+ <span slot="intro" set:html={`Lorem ipsum dolor sit amet, <span class=\"text-lightBlue-500\">consectetur</span> adipiscing elit.`} />
15
+ <p slot="subtitle"
16
+ class="mt-3 text-base text-gray-200 sm:mt-5 text-lg md:text-xl lg:mx-0 md:mt-5"
17
+ set:html="Nunc posuere massa eget turpis laoreet ultrices eget vel massa."
18
+ />
19
+
20
+
21
+ <a slot="cta"
22
+ href="/about/"
23
+ title="short text"
24
+ class="w-full inline-flex items-center justify-center px-8 py-3 border border-transparent text-base font-medium rounded-full text-white bg-lightBlue-500 hover:bg-lightBlue-600 md:py-2 md:text-lg md:px-10 shadow"
25
+ >
26
+ Read More
27
+ </a>
28
+ </Jumbatron>
29
+ </div>
30
+
31
+ ```js
32
+ <Jumbatron>
33
+ <span slot="intro" set:html="text-intro" />
34
+ <p slot="subtitle"
35
+ class="mt-3 text-base text-gray-200 sm:mt-5 text-lg md:text-xl lg:mx-0 md:mt-5"
36
+ set:html="subtitle"
37
+ />
38
+
39
+
40
+ <a slot="cta"
41
+ href="/about/"
42
+ title="short text"
43
+ class="w-full inline-flex items-center justify-center px-8 py-3 border border-transparent text-base font-medium rounded-full text-white bg-lightBlue-500 hover:bg-lightBlue-600 md:py-2 md:text-lg md:px-10 shadow"
44
+ >
45
+ Read More
46
+ </a>
47
+ </Jumbatron>
48
+ ```
@@ -0,0 +1,27 @@
1
+ ---
2
+ title: "SlimBanner"
3
+ layout: "../../layouts/MainLayout.astro"
4
+ ---
5
+ import SlimBanner from '../../components/SlimBanner.vue'
6
+
7
+ ## SlimBanner
8
+
9
+ SlimBanner - solidarity with Ukraine.
10
+
11
+ <div class="component-preview">
12
+ <SlimBanner
13
+ client:load
14
+ showCloseButton
15
+ transition:name="slim-banner"
16
+ transition:persist
17
+ />
18
+ </div>
19
+
20
+ ```js
21
+ <SlimBanner
22
+ client:load
23
+ showCloseButton
24
+ transition:name="slim-banner"
25
+ transition:persist
26
+ />
27
+ ```
@@ -0,0 +1,22 @@
1
+ ---
2
+ title: "Status Pill"
3
+ layout: "../../layouts/MainLayout.astro"
4
+
5
+ ---
6
+ import MainStatusPill from '../../components/MainStatusPill.vue'
7
+
8
+ ## All Status pills
9
+
10
+ <div class="component-preview">
11
+ <MainStatusPill success>Success</MainStatusPill>
12
+ <MainStatusPill info>Info</MainStatusPill>
13
+ <MainStatusPill error>Error</MainStatusPill>
14
+ <MainStatusPill warning>Warning</MainStatusPill>
15
+ </div>
16
+
17
+ ```js
18
+ <MainStatusPill success>Success</MainStatusPill>
19
+ <MainStatusPill info>Info</MainStatusPill>
20
+ <MainStatusPill error>Error</MainStatusPill>
21
+ <MainStatusPill warning>Warning</MainStatusPill>
22
+ ```
@@ -0,0 +1,20 @@
1
+ ---
2
+ title: "Table"
3
+ layout: "../../layouts/MainLayout.astro"
4
+
5
+ ---
6
+
7
+ import MainTable from '../../components/MainTable.vue'
8
+
9
+
10
+ ## Primary table
11
+
12
+ <div class="component-preview">
13
+ <MainTable></MainTable>
14
+ </div>
15
+
16
+ ### Code
17
+
18
+ ```ts
19
+ <MainTable :data="data"></MainTable>
20
+ ```
@@ -0,0 +1,8 @@
1
+ ---
2
+ layout: ../../layouts/MainLayout.astro
3
+ ---
4
+
5
+ import MainColors from '../../components/MainColors.vue';
6
+
7
+ <h1>Colors</h1>
8
+ <MainColors />
@@ -0,0 +1,68 @@
1
+ ---
2
+ title: Introduction
3
+ description: Docs intro
4
+ layout: ../../layouts/MainLayout.astro
5
+ ---
6
+
7
+ # Spoko Design System Theme
8
+
9
+ Astro Design System is the easiest way to start your our design system. Since Astro is compatible with many frameworks, you can import your components and document them right in the markdown files.
10
+
11
+ ## Getting started
12
+
13
+ ### Adding new sections
14
+
15
+ Although it's not required, you can create folders for new sections.
16
+
17
+ To show the section on the left side navigation, add it to the navigation config file at `src/config.ts`.
18
+
19
+ Example:
20
+
21
+ ```js
22
+ export const SIDEBAR = [
23
+ { text: "Core", header: true },
24
+ { text: "Introduction", link: "/core/introduction" },
25
+ ...,
26
+ { text: "Components", header: true },
27
+ { text: "Buttons", link: "/components/buttons" },
28
+ ...,
29
+ { text: "New section", header: true },
30
+ { text: "New component", link: "/new-section/new-component.md" },
31
+ ];
32
+ ```
33
+
34
+ ### Adding new pages
35
+
36
+ To add new pages just create an .astro or markdown file in `src/pages/[section]/my-page.md`. Remember to add it to the navigation config in `src/config.ts` so it shows up in the left side navigation.
37
+
38
+ You're free to organize the pages however you want.
39
+
40
+ ### Customizing Core section (colors, typography, shadows...)
41
+
42
+ If you want to customize the default colors, typography or shadows you can find the configuration file at `src/config/design.config.ts`.
43
+
44
+ Feel free to add new pages to the Core section
45
+
46
+ ### Customizing the page layout
47
+
48
+ You can find the css for the pages in `src/styles/content.scss`.
49
+
50
+ ### Adding your components
51
+
52
+ Astro is great for design systems because it allows you to import components from different frameworks like react, vue or svelte.
53
+
54
+ To get started check how the `MainButton` component is used in the `src/pages/en/buttons.md` file.
55
+
56
+ You can import your component library or create your own and document it easily.
57
+
58
+ ### `.component-preview` utility
59
+
60
+ There's a class called `.component-preview` that you can use to wrap your component in a grid, and it will look like this:
61
+
62
+ <div class="component-preview">
63
+ <button class="text-white bg-blue-500 px-4 py-2 rounded-md">Your component</button>
64
+ </div>
65
+
66
+ ### Have fun!
67
+
68
+ Spoko Design System template was made by **[@spokospace](https://spoko.space)** for personal and commercial use.
@@ -0,0 +1,21 @@
1
+ ---
2
+ import MainLayout from '../../layouts/MainLayout.astro';
3
+ import { SHADOWS } from '../../design.config'
4
+
5
+ ---
6
+
7
+ <MainLayout>
8
+ <h1>Shadows</h1>
9
+ <div class="component-preview">
10
+ <div class="inline-grid grid-cols-2 gap-16">
11
+ {SHADOWS.types.map(({name, value}) => (
12
+ <div class="p-2 bg-white rounded-md text-slate-500 text-right pt-16 pl-24 font-mono" style={"box-shadow: " + value}>{name}</div>
13
+ ))}
14
+ </div>
15
+ </div>
16
+ <pre class="astro-code bg-slate-800 text-white">
17
+ {SHADOWS.types.map(({name, value}) => (
18
+ <div class="my-2">{`${name}: ${value}`}</div>
19
+ ))}
20
+ </pre>
21
+ </MainLayout>
@@ -0,0 +1,47 @@
1
+ ---
2
+ import MainLayout from '../../layouts/MainLayout.astro'
3
+ import { TYPOGRAPHY } from '../../design.config'
4
+ import { FONTS } from '../../design.config'
5
+ const getStyle = (item) => {
6
+ return `font-size: ${item.size}; font-weight: ${item.weight};`
7
+ }
8
+ ---
9
+
10
+ <MainLayout>
11
+ <h1>Typography</h1>
12
+ <div class="w-full">
13
+ {
14
+ TYPOGRAPHY.scale.map((item) => (
15
+ <div class="mt-6 border-t py-4">
16
+ <p style={getStyle(item)}>Hello world</p>
17
+ <div class="flex gap-6 text-slate-500 font-mono">
18
+ <span>{item.name}</span>
19
+ <span>weight: {item.weight}</span>
20
+ <span>size: {item.size}</span>
21
+ </div>
22
+ </div>
23
+ ))
24
+ }
25
+ </div>
26
+
27
+
28
+
29
+ <h1>Fonts</h1>
30
+ <div class="component-preview ">
31
+ <div class="flex flex-wrap gap-16">
32
+ {FONTS.types.map(({name, value}) => (
33
+ <div class="w-full">
34
+ <div class={`${value} text-3xl`} >Lorem Ipsum</div>
35
+ <div class="">{name}</div>
36
+ </div>
37
+ ))}
38
+ </div>
39
+ </div>
40
+
41
+ <pre class="astro-code bg-slate-800 text-white">
42
+ {FONTS.types.map(({name, value}) => (
43
+ <div class="my-5">{`${name}:`}<br><pre>{value}</pre></div>
44
+ ))}
45
+ </pre>
46
+
47
+ </MainLayout>
@@ -0,0 +1,52 @@
1
+ ---
2
+ import { SITE } from "../config";
3
+ const navItems = [
4
+ {
5
+ title: 'Core',
6
+ description: 'Base colors, typography, shadows, and more.',
7
+ url: '/core/introduction',
8
+ img: '/Core.jpg'
9
+ },
10
+ {
11
+ title: 'Components',
12
+ description: 'The building blocks for our UI.',
13
+ url: '/components/buttons',
14
+ img: '/Components.jpg'
15
+ },
16
+ {
17
+ title: 'Patterns',
18
+ description: 'Common patterns for building interfaces.',
19
+ url: '/patterns/introduction',
20
+ img: '/Patterns.jpg'
21
+ }
22
+ ]
23
+
24
+ ---
25
+
26
+
27
+
28
+ <div class="bg-slate-100 min-h-screen text-center">
29
+ <header class="pt-12 pb-24 px-4 bg-gradient-to-br from-slate-700 to-black">
30
+ <div class="flex items-center justify-center p-4">
31
+ <img src="/astro-design-system-logo.svg" alt="Astro Design System Logo">
32
+ </div>
33
+ <h1 class=" text-white text-4xl font-medium drop-shadow-sm">{SITE.title}</h1>
34
+ <p class="text-lg mt-4 text-slate-300">{SITE.description}</p>
35
+ </header>
36
+ <nav>
37
+ <ul class="flex gap-4 max-w-5xl mx-auto text-left mt-12">
38
+ {
39
+ navItems.map(({ title, description, url, img }) => (
40
+ <a href={url} class="flex flex-col bg-white rounded-md hover:-translate-y-1 hover:shadow-lg transition-all flex-1 items-center p-4">
41
+ <img src={img} alt={title}>
42
+ <h2 class="text-lg font-medium">{title}</h2>
43
+ <p class="text-slate-500">{description}</p>
44
+ </a>
45
+ ))
46
+ }
47
+ </ul>
48
+ </nav>
49
+ </div>
50
+
51
+ <script is:inline>
52
+ </script>
@@ -0,0 +1,61 @@
1
+ ---
2
+ layout: ../../layouts/MainLayout.astro
3
+ ---
4
+
5
+ import Container from '../../components/layout/Container.astro'
6
+ import Header from '../../components/layout/Header.astro'
7
+
8
+
9
+ # Patterns
10
+
11
+ Common patterns for building interfaces.
12
+
13
+
14
+
15
+
16
+ ## Container (max-w-screen-xl)
17
+
18
+ <div class="component-preview" style="display: block">
19
+ <Container class="bg-white">content</Container>
20
+ </div>
21
+
22
+ ### Code
23
+
24
+ ```ts
25
+ <Container class="bg-white">content</Container>
26
+ ```
27
+
28
+
29
+ ## Container FullWidth (max-w-full)
30
+
31
+ <div class="component-preview" style="display: block">
32
+ <Container class="bg-white" isFullWidth>content</Container>
33
+ </div>
34
+
35
+ ### Code
36
+
37
+ ```ts
38
+ <Container class="bg-white" isFullWidth>content</Container>
39
+ ```
40
+
41
+ ## Header
42
+
43
+ <div class="component-preview" style="display: block">
44
+ <Header class="static">
45
+ <div slot="logo" class="flex-shrink-0 flex items-center h-8">
46
+ <div class="bg-gray">LOGO</div>
47
+ </div>
48
+ <input type="text" slot="search" class="h-full w-full sm:w-64 border border-solid px-3 text-sm" placeholder="Search..."/>
49
+ </Header>
50
+ </div>
51
+
52
+ ### Code
53
+
54
+ ```ts
55
+ <Header>
56
+ <div slot="logo" class="flex-shrink-0 flex items-center h-8">
57
+ <div class="bg-gray">LOGO</div>
58
+ </div>
59
+ <input type="text" slot="search" class="h-full border border-solid px-3 text-sm" placeholder="Search..."/>
60
+ </Header>
61
+ ```
@@ -0,0 +1,75 @@
1
+ $navbar-height-md: 56px;
2
+ $navbar-height: 52px;
3
+ $special-menu-height: 145px;
4
+ $footer-navbar-height: 45px;
5
+ $footer-content-height: 166px;
6
+
7
+ $content-padding-bottom: 17px;
8
+
9
+
10
+ // Color system
11
+
12
+ $white: #fff !default;
13
+ $gray-100: #f8f9fa !default;
14
+ $gray-200: #e9ecef !default;
15
+ $gray-300: #dee2e6 !default;
16
+ $gray-400: #ced4da !default;
17
+ $gray-500: #adb5bd !default;
18
+ $gray-600: #6c757d !default;
19
+ $gray-700: #495057 !default;
20
+ $gray-800: #343a40 !default;
21
+ $gray-900: #212529 !default;
22
+ $black: #000 !default;
23
+
24
+ $filter-label: #a8a8a8;
25
+
26
+ $bg-stylish: #F6F6F6;
27
+ $bg-highlighted: #E7E7E7;
28
+ $badge-dark: #202020;
29
+
30
+ // social media colors:
31
+ $facebook: #4267B2;
32
+ $youtube: #ff0000;
33
+ $ebay: #3665f3;
34
+
35
+
36
+ $grays: () !default;
37
+ // stylelint-disable-next-line scss/dollar-variable-default
38
+ $grays: map-merge(("100": $gray-100,
39
+ "200": $gray-200,
40
+ "300": $gray-300,
41
+ "400": $gray-400,
42
+ "500": $gray-500,
43
+ "600": $gray-600,
44
+ "700": $gray-700,
45
+ "800": $gray-800,
46
+ "900": $gray-900),
47
+ $grays);
48
+
49
+ $lightblue: #ccecff;
50
+ $vwblue: #0786ba;
51
+ $vwblue2: #00b1eb;
52
+ $blue: #0099da; //#0070B2; //#007bff !default;
53
+ $darkblue: #00437A;
54
+ $verydarkblue: #232737;
55
+ $indigo: #6610f2 !default;
56
+ $purple: #6f42c1 !default;
57
+ $pink: #e83e8c !default;
58
+ $red: #dc3545;//#e94e1b; //#dc3545 !default;
59
+ $orange: #ff5a00; //allegro//#f4831d; //#ff9700; // #fd7e14 !default;
60
+ $orange-darken: #e94d1a;
61
+ $yellow: #ffc107 !default;
62
+ $green: #28a745 !default;
63
+ $teal: #20c997 !default;
64
+ $cyan: #17a2b8 !default;
65
+ $grey: #797878 !default;
66
+
67
+
68
+ $primary: $blue; // $blue !default;
69
+ $secondary: $grey; //$gray-600; //$gray-600 !default;
70
+ $success: $green !default;
71
+ $info: $ebay;//$cyan !default;
72
+ $warning: $orange !default;
73
+ $danger: $red !default;
74
+ $light: $gray-100 !default;
75
+ $dark: $gray-900 !default;