@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,409 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
// Svelte imports
|
|
3
|
+
import { fade, scale } from 'svelte/transition';
|
|
4
|
+
import { cubicOut } from 'svelte/easing';
|
|
5
|
+
import { createEventDispatcher, onMount } from 'svelte';
|
|
6
|
+
const dispatch = createEventDispatcher();
|
|
7
|
+
|
|
8
|
+
// Design system componentsimports
|
|
9
|
+
import { Button, WScrollArea, Portal } from '..';
|
|
10
|
+
import { IconX } from '../../icons';
|
|
11
|
+
|
|
12
|
+
// Modal store
|
|
13
|
+
import { modalState, openModal, closeModal } from './modalStore';
|
|
14
|
+
|
|
15
|
+
/* COMPONENT PROPS */
|
|
16
|
+
// class and style props
|
|
17
|
+
let className = '';
|
|
18
|
+
export { className as class };
|
|
19
|
+
export let style: string = '';
|
|
20
|
+
// modal dimensions
|
|
21
|
+
export let width: string = '808px';
|
|
22
|
+
export let height: string = '500px';
|
|
23
|
+
// modal props
|
|
24
|
+
export let modalType: string | undefined = undefined;
|
|
25
|
+
export let modalData: any = undefined;
|
|
26
|
+
// portal target
|
|
27
|
+
export let target: string = '';
|
|
28
|
+
// title props
|
|
29
|
+
export let title: string | undefined = undefined;
|
|
30
|
+
export let titlePadding: 'small' | 'large' = 'large';
|
|
31
|
+
// modal state props
|
|
32
|
+
export let open = false;
|
|
33
|
+
export let enableSpaceKey = false;
|
|
34
|
+
export let isSelected = false;
|
|
35
|
+
export let showScroll = false;
|
|
36
|
+
|
|
37
|
+
// children prop(svelte 5) to replace the traditional slot(svelte 4)
|
|
38
|
+
export let children: any;
|
|
39
|
+
|
|
40
|
+
/* CONSTANTS */
|
|
41
|
+
// Modal transition and style variables
|
|
42
|
+
const transitionDuration = 200;
|
|
43
|
+
const backdropOpacity = '0.4';
|
|
44
|
+
const backdropBlur = '4px';
|
|
45
|
+
const easing = cubicOut;
|
|
46
|
+
|
|
47
|
+
// Update constants for modal constraints
|
|
48
|
+
const PADDING = 24; // Consistent padding for sides and bottom
|
|
49
|
+
|
|
50
|
+
/* STATE VARIABLES */
|
|
51
|
+
// Add viewport dimension state
|
|
52
|
+
let viewportWidth = 0;
|
|
53
|
+
let viewportHeight = 0;
|
|
54
|
+
|
|
55
|
+
// Modal vars
|
|
56
|
+
let modalHeight = 0; // Height of the modal including borders that's why binded to offsetHeight
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
// All Content Container vars
|
|
60
|
+
const contentPadding = 16;
|
|
61
|
+
let allContentHeight = 0;
|
|
62
|
+
$: allContentHeight = 2 * contentPadding + titleHeight + contentHolderHeight;
|
|
63
|
+
|
|
64
|
+
// Title vars
|
|
65
|
+
let titleHeight = 0;
|
|
66
|
+
|
|
67
|
+
// Content only vars
|
|
68
|
+
let contentHolderHeight = 0;
|
|
69
|
+
$: contentAvailableHeight = modalHeight - (2 * contentPadding + titleHeight);
|
|
70
|
+
let updateContentDimInterval:any;
|
|
71
|
+
|
|
72
|
+
// Show logs
|
|
73
|
+
let showLogs = false;
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
/* METHODS */
|
|
77
|
+
function toggleUpdateContentDimensions(flag: boolean = true) {
|
|
78
|
+
if (!flag) {
|
|
79
|
+
clearInterval(updateContentDimInterval);
|
|
80
|
+
updateContentDimInterval = undefined;
|
|
81
|
+
} else {
|
|
82
|
+
// updateContentDimInterval = setInterval(() => {updateViewportDimensions()}, 200);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* LIFECYCLE HOOKS
|
|
88
|
+
* */
|
|
89
|
+
// Check stored state on mount and reopen if needed
|
|
90
|
+
onMount(() => {
|
|
91
|
+
if ($modalState.isOpen && !open) {
|
|
92
|
+
if(showLogs) console.log('Checking modal restoration:', {
|
|
93
|
+
currentType: modalType,
|
|
94
|
+
storedType: $modalState.modalType,
|
|
95
|
+
storedData: $modalState.data
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
// Only reopen if this is the correct modal type
|
|
99
|
+
if ($modalState.modalType === modalType) {
|
|
100
|
+
if(showLogs) console.log('Restoring modal state for:', modalType);
|
|
101
|
+
open = true;
|
|
102
|
+
modalData = $modalState.data;
|
|
103
|
+
dispatch('restore', $modalState.data);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// Initialize update content dimensions
|
|
108
|
+
// updateViewportDimensions();
|
|
109
|
+
|
|
110
|
+
// Add keydown listener
|
|
111
|
+
window.addEventListener('keydown', handleKeydown);
|
|
112
|
+
|
|
113
|
+
// Add resize listener
|
|
114
|
+
// window.addEventListener('resize', updateViewportDimensions);
|
|
115
|
+
|
|
116
|
+
return () => {
|
|
117
|
+
// window.removeEventListener('resize', updateViewportDimensions);
|
|
118
|
+
window.removeEventListener('keydown', handleKeydown);
|
|
119
|
+
|
|
120
|
+
// Close the modal if it is open
|
|
121
|
+
if (open) {
|
|
122
|
+
closeModal();
|
|
123
|
+
toggleUpdateContentDimensions(false);
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
// Function to update viewport dimensions
|
|
129
|
+
function updateViewportDimensions() {// not used anymore
|
|
130
|
+
// read window width and height
|
|
131
|
+
// viewportWidth = window.innerWidth;
|
|
132
|
+
// viewportHeight = window.innerHeight;
|
|
133
|
+
|
|
134
|
+
// update the conetent holder height
|
|
135
|
+
// setTimeout(() => {
|
|
136
|
+
allContentHeight = 2 * contentPadding + titleHeight + contentHolderHeight;
|
|
137
|
+
if(showLogs) console.log('Modal current height:', allContentHeight);
|
|
138
|
+
// let availableHeight = modalHeight - 2 * contentPadding;
|
|
139
|
+
// if(showLogs) console.log('Modal current height:', allContentHeight, availableHeight);
|
|
140
|
+
// contentHolderHeight = allContentHeight > availableHeight ? (availableHeight - titleHeight) + 'px' : 'auto';
|
|
141
|
+
// modalFinalHeight = titleHeight + contentHeight + 2 * PADDING;
|
|
142
|
+
// if(showLogs) console.log('Modal current height:', modalHeight, modalFinalHeight);
|
|
143
|
+
// modalFinalHeight = Math.min(modalHeight, contentCurrentHeight);
|
|
144
|
+
// }, 10);
|
|
145
|
+
// if(showLogs) console.log('Updating viewport dimensions:', viewportWidth, viewportHeight);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// Reactive Statement to Calculate dynamic modal position and dimensions
|
|
149
|
+
$: modalStyle = (() => {
|
|
150
|
+
if (viewportWidth === 0 || viewportHeight === 0) {
|
|
151
|
+
// Return default styles during SSR
|
|
152
|
+
return {
|
|
153
|
+
width: width,
|
|
154
|
+
height: height,
|
|
155
|
+
maxWidth: `calc(100vw - ${2 * PADDING}px)`,
|
|
156
|
+
maxHeight: `calc(100vh - ${2 * PADDING}px)`,
|
|
157
|
+
top: '50%',
|
|
158
|
+
transform: 'translateY(-50%)'
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// Parse provided dimensions
|
|
163
|
+
const providedWidth = parseInt(width);
|
|
164
|
+
const providedHeight = parseInt(height);
|
|
165
|
+
|
|
166
|
+
// Calculate maximum dimensions
|
|
167
|
+
const maxWidth = viewportWidth - (2 * PADDING);
|
|
168
|
+
const maxHeight = viewportHeight - (2 * PADDING);
|
|
169
|
+
|
|
170
|
+
// Calculate actual dimensions
|
|
171
|
+
const actualWidth = Math.min(providedWidth, maxWidth);
|
|
172
|
+
const actualHeight = Math.min(providedHeight, maxHeight);
|
|
173
|
+
|
|
174
|
+
// If the actual height is less than maxHeight, center it vertically(but ensure it never goes above PADDING
|
|
175
|
+
const centeredTop = Math.max(PADDING, (viewportHeight - actualHeight) / 2);
|
|
176
|
+
|
|
177
|
+
// Return the calculated styles
|
|
178
|
+
return {
|
|
179
|
+
width: `${actualWidth}px`,
|
|
180
|
+
height: `${actualHeight}px`,
|
|
181
|
+
maxWidth: `${maxWidth}px`,
|
|
182
|
+
maxHeight: `${maxHeight}px`,
|
|
183
|
+
top: `${centeredTop}px`,
|
|
184
|
+
transform: 'none'
|
|
185
|
+
};
|
|
186
|
+
})();
|
|
187
|
+
|
|
188
|
+
function handleKeydown(event: KeyboardEvent) {
|
|
189
|
+
// Only log keyboard events that we actually handle
|
|
190
|
+
if (['Backspace', 'Escape', 'Space'].includes(event.key)) {
|
|
191
|
+
if(showLogs) console.log('Modal handling key:', event.key, 'Target:', (event.target as HTMLElement).tagName);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
const target = event.target as HTMLElement;
|
|
195
|
+
const isInput = target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable;
|
|
196
|
+
|
|
197
|
+
// Let input fields handle their own events
|
|
198
|
+
if (isInput) {
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
// Prevent backspace navigation when not in input
|
|
203
|
+
if (event.key === 'Backspace') {
|
|
204
|
+
event.preventDefault();
|
|
205
|
+
event.stopPropagation();
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
if (event.key === 'Escape') {
|
|
210
|
+
handleClose();
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
if (enableSpaceKey && open && event.code === 'Space') {
|
|
214
|
+
event.preventDefault();
|
|
215
|
+
event.stopPropagation();
|
|
216
|
+
dispatch('spaceKey');
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
function handleClose() {
|
|
221
|
+
if(showLogs) console.log('handleClose');
|
|
222
|
+
|
|
223
|
+
// change the open state to false
|
|
224
|
+
open = false;
|
|
225
|
+
|
|
226
|
+
// Close the modal
|
|
227
|
+
closeModal();
|
|
228
|
+
|
|
229
|
+
// Stop updating the content dimensions
|
|
230
|
+
toggleUpdateContentDimensions(false);
|
|
231
|
+
|
|
232
|
+
// Dispatch close event
|
|
233
|
+
dispatch('close');
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
// Only update the modal store when the open state actually changes
|
|
237
|
+
let previousOpen = open;
|
|
238
|
+
$: if (open !== previousOpen) {
|
|
239
|
+
previousOpen = open;
|
|
240
|
+
|
|
241
|
+
if(showLogs) console.log('Modal open state changed:', { open, modalType, modalData });
|
|
242
|
+
|
|
243
|
+
// Open the modal if the open state is true
|
|
244
|
+
if (open) {
|
|
245
|
+
openModal(modalType, modalData);
|
|
246
|
+
toggleUpdateContentDimensions(true);
|
|
247
|
+
} else {
|
|
248
|
+
closeModal();
|
|
249
|
+
toggleUpdateContentDimensions(false);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// Improved backdrop click handler
|
|
254
|
+
function handleBackdropClick(event: MouseEvent) {
|
|
255
|
+
// Prevent any propagation
|
|
256
|
+
event.preventDefault();
|
|
257
|
+
event.stopPropagation();
|
|
258
|
+
|
|
259
|
+
// Only handle clicks directly on the backdrop
|
|
260
|
+
if (event.target === event.currentTarget) {
|
|
261
|
+
if(showLogs) console.log('Modal backdrop clicked!', event.type);
|
|
262
|
+
handleClose();
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
</script>
|
|
266
|
+
|
|
267
|
+
{#if open}
|
|
268
|
+
<Portal class="{className ? className + ' ' : ''}base-modal-portal"
|
|
269
|
+
target={target || `modal-${modalType || 'default'}`}
|
|
270
|
+
style={style}
|
|
271
|
+
bind:clientWidth={viewportWidth}
|
|
272
|
+
bind:clientHeight={viewportHeight}
|
|
273
|
+
>
|
|
274
|
+
<!-- Backdrop Container with blur restricted to file browser -->
|
|
275
|
+
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
276
|
+
<!-- svelte-ignore a11y_click_events_have_key_events -->
|
|
277
|
+
<div
|
|
278
|
+
class="modal-backdrop-container absolute inset-0 pointer-events-auto"
|
|
279
|
+
style="background-color: rgba(15, 32, 16, {backdropOpacity}); backdrop-filter: blur({backdropBlur}); z-index: 999;"
|
|
280
|
+
|
|
281
|
+
transition:fade={{ duration: transitionDuration, easing }}
|
|
282
|
+
on:mousedown={handleBackdropClick}
|
|
283
|
+
on:click={handleBackdropClick}
|
|
284
|
+
></div>
|
|
285
|
+
|
|
286
|
+
<!-- Close button -->
|
|
287
|
+
<div class="modal-close-bt-container absolute top-4 right-4 z-[1004]" transition:fade={{ duration: transitionDuration, easing }}>
|
|
288
|
+
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
289
|
+
<!-- svelte-ignore a11y-no-static-element-interactions -->
|
|
290
|
+
<div
|
|
291
|
+
class="close-button widgetic-colors p-0 w-10 h-10 bg-[hsl(var(--dark))] hover:bg-[hsl(var(--grey6))] transition-colors duration-200 rounded-full flex items-center justify-center cursor-pointer"
|
|
292
|
+
on:click|stopPropagation|preventDefault={handleClose}
|
|
293
|
+
aria-label="Close modal"
|
|
294
|
+
role="button"
|
|
295
|
+
tabindex="0"
|
|
296
|
+
>
|
|
297
|
+
<IconX class="!w-[24px] !h-[24px] text-white" />
|
|
298
|
+
</div>
|
|
299
|
+
</div>
|
|
300
|
+
|
|
301
|
+
<!-- Modal Main Container -->
|
|
302
|
+
<div
|
|
303
|
+
class="modal-root-container absolute w-full h-full inset-x-0 flex justify-center pointer-events-none items-center"
|
|
304
|
+
style="z-index: 1000;"
|
|
305
|
+
>
|
|
306
|
+
<!-- Modal Content Container -->
|
|
307
|
+
<div
|
|
308
|
+
class="modal-content-inner-container fixed pointer-events-auto mx-6 overflow-hidden
|
|
309
|
+
bg-white modal-shadow widgetic-colors rounded-medium widgetic-radius
|
|
310
|
+
border select-text {isSelected && modalType === 'filePreview' ? 'border-[hsl(var(--grey1))]' : 'border-[hsl(var(--grey1))]'}"
|
|
311
|
+
style="
|
|
312
|
+
width: {modalStyle.width};
|
|
313
|
+
height: {allContentHeight}px;
|
|
314
|
+
min-width: {2 * contentPadding + 100}px;
|
|
315
|
+
min-height: {2 * contentPadding + 50}px;
|
|
316
|
+
max-width: {modalStyle.maxWidth};
|
|
317
|
+
max-height: {modalStyle.maxHeight};
|
|
318
|
+
padding: {contentPadding}px 0;
|
|
319
|
+
user-select: text;
|
|
320
|
+
-webkit-user-select: text;
|
|
321
|
+
-moz-user-select: text;
|
|
322
|
+
-ms-user-select: text;
|
|
323
|
+
z-index: 1003;
|
|
324
|
+
"
|
|
325
|
+
bind:offsetHeight={modalHeight}
|
|
326
|
+
in:scale={{ duration: transitionDuration, start: 0.95, opacity: 0, easing }}
|
|
327
|
+
out:scale={{ duration: transitionDuration, start: 0.95, opacity: 0, easing }}
|
|
328
|
+
on:click|stopPropagation
|
|
329
|
+
>
|
|
330
|
+
<!-- Content Title -->
|
|
331
|
+
{#if title}
|
|
332
|
+
<div bind:clientHeight={titleHeight}
|
|
333
|
+
class="modal-title-container h5 text-[hsl(var(--grey7))] overflow-hidden
|
|
334
|
+
text-center px-4 {titlePadding === 'small' ? 'pb-2' : 'pb-4'}">
|
|
335
|
+
{title}
|
|
336
|
+
</div>
|
|
337
|
+
{/if}
|
|
338
|
+
|
|
339
|
+
<!-- Content Slot Container -->
|
|
340
|
+
{#snippet contentSlot()}
|
|
341
|
+
<div class="modal-content-slot-container w-full" bind:clientHeight={contentHolderHeight}>
|
|
342
|
+
{@render children()}
|
|
343
|
+
</div>
|
|
344
|
+
{/snippet}
|
|
345
|
+
|
|
346
|
+
<!-- Content with Scroll Area -->
|
|
347
|
+
{#if showScroll}
|
|
348
|
+
<WScrollArea class="modal-content-container scroll-container" type="always" scrollOutside={true}
|
|
349
|
+
style="height: {contentAvailableHeight}px"
|
|
350
|
+
>
|
|
351
|
+
{@render contentSlot()}
|
|
352
|
+
</WScrollArea>
|
|
353
|
+
{:else}
|
|
354
|
+
<div class="modal-content-container"
|
|
355
|
+
style="height: {contentAvailableHeight}px;"
|
|
356
|
+
>
|
|
357
|
+
{@render contentSlot()}
|
|
358
|
+
</div>
|
|
359
|
+
{/if}
|
|
360
|
+
|
|
361
|
+
</div>
|
|
362
|
+
</div>
|
|
363
|
+
</Portal>
|
|
364
|
+
{/if}
|
|
365
|
+
|
|
366
|
+
<style>
|
|
367
|
+
.modal-content-container {
|
|
368
|
+
width: 100%;
|
|
369
|
+
height: 100%;
|
|
370
|
+
overflow: hidden;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
/* Add specific styling for the backdrop to ensure it captures all clicks */
|
|
374
|
+
.modal-backdrop-container {
|
|
375
|
+
pointer-events: all !important;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
:global(.ScrollAreaViewport) {
|
|
379
|
+
width: 100%;
|
|
380
|
+
height: 100%;
|
|
381
|
+
border-radius: inherit;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
:global(.ScrollAreaScrollbar[data-state='hidden']) {
|
|
385
|
+
display: none;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
/* Ensure text selection works in modals */
|
|
389
|
+
:global(.base-modal-portal),
|
|
390
|
+
:global(.modal-content-inner-container),
|
|
391
|
+
:global(.modal-content-root-container) {
|
|
392
|
+
user-select: text !important;
|
|
393
|
+
-webkit-user-select: text !important;
|
|
394
|
+
-moz-user-select: text !important;
|
|
395
|
+
-ms-user-select: text !important;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
/* Ensure text selection works in input fields */
|
|
399
|
+
:global(.base-modal-portal input),
|
|
400
|
+
:global(.base-modal-portal textarea),
|
|
401
|
+
:global(.base-modal-portal select),
|
|
402
|
+
:global(.base-modal-portal [contenteditable="true"]) {
|
|
403
|
+
user-select: text !important;
|
|
404
|
+
-webkit-user-select: text !important;
|
|
405
|
+
-moz-user-select: text !important;
|
|
406
|
+
-ms-user-select: text !important;
|
|
407
|
+
cursor: text !important;
|
|
408
|
+
}
|
|
409
|
+
</style>
|
|
@@ -0,0 +1,38 @@
|
|
|
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 BaseModal: $$__sveltets_2_IsomorphicComponent<{
|
|
15
|
+
class?: string;
|
|
16
|
+
style?: string;
|
|
17
|
+
width?: string;
|
|
18
|
+
height?: string;
|
|
19
|
+
modalType?: string | undefined;
|
|
20
|
+
modalData?: any;
|
|
21
|
+
target?: string;
|
|
22
|
+
title?: string | undefined;
|
|
23
|
+
titlePadding?: "small" | "large";
|
|
24
|
+
open?: boolean;
|
|
25
|
+
enableSpaceKey?: boolean;
|
|
26
|
+
isSelected?: boolean;
|
|
27
|
+
showScroll?: boolean;
|
|
28
|
+
children: any;
|
|
29
|
+
}, {
|
|
30
|
+
click: MouseEvent;
|
|
31
|
+
restore: CustomEvent<any>;
|
|
32
|
+
spaceKey: CustomEvent<any>;
|
|
33
|
+
close: CustomEvent<any>;
|
|
34
|
+
} & {
|
|
35
|
+
[evt: string]: CustomEvent<any>;
|
|
36
|
+
}, {}, {}, string>;
|
|
37
|
+
type BaseModal = InstanceType<typeof BaseModal>;
|
|
38
|
+
export default BaseModal;
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
// Svelte imports
|
|
3
|
+
import { createEventDispatcher } from 'svelte';
|
|
4
|
+
const dispatch = createEventDispatcher();
|
|
5
|
+
|
|
6
|
+
// Design system imports
|
|
7
|
+
import { Button } from '../ui/button';
|
|
8
|
+
import { Input } from '../ui/input';
|
|
9
|
+
import { toast } from '../ui/sonner';
|
|
10
|
+
// Import BaseModal as a default import using relative path, similar to RenameDialog
|
|
11
|
+
import BaseModal from './BaseModal.svelte';
|
|
12
|
+
|
|
13
|
+
// Props
|
|
14
|
+
let className = '';
|
|
15
|
+
export { className as class };
|
|
16
|
+
export let style: string = '';
|
|
17
|
+
//
|
|
18
|
+
export let isOpen = false;
|
|
19
|
+
export let title = ''; // Make title optional
|
|
20
|
+
export let showTitle = true; // Whether to show a title at all
|
|
21
|
+
export let itemType = "item"; // "folder", "file", "project", etc.
|
|
22
|
+
export let placeholder = `${itemType} name...`;
|
|
23
|
+
export let target: string = 'new-item-dialog'; // target for Portal
|
|
24
|
+
export let currentPath: string[] = [];
|
|
25
|
+
export let currentPathNames: string[] = [];
|
|
26
|
+
export let confirmLabel = "Create";
|
|
27
|
+
export let cancelLabel = "Cancel";
|
|
28
|
+
export let modalType: string = "newItem";
|
|
29
|
+
export let modalWidth = "410px";
|
|
30
|
+
export let modalHeight = "168px";
|
|
31
|
+
export let maxLength = 200;
|
|
32
|
+
export let modalData: Record<string, any> = {};
|
|
33
|
+
|
|
34
|
+
// Local state
|
|
35
|
+
let itemName = '';
|
|
36
|
+
let isValid = false;
|
|
37
|
+
let hasAttemptedSubmit = false; // Track if user has attempted to submit
|
|
38
|
+
|
|
39
|
+
// Compute title based on itemType if not provided
|
|
40
|
+
$: displayTitle = title || `New ${itemType.charAt(0).toUpperCase() + itemType.slice(1)}`;
|
|
41
|
+
|
|
42
|
+
$: if (isOpen) {
|
|
43
|
+
itemName = '';
|
|
44
|
+
hasAttemptedSubmit = false;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
$: {
|
|
48
|
+
isValid = itemName.trim().length > 0 && itemName.length <= maxLength;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function handleSubmit() {
|
|
52
|
+
hasAttemptedSubmit = true;
|
|
53
|
+
|
|
54
|
+
if (!itemName.trim() || itemName.length < 1) {
|
|
55
|
+
// Show error toast for empty item name
|
|
56
|
+
toast.error(`Invalid ${itemType} name`, {
|
|
57
|
+
description: `Please enter a ${itemType} name`
|
|
58
|
+
});
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (itemName.length > maxLength) {
|
|
63
|
+
// Show error toast for name too long
|
|
64
|
+
toast.error(`Invalid ${itemType} name`, {
|
|
65
|
+
description: `${itemType} name cannot exceed ${maxLength} characters`
|
|
66
|
+
});
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
console.log(`Creating ${itemType}:`, { itemName, path: currentPath });
|
|
71
|
+
dispatch('create', { itemName: itemName.trim(), path: currentPath });
|
|
72
|
+
handleClose();
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function handleClose() {
|
|
76
|
+
isOpen = false;
|
|
77
|
+
itemName = '';
|
|
78
|
+
isValid = false;
|
|
79
|
+
hasAttemptedSubmit = false;
|
|
80
|
+
dispatch('cancel');
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// Combine the custom modal data with our required path info
|
|
84
|
+
$: combinedModalData = {
|
|
85
|
+
...modalData,
|
|
86
|
+
currentPath,
|
|
87
|
+
currentPathNames
|
|
88
|
+
};
|
|
89
|
+
</script>
|
|
90
|
+
|
|
91
|
+
<BaseModal
|
|
92
|
+
bind:open={isOpen}
|
|
93
|
+
on:close={handleClose}
|
|
94
|
+
width={modalWidth}
|
|
95
|
+
height={modalHeight}
|
|
96
|
+
{modalType}
|
|
97
|
+
modalData={combinedModalData}
|
|
98
|
+
title={showTitle ? displayTitle : undefined}
|
|
99
|
+
{target}
|
|
100
|
+
on:restore={(event: CustomEvent<any>) => {
|
|
101
|
+
if (event.detail) {
|
|
102
|
+
if (event.detail.currentPath) currentPath = event.detail.currentPath;
|
|
103
|
+
if (event.detail.currentPathNames) currentPathNames = event.detail.currentPathNames;
|
|
104
|
+
}
|
|
105
|
+
}}
|
|
106
|
+
>
|
|
107
|
+
<div class="{className ? `${className} ` : ''}new-item-dialog-container h-full flex flex-col min-h-[136px] justify-between" style={style}>
|
|
108
|
+
<div class="flex flex-col items-center pt-6">
|
|
109
|
+
<!-- Replace Input component with native input to match RenameDialog styling -->
|
|
110
|
+
<input
|
|
111
|
+
type="text"
|
|
112
|
+
bind:value={itemName}
|
|
113
|
+
onkeydown={(e) => {
|
|
114
|
+
if (e.key === 'Escape') {
|
|
115
|
+
handleClose();
|
|
116
|
+
} else {
|
|
117
|
+
e.stopPropagation(); // Stop all keyboard events except Escape from bubbling up
|
|
118
|
+
if (e.key === 'Enter') {
|
|
119
|
+
e.preventDefault();
|
|
120
|
+
handleSubmit();
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}}
|
|
124
|
+
onfocus={(e) => {
|
|
125
|
+
const target = e.target as HTMLInputElement;
|
|
126
|
+
target.placeholder = "";
|
|
127
|
+
}}
|
|
128
|
+
onblur={(e) => {
|
|
129
|
+
const target = e.target as HTMLInputElement;
|
|
130
|
+
target.placeholder = placeholder;
|
|
131
|
+
}}
|
|
132
|
+
required
|
|
133
|
+
class="w-full h5 text-[24px] text-[hsl(var(--grey7))] text-center
|
|
134
|
+
bg-transparent border-none focus:outline-none focus:ring-0
|
|
135
|
+
placeholder:text-[24px] placeholder:text-[hsl(var(--grey3))]
|
|
136
|
+
{!isValid && hasAttemptedSubmit ? 'input-error' : ''}"
|
|
137
|
+
placeholder={placeholder}
|
|
138
|
+
maxlength={maxLength}
|
|
139
|
+
data-min-length="1"
|
|
140
|
+
/>
|
|
141
|
+
{#if !isValid && hasAttemptedSubmit}
|
|
142
|
+
<div class="text-xs text-[hsl(var(--error))] mt-1">
|
|
143
|
+
Please enter a valid {itemType} name
|
|
144
|
+
</div>
|
|
145
|
+
{/if}
|
|
146
|
+
</div>
|
|
147
|
+
|
|
148
|
+
<div class="buttons-container flex justify-center gap-4">
|
|
149
|
+
<Button
|
|
150
|
+
type="button"
|
|
151
|
+
variant="secondary"
|
|
152
|
+
class="modal-btn-secondary !rounded-[100px] !h-[34px]"
|
|
153
|
+
onclick={handleClose}
|
|
154
|
+
>
|
|
155
|
+
{cancelLabel}
|
|
156
|
+
</Button>
|
|
157
|
+
<Button
|
|
158
|
+
type="submit"
|
|
159
|
+
class="modal-btn-primary !rounded-[100px] !h-[34px]"
|
|
160
|
+
onclick={handleSubmit}
|
|
161
|
+
disabled={!isValid}
|
|
162
|
+
>
|
|
163
|
+
{confirmLabel}
|
|
164
|
+
</Button>
|
|
165
|
+
</div>
|
|
166
|
+
</div>
|
|
167
|
+
</BaseModal>
|
|
168
|
+
|
|
169
|
+
<style>
|
|
170
|
+
@keyframes pulse-subtle {
|
|
171
|
+
0%, 100% { opacity: 0; }
|
|
172
|
+
50% { opacity: 0.1; }
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
:global(.animate-pulse-subtle) {
|
|
176
|
+
animation: pulse-subtle 2s ease-in-out infinite;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
:global(.input-error) {
|
|
180
|
+
animation: shake 0.4s ease-in-out;
|
|
181
|
+
border-bottom: 1px solid hsl(var(--error)) !important;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
@keyframes shake {
|
|
185
|
+
0%, 100% { transform: translateX(0); }
|
|
186
|
+
25% { transform: translateX(-5px); }
|
|
187
|
+
75% { transform: translateX(5px); }
|
|
188
|
+
}
|
|
189
|
+
</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 NewItemDialog: $$__sveltets_2_IsomorphicComponent<{
|
|
15
|
+
class?: string;
|
|
16
|
+
style?: string;
|
|
17
|
+
isOpen?: boolean;
|
|
18
|
+
title?: string;
|
|
19
|
+
showTitle?: boolean;
|
|
20
|
+
itemType?: string;
|
|
21
|
+
placeholder?: string;
|
|
22
|
+
target?: string;
|
|
23
|
+
currentPath?: string[];
|
|
24
|
+
currentPathNames?: string[];
|
|
25
|
+
confirmLabel?: string;
|
|
26
|
+
cancelLabel?: string;
|
|
27
|
+
modalType?: string;
|
|
28
|
+
modalWidth?: string;
|
|
29
|
+
modalHeight?: string;
|
|
30
|
+
maxLength?: number;
|
|
31
|
+
modalData?: Record<string, any>;
|
|
32
|
+
}, {
|
|
33
|
+
create: CustomEvent<any>;
|
|
34
|
+
cancel: CustomEvent<any>;
|
|
35
|
+
} & {
|
|
36
|
+
[evt: string]: CustomEvent<any>;
|
|
37
|
+
}, {}, {}, string>;
|
|
38
|
+
type NewItemDialog = InstanceType<typeof NewItemDialog>;
|
|
39
|
+
export default NewItemDialog;
|