spoko-design-system 0.2.95 → 0.2.97
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.
- package/.astro/settings.json +4 -4
- package/.github/dependabot.yml +11 -11
- package/.github/todo.yml +3 -3
- package/.github/workflows/deploy.yml +39 -39
- package/.stackblitzrc +5 -5
- package/.vscode/extensions.json +5 -5
- package/.vscode/launch.json +11 -11
- package/.vscode/settings.json +5 -5
- package/LICENSE +21 -21
- package/README.md +114 -114
- package/astro-i18next.config.mjs +17 -17
- package/astro-i18next.config.ts +10 -10
- package/astro.config.mjs +83 -83
- package/dev-dist/sw.js +91 -91
- package/dev-dist/workbox-c676b6d3.js +3391 -3391
- package/icon.config.ts +224 -224
- package/index.ts +62 -62
- package/package.json +116 -116
- package/public/fonts/lg.svg +53 -53
- package/public/fonts/vwhead-bold-demo.html +549 -549
- package/public/fonts/vwhead-regular-demo.html +549 -549
- package/public/fonts/vwtext-bold-demo.html +549 -549
- package/public/fonts/vwtext-regular-demo.html +549 -549
- package/public/github.svg +3 -3
- package/public/grid_dot.svg +4 -4
- package/public/linkedin.svg +44 -44
- package/public/locales/en/translation.json +8 -8
- package/public/locales/pl/translation.json +8 -8
- package/public/make-scrollable-code-focusable.js +3 -3
- package/public/pagefind.yml +3 -3
- package/public/polo.blue.svg +29 -29
- package/public/spoko.space.svg +71 -71
- package/public/twitter.svg +46 -46
- package/renovate.json +6 -6
- package/sandbox.config.json +11 -11
- package/src/MyComponent.astro +8 -8
- package/src/components/Badge.vue +19 -19
- package/src/components/Badges.vue +21 -21
- package/src/components/Breadcrumbs.vue +107 -107
- package/src/components/Button.vue +63 -63
- package/src/components/ButtonCopy.vue +36 -36
- package/src/components/Card.astro +27 -27
- package/src/components/Carousel.astro +26 -26
- package/src/components/Category/CategoriesCarousel.astro +101 -101
- package/src/components/Category/CategoryDetails.astro +135 -134
- package/src/components/Category/CategoryLink.vue +23 -23
- package/src/components/Category/CategorySidebarToggler.vue +9 -9
- package/src/components/Category/CategoryTile.astro +39 -49
- package/src/components/Category/CategoryViewToggler.astro +81 -109
- package/src/components/Category/SubCategoryLink.vue +19 -29
- package/src/components/CategoryLink.astro +18 -18
- package/src/components/Copyright.astro +12 -12
- package/src/components/Date.astro +7 -7
- package/src/components/Faq.astro +33 -33
- package/src/components/FaqItem.astro +96 -96
- package/src/components/FeaturesList.vue +41 -41
- package/src/components/FuckRussia.vue +62 -62
- package/src/components/HandDrive.astro +29 -29
- package/src/components/Header/Header.astro +210 -210
- package/src/components/Header/SkipToContent.astro +1 -1
- package/src/components/Headline.vue +48 -48
- package/src/components/Image.astro +30 -30
- package/src/components/Jumbatron.vue +40 -40
- package/src/components/LanguageSuggestion.astro +69 -0
- package/src/components/LeftSidebar.astro +53 -53
- package/src/components/MainColors.vue +23 -23
- package/src/components/MainInput.vue +15 -15
- package/src/components/Modal.astro +27 -27
- package/src/components/PageContent.astro +5 -5
- package/src/components/PartNumber.vue +27 -27
- package/src/components/PostHeader.astro +103 -103
- package/src/components/PrCode.vue +141 -141
- package/src/components/Product/ProductButton.vue +18 -18
- package/src/components/Product/ProductCarousel.astro +35 -35
- package/src/components/Product/ProductCodes.vue +174 -174
- package/src/components/Product/ProductEngineType.vue +42 -42
- package/src/components/Product/ProductImage.astro +40 -40
- package/src/components/Product/ProductLink.astro +101 -101
- package/src/components/Product/ProductLink.vue +59 -59
- package/src/components/Product/ProductLinkInfo.astro +37 -37
- package/src/components/Product/ProductNumber.astro +61 -61
- package/src/components/ProductCarousel.astro +38 -38
- package/src/components/ProductCodes.vue +39 -39
- package/src/components/ProductDetailName.vue +52 -52
- package/src/components/ProductDetailsList.vue +65 -65
- package/src/components/ProductTile.astro +48 -48
- package/src/components/Quote.vue +23 -23
- package/src/components/ReloadPrompt.astro +50 -50
- package/src/components/SlimBanner.vue +72 -72
- package/src/components/Table.vue +32 -32
- package/src/components/TableOfContents.astro +15 -15
- package/src/components/Translations.vue +23 -23
- package/src/components/flags/FlagPL.vue +3 -3
- package/src/components/flags/FlagUA.vue +2 -2
- package/src/components/layout/Container.astro +7 -7
- package/src/components/layout/Header.astro +80 -80
- package/src/config.ts +56 -56
- package/src/design.config.ts +98 -98
- package/src/env.d.ts +6 -6
- package/src/layouts/Layout.astro +60 -60
- package/src/layouts/MainLayout.astro +81 -81
- package/src/layouts/partials/FooterCommon.astro +4 -4
- package/src/layouts/partials/HeadCommon.astro +44 -44
- package/src/layouts/partials/HeadSEO.astro +41 -41
- package/src/pages/components/badges.mdx +57 -57
- package/src/pages/components/breadcrumbs.mdx +139 -139
- package/src/pages/components/buttons.mdx +253 -253
- package/src/pages/components/card.mdx +294 -294
- package/src/pages/components/carousel.mdx +62 -62
- package/src/pages/components/copyright.mdx +42 -42
- package/src/pages/components/details-list.mdx +115 -115
- package/src/pages/components/features-list.mdx +37 -37
- package/src/pages/components/flags.mdx +49 -49
- package/src/pages/components/fuck-russia.mdx +39 -39
- package/src/pages/components/hand-drive.mdx +38 -38
- package/src/pages/components/headline.mdx +152 -152
- package/src/pages/components/icons.astro +135 -135
- package/src/pages/components/image.mdx +513 -513
- package/src/pages/components/input.mdx +45 -45
- package/src/pages/components/jumbatron.mdx +95 -95
- package/src/pages/components/modal.mdx +64 -64
- package/src/pages/components/post-header.mdx +60 -60
- package/src/pages/components/pr-code.mdx +65 -65
- package/src/pages/components/product-number.mdx +58 -58
- package/src/pages/components/product-tile.mdx +51 -51
- package/src/pages/components/quote.mdx +33 -33
- package/src/pages/components/slimbanner.mdx +35 -35
- package/src/pages/components/table.mdx +108 -108
- package/src/pages/core/colors.mdx +10 -10
- package/src/pages/core/grid.mdx +89 -89
- package/src/pages/core/introduction.mdx +77 -77
- package/src/pages/core/shadows.astro +20 -20
- package/src/pages/core/typography.astro +49 -48
- package/src/pages/index.astro +126 -126
- package/src/pages/patterns/introduction.mdx +60 -60
- package/src/pwa.ts +12 -12
- package/src/styles/_variables.scss +70 -70
- package/src/styles/base/base.css +184 -184
- package/src/styles/base/grid.css +92 -92
- package/src/styles/base/typography.css +70 -70
- package/src/styles/content.css +73 -73
- package/src/styles/main.css +7 -7
- package/src/types/Product.ts +31 -31
- package/src/types/astro.d.ts +3 -3
- package/src/utils/product/getPriceFormatted.ts +15 -15
- package/src/utils/product/getProductChecklist.ts +17 -17
- package/src/utils/product/useFormatProductNumber.ts +41 -41
- package/src/utils/seo/getShorterDescription.ts +14 -14
- package/src/utils/text/formatDate.ts +5 -5
- package/src/utils/text/formatLocaleNumber.ts +6 -6
- package/src/utils/text/formatPad.ts +12 -12
- package/src/utils/text/getNumberFormatted.ts +33 -33
- package/src/utils/text/getTranslatedLink.ts +5 -5
- package/src/utils/text.ts +19 -19
- package/tailwind.config.cjs +8 -8
- package/tsconfig.json +28 -28
- package/uno-config/index.ts +61 -61
- package/uno-config/theme/breakpoints.ts +9 -9
- package/uno-config/theme/colors.ts +66 -66
- package/uno-config/theme/dimensions.ts +17 -17
- package/uno-config/theme/effects.ts +14 -14
- package/uno-config/theme/grid.ts +10 -10
- package/uno-config/theme/index.ts +25 -25
- package/uno-config/theme/shortcuts/buttons.ts +41 -38
- package/uno-config/theme/shortcuts/components.ts +91 -82
- package/uno-config/theme/shortcuts/constants.ts +152 -3
- package/uno-config/theme/shortcuts/index.ts +16 -16
- package/uno-config/theme/shortcuts/layout.ts +64 -59
- package/uno-config/theme/shortcuts/product.ts +12 -3
- package/uno-config/theme/typography.ts +29 -29
- 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
|
}
|
package/uno-config/index.ts
CHANGED
|
@@ -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
|
};
|
package/uno-config/theme/grid.ts
CHANGED
|
@@ -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,42 @@
|
|
|
1
|
-
// shortcuts/buttons.ts
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
//
|
|
8
|
-
['btn
|
|
9
|
-
['btn
|
|
10
|
-
|
|
11
|
-
//
|
|
12
|
-
['btn-
|
|
13
|
-
['btn-
|
|
14
|
-
|
|
15
|
-
//
|
|
16
|
-
['btn-
|
|
17
|
-
['btn-
|
|
18
|
-
|
|
19
|
-
//
|
|
20
|
-
['btn-
|
|
21
|
-
['btn-
|
|
22
|
-
|
|
23
|
-
//
|
|
24
|
-
['btn-
|
|
25
|
-
['btn-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
['btn-
|
|
30
|
-
['btn-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
['btn-
|
|
35
|
-
['btn-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
1
|
+
// shortcuts/buttons.ts
|
|
2
|
+
import { BUTTON_STYLES, TRANSITIONS } 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} ${base.transition}`],
|
|
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} ${base.transition}`],
|
|
22
|
+
|
|
23
|
+
// Utility buttons
|
|
24
|
+
['btn-text', 'text-neutral-dark border border-transparent hover:underline transition-all'],
|
|
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 justify-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) 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', '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)']
|
|
39
42
|
];
|