@widgetic/design-system 0.3.68
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +730 -0
- package/dist/components/CopyableHeader.svelte +456 -0
- package/dist/components/CopyableHeader.svelte.d.ts +40 -0
- package/dist/components/EmptyState.svelte +145 -0
- package/dist/components/EmptyState.svelte.d.ts +36 -0
- package/dist/components/PasswordInput.svelte +46 -0
- package/dist/components/PasswordInput.svelte.d.ts +26 -0
- package/dist/components/ThumbHashImage.svelte +124 -0
- package/dist/components/ThumbHashImage.svelte.d.ts +26 -0
- package/dist/components/WScrollArea.svelte +47 -0
- package/dist/components/WScrollArea.svelte.d.ts +38 -0
- package/dist/components/debug-grid/DebugGrid.svelte +207 -0
- package/dist/components/debug-grid/DebugGrid.svelte.d.ts +32 -0
- package/dist/components/ic/browser/BrowserInputController.svelte +481 -0
- package/dist/components/ic/browser/BrowserInputController.svelte.d.ts +34 -0
- package/dist/components/ic/browser/icons/audio.svg +7 -0
- package/dist/components/ic/browser/icons/document.svg +11 -0
- package/dist/components/ic/browser/icons/error.svg +5 -0
- package/dist/components/ic/browser/icons/folder.svg +28 -0
- package/dist/components/ic/browser/icons/info-icon.svg +3 -0
- package/dist/components/ic/browser/icons/player-pause.svg +12 -0
- package/dist/components/ic/browser/icons/player-play.svg +1 -0
- package/dist/components/ic/types.d.ts +14 -0
- package/dist/components/ic/types.js +18 -0
- package/dist/components/index.d.ts +51 -0
- package/dist/components/index.js +52 -0
- package/dist/components/modals/ActionModal.svelte +189 -0
- package/dist/components/modals/ActionModal.svelte.d.ts +49 -0
- package/dist/components/modals/BaseModal.svelte +409 -0
- package/dist/components/modals/BaseModal.svelte.d.ts +38 -0
- package/dist/components/modals/NewItemDialog.svelte +189 -0
- package/dist/components/modals/NewItemDialog.svelte.d.ts +39 -0
- package/dist/components/modals/Portal.svelte +104 -0
- package/dist/components/modals/Portal.svelte.d.ts +34 -0
- package/dist/components/modals/README.md +99 -0
- package/dist/components/modals/RenameDialog.svelte +316 -0
- package/dist/components/modals/RenameDialog.svelte.d.ts +39 -0
- package/dist/components/modals/modalStore.d.ts +10 -0
- package/dist/components/modals/modalStore.js +45 -0
- package/dist/components/navigation/Breadcrumbs.svelte +348 -0
- package/dist/components/navigation/Breadcrumbs.svelte.d.ts +35 -0
- package/dist/components/navigation/index.d.ts +2 -0
- package/dist/components/navigation/index.js +2 -0
- package/dist/components/navigation/types.d.ts +12 -0
- package/dist/components/navigation/types.js +1 -0
- package/dist/components/pdf/PDFViewer.svelte +608 -0
- package/dist/components/pdf/PDFViewer.svelte.d.ts +32 -0
- package/dist/components/search-input/SearchInput.svelte +115 -0
- package/dist/components/search-input/SearchInput.svelte.d.ts +46 -0
- package/dist/components/search-input/index.d.ts +14 -0
- package/dist/components/search-input/index.js +4 -0
- package/dist/components/shad-editor/colorpicker.svelte +17 -0
- package/dist/components/shad-editor/colorpicker.svelte.d.ts +6 -0
- package/dist/components/shad-editor/custom/Extentions/ColorHighlighter.d.ts +2 -0
- package/dist/components/shad-editor/custom/Extentions/ColorHighlighter.js +25 -0
- package/dist/components/shad-editor/custom/Extentions/ImageExtention.d.ts +1 -0
- package/dist/components/shad-editor/custom/Extentions/ImageExtention.js +30 -0
- package/dist/components/shad-editor/custom/Extentions/SearchAndReplace.d.ts +57 -0
- package/dist/components/shad-editor/custom/Extentions/SearchAndReplace.js +232 -0
- package/dist/components/shad-editor/custom/Extentions/SmilieReplacer.d.ts +2 -0
- package/dist/components/shad-editor/custom/Extentions/SmilieReplacer.js +131 -0
- package/dist/components/shad-editor/custom/code-extended.svelte +78 -0
- package/dist/components/shad-editor/custom/code-extended.svelte.d.ts +4 -0
- package/dist/components/shad-editor/custom/image-extended-component.svelte +251 -0
- package/dist/components/shad-editor/custom/image-extended-component.svelte.d.ts +4 -0
- package/dist/components/shad-editor/custom/utils.d.ts +5 -0
- package/dist/components/shad-editor/custom/utils.js +35 -0
- package/dist/components/shad-editor/editor-toolbar.svelte +59 -0
- package/dist/components/shad-editor/editor-toolbar.svelte.d.ts +8 -0
- package/dist/components/shad-editor/editor.css +179 -0
- package/dist/components/shad-editor/icons/block-quote.svelte +26 -0
- package/dist/components/shad-editor/icons/block-quote.svelte.d.ts +7 -0
- package/dist/components/shad-editor/icons/bold.svelte +26 -0
- package/dist/components/shad-editor/icons/bold.svelte.d.ts +8 -0
- package/dist/components/shad-editor/icons/buttle-list.svelte +27 -0
- package/dist/components/shad-editor/icons/buttle-list.svelte.d.ts +7 -0
- package/dist/components/shad-editor/icons/code.svelte +27 -0
- package/dist/components/shad-editor/icons/code.svelte.d.ts +8 -0
- package/dist/components/shad-editor/icons/highlighter.svelte +75 -0
- package/dist/components/shad-editor/icons/highlighter.svelte.d.ts +9 -0
- package/dist/components/shad-editor/icons/image.svelte +73 -0
- package/dist/components/shad-editor/icons/image.svelte.d.ts +8 -0
- package/dist/components/shad-editor/icons/index.d.ts +22 -0
- package/dist/components/shad-editor/icons/index.js +24 -0
- package/dist/components/shad-editor/icons/italic.svelte +26 -0
- package/dist/components/shad-editor/icons/italic.svelte.d.ts +8 -0
- package/dist/components/shad-editor/icons/link.svelte +72 -0
- package/dist/components/shad-editor/icons/link.svelte.d.ts +8 -0
- package/dist/components/shad-editor/icons/ordered-list.svelte +26 -0
- package/dist/components/shad-editor/icons/ordered-list.svelte.d.ts +7 -0
- package/dist/components/shad-editor/icons/quickcolor.svelte +95 -0
- package/dist/components/shad-editor/icons/quickcolor.svelte.d.ts +7 -0
- package/dist/components/shad-editor/icons/redo.svelte +26 -0
- package/dist/components/shad-editor/icons/redo.svelte.d.ts +8 -0
- package/dist/components/shad-editor/icons/search-replace.svelte +146 -0
- package/dist/components/shad-editor/icons/search-replace.svelte.d.ts +7 -0
- package/dist/components/shad-editor/icons/strikethrough.svelte +26 -0
- package/dist/components/shad-editor/icons/strikethrough.svelte.d.ts +8 -0
- package/dist/components/shad-editor/icons/subscript.svelte +26 -0
- package/dist/components/shad-editor/icons/subscript.svelte.d.ts +8 -0
- package/dist/components/shad-editor/icons/superscript.svelte +26 -0
- package/dist/components/shad-editor/icons/superscript.svelte.d.ts +8 -0
- package/dist/components/shad-editor/icons/table.svelte +111 -0
- package/dist/components/shad-editor/icons/table.svelte.d.ts +8 -0
- package/dist/components/shad-editor/icons/task-list.svelte +26 -0
- package/dist/components/shad-editor/icons/task-list.svelte.d.ts +7 -0
- package/dist/components/shad-editor/icons/text.svelte +95 -0
- package/dist/components/shad-editor/icons/text.svelte.d.ts +7 -0
- package/dist/components/shad-editor/icons/textalign.svelte +82 -0
- package/dist/components/shad-editor/icons/textalign.svelte.d.ts +7 -0
- package/dist/components/shad-editor/icons/textcolor.svelte +75 -0
- package/dist/components/shad-editor/icons/textcolor.svelte.d.ts +8 -0
- package/dist/components/shad-editor/icons/underline.svelte +26 -0
- package/dist/components/shad-editor/icons/underline.svelte.d.ts +8 -0
- package/dist/components/shad-editor/icons/undo.svelte +26 -0
- package/dist/components/shad-editor/icons/undo.svelte.d.ts +8 -0
- package/dist/components/shad-editor/index.d.ts +4 -0
- package/dist/components/shad-editor/index.js +5 -0
- package/dist/components/shad-editor/onedark.css +87 -0
- package/dist/components/shad-editor/shad-editor.svelte +153 -0
- package/dist/components/shad-editor/shad-editor.svelte.d.ts +34 -0
- package/dist/components/toast/ToasterModal.svelte +128 -0
- package/dist/components/toast/ToasterModal.svelte.d.ts +30 -0
- package/dist/components/toast/index.d.ts +2 -0
- package/dist/components/toast/index.js +2 -0
- package/dist/components/ui/accordion/accordion-content.svelte +24 -0
- package/dist/components/ui/accordion/accordion-content.svelte.d.ts +4 -0
- package/dist/components/ui/accordion/accordion-item.svelte +12 -0
- package/dist/components/ui/accordion/accordion-item.svelte.d.ts +4 -0
- package/dist/components/ui/accordion/accordion-trigger.svelte +29 -0
- package/dist/components/ui/accordion/accordion-trigger.svelte.d.ts +7 -0
- package/dist/components/ui/accordion/index.d.ts +6 -0
- package/dist/components/ui/accordion/index.js +6 -0
- package/dist/components/ui/alert/alert-description.svelte +13 -0
- package/dist/components/ui/alert/alert-description.svelte.d.ts +28 -0
- package/dist/components/ui/alert/alert-title.svelte +21 -0
- package/dist/components/ui/alert/alert-title.svelte.d.ts +31 -0
- package/dist/components/ui/alert/alert.svelte +17 -0
- package/dist/components/ui/alert/alert.svelte.d.ts +31 -0
- package/dist/components/ui/alert/index.d.ts +43 -0
- package/dist/components/ui/alert/index.js +19 -0
- package/dist/components/ui/badge/badge.svelte +50 -0
- package/dist/components/ui/badge/badge.svelte.d.ts +60 -0
- package/dist/components/ui/badge/index.d.ts +2 -0
- package/dist/components/ui/badge/index.js +2 -0
- package/dist/components/ui/breadcrumb/breadcrumb-ellipsis.svelte +23 -0
- package/dist/components/ui/breadcrumb/breadcrumb-ellipsis.svelte.d.ts +5 -0
- package/dist/components/ui/breadcrumb/breadcrumb-item.svelte +16 -0
- package/dist/components/ui/breadcrumb/breadcrumb-item.svelte.d.ts +5 -0
- package/dist/components/ui/breadcrumb/breadcrumb-link.svelte +31 -0
- package/dist/components/ui/breadcrumb/breadcrumb-link.svelte.d.ts +11 -0
- package/dist/components/ui/breadcrumb/breadcrumb-list.svelte +23 -0
- package/dist/components/ui/breadcrumb/breadcrumb-list.svelte.d.ts +5 -0
- package/dist/components/ui/breadcrumb/breadcrumb-page.svelte +23 -0
- package/dist/components/ui/breadcrumb/breadcrumb-page.svelte.d.ts +5 -0
- package/dist/components/ui/breadcrumb/breadcrumb-separator.svelte +27 -0
- package/dist/components/ui/breadcrumb/breadcrumb-separator.svelte.d.ts +5 -0
- package/dist/components/ui/breadcrumb/breadcrumb.svelte +15 -0
- package/dist/components/ui/breadcrumb/breadcrumb.svelte.d.ts +5 -0
- package/dist/components/ui/breadcrumb/index.d.ts +8 -0
- package/dist/components/ui/breadcrumb/index.js +10 -0
- package/dist/components/ui/button/button.svelte +74 -0
- package/dist/components/ui/button/button.svelte.d.ts +118 -0
- package/dist/components/ui/button/index.d.ts +2 -0
- package/dist/components/ui/button/index.js +4 -0
- package/dist/components/ui/calendar/calendar-cell.svelte +19 -0
- package/dist/components/ui/calendar/calendar-cell.svelte.d.ts +4 -0
- package/dist/components/ui/calendar/calendar-day.svelte +30 -0
- package/dist/components/ui/calendar/calendar-day.svelte.d.ts +4 -0
- package/dist/components/ui/calendar/calendar-grid-body.svelte +12 -0
- package/dist/components/ui/calendar/calendar-grid-body.svelte.d.ts +4 -0
- package/dist/components/ui/calendar/calendar-grid-head.svelte +12 -0
- package/dist/components/ui/calendar/calendar-grid-head.svelte.d.ts +4 -0
- package/dist/components/ui/calendar/calendar-grid-row.svelte +12 -0
- package/dist/components/ui/calendar/calendar-grid-row.svelte.d.ts +4 -0
- package/dist/components/ui/calendar/calendar-grid.svelte +16 -0
- package/dist/components/ui/calendar/calendar-grid.svelte.d.ts +4 -0
- package/dist/components/ui/calendar/calendar-head-cell.svelte +16 -0
- package/dist/components/ui/calendar/calendar-head-cell.svelte.d.ts +4 -0
- package/dist/components/ui/calendar/calendar-header.svelte +16 -0
- package/dist/components/ui/calendar/calendar-header.svelte.d.ts +4 -0
- package/dist/components/ui/calendar/calendar-heading.svelte +12 -0
- package/dist/components/ui/calendar/calendar-heading.svelte.d.ts +4 -0
- package/dist/components/ui/calendar/calendar-months.svelte +20 -0
- package/dist/components/ui/calendar/calendar-months.svelte.d.ts +5 -0
- package/dist/components/ui/calendar/calendar-next-button.svelte +28 -0
- package/dist/components/ui/calendar/calendar-next-button.svelte.d.ts +4 -0
- package/dist/components/ui/calendar/calendar-prev-button.svelte +28 -0
- package/dist/components/ui/calendar/calendar-prev-button.svelte.d.ts +4 -0
- package/dist/components/ui/calendar/calendar.svelte +61 -0
- package/dist/components/ui/calendar/calendar.svelte.d.ts +5 -0
- package/dist/components/ui/calendar/index.d.ts +14 -0
- package/dist/components/ui/calendar/index.js +16 -0
- package/dist/components/ui/card/card-content.svelte +16 -0
- package/dist/components/ui/card/card-content.svelte.d.ts +5 -0
- package/dist/components/ui/card/card-description.svelte +16 -0
- package/dist/components/ui/card/card-description.svelte.d.ts +5 -0
- package/dist/components/ui/card/card-footer.svelte +16 -0
- package/dist/components/ui/card/card-footer.svelte.d.ts +5 -0
- package/dist/components/ui/card/card-header.svelte +16 -0
- package/dist/components/ui/card/card-header.svelte.d.ts +5 -0
- package/dist/components/ui/card/card-title.svelte +25 -0
- package/dist/components/ui/card/card-title.svelte.d.ts +8 -0
- package/dist/components/ui/card/card.svelte +20 -0
- package/dist/components/ui/card/card.svelte.d.ts +5 -0
- package/dist/components/ui/card/index.d.ts +7 -0
- package/dist/components/ui/card/index.js +7 -0
- package/dist/components/ui/checkbox/checkbox.svelte +35 -0
- package/dist/components/ui/checkbox/checkbox.svelte.d.ts +4 -0
- package/dist/components/ui/checkbox/index.d.ts +2 -0
- package/dist/components/ui/checkbox/index.js +4 -0
- package/dist/components/ui/collapsible/index.d.ts +16 -0
- package/dist/components/ui/collapsible/index.js +7 -0
- package/dist/components/ui/command/command-dialog.svelte +35 -0
- package/dist/components/ui/command/command-dialog.svelte.d.ts +9 -0
- package/dist/components/ui/command/command-empty.svelte +12 -0
- package/dist/components/ui/command/command-empty.svelte.d.ts +4 -0
- package/dist/components/ui/command/command-group.svelte +29 -0
- package/dist/components/ui/command/command-group.svelte.d.ts +7 -0
- package/dist/components/ui/command/command-input.svelte +25 -0
- package/dist/components/ui/command/command-input.svelte.d.ts +4 -0
- package/dist/components/ui/command/command-item.svelte +19 -0
- package/dist/components/ui/command/command-item.svelte.d.ts +4 -0
- package/dist/components/ui/command/command-link-item.svelte +19 -0
- package/dist/components/ui/command/command-link-item.svelte.d.ts +4 -0
- package/dist/components/ui/command/command-list.svelte +16 -0
- package/dist/components/ui/command/command-list.svelte.d.ts +4 -0
- package/dist/components/ui/command/command-separator.svelte +12 -0
- package/dist/components/ui/command/command-separator.svelte.d.ts +4 -0
- package/dist/components/ui/command/command-shortcut.svelte +20 -0
- package/dist/components/ui/command/command-shortcut.svelte.d.ts +5 -0
- package/dist/components/ui/command/command.svelte +21 -0
- package/dist/components/ui/command/command.svelte.d.ts +4 -0
- package/dist/components/ui/command/index.d.ts +13 -0
- package/dist/components/ui/command/index.js +15 -0
- package/dist/components/ui/dialog/dialog-content.svelte +38 -0
- package/dist/components/ui/dialog/dialog-content.svelte.d.ts +9 -0
- package/dist/components/ui/dialog/dialog-description.svelte +16 -0
- package/dist/components/ui/dialog/dialog-description.svelte.d.ts +4 -0
- package/dist/components/ui/dialog/dialog-footer.svelte +20 -0
- package/dist/components/ui/dialog/dialog-footer.svelte.d.ts +5 -0
- package/dist/components/ui/dialog/dialog-header.svelte +20 -0
- package/dist/components/ui/dialog/dialog-header.svelte.d.ts +5 -0
- package/dist/components/ui/dialog/dialog-overlay.svelte +19 -0
- package/dist/components/ui/dialog/dialog-overlay.svelte.d.ts +4 -0
- package/dist/components/ui/dialog/dialog-title.svelte +16 -0
- package/dist/components/ui/dialog/dialog-title.svelte.d.ts +4 -0
- package/dist/components/ui/dialog/index.d.ts +12 -0
- package/dist/components/ui/dialog/index.js +14 -0
- package/dist/components/ui/drawer/drawer-content.svelte +30 -0
- package/dist/components/ui/drawer/drawer-content.svelte.d.ts +7 -0
- package/dist/components/ui/drawer/drawer-description.svelte +16 -0
- package/dist/components/ui/drawer/drawer-description.svelte.d.ts +4 -0
- package/dist/components/ui/drawer/drawer-footer.svelte +16 -0
- package/dist/components/ui/drawer/drawer-footer.svelte.d.ts +5 -0
- package/dist/components/ui/drawer/drawer-header.svelte +20 -0
- package/dist/components/ui/drawer/drawer-header.svelte.d.ts +5 -0
- package/dist/components/ui/drawer/drawer-nested.svelte +12 -0
- package/dist/components/ui/drawer/drawer-nested.svelte.d.ts +3 -0
- package/dist/components/ui/drawer/drawer-overlay.svelte +16 -0
- package/dist/components/ui/drawer/drawer-overlay.svelte.d.ts +4 -0
- package/dist/components/ui/drawer/drawer-title.svelte +16 -0
- package/dist/components/ui/drawer/drawer-title.svelte.d.ts +4 -0
- package/dist/components/ui/drawer/drawer.svelte +12 -0
- package/dist/components/ui/drawer/drawer.svelte.d.ts +3 -0
- package/dist/components/ui/drawer/index.d.ts +13 -0
- package/dist/components/ui/drawer/index.js +15 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +40 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte.d.ts +8 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte +26 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte.d.ts +7 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte +19 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte.d.ts +7 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte +23 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte.d.ts +7 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte +23 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte.d.ts +8 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +30 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte.d.ts +4 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte +16 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte.d.ts +4 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte +20 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte.d.ts +5 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte +19 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte.d.ts +4 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +28 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte.d.ts +7 -0
- package/dist/components/ui/dropdown-menu/index.d.ts +25 -0
- package/dist/components/ui/dropdown-menu/index.js +17 -0
- package/dist/components/ui/hover-card/hover-card-content.svelte +28 -0
- package/dist/components/ui/hover-card/hover-card-content.svelte.d.ts +7 -0
- package/dist/components/ui/hover-card/index.d.ts +5 -0
- package/dist/components/ui/hover-card/index.js +5 -0
- package/dist/components/ui/input/index.d.ts +2 -0
- package/dist/components/ui/input/index.js +4 -0
- package/dist/components/ui/input/input.svelte +22 -0
- package/dist/components/ui/input/input.svelte.d.ts +5 -0
- package/dist/components/ui/input-otp/index.d.ts +5 -0
- package/dist/components/ui/input-otp/index.js +7 -0
- package/dist/components/ui/input-otp/input-otp-group.svelte +16 -0
- package/dist/components/ui/input-otp/input-otp-group.svelte.d.ts +5 -0
- package/dist/components/ui/input-otp/input-otp-separator.svelte +19 -0
- package/dist/components/ui/input-otp/input-otp-separator.svelte.d.ts +5 -0
- package/dist/components/ui/input-otp/input-otp-slot.svelte +30 -0
- package/dist/components/ui/input-otp/input-otp-slot.svelte.d.ts +12 -0
- package/dist/components/ui/input-otp/input-otp.svelte +22 -0
- package/dist/components/ui/input-otp/input-otp.svelte.d.ts +3 -0
- package/dist/components/ui/label/index.d.ts +2 -0
- package/dist/components/ui/label/index.js +4 -0
- package/dist/components/ui/label/label.svelte +19 -0
- package/dist/components/ui/label/label.svelte.d.ts +4 -0
- package/dist/components/ui/popover/index.d.ts +6 -0
- package/dist/components/ui/popover/index.js +6 -0
- package/dist/components/ui/popover/popover-content.svelte +28 -0
- package/dist/components/ui/popover/popover-content.svelte.d.ts +7 -0
- package/dist/components/ui/progress/index.d.ts +2 -0
- package/dist/components/ui/progress/index.js +4 -0
- package/dist/components/ui/progress/progress.svelte +25 -0
- package/dist/components/ui/progress/progress.svelte.d.ts +4 -0
- package/dist/components/ui/radio-group/index.d.ts +3 -0
- package/dist/components/ui/radio-group/index.js +5 -0
- package/dist/components/ui/radio-group/radio-group-item.svelte +28 -0
- package/dist/components/ui/radio-group/radio-group-item.svelte.d.ts +4 -0
- package/dist/components/ui/radio-group/radio-group.svelte +13 -0
- package/dist/components/ui/radio-group/radio-group.svelte.d.ts +4 -0
- package/dist/components/ui/range-calendar/index.d.ts +15 -0
- package/dist/components/ui/range-calendar/index.js +17 -0
- package/dist/components/ui/range-calendar/range-calendar-cell.svelte +19 -0
- package/dist/components/ui/range-calendar/range-calendar-cell.svelte.d.ts +4 -0
- package/dist/components/ui/range-calendar/range-calendar-day.svelte +34 -0
- package/dist/components/ui/range-calendar/range-calendar-day.svelte.d.ts +4 -0
- package/dist/components/ui/range-calendar/range-calendar-grid-row.svelte +12 -0
- package/dist/components/ui/range-calendar/range-calendar-grid-row.svelte.d.ts +4 -0
- package/dist/components/ui/range-calendar/range-calendar-grid.svelte +16 -0
- package/dist/components/ui/range-calendar/range-calendar-grid.svelte.d.ts +4 -0
- package/dist/components/ui/range-calendar/range-calendar-head-cell.svelte +16 -0
- package/dist/components/ui/range-calendar/range-calendar-head-cell.svelte.d.ts +4 -0
- package/dist/components/ui/range-calendar/range-calendar-header.svelte +16 -0
- package/dist/components/ui/range-calendar/range-calendar-header.svelte.d.ts +4 -0
- package/dist/components/ui/range-calendar/range-calendar-heading.svelte +16 -0
- package/dist/components/ui/range-calendar/range-calendar-heading.svelte.d.ts +4 -0
- package/dist/components/ui/range-calendar/range-calendar-months.svelte +20 -0
- package/dist/components/ui/range-calendar/range-calendar-months.svelte.d.ts +5 -0
- package/dist/components/ui/range-calendar/range-calendar-next-button.svelte +28 -0
- package/dist/components/ui/range-calendar/range-calendar-next-button.svelte.d.ts +4 -0
- package/dist/components/ui/range-calendar/range-calendar-prev-button.svelte +28 -0
- package/dist/components/ui/range-calendar/range-calendar-prev-button.svelte.d.ts +4 -0
- package/dist/components/ui/range-calendar/range-calendar.svelte +57 -0
- package/dist/components/ui/range-calendar/range-calendar.svelte.d.ts +5 -0
- package/dist/components/ui/scroll-area/index.d.ts +3 -0
- package/dist/components/ui/scroll-area/index.js +6 -0
- package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte +29 -0
- package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte.d.ts +4 -0
- package/dist/components/ui/scroll-area/scroll-area.svelte +32 -0
- package/dist/components/ui/scroll-area/scroll-area.svelte.d.ts +9 -0
- package/dist/components/ui/select/index.d.ts +11 -0
- package/dist/components/ui/select/index.js +13 -0
- package/dist/components/ui/select/select-content.svelte +39 -0
- package/dist/components/ui/select/select-content.svelte.d.ts +7 -0
- package/dist/components/ui/select/select-group-heading.svelte +16 -0
- package/dist/components/ui/select/select-group-heading.svelte.d.ts +4 -0
- package/dist/components/ui/select/select-item.svelte +37 -0
- package/dist/components/ui/select/select-item.svelte.d.ts +4 -0
- package/dist/components/ui/select/select-scroll-down-button.svelte +19 -0
- package/dist/components/ui/select/select-scroll-down-button.svelte.d.ts +4 -0
- package/dist/components/ui/select/select-scroll-up-button.svelte +19 -0
- package/dist/components/ui/select/select-scroll-up-button.svelte.d.ts +4 -0
- package/dist/components/ui/select/select-separator.svelte +13 -0
- package/dist/components/ui/select/select-separator.svelte.d.ts +4 -0
- package/dist/components/ui/select/select-trigger.svelte +24 -0
- package/dist/components/ui/select/select-trigger.svelte.d.ts +4 -0
- package/dist/components/ui/separator/index.d.ts +2 -0
- package/dist/components/ui/separator/index.js +4 -0
- package/dist/components/ui/separator/separator.svelte +22 -0
- package/dist/components/ui/separator/separator.svelte.d.ts +4 -0
- package/dist/components/ui/slider/index.d.ts +3 -0
- package/dist/components/ui/slider/index.js +5 -0
- package/dist/components/ui/slider/slider.svelte +34 -0
- package/dist/components/ui/slider/slider.svelte.d.ts +4 -0
- package/dist/components/ui/sonner/index.d.ts +2 -0
- package/dist/components/ui/sonner/index.js +2 -0
- package/dist/components/ui/sonner/sonner.svelte +20 -0
- package/dist/components/ui/sonner/sonner.svelte.d.ts +4 -0
- package/dist/components/ui/switch/index.d.ts +2 -0
- package/dist/components/ui/switch/index.js +4 -0
- package/dist/components/ui/switch/switch.svelte +27 -0
- package/dist/components/ui/switch/switch.svelte.d.ts +4 -0
- package/dist/components/ui/table/index.d.ts +9 -0
- package/dist/components/ui/table/index.js +11 -0
- package/dist/components/ui/table/table-body.svelte +16 -0
- package/dist/components/ui/table/table-body.svelte.d.ts +5 -0
- package/dist/components/ui/table/table-caption.svelte +16 -0
- package/dist/components/ui/table/table-caption.svelte.d.ts +5 -0
- package/dist/components/ui/table/table-cell.svelte +20 -0
- package/dist/components/ui/table/table-cell.svelte.d.ts +5 -0
- package/dist/components/ui/table/table-footer.svelte +16 -0
- package/dist/components/ui/table/table-footer.svelte.d.ts +5 -0
- package/dist/components/ui/table/table-head.svelte +23 -0
- package/dist/components/ui/table/table-head.svelte.d.ts +5 -0
- package/dist/components/ui/table/table-header.svelte +16 -0
- package/dist/components/ui/table/table-header.svelte.d.ts +5 -0
- package/dist/components/ui/table/table-row.svelte +23 -0
- package/dist/components/ui/table/table-row.svelte.d.ts +5 -0
- package/dist/components/ui/table/table.svelte +18 -0
- package/dist/components/ui/table/table.svelte.d.ts +5 -0
- package/dist/components/ui/tabs/index.d.ts +6 -0
- package/dist/components/ui/tabs/index.js +8 -0
- package/dist/components/ui/tabs/tabs-content.svelte +19 -0
- package/dist/components/ui/tabs/tabs-content.svelte.d.ts +4 -0
- package/dist/components/ui/tabs/tabs-list.svelte +19 -0
- package/dist/components/ui/tabs/tabs-list.svelte.d.ts +4 -0
- package/dist/components/ui/tabs/tabs-trigger.svelte +19 -0
- package/dist/components/ui/tabs/tabs-trigger.svelte.d.ts +4 -0
- package/dist/components/ui/textarea/index.d.ts +19 -0
- package/dist/components/ui/textarea/index.js +4 -0
- package/dist/components/ui/textarea/textarea.svelte +22 -0
- package/dist/components/ui/textarea/textarea.svelte.d.ts +5 -0
- package/dist/components/ui/toggle/index.d.ts +3 -0
- package/dist/components/ui/toggle/index.js +5 -0
- package/dist/components/ui/toggle/toggle.svelte +51 -0
- package/dist/components/ui/toggle/toggle.svelte.d.ts +83 -0
- package/dist/components/ui/toggle-group/index.d.ts +3 -0
- package/dist/components/ui/toggle-group/index.js +5 -0
- package/dist/components/ui/toggle-group/toggle-group-item.svelte +30 -0
- package/dist/components/ui/toggle-group/toggle-group-item.svelte.d.ts +6 -0
- package/dist/components/ui/toggle-group/toggle-group.svelte +41 -0
- package/dist/components/ui/toggle-group/toggle-group.svelte.d.ts +8 -0
- package/dist/components/ui/tooltip/index.d.ts +6 -0
- package/dist/components/ui/tooltip/index.js +8 -0
- package/dist/components/ui/tooltip/tooltip-content.svelte +21 -0
- package/dist/components/ui/tooltip/tooltip-content.svelte.d.ts +4 -0
- package/dist/components/widget-system/EditableWidget.svelte +106 -0
- package/dist/components/widget-system/EditableWidget.svelte.d.ts +44 -0
- package/dist/components/widget-system/Moveable.svelte +661 -0
- package/dist/components/widget-system/Moveable.svelte.d.ts +56 -0
- package/dist/components/widget-system/index.d.ts +2 -0
- package/dist/components/widget-system/index.js +3 -0
- package/dist/fonts/BLMelody/BLMelody-Bold.woff2 +0 -0
- package/dist/fonts/BLMelody/BLMelody-Medium.woff2 +0 -0
- package/dist/fonts/BLMelody/BLMelody-SemiBold.woff2 +0 -0
- package/dist/fonts/Riegla/Riegla-Bold Italic.otf +0 -0
- package/dist/fonts/Riegla/Riegla-Bold.otf +0 -0
- package/dist/fonts/Riegla/Riegla-Italic.otf +0 -0
- package/dist/fonts/Riegla/Riegla-Regular.otf +0 -0
- package/dist/fonts/Riegla/RieglaMedium-Regular.otf +0 -0
- package/dist/fonts/index.d.ts +0 -0
- package/dist/fonts/index.js +1 -0
- package/dist/hooks/is-mobile.svelte.d.ts +5 -0
- package/dist/hooks/is-mobile.svelte.js +23 -0
- package/dist/icons/Checked.svelte +19 -0
- package/dist/icons/Checked.svelte.d.ts +20 -0
- package/dist/icons/CheckerBoardBackground.svelte +16 -0
- package/dist/icons/CheckerBoardBackground.svelte.d.ts +3 -0
- package/dist/icons/Close.svelte +22 -0
- package/dist/icons/Close.svelte.d.ts +20 -0
- package/dist/icons/Close.svg +8 -0
- package/dist/icons/Error.svg +5 -0
- package/dist/icons/Exclamation.svelte +5 -0
- package/dist/icons/Exclamation.svelte.d.ts +26 -0
- package/dist/icons/FileBrowser.svelte +38 -0
- package/dist/icons/FileBrowser.svelte.d.ts +20 -0
- package/dist/icons/FileBrowser.svg +28 -0
- package/dist/icons/LogoWidgetic.svelte +24 -0
- package/dist/icons/LogoWidgetic.svelte.d.ts +20 -0
- package/dist/icons/LogoWidgeticType.svelte +12 -0
- package/dist/icons/LogoWidgeticType.svelte.d.ts +20 -0
- package/dist/icons/LogoWidgeticType.svg +4 -0
- package/dist/icons/OpacitySliderArrows.svelte +46 -0
- package/dist/icons/OpacitySliderArrows.svelte.d.ts +3 -0
- package/dist/icons/TestIcon.svelte +1 -0
- package/dist/icons/TestIcon.svelte.d.ts +26 -0
- package/dist/icons/checked.svg +4 -0
- package/dist/icons/index.d.ts +11 -0
- package/dist/icons/index.js +15 -0
- package/dist/icons/lucide.d.ts +1 -0
- package/dist/icons/lucide.js +1 -0
- package/dist/icons/tabler.d.ts +1 -0
- package/dist/icons/tabler.js +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +9 -0
- package/dist/stores/index.d.ts +1 -0
- package/dist/stores/index.js +1 -0
- package/dist/stores/pdfCache.d.ts +16 -0
- package/dist/stores/pdfCache.js +101 -0
- package/dist/styles/fonts.css +172 -0
- package/dist/styles/global.css +893 -0
- package/dist/utils/MediaManager.d.ts +35 -0
- package/dist/utils/MediaManager.js +59 -0
- package/dist/utils.d.ts +2 -0
- package/dist/utils.js +5 -0
- package/package.json +183 -0
- package/tailwind.config.ts +97 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
<!-- Portal component for mounting elements outside their normal DOM hierarchy -->
|
|
2
|
+
<script lang="ts">
|
|
3
|
+
import { onMount, onDestroy } from 'svelte';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Component props
|
|
7
|
+
*/
|
|
8
|
+
let defaultTarget: string = 'portal-element';
|
|
9
|
+
export let target: string | HTMLElement | undefined = defaultTarget;
|
|
10
|
+
export let clickThrough = false; // Whether to allow click events to pass through
|
|
11
|
+
// Class
|
|
12
|
+
let className = '';
|
|
13
|
+
export { className as class };
|
|
14
|
+
// Style prop
|
|
15
|
+
export let style = '';
|
|
16
|
+
export let clientWidth = 0;
|
|
17
|
+
export let clientHeight = 0;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Local Variables
|
|
21
|
+
*/
|
|
22
|
+
let host: HTMLElement; // host(target) container of the portal: parent target of the portal
|
|
23
|
+
let portal: HTMLElement; // root portal element
|
|
24
|
+
// show logs
|
|
25
|
+
let showLogs = false;
|
|
26
|
+
|
|
27
|
+
onMount(() => {
|
|
28
|
+
if(showLogs) console.log('DS Portal target:', target);
|
|
29
|
+
// If target is an HTML element, use it directly
|
|
30
|
+
if (target instanceof HTMLElement) {
|
|
31
|
+
if(showLogs) console.log('DS Portal target is an HTML element:', target);
|
|
32
|
+
host = target;
|
|
33
|
+
} else {
|
|
34
|
+
// Make sure target is not empty, use default if it is
|
|
35
|
+
const targetSelector = `.${target || defaultTarget}`;
|
|
36
|
+
|
|
37
|
+
// find host container in the DOM
|
|
38
|
+
host = document.querySelector(targetSelector) as HTMLElement;
|
|
39
|
+
if(showLogs) console.log('DS Portal host:', host, 'target:', target, 'targetSelector:', targetSelector);
|
|
40
|
+
|
|
41
|
+
// Create host container if it doesn't exist
|
|
42
|
+
if (!host) {
|
|
43
|
+
// Create host container in the root of the document
|
|
44
|
+
host = document.createElement('div');
|
|
45
|
+
|
|
46
|
+
// add the class to the host
|
|
47
|
+
host.classList.add(target || defaultTarget);
|
|
48
|
+
// host.dataset.portal = target;
|
|
49
|
+
|
|
50
|
+
// append the host to the document's body
|
|
51
|
+
document.body.appendChild(host);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if(showLogs) console.log('DS Portal target:', target, 'host:', host, 'portal:', portal);
|
|
56
|
+
|
|
57
|
+
// Move the portal content to the host
|
|
58
|
+
if (portal) host.appendChild(portal);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
onDestroy(() => {
|
|
62
|
+
// Additional cleanup on component destroy
|
|
63
|
+
if (portal && host && host.contains(portal)) {
|
|
64
|
+
host.removeChild(portal);
|
|
65
|
+
}
|
|
66
|
+
// Remove host if empty
|
|
67
|
+
if (host && host.childNodes.length === 0) {
|
|
68
|
+
host.remove();
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
</script>
|
|
72
|
+
|
|
73
|
+
<!-- Portal Container -->
|
|
74
|
+
<div bind:this={portal}
|
|
75
|
+
class="{className ? `${className} ` : ''}portal-contents{clickThrough ? ' click-through' : ''}"
|
|
76
|
+
style={style}
|
|
77
|
+
bind:clientWidth
|
|
78
|
+
bind:clientHeight
|
|
79
|
+
>
|
|
80
|
+
<slot />
|
|
81
|
+
</div>
|
|
82
|
+
|
|
83
|
+
<style>
|
|
84
|
+
/* Use contents to prevent extra DOM nesting */
|
|
85
|
+
.portal-contents {
|
|
86
|
+
position: absolute;
|
|
87
|
+
top: 0;
|
|
88
|
+
left: 0;
|
|
89
|
+
width: 100%;
|
|
90
|
+
height: 100%;
|
|
91
|
+
z-index: 99999999;
|
|
92
|
+
pointer-events: none;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
:global(.portal-contents > *) {
|
|
96
|
+
pointer-events: auto;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/* Click through styles */
|
|
100
|
+
:global(.portal-contents.click-through),
|
|
101
|
+
:global(.portal-contents.click-through *) {
|
|
102
|
+
pointer-events: none !important;
|
|
103
|
+
}
|
|
104
|
+
</style>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
2
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
3
|
+
$$bindings?: Bindings;
|
|
4
|
+
} & Exports;
|
|
5
|
+
(internal: unknown, props: Props & {
|
|
6
|
+
$$events?: Events;
|
|
7
|
+
$$slots?: Slots;
|
|
8
|
+
}): Exports & {
|
|
9
|
+
$set?: any;
|
|
10
|
+
$on?: any;
|
|
11
|
+
};
|
|
12
|
+
z_$$bindings?: Bindings;
|
|
13
|
+
}
|
|
14
|
+
type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
|
|
15
|
+
default: any;
|
|
16
|
+
} ? Props extends Record<string, never> ? any : {
|
|
17
|
+
children?: any;
|
|
18
|
+
} : {});
|
|
19
|
+
declare const Portal: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
|
|
20
|
+
target?: string | HTMLElement | undefined;
|
|
21
|
+
clickThrough?: boolean;
|
|
22
|
+
class?: string;
|
|
23
|
+
style?: string;
|
|
24
|
+
clientWidth?: number;
|
|
25
|
+
clientHeight?: number;
|
|
26
|
+
}, {
|
|
27
|
+
default: {};
|
|
28
|
+
}>, {
|
|
29
|
+
[evt: string]: CustomEvent<any>;
|
|
30
|
+
}, {
|
|
31
|
+
default: {};
|
|
32
|
+
}, {}, string>;
|
|
33
|
+
type Portal = InstanceType<typeof Portal>;
|
|
34
|
+
export default Portal;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Modal Components
|
|
2
|
+
|
|
3
|
+
## ActionModal Component
|
|
4
|
+
|
|
5
|
+
The `ActionModal` component is a reusable confirmation modal that can be used across different parts of the project for confirming deletion actions.
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
- Independent of any specific store or state management system
|
|
10
|
+
- Customizable title, message, and button labels
|
|
11
|
+
- Works with any type of items to be deleted
|
|
12
|
+
- Dispatches events for both confirmation and cancellation
|
|
13
|
+
- Maintains backwards compatibility with the FileBrowser implementation
|
|
14
|
+
|
|
15
|
+
### Props
|
|
16
|
+
|
|
17
|
+
| Prop | Type | Default | Description |
|
|
18
|
+
|------|------|---------|-------------|
|
|
19
|
+
| `isOpen` | boolean | `false` | Controls the visibility of the modal |
|
|
20
|
+
| `items` | array | `[]` | Array of items to be deleted |
|
|
21
|
+
| `title` | string | `''` | Custom title for the modal (autogenerated if empty) |
|
|
22
|
+
| `message` | string | `''` | Custom message for the modal (autogenerated if empty) |
|
|
23
|
+
| `confirmLabel` | string | `'Confirm'` | Label for the confirm button |
|
|
24
|
+
| `cancelLabel` | string | `'Cancel'` | Label for the cancel button |
|
|
25
|
+
| `width` | string | `'410px'` | Width of the modal |
|
|
26
|
+
| `height` | string | `'168px'` | Height of the modal |
|
|
27
|
+
| `modalId` | string | `'delete-confirmation-modal'` | ID for targeting the modal |
|
|
28
|
+
| `modalType` | string | `'deleteConfirmation'` | Type for the modal (for backwards compatibility) |
|
|
29
|
+
| `modalData` | any | `null` | Data for the modal (for backwards compatibility) |
|
|
30
|
+
|
|
31
|
+
### Events
|
|
32
|
+
|
|
33
|
+
- `delete` - Dispatched when the user confirms deletion, with `items` in the event detail
|
|
34
|
+
- `cancel` - Dispatched when the user cancels deletion
|
|
35
|
+
|
|
36
|
+
### Usage Example
|
|
37
|
+
|
|
38
|
+
```svelte
|
|
39
|
+
<script>
|
|
40
|
+
import { ActionModal } from '$lib/components/modals';
|
|
41
|
+
|
|
42
|
+
let showDeleteConfirmation = false;
|
|
43
|
+
let itemsToDelete = [
|
|
44
|
+
{ name: 'Document.pdf', type: 'file' },
|
|
45
|
+
{ name: 'Images', type: 'folder' }
|
|
46
|
+
];
|
|
47
|
+
|
|
48
|
+
function handleDelete(event) {
|
|
49
|
+
const { items } = event.detail;
|
|
50
|
+
console.log('Deleting items:', items);
|
|
51
|
+
// Perform deletion logic here
|
|
52
|
+
}
|
|
53
|
+
</script>
|
|
54
|
+
|
|
55
|
+
<button on:click={() => showDeleteConfirmation = true}>
|
|
56
|
+
Delete Items
|
|
57
|
+
</button>
|
|
58
|
+
|
|
59
|
+
<ActionModal
|
|
60
|
+
bind:isOpen={showDeleteConfirmation}
|
|
61
|
+
items={itemsToDelete}
|
|
62
|
+
on:confirm={handleDelete}
|
|
63
|
+
on:cancel={() => console.log('Deletion cancelled')}
|
|
64
|
+
/>
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### FileBrowser Integration
|
|
68
|
+
|
|
69
|
+
When using the component in the FileBrowser, make sure to:
|
|
70
|
+
|
|
71
|
+
1. Handle clearing selections from the persistentSelectStore in the parent component
|
|
72
|
+
2. Provide the correct modalId for the FileBrowser context
|
|
73
|
+
|
|
74
|
+
```svelte
|
|
75
|
+
<ActionModal
|
|
76
|
+
bind:isOpen={showDeleteConfirmation}
|
|
77
|
+
items={selectedItems}
|
|
78
|
+
target="file-browser-module"
|
|
79
|
+
on:confirm={handleDelete}
|
|
80
|
+
on:cancel={() => {
|
|
81
|
+
showDeleteConfirmation = false;
|
|
82
|
+
}}
|
|
83
|
+
/>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Custom Title and Message Example
|
|
87
|
+
|
|
88
|
+
You can provide custom title and message for specific contexts:
|
|
89
|
+
|
|
90
|
+
```svelte
|
|
91
|
+
<ActionModal
|
|
92
|
+
bind:isOpen={showDeleteConfirmation}
|
|
93
|
+
items={selectedItems}
|
|
94
|
+
title="Delete Assets"
|
|
95
|
+
message="These assets will be permanently deleted. This action cannot be undone."
|
|
96
|
+
confirmLabel="Delete Permanently"
|
|
97
|
+
on:confirm={handleDelete}
|
|
98
|
+
/>
|
|
99
|
+
```
|
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
// Svelte imports
|
|
3
|
+
import { createEventDispatcher, onMount, tick } from 'svelte';
|
|
4
|
+
|
|
5
|
+
// Local imports
|
|
6
|
+
import { Button } from '../ui/button';
|
|
7
|
+
// import { toast } from '../ui/sonner';
|
|
8
|
+
import { showToast } from '../toast';
|
|
9
|
+
import BaseModal from './BaseModal.svelte';
|
|
10
|
+
|
|
11
|
+
// Props
|
|
12
|
+
let className = '';
|
|
13
|
+
export { className as class };
|
|
14
|
+
export let style: string = '';
|
|
15
|
+
//
|
|
16
|
+
export let isOpen = false;
|
|
17
|
+
export let itemName = '';
|
|
18
|
+
export let itemType = 'item'; // 'item', 'folder', 'file', 'key', etc.
|
|
19
|
+
export let itemId = '';
|
|
20
|
+
export let title = '';
|
|
21
|
+
export let placeholder = '';
|
|
22
|
+
export let confirmLabel = 'Rename';
|
|
23
|
+
export let cancelLabel = 'Cancel';
|
|
24
|
+
export let width = '410px';
|
|
25
|
+
export let height = '168px';
|
|
26
|
+
export let target: string = 'rename-dialog'; // target for Portal
|
|
27
|
+
export let maxLength = 200;
|
|
28
|
+
export let shouldUseCustomRenameFunction = false; // If true, parent component handles the rename
|
|
29
|
+
|
|
30
|
+
// For backwards compatibility with specific implementations
|
|
31
|
+
export let modalType: string = 'rename';
|
|
32
|
+
export let modalData: any = null;
|
|
33
|
+
|
|
34
|
+
let inputValue = '';
|
|
35
|
+
let inputElement: HTMLInputElement;
|
|
36
|
+
let preventFocusSteal = false;
|
|
37
|
+
let hasAttemptedSubmit = false; // Track if user has attempted to submit
|
|
38
|
+
let isValid = false; // Track if input is valid
|
|
39
|
+
|
|
40
|
+
// Initialize modalData with our current props if not provided externally
|
|
41
|
+
$: if (modalData === null) {
|
|
42
|
+
modalData = {
|
|
43
|
+
itemName,
|
|
44
|
+
itemType,
|
|
45
|
+
itemId,
|
|
46
|
+
title,
|
|
47
|
+
placeholder,
|
|
48
|
+
confirmLabel,
|
|
49
|
+
cancelLabel
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Update validation state whenever inputValue changes
|
|
54
|
+
$: {
|
|
55
|
+
isValid = inputValue.trim().length > 0 &&
|
|
56
|
+
inputValue.length <= maxLength &&
|
|
57
|
+
inputValue !== itemName;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Computed placeholder based on itemType
|
|
61
|
+
$: computedPlaceholder = placeholder || `${itemType} name...`;
|
|
62
|
+
|
|
63
|
+
// Function to focus and select the input text
|
|
64
|
+
async function focusAndSelectInput() {
|
|
65
|
+
// Wait for the DOM to update
|
|
66
|
+
await tick();
|
|
67
|
+
|
|
68
|
+
if (!inputElement) return;
|
|
69
|
+
|
|
70
|
+
// Set flag to prevent focus stealing
|
|
71
|
+
preventFocusSteal = true;
|
|
72
|
+
|
|
73
|
+
// Focus the input
|
|
74
|
+
inputElement.focus();
|
|
75
|
+
|
|
76
|
+
// Select all text
|
|
77
|
+
inputElement.setSelectionRange(0, inputElement.value.length);
|
|
78
|
+
|
|
79
|
+
// Keep the flag active for a while to prevent focus stealing
|
|
80
|
+
setTimeout(() => {
|
|
81
|
+
preventFocusSteal = false;
|
|
82
|
+
}, 1000);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// Simple function to handle input initialization
|
|
86
|
+
function handleInput(event: Event) {
|
|
87
|
+
const input = event.target as HTMLInputElement;
|
|
88
|
+
inputValue = input.value.slice(0, maxLength);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// When the modal opens, set the input value and focus the input
|
|
92
|
+
$: if (isOpen) {
|
|
93
|
+
inputValue = itemName;
|
|
94
|
+
hasAttemptedSubmit = false; // Reset submission state
|
|
95
|
+
// Schedule focus after a short delay
|
|
96
|
+
setTimeout(focusAndSelectInput, 50);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// Use onMount to set up event listeners to prevent focus stealing
|
|
100
|
+
onMount(() => {
|
|
101
|
+
// Create a function to handle mousedown events
|
|
102
|
+
const handleMouseDown = (e: MouseEvent) => {
|
|
103
|
+
// If we're trying to prevent focus stealing and the click is outside our input
|
|
104
|
+
if (preventFocusSteal && inputElement && !inputElement.contains(e.target as Node)) {
|
|
105
|
+
// Prevent the default action (focus change)
|
|
106
|
+
e.preventDefault();
|
|
107
|
+
e.stopPropagation();
|
|
108
|
+
|
|
109
|
+
// Refocus our input
|
|
110
|
+
inputElement.focus();
|
|
111
|
+
|
|
112
|
+
// Reselect the text
|
|
113
|
+
inputElement.setSelectionRange(0, inputElement.value.length);
|
|
114
|
+
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
// Add the event listener to the document
|
|
120
|
+
document.addEventListener('mousedown', handleMouseDown, true);
|
|
121
|
+
|
|
122
|
+
// Clean up when the component is destroyed
|
|
123
|
+
return () => {
|
|
124
|
+
document.removeEventListener('mousedown', handleMouseDown, true);
|
|
125
|
+
};
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
const dispatch = createEventDispatcher();
|
|
129
|
+
|
|
130
|
+
async function handleRename() {
|
|
131
|
+
hasAttemptedSubmit = true;
|
|
132
|
+
|
|
133
|
+
try {
|
|
134
|
+
// Validate input
|
|
135
|
+
if (!inputValue.trim() || inputValue.length < 1) {
|
|
136
|
+
showToast('error', 'Invalid name', { description: 'Name must be at least 1 character long' });
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (inputValue.length > maxLength) {
|
|
141
|
+
showToast('error', 'Invalid name', { description: `Name must be ${maxLength} characters or less` });
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (inputValue === itemName) {
|
|
146
|
+
showToast('error', 'Invalid name', { description: 'Please enter a different name' });
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
console.log('Attempting rename:', {
|
|
151
|
+
from: itemName,
|
|
152
|
+
to: inputValue,
|
|
153
|
+
itemId
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
// If parent component handles rename, dispatch event
|
|
157
|
+
if (shouldUseCustomRenameFunction) {
|
|
158
|
+
dispatch('rename', { itemId, newName: inputValue, oldName: itemName });
|
|
159
|
+
isOpen = false;
|
|
160
|
+
} else {
|
|
161
|
+
// For file browser compatibility - in a real implementation, this would be replaced
|
|
162
|
+
// with a more generic approach
|
|
163
|
+
try {
|
|
164
|
+
// Simulate success
|
|
165
|
+
showToast('success', `Successfully renamed to ${inputValue}`);
|
|
166
|
+
dispatch('rename', { itemId, newName: inputValue, oldName: itemName });
|
|
167
|
+
isOpen = false;
|
|
168
|
+
} catch (error) {
|
|
169
|
+
console.error('Error during rename:', error);
|
|
170
|
+
showToast('error', 'Failed to rename item');
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
} catch (error) {
|
|
174
|
+
console.error('Error during rename:', error);
|
|
175
|
+
showToast('error', 'Failed to rename item');
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
function handleClose() {
|
|
180
|
+
isOpen = false;
|
|
181
|
+
hasAttemptedSubmit = false;
|
|
182
|
+
dispatch('cancel');
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// Support for restoring modal state
|
|
186
|
+
function handleRestore(event: CustomEvent) {
|
|
187
|
+
if (event.detail) {
|
|
188
|
+
itemName = event.detail.itemName || '';
|
|
189
|
+
itemType = event.detail.itemType || 'item';
|
|
190
|
+
itemId = event.detail.itemId || '';
|
|
191
|
+
if (event.detail.title) title = event.detail.title;
|
|
192
|
+
if (event.detail.placeholder) placeholder = event.detail.placeholder;
|
|
193
|
+
if (event.detail.confirmLabel) confirmLabel = event.detail.confirmLabel;
|
|
194
|
+
if (event.detail.cancelLabel) cancelLabel = event.detail.cancelLabel;
|
|
195
|
+
|
|
196
|
+
// Reset input value on restore
|
|
197
|
+
inputValue = itemName;
|
|
198
|
+
|
|
199
|
+
// Focus and select text when modal is restored
|
|
200
|
+
setTimeout(focusAndSelectInput, 50);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
</script>
|
|
204
|
+
|
|
205
|
+
<BaseModal
|
|
206
|
+
bind:open={isOpen}
|
|
207
|
+
on:close={handleClose}
|
|
208
|
+
{target}
|
|
209
|
+
title={title || undefined}
|
|
210
|
+
width={width}
|
|
211
|
+
height={height}
|
|
212
|
+
titlePadding="small"
|
|
213
|
+
{modalType}
|
|
214
|
+
{modalData}
|
|
215
|
+
on:restore={handleRestore}
|
|
216
|
+
>
|
|
217
|
+
<div class="{className ? `${className} ` : ''}rename-dialog-container h-full flex flex-col gap-4 min-h-[136px] justify-between" style={style}>
|
|
218
|
+
|
|
219
|
+
<!-- Input Container -->
|
|
220
|
+
<div class="input-container flex flex-col items-center pt-6">
|
|
221
|
+
<!-- Simple native input with minimal event handlers -->
|
|
222
|
+
<input
|
|
223
|
+
type="text"
|
|
224
|
+
bind:value={inputValue}
|
|
225
|
+
bind:this={inputElement}
|
|
226
|
+
oninput={handleInput}
|
|
227
|
+
onkeydown={(e) => {
|
|
228
|
+
if (e.key === 'Escape') {
|
|
229
|
+
handleClose();
|
|
230
|
+
} else {
|
|
231
|
+
e.stopPropagation(); // Stop all keyboard events except Escape from bubbling up
|
|
232
|
+
if (e.key === 'Enter') {
|
|
233
|
+
e.preventDefault();
|
|
234
|
+
handleRename();
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}}
|
|
238
|
+
onfocus={(e) => {
|
|
239
|
+
const target = e.target as HTMLInputElement;
|
|
240
|
+
target.placeholder = "";
|
|
241
|
+
|
|
242
|
+
// Select all text
|
|
243
|
+
setTimeout(() => {
|
|
244
|
+
if (target) {
|
|
245
|
+
target.setSelectionRange(0, target.value.length);
|
|
246
|
+
}
|
|
247
|
+
}, 0);
|
|
248
|
+
}}
|
|
249
|
+
onblur={(e) => {
|
|
250
|
+
// Only allow blur if we're not preventing focus stealing
|
|
251
|
+
if (preventFocusSteal) {
|
|
252
|
+
// Refocus immediately
|
|
253
|
+
setTimeout(() => {
|
|
254
|
+
if (inputElement) {
|
|
255
|
+
inputElement.focus();
|
|
256
|
+
inputElement.setSelectionRange(0, inputElement.value.length);
|
|
257
|
+
}
|
|
258
|
+
}, 0);
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
const target = e.target as HTMLInputElement;
|
|
263
|
+
target.placeholder = computedPlaceholder;
|
|
264
|
+
}}
|
|
265
|
+
required
|
|
266
|
+
class="w-full h5 text-[24px] text-[hsl(var(--grey7))] text-center
|
|
267
|
+
bg-transparent border-none focus:outline-none focus:ring-0
|
|
268
|
+
placeholder:text-[24px] placeholder:text-[hsl(var(--grey3))]
|
|
269
|
+
{!isValid && hasAttemptedSubmit ? 'input-error' : ''}"
|
|
270
|
+
maxlength={maxLength}
|
|
271
|
+
data-min-length="1"
|
|
272
|
+
placeholder={computedPlaceholder}
|
|
273
|
+
/>
|
|
274
|
+
{#if !isValid && hasAttemptedSubmit}
|
|
275
|
+
<div class="text-xs text-[hsl(var(--error))] mt-1">
|
|
276
|
+
{inputValue.trim().length === 0 ? 'Please enter a name' :
|
|
277
|
+
inputValue === itemName ? 'Please enter a different name' :
|
|
278
|
+
'Please enter a valid name'}
|
|
279
|
+
</div>
|
|
280
|
+
{/if}
|
|
281
|
+
</div>
|
|
282
|
+
|
|
283
|
+
<!-- Buttons Container -->
|
|
284
|
+
<div class="buttons-container flex justify-center gap-4">
|
|
285
|
+
<Button
|
|
286
|
+
type="button"
|
|
287
|
+
variant="secondary"
|
|
288
|
+
class="modal-btn-secondary !h-[34px]"
|
|
289
|
+
onclick={handleClose}
|
|
290
|
+
>
|
|
291
|
+
{cancelLabel}
|
|
292
|
+
</Button>
|
|
293
|
+
<Button
|
|
294
|
+
type="submit"
|
|
295
|
+
class="modal-btn-primary !h-[34px]"
|
|
296
|
+
onclick={handleRename}
|
|
297
|
+
disabled={!isValid}
|
|
298
|
+
>
|
|
299
|
+
{confirmLabel}
|
|
300
|
+
</Button>
|
|
301
|
+
</div>
|
|
302
|
+
</div>
|
|
303
|
+
</BaseModal>
|
|
304
|
+
|
|
305
|
+
<style>
|
|
306
|
+
:global(.input-error) {
|
|
307
|
+
animation: shake 0.4s ease-in-out;
|
|
308
|
+
border-bottom: 1px solid hsl(var(--error)) !important;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
@keyframes shake {
|
|
312
|
+
0%, 100% { transform: translateX(0); }
|
|
313
|
+
25% { transform: translateX(-5px); }
|
|
314
|
+
75% { transform: translateX(5px); }
|
|
315
|
+
}
|
|
316
|
+
</style>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
2
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
3
|
+
$$bindings?: Bindings;
|
|
4
|
+
} & Exports;
|
|
5
|
+
(internal: unknown, props: Props & {
|
|
6
|
+
$$events?: Events;
|
|
7
|
+
$$slots?: Slots;
|
|
8
|
+
}): Exports & {
|
|
9
|
+
$set?: any;
|
|
10
|
+
$on?: any;
|
|
11
|
+
};
|
|
12
|
+
z_$$bindings?: Bindings;
|
|
13
|
+
}
|
|
14
|
+
declare const RenameDialog: $$__sveltets_2_IsomorphicComponent<{
|
|
15
|
+
class?: string;
|
|
16
|
+
style?: string;
|
|
17
|
+
isOpen?: boolean;
|
|
18
|
+
itemName?: string;
|
|
19
|
+
itemType?: string;
|
|
20
|
+
itemId?: string;
|
|
21
|
+
title?: string;
|
|
22
|
+
placeholder?: string;
|
|
23
|
+
confirmLabel?: string;
|
|
24
|
+
cancelLabel?: string;
|
|
25
|
+
width?: string;
|
|
26
|
+
height?: string;
|
|
27
|
+
target?: string;
|
|
28
|
+
maxLength?: number;
|
|
29
|
+
shouldUseCustomRenameFunction?: boolean;
|
|
30
|
+
modalType?: string;
|
|
31
|
+
modalData?: any;
|
|
32
|
+
}, {
|
|
33
|
+
rename: CustomEvent<any>;
|
|
34
|
+
cancel: CustomEvent<any>;
|
|
35
|
+
} & {
|
|
36
|
+
[evt: string]: CustomEvent<any>;
|
|
37
|
+
}, {}, {}, string>;
|
|
38
|
+
type RenameDialog = InstanceType<typeof RenameDialog>;
|
|
39
|
+
export default RenameDialog;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface ModalState {
|
|
2
|
+
isOpen: boolean;
|
|
3
|
+
modalType?: string;
|
|
4
|
+
data?: any;
|
|
5
|
+
}
|
|
6
|
+
export declare const modalState: import("svelte/store").Writable<ModalState>;
|
|
7
|
+
export declare const isModalOpen: import("svelte/store").Writable<boolean>;
|
|
8
|
+
export declare function openModal(modalType?: string, data?: any): void;
|
|
9
|
+
export declare function closeModal(): void;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { writable } from 'svelte/store';
|
|
2
|
+
// import { browser } from '$app/environment';
|
|
3
|
+
const browser = typeof window !== 'undefined';
|
|
4
|
+
let showLogs = false;
|
|
5
|
+
// Get initial state from localStorage if available
|
|
6
|
+
const getInitialState = () => {
|
|
7
|
+
if (browser) {
|
|
8
|
+
const stored = localStorage.getItem('modal-state');
|
|
9
|
+
if (stored) {
|
|
10
|
+
const parsedState = JSON.parse(stored);
|
|
11
|
+
if (showLogs)
|
|
12
|
+
console.log('Restored modal state:', parsedState);
|
|
13
|
+
return parsedState;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return { isOpen: false };
|
|
17
|
+
};
|
|
18
|
+
// Create a store to track modal state
|
|
19
|
+
export const modalState = writable(getInitialState());
|
|
20
|
+
// Derived store for backward compatibility
|
|
21
|
+
export const isModalOpen = writable(getInitialState().isOpen);
|
|
22
|
+
// Subscribe to changes and update localStorage
|
|
23
|
+
if (browser) {
|
|
24
|
+
modalState.subscribe(state => {
|
|
25
|
+
if (showLogs)
|
|
26
|
+
console.log('Saving modal state:', state);
|
|
27
|
+
localStorage.setItem('modal-state', JSON.stringify(state));
|
|
28
|
+
isModalOpen.set(state.isOpen);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
// Helper functions to manage modal state
|
|
32
|
+
export function openModal(modalType, data) {
|
|
33
|
+
if (showLogs)
|
|
34
|
+
console.log('Opening modal:', { modalType, data });
|
|
35
|
+
modalState.set({
|
|
36
|
+
isOpen: true,
|
|
37
|
+
modalType,
|
|
38
|
+
data
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
export function closeModal() {
|
|
42
|
+
if (showLogs)
|
|
43
|
+
console.log('Closing modal');
|
|
44
|
+
modalState.set({ isOpen: false });
|
|
45
|
+
}
|