spoko-design-system 0.3.1 → 0.3.2

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 (168) 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 +273 -273
  17. package/index.ts +62 -62
  18. package/package.json +119 -119
  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 -135
  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 +38 -38
  49. package/src/components/Category/CategoryViewToggler.astro +80 -80
  50. package/src/components/Category/SubCategoryLink.vue +19 -19
  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/LeftSidebar.astro +53 -53
  65. package/src/components/MainColors.vue +22 -22
  66. package/src/components/MainInput.vue +15 -15
  67. package/src/components/Modal.astro +27 -27
  68. package/src/components/PageContent.astro +5 -5
  69. package/src/components/PartNumber.vue +27 -27
  70. package/src/components/PostHeader.astro +103 -103
  71. package/src/components/PrCode.vue +141 -141
  72. package/src/components/Product/ProductButton.vue +18 -18
  73. package/src/components/Product/ProductCarousel.astro +35 -35
  74. package/src/components/Product/ProductCodes.vue +174 -174
  75. package/src/components/Product/ProductEngineType.vue +42 -42
  76. package/src/components/Product/ProductImage.astro +40 -40
  77. package/src/components/Product/ProductLink.astro +101 -101
  78. package/src/components/Product/ProductLink.vue +59 -59
  79. package/src/components/Product/ProductLinkInfo.astro +37 -37
  80. package/src/components/Product/ProductNumber.astro +61 -61
  81. package/src/components/ProductCarousel.astro +38 -38
  82. package/src/components/ProductCodes.vue +39 -39
  83. package/src/components/ProductDetailName.vue +52 -52
  84. package/src/components/ProductDetailsList.vue +65 -65
  85. package/src/components/ProductTile.astro +48 -48
  86. package/src/components/Quote.vue +23 -23
  87. package/src/components/ReloadPrompt.astro +50 -50
  88. package/src/components/SlimBanner.vue +72 -72
  89. package/src/components/Table.vue +32 -32
  90. package/src/components/TableOfContents.astro +15 -15
  91. package/src/components/Translations.vue +23 -23
  92. package/src/components/flags/FlagPL.vue +3 -3
  93. package/src/components/flags/FlagUA.vue +2 -2
  94. package/src/components/layout/Container.astro +7 -7
  95. package/src/components/layout/Header.astro +80 -80
  96. package/src/config.ts +56 -56
  97. package/src/design.config.ts +98 -98
  98. package/src/env.d.ts +6 -6
  99. package/src/layouts/Layout.astro +60 -60
  100. package/src/layouts/MainLayout.astro +81 -81
  101. package/src/layouts/partials/FooterCommon.astro +4 -4
  102. package/src/layouts/partials/HeadCommon.astro +44 -44
  103. package/src/layouts/partials/HeadSEO.astro +41 -41
  104. package/src/pages/components/badges.mdx +57 -57
  105. package/src/pages/components/breadcrumbs.mdx +139 -139
  106. package/src/pages/components/buttons.mdx +253 -253
  107. package/src/pages/components/card.mdx +294 -294
  108. package/src/pages/components/carousel.mdx +62 -62
  109. package/src/pages/components/copyright.mdx +42 -42
  110. package/src/pages/components/details-list.mdx +115 -115
  111. package/src/pages/components/features-list.mdx +37 -37
  112. package/src/pages/components/flags.mdx +49 -49
  113. package/src/pages/components/fuck-russia.mdx +39 -39
  114. package/src/pages/components/hand-drive.mdx +38 -38
  115. package/src/pages/components/headline.mdx +152 -152
  116. package/src/pages/components/icons.astro +135 -135
  117. package/src/pages/components/image.mdx +513 -513
  118. package/src/pages/components/input.mdx +45 -45
  119. package/src/pages/components/jumbatron.mdx +95 -95
  120. package/src/pages/components/modal.mdx +64 -64
  121. package/src/pages/components/post-header.mdx +60 -60
  122. package/src/pages/components/pr-code.mdx +65 -65
  123. package/src/pages/components/product-number.mdx +58 -58
  124. package/src/pages/components/product-tile.mdx +51 -51
  125. package/src/pages/components/quote.mdx +33 -33
  126. package/src/pages/components/slimbanner.mdx +35 -35
  127. package/src/pages/components/table.mdx +108 -108
  128. package/src/pages/core/colors.mdx +10 -10
  129. package/src/pages/core/grid.mdx +89 -89
  130. package/src/pages/core/introduction.mdx +77 -77
  131. package/src/pages/core/shadows.astro +20 -20
  132. package/src/pages/core/typography.astro +49 -49
  133. package/src/pages/index.astro +126 -126
  134. package/src/pages/patterns/introduction.mdx +60 -60
  135. package/src/pwa.ts +12 -12
  136. package/src/styles/_variables.scss +70 -70
  137. package/src/styles/base/base.css +184 -184
  138. package/src/styles/base/grid.css +92 -92
  139. package/src/styles/base/typography.css +70 -70
  140. package/src/styles/content.css +73 -73
  141. package/src/styles/main.css +7 -7
  142. package/src/types/Product.ts +31 -31
  143. package/src/types/astro.d.ts +3 -3
  144. package/src/utils/product/getPriceFormatted.ts +15 -15
  145. package/src/utils/product/getProductChecklist.ts +17 -17
  146. package/src/utils/product/useFormatProductNumber.ts +41 -41
  147. package/src/utils/seo/getShorterDescription.ts +14 -14
  148. package/src/utils/text/formatDate.ts +5 -5
  149. package/src/utils/text/formatLocaleNumber.ts +6 -6
  150. package/src/utils/text/formatPad.ts +12 -12
  151. package/src/utils/text/getNumberFormatted.ts +33 -33
  152. package/src/utils/text/getTranslatedLink.ts +5 -5
  153. package/src/utils/text.ts +19 -19
  154. package/tailwind.config.cjs +8 -8
  155. package/tsconfig.json +28 -28
  156. package/uno-config/index.ts +61 -61
  157. package/uno-config/theme/breakpoints.ts +9 -9
  158. package/uno-config/theme/colors.ts +66 -66
  159. package/uno-config/theme/dimensions.ts +17 -17
  160. package/uno-config/theme/effects.ts +14 -14
  161. package/uno-config/theme/grid.ts +10 -10
  162. package/uno-config/theme/index.ts +25 -25
  163. package/uno-config/theme/shortcuts/buttons.ts +41 -41
  164. package/uno-config/theme/shortcuts/components.ts +92 -91
  165. package/uno-config/theme/shortcuts/index.ts +16 -16
  166. package/uno-config/theme/shortcuts/layout.ts +64 -64
  167. package/uno-config/theme/typography.ts +29 -29
  168. 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,42 +1,42 @@
1
- // shortcuts/buttons.ts
2
- import { BUTTON_STYLES, TRANSITIONS, LAYOUT, COLORS } from './constants'
3
-
4
- const { base, sizes, variants, hover } = BUTTON_STYLES
5
-
6
- export const buttonShortcuts = [
7
- // Base buttons
8
- ['btn', `px-4 py-1 rounded inline-block bg-teal-600 text-white cursor-pointer hover:bg-teal-700 disabled:(cursor-default bg-gray-600 opacity-50)`],
9
- ['icon-btn', `text-[0.9em] inline-block cursor-pointer select-none opacity-75 ${TRANSITIONS.base} hover:(opacity-100 text-teal-600)`],
10
-
11
- // Primary buttons
12
- ['btn-primary', `${base.layout} ${base.text} ${variants.primary.solid}`],
13
- ['btn-primary-outline', `${base.layout} ${base.text} ${variants.primary.outline} ${TRANSITIONS.base}`],
14
-
15
- // Secondary buttons
16
- ['btn-secondary', `${base.layout} ${base.text} ${variants.secondary.solid}`],
17
- ['btn-secondary-outline', `${base.layout} ${base.text} ${variants.secondary.outline}`],
18
-
19
- // Tertiary buttons
20
- ['btn-tertiary', `${base.layout} ${base.text} ${variants.tertiary.solid}`],
21
- ['btn-tertiary-outline', `${base.layout} border ${base.text} ${variants.tertiary.outline} ${TRANSITIONS.base}`],
22
-
23
- // Utility buttons
24
- ['btn-text', `text-neutral-dark border border-transparent hover:underline ${TRANSITIONS.base}`],
25
- ['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 ${LAYOUT.flex.center}`],
26
-
27
- // Size variants
28
- ['btn-normal', sizes.normal],
29
- ['btn-sm', sizes.sm],
30
- ['btn-xs', sizes.xs],
31
-
32
- // Hover variants
33
- ['btn-white-hover', hover.white],
34
- ['btn-light-hover', hover.light],
35
- ['btn-medium-hover', hover.medium],
36
- ['btn-dark-hover', hover.dark],
37
-
38
- // Special buttons
39
- ['btn-copy', `leading-none opacity-10 hover:opacity-80 ml-auto w-6 h-6 -right-7 sm:(h-4 w-4 -right-5) ${LAYOUT.position.absolute}`],
40
- ['btn-copy-text', 'shadow-sm py-0.5 px-1 bg-gray-100 -ml-1 -mt-4 text-xxs whitespace-nowrap'],
41
- ['btn-prcode', `${LAYOUT.position.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-darker ${LAYOUT.position.absolute} w-4 pl-0.5)`]
1
+ // shortcuts/buttons.ts
2
+ import { BUTTON_STYLES, TRANSITIONS, LAYOUT, COLORS } from './constants'
3
+
4
+ const { base, sizes, variants, hover } = BUTTON_STYLES
5
+
6
+ export const buttonShortcuts = [
7
+ // Base buttons
8
+ ['btn', `px-4 py-1 rounded inline-block bg-teal-600 text-white cursor-pointer hover:bg-teal-700 disabled:(cursor-default bg-gray-600 opacity-50)`],
9
+ ['icon-btn', `text-[0.9em] inline-block cursor-pointer select-none opacity-75 ${TRANSITIONS.base} hover:(opacity-100 text-teal-600)`],
10
+
11
+ // Primary buttons
12
+ ['btn-primary', `${base.layout} ${base.text} ${variants.primary.solid}`],
13
+ ['btn-primary-outline', `${base.layout} ${base.text} ${variants.primary.outline} ${TRANSITIONS.base}`],
14
+
15
+ // Secondary buttons
16
+ ['btn-secondary', `${base.layout} ${base.text} ${variants.secondary.solid}`],
17
+ ['btn-secondary-outline', `${base.layout} ${base.text} ${variants.secondary.outline}`],
18
+
19
+ // Tertiary buttons
20
+ ['btn-tertiary', `${base.layout} ${base.text} ${variants.tertiary.solid}`],
21
+ ['btn-tertiary-outline', `${base.layout} border ${base.text} ${variants.tertiary.outline} ${TRANSITIONS.base}`],
22
+
23
+ // Utility buttons
24
+ ['btn-text', `text-neutral-dark border border-transparent hover:underline ${TRANSITIONS.base}`],
25
+ ['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 ${LAYOUT.flex.center}`],
26
+
27
+ // Size variants
28
+ ['btn-normal', sizes.normal],
29
+ ['btn-sm', sizes.sm],
30
+ ['btn-xs', sizes.xs],
31
+
32
+ // Hover variants
33
+ ['btn-white-hover', hover.white],
34
+ ['btn-light-hover', hover.light],
35
+ ['btn-medium-hover', hover.medium],
36
+ ['btn-dark-hover', hover.dark],
37
+
38
+ // Special buttons
39
+ ['btn-copy', `leading-none opacity-10 hover:opacity-80 ml-auto w-6 h-6 -right-7 sm:(h-4 w-4 -right-5) ${LAYOUT.position.absolute}`],
40
+ ['btn-copy-text', 'shadow-sm py-0.5 px-1 bg-gray-100 -ml-1 -mt-4 text-xxs whitespace-nowrap'],
41
+ ['btn-prcode', `${LAYOUT.position.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-darker ${LAYOUT.position.absolute} w-4 pl-0.5)`]
42
42
  ];