atomicuilibrary 0.0.1 → 0.1.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/dist/cjs/category-section.cjs.entry.js +1 -1
- package/dist/cjs/exploration-project-tailwind.cjs.js +1 -1
- package/dist/cjs/layout-manager.cjs.entry.js +1 -1
- package/dist/cjs/library-card.cjs.entry.js +1 -1
- package/dist/cjs/lm-container_2.cjs.entry.js +1 -1
- package/dist/cjs/lm-panel_3.cjs.entry.js +4 -4
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/my-step.cjs.entry.js +1 -1
- package/dist/cjs/nav-bar.cjs.entry.js +2 -2
- package/dist/cjs/{security-E1JcwxGc.js → security-CNaNip8F.js} +88 -154
- package/dist/cjs/smart-step.cjs.entry.js +2 -2
- package/dist/cjs/timeline-item.cjs.entry.js +1 -1
- package/dist/cjs/{ui-accordion_10.cjs.entry.js → ui-accordion_11.cjs.entry.js} +613 -26
- package/dist/cjs/ui-advanced-data-table.cjs.entry.js +1 -1
- package/dist/cjs/ui-anchor.cjs.entry.js +1 -1
- package/dist/cjs/ui-aside-panel.cjs.entry.js +5 -5
- package/dist/cjs/ui-avatar-group_3.cjs.entry.js +5 -5
- package/dist/cjs/ui-callout-banner.cjs.entry.js +1 -1
- package/dist/cjs/ui-card.cjs.entry.js +26 -4
- package/dist/cjs/ui-checkbox.cjs.entry.js +2 -2
- package/dist/cjs/ui-code-editor.cjs.entry.js +2 -2
- package/dist/cjs/ui-code-preview.cjs.entry.js +1 -1
- package/dist/cjs/ui-color-controller.cjs.entry.js +1 -1
- package/dist/cjs/ui-dialog-box.cjs.entry.js +1 -1
- package/dist/cjs/ui-dock-host.cjs.entry.js +3 -3
- package/dist/cjs/ui-drag-drop.cjs.entry.js +1 -1
- package/dist/cjs/ui-empty-state.cjs.entry.js +1 -1
- package/dist/cjs/ui-fab-item.cjs.entry.js +1 -1
- package/dist/cjs/ui-fab.cjs.entry.js +2 -2
- package/dist/cjs/ui-library.cjs.entry.js +1 -1
- package/dist/cjs/ui-list-group_2.cjs.entry.js +9 -5
- package/dist/cjs/ui-list.cjs.entry.js +4 -4
- package/dist/cjs/ui-navigation-item.cjs.entry.js +3 -3
- package/dist/cjs/ui-otp-input.cjs.entry.js +2 -2
- package/dist/cjs/{ui-pagination_3.cjs.entry.js → ui-pagination_4.cjs.entry.js} +202 -0
- package/dist/cjs/ui-pattern-input.cjs.entry.js +5 -5
- package/dist/cjs/ui-popover.cjs.entry.js +1 -1
- package/dist/cjs/ui-progress.cjs.entry.js +101 -17
- package/dist/cjs/ui-resizable-panel.cjs.entry.js +1 -1
- package/dist/cjs/ui-smart-location-dropdown.cjs.entry.js +2 -2
- package/dist/cjs/ui-smart-stepper.cjs.entry.js +1 -1
- package/dist/cjs/ui-snackbar.cjs.entry.js +1 -1
- package/dist/cjs/ui-step.cjs.entry.js +1 -1
- package/dist/cjs/ui-stepper.cjs.entry.js +1 -1
- package/dist/cjs/ui-switch.cjs.entry.js +9 -9
- package/dist/cjs/ui-tabs.cjs.entry.js +1 -1
- package/dist/cjs/ui-timeline.cjs.entry.js +1 -1
- package/dist/cjs/ui-toolbar.cjs.entry.js +1 -1
- package/dist/cjs/ui-tooltip.cjs.entry.js +4 -4
- package/dist/cjs/ui-transfer-list.cjs.entry.js +1 -1
- package/dist/cjs/ui-workspace-manager.cjs.entry.js +1 -1
- package/dist/collection/assets/js/demo-loader.js +0 -1
- package/dist/collection/assets/js/demos/accordion-demo.js +189 -0
- package/dist/collection/assets/js/demos/advanced-data-table-demo.js +213 -214
- package/dist/collection/assets/js/demos/aside-panel-demo.js +6 -6
- package/dist/collection/assets/js/demos/button-demo.js +60 -1
- package/dist/collection/assets/js/demos/callout-banner-demo.js +324 -34
- package/dist/collection/assets/js/demos/card-demo.js +108 -61
- package/dist/collection/assets/js/demos/context-menu-demo.js +433 -12
- package/dist/collection/assets/js/demos/dock-demo.js +80 -60
- package/dist/collection/assets/js/demos/documentation-demo.js +227 -22
- package/dist/collection/assets/js/demos/empty-state-demo.js +10 -10
- package/dist/collection/assets/js/demos/list-demo.js +41 -18
- package/dist/collection/assets/js/demos/masonry-demo.js +164 -0
- package/dist/collection/assets/js/demos/progress-demo.js +701 -8
- package/dist/collection/assets/js/demos/radio-demo.js +1 -1
- package/dist/collection/assets/js/demos/splitter-demo.js +137 -0
- package/dist/collection/assets/js/demos/tag-demo.js +48 -18
- package/dist/collection/assets/js/demos/timeline-demo.js +20 -7
- package/dist/collection/assets/js/demos/tooltip-demo.js +26 -26
- package/dist/collection/assets/js/demos/tree-demo.js +28 -10
- package/dist/collection/collection-manifest.json +1 -4
- package/dist/collection/components/accordion/accordion.css +301 -0
- package/dist/collection/components/accordion/accordion.js +40 -8
- package/dist/collection/components/advanced-data-table/advanced-data-table.css +19 -5
- package/dist/collection/components/anchor/anchor.css +0 -2
- package/dist/collection/components/aside-panel/aside-panel.css +1 -3
- package/dist/collection/components/aside-panel/aside-panel.js +5 -5
- package/dist/collection/components/avatar/avatar.js +1 -1
- package/dist/collection/components/badge/badge.css +1 -0
- package/dist/collection/components/badge/badge.js +1 -1
- package/dist/collection/components/breadcrumb/breadcrumb.js +1 -1
- package/dist/collection/components/button/button.css +131 -0
- package/dist/collection/components/button/button.js +128 -9
- package/dist/collection/components/card/card.css +83 -31
- package/dist/collection/components/card/card.js +46 -3
- package/dist/collection/components/checkbox/checkbox.css +8 -10
- package/dist/collection/components/checkbox/checkbox.js +2 -2
- package/dist/collection/components/code-editor/code-editor.js +1 -1
- package/dist/collection/components/code-preview/ui-code-preview.js +1 -1
- package/dist/collection/components/color-controller/color-controller.js +1 -1
- package/dist/collection/components/context-menu/context-menu.css +3 -3
- package/dist/collection/components/dialog-box/dialog-box.js +1 -1
- package/dist/collection/components/dialog-header/dialog-header.js +1 -1
- package/dist/collection/components/dock-host/ui-dock-host.js +3 -3
- package/dist/collection/components/drag-drop/drag-drop.js +1 -1
- package/dist/collection/components/empty-state/empty-state.js +1 -1
- package/dist/collection/components/fab/fab.js +2 -2
- package/dist/collection/components/fab-item/fab-item.js +1 -1
- package/dist/collection/components/horizontal-nav/horizontal-nav.js +2 -2
- package/dist/collection/components/icon/icon.js +1 -1
- package/dist/collection/components/input/input.js +4 -4
- package/dist/collection/components/layout-manager/layout-manager.js +1 -1
- package/dist/collection/components/layout-manager/lm-floating-window/lm-floating-window.js +1 -1
- package/dist/collection/components/layout-manager/lm-panel/lm-panel.js +1 -1
- package/dist/collection/components/layout-manager/lm-splitter/lm-splitter.js +1 -1
- package/dist/collection/components/layout-manager/lm-tabs/lm-tabs.js +1 -1
- package/dist/collection/components/library/category-section.js +1 -1
- package/dist/collection/components/library/library-card.js +1 -1
- package/dist/collection/components/library/library.js +1 -1
- package/dist/collection/components/list/list.js +4 -4
- package/dist/collection/components/list-item/list-item.css +24 -0
- package/dist/collection/components/list-item/list-item.js +35 -4
- package/dist/collection/components/loader/loader.css +1635 -0
- package/dist/collection/components/loader/loader.js +1120 -0
- package/dist/collection/components/my-step/my-step.js +1 -1
- package/dist/collection/components/nav-bar/nav-bar.js +6 -6
- package/dist/collection/components/otp-input/otp-input.js +2 -2
- package/dist/collection/components/pattern-input/pattern-input.js +5 -5
- package/dist/collection/components/progress/progress.css +150 -15
- package/dist/collection/components/progress/progress.js +180 -18
- package/dist/collection/components/radio/radio.css +3 -3
- package/dist/collection/components/radio/radio.js +1 -1
- package/dist/collection/components/resizable-panel/resizable-panel.js +1 -1
- package/dist/collection/components/smart-location-dropdown/smart-location-dropdown.js +2 -2
- package/dist/collection/components/smart-stepper/smart-step.js +2 -2
- package/dist/collection/components/smart-stepper/smart-stepper.js +1 -1
- package/dist/collection/components/snackbar/snackbar.js +1 -1
- package/dist/collection/components/speed-dial/speed-dial.js +1 -1
- package/dist/collection/components/stack/stack.js +2 -2
- package/dist/collection/components/step/step.js +1 -1
- package/dist/collection/components/switch/switch.js +10 -10
- package/dist/collection/components/tag-group/tag-group.js +2 -2
- package/dist/collection/components/timeline-item/timeline-item.js +1 -1
- package/dist/collection/components/toolbar/toolbar.js +1 -1
- package/dist/collection/components/tooltip/tooltip.js +3 -3
- package/dist/collection/components/top-bar/top-bar.js +2 -2
- package/dist/collection/components/ui-navigation-bar/navigation-bar/navigation-bar.css +19 -4
- package/dist/collection/components/ui-navigation-bar/navigation-bar/navigation-bar.js +6 -6
- package/dist/collection/components/ui-navigation-bar/navigation-item.js +3 -3
- package/dist/collection/components.js +1 -0
- package/dist/components/avatar-group.js +1 -1
- package/dist/components/avatar.js +1 -1
- package/dist/components/badge.js +1 -1
- package/dist/components/button-toggle.js +1 -1
- package/dist/components/category-section2.js +1 -1
- package/dist/components/checkbox.js +1 -1
- package/dist/components/context-menu.js +1 -1
- package/dist/components/dialog-header.js +1 -1
- package/dist/components/dropdown.js +1 -1
- package/dist/components/icon.js +2 -2
- package/dist/components/input.js +1 -1
- package/dist/components/layout-manager.js +1 -1
- package/dist/components/library-card2.js +1 -1
- package/dist/components/list-group.js +1 -1
- package/dist/components/list-item.js +1 -1
- package/dist/components/lm-container2.js +1 -1
- package/dist/components/lm-floating-window2.js +1 -1
- package/dist/components/lm-panel2.js +1 -1
- package/dist/components/lm-splitter2.js +1 -1
- package/dist/components/lm-tabs2.js +1 -1
- package/dist/components/loader.js +1 -0
- package/dist/components/my-step.js +1 -1
- package/dist/components/nav-bar.js +1 -1
- package/dist/components/pagination.js +1 -1
- package/dist/components/radio.js +1 -1
- package/dist/components/range-slider.js +1 -1
- package/dist/components/rating.js +1 -1
- package/dist/components/resizable-panel.js +1 -1
- package/dist/components/skeleton-loader.js +1 -1
- package/dist/components/smart-step.js +1 -1
- package/dist/components/stack.js +1 -1
- package/dist/components/switch.js +1 -1
- package/dist/components/tag-group.js +1 -1
- package/dist/components/tag.js +1 -1
- package/dist/components/timeline-item.js +1 -1
- package/dist/components/toggle-group.js +1 -1
- package/dist/components/tooltip.js +1 -1
- package/dist/components/ui-accordion.js +1 -1
- package/dist/components/ui-advanced-data-table.js +1 -1
- package/dist/components/ui-anchor.js +1 -1
- package/dist/components/ui-aside-panel.js +1 -1
- package/dist/components/ui-breadcrumb-item.js +1 -1
- package/dist/components/ui-breadcrumb.js +1 -1
- package/dist/components/ui-button-toggle-group.js +1 -1
- package/dist/components/ui-callout-banner.js +1 -1
- package/dist/components/ui-card.js +1 -1
- package/dist/components/ui-carousel.js +1 -1
- package/dist/components/ui-code-editor.js +1 -1
- package/dist/components/ui-code-preview.js +1 -1
- package/dist/components/ui-color-controller.js +1 -1
- package/dist/components/ui-color-picker.js +1 -1
- package/dist/components/ui-command-palette.js +1 -1
- package/dist/components/ui-dialog-box.js +1 -1
- package/dist/components/ui-divider.js +1 -1
- package/dist/components/ui-dock-host.js +1 -1
- package/dist/components/ui-dock.js +1 -1
- package/dist/components/ui-drag-drop.js +1 -1
- package/dist/components/ui-empty-state.js +1 -1
- package/dist/components/ui-fab-item.js +1 -1
- package/dist/components/ui-fab.js +1 -1
- package/dist/components/ui-file-upload.js +1 -1
- package/dist/components/ui-horizontal-nav.js +1 -1
- package/dist/components/ui-knob.js +1 -1
- package/dist/components/ui-library.js +1 -1
- package/dist/components/ui-list.js +1 -1
- package/dist/components/{ui-input-pair.d.ts → ui-loader.d.ts} +4 -4
- package/dist/components/ui-loader.js +1 -0
- package/dist/components/ui-masonry.js +1 -1
- package/dist/components/ui-meter-group.js +1 -1
- package/dist/components/ui-navigation-bar.js +1 -1
- package/dist/components/ui-navigation-item.js +1 -1
- package/dist/components/ui-number-input.js +1 -1
- package/dist/components/ui-otp-input.js +1 -1
- package/dist/components/ui-panel.js +1 -1
- package/dist/components/ui-pattern-input.js +1 -1
- package/dist/components/ui-popover.js +1 -1
- package/dist/components/ui-progress.js +1 -1
- package/dist/components/ui-scroll-top.js +1 -1
- package/dist/components/ui-smart-context-menu.js +1 -1
- package/dist/components/ui-smart-location-dropdown.js +1 -1
- package/dist/components/ui-smart-stepper.js +1 -1
- package/dist/components/ui-snackbar.js +1 -1
- package/dist/components/ui-speed-dial.js +1 -1
- package/dist/components/ui-splitter.js +1 -1
- package/dist/components/ui-step.js +1 -1
- package/dist/components/ui-stepper.js +1 -1
- package/dist/components/ui-tabs.js +1 -1
- package/dist/components/ui-timeline.js +1 -1
- package/dist/components/ui-timer.js +1 -1
- package/dist/components/ui-toolbar.js +1 -1
- package/dist/components/ui-top-bar.js +1 -1
- package/dist/components/ui-transfer-list.js +1 -1
- package/dist/components/ui-tree.js +1 -1
- package/dist/components/ui-workspace-manager.js +1 -1
- package/dist/esm/category-section.entry.js +1 -1
- package/dist/esm/exploration-project-tailwind.js +1 -1
- package/dist/esm/layout-manager.entry.js +1 -1
- package/dist/esm/library-card.entry.js +1 -1
- package/dist/esm/lm-container_2.entry.js +1 -1
- package/dist/esm/lm-panel_3.entry.js +4 -4
- package/dist/esm/loader.js +1 -1
- package/dist/esm/my-step.entry.js +1 -1
- package/dist/esm/nav-bar.entry.js +2 -2
- package/dist/esm/{security-D2WzX6vR.js → security-Dyu3Nplq.js} +88 -154
- package/dist/esm/smart-step.entry.js +2 -2
- package/dist/esm/timeline-item.entry.js +1 -1
- package/dist/esm/{ui-accordion_10.entry.js → ui-accordion_11.entry.js} +613 -27
- package/dist/esm/ui-advanced-data-table.entry.js +1 -1
- package/dist/esm/ui-anchor.entry.js +1 -1
- package/dist/esm/ui-aside-panel.entry.js +5 -5
- package/dist/esm/ui-avatar-group_3.entry.js +5 -5
- package/dist/esm/ui-callout-banner.entry.js +1 -1
- package/dist/esm/ui-card.entry.js +26 -4
- package/dist/esm/ui-checkbox.entry.js +2 -2
- package/dist/esm/ui-code-editor.entry.js +2 -2
- package/dist/esm/ui-code-preview.entry.js +1 -1
- package/dist/esm/ui-color-controller.entry.js +1 -1
- package/dist/esm/ui-dialog-box.entry.js +1 -1
- package/dist/esm/ui-dock-host.entry.js +3 -3
- package/dist/esm/ui-drag-drop.entry.js +1 -1
- package/dist/esm/ui-empty-state.entry.js +1 -1
- package/dist/esm/ui-fab-item.entry.js +1 -1
- package/dist/esm/ui-fab.entry.js +2 -2
- package/dist/esm/ui-library.entry.js +1 -1
- package/dist/esm/ui-list-group_2.entry.js +9 -5
- package/dist/esm/ui-list.entry.js +4 -4
- package/dist/esm/ui-navigation-item.entry.js +3 -3
- package/dist/esm/ui-otp-input.entry.js +2 -2
- package/dist/esm/{ui-pagination_3.entry.js → ui-pagination_4.entry.js} +202 -1
- package/dist/esm/ui-pattern-input.entry.js +5 -5
- package/dist/esm/ui-popover.entry.js +1 -1
- package/dist/esm/ui-progress.entry.js +101 -17
- package/dist/esm/ui-resizable-panel.entry.js +1 -1
- package/dist/esm/ui-smart-location-dropdown.entry.js +2 -2
- package/dist/esm/ui-smart-stepper.entry.js +1 -1
- package/dist/esm/ui-snackbar.entry.js +1 -1
- package/dist/esm/ui-step.entry.js +1 -1
- package/dist/esm/ui-stepper.entry.js +1 -1
- package/dist/esm/ui-switch.entry.js +9 -9
- package/dist/esm/ui-tabs.entry.js +1 -1
- package/dist/esm/ui-timeline.entry.js +1 -1
- package/dist/esm/ui-toolbar.entry.js +1 -1
- package/dist/esm/ui-tooltip.entry.js +4 -4
- package/dist/esm/ui-transfer-list.entry.js +1 -1
- package/dist/esm/ui-workspace-manager.entry.js +1 -1
- package/dist/exploration-project-tailwind/exploration-project-tailwind.esm.js +1 -1
- package/dist/exploration-project-tailwind/{p-c7e87fbb.entry.js → p-036d2a44.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-62352ef2.entry.js → p-05a436d3.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-a4f52a76.entry.js → p-16bdd162.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-85bf89fd.entry.js → p-20ecc116.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-2347d21b.entry.js +1 -0
- package/dist/exploration-project-tailwind/p-3d381f75.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-e5322e59.entry.js → p-4288c158.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-2f1aebb3.entry.js → p-4417a9d8.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-049744f9.entry.js → p-44742ddd.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-73d29a4a.entry.js → p-4aaa8e40.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-6fa9dc15.entry.js → p-4bef8bed.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-64e3a484.entry.js → p-4efd63ce.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-c5ddc817.entry.js → p-54965530.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-5c835d90.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-4de419d5.entry.js → p-6b838549.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-c174a372.entry.js → p-6ddbee42.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-7515b1e3.entry.js → p-70bacda8.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-9fa70359.entry.js → p-71d95bb1.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-2d273118.entry.js → p-7889bfc4.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-0b004861.entry.js → p-790556f0.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-f5719913.entry.js → p-7ba2258a.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-81961fb1.entry.js → p-81ebba11.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-5e3e80ae.entry.js → p-8578b616.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-3d3d48fd.entry.js → p-8b57fe4e.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-ffb1754a.entry.js → p-97af03cc.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-f0830120.entry.js → p-98e91da5.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-d2308a00.entry.js → p-9bd14f69.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-Dyu3Nplq.js +2 -0
- package/dist/exploration-project-tailwind/{p-ba21fed3.entry.js → p-a27f59d2.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-70d82d79.entry.js → p-a7b07cf4.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-5508874f.entry.js → p-bd89d060.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-9d0c8760.entry.js → p-c02284ea.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-d419eaf0.entry.js → p-c1c8ac28.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-c63c522e.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-c90722ec.entry.js → p-cbee2607.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-287dbf09.entry.js → p-d114a347.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-8d951aef.entry.js → p-d2e45c5e.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-77cc333a.entry.js → p-d59da767.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-46596a28.entry.js → p-d6ce9721.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-875be805.entry.js → p-dc92a343.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-4f6bba75.entry.js → p-e22317c1.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-d16c9635.entry.js → p-e76318c7.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-e8c6d395.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-c2ca71ac.entry.js → p-eab5ad36.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-f0bc5d7e.entry.js +1 -0
- package/dist/exploration-project-tailwind/p-f1beee72.entry.js +1 -0
- package/dist/exploration-project-tailwind/p-f543392f.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-46efdea3.entry.js → p-f61cfb7c.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-77124686.entry.js → p-fb4aca69.entry.js} +1 -1
- package/dist/types/components/accordion/accordion.d.ts +10 -2
- package/dist/types/components/button/button.d.ts +9 -0
- package/dist/types/components/card/card.d.ts +4 -0
- package/dist/types/components/list-item/list-item.d.ts +1 -0
- package/dist/types/components/loader/loader.d.ts +145 -0
- package/dist/types/components/progress/progress.d.ts +34 -2
- package/dist/types/components.d.ts +509 -993
- package/dist/types/types/common.d.ts +1 -1
- package/dist/types/types/common.type.d.ts +1 -1
- package/package.json +8 -7
- package/dist/cjs/ui-checkbox-group.cjs.entry.js +0 -330
- package/dist/cjs/ui-image-button.cjs.entry.js +0 -67
- package/dist/cjs/ui-input-pair.cjs.entry.js +0 -44
- package/dist/cjs/ui-radio-group.cjs.entry.js +0 -205
- package/dist/cjs/ui-radio.cjs.entry.js +0 -206
- package/dist/collection/components/checkbox-group/checkbox-group.css +0 -223
- package/dist/collection/components/checkbox-group/checkbox-group.js +0 -1001
- package/dist/collection/components/checkbox-group/types.js +0 -1
- package/dist/collection/components/image-button/image-button.css +0 -154
- package/dist/collection/components/image-button/image-button.js +0 -310
- package/dist/collection/components/image-button/types.js +0 -1
- package/dist/collection/components/input-pair/input-pair.css +0 -72
- package/dist/collection/components/input-pair/input-pair.js +0 -309
- package/dist/collection/components/radio-group/radio-group.css +0 -202
- package/dist/collection/components/radio-group/radio-group.js +0 -903
- package/dist/collection/components/radio-group/types.js +0 -1
- package/dist/components/ui-checkbox-group.d.ts +0 -11
- package/dist/components/ui-checkbox-group.js +0 -1
- package/dist/components/ui-image-button.d.ts +0 -11
- package/dist/components/ui-image-button.js +0 -1
- package/dist/components/ui-input-pair.js +0 -1
- package/dist/components/ui-radio-group.d.ts +0 -11
- package/dist/components/ui-radio-group.js +0 -1
- package/dist/esm/ui-checkbox-group.entry.js +0 -328
- package/dist/esm/ui-image-button.entry.js +0 -65
- package/dist/esm/ui-input-pair.entry.js +0 -42
- package/dist/esm/ui-radio-group.entry.js +0 -203
- package/dist/esm/ui-radio.entry.js +0 -204
- package/dist/exploration-project-tailwind/p-01c7db7a.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-5ce0dbd8.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-6ab80ead.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-6e9694f2.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-7376ac95.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-77a21491.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-7f91d949.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-807c6555.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-D2WzX6vR.js +0 -2
- package/dist/exploration-project-tailwind/p-ab752761.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-ce1222a1.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-e90d5307.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-ecda1cc3.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-f11e5cae.entry.js +0 -1
- package/dist/types/components/checkbox-group/checkbox-group.d.ts +0 -87
- package/dist/types/components/checkbox-group/types.d.ts +0 -8
- package/dist/types/components/image-button/image-button.d.ts +0 -31
- package/dist/types/components/image-button/types.d.ts +0 -1
- package/dist/types/components/input-pair/input-pair.d.ts +0 -28
- package/dist/types/components/radio-group/radio-group.d.ts +0 -74
- package/dist/types/components/radio-group/types.d.ts +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
import{proxyCustomElement as t,HTMLElement as o,createEvent as e,h as i,transformTag as r}from"@stencil/core/internal/client";import{d as a,a as s}from"./badge.js";import{d as c}from"./icon.js";import{d as n}from"./tooltip.js";const d=t(class extends o{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.dockItemClick=e(this,"dockItemClick",7),this.itemsOrderChange=e(this,"itemsOrderChange",7)}items="[]";position="bottom";size="md";magnify=!0;blurEffect=!0;showLabels=!0;iconLibrary="default";persistKey="";parsedItems=[];hoveredIndex=-1;dockItemClick;itemsOrderChange;isDragging=!1;draggedIndex=-1;dragX=0;dragY=0;targetIndex=-1;itemsContainer;componentWillLoad(){if(this.persistKey)try{const t=localStorage.getItem(this.persistKey);if(t)return void(this.parsedItems=JSON.parse(t))}catch{}this.parseItems(this.items)}onItemsPropChange(t){this.parseItems(t)}parseItems(t){try{this.parsedItems=JSON.parse(t)}catch(t){console.error("Invalid JSON for dock items:",t),this.parsedItems=[]}}handleItemClick(t){t.disabled||t.separator||this.dockItemClick.emit({itemId:(t.id??"")+"",item:t})}handleMouseEnter(t){this.hoveredIndex=t}handleMouseLeave(){this.hoveredIndex=-1}getMagnificationScale(t){if(!this.magnify||-1===this.hoveredIndex)return 1;if(this.isDragging)return 1;const o=Math.abs(t-this.hoveredIndex);return Math.max(1,1+(1.6-1)*Math.exp(-o*o/3.125))}handleDragStart(t,o){this.parsedItems[o].separator||(this.isDragging=!0,this.draggedIndex=o,this.targetIndex=o,this.dragX=t.clientX,this.dragY=t.clientY,document.addEventListener("mousemove",this.handleGlobalMouseMove),document.addEventListener("mouseup",this.handleGlobalMouseUp))}handleGlobalMouseMove=t=>{if(this.isDragging&&(this.dragX=t.clientX,this.dragY=t.clientY,this.itemsContainer)){const o=Array.from(this.itemsContainer.querySelectorAll(".dock-item"));let e=-1,i=1/0;o.forEach(((o,r)=>{const a=o.getBoundingClientRect(),s=Math.abs("bottom"===this.position||"top"===this.position?t.clientX-(a.left+a.width/2):t.clientY-(a.top+a.height/2));s<i&&(i=s,e=r)})),-1!==e&&e!==this.targetIndex&&(this.targetIndex=e)}};handleGlobalMouseUp=()=>{if(this.isDragging){if(-1!==this.targetIndex&&this.targetIndex!==this.draggedIndex){const t=[...this.parsedItems],[o]=t.splice(this.draggedIndex,1);if(t.splice(this.targetIndex,0,o),this.parsedItems=t,this.itemsOrderChange.emit(this.parsedItems),this.persistKey)try{localStorage.setItem(this.persistKey,JSON.stringify(this.parsedItems))}catch{}}this.isDragging=!1,this.draggedIndex=-1,this.targetIndex=-1,document.removeEventListener("mousemove",this.handleGlobalMouseMove),document.removeEventListener("mouseup",this.handleGlobalMouseUp)}};renderDockItem(t,o){if(t.separator)return i("div",{class:"dock-separator",role:"separator"});const e=this.getMagnificationScale(o),r=this.hoveredIndex===o,a=this.draggedIndex===o,s=this.targetIndex===o;let c=0,n=0;if(this.isDragging&&!a){const t=40;"bottom"===this.position||"top"===this.position?(o>=this.targetIndex&&o<this.draggedIndex&&(c=t),o<=this.targetIndex&&o>this.draggedIndex&&(c=-t)):(o>=this.targetIndex&&o<this.draggedIndex&&(n=t),o<=this.targetIndex&&o>this.draggedIndex&&(n=-t))}const d={transform:a?`translate(${this.dragX-(this.dragX-0)}px, ${this.dragY-(this.dragY-0)}px) scale(1.1)`:`translate(${c}px, ${n}px) scale(${e})`,margin:`0 ${this.magnify&&-1!==this.hoveredIndex?4+20*(e-1):4}px`,transition:this.isDragging&&a?"none":"transform 0.2s cubic-bezier(0.4, 0, 0.2, 1), margin 0.2s cubic-bezier(0.4, 0, 0.2, 1)",zIndex:a?"1000":"1",pointerEvents:this.isDragging&&!a?"none":"auto",opacity:a?"0.8":"1"};return a&&(d.position="fixed",d.left=this.dragX-25+"px",d.top=this.dragY-25+"px",d.margin="0",d.transform="scale(1.2)"),i("ui-tooltip",{content:t.label,position:"bottom"===this.position?"top":"top"===this.position?"bottom":"left"===this.position?"right":"left",disabled:this.showLabels},i("div",{class:{"dock-item":!0,"dock-item-disabled":!!t.disabled,"dock-item-active":!!t.active,"dock-item-bounce":!!t.bounce,"dock-item-hovered":r,"dock-item-dragged":a,"dock-item-target":s},style:d,onClick:()=>!this.isDragging&&this.handleItemClick(t),onMouseEnter:()=>!this.isDragging&&this.handleMouseEnter(o),onMouseLeave:()=>!this.isDragging&&this.handleMouseLeave(),onMouseDown:t=>this.handleDragStart(t,o),role:"button",tabindex:t.disabled?-1:0,"aria-label":t.label,"aria-disabled":t.disabled?"true":"false",slot:"target"},i("div",{class:"dock-item-content"},t.icon&&i("div",{class:"dock-item-icon"},i("ui-icon",{name:t.icon,library:t.iconLibrary||this.iconLibrary,size:"1.5rem"})),void 0!==t.badge&&t.badge>0&&i("span",{class:"dock-item-badge"},t.badge)),t.active&&i("div",{class:"active-indicator"}),this.showLabels&&i("div",{class:"dock-item-label"},t.label)))}render(){return i("div",{key:"f022edbbd0b53e600fd30e5cf97cc1b2e83e0f38",class:{"dock-container":!0,["dock-"+this.position]:!0,["dock-"+this.size]:!0,"dock-blur":this.blurEffect}},i("div",{key:"abb7911fe7fbec90e25ccc030299d95ec148c36d",class:"dock-items",ref:t=>this.itemsContainer=t},this.parsedItems.map(((t,o)=>this.renderDockItem(t,o)))))}static get watchers(){return{items:[{onItemsPropChange:0}]}}static get style(){return'.sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}.a11y-sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}.dock-container{display:inline-flex;align-items:center;justify-content:center;padding:8px;border-radius:16px;background:var(--dock-bg, rgba(255, 255, 255, 0.8));box-shadow:var(--dock-shadow, 0 4px 16px rgba(0, 0, 0, 0.1));border:1px solid var(--dock-border, rgba(0, 0, 0, 0.1))}.dock-blur{backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.dock-bottom,.dock-top{flex-direction:row}.dock-left,.dock-right{flex-direction:column}.dock-items{display:flex;gap:8px;align-items:center}.dock-left .dock-items,.dock-right .dock-items{flex-direction:column}.dock-item{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;border-radius:12px;background:var(--dock-item-bg, transparent);transition:all 0.2s ease;outline:none}.dock-item:hover{background:var(--dock-item-hover-bg, rgba(0, 0, 0, 0.05))}.dock-item:focus{box-shadow:0 0 0 2px var(--primary-color, var(--color-primary, #10b981))}.dock-item:active{transform:scale(0.95) !important}.dock-item-disabled{opacity:0.4;cursor:not-allowed;pointer-events:none}.dock-sm .dock-item{width:40px;height:40px;padding:8px}.dock-md .dock-item{width:56px;height:56px;padding:12px}.dock-lg .dock-item{width:72px;height:72px;padding:16px}.dock-item-content{position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:100%}.dock-item-icon{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:inherit;color:var(--dock-icon-color, var(--text-primary, #1f2937))}.dock-item-icon svg{width:100%;height:100%;fill:currentColor}.dock-sm .dock-item-icon{font-size:20px}.dock-md .dock-item-icon{font-size:28px}.dock-lg .dock-item-icon{font-size:36px}.dock-item-badge{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;padding:0 5px;display:flex;align-items:center;justify-content:center;background-color:var(--badge-bg, var(--color-danger, #ef4444));color:var(--badge-color, var(--text-standard, #ffffff));border-radius:9px;font-size:11px;font-weight:600;line-height:1;border:2px solid var(--dock-bg, var(--bg-primary, #ffffff))}.dock-item-label{position:absolute;padding:6px 12px;background:var(--label-bg, rgba(0, 0, 0, 0.8));color:var(--label-color, var(--text-standard, #ffffff));border-radius:6px;font-size:12px;font-weight:500;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity 0.2s ease;z-index:10}.dock-bottom .dock-item-label{bottom:calc(100% + 12px);left:50%;transform:translateX(-50%)}.dock-top .dock-item-label{top:calc(100% + 12px);left:50%;transform:translateX(-50%)}.dock-left .dock-item-label{left:calc(100% + 12px);top:50%;transform:translateY(-50%)}.dock-right .dock-item-label{right:calc(100% + 12px);top:50%;transform:translateY(-50%)}.dock-item-hovered .dock-item-label{opacity:1}.dock-item-label::after{content:"";position:absolute;width:0;height:0;border:5px solid transparent}.dock-bottom .dock-item-label::after{top:100%;left:50%;transform:translateX(-50%);border-top-color:var(--label-bg, rgba(0, 0, 0, 0.8))}.dock-top .dock-item-label::after{bottom:100%;left:50%;transform:translateX(-50%);border-bottom-color:var(--label-bg, rgba(0, 0, 0, 0.8))}.dock-left .dock-item-label::after{right:100%;top:50%;transform:translateY(-50%);border-right-color:var(--label-bg, rgba(0, 0, 0, 0.8))}.dock-right .dock-item-label::after{left:100%;top:50%;transform:translateY(-50%);border-left-color:var(--label-bg, rgba(0, 0, 0, 0.8))}@media (prefers-color-scheme: dark){.dock-container{background:var(--dock-bg, rgba(30, 30, 30, 0.8));border-color:var(--dock-border, rgba(255, 255, 255, 0.1))}.dock-item:hover{background:var(--dock-item-hover-bg, rgba(255, 255, 255, 0.1))}.dock-item-icon{color:var(--dock-icon-color, #f3f4f6)}}@media (prefers-reduced-motion: reduce){.dock-item,.dock-item-label,.dock-item-bounce{transition:none;animation:none}}.active-indicator{position:absolute;width:4px;height:4px;background-color:var(--active-indicator-color, var(--color-primary, #10b981));border-radius:50%;bottom:4px}.dock-top .active-indicator{top:4px;bottom:auto}.dock-left .active-indicator{left:4px;top:50%;transform:translateY(-50%);bottom:auto}.dock-right .active-indicator{right:4px;top:50%;transform:translateY(-50%);bottom:auto}@keyframes dockBounce{0%,20%,50%,80%,100%{transform:translateY(0) scale(1)}40%{transform:translateY(-10px) scale(1)}60%{transform:translateY(-5px) scale(1)}}.dock-item-bounce{animation:dockBounce 2s infinite}.dock-separator{width:1px;height:24px;background-color:var(--separator-bg, rgba(0, 0, 0, 0.1));margin:0 4px}.dock-left .dock-separator,.dock-right .dock-separator{width:24px;height:1px;margin:4px 0}@media (prefers-color-scheme: dark){.dock-separator{background-color:rgba(255, 255, 255, 0.1)}.active-indicator{background-color:var(--color-primary, #60a5fa)}}'}},[513,"ui-dock",{items:[1],position:[1],size:[1],magnify:[4],blurEffect:[4,"blur-effect"],showLabels:[4,"show-labels"],iconLibrary:[1,"icon-library"],persistKey:[1,"persist-key"],parsedItems:[32],hoveredIndex:[32],isDragging:[32],draggedIndex:[32],dragX:[32],dragY:[32],targetIndex:[32]},void 0,{items:[{onItemsPropChange:0}]}]),l=d,h=function(){"undefined"!=typeof customElements&&["ui-dock","ui-badge","ui-button","ui-icon","ui-tooltip"].forEach((t=>{switch(t){case"ui-dock":customElements.get(r(t))||customElements.define(r(t),d);break;case"ui-badge":customElements.get(r(t))||s();break;case"ui-button":customElements.get(r(t))||a();break;case"ui-icon":customElements.get(r(t))||c();break;case"ui-tooltip":customElements.get(r(t))||n()}}))};export{l as UiDock,h as defineCustomElement}
|
|
1
|
+
import{proxyCustomElement as t,HTMLElement as o,createEvent as e,h as i,transformTag as r}from"@stencil/core/internal/client";import{d as a,a as s}from"./badge.js";import{d as c}from"./icon.js";import{d as n}from"./loader.js";import{d}from"./tooltip.js";const l=t(class extends o{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.dockItemClick=e(this,"dockItemClick",7),this.itemsOrderChange=e(this,"itemsOrderChange",7)}items="[]";position="bottom";size="md";magnify=!0;blurEffect=!0;showLabels=!0;iconLibrary="default";persistKey="";parsedItems=[];hoveredIndex=-1;dockItemClick;itemsOrderChange;isDragging=!1;draggedIndex=-1;dragX=0;dragY=0;targetIndex=-1;itemsContainer;componentWillLoad(){if(this.persistKey)try{const t=localStorage.getItem(this.persistKey);if(t)return void(this.parsedItems=JSON.parse(t))}catch{}this.parseItems(this.items)}onItemsPropChange(t){this.parseItems(t)}parseItems(t){try{this.parsedItems=JSON.parse(t)}catch(t){console.error("Invalid JSON for dock items:",t),this.parsedItems=[]}}handleItemClick(t){t.disabled||t.separator||this.dockItemClick.emit({itemId:(t.id??"")+"",item:t})}handleMouseEnter(t){this.hoveredIndex=t}handleMouseLeave(){this.hoveredIndex=-1}getMagnificationScale(t){if(!this.magnify||-1===this.hoveredIndex)return 1;if(this.isDragging)return 1;const o=Math.abs(t-this.hoveredIndex);return Math.max(1,1+(1.6-1)*Math.exp(-o*o/3.125))}handleDragStart(t,o){this.parsedItems[o].separator||(this.isDragging=!0,this.draggedIndex=o,this.targetIndex=o,this.dragX=t.clientX,this.dragY=t.clientY,document.addEventListener("mousemove",this.handleGlobalMouseMove),document.addEventListener("mouseup",this.handleGlobalMouseUp))}handleGlobalMouseMove=t=>{if(this.isDragging&&(this.dragX=t.clientX,this.dragY=t.clientY,this.itemsContainer)){const o=Array.from(this.itemsContainer.querySelectorAll(".dock-item"));let e=-1,i=1/0;o.forEach(((o,r)=>{const a=o.getBoundingClientRect(),s=Math.abs("bottom"===this.position||"top"===this.position?t.clientX-(a.left+a.width/2):t.clientY-(a.top+a.height/2));s<i&&(i=s,e=r)})),-1!==e&&e!==this.targetIndex&&(this.targetIndex=e)}};handleGlobalMouseUp=()=>{if(this.isDragging){if(-1!==this.targetIndex&&this.targetIndex!==this.draggedIndex){const t=[...this.parsedItems],[o]=t.splice(this.draggedIndex,1);if(t.splice(this.targetIndex,0,o),this.parsedItems=t,this.itemsOrderChange.emit(this.parsedItems),this.persistKey)try{localStorage.setItem(this.persistKey,JSON.stringify(this.parsedItems))}catch{}}this.isDragging=!1,this.draggedIndex=-1,this.targetIndex=-1,document.removeEventListener("mousemove",this.handleGlobalMouseMove),document.removeEventListener("mouseup",this.handleGlobalMouseUp)}};renderDockItem(t,o){if(t.separator)return i("div",{class:"dock-separator",role:"separator"});const e=this.getMagnificationScale(o),r=this.hoveredIndex===o,a=this.draggedIndex===o,s=this.targetIndex===o;let c=0,n=0;if(this.isDragging&&!a){const t=40;"bottom"===this.position||"top"===this.position?(o>=this.targetIndex&&o<this.draggedIndex&&(c=t),o<=this.targetIndex&&o>this.draggedIndex&&(c=-t)):(o>=this.targetIndex&&o<this.draggedIndex&&(n=t),o<=this.targetIndex&&o>this.draggedIndex&&(n=-t))}const d={transform:a?`translate(${this.dragX-(this.dragX-0)}px, ${this.dragY-(this.dragY-0)}px) scale(1.1)`:`translate(${c}px, ${n}px) scale(${e})`,margin:`0 ${this.magnify&&-1!==this.hoveredIndex?4+20*(e-1):4}px`,transition:this.isDragging&&a?"none":"transform 0.2s cubic-bezier(0.4, 0, 0.2, 1), margin 0.2s cubic-bezier(0.4, 0, 0.2, 1)",zIndex:a?"1000":"1",pointerEvents:this.isDragging&&!a?"none":"auto",opacity:a?"0.8":"1"};return a&&(d.position="fixed",d.left=this.dragX-25+"px",d.top=this.dragY-25+"px",d.margin="0",d.transform="scale(1.2)"),i("ui-tooltip",{content:t.label,position:"bottom"===this.position?"top":"top"===this.position?"bottom":"left"===this.position?"right":"left",disabled:this.showLabels},i("div",{class:{"dock-item":!0,"dock-item-disabled":!!t.disabled,"dock-item-active":!!t.active,"dock-item-bounce":!!t.bounce,"dock-item-hovered":r,"dock-item-dragged":a,"dock-item-target":s},style:d,onClick:()=>!this.isDragging&&this.handleItemClick(t),onMouseEnter:()=>!this.isDragging&&this.handleMouseEnter(o),onMouseLeave:()=>!this.isDragging&&this.handleMouseLeave(),onMouseDown:t=>this.handleDragStart(t,o),role:"button",tabindex:t.disabled?-1:0,"aria-label":t.label,"aria-disabled":t.disabled?"true":"false",slot:"target"},i("div",{class:"dock-item-content"},t.icon&&i("div",{class:"dock-item-icon"},i("ui-icon",{name:t.icon,library:t.iconLibrary||this.iconLibrary,size:"1.5rem"})),void 0!==t.badge&&t.badge>0&&i("span",{class:"dock-item-badge"},t.badge)),t.active&&i("div",{class:"active-indicator"}),this.showLabels&&i("div",{class:"dock-item-label"},t.label)))}render(){return i("div",{key:"f022edbbd0b53e600fd30e5cf97cc1b2e83e0f38",class:{"dock-container":!0,["dock-"+this.position]:!0,["dock-"+this.size]:!0,"dock-blur":this.blurEffect}},i("div",{key:"abb7911fe7fbec90e25ccc030299d95ec148c36d",class:"dock-items",ref:t=>this.itemsContainer=t},this.parsedItems.map(((t,o)=>this.renderDockItem(t,o)))))}static get watchers(){return{items:[{onItemsPropChange:0}]}}static get style(){return'.sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}.a11y-sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}.dock-container{display:inline-flex;align-items:center;justify-content:center;padding:8px;border-radius:16px;background:var(--dock-bg, rgba(255, 255, 255, 0.8));box-shadow:var(--dock-shadow, 0 4px 16px rgba(0, 0, 0, 0.1));border:1px solid var(--dock-border, rgba(0, 0, 0, 0.1))}.dock-blur{backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.dock-bottom,.dock-top{flex-direction:row}.dock-left,.dock-right{flex-direction:column}.dock-items{display:flex;gap:8px;align-items:center}.dock-left .dock-items,.dock-right .dock-items{flex-direction:column}.dock-item{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;border-radius:12px;background:var(--dock-item-bg, transparent);transition:all 0.2s ease;outline:none}.dock-item:hover{background:var(--dock-item-hover-bg, rgba(0, 0, 0, 0.05))}.dock-item:focus{box-shadow:0 0 0 2px var(--primary-color, var(--color-primary, #10b981))}.dock-item:active{transform:scale(0.95) !important}.dock-item-disabled{opacity:0.4;cursor:not-allowed;pointer-events:none}.dock-sm .dock-item{width:40px;height:40px;padding:8px}.dock-md .dock-item{width:56px;height:56px;padding:12px}.dock-lg .dock-item{width:72px;height:72px;padding:16px}.dock-item-content{position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:100%}.dock-item-icon{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:inherit;color:var(--dock-icon-color, var(--text-primary, #1f2937))}.dock-item-icon svg{width:100%;height:100%;fill:currentColor}.dock-sm .dock-item-icon{font-size:20px}.dock-md .dock-item-icon{font-size:28px}.dock-lg .dock-item-icon{font-size:36px}.dock-item-badge{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;padding:0 5px;display:flex;align-items:center;justify-content:center;background-color:var(--badge-bg, var(--color-danger, #ef4444));color:var(--badge-color, var(--text-standard, #ffffff));border-radius:9px;font-size:11px;font-weight:600;line-height:1;border:2px solid var(--dock-bg, var(--bg-primary, #ffffff))}.dock-item-label{position:absolute;padding:6px 12px;background:var(--label-bg, rgba(0, 0, 0, 0.8));color:var(--label-color, var(--text-standard, #ffffff));border-radius:6px;font-size:12px;font-weight:500;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity 0.2s ease;z-index:10}.dock-bottom .dock-item-label{bottom:calc(100% + 12px);left:50%;transform:translateX(-50%)}.dock-top .dock-item-label{top:calc(100% + 12px);left:50%;transform:translateX(-50%)}.dock-left .dock-item-label{left:calc(100% + 12px);top:50%;transform:translateY(-50%)}.dock-right .dock-item-label{right:calc(100% + 12px);top:50%;transform:translateY(-50%)}.dock-item-hovered .dock-item-label{opacity:1}.dock-item-label::after{content:"";position:absolute;width:0;height:0;border:5px solid transparent}.dock-bottom .dock-item-label::after{top:100%;left:50%;transform:translateX(-50%);border-top-color:var(--label-bg, rgba(0, 0, 0, 0.8))}.dock-top .dock-item-label::after{bottom:100%;left:50%;transform:translateX(-50%);border-bottom-color:var(--label-bg, rgba(0, 0, 0, 0.8))}.dock-left .dock-item-label::after{right:100%;top:50%;transform:translateY(-50%);border-right-color:var(--label-bg, rgba(0, 0, 0, 0.8))}.dock-right .dock-item-label::after{left:100%;top:50%;transform:translateY(-50%);border-left-color:var(--label-bg, rgba(0, 0, 0, 0.8))}@media (prefers-color-scheme: dark){.dock-container{background:var(--dock-bg, rgba(30, 30, 30, 0.8));border-color:var(--dock-border, rgba(255, 255, 255, 0.1))}.dock-item:hover{background:var(--dock-item-hover-bg, rgba(255, 255, 255, 0.1))}.dock-item-icon{color:var(--dock-icon-color, #f3f4f6)}}@media (prefers-reduced-motion: reduce){.dock-item,.dock-item-label,.dock-item-bounce{transition:none;animation:none}}.active-indicator{position:absolute;width:4px;height:4px;background-color:var(--active-indicator-color, var(--color-primary, #10b981));border-radius:50%;bottom:4px}.dock-top .active-indicator{top:4px;bottom:auto}.dock-left .active-indicator{left:4px;top:50%;transform:translateY(-50%);bottom:auto}.dock-right .active-indicator{right:4px;top:50%;transform:translateY(-50%);bottom:auto}@keyframes dockBounce{0%,20%,50%,80%,100%{transform:translateY(0) scale(1)}40%{transform:translateY(-10px) scale(1)}60%{transform:translateY(-5px) scale(1)}}.dock-item-bounce{animation:dockBounce 2s infinite}.dock-separator{width:1px;height:24px;background-color:var(--separator-bg, rgba(0, 0, 0, 0.1));margin:0 4px}.dock-left .dock-separator,.dock-right .dock-separator{width:24px;height:1px;margin:4px 0}@media (prefers-color-scheme: dark){.dock-separator{background-color:rgba(255, 255, 255, 0.1)}.active-indicator{background-color:var(--color-primary, #60a5fa)}}'}},[513,"ui-dock",{items:[1],position:[1],size:[1],magnify:[4],blurEffect:[4,"blur-effect"],showLabels:[4,"show-labels"],iconLibrary:[1,"icon-library"],persistKey:[1,"persist-key"],parsedItems:[32],hoveredIndex:[32],isDragging:[32],draggedIndex:[32],dragX:[32],dragY:[32],targetIndex:[32]},void 0,{items:[{onItemsPropChange:0}]}]),h=l,m=function(){"undefined"!=typeof customElements&&["ui-dock","ui-badge","ui-button","ui-icon","ui-loader","ui-tooltip"].forEach((t=>{switch(t){case"ui-dock":customElements.get(r(t))||customElements.define(r(t),l);break;case"ui-badge":customElements.get(r(t))||s();break;case"ui-button":customElements.get(r(t))||a();break;case"ui-icon":customElements.get(r(t))||c();break;case"ui-loader":customElements.get(r(t))||n();break;case"ui-tooltip":customElements.get(r(t))||d()}}))};export{h as UiDock,m as defineCustomElement}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{proxyCustomElement as r,HTMLElement as t,createEvent as i,h as a,transformTag as o}from"@stencil/core/internal/client";const e=r(class extends t{constructor(r){super(),!1!==r&&this.__registerHost(),this.__attachShadow(),this.uiDragDropChange=i(this,"uiDragDropChange",7),this.uiDragStart=i(this,"uiDragStart",7),this.uiDragEnd=i(this,"uiDragEnd",7),this.uiDrop=i(this,"uiDrop",7)}get el(){return this}items=[];orientation="vertical";gap="0.5rem";draggableEnabled=!0;group="";internalItems=[];draggingIndex=null;dragOverIndex=null;uiDragDropChange;uiDragStart;uiDragEnd;uiDrop;componentWillLoad(){this.syncItems()}watchItems(){this.syncItems()}syncItems(){this.internalItems=(this.items??[]).map((r=>({...r})))}onDragStart(r,t){if(!this.draggableEnabled)return void r.preventDefault();this.draggingIndex=t;const i=this.internalItems[t];if(r.dataTransfer){const a=JSON.stringify({item:i,index:t,group:this.group});r.dataTransfer.setData("application/x-ui-drag-drop",a),r.dataTransfer.effectAllowed="move",r.dataTransfer.setDragImage(r.currentTarget,20,20)}this.uiDragStart.emit({item:i,index:t})}onDragOver(r,t){r.preventDefault(),r.dataTransfer&&(r.dataTransfer.dropEffect="move"),t!==this.draggingIndex&&(this.dragOverIndex="horizontal"===this.orientation&&"rtl"===getComputedStyle(this.el).direction&&null!==this.draggingIndex?this.internalItems.length-1-this.draggingIndex!=this.internalItems.length-1-t?t:this.dragOverIndex:t)}onDrop(r,t){r.preventDefault();const i=r.dataTransfer?.getData("application/x-ui-drag-drop");if(i){try{const{item:r,index:a,group:o}=JSON.parse(i);if(this.group&&o!==this.group)return;const e=null!==this.draggingIndex,d="horizontal"===this.orientation&&"rtl"===getComputedStyle(this.el).direction,s=d?this.internalItems.length-1-t:t;if(e)this.reorder(d&&d?this.internalItems.length-1-a:a,s);else{const t=[...this.internalItems];t.splice(s,0,r),this.internalItems=t}this.uiDrop.emit({item:r,sourceIndex:a,targetIndex:t,sourceGroup:o}),this.emitOrder()}catch(r){console.error("Failed to parse drag-drop data",r)}this.draggingIndex=null,this.dragOverIndex=null}}onDragEnd(){null!==this.draggingIndex&&this.uiDragEnd.emit({item:this.internalItems[this.draggingIndex],index:this.draggingIndex}),this.draggingIndex=null,this.dragOverIndex=null}reorder(r,t){const i=[...this.internalItems],[a]=i.splice(r,1);i.splice(t,0,a),this.internalItems=i}emitOrder(){this.uiDragDropChange.emit({items:this.internalItems,order:this.internalItems.map((r=>r.id+"")).filter((r=>"undefined"!==r))})}renderItem(r,t){return a("div",{class:{"drag-drop__item":!0,"drag-drop__item--dragging":t===this.draggingIndex,"drag-drop__item--over":t===this.dragOverIndex},role:"listitem",draggable:this.draggableEnabled,onDragStart:r=>this.onDragStart(r,t),onDragOver:r=>this.onDragOver(r,t),onDrop:r=>this.onDrop(r,t),onDragEnd:()=>this.onDragEnd()},a("span",{class:"drag-drop__handle","aria-hidden":"true"},"::"),a("div",{class:"drag-drop__content"},a("span",{class:"drag-drop__label"},r.label),r.description&&a("span",{class:"drag-drop__description"},r.description),r.detail&&a("sm",{class:"drag-drop__detail"},r.detail)))}render(){return a("div",{key:"
|
|
1
|
+
import{proxyCustomElement as r,HTMLElement as t,createEvent as i,h as a,transformTag as o}from"@stencil/core/internal/client";const e=r(class extends t{constructor(r){super(),!1!==r&&this.__registerHost(),this.__attachShadow(),this.uiDragDropChange=i(this,"uiDragDropChange",7),this.uiDragStart=i(this,"uiDragStart",7),this.uiDragEnd=i(this,"uiDragEnd",7),this.uiDrop=i(this,"uiDrop",7)}get el(){return this}items=[];orientation="vertical";gap="0.5rem";draggableEnabled=!0;group="";internalItems=[];draggingIndex=null;dragOverIndex=null;uiDragDropChange;uiDragStart;uiDragEnd;uiDrop;componentWillLoad(){this.syncItems()}watchItems(){this.syncItems()}syncItems(){this.internalItems=(this.items??[]).map((r=>({...r})))}onDragStart(r,t){if(!this.draggableEnabled)return void r.preventDefault();this.draggingIndex=t;const i=this.internalItems[t];if(r.dataTransfer){const a=JSON.stringify({item:i,index:t,group:this.group});r.dataTransfer.setData("application/x-ui-drag-drop",a),r.dataTransfer.effectAllowed="move",r.dataTransfer.setDragImage(r.currentTarget,20,20)}this.uiDragStart.emit({item:i,index:t})}onDragOver(r,t){r.preventDefault(),r.dataTransfer&&(r.dataTransfer.dropEffect="move"),t!==this.draggingIndex&&(this.dragOverIndex="horizontal"===this.orientation&&"rtl"===getComputedStyle(this.el).direction&&null!==this.draggingIndex?this.internalItems.length-1-this.draggingIndex!=this.internalItems.length-1-t?t:this.dragOverIndex:t)}onDrop(r,t){r.preventDefault();const i=r.dataTransfer?.getData("application/x-ui-drag-drop");if(i){try{const{item:r,index:a,group:o}=JSON.parse(i);if(this.group&&o!==this.group)return;const e=null!==this.draggingIndex,d="horizontal"===this.orientation&&"rtl"===getComputedStyle(this.el).direction,s=d?this.internalItems.length-1-t:t;if(e)this.reorder(d&&d?this.internalItems.length-1-a:a,s);else{const t=[...this.internalItems];t.splice(s,0,r),this.internalItems=t}this.uiDrop.emit({item:r,sourceIndex:a,targetIndex:t,sourceGroup:o}),this.emitOrder()}catch(r){console.error("Failed to parse drag-drop data",r)}this.draggingIndex=null,this.dragOverIndex=null}}onDragEnd(){null!==this.draggingIndex&&this.uiDragEnd.emit({item:this.internalItems[this.draggingIndex],index:this.draggingIndex}),this.draggingIndex=null,this.dragOverIndex=null}reorder(r,t){const i=[...this.internalItems],[a]=i.splice(r,1);i.splice(t,0,a),this.internalItems=i}emitOrder(){this.uiDragDropChange.emit({items:this.internalItems,order:this.internalItems.map((r=>r.id+"")).filter((r=>"undefined"!==r))})}renderItem(r,t){return a("div",{class:{"drag-drop__item":!0,"drag-drop__item--dragging":t===this.draggingIndex,"drag-drop__item--over":t===this.dragOverIndex},role:"listitem",draggable:this.draggableEnabled,onDragStart:r=>this.onDragStart(r,t),onDragOver:r=>this.onDragOver(r,t),onDrop:r=>this.onDrop(r,t),onDragEnd:()=>this.onDragEnd()},a("span",{class:"drag-drop__handle","aria-hidden":"true"},"::"),a("div",{class:"drag-drop__content"},a("span",{class:"drag-drop__label"},r.label),r.description&&a("span",{class:"drag-drop__description"},r.description),r.detail&&a("sm",{class:"drag-drop__detail"},r.detail)))}render(){return a("div",{key:"8610eaa90602aa5ddeebce5afe2437eec3aebc97",class:{"drag-drop":!0,["drag-drop--"+this.orientation]:!0},style:{gap:this.gap},role:"list"},this.internalItems.map(((r,t)=>this.renderItem(r,t))))}static get watchers(){return{items:[{watchItems:0}]}}static get style(){return".sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}.a11y-sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}:host{display:block}.drag-drop{display:flex;flex-direction:column;align-items:stretch;gap:var(--drag-drop-gap, 0.5rem);background:var(--drag-drop-background, transparent);padding:var(--drag-drop-padding, 0)}.drag-drop--horizontal{flex-direction:row;flex-wrap:wrap}.drag-drop__item{display:flex;align-items:center;padding:0.75rem 1rem;background:var(--drag-drop-item-background, var(--ui-color-surface, var(--bg-primary, #ffffff)));border:1px solid var(--drag-drop-border-color, var(--ui-color-border, #d9d9d9));border-radius:var(--drag-drop-border-radius, 0.5rem);box-shadow:var(--drag-drop-item-shadow, 0 1px 2px rgba(15, 23, 42, 0.05));transition:transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;cursor:grab}.drag-drop__item--dragging{opacity:0.5;box-shadow:var(--drag-drop-dragging-shadow, 0 15px 25px rgba(15, 23, 42, 0.15))}.drag-drop__item--over{border-color:var(--drag-drop-highlight-color, var(--ui-color-primary, #0b5fff))}.drag-drop__handle{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;margin-inline-end:0.75rem;border-radius:50%;background:var(--drag-drop-handle-background, rgba(15, 23, 42, 0.05));color:var(--drag-drop-handle-color, var(--ui-color-base, #0b5fff));font-size:1rem;line-height:1;cursor:grab}.drag-drop__content{flex:1;display:flex;flex-direction:column;gap:0.2rem}.drag-drop__label{font-weight:600;color:var(--drag-drop-label-color, var(--ui-color-base, #0f172a))}.drag-drop__description{font-size:0.875rem;color:var(--drag-drop-description-color, var(--ui-color-muted, var(--text-muted, #6b7280)))}.drag-drop__detail{font-size:0.75rem;color:var(--drag-drop-detail-color, var(--ui-color-muted, var(--text-muted, #6b7280)))}.drag-drop__item:active{cursor:grabbing}"}},[513,"ui-drag-drop",{items:[16],orientation:[1],gap:[1],draggableEnabled:[4,"draggable-enabled"],group:[1],internalItems:[32],draggingIndex:[32],dragOverIndex:[32]},void 0,{items:[{watchItems:0}]}]),d=e,s=function(){"undefined"!=typeof customElements&&["ui-drag-drop"].forEach((r=>{"ui-drag-drop"===r&&(customElements.get(o(r))||customElements.define(o(r),e))}))};export{d as UiDragDrop,s as defineCustomElement}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{proxyCustomElement as t,HTMLElement as e,createEvent as a,h as i,Host as o,transformTag as r}from"@stencil/core/internal/client";import{d as n,a as s}from"./badge.js";import{d as c}from"./icon.js";import{d as l}from"./input.js";const m=t(class extends e{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.actionClick=a(this,"actionClick",7),this.backClick=a(this,"backClick",7),this.itemClick=a(this,"itemClick",7),this.searchChange=a(this,"searchChange",7),this.retry=a(this,"retry",7)}heading;message;type="no-data";icon;image;imageAlt="Empty state";iconColor;iconSize="64px";variant="default";size="md";align="center";rounded=!1;elevated=!1;fullHeight=!1;padding;maxWidth="500px";compact=!1;loadingAction;illustration;confetti=!1;description;showSearch=!1;searchPlaceholder="Try another search...";searchValue="";retryDelay=0;retryLabel="Retrying in {n}s...";actions="[]";primaryAction;primaryActionIcon;secondaryAction;secondaryActionIcon;items="[]";itemsTitle;showBackButton=!1;backButtonLabel="Go Back";animated=!0;customClass;actionClick;backClick;itemClick;searchChange;retry;parseActions(){if("string"==typeof this.actions)try{return JSON.parse(this.actions)}catch{return[]}return this.actions||[]}parseItems(){if("string"==typeof this.items)try{return JSON.parse(this.items)}catch{return[]}return this.items||[]}handleActionClick(t){this.actionClick.emit({action:t.label,value:t.value})}handlePrimaryAction(){this.primaryAction&&this.actionClick.emit({action:"primary",value:this.primaryAction})}handleSecondaryAction(){this.secondaryAction&&this.actionClick.emit({action:"secondary",value:this.secondaryAction})}handleBackClick(){this.backClick.emit()}handleItemClick(t){this.itemClick.emit({item:t})}handleSearchChange(t){this.searchChange.emit(t.target.value)}currentRetryCount=0;retryTimer;onRetryDelayChange(){this.retryDelay>0?this.startRetryTimer():this.retryTimer&&clearInterval(this.retryTimer)}componentWillLoad(){this.retryDelay>0&&this.startRetryTimer()}startRetryTimer(){this.currentRetryCount=this.retryDelay,this.retryTimer&&clearInterval(this.retryTimer),this.retryTimer=setInterval((()=>{this.currentRetryCount--,this.currentRetryCount<=0&&(clearInterval(this.retryTimer),this.retry.emit())}),1e3)}disconnectedCallback(){this.retryTimer&&clearInterval(this.retryTimer)}getDefaultContent(){const t={"no-data":{icon:"inbox",library:"fontawesome",heading:"No Data Available",message:"There is no data to display at the moment."},"no-results":{icon:"search",library:"fontawesome",heading:"No Results Found",message:"We couldn't find any results matching your search."},error:{icon:"exclamation-triangle",library:"fontawesome",heading:"Something Went Wrong",message:"An error occurred while loading the data. Please try again."},404:{icon:"frown",library:"fontawesome",heading:"404 - Not Found",message:"The resource you are looking for has vanished into the void."},401:{icon:"user-lock",library:"fontawesome",heading:"401 - Unauthorized",message:"Please log in to access this protected area."},403:{icon:"ban",library:"fontawesome",heading:"403 - Forbidden",message:"You do not have the required permissions to view this content."},405:{icon:"hand-paper",library:"fontawesome",heading:"405 - Method Not Allowed",message:"This action is not supported for this resource."},410:{icon:"trash-alt",library:"fontawesome",heading:"410 - Gone",message:"This resource has been permanently removed."},418:{icon:"coffee",library:"fontawesome",heading:"418 - I'm a Teapot",message:"I refuse to brew coffee because I am, short and stout, a teapot."},429:{icon:"hourglass-half",library:"fontawesome",heading:"429 - Too Many Requests",message:"You've sent too many requests. Please take a breath and try again later."},500:{icon:"server",library:"fontawesome",heading:"500 - Server Error",message:"Something went wrong on our end. Our best minds are on it."},503:{icon:"plug",library:"fontawesome",heading:"503 - Service Unavailable",message:"The server is temporarily down for maintenance or overloaded."},offline:{icon:"wifi",library:"fontawesome",heading:"No Internet Connection",message:"Check your network cables, modem, and router or try reconnecting."},onboarding:{icon:"paper-plane",library:"fontawesome",heading:"Welcome Abroad!",message:"Get started by creating your first project or inviting teammates."},accomplishment:{icon:"trophy",library:"fontawesome",heading:"You're All Caught Up!",message:"Great job! You've completed everything on your list for today."},success:{icon:"check-circle",library:"fontawesome",heading:"Mission Accomplished",message:"Action completed successfully. Everything looks perfect."},"no-messages":{icon:"comment-slash",library:"fontawesome",heading:"No Messages Yet",message:"It's quiet here. Start a conversation to see messages appear."},"no-notifications":{icon:"bell-slash",library:"fontawesome",heading:"No New Notifications",message:"We'll let you know when something important happens."},"no-favorites":{icon:"heart-broken",library:"fontawesome",heading:"No Favorites Saved",message:"Tap the heart icon on items you love to save them here."},"no-tasks":{icon:"clipboard-check",library:"fontawesome",heading:"No Tasks Found",message:"Your list is empty. Add a new task to stay organized."},"no-history":{icon:"history",library:"fontawesome",heading:"No Recent Activity",message:"Your history will appear here once you start using the app."},"no-files":{icon:"folder-open",library:"fontawesome",heading:"Folder is Empty",message:'Drag and drop files here to upload or click "New File".'},paywall:{icon:"crown",library:"fontawesome",heading:"Premium Feature",message:"Unlock this and 50+ other features with a Pro subscription."},"no-search":{icon:"search-minus",library:"fontawesome",heading:"No Results Matching Filters",message:"Try adjusting your search terms or filters to find what you need."},empty:{icon:"folder-open",library:"fontawesome",heading:"Nothing Here Yet",message:"Get started by adding your first item."},"coming-soon":{icon:"rocket",library:"fontawesome",heading:"Coming Soon",message:"This feature is under development and will be available soon."},maintenance:{icon:"tools",library:"fontawesome",heading:"Under Maintenance",message:"We are currently performing maintenance. Please check back later."},custom:{icon:"info-circle",library:"fontawesome",heading:"Empty State",message:"No content available."}};return t[this.type]||t.custom}renderIcon(){const t=this.getDefaultContent(),e=this.icon||t.icon;if(this.image)return i("div",{class:"empty-state-image"},i("img",{src:this.image,alt:this.imageAlt}));if(this.illustration){if(this.illustration.startsWith("http")||this.illustration.startsWith("/")||this.illustration.includes("."))return i("div",{class:"empty-state-illustration"},i("img",{src:this.illustration,alt:this.imageAlt}));const a={"no-data":i("svg",{viewBox:"0 0 200 160",fill:"none",class:"illust-svg"},i("rect",{x:"40",y:"40",width:"120",height:"80",rx:"8",fill:"currentColor","fill-opacity":"0.1"}),i("path",{d:"M40 60h120M70 80h60M70 100h30",stroke:"currentColor","stroke-width":"2","stroke-opacity":"0.2","stroke-linecap":"round"}),i("circle",{cx:"100",cy:"80",r:"20",fill:"currentColor","fill-opacity":"0.05"})),error:i("svg",{viewBox:"0 0 200 160",fill:"none",class:"illust-svg illust-error"},i("circle",{cx:"100",cy:"80",r:"50",fill:"currentColor","fill-opacity":"0.1"}),i("path",{d:"M100 50v40M100 105v5",stroke:"currentColor","stroke-width":"6","stroke-linecap":"round"}),i("path",{d:"M60 120l80-80",stroke:"currentColor","stroke-width":"2","stroke-opacity":"0.3","stroke-dasharray":"5 5"})),"no-results":i("svg",{viewBox:"0 0 200 160",fill:"none",class:"illust-svg"},i("circle",{cx:"90",cy:"70",r:"30",stroke:"currentColor","stroke-width":"3","stroke-opacity":"0.2"}),i("path",{d:"M115 95l30 30",stroke:"currentColor","stroke-width":"3","stroke-opacity":"0.2","stroke-linecap":"round"}),i("rect",{x:"40",y:"110",width:"120",height:"4",rx:"2",fill:"currentColor","fill-opacity":"0.1"})),offline:i("svg",{viewBox:"0 0 200 160",fill:"none",class:"illust-svg"},i("path",{d:"M50 80a70 70 0 0 1 100 0M70 100a40 40 0 0 1 60 0M100 120h.01",stroke:"currentColor","stroke-width":"3","stroke-opacity":"0.2","stroke-linecap":"round"}),i("line",{x1:"60",y1:"50",x2:"140",y2:"130",stroke:"currentColor","stroke-width":"2","stroke-opacity":"0.5"}))};return i("div",{class:"empty-state-illustration illustration-"+this.illustration},a[this.illustration]||i("div",{class:"illustration-placeholder"},i("ui-icon",{name:e,library:t.library||"fontawesome",size:"48px"}),i("div",{class:"illustration-glow"})))}return i("div",{class:"empty-state-icon"},e?i("slot",{name:"icon"},i("ui-icon",{name:e,library:t.library||"fontawesome",size:this.iconSize,color:this.iconColor||"currentColor"})):i("slot",{name:"icon"}))}renderActions(){const t=this.parseActions(),e=this.primaryAction||this.secondaryAction,a=t.length>0;return e||a?i("div",{class:"empty-state-actions"},this.showSearch&&i("div",{class:"empty-state-search"},i("ui-icon",{name:"search",library:"lucide",size:"16px"}),i("ui-input",{placeholder:this.searchPlaceholder,value:this.searchValue,onInput:t=>this.handleSearchChange(t)})),this.retryDelay>0&&this.currentRetryCount>0&&i("div",{class:"empty-state-timer"},i("span",{class:"timer-text"},this.retryLabel.replace("{n}",""+this.currentRetryCount)),i("div",{class:"timer-progress"},i("div",{class:"timer-progress-bar",style:{width:this.currentRetryCount/this.retryDelay*100+"%"}}))),e&&i("div",{class:"simple-actions"},this.primaryAction&&i("ui-button",{variant:"primary",loading:"primary"===this.loadingAction,disabled:"primary"===this.loadingAction,onClick:()=>this.handlePrimaryAction(),icon:this.primaryActionIcon,iconLibrary:"fontawesome",label:this.primaryAction}),this.secondaryAction&&i("ui-button",{variant:"secondary",loading:"secondary"===this.loadingAction,disabled:"secondary"===this.loadingAction,onClick:()=>this.handleSecondaryAction(),icon:this.secondaryActionIcon?.replace(/^fa[sb]? fa-/,""),iconLibrary:"fontawesome",label:this.secondaryAction})),a&&i("div",{class:"complex-actions"},t.map((t=>i("ui-button",{variant:t.variant||"secondary",loading:this.loadingAction===t.value||this.loadingAction===t.label,disabled:this.loadingAction===t.value||this.loadingAction===t.label,onClick:()=>this.handleActionClick(t),icon:t.icon?.replace(/^fa[sb]? fa-/,""),iconLibrary:"fontawesome",label:t.label})))),i("slot",{name:"actions"})):null}renderItems(){const t=this.parseItems();return 0===t.length?null:i("div",{class:"empty-state-items"},this.itemsTitle&&i("h4",{class:"items-title"},this.itemsTitle),i("ul",{class:"items-list"},t.map((t=>i("li",{class:"item",onClick:()=>this.handleItemClick(t)},t.icon&&i("ui-icon",{name:t.icon,library:"fontawesome",size:"14px"}),i("span",null,t.label))))))}renderBackButton(){return this.showBackButton?i("div",{class:"empty-state-back"},i("ui-button",{variant:"ghost",onClick:()=>this.handleBackClick(),icon:"arrow-left",iconLibrary:"fontawesome",label:this.backButtonLabel,size:"sm"})):null}render(){const t=this.getDefaultContent(),e=this.heading||t.heading,a=this.message||t.message,r={"empty-state-container":!0,["variant-"+this.variant]:!0,["size-"+this.size]:!0,["align-"+this.align]:!0,["type-"+this.type]:!0,rounded:this.rounded,elevated:this.elevated,"full-height":this.fullHeight,animated:this.animated,compact:this.compact,"confetti-active":this.confetti,...this.customClass?{[this.customClass]:!0}:{}};return i(o,{key:"3291f3cc57238c4228b4c296fa831a5b87130b0d"},i("div",{key:"d122b911ff1f2a4b6e4591835fc6cb08fbc5ddec",class:r,style:{padding:this.padding||void 0,maxWidth:this.maxWidth||void 0}},this.renderBackButton(),i("div",{key:"8165539538ff504236a84e7f244731bb5db23fc1",class:"empty-state-content"},this.renderIcon(),i("slot",{key:"cb9c3d2da3314438d9e109c22d28257591f778db",name:"heading"},e&&i("h2",{key:"fffced165c0fec93f1843dfcfb0844fa2a6fead0",class:"empty-state-title"},e)),i("slot",{key:"938212bdd5443ebc8570c524dc682cb90e4b0bca",name:"message"},a&&i("p",{key:"032f187cd7950217e221ad7034cbe60a2b79c2c7",class:"empty-state-message"},a)),this.description&&i("p",{key:"ccb6b30f65404e289daa468d96cde08565c09719",class:"empty-state-description"},this.description),i("slot",{key:"f15c1b1bd9b174d4b31466f396f3d93ff7b4fb3e",name:"custom-content"}),this.renderItems(),this.renderActions(),i("slot",{key:"f596bf19b1d025f026220247f0b2fab6600bdab2",name:"footer"}))))}static get watchers(){return{retryDelay:[{onRetryDelayChange:0}]}}static get style(){return'@charset "UTF-8";.sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}.a11y-sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}:host{display:block;width:100%}.empty-state-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;box-sizing:border-box}.empty-state-container.full-height{min-height:100vh}.empty-state-container.variant-default{background:transparent}.empty-state-container.variant-outlined{border:2px dashed var(--border-strong, #d1d5db);border-radius:12px}.empty-state-container.variant-filled{background:var(--bg-primary, #f9fafb);border-radius:12px}.empty-state-container.variant-minimal{padding:24px}.empty-state-container.variant-glass{background:rgba(var(--ui-color-surface-rgb, 255, 255, 255), 0.4);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border:1px solid rgba(var(--ui-color-surface-rgb, 255, 255, 255), 0.3);border-radius:20px;box-shadow:0 12px 40px rgba(0, 0, 0, 0.1)}.empty-state-container.variant-glass .empty-state-title{color:var(--ui-color-text, var(--text-primary, #111827))}.empty-state-container.variant-glass .empty-state-title{color:var(--text-primary, #1a1a1a);text-shadow:0 1px 2px rgba(255, 255, 255, 0.5)}.empty-state-container.rounded{border-radius:16px}.empty-state-container.elevated{box-shadow:0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)}.empty-state-container.compact{padding:16px}.empty-state-container.compact .empty-state-icon{margin-bottom:12px}.empty-state-container.compact .empty-state-title{font-size:1.1rem;margin-bottom:4px}.empty-state-container.compact .empty-state-message{font-size:0.85rem;margin-bottom:16px}.empty-state-container.compact .empty-state-actions{margin-bottom:0;gap:8px}.empty-state-container.compact .action-button{padding:6px 12px;font-size:0.8rem}.empty-state-container.size-sm{padding:24px 16px}.empty-state-container.size-sm .empty-state-icon i{font-size:48px}.empty-state-container.size-sm .empty-state-title{font-size:1.25rem}.empty-state-container.size-sm .empty-state-message{font-size:0.875rem}.empty-state-container.size-md{padding:48px 24px}.empty-state-container.size-md .empty-state-icon i{font-size:64px}.empty-state-container.size-md .empty-state-title{font-size:1.5rem}.empty-state-container.size-md .empty-state-message{font-size:1rem}.empty-state-container.size-lg{padding:64px 32px}.empty-state-container.size-lg .empty-state-icon i{font-size:96px}.empty-state-container.size-lg .empty-state-title{font-size:2rem}.empty-state-container.size-lg .empty-state-message{font-size:1.125rem}.empty-state-container.align-left{align-items:flex-start;text-align:left}.empty-state-container.align-left .empty-state-content{align-items:flex-start}.empty-state-container.align-center{align-items:center;text-align:center}.empty-state-container.align-center .empty-state-content{align-items:center}.empty-state-container.align-right{align-items:flex-end;text-align:right}.empty-state-container.align-right .empty-state-content{align-items:flex-end}.empty-state-container.animated .empty-state-icon,.empty-state-container.animated .empty-state-image,.empty-state-container.animated .empty-state-illustration{animation:fadeInUp 0.8s cubic-bezier(0.16, 1, 0.3, 1), bob 4s ease-in-out infinite 0.8s}.empty-state-container.animated .empty-state-title{animation:fadeInUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) 0.1s both}.empty-state-container.animated .empty-state-message{animation:fadeInUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) 0.2s both}.empty-state-container.animated .empty-state-actions{animation:fadeInUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) 0.3s both}.empty-state-container:hover .empty-state-icon i,.empty-state-container:hover .empty-state-illustration ui-icon{transform:scale(1.05) translateY(-5px);filter:drop-shadow(0 10px 15px rgba(0, 0, 0, 0.1))}.empty-state-content{display:flex;flex-direction:column;align-items:center;max-width:100%;width:100%}.empty-state-icon{margin-bottom:24px}.empty-state-icon i{font-size:64px;color:var(--text-muted, #9ca3af);transition:color 0.3s ease}.type-error .empty-state-icon i{color:var(--color-danger, #ef4444)}.type-401 .empty-state-icon i{color:var(--color-primary, #8b5cf6);animation:fadeIn 1s ease-in-out infinite alternate}.type-403 .empty-state-icon i{color:var(--color-danger, #f43f5e)}.type-404 .empty-state-icon i{color:var(--color-warning, #f59e0b);animation:glitch 2.5s linear infinite alternate}.type-offline .empty-state-icon i{color:var(--text-muted, #64748b);animation:pulse-signal 2s ease-in-out infinite}.type-500 .empty-state-icon i{color:var(--color-danger, #ef4444);animation:glitch 0.5s linear infinite alternate;animation-delay:2s}.type-no-results .empty-state-icon i{color:var(--text-muted, #6b7280)}.type-coming-soon .empty-state-icon i{color:var(--color-success, #3dcd58)}.type-maintenance .empty-state-icon i{color:var(--color-warning, #f59e0b);animation:rotate-slow 6s linear infinite}.type-onboarding .empty-state-icon i{color:var(--color-primary, #10b981);animation:fadeInUp 1s ease-out}.type-accomplishment .empty-state-icon i,.type-success .empty-state-icon i{color:var(--color-success, #10b981);animation:popOut 1.5s ease-out infinite alternate}.type-paywall .empty-state-icon i{color:var(--color-warning-hover, #d97706);animation:bounce 2s infinite}.type-no-messages .empty-state-icon i{color:var(--color-danger, #ec4899)}.type-no-notifications .empty-state-icon i{color:var(--color-danger, #f43f5e)}.type-no-favorites .empty-state-icon i{color:var(--color-danger, #ef4444)}.type-429 .empty-state-icon i{color:var(--color-primary, #6366f1);animation:pulse-signal 2s infinite}.type-418 .empty-state-icon i{color:var(--color-primary, #7c3aed)}.empty-state-image{margin-bottom:24px;max-width:300px}.empty-state-image img{width:100%;height:auto;object-fit:contain;border-radius:8px}.size-lg .empty-state-image{max-width:400px}.empty-state-illustration{margin-bottom:24px;position:relative;display:flex;justify-content:center;align-items:center}.empty-state-illustration .illustration-placeholder{width:120px;height:120px;background:linear-gradient(135deg, rgba(var(--color-success-rgb, 61, 205, 88), 0.1), rgba(var(--color-primary-rgb, 59, 130, 246), 0.1));border-radius:30% 70% 70% 30%/30% 30% 70% 70%;display:flex;align-items:center;justify-content:center;animation:morph 8s ease-in-out infinite;position:relative;overflow:hidden}.empty-state-illustration .illustration-placeholder i{font-size:48px;color:var(--primary-color, var(--color-primary, #10b981));z-index:2}.empty-state-illustration .illustration-placeholder .illustration-glow{position:absolute;width:100%;height:100%;background:radial-gradient(circle, rgba(var(--color-success-rgb, 61, 205, 88), 0.2) 0%, transparent 70%);animation:pulse 4s ease-in-out infinite}.empty-state-illustration img{max-width:100%;height:auto;border-radius:12px;animation:float 6s ease-in-out infinite}.empty-state-title{margin:0 0 12px 0;font-size:1.5rem;font-weight:600;color:var(--empty-state-title-color, var(--text-primary, #111827));line-height:1.3}.empty-state-message{margin:0 0 32px 0;font-size:1rem;color:var(--empty-state-message-color, var(--text-muted, #6b7280));line-height:1.6;max-width:100%}.empty-state-actions{display:flex;flex-direction:column;gap:16px;width:100%;max-width:400px;margin-bottom:24px}.empty-state-actions .simple-actions,.empty-state-actions .complex-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.empty-state-search{display:flex;align-items:center;gap:12px;background:var(--ui-color-surface-soft, rgba(0, 0, 0, 0.03));border:1px solid var(--ui-color-border, var(--border-default, #e5e7eb));padding:8px 16px;border-radius:12px;margin-bottom:8px;width:100%;transition:all 0.2s}.empty-state-search:focus-within{border-color:var(--color-primary, #10b981);box-shadow:0 0 0 4px rgba(var(--color-primary-rgb, 59, 130, 246), 0.1);background:var(--bg-primary, #ffffff)}.empty-state-search ui-icon{color:var(--text-muted, #6b7280)}.empty-state-search input{border:none;background:transparent;outline:none;font-size:0.9375rem;flex:1;color:inherit}.empty-state-timer{margin-bottom:16px;width:100%;text-align:center}.empty-state-timer .timer-text{font-size:0.85rem;color:var(--text-muted, #6b7280);font-weight:500;display:block;margin-bottom:8px}.empty-state-timer .timer-progress{height:4px;background:var(--bg-secondary, #f3f4f6);border-radius:2px;overflow:hidden}.empty-state-timer .timer-progress-bar{height:100%;background:var(--color-primary, #10b981);transition:width 1s linear}.empty-state-description{margin:-16px 0 32px 0;font-size:0.875rem;color:var(--text-muted, #9ca3af);max-width:80%;line-height:1.5}.action-button{display:inline-flex;align-items:center;gap:8px;padding:12px 24px;border:none;border-radius:8px;font-size:0.9375rem;font-weight:500;cursor:pointer;transition:all 0.2s ease;white-space:nowrap}.action-button i{font-size:1rem}.action-button.primary{background:var(--color-primary, #10b981);color:var(--text-standard, #ffffff)}.action-button.primary:hover{background:var(--color-primary-hover, #2563eb);transform:translateY(-1px);box-shadow:0 4px 12px rgba(var(--color-primary-rgb, 59, 130, 246), 0.3)}.action-button.primary:active{transform:translateY(0)}.action-button.primary.is-loading{opacity:0.8;cursor:wait;pointer-events:none}.action-button.primary.is-loading i{margin-right:8px}.action-button.secondary{background:var(--bg-secondary, #f3f4f6);color:var(--text-secondary, #374151);border:1px solid var(--border-default, #e5e7eb)}.action-button.secondary:hover{background:var(--bg-primary, #e5e7eb);border-color:var(--border-strong, #d1d5db)}.action-button.secondary:active{background:var(--bg-secondary, #d1d5db)}.action-button.text{background:transparent;color:var(--color-success, #3dcd58);padding:8px 16px}.action-button.text:hover{background:rgba(var(--color-success-rgb, 61, 205, 88), 0.1)}.action-button.text:active{background:rgba(var(--color-primary-rgb, 59, 130, 246), 0.15)}.size-sm .action-button{padding:8px 16px;font-size:0.875rem}.size-lg .action-button{padding:14px 28px;font-size:1rem}.empty-state-items{margin-bottom:24px;width:100%;max-width:400px}.items-title{margin:0 0 12px 0;font-size:0.875rem;font-weight:600;color:var(--text-muted, #6b7280);text-transform:uppercase;letter-spacing:0.05em}.items-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.item{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--bg-primary, #f9fafb);border:1px solid var(--border-default, #e5e7eb);border-radius:8px;cursor:pointer;transition:all 0.2s ease}.item i{font-size:1rem;color:var(--text-muted, #6b7280);flex-shrink:0}.item span{font-size:0.9375rem;color:var(--text-secondary, #374151);flex:1}.item:hover{background:var(--bg-secondary, #f3f4f6);border-color:var(--border-strong, #d1d5db);transform:translateX(4px)}.item:active{background:var(--bg-primary, #e5e7eb)}.empty-state-back{align-self:flex-start;margin-bottom:24px}.back-button{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;background:transparent;border:none;border-radius:6px;color:var(--text-muted, #6b7280);font-size:0.9375rem;cursor:pointer;transition:all 0.2s ease}.back-button i{font-size:0.875rem}.back-button:hover{background:var(--bg-secondary, #f3f4f6);color:var(--text-secondary, #374151)}.back-button:active{background:var(--bg-primary, #e5e7eb)}@keyframes fadeInUp{from{opacity:0;transform:translateY(40px) scale(0.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}@keyframes glitch{0%{transform:translate(0)}2%{transform:translate(-2px, 1.5px)}4%{transform:translate(-2px, -1.5px)}6%{transform:translate(2px, 1.5px)}8%{transform:translate(2px, -1.5px)}10%{transform:translate(0)}100%{transform:translate(0)}}@keyframes pulse-signal{0%,100%{opacity:1;transform:scale(1)}50%{opacity:0.5;transform:scale(0.92)}}@keyframes rotate-slow{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes morph{0%{border-radius:30% 70% 70% 30%/30% 30% 70% 70%}50%{border-radius:50% 50% 20% 80%/25% 80% 20% 75%}100%{border-radius:30% 70% 70% 30%/30% 30% 70% 70%}}@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes pulse{0%,100%{transform:scale(1);opacity:0.5}50%{transform:scale(1.2);opacity:0.8}}.confetti-active{position:relative;overflow:hidden}.confetti-active::before,.confetti-active::after{content:"🎉";position:absolute;font-size:2rem;animation:popOut 1s ease-out forwards;pointer-events:none;z-index:10}.confetti-active::before{left:10%;top:20%;animation-delay:0.1s}.confetti-active::after{right:10%;top:30%;animation-delay:0.3s}@keyframes popOut{0%{transform:scale(0) rotate(0deg);opacity:0}50%{transform:scale(1.5) rotate(15deg);opacity:1}100%{transform:scale(1.2) rotate(0deg);opacity:0;transform:translateY(-50px)}}::slotted([slot=custom-content]){margin:16px 0}::slotted([slot=footer]){margin-top:24px}@media (max-width: 640px){.empty-state-container{padding:32px 16px}.empty-state-container.size-lg{padding:48px 20px}.empty-state-icon i{font-size:48px !important}.empty-state-image{max-width:200px !important}.empty-state-title{font-size:1.25rem !important}.empty-state-message{font-size:0.875rem !important}.action-button{width:100%;justify-content:center}.simple-actions,.complex-actions{flex-direction:column;width:100%}}'}},[769,"ui-empty-state",{heading:[1],message:[1],type:[1],icon:[1],image:[1],imageAlt:[1,"image-alt"],iconColor:[1,"icon-color"],iconSize:[1,"icon-size"],variant:[1],size:[1],align:[1],rounded:[4],elevated:[4],fullHeight:[4,"full-height"],padding:[1],maxWidth:[1,"max-width"],compact:[4],loadingAction:[1,"loading-action"],illustration:[1],confetti:[4],description:[1],showSearch:[4,"show-search"],searchPlaceholder:[1,"search-placeholder"],searchValue:[1,"search-value"],retryDelay:[2,"retry-delay"],retryLabel:[1,"retry-label"],actions:[1],primaryAction:[1,"primary-action"],primaryActionIcon:[1,"primary-action-icon"],secondaryAction:[1,"secondary-action"],secondaryActionIcon:[1,"secondary-action-icon"],items:[1],itemsTitle:[1,"items-title"],showBackButton:[4,"show-back-button"],backButtonLabel:[1,"back-button-label"],animated:[4],customClass:[1,"custom-class"],currentRetryCount:[32]},void 0,{retryDelay:[{onRetryDelayChange:0}]}]),p=m,d=function(){"undefined"!=typeof customElements&&["ui-empty-state","ui-badge","ui-button","ui-icon","ui-input"].forEach((t=>{switch(t){case"ui-empty-state":customElements.get(r(t))||customElements.define(r(t),m);break;case"ui-badge":customElements.get(r(t))||s();break;case"ui-button":customElements.get(r(t))||n();break;case"ui-icon":customElements.get(r(t))||c();break;case"ui-input":customElements.get(r(t))||l()}}))};export{p as UiEmptyState,d as defineCustomElement}
|
|
1
|
+
import{proxyCustomElement as t,HTMLElement as e,createEvent as a,h as i,Host as o,transformTag as r}from"@stencil/core/internal/client";import{d as n,a as s}from"./badge.js";import{d as c}from"./icon.js";import{d as l}from"./input.js";import{d as m}from"./loader.js";const p=t(class extends e{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.actionClick=a(this,"actionClick",7),this.backClick=a(this,"backClick",7),this.itemClick=a(this,"itemClick",7),this.searchChange=a(this,"searchChange",7),this.retry=a(this,"retry",7)}heading;message;type="no-data";icon;image;imageAlt="Empty state";iconColor;iconSize="64px";variant="default";size="md";align="center";rounded=!1;elevated=!1;fullHeight=!1;padding;maxWidth="500px";compact=!1;loadingAction;illustration;confetti=!1;description;showSearch=!1;searchPlaceholder="Try another search...";searchValue="";retryDelay=0;retryLabel="Retrying in {n}s...";actions="[]";primaryAction;primaryActionIcon;secondaryAction;secondaryActionIcon;items="[]";itemsTitle;showBackButton=!1;backButtonLabel="Go Back";animated=!0;customClass;actionClick;backClick;itemClick;searchChange;retry;parseActions(){if("string"==typeof this.actions)try{return JSON.parse(this.actions)}catch{return[]}return this.actions||[]}parseItems(){if("string"==typeof this.items)try{return JSON.parse(this.items)}catch{return[]}return this.items||[]}handleActionClick(t){this.actionClick.emit({action:t.label,value:t.value})}handlePrimaryAction(){this.primaryAction&&this.actionClick.emit({action:"primary",value:this.primaryAction})}handleSecondaryAction(){this.secondaryAction&&this.actionClick.emit({action:"secondary",value:this.secondaryAction})}handleBackClick(){this.backClick.emit()}handleItemClick(t){this.itemClick.emit({item:t})}handleSearchChange(t){this.searchChange.emit(t.target.value)}currentRetryCount=0;retryTimer;onRetryDelayChange(){this.retryDelay>0?this.startRetryTimer():this.retryTimer&&clearInterval(this.retryTimer)}componentWillLoad(){this.retryDelay>0&&this.startRetryTimer()}startRetryTimer(){this.currentRetryCount=this.retryDelay,this.retryTimer&&clearInterval(this.retryTimer),this.retryTimer=setInterval((()=>{this.currentRetryCount--,this.currentRetryCount<=0&&(clearInterval(this.retryTimer),this.retry.emit())}),1e3)}disconnectedCallback(){this.retryTimer&&clearInterval(this.retryTimer)}getDefaultContent(){const t={"no-data":{icon:"inbox",library:"fontawesome",heading:"No Data Available",message:"There is no data to display at the moment."},"no-results":{icon:"search",library:"fontawesome",heading:"No Results Found",message:"We couldn't find any results matching your search."},error:{icon:"exclamation-triangle",library:"fontawesome",heading:"Something Went Wrong",message:"An error occurred while loading the data. Please try again."},404:{icon:"frown",library:"fontawesome",heading:"404 - Not Found",message:"The resource you are looking for has vanished into the void."},401:{icon:"user-lock",library:"fontawesome",heading:"401 - Unauthorized",message:"Please log in to access this protected area."},403:{icon:"ban",library:"fontawesome",heading:"403 - Forbidden",message:"You do not have the required permissions to view this content."},405:{icon:"hand-paper",library:"fontawesome",heading:"405 - Method Not Allowed",message:"This action is not supported for this resource."},410:{icon:"trash-alt",library:"fontawesome",heading:"410 - Gone",message:"This resource has been permanently removed."},418:{icon:"coffee",library:"fontawesome",heading:"418 - I'm a Teapot",message:"I refuse to brew coffee because I am, short and stout, a teapot."},429:{icon:"hourglass-half",library:"fontawesome",heading:"429 - Too Many Requests",message:"You've sent too many requests. Please take a breath and try again later."},500:{icon:"server",library:"fontawesome",heading:"500 - Server Error",message:"Something went wrong on our end. Our best minds are on it."},503:{icon:"plug",library:"fontawesome",heading:"503 - Service Unavailable",message:"The server is temporarily down for maintenance or overloaded."},offline:{icon:"wifi",library:"fontawesome",heading:"No Internet Connection",message:"Check your network cables, modem, and router or try reconnecting."},onboarding:{icon:"paper-plane",library:"fontawesome",heading:"Welcome Abroad!",message:"Get started by creating your first project or inviting teammates."},accomplishment:{icon:"trophy",library:"fontawesome",heading:"You're All Caught Up!",message:"Great job! You've completed everything on your list for today."},success:{icon:"check-circle",library:"fontawesome",heading:"Mission Accomplished",message:"Action completed successfully. Everything looks perfect."},"no-messages":{icon:"comment-slash",library:"fontawesome",heading:"No Messages Yet",message:"It's quiet here. Start a conversation to see messages appear."},"no-notifications":{icon:"bell-slash",library:"fontawesome",heading:"No New Notifications",message:"We'll let you know when something important happens."},"no-favorites":{icon:"heart-broken",library:"fontawesome",heading:"No Favorites Saved",message:"Tap the heart icon on items you love to save them here."},"no-tasks":{icon:"clipboard-check",library:"fontawesome",heading:"No Tasks Found",message:"Your list is empty. Add a new task to stay organized."},"no-history":{icon:"history",library:"fontawesome",heading:"No Recent Activity",message:"Your history will appear here once you start using the app."},"no-files":{icon:"folder-open",library:"fontawesome",heading:"Folder is Empty",message:'Drag and drop files here to upload or click "New File".'},paywall:{icon:"crown",library:"fontawesome",heading:"Premium Feature",message:"Unlock this and 50+ other features with a Pro subscription."},"no-search":{icon:"search-minus",library:"fontawesome",heading:"No Results Matching Filters",message:"Try adjusting your search terms or filters to find what you need."},empty:{icon:"folder-open",library:"fontawesome",heading:"Nothing Here Yet",message:"Get started by adding your first item."},"coming-soon":{icon:"rocket",library:"fontawesome",heading:"Coming Soon",message:"This feature is under development and will be available soon."},maintenance:{icon:"tools",library:"fontawesome",heading:"Under Maintenance",message:"We are currently performing maintenance. Please check back later."},custom:{icon:"info-circle",library:"fontawesome",heading:"Empty State",message:"No content available."}};return t[this.type]||t.custom}renderIcon(){const t=this.getDefaultContent(),e=this.icon||t.icon;if(this.image)return i("div",{class:"empty-state-image"},i("img",{src:this.image,alt:this.imageAlt}));if(this.illustration){if(this.illustration.startsWith("http")||this.illustration.startsWith("/")||this.illustration.includes("."))return i("div",{class:"empty-state-illustration"},i("img",{src:this.illustration,alt:this.imageAlt}));const a={"no-data":i("svg",{viewBox:"0 0 200 160",fill:"none",class:"illust-svg"},i("rect",{x:"40",y:"40",width:"120",height:"80",rx:"8",fill:"currentColor","fill-opacity":"0.1"}),i("path",{d:"M40 60h120M70 80h60M70 100h30",stroke:"currentColor","stroke-width":"2","stroke-opacity":"0.2","stroke-linecap":"round"}),i("circle",{cx:"100",cy:"80",r:"20",fill:"currentColor","fill-opacity":"0.05"})),error:i("svg",{viewBox:"0 0 200 160",fill:"none",class:"illust-svg illust-error"},i("circle",{cx:"100",cy:"80",r:"50",fill:"currentColor","fill-opacity":"0.1"}),i("path",{d:"M100 50v40M100 105v5",stroke:"currentColor","stroke-width":"6","stroke-linecap":"round"}),i("path",{d:"M60 120l80-80",stroke:"currentColor","stroke-width":"2","stroke-opacity":"0.3","stroke-dasharray":"5 5"})),"no-results":i("svg",{viewBox:"0 0 200 160",fill:"none",class:"illust-svg"},i("circle",{cx:"90",cy:"70",r:"30",stroke:"currentColor","stroke-width":"3","stroke-opacity":"0.2"}),i("path",{d:"M115 95l30 30",stroke:"currentColor","stroke-width":"3","stroke-opacity":"0.2","stroke-linecap":"round"}),i("rect",{x:"40",y:"110",width:"120",height:"4",rx:"2",fill:"currentColor","fill-opacity":"0.1"})),offline:i("svg",{viewBox:"0 0 200 160",fill:"none",class:"illust-svg"},i("path",{d:"M50 80a70 70 0 0 1 100 0M70 100a40 40 0 0 1 60 0M100 120h.01",stroke:"currentColor","stroke-width":"3","stroke-opacity":"0.2","stroke-linecap":"round"}),i("line",{x1:"60",y1:"50",x2:"140",y2:"130",stroke:"currentColor","stroke-width":"2","stroke-opacity":"0.5"}))};return i("div",{class:"empty-state-illustration illustration-"+this.illustration},a[this.illustration]||i("div",{class:"illustration-placeholder"},i("ui-icon",{name:e,library:t.library||"fontawesome",size:"48px"}),i("div",{class:"illustration-glow"})))}return i("div",{class:"empty-state-icon"},e?i("slot",{name:"icon"},i("ui-icon",{name:e,library:t.library||"fontawesome",size:this.iconSize,color:this.iconColor||"currentColor"})):i("slot",{name:"icon"}))}renderActions(){const t=this.parseActions(),e=this.primaryAction||this.secondaryAction,a=t.length>0;return e||a?i("div",{class:"empty-state-actions"},this.showSearch&&i("div",{class:"empty-state-search"},i("ui-icon",{name:"search",library:"lucide",size:"16px"}),i("ui-input",{placeholder:this.searchPlaceholder,value:this.searchValue,onInput:t=>this.handleSearchChange(t)})),this.retryDelay>0&&this.currentRetryCount>0&&i("div",{class:"empty-state-timer"},i("span",{class:"timer-text"},this.retryLabel.replace("{n}",""+this.currentRetryCount)),i("div",{class:"timer-progress"},i("div",{class:"timer-progress-bar",style:{width:this.currentRetryCount/this.retryDelay*100+"%"}}))),e&&i("div",{class:"simple-actions"},this.primaryAction&&i("ui-button",{variant:"primary",loading:"primary"===this.loadingAction,disabled:"primary"===this.loadingAction,onClick:()=>this.handlePrimaryAction(),icon:this.primaryActionIcon,iconLibrary:"fontawesome",label:this.primaryAction}),this.secondaryAction&&i("ui-button",{variant:"secondary",loading:"secondary"===this.loadingAction,disabled:"secondary"===this.loadingAction,onClick:()=>this.handleSecondaryAction(),icon:this.secondaryActionIcon?.replace(/^fa[sb]? fa-/,""),iconLibrary:"fontawesome",label:this.secondaryAction})),a&&i("div",{class:"complex-actions"},t.map((t=>i("ui-button",{variant:t.variant||"secondary",loading:this.loadingAction===t.value||this.loadingAction===t.label,disabled:this.loadingAction===t.value||this.loadingAction===t.label,onClick:()=>this.handleActionClick(t),icon:t.icon?.replace(/^fa[sb]? fa-/,""),iconLibrary:"fontawesome",label:t.label})))),i("slot",{name:"actions"})):null}renderItems(){const t=this.parseItems();return 0===t.length?null:i("div",{class:"empty-state-items"},this.itemsTitle&&i("h4",{class:"items-title"},this.itemsTitle),i("ul",{class:"items-list"},t.map((t=>i("li",{class:"item",onClick:()=>this.handleItemClick(t)},t.icon&&i("ui-icon",{name:t.icon,library:"fontawesome",size:"14px"}),i("span",null,t.label))))))}renderBackButton(){return this.showBackButton?i("div",{class:"empty-state-back"},i("ui-button",{variant:"ghost",onClick:()=>this.handleBackClick(),icon:"arrow-left",iconLibrary:"fontawesome",label:this.backButtonLabel,size:"sm"})):null}render(){const t=this.getDefaultContent(),e=this.heading||t.heading,a=this.message||t.message,r={"empty-state-container":!0,["variant-"+this.variant]:!0,["size-"+this.size]:!0,["align-"+this.align]:!0,["type-"+this.type]:!0,rounded:this.rounded,elevated:this.elevated,"full-height":this.fullHeight,animated:this.animated,compact:this.compact,"confetti-active":this.confetti,...this.customClass?{[this.customClass]:!0}:{}};return i(o,{key:"0f7a224ca36c6e2fcda778b134ed8d8d4396d9b6"},i("div",{key:"6ac5efd99135e6484d84139250e84e8e22b7fedd",class:r,style:{padding:this.padding||void 0,maxWidth:this.maxWidth||void 0}},this.renderBackButton(),i("div",{key:"c8ab7670d312a8ea4e5e69b2331db1b6374476c4",class:"empty-state-content"},this.renderIcon(),i("slot",{key:"11d5618957f52edc36c6db9370b630bf02ef58fc",name:"heading"},e&&i("h2",{key:"786051e59375b5e04cad426320fc768a0622cf82",class:"empty-state-title"},e)),i("slot",{key:"11a7eb49b8e3eb457942125ad1512bfaf062228b",name:"message"},a&&i("p",{key:"7c74c4c3721f562ae616ee1992ab0782f81f6b3d",class:"empty-state-message"},a)),this.description&&i("p",{key:"a49d0e45e660f30a3af67c6db480cf2ce2a5717e",class:"empty-state-description"},this.description),i("slot",{key:"31d8ea03a88a1032c02fa6ae1bb511d1a239cd62",name:"custom-content"}),this.renderItems(),this.renderActions(),i("slot",{key:"20d487b415fe17ba94746fafd2bbf97dfa033b0d",name:"footer"}))))}static get watchers(){return{retryDelay:[{onRetryDelayChange:0}]}}static get style(){return'@charset "UTF-8";.sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}.a11y-sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}:host{display:block;width:100%}.empty-state-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;box-sizing:border-box}.empty-state-container.full-height{min-height:100vh}.empty-state-container.variant-default{background:transparent}.empty-state-container.variant-outlined{border:2px dashed var(--border-strong, #d1d5db);border-radius:12px}.empty-state-container.variant-filled{background:var(--bg-primary, #f9fafb);border-radius:12px}.empty-state-container.variant-minimal{padding:24px}.empty-state-container.variant-glass{background:rgba(var(--ui-color-surface-rgb, 255, 255, 255), 0.4);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border:1px solid rgba(var(--ui-color-surface-rgb, 255, 255, 255), 0.3);border-radius:20px;box-shadow:0 12px 40px rgba(0, 0, 0, 0.1)}.empty-state-container.variant-glass .empty-state-title{color:var(--ui-color-text, var(--text-primary, #111827))}.empty-state-container.variant-glass .empty-state-title{color:var(--text-primary, #1a1a1a);text-shadow:0 1px 2px rgba(255, 255, 255, 0.5)}.empty-state-container.rounded{border-radius:16px}.empty-state-container.elevated{box-shadow:0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)}.empty-state-container.compact{padding:16px}.empty-state-container.compact .empty-state-icon{margin-bottom:12px}.empty-state-container.compact .empty-state-title{font-size:1.1rem;margin-bottom:4px}.empty-state-container.compact .empty-state-message{font-size:0.85rem;margin-bottom:16px}.empty-state-container.compact .empty-state-actions{margin-bottom:0;gap:8px}.empty-state-container.compact .action-button{padding:6px 12px;font-size:0.8rem}.empty-state-container.size-sm{padding:24px 16px}.empty-state-container.size-sm .empty-state-icon i{font-size:48px}.empty-state-container.size-sm .empty-state-title{font-size:1.25rem}.empty-state-container.size-sm .empty-state-message{font-size:0.875rem}.empty-state-container.size-md{padding:48px 24px}.empty-state-container.size-md .empty-state-icon i{font-size:64px}.empty-state-container.size-md .empty-state-title{font-size:1.5rem}.empty-state-container.size-md .empty-state-message{font-size:1rem}.empty-state-container.size-lg{padding:64px 32px}.empty-state-container.size-lg .empty-state-icon i{font-size:96px}.empty-state-container.size-lg .empty-state-title{font-size:2rem}.empty-state-container.size-lg .empty-state-message{font-size:1.125rem}.empty-state-container.align-left{align-items:flex-start;text-align:left}.empty-state-container.align-left .empty-state-content{align-items:flex-start}.empty-state-container.align-center{align-items:center;text-align:center}.empty-state-container.align-center .empty-state-content{align-items:center}.empty-state-container.align-right{align-items:flex-end;text-align:right}.empty-state-container.align-right .empty-state-content{align-items:flex-end}.empty-state-container.animated .empty-state-icon,.empty-state-container.animated .empty-state-image,.empty-state-container.animated .empty-state-illustration{animation:fadeInUp 0.8s cubic-bezier(0.16, 1, 0.3, 1), bob 4s ease-in-out infinite 0.8s}.empty-state-container.animated .empty-state-title{animation:fadeInUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) 0.1s both}.empty-state-container.animated .empty-state-message{animation:fadeInUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) 0.2s both}.empty-state-container.animated .empty-state-actions{animation:fadeInUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) 0.3s both}.empty-state-container:hover .empty-state-icon i,.empty-state-container:hover .empty-state-illustration ui-icon{transform:scale(1.05) translateY(-5px);filter:drop-shadow(0 10px 15px rgba(0, 0, 0, 0.1))}.empty-state-content{display:flex;flex-direction:column;align-items:center;max-width:100%;width:100%}.empty-state-icon{margin-bottom:24px}.empty-state-icon i{font-size:64px;color:var(--text-muted, #9ca3af);transition:color 0.3s ease}.type-error .empty-state-icon i{color:var(--color-danger, #ef4444)}.type-401 .empty-state-icon i{color:var(--color-primary, #8b5cf6);animation:fadeIn 1s ease-in-out infinite alternate}.type-403 .empty-state-icon i{color:var(--color-danger, #f43f5e)}.type-404 .empty-state-icon i{color:var(--color-warning, #f59e0b);animation:glitch 2.5s linear infinite alternate}.type-offline .empty-state-icon i{color:var(--text-muted, #64748b);animation:pulse-signal 2s ease-in-out infinite}.type-500 .empty-state-icon i{color:var(--color-danger, #ef4444);animation:glitch 0.5s linear infinite alternate;animation-delay:2s}.type-no-results .empty-state-icon i{color:var(--text-muted, #6b7280)}.type-coming-soon .empty-state-icon i{color:var(--color-success, #3dcd58)}.type-maintenance .empty-state-icon i{color:var(--color-warning, #f59e0b);animation:rotate-slow 6s linear infinite}.type-onboarding .empty-state-icon i{color:var(--color-primary, #10b981);animation:fadeInUp 1s ease-out}.type-accomplishment .empty-state-icon i,.type-success .empty-state-icon i{color:var(--color-success, #10b981);animation:popOut 1.5s ease-out infinite alternate}.type-paywall .empty-state-icon i{color:var(--color-warning-hover, #d97706);animation:bounce 2s infinite}.type-no-messages .empty-state-icon i{color:var(--color-danger, #ec4899)}.type-no-notifications .empty-state-icon i{color:var(--color-danger, #f43f5e)}.type-no-favorites .empty-state-icon i{color:var(--color-danger, #ef4444)}.type-429 .empty-state-icon i{color:var(--color-primary, #6366f1);animation:pulse-signal 2s infinite}.type-418 .empty-state-icon i{color:var(--color-primary, #7c3aed)}.empty-state-image{margin-bottom:24px;max-width:300px}.empty-state-image img{width:100%;height:auto;object-fit:contain;border-radius:8px}.size-lg .empty-state-image{max-width:400px}.empty-state-illustration{margin-bottom:24px;position:relative;display:flex;justify-content:center;align-items:center}.empty-state-illustration .illustration-placeholder{width:120px;height:120px;background:linear-gradient(135deg, rgba(var(--color-success-rgb, 61, 205, 88), 0.1), rgba(var(--color-primary-rgb, 59, 130, 246), 0.1));border-radius:30% 70% 70% 30%/30% 30% 70% 70%;display:flex;align-items:center;justify-content:center;animation:morph 8s ease-in-out infinite;position:relative;overflow:hidden}.empty-state-illustration .illustration-placeholder i{font-size:48px;color:var(--primary-color, var(--color-primary, #10b981));z-index:2}.empty-state-illustration .illustration-placeholder .illustration-glow{position:absolute;width:100%;height:100%;background:radial-gradient(circle, rgba(var(--color-success-rgb, 61, 205, 88), 0.2) 0%, transparent 70%);animation:pulse 4s ease-in-out infinite}.empty-state-illustration img{max-width:100%;height:auto;border-radius:12px;animation:float 6s ease-in-out infinite}.empty-state-title{margin:0 0 12px 0;font-size:1.5rem;font-weight:600;color:var(--empty-state-title-color, var(--text-primary, #111827));line-height:1.3}.empty-state-message{margin:0 0 32px 0;font-size:1rem;color:var(--empty-state-message-color, var(--text-muted, #6b7280));line-height:1.6;max-width:100%}.empty-state-actions{display:flex;flex-direction:column;gap:16px;width:100%;max-width:400px;margin-bottom:24px}.empty-state-actions .simple-actions,.empty-state-actions .complex-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.empty-state-search{display:flex;align-items:center;gap:12px;background:var(--ui-color-surface-soft, rgba(0, 0, 0, 0.03));border:1px solid var(--ui-color-border, var(--border-default, #e5e7eb));padding:8px 16px;border-radius:12px;margin-bottom:8px;width:100%;transition:all 0.2s}.empty-state-search:focus-within{border-color:var(--color-primary, #10b981);box-shadow:0 0 0 4px rgba(var(--color-primary-rgb, 59, 130, 246), 0.1);background:var(--bg-primary, #ffffff)}.empty-state-search ui-icon{color:var(--text-muted, #6b7280)}.empty-state-search input{border:none;background:transparent;outline:none;font-size:0.9375rem;flex:1;color:inherit}.empty-state-timer{margin-bottom:16px;width:100%;text-align:center}.empty-state-timer .timer-text{font-size:0.85rem;color:var(--text-muted, #6b7280);font-weight:500;display:block;margin-bottom:8px}.empty-state-timer .timer-progress{height:4px;background:var(--bg-secondary, #f3f4f6);border-radius:2px;overflow:hidden}.empty-state-timer .timer-progress-bar{height:100%;background:var(--color-primary, #10b981);transition:width 1s linear}.empty-state-description{margin:-16px 0 32px 0;font-size:0.875rem;color:var(--text-muted, #9ca3af);max-width:80%;line-height:1.5}.action-button{display:inline-flex;align-items:center;gap:8px;padding:12px 24px;border:none;border-radius:8px;font-size:0.9375rem;font-weight:500;cursor:pointer;transition:all 0.2s ease;white-space:nowrap}.action-button i{font-size:1rem}.action-button.primary{background:var(--color-primary, #10b981);color:var(--text-standard, #ffffff)}.action-button.primary:hover{background:var(--color-primary-hover, #2563eb);transform:translateY(-1px);box-shadow:0 4px 12px rgba(var(--color-primary-rgb, 59, 130, 246), 0.3)}.action-button.primary:active{transform:translateY(0)}.action-button.primary.is-loading{opacity:0.8;cursor:wait;pointer-events:none}.action-button.primary.is-loading i{margin-right:8px}.action-button.secondary{background:var(--bg-secondary, #f3f4f6);color:var(--text-secondary, #374151);border:1px solid var(--border-default, #e5e7eb)}.action-button.secondary:hover{background:var(--bg-primary, #e5e7eb);border-color:var(--border-strong, #d1d5db)}.action-button.secondary:active{background:var(--bg-secondary, #d1d5db)}.action-button.text{background:transparent;color:var(--color-success, #3dcd58);padding:8px 16px}.action-button.text:hover{background:rgba(var(--color-success-rgb, 61, 205, 88), 0.1)}.action-button.text:active{background:rgba(var(--color-primary-rgb, 59, 130, 246), 0.15)}.size-sm .action-button{padding:8px 16px;font-size:0.875rem}.size-lg .action-button{padding:14px 28px;font-size:1rem}.empty-state-items{margin-bottom:24px;width:100%;max-width:400px}.items-title{margin:0 0 12px 0;font-size:0.875rem;font-weight:600;color:var(--text-muted, #6b7280);text-transform:uppercase;letter-spacing:0.05em}.items-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.item{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--bg-primary, #f9fafb);border:1px solid var(--border-default, #e5e7eb);border-radius:8px;cursor:pointer;transition:all 0.2s ease}.item i{font-size:1rem;color:var(--text-muted, #6b7280);flex-shrink:0}.item span{font-size:0.9375rem;color:var(--text-secondary, #374151);flex:1}.item:hover{background:var(--bg-secondary, #f3f4f6);border-color:var(--border-strong, #d1d5db);transform:translateX(4px)}.item:active{background:var(--bg-primary, #e5e7eb)}.empty-state-back{align-self:flex-start;margin-bottom:24px}.back-button{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;background:transparent;border:none;border-radius:6px;color:var(--text-muted, #6b7280);font-size:0.9375rem;cursor:pointer;transition:all 0.2s ease}.back-button i{font-size:0.875rem}.back-button:hover{background:var(--bg-secondary, #f3f4f6);color:var(--text-secondary, #374151)}.back-button:active{background:var(--bg-primary, #e5e7eb)}@keyframes fadeInUp{from{opacity:0;transform:translateY(40px) scale(0.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}@keyframes glitch{0%{transform:translate(0)}2%{transform:translate(-2px, 1.5px)}4%{transform:translate(-2px, -1.5px)}6%{transform:translate(2px, 1.5px)}8%{transform:translate(2px, -1.5px)}10%{transform:translate(0)}100%{transform:translate(0)}}@keyframes pulse-signal{0%,100%{opacity:1;transform:scale(1)}50%{opacity:0.5;transform:scale(0.92)}}@keyframes rotate-slow{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes morph{0%{border-radius:30% 70% 70% 30%/30% 30% 70% 70%}50%{border-radius:50% 50% 20% 80%/25% 80% 20% 75%}100%{border-radius:30% 70% 70% 30%/30% 30% 70% 70%}}@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes pulse{0%,100%{transform:scale(1);opacity:0.5}50%{transform:scale(1.2);opacity:0.8}}.confetti-active{position:relative;overflow:hidden}.confetti-active::before,.confetti-active::after{content:"🎉";position:absolute;font-size:2rem;animation:popOut 1s ease-out forwards;pointer-events:none;z-index:10}.confetti-active::before{left:10%;top:20%;animation-delay:0.1s}.confetti-active::after{right:10%;top:30%;animation-delay:0.3s}@keyframes popOut{0%{transform:scale(0) rotate(0deg);opacity:0}50%{transform:scale(1.5) rotate(15deg);opacity:1}100%{transform:scale(1.2) rotate(0deg);opacity:0;transform:translateY(-50px)}}::slotted([slot=custom-content]){margin:16px 0}::slotted([slot=footer]){margin-top:24px}@media (max-width: 640px){.empty-state-container{padding:32px 16px}.empty-state-container.size-lg{padding:48px 20px}.empty-state-icon i{font-size:48px !important}.empty-state-image{max-width:200px !important}.empty-state-title{font-size:1.25rem !important}.empty-state-message{font-size:0.875rem !important}.action-button{width:100%;justify-content:center}.simple-actions,.complex-actions{flex-direction:column;width:100%}}'}},[769,"ui-empty-state",{heading:[1],message:[1],type:[1],icon:[1],image:[1],imageAlt:[1,"image-alt"],iconColor:[1,"icon-color"],iconSize:[1,"icon-size"],variant:[1],size:[1],align:[1],rounded:[4],elevated:[4],fullHeight:[4,"full-height"],padding:[1],maxWidth:[1,"max-width"],compact:[4],loadingAction:[1,"loading-action"],illustration:[1],confetti:[4],description:[1],showSearch:[4,"show-search"],searchPlaceholder:[1,"search-placeholder"],searchValue:[1,"search-value"],retryDelay:[2,"retry-delay"],retryLabel:[1,"retry-label"],actions:[1],primaryAction:[1,"primary-action"],primaryActionIcon:[1,"primary-action-icon"],secondaryAction:[1,"secondary-action"],secondaryActionIcon:[1,"secondary-action-icon"],items:[1],itemsTitle:[1,"items-title"],showBackButton:[4,"show-back-button"],backButtonLabel:[1,"back-button-label"],animated:[4],customClass:[1,"custom-class"],currentRetryCount:[32]},void 0,{retryDelay:[{onRetryDelayChange:0}]}]),d=p,h=function(){"undefined"!=typeof customElements&&["ui-empty-state","ui-badge","ui-button","ui-icon","ui-input","ui-loader"].forEach((t=>{switch(t){case"ui-empty-state":customElements.get(r(t))||customElements.define(r(t),p);break;case"ui-badge":customElements.get(r(t))||s();break;case"ui-button":customElements.get(r(t))||n();break;case"ui-icon":customElements.get(r(t))||c();break;case"ui-input":customElements.get(r(t))||l();break;case"ui-loader":customElements.get(r(t))||m()}}))};export{d as UiEmptyState,h as defineCustomElement}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{proxyCustomElement as t,HTMLElement as i,createEvent as e,h as a,Host as o,transformTag as s}from"@stencil/core/internal/client";import{d as r,a as n}from"./badge.js";import{d as
|
|
1
|
+
import{proxyCustomElement as t,HTMLElement as i,createEvent as e,h as a,Host as o,transformTag as s}from"@stencil/core/internal/client";import{d as r,a as n}from"./badge.js";import{d as c}from"./icon.js";import{d as l}from"./loader.js";const d=t(class extends i{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.uiFabActionClick=e(this,"uiFabActionClick",7)}icon;label;tooltip;disabled=!1;loading=!1;value;uiFabActionClick;handleClick=t=>{if(this.disabled||this.loading)return t.stopPropagation(),void t.preventDefault();this.uiFabActionClick.emit({value:void 0!==this.value?this.value:this.label||this.icon})};render(){return a(o,{key:"7551f6761b90f6ead01bdd37d5f07f6277c867cc",class:{"is-disabled":this.disabled,"is-loading":this.loading}},this.label&&a("div",{key:"fe90271cf5bb4443b54c01b82274c6e60686766a",class:"fab-item-label","aria-hidden":"true"},this.label),a("ui-button",{key:"da7aef396488d1c527dce3ec6559e36b78df0505",variant:"primary",shape:"circle",class:"fab-item-trigger",disabled:this.disabled||this.loading,loading:this.loading,onClick:this.handleClick,ariaLabel:this.tooltip||this.label||this.icon,title:this.tooltip,icon:this.icon,iconOnly:!0,size:"sm"},!this.icon&&a("slot",{key:"a59d4c4a925bcb81ab54d305c7310095a24160a2",name:"icon"})))}static get style(){return".sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}.a11y-sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}:host{display:flex;align-items:center;position:relative}.fab-item-trigger{width:var(--ui-fab-action-size, 40px);height:var(--ui-fab-action-size, 40px);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all 0.2s cubic-bezier(0.25, 0.8, 0.25, 1);outline:none;z-index:2}.fab-item-trigger:hover{transform:scale(1.1)}.fab-item-trigger:active{transform:scale(0.95)}:host(.is-disabled) .fab-item-trigger{opacity:0.5;cursor:not-allowed;pointer-events:none}.fab-item-label{position:absolute;background:rgba(0, 0, 0, 0.8);color:var(--text-standard, #ffffff);padding:4px 10px;border-radius:6px;font-size:13px;font-weight:500;white-space:nowrap;pointer-events:none;box-shadow:0 2px 4px rgba(0, 0, 0, 0.2);right:calc(100% + 12px);opacity:1;transition:opacity 0.2s}:host-context(ui-fab.pos-bottom-left) .fab-item-label,:host-context(ui-fab.pos-top-left) .fab-item-label{right:auto;left:calc(100% + 12px)}.spinner{width:20px;height:20px;animation:rotate 2s linear infinite}.spinner .spinner-circle{stroke-dasharray:1, 200;stroke-dashoffset:0;animation:dash 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{100%{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1, 200;stroke-dashoffset:0}50%{stroke-dasharray:89, 200;stroke-dashoffset:-35px}100%{stroke-dasharray:89, 200;stroke-dashoffset:-124px}}"}},[769,"ui-fab-item",{icon:[1],label:[1],tooltip:[1],disabled:[4],loading:[4],value:[8]}]),p=d,h=function(){"undefined"!=typeof customElements&&["ui-fab-item","ui-badge","ui-button","ui-icon","ui-loader"].forEach((t=>{switch(t){case"ui-fab-item":customElements.get(s(t))||customElements.define(s(t),d);break;case"ui-badge":customElements.get(s(t))||n();break;case"ui-button":customElements.get(s(t))||r();break;case"ui-icon":customElements.get(s(t))||c();break;case"ui-loader":customElements.get(s(t))||l()}}))};export{p as UiFabItem,h as defineCustomElement}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{proxyCustomElement as t,HTMLElement as i,createEvent as e,h as a,Host as s,transformTag as n}from"@stencil/core/internal/client";import{d as o,a as r}from"./badge.js";import{d as l}from"./icon.js";const d=t(class extends i{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.uiFabClick=e(this,"uiFabClick",7),this.uiFabOpen=e(this,"uiFabOpen",7),this.uiFabClose=e(this,"uiFabClose",7),this.uiFabToggle=e(this,"uiFabToggle",7),this.uiFabActionClick=e(this,"uiFabActionClick",7)}get el(){return this}isExpanded=!1;defaultOpen=!1;position="bottom-right";direction="top";variant="primary";size="md";type="standard";icon;label;disabled=!1;loading=!1;toggle=!1;isDraggable=!1;hideOnScroll=!1;showOnScrollUp=!1;offsetX=24;offsetY=24;zIndex=1e3;expandOnHover=!1;expandOnClick=!0;closeOnAction=!0;backdrop=!1;backdropClose=!0;persistent=!1;animation="scale";panel=!1;panelTitle;panelWidth="320px";panelHeight;panelMaxHeight="480px";isDragging=!1;isHidden=!1;currentX=0;currentY=0;uiFabClick;uiFabOpen;uiFabClose;uiFabToggle;uiFabActionClick;dragStartX=0;dragStartY=0;lastScrollY=0;internalOpen=!1;componentWillLoad(){this.internalOpen=this.defaultOpen||this.isExpanded,this.currentX=this.offsetX,this.currentY=this.offsetY}componentDidLoad(){(this.hideOnScroll||this.showOnScrollUp)&&(this.lastScrollY=window.scrollY)}openChanged(t){this.internalOpen=t,t?(this.uiFabOpen.emit(),this.calculateRadial()):this.uiFabClose.emit()}async openFab(){this.isExpanded=!0}async closeFab(){this.isExpanded=!1}async toggleFab(){this.isExpanded=!this.internalOpen,this.uiFabToggle.emit({isExpanded:this.internalOpen})}async show(){this.isHidden=!1}async hide(){this.isHidden=!0}handleScroll(){if(!this.hideOnScroll&&!this.showOnScrollUp)return;const t=window.scrollY,i=t>this.lastScrollY;this.showOnScrollUp&&!i&&t>100?this.isHidden=!1:this.hideOnScroll&&i&&t>100&&(this.isHidden=!0,this.internalOpen&&this.closeFab()),this.lastScrollY=t}handleKeyDown(t){this.disabled||this.loading||("Enter"===t.key||" "===t.key?(t.preventDefault(),this.handleClick(new MouseEvent("click"))):"Escape"===t.key&&this.internalOpen&&(this.closeFab(),this.focusTrigger()))}focusTrigger(){const t=this.el.shadowRoot?.querySelector(".fab-trigger");t&&t.focus()}handleClick=t=>{this.disabled||this.loading||("speed-dial"===this.type||this.toggle||this.panel?this.expandOnClick&&this.toggleFab():this.uiFabClick.emit(t))};handleBackdropClick=()=>{this.backdropClose&&this.internalOpen&&!this.persistent&&this.closeFab()};handleMouseEnter=()=>{!this.expandOnHover||this.disabled||this.loading||this.openFab()};handleMouseLeave=()=>{this.expandOnHover&&!this.persistent&&this.closeFab()};handlePointerDown=t=>{this.isDraggable&&!this.disabled&&(this.isDragging=!0,this.dragStartX=t.clientX,this.dragStartY=t.clientY,this.el.setPointerCapture(t.pointerId))};handlePointerMove=t=>{if(!this.isDragging||!this.isDraggable)return;const i=t.clientX-this.dragStartX,e=t.clientY-this.dragStartY;this.position.includes("right")?this.currentX-=i:this.position.includes("left")&&(this.currentX+=i),this.position.includes("bottom")?this.currentY-=e:this.position.includes("top")&&(this.currentY+=e),this.dragStartX=t.clientX,this.dragStartY=t.clientY};handlePointerUp=t=>{this.isDragging&&(this.isDragging=!1,this.el.releasePointerCapture(t.pointerId))};onActionClick(){this.closeOnAction&&this.internalOpen&&!this.persistent&&this.closeFab()}calculateRadial(){if("radial"!==this.direction)return;const t=Array.from(this.el.querySelectorAll("ui-fab-item"));if(!t.length)return;const i=80+Math.max(0,15*(t.length-4)),e=1===t.length?0:Math.min(120,90+Math.max(0,10*(t.length-3)))/(t.length-1);t.forEach(((a,s)=>{const n=e*s*(Math.PI/180);let o=Math.abs(Math.sin(n)*i),r=Math.abs(Math.cos(n)*i);if(this.position.includes("right")&&(o=-o),this.position.includes("bottom")&&(r=-r),this.position.includes("-center")){const e=Math.min(220,180+15*(t.length-3)),a=Math.PI/180*((1===t.length?0:e/(t.length-1))*s-e/2);o=Math.sin(a)*i,r=this.position.includes("bottom")?-Math.cos(a)*i:Math.cos(a)*i}if(this.position.includes("center-")){const e=Math.min(180,120+15*(t.length-3)),a=Math.PI/180*((1===t.length?0:e/(t.length-1))*s-e/2);r=Math.sin(a)*i,o=this.position.includes("right")?-Math.cos(a)*i:Math.cos(a)*i}a.style.setProperty("--radial-x",o+"px"),a.style.setProperty("--radial-y",r+"px")}))}render(){const t=!!("extended"===this.type||this.label&&"speed-dial"!==this.type),i="speed-dial"===this.type;return a(s,{key:"3134d7c95b289f7ba1fbe491e2381a39ab33cd90",class:{"fab-container":!0,["pos-"+this.position]:!0,["dir-"+this.direction]:!0,["variant-"+this.variant]:!0,["size-"+this.size]:!0,["anim-"+this.animation]:!0,"is-open":this.internalOpen,"is-hidden":this.isHidden,"is-extended":t,"is-speed-dial":i,"is-dragging":this.isDragging,"is-disabled":this.disabled,"is-loading":this.loading},style:{"--fab-offset-x":this.currentX+"px","--fab-offset-y":this.currentY+"px","z-index":""+this.zIndex}},this.backdrop&&this.internalOpen&&a("div",{key:"65ab05d3229cdd3c50436461400a93dfbdc79f89",class:"fab-backdrop",onClick:this.handleBackdropClick}),a("div",{key:"095790fe29d7b5110679b9e83af15e16654b5f9c",class:"fab-wrapper",onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave},i&&a("div",{key:"cd098ce374a0f59635d9e36f94cc8873225a35c7",class:"fab-actions","aria-hidden":this.internalOpen?"false":"true"},a("slot",{key:"22573c4f39319b8c438265035c7062eabd31a0dd",name:"actions"})),this.panel&&a("div",{key:"eba8176fc2531f4984f1a15db4439d739d72c364",class:{"fab-panel":!0,"has-header":!!this.panelTitle},role:"dialog","aria-hidden":this.internalOpen?"false":"true",style:{width:this.panelWidth,height:this.panelHeight,maxHeight:this.panelMaxHeight}},this.panelTitle&&a("div",{key:"32f400ac44e2559bc42857c5f953c8339749747b",class:"fab-panel-header"},a("span",{key:"a8ab67880b596cf3ac7ee9608ed69533da83a164",class:"fab-panel-title"},this.panelTitle),a("ui-button",{key:"8258cd221bf4f1ce486f2e789ffa160609385c1f",variant:"ghost",class:"fab-panel-close",onClick:()=>this.closeFab(),ariaLabel:"Close panel",icon:"x",iconLibrary:"lucide",iconOnly:!0,size:"sm"})),a("div",{key:"b934937a301cfa9f759644679a5b42b88bdfb956",class:"fab-panel-body"},a("slot",{key:"d0583bd15b3a49b9d0d78698464811cd7d3ddccf",name:"panel"})),a("div",{key:"628ff324c833159612e523ca14c8b34ee591d23f",class:"fab-panel-footer"},a("slot",{key:"4d738a08683eae8f5ad3d96397b65983c9f00deb",name:"panel-footer"}))),a("ui-button",{key:"40f831f7769b5918779a74100aab35ebe87d46ae",variant:this.variant,shape:"extended"===this.type||this.label&&"speed-dial"!==this.type?"rounded":"circle",class:"fab-trigger",disabled:this.disabled||this.loading,loading:this.loading,ariaLabel:this.label||"Floating Action Button",onClick:this.handleClick,onPointerDown:this.handlePointerDown,onPointerMove:this.handlePointerMove,onPointerUp:this.handlePointerUp,onPointerCancel:this.handlePointerUp,label:t&&this.label?this.label:void 0,icon:this.icon,iconOnly:!t,size:"mini"===this.size?"sm":"lg"===this.size?"lg":"md"},i&&this.toggle&&this.internalOpen&&a("ui-icon",{key:"46fdd3e22ff4ae11f0fa3b27166db77bb0ca4a38",slot:"icon",class:"fab-icon close-icon",name:"x",size:"mini"===this.size?"18":"24"}),!this.icon&&!t&&a("slot",{key:"045dd7944e14501a0a703754ee21bc1f2d77fdff",name:"trigger"}))))}static get watchers(){return{isExpanded:[{openChanged:0}]}}static get style(){return".sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}.a11y-sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}:host{--ui-fab-bg:var(--ui-primary, var(--color-success, #3dcd58));--ui-fab-color:var(--text-standard, #ffffff);--ui-fab-hover-bg:var(--ui-primary-hover, #2ebd4a);--ui-fab-size:56px;--ui-fab-radius:50%;--ui-fab-shadow:0 4px 12px rgba(0, 0, 0, 0.15);--ui-fab-zindex:1000;--ui-fab-gap:16px;--ui-fab-action-size:40px;--ui-fab-transition:all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);position:fixed;z-index:var(--ui-fab-zindex);display:flex;transition:transform 0.3s ease, opacity 0.3s ease;pointer-events:none;}:host(.is-hidden){opacity:0;transform:scale(0.8);pointer-events:none}:host(.pos-bottom-right){inset-block-end:var(--fab-offset-y);inset-inline-end:var(--fab-offset-x)}:host(.pos-bottom-left){inset-block-end:var(--fab-offset-y);inset-inline-start:var(--fab-offset-x)}:host(.pos-top-right){inset-block-start:var(--fab-offset-y);inset-inline-end:var(--fab-offset-x)}:host(.pos-top-left){inset-block-start:var(--fab-offset-y);inset-inline-start:var(--fab-offset-x)}:host(.pos-bottom-center){inset-block-end:var(--fab-offset-y);inset-inline-start:50%;transform:translateX(-50%)}:host(.pos-top-center){inset-block-start:var(--fab-offset-y);inset-inline-start:50%;transform:translateX(-50%)}:host(.pos-center-right){inset-block-start:50%;inset-inline-end:var(--fab-offset-x);transform:translateY(-50%)}:host(.pos-center-left){inset-block-start:50%;inset-inline-start:var(--fab-offset-x);transform:translateY(-50%)}:host(.size-mini){--ui-fab-size:40px}:host(.size-sm){--ui-fab-size:48px}:host(.size-md){--ui-fab-size:56px}:host(.size-lg){--ui-fab-size:64px}:host(.is-extended){--ui-fab-radius:28px}:host(.is-extended) .fab-trigger{width:auto;padding-inline:20px}:host(.variant-secondary){--ui-fab-bg:var(--color-primary, #6b7280);--ui-fab-hover-bg:var(--color-primary, #4b5563)}:host(.variant-tertiary){--ui-fab-bg:var(--bg-primary, #1f2937);--ui-fab-hover-bg:var(--bg-secondary, #111827)}:host(.variant-surface){--ui-fab-bg:var(--bg-primary, var(--text-standard, #ffffff));--ui-fab-color:var(--bg-secondary, var(--text-primary, #111827));--ui-fab-hover-bg:var(--bg-primary, #f9fafb)}:host(.variant-success){--ui-fab-bg:var(--color-success, #10b981);--ui-fab-hover-bg:var(--color-success-hover, #059669)}:host(.variant-danger){--ui-fab-bg:var(--color-danger, #ef4444);--ui-fab-hover-bg:var(--color-danger-hover, #dc2626)}:host(.variant-warning){--ui-fab-bg:var(--color-warning, #f59e0b);--ui-fab-hover-bg:var(--color-warning-hover, #d97706)}:host(.variant-info){--ui-fab-bg:var(--color-primary, #10b981);--ui-fab-hover-bg:var(--color-primary-hover, #2563eb)}.fab-wrapper{display:flex;pointer-events:auto;align-items:center;justify-content:center;position:relative}:host(.dir-up) .fab-wrapper{flex-direction:column-reverse}:host(.dir-down) .fab-wrapper{flex-direction:column}:host(.dir-left) .fab-wrapper{flex-direction:row-reverse}:host(.dir-right) .fab-wrapper{flex-direction:row}:host(.dir-radial) .fab-wrapper{flex-direction:column;}.fab-trigger{width:var(--ui-fab-size);height:var(--ui-fab-size);cursor:pointer;display:flex;align-items:center;justify-content:center;position:relative;transition:var(--ui-fab-transition);outline:none;z-index:2;font-family:inherit}.fab-trigger:hover{transform:translateY(-2px)}.fab-trigger:active{transform:translateY(0) scale(0.95)}:host(.is-disabled) .fab-trigger{opacity:0.6;cursor:not-allowed;pointer-events:none}.fab-content{display:flex;align-items:center;justify-content:center;gap:8px;position:relative;height:100%}.fab-icon{transition:transform 0.3s ease, opacity 0.3s ease;display:flex;align-items:center;justify-content:center;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.close-icon{opacity:0;transform:translate(-50%, -50%) rotate(-90deg)}:host(.is-open) .primary-icon{opacity:0;transform:translate(-50%, -50%) rotate(90deg)}:host(.is-open) .close-icon{opacity:1;transform:translate(-50%, -50%) rotate(0deg)}.fab-label{font-weight:500;font-size:14px;letter-spacing:0.5px;white-space:nowrap}:host(.is-extended) .fab-icon{position:relative;transform:none;top:0;left:0}:host(.is-extended.is-open) .primary-icon{transform:rotate(90deg)}.fab-actions{display:flex;gap:12px;visibility:hidden;z-index:1;padding:var(--ui-fab-gap);position:relative}:host(.dir-up) .fab-actions{flex-direction:column-reverse;margin-block-end:-16px}:host(.dir-down) .fab-actions{flex-direction:column;margin-block-start:-16px}:host(.dir-left) .fab-actions{flex-direction:row-reverse;margin-inline-end:-16px}:host(.dir-right) .fab-actions{flex-direction:row;margin-inline-start:-16px}:host(.dir-radial) .fab-actions{display:block;position:absolute;left:50%;top:50%;width:0;height:0;padding:0}:host(.is-open) .fab-actions{visibility:visible}::slotted(ui-fab-item){opacity:0;transform:scale(0.5);transition:all 0.2s cubic-bezier(0.25, 0.8, 0.25, 1);pointer-events:none}:host(.is-open) ::slotted(ui-fab-item){opacity:1;transform:scale(1);pointer-events:auto}:host(.dir-radial) ::slotted(ui-fab-item){position:absolute;inset-block-start:-20px;inset-inline-start:-20px}:host(.dir-radial.is-open) ::slotted(ui-fab-item){transform:translate(var(--radial-x, 0), var(--radial-y, 0)) scale(1) !important}:host(.is-open) ::slotted(ui-fab-item:nth-child(1)){transition-delay:40ms}:host(.is-open) ::slotted(ui-fab-item:nth-child(2)){transition-delay:80ms}:host(.is-open) ::slotted(ui-fab-item:nth-child(3)){transition-delay:120ms}:host(.is-open) ::slotted(ui-fab-item:nth-child(4)){transition-delay:160ms}:host(.is-open) ::slotted(ui-fab-item:nth-child(5)){transition-delay:200ms}:host(.is-open) ::slotted(ui-fab-item:nth-child(6)){transition-delay:240ms}:host(.anim-fade) ::slotted(ui-fab-item){transform:scale(1)}:host(.anim-slide-up) ::slotted(ui-fab-item){transform:translateY(20px)}:host(.is-open.anim-slide-up) ::slotted(ui-fab-item){transform:translateY(0)}:host(.anim-slide-down) ::slotted(ui-fab-item){transform:translateY(-20px)}:host(.is-open.anim-slide-down) ::slotted(ui-fab-item){transform:translateY(0)}:host(.anim-slide-left) ::slotted(ui-fab-item){transform:translateX(20px)}:host(.is-open.anim-slide-left) ::slotted(ui-fab-item){transform:translateX(0)}:host(.anim-slide-right) ::slotted(ui-fab-item){transform:translateX(-20px)}:host(.is-open.anim-slide-right) ::slotted(ui-fab-item){transform:translateX(0)}:host(.anim-rotate) ::slotted(ui-fab-item){transform:rotate(45deg) scale(0.5)}:host(.is-open.anim-rotate) ::slotted(ui-fab-item){transform:rotate(0deg) scale(1)}.spinner{width:24px;height:24px;animation:rotate 2s linear infinite}.spinner-circle{stroke-dasharray:1, 200;stroke-dashoffset:0;animation:dash 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{100%{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1, 200;stroke-dashoffset:0}50%{stroke-dasharray:89, 200;stroke-dashoffset:-35px}100%{stroke-dasharray:89, 200;stroke-dashoffset:-124px}}.fab-backdrop{position:fixed;inset:0;background:rgba(255, 255, 255, 0.7);backdrop-filter:blur(4px);z-index:0;pointer-events:auto}.fab-panel{position:absolute;background:var(--ui-surface, var(--bg-primary, #ffffff));border-radius:16px;box-shadow:0 10px 40px rgba(0, 0, 0, 0.15), 0 0 0 1px rgba(0, 0, 0, 0.05);display:flex;flex-direction:column;min-width:200px;opacity:0;pointer-events:none;transform:scale(0.95);transition:opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1), transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);z-index:10;overflow:hidden;border:1px solid rgba(255, 255, 255, 0.1);backdrop-filter:blur(8px)}.fab-panel-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid rgba(0, 0, 0, 0.05);background:rgba(0, 0, 0, 0.02)}.fab-panel-title{font-weight:700;font-size:14px;color:var(--text-primary, #1e293b);letter-spacing:-0.01em}.fab-panel-close{background:transparent;border:none;padding:4px;cursor:pointer;color:var(--text-muted, #64748b);display:flex;align-items:center;border-radius:6px;transition:all 0.2s}.fab-panel-close:hover{background:rgba(0, 0, 0, 0.05);color:var(--color-danger, #ef4444)}.fab-panel-body{flex:1;padding:16px;overflow-y:auto;min-height:0;scrollbar-width:thin}.fab-panel-body::-webkit-scrollbar{width:6px}.fab-panel-footer{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:12px 16px;background:rgba(0, 0, 0, 0.015);border-top:1px solid rgba(0, 0, 0, 0.05)}:host(.is-open) .fab-panel{opacity:1;pointer-events:auto;transform:scale(1)}:host(.pos-bottom-right) .fab-panel{inset-block-end:calc(100% + 12px);inset-inline-end:0;transform-origin:bottom right}:host(.pos-bottom-left) .fab-panel{inset-block-end:calc(100% + 12px);inset-inline-start:0;transform-origin:bottom left}:host(.pos-bottom-center) .fab-panel{inset-block-end:calc(100% + 12px);inset-inline-start:50%;transform:translateX(-50%) scale(0.95);transform-origin:bottom center}:host(.pos-bottom-center.is-open) .fab-panel{transform:translateX(-50%) scale(1)}:host(.pos-top-right) .fab-panel{inset-block-start:calc(100% + 12px);inset-inline-end:0;transform-origin:top right}:host(.pos-top-left) .fab-panel{inset-block-start:calc(100% + 12px);inset-inline-start:0;transform-origin:top left}:host(.pos-top-center) .fab-panel{inset-block-start:calc(100% + 12px);inset-inline-start:50%;transform:translateX(-50%) scale(0.95);transform-origin:top center}:host(.pos-top-center.is-open) .fab-panel{transform:translateX(-50%) scale(1)}:host(.pos-center-right) .fab-panel{inset-inline-end:calc(100% + 12px);inset-block-start:50%;transform:translateY(-50%) scale(0.95);transform-origin:center right}:host(.pos-center-right.is-open) .fab-panel{transform:translateY(-50%) scale(1)}:host(.pos-center-left) .fab-panel{inset-inline-start:calc(100% + 12px);inset-block-start:50%;transform:translateY(-50%) scale(0.95);transform-origin:center left}:host(.pos-center-left.is-open) .fab-panel{transform:translateY(-50%) scale(1)}"}},[769,"ui-fab",{isExpanded:[1028,"is-expanded"],defaultOpen:[4,"default-open"],position:[1],direction:[1],variant:[1],size:[1],type:[1],icon:[1],label:[1],disabled:[4],loading:[4],toggle:[4],isDraggable:[4,"is-draggable"],hideOnScroll:[4,"hide-on-scroll"],showOnScrollUp:[4,"show-on-scroll-up"],offsetX:[2,"offset-x"],offsetY:[2,"offset-y"],zIndex:[2,"z-index"],expandOnHover:[4,"expand-on-hover"],expandOnClick:[4,"expand-on-click"],closeOnAction:[4,"close-on-action"],backdrop:[4],backdropClose:[4,"backdrop-close"],persistent:[4],animation:[1],panel:[4],panelTitle:[1,"panel-title"],panelWidth:[1,"panel-width"],panelHeight:[1,"panel-height"],panelMaxHeight:[1,"panel-max-height"],isDragging:[32],isHidden:[32],currentX:[32],currentY:[32],openFab:[64],closeFab:[64],toggleFab:[64],show:[64],hide:[64]},[[9,"scroll","handleScroll"],[0,"keydown","handleKeyDown"],[0,"uiFabActionClick","onActionClick"]],{isExpanded:[{openChanged:0}]}]),h=d,f=function(){"undefined"!=typeof customElements&&["ui-fab","ui-badge","ui-button","ui-icon"].forEach((t=>{switch(t){case"ui-fab":customElements.get(n(t))||customElements.define(n(t),d);break;case"ui-badge":customElements.get(n(t))||r();break;case"ui-button":customElements.get(n(t))||o();break;case"ui-icon":customElements.get(n(t))||l()}}))};export{h as UiFab,f as defineCustomElement}
|
|
1
|
+
import{proxyCustomElement as t,HTMLElement as i,createEvent as e,h as a,Host as s,transformTag as o}from"@stencil/core/internal/client";import{d as n,a as r}from"./badge.js";import{d as l}from"./icon.js";import{d}from"./loader.js";const h=t(class extends i{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.uiFabClick=e(this,"uiFabClick",7),this.uiFabOpen=e(this,"uiFabOpen",7),this.uiFabClose=e(this,"uiFabClose",7),this.uiFabToggle=e(this,"uiFabToggle",7),this.uiFabActionClick=e(this,"uiFabActionClick",7)}get el(){return this}isExpanded=!1;defaultOpen=!1;position="bottom-right";direction="top";variant="primary";size="md";type="standard";icon;label;disabled=!1;loading=!1;toggle=!1;isDraggable=!1;hideOnScroll=!1;showOnScrollUp=!1;offsetX=24;offsetY=24;zIndex=1e3;expandOnHover=!1;expandOnClick=!0;closeOnAction=!0;backdrop=!1;backdropClose=!0;persistent=!1;animation="scale";panel=!1;panelTitle;panelWidth="320px";panelHeight;panelMaxHeight="480px";isDragging=!1;isHidden=!1;currentX=0;currentY=0;uiFabClick;uiFabOpen;uiFabClose;uiFabToggle;uiFabActionClick;dragStartX=0;dragStartY=0;lastScrollY=0;internalOpen=!1;componentWillLoad(){this.internalOpen=this.defaultOpen||this.isExpanded,this.currentX=this.offsetX,this.currentY=this.offsetY}componentDidLoad(){(this.hideOnScroll||this.showOnScrollUp)&&(this.lastScrollY=window.scrollY)}openChanged(t){this.internalOpen=t,t?(this.uiFabOpen.emit(),this.calculateRadial()):this.uiFabClose.emit()}async openFab(){this.isExpanded=!0}async closeFab(){this.isExpanded=!1}async toggleFab(){this.isExpanded=!this.internalOpen,this.uiFabToggle.emit({isExpanded:this.internalOpen})}async show(){this.isHidden=!1}async hide(){this.isHidden=!0}handleScroll(){if(!this.hideOnScroll&&!this.showOnScrollUp)return;const t=window.scrollY,i=t>this.lastScrollY;this.showOnScrollUp&&!i&&t>100?this.isHidden=!1:this.hideOnScroll&&i&&t>100&&(this.isHidden=!0,this.internalOpen&&this.closeFab()),this.lastScrollY=t}handleKeyDown(t){this.disabled||this.loading||("Enter"===t.key||" "===t.key?(t.preventDefault(),this.handleClick(new MouseEvent("click"))):"Escape"===t.key&&this.internalOpen&&(this.closeFab(),this.focusTrigger()))}focusTrigger(){const t=this.el.shadowRoot?.querySelector(".fab-trigger");t&&t.focus()}handleClick=t=>{this.disabled||this.loading||("speed-dial"===this.type||this.toggle||this.panel?this.expandOnClick&&this.toggleFab():this.uiFabClick.emit(t))};handleBackdropClick=()=>{this.backdropClose&&this.internalOpen&&!this.persistent&&this.closeFab()};handleMouseEnter=()=>{!this.expandOnHover||this.disabled||this.loading||this.openFab()};handleMouseLeave=()=>{this.expandOnHover&&!this.persistent&&this.closeFab()};handlePointerDown=t=>{this.isDraggable&&!this.disabled&&(this.isDragging=!0,this.dragStartX=t.clientX,this.dragStartY=t.clientY,this.el.setPointerCapture(t.pointerId))};handlePointerMove=t=>{if(!this.isDragging||!this.isDraggable)return;const i=t.clientX-this.dragStartX,e=t.clientY-this.dragStartY;this.position.includes("right")?this.currentX-=i:this.position.includes("left")&&(this.currentX+=i),this.position.includes("bottom")?this.currentY-=e:this.position.includes("top")&&(this.currentY+=e),this.dragStartX=t.clientX,this.dragStartY=t.clientY};handlePointerUp=t=>{this.isDragging&&(this.isDragging=!1,this.el.releasePointerCapture(t.pointerId))};onActionClick(){this.closeOnAction&&this.internalOpen&&!this.persistent&&this.closeFab()}calculateRadial(){if("radial"!==this.direction)return;const t=Array.from(this.el.querySelectorAll("ui-fab-item"));if(!t.length)return;const i=80+Math.max(0,15*(t.length-4)),e=1===t.length?0:Math.min(120,90+Math.max(0,10*(t.length-3)))/(t.length-1);t.forEach(((a,s)=>{const o=e*s*(Math.PI/180);let n=Math.abs(Math.sin(o)*i),r=Math.abs(Math.cos(o)*i);if(this.position.includes("right")&&(n=-n),this.position.includes("bottom")&&(r=-r),this.position.includes("-center")){const e=Math.min(220,180+15*(t.length-3)),a=Math.PI/180*((1===t.length?0:e/(t.length-1))*s-e/2);n=Math.sin(a)*i,r=this.position.includes("bottom")?-Math.cos(a)*i:Math.cos(a)*i}if(this.position.includes("center-")){const e=Math.min(180,120+15*(t.length-3)),a=Math.PI/180*((1===t.length?0:e/(t.length-1))*s-e/2);r=Math.sin(a)*i,n=this.position.includes("right")?-Math.cos(a)*i:Math.cos(a)*i}a.style.setProperty("--radial-x",n+"px"),a.style.setProperty("--radial-y",r+"px")}))}render(){const t=!!("extended"===this.type||this.label&&"speed-dial"!==this.type),i="speed-dial"===this.type;return a(s,{key:"7e6f5d73427366ff17f1f5e65bd17f6835098b63",class:{"fab-container":!0,["pos-"+this.position]:!0,["dir-"+this.direction]:!0,["variant-"+this.variant]:!0,["size-"+this.size]:!0,["anim-"+this.animation]:!0,"is-open":this.internalOpen,"is-hidden":this.isHidden,"is-extended":t,"is-speed-dial":i,"is-dragging":this.isDragging,"is-disabled":this.disabled,"is-loading":this.loading},style:{"--fab-offset-x":this.currentX+"px","--fab-offset-y":this.currentY+"px","z-index":""+this.zIndex}},this.backdrop&&this.internalOpen&&a("div",{key:"f1256c22cd5f454ca9d17c3ebd30c0cdf541b491",class:"fab-backdrop",onClick:this.handleBackdropClick}),a("div",{key:"c6772712b949c61127a52722a7e0d2a85ec09f06",class:"fab-wrapper",onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave},i&&a("div",{key:"0398eb0d055bb156268bcb3af06ca48c89b894a3",class:"fab-actions","aria-hidden":this.internalOpen?"false":"true"},a("slot",{key:"5cd5d9f5bc34719f89645cda401eb6d85db11449",name:"actions"})),this.panel&&a("div",{key:"d9075d5a11d5c4d0394e4d637f09f24dc03870af",class:{"fab-panel":!0,"has-header":!!this.panelTitle},role:"dialog","aria-hidden":this.internalOpen?"false":"true",style:{width:this.panelWidth,height:this.panelHeight,maxHeight:this.panelMaxHeight}},this.panelTitle&&a("div",{key:"3becbad472d14e38d2b3ab20e2ff4c34e0269e0f",class:"fab-panel-header"},a("span",{key:"b140b40024a609232de0a763654d03dd0f225a9b",class:"fab-panel-title"},this.panelTitle),a("ui-button",{key:"e72642cfa211273ef540eab5e293e950c0180415",variant:"ghost",class:"fab-panel-close",onClick:()=>this.closeFab(),ariaLabel:"Close panel",icon:"x",iconLibrary:"lucide",iconOnly:!0,size:"sm"})),a("div",{key:"f8006eb878ba30e0711f74633b4cd6e85c9f41bb",class:"fab-panel-body"},a("slot",{key:"35933e69377366b5405245f7f32df3201390066d",name:"panel"})),a("div",{key:"4332e87ae404c1cd4d4a5799f1f25d8a430df709",class:"fab-panel-footer"},a("slot",{key:"7dbbc44576c425495dd7cd8ba53f93a9b7ff1d6a",name:"panel-footer"}))),a("ui-button",{key:"e0459872b67bac7714d6eef306cf232253f3bfd1",variant:this.variant,shape:"extended"===this.type||this.label&&"speed-dial"!==this.type?"rounded":"circle",class:"fab-trigger",disabled:this.disabled||this.loading,loading:this.loading,ariaLabel:this.label||"Floating Action Button",onClick:this.handleClick,onPointerDown:this.handlePointerDown,onPointerMove:this.handlePointerMove,onPointerUp:this.handlePointerUp,onPointerCancel:this.handlePointerUp,label:t&&this.label?this.label:void 0,icon:this.icon,iconOnly:!t,size:"mini"===this.size?"sm":"lg"===this.size?"lg":"md"},i&&this.toggle&&this.internalOpen&&a("ui-icon",{key:"c001fc5d8906bb8aadab821856f181fa204e994a",slot:"icon",class:"fab-icon close-icon",name:"x",size:"mini"===this.size?"18":"24"}),!this.icon&&!t&&a("slot",{key:"73458b1312ff61bcf62fb97bf076c0684389cc57",name:"trigger"}))))}static get watchers(){return{isExpanded:[{openChanged:0}]}}static get style(){return".sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}.a11y-sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}:host{--ui-fab-bg:var(--ui-primary, var(--color-success, #3dcd58));--ui-fab-color:var(--text-standard, #ffffff);--ui-fab-hover-bg:var(--ui-primary-hover, #2ebd4a);--ui-fab-size:56px;--ui-fab-radius:50%;--ui-fab-shadow:0 4px 12px rgba(0, 0, 0, 0.15);--ui-fab-zindex:1000;--ui-fab-gap:16px;--ui-fab-action-size:40px;--ui-fab-transition:all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);position:fixed;z-index:var(--ui-fab-zindex);display:flex;transition:transform 0.3s ease, opacity 0.3s ease;pointer-events:none;}:host(.is-hidden){opacity:0;transform:scale(0.8);pointer-events:none}:host(.pos-bottom-right){inset-block-end:var(--fab-offset-y);inset-inline-end:var(--fab-offset-x)}:host(.pos-bottom-left){inset-block-end:var(--fab-offset-y);inset-inline-start:var(--fab-offset-x)}:host(.pos-top-right){inset-block-start:var(--fab-offset-y);inset-inline-end:var(--fab-offset-x)}:host(.pos-top-left){inset-block-start:var(--fab-offset-y);inset-inline-start:var(--fab-offset-x)}:host(.pos-bottom-center){inset-block-end:var(--fab-offset-y);inset-inline-start:50%;transform:translateX(-50%)}:host(.pos-top-center){inset-block-start:var(--fab-offset-y);inset-inline-start:50%;transform:translateX(-50%)}:host(.pos-center-right){inset-block-start:50%;inset-inline-end:var(--fab-offset-x);transform:translateY(-50%)}:host(.pos-center-left){inset-block-start:50%;inset-inline-start:var(--fab-offset-x);transform:translateY(-50%)}:host(.size-mini){--ui-fab-size:40px}:host(.size-sm){--ui-fab-size:48px}:host(.size-md){--ui-fab-size:56px}:host(.size-lg){--ui-fab-size:64px}:host(.is-extended){--ui-fab-radius:28px}:host(.is-extended) .fab-trigger{width:auto;padding-inline:20px}:host(.variant-secondary){--ui-fab-bg:var(--color-primary, #6b7280);--ui-fab-hover-bg:var(--color-primary, #4b5563)}:host(.variant-tertiary){--ui-fab-bg:var(--bg-primary, #1f2937);--ui-fab-hover-bg:var(--bg-secondary, #111827)}:host(.variant-surface){--ui-fab-bg:var(--bg-primary, var(--text-standard, #ffffff));--ui-fab-color:var(--bg-secondary, var(--text-primary, #111827));--ui-fab-hover-bg:var(--bg-primary, #f9fafb)}:host(.variant-success){--ui-fab-bg:var(--color-success, #10b981);--ui-fab-hover-bg:var(--color-success-hover, #059669)}:host(.variant-danger){--ui-fab-bg:var(--color-danger, #ef4444);--ui-fab-hover-bg:var(--color-danger-hover, #dc2626)}:host(.variant-warning){--ui-fab-bg:var(--color-warning, #f59e0b);--ui-fab-hover-bg:var(--color-warning-hover, #d97706)}:host(.variant-info){--ui-fab-bg:var(--color-primary, #10b981);--ui-fab-hover-bg:var(--color-primary-hover, #2563eb)}.fab-wrapper{display:flex;pointer-events:auto;align-items:center;justify-content:center;position:relative}:host(.dir-up) .fab-wrapper{flex-direction:column-reverse}:host(.dir-down) .fab-wrapper{flex-direction:column}:host(.dir-left) .fab-wrapper{flex-direction:row-reverse}:host(.dir-right) .fab-wrapper{flex-direction:row}:host(.dir-radial) .fab-wrapper{flex-direction:column;}.fab-trigger{width:var(--ui-fab-size);height:var(--ui-fab-size);cursor:pointer;display:flex;align-items:center;justify-content:center;position:relative;transition:var(--ui-fab-transition);outline:none;z-index:2;font-family:inherit}.fab-trigger:hover{transform:translateY(-2px)}.fab-trigger:active{transform:translateY(0) scale(0.95)}:host(.is-disabled) .fab-trigger{opacity:0.6;cursor:not-allowed;pointer-events:none}.fab-content{display:flex;align-items:center;justify-content:center;gap:8px;position:relative;height:100%}.fab-icon{transition:transform 0.3s ease, opacity 0.3s ease;display:flex;align-items:center;justify-content:center;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.close-icon{opacity:0;transform:translate(-50%, -50%) rotate(-90deg)}:host(.is-open) .primary-icon{opacity:0;transform:translate(-50%, -50%) rotate(90deg)}:host(.is-open) .close-icon{opacity:1;transform:translate(-50%, -50%) rotate(0deg)}.fab-label{font-weight:500;font-size:14px;letter-spacing:0.5px;white-space:nowrap}:host(.is-extended) .fab-icon{position:relative;transform:none;top:0;left:0}:host(.is-extended.is-open) .primary-icon{transform:rotate(90deg)}.fab-actions{display:flex;gap:12px;visibility:hidden;z-index:1;padding:var(--ui-fab-gap);position:relative}:host(.dir-up) .fab-actions{flex-direction:column-reverse;margin-block-end:-16px}:host(.dir-down) .fab-actions{flex-direction:column;margin-block-start:-16px}:host(.dir-left) .fab-actions{flex-direction:row-reverse;margin-inline-end:-16px}:host(.dir-right) .fab-actions{flex-direction:row;margin-inline-start:-16px}:host(.dir-radial) .fab-actions{display:block;position:absolute;left:50%;top:50%;width:0;height:0;padding:0}:host(.is-open) .fab-actions{visibility:visible}::slotted(ui-fab-item){opacity:0;transform:scale(0.5);transition:all 0.2s cubic-bezier(0.25, 0.8, 0.25, 1);pointer-events:none}:host(.is-open) ::slotted(ui-fab-item){opacity:1;transform:scale(1);pointer-events:auto}:host(.dir-radial) ::slotted(ui-fab-item){position:absolute;inset-block-start:-20px;inset-inline-start:-20px}:host(.dir-radial.is-open) ::slotted(ui-fab-item){transform:translate(var(--radial-x, 0), var(--radial-y, 0)) scale(1) !important}:host(.is-open) ::slotted(ui-fab-item:nth-child(1)){transition-delay:40ms}:host(.is-open) ::slotted(ui-fab-item:nth-child(2)){transition-delay:80ms}:host(.is-open) ::slotted(ui-fab-item:nth-child(3)){transition-delay:120ms}:host(.is-open) ::slotted(ui-fab-item:nth-child(4)){transition-delay:160ms}:host(.is-open) ::slotted(ui-fab-item:nth-child(5)){transition-delay:200ms}:host(.is-open) ::slotted(ui-fab-item:nth-child(6)){transition-delay:240ms}:host(.anim-fade) ::slotted(ui-fab-item){transform:scale(1)}:host(.anim-slide-up) ::slotted(ui-fab-item){transform:translateY(20px)}:host(.is-open.anim-slide-up) ::slotted(ui-fab-item){transform:translateY(0)}:host(.anim-slide-down) ::slotted(ui-fab-item){transform:translateY(-20px)}:host(.is-open.anim-slide-down) ::slotted(ui-fab-item){transform:translateY(0)}:host(.anim-slide-left) ::slotted(ui-fab-item){transform:translateX(20px)}:host(.is-open.anim-slide-left) ::slotted(ui-fab-item){transform:translateX(0)}:host(.anim-slide-right) ::slotted(ui-fab-item){transform:translateX(-20px)}:host(.is-open.anim-slide-right) ::slotted(ui-fab-item){transform:translateX(0)}:host(.anim-rotate) ::slotted(ui-fab-item){transform:rotate(45deg) scale(0.5)}:host(.is-open.anim-rotate) ::slotted(ui-fab-item){transform:rotate(0deg) scale(1)}.spinner{width:24px;height:24px;animation:rotate 2s linear infinite}.spinner-circle{stroke-dasharray:1, 200;stroke-dashoffset:0;animation:dash 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{100%{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1, 200;stroke-dashoffset:0}50%{stroke-dasharray:89, 200;stroke-dashoffset:-35px}100%{stroke-dasharray:89, 200;stroke-dashoffset:-124px}}.fab-backdrop{position:fixed;inset:0;background:rgba(255, 255, 255, 0.7);backdrop-filter:blur(4px);z-index:0;pointer-events:auto}.fab-panel{position:absolute;background:var(--ui-surface, var(--bg-primary, #ffffff));border-radius:16px;box-shadow:0 10px 40px rgba(0, 0, 0, 0.15), 0 0 0 1px rgba(0, 0, 0, 0.05);display:flex;flex-direction:column;min-width:200px;opacity:0;pointer-events:none;transform:scale(0.95);transition:opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1), transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);z-index:10;overflow:hidden;border:1px solid rgba(255, 255, 255, 0.1);backdrop-filter:blur(8px)}.fab-panel-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid rgba(0, 0, 0, 0.05);background:rgba(0, 0, 0, 0.02)}.fab-panel-title{font-weight:700;font-size:14px;color:var(--text-primary, #1e293b);letter-spacing:-0.01em}.fab-panel-close{background:transparent;border:none;padding:4px;cursor:pointer;color:var(--text-muted, #64748b);display:flex;align-items:center;border-radius:6px;transition:all 0.2s}.fab-panel-close:hover{background:rgba(0, 0, 0, 0.05);color:var(--color-danger, #ef4444)}.fab-panel-body{flex:1;padding:16px;overflow-y:auto;min-height:0;scrollbar-width:thin}.fab-panel-body::-webkit-scrollbar{width:6px}.fab-panel-footer{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:12px 16px;background:rgba(0, 0, 0, 0.015);border-top:1px solid rgba(0, 0, 0, 0.05)}:host(.is-open) .fab-panel{opacity:1;pointer-events:auto;transform:scale(1)}:host(.pos-bottom-right) .fab-panel{inset-block-end:calc(100% + 12px);inset-inline-end:0;transform-origin:bottom right}:host(.pos-bottom-left) .fab-panel{inset-block-end:calc(100% + 12px);inset-inline-start:0;transform-origin:bottom left}:host(.pos-bottom-center) .fab-panel{inset-block-end:calc(100% + 12px);inset-inline-start:50%;transform:translateX(-50%) scale(0.95);transform-origin:bottom center}:host(.pos-bottom-center.is-open) .fab-panel{transform:translateX(-50%) scale(1)}:host(.pos-top-right) .fab-panel{inset-block-start:calc(100% + 12px);inset-inline-end:0;transform-origin:top right}:host(.pos-top-left) .fab-panel{inset-block-start:calc(100% + 12px);inset-inline-start:0;transform-origin:top left}:host(.pos-top-center) .fab-panel{inset-block-start:calc(100% + 12px);inset-inline-start:50%;transform:translateX(-50%) scale(0.95);transform-origin:top center}:host(.pos-top-center.is-open) .fab-panel{transform:translateX(-50%) scale(1)}:host(.pos-center-right) .fab-panel{inset-inline-end:calc(100% + 12px);inset-block-start:50%;transform:translateY(-50%) scale(0.95);transform-origin:center right}:host(.pos-center-right.is-open) .fab-panel{transform:translateY(-50%) scale(1)}:host(.pos-center-left) .fab-panel{inset-inline-start:calc(100% + 12px);inset-block-start:50%;transform:translateY(-50%) scale(0.95);transform-origin:center left}:host(.pos-center-left.is-open) .fab-panel{transform:translateY(-50%) scale(1)}"}},[769,"ui-fab",{isExpanded:[1028,"is-expanded"],defaultOpen:[4,"default-open"],position:[1],direction:[1],variant:[1],size:[1],type:[1],icon:[1],label:[1],disabled:[4],loading:[4],toggle:[4],isDraggable:[4,"is-draggable"],hideOnScroll:[4,"hide-on-scroll"],showOnScrollUp:[4,"show-on-scroll-up"],offsetX:[2,"offset-x"],offsetY:[2,"offset-y"],zIndex:[2,"z-index"],expandOnHover:[4,"expand-on-hover"],expandOnClick:[4,"expand-on-click"],closeOnAction:[4,"close-on-action"],backdrop:[4],backdropClose:[4,"backdrop-close"],persistent:[4],animation:[1],panel:[4],panelTitle:[1,"panel-title"],panelWidth:[1,"panel-width"],panelHeight:[1,"panel-height"],panelMaxHeight:[1,"panel-max-height"],isDragging:[32],isHidden:[32],currentX:[32],currentY:[32],openFab:[64],closeFab:[64],toggleFab:[64],show:[64],hide:[64]},[[9,"scroll","handleScroll"],[0,"keydown","handleKeyDown"],[0,"uiFabActionClick","onActionClick"]],{isExpanded:[{openChanged:0}]}]),f=h,c=function(){"undefined"!=typeof customElements&&["ui-fab","ui-badge","ui-button","ui-icon","ui-loader"].forEach((t=>{switch(t){case"ui-fab":customElements.get(o(t))||customElements.define(o(t),h);break;case"ui-badge":customElements.get(o(t))||r();break;case"ui-button":customElements.get(o(t))||n();break;case"ui-icon":customElements.get(o(t))||l();break;case"ui-loader":customElements.get(o(t))||d()}}))};export{f as UiFab,c as defineCustomElement}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{proxyCustomElement as e,HTMLElement as i,createEvent as a,h as s,Host as t,transformTag as o}from"@stencil/core/internal/client";import{d as r,a as l}from"./badge.js";import{d}from"./icon.js";const n=e(class extends i{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.fileSelect=a(this,"fileSelect",7),this.fileRemove=a(this,"fileRemove",7),this.fileReject=a(this,"fileReject",7),this.uploadProgress=a(this,"uploadProgress",7),this.uploadSuccess=a(this,"uploadSuccess",7),this.allUploadsComplete=a(this,"allUploadsComplete",7)}disconnectedCallback(){Object.values(this.uploadIntervals).forEach((e=>clearInterval(e))),this.uploadIntervals={}}label="";helperText="";accept="";multiple=!1;maxSize=10485760;minSize=0;maxFiles=5;showPreview=!0;disabled=!1;variant="dropzone";uploadIcon="📁";rtl=!1;capture=!1;validateFileName=!0;fileNamePattern="";showValidateButton=!1;showUploadButton=!1;autoUpload=!0;autoCloseOnSuccess=!1;headerTitle="";isDragging=!1;files=[];errors=[];componentStatus="idle";uploadIntervals={};fileSelect;fileRemove;fileReject;uploadProgress;uploadSuccess;allUploadsComplete;inputRef;async removeInvalidFiles(){this.files=this.files.filter((e=>"error"!==e.status)),this.errors=[],this.fileSelect.emit(this.files)}async validate(){this.componentStatus="validating";let e=!0;const i=this.files.map((i=>"pending"!==i.status&&"validating"!==i.status?i:this.validateFile(i.file).length>0?(e=!1,{...i,status:"error"}):{...i,status:"pending"}));return this.files=[...i],await new Promise((e=>setTimeout(e,600))),this.componentStatus=e?"idle":"error",e}async upload(){if("uploading"===this.componentStatus)return;this.componentStatus="uploading";const e=this.files.filter((e=>"pending"===e.status||"error"===e.status));0!==e.length?e.forEach((e=>{this.startSimulation(e.name)})):this.componentStatus="idle"}async clear(){Object.values(this.uploadIntervals).forEach((e=>clearInterval(e))),this.uploadIntervals={},this.files=[],this.errors=[],this.componentStatus="idle"}formatSize(e){return e<1024?e+" B":e<1048576?(e/1024).toFixed(1)+" KB":(e/1048576).toFixed(1)+" MB"}getAcceptTokens(){return this.accept.split(",").map((e=>e.trim())).filter(Boolean)}matchesAcceptRule(e){const i=this.getAcceptTokens();if(0===i.length)return!0;const a=(e.type||"").toLowerCase(),s=e.name.toLowerCase();return i.some((e=>{const i=e.toLowerCase();return i.startsWith(".")?s.endsWith(i):i.endsWith("/*")?a.startsWith(i.slice(0,-1)):a===i}))}getFileNameValidationError(e){if(!this.validateFileName)return null;if(!e.trim())return{fileName:e,message:"A selected file is missing a valid name",rule:"invalid-name"};if(/[<>:"/\\|?*\u0000-\u001F]/.test(e))return{fileName:e,message:e+" contains invalid filename characters",rule:"invalid-name"};if(/[. ]$/.test(e))return{fileName:e,message:e+" cannot end with a space or period",rule:"invalid-name"};const i=e.replace(/\.[^/.]+$/,"");if(/^(con|prn|aux|nul|com[1-9]|lpt[1-9])$/i.test(i))return{fileName:e,message:e+" uses a reserved filename",rule:"reserved-name"};if(this.fileNamePattern)try{if(!RegExp(this.fileNamePattern).test(e))return{fileName:e,message:e+" does not match the required filename pattern",rule:"file-name-pattern"}}catch(e){}return null}validateFile(e){const i=[],a=this.getFileNameValidationError(e.name);return a&&i.push(a),this.minSize>0&&e.size<this.minSize&&i.push({fileName:e.name,message:`${e.name} is smaller than the minimum size (${this.formatSize(this.minSize)})`,rule:"min-size"}),e.size>this.maxSize&&i.push({fileName:e.name,message:`${e.name} exceeds max size (${this.formatSize(this.maxSize)})`,rule:"max-size"}),this.matchesAcceptRule(e)||i.push({fileName:e.name,message:e.name+" is not an accepted file type",rule:"accept"}),i}processFiles(e){const i=[],a=[],s=this.maxFiles-this.files.length;s<=0&&i.push({fileName:"",message:`You can upload up to ${this.maxFiles} files`,rule:"max-files"}),e.length>s&&s>0&&i.push({fileName:"",message:`Only ${s} more file${1===s?"":"s"} can be added`,rule:"max-files"}),Array.from(e).slice(0,s).forEach((e=>{const s=this.files.some((i=>i.name===e.name&&i.size===e.size)),t={name:e.name,size:e.size,type:e.type,file:e,status:"pending",progress:0};s&&(t.status="error",t.errorMessage=`Duplicate detected: "${e.name}"`,i.push({fileName:e.name,message:t.errorMessage,rule:"duplicate-file"})),0===e.size&&(t.status="error",t.errorMessage="File is empty (0 bytes)",i.push({fileName:e.name,message:t.errorMessage,rule:"empty-file"}));const o=this.validateFile(e);o.length>0&&"error"!==t.status&&(t.status="error",t.errorMessage=o[0].message,i.push(...o));const r=new FileReader;r.onload=e=>{t.dataUrl=e.target?.result,this.files=[...this.files]},e.type.startsWith("image/")&&r.readAsDataURL(e),a.push(t)})),this.errors=i.map((e=>e.message)),this.files=[...this.files,...a],this.autoUpload&&a.filter((e=>"pending"===e.status)).forEach((e=>this.startSimulation(e.name))),i.length>0&&this.fileReject.emit(i),this.fileSelect.emit(this.files)}handleDrop=e=>{e.preventDefault(),this.isDragging=!1,!this.disabled&&e.dataTransfer?.files&&this.processFiles(e.dataTransfer.files)};handlePaste=e=>{!this.disabled&&e.clipboardData?.files.length&&this.processFiles(e.clipboardData.files)};startSimulation(e){this.uploadIntervals[e]&&clearInterval(this.uploadIntervals[e]);const i=this.files.findIndex((i=>i.name===e));-1!==i&&(this.files[i].status="uploading",this.files=[...this.files],this.uploadIntervals[e]=setInterval((()=>{const i=this.files.findIndex((i=>i.name===e));if(-1===i)return void clearInterval(this.uploadIntervals[e]);const a=this.files[i].progress||0;if(a>=100)clearInterval(this.uploadIntervals[e]),delete this.uploadIntervals[e],this.files[i].status="success",this.files[i].progress=100,this.files=[...this.files],this.uploadSuccess.emit(this.files[i]),this.checkAllComplete();else{const s=Math.min(100,a+15*Math.random()+5);this.files[i].progress=s,this.files=[...this.files],this.uploadProgress.emit({fileName:e,progress:s})}}),400))}checkAllComplete(){this.files.every((e=>"success"===e.status||"error"===e.status))&&this.files.length>0&&(this.allUploadsComplete.emit(this.files),this.componentStatus="success",this.autoCloseOnSuccess&&setTimeout((()=>{this.clear()}),1500))}handleFileInput=e=>{const i=e.target;i.files&&this.processFiles(i.files),i.value=""};removeFile=e=>{const i=this.files[e];this.uploadIntervals[i.name]&&(clearInterval(this.uploadIntervals[i.name]),delete this.uploadIntervals[i.name]),this.files=this.files.filter(((i,a)=>a!==e)),this.fileRemove.emit(i.name),this.fileSelect.emit(this.files)};getIcon(e){return e.startsWith("image/")?"🖼️":"application/pdf"===e?"📄":e.includes("word")?"📝":e.includes("sheet")||e.includes("excel")?"📊":e.includes("zip")||e.includes("rar")?"🗜️":"📎"}render(){const e=!this.disabled&&this.files.length<this.maxFiles,i=this.files.length>0,a="uploading"===this.componentStatus,o="validating"===this.componentStatus,r=this.files.filter((e=>"error"!==e.status)).length,l=this.files.some((e=>"error"===e.status));return s(t,{key:"e023a6d860e04cbad81a073a3d921b4670644ea1",dir:this.rtl?"rtl":"ltr",onPaste:this.handlePaste,class:{"is-sideload":"sideload"===this.variant}},"sideload"===this.variant&&s("div",{key:"f0a9154a2d0fd3574b659674cf76f3a12f058d57",class:"fu-sideload-header"},s("div",{key:"83d0168bac94abaa64b8e97026c97fd8d2423ae3",class:"fu-header-title-row"},s("ui-icon",{key:"8387010b6ef439d6de023eb97eb18fc38d9aa06d",name:"upload-cloud",library:"lucide",size:"24px",color:"var(--color-primary, #10b981)"}),s("h2",{key:"a31a8e98afedd667a99090de154ee41565e7d6ca"},this.headerTitle||"Sideload Firmware"),s("ui-button",{key:"b6253491fe52f40256bc7160c5d7f127f56618f3",variant:"ghost",size:"md",iconOnly:!0,icon:"x",iconLibrary:"lucide",class:"fu-close-dialog"})),s("div",{key:"b1628a83b975aaf63a78fb4827eda5b723d7559e",class:{"fu-sideload-zone":!0,"is-dragging":this.isDragging},onDragOver:e=>{e.preventDefault(),this.isDragging=!0},onDragLeave:()=>this.isDragging=!1,onDrop:this.handleDrop,onClick:()=>e&&this.inputRef?.click()},s("ui-icon",{key:"438322e56615a49d5b59ce048a53baa70a378bbd",name:"upload",library:"lucide",size:"20px",color:"var(--color-primary, #10b981)"}),s("span",{key:"55635c6bdee2d0f6cdb76f6c631e43af00119c29"},"Drop more files or ",s("strong",{key:"38a4347b3acc9f226d8807513a13e896cc3988ab",class:"fu-browse-pill"},"Browse")))),this.label&&"sideload"!==this.variant&&s("label",{key:"8d7e1ab4892d62a638a0ac2a7ed3de49ea4db3a7",class:"fu-label"},this.label),"dropzone"===this.variant&&s("div",{key:"e3db150b83ca3874088a4f0ab4ff721d1eb8599a",class:{"fu-zone":!0,"fu-dragging":this.isDragging,"fu-disabled":this.disabled},onDragOver:e=>{e.preventDefault(),this.isDragging=!0},onDragLeave:()=>this.isDragging=!1,onDrop:this.handleDrop,onClick:()=>e&&this.inputRef?.click()},s("div",{key:"c067ae850850024015757974c5e881b1fc52cdd0",class:"fu-zone-icon"},this.uploadIcon),s("div",{key:"a438cded36e799c246e29bd636bc79c833246d2e",class:"fu-zone-title"},"Drag & drop files here"),s("div",{key:"952dd6afce21218fa9a3b9c1f7cb1a2854ab9f21",class:"fu-zone-sub"},"or ",s("span",{key:"5946db023c7713f63ff402082de612cfe27d79e1",class:"fu-zone-browse"},"browse files")),s("div",{key:"0b63680de4b4c3d99a985747efd1bdf2733b8c1a",class:"fu-zone-limit"},this.accept&&s("span",{key:"5c75daa15408bec904c57ee6f7e4af4ba09f56b7"},"Accepts: ",this.accept),s("span",{key:"34488fd0e8064650fcbc50672d9f4b40b56c3252"},"Max ",this.formatSize(this.maxSize)," · Up to ",this.maxFiles," files"))),("button"===this.variant||"compact"===this.variant)&&s("div",{key:"805a97dbff1ac3911e20d25d9feb5dc0e0254d90",class:"fu-trigger-row"},"button"===this.variant&&s("ui-button",{key:"54b3624ef218f5c5c8d62a4c5dc88fe24ddc9a27",variant:"primary",onClick:()=>e&&this.inputRef?.click(),disabled:this.disabled||a,label:this.label||"Select Files",icon:this.uploadIcon}),"compact"===this.variant&&s("div",{key:"3ebbfb44da248d985e86f48759772545de916d5d",class:{"fu-compact":!0,"fu-disabled":this.disabled},onClick:()=>e&&this.inputRef?.click()},s("span",{key:"39e88c85f57b10cec99d7c677689cd0402b8b5b0",class:"fu-compact-icon"},this.uploadIcon),s("span",{key:"41e011e8f46008ef0e803fcfe7bbecc55e7ddd98",class:"fu-compact-text"},this.label||"Choose file"),s("span",{key:"5f2c96e19c6ab3d715ffbd9d33fd49c507cda31b",class:"fu-compact-count"},this.files.length," / ",this.maxFiles)),(this.showValidateButton||this.showUploadButton)&&s("div",{key:"494128b8db00f33ab9d602b78c2c17c9374ddf0a",class:"fu-actions"},this.showValidateButton&&s("ui-button",{key:"470be75a0b9a69b8557f749c615f60848b045f7f",variant:"outline",size:"md",loading:o,disabled:a||this.disabled||!i,onClick:()=>this.validate(),label:"Validate"}),this.showUploadButton&&s("ui-button",{key:"14cea3a0039fe06e5a6eff5baf4ce1ffcee724ad",variant:"primary",size:"md",loading:a,disabled:o||this.disabled||!i,onClick:()=>this.upload(),label:"Upload All",icon:"upload",iconLibrary:"lucide"}))),"dropzone"===this.variant&&(this.showValidateButton||this.showUploadButton)&&s("div",{key:"aba1a4dc3bfffe9b2613719ce2ae876e10bd9aca",class:"fu-dropzone-actions"},s("span",{key:"f6bddf09dfb74057ee74aff7e82a38a999973e9c",class:"fu-status-text"},i?this.files.length+" file(s) selected":"No files selected"),s("div",{key:"e050caeb8ba45b9d2d0adeddf659b5a53abddf89",class:"fu-button-group"},this.showValidateButton&&s("ui-button",{key:"95b6ea727bbe7cad4a3ba6f10e1b3777393b4ca4",variant:"ghost",size:"md",loading:o,disabled:a||!i,onClick:()=>this.validate(),label:"Validate Files"}),this.showUploadButton&&s("ui-button",{key:"3d92daaa1f7d0bb85e1bf016fb53aa0f771c4510",variant:"primary",size:"md",loading:a,disabled:o||!i,onClick:()=>this.upload(),label:"Start Upload"}))),s("input",{key:"33eaf23068f5a8042b7e44ef8564f22860693395",ref:e=>this.inputRef=e,type:"file",class:"fu-input-hidden",accept:this.accept,multiple:this.multiple,capture:!0===this.capture?"environment":this.capture||void 0,onChange:this.handleFileInput}),this.errors.length>0&&"sideload"!==this.variant&&s("div",{key:"7c206fe6b3cd098262a1061e9abf88909c443fb2",class:"fu-errors"},this.errors.map((e=>s("div",{class:"fu-error"},"⚠ ",e)))),this.showPreview&&i&&s("div",{key:"36884700bc547826dfbfa32556a59e56ea0c9ff1",class:{"fu-file-list":!0,"is-sideload-list":"sideload"===this.variant}},"sideload"!==this.variant&&s("div",{key:"634011f23cba7105437851f7e969e98ee1e46c09",class:"fu-list-header"},"QUEUED FILES"),this.files.map(((e,i)=>{const t=e.progress||0,o=e.status,r="error"===o?"alert-triangle":"success"===o?"check-circle":"info",l="error"===o?"#f59e0b":"success"===o?"#10b981":"#3b82f6";return s("div",{class:{"fu-file-item":!0,["is-"+o]:!0},key:e.name+i},"sideload"===this.variant?s("ui-icon",{class:"fu-sideload-item-icon",name:r,library:"lucide",size:"24px",color:l}):e.type.startsWith("image/")&&e.dataUrl?s("img",{class:"fu-thumb",src:e.dataUrl,alt:e.name}):s("span",{class:"fu-file-icon"},this.getIcon(e.type)),s("div",{class:"fu-file-info"},s("div",{class:"fu-file-name-row"},s("span",{class:"fu-file-name"},e.name),s("span",{class:"fu-file-status"},"sideload"!==this.variant&&s("span",{class:"fu-status-label"},{pending:"Ready",validating:"Validating...",uploading:"Uploading...",success:"Complete",error:"Failed"}[o]),"success"===o&&s("ui-icon",{name:"check",library:"lucide",size:"14px",color:"#10b981"}),"error"===o&&"sideload"!==this.variant&&s("ui-icon",{name:"alert-circle",library:"lucide",size:"14px",color:"#ef4444"}),"uploading"===o&&s("span",{class:"fu-file-percent"},Math.round(t),"%"))),s("div",{class:"fu-file-meta"},s("span",{class:"fu-file-size"},this.formatSize(e.size)),e.errorMessage&&s("span",{class:"fu-item-error-msg"}," · ",e.errorMessage)),("uploading"===o||"success"===o)&&s("div",{class:"fu-progress-bar"},s("div",{class:"fu-progress-fill",style:{width:t+"%"}}))),s("ui-button",{variant:"ghost",size:"xxs",iconOnly:!0,class:"fu-remove",onClick:e=>{e.stopPropagation(),this.removeFile(i)},ariaLabel:"Remove",icon:"x-circle",iconLibrary:"lucide",iconSize:"18px",disabled:a&&"uploading"===o}))}))),"sideload"===this.variant&&s("div",{key:"ef71906dbefd987da6f7cf54dacb41528d8e7d4b",class:"fu-sideload-footer"},s("div",{key:"e5ce897412814293206de68572bce9fe93478fff",class:"fu-footer-actions-left"},l&&s("ui-button",{key:"40c336eb57ba23767800511d7f8a5525c3bb3a0f",variant:"ghost",size:"md",label:"Clean Queue",onClick:()=>this.removeInvalidFiles(),icon:"trash-2",iconLibrary:"lucide"})),s("div",{key:"31c7983a14455d24158aa3c7bb69b490f995968e",class:"fu-footer-actions-right"},s("ui-button",{key:"d9723f7193044a178473437cad30d2074d41b6b4",variant:"outline",label:"Cancel",onClick:()=>this.clear()}),s("ui-button",{key:"532aae5a83893629ee5d8186904286393183f5e7",variant:"primary",label:`Upload ${r} files`,disabled:0===r||a,loading:a,onClick:()=>this.upload(),icon:"upload",iconLibrary:"lucide"}))),this.helperText&&"sideload"!==this.variant&&s("div",{key:"6bd4941a135fbf542f3d9ca275847660424695d9",class:"fu-helper"},this.helperText))}static get style(){return".sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}.a11y-sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}:host{display:block;font-family:inherit}:host(.is-sideload){background:white;border-radius:24px;overflow:hidden;box-shadow:0 10px 40px rgba(0, 0, 0, 0.12);border:1px solid #e5e7eb}.fu-label{display:block;font-size:13px;font-weight:600;color:var(--text-secondary, #374151);margin-bottom:6px}.fu-sideload-header{padding:32px 32px 16px 32px}.fu-header-title-row{display:flex;align-items:center;gap:16px;margin-bottom:24px}.fu-header-title-row h2{margin:0;font-size:28px;font-weight:500;color:#111827;flex:1}.fu-close-dialog{background:#ef4444 !important;color:white !important;border-radius:8px !important;width:36px;height:36px}.fu-sideload-zone{border:2px dashed #e5e7eb;border-radius:12px;padding:16px;display:flex;align-items:center;justify-content:center;gap:12px;cursor:pointer;background:#fdfdfd;transition:all 0.2s}.fu-sideload-zone:hover,.fu-sideload-zone.is-dragging{border-color:#10b981;background:#f0fdf4}.fu-sideload-zone span{font-size:15px;color:#4b5563}.fu-browse-pill{background:#10b981;color:white;padding:2px 12px;border-radius:20px;font-weight:600;margin-left:4px}.fu-zone{border:2px dashed var(--border-strong, #d1d5db);border-radius:14px;padding:40px 24px;text-align:center;cursor:pointer;background:var(--bg-primary, #fafafa);transition:border-color 0.2s, background 0.2s}.fu-zone:hover:not(.fu-disabled){border-color:var(--color-primary, #10b981);background:var(--bg-primary, #eff6ff)}.fu-zone.fu-dragging{border-color:var(--color-primary, #10b981);background:var(--bg-primary, #eff6ff);box-shadow:inset 0 0 0 3px rgba(var(--color-primary-rgb, 59, 130, 246), 0.2)}.fu-zone.fu-disabled{opacity:0.5;cursor:not-allowed}.fu-zone-icon{font-size:40px;margin-bottom:10px}.fu-file-list{display:flex;flex-direction:column;gap:12px;padding:16px 32px;max-height:400px;overflow-y:auto}.fu-file-list.is-sideload-list{padding:0 32px 32px 32px}.fu-file-item{display:flex;align-items:center;gap:16px;padding:14px 20px;border:1px solid #e5e7eb;border-radius:14px;background:white;transition:transform 0.2s}.fu-file-item.is-error{background:#fff1f2;border-color:#fecaca}.fu-sideload-item-icon{flex-shrink:0}.fu-file-info{flex:1;min-width:0}.fu-file-name{display:block;font-size:15px;font-weight:600;color:#1f2937;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fu-file-meta{font-size:13px;color:#6b7280;margin-top:2px}.fu-item-error-msg{color:#ef4444;font-weight:700;background:rgba(239, 68, 68, 0.08);padding:1px 6px;border-radius:4px}.fu-remove{color:#9ca3af !important}.fu-remove:hover{color:#ef4444 !important}.fu-sideload-footer{padding:24px 32px;background:#f9fafb;border-top:1px solid #e5e7eb;display:flex;align-items:center;justify-content:space-between}.fu-footer-actions-right{display:flex;gap:12px}.fu-trigger-row{display:flex;align-items:center;gap:16px}.fu-actions{display:flex;gap:8px}.fu-progress-bar{height:6px;background:#e5e7eb;border-radius:3px;margin-top:10px;overflow:hidden}.fu-progress-fill{height:100%;background:#10b981;transition:width 0.3s ease}.fu-input-hidden{display:none}"}},[513,"ui-file-upload",{label:[1],helperText:[1,"helper-text"],accept:[1],multiple:[4],maxSize:[2,"max-size"],minSize:[2,"min-size"],maxFiles:[2,"max-files"],showPreview:[4,"show-preview"],disabled:[4],variant:[1],uploadIcon:[1,"upload-icon"],rtl:[4],capture:[8],validateFileName:[4,"validate-file-name"],fileNamePattern:[1,"file-name-pattern"],showValidateButton:[4,"show-validate-button"],showUploadButton:[4,"show-upload-button"],autoUpload:[4,"auto-upload"],autoCloseOnSuccess:[4,"auto-close-on-success"],headerTitle:[1,"header-title"],isDragging:[32],files:[32],errors:[32],componentStatus:[32],removeInvalidFiles:[64],validate:[64],upload:[64],clear:[64]}]),c=n,f=function(){"undefined"!=typeof customElements&&["ui-file-upload","ui-badge","ui-button","ui-icon"].forEach((e=>{switch(e){case"ui-file-upload":customElements.get(o(e))||customElements.define(o(e),n);break;case"ui-badge":customElements.get(o(e))||l();break;case"ui-button":customElements.get(o(e))||r();break;case"ui-icon":customElements.get(o(e))||d()}}))};export{c as UiFileUpload,f as defineCustomElement}
|
|
1
|
+
import{proxyCustomElement as e,HTMLElement as i,createEvent as a,h as s,Host as t,transformTag as o}from"@stencil/core/internal/client";import{d as r,a as l}from"./badge.js";import{d}from"./icon.js";import{d as n}from"./loader.js";const c=e(class extends i{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.fileSelect=a(this,"fileSelect",7),this.fileRemove=a(this,"fileRemove",7),this.fileReject=a(this,"fileReject",7),this.uploadProgress=a(this,"uploadProgress",7),this.uploadSuccess=a(this,"uploadSuccess",7),this.allUploadsComplete=a(this,"allUploadsComplete",7)}disconnectedCallback(){Object.values(this.uploadIntervals).forEach((e=>clearInterval(e))),this.uploadIntervals={}}label="";helperText="";accept="";multiple=!1;maxSize=10485760;minSize=0;maxFiles=5;showPreview=!0;disabled=!1;variant="dropzone";uploadIcon="📁";rtl=!1;capture=!1;validateFileName=!0;fileNamePattern="";showValidateButton=!1;showUploadButton=!1;autoUpload=!0;autoCloseOnSuccess=!1;headerTitle="";isDragging=!1;files=[];errors=[];componentStatus="idle";uploadIntervals={};fileSelect;fileRemove;fileReject;uploadProgress;uploadSuccess;allUploadsComplete;inputRef;async removeInvalidFiles(){this.files=this.files.filter((e=>"error"!==e.status)),this.errors=[],this.fileSelect.emit(this.files)}async validate(){this.componentStatus="validating";let e=!0;const i=this.files.map((i=>"pending"!==i.status&&"validating"!==i.status?i:this.validateFile(i.file).length>0?(e=!1,{...i,status:"error"}):{...i,status:"pending"}));return this.files=[...i],await new Promise((e=>setTimeout(e,600))),this.componentStatus=e?"idle":"error",e}async upload(){if("uploading"===this.componentStatus)return;this.componentStatus="uploading";const e=this.files.filter((e=>"pending"===e.status||"error"===e.status));0!==e.length?e.forEach((e=>{this.startSimulation(e.name)})):this.componentStatus="idle"}async clear(){Object.values(this.uploadIntervals).forEach((e=>clearInterval(e))),this.uploadIntervals={},this.files=[],this.errors=[],this.componentStatus="idle"}formatSize(e){return e<1024?e+" B":e<1048576?(e/1024).toFixed(1)+" KB":(e/1048576).toFixed(1)+" MB"}getAcceptTokens(){return this.accept.split(",").map((e=>e.trim())).filter(Boolean)}matchesAcceptRule(e){const i=this.getAcceptTokens();if(0===i.length)return!0;const a=(e.type||"").toLowerCase(),s=e.name.toLowerCase();return i.some((e=>{const i=e.toLowerCase();return i.startsWith(".")?s.endsWith(i):i.endsWith("/*")?a.startsWith(i.slice(0,-1)):a===i}))}getFileNameValidationError(e){if(!this.validateFileName)return null;if(!e.trim())return{fileName:e,message:"A selected file is missing a valid name",rule:"invalid-name"};if(/[<>:"/\\|?*\u0000-\u001F]/.test(e))return{fileName:e,message:e+" contains invalid filename characters",rule:"invalid-name"};if(/[. ]$/.test(e))return{fileName:e,message:e+" cannot end with a space or period",rule:"invalid-name"};const i=e.replace(/\.[^/.]+$/,"");if(/^(con|prn|aux|nul|com[1-9]|lpt[1-9])$/i.test(i))return{fileName:e,message:e+" uses a reserved filename",rule:"reserved-name"};if(this.fileNamePattern)try{if(!RegExp(this.fileNamePattern).test(e))return{fileName:e,message:e+" does not match the required filename pattern",rule:"file-name-pattern"}}catch(e){}return null}validateFile(e){const i=[],a=this.getFileNameValidationError(e.name);return a&&i.push(a),this.minSize>0&&e.size<this.minSize&&i.push({fileName:e.name,message:`${e.name} is smaller than the minimum size (${this.formatSize(this.minSize)})`,rule:"min-size"}),e.size>this.maxSize&&i.push({fileName:e.name,message:`${e.name} exceeds max size (${this.formatSize(this.maxSize)})`,rule:"max-size"}),this.matchesAcceptRule(e)||i.push({fileName:e.name,message:e.name+" is not an accepted file type",rule:"accept"}),i}processFiles(e){const i=[],a=[],s=this.maxFiles-this.files.length;s<=0&&i.push({fileName:"",message:`You can upload up to ${this.maxFiles} files`,rule:"max-files"}),e.length>s&&s>0&&i.push({fileName:"",message:`Only ${s} more file${1===s?"":"s"} can be added`,rule:"max-files"}),Array.from(e).slice(0,s).forEach((e=>{const s=this.files.some((i=>i.name===e.name&&i.size===e.size)),t={name:e.name,size:e.size,type:e.type,file:e,status:"pending",progress:0};s&&(t.status="error",t.errorMessage=`Duplicate detected: "${e.name}"`,i.push({fileName:e.name,message:t.errorMessage,rule:"duplicate-file"})),0===e.size&&(t.status="error",t.errorMessage="File is empty (0 bytes)",i.push({fileName:e.name,message:t.errorMessage,rule:"empty-file"}));const o=this.validateFile(e);o.length>0&&"error"!==t.status&&(t.status="error",t.errorMessage=o[0].message,i.push(...o));const r=new FileReader;r.onload=e=>{t.dataUrl=e.target?.result,this.files=[...this.files]},e.type.startsWith("image/")&&r.readAsDataURL(e),a.push(t)})),this.errors=i.map((e=>e.message)),this.files=[...this.files,...a],this.autoUpload&&a.filter((e=>"pending"===e.status)).forEach((e=>this.startSimulation(e.name))),i.length>0&&this.fileReject.emit(i),this.fileSelect.emit(this.files)}handleDrop=e=>{e.preventDefault(),this.isDragging=!1,!this.disabled&&e.dataTransfer?.files&&this.processFiles(e.dataTransfer.files)};handlePaste=e=>{!this.disabled&&e.clipboardData?.files.length&&this.processFiles(e.clipboardData.files)};startSimulation(e){this.uploadIntervals[e]&&clearInterval(this.uploadIntervals[e]);const i=this.files.findIndex((i=>i.name===e));-1!==i&&(this.files[i].status="uploading",this.files=[...this.files],this.uploadIntervals[e]=setInterval((()=>{const i=this.files.findIndex((i=>i.name===e));if(-1===i)return void clearInterval(this.uploadIntervals[e]);const a=this.files[i].progress||0;if(a>=100)clearInterval(this.uploadIntervals[e]),delete this.uploadIntervals[e],this.files[i].status="success",this.files[i].progress=100,this.files=[...this.files],this.uploadSuccess.emit(this.files[i]),this.checkAllComplete();else{const s=Math.min(100,a+15*Math.random()+5);this.files[i].progress=s,this.files=[...this.files],this.uploadProgress.emit({fileName:e,progress:s})}}),400))}checkAllComplete(){this.files.every((e=>"success"===e.status||"error"===e.status))&&this.files.length>0&&(this.allUploadsComplete.emit(this.files),this.componentStatus="success",this.autoCloseOnSuccess&&setTimeout((()=>{this.clear()}),1500))}handleFileInput=e=>{const i=e.target;i.files&&this.processFiles(i.files),i.value=""};removeFile=e=>{const i=this.files[e];this.uploadIntervals[i.name]&&(clearInterval(this.uploadIntervals[i.name]),delete this.uploadIntervals[i.name]),this.files=this.files.filter(((i,a)=>a!==e)),this.fileRemove.emit(i.name),this.fileSelect.emit(this.files)};getIcon(e){return e.startsWith("image/")?"🖼️":"application/pdf"===e?"📄":e.includes("word")?"📝":e.includes("sheet")||e.includes("excel")?"📊":e.includes("zip")||e.includes("rar")?"🗜️":"📎"}render(){const e=!this.disabled&&this.files.length<this.maxFiles,i=this.files.length>0,a="uploading"===this.componentStatus,o="validating"===this.componentStatus,r=this.files.filter((e=>"error"!==e.status)).length,l=this.files.some((e=>"error"===e.status));return s(t,{key:"e023a6d860e04cbad81a073a3d921b4670644ea1",dir:this.rtl?"rtl":"ltr",onPaste:this.handlePaste,class:{"is-sideload":"sideload"===this.variant}},"sideload"===this.variant&&s("div",{key:"f0a9154a2d0fd3574b659674cf76f3a12f058d57",class:"fu-sideload-header"},s("div",{key:"83d0168bac94abaa64b8e97026c97fd8d2423ae3",class:"fu-header-title-row"},s("ui-icon",{key:"8387010b6ef439d6de023eb97eb18fc38d9aa06d",name:"upload-cloud",library:"lucide",size:"24px",color:"var(--color-primary, #10b981)"}),s("h2",{key:"a31a8e98afedd667a99090de154ee41565e7d6ca"},this.headerTitle||"Sideload Firmware"),s("ui-button",{key:"b6253491fe52f40256bc7160c5d7f127f56618f3",variant:"ghost",size:"md",iconOnly:!0,icon:"x",iconLibrary:"lucide",class:"fu-close-dialog"})),s("div",{key:"b1628a83b975aaf63a78fb4827eda5b723d7559e",class:{"fu-sideload-zone":!0,"is-dragging":this.isDragging},onDragOver:e=>{e.preventDefault(),this.isDragging=!0},onDragLeave:()=>this.isDragging=!1,onDrop:this.handleDrop,onClick:()=>e&&this.inputRef?.click()},s("ui-icon",{key:"438322e56615a49d5b59ce048a53baa70a378bbd",name:"upload",library:"lucide",size:"20px",color:"var(--color-primary, #10b981)"}),s("span",{key:"55635c6bdee2d0f6cdb76f6c631e43af00119c29"},"Drop more files or ",s("strong",{key:"38a4347b3acc9f226d8807513a13e896cc3988ab",class:"fu-browse-pill"},"Browse")))),this.label&&"sideload"!==this.variant&&s("label",{key:"8d7e1ab4892d62a638a0ac2a7ed3de49ea4db3a7",class:"fu-label"},this.label),"dropzone"===this.variant&&s("div",{key:"e3db150b83ca3874088a4f0ab4ff721d1eb8599a",class:{"fu-zone":!0,"fu-dragging":this.isDragging,"fu-disabled":this.disabled},onDragOver:e=>{e.preventDefault(),this.isDragging=!0},onDragLeave:()=>this.isDragging=!1,onDrop:this.handleDrop,onClick:()=>e&&this.inputRef?.click()},s("div",{key:"c067ae850850024015757974c5e881b1fc52cdd0",class:"fu-zone-icon"},this.uploadIcon),s("div",{key:"a438cded36e799c246e29bd636bc79c833246d2e",class:"fu-zone-title"},"Drag & drop files here"),s("div",{key:"952dd6afce21218fa9a3b9c1f7cb1a2854ab9f21",class:"fu-zone-sub"},"or ",s("span",{key:"5946db023c7713f63ff402082de612cfe27d79e1",class:"fu-zone-browse"},"browse files")),s("div",{key:"0b63680de4b4c3d99a985747efd1bdf2733b8c1a",class:"fu-zone-limit"},this.accept&&s("span",{key:"5c75daa15408bec904c57ee6f7e4af4ba09f56b7"},"Accepts: ",this.accept),s("span",{key:"34488fd0e8064650fcbc50672d9f4b40b56c3252"},"Max ",this.formatSize(this.maxSize)," · Up to ",this.maxFiles," files"))),("button"===this.variant||"compact"===this.variant)&&s("div",{key:"805a97dbff1ac3911e20d25d9feb5dc0e0254d90",class:"fu-trigger-row"},"button"===this.variant&&s("ui-button",{key:"54b3624ef218f5c5c8d62a4c5dc88fe24ddc9a27",variant:"primary",onClick:()=>e&&this.inputRef?.click(),disabled:this.disabled||a,label:this.label||"Select Files",icon:this.uploadIcon}),"compact"===this.variant&&s("div",{key:"3ebbfb44da248d985e86f48759772545de916d5d",class:{"fu-compact":!0,"fu-disabled":this.disabled},onClick:()=>e&&this.inputRef?.click()},s("span",{key:"39e88c85f57b10cec99d7c677689cd0402b8b5b0",class:"fu-compact-icon"},this.uploadIcon),s("span",{key:"41e011e8f46008ef0e803fcfe7bbecc55e7ddd98",class:"fu-compact-text"},this.label||"Choose file"),s("span",{key:"5f2c96e19c6ab3d715ffbd9d33fd49c507cda31b",class:"fu-compact-count"},this.files.length," / ",this.maxFiles)),(this.showValidateButton||this.showUploadButton)&&s("div",{key:"494128b8db00f33ab9d602b78c2c17c9374ddf0a",class:"fu-actions"},this.showValidateButton&&s("ui-button",{key:"470be75a0b9a69b8557f749c615f60848b045f7f",variant:"outline",size:"md",loading:o,disabled:a||this.disabled||!i,onClick:()=>this.validate(),label:"Validate"}),this.showUploadButton&&s("ui-button",{key:"14cea3a0039fe06e5a6eff5baf4ce1ffcee724ad",variant:"primary",size:"md",loading:a,disabled:o||this.disabled||!i,onClick:()=>this.upload(),label:"Upload All",icon:"upload",iconLibrary:"lucide"}))),"dropzone"===this.variant&&(this.showValidateButton||this.showUploadButton)&&s("div",{key:"aba1a4dc3bfffe9b2613719ce2ae876e10bd9aca",class:"fu-dropzone-actions"},s("span",{key:"f6bddf09dfb74057ee74aff7e82a38a999973e9c",class:"fu-status-text"},i?this.files.length+" file(s) selected":"No files selected"),s("div",{key:"e050caeb8ba45b9d2d0adeddf659b5a53abddf89",class:"fu-button-group"},this.showValidateButton&&s("ui-button",{key:"95b6ea727bbe7cad4a3ba6f10e1b3777393b4ca4",variant:"ghost",size:"md",loading:o,disabled:a||!i,onClick:()=>this.validate(),label:"Validate Files"}),this.showUploadButton&&s("ui-button",{key:"3d92daaa1f7d0bb85e1bf016fb53aa0f771c4510",variant:"primary",size:"md",loading:a,disabled:o||!i,onClick:()=>this.upload(),label:"Start Upload"}))),s("input",{key:"33eaf23068f5a8042b7e44ef8564f22860693395",ref:e=>this.inputRef=e,type:"file",class:"fu-input-hidden",accept:this.accept,multiple:this.multiple,capture:!0===this.capture?"environment":this.capture||void 0,onChange:this.handleFileInput}),this.errors.length>0&&"sideload"!==this.variant&&s("div",{key:"7c206fe6b3cd098262a1061e9abf88909c443fb2",class:"fu-errors"},this.errors.map((e=>s("div",{class:"fu-error"},"⚠ ",e)))),this.showPreview&&i&&s("div",{key:"36884700bc547826dfbfa32556a59e56ea0c9ff1",class:{"fu-file-list":!0,"is-sideload-list":"sideload"===this.variant}},"sideload"!==this.variant&&s("div",{key:"634011f23cba7105437851f7e969e98ee1e46c09",class:"fu-list-header"},"QUEUED FILES"),this.files.map(((e,i)=>{const t=e.progress||0,o=e.status,r="error"===o?"alert-triangle":"success"===o?"check-circle":"info",l="error"===o?"#f59e0b":"success"===o?"#10b981":"#3b82f6";return s("div",{class:{"fu-file-item":!0,["is-"+o]:!0},key:e.name+i},"sideload"===this.variant?s("ui-icon",{class:"fu-sideload-item-icon",name:r,library:"lucide",size:"24px",color:l}):e.type.startsWith("image/")&&e.dataUrl?s("img",{class:"fu-thumb",src:e.dataUrl,alt:e.name}):s("span",{class:"fu-file-icon"},this.getIcon(e.type)),s("div",{class:"fu-file-info"},s("div",{class:"fu-file-name-row"},s("span",{class:"fu-file-name"},e.name),s("span",{class:"fu-file-status"},"sideload"!==this.variant&&s("span",{class:"fu-status-label"},{pending:"Ready",validating:"Validating...",uploading:"Uploading...",success:"Complete",error:"Failed"}[o]),"success"===o&&s("ui-icon",{name:"check",library:"lucide",size:"14px",color:"#10b981"}),"error"===o&&"sideload"!==this.variant&&s("ui-icon",{name:"alert-circle",library:"lucide",size:"14px",color:"#ef4444"}),"uploading"===o&&s("span",{class:"fu-file-percent"},Math.round(t),"%"))),s("div",{class:"fu-file-meta"},s("span",{class:"fu-file-size"},this.formatSize(e.size)),e.errorMessage&&s("span",{class:"fu-item-error-msg"}," · ",e.errorMessage)),("uploading"===o||"success"===o)&&s("div",{class:"fu-progress-bar"},s("div",{class:"fu-progress-fill",style:{width:t+"%"}}))),s("ui-button",{variant:"ghost",size:"xxs",iconOnly:!0,class:"fu-remove",onClick:e=>{e.stopPropagation(),this.removeFile(i)},ariaLabel:"Remove",icon:"x-circle",iconLibrary:"lucide",iconSize:"18px",disabled:a&&"uploading"===o}))}))),"sideload"===this.variant&&s("div",{key:"ef71906dbefd987da6f7cf54dacb41528d8e7d4b",class:"fu-sideload-footer"},s("div",{key:"e5ce897412814293206de68572bce9fe93478fff",class:"fu-footer-actions-left"},l&&s("ui-button",{key:"40c336eb57ba23767800511d7f8a5525c3bb3a0f",variant:"ghost",size:"md",label:"Clean Queue",onClick:()=>this.removeInvalidFiles(),icon:"trash-2",iconLibrary:"lucide"})),s("div",{key:"31c7983a14455d24158aa3c7bb69b490f995968e",class:"fu-footer-actions-right"},s("ui-button",{key:"d9723f7193044a178473437cad30d2074d41b6b4",variant:"outline",label:"Cancel",onClick:()=>this.clear()}),s("ui-button",{key:"532aae5a83893629ee5d8186904286393183f5e7",variant:"primary",label:`Upload ${r} files`,disabled:0===r||a,loading:a,onClick:()=>this.upload(),icon:"upload",iconLibrary:"lucide"}))),this.helperText&&"sideload"!==this.variant&&s("div",{key:"6bd4941a135fbf542f3d9ca275847660424695d9",class:"fu-helper"},this.helperText))}static get style(){return".sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}.a11y-sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}:host{display:block;font-family:inherit}:host(.is-sideload){background:white;border-radius:24px;overflow:hidden;box-shadow:0 10px 40px rgba(0, 0, 0, 0.12);border:1px solid #e5e7eb}.fu-label{display:block;font-size:13px;font-weight:600;color:var(--text-secondary, #374151);margin-bottom:6px}.fu-sideload-header{padding:32px 32px 16px 32px}.fu-header-title-row{display:flex;align-items:center;gap:16px;margin-bottom:24px}.fu-header-title-row h2{margin:0;font-size:28px;font-weight:500;color:#111827;flex:1}.fu-close-dialog{background:#ef4444 !important;color:white !important;border-radius:8px !important;width:36px;height:36px}.fu-sideload-zone{border:2px dashed #e5e7eb;border-radius:12px;padding:16px;display:flex;align-items:center;justify-content:center;gap:12px;cursor:pointer;background:#fdfdfd;transition:all 0.2s}.fu-sideload-zone:hover,.fu-sideload-zone.is-dragging{border-color:#10b981;background:#f0fdf4}.fu-sideload-zone span{font-size:15px;color:#4b5563}.fu-browse-pill{background:#10b981;color:white;padding:2px 12px;border-radius:20px;font-weight:600;margin-left:4px}.fu-zone{border:2px dashed var(--border-strong, #d1d5db);border-radius:14px;padding:40px 24px;text-align:center;cursor:pointer;background:var(--bg-primary, #fafafa);transition:border-color 0.2s, background 0.2s}.fu-zone:hover:not(.fu-disabled){border-color:var(--color-primary, #10b981);background:var(--bg-primary, #eff6ff)}.fu-zone.fu-dragging{border-color:var(--color-primary, #10b981);background:var(--bg-primary, #eff6ff);box-shadow:inset 0 0 0 3px rgba(var(--color-primary-rgb, 59, 130, 246), 0.2)}.fu-zone.fu-disabled{opacity:0.5;cursor:not-allowed}.fu-zone-icon{font-size:40px;margin-bottom:10px}.fu-file-list{display:flex;flex-direction:column;gap:12px;padding:16px 32px;max-height:400px;overflow-y:auto}.fu-file-list.is-sideload-list{padding:0 32px 32px 32px}.fu-file-item{display:flex;align-items:center;gap:16px;padding:14px 20px;border:1px solid #e5e7eb;border-radius:14px;background:white;transition:transform 0.2s}.fu-file-item.is-error{background:#fff1f2;border-color:#fecaca}.fu-sideload-item-icon{flex-shrink:0}.fu-file-info{flex:1;min-width:0}.fu-file-name{display:block;font-size:15px;font-weight:600;color:#1f2937;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fu-file-meta{font-size:13px;color:#6b7280;margin-top:2px}.fu-item-error-msg{color:#ef4444;font-weight:700;background:rgba(239, 68, 68, 0.08);padding:1px 6px;border-radius:4px}.fu-remove{color:#9ca3af !important}.fu-remove:hover{color:#ef4444 !important}.fu-sideload-footer{padding:24px 32px;background:#f9fafb;border-top:1px solid #e5e7eb;display:flex;align-items:center;justify-content:space-between}.fu-footer-actions-right{display:flex;gap:12px}.fu-trigger-row{display:flex;align-items:center;gap:16px}.fu-actions{display:flex;gap:8px}.fu-progress-bar{height:6px;background:#e5e7eb;border-radius:3px;margin-top:10px;overflow:hidden}.fu-progress-fill{height:100%;background:#10b981;transition:width 0.3s ease}.fu-input-hidden{display:none}"}},[513,"ui-file-upload",{label:[1],helperText:[1,"helper-text"],accept:[1],multiple:[4],maxSize:[2,"max-size"],minSize:[2,"min-size"],maxFiles:[2,"max-files"],showPreview:[4,"show-preview"],disabled:[4],variant:[1],uploadIcon:[1,"upload-icon"],rtl:[4],capture:[8],validateFileName:[4,"validate-file-name"],fileNamePattern:[1,"file-name-pattern"],showValidateButton:[4,"show-validate-button"],showUploadButton:[4,"show-upload-button"],autoUpload:[4,"auto-upload"],autoCloseOnSuccess:[4,"auto-close-on-success"],headerTitle:[1,"header-title"],isDragging:[32],files:[32],errors:[32],componentStatus:[32],removeInvalidFiles:[64],validate:[64],upload:[64],clear:[64]}]),f=c,u=function(){"undefined"!=typeof customElements&&["ui-file-upload","ui-badge","ui-button","ui-icon","ui-loader"].forEach((e=>{switch(e){case"ui-file-upload":customElements.get(o(e))||customElements.define(o(e),c);break;case"ui-badge":customElements.get(o(e))||l();break;case"ui-button":customElements.get(o(e))||r();break;case"ui-icon":customElements.get(o(e))||d();break;case"ui-loader":customElements.get(o(e))||n()}}))};export{f as UiFileUpload,u as defineCustomElement}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{proxyCustomElement as t,HTMLElement as i,createEvent as a,h as n,transformTag as o}from"@stencil/core/internal/client";import{d as e}from"./icon.js";const
|
|
1
|
+
import{proxyCustomElement as t,HTMLElement as i,createEvent as a,h as n,transformTag as o}from"@stencil/core/internal/client";import{d as e}from"./icon.js";import{d as l}from"./loader.js";const r=t(class extends i{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.navItemClick=a(this,"navItemClick",7)}items=[];activeId;variant="default";size="md";align="start";scrollable=!1;showDivider=!1;fullWidth=!1;displayAs="buttons";iconLibrary="default";navItemClick;scrollLeft=0;canScrollLeft=!1;canScrollRight=!1;navRef;parseItems(){if("string"==typeof this.items)try{return JSON.parse(this.items)}catch(t){return console.error("Failed to parse items JSON:",t),[]}return this.items}handleItemClick=(t,i)=>{t.disabled?i.preventDefault():(t.href||i.preventDefault(),this.activeId=t.id,this.navItemClick.emit(t))};handleScroll=()=>{if(!this.navRef)return;const{scrollLeft:t,scrollWidth:i,clientWidth:a}=this.navRef;this.scrollLeft=t,this.canScrollLeft=t>0,this.canScrollRight=t<i-a-1};scrollToDirection=t=>{this.navRef&&this.navRef.scrollTo({left:"left"===t?this.navRef.scrollLeft-200:this.navRef.scrollLeft+200,behavior:"smooth"})};componentDidLoad(){this.scrollable&&this.navRef&&this.handleScroll()}render(){const t=this.parseItems(),i={"horizontal-nav-container":!0,scrollable:this.scrollable},a={"horizontal-nav":!0,["variant-"+this.variant]:!0,["size-"+this.size]:!0,["align-"+this.align]:!0,"full-width":this.fullWidth,"with-divider":this.showDivider,["display-"+this.displayAs]:!0};return n("div",{key:"fbcf314495c91cb99bc90db33029196edfdb63a2",class:i},this.scrollable&&this.canScrollLeft&&n("button",{key:"f8de2c214e9d6f5b2a98c8f15dd11d21590e21bc",class:"scroll-button left",onClick:()=>this.scrollToDirection("left"),"aria-label":"Scroll left"},n("svg",{key:"f578cf8f8051944b9d172fb4d6b97e23e0534e1a",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},n("polyline",{key:"dc8225738c6d416bff540136ce13421bf92ab06d",points:"15 18 9 12 15 6"}))),n("nav",{key:"3296d5d35db2f5447bbf0081e4a2670e65b25046",class:a,ref:t=>this.navRef=t,onScroll:this.handleScroll},n("ul",{key:"66db7520e79ced35998900fb72abe09ac99b15c1",class:"nav-list"},t.map((t=>this.renderItem(t))))),this.scrollable&&this.canScrollRight&&n("button",{key:"bdf0b40342ff2c07a541258a4cda3310dfa07c5e",class:"scroll-button right",onClick:()=>this.scrollToDirection("right"),"aria-label":"Scroll right"},n("svg",{key:"6cd30d589d60113d2e3cccda8d6c3f7914d23750",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},n("polyline",{key:"02dcff53f897c9dff39369fc1b9c48cd06cb5365",points:"9 18 15 12 9 6"}))))}renderItem(t){const i={"nav-item":!0,active:t.active||t.id===this.activeId,disabled:t.disabled},a=n("span",{class:"nav-item-content"},t.icon&&n("span",{class:"nav-icon"},n("ui-icon",{name:t.icon,library:t.iconLibrary||this.iconLibrary,size:"1.2em"})),n("span",{class:"nav-label"},t.label),t.badge&&n("span",{class:"nav-badge"},t.badge));return n("li",{key:t.id,class:"nav-list-item"},t.href&&!t.disabled?n("a",{href:t.href,class:i,onClick:i=>this.handleItemClick(t,i)},a):n("button",{class:i,disabled:t.disabled,onClick:i=>this.handleItemClick(t,i)},a))}static get style(){return'.sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}.a11y-sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}:host{display:block;width:100%}.horizontal-nav-container{position:relative;display:flex;align-items:center;width:100%}.horizontal-nav-container.scrollable .horizontal-nav{overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}.horizontal-nav-container.scrollable .horizontal-nav::-webkit-scrollbar{display:none}.horizontal-nav{display:flex;width:100%;background-color:#ffffff;border-radius:8px;padding:4px}.nav-list{display:flex;list-style:none;margin:0;padding:0;gap:4px;width:100%}.horizontal-nav.full-width .nav-list{flex:1}.horizontal-nav.full-width .nav-list-item{flex:1}.horizontal-nav.full-width .nav-item{width:100%;justify-content:center}.horizontal-nav.align-start .nav-list{justify-content:flex-start}.horizontal-nav.align-center .nav-list{justify-content:center}.horizontal-nav.align-end .nav-list{justify-content:flex-end}.horizontal-nav.align-space-between .nav-list{justify-content:space-between}.nav-list-item{display:flex}.nav-item{display:flex;align-items:center;gap:8px;padding:8px 16px;background:none;border:none;border-radius:6px;color:#64748b;text-decoration:none;font-weight:500;cursor:pointer;transition:all 0.2s ease;white-space:nowrap;font-size:14px;position:relative}.horizontal-nav.size-sm .nav-item{padding:6px 12px;font-size:12px;gap:6px}.horizontal-nav.size-md .nav-item{padding:8px 16px;font-size:14px;gap:8px}.horizontal-nav.size-lg .nav-item{padding:10px 20px;font-size:16px;gap:10px}.horizontal-nav.variant-default .nav-item:hover:not(.disabled):not(.active){background-color:#f1f5f9;color:#475569}.horizontal-nav.variant-default .nav-item.active{background-color:#eff6ff;color:#3b82f6}.horizontal-nav.variant-pills .nav-item{border-radius:20px}.horizontal-nav.variant-pills .nav-item:hover:not(.disabled):not(.active){background-color:#f1f5f9;color:#475569}.horizontal-nav.variant-pills .nav-item.active{background-color:#3b82f6;color:white}.horizontal-nav.variant-underline{background-color:transparent;border-bottom:1px solid #e2e8f0;border-radius:0;padding:0}.horizontal-nav.variant-underline .nav-item{border-radius:0;padding-bottom:12px;margin-bottom:-1px}.horizontal-nav.variant-underline .nav-item::after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background-color:transparent;transition:background-color 0.2s ease}.horizontal-nav.variant-underline .nav-item:hover:not(.disabled):not(.active){color:#475569}.horizontal-nav.variant-underline .nav-item:hover:not(.disabled):not(.active)::after{background-color:#cbd5e1}.horizontal-nav.variant-underline .nav-item.active{color:#3b82f6}.horizontal-nav.variant-underline .nav-item.active::after{background-color:#3b82f6}.horizontal-nav.variant-segmented{background-color:#f1f5f9;border-radius:8px;padding:4px}.horizontal-nav.variant-segmented .nav-item{background-color:transparent}.horizontal-nav.variant-segmented .nav-item:hover:not(.disabled):not(.active){background-color:rgba(255, 255, 255, 0.5)}.horizontal-nav.variant-segmented .nav-item.active{background-color:white;color:#1e293b;box-shadow:0 1px 3px rgba(0, 0, 0, 0.1)}.nav-item.disabled{opacity:0.4;cursor:not-allowed}.nav-item-content{display:flex;align-items:center;gap:inherit}.nav-icon{display:inline-flex;align-items:center;font-size:1.1em;line-height:1}.nav-icon svg{width:1em;height:1em;fill:currentColor}.nav-label{line-height:1}.nav-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 6px;background-color:#ef4444;color:white;font-size:11px;font-weight:600;border-radius:10px;line-height:1}.nav-item.active .nav-badge{background-color:#dc2626}.horizontal-nav.with-divider .nav-list-item:not(:last-child)::after{content:"";width:1px;height:20px;background-color:#e2e8f0;margin:auto 4px}.scroll-button{position:absolute;top:50%;transform:translateY(-50%);width:32px;height:32px;display:flex;align-items:center;justify-content:center;background-color:white;border:1px solid #e2e8f0;border-radius:50%;cursor:pointer;z-index:10;box-shadow:0 2px 4px rgba(0, 0, 0, 0.1);transition:all 0.2s ease}.scroll-button:hover{background-color:#f8fafc;border-color:#cbd5e1}.scroll-button.left{left:4px}.scroll-button.right{right:4px}.scroll-button svg{width:16px;height:16px;color:#64748b}.horizontal-nav.display-list{padding:0;background:transparent}.horizontal-nav.display-list .nav-list{flex-direction:column;gap:0}.horizontal-nav.display-list .nav-list-item{width:100%;border-bottom:1px solid #e5e7eb}.horizontal-nav.display-list .nav-list-item:last-child{border-bottom:none}.horizontal-nav.display-list .nav-item{width:100%;padding:12px 16px;border-radius:0;justify-content:flex-start;background-color:#ffffff}.horizontal-nav.display-list .nav-item:hover{background-color:#f9fafb}.horizontal-nav.display-list .nav-item.active{background-color:#eff6ff;border-left:3px solid #3b82f6;padding-left:13px}.horizontal-nav.display-list.variant-pills .nav-item,.horizontal-nav.display-list.variant-underline .nav-item,.horizontal-nav.display-list.variant-segmented .nav-item{border-radius:0}.horizontal-nav.display-list.variant-pills .nav-item.active{background-color:#eff6ff}.horizontal-nav.display-list.size-sm .nav-item{padding:8px 12px}.horizontal-nav.display-list.size-sm .nav-item.active{padding-left:9px}.horizontal-nav.display-list.size-lg .nav-item{padding:16px 20px}.horizontal-nav.display-list.size-lg .nav-item.active{padding-left:17px}@media (max-width: 640px){.horizontal-nav.size-md .nav-item{padding:6px 12px;font-size:13px}.horizontal-nav.size-lg .nav-item{padding:8px 16px;font-size:14px}}'}},[513,"ui-horizontal-nav",{items:[1],activeId:[1025,"active-id"],variant:[1],size:[1],align:[1],scrollable:[4],showDivider:[4,"show-divider"],fullWidth:[4,"full-width"],displayAs:[1,"display-as"],iconLibrary:[1,"icon-library"],scrollLeft:[32],canScrollLeft:[32],canScrollRight:[32]}]),s=r,d=function(){"undefined"!=typeof customElements&&["ui-horizontal-nav","ui-icon","ui-loader"].forEach((t=>{switch(t){case"ui-horizontal-nav":customElements.get(o(t))||customElements.define(o(t),r);break;case"ui-icon":customElements.get(o(t))||e();break;case"ui-loader":customElements.get(o(t))||l()}}))};export{s as UiHorizontalNav,d as defineCustomElement}
|