@oscarpalmer/oui 0.37.0 → 0.38.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 (96) hide show
  1. package/dist/css/a11y.css +1 -0
  2. package/dist/css/badge.css +1 -0
  3. package/dist/css/button.css +5 -0
  4. package/dist/css/color-picker.css +377 -0
  5. package/dist/css/color.css +0 -1
  6. package/dist/css/combobox.css +7 -0
  7. package/dist/css/content.css +1 -0
  8. package/dist/css/floatable.css +2 -0
  9. package/dist/css/form.css +7 -0
  10. package/dist/css/listbox.css +2 -0
  11. package/dist/css/message.css +2 -0
  12. package/dist/css/mixins/badge.mixins.css +2 -0
  13. package/dist/css/mixins/button.mixins.css +2 -0
  14. package/dist/css/mixins/message.mixins.css +1 -0
  15. package/dist/css/mixins/misc.mixins.css +2 -0
  16. package/dist/css/mixins/shadow.mixins.css +1 -0
  17. package/dist/css/reset.css +2 -2
  18. package/dist/css/splitter.css +1 -1
  19. package/dist/css/tabs.css +21 -21
  20. package/dist/js/color-picker.d.mts +213 -0
  21. package/dist/js/color-picker.mjs +924 -0
  22. package/dist/js/combobox/dom.combobox.mjs +8 -4
  23. package/dist/js/combobox/event.combobox.mjs +1 -1
  24. package/dist/js/combobox/index.d.mts +1 -1
  25. package/dist/js/combobox/index.mjs +56 -2
  26. package/dist/js/combobox/misc.combobox.d.mts +1 -1
  27. package/dist/js/combobox/misc.combobox.mjs +1 -1
  28. package/dist/js/combobox/state.combobox.d.mts +1 -1
  29. package/dist/js/combobox/state.combobox.mjs +1 -1
  30. package/dist/js/dialog.mjs +2 -2
  31. package/dist/js/floatable/floatable.embedded.mjs +13 -10
  32. package/dist/js/focus-trap/focus-trap.embedded.mjs +3 -3
  33. package/dist/js/{index-EfkUSals.d.mts → index-DJdFlTLm.d.mts} +39 -1
  34. package/dist/js/index.d.mts +3 -2
  35. package/dist/js/index.mjs +4 -3
  36. package/dist/js/internal/draggable.mjs +4 -4
  37. package/dist/js/internal/listbox/listbox.data.mjs +1 -1
  38. package/dist/js/internal/listbox/listbox.dom.mjs +1 -1
  39. package/dist/js/internal/listbox/listbox.event.mjs +1 -1
  40. package/dist/js/internal/listbox/listbox.form.mjs +16 -15
  41. package/dist/js/internal/listbox/listbox.misc.mjs +1 -1
  42. package/dist/js/internal/listbox/listbox.state.mjs +3 -3
  43. package/dist/js/internal/navigable.mjs +4 -3
  44. package/dist/js/listbox/event.listbox.mjs +1 -1
  45. package/dist/js/listbox/index.d.mts +38 -0
  46. package/dist/js/listbox/index.mjs +56 -2
  47. package/dist/js/listbox/misc.listbox.mjs +1 -1
  48. package/dist/js/listbox/state.listbox.mjs +1 -1
  49. package/dist/js/{listbox.data-BWd0PCy7.mjs → listbox.data-C7CRa5Ya.mjs} +5 -4
  50. package/dist/js/menu.mjs +1 -1
  51. package/dist/js/{misc.listbox-BI-XsTOf.mjs → misc.listbox-Cyz2CRDy.mjs} +2 -3
  52. package/dist/js/movable/movable.embedded.mjs +2 -2
  53. package/dist/js/popover.mjs +2 -2
  54. package/dist/js/resizable/resizable.embedded.mjs +5 -5
  55. package/dist/js/sortable/sortable.embedded.mjs +4 -4
  56. package/dist/js/splitter.mjs +6 -6
  57. package/dist/js/{state.combobox-4xq0FPCF.mjs → state.combobox-Qm3FWzYW.mjs} +3 -3
  58. package/dist/js/tabs.mjs +4 -7
  59. package/dist/js/tooltip.mjs +3 -3
  60. package/package.json +7 -5
  61. package/src/css/a11y.scss +2 -2
  62. package/src/css/badge.scss +8 -8
  63. package/src/css/button.scss +8 -8
  64. package/src/css/color-picker.scss +344 -0
  65. package/src/css/color.scss +0 -2
  66. package/src/css/combobox.scss +12 -9
  67. package/src/css/content.scss +11 -10
  68. package/src/css/floatable.scss +6 -3
  69. package/src/css/form.scss +12 -10
  70. package/src/css/listbox.scss +4 -3
  71. package/src/css/message.scss +9 -8
  72. package/src/css/mixins/badge.mixins.scss +53 -0
  73. package/src/css/mixins/button.mixins.scss +112 -0
  74. package/src/css/mixins/input.mixins.scss +114 -0
  75. package/src/css/mixins/message.mixins.scss +41 -0
  76. package/src/css/mixins/misc.mixins.scss +48 -0
  77. package/src/css/mixins/shadow.mixins.scss +57 -0
  78. package/src/css/reset.scss +2 -2
  79. package/src/css/splitter.scss +1 -1
  80. package/src/css/tabs.scss +20 -31
  81. package/src/js/color-picker.ts +1653 -0
  82. package/src/js/combobox/dom.combobox.ts +4 -0
  83. package/src/js/combobox/index.ts +63 -1
  84. package/src/js/dialog.ts +1 -1
  85. package/src/js/floatable/floatable.embedded.ts +18 -14
  86. package/src/js/index.ts +1 -0
  87. package/src/js/internal/listbox/listbox.dom.ts +2 -1
  88. package/src/js/internal/listbox/listbox.form.ts +31 -21
  89. package/src/js/internal/listbox/listbox.state.ts +2 -2
  90. package/src/js/internal/navigable.ts +2 -0
  91. package/src/js/listbox/index.ts +62 -0
  92. package/src/js/listbox/state.listbox.ts +0 -2
  93. package/src/js/popover.ts +1 -1
  94. package/src/js/tabs.ts +4 -10
  95. package/src/css/mixins.scss +0 -419
  96. /package/dist/css/{mixins.css → mixins/input.mixins.css} +0 -0
@@ -1,419 +0,0 @@
1
- @mixin badge() {
2
- --oui-shadow-inset: color-mix(in oklab, var(--oui-absolute), transparent 50%);
3
- --oui-shadow-value: var(--oui-gray-6);
4
- --oui-shadow-mixed: color-mix(in oklab, var(--oui-shadow-value), transparent 87.5%);
5
-
6
- @include shadow-1(var(--oui-shadow-mixed), var(--oui-shadow-inset));
7
-
8
- display: inline-flex;
9
- flex-flow: row nowrap;
10
- gap: 0.5em;
11
- background-color: color-mix(in oklab, var(--oui-background, var(--oui-gray-1)), transparent 25%);
12
- color: var(--oui-foreground, var(--oui-gray-8));
13
- text-shadow: 0 1px 0 var(--oui-absolute);
14
- line-height: 1.25;
15
- }
16
-
17
- @mixin badge-blue() {
18
- --oui-background: var(--oui-blue-1);
19
- --oui-foreground: var(--oui-blue-8);
20
- --oui-shadow-value: var(--oui-blue-6);
21
- }
22
-
23
- @mixin badge-green() {
24
- --oui-background: var(--oui-green-1);
25
- --oui-foreground: var(--oui-green-8);
26
- --oui-shadow-value: var(--oui-green-6);
27
- }
28
-
29
- @mixin badge-orange() {
30
- --oui-background: var(--oui-orange-1);
31
- --oui-foreground: var(--oui-orange-8);
32
- --oui-shadow-value: var(--oui-orange-6);
33
- }
34
-
35
- @mixin badge-purple() {
36
- --oui-background: var(--oui-purple-1);
37
- --oui-foreground: var(--oui-purple-8);
38
- --oui-shadow-value: var(--oui-purple-6);
39
- }
40
-
41
- @mixin badge-red() {
42
- --oui-background: var(--oui-red-1);
43
- --oui-foreground: var(--oui-red-8);
44
- --oui-shadow-value: var(--oui-red-6);
45
- }
46
-
47
- @mixin badge-yellow() {
48
- --oui-background: var(--oui-yellow-1);
49
- --oui-foreground: var(--oui-yellow-8);
50
- --oui-shadow-value: var(--oui-yellow-6);
51
- }
52
-
53
- @mixin button() {
54
- --oui-background-percentage: 25%;
55
- --oui-background-value: var(--oui-gray-2);
56
- --oui-foreground-percentage: 0%;
57
- --oui-foreground-value: var(--oui-gray-8);
58
- --oui-outline-percentage: 100%;
59
- --oui-outline-value: var(--oui-gray-6);
60
- --oui-shadow-inset: color-mix(in oklab, var(--oui-absolute), transparent 75%);
61
- --oui-shadow-percentage: 82.5%;
62
-
63
- --oui-shadow-value: color-mix(
64
- in oklab,
65
- var(--oui-outline-value),
66
- transparent var(--oui-shadow-percentage)
67
- );
68
-
69
- @include shadow-2(var(--oui-shadow-value), var(--oui-shadow-inset));
70
-
71
- padding: 0.5em 0.75em;
72
- display: inline-flex;
73
- flex-flow: row wrap;
74
- gap: 0.75em;
75
- align-items: center;
76
- border-radius: 0.25em;
77
- background-color: color-mix(
78
- in oklab,
79
- var(--oui-background-value),
80
- transparent var(--oui-background-percentage)
81
- );
82
- outline: 4px solid
83
- color-mix(in oklab, var(--oui-outline-value), transparent var(--oui-outline-percentage));
84
- border: none;
85
- color: color-mix(
86
- in oklab,
87
- var(--oui-foreground-value),
88
- transparent var(--oui-foreground-percentage)
89
- );
90
- line-height: 1.25;
91
- transition: 0.125s ease-in-out;
92
- transition-property: background, outline, box-shadow, color;
93
-
94
- &:focus-visible {
95
- --oui-outline-percentage: 75%;
96
- }
97
-
98
- @media (hover: hover) {
99
- &:not([disabled], [aria-disabled='true' i]):hover {
100
- --oui-background-percentage: 50%;
101
- --oui-foreground-percentage: 25%;
102
- --oui-shadow-percentage: 90%;
103
- }
104
- }
105
-
106
- &:not([disabled], [aria-disabled='true' i]):active {
107
- box-shadow:
108
- 0 0 0 1px var(--oui-shadow-value),
109
- inset 0 1px 2px 0 var(--oui-shadow-value),
110
- inset 0 2px 4px 0 var(--oui-shadow-value);
111
- }
112
-
113
- &[disabled],
114
- &[aria-disabled='true' i] {
115
- --oui-background-percentage: 80%;
116
- --oui-foreground-percentage: 25%;
117
- --oui-shadow-percentage: 92.5%;
118
-
119
- font-style: italic;
120
- }
121
- }
122
-
123
- @mixin button-blue() {
124
- --oui-background-value: var(--oui-blue-3);
125
- --oui-foreground-value: var(--oui-blue-8);
126
- --oui-outline-value: var(--oui-blue-6);
127
- }
128
-
129
- @mixin button-green() {
130
- --oui-background-value: var(--oui-green-3);
131
- --oui-foreground-value: var(--oui-green-8);
132
- --oui-outline-value: var(--oui-green-6);
133
- }
134
-
135
- @mixin button-orange() {
136
- --oui-background-value: var(--oui-orange-3);
137
- --oui-foreground-value: var(--oui-orange-8);
138
- --oui-outline-value: var(--oui-orange-6);
139
- }
140
-
141
- @mixin button-purple() {
142
- --oui-background-value: var(--oui-purple-3);
143
- --oui-foreground-value: var(--oui-purple-8);
144
- --oui-outline-value: var(--oui-purple-6);
145
- }
146
-
147
- @mixin button-red() {
148
- --oui-background-value: var(--oui-red-3);
149
- --oui-foreground-value: var(--oui-red-8);
150
- --oui-outline-value: var(--oui-red-6);
151
- }
152
-
153
- @mixin button-yellow() {
154
- --oui-background-value: var(--oui-yellow-3);
155
- --oui-foreground-value: var(--oui-yellow-8);
156
- --oui-outline-value: var(--oui-yellow-6);
157
- }
158
-
159
- @mixin card(
160
- $backgroundColor: var(--oui-absolute),
161
- $boxShadowColor: color-mix(in oklab, var(--oui-gray-6), transparent 92.5%)
162
- ) {
163
- @include shadow-1($boxShadowColor);
164
-
165
- padding: 1em 1.25em;
166
- background-color: $backgroundColor;
167
- border-radius: 0.5em;
168
- }
169
-
170
- @mixin floatable() {
171
- --margin-bottom: 0.5em;
172
- --margin-left: 0.5em;
173
- --margin-right: 0.5em;
174
- --margin-top: 0.5em;
175
-
176
- inset-block: var(--margin-top) var(--margin-bottom);
177
- inset-inline: var(--margin-left) var(--margin-right);
178
-
179
- &[oui-position$='bottom' i] {
180
- --margin-bottom: 0;
181
- }
182
-
183
- &[oui-position$='end' i] {
184
- --margin-right: 0;
185
- }
186
-
187
- &[oui-position$='start' i] {
188
- --margin-left: 0;
189
- }
190
-
191
- &[oui-position$='top' i] {
192
- --margin-top: 0;
193
- }
194
- }
195
-
196
- @mixin input {
197
- @include input-outlined;
198
-
199
- --oui-background-percentage: 0%;
200
- --oui-foreground-percentage: 0%;
201
-
202
- align-content: center;
203
- background-color: color-mix(
204
- in oklab,
205
- var(--oui-background-value),
206
- transparent var(--oui-background-percentage)
207
- );
208
- border: 1px solid var(--oui-border-value, var(--oui-gray-3));
209
- box-shadow: inset 0 2px 4px -1px var(--oui-gray-3);
210
- color: color-mix(
211
- in oklab,
212
- var(--oui-foreground-value, inherit),
213
- transparent var(--oui-foreground-percentage)
214
- );
215
- -webkit-text-fill-color: color-mix(
216
- in oklab,
217
- var(--oui-foreground-value, inherit),
218
- transparent var(--oui-foreground-percentage)
219
- );
220
- transition: 0.125s ease-in-out;
221
- transition-property: background, outline, border, box-shadow, color;
222
-
223
- &.oui-validate:not(
224
- [disabled],
225
- [readonly],
226
- [aria-disabled='true' i],
227
- [aria-readonly='true' i],
228
- :focus-visible,
229
- :focus-within
230
- ):is(:user-invalid:not([aria-invalid='false' i]), [aria-invalid='true' i]) {
231
- @include input-invalid;
232
- }
233
-
234
- &.oui-validate:not(
235
- [disabled],
236
- [readonly],
237
- [aria-disabled='true' i],
238
- [aria-readonly='true' i],
239
- :focus-visible,
240
- :focus-within
241
- ):is(:user-valid:not([aria-invalid='true' i]), [aria-invalid='false' i]) {
242
- @include input-valid;
243
- }
244
-
245
- &:not([disabled], [readonly], [aria-disabled='true' i], [aria-readonly='true' i]) {
246
- &:focus-visible,
247
- &:focus-within {
248
- @include input-focus;
249
- }
250
-
251
- @media (hover: hover) {
252
- &:hover {
253
- @include input-hover;
254
- }
255
- }
256
- }
257
-
258
- &:is([disabled], [readonly], [aria-disabled='true' i], [aria-readonly='true' i]) {
259
- --oui-foreground-percentage: 25%;
260
-
261
- font-style: italic;
262
- }
263
-
264
- &:is([disabled], [readonly], [aria-disabled='true' i], [aria-readonly='true' i]):focus-visible {
265
- --oui-outline-percentage: 75%;
266
- }
267
-
268
- &:is([disabled], [aria-disabled='true' i]) {
269
- --oui-background-percentage: 50%;
270
- }
271
- }
272
-
273
- @mixin input-focus() {
274
- --oui-border-value: var(--oui-blue-5);
275
- --oui-foreground-value: inherit;
276
- --oui-outline-percentage: 75%;
277
- --oui-outline-value: var(--oui-blue-6);
278
- }
279
-
280
- @mixin input-hover() {
281
- --oui-border-value: var(--oui-blue-4);
282
- --oui-foreground-percentage: 0%;
283
- --oui-foreground-value: inherit;
284
- --oui-outline-percentage: 90%;
285
- --oui-outline-value: var(--oui-blue-6);
286
- }
287
-
288
- @mixin input-invalid() {
289
- --oui-border-value: var(--oui-red-5);
290
- --oui-foreground-value: var(--oui-red-9);
291
- --oui-outline-percentage: 82.5%;
292
- --oui-outline-value: var(--oui-red-6);
293
- }
294
-
295
- @mixin input-outlined {
296
- --oui-outline-percentage: 100%;
297
- --oui-outline-value: var(--oui-blue-6);
298
-
299
- outline: 4px solid
300
- color-mix(in oklab, var(--oui-outline-value), transparent var(--oui-outline-percentage));
301
- outline-offset: 0;
302
- }
303
-
304
- @mixin input-valid() {
305
- --oui-border-value: var(--oui-green-5);
306
- --oui-foreground-value: var(--oui-green-9);
307
- --oui-outline-percentage: 82.5%;
308
- --oui-outline-value: var(--oui-green-6);
309
- }
310
-
311
- @mixin message-blue() {
312
- --oui-background: var(--oui-blue-1);
313
- --oui-border: var(--oui-blue-2);
314
- --oui-foreground: var(--oui-blue-8);
315
- --oui-shadow-value: var(--oui-blue-6);
316
- }
317
-
318
- @mixin message-green() {
319
- --oui-background: var(--oui-green-1);
320
- --oui-border: var(--oui-green-2);
321
- --oui-foreground: var(--oui-green-8);
322
- --oui-shadow-value: var(--oui-green-6);
323
- }
324
-
325
- @mixin message-orange() {
326
- --oui-background: var(--oui-orange-1);
327
- --oui-border: var(--oui-orange-2);
328
- --oui-foreground: var(--oui-orange-8);
329
- --oui-shadow-value: var(--oui-orange-6);
330
- }
331
-
332
- @mixin message-purple() {
333
- --oui-background: var(--oui-purple-1);
334
- --oui-border: var(--oui-purple-2);
335
- --oui-foreground: var(--oui-purple-8);
336
- --oui-shadow-value: var(--oui-purple-6);
337
- }
338
-
339
- @mixin message-red() {
340
- --oui-background: var(--oui-red-1);
341
- --oui-border: var(--oui-red-2);
342
- --oui-foreground: var(--oui-red-8);
343
- --oui-shadow-value: var(--oui-red-6);
344
- }
345
-
346
- @mixin message-yellow() {
347
- --oui-background: var(--oui-yellow-1);
348
- --oui-border: var(--oui-yellow-2);
349
- --oui-foreground: var(--oui-yellow-8);
350
- --oui-shadow-value: var(--oui-yellow-6);
351
- }
352
-
353
- @mixin shadow-0($color: rgb(0 0 0 / 5%), $inset: transparent) {
354
- box-shadow:
355
- inset 0 1px 0 0 $inset,
356
- 0 0 0 1px $color,
357
- 0 1px 2px -0.5px $color;
358
- }
359
-
360
- @mixin shadow-1($color: rgb(0 0 0 / 5%), $inset: transparent) {
361
- box-shadow:
362
- inset 0 1px 0 0 $inset,
363
- 0 0 0 1px $color,
364
- 0 1px 2px -0.5px $color,
365
- 0 2px 4px -1px $color;
366
- }
367
-
368
- @mixin shadow-2($color: rgb(0 0 0 / 5%), $inset: transparent) {
369
- box-shadow:
370
- inset 0 1px 0 0 $inset,
371
- 0 0 0 1px $color,
372
- 0 1px 2px -0.5px $color,
373
- 0 2px 4px -1px $color,
374
- 0 4px 8px -2px $color;
375
- }
376
-
377
- @mixin shadow-3($color: rgb(0 0 0 / 5%), $inset: transparent) {
378
- box-shadow:
379
- inset 0 1px 0 0 $inset,
380
- 0 0 0 1px $color,
381
- 0 1px 2px -0.5px $color,
382
- 0 2px 4px -1px $color,
383
- 0 4px 8px -2px $color,
384
- 0 8px 16px -4px $color;
385
- }
386
-
387
- @mixin shadow-4($color: rgb(0 0 0 / 5%), $inset: transparent) {
388
- box-shadow:
389
- inset 0 1px 0 0 $inset,
390
- 0 0 0 1px $color,
391
- 0 1px 2px -0.5px $color,
392
- 0 2px 4px -1px $color,
393
- 0 4px 8px -2px $color,
394
- 0 8px 16px -4px $color,
395
- 0 16px 32px -8px $color;
396
- }
397
-
398
- @mixin shadow-5($color: rgb(0 0 0 / 5%), $inset: transparent) {
399
- box-shadow:
400
- inset 0 1px 0 0 $inset,
401
- 0 0 0 1px $color,
402
- 0 1px 2px -0.5px $color,
403
- 0 2px 4px -1px $color,
404
- 0 4px 8px -2px $color,
405
- 0 8px 16px -4px $color,
406
- 0 16px 32px -8px $color,
407
- 0 32px 64px -16px $color,
408
- 0 64px 128px -32px $color;
409
- }
410
-
411
- @mixin visually-hidden() {
412
- width: 1px !important;
413
- height: 1px !important;
414
- padding: 0 !important;
415
- clip-path: inset(50%) !important;
416
- overflow: hidden !important;
417
- border: 0 !important;
418
- white-space: nowrap !important;
419
- }