@a-type/ui 2.5.0 → 2.6.1

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 (102) hide show
  1. package/dist/cjs/colors.stories.d.ts +1 -0
  2. package/dist/cjs/colors.stories.js +12 -6
  3. package/dist/cjs/colors.stories.js.map +1 -1
  4. package/dist/cjs/components/button/classes.js +5 -5
  5. package/dist/cjs/components/button/classes.js.map +1 -1
  6. package/dist/cjs/components/camera/Camera.js +4 -4
  7. package/dist/cjs/components/camera/Camera.js.map +1 -1
  8. package/dist/cjs/components/card/Card.js +2 -2
  9. package/dist/cjs/components/card/Card.js.map +1 -1
  10. package/dist/cjs/components/chip/Chip.js +1 -1
  11. package/dist/cjs/components/datePicker/DatePicker.js +2 -2
  12. package/dist/cjs/components/datePicker/DatePicker.js.map +1 -1
  13. package/dist/cjs/components/dialog/Dialog.js +1 -1
  14. package/dist/cjs/components/dialog/Dialog.js.map +1 -1
  15. package/dist/cjs/components/dropdownMenu/DropdownMenu.js +1 -1
  16. package/dist/cjs/components/dropdownMenu/DropdownMenu.js.map +1 -1
  17. package/dist/cjs/components/editableText/EditableText.js +1 -1
  18. package/dist/cjs/components/editableText/EditableText.js.map +1 -1
  19. package/dist/cjs/components/forms/CheckboxField.js +1 -1
  20. package/dist/cjs/components/forms/CheckboxField.js.map +1 -1
  21. package/dist/cjs/components/forms/NumberStepperField.js +1 -1
  22. package/dist/cjs/components/forms/NumberStepperField.js.map +1 -1
  23. package/dist/cjs/components/forms/TextField.js +1 -1
  24. package/dist/cjs/components/forms/TextField.js.map +1 -1
  25. package/dist/cjs/components/imageUploader/ImageUploader.js +1 -1
  26. package/dist/cjs/components/imageUploader/ImageUploader.js.map +1 -1
  27. package/dist/cjs/components/navBar/NavBar.js +3 -3
  28. package/dist/cjs/components/navBar/NavBar.js.map +1 -1
  29. package/dist/cjs/components/scrollArea/ScrollArea.stories.js +2 -2
  30. package/dist/cjs/components/scrollArea/ScrollArea.stories.js.map +1 -1
  31. package/dist/cjs/components/tabs/tabs.js +1 -1
  32. package/dist/cjs/components/tabs/tabs.js.map +1 -1
  33. package/dist/cjs/components/textArea/TextArea.js +1 -1
  34. package/dist/cjs/components/textArea/TextArea.js.map +1 -1
  35. package/dist/cjs/components/tooltip/Tooltip.js +3 -3
  36. package/dist/cjs/components/tooltip/Tooltip.js.map +1 -1
  37. package/dist/cjs/uno/colors.js +26 -12
  38. package/dist/cjs/uno/colors.js.map +1 -1
  39. package/dist/cjs/uno/uno.preset.js +75 -38
  40. package/dist/cjs/uno/uno.preset.js.map +1 -1
  41. package/dist/css/main.css +332 -307
  42. package/dist/esm/colors.stories.d.ts +1 -0
  43. package/dist/esm/colors.stories.js +11 -5
  44. package/dist/esm/colors.stories.js.map +1 -1
  45. package/dist/esm/components/button/classes.js +5 -5
  46. package/dist/esm/components/button/classes.js.map +1 -1
  47. package/dist/esm/components/camera/Camera.js +4 -4
  48. package/dist/esm/components/camera/Camera.js.map +1 -1
  49. package/dist/esm/components/card/Card.js +2 -2
  50. package/dist/esm/components/card/Card.js.map +1 -1
  51. package/dist/esm/components/chip/Chip.js +1 -1
  52. package/dist/esm/components/datePicker/DatePicker.js +2 -2
  53. package/dist/esm/components/datePicker/DatePicker.js.map +1 -1
  54. package/dist/esm/components/dialog/Dialog.js +1 -1
  55. package/dist/esm/components/dialog/Dialog.js.map +1 -1
  56. package/dist/esm/components/dropdownMenu/DropdownMenu.js +1 -1
  57. package/dist/esm/components/dropdownMenu/DropdownMenu.js.map +1 -1
  58. package/dist/esm/components/editableText/EditableText.js +1 -1
  59. package/dist/esm/components/editableText/EditableText.js.map +1 -1
  60. package/dist/esm/components/forms/CheckboxField.js +1 -1
  61. package/dist/esm/components/forms/CheckboxField.js.map +1 -1
  62. package/dist/esm/components/forms/NumberStepperField.js +1 -1
  63. package/dist/esm/components/forms/NumberStepperField.js.map +1 -1
  64. package/dist/esm/components/forms/TextField.js +1 -1
  65. package/dist/esm/components/forms/TextField.js.map +1 -1
  66. package/dist/esm/components/imageUploader/ImageUploader.js +1 -1
  67. package/dist/esm/components/imageUploader/ImageUploader.js.map +1 -1
  68. package/dist/esm/components/navBar/NavBar.js +3 -3
  69. package/dist/esm/components/navBar/NavBar.js.map +1 -1
  70. package/dist/esm/components/scrollArea/ScrollArea.stories.js +2 -2
  71. package/dist/esm/components/scrollArea/ScrollArea.stories.js.map +1 -1
  72. package/dist/esm/components/tabs/tabs.js +1 -1
  73. package/dist/esm/components/tabs/tabs.js.map +1 -1
  74. package/dist/esm/components/textArea/TextArea.js +1 -1
  75. package/dist/esm/components/textArea/TextArea.js.map +1 -1
  76. package/dist/esm/components/tooltip/Tooltip.js +3 -3
  77. package/dist/esm/components/tooltip/Tooltip.js.map +1 -1
  78. package/dist/esm/uno/colors.js +26 -12
  79. package/dist/esm/uno/colors.js.map +1 -1
  80. package/dist/esm/uno/uno.preset.js +75 -38
  81. package/dist/esm/uno/uno.preset.js.map +1 -1
  82. package/package.json +1 -1
  83. package/src/colors.stories.tsx +120 -12
  84. package/src/components/button/classes.tsx +5 -5
  85. package/src/components/camera/Camera.tsx +4 -4
  86. package/src/components/card/Card.tsx +2 -2
  87. package/src/components/chip/Chip.tsx +1 -1
  88. package/src/components/datePicker/DatePicker.tsx +7 -7
  89. package/src/components/dialog/Dialog.tsx +1 -1
  90. package/src/components/dropdownMenu/DropdownMenu.tsx +1 -1
  91. package/src/components/editableText/EditableText.tsx +1 -1
  92. package/src/components/forms/CheckboxField.tsx +1 -1
  93. package/src/components/forms/NumberStepperField.tsx +1 -1
  94. package/src/components/forms/TextField.tsx +1 -1
  95. package/src/components/imageUploader/ImageUploader.tsx +1 -1
  96. package/src/components/navBar/NavBar.tsx +3 -3
  97. package/src/components/scrollArea/ScrollArea.stories.tsx +2 -2
  98. package/src/components/tabs/tabs.tsx +4 -4
  99. package/src/components/textArea/TextArea.tsx +1 -1
  100. package/src/components/tooltip/Tooltip.tsx +3 -3
  101. package/src/uno/colors.ts +27 -12
  102. package/src/uno/uno.preset.ts +78 -47
@@ -14,8 +14,8 @@ const meta = {
14
14
  customRotate: {
15
15
  control: {
16
16
  type: 'range',
17
- min: -180,
18
- max: 180,
17
+ min: -20,
18
+ max: 20,
19
19
  },
20
20
  },
21
21
  },
@@ -41,14 +41,52 @@ export const Default: Story = {
41
41
  }
42
42
  : {};
43
43
  return (
44
- <Box d="col">
45
- <Range className="theme-lemon" />
46
- <Range className="theme-leek" />
47
- <Range className="theme-tomato" />
48
- <Range className="theme-eggplant" />
49
- <Range className="theme-blueberry" />
50
- <Range className="theme-salt" />
51
- <Range className="theme" style={style} />
44
+ <Box col>
45
+ <input type="color" className="sticky top-0 z-1" />
46
+ <Box full>
47
+ <Box d="col" grow p surface="default">
48
+ <Range className="theme" style={style} />
49
+ <Range className="theme-lemon" />
50
+ <Range className="theme-leek" />
51
+ <Range className="theme-tomato" />
52
+ <Range className="theme-eggplant" />
53
+ <Range className="theme-blueberry" />
54
+ <Range className="theme-salt" />
55
+ <Box className="h-100px">
56
+ <Box grow className="bg-gray-wash" />
57
+ <Box grow className="bg-gray-light" />
58
+ <Box grow className="bg-gray" />
59
+ <Box grow className="bg-gray-dark" />
60
+ <Box grow className="bg-gray-ink" />
61
+ </Box>
62
+ <Box className="h-100px">
63
+ <Box grow className="bg-black" />
64
+ <Box grow className="bg-wash" />
65
+ <Box grow className="bg-white" />
66
+ </Box>
67
+ </Box>
68
+ <Box d="col" className="override-dark theme" grow p surface="default">
69
+ <Range className="theme" style={style} />
70
+ <Range className="theme-lemon" />
71
+ <Range className="theme-leek" />
72
+ <Range className="theme-tomato" />
73
+ <Range className="theme-eggplant" />
74
+ <Range className="theme-blueberry" />
75
+ <Range className="theme-salt" />
76
+ <Box className="h-100px">
77
+ <Box grow className="bg-gray-wash" />
78
+ <Box grow className="bg-gray-light" />
79
+ <Box grow className="bg-gray" />
80
+ <Box grow className="bg-gray-dark" />
81
+ <Box grow className="bg-gray-ink" />
82
+ </Box>
83
+ <Box className="h-100px">
84
+ <Box grow className="bg-black" />
85
+ <Box grow className="bg-wash" />
86
+ <Box grow className="bg-white" />
87
+ </Box>
88
+ </Box>
89
+ </Box>
52
90
  </Box>
53
91
  );
54
92
  },
@@ -65,11 +103,11 @@ function Swatch({
65
103
  <div
66
104
  className={className}
67
105
  style={{
68
- width: '100px',
69
106
  height: '100px',
70
107
  display: 'flex',
71
108
  justifyContent: 'center',
72
109
  alignItems: 'center',
110
+ flex: '1',
73
111
  }}
74
112
  >
75
113
  {children}
@@ -148,7 +186,7 @@ export const Inheritance: Story = {
148
186
  return (
149
187
  <Box surface="primary" p="xl" className="theme" style={style}>
150
188
  <Box
151
- className="border-color-bg border-color-darken-5 color-bg color-darken-5"
189
+ className="border-bg border-darken-5 color-bg color-darken-5"
152
190
  border
153
191
  p="xl"
154
192
  >
@@ -158,3 +196,73 @@ export const Inheritance: Story = {
158
196
  );
159
197
  },
160
198
  };
199
+
200
+ export const TweakOpacity: Story = {
201
+ render() {
202
+ // none of these elements have root opacity; all opacity is done through colors
203
+ return (
204
+ <Box surface="accent" className="h-32" full="width" p gap>
205
+ <Box
206
+ className="bg-primary/100 h-full color-primary-dark/100 ring ring-primary-light/100 border border-black/100"
207
+ grow
208
+ >
209
+ 100
210
+ </Box>
211
+ <Box
212
+ className="bg-primary/90 h-full color-primary-dark/90 ring ring-primary-light/90 border border-black/90"
213
+ grow
214
+ >
215
+ 90
216
+ </Box>
217
+ <Box
218
+ className="bg-primary/80 h-full color-primary-dark/80 ring ring-primary-light/80 border border-black/80"
219
+ grow
220
+ >
221
+ 80
222
+ </Box>
223
+ <Box
224
+ className="bg-primary/70 h-full color-primary-dark/70 ring ring-primary-light/70 border border-black/70"
225
+ grow
226
+ >
227
+ 70
228
+ </Box>
229
+ <Box
230
+ className="bg-primary/60 h-full color-primary-dark/60 ring ring-primary-light/60 border border-black/60"
231
+ grow
232
+ >
233
+ 60
234
+ </Box>
235
+ <Box
236
+ className="bg-primary/50 h-full color-primary-dark/50 ring ring-primary-light/50 border border-black/50"
237
+ grow
238
+ >
239
+ 50
240
+ </Box>
241
+ <Box
242
+ className="bg-primary/40 h-full color-primary-dark/40 ring ring-primary-light/40 border border-black/40"
243
+ grow
244
+ >
245
+ 40
246
+ </Box>
247
+ <Box
248
+ className="bg-primary/30 h-full color-primary-dark/30 ring ring-primary-light/30 border border-black/30"
249
+ grow
250
+ >
251
+ 30
252
+ </Box>
253
+ <Box
254
+ className="bg-primary/20 h-full color-primary-dark/20 ring ring-primary-light/20 border border-black/20"
255
+ grow
256
+ >
257
+ 20
258
+ </Box>
259
+ <Box
260
+ className="bg-primary/10 h-full color-primary-dark/10 ring ring-primary-light/10 border border-black/10"
261
+ grow
262
+ >
263
+ 10
264
+ </Box>
265
+ </Box>
266
+ );
267
+ },
268
+ };
@@ -13,7 +13,7 @@ export function getButtonClassName({
13
13
  align?: ButtonProps['align'];
14
14
  }) {
15
15
  return classNames(
16
- 'layer-components:(px-4 py-2 bg-[var(--bg-neutral,var(--bg))] [--webkit-tap-highlight-color:transparent] [line-height:1] text-size-md font-inherit border-solid border-thin border-color-transparent rounded-lg cursor-pointer font-bold flex flex-row gap-1 items-center relative overflow-visible select-none all:transition duration-200 whitespace-nowrap ring-color-bg)',
16
+ 'layer-components:(px-4 py-2 bg-[var(--bg-neutral,var(--bg))] [--webkit-tap-highlight-color:transparent] [line-height:1] text-size-md font-inherit border-solid border-thin border-transparent rounded-lg cursor-pointer font-bold flex flex-row gap-1 items-center relative overflow-visible select-none all:transition duration-200 whitespace-nowrap ring-bg)',
17
17
  'layer-components:hover:(bg-[var(--bg)] bg-darken-1 ring-4)',
18
18
  'layer-components:focus:outline-off',
19
19
  'layer-components:focus-visible:(bg-[var(--bg)] outline-off bg-darken-1 ring-6)',
@@ -35,15 +35,15 @@ export function getButtonClassName({
35
35
  }
36
36
 
37
37
  const colors = {
38
- primary: `layer-variants:[&.btn-color-primary]:([--bg:var(--color-primary)] shadow-sm color-black border-color-primary-dark)`,
38
+ primary: `layer-variants:[&.btn-color-primary]:([--bg:var(--color-primary)] shadow-sm color-black border-primary-dark)`,
39
39
  accent: `layer-variants:[&.btn-color-accent]:([--bg-neutral:var(--color-accent-wash)] [--bg:var(--color-accent-light)] shadow-sm color-black border-accent-dark)`,
40
40
  default: `layer-variants:[&.btn-color-default]:([--bg-neutral:var(--color-white)] [--bg:var(--color-gray-light)] shadow-sm color-black border-gray-dark)`,
41
41
  ghost: `layer-variants:[&.btn-color-ghost]:([--bg-neutral:transparent] [--bg:oklch(from_var(--color-gray)_l_c_h/50%)] color-dark-blend)`,
42
- destructive: `layer-variants:[&.btn-color-destructive]:([--bg:var(--color-attention)] shadow-sm border-color-attention-dark color-black ))`,
42
+ destructive: `layer-variants:[&.btn-color-destructive]:([--bg:var(--color-attention)] shadow-sm border-attention-dark color-black)`,
43
43
  ghostDestructive: `layer-variants:[&.btn-color-ghostDestructive]:([--bg-neutral:transparent] [--bg:var(--color-attention-light)] color-attention-dark hover:(color-black) focus-visible:(color-black))`,
44
44
  ghostAccent: `layer-variants:[&.btn-color-ghostAccent]:([--bg-neutral:transparent] [--bg:var(--color-accent-light)] color-accent-dark hover:color-black focus-visible:color-black)`,
45
- contrast: `layer-variants:[&.btn-color-contrast]:([--bg:var(--color-black)] color-white border-color-black hover:bg-lighten-1 focus-visible:bg-lighten-1 active:bg-lighten-1)`,
46
- unstyled: `layer-variants:(bg-transparent hover:(bg-transparent) focus:(bg-transparent) active:(bg-transparent) color-inherit border-color-transparent shadow-none hover:(shadow-none) focus:(shadow-none) active:(shadow-none) p-0 items-start font-inherit font-normal rounded-none text-size-inherit transition-none)`,
45
+ contrast: `layer-variants:[&.btn-color-contrast]:([--bg:var(--color-black)] color-white border-black hover:bg-lighten-1 focus-visible:bg-lighten-1 active:bg-lighten-1)`,
46
+ unstyled: `layer-variants:(bg-transparent hover:(bg-transparent) focus:(bg-transparent) active:(bg-transparent) color-inherit border-transparent shadow-none hover:(shadow-none) focus:(shadow-none) active:(shadow-none) p-0 items-start font-inherit font-normal rounded-none text-size-inherit transition-none)`,
47
47
  };
48
48
  export const buttonColorClasses = colors;
49
49
 
@@ -164,7 +164,7 @@ export function CameraRoot({
164
164
  ref={ref}
165
165
  className={classNames(
166
166
  'override-light',
167
- 'layer-components:([font-family:inherit] text-white bg-black rounded-lg overflow-hidden min-w-4 min-h-4 relative)',
167
+ 'layer-components:([font-family:inherit] color-white bg-black rounded-lg overflow-hidden min-w-4 min-h-4 relative)',
168
168
  fullscreen && 'fixed inset-0 w-full h-full z-1000 rounded-none',
169
169
  className,
170
170
  )}
@@ -246,7 +246,7 @@ export const CameraDeviceSelector = (props: CameraDeviceSelectorProps) => {
246
246
  <Button
247
247
  size="icon"
248
248
  color="ghost"
249
- className="absolute bottom-2 left-2 text-white"
249
+ className="absolute bottom-2 left-2 color-white"
250
250
  onClick={swapCamera}
251
251
  >
252
252
  <Icon name="refresh" />
@@ -263,7 +263,7 @@ export const CameraDeviceSelector = (props: CameraDeviceSelectorProps) => {
263
263
  <Button
264
264
  size="icon"
265
265
  color="ghost"
266
- className="absolute bottom-2 left-2 text-white"
266
+ className="absolute bottom-2 left-2 color-white"
267
267
  >
268
268
  <Icon name="refresh" />
269
269
  </Button>
@@ -286,7 +286,7 @@ export const CameraFullscreenButton = (props: ButtonProps) => {
286
286
  {...props}
287
287
  size="icon"
288
288
  color="ghost"
289
- className="absolute top-2 right-2 text-white"
289
+ className="absolute top-2 right-2 color-white"
290
290
  onClick={() => setFullscreen(!fullscreen)}
291
291
  >
292
292
  <Icon name={fullscreen ? 'x' : 'maximize'} />
@@ -8,7 +8,7 @@ import { SlotDiv } from '../utility/SlotDiv.js';
8
8
 
9
9
  export const CardRoot = withClassName(
10
10
  withProps(Box, { container: 'reset' }),
11
- 'layer-components:(flex flex-col border-light rounded-lg text-lg overflow-hidden h-max-content relative bg-wash bg-darken-1 text-black shadow-sm)',
11
+ 'layer-components:(flex flex-col border-light rounded-lg text-lg overflow-hidden h-max-content relative bg-wash bg-darken-1 color-black shadow-sm)',
12
12
  'layer-variants:[&[data-borderless=true]]:(border-none shadow-md)',
13
13
  );
14
14
 
@@ -66,7 +66,7 @@ export const CardTitle = withClassName(
66
66
 
67
67
  const CardContentRoot = withClassName(
68
68
  'div',
69
- 'layer-components:(flex flex-col gap-1 px-2 py-1 bg-light-blend text-black rounded-md mx-2 my-0.5 border border-solid border-gray-dark-blend text-xs relative z-1)',
69
+ 'layer-components:(flex flex-col gap-1 px-2 py-1 bg-light-blend color-black rounded-md mx-2 my-0.5 border border-solid border-gray-dark-blend text-xs relative z-1)',
70
70
  'layer-variants:[[data-compact=true]_&]:(py-0 px-1 my-0 text-xs)',
71
71
  'layer-variants:[&[data-unstyled=true]]:(p-0 [background:unset] border-none)',
72
72
  );
@@ -20,7 +20,7 @@ export function Chip({
20
20
  <Component
21
21
  ref={ref}
22
22
  className={classNames(
23
- 'layer-components:(inline-flex flex-row gap-1 items-center whitespace-nowrap border-light border-solid border rounded-lg px-2 py-1 text-black)',
23
+ 'layer-components:(inline-flex flex-row gap-1 items-center whitespace-nowrap border-light border-solid border rounded-lg px-2 py-1 clor-black)',
24
24
  {
25
25
  'layer-variants:bg-primary-wash': color === 'primary',
26
26
  'layer-variants:bg-accent-wash': color === 'accent',
@@ -210,15 +210,15 @@ const CalendarGrid = withClassName(
210
210
 
211
211
  const CalendarDay = withClassName(
212
212
  BaseCalendarDay,
213
- 'border border-solid border-transparent bg-white mr--1px mb--1px relative text-black',
213
+ 'border border-solid border-transparent bg-white mr--1px mb--1px relative color-black',
214
214
  'flex items-center justify-center transition cursor-pointer',
215
215
  '[&[data-highlighted]]:(z-1 outline-accent)',
216
216
  'hover:(z-1 outline-accent)',
217
- 'active:(bg-accent-wash rounded)',
218
- '[&[data-selected]]:(bg-accent-light z-2 rounded)',
219
- '[&[data-in-range]]:(bg-accent-wash bg-darken-1 rounded-none z-1)',
220
- '[&[data-range-start]]:(bg-accent-light rounded-l rounded-r-none z-1)',
221
- '[&[data-range-end]]:(bg-accent-light rounded-r rounded-l-none z-1)',
217
+ 'active:(bg-accent-light rounded)',
218
+ '[&[data-selected]]:(bg-accent z-2 rounded)',
219
+ '[&[data-in-range]]:(bg-accent-wash bg-darken-2 rounded-none z-1)',
220
+ '[&[data-range-start]]:(bg-accent rounded-l rounded-r-none z-1)',
221
+ '[&[data-range-end]]:(bg-accent rounded-r rounded-l-none z-1)',
222
222
  'disabled:(opacity-50 cursor-default)',
223
223
  // today dot
224
224
  "[&[data-today]]:before:(content-[''] absolute left-[2px] top-[2px] w-[6px] h-[6px] rounded-lg bg-primary)",
@@ -238,7 +238,7 @@ const CalendarDay = withClassName(
238
238
 
239
239
  const DayLabel = withClassName(
240
240
  'div',
241
- 'flex items-center justify-center text-sm text-gray-dark',
241
+ 'flex items-center justify-center text-sm color-gray-dark',
242
242
  );
243
243
 
244
244
  const DayLabels = () => (
@@ -325,7 +325,7 @@ export const DialogSelectList = withClassName(
325
325
  export const DialogSelectItemRoot = withClassName(
326
326
  RadioGroupPrimitive.Item,
327
327
  'layer-components:(flex items-center gap-3 w-full py-3 px-4 text-left border-none rounded-lg font-normal bg-transparent [&:nth-child(2n+1)]:bg-gray-blend cursor-pointer transition-all)',
328
- 'layer-components:[&[data-state=checked]]:(bg-primary-wash text-primary-dark)',
328
+ 'layer-components:[&[data-state=checked]]:(bg-primary-wash color-primary-dark)',
329
329
  );
330
330
 
331
331
  export const DialogSelectItem = function DialogSelectItem({
@@ -46,7 +46,7 @@ const StyledItem = ({
46
46
  {...props}
47
47
  className={clsx(
48
48
  color === 'destructive' &&
49
- 'layer-variants:(text-attention-dark hover:bg-attention-wash focus-visible:bg-attention-wash)',
49
+ 'layer-variants:(color-attention-dark hover:bg-attention-wash focus-visible:bg-attention-wash)',
50
50
  className,
51
51
  )}
52
52
  ref={forwardedRef}
@@ -102,7 +102,7 @@ export function EditableText({
102
102
  onClick={() => setEditingFinal(true)}
103
103
  className={clsx(
104
104
  inputClassName,
105
- 'layer-variants:(border-transparent bg-transparent w-auto inline-flex items-center gap-2 font-size-inherit text-inherit shadow-none text-left)',
105
+ 'layer-variants:(border-transparent bg-transparent w-auto inline-flex items-center gap-2 font-size-inherit color-inherit shadow-none text-left)',
106
106
  'layer-variants:hover:(bg-gray-blend)',
107
107
  'layer-variants:focus-visible:(outline-none bg-gray-dark-blend)',
108
108
  'cursor-pointer',
@@ -43,5 +43,5 @@ const FieldRoot = withClassName(
43
43
 
44
44
  const FieldLabel = withClassName(
45
45
  'label',
46
- 'layer-components:(inline-flex flex-col gap-1 text-md font-normal text-dark-blend mt-2px)',
46
+ 'layer-components:(inline-flex flex-col gap-1 text-md font-normal color-dark-blend mt-2px)',
47
47
  );
@@ -50,5 +50,5 @@ const FieldRoot = withClassName(
50
50
 
51
51
  const FieldLabel = withClassName(
52
52
  'label',
53
- 'layer-components:(block flex-col gap-1 text-md font-normal text-dark-blend mt-2px)',
53
+ 'layer-components:(block flex-col gap-1 text-md font-normal color-dark-blend mt-2px)',
54
54
  );
@@ -139,5 +139,5 @@ export const FieldRoot = withClassName(
139
139
  );
140
140
  export const FieldLabel = withClassName(
141
141
  'label',
142
- 'inline-flex flex-col gap-1 text-sm font-bold text-dark-blend mb-1',
142
+ 'inline-flex flex-col gap-1 text-sm font-bold color-dark-blend mb-1',
143
143
  );
@@ -208,7 +208,7 @@ function ImageUploaderPrebuilt({
208
208
  onClick={() => setCameraOpen(false)}
209
209
  color="ghost"
210
210
  size="small"
211
- className="text-white absolute top-2 left-2"
211
+ className="color-white absolute top-2 left-2"
212
212
  >
213
213
  Cancel
214
214
  </Button>
@@ -9,7 +9,7 @@ export const navBarItemClass = classNames(
9
9
  'layer-components:active:bg-darken-2',
10
10
  'layer-components:hover:bg-darken-1',
11
11
  'layer-components:focus-visible:(outline-none bg-darken-2)',
12
- 'layer-components:[&[data-active=true]]:(bg-[var(--bg)] bg-darken-1 text-black)',
12
+ 'layer-components:[&[data-active=true]]:(bg-[var(--bg)] bg-darken-1 color-black)',
13
13
  'layer-components:([--bg:var(--color-primary-wash)] [--fill:var(--color-primary)])',
14
14
  'layer-responsive:md:(flex-row-reverse h-auto justify-start gap-2 overflow-visible active:bg-darken-2)',
15
15
  );
@@ -43,7 +43,7 @@ export const NavBarItem = function NavBarItem({
43
43
  'layer-variants:active:bg-gray-dark-blend layer-variants:md:active:bg-gray-dark-blend',
44
44
  'layer-variants:hover:bg-gray-dark-blend',
45
45
  'layer-variants:focus-visible:(bg-gray-dark-blend)',
46
- 'layer-variants:[&[data-active=true]]:(bg-gray-dark-blend text-black)',
46
+ 'layer-variants:[&[data-active=true]]:(bg-gray-dark-blend color-black)',
47
47
  'layer-variants:([--bg:var(--color-gray-blend)] [--fill:var(--color-gray)])',
48
48
  ],
49
49
  className,
@@ -85,7 +85,7 @@ export const NavBarItemIcon = function NavBarItemIcon({
85
85
  <Comp
86
86
  name={name}
87
87
  className={clsx(
88
- 'layer-components:(relative z-1 flex fill-none text-inherit)',
88
+ 'layer-components:(relative z-1 flex fill-none color-inherit)',
89
89
  'layer-variants:[*[data-active=true]_&]:fill-[var(--fill)]',
90
90
  className,
91
91
  )}
@@ -23,7 +23,7 @@ export const Default: Story = {
23
23
  {Array.from({ length: 100 }, (_, i) => (
24
24
  <div
25
25
  key={i}
26
- className="h-10 w-full bg-primary-wash text-primary flex items-center justify-center"
26
+ className="h-10 w-full bg-primary-wash color-primary flex items-center justify-center"
27
27
  >
28
28
  Item {i + 1}
29
29
  </div>
@@ -50,7 +50,7 @@ export const StickToBottom: Story = {
50
50
  {Array.from({ length: itemCount }, (_, i) => (
51
51
  <div
52
52
  key={i}
53
- className="h-10 w-full bg-primary-wash text-primary flex items-center justify-center"
53
+ className="h-10 w-full bg-primary-wash color-primary flex items-center justify-center"
54
54
  >
55
55
  Item {i + 1}
56
56
  </div>
@@ -11,10 +11,10 @@ export const TabsList = withClassName(
11
11
 
12
12
  export const TabsTriggerBase = withClassName(
13
13
  TabsPrimitive.Trigger,
14
- 'layer-components:(flex flex-row items-center cursor-pointer justify-center gap-2 color-black py-1 px-5 bg-wash text-md min-w-100px rounded-lg border-default font-semibold text-gray-dark-blend border-gray-dark transition-all cursor-pointer select-none font-inherit flex-shrink-0 shadow-sm)',
15
- 'layer-components:hover:(bg-darken-1 ring-4 ring-color-bg)',
16
- 'layer-components:focus-visible:(bg-darken-1 ring-4 ring-color-bg outline-off)',
17
- '[&[data-state=active]]:(bg-[var(--bg)] font-semibold text-black cursor-default hover:bg-darken-1 relative z-1)',
14
+ 'layer-components:(flex flex-row items-center cursor-pointer justify-center gap-2 color-black py-1 px-5 bg-wash text-md min-w-100px rounded-lg border-default font-semibold color-gray-ink border-gray-dark transition-all cursor-pointer select-none font-inherit flex-shrink-0 shadow-sm)',
15
+ 'layer-components:hover:(bg-darken-1 ring-4 ring-bg)',
16
+ 'layer-components:focus-visible:(bg-darken-1 ring-4 ring-bg outline-off)',
17
+ '[&[data-state=active]]:(bg-[var(--bg)] font-semibold color-black cursor-default hover:bg-darken-1 relative z-1)',
18
18
  );
19
19
 
20
20
  const colorClasses = {
@@ -96,7 +96,7 @@ export const TextArea = function TextArea({
96
96
  ref={finalRef}
97
97
  className={classNames(
98
98
  inputClassName,
99
- 'layer-components:([font-family:inherit] text-inherit overflow-hidden resize-none)',
99
+ 'layer-components:([font-family:inherit] color-inherit overflow-hidden resize-none)',
100
100
  'layer-variants:(rounded-lg px-4 py-4)',
101
101
  {
102
102
  'layer-components:[resize:vertical]': !autoSize,
@@ -26,10 +26,10 @@ function Content({
26
26
  'layer-components:transform-origin-[var(--radix-tooltip-content-transform-origin)]',
27
27
  'layer-components:[&[data-state=delayed-open]]:animate-popover-in',
28
28
  {
29
- 'layer-variants:(bg-black text-white)': color === 'contrast',
30
- 'layer-variants:(bg-white text-black)':
29
+ 'layer-variants:(bg-black color-white)': color === 'contrast',
30
+ 'layer-variants:(bg-white color-black)':
31
31
  color === 'white' || color === 'neutral',
32
- 'layer-variants:(bg-attention-ink text-white)':
32
+ 'layer-variants:(bg-attention-ink color-white)':
33
33
  color === 'attention',
34
34
  },
35
35
  className,
package/src/uno/colors.ts CHANGED
@@ -5,19 +5,34 @@ export const colorConstants = `
5
5
  --dyn-saturation-x-ink: calc(pow(var(--global-saturation, 1), 0.2));
6
6
  `;
7
7
 
8
- export const dynamicThemeComputedColors = (name: string) => `
8
+ const lightness = {
9
+ wash: `calc(1 + 0.45 * var(--dyn-mode-mult, 1))`,
10
+ light: `calc(1 + 0.25 * var(--dyn-mode-mult, 1))`,
11
+ dark: `calc(1 - 0.25 * var(--dyn-mode-mult, 1))`,
12
+ ink: `calc(1 - 0.45 * var(--dyn-mode-mult, 1))`,
13
+ };
14
+
15
+ export const dynamicThemeComputedColors = (name: string) => {
16
+ const hue = {
17
+ wash: `calc(h - 1 * var(--dyn-${name}-hue-rotate, 0) * var(--dyn-${name}-hue-rotate-mult, 1))`,
18
+ light: `calc(h - 0.5 * var(--dyn-${name}-hue-rotate, 0) * var(--dyn-${name}-hue-rotate-mult, 1))`,
19
+ dark: `calc(h + 0.2 * var(--dyn-${name}-hue-rotate, 0) * var(--dyn-${name}-hue-rotate-mult, 1))`,
20
+ ink: `calc(h + 1 * var(--dyn-${name}-hue-rotate, 0) * var(--dyn-${name}-hue-rotate-mult, 1))`,
21
+ };
22
+ return `
9
23
  --color-${name}: oklch(calc(90% - 35% * var(--dyn-source-mode-adjust, 0) - (var(--dyn-mode-sign, 1) * var(--dyn-${name}-base-dim, 0%))) calc(var(--dyn-${name}-sat-mult,1) * (35% - 2% * var(--dyn-source-mode-adjust, 0))) var(--dyn-${name}-source, 0));
10
- --color-${name}-wash: oklch(from var(--color-${name}) calc(min(0.999,max(0.15, l + 0.15 * var(--dyn-mode-mult, 1)))) calc(var(--dyn-${name}-sat-mult) * (c * var(--dyn-saturation-x-wash, 1) - 0.06)) calc(h - 5 * var(--dyn-${name}-hue-rotate, 0) * var(--dyn-${name}-hue-rotate-mult, 1)));
11
- --color-${name}-light: oklch(from var(--color-${name}) calc(l + 0.25 * var(--dyn-mode-mult, 1)) calc(var(--dyn-${name}-sat-mult) * (c * var(--dyn-saturation-x-light, 1) - 0.03)) calc(h - 0.5 * var(--dyn-${name}-hue-rotate, 0) * var(--dyn-${name}-hue-rotate-mult, 1)));
12
- --color-${name}-dark: oklch(from var(--color-${name}) calc(l - 0.25 * var(--dyn-mode-mult, 1)) calc(var(--dyn-${name}-sat-mult) * (c * var(--dyn-saturation-x-dark, 1) + 0.01)) calc(h + 0.2 * var(--dyn-${name}-hue-rotate, 0) * var(--dyn-${name}-hue-rotate-mult, 1)));
13
- --color-${name}-ink: oklch(from var(--color-${name}) calc(l - 0.45 * var(--dyn-mode-mult, 1)) calc(var(--dyn-${name}-sat-mult) * (c * var(--dyn-saturation-x-ink, 1) + 0.01)) calc(h + 1 * var(--dyn-${name}-hue-rotate, 0) * var(--dyn-${name}-hue-rotate-mult, 1)));
24
+ --color-${name}-wash: oklch(from var(--color-${name}) calc(l * ${lightness.wash}) calc(var(--dyn-${name}-sat-mult) * (c * var(--dyn-saturation-x-wash, 1) - 0.06)) ${hue.wash});
25
+ --color-${name}-light: oklch(from var(--color-${name}) calc(l * ${lightness.light}) calc(var(--dyn-${name}-sat-mult) * (c * var(--dyn-saturation-x-light, 1) - 0.03)) ${hue.light});
26
+ --color-${name}-dark: oklch(from var(--color-${name}) calc(l * ${lightness.dark}) calc(var(--dyn-${name}-sat-mult) * (c * var(--dyn-saturation-x-dark, 1) + 0.01)) ${hue.dark});
27
+ --color-${name}-ink: oklch(from var(--color-${name}) calc(l * ${lightness.ink}) calc(var(--dyn-${name}-sat-mult) * (c * var(--dyn-saturation-x-ink, 1) + 0.01)) ${hue.ink});
14
28
 
15
- --color-${name}-gray: oklch(from var(--color-${name}) calc(l - 0.1 * var(--dyn-source-mode-adjust,0)) calc(c * 0.25 * var(--global-saturation, 1)) h);
16
- --color-${name}-gray-wash: oklch(from var(--color-${name}-wash) calc(l - 0.1 * var(--dyn-source-mode-adjust,0)) calc(c * 0.25 * var(--global-saturation, 1)) h);
17
- --color-${name}-gray-light: oklch(from var(--color-${name}-light) calc(l - 0.1 * var(--dyn-source-mode-adjust,0)) calc(c * 0.25 * var(--global-saturation, 1)) h);
18
- --color-${name}-gray-dark: oklch(from var(--color-${name}-dark) calc(l - 0.1 * var(--dyn-source-mode-adjust,0)) calc(c * 0.25 * var(--global-saturation, 1)) h);
19
- --color-${name}-gray-ink: oklch(from var(--color-${name}-ink) calc(l - 0.1 * var(--dyn-source-mode-adjust,0)) calc(c * 0.25 * var(--global-saturation, 1)) h);
29
+ --color-${name}-gray: oklch(from var(--color-${name}) l calc(c * 0.1 * var(--global-saturation, 1)) h);
30
+ --color-${name}-gray-wash: oklch(from var(--color-${name}-gray) calc(l * ${lightness.wash}) calc(c * 0.9) ${hue.wash});
31
+ --color-${name}-gray-light: oklch(from var(--color-${name}-gray) calc(l * ${lightness.light}) c ${hue.light});
32
+ --color-${name}-gray-dark: oklch(from var(--color-${name}-gray) calc(l * ${lightness.dark}) c ${hue.dark});
33
+ --color-${name}-gray-ink: oklch(from var(--color-${name}-gray) calc(l * ${lightness.ink}) c ${hue.ink});
20
34
  `;
35
+ };
21
36
 
22
37
  export const dynamicComputedVars = `
23
38
  ${dynamicThemeComputedColors('primary')}
@@ -31,7 +46,7 @@ ${dynamicThemeComputedColors('accent')}
31
46
 
32
47
  --color-wash: var(--color-gray-wash);
33
48
  --palette-black: var(--color-gray-ink);
34
- --palette-white: oklch(from var(--color-wash) calc(l + 1 / var(--dyn-mode-mult,1)) calc(c * var(--global-saturation, 1)/var(--dyn-mode-mult,1)) h);
49
+ --palette-white: oklch(from var(--color-wash) calc(0.999 * var(--dyn-mode-mult,1)) calc(c * var(--global-saturation, 1)) h);
35
50
  /* A dark-mode only contrast color */
36
51
  --color-dark-mode-contrast: oklch(from var(--color-gray-ink) l c h / calc(100% * var(--dyn-source-mode-adjust, 0)));
37
52
  `;
@@ -131,7 +146,7 @@ function mod(base: string, level: string, sign: number) {
131
146
  return (
132
147
  `oklch(from ` +
133
148
  base +
134
- ` calc(l * (1 + pow(${level}, 1) / 30 * ${sign} * var(--dyn-mode-mult, 1)))` +
149
+ ` calc(l * (1 + ${level} / 60 * ${sign} * var(--dyn-mode-mult, 1)))` +
135
150
  ` calc(c * (1 - (${level} * 0.1 * ${sign} * (1 + (1 - var(--global-saturation, 0))))))` +
136
151
  ` h)`
137
152
  );