@editora/ui-core 0.1.25 → 0.2.1
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 +132 -0
- package/dist/accordion.cjs.js +13 -12
- package/dist/accordion.esm.js +13 -12
- package/dist/alert-dialog.cjs.js +92 -53
- package/dist/alert-dialog.esm.js +211 -159
- package/dist/alert.cjs.js +42 -33
- package/dist/alert.esm.js +80 -71
- 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 +9 -9
- package/dist/animated-text.esm.js +9 -9
- package/dist/app-header.cjs.js +17 -12
- package/dist/app-header.esm.js +18 -13
- package/dist/aspect-ratio.cjs.js +10 -12
- package/dist/aspect-ratio.esm.js +11 -13
- package/dist/avatar.cjs.js +16 -20
- package/dist/avatar.esm.js +16 -20
- 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-D-mXMgqc.js → calendar-CzpWDxLc.js} +56 -46
- package/dist/{calendar-B3PUKHQm.mjs → calendar-DkSDFg33.mjs} +127 -117
- 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 +58 -52
- package/dist/chart.esm.js +101 -95
- package/dist/checkbox.cjs.js +19 -15
- package/dist/checkbox.esm.js +19 -15
- package/dist/collapsible.cjs.js +9 -13
- package/dist/collapsible.esm.js +9 -13
- package/dist/color-picker.cjs.js +38 -19
- package/dist/color-picker.esm.js +134 -115
- package/dist/combobox.cjs.js +60 -57
- package/dist/combobox.esm.js +96 -92
- 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-app-header.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-chart.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-gantt.d.ts.map +1 -1
- package/dist/components/ui-hover-card.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-sidebar.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 +21 -18
- package/dist/data-table.esm.js +210 -190
- package/dist/date-field.cjs.js +9 -9
- package/dist/date-field.esm.js +19 -19
- package/dist/date-picker.cjs.js +29 -20
- package/dist/date-picker.esm.js +59 -50
- package/dist/date-range-picker.cjs.js +24 -19
- package/dist/date-range-picker.esm.js +86 -81
- package/dist/date-range-time-picker.cjs.js +27 -20
- package/dist/date-range-time-picker.esm.js +24 -17
- package/dist/date-time-picker.cjs.js +24 -17
- package/dist/date-time-picker.esm.js +89 -82
- package/dist/date-time-utils-C-4eHTyy.js +1 -0
- package/dist/{date-time-utils-BTlxnz5j.mjs → date-time-utils-zAx4ghvC.mjs} +75 -68
- package/dist/description.cjs.js +4 -4
- package/dist/description.esm.js +4 -4
- package/dist/dialog.cjs.js +59 -43
- package/dist/dialog.esm.js +86 -53
- package/dist/direction-provider.cjs.js +1 -1
- package/dist/direction-provider.esm.js +1 -1
- 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-error.cjs.js +1 -1
- package/dist/field-error.esm.js +7 -7
- package/dist/field.cjs.js +23 -14
- package/dist/field.esm.js +30 -21
- package/dist/fieldset.cjs.js +16 -9
- package/dist/fieldset.esm.js +19 -12
- package/dist/file-upload.cjs.js +79 -37
- package/dist/file-upload.esm.js +154 -112
- package/dist/flex.cjs.js +2 -2
- package/dist/flex.esm.js +8 -8
- package/dist/floating-toolbar.cjs.js +6 -7
- package/dist/floating-toolbar.esm.js +8 -9
- package/dist/form.cjs.js +24 -27
- package/dist/form.esm.js +24 -27
- package/dist/gantt.cjs.js +13 -11
- package/dist/gantt.esm.js +13 -11
- package/dist/grid.cjs.js +1 -1
- package/dist/grid.esm.js +1 -1
- package/dist/hover-card.cjs.js +8 -8
- package/dist/hover-card.esm.js +18 -15
- 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 +50 -22
- package/dist/inline-edit.esm.js +77 -49
- package/dist/input.cjs.js +45 -38
- package/dist/input.esm.js +60 -53
- package/dist/label.cjs.js +6 -6
- package/dist/label.esm.js +6 -6
- 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/masonry-grid.cjs.js +2 -2
- package/dist/masonry-grid.esm.js +11 -11
- package/dist/{menu-item-styles-IGSFLAHu.mjs → menu-item-styles-CdqxPUuw.mjs} +15 -15
- package/dist/{menu-item-styles-B4onAr4C.js → menu-item-styles-DUdyjQ7i.js} +10 -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 +53 -40
- package/dist/multi-select.esm.js +87 -73
- package/dist/navigation-menu.cjs.js +10 -10
- package/dist/navigation-menu.esm.js +33 -33
- package/dist/number-field.cjs.js +28 -17
- package/dist/number-field.esm.js +37 -26
- package/dist/number-ticker.cjs.js +4 -4
- package/dist/number-ticker.esm.js +10 -10
- package/dist/odometer.cjs.js +9 -9
- package/dist/odometer.esm.js +17 -17
- 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 +39 -34
- package/dist/password-field.esm.js +63 -58
- package/dist/pin-input.cjs.js +18 -14
- package/dist/pin-input.esm.js +24 -20
- package/dist/placement-grid.cjs.js +1 -1
- package/dist/placement-grid.esm.js +1 -1
- 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.cjs.js +1 -1
- package/dist/portal.d.ts +3 -1
- package/dist/portal.d.ts.map +1 -1
- package/dist/portal.esm.js +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/presence.cjs.js +1 -1
- package/dist/presence.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 +14 -14
- package/dist/quick-actions.esm.js +12 -12
- package/dist/radio-group.cjs.js +50 -26
- package/dist/radio-group.esm.js +53 -29
- package/dist/radio.cjs.js +16 -13
- package/dist/radio.esm.js +16 -13
- package/dist/rating.cjs.js +11 -15
- package/dist/rating.esm.js +48 -50
- package/dist/{runtime-CFnK53iC.mjs → runtime-BRT7E4A8.mjs} +563 -531
- package/dist/runtime-CXw4SGV9.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 +42 -75
- package/dist/select.esm.js +57 -89
- 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/separator.cjs.js +6 -6
- package/dist/separator.esm.js +7 -7
- package/dist/sidebar.cjs.js +29 -28
- package/dist/sidebar.esm.js +32 -31
- 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/slot.cjs.js +1 -1
- package/dist/slot.esm.js +1 -1
- package/dist/sortable.cjs.js +10 -11
- package/dist/sortable.esm.js +10 -11
- package/dist/spinning-text.cjs.js +4 -13
- package/dist/spinning-text.esm.js +4 -13
- package/dist/split-button.cjs.js +7 -7
- package/dist/split-button.esm.js +17 -16
- 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 +101 -26
- package/dist/tabs.esm.js +187 -112
- package/dist/tags-input.cjs.js +43 -17
- package/dist/tags-input.esm.js +75 -49
- package/dist/textarea.cjs.js +34 -35
- package/dist/textarea.esm.js +50 -51
- package/dist/theme.d.ts +25 -1
- package/dist/theme.d.ts.map +1 -1
- package/dist/time-field.cjs.js +8 -8
- package/dist/time-field.esm.js +29 -29
- package/dist/time-picker.cjs.js +17 -14
- package/dist/time-picker.esm.js +28 -25
- package/dist/timeline.cjs.js +10 -10
- package/dist/timeline.esm.js +7 -7
- package/dist/toast.cjs.js +2 -2
- package/dist/toast.esm.js +2 -2
- 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 +37 -38
- package/dist/transfer-list.esm.js +32 -33
- 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 +51 -39
- package/dist/wizard.esm.js +51 -39
- 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/aspect-ratio.esm.js
CHANGED
|
@@ -3,7 +3,7 @@ const c = `
|
|
|
3
3
|
:host {
|
|
4
4
|
display: block;
|
|
5
5
|
width: 100%;
|
|
6
|
-
--ui-aspect-radius: var(--base-aspect-ratio-radius, var(--ui-radius,
|
|
6
|
+
--ui-aspect-radius: var(--base-aspect-ratio-radius, var(--ui-radius, 6px));
|
|
7
7
|
--ui-aspect-border: var(--base-aspect-ratio-border, 1px solid color-mix(in srgb, var(--ui-color-border, rgba(15, 23, 42, 0.14)) 84%, transparent));
|
|
8
8
|
--ui-aspect-bg-base: var(--base-aspect-ratio-bg, var(--color-panel-solid, var(--ui-color-surface, #ffffff)));
|
|
9
9
|
--ui-aspect-bg: var(--ui-aspect-bg-base);
|
|
@@ -24,7 +24,7 @@ const c = `
|
|
|
24
24
|
|
|
25
25
|
:host([size='1']),
|
|
26
26
|
:host([size='sm']) {
|
|
27
|
-
--ui-aspect-radius: max(0px, calc(var(--base-aspect-ratio-radius, var(--ui-radius,
|
|
27
|
+
--ui-aspect-radius: max(0px, calc(var(--base-aspect-ratio-radius, var(--ui-radius, 6px)) - 1px));
|
|
28
28
|
--ui-aspect-title-size: 13px;
|
|
29
29
|
--ui-aspect-title-line-height: 18px;
|
|
30
30
|
--ui-aspect-empty-icon-size: 28px;
|
|
@@ -37,7 +37,7 @@ const c = `
|
|
|
37
37
|
|
|
38
38
|
:host([size='3']),
|
|
39
39
|
:host([size='lg']) {
|
|
40
|
-
--ui-aspect-radius: max(0px, calc(var(--base-aspect-ratio-radius, var(--ui-radius,
|
|
40
|
+
--ui-aspect-radius: max(0px, calc(var(--base-aspect-ratio-radius, var(--ui-radius, 6px)) + 4px));
|
|
41
41
|
--ui-aspect-title-size: 15px;
|
|
42
42
|
--ui-aspect-title-line-height: 22px;
|
|
43
43
|
--ui-aspect-empty-icon-size: 36px;
|
|
@@ -114,10 +114,9 @@ const c = `
|
|
|
114
114
|
position: absolute;
|
|
115
115
|
inset: 0;
|
|
116
116
|
pointer-events: none;
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
opacity: 0.9;
|
|
117
|
+
/* No sheen: the surface is flat. */
|
|
118
|
+
background: none;
|
|
119
|
+
opacity: 0;
|
|
121
120
|
}
|
|
122
121
|
|
|
123
122
|
.surface::after {
|
|
@@ -200,11 +199,11 @@ const c = `
|
|
|
200
199
|
border-radius: var(--ui-aspect-badge-radius);
|
|
201
200
|
padding: 3px 8px;
|
|
202
201
|
font-size: 10px;
|
|
203
|
-
font-weight:
|
|
202
|
+
font-weight: 600;
|
|
204
203
|
letter-spacing: 0.02em;
|
|
205
204
|
text-transform: uppercase;
|
|
206
205
|
line-height: 1.2;
|
|
207
|
-
color: color-mix(in srgb, var(--ui-aspect-accent)
|
|
206
|
+
color: color-mix(in srgb, var(--ui-aspect-accent) 45%, var(--ui-color-text-strong, var(--ui-aspect-color)));
|
|
208
207
|
background: color-mix(in srgb, var(--ui-aspect-accent) 14%, var(--ui-color-surface, #ffffff));
|
|
209
208
|
box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--ui-aspect-accent) 24%, transparent);
|
|
210
209
|
pointer-events: none;
|
|
@@ -230,8 +229,7 @@ const c = `
|
|
|
230
229
|
}
|
|
231
230
|
|
|
232
231
|
:host([interactive]):hover .frame {
|
|
233
|
-
|
|
234
|
-
box-shadow: 0 3px 6px rgba(15, 23, 42, 0.08), 0 22px 42px rgba(15, 23, 42, 0.14);
|
|
232
|
+
box-shadow: var(--shadow-3, 0 4px 12px rgba(15, 23, 42, 0.12));
|
|
235
233
|
border-color: color-mix(in srgb, var(--ui-aspect-accent) 34%, var(--ui-color-border, rgba(15, 23, 42, 0.14)));
|
|
236
234
|
}
|
|
237
235
|
|
|
@@ -319,9 +317,9 @@ class d extends o {
|
|
|
319
317
|
];
|
|
320
318
|
}
|
|
321
319
|
_normalizeRadius(e) {
|
|
322
|
-
if (e == null) return "var(--base-aspect-ratio-radius, var(--ui-radius,
|
|
320
|
+
if (e == null) return "var(--base-aspect-ratio-radius, var(--ui-radius, 6px))";
|
|
323
321
|
const t = e.trim().toLowerCase();
|
|
324
|
-
return t ? t === "full" || t === "pill" ? "999px" : /^-?\d+(\.\d+)?$/.test(t) ? `${t}px` : e : "var(--base-aspect-ratio-radius, var(--ui-radius,
|
|
322
|
+
return t ? t === "full" || t === "pill" ? "999px" : /^-?\d+(\.\d+)?$/.test(t) ? `${t}px` : e : "var(--base-aspect-ratio-radius, var(--ui-radius, 6px))";
|
|
325
323
|
}
|
|
326
324
|
connectedCallback() {
|
|
327
325
|
super.connectedCallback(), this.style.setProperty("--ui-aspect-radius", this._normalizeRadius(this.getAttribute("radius"))), this._observeResize(), this._observeContent();
|
package/dist/avatar.cjs.js
CHANGED
|
@@ -4,19 +4,19 @@
|
|
|
4
4
|
--ui-avatar-size: var(--base-avatar-size-md, 40px);
|
|
5
5
|
--ui-avatar-radius: var(--base-avatar-radius, 999px);
|
|
6
6
|
--ui-avatar-bg-base: var(--base-avatar-bg, var(--color-panel-solid, var(--ui-color-surface, #ffffff)));
|
|
7
|
-
--ui-avatar-bg: var(--ui-avatar-bg-base);
|
|
8
|
-
--ui-avatar-color: color-mix(in srgb, var(--ui-
|
|
7
|
+
--ui-avatar-bg: color-mix(in srgb, var(--ui-avatar-accent) 14%, var(--ui-avatar-bg-base));
|
|
8
|
+
--ui-avatar-color: color-mix(in srgb, var(--ui-avatar-accent) 50%, var(--ui-color-text-strong, var(--ui-color-text, #0f172a)));
|
|
9
9
|
--ui-avatar-muted: var(--ui-color-muted, #526175);
|
|
10
|
-
--ui-avatar-border: var(--base-avatar-border,
|
|
11
|
-
--ui-avatar-ring: var(--base-avatar-shadow,
|
|
10
|
+
--ui-avatar-border: var(--base-avatar-border, 0);
|
|
11
|
+
--ui-avatar-ring: var(--base-avatar-shadow, none);
|
|
12
12
|
--ui-avatar-font-size: var(--ui-default-font-size, 14px);
|
|
13
|
-
--ui-avatar-font-weight:
|
|
13
|
+
--ui-avatar-font-weight: 500;
|
|
14
14
|
--ui-avatar-status-size: 11px;
|
|
15
15
|
--ui-avatar-status-border: var(--base-avatar-status-border, 2px solid var(--color-panel-solid, var(--ui-color-surface, #ffffff)));
|
|
16
16
|
--ui-avatar-transition: 180ms cubic-bezier(0.2, 0.8, 0.2, 1);
|
|
17
17
|
--ui-avatar-accent: var(--ui-color-primary, #2563eb);
|
|
18
18
|
--ui-avatar-badge-bg: color-mix(in srgb, var(--ui-avatar-accent) 14%, var(--ui-color-surface, #ffffff));
|
|
19
|
-
--ui-avatar-badge-color: color-mix(in srgb, var(--ui-avatar-accent)
|
|
19
|
+
--ui-avatar-badge-color: color-mix(in srgb, var(--ui-avatar-accent) 45%, var(--ui-color-text-strong, #0f172a));
|
|
20
20
|
--ui-avatar-badge-radius: var(--base-avatar-badge-radius, 999px);
|
|
21
21
|
color-scheme: light dark;
|
|
22
22
|
}
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
|
|
59
59
|
:host([variant="surface"]) {
|
|
60
60
|
--ui-avatar-bg: var(--ui-avatar-bg-base);
|
|
61
|
-
--ui-avatar-color: color-mix(in srgb, var(--ui-avatar-accent)
|
|
61
|
+
--ui-avatar-color: color-mix(in srgb, var(--ui-avatar-accent) 45%, var(--ui-color-text-strong, #0f172a));
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
:host([variant="soft"]) {
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
:host([variant="outline"]) {
|
|
78
78
|
--ui-avatar-bg: color-mix(in srgb, var(--ui-color-surface, #ffffff) 88%, transparent);
|
|
79
79
|
--ui-avatar-border: 1px solid color-mix(in srgb, var(--ui-avatar-accent) 45%, var(--ui-color-border, rgba(15, 23, 42, 0.14)));
|
|
80
|
-
--ui-avatar-color: color-mix(in srgb, var(--ui-avatar-accent)
|
|
80
|
+
--ui-avatar-color: color-mix(in srgb, var(--ui-avatar-accent) 45%, var(--ui-color-text-strong, #0f172a));
|
|
81
81
|
--ui-avatar-ring: none;
|
|
82
82
|
}
|
|
83
83
|
|
|
@@ -122,7 +122,7 @@
|
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
:host([ring]) .avatar {
|
|
125
|
-
--ui-avatar-ring: 0 0 0
|
|
125
|
+
--ui-avatar-ring: 0 0 0 2px color-mix(in srgb, var(--ui-avatar-accent) 45%, transparent), 0 10px 24px color-mix(in srgb, var(--ui-avatar-accent) 20%, rgba(15, 23, 42, 0.2));
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
:host([interactive]) .avatar {
|
|
@@ -135,15 +135,11 @@
|
|
|
135
135
|
|
|
136
136
|
:host([interactive]):focus-visible .avatar {
|
|
137
137
|
border-color: color-mix(in srgb, var(--ui-avatar-accent) 52%, var(--ui-color-border, rgba(15, 23, 42, 0.14)));
|
|
138
|
-
box-shadow:
|
|
139
|
-
0 0 0 3px color-mix(in srgb, var(--ui-avatar-accent) 26%, transparent),
|
|
140
|
-
0 10px 26px color-mix(in srgb, var(--ui-avatar-accent) 20%, rgba(15, 23, 42, 0.18));
|
|
138
|
+
box-shadow: 0 0 0 2px var(--ui-color-background, #ffffff), 0 0 0 4px var(--ui-ring-color, var(--ui-color-focus-ring, #2563eb));
|
|
141
139
|
}
|
|
142
140
|
|
|
143
141
|
:host([interactive]):hover .avatar {
|
|
144
|
-
|
|
145
|
-
border-color: color-mix(in srgb, var(--ui-avatar-accent) 32%, var(--ui-color-border, rgba(15, 23, 42, 0.14)));
|
|
146
|
-
box-shadow: 0 2px 4px rgba(15, 23, 42, 0.08), 0 16px 30px rgba(15, 23, 42, 0.16);
|
|
142
|
+
box-shadow: 0 0 0 2px color-mix(in srgb, var(--ui-avatar-accent) 30%, transparent);
|
|
147
143
|
}
|
|
148
144
|
|
|
149
145
|
:host([interactive]:active:not([disabled])) .avatar {
|
|
@@ -191,7 +187,7 @@
|
|
|
191
187
|
|
|
192
188
|
:host([state="error"]) .avatar {
|
|
193
189
|
border-color: color-mix(in srgb, var(--ui-avatar-accent) 44%, var(--ui-color-border, rgba(15, 23, 42, 0.14)));
|
|
194
|
-
box-shadow: 0 0 0 2px color-mix(in srgb, var(--ui-avatar-accent)
|
|
190
|
+
box-shadow: 0 0 0 2px color-mix(in srgb, var(--ui-avatar-accent) 40%, transparent);
|
|
195
191
|
}
|
|
196
192
|
|
|
197
193
|
:host([state="success"]) {
|
|
@@ -200,7 +196,7 @@
|
|
|
200
196
|
|
|
201
197
|
:host([state="success"]) .avatar {
|
|
202
198
|
border-color: color-mix(in srgb, var(--ui-avatar-accent) 46%, var(--ui-color-border, rgba(15, 23, 42, 0.14)));
|
|
203
|
-
box-shadow: 0 0 0 2px color-mix(in srgb, var(--ui-avatar-accent)
|
|
199
|
+
box-shadow: 0 0 0 2px color-mix(in srgb, var(--ui-avatar-accent) 40%, transparent);
|
|
204
200
|
}
|
|
205
201
|
|
|
206
202
|
:host([shape="rounded"]) .avatar {
|
|
@@ -351,12 +347,12 @@
|
|
|
351
347
|
box-shadow: none;
|
|
352
348
|
}
|
|
353
349
|
}
|
|
354
|
-
`;function n(r){return String(r).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/\"/g,""").replace(/'/g,"'")}function d(r){const a=r.trim().split(/\s+/).filter(Boolean);return a.length===0?"?":a.length===1?a[0].slice(0,2).toUpperCase():`${a[0][0]||""}${a[1][0]||""}`.toUpperCase()}function b(r){if(!r)return"";const a=r.trim().toLowerCase();return a?/^\d+(\.\d+)?$/.test(a)?`${a}px`:a==="xs"?"24px":a==="sm"?"30px":a==="md"?"36px":a==="lg"?"44px":a==="xl"?"56px":a==="2xl"?"64px":r:""}function h(r){if(!r)return"";const a=r.trim().toLowerCase();return a?a==="full"||a==="pill"||a==="circle"?"999px":/^\d+(\.\d+)?$/.test(a)?`${a}px`:r:""}function _(r){if(r==="eager")return"eager";if(r==="lazy"||!r)return"lazy";const a=r.toLowerCase();return a==="true"||a==="1"?"eager":"lazy"}class g extends x.ElementBase{constructor(){super(),this._img=null,this._imgLoaded=!1,this._imgFailed=!1,this._managedRole=!1,this._autoName="",this._managedTabIndex=!1,this._managedAriaDisabled=!1,this._managedAriaBusy=!1,this._onImageLoad=this._onImageLoad.bind(this),this._onImageError=this._onImageError.bind(this),this._onInteractiveKeyDown=this._onInteractiveKeyDown.bind(this)}static get observedAttributes(){return["src","alt","initials","size","bg","color","radius","fontweight","shape","tone","variant","status","badge","ring","interactive","disabled","state","loading","headless","elevation"]}connectedCallback(){super.connectedCallback(),this.hasAttribute("role")||(this.setAttribute("role","img"),this._managedRole=!0),this.addEventListener("keydown",this._onInteractiveKeyDown),this._syncInteractiveA11y(),this._syncBusyState();const a=b(this.getAttribute("size"));a&&this.style.setProperty("--ui-avatar-size",a);const e=h(this.getAttribute("radius"));e&&this.style.setProperty("--ui-avatar-radius",e);const t=this.getAttribute("bg");t&&this.style.setProperty("--ui-avatar-bg",t);const i=this.getAttribute("color");i&&this.style.setProperty("--ui-avatar-color",i);const s=this.getAttribute("fontweight");s&&this.style.setProperty("--ui-avatar-font-weight",s)}attributeChangedCallback(a,e,t){if(e!==t){if(a==="src"&&e!==t&&(this._imgLoaded=!1,this._imgFailed=!1),(a==="interactive"||a==="disabled")&&this._syncInteractiveA11y(),a==="state"&&this._syncBusyState(),a==="size"){const i=b(t);i?this.style.setProperty("--ui-avatar-size",i):this.style.removeProperty("--ui-avatar-size")}if(a==="bg"&&(t?this.style.setProperty("--ui-avatar-bg",t):this.style.removeProperty("--ui-avatar-bg")),a==="color"&&(t?this.style.setProperty("--ui-avatar-color",t):this.style.removeProperty("--ui-avatar-color")),a==="radius"){const i=h(t);i?this.style.setProperty("--ui-avatar-radius",i):this.style.removeProperty("--ui-avatar-radius")}a==="fontweight"&&(t?this.style.setProperty("--ui-avatar-font-weight",t):this.style.removeProperty("--ui-avatar-font-weight")),this.isConnected&&this.requestRender()}}disconnectedCallback(){this._detachImageListeners(),this.removeEventListener("keydown",this._onInteractiveKeyDown),super.disconnectedCallback()}_syncInteractiveA11y(){const a=this.hasAttribute("interactive"),e=this.hasAttribute("disabled");if(a){(this._managedRole||this.getAttribute("role")==="img"||!this.hasAttribute("role"))&&(this.setAttribute("role","button"),this._managedRole=!0),this.hasAttribute("tabindex")?this._managedTabIndex&&this.setAttribute("tabindex",e?"-1":"0"):(this.setAttribute("tabindex",e?"-1":"0"),this._managedTabIndex=!0),(!this.hasAttribute("aria-disabled")||this._managedAriaDisabled)&&(this.setAttribute("aria-disabled",e?"true":"false"),this._managedAriaDisabled=!0);return}this._managedRole&&this.setAttribute("role","img"),this._managedTabIndex&&(this.removeAttribute("tabindex"),this._managedTabIndex=!1),this._managedAriaDisabled&&(this.removeAttribute("aria-disabled"),this._managedAriaDisabled=!1)}_syncBusyState(){if(this.getAttribute("state")==="loading"){(!this.hasAttribute("aria-busy")||this._managedAriaBusy)&&(this.setAttribute("aria-busy","true"),this._managedAriaBusy=!0);return}this._managedAriaBusy&&(this.removeAttribute("aria-busy"),this._managedAriaBusy=!1)}_onInteractiveKeyDown(a){!this.hasAttribute("interactive")||this.hasAttribute("disabled")||a.key!=="Enter"&&a.key!==" "||(a.preventDefault(),this.click())}_onImageLoad(){if(this._imgLoaded&&!this._imgFailed)return;this._imgLoaded=!0,this._imgFailed=!1,this.requestRender();const a={src:this.getAttribute("src")||""};this.dispatchEvent(new CustomEvent("avatar-load",{detail:a,bubbles:!0})),this.dispatchEvent(new CustomEvent("load",{detail:a,bubbles:!0}))}_onImageError(){if(this._imgFailed)return;this._imgLoaded=!1,this._imgFailed=!0,this.requestRender();const a={src:this.getAttribute("src")||""};this.dispatchEvent(new CustomEvent("avatar-error",{detail:a,bubbles:!0})),this.dispatchEvent(new CustomEvent("error",{detail:a,bubbles:!0}))}_detachImageListeners(){this._img&&(this._img.removeEventListener("load",this._onImageLoad),this._img.removeEventListener("error",this._onImageError),this._img=null)}render(){this._syncBusyState();const a=this.getAttribute("src")||"",e=this.getAttribute("alt")||"",t=this.getAttribute("initials")||"",i=(this.textContent||"").trim(),s=t.trim()?t.trim().slice(0,2).toUpperCase():e.trim()?d(e):i?d(i):"?",v=!!a&&!this._imgFailed,
|
|
350
|
+
`;function n(r){return String(r).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/\"/g,""").replace(/'/g,"'")}function d(r){const a=r.trim().split(/\s+/).filter(Boolean);return a.length===0?"?":a.length===1?a[0].slice(0,2).toUpperCase():`${a[0][0]||""}${a[1][0]||""}`.toUpperCase()}function b(r){if(!r)return"";const a=r.trim().toLowerCase();return a?/^\d+(\.\d+)?$/.test(a)?`${a}px`:a==="xs"?"24px":a==="sm"?"30px":a==="md"?"36px":a==="lg"?"44px":a==="xl"?"56px":a==="2xl"?"64px":r:""}function h(r){if(!r)return"";const a=r.trim().toLowerCase();return a?a==="full"||a==="pill"||a==="circle"?"999px":/^\d+(\.\d+)?$/.test(a)?`${a}px`:r:""}function _(r){if(r==="eager")return"eager";if(r==="lazy"||!r)return"lazy";const a=r.toLowerCase();return a==="true"||a==="1"?"eager":"lazy"}class g extends x.ElementBase{constructor(){super(),this._img=null,this._imgLoaded=!1,this._imgFailed=!1,this._managedRole=!1,this._autoName="",this._managedTabIndex=!1,this._managedAriaDisabled=!1,this._managedAriaBusy=!1,this._onImageLoad=this._onImageLoad.bind(this),this._onImageError=this._onImageError.bind(this),this._onInteractiveKeyDown=this._onInteractiveKeyDown.bind(this)}static get observedAttributes(){return["src","alt","initials","size","bg","color","radius","fontweight","shape","tone","variant","status","badge","ring","interactive","disabled","state","loading","headless","elevation"]}connectedCallback(){super.connectedCallback(),this.hasAttribute("role")||(this.setAttribute("role","img"),this._managedRole=!0),this.addEventListener("keydown",this._onInteractiveKeyDown),this._syncInteractiveA11y(),this._syncBusyState();const a=b(this.getAttribute("size"));a&&this.style.setProperty("--ui-avatar-size",a);const e=h(this.getAttribute("radius"));e&&this.style.setProperty("--ui-avatar-radius",e);const t=this.getAttribute("bg");t&&this.style.setProperty("--ui-avatar-bg",t);const i=this.getAttribute("color");i&&this.style.setProperty("--ui-avatar-color",i);const s=this.getAttribute("fontweight");s&&this.style.setProperty("--ui-avatar-font-weight",s)}attributeChangedCallback(a,e,t){if(e!==t){if(a==="src"&&e!==t&&(this._imgLoaded=!1,this._imgFailed=!1),(a==="interactive"||a==="disabled")&&this._syncInteractiveA11y(),a==="state"&&this._syncBusyState(),a==="size"){const i=b(t);i?this.style.setProperty("--ui-avatar-size",i):this.style.removeProperty("--ui-avatar-size")}if(a==="bg"&&(t?this.style.setProperty("--ui-avatar-bg",t):this.style.removeProperty("--ui-avatar-bg")),a==="color"&&(t?this.style.setProperty("--ui-avatar-color",t):this.style.removeProperty("--ui-avatar-color")),a==="radius"){const i=h(t);i?this.style.setProperty("--ui-avatar-radius",i):this.style.removeProperty("--ui-avatar-radius")}a==="fontweight"&&(t?this.style.setProperty("--ui-avatar-font-weight",t):this.style.removeProperty("--ui-avatar-font-weight")),this.isConnected&&this.requestRender()}}disconnectedCallback(){this._detachImageListeners(),this.removeEventListener("keydown",this._onInteractiveKeyDown),super.disconnectedCallback()}_syncInteractiveA11y(){const a=this.hasAttribute("interactive"),e=this.hasAttribute("disabled");if(a){(this._managedRole||this.getAttribute("role")==="img"||!this.hasAttribute("role"))&&(this.setAttribute("role","button"),this._managedRole=!0),this.hasAttribute("tabindex")?this._managedTabIndex&&this.setAttribute("tabindex",e?"-1":"0"):(this.setAttribute("tabindex",e?"-1":"0"),this._managedTabIndex=!0),(!this.hasAttribute("aria-disabled")||this._managedAriaDisabled)&&(this.setAttribute("aria-disabled",e?"true":"false"),this._managedAriaDisabled=!0);return}this._managedRole&&this.setAttribute("role","img"),this._managedTabIndex&&(this.removeAttribute("tabindex"),this._managedTabIndex=!1),this._managedAriaDisabled&&(this.removeAttribute("aria-disabled"),this._managedAriaDisabled=!1)}_syncBusyState(){if(this.getAttribute("state")==="loading"){(!this.hasAttribute("aria-busy")||this._managedAriaBusy)&&(this.setAttribute("aria-busy","true"),this._managedAriaBusy=!0);return}this._managedAriaBusy&&(this.removeAttribute("aria-busy"),this._managedAriaBusy=!1)}_onInteractiveKeyDown(a){!this.hasAttribute("interactive")||this.hasAttribute("disabled")||a.key!=="Enter"&&a.key!==" "||(a.preventDefault(),this.click())}_onImageLoad(){if(this._imgLoaded&&!this._imgFailed)return;this._imgLoaded=!0,this._imgFailed=!1,this.requestRender();const a={src:this.getAttribute("src")||""};this.dispatchEvent(new CustomEvent("avatar-load",{detail:a,bubbles:!0})),this.dispatchEvent(new CustomEvent("load",{detail:a,bubbles:!0}))}_onImageError(){if(this._imgFailed)return;this._imgLoaded=!1,this._imgFailed=!0,this.requestRender();const a={src:this.getAttribute("src")||""};this.dispatchEvent(new CustomEvent("avatar-error",{detail:a,bubbles:!0})),this.dispatchEvent(new CustomEvent("error",{detail:a,bubbles:!0}))}_detachImageListeners(){this._img&&(this._img.removeEventListener("load",this._onImageLoad),this._img.removeEventListener("error",this._onImageError),this._img=null)}render(){this._syncBusyState();const a=this.getAttribute("src")||"",e=this.getAttribute("alt")||"",t=this.getAttribute("initials")||"",i=(this.textContent||"").trim(),s=t.trim()?t.trim().slice(0,2).toUpperCase():e.trim()?d(e):i?d(i):"?",v=!!a&&!this._imgFailed,f=!v||!this._imgLoaded,p=_(this.getAttribute("loading")),m=this.hasAttribute("status"),o=(this.getAttribute("badge")||"").trim(),u=this.getAttribute("aria-label");if(u===null||u===this._autoName){const l=e.trim()||s,c=o&&!l.includes(o)?`${l}, ${o}`:l;c!==u&&this.setAttribute("aria-label",c),this._autoName=c}this._detachImageListeners(),this.setContent(`
|
|
355
351
|
<style>${y}</style>
|
|
356
352
|
<div class="avatar" part="base">
|
|
357
|
-
${v?`<img src="${n(a)}" alt="${n(e)}" loading="${
|
|
353
|
+
${v?`<img src="${n(a)}" alt="${n(e)}" loading="${p}" />`:""}
|
|
358
354
|
<span class="overlay" part="overlay" aria-hidden="true"></span>
|
|
359
|
-
<span class="fallback" part="fallback" ${
|
|
355
|
+
<span class="fallback" part="fallback" ${f?"":"hidden"}>
|
|
360
356
|
<slot>${n(s)}</slot>
|
|
361
357
|
</span>
|
|
362
358
|
${m?'<span class="status" part="status" aria-hidden="true"></span>':""}
|
package/dist/avatar.esm.js
CHANGED
|
@@ -5,19 +5,19 @@ const x = `
|
|
|
5
5
|
--ui-avatar-size: var(--base-avatar-size-md, 40px);
|
|
6
6
|
--ui-avatar-radius: var(--base-avatar-radius, 999px);
|
|
7
7
|
--ui-avatar-bg-base: var(--base-avatar-bg, var(--color-panel-solid, var(--ui-color-surface, #ffffff)));
|
|
8
|
-
--ui-avatar-bg: var(--ui-avatar-bg-base);
|
|
9
|
-
--ui-avatar-color: color-mix(in srgb, var(--ui-
|
|
8
|
+
--ui-avatar-bg: color-mix(in srgb, var(--ui-avatar-accent) 14%, var(--ui-avatar-bg-base));
|
|
9
|
+
--ui-avatar-color: color-mix(in srgb, var(--ui-avatar-accent) 50%, var(--ui-color-text-strong, var(--ui-color-text, #0f172a)));
|
|
10
10
|
--ui-avatar-muted: var(--ui-color-muted, #526175);
|
|
11
|
-
--ui-avatar-border: var(--base-avatar-border,
|
|
12
|
-
--ui-avatar-ring: var(--base-avatar-shadow,
|
|
11
|
+
--ui-avatar-border: var(--base-avatar-border, 0);
|
|
12
|
+
--ui-avatar-ring: var(--base-avatar-shadow, none);
|
|
13
13
|
--ui-avatar-font-size: var(--ui-default-font-size, 14px);
|
|
14
|
-
--ui-avatar-font-weight:
|
|
14
|
+
--ui-avatar-font-weight: 500;
|
|
15
15
|
--ui-avatar-status-size: 11px;
|
|
16
16
|
--ui-avatar-status-border: var(--base-avatar-status-border, 2px solid var(--color-panel-solid, var(--ui-color-surface, #ffffff)));
|
|
17
17
|
--ui-avatar-transition: 180ms cubic-bezier(0.2, 0.8, 0.2, 1);
|
|
18
18
|
--ui-avatar-accent: var(--ui-color-primary, #2563eb);
|
|
19
19
|
--ui-avatar-badge-bg: color-mix(in srgb, var(--ui-avatar-accent) 14%, var(--ui-color-surface, #ffffff));
|
|
20
|
-
--ui-avatar-badge-color: color-mix(in srgb, var(--ui-avatar-accent)
|
|
20
|
+
--ui-avatar-badge-color: color-mix(in srgb, var(--ui-avatar-accent) 45%, var(--ui-color-text-strong, #0f172a));
|
|
21
21
|
--ui-avatar-badge-radius: var(--base-avatar-badge-radius, 999px);
|
|
22
22
|
color-scheme: light dark;
|
|
23
23
|
}
|
|
@@ -59,7 +59,7 @@ const x = `
|
|
|
59
59
|
|
|
60
60
|
:host([variant="surface"]) {
|
|
61
61
|
--ui-avatar-bg: var(--ui-avatar-bg-base);
|
|
62
|
-
--ui-avatar-color: color-mix(in srgb, var(--ui-avatar-accent)
|
|
62
|
+
--ui-avatar-color: color-mix(in srgb, var(--ui-avatar-accent) 45%, var(--ui-color-text-strong, #0f172a));
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
:host([variant="soft"]) {
|
|
@@ -78,7 +78,7 @@ const x = `
|
|
|
78
78
|
:host([variant="outline"]) {
|
|
79
79
|
--ui-avatar-bg: color-mix(in srgb, var(--ui-color-surface, #ffffff) 88%, transparent);
|
|
80
80
|
--ui-avatar-border: 1px solid color-mix(in srgb, var(--ui-avatar-accent) 45%, var(--ui-color-border, rgba(15, 23, 42, 0.14)));
|
|
81
|
-
--ui-avatar-color: color-mix(in srgb, var(--ui-avatar-accent)
|
|
81
|
+
--ui-avatar-color: color-mix(in srgb, var(--ui-avatar-accent) 45%, var(--ui-color-text-strong, #0f172a));
|
|
82
82
|
--ui-avatar-ring: none;
|
|
83
83
|
}
|
|
84
84
|
|
|
@@ -123,7 +123,7 @@ const x = `
|
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
:host([ring]) .avatar {
|
|
126
|
-
--ui-avatar-ring: 0 0 0
|
|
126
|
+
--ui-avatar-ring: 0 0 0 2px color-mix(in srgb, var(--ui-avatar-accent) 45%, transparent), 0 10px 24px color-mix(in srgb, var(--ui-avatar-accent) 20%, rgba(15, 23, 42, 0.2));
|
|
127
127
|
}
|
|
128
128
|
|
|
129
129
|
:host([interactive]) .avatar {
|
|
@@ -136,15 +136,11 @@ const x = `
|
|
|
136
136
|
|
|
137
137
|
:host([interactive]):focus-visible .avatar {
|
|
138
138
|
border-color: color-mix(in srgb, var(--ui-avatar-accent) 52%, var(--ui-color-border, rgba(15, 23, 42, 0.14)));
|
|
139
|
-
box-shadow:
|
|
140
|
-
0 0 0 3px color-mix(in srgb, var(--ui-avatar-accent) 26%, transparent),
|
|
141
|
-
0 10px 26px color-mix(in srgb, var(--ui-avatar-accent) 20%, rgba(15, 23, 42, 0.18));
|
|
139
|
+
box-shadow: 0 0 0 2px var(--ui-color-background, #ffffff), 0 0 0 4px var(--ui-ring-color, var(--ui-color-focus-ring, #2563eb));
|
|
142
140
|
}
|
|
143
141
|
|
|
144
142
|
:host([interactive]):hover .avatar {
|
|
145
|
-
|
|
146
|
-
border-color: color-mix(in srgb, var(--ui-avatar-accent) 32%, var(--ui-color-border, rgba(15, 23, 42, 0.14)));
|
|
147
|
-
box-shadow: 0 2px 4px rgba(15, 23, 42, 0.08), 0 16px 30px rgba(15, 23, 42, 0.16);
|
|
143
|
+
box-shadow: 0 0 0 2px color-mix(in srgb, var(--ui-avatar-accent) 30%, transparent);
|
|
148
144
|
}
|
|
149
145
|
|
|
150
146
|
:host([interactive]:active:not([disabled])) .avatar {
|
|
@@ -192,7 +188,7 @@ const x = `
|
|
|
192
188
|
|
|
193
189
|
:host([state="error"]) .avatar {
|
|
194
190
|
border-color: color-mix(in srgb, var(--ui-avatar-accent) 44%, var(--ui-color-border, rgba(15, 23, 42, 0.14)));
|
|
195
|
-
box-shadow: 0 0 0 2px color-mix(in srgb, var(--ui-avatar-accent)
|
|
191
|
+
box-shadow: 0 0 0 2px color-mix(in srgb, var(--ui-avatar-accent) 40%, transparent);
|
|
196
192
|
}
|
|
197
193
|
|
|
198
194
|
:host([state="success"]) {
|
|
@@ -201,7 +197,7 @@ const x = `
|
|
|
201
197
|
|
|
202
198
|
:host([state="success"]) .avatar {
|
|
203
199
|
border-color: color-mix(in srgb, var(--ui-avatar-accent) 46%, var(--ui-color-border, rgba(15, 23, 42, 0.14)));
|
|
204
|
-
box-shadow: 0 0 0 2px color-mix(in srgb, var(--ui-avatar-accent)
|
|
200
|
+
box-shadow: 0 0 0 2px color-mix(in srgb, var(--ui-avatar-accent) 40%, transparent);
|
|
205
201
|
}
|
|
206
202
|
|
|
207
203
|
:host([shape="rounded"]) .avatar {
|
|
@@ -468,7 +464,7 @@ class _ extends m {
|
|
|
468
464
|
}
|
|
469
465
|
render() {
|
|
470
466
|
this._syncBusyState();
|
|
471
|
-
const a = this.getAttribute("src") || "", i = this.getAttribute("alt") || "", t = this.getAttribute("initials") || "", e = (this.textContent || "").trim(), s = t.trim() ? t.trim().slice(0, 2).toUpperCase() : i.trim() ? d(i) : e ? d(e) : "?", v = !!a && !this._imgFailed, g = !v || !this._imgLoaded,
|
|
467
|
+
const a = this.getAttribute("src") || "", i = this.getAttribute("alt") || "", t = this.getAttribute("initials") || "", e = (this.textContent || "").trim(), s = t.trim() ? t.trim().slice(0, 2).toUpperCase() : i.trim() ? d(i) : e ? d(e) : "?", v = !!a && !this._imgFailed, g = !v || !this._imgLoaded, f = y(this.getAttribute("loading")), p = this.hasAttribute("status"), o = (this.getAttribute("badge") || "").trim(), u = this.getAttribute("aria-label");
|
|
472
468
|
if (u === null || u === this._autoName) {
|
|
473
469
|
const l = i.trim() || s, c = o && !l.includes(o) ? `${l}, ${o}` : l;
|
|
474
470
|
c !== u && this.setAttribute("aria-label", c), this._autoName = c;
|
|
@@ -476,12 +472,12 @@ class _ extends m {
|
|
|
476
472
|
this._detachImageListeners(), this.setContent(`
|
|
477
473
|
<style>${x}</style>
|
|
478
474
|
<div class="avatar" part="base">
|
|
479
|
-
${v ? `<img src="${n(a)}" alt="${n(i)}" loading="${
|
|
475
|
+
${v ? `<img src="${n(a)}" alt="${n(i)}" loading="${f}" />` : ""}
|
|
480
476
|
<span class="overlay" part="overlay" aria-hidden="true"></span>
|
|
481
477
|
<span class="fallback" part="fallback" ${g ? "" : "hidden"}>
|
|
482
478
|
<slot>${n(s)}</slot>
|
|
483
479
|
</span>
|
|
484
|
-
${
|
|
480
|
+
${p ? '<span class="status" part="status" aria-hidden="true"></span>' : ""}
|
|
485
481
|
<span class="badge" part="badge" ${o ? "" : "hidden"}>${n(o)}</span>
|
|
486
482
|
</div>
|
|
487
483
|
`), this._img = this.root.querySelector("img"), this._img && (this._img.addEventListener("load", this._onImageLoad), this._img.addEventListener("error", this._onImageError), this._img.complete && (this._img.naturalWidth > 0 ? this._onImageLoad() : this._onImageError()));
|
package/dist/badge.cjs.js
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("./ElementBase-DxbvhLJs.js"),g=`
|
|
2
2
|
:host {
|
|
3
3
|
display: inline-flex;
|
|
4
4
|
--ui-badge-font-size: var(--base-badge-font-size, 12px);
|
|
5
|
-
--ui-badge-font-weight: var(--base-badge-font-weight,
|
|
5
|
+
--ui-badge-font-weight: var(--base-badge-font-weight, 500);
|
|
6
6
|
--ui-badge-line-height: 1.2;
|
|
7
|
-
--ui-badge-gap: var(--base-badge-gap,
|
|
8
|
-
--ui-badge-radius: var(--base-badge-radius,
|
|
9
|
-
--ui-badge-padding-block: var(--base-badge-padding-block,
|
|
10
|
-
--ui-badge-padding-inline: var(--base-badge-padding-inline,
|
|
7
|
+
--ui-badge-gap: var(--base-badge-gap, 4px);
|
|
8
|
+
--ui-badge-radius: var(--base-badge-radius, calc(var(--ui-radius, 6px) - 2px));
|
|
9
|
+
--ui-badge-padding-block: var(--base-badge-padding-block, 2px);
|
|
10
|
+
--ui-badge-padding-inline: var(--base-badge-padding-inline, 8px);
|
|
11
11
|
--ui-badge-border-width: var(--base-badge-border-width, 1px);
|
|
12
12
|
--ui-badge-accent: var(--ui-color-primary, #2563eb);
|
|
13
|
-
--ui-badge-
|
|
13
|
+
--ui-badge-on-accent: var(--ui-color-foreground-on-primary, #ffffff);
|
|
14
|
+
--ui-badge-bg-base: color-mix(in srgb, var(--ui-badge-accent) 14%, var(--ui-color-surface, #ffffff));
|
|
14
15
|
--ui-badge-bg: var(--ui-badge-bg-base);
|
|
15
|
-
--ui-badge-color: color-mix(in srgb, var(--ui-badge-accent)
|
|
16
|
-
--ui-badge-border:
|
|
16
|
+
--ui-badge-color: color-mix(in srgb, var(--ui-badge-accent) 50%, var(--ui-color-text-strong, var(--ui-color-text, #0f172a)));
|
|
17
|
+
--ui-badge-border: transparent;
|
|
17
18
|
--ui-badge-shadow: var(--base-badge-shadow, none);
|
|
18
19
|
--ui-badge-dot-size: 7px;
|
|
19
20
|
--ui-badge-dot-color: currentColor;
|
|
@@ -37,14 +38,19 @@
|
|
|
37
38
|
|
|
38
39
|
:host([tone="success"]) {
|
|
39
40
|
--ui-badge-accent: var(--ui-color-success, #15803d);
|
|
41
|
+
--ui-badge-fill: color-mix(in srgb, var(--ui-badge-accent) 76%, #000000);
|
|
42
|
+
--ui-badge-on-accent: #ffffff;
|
|
40
43
|
}
|
|
41
44
|
|
|
42
45
|
:host([tone="warning"]) {
|
|
43
46
|
--ui-badge-accent: var(--ui-color-warning, #b45309);
|
|
47
|
+
--ui-badge-on-accent: var(--ui-color-foreground-on-warning, #ffffff);
|
|
44
48
|
}
|
|
45
49
|
|
|
46
50
|
:host([tone="danger"]) {
|
|
47
51
|
--ui-badge-accent: var(--ui-color-danger, #dc2626);
|
|
52
|
+
--ui-badge-fill: color-mix(in srgb, var(--ui-badge-accent) 80%, #000000);
|
|
53
|
+
--ui-badge-on-accent: #ffffff;
|
|
48
54
|
}
|
|
49
55
|
|
|
50
56
|
:host([tone="purple"]) {
|
|
@@ -93,11 +99,11 @@
|
|
|
93
99
|
}
|
|
94
100
|
|
|
95
101
|
:host([variant="solid"]) {
|
|
96
|
-
--ui-badge-bg: var(--ui-badge-accent);
|
|
97
|
-
--ui-badge-color:
|
|
98
|
-
--ui-badge-border:
|
|
99
|
-
--ui-badge-shadow:
|
|
100
|
-
--ui-badge-dot-color:
|
|
102
|
+
--ui-badge-bg: var(--ui-badge-fill, var(--ui-badge-accent));
|
|
103
|
+
--ui-badge-color: var(--ui-badge-on-accent);
|
|
104
|
+
--ui-badge-border: transparent;
|
|
105
|
+
--ui-badge-shadow: none;
|
|
106
|
+
--ui-badge-dot-color: var(--ui-badge-on-accent);
|
|
101
107
|
}
|
|
102
108
|
|
|
103
109
|
:host([variant="outline"]) {
|
|
@@ -190,12 +196,11 @@
|
|
|
190
196
|
:host([interactive]):focus-visible .badge {
|
|
191
197
|
border-color: color-mix(in srgb, var(--ui-badge-accent) 52%, var(--ui-color-border, rgba(15, 23, 42, 0.16)));
|
|
192
198
|
box-shadow:
|
|
193
|
-
0 0 0
|
|
199
|
+
0 0 0 2px color-mix(in srgb, var(--ui-badge-accent) 45%, transparent),
|
|
194
200
|
0 10px 22px rgba(15, 23, 42, 0.14);
|
|
195
201
|
}
|
|
196
202
|
|
|
197
203
|
:host([interactive]:not([disabled])):hover .badge {
|
|
198
|
-
transform: translateY(-1px);
|
|
199
204
|
border-color: color-mix(in srgb, var(--ui-badge-accent) 36%, var(--ui-color-border, rgba(15, 23, 42, 0.16)));
|
|
200
205
|
box-shadow: 0 2px 4px rgba(15, 23, 42, 0.08), 0 14px 26px rgba(15, 23, 42, 0.14);
|
|
201
206
|
}
|
|
@@ -229,7 +234,7 @@
|
|
|
229
234
|
height: var(--ui-badge-dot-size);
|
|
230
235
|
border-radius: 999px;
|
|
231
236
|
background: var(--ui-badge-dot-color);
|
|
232
|
-
box-shadow: 0 0 0
|
|
237
|
+
box-shadow: 0 0 0 2px color-mix(in srgb, var(--ui-badge-dot-color) 45%, transparent);
|
|
233
238
|
flex: 0 0 auto;
|
|
234
239
|
}
|
|
235
240
|
|
|
@@ -406,13 +411,13 @@
|
|
|
406
411
|
outline-offset: 2px;
|
|
407
412
|
}
|
|
408
413
|
}
|
|
409
|
-
`;function c(t){return String(t).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function
|
|
414
|
+
`;function c(t){return String(t).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function s(t){if(!t)return"";const e=t.trim().toLowerCase();return e?e==="none"?"0px":e==="sm"?"8px":e==="md"||e==="large"?"12px":e==="lg"?"16px":e==="full"||e==="pill"?"9999px":/^\d+(\.\d+)?$/.test(e)?`${e}px`:t:""}class n extends l.ElementBase{constructor(){super(),this._removeBtn=null,this._managedRole=!1,this._managedTabIndex=!1,this._managedAriaDisabled=!1,this._managedAriaBusy=!1,this._managedAriaLabel=!1,this._lastLabelText="",this._onRemoveClick=this._onRemoveClick.bind(this),this._onHostKeyDown=this._onHostKeyDown.bind(this)}static get observedAttributes(){return["text","tone","variant","size","pill","dot","radius","disabled","interactive","removable","auto-remove","icon-only","truncate","max-width","state","headless","elevation"]}connectedCallback(){super.connectedCallback(),this.addEventListener("keydown",this._onHostKeyDown),this._syncInteractiveA11y(),this._syncBusyState();const e=s(this.getAttribute("radius"));e&&this.style.setProperty("--ui-badge-radius",e);const i=this.getAttribute("max-width");i&&this.style.setProperty("--ui-badge-max-inline-size",i)}disconnectedCallback(){this._detachListeners(),this.removeEventListener("keydown",this._onHostKeyDown),super.disconnectedCallback()}attributeChangedCallback(e,i,a){if(i!==a){if((e==="interactive"||e==="disabled")&&this._syncInteractiveA11y(),e==="state"&&this._syncBusyState(),e==="radius"){const r=s(a);r?this.style.setProperty("--ui-badge-radius",r):this.style.removeProperty("--ui-badge-radius")}e==="max-width"&&(a?this.style.setProperty("--ui-badge-max-inline-size",a):this.style.removeProperty("--ui-badge-max-inline-size")),this.isConnected&&this.shouldRenderOnAttributeChange(e,i,a)&&this.requestRender()}}render(){this._syncInteractiveA11y(),this._syncBusyState();const e=(this.getAttribute("text")||"").trim(),i=this.hasAttribute("dot"),a=this.hasAttribute("removable"),r=this.hasAttribute("icon-only"),o=this.getAttribute("state")==="loading",d=this.querySelector('[slot="icon"]')!==null,b=(this.textContent||"").trim().length>0,u=!r&&(e.length>0||b);this._lastLabelText=e||(this.textContent||"").trim(),r&&!this.hasAttribute("aria-label")?(this.setAttribute("aria-label",this._lastLabelText||"Badge"),this._managedAriaLabel=!0):!r&&this._managedAriaLabel&&(this.removeAttribute("aria-label"),this._managedAriaLabel=!1),this.setContent(`
|
|
410
415
|
<style>${g}</style>
|
|
411
416
|
<span class="badge" part="base">
|
|
412
417
|
<span class="dot" part="dot" aria-hidden="true" ${i?"":"hidden"}></span>
|
|
413
|
-
<span class="spinner" part="spinner" aria-hidden="true" ${
|
|
418
|
+
<span class="spinner" part="spinner" aria-hidden="true" ${o?"":"hidden"}></span>
|
|
414
419
|
<span class="icon-slot" part="icon" ${d?"":"hidden"}><slot name="icon"></slot></span>
|
|
415
|
-
<span class="label-wrap" part="label-wrap" ${
|
|
420
|
+
<span class="label-wrap" part="label-wrap" ${u?"":"hidden"}>
|
|
416
421
|
<span class="label" part="label"><slot>${c(e)}</slot></span>
|
|
417
422
|
</span>
|
|
418
423
|
<button
|
|
@@ -421,12 +426,12 @@
|
|
|
421
426
|
part="remove"
|
|
422
427
|
aria-label="Remove badge"
|
|
423
428
|
${a?"":"hidden"}
|
|
424
|
-
${this.hasAttribute("disabled")||
|
|
429
|
+
${this.hasAttribute("disabled")||o?"disabled":""}
|
|
425
430
|
>
|
|
426
431
|
<svg viewBox="0 0 12 12" fill="none" aria-hidden="true">
|
|
427
432
|
<path d="M3 3L9 9M9 3L3 9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" />
|
|
428
433
|
</svg>
|
|
429
434
|
</button>
|
|
430
|
-
<span class="visually-hidden" aria-live="polite" ${
|
|
435
|
+
<span class="visually-hidden" aria-live="polite" ${o?"":"hidden"}>Loading</span>
|
|
431
436
|
</span>
|
|
432
437
|
`),this._detachListeners(),this._removeBtn=this.root.querySelector(".remove-btn"),this._removeBtn&&this._removeBtn.addEventListener("click",this._onRemoveClick)}_syncInteractiveA11y(){const e=this.hasAttribute("interactive"),i=this.hasAttribute("disabled");if(e){this.hasAttribute("role")||(this.setAttribute("role","button"),this._managedRole=!0),this.hasAttribute("tabindex")?this._managedTabIndex&&this.setAttribute("tabindex",i?"-1":"0"):(this.setAttribute("tabindex",i?"-1":"0"),this._managedTabIndex=!0),(!this.hasAttribute("aria-disabled")||this._managedAriaDisabled)&&(this.setAttribute("aria-disabled",i?"true":"false"),this._managedAriaDisabled=!0);return}this._managedRole&&(this.removeAttribute("role"),this._managedRole=!1),this._managedTabIndex&&(this.removeAttribute("tabindex"),this._managedTabIndex=!1),this._managedAriaDisabled&&(this.removeAttribute("aria-disabled"),this._managedAriaDisabled=!1)}_syncBusyState(){if(this.getAttribute("state")==="loading"){(!this.hasAttribute("aria-busy")||this._managedAriaBusy)&&(this.setAttribute("aria-busy","true"),this._managedAriaBusy=!0);return}this._managedAriaBusy&&(this.removeAttribute("aria-busy"),this._managedAriaBusy=!1)}_detachListeners(){this._removeBtn&&(this._removeBtn.removeEventListener("click",this._onRemoveClick),this._removeBtn=null)}_onHostKeyDown(e){if(!this.hasAttribute("interactive")||this.hasAttribute("disabled"))return;const i=e.target;i&&typeof i.closest=="function"&&i.closest(".remove-btn")||e.key!=="Enter"&&e.key!==" "||(e.preventDefault(),this.click())}_onRemoveClick(e){if(e.preventDefault(),e.stopPropagation(),this.hasAttribute("disabled")||this.getAttribute("state")==="loading")return;const i={text:this._lastLabelText,source:"button"},a=new CustomEvent("remove",{detail:i,bubbles:!0,cancelable:!0,composed:!0});this.dispatchEvent(a),this.dispatchEvent(new CustomEvent("ui-remove",{detail:i,bubbles:!0,composed:!0})),!a.defaultPrevented&&this.hasAttribute("auto-remove")&&this.remove()}shouldRenderOnAttributeChange(e,i,a){return i===a?!1:!["tone","variant","size","pill","radius","disabled","interactive","truncate","max-width","headless","elevation"].includes(e)}}typeof customElements<"u"&&!customElements.get("ui-badge")&&customElements.define("ui-badge",n);exports.UIBadge=n;
|
package/dist/badge.esm.js
CHANGED
|
@@ -1,20 +1,21 @@
|
|
|
1
|
-
import { E as
|
|
2
|
-
const
|
|
1
|
+
import { E as u } from "./ElementBase-BeZT54Hj.mjs";
|
|
2
|
+
const l = `
|
|
3
3
|
:host {
|
|
4
4
|
display: inline-flex;
|
|
5
5
|
--ui-badge-font-size: var(--base-badge-font-size, 12px);
|
|
6
|
-
--ui-badge-font-weight: var(--base-badge-font-weight,
|
|
6
|
+
--ui-badge-font-weight: var(--base-badge-font-weight, 500);
|
|
7
7
|
--ui-badge-line-height: 1.2;
|
|
8
|
-
--ui-badge-gap: var(--base-badge-gap,
|
|
9
|
-
--ui-badge-radius: var(--base-badge-radius,
|
|
10
|
-
--ui-badge-padding-block: var(--base-badge-padding-block,
|
|
11
|
-
--ui-badge-padding-inline: var(--base-badge-padding-inline,
|
|
8
|
+
--ui-badge-gap: var(--base-badge-gap, 4px);
|
|
9
|
+
--ui-badge-radius: var(--base-badge-radius, calc(var(--ui-radius, 6px) - 2px));
|
|
10
|
+
--ui-badge-padding-block: var(--base-badge-padding-block, 2px);
|
|
11
|
+
--ui-badge-padding-inline: var(--base-badge-padding-inline, 8px);
|
|
12
12
|
--ui-badge-border-width: var(--base-badge-border-width, 1px);
|
|
13
13
|
--ui-badge-accent: var(--ui-color-primary, #2563eb);
|
|
14
|
-
--ui-badge-
|
|
14
|
+
--ui-badge-on-accent: var(--ui-color-foreground-on-primary, #ffffff);
|
|
15
|
+
--ui-badge-bg-base: color-mix(in srgb, var(--ui-badge-accent) 14%, var(--ui-color-surface, #ffffff));
|
|
15
16
|
--ui-badge-bg: var(--ui-badge-bg-base);
|
|
16
|
-
--ui-badge-color: color-mix(in srgb, var(--ui-badge-accent)
|
|
17
|
-
--ui-badge-border:
|
|
17
|
+
--ui-badge-color: color-mix(in srgb, var(--ui-badge-accent) 50%, var(--ui-color-text-strong, var(--ui-color-text, #0f172a)));
|
|
18
|
+
--ui-badge-border: transparent;
|
|
18
19
|
--ui-badge-shadow: var(--base-badge-shadow, none);
|
|
19
20
|
--ui-badge-dot-size: 7px;
|
|
20
21
|
--ui-badge-dot-color: currentColor;
|
|
@@ -38,14 +39,19 @@ const u = `
|
|
|
38
39
|
|
|
39
40
|
:host([tone="success"]) {
|
|
40
41
|
--ui-badge-accent: var(--ui-color-success, #15803d);
|
|
42
|
+
--ui-badge-fill: color-mix(in srgb, var(--ui-badge-accent) 76%, #000000);
|
|
43
|
+
--ui-badge-on-accent: #ffffff;
|
|
41
44
|
}
|
|
42
45
|
|
|
43
46
|
:host([tone="warning"]) {
|
|
44
47
|
--ui-badge-accent: var(--ui-color-warning, #b45309);
|
|
48
|
+
--ui-badge-on-accent: var(--ui-color-foreground-on-warning, #ffffff);
|
|
45
49
|
}
|
|
46
50
|
|
|
47
51
|
:host([tone="danger"]) {
|
|
48
52
|
--ui-badge-accent: var(--ui-color-danger, #dc2626);
|
|
53
|
+
--ui-badge-fill: color-mix(in srgb, var(--ui-badge-accent) 80%, #000000);
|
|
54
|
+
--ui-badge-on-accent: #ffffff;
|
|
49
55
|
}
|
|
50
56
|
|
|
51
57
|
:host([tone="purple"]) {
|
|
@@ -94,11 +100,11 @@ const u = `
|
|
|
94
100
|
}
|
|
95
101
|
|
|
96
102
|
:host([variant="solid"]) {
|
|
97
|
-
--ui-badge-bg: var(--ui-badge-accent);
|
|
98
|
-
--ui-badge-color:
|
|
99
|
-
--ui-badge-border:
|
|
100
|
-
--ui-badge-shadow:
|
|
101
|
-
--ui-badge-dot-color:
|
|
103
|
+
--ui-badge-bg: var(--ui-badge-fill, var(--ui-badge-accent));
|
|
104
|
+
--ui-badge-color: var(--ui-badge-on-accent);
|
|
105
|
+
--ui-badge-border: transparent;
|
|
106
|
+
--ui-badge-shadow: none;
|
|
107
|
+
--ui-badge-dot-color: var(--ui-badge-on-accent);
|
|
102
108
|
}
|
|
103
109
|
|
|
104
110
|
:host([variant="outline"]) {
|
|
@@ -191,12 +197,11 @@ const u = `
|
|
|
191
197
|
:host([interactive]):focus-visible .badge {
|
|
192
198
|
border-color: color-mix(in srgb, var(--ui-badge-accent) 52%, var(--ui-color-border, rgba(15, 23, 42, 0.16)));
|
|
193
199
|
box-shadow:
|
|
194
|
-
0 0 0
|
|
200
|
+
0 0 0 2px color-mix(in srgb, var(--ui-badge-accent) 45%, transparent),
|
|
195
201
|
0 10px 22px rgba(15, 23, 42, 0.14);
|
|
196
202
|
}
|
|
197
203
|
|
|
198
204
|
:host([interactive]:not([disabled])):hover .badge {
|
|
199
|
-
transform: translateY(-1px);
|
|
200
205
|
border-color: color-mix(in srgb, var(--ui-badge-accent) 36%, var(--ui-color-border, rgba(15, 23, 42, 0.16)));
|
|
201
206
|
box-shadow: 0 2px 4px rgba(15, 23, 42, 0.08), 0 14px 26px rgba(15, 23, 42, 0.14);
|
|
202
207
|
}
|
|
@@ -230,7 +235,7 @@ const u = `
|
|
|
230
235
|
height: var(--ui-badge-dot-size);
|
|
231
236
|
border-radius: 999px;
|
|
232
237
|
background: var(--ui-badge-dot-color);
|
|
233
|
-
box-shadow: 0 0 0
|
|
238
|
+
box-shadow: 0 0 0 2px color-mix(in srgb, var(--ui-badge-dot-color) 45%, transparent);
|
|
234
239
|
flex: 0 0 auto;
|
|
235
240
|
}
|
|
236
241
|
|
|
@@ -411,12 +416,12 @@ const u = `
|
|
|
411
416
|
function g(t) {
|
|
412
417
|
return String(t).replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
413
418
|
}
|
|
414
|
-
function
|
|
419
|
+
function s(t) {
|
|
415
420
|
if (!t) return "";
|
|
416
421
|
const e = t.trim().toLowerCase();
|
|
417
422
|
return e ? e === "none" ? "0px" : e === "sm" ? "8px" : e === "md" || e === "large" ? "12px" : e === "lg" ? "16px" : e === "full" || e === "pill" ? "9999px" : /^\d+(\.\d+)?$/.test(e) ? `${e}px` : t : "";
|
|
418
423
|
}
|
|
419
|
-
class c extends
|
|
424
|
+
class c extends u {
|
|
420
425
|
constructor() {
|
|
421
426
|
super(), this._removeBtn = null, this._managedRole = !1, this._managedTabIndex = !1, this._managedAriaDisabled = !1, this._managedAriaBusy = !1, this._managedAriaLabel = !1, this._lastLabelText = "", this._onRemoveClick = this._onRemoveClick.bind(this), this._onHostKeyDown = this._onHostKeyDown.bind(this);
|
|
422
427
|
}
|
|
@@ -443,7 +448,7 @@ class c extends l {
|
|
|
443
448
|
}
|
|
444
449
|
connectedCallback() {
|
|
445
450
|
super.connectedCallback(), this.addEventListener("keydown", this._onHostKeyDown), this._syncInteractiveA11y(), this._syncBusyState();
|
|
446
|
-
const e =
|
|
451
|
+
const e = s(this.getAttribute("radius"));
|
|
447
452
|
e && this.style.setProperty("--ui-badge-radius", e);
|
|
448
453
|
const i = this.getAttribute("max-width");
|
|
449
454
|
i && this.style.setProperty("--ui-badge-max-inline-size", i);
|
|
@@ -454,7 +459,7 @@ class c extends l {
|
|
|
454
459
|
attributeChangedCallback(e, i, a) {
|
|
455
460
|
if (i !== a) {
|
|
456
461
|
if ((e === "interactive" || e === "disabled") && this._syncInteractiveA11y(), e === "state" && this._syncBusyState(), e === "radius") {
|
|
457
|
-
const r =
|
|
462
|
+
const r = s(a);
|
|
458
463
|
r ? this.style.setProperty("--ui-badge-radius", r) : this.style.removeProperty("--ui-badge-radius");
|
|
459
464
|
}
|
|
460
465
|
e === "max-width" && (a ? this.style.setProperty("--ui-badge-max-inline-size", a) : this.style.removeProperty("--ui-badge-max-inline-size")), this.isConnected && this.shouldRenderOnAttributeChange(e, i, a) && this.requestRender();
|
|
@@ -462,12 +467,12 @@ class c extends l {
|
|
|
462
467
|
}
|
|
463
468
|
render() {
|
|
464
469
|
this._syncInteractiveA11y(), this._syncBusyState();
|
|
465
|
-
const e = (this.getAttribute("text") || "").trim(), i = this.hasAttribute("dot"), a = this.hasAttribute("removable"), r = this.hasAttribute("icon-only"),
|
|
470
|
+
const e = (this.getAttribute("text") || "").trim(), i = this.hasAttribute("dot"), a = this.hasAttribute("removable"), r = this.hasAttribute("icon-only"), o = this.getAttribute("state") === "loading", n = this.querySelector('[slot="icon"]') !== null, d = (this.textContent || "").trim().length > 0, b = !r && (e.length > 0 || d);
|
|
466
471
|
this._lastLabelText = e || (this.textContent || "").trim(), r && !this.hasAttribute("aria-label") ? (this.setAttribute("aria-label", this._lastLabelText || "Badge"), this._managedAriaLabel = !0) : !r && this._managedAriaLabel && (this.removeAttribute("aria-label"), this._managedAriaLabel = !1), this.setContent(`
|
|
467
|
-
<style>${
|
|
472
|
+
<style>${l}</style>
|
|
468
473
|
<span class="badge" part="base">
|
|
469
474
|
<span class="dot" part="dot" aria-hidden="true" ${i ? "" : "hidden"}></span>
|
|
470
|
-
<span class="spinner" part="spinner" aria-hidden="true" ${
|
|
475
|
+
<span class="spinner" part="spinner" aria-hidden="true" ${o ? "" : "hidden"}></span>
|
|
471
476
|
<span class="icon-slot" part="icon" ${n ? "" : "hidden"}><slot name="icon"></slot></span>
|
|
472
477
|
<span class="label-wrap" part="label-wrap" ${b ? "" : "hidden"}>
|
|
473
478
|
<span class="label" part="label"><slot>${g(e)}</slot></span>
|
|
@@ -478,13 +483,13 @@ class c extends l {
|
|
|
478
483
|
part="remove"
|
|
479
484
|
aria-label="Remove badge"
|
|
480
485
|
${a ? "" : "hidden"}
|
|
481
|
-
${this.hasAttribute("disabled") ||
|
|
486
|
+
${this.hasAttribute("disabled") || o ? "disabled" : ""}
|
|
482
487
|
>
|
|
483
488
|
<svg viewBox="0 0 12 12" fill="none" aria-hidden="true">
|
|
484
489
|
<path d="M3 3L9 9M9 3L3 9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" />
|
|
485
490
|
</svg>
|
|
486
491
|
</button>
|
|
487
|
-
<span class="visually-hidden" aria-live="polite" ${
|
|
492
|
+
<span class="visually-hidden" aria-live="polite" ${o ? "" : "hidden"}>Loading</span>
|
|
488
493
|
</span>
|
|
489
494
|
`), this._detachListeners(), this._removeBtn = this.root.querySelector(".remove-btn"), this._removeBtn && this._removeBtn.addEventListener("click", this._onRemoveClick);
|
|
490
495
|
}
|