atomicuilibrary 0.1.0 → 0.1.3
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 +2 -2
- package/dist/cjs/dom-BvBb0kmW.js +267 -0
- package/dist/cjs/exploration-project-tailwind.cjs.js +2 -2
- package/dist/cjs/{index-ClkOYpT8.js → index-C32cWsm5.js} +1 -1
- package/dist/cjs/layout-manager.cjs.entry.js +3 -3
- package/dist/cjs/library-card.cjs.entry.js +2 -2
- package/dist/cjs/lm-container_2.cjs.entry.js +2 -2
- package/dist/cjs/lm-panel_3.cjs.entry.js +4 -4
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/my-component.cjs.entry.js +1 -1
- package/dist/cjs/my-step.cjs.entry.js +2 -2
- package/dist/cjs/nav-bar.cjs.entry.js +4 -4
- package/dist/cjs/smart-step.cjs.entry.js +3 -3
- package/dist/cjs/timeline-item.cjs.entry.js +2 -2
- package/dist/cjs/ui-accordion_11.cjs.entry.js +132 -50
- package/dist/cjs/ui-advanced-data-table.cjs.entry.js +2 -2
- package/dist/cjs/ui-anchor.cjs.entry.js +2 -2
- package/dist/cjs/ui-animate-on-scroll.cjs.entry.js +3 -3
- package/dist/cjs/ui-aside-panel.cjs.entry.js +10 -11
- package/dist/cjs/ui-avatar-group_5.cjs.entry.js +1694 -0
- package/dist/cjs/ui-breadcrumb-item.cjs.entry.js +3 -3
- package/dist/cjs/ui-breadcrumb.cjs.entry.js +1 -1
- package/dist/cjs/ui-callout-banner.cjs.entry.js +2 -2
- package/dist/cjs/ui-card.cjs.entry.js +4 -3
- package/dist/cjs/ui-carousel.cjs.entry.js +1 -1
- package/dist/cjs/ui-checkbox.cjs.entry.js +3 -3
- package/dist/cjs/ui-code-editor.cjs.entry.js +2 -2
- package/dist/cjs/ui-code-preview.cjs.entry.js +2 -2
- package/dist/cjs/ui-color-picker.cjs.entry.js +256 -22
- package/dist/cjs/ui-command-palette.cjs.entry.js +1 -1
- package/dist/cjs/ui-dialog-box.cjs.entry.js +85 -11
- package/dist/cjs/ui-dialog-content.cjs.entry.js +1 -1
- package/dist/cjs/ui-dialog-footer_2.cjs.entry.js +1 -1
- package/dist/cjs/ui-divider.cjs.entry.js +1 -1
- package/dist/cjs/ui-dock-host.cjs.entry.js +4 -4
- package/dist/cjs/ui-dock.cjs.entry.js +2 -2
- package/dist/cjs/ui-drag-drop.cjs.entry.js +2 -2
- package/dist/cjs/ui-dropdown_2.cjs.entry.js +104 -34
- package/dist/cjs/ui-empty-state.cjs.entry.js +2 -2
- package/dist/cjs/ui-fab-item.cjs.entry.js +2 -2
- package/dist/cjs/ui-fab.cjs.entry.js +4 -4
- package/dist/cjs/ui-file-upload.cjs.entry.js +143 -44
- package/dist/cjs/ui-horizontal-nav.cjs.entry.js +2 -2
- package/dist/cjs/ui-knob.cjs.entry.js +1 -1
- package/dist/cjs/ui-label.cjs.entry.js +473 -0
- package/dist/cjs/ui-library.cjs.entry.js +2 -2
- package/dist/cjs/ui-list-group_2.cjs.entry.js +349 -60
- package/dist/cjs/ui-list.cjs.entry.js +76 -42
- package/dist/cjs/ui-masonry.cjs.entry.js +1 -1
- package/dist/cjs/ui-meter-group.cjs.entry.js +5 -4
- package/dist/cjs/ui-navigation-item.cjs.entry.js +5 -5
- package/dist/cjs/ui-number-input.cjs.entry.js +7 -3
- package/dist/cjs/ui-otp-input.cjs.entry.js +5 -5
- package/dist/cjs/{ui-pagination_4.cjs.entry.js → ui-pagination_3.cjs.entry.js} +35 -506
- package/dist/cjs/ui-panel.cjs.entry.js +1 -1
- package/dist/cjs/ui-pattern-input.cjs.entry.js +46 -11
- package/dist/cjs/ui-progress.cjs.entry.js +66 -9
- package/dist/cjs/ui-range-slider.cjs.entry.js +2 -2
- package/dist/cjs/ui-resizable-panel.cjs.entry.js +2 -2
- package/dist/cjs/ui-scroll-top.cjs.entry.js +1 -1
- package/dist/cjs/ui-smart-context-menu.cjs.entry.js +1 -1
- package/dist/cjs/ui-smart-stepper.cjs.entry.js +2 -2
- package/dist/cjs/ui-snackbar.cjs.entry.js +1 -1
- package/dist/cjs/ui-speed-dial.cjs.entry.js +1 -1
- package/dist/cjs/ui-speedometer.cjs.entry.js +28 -17
- package/dist/cjs/ui-splitter.cjs.entry.js +1 -1
- package/dist/cjs/ui-step.cjs.entry.js +2 -2
- package/dist/cjs/ui-stepper.cjs.entry.js +1 -1
- package/dist/cjs/ui-switch.cjs.entry.js +14 -13
- package/dist/cjs/ui-tabs.cjs.entry.js +2 -2
- package/dist/cjs/ui-tag.cjs.entry.js +58 -13
- package/dist/cjs/ui-timeline.cjs.entry.js +10 -2
- package/dist/cjs/ui-timer.cjs.entry.js +2 -2
- package/dist/cjs/ui-toolbar.cjs.entry.js +2 -2
- package/dist/cjs/ui-tooltip.cjs.entry.js +4 -4
- package/dist/cjs/ui-top-bar.cjs.entry.js +1 -1
- package/dist/cjs/ui-transfer-list.cjs.entry.js +6 -6
- package/dist/cjs/ui-tree.cjs.entry.js +30 -15
- package/dist/cjs/ui-workspace-manager.cjs.entry.js +2 -2
- package/dist/collection/assets/js/component-config.js +1 -0
- package/dist/collection/assets/js/demo-loader.js +2 -0
- package/dist/collection/assets/js/demos/about-demo.js +13 -13
- package/dist/collection/assets/js/demos/accordion-demo.js +66 -66
- package/dist/collection/assets/js/demos/advanced-data-table-demo.js +102 -102
- package/dist/collection/assets/js/demos/anchor-demo.js +27 -28
- package/dist/collection/assets/js/demos/animate-on-scroll-demo.js +12 -12
- package/dist/collection/assets/js/demos/aside-panel-demo.js +51 -51
- package/dist/collection/assets/js/demos/avatar-demo.js +433 -95
- package/dist/collection/assets/js/demos/badge-demo.js +51 -52
- package/dist/collection/assets/js/demos/breadcrumb-demo.js +7 -7
- package/dist/collection/assets/js/demos/button-demo.js +117 -107
- package/dist/collection/assets/js/demos/button-toggle-demo.js +199 -96
- package/dist/collection/assets/js/demos/callout-banner-demo.js +23 -23
- package/dist/collection/assets/js/demos/card-demo.js +23 -22
- package/dist/collection/assets/js/demos/carousel-demo.js +632 -360
- package/dist/collection/assets/js/demos/checkbox-demo.js +124 -7
- package/dist/collection/assets/js/demos/color-picker-demo.js +394 -100
- package/dist/collection/assets/js/demos/command-palette-demo.js +182 -65
- package/dist/collection/assets/js/demos/complex-form-demo.js +5 -5
- package/dist/collection/assets/js/demos/context-menu-demo.js +43 -43
- package/dist/collection/assets/js/demos/dialog-demo-temp.js +3 -3
- package/dist/collection/assets/js/demos/dialog-demo.js +336 -230
- package/dist/collection/assets/js/demos/divider-demo.js +59 -62
- package/dist/collection/assets/js/demos/dock-demo.js +12 -12
- package/dist/collection/assets/js/demos/dock-host-init.js +31 -31
- package/dist/collection/assets/js/demos/documentation-demo.js +34 -34
- package/dist/collection/assets/js/demos/drag-drop-demo.js +2 -2
- package/dist/collection/assets/js/demos/dropdown-demo.js +140 -136
- package/dist/collection/assets/js/demos/dropdown-subtitle-demo.js +2 -2
- package/dist/collection/assets/js/demos/empty-state-demo.js +294 -78
- package/dist/collection/assets/js/demos/fab-demo.js +95 -11
- package/dist/collection/assets/js/demos/file-upload-demo.js +641 -171
- package/dist/collection/assets/js/demos/home-components.js +2 -2
- package/dist/collection/assets/js/demos/horizontal-nav-demo.js +6 -6
- package/dist/collection/assets/js/demos/icon-demo.js +17 -17
- package/dist/collection/assets/js/demos/input-demo.js +147 -143
- package/dist/collection/assets/js/demos/knob-demo.js +29 -30
- package/dist/collection/assets/js/demos/label-demo.js +697 -0
- package/dist/collection/assets/js/demos/layout-manager-demo.js +55 -55
- package/dist/collection/assets/js/demos/list-demo.js +185 -122
- package/dist/collection/assets/js/demos/loader-demo.js +48 -48
- package/dist/collection/assets/js/demos/masonry-demo.js +568 -140
- package/dist/collection/assets/js/demos/meter-group-demo.js +14 -16
- package/dist/collection/assets/js/demos/multi-level-context-menu-demo.js +25 -25
- package/dist/collection/assets/js/demos/my-profile-demo.js +27 -27
- package/dist/collection/assets/js/demos/nav-bar-demo.js +1 -1
- package/dist/collection/assets/js/demos/number-input-demo.js +262 -211
- package/dist/collection/assets/js/demos/pagination-demo.js +29 -29
- package/dist/collection/assets/js/demos/panel-demo.js +18 -25
- package/dist/collection/assets/js/demos/pattern-input-demo.js +278 -40
- package/dist/collection/assets/js/demos/popover-demo.js +240 -149
- package/dist/collection/assets/js/demos/progress-demo.js +170 -156
- package/dist/collection/assets/js/demos/radio-demo.js +73 -12
- package/dist/collection/assets/js/demos/range-slider-demo.js +33 -33
- package/dist/collection/assets/js/demos/rating-demo.js +19 -19
- package/dist/collection/assets/js/demos/scroll-top-demo.js +8 -9
- package/dist/collection/assets/js/demos/skeleton-demo.js +110 -52
- package/dist/collection/assets/js/demos/skeleton-performance-demo.js +2 -2
- package/dist/collection/assets/js/demos/smart-dialog-demo.js +12 -12
- package/dist/collection/assets/js/demos/smart-menu-demo.js +17 -17
- package/dist/collection/assets/js/demos/snackbar-demo.js +53 -53
- package/dist/collection/assets/js/demos/speed-dial-demo.js +14 -14
- package/dist/collection/assets/js/demos/speedometer-demo.js +40 -32
- package/dist/collection/assets/js/demos/split-button-demo.js +2 -2
- package/dist/collection/assets/js/demos/splitter-demo.js +14 -14
- package/dist/collection/assets/js/demos/stack-demo.js +27 -27
- package/dist/collection/assets/js/demos/stepper-demo.js +49 -49
- package/dist/collection/assets/js/demos/switch-demo.js +561 -125
- package/dist/collection/assets/js/demos/tabs-demo.js +22 -22
- package/dist/collection/assets/js/demos/tag-demo.js +62 -62
- package/dist/collection/assets/js/demos/theme-selector-demo.js +27 -27
- package/dist/collection/assets/js/demos/timeline-demo.js +10 -10
- package/dist/collection/assets/js/demos/timeline-playground.js +2 -2
- package/dist/collection/assets/js/demos/timer-demo.js +10 -10
- package/dist/collection/assets/js/demos/toolbar-demo.js +17 -17
- package/dist/collection/assets/js/demos/tooltip-demo.js +92 -90
- package/dist/collection/assets/js/demos/top-bar-demo.js +6 -6
- package/dist/collection/assets/js/demos/transfer-list-demo.js +20 -20
- package/dist/collection/assets/js/demos/tree-demo.js +50 -66
- package/dist/collection/assets/js/demos/workspace-manager-demo.js +20 -20
- package/dist/collection/collection-manifest.json +1 -2
- package/dist/collection/components/accordion/accordion.css +275 -9
- package/dist/collection/components/accordion/accordion.js +7 -6
- package/dist/collection/components/advanced-data-table/advanced-data-table.css +5 -5
- package/dist/collection/components/advanced-data-table/advanced-data-table.js +2 -2
- package/dist/collection/components/anchor/anchor.css +1 -0
- package/dist/collection/components/animate-on-scroll/animate-on-scroll.js +2 -2
- package/dist/collection/components/aside-panel/aside-panel.css +2 -2
- package/dist/collection/components/aside-panel/aside-panel.js +10 -11
- package/dist/collection/components/avatar/avatar.css +6 -6
- package/dist/collection/components/avatar/avatar.js +63 -11
- package/dist/collection/components/badge/badge.css +27 -17
- package/dist/collection/components/badge/badge.js +6 -3
- package/dist/collection/components/breadcrumb/breadcrumb-item.js +2 -2
- package/dist/collection/components/button/button.css +1 -0
- package/dist/collection/components/button/button.js +3 -3
- package/dist/collection/components/button-toggle/button-toggle.js +2 -2
- package/dist/collection/components/button-toggle-group/button-toggle-group.css +161 -14
- package/dist/collection/components/button-toggle-group/button-toggle-group.js +2 -2
- package/dist/collection/components/callout-banner/callout-banner.css +75 -0
- package/dist/collection/components/callout-banner/callout-banner.js +1 -1
- package/dist/collection/components/card/card.css +221 -9
- package/dist/collection/components/card/card.js +3 -2
- package/dist/collection/components/checkbox/checkbox.js +3 -3
- 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-picker/color-picker.css +110 -6
- package/dist/collection/components/color-picker/color-picker.js +302 -26
- package/dist/collection/components/context-menu/context-menu.css +9 -9
- package/dist/collection/components/dialog-box/dialog-box.js +116 -14
- package/dist/collection/components/dialog-header/dialog-header.js +1 -1
- package/dist/collection/components/dock/dock.css +116 -3
- 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/dropdown/dropdown.css +101 -8
- package/dist/collection/components/dropdown/dropdown.js +94 -28
- package/dist/collection/components/empty-state/empty-state.js +1 -1
- package/dist/collection/components/fab/fab.css +87 -15
- package/dist/collection/components/fab/fab.js +3 -3
- package/dist/collection/components/fab-item/fab-item.js +1 -1
- package/dist/collection/components/file-upload/file-upload.css +1362 -31
- package/dist/collection/components/file-upload/file-upload.js +171 -50
- package/dist/collection/components/horizontal-nav/horizontal-nav.css +9 -9
- 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.css +9 -0
- package/dist/collection/components/input/input.js +20 -9
- package/dist/collection/components/label/label.css +583 -0
- package/dist/collection/components/label/label.js +1669 -0
- 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.css +46 -5
- package/dist/collection/components/list/list.js +76 -42
- package/dist/collection/components/list-group/list-group.css +0 -2
- package/dist/collection/components/list-group/list-group.js +11 -5
- package/dist/collection/components/list-item/list-item.css +403 -131
- package/dist/collection/components/list-item/list-item.js +345 -61
- package/dist/collection/components/loader/loader.css +1 -1
- package/dist/collection/components/loader/loader.js +2 -2
- package/dist/collection/components/meter-group/meter-group.css +5 -0
- package/dist/collection/components/meter-group/meter-group.js +3 -2
- package/dist/collection/components/my-step/my-step.js +1 -1
- package/dist/collection/components/nav-bar/nav-bar.css +4 -4
- package/dist/collection/components/nav-bar/nav-bar.js +6 -6
- package/dist/collection/components/number-input/number-input.js +6 -2
- package/dist/collection/components/otp-input/otp-input.css +10 -0
- package/dist/collection/components/otp-input/otp-input.js +3 -3
- package/dist/collection/components/pagination/pagination.js +1 -1
- package/dist/collection/components/pattern-input/pattern-input.css +0 -1
- package/dist/collection/components/pattern-input/pattern-input.js +44 -9
- package/dist/collection/components/popover/popover.css +35 -7
- package/dist/collection/components/popover/popover.js +64 -9
- package/dist/collection/components/progress/progress.css +176 -32
- package/dist/collection/components/progress/progress.js +66 -8
- package/dist/collection/components/radio/radio.css +2 -0
- package/dist/collection/components/radio/radio.js +2 -2
- package/dist/collection/components/range-slider/range-slider.css +284 -31
- package/dist/collection/components/range-slider/range-slider.js +5 -5
- package/dist/collection/components/rating/rating.css +151 -65
- package/dist/collection/components/rating/rating.js +31 -13
- package/dist/collection/components/resizable-panel/resizable-panel.js +1 -1
- package/dist/collection/components/skeleton/skeleton-loader.css +144 -44
- package/dist/collection/components/skeleton/skeleton-loader.js +11 -7
- 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/speedometer/speedometer.css +26 -6
- package/dist/collection/components/speedometer/speedometer.js +26 -15
- package/dist/collection/components/stack/stack.js +2 -2
- package/dist/collection/components/step/step.js +1 -1
- package/dist/collection/components/stepper/stepper.js +1 -1
- package/dist/collection/components/switch/switch.css +367 -8
- package/dist/collection/components/switch/switch.js +13 -12
- package/dist/collection/components/tag/tag.css +38 -12
- package/dist/collection/components/tag/tag.js +58 -13
- package/dist/collection/components/tag-group/tag-group.css +0 -1
- package/dist/collection/components/tag-group/tag-group.js +3 -3
- package/dist/collection/components/timeline/timeline.css +380 -317
- package/dist/collection/components/timeline/timeline.js +8 -0
- package/dist/collection/components/timeline-item/timeline-item.js +1 -1
- package/dist/collection/components/timer/timer.js +1 -1
- package/dist/collection/components/toggle-group/toggle-group.css +7 -3
- package/dist/collection/components/toggle-group/toggle-group.js +7 -3
- package/dist/collection/components/toolbar/toolbar.js +1 -1
- package/dist/collection/components/tooltip/tooltip.js +4 -4
- package/dist/collection/components/top-bar/top-bar.js +2 -2
- package/dist/collection/components/transfer-list/transfer-list.css +13 -13
- package/dist/collection/components/transfer-list/transfer-list.js +4 -4
- package/dist/collection/components/tree/tree.css +35 -21
- package/dist/collection/components/tree/tree.js +28 -13
- package/dist/collection/components/ui-navigation-bar/navigation-bar/navigation-bar.css +34 -16
- package/dist/collection/components/ui-navigation-bar/navigation-bar/navigation-bar.js +46 -11
- package/dist/collection/components/ui-navigation-bar/navigation-item.css +7 -7
- package/dist/collection/components/ui-navigation-bar/navigation-item.js +3 -3
- package/dist/collection/utils/dom.js +151 -151
- 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/button.js +1 -0
- 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/dom.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 -1
- 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/popover.js +1 -0
- 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-animate-on-scroll.js +1 -1
- package/dist/components/ui-aside-panel.js +1 -1
- package/dist/components/ui-badge.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-button.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-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-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-color-controller.d.ts → ui-label.d.ts} +4 -4
- package/dist/components/ui-label.js +1 -0
- package/dist/components/ui-library.js +1 -1
- package/dist/components/ui-list.js +1 -1
- 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-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-speedometer.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 +2 -2
- package/dist/esm/dom-DFBTWhGw.js +262 -0
- package/dist/esm/exploration-project-tailwind.js +3 -3
- package/dist/esm/{index-DUsoYu9r.js → index-Dqu2zaH1.js} +1 -1
- package/dist/esm/layout-manager.entry.js +3 -3
- package/dist/esm/library-card.entry.js +2 -2
- package/dist/esm/lm-container_2.entry.js +2 -2
- package/dist/esm/lm-panel_3.entry.js +4 -4
- package/dist/esm/loader.js +3 -3
- package/dist/esm/my-component.entry.js +1 -1
- package/dist/esm/my-step.entry.js +2 -2
- package/dist/esm/nav-bar.entry.js +4 -4
- package/dist/esm/smart-step.entry.js +3 -3
- package/dist/esm/timeline-item.entry.js +2 -2
- package/dist/esm/ui-accordion_11.entry.js +132 -50
- package/dist/esm/ui-advanced-data-table.entry.js +2 -2
- package/dist/esm/ui-anchor.entry.js +2 -2
- package/dist/esm/ui-animate-on-scroll.entry.js +3 -3
- package/dist/esm/ui-aside-panel.entry.js +10 -11
- package/dist/esm/ui-avatar-group_5.entry.js +1688 -0
- package/dist/esm/ui-breadcrumb-item.entry.js +3 -3
- package/dist/esm/ui-breadcrumb.entry.js +1 -1
- package/dist/esm/ui-callout-banner.entry.js +2 -2
- package/dist/esm/ui-card.entry.js +4 -3
- package/dist/esm/ui-carousel.entry.js +1 -1
- package/dist/esm/ui-checkbox.entry.js +3 -3
- package/dist/esm/ui-code-editor.entry.js +2 -2
- package/dist/esm/ui-code-preview.entry.js +2 -2
- package/dist/esm/ui-color-picker.entry.js +256 -22
- package/dist/esm/ui-command-palette.entry.js +1 -1
- package/dist/esm/ui-dialog-box.entry.js +85 -11
- package/dist/esm/ui-dialog-content.entry.js +1 -1
- package/dist/esm/ui-dialog-footer_2.entry.js +1 -1
- package/dist/esm/ui-divider.entry.js +1 -1
- package/dist/esm/ui-dock-host.entry.js +4 -4
- package/dist/esm/ui-dock.entry.js +2 -2
- package/dist/esm/ui-drag-drop.entry.js +2 -2
- package/dist/esm/ui-dropdown_2.entry.js +104 -34
- package/dist/esm/ui-empty-state.entry.js +2 -2
- package/dist/esm/ui-fab-item.entry.js +2 -2
- package/dist/esm/ui-fab.entry.js +4 -4
- package/dist/esm/ui-file-upload.entry.js +143 -44
- package/dist/esm/ui-horizontal-nav.entry.js +2 -2
- package/dist/esm/ui-knob.entry.js +1 -1
- package/dist/esm/ui-label.entry.js +471 -0
- package/dist/esm/ui-library.entry.js +2 -2
- package/dist/esm/ui-list-group_2.entry.js +349 -60
- package/dist/esm/ui-list.entry.js +76 -42
- package/dist/esm/ui-masonry.entry.js +1 -1
- package/dist/esm/ui-meter-group.entry.js +5 -4
- package/dist/esm/ui-navigation-item.entry.js +5 -5
- package/dist/esm/ui-number-input.entry.js +7 -3
- package/dist/esm/ui-otp-input.entry.js +5 -5
- package/dist/esm/{ui-pagination_4.entry.js → ui-pagination_3.entry.js} +36 -506
- package/dist/esm/ui-panel.entry.js +1 -1
- package/dist/esm/ui-pattern-input.entry.js +46 -11
- package/dist/esm/ui-progress.entry.js +66 -9
- package/dist/esm/ui-range-slider.entry.js +2 -2
- package/dist/esm/ui-resizable-panel.entry.js +2 -2
- package/dist/esm/ui-scroll-top.entry.js +1 -1
- package/dist/esm/ui-smart-context-menu.entry.js +1 -1
- package/dist/esm/ui-smart-stepper.entry.js +2 -2
- package/dist/esm/ui-snackbar.entry.js +1 -1
- package/dist/esm/ui-speed-dial.entry.js +1 -1
- package/dist/esm/ui-speedometer.entry.js +28 -17
- package/dist/esm/ui-splitter.entry.js +1 -1
- package/dist/esm/ui-step.entry.js +2 -2
- package/dist/esm/ui-stepper.entry.js +1 -1
- package/dist/esm/ui-switch.entry.js +14 -13
- package/dist/esm/ui-tabs.entry.js +2 -2
- package/dist/esm/ui-tag.entry.js +58 -13
- package/dist/esm/ui-timeline.entry.js +10 -2
- package/dist/esm/ui-timer.entry.js +2 -2
- package/dist/esm/ui-toolbar.entry.js +2 -2
- package/dist/esm/ui-tooltip.entry.js +4 -4
- package/dist/esm/ui-top-bar.entry.js +1 -1
- package/dist/esm/ui-transfer-list.entry.js +6 -6
- package/dist/esm/ui-tree.entry.js +30 -15
- package/dist/esm/ui-workspace-manager.entry.js +2 -2
- package/dist/exploration-project-tailwind/exploration-project-tailwind.css +1 -1
- package/dist/exploration-project-tailwind/exploration-project-tailwind.esm.js +1 -1
- package/dist/exploration-project-tailwind/{p-7ba2258a.entry.js → p-024a299a.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-0a71896a.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-35296877.entry.js → p-0cdeb8d8.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-a42fdc33.entry.js → p-139cefbc.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-036d2a44.entry.js → p-198c83e5.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-236f47b1.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-81ebba11.entry.js → p-25530d0d.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-41cd6bf0.entry.js → p-298f2057.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-85e36111.entry.js → p-2b5a8e3e.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-e8c6d395.entry.js → p-2b6aa7bc.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-70bacda8.entry.js → p-2cfba753.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-cbee2607.entry.js → p-2fe22958.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-20ecc116.entry.js → p-3012e780.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-321c3f46.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-8b57fe4e.entry.js → p-3ab43638.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-3ad7e47e.entry.js +1 -0
- package/dist/exploration-project-tailwind/p-3b1ca826.entry.js +1 -0
- package/dist/exploration-project-tailwind/p-3ee8ddae.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-e22317c1.entry.js → p-3efb44c8.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-36861546.entry.js → p-42e3bc28.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-4360331a.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-2f961934.entry.js → p-443de32b.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-898dd0fa.entry.js → p-44d15451.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-4288c158.entry.js → p-46071679.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-a3f465d9.entry.js → p-497d6182.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-4ad8c55c.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-4aaa8e40.entry.js → p-4c46ac0b.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-98e91da5.entry.js → p-5042ddaa.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-60190e0e.entry.js +1 -0
- package/dist/exploration-project-tailwind/p-60530874.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-200241f8.entry.js → p-6108565d.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-fb4aca69.entry.js → p-62889cfe.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-c02284ea.entry.js → p-66f71613.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-7889bfc4.entry.js → p-67c440b2.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-c1c8ac28.entry.js → p-6f09503f.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-721bdbc3.entry.js +1 -0
- package/dist/exploration-project-tailwind/p-747b02ea.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-c6fd72e1.entry.js → p-754cb046.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-97af03cc.entry.js → p-7ed3bba2.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-d59da767.entry.js → p-864cebb7.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-4d73c143.entry.js → p-96ee3196.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-54965530.entry.js → p-97086868.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-d114a347.entry.js → p-9c5ced88.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-9d3044d4.entry.js +1 -0
- package/dist/exploration-project-tailwind/p-9e079be6.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-790556f0.entry.js → p-9e4c45f5.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-9eee7394.entry.js +1 -0
- package/dist/exploration-project-tailwind/p-DFBTWhGw.js +1 -0
- package/dist/exploration-project-tailwind/p-Dqu2zaH1.js +2 -0
- package/dist/exploration-project-tailwind/p-a7bdedc2.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-c87aeab6.entry.js → p-a8ec29de.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-6ddbee42.entry.js → p-ae617f62.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-05a436d3.entry.js → p-aef76052.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-b5f043fa.entry.js +1 -0
- package/dist/exploration-project-tailwind/p-b637b91b.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-d2e45c5e.entry.js → p-bc49a088.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-6b838549.entry.js → p-bd9a631f.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-e8ba0c95.entry.js → p-bf4b6767.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-c0fa400e.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-8578b616.entry.js → p-c4f3d990.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-c68ddb2f.entry.js +1 -0
- package/dist/exploration-project-tailwind/p-c79574c4.entry.js +1 -0
- package/dist/exploration-project-tailwind/p-c840098d.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-a1ad32a2.entry.js → p-c8663cbe.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-cb6e38a6.entry.js +1 -0
- package/dist/exploration-project-tailwind/p-cb9f2df1.entry.js +1 -0
- package/dist/exploration-project-tailwind/p-cfe8b696.entry.js +1 -0
- package/dist/exploration-project-tailwind/p-d00e13ae.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-c4ba7e52.entry.js → p-d01ed934.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-aa85ff78.entry.js → p-d4e57d94.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-ccb5c737.entry.js → p-d5bd3a3f.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-45482d86.entry.js → p-d987cebe.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-d9ae77c0.entry.js +1 -0
- package/dist/exploration-project-tailwind/p-e9bae5c7.entry.js +1 -0
- package/dist/exploration-project-tailwind/p-f516fabc.entry.js +1 -0
- package/dist/exploration-project-tailwind/p-f68e2794.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-d30e24bd.entry.js → p-fa034f69.entry.js} +1 -1
- package/dist/types/components/aside-panel/aside-panel.d.ts +0 -3
- package/dist/types/components/avatar/avatar.d.ts +3 -0
- package/dist/types/components/avatar/types.d.ts +2 -0
- package/dist/types/components/badge/badge.d.ts +1 -0
- package/dist/types/components/color-picker/color-picker.d.ts +35 -2
- package/dist/types/components/dialog-box/dialog-box.d.ts +10 -0
- package/dist/types/components/dropdown/dropdown.d.ts +5 -0
- package/dist/types/components/file-upload/file-upload.d.ts +23 -6
- package/dist/types/components/label/label.d.ts +290 -0
- package/dist/types/components/label/types.d.ts +39 -0
- package/dist/types/components/list/list.d.ts +2 -1
- package/dist/types/components/list-group/list-group.d.ts +1 -0
- package/dist/types/components/list-item/list-item.d.ts +45 -17
- package/dist/types/components/pattern-input/pattern-input.d.ts +6 -0
- package/dist/types/components/popover/popover.d.ts +3 -0
- package/dist/types/components/progress/progress.d.ts +7 -0
- package/dist/types/components/range-slider/range-slider.d.ts +2 -2
- package/dist/types/components/rating/rating.d.ts +1 -0
- package/dist/types/components/skeleton/skeleton-loader.d.ts +1 -1
- package/dist/types/components/speedometer/speedometer.d.ts +1 -0
- package/dist/types/components/tag/tag.d.ts +4 -0
- package/dist/types/components/tree/tree.d.ts +1 -0
- package/dist/types/components/ui-navigation-bar/navigation-bar/navigation-bar.d.ts +1 -1
- package/dist/types/components.d.ts +742 -425
- package/dist/types/types/common.d.ts +2 -2
- package/dist/types/types/common.type.d.ts +2 -0
- package/dist/types/utils/dom.d.ts +4 -4
- package/package.json +4 -5
- package/dist/cjs/dom-oP1E4Rd3.js +0 -267
- package/dist/cjs/ui-avatar-group_3.cjs.entry.js +0 -634
- package/dist/cjs/ui-color-controller.cjs.entry.js +0 -150
- package/dist/cjs/ui-popover.cjs.entry.js +0 -517
- package/dist/cjs/ui-smart-location-dropdown.cjs.entry.js +0 -565
- package/dist/collection/components/color-controller/color-controller.css +0 -108
- package/dist/collection/components/color-controller/color-controller.js +0 -224
- package/dist/collection/components/smart-location-dropdown/smart-location-dropdown.css +0 -357
- package/dist/collection/components/smart-location-dropdown/smart-location-dropdown.js +0 -1190
- package/dist/components/ui-color-controller.js +0 -1
- package/dist/components/ui-smart-location-dropdown.d.ts +0 -11
- package/dist/components/ui-smart-location-dropdown.js +0 -1
- package/dist/esm/dom-BMFah5q3.js +0 -262
- package/dist/esm/ui-avatar-group_3.entry.js +0 -630
- package/dist/esm/ui-color-controller.entry.js +0 -148
- package/dist/esm/ui-popover.entry.js +0 -515
- package/dist/esm/ui-smart-location-dropdown.entry.js +0 -563
- package/dist/exploration-project-tailwind/p-06f0c679.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-0d31c9e9.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-148e81df.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-16bdd162.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-2347d21b.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-3d381f75.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-4417a9d8.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-44742ddd.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-47e2a7ee.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-4bef8bed.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-4efd63ce.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-5c835d90.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-61717490.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-717dad1f.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-71d95bb1.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-9bd14f69.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-9fc06ff0.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-BMFah5q3.js +0 -1
- package/dist/exploration-project-tailwind/p-DUsoYu9r.js +0 -2
- package/dist/exploration-project-tailwind/p-a27f59d2.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-a7b07cf4.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-bd89d060.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-c63c522e.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-c69dd43e.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-d6ce9721.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-dc92a343.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-debede45.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-e76318c7.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-ea51c5d8.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-eab5ad36.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-f0bc5d7e.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-f1beee72.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-f543392f.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-f61cfb7c.entry.js +0 -1
- package/dist/types/components/color-controller/color-controller.d.ts +0 -24
- package/dist/types/components/smart-location-dropdown/smart-location-dropdown.d.ts +0 -119
- package/dist/types/components/smart-location-dropdown/types.d.ts +0 -37
- /package/dist/collection/components/{smart-location-dropdown → label}/types.js +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { r as registerInstance, c as createEvent, h, H as Host } from './index-
|
|
1
|
+
import { r as registerInstance, c as createEvent, h, H as Host } from './index-Dqu2zaH1.js';
|
|
2
2
|
|
|
3
|
-
const fileUploadCss = () => `.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}`;
|
|
3
|
+
const fileUploadCss = () => `@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;font-family:inherit}:host(.is-sideload){background:var(--bg-primary, white);border-radius:24px;overflow:hidden;box-shadow:0 10px 40px rgba(0, 0, 0, 0.12);border:1px solid var(--border-default, #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:var(--text-primary, #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 var(--border-strong, #e5e7eb);border-radius:12px;padding:16px;display:flex;align-items:center;justify-content:center;gap:12px;cursor:pointer;background:var(--bg-secondary, #fdfdfd);transition:all 0.2s}.fu-sideload-zone:hover,.fu-sideload-zone.is-dragging{border-color:var(--color-primary, #10b981);background:rgba(16, 185, 129, 0.05)}.fu-sideload-zone span{font-size:15px;color:var(--text-secondary, #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:10px;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:14px;padding:12px 16px;border:1px solid var(--border-default, #e5e7eb);border-radius:12px;background:var(--bg-primary, white);transition:all 0.25s cubic-bezier(0.4, 0, 0.2, 1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.02)}.fu-file-item:hover{border-color:var(--border-strong, #d1d5db);box-shadow:0 4px 12px rgba(0, 0, 0, 0.05)}.fu-file-item.is-error{background:var(--bg-primary, #fff1f2);border-color:#fecaca}.fu-file-item.is-error:hover{border-color:var(--color-error, #ef4444)}.fu-file-item.is-success{border-color:var(--color-success, #10b981);background:var(--bg-primary, #fcfdfc)}.fu-file-item.is-success:hover{border-color:var(--color-success, #10b981)}.fu-file-icon-wrapper{width:42px;height:42px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all 0.2s}.fu-file-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.fu-file-name-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.fu-file-name{font-size:14px;font-weight:500;color:var(--text-primary, #111827);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.fu-file-status{flex-shrink:0}.fu-status-badge{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;padding:2px 8px;border-radius:12px;text-transform:uppercase;letter-spacing:0.05em}.fu-status-badge.is-success{background:rgba(16, 185, 129, 0.08);color:#10b981}.fu-status-badge.is-uploading{background:rgba(59, 130, 246, 0.08);color:#3b82f6}.fu-status-badge.is-pending{background:rgba(107, 114, 128, 0.08);color:#6b7280}.fu-status-badge.is-validating{background:rgba(245, 158, 11, 0.08);color:#f59e0b}.fu-status-badge.is-error{background:rgba(239, 68, 68, 0.08);color:#ef4444}.fu-spinner-dot{width:6px;height:6px;background:currentColor;border-radius:50%;animation:fu-pulse 1.2s infinite ease-in-out}@keyframes fu-pulse{0%,100%{transform:scale(0.6);opacity:0.5}50%{transform:scale(1.2);opacity:1}}.fu-file-meta{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-secondary, #6b7280)}.fu-file-size{font-weight:500}.fu-file-error-msg{color:#ef4444;font-weight:500;display:inline-flex;align-items:center;gap:4px;animation:fu-shake 0.3s ease-in-out}@keyframes fu-shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-2px)}75%{transform:translateX(2px)}}.fu-remove{color:#9ca3af !important;opacity:0.8;transition:all 0.2s !important}.fu-remove:hover{color:#ef4444 !important;opacity:1;transform:scale(1.05)}.fu-sideload-footer{padding:24px 32px;background:var(--bg-secondary, #f9fafb);border-top:1px solid var(--border-default, #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}.fu-file-item.is-clickable{cursor:pointer}.fu-file-item.is-clickable:hover{background:var(--bg-secondary, #f9fafb);border-radius:10px;box-shadow:inset 0 0 0 1.5px var(--border-default, #e5e7eb)}.fu-zone-has-files{border-color:var(--color-primary, #10b981)}.fu-zone-queue-badge{display:inline-flex;align-items:center;gap:6px;margin-top:12px;padding:6px 14px;background:rgba(16, 185, 129, 0.1);border:1.5px solid rgba(16, 185, 129, 0.35);border-radius:20px;font-size:13px;font-weight:600;color:var(--color-primary-text, #047857);cursor:pointer;transition:background 0.15s, box-shadow 0.15s;z-index:1}.fu-zone-queue-badge:hover{background:rgba(16, 185, 129, 0.18);box-shadow:0 0 0 3px rgba(16, 185, 129, 0.15)}.fu-zone-queue-view{opacity:0.75;font-weight:700;margin-left:2px}.fu-view-queue-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;background:var(--bg-secondary, #f3f4f6);border:1.5px solid var(--border-default, #e5e7eb);border-radius:20px;font-size:13px;font-weight:600;color:var(--text-primary, #374151);cursor:pointer;transition:background 0.15s, border-color 0.15s, color 0.15s}.fu-view-queue-btn:hover{background:rgba(16, 185, 129, 0.08);border-color:var(--color-primary, #10b981);color:var(--color-primary-text, #047857)}.fu-queue-backdrop{position:fixed;inset:0;z-index:99998;background:rgba(0, 0, 0, 0.45);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;animation:fu-fade-in 0.15s ease}.fu-queue-dialog{background:var(--bg-primary, #ffffff);border-radius:20px;width:min(560px, 100vw - 32px);max-height:min(88dvh, 88vh, 680px);display:flex;flex-direction:column;box-shadow:0 24px 64px rgba(0, 0, 0, 0.16), 0 0 0 1px rgba(0, 0, 0, 0.06);overflow:clip;animation:fu-dialog-in 0.18s cubic-bezier(0.34, 1.56, 0.64, 1)}.fu-queue-header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px 14px;border-bottom:1px solid var(--border-default, #e5e7eb);flex-shrink:0}.fu-queue-header-right{display:flex;align-items:center;gap:8px}.fu-upload-mode-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:20px;font-size:11px;font-weight:700;letter-spacing:0.01em}.fu-upload-mode-badge.is-auto{background:rgba(16, 185, 129, 0.1);color:var(--color-primary-text, #047857);border:1px solid rgba(16, 185, 129, 0.25)}.fu-upload-mode-badge.is-manual{background:rgba(99, 102, 241, 0.1);color:#4f46e5;border:1px solid rgba(99, 102, 241, 0.25)}.fu-queue-manual-banner{display:flex;align-items:center;gap:8px;padding:10px 20px;background:rgba(99, 102, 241, 0.06);border-bottom:1px solid rgba(99, 102, 241, 0.15);font-size:13px;color:var(--text-secondary, #4b5563);flex-shrink:0}.fu-queue-manual-banner strong{color:#4f46e5;font-weight:700}.fu-queue-dialog--manual .fu-queue-footer{background:rgba(99, 102, 241, 0.03)}.fu-upload-icon-text{font-size:36px;line-height:1}.fu-inline-trigger{display:inline-flex;align-items:center;gap:7px;padding:6px 12px 6px 9px;background:transparent;border:1.5px solid var(--border-default, #e2e8f0);border-radius:8px;cursor:pointer;font-family:inherit;font-size:13px;font-weight:600;color:var(--text-primary, #374151);transition:background 0.15s, border-color 0.15s, color 0.15s, box-shadow 0.15s;position:relative;white-space:nowrap;user-select:none}.fu-inline-trigger:hover:not(.fu-inline-disabled){background:var(--bg-secondary, #f1f5f9);border-color:var(--color-primary, #10b981);color:var(--color-primary, #10b981);box-shadow:0 0 0 3px rgba(16, 185, 129, 0.1)}.fu-inline-trigger:active:not(.fu-inline-disabled){background:rgba(16, 185, 129, 0.08);box-shadow:none}.fu-inline-trigger.fu-inline-active{border-color:var(--color-primary, #10b981);color:var(--color-primary, #10b981);background:rgba(16, 185, 129, 0.05)}.fu-inline-trigger.fu-inline-disabled{opacity:0.45;cursor:not-allowed}.fu-inline-icon{display:inline-flex;align-items:center;flex-shrink:0}.fu-inline-label{line-height:1.2}.fu-inline-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:20px;background:var(--color-primary, #10b981);color:#fff;font-size:10px;font-weight:800;line-height:1;cursor:pointer;transition:background 0.15s, transform 0.15s}.fu-inline-badge:hover{background:#059669;transform:scale(1.1)}.fu-queue-title{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:700;color:var(--text-primary, #111827)}.fu-queue-count-pill{padding:2px 10px;border-radius:20px;background:rgba(16, 185, 129, 0.12);color:var(--color-primary-text, #047857);font-size:12px;font-weight:700;border:1px solid rgba(16, 185, 129, 0.3)}.fu-queue-errors{padding:10px 20px;border-bottom:1px solid rgba(239, 68, 68, 0.25);background:rgba(254, 242, 242, 0.8);display:flex;flex-direction:column;gap:6px;flex-shrink:0;max-height:120px;overflow-y:auto}.fu-queue-error-item{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:600;color:#ef4444}.fu-queue-summary{display:flex;align-items:center;gap:16px;padding:8px 20px;border-bottom:1px solid var(--border-default, #e5e7eb);background:var(--bg-secondary, #f9fafb);flex-shrink:0;flex-wrap:wrap}.fu-queue-summary-stat{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--text-secondary, #6b7280)}.fu-queue-summary-stat.is-auto{color:#3b82f6}.fu-queue-summary-stat.is-complete{color:#10b981}.fu-qs-dot{width:8px;height:8px;border-radius:50%}.fu-qs-dot.success{background:#10b981}.fu-qs-dot.pending{background:#6366f1}.fu-qs-dot.error{background:#ef4444}.fu-queue-list{flex:1;min-height:0;overflow-y:auto;padding:16px 20px;display:flex;flex-direction:column;gap:10px}.fu-queue-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:40px 0;color:var(--text-muted, #9ca3af);font-size:14px;font-weight:500}.fu-queue-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px 20px 18px;border-top:1px solid var(--border-default, #e5e7eb);background:var(--bg-secondary, #f9fafb);flex-shrink:0;position:relative;z-index:1}.fu-queue-footer-left,.fu-queue-footer-right{display:flex;align-items:center;gap:8px}.fu-dialog-backdrop{position:fixed;inset:0;z-index:99999;background:rgba(0, 0, 0, 0.45);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;animation:fu-fade-in 0.15s ease}@keyframes fu-fade-in{from{opacity:0}to{opacity:1}}.fu-dialog{background:var(--bg-primary, #ffffff);border-radius:18px;width:min(480px, 100vw - 32px);max-height:min(90vh, 640px);display:flex;flex-direction:column;box-shadow:0 24px 64px rgba(0, 0, 0, 0.16), 0 0 0 1px rgba(0, 0, 0, 0.06);overflow:hidden;animation:fu-dialog-in 0.18s cubic-bezier(0.34, 1.56, 0.64, 1)}@keyframes fu-dialog-in{from{opacity:0;transform:scale(0.92) translateY(12px)}to{opacity:1;transform:scale(1) translateY(0)}}.fu-dialog-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid var(--border-default, #e5e7eb)}.fu-dialog-title{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:700;color:var(--text-primary, #111827)}.fu-dialog-preview{background:var(--bg-secondary, #f8fafc);border-bottom:1px solid var(--border-default, #e5e7eb);display:flex;align-items:center;justify-content:center;min-height:180px;max-height:260px;overflow:hidden;padding:16px}.fu-dialog-image{max-width:100%;max-height:228px;object-fit:contain;border-radius:8px;box-shadow:0 4px 16px rgba(0, 0, 0, 0.1)}.fu-dialog-file-icon{width:96px;height:96px;border-radius:20px;display:flex;align-items:center;justify-content:center}.fu-dialog-info{padding:20px 24px 16px;display:flex;flex-direction:column;gap:10px;flex:1;overflow-y:auto}.fu-dialog-name{font-size:15px;font-weight:700;color:var(--text-primary, #111827);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fu-dialog-meta{display:flex;gap:16px;flex-wrap:wrap}.fu-dialog-meta-item{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--text-secondary, #6b7280);font-weight:500}.fu-dialog-status-row{display:flex}.fu-dialog-badge{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:20px;font-size:12px;font-weight:700}.fu-dialog-badge.is-success{background:rgba(16, 185, 129, 0.1);color:#10b981}.fu-dialog-badge.is-error{background:rgba(239, 68, 68, 0.1);color:#ef4444}.fu-dialog-badge.is-pending{background:rgba(99, 102, 241, 0.1);color:#6366f1}.fu-dialog-badge.is-uploading{background:rgba(59, 130, 246, 0.1);color:#3b82f6}.fu-dialog-badge.is-validating{background:rgba(245, 158, 11, 0.1);color:#f59e0b}.fu-dialog-progress{height:6px;background:var(--border-default, #e5e7eb);border-radius:3px;overflow:hidden;margin-top:4px}.fu-dialog-progress-fill{height:100%;background:var(--color-primary, #10b981);border-radius:3px;transition:width 0.4s ease}.fu-dialog-footer{display:flex;align-items:center;gap:8px;padding:12px 20px 16px;border-top:1px solid var(--border-default, #e5e7eb)}.fu-dialog-nav-count{font-size:12px;font-weight:600;color:var(--text-secondary, #6b7280);min-width:40px;text-align:center}:host-context(.dark),:host-context([data-theme=dark]),:host(.dark),:host([data-theme=dark]){}:host-context(.dark) .fu-queue-backdrop,:host-context(.dark) .fu-dialog-backdrop,:host-context([data-theme=dark]) .fu-queue-backdrop,:host-context([data-theme=dark]) .fu-dialog-backdrop,:host(.dark) .fu-queue-backdrop,:host(.dark) .fu-dialog-backdrop,:host([data-theme=dark]) .fu-queue-backdrop,:host([data-theme=dark]) .fu-dialog-backdrop{background:rgba(0, 0, 0, 0.65);backdrop-filter:blur(6px)}:host-context(.dark),:host-context([data-theme=dark]),:host(.dark),:host([data-theme=dark]){}:host-context(.dark) .fu-queue-dialog,:host-context(.dark) .fu-dialog,:host-context([data-theme=dark]) .fu-queue-dialog,:host-context([data-theme=dark]) .fu-dialog,:host(.dark) .fu-queue-dialog,:host(.dark) .fu-dialog,:host([data-theme=dark]) .fu-queue-dialog,:host([data-theme=dark]) .fu-dialog{background:var(--bg-primary, #1e293b);box-shadow:0 24px 64px rgba(0, 0, 0, 0.55), 0 0 0 1px rgba(255, 255, 255, 0.08)}:host-context(.dark),:host-context([data-theme=dark]),:host(.dark),:host([data-theme=dark]){}:host-context(.dark) .fu-inline-trigger,:host-context([data-theme=dark]) .fu-inline-trigger,:host(.dark) .fu-inline-trigger,:host([data-theme=dark]) .fu-inline-trigger{border-color:var(--border-default, #334155);color:var(--text-primary, #e2e8f0)}:host-context(.dark) .fu-inline-trigger:hover:not(.fu-inline-disabled),:host-context([data-theme=dark]) .fu-inline-trigger:hover:not(.fu-inline-disabled),:host(.dark) .fu-inline-trigger:hover:not(.fu-inline-disabled),:host([data-theme=dark]) .fu-inline-trigger:hover:not(.fu-inline-disabled){background:rgba(255, 255, 255, 0.06);border-color:var(--color-primary, #10b981);color:#34d399;box-shadow:0 0 0 3px rgba(16, 185, 129, 0.12)}:host-context(.dark) .fu-inline-trigger.fu-inline-active,:host-context([data-theme=dark]) .fu-inline-trigger.fu-inline-active,:host(.dark) .fu-inline-trigger.fu-inline-active,:host([data-theme=dark]) .fu-inline-trigger.fu-inline-active{border-color:#34d399;color:#34d399;background:rgba(52, 211, 153, 0.06)}:host-context(.dark),:host-context([data-theme=dark]),:host(.dark),:host([data-theme=dark]){}:host-context(.dark) .fu-upload-mode-badge.is-auto,:host-context([data-theme=dark]) .fu-upload-mode-badge.is-auto,:host(.dark) .fu-upload-mode-badge.is-auto,:host([data-theme=dark]) .fu-upload-mode-badge.is-auto{background:rgba(16, 185, 129, 0.15);color:#34d399;border-color:rgba(52, 211, 153, 0.3)}:host-context(.dark) .fu-upload-mode-badge.is-manual,:host-context([data-theme=dark]) .fu-upload-mode-badge.is-manual,:host(.dark) .fu-upload-mode-badge.is-manual,:host([data-theme=dark]) .fu-upload-mode-badge.is-manual{background:rgba(99, 102, 241, 0.15);color:#a5b4fc;border-color:rgba(165, 180, 252, 0.3)}:host-context(.dark),:host-context([data-theme=dark]),:host(.dark),:host([data-theme=dark]){}:host-context(.dark) .fu-queue-manual-banner,:host-context([data-theme=dark]) .fu-queue-manual-banner,:host(.dark) .fu-queue-manual-banner,:host([data-theme=dark]) .fu-queue-manual-banner{background:rgba(99, 102, 241, 0.08);border-bottom-color:rgba(99, 102, 241, 0.2);color:var(--text-secondary, #94a3b8)}:host-context(.dark) .fu-queue-manual-banner strong,:host-context([data-theme=dark]) .fu-queue-manual-banner strong,:host(.dark) .fu-queue-manual-banner strong,:host([data-theme=dark]) .fu-queue-manual-banner strong{color:#a5b4fc}:host-context(.dark),:host-context([data-theme=dark]),:host(.dark),:host([data-theme=dark]){}:host-context(.dark) .fu-queue-header,:host-context(.dark) .fu-dialog-header,:host-context([data-theme=dark]) .fu-queue-header,:host-context([data-theme=dark]) .fu-dialog-header,:host(.dark) .fu-queue-header,:host(.dark) .fu-dialog-header,:host([data-theme=dark]) .fu-queue-header,:host([data-theme=dark]) .fu-dialog-header{border-bottom-color:var(--border-default, #334155)}:host-context(.dark) .fu-queue-title,:host-context(.dark) .fu-dialog-title,:host-context([data-theme=dark]) .fu-queue-title,:host-context([data-theme=dark]) .fu-dialog-title,:host(.dark) .fu-queue-title,:host(.dark) .fu-dialog-title,:host([data-theme=dark]) .fu-queue-title,:host([data-theme=dark]) .fu-dialog-title{color:var(--text-primary, #f1f5f9)}:host-context(.dark),:host-context([data-theme=dark]),:host(.dark),:host([data-theme=dark]){}:host-context(.dark) .fu-queue-count-pill,:host-context([data-theme=dark]) .fu-queue-count-pill,:host(.dark) .fu-queue-count-pill,:host([data-theme=dark]) .fu-queue-count-pill{background:rgba(16, 185, 129, 0.18);color:#34d399;border-color:rgba(52, 211, 153, 0.3)}:host-context(.dark),:host-context([data-theme=dark]),:host(.dark),:host([data-theme=dark]){}:host-context(.dark) .fu-queue-errors,:host-context([data-theme=dark]) .fu-queue-errors,:host(.dark) .fu-queue-errors,:host([data-theme=dark]) .fu-queue-errors{background:rgba(239, 68, 68, 0.1);border-bottom-color:rgba(239, 68, 68, 0.25)}:host-context(.dark),:host-context([data-theme=dark]),:host(.dark),:host([data-theme=dark]){}:host-context(.dark) .fu-queue-summary,:host-context([data-theme=dark]) .fu-queue-summary,:host(.dark) .fu-queue-summary,:host([data-theme=dark]) .fu-queue-summary{background:var(--bg-secondary, #0f172a);border-bottom-color:var(--border-default, #334155)}:host-context(.dark) .fu-queue-summary-stat,:host-context([data-theme=dark]) .fu-queue-summary-stat,:host(.dark) .fu-queue-summary-stat,:host([data-theme=dark]) .fu-queue-summary-stat{color:var(--text-secondary, #94a3b8)}:host-context(.dark) .fu-queue-summary-stat.is-auto,:host-context([data-theme=dark]) .fu-queue-summary-stat.is-auto,:host(.dark) .fu-queue-summary-stat.is-auto,:host([data-theme=dark]) .fu-queue-summary-stat.is-auto{color:#93c5fd}:host-context(.dark) .fu-queue-summary-stat.is-complete,:host-context([data-theme=dark]) .fu-queue-summary-stat.is-complete,:host(.dark) .fu-queue-summary-stat.is-complete,:host([data-theme=dark]) .fu-queue-summary-stat.is-complete{color:#34d399}:host-context(.dark),:host-context([data-theme=dark]),:host(.dark),:host([data-theme=dark]){}:host-context(.dark) .fu-queue-list,:host-context([data-theme=dark]) .fu-queue-list,:host(.dark) .fu-queue-list,:host([data-theme=dark]) .fu-queue-list{scrollbar-color:var(--border-default, #334155) transparent;scrollbar-width:thin}:host-context(.dark) .fu-queue-empty,:host-context([data-theme=dark]) .fu-queue-empty,:host(.dark) .fu-queue-empty,:host([data-theme=dark]) .fu-queue-empty{color:var(--text-muted, #64748b)}:host-context(.dark),:host-context([data-theme=dark]),:host(.dark),:host([data-theme=dark]){}:host-context(.dark) .fu-file-item,:host-context([data-theme=dark]) .fu-file-item,:host(.dark) .fu-file-item,:host([data-theme=dark]) .fu-file-item{border-bottom-color:var(--border-default, #1e293b)}:host-context(.dark) .fu-file-item.is-clickable:hover,:host-context([data-theme=dark]) .fu-file-item.is-clickable:hover,:host(.dark) .fu-file-item.is-clickable:hover,:host([data-theme=dark]) .fu-file-item.is-clickable:hover{background:rgba(255, 255, 255, 0.05);box-shadow:inset 0 0 0 1.5px var(--border-default, #334155)}:host-context(.dark) .fu-file-name,:host-context([data-theme=dark]) .fu-file-name,:host(.dark) .fu-file-name,:host([data-theme=dark]) .fu-file-name{color:var(--text-primary, #f1f5f9)}:host-context(.dark) .fu-file-meta,:host-context([data-theme=dark]) .fu-file-meta,:host(.dark) .fu-file-meta,:host([data-theme=dark]) .fu-file-meta{color:var(--text-secondary, #94a3b8)}:host-context(.dark) .fu-file-error-msg,:host-context([data-theme=dark]) .fu-file-error-msg,:host(.dark) .fu-file-error-msg,:host([data-theme=dark]) .fu-file-error-msg{color:#f87171}:host-context(.dark) .fu-remove,:host-context([data-theme=dark]) .fu-remove,:host(.dark) .fu-remove,:host([data-theme=dark]) .fu-remove{color:#64748b !important}:host-context(.dark) .fu-remove:hover,:host-context([data-theme=dark]) .fu-remove:hover,:host(.dark) .fu-remove:hover,:host([data-theme=dark]) .fu-remove:hover{color:#f87171 !important}:host-context(.dark),:host-context([data-theme=dark]),:host(.dark),:host([data-theme=dark]){}:host-context(.dark) .fu-queue-footer,:host-context([data-theme=dark]) .fu-queue-footer,:host(.dark) .fu-queue-footer,:host([data-theme=dark]) .fu-queue-footer{background:var(--bg-secondary, #0f172a);border-top-color:var(--border-default, #334155)}:host-context(.dark),:host-context([data-theme=dark]),:host(.dark),:host([data-theme=dark]){}:host-context(.dark) .fu-status-badge.is-success,:host-context([data-theme=dark]) .fu-status-badge.is-success,:host(.dark) .fu-status-badge.is-success,:host([data-theme=dark]) .fu-status-badge.is-success{background:rgba(16, 185, 129, 0.15);color:#34d399}:host-context(.dark) .fu-status-badge.is-error,:host-context([data-theme=dark]) .fu-status-badge.is-error,:host(.dark) .fu-status-badge.is-error,:host([data-theme=dark]) .fu-status-badge.is-error{background:rgba(239, 68, 68, 0.15);color:#f87171}:host-context(.dark) .fu-status-badge.is-pending,:host-context([data-theme=dark]) .fu-status-badge.is-pending,:host(.dark) .fu-status-badge.is-pending,:host([data-theme=dark]) .fu-status-badge.is-pending{background:rgba(99, 102, 241, 0.15);color:#a5b4fc}:host-context(.dark) .fu-status-badge.is-uploading,:host-context([data-theme=dark]) .fu-status-badge.is-uploading,:host(.dark) .fu-status-badge.is-uploading,:host([data-theme=dark]) .fu-status-badge.is-uploading{background:rgba(59, 130, 246, 0.15);color:#93c5fd}:host-context(.dark) .fu-status-badge.is-validating,:host-context([data-theme=dark]) .fu-status-badge.is-validating,:host(.dark) .fu-status-badge.is-validating,:host([data-theme=dark]) .fu-status-badge.is-validating{background:rgba(245, 158, 11, 0.15);color:#fcd34d}:host-context(.dark),:host-context([data-theme=dark]),:host(.dark),:host([data-theme=dark]){}:host-context(.dark) .fu-dialog-preview,:host-context([data-theme=dark]) .fu-dialog-preview,:host(.dark) .fu-dialog-preview,:host([data-theme=dark]) .fu-dialog-preview{background:var(--bg-secondary, #0f172a);border-bottom-color:var(--border-default, #334155)}:host-context(.dark) .fu-dialog-image,:host-context([data-theme=dark]) .fu-dialog-image,:host(.dark) .fu-dialog-image,:host([data-theme=dark]) .fu-dialog-image{box-shadow:0 4px 24px rgba(0, 0, 0, 0.4)}:host-context(.dark) .fu-dialog-name,:host-context([data-theme=dark]) .fu-dialog-name,:host(.dark) .fu-dialog-name,:host([data-theme=dark]) .fu-dialog-name{color:var(--text-primary, #f1f5f9)}:host-context(.dark) .fu-dialog-meta-item,:host-context([data-theme=dark]) .fu-dialog-meta-item,:host(.dark) .fu-dialog-meta-item,:host([data-theme=dark]) .fu-dialog-meta-item{color:var(--text-secondary, #94a3b8)}:host-context(.dark),:host-context([data-theme=dark]),:host(.dark),:host([data-theme=dark]){}:host-context(.dark) .fu-dialog-badge.is-success,:host-context([data-theme=dark]) .fu-dialog-badge.is-success,:host(.dark) .fu-dialog-badge.is-success,:host([data-theme=dark]) .fu-dialog-badge.is-success{background:rgba(16, 185, 129, 0.15);color:#34d399}:host-context(.dark) .fu-dialog-badge.is-error,:host-context([data-theme=dark]) .fu-dialog-badge.is-error,:host(.dark) .fu-dialog-badge.is-error,:host([data-theme=dark]) .fu-dialog-badge.is-error{background:rgba(239, 68, 68, 0.15);color:#f87171}:host-context(.dark) .fu-dialog-badge.is-pending,:host-context([data-theme=dark]) .fu-dialog-badge.is-pending,:host(.dark) .fu-dialog-badge.is-pending,:host([data-theme=dark]) .fu-dialog-badge.is-pending{background:rgba(99, 102, 241, 0.15);color:#a5b4fc}:host-context(.dark) .fu-dialog-badge.is-uploading,:host-context([data-theme=dark]) .fu-dialog-badge.is-uploading,:host(.dark) .fu-dialog-badge.is-uploading,:host([data-theme=dark]) .fu-dialog-badge.is-uploading{background:rgba(59, 130, 246, 0.15);color:#93c5fd}:host-context(.dark) .fu-dialog-badge.is-validating,:host-context([data-theme=dark]) .fu-dialog-badge.is-validating,:host(.dark) .fu-dialog-badge.is-validating,:host([data-theme=dark]) .fu-dialog-badge.is-validating{background:rgba(245, 158, 11, 0.15);color:#fcd34d}:host-context(.dark),:host-context([data-theme=dark]),:host(.dark),:host([data-theme=dark]){}:host-context(.dark) .fu-progress-bar,:host-context(.dark) .fu-dialog-progress,:host-context([data-theme=dark]) .fu-progress-bar,:host-context([data-theme=dark]) .fu-dialog-progress,:host(.dark) .fu-progress-bar,:host(.dark) .fu-dialog-progress,:host([data-theme=dark]) .fu-progress-bar,:host([data-theme=dark]) .fu-dialog-progress{background:rgba(255, 255, 255, 0.08)}:host-context(.dark) .fu-dialog-footer,:host-context([data-theme=dark]) .fu-dialog-footer,:host(.dark) .fu-dialog-footer,:host([data-theme=dark]) .fu-dialog-footer{border-top-color:var(--border-default, #334155)}:host-context(.dark) .fu-dialog-nav-count,:host-context([data-theme=dark]) .fu-dialog-nav-count,:host(.dark) .fu-dialog-nav-count,:host([data-theme=dark]) .fu-dialog-nav-count{color:var(--text-secondary, #94a3b8)}:host-context(.dark),:host-context([data-theme=dark]),:host(.dark),:host([data-theme=dark]){}:host-context(.dark) .fu-zone-queue-badge,:host-context([data-theme=dark]) .fu-zone-queue-badge,:host(.dark) .fu-zone-queue-badge,:host([data-theme=dark]) .fu-zone-queue-badge{background:rgba(16, 185, 129, 0.12);border-color:rgba(52, 211, 153, 0.3);color:#34d399}:host-context(.dark) .fu-zone-queue-badge:hover,:host-context([data-theme=dark]) .fu-zone-queue-badge:hover,:host(.dark) .fu-zone-queue-badge:hover,:host([data-theme=dark]) .fu-zone-queue-badge:hover{background:rgba(16, 185, 129, 0.22)}:host-context(.dark) .fu-view-queue-btn,:host-context([data-theme=dark]) .fu-view-queue-btn,:host(.dark) .fu-view-queue-btn,:host([data-theme=dark]) .fu-view-queue-btn{background:var(--bg-secondary, #1e293b);border-color:var(--border-default, #334155);color:var(--text-primary, #f1f5f9)}:host-context(.dark) .fu-view-queue-btn:hover,:host-context([data-theme=dark]) .fu-view-queue-btn:hover,:host(.dark) .fu-view-queue-btn:hover,:host([data-theme=dark]) .fu-view-queue-btn:hover{background:rgba(16, 185, 129, 0.1);border-color:#34d399;color:#34d399}:host-context(.dark),:host-context([data-theme=dark]),:host(.dark),:host([data-theme=dark]){}:host-context(.dark) .fu-zone-has-files,:host-context([data-theme=dark]) .fu-zone-has-files,:host(.dark) .fu-zone-has-files,:host([data-theme=dark]) .fu-zone-has-files{background:rgba(16, 185, 129, 0.05)}@media (prefers-color-scheme: dark){.fu-queue-backdrop,.fu-dialog-backdrop{background:rgba(0, 0, 0, 0.65);backdrop-filter:blur(6px)}.fu-queue-dialog,.fu-dialog{background:var(--bg-primary, #1e293b);box-shadow:0 24px 64px rgba(0, 0, 0, 0.55), 0 0 0 1px rgba(255, 255, 255, 0.08)}.fu-inline-trigger{border-color:var(--border-default, #334155);color:var(--text-primary, #e2e8f0)}.fu-inline-trigger:hover:not(.fu-inline-disabled){background:rgba(255, 255, 255, 0.06);border-color:var(--color-primary, #10b981);color:#34d399;box-shadow:0 0 0 3px rgba(16, 185, 129, 0.12)}.fu-inline-trigger.fu-inline-active{border-color:#34d399;color:#34d399;background:rgba(52, 211, 153, 0.06)}.fu-upload-mode-badge.is-auto{background:rgba(16, 185, 129, 0.15);color:#34d399;border-color:rgba(52, 211, 153, 0.3)}.fu-upload-mode-badge.is-manual{background:rgba(99, 102, 241, 0.15);color:#a5b4fc;border-color:rgba(165, 180, 252, 0.3)}.fu-queue-manual-banner{background:rgba(99, 102, 241, 0.08);border-bottom-color:rgba(99, 102, 241, 0.2);color:var(--text-secondary, #94a3b8)}.fu-queue-manual-banner strong{color:#a5b4fc}.fu-queue-header,.fu-dialog-header{border-bottom-color:var(--border-default, #334155)}.fu-queue-title,.fu-dialog-title{color:var(--text-primary, #f1f5f9)}.fu-queue-count-pill{background:rgba(16, 185, 129, 0.18);color:#34d399;border-color:rgba(52, 211, 153, 0.3)}.fu-queue-errors{background:rgba(239, 68, 68, 0.1);border-bottom-color:rgba(239, 68, 68, 0.25)}.fu-queue-summary{background:var(--bg-secondary, #0f172a);border-bottom-color:var(--border-default, #334155)}.fu-queue-summary-stat{color:var(--text-secondary, #94a3b8)}.fu-queue-summary-stat.is-auto{color:#93c5fd}.fu-queue-summary-stat.is-complete{color:#34d399}.fu-queue-list{scrollbar-color:var(--border-default, #334155) transparent;scrollbar-width:thin}.fu-queue-empty{color:var(--text-muted, #64748b)}.fu-file-item{border-bottom-color:var(--border-default, #1e293b)}.fu-file-item.is-clickable:hover{background:rgba(255, 255, 255, 0.05);box-shadow:inset 0 0 0 1.5px var(--border-default, #334155)}.fu-file-name{color:var(--text-primary, #f1f5f9)}.fu-file-meta{color:var(--text-secondary, #94a3b8)}.fu-file-error-msg{color:#f87171}.fu-remove{color:#64748b !important}.fu-remove:hover{color:#f87171 !important}.fu-queue-footer{background:var(--bg-secondary, #0f172a);border-top-color:var(--border-default, #334155)}.fu-status-badge.is-success{background:rgba(16, 185, 129, 0.15);color:#34d399}.fu-status-badge.is-error{background:rgba(239, 68, 68, 0.15);color:#f87171}.fu-status-badge.is-pending{background:rgba(99, 102, 241, 0.15);color:#a5b4fc}.fu-status-badge.is-uploading{background:rgba(59, 130, 246, 0.15);color:#93c5fd}.fu-status-badge.is-validating{background:rgba(245, 158, 11, 0.15);color:#fcd34d}.fu-dialog-preview{background:var(--bg-secondary, #0f172a);border-bottom-color:var(--border-default, #334155)}.fu-dialog-image{box-shadow:0 4px 24px rgba(0, 0, 0, 0.4)}.fu-dialog-name{color:var(--text-primary, #f1f5f9)}.fu-dialog-meta-item{color:var(--text-secondary, #94a3b8)}.fu-dialog-badge.is-success{background:rgba(16, 185, 129, 0.15);color:#34d399}.fu-dialog-badge.is-error{background:rgba(239, 68, 68, 0.15);color:#f87171}.fu-dialog-badge.is-pending{background:rgba(99, 102, 241, 0.15);color:#a5b4fc}.fu-dialog-badge.is-uploading{background:rgba(59, 130, 246, 0.15);color:#93c5fd}.fu-dialog-badge.is-validating{background:rgba(245, 158, 11, 0.15);color:#fcd34d}.fu-progress-bar,.fu-dialog-progress{background:rgba(255, 255, 255, 0.08)}.fu-dialog-footer{border-top-color:var(--border-default, #334155)}.fu-dialog-nav-count{color:var(--text-secondary, #94a3b8)}.fu-zone-queue-badge{background:rgba(16, 185, 129, 0.12);border-color:rgba(52, 211, 153, 0.3);color:#34d399}.fu-zone-queue-badge:hover{background:rgba(16, 185, 129, 0.22)}.fu-view-queue-btn{background:var(--bg-secondary, #1e293b);border-color:var(--border-default, #334155);color:var(--text-primary, #f1f5f9)}.fu-view-queue-btn:hover{background:rgba(16, 185, 129, 0.1);border-color:#34d399;color:#34d399}.fu-zone-has-files{background:rgba(16, 185, 129, 0.05)}}`;
|
|
4
4
|
|
|
5
5
|
const FileUpload = class {
|
|
6
6
|
constructor(hostRef) {
|
|
@@ -34,10 +34,11 @@ const FileUpload = class {
|
|
|
34
34
|
showPreview = true;
|
|
35
35
|
/** Disabled */
|
|
36
36
|
disabled = false;
|
|
37
|
-
/** Variant: 'dropzone' | 'button' | 'compact' | 'sideload' */
|
|
37
|
+
/** Variant: 'dropzone' | 'button' | 'compact' | 'inline' | 'sideload' */
|
|
38
38
|
variant = 'dropzone';
|
|
39
|
-
/**
|
|
40
|
-
|
|
39
|
+
/** Custom upload icon: pass a lucide icon name (e.g. "file-plus") or any emoji/text.
|
|
40
|
+
* Defaults to the upload-cloud lucide icon when left empty. */
|
|
41
|
+
uploadIcon = '';
|
|
41
42
|
/** RTL support */
|
|
42
43
|
rtl = false;
|
|
43
44
|
/** Capture attribute for mobile camera */
|
|
@@ -48,12 +49,16 @@ const FileUpload = class {
|
|
|
48
49
|
fileNamePattern = '';
|
|
49
50
|
/** Show manual validate button */
|
|
50
51
|
showValidateButton = false;
|
|
51
|
-
/** Show manual upload button */
|
|
52
|
+
/** Show manual upload button — overrides auto-upload when true */
|
|
52
53
|
showUploadButton = false;
|
|
53
|
-
/**
|
|
54
|
+
/** When true (default), upload begins immediately after files are selected.
|
|
55
|
+
* When false, files stay in "Ready" state until the user clicks the Upload button inside the queue dialog. */
|
|
54
56
|
autoUpload = true;
|
|
55
57
|
/** Automatically emit completion event and hide list when all files succeed */
|
|
56
58
|
autoCloseOnSuccess = false;
|
|
59
|
+
/** Allow the user to select an entire folder instead of individual files.
|
|
60
|
+
* Sets webkitdirectory on the hidden input. Implicitly enables multiple. */
|
|
61
|
+
directory = false;
|
|
57
62
|
/** Integrated header title (for sideload variant) */
|
|
58
63
|
headerTitle = '';
|
|
59
64
|
isDragging = false;
|
|
@@ -61,6 +66,10 @@ const FileUpload = class {
|
|
|
61
66
|
errors = [];
|
|
62
67
|
/** Overall component state: 'idle' | 'validating' | 'uploading' | 'success' | 'error' */
|
|
63
68
|
componentStatus = 'idle';
|
|
69
|
+
/** Whether the queue management dialog is visible */
|
|
70
|
+
isQueueOpen = false;
|
|
71
|
+
/** Index of the file currently shown in the preview dialog (-1 = closed) */
|
|
72
|
+
previewFileIndex = -1;
|
|
64
73
|
uploadIntervals = {};
|
|
65
74
|
fileSelect;
|
|
66
75
|
fileRemove;
|
|
@@ -124,6 +133,8 @@ const FileUpload = class {
|
|
|
124
133
|
this.files = [];
|
|
125
134
|
this.errors = [];
|
|
126
135
|
this.componentStatus = 'idle';
|
|
136
|
+
this.isQueueOpen = false;
|
|
137
|
+
this.previewFileIndex = -1;
|
|
127
138
|
}
|
|
128
139
|
formatSize(bytes) {
|
|
129
140
|
if (bytes < 1024)
|
|
@@ -210,6 +221,15 @@ const FileUpload = class {
|
|
|
210
221
|
if (fileNameError) {
|
|
211
222
|
validationErrors.push(fileNameError);
|
|
212
223
|
}
|
|
224
|
+
// Empty file check — must come before size-range checks
|
|
225
|
+
if (file.size === 0) {
|
|
226
|
+
validationErrors.push({
|
|
227
|
+
fileName: file.name,
|
|
228
|
+
message: `${file.name} is empty (0 KB) and cannot be uploaded`,
|
|
229
|
+
rule: 'empty-file',
|
|
230
|
+
});
|
|
231
|
+
return validationErrors; // skip further size checks on an empty file
|
|
232
|
+
}
|
|
213
233
|
if (this.minSize > 0 && file.size < this.minSize) {
|
|
214
234
|
validationErrors.push({
|
|
215
235
|
fileName: file.name,
|
|
@@ -267,11 +287,6 @@ const FileUpload = class {
|
|
|
267
287
|
uf.errorMessage = `Duplicate detected: "${file.name}"`;
|
|
268
288
|
validationErrors.push({ fileName: file.name, message: uf.errorMessage, rule: 'duplicate-file' });
|
|
269
289
|
}
|
|
270
|
-
if (file.size === 0) {
|
|
271
|
-
uf.status = 'error';
|
|
272
|
-
uf.errorMessage = 'File is empty (0 bytes)';
|
|
273
|
-
validationErrors.push({ fileName: file.name, message: uf.errorMessage, rule: 'empty-file' });
|
|
274
|
-
}
|
|
275
290
|
const fileErrors = this.validateFile(file);
|
|
276
291
|
if (fileErrors.length > 0 && uf.status !== 'error') {
|
|
277
292
|
uf.status = 'error';
|
|
@@ -289,6 +304,9 @@ const FileUpload = class {
|
|
|
289
304
|
});
|
|
290
305
|
this.errors = validationErrors.map(error => error.message);
|
|
291
306
|
this.files = [...this.files, ...newFiles];
|
|
307
|
+
// Auto-open the queue dialog whenever files are added
|
|
308
|
+
if (newFiles.length > 0 && this.variant !== 'sideload')
|
|
309
|
+
this.isQueueOpen = true;
|
|
292
310
|
if (this.autoUpload) {
|
|
293
311
|
newFiles.filter(f => f.status === 'pending').forEach(f => this.startSimulation(f.name));
|
|
294
312
|
}
|
|
@@ -368,47 +386,128 @@ const FileUpload = class {
|
|
|
368
386
|
delete this.uploadIntervals[removed.name];
|
|
369
387
|
}
|
|
370
388
|
this.files = this.files.filter((_, i) => i !== idx);
|
|
389
|
+
// Remove validation errors that mention this file's name
|
|
390
|
+
this.errors = this.errors.filter(e => !e.includes(removed.name));
|
|
391
|
+
// Clear max-files warnings when we're now under the limit
|
|
392
|
+
if (this.files.length < this.maxFiles) {
|
|
393
|
+
this.errors = this.errors.filter(e => !e.includes('more file') && !e.includes('upload up to'));
|
|
394
|
+
}
|
|
395
|
+
// If no files left, clear all remaining errors
|
|
396
|
+
if (this.files.length === 0) {
|
|
397
|
+
this.errors = [];
|
|
398
|
+
}
|
|
371
399
|
this.fileRemove.emit(removed.name);
|
|
372
400
|
this.fileSelect.emit(this.files);
|
|
373
401
|
};
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
if (
|
|
380
|
-
return '
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
402
|
+
getFileIconStyles(type) {
|
|
403
|
+
const t = (type || '').toLowerCase();
|
|
404
|
+
if (t.startsWith('image/')) {
|
|
405
|
+
return { icon: 'image', bg: 'rgba(168, 85, 247, 0.08)', color: 'rgb(168, 85, 247)' };
|
|
406
|
+
}
|
|
407
|
+
if (t === 'application/pdf' || t.includes('pdf') || t.includes('word') || t.includes('document')) {
|
|
408
|
+
return { icon: 'file-text', bg: 'rgba(59, 130, 246, 0.08)', color: 'rgb(59, 130, 246)' };
|
|
409
|
+
}
|
|
410
|
+
if (t.includes('sheet') || t.includes('excel') || t.includes('csv') || t.includes('spreadsheet')) {
|
|
411
|
+
return { icon: 'file-spreadsheet', bg: 'rgba(16, 185, 129, 0.08)', color: 'rgb(16, 185, 129)' };
|
|
412
|
+
}
|
|
413
|
+
if (t.includes('zip') || t.includes('rar') || t.includes('tar') || t.includes('compressed') || t.includes('7z')) {
|
|
414
|
+
return { icon: 'archive', bg: 'rgba(245, 158, 11, 0.08)', color: 'rgb(245, 158, 11)' };
|
|
415
|
+
}
|
|
416
|
+
if (t.startsWith('audio/')) {
|
|
417
|
+
return { icon: 'music', bg: 'rgba(236, 72, 153, 0.08)', color: 'rgb(236, 72, 153)' };
|
|
418
|
+
}
|
|
419
|
+
if (t.startsWith('video/')) {
|
|
420
|
+
return { icon: 'video', bg: 'rgba(239, 68, 68, 0.08)', color: 'rgb(239, 68, 68)' };
|
|
421
|
+
}
|
|
422
|
+
return { icon: 'file', bg: 'rgba(107, 114, 128, 0.08)', color: 'rgb(107, 114, 128)' };
|
|
423
|
+
}
|
|
424
|
+
/** Renders the zone/trigger icon — lucide icon name, emoji text, or default upload-cloud */
|
|
425
|
+
renderUploadZoneIcon(size = '40px') {
|
|
426
|
+
if (!this.uploadIcon) {
|
|
427
|
+
// Default: use lucide upload-cloud icon
|
|
428
|
+
return h("ui-icon", { name: "upload-cloud", library: "lucide", size: size, color: "var(--color-primary, #10b981)" });
|
|
429
|
+
}
|
|
430
|
+
// Heuristic: if no spaces and only a-z/0-9/- it's a lucide icon name
|
|
431
|
+
if (/^[a-z0-9-]+$/.test(this.uploadIcon)) {
|
|
432
|
+
return h("ui-icon", { name: this.uploadIcon, library: "lucide", size: size, color: "var(--color-primary, #10b981)" });
|
|
433
|
+
}
|
|
434
|
+
// Otherwise render as emoji/text
|
|
435
|
+
return h("span", { class: "fu-upload-icon-text" }, this.uploadIcon);
|
|
436
|
+
}
|
|
437
|
+
/** Renders the reusable file-row used in both the queue dialog and sideload list */
|
|
438
|
+
renderFileRow(f, idx, isUploading) {
|
|
439
|
+
const progress = f.progress || 0;
|
|
440
|
+
const status = f.status;
|
|
441
|
+
const { icon, bg, color } = this.getFileIconStyles(f.type);
|
|
442
|
+
const renderedIcon = status === 'error' ? 'alert-triangle' : icon;
|
|
443
|
+
const renderedBg = status === 'error' ? 'rgba(239, 68, 68, 0.08)' : bg;
|
|
444
|
+
const renderedColor = status === 'error' ? 'rgb(239, 68, 68)' : color;
|
|
445
|
+
return (h("div", { class: { 'fu-file-item': true, [`is-${status}`]: true, 'is-clickable': true }, key: f.name + idx, onClick: () => { this.previewFileIndex = idx; }, title: "Click to preview" }, h("div", { class: "fu-file-icon-wrapper", style: { backgroundColor: renderedBg } }, h("ui-icon", { name: renderedIcon, library: "lucide", size: "20px", color: renderedColor })), h("div", { class: "fu-file-info" }, h("div", { class: "fu-file-name-row" }, h("span", { class: "fu-file-name", title: f.name }, f.name), h("span", { class: "fu-file-status" }, status === 'success' && h("span", { class: "fu-status-badge is-success" }, h("ui-icon", { name: "check", library: "lucide", size: "12px", color: "#10b981" }), h("span", null, "Done")), status === 'uploading' && h("span", { class: "fu-status-badge is-uploading" }, h("span", { class: "fu-spinner-dot" }), h("span", null, Math.round(progress), "%")), status === 'pending' && h("span", { class: "fu-status-badge is-pending" }, h("span", null, "Ready")), status === 'validating' && h("span", { class: "fu-status-badge is-validating" }, h("span", null, "Validating\u00E2\u20AC\u00A6")), status === 'error' && h("span", { class: "fu-status-badge is-error" }, h("span", null, "Failed")))), h("div", { class: "fu-file-meta" }, h("span", { class: "fu-file-size" }, this.formatSize(f.size)), status === 'error' && f.errorMessage && (h("span", { class: "fu-file-error-msg" }, h("ui-icon", { name: "alert-circle", library: "lucide", size: "12px", color: "currentColor" }), h("span", null, f.errorMessage)))), status === 'uploading' && (h("div", { class: "fu-progress-bar" }, h("div", { class: "fu-progress-fill", style: { width: `${progress}%` } })))), h("ui-button", { variant: "ghost", size: "xxs", iconOnly: true, class: "fu-remove", onClick: (e) => { e.stopPropagation(); this.removeFile(idx); }, ariaLabel: "Remove", icon: "x", iconLibrary: "lucide", iconSize: "16px", disabled: isUploading && status === 'uploading' })));
|
|
446
|
+
}
|
|
447
|
+
/** Queue management dialog — shown for all non-sideload variants */
|
|
448
|
+
/** Queue management dialog - shown for all non-sideload variants */
|
|
449
|
+
renderQueueDialog() {
|
|
450
|
+
if (!this.isQueueOpen || this.variant === 'sideload')
|
|
451
|
+
return null;
|
|
452
|
+
const hasFiles = this.files.length > 0;
|
|
453
|
+
const isUploading = this.componentStatus === 'uploading';
|
|
454
|
+
const isValidating = this.componentStatus === 'validating';
|
|
455
|
+
const validCount = this.files.filter(f => f.status !== 'error').length;
|
|
456
|
+
const readyCount = this.files.filter(f => f.status === 'pending').length;
|
|
457
|
+
const doneCount = this.files.filter(f => f.status === 'success').length;
|
|
458
|
+
const pendingCount = this.files.filter(f => f.status === 'pending' || f.status === 'uploading').length;
|
|
459
|
+
const failedCount = this.files.filter(f => f.status === 'error').length;
|
|
460
|
+
const hasErrors = failedCount > 0;
|
|
461
|
+
const allSuccess = hasFiles && this.files.every(f => f.status === 'success');
|
|
462
|
+
const canAdd = !this.disabled && this.files.length < this.maxFiles;
|
|
463
|
+
const isManual = !this.autoUpload || this.showUploadButton;
|
|
464
|
+
const showUploadBtn = isManual && !allSuccess;
|
|
465
|
+
const closeQueue = () => {
|
|
466
|
+
this.isQueueOpen = false;
|
|
467
|
+
// Drop successfully uploaded files — they're done; keep pending/uploading/error
|
|
468
|
+
this.files = this.files.filter(f => f.status !== 'success');
|
|
469
|
+
if (this.files.length === 0) {
|
|
470
|
+
this.componentStatus = 'idle';
|
|
471
|
+
this.errors = [];
|
|
472
|
+
this.previewFileIndex = -1;
|
|
473
|
+
}
|
|
474
|
+
};
|
|
475
|
+
return (h("div", { class: "fu-queue-backdrop", onClick: closeQueue }, h("div", { class: { 'fu-queue-dialog': true, 'fu-queue-dialog--manual': isManual }, onClick: (e) => e.stopPropagation(), role: "dialog", "aria-modal": "true", "aria-label": "Upload Queue" }, h("div", { class: "fu-queue-header" }, h("div", { class: "fu-queue-title" }, h("ui-icon", { name: "upload-cloud", library: "lucide", size: "18px", color: "var(--color-primary, #10b981)" }), h("span", null, "Upload Queue"), h("span", { class: "fu-queue-count-pill" }, this.files.length, " file", this.files.length !== 1 ? 's' : '')), h("div", { class: "fu-queue-header-right" }, h("span", { class: `fu-upload-mode-badge ${isManual ? 'is-manual' : 'is-auto'}` }, h("ui-icon", { name: isManual ? 'hand' : 'zap', library: "lucide", size: "11px", color: "currentColor" }), isManual ? 'Manual upload' : 'Auto upload'), h("ui-button", { variant: "ghost", size: "sm", iconOnly: true, icon: "x", iconLibrary: "lucide", onClick: closeQueue, ariaLabel: "Close dialog" }))), isManual && readyCount > 0 && !isUploading && !allSuccess && (h("div", { class: "fu-queue-manual-banner" }, h("ui-icon", { name: "mouse-pointer-click", library: "lucide", size: "14px", color: "#6366f1" }), h("span", null, readyCount, " file", readyCount !== 1 ? 's' : '', " ready \u2014 click ", h("strong", null, "Upload"), " when ready."))), this.errors.length > 0 && (h("div", { class: "fu-queue-errors" }, this.errors.map(e => (h("div", { class: "fu-queue-error-item" }, h("ui-icon", { name: "alert-triangle", library: "lucide", size: "14px", color: "#ef4444" }), h("span", null, e)))))), hasFiles && (h("div", { class: "fu-queue-summary" }, doneCount > 0 && h("span", { class: "fu-queue-summary-stat" }, h("span", { class: "fu-qs-dot success" }), doneCount, " done"), pendingCount > 0 && h("span", { class: "fu-queue-summary-stat" }, h("span", { class: "fu-qs-dot pending" }), pendingCount, " pending"), hasErrors && h("span", { class: "fu-queue-summary-stat" }, h("span", { class: "fu-qs-dot error" }), failedCount, " failed"), this.autoUpload && isUploading && (h("span", { class: "fu-queue-summary-stat is-auto" }, h("span", { class: "fu-spinner-dot" }), " Uploading...")), allSuccess && (h("span", { class: "fu-queue-summary-stat is-complete" }, h("ui-icon", { name: "check-circle", library: "lucide", size: "13px", color: "#10b981" }), " All done")))), h("div", { class: "fu-queue-list" }, !hasFiles && (h("div", { class: "fu-queue-empty" }, h("ui-icon", { name: "inbox", library: "lucide", size: "32px", color: "var(--text-muted, #9ca3af)" }), h("span", null, "No files in queue"))), this.files.map((f, idx) => this.renderFileRow(f, idx, isUploading))), h("div", { class: "fu-queue-footer" }, h("div", { class: "fu-queue-footer-left" }, canAdd && (h("ui-button", { variant: "ghost", size: "sm", label: "Add more", icon: "plus", iconLibrary: "lucide", disabled: isUploading, onClick: () => this.inputRef?.click() })), hasErrors && (h("ui-button", { variant: "ghost", size: "sm", label: "Remove failed", icon: "trash-2", iconLibrary: "lucide", onClick: () => this.removeInvalidFiles() }))), h("div", { class: "fu-queue-footer-right" }, !isUploading && !allSuccess && (h("ui-button", { variant: "outline", size: "sm", label: "Cancel all", onClick: () => this.clear() })), this.showValidateButton && (h("ui-button", { variant: "outline", size: "sm", label: "Validate", loading: isValidating, disabled: isUploading || !hasFiles, onClick: () => this.validate() })), showUploadBtn && (h("ui-button", { variant: "primary", size: "sm", label: isUploading ? 'Uploading...' : `Upload ${readyCount > 0 ? readyCount : validCount} file${(readyCount || validCount) !== 1 ? 's' : ''}`, icon: isUploading ? 'loader' : 'upload', iconLibrary: "lucide", loading: isUploading, disabled: isValidating || validCount === 0, onClick: () => this.upload() })), allSuccess && (h("ui-button", { variant: "primary", size: "sm", icon: "check", iconLibrary: "lucide", label: "Done", onClick: closeQueue })))))));
|
|
476
|
+
}
|
|
477
|
+
renderPreviewDialog() {
|
|
478
|
+
const idx = this.previewFileIndex;
|
|
479
|
+
if (idx < 0 || idx >= this.files.length)
|
|
480
|
+
return null;
|
|
481
|
+
const f = this.files[idx];
|
|
482
|
+
const progress = f.progress || 0;
|
|
483
|
+
const status = f.status;
|
|
484
|
+
const isUploading = status === 'uploading';
|
|
485
|
+
const isImage = f.type?.startsWith('image/') && !!f.dataUrl;
|
|
486
|
+
const { icon, bg, color } = this.getFileIconStyles(f.type);
|
|
487
|
+
const renderedIcon = status === 'error' ? 'alert-triangle' : icon;
|
|
488
|
+
const renderedBg = status === 'error' ? 'rgba(239, 68, 68, 0.08)' : bg;
|
|
489
|
+
const renderedColor = status === 'error' ? 'rgb(239, 68, 68)' : color;
|
|
490
|
+
const close = () => { this.previewFileIndex = -1; };
|
|
491
|
+
return (h("div", { class: "fu-dialog-backdrop", onClick: close }, h("div", { class: "fu-dialog", onClick: (e) => e.stopPropagation(), role: "dialog", "aria-modal": "true", "aria-label": `File details: ${f.name}` }, h("div", { class: "fu-dialog-header" }, h("div", { class: "fu-dialog-title" }, h("ui-icon", { name: "file-search", library: "lucide", size: "18px", color: "var(--color-primary, #10b981)" }), h("span", null, "File Details")), h("ui-button", { variant: "ghost", size: "sm", iconOnly: true, icon: "x", iconLibrary: "lucide", onClick: close, ariaLabel: "Close" })), h("div", { class: "fu-dialog-preview" }, isImage
|
|
492
|
+
? h("img", { class: "fu-dialog-image", src: f.dataUrl, alt: f.name })
|
|
493
|
+
: h("div", { class: "fu-dialog-file-icon", style: { backgroundColor: renderedBg } }, h("ui-icon", { name: renderedIcon, library: "lucide", size: "48px", color: renderedColor }))), h("div", { class: "fu-dialog-info" }, h("div", { class: "fu-dialog-name", title: f.name }, f.name), h("div", { class: "fu-dialog-meta" }, h("span", { class: "fu-dialog-meta-item" }, h("ui-icon", { name: "hard-drive", library: "lucide", size: "13px", color: "currentColor" }), this.formatSize(f.size)), h("span", { class: "fu-dialog-meta-item" }, h("ui-icon", { name: "tag", library: "lucide", size: "13px", color: "currentColor" }), f.type || 'Unknown type')), h("div", { class: "fu-dialog-status-row" }, status === 'success' && h("span", { class: "fu-dialog-badge is-success" }, h("ui-icon", { name: "check-circle", library: "lucide", size: "14px", color: "currentColor" }), "Uploaded successfully"), status === 'uploading' && h("span", { class: "fu-dialog-badge is-uploading" }, h("span", { class: "fu-spinner-dot" }), "Uploading\u00E2\u20AC\u00A6 ", Math.round(progress), "%"), status === 'pending' && h("span", { class: "fu-dialog-badge is-pending" }, h("ui-icon", { name: "clock", library: "lucide", size: "14px", color: "currentColor" }), "Ready to upload"), status === 'error' && h("span", { class: "fu-dialog-badge is-error" }, h("ui-icon", { name: "alert-circle", library: "lucide", size: "14px", color: "currentColor" }), f.errorMessage || 'Upload failed'), status === 'validating' && h("span", { class: "fu-dialog-badge is-validating" }, h("span", { class: "fu-spinner-dot" }), "Validating\u00E2\u20AC\u00A6")), (status === 'uploading' || status === 'success') && (h("div", { class: "fu-dialog-progress" }, h("div", { class: "fu-dialog-progress-fill", style: { width: `${progress}%` } })))), h("div", { class: "fu-dialog-footer" }, h("ui-button", { variant: "ghost", size: "sm", label: "Remove file", icon: "trash-2", iconLibrary: "lucide", disabled: isUploading, onClick: () => { this.removeFile(idx); close(); } }), h("div", { style: { flex: '1' } }), h("ui-button", { variant: "ghost", size: "sm", iconOnly: true, icon: "chevron-left", iconLibrary: "lucide", disabled: idx === 0, ariaLabel: "Previous file", onClick: () => { this.previewFileIndex = idx - 1; } }), h("span", { class: "fu-dialog-nav-count" }, idx + 1, " / ", this.files.length), h("ui-button", { variant: "ghost", size: "sm", iconOnly: true, icon: "chevron-right", iconLibrary: "lucide", disabled: idx === this.files.length - 1, ariaLabel: "Next file", onClick: () => { this.previewFileIndex = idx + 1; } }), h("ui-button", { variant: "primary", size: "sm", label: "Close", onClick: close })))));
|
|
386
494
|
}
|
|
387
495
|
render() {
|
|
388
496
|
const canAdd = !this.disabled && this.files.length < this.maxFiles;
|
|
389
497
|
const hasFiles = this.files.length > 0;
|
|
390
498
|
const isUploading = this.componentStatus === 'uploading';
|
|
391
|
-
const isValidating = this.componentStatus === 'validating';
|
|
392
499
|
const validFilesCount = this.files.filter(f => f.status !== 'error').length;
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
};
|
|
404
|
-
const itemIcon = status === 'error' ? 'alert-triangle' : (status === 'success' ? 'check-circle' : 'info');
|
|
405
|
-
const iconColor = status === 'error' ? '#f59e0b' : (status === 'success' ? '#10b981' : '#3b82f6');
|
|
406
|
-
return (h("div", { class: { 'fu-file-item': true, [`is-${status}`]: true }, key: f.name + idx }, this.variant === 'sideload'
|
|
407
|
-
? h("ui-icon", { class: "fu-sideload-item-icon", name: itemIcon, library: "lucide", size: "24px", color: iconColor })
|
|
408
|
-
: (f.type.startsWith('image/') && f.dataUrl
|
|
409
|
-
? h("img", { class: "fu-thumb", src: f.dataUrl, alt: f.name })
|
|
410
|
-
: h("span", { class: "fu-file-icon" }, this.getIcon(f.type))), h("div", { class: "fu-file-info" }, h("div", { class: "fu-file-name-row" }, h("span", { class: "fu-file-name" }, f.name), h("span", { class: "fu-file-status" }, this.variant !== 'sideload' && h("span", { class: "fu-status-label" }, statusLabels[status]), status === 'success' && h("ui-icon", { name: "check", library: "lucide", size: "14px", color: "#10b981" }), status === 'error' && this.variant !== 'sideload' && h("ui-icon", { name: "alert-circle", library: "lucide", size: "14px", color: "#ef4444" }), status === 'uploading' && h("span", { class: "fu-file-percent" }, Math.round(progress), "%"))), h("div", { class: "fu-file-meta" }, h("span", { class: "fu-file-size" }, this.formatSize(f.size)), f.errorMessage && h("span", { class: "fu-item-error-msg" }, " \u00B7 ", f.errorMessage)), (status === 'uploading' || status === 'success') && (h("div", { class: "fu-progress-bar" }, h("div", { class: "fu-progress-fill", style: { width: `${progress}%` } })))), h("ui-button", { variant: "ghost", size: "xxs", iconOnly: true, class: "fu-remove", onClick: (e) => { e.stopPropagation(); this.removeFile(idx); }, ariaLabel: "Remove", icon: "x-circle", iconLibrary: "lucide", iconSize: "18px", disabled: isUploading && status === 'uploading' })));
|
|
411
|
-
}))), this.variant === 'sideload' && (h("div", { key: 'ef71906dbefd987da6f7cf54dacb41528d8e7d4b', class: "fu-sideload-footer" }, h("div", { key: 'e5ce897412814293206de68572bce9fe93478fff', class: "fu-footer-actions-left" }, hasErrors && (h("ui-button", { key: '40c336eb57ba23767800511d7f8a5525c3bb3a0f', variant: "ghost", size: "md", label: "Clean Queue", onClick: () => this.removeInvalidFiles(), icon: "trash-2", iconLibrary: "lucide" }))), h("div", { key: '31c7983a14455d24158aa3c7bb69b490f995968e', class: "fu-footer-actions-right" }, h("ui-button", { key: 'd9723f7193044a178473437cad30d2074d41b6b4', variant: "outline", label: "Cancel", onClick: () => this.clear() }), h("ui-button", { key: '532aae5a83893629ee5d8186904286393183f5e7', variant: "primary", label: `Upload ${validFilesCount} files`, disabled: validFilesCount === 0 || isUploading, loading: isUploading, onClick: () => this.upload(), icon: "upload", iconLibrary: "lucide" })))), this.helperText && this.variant !== 'sideload' && h("div", { key: '6bd4941a135fbf542f3d9ca275847660424695d9', class: "fu-helper" }, this.helperText)));
|
|
500
|
+
return (h(Host, { key: 'd3152c915742132400c8c4bb67d9e3b89d54b632', dir: this.rtl ? 'rtl' : 'ltr', onPaste: this.handlePaste, class: { 'is-sideload': this.variant === 'sideload' } }, this.variant === 'sideload' && (h("div", { key: 'dd3fe148a8860b4b9b1ef9e47358bdd46dd64a21', class: "fu-sideload-header" }, h("div", { key: '0f170379a0ea0c797a6c05819af167de7c2dafed', class: "fu-header-title-row" }, h("ui-icon", { key: '6b0b71f7e01651f33efaf6a2a3421367b71b47cc', name: "upload-cloud", library: "lucide", size: "24px", color: "var(--color-primary, #10b981)" }), h("h2", { key: 'a4330e9cb9973cdb61ed42f65dc5a374c371d8f2' }, this.headerTitle || 'Sideload Firmware'), h("ui-button", { key: '2dd90814fbaa9f636c1a0f24f126ab9b31583d66', variant: "ghost", size: "md", iconOnly: true, icon: "x", iconLibrary: "lucide", class: "fu-close-dialog" })), h("div", { key: '234c9679585087721a30df197ae8c0f3739b5c94', class: { 'fu-sideload-zone': true, 'is-dragging': this.isDragging }, onDragOver: (e) => { e.preventDefault(); this.isDragging = true; }, onDragLeave: () => (this.isDragging = false), onDrop: this.handleDrop, onClick: () => canAdd && this.inputRef?.click() }, h("ui-icon", { key: '303cf7a91a182a42aa288519ba933854ffe63b94', name: "upload", library: "lucide", size: "20px", color: "var(--color-primary, #10b981)" }), h("span", { key: 'd3c193b6e528ff43ce0f4ebd7959cfb0ae78b220' }, "Drop more files or ", h("strong", { key: '373cba75237e24b8b6a4e384129cf9543d5cf30e', class: "fu-browse-pill" }, "Browse"))))), this.variant === 'sideload' && hasFiles && (h("div", { key: 'e6b1e6370a769387ec8b75954e34847f93e37e05', class: "fu-file-list is-sideload-list" }, this.files.map((f, idx) => this.renderFileRow(f, idx, isUploading)))), this.variant === 'sideload' && (h("div", { key: 'f4d122874935aeff0dfee060c91d6299234cee5e', class: "fu-sideload-footer" }, h("div", { key: '4e98b7d2bf5fa02766414def762e070d378eb98e', class: "fu-footer-actions-left" }, this.files.some(f => f.status === 'error') && (h("ui-button", { key: 'a2cf99cb5992794930f97f559918a1ad02d05288', variant: "ghost", size: "md", label: "Clean Queue", icon: "trash-2", iconLibrary: "lucide", onClick: () => this.removeInvalidFiles() }))), h("div", { key: '5425b0d9c59a85e6113ab43ca1c03757bc78845b', class: "fu-footer-actions-right" }, h("ui-button", { key: 'c0ef12d4bd32b4eede664130f1cc662abbf1e83f', variant: "outline", label: "Cancel", onClick: () => this.clear() }), h("ui-button", { key: '293aac09dfda74ea69b8d8ea1082ad25786ca62f', variant: "primary", label: `Upload ${validFilesCount} files`, disabled: validFilesCount === 0 || isUploading, loading: isUploading, onClick: () => this.upload(), icon: "upload", iconLibrary: "lucide" })))), this.variant !== 'sideload' && (h("div", { key: 'ad83c062093c5992ca2f02e1b5bd11483e43f1fd' }, this.label && h("label", { key: '9b807a8af85d1fc282375a47d565b1a52d31e207', class: "fu-label" }, this.label), this.variant === 'dropzone' && (h("div", { key: '376d617761e2d03b3fbed7a0fa27da05a6acd1f7', class: { 'fu-zone': true, 'fu-dragging': this.isDragging, 'fu-disabled': this.disabled, 'fu-zone-has-files': hasFiles }, onDragOver: (e) => { e.preventDefault(); this.isDragging = true; }, onDragLeave: () => (this.isDragging = false), onDrop: this.handleDrop, onClick: () => canAdd && this.inputRef?.click() }, h("div", { key: '7df435796b000ddc2af9590115ecd96d8c365bcc', class: "fu-zone-icon" }, this.renderUploadZoneIcon('40px')), h("div", { key: '9cd1d88570d13b1535286a5133aa673eb56473d8', class: "fu-zone-title" }, "Drag & drop files here"), h("div", { key: '82adc9f84981437ed9d1f619ad9f5b52be0a645b', class: "fu-zone-sub" }, "or ", h("span", { key: '0f1f65b55b58aca3eec0d8b3667c9ebeffdc29d3', class: "fu-zone-browse" }, "browse files")), h("div", { key: 'b9a9021442ec5bc8e3309a51cadd2af5cb193c08', class: "fu-zone-limit" }, this.accept && h("span", { key: '12217ab2c6ce5955f966ab627740aabf114484c8' }, "Accepts: ", this.accept), h("span", { key: '5ffd8530aed30321eff0c8e01c6104e2626e0476' }, "Max ", this.formatSize(this.maxSize), " \u00B7 Up to ", this.maxFiles, " files")), hasFiles && (h("div", { key: '4d155a2c4b6516743b7ee38d2ddcc5c20d3c1089', class: "fu-zone-queue-badge", onClick: (e) => { e.stopPropagation(); this.isQueueOpen = true; } }, h("ui-icon", { key: '4e9d11d3444c799a6c54efbe8c3ef894be451809', name: "layers", library: "lucide", size: "14px", color: "#10b981" }), h("span", { key: '8e52407087416f63933efb6288be0e8899f06391' }, this.files.length, " file", this.files.length !== 1 ? 's' : '', " queued"), h("span", { key: '374fbd52cbe323bea13a0749af95050030891dc4', class: "fu-zone-queue-view" }, "View Queue \u2192"))))), (this.variant === 'button' || this.variant === 'compact' || this.variant === 'inline') && (h("div", { key: 'c7b031b7b628d8972fd72ab903e5324f7946fc8c', class: "fu-trigger-row" }, this.variant === 'button' && (h("ui-button", { key: '25a4cdca35f3c1047683825991c36335fbc0166d', variant: "primary", onClick: () => canAdd && this.inputRef?.click(), disabled: this.disabled || isUploading, label: this.label || 'Select Files', icon: this.uploadIcon || 'upload-cloud', iconLibrary: "lucide" })), this.variant === 'compact' && (h("div", { key: '9eb1ef83a2814e814730e42c175b612cdc4f2cd8', class: { 'fu-compact': true, 'fu-disabled': this.disabled }, onClick: () => canAdd && this.inputRef?.click() }, h("span", { key: 'a68573fcfc5a820a46c9b8c832ffd4ceec155651', class: "fu-compact-icon" }, this.renderUploadZoneIcon('18px')), h("span", { key: '5f8c2a40cbceb3f6f10bbb4481284836e476975e', class: "fu-compact-text" }, this.label || 'Choose file'), h("span", { key: 'ae53043e7f6dbc27bc42bde8e2bf9d7870591718', class: "fu-compact-count" }, this.files.length, " / ", this.maxFiles))), this.variant === 'inline' && (h("button", { key: '49e94c27db6aa2b0a9eb56150abed00769a45ba2', class: { 'fu-inline-trigger': true, 'fu-inline-disabled': this.disabled, 'fu-inline-active': hasFiles }, disabled: this.disabled, onClick: () => canAdd && this.inputRef?.click(), type: "button", title: this.label || 'Upload files' }, h("span", { key: '148d06eb63c8df50ba268c5165fd12fb525c238e', class: "fu-inline-icon" }, this.renderUploadZoneIcon('16px')), h("span", { key: 'ba271f05d6d8e0b3c9419bc1e7bd367e0f7adf0d', class: "fu-inline-label" }, this.label || 'Upload files'), hasFiles && (h("span", { key: 'd7ad2159e8e33facc99edc0926d46939c2864fb4', class: "fu-inline-badge", onClick: (e) => { e.stopPropagation(); this.isQueueOpen = true; } }, this.files.length)))), hasFiles && this.variant !== 'inline' && (h("button", { key: 'bd4a50a142bac3d136c0de7221ce15fe078628fd', class: "fu-view-queue-btn", onClick: () => { this.isQueueOpen = true; } }, h("ui-icon", { key: '71083c82786b219595cf9d8b5738848da048c0b9', name: "layers", library: "lucide", size: "14px", color: "currentColor" }), this.files.length, " file", this.files.length !== 1 ? 's' : '', " queued")))), this.helperText && h("div", { key: 'ecc66b684f1e28a0f886faeee45b274b613f36a5', class: "fu-helper" }, this.helperText))), h("input", { key: '3e50fac523ae8a776f4468782a079d8a4206ac45', ref: el => {
|
|
501
|
+
this.inputRef = el;
|
|
502
|
+
if (el) {
|
|
503
|
+
if (this.directory) {
|
|
504
|
+
el.setAttribute('webkitdirectory', '');
|
|
505
|
+
}
|
|
506
|
+
else {
|
|
507
|
+
el.removeAttribute('webkitdirectory');
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
}, type: "file", class: "fu-input-hidden", accept: this.accept, multiple: this.multiple || this.directory, capture: this.capture === true ? 'environment' : (this.capture || undefined), onChange: this.handleFileInput }), this.renderQueueDialog(), this.renderPreviewDialog()));
|
|
412
511
|
}
|
|
413
512
|
};
|
|
414
513
|
FileUpload.style = fileUploadCss();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { r as registerInstance, c as createEvent, h } from './index-
|
|
1
|
+
import { r as registerInstance, c as createEvent, h } from './index-Dqu2zaH1.js';
|
|
2
2
|
|
|
3
|
-
const horizontalNavCss = () => `.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
|
|
3
|
+
const horizontalNavCss = () => `.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:var(--color-primary-subtle, rgba(59, 130, 246, 0.1));color:var(--color-primary, #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:var(--color-primary, #3b82f6);color:var(--text-inverse, 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:var(--color-primary, #3b82f6)}.horizontal-nav.variant-underline .nav-item.active::after{background-color:var(--color-primary, #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:var(--color-primary-subtle, rgba(59, 130, 246, 0.1));border-left:3px solid var(--color-primary, #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:var(--color-primary-subtle, rgba(59, 130, 246, 0.1))}.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}}`;
|
|
4
4
|
|
|
5
5
|
const HorizontalNav = class {
|
|
6
6
|
constructor(hostRef) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as registerInstance, c as createEvent, a as getElement, h } from './index-
|
|
1
|
+
import { r as registerInstance, c as createEvent, a as getElement, h } from './index-Dqu2zaH1.js';
|
|
2
2
|
|
|
3
3
|
const knobCss = () => `.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:inline-block}.knob-wrapper{display:flex;flex-direction:column;align-items:center;gap:12px}.knob-container{position:relative;display:flex;align-items:center;justify-content:center;cursor:pointer;user-select:none;touch-action:none;transition:transform 0.1s ease}.knob-container:hover:not(.disabled):not(.readonly){transform:scale(1.02)}.knob-container.dragging{cursor:grabbing;transform:scale(1.05)}.knob-container.disabled,.knob-container.readonly{cursor:not-allowed;opacity:0.5}.knob-svg{display:block;overflow:visible}.value-arc{filter:drop-shadow(0 2px 4px rgba(var(--color-primary-rgb, 59, 130, 246), 0.3));transition:stroke 0.2s ease}.knob-container:hover:not(.disabled):not(.readonly) .value-arc{filter:drop-shadow(0 3px 6px rgba(var(--color-primary-rgb, 59, 130, 246), 0.4))}.center-dot{filter:drop-shadow(0 1px 2px rgba(0, 0, 0, 0.1))}.indicator{transition:all 0.1s ease;filter:drop-shadow(0 1px 2px rgba(0, 0, 0, 0.2))}.value-label{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);display:flex;align-items:baseline;gap:2px;pointer-events:none;font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif}.value-number{font-size:calc(var(--knob-size, 120px) * 0.2);font-weight:700;color:var(--text-primary, #1e293b);line-height:1}.value-suffix{font-size:calc(var(--knob-size, 120px) * 0.12);font-weight:600;color:var(--text-muted, #64748b);line-height:1}.min-max-labels{display:flex;justify-content:space-between;width:100%;font-size:12px;color:var(--text-muted, #64748b);font-weight:500;padding:0 8px}.min-label,.max-label{white-space:nowrap}@keyframes pulse{0%,100%{opacity:1}50%{opacity:0.8}}.knob-container.dragging .value-label{animation:pulse 0.3s ease-in-out}.knob-container:active:not(.disabled):not(.readonly){transform:scale(1.05)}.knob-container:focus-visible{outline:2px solid var(--color-primary, #10b981);outline-offset:4px;border-radius:50%}@media (max-width: 640px){.value-number{font-size:calc(var(--knob-size, 120px) * 0.18)}.value-suffix{font-size:calc(var(--knob-size, 120px) * 0.11)}.min-max-labels{font-size:11px}}`;
|
|
4
4
|
|