@optimum-intelligence/opti-ui 0.2.0 → 0.4.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 (136) hide show
  1. package/README.md +105 -3
  2. package/dist/components/accordion/Accordion.d.ts +12 -0
  3. package/dist/components/accordion/Accordion.js +12 -0
  4. package/dist/components/accordion/Accordion.js.map +1 -1
  5. package/dist/components/alert/Alert.d.ts +4 -0
  6. package/dist/components/alert/Alert.js.map +1 -1
  7. package/dist/components/app-shell/AppShell.d.ts +22 -0
  8. package/dist/components/app-shell/AppShell.js +6 -0
  9. package/dist/components/app-shell/AppShell.js.map +1 -1
  10. package/dist/components/avatar/Avatar.d.ts +8 -0
  11. package/dist/components/avatar/Avatar.js +2 -0
  12. package/dist/components/avatar/Avatar.js.map +1 -1
  13. package/dist/components/badge/Badge.d.ts +9 -0
  14. package/dist/components/badge/Badge.js +6 -0
  15. package/dist/components/badge/Badge.js.map +1 -1
  16. package/dist/components/breadcrumbs/Breadcrumbs.d.ts +1 -0
  17. package/dist/components/breadcrumbs/Breadcrumbs.js.map +1 -1
  18. package/dist/components/button/Button.d.ts +8 -0
  19. package/dist/components/button/Button.js +6 -0
  20. package/dist/components/button/Button.js.map +1 -1
  21. package/dist/components/calendar/Calendar.d.ts +3 -0
  22. package/dist/components/calendar/Calendar.js.map +1 -1
  23. package/dist/components/card/Card.d.ts +14 -1
  24. package/dist/components/card/Card.js +13 -0
  25. package/dist/components/card/Card.js.map +1 -1
  26. package/dist/components/choice/Choice.d.ts +13 -0
  27. package/dist/components/choice/Choice.js +10 -0
  28. package/dist/components/choice/Choice.js.map +1 -1
  29. package/dist/components/combobox/Combobox.d.ts +12 -0
  30. package/dist/components/combobox/Combobox.js.map +1 -1
  31. package/dist/components/command-palette/CommandPalette.d.ts +10 -0
  32. package/dist/components/command-palette/CommandPalette.js.map +1 -1
  33. package/dist/components/data-table/DataTable.d.ts +62 -96
  34. package/dist/components/data-table/DataTable.js +452 -418
  35. package/dist/components/data-table/DataTable.js.map +1 -1
  36. package/dist/components/data-table/DataTableContent.d.ts +36 -0
  37. package/dist/components/data-table/DataTableContent.js +550 -0
  38. package/dist/components/data-table/DataTableContent.js.map +1 -0
  39. package/dist/components/data-table/DataTableFilters.d.ts +18 -0
  40. package/dist/components/data-table/DataTableFilters.js +284 -0
  41. package/dist/components/data-table/DataTableFilters.js.map +1 -0
  42. package/dist/components/data-table/DataTableRow.d.ts +33 -0
  43. package/dist/components/data-table/DataTableRow.js +552 -0
  44. package/dist/components/data-table/DataTableRow.js.map +1 -0
  45. package/dist/components/data-table/context.d.ts +5 -0
  46. package/dist/components/data-table/context.js +14 -0
  47. package/dist/components/data-table/context.js.map +1 -0
  48. package/dist/components/data-table/layout.d.ts +60 -0
  49. package/dist/components/data-table/layout.js +272 -0
  50. package/dist/components/data-table/layout.js.map +1 -0
  51. package/dist/components/data-table/types.d.ts +335 -0
  52. package/dist/components/data-table/useDataTable.d.ts +9 -0
  53. package/dist/components/data-table/useDataTable.js +666 -0
  54. package/dist/components/data-table/useDataTable.js.map +1 -0
  55. package/dist/components/date-picker/DateRangePicker.d.ts +1 -0
  56. package/dist/components/date-picker/DateRangePicker.js.map +1 -1
  57. package/dist/components/date-picker/PickerField.d.ts +13 -0
  58. package/dist/components/date-picker/PickerField.js.map +1 -1
  59. package/dist/components/dialog/Dialog.d.ts +5 -0
  60. package/dist/components/dialog/Dialog.js.map +1 -1
  61. package/dist/components/drawer/Drawer.d.ts +10 -0
  62. package/dist/components/drawer/Drawer.js.map +1 -1
  63. package/dist/components/empty-state/EmptyState.d.ts +5 -0
  64. package/dist/components/empty-state/EmptyState.js.map +1 -1
  65. package/dist/components/file-upload/FileUpload.d.ts +21 -0
  66. package/dist/components/file-upload/FileUpload.js.map +1 -1
  67. package/dist/components/input/Input.d.ts +7 -0
  68. package/dist/components/input/Input.js +3 -0
  69. package/dist/components/input/Input.js.map +1 -1
  70. package/dist/components/link/Link.d.ts +1 -0
  71. package/dist/components/link/Link.js.map +1 -1
  72. package/dist/components/menu/Menu.d.ts +6 -0
  73. package/dist/components/menu/Menu.js.map +1 -1
  74. package/dist/components/number-field/NumberField.d.ts +7 -0
  75. package/dist/components/number-field/NumberField.js.map +1 -1
  76. package/dist/components/pagination/Pagination.d.ts +4 -0
  77. package/dist/components/pagination/Pagination.js.map +1 -1
  78. package/dist/components/popover/Popover.d.ts +4 -0
  79. package/dist/components/popover/Popover.js.map +1 -1
  80. package/dist/components/preview-card/PreviewCard.d.ts +4 -0
  81. package/dist/components/preview-card/PreviewCard.js.map +1 -1
  82. package/dist/components/progress/Progress.d.ts +8 -0
  83. package/dist/components/progress/Progress.js.map +1 -1
  84. package/dist/components/scroll-area/ScrollArea.d.ts +1 -0
  85. package/dist/components/scroll-area/ScrollArea.js.map +1 -1
  86. package/dist/components/search-input/SearchInput.d.ts +2 -0
  87. package/dist/components/search-input/SearchInput.js.map +1 -1
  88. package/dist/components/select/Select.d.ts +11 -0
  89. package/dist/components/select/Select.js.map +1 -1
  90. package/dist/components/separator/Separator.d.ts +1 -0
  91. package/dist/components/separator/Separator.js +1 -0
  92. package/dist/components/separator/Separator.js.map +1 -1
  93. package/dist/components/skeleton/Skeleton.d.ts +7 -0
  94. package/dist/components/skeleton/Skeleton.js +1 -0
  95. package/dist/components/skeleton/Skeleton.js.map +1 -1
  96. package/dist/components/slider/Slider.d.ts +1 -0
  97. package/dist/components/slider/Slider.js.map +1 -1
  98. package/dist/components/spinner/Spinner.d.ts +2 -0
  99. package/dist/components/spinner/Spinner.js +1 -0
  100. package/dist/components/spinner/Spinner.js.map +1 -1
  101. package/dist/components/stat-card/StatCard.d.ts +5 -1
  102. package/dist/components/stat-card/StatCard.js.map +1 -1
  103. package/dist/components/stepper/Stepper.d.ts +4 -0
  104. package/dist/components/stepper/Stepper.js.map +1 -1
  105. package/dist/components/table/Table.d.ts +23 -0
  106. package/dist/components/table/Table.js +17 -0
  107. package/dist/components/table/Table.js.map +1 -1
  108. package/dist/components/tabs/Tabs.d.ts +1 -0
  109. package/dist/components/tabs/Tabs.js.map +1 -1
  110. package/dist/components/tag/Tag.d.ts +3 -0
  111. package/dist/components/tag/Tag.js.map +1 -1
  112. package/dist/components/toast/Toast.d.ts +2 -0
  113. package/dist/components/toast/Toast.js.map +1 -1
  114. package/dist/components/toggle/Toggle.d.ts +7 -0
  115. package/dist/components/toggle/Toggle.js +1 -0
  116. package/dist/components/toggle/Toggle.js.map +1 -1
  117. package/dist/components/tooltip/Tooltip.d.ts +8 -0
  118. package/dist/components/tooltip/Tooltip.js.map +1 -1
  119. package/dist/components/typography/Typography.d.ts +5 -0
  120. package/dist/components/typography/Typography.js +2 -0
  121. package/dist/components/typography/Typography.js.map +1 -1
  122. package/dist/components.json +5375 -0
  123. package/dist/icons/index.d.ts +8 -0
  124. package/dist/icons/index.js +9 -1
  125. package/dist/icons/index.js.map +1 -1
  126. package/dist/index.d.ts +2 -0
  127. package/dist/index.js +4 -2
  128. package/dist/llms-full.txt +2590 -0
  129. package/dist/llms.txt +175 -0
  130. package/dist/opti-ui.css +494 -167
  131. package/dist/theme/ThemeProvider.d.ts +1 -0
  132. package/dist/theme/ThemeProvider.js.map +1 -1
  133. package/dist/utils/portal.d.ts +4 -0
  134. package/dist/utils/portal.js +4 -0
  135. package/dist/utils/portal.js.map +1 -1
  136. package/package.json +7 -3
package/dist/opti-ui.css CHANGED
@@ -4,6 +4,7 @@
4
4
  --oui-font-body: 'Poppins', system-ui, -apple-system, 'Segoe UI', sans-serif;
5
5
  --oui-font-heading: 'Montserrat', 'Poppins', system-ui, sans-serif;
6
6
  --oui-font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
7
+ --oui-font-size-2xs: 0.6875rem;
7
8
  --oui-font-size-xs: 0.75rem;
8
9
  --oui-font-size-sm: 0.8125rem;
9
10
  --oui-font-size-md: 0.9rem;
@@ -36,10 +37,11 @@
36
37
  --oui-control-height-md: 2.5rem;
37
38
  --oui-control-height-lg: 3rem;
38
39
  --oui-control-border-width: 2px;
40
+ --oui-control-disabled-opacity: 0.5;
39
41
  --oui-duration-fast: 0.15s;
40
42
  --oui-duration-normal: 0.2s;
41
43
  --oui-duration-slow: 0.3s;
42
- --oui-ease: ease;
44
+ --oui-ease: cubic-bezier(0.3, 0, 0.2, 1);
43
45
  --oui-ease-out: cubic-bezier(0.22, 1, 0.36, 1);
44
46
  --oui-z-dropdown: 50;
45
47
  --oui-z-dialog: 100;
@@ -61,7 +63,7 @@
61
63
  --oui-color-text: #222222;
62
64
  --oui-color-text-strong: var(--oui-color-brand);
63
65
  --oui-color-text-muted: color-mix(in srgb, var(--oui-color-brand) 72%, white);
64
- --oui-color-text-subtle: color-mix(in srgb, var(--oui-color-text-muted) 72%, transparent);
66
+ --oui-color-text-subtle: color-mix(in srgb, var(--oui-color-text-muted) 86%, transparent);
65
67
  --oui-color-bg: color-mix(in srgb, var(--oui-color-accent) 4%, white);
66
68
  --oui-color-surface: #ffffff;
67
69
  --oui-color-surface-muted: color-mix(in srgb, var(--oui-color-accent) 4%, white);
@@ -92,15 +94,24 @@
92
94
  --oui-color-inverse-hover: color-mix(in srgb, var(--oui-color-accent) 18%, transparent);
93
95
  --oui-color-inverse-active: color-mix(in srgb, var(--oui-color-accent) 30%, transparent);
94
96
  --oui-color-inverse-border: rgba(255, 255, 255, 0.14);
95
- --oui-shadow-sm: 0 1px 2px color-mix(in srgb, var(--oui-color-brand) 6%, transparent);
96
- --oui-shadow-card: 0 4px 16px color-mix(in srgb, var(--oui-color-accent) 16%, transparent);
97
- --oui-shadow-raised: 0 8px 24px color-mix(in srgb, var(--oui-color-brand) 8%, transparent);
97
+ --oui-shadow-sm: 0 1px 2px color-mix(in srgb, var(--oui-color-brand) 8%, transparent);
98
+ --oui-shadow-card:
99
+ 0 1px 2px color-mix(in srgb, var(--oui-color-brand) 6%, transparent),
100
+ 0 6px 18px -2px color-mix(in srgb, var(--oui-color-accent) 16%, transparent);
101
+ --oui-shadow-raised:
102
+ 0 1px 2px color-mix(in srgb, var(--oui-color-brand) 6%, transparent),
103
+ 0 10px 24px -4px color-mix(in srgb, var(--oui-color-brand) 12%, transparent);
98
104
  --oui-shadow-overlay:
99
- 0 12px 32px color-mix(in srgb, var(--oui-color-brand) 14%, transparent),
100
- 0 2px 6px color-mix(in srgb, var(--oui-color-brand) 6%, transparent);
101
- --oui-shadow-dialog: 0 24px 64px color-mix(in srgb, var(--oui-color-brand) 22%, transparent);
105
+ 0 2px 6px color-mix(in srgb, var(--oui-color-brand) 6%, transparent),
106
+ 0 14px 32px -6px color-mix(in srgb, var(--oui-color-brand) 18%, transparent);
107
+ --oui-shadow-dialog:
108
+ 0 4px 12px color-mix(in srgb, var(--oui-color-brand) 8%, transparent),
109
+ 0 28px 64px -12px color-mix(in srgb, var(--oui-color-brand) 28%, transparent);
102
110
  --oui-focus-ring-color: color-mix(in srgb, var(--oui-color-accent) 32%, transparent);
103
111
  --oui-focus-ring: 0 0 0 3px var(--oui-focus-ring-color);
112
+ --oui-focus-outline-color: var(--oui-color-border-focus);
113
+ --oui-focus-outline: 2px solid var(--oui-focus-outline-color);
114
+ --oui-focus-outline-offset: 2px;
104
115
  }
105
116
  [data-oui-theme=dark],
106
117
  [data-oui-theme=dark] .oui-theme:not([data-oui-theme]) {
@@ -125,10 +136,11 @@
125
136
  --oui-color-danger-text: #ff9db5;
126
137
  --oui-color-inverse: color-mix(in oklab, var(--oui-color-accent) 8%, #0a0810);
127
138
  --oui-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3);
128
- --oui-shadow-card: 0 4px 16px rgba(0, 0, 0, 0.28);
129
- --oui-shadow-raised: 0 8px 24px rgba(0, 0, 0, 0.35);
130
- --oui-shadow-overlay: 0 12px 32px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.04);
131
- --oui-shadow-dialog: 0 24px 64px rgba(0, 0, 0, 0.6);
139
+ --oui-shadow-card: 0 1px 2px rgba(0, 0, 0, 0.3), 0 6px 18px -2px rgba(0, 0, 0, 0.3);
140
+ --oui-shadow-raised: 0 1px 2px rgba(0, 0, 0, 0.3), 0 10px 24px -4px rgba(0, 0, 0, 0.4);
141
+ --oui-shadow-overlay: 0 14px 32px -6px rgba(0, 0, 0, 0.55), 0 0 0 1px rgba(255, 255, 255, 0.04);
142
+ --oui-shadow-dialog: 0 28px 64px -12px rgba(0, 0, 0, 0.7);
143
+ --oui-focus-outline-color: var(--oui-color-accent-text);
132
144
  }
133
145
  }
134
146
  @layer oui.base {
@@ -149,6 +161,16 @@
149
161
  color: var(--oui-color-text);
150
162
  font-family: var(--oui-font-body);
151
163
  }
164
+ .oui-root,
165
+ .oui-theme {
166
+ accent-color: var(--oui-color-accent);
167
+ scrollbar-color: var(--oui-color-border-hover) transparent;
168
+ }
169
+ .oui-root ::selection,
170
+ .oui-theme ::selection {
171
+ background: var(--oui-color-accent-strong);
172
+ color: var(--oui-color-text-strong);
173
+ }
152
174
  .oui-visually-hidden {
153
175
  position: absolute;
154
176
  width: 1px;
@@ -216,11 +238,11 @@
216
238
  }
217
239
  .oui-accordion__trigger:disabled, .oui-accordion__trigger[data-disabled] {
218
240
  cursor: not-allowed;
219
- opacity: 0.45;
241
+ opacity: var(--oui-control-disabled-opacity);
220
242
  }
221
243
  .oui-accordion__trigger:focus-visible {
222
- outline: none;
223
- box-shadow: inset 0 0 0 2px var(--oui-color-border-focus);
244
+ outline: var(--oui-focus-outline);
245
+ outline-offset: -2px;
224
246
  }
225
247
  .oui-accordion__trigger:hover .oui-accordion__chevron {
226
248
  color: var(--oui-color-text-strong);
@@ -230,7 +252,7 @@
230
252
  width: 1.1rem;
231
253
  height: 1.1rem;
232
254
  color: var(--oui-color-text-muted);
233
- transition: transform var(--oui-duration-normal) var(--oui-ease);
255
+ transition: transform var(--oui-duration-normal) var(--oui-ease-out), color var(--oui-duration-fast) var(--oui-ease);
234
256
  }
235
257
  [data-panel-open] > .oui-accordion__chevron {
236
258
  transform: rotate(180deg);
@@ -305,12 +327,11 @@
305
327
  }
306
328
  .oui-alert[data-variant=outline] {
307
329
  background: var(--oui-color-surface);
308
- border-left: 4px solid var(--_tone);
309
330
  }
310
331
  .oui-alert__icon {
311
332
  display: inline-flex;
312
333
  flex-shrink: 0;
313
- padding-top: 0.15rem;
334
+ padding-top: calc((1.5em - 1.15rem) / 2);
314
335
  color: var(--_tone);
315
336
  }
316
337
  .oui-alert__icon svg {
@@ -327,7 +348,7 @@
327
348
  .oui-alert__title {
328
349
  margin: 0;
329
350
  color: var(--_tone-text);
330
- font-weight: var(--oui-font-weight-bold);
351
+ font-weight: var(--oui-font-weight-semibold);
331
352
  }
332
353
  .oui-alert__message {
333
354
  color: var(--oui-color-text);
@@ -358,6 +379,7 @@
358
379
  --_active: var(--oui-color-inverse-active);
359
380
  --_border: var(--oui-color-inverse-border);
360
381
  --_icon-bg: color-mix(in srgb, var(--oui-color-on-inverse) 12%, transparent);
382
+ --_focus: var(--oui-color-on-inverse);
361
383
  --_motion: var(--oui-duration-slow) var(--oui-ease-out);
362
384
  position: relative;
363
385
  display: flex;
@@ -369,6 +391,7 @@
369
391
  overflow-x: hidden;
370
392
  overflow-y: auto;
371
393
  scrollbar-width: thin;
394
+ scrollbar-color: var(--_border) transparent;
372
395
  interpolate-size: allow-keywords;
373
396
  transition: width var(--_motion), padding var(--_motion), box-shadow var(--_motion);
374
397
  background: var(--oui-navbar-bg, var(--oui-color-inverse));
@@ -381,6 +404,7 @@
381
404
  --_active: var(--oui-color-accent-muted);
382
405
  --_border: var(--oui-color-border-subtle);
383
406
  --_icon-bg: var(--oui-color-accent-subtle);
407
+ --_focus: var(--oui-focus-outline-color);
384
408
  background: var(--oui-navbar-bg, var(--oui-color-surface));
385
409
  border-right: 1px solid var(--oui-color-border);
386
410
  }
@@ -452,7 +476,7 @@
452
476
  min-height: 1rem;
453
477
  margin: 0 0.35rem 0.2rem 0.85rem;
454
478
  color: var(--_fg-muted);
455
- font-size: 0.68rem;
479
+ font-size: var(--oui-font-size-2xs);
456
480
  font-weight: var(--oui-font-weight-bold);
457
481
  letter-spacing: 0.1em;
458
482
  text-transform: uppercase;
@@ -487,14 +511,14 @@
487
511
  text-align: left;
488
512
  text-decoration: none;
489
513
  cursor: pointer;
490
- transition: background-color var(--oui-duration-slow) var(--oui-ease), color var(--oui-duration-normal) var(--oui-ease);
514
+ transition: background-color var(--oui-duration-normal) var(--oui-ease), color var(--oui-duration-normal) var(--oui-ease);
491
515
  }
492
516
  .oui-navbar__item:hover {
493
517
  background: var(--_hover);
494
518
  color: var(--_fg);
495
519
  }
496
520
  .oui-navbar__item:focus-visible {
497
- outline: 2px solid var(--oui-color-accent);
521
+ outline: 2px solid var(--_focus);
498
522
  outline-offset: -2px;
499
523
  }
500
524
  .oui-navbar__item[data-active] {
@@ -515,7 +539,7 @@
515
539
  height: 1.85rem;
516
540
  border-radius: var(--oui-radius-sm);
517
541
  background: var(--_icon-bg);
518
- transition: background-color var(--oui-duration-slow) var(--oui-ease);
542
+ transition: background-color var(--oui-duration-normal) var(--oui-ease), color var(--oui-duration-normal) var(--oui-ease);
519
543
  }
520
544
  .oui-navbar__item-icon svg {
521
545
  flex-shrink: 0;
@@ -536,8 +560,10 @@
536
560
  border-radius: var(--oui-radius-pill);
537
561
  background: var(--oui-color-accent);
538
562
  color: var(--oui-color-on-accent);
539
- font-size: 0.7rem;
563
+ font-size: var(--oui-font-size-2xs);
540
564
  font-weight: var(--oui-font-weight-bold);
565
+ font-variant-numeric: tabular-nums;
566
+ line-height: 1.3;
541
567
  text-align: center;
542
568
  }
543
569
  .oui-navbar__footer {
@@ -564,19 +590,22 @@
564
590
  background: transparent;
565
591
  color: var(--_fg-muted);
566
592
  cursor: pointer;
567
- transition: top var(--_motion), right var(--_motion), background-color var(--oui-duration-slow) var(--oui-ease), color var(--oui-duration-normal) var(--oui-ease);
593
+ transition: top var(--_motion), right var(--_motion), background-color var(--oui-duration-normal) var(--oui-ease), color var(--oui-duration-normal) var(--oui-ease);
568
594
  }
569
595
  .oui-navbar__toggle svg {
570
596
  flex-shrink: 0;
571
597
  width: 1.1rem;
572
598
  height: 1.1rem;
573
599
  }
600
+ .oui-navbar__toggle svg {
601
+ transition: transform var(--_motion);
602
+ }
574
603
  .oui-navbar__toggle:hover {
575
604
  background: var(--_hover);
576
605
  color: var(--_fg);
577
606
  }
578
607
  .oui-navbar__toggle:focus-visible {
579
- outline: 2px solid var(--oui-color-accent);
608
+ outline: 2px solid var(--_focus);
580
609
  outline-offset: -2px;
581
610
  }
582
611
  .oui-navbar[data-collapsed] .oui-navbar__toggle svg,
@@ -696,6 +725,7 @@
696
725
  background: transparent;
697
726
  color: inherit;
698
727
  cursor: pointer;
728
+ transition: background-color var(--oui-duration-fast) var(--oui-ease);
699
729
  }
700
730
  .oui-app-shell__menu-button svg,
701
731
  .oui-app-shell__drawer-close svg {
@@ -709,7 +739,8 @@
709
739
  }
710
740
  .oui-app-shell__menu-button:focus-visible,
711
741
  .oui-app-shell__drawer-close:focus-visible {
712
- outline: 2px solid var(--oui-color-accent);
742
+ outline: 2px solid currentColor;
743
+ outline-offset: -2px;
713
744
  }
714
745
  .oui-app-shell__drawer {
715
746
  position: fixed;
@@ -782,6 +813,8 @@
782
813
  font-size: clamp(1.5rem, 2.5vw, 2rem);
783
814
  font-weight: var(--oui-font-weight-bold);
784
815
  line-height: 1.15;
816
+ letter-spacing: -0.015em;
817
+ text-wrap: balance;
785
818
  }
786
819
  .oui-page-header__description {
787
820
  max-width: 48rem;
@@ -789,6 +822,7 @@
789
822
  color: var(--oui-color-text-muted);
790
823
  font-size: var(--oui-font-size-md);
791
824
  line-height: 1.55;
825
+ text-wrap: pretty;
792
826
  }
793
827
  .oui-page-header__actions {
794
828
  display: flex;
@@ -966,7 +1000,7 @@
966
1000
  .oui-badge[data-size=sm] {
967
1001
  height: 1.25rem;
968
1002
  padding: 0 0.45rem;
969
- font-size: 0.7rem;
1003
+ font-size: var(--oui-font-size-2xs);
970
1004
  }
971
1005
  .oui-badge[data-tone=neutral] {
972
1006
  border-color: var(--oui-color-border);
@@ -1042,8 +1076,8 @@
1042
1076
  height: 1rem;
1043
1077
  }
1044
1078
  .oui-breadcrumbs__link:focus-visible {
1045
- outline: none;
1046
- box-shadow: var(--oui-focus-ring);
1079
+ outline: var(--oui-focus-outline);
1080
+ outline-offset: var(--oui-focus-outline-offset);
1047
1081
  }
1048
1082
  .oui-breadcrumbs__link:hover:not([data-current]) {
1049
1083
  color: var(--oui-color-text-strong);
@@ -1091,7 +1125,7 @@
1091
1125
  cursor: pointer;
1092
1126
  user-select: none;
1093
1127
  -webkit-tap-highlight-color: transparent;
1094
- transition: background-color var(--oui-duration-normal) var(--oui-ease), border-color var(--oui-duration-normal) var(--oui-ease), color var(--oui-duration-normal) var(--oui-ease), box-shadow var(--oui-duration-normal) var(--oui-ease), transform var(--oui-duration-normal) var(--oui-ease);
1128
+ transition: background-color var(--oui-duration-fast) var(--oui-ease), border-color var(--oui-duration-fast) var(--oui-ease), color var(--oui-duration-fast) var(--oui-ease), transform 0.1s var(--oui-ease);
1095
1129
  }
1096
1130
  .oui-button svg {
1097
1131
  flex-shrink: 0;
@@ -1099,8 +1133,8 @@
1099
1133
  height: 1.1em;
1100
1134
  }
1101
1135
  .oui-button:focus-visible {
1102
- outline: none;
1103
- box-shadow: var(--oui-focus-ring);
1136
+ outline: var(--oui-focus-outline);
1137
+ outline-offset: var(--oui-focus-outline-offset);
1104
1138
  }
1105
1139
  @media (hover: hover) {
1106
1140
  .oui-button:hover:not([data-disabled]) {
@@ -1109,11 +1143,16 @@
1109
1143
  }
1110
1144
  }
1111
1145
  .oui-button:active:not([data-disabled]) {
1112
- transform: translateY(1px);
1146
+ transform: scale(0.97);
1113
1147
  }
1114
1148
  .oui-button[data-disabled]:not([data-loading]) {
1115
1149
  cursor: not-allowed;
1116
- opacity: 0.45;
1150
+ opacity: var(--oui-control-disabled-opacity);
1151
+ }
1152
+ @media (prefers-reduced-motion: reduce) {
1153
+ .oui-button {
1154
+ transition-property: background-color, border-color, color;
1155
+ }
1117
1156
  }
1118
1157
  .oui-button[data-loading] {
1119
1158
  cursor: progress;
@@ -1240,8 +1279,8 @@
1240
1279
  transition: background-color var(--oui-duration-fast) var(--oui-ease);
1241
1280
  }
1242
1281
  .oui-calendar__title-button:focus-visible {
1243
- outline: none;
1244
- box-shadow: var(--oui-focus-ring);
1282
+ outline: var(--oui-focus-outline);
1283
+ outline-offset: var(--oui-focus-outline-offset);
1245
1284
  }
1246
1285
  .oui-calendar__title-button:hover {
1247
1286
  background: var(--oui-color-accent-subtle);
@@ -1266,12 +1305,12 @@
1266
1305
  height: 1.1rem;
1267
1306
  }
1268
1307
  .oui-calendar__nav:focus-visible {
1269
- outline: none;
1270
- box-shadow: var(--oui-focus-ring);
1308
+ outline: var(--oui-focus-outline);
1309
+ outline-offset: var(--oui-focus-outline-offset);
1271
1310
  }
1272
1311
  .oui-calendar__nav:disabled, .oui-calendar__nav[data-disabled] {
1273
1312
  cursor: not-allowed;
1274
- opacity: 0.45;
1313
+ opacity: var(--oui-control-disabled-opacity);
1275
1314
  }
1276
1315
  .oui-calendar__nav:hover:not(:disabled) {
1277
1316
  background: var(--oui-color-accent-subtle);
@@ -1291,7 +1330,7 @@
1291
1330
  }
1292
1331
  .oui-calendar__weekday {
1293
1332
  color: var(--oui-color-text-muted);
1294
- font-size: 0.7rem;
1333
+ font-size: var(--oui-font-size-2xs);
1295
1334
  font-weight: var(--oui-font-weight-bold);
1296
1335
  letter-spacing: 0.06em;
1297
1336
  text-transform: uppercase;
@@ -1329,8 +1368,8 @@
1329
1368
  }
1330
1369
  .oui-calendar__day:focus-visible,
1331
1370
  .oui-calendar__choice:focus-visible {
1332
- outline: none;
1333
- box-shadow: var(--oui-focus-ring);
1371
+ outline: var(--oui-focus-outline);
1372
+ outline-offset: var(--oui-focus-outline-offset);
1334
1373
  }
1335
1374
  .oui-calendar__day:hover:not([data-disabled], [data-selected]),
1336
1375
  .oui-calendar__choice:hover:not([data-disabled], [data-selected]) {
@@ -1363,7 +1402,7 @@
1363
1402
  .oui-calendar__day[data-disabled],
1364
1403
  .oui-calendar__choice[data-disabled] {
1365
1404
  cursor: not-allowed;
1366
- opacity: 0.35;
1405
+ opacity: var(--oui-control-disabled-opacity);
1367
1406
  text-decoration: line-through;
1368
1407
  }
1369
1408
  .oui-calendar__choice {
@@ -1394,7 +1433,7 @@
1394
1433
  background: var(--oui-card-bg, var(--oui-color-surface));
1395
1434
  color: var(--oui-color-text);
1396
1435
  text-decoration: none;
1397
- transition: transform var(--oui-duration-slow) var(--oui-ease), box-shadow var(--oui-duration-slow) var(--oui-ease), border-color var(--oui-duration-slow) var(--oui-ease);
1436
+ transition: box-shadow var(--oui-duration-normal) var(--oui-ease), border-color var(--oui-duration-normal) var(--oui-ease);
1398
1437
  }
1399
1438
  .oui-card[data-padding=none] {
1400
1439
  --_padding: 0;
@@ -1424,12 +1463,14 @@
1424
1463
  .oui-card[data-interactive]:hover {
1425
1464
  border-color: var(--oui-color-border-hover);
1426
1465
  box-shadow: var(--oui-shadow-raised);
1427
- transform: translateY(-2px);
1428
1466
  }
1429
1467
  }
1468
+ .oui-card[data-interactive]:active {
1469
+ box-shadow: var(--oui-shadow-sm);
1470
+ }
1430
1471
  .oui-card[data-interactive]:focus-visible {
1431
- outline: 2px solid var(--oui-color-accent);
1432
- outline-offset: 2px;
1472
+ outline: var(--oui-focus-outline);
1473
+ outline-offset: var(--oui-focus-outline-offset);
1433
1474
  }
1434
1475
  @media (max-width: 640px) {
1435
1476
  .oui-card[data-padding=md], .oui-card[data-padding=lg] {
@@ -1504,7 +1545,12 @@
1504
1545
  }
1505
1546
  .oui-choice[data-disabled] {
1506
1547
  cursor: not-allowed;
1507
- opacity: 0.5;
1548
+ opacity: var(--oui-control-disabled-opacity);
1549
+ }
1550
+ .oui-choice[data-disabled] > .oui-checkbox,
1551
+ .oui-choice[data-disabled] > .oui-radio,
1552
+ .oui-choice[data-disabled] > .oui-switch {
1553
+ opacity: 1;
1508
1554
  }
1509
1555
  .oui-choice > .oui-checkbox,
1510
1556
  .oui-choice > .oui-radio,
@@ -1551,8 +1597,8 @@
1551
1597
  }
1552
1598
  .oui-checkbox:focus-visible,
1553
1599
  .oui-radio:focus-visible {
1554
- outline: none;
1555
- box-shadow: var(--oui-focus-ring);
1600
+ outline: var(--oui-focus-outline);
1601
+ outline-offset: var(--oui-focus-outline-offset);
1556
1602
  }
1557
1603
  .oui-checkbox[data-size=sm],
1558
1604
  .oui-radio[data-size=sm] {
@@ -1577,7 +1623,7 @@
1577
1623
  .oui-checkbox[data-disabled],
1578
1624
  .oui-radio[data-disabled] {
1579
1625
  cursor: not-allowed;
1580
- opacity: 0.5;
1626
+ opacity: var(--oui-control-disabled-opacity);
1581
1627
  }
1582
1628
  .oui-checkbox {
1583
1629
  border-radius: var(--oui-checkbox-radius, 5px);
@@ -1627,19 +1673,24 @@
1627
1673
  transition: background-color var(--oui-duration-normal) var(--oui-ease);
1628
1674
  }
1629
1675
  .oui-switch:focus-visible {
1630
- outline: none;
1631
- box-shadow: var(--oui-focus-ring);
1676
+ outline: var(--oui-focus-outline);
1677
+ outline-offset: var(--oui-focus-outline-offset);
1632
1678
  }
1633
1679
  .oui-switch[data-size=sm] {
1634
1680
  --_w: var(--oui-switch-width, 2rem);
1635
1681
  --_h: var(--oui-switch-height, 1.15rem);
1636
1682
  }
1683
+ @media (hover: hover) {
1684
+ .oui-switch:hover:not([data-disabled], [data-checked]) {
1685
+ background: color-mix(in srgb, var(--oui-color-text-muted) 44%, transparent);
1686
+ }
1687
+ }
1637
1688
  .oui-switch[data-checked] {
1638
1689
  background: var(--oui-color-accent);
1639
1690
  }
1640
1691
  .oui-switch[data-disabled] {
1641
1692
  cursor: not-allowed;
1642
- opacity: 0.5;
1693
+ opacity: var(--oui-control-disabled-opacity);
1643
1694
  }
1644
1695
  .oui-switch__thumb {
1645
1696
  --_thumb: calc(var(--_h) - var(--_inset) * 2);
@@ -1687,12 +1738,12 @@
1687
1738
  transition: background-color var(--oui-duration-fast) var(--oui-ease);
1688
1739
  }
1689
1740
  .oui-collapsible__trigger:focus-visible {
1690
- outline: none;
1691
- box-shadow: var(--oui-focus-ring);
1741
+ outline: var(--oui-focus-outline);
1742
+ outline-offset: var(--oui-focus-outline-offset);
1692
1743
  }
1693
1744
  .oui-collapsible__trigger:disabled, .oui-collapsible__trigger[data-disabled] {
1694
1745
  cursor: not-allowed;
1695
- opacity: 0.45;
1746
+ opacity: var(--oui-control-disabled-opacity);
1696
1747
  }
1697
1748
  @media (hover: hover) {
1698
1749
  .oui-collapsible__trigger:hover:not([data-disabled]) {
@@ -1704,7 +1755,7 @@
1704
1755
  width: 1rem;
1705
1756
  height: 1rem;
1706
1757
  color: var(--oui-color-text-muted);
1707
- transition: transform var(--oui-duration-normal) var(--oui-ease);
1758
+ transition: transform var(--oui-duration-normal) var(--oui-ease-out);
1708
1759
  }
1709
1760
  [data-panel-open] > .oui-collapsible__chevron {
1710
1761
  transform: rotate(90deg);
@@ -1743,7 +1794,8 @@
1743
1794
  background: var(--oui-input-bg, var(--oui-color-surface));
1744
1795
  color: var(--oui-color-text);
1745
1796
  font-size: var(--oui-font-size-md);
1746
- transition: border-color var(--oui-duration-normal) var(--oui-ease), box-shadow var(--oui-duration-normal) var(--oui-ease), background-color var(--oui-duration-normal) var(--oui-ease);
1797
+ caret-color: var(--oui-color-accent);
1798
+ transition: border-color var(--oui-duration-fast) var(--oui-ease), box-shadow var(--oui-duration-fast) var(--oui-ease), background-color var(--oui-duration-fast) var(--oui-ease);
1747
1799
  }
1748
1800
  @media (hover: hover) {
1749
1801
  .oui-combobox__group:hover:not([data-disabled], :disabled, :focus-within, [data-popup-open]) {
@@ -1780,9 +1832,13 @@
1780
1832
  padding-block: 0.25rem;
1781
1833
  padding-left: 0.35rem;
1782
1834
  }
1835
+ .oui-combobox__group[data-invalid]:focus-within, .oui-combobox__group:has([data-invalid]):focus-within {
1836
+ border-color: var(--oui-color-danger);
1837
+ box-shadow: 0 0 0 3px var(--oui-color-danger-border);
1838
+ }
1783
1839
  .oui-combobox__group[data-disabled] {
1784
1840
  cursor: not-allowed;
1785
- opacity: 0.55;
1841
+ opacity: var(--oui-control-disabled-opacity);
1786
1842
  }
1787
1843
  .oui-combobox__input {
1788
1844
  flex: 1;
@@ -1801,6 +1857,7 @@
1801
1857
  opacity: 1;
1802
1858
  }
1803
1859
  .oui-combobox__chips .oui-combobox__input {
1860
+ min-width: 2.5rem;
1804
1861
  height: 1.75rem;
1805
1862
  padding-left: 0.4rem;
1806
1863
  }
@@ -1830,13 +1887,16 @@
1830
1887
  height: 1rem;
1831
1888
  }
1832
1889
  .oui-combobox__action:focus-visible {
1833
- outline: none;
1834
- box-shadow: var(--oui-focus-ring);
1890
+ outline: var(--oui-focus-outline);
1891
+ outline-offset: var(--oui-focus-outline-offset);
1835
1892
  }
1836
1893
  .oui-combobox__action:hover {
1837
1894
  background: var(--oui-color-accent-subtle);
1838
1895
  color: var(--oui-color-text-strong);
1839
1896
  }
1897
+ .oui-combobox__action svg {
1898
+ transition: transform var(--oui-duration-normal) var(--oui-ease-out);
1899
+ }
1840
1900
  .oui-combobox__action[data-popup-open] svg {
1841
1901
  transform: rotate(180deg);
1842
1902
  }
@@ -1877,12 +1937,17 @@
1877
1937
  background: transparent;
1878
1938
  color: inherit;
1879
1939
  cursor: pointer;
1940
+ transition: background-color var(--oui-duration-fast) var(--oui-ease);
1880
1941
  }
1881
1942
  .oui-combobox__chip-remove svg {
1882
1943
  flex-shrink: 0;
1883
1944
  width: 0.8rem;
1884
1945
  height: 0.8rem;
1885
1946
  }
1947
+ .oui-combobox__chip-remove:focus-visible {
1948
+ outline: var(--oui-focus-outline);
1949
+ outline-offset: -2px;
1950
+ }
1886
1951
  .oui-combobox__chip-remove:hover {
1887
1952
  background: var(--oui-color-accent-strong);
1888
1953
  }
@@ -1904,12 +1969,24 @@
1904
1969
  color: var(--oui-color-text);
1905
1970
  font-size: var(--oui-font-size-md);
1906
1971
  outline: none;
1972
+ scrollbar-width: thin;
1973
+ scrollbar-color: var(--oui-color-border-hover) transparent;
1907
1974
  transform-origin: var(--transform-origin);
1908
1975
  transition: opacity var(--oui-duration-fast) var(--oui-ease), transform var(--oui-duration-fast) var(--oui-ease-out);
1909
1976
  }
1977
+ @media (prefers-reduced-motion: reduce) {
1978
+ .oui-combobox__popup {
1979
+ transition-duration: 0.01ms !important;
1980
+ animation-duration: 0.01ms !important;
1981
+ animation-iteration-count: 1 !important;
1982
+ }
1983
+ }
1910
1984
  .oui-combobox__popup[data-starting-style], .oui-combobox__popup[data-ending-style] {
1911
1985
  opacity: 0;
1912
- transform: scale(0.96);
1986
+ transform: scale(0.97);
1987
+ }
1988
+ .oui-combobox__popup[data-ending-style] {
1989
+ transform: none;
1913
1990
  }
1914
1991
  .oui-combobox__popup[data-instant] {
1915
1992
  transition: none;
@@ -1950,7 +2027,7 @@
1950
2027
  color: var(--oui-color-text-strong);
1951
2028
  }
1952
2029
  .oui-combobox__item[data-disabled] {
1953
- opacity: 0.45;
2030
+ opacity: var(--oui-control-disabled-opacity);
1954
2031
  pointer-events: none;
1955
2032
  }
1956
2033
  .oui-combobox__item {
@@ -2045,6 +2122,7 @@
2045
2122
  font-size: var(--oui-font-size-lg);
2046
2123
  font-weight: var(--oui-font-weight-medium);
2047
2124
  outline: none;
2125
+ caret-color: var(--oui-color-accent);
2048
2126
  }
2049
2127
  .oui-command__input::placeholder {
2050
2128
  color: var(--oui-color-text-subtle);
@@ -2057,10 +2135,12 @@
2057
2135
  overflow-y: auto;
2058
2136
  overscroll-behavior: contain;
2059
2137
  scroll-padding-block: 0.4rem;
2138
+ scrollbar-width: thin;
2139
+ scrollbar-color: var(--oui-color-border-hover) transparent;
2060
2140
  }
2061
2141
  .oui-command__group-label {
2062
2142
  color: var(--oui-color-text-muted);
2063
- font-size: 0.7rem;
2143
+ font-size: var(--oui-font-size-2xs);
2064
2144
  font-weight: var(--oui-font-weight-bold);
2065
2145
  letter-spacing: 0.08em;
2066
2146
  text-transform: uppercase;
@@ -2089,7 +2169,7 @@
2089
2169
  color: var(--oui-color-text-strong);
2090
2170
  }
2091
2171
  .oui-command__item[data-disabled] {
2092
- opacity: 0.45;
2172
+ opacity: var(--oui-control-disabled-opacity);
2093
2173
  pointer-events: none;
2094
2174
  }
2095
2175
  .oui-command__item {
@@ -2143,7 +2223,7 @@
2143
2223
  border-radius: var(--oui-radius-xs);
2144
2224
  background: var(--oui-color-surface-muted);
2145
2225
  font-family: var(--oui-font-mono);
2146
- font-size: 0.7rem;
2226
+ font-size: var(--oui-font-size-2xs);
2147
2227
  }
2148
2228
  .oui-command__empty {
2149
2229
  padding: 2rem 1rem;
@@ -2187,6 +2267,40 @@
2187
2267
  flex: 1 1 14rem;
2188
2268
  max-width: 22rem;
2189
2269
  }
2270
+ .oui-data-table__filters {
2271
+ display: flex;
2272
+ flex-wrap: wrap;
2273
+ align-items: center;
2274
+ gap: 0.5rem;
2275
+ min-width: 0;
2276
+ }
2277
+ .oui-data-table .oui-data-table__filter {
2278
+ width: auto;
2279
+ min-width: 0;
2280
+ font-size: var(--oui-font-size-sm);
2281
+ font-weight: var(--oui-font-weight-medium);
2282
+ }
2283
+ .oui-data-table .oui-data-table__filter.oui-toggle {
2284
+ border-width: var(--oui-control-border-width);
2285
+ }
2286
+ .oui-data-table .oui-data-table__filter.oui-select__trigger {
2287
+ gap: 0.4rem;
2288
+ }
2289
+ .oui-data-table .oui-data-table__filter .oui-date-picker__trigger {
2290
+ font-size: inherit;
2291
+ }
2292
+ .oui-data-table .oui-data-table__filter .oui-date-picker__trigger[data-placeholder] .oui-date-picker__value {
2293
+ color: var(--oui-color-text-muted);
2294
+ }
2295
+ .oui-data-table .oui-data-table__filter[data-active],
2296
+ .oui-data-table .oui-data-table__filter .oui-date-picker__trigger:not([data-placeholder]) {
2297
+ border-color: var(--oui-color-accent);
2298
+ background: var(--oui-color-accent-subtle);
2299
+ color: var(--oui-color-text-strong);
2300
+ }
2301
+ .oui-data-table__filter-label {
2302
+ color: var(--oui-color-text-muted);
2303
+ }
2190
2304
  .oui-data-table__actions {
2191
2305
  display: flex;
2192
2306
  flex-wrap: wrap;
@@ -2210,6 +2324,111 @@
2210
2324
  outline: 2px solid var(--oui-color-border-focus);
2211
2325
  outline-offset: -2px;
2212
2326
  }
2327
+ .oui-data-table .oui-table__cell[data-mono] {
2328
+ font-family: var(--oui-font-mono);
2329
+ font-size: 0.92em;
2330
+ }
2331
+ .oui-data-table .oui-table__cell[data-muted] {
2332
+ color: var(--oui-color-text-muted);
2333
+ }
2334
+ .oui-data-table .oui-table__row[data-tone] {
2335
+ --_tone: var(--oui-color-accent);
2336
+ --_tone-subtle: var(--oui-color-accent-subtle);
2337
+ }
2338
+ .oui-data-table .oui-table__row[data-tone]:not([data-selected], :hover) {
2339
+ background: var(--_tone-subtle);
2340
+ }
2341
+ .oui-data-table .oui-table__row[data-tone] > :first-child {
2342
+ box-shadow: inset 3px 0 0 var(--_tone);
2343
+ }
2344
+ .oui-data-table .oui-table__row[data-tone][data-tone=info] {
2345
+ --_tone: var(--oui-color-info);
2346
+ --_tone-subtle: var(--oui-color-info-subtle);
2347
+ }
2348
+ .oui-data-table .oui-table__row[data-tone][data-tone=success] {
2349
+ --_tone: var(--oui-color-success);
2350
+ --_tone-subtle: var(--oui-color-success-subtle);
2351
+ }
2352
+ .oui-data-table .oui-table__row[data-tone][data-tone=warning] {
2353
+ --_tone: var(--oui-color-warning);
2354
+ --_tone-subtle: var(--oui-color-warning-subtle);
2355
+ }
2356
+ .oui-data-table .oui-table__row[data-tone][data-tone=danger] {
2357
+ --_tone: var(--oui-color-danger);
2358
+ --_tone-subtle: var(--oui-color-danger-subtle);
2359
+ }
2360
+ .oui-data-table .oui-data-table__row-actions {
2361
+ width: 1%;
2362
+ padding-block: 0;
2363
+ text-align: right;
2364
+ white-space: nowrap;
2365
+ }
2366
+ .oui-data-table__row-actions-list {
2367
+ display: inline-flex;
2368
+ align-items: center;
2369
+ justify-content: flex-end;
2370
+ gap: 0.125rem;
2371
+ vertical-align: middle;
2372
+ }
2373
+ .oui-data-table .oui-data-table__action[data-danger]:hover:not([data-disabled]) {
2374
+ background: var(--oui-color-danger-subtle);
2375
+ color: var(--oui-color-danger-text);
2376
+ }
2377
+ .oui-data-table .oui-table__row[data-editing] {
2378
+ background: var(--oui-color-accent-subtle);
2379
+ }
2380
+ .oui-data-table .oui-table__row[data-editing] .oui-table__cell {
2381
+ padding-block: 1px;
2382
+ }
2383
+ .oui-data-table .oui-table__row[data-editing] .oui-input,
2384
+ .oui-data-table .oui-table__row[data-editing] .oui-input-group,
2385
+ .oui-data-table .oui-table__row[data-editing] .oui-select__trigger {
2386
+ width: 0;
2387
+ min-width: 100%;
2388
+ }
2389
+ .oui-data-table .oui-table[data-locked] {
2390
+ table-layout: fixed;
2391
+ }
2392
+ .oui-data-table .oui-table[data-layout=stable] .oui-table__cell {
2393
+ overflow-wrap: break-word;
2394
+ }
2395
+ .oui-data-table .oui-table__cell[data-truncate] {
2396
+ overflow: hidden;
2397
+ max-width: 0;
2398
+ text-overflow: ellipsis;
2399
+ white-space: nowrap;
2400
+ }
2401
+ .oui-data-table__scroll {
2402
+ overflow-y: auto;
2403
+ overscroll-behavior: contain;
2404
+ scrollbar-gutter: stable;
2405
+ }
2406
+ .oui-data-table .oui-table[data-virtualized] .oui-table__cell:not(.oui-data-table__check, .oui-data-table__row-actions, [data-editor]) {
2407
+ overflow: hidden;
2408
+ text-overflow: ellipsis;
2409
+ white-space: nowrap;
2410
+ }
2411
+ .oui-data-table__spacer td {
2412
+ padding: 0;
2413
+ border: 0;
2414
+ }
2415
+ .oui-data-table__sizer {
2416
+ visibility: hidden;
2417
+ }
2418
+ .oui-data-table__sizer .oui-table__cell {
2419
+ height: 0;
2420
+ padding-block: 0;
2421
+ border: 0;
2422
+ line-height: 0;
2423
+ }
2424
+ .oui-data-table__sizer .oui-data-table__sizer-content,
2425
+ .oui-data-table__sizer .oui-data-table__row-actions-list {
2426
+ overflow: hidden;
2427
+ height: 0;
2428
+ }
2429
+ .oui-data-table__sizer .oui-data-table__row-actions-list {
2430
+ display: flex;
2431
+ }
2213
2432
  .oui-data-table__spinner {
2214
2433
  color: var(--oui-color-text-muted);
2215
2434
  font-size: var(--oui-font-size-sm);
@@ -2236,7 +2455,8 @@
2236
2455
  background: var(--oui-input-bg, var(--oui-color-surface));
2237
2456
  color: var(--oui-color-text);
2238
2457
  font-size: var(--oui-font-size-md);
2239
- transition: border-color var(--oui-duration-normal) var(--oui-ease), box-shadow var(--oui-duration-normal) var(--oui-ease), background-color var(--oui-duration-normal) var(--oui-ease);
2458
+ caret-color: var(--oui-color-accent);
2459
+ transition: border-color var(--oui-duration-fast) var(--oui-ease), box-shadow var(--oui-duration-fast) var(--oui-ease), background-color var(--oui-duration-fast) var(--oui-ease);
2240
2460
  }
2241
2461
  @media (hover: hover) {
2242
2462
  .oui-date-picker__trigger:hover:not([data-disabled], :disabled, :focus-within, [data-popup-open]) {
@@ -2279,7 +2499,7 @@
2279
2499
  }
2280
2500
  .oui-date-picker__trigger:disabled {
2281
2501
  cursor: not-allowed;
2282
- opacity: 0.55;
2502
+ opacity: var(--oui-control-disabled-opacity);
2283
2503
  }
2284
2504
  .oui-date-picker__trigger[data-size=sm] {
2285
2505
  --_height: var(--oui-control-height-sm);
@@ -2370,7 +2590,7 @@
2370
2590
  color: var(--oui-color-text-strong);
2371
2591
  }
2372
2592
  .oui-date-range-picker__preset[data-disabled] {
2373
- opacity: 0.45;
2593
+ opacity: var(--oui-control-disabled-opacity);
2374
2594
  pointer-events: none;
2375
2595
  }
2376
2596
  .oui-date-range-picker__preset {
@@ -2382,8 +2602,8 @@
2382
2602
  cursor: pointer;
2383
2603
  }
2384
2604
  .oui-date-range-picker__preset:focus-visible {
2385
- outline: none;
2386
- box-shadow: var(--oui-focus-ring);
2605
+ outline: var(--oui-focus-outline);
2606
+ outline-offset: var(--oui-focus-outline-offset);
2387
2607
  }
2388
2608
  .oui-date-range-picker__preset:hover:not(:disabled) {
2389
2609
  background: var(--oui-color-accent-subtle);
@@ -2395,7 +2615,7 @@
2395
2615
  }
2396
2616
  .oui-date-range-picker__preset:disabled {
2397
2617
  cursor: not-allowed;
2398
- opacity: 0.45;
2618
+ opacity: var(--oui-control-disabled-opacity);
2399
2619
  }
2400
2620
  }
2401
2621
  @layer oui.components {
@@ -2440,6 +2660,8 @@
2440
2660
  color: var(--oui-color-text);
2441
2661
  outline: none;
2442
2662
  overscroll-behavior: contain;
2663
+ scrollbar-width: thin;
2664
+ scrollbar-color: var(--oui-color-border-hover) transparent;
2443
2665
  transition: opacity var(--oui-duration-normal) var(--oui-ease), transform var(--oui-duration-slow) var(--oui-ease-out), scale var(--oui-duration-normal) var(--oui-ease);
2444
2666
  }
2445
2667
  @media (prefers-reduced-motion: reduce) {
@@ -2529,12 +2751,15 @@
2529
2751
  font-size: 1.25rem;
2530
2752
  font-weight: var(--oui-font-weight-bold);
2531
2753
  line-height: 1.25;
2754
+ letter-spacing: -0.01em;
2755
+ text-wrap: balance;
2532
2756
  }
2533
2757
  .oui-dialog__description {
2534
2758
  margin: 0;
2535
2759
  color: var(--oui-color-text-muted);
2536
2760
  font-size: var(--oui-font-size-md);
2537
2761
  line-height: 1.55;
2762
+ text-wrap: pretty;
2538
2763
  }
2539
2764
  .oui-dialog__body {
2540
2765
  flex: 1;
@@ -2580,8 +2805,8 @@
2580
2805
  height: 1.1rem;
2581
2806
  }
2582
2807
  .oui-dialog__close:focus-visible {
2583
- outline: none;
2584
- box-shadow: var(--oui-focus-ring);
2808
+ outline: var(--oui-focus-outline);
2809
+ outline-offset: var(--oui-focus-outline-offset);
2585
2810
  }
2586
2811
  .oui-dialog__close:hover {
2587
2812
  background: var(--oui-color-accent-subtle);
@@ -2681,6 +2906,7 @@
2681
2906
  font-size: 1.25rem;
2682
2907
  font-weight: var(--oui-font-weight-bold);
2683
2908
  line-height: 1.25;
2909
+ letter-spacing: -0.01em;
2684
2910
  overflow-wrap: anywhere;
2685
2911
  }
2686
2912
  .oui-drawer__description {
@@ -2701,6 +2927,8 @@
2701
2927
  padding: var(--oui-drawer-padding, var(--_padding));
2702
2928
  overflow-y: auto;
2703
2929
  overscroll-behavior: contain;
2930
+ scrollbar-width: thin;
2931
+ scrollbar-color: var(--oui-color-border-hover) transparent;
2704
2932
  background: var(--oui-drawer-body-bg, var(--oui-color-bg));
2705
2933
  font-size: var(--oui-font-size-md);
2706
2934
  line-height: 1.55;
@@ -2783,8 +3011,8 @@
2783
3011
  gap: 0.4rem;
2784
3012
  min-width: 0;
2785
3013
  }
2786
- .oui-field[data-disabled] {
2787
- opacity: 0.6;
3014
+ .oui-field[data-disabled] .oui-field__label {
3015
+ color: var(--oui-color-text-muted);
2788
3016
  }
2789
3017
  .oui-field__label {
2790
3018
  display: inline-flex;
@@ -2837,7 +3065,7 @@
2837
3065
  color: var(--oui-color-text-strong);
2838
3066
  font-family: var(--oui-font-body);
2839
3067
  font-size: var(--oui-font-size-md);
2840
- font-weight: var(--oui-font-weight-bold);
3068
+ font-weight: var(--oui-font-weight-semibold);
2841
3069
  }
2842
3070
  .oui-form {
2843
3071
  display: flex;
@@ -2886,7 +3114,7 @@
2886
3114
  }
2887
3115
  .oui-dropzone[data-disabled] {
2888
3116
  cursor: not-allowed;
2889
- opacity: 0.55;
3117
+ opacity: var(--oui-control-disabled-opacity);
2890
3118
  }
2891
3119
  .oui-dropzone[data-size=sm] {
2892
3120
  flex-direction: row;
@@ -3019,7 +3247,8 @@
3019
3247
  background: var(--oui-input-bg, var(--oui-color-surface));
3020
3248
  color: var(--oui-color-text);
3021
3249
  font-size: var(--oui-font-size-md);
3022
- transition: border-color var(--oui-duration-normal) var(--oui-ease), box-shadow var(--oui-duration-normal) var(--oui-ease), background-color var(--oui-duration-normal) var(--oui-ease);
3250
+ caret-color: var(--oui-color-accent);
3251
+ transition: border-color var(--oui-duration-fast) var(--oui-ease), box-shadow var(--oui-duration-fast) var(--oui-ease), background-color var(--oui-duration-fast) var(--oui-ease);
3023
3252
  }
3024
3253
  @media (hover: hover) {
3025
3254
  .oui-input:hover:not([data-disabled], :disabled, :focus-within, [data-popup-open]) {
@@ -3049,11 +3278,11 @@
3049
3278
  }
3050
3279
  .oui-input[data-invalid]:focus {
3051
3280
  border-color: var(--oui-color-danger);
3052
- box-shadow: 0 0 0 3px var(--oui-color-danger-subtle);
3281
+ box-shadow: 0 0 0 3px var(--oui-color-danger-border);
3053
3282
  }
3054
3283
  .oui-input:disabled, .oui-input[data-disabled] {
3055
3284
  cursor: not-allowed;
3056
- opacity: 0.55;
3285
+ opacity: var(--oui-control-disabled-opacity);
3057
3286
  }
3058
3287
  .oui-input[data-size=sm] {
3059
3288
  --_height: var(--oui-control-height-sm);
@@ -3099,7 +3328,8 @@
3099
3328
  background: var(--oui-input-bg, var(--oui-color-surface));
3100
3329
  color: var(--oui-color-text);
3101
3330
  font-size: var(--oui-font-size-md);
3102
- transition: border-color var(--oui-duration-normal) var(--oui-ease), box-shadow var(--oui-duration-normal) var(--oui-ease), background-color var(--oui-duration-normal) var(--oui-ease);
3331
+ caret-color: var(--oui-color-accent);
3332
+ transition: border-color var(--oui-duration-fast) var(--oui-ease), box-shadow var(--oui-duration-fast) var(--oui-ease), background-color var(--oui-duration-fast) var(--oui-ease);
3103
3333
  }
3104
3334
  @media (hover: hover) {
3105
3335
  .oui-input-group:hover:not([data-disabled], :disabled, :focus-within, [data-popup-open]) {
@@ -3127,9 +3357,15 @@
3127
3357
  .oui-input-group:has([data-invalid]) {
3128
3358
  border-color: var(--oui-color-danger);
3129
3359
  }
3360
+ .oui-input-group:has([data-invalid]):focus-within {
3361
+ box-shadow: 0 0 0 3px var(--oui-color-danger-border);
3362
+ }
3130
3363
  .oui-input-group[data-disabled] {
3131
3364
  cursor: not-allowed;
3132
- opacity: 0.55;
3365
+ opacity: var(--oui-control-disabled-opacity);
3366
+ }
3367
+ .oui-input-group[data-disabled] .oui-input {
3368
+ opacity: 1;
3133
3369
  }
3134
3370
  .oui-input-group[data-size=sm] {
3135
3371
  --_height: var(--oui-control-height-sm);
@@ -3170,8 +3406,8 @@
3170
3406
  transition: color var(--oui-duration-fast) var(--oui-ease), text-decoration-color var(--oui-duration-fast) var(--oui-ease);
3171
3407
  }
3172
3408
  .oui-link:focus-visible {
3173
- outline: none;
3174
- box-shadow: var(--oui-focus-ring);
3409
+ outline: var(--oui-focus-outline);
3410
+ outline-offset: var(--oui-focus-outline-offset);
3175
3411
  }
3176
3412
  .oui-link:hover {
3177
3413
  color: var(--oui-color-text-strong);
@@ -3216,12 +3452,24 @@
3216
3452
  color: var(--oui-color-text);
3217
3453
  font-size: var(--oui-font-size-md);
3218
3454
  outline: none;
3455
+ scrollbar-width: thin;
3456
+ scrollbar-color: var(--oui-color-border-hover) transparent;
3219
3457
  transform-origin: var(--transform-origin);
3220
3458
  transition: opacity var(--oui-duration-fast) var(--oui-ease), transform var(--oui-duration-fast) var(--oui-ease-out);
3221
3459
  }
3460
+ @media (prefers-reduced-motion: reduce) {
3461
+ .oui-menu {
3462
+ transition-duration: 0.01ms !important;
3463
+ animation-duration: 0.01ms !important;
3464
+ animation-iteration-count: 1 !important;
3465
+ }
3466
+ }
3222
3467
  .oui-menu[data-starting-style], .oui-menu[data-ending-style] {
3223
3468
  opacity: 0;
3224
- transform: scale(0.96);
3469
+ transform: scale(0.97);
3470
+ }
3471
+ .oui-menu[data-ending-style] {
3472
+ transform: none;
3225
3473
  }
3226
3474
  .oui-menu[data-instant] {
3227
3475
  transition: none;
@@ -3254,7 +3502,7 @@
3254
3502
  color: var(--oui-color-text-strong);
3255
3503
  }
3256
3504
  .oui-menu__item[data-disabled] {
3257
- opacity: 0.45;
3505
+ opacity: var(--oui-control-disabled-opacity);
3258
3506
  pointer-events: none;
3259
3507
  }
3260
3508
  .oui-menu__item[data-danger] {
@@ -3326,7 +3574,7 @@
3326
3574
  }
3327
3575
  .oui-menu__group-label {
3328
3576
  color: var(--oui-color-text-muted);
3329
- font-size: 0.7rem;
3577
+ font-size: var(--oui-font-size-2xs);
3330
3578
  font-weight: var(--oui-font-weight-bold);
3331
3579
  letter-spacing: 0.08em;
3332
3580
  text-transform: uppercase;
@@ -3353,7 +3601,8 @@
3353
3601
  background: var(--oui-input-bg, var(--oui-color-surface));
3354
3602
  color: var(--oui-color-text);
3355
3603
  font-size: var(--oui-font-size-md);
3356
- transition: border-color var(--oui-duration-normal) var(--oui-ease), box-shadow var(--oui-duration-normal) var(--oui-ease), background-color var(--oui-duration-normal) var(--oui-ease);
3604
+ caret-color: var(--oui-color-accent);
3605
+ transition: border-color var(--oui-duration-fast) var(--oui-ease), box-shadow var(--oui-duration-fast) var(--oui-ease), background-color var(--oui-duration-fast) var(--oui-ease);
3357
3606
  }
3358
3607
  @media (hover: hover) {
3359
3608
  .oui-number-field__group:hover:not([data-disabled], :disabled, :focus-within, [data-popup-open]) {
@@ -3384,7 +3633,8 @@
3384
3633
  --_height: var(--oui-control-height-lg);
3385
3634
  }
3386
3635
  .oui-number-field__group[data-disabled] {
3387
- opacity: 0.55;
3636
+ cursor: not-allowed;
3637
+ opacity: var(--oui-control-disabled-opacity);
3388
3638
  }
3389
3639
  .oui-number-field__input {
3390
3640
  flex: 1;
@@ -3394,7 +3644,7 @@
3394
3644
  background: transparent;
3395
3645
  color: inherit;
3396
3646
  font: inherit;
3397
- font-weight: var(--oui-font-weight-semibold);
3647
+ font-weight: var(--oui-font-weight-medium);
3398
3648
  font-variant-numeric: tabular-nums;
3399
3649
  text-align: center;
3400
3650
  outline: none;
@@ -3428,7 +3678,10 @@
3428
3678
  }
3429
3679
  .oui-number-field__step[data-disabled] {
3430
3680
  cursor: not-allowed;
3431
- opacity: 0.4;
3681
+ opacity: var(--oui-control-disabled-opacity);
3682
+ }
3683
+ .oui-number-field__group[data-disabled] .oui-number-field__step[data-disabled] {
3684
+ opacity: 1;
3432
3685
  }
3433
3686
  }
3434
3687
  @layer oui.components {
@@ -3489,8 +3742,8 @@
3489
3742
  transition: background-color var(--oui-duration-fast) var(--oui-ease), color var(--oui-duration-fast) var(--oui-ease);
3490
3743
  }
3491
3744
  .oui-pagination__page:focus-visible {
3492
- outline: none;
3493
- box-shadow: var(--oui-focus-ring);
3745
+ outline: var(--oui-focus-outline);
3746
+ outline-offset: var(--oui-focus-outline-offset);
3494
3747
  }
3495
3748
  .oui-pagination__page:hover {
3496
3749
  background: var(--oui-color-accent-subtle);
@@ -3524,12 +3777,24 @@
3524
3777
  color: var(--oui-color-text);
3525
3778
  font-size: var(--oui-font-size-md);
3526
3779
  outline: none;
3780
+ scrollbar-width: thin;
3781
+ scrollbar-color: var(--oui-color-border-hover) transparent;
3527
3782
  transform-origin: var(--transform-origin);
3528
3783
  transition: opacity var(--oui-duration-fast) var(--oui-ease), transform var(--oui-duration-fast) var(--oui-ease-out);
3529
3784
  }
3785
+ @media (prefers-reduced-motion: reduce) {
3786
+ .oui-popover {
3787
+ transition-duration: 0.01ms !important;
3788
+ animation-duration: 0.01ms !important;
3789
+ animation-iteration-count: 1 !important;
3790
+ }
3791
+ }
3530
3792
  .oui-popover[data-starting-style], .oui-popover[data-ending-style] {
3531
3793
  opacity: 0;
3532
- transform: scale(0.96);
3794
+ transform: scale(0.97);
3795
+ }
3796
+ .oui-popover[data-ending-style] {
3797
+ transform: none;
3533
3798
  }
3534
3799
  .oui-popover[data-instant] {
3535
3800
  transition: none;
@@ -3545,17 +3810,20 @@
3545
3810
  }
3546
3811
  .oui-popover__title {
3547
3812
  margin: 0;
3548
- color: var(--oui-color-text-muted);
3549
- font-size: var(--oui-font-size-xs);
3550
- font-weight: var(--oui-font-weight-bold);
3551
- letter-spacing: 0.06em;
3552
- text-transform: uppercase;
3813
+ color: var(--oui-color-text-strong);
3814
+ font-size: var(--oui-font-size-md);
3815
+ font-weight: var(--oui-font-weight-semibold);
3816
+ line-height: 1.35;
3553
3817
  }
3554
3818
  .oui-popover__description {
3555
3819
  margin: 0;
3556
- color: var(--oui-color-text-strong);
3820
+ color: var(--oui-color-text-muted);
3557
3821
  font-size: var(--oui-font-size-md);
3558
- line-height: 1.45;
3822
+ line-height: 1.5;
3823
+ text-wrap: pretty;
3824
+ }
3825
+ .oui-popover__title + .oui-popover__description {
3826
+ margin-top: -0.45rem;
3559
3827
  }
3560
3828
  .oui-popover__arrow,
3561
3829
  .oui-preview-card__arrow,
@@ -3637,12 +3905,24 @@
3637
3905
  color: var(--oui-color-text);
3638
3906
  font-size: var(--oui-font-size-md);
3639
3907
  outline: none;
3908
+ scrollbar-width: thin;
3909
+ scrollbar-color: var(--oui-color-border-hover) transparent;
3640
3910
  transform-origin: var(--transform-origin);
3641
3911
  transition: opacity var(--oui-duration-fast) var(--oui-ease), transform var(--oui-duration-fast) var(--oui-ease-out);
3642
3912
  }
3913
+ @media (prefers-reduced-motion: reduce) {
3914
+ .oui-preview-card {
3915
+ transition-duration: 0.01ms !important;
3916
+ animation-duration: 0.01ms !important;
3917
+ animation-iteration-count: 1 !important;
3918
+ }
3919
+ }
3643
3920
  .oui-preview-card[data-starting-style], .oui-preview-card[data-ending-style] {
3644
3921
  opacity: 0;
3645
- transform: scale(0.96);
3922
+ transform: scale(0.97);
3923
+ }
3924
+ .oui-preview-card[data-ending-style] {
3925
+ transform: none;
3646
3926
  }
3647
3927
  .oui-preview-card[data-instant] {
3648
3928
  transition: none;
@@ -3704,7 +3984,7 @@
3704
3984
  .oui-progress__value {
3705
3985
  color: var(--oui-color-text-muted);
3706
3986
  font-size: var(--oui-font-size-sm);
3707
- font-weight: var(--oui-font-weight-semibold);
3987
+ font-weight: var(--oui-font-weight-medium);
3708
3988
  font-variant-numeric: tabular-nums;
3709
3989
  }
3710
3990
  .oui-progress__track {
@@ -3754,7 +4034,8 @@
3754
4034
  outline: none;
3755
4035
  }
3756
4036
  .oui-scroll-area__viewport:focus-visible {
3757
- box-shadow: inset 0 0 0 2px var(--oui-color-border-focus);
4037
+ outline: var(--oui-focus-outline);
4038
+ outline-offset: -2px;
3758
4039
  }
3759
4040
  .oui-scroll-area__scrollbar {
3760
4041
  display: flex;
@@ -3794,7 +4075,8 @@
3794
4075
  background: var(--oui-input-bg, var(--oui-color-surface));
3795
4076
  color: var(--oui-color-text);
3796
4077
  font-size: var(--oui-font-size-md);
3797
- transition: border-color var(--oui-duration-normal) var(--oui-ease), box-shadow var(--oui-duration-normal) var(--oui-ease), background-color var(--oui-duration-normal) var(--oui-ease);
4078
+ caret-color: var(--oui-color-accent);
4079
+ transition: border-color var(--oui-duration-fast) var(--oui-ease), box-shadow var(--oui-duration-fast) var(--oui-ease), background-color var(--oui-duration-fast) var(--oui-ease);
3798
4080
  }
3799
4081
  @media (hover: hover) {
3800
4082
  .oui-select__trigger:hover:not([data-disabled], :disabled, :focus-within, [data-popup-open]) {
@@ -3827,9 +4109,13 @@
3827
4109
  .oui-select__trigger[data-popup-open] {
3828
4110
  border-color: var(--oui-color-accent);
3829
4111
  }
4112
+ .oui-select__trigger[data-invalid]:focus-visible {
4113
+ border-color: var(--oui-color-danger);
4114
+ box-shadow: 0 0 0 3px var(--oui-color-danger-border);
4115
+ }
3830
4116
  .oui-select__trigger[data-disabled] {
3831
4117
  cursor: not-allowed;
3832
- opacity: 0.55;
4118
+ opacity: var(--oui-control-disabled-opacity);
3833
4119
  }
3834
4120
  .oui-select__trigger[data-size=sm] {
3835
4121
  --_height: var(--oui-control-height-sm);
@@ -3854,7 +4140,7 @@
3854
4140
  display: inline-flex;
3855
4141
  flex-shrink: 0;
3856
4142
  color: var(--oui-color-text-muted);
3857
- transition: transform var(--oui-duration-normal) var(--oui-ease);
4143
+ transition: transform var(--oui-duration-normal) var(--oui-ease-out);
3858
4144
  }
3859
4145
  .oui-select__icon svg {
3860
4146
  flex-shrink: 0;
@@ -3882,12 +4168,24 @@
3882
4168
  color: var(--oui-color-text);
3883
4169
  font-size: var(--oui-font-size-md);
3884
4170
  outline: none;
4171
+ scrollbar-width: thin;
4172
+ scrollbar-color: var(--oui-color-border-hover) transparent;
3885
4173
  transform-origin: var(--transform-origin);
3886
4174
  transition: opacity var(--oui-duration-fast) var(--oui-ease), transform var(--oui-duration-fast) var(--oui-ease-out);
3887
4175
  }
4176
+ @media (prefers-reduced-motion: reduce) {
4177
+ .oui-select__popup {
4178
+ transition-duration: 0.01ms !important;
4179
+ animation-duration: 0.01ms !important;
4180
+ animation-iteration-count: 1 !important;
4181
+ }
4182
+ }
3888
4183
  .oui-select__popup[data-starting-style], .oui-select__popup[data-ending-style] {
3889
4184
  opacity: 0;
3890
- transform: scale(0.96);
4185
+ transform: scale(0.97);
4186
+ }
4187
+ .oui-select__popup[data-ending-style] {
4188
+ transform: none;
3891
4189
  }
3892
4190
  .oui-select__popup[data-instant] {
3893
4191
  transition: none;
@@ -3906,6 +4204,8 @@
3906
4204
  overflow-y: auto;
3907
4205
  overscroll-behavior: contain;
3908
4206
  scroll-padding-block: 0.3rem;
4207
+ scrollbar-width: thin;
4208
+ scrollbar-color: var(--oui-color-border-hover) transparent;
3909
4209
  }
3910
4210
  .oui-select__item {
3911
4211
  box-sizing: border-box;
@@ -3929,14 +4229,13 @@
3929
4229
  color: var(--oui-color-text-strong);
3930
4230
  }
3931
4231
  .oui-select__item[data-disabled] {
3932
- opacity: 0.45;
4232
+ opacity: var(--oui-control-disabled-opacity);
3933
4233
  pointer-events: none;
3934
4234
  }
3935
4235
  .oui-select__item {
3936
4236
  justify-content: space-between;
3937
4237
  }
3938
4238
  .oui-select__item[data-selected] {
3939
- background: var(--oui-color-accent-muted);
3940
4239
  color: var(--oui-color-text-strong);
3941
4240
  font-weight: var(--oui-font-weight-semibold);
3942
4241
  }
@@ -3958,7 +4257,7 @@
3958
4257
  }
3959
4258
  .oui-select__group-label {
3960
4259
  color: var(--oui-color-text-muted);
3961
- font-size: 0.7rem;
4260
+ font-size: var(--oui-font-size-2xs);
3962
4261
  font-weight: var(--oui-font-weight-bold);
3963
4262
  letter-spacing: 0.08em;
3964
4263
  text-transform: uppercase;
@@ -4031,7 +4330,7 @@
4031
4330
  width: 100%;
4032
4331
  }
4033
4332
  .oui-slider[data-disabled] {
4034
- opacity: 0.5;
4333
+ opacity: var(--oui-control-disabled-opacity);
4035
4334
  }
4036
4335
  .oui-slider__header {
4037
4336
  display: flex;
@@ -4073,10 +4372,16 @@
4073
4372
  background: var(--oui-color-surface);
4074
4373
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
4075
4374
  cursor: grab;
4076
- transition: box-shadow var(--oui-duration-fast) var(--oui-ease), transform var(--oui-duration-fast) var(--oui-ease);
4375
+ transition: transform var(--oui-duration-fast) var(--oui-ease);
4376
+ }
4377
+ @media (hover: hover) {
4378
+ .oui-slider__thumb:hover:not([data-dragging]) {
4379
+ transform: scale(1.06);
4380
+ }
4077
4381
  }
4078
4382
  .oui-slider__thumb:has(:focus-visible) {
4079
- box-shadow: var(--oui-focus-ring);
4383
+ outline: var(--oui-focus-outline);
4384
+ outline-offset: var(--oui-focus-outline-offset);
4080
4385
  }
4081
4386
  .oui-slider__thumb[data-dragging] {
4082
4387
  cursor: grabbing;
@@ -4182,8 +4487,9 @@
4182
4487
  .oui-stat__label {
4183
4488
  margin: 0;
4184
4489
  color: var(--oui-color-text-muted);
4185
- font-size: 0.875rem;
4490
+ font-size: var(--oui-font-size-sm);
4186
4491
  font-weight: var(--oui-font-weight-semibold);
4492
+ line-height: 1.4;
4187
4493
  }
4188
4494
  .oui-stat__icon {
4189
4495
  display: inline-flex;
@@ -4203,8 +4509,10 @@
4203
4509
  height: 1.15rem;
4204
4510
  }
4205
4511
  .oui-stat__body {
4206
- display: grid;
4207
- gap: 0.2rem;
4512
+ display: flex;
4513
+ flex-wrap: wrap;
4514
+ align-items: baseline;
4515
+ gap: 0.15rem 0.45rem;
4208
4516
  }
4209
4517
  .oui-stat__value {
4210
4518
  margin: 0;
@@ -4212,18 +4520,16 @@
4212
4520
  font-family: var(--oui-font-heading);
4213
4521
  font-size: var(--oui-stat-value-size, clamp(1.5rem, 4vw, 2rem));
4214
4522
  font-weight: var(--oui-font-weight-bold);
4215
- font-variant-numeric: tabular-nums;
4216
4523
  line-height: 1.1;
4217
- word-break: break-word;
4524
+ letter-spacing: -0.02em;
4525
+ overflow-wrap: anywhere;
4218
4526
  }
4219
4527
  .oui-stat__unit {
4220
4528
  margin: 0;
4221
4529
  color: var(--oui-color-text-muted);
4222
- font-size: 0.65rem;
4223
- font-weight: var(--oui-font-weight-bold);
4224
- letter-spacing: 0.04em;
4225
- text-transform: uppercase;
4226
- font-weight: var(--oui-font-weight-semibold);
4530
+ font-size: var(--oui-font-size-sm);
4531
+ font-weight: var(--oui-font-weight-medium);
4532
+ line-height: 1.4;
4227
4533
  }
4228
4534
  .oui-stat__footer {
4229
4535
  display: flex;
@@ -4425,7 +4731,7 @@
4425
4731
  width: 100%;
4426
4732
  border-collapse: collapse;
4427
4733
  color: var(--oui-color-text-strong);
4428
- font-size: 0.875rem;
4734
+ font-size: var(--oui-font-size-md);
4429
4735
  }
4430
4736
  .oui-table[data-density=compact] {
4431
4737
  --_py: 0.4rem;
@@ -4509,6 +4815,7 @@
4509
4815
  letter-spacing: inherit;
4510
4816
  text-transform: inherit;
4511
4817
  cursor: pointer;
4818
+ transition: color var(--oui-duration-fast) var(--oui-ease);
4512
4819
  }
4513
4820
  .oui-table__sort svg {
4514
4821
  flex-shrink: 0;
@@ -4516,11 +4823,12 @@
4516
4823
  height: 0.8rem;
4517
4824
  }
4518
4825
  .oui-table__sort:focus-visible {
4519
- outline: none;
4520
- box-shadow: var(--oui-focus-ring);
4826
+ outline: var(--oui-focus-outline);
4827
+ outline-offset: var(--oui-focus-outline-offset);
4521
4828
  }
4522
4829
  .oui-table__sort svg {
4523
4830
  opacity: 0.5;
4831
+ transition: opacity var(--oui-duration-fast) var(--oui-ease);
4524
4832
  }
4525
4833
  .oui-table__sort:hover, .oui-table__sort[data-active] {
4526
4834
  color: var(--oui-color-text-strong);
@@ -4580,7 +4888,7 @@
4580
4888
  white-space: nowrap;
4581
4889
  cursor: pointer;
4582
4890
  user-select: none;
4583
- transition: color var(--oui-duration-normal) var(--oui-ease);
4891
+ transition: color var(--oui-duration-fast) var(--oui-ease);
4584
4892
  }
4585
4893
  .oui-tabs__tab svg {
4586
4894
  flex-shrink: 0;
@@ -4589,7 +4897,11 @@
4589
4897
  }
4590
4898
  .oui-tabs__tab:disabled, .oui-tabs__tab[data-disabled] {
4591
4899
  cursor: not-allowed;
4592
- opacity: 0.45;
4900
+ opacity: var(--oui-control-disabled-opacity);
4901
+ }
4902
+ .oui-tabs__tab:focus-visible {
4903
+ outline: var(--oui-focus-outline);
4904
+ outline-offset: -2px;
4593
4905
  }
4594
4906
  .oui-tabs__tab:hover:not([data-disabled]) {
4595
4907
  color: var(--oui-color-text-strong);
@@ -4597,10 +4909,6 @@
4597
4909
  .oui-tabs__tab[data-active] {
4598
4910
  color: var(--oui-color-text-strong);
4599
4911
  }
4600
- .oui-tabs__tab:focus-visible {
4601
- outline: none;
4602
- box-shadow: inset 0 0 0 2px var(--oui-color-border-focus);
4603
- }
4604
4912
  [data-size=sm] > .oui-tabs__tab {
4605
4913
  height: 2rem;
4606
4914
  padding: 0 0.7rem;
@@ -4628,8 +4936,8 @@
4628
4936
  bottom: -1px;
4629
4937
  left: var(--active-tab-left);
4630
4938
  width: var(--active-tab-width);
4631
- height: 2.5px;
4632
- border-radius: 2px;
4939
+ height: 2px;
4940
+ border-radius: 2px 2px 0 0;
4633
4941
  background: var(--oui-color-accent);
4634
4942
  }
4635
4943
  .oui-tabs__list[data-variant=underline][data-orientation=vertical] {
@@ -4645,8 +4953,9 @@
4645
4953
  right: -1px;
4646
4954
  bottom: auto;
4647
4955
  left: auto;
4648
- width: 2.5px;
4956
+ width: 2px;
4649
4957
  height: var(--active-tab-height);
4958
+ border-radius: 2px 0 0 2px;
4650
4959
  }
4651
4960
  .oui-tabs__list[data-variant=segmented] {
4652
4961
  display: inline-flex;
@@ -4677,7 +4986,8 @@
4677
4986
  }
4678
4987
  .oui-tabs__panel:focus-visible {
4679
4988
  border-radius: var(--oui-radius-sm);
4680
- box-shadow: var(--oui-focus-ring);
4989
+ outline: var(--oui-focus-outline);
4990
+ outline-offset: var(--oui-focus-outline-offset);
4681
4991
  }
4682
4992
  }
4683
4993
  @layer oui.components {
@@ -4752,7 +5062,7 @@
4752
5062
  padding-right: 0.15rem;
4753
5063
  }
4754
5064
  .oui-tag[data-disabled] {
4755
- opacity: 0.5;
5065
+ opacity: var(--oui-control-disabled-opacity);
4756
5066
  }
4757
5067
  .oui-tag__label {
4758
5068
  overflow: hidden;
@@ -4779,8 +5089,8 @@
4779
5089
  height: 0.8rem;
4780
5090
  }
4781
5091
  .oui-tag__remove:focus-visible {
4782
- outline: none;
4783
- box-shadow: var(--oui-focus-ring);
5092
+ outline: var(--oui-focus-outline);
5093
+ outline-offset: -2px;
4784
5094
  }
4785
5095
  .oui-tag__remove:hover:not(:disabled) {
4786
5096
  background: color-mix(in srgb, currentColor 14%, transparent);
@@ -4888,12 +5198,14 @@
4888
5198
  .oui-toast[data-type=danger] {
4889
5199
  --_tone: var(--oui-color-danger);
4890
5200
  }
4891
- .oui-toast[data-type]:not([data-type=neutral]) {
4892
- border-left: 4px solid var(--_tone);
4893
- }
4894
5201
  .oui-toast:focus-visible {
4895
- outline: none;
4896
- box-shadow: var(--oui-shadow-overlay), var(--oui-focus-ring);
5202
+ outline: var(--oui-focus-outline);
5203
+ outline-offset: var(--oui-focus-outline-offset);
5204
+ }
5205
+ @media (prefers-reduced-motion: reduce) {
5206
+ .oui-toast {
5207
+ transition-duration: 0.01ms;
5208
+ }
4897
5209
  }
4898
5210
  .oui-toast-viewport[data-placement^=top] .oui-toast {
4899
5211
  top: 0;
@@ -4927,7 +5239,8 @@
4927
5239
  }
4928
5240
  .oui-toast__icon {
4929
5241
  display: inline-flex;
4930
- padding-top: 0.1rem;
5242
+ flex-shrink: 0;
5243
+ padding-top: calc((var(--oui-font-size-md) * 1.35 - 1.1rem) / 2);
4931
5244
  color: var(--_tone);
4932
5245
  }
4933
5246
  .oui-toast__icon svg {
@@ -4945,7 +5258,7 @@
4945
5258
  margin: 0;
4946
5259
  color: var(--oui-color-text-strong);
4947
5260
  font-size: var(--oui-font-size-md);
4948
- font-weight: var(--oui-font-weight-bold);
5261
+ font-weight: var(--oui-font-weight-semibold);
4949
5262
  line-height: 1.35;
4950
5263
  }
4951
5264
  .oui-toast__description {
@@ -4967,13 +5280,15 @@
4967
5280
  font-size: var(--oui-font-size-sm);
4968
5281
  font-weight: var(--oui-font-weight-semibold);
4969
5282
  cursor: pointer;
5283
+ transition: border-color var(--oui-duration-fast) var(--oui-ease), background-color var(--oui-duration-fast) var(--oui-ease);
4970
5284
  }
4971
5285
  .oui-toast__action:focus-visible {
4972
- outline: none;
4973
- box-shadow: var(--oui-focus-ring);
5286
+ outline: var(--oui-focus-outline);
5287
+ outline-offset: var(--oui-focus-outline-offset);
4974
5288
  }
4975
5289
  .oui-toast__action:hover {
4976
5290
  border-color: var(--oui-color-text-muted);
5291
+ background: var(--oui-color-surface-muted);
4977
5292
  }
4978
5293
  .oui-toast__close {
4979
5294
  display: inline-flex;
@@ -4989,6 +5304,7 @@
4989
5304
  background: transparent;
4990
5305
  color: var(--oui-color-text-muted);
4991
5306
  cursor: pointer;
5307
+ transition: background-color var(--oui-duration-fast) var(--oui-ease), color var(--oui-duration-fast) var(--oui-ease);
4992
5308
  }
4993
5309
  .oui-toast__close svg {
4994
5310
  flex-shrink: 0;
@@ -4996,8 +5312,8 @@
4996
5312
  height: 0.95rem;
4997
5313
  }
4998
5314
  .oui-toast__close:focus-visible {
4999
- outline: none;
5000
- box-shadow: var(--oui-focus-ring);
5315
+ outline: var(--oui-focus-outline);
5316
+ outline-offset: var(--oui-focus-outline-offset);
5001
5317
  }
5002
5318
  .oui-toast__close:hover {
5003
5319
  background: var(--oui-color-accent-subtle);
@@ -5028,7 +5344,7 @@
5028
5344
  white-space: nowrap;
5029
5345
  cursor: pointer;
5030
5346
  user-select: none;
5031
- transition: background-color var(--oui-duration-normal) var(--oui-ease), border-color var(--oui-duration-normal) var(--oui-ease), color var(--oui-duration-normal) var(--oui-ease), box-shadow var(--oui-duration-normal) var(--oui-ease);
5347
+ transition: background-color var(--oui-duration-fast) var(--oui-ease), border-color var(--oui-duration-fast) var(--oui-ease), color var(--oui-duration-fast) var(--oui-ease), box-shadow var(--oui-duration-fast) var(--oui-ease);
5032
5348
  }
5033
5349
  .oui-toggle svg {
5034
5350
  flex-shrink: 0;
@@ -5036,12 +5352,12 @@
5036
5352
  height: 1rem;
5037
5353
  }
5038
5354
  .oui-toggle:focus-visible {
5039
- outline: none;
5040
- box-shadow: var(--oui-focus-ring);
5355
+ outline: var(--oui-focus-outline);
5356
+ outline-offset: var(--oui-focus-outline-offset);
5041
5357
  }
5042
5358
  .oui-toggle:disabled, .oui-toggle[data-disabled] {
5043
5359
  cursor: not-allowed;
5044
- opacity: 0.45;
5360
+ opacity: var(--oui-control-disabled-opacity);
5045
5361
  }
5046
5362
  .oui-toggle[data-size=sm] {
5047
5363
  height: var(--oui-control-height-sm);
@@ -5103,7 +5419,7 @@
5103
5419
  color: var(--oui-color-text-strong);
5104
5420
  }
5105
5421
  .oui-toggle-group[data-variant=segmented] > .oui-toggle:focus-visible {
5106
- box-shadow: var(--oui-focus-ring);
5422
+ outline-offset: -2px;
5107
5423
  }
5108
5424
  }
5109
5425
  @layer oui.components {
@@ -5171,12 +5487,12 @@
5171
5487
  height: 1rem;
5172
5488
  }
5173
5489
  .oui-toolbar__button:focus-visible {
5174
- outline: none;
5175
- box-shadow: var(--oui-focus-ring);
5490
+ outline: var(--oui-focus-outline);
5491
+ outline-offset: var(--oui-focus-outline-offset);
5176
5492
  }
5177
5493
  .oui-toolbar__button:disabled, .oui-toolbar__button[data-disabled] {
5178
5494
  cursor: not-allowed;
5179
- opacity: 0.45;
5495
+ opacity: var(--oui-control-disabled-opacity);
5180
5496
  }
5181
5497
  @media (hover: hover) {
5182
5498
  .oui-toolbar__button:hover:not([data-disabled]) {
@@ -5198,8 +5514,8 @@
5198
5514
  white-space: nowrap;
5199
5515
  }
5200
5516
  .oui-toolbar__link:focus-visible {
5201
- outline: none;
5202
- box-shadow: var(--oui-focus-ring);
5517
+ outline: var(--oui-focus-outline);
5518
+ outline-offset: var(--oui-focus-outline-offset);
5203
5519
  }
5204
5520
  .oui-toolbar__link:hover {
5205
5521
  color: var(--oui-color-text-strong);
@@ -5240,11 +5556,19 @@
5240
5556
  font-weight: var(--oui-font-weight-medium);
5241
5557
  line-height: 1.4;
5242
5558
  transform-origin: var(--transform-origin);
5243
- transition: opacity var(--oui-duration-fast) var(--oui-ease), transform var(--oui-duration-fast) var(--oui-ease);
5559
+ text-wrap: pretty;
5560
+ transition: opacity var(--oui-duration-fast) var(--oui-ease), transform var(--oui-duration-fast) var(--oui-ease-out);
5561
+ }
5562
+ @media (prefers-reduced-motion: reduce) {
5563
+ .oui-tooltip {
5564
+ transition-duration: 0.01ms !important;
5565
+ animation-duration: 0.01ms !important;
5566
+ animation-iteration-count: 1 !important;
5567
+ }
5244
5568
  }
5245
5569
  .oui-tooltip[data-starting-style], .oui-tooltip[data-ending-style] {
5246
5570
  opacity: 0;
5247
- transform: scale(0.96);
5571
+ transform: scale(0.97);
5248
5572
  }
5249
5573
  .oui-tooltip[data-instant] {
5250
5574
  transition-duration: 0s;
@@ -5291,22 +5615,25 @@
5291
5615
  }
5292
5616
  .oui-heading[data-size=lg] {
5293
5617
  font-size: clamp(1.5rem, 2.5vw, 2rem);
5618
+ letter-spacing: -0.015em;
5294
5619
  }
5295
5620
  .oui-heading[data-size=xl] {
5296
5621
  font-size: clamp(1.9rem, 3.5vw, 2.6rem);
5297
5622
  line-height: 1.1;
5623
+ letter-spacing: -0.02em;
5298
5624
  }
5299
5625
  .oui-heading[data-size="2xl"] {
5300
5626
  font-size: clamp(2.3rem, 5vw, 3.4rem);
5301
5627
  font-weight: 800;
5302
5628
  line-height: 1.05;
5303
- letter-spacing: -0.01em;
5629
+ letter-spacing: -0.025em;
5304
5630
  }
5305
5631
  .oui-text {
5306
5632
  margin: 0;
5307
5633
  color: var(--oui-color-text);
5308
5634
  font-family: var(--oui-font-body);
5309
5635
  line-height: 1.55;
5636
+ text-wrap: pretty;
5310
5637
  }
5311
5638
  .oui-text[data-size=xs] {
5312
5639
  font-size: var(--oui-font-size-xs);