@uselets/ui 1.0.0 → 1.2.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.
Files changed (56) hide show
  1. package/README.md +29 -12
  2. package/dist/cli/uselets.mjs +2 -2
  3. package/dist/cli/uselets.mjs.map +1 -1
  4. package/dist/components/card.js +1 -1
  5. package/dist/components/card.js.map +1 -1
  6. package/dist/components/combobox.d.ts +4 -1
  7. package/dist/components/combobox.js +1 -1
  8. package/dist/components/combobox.js.map +1 -1
  9. package/dist/components/dialog.d.ts +6 -12
  10. package/dist/components/dialog.js +1 -1
  11. package/dist/components/dialog.js.map +1 -1
  12. package/dist/components/field.js +1 -1
  13. package/dist/components/field.js.map +1 -1
  14. package/dist/components/sidebar.js +1 -1
  15. package/dist/components/sidebar.js.map +1 -1
  16. package/dist/components/skeleton.d.ts +5 -1
  17. package/dist/components/skeleton.js +1 -1
  18. package/dist/components/skeleton.js.map +1 -1
  19. package/dist/components/skeleton.spec.d.ts +1 -0
  20. package/dist/components/skeleton.spec.js +2 -0
  21. package/dist/components/skeleton.spec.js.map +1 -0
  22. package/dist/components/tooltip.d.ts +20 -4
  23. package/dist/components/tooltip.js +1 -1
  24. package/dist/components/tooltip.js.map +1 -1
  25. package/dist/components/unstyled-button.d.ts +17 -0
  26. package/dist/components/unstyled-button.js +2 -0
  27. package/dist/components/unstyled-button.js.map +1 -0
  28. package/dist/hooks/use-breakpoint-value.spec.js +1 -1
  29. package/dist/hooks/use-breakpoint.spec.js +1 -1
  30. package/dist/hooks/use-disclosure.spec.js +1 -1
  31. package/dist/hooks/use-document-visibility.spec.js +1 -1
  32. package/dist/hooks/use-idle.spec.js +1 -1
  33. package/dist/hooks/use-interval.spec.js +1 -1
  34. package/dist/hooks/use-local-storage.spec.js +1 -1
  35. package/dist/hooks/use-mobile.spec.js +1 -1
  36. package/dist/index.d.ts +3 -2
  37. package/dist/index.js +1 -1
  38. package/dist/{react.esm-BuxkFT_p.js → react.esm-B3a5z6DL.js} +2 -2
  39. package/dist/{react.esm-BuxkFT_p.js.map → react.esm-B3a5z6DL.js.map} +1 -1
  40. package/dist/skills/uselets-ui/SKILL.md +5 -5
  41. package/dist/skills/uselets-ui/references/component-catalog.md +8 -2
  42. package/dist/skills/uselets-ui/references/package-guide.md +23 -11
  43. package/dist/skills/uselets-ui/scripts/print-public-api.mjs +0 -1
  44. package/dist/styles/base.css +13 -0
  45. package/dist/styles/globals.css +8 -0
  46. package/dist/styles/gomax.css +202 -0
  47. package/dist/styles/max.css +203 -0
  48. package/dist/styles/theme.css +195 -0
  49. package/dist/themes/gomax.css +3 -2
  50. package/dist/themes/max.css +3 -2
  51. package/package.json +1 -2
  52. package/skills/uselets-ui/SKILL.md +5 -5
  53. package/skills/uselets-ui/references/component-catalog.md +8 -2
  54. package/skills/uselets-ui/references/package-guide.md +23 -11
  55. package/skills/uselets-ui/scripts/print-public-api.mjs +0 -1
  56. package/dist/styles.css +0 -2
@@ -36,7 +36,6 @@ To set up a consumer project after installing `@uselets/ui`, run `bun uselets in
36
36
  - `@uselets/ui/<module>`
37
37
  - `@uselets/ui/hooks/<hook-module>`
38
38
  - `@uselets/ui/utils`
39
- - `@uselets/ui/styles.css`
40
39
  - `@uselets/ui/themes/max.css`
41
40
  - `@uselets/ui/themes/gomax.css`
42
41
  - `@uselets/ui/postcss.config`
@@ -47,12 +46,13 @@ To set up a consumer project after installing `@uselets/ui`, run `bun uselets in
47
46
  - Prefer barrel imports for common app usage and readability.
48
47
  - Use module subpaths when you want a single module or when the user asks for the exact import path.
49
48
  - Use `@uselets/ui/hooks/<hook-module>` for dedicated hook subpaths, not legacy `@uselets/ui/use-*` paths.
50
- - Recommend importing one theme stylesheet once in the app entrypoint: `@uselets/ui/themes/max.css` for Max apps or `@uselets/ui/themes/gomax.css` for Gomax apps.
49
+ - Recommend importing Tailwind, one theme stylesheet, and Inter once in the app global CSS. Use `@uselets/ui/themes/max.css` for Max apps or `@uselets/ui/themes/gomax.css` for Gomax apps.
50
+ - Recommend `@source '../node_modules/@uselets/ui/dist';` when Tailwind needs to generate classes used by installed `@uselets/ui` components.
51
51
  - Treat `@uselets/ui/themes/gomax.css` as the GoMax Figma-backed palette, exposed through the same public color families as the Max theme.
52
- - Treat `@uselets/ui/styles.css` as a legacy compatibility alias for the Max theme.
53
52
  - Recommend `@fontsource-variable/inter` when matching the package typography setup.
54
53
  - Recommend `@uselets/ui/postcss.config` when the app needs the package PostCSS preset for Tailwind v4.
55
- - For tooltip-heavy apps, wrap the app with `TooltipProvider`.
54
+ - For tooltip-heavy apps, wrap the app with `TooltipProvider`; use `Tooltip label={...}` for common trigger/content usage and `TooltipRoot` only when manual composition is needed.
55
+ - Use `UnstyledButton` when button semantics are needed without `Button` variants; it provides reset styles, pointer cursor, focus ring, default `type="button"`, and `asChild`.
56
56
  - For toast usage, mount `Toaster` near the app root before calling `toast(...)`.
57
57
  - For package theme helpers, use `ThemeProvider`, `useTheme`, and `ModeToggle` from `@uselets/ui/theme` or the root barrel.
58
58
 
@@ -68,6 +68,6 @@ To set up a consumer project after installing `@uselets/ui`, run `bun uselets in
68
68
 
69
69
  - "How do I install and configure `@uselets/ui` in my app?"
70
70
  - "Which `@uselets/ui` component should I use for this form?"
71
- - "Show me the correct import for `TooltipProvider` or `Sidebar`."
71
+ - "Show me the correct import for `TooltipProvider`, `Tooltip`, `UnstyledButton`, or `Sidebar`."
72
72
  - "Inspect the installed version of `@uselets/ui` and tell me what `button` exports."
73
73
  - "Build this screen only with `@uselets/ui` components."
@@ -62,7 +62,12 @@ Unless noted otherwise, each module also exports its public `*Props` types from
62
62
  - Exports: `Toaster`, `toast`
63
63
  - `tooltip`
64
64
  - Import path: `@uselets/ui/tooltip`
65
- - Exports: `TooltipProvider`, `Tooltip`, `TooltipTrigger`, `TooltipContent`
65
+ - Exports: `TooltipProvider`, `Tooltip`, `TooltipRoot`, `TooltipTrigger`, `TooltipContent`
66
+ - Notes: `Tooltip` is the ergonomic wrapper with `label`, direct content positioning props, and `disabled`; use `TooltipRoot` with `TooltipTrigger` and `TooltipContent` for manual composition
67
+ - `unstyled-button`
68
+ - Import path: `@uselets/ui/unstyled-button`
69
+ - Exports: `UnstyledButton`
70
+ - Notes: button primitive with reset styles, pointer cursor, accessible focus ring, default `type="button"`, and `asChild`
66
71
 
67
72
  ## Typography
68
73
 
@@ -103,6 +108,7 @@ Unless noted otherwise, each module also exports its public `*Props` types from
103
108
  - Exports: `Progress`
104
109
  - `skeleton`
105
110
  - Exports: `Skeleton`
111
+ - Notes: generic loading placeholder; `visible?: boolean` defaults to `true` and can wrap `children` to reserve their size while the skeleton is shown
106
112
  - `spinner`
107
113
  - Exports: `Spinner`, `spinnerVariants`
108
114
 
@@ -144,7 +150,7 @@ Unless noted otherwise, each module also exports its public `*Props` types from
144
150
  - Exports: `NativeSelect`, `NativeSelectOptGroup`, `NativeSelectOption`
145
151
  - `combobox`
146
152
  - Exports: `Combobox`, `ComboboxInput`, `ComboboxContent`, `ComboboxList`, `ComboboxItem`, `ComboboxGroup`, `ComboboxLabel`, `ComboboxCollection`, `ComboboxClear`, `ComboboxEmpty`, `ComboboxSeparator`, `ComboboxChips`, `ComboboxChip`, `ComboboxChipsInput`, `ComboboxTrigger`, `ComboboxValue`, `useComboboxAnchor`
147
- - Notes: `ComboboxInput` supports `icon?: React.ReactNode`, `triggerIcon?: React.ReactNode`, `showTrigger?: boolean`, and `showClear?: boolean`; the trigger icon defaults to `IconSelector`
153
+ - Notes: `ComboboxInput` supports `icon?: React.ReactNode`, `triggerIcon?: React.ReactNode`, `showTrigger?: boolean`, and `showClear?: boolean`; `ComboboxContent` supports `container` for rendering inside overlays such as dialogs
148
154
  - `dropzone`
149
155
  - Exports: `Dropzone`, `DropzoneArea`, `DropzoneDescription`, `DropzoneFileList`, `DropzoneFileListItem`, `DropzoneFileMessage`, `DropzoneMessage`, `DropzoneRemoveFile`, `DropzoneRetryFile`, `DropzoneTrigger`, `InfiniteProgress`, `useDropzone`
150
156
  - Notes: upload composition with validation, retry handling, status list UI, and optional `shiftOnMaxFiles`
@@ -90,8 +90,6 @@ Use `bun uselets skill --agent codex` or `bun uselets skill --agent claude` to i
90
90
  - utility helpers such as `cn` and `randomId`
91
91
  - `@uselets/ui/lib/color`
92
92
  - shared UI color list and type: `uiColors`, `UIColor`
93
- - `@uselets/ui/styles.css`
94
- - legacy compatibility stylesheet equivalent to the Max theme
95
93
  - `@uselets/ui/themes/max.css`
96
94
  - Max theme tokens and component styles
97
95
  - `@uselets/ui/themes/gomax.css`
@@ -101,14 +99,15 @@ Use `bun uselets skill --agent codex` or `bun uselets skill --agent claude` to i
101
99
 
102
100
  ## Base setup
103
101
 
104
- Import one package theme once near the app entrypoint:
102
+ Import Tailwind, one package theme, and Inter once in the app global stylesheet:
105
103
 
106
- ```tsx
107
- import '@uselets/ui/themes/max.css'
108
- import '@fontsource-variable/inter'
104
+ ```css
105
+ @import 'tailwindcss';
106
+ @import '@uselets/ui/themes/max.css';
107
+ @import '@fontsource-variable/inter';
109
108
  ```
110
109
 
111
- For GoMax apps, import `@uselets/ui/themes/gomax.css` instead. The legacy `@uselets/ui/styles.css` entrypoint remains available as a Max-theme alias.
110
+ For GoMax apps, import `@uselets/ui/themes/gomax.css` instead.
112
111
 
113
112
  If the app needs Tailwind v4 PostCSS setup, reuse the package preset:
114
113
 
@@ -116,10 +115,10 @@ If the app needs Tailwind v4 PostCSS setup, reuse the package preset:
116
115
  export { default } from '@uselets/ui/postcss.config'
117
116
  ```
118
117
 
119
- Make sure Tailwind itself is imported in the app stylesheet:
118
+ When the app uses installed `@uselets/ui` components, add a Tailwind source directive so component classes from the package are generated:
120
119
 
121
120
  ```css
122
- @import 'tailwindcss';
121
+ @source '../node_modules/@uselets/ui/dist';
123
122
  ```
124
123
 
125
124
  ## Typography scale
@@ -145,13 +144,14 @@ The Max theme uses Inter as `font-sans` and overrides Tailwind CSS text size uti
145
144
  Use these patterns:
146
145
 
147
146
  ```tsx
148
- import { Alert, Button, cn, randomId } from '@uselets/ui'
147
+ import { Alert, Button, UnstyledButton, cn, randomId } from '@uselets/ui'
149
148
  import type { UIColor } from '@uselets/ui'
150
149
  import { Dialog } from '@uselets/ui/dialog'
151
150
  import { useIsMobile } from '@uselets/ui/hooks/use-mobile'
152
151
  import { useDisclosure } from '@uselets/ui/hooks/use-disclosure'
153
152
  import { useLocalStorage } from '@uselets/ui/hooks/use-local-storage'
154
153
  import { Toaster, toast } from '@uselets/ui/sonner'
154
+ import { UnstyledButton as UnstyledButtonSubpath } from '@uselets/ui/unstyled-button'
155
155
  ```
156
156
 
157
157
  Guidance:
@@ -184,6 +184,10 @@ Use these package-level helpers when relevant:
184
184
 
185
185
  - `TooltipProvider`
186
186
  - Wrap the app or feature root when using tooltips broadly.
187
+ - `Tooltip`
188
+ - Use `label` for common trigger/content usage; pass positioning props such as `side`, `align`, and `sideOffset` directly.
189
+ - `TooltipRoot`
190
+ - Use with `TooltipTrigger` and `TooltipContent` when manual composition or custom structure is needed.
187
191
  - `Toaster`
188
192
  - Mount near the app root before calling `toast(...)`.
189
193
  - `ThemeProvider`
@@ -192,11 +196,19 @@ Use these package-level helpers when relevant:
192
196
  Examples:
193
197
 
194
198
  ```tsx
195
- import { TooltipProvider } from '@uselets/ui/tooltip'
199
+ import { Tooltip, TooltipProvider } from '@uselets/ui/tooltip'
196
200
 
197
201
  export function AppRoot({ children }: { children: React.ReactNode }) {
198
202
  return <TooltipProvider delayDuration={200}>{children}</TooltipProvider>
199
203
  }
204
+
205
+ export function SaveButton() {
206
+ return (
207
+ <Tooltip label="Save changes" side="bottom">
208
+ <button type="button">Save</button>
209
+ </Tooltip>
210
+ )
211
+ }
200
212
  ```
201
213
 
202
214
  ```tsx
@@ -160,7 +160,6 @@ console.log('- barrel: `@uselets/ui`')
160
160
  console.log('- component subpaths: `@uselets/ui/*`')
161
161
  console.log('- hook subpaths: `@uselets/ui/hooks/*`')
162
162
  console.log('- utility helpers: `@uselets/ui/utils`')
163
- console.log('- styles: `@uselets/ui/styles.css` (legacy Max theme alias)')
164
163
  console.log('- Max theme: `@uselets/ui/themes/max.css`')
165
164
  console.log('- Gomax theme: `@uselets/ui/themes/gomax.css`')
166
165
  console.log('- PostCSS preset: `@uselets/ui/postcss.config`')
@@ -0,0 +1,13 @@
1
+ @layer base {
2
+ * {
3
+ @apply border-border outline-ring/50;
4
+ }
5
+
6
+ body {
7
+ @apply bg-background font-sans text-base text-foreground antialiased;
8
+ }
9
+
10
+ html {
11
+ @apply font-sans;
12
+ }
13
+ }
@@ -0,0 +1,8 @@
1
+ @import "tailwindcss";
2
+ @import "./theme.css";
3
+ @import "./max.css";
4
+ @import "./base.css";
5
+
6
+ @source "../../../../apps/**/*.{ts,tsx}";
7
+ @source "../../../../components/**/*.{ts,tsx}";
8
+ @source "../**/*.{ts,tsx}";
@@ -0,0 +1,202 @@
1
+ :root {
2
+ /* palette tokens */
3
+ --primary-50: oklch(0.967 0.011 269.55); /* #F1F4FC */
4
+ --primary-100: oklch(0.934 0.021 268.428); /* #E3E9F8 */
5
+ --primary-200: oklch(0.859 0.043 270.875); /* #C6D0EE */
6
+ --primary-300: oklch(0.752 0.078 272.162); /* #9DACE1 */
7
+ --primary-400: oklch(0.647 0.104 271.342); /* #778ACE */
8
+ --primary-500: oklch(0.534 0.167 269.617); /* #4862CC */
9
+ --primary-600: oklch(0.423 0.174 269.851); /* #2C3EAB */
10
+ --primary-700: oklch(0.353 0.143 272.141); /* #252E84 */
11
+ --primary-800: oklch(0.286 0.111 274.807); /* #1D2060 */
12
+ --primary-900: oklch(0.23 0.08 278.141); /* #161641 */
13
+ --primary-950: oklch(0.192 0.053 281.835); /* #11102B */
14
+
15
+ --brand-50: oklch(0.974 0.01 9.532); /* #FDF4F5 */
16
+ --brand-100: oklch(0.931 0.032 29.76); /* #FDE1DC */
17
+ --brand-200: oklch(0.791 0.122 33.999); /* #FF9D86 */
18
+ --brand-300: oklch(0.734 0.166 34.994); /* #FF7D5D */
19
+ --brand-400: oklch(0.708 0.187 34.708); /* #FF6C49 */
20
+ --brand-500: oklch(0.686 0.205 34.607); /* #FF5C35 */
21
+ --brand-600: oklch(0.64 0.192 34.625); /* #E9532F */
22
+ --brand-700: oklch(0.585 0.175 34.659); /* #CE4929 */
23
+ --brand-800: oklch(0.537 0.163 34.517); /* #B93F22 */
24
+ --brand-900: oklch(0.471 0.141 34.467); /* #9A341C */
25
+ --brand-950: oklch(0.401 0.118 34.378); /* #7B2916 */
26
+
27
+ --gray-50: oklch(0.981 0.005 247.876); /* #F6F9FC */
28
+ --gray-100: oklch(0.952 0.01 247.935); /* #EAF0F6 */
29
+ --gray-200: oklch(0.915 0.016 247.999); /* #DBE4ED */
30
+ --gray-300: oklch(0.821 0.028 244.747); /* #B6C7D6 */
31
+ --gray-400: oklch(0.744 0.039 247.107); /* #99AFC4 */
32
+ --gray-500: oklch(0.646 0.052 249.575); /* #7691AD */
33
+ --gray-600: oklch(0.532 0.063 251.386); /* #516F90 */
34
+ --gray-700: oklch(0.454 0.055 249.121); /* #3E5974 */
35
+ --gray-800: oklch(0.313 0.037 246.164); /* #213343 */
36
+ --gray-900: oklch(0.266 0.03 245.1); /* #192733 */
37
+ --gray-950: oklch(0.216 0.021 243.075); /* #111B23 */
38
+
39
+ --zinc-50: oklch(0.979 0 0); /* #F8F8F8 */
40
+ --zinc-100: oklch(0.952 0 0); /* #EFEFEF */
41
+ --zinc-200: oklch(0.885 0 0); /* #D9D9D9 */
42
+ --zinc-300: oklch(0.798 0 0); /* #BDBDBD */
43
+ --zinc-400: oklch(0.68 0 0); /* #989898 */
44
+ --zinc-500: oklch(0.586 0 0); /* #7C7C7C */
45
+ --zinc-600: oklch(0.507 0 0); /* #656565 */
46
+ --zinc-700: oklch(0.394 0 0); /* #464646 */
47
+ --zinc-800: oklch(0.305 0.002 106.504); /* #2F2F2E */
48
+ --zinc-900: oklch(0.207 0.004 345.603); /* #191718 */
49
+ --zinc-950: oklch(0.155 0.003 67.627); /* #0D0C0B */
50
+
51
+ --red-50: oklch(0.968 0.013 5.8); /* #FDF1F3 */
52
+ --red-100: oklch(0.936 0.03 7.525); /* #FDE2E6 */
53
+ --red-200: oklch(0.862 0.071 9.896); /* #FCBFC7 */
54
+ --red-300: oklch(0.755 0.145 13.73); /* #FD8694 */
55
+ --red-400: oklch(0.673 0.211 19.364); /* #FD4D5F */
56
+ --red-500: oklch(0.615 0.224 22.558); /* #ED2D40 */
57
+ --red-600: oklch(0.538 0.21 26.258); /* #CC1420 */
58
+ --red-700: oklch(0.44 0.165 25.779); /* #99151B */
59
+ --red-800: oklch(0.349 0.122 24.328); /* #6C1317 */
60
+ --red-900: oklch(0.266 0.084 22.977); /* #460F11 */
61
+ --red-950: oklch(0.211 0.055 21.251); /* #2D0C0D */
62
+
63
+ --yellow-50: oklch(0.988 0.014 88.681); /* #FFFBF1 */
64
+ --yellow-100: oklch(0.974 0.029 89.569); /* #FEF6E1 */
65
+ --yellow-200: oklch(0.944 0.059 84.511); /* #FFEAC0 */
66
+ --yellow-300: oklch(0.885 0.104 78.009); /* #FFD189 */
67
+ --yellow-400: oklch(0.827 0.142 71.92); /* #FFB652 */
68
+ --yellow-500: oklch(0.798 0.158 67.669); /* #FFA736 */
69
+ --yellow-600: oklch(0.709 0.171 55.903); /* #EF7F0A */
70
+ --yellow-700: oklch(0.564 0.138 53.071); /* #B25A0E */
71
+ --yellow-800: oklch(0.433 0.1 52.359); /* #7A3E11 */
72
+ --yellow-900: oklch(0.324 0.069 50.591); /* #4F280F */
73
+ --yellow-950: oklch(0.249 0.046 47.281); /* #331A0D */
74
+
75
+ --green-50: oklch(0.98 0.003 145.55); /* #F7F9F7 */
76
+ --green-100: oklch(0.957 0.012 145.482); /* #ECF3EC */
77
+ --green-200: oklch(0.912 0.032 143.849); /* #D6E8D5 */
78
+ --green-300: oklch(0.838 0.073 143.695); /* #AED7AC */
79
+ --green-400: oklch(0.767 0.12 142.694); /* #85C780 */
80
+ --green-500: oklch(0.675 0.165 142.096); /* #52AF4A */
81
+ --green-600: oklch(0.567 0.13 141.644); /* #45893D */
82
+ --green-700: oklch(0.467 0.097 140.77); /* #396731 */
83
+ --green-800: oklch(0.366 0.066 140.101); /* #2B4725 */
84
+ --green-900: oklch(0.281 0.041 139.471); /* #1E2E1A */
85
+ --green-950: oklch(0.222 0.026 138.012); /* #151E12 */
86
+
87
+ --blue-50: oklch(0.976 0.002 247.839); /* #F6F7F8 */
88
+ --blue-100: oklch(0.948 0.006 255.476); /* #EBEEF2 */
89
+ --blue-200: oklch(0.891 0.018 240.018); /* #D1DDE6 */
90
+ --blue-300: oklch(0.8 0.044 240.87); /* #A5C2D8 */
91
+ --blue-400: oklch(0.715 0.077 240.176); /* #76AACF */
92
+ --blue-500: oklch(0.622 0.113 242.424); /* #408EC5 */
93
+ --blue-600: oklch(0.538 0.097 239.26); /* #2F75A0 */
94
+ --blue-700: oklch(0.452 0.072 234.642); /* #275C78 */
95
+ --blue-800: oklch(0.363 0.05 228.7); /* #1E4353 */
96
+ --blue-900: oklch(0.282 0.032 222.574); /* #162D35 */
97
+ --blue-950: oklch(0.224 0.021 217.756); /* #101E22 */
98
+
99
+ --indigo-50: oklch(0.966 0.012 301.287); /* #F5F2FB */
100
+ --indigo-100: oklch(0.929 0.028 299.539); /* #EAE4F8 */
101
+ --indigo-200: oklch(0.851 0.062 297.56); /* #D2C6F2 */
102
+ --indigo-300: oklch(0.743 0.087 295.69); /* #B0A1DD */
103
+ --indigo-400: oklch(0.611 0.153 291.363); /* #866FD7 */
104
+ --indigo-500: oklch(0.559 0.193 287.911); /* #7358DC */
105
+ --indigo-600: oklch(0.42 0.218 279.213); /* #4026BE */
106
+ --indigo-700: oklch(0.351 0.17 279.238); /* #30218F */
107
+ --indigo-800: oklch(0.286 0.122 280.262); /* #231B64 */
108
+ --indigo-900: oklch(0.229 0.079 281.288); /* #181540 */
109
+ --indigo-950: oklch(0.19 0.049 282.432); /* #111029 */
110
+
111
+ --pink-50: oklch(0.969 0.016 341.389); /* #FDF1F8 */
112
+ --pink-100: oklch(0.944 0.027 337.065); /* #F9E6F3 */
113
+ --pink-200: oklch(0.903 0.045 338.704); /* #F4D4E9 */
114
+ --pink-300: oklch(0.778 0.085 337.731); /* #DBA2CA */
115
+ --pink-400: oklch(0.68 0.145 338.806); /* #D172B6 */
116
+ --pink-500: oklch(0.624 0.191 340.354); /* #CE4EAA */
117
+ --pink-600: oklch(0.532 0.19 339.952); /* #AE2F8E */
118
+ --pink-700: oklch(0.436 0.148 337.368); /* #81276E */
119
+ --pink-800: oklch(0.345 0.103 335.104); /* #58204E */
120
+ --pink-900: oklch(0.266 0.065 332.23); /* #371833 */
121
+ --pink-950: oklch(0.211 0.036 331.312); /* #221220 */
122
+
123
+ /* gradient tokens */
124
+ --gradient-primary: linear-gradient(
125
+ 87.14044870021029deg,
126
+ oklch(0.534 0.167 269.617) 0% /* #4862CC */,
127
+ oklch(0.71 0.167 13.3) 100% /* #F76F83 */
128
+ );
129
+
130
+ /* semantic tokens */
131
+ --background: var(--gray-50);
132
+ --foreground: var(--gray-900);
133
+ --card: oklch(1 0 0);
134
+ --card-foreground: var(--gray-900);
135
+ --popover: oklch(1 0 0);
136
+ --popover-foreground: var(--gray-900);
137
+ --primary: var(--primary-500);
138
+ --primary-foreground: oklch(1 0 0);
139
+ --brand: var(--brand-500);
140
+ --brand-foreground: oklch(1 0 0);
141
+ --secondary: var(--gray-100);
142
+ --secondary-foreground: var(--gray-900);
143
+ --muted: var(--gray-100);
144
+ --muted-foreground: var(--gray-600);
145
+ --accent: var(--gray-200);
146
+ --accent-foreground: var(--gray-900);
147
+ --destructive: var(--red-500);
148
+ --destructive-foreground: oklch(1 0 0);
149
+ --border: var(--gray-200);
150
+ --input: var(--gray-200);
151
+ --ring: var(--primary-300);
152
+ --chart-1: var(--primary-500);
153
+ --chart-2: var(--green-500);
154
+ --chart-3: var(--blue-500);
155
+ --chart-4: var(--indigo-500);
156
+ --chart-5: var(--pink-500);
157
+ --sidebar: var(--gray-100);
158
+ --sidebar-foreground: var(--gray-900);
159
+ --sidebar-primary: var(--primary-500);
160
+ --sidebar-primary-foreground: oklch(1 0 0);
161
+ --sidebar-accent: var(--gray-200);
162
+ --sidebar-accent-foreground: var(--gray-900);
163
+ --sidebar-border: var(--gray-200);
164
+ --sidebar-ring: var(--primary-300);
165
+ }
166
+
167
+ .dark {
168
+ --background: var(--zinc-950);
169
+ --foreground: var(--zinc-50);
170
+ --card: var(--zinc-900);
171
+ --card-foreground: var(--zinc-50);
172
+ --popover: var(--zinc-900);
173
+ --popover-foreground: var(--zinc-50);
174
+ --primary: var(--primary-400);
175
+ --primary-foreground: oklch(1 0 0);
176
+ --brand: var(--brand-400);
177
+ --brand-foreground: oklch(1 0 0);
178
+ --secondary: var(--zinc-800);
179
+ --secondary-foreground: var(--zinc-50);
180
+ --muted: var(--zinc-800);
181
+ --muted-foreground: var(--zinc-400);
182
+ --accent: var(--zinc-700);
183
+ --accent-foreground: var(--zinc-50);
184
+ --destructive: var(--red-400);
185
+ --destructive-foreground: oklch(1 0 0);
186
+ --border: var(--zinc-700);
187
+ --input: var(--zinc-600);
188
+ --ring: var(--primary-400);
189
+ --chart-1: var(--primary-400);
190
+ --chart-2: var(--green-400);
191
+ --chart-3: var(--blue-400);
192
+ --chart-4: var(--indigo-400);
193
+ --chart-5: var(--pink-300);
194
+ --sidebar: var(--zinc-900);
195
+ --sidebar-foreground: var(--zinc-50);
196
+ --sidebar-primary: var(--primary-400);
197
+ --sidebar-primary-foreground: oklch(1 0 0);
198
+ --sidebar-accent: var(--zinc-700);
199
+ --sidebar-accent-foreground: var(--zinc-50);
200
+ --sidebar-border: var(--zinc-700);
201
+ --sidebar-ring: var(--primary-400);
202
+ }
@@ -0,0 +1,203 @@
1
+ :root {
2
+ /* palette tokens */
3
+ --primary-50: oklch(0.969 0.015 17.418); /* #FFF1F1 */
4
+ --primary-100: oklch(0.932 0.034 17.784); /* #FFE0E0 */
5
+ --primary-200: oklch(0.857 0.078 17.808); /* #FFBCBD */
6
+ --primary-300: oklch(0.759 0.144 17.923); /* #FF888E */
7
+ --primary-400: oklch(0.678 0.201 19.93); /* #FB5562 */
8
+ --primary-500: oklch(0.644 0.226 23.049); /* #F93846 */
9
+ --primary-600: oklch(0.576 0.226 25.087); /* #E01429 */
10
+ --primary-700: oklch(0.507 0.2 24.989); /* #BD0E21 */
11
+ --primary-800: oklch(0.439 0.169 24.647); /* #9A0F1C */
12
+ --primary-900: oklch(0.381 0.142 23.935); /* #7D1019 */
13
+ --primary-950: oklch(0.248 0.092 23.922); /* #430509 */
14
+
15
+ --brand-50: oklch(0.973 0.011 39.44); /* #FDF4F1 */
16
+ --brand-100: oklch(0.93 0.033 38.63); /* #FDE1D8 */
17
+ --brand-200: oklch(0.864 0.072 39.865); /* #FDC3AF */
18
+ --brand-300: oklch(0.794 0.121 39); /* #FEA081 */
19
+ --brand-400: oklch(0.739 0.164 38.91); /* #FF8157 */
20
+ --brand-500: oklch(0.686 0.205 34.607); /* #FF5C35 */
21
+ --brand-600: oklch(0.637 0.213 35.811); /* #F0470F */
22
+ --brand-700: oklch(0.537 0.172 36.579); /* #BC3B10 */
23
+ --brand-800: oklch(0.423 0.128 37.154); /* #852C0F */
24
+ --brand-900: oklch(0.309 0.087 38.386); /* #531C09 */
25
+ --brand-950: oklch(0.216 0.051 40.042); /* #2D1006 */
26
+
27
+ --gray-50: oklch(1 0 0); /* #FFFFFF */
28
+ --gray-100: oklch(0.981 0.005 247.876); /* #F6F9FC */
29
+ --gray-200: oklch(0.952 0.01 247.935); /* #EAF0F6 */
30
+ --gray-300: oklch(0.915 0.016 247.999); /* #DBE4ED */
31
+ --gray-400: oklch(0.821 0.028 244.747); /* #B6C7D6 */
32
+ --gray-500: oklch(0.744 0.039 247.107); /* #99AFC4 */
33
+ --gray-600: oklch(0.646 0.052 249.575); /* #7691AD */
34
+ --gray-700: oklch(0.532 0.063 251.386); /* #516F90 */
35
+ --gray-800: oklch(0.454 0.055 249.121); /* #3E5974 */
36
+ --gray-900: oklch(0.313 0.037 246.164); /* #213343 */
37
+ --gray-950: oklch(0.266 0.03 245.1); /* #192733 */
38
+
39
+ --zinc-50: oklch(1 0 0); /* #FFFFFF */
40
+ --zinc-100: oklch(0.979 0 0); /* #F8F8F8 */
41
+ --zinc-200: oklch(0.952 0 0); /* #EFEFEF */
42
+ --zinc-300: oklch(0.885 0 0); /* #D9D9D9 */
43
+ --zinc-400: oklch(0.798 0 0); /* #BDBDBD */
44
+ --zinc-500: oklch(0.68 0 0); /* #989898 */
45
+ --zinc-600: oklch(0.586 0 0); /* #7C7C7C */
46
+ --zinc-700: oklch(0.507 0 0); /* #656565 */
47
+ --zinc-800: oklch(0.394 0 0); /* #464646 */
48
+ --zinc-900: oklch(0.305 0.002 106.504); /* #2F2F2E */
49
+ --zinc-950: oklch(0.207 0.004 48.535); /* #191716 */
50
+
51
+ --red-50: oklch(0.974 0.004 359.996); /* #F9F5F6 */
52
+ --red-100: oklch(0.928 0.016 12.798); /* #F2E3E4 */
53
+ --red-200: oklch(0.84 0.05 11.897); /* #E9BEC2 */
54
+ --red-300: oklch(0.741 0.105 13.147); /* #E58F98 */
55
+ --red-400: oklch(0.647 0.181 17.734); /* #E75564 */
56
+ --red-500: oklch(0.585 0.218 23.835); /* #E02535 */
57
+ --red-600: oklch(0.524 0.189 22.069); /* #BF2434 */
58
+ --red-700: oklch(0.45 0.161 21.978); /* #9B1C29 */
59
+ --red-800: oklch(0.368 0.128 20.619); /* #741520 */
60
+ --red-900: oklch(0.284 0.093 19.546); /* #4E0F16 */
61
+ --red-950: oklch(0.207 0.058 20.395); /* #2D0A0C */
62
+
63
+ --yellow-50: oklch(0.988 0.014 88.681); /* #FFFBF1 */
64
+ --yellow-100: oklch(0.974 0.029 89.569); /* #FEF6E1 */
65
+ --yellow-200: oklch(0.944 0.059 84.511); /* #FFEAC0 */
66
+ --yellow-300: oklch(0.885 0.104 78.009); /* #FFD189 */
67
+ --yellow-400: oklch(0.827 0.142 71.92); /* #FFB652 */
68
+ --yellow-500: oklch(0.798 0.158 67.669); /* #FFA736 */
69
+ --yellow-600: oklch(0.709 0.171 55.903); /* #EF7F0A */
70
+ --yellow-700: oklch(0.564 0.138 53.071); /* #B25A0E */
71
+ --yellow-800: oklch(0.433 0.1 52.359); /* #7A3E11 */
72
+ --yellow-900: oklch(0.324 0.069 50.591); /* #4F280F */
73
+ --yellow-950: oklch(0.249 0.046 47.281); /* #331A0D */
74
+
75
+ --green-50: oklch(0.98 0.003 145.55); /* #F7F9F7 */
76
+ --green-100: oklch(0.957 0.012 145.482); /* #ECF3EC */
77
+ --green-200: oklch(0.912 0.032 143.849); /* #D6E8D5 */
78
+ --green-300: oklch(0.838 0.073 143.695); /* #AED7AC */
79
+ --green-400: oklch(0.767 0.12 142.694); /* #85C780 */
80
+ --green-500: oklch(0.675 0.165 142.096); /* #52AF4A */
81
+ --green-600: oklch(0.567 0.13 141.644); /* #45893D */
82
+ --green-700: oklch(0.467 0.097 140.77); /* #396731 */
83
+ --green-800: oklch(0.366 0.066 140.101); /* #2B4725 */
84
+ --green-900: oklch(0.281 0.041 139.471); /* #1E2E1A */
85
+ --green-950: oklch(0.222 0.026 138.012); /* #151E12 */
86
+
87
+ --blue-50: oklch(0.976 0.002 247.839); /* #F6F7F8 */
88
+ --blue-100: oklch(0.948 0.006 255.476); /* #EBEEF2 */
89
+ --blue-200: oklch(0.891 0.018 240.018); /* #D1DDE6 */
90
+ --blue-300: oklch(0.8 0.044 240.87); /* #A5C2D8 */
91
+ --blue-400: oklch(0.715 0.077 240.176); /* #76AACF */
92
+ --blue-500: oklch(0.622 0.113 242.424); /* #408EC5 */
93
+ --blue-600: oklch(0.538 0.097 239.26); /* #2F75A0 */
94
+ --blue-700: oklch(0.452 0.072 234.642); /* #275C78 */
95
+ --blue-800: oklch(0.363 0.05 228.7); /* #1E4353 */
96
+ --blue-900: oklch(0.282 0.032 222.574); /* #162D35 */
97
+ --blue-950: oklch(0.224 0.021 217.756); /* #101E22 */
98
+
99
+ --indigo-50: oklch(0.969 0.009 286.225); /* #F4F4FB */
100
+ --indigo-100: oklch(0.924 0.026 283.478); /* #E3E4F7 */
101
+ --indigo-200: oklch(0.845 0.057 282.903); /* #C6C8F1 */
102
+ --indigo-300: oklch(0.737 0.105 281.065); /* #9EA2EB */
103
+ --indigo-400: oklch(0.624 0.155 278.421); /* #747AE2 */
104
+ --indigo-500: oklch(0.532 0.184 276.037); /* #545AD4 */
105
+ --indigo-600: oklch(0.46 0.163 275.857); /* #4348B0 */
106
+ --indigo-700: oklch(0.383 0.14 275.071); /* #31368C */
107
+ --indigo-800: oklch(0.3 0.109 275.563); /* #212463 */
108
+ --indigo-900: oklch(0.225 0.073 276.527); /* #14163D */
109
+ --indigo-950: oklch(0.172 0.043 278.782); /* #0C0D22 */
110
+
111
+ --pink-50: oklch(0.893 0.047 335.372);
112
+ --pink-100: oklch(0.839 0.076 336.368);
113
+ --pink-200: oklch(0.732 0.133 338.361);
114
+ --pink-300: oklch(0.624 0.191 340.354);
115
+ --pink-400: oklch(0.581 0.205 342.54);
116
+ --pink-500: oklch(0.538 0.22 344.727);
117
+ --pink-600: oklch(0.478 0.195 344.211);
118
+ --pink-700: oklch(0.418 0.17 343.696);
119
+ --pink-800: oklch(0.358 0.144 343.18);
120
+ --pink-900: oklch(0.298 0.119 342.664);
121
+ --pink-950: oklch(0.268 0.106 342.406);
122
+
123
+ /* gradient tokens */
124
+ --gradient-primary: linear-gradient(
125
+ 87.14044870021029deg,
126
+ oklch(0.644 0.226 23.049) 0%,
127
+ oklch(0.686 0.205 34.607) 50%,
128
+ oklch(0.71 0.167 13.3) 100%
129
+ );
130
+
131
+ /* semantic tokens */
132
+ --background: var(--zinc-50);
133
+ --foreground: var(--zinc-950);
134
+ --card: var(--zinc-50);
135
+ --card-foreground: var(--zinc-950);
136
+ --popover: var(--zinc-50);
137
+ --popover-foreground: var(--zinc-950);
138
+ --primary: var(--primary-500);
139
+ --primary-foreground: var(--zinc-50);
140
+ --brand: var(--brand-500);
141
+ --brand-foreground: var(--zinc-50);
142
+ --secondary: var(--zinc-100);
143
+ --secondary-foreground: var(--zinc-900);
144
+ --muted: var(--zinc-100);
145
+ --muted-foreground: var(--zinc-600);
146
+ --accent: var(--zinc-200);
147
+ --accent-foreground: var(--zinc-950);
148
+ --destructive: var(--red-500);
149
+ --destructive-foreground: var(--zinc-50);
150
+ --border: var(--zinc-200);
151
+ --input: var(--zinc-200);
152
+ --ring: var(--primary-300);
153
+ --chart-1: var(--primary-500);
154
+ --chart-2: var(--green-500);
155
+ --chart-3: var(--blue-500);
156
+ --chart-4: var(--indigo-500);
157
+ --chart-5: var(--pink-500);
158
+ --sidebar: var(--zinc-100);
159
+ --sidebar-foreground: var(--zinc-950);
160
+ --sidebar-primary: var(--primary-500);
161
+ --sidebar-primary-foreground: var(--zinc-50);
162
+ --sidebar-accent: var(--zinc-200);
163
+ --sidebar-accent-foreground: var(--zinc-900);
164
+ --sidebar-border: var(--zinc-200);
165
+ --sidebar-ring: var(--primary-300);
166
+ }
167
+
168
+ .dark {
169
+ --background: var(--zinc-950);
170
+ --foreground: var(--zinc-50);
171
+ --card: var(--zinc-900);
172
+ --card-foreground: var(--zinc-50);
173
+ --popover: var(--zinc-900);
174
+ --popover-foreground: var(--zinc-50);
175
+ --primary: var(--primary-400);
176
+ --primary-foreground: var(--zinc-50);
177
+ --brand: var(--brand-400);
178
+ --brand-foreground: var(--zinc-50);
179
+ --secondary: var(--zinc-800);
180
+ --secondary-foreground: var(--zinc-50);
181
+ --muted: var(--zinc-800);
182
+ --muted-foreground: var(--zinc-300);
183
+ --accent: var(--zinc-800);
184
+ --accent-foreground: var(--zinc-50);
185
+ --destructive: var(--red-400);
186
+ --destructive-foreground: var(--zinc-950);
187
+ --border: var(--zinc-800);
188
+ --input: var(--zinc-700);
189
+ --ring: var(--primary-400);
190
+ --chart-1: var(--primary-400);
191
+ --chart-2: var(--green-400);
192
+ --chart-3: var(--blue-400);
193
+ --chart-4: var(--indigo-400);
194
+ --chart-5: var(--pink-300);
195
+ --sidebar: var(--zinc-900);
196
+ --sidebar-foreground: var(--zinc-50);
197
+ --sidebar-primary: var(--primary-400);
198
+ --sidebar-primary-foreground: var(--zinc-50);
199
+ --sidebar-accent: var(--zinc-800);
200
+ --sidebar-accent-foreground: var(--zinc-50);
201
+ --sidebar-border: var(--zinc-800);
202
+ --sidebar-ring: var(--primary-400);
203
+ }