atomicuilibrary 0.0.1 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/category-section.cjs.entry.js +1 -1
- package/dist/cjs/exploration-project-tailwind.cjs.js +1 -1
- package/dist/cjs/layout-manager.cjs.entry.js +1 -1
- package/dist/cjs/library-card.cjs.entry.js +1 -1
- package/dist/cjs/lm-container_2.cjs.entry.js +1 -1
- package/dist/cjs/lm-panel_3.cjs.entry.js +4 -4
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/my-step.cjs.entry.js +1 -1
- package/dist/cjs/nav-bar.cjs.entry.js +2 -2
- package/dist/cjs/{security-E1JcwxGc.js → security-CNaNip8F.js} +88 -154
- package/dist/cjs/smart-step.cjs.entry.js +2 -2
- package/dist/cjs/timeline-item.cjs.entry.js +1 -1
- package/dist/cjs/{ui-accordion_10.cjs.entry.js → ui-accordion_11.cjs.entry.js} +613 -26
- package/dist/cjs/ui-advanced-data-table.cjs.entry.js +1 -1
- package/dist/cjs/ui-anchor.cjs.entry.js +1 -1
- package/dist/cjs/ui-aside-panel.cjs.entry.js +5 -5
- package/dist/cjs/ui-avatar-group_3.cjs.entry.js +5 -5
- package/dist/cjs/ui-callout-banner.cjs.entry.js +1 -1
- package/dist/cjs/ui-card.cjs.entry.js +26 -4
- package/dist/cjs/ui-checkbox.cjs.entry.js +2 -2
- package/dist/cjs/ui-code-editor.cjs.entry.js +2 -2
- package/dist/cjs/ui-code-preview.cjs.entry.js +1 -1
- package/dist/cjs/ui-color-controller.cjs.entry.js +1 -1
- package/dist/cjs/ui-dialog-box.cjs.entry.js +1 -1
- package/dist/cjs/ui-dock-host.cjs.entry.js +3 -3
- package/dist/cjs/ui-drag-drop.cjs.entry.js +1 -1
- package/dist/cjs/ui-empty-state.cjs.entry.js +1 -1
- package/dist/cjs/ui-fab-item.cjs.entry.js +1 -1
- package/dist/cjs/ui-fab.cjs.entry.js +2 -2
- package/dist/cjs/ui-library.cjs.entry.js +1 -1
- package/dist/cjs/ui-list-group_2.cjs.entry.js +9 -5
- package/dist/cjs/ui-list.cjs.entry.js +4 -4
- package/dist/cjs/ui-navigation-item.cjs.entry.js +3 -3
- package/dist/cjs/ui-otp-input.cjs.entry.js +2 -2
- package/dist/cjs/{ui-pagination_3.cjs.entry.js → ui-pagination_4.cjs.entry.js} +202 -0
- package/dist/cjs/ui-pattern-input.cjs.entry.js +5 -5
- package/dist/cjs/ui-popover.cjs.entry.js +1 -1
- package/dist/cjs/ui-progress.cjs.entry.js +101 -17
- package/dist/cjs/ui-resizable-panel.cjs.entry.js +1 -1
- package/dist/cjs/ui-smart-location-dropdown.cjs.entry.js +2 -2
- package/dist/cjs/ui-smart-stepper.cjs.entry.js +1 -1
- package/dist/cjs/ui-snackbar.cjs.entry.js +1 -1
- package/dist/cjs/ui-step.cjs.entry.js +1 -1
- package/dist/cjs/ui-stepper.cjs.entry.js +1 -1
- package/dist/cjs/ui-switch.cjs.entry.js +9 -9
- package/dist/cjs/ui-tabs.cjs.entry.js +1 -1
- package/dist/cjs/ui-timeline.cjs.entry.js +1 -1
- package/dist/cjs/ui-toolbar.cjs.entry.js +1 -1
- package/dist/cjs/ui-tooltip.cjs.entry.js +4 -4
- package/dist/cjs/ui-transfer-list.cjs.entry.js +1 -1
- package/dist/cjs/ui-workspace-manager.cjs.entry.js +1 -1
- package/dist/collection/assets/js/demo-loader.js +0 -1
- package/dist/collection/assets/js/demos/accordion-demo.js +189 -0
- package/dist/collection/assets/js/demos/advanced-data-table-demo.js +213 -214
- package/dist/collection/assets/js/demos/aside-panel-demo.js +6 -6
- package/dist/collection/assets/js/demos/button-demo.js +60 -1
- package/dist/collection/assets/js/demos/callout-banner-demo.js +324 -34
- package/dist/collection/assets/js/demos/card-demo.js +108 -61
- package/dist/collection/assets/js/demos/context-menu-demo.js +433 -12
- package/dist/collection/assets/js/demos/dock-demo.js +80 -60
- package/dist/collection/assets/js/demos/documentation-demo.js +227 -22
- package/dist/collection/assets/js/demos/empty-state-demo.js +10 -10
- package/dist/collection/assets/js/demos/list-demo.js +41 -18
- package/dist/collection/assets/js/demos/masonry-demo.js +164 -0
- package/dist/collection/assets/js/demos/progress-demo.js +701 -8
- package/dist/collection/assets/js/demos/radio-demo.js +1 -1
- package/dist/collection/assets/js/demos/splitter-demo.js +137 -0
- package/dist/collection/assets/js/demos/tag-demo.js +48 -18
- package/dist/collection/assets/js/demos/timeline-demo.js +20 -7
- package/dist/collection/assets/js/demos/tooltip-demo.js +26 -26
- package/dist/collection/assets/js/demos/tree-demo.js +28 -10
- package/dist/collection/collection-manifest.json +1 -4
- package/dist/collection/components/accordion/accordion.css +301 -0
- package/dist/collection/components/accordion/accordion.js +40 -8
- package/dist/collection/components/advanced-data-table/advanced-data-table.css +19 -5
- package/dist/collection/components/anchor/anchor.css +0 -2
- package/dist/collection/components/aside-panel/aside-panel.css +1 -3
- package/dist/collection/components/aside-panel/aside-panel.js +5 -5
- package/dist/collection/components/avatar/avatar.js +1 -1
- package/dist/collection/components/badge/badge.css +1 -0
- package/dist/collection/components/badge/badge.js +1 -1
- package/dist/collection/components/breadcrumb/breadcrumb.js +1 -1
- package/dist/collection/components/button/button.css +131 -0
- package/dist/collection/components/button/button.js +128 -9
- package/dist/collection/components/card/card.css +83 -31
- package/dist/collection/components/card/card.js +46 -3
- package/dist/collection/components/checkbox/checkbox.css +8 -10
- package/dist/collection/components/checkbox/checkbox.js +2 -2
- package/dist/collection/components/code-editor/code-editor.js +1 -1
- package/dist/collection/components/code-preview/ui-code-preview.js +1 -1
- package/dist/collection/components/color-controller/color-controller.js +1 -1
- package/dist/collection/components/context-menu/context-menu.css +3 -3
- package/dist/collection/components/dialog-box/dialog-box.js +1 -1
- package/dist/collection/components/dialog-header/dialog-header.js +1 -1
- package/dist/collection/components/dock-host/ui-dock-host.js +3 -3
- package/dist/collection/components/drag-drop/drag-drop.js +1 -1
- package/dist/collection/components/empty-state/empty-state.js +1 -1
- package/dist/collection/components/fab/fab.js +2 -2
- package/dist/collection/components/fab-item/fab-item.js +1 -1
- package/dist/collection/components/horizontal-nav/horizontal-nav.js +2 -2
- package/dist/collection/components/icon/icon.js +1 -1
- package/dist/collection/components/input/input.js +4 -4
- package/dist/collection/components/layout-manager/layout-manager.js +1 -1
- package/dist/collection/components/layout-manager/lm-floating-window/lm-floating-window.js +1 -1
- package/dist/collection/components/layout-manager/lm-panel/lm-panel.js +1 -1
- package/dist/collection/components/layout-manager/lm-splitter/lm-splitter.js +1 -1
- package/dist/collection/components/layout-manager/lm-tabs/lm-tabs.js +1 -1
- package/dist/collection/components/library/category-section.js +1 -1
- package/dist/collection/components/library/library-card.js +1 -1
- package/dist/collection/components/library/library.js +1 -1
- package/dist/collection/components/list/list.js +4 -4
- package/dist/collection/components/list-item/list-item.css +24 -0
- package/dist/collection/components/list-item/list-item.js +35 -4
- package/dist/collection/components/loader/loader.css +1635 -0
- package/dist/collection/components/loader/loader.js +1120 -0
- package/dist/collection/components/my-step/my-step.js +1 -1
- package/dist/collection/components/nav-bar/nav-bar.js +6 -6
- package/dist/collection/components/otp-input/otp-input.js +2 -2
- package/dist/collection/components/pattern-input/pattern-input.js +5 -5
- package/dist/collection/components/progress/progress.css +150 -15
- package/dist/collection/components/progress/progress.js +180 -18
- package/dist/collection/components/radio/radio.css +3 -3
- package/dist/collection/components/radio/radio.js +1 -1
- package/dist/collection/components/resizable-panel/resizable-panel.js +1 -1
- package/dist/collection/components/smart-location-dropdown/smart-location-dropdown.js +2 -2
- package/dist/collection/components/smart-stepper/smart-step.js +2 -2
- package/dist/collection/components/smart-stepper/smart-stepper.js +1 -1
- package/dist/collection/components/snackbar/snackbar.js +1 -1
- package/dist/collection/components/speed-dial/speed-dial.js +1 -1
- package/dist/collection/components/stack/stack.js +2 -2
- package/dist/collection/components/step/step.js +1 -1
- package/dist/collection/components/switch/switch.js +10 -10
- package/dist/collection/components/tag-group/tag-group.js +2 -2
- package/dist/collection/components/timeline-item/timeline-item.js +1 -1
- package/dist/collection/components/toolbar/toolbar.js +1 -1
- package/dist/collection/components/tooltip/tooltip.js +3 -3
- package/dist/collection/components/top-bar/top-bar.js +2 -2
- package/dist/collection/components/ui-navigation-bar/navigation-bar/navigation-bar.css +19 -4
- package/dist/collection/components/ui-navigation-bar/navigation-bar/navigation-bar.js +6 -6
- package/dist/collection/components/ui-navigation-bar/navigation-item.js +3 -3
- package/dist/collection/components.js +1 -0
- package/dist/components/avatar-group.js +1 -1
- package/dist/components/avatar.js +1 -1
- package/dist/components/badge.js +1 -1
- package/dist/components/button-toggle.js +1 -1
- package/dist/components/category-section2.js +1 -1
- package/dist/components/checkbox.js +1 -1
- package/dist/components/context-menu.js +1 -1
- package/dist/components/dialog-header.js +1 -1
- package/dist/components/dropdown.js +1 -1
- package/dist/components/icon.js +2 -2
- package/dist/components/input.js +1 -1
- package/dist/components/layout-manager.js +1 -1
- package/dist/components/library-card2.js +1 -1
- package/dist/components/list-group.js +1 -1
- package/dist/components/list-item.js +1 -1
- package/dist/components/lm-container2.js +1 -1
- package/dist/components/lm-floating-window2.js +1 -1
- package/dist/components/lm-panel2.js +1 -1
- package/dist/components/lm-splitter2.js +1 -1
- package/dist/components/lm-tabs2.js +1 -1
- package/dist/components/loader.js +1 -0
- package/dist/components/my-step.js +1 -1
- package/dist/components/nav-bar.js +1 -1
- package/dist/components/pagination.js +1 -1
- package/dist/components/radio.js +1 -1
- package/dist/components/range-slider.js +1 -1
- package/dist/components/rating.js +1 -1
- package/dist/components/resizable-panel.js +1 -1
- package/dist/components/skeleton-loader.js +1 -1
- package/dist/components/smart-step.js +1 -1
- package/dist/components/stack.js +1 -1
- package/dist/components/switch.js +1 -1
- package/dist/components/tag-group.js +1 -1
- package/dist/components/tag.js +1 -1
- package/dist/components/timeline-item.js +1 -1
- package/dist/components/toggle-group.js +1 -1
- package/dist/components/tooltip.js +1 -1
- package/dist/components/ui-accordion.js +1 -1
- package/dist/components/ui-advanced-data-table.js +1 -1
- package/dist/components/ui-anchor.js +1 -1
- package/dist/components/ui-aside-panel.js +1 -1
- package/dist/components/ui-breadcrumb-item.js +1 -1
- package/dist/components/ui-breadcrumb.js +1 -1
- package/dist/components/ui-button-toggle-group.js +1 -1
- package/dist/components/ui-callout-banner.js +1 -1
- package/dist/components/ui-card.js +1 -1
- package/dist/components/ui-carousel.js +1 -1
- package/dist/components/ui-code-editor.js +1 -1
- package/dist/components/ui-code-preview.js +1 -1
- package/dist/components/ui-color-controller.js +1 -1
- package/dist/components/ui-color-picker.js +1 -1
- package/dist/components/ui-command-palette.js +1 -1
- package/dist/components/ui-dialog-box.js +1 -1
- package/dist/components/ui-divider.js +1 -1
- package/dist/components/ui-dock-host.js +1 -1
- package/dist/components/ui-dock.js +1 -1
- package/dist/components/ui-drag-drop.js +1 -1
- package/dist/components/ui-empty-state.js +1 -1
- package/dist/components/ui-fab-item.js +1 -1
- package/dist/components/ui-fab.js +1 -1
- package/dist/components/ui-file-upload.js +1 -1
- package/dist/components/ui-horizontal-nav.js +1 -1
- package/dist/components/ui-knob.js +1 -1
- package/dist/components/ui-library.js +1 -1
- package/dist/components/ui-list.js +1 -1
- package/dist/components/{ui-input-pair.d.ts → ui-loader.d.ts} +4 -4
- package/dist/components/ui-loader.js +1 -0
- package/dist/components/ui-masonry.js +1 -1
- package/dist/components/ui-meter-group.js +1 -1
- package/dist/components/ui-navigation-bar.js +1 -1
- package/dist/components/ui-navigation-item.js +1 -1
- package/dist/components/ui-number-input.js +1 -1
- package/dist/components/ui-otp-input.js +1 -1
- package/dist/components/ui-panel.js +1 -1
- package/dist/components/ui-pattern-input.js +1 -1
- package/dist/components/ui-popover.js +1 -1
- package/dist/components/ui-progress.js +1 -1
- package/dist/components/ui-scroll-top.js +1 -1
- package/dist/components/ui-smart-context-menu.js +1 -1
- package/dist/components/ui-smart-location-dropdown.js +1 -1
- package/dist/components/ui-smart-stepper.js +1 -1
- package/dist/components/ui-snackbar.js +1 -1
- package/dist/components/ui-speed-dial.js +1 -1
- package/dist/components/ui-splitter.js +1 -1
- package/dist/components/ui-step.js +1 -1
- package/dist/components/ui-stepper.js +1 -1
- package/dist/components/ui-tabs.js +1 -1
- package/dist/components/ui-timeline.js +1 -1
- package/dist/components/ui-timer.js +1 -1
- package/dist/components/ui-toolbar.js +1 -1
- package/dist/components/ui-top-bar.js +1 -1
- package/dist/components/ui-transfer-list.js +1 -1
- package/dist/components/ui-tree.js +1 -1
- package/dist/components/ui-workspace-manager.js +1 -1
- package/dist/esm/category-section.entry.js +1 -1
- package/dist/esm/exploration-project-tailwind.js +1 -1
- package/dist/esm/layout-manager.entry.js +1 -1
- package/dist/esm/library-card.entry.js +1 -1
- package/dist/esm/lm-container_2.entry.js +1 -1
- package/dist/esm/lm-panel_3.entry.js +4 -4
- package/dist/esm/loader.js +1 -1
- package/dist/esm/my-step.entry.js +1 -1
- package/dist/esm/nav-bar.entry.js +2 -2
- package/dist/esm/{security-D2WzX6vR.js → security-Dyu3Nplq.js} +88 -154
- package/dist/esm/smart-step.entry.js +2 -2
- package/dist/esm/timeline-item.entry.js +1 -1
- package/dist/esm/{ui-accordion_10.entry.js → ui-accordion_11.entry.js} +613 -27
- package/dist/esm/ui-advanced-data-table.entry.js +1 -1
- package/dist/esm/ui-anchor.entry.js +1 -1
- package/dist/esm/ui-aside-panel.entry.js +5 -5
- package/dist/esm/ui-avatar-group_3.entry.js +5 -5
- package/dist/esm/ui-callout-banner.entry.js +1 -1
- package/dist/esm/ui-card.entry.js +26 -4
- package/dist/esm/ui-checkbox.entry.js +2 -2
- package/dist/esm/ui-code-editor.entry.js +2 -2
- package/dist/esm/ui-code-preview.entry.js +1 -1
- package/dist/esm/ui-color-controller.entry.js +1 -1
- package/dist/esm/ui-dialog-box.entry.js +1 -1
- package/dist/esm/ui-dock-host.entry.js +3 -3
- package/dist/esm/ui-drag-drop.entry.js +1 -1
- package/dist/esm/ui-empty-state.entry.js +1 -1
- package/dist/esm/ui-fab-item.entry.js +1 -1
- package/dist/esm/ui-fab.entry.js +2 -2
- package/dist/esm/ui-library.entry.js +1 -1
- package/dist/esm/ui-list-group_2.entry.js +9 -5
- package/dist/esm/ui-list.entry.js +4 -4
- package/dist/esm/ui-navigation-item.entry.js +3 -3
- package/dist/esm/ui-otp-input.entry.js +2 -2
- package/dist/esm/{ui-pagination_3.entry.js → ui-pagination_4.entry.js} +202 -1
- package/dist/esm/ui-pattern-input.entry.js +5 -5
- package/dist/esm/ui-popover.entry.js +1 -1
- package/dist/esm/ui-progress.entry.js +101 -17
- package/dist/esm/ui-resizable-panel.entry.js +1 -1
- package/dist/esm/ui-smart-location-dropdown.entry.js +2 -2
- package/dist/esm/ui-smart-stepper.entry.js +1 -1
- package/dist/esm/ui-snackbar.entry.js +1 -1
- package/dist/esm/ui-step.entry.js +1 -1
- package/dist/esm/ui-stepper.entry.js +1 -1
- package/dist/esm/ui-switch.entry.js +9 -9
- package/dist/esm/ui-tabs.entry.js +1 -1
- package/dist/esm/ui-timeline.entry.js +1 -1
- package/dist/esm/ui-toolbar.entry.js +1 -1
- package/dist/esm/ui-tooltip.entry.js +4 -4
- package/dist/esm/ui-transfer-list.entry.js +1 -1
- package/dist/esm/ui-workspace-manager.entry.js +1 -1
- package/dist/exploration-project-tailwind/exploration-project-tailwind.esm.js +1 -1
- package/dist/exploration-project-tailwind/{p-c7e87fbb.entry.js → p-036d2a44.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-62352ef2.entry.js → p-05a436d3.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-a4f52a76.entry.js → p-16bdd162.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-85bf89fd.entry.js → p-20ecc116.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-2347d21b.entry.js +1 -0
- package/dist/exploration-project-tailwind/p-3d381f75.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-e5322e59.entry.js → p-4288c158.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-2f1aebb3.entry.js → p-4417a9d8.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-049744f9.entry.js → p-44742ddd.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-73d29a4a.entry.js → p-4aaa8e40.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-6fa9dc15.entry.js → p-4bef8bed.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-64e3a484.entry.js → p-4efd63ce.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-c5ddc817.entry.js → p-54965530.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-5c835d90.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-4de419d5.entry.js → p-6b838549.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-c174a372.entry.js → p-6ddbee42.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-7515b1e3.entry.js → p-70bacda8.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-9fa70359.entry.js → p-71d95bb1.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-2d273118.entry.js → p-7889bfc4.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-0b004861.entry.js → p-790556f0.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-f5719913.entry.js → p-7ba2258a.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-81961fb1.entry.js → p-81ebba11.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-5e3e80ae.entry.js → p-8578b616.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-3d3d48fd.entry.js → p-8b57fe4e.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-ffb1754a.entry.js → p-97af03cc.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-f0830120.entry.js → p-98e91da5.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-d2308a00.entry.js → p-9bd14f69.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-Dyu3Nplq.js +2 -0
- package/dist/exploration-project-tailwind/{p-ba21fed3.entry.js → p-a27f59d2.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-70d82d79.entry.js → p-a7b07cf4.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-5508874f.entry.js → p-bd89d060.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-9d0c8760.entry.js → p-c02284ea.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-d419eaf0.entry.js → p-c1c8ac28.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-c63c522e.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-c90722ec.entry.js → p-cbee2607.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-287dbf09.entry.js → p-d114a347.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-8d951aef.entry.js → p-d2e45c5e.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-77cc333a.entry.js → p-d59da767.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-46596a28.entry.js → p-d6ce9721.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-875be805.entry.js → p-dc92a343.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-4f6bba75.entry.js → p-e22317c1.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-d16c9635.entry.js → p-e76318c7.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-e8c6d395.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-c2ca71ac.entry.js → p-eab5ad36.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-f0bc5d7e.entry.js +1 -0
- package/dist/exploration-project-tailwind/p-f1beee72.entry.js +1 -0
- package/dist/exploration-project-tailwind/p-f543392f.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-46efdea3.entry.js → p-f61cfb7c.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-77124686.entry.js → p-fb4aca69.entry.js} +1 -1
- package/dist/types/components/accordion/accordion.d.ts +10 -2
- package/dist/types/components/button/button.d.ts +9 -0
- package/dist/types/components/card/card.d.ts +4 -0
- package/dist/types/components/list-item/list-item.d.ts +1 -0
- package/dist/types/components/loader/loader.d.ts +145 -0
- package/dist/types/components/progress/progress.d.ts +34 -2
- package/dist/types/components.d.ts +509 -993
- package/dist/types/types/common.d.ts +1 -1
- package/dist/types/types/common.type.d.ts +1 -1
- package/package.json +8 -7
- package/dist/cjs/ui-checkbox-group.cjs.entry.js +0 -330
- package/dist/cjs/ui-image-button.cjs.entry.js +0 -67
- package/dist/cjs/ui-input-pair.cjs.entry.js +0 -44
- package/dist/cjs/ui-radio-group.cjs.entry.js +0 -205
- package/dist/cjs/ui-radio.cjs.entry.js +0 -206
- package/dist/collection/components/checkbox-group/checkbox-group.css +0 -223
- package/dist/collection/components/checkbox-group/checkbox-group.js +0 -1001
- package/dist/collection/components/checkbox-group/types.js +0 -1
- package/dist/collection/components/image-button/image-button.css +0 -154
- package/dist/collection/components/image-button/image-button.js +0 -310
- package/dist/collection/components/image-button/types.js +0 -1
- package/dist/collection/components/input-pair/input-pair.css +0 -72
- package/dist/collection/components/input-pair/input-pair.js +0 -309
- package/dist/collection/components/radio-group/radio-group.css +0 -202
- package/dist/collection/components/radio-group/radio-group.js +0 -903
- package/dist/collection/components/radio-group/types.js +0 -1
- package/dist/components/ui-checkbox-group.d.ts +0 -11
- package/dist/components/ui-checkbox-group.js +0 -1
- package/dist/components/ui-image-button.d.ts +0 -11
- package/dist/components/ui-image-button.js +0 -1
- package/dist/components/ui-input-pair.js +0 -1
- package/dist/components/ui-radio-group.d.ts +0 -11
- package/dist/components/ui-radio-group.js +0 -1
- package/dist/esm/ui-checkbox-group.entry.js +0 -328
- package/dist/esm/ui-image-button.entry.js +0 -65
- package/dist/esm/ui-input-pair.entry.js +0 -42
- package/dist/esm/ui-radio-group.entry.js +0 -203
- package/dist/esm/ui-radio.entry.js +0 -204
- package/dist/exploration-project-tailwind/p-01c7db7a.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-5ce0dbd8.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-6ab80ead.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-6e9694f2.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-7376ac95.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-77a21491.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-7f91d949.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-807c6555.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-D2WzX6vR.js +0 -2
- package/dist/exploration-project-tailwind/p-ab752761.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-ce1222a1.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-e90d5307.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-ecda1cc3.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-f11e5cae.entry.js +0 -1
- package/dist/types/components/checkbox-group/checkbox-group.d.ts +0 -87
- package/dist/types/components/checkbox-group/types.d.ts +0 -8
- package/dist/types/components/image-button/image-button.d.ts +0 -31
- package/dist/types/components/image-button/types.d.ts +0 -1
- package/dist/types/components/input-pair/input-pair.d.ts +0 -28
- package/dist/types/components/radio-group/radio-group.d.ts +0 -74
- package/dist/types/components/radio-group/types.d.ts +0 -2
|
@@ -16,20 +16,30 @@ export function initProgressDemo() {
|
|
|
16
16
|
</p>
|
|
17
17
|
|
|
18
18
|
<div class="demo-controls" style="margin: 20px 0; display: flex; gap: 10px; flex-wrap: wrap;">
|
|
19
|
-
<ui-button onclick="showProgressPlayground()" variant="outline">🎮 Playground</ui-button>
|
|
20
|
-
<ui-button onclick="
|
|
21
|
-
<ui-button onclick="
|
|
22
|
-
<ui-button onclick="
|
|
23
|
-
<ui-button onclick="
|
|
24
|
-
<ui-button onclick="
|
|
25
|
-
<ui-button onclick="
|
|
26
|
-
<ui-button onclick="
|
|
19
|
+
<ui-button onclick="showProgressPlayground()" data-demo="playground" variant="outline">🎮 Playground</ui-button>
|
|
20
|
+
<ui-button onclick="showProgressLifecycles()" data-demo="lifecycles" variant="outline">🔄 Lifecycle Statuses</ui-button>
|
|
21
|
+
<ui-button onclick="showProgressScanning()" data-demo="scanning" variant="outline">🔍 Device Scanner</ui-button>
|
|
22
|
+
<ui-button onclick="showProgressBasics()" data-demo="basics" variant="outline">Line Progress</ui-button>
|
|
23
|
+
<ui-button onclick="showProgressCircular()" data-demo="circular" variant="outline">Circular & Dashboard</ui-button>
|
|
24
|
+
<ui-button onclick="showProgressPremium()" data-demo="premium" variant="outline">✨ Premium Effects</ui-button>
|
|
25
|
+
<ui-button onclick="showProgressAdvanced()" data-demo="advanced" variant="outline">Advanced Features</ui-button>
|
|
26
|
+
<ui-button onclick="showProgressIndustrial()" data-demo="industrial" variant="outline">🛡️ Industrial Monitoring</ui-button>
|
|
27
|
+
<ui-button onclick="showProgressInteractive()" data-demo="interactive" variant="outline">🕹️ Control Suite</ui-button>
|
|
28
|
+
<ui-button onclick="showProgressVertical()" data-demo="vertical" variant="outline">↕️ Vertical Racks</ui-button>
|
|
29
|
+
<ui-button onclick="showProgressStatusBar()" data-demo="statusbar" variant="outline">🏷️ Status Bar</ui-button>
|
|
27
30
|
</div>
|
|
28
31
|
|
|
29
32
|
<div id="progressDemoContainer" style="margin-top: 40px; min-height: 400px; padding: 24px; background: #f8fafc; border-radius: 12px; border: 1px solid #e2e8f0;"></div>
|
|
30
33
|
`;
|
|
31
34
|
|
|
35
|
+
const updateProgressActiveBtn = demoName => {
|
|
36
|
+
section.querySelectorAll('.demo-controls ui-button').forEach(btn => {
|
|
37
|
+
btn.selected = btn.getAttribute('data-demo') === demoName;
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
|
|
32
41
|
window.showProgressPlayground = function () {
|
|
42
|
+
updateProgressActiveBtn('playground');
|
|
33
43
|
const container = document.getElementById('progressDemoContainer');
|
|
34
44
|
container.innerHTML = `
|
|
35
45
|
<div class="demo-block">
|
|
@@ -61,6 +71,10 @@ export function initProgressDemo() {
|
|
|
61
71
|
<option value="exception">Exception (Red)</option>
|
|
62
72
|
<option value="warning">Warning (Yellow)</option>
|
|
63
73
|
<option value="danger">Danger (Vibrating)</option>
|
|
74
|
+
<option value="empty">Empty</option>
|
|
75
|
+
<option value="running">Running (Spinner)</option>
|
|
76
|
+
<option value="completed">Completed (Check)</option>
|
|
77
|
+
<option value="interrupted">Interrupted (Alert)</option>
|
|
64
78
|
</ui-dropdown>
|
|
65
79
|
</label>
|
|
66
80
|
|
|
@@ -133,7 +147,136 @@ export function initProgressDemo() {
|
|
|
133
147
|
code.innerText = `<ui-progress ${props}></ui-progress>`;
|
|
134
148
|
};
|
|
135
149
|
|
|
150
|
+
window.showProgressLifecycles = function () {
|
|
151
|
+
updateProgressActiveBtn('lifecycles');
|
|
152
|
+
const container = document.getElementById('progressDemoContainer');
|
|
153
|
+
container.innerHTML = `
|
|
154
|
+
<div class="demo-block">
|
|
155
|
+
<h3 style="margin-bottom: 8px;">🔄 Lifecycle Status Monitoring</h3>
|
|
156
|
+
<p style="font-size: 14px; color: #64748b; margin-bottom: 24px;">
|
|
157
|
+
Track system processes end-to-end using native status lifecycles: <code>empty</code>, <code>running</code>, <code>completed</code>, and <code>interrupted</code>.
|
|
158
|
+
</p>
|
|
159
|
+
|
|
160
|
+
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 20px; margin-bottom: 40px;">
|
|
161
|
+
|
|
162
|
+
<!-- Empty State -->
|
|
163
|
+
<div style="background: white; border-radius: 12px; border: 1px solid #e2e8f0; padding: 20px; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);">
|
|
164
|
+
<h4 style="margin: 0 0 16px; font-size: 13px; color: #64748b; display: flex; align-items: center; justify-content: space-between;">
|
|
165
|
+
<span>Empty State</span>
|
|
166
|
+
<span style="font-size: 10px; font-weight: bold; background: #f1f5f9; color: #64748b; padding: 2px 8px; border-radius: 10px; text-transform: uppercase;">Awaiting</span>
|
|
167
|
+
</h4>
|
|
168
|
+
<ui-progress percent="0" status="empty" stroke-width="12"></ui-progress>
|
|
169
|
+
<p style="font-size: 12px; color: #94a3b8; margin-top: 12px; margin-bottom: 0;">Task queued, awaiting resource allocation.</p>
|
|
170
|
+
</div>
|
|
171
|
+
|
|
172
|
+
<!-- Running State -->
|
|
173
|
+
<div style="background: white; border-radius: 12px; border: 1px solid #e2e8f0; padding: 20px; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);">
|
|
174
|
+
<h4 style="margin: 0 0 16px; font-size: 13px; color: #1890ff; display: flex; align-items: center; justify-content: space-between;">
|
|
175
|
+
<span>Running State</span>
|
|
176
|
+
<span style="font-size: 10px; font-weight: bold; background: #e0f2fe; color: #0369a1; padding: 2px 8px; border-radius: 10px; text-transform: uppercase;">Active</span>
|
|
177
|
+
</h4>
|
|
178
|
+
<ui-progress percent="45" status="running" stroke-width="12"></ui-progress>
|
|
179
|
+
<p style="font-size: 12px; color: #94a3b8; margin-top: 12px; margin-bottom: 0;">Actively processing records. Wave pulse enabled.</p>
|
|
180
|
+
</div>
|
|
181
|
+
|
|
182
|
+
<!-- Completed State -->
|
|
183
|
+
<div style="background: white; border-radius: 12px; border: 1px solid #e2e8f0; padding: 20px; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);">
|
|
184
|
+
<h4 style="margin: 0 0 16px; font-size: 13px; color: #52c41a; display: flex; align-items: center; justify-content: space-between;">
|
|
185
|
+
<span>Completed State</span>
|
|
186
|
+
<span style="font-size: 10px; font-weight: bold; background: #dcfce7; color: #15803d; padding: 2px 8px; border-radius: 10px; text-transform: uppercase;">Success</span>
|
|
187
|
+
</h4>
|
|
188
|
+
<ui-progress percent="100" status="completed" stroke-width="12"></ui-progress>
|
|
189
|
+
<p style="font-size: 12px; color: #94a3b8; margin-top: 12px; margin-bottom: 0;">Operation finished successfully. Output generated.</p>
|
|
190
|
+
</div>
|
|
191
|
+
|
|
192
|
+
<!-- Interrupted State -->
|
|
193
|
+
<div style="background: white; border-radius: 12px; border: 1px solid #e2e8f0; padding: 20px; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);">
|
|
194
|
+
<h4 style="margin: 0 0 16px; font-size: 13px; color: #ff4d4f; display: flex; align-items: center; justify-content: space-between;">
|
|
195
|
+
<span>Interrupted State</span>
|
|
196
|
+
<span style="font-size: 10px; font-weight: bold; background: #fef2f2; color: #b91c1c; padding: 2px 8px; border-radius: 10px; text-transform: uppercase;">Halted</span>
|
|
197
|
+
</h4>
|
|
198
|
+
<ui-progress percent="70" status="interrupted" stroke-width="12"></ui-progress>
|
|
199
|
+
<p style="font-size: 12px; color: #94a3b8; margin-top: 12px; margin-bottom: 0;">Network loss detected. Thread execution suspended.</p>
|
|
200
|
+
</div>
|
|
201
|
+
|
|
202
|
+
</div>
|
|
203
|
+
|
|
204
|
+
<!-- Dynamic Process Lifecycle Simulator -->
|
|
205
|
+
<div style="background: #1e293b; color: white; border-radius: 16px; padding: 32px; box-shadow: 0 10px 15px -3px rgba(0,0,0,0.3);">
|
|
206
|
+
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 24px;">
|
|
207
|
+
<h4 style="margin: 0; font-size: 16px; font-weight: 600; letter-spacing: 0.02em;">⚡ Operation Lifecycle Simulator</h4>
|
|
208
|
+
<span id="lifecycleStateText" style="font-size: 11px; font-weight: bold; background: #475569; color: #f8fafc; padding: 6px 14px; border-radius: 20px; letter-spacing: 0.05em; text-transform: uppercase;">QUEUED</span>
|
|
209
|
+
</div>
|
|
210
|
+
|
|
211
|
+
<div style="background: rgba(255,255,255,0.02); border: 1px solid rgba(255,255,255,0.08); border-radius: 12px; padding: 24px; margin-bottom: 24px;">
|
|
212
|
+
<ui-progress id="lifecycleProgress" percent="0" status="empty" stroke-width="16" decimal-precision="1"></ui-progress>
|
|
213
|
+
</div>
|
|
214
|
+
|
|
215
|
+
<div style="display: flex; gap: 12px; flex-wrap: wrap;">
|
|
216
|
+
<ui-button id="btnLifecycleInit" onclick="handleLifecycleAction('init')" variant="outline" style="--ui-button-border-color: #475569; --ui-button-color: #f8fafc;">🔌 Queue (Empty)</ui-button>
|
|
217
|
+
<ui-button id="btnLifecycleStart" onclick="handleLifecycleAction('start')" variant="outline" style="--ui-button-border-color: #475569; --ui-button-color: #f8fafc;">🚀 Start (Running)</ui-button>
|
|
218
|
+
<ui-button id="btnLifecycleInterrupt" onclick="handleLifecycleAction('interrupt')" variant="outline" style="--ui-button-border-color: #475569; --ui-button-color: #f8fafc;">🚫 Halt (Interrupt)</ui-button>
|
|
219
|
+
<ui-button id="btnLifecycleComplete" onclick="handleLifecycleAction('complete')" variant="outline" style="--ui-button-border-color: #475569; --ui-button-color: #f8fafc;">✨ Force Complete</ui-button>
|
|
220
|
+
</div>
|
|
221
|
+
</div>
|
|
222
|
+
</div>
|
|
223
|
+
`;
|
|
224
|
+
|
|
225
|
+
let simInterval = null;
|
|
226
|
+
|
|
227
|
+
window.handleLifecycleAction = function (action) {
|
|
228
|
+
const pBar = document.getElementById('lifecycleProgress');
|
|
229
|
+
const stateText = document.getElementById('lifecycleStateText');
|
|
230
|
+
if (!pBar || !stateText) return;
|
|
231
|
+
|
|
232
|
+
if (window.lifecycleInterval) {
|
|
233
|
+
clearInterval(window.lifecycleInterval);
|
|
234
|
+
window.lifecycleInterval = null;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
if (action === 'init') {
|
|
238
|
+
pBar.percent = 0;
|
|
239
|
+
pBar.status = 'empty';
|
|
240
|
+
stateText.innerText = 'QUEUED';
|
|
241
|
+
stateText.style.background = '#475569';
|
|
242
|
+
} else if (action === 'start') {
|
|
243
|
+
pBar.status = 'running';
|
|
244
|
+
stateText.innerText = 'RUNNING';
|
|
245
|
+
stateText.style.background = '#1d4ed8';
|
|
246
|
+
|
|
247
|
+
let current = parseFloat(pBar.percent) || 0;
|
|
248
|
+
if (current >= 100) {
|
|
249
|
+
current = 0;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
window.lifecycleInterval = setInterval(() => {
|
|
253
|
+
current += 1.2;
|
|
254
|
+
if (current < 100) {
|
|
255
|
+
pBar.percent = current.toFixed(1);
|
|
256
|
+
} else {
|
|
257
|
+
clearInterval(window.lifecycleInterval);
|
|
258
|
+
window.lifecycleInterval = null;
|
|
259
|
+
pBar.percent = 100;
|
|
260
|
+
pBar.status = 'completed';
|
|
261
|
+
stateText.innerText = 'COMPLETED';
|
|
262
|
+
stateText.style.background = '#15803d';
|
|
263
|
+
}
|
|
264
|
+
}, 100);
|
|
265
|
+
} else if (action === 'interrupt') {
|
|
266
|
+
pBar.status = 'interrupted';
|
|
267
|
+
stateText.innerText = 'INTERRUPTED';
|
|
268
|
+
stateText.style.background = '#b91c1c';
|
|
269
|
+
} else if (action === 'complete') {
|
|
270
|
+
pBar.percent = 100;
|
|
271
|
+
pBar.status = 'completed';
|
|
272
|
+
stateText.innerText = 'COMPLETED';
|
|
273
|
+
stateText.style.background = '#15803d';
|
|
274
|
+
}
|
|
275
|
+
};
|
|
276
|
+
};
|
|
277
|
+
|
|
136
278
|
window.showProgressBasics = function () {
|
|
279
|
+
updateProgressActiveBtn('basics');
|
|
137
280
|
const container = document.getElementById('progressDemoContainer');
|
|
138
281
|
container.innerHTML = `
|
|
139
282
|
<div class="demo-block">
|
|
@@ -165,6 +308,7 @@ export function initProgressDemo() {
|
|
|
165
308
|
};
|
|
166
309
|
|
|
167
310
|
window.showProgressCircular = function () {
|
|
311
|
+
updateProgressActiveBtn('circular');
|
|
168
312
|
const container = document.getElementById('progressDemoContainer');
|
|
169
313
|
container.innerHTML = `
|
|
170
314
|
<div class="demo-block">
|
|
@@ -198,6 +342,7 @@ export function initProgressDemo() {
|
|
|
198
342
|
};
|
|
199
343
|
|
|
200
344
|
window.showProgressPremium = function () {
|
|
345
|
+
updateProgressActiveBtn('premium');
|
|
201
346
|
const container = document.getElementById('progressDemoContainer');
|
|
202
347
|
container.innerHTML = `
|
|
203
348
|
<div class="demo-block">
|
|
@@ -234,6 +379,7 @@ export function initProgressDemo() {
|
|
|
234
379
|
};
|
|
235
380
|
|
|
236
381
|
window.showProgressAdvanced = function () {
|
|
382
|
+
updateProgressActiveBtn('advanced');
|
|
237
383
|
const container = document.getElementById('progressDemoContainer');
|
|
238
384
|
container.innerHTML = `
|
|
239
385
|
<div class="demo-block">
|
|
@@ -282,6 +428,7 @@ export function initProgressDemo() {
|
|
|
282
428
|
};
|
|
283
429
|
|
|
284
430
|
window.showProgressIndustrial = function () {
|
|
431
|
+
updateProgressActiveBtn('industrial');
|
|
285
432
|
const container = document.getElementById('progressDemoContainer');
|
|
286
433
|
container.innerHTML = `
|
|
287
434
|
<div class="demo-block">
|
|
@@ -387,6 +534,7 @@ export function initProgressDemo() {
|
|
|
387
534
|
};
|
|
388
535
|
|
|
389
536
|
window.showProgressInteractive = function () {
|
|
537
|
+
updateProgressActiveBtn('interactive');
|
|
390
538
|
const container = document.getElementById('progressDemoContainer');
|
|
391
539
|
container.innerHTML = `
|
|
392
540
|
<div class="demo-block">
|
|
@@ -444,6 +592,7 @@ export function initProgressDemo() {
|
|
|
444
592
|
};
|
|
445
593
|
|
|
446
594
|
window.showProgressVertical = function () {
|
|
595
|
+
updateProgressActiveBtn('vertical');
|
|
447
596
|
const container = document.getElementById('progressDemoContainer');
|
|
448
597
|
container.innerHTML = `
|
|
449
598
|
<div class="demo-block">
|
|
@@ -458,5 +607,549 @@ export function initProgressDemo() {
|
|
|
458
607
|
`;
|
|
459
608
|
};
|
|
460
609
|
|
|
610
|
+
window.showProgressScanning = function () {
|
|
611
|
+
updateProgressActiveBtn('scanning');
|
|
612
|
+
const container = document.getElementById('progressDemoContainer');
|
|
613
|
+
container.innerHTML = `
|
|
614
|
+
<div class="demo-block" style="font-family: inherit;">
|
|
615
|
+
<div style="display: flex; align-items: center; justify-content: space-between; margin-bottom: 24px;">
|
|
616
|
+
<div>
|
|
617
|
+
<h3 style="margin: 0; font-size: 20px; font-weight: 700; color: #0f172a;">🔍 Cybernetic Device Scanner</h3>
|
|
618
|
+
<p style="margin: 4px 0 0; font-size: 14px; color: #64748b;">Automated sector, memory, and threat scanning telemetry.</p>
|
|
619
|
+
</div>
|
|
620
|
+
<span id="scanStatusBadge" style="font-size: 11px; font-weight: 700; background: #f1f5f9; color: #64748b; padding: 4px 12px; border-radius: 20px; text-transform: uppercase; letter-spacing: 0.05em;">AWAITING COMMAND</span>
|
|
621
|
+
</div>
|
|
622
|
+
|
|
623
|
+
<div style="display: grid; grid-template-columns: 280px 1fr; gap: 32px; margin-bottom: 32px;">
|
|
624
|
+
<!-- Left Panel: Dial & Actions -->
|
|
625
|
+
<div style="background: white; border: 1px solid #e2e8f0; border-radius: 16px; padding: 24px; display: flex; flex-direction: column; align-items: center; gap: 20px; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);">
|
|
626
|
+
<div style="position: relative; width: 160px; height: 160px; display: flex; align-items: center; justify-content: center;">
|
|
627
|
+
<ui-progress
|
|
628
|
+
id="scanCircularProgress"
|
|
629
|
+
type="dashboard"
|
|
630
|
+
percent="0"
|
|
631
|
+
stroke-width="12"
|
|
632
|
+
stroke-color='{"from": "#3b82f6", "to": "#10b981"}'
|
|
633
|
+
gap-position="bottom"
|
|
634
|
+
width="160"
|
|
635
|
+
glow="true"
|
|
636
|
+
liquid="true"
|
|
637
|
+
status="empty"
|
|
638
|
+
></ui-progress>
|
|
639
|
+
</div>
|
|
640
|
+
|
|
641
|
+
<!-- Scanning Controls -->
|
|
642
|
+
<div style="display: flex; flex-direction: column; width: 100%; gap: 10px; margin-top: 10px;">
|
|
643
|
+
<ui-button id="btnStartScan" onclick="handleScanAction('start')" variant="primary" style="width: 100%;">⚡ Start Full Scan</ui-button>
|
|
644
|
+
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 8px;">
|
|
645
|
+
<ui-button id="btnPauseScan" onclick="handleScanAction('pause')" variant="outline" style="font-size: 12px;">⏸️ Pause</ui-button>
|
|
646
|
+
<ui-button id="btnHaltScan" onclick="handleScanAction('halt')" variant="outline" style="font-size: 12px; --ui-button-color: #ef4444; --ui-button-border-color: #fecaca;">🚫 Abort</ui-button>
|
|
647
|
+
</div>
|
|
648
|
+
<ui-button id="btnResetScan" onclick="handleScanAction('reset')" variant="ghost" style="width: 100%; font-size: 12px;">🔄 Reset Console</ui-button>
|
|
649
|
+
</div>
|
|
650
|
+
</div>
|
|
651
|
+
|
|
652
|
+
<!-- Right Panel: Live Logs & Telemetry -->
|
|
653
|
+
<div style="display: flex; flex-direction: column; gap: 20px;">
|
|
654
|
+
<!-- Telemetry Cards -->
|
|
655
|
+
<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px;">
|
|
656
|
+
<div style="background: white; border: 1px solid #e2e8f0; padding: 16px; border-radius: 12px; text-align: center;">
|
|
657
|
+
<span style="font-size: 11px; text-transform: uppercase; letter-spacing: 0.05em; color: #64748b; font-weight: 600;">Sectors Checked</span>
|
|
658
|
+
<h4 id="sectorsCount" style="margin: 8px 0 0; font-size: 24px; font-weight: 800; color: #0f172a;">0</h4>
|
|
659
|
+
</div>
|
|
660
|
+
<div style="background: white; border: 1px solid #e2e8f0; padding: 16px; border-radius: 12px; text-align: center;">
|
|
661
|
+
<span style="font-size: 11px; text-transform: uppercase; letter-spacing: 0.05em; color: #64748b; font-weight: 600;">Threats Detected</span>
|
|
662
|
+
<h4 id="threatsCount" style="margin: 8px 0 0; font-size: 24px; font-weight: 800; color: #0f172a;">0</h4>
|
|
663
|
+
</div>
|
|
664
|
+
<div style="background: white; border: 1px solid #e2e8f0; padding: 16px; border-radius: 12px; text-align: center;">
|
|
665
|
+
<span style="font-size: 11px; text-transform: uppercase; letter-spacing: 0.05em; color: #64748b; font-weight: 600;">Scan Time</span>
|
|
666
|
+
<h4 id="elapsedScanTime" style="margin: 8px 0 0; font-size: 24px; font-weight: 800; color: #0f172a;">0.0s</h4>
|
|
667
|
+
</div>
|
|
668
|
+
</div>
|
|
669
|
+
|
|
670
|
+
<!-- Terminal Console Logs -->
|
|
671
|
+
<div style="background: #0f172a; color: #38bdf8; border-radius: 16px; padding: 20px; font-family: 'Courier New', Courier, monospace; font-size: 12px; height: 180px; overflow-y: auto; border: 1px solid #1e293b; box-shadow: inset 0 2px 8px rgba(0,0,0,0.5);" id="scanTerminalConsole">
|
|
672
|
+
<div style="color: #64748b;">[SCAN ENGINE v4.2.1] INITIALIZED...</div>
|
|
673
|
+
<div style="color: #64748b;">[CONSOLE] READY FOR HARDWARE RAMP...</div>
|
|
674
|
+
</div>
|
|
675
|
+
</div>
|
|
676
|
+
</div>
|
|
677
|
+
|
|
678
|
+
<!-- Linear Sub-System Feed -->
|
|
679
|
+
<div style="background: white; border: 1px solid #e2e8f0; border-radius: 16px; padding: 24px; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);">
|
|
680
|
+
<h4 style="margin: 0 0 16px; font-size: 13px; text-transform: uppercase; color: #64748b; font-weight: 700; letter-spacing: 0.05em;">Memory Buffer Allocation Check</h4>
|
|
681
|
+
<ui-progress id="scanLinearBuffer" percent="0" status="empty" stroke-width="16" vitality="true"></ui-progress>
|
|
682
|
+
</div>
|
|
683
|
+
</div>
|
|
684
|
+
`;
|
|
685
|
+
|
|
686
|
+
// Active scan memory variables
|
|
687
|
+
if (window.scanInterval) {
|
|
688
|
+
clearInterval(window.scanInterval);
|
|
689
|
+
window.scanInterval = null;
|
|
690
|
+
}
|
|
691
|
+
window.scanTimeElapsed = 0;
|
|
692
|
+
window.scanSectors = 0;
|
|
693
|
+
window.scanThreats = 0;
|
|
694
|
+
|
|
695
|
+
const mockSectors = [
|
|
696
|
+
'/dev/disk0s1/System/Library/Kernels/kernel',
|
|
697
|
+
'/dev/disk0s1/System/Library/Extensions/AppleACPIPlatform.kext',
|
|
698
|
+
'/dev/disk0s1/System/Library/Extensions/AppleSMBIOS.kext',
|
|
699
|
+
'/dev/disk0s1/System/Library/Fonts/SF-Pro.ttf',
|
|
700
|
+
'/dev/disk0s1/usr/sbin/cron',
|
|
701
|
+
'/dev/disk0s1/usr/bin/security',
|
|
702
|
+
'/dev/disk0s1/private/var/log/system.log',
|
|
703
|
+
'/dev/disk0s1/Applications/CyberneticScanner.app',
|
|
704
|
+
'/Memory/Alloc/RAM_BLOCK_0x00FF34D',
|
|
705
|
+
'/Memory/Alloc/RAM_BLOCK_0x01AA87D',
|
|
706
|
+
'/Ports/TCP/Port-80-Listener',
|
|
707
|
+
'/Ports/TCP/Port-443-SecureGateway',
|
|
708
|
+
'/Ports/TCP/Port-8080-AltServer',
|
|
709
|
+
];
|
|
710
|
+
|
|
711
|
+
window.handleScanAction = function (action) {
|
|
712
|
+
const circ = document.getElementById('scanCircularProgress');
|
|
713
|
+
const line = document.getElementById('scanLinearBuffer');
|
|
714
|
+
const statusBadge = document.getElementById('scanStatusBadge');
|
|
715
|
+
const term = document.getElementById('scanTerminalConsole');
|
|
716
|
+
const secCount = document.getElementById('sectorsCount');
|
|
717
|
+
const thCount = document.getElementById('threatsCount');
|
|
718
|
+
const timeCount = document.getElementById('elapsedScanTime');
|
|
719
|
+
|
|
720
|
+
if (!circ || !line || !statusBadge || !term) return;
|
|
721
|
+
|
|
722
|
+
const log = (msg, color = '#38bdf8') => {
|
|
723
|
+
const div = document.createElement('div');
|
|
724
|
+
div.style.color = color;
|
|
725
|
+
div.innerText = `[${new Date().toLocaleTimeString()}] ${msg}`;
|
|
726
|
+
term.appendChild(div);
|
|
727
|
+
term.scrollTop = term.scrollHeight;
|
|
728
|
+
};
|
|
729
|
+
|
|
730
|
+
if (action === 'start') {
|
|
731
|
+
if (window.scanInterval) return;
|
|
732
|
+
|
|
733
|
+
circ.status = 'running';
|
|
734
|
+
line.status = 'running';
|
|
735
|
+
statusBadge.innerText = 'RUNNING';
|
|
736
|
+
statusBadge.style.background = '#e0f2fe';
|
|
737
|
+
statusBadge.style.color = '#0369a1';
|
|
738
|
+
log('INITIATING FULL HARDWARE DEVICE SCAN...', '#10b981');
|
|
739
|
+
|
|
740
|
+
window.scanTimeStart = Date.now() - window.scanTimeElapsed;
|
|
741
|
+
|
|
742
|
+
window.scanInterval = setInterval(() => {
|
|
743
|
+
let current = parseFloat(circ.percent) || 0;
|
|
744
|
+
if (current < 100) {
|
|
745
|
+
current += 1.6;
|
|
746
|
+
if (current > 100) current = 100;
|
|
747
|
+
|
|
748
|
+
circ.percent = current.toFixed(1);
|
|
749
|
+
line.percent = current.toFixed(1);
|
|
750
|
+
|
|
751
|
+
// Update timer
|
|
752
|
+
window.scanTimeElapsed = Date.now() - window.scanTimeStart;
|
|
753
|
+
timeCount.innerText = (window.scanTimeElapsed / 1000).toFixed(1) + 's';
|
|
754
|
+
|
|
755
|
+
// Check mock sector files
|
|
756
|
+
window.scanSectors += Math.floor(Math.random() * 8) + 3;
|
|
757
|
+
secCount.innerText = window.scanSectors;
|
|
758
|
+
|
|
759
|
+
const randomFile = mockSectors[Math.floor(Math.random() * mockSectors.length)];
|
|
760
|
+
log(`CHECKING: ${randomFile}`);
|
|
761
|
+
|
|
762
|
+
// Mock threats detection at 40% and 80%
|
|
763
|
+
if (current >= 40 && window.scanThreats === 0) {
|
|
764
|
+
window.scanThreats = 1;
|
|
765
|
+
thCount.innerText = '1';
|
|
766
|
+
thCount.style.color = '#f59e0b';
|
|
767
|
+
circ.status = 'warning';
|
|
768
|
+
line.status = 'warning';
|
|
769
|
+
statusBadge.innerText = 'WARNING';
|
|
770
|
+
statusBadge.style.background = '#fef3c7';
|
|
771
|
+
statusBadge.style.color = '#b45309';
|
|
772
|
+
log('⚠️ SYSTEM WARNING: UNVERIFIED BUFFER DETECTED AT SECTOR 4!', '#f59e0b');
|
|
773
|
+
}
|
|
774
|
+
|
|
775
|
+
if (current >= 80 && window.scanThreats === 1) {
|
|
776
|
+
window.scanThreats = 2;
|
|
777
|
+
thCount.innerText = '2';
|
|
778
|
+
thCount.style.color = '#ef4444';
|
|
779
|
+
circ.status = 'interrupted';
|
|
780
|
+
line.status = 'interrupted';
|
|
781
|
+
statusBadge.innerText = 'SUSPECTED THREAT';
|
|
782
|
+
statusBadge.style.background = '#fef2f2';
|
|
783
|
+
statusBadge.style.color = '#b91c1c';
|
|
784
|
+
log('🚨 CRITICAL ALERT: CORRUPTED MALICIOUS THREAD IN RAM BLOCK!', '#ef4444');
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
} else {
|
|
788
|
+
clearInterval(window.scanInterval);
|
|
789
|
+
window.scanInterval = null;
|
|
790
|
+
circ.percent = 100;
|
|
791
|
+
line.percent = 100;
|
|
792
|
+
|
|
793
|
+
if (window.scanThreats > 0) {
|
|
794
|
+
circ.status = 'interrupted';
|
|
795
|
+
line.status = 'interrupted';
|
|
796
|
+
statusBadge.innerText = 'THREAT FOUND';
|
|
797
|
+
statusBadge.style.background = '#fef2f2';
|
|
798
|
+
statusBadge.style.color = '#b91c1c';
|
|
799
|
+
log('❌ SCAN COMPLETE: 2 CRITICAL THREATS SECURED. IMMEDIATE ACTION REQUIRED.', '#ef4444');
|
|
800
|
+
} else {
|
|
801
|
+
circ.status = 'completed';
|
|
802
|
+
line.status = 'completed';
|
|
803
|
+
statusBadge.innerText = 'COMPLETED';
|
|
804
|
+
statusBadge.style.background = '#dcfce7';
|
|
805
|
+
statusBadge.style.color = '#15803d';
|
|
806
|
+
log('✨ SCAN COMPLETE: DEVICE SECURE. ZERO THREATS DETECTED.', '#10b981');
|
|
807
|
+
}
|
|
808
|
+
}
|
|
809
|
+
}, 120);
|
|
810
|
+
} else if (action === 'pause') {
|
|
811
|
+
if (!window.scanInterval) return;
|
|
812
|
+
clearInterval(window.scanInterval);
|
|
813
|
+
window.scanInterval = null;
|
|
814
|
+
|
|
815
|
+
statusBadge.innerText = 'PAUSED';
|
|
816
|
+
statusBadge.style.background = '#f1f5f9';
|
|
817
|
+
statusBadge.style.color = '#475569';
|
|
818
|
+
log('SCAN SUSPENDED BY OPERATOR.', '#faad14');
|
|
819
|
+
} else if (action === 'halt') {
|
|
820
|
+
if (window.scanInterval) {
|
|
821
|
+
clearInterval(window.scanInterval);
|
|
822
|
+
window.scanInterval = null;
|
|
823
|
+
}
|
|
824
|
+
circ.status = 'interrupted';
|
|
825
|
+
line.status = 'interrupted';
|
|
826
|
+
statusBadge.innerText = 'ABORTED';
|
|
827
|
+
statusBadge.style.background = '#fef2f2';
|
|
828
|
+
statusBadge.style.color = '#b91c1c';
|
|
829
|
+
log('❌ CRITICAL: HARDWARE SCAN ABORTED IMMEDIATELY!', '#ef4444');
|
|
830
|
+
} else if (action === 'reset') {
|
|
831
|
+
if (window.scanInterval) {
|
|
832
|
+
clearInterval(window.scanInterval);
|
|
833
|
+
window.scanInterval = null;
|
|
834
|
+
}
|
|
835
|
+
circ.percent = 0;
|
|
836
|
+
circ.status = 'empty';
|
|
837
|
+
line.percent = 0;
|
|
838
|
+
line.status = 'empty';
|
|
839
|
+
window.scanTimeElapsed = 0;
|
|
840
|
+
window.scanSectors = 0;
|
|
841
|
+
window.scanThreats = 0;
|
|
842
|
+
|
|
843
|
+
secCount.innerText = '0';
|
|
844
|
+
thCount.innerText = '0';
|
|
845
|
+
thCount.style.color = '';
|
|
846
|
+
timeCount.innerText = '0.0s';
|
|
847
|
+
statusBadge.innerText = 'AWAITING COMMAND';
|
|
848
|
+
statusBadge.style.background = '';
|
|
849
|
+
statusBadge.style.color = '';
|
|
850
|
+
|
|
851
|
+
term.innerHTML = `
|
|
852
|
+
<div style="color: #64748b;">[SCAN ENGINE v4.2.1] INITIALIZED...</div>
|
|
853
|
+
<div style="color: #64748b;">[CONSOLE] READY FOR HARDWARE RAMP...</div>
|
|
854
|
+
`;
|
|
855
|
+
log('SCAN TELEMETRY CLEARED AND RESET.', '#64748b');
|
|
856
|
+
}
|
|
857
|
+
};
|
|
858
|
+
};
|
|
859
|
+
|
|
860
|
+
window.showProgressStatusBar = function () {
|
|
861
|
+
updateProgressActiveBtn('statusbar');
|
|
862
|
+
const container = document.getElementById('progressDemoContainer');
|
|
863
|
+
container.innerHTML = `
|
|
864
|
+
<div class="demo-block">
|
|
865
|
+
<h3 style="margin-bottom:6px;">🏷️ Status Bar Variant</h3>
|
|
866
|
+
<p style="font-size:13px; color:#64748b; margin:0 0 28px; line-height:1.6;">Add <code>status-bar</code> to any <code>ui-progress</code> line bar. The status badge and percentage are derived automatically from <code>percent</code> and <code>status</code>. Use <code>status-bar-align</code> to position the label and <code>status-labels</code> to override any text.</p>
|
|
867
|
+
|
|
868
|
+
<!-- Custom labels showcase -->
|
|
869
|
+
<h4 style="font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:#94a3b8; margin:0 0 14px;">Custom Labels</h4>
|
|
870
|
+
<div style="display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:14px; margin-bottom:36px;">
|
|
871
|
+
|
|
872
|
+
<div style="background:white; padding:18px 20px; border-radius:12px; border:1px solid #e2e8f0;">
|
|
873
|
+
<span style="font-size:11px; font-weight:700; color:#cbd5e1; display:block; margin-bottom:10px;">Deploy pipeline labels</span>
|
|
874
|
+
<ui-progress percent="0" status-bar stroke-width="6"
|
|
875
|
+
status-labels='{"notStarted":"Queued","running":"Deploying","interrupted":"Rolled Back","completed":"Live"}'></ui-progress>
|
|
876
|
+
</div>
|
|
877
|
+
|
|
878
|
+
<div style="background:white; padding:18px 20px; border-radius:12px; border:1px solid #e2e8f0;">
|
|
879
|
+
<span style="font-size:11px; font-weight:700; color:#cbd5e1; display:block; margin-bottom:10px;">File transfer labels</span>
|
|
880
|
+
<ui-progress percent="55" status-bar stroke-width="6" stroke-color="#3b82f6"
|
|
881
|
+
status-labels='{"notStarted":"Pending","running":"Uploading","interrupted":"Paused","completed":"Sent"}'></ui-progress>
|
|
882
|
+
</div>
|
|
883
|
+
|
|
884
|
+
<div style="background:white; padding:18px 20px; border-radius:12px; border:1px solid #e2e8f0;">
|
|
885
|
+
<span style="font-size:11px; font-weight:700; color:#cbd5e1; display:block; margin-bottom:10px;">Partial override (running only)</span>
|
|
886
|
+
<ui-progress percent="72" status-bar stroke-width="6" stroke-color="#8b5cf6"
|
|
887
|
+
status-labels='{"running":"In Progress"}'></ui-progress>
|
|
888
|
+
</div>
|
|
889
|
+
|
|
890
|
+
<div style="background:white; padding:18px 20px; border-radius:12px; border:1px solid #e2e8f0;">
|
|
891
|
+
<span style="font-size:11px; font-weight:700; color:#cbd5e1; display:block; margin-bottom:10px;">Interrupted — custom label</span>
|
|
892
|
+
<ui-progress percent="41" status="interrupted" status-bar stroke-width="6" stroke-color="#f59e0b"
|
|
893
|
+
status-labels='{"interrupted":"On Hold"}'></ui-progress>
|
|
894
|
+
</div>
|
|
895
|
+
</div>
|
|
896
|
+
|
|
897
|
+
<!-- Badge Alignment showcase -->
|
|
898
|
+
<h4 style="font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:#94a3b8; margin:0 0 14px;">Chip Alignment</h4>
|
|
899
|
+
<div style="display:flex; flex-direction:column; gap:12px; margin-bottom:36px;">
|
|
900
|
+
|
|
901
|
+
<div style="background:white; padding:18px 20px; border-radius:12px; border:1px solid #e2e8f0;">
|
|
902
|
+
<span style="font-size:11px; font-weight:700; color:#cbd5e1; display:block; margin-bottom:10px;">LEFT (default) — chip anchored to left edge</span>
|
|
903
|
+
<ui-progress percent="60" status-bar status-bar-align="left" stroke-width="7" stroke-color="#3b82f6"></ui-progress>
|
|
904
|
+
</div>
|
|
905
|
+
|
|
906
|
+
<div style="background:white; padding:18px 20px; border-radius:12px; border:1px solid #e2e8f0;">
|
|
907
|
+
<span style="font-size:11px; font-weight:700; color:#cbd5e1; display:block; margin-bottom:10px;">CENTER — chip centered on bar</span>
|
|
908
|
+
<ui-progress percent="60" status-bar status-bar-align="center" stroke-width="7" stroke-color="#8b5cf6"></ui-progress>
|
|
909
|
+
</div>
|
|
910
|
+
|
|
911
|
+
<div style="background:white; padding:18px 20px; border-radius:12px; border:1px solid #e2e8f0;">
|
|
912
|
+
<span style="font-size:11px; font-weight:700; color:#cbd5e1; display:block; margin-bottom:10px;">RIGHT — chip anchored to right edge</span>
|
|
913
|
+
<ui-progress percent="60" status-bar status-bar-align="right" stroke-width="7" stroke-color="#22c55e"></ui-progress>
|
|
914
|
+
</div>
|
|
915
|
+
</div>
|
|
916
|
+
|
|
917
|
+
<!-- All 4 lifecycle states -->
|
|
918
|
+
<h4 style="font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:#94a3b8; margin:0 0 14px;">Lifecycle States</h4>
|
|
919
|
+
<div style="display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:14px; margin-bottom:36px;">
|
|
920
|
+
|
|
921
|
+
<div style="background:white; padding:18px 20px; border-radius:12px; border:1px solid #e2e8f0;">
|
|
922
|
+
<ui-progress percent="0" status-bar stroke-width="6"></ui-progress>
|
|
923
|
+
</div>
|
|
924
|
+
<div style="background:white; padding:18px 20px; border-radius:12px; border:1px solid #e2e8f0;">
|
|
925
|
+
<ui-progress percent="45" status-bar stroke-width="6" stroke-color="#3b82f6"></ui-progress>
|
|
926
|
+
</div>
|
|
927
|
+
<div style="background:white; padding:18px 20px; border-radius:12px; border:1px solid #e2e8f0;">
|
|
928
|
+
<ui-progress percent="72" status="interrupted" status-bar stroke-width="6" stroke-color="#f59e0b"></ui-progress>
|
|
929
|
+
</div>
|
|
930
|
+
<div style="background:white; padding:18px 20px; border-radius:12px; border:1px solid #e2e8f0;">
|
|
931
|
+
<ui-progress percent="100" status-bar stroke-width="6" stroke-color="#22c55e"></ui-progress>
|
|
932
|
+
</div>
|
|
933
|
+
</div>
|
|
934
|
+
|
|
935
|
+
<!-- Real-world context cards -->
|
|
936
|
+
<h4 style="font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:#94a3b8; margin:0 0 14px;">Real-World Usage</h4>
|
|
937
|
+
<div style="display:grid; grid-template-columns:repeat(auto-fill,minmax(260px,1fr)); gap:14px; margin-bottom:36px;">
|
|
938
|
+
|
|
939
|
+
<div style="background:white; padding:20px; border-radius:12px; border:1px solid #e2e8f0;">
|
|
940
|
+
<div style="display:flex; align-items:center; justify-content:space-between; margin-bottom:14px;">
|
|
941
|
+
<div>
|
|
942
|
+
<p style="margin:0; font-size:13px; font-weight:700; color:#0f172a;">CI/CD Pipeline</p>
|
|
943
|
+
<p style="margin:2px 0 0; font-size:11px; color:#64748b;">main → production</p>
|
|
944
|
+
</div>
|
|
945
|
+
<span style="font-size:10px; font-weight:700; background:#eff6ff; color:#3b82f6; padding:3px 8px; border-radius:20px;">DEPLOY</span>
|
|
946
|
+
</div>
|
|
947
|
+
<ui-progress percent="68" status-bar stroke-width="7" stroke-color="#3b82f6"></ui-progress>
|
|
948
|
+
</div>
|
|
949
|
+
|
|
950
|
+
<div style="background:white; padding:20px; border-radius:12px; border:1px solid #e2e8f0;">
|
|
951
|
+
<div style="display:flex; align-items:center; justify-content:space-between; margin-bottom:14px;">
|
|
952
|
+
<div>
|
|
953
|
+
<p style="margin:0; font-size:13px; font-weight:700; color:#0f172a;">File Upload</p>
|
|
954
|
+
<p style="margin:2px 0 0; font-size:11px; color:#64748b;">design-assets-v3.zip</p>
|
|
955
|
+
</div>
|
|
956
|
+
<span style="font-size:10px; font-weight:700; background:#f0fdf4; color:#16a34a; padding:3px 8px; border-radius:20px;">DONE</span>
|
|
957
|
+
</div>
|
|
958
|
+
<ui-progress percent="100" status-bar status-bar-align="right" stroke-width="7" stroke-color="#22c55e"></ui-progress>
|
|
959
|
+
</div>
|
|
960
|
+
|
|
961
|
+
<div style="background:white; padding:20px; border-radius:12px; border:1px solid #e2e8f0;">
|
|
962
|
+
<div style="display:flex; align-items:center; justify-content:space-between; margin-bottom:14px;">
|
|
963
|
+
<div>
|
|
964
|
+
<p style="margin:0; font-size:13px; font-weight:700; color:#0f172a;">Database Migration</p>
|
|
965
|
+
<p style="margin:2px 0 0; font-size:11px; color:#64748b;">prod_db → replica_eu</p>
|
|
966
|
+
</div>
|
|
967
|
+
<span style="font-size:10px; font-weight:700; background:#fffbeb; color:#d97706; padding:3px 8px; border-radius:20px;">PAUSED</span>
|
|
968
|
+
</div>
|
|
969
|
+
<ui-progress percent="41" status="interrupted" status-bar stroke-width="7" stroke-color="#f59e0b"></ui-progress>
|
|
970
|
+
</div>
|
|
971
|
+
|
|
972
|
+
<div style="background:white; padding:20px; border-radius:12px; border:1px solid #e2e8f0;">
|
|
973
|
+
<div style="display:flex; align-items:center; justify-content:space-between; margin-bottom:14px;">
|
|
974
|
+
<div>
|
|
975
|
+
<p style="margin:0; font-size:13px; font-weight:700; color:#0f172a;">Scheduled Backup</p>
|
|
976
|
+
<p style="margin:2px 0 0; font-size:11px; color:#64748b;">Starts at 03:00 UTC</p>
|
|
977
|
+
</div>
|
|
978
|
+
<span style="font-size:10px; font-weight:700; background:#f1f5f9; color:#64748b; padding:3px 8px; border-radius:20px;">QUEUED</span>
|
|
979
|
+
</div>
|
|
980
|
+
<ui-progress percent="0" status-bar status-bar-align="center" stroke-width="7"></ui-progress>
|
|
981
|
+
</div>
|
|
982
|
+
</div>
|
|
983
|
+
|
|
984
|
+
<!-- Interactive demo -->
|
|
985
|
+
<h4 style="font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:#94a3b8; margin:0 0 14px;">Interactive</h4>
|
|
986
|
+
<div style="background:white; padding:24px; border-radius:12px; border:1px solid #e2e8f0;">
|
|
987
|
+
<div style="display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin-bottom:16px;">
|
|
988
|
+
<label style="font-size:13px; font-weight:600; white-space:nowrap; color:#0f172a;">Progress: <span id="sb-val">0</span>%</label>
|
|
989
|
+
<input type="range" id="sb-slider" min="0" max="100" value="0" style="flex:1; min-width:140px;">
|
|
990
|
+
<ui-button id="sb-btn-interrupt" variant="outline" style="--ui-button-color:#d97706; --ui-button-border-color:#fde68a;">⛔ Interrupt</ui-button>
|
|
991
|
+
<ui-button id="sb-btn-reset" variant="ghost">↺ Reset</ui-button>
|
|
992
|
+
</div>
|
|
993
|
+
<div style="display:flex; align-items:center; gap:8px; margin-bottom:16px;">
|
|
994
|
+
<span style="font-size:12px; font-weight:600; color:#64748b;">Align:</span>
|
|
995
|
+
<button id="sb-align-left" data-align="left" style="padding:3px 12px; font-size:12px; font-weight:600; border-radius:6px; border:1.5px solid #3b82f6; background:#eff6ff; color:#2563eb; cursor:pointer;">Left</button>
|
|
996
|
+
<button id="sb-align-center" data-align="center" style="padding:3px 12px; font-size:12px; font-weight:600; border-radius:6px; border:1.5px solid #e2e8f0; background:#f8fafc; color:#475569; cursor:pointer;">Center</button>
|
|
997
|
+
<button id="sb-align-right" data-align="right" style="padding:3px 12px; font-size:12px; font-weight:600; border-radius:6px; border:1.5px solid #e2e8f0; background:#f8fafc; color:#475569; cursor:pointer;">Right</button>
|
|
998
|
+
</div>
|
|
999
|
+
<!-- Position and Height controls -->
|
|
1000
|
+
<div style="display:flex; align-items:center; gap:24px; flex-wrap:wrap; margin-bottom:16px; padding:12px; background:#f8fafc; border-radius:8px; border:1px solid #e2e8f0;">
|
|
1001
|
+
<div style="display:flex; align-items:center; gap:8px;">
|
|
1002
|
+
<span style="font-size:12px; font-weight:600; color:#64748b;">Position:</span>
|
|
1003
|
+
<button id="sb-pos-inside" data-pos="inside" style="padding:3px 12px; font-size:12px; font-weight:600; border-radius:6px; border:1.5px solid #3b82f6; background:#eff6ff; color:#2563eb; cursor:pointer;">Inside Bar</button>
|
|
1004
|
+
<button id="sb-pos-top" data-pos="top" style="padding:3px 12px; font-size:12px; font-weight:600; border-radius:6px; border:1.5px solid #e2e8f0; background:#f8fafc; color:#475569; cursor:pointer;">On Top</button>
|
|
1005
|
+
</div>
|
|
1006
|
+
<div style="display:flex; align-items:center; gap:8px; flex:1; min-width:200px;">
|
|
1007
|
+
<span style="font-size:12px; font-weight:600; color:#64748b; white-space:nowrap;">Bar Height: <span id="sb-height-val">8</span>px</span>
|
|
1008
|
+
<input type="range" id="sb-height-slider" min="2" max="40" value="8" style="flex:1; cursor:pointer;">
|
|
1009
|
+
</div>
|
|
1010
|
+
</div>
|
|
1011
|
+
<!-- Custom label inputs -->
|
|
1012
|
+
<div style="display:grid; grid-template-columns:repeat(auto-fill,minmax(160px,1fr)); gap:10px; margin-bottom:20px; padding:16px; background:#f8fafc; border-radius:8px; border:1px solid #e2e8f0;">
|
|
1013
|
+
<label style="display:flex; flex-direction:column; gap:4px; font-size:11px; font-weight:700; color:#64748b; text-transform:uppercase; letter-spacing:.05em;">
|
|
1014
|
+
Not Started
|
|
1015
|
+
<input id="sb-lbl-notStarted" type="text" placeholder="Not Started" value="" style="padding:5px 8px; font-size:12px; border-radius:6px; border:1px solid #e2e8f0; outline:none; background:white;">
|
|
1016
|
+
</label>
|
|
1017
|
+
<label style="display:flex; flex-direction:column; gap:4px; font-size:11px; font-weight:700; color:#64748b; text-transform:uppercase; letter-spacing:.05em;">
|
|
1018
|
+
Running
|
|
1019
|
+
<input id="sb-lbl-running" type="text" placeholder="Running" value="" style="padding:5px 8px; font-size:12px; border-radius:6px; border:1px solid #e2e8f0; outline:none; background:white;">
|
|
1020
|
+
</label>
|
|
1021
|
+
<label style="display:flex; flex-direction:column; gap:4px; font-size:11px; font-weight:700; color:#64748b; text-transform:uppercase; letter-spacing:.05em;">
|
|
1022
|
+
Interrupted
|
|
1023
|
+
<input id="sb-lbl-interrupted" type="text" placeholder="Interrupted" value="" style="padding:5px 8px; font-size:12px; border-radius:6px; border:1px solid #e2e8f0; outline:none; background:white;">
|
|
1024
|
+
</label>
|
|
1025
|
+
<label style="display:flex; flex-direction:column; gap:4px; font-size:11px; font-weight:700; color:#64748b; text-transform:uppercase; letter-spacing:.05em;">
|
|
1026
|
+
Completed
|
|
1027
|
+
<input id="sb-lbl-completed" type="text" placeholder="Completed" value="" style="padding:5px 8px; font-size:12px; border-radius:6px; border:1px solid #e2e8f0; outline:none; background:white;">
|
|
1028
|
+
</label>
|
|
1029
|
+
</div>
|
|
1030
|
+
<ui-progress id="sb-bar" percent="0" status-bar status-bar-align="left" stroke-width="8"></ui-progress>
|
|
1031
|
+
</div>
|
|
1032
|
+
|
|
1033
|
+
<!-- Usage snippet -->
|
|
1034
|
+
<h4 style="font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:#94a3b8; margin:28px 0 14px;">Usage</h4>
|
|
1035
|
+
<div style="background:#0f172a; border-radius:10px; padding:18px 22px; font-family:'Courier New',monospace; font-size:12px; line-height:1.9; color:#e2e8f0; overflow-x:auto;">
|
|
1036
|
+
<span style="color:#64748b;">/* default labels (rendered inside, forces minimum 32px height) */</span><br>
|
|
1037
|
+
<span style="color:#7dd3fc;"><ui-progress</span><span style="color:#86efac;"> percent</span><span style="color:#f8fafc;">="45"</span><span style="color:#86efac;"> status-bar</span><span style="color:#7dd3fc;">></ui-progress></span><br><br>
|
|
1038
|
+
<span style="color:#64748b;">/* status bar on top (allows custom/reduced height via stroke-width) */</span><br>
|
|
1039
|
+
<span style="color:#7dd3fc;"><ui-progress</span><span style="color:#86efac;"> percent</span><span style="color:#f8fafc;">="60"</span><span style="color:#86efac;"> status-bar</span><span style="color:#86efac;"> status-bar-position</span><span style="color:#f8fafc;">="top"</span><span style="color:#86efac;"> stroke-width</span><span style="color:#f8fafc;">="4"</span><span style="color:#7dd3fc;">></ui-progress></span><br><br>
|
|
1040
|
+
<span style="color:#64748b;">/* custom all 4 labels */</span><br>
|
|
1041
|
+
<span style="color:#7dd3fc;"><ui-progress</span><span style="color:#86efac;"> percent</span><span style="color:#f8fafc;">="55"</span><span style="color:#86efac;"> status-bar</span><br>
|
|
1042
|
+
<span style="color:#86efac;"> status-labels</span><span style="color:#f8fafc;">='{"notStarted":"Queued","running":"Uploading","interrupted":"Paused","completed":"Sent"}'</span><span style="color:#7dd3fc;">></ui-progress></span>
|
|
1043
|
+
</div>
|
|
1044
|
+
</div>
|
|
1045
|
+
`;
|
|
1046
|
+
|
|
1047
|
+
const bar = document.getElementById('sb-bar');
|
|
1048
|
+
const slider = document.getElementById('sb-slider');
|
|
1049
|
+
const valEl = document.getElementById('sb-val');
|
|
1050
|
+
const heightSlider = document.getElementById('sb-height-slider');
|
|
1051
|
+
const heightValEl = document.getElementById('sb-height-val');
|
|
1052
|
+
let interrupted = false;
|
|
1053
|
+
|
|
1054
|
+
function applyState(pct, isInterrupted) {
|
|
1055
|
+
valEl.textContent = pct;
|
|
1056
|
+
bar.setAttribute('percent', pct);
|
|
1057
|
+
if (isInterrupted) {
|
|
1058
|
+
bar.setAttribute('status', 'interrupted');
|
|
1059
|
+
bar.setAttribute('stroke-color', '#f59e0b');
|
|
1060
|
+
} else if (pct >= 100) {
|
|
1061
|
+
bar.setAttribute('status', 'completed');
|
|
1062
|
+
bar.setAttribute('stroke-color', '#22c55e');
|
|
1063
|
+
} else if (pct > 0) {
|
|
1064
|
+
bar.setAttribute('status', 'running');
|
|
1065
|
+
bar.setAttribute('stroke-color', '#3b82f6');
|
|
1066
|
+
} else {
|
|
1067
|
+
bar.removeAttribute('status');
|
|
1068
|
+
bar.setAttribute('stroke-color', '#94a3b8');
|
|
1069
|
+
}
|
|
1070
|
+
}
|
|
1071
|
+
|
|
1072
|
+
slider.addEventListener('input', e => {
|
|
1073
|
+
interrupted = false;
|
|
1074
|
+
applyState(+e.target.value, false);
|
|
1075
|
+
});
|
|
1076
|
+
document.getElementById('sb-btn-interrupt').addEventListener('click', () => {
|
|
1077
|
+
interrupted = true;
|
|
1078
|
+
applyState(+slider.value, true);
|
|
1079
|
+
});
|
|
1080
|
+
document.getElementById('sb-btn-reset').addEventListener('click', () => {
|
|
1081
|
+
interrupted = false;
|
|
1082
|
+
slider.value = 0;
|
|
1083
|
+
applyState(0, false);
|
|
1084
|
+
|
|
1085
|
+
// Reset height and position
|
|
1086
|
+
heightSlider.value = 8;
|
|
1087
|
+
heightValEl.textContent = 8;
|
|
1088
|
+
bar.setAttribute('stroke-width', 8);
|
|
1089
|
+
bar.removeAttribute('status-bar-position');
|
|
1090
|
+
|
|
1091
|
+
// Update position toggle buttons styles
|
|
1092
|
+
['inside', 'top'].forEach(p => {
|
|
1093
|
+
const btn = document.getElementById(`sb-pos-${p}`);
|
|
1094
|
+
const active = p === 'inside';
|
|
1095
|
+
btn.style.borderColor = active ? '#3b82f6' : '#e2e8f0';
|
|
1096
|
+
btn.style.background = active ? '#eff6ff' : '#f8fafc';
|
|
1097
|
+
btn.style.color = active ? '#2563eb' : '#475569';
|
|
1098
|
+
});
|
|
1099
|
+
});
|
|
1100
|
+
|
|
1101
|
+
// Alignment toggle buttons
|
|
1102
|
+
['left', 'center', 'right'].forEach(align => {
|
|
1103
|
+
document.getElementById(`sb-align-${align}`).addEventListener('click', () => {
|
|
1104
|
+
bar.setAttribute('status-bar-align', align);
|
|
1105
|
+
['left', 'center', 'right'].forEach(a => {
|
|
1106
|
+
const btn = document.getElementById(`sb-align-${a}`);
|
|
1107
|
+
const active = a === align;
|
|
1108
|
+
btn.style.borderColor = active ? '#3b82f6' : '#e2e8f0';
|
|
1109
|
+
btn.style.background = active ? '#eff6ff' : '#f8fafc';
|
|
1110
|
+
btn.style.color = active ? '#2563eb' : '#475569';
|
|
1111
|
+
});
|
|
1112
|
+
});
|
|
1113
|
+
});
|
|
1114
|
+
|
|
1115
|
+
// Position toggle buttons
|
|
1116
|
+
['inside', 'top'].forEach(pos => {
|
|
1117
|
+
document.getElementById(`sb-pos-${pos}`).addEventListener('click', () => {
|
|
1118
|
+
bar.setAttribute('status-bar-position', pos);
|
|
1119
|
+
['inside', 'top'].forEach(p => {
|
|
1120
|
+
const btn = document.getElementById(`sb-pos-${p}`);
|
|
1121
|
+
const active = p === pos;
|
|
1122
|
+
btn.style.borderColor = active ? '#3b82f6' : '#e2e8f0';
|
|
1123
|
+
btn.style.background = active ? '#eff6ff' : '#f8fafc';
|
|
1124
|
+
btn.style.color = active ? '#2563eb' : '#475569';
|
|
1125
|
+
});
|
|
1126
|
+
});
|
|
1127
|
+
});
|
|
1128
|
+
|
|
1129
|
+
// Height slider
|
|
1130
|
+
heightSlider.addEventListener('input', e => {
|
|
1131
|
+
const val = e.target.value;
|
|
1132
|
+
heightValEl.textContent = val;
|
|
1133
|
+
bar.setAttribute('stroke-width', val);
|
|
1134
|
+
});
|
|
1135
|
+
|
|
1136
|
+
// Custom label inputs — update status-labels attribute live
|
|
1137
|
+
function syncLabels() {
|
|
1138
|
+
const labels = {};
|
|
1139
|
+
['notStarted', 'running', 'interrupted', 'completed'].forEach(key => {
|
|
1140
|
+
const val = document.getElementById(`sb-lbl-${key}`)?.value.trim();
|
|
1141
|
+
if (val) labels[key] = val;
|
|
1142
|
+
});
|
|
1143
|
+
if (Object.keys(labels).length) {
|
|
1144
|
+
bar.setAttribute('status-labels', JSON.stringify(labels));
|
|
1145
|
+
} else {
|
|
1146
|
+
bar.removeAttribute('status-labels');
|
|
1147
|
+
}
|
|
1148
|
+
}
|
|
1149
|
+
['notStarted', 'running', 'interrupted', 'completed'].forEach(key => {
|
|
1150
|
+
document.getElementById(`sb-lbl-${key}`)?.addEventListener('input', syncLabels);
|
|
1151
|
+
});
|
|
1152
|
+
};
|
|
1153
|
+
|
|
461
1154
|
showProgressPlayground();
|
|
462
1155
|
}
|