@brijbyte/agentic-ui 0.0.2 → 0.0.3

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 (60) hide show
  1. package/dist/accordion/accordion.d.ts +1 -1
  2. package/dist/accordion/accordion.js +1 -1
  3. package/dist/accordion/parts.d.ts +1 -1
  4. package/dist/accordion/parts.js +2 -2
  5. package/dist/alert-dialog/alert-dialog.d.ts +1 -1
  6. package/dist/alert-dialog/alert-dialog.js +1 -1
  7. package/dist/alert-dialog/parts.d.ts +1 -1
  8. package/dist/alert-dialog/parts.js +2 -2
  9. package/dist/badge/badge.d.ts +1 -1
  10. package/dist/button/button.css +22 -8
  11. package/dist/button/button.d.ts +7 -7
  12. package/dist/button/button.js +1 -1
  13. package/dist/button/button.js.map +1 -1
  14. package/dist/button/button.module.js.map +1 -1
  15. package/dist/card/card.d.ts +1 -1
  16. package/dist/checkbox/checkbox.d.ts +1 -1
  17. package/dist/checkbox/checkbox.js +1 -1
  18. package/dist/checkbox/parts.js +1 -1
  19. package/dist/collapsible/collapsible.d.ts +1 -1
  20. package/dist/collapsible/parts.js +1 -1
  21. package/dist/context-menu/context-menu.d.ts +1 -1
  22. package/dist/context-menu/parts.js +1 -1
  23. package/dist/dialog/dialog.d.ts +1 -1
  24. package/dist/dialog/parts.js +1 -1
  25. package/dist/drawer/drawer.d.ts +1 -1
  26. package/dist/drawer/parts.d.ts +1 -1
  27. package/dist/drawer/parts.js +1 -1
  28. package/dist/index.css +1290 -1263
  29. package/dist/index.d.ts +18 -18
  30. package/dist/index.js +37 -37
  31. package/dist/input/input.js +1 -1
  32. package/dist/menu/menu.d.ts +1 -1
  33. package/dist/menu/menuitemshortcut.js +1 -1
  34. package/dist/menu/parts.js +1 -1
  35. package/dist/number-field/number-field.d.ts +1 -1
  36. package/dist/number-field/number-field.js +1 -1
  37. package/dist/number-field/parts.js +1 -1
  38. package/dist/progress/parts.js +1 -1
  39. package/dist/select/parts.js +1 -1
  40. package/dist/select/select.d.ts +1 -1
  41. package/dist/select/select.js +1 -1
  42. package/dist/separator/separator.js +1 -1
  43. package/dist/slider/parts.js +1 -1
  44. package/dist/slider/slider.d.ts +1 -1
  45. package/dist/styles/tokens.css +21 -8
  46. package/dist/switch/parts.js +1 -1
  47. package/dist/switch/switch.d.ts +1 -1
  48. package/dist/switch/switch.js +1 -1
  49. package/dist/tabs/parts.js +1 -1
  50. package/dist/tabs/tabs.d.ts +1 -1
  51. package/dist/toast/parts.js +1 -1
  52. package/dist/toast/toast.d.ts +1 -1
  53. package/dist/tokens.css +23 -11
  54. package/dist/tooltip/parts.js +1 -1
  55. package/dist/tooltip/tooltip.d.ts +1 -1
  56. package/package.json +2 -1
  57. package/src/button/button.module.css +29 -13
  58. package/src/button/button.tsx +7 -7
  59. package/src/index.ts +21 -233
  60. package/src/styles/tokens.css +23 -11
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brijbyte/agentic-ui",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "private": false,
5
5
  "repository": {
6
6
  "type": "git",
@@ -23,6 +23,7 @@
23
23
  "import": "./dist/index.js",
24
24
  "types": "./dist/index.d.ts"
25
25
  },
26
+ "./package.json": "./package.json",
26
27
  "./styles": "./dist/index.css",
27
28
  "./layer-order": "./dist/layer-order.css",
28
29
  "./tokens": "./dist/tokens.css",
@@ -78,18 +78,21 @@
78
78
  }
79
79
  /* ─── Tones — set scoped color tokens ────────────────────────────── */
80
80
  /*
81
- * Each tone exposes four custom properties consumed by the variants below:
82
- * --btn-color solid bg / soft text / outline+ghost hover text
83
- * --btn-color-hover solid bg hover
84
- * --btn-color-pressed solid bg pressed
81
+ * Each tone exposes scoped custom properties consumed by the variants below:
82
+ * --btn-color solid bg color
83
+ * --btn-color-hover solid bg on hover
84
+ * --btn-color-pressed solid bg on press
85
+ * --btn-text-color text color for soft / outline / ghost variants
86
+ * (may differ from --btn-color for contrast on tinted surfaces)
85
87
  * --btn-tint soft bg
86
- * --btn-tint-hover soft bg hover
88
+ * --btn-tint-hover soft bg on hover
87
89
  * --btn-on-color text on solid bg
88
90
  */
89
91
  .tone-primary {
90
- --btn-color: var(--color-accent);
92
+ --btn-color: var(--color-accent-solid);
91
93
  --btn-color-hover: var(--color-accent-hover);
92
94
  --btn-color-pressed: var(--color-accent-pressed);
95
+ --btn-text-color: var(--color-accent-text);
93
96
  --btn-tint: var(--color-accent-tint);
94
97
  --btn-tint-hover: var(--color-accent-tint-hover);
95
98
  --btn-on-color: var(--color-on-accent);
@@ -98,6 +101,7 @@
98
101
  --btn-color: var(--color-secondary);
99
102
  --btn-color-hover: var(--color-primary);
100
103
  --btn-color-pressed: var(--color-primary);
104
+ --btn-text-color: var(--color-secondary);
101
105
  --btn-tint: var(--color-hover);
102
106
  --btn-tint-hover: var(--color-active);
103
107
  --btn-on-color: var(--color-canvas);
@@ -106,25 +110,28 @@
106
110
  --btn-color: var(--color-error-solid);
107
111
  --btn-color-hover: var(--color-error-solid);
108
112
  --btn-color-pressed: var(--color-error-solid);
113
+ --btn-text-color: var(--color-error-text);
109
114
  --btn-tint: var(--color-error-bg);
110
115
  --btn-tint-hover: var(--color-error-bg);
111
- --btn-on-color: #ffffff;
116
+ --btn-on-color: var(--color-error-on-solid);
112
117
  }
113
118
  .tone-success {
114
119
  --btn-color: var(--color-success-solid);
115
120
  --btn-color-hover: var(--color-success-solid);
116
121
  --btn-color-pressed: var(--color-success-solid);
122
+ --btn-text-color: var(--color-success-text);
117
123
  --btn-tint: var(--color-success-bg);
118
124
  --btn-tint-hover: var(--color-success-bg);
119
- --btn-on-color: #ffffff;
125
+ --btn-on-color: var(--color-success-on-solid);
120
126
  }
121
127
  .tone-warning {
122
128
  --btn-color: var(--color-warning-solid);
123
129
  --btn-color-hover: var(--color-warning-solid);
124
130
  --btn-color-pressed: var(--color-warning-solid);
131
+ --btn-text-color: var(--color-warning-text);
125
132
  --btn-tint: var(--color-warning-bg);
126
133
  --btn-tint-hover: var(--color-warning-bg);
127
- --btn-on-color: #ffffff;
134
+ --btn-on-color: var(--color-warning-on-solid);
128
135
  }
129
136
  /* ─── Variants — consume tone tokens ────────────────────────────── */
130
137
  .variant-solid {
@@ -158,7 +165,7 @@
158
165
  .variant-soft {
159
166
  background-color: var(--btn-tint);
160
167
  border-color: transparent;
161
- color: var(--btn-color);
168
+ color: var(--btn-text-color);
162
169
  }
163
170
  .variant-soft:hover:not([data-disabled]) {
164
171
  background-color: var(--btn-tint-hover);
@@ -173,10 +180,15 @@
173
180
  border-color: var(--color-line-strong);
174
181
  color: var(--color-primary);
175
182
  }
183
+ /* Non-secondary tones show their tone color at rest */
184
+ .variant-outline:not(.tone-secondary) {
185
+ border-color: var(--btn-text-color);
186
+ color: var(--btn-text-color);
187
+ }
176
188
  .variant-outline:hover:not([data-disabled]) {
177
189
  background-color: var(--color-hover);
178
- border-color: var(--btn-color);
179
- color: var(--btn-color);
190
+ border-color: var(--btn-text-color);
191
+ color: var(--btn-text-color);
180
192
  }
181
193
  .variant-outline:active:not([data-disabled]),
182
194
  .variant-outline[data-pressed]:not([data-disabled]) {
@@ -187,9 +199,13 @@
187
199
  border-color: transparent;
188
200
  color: var(--color-secondary);
189
201
  }
202
+ /* Non-secondary tones show their tone color at rest */
203
+ .variant-ghost:not(.tone-secondary) {
204
+ color: var(--btn-text-color);
205
+ }
190
206
  .variant-ghost:hover:not([data-disabled]) {
191
207
  background-color: var(--color-hover);
192
- color: var(--btn-color);
208
+ color: var(--btn-text-color);
193
209
  }
194
210
  .variant-ghost:active:not([data-disabled]),
195
211
  .variant-ghost[data-pressed]:not([data-disabled]) {
@@ -10,18 +10,18 @@ export type ButtonSize = "xs" | "sm" | "md" | "lg";
10
10
  export interface ButtonProps extends ComponentPropsWithoutRef<"button"> {
11
11
  variant?: ButtonVariant;
12
12
  /** Semantic color. Defaults to "primary". */
13
- tone?: ButtonTone;
14
- size?: ButtonSize;
15
- loading?: boolean;
13
+ tone?: ButtonTone | undefined;
14
+ size?: ButtonSize | undefined;
15
+ loading?: boolean | undefined;
16
16
  /**
17
17
  * Text shown in place of children while loading.
18
18
  * When provided the button width adapts to this text (variable width).
19
19
  * When omitted, children stay rendered invisibly — width stays stable.
20
20
  */
21
- loadingText?: string;
22
- iconOnly?: boolean;
23
- render?: ReactElement;
24
- nativeButton?: boolean;
21
+ loadingText?: string | undefined;
22
+ iconOnly?: boolean | undefined;
23
+ render?: ReactElement | undefined;
24
+ nativeButton?: boolean | undefined;
25
25
  }
26
26
 
27
27
  export const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(
package/src/index.ts CHANGED
@@ -2,236 +2,24 @@
2
2
  import "./styles/tokens.css";
3
3
  import "./styles/reset.css";
4
4
 
5
- // ─── AlertDialog ─────────────────────────────────────────────────────
6
- export { AlertDialog, AlertDialogBackdrop, AlertDialogPopup, AlertDialogTitle, AlertDialogDescription } from "./alert-dialog";
7
- export type {
8
- AlertDialogProps,
9
- AlertAction,
10
- AlertDialogBackdropProps,
11
- AlertDialogPopupProps,
12
- AlertDialogTitleProps,
13
- AlertDialogDescriptionProps,
14
- } from "./alert-dialog";
15
-
16
- // ─── ContextMenu ─────────────────────────────────────────────────────
17
- export {
18
- ContextMenu,
19
- ContextMenuPopup,
20
- ContextMenuItem,
21
- ContextMenuSeparator,
22
- ContextMenuGroup,
23
- ContextMenuGroupLabel,
24
- } from "./context-menu";
25
- export type {
26
- ContextMenuProps,
27
- ContextMenuEntry,
28
- ContextMenuItemDef,
29
- ContextMenuSeparatorDef,
30
- ContextMenuGroupDef,
31
- ContextMenuPopupProps,
32
- ContextMenuItemProps,
33
- ContextMenuSeparatorProps,
34
- ContextMenuGroupProps,
35
- ContextMenuGroupLabelProps,
36
- } from "./context-menu";
37
-
38
- // ─── Button ──────────────────────────────────────────────────────────
39
- export { Button } from "./button";
40
- export type { ButtonProps, ButtonVariant, ButtonSize } from "./button";
41
-
42
- // ─── Badge ───────────────────────────────────────────────────────────
43
- export { Badge } from "./badge";
44
- export type { BadgeProps, BadgeVariant } from "./badge";
45
-
46
- // ─── Card ────────────────────────────────────────────────────────────
47
- export { Card, CardHeader, CardBody, CardFooter } from "./card";
48
- export type { CardProps, CardHeaderProps } from "./card";
49
-
50
- // ─── Input ───────────────────────────────────────────────────────────
51
- export { Input } from "./input";
52
- export type { InputProps, InputSize } from "./input";
53
-
54
- // ─── Checkbox ────────────────────────────────────────────────────────
55
- export { Checkbox, CheckboxRoot, CheckboxIndicator } from "./checkbox";
56
- export type { CheckboxProps, CheckboxRootProps, CheckboxIndicatorProps } from "./checkbox";
57
-
58
- // ─── Switch ──────────────────────────────────────────────────────────
59
- export { Switch, SwitchRoot, SwitchThumb } from "./switch";
60
- export type { SwitchProps, SwitchRootProps, SwitchThumbProps } from "./switch";
61
-
62
- // ─── Select ──────────────────────────────────────────────────────────
63
- export {
64
- Select,
65
- SelectTrigger,
66
- SelectValue,
67
- SelectPositioner,
68
- SelectPopup,
69
- SelectList,
70
- SelectItem,
71
- SelectItemText,
72
- SelectItemIndicator,
73
- SelectGroupContainer,
74
- SelectGroupLabel,
75
- SelectSeparator,
76
- } from "./select";
77
- export type {
78
- SelectProps,
79
- SelectOption,
80
- SelectGroup,
81
- SelectTriggerProps,
82
- SelectValueProps,
83
- SelectPositionerProps,
84
- SelectPopupProps,
85
- SelectListProps,
86
- SelectItemProps,
87
- SelectItemTextProps,
88
- SelectItemIndicatorProps,
89
- SelectGroupProps,
90
- SelectGroupLabelProps,
91
- SelectSeparatorProps,
92
- } from "./select";
93
-
94
- // ─── Dialog ──────────────────────────────────────────────────────────
95
- export { Dialog, DialogBackdrop, DialogViewport, DialogPopup, DialogTitle, DialogDescription, DialogClose } from "./dialog";
96
- export type {
97
- DialogProps,
98
- DialogBackdropProps,
99
- DialogViewportProps,
100
- DialogPopupProps,
101
- DialogTitleProps,
102
- DialogDescriptionProps,
103
- DialogCloseProps,
104
- } from "./dialog";
105
-
106
- // ─── Tooltip ─────────────────────────────────────────────────────────
107
- export { Tooltip, TooltipPositioner, TooltipPopup, TooltipArrow } from "./tooltip";
108
- export type { TooltipProps, TooltipPositionerProps, TooltipPopupProps, TooltipArrowProps } from "./tooltip";
109
-
110
- // ─── Tabs ────────────────────────────────────────────────────────────
111
- export { Tabs, TabsList, TabsTab, TabsPanel } from "./tabs";
112
- export type { TabsProps, TabItem, TabsListProps, TabsTabProps, TabsPanelProps } from "./tabs";
113
-
114
- // ─── Accordion ───────────────────────────────────────────────────────
115
- export { Accordion, AccordionItemPart, AccordionHeader, AccordionTrigger, AccordionPanel } from "./accordion";
116
- export type {
117
- AccordionProps,
118
- AccordionItem,
119
- AccordionItemProps,
120
- AccordionHeaderProps,
121
- AccordionTriggerProps,
122
- AccordionPanelProps,
123
- } from "./accordion";
124
-
125
- // ─── Progress ────────────────────────────────────────────────────────
126
- export { Progress, ProgressTrack, ProgressIndicator } from "./progress";
127
- export type { ProgressProps, ProgressStatus, ProgressSize, ProgressTrackProps, ProgressIndicatorProps } from "./progress";
128
-
129
- // ─── Toast ───────────────────────────────────────────────────────────
130
- export { ToastViewport, useToastManager, ToastRoot, ToastTitle, ToastDescription, ToastClose, ToastViewportPart } from "./toast";
131
- export type { ToastType, ToastRootProps, ToastTitleProps, ToastDescriptionProps, ToastCloseProps, ToastViewportPartProps } from "./toast";
132
-
133
- // ─── Drawer ──────────────────────────────────────────────────────────
134
- export {
135
- Drawer,
136
- DrawerBackdrop,
137
- DrawerViewport,
138
- DrawerPopup,
139
- DrawerContent,
140
- DrawerTitle,
141
- DrawerDescription,
142
- DrawerClose,
143
- DrawerHandleBar,
144
- DrawerFooter,
145
- } from "./drawer";
146
- export type {
147
- DrawerProps,
148
- DrawerSide,
149
- DrawerBackdropProps,
150
- DrawerViewportProps,
151
- DrawerPopupProps,
152
- DrawerContentProps,
153
- DrawerTitleProps,
154
- DrawerDescriptionProps,
155
- DrawerCloseProps,
156
- } from "./drawer";
157
-
158
- // ─── Separator ───────────────────────────────────────────────────────
159
- export { Separator } from "./separator";
160
- export type { SeparatorProps } from "./separator";
161
-
162
- // ─── Slider ──────────────────────────────────────────────────────────
163
- export { Slider, SliderControl, SliderTrack, SliderIndicator, SliderThumb, SliderLabel, SliderValue } from "./slider";
164
- export type {
165
- SliderProps,
166
- SliderControlProps,
167
- SliderTrackProps,
168
- SliderIndicatorProps,
169
- SliderThumbProps,
170
- SliderLabelProps,
171
- SliderValueProps,
172
- } from "./slider";
173
-
174
- // ─── Collapsible ─────────────────────────────────────────────────────
175
- export { Collapsible, CollapsibleRoot, CollapsibleTrigger, CollapsiblePanel } from "./collapsible";
176
- export type { CollapsibleProps, CollapsibleRootProps, CollapsibleTriggerProps, CollapsiblePanelProps } from "./collapsible";
177
-
178
- // ─── NumberField ─────────────────────────────────────────────────────
179
- export {
180
- NumberField,
181
- NumberFieldGroup,
182
- NumberFieldInput,
183
- NumberFieldDecrement,
184
- NumberFieldIncrement,
185
- NumberFieldScrubArea,
186
- NumberFieldScrubAreaCursor,
187
- } from "./number-field";
188
- export type {
189
- NumberFieldProps,
190
- NumberFieldGroupProps,
191
- NumberFieldInputProps,
192
- NumberFieldDecrementProps,
193
- NumberFieldIncrementProps,
194
- NumberFieldScrubAreaProps,
195
- NumberFieldScrubAreaCursorProps,
196
- } from "./number-field";
197
-
198
- // ─── Menu ────────────────────────────────────────────────────────────
199
- export { Menu, MenuPositioner, MenuPopup, MenuItem, MenuSeparator, MenuGroupLabel, MenuArrow, MenuItemShortcut } from "./menu";
200
- export type {
201
- MenuProps,
202
- MenuEntry,
203
- MenuItemDef,
204
- MenuSeparatorDef,
205
- MenuGroupDef,
206
- MenuPositionerProps,
207
- MenuPopupProps,
208
- MenuItemProps,
209
- MenuSeparatorProps,
210
- MenuGroupLabelProps,
211
- MenuArrowProps,
212
- MenuItemShortcutProps,
213
- } from "./menu";
214
-
215
- // ─── CSS module class name maps ───────────────────────────────────────
216
- // Import these to reference the hashed class names in custom CSS or tests.
217
- export { AlertDialogStyles } from "./alert-dialog";
218
- export { ContextMenuStyles } from "./context-menu";
219
- export { AccordionStyles } from "./accordion";
220
- export { BadgeStyles } from "./badge";
221
- export { ButtonStyles } from "./button";
222
- export { CardStyles } from "./card";
223
- export { CheckboxStyles } from "./checkbox";
224
- export { CollapsibleStyles } from "./collapsible";
225
- export { DialogStyles } from "./dialog";
226
- export { DrawerStyles } from "./drawer";
227
- export { InputStyles } from "./input";
228
- export { MenuStyles } from "./menu";
229
- export { NumberFieldStyles } from "./number-field";
230
- export { ProgressStyles } from "./progress";
231
- export { SelectStyles } from "./select";
232
- export { SeparatorStyles } from "./separator";
233
- export { SliderStyles } from "./slider";
234
- export { SwitchStyles } from "./switch";
235
- export { TabsStyles } from "./tabs";
236
- export { ToastStyles } from "./toast";
237
- export { TooltipStyles } from "./tooltip";
5
+ export * from "./accordion";
6
+ export * from "./alert-dialog";
7
+ export * from "./badge";
8
+ export * from "./button";
9
+ export * from "./card";
10
+ export * from "./checkbox";
11
+ export * from "./collapsible";
12
+ export * from "./context-menu";
13
+ export * from "./dialog";
14
+ export * from "./drawer";
15
+ export * from "./input";
16
+ export * from "./menu";
17
+ export * from "./number-field";
18
+ export * from "./progress";
19
+ export * from "./select";
20
+ export * from "./separator";
21
+ export * from "./slider";
22
+ export * from "./switch";
23
+ export * from "./tabs";
24
+ export * from "./toast";
25
+ export * from "./tooltip";
@@ -5,9 +5,6 @@
5
5
  * Monospace-first, semantic color tokens, supports light & dark modes.
6
6
  */
7
7
 
8
- /* Establish layer order — must come before any @layer usage */
9
- @layer theme, base, components, utilities;
10
-
11
8
  @layer theme {
12
9
  :root {
13
10
  /* ─── Typography ──────────────────────────────────────────────── */
@@ -146,7 +143,7 @@
146
143
 
147
144
  /* Text */
148
145
  --color-primary: rgba(0, 0, 0, 0.88);
149
- --color-secondary: rgba(0, 0, 0, 0.55);
146
+ --color-secondary: rgba(0, 0, 0, 0.6); /* raised from 0.55 — AA 5.01:1 on hover bg */
150
147
  --color-tertiary: rgba(0, 0, 0, 0.36);
151
148
  --color-disabled: rgba(0, 0, 0, 0.24);
152
149
  --color-inverse: rgba(255, 255, 255, 0.95);
@@ -170,6 +167,8 @@
170
167
  --color-accent: #0078d4;
171
168
  --color-accent-hover: #006bbf;
172
169
  --color-accent-pressed: #005ea8;
170
+ --color-accent-solid: #0078d4; /* solid button bg — same as accent in light (4.83:1 vs white) */
171
+ --color-accent-text: #005ea8; /* text/icon on tinted surfaces — AA 5.09:1 on accent-tint bg */
173
172
  --color-accent-tint: rgba(0, 120, 212, 0.1);
174
173
  --color-accent-tint-hover: rgba(0, 120, 212, 0.16);
175
174
 
@@ -190,20 +189,23 @@
190
189
  /* Status — Success */
191
190
  --color-success-bg: #f0fdf4;
192
191
  --color-success-border: #bbf7d0;
193
- --color-success-text: #15803d;
194
- --color-success-solid: #16a34a;
192
+ --color-success-text: #147a39; /* darkened from #15803d — AA 4.73:1 on canvas */
193
+ --color-success-solid: #15803d; /* darkened from #16a34a — AA 5.02:1 vs white */
194
+ --color-success-on-solid: #ffffff;
195
195
 
196
196
  /* Status — Warning */
197
197
  --color-warning-bg: #fffbeb;
198
198
  --color-warning-border: #fde68a;
199
199
  --color-warning-text: #92400e;
200
- --color-warning-solid: #d97706;
200
+ --color-warning-solid: #b45309; /* darkened from #d97706 — AA 5.02:1 vs white */
201
+ --color-warning-on-solid: #ffffff;
201
202
 
202
203
  /* Status — Error */
203
204
  --color-error-bg: #fef2f2;
204
205
  --color-error-border: #fecaca;
205
206
  --color-error-text: #991b1b;
206
207
  --color-error-solid: #dc2626;
208
+ --color-error-on-solid: #ffffff;
207
209
 
208
210
  /* Status — Info */
209
211
  --color-info-bg: #eff6ff;
@@ -268,6 +270,8 @@
268
270
  --color-accent: #0a84ff;
269
271
  --color-accent-hover: #0071e3;
270
272
  --color-accent-pressed: #005bb5;
273
+ --color-accent-solid: #0071e3; /* solid button bg — darkened from #0a84ff — AA 4.70:1 vs white */
274
+ --color-accent-text: #60a5fa; /* text/icon on tinted surfaces — AA 5.87:1 on accent-tint bg */
271
275
  --color-accent-tint: rgba(10, 132, 255, 0.12);
272
276
  --color-accent-tint-hover: rgba(10, 132, 255, 0.2);
273
277
 
@@ -289,19 +293,22 @@
289
293
  --color-success-bg: rgba(22, 163, 74, 0.12);
290
294
  --color-success-border: rgba(22, 163, 74, 0.3);
291
295
  --color-success-text: #4ade80;
292
- --color-success-solid: #22c55e;
296
+ --color-success-solid: #22c55e; /* vivid — AA 9.22:1 vs black text */
297
+ --color-success-on-solid: #000000; /* dark text preserves vibrancy */
293
298
 
294
299
  /* Status — Warning */
295
300
  --color-warning-bg: rgba(217, 119, 6, 0.12);
296
301
  --color-warning-border: rgba(217, 119, 6, 0.3);
297
302
  --color-warning-text: #fbbf24;
298
- --color-warning-solid: #f59e0b;
303
+ --color-warning-solid: #f59e0b; /* vivid — AA 9.78:1 vs black text */
304
+ --color-warning-on-solid: #000000; /* dark text preserves vibrancy */
299
305
 
300
306
  /* Status — Error */
301
307
  --color-error-bg: rgba(220, 38, 38, 0.12);
302
308
  --color-error-border: rgba(220, 38, 38, 0.3);
303
309
  --color-error-text: #f87171;
304
- --color-error-solid: #ef4444;
310
+ --color-error-solid: #dc2626; /* darkened from #ef4444 — AA 4.83:1 vs white */
311
+ --color-error-on-solid: #ffffff;
305
312
 
306
313
  /* Status — Info */
307
314
  --color-info-bg: rgba(37, 99, 235, 0.12);
@@ -355,6 +362,8 @@
355
362
  --color-accent: #0a84ff;
356
363
  --color-accent-hover: #0071e3;
357
364
  --color-accent-pressed: #005bb5;
365
+ --color-accent-solid: #0071e3;
366
+ --color-accent-text: #60a5fa;
358
367
  --color-accent-tint: rgba(10, 132, 255, 0.12);
359
368
  --color-accent-tint-hover: rgba(10, 132, 255, 0.2);
360
369
 
@@ -374,16 +383,19 @@
374
383
  --color-success-border: rgba(22, 163, 74, 0.3);
375
384
  --color-success-text: #4ade80;
376
385
  --color-success-solid: #22c55e;
386
+ --color-success-on-solid: #000000;
377
387
 
378
388
  --color-warning-bg: rgba(217, 119, 6, 0.12);
379
389
  --color-warning-border: rgba(217, 119, 6, 0.3);
380
390
  --color-warning-text: #fbbf24;
381
391
  --color-warning-solid: #f59e0b;
392
+ --color-warning-on-solid: #000000;
382
393
 
383
394
  --color-error-bg: rgba(220, 38, 38, 0.12);
384
395
  --color-error-border: rgba(220, 38, 38, 0.3);
385
396
  --color-error-text: #f87171;
386
- --color-error-solid: #ef4444;
397
+ --color-error-solid: #dc2626;
398
+ --color-error-on-solid: #ffffff;
387
399
 
388
400
  --color-info-bg: rgba(37, 99, 235, 0.12);
389
401
  --color-info-border: rgba(37, 99, 235, 0.3);