@velastack/cms 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +644 -0
- package/dist/cms.d.ts +6 -0
- package/dist/cms.js +30 -0
- package/dist/components/admin-bar/admin-bar-internal.svelte +1697 -0
- package/dist/components/admin-bar/admin-bar-internal.svelte.d.ts +12 -0
- package/dist/components/admin-bar/admin-bar.css +5 -0
- package/dist/components/admin-bar/admin-bar.svelte +355 -0
- package/dist/components/admin-bar/admin-bar.svelte.d.ts +7 -0
- package/dist/components/admin-bar/click-outside.d.ts +8 -0
- package/dist/components/admin-bar/click-outside.js +17 -0
- package/dist/components/admin-bar/css-root.svelte +23 -0
- package/dist/components/admin-bar/css-root.svelte.d.ts +19 -0
- package/dist/components/admin-bar/delete-page-dialog.svelte +326 -0
- package/dist/components/admin-bar/delete-page-dialog.svelte.d.ts +32 -0
- package/dist/components/admin-bar/history-panel.svelte +264 -0
- package/dist/components/admin-bar/history-panel.svelte.d.ts +8 -0
- package/dist/components/admin-bar/icons/bold.svelte +13 -0
- package/dist/components/admin-bar/icons/bold.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/check.svelte +11 -0
- package/dist/components/admin-bar/icons/check.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/chevron-down.svelte +11 -0
- package/dist/components/admin-bar/icons/chevron-down.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/chevron-right.svelte +11 -0
- package/dist/components/admin-bar/icons/chevron-right.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/chevron-up.svelte +11 -0
- package/dist/components/admin-bar/icons/chevron-up.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/code.svelte +14 -0
- package/dist/components/admin-bar/icons/code.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/external-link.svelte +15 -0
- package/dist/components/admin-bar/icons/external-link.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/file.svelte +19 -0
- package/dist/components/admin-bar/icons/file.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/heading-2.svelte +16 -0
- package/dist/components/admin-bar/icons/heading-2.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/heading-3.svelte +17 -0
- package/dist/components/admin-bar/icons/heading-3.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/icon.svelte +41 -0
- package/dist/components/admin-bar/icons/icon.svelte.d.ts +21 -0
- package/dist/components/admin-bar/icons/images.svelte +16 -0
- package/dist/components/admin-bar/icons/images.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/italic.svelte +15 -0
- package/dist/components/admin-bar/icons/italic.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/link-2-off.svelte +16 -0
- package/dist/components/admin-bar/icons/link-2-off.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/link.svelte +14 -0
- package/dist/components/admin-bar/icons/link.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/list-ordered.svelte +18 -0
- package/dist/components/admin-bar/icons/list-ordered.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/list.svelte +18 -0
- package/dist/components/admin-bar/icons/list.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/loader-circle.svelte +11 -0
- package/dist/components/admin-bar/icons/loader-circle.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/minus.svelte +11 -0
- package/dist/components/admin-bar/icons/minus.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/quote.svelte +24 -0
- package/dist/components/admin-bar/icons/quote.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/search.svelte +14 -0
- package/dist/components/admin-bar/icons/search.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/trash-2.svelte +17 -0
- package/dist/components/admin-bar/icons/trash-2.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/triangle-alert.svelte +15 -0
- package/dist/components/admin-bar/icons/triangle-alert.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/types.d.ts +7 -0
- package/dist/components/admin-bar/icons/types.js +1 -0
- package/dist/components/admin-bar/icons/undo-2.svelte +14 -0
- package/dist/components/admin-bar/icons/undo-2.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/upload.svelte +15 -0
- package/dist/components/admin-bar/icons/upload.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/x.svelte +14 -0
- package/dist/components/admin-bar/icons/x.svelte.d.ts +3 -0
- package/dist/components/admin-bar/keyboard-shortcuts-dialog.svelte +96 -0
- package/dist/components/admin-bar/keyboard-shortcuts-dialog.svelte.d.ts +7 -0
- package/dist/components/admin-bar/locales-panel.svelte +137 -0
- package/dist/components/admin-bar/locales-panel.svelte.d.ts +9 -0
- package/dist/components/admin-bar/media-panel.svelte +282 -0
- package/dist/components/admin-bar/media-panel.svelte.d.ts +7 -0
- package/dist/components/admin-bar/new-page-chooser-dialog.svelte +56 -0
- package/dist/components/admin-bar/new-page-chooser-dialog.svelte.d.ts +10 -0
- package/dist/components/admin-bar/new-page-dialog.svelte +126 -0
- package/dist/components/admin-bar/new-page-dialog.svelte.d.ts +14 -0
- package/dist/components/admin-bar/page-config.d.ts +61 -0
- package/dist/components/admin-bar/page-config.js +24 -0
- package/dist/components/admin-bar/pages-panel.svelte +639 -0
- package/dist/components/admin-bar/pages-panel.svelte.d.ts +13 -0
- package/dist/components/admin-bar/panel-footer.svelte +21 -0
- package/dist/components/admin-bar/panel-footer.svelte.d.ts +8 -0
- package/dist/components/admin-bar/panel-header.svelte +29 -0
- package/dist/components/admin-bar/panel-header.svelte.d.ts +10 -0
- package/dist/components/admin-bar/panel.svelte +41 -0
- package/dist/components/admin-bar/panel.svelte.d.ts +10 -0
- package/dist/components/admin-bar/publish-dialog.svelte +387 -0
- package/dist/components/admin-bar/publish-dialog.svelte.d.ts +16 -0
- package/dist/components/admin-bar/resolve-route.d.ts +20 -0
- package/dist/components/admin-bar/resolve-route.js +50 -0
- package/dist/components/admin-bar/seo-panel.svelte +387 -0
- package/dist/components/admin-bar/seo-panel.svelte.d.ts +7 -0
- package/dist/components/admin-bar/share-preview-link-dialog.svelte +97 -0
- package/dist/components/admin-bar/share-preview-link-dialog.svelte.d.ts +9 -0
- package/dist/components/admin-bar/site-settings-panel.svelte +225 -0
- package/dist/components/admin-bar/site-settings-panel.svelte.d.ts +7 -0
- package/dist/components/admin-bar/status-pill.svelte +49 -0
- package/dist/components/admin-bar/status-pill.svelte.d.ts +11 -0
- package/dist/components/admin-bar/theme.svelte.d.ts +16 -0
- package/dist/components/admin-bar/theme.svelte.js +39 -0
- package/dist/components/admin-bar/ui/badge/badge.svelte +57 -0
- package/dist/components/admin-bar/ui/badge/badge.svelte.d.ts +16 -0
- package/dist/components/admin-bar/ui/badge/index.d.ts +4 -0
- package/dist/components/admin-bar/ui/badge/index.js +4 -0
- package/dist/components/admin-bar/ui/button/button.svelte +73 -0
- package/dist/components/admin-bar/ui/button/button.svelte.d.ts +16 -0
- package/dist/components/admin-bar/ui/button/index.d.ts +4 -0
- package/dist/components/admin-bar/ui/button/index.js +4 -0
- package/dist/components/admin-bar/ui/collapsible/collapsible-content.svelte +7 -0
- package/dist/components/admin-bar/ui/collapsible/collapsible-content.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/collapsible/collapsible-trigger.svelte +7 -0
- package/dist/components/admin-bar/ui/collapsible/collapsible-trigger.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/collapsible/collapsible.svelte +7 -0
- package/dist/components/admin-bar/ui/collapsible/collapsible.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/collapsible/index.d.ts +4 -0
- package/dist/components/admin-bar/ui/collapsible/index.js +6 -0
- package/dist/components/admin-bar/ui/dialog/dialog-close.svelte +7 -0
- package/dist/components/admin-bar/ui/dialog/dialog-close.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/dialog/dialog-content.svelte +46 -0
- package/dist/components/admin-bar/ui/dialog/dialog-content.svelte.d.ts +11 -0
- package/dist/components/admin-bar/ui/dialog/dialog-description.svelte +17 -0
- package/dist/components/admin-bar/ui/dialog/dialog-description.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/dialog/dialog-footer.svelte +23 -0
- package/dist/components/admin-bar/ui/dialog/dialog-footer.svelte.d.ts +5 -0
- package/dist/components/admin-bar/ui/dialog/dialog-header.svelte +20 -0
- package/dist/components/admin-bar/ui/dialog/dialog-header.svelte.d.ts +5 -0
- package/dist/components/admin-bar/ui/dialog/dialog-overlay.svelte +20 -0
- package/dist/components/admin-bar/ui/dialog/dialog-overlay.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/dialog/dialog-portal.svelte +7 -0
- package/dist/components/admin-bar/ui/dialog/dialog-portal.svelte.d.ts +3 -0
- package/dist/components/admin-bar/ui/dialog/dialog-title.svelte +17 -0
- package/dist/components/admin-bar/ui/dialog/dialog-title.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/dialog/dialog-trigger.svelte +7 -0
- package/dist/components/admin-bar/ui/dialog/dialog-trigger.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/dialog/dialog.svelte +7 -0
- package/dist/components/admin-bar/ui/dialog/dialog.svelte.d.ts +3 -0
- package/dist/components/admin-bar/ui/dialog/index.d.ts +11 -0
- package/dist/components/admin-bar/ui/dialog/index.js +13 -0
- package/dist/components/admin-bar/ui/input/index.d.ts +3 -0
- package/dist/components/admin-bar/ui/input/index.js +3 -0
- package/dist/components/admin-bar/ui/input/input.svelte +24 -0
- package/dist/components/admin-bar/ui/input/input.svelte.d.ts +5 -0
- package/dist/components/admin-bar/ui/kbd/index.d.ts +4 -0
- package/dist/components/admin-bar/ui/kbd/index.js +6 -0
- package/dist/components/admin-bar/ui/kbd/kbd-group.svelte +20 -0
- package/dist/components/admin-bar/ui/kbd/kbd-group.svelte.d.ts +5 -0
- package/dist/components/admin-bar/ui/kbd/kbd-shortcut.svelte +52 -0
- package/dist/components/admin-bar/ui/kbd/kbd-shortcut.svelte.d.ts +8 -0
- package/dist/components/admin-bar/ui/kbd/kbd.svelte +27 -0
- package/dist/components/admin-bar/ui/kbd/kbd.svelte.d.ts +5 -0
- package/dist/components/admin-bar/ui/label/index.d.ts +3 -0
- package/dist/components/admin-bar/ui/label/index.js +3 -0
- package/dist/components/admin-bar/ui/label/label.svelte +20 -0
- package/dist/components/admin-bar/ui/label/label.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/menubar/index.d.ts +18 -0
- package/dist/components/admin-bar/ui/menubar/index.js +20 -0
- package/dist/components/admin-bar/ui/menubar/menubar-checkbox-item.svelte +46 -0
- package/dist/components/admin-bar/ui/menubar/menubar-checkbox-item.svelte.d.ts +10 -0
- package/dist/components/admin-bar/ui/menubar/menubar-content.svelte +28 -0
- package/dist/components/admin-bar/ui/menubar/menubar-content.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/menubar/menubar-group-heading.svelte +25 -0
- package/dist/components/admin-bar/ui/menubar/menubar-group-heading.svelte.d.ts +8 -0
- package/dist/components/admin-bar/ui/menubar/menubar-group.svelte +12 -0
- package/dist/components/admin-bar/ui/menubar/menubar-group.svelte.d.ts +7 -0
- package/dist/components/admin-bar/ui/menubar/menubar-item.svelte +27 -0
- package/dist/components/admin-bar/ui/menubar/menubar-item.svelte.d.ts +8 -0
- package/dist/components/admin-bar/ui/menubar/menubar-label.svelte +25 -0
- package/dist/components/admin-bar/ui/menubar/menubar-label.svelte.d.ts +8 -0
- package/dist/components/admin-bar/ui/menubar/menubar-menu.svelte +7 -0
- package/dist/components/admin-bar/ui/menubar/menubar-menu.svelte.d.ts +3 -0
- package/dist/components/admin-bar/ui/menubar/menubar-portal.svelte +7 -0
- package/dist/components/admin-bar/ui/menubar/menubar-portal.svelte.d.ts +3 -0
- package/dist/components/admin-bar/ui/menubar/menubar-radio-group.svelte +11 -0
- package/dist/components/admin-bar/ui/menubar/menubar-radio-group.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/menubar/menubar-radio-item.svelte +37 -0
- package/dist/components/admin-bar/ui/menubar/menubar-radio-item.svelte.d.ts +8 -0
- package/dist/components/admin-bar/ui/menubar/menubar-separator.svelte +17 -0
- package/dist/components/admin-bar/ui/menubar/menubar-separator.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/menubar/menubar-shortcut.svelte +23 -0
- package/dist/components/admin-bar/ui/menubar/menubar-shortcut.svelte.d.ts +5 -0
- package/dist/components/admin-bar/ui/menubar/menubar-sub-content.svelte +20 -0
- package/dist/components/admin-bar/ui/menubar/menubar-sub-content.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/menubar/menubar-sub-trigger.svelte +29 -0
- package/dist/components/admin-bar/ui/menubar/menubar-sub-trigger.svelte.d.ts +8 -0
- package/dist/components/admin-bar/ui/menubar/menubar-sub.svelte +7 -0
- package/dist/components/admin-bar/ui/menubar/menubar-sub.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/menubar/menubar-trigger.svelte +20 -0
- package/dist/components/admin-bar/ui/menubar/menubar-trigger.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/menubar/menubar.svelte +20 -0
- package/dist/components/admin-bar/ui/menubar/menubar.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/select/index.d.ts +12 -0
- package/dist/components/admin-bar/ui/select/index.js +14 -0
- package/dist/components/admin-bar/ui/select/select-content.svelte +45 -0
- package/dist/components/admin-bar/ui/select/select-content.svelte.d.ts +11 -0
- package/dist/components/admin-bar/ui/select/select-group-heading.svelte +21 -0
- package/dist/components/admin-bar/ui/select/select-group-heading.svelte.d.ts +10 -0
- package/dist/components/admin-bar/ui/select/select-group.svelte +17 -0
- package/dist/components/admin-bar/ui/select/select-group.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/select/select-item.svelte +40 -0
- package/dist/components/admin-bar/ui/select/select-item.svelte.d.ts +5 -0
- package/dist/components/admin-bar/ui/select/select-label.svelte +20 -0
- package/dist/components/admin-bar/ui/select/select-label.svelte.d.ts +6 -0
- package/dist/components/admin-bar/ui/select/select-portal.svelte +7 -0
- package/dist/components/admin-bar/ui/select/select-portal.svelte.d.ts +3 -0
- package/dist/components/admin-bar/ui/select/select-scroll-down-button.svelte +23 -0
- package/dist/components/admin-bar/ui/select/select-scroll-down-button.svelte.d.ts +5 -0
- package/dist/components/admin-bar/ui/select/select-scroll-up-button.svelte +23 -0
- package/dist/components/admin-bar/ui/select/select-scroll-up-button.svelte.d.ts +5 -0
- package/dist/components/admin-bar/ui/select/select-separator.svelte +21 -0
- package/dist/components/admin-bar/ui/select/select-separator.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/select/select-trigger.svelte +31 -0
- package/dist/components/admin-bar/ui/select/select-trigger.svelte.d.ts +8 -0
- package/dist/components/admin-bar/ui/select/select.svelte +11 -0
- package/dist/components/admin-bar/ui/select/select.svelte.d.ts +3 -0
- package/dist/components/admin-bar/ui/separator/index.d.ts +2 -0
- package/dist/components/admin-bar/ui/separator/index.js +4 -0
- package/dist/components/admin-bar/ui/separator/separator.svelte +21 -0
- package/dist/components/admin-bar/ui/separator/separator.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/textarea/index.d.ts +3 -0
- package/dist/components/admin-bar/ui/textarea/index.js +3 -0
- package/dist/components/admin-bar/ui/textarea/textarea.svelte +21 -0
- package/dist/components/admin-bar/ui/textarea/textarea.svelte.d.ts +5 -0
- package/dist/components/admin-bar/user-avatar.svelte +29 -0
- package/dist/components/admin-bar/user-avatar.svelte.d.ts +7 -0
- package/dist/components/admin-bar/utils.d.ts +10 -0
- package/dist/components/admin-bar/utils.js +46 -0
- package/dist/components/admin-bar/variants.d.ts +20 -0
- package/dist/components/admin-bar/variants.js +14 -0
- package/dist/components/cms/cms-boolean.svelte +102 -0
- package/dist/components/cms/cms-boolean.svelte.d.ts +10 -0
- package/dist/components/cms/cms-date-time-editable.svelte +66 -0
- package/dist/components/cms/cms-date-time-editable.svelte.d.ts +11 -0
- package/dist/components/cms/cms-date-time.svelte +67 -0
- package/dist/components/cms/cms-date-time.svelte.d.ts +19 -0
- package/dist/components/cms/cms-entries.svelte +24 -0
- package/dist/components/cms/cms-entries.svelte.d.ts +31 -0
- package/dist/components/cms/cms-image-editable.svelte +439 -0
- package/dist/components/cms/cms-image-editable.svelte.d.ts +11 -0
- package/dist/components/cms/cms-image.svelte +78 -0
- package/dist/components/cms/cms-image.svelte.d.ts +18 -0
- package/dist/components/cms/cms-link-editable.svelte +429 -0
- package/dist/components/cms/cms-link-editable.svelte.d.ts +13 -0
- package/dist/components/cms/cms-link.svelte +92 -0
- package/dist/components/cms/cms-link.svelte.d.ts +25 -0
- package/dist/components/cms/cms-markdown-editable.svelte +74 -0
- package/dist/components/cms/cms-markdown-editable.svelte.d.ts +9 -0
- package/dist/components/cms/cms-markdown.svelte +56 -0
- package/dist/components/cms/cms-markdown.svelte.d.ts +10 -0
- package/dist/components/cms/cms-media-picker.svelte +150 -0
- package/dist/components/cms/cms-media-picker.svelte.d.ts +8 -0
- package/dist/components/cms/cms-number-editable.svelte +77 -0
- package/dist/components/cms/cms-number-editable.svelte.d.ts +13 -0
- package/dist/components/cms/cms-number.svelte +63 -0
- package/dist/components/cms/cms-number.svelte.d.ts +16 -0
- package/dist/components/cms/cms-repeater-editable.svelte +137 -0
- package/dist/components/cms/cms-repeater-editable.svelte.d.ts +31 -0
- package/dist/components/cms/cms-repeater.svelte +55 -0
- package/dist/components/cms/cms-repeater.svelte.d.ts +30 -0
- package/dist/components/cms/cms-rich-text-editable.svelte +101 -0
- package/dist/components/cms/cms-rich-text-editable.svelte.d.ts +9 -0
- package/dist/components/cms/cms-rich-text-toolbar.svelte +246 -0
- package/dist/components/cms/cms-rich-text-toolbar.svelte.d.ts +9 -0
- package/dist/components/cms/cms-rich-text.svelte +74 -0
- package/dist/components/cms/cms-rich-text.svelte.d.ts +10 -0
- package/dist/components/cms/cms-store.svelte.d.ts +294 -0
- package/dist/components/cms/cms-store.svelte.js +625 -0
- package/dist/components/cms/cms-text.svelte +131 -0
- package/dist/components/cms/cms-text.svelte.d.ts +11 -0
- package/dist/components/cms/index.d.ts +13 -0
- package/dist/components/cms/index.js +11 -0
- package/dist/components/cms/install-scope.svelte.d.ts +7 -0
- package/dist/components/cms/install-scope.svelte.js +33 -0
- package/dist/components/cms/locale-merge.d.ts +41 -0
- package/dist/components/cms/locale-merge.js +77 -0
- package/dist/components/cms/overlay-sync.d.ts +82 -0
- package/dist/components/cms/overlay-sync.js +76 -0
- package/dist/components/cms/path.d.ts +30 -0
- package/dist/components/cms/path.js +156 -0
- package/dist/components/cms/scope.d.ts +120 -0
- package/dist/components/cms/scope.js +23 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.js +28 -0
- package/dist/srv/README.md +341 -0
- package/dist/srv/api-adapter.d.ts +20 -0
- package/dist/srv/api-adapter.js +178 -0
- package/dist/srv/cms.d.ts +62 -0
- package/dist/srv/cms.js +35 -0
- package/dist/srv/index.d.ts +5 -0
- package/dist/srv/index.js +4 -0
- package/dist/srv/load-cms.d.ts +105 -0
- package/dist/srv/load-cms.js +227 -0
- package/dist/srv/mock-adapter.d.ts +96 -0
- package/dist/srv/mock-adapter.js +171 -0
- package/dist/srv/types.d.ts +114 -0
- package/dist/srv/types.js +1 -0
- package/package.json +116 -0
- package/plugin/README.md +137 -0
- package/plugin/dist/adapter.d.ts +35 -0
- package/plugin/dist/adapter.js +346 -0
- package/plugin/dist/adapter.js.map +1 -0
- package/plugin/dist/build-state.d.ts +10 -0
- package/plugin/dist/build-state.js +26 -0
- package/plugin/dist/build-state.js.map +1 -0
- package/plugin/dist/fallback-shim.js +194 -0
- package/plugin/dist/index.d.ts +56 -0
- package/plugin/dist/index.js +396 -0
- package/plugin/dist/index.js.map +1 -0
- package/plugin/dist/manifest.d.ts +76 -0
- package/plugin/dist/manifest.js +367 -0
- package/plugin/dist/manifest.js.map +1 -0
- package/plugin/dist/media.d.ts +36 -0
- package/plugin/dist/media.js +153 -0
- package/plugin/dist/media.js.map +1 -0
- package/plugin/dist/parse-svelte.d.ts +35 -0
- package/plugin/dist/parse-svelte.js +120 -0
- package/plugin/dist/parse-svelte.js.map +1 -0
- package/plugin/dist/route-tree.d.ts +27 -0
- package/plugin/dist/route-tree.js +69 -0
- package/plugin/dist/route-tree.js.map +1 -0
- package/plugin/dist/transforms.d.ts +42 -0
- package/plugin/dist/transforms.js +95 -0
- package/plugin/dist/transforms.js.map +1 -0
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { page } from '$app/state';
|
|
3
|
+
import ImagesIcon from './icons/images.svelte';
|
|
4
|
+
import { cmsStore, type MediaItem } from '../cms/cms-store.svelte.js';
|
|
5
|
+
import CmsMediaPicker from '../cms/cms-media-picker.svelte';
|
|
6
|
+
import type { CmsPayload, SiteFieldSchema, SiteSchema } from '../cms/scope.js';
|
|
7
|
+
import { clickOutside } from './click-outside.js';
|
|
8
|
+
import PanelFooter from './panel-footer.svelte';
|
|
9
|
+
import PanelHeader from './panel-header.svelte';
|
|
10
|
+
import Panel from './panel.svelte';
|
|
11
|
+
import { Button } from './ui/button/index.js';
|
|
12
|
+
import { Input } from './ui/input/index.js';
|
|
13
|
+
import { Textarea } from './ui/textarea/index.js';
|
|
14
|
+
|
|
15
|
+
type Props = { onClose: () => void; onSave: () => void | Promise<void> };
|
|
16
|
+
let { onClose, onSave }: Props = $props();
|
|
17
|
+
|
|
18
|
+
const cms = $derived(page.data.cms as CmsPayload | undefined);
|
|
19
|
+
const schema = $derived<SiteSchema>(cms?.site?.schema ?? {});
|
|
20
|
+
const endpoint = $derived(cms?.endpoint ?? '/api/cms');
|
|
21
|
+
|
|
22
|
+
// Flat (path → schema) view for save/reset; sections preserved for layout.
|
|
23
|
+
const sections = $derived(Object.entries(schema));
|
|
24
|
+
const allFieldPaths = $derived.by(() => {
|
|
25
|
+
const out: Array<{ path: string; schema: SiteFieldSchema }> = [];
|
|
26
|
+
for (const [sectionKey, section] of sections) {
|
|
27
|
+
for (const [fieldKey, fieldSchema] of Object.entries(section.fields)) {
|
|
28
|
+
out.push({ path: `${sectionKey}.${fieldKey}`, schema: fieldSchema });
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return out;
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
const persistedValue = (path: string): unknown => cmsStore.getSiteValue(path);
|
|
35
|
+
|
|
36
|
+
// Local form state — typing only updates `local`; nothing reaches
|
|
37
|
+
// `cmsStore.siteDraft` until Save fires (matches seo-panel.svelte). That
|
|
38
|
+
// keeps the bar's "X drafts" count from flickering as the user explores.
|
|
39
|
+
let local = $state<Record<string, unknown>>({});
|
|
40
|
+
|
|
41
|
+
$effect(() => {
|
|
42
|
+
const next: Record<string, unknown> = {};
|
|
43
|
+
for (const { path } of allFieldPaths) next[path] = persistedValue(path);
|
|
44
|
+
local = next;
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
// Per-field media library popover state — keyed by field path.
|
|
48
|
+
let openLibrary = $state<string | null>(null);
|
|
49
|
+
|
|
50
|
+
const fieldLabelClass = 'vela:text-[12px] vela:text-bar-text-secondary';
|
|
51
|
+
|
|
52
|
+
const stringValue = (v: unknown): string => (typeof v === 'string' ? v : '');
|
|
53
|
+
const numberValue = (v: unknown): number | null =>
|
|
54
|
+
typeof v === 'number' && !Number.isNaN(v) ? v : null;
|
|
55
|
+
|
|
56
|
+
const setNumber = (path: string, raw: string) => {
|
|
57
|
+
if (raw === '') local[path] = undefined;
|
|
58
|
+
else {
|
|
59
|
+
const n = Number(raw);
|
|
60
|
+
local[path] = Number.isFinite(n) ? n : undefined;
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
const onLibrarySelect = (path: string, item: MediaItem) => {
|
|
65
|
+
local[path] = item.url;
|
|
66
|
+
openLibrary = null;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
const handleSave = async () => {
|
|
70
|
+
for (const { path } of allFieldPaths) {
|
|
71
|
+
const v = local[path];
|
|
72
|
+
if (v !== persistedValue(path)) cmsStore.setSiteValue(path, v);
|
|
73
|
+
}
|
|
74
|
+
await onSave();
|
|
75
|
+
};
|
|
76
|
+
</script>
|
|
77
|
+
|
|
78
|
+
<Panel ariaLabel="Site settings" {onClose}>
|
|
79
|
+
<PanelHeader title="Site settings" {onClose} />
|
|
80
|
+
|
|
81
|
+
<form
|
|
82
|
+
class="vela:overflow-y-auto vela:px-4 vela:pb-4 vela:flex vela:flex-col vela:gap-5"
|
|
83
|
+
onsubmit={(e) => {
|
|
84
|
+
e.preventDefault();
|
|
85
|
+
handleSave();
|
|
86
|
+
}}
|
|
87
|
+
>
|
|
88
|
+
{#if sections.length === 0}
|
|
89
|
+
<p class="vela:text-[13px] vela:text-bar-text-tertiary vela:py-2">
|
|
90
|
+
No site settings have been declared. Pass a <code>site</code> schema to
|
|
91
|
+
<code>createCms()</code> to add fields here.
|
|
92
|
+
</p>
|
|
93
|
+
{:else}
|
|
94
|
+
{#each sections as [sectionKey, section] (sectionKey)}
|
|
95
|
+
<section class="vela:flex vela:flex-col vela:gap-3">
|
|
96
|
+
<h3
|
|
97
|
+
class="vela:text-[10px] vela:font-semibold vela:uppercase vela:tracking-widest vela:text-bar-text-tertiary vela:m-0"
|
|
98
|
+
>
|
|
99
|
+
{section.label}
|
|
100
|
+
</h3>
|
|
101
|
+
|
|
102
|
+
{#each Object.entries(section.fields) as [fieldKey, fieldSchema] (fieldKey)}
|
|
103
|
+
{@const path = `${sectionKey}.${fieldKey}`}
|
|
104
|
+
{#if fieldSchema.type === 'markdown'}
|
|
105
|
+
<label class="vela:flex vela:flex-col vela:gap-1.5">
|
|
106
|
+
<span class={fieldLabelClass}>{fieldSchema.label}</span>
|
|
107
|
+
<Textarea
|
|
108
|
+
value={stringValue(local[path])}
|
|
109
|
+
placeholder={fieldSchema.placeholder ?? ''}
|
|
110
|
+
oninput={(e) => (local[path] = e.currentTarget.value)}
|
|
111
|
+
/>
|
|
112
|
+
</label>
|
|
113
|
+
{:else if fieldSchema.type === 'number'}
|
|
114
|
+
<label class="vela:flex vela:flex-col vela:gap-1.5">
|
|
115
|
+
<span class={fieldLabelClass}>{fieldSchema.label}</span>
|
|
116
|
+
<Input
|
|
117
|
+
type="number"
|
|
118
|
+
value={numberValue(local[path]) ?? ''}
|
|
119
|
+
placeholder={fieldSchema.placeholder ?? ''}
|
|
120
|
+
oninput={(e) => setNumber(path, e.currentTarget.value)}
|
|
121
|
+
/>
|
|
122
|
+
</label>
|
|
123
|
+
{:else if fieldSchema.type === 'datetime'}
|
|
124
|
+
<label class="vela:flex vela:flex-col vela:gap-1.5">
|
|
125
|
+
<span class={fieldLabelClass}>{fieldSchema.label}</span>
|
|
126
|
+
<Input
|
|
127
|
+
type="datetime-local"
|
|
128
|
+
value={stringValue(local[path])}
|
|
129
|
+
oninput={(e) => (local[path] = e.currentTarget.value)}
|
|
130
|
+
/>
|
|
131
|
+
</label>
|
|
132
|
+
{:else if fieldSchema.type === 'color'}
|
|
133
|
+
<label class="vela:flex vela:flex-col vela:gap-1.5">
|
|
134
|
+
<span class={fieldLabelClass}>{fieldSchema.label}</span>
|
|
135
|
+
<div class="vela:flex vela:items-center vela:gap-2">
|
|
136
|
+
<input
|
|
137
|
+
type="color"
|
|
138
|
+
value={stringValue(local[path]) || '#000000'}
|
|
139
|
+
oninput={(e) => (local[path] = e.currentTarget.value)}
|
|
140
|
+
class="vela:h-9 vela:w-12 vela:rounded vela:border vela:border-[var(--cms-bar-divider)] vela:bg-[var(--cms-bar-bg-hover)] vela:cursor-pointer"
|
|
141
|
+
/>
|
|
142
|
+
<Input
|
|
143
|
+
type="text"
|
|
144
|
+
value={stringValue(local[path])}
|
|
145
|
+
placeholder={fieldSchema.placeholder ?? '#1f1f1f'}
|
|
146
|
+
oninput={(e) => (local[path] = e.currentTarget.value)}
|
|
147
|
+
/>
|
|
148
|
+
</div>
|
|
149
|
+
</label>
|
|
150
|
+
{:else if fieldSchema.type === 'url'}
|
|
151
|
+
<label class="vela:flex vela:flex-col vela:gap-1.5">
|
|
152
|
+
<span class={fieldLabelClass}>{fieldSchema.label}</span>
|
|
153
|
+
<Input
|
|
154
|
+
type="url"
|
|
155
|
+
value={stringValue(local[path])}
|
|
156
|
+
placeholder={fieldSchema.placeholder ?? 'https://…'}
|
|
157
|
+
oninput={(e) => (local[path] = e.currentTarget.value)}
|
|
158
|
+
/>
|
|
159
|
+
</label>
|
|
160
|
+
{:else if fieldSchema.type === 'image'}
|
|
161
|
+
<div class="vela:flex vela:flex-col vela:gap-1.5">
|
|
162
|
+
<span class={fieldLabelClass}>{fieldSchema.label}</span>
|
|
163
|
+
<div class="vela:relative vela:flex vela:items-center vela:gap-2">
|
|
164
|
+
<Input
|
|
165
|
+
type="url"
|
|
166
|
+
value={stringValue(local[path])}
|
|
167
|
+
placeholder={fieldSchema.placeholder ?? 'https://…'}
|
|
168
|
+
oninput={(e) => (local[path] = e.currentTarget.value)}
|
|
169
|
+
/>
|
|
170
|
+
<Button
|
|
171
|
+
type="button"
|
|
172
|
+
variant="ghost"
|
|
173
|
+
size="pill-icon"
|
|
174
|
+
aria-label="Choose from media library"
|
|
175
|
+
onclick={() => (openLibrary = openLibrary === path ? null : path)}
|
|
176
|
+
>
|
|
177
|
+
<ImagesIcon class="vela:size-4" />
|
|
178
|
+
</Button>
|
|
179
|
+
{#if openLibrary === path}
|
|
180
|
+
<div
|
|
181
|
+
role="dialog"
|
|
182
|
+
aria-label="Choose from media library"
|
|
183
|
+
class="vela:absolute vela:right-0 vela:top-full vela:mt-1 vela:z-30
|
|
184
|
+
vela:p-2 vela:rounded-md vela:bg-bar-bg
|
|
185
|
+
vela:border vela:border-[var(--cms-bar-divider)]
|
|
186
|
+
vela:shadow-[0_8px_24px_rgba(0,0,0,0.35)]"
|
|
187
|
+
use:clickOutside={() => (openLibrary = null)}
|
|
188
|
+
>
|
|
189
|
+
<CmsMediaPicker {endpoint} onSelect={(item) => onLibrarySelect(path, item)} />
|
|
190
|
+
</div>
|
|
191
|
+
{/if}
|
|
192
|
+
</div>
|
|
193
|
+
{#if stringValue(local[path])}
|
|
194
|
+
<img
|
|
195
|
+
src={stringValue(local[path])}
|
|
196
|
+
alt=""
|
|
197
|
+
class="vela:max-h-24 vela:w-auto vela:rounded vela:border vela:border-[var(--cms-bar-divider)] vela:object-contain vela:bg-[var(--cms-bar-bg-hover)]"
|
|
198
|
+
/>
|
|
199
|
+
{/if}
|
|
200
|
+
</div>
|
|
201
|
+
{:else}
|
|
202
|
+
<label class="vela:flex vela:flex-col vela:gap-1.5">
|
|
203
|
+
<span class={fieldLabelClass}>{fieldSchema.label}</span>
|
|
204
|
+
<Input
|
|
205
|
+
type="text"
|
|
206
|
+
value={stringValue(local[path])}
|
|
207
|
+
placeholder={fieldSchema.placeholder ?? ''}
|
|
208
|
+
oninput={(e) => (local[path] = e.currentTarget.value)}
|
|
209
|
+
/>
|
|
210
|
+
</label>
|
|
211
|
+
{/if}
|
|
212
|
+
{/each}
|
|
213
|
+
</section>
|
|
214
|
+
{/each}
|
|
215
|
+
{/if}
|
|
216
|
+
</form>
|
|
217
|
+
|
|
218
|
+
<PanelFooter>
|
|
219
|
+
<span>Save to keep your changes</span>
|
|
220
|
+
<div class="vela:flex vela:items-center vela:gap-1.5">
|
|
221
|
+
<Button variant="ghost" size="pill" onclick={onClose}>Cancel</Button>
|
|
222
|
+
<Button size="pill" onclick={handleSave}>Save</Button>
|
|
223
|
+
</div>
|
|
224
|
+
</PanelFooter>
|
|
225
|
+
</Panel>
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
import { cn } from './utils.js';
|
|
4
|
+
|
|
5
|
+
type Variant = 'clean' | 'warn' | 'edit';
|
|
6
|
+
|
|
7
|
+
type Props = {
|
|
8
|
+
variant: Variant;
|
|
9
|
+
onclick?: () => void;
|
|
10
|
+
class?: string;
|
|
11
|
+
children: Snippet;
|
|
12
|
+
};
|
|
13
|
+
let { variant, onclick, class: className, children }: Props = $props();
|
|
14
|
+
|
|
15
|
+
const variantClass: Record<Variant, string> = {
|
|
16
|
+
clean: 'vela:text-[var(--cms-status-clean-text)]',
|
|
17
|
+
warn: 'vela:bg-[var(--cms-status-warn-bg)] vela:text-[var(--cms-status-warn-text)] vela:animate-bar-pulse',
|
|
18
|
+
edit: 'vela:bg-[var(--cms-status-edit-bg)] vela:text-[var(--cms-status-edit-text)]'
|
|
19
|
+
};
|
|
20
|
+
const dotClass: Record<Variant, string> = {
|
|
21
|
+
clean: 'vela:bg-[var(--cms-status-clean-dot)]',
|
|
22
|
+
warn: 'vela:bg-[var(--cms-status-warn-dot)]',
|
|
23
|
+
edit: 'vela:bg-[var(--cms-status-edit-dot)]'
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const baseClass =
|
|
27
|
+
'vela:inline-flex vela:items-center vela:gap-1.5 vela:h-7 vela:pl-2.5 vela:pr-3 vela:rounded-full vela:text-[13px]';
|
|
28
|
+
</script>
|
|
29
|
+
|
|
30
|
+
{#if onclick}
|
|
31
|
+
<button
|
|
32
|
+
type="button"
|
|
33
|
+
{onclick}
|
|
34
|
+
class={cn(
|
|
35
|
+
baseClass,
|
|
36
|
+
variantClass[variant],
|
|
37
|
+
'vela:cursor-pointer vela:hover:bg-[var(--cms-status-warn-bg-hover)] vela:focus:outline-none',
|
|
38
|
+
className
|
|
39
|
+
)}
|
|
40
|
+
>
|
|
41
|
+
<span class={cn('vela:w-1.5 vela:h-1.5 vela:rounded-full', dotClass[variant])}></span>
|
|
42
|
+
{@render children()}
|
|
43
|
+
</button>
|
|
44
|
+
{:else}
|
|
45
|
+
<div class={cn(baseClass, variantClass[variant], className)}>
|
|
46
|
+
<span class={cn('vela:w-1.5 vela:h-1.5 vela:rounded-full', dotClass[variant])}></span>
|
|
47
|
+
{@render children()}
|
|
48
|
+
</div>
|
|
49
|
+
{/if}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
type Variant = 'clean' | 'warn' | 'edit';
|
|
3
|
+
type Props = {
|
|
4
|
+
variant: Variant;
|
|
5
|
+
onclick?: () => void;
|
|
6
|
+
class?: string;
|
|
7
|
+
children: Snippet;
|
|
8
|
+
};
|
|
9
|
+
declare const StatusPill: import("svelte").Component<Props, {}, "">;
|
|
10
|
+
type StatusPill = ReturnType<typeof StatusPill>;
|
|
11
|
+
export default StatusPill;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared theme state for the admin bar and editable CMS components.
|
|
3
|
+
*
|
|
4
|
+
* The View → Theme menu writes here; the bar's wrapper, every editable
|
|
5
|
+
* component's `<CssRoot>`, and the system-preference listener all read from
|
|
6
|
+
* the same singleton so theme changes propagate everywhere immediately.
|
|
7
|
+
*/
|
|
8
|
+
export type AdminBarTheme = 'system' | 'light' | 'dark';
|
|
9
|
+
declare class AdminBarThemeState {
|
|
10
|
+
pref: AdminBarTheme;
|
|
11
|
+
systemPrefersDark: boolean;
|
|
12
|
+
get resolved(): 'light' | 'dark';
|
|
13
|
+
setPref(next: AdminBarTheme): void;
|
|
14
|
+
}
|
|
15
|
+
export declare const adminBarTheme: AdminBarThemeState;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared theme state for the admin bar and editable CMS components.
|
|
3
|
+
*
|
|
4
|
+
* The View → Theme menu writes here; the bar's wrapper, every editable
|
|
5
|
+
* component's `<CssRoot>`, and the system-preference listener all read from
|
|
6
|
+
* the same singleton so theme changes propagate everywhere immediately.
|
|
7
|
+
*/
|
|
8
|
+
import { browser } from '$app/environment';
|
|
9
|
+
const STORAGE_KEY = 'cms.theme';
|
|
10
|
+
const readStoredTheme = () => {
|
|
11
|
+
if (typeof localStorage === 'undefined')
|
|
12
|
+
return null;
|
|
13
|
+
const raw = localStorage.getItem(STORAGE_KEY);
|
|
14
|
+
return raw === 'system' || raw === 'light' || raw === 'dark' ? raw : null;
|
|
15
|
+
};
|
|
16
|
+
class AdminBarThemeState {
|
|
17
|
+
pref = $state(browser ? (readStoredTheme() ?? 'system') : 'system');
|
|
18
|
+
systemPrefersDark = $state(false);
|
|
19
|
+
get resolved() {
|
|
20
|
+
return this.pref === 'system' ? (this.systemPrefersDark ? 'dark' : 'light') : this.pref;
|
|
21
|
+
}
|
|
22
|
+
setPref(next) {
|
|
23
|
+
this.pref = next;
|
|
24
|
+
try {
|
|
25
|
+
localStorage.setItem(STORAGE_KEY, next);
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
/* private mode etc. — non-fatal */
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export const adminBarTheme = new AdminBarThemeState();
|
|
33
|
+
if (browser) {
|
|
34
|
+
const mq = window.matchMedia('(prefers-color-scheme: dark)');
|
|
35
|
+
adminBarTheme.systemPrefersDark = mq.matches;
|
|
36
|
+
mq.addEventListener('change', (e) => {
|
|
37
|
+
adminBarTheme.systemPrefersDark = e.matches;
|
|
38
|
+
});
|
|
39
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import type { WithElementRef } from 'bits-ui';
|
|
3
|
+
import type { HTMLAnchorAttributes, HTMLAttributes } from 'svelte/elements';
|
|
4
|
+
import { variants, type VariantProps } from '../../variants.js';
|
|
5
|
+
|
|
6
|
+
export const badgeVariants = variants({
|
|
7
|
+
base: 'vela:inline-flex vela:items-center vela:justify-center vela:gap-1 vela:rounded-md vela:px-2 vela:py-0.5 vela:text-[11px] vela:font-medium vela:tracking-tight vela:whitespace-nowrap',
|
|
8
|
+
variants: {
|
|
9
|
+
variant: {
|
|
10
|
+
default: 'vela:bg-[var(--cms-bar-bg-hover)] vela:text-bar-text-secondary',
|
|
11
|
+
warn: 'vela:bg-[var(--cms-status-warn-bg)] vela:text-[var(--cms-status-warn-text)]',
|
|
12
|
+
success:
|
|
13
|
+
'vela:bg-[var(--cms-status-success-bg)] vela:text-[var(--cms-status-success-text)]',
|
|
14
|
+
edit: 'vela:bg-[var(--cms-status-edit-bg)] vela:text-[var(--cms-status-edit-text)]',
|
|
15
|
+
destructive: 'vela:bg-[var(--cms-status-error-bg)] vela:text-[var(--cms-status-error-text)]'
|
|
16
|
+
},
|
|
17
|
+
size: {
|
|
18
|
+
default: 'vela:px-2 vela:py-0.5 vela:text-[11px]',
|
|
19
|
+
sm: 'vela:px-1.5 vela:py-0.5 vela:text-[10px] vela:font-semibold vela:uppercase vela:tracking-wider'
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
defaultVariants: { variant: 'default', size: 'default' }
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
export type BadgeVariant = VariantProps<typeof badgeVariants>['variant'];
|
|
26
|
+
export type BadgeSize = VariantProps<typeof badgeVariants>['size'];
|
|
27
|
+
|
|
28
|
+
export type BadgeProps = WithElementRef<HTMLAttributes<HTMLSpanElement>> &
|
|
29
|
+
WithElementRef<HTMLAnchorAttributes> & {
|
|
30
|
+
variant?: BadgeVariant;
|
|
31
|
+
size?: BadgeSize;
|
|
32
|
+
};
|
|
33
|
+
</script>
|
|
34
|
+
|
|
35
|
+
<script lang="ts">
|
|
36
|
+
import { cn } from '../../utils.js';
|
|
37
|
+
|
|
38
|
+
let {
|
|
39
|
+
class: className,
|
|
40
|
+
variant = 'default',
|
|
41
|
+
size = 'default',
|
|
42
|
+
ref = $bindable(null),
|
|
43
|
+
href = undefined,
|
|
44
|
+
children,
|
|
45
|
+
...restProps
|
|
46
|
+
}: BadgeProps = $props();
|
|
47
|
+
</script>
|
|
48
|
+
|
|
49
|
+
{#if href}
|
|
50
|
+
<a bind:this={ref} class={cn(badgeVariants({ variant, size }), className)} {href} {...restProps}>
|
|
51
|
+
{@render children?.()}
|
|
52
|
+
</a>
|
|
53
|
+
{:else}
|
|
54
|
+
<span bind:this={ref} class={cn(badgeVariants({ variant, size }), className)} {...restProps}>
|
|
55
|
+
{@render children?.()}
|
|
56
|
+
</span>
|
|
57
|
+
{/if}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { WithElementRef } from 'bits-ui';
|
|
2
|
+
import type { HTMLAnchorAttributes, HTMLAttributes } from 'svelte/elements';
|
|
3
|
+
import { type VariantProps } from '../../variants.js';
|
|
4
|
+
export declare const badgeVariants: (props?: {
|
|
5
|
+
variant?: "default" | "destructive" | "warn" | "success" | "edit" | undefined;
|
|
6
|
+
size?: "default" | "sm" | undefined;
|
|
7
|
+
}) => string;
|
|
8
|
+
export type BadgeVariant = VariantProps<typeof badgeVariants>['variant'];
|
|
9
|
+
export type BadgeSize = VariantProps<typeof badgeVariants>['size'];
|
|
10
|
+
export type BadgeProps = WithElementRef<HTMLAttributes<HTMLSpanElement>> & WithElementRef<HTMLAnchorAttributes> & {
|
|
11
|
+
variant?: BadgeVariant;
|
|
12
|
+
size?: BadgeSize;
|
|
13
|
+
};
|
|
14
|
+
declare const Badge: import("svelte").Component<BadgeProps, {}, "ref">;
|
|
15
|
+
type Badge = ReturnType<typeof Badge>;
|
|
16
|
+
export default Badge;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import type { WithElementRef } from 'bits-ui';
|
|
3
|
+
import type { HTMLAnchorAttributes, HTMLButtonAttributes } from 'svelte/elements';
|
|
4
|
+
import { variants, type VariantProps } from '../../variants.js';
|
|
5
|
+
|
|
6
|
+
export const buttonVariants = variants({
|
|
7
|
+
base: 'vela:inline-flex vela:items-center vela:justify-center vela:gap-2 vela:whitespace-nowrap vela:rounded-md vela:text-sm vela:font-medium vela:transition-colors vela:focus-visible:outline-none vela:focus-visible:ring-1 vela:focus-visible:ring-ring vela:disabled:pointer-events-none vela:disabled:opacity-50 vela:cursor-pointer',
|
|
8
|
+
variants: {
|
|
9
|
+
variant: {
|
|
10
|
+
default: 'vela:bg-primary vela:text-primary-foreground vela:hover:bg-primary/90',
|
|
11
|
+
destructive:
|
|
12
|
+
'vela:bg-destructive vela:text-destructive-foreground vela:hover:bg-destructive/90',
|
|
13
|
+
outline:
|
|
14
|
+
'vela:border vela:border-[var(--cms-bar-divider)] vela:bg-transparent vela:text-bar-text-secondary vela:hover:text-bar-text vela:hover:bg-[var(--cms-bar-bg-hover)]',
|
|
15
|
+
'outline-destructive':
|
|
16
|
+
'vela:border vela:border-[var(--cms-status-error-border)] vela:bg-transparent vela:text-[var(--cms-status-error-text-base)] vela:hover:text-[var(--cms-status-error-text-hover)] vela:hover:bg-[var(--cms-status-error-bg-hover)]',
|
|
17
|
+
secondary: 'vela:bg-secondary vela:text-secondary-foreground vela:hover:bg-secondary/80',
|
|
18
|
+
ghost:
|
|
19
|
+
'vela:bg-transparent vela:text-bar-text-secondary vela:hover:text-bar-text vela:hover:bg-[var(--cms-bar-bg-hover)]',
|
|
20
|
+
link: 'vela:text-primary vela:underline-offset-4 vela:hover:underline'
|
|
21
|
+
},
|
|
22
|
+
size: {
|
|
23
|
+
default: 'vela:h-9 vela:px-4 vela:py-2',
|
|
24
|
+
sm: 'vela:h-8 vela:rounded-md vela:px-3 vela:text-xs',
|
|
25
|
+
lg: 'vela:h-10 vela:rounded-md vela:px-8',
|
|
26
|
+
icon: 'vela:h-9 vela:w-9',
|
|
27
|
+
pill: 'vela:h-7 vela:rounded-full vela:px-3 vela:text-[12px]',
|
|
28
|
+
'pill-icon': 'vela:h-7 vela:w-7 vela:rounded-full',
|
|
29
|
+
xs: 'vela:h-6 vela:rounded-md vela:px-2 vela:text-[11px]'
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
defaultVariants: { variant: 'default', size: 'default' }
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
export type ButtonVariant = VariantProps<typeof buttonVariants>['variant'];
|
|
36
|
+
export type ButtonSize = VariantProps<typeof buttonVariants>['size'];
|
|
37
|
+
|
|
38
|
+
export type ButtonProps = WithElementRef<HTMLButtonAttributes> &
|
|
39
|
+
WithElementRef<HTMLAnchorAttributes> & {
|
|
40
|
+
variant?: ButtonVariant;
|
|
41
|
+
size?: ButtonSize;
|
|
42
|
+
};
|
|
43
|
+
</script>
|
|
44
|
+
|
|
45
|
+
<script lang="ts">
|
|
46
|
+
import { cn } from '../../utils.js';
|
|
47
|
+
|
|
48
|
+
let {
|
|
49
|
+
class: className,
|
|
50
|
+
variant = 'default',
|
|
51
|
+
size = 'default',
|
|
52
|
+
ref = $bindable(null),
|
|
53
|
+
href = undefined,
|
|
54
|
+
type = 'button',
|
|
55
|
+
children,
|
|
56
|
+
...restProps
|
|
57
|
+
}: ButtonProps = $props();
|
|
58
|
+
</script>
|
|
59
|
+
|
|
60
|
+
{#if href}
|
|
61
|
+
<a bind:this={ref} class={cn(buttonVariants({ variant, size }), className)} {href} {...restProps}>
|
|
62
|
+
{@render children?.()}
|
|
63
|
+
</a>
|
|
64
|
+
{:else}
|
|
65
|
+
<button
|
|
66
|
+
bind:this={ref}
|
|
67
|
+
class={cn(buttonVariants({ variant, size }), className)}
|
|
68
|
+
{type}
|
|
69
|
+
{...restProps}
|
|
70
|
+
>
|
|
71
|
+
{@render children?.()}
|
|
72
|
+
</button>
|
|
73
|
+
{/if}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { WithElementRef } from 'bits-ui';
|
|
2
|
+
import type { HTMLAnchorAttributes, HTMLButtonAttributes } from 'svelte/elements';
|
|
3
|
+
import { type VariantProps } from '../../variants.js';
|
|
4
|
+
export declare const buttonVariants: (props?: {
|
|
5
|
+
variant?: "link" | "default" | "destructive" | "outline" | "outline-destructive" | "secondary" | "ghost" | undefined;
|
|
6
|
+
size?: "default" | "sm" | "lg" | "icon" | "pill" | "pill-icon" | "xs" | undefined;
|
|
7
|
+
}) => string;
|
|
8
|
+
export type ButtonVariant = VariantProps<typeof buttonVariants>['variant'];
|
|
9
|
+
export type ButtonSize = VariantProps<typeof buttonVariants>['size'];
|
|
10
|
+
export type ButtonProps = WithElementRef<HTMLButtonAttributes> & WithElementRef<HTMLAnchorAttributes> & {
|
|
11
|
+
variant?: ButtonVariant;
|
|
12
|
+
size?: ButtonSize;
|
|
13
|
+
};
|
|
14
|
+
declare const Button: import("svelte").Component<ButtonProps, {}, "ref">;
|
|
15
|
+
type Button = ReturnType<typeof Button>;
|
|
16
|
+
export default Button;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { Collapsible as CollapsiblePrimitive } from 'bits-ui';
|
|
3
|
+
|
|
4
|
+
let { ref = $bindable(null), ...restProps }: CollapsiblePrimitive.ContentProps = $props();
|
|
5
|
+
</script>
|
|
6
|
+
|
|
7
|
+
<CollapsiblePrimitive.Content bind:ref data-slot="collapsible-content" {...restProps} />
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Collapsible as CollapsiblePrimitive } from 'bits-ui';
|
|
2
|
+
declare const CollapsibleContent: import("svelte").Component<CollapsiblePrimitive.ContentProps, {}, "ref">;
|
|
3
|
+
type CollapsibleContent = ReturnType<typeof CollapsibleContent>;
|
|
4
|
+
export default CollapsibleContent;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { Collapsible as CollapsiblePrimitive } from 'bits-ui';
|
|
3
|
+
|
|
4
|
+
let { ref = $bindable(null), ...restProps }: CollapsiblePrimitive.TriggerProps = $props();
|
|
5
|
+
</script>
|
|
6
|
+
|
|
7
|
+
<CollapsiblePrimitive.Trigger bind:ref data-slot="collapsible-trigger" {...restProps} />
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Collapsible as CollapsiblePrimitive } from 'bits-ui';
|
|
2
|
+
declare const CollapsibleTrigger: import("svelte").Component<CollapsiblePrimitive.TriggerProps, {}, "ref">;
|
|
3
|
+
type CollapsibleTrigger = ReturnType<typeof CollapsibleTrigger>;
|
|
4
|
+
export default CollapsibleTrigger;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { Collapsible as CollapsiblePrimitive } from 'bits-ui';
|
|
3
|
+
|
|
4
|
+
let { ref = $bindable(null), ...restProps }: CollapsiblePrimitive.RootProps = $props();
|
|
5
|
+
</script>
|
|
6
|
+
|
|
7
|
+
<CollapsiblePrimitive.Root bind:ref data-slot="collapsible" {...restProps} />
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import Root from './collapsible.svelte';
|
|
2
|
+
import Trigger from './collapsible-trigger.svelte';
|
|
3
|
+
import Content from './collapsible-content.svelte';
|
|
4
|
+
export { Root, Trigger, Content,
|
|
5
|
+
//
|
|
6
|
+
Root as Collapsible, Trigger as CollapsibleTrigger, Content as CollapsibleContent };
|