spoko-design-system 0.6.6 → 0.6.9

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 (172) hide show
  1. package/.astro/settings.json +4 -4
  2. package/.github/dependabot.yml +11 -11
  3. package/.github/todo.yml +3 -3
  4. package/.github/workflows/deploy.yml +39 -39
  5. package/.stackblitzrc +5 -5
  6. package/.vscode/extensions.json +5 -5
  7. package/.vscode/launch.json +11 -11
  8. package/.vscode/settings.json +5 -5
  9. package/LICENSE +21 -21
  10. package/README.md +114 -114
  11. package/astro-i18next.config.mjs +17 -17
  12. package/astro-i18next.config.ts +10 -10
  13. package/astro.config.mjs +86 -86
  14. package/dev-dist/sw.js +91 -91
  15. package/dev-dist/workbox-c676b6d3.js +3391 -3391
  16. package/icon.config.ts +290 -289
  17. package/index.ts +66 -66
  18. package/package.json +5 -5
  19. package/public/fonts/lg.svg +53 -53
  20. package/public/fonts/vwhead-bold-demo.html +549 -549
  21. package/public/fonts/vwhead-regular-demo.html +549 -549
  22. package/public/fonts/vwtext-bold-demo.html +549 -549
  23. package/public/fonts/vwtext-regular-demo.html +549 -549
  24. package/public/github.svg +3 -3
  25. package/public/grid_dot.svg +4 -4
  26. package/public/linkedin.svg +44 -44
  27. package/public/locales/en/translation.json +8 -8
  28. package/public/locales/pl/translation.json +8 -8
  29. package/public/make-scrollable-code-focusable.js +3 -3
  30. package/public/pagefind.yml +3 -3
  31. package/public/polo.blue.svg +29 -29
  32. package/public/spoko.space.svg +71 -71
  33. package/public/twitter.svg +46 -46
  34. package/renovate.json +6 -6
  35. package/sandbox.config.json +11 -11
  36. package/src/MyComponent.astro +8 -8
  37. package/src/components/Badge.vue +19 -19
  38. package/src/components/Badges.vue +21 -21
  39. package/src/components/Breadcrumbs.vue +107 -107
  40. package/src/components/Button.vue +101 -101
  41. package/src/components/ButtonCopy.astro +183 -183
  42. package/src/components/ButtonCopy.vue +36 -36
  43. package/src/components/Card.astro +27 -27
  44. package/src/components/Carousel.astro +26 -26
  45. package/src/components/Category/CategoriesCarousel.astro +101 -101
  46. package/src/components/Category/CategoryDetails.astro +169 -169
  47. package/src/components/Category/CategoryLink.vue +28 -28
  48. package/src/components/Category/CategorySidebarToggler.vue +9 -9
  49. package/src/components/Category/CategoryTile.astro +38 -38
  50. package/src/components/Category/CategoryViewToggler.astro +89 -89
  51. package/src/components/Category/SubCategoryLink.vue +19 -19
  52. package/src/components/Copyright.astro +12 -12
  53. package/src/components/Date.astro +7 -7
  54. package/src/components/Faq.astro +33 -33
  55. package/src/components/FaqItem.astro +80 -80
  56. package/src/components/FeaturesList.vue +41 -41
  57. package/src/components/FuckRussia.vue +62 -62
  58. package/src/components/HandDrive.astro +29 -29
  59. package/src/components/Header/Header.astro +210 -210
  60. package/src/components/Header/SkipToContent.astro +1 -1
  61. package/src/components/Headline.vue +48 -48
  62. package/src/components/Image.astro +30 -30
  63. package/src/components/Jumbotron/index.astro +4 -1
  64. package/src/components/Jumbotron/variants/Post.astro +3 -1
  65. package/src/components/Jumbotron/variants/PostSplit.astro +3 -1
  66. package/src/components/LeftSidebar.astro +53 -53
  67. package/src/components/MainColors.vue +22 -22
  68. package/src/components/MainInput.vue +15 -15
  69. package/src/components/Modal.astro +27 -27
  70. package/src/components/PageContent.astro +5 -5
  71. package/src/components/PartNumber.vue +27 -27
  72. package/src/components/Post/PostCategories.astro +41 -37
  73. package/src/components/Post/PostCategories.vue +39 -39
  74. package/src/components/PostHeader.astro +103 -103
  75. package/src/components/PrCode.vue +141 -141
  76. package/src/components/Product/ProductButton.vue +18 -18
  77. package/src/components/Product/ProductCarousel.astro +35 -35
  78. package/src/components/Product/ProductCodes.vue +174 -174
  79. package/src/components/Product/ProductEngineType.vue +42 -42
  80. package/src/components/Product/ProductImage.astro +40 -40
  81. package/src/components/Product/ProductLink.astro +101 -101
  82. package/src/components/Product/ProductLink.vue +59 -59
  83. package/src/components/Product/ProductLinkInfo.astro +37 -37
  84. package/src/components/Product/ProductNumber.astro +60 -60
  85. package/src/components/ProductCarousel.astro +38 -38
  86. package/src/components/ProductCodes.vue +39 -39
  87. package/src/components/ProductDetailName.vue +52 -52
  88. package/src/components/ProductDetailsList.vue +65 -65
  89. package/src/components/ProductTile.astro +48 -48
  90. package/src/components/Quote.vue +23 -23
  91. package/src/components/ReloadPrompt.astro +50 -50
  92. package/src/components/SlimBanner.vue +72 -72
  93. package/src/components/Table.vue +32 -32
  94. package/src/components/TableOfContents.astro +15 -15
  95. package/src/components/Translations.vue +23 -23
  96. package/src/components/flags/FlagPL.vue +3 -3
  97. package/src/components/flags/FlagUA.vue +2 -2
  98. package/src/components/layout/Container.astro +7 -7
  99. package/src/components/layout/Header.astro +80 -80
  100. package/src/config.ts +56 -56
  101. package/src/design.config.ts +98 -98
  102. package/src/env.d.ts +6 -6
  103. package/src/layouts/Layout.astro +61 -61
  104. package/src/layouts/MainLayout.astro +81 -81
  105. package/src/layouts/partials/FooterCommon.astro +4 -4
  106. package/src/layouts/partials/HeadCommon.astro +44 -44
  107. package/src/layouts/partials/HeadSEO.astro +41 -41
  108. package/src/pages/components/badges.mdx +57 -57
  109. package/src/pages/components/breadcrumbs.mdx +139 -139
  110. package/src/pages/components/buttons.mdx +360 -360
  111. package/src/pages/components/card.mdx +294 -294
  112. package/src/pages/components/carousel.mdx +62 -62
  113. package/src/pages/components/copyright.mdx +42 -42
  114. package/src/pages/components/details-list.mdx +115 -115
  115. package/src/pages/components/features-list.mdx +37 -37
  116. package/src/pages/components/flags.mdx +49 -49
  117. package/src/pages/components/fuck-russia.mdx +39 -39
  118. package/src/pages/components/hand-drive.mdx +38 -38
  119. package/src/pages/components/headline.mdx +152 -152
  120. package/src/pages/components/icons.astro +135 -135
  121. package/src/pages/components/image.mdx +513 -513
  122. package/src/pages/components/input.mdx +367 -367
  123. package/src/pages/components/jumbotron.mdx +359 -359
  124. package/src/pages/components/modal.mdx +64 -64
  125. package/src/pages/components/post-header.mdx +64 -60
  126. package/src/pages/components/pr-code.mdx +65 -65
  127. package/src/pages/components/product-number.mdx +58 -58
  128. package/src/pages/components/product-tile.mdx +51 -51
  129. package/src/pages/components/quote.mdx +33 -33
  130. package/src/pages/components/slimbanner.mdx +35 -35
  131. package/src/pages/components/table.mdx +108 -108
  132. package/src/pages/core/colors.mdx +10 -10
  133. package/src/pages/core/grid.mdx +89 -89
  134. package/src/pages/core/introduction.mdx +77 -77
  135. package/src/pages/core/shadows.astro +20 -20
  136. package/src/pages/core/typography.astro +49 -49
  137. package/src/pages/index.astro +133 -133
  138. package/src/pages/patterns/introduction.mdx +60 -60
  139. package/src/pwa.ts +12 -12
  140. package/src/styles/_variables.scss +70 -70
  141. package/src/styles/base/base.css +184 -184
  142. package/src/styles/base/grid.css +92 -92
  143. package/src/styles/base/typography.css +70 -70
  144. package/src/styles/content.css +73 -73
  145. package/src/styles/main.css +7 -7
  146. package/src/types/Product.ts +31 -31
  147. package/src/types/astro.d.ts +3 -3
  148. package/src/utils/product/getPriceFormatted.ts +15 -15
  149. package/src/utils/product/getProductChecklist.ts +17 -17
  150. package/src/utils/product/useFormatProductNumber.ts +41 -41
  151. package/src/utils/seo/getShorterDescription.ts +14 -14
  152. package/src/utils/text/formatDate.ts +5 -5
  153. package/src/utils/text/formatLocaleNumber.ts +6 -6
  154. package/src/utils/text/formatPad.ts +12 -12
  155. package/src/utils/text/getNumberFormatted.ts +33 -33
  156. package/src/utils/text/getTranslatedLink.ts +5 -5
  157. package/src/utils/text.ts +19 -19
  158. package/tailwind.config.cjs +8 -8
  159. package/tsconfig.json +28 -28
  160. package/uno-config/index.ts +232 -232
  161. package/uno-config/theme/breakpoints.ts +9 -9
  162. package/uno-config/theme/colors.ts +64 -64
  163. package/uno-config/theme/dimensions.ts +17 -17
  164. package/uno-config/theme/effects.ts +14 -14
  165. package/uno-config/theme/grid.ts +10 -10
  166. package/uno-config/theme/index.ts +28 -28
  167. package/uno-config/theme/shortcuts/buttons.ts +53 -53
  168. package/uno-config/theme/shortcuts/components.ts +92 -92
  169. package/uno-config/theme/shortcuts/index.ts +20 -20
  170. package/uno-config/theme/shortcuts/layout.ts +64 -64
  171. package/uno-config/theme/typography.ts +29 -29
  172. package/uno.config.ts +2 -2
@@ -1,233 +1,233 @@
1
- // uno-config/index.ts
2
- import type { UserConfig, UserShortcuts } from 'unocss'
3
- import { defineConfig } from 'unocss';
4
- import {
5
- transformerDirectives,
6
- transformerVariantGroup,
7
- presetAttributify,
8
- presetIcons,
9
- presetTypography,
10
- presetUno,
11
- presetWebFonts,
12
- } from 'unocss';
13
-
14
- import { shortcuts } from './theme/shortcuts';
15
- import { theme } from './theme';
16
-
17
- // List of peer selectors we want to preserve during build
18
- const peerSelectorClasses = [
19
- // Focus state classes
20
- 'peer-focus:text-blue-light',
21
- 'peer-focus:dark:text-blue-lightest',
22
- 'peer-focus:scale-75',
23
- 'peer-focus:-translate-y-6',
24
- 'peer-focus:-translate-y-4',
25
- 'peer-focus:start-0',
26
-
27
- // Placeholder shown classes
28
- 'peer-placeholder-shown:scale-100',
29
- 'peer-placeholder-shown:translate-y-0',
30
-
31
- // Not placeholder shown classes
32
- 'peer-not-placeholder-shown:scale-75',
33
- 'peer-not-placeholder-shown:-translate-y-6',
34
- 'peer-not-placeholder-shown:-translate-y-4',
35
- ];
36
-
37
- interface CustomConfig extends Partial<UserConfig> {
38
- shortcuts?: UserShortcuts;
39
- theme?: Partial<typeof theme>;
40
- }
41
-
42
- export function createSdsConfig(customConfig: CustomConfig = {}) {
43
- return defineConfig({
44
- transformers: [
45
- transformerDirectives(),
46
- transformerVariantGroup(),
47
- ],
48
- shortcuts: {
49
- ...shortcuts,
50
- ...(customConfig.shortcuts || {})
51
- },
52
- theme: {
53
- ...theme,
54
- ...(customConfig.theme || {})
55
- },
56
- // Enhanced variants to better handle peer selectors
57
- variants: [
58
- // Add specific peer variant support
59
- (matcher) => {
60
- if (!matcher.startsWith('peer-'))
61
- return matcher;
62
-
63
- const peerVariant = matcher.slice(5);
64
- const selectorMap = {
65
- 'focus:': (s) => `.peer:focus ~ ${s}`,
66
- 'hover:': (s) => `.peer:hover ~ ${s}`,
67
- 'placeholder-shown:': (s) => `.peer:placeholder-shown ~ ${s}`,
68
- 'not-placeholder-shown:': (s) => `.peer:not(:placeholder-shown) ~ ${s}`,
69
- };
70
-
71
- // Check for nested variants like 'peer-focus:text-blue'
72
- for (const [key, selectorFn] of Object.entries(selectorMap)) {
73
- if (peerVariant.startsWith(key)) {
74
- return {
75
- matcher: peerVariant.slice(key.length),
76
- selector: selectorFn,
77
- };
78
- }
79
- }
80
-
81
- // Default peer handling
82
- return {
83
- matcher: peerVariant,
84
- selector: (s) => `.peer:${peerVariant} ~ ${s}`,
85
- };
86
- },
87
- ],
88
- // Comprehensive safelist with all needed classes
89
- safelist: [
90
- // Existing safelist items
91
- 'md:grid-cols-product',
92
-
93
- // Base peer class
94
- 'peer',
95
-
96
- // All input component classes from shortcuts
97
- 'input-base',
98
- 'input-label-base',
99
- 'input-placeholder',
100
- 'input-standard',
101
- 'input-filled',
102
- 'input-wrapper-standard',
103
- 'input-wrapper-filled',
104
- 'input-label-standard',
105
- 'input-label-filled',
106
-
107
- // Label state shortcuts
108
- 'input-label-focus-color',
109
- 'input-label-focus-scale',
110
- 'input-label-focus-translate-standard',
111
- 'input-label-focus-translate-filled',
112
- 'input-label-placeholder',
113
- 'input-label-filled-standard',
114
- 'input-label-filled-filled',
115
- 'input-label-standard-state',
116
- 'input-label-filled-state',
117
-
118
- // Input types
119
- 'input-textarea',
120
- 'resize-none',
121
-
122
- // Size variants
123
- 'input-sm',
124
- 'input-md',
125
- 'input-lg',
126
- 'input-label-sm',
127
- 'input-label-md',
128
- 'input-label-lg',
129
-
130
- // Status classes
131
- 'input-error',
132
- 'input-label-error',
133
- 'input-error-message',
134
- 'input-success',
135
- 'input-label-success',
136
- 'input-success-message',
137
-
138
- // Transform related classes
139
- 'origin-top-left',
140
- 'transform-gpu',
141
- 'translate-y-0',
142
- '-translate-y-4',
143
- '-translate-y-6',
144
- 'scale-75',
145
- 'scale-100',
146
-
147
- // Every possible arbitrary selector used
148
- '[&:focus~label]:scale-75',
149
- '[&:focus~label]:-translate-y-4',
150
- '[&:focus~label]:-translate-y-6',
151
- '[&:focus~label]:text-blue-light',
152
- '[&:focus~label]:dark:text-blue-lightest',
153
- '[&:focus~label]:start-0',
154
- '[&:placeholder-shown~label]:scale-100',
155
- '[&:placeholder-shown~label]:translate-y-0',
156
- '[&:not(:placeholder-shown)~label]:scale-75',
157
- '[&:not(:placeholder-shown)~label]:-translate-y-4',
158
- '[&:not(:placeholder-shown)~label]:-translate-y-6',
159
-
160
- // Combinations of selectors
161
- 'peer:focus:text-blue-light',
162
- 'peer:focus:dark:text-blue-lightest',
163
- 'peer:focus:scale-75',
164
- 'peer:focus:-translate-y-4',
165
- 'peer:focus:-translate-y-6',
166
- 'peer:focus:start-0',
167
- 'peer-placeholder-shown:scale-100',
168
- 'peer-placeholder-shown:translate-y-0',
169
- 'peer-not-placeholder-shown:scale-75',
170
- 'peer-not-placeholder-shown:-translate-y-4',
171
- 'peer-not-placeholder-shown:-translate-y-6',
172
-
173
- // With !important for good measure
174
- '[&:focus~label]:!scale-75',
175
- '[&:focus~label]:!-translate-y-4',
176
- '[&:focus~label]:!-translate-y-6',
177
- '[&:not(:placeholder-shown)~label]:!scale-75',
178
- '[&:not(:placeholder-shown)~label]:!-translate-y-4',
179
- '[&:not(:placeholder-shown)~label]:!-translate-y-6',
180
-
181
- // Direct css vars that might be used
182
- '--un-scale-x',
183
- '--un-scale-y',
184
- '--un-translate-y',
185
-
186
- // All peer selectors from the list
187
- ...peerSelectorClasses,
188
- ],
189
- // Custom extractors to ensure peer classes are preserved
190
- extractors: [
191
- {
192
- name: 'vue-astro',
193
- extract({ code }) {
194
- const result = new Set();
195
-
196
- // Extract all peer selectors in the code
197
- const peerRegex = /peer-([a-zA-Z0-9-]+:[a-zA-Z0-9-]+)/g;
198
- const peerMatches = code.match(peerRegex);
199
- if (peerMatches) {
200
- peerMatches.forEach(match => result.add(match));
201
- }
202
-
203
- // Add all known peer selectors
204
- peerSelectorClasses.forEach(cls => result.add(cls));
205
-
206
- return result;
207
- },
208
- },
209
- ],
210
- presets: [
211
- presetUno(),
212
- presetAttributify(),
213
- presetIcons({
214
- scale: 1.2,
215
- warn: true,
216
- prefix: 'i-',
217
- extraProperties: {
218
- 'display': 'inline-block',
219
- 'vertical-align': 'middle',
220
- },
221
- }),
222
- presetTypography(),
223
- presetWebFonts({
224
- provider: 'none',
225
- fonts: theme.fontFamily
226
- })
227
- ],
228
- ...customConfig
229
- });
230
- }
231
-
232
- export * from './theme';
1
+ // uno-config/index.ts
2
+ import type { UserConfig, UserShortcuts } from 'unocss'
3
+ import { defineConfig } from 'unocss';
4
+ import {
5
+ transformerDirectives,
6
+ transformerVariantGroup,
7
+ presetAttributify,
8
+ presetIcons,
9
+ presetTypography,
10
+ presetUno,
11
+ presetWebFonts,
12
+ } from 'unocss';
13
+
14
+ import { shortcuts } from './theme/shortcuts';
15
+ import { theme } from './theme';
16
+
17
+ // List of peer selectors we want to preserve during build
18
+ const peerSelectorClasses = [
19
+ // Focus state classes
20
+ 'peer-focus:text-blue-light',
21
+ 'peer-focus:dark:text-blue-lightest',
22
+ 'peer-focus:scale-75',
23
+ 'peer-focus:-translate-y-6',
24
+ 'peer-focus:-translate-y-4',
25
+ 'peer-focus:start-0',
26
+
27
+ // Placeholder shown classes
28
+ 'peer-placeholder-shown:scale-100',
29
+ 'peer-placeholder-shown:translate-y-0',
30
+
31
+ // Not placeholder shown classes
32
+ 'peer-not-placeholder-shown:scale-75',
33
+ 'peer-not-placeholder-shown:-translate-y-6',
34
+ 'peer-not-placeholder-shown:-translate-y-4',
35
+ ];
36
+
37
+ interface CustomConfig extends Partial<UserConfig> {
38
+ shortcuts?: UserShortcuts;
39
+ theme?: Partial<typeof theme>;
40
+ }
41
+
42
+ export function createSdsConfig(customConfig: CustomConfig = {}) {
43
+ return defineConfig({
44
+ transformers: [
45
+ transformerDirectives(),
46
+ transformerVariantGroup(),
47
+ ],
48
+ shortcuts: {
49
+ ...shortcuts,
50
+ ...(customConfig.shortcuts || {})
51
+ },
52
+ theme: {
53
+ ...theme,
54
+ ...(customConfig.theme || {})
55
+ },
56
+ // Enhanced variants to better handle peer selectors
57
+ variants: [
58
+ // Add specific peer variant support
59
+ (matcher) => {
60
+ if (!matcher.startsWith('peer-'))
61
+ return matcher;
62
+
63
+ const peerVariant = matcher.slice(5);
64
+ const selectorMap = {
65
+ 'focus:': (s) => `.peer:focus ~ ${s}`,
66
+ 'hover:': (s) => `.peer:hover ~ ${s}`,
67
+ 'placeholder-shown:': (s) => `.peer:placeholder-shown ~ ${s}`,
68
+ 'not-placeholder-shown:': (s) => `.peer:not(:placeholder-shown) ~ ${s}`,
69
+ };
70
+
71
+ // Check for nested variants like 'peer-focus:text-blue'
72
+ for (const [key, selectorFn] of Object.entries(selectorMap)) {
73
+ if (peerVariant.startsWith(key)) {
74
+ return {
75
+ matcher: peerVariant.slice(key.length),
76
+ selector: selectorFn,
77
+ };
78
+ }
79
+ }
80
+
81
+ // Default peer handling
82
+ return {
83
+ matcher: peerVariant,
84
+ selector: (s) => `.peer:${peerVariant} ~ ${s}`,
85
+ };
86
+ },
87
+ ],
88
+ // Comprehensive safelist with all needed classes
89
+ safelist: [
90
+ // Existing safelist items
91
+ 'md:grid-cols-product',
92
+
93
+ // Base peer class
94
+ 'peer',
95
+
96
+ // All input component classes from shortcuts
97
+ 'input-base',
98
+ 'input-label-base',
99
+ 'input-placeholder',
100
+ 'input-standard',
101
+ 'input-filled',
102
+ 'input-wrapper-standard',
103
+ 'input-wrapper-filled',
104
+ 'input-label-standard',
105
+ 'input-label-filled',
106
+
107
+ // Label state shortcuts
108
+ 'input-label-focus-color',
109
+ 'input-label-focus-scale',
110
+ 'input-label-focus-translate-standard',
111
+ 'input-label-focus-translate-filled',
112
+ 'input-label-placeholder',
113
+ 'input-label-filled-standard',
114
+ 'input-label-filled-filled',
115
+ 'input-label-standard-state',
116
+ 'input-label-filled-state',
117
+
118
+ // Input types
119
+ 'input-textarea',
120
+ 'resize-none',
121
+
122
+ // Size variants
123
+ 'input-sm',
124
+ 'input-md',
125
+ 'input-lg',
126
+ 'input-label-sm',
127
+ 'input-label-md',
128
+ 'input-label-lg',
129
+
130
+ // Status classes
131
+ 'input-error',
132
+ 'input-label-error',
133
+ 'input-error-message',
134
+ 'input-success',
135
+ 'input-label-success',
136
+ 'input-success-message',
137
+
138
+ // Transform related classes
139
+ 'origin-top-left',
140
+ 'transform-gpu',
141
+ 'translate-y-0',
142
+ '-translate-y-4',
143
+ '-translate-y-6',
144
+ 'scale-75',
145
+ 'scale-100',
146
+
147
+ // Every possible arbitrary selector used
148
+ '[&:focus~label]:scale-75',
149
+ '[&:focus~label]:-translate-y-4',
150
+ '[&:focus~label]:-translate-y-6',
151
+ '[&:focus~label]:text-blue-light',
152
+ '[&:focus~label]:dark:text-blue-lightest',
153
+ '[&:focus~label]:start-0',
154
+ '[&:placeholder-shown~label]:scale-100',
155
+ '[&:placeholder-shown~label]:translate-y-0',
156
+ '[&:not(:placeholder-shown)~label]:scale-75',
157
+ '[&:not(:placeholder-shown)~label]:-translate-y-4',
158
+ '[&:not(:placeholder-shown)~label]:-translate-y-6',
159
+
160
+ // Combinations of selectors
161
+ 'peer:focus:text-blue-light',
162
+ 'peer:focus:dark:text-blue-lightest',
163
+ 'peer:focus:scale-75',
164
+ 'peer:focus:-translate-y-4',
165
+ 'peer:focus:-translate-y-6',
166
+ 'peer:focus:start-0',
167
+ 'peer-placeholder-shown:scale-100',
168
+ 'peer-placeholder-shown:translate-y-0',
169
+ 'peer-not-placeholder-shown:scale-75',
170
+ 'peer-not-placeholder-shown:-translate-y-4',
171
+ 'peer-not-placeholder-shown:-translate-y-6',
172
+
173
+ // With !important for good measure
174
+ '[&:focus~label]:!scale-75',
175
+ '[&:focus~label]:!-translate-y-4',
176
+ '[&:focus~label]:!-translate-y-6',
177
+ '[&:not(:placeholder-shown)~label]:!scale-75',
178
+ '[&:not(:placeholder-shown)~label]:!-translate-y-4',
179
+ '[&:not(:placeholder-shown)~label]:!-translate-y-6',
180
+
181
+ // Direct css vars that might be used
182
+ '--un-scale-x',
183
+ '--un-scale-y',
184
+ '--un-translate-y',
185
+
186
+ // All peer selectors from the list
187
+ ...peerSelectorClasses,
188
+ ],
189
+ // Custom extractors to ensure peer classes are preserved
190
+ extractors: [
191
+ {
192
+ name: 'vue-astro',
193
+ extract({ code }) {
194
+ const result = new Set();
195
+
196
+ // Extract all peer selectors in the code
197
+ const peerRegex = /peer-([a-zA-Z0-9-]+:[a-zA-Z0-9-]+)/g;
198
+ const peerMatches = code.match(peerRegex);
199
+ if (peerMatches) {
200
+ peerMatches.forEach(match => result.add(match));
201
+ }
202
+
203
+ // Add all known peer selectors
204
+ peerSelectorClasses.forEach(cls => result.add(cls));
205
+
206
+ return result;
207
+ },
208
+ },
209
+ ],
210
+ presets: [
211
+ presetUno(),
212
+ presetAttributify(),
213
+ presetIcons({
214
+ scale: 1.2,
215
+ warn: true,
216
+ prefix: 'i-',
217
+ extraProperties: {
218
+ 'display': 'inline-block',
219
+ 'vertical-align': 'middle',
220
+ },
221
+ }),
222
+ presetTypography(),
223
+ presetWebFonts({
224
+ provider: 'none',
225
+ fonts: theme.fontFamily
226
+ })
227
+ ],
228
+ ...customConfig
229
+ });
230
+ }
231
+
232
+ export * from './theme';
233
233
  export * from './theme/shortcuts';
@@ -1,10 +1,10 @@
1
- // theme/breakpoints.ts
2
- export const breakpoints = {
3
- sm: '640px',
4
- md: '768px',
5
- lg: '1024px',
6
- xl: '1280px',
7
- '2xl': '1536px',
8
- '3xl': '1920px',
9
- '4xl': '2400px',
1
+ // theme/breakpoints.ts
2
+ export const breakpoints = {
3
+ sm: '640px',
4
+ md: '768px',
5
+ lg: '1024px',
6
+ xl: '1280px',
7
+ '2xl': '1536px',
8
+ '3xl': '1920px',
9
+ '4xl': '2400px',
10
10
  };
@@ -1,65 +1,65 @@
1
- // theme/colors.ts
2
- export const colors = {
3
- // Brand colors - core identity colors
4
- brand: {
5
- primary: '#0040c5', // Main brand color
6
- secondary: '#00b0f0', // Supporting brand color
7
- },
8
-
9
- // Primary blues - main blue palette
10
- blue: {
11
- ultralight: '#dbeafe',
12
- lightest: '#3b82f6', // Lightest shade
13
- light: '#0069ff',
14
- default: '#005ad7', // Default/base blue
15
- medium: '#02307d',
16
- darker: '#001e50',
17
- darkest: '#000f28', // Darkest shade
18
- wrc: '#0000c8', // Special WRC color
19
- },
20
-
21
- // Secondary colors - accent palette
22
- accent: {
23
- light: '#0099da',
24
- default: '#0087c1', // Default accent
25
- dark: '#006ea6',
26
- darker: '#00437a',
27
- deepBlue: '#0c1a32',
28
- },
29
-
30
- // Neutral colors - grayscale
31
- neutral: {
32
- lightest: '#f3f4f6', // Lightest gray
33
- lighter: '#e5e7eb',
34
- light: '#b5bbc5',
35
- default: '#9ca3af', // Base gray
36
- dark: '#6a767d',
37
- darker: '#4b5563',
38
- },
39
-
40
- // Slate colors - gray-blue palette
41
- slate: {
42
- light: '#64748B',
43
- default: '#475569',
44
- dark: '#334155',
45
- darkest: '#1e293b',
46
- },
47
-
48
- // System colors - functional colors
49
- system: {
50
- success: '#10B981', // Green - success state
51
- warning: '#FBBF24', // Yellow - warning state
52
- error: '#EF4444', // Red - error state
53
- info: '#3B82F6', // Blue - information state
54
- },
55
-
56
- // States - interaction states
57
- state: {
58
- overlay: 'rgb(0 0 0 / 0.06)', // Overlay & Hover state
59
- disabled: 'rgb(0 0 0 / 0.12)', // Disabled state
60
- }
61
- };
62
-
63
- // Export types for TypeScript
64
- export type Colors = typeof colors;
1
+ // theme/colors.ts
2
+ export const colors = {
3
+ // Brand colors - core identity colors
4
+ brand: {
5
+ primary: '#0040c5', // Main brand color
6
+ secondary: '#00b0f0', // Supporting brand color
7
+ },
8
+
9
+ // Primary blues - main blue palette
10
+ blue: {
11
+ ultralight: '#dbeafe',
12
+ lightest: '#3b82f6', // Lightest shade
13
+ light: '#0069ff',
14
+ default: '#005ad7', // Default/base blue
15
+ medium: '#02307d',
16
+ darker: '#001e50',
17
+ darkest: '#000f28', // Darkest shade
18
+ wrc: '#0000c8', // Special WRC color
19
+ },
20
+
21
+ // Secondary colors - accent palette
22
+ accent: {
23
+ light: '#0099da',
24
+ default: '#0087c1', // Default accent
25
+ dark: '#006ea6',
26
+ darker: '#00437a',
27
+ deepBlue: '#0c1a32',
28
+ },
29
+
30
+ // Neutral colors - grayscale
31
+ neutral: {
32
+ lightest: '#f3f4f6', // Lightest gray
33
+ lighter: '#e5e7eb',
34
+ light: '#b5bbc5',
35
+ default: '#9ca3af', // Base gray
36
+ dark: '#6a767d',
37
+ darker: '#4b5563',
38
+ },
39
+
40
+ // Slate colors - gray-blue palette
41
+ slate: {
42
+ light: '#64748B',
43
+ default: '#475569',
44
+ dark: '#334155',
45
+ darkest: '#1e293b',
46
+ },
47
+
48
+ // System colors - functional colors
49
+ system: {
50
+ success: '#10B981', // Green - success state
51
+ warning: '#FBBF24', // Yellow - warning state
52
+ error: '#EF4444', // Red - error state
53
+ info: '#3B82F6', // Blue - information state
54
+ },
55
+
56
+ // States - interaction states
57
+ state: {
58
+ overlay: 'rgb(0 0 0 / 0.06)', // Overlay & Hover state
59
+ disabled: 'rgb(0 0 0 / 0.12)', // Disabled state
60
+ }
61
+ };
62
+
63
+ // Export types for TypeScript
64
+ export type Colors = typeof colors;
65
65
  export type ColorShade = keyof typeof colors;
@@ -1,18 +1,18 @@
1
- // theme/dimensions.ts
2
- export const dimensions = {
3
- height: {
4
- 'tile': '104px',
5
- 'tile-mobile': '78px',
6
- 'sidebar': 'calc(100vh - 5.125rem)',
7
- 'full-mobile': 'calc(var(--vh, 1vh) * 100)',
8
- 'icon': '46px',
9
- },
10
- maxHeight: {
11
- 'icon': '46px',
12
- 'sidebar': 'calc(100vh - 5.125rem)',
13
- },
14
- minHeight: {
15
- 'tile': '104px',
16
- 'tile-mobile': '78px',
17
- }
1
+ // theme/dimensions.ts
2
+ export const dimensions = {
3
+ height: {
4
+ 'tile': '104px',
5
+ 'tile-mobile': '78px',
6
+ 'sidebar': 'calc(100vh - 5.125rem)',
7
+ 'full-mobile': 'calc(var(--vh, 1vh) * 100)',
8
+ 'icon': '46px',
9
+ },
10
+ maxHeight: {
11
+ 'icon': '46px',
12
+ 'sidebar': 'calc(100vh - 5.125rem)',
13
+ },
14
+ minHeight: {
15
+ 'tile': '104px',
16
+ 'tile-mobile': '78px',
17
+ }
18
18
  };