spoko-design-system 0.7.6 → 0.7.7

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 (171) hide show
  1. package/.astro/data-store.json +1 -1
  2. package/.astro/settings.json +4 -4
  3. package/.astro/types.d.ts +1 -0
  4. package/.github/dependabot.yml +11 -11
  5. package/.github/todo.yml +3 -3
  6. package/.github/workflows/deploy.yml +39 -39
  7. package/.stackblitzrc +5 -5
  8. package/.vscode/extensions.json +5 -5
  9. package/.vscode/launch.json +11 -11
  10. package/.vscode/settings.json +5 -5
  11. package/LICENSE +21 -21
  12. package/README.md +114 -114
  13. package/astro-i18next.config.mjs +17 -17
  14. package/astro-i18next.config.ts +10 -10
  15. package/astro.config.mjs +86 -86
  16. package/dev-dist/sw.js +91 -91
  17. package/dev-dist/workbox-c676b6d3.js +3391 -3391
  18. package/icon.config.ts +309 -309
  19. package/index.ts +66 -66
  20. package/package.json +17 -17
  21. package/public/fonts/lg.svg +53 -53
  22. package/public/fonts/vwhead-bold-demo.html +549 -549
  23. package/public/fonts/vwhead-regular-demo.html +549 -549
  24. package/public/fonts/vwtext-bold-demo.html +549 -549
  25. package/public/fonts/vwtext-regular-demo.html +549 -549
  26. package/public/github.svg +3 -3
  27. package/public/grid_dot.svg +4 -4
  28. package/public/linkedin.svg +44 -44
  29. package/public/locales/en/translation.json +8 -8
  30. package/public/locales/pl/translation.json +8 -8
  31. package/public/make-scrollable-code-focusable.js +3 -3
  32. package/public/pagefind.yml +3 -3
  33. package/public/polo.blue.svg +29 -29
  34. package/public/spoko.space.svg +71 -71
  35. package/public/twitter.svg +46 -46
  36. package/renovate.json +6 -6
  37. package/sandbox.config.json +11 -11
  38. package/src/MyComponent.astro +8 -8
  39. package/src/components/Badge.vue +19 -19
  40. package/src/components/Badges.vue +21 -21
  41. package/src/components/Breadcrumbs.vue +107 -107
  42. package/src/components/Button.vue +101 -101
  43. package/src/components/ButtonCopy.astro +183 -183
  44. package/src/components/ButtonCopy.vue +36 -36
  45. package/src/components/Card.astro +27 -27
  46. package/src/components/Carousel.astro +26 -26
  47. package/src/components/Category/CategoriesCarousel.astro +101 -101
  48. package/src/components/Category/CategoryDetails.astro +169 -169
  49. package/src/components/Category/CategoryLink.vue +28 -28
  50. package/src/components/Category/CategorySidebarToggler.vue +9 -9
  51. package/src/components/Category/CategoryTile.astro +37 -37
  52. package/src/components/Category/CategoryViewToggler.astro +89 -89
  53. package/src/components/Category/SubCategoryLink.vue +19 -19
  54. package/src/components/Copyright.astro +12 -12
  55. package/src/components/Date.astro +7 -7
  56. package/src/components/Faq.astro +33 -33
  57. package/src/components/FaqItem.astro +80 -80
  58. package/src/components/FeaturesList.vue +41 -41
  59. package/src/components/FuckRussia.vue +62 -62
  60. package/src/components/HandDrive.astro +29 -29
  61. package/src/components/Header/Header.astro +210 -210
  62. package/src/components/Header/SkipToContent.astro +1 -1
  63. package/src/components/Headline.vue +48 -48
  64. package/src/components/Image.astro +30 -30
  65. package/src/components/LeftSidebar.astro +53 -53
  66. package/src/components/MainColors.vue +22 -22
  67. package/src/components/MainInput.vue +15 -15
  68. package/src/components/Modal.astro +27 -27
  69. package/src/components/PageContent.astro +5 -5
  70. package/src/components/PartNumber.vue +27 -27
  71. package/src/components/Post/PostCategories.astro +41 -41
  72. package/src/components/Post/PostCategories.vue +39 -39
  73. package/src/components/PostHeader.astro +103 -103
  74. package/src/components/PrCode.vue +141 -141
  75. package/src/components/Product/ProductButton.vue +18 -18
  76. package/src/components/Product/ProductCarousel.astro +35 -35
  77. package/src/components/Product/ProductCodes.vue +174 -174
  78. package/src/components/Product/ProductEngineType.vue +42 -42
  79. package/src/components/Product/ProductImage.astro +40 -40
  80. package/src/components/Product/ProductLink.astro +101 -101
  81. package/src/components/Product/ProductLink.vue +59 -59
  82. package/src/components/Product/ProductLinkInfo.astro +37 -37
  83. package/src/components/Product/ProductNumber.astro +60 -60
  84. package/src/components/ProductCarousel.astro +38 -38
  85. package/src/components/ProductCodes.vue +39 -39
  86. package/src/components/ProductDetailName.vue +52 -52
  87. package/src/components/ProductDetailsList.vue +157 -157
  88. package/src/components/ProductTile.astro +48 -48
  89. package/src/components/Quote.vue +23 -23
  90. package/src/components/ReloadPrompt.astro +50 -50
  91. package/src/components/SlimBanner.vue +72 -72
  92. package/src/components/Table.vue +32 -32
  93. package/src/components/TableOfContents.astro +15 -15
  94. package/src/components/Translations.vue +23 -23
  95. package/src/components/flags/FlagPL.vue +3 -3
  96. package/src/components/flags/FlagUA.vue +2 -2
  97. package/src/components/layout/Container.astro +7 -7
  98. package/src/components/layout/Header.astro +80 -80
  99. package/src/config.ts +56 -56
  100. package/src/design.config.ts +98 -98
  101. package/src/env.d.ts +6 -6
  102. package/src/layouts/Layout.astro +61 -61
  103. package/src/layouts/MainLayout.astro +81 -81
  104. package/src/layouts/partials/FooterCommon.astro +4 -4
  105. package/src/layouts/partials/HeadCommon.astro +44 -44
  106. package/src/layouts/partials/HeadSEO.astro +41 -41
  107. package/src/pages/components/badges.mdx +57 -57
  108. package/src/pages/components/breadcrumbs.mdx +139 -139
  109. package/src/pages/components/buttons.mdx +360 -360
  110. package/src/pages/components/card.mdx +294 -294
  111. package/src/pages/components/carousel.mdx +62 -62
  112. package/src/pages/components/copyright.mdx +42 -42
  113. package/src/pages/components/details-list.mdx +115 -115
  114. package/src/pages/components/features-list.mdx +37 -37
  115. package/src/pages/components/flags.mdx +49 -49
  116. package/src/pages/components/fuck-russia.mdx +39 -39
  117. package/src/pages/components/hand-drive.mdx +38 -38
  118. package/src/pages/components/headline.mdx +152 -152
  119. package/src/pages/components/icons.astro +135 -135
  120. package/src/pages/components/image.mdx +513 -513
  121. package/src/pages/components/input.mdx +367 -367
  122. package/src/pages/components/jumbotron.mdx +359 -359
  123. package/src/pages/components/modal.mdx +64 -64
  124. package/src/pages/components/post-header.mdx +64 -64
  125. package/src/pages/components/pr-code.mdx +65 -65
  126. package/src/pages/components/product-number.mdx +58 -58
  127. package/src/pages/components/product-tile.mdx +51 -51
  128. package/src/pages/components/quote.mdx +33 -33
  129. package/src/pages/components/slimbanner.mdx +35 -35
  130. package/src/pages/components/table.mdx +108 -108
  131. package/src/pages/core/colors.mdx +10 -10
  132. package/src/pages/core/grid.mdx +89 -89
  133. package/src/pages/core/introduction.mdx +77 -77
  134. package/src/pages/core/shadows.astro +20 -20
  135. package/src/pages/core/typography.astro +49 -49
  136. package/src/pages/index.astro +133 -133
  137. package/src/pages/patterns/introduction.mdx +60 -60
  138. package/src/pwa.ts +12 -12
  139. package/src/styles/_variables.scss +70 -70
  140. package/src/styles/base/base.css +184 -184
  141. package/src/styles/base/grid.css +92 -92
  142. package/src/styles/base/typography.css +70 -70
  143. package/src/styles/content.css +73 -73
  144. package/src/styles/main.css +7 -7
  145. package/src/types/Product.ts +31 -31
  146. package/src/types/astro.d.ts +3 -3
  147. package/src/utils/product/getPriceFormatted.ts +15 -15
  148. package/src/utils/product/getProductChecklist.ts +17 -17
  149. package/src/utils/product/useFormatProductNumber.ts +41 -41
  150. package/src/utils/seo/getShorterDescription.ts +14 -14
  151. package/src/utils/text/formatDate.ts +5 -5
  152. package/src/utils/text/formatLocaleNumber.ts +6 -6
  153. package/src/utils/text/formatPad.ts +12 -12
  154. package/src/utils/text/getNumberFormatted.ts +33 -33
  155. package/src/utils/text/getTranslatedLink.ts +5 -5
  156. package/src/utils/text.ts +19 -19
  157. package/tailwind.config.cjs +8 -8
  158. package/tsconfig.json +28 -28
  159. package/uno-config/index.ts +249 -232
  160. package/uno-config/theme/breakpoints.ts +9 -9
  161. package/uno-config/theme/colors.ts +64 -64
  162. package/uno-config/theme/dimensions.ts +17 -17
  163. package/uno-config/theme/effects.ts +14 -14
  164. package/uno-config/theme/grid.ts +10 -10
  165. package/uno-config/theme/index.ts +28 -28
  166. package/uno-config/theme/shortcuts/buttons.ts +53 -53
  167. package/uno-config/theme/shortcuts/components.ts +92 -92
  168. package/uno-config/theme/shortcuts/index.ts +20 -20
  169. package/uno-config/theme/shortcuts/layout.ts +64 -64
  170. package/uno-config/theme/typography.ts +29 -29
  171. package/uno.config.ts +2 -2
@@ -1,51 +1,51 @@
1
- <script src="./../pwa.ts"></script>
2
- <div
3
- id="pwa-toast"
4
- role="alert"
5
- aria-labelledby="toast-message"
6
- >
7
- <div class="message">
8
- <span id="toast-message"></span>
9
- </div>
10
- <button id="pwa-refresh">
11
- Reload
12
- </button>
13
- <button id="pwa-close">
14
- Close
15
- </button>
16
- </div>
17
-
18
- <style>
19
- #pwa-toast {
20
- visibility: hidden;
21
- position: fixed;
22
- right: 0;
23
- bottom: 0;
24
- margin: 16px;
25
- padding: 12px;
26
- border: 1px solid #8885;
27
- border-radius: 4px;
28
- z-index: 1;
29
- text-align: left;
30
- box-shadow: 3px 4px 5px 0 #8885;
31
- }
32
- #pwa-toast .message {
33
- margin-bottom: 8px;
34
- }
35
- #pwa-toast button {
36
- border: 1px solid #8885;
37
- outline: none;
38
- margin-right: 5px;
39
- border-radius: 2px;
40
- padding: 3px 10px;
41
- }
42
- #pwa-toast.show {
43
- visibility: visible;
44
- }
45
- button#pwa-refresh {
46
- display: none;
47
- }
48
- #pwa-toast.show.refresh button#pwa-refresh {
49
- display: inline-block;
50
- }
1
+ <script src="./../pwa.ts"></script>
2
+ <div
3
+ id="pwa-toast"
4
+ role="alert"
5
+ aria-labelledby="toast-message"
6
+ >
7
+ <div class="message">
8
+ <span id="toast-message"></span>
9
+ </div>
10
+ <button id="pwa-refresh">
11
+ Reload
12
+ </button>
13
+ <button id="pwa-close">
14
+ Close
15
+ </button>
16
+ </div>
17
+
18
+ <style>
19
+ #pwa-toast {
20
+ visibility: hidden;
21
+ position: fixed;
22
+ right: 0;
23
+ bottom: 0;
24
+ margin: 16px;
25
+ padding: 12px;
26
+ border: 1px solid #8885;
27
+ border-radius: 4px;
28
+ z-index: 1;
29
+ text-align: left;
30
+ box-shadow: 3px 4px 5px 0 #8885;
31
+ }
32
+ #pwa-toast .message {
33
+ margin-bottom: 8px;
34
+ }
35
+ #pwa-toast button {
36
+ border: 1px solid #8885;
37
+ outline: none;
38
+ margin-right: 5px;
39
+ border-radius: 2px;
40
+ padding: 3px 10px;
41
+ }
42
+ #pwa-toast.show {
43
+ visibility: visible;
44
+ }
45
+ button#pwa-refresh {
46
+ display: none;
47
+ }
48
+ #pwa-toast.show.refresh button#pwa-refresh {
49
+ display: inline-block;
50
+ }
51
51
  </style>
@@ -1,73 +1,73 @@
1
- <script lang="ts" setup>
2
- import { ref } from 'vue';
3
-
4
- const props = defineProps({
5
- showCloseButton: {
6
- type: Boolean,
7
- default: true,
8
- required: false,
9
- },
10
- })
11
- const isShow = ref(true)
12
- const toggleVisibility = () => {
13
- isShow.value = !isShow.value
14
- }
15
- </script>
16
-
17
- <template>
18
- <div v-if="isShow" data-pagefind-ignore class="slimbanner">
19
- <span
20
- class="inline-block text-4xl w-6 h-3.5 min-w-[1.25rem] mr-3 bg-gradient-to-b stops-[#0057b7_50%,50%,#ffd700_100%]" />
21
- <span class="leading-none "><span
22
- data-text="We stand with our friends and colleagues in Ukraine. To support Ukraine in their time of need visit " />
23
- <a href="https://polo.blue/support-ukraine/" target="_blank" rel="noopener" title="Support Ukraine"
24
- class="underline underline-offset-2 hover:text-blue-wrc">this page</a>.
25
- </span>
26
-
27
- <button class="btn-close text-white" v-if="props.showCloseButton" @click="toggleVisibility()"
28
- aria-label="Toggle">
29
- <span class="close close-dark"></span>
30
- </button>
31
- </div>
32
- <div v-else data-pagefind-ignore
33
- class="px-4 sm:px-8 py-3 flex items-center justify-center text-xs sm:text-base leading-none text-white relative bg-black drop-shadow-md z-2 ">
34
- <div class="tracking-widest leading-none">
35
- <span data-text="RUSSIA IS A" /> <span class="underline decoration-red-600 decoration-1 underline-offset-3"
36
- data-text="TERRORIST" /> <span data-text="STATE" />
37
- </div>
38
- <button class="btn-close" v-if="props.showCloseButton" @click="toggleVisibility()"
39
- aria-label="Toggle">
40
- <span class="close close-light"></span>
41
- </button>
42
- </div>
43
- </template>
44
-
45
- <style>
46
- .btn-close {
47
- @apply ml-3 relative w-5 h-5;
48
- }
49
-
50
- .close {
51
- @apply absolute top-0 left-0 opacity-50 transition-opacity duration-200;
52
- }
53
-
54
- .btn-close:hover .close {
55
- @apply opacity-100;
56
- }
57
-
58
- .close:before,
59
- .close:after {
60
- position: absolute;
61
- left: 0.5rem;
62
- content: ' ';
63
- height: 1.25rem;
64
- width: 2px;
65
- }
66
-
67
- .close:before {
68
- transform: rotate(45deg);
69
- }
70
-
71
- .close:after {
72
- transform: rotate(-45deg);
1
+ <script lang="ts" setup>
2
+ import { ref } from 'vue';
3
+
4
+ const props = defineProps({
5
+ showCloseButton: {
6
+ type: Boolean,
7
+ default: true,
8
+ required: false,
9
+ },
10
+ })
11
+ const isShow = ref(true)
12
+ const toggleVisibility = () => {
13
+ isShow.value = !isShow.value
14
+ }
15
+ </script>
16
+
17
+ <template>
18
+ <div v-if="isShow" data-pagefind-ignore class="slimbanner">
19
+ <span
20
+ class="inline-block text-4xl w-6 h-3.5 min-w-[1.25rem] mr-3 bg-gradient-to-b stops-[#0057b7_50%,50%,#ffd700_100%]" />
21
+ <span class="leading-none "><span
22
+ data-text="We stand with our friends and colleagues in Ukraine. To support Ukraine in their time of need visit " />
23
+ <a href="https://polo.blue/support-ukraine/" target="_blank" rel="noopener" title="Support Ukraine"
24
+ class="underline underline-offset-2 hover:text-blue-wrc">this page</a>.
25
+ </span>
26
+
27
+ <button class="btn-close text-white" v-if="props.showCloseButton" @click="toggleVisibility()"
28
+ aria-label="Toggle">
29
+ <span class="close close-dark"></span>
30
+ </button>
31
+ </div>
32
+ <div v-else data-pagefind-ignore
33
+ class="px-4 sm:px-8 py-3 flex items-center justify-center text-xs sm:text-base leading-none text-white relative bg-black drop-shadow-md z-2 ">
34
+ <div class="tracking-widest leading-none">
35
+ <span data-text="RUSSIA IS A" /> <span class="underline decoration-red-600 decoration-1 underline-offset-3"
36
+ data-text="TERRORIST" /> <span data-text="STATE" />
37
+ </div>
38
+ <button class="btn-close" v-if="props.showCloseButton" @click="toggleVisibility()"
39
+ aria-label="Toggle">
40
+ <span class="close close-light"></span>
41
+ </button>
42
+ </div>
43
+ </template>
44
+
45
+ <style>
46
+ .btn-close {
47
+ @apply ml-3 relative w-5 h-5;
48
+ }
49
+
50
+ .close {
51
+ @apply absolute top-0 left-0 opacity-50 transition-opacity duration-200;
52
+ }
53
+
54
+ .btn-close:hover .close {
55
+ @apply opacity-100;
56
+ }
57
+
58
+ .close:before,
59
+ .close:after {
60
+ position: absolute;
61
+ left: 0.5rem;
62
+ content: ' ';
63
+ height: 1.25rem;
64
+ width: 2px;
65
+ }
66
+
67
+ .close:before {
68
+ transform: rotate(45deg);
69
+ }
70
+
71
+ .close:after {
72
+ transform: rotate(-45deg);
73
73
  }</style>
@@ -1,32 +1,32 @@
1
- <script setup lang="ts">
2
- const props = defineProps<{
3
- data: string;
4
- }>();
5
-
6
- const theads = Object.keys(Object.values(props.data)[0])
7
-
8
- const capitalizeFirstLetter = (text: String) => {
9
- return text[0].toUpperCase() + text.slice(1)
10
- }
11
-
12
- </script>
13
-
14
- <template>
15
- <table class="table-auto text-left border bg-white shadow-md">
16
- <thead class="bg-gray-500 text-white">
17
- <tr class="border">
18
- <th class="px-4 py-2 font-semibold" v-for="thead, index in theads" :key="index">
19
- {{ capitalizeFirstLetter(thead) }}
20
- </th>
21
- </tr>
22
- </thead>
23
- <tbody>
24
- <tr class="border" v-for="row in props.data" :key="row">
25
- <td class="px-4 py-2" v-for="key in Object.keys(row)" :key="key">
26
- {{ row[key] }}
27
- </td>
28
- </tr>
29
- </tbody>
30
- </table>
31
- </template>
32
-
1
+ <script setup lang="ts">
2
+ const props = defineProps<{
3
+ data: string;
4
+ }>();
5
+
6
+ const theads = Object.keys(Object.values(props.data)[0])
7
+
8
+ const capitalizeFirstLetter = (text: String) => {
9
+ return text[0].toUpperCase() + text.slice(1)
10
+ }
11
+
12
+ </script>
13
+
14
+ <template>
15
+ <table class="table-auto text-left border bg-white shadow-md">
16
+ <thead class="bg-gray-500 text-white">
17
+ <tr class="border">
18
+ <th class="px-4 py-2 font-semibold" v-for="thead, index in theads" :key="index">
19
+ {{ capitalizeFirstLetter(thead) }}
20
+ </th>
21
+ </tr>
22
+ </thead>
23
+ <tbody>
24
+ <tr class="border" v-for="row in props.data" :key="row">
25
+ <td class="px-4 py-2" v-for="key in Object.keys(row)" :key="key">
26
+ {{ row[key] }}
27
+ </td>
28
+ </tr>
29
+ </tbody>
30
+ </table>
31
+ </template>
32
+
@@ -1,15 +1,15 @@
1
- ---
2
- const { headers } = Astro.props;
3
- ---
4
-
5
- <ul class="flex flex-col gap-4 mt-24">
6
- {
7
- headers.map(({ slug, text }) => {
8
- return (
9
- <li class="text-slate-400 hover:text-slate-800 hover:text-slate-900">
10
- #<a href={`#${slug}`}>{text}</a>
11
- </li>
12
- );
13
- })
14
- }
15
- </ul>
1
+ ---
2
+ const { headers } = Astro.props;
3
+ ---
4
+
5
+ <ul class="flex flex-col gap-4 mt-24">
6
+ {
7
+ headers.map(({ slug, text }) => {
8
+ return (
9
+ <li class="text-slate-400 hover:text-slate-800 hover:text-slate-900">
10
+ #<a href={`#${slug}`}>{text}</a>
11
+ </li>
12
+ );
13
+ })
14
+ }
15
+ </ul>
@@ -1,23 +1,23 @@
1
-
2
- <script setup lang="ts">
3
- import { PropType } from 'vue';
4
-
5
- const props = defineProps({
6
- lang: {
7
- type: String
8
- },
9
- translations: {
10
- type: Object as PropType<{ uri: string | null, title: string | null, name: string | null } | null>
11
- }
12
- });
13
- </script>
14
-
15
- <template>
16
- <div data-pagefind-ignore v-if="props.translations !== null && props.translations.uri">
17
- <a aria-label="Change language" type="button" :href="translations.uri"
18
- :title="translations.name ? translations.name : translations.title"
19
- :class="[lang === 'en' ? 'i-circle-flags:en' : '', lang === 'pl' ? 'i-circle-flags:pl' : '', 'w-5 hover:rotate--3']" />
20
- </div>
21
- </template>
22
-
23
-
1
+
2
+ <script setup lang="ts">
3
+ import { PropType } from 'vue';
4
+
5
+ const props = defineProps({
6
+ lang: {
7
+ type: String
8
+ },
9
+ translations: {
10
+ type: Object as PropType<{ uri: string | null, title: string | null, name: string | null } | null>
11
+ }
12
+ });
13
+ </script>
14
+
15
+ <template>
16
+ <div data-pagefind-ignore v-if="props.translations !== null && props.translations.uri">
17
+ <a aria-label="Change language" type="button" :href="translations.uri"
18
+ :title="translations.name ? translations.name : translations.title"
19
+ :class="[lang === 'en' ? 'i-circle-flags:en' : '', lang === 'pl' ? 'i-circle-flags:pl' : '', 'w-5 hover:rotate--3']" />
20
+ </div>
21
+ </template>
22
+
23
+
@@ -1,4 +1,4 @@
1
- <template>
2
- <span
3
- class="drop-shadow inline-block text-4xl w-6 h-3.5 min-w-[1.25rem] mr-3 bg-gradient-to-b stops-[#fff_50%,50%,#d4213d_100%]" />
1
+ <template>
2
+ <span
3
+ class="drop-shadow inline-block text-4xl w-6 h-3.5 min-w-[1.25rem] mr-3 bg-gradient-to-b stops-[#fff_50%,50%,#d4213d_100%]" />
4
4
  </template>
@@ -1,3 +1,3 @@
1
- <template>
2
- <span class="flag-ua" />
1
+ <template>
2
+ <span class="flag-ua" />
3
3
  </template>
@@ -1,7 +1,7 @@
1
- ---
2
- const { class: className, isFullWidth } = Astro.props;
3
- ---
4
-
5
- <div class:list={[`${isFullWidth ? 'max-w-full' : 'max-w-screen-xl'} mx-auto px-5 py-4`, className]}>
6
- <slot />
7
- </div>
1
+ ---
2
+ const { class: className, isFullWidth } = Astro.props;
3
+ ---
4
+
5
+ <div class:list={[`${isFullWidth ? 'max-w-full' : 'max-w-screen-xl'} mx-auto px-5 py-4`, className]}>
6
+ <slot />
7
+ </div>
@@ -1,80 +1,80 @@
1
- ---
2
- const { class: className } = Astro.props;
3
- import { Icon } from "astro-icon/components";
4
-
5
- const navItemsLeft = [
6
- {
7
- title: "Components",
8
- description: "The building blocks for our UI.",
9
- url: "/components/buttons",
10
- img: "/Components.jpg",
11
- },
12
- {
13
- title: "Patterns",
14
- description: "Common patterns for building interfaces.",
15
- url: "/patterns/introduction",
16
- img: "/Patterns.jpg",
17
- },
18
- ];
19
- ---
20
-
21
- <nav
22
- itemscope
23
- itemtype="http://schema.org/WPHeader"
24
- class:list={[
25
- className,
26
- "nav print-hidden mx-auto px-4 shadow-md relative flex items-center justify-between h-24 sm:h-14 flex-wrap sm:flex-nowrap pt-1 sm:pt-0",
27
- ]}
28
- >
29
- <div class="flex items-center justify-start sm:items-stretch order-1">
30
- <slot name="logo" />
31
-
32
- <div class="hidden sm:block sm:ml-6">
33
- <div class="flex space-x-4" itemprop="hasPart">
34
- {
35
- navItemsLeft.map(({ title, description, url, img }) => (
36
- <a
37
- href={url}
38
- class="text-gray-400 hover:bg-blue-darker hover:text-white px-3 py-1 rounded-full text-sm font-medium"
39
- title={description}
40
- itemprop="url"
41
- >
42
- {title}
43
- </a>
44
- ))
45
- }
46
- </div>
47
- </div>
48
- </div>
49
-
50
- <div
51
- class="relative md:block sm:ml-4 w-full order-4 h-10 md:(w-64 mr-auto order-2)"
52
- >
53
- <slot name="search" />
54
- </div>
55
-
56
- <div
57
- class="flex items-center pr-0 sm:static sm:inset-auto ml-auto sm:ml-6 -mr-2 print:hidden order-3 sm:order-3 w-20 justify-end"
58
- itemprop="hasPart"
59
- itemscope
60
- itemtype="http://schema.org/SiteNavigationElement"
61
- >
62
- <a
63
- class="icon-btn mx-2"
64
- title=""
65
- aria-label=""
66
- href="#"
67
- itemprop="url"
68
- data-astro-reload
69
- >
70
- <Icon name="carbon:language" />
71
- </a>
72
- </div>
73
- </nav>
74
-
75
- <style is:global>
76
- nav {
77
- /* display: grid; */
78
- place-items: center;
79
- }
80
- </style>
1
+ ---
2
+ const { class: className } = Astro.props;
3
+ import { Icon } from "astro-icon/components";
4
+
5
+ const navItemsLeft = [
6
+ {
7
+ title: "Components",
8
+ description: "The building blocks for our UI.",
9
+ url: "/components/buttons",
10
+ img: "/Components.jpg",
11
+ },
12
+ {
13
+ title: "Patterns",
14
+ description: "Common patterns for building interfaces.",
15
+ url: "/patterns/introduction",
16
+ img: "/Patterns.jpg",
17
+ },
18
+ ];
19
+ ---
20
+
21
+ <nav
22
+ itemscope
23
+ itemtype="http://schema.org/WPHeader"
24
+ class:list={[
25
+ className,
26
+ "nav print-hidden mx-auto px-4 shadow-md relative flex items-center justify-between h-24 sm:h-14 flex-wrap sm:flex-nowrap pt-1 sm:pt-0",
27
+ ]}
28
+ >
29
+ <div class="flex items-center justify-start sm:items-stretch order-1">
30
+ <slot name="logo" />
31
+
32
+ <div class="hidden sm:block sm:ml-6">
33
+ <div class="flex space-x-4" itemprop="hasPart">
34
+ {
35
+ navItemsLeft.map(({ title, description, url, img }) => (
36
+ <a
37
+ href={url}
38
+ class="text-gray-400 hover:bg-blue-darker hover:text-white px-3 py-1 rounded-full text-sm font-medium"
39
+ title={description}
40
+ itemprop="url"
41
+ >
42
+ {title}
43
+ </a>
44
+ ))
45
+ }
46
+ </div>
47
+ </div>
48
+ </div>
49
+
50
+ <div
51
+ class="relative md:block sm:ml-4 w-full order-4 h-10 md:(w-64 mr-auto order-2)"
52
+ >
53
+ <slot name="search" />
54
+ </div>
55
+
56
+ <div
57
+ class="flex items-center pr-0 sm:static sm:inset-auto ml-auto sm:ml-6 -mr-2 print:hidden order-3 sm:order-3 w-20 justify-end"
58
+ itemprop="hasPart"
59
+ itemscope
60
+ itemtype="http://schema.org/SiteNavigationElement"
61
+ >
62
+ <a
63
+ class="icon-btn mx-2"
64
+ title=""
65
+ aria-label=""
66
+ href="#"
67
+ itemprop="url"
68
+ data-astro-reload
69
+ >
70
+ <Icon name="carbon:language" />
71
+ </a>
72
+ </div>
73
+ </nav>
74
+
75
+ <style is:global>
76
+ nav {
77
+ /* display: grid; */
78
+ place-items: center;
79
+ }
80
+ </style>