@editora/ui-core 0.1.25 → 0.2.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 +124 -0
- package/dist/accordion.cjs.js +13 -12
- package/dist/accordion.esm.js +13 -12
- package/dist/alert-dialog.cjs.js +76 -45
- package/dist/alert-dialog.esm.js +179 -135
- package/dist/alert.cjs.js +41 -32
- package/dist/alert.esm.js +79 -70
- package/dist/animated-beam.cjs.js +42 -50
- package/dist/animated-beam.esm.js +47 -55
- package/dist/animated-list.cjs.js +11 -27
- package/dist/animated-list.esm.js +12 -28
- package/dist/animated-text.cjs.js +4 -4
- package/dist/animated-text.esm.js +4 -4
- package/dist/app-header.cjs.js +5 -5
- package/dist/app-header.esm.js +6 -6
- package/dist/aspect-ratio.cjs.js +10 -12
- package/dist/aspect-ratio.esm.js +11 -13
- package/dist/avatar.cjs.js +13 -17
- package/dist/avatar.esm.js +13 -17
- package/dist/badge.cjs.js +27 -22
- package/dist/badge.esm.js +32 -27
- package/dist/block-controls.cjs.js +11 -12
- package/dist/block-controls.esm.js +8 -9
- package/dist/box.cjs.js +2 -3
- package/dist/box.esm.js +2 -3
- package/dist/breadcrumb.cjs.js +12 -18
- package/dist/breadcrumb.esm.js +11 -17
- package/dist/button.cjs.js +1 -1
- package/dist/button.esm.js +1 -1
- package/dist/{calendar-B3PUKHQm.mjs → calendar-DmxiZrR7.mjs} +126 -117
- package/dist/{calendar-D-mXMgqc.js → calendar-o273O28D.js} +53 -44
- package/dist/calendar.cjs.js +1 -1
- package/dist/calendar.esm.js +1 -1
- package/dist/card.cjs.js +6 -7
- package/dist/card.esm.js +5 -6
- package/dist/chart.cjs.js +52 -52
- package/dist/chart.esm.js +95 -95
- package/dist/checkbox.cjs.js +19 -15
- package/dist/checkbox.esm.js +19 -15
- package/dist/collapsible.cjs.js +7 -11
- package/dist/collapsible.esm.js +7 -11
- package/dist/color-picker.cjs.js +36 -17
- package/dist/color-picker.esm.js +132 -113
- package/dist/combobox.cjs.js +57 -54
- package/dist/combobox.esm.js +62 -58
- package/dist/command-palette.cjs.js +1 -0
- package/dist/command-palette.esm.js +1 -0
- package/dist/command.cjs.js +32 -14
- package/dist/command.esm.js +46 -28
- package/dist/components/date-time-utils.d.ts.map +1 -1
- package/dist/components/ui-accordion.d.ts.map +1 -1
- package/dist/components/ui-alert-dialog.d.ts +2 -0
- package/dist/components/ui-alert-dialog.d.ts.map +1 -1
- package/dist/components/ui-alert.d.ts.map +1 -1
- package/dist/components/ui-animated-beam.d.ts.map +1 -1
- package/dist/components/ui-animated-list.d.ts.map +1 -1
- package/dist/components/ui-aspect-ratio.d.ts.map +1 -1
- package/dist/components/ui-avatar.d.ts.map +1 -1
- package/dist/components/ui-badge.d.ts.map +1 -1
- package/dist/components/ui-block-controls.d.ts.map +1 -1
- package/dist/components/ui-box.d.ts.map +1 -1
- package/dist/components/ui-breadcrumb.d.ts.map +1 -1
- package/dist/components/ui-button.d.ts.map +1 -1
- package/dist/components/ui-calendar.d.ts.map +1 -1
- package/dist/components/ui-card.d.ts.map +1 -1
- package/dist/components/ui-checkbox.d.ts.map +1 -1
- package/dist/components/ui-collapsible.d.ts.map +1 -1
- package/dist/components/ui-color-picker.d.ts.map +1 -1
- package/dist/components/ui-combobox.d.ts.map +1 -1
- package/dist/components/ui-command-palette.d.ts.map +1 -1
- package/dist/components/ui-command.d.ts.map +1 -1
- package/dist/components/ui-container.d.ts.map +1 -1
- package/dist/components/ui-context-menu.d.ts.map +1 -1
- package/dist/components/ui-data-table.d.ts +7 -0
- package/dist/components/ui-data-table.d.ts.map +1 -1
- package/dist/components/ui-date-picker.d.ts.map +1 -1
- package/dist/components/ui-date-range-picker.d.ts.map +1 -1
- package/dist/components/ui-date-range-time-picker.d.ts.map +1 -1
- package/dist/components/ui-date-time-picker.d.ts.map +1 -1
- package/dist/components/ui-dialog.d.ts +2 -0
- package/dist/components/ui-dialog.d.ts.map +1 -1
- package/dist/components/ui-dock.d.ts.map +1 -1
- package/dist/components/ui-drawer.d.ts.map +1 -1
- package/dist/components/ui-dropdown.d.ts.map +1 -1
- package/dist/components/ui-empty-state.d.ts.map +1 -1
- package/dist/components/ui-field.d.ts.map +1 -1
- package/dist/components/ui-fieldset.d.ts.map +1 -1
- package/dist/components/ui-file-upload.d.ts.map +1 -1
- package/dist/components/ui-floating-toolbar.d.ts.map +1 -1
- package/dist/components/ui-form.d.ts.map +1 -1
- package/dist/components/ui-icon-cloud.d.ts.map +1 -1
- package/dist/components/ui-inline-edit.d.ts.map +1 -1
- package/dist/components/ui-input.d.ts.map +1 -1
- package/dist/components/ui-marquee.d.ts.map +1 -1
- package/dist/components/ui-menu.d.ts.map +1 -1
- package/dist/components/ui-menubar.d.ts.map +1 -1
- package/dist/components/ui-meter.d.ts.map +1 -1
- package/dist/components/ui-multi-select.d.ts.map +1 -1
- package/dist/components/ui-number-field.d.ts.map +1 -1
- package/dist/components/ui-orbiter.d.ts.map +1 -1
- package/dist/components/ui-pagination.d.ts.map +1 -1
- package/dist/components/ui-password-field.d.ts.map +1 -1
- package/dist/components/ui-pin-input.d.ts.map +1 -1
- package/dist/components/ui-popover.d.ts.map +1 -1
- package/dist/components/ui-progress.d.ts.map +1 -1
- package/dist/components/ui-radio-group.d.ts.map +1 -1
- package/dist/components/ui-radio.d.ts.map +1 -1
- package/dist/components/ui-rating.d.ts +1 -0
- package/dist/components/ui-rating.d.ts.map +1 -1
- package/dist/components/ui-scroll-area.d.ts.map +1 -1
- package/dist/components/ui-section.d.ts.map +1 -1
- package/dist/components/ui-select.d.ts.map +1 -1
- package/dist/components/ui-selection-popup.d.ts.map +1 -1
- package/dist/components/ui-slider.d.ts.map +1 -1
- package/dist/components/ui-sortable.d.ts.map +1 -1
- package/dist/components/ui-spinning-text.d.ts.map +1 -1
- package/dist/components/ui-split-button.d.ts.map +1 -1
- package/dist/components/ui-splitter.d.ts.map +1 -1
- package/dist/components/ui-stepper.d.ts.map +1 -1
- package/dist/components/ui-switch.d.ts.map +1 -1
- package/dist/components/ui-tabs.d.ts.map +1 -1
- package/dist/components/ui-tags-input.d.ts.map +1 -1
- package/dist/components/ui-textarea.d.ts.map +1 -1
- package/dist/components/ui-time-picker.d.ts.map +1 -1
- package/dist/components/ui-toggle-group.d.ts +2 -0
- package/dist/components/ui-toggle-group.d.ts.map +1 -1
- package/dist/components/ui-toggle.d.ts.map +1 -1
- package/dist/components/ui-toolbar.d.ts +2 -0
- package/dist/components/ui-toolbar.d.ts.map +1 -1
- package/dist/components/ui-tooltip.d.ts.map +1 -1
- package/dist/components/ui-transfer-list.d.ts.map +1 -1
- package/dist/components/ui-tree-item.d.ts.map +1 -1
- package/dist/components/ui-tree.d.ts.map +1 -1
- package/dist/components/ui-wizard.d.ts.map +1 -1
- package/dist/container.cjs.js +6 -12
- package/dist/container.esm.js +8 -14
- package/dist/context-menu.cjs.js +8 -8
- package/dist/context-menu.esm.js +42 -41
- package/dist/data-table.cjs.js +18 -15
- package/dist/data-table.esm.js +207 -187
- package/dist/date-field.cjs.js +8 -8
- package/dist/date-field.esm.js +7 -7
- package/dist/date-picker.cjs.js +27 -18
- package/dist/date-picker.esm.js +57 -48
- package/dist/date-range-picker.cjs.js +22 -17
- package/dist/date-range-picker.esm.js +31 -26
- package/dist/date-range-time-picker.cjs.js +26 -19
- package/dist/date-range-time-picker.esm.js +23 -16
- package/dist/date-time-picker.cjs.js +23 -16
- package/dist/date-time-picker.esm.js +88 -81
- package/dist/{date-time-utils-BTlxnz5j.mjs → date-time-utils-B4hAkt36.mjs} +75 -68
- package/dist/date-time-utils-DdigV4hs.js +1 -0
- package/dist/dialog.cjs.js +57 -41
- package/dist/dialog.esm.js +84 -51
- package/dist/dock.cjs.js +16 -30
- package/dist/dock.esm.js +26 -40
- package/dist/drawer.cjs.js +8 -12
- package/dist/drawer.esm.js +6 -10
- package/dist/dropdown.cjs.js +8 -6
- package/dist/dropdown.esm.js +33 -30
- package/dist/empty-state.cjs.js +17 -15
- package/dist/empty-state.esm.js +13 -11
- package/dist/field.cjs.js +22 -13
- package/dist/field.esm.js +54 -45
- package/dist/fieldset.cjs.js +18 -11
- package/dist/fieldset.esm.js +20 -13
- package/dist/file-upload.cjs.js +77 -35
- package/dist/file-upload.esm.js +152 -110
- package/dist/floating-toolbar.cjs.js +6 -7
- package/dist/floating-toolbar.esm.js +8 -9
- package/dist/form.cjs.js +20 -23
- package/dist/form.esm.js +20 -23
- package/dist/gantt.cjs.js +6 -6
- package/dist/gantt.esm.js +6 -6
- package/dist/hover-card.cjs.js +7 -7
- package/dist/hover-card.esm.js +7 -7
- package/dist/icon-cloud.cjs.js +19 -36
- package/dist/icon-cloud.esm.js +41 -58
- package/dist/index.cjs.js +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +108 -104
- package/dist/inline-edit.cjs.js +47 -19
- package/dist/inline-edit.esm.js +66 -38
- package/dist/input.cjs.js +44 -37
- package/dist/input.esm.js +59 -52
- package/dist/layout.cjs.js +3 -3
- package/dist/layout.esm.js +3 -3
- package/dist/marquee.cjs.js +7 -10
- package/dist/marquee.esm.js +7 -10
- package/dist/menu.cjs.js +8 -24
- package/dist/menu.esm.js +52 -72
- package/dist/menubar.cjs.js +9 -31
- package/dist/menubar.esm.js +127 -153
- package/dist/meter.cjs.js +4 -9
- package/dist/meter.esm.js +6 -11
- package/dist/multi-select.cjs.js +48 -35
- package/dist/multi-select.esm.js +67 -53
- package/dist/navigation-menu.cjs.js +10 -10
- package/dist/navigation-menu.esm.js +33 -33
- package/dist/number-field.cjs.js +27 -16
- package/dist/number-field.esm.js +36 -25
- package/dist/odometer.cjs.js +5 -5
- package/dist/odometer.esm.js +3 -3
- package/dist/orbiter.cjs.js +11 -28
- package/dist/orbiter.esm.js +28 -45
- package/dist/overlay-motion-B56x1GoY.js +49 -0
- package/dist/overlay-motion-BX3dPLay.mjs +120 -0
- package/dist/pagination.cjs.js +28 -25
- package/dist/pagination.esm.js +54 -51
- package/dist/password-field.cjs.js +38 -33
- package/dist/password-field.esm.js +62 -57
- package/dist/pin-input.cjs.js +17 -13
- package/dist/pin-input.esm.js +23 -19
- package/dist/plugin-panel.cjs.js +1 -1
- package/dist/plugin-panel.esm.js +1 -1
- package/dist/popover.cjs.js +16 -28
- package/dist/popover.esm.js +29 -45
- package/dist/portal-DeaM1tYY.mjs +121 -0
- package/dist/portal-XbYR3m_q.js +1 -0
- package/dist/portal.d.ts +3 -1
- package/dist/portal.d.ts.map +1 -1
- package/dist/{positioner-D0VGxtYU.mjs → positioner-BE8Nbho2.mjs} +5 -3
- package/dist/{positioner-D_fqyx_j.js → positioner-DZ1FW6A9.js} +1 -1
- package/dist/positioner.cjs.js +1 -1
- package/dist/positioner.esm.js +1 -1
- package/dist/primitives/overlay-motion.d.ts +47 -0
- package/dist/primitives/overlay-motion.d.ts.map +1 -0
- package/dist/primitives/positioner.d.ts.map +1 -1
- package/dist/progress.cjs.js +11 -16
- package/dist/progress.esm.js +37 -42
- package/dist/quick-actions.cjs.js +13 -13
- package/dist/quick-actions.esm.js +11 -11
- package/dist/radio-group.cjs.js +50 -26
- package/dist/radio-group.esm.js +53 -29
- package/dist/radio.cjs.js +15 -12
- package/dist/radio.esm.js +15 -12
- package/dist/rating.cjs.js +11 -15
- package/dist/rating.esm.js +48 -50
- package/dist/{runtime-CFnK53iC.mjs → runtime-CQM6wZOc.mjs} +498 -514
- package/dist/runtime-DxCl0A5q.js +5 -0
- package/dist/runtime.cjs.js +1 -1
- package/dist/runtime.d.ts +3 -2
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.esm.js +36 -32
- package/dist/scroll-area.cjs.js +3 -4
- package/dist/scroll-area.esm.js +3 -4
- package/dist/section.cjs.js +2 -4
- package/dist/section.esm.js +2 -4
- package/dist/select.cjs.js +40 -73
- package/dist/select.esm.js +55 -87
- package/dist/selection-popup.cjs.js +3 -4
- package/dist/selection-popup.esm.js +3 -4
- package/dist/semantic-tokens.d.ts +17 -0
- package/dist/semantic-tokens.d.ts.map +1 -0
- package/dist/sidebar.cjs.js +22 -22
- package/dist/sidebar.esm.js +25 -25
- package/dist/skeleton.cjs.js +2 -2
- package/dist/skeleton.esm.js +2 -2
- package/dist/slider.cjs.js +22 -26
- package/dist/slider.esm.js +25 -29
- package/dist/sortable.cjs.js +4 -5
- package/dist/sortable.esm.js +4 -5
- package/dist/spinning-text.cjs.js +4 -13
- package/dist/spinning-text.esm.js +4 -13
- package/dist/split-button.cjs.js +5 -5
- package/dist/split-button.esm.js +15 -14
- package/dist/splitter.cjs.js +52 -10
- package/dist/splitter.esm.js +55 -13
- package/dist/stepper.cjs.js +31 -65
- package/dist/stepper.esm.js +32 -66
- package/dist/switch.cjs.js +20 -22
- package/dist/switch.esm.js +20 -22
- package/dist/table.cjs.js +5 -5
- package/dist/table.esm.js +20 -20
- package/dist/tabs.cjs.js +91 -21
- package/dist/tabs.esm.js +182 -112
- package/dist/tags-input.cjs.js +41 -15
- package/dist/tags-input.esm.js +73 -47
- package/dist/textarea.cjs.js +32 -33
- package/dist/textarea.esm.js +38 -39
- package/dist/theme.d.ts +25 -1
- package/dist/theme.d.ts.map +1 -1
- package/dist/time-field.cjs.js +7 -7
- package/dist/time-field.esm.js +6 -6
- package/dist/time-picker.cjs.js +16 -13
- package/dist/time-picker.esm.js +27 -24
- package/dist/timeline.cjs.js +10 -10
- package/dist/timeline.esm.js +7 -7
- package/dist/toggle-group.cjs.js +13 -13
- package/dist/toggle-group.esm.js +66 -61
- package/dist/toggle.cjs.js +52 -34
- package/dist/toggle.esm.js +80 -62
- package/dist/toolbar.cjs.js +14 -14
- package/dist/toolbar.esm.js +41 -33
- package/dist/tooltip.cjs.js +3 -3
- package/dist/tooltip.esm.js +39 -33
- package/dist/transfer-list.cjs.js +28 -29
- package/dist/transfer-list.esm.js +28 -29
- package/dist/{tree-B_oQput6.mjs → tree-33fVNnaf.mjs} +6 -5
- package/dist/{tree-SivHxcAy.js → tree-Dc02MChE.js} +6 -5
- package/dist/tree-item.cjs.js +9 -8
- package/dist/tree-item.esm.js +13 -12
- package/dist/tree.cjs.js +1 -1
- package/dist/tree.esm.js +1 -1
- package/dist/{ui-button-Co8Sid6t.mjs → ui-button-C3OmI7Sn.mjs} +152 -154
- package/dist/{ui-button-BPrzJScZ.js → ui-button-CnLwXBnx.js} +107 -109
- package/dist/wizard.cjs.js +39 -36
- package/dist/wizard.esm.js +39 -36
- package/package.json +1 -1
- package/dist/date-time-utils-y3AvNvGe.js +0 -1
- package/dist/portal-DgpQ3Jo1.js +0 -1
- package/dist/portal-bR42gHvG.mjs +0 -118
- package/dist/runtime-DwE-tizc.js +0 -1
package/dist/dialog.esm.js
CHANGED
|
@@ -2,7 +2,8 @@ import { E as z } from "./ElementBase-BeZT54Hj.mjs";
|
|
|
2
2
|
import { a as B, r as I } from "./scroll-lock-LfqXXqsu.mjs";
|
|
3
3
|
import { c as M } from "./dismissable-layer-BmPIoK80.mjs";
|
|
4
4
|
import { c as R } from "./focus-scope-CmEsG5UZ.mjs";
|
|
5
|
-
|
|
5
|
+
import { l as P, c as W } from "./overlay-motion-BX3dPLay.mjs";
|
|
6
|
+
const H = `
|
|
6
7
|
:host {
|
|
7
8
|
position: fixed;
|
|
8
9
|
inset: 0;
|
|
@@ -13,17 +14,13 @@ const W = `
|
|
|
13
14
|
color-scheme: light dark;
|
|
14
15
|
--ui-dialog-backdrop: color-mix(in srgb, #020617 58%, transparent);
|
|
15
16
|
--ui-dialog-backdrop-filter: none;
|
|
16
|
-
--ui-dialog-bg:
|
|
17
|
-
180deg,
|
|
18
|
-
color-mix(in srgb, var(--ui-color-surface, #ffffff) 98%, transparent) 0%,
|
|
19
|
-
color-mix(in srgb, var(--ui-color-surface-elevated, #f8fafc) 24%, var(--ui-color-surface, #ffffff)) 100%
|
|
20
|
-
);
|
|
17
|
+
--ui-dialog-bg: var(--color-panel-solid, var(--ui-color-surface-elevated, var(--ui-color-surface, #ffffff)));
|
|
21
18
|
--ui-dialog-color: var(--ui-color-text, #0f172a);
|
|
22
19
|
--ui-dialog-muted: var(--ui-color-muted, #526175);
|
|
23
|
-
--ui-dialog-border-color: color-mix(in srgb, var(--ui-color-border, #cbd5e1) 70%, transparent);
|
|
20
|
+
--ui-dialog-border-color: var(--ui-color-line-subtle, color-mix(in srgb, var(--ui-color-border, #cbd5e1) 70%, transparent));
|
|
24
21
|
--ui-dialog-border: 1px solid var(--ui-dialog-border-color);
|
|
25
|
-
--ui-dialog-shadow:
|
|
26
|
-
--ui-dialog-radius:
|
|
22
|
+
--ui-dialog-shadow: var(--shadow-6, 0 24px 60px rgba(2, 6, 23, 0.28));
|
|
23
|
+
--ui-dialog-radius: calc(var(--ui-radius, 6px) * 2);
|
|
27
24
|
--ui-dialog-padding-x: 24px;
|
|
28
25
|
--ui-dialog-padding-y: 20px;
|
|
29
26
|
--ui-dialog-width: min(560px, calc(100vw - 24px));
|
|
@@ -72,18 +69,21 @@ const W = `
|
|
|
72
69
|
background: var(--ui-dialog-backdrop);
|
|
73
70
|
-webkit-backdrop-filter: var(--ui-dialog-backdrop-filter);
|
|
74
71
|
backdrop-filter: var(--ui-dialog-backdrop-filter);
|
|
75
|
-
|
|
76
|
-
|
|
72
|
+
/* The overlay goes to the top layer (popover); undo the popover user-agent box. */
|
|
73
|
+
inline-size: 100%;
|
|
74
|
+
block-size: 100%;
|
|
75
|
+
max-inline-size: none;
|
|
76
|
+
max-block-size: none;
|
|
77
|
+
margin: 0;
|
|
78
|
+
border: 0;
|
|
79
|
+
overflow: visible;
|
|
80
|
+
color: inherit;
|
|
77
81
|
}
|
|
78
82
|
|
|
79
83
|
.overlay[hidden] {
|
|
80
84
|
display: none;
|
|
81
85
|
}
|
|
82
86
|
|
|
83
|
-
.overlay[data-open='true'] {
|
|
84
|
-
opacity: 1;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
87
|
.panel {
|
|
88
88
|
position: relative;
|
|
89
89
|
z-index: var(--ui-dialog-z);
|
|
@@ -97,20 +97,39 @@ const W = `
|
|
|
97
97
|
color: var(--ui-dialog-color);
|
|
98
98
|
box-shadow: var(--ui-dialog-shadow);
|
|
99
99
|
padding: var(--ui-dialog-padding-y) var(--ui-dialog-padding-x);
|
|
100
|
-
transform: translate3d(0, 12px, 0) scale(0.985);
|
|
101
|
-
opacity: 0;
|
|
102
100
|
transition:
|
|
103
|
-
transform var(--ui-dialog-duration) var(--ui-dialog-easing),
|
|
104
|
-
opacity var(--ui-dialog-duration) var(--ui-dialog-easing),
|
|
105
101
|
border-color var(--ui-dialog-duration) var(--ui-dialog-easing),
|
|
106
102
|
box-shadow var(--ui-dialog-duration) var(--ui-dialog-easing);
|
|
107
|
-
will-change: transform, opacity;
|
|
108
103
|
backface-visibility: hidden;
|
|
109
104
|
}
|
|
110
105
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
106
|
+
/* Open and close are animations on data-state: a transition cannot run out of display: none. */
|
|
107
|
+
.overlay[data-state='open']:not([data-instant]) {
|
|
108
|
+
animation: ui-dialog-backdrop-in var(--ui-dialog-in-duration, 150ms) ease-out backwards;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.overlay[data-state='open']:not([data-instant]) .panel {
|
|
112
|
+
animation: ui-dialog-panel-in var(--ui-dialog-in-duration, 150ms) var(--ui-motion-enter-easing, cubic-bezier(0.16, 1, 0.3, 1)) backwards;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.overlay[data-state='closed'] {
|
|
116
|
+
animation: ui-dialog-backdrop-out var(--ui-dialog-out-duration, 100ms) ease-in both;
|
|
117
|
+
pointer-events: none;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.overlay[data-state='closed'] .panel {
|
|
121
|
+
animation: ui-dialog-panel-out var(--ui-dialog-out-duration, 100ms) var(--ui-motion-exit-easing, cubic-bezier(0.4, 0, 1, 1)) both;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
@keyframes ui-dialog-backdrop-in { from { opacity: 0; } to { opacity: 1; } }
|
|
125
|
+
@keyframes ui-dialog-backdrop-out { from { opacity: 1; } to { opacity: 0; } }
|
|
126
|
+
@keyframes ui-dialog-panel-in {
|
|
127
|
+
from { opacity: 0; transform: translate3d(0, 8px, 0) scale(0.96); }
|
|
128
|
+
to { opacity: 1; transform: translate3d(0, 0, 0) scale(1); }
|
|
129
|
+
}
|
|
130
|
+
@keyframes ui-dialog-panel-out {
|
|
131
|
+
from { opacity: 1; transform: translate3d(0, 0, 0) scale(1); }
|
|
132
|
+
to { opacity: 0; transform: translate3d(0, 8px, 0) scale(0.96); }
|
|
114
133
|
}
|
|
115
134
|
|
|
116
135
|
:host([state='error']) .panel {
|
|
@@ -199,8 +218,6 @@ const W = `
|
|
|
199
218
|
|
|
200
219
|
.footer {
|
|
201
220
|
margin-top: 20px;
|
|
202
|
-
padding-top: 16px;
|
|
203
|
-
border-top: 1px solid color-mix(in srgb, var(--ui-dialog-border-color) 82%, transparent);
|
|
204
221
|
display: flex;
|
|
205
222
|
align-items: center;
|
|
206
223
|
justify-content: flex-end;
|
|
@@ -280,7 +297,7 @@ const W = `
|
|
|
280
297
|
}
|
|
281
298
|
|
|
282
299
|
.error[data-empty='true'] {
|
|
283
|
-
|
|
300
|
+
display: none;
|
|
284
301
|
}
|
|
285
302
|
|
|
286
303
|
:host([state='loading']) .btn,
|
|
@@ -376,8 +393,8 @@ const W = `
|
|
|
376
393
|
box-shadow: none;
|
|
377
394
|
}
|
|
378
395
|
}
|
|
379
|
-
`,
|
|
380
|
-
function
|
|
396
|
+
`, K = 'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])';
|
|
397
|
+
function p(n, t) {
|
|
381
398
|
if (n == null) return t;
|
|
382
399
|
const i = n.trim().toLowerCase();
|
|
383
400
|
return i !== "false" && i !== "0" && i !== "off";
|
|
@@ -385,18 +402,18 @@ function g(n, t) {
|
|
|
385
402
|
function a(n) {
|
|
386
403
|
return n.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
387
404
|
}
|
|
388
|
-
function
|
|
405
|
+
function C() {
|
|
389
406
|
return typeof window < "u" && typeof document < "u";
|
|
390
407
|
}
|
|
391
|
-
function
|
|
408
|
+
function S(n) {
|
|
392
409
|
return window.setTimeout(n, 16);
|
|
393
410
|
}
|
|
394
|
-
function
|
|
411
|
+
function g(n) {
|
|
395
412
|
n && window.clearTimeout(n);
|
|
396
413
|
}
|
|
397
414
|
const l = class l extends z {
|
|
398
415
|
constructor() {
|
|
399
|
-
super(), this._isActive = !1, this._uid = Math.random().toString(36).slice(2, 10), this._dialogId = this._uid, this._lastFocused = null, this._terminalEmitted = !1, this._closeMeta = null, this._runtimeError = "", this._config = {}, this._dismissableLayer = null, this._focusScope = null, this._disconnectCleanupFrame = 0, this._restoreFocusFrame = 0, this._onClick = this._onClick.bind(this), this._onKeyDown = this._onKeyDown.bind(this), this._onFocusIn = this._onFocusIn.bind(this), this._onSubmit = this._onSubmit.bind(this);
|
|
416
|
+
super(), this._isActive = !1, this._uid = Math.random().toString(36).slice(2, 10), this._dialogId = this._uid, this._lastFocused = null, this._terminalEmitted = !1, this._closeMeta = null, this._runtimeError = "", this._config = {}, this._dismissableLayer = null, this._focusScope = null, this._disconnectCleanupFrame = 0, this._restoreFocusFrame = 0, this._presented = !1, this._finishClose = null, this._onClick = this._onClick.bind(this), this._onKeyDown = this._onKeyDown.bind(this), this._onFocusIn = this._onFocusIn.bind(this), this._onSubmit = this._onSubmit.bind(this);
|
|
400
417
|
}
|
|
401
418
|
static get observedAttributes() {
|
|
402
419
|
return [
|
|
@@ -424,10 +441,10 @@ const l = class l extends z {
|
|
|
424
441
|
];
|
|
425
442
|
}
|
|
426
443
|
connectedCallback() {
|
|
427
|
-
this._disconnectCleanupFrame && (
|
|
444
|
+
this._disconnectCleanupFrame && (g(this._disconnectCleanupFrame), this._disconnectCleanupFrame = 0), super.connectedCallback(), this.root.addEventListener("click", this._onClick), this.root.addEventListener("keydown", this._onKeyDown), this.addEventListener("submit", this._onSubmit), this._syncFromAttributes(), this._syncOpenState();
|
|
428
445
|
}
|
|
429
446
|
disconnectedCallback() {
|
|
430
|
-
this.root.removeEventListener("click", this._onClick), this.root.removeEventListener("keydown", this._onKeyDown), this.removeEventListener("submit", this._onSubmit), this._disconnectCleanupFrame &&
|
|
447
|
+
this.root.removeEventListener("click", this._onClick), this.root.removeEventListener("keydown", this._onKeyDown), this.removeEventListener("submit", this._onSubmit), this._disconnectCleanupFrame && g(this._disconnectCleanupFrame), this._restoreFocusFrame && (g(this._restoreFocusFrame), this._restoreFocusFrame = 0), this._disconnectCleanupFrame = S(() => {
|
|
431
448
|
this._disconnectCleanupFrame = 0, !this.isConnected && (this._isActive && !this._terminalEmitted ? this.close("dismiss", "unmount") : (this._destroyRuntimeControllers(), this._deactivate()), super.disconnectedCallback());
|
|
432
449
|
});
|
|
433
450
|
}
|
|
@@ -447,25 +464,25 @@ const l = class l extends z {
|
|
|
447
464
|
t ? this.setAttribute("open", "") : this.close("dismiss", "programmatic");
|
|
448
465
|
}
|
|
449
466
|
get dismissible() {
|
|
450
|
-
return
|
|
467
|
+
return p(this.getAttribute("dismissible") ?? this.getAttribute("closable"), !0);
|
|
451
468
|
}
|
|
452
469
|
set dismissible(t) {
|
|
453
470
|
this.setAttribute("dismissible", String(t)), this.setAttribute("closable", String(t));
|
|
454
471
|
}
|
|
455
472
|
get closeOnOverlay() {
|
|
456
|
-
return
|
|
473
|
+
return p(this.getAttribute("close-on-overlay") ?? this.getAttribute("close-on-backdrop"), !0);
|
|
457
474
|
}
|
|
458
475
|
set closeOnOverlay(t) {
|
|
459
476
|
this.setAttribute("close-on-overlay", String(t)), this.setAttribute("close-on-backdrop", String(t));
|
|
460
477
|
}
|
|
461
478
|
get closeOnEsc() {
|
|
462
|
-
return
|
|
479
|
+
return p(this.getAttribute("close-on-esc"), !0);
|
|
463
480
|
}
|
|
464
481
|
set closeOnEsc(t) {
|
|
465
482
|
this.setAttribute("close-on-esc", String(t));
|
|
466
483
|
}
|
|
467
484
|
get lockWhileLoading() {
|
|
468
|
-
return
|
|
485
|
+
return p(this.getAttribute("lock-while-loading"), !0);
|
|
469
486
|
}
|
|
470
487
|
set lockWhileLoading(t) {
|
|
471
488
|
this.setAttribute("lock-while-loading", String(t));
|
|
@@ -574,7 +591,7 @@ const l = class l extends z {
|
|
|
574
591
|
}), this.dispatchEvent(new CustomEvent("hide", { bubbles: !0, composed: !0 })), this._terminalEmitted = !0, this._closeMeta = null;
|
|
575
592
|
}
|
|
576
593
|
const i = this._lastFocused;
|
|
577
|
-
this._lastFocused = null, i && this._canRestoreFocus(i) && (this._restoreFocusFrame &&
|
|
594
|
+
this._lastFocused = null, i && this._canRestoreFocus(i) && (this._restoreFocusFrame && g(this._restoreFocusFrame), this._restoreFocusFrame = S(() => {
|
|
578
595
|
this._restoreFocusFrame = 0;
|
|
579
596
|
try {
|
|
580
597
|
this._canRestoreFocus(i) && i.focus();
|
|
@@ -608,14 +625,14 @@ const l = class l extends z {
|
|
|
608
625
|
}
|
|
609
626
|
_canRestoreFocus(t) {
|
|
610
627
|
if (!t || !t.isConnected || t.disabled || t.getAttribute("aria-hidden") === "true") return !1;
|
|
611
|
-
if (!
|
|
628
|
+
if (!C()) return !0;
|
|
612
629
|
const i = window.getComputedStyle(t);
|
|
613
630
|
return i.display !== "none" && i.visibility !== "hidden";
|
|
614
631
|
}
|
|
615
632
|
_collectFocusable(t) {
|
|
616
|
-
return Array.from(t.querySelectorAll(
|
|
633
|
+
return Array.from(t.querySelectorAll(K)).filter((i) => {
|
|
617
634
|
if (i.disabled || i.getAttribute("aria-hidden") === "true") return !1;
|
|
618
|
-
const s =
|
|
635
|
+
const s = C() ? window.getComputedStyle(i) : null;
|
|
619
636
|
return !(s && (s.display === "none" || s.visibility === "hidden"));
|
|
620
637
|
});
|
|
621
638
|
}
|
|
@@ -649,7 +666,23 @@ const l = class l extends z {
|
|
|
649
666
|
}
|
|
650
667
|
_syncOpenUi() {
|
|
651
668
|
const t = this.root.querySelector(".overlay"), i = this._queryPanel(), e = this.open;
|
|
652
|
-
!t || !i
|
|
669
|
+
if (!(!t || !i)) {
|
|
670
|
+
if (t.setAttribute("aria-hidden", e ? "false" : "true"), i.setAttribute("aria-hidden", e ? "false" : "true"), t.setAttribute("data-open", String(e)), e) {
|
|
671
|
+
this._finishClose?.(), this._finishClose = null, t.hidden = !1, t.setAttribute("data-state", "open"), this._presented || t.removeAttribute("data-instant"), this._presented = !0, this.hasAttribute("headless") || P(t, { resetBox: !1 });
|
|
672
|
+
return;
|
|
673
|
+
}
|
|
674
|
+
if (this._presented && !t.hidden) {
|
|
675
|
+
this._presented = !1, t.removeAttribute("data-instant"), this._finishClose = W(t, () => {
|
|
676
|
+
this._finishClose = null, t.hidden = !0;
|
|
677
|
+
try {
|
|
678
|
+
t.matches(":popover-open") && t.hidePopover();
|
|
679
|
+
} catch {
|
|
680
|
+
}
|
|
681
|
+
});
|
|
682
|
+
return;
|
|
683
|
+
}
|
|
684
|
+
this._finishClose || (this._presented = !1, t.setAttribute("data-state", "closed"), t.hidden = !0);
|
|
685
|
+
}
|
|
653
686
|
}
|
|
654
687
|
_syncRuntimeControllers() {
|
|
655
688
|
if (this._destroyRuntimeControllers(), !this.open || !this._isTopMost()) return;
|
|
@@ -763,17 +796,17 @@ const l = class l extends z {
|
|
|
763
796
|
}
|
|
764
797
|
}
|
|
765
798
|
render() {
|
|
766
|
-
const t = this._config.title ?? this.getAttribute("title") ?? "", i = this._config.description ?? this.getAttribute("description") ?? "", e = this._config.submitText ?? this.getAttribute("submit-text") ?? "Submit", s = this._config.cancelText ?? this.getAttribute("cancel-text") ?? "Cancel", o = this._config.loadingText ?? this.getAttribute("loading-text") ?? "Working...", r = t.trim(), h = i.trim(), c = !!this.querySelector('[slot="title"]'), d = !!this.querySelector('[slot="description"]'), f = !!(r || c), m = !!(h || d), E = !!this.querySelector('[slot="content"]'), L = !!this.querySelector('[slot="footer"]'), O = this._config.showCancel ?? !0, $ = this._config.showClose ?? this.dismissible, v = this._runtimeError || this._config.errorMessage || this.getAttribute("error-message") || "", b = this.state === "loading", x = `ui-dialog-title-${this._uid}`,
|
|
767
|
-
w ? u.push(w) : (m && u.push(
|
|
768
|
-
const
|
|
799
|
+
const t = this._config.title ?? this.getAttribute("title") ?? "", i = this._config.description ?? this.getAttribute("description") ?? "", e = this._config.submitText ?? this.getAttribute("submit-text") ?? "Submit", s = this._config.cancelText ?? this.getAttribute("cancel-text") ?? "Cancel", o = this._config.loadingText ?? this.getAttribute("loading-text") ?? "Working...", r = t.trim(), h = i.trim(), c = !!this.querySelector('[slot="title"]'), d = !!this.querySelector('[slot="description"]'), f = !!(r || c), m = !!(h || d), E = !!this.querySelector('[slot="content"]'), L = !!this.querySelector('[slot="footer"]'), O = this._config.showCancel ?? !0, $ = this._config.showClose ?? this.dismissible, v = this._runtimeError || this._config.errorMessage || this.getAttribute("error-message") || "", b = this.state === "loading", x = `ui-dialog-title-${this._uid}`, k = `ui-dialog-description-${this._uid}`, A = `ui-dialog-error-${this._uid}`, T = this.getAttribute("aria-label") || "", D = this.getAttribute("aria-labelledby") || "", w = this.getAttribute("aria-describedby") || "", _ = D || (f ? x : ""), F = T || (_ ? "" : "Dialog"), u = [];
|
|
800
|
+
w ? u.push(w) : (m && u.push(k), v && u.push(A));
|
|
801
|
+
const q = f || m ? `
|
|
769
802
|
<header class="header" part="header">
|
|
770
803
|
${f ? `<h2 id="${x}" class="title" part="title"><slot name="title">${a(r)}</slot></h2>` : ""}
|
|
771
|
-
${m ? `<p id="${
|
|
804
|
+
${m ? `<p id="${k}" class="description" part="description"><slot name="description">${a(h)}</slot></p>` : ""}
|
|
772
805
|
</header>
|
|
773
806
|
` : "";
|
|
774
807
|
this._destroyRuntimeControllers(), this.setContent(`
|
|
775
|
-
${this.hasAttribute("headless") ? "" : `<style>${
|
|
776
|
-
<div class="overlay" part="overlay" data-open="${String(this.open)}" ${this.open ? "" : "hidden"} aria-hidden="${this.open ? "false" : "true"}">
|
|
808
|
+
${this.hasAttribute("headless") ? "" : `<style>${H}</style>`}
|
|
809
|
+
<div class="overlay" part="overlay" data-open="${String(this.open)}" data-state="${this.open ? "open" : "closed"}" ${this.open ? "data-instant" : "hidden"} aria-hidden="${this.open ? "false" : "true"}">
|
|
777
810
|
<section
|
|
778
811
|
class="panel"
|
|
779
812
|
part="panel"
|
|
@@ -791,12 +824,12 @@ const l = class l extends z {
|
|
|
791
824
|
<path d="M12.5 3.5L3.5 12.5"></path>
|
|
792
825
|
</svg>
|
|
793
826
|
</button>` : ""}
|
|
794
|
-
${
|
|
827
|
+
${q}
|
|
795
828
|
<div class="body" part="body">
|
|
796
829
|
${E ? '<slot name="content"></slot>' : "<slot></slot>"}
|
|
797
830
|
</div>
|
|
798
831
|
|
|
799
|
-
<div class="error" id="${
|
|
832
|
+
<div class="error" id="${A}" part="error" aria-live="polite" data-empty="${String(!v)}">${a(v)}</div>
|
|
800
833
|
|
|
801
834
|
<footer class="footer" part="footer">
|
|
802
835
|
${b ? `<span class="loading" part="loading"><span class="spinner" aria-hidden="true"></span><span>${a(o)}</span></span>` : '<span aria-hidden="true"></span>'}
|
package/dist/dock.cjs.js
CHANGED
|
@@ -1,44 +1,30 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const T=require("./ElementBase-DxbvhLJs.js"),F=1.92,C=148,R=1,D=20,
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const T=require("./ElementBase-DxbvhLJs.js"),F=1.92,C=148,R=1,D=20,x=.18,_="12px",k="12px 14px",v="56px",O=56,z={xs:{gap:"8px",padding:"8px 10px",itemSize:40,iconSize:18,itemRadius:14},sm:{gap:"10px",padding:"10px 12px",itemSize:48,iconSize:20,itemRadius:16},md:{gap:_,padding:k,itemSize:56,iconSize:24,itemRadius:18},lg:{gap:"14px",padding:"14px 16px",itemSize:64,iconSize:28,itemRadius:20},xl:{gap:"18px",padding:"16px 20px",itemSize:74,iconSize:32,itemRadius:24}},P={calm:{response:.11,damping:.82,spread:.62,lift:.82},smooth:{response:.16,damping:.78,spread:.82,lift:1},snappy:{response:.22,damping:.74,spread:.92,lift:1.06},bouncy:{response:.24,damping:.66,spread:1,lift:1.12}},E=new Set(["gap","padding","radius","item-size","variant","tone","size","elevation"]),N=new Set(["orientation","magnification","distance","idle-scale","lift","smoothing","animation","gap","padding","item-size"]),I=new Set(["label-mode","label-placement"]),V=new Set(["none","sm","md","lg","full"]),q=`
|
|
2
2
|
:host {
|
|
3
3
|
--ui-dock-gap: ${_};
|
|
4
|
-
--ui-dock-padding: ${
|
|
5
|
-
--ui-dock-radius:
|
|
4
|
+
--ui-dock-padding: ${k};
|
|
5
|
+
--ui-dock-radius: var(--ui-control-radius-4, calc(var(--ui-radius, 6px) + 6px));
|
|
6
6
|
--ui-dock-item-size: ${v};
|
|
7
7
|
--ui-dock-icon-size: 24px;
|
|
8
|
-
--ui-dock-item-radius:
|
|
8
|
+
--ui-dock-item-radius: calc(var(--ui-radius, 6px) + 2px);
|
|
9
9
|
--ui-dock-accent: var(--ui-color-primary, var(--ui-primary, #2563eb));
|
|
10
|
-
--ui-dock-bg:
|
|
11
|
-
linear-gradient(
|
|
12
|
-
180deg,
|
|
13
|
-
color-mix(in srgb, var(--color-panel-solid, var(--ui-color-surface, #ffffff)) 90%, #ffffff 10%),
|
|
14
|
-
color-mix(in srgb, var(--color-panel-solid, var(--ui-color-surface, #ffffff)) 96%, transparent)
|
|
15
|
-
);
|
|
10
|
+
--ui-dock-bg: var(--color-panel-solid, var(--ui-color-surface, #ffffff));
|
|
16
11
|
--ui-dock-color: var(--ui-color-text, var(--ui-text, #0f172a));
|
|
17
|
-
--ui-dock-border-color: color-mix(in srgb,
|
|
12
|
+
--ui-dock-border-color: var(--ui-color-line-subtle, color-mix(in srgb, var(--ui-color-border, #cbd5e1) 76%, transparent));
|
|
18
13
|
--ui-dock-border: 1px solid var(--ui-dock-border-color);
|
|
19
|
-
--ui-dock-shadow:
|
|
20
|
-
0 1px 3px rgba(15, 23, 42, 0.08),
|
|
21
|
-
0 24px 44px rgba(15, 23, 42, 0.14);
|
|
14
|
+
--ui-dock-shadow: var(--shadow-3, none);
|
|
22
15
|
--ui-dock-backdrop: blur(16px) saturate(1.08);
|
|
23
|
-
--ui-dock-item-bg:
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
color-mix(in srgb, var(--ui-dock-accent) 10%, rgba(255, 255, 255, 0.72))
|
|
28
|
-
);
|
|
29
|
-
--ui-dock-item-border: color-mix(in srgb, var(--ui-dock-accent) 16%, rgba(255, 255, 255, 0.72));
|
|
30
|
-
--ui-dock-item-shadow:
|
|
31
|
-
0 1px 2px rgba(15, 23, 42, 0.08),
|
|
32
|
-
0 10px 18px rgba(15, 23, 42, 0.12);
|
|
33
|
-
--ui-dock-item-backdrop: blur(10px) saturate(1.02);
|
|
16
|
+
--ui-dock-item-bg: transparent;
|
|
17
|
+
--ui-dock-item-border: transparent;
|
|
18
|
+
--ui-dock-item-shadow: none;
|
|
19
|
+
--ui-dock-item-backdrop: none;
|
|
34
20
|
--ui-dock-label-bg: rgba(15, 23, 42, 0.92);
|
|
35
21
|
--ui-dock-label-color: #f8fafc;
|
|
36
22
|
--ui-dock-label-border: rgba(255, 255, 255, 0.14);
|
|
37
|
-
--ui-dock-label-shadow: 0
|
|
23
|
+
--ui-dock-label-shadow: var(--shadow-3, 0 8px 16px rgba(2, 6, 23, 0.2));
|
|
38
24
|
--ui-dock-label-padding: 6px 10px;
|
|
39
25
|
--ui-dock-label-font-size: 12px;
|
|
40
26
|
--ui-dock-label-font-weight: 600;
|
|
41
|
-
--ui-dock-label-radius:
|
|
27
|
+
--ui-dock-label-radius: var(--ui-control-radius-2, var(--ui-radius, 6px));
|
|
42
28
|
--ui-dock-label-offset: 12px;
|
|
43
29
|
--ui-dock-label-backdrop: blur(10px) saturate(1.04);
|
|
44
30
|
--ui-dock-focus-ring: var(--ui-color-focus-ring, var(--ui-focus-ring, #2563eb));
|
|
@@ -65,7 +51,7 @@
|
|
|
65
51
|
:host([size="md"]),
|
|
66
52
|
:host([size="2"]) {
|
|
67
53
|
--ui-dock-gap: ${_};
|
|
68
|
-
--ui-dock-padding: ${
|
|
54
|
+
--ui-dock-padding: ${k};
|
|
69
55
|
--ui-dock-item-size: ${v};
|
|
70
56
|
--ui-dock-icon-size: 24px;
|
|
71
57
|
--ui-dock-item-radius: 18px;
|
|
@@ -335,7 +321,7 @@
|
|
|
335
321
|
scroll-behavior: auto;
|
|
336
322
|
}
|
|
337
323
|
}
|
|
338
|
-
`;function g(s,e,t){return Math.min(t,Math.max(e,s))}function
|
|
324
|
+
`;function g(s,e,t){return Math.min(t,Math.max(e,s))}function L(s,e){if(s==null||s.trim()==="")return e;const t=Number(s);return Number.isFinite(t)?t:e}function y(s,e){return Math.max(0,L(s,e))}function U(s,e){return g(L(s,e),.01,1)}function b(s){if(s==null||s.trim()==="")return null;const e=s.trim().split(/\s+/).filter(Boolean);return e.length?e.map(t=>/^-?\d+(\.\d+)?$/.test(t)?`${t}px`:t).join(" "):null}function $(s){return typeof requestAnimationFrame=="function"?requestAnimationFrame(s):window.setTimeout(()=>s(Date.now()),16)}function A(s){if(s!=null){if(typeof cancelAnimationFrame=="function"){cancelAnimationFrame(s);return}window.clearTimeout(s)}}function B(s){return s instanceof HTMLElement}function H(s){return s.hasAttribute("disabled")||s.getAttribute("aria-disabled")==="true"}function j(s){return s.hasAttribute("data-active")||s.getAttribute("aria-current")==="page"||s.getAttribute("aria-current")==="true"}function S(s,e){return s==="top"||s==="bottom"||s==="start"||s==="end"?s:e==="horizontal"?"top":"end"}function w(s,e,t){if(!s.length)return-1;let a=e;for(let n=0;n<s.length;n+=1)if(a=(a+t+s.length)%s.length,!s[a]?.disabled)return a;return-1}class M extends T.ElementBase{constructor(){super(),this._frameEl=null,this._slotEl=null,this._items=[],this._itemNames=new WeakMap,this._resizeObserver=null,this._mutationObserver=null,this._mediaQuery=null,this._raf=null,this._pointerActive=!1,this._pointerCoord=Number.NaN,this._focusedIndex=-1,this._rovingIndex=0,this._reducedMotion=!1,this._handleSlotChange=this._handleSlotChange.bind(this),this._handlePointerMove=this._handlePointerMove.bind(this),this._handlePointerLeave=this._handlePointerLeave.bind(this),this._handleFocusIn=this._handleFocusIn.bind(this),this._handleFocusOut=this._handleFocusOut.bind(this),this._handleKeyDown=this._handleKeyDown.bind(this),this._handleResize=this._handleResize.bind(this),this._handleLightDomMutation=this._handleLightDomMutation.bind(this),this._handleReducedMotionChange=this._handleReducedMotionChange.bind(this)}static get observedAttributes(){return["orientation","magnification","distance","idle-scale","lift","smoothing","animation","gap","padding","item-size","label-mode","label-placement","variant","tone","size","radius","elevation"]}connectedCallback(){super.connectedCallback(),this.hasAttribute("role")||this.setAttribute("role","toolbar"),this._observeLightDom(),this._bindReducedMotion(),this._syncHostStyles(),queueMicrotask(()=>this.refresh())}disconnectedCallback(){if(this._slotEl&&(this._slotEl.removeEventListener("slotchange",this._handleSlotChange),this._slotEl=null),this._frameEl&&(this._frameEl.removeEventListener("pointermove",this._handlePointerMove),this._frameEl.removeEventListener("pointerleave",this._handlePointerLeave),this._frameEl=null),this.removeEventListener("focusin",this._handleFocusIn),this.removeEventListener("focusout",this._handleFocusOut),this.removeEventListener("keydown",this._handleKeyDown),this._resizeObserver?.disconnect(),this._resizeObserver=null,this._mutationObserver?.disconnect(),this._mutationObserver=null,this._mediaQuery){try{this._mediaQuery.removeEventListener("change",this._handleReducedMotionChange)}catch{this._mediaQuery.removeListener(this._handleReducedMotionChange)}this._mediaQuery=null}A(this._raf),this._raf=null,super.disconnectedCallback()}refresh(){this._collectItems(),this._syncHostStyles(),this._measureItems(),this._syncTabIndices(),this._updateTargets(),this._queueAnimation()}focusItem(e){const t=typeof e=="number"?e:this._items.findIndex(a=>a.el.getAttribute("data-value")===String(e));t<0||t>=this._items.length||this._items[t]?.disabled||(this._focusedIndex=t,this._rovingIndex=t,this._syncTabIndices(),this._items[t]?.el.focus(),this._pointerActive=!1,this._pointerCoord=Number.NaN,this._updateTargets(),this._queueAnimation())}clearActive(){this._pointerActive=!1,this._pointerCoord=Number.NaN,this._focusedIndex=-1,this._updateTargets(),this._queueAnimation()}attributeChangedCallback(e,t,a){!e||t===a||!this.isConnected||(E.has(e)&&this._syncHostStyles(),I.has(e)&&this._syncItemChrome(),(N.has(e)||I.has(e)||E.has(e))&&this.refresh())}shouldRenderOnAttributeChange(){return!1}render(){this.setContent(`
|
|
339
325
|
<style>${q}</style>
|
|
340
326
|
<div class="root" part="root">
|
|
341
327
|
<div class="frame" part="frame">
|
|
@@ -344,4 +330,4 @@
|
|
|
344
330
|
</div>
|
|
345
331
|
</div>
|
|
346
332
|
</div>
|
|
347
|
-
`),this._bindElements(),this._syncHostStyles(),this.refresh()}_bindElements(){const e=this.root.querySelector(".frame");e&&e!==this._frameEl&&(this._frameEl&&(this._frameEl.removeEventListener("pointermove",this._handlePointerMove),this._frameEl.removeEventListener("pointerleave",this._handlePointerLeave)),e.addEventListener("pointermove",this._handlePointerMove),e.addEventListener("pointerleave",this._handlePointerLeave),this._frameEl=e);const t=this.root.querySelector("slot");t&&t!==this._slotEl&&(this._slotEl&&this._slotEl.removeEventListener("slotchange",this._handleSlotChange),t.addEventListener("slotchange",this._handleSlotChange),this._slotEl=t),this.removeEventListener("focusin",this._handleFocusIn),this.removeEventListener("focusout",this._handleFocusOut),this.removeEventListener("keydown",this._handleKeyDown),this.addEventListener("focusin",this._handleFocusIn),this.addEventListener("focusout",this._handleFocusOut),this.addEventListener("keydown",this._handleKeyDown),this._ensureResizeObserver()}_observeLightDom(){this._mutationObserver||typeof MutationObserver>"u"||(this._mutationObserver=new MutationObserver(this._handleLightDomMutation),this._mutationObserver.observe(this,{childList:!0,subtree:!0,characterData:!0}))}_ensureResizeObserver(){this._resizeObserver||typeof ResizeObserver>"u"||(this._resizeObserver=new ResizeObserver(this._handleResize),this._resizeObserver.observe(this))}_bindReducedMotion(){if(typeof window>"u"||typeof window.matchMedia!="function")return;const e=window.matchMedia("(prefers-reduced-motion: reduce)");this._reducedMotion=e.matches,this._mediaQuery=e;try{e.addEventListener("change",this._handleReducedMotionChange)}catch{e.addListener(this._handleReducedMotionChange)}}_handleReducedMotionChange(e){this._reducedMotion=e.matches,this.refresh()}_handleSlotChange(){this.refresh()}_handleLightDomMutation(){this.refresh()}_handleResize(){this._measureItems(),this._updateTargets(),this._queueAnimation()}_handlePointerMove(e){if("pointerType"in e&&e.pointerType==="touch"||!this._frameEl)return;const t=this._frameEl.getBoundingClientRect(),n=this._orientation()==="horizontal"?e.clientX-t.left:e.clientY-t.top;this._pointerActive=!0,this._pointerCoord=n,this._measureItems(),this._updateTargets(),this._queueAnimation()}_handlePointerLeave(){this._pointerActive=!1,this._pointerCoord=Number.NaN,this._updateTargets(),this._queueAnimation()}_handleFocusIn(e){const t=e.target?.closest?.("[data-ui-dock-item]");if(!t)return;const a=this._items.findIndex(n=>n.el===t);a<0||(this._focusedIndex=a,this._rovingIndex=a,this._syncTabIndices(),this._pointerActive=!1,this._pointerCoord=Number.NaN,this._updateTargets(),this._queueAnimation())}_handleFocusOut(e){const t=e.relatedTarget;t&&this.contains(t)||(this._focusedIndex=-1,this._pointerActive||(this._updateTargets(),this._queueAnimation()))}_handleKeyDown(e){if(e.defaultPrevented||!this._items.length)return;const t=this._orientation(),a=t==="horizontal"?["ArrowLeft"]:["ArrowUp"],n=t==="horizontal"?["ArrowRight"]:["ArrowDown"];if(a.includes(e.key)){e.preventDefault();const i=L(this._items,this._rovingIndex,-1);i>=0&&this.focusItem(i);return}if(n.includes(e.key)){e.preventDefault();const i=L(this._items,this._rovingIndex,1);i>=0&&this.focusItem(i);return}if(e.key==="Home"){e.preventDefault();const i=this._items.findIndex(c=>!c.disabled);i>=0&&this.focusItem(i);return}if(e.key==="End"){e.preventDefault();for(let i=this._items.length-1;i>=0;i-=1)if(!this._items[i]?.disabled){this.focusItem(i);break}return}e.key==="Escape"&&this.clearActive()}_collectItems(){const e=new Map(this._items.map(n=>[n.el,n])),t=Array.from(this.children).filter(B).map(n=>{const i=e.get(n),c=n.querySelector("[data-ui-dock-icon]"),o=n.querySelector("[data-ui-dock-label]"),l=n.querySelector("[data-ui-dock-badge]");return{el:n,iconEl:c,labelEl:o,badgeEl:l,center:i?.center??0,currentScale:i?.currentScale??this._idleScale(),targetScale:i?.targetScale??this._idleScale(),currentLift:i?.currentLift??0,targetLift:i?.targetLift??0,labelVisible:i?.labelVisible??!1,disabled:H(n),sticky:j(n),scaleVelocity:i?.scaleVelocity??0,liftVelocity:i?.liftVelocity??0}});this._items=t;const a=this._items.findIndex(n=>n.sticky&&!n.disabled);a>=0?this._rovingIndex=a:(!this._items[this._rovingIndex]||this._items[this._rovingIndex]?.disabled)&&(this._rovingIndex=this._items.findIndex(n=>!n.disabled)),this._rovingIndex<0&&(this._rovingIndex=0),(this._focusedIndex>=this._items.length||this._items[this._focusedIndex]?.disabled)&&(this._focusedIndex=-1),this._syncItemChrome()}_syncItemChrome(){const e=S(this.getAttribute("label-placement"),this._orientation()),t=this._labelMode(),a=this._orientation();this._items.forEach(n=>{const{el:i,iconEl:c,labelEl:o,badgeEl:l,sticky:h}=n;i.setAttribute("data-ui-dock-item",""),i.style.setProperty("position","relative"),i.style.setProperty("display","inline-flex"),i.style.setProperty("align-items","center"),i.style.setProperty("justify-content","center"),i.style.setProperty("inline-size","var(--ui-dock-item-size)"),i.style.setProperty("block-size","var(--ui-dock-item-size)"),i.style.setProperty("min-inline-size","var(--ui-dock-item-size)"),i.style.setProperty("min-block-size","var(--ui-dock-item-size)"),i.style.setProperty("flex","0 0 var(--ui-dock-item-size)"),i.style.setProperty("box-sizing","border-box"),i.style.setProperty("background","transparent"),i.style.setProperty("border","none"),i.style.setProperty("padding","0"),i.style.setProperty("margin","0"),i.style.setProperty("color","inherit"),i.style.setProperty("text-decoration","none"),i.style.setProperty("outline","none"),i.style.setProperty("cursor",n.disabled?"not-allowed":"pointer"),i.style.setProperty("transform-origin",a==="horizontal"?"center bottom":"center center"),i.style.setProperty("touch-action","manipulation"),i.hasAttribute("tabindex")||(i.tabIndex=-1);const r=i.getAttribute("aria-label"),d=this._itemNames.get(i),u=d&&d.composed===r?d.base:r||o?.textContent?.trim()||i.getAttribute("data-label")||i.getAttribute("title")||"",m=l?.textContent?.trim()??"",f=u&&m&&!u.includes(m)?`${u}, ${m}`:u;f&&(f!==r&&i.setAttribute("aria-label",f),this._itemNames.set(i,{base:u,composed:f})),h?i.setAttribute("data-dock-current","true"):i.removeAttribute("data-dock-current"),c&&(c.style.setProperty("display","inline-flex"),c.style.setProperty("align-items","center"),c.style.setProperty("justify-content","center"),c.style.setProperty("inline-size","100%"),c.style.setProperty("block-size","100%"),c.style.setProperty("border-radius","var(--ui-dock-item-radius)"),c.style.setProperty("background","var(--ui-dock-item-bg)"),c.style.setProperty("border","1px solid var(--ui-dock-item-border)"),c.style.setProperty("box-shadow","var(--ui-dock-item-shadow)"),c.style.setProperty("backdrop-filter","var(--ui-dock-item-backdrop)"),c.style.setProperty("font-size","var(--ui-dock-icon-size)"),c.style.setProperty("color","inherit"),c.style.setProperty("overflow","hidden"),c.style.setProperty("box-sizing","border-box")),o&&(o.setAttribute("aria-hidden","true"),o.style.setProperty("position","absolute"),o.style.setProperty("pointer-events","none"),o.style.setProperty("white-space","nowrap"),o.style.setProperty("padding","var(--ui-dock-label-padding)"),o.style.setProperty("border-radius","var(--ui-dock-label-radius)"),o.style.setProperty("background","var(--ui-dock-label-bg)"),o.style.setProperty("color","var(--ui-dock-label-color)"),o.style.setProperty("border","1px solid var(--ui-dock-label-border)"),o.style.setProperty("box-shadow","var(--ui-dock-label-shadow)"),o.style.setProperty("backdrop-filter","var(--ui-dock-label-backdrop)"),o.style.setProperty("font-size","var(--ui-dock-label-font-size)"),o.style.setProperty("font-weight","var(--ui-dock-label-font-weight)"),o.style.setProperty("line-height","1.2"),o.style.setProperty("letter-spacing","0.01em"),o.style.setProperty("min-inline-size","max-content"),o.style.setProperty("z-index","3"),o.style.setProperty("display",t==="none"?"none":"inline-flex"),o.style.removeProperty("top"),o.style.removeProperty("bottom"),o.style.removeProperty("left"),o.style.removeProperty("right"),e==="top"?(o.style.setProperty("left","50%"),o.style.setProperty("bottom","calc(100% + var(--ui-dock-label-offset))")):e==="bottom"?(o.style.setProperty("left","50%"),o.style.setProperty("top","calc(100% + var(--ui-dock-label-offset))")):e==="start"?(o.style.setProperty("right","calc(100% + var(--ui-dock-label-offset))"),o.style.setProperty("top","50%")):(o.style.setProperty("left","calc(100% + var(--ui-dock-label-offset))"),o.style.setProperty("top","50%"))),l&&(l.setAttribute("aria-hidden","true"),l.style.setProperty("position","absolute"),l.style.setProperty("inset-inline-end","-2px"),l.style.setProperty("inset-block-start","-2px"),l.style.setProperty("display","inline-flex"),l.style.setProperty("align-items","center"),l.style.setProperty("justify-content","center"),l.style.setProperty("min-inline-size","18px"),l.style.setProperty("min-block-size","18px"),l.style.setProperty("padding","0 6px"),l.style.setProperty("border-radius","999px"),l.style.setProperty("background","var(--ui-dock-accent)"),l.style.setProperty("color","#ffffff"),l.style.setProperty("font-size","11px"),l.style.setProperty("font-weight","700"),l.style.setProperty("box-shadow","0 8px 18px color-mix(in srgb, var(--ui-dock-accent) 32%, rgba(15, 23, 42, 0.18))"),l.style.setProperty("z-index","4"))})}_syncTabIndices(){const e=this._items.findIndex(t=>!t.disabled);e>=0&&(this._rovingIndex<0||this._items[this._rovingIndex]?.disabled)&&(this._rovingIndex=e),this._items.forEach((t,a)=>{if(t.disabled){t.el.tabIndex=-1;return}t.el.tabIndex=a===this._rovingIndex?0:-1})}_measureItems(){if(!this._frameEl)return;const e=this._frameEl.getBoundingClientRect(),t=this._orientation(),a=t==="horizontal"?e.left:e.top;this._items.forEach(n=>{const i=n.el.getBoundingClientRect();n.center=(t==="horizontal"?i.left+i.width/2:i.top+i.height/2)-a})}_updateTargets(){const e=this._idleScale(),t=Math.max(e,this._magnification()),a=Math.max(1,this._distance()),n=this._lift()*this._motion().lift,i=this._labelMode();this._items.forEach((c,o)=>{let l=e;if(c.sticky&&(l=Math.max(l,e+(t-e)*.08)),this._pointerActive&&Number.isFinite(this._pointerCoord)){const r=Math.abs(this._pointerCoord-c.center),d=g(1-r/a,0,1);l=Math.max(l,e+(t-e)*d*d)}o===this._focusedIndex&&(l=Math.max(l,t)),c.disabled&&(l=e);const h=t===e?0:(l-e)/(t-e);c.targetScale=g(l,e,t),c.targetLift=h*n,c.labelVisible=i==="always"||i!=="none"&&(o===this._focusedIndex||h>.18)}),this._updateRuntimeState()}_applyFrame(e=!1){const t=this._smoothing(),a=this._motion(),n=g(a.response+t*.12,.05,.42),i=g(a.damping+(t-k)*.14,.52,.9),c=this._orientation(),o=S(this.getAttribute("label-placement"),c),l=this._mainAxisOffsets(a.spread);let h=!1;this._items.forEach((r,d)=>{e?(r.currentScale=r.targetScale,r.currentLift=r.targetLift,r.scaleVelocity=0,r.liftVelocity=0):(r.scaleVelocity=r.scaleVelocity*i+(r.targetScale-r.currentScale)*n,r.liftVelocity=r.liftVelocity*i+(r.targetLift-r.currentLift)*n,r.currentScale+=r.scaleVelocity,r.currentLift+=r.liftVelocity,Math.abs(r.targetScale-r.currentScale)<.002&&Math.abs(r.scaleVelocity)<.002&&(r.currentScale=r.targetScale,r.scaleVelocity=0),Math.abs(r.targetLift-r.currentLift)<.002&&Math.abs(r.liftVelocity)<.002&&(r.currentLift=r.targetLift,r.liftVelocity=0)),(Math.abs(r.targetScale-r.currentScale)>=.002||Math.abs(r.targetLift-r.currentLift)>=.002||Math.abs(r.scaleVelocity)>=.002||Math.abs(r.liftVelocity)>=.002)&&(h=!0);const u=l[d]??0,m=c==="horizontal"?u:o==="start"?-r.currentLift*.28:r.currentLift*.28,f=c==="horizontal"?-r.currentLift:u;if(r.el.style.setProperty("transform",`translate3d(${m}px, ${f}px, 0) scale(${r.currentScale})`),r.el.style.setProperty("z-index",String(100+Math.round(r.currentScale*100)+d)),r.iconEl){const p=d===this._focusedIndex?"0 0 0 3px color-mix(in srgb, var(--ui-dock-focus-ring) 26%, transparent), ":r.sticky?"0 0 0 2px color-mix(in srgb, var(--ui-dock-accent) 22%, transparent), ":"";r.iconEl.style.setProperty("box-shadow",`${p}var(--ui-dock-item-shadow)`),r.iconEl.style.setProperty("border-color",r.sticky||d===this._focusedIndex?"color-mix(in srgb, var(--ui-dock-accent) 30%, var(--ui-dock-item-border))":"var(--ui-dock-item-border)")}if(r.labelEl){const p=r.labelVisible;r.labelEl.style.setProperty("opacity",p?"1":"0"),r.labelEl.style.setProperty("visibility",p?"visible":"hidden"),r.labelEl.style.setProperty("transform",this._labelTransform(o,p)),r.labelEl.style.setProperty("filter",p?"blur(0px)":"blur(6px)")}}),h&&this._queueAnimation()}_queueAnimation(){if(this._reducedMotion){A(this._raf),this._raf=null,this._applyFrame(!0);return}this._raf==null&&(this._raf=$(()=>{this._raf=null,this._applyFrame(!1)}))}_mainAxisOffsets(e){if(this._items.length<2)return this._items.map(()=>0);const t=this._resolvedItemSizePx(),a=this._resolvedGapPx(),n=t+a,i=[0];for(let o=1;o<this._items.length;o+=1){const l=this._items[o-1],h=this._items[o],r=t*l.currentScale/2,d=t*h.currentScale/2,u=Math.max(0,r+d-n);i[o]=i[o-1]+u*e}const c=i[i.length-1]/2;return i.map(o=>o-c)}_labelTransform(e,t){return e==="top"?t?"translate3d(-50%, 0, 0)":"translate3d(-50%, 6px, 0)":e==="bottom"?t?"translate3d(-50%, 0, 0)":"translate3d(-50%, -6px, 0)":e==="start"?t?"translate3d(0, -50%, 0)":"translate3d(6px, -50%, 0)":t?"translate3d(0, -50%, 0)":"translate3d(-6px, -50%, 0)"}_syncHostStyles(){const e=b(this.getAttribute("gap"));e?this.style.setProperty("--ui-dock-gap",e):this.style.removeProperty("--ui-dock-gap");const t=b(this.getAttribute("padding"));t?this.style.setProperty("--ui-dock-padding",t):this.style.removeProperty("--ui-dock-padding");const a=b(this.getAttribute("item-size"));a?(this.style.setProperty("--ui-dock-item-size",a),this.style.setProperty("--ui-dock-icon-size",`calc(${a} * 0.44)`)):(this.style.removeProperty("--ui-dock-item-size"),this.style.removeProperty("--ui-dock-icon-size"));const n=this.getAttribute("radius");if(n&&!V.has(n)){const i=b(n)||n;this.style.setProperty("--ui-dock-radius",i),this.style.setProperty("--ui-dock-item-radius",`calc(${i} * 0.82)`)}else this.style.removeProperty("--ui-dock-radius"),this.style.removeProperty("--ui-dock-item-radius")}_orientation(){return this.getAttribute("orientation")==="vertical"?"vertical":"horizontal"}_motion(){const e=this.getAttribute("animation");return e==="calm"||e==="snappy"||e==="bouncy"?P[e]:P.smooth}_labelMode(){const e=this.getAttribute("label-mode");return e==="always"||e==="none"?e:"hover"}_magnification(){return Math.max(this._idleScale(),y(this.getAttribute("magnification"),F))}_distance(){return y(this.getAttribute("distance"),C)}_idleScale(){return Math.max(.5,y(this.getAttribute("idle-scale"),R))}_lift(){return y(this.getAttribute("lift"),D)}_smoothing(){return U(this.getAttribute("smoothing"),k)}_sizeToken(){const e=this.getAttribute("size");return e==="xs"||e==="0"?"xs":e==="sm"||e==="1"?"sm":e==="lg"||e==="3"?"lg":e==="xl"||e==="4"?"xl":"md"}_resolvedItemSizePx(){const e=b(this.getAttribute("item-size"));if(e){const t=Number.parseFloat(e);if(Number.isFinite(t))return t}return z[this._sizeToken()]?.itemSize??O}_resolvedGapPx(){const e=b(this.getAttribute("gap"));if(e){const a=Number.parseFloat(e);if(Number.isFinite(a))return a}const t=z[this._sizeToken()];return t?Number.parseFloat(t.gap):Number.parseFloat(_)}_updateRuntimeState(){const e=this._focusedIndex>=0?"keyboard":this._pointerActive?"pointer":"idle";this.setAttribute("data-state",e)}}typeof customElements<"u"&&!customElements.get("ui-dock")&&customElements.define("ui-dock",M);exports.UIDock=M;
|
|
333
|
+
`),this._bindElements(),this._syncHostStyles(),this.refresh()}_bindElements(){const e=this.root.querySelector(".frame");e&&e!==this._frameEl&&(this._frameEl&&(this._frameEl.removeEventListener("pointermove",this._handlePointerMove),this._frameEl.removeEventListener("pointerleave",this._handlePointerLeave)),e.addEventListener("pointermove",this._handlePointerMove),e.addEventListener("pointerleave",this._handlePointerLeave),this._frameEl=e);const t=this.root.querySelector("slot");t&&t!==this._slotEl&&(this._slotEl&&this._slotEl.removeEventListener("slotchange",this._handleSlotChange),t.addEventListener("slotchange",this._handleSlotChange),this._slotEl=t),this.removeEventListener("focusin",this._handleFocusIn),this.removeEventListener("focusout",this._handleFocusOut),this.removeEventListener("keydown",this._handleKeyDown),this.addEventListener("focusin",this._handleFocusIn),this.addEventListener("focusout",this._handleFocusOut),this.addEventListener("keydown",this._handleKeyDown),this._ensureResizeObserver()}_observeLightDom(){this._mutationObserver||typeof MutationObserver>"u"||(this._mutationObserver=new MutationObserver(this._handleLightDomMutation),this._mutationObserver.observe(this,{childList:!0,subtree:!0,characterData:!0}))}_ensureResizeObserver(){this._resizeObserver||typeof ResizeObserver>"u"||(this._resizeObserver=new ResizeObserver(this._handleResize),this._resizeObserver.observe(this))}_bindReducedMotion(){if(typeof window>"u"||typeof window.matchMedia!="function")return;const e=window.matchMedia("(prefers-reduced-motion: reduce)");this._reducedMotion=e.matches,this._mediaQuery=e;try{e.addEventListener("change",this._handleReducedMotionChange)}catch{e.addListener(this._handleReducedMotionChange)}}_handleReducedMotionChange(e){this._reducedMotion=e.matches,this.refresh()}_handleSlotChange(){this.refresh()}_handleLightDomMutation(){this.refresh()}_handleResize(){this._measureItems(),this._updateTargets(),this._queueAnimation()}_handlePointerMove(e){if("pointerType"in e&&e.pointerType==="touch"||!this._frameEl)return;const t=this._frameEl.getBoundingClientRect(),n=this._orientation()==="horizontal"?e.clientX-t.left:e.clientY-t.top;this._pointerActive=!0,this._pointerCoord=n,this._measureItems(),this._updateTargets(),this._queueAnimation()}_handlePointerLeave(){this._pointerActive=!1,this._pointerCoord=Number.NaN,this._updateTargets(),this._queueAnimation()}_handleFocusIn(e){const t=e.target?.closest?.("[data-ui-dock-item]");if(!t)return;const a=this._items.findIndex(n=>n.el===t);a<0||(this._focusedIndex=a,this._rovingIndex=a,this._syncTabIndices(),this._pointerActive=!1,this._pointerCoord=Number.NaN,this._updateTargets(),this._queueAnimation())}_handleFocusOut(e){const t=e.relatedTarget;t&&this.contains(t)||(this._focusedIndex=-1,this._pointerActive||(this._updateTargets(),this._queueAnimation()))}_handleKeyDown(e){if(e.defaultPrevented||!this._items.length)return;const t=this._orientation(),a=t==="horizontal"?["ArrowLeft"]:["ArrowUp"],n=t==="horizontal"?["ArrowRight"]:["ArrowDown"];if(a.includes(e.key)){e.preventDefault();const i=w(this._items,this._rovingIndex,-1);i>=0&&this.focusItem(i);return}if(n.includes(e.key)){e.preventDefault();const i=w(this._items,this._rovingIndex,1);i>=0&&this.focusItem(i);return}if(e.key==="Home"){e.preventDefault();const i=this._items.findIndex(c=>!c.disabled);i>=0&&this.focusItem(i);return}if(e.key==="End"){e.preventDefault();for(let i=this._items.length-1;i>=0;i-=1)if(!this._items[i]?.disabled){this.focusItem(i);break}return}e.key==="Escape"&&this.clearActive()}_collectItems(){const e=new Map(this._items.map(n=>[n.el,n])),t=Array.from(this.children).filter(B).map(n=>{const i=e.get(n),c=n.querySelector("[data-ui-dock-icon]"),o=n.querySelector("[data-ui-dock-label]"),l=n.querySelector("[data-ui-dock-badge]");return{el:n,iconEl:c,labelEl:o,badgeEl:l,center:i?.center??0,currentScale:i?.currentScale??this._idleScale(),targetScale:i?.targetScale??this._idleScale(),currentLift:i?.currentLift??0,targetLift:i?.targetLift??0,labelVisible:i?.labelVisible??!1,disabled:H(n),sticky:j(n),scaleVelocity:i?.scaleVelocity??0,liftVelocity:i?.liftVelocity??0}});this._items=t;const a=this._items.findIndex(n=>n.sticky&&!n.disabled);a>=0?this._rovingIndex=a:(!this._items[this._rovingIndex]||this._items[this._rovingIndex]?.disabled)&&(this._rovingIndex=this._items.findIndex(n=>!n.disabled)),this._rovingIndex<0&&(this._rovingIndex=0),(this._focusedIndex>=this._items.length||this._items[this._focusedIndex]?.disabled)&&(this._focusedIndex=-1),this._syncItemChrome()}_syncItemChrome(){const e=S(this.getAttribute("label-placement"),this._orientation()),t=this._labelMode(),a=this._orientation();this._items.forEach(n=>{const{el:i,iconEl:c,labelEl:o,badgeEl:l,sticky:h}=n;i.setAttribute("data-ui-dock-item",""),i.style.setProperty("position","relative"),i.style.setProperty("display","inline-flex"),i.style.setProperty("align-items","center"),i.style.setProperty("justify-content","center"),i.style.setProperty("inline-size","var(--ui-dock-item-size)"),i.style.setProperty("block-size","var(--ui-dock-item-size)"),i.style.setProperty("min-inline-size","var(--ui-dock-item-size)"),i.style.setProperty("min-block-size","var(--ui-dock-item-size)"),i.style.setProperty("flex","0 0 var(--ui-dock-item-size)"),i.style.setProperty("box-sizing","border-box"),i.style.setProperty("background","transparent"),i.style.setProperty("border","none"),i.style.setProperty("padding","0"),i.style.setProperty("margin","0"),i.style.setProperty("color","inherit"),i.style.setProperty("text-decoration","none"),i.style.setProperty("outline","none"),i.style.setProperty("cursor",n.disabled?"not-allowed":"pointer"),i.style.setProperty("transform-origin",a==="horizontal"?"center bottom":"center center"),i.style.setProperty("touch-action","manipulation"),i.hasAttribute("tabindex")||(i.tabIndex=-1);const r=i.getAttribute("aria-label"),d=this._itemNames.get(i),u=d&&d.composed===r?d.base:r||o?.textContent?.trim()||i.getAttribute("data-label")||i.getAttribute("title")||"",m=l?.textContent?.trim()??"",f=u&&m&&!u.includes(m)?`${u}, ${m}`:u;f&&(f!==r&&i.setAttribute("aria-label",f),this._itemNames.set(i,{base:u,composed:f})),h?i.setAttribute("data-dock-current","true"):i.removeAttribute("data-dock-current"),c&&(c.style.setProperty("display","inline-flex"),c.style.setProperty("align-items","center"),c.style.setProperty("justify-content","center"),c.style.setProperty("inline-size","100%"),c.style.setProperty("block-size","100%"),c.style.setProperty("border-radius","var(--ui-dock-item-radius)"),c.style.setProperty("background","var(--ui-dock-item-bg)"),c.style.setProperty("border","1px solid var(--ui-dock-item-border)"),c.style.setProperty("box-shadow","var(--ui-dock-item-shadow)"),c.style.setProperty("backdrop-filter","var(--ui-dock-item-backdrop)"),c.style.setProperty("font-size","var(--ui-dock-icon-size)"),c.style.setProperty("color","inherit"),c.style.setProperty("overflow","hidden"),c.style.setProperty("box-sizing","border-box")),o&&(o.setAttribute("aria-hidden","true"),o.style.setProperty("position","absolute"),o.style.setProperty("pointer-events","none"),o.style.setProperty("white-space","nowrap"),o.style.setProperty("padding","var(--ui-dock-label-padding)"),o.style.setProperty("border-radius","var(--ui-dock-label-radius)"),o.style.setProperty("background","var(--ui-dock-label-bg)"),o.style.setProperty("color","var(--ui-dock-label-color)"),o.style.setProperty("border","1px solid var(--ui-dock-label-border)"),o.style.setProperty("box-shadow","var(--ui-dock-label-shadow)"),o.style.setProperty("backdrop-filter","var(--ui-dock-label-backdrop)"),o.style.setProperty("font-size","var(--ui-dock-label-font-size)"),o.style.setProperty("font-weight","var(--ui-dock-label-font-weight)"),o.style.setProperty("line-height","1.2"),o.style.setProperty("letter-spacing","0.01em"),o.style.setProperty("min-inline-size","max-content"),o.style.setProperty("z-index","3"),o.style.setProperty("display",t==="none"?"none":"inline-flex"),o.style.removeProperty("top"),o.style.removeProperty("bottom"),o.style.removeProperty("left"),o.style.removeProperty("right"),e==="top"?(o.style.setProperty("left","50%"),o.style.setProperty("bottom","calc(100% + var(--ui-dock-label-offset))")):e==="bottom"?(o.style.setProperty("left","50%"),o.style.setProperty("top","calc(100% + var(--ui-dock-label-offset))")):e==="start"?(o.style.setProperty("right","calc(100% + var(--ui-dock-label-offset))"),o.style.setProperty("top","50%")):(o.style.setProperty("left","calc(100% + var(--ui-dock-label-offset))"),o.style.setProperty("top","50%"))),l&&(l.setAttribute("aria-hidden","true"),l.style.setProperty("position","absolute"),l.style.setProperty("inset-inline-end","-2px"),l.style.setProperty("inset-block-start","-2px"),l.style.setProperty("display","inline-flex"),l.style.setProperty("align-items","center"),l.style.setProperty("justify-content","center"),l.style.setProperty("min-inline-size","18px"),l.style.setProperty("min-block-size","18px"),l.style.setProperty("padding","0 6px"),l.style.setProperty("border-radius","999px"),l.style.setProperty("background","var(--ui-dock-accent)"),l.style.setProperty("color","#ffffff"),l.style.setProperty("font-size","11px"),l.style.setProperty("font-weight","700"),l.style.setProperty("box-shadow","none"),l.style.setProperty("z-index","4"))})}_syncTabIndices(){const e=this._items.findIndex(t=>!t.disabled);e>=0&&(this._rovingIndex<0||this._items[this._rovingIndex]?.disabled)&&(this._rovingIndex=e),this._items.forEach((t,a)=>{if(t.disabled){t.el.tabIndex=-1;return}t.el.tabIndex=a===this._rovingIndex?0:-1})}_measureItems(){if(!this._frameEl)return;const e=this._frameEl.getBoundingClientRect(),t=this._orientation(),a=t==="horizontal"?e.left:e.top;this._items.forEach(n=>{const i=n.el.getBoundingClientRect();n.center=(t==="horizontal"?i.left+i.width/2:i.top+i.height/2)-a})}_updateTargets(){const e=this._idleScale(),t=Math.max(e,this._magnification()),a=Math.max(1,this._distance()),n=this._lift()*this._motion().lift,i=this._labelMode();this._items.forEach((c,o)=>{let l=e;if(c.sticky&&(l=Math.max(l,e+(t-e)*.08)),this._pointerActive&&Number.isFinite(this._pointerCoord)){const r=Math.abs(this._pointerCoord-c.center),d=g(1-r/a,0,1);l=Math.max(l,e+(t-e)*d*d)}o===this._focusedIndex&&(l=Math.max(l,t)),c.disabled&&(l=e);const h=t===e?0:(l-e)/(t-e);c.targetScale=g(l,e,t),c.targetLift=h*n,c.labelVisible=i==="always"||i!=="none"&&(o===this._focusedIndex||h>.18)}),this._updateRuntimeState()}_applyFrame(e=!1){const t=this._smoothing(),a=this._motion(),n=g(a.response+t*.12,.05,.42),i=g(a.damping+(t-x)*.14,.52,.9),c=this._orientation(),o=S(this.getAttribute("label-placement"),c),l=this._mainAxisOffsets(a.spread);let h=!1;this._items.forEach((r,d)=>{e?(r.currentScale=r.targetScale,r.currentLift=r.targetLift,r.scaleVelocity=0,r.liftVelocity=0):(r.scaleVelocity=r.scaleVelocity*i+(r.targetScale-r.currentScale)*n,r.liftVelocity=r.liftVelocity*i+(r.targetLift-r.currentLift)*n,r.currentScale+=r.scaleVelocity,r.currentLift+=r.liftVelocity,Math.abs(r.targetScale-r.currentScale)<.002&&Math.abs(r.scaleVelocity)<.002&&(r.currentScale=r.targetScale,r.scaleVelocity=0),Math.abs(r.targetLift-r.currentLift)<.002&&Math.abs(r.liftVelocity)<.002&&(r.currentLift=r.targetLift,r.liftVelocity=0)),(Math.abs(r.targetScale-r.currentScale)>=.002||Math.abs(r.targetLift-r.currentLift)>=.002||Math.abs(r.scaleVelocity)>=.002||Math.abs(r.liftVelocity)>=.002)&&(h=!0);const u=l[d]??0,m=c==="horizontal"?u:o==="start"?-r.currentLift*.28:r.currentLift*.28,f=c==="horizontal"?-r.currentLift:u;if(r.el.style.setProperty("transform",`translate3d(${m}px, ${f}px, 0) scale(${r.currentScale})`),r.el.style.setProperty("z-index",String(100+Math.round(r.currentScale*100)+d)),r.iconEl){const p=d===this._focusedIndex?"0 0 0 2px var(--ui-ring-color, var(--ui-dock-focus-ring)), ":r.sticky?"0 0 0 2px color-mix(in srgb, var(--ui-dock-accent) 22%, transparent), ":"";r.iconEl.style.setProperty("box-shadow",`${p}var(--ui-dock-item-shadow)`),r.iconEl.style.setProperty("border-color",r.sticky||d===this._focusedIndex?"color-mix(in srgb, var(--ui-dock-accent) 55%, transparent)":"var(--ui-dock-item-border)")}if(r.labelEl){const p=r.labelVisible;r.labelEl.style.setProperty("opacity",p?"1":"0"),r.labelEl.style.setProperty("visibility",p?"visible":"hidden"),r.labelEl.style.setProperty("transform",this._labelTransform(o,p)),r.labelEl.style.setProperty("filter",p?"blur(0px)":"blur(6px)")}}),h&&this._queueAnimation()}_queueAnimation(){if(this._reducedMotion){A(this._raf),this._raf=null,this._applyFrame(!0);return}this._raf==null&&(this._raf=$(()=>{this._raf=null,this._applyFrame(!1)}))}_mainAxisOffsets(e){if(this._items.length<2)return this._items.map(()=>0);const t=this._resolvedItemSizePx(),a=this._resolvedGapPx(),n=t+a,i=[0];for(let o=1;o<this._items.length;o+=1){const l=this._items[o-1],h=this._items[o],r=t*l.currentScale/2,d=t*h.currentScale/2,u=Math.max(0,r+d-n);i[o]=i[o-1]+u*e}const c=i[i.length-1]/2;return i.map(o=>o-c)}_labelTransform(e,t){return e==="top"?t?"translate3d(-50%, 0, 0)":"translate3d(-50%, 6px, 0)":e==="bottom"?t?"translate3d(-50%, 0, 0)":"translate3d(-50%, -6px, 0)":e==="start"?t?"translate3d(0, -50%, 0)":"translate3d(6px, -50%, 0)":t?"translate3d(0, -50%, 0)":"translate3d(-6px, -50%, 0)"}_syncHostStyles(){const e=b(this.getAttribute("gap"));e?this.style.setProperty("--ui-dock-gap",e):this.style.removeProperty("--ui-dock-gap");const t=b(this.getAttribute("padding"));t?this.style.setProperty("--ui-dock-padding",t):this.style.removeProperty("--ui-dock-padding");const a=b(this.getAttribute("item-size"));a?(this.style.setProperty("--ui-dock-item-size",a),this.style.setProperty("--ui-dock-icon-size",`calc(${a} * 0.44)`)):(this.style.removeProperty("--ui-dock-item-size"),this.style.removeProperty("--ui-dock-icon-size"));const n=this.getAttribute("radius");if(n&&!V.has(n)){const i=b(n)||n;this.style.setProperty("--ui-dock-radius",i),this.style.setProperty("--ui-dock-item-radius",`calc(${i} * 0.82)`)}else this.style.removeProperty("--ui-dock-radius"),this.style.removeProperty("--ui-dock-item-radius")}_orientation(){return this.getAttribute("orientation")==="vertical"?"vertical":"horizontal"}_motion(){const e=this.getAttribute("animation");return e==="calm"||e==="snappy"||e==="bouncy"?P[e]:P.smooth}_labelMode(){const e=this.getAttribute("label-mode");return e==="always"||e==="none"?e:"hover"}_magnification(){return Math.max(this._idleScale(),y(this.getAttribute("magnification"),F))}_distance(){return y(this.getAttribute("distance"),C)}_idleScale(){return Math.max(.5,y(this.getAttribute("idle-scale"),R))}_lift(){return y(this.getAttribute("lift"),D)}_smoothing(){return U(this.getAttribute("smoothing"),x)}_sizeToken(){const e=this.getAttribute("size");return e==="xs"||e==="0"?"xs":e==="sm"||e==="1"?"sm":e==="lg"||e==="3"?"lg":e==="xl"||e==="4"?"xl":"md"}_resolvedItemSizePx(){const e=b(this.getAttribute("item-size"));if(e){const t=Number.parseFloat(e);if(Number.isFinite(t))return t}return z[this._sizeToken()]?.itemSize??O}_resolvedGapPx(){const e=b(this.getAttribute("gap"));if(e){const a=Number.parseFloat(e);if(Number.isFinite(a))return a}const t=z[this._sizeToken()];return t?Number.parseFloat(t.gap):Number.parseFloat(_)}_updateRuntimeState(){const e=this._focusedIndex>=0?"keyboard":this._pointerActive?"pointer":"idle";this.setAttribute("data-state",e)}}typeof customElements<"u"&&!customElements.get("ui-dock")&&customElements.define("ui-dock",M);exports.UIDock=M;
|