spoko-design-system 0.2.94 → 0.2.96

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 (169) 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 +83 -83
  14. package/dev-dist/sw.js +91 -91
  15. package/dev-dist/workbox-c676b6d3.js +3391 -3391
  16. package/icon.config.ts +224 -224
  17. package/index.ts +62 -62
  18. package/package.json +116 -116
  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 +63 -63
  41. package/src/components/ButtonCopy.vue +36 -36
  42. package/src/components/Card.astro +27 -27
  43. package/src/components/Carousel.astro +26 -26
  44. package/src/components/Category/CategoriesCarousel.astro +101 -101
  45. package/src/components/Category/CategoryDetails.astro +135 -134
  46. package/src/components/Category/CategoryLink.vue +23 -23
  47. package/src/components/Category/CategorySidebarToggler.vue +9 -9
  48. package/src/components/Category/CategoryTile.astro +39 -49
  49. package/src/components/Category/CategoryViewToggler.astro +81 -109
  50. package/src/components/Category/SubCategoryLink.vue +19 -29
  51. package/src/components/CategoryLink.astro +18 -18
  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 +96 -96
  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/Jumbatron.vue +40 -40
  64. package/src/components/LanguageSuggestion.astro +69 -0
  65. package/src/components/LeftSidebar.astro +53 -53
  66. package/src/components/MainColors.vue +23 -23
  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/PostHeader.astro +103 -103
  72. package/src/components/PrCode.vue +141 -141
  73. package/src/components/Product/ProductButton.vue +18 -18
  74. package/src/components/Product/ProductCarousel.astro +35 -35
  75. package/src/components/Product/ProductCodes.vue +174 -174
  76. package/src/components/Product/ProductEngineType.vue +42 -42
  77. package/src/components/Product/ProductImage.astro +40 -40
  78. package/src/components/Product/ProductLink.astro +101 -101
  79. package/src/components/Product/ProductLink.vue +59 -59
  80. package/src/components/Product/ProductLinkInfo.astro +37 -37
  81. package/src/components/Product/ProductNumber.astro +61 -61
  82. package/src/components/ProductCarousel.astro +38 -38
  83. package/src/components/ProductCodes.vue +39 -39
  84. package/src/components/ProductDetailName.vue +52 -52
  85. package/src/components/ProductDetailsList.vue +65 -65
  86. package/src/components/ProductTile.astro +48 -48
  87. package/src/components/Quote.vue +23 -23
  88. package/src/components/ReloadPrompt.astro +50 -50
  89. package/src/components/SlimBanner.vue +72 -72
  90. package/src/components/Table.vue +32 -32
  91. package/src/components/TableOfContents.astro +15 -15
  92. package/src/components/Translations.vue +23 -23
  93. package/src/components/flags/FlagPL.vue +3 -3
  94. package/src/components/flags/FlagUA.vue +2 -2
  95. package/src/components/layout/Container.astro +7 -7
  96. package/src/components/layout/Header.astro +80 -80
  97. package/src/config.ts +56 -56
  98. package/src/design.config.ts +98 -98
  99. package/src/env.d.ts +6 -6
  100. package/src/layouts/Layout.astro +60 -60
  101. package/src/layouts/MainLayout.astro +81 -81
  102. package/src/layouts/partials/FooterCommon.astro +4 -4
  103. package/src/layouts/partials/HeadCommon.astro +44 -44
  104. package/src/layouts/partials/HeadSEO.astro +41 -41
  105. package/src/pages/components/badges.mdx +57 -57
  106. package/src/pages/components/breadcrumbs.mdx +139 -139
  107. package/src/pages/components/buttons.mdx +253 -253
  108. package/src/pages/components/card.mdx +294 -294
  109. package/src/pages/components/carousel.mdx +62 -62
  110. package/src/pages/components/copyright.mdx +42 -42
  111. package/src/pages/components/details-list.mdx +115 -115
  112. package/src/pages/components/features-list.mdx +37 -37
  113. package/src/pages/components/flags.mdx +49 -49
  114. package/src/pages/components/fuck-russia.mdx +39 -39
  115. package/src/pages/components/hand-drive.mdx +38 -38
  116. package/src/pages/components/headline.mdx +152 -152
  117. package/src/pages/components/icons.astro +135 -135
  118. package/src/pages/components/image.mdx +513 -513
  119. package/src/pages/components/input.mdx +45 -45
  120. package/src/pages/components/jumbatron.mdx +95 -95
  121. package/src/pages/components/modal.mdx +64 -64
  122. package/src/pages/components/post-header.mdx +60 -60
  123. package/src/pages/components/pr-code.mdx +65 -65
  124. package/src/pages/components/product-number.mdx +58 -58
  125. package/src/pages/components/product-tile.mdx +51 -51
  126. package/src/pages/components/quote.mdx +33 -33
  127. package/src/pages/components/slimbanner.mdx +35 -35
  128. package/src/pages/components/table.mdx +108 -108
  129. package/src/pages/core/colors.mdx +10 -10
  130. package/src/pages/core/grid.mdx +89 -89
  131. package/src/pages/core/introduction.mdx +77 -77
  132. package/src/pages/core/shadows.astro +20 -20
  133. package/src/pages/core/typography.astro +28 -48
  134. package/src/pages/index.astro +126 -126
  135. package/src/pages/patterns/introduction.mdx +60 -60
  136. package/src/pwa.ts +12 -12
  137. package/src/styles/_variables.scss +70 -70
  138. package/src/styles/base/base.css +184 -184
  139. package/src/styles/base/grid.css +92 -92
  140. package/src/styles/base/typography.css +70 -70
  141. package/src/styles/content.css +73 -73
  142. package/src/styles/main.css +7 -7
  143. package/src/types/Product.ts +31 -31
  144. package/src/types/astro.d.ts +3 -3
  145. package/src/utils/product/getPriceFormatted.ts +15 -15
  146. package/src/utils/product/getProductChecklist.ts +17 -17
  147. package/src/utils/product/useFormatProductNumber.ts +41 -41
  148. package/src/utils/seo/getShorterDescription.ts +14 -14
  149. package/src/utils/text/formatDate.ts +5 -5
  150. package/src/utils/text/formatLocaleNumber.ts +6 -6
  151. package/src/utils/text/formatPad.ts +12 -12
  152. package/src/utils/text/getNumberFormatted.ts +33 -33
  153. package/src/utils/text/getTranslatedLink.ts +5 -5
  154. package/src/utils/text.ts +19 -19
  155. package/tailwind.config.cjs +8 -8
  156. package/tsconfig.json +28 -28
  157. package/uno-config/index.ts +61 -61
  158. package/uno-config/theme/breakpoints.ts +9 -9
  159. package/uno-config/theme/colors.ts +66 -66
  160. package/uno-config/theme/dimensions.ts +17 -17
  161. package/uno-config/theme/effects.ts +14 -14
  162. package/uno-config/theme/grid.ts +10 -10
  163. package/uno-config/theme/index.ts +25 -25
  164. package/uno-config/theme/shortcuts/buttons.ts +38 -38
  165. package/uno-config/theme/shortcuts/components.ts +82 -82
  166. package/uno-config/theme/shortcuts/index.ts +16 -16
  167. package/uno-config/theme/shortcuts/layout.ts +58 -58
  168. package/uno-config/theme/typography.ts +29 -29
  169. package/uno.config.ts +2 -2
package/tsconfig.json CHANGED
@@ -1,29 +1,29 @@
1
- {
2
- "include": ["env.d.ts", "src/**/*", "src/**/*.vue", "src/**/*.astro", "src/**/*.d.ts", "*.ts"],
3
- "compilerOptions": {
4
- "baseUrl": "src",
5
-
6
- // Enable JSON imports.
7
- "resolveJsonModule": true,
8
-
9
- // Enable stricter transpilation for better output.
10
- "isolatedModules": true,
11
-
12
- // Astro will directly run your TypeScript code, no transpilation needed.
13
- "noEmit": true,
14
-
15
- "target": "esnext",
16
- "useDefineForClassFields": true,
17
- "module": "esnext",
18
- "moduleResolution": "node",
19
- "jsx": "preserve",
20
- "allowJs": true,
21
- "types": ["vite/client", "vitest", "@vue/runtime-dom", "@astrojs/ts", "@astrojs/ts-plugin", "unplugin-vue-macros/macros-global", "unplugin-icons/types/astro"],
22
- "paths": {
23
- "@components/*": ["components/*"],
24
- "@utils/*": ["utils/*"],
25
- "@types/*": ["types/*"]
26
- }
27
- },
28
- "exclude": ["dist", "node_modules"]
1
+ {
2
+ "include": ["env.d.ts", "src/**/*", "src/**/*.vue", "src/**/*.astro", "src/**/*.d.ts", "*.ts"],
3
+ "compilerOptions": {
4
+ "baseUrl": "src",
5
+
6
+ // Enable JSON imports.
7
+ "resolveJsonModule": true,
8
+
9
+ // Enable stricter transpilation for better output.
10
+ "isolatedModules": true,
11
+
12
+ // Astro will directly run your TypeScript code, no transpilation needed.
13
+ "noEmit": true,
14
+
15
+ "target": "esnext",
16
+ "useDefineForClassFields": true,
17
+ "module": "esnext",
18
+ "moduleResolution": "node",
19
+ "jsx": "preserve",
20
+ "allowJs": true,
21
+ "types": ["vite/client", "vitest", "@vue/runtime-dom", "@astrojs/ts", "@astrojs/ts-plugin", "unplugin-vue-macros/macros-global", "unplugin-icons/types/astro"],
22
+ "paths": {
23
+ "@components/*": ["components/*"],
24
+ "@utils/*": ["utils/*"],
25
+ "@types/*": ["types/*"]
26
+ }
27
+ },
28
+ "exclude": ["dist", "node_modules"]
29
29
  }
@@ -1,62 +1,62 @@
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
- interface CustomConfig extends Partial<UserConfig> {
18
- shortcuts?: UserShortcuts;
19
- theme?: Partial<typeof theme>;
20
- }
21
-
22
- export function createSdsConfig(customConfig: CustomConfig = {}) {
23
- return defineConfig({
24
- transformers: [
25
- transformerDirectives(),
26
- transformerVariantGroup(),
27
- ],
28
- shortcuts: {
29
- ...shortcuts,
30
- ...(customConfig.shortcuts || {})
31
- },
32
- theme: {
33
- ...theme,
34
- ...(customConfig.theme || {})
35
- },
36
- safelist: [
37
- 'md:grid-cols-product'
38
- ],
39
- presets: [
40
- presetUno(),
41
- presetAttributify(),
42
- presetIcons({
43
- scale: 1.2,
44
- warn: true,
45
- prefix: 'i-',
46
- extraProperties: {
47
- 'display': 'inline-block',
48
- 'vertical-align': 'middle',
49
- },
50
- }),
51
- presetTypography(),
52
- presetWebFonts({
53
- provider: 'none',
54
- fonts: theme.fontFamily
55
- })
56
- ],
57
- ...customConfig
58
- });
59
- }
60
-
61
- 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
+ interface CustomConfig extends Partial<UserConfig> {
18
+ shortcuts?: UserShortcuts;
19
+ theme?: Partial<typeof theme>;
20
+ }
21
+
22
+ export function createSdsConfig(customConfig: CustomConfig = {}) {
23
+ return defineConfig({
24
+ transformers: [
25
+ transformerDirectives(),
26
+ transformerVariantGroup(),
27
+ ],
28
+ shortcuts: {
29
+ ...shortcuts,
30
+ ...(customConfig.shortcuts || {})
31
+ },
32
+ theme: {
33
+ ...theme,
34
+ ...(customConfig.theme || {})
35
+ },
36
+ safelist: [
37
+ 'md:grid-cols-product'
38
+ ],
39
+ presets: [
40
+ presetUno(),
41
+ presetAttributify(),
42
+ presetIcons({
43
+ scale: 1.2,
44
+ warn: true,
45
+ prefix: 'i-',
46
+ extraProperties: {
47
+ 'display': 'inline-block',
48
+ 'vertical-align': 'middle',
49
+ },
50
+ }),
51
+ presetTypography(),
52
+ presetWebFonts({
53
+ provider: 'none',
54
+ fonts: theme.fontFamily
55
+ })
56
+ ],
57
+ ...customConfig
58
+ });
59
+ }
60
+
61
+ export * from './theme';
62
62
  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,67 +1,67 @@
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
- lightest: '#00b0f0',
24
- light: '#0099da',
25
- default: '#0087c1', // Default accent
26
- dark: '#006ea6',
27
- darker: '#00437a',
28
- deepBlue: '#0c1a32',
29
- },
30
-
31
- // Neutral colors - grayscale
32
- neutral: {
33
- lightest: '#f3f4f6', // Lightest gray
34
- lighter: '#e5e7eb',
35
- light: '#b5bbc5',
36
- default: '#9ca3af', // Base gray
37
- dark: '#6a767d',
38
- darker: '#4b5563',
39
- black: '#000000', // Pure black
40
- },
41
-
42
- // Slate colors - gray-blue palette
43
- slate: {
44
- light: '#64748B',
45
- default: '#475569',
46
- dark: '#334155',
47
- darkest: '#1e293b',
48
- },
49
-
50
- // System colors - functional colors
51
- system: {
52
- success: '#10B981', // Green - success state
53
- warning: '#FBBF24', // Yellow - warning state
54
- error: '#EF4444', // Red - error state
55
- info: '#3B82F6', // Blue - information state
56
- },
57
-
58
- // States - interaction states
59
- state: {
60
- overlay: 'rgb(0 0 0 / 0.06)', // Overlay & Hover state
61
- disabled: 'rgb(0 0 0 / 0.12)', // Disabled state
62
- }
63
- };
64
-
65
- // Export types for TypeScript
66
- 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
+ lightest: '#00b0f0',
24
+ light: '#0099da',
25
+ default: '#0087c1', // Default accent
26
+ dark: '#006ea6',
27
+ darker: '#00437a',
28
+ deepBlue: '#0c1a32',
29
+ },
30
+
31
+ // Neutral colors - grayscale
32
+ neutral: {
33
+ lightest: '#f3f4f6', // Lightest gray
34
+ lighter: '#e5e7eb',
35
+ light: '#b5bbc5',
36
+ default: '#9ca3af', // Base gray
37
+ dark: '#6a767d',
38
+ darker: '#4b5563',
39
+ black: '#000000', // Pure black
40
+ },
41
+
42
+ // Slate colors - gray-blue palette
43
+ slate: {
44
+ light: '#64748B',
45
+ default: '#475569',
46
+ dark: '#334155',
47
+ darkest: '#1e293b',
48
+ },
49
+
50
+ // System colors - functional colors
51
+ system: {
52
+ success: '#10B981', // Green - success state
53
+ warning: '#FBBF24', // Yellow - warning state
54
+ error: '#EF4444', // Red - error state
55
+ info: '#3B82F6', // Blue - information state
56
+ },
57
+
58
+ // States - interaction states
59
+ state: {
60
+ overlay: 'rgb(0 0 0 / 0.06)', // Overlay & Hover state
61
+ disabled: 'rgb(0 0 0 / 0.12)', // Disabled state
62
+ }
63
+ };
64
+
65
+ // Export types for TypeScript
66
+ export type Colors = typeof colors;
67
67
  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
  };
@@ -1,15 +1,15 @@
1
- // theme/effects.ts
2
- export const effects = {
3
- filter: {
4
- blur: 'blur(5px)',
5
- },
6
- backgroundSize: {
7
- full: '100% 100%',
8
- },
9
- aspectRatio: {
10
- '4/3': '4 / 3',
11
- },
12
- cursor: {
13
- 'zoom-in': 'zoom-in',
14
- },
1
+ // theme/effects.ts
2
+ export const effects = {
3
+ filter: {
4
+ blur: 'blur(5px)',
5
+ },
6
+ backgroundSize: {
7
+ full: '100% 100%',
8
+ },
9
+ aspectRatio: {
10
+ '4/3': '4 / 3',
11
+ },
12
+ cursor: {
13
+ 'zoom-in': 'zoom-in',
14
+ },
15
15
  };
@@ -1,11 +1,11 @@
1
- // theme/grid.ts
2
- export const gridTemplates = {
3
- columns: {
4
- 16: 'repeat(16, minmax(0, 1fr))',
5
- product: '15rem 20rem minmax(15rem, 1fr)',
6
- productGrid: '15rem minmax(20rem, 1fr)',
7
- productGalleryDesktop: 'calc(100% - 14% - 0.9375rem) 14%',
8
- replacement: '6.25rem 12rem auto',
9
- 'details-desktop': '12.5rem calc(100% - 12.5rem - 1rem)'
10
- }
1
+ // theme/grid.ts
2
+ export const gridTemplates = {
3
+ columns: {
4
+ 16: 'repeat(16, minmax(0, 1fr))',
5
+ product: '15rem 20rem minmax(15rem, 1fr)',
6
+ productGrid: '15rem minmax(20rem, 1fr)',
7
+ productGalleryDesktop: 'calc(100% - 14% - 0.9375rem) 14%',
8
+ replacement: '6.25rem 12rem auto',
9
+ 'details-desktop': '12.5rem calc(100% - 12.5rem - 1rem)'
10
+ }
11
11
  };
@@ -1,26 +1,26 @@
1
- // uno-config/theme/index.ts
2
- import { colors } from './colors';
3
- import { typography } from './typography';
4
- import { breakpoints } from './breakpoints';
5
- import { dimensions } from './dimensions';
6
- import { effects } from './effects';
7
- import { gridTemplates } from './grid';
8
-
9
- export const theme = {
10
- colors,
11
- ...typography,
12
- ...dimensions,
13
- ...effects,
14
- gridTemplateColumn: gridTemplates.columns,
15
- breakpoints,
16
- screens: breakpoints,
17
- };
18
-
19
- export {
20
- colors,
21
- typography,
22
- breakpoints,
23
- dimensions,
24
- effects,
25
- gridTemplates,
1
+ // uno-config/theme/index.ts
2
+ import { colors } from './colors';
3
+ import { typography } from './typography';
4
+ import { breakpoints } from './breakpoints';
5
+ import { dimensions } from './dimensions';
6
+ import { effects } from './effects';
7
+ import { gridTemplates } from './grid';
8
+
9
+ export const theme = {
10
+ colors,
11
+ ...typography,
12
+ ...dimensions,
13
+ ...effects,
14
+ gridTemplateColumn: gridTemplates.columns,
15
+ breakpoints,
16
+ screens: breakpoints,
17
+ };
18
+
19
+ export {
20
+ colors,
21
+ typography,
22
+ breakpoints,
23
+ dimensions,
24
+ effects,
25
+ gridTemplates,
26
26
  };
@@ -1,39 +1,39 @@
1
- // shortcuts/buttons.ts
2
- export const buttonShortcuts = [
3
-
4
- ['btn', 'px-4 py-1 rounded inline-block bg-teal-600 text-white cursor-pointer hover:bg-teal-700 disabled:cursor-default disabled:bg-gray-600 disabled:opacity-50'],
5
- ['icon-btn', 'text-[0.9em] inline-block cursor-pointer select-none opacity-75 transition duration-200 ease-in-out hover:(opacity-100 text-teal-600)'],
6
-
7
- // Primary buttons
8
- ['btn-primary', 'bg-accent-lightest border border-transparent hover:bg-accent-light inline-flex items-center justify-center shadow text-base text-blue-darker'],
9
- ['btn-primary-outline', 'border-accent-light border font-medium inline-flex items-center justify-center shadow text-base text-accent-default transition-all hover:(bg-accent-light text-white)'],
10
-
11
- // Secondary buttons
12
- ['btn-secondary', 'bg-neutral-dark border border-transparent hover:bg-neutral-darker inline-flex items-center justify-center shadow text-base text-white'],
13
- ['btn-secondary-outline', 'border-neutral-dark border text-neutral-dark font-medium inline-flex items-center justify-center shadow text-base hover:(text-white bg-neutral-dark)'],
14
-
15
- // Tertiary buttons
16
- ['btn-tertiary', 'inline-flex border border-transparent items-center font-medium text-center text-white bg-blue-darker hover:bg-accent-darker focus:ring-4 focus:outline-none focus:ring-blue-light'],
17
- ['btn-tertiary-outline', 'inline-flex border items-center font-medium text-center text-blue-darker border-blue-darker transition-colors focus:(ring-2 outline-none ring-blue-light)'],
18
-
19
- // Utility buttons
20
- ['btn-text', 'text-neutral-dark border border-transparent hover:underline transition-all'],
21
- ['btn-tag', 'bg-blue-ultralight text-blue-darker font-medium mr-2 dark:bg-neutral-darker dark:text-blue-light border border-blue-default hover:border-blue-medium justify-center'],
22
-
23
- // Size variants
24
- ['btn-normal', 'md:px-10 md:py-2 md:text-lg px-8 py-3 whitespace-nowrap'],
25
- ['btn-sm', 'px-6 py-2 text-sm whitespace-nowrap'],
26
- ['btn-xs', 'px-4 py-1 text-sm whitespace-nowrap'],
27
-
28
- // Hover variants
29
- ['btn-white-hover', 'hover:(text-blue-darker bg-white border-blue-darker)'],
30
- ['btn-light-hover', 'hover:(text-blue-darker bg-accent-lightest border-accent-lightest)'],
31
- ['btn-medium-hover', 'hover:(text-white bg-brand-primary border-brand-primary)'],
32
- ['btn-dark-hover', 'hover:(bg-blue-darker text-white border-blue-darker)'],
33
-
34
- ['btn-copy', 'leading-none opacity-10 hover:opacity-80 ml-auto w-6 h-6 -right-7 sm:(h-4 w-4 -right-5) absolute'],
35
- ['btn-copy-text', 'shadow-sm py-0.5 px-1 bg-gray-100 -ml-1 -mt-4 text-xxs whitespace-nowrap'],
36
-
37
- ['btn-prcode', 'relative inline-block text-center leading-none px-1 py-0.5 mr-1 cursor-pointer font-mono border-solid border-1 border-gray-200 select-none text-gray-500 last:mr-0 not-last:mr-2 not-last:after:content-[+] after:(text-blue-700 absolute w-4 pl-0.5)']
38
-
1
+ // shortcuts/buttons.ts
2
+ export const buttonShortcuts = [
3
+
4
+ ['btn', 'px-4 py-1 rounded inline-block bg-teal-600 text-white cursor-pointer hover:bg-teal-700 disabled:cursor-default disabled:bg-gray-600 disabled:opacity-50'],
5
+ ['icon-btn', 'text-[0.9em] inline-block cursor-pointer select-none opacity-75 transition duration-200 ease-in-out hover:(opacity-100 text-teal-600)'],
6
+
7
+ // Primary buttons
8
+ ['btn-primary', 'bg-accent-lightest border border-transparent hover:bg-accent-light inline-flex items-center justify-center shadow text-base text-blue-darker'],
9
+ ['btn-primary-outline', 'border-accent-light border font-medium inline-flex items-center justify-center shadow text-base text-accent-default transition-all hover:(bg-accent-light text-white)'],
10
+
11
+ // Secondary buttons
12
+ ['btn-secondary', 'bg-neutral-dark border border-transparent hover:bg-neutral-darker inline-flex items-center justify-center shadow text-base text-white'],
13
+ ['btn-secondary-outline', 'border-neutral-dark border text-neutral-dark font-medium inline-flex items-center justify-center shadow text-base hover:(text-white bg-neutral-dark)'],
14
+
15
+ // Tertiary buttons
16
+ ['btn-tertiary', 'inline-flex border border-transparent items-center font-medium text-center text-white bg-blue-darker hover:bg-accent-darker focus:ring-4 focus:outline-none focus:ring-blue-light'],
17
+ ['btn-tertiary-outline', 'inline-flex border items-center font-medium text-center text-blue-darker border-blue-darker transition-colors focus:(ring-2 outline-none ring-blue-light)'],
18
+
19
+ // Utility buttons
20
+ ['btn-text', 'text-neutral-dark border border-transparent hover:underline transition-all'],
21
+ ['btn-tag', 'bg-blue-ultralight text-blue-darker font-medium mr-2 dark:bg-neutral-darker dark:text-blue-light border border-blue-default hover:border-blue-medium justify-center'],
22
+
23
+ // Size variants
24
+ ['btn-normal', 'md:px-10 md:py-2 md:text-lg px-8 py-3 whitespace-nowrap'],
25
+ ['btn-sm', 'px-6 py-2 text-sm whitespace-nowrap'],
26
+ ['btn-xs', 'px-4 py-1 text-sm whitespace-nowrap'],
27
+
28
+ // Hover variants
29
+ ['btn-white-hover', 'hover:(text-blue-darker bg-white border-blue-darker)'],
30
+ ['btn-light-hover', 'hover:(text-blue-darker bg-accent-lightest border-accent-lightest)'],
31
+ ['btn-medium-hover', 'hover:(text-white bg-brand-primary border-brand-primary)'],
32
+ ['btn-dark-hover', 'hover:(bg-blue-darker text-white border-blue-darker)'],
33
+
34
+ ['btn-copy', 'leading-none opacity-10 hover:opacity-80 ml-auto w-6 h-6 -right-7 sm:(h-4 w-4 -right-5) absolute'],
35
+ ['btn-copy-text', 'shadow-sm py-0.5 px-1 bg-gray-100 -ml-1 -mt-4 text-xxs whitespace-nowrap'],
36
+
37
+ ['btn-prcode', 'relative inline-block text-center leading-none px-1 py-0.5 mr-1 cursor-pointer font-mono border-solid border-1 border-gray-200 select-none text-gray-500 last:mr-0 not-last:mr-2 not-last:after:content-[+] after:(text-blue-700 absolute w-4 pl-0.5)']
38
+
39
39
  ];