@oscarpalmer/oui 0.36.0 → 0.37.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 (51) hide show
  1. package/dist/css/badge.css +18 -15
  2. package/dist/css/button.css +35 -31
  3. package/dist/css/color.css +20 -20
  4. package/dist/css/combobox.css +133 -34
  5. package/dist/css/content.css +29 -10
  6. package/dist/css/floatable.css +10 -10
  7. package/dist/css/form.css +393 -129
  8. package/dist/css/listbox.css +41 -17
  9. package/dist/css/message.css +13 -10
  10. package/dist/css/reset.css +29 -88
  11. package/dist/css/splitter.css +2 -2
  12. package/dist/css/tabs.css +103 -0
  13. package/dist/js/focus-trap/focus-trap.embedded.mjs +6 -10
  14. package/dist/js/index.d.mts +2 -1
  15. package/dist/js/index.mjs +2 -1
  16. package/dist/js/internal/draggable.mjs +16 -22
  17. package/dist/js/internal/listbox/listbox.form.mjs +1 -1
  18. package/dist/js/internal/listbox/listbox.state.mjs +1 -1
  19. package/dist/js/internal/navigable.d.mts +11 -5
  20. package/dist/js/internal/navigable.mjs +44 -18
  21. package/dist/js/movable/movable.embedded.mjs +3 -6
  22. package/dist/js/resizable/resizable.embedded.mjs +16 -26
  23. package/dist/js/splitter.mjs +15 -12
  24. package/dist/js/tabs.d.mts +25 -0
  25. package/dist/js/tabs.mjs +240 -0
  26. package/dist/js/tooltip.mjs +13 -12
  27. package/package.json +1 -1
  28. package/src/css/badge.scss +6 -18
  29. package/src/css/button.scss +6 -45
  30. package/src/css/color.scss +20 -20
  31. package/src/css/combobox.scss +20 -51
  32. package/src/css/content.scss +30 -3
  33. package/src/css/floatable.scss +17 -17
  34. package/src/css/form.scss +84 -72
  35. package/src/css/listbox.scss +2 -31
  36. package/src/css/message.scss +13 -28
  37. package/src/css/mixins.scss +253 -28
  38. package/src/css/reset.scss +37 -86
  39. package/src/css/splitter.scss +2 -2
  40. package/src/css/tabs.scss +85 -0
  41. package/src/js/focus-trap/focus-trap.embedded.ts +11 -19
  42. package/src/js/index.ts +1 -0
  43. package/src/js/internal/draggable.ts +29 -33
  44. package/src/js/internal/listbox/listbox.form.ts +1 -1
  45. package/src/js/internal/listbox/listbox.state.ts +1 -1
  46. package/src/js/internal/navigable.ts +80 -23
  47. package/src/js/movable/movable.embedded.ts +11 -13
  48. package/src/js/resizable/resizable.embedded.ts +25 -39
  49. package/src/js/splitter.ts +21 -18
  50. package/src/js/tabs.ts +447 -0
  51. package/src/js/tooltip.ts +20 -17
@@ -1,13 +1,16 @@
1
1
  /*! https://github.com/oscarpalmer/oui */
2
2
 
3
3
  :where(.oui-pill, .oui-tag) {
4
- --oui-shadow-mixed: color-mix(in oklab, var(--oui-shadow, var(--oui-gray-6)), transparent 92.5%);
5
- box-shadow: inset 0 1px 0 0 transparent, 0 0 0 1px var(--oui-shadow-mixed), 0 1px 2px -0.5px var(--oui-shadow-mixed), 0 2px 4px -1px var(--oui-shadow-mixed);
4
+ --oui-shadow-inset: color-mix(in oklab, var(--oui-absolute), transparent 50%);
5
+ --oui-shadow-value: var(--oui-gray-6);
6
+ --oui-shadow-mixed: color-mix(in oklab, var(--oui-shadow-value), transparent 87.5%);
7
+ box-shadow: inset 0 1px 0 0 var(--oui-shadow-inset), 0 0 0 1px var(--oui-shadow-mixed), 0 1px 2px -0.5px var(--oui-shadow-mixed), 0 2px 4px -1px var(--oui-shadow-mixed);
6
8
  display: inline-flex;
7
9
  flex-flow: row nowrap;
8
10
  gap: 0.5em;
9
- background-color: color-mix(in oklab, var(--oui-background, var(--oui-gray-0)), transparent 25%);
11
+ background-color: color-mix(in oklab, var(--oui-background, var(--oui-gray-1)), transparent 25%);
10
12
  color: var(--oui-foreground, var(--oui-gray-8));
13
+ text-shadow: 0 1px 0 var(--oui-absolute);
11
14
  line-height: 1.25;
12
15
  }
13
16
  :where(.oui-pill) {
@@ -35,34 +38,34 @@
35
38
  /* Colors*/
36
39
  }
37
40
  :where(.oui-pill--blue, .oui-tag--blue) {
38
- --oui-background: var(--oui-blue-0);
41
+ --oui-background: var(--oui-blue-1);
39
42
  --oui-foreground: var(--oui-blue-8);
40
- --oui-shadow: var(--oui-blue-6);
43
+ --oui-shadow-value: var(--oui-blue-6);
41
44
  }
42
45
  :where(.oui-pill--green, .oui-tag--green) {
43
- --oui-background: var(--oui-green-0);
46
+ --oui-background: var(--oui-green-1);
44
47
  --oui-foreground: var(--oui-green-8);
45
- --oui-shadow: var(--oui-green-6);
48
+ --oui-shadow-value: var(--oui-green-6);
46
49
  }
47
50
  :where(.oui-pill--orange, .oui-tag--orange) {
48
- --oui-background: var(--oui-orange-0);
51
+ --oui-background: var(--oui-orange-1);
49
52
  --oui-foreground: var(--oui-orange-8);
50
- --oui-shadow: var(--oui-orange-6);
53
+ --oui-shadow-value: var(--oui-orange-6);
51
54
  }
52
55
  :where(.oui-pill--purple, .oui-tag--purple) {
53
- --oui-background: var(--oui-purple-0);
56
+ --oui-background: var(--oui-purple-1);
54
57
  --oui-foreground: var(--oui-purple-8);
55
- --oui-shadow: var(--oui-purple-6);
58
+ --oui-shadow-value: var(--oui-purple-6);
56
59
  }
57
60
  :where(.oui-pill--red, .oui-tag--red) {
58
- --oui-background: var(--oui-red-0);
61
+ --oui-background: var(--oui-red-1);
59
62
  --oui-foreground: var(--oui-red-8);
60
- --oui-shadow: var(--oui-red-6);
63
+ --oui-shadow-value: var(--oui-red-6);
61
64
  }
62
65
  :where(.oui-pill--yellow, .oui-tag--yellow) {
63
- --oui-background: var(--oui-yellow-0);
66
+ --oui-background: var(--oui-yellow-1);
64
67
  --oui-foreground: var(--oui-yellow-8);
65
- --oui-shadow: var(--oui-yellow-6);
68
+ --oui-shadow-value: var(--oui-yellow-6);
66
69
  }
67
70
 
68
71
 
@@ -2,56 +2,79 @@
2
2
 
3
3
  :where(.oui-button) {
4
4
  --oui-background-percentage: 25%;
5
+ --oui-background-value: var(--oui-gray-2);
5
6
  --oui-foreground-percentage: 0%;
7
+ --oui-foreground-value: var(--oui-gray-8);
6
8
  --oui-outline-percentage: 100%;
7
- --oui-shadow-inset: color-mix(in oklab, white, transparent 75%);
9
+ --oui-outline-value: var(--oui-gray-6);
10
+ --oui-shadow-inset: color-mix(in oklab, var(--oui-absolute), transparent 75%);
8
11
  --oui-shadow-percentage: 82.5%;
9
12
  --oui-shadow-value: color-mix(
10
13
  in oklab,
11
- var(--oui-outline-value, var(--oui-gray-6)),
14
+ var(--oui-outline-value),
12
15
  transparent var(--oui-shadow-percentage)
13
16
  );
14
- box-shadow: inset 0 1px 0 0 var(--oui-shadow-inset), 0 0 0 1px var(--oui-shadow-value), 0 1px 2px -0.5px var(--oui-shadow-value), 0 2px 4px -1px var(--oui-shadow-value);
17
+ box-shadow: inset 0 1px 0 0 var(--oui-shadow-inset), 0 0 0 1px var(--oui-shadow-value), 0 1px 2px -0.5px var(--oui-shadow-value), 0 2px 4px -1px var(--oui-shadow-value), 0 4px 8px -2px var(--oui-shadow-value);
15
18
  padding: 0.5em 0.75em;
16
19
  display: inline-flex;
17
20
  flex-flow: row wrap;
18
21
  gap: 0.75em;
19
22
  align-items: center;
20
23
  border-radius: 0.25em;
21
- background-color: color-mix(in oklab, var(--oui-background-value, var(--oui-gray-2)), transparent var(--oui-background-percentage));
22
- outline: 4px solid color-mix(in oklab, var(--oui-outline-value, var(--oui-gray-6)), transparent var(--oui-outline-percentage));
24
+ background-color: color-mix(in oklab, var(--oui-background-value), transparent var(--oui-background-percentage));
25
+ outline: 4px solid color-mix(in oklab, var(--oui-outline-value), transparent var(--oui-outline-percentage));
23
26
  border: none;
24
- color: color-mix(in oklab, var(--oui-foreground-value, var(--oui-gray-8)), transparent var(--oui-foreground-percentage));
27
+ color: color-mix(in oklab, var(--oui-foreground-value), transparent var(--oui-foreground-percentage));
25
28
  line-height: 1.25;
26
29
  transition: 0.125s ease-in-out;
30
+ transition-property: background, outline, box-shadow, color;
31
+ }
32
+ :where(.oui-button):focus-visible {
33
+ --oui-outline-percentage: 75%;
34
+ }
35
+ @media (hover: hover) {
36
+ :where(.oui-button):not([disabled], [aria-disabled=true i]):hover {
37
+ --oui-background-percentage: 50%;
38
+ --oui-foreground-percentage: 25%;
39
+ --oui-shadow-percentage: 90%;
40
+ }
41
+ }
42
+ :where(.oui-button):not([disabled], [aria-disabled=true i]):active {
43
+ box-shadow: 0 0 0 1px var(--oui-shadow-value), inset 0 1px 2px 0 var(--oui-shadow-value), inset 0 2px 4px 0 var(--oui-shadow-value);
44
+ }
45
+ :where(.oui-button)[disabled], :where(.oui-button)[aria-disabled=true i] {
46
+ --oui-background-percentage: 80%;
47
+ --oui-foreground-percentage: 25%;
48
+ --oui-shadow-percentage: 92.5%;
49
+ font-style: italic;
27
50
  }
28
51
  :where(.oui-button--blue) {
29
- --oui-background-value: var(--oui-blue-2);
52
+ --oui-background-value: var(--oui-blue-3);
30
53
  --oui-foreground-value: var(--oui-blue-8);
31
54
  --oui-outline-value: var(--oui-blue-6);
32
55
  }
33
56
  :where(.oui-button--green) {
34
- --oui-background-value: var(--oui-green-2);
57
+ --oui-background-value: var(--oui-green-3);
35
58
  --oui-foreground-value: var(--oui-green-8);
36
59
  --oui-outline-value: var(--oui-green-6);
37
60
  }
38
61
  :where(.oui-button--orange) {
39
- --oui-background-value: var(--oui-orange-2);
62
+ --oui-background-value: var(--oui-orange-3);
40
63
  --oui-foreground-value: var(--oui-orange-8);
41
64
  --oui-outline-value: var(--oui-orange-6);
42
65
  }
43
66
  :where(.oui-button--purple) {
44
- --oui-background-value: var(--oui-purple-2);
67
+ --oui-background-value: var(--oui-purple-3);
45
68
  --oui-foreground-value: var(--oui-purple-8);
46
69
  --oui-outline-value: var(--oui-purple-6);
47
70
  }
48
71
  :where(.oui-button--red) {
49
- --oui-background-value: var(--oui-red-2);
72
+ --oui-background-value: var(--oui-red-3);
50
73
  --oui-foreground-value: var(--oui-red-8);
51
74
  --oui-outline-value: var(--oui-red-6);
52
75
  }
53
76
  :where(.oui-button--yellow) {
54
- --oui-background-value: var(--oui-yellow-2);
77
+ --oui-background-value: var(--oui-yellow-3);
55
78
  --oui-foreground-value: var(--oui-yellow-8);
56
79
  --oui-outline-value: var(--oui-yellow-6);
57
80
  }
@@ -68,24 +91,5 @@
68
91
  --oui-foreground-percentage: 12.5%;
69
92
  font-size: 0.75em;
70
93
  }
71
- :where(.oui-button:focus-visible) {
72
- --oui-outline-percentage: 75%;
73
- }
74
- @media (hover: hover) {
75
- :where(.oui-button:not([disabled], [aria-disabled=true i]):hover) {
76
- --oui-background-percentage: 50%;
77
- --oui-foreground-percentage: 25%;
78
- --oui-shadow-percentage: 90%;
79
- }
80
- }
81
- :where(.oui-button:not([disabled], [aria-disabled=true i]):active) {
82
- box-shadow: 0 0 0 1px var(--oui-shadow-value), inset 0 1px 2px 0 var(--oui-shadow-value), inset 0 2px 4px 0 var(--oui-shadow-value);
83
- }
84
- :where(.oui-button[disabled], .oui-button[aria-disabled=true i]) {
85
- --oui-background-percentage: 80%;
86
- --oui-foreground-percentage: 20%;
87
- --oui-shadow-percentage: 95%;
88
- font-style: italic;
89
- }
90
94
 
91
95
 
@@ -13,8 +13,8 @@
13
13
  --oui-blue-8: light-dark(oklch(42% 0.11 252deg), oklch(85% 0.04 258deg));
14
14
  --oui-blue-9: light-dark(oklch(35% 0.1 251deg), oklch(90% 0.03 259deg));
15
15
  --oui-blue-10: light-dark(oklch(30% 0.09 250deg), oklch(95% 0.02 260deg));
16
- --oui-green-0: light-dark(oklch(99% 0.01 150deg), oklch(20% 0.08 140deg));
17
- --oui-green-1: light-dark(oklch(98% 0.02 149deg), oklch(25% 0.09 141deg));
16
+ --oui-green-0: light-dark(oklch(99.5% 0.01 150deg), oklch(20% 0.08 140deg));
17
+ --oui-green-1: light-dark(oklch(98.25% 0.02 149deg), oklch(25% 0.09 141deg));
18
18
  --oui-green-2: light-dark(oklch(95% 0.03 148deg), oklch(32% 0.1 142deg));
19
19
  --oui-green-3: light-dark(oklch(90% 0.04 147deg), oklch(40% 0.09 143deg));
20
20
  --oui-green-4: light-dark(oklch(80% 0.06 146deg), oklch(50% 0.08 144deg));
@@ -24,19 +24,19 @@
24
24
  --oui-green-8: light-dark(oklch(42% 0.11 142deg), oklch(85% 0.04 148deg));
25
25
  --oui-green-9: light-dark(oklch(35% 0.1 141deg), oklch(90% 0.03 149deg));
26
26
  --oui-green-10: light-dark(oklch(30% 0.09 140deg), oklch(95% 0.02 150deg));
27
- --oui-orange-0: light-dark(oklch(99% 0.02 60deg), oklch(20% 0.08 50deg));
28
- --oui-orange-1: light-dark(oklch(98.5% 0.035 59deg), oklch(25% 0.09 51deg));
29
- --oui-orange-2: light-dark(oklch(97% 0.05 58deg), oklch(32% 0.1 52deg));
30
- --oui-orange-3: light-dark(oklch(93% 0.07 57deg), oklch(40% 0.09 53deg));
31
- --oui-orange-4: light-dark(oklch(87% 0.1 56deg), oklch(50% 0.08 54deg));
27
+ --oui-orange-0: light-dark(oklch(99.5% 0.02 60deg), oklch(20% 0.08 50deg));
28
+ --oui-orange-1: light-dark(oklch(98.75% 0.035 59deg), oklch(25% 0.09 51deg));
29
+ --oui-orange-2: light-dark(oklch(97.5% 0.05 58deg), oklch(32% 0.1 52deg));
30
+ --oui-orange-3: light-dark(oklch(93.25% 0.07 57deg), oklch(40% 0.09 53deg));
31
+ --oui-orange-4: light-dark(oklch(87.125% 0.1 56deg), oklch(50% 0.08 54deg));
32
32
  --oui-orange-5: light-dark(oklch(76% 0.11 55deg), oklch(60% 0.07 55deg));
33
33
  --oui-orange-6: light-dark(oklch(65% 0.12 54deg), oklch(70% 0.06 56deg));
34
34
  --oui-orange-7: light-dark(oklch(55% 0.14 53deg), oklch(80% 0.05 57deg));
35
35
  --oui-orange-8: light-dark(oklch(45% 0.12 52deg), oklch(85% 0.04 58deg));
36
36
  --oui-orange-9: light-dark(oklch(37.5% 0.11 51deg), oklch(90% 0.03 59deg));
37
37
  --oui-orange-10: light-dark(oklch(30% 0.09 50deg), oklch(95% 0.02 60deg));
38
- --oui-purple-0: light-dark(oklch(99% 0.02 300deg), oklch(20% 0.08 290deg));
39
- --oui-purple-1: light-dark(oklch(98% 0.035 299deg), oklch(25% 0.09 291deg));
38
+ --oui-purple-0: light-dark(oklch(99.5% 0.02 300deg), oklch(20% 0.08 290deg));
39
+ --oui-purple-1: light-dark(oklch(98.25% 0.035 299deg), oklch(25% 0.09 291deg));
40
40
  --oui-purple-2: light-dark(oklch(95% 0.05 298deg), oklch(32% 0.1 292deg));
41
41
  --oui-purple-3: light-dark(oklch(90% 0.07 297deg), oklch(40% 0.09 293deg));
42
42
  --oui-purple-4: light-dark(oklch(80% 0.1 296deg), oklch(50% 0.08 294deg));
@@ -46,21 +46,21 @@
46
46
  --oui-purple-8: light-dark(oklch(42% 0.12 292deg), oklch(85% 0.04 298deg));
47
47
  --oui-purple-9: light-dark(oklch(35% 0.11 291deg), oklch(90% 0.03 299deg));
48
48
  --oui-purple-10: light-dark(oklch(30% 0.09 290deg), oklch(95% 0.02 300deg));
49
- --oui-red-0: light-dark(oklch(99% 0.024 25deg), oklch(20% 0.08 25deg));
50
- --oui-red-1: light-dark(oklch(98.5% 0.032 24deg), oklch(25% 0.09 24deg));
51
- --oui-red-2: light-dark(oklch(97% 0.05 23deg), oklch(32% 0.1 23deg));
52
- --oui-red-3: light-dark(oklch(93% 0.07 22deg), oklch(40% 0.09 22deg));
53
- --oui-red-4: light-dark(oklch(87% 0.1 21deg), oklch(50% 0.08 21deg));
49
+ --oui-red-0: light-dark(oklch(99.5% 0.024 25deg), oklch(20% 0.08 25deg));
50
+ --oui-red-1: light-dark(oklch(98.75% 0.032 24deg), oklch(25% 0.09 24deg));
51
+ --oui-red-2: light-dark(oklch(97.5% 0.05 23deg), oklch(32% 0.1 23deg));
52
+ --oui-red-3: light-dark(oklch(93.25% 0.07 22deg), oklch(40% 0.09 22deg));
53
+ --oui-red-4: light-dark(oklch(87.125% 0.1 21deg), oklch(50% 0.08 21deg));
54
54
  --oui-red-5: light-dark(oklch(76% 0.11 20deg), oklch(60% 0.07 20deg));
55
55
  --oui-red-6: light-dark(oklch(65% 0.12 19deg), oklch(70% 0.06 19deg));
56
56
  --oui-red-7: light-dark(oklch(55% 0.14 18deg), oklch(80% 0.05 18deg));
57
57
  --oui-red-8: light-dark(oklch(45% 0.12 17deg), oklch(85% 0.04 17deg));
58
58
  --oui-red-9: light-dark(oklch(37.5% 0.11 16deg), oklch(90% 0.03 16deg));
59
59
  --oui-red-10: light-dark(oklch(30% 0.09 15deg), oklch(95% 0.02 15deg));
60
- --oui-yellow-0: light-dark(oklch(99% 0.02 100deg), oklch(20% 0.08 90deg));
60
+ --oui-yellow-0: light-dark(oklch(99.5% 0.02 100deg), oklch(20% 0.08 90deg));
61
61
  --oui-yellow-1: light-dark(oklch(98.5% 0.035 99deg), oklch(25% 0.09 91deg));
62
- --oui-yellow-2: light-dark(oklch(97% 0.05 98deg), oklch(32% 0.1 92deg));
63
- --oui-yellow-3: light-dark(oklch(93% 0.07 97deg), oklch(40% 0.09 93deg));
62
+ --oui-yellow-2: light-dark(oklch(97.25% 0.05 98deg), oklch(32% 0.1 92deg));
63
+ --oui-yellow-3: light-dark(oklch(93.125% 0.07 97deg), oklch(40% 0.09 93deg));
64
64
  --oui-yellow-4: light-dark(oklch(87% 0.1 96deg), oklch(50% 0.08 94deg));
65
65
  --oui-yellow-5: light-dark(oklch(78% 0.11 95deg), oklch(60% 0.07 95deg));
66
66
  --oui-yellow-6: light-dark(oklch(65% 0.12 94deg), oklch(70% 0.06 96deg));
@@ -69,7 +69,7 @@
69
69
  --oui-yellow-9: light-dark(oklch(37.5% 0.11 91deg), oklch(90% 0.03 99deg));
70
70
  --oui-yellow-10: light-dark(oklch(30% 0.09 90deg), oklch(95% 0.02 100deg));
71
71
  --oui-gray-0: light-dark(oklch(98% 0 0deg), oklch(22% 0 0deg));
72
- --oui-gray-1: light-dark(oklch(98% 0 0deg), oklch(26% 0 0deg));
72
+ --oui-gray-1: light-dark(oklch(97% 0 0deg), oklch(26% 0 0deg));
73
73
  --oui-gray-2: light-dark(oklch(95% 0 0deg), oklch(32% 0 0deg));
74
74
  --oui-gray-3: light-dark(oklch(90% 0 0deg), oklch(40% 0 0deg));
75
75
  --oui-gray-4: light-dark(oklch(80% 0 0deg), oklch(50% 0 0deg));
@@ -90,8 +90,8 @@
90
90
  --oui-slate-8: light-dark(oklch(42% 0.01 255deg), oklch(85% 0.01 255deg));
91
91
  --oui-slate-9: light-dark(oklch(35% 0.0075 255deg), oklch(90% 0.0075 255deg));
92
92
  --oui-slate-10: light-dark(oklch(30% 0.005 255deg), oklch(95% 0.005 255deg));
93
- --oui-stone-0: light-dark(oklch(99% 0.0033 95deg), oklch(22% 0.005 95deg));
94
- --oui-stone-1: light-dark(oklch(98% 0.0067 95deg), oklch(26% 0.0075 95deg));
93
+ --oui-stone-0: light-dark(oklch(99.5% 0.0033 95deg), oklch(22% 0.005 95deg));
94
+ --oui-stone-1: light-dark(oklch(98.25% 0.0067 95deg), oklch(26% 0.0075 95deg));
95
95
  --oui-stone-2: light-dark(oklch(95% 0.01 95deg), oklch(32% 0.01 95deg));
96
96
  --oui-stone-3: light-dark(oklch(90% 0.0125 95deg), oklch(40% 0.0125 95deg));
97
97
  --oui-stone-4: light-dark(oklch(80% 0.015 95deg), oklch(50% 0.015 95deg));
@@ -2,19 +2,69 @@
2
2
  /*! https://github.com/oscarpalmer/oui */
3
3
 
4
4
  :where([oui-combobox-anchor]) {
5
- --oui-background-percentage: 0%;
6
- --oui-foreground-percentage: 0%;
7
5
  --oui-outline-percentage: 100%;
8
6
  --oui-outline-value: var(--oui-blue-6);
9
7
  outline: 4px solid color-mix(in oklab, var(--oui-outline-value), transparent var(--oui-outline-percentage));
10
8
  outline-offset: 0;
11
- transition: 0.125s ease-in-out;
9
+ --oui-background-percentage: 0%;
10
+ --oui-foreground-percentage: 0%;
12
11
  align-content: center;
13
12
  background-color: color-mix(in oklab, var(--oui-background-value), transparent var(--oui-background-percentage));
14
13
  border: 1px solid var(--oui-border-value, var(--oui-gray-3));
15
14
  box-shadow: inset 0 2px 4px -1px var(--oui-gray-3);
16
15
  color: color-mix(in oklab, var(--oui-foreground-value, inherit), transparent var(--oui-foreground-percentage));
17
16
  -webkit-text-fill-color: color-mix(in oklab, var(--oui-foreground-value, inherit), transparent var(--oui-foreground-percentage));
17
+ transition: 0.125s ease-in-out;
18
+ transition-property: background, outline, border, box-shadow, color;
19
+ }
20
+ :where([oui-combobox-anchor]).oui-validate:not([disabled],
21
+ [readonly],
22
+ [aria-disabled=true i],
23
+ [aria-readonly=true i],
24
+ :focus-visible,
25
+ :focus-within):is(:user-invalid:not([aria-invalid=false i]), [aria-invalid=true i]) {
26
+ --oui-border-value: var(--oui-red-5);
27
+ --oui-foreground-value: var(--oui-red-9);
28
+ --oui-outline-percentage: 82.5%;
29
+ --oui-outline-value: var(--oui-red-6);
30
+ }
31
+ :where([oui-combobox-anchor]).oui-validate:not([disabled],
32
+ [readonly],
33
+ [aria-disabled=true i],
34
+ [aria-readonly=true i],
35
+ :focus-visible,
36
+ :focus-within):is(:user-valid:not([aria-invalid=true i]), [aria-invalid=false i]) {
37
+ --oui-border-value: var(--oui-green-5);
38
+ --oui-foreground-value: var(--oui-green-9);
39
+ --oui-outline-percentage: 82.5%;
40
+ --oui-outline-value: var(--oui-green-6);
41
+ }
42
+ :where([oui-combobox-anchor]):not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-visible, :where([oui-combobox-anchor]):not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-within {
43
+ --oui-border-value: var(--oui-blue-5);
44
+ --oui-foreground-value: inherit;
45
+ --oui-outline-percentage: 75%;
46
+ --oui-outline-value: var(--oui-blue-6);
47
+ }
48
+ @media (hover: hover) {
49
+ :where([oui-combobox-anchor]):not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):hover {
50
+ --oui-border-value: var(--oui-blue-4);
51
+ --oui-foreground-percentage: 0%;
52
+ --oui-foreground-value: inherit;
53
+ --oui-outline-percentage: 90%;
54
+ --oui-outline-value: var(--oui-blue-6);
55
+ }
56
+ }
57
+ :where([oui-combobox-anchor]):is([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]) {
58
+ --oui-foreground-percentage: 25%;
59
+ font-style: italic;
60
+ }
61
+ :where([oui-combobox-anchor]):is([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-visible {
62
+ --oui-outline-percentage: 75%;
63
+ }
64
+ :where([oui-combobox-anchor]):is([disabled], [aria-disabled=true i]) {
65
+ --oui-background-percentage: 50%;
66
+ }
67
+ :where([oui-combobox-anchor]) {
18
68
  --oui-background-value: var(--oui-absolute);
19
69
  padding: 0.5em 2em 0.5em 0.75em;
20
70
  border-radius: 0.25em;
@@ -24,7 +74,7 @@
24
74
  background-size: 1em;
25
75
  position: relative;
26
76
  }
27
- :where([oui-combobox-anchor]:not([disabled], [readonly], [aria-disabled=true i]):focus), :where([oui-combobox-anchor]:not([disabled], [readonly], [aria-disabled=true i]):focus-within), :where([oui-combobox-anchor]:not([disabled], [readonly], [aria-disabled=true i]):has(+ [oui-combobox-content]:focus-within)) {
77
+ :where([oui-combobox-anchor]:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-visible, [oui-combobox-anchor]:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-within, [oui-combobox-anchor]:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):has(+ [oui-combobox-content]:focus-within)) {
28
78
  --oui-border-value: var(--oui-blue-5);
29
79
  --oui-foreground-value: inherit;
30
80
  --oui-outline-percentage: 75%;
@@ -43,7 +93,7 @@
43
93
  --oui-foreground-percentage: 25%;
44
94
  font-style: italic;
45
95
  }
46
- :where([oui-combobox-anchor]:is([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus) {
96
+ :where([oui-combobox-anchor]:is([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-visible, [oui-combobox-anchor]:is([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-within, [oui-combobox-anchor]:is([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):has(+ [oui-combobox-content]:focus-within)) {
47
97
  --oui-outline-percentage: 75%;
48
98
  }
49
99
  :where([oui-combobox-anchor]:is([disabled], [aria-disabled=true i])) {
@@ -67,16 +117,16 @@
67
117
  inset-block: var(--margin-top) var(--margin-bottom);
68
118
  inset-inline: var(--margin-left) var(--margin-right);
69
119
  }
70
- :where([oui-combobox-content])[oui-position$=bottom] {
120
+ :where([oui-combobox-content])[oui-position$=bottom i] {
71
121
  --margin-bottom: 0;
72
122
  }
73
- :where([oui-combobox-content])[oui-position$=end] {
123
+ :where([oui-combobox-content])[oui-position$=end i] {
74
124
  --margin-right: 0;
75
125
  }
76
- :where([oui-combobox-content])[oui-position$=start] {
126
+ :where([oui-combobox-content])[oui-position$=start i] {
77
127
  --margin-left: 0;
78
128
  }
79
- :where([oui-combobox-content])[oui-position$=top] {
129
+ :where([oui-combobox-content])[oui-position$=top i] {
80
130
  --margin-top: 0;
81
131
  }
82
132
  :where([oui-combobox-content]) {
@@ -114,35 +164,51 @@
114
164
  }
115
165
 
116
166
  :where([oui-combobox-filter-input]) {
117
- --oui-background-percentage: 0%;
118
- --oui-foreground-percentage: 0%;
119
167
  --oui-outline-percentage: 100%;
120
168
  --oui-outline-value: var(--oui-blue-6);
121
169
  outline: 4px solid color-mix(in oklab, var(--oui-outline-value), transparent var(--oui-outline-percentage));
122
170
  outline-offset: 0;
123
- transition: 0.125s ease-in-out;
171
+ --oui-background-percentage: 0%;
172
+ --oui-foreground-percentage: 0%;
124
173
  align-content: center;
125
174
  background-color: color-mix(in oklab, var(--oui-background-value), transparent var(--oui-background-percentage));
126
175
  border: 1px solid var(--oui-border-value, var(--oui-gray-3));
127
176
  box-shadow: inset 0 2px 4px -1px var(--oui-gray-3);
128
177
  color: color-mix(in oklab, var(--oui-foreground-value, inherit), transparent var(--oui-foreground-percentage));
129
178
  -webkit-text-fill-color: color-mix(in oklab, var(--oui-foreground-value, inherit), transparent var(--oui-foreground-percentage));
130
- --oui-background-value: var(--oui-absolute);
131
- --oui-border-value: var(--oui-yellow-3);
132
- width: 100%;
133
- padding: 0.5em 0.75em;
134
- outline-width: 0;
135
- border-radius: 0.25em;
136
- font-size: 0.875rem;
179
+ transition: 0.125s ease-in-out;
180
+ transition-property: background, outline, border, box-shadow, color;
181
+ }
182
+ :where([oui-combobox-filter-input]).oui-validate:not([disabled],
183
+ [readonly],
184
+ [aria-disabled=true i],
185
+ [aria-readonly=true i],
186
+ :focus-visible,
187
+ :focus-within):is(:user-invalid:not([aria-invalid=false i]), [aria-invalid=true i]) {
188
+ --oui-border-value: var(--oui-red-5);
189
+ --oui-foreground-value: var(--oui-red-9);
190
+ --oui-outline-percentage: 82.5%;
191
+ --oui-outline-value: var(--oui-red-6);
137
192
  }
138
- :where(:where([oui-combobox-filter-input]):focus) {
193
+ :where([oui-combobox-filter-input]).oui-validate:not([disabled],
194
+ [readonly],
195
+ [aria-disabled=true i],
196
+ [aria-readonly=true i],
197
+ :focus-visible,
198
+ :focus-within):is(:user-valid:not([aria-invalid=true i]), [aria-invalid=false i]) {
199
+ --oui-border-value: var(--oui-green-5);
200
+ --oui-foreground-value: var(--oui-green-9);
201
+ --oui-outline-percentage: 82.5%;
202
+ --oui-outline-value: var(--oui-green-6);
203
+ }
204
+ :where([oui-combobox-filter-input]):not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-visible, :where([oui-combobox-filter-input]):not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-within {
139
205
  --oui-border-value: var(--oui-blue-5);
140
206
  --oui-foreground-value: inherit;
141
207
  --oui-outline-percentage: 75%;
142
208
  --oui-outline-value: var(--oui-blue-6);
143
209
  }
144
210
  @media (hover: hover) {
145
- :where(:where([oui-combobox-filter-input]):hover) {
211
+ :where([oui-combobox-filter-input]):not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):hover {
146
212
  --oui-border-value: var(--oui-blue-4);
147
213
  --oui-foreground-percentage: 0%;
148
214
  --oui-foreground-value: inherit;
@@ -150,16 +216,25 @@
150
216
  --oui-outline-value: var(--oui-blue-6);
151
217
  }
152
218
  }
153
- :where(:where([oui-combobox-filter-input]):is([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i])) {
219
+ :where([oui-combobox-filter-input]):is([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]) {
154
220
  --oui-foreground-percentage: 25%;
155
221
  font-style: italic;
156
222
  }
157
- :where(:where([oui-combobox-filter-input]):is([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus) {
223
+ :where([oui-combobox-filter-input]):is([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]):focus-visible {
158
224
  --oui-outline-percentage: 75%;
159
225
  }
160
- :where(:where([oui-combobox-filter-input]):is([disabled], [aria-disabled=true i])) {
226
+ :where([oui-combobox-filter-input]):is([disabled], [aria-disabled=true i]) {
161
227
  --oui-background-percentage: 50%;
162
228
  }
229
+ :where([oui-combobox-filter-input]) {
230
+ --oui-background-value: var(--oui-absolute);
231
+ --oui-border-value: var(--oui-yellow-3);
232
+ width: 100%;
233
+ padding: 0.5em 0.75em;
234
+ outline-width: 0;
235
+ border-radius: 0.25em;
236
+ font-size: 0.875rem;
237
+ }
163
238
 
164
239
  :where([oui-combobox-header]) {
165
240
  padding: 0.5em 1em;
@@ -199,7 +274,6 @@
199
274
  outline-offset: -4px;
200
275
  line-height: 1.25;
201
276
  cursor: pointer;
202
- transition: 0.125s ease-in-out;
203
277
  }
204
278
  :where([oui-combobox-option][aria-selected=true i]) {
205
279
  background-color: var(--oui-blue-3);
@@ -210,7 +284,7 @@
210
284
  margin: 0 0.75em 0 0;
211
285
  }
212
286
  @media (hover: hover) {
213
- :where(:where(oui-combobox:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]) [oui-combobox-option]):hover) {
287
+ :where(oui-combobox:not([disabled], [readonly], [aria-disabled=true i], [aria-readonly=true i]) [oui-combobox-option]:hover) {
214
288
  background-color: var(--oui-blue-1);
215
289
  color: var(--oui-blue-8);
216
290
  }
@@ -237,31 +311,56 @@
237
311
 
238
312
  :where([oui-combobox-selection-item]) {
239
313
  --oui-background-percentage: 25%;
314
+ --oui-background-value: var(--oui-gray-2);
240
315
  --oui-foreground-percentage: 0%;
316
+ --oui-foreground-value: var(--oui-gray-8);
241
317
  --oui-outline-percentage: 100%;
242
- --oui-shadow-inset: color-mix(in oklab, white, transparent 75%);
318
+ --oui-outline-value: var(--oui-gray-6);
319
+ --oui-shadow-inset: color-mix(in oklab, var(--oui-absolute), transparent 75%);
243
320
  --oui-shadow-percentage: 82.5%;
244
321
  --oui-shadow-value: color-mix(
245
322
  in oklab,
246
- var(--oui-outline-value, var(--oui-gray-6)),
323
+ var(--oui-outline-value),
247
324
  transparent var(--oui-shadow-percentage)
248
325
  );
249
- box-shadow: inset 0 1px 0 0 var(--oui-shadow-inset), 0 0 0 1px var(--oui-shadow-value), 0 1px 2px -0.5px var(--oui-shadow-value), 0 2px 4px -1px var(--oui-shadow-value);
326
+ box-shadow: inset 0 1px 0 0 var(--oui-shadow-inset), 0 0 0 1px var(--oui-shadow-value), 0 1px 2px -0.5px var(--oui-shadow-value), 0 2px 4px -1px var(--oui-shadow-value), 0 4px 8px -2px var(--oui-shadow-value);
250
327
  padding: 0.5em 0.75em;
251
328
  display: inline-flex;
252
329
  flex-flow: row wrap;
253
330
  gap: 0.75em;
254
331
  align-items: center;
255
332
  border-radius: 0.25em;
256
- background-color: color-mix(in oklab, var(--oui-background-value, var(--oui-gray-2)), transparent var(--oui-background-percentage));
257
- outline: 4px solid color-mix(in oklab, var(--oui-outline-value, var(--oui-gray-6)), transparent var(--oui-outline-percentage));
333
+ background-color: color-mix(in oklab, var(--oui-background-value), transparent var(--oui-background-percentage));
334
+ outline: 4px solid color-mix(in oklab, var(--oui-outline-value), transparent var(--oui-outline-percentage));
258
335
  border: none;
259
- color: color-mix(in oklab, var(--oui-foreground-value, var(--oui-gray-8)), transparent var(--oui-foreground-percentage));
336
+ color: color-mix(in oklab, var(--oui-foreground-value), transparent var(--oui-foreground-percentage));
260
337
  line-height: 1.25;
261
338
  transition: 0.125s ease-in-out;
262
- --oui-background-value: var(--oui-blue-1);
263
- --oui-foreground-percentage: 12.5%;
339
+ transition-property: background, outline, box-shadow, color;
340
+ }
341
+ :where([oui-combobox-selection-item]):focus-visible {
342
+ --oui-outline-percentage: 75%;
343
+ }
344
+ @media (hover: hover) {
345
+ :where([oui-combobox-selection-item]):not([disabled], [aria-disabled=true i]):hover {
346
+ --oui-background-percentage: 50%;
347
+ --oui-foreground-percentage: 25%;
348
+ --oui-shadow-percentage: 90%;
349
+ }
350
+ }
351
+ :where([oui-combobox-selection-item]):not([disabled], [aria-disabled=true i]):active {
352
+ box-shadow: 0 0 0 1px var(--oui-shadow-value), inset 0 1px 2px 0 var(--oui-shadow-value), inset 0 2px 4px 0 var(--oui-shadow-value);
353
+ }
354
+ :where([oui-combobox-selection-item])[disabled], :where([oui-combobox-selection-item])[aria-disabled=true i] {
355
+ --oui-background-percentage: 80%;
356
+ --oui-foreground-percentage: 25%;
357
+ --oui-shadow-percentage: 92.5%;
358
+ font-style: italic;
359
+ }
360
+ :where([oui-combobox-selection-item]) {
361
+ --oui-background-value: var(--oui-blue-2);
264
362
  --oui-foreground-value: var(--oui-blue-8);
363
+ --oui-outline-value: var(--oui-blue-6);
265
364
  --oui-shadow-percentage: 90%;
266
365
  padding: 0.5em 1em;
267
366
  flex-wrap: nowrap;