@techsio/ui-kit 0.0.0
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/README.md +165 -0
- package/dist/atoms/badge.js +66 -0
- package/dist/atoms/button.js +275 -0
- package/dist/atoms/error-text.js +38 -0
- package/dist/atoms/extra-text.js +27 -0
- package/dist/atoms/icon.js +42 -0
- package/dist/atoms/image.js +11 -0
- package/dist/atoms/input.js +83 -0
- package/dist/atoms/label.js +43 -0
- package/dist/atoms/link-button.js +51 -0
- package/dist/atoms/link.js +23 -0
- package/dist/atoms/numeric-input.js +221 -0
- package/dist/atoms/rating.js +117 -0
- package/dist/atoms/textarea.js +81 -0
- package/dist/atoms/tooltip.js +119 -0
- package/dist/molecules/accordion.js +245 -0
- package/dist/molecules/breadcrumb.js +168 -0
- package/dist/molecules/carousel.js +333 -0
- package/dist/molecules/checkbox.js +92 -0
- package/dist/molecules/color-select.js +159 -0
- package/dist/molecules/combobox.js +253 -0
- package/dist/molecules/dialog.js +313 -0
- package/dist/molecules/form-checkbox.js +59 -0
- package/dist/molecules/form-input.js +55 -0
- package/dist/molecules/form-numeric-input.js +47 -0
- package/dist/molecules/form-textarea.js +54 -0
- package/dist/molecules/menu.js +302 -0
- package/dist/molecules/pagination.js +184 -0
- package/dist/molecules/popover.js +152 -0
- package/dist/molecules/product-card.js +194 -0
- package/dist/molecules/search-form.js +106 -0
- package/dist/molecules/select.js +217 -0
- package/dist/molecules/slider.js +249 -0
- package/dist/molecules/steps.js +178 -0
- package/dist/molecules/switch.js +109 -0
- package/dist/molecules/tabs.js +211 -0
- package/dist/molecules/toast.js +126 -0
- package/dist/molecules/tree-view.js +451 -0
- package/dist/organisms/footer.js +209 -0
- package/dist/organisms/header.js +245 -0
- package/dist/organisms/table.js +233 -0
- package/dist/src/atoms/badge.d.ts +59 -0
- package/dist/src/atoms/badge.d.ts.map +1 -0
- package/dist/src/atoms/button.d.ts +97 -0
- package/dist/src/atoms/button.d.ts.map +1 -0
- package/dist/src/atoms/error-text.d.ts +29 -0
- package/dist/src/atoms/error-text.d.ts.map +1 -0
- package/dist/src/atoms/extra-text.d.ts +27 -0
- package/dist/src/atoms/extra-text.d.ts.map +1 -0
- package/dist/src/atoms/icon.d.ts +65 -0
- package/dist/src/atoms/icon.d.ts.map +1 -0
- package/dist/src/atoms/image.d.ts +17 -0
- package/dist/src/atoms/image.d.ts.map +1 -0
- package/dist/src/atoms/input.d.ts +78 -0
- package/dist/src/atoms/input.d.ts.map +1 -0
- package/dist/src/atoms/label.d.ts +41 -0
- package/dist/src/atoms/label.d.ts.map +1 -0
- package/dist/src/atoms/link-button.d.ts +129 -0
- package/dist/src/atoms/link-button.d.ts.map +1 -0
- package/dist/src/atoms/link.d.ts +17 -0
- package/dist/src/atoms/link.d.ts.map +1 -0
- package/dist/src/atoms/numeric-input.d.ts +64 -0
- package/dist/src/atoms/numeric-input.d.ts.map +1 -0
- package/dist/src/atoms/rating.d.ts +108 -0
- package/dist/src/atoms/rating.d.ts.map +1 -0
- package/dist/src/atoms/textarea.d.ts +81 -0
- package/dist/src/atoms/textarea.d.ts.map +1 -0
- package/dist/src/atoms/tooltip.d.ts +88 -0
- package/dist/src/atoms/tooltip.d.ts.map +1 -0
- package/dist/src/molecules/accordion.d.ts +182 -0
- package/dist/src/molecules/accordion.d.ts.map +1 -0
- package/dist/src/molecules/breadcrumb.d.ts +117 -0
- package/dist/src/molecules/breadcrumb.d.ts.map +1 -0
- package/dist/src/molecules/carousel.d.ts +261 -0
- package/dist/src/molecules/carousel.d.ts.map +1 -0
- package/dist/src/molecules/checkbox.d.ts +19 -0
- package/dist/src/molecules/checkbox.d.ts.map +1 -0
- package/dist/src/molecules/color-select.d.ts +20 -0
- package/dist/src/molecules/color-select.d.ts.map +1 -0
- package/dist/src/molecules/combobox.d.ts +141 -0
- package/dist/src/molecules/combobox.d.ts.map +1 -0
- package/dist/src/molecules/dialog.d.ts +234 -0
- package/dist/src/molecules/dialog.d.ts.map +1 -0
- package/dist/src/molecules/form-checkbox.d.ts +15 -0
- package/dist/src/molecules/form-checkbox.d.ts.map +1 -0
- package/dist/src/molecules/form-input.d.ts +14 -0
- package/dist/src/molecules/form-input.d.ts.map +1 -0
- package/dist/src/molecules/form-numeric-input.d.ts +14 -0
- package/dist/src/molecules/form-numeric-input.d.ts.map +1 -0
- package/dist/src/molecules/form-textarea.d.ts +14 -0
- package/dist/src/molecules/form-textarea.d.ts.map +1 -0
- package/dist/src/molecules/menu.d.ts +153 -0
- package/dist/src/molecules/menu.d.ts.map +1 -0
- package/dist/src/molecules/pagination.d.ts +123 -0
- package/dist/src/molecules/pagination.d.ts.map +1 -0
- package/dist/src/molecules/popover.d.ts +124 -0
- package/dist/src/molecules/popover.d.ts.map +1 -0
- package/dist/src/molecules/product-card.d.ts +160 -0
- package/dist/src/molecules/product-card.d.ts.map +1 -0
- package/dist/src/molecules/search-form.d.ts +39 -0
- package/dist/src/molecules/search-form.d.ts.map +1 -0
- package/dist/src/molecules/select.d.ts +126 -0
- package/dist/src/molecules/select.d.ts.map +1 -0
- package/dist/src/molecules/slider.d.ts +120 -0
- package/dist/src/molecules/slider.d.ts.map +1 -0
- package/dist/src/molecules/steps.d.ts +96 -0
- package/dist/src/molecules/steps.d.ts.map +1 -0
- package/dist/src/molecules/switch.d.ts +71 -0
- package/dist/src/molecules/switch.d.ts.map +1 -0
- package/dist/src/molecules/tabs.d.ts +207 -0
- package/dist/src/molecules/tabs.d.ts.map +1 -0
- package/dist/src/molecules/toast.d.ts +83 -0
- package/dist/src/molecules/toast.d.ts.map +1 -0
- package/dist/src/molecules/tree-view.d.ts +202 -0
- package/dist/src/molecules/tree-view.d.ts.map +1 -0
- package/dist/src/organisms/footer.d.ts +254 -0
- package/dist/src/organisms/footer.d.ts.map +1 -0
- package/dist/src/organisms/header.d.ts +186 -0
- package/dist/src/organisms/header.d.ts.map +1 -0
- package/dist/src/organisms/table.d.ts +250 -0
- package/dist/src/organisms/table.d.ts.map +1 -0
- package/dist/src/templates/accordion.d.ts +15 -0
- package/dist/src/templates/accordion.d.ts.map +1 -0
- package/dist/src/templates/carousel.d.ts +13 -0
- package/dist/src/templates/carousel.d.ts.map +1 -0
- package/dist/src/templates/numeric-input.d.ts +14 -0
- package/dist/src/templates/numeric-input.d.ts.map +1 -0
- package/dist/src/templates/product-card.d.ts +33 -0
- package/dist/src/templates/product-card.d.ts.map +1 -0
- package/dist/src/templates/tabs.d.ts +16 -0
- package/dist/src/templates/tabs.d.ts.map +1 -0
- package/dist/src/types/zag.d.ts +19 -0
- package/dist/src/types/zag.d.ts.map +1 -0
- package/dist/src/utils.d.ts +4 -0
- package/dist/src/utils.d.ts.map +1 -0
- package/dist/templates/accordion.js +37 -0
- package/dist/templates/carousel.js +55 -0
- package/dist/templates/numeric-input.js +49 -0
- package/dist/templates/product-card.js +92 -0
- package/dist/templates/tabs.js +34 -0
- package/dist/types/zag.js +0 -0
- package/dist/utils.js +20 -0
- package/package.json +126 -0
- package/src/tokens/_base.css +25 -0
- package/src/tokens/_colors.css +5 -0
- package/src/tokens/_layout.css +34 -0
- package/src/tokens/_semantic.css +360 -0
- package/src/tokens/_spacing.css +22 -0
- package/src/tokens/_typography.css +17 -0
- package/src/tokens/components/atoms/_badge.css +61 -0
- package/src/tokens/components/atoms/_button.css +215 -0
- package/src/tokens/components/atoms/_icon.css +122 -0
- package/src/tokens/components/atoms/_input.css +125 -0
- package/src/tokens/components/atoms/_numeric-input.css +57 -0
- package/src/tokens/components/atoms/_rating.css +33 -0
- package/src/tokens/components/atoms/_textarea.css +93 -0
- package/src/tokens/components/atoms/_tooltip.css +21 -0
- package/src/tokens/components/components.css +32 -0
- package/src/tokens/components/molecules/_accordion.css +85 -0
- package/src/tokens/components/molecules/_breadcrumb.css +44 -0
- package/src/tokens/components/molecules/_carousel.css +72 -0
- package/src/tokens/components/molecules/_checkbox.css +29 -0
- package/src/tokens/components/molecules/_color-select.css +61 -0
- package/src/tokens/components/molecules/_combobox.css +116 -0
- package/src/tokens/components/molecules/_dialog.css +75 -0
- package/src/tokens/components/molecules/_menu.css +48 -0
- package/src/tokens/components/molecules/_pagination.css +75 -0
- package/src/tokens/components/molecules/_popover.css +39 -0
- package/src/tokens/components/molecules/_product-card.css +85 -0
- package/src/tokens/components/molecules/_search-form.css +10 -0
- package/src/tokens/components/molecules/_select.css +88 -0
- package/src/tokens/components/molecules/_slider.css +75 -0
- package/src/tokens/components/molecules/_steps.css +54 -0
- package/src/tokens/components/molecules/_switch.css +62 -0
- package/src/tokens/components/molecules/_tabs.css +69 -0
- package/src/tokens/components/molecules/_toast.css +77 -0
- package/src/tokens/components/molecules/_tree-view.css +80 -0
- package/src/tokens/components/molecules/index.css +2 -0
- package/src/tokens/components/organisms/_footer.css +90 -0
- package/src/tokens/components/organisms/_header.css +86 -0
- package/src/tokens/components/organisms/_table.css +63 -0
- package/src/tokens/index.css +67 -0
- package/src/tokens/tokens-only.css +66 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Tabs } from "../molecules/tabs.js";
|
|
3
|
+
function TabsTemplate({ items, showIndicator = false, variant = 'default', size = 'md', fitted = false, justify = 'start', orientation = 'horizontal', defaultValue, value, onValueChange, ref, className, ...tabsProps }) {
|
|
4
|
+
return /*#__PURE__*/ jsxs(Tabs, {
|
|
5
|
+
ref: ref,
|
|
6
|
+
variant: variant,
|
|
7
|
+
size: size,
|
|
8
|
+
fitted: fitted,
|
|
9
|
+
justify: justify,
|
|
10
|
+
orientation: orientation,
|
|
11
|
+
defaultValue: defaultValue,
|
|
12
|
+
value: value,
|
|
13
|
+
onValueChange: onValueChange,
|
|
14
|
+
className: className,
|
|
15
|
+
...tabsProps,
|
|
16
|
+
children: [
|
|
17
|
+
/*#__PURE__*/ jsxs(Tabs.List, {
|
|
18
|
+
children: [
|
|
19
|
+
items.map((item)=>/*#__PURE__*/ jsx(Tabs.Trigger, {
|
|
20
|
+
value: item.value,
|
|
21
|
+
disabled: item.disabled,
|
|
22
|
+
children: item.label
|
|
23
|
+
}, item.value)),
|
|
24
|
+
showIndicator && /*#__PURE__*/ jsx(Tabs.Indicator, {})
|
|
25
|
+
]
|
|
26
|
+
}),
|
|
27
|
+
items.map((item)=>/*#__PURE__*/ jsx(Tabs.Content, {
|
|
28
|
+
value: item.value,
|
|
29
|
+
children: item.content
|
|
30
|
+
}, item.value))
|
|
31
|
+
]
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
export { TabsTemplate };
|
|
File without changes
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { createTV } from "tailwind-variants";
|
|
2
|
+
const TEXT_SIZE_REGEX = /-(size|sm|md|lg|\d?x?[sml])$/;
|
|
3
|
+
const WHITESPACE_REGEX = /\s+/g;
|
|
4
|
+
const NON_WORD_REGEX = /[^\w-]+/g;
|
|
5
|
+
const MULTIPLE_DASHES_REGEX = /--+/g;
|
|
6
|
+
const LEADING_DASHES_REGEX = /^-+/;
|
|
7
|
+
const TRAILING_DASHES_REGEX = /-+$/;
|
|
8
|
+
const tv = createTV({
|
|
9
|
+
twMergeConfig: {
|
|
10
|
+
theme: {
|
|
11
|
+
text: [
|
|
12
|
+
(value)=>TEXT_SIZE_REGEX.test(value)
|
|
13
|
+
]
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
function slugify(str) {
|
|
18
|
+
return str.toString().toLowerCase().replace(WHITESPACE_REGEX, '-').replace(NON_WORD_REGEX, '').replace(MULTIPLE_DASHES_REGEX, '-').replace(LEADING_DASHES_REGEX, '').replace(TRAILING_DASHES_REGEX, '');
|
|
19
|
+
}
|
|
20
|
+
export { slugify, tv };
|
package/package.json
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@techsio/ui-kit",
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"exports": {
|
|
6
|
+
"./types/zag": {
|
|
7
|
+
"types": "./dist/src/types/zag.d.ts",
|
|
8
|
+
"import": "./dist/types/zag.js"
|
|
9
|
+
},
|
|
10
|
+
"./tokens": {
|
|
11
|
+
"import": "./src/tokens/tokens-only.css"
|
|
12
|
+
},
|
|
13
|
+
"./tokens-with-tailwind": {
|
|
14
|
+
"import": "./src/tokens/index.css"
|
|
15
|
+
},
|
|
16
|
+
"./tokens/*": {
|
|
17
|
+
"import": "./src/tokens/*.css"
|
|
18
|
+
},
|
|
19
|
+
"./atoms/*": {
|
|
20
|
+
"types": "./dist/src/atoms/*.d.ts",
|
|
21
|
+
"import": "./dist/atoms/*.js"
|
|
22
|
+
},
|
|
23
|
+
"./molecules/*": {
|
|
24
|
+
"types": "./dist/src/molecules/*.d.ts",
|
|
25
|
+
"import": "./dist/molecules/*.js"
|
|
26
|
+
},
|
|
27
|
+
"./organisms/*": {
|
|
28
|
+
"types": "./dist/src/organisms/*.d.ts",
|
|
29
|
+
"import": "./dist/organisms/*.js"
|
|
30
|
+
},
|
|
31
|
+
"./templates/*": {
|
|
32
|
+
"types": "./dist/src/templates/*.d.ts",
|
|
33
|
+
"import": "./dist/templates/*.js"
|
|
34
|
+
},
|
|
35
|
+
"./utils": {
|
|
36
|
+
"types": "./dist/src/utils.d.ts",
|
|
37
|
+
"import": "./dist/utils.js"
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"files": [
|
|
41
|
+
"dist",
|
|
42
|
+
"src/tokens"
|
|
43
|
+
],
|
|
44
|
+
"scripts": {
|
|
45
|
+
"build": "rslib build",
|
|
46
|
+
"build:storybook": "storybook build",
|
|
47
|
+
"dev": "rslib build --watch",
|
|
48
|
+
"storybook": "storybook dev",
|
|
49
|
+
"lint:tailwind": "eslint \"**/*.{js,jsx,ts,tsx}\" --config eslint.config.js",
|
|
50
|
+
"lint:tailwind:fix": "eslint \"**/*.{js,jsx,ts,tsx}\" --config eslint.config.js --fix",
|
|
51
|
+
"prepare": "pnpm build && pnpm build:storybook",
|
|
52
|
+
"check:unused-tokens": "bun scripts/check-unused-tokens.js",
|
|
53
|
+
"validate:tokens": "bun scripts/validate-token-usage.js && bun scripts/validate-token-definitions.js",
|
|
54
|
+
"validate:token-usage": "bun scripts/validate-token-usage.js",
|
|
55
|
+
"validate:token-definitions": "bun scripts/validate-token-definitions.js",
|
|
56
|
+
"semantic-release": "semantic-release"
|
|
57
|
+
},
|
|
58
|
+
"dependencies": {
|
|
59
|
+
"@zag-js/accordion": "^1.29.1",
|
|
60
|
+
"@zag-js/carousel": "^1.29.1",
|
|
61
|
+
"@zag-js/checkbox": "^1.29.1",
|
|
62
|
+
"@zag-js/combobox": "^1.29.1",
|
|
63
|
+
"@zag-js/dialog": "^1.29.1",
|
|
64
|
+
"@zag-js/i18n-utils": "^1.29.1",
|
|
65
|
+
"@zag-js/menu": "^1.29.1",
|
|
66
|
+
"@zag-js/number-input": "^1.29.1",
|
|
67
|
+
"@zag-js/pagination": "^1.29.1",
|
|
68
|
+
"@zag-js/popover": "^1.29.1",
|
|
69
|
+
"@zag-js/rating-group": "^1.29.1",
|
|
70
|
+
"@zag-js/react": "^1.29.1",
|
|
71
|
+
"@zag-js/select": "^1.29.1",
|
|
72
|
+
"@zag-js/slider": "^1.29.1",
|
|
73
|
+
"@zag-js/steps": "^1.29.1",
|
|
74
|
+
"@zag-js/switch": "^1.29.1",
|
|
75
|
+
"@zag-js/tabs": "^1.29.1",
|
|
76
|
+
"@zag-js/toast": "^1.29.1",
|
|
77
|
+
"@zag-js/tooltip": "^1.29.1",
|
|
78
|
+
"@zag-js/tree-view": "^1.29.1",
|
|
79
|
+
"tailwind-variants": "^3.1.1"
|
|
80
|
+
},
|
|
81
|
+
"devDependencies": {
|
|
82
|
+
"@eslint/js": "^9.39.1",
|
|
83
|
+
"@iconify/json": "^2.2.409",
|
|
84
|
+
"@iconify/tailwind4": "^1.1.0",
|
|
85
|
+
"@rsbuild/core": "1.6.7",
|
|
86
|
+
"@rsbuild/plugin-react": "^1.4.1",
|
|
87
|
+
"@rslib/core": "^0.18.0",
|
|
88
|
+
"@semantic-release/changelog": "^6.0.3",
|
|
89
|
+
"@semantic-release/commit-analyzer": "^13.0.1",
|
|
90
|
+
"@semantic-release/git": "^10.0.1",
|
|
91
|
+
"@semantic-release/github": "^12.0.2",
|
|
92
|
+
"@semantic-release/npm": "^13.1.2",
|
|
93
|
+
"@semantic-release/release-notes-generator": "^14.1.0",
|
|
94
|
+
"@storybook/addon-a11y": "^10.0.3",
|
|
95
|
+
"@storybook/addon-links": "^10.0.2",
|
|
96
|
+
"@storybook/addon-onboarding": "^10.0.2",
|
|
97
|
+
"@storybook/addon-themes": "^10.0.2",
|
|
98
|
+
"@storybook/react": "^10.0.2",
|
|
99
|
+
"@tailwindcss/postcss": "^4.1.17",
|
|
100
|
+
"@typescript-eslint/parser": "^8.47.0",
|
|
101
|
+
"class-variance-authority": "^0.7.1",
|
|
102
|
+
"clsx": "^2.1.1",
|
|
103
|
+
"eslint": "^9.39.1",
|
|
104
|
+
"eslint-plugin-tailwindcss": "beta",
|
|
105
|
+
"glob": "^11.0.2",
|
|
106
|
+
"next": "^16.0.3",
|
|
107
|
+
"rsbuild-plugin-publint": "^0.3.3",
|
|
108
|
+
"semantic-release": "^25.0.2",
|
|
109
|
+
"storybook": "^10.0.2",
|
|
110
|
+
"storybook-addon-rslib": "^2.1.6",
|
|
111
|
+
"storybook-react-rsbuild": "^2.1.4",
|
|
112
|
+
"tailwind-merge": "^3.4.0",
|
|
113
|
+
"tailwindcss": "^4.1.17",
|
|
114
|
+
"tailwindcss-animate": "^1.0.7",
|
|
115
|
+
"typescript": "^5.9.3"
|
|
116
|
+
},
|
|
117
|
+
"peerDependencies": {
|
|
118
|
+
"@types/react": ">=19.2.0",
|
|
119
|
+
"@types/react-dom": ">=19.2.0",
|
|
120
|
+
"react": ">=19.2.0",
|
|
121
|
+
"react-dom": ">=19.2.0"
|
|
122
|
+
},
|
|
123
|
+
"publishConfig": {
|
|
124
|
+
"access": "public"
|
|
125
|
+
}
|
|
126
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
@theme static {
|
|
2
|
+
/* Radius */
|
|
3
|
+
--radius-sm: 4px;
|
|
4
|
+
--radius-md: 8px;
|
|
5
|
+
--radius-lg: 12px;
|
|
6
|
+
--radius-full: 9999px;
|
|
7
|
+
|
|
8
|
+
--color-shadow-1: light-dark(rgba(0, 0, 0, 0.16), rgba(0, 0, 0, 1));
|
|
9
|
+
--color-shadow-2: light-dark(rgba(0, 0, 0, 0.06), rgba(0, 0, 0, 1));
|
|
10
|
+
--color-shadow-3: light-dark(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 1));
|
|
11
|
+
|
|
12
|
+
--offset-shadow-1: 0px 1px 3px 0px;
|
|
13
|
+
--offset-shadow-2: 0px 5px 6px 0px;
|
|
14
|
+
--offset-shadow-3: 1px 1px 20px 0px;
|
|
15
|
+
|
|
16
|
+
--shadow-primary: var(--offset-shadow-1) var(--color-shadow-1),
|
|
17
|
+
var(--offset-shadow-2) var(--color-shadow-2), var(--offset-shadow-3)
|
|
18
|
+
var(--color-shadow-3);
|
|
19
|
+
|
|
20
|
+
/* Shadows */
|
|
21
|
+
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
|
|
22
|
+
--shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1);
|
|
23
|
+
--shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1);
|
|
24
|
+
--shadow-xl: 0 20px 25px rgba(0, 0, 0, 0.15), 0 10px 10px rgba(0, 0, 0, 0.04);
|
|
25
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
@theme static {
|
|
2
|
+
/* === BREAKPOINTS === */
|
|
3
|
+
--breakpoint-xs: 30rem;
|
|
4
|
+
--breakpoint-sm: 40rem;
|
|
5
|
+
--breakpoint-md: 48rem;
|
|
6
|
+
--breakpoint-lg: 64rem;
|
|
7
|
+
--breakpoint-xl: 80rem;
|
|
8
|
+
--breakpoint-2xl: 96rem;
|
|
9
|
+
|
|
10
|
+
/* === CONTAINER SIZES === */
|
|
11
|
+
--container-3xs: 16rem;
|
|
12
|
+
--container-2xs: 18rem;
|
|
13
|
+
--container-xs: 20rem;
|
|
14
|
+
--container-sm: 24rem;
|
|
15
|
+
--container-md: 28rem;
|
|
16
|
+
--container-lg: 32rem;
|
|
17
|
+
--container-xl: 36rem;
|
|
18
|
+
--container-2xl: 42rem;
|
|
19
|
+
--container-3xl: 48rem;
|
|
20
|
+
--container-4xl: 56rem;
|
|
21
|
+
--container-5xl: 64rem;
|
|
22
|
+
--container-6xl: 72rem;
|
|
23
|
+
--container-max-w: 80rem;
|
|
24
|
+
--container-prose: 65ch;
|
|
25
|
+
|
|
26
|
+
/* === ASPECT RATIOS === */
|
|
27
|
+
--aspect-square: 1;
|
|
28
|
+
--aspect-video: 16 / 9;
|
|
29
|
+
--aspect-portrait: 9 / 16;
|
|
30
|
+
--aspect-landscape: 4 / 3;
|
|
31
|
+
--aspect-wide: 21 / 9;
|
|
32
|
+
--aspect-card: 3 / 2;
|
|
33
|
+
--aspect-golden: 1.618;
|
|
34
|
+
}
|
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Color manipulation functions:
|
|
3
|
+
* - oklch(from var(--color) calc(l + 0.1) c h): Modifies the lightness of a color while preserving
|
|
4
|
+
* its chroma and hue. Used for consistent hover/active states.
|
|
5
|
+
* - --alpha(var(--color) / 50%): Adjusts transparency of a color. Tailwind's v4 utility
|
|
6
|
+
* that compiles to color-mix() for better browser support.
|
|
7
|
+
*/
|
|
8
|
+
:root {
|
|
9
|
+
--state-hover: -0.08;
|
|
10
|
+
--state-active: -0.12;
|
|
11
|
+
--state-disabled-chroma: 0.01;
|
|
12
|
+
--state-light-variant: 0.1; /* Always make colors lighter for -light variant */
|
|
13
|
+
--state-light-chroma: 0.6; /* Reduce saturation for softer, pastel colors */
|
|
14
|
+
--state-secondary-text: 0.15;
|
|
15
|
+
--state-border: 15%;
|
|
16
|
+
--max-lightness: 0.97;
|
|
17
|
+
--opacity-ring: 80%;
|
|
18
|
+
--opacity-disabled: 60%;
|
|
19
|
+
--opacity-placeholder: 60%;
|
|
20
|
+
--opacity-text-secondary: 70%;
|
|
21
|
+
--opacity-disabled-placeholder: 30%;
|
|
22
|
+
--fill-increment: 5%;
|
|
23
|
+
--surface-increment: 0.05;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/* Explicit Dark class(es) */
|
|
27
|
+
:is(.dark, .always-dark) {
|
|
28
|
+
--state-hover: 0.08;
|
|
29
|
+
--state-active: 0.12;
|
|
30
|
+
--state-secondary-text: -0.15;
|
|
31
|
+
--surface-increment: -0.05;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/* System Dark preference (when no explicit class forces light) */
|
|
35
|
+
@media (prefers-color-scheme: dark) {
|
|
36
|
+
:root:not(.light):not(.always-light) {
|
|
37
|
+
--state-hover: 0.08;
|
|
38
|
+
--state-active: 0.12;
|
|
39
|
+
--state-secondary-text: -0.15;
|
|
40
|
+
--surface-increment: -0.05;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/* Reverse if parents has .always-light/dark and we want to make reverse style to parent */
|
|
45
|
+
:is(.light, .always-light) .reverse {
|
|
46
|
+
--state-hover: 0.08;
|
|
47
|
+
--state-active: 0.12;
|
|
48
|
+
--state-secondary-text: -0.15;
|
|
49
|
+
--surface-increment: -0.05;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
:is(.dark, .always-dark) .reverse {
|
|
53
|
+
--state-hover: -0.08;
|
|
54
|
+
--state-active: -0.12;
|
|
55
|
+
--state-secondary-text: 0.15;
|
|
56
|
+
--surface-increment: 0.05;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/* Reverse on System Light/Dark preference (when no explicit theme class is present) */
|
|
60
|
+
@media (prefers-color-scheme: light) {
|
|
61
|
+
.reverse:not(.dark):not(.always-dark):not(.light):not(.always-light) {
|
|
62
|
+
--state-hover: 0.08;
|
|
63
|
+
--state-active: 0.12;
|
|
64
|
+
--state-secondary-text: -0.15;
|
|
65
|
+
--surface-increment: -0.05;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
@media (prefers-color-scheme: dark) {
|
|
70
|
+
.reverse:not(.dark):not(.always-dark):not(.light):not(.always-light) {
|
|
71
|
+
--state-hover: -0.08;
|
|
72
|
+
--state-active: -0.12;
|
|
73
|
+
--state-secondary-text: 0.15;
|
|
74
|
+
--surface-increment: 0.05;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/* === TAILWIND UTILITY VARIABLES === */
|
|
79
|
+
@theme static {
|
|
80
|
+
/* Colors */
|
|
81
|
+
/* User interface main tone and interactive colors, usually used for main operation button, etc */
|
|
82
|
+
--color-primary: light-dark(var(--color-blue-500), var(--color-sky-300));
|
|
83
|
+
--color-primary-hover: oklch(
|
|
84
|
+
from var(--color-primary) calc(l + var(--state-hover)) c h
|
|
85
|
+
);
|
|
86
|
+
--color-primary-active: oklch(
|
|
87
|
+
from var(--color-primary) calc(l + var(--state-active)) c h
|
|
88
|
+
);
|
|
89
|
+
--color-primary-disabled: oklch(
|
|
90
|
+
from var(--color-primary) l var(--state-disabled-chroma) h
|
|
91
|
+
);
|
|
92
|
+
--color-primary-light: oklch(
|
|
93
|
+
from var(--color-primary)
|
|
94
|
+
min(var(--max-lightness), calc(l + var(--state-light-variant)))
|
|
95
|
+
calc(c * var(--state-light-chroma)) h
|
|
96
|
+
);
|
|
97
|
+
--color-primary-light-hover: oklch(
|
|
98
|
+
from var(--color-primary-light) calc(l + var(--state-hover)) c h
|
|
99
|
+
);
|
|
100
|
+
--color-primary-light-active: oklch(
|
|
101
|
+
from var(--color-primary-light) calc(l + var(--state-active)) c h
|
|
102
|
+
);
|
|
103
|
+
--color-primary-light-disabled: oklch(
|
|
104
|
+
from var(--color-primary-light) l var(--state-disabled-chroma) h
|
|
105
|
+
);
|
|
106
|
+
|
|
107
|
+
/*Secondary colors. Less important than primary colors, but still serve as accents.*/
|
|
108
|
+
--color-secondary: light-dark(var(--color-orange-500), var(--color-amber-400));
|
|
109
|
+
--color-secondary-hover: oklch(
|
|
110
|
+
from var(--color-secondary) calc(l + var(--state-hover)) c h
|
|
111
|
+
);
|
|
112
|
+
--color-secondary-active: oklch(
|
|
113
|
+
from var(--color-secondary) calc(l + var(--state-active)) c h
|
|
114
|
+
);
|
|
115
|
+
--color-secondary-disabled: oklch(
|
|
116
|
+
from var(--color-secondary) l var(--state-disabled-chroma) h
|
|
117
|
+
);
|
|
118
|
+
--color-secondary-light: oklch(
|
|
119
|
+
from var(--color-secondary)
|
|
120
|
+
min(var(--max-lightness), calc(l + var(--state-light-variant)))
|
|
121
|
+
calc(c * var(--state-light-chroma)) h
|
|
122
|
+
);
|
|
123
|
+
--color-secondary-light-hover: oklch(
|
|
124
|
+
from var(--color-secondary-light) calc(l + var(--state-hover)) c h
|
|
125
|
+
);
|
|
126
|
+
--color-secondary-light-active: oklch(
|
|
127
|
+
from var(--color-secondary-light) calc(l + var(--state-active)) c h
|
|
128
|
+
);
|
|
129
|
+
--color-secondary-light-disabled: oklch(
|
|
130
|
+
from var(--color-secondary-light) l var(--state-disabled-chroma) h
|
|
131
|
+
);
|
|
132
|
+
|
|
133
|
+
/* In the user interface, non emphasis color and interactive color are usually used for general and non emphasis function operation buttons */
|
|
134
|
+
--color-tertiary: light-dark(var(--color-pink-500), var(--color-rose-400));
|
|
135
|
+
--color-tertiary-hover: oklch(
|
|
136
|
+
from var(--color-tertiary) calc(l + var(--state-hover)) c h
|
|
137
|
+
);
|
|
138
|
+
--color-tertiary-active: oklch(
|
|
139
|
+
from var(--color-tertiary) calc(l + var(--state-active)) c h
|
|
140
|
+
);
|
|
141
|
+
--color-tertiary-disabled: oklch(
|
|
142
|
+
from var(--color-tertiary) l var(--state-disabled-chroma) h
|
|
143
|
+
);
|
|
144
|
+
--color-tertiary-light: oklch(
|
|
145
|
+
from var(--color-tertiary)
|
|
146
|
+
min(var(--max-lightness), calc(l + var(--state-light-variant)))
|
|
147
|
+
calc(c * var(--state-light-chroma)) h
|
|
148
|
+
);
|
|
149
|
+
--color-tertiary-light-hover: oklch(
|
|
150
|
+
from var(--color-tertiary-light) calc(l + var(--state-hover)) c h
|
|
151
|
+
);
|
|
152
|
+
--color-tertiary-light-active: oklch(
|
|
153
|
+
from var(--color-tertiary-light) calc(l + var(--state-active)) c h
|
|
154
|
+
);
|
|
155
|
+
--color-tertiary-light-disabled: oklch(
|
|
156
|
+
from var(--color-tertiary-light) l var(--state-disabled-chroma) h
|
|
157
|
+
);
|
|
158
|
+
|
|
159
|
+
/* It is usually used to express the success, completion and opening status, and is used in scenarios with the above semantics */
|
|
160
|
+
--color-success: light-dark(
|
|
161
|
+
var(--color-emerald-500),
|
|
162
|
+
var(--color-emerald-300)
|
|
163
|
+
);
|
|
164
|
+
--color-success-hover: oklch(
|
|
165
|
+
from var(--color-success) calc(l + var(--state-hover)) c h
|
|
166
|
+
);
|
|
167
|
+
--color-success-active: oklch(
|
|
168
|
+
from var(--color-success) calc(l + var(--state-active)) c h
|
|
169
|
+
);
|
|
170
|
+
--color-success-disabled: oklch(
|
|
171
|
+
from var(--color-success) l var(--state-disabled-chroma) h
|
|
172
|
+
);
|
|
173
|
+
--color-success-light: oklch(
|
|
174
|
+
from var(--color-success)
|
|
175
|
+
min(var(--max-lightness), calc(l + var(--state-light-variant)))
|
|
176
|
+
calc(c * var(--state-light-chroma)) h
|
|
177
|
+
);
|
|
178
|
+
--color-success-light-hover: oklch(
|
|
179
|
+
from var(--color-success-light) calc(l + var(--state-hover)) c h
|
|
180
|
+
);
|
|
181
|
+
--color-success-light-active: oklch(
|
|
182
|
+
from var(--color-success-light) calc(l + var(--state-active)) c h
|
|
183
|
+
);
|
|
184
|
+
--color-success-light-disabled: oklch(
|
|
185
|
+
from var(--color-success-light) l var(--state-disabled-chroma) h
|
|
186
|
+
);
|
|
187
|
+
|
|
188
|
+
/* It is usually used to express objective and neutral information in the context with the above semantics */
|
|
189
|
+
--color-info: light-dark(var(--color-teal-500), var(--color-cyan-300));
|
|
190
|
+
--color-info-hover: oklch(
|
|
191
|
+
from var(--color-info) calc(l + var(--state-hover)) c h
|
|
192
|
+
);
|
|
193
|
+
--color-info-active: oklch(
|
|
194
|
+
from var(--color-info) calc(l + var(--state-active)) c h
|
|
195
|
+
);
|
|
196
|
+
--color-info-disabled: oklch(
|
|
197
|
+
from var(--color-info) l var(--state-disabled-chroma) h
|
|
198
|
+
);
|
|
199
|
+
--color-info-light: oklch(
|
|
200
|
+
from var(--color-info)
|
|
201
|
+
min(var(--max-lightness), calc(l + var(--state-light-variant)))
|
|
202
|
+
calc(c * var(--state-light-chroma)) h
|
|
203
|
+
);
|
|
204
|
+
--color-info-light-hover: oklch(
|
|
205
|
+
from var(--color-info-light) calc(l + var(--state-hover)) c h
|
|
206
|
+
);
|
|
207
|
+
--color-info-light-active: oklch(
|
|
208
|
+
from var(--color-info-light) calc(l + var(--state-active)) c h
|
|
209
|
+
);
|
|
210
|
+
--color-info-light-disabled: oklch(
|
|
211
|
+
from var(--color-info-light) l var(--state-disabled-chroma) h
|
|
212
|
+
);
|
|
213
|
+
|
|
214
|
+
/* It is usually used to express warning and unsafe state, and is used in scenarios with the above semantics */
|
|
215
|
+
--color-warning: light-dark(var(--color-yellow-500), var(--color-yellow-400));
|
|
216
|
+
--color-warning-hover: oklch(
|
|
217
|
+
from var(--color-warning) calc(l + var(--state-hover)) c h
|
|
218
|
+
);
|
|
219
|
+
--color-warning-active: oklch(
|
|
220
|
+
from var(--color-warning) calc(l + var(--state-active)) c h
|
|
221
|
+
);
|
|
222
|
+
--color-warning-disabled: oklch(
|
|
223
|
+
from var(--color-warning) l var(--state-disabled-chroma) h
|
|
224
|
+
);
|
|
225
|
+
--color-warning-light: oklch(
|
|
226
|
+
from var(--color-warning)
|
|
227
|
+
min(var(--max-lightness), calc(l + var(--state-light-variant)))
|
|
228
|
+
calc(c * var(--state-light-chroma)) h
|
|
229
|
+
);
|
|
230
|
+
--color-warning-light-hover: oklch(
|
|
231
|
+
from var(--color-warning-light) calc(l + var(--state-hover)) c h
|
|
232
|
+
);
|
|
233
|
+
--color-warning-light-active: oklch(
|
|
234
|
+
from var(--color-warning-light) calc(l + var(--state-active)) c h
|
|
235
|
+
);
|
|
236
|
+
--color-warning-light-disabled: oklch(
|
|
237
|
+
from var(--color-warning-light) l var(--state-disabled-chroma) h
|
|
238
|
+
);
|
|
239
|
+
|
|
240
|
+
/* It is usually used to express the dangerous state, and is used in the scene with the above semantics */
|
|
241
|
+
--color-danger: light-dark(var(--color-red-500), var(--color-red-400));
|
|
242
|
+
--color-danger-hover: oklch(
|
|
243
|
+
from var(--color-danger) calc(l + var(--state-hover)) c h
|
|
244
|
+
);
|
|
245
|
+
--color-danger-active: oklch(
|
|
246
|
+
from var(--color-danger) calc(l + var(--state-active)) c h
|
|
247
|
+
);
|
|
248
|
+
--color-danger-disabled: oklch(
|
|
249
|
+
from var(--color-danger) l var(--state-disabled-chroma) h
|
|
250
|
+
);
|
|
251
|
+
--color-danger-light: oklch(
|
|
252
|
+
from var(--color-danger)
|
|
253
|
+
min(var(--max-lightness), calc(l + var(--state-light-variant)))
|
|
254
|
+
calc(c * var(--state-light-chroma)) h
|
|
255
|
+
);
|
|
256
|
+
--color-danger-light-hover: oklch(
|
|
257
|
+
from var(--color-danger-light) calc(l + var(--state-hover)) c h
|
|
258
|
+
);
|
|
259
|
+
--color-danger-light-active: oklch(
|
|
260
|
+
from var(--color-danger-light) calc(l + var(--state-active)) c h
|
|
261
|
+
);
|
|
262
|
+
--color-danger-light-disabled: oklch(
|
|
263
|
+
from var(--color-danger-light) l var(--state-disabled-chroma) h
|
|
264
|
+
);
|
|
265
|
+
|
|
266
|
+
/* Text colors and Icon colors*/
|
|
267
|
+
/* Four different levels of text / icon colors represent the most important, secondary, minor and minor contents in the product interface */
|
|
268
|
+
--color-fg-light: var(--color-slate-800); /* Light mode */
|
|
269
|
+
--color-fg-dark: var(--color-white); /* Dark mode */
|
|
270
|
+
--color-fg-primary: light-dark(var(--color-fg-light), var(--color-fg-dark));
|
|
271
|
+
|
|
272
|
+
--color-fg-secondary: oklch(
|
|
273
|
+
from var(--color-fg-primary) calc(l + var(--state-secondary-text)) c h
|
|
274
|
+
);
|
|
275
|
+
--color-fg-reverse: light-dark(var(--color-fg-dark), var(--color-fg-light));
|
|
276
|
+
|
|
277
|
+
/* Background colors */
|
|
278
|
+
/* All levels of background color in the application, including container, menu, navigation bar, etc. In dark mode, we usually use the background color to distinguish the front and back levels */
|
|
279
|
+
--color-base-light: var(--color-white);
|
|
280
|
+
--color-base-dark: var(--color-gray-950);
|
|
281
|
+
--color-base: light-dark(var(--color-base-light), var(--color-base-dark)); /*bottom page*/
|
|
282
|
+
--color-surface: oklch(
|
|
283
|
+
from var(--color-base) calc(l - var(--surface-increment)) c h
|
|
284
|
+
); /* content that needs to be promoted on the page*/
|
|
285
|
+
--color-overlay: oklch(
|
|
286
|
+
from var(--color-base) calc(l - var(--surface-increment) * 2) c h
|
|
287
|
+
); /* containers, modals*/
|
|
288
|
+
--color-float: oklch(
|
|
289
|
+
from var(--color-base) calc(l - var(--surface-increment) * 3) c h
|
|
290
|
+
); /* toast */
|
|
291
|
+
--color-highlight: oklch(
|
|
292
|
+
from var(--color-base) calc(l - var(--surface-increment) * 4) c h
|
|
293
|
+
); /* top layer */
|
|
294
|
+
--color-base-reverse: light-dark(
|
|
295
|
+
var(--color-base-dark),
|
|
296
|
+
var(--color-base-light)
|
|
297
|
+
);
|
|
298
|
+
|
|
299
|
+
/* Borders */
|
|
300
|
+
--color-border-primary: --alpha(
|
|
301
|
+
var(--color-base-reverse) /
|
|
302
|
+
var(--state-border)
|
|
303
|
+
);
|
|
304
|
+
--color-border-secondary: --alpha(
|
|
305
|
+
var(--color-base-reverse) /
|
|
306
|
+
calc(var(--state-border) * 1.5)
|
|
307
|
+
);
|
|
308
|
+
--border-width-none: 0px;
|
|
309
|
+
--border-width-sm: 1px;
|
|
310
|
+
--border-width-md: 2px;
|
|
311
|
+
--border-width-lg: 3px;
|
|
312
|
+
|
|
313
|
+
/* Links */
|
|
314
|
+
--color-link: light-dark(var(--color-blue-500), var(--color-sky-300));
|
|
315
|
+
--color-link-hover: oklch(
|
|
316
|
+
from var(--color-link) calc(l + var(--state-hover)) c h
|
|
317
|
+
);
|
|
318
|
+
--color-link-active: oklch(
|
|
319
|
+
from var(--color-link) calc(l + var(--state-active)) c h
|
|
320
|
+
);
|
|
321
|
+
--color-link-visited: oklch(
|
|
322
|
+
from var(--color-link) calc(l - var(--state-hover)) c h
|
|
323
|
+
);
|
|
324
|
+
|
|
325
|
+
/* Fill Color*/
|
|
326
|
+
/* For an element, if the background color of its container is not fixed, and the contrast between the filling color of the element and the top background color is small, use the filling color as the background color to ensure that the element will not "melt" into a certain level of background color, such as a form control. */
|
|
327
|
+
--color-fill-base: --alpha(var(--color-base-reverse) / var(--fill-increment));
|
|
328
|
+
--color-fill-hover: --alpha(
|
|
329
|
+
var(--color-base-reverse) /
|
|
330
|
+
calc(var(--fill-increment) * 2)
|
|
331
|
+
);
|
|
332
|
+
--color-fill-active: --alpha(
|
|
333
|
+
var(--color-base-reverse) /
|
|
334
|
+
calc(var(--fill-increment) * 3)
|
|
335
|
+
);
|
|
336
|
+
|
|
337
|
+
/*Disabled state - Disabled
|
|
338
|
+
It is used to fill all kinds of forbidden elements in the interface, such as background, text, stroke, fill, etc*/
|
|
339
|
+
--color-disabled-bg: --alpha(var(--color-base-reverse) / 10%);
|
|
340
|
+
--color-disabled-fg: --alpha(
|
|
341
|
+
var(--color-fg-primary) /
|
|
342
|
+
var(--opacity-disabled)
|
|
343
|
+
);
|
|
344
|
+
--color-disabled-border: --alpha(
|
|
345
|
+
var(--color-border-primary) /
|
|
346
|
+
var(--opacity-disabled)
|
|
347
|
+
);
|
|
348
|
+
--color-disabled-fill: --alpha(
|
|
349
|
+
var(--color-fill-base) /
|
|
350
|
+
var(--opacity-disabled)
|
|
351
|
+
);
|
|
352
|
+
|
|
353
|
+
/* Spacing */
|
|
354
|
+
--spacing: 0.25rem;
|
|
355
|
+
|
|
356
|
+
/* Focus ring */
|
|
357
|
+
--default-ring-color: light-dark(var(--color-black), var(--color-white));
|
|
358
|
+
--color-ring: var(--default-ring-color);
|
|
359
|
+
--default-ring-width: 3px;
|
|
360
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
@theme static {
|
|
2
|
+
/* Primitive Spacing Tokens - Utopia Fluid Scale (50-950) */
|
|
3
|
+
--spacing-50: clamp(0.125rem, 0.1033rem + 0.1087vw, 0.1875rem);
|
|
4
|
+
--spacing-100: clamp(0.3125rem, 0.3125rem + 0vw, 0.3125rem);
|
|
5
|
+
--spacing-150: clamp(0.5625rem, 0.5408rem + 0.1087vw, 0.625rem);
|
|
6
|
+
--spacing-200: clamp(0.875rem, 0.8533rem + 0.1087vw, 0.9375rem);
|
|
7
|
+
--spacing-250: clamp(1.125rem, 1.0815rem + 0.2174vw, 1.25rem);
|
|
8
|
+
--spacing-300: clamp(1.4375rem, 1.394rem + 0.2174vw, 1.5625rem);
|
|
9
|
+
--spacing-350: clamp(1.6875rem, 1.6223rem + 0.3261vw, 1.875rem);
|
|
10
|
+
--spacing-400: clamp(2rem, 1.9348rem + 0.3261vw, 2.1875rem);
|
|
11
|
+
--spacing-450: clamp(2.25rem, 2.163rem + 0.4348vw, 2.5rem);
|
|
12
|
+
--spacing-500: clamp(2.5625rem, 2.4755rem + 0.4348vw, 2.8125rem);
|
|
13
|
+
--spacing-550: clamp(2.8125rem, 2.7038rem + 0.5435vw, 3.125rem);
|
|
14
|
+
--spacing-600: clamp(3.375rem, 3.2446rem + 0.6522vw, 3.75rem);
|
|
15
|
+
--spacing-650: clamp(3.6875rem, 3.5571rem + 0.6522vw, 4.0625rem);
|
|
16
|
+
--spacing-700: clamp(3.9375rem, 3.7853rem + 0.7609vw, 4.375rem);
|
|
17
|
+
--spacing-750: clamp(4.5rem, 4.3261rem + 0.8696vw, 5rem);
|
|
18
|
+
--spacing-800: clamp(5.0625rem, 4.8668rem + 0.9783vw, 5.625rem);
|
|
19
|
+
--spacing-850: clamp(5.625rem, 5.4076rem + 1.087vw, 6.25rem);
|
|
20
|
+
--spacing-900: clamp(6.1875rem, 5.9484rem + 1.1957vw, 6.875rem);
|
|
21
|
+
--spacing-950: clamp(6.75rem, 6.4891rem + 1.3043vw, 7.5rem);
|
|
22
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
@theme static {
|
|
2
|
+
/* Primitive Typography Tokens - Utopia fluid typography */
|
|
3
|
+
--text-xs: clamp(0.7813rem, 0.7747rem + 0.0326vw, 0.8rem); /* 12.5px - 12.8px */
|
|
4
|
+
--text-sm: clamp(0.9375rem, 0.9158rem + 0.1087vw, 1rem); /* 15px - 16px */
|
|
5
|
+
--text-md: clamp(1.125rem, 1.0815rem + 0.2174vw, 1.25rem); /* 18px - 20px */
|
|
6
|
+
--text-lg: clamp(1.35rem, 1.2761rem + 0.3696vw, 1.5625rem); /* 21.6px - 25px */
|
|
7
|
+
--text-xl: clamp(1.62rem, 1.5041rem + 0.5793vw, 1.9531rem); /* 25.92px - 31.25px */
|
|
8
|
+
--text-2xl: clamp(1.944rem, 1.771rem + 0.8651vw, 2.4414rem); /* 31.1px - 39.06px */
|
|
9
|
+
--text-3xl: clamp(2.3328rem, 2.0827rem + 1.2504vw, 3.0518rem); /* 37.32px - 48.83px */
|
|
10
|
+
--text-4xl: clamp(2.7994rem, 2.4462rem + 1.7658vw, 3.8147rem); /* 44.79px - 61.04px */
|
|
11
|
+
|
|
12
|
+
/* === TEXT WEIGHT === */
|
|
13
|
+
--font-weight-normal: 400;
|
|
14
|
+
--font-weight-medium: 500;
|
|
15
|
+
--font-weight-semibold: 600;
|
|
16
|
+
--font-weight-bold: 700;
|
|
17
|
+
}
|