iryx-ui 0.12.0 → 0.14.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.
- package/README.md +35 -1315
- package/dist/component-names.d.ts +1 -1
- package/dist/component-names.js +1 -1
- package/dist/components/Accordion.js +5 -0
- package/dist/components/Accordion.vue.d.ts +80 -0
- package/dist/components/Accordion.vue_vue_type_script_setup_true_lang.js +87 -0
- package/dist/components/Alert.vue.d.ts +1 -1
- package/dist/components/Alert.vue_vue_type_script_setup_true_lang.js +7 -7
- package/dist/components/App.vue.d.ts +1 -1
- package/dist/components/AppShell.js +5 -0
- package/dist/components/AppShell.vue.d.ts +46 -0
- package/dist/components/AppShell.vue_vue_type_script_setup_true_lang.js +59 -0
- package/dist/components/AspectRatio.js +5 -0
- package/dist/components/AspectRatio.vue.d.ts +26 -0
- package/dist/components/AspectRatio.vue_vue_type_script_setup_true_lang.js +27 -0
- package/dist/components/Avatar.js +5 -0
- package/dist/components/Avatar.vue.d.ts +52 -0
- package/dist/components/Avatar.vue_vue_type_script_setup_true_lang.js +67 -0
- package/dist/components/AvatarGroup.js +5 -0
- package/dist/components/AvatarGroup.vue.d.ts +39 -0
- package/dist/components/AvatarGroup.vue_vue_type_script_setup_true_lang.js +45 -0
- package/dist/components/Badge.vue.d.ts +1 -1
- package/dist/components/Banner.vue.d.ts +2 -2
- package/dist/components/BarChart.vue.d.ts +1 -1
- package/dist/components/BarChart.vue_vue_type_script_setup_true_lang.js +14 -14
- package/dist/components/Breadcrumb.vue.d.ts +1 -1
- package/dist/components/Button.vue.d.ts +2 -2
- package/dist/components/ButtonGroup.vue.d.ts +1 -1
- package/dist/components/Card.vue.d.ts +1 -1
- package/dist/components/Collapsible.js +5 -0
- package/dist/components/Collapsible.vue.d.ts +58 -0
- package/dist/components/Collapsible.vue_vue_type_script_setup_true_lang.js +67 -0
- package/dist/components/ColorPicker.js +5 -0
- package/dist/components/ColorPicker.vue.d.ts +49 -0
- package/dist/components/ColorPicker.vue_vue_type_script_setup_true_lang.js +172 -0
- package/dist/components/Combobox.vue.d.ts +40 -13
- package/dist/components/Combobox.vue_vue_type_script_setup_true_lang.js +172 -103
- package/dist/components/CommandPalette.js +5 -0
- package/dist/components/CommandPalette.vue.d.ts +63 -0
- package/dist/components/CommandPalette.vue_vue_type_script_setup_true_lang.js +185 -0
- package/dist/components/Container.js +5 -0
- package/dist/components/Container.vue.d.ts +33 -0
- package/dist/components/Container.vue_vue_type_script_setup_true_lang.js +40 -0
- package/dist/components/ContextMenu.js +5 -0
- package/dist/components/ContextMenu.vue.d.ts +42 -0
- package/dist/components/ContextMenu.vue_vue_type_script_setup_true_lang.js +49 -0
- package/dist/components/DatePicker.vue.d.ts +1 -1
- package/dist/components/DateRangePicker.vue.d.ts +2 -2
- package/dist/components/Dialog.vue.d.ts +1 -1
- package/dist/components/Drawer.vue.d.ts +2 -2
- package/dist/components/EmptyState.vue.d.ts +1 -1
- package/dist/components/FileUpload.vue.d.ts +2 -2
- package/dist/components/Icon.vue.d.ts +6 -0
- package/dist/components/Icon.vue_vue_type_script_setup_true_lang.js +11 -9
- package/dist/components/Input.vue.d.ts +1 -1
- package/dist/components/Input.vue_vue_type_script_setup_true_lang.js +4 -4
- package/dist/components/Kbd.js +5 -0
- package/dist/components/Kbd.vue.d.ts +46 -0
- package/dist/components/Kbd.vue_vue_type_script_setup_true_lang.js +41 -0
- package/dist/components/LineChart.vue_vue_type_script_setup_true_lang.js +19 -19
- package/dist/components/Menubar.js +5 -0
- package/dist/components/Menubar.vue.d.ts +62 -0
- package/dist/components/Menubar.vue_vue_type_script_setup_true_lang.js +79 -0
- package/dist/components/NavigationMenu.js +5 -0
- package/dist/components/NavigationMenu.vue.d.ts +75 -0
- package/dist/components/NavigationMenu.vue_vue_type_script_setup_true_lang.js +167 -0
- package/dist/components/NumberInput.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/PageHeader.js +5 -0
- package/dist/components/PageHeader.vue.d.ts +52 -0
- package/dist/components/PageHeader.vue_vue_type_script_setup_true_lang.js +59 -0
- package/dist/components/Pagination.vue.d.ts +1 -1
- package/dist/components/PinInput.js +5 -0
- package/dist/components/PinInput.vue.d.ts +65 -0
- package/dist/components/PinInput.vue_vue_type_script_setup_true_lang.js +76 -0
- package/dist/components/Popover.js +5 -0
- package/dist/components/Popover.vue.d.ts +75 -0
- package/dist/components/Popover.vue_vue_type_script_setup_true_lang.js +99 -0
- package/dist/components/Progress.vue.d.ts +20 -1
- package/dist/components/Progress.vue_vue_type_script_setup_true_lang.js +84 -44
- package/dist/components/RadioGroup.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/components/ScrollArea.js +5 -0
- package/dist/components/ScrollArea.vue.d.ts +41 -0
- package/dist/components/ScrollArea.vue_vue_type_script_setup_true_lang.js +68 -0
- package/dist/components/ScrollFade.js +5 -0
- package/dist/components/ScrollFade.vue.d.ts +36 -0
- package/dist/components/ScrollFade.vue_vue_type_script_setup_true_lang.js +59 -0
- package/dist/components/Select.vue.d.ts +2 -2
- package/dist/components/Sidebar.js +5 -0
- package/dist/components/Sidebar.vue.d.ts +72 -0
- package/dist/components/Sidebar.vue_vue_type_script_setup_true_lang.js +183 -0
- package/dist/components/SignaturePad.js +5 -0
- package/dist/components/SignaturePad.vue.d.ts +60 -0
- package/dist/components/SignaturePad.vue_vue_type_script_setup_true_lang.js +158 -0
- package/dist/components/Skeleton.vue.d.ts +2 -2
- package/dist/components/Skeleton.vue_vue_type_script_setup_true_lang.js +8 -8
- package/dist/components/Slider.js +5 -0
- package/dist/components/Slider.vue.d.ts +80 -0
- package/dist/components/Slider.vue_vue_type_script_setup_true_lang.js +115 -0
- package/dist/components/Splitter.js +5 -0
- package/dist/components/Splitter.vue.d.ts +59 -0
- package/dist/components/Splitter.vue_vue_type_script_setup_true_lang.js +69 -0
- package/dist/components/Stat.vue.d.ts +1 -1
- package/dist/components/Switch.vue.d.ts +1 -0
- package/dist/components/Switch.vue_vue_type_script_setup_true_lang.js +7 -3
- package/dist/components/Table.vue.d.ts +7 -1
- package/dist/components/Table.vue_vue_type_script_setup_true_lang.js +73 -58
- package/dist/components/TagsInput.js +5 -0
- package/dist/components/TagsInput.vue.d.ts +71 -0
- package/dist/components/TagsInput.vue_vue_type_script_setup_true_lang.js +119 -0
- package/dist/components/Textarea.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/components/TimeField.js +5 -0
- package/dist/components/TimeField.vue.d.ts +50 -0
- package/dist/components/TimeField.vue_vue_type_script_setup_true_lang.js +85 -0
- package/dist/components/Timeline.js +5 -0
- package/dist/components/Timeline.vue.d.ts +61 -0
- package/dist/components/Timeline.vue_vue_type_script_setup_true_lang.js +60 -0
- package/dist/components/Toaster.vue.d.ts +1 -1
- package/dist/components/Toggle.js +5 -0
- package/dist/components/Toggle.vue.d.ts +42 -0
- package/dist/components/Toggle.vue_vue_type_script_setup_true_lang.js +52 -0
- package/dist/components/ToggleGroup.js +5 -0
- package/dist/components/ToggleGroup.vue.d.ts +64 -0
- package/dist/components/ToggleGroup.vue_vue_type_script_setup_true_lang.js +78 -0
- package/dist/components/Toolbar.js +5 -0
- package/dist/components/Toolbar.vue.d.ts +52 -0
- package/dist/components/Toolbar.vue_vue_type_script_setup_true_lang.js +94 -0
- package/dist/components/Tree.js +5 -0
- package/dist/components/Tree.vue.d.ts +70 -0
- package/dist/components/Tree.vue_vue_type_script_setup_true_lang.js +112 -0
- package/dist/components/index.d.ts +30 -0
- package/dist/components/index.js +146 -86
- package/dist/composables/appearance.js +5 -1
- package/dist/composables/cartesian.d.ts +11 -0
- package/dist/composables/cartesian.js +18 -19
- package/dist/composables/command-palette.d.ts +42 -0
- package/dist/composables/command-palette.js +32 -0
- package/dist/composables/date.d.ts +18 -2
- package/dist/composables/date.js +23 -12
- package/dist/composables/kbd.d.ts +26 -0
- package/dist/composables/kbd.js +161 -0
- package/dist/composables/navigation-menu.d.ts +29 -0
- package/dist/composables/navigation-menu.js +6 -0
- package/dist/composables/scroll-fade.d.ts +35 -0
- package/dist/composables/scroll-fade.js +36 -0
- package/dist/composables/sidebar.d.ts +35 -0
- package/dist/composables/sidebar.js +23 -0
- package/dist/composables/signature.d.ts +22 -0
- package/dist/composables/signature.js +13 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.js +155 -93
- package/dist/theme/accordion.d.ts +68 -0
- package/dist/theme/accordion.js +24 -0
- package/dist/theme/alert.d.ts +0 -3
- package/dist/theme/app-shell.d.ts +77 -0
- package/dist/theme/app-shell.js +35 -0
- package/dist/theme/avatar.d.ts +253 -0
- package/dist/theme/avatar.js +84 -0
- package/dist/theme/banner.d.ts +0 -9
- package/dist/theme/bar-chart.d.ts +0 -16
- package/dist/theme/breadcrumb.d.ts +3 -3
- package/dist/theme/button-group.d.ts +0 -3
- package/dist/theme/button.d.ts +0 -3
- package/dist/theme/card.js +2 -2
- package/dist/theme/chart-legend.d.ts +3 -11
- package/dist/theme/collapsible.d.ts +44 -0
- package/dist/theme/collapsible.js +17 -0
- package/dist/theme/color-picker.d.ts +98 -0
- package/dist/theme/color-picker.js +19 -0
- package/dist/theme/combobox.d.ts +48 -0
- package/dist/theme/combobox.js +23 -3
- package/dist/theme/command-palette.d.ts +122 -0
- package/dist/theme/command-palette.js +22 -0
- package/dist/theme/container.d.ts +101 -0
- package/dist/theme/container.js +26 -0
- package/dist/theme/date-picker.d.ts +12 -0
- package/dist/theme/date-picker.js +1 -1
- package/dist/theme/dropdown-menu.d.ts +0 -9
- package/dist/theme/file-upload.d.ts +0 -3
- package/dist/theme/form.d.ts +12 -12
- package/dist/theme/index.d.ts +25 -0
- package/dist/theme/kbd.d.ts +71 -0
- package/dist/theme/kbd.js +29 -0
- package/dist/theme/line-chart.d.ts +0 -9
- package/dist/theme/menubar.d.ts +29 -0
- package/dist/theme/menubar.js +11 -0
- package/dist/theme/navigation-menu.d.ts +161 -0
- package/dist/theme/navigation-menu.js +43 -0
- package/dist/theme/number-input.d.ts +0 -3
- package/dist/theme/page-header.d.ts +47 -0
- package/dist/theme/page-header.js +17 -0
- package/dist/theme/pagination.d.ts +0 -3
- package/dist/theme/pin-input.d.ts +86 -0
- package/dist/theme/pin-input.js +32 -0
- package/dist/theme/popover.d.ts +119 -0
- package/dist/theme/popover.js +31 -0
- package/dist/theme/presets.d.ts +0 -2
- package/dist/theme/progress.d.ts +93 -0
- package/dist/theme/progress.js +37 -7
- package/dist/theme/radio-group.d.ts +24 -0
- package/dist/theme/radio-group.js +23 -14
- package/dist/theme/scroll-area.d.ts +65 -0
- package/dist/theme/scroll-area.js +57 -0
- package/dist/theme/scroll-fade.d.ts +35 -0
- package/dist/theme/scroll-fade.js +12 -0
- package/dist/theme/sidebar.d.ts +167 -0
- package/dist/theme/sidebar.js +43 -0
- package/dist/theme/signature-pad.d.ts +50 -0
- package/dist/theme/signature-pad.js +17 -0
- package/dist/theme/slider.d.ts +128 -0
- package/dist/theme/slider.js +49 -0
- package/dist/theme/sparkline.d.ts +0 -6
- package/dist/theme/splitter.d.ts +59 -0
- package/dist/theme/splitter.js +25 -0
- package/dist/theme/stat.d.ts +0 -3
- package/dist/theme/stepper.js +2 -2
- package/dist/theme/switch.d.ts +53 -29
- package/dist/theme/switch.js +33 -8
- package/dist/theme/table.d.ts +51 -3
- package/dist/theme/table.js +8 -3
- package/dist/theme/tabs.d.ts +0 -3
- package/dist/theme/tags-input.d.ts +110 -0
- package/dist/theme/tags-input.js +42 -0
- package/dist/theme/time-field.d.ts +68 -0
- package/dist/theme/time-field.js +21 -0
- package/dist/theme/timeline.d.ts +182 -0
- package/dist/theme/timeline.js +83 -0
- package/dist/theme/toggle.d.ts +145 -0
- package/dist/theme/toggle.js +84 -0
- package/dist/theme/toolbar.d.ts +56 -0
- package/dist/theme/toolbar.js +21 -0
- package/dist/theme/tree.d.ts +68 -0
- package/dist/theme/tree.js +28 -0
- package/package.json +2 -2
- package/theme.css +221 -0
package/theme.css
CHANGED
|
@@ -213,6 +213,33 @@
|
|
|
213
213
|
--animate-drawer-out-top: drawer-out-top 300ms var(--iryx-drawer-ease);
|
|
214
214
|
--animate-drawer-in-bottom: drawer-in-bottom 300ms var(--iryx-drawer-ease);
|
|
215
215
|
--animate-drawer-out-bottom: drawer-out-bottom 300ms var(--iryx-drawer-ease);
|
|
216
|
+
/*
|
|
217
|
+
* Collapsible unroll. Same curve as the drawer, under its own name: it
|
|
218
|
+
* decelerates hard at the end, so the panel settles instead of stopping.
|
|
219
|
+
* Closing is quicker than opening — a slow exit reads as lag.
|
|
220
|
+
*/
|
|
221
|
+
--iryx-collapsible-ease: cubic-bezier(0.32, 0.72, 0, 1);
|
|
222
|
+
--animate-collapsible-down: collapsible-down 240ms var(--iryx-collapsible-ease);
|
|
223
|
+
--animate-collapsible-up: collapsible-up 180ms var(--iryx-collapsible-ease);
|
|
224
|
+
/*
|
|
225
|
+
* The rows lift and fade as two animations, not one keyframe set, because
|
|
226
|
+
* they want different curves. On the shared emphasized ease the opacity is
|
|
227
|
+
* already at ~1 within a couple of frames — the fade is technically there and
|
|
228
|
+
* perceptually absent. Its own ease-out, held back briefly so the panel has
|
|
229
|
+
* started moving first, is what makes it read.
|
|
230
|
+
*
|
|
231
|
+
* The fade finishes well before the lift on purpose: the rows are legible for
|
|
232
|
+
* the back half of the unroll, so the motion settles rather than the content
|
|
233
|
+
* still arriving as it stops.
|
|
234
|
+
*
|
|
235
|
+
* `both` matters: the fade is delayed, and without it the rows would paint at
|
|
236
|
+
* full opacity for those first 40ms and then start fading in from visible.
|
|
237
|
+
*/
|
|
238
|
+
--animate-collapsible-content-in:
|
|
239
|
+
collapsible-lift-in 260ms var(--iryx-collapsible-ease),
|
|
240
|
+
collapsible-fade-in 220ms 40ms ease-out both;
|
|
241
|
+
--animate-collapsible-content-out:
|
|
242
|
+
collapsible-fade-out 140ms ease-in both;
|
|
216
243
|
}
|
|
217
244
|
|
|
218
245
|
/* Indeterminate Progress: slide a short bar back and forth across the track. */
|
|
@@ -257,6 +284,60 @@
|
|
|
257
284
|
}
|
|
258
285
|
}
|
|
259
286
|
|
|
287
|
+
/*
|
|
288
|
+
* Collapsible open/close.
|
|
289
|
+
*
|
|
290
|
+
* `height: auto` is not tweenable, so Reka measures the panel and publishes it
|
|
291
|
+
* as --reka-collapsible-content-height; these keyframes animate to that.
|
|
292
|
+
*
|
|
293
|
+
* The height animation has to own the element Reka sets the variable on, and
|
|
294
|
+
* that element must carry no margin, padding or border of its own — margin is
|
|
295
|
+
* not part of the animated height, so it would survive the close as a visible
|
|
296
|
+
* gap under a panel that is supposedly shut. The indent, rule and row spacing
|
|
297
|
+
* live on an inner wrapper instead.
|
|
298
|
+
*/
|
|
299
|
+
@keyframes collapsible-down {
|
|
300
|
+
from {
|
|
301
|
+
height: 0;
|
|
302
|
+
}
|
|
303
|
+
to {
|
|
304
|
+
height: var(--reka-collapsible-content-height);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
@keyframes collapsible-up {
|
|
309
|
+
from {
|
|
310
|
+
height: var(--reka-collapsible-content-height);
|
|
311
|
+
}
|
|
312
|
+
to {
|
|
313
|
+
height: 0;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
/*
|
|
318
|
+
* The rows lift into place while the panel unrolls, so they arrive under their
|
|
319
|
+
* own steam rather than being uncovered by a moving mask. This animates the
|
|
320
|
+
* independent `translate` property, not `transform`, so it cannot compose with
|
|
321
|
+
* a transform an app puts on the same element.
|
|
322
|
+
*/
|
|
323
|
+
@keyframes collapsible-lift-in {
|
|
324
|
+
from {
|
|
325
|
+
translate: 0 -0.5rem;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
@keyframes collapsible-fade-in {
|
|
330
|
+
from {
|
|
331
|
+
opacity: 0;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
@keyframes collapsible-fade-out {
|
|
336
|
+
to {
|
|
337
|
+
opacity: 0;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
|
|
260
341
|
@keyframes toast-in {
|
|
261
342
|
from {
|
|
262
343
|
opacity: 0;
|
|
@@ -325,6 +406,37 @@
|
|
|
325
406
|
}
|
|
326
407
|
}
|
|
327
408
|
|
|
409
|
+
/*
|
|
410
|
+
* Sidebar submenu indent.
|
|
411
|
+
*
|
|
412
|
+
* Two alignments have to hold at once, and both are derived from the parent
|
|
413
|
+
* row's icon column rather than chosen:
|
|
414
|
+
*
|
|
415
|
+
* - the rule sits on the centre of the parent's icon, so it reads as descending
|
|
416
|
+
* from that row instead of floating between columns;
|
|
417
|
+
* - a child's label lands in the same column as its parent's label, so the
|
|
418
|
+
* submenu reads as one list rather than a slightly shifted copy of one.
|
|
419
|
+
*
|
|
420
|
+
* Picked by hand these land a few pixels out, which is worse than either a
|
|
421
|
+
* clean alignment or an obvious indent — it just looks like a mistake. Doing
|
|
422
|
+
* it as arithmetic keeps the two in step if the row metrics ever change.
|
|
423
|
+
*/
|
|
424
|
+
@layer components {
|
|
425
|
+
.iryx-sidebar-submenu {
|
|
426
|
+
/* Mirrors the row: `size-4` icon, `gap-3` to the label, `px-2` inset. */
|
|
427
|
+
--iryx-sidebar-icon: --spacing(4);
|
|
428
|
+
--iryx-sidebar-gap: --spacing(3);
|
|
429
|
+
--iryx-sidebar-inset: --spacing(2);
|
|
430
|
+
|
|
431
|
+
margin-left: calc(var(--iryx-sidebar-inset) + var(--iryx-sidebar-icon) / 2);
|
|
432
|
+
/* The child row contributes its own `px-2`, so that comes back off here. */
|
|
433
|
+
padding-left: calc(
|
|
434
|
+
var(--iryx-sidebar-icon) / 2 + var(--iryx-sidebar-gap) - 1px -
|
|
435
|
+
var(--iryx-sidebar-inset)
|
|
436
|
+
);
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
|
|
328
440
|
/*
|
|
329
441
|
* Drawer drag plumbing.
|
|
330
442
|
*
|
|
@@ -364,3 +476,112 @@
|
|
|
364
476
|
transition-duration: 0ms;
|
|
365
477
|
}
|
|
366
478
|
}
|
|
479
|
+
|
|
480
|
+
|
|
481
|
+
/*
|
|
482
|
+
* `ITable`'s refresh indicator — an indeterminate bar running along the rule
|
|
483
|
+
* between the header and the first row, which is where a table conventionally
|
|
484
|
+
* reports progress. Shown on every load after the first; the initial load has
|
|
485
|
+
* no rows yet and uses skeletons instead.
|
|
486
|
+
*
|
|
487
|
+
* Plain CSS rather than utilities for the same reason as the drawer's drag
|
|
488
|
+
* plumbing: it is a keyframed `background-position` on a pseudo-element, and
|
|
489
|
+
* there is no class name for Tailwind to generate.
|
|
490
|
+
*
|
|
491
|
+
* `position: relative` on `<thead>` is what anchors the bar to the header's own
|
|
492
|
+
* box, so it lands on the divider at any header height and follows the table
|
|
493
|
+
* when it scrolls sideways.
|
|
494
|
+
*/
|
|
495
|
+
@layer components {
|
|
496
|
+
.iryx-table-loading {
|
|
497
|
+
position: relative;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
.iryx-table-loading::after {
|
|
501
|
+
content: "";
|
|
502
|
+
position: absolute;
|
|
503
|
+
inset-inline: 0;
|
|
504
|
+
/* Sits on the header's 1px bottom rule rather than below it. */
|
|
505
|
+
bottom: -1px;
|
|
506
|
+
height: 2px;
|
|
507
|
+
background-image: linear-gradient(
|
|
508
|
+
90deg,
|
|
509
|
+
transparent 0%,
|
|
510
|
+
var(--iryx-primary) 50%,
|
|
511
|
+
transparent 100%
|
|
512
|
+
);
|
|
513
|
+
background-repeat: no-repeat;
|
|
514
|
+
background-size: 40% 100%;
|
|
515
|
+
animation: iryx-table-loading 1.3s ease-in-out infinite;
|
|
516
|
+
pointer-events: none;
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
@keyframes iryx-table-loading {
|
|
520
|
+
from {
|
|
521
|
+
background-position: -40% 0;
|
|
522
|
+
}
|
|
523
|
+
to {
|
|
524
|
+
background-position: 140% 0;
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
/*
|
|
529
|
+
* `animation: none` is safe here, unlike on the dialog and drawer: nothing
|
|
530
|
+
* waits on `animationend`, so removing the animation cannot strand a Presence
|
|
531
|
+
* unmount. A steady rule still reports "busy" without the motion.
|
|
532
|
+
*/
|
|
533
|
+
@media (prefers-reduced-motion: reduce) {
|
|
534
|
+
.iryx-table-loading::after {
|
|
535
|
+
animation: none !important;
|
|
536
|
+
background-image: none;
|
|
537
|
+
background-color: color-mix(in oklab, var(--iryx-primary) 50%, transparent);
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
/*
|
|
543
|
+
* Reduced motion.
|
|
544
|
+
*
|
|
545
|
+
* A reader who has asked their OS to reduce motion has asked for it once, for
|
|
546
|
+
* everything — so this is a blanket rule rather than a per-component prop.
|
|
547
|
+
* It lives in `theme.css`, which an app opts into by importing, and it takes
|
|
548
|
+
* effect only under that explicit preference.
|
|
549
|
+
*
|
|
550
|
+
* **Near-zero durations, never `animation: none`.** Reka's `Presence` unmounts
|
|
551
|
+
* a dialog, drawer, popover or toast when its exit animation raises
|
|
552
|
+
* `animationend`. Remove the animation outright and that event never fires, so
|
|
553
|
+
* the element stays mounted forever and the overlay can never be closed twice.
|
|
554
|
+
* `0.01ms` finishes imperceptibly *and* still fires the event.
|
|
555
|
+
*
|
|
556
|
+
* `animation-iteration-count: 1` stops an infinite loop from repainting
|
|
557
|
+
* forever at 0.01ms a cycle. The two loaders that rely on looping are handled
|
|
558
|
+
* below, because "run once instantly" would park them where their last
|
|
559
|
+
* keyframe leaves them — which for the indeterminate progress bar is off the
|
|
560
|
+
* end of its own track.
|
|
561
|
+
*/
|
|
562
|
+
@media (prefers-reduced-motion: reduce) {
|
|
563
|
+
*,
|
|
564
|
+
*::before,
|
|
565
|
+
*::after {
|
|
566
|
+
animation-duration: 0.01ms !important;
|
|
567
|
+
animation-delay: 0.01ms !important;
|
|
568
|
+
animation-iteration-count: 1 !important;
|
|
569
|
+
transition-duration: 0.01ms !important;
|
|
570
|
+
transition-delay: 0s !important;
|
|
571
|
+
scroll-behavior: auto !important;
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
/*
|
|
575
|
+
* The indeterminate progress bar travels from -100% to 300%, so running it
|
|
576
|
+
* once and stopping leaves the indicator outside the track and the component
|
|
577
|
+
* reads as empty. Parked at the start instead: a short static bar still says
|
|
578
|
+
* "working, length unknown", which is the whole message.
|
|
579
|
+
*
|
|
580
|
+
* Safe to remove outright — unlike the overlays above, nothing is waiting on
|
|
581
|
+
* `animationend` here.
|
|
582
|
+
*/
|
|
583
|
+
.iryx-progress-indeterminate {
|
|
584
|
+
animation: none !important;
|
|
585
|
+
transform: none !important;
|
|
586
|
+
}
|
|
587
|
+
}
|