@streamscloud/kit 0.2.42-1778522742378 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/files/blob-storage-registry.svelte.d.ts +28 -0
- package/dist/core/files/blob-storage-registry.svelte.js +37 -0
- package/dist/core/files/file-validation-rules.d.ts +30 -0
- package/dist/core/files/file-validation-rules.js +95 -0
- package/dist/core/files/file-validation-types.d.ts +18 -0
- package/dist/core/files/file-validator.d.ts +5 -0
- package/dist/core/files/file-validator.js +17 -0
- package/dist/core/files/index.d.ts +8 -0
- package/dist/core/files/index.js +5 -0
- package/dist/core/files/open-file.d.ts +14 -0
- package/dist/core/files/open-file.js +38 -0
- package/dist/core/files/upload-media-store.svelte.d.ts +74 -0
- package/dist/core/files/upload-media-store.svelte.js +118 -0
- package/dist/core/files/upload-types.d.ts +57 -0
- package/dist/core/transitions/durations.d.ts +5 -0
- package/dist/core/transitions/durations.js +6 -0
- package/dist/core/transitions/index.d.ts +1 -0
- package/dist/core/transitions/index.js +1 -0
- package/dist/core/transitions/slide-horizontally.js +2 -1
- package/dist/core/utils/href-validator.d.ts +1 -10
- package/dist/core/utils/href-validator.js +8 -19
- package/dist/core/validation/form-validation-handler/form-validation-handler.svelte.js +2 -0
- package/dist/fonts.d.ts +11 -0
- package/dist/fonts.js +19 -0
- package/dist/styles/_functions.scss +2 -2
- package/dist/styles/_index.scss +1 -2
- package/dist/styles/_primitives.scss +68 -0
- package/dist/styles/_reset.scss +2 -2
- package/dist/styles/_semantic.scss +188 -0
- package/dist/styles/_transitions.scss +1 -14
- package/dist/styles/reset.css +2 -2
- package/dist/ui/_internal/_affordance.scss +58 -0
- package/dist/ui/_internal/input-clear-button/cmp.input-clear-button.svelte +87 -0
- package/dist/ui/_internal/input-clear-button/cmp.input-clear-button.svelte.d.ts +33 -0
- package/dist/ui/_internal/input-clear-button/index.d.ts +1 -0
- package/dist/ui/_internal/input-clear-button/index.js +1 -0
- package/dist/ui/_internal/input-clear-button/input-clear-button-localization.d.ts +3 -0
- package/dist/ui/_internal/input-clear-button/input-clear-button-localization.js +12 -0
- package/dist/ui/_internal/input-emoji-picker/cmp.input-emoji-picker.svelte +74 -0
- package/dist/ui/_internal/input-emoji-picker/cmp.input-emoji-picker.svelte.d.ts +26 -0
- package/dist/ui/{inputs → _internal}/input-emoji-picker/index.d.ts +0 -1
- package/dist/ui/{inputs → _internal}/input-emoji-picker/index.js +0 -1
- package/dist/ui/_internal/input-password-toggle/cmp.input-password-toggle.svelte +93 -0
- package/dist/ui/_internal/input-password-toggle/cmp.input-password-toggle.svelte.d.ts +31 -0
- package/dist/ui/_internal/input-password-toggle/index.d.ts +1 -0
- package/dist/ui/_internal/input-password-toggle/index.js +1 -0
- package/dist/ui/_internal/input-password-toggle/input-password-toggle-localization.d.ts +4 -0
- package/dist/ui/_internal/input-password-toggle/input-password-toggle-localization.js +13 -0
- package/dist/ui/_internal/spinner/cmp.spinner.svelte +41 -0
- package/dist/ui/_internal/spinner/cmp.spinner.svelte.d.ts +37 -0
- package/dist/ui/_internal/spinner/index.d.ts +1 -0
- package/dist/ui/_internal/spinner/index.js +1 -0
- package/dist/ui/avatar/cmp.avatar.svelte +135 -0
- package/dist/ui/avatar/cmp.avatar.svelte.d.ts +34 -0
- package/dist/ui/avatar/index.d.ts +1 -0
- package/dist/ui/avatar/index.js +1 -0
- package/dist/ui/badge/cmp.badge.svelte +69 -60
- package/dist/ui/badge/cmp.badge.svelte.d.ts +16 -13
- package/dist/ui/badge/index.d.ts +1 -1
- package/dist/ui/badge/types.d.ts +1 -1
- package/dist/ui/banner/banner-localization.d.ts +3 -0
- package/dist/ui/banner/banner-localization.js +12 -0
- package/dist/ui/banner/cmp.banner.svelte +147 -0
- package/dist/ui/banner/cmp.banner.svelte.d.ts +44 -0
- package/dist/ui/banner/index.d.ts +1 -0
- package/dist/ui/banner/index.js +1 -0
- package/dist/ui/breadcrumb/breadcrumb-localization.d.ts +3 -0
- package/dist/ui/breadcrumb/breadcrumb-localization.js +12 -0
- package/dist/ui/breadcrumb/cmp.breadcrumb.svelte +78 -0
- package/dist/ui/breadcrumb/cmp.breadcrumb.svelte.d.ts +28 -0
- package/dist/ui/breadcrumb/index.d.ts +2 -0
- package/dist/ui/breadcrumb/index.js +1 -0
- package/dist/ui/breadcrumb/types.d.ts +14 -0
- package/dist/ui/button/cmp.button.svelte +288 -48
- package/dist/ui/button/cmp.button.svelte.d.ts +57 -50
- package/dist/ui/button/index.d.ts +1 -2
- package/dist/ui/button/index.js +0 -1
- package/dist/ui/button/types.d.ts +2 -0
- package/dist/ui/card/cmp.card.svelte +104 -0
- package/dist/ui/card/cmp.card.svelte.d.ts +42 -0
- package/dist/ui/card/index.d.ts +1 -0
- package/dist/ui/card/index.js +1 -0
- package/dist/ui/card-actions/cmp.card-action.svelte +19 -6
- package/dist/ui/card-actions/cmp.card-action.svelte.d.ts +4 -2
- package/dist/ui/card-actions/cmp.card-actions.svelte +19 -20
- package/dist/ui/card-actions/cmp.card-actions.svelte.d.ts +11 -8
- package/dist/ui/card-actions/types.d.ts +2 -3
- package/dist/ui/checkbox/cmp.checkbox.svelte +99 -76
- package/dist/ui/checkbox/cmp.checkbox.svelte.d.ts +21 -18
- package/dist/ui/checkbox/index.d.ts +0 -2
- package/dist/ui/checkbox/index.js +0 -1
- package/dist/ui/chip-group/cmp.chip-group.svelte +170 -0
- package/dist/ui/chip-group/cmp.chip-group.svelte.d.ts +84 -0
- package/dist/ui/chip-group/index.d.ts +2 -0
- package/dist/ui/chip-group/index.js +1 -0
- package/dist/ui/chip-group/types.d.ts +5 -0
- package/dist/ui/color-picker/cmp.color-picker.svelte +68 -36
- package/dist/ui/color-picker/cmp.color-picker.svelte.d.ts +37 -10
- package/dist/ui/color-picker/color-picker-localization.d.ts +1 -0
- package/dist/ui/color-picker/color-picker-localization.js +7 -0
- package/dist/ui/confirmation-dialog/cmp.confirmation-dialog.svelte +16 -13
- package/dist/ui/confirmation-dialog/cmp.confirmation-dialog.svelte.d.ts +8 -0
- package/dist/ui/cropper/image-editor-dialog/cmp.image-editor-dialog.svelte +1 -1
- package/dist/ui/cropper/image-editor-dialog/crop-and-resize.d.ts +36 -0
- package/dist/ui/cropper/image-editor-dialog/crop-and-resize.js +47 -0
- package/dist/ui/cropper/image-editor-dialog/index.d.ts +4 -2
- package/dist/ui/cropper/image-editor-dialog/index.js +3 -2
- package/dist/ui/cropper/img-cropper/cmp.img-cropper-controls.svelte +16 -15
- package/dist/ui/cropper/img-cropper/cmp.img-cropper-toolbar.svelte +9 -12
- package/dist/ui/cropper/img-cropper/cmp.img-cropper-toolbar.svelte.d.ts +1 -1
- package/dist/ui/cropper/img-cropper/cmp.img-cropper.svelte +4 -4
- package/dist/ui/cropper/img-cropper/cmp.img-cropper.svelte.d.ts +1 -1
- package/dist/ui/date-picker/cmp.date-picker-calendar.svelte +294 -0
- package/dist/ui/date-picker/cmp.date-picker-calendar.svelte.d.ts +59 -0
- package/dist/ui/date-picker/cmp.date-picker.svelte +331 -0
- package/dist/ui/date-picker/cmp.date-picker.svelte.d.ts +82 -0
- package/dist/ui/date-picker/date-picker-localization.d.ts +6 -0
- package/dist/ui/date-picker/date-picker-localization.js +33 -0
- package/dist/ui/date-picker/index.d.ts +2 -0
- package/dist/ui/date-picker/index.js +1 -0
- package/dist/ui/date-picker/types.d.ts +1 -0
- package/dist/ui/dialog/cmp.dialog-button.svelte +11 -4
- package/dist/ui/dialog/cmp.dialog-button.svelte.d.ts +14 -3
- package/dist/ui/dialog/cmp.dialog-cancel-button.svelte +10 -3
- package/dist/ui/dialog/cmp.dialog-cancel-button.svelte.d.ts +10 -1
- package/dist/ui/dialog/cmp.dialog-close-button.svelte +38 -8
- package/dist/ui/dialog/cmp.dialog-close-button.svelte.d.ts +8 -2
- package/dist/ui/dialog/cmp.dialog-container.svelte +50 -11
- package/dist/ui/dialog/cmp.dialog-container.svelte.d.ts +11 -0
- package/dist/ui/dialog/cmp.dialog-host.svelte +25 -0
- package/dist/ui/dialog/cmp.dialog-host.svelte.d.ts +15 -0
- package/dist/ui/dialog/cmp.dialog.svelte +31 -22
- package/dist/ui/dialog/cmp.dialog.svelte.d.ts +10 -8
- package/dist/ui/dialog/dialog-controller.d.ts +2 -2
- package/dist/ui/dialog/dialog-data.d.ts +4 -5
- package/dist/ui/dialog/dialog-host-mount.d.ts +6 -0
- package/dist/ui/dialog/dialog-host-mount.js +18 -0
- package/dist/ui/dialog/dialog-localization.d.ts +3 -0
- package/dist/ui/dialog/dialog-localization.js +12 -0
- package/dist/ui/dialog/dialog-store.svelte.d.ts +27 -0
- package/dist/ui/dialog/dialog-store.svelte.js +125 -0
- package/dist/ui/dialog/index.d.ts +3 -2
- package/dist/ui/dialog/index.js +2 -1
- package/dist/ui/dialog/types.svelte.d.ts +1 -1
- package/dist/ui/divider/cmp.divider.svelte +71 -0
- package/dist/ui/divider/cmp.divider.svelte.d.ts +25 -0
- package/dist/ui/divider/index.d.ts +1 -0
- package/dist/ui/divider/index.js +1 -0
- package/dist/ui/drag-and-drop/cmp.drag-source.svelte +30 -0
- package/dist/ui/drag-and-drop/cmp.drag-source.svelte.d.ts +39 -0
- package/dist/ui/drag-and-drop/cmp.drop-zone.svelte +122 -0
- package/dist/ui/drag-and-drop/cmp.drop-zone.svelte.d.ts +72 -0
- package/dist/ui/drag-and-drop/drag-and-drop.svelte.d.ts +15 -0
- package/dist/ui/drag-and-drop/drag-and-drop.svelte.js +13 -0
- package/dist/ui/drag-and-drop/index.d.ts +4 -0
- package/dist/ui/drag-and-drop/index.js +3 -0
- package/dist/ui/drag-and-drop/types.d.ts +9 -0
- package/dist/ui/drawer/cmp.drawer-view.svelte +40 -0
- package/dist/ui/drawer/cmp.drawer-view.svelte.d.ts +9 -0
- package/dist/ui/drawer/cmp.drawer.svelte +29 -0
- package/dist/ui/drawer/cmp.drawer.svelte.d.ts +29 -0
- package/dist/ui/drawer/drawer.d.ts +41 -0
- package/dist/ui/drawer/drawer.js +28 -0
- package/dist/ui/drawer/index.d.ts +3 -0
- package/dist/ui/drawer/index.js +2 -0
- package/dist/ui/dynamic-component/cmp.dynamic-component.svelte +21 -1
- package/dist/ui/dynamic-component/cmp.dynamic-component.svelte.d.ts +23 -1
- package/dist/ui/emoji-picker/cmp.emoji-panel.svelte +45 -24
- package/dist/ui/emoji-picker/cmp.emoji-panel.svelte.d.ts +7 -6
- package/dist/ui/emoji-picker/cmp.emoji-picker.svelte +37 -22
- package/dist/ui/emoji-picker/cmp.emoji-picker.svelte.d.ts +16 -5
- package/dist/ui/empty-state/cmp.empty-state.svelte +126 -0
- package/dist/ui/empty-state/cmp.empty-state.svelte.d.ts +39 -0
- package/dist/ui/empty-state/index.d.ts +1 -0
- package/dist/ui/empty-state/index.js +1 -0
- package/dist/ui/empty-state/zero-content.svg +133 -0
- package/dist/ui/file-uploader/cmp.file-row.svelte +145 -0
- package/dist/ui/file-uploader/cmp.file-row.svelte.d.ts +31 -0
- package/dist/ui/file-uploader/cmp.file-upload-progress.svelte +141 -0
- package/dist/ui/file-uploader/cmp.file-upload-progress.svelte.d.ts +25 -0
- package/dist/ui/file-uploader/cmp.file-uploader.svelte +210 -0
- package/dist/ui/file-uploader/cmp.file-uploader.svelte.d.ts +56 -0
- package/dist/ui/file-uploader/file-type-colors.d.ts +3 -0
- package/dist/ui/file-uploader/file-type-colors.js +38 -0
- package/dist/ui/file-uploader/file-uploader-localization.d.ts +4 -0
- package/dist/ui/file-uploader/file-uploader-localization.js +19 -0
- package/dist/ui/file-uploader/index.d.ts +6 -0
- package/dist/ui/file-uploader/index.js +6 -0
- package/dist/ui/file-uploader/to-uploading-file.d.ts +7 -0
- package/dist/ui/file-uploader/to-uploading-file.js +12 -0
- package/dist/ui/form-field/cmp.form-field-validatable.svelte +42 -0
- package/dist/ui/form-field/cmp.form-field-validatable.svelte.d.ts +75 -0
- package/dist/ui/form-field/cmp.form-field.svelte +55 -0
- package/dist/ui/form-field/cmp.form-field.svelte.d.ts +24 -0
- package/dist/ui/form-field/index.d.ts +2 -0
- package/dist/ui/form-field/index.js +2 -0
- package/dist/ui/grid-card/cmp.grid-card-media.svelte +170 -0
- package/dist/ui/grid-card/cmp.grid-card-media.svelte.d.ts +30 -0
- package/dist/ui/grid-card/cmp.grid-card.svelte +111 -0
- package/dist/ui/grid-card/cmp.grid-card.svelte.d.ts +39 -0
- package/dist/ui/grid-card/cmp.video-player.svelte +196 -0
- package/dist/ui/grid-card/cmp.video-player.svelte.d.ts +26 -0
- package/dist/ui/grid-card/fields/cmp.grid-card-actions-field.svelte +25 -0
- package/dist/ui/grid-card/fields/cmp.grid-card-actions-field.svelte.d.ts +21 -0
- package/dist/ui/grid-card/fields/cmp.grid-card-badge-field.svelte +28 -0
- package/dist/ui/grid-card/fields/cmp.grid-card-badge-field.svelte.d.ts +20 -0
- package/dist/ui/grid-card/fields/cmp.grid-card-button.svelte +28 -0
- package/dist/ui/grid-card/fields/cmp.grid-card-button.svelte.d.ts +17 -0
- package/dist/ui/grid-card/fields/cmp.grid-card-field.svelte +61 -0
- package/dist/ui/grid-card/fields/cmp.grid-card-field.svelte.d.ts +23 -0
- package/dist/ui/grid-card/fields/cmp.grid-card-fields.svelte +32 -0
- package/dist/ui/grid-card/fields/cmp.grid-card-fields.svelte.d.ts +17 -0
- package/dist/ui/grid-card/fields/cmp.grid-card-id-field.svelte +39 -0
- package/dist/ui/grid-card/fields/cmp.grid-card-id-field.svelte.d.ts +13 -0
- package/dist/ui/grid-card/fields/cmp.grid-card-progress-field.svelte +69 -0
- package/dist/ui/grid-card/fields/cmp.grid-card-progress-field.svelte.d.ts +30 -0
- package/dist/ui/grid-card/fields/cmp.grid-card-text-field.svelte +36 -0
- package/dist/ui/grid-card/fields/cmp.grid-card-text-field.svelte.d.ts +14 -0
- package/dist/ui/grid-card/fields/index.d.ts +8 -0
- package/dist/ui/grid-card/fields/index.js +8 -0
- package/dist/ui/grid-card/icon-checkbox-checked.svg +5 -0
- package/dist/ui/grid-card/icon-checkbox-unchecked.svg +4 -0
- package/dist/ui/grid-card/index.d.ts +4 -0
- package/dist/ui/grid-card/index.js +3 -0
- package/dist/ui/grid-card/types.d.ts +4 -0
- package/dist/ui/grouped-sidebar/cmp.grouped-sidebar-section.svelte +28 -23
- package/dist/ui/grouped-sidebar/cmp.grouped-sidebar-section.svelte.d.ts +7 -6
- package/dist/ui/grouped-sidebar/cmp.grouped-sidebar.svelte +27 -12
- package/dist/ui/grouped-sidebar/cmp.grouped-sidebar.svelte.d.ts +20 -4
- package/dist/ui/grouped-sidebar/types.svelte.js +3 -3
- package/dist/ui/handle-input/cmp.handle-input.svelte +125 -0
- package/dist/ui/handle-input/cmp.handle-input.svelte.d.ts +38 -0
- package/dist/ui/handle-input/handle-input-localization.d.ts +6 -0
- package/dist/ui/handle-input/handle-input-localization.js +33 -0
- package/dist/ui/handle-input/index.d.ts +2 -0
- package/dist/ui/handle-input/index.js +2 -0
- package/dist/ui/html-block/cmp.html-block.svelte +40 -22
- package/dist/ui/html-block/cmp.html-block.svelte.d.ts +13 -0
- package/dist/ui/icon/cmp.icon-slot.svelte +19 -0
- package/dist/ui/icon/cmp.icon-slot.svelte.d.ts +18 -0
- package/dist/ui/icon/cmp.icon.svelte +58 -34
- package/dist/ui/icon/cmp.icon.svelte.d.ts +19 -9
- package/dist/ui/icon/icon-utils.d.ts +9 -0
- package/dist/ui/icon/icon-utils.js +12 -0
- package/dist/ui/icon/index.d.ts +3 -1
- package/dist/ui/icon/index.js +2 -0
- package/dist/ui/icon/types.d.ts +8 -1
- package/dist/ui/icon-picker/cmp.icon-picker.svelte +137 -0
- package/dist/ui/icon-picker/cmp.icon-picker.svelte.d.ts +34 -0
- package/dist/ui/icon-picker/index.d.ts +2 -0
- package/dist/ui/icon-picker/index.js +1 -0
- package/dist/ui/icon-picker/types.d.ts +16 -0
- package/dist/ui/icon-picker/types.js +1 -0
- package/dist/ui/icon-text/cmp.icon-text.svelte +37 -34
- package/dist/ui/icon-text/cmp.icon-text.svelte.d.ts +18 -19
- package/dist/ui/image/cmp.image-rounded.svelte +10 -14
- package/dist/ui/image/cmp.image-rounded.svelte.d.ts +6 -4
- package/dist/ui/image/cmp.image-stub.svelte +2 -2
- package/dist/ui/image/cmp.image-stub.svelte.d.ts +1 -1
- package/dist/ui/image/cmp.image.svelte +6 -9
- package/dist/ui/image/cmp.image.svelte.d.ts +1 -1
- package/dist/ui/image/image-state.d.ts +1 -5
- package/dist/ui/image/image-state.js +3 -9
- package/dist/ui/image/index.d.ts +2 -1
- package/dist/ui/image/index.js +1 -1
- package/dist/ui/infinite-scroll/cmp.infinite-scroll.svelte +103 -0
- package/dist/ui/infinite-scroll/cmp.infinite-scroll.svelte.d.ts +27 -0
- package/dist/ui/infinite-scroll/index.d.ts +1 -0
- package/dist/ui/infinite-scroll/index.js +1 -0
- package/dist/ui/input/cmp.input.svelte +327 -0
- package/dist/ui/input/cmp.input.svelte.d.ts +38 -0
- package/dist/ui/input/index.d.ts +2 -0
- package/dist/ui/input/index.js +1 -0
- package/dist/ui/input/types.d.ts +77 -0
- package/dist/ui/input/types.js +1 -0
- package/dist/ui/line-clamp/cmp.line-clamp-auto.svelte +12 -1
- package/dist/ui/line-clamp/cmp.line-clamp-auto.svelte.d.ts +3 -1
- package/dist/ui/line-clamp/cmp.line-clamp.svelte +13 -1
- package/dist/ui/line-clamp/cmp.line-clamp.svelte.d.ts +4 -1
- package/dist/ui/link/cmp.link.svelte +72 -0
- package/dist/ui/link/cmp.link.svelte.d.ts +33 -0
- package/dist/ui/link/index.d.ts +1 -0
- package/dist/ui/link/index.js +1 -0
- package/dist/ui/listing-card/cmp.listing-card.svelte +170 -0
- package/dist/ui/listing-card/cmp.listing-card.svelte.d.ts +41 -0
- package/dist/ui/listing-card/index.d.ts +1 -0
- package/dist/ui/listing-card/index.js +1 -0
- package/dist/ui/logo/cmp.logo.svelte +77 -0
- package/dist/ui/logo/cmp.logo.svelte.d.ts +35 -0
- package/dist/ui/logo/index.d.ts +1 -0
- package/dist/ui/logo/index.js +1 -0
- package/dist/ui/media-playback/playback-manager.svelte.d.ts +3 -0
- package/dist/ui/media-playback/playback-manager.svelte.js +5 -0
- package/dist/ui/media-viewer-dialog/cmp.media-viewer-dialog.svelte +6 -5
- package/dist/ui/media-viewer-dialog/index.d.ts +2 -2
- package/dist/ui/media-viewer-dialog/index.js +3 -3
- package/dist/ui/navigation/cmp.nav-menu-account-row.svelte +146 -0
- package/dist/ui/navigation/cmp.nav-menu-account-row.svelte.d.ts +28 -0
- package/dist/ui/navigation/cmp.nav-menu-divider.svelte +14 -0
- package/dist/ui/navigation/cmp.nav-menu-divider.svelte.d.ts +22 -0
- package/dist/ui/navigation/cmp.nav-menu-group.svelte +17 -0
- package/dist/ui/{form-group/cmp.form-group.svelte.d.ts → navigation/cmp.nav-menu-group.svelte.d.ts} +4 -2
- package/dist/ui/navigation/cmp.nav-menu-header.svelte +17 -0
- package/dist/ui/navigation/cmp.nav-menu-header.svelte.d.ts +10 -0
- package/dist/ui/navigation/cmp.nav-menu-item.svelte +157 -0
- package/dist/ui/navigation/cmp.nav-menu-item.svelte.d.ts +43 -0
- package/dist/ui/navigation/cmp.nav-menu.svelte +96 -0
- package/dist/ui/navigation/cmp.nav-menu.svelte.d.ts +27 -0
- package/dist/ui/navigation/cmp.nav-rail-item.svelte +118 -0
- package/dist/ui/navigation/cmp.nav-rail-item.svelte.d.ts +38 -0
- package/dist/ui/navigation/cmp.nav-rail.svelte +216 -0
- package/dist/ui/navigation/cmp.nav-rail.svelte.d.ts +40 -0
- package/dist/ui/navigation/index.d.ts +8 -0
- package/dist/ui/navigation/index.js +8 -0
- package/dist/ui/navigation/nav-rail-localization.d.ts +4 -0
- package/dist/ui/navigation/nav-rail-localization.js +19 -0
- package/dist/ui/numeral-input/cmp.numeral-input.svelte +331 -0
- package/dist/ui/numeral-input/cmp.numeral-input.svelte.d.ts +97 -0
- package/dist/ui/numeral-input/index.d.ts +1 -0
- package/dist/ui/numeral-input/index.js +1 -0
- package/dist/ui/open-file-button/cmp.open-file-button.svelte +42 -0
- package/dist/ui/open-file-button/cmp.open-file-button.svelte.d.ts +45 -0
- package/dist/ui/open-file-button/index.d.ts +1 -0
- package/dist/ui/open-file-button/index.js +1 -0
- package/dist/ui/option-pill/cmp.option-pill.svelte +140 -0
- package/dist/ui/option-pill/cmp.option-pill.svelte.d.ts +73 -0
- package/dist/ui/option-pill/index.d.ts +2 -0
- package/dist/ui/option-pill/index.js +1 -0
- package/dist/ui/option-pill/types.d.ts +8 -0
- package/dist/ui/option-pill/types.js +1 -0
- package/dist/ui/page-header/cmp.page-header.svelte +75 -0
- package/dist/ui/page-header/cmp.page-header.svelte.d.ts +32 -0
- package/dist/ui/page-header/index.d.ts +1 -0
- package/dist/ui/page-header/index.js +1 -0
- package/dist/ui/page-layout/cmp.page-layout.svelte +171 -0
- package/dist/ui/page-layout/cmp.page-layout.svelte.d.ts +33 -0
- package/dist/ui/page-layout/cmp.page-panel-sidebars.svelte +164 -0
- package/dist/ui/page-layout/cmp.page-panel-sidebars.svelte.d.ts +30 -0
- package/dist/ui/page-layout/cmp.page-panel.svelte +377 -0
- package/dist/ui/page-layout/cmp.page-panel.svelte.d.ts +60 -0
- package/dist/ui/page-layout/cmp.page-panels.svelte +21 -0
- package/dist/ui/{form-group/cmp.form-group-label.svelte.d.ts → page-layout/cmp.page-panels.svelte.d.ts} +4 -2
- package/dist/ui/page-layout/cmp.panel-collapse-button.svelte +63 -0
- package/dist/ui/page-layout/cmp.panel-collapse-button.svelte.d.ts +23 -0
- package/dist/ui/page-layout/cmp.panel-content.svelte +21 -0
- package/dist/ui/{page-toolbar/cmp.toolbar-button-item.svelte.d.ts → page-layout/cmp.panel-content.svelte.d.ts} +2 -5
- package/dist/ui/page-layout/index.d.ts +8 -0
- package/dist/ui/page-layout/index.js +7 -0
- package/dist/ui/page-layout/page-layout-localization.d.ts +5 -0
- package/dist/ui/page-layout/page-layout-localization.js +26 -0
- package/dist/ui/page-layout/panel-state.svelte.d.ts +50 -0
- package/dist/ui/page-layout/panel-state.svelte.js +61 -0
- package/dist/ui/page-layout/types.d.ts +19 -0
- package/dist/ui/page-layout/types.js +1 -0
- package/dist/ui/page-toolbar/cmp.reorderable-toggle-list.svelte +20 -27
- package/dist/ui/page-toolbar/cmp.reorderable-toggle-list.svelte.d.ts +3 -3
- package/dist/ui/page-toolbar/cmp.toolbar-checkbox-item.svelte +3 -5
- package/dist/ui/page-toolbar/cmp.toolbar-panel-button.svelte +42 -0
- package/dist/ui/page-toolbar/cmp.toolbar-panel-button.svelte.d.ts +20 -0
- package/dist/ui/page-toolbar/cmp.toolbar-panel.svelte +17 -18
- package/dist/ui/page-toolbar/cmp.toolbar-panel.svelte.d.ts +2 -2
- package/dist/ui/page-toolbar/cmp.toolbar-popover.svelte +31 -0
- package/dist/ui/page-toolbar/cmp.toolbar-popover.svelte.d.ts +23 -0
- package/dist/ui/page-toolbar/cmp.toolbar-search-input.svelte +21 -16
- package/dist/ui/page-toolbar/cmp.toolbar-search-input.svelte.d.ts +8 -1
- package/dist/ui/page-toolbar/cmp.toolbar-segmented-control.svelte +9 -15
- package/dist/ui/page-toolbar/cmp.toolbar-segmented-control.svelte.d.ts +10 -16
- package/dist/ui/page-toolbar/cmp.toolbar-switch-item.svelte +13 -16
- package/dist/ui/page-toolbar/cmp.toolbar-switch-item.svelte.d.ts +10 -12
- package/dist/ui/page-toolbar/cmp.toolbar-toggle-item.svelte +4 -33
- package/dist/ui/page-toolbar/cmp.toolbar-toggle-item.svelte.d.ts +2 -9
- package/dist/ui/page-toolbar/index.d.ts +2 -2
- package/dist/ui/page-toolbar/index.js +2 -2
- package/dist/ui/pagination/cmp.pagination.svelte +199 -0
- package/dist/ui/pagination/cmp.pagination.svelte.d.ts +35 -0
- package/dist/ui/pagination/index.d.ts +2 -0
- package/dist/ui/pagination/index.js +2 -0
- package/dist/ui/pagination/pagination-localization.d.ts +6 -0
- package/dist/ui/pagination/pagination-localization.js +33 -0
- package/dist/ui/pagination/pagination-state.svelte.d.ts +13 -0
- package/dist/ui/pagination/pagination-state.svelte.js +35 -0
- package/dist/ui/pin-input/cmp.pin-input.svelte +154 -0
- package/dist/ui/pin-input/cmp.pin-input.svelte.d.ts +44 -0
- package/dist/ui/player/buttons/cmp.mobile-player-buttons.svelte +4 -4
- package/dist/ui/player/buttons/cmp.player-buttons.svelte +11 -11
- package/dist/ui/player/buttons/types.d.ts +2 -3
- package/dist/ui/player/carousel/cmp.carousel.svelte +6 -4
- package/dist/ui/player/carousel/cmp.carousel.svelte.d.ts +2 -1
- package/dist/ui/popover/cmp.hover-popover.svelte +64 -0
- package/dist/ui/popover/cmp.hover-popover.svelte.d.ts +52 -0
- package/dist/ui/popover/cmp.popover-item.svelte +89 -0
- package/dist/ui/popover/cmp.popover-item.svelte.d.ts +35 -0
- package/dist/ui/popover/cmp.popover.svelte +369 -0
- package/dist/ui/popover/cmp.popover.svelte.d.ts +70 -0
- package/dist/ui/popover/index.d.ts +10 -0
- package/dist/ui/popover/index.js +4 -0
- package/dist/ui/{dropdown/dropdown-ignore.d.ts → popover/popover-ignore.d.ts} +1 -1
- package/dist/ui/{dropdown/dropdown-ignore.js → popover/popover-ignore.js} +2 -2
- package/dist/ui/progress/cmp.progress.svelte +90 -21
- package/dist/ui/progress/cmp.progress.svelte.d.ts +26 -6
- package/dist/ui/radio/cmp.radio-card.svelte +157 -0
- package/dist/ui/radio/cmp.radio-card.svelte.d.ts +43 -0
- package/dist/ui/radio/cmp.radio.svelte +115 -0
- package/dist/ui/radio/cmp.radio.svelte.d.ts +37 -0
- package/dist/ui/radio/index.d.ts +2 -0
- package/dist/ui/radio/index.js +2 -0
- package/dist/ui/rich-text-input/cmp.rich-text-input.svelte +283 -0
- package/dist/ui/rich-text-input/cmp.rich-text-input.svelte.d.ts +69 -0
- package/dist/ui/rich-text-input/hugerte.declarations.d.ts +10 -0
- package/dist/ui/{inputs/rich-text-input → rich-text-input}/rich-text-input-localization.js +1 -1
- package/dist/ui/rich-text-input/types.js +1 -0
- package/dist/ui/{inputs/rich-text-input → rich-text-input}/validated-link-button.d.ts +1 -1
- package/dist/ui/{inputs/rich-text-input → rich-text-input}/validated-link-button.js +1 -1
- package/dist/ui/seek-bar/cmp.seek-bar.svelte +15 -12
- package/dist/ui/seek-bar/cmp.seek-bar.svelte.d.ts +6 -5
- package/dist/ui/seek-bar/seek-bar-localization.d.ts +3 -0
- package/dist/ui/seek-bar/seek-bar-localization.js +12 -0
- package/dist/ui/segmented-control/cmp.segmented-control.svelte +137 -85
- package/dist/ui/segmented-control/cmp.segmented-control.svelte.d.ts +46 -27
- package/dist/ui/segmented-control/index.d.ts +1 -0
- package/dist/ui/select/_select-trigger.scss +199 -0
- package/dist/ui/select/cmp.multiselect-async.svelte +54 -0
- package/dist/ui/select/cmp.multiselect-async.svelte.d.ts +79 -0
- package/dist/ui/select/cmp.multiselect-tree.svelte +115 -0
- package/dist/ui/select/cmp.multiselect-tree.svelte.d.ts +152 -0
- package/dist/ui/select/cmp.multiselect.svelte +70 -0
- package/dist/ui/select/cmp.multiselect.svelte.d.ts +78 -0
- package/dist/ui/select/cmp.singleselect-async.svelte +343 -0
- package/dist/ui/select/cmp.singleselect-async.svelte.d.ts +105 -0
- package/dist/ui/select/cmp.singleselect.svelte +136 -0
- package/dist/ui/select/cmp.singleselect.svelte.d.ts +96 -0
- package/dist/ui/select/index.d.ts +11 -0
- package/dist/ui/select/index.js +5 -0
- package/dist/ui/select/multiselect-base.svelte +565 -0
- package/dist/ui/select/multiselect-base.svelte.d.ts +81 -0
- package/dist/ui/select/multiselect-localization.d.ts +11 -0
- package/dist/ui/select/multiselect-localization.js +47 -0
- package/dist/ui/select/select-chip.svelte +123 -0
- package/dist/ui/select/select-chip.svelte.d.ts +48 -0
- package/dist/ui/select/select-core.svelte.d.ts +87 -0
- package/dist/ui/select/select-core.svelte.js +380 -0
- package/dist/ui/select/select-internals.d.ts +33 -0
- package/dist/ui/select/select-internals.js +111 -0
- package/dist/ui/select/select-listbox-localization.d.ts +4 -0
- package/dist/ui/select/select-listbox-localization.js +16 -0
- package/dist/ui/select/select-listbox.svelte +366 -0
- package/dist/ui/select/select-listbox.svelte.d.ts +93 -0
- package/dist/ui/select/singleselect-localization.d.ts +4 -0
- package/dist/ui/select/singleselect-localization.js +13 -0
- package/dist/ui/select/types.d.ts +211 -0
- package/dist/ui/select/types.js +1 -0
- package/dist/ui/skeleton/cmp.skeleton.svelte +72 -0
- package/dist/ui/skeleton/cmp.skeleton.svelte.d.ts +25 -0
- package/dist/ui/skeleton/index.d.ts +1 -0
- package/dist/ui/skeleton/index.js +1 -0
- package/dist/ui/slider/cmp.slider.svelte +160 -0
- package/dist/ui/slider/cmp.slider.svelte.d.ts +40 -0
- package/dist/ui/slider/index.d.ts +1 -0
- package/dist/ui/slider/index.js +1 -0
- package/dist/ui/spinner/cmp.spinner.svelte +156 -0
- package/dist/ui/spinner/cmp.spinner.svelte.d.ts +47 -0
- package/dist/ui/spinner/index.d.ts +1 -0
- package/dist/ui/spinner/index.js +1 -0
- package/dist/ui/stack/cmp.stack.svelte +25 -0
- package/dist/ui/stack/cmp.stack.svelte.d.ts +22 -0
- package/dist/ui/stack/index.d.ts +1 -0
- package/dist/ui/stack/index.js +1 -0
- package/dist/ui/stat/cmp.stat.svelte +105 -0
- package/dist/ui/stat/cmp.stat.svelte.d.ts +34 -0
- package/dist/ui/stat/index.d.ts +1 -0
- package/dist/ui/stat/index.js +1 -0
- package/dist/ui/stepper/cmp.stepper.svelte +286 -0
- package/dist/ui/stepper/cmp.stepper.svelte.d.ts +59 -0
- package/dist/ui/stepper/index.d.ts +1 -0
- package/dist/ui/stepper/index.js +1 -0
- package/dist/ui/stepper-dialog/cmp.stepper-dialog.svelte +221 -0
- package/dist/ui/stepper-dialog/cmp.stepper-dialog.svelte.d.ts +17 -0
- package/dist/ui/stepper-dialog/index.d.ts +2 -0
- package/dist/ui/stepper-dialog/index.js +1 -0
- package/dist/ui/stepper-dialog/stepper-dialog-localization.d.ts +6 -0
- package/dist/ui/stepper-dialog/stepper-dialog-localization.js +33 -0
- package/dist/ui/stepper-dialog/stepper-dialog.d.ts +22 -0
- package/dist/ui/stepper-dialog/stepper-dialog.js +26 -0
- package/dist/ui/stepper-dialog/types.d.ts +34 -0
- package/dist/ui/stepper-dialog/types.js +1 -0
- package/dist/ui/swipe-indicator/cmp.swipe-indicator.svelte +68 -9
- package/dist/ui/swipe-indicator/cmp.swipe-indicator.svelte.d.ts +20 -4
- package/dist/ui/table/cmp.table.svelte +115 -59
- package/dist/ui/table/cmp.table.svelte.d.ts +24 -15
- package/dist/ui/table/table-cells/table-actions-cell.svelte +14 -21
- package/dist/ui/table/table-cells/table-actions-cell.svelte.d.ts +5 -5
- package/dist/ui/table/table-cells/table-badge-cell.svelte +2 -2
- package/dist/ui/table/table-cells/table-button-cell.svelte +3 -3
- package/dist/ui/table/table-cells/table-by-cell.svelte +12 -21
- package/dist/ui/table/table-cells/table-checkbox-cell.svelte +3 -0
- package/dist/ui/table/table-cells/table-icon-cell.svelte +6 -29
- package/dist/ui/table/table-cells/table-icon-cell.svelte.d.ts +1 -10
- package/dist/ui/table/table-cells/table-move-row-cell.svelte +3 -3
- package/dist/ui/table/table-cells/table-select-cell.svelte +18 -12
- package/dist/ui/table/table-cells/table-text-cell.svelte +2 -5
- package/dist/ui/table/table-cells/table-text-cell.svelte.d.ts +1 -1
- package/dist/ui/table/table-cells/table-text-input-cell.svelte +11 -25
- package/dist/ui/table/table-columns-manager/cmp.table-columns-manager.svelte +8 -11
- package/dist/ui/table/table-columns-manager/cmp.table-columns-manager.svelte.d.ts +2 -2
- package/dist/ui/table/table-group-actions/cmp.table-group-actions.svelte +14 -14
- package/dist/ui/table/table-group-actions/cmp.table-group-actions.svelte.d.ts +1 -1
- package/dist/ui/table/table-group-actions/types.svelte.d.ts +2 -3
- package/dist/ui/table/table-headers/table-header-sortable.svelte +5 -5
- package/dist/ui/table/table-headers/table-header.svelte +3 -3
- package/dist/ui/table/table-model.svelte.d.ts +2 -1
- package/dist/ui/table/table-model.svelte.js +4 -1
- package/dist/ui/table/types.d.ts +24 -13
- package/dist/ui/tabs/cmp.tabs.svelte +154 -0
- package/dist/ui/tabs/cmp.tabs.svelte.d.ts +70 -0
- package/dist/ui/tabs/index.d.ts +2 -0
- package/dist/ui/tabs/index.js +1 -0
- package/dist/ui/textarea/cmp.textarea.svelte +254 -0
- package/dist/ui/textarea/cmp.textarea.svelte.d.ts +80 -0
- package/dist/ui/textarea/index.d.ts +1 -0
- package/dist/ui/textarea/index.js +1 -0
- package/dist/ui/time-ago/cmp.time-ago.svelte +6 -3
- package/dist/ui/time-ago/cmp.time-ago.svelte.d.ts +5 -2
- package/dist/ui/toast/cmp.toast-item.svelte +191 -0
- package/dist/ui/{form-group/cmp.form-group-note.svelte.d.ts → toast/cmp.toast-item.svelte.d.ts} +5 -2
- package/dist/ui/toast/cmp.toaster.svelte +112 -0
- package/dist/ui/toast/cmp.toaster.svelte.d.ts +29 -0
- package/dist/ui/toast/index.d.ts +3 -0
- package/dist/ui/toast/index.js +2 -0
- package/dist/ui/toast/toast-localization.d.ts +3 -0
- package/dist/ui/toast/toast-localization.js +12 -0
- package/dist/ui/toast/toast-store.svelte.d.ts +17 -0
- package/dist/ui/toast/toast-store.svelte.js +65 -0
- package/dist/ui/toast/toaster-host.svelte.d.ts +6 -0
- package/dist/ui/toast/toaster-host.svelte.js +18 -0
- package/dist/ui/toast/toastr.d.ts +17 -0
- package/dist/ui/toast/toastr.js +30 -0
- package/dist/ui/toast/types.d.ts +27 -0
- package/dist/ui/toast/types.js +1 -0
- package/dist/ui/toggle/cmp.toggle.svelte +169 -77
- package/dist/ui/toggle/cmp.toggle.svelte.d.ts +33 -11
- package/dist/ui/tooltip/cmp.tooltip.svelte +125 -155
- package/dist/ui/tooltip/cmp.tooltip.svelte.d.ts +23 -19
- package/dist/ui/tooltip/index.d.ts +0 -1
- package/dist/ui/tree/cmp.tree-node-view.svelte +342 -0
- package/dist/ui/tree/cmp.tree-node-view.svelte.d.ts +12 -0
- package/dist/ui/tree/cmp.tree.svelte +65 -0
- package/dist/ui/tree/cmp.tree.svelte.d.ts +32 -0
- package/dist/ui/tree/index.d.ts +4 -0
- package/dist/ui/tree/index.js +2 -0
- package/dist/ui/tree/tree-navigation.svelte.d.ts +14 -0
- package/dist/ui/tree/tree-navigation.svelte.js +99 -0
- package/dist/ui/tree/tree-node-action.d.ts +8 -0
- package/dist/ui/tree/tree-node-action.js +1 -0
- package/dist/ui/tree/tree-node-drag-config.svelte.d.ts +16 -0
- package/dist/ui/tree/tree-node-drag-config.svelte.js +4 -0
- package/dist/ui/tree/tree-node.svelte.d.ts +81 -0
- package/dist/ui/tree/tree-node.svelte.js +232 -0
- package/dist/ui/typography/cmp.heading.svelte +77 -0
- package/dist/ui/typography/cmp.heading.svelte.d.ts +29 -0
- package/dist/ui/typography/cmp.text.svelte +68 -0
- package/dist/ui/typography/cmp.text.svelte.d.ts +32 -0
- package/dist/ui/typography/index.d.ts +2 -0
- package/dist/ui/typography/index.js +2 -0
- package/dist/ui/usage/cmp.usage-row.svelte +85 -0
- package/dist/ui/usage/cmp.usage-row.svelte.d.ts +29 -0
- package/dist/ui/usage/cmp.usage.svelte +50 -0
- package/dist/ui/usage/cmp.usage.svelte.d.ts +23 -0
- package/dist/ui/usage/index.d.ts +2 -0
- package/dist/ui/usage/index.js +2 -0
- package/dist/ui/validatable/cmp.field-error.svelte +36 -0
- package/dist/ui/validatable/cmp.field-error.svelte.d.ts +17 -0
- package/dist/ui/validatable/cmp.validatable.svelte +86 -50
- package/dist/ui/validatable/cmp.validatable.svelte.d.ts +72 -28
- package/dist/ui/validatable/cmp.validation-error.svelte +8 -45
- package/dist/ui/validatable/cmp.validation-error.svelte.d.ts +3 -8
- package/dist/ui/validatable/index.d.ts +1 -0
- package/dist/ui/video/cmp.video.svelte +7 -7
- package/dist/ui/visual-select/cmp.visual-select.svelte +154 -0
- package/dist/ui/visual-select/cmp.visual-select.svelte.d.ts +78 -0
- package/dist/ui/visual-select/index.d.ts +1 -0
- package/dist/ui/visual-select/index.js +1 -0
- package/dist/ui/website-input/cmp.website-input.svelte +78 -0
- package/dist/ui/website-input/cmp.website-input.svelte.d.ts +25 -0
- package/dist/ui/website-input/index.d.ts +1 -0
- package/dist/ui/website-input/index.js +1 -0
- package/dist/ui/website-input/website-input-localization.d.ts +3 -0
- package/dist/ui/website-input/website-input-localization.js +12 -0
- package/package.json +240 -89
- package/dist/core/toastr/index.d.ts +0 -3
- package/dist/core/toastr/index.js +0 -2
- package/dist/core/toastr/toaster-host.svelte.d.ts +0 -7
- package/dist/core/toastr/toaster-host.svelte.js +0 -41
- package/dist/core/toastr/toastr.scss +0 -66
- package/dist/core/toastr/toastr.svelte.d.ts +0 -8
- package/dist/core/toastr/toastr.svelte.js +0 -30
- package/dist/core/toastr/types.d.ts +0 -16
- package/dist/styles/_colors.scss +0 -126
- package/dist/styles/_form-group.scss +0 -37
- package/dist/styles/_input.scss +0 -100
- package/dist/styles/_row.scss +0 -81
- package/dist/styles/_theme.scss +0 -68
- package/dist/ui/button/cmp.options-button.svelte +0 -214
- package/dist/ui/button/cmp.options-button.svelte.d.ts +0 -38
- package/dist/ui/button/resources/button-base.svelte +0 -81
- package/dist/ui/button/resources/button-base.svelte.d.ts +0 -13
- package/dist/ui/button/resources/button-theme.svelte +0 -335
- package/dist/ui/button/resources/button-theme.svelte.d.ts +0 -10
- package/dist/ui/button/resources/types.d.ts +0 -2
- package/dist/ui/checkbox/cmp.three-state-checkbox.svelte +0 -117
- package/dist/ui/checkbox/cmp.three-state-checkbox.svelte.d.ts +0 -37
- package/dist/ui/checkbox/types.d.ts +0 -1
- package/dist/ui/datetime-picker/cmp.datetime-picker.svelte +0 -292
- package/dist/ui/datetime-picker/cmp.datetime-picker.svelte.d.ts +0 -37
- package/dist/ui/datetime-picker/datetime-picker-localization.d.ts +0 -5
- package/dist/ui/datetime-picker/datetime-picker-localization.js +0 -26
- package/dist/ui/datetime-picker/flatpickr-theme.d.ts +0 -1
- package/dist/ui/datetime-picker/flatpickr-theme.js +0 -13
- package/dist/ui/datetime-picker/index.d.ts +0 -2
- package/dist/ui/datetime-picker/index.js +0 -1
- package/dist/ui/datetime-picker/types.d.ts +0 -16
- package/dist/ui/dialog/dialog-mount.d.ts +0 -3
- package/dist/ui/dialog/dialog-mount.js +0 -19
- package/dist/ui/dialog/dialogs.svelte.d.ts +0 -16
- package/dist/ui/dialog/dialogs.svelte.js +0 -86
- package/dist/ui/dropdown/cmp.dropdown-item.svelte +0 -93
- package/dist/ui/dropdown/cmp.dropdown-item.svelte.d.ts +0 -32
- package/dist/ui/dropdown/cmp.dropdown.svelte +0 -289
- package/dist/ui/dropdown/cmp.dropdown.svelte.d.ts +0 -48
- package/dist/ui/dropdown/index.d.ts +0 -4
- package/dist/ui/dropdown/index.js +0 -3
- package/dist/ui/form-group/cmp.form-group-label.svelte +0 -25
- package/dist/ui/form-group/cmp.form-group-note.svelte +0 -16
- package/dist/ui/form-group/cmp.form-group.svelte +0 -16
- package/dist/ui/form-group/index.d.ts +0 -3
- package/dist/ui/form-group/index.js +0 -3
- package/dist/ui/infinite-scrolling/cmp.infinite-scrolling.svelte +0 -101
- package/dist/ui/infinite-scrolling/cmp.infinite-scrolling.svelte.d.ts +0 -25
- package/dist/ui/infinite-scrolling/index.d.ts +0 -1
- package/dist/ui/infinite-scrolling/index.js +0 -1
- package/dist/ui/inputs/index.d.ts +0 -6
- package/dist/ui/inputs/index.js +0 -5
- package/dist/ui/inputs/input/cmp.input-validatable.svelte +0 -57
- package/dist/ui/inputs/input/cmp.input-validatable.svelte.d.ts +0 -57
- package/dist/ui/inputs/input/cmp.input.svelte +0 -241
- package/dist/ui/inputs/input/cmp.input.svelte.d.ts +0 -61
- package/dist/ui/inputs/input/index.d.ts +0 -2
- package/dist/ui/inputs/input/index.js +0 -2
- package/dist/ui/inputs/input-emoji-picker/cmp.input-emoji-picker.svelte +0 -44
- package/dist/ui/inputs/input-emoji-picker/cmp.input-emoji-picker.svelte.d.ts +0 -9
- package/dist/ui/inputs/input-emoji-picker/input-emoji-picker-container.d.ts +0 -2
- package/dist/ui/inputs/input-emoji-picker/input-emoji-picker-container.js +0 -16
- package/dist/ui/inputs/numeral-input/cmp.numeral-input-validatable.svelte +0 -55
- package/dist/ui/inputs/numeral-input/cmp.numeral-input-validatable.svelte.d.ts +0 -62
- package/dist/ui/inputs/numeral-input/cmp.numeral-input.svelte +0 -254
- package/dist/ui/inputs/numeral-input/cmp.numeral-input.svelte.d.ts +0 -66
- package/dist/ui/inputs/numeral-input/index.d.ts +0 -2
- package/dist/ui/inputs/numeral-input/index.js +0 -2
- package/dist/ui/inputs/pin-input/cmp.pin-input.svelte +0 -58
- package/dist/ui/inputs/pin-input/cmp.pin-input.svelte.d.ts +0 -23
- package/dist/ui/inputs/pin-input/pin-input-generator.d.ts +0 -27
- package/dist/ui/inputs/pin-input/pin-input-generator.js +0 -114
- package/dist/ui/inputs/rich-text-input/cmp.rich-text-input.svelte +0 -55
- package/dist/ui/inputs/rich-text-input/cmp.rich-text-input.svelte.d.ts +0 -43
- package/dist/ui/inputs/rich-text-input/tinymce-input.svelte +0 -252
- package/dist/ui/inputs/rich-text-input/tinymce-input.svelte.d.ts +0 -25
- package/dist/ui/inputs/rich-text-input/tinymce.declarations.d.ts +0 -7
- package/dist/ui/inputs/textarea/cmp.textarea-validatable.svelte +0 -35
- package/dist/ui/inputs/textarea/cmp.textarea-validatable.svelte.d.ts +0 -54
- package/dist/ui/inputs/textarea/cmp.textarea.svelte +0 -249
- package/dist/ui/inputs/textarea/cmp.textarea.svelte.d.ts +0 -58
- package/dist/ui/inputs/textarea/index.d.ts +0 -2
- package/dist/ui/inputs/textarea/index.js +0 -2
- package/dist/ui/loading/cmp.loading.svelte +0 -93
- package/dist/ui/loading/cmp.loading.svelte.d.ts +0 -22
- package/dist/ui/loading/index.d.ts +0 -1
- package/dist/ui/loading/index.js +0 -1
- package/dist/ui/multiselect-dropdown/cmp.checkbox-node.svelte +0 -76
- package/dist/ui/multiselect-dropdown/cmp.checkbox-node.svelte.d.ts +0 -14
- package/dist/ui/multiselect-dropdown/cmp.multiselect-dropdown.svelte +0 -276
- package/dist/ui/multiselect-dropdown/cmp.multiselect-dropdown.svelte.d.ts +0 -45
- package/dist/ui/multiselect-dropdown/index.d.ts +0 -3
- package/dist/ui/multiselect-dropdown/index.js +0 -2
- package/dist/ui/multiselect-dropdown/mapper.d.ts +0 -3
- package/dist/ui/multiselect-dropdown/mapper.js +0 -39
- package/dist/ui/multiselect-dropdown/multiselect-dropdown-localization.d.ts +0 -11
- package/dist/ui/multiselect-dropdown/multiselect-dropdown-localization.js +0 -41
- package/dist/ui/multiselect-dropdown/types.d.ts +0 -10
- package/dist/ui/page-toolbar/cmp.toolbar-button-item.svelte +0 -34
- package/dist/ui/page-toolbar/cmp.toolbar-dropdown.svelte +0 -29
- package/dist/ui/page-toolbar/cmp.toolbar-dropdown.svelte.d.ts +0 -17
- package/dist/ui/placeholder/cmp.placeholder.svelte +0 -65
- package/dist/ui/placeholder/cmp.placeholder.svelte.d.ts +0 -19
- package/dist/ui/placeholder/index.d.ts +0 -1
- package/dist/ui/placeholder/index.js +0 -1
- package/dist/ui/selects/_multiselect.scss +0 -282
- package/dist/ui/selects/_singleselect.scss +0 -176
- package/dist/ui/selects/cmp.multiselect.svelte +0 -531
- package/dist/ui/selects/cmp.multiselect.svelte.d.ts +0 -87
- package/dist/ui/selects/cmp.search-multiselect.svelte +0 -533
- package/dist/ui/selects/cmp.search-multiselect.svelte.d.ts +0 -69
- package/dist/ui/selects/cmp.singleselect.svelte +0 -386
- package/dist/ui/selects/cmp.singleselect.svelte.d.ts +0 -80
- package/dist/ui/selects/index.d.ts +0 -5
- package/dist/ui/selects/index.js +0 -4
- package/dist/ui/selects/select-localization.d.ts +0 -6
- package/dist/ui/selects/select-localization.js +0 -27
- package/dist/ui/selects/types.d.ts +0 -29
- package/dist/ui/tooltip/types.d.ts +0 -2
- package/dist/ui/validatable/_validatable.scss +0 -34
- /package/dist/core/{toastr/types.js → files/file-validation-types.js} +0 -0
- /package/dist/{ui/button/resources/types.js → core/files/upload-types.js} +0 -0
- /package/dist/ui/{checkbox → breadcrumb}/types.js +0 -0
- /package/dist/ui/{datetime-picker → button}/types.js +0 -0
- /package/dist/ui/{inputs/rich-text-input → chip-group}/types.js +0 -0
- /package/dist/ui/{multiselect-dropdown → date-picker}/types.js +0 -0
- /package/dist/ui/{selects → drag-and-drop}/types.js +0 -0
- /package/dist/ui/{tooltip → grid-card}/types.js +0 -0
- /package/dist/ui/{inputs/pin-input → pin-input}/index.d.ts +0 -0
- /package/dist/ui/{inputs/pin-input → pin-input}/index.js +0 -0
- /package/dist/ui/{inputs/rich-text-input → rich-text-input}/index.d.ts +0 -0
- /package/dist/ui/{inputs/rich-text-input → rich-text-input}/index.js +0 -0
- /package/dist/ui/{inputs/rich-text-input → rich-text-input}/rich-text-input-localization.d.ts +0 -0
- /package/dist/ui/{inputs/rich-text-input → rich-text-input}/types.d.ts +0 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { BlobUploadStrategy } from './upload-types';
|
|
2
|
+
/**
|
|
3
|
+
* Global registry for the blob upload strategy. Consumers register exactly one strategy at app
|
|
4
|
+
* bootstrap; `UploadMediaStore` reads from this registry on `.upload()`. Mirrors the Toastr /
|
|
5
|
+
* DialogHost pattern — one configured instance, accessible from anywhere.
|
|
6
|
+
*
|
|
7
|
+
* A per-instance override on `UploadMediaStore` is still available for tests and exotic
|
|
8
|
+
* contexts (e.g. mock backends in stories).
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* // app bootstrap:
|
|
13
|
+
* BlobStorage.register(async ({ count, kind }) => {
|
|
14
|
+
* const type = kindToGraphqlType(kind);
|
|
15
|
+
* const r = await graphql.mutation(CreateBlobUploads, { type, count });
|
|
16
|
+
* return r.data.createBlobUploads;
|
|
17
|
+
* });
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
declare class BlobStorageRegistry {
|
|
21
|
+
private _strategy;
|
|
22
|
+
get strategy(): BlobUploadStrategy;
|
|
23
|
+
get isRegistered(): boolean;
|
|
24
|
+
register(strategy: BlobUploadStrategy): void;
|
|
25
|
+
unregister(): void;
|
|
26
|
+
}
|
|
27
|
+
export declare const BlobStorage: BlobStorageRegistry;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global registry for the blob upload strategy. Consumers register exactly one strategy at app
|
|
3
|
+
* bootstrap; `UploadMediaStore` reads from this registry on `.upload()`. Mirrors the Toastr /
|
|
4
|
+
* DialogHost pattern — one configured instance, accessible from anywhere.
|
|
5
|
+
*
|
|
6
|
+
* A per-instance override on `UploadMediaStore` is still available for tests and exotic
|
|
7
|
+
* contexts (e.g. mock backends in stories).
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* // app bootstrap:
|
|
12
|
+
* BlobStorage.register(async ({ count, kind }) => {
|
|
13
|
+
* const type = kindToGraphqlType(kind);
|
|
14
|
+
* const r = await graphql.mutation(CreateBlobUploads, { type, count });
|
|
15
|
+
* return r.data.createBlobUploads;
|
|
16
|
+
* });
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
class BlobStorageRegistry {
|
|
20
|
+
_strategy = $state.raw(null);
|
|
21
|
+
get strategy() {
|
|
22
|
+
if (!this._strategy) {
|
|
23
|
+
throw new Error('BlobStorage: no strategy registered. Call BlobStorage.register(...) at app bootstrap.');
|
|
24
|
+
}
|
|
25
|
+
return this._strategy;
|
|
26
|
+
}
|
|
27
|
+
get isRegistered() {
|
|
28
|
+
return this._strategy !== null;
|
|
29
|
+
}
|
|
30
|
+
register(strategy) {
|
|
31
|
+
this._strategy = strategy;
|
|
32
|
+
}
|
|
33
|
+
unregister() {
|
|
34
|
+
this._strategy = null;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export const BlobStorage = new BlobStorageRegistry();
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { FileValidationRule } from './file-validation-types';
|
|
2
|
+
/**
|
|
3
|
+
* Built-in rule factories. Each takes a constraint plus the consumer-supplied localized message
|
|
4
|
+
* — kit never ships English error strings. Returned rule is a callable function; the `Mime`
|
|
5
|
+
* factory additionally attaches `.accept` so containing UI cmps (`FileUploader`,
|
|
6
|
+
* `OpenFileButton`) can auto-derive the native picker filter / drag-over hint.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* const rules = [
|
|
11
|
+
* FileRules.Mime('image/*', 'Please pick an image.'),
|
|
12
|
+
* FileRules.MaxSize(5 * 1024 * 1024, 'Image must be under 5 MB.')
|
|
13
|
+
* ];
|
|
14
|
+
* const results = await FileValidator.validateMany(files, rules);
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export declare const FileRules: {
|
|
18
|
+
MaxSize: (bytes: number, message: string) => FileValidationRule;
|
|
19
|
+
Mime: (accept: string, message: string) => FileValidationRule;
|
|
20
|
+
ImageDimensions: (max: {
|
|
21
|
+
width: number;
|
|
22
|
+
height: number;
|
|
23
|
+
}, message: string) => FileValidationRule;
|
|
24
|
+
ImageMinDimensions: (min: {
|
|
25
|
+
width: number;
|
|
26
|
+
height: number;
|
|
27
|
+
}, message: string) => FileValidationRule;
|
|
28
|
+
AudioDuration: (maxSeconds: number, message: string) => FileValidationRule;
|
|
29
|
+
VideoDuration: (maxSeconds: number, message: string) => FileValidationRule;
|
|
30
|
+
};
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Permissive `accept`-style matcher. Tokens may be MIMEs (`image/*`, `application/pdf`) or
|
|
3
|
+
* extensions (`.pdf`). Empty accept = match anything. Unlike `matchesAcceptedFileTypes` from
|
|
4
|
+
* `./file-types`, this does NOT cross-check against an internal whitelist — only the
|
|
5
|
+
* consumer's accept string drives the decision.
|
|
6
|
+
*/
|
|
7
|
+
const matchesAccept = (file, accept) => {
|
|
8
|
+
if (!accept) {
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
const tokens = accept
|
|
12
|
+
.split(',')
|
|
13
|
+
.map((s) => s.trim().toLowerCase())
|
|
14
|
+
.filter(Boolean);
|
|
15
|
+
if (tokens.length === 0) {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
const fileType = (file.type || '').toLowerCase();
|
|
19
|
+
const fileName = file.name.toLowerCase();
|
|
20
|
+
return tokens.some((t) => {
|
|
21
|
+
if (t.startsWith('.')) {
|
|
22
|
+
return fileName.endsWith(t);
|
|
23
|
+
}
|
|
24
|
+
if (t.endsWith('/*')) {
|
|
25
|
+
return fileType.startsWith(t.slice(0, -1));
|
|
26
|
+
}
|
|
27
|
+
return fileType === t;
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
const readImageDimensions = (file) => new Promise((resolve, reject) => {
|
|
31
|
+
const url = URL.createObjectURL(file);
|
|
32
|
+
const img = new Image();
|
|
33
|
+
img.onload = () => {
|
|
34
|
+
URL.revokeObjectURL(url);
|
|
35
|
+
resolve({ width: img.naturalWidth, height: img.naturalHeight });
|
|
36
|
+
};
|
|
37
|
+
img.onerror = () => {
|
|
38
|
+
URL.revokeObjectURL(url);
|
|
39
|
+
reject(new Error('Failed to read image dimensions'));
|
|
40
|
+
};
|
|
41
|
+
img.src = url;
|
|
42
|
+
});
|
|
43
|
+
const readMediaDuration = (file, kind) => new Promise((resolve, reject) => {
|
|
44
|
+
const url = URL.createObjectURL(file);
|
|
45
|
+
const el = kind === 'video' ? document.createElement('video') : document.createElement('audio');
|
|
46
|
+
el.preload = 'metadata';
|
|
47
|
+
el.onloadedmetadata = () => {
|
|
48
|
+
URL.revokeObjectURL(url);
|
|
49
|
+
resolve(el.duration);
|
|
50
|
+
};
|
|
51
|
+
el.onerror = () => {
|
|
52
|
+
URL.revokeObjectURL(url);
|
|
53
|
+
reject(new Error(`Failed to read ${kind} duration`));
|
|
54
|
+
};
|
|
55
|
+
el.src = url;
|
|
56
|
+
});
|
|
57
|
+
/**
|
|
58
|
+
* Built-in rule factories. Each takes a constraint plus the consumer-supplied localized message
|
|
59
|
+
* — kit never ships English error strings. Returned rule is a callable function; the `Mime`
|
|
60
|
+
* factory additionally attaches `.accept` so containing UI cmps (`FileUploader`,
|
|
61
|
+
* `OpenFileButton`) can auto-derive the native picker filter / drag-over hint.
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```ts
|
|
65
|
+
* const rules = [
|
|
66
|
+
* FileRules.Mime('image/*', 'Please pick an image.'),
|
|
67
|
+
* FileRules.MaxSize(5 * 1024 * 1024, 'Image must be under 5 MB.')
|
|
68
|
+
* ];
|
|
69
|
+
* const results = await FileValidator.validateMany(files, rules);
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export const FileRules = {
|
|
73
|
+
MaxSize: (bytes, message) => (file) => file.size > bytes ? message : null,
|
|
74
|
+
Mime: (accept, message) => {
|
|
75
|
+
const rule = (file) => (matchesAccept(file, accept) ? null : message);
|
|
76
|
+
rule.accept = accept;
|
|
77
|
+
return rule;
|
|
78
|
+
},
|
|
79
|
+
ImageDimensions: (max, message) => async (file) => {
|
|
80
|
+
const { width, height } = await readImageDimensions(file);
|
|
81
|
+
return width > max.width || height > max.height ? message : null;
|
|
82
|
+
},
|
|
83
|
+
ImageMinDimensions: (min, message) => async (file) => {
|
|
84
|
+
const { width, height } = await readImageDimensions(file);
|
|
85
|
+
return width < min.width || height < min.height ? message : null;
|
|
86
|
+
},
|
|
87
|
+
AudioDuration: (maxSeconds, message) => async (file) => {
|
|
88
|
+
const duration = await readMediaDuration(file, 'audio');
|
|
89
|
+
return duration > maxSeconds ? message : null;
|
|
90
|
+
},
|
|
91
|
+
VideoDuration: (maxSeconds, message) => async (file) => {
|
|
92
|
+
const duration = await readMediaDuration(file, 'video');
|
|
93
|
+
return duration > maxSeconds ? message : null;
|
|
94
|
+
}
|
|
95
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single async validation rule. Returns `null` (or empty array) when the file is valid,
|
|
3
|
+
* a string (or array of strings) when invalid. The consumer supplies the localized message
|
|
4
|
+
* when constructing the rule — kit ships only rule factories, never English defaults.
|
|
5
|
+
*
|
|
6
|
+
* Optional `accept` property: when set (only the `FileRules.Mime` factory does this), the
|
|
7
|
+
* containing UI cmps (`FileUploader`, `OpenFileButton`) auto-derive the native picker filter
|
|
8
|
+
* + drag-over visual hint from it. Lets the consumer write the MIME pattern exactly once.
|
|
9
|
+
*/
|
|
10
|
+
export type FileValidationRule = ((file: File) => string | string[] | null | Promise<string | string[] | null>) & {
|
|
11
|
+
accept?: string;
|
|
12
|
+
};
|
|
13
|
+
/** Aggregate validation result for a single file across one or more rules. */
|
|
14
|
+
export type FileValidationResult = {
|
|
15
|
+
file: File;
|
|
16
|
+
isValid: boolean;
|
|
17
|
+
errors: string[];
|
|
18
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { FileValidationResult, FileValidationRule } from './file-validation-types';
|
|
2
|
+
export declare class FileValidator {
|
|
3
|
+
static validate(file: File, rules: FileValidationRule[]): Promise<FileValidationResult>;
|
|
4
|
+
static validateMany(files: File[], rules: FileValidationRule[]): Promise<FileValidationResult[]>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const toArray = (v) => (v === null ? [] : Array.isArray(v) ? v : [v]);
|
|
2
|
+
export class FileValidator {
|
|
3
|
+
static async validate(file, rules) {
|
|
4
|
+
const errors = [];
|
|
5
|
+
for (const rule of rules) {
|
|
6
|
+
const result = await rule(file);
|
|
7
|
+
const msgs = toArray(result);
|
|
8
|
+
if (msgs.length > 0) {
|
|
9
|
+
errors.push(...msgs);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
return { file, isValid: errors.length === 0, errors };
|
|
13
|
+
}
|
|
14
|
+
static async validateMany(files, rules) {
|
|
15
|
+
return Promise.all(files.map((f) => FileValidator.validate(f, rules)));
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
export type { BlobWithName, FileWithBlobUrl, FileWithUploadUrl } from './types';
|
|
2
|
+
export type { FileValidationResult, FileValidationRule } from './file-validation-types';
|
|
3
|
+
export type { BlobKind, BlobKinds, BlobUpload, BlobUploadStrategy, UploadingFile, UploadingFileStatus } from './upload-types';
|
|
4
|
+
export type { UploadMediaStoreOptions } from './upload-media-store.svelte';
|
|
2
5
|
export { toBlobWithName, toFileWithUploadUrl } from './types';
|
|
3
6
|
export { uploadBlob } from './blob-storage';
|
|
7
|
+
export { openFile } from './open-file';
|
|
4
8
|
export { FileHelper } from './file-helper';
|
|
5
9
|
export { downloadBlob, downloadFromUrl, downloadJson, fetchFile } from './file-service';
|
|
6
10
|
export { AcceptFileType, matchesAcceptedFileTypes } from './file-types';
|
|
7
11
|
export { resizeBlob, resizeImage } from './image-resizer';
|
|
8
12
|
export { FileWithBlobDataHelper } from './file-with-blob-data-helper';
|
|
9
13
|
export { FilesProvider } from './files-provider';
|
|
14
|
+
export { FileValidator } from './file-validator';
|
|
15
|
+
export { FileRules } from './file-validation-rules';
|
|
16
|
+
export { BlobStorage } from './blob-storage-registry.svelte';
|
|
17
|
+
export { UploadMediaStore } from './upload-media-store.svelte';
|
package/dist/core/files/index.js
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
// Utilities
|
|
2
2
|
export { toBlobWithName, toFileWithUploadUrl } from './types';
|
|
3
3
|
export { uploadBlob } from './blob-storage';
|
|
4
|
+
export { openFile } from './open-file';
|
|
4
5
|
export { FileHelper } from './file-helper';
|
|
5
6
|
export { downloadBlob, downloadFromUrl, downloadJson, fetchFile } from './file-service';
|
|
6
7
|
export { AcceptFileType, matchesAcceptedFileTypes } from './file-types';
|
|
7
8
|
export { resizeBlob, resizeImage } from './image-resizer';
|
|
8
9
|
export { FileWithBlobDataHelper } from './file-with-blob-data-helper';
|
|
9
10
|
export { FilesProvider } from './files-provider';
|
|
11
|
+
export { FileValidator } from './file-validator';
|
|
12
|
+
export { FileRules } from './file-validation-rules';
|
|
13
|
+
export { BlobStorage } from './blob-storage-registry.svelte';
|
|
14
|
+
export { UploadMediaStore } from './upload-media-store.svelte';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Programmatically open a native file picker. Creates a hidden `<input type="file">`, awaits
|
|
3
|
+
* the `change` event, and resolves with the selected files (or empty array on cancel).
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* const files = await openFile({ multiple: true, accept: 'image/*' });
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
export declare const openFile: (opts?: {
|
|
11
|
+
multiple?: boolean;
|
|
12
|
+
accept?: string;
|
|
13
|
+
capture?: "user" | "environment";
|
|
14
|
+
}) => Promise<File[]>;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Programmatically open a native file picker. Creates a hidden `<input type="file">`, awaits
|
|
3
|
+
* the `change` event, and resolves with the selected files (or empty array on cancel).
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* const files = await openFile({ multiple: true, accept: 'image/*' });
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
export const openFile = (opts) => new Promise((resolve) => {
|
|
11
|
+
const input = document.createElement('input');
|
|
12
|
+
input.type = 'file';
|
|
13
|
+
if (opts?.multiple) {
|
|
14
|
+
input.multiple = true;
|
|
15
|
+
}
|
|
16
|
+
if (opts?.accept) {
|
|
17
|
+
input.accept = opts.accept;
|
|
18
|
+
}
|
|
19
|
+
if (opts?.capture) {
|
|
20
|
+
input.capture = opts.capture;
|
|
21
|
+
}
|
|
22
|
+
input.style.display = 'none';
|
|
23
|
+
// Fire-and-forget — both `change` (file picked) and `cancel` (dialog dismissed) clean up.
|
|
24
|
+
const cleanup = () => {
|
|
25
|
+
input.remove();
|
|
26
|
+
};
|
|
27
|
+
input.onchange = () => {
|
|
28
|
+
const files = Array.from(input.files ?? []);
|
|
29
|
+
cleanup();
|
|
30
|
+
resolve(files);
|
|
31
|
+
};
|
|
32
|
+
input.oncancel = () => {
|
|
33
|
+
cleanup();
|
|
34
|
+
resolve([]);
|
|
35
|
+
};
|
|
36
|
+
document.body.appendChild(input);
|
|
37
|
+
input.click();
|
|
38
|
+
});
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { BlobKind, BlobUploadStrategy, UploadingFile } from './upload-types';
|
|
2
|
+
export type UploadMediaStoreOptions = {
|
|
3
|
+
/** Discriminator forwarded to the registered `BlobUploadStrategy`. */
|
|
4
|
+
kind?: BlobKind;
|
|
5
|
+
/**
|
|
6
|
+
* Override the globally registered `BlobStorage` strategy for this store instance.
|
|
7
|
+
* Useful for tests / stories.
|
|
8
|
+
*/
|
|
9
|
+
strategy?: BlobUploadStrategy;
|
|
10
|
+
/**
|
|
11
|
+
* Auto-resize images before upload. Pass `false` to disable; pass an object to override the
|
|
12
|
+
* defaults. `max1` / `max2` are not tied to width / height — the longer side is matched to
|
|
13
|
+
* the larger limit. @default `{ max1: 1600, max2: 1000 }`
|
|
14
|
+
*/
|
|
15
|
+
resize?: {
|
|
16
|
+
max1: number;
|
|
17
|
+
max2: number;
|
|
18
|
+
} | false;
|
|
19
|
+
/** Parallel upload limit. @default 20 */
|
|
20
|
+
concurrency?: number;
|
|
21
|
+
on?: {
|
|
22
|
+
/** Fires per file once its presigned URL is allocated and the blob is uploaded. */
|
|
23
|
+
blobId?: (file: UploadingFile, blobId: string) => void;
|
|
24
|
+
/** Fires per file when the upload errors out. */
|
|
25
|
+
error?: (file: UploadingFile, error: unknown) => void;
|
|
26
|
+
/** Fires once after all queued files have either succeeded or errored. */
|
|
27
|
+
done?: () => void;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Queue-and-upload coordinator. Pure logic — no UI. Pair with `FileRow` / `FileUploadProgress`
|
|
32
|
+
* for visual progress, both of which consume the `files: UploadingFile[]` array reactively.
|
|
33
|
+
*
|
|
34
|
+
* Lifecycle:
|
|
35
|
+
* 1. `add(file)` — push raw `File` into the queue (`status: 'queued'`).
|
|
36
|
+
* 2. `upload()` — fetch presigned URLs from the strategy, then PUT each blob in parallel.
|
|
37
|
+
* Per-file status flows `queued → uploading → success | error`; `progress` updates as
|
|
38
|
+
* bytes are sent.
|
|
39
|
+
* 3. Consumer wires `on.blobId` to capture each blob ID for form state, or reads `files[i].blobId`.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```ts
|
|
43
|
+
* const store = new UploadMediaStore({
|
|
44
|
+
* kind: 'avatar',
|
|
45
|
+
* on: { blobId: (f, id) => { avatarBlobId = id; } }
|
|
46
|
+
* });
|
|
47
|
+
* store.add(rawFile);
|
|
48
|
+
* await store.upload();
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare class UploadMediaStore {
|
|
52
|
+
private _files;
|
|
53
|
+
private opts;
|
|
54
|
+
constructor(opts?: UploadMediaStoreOptions);
|
|
55
|
+
/** Reactive read of the queue. */
|
|
56
|
+
get files(): UploadingFile[];
|
|
57
|
+
/** Append a raw `File`, returns its `UploadingFile` wrapper (with a stable `id`). */
|
|
58
|
+
add(file: File): UploadingFile;
|
|
59
|
+
/** Append multiple raw files at once. */
|
|
60
|
+
addMany(files: File[]): UploadingFile[];
|
|
61
|
+
/** Remove a file from the queue by its `UploadingFile.id`. Does NOT cancel an in-flight upload. */
|
|
62
|
+
remove(id: string): void;
|
|
63
|
+
/** Clear all queued / completed files. Does NOT cancel any in-flight uploads. */
|
|
64
|
+
clear(): void;
|
|
65
|
+
/**
|
|
66
|
+
* Run the upload pipeline for every file currently in `'queued'` status. Files already
|
|
67
|
+
* `uploading` / `success` / `error` are skipped. Resolves once every targeted file has a
|
|
68
|
+
* terminal status.
|
|
69
|
+
*/
|
|
70
|
+
upload(): Promise<void>;
|
|
71
|
+
private maybeResize;
|
|
72
|
+
private patch;
|
|
73
|
+
private byId;
|
|
74
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { uploadBlob } from './blob-storage';
|
|
2
|
+
import { BlobStorage } from './blob-storage-registry.svelte';
|
|
3
|
+
import { resizeBlob } from './image-resizer';
|
|
4
|
+
import { nanoid } from 'nanoid';
|
|
5
|
+
import { default as pLimit } from 'p-limit';
|
|
6
|
+
const DEFAULT_RESIZE_LIMITS = { max1: 1600, max2: 1000 };
|
|
7
|
+
const DEFAULT_CONCURRENCY = 20;
|
|
8
|
+
/**
|
|
9
|
+
* Queue-and-upload coordinator. Pure logic — no UI. Pair with `FileRow` / `FileUploadProgress`
|
|
10
|
+
* for visual progress, both of which consume the `files: UploadingFile[]` array reactively.
|
|
11
|
+
*
|
|
12
|
+
* Lifecycle:
|
|
13
|
+
* 1. `add(file)` — push raw `File` into the queue (`status: 'queued'`).
|
|
14
|
+
* 2. `upload()` — fetch presigned URLs from the strategy, then PUT each blob in parallel.
|
|
15
|
+
* Per-file status flows `queued → uploading → success | error`; `progress` updates as
|
|
16
|
+
* bytes are sent.
|
|
17
|
+
* 3. Consumer wires `on.blobId` to capture each blob ID for form state, or reads `files[i].blobId`.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* const store = new UploadMediaStore({
|
|
22
|
+
* kind: 'avatar',
|
|
23
|
+
* on: { blobId: (f, id) => { avatarBlobId = id; } }
|
|
24
|
+
* });
|
|
25
|
+
* store.add(rawFile);
|
|
26
|
+
* await store.upload();
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export class UploadMediaStore {
|
|
30
|
+
_files = $state.raw([]);
|
|
31
|
+
opts;
|
|
32
|
+
constructor(opts = {}) {
|
|
33
|
+
this.opts = opts;
|
|
34
|
+
}
|
|
35
|
+
/** Reactive read of the queue. */
|
|
36
|
+
get files() {
|
|
37
|
+
return this._files;
|
|
38
|
+
}
|
|
39
|
+
/** Append a raw `File`, returns its `UploadingFile` wrapper (with a stable `id`). */
|
|
40
|
+
add(file) {
|
|
41
|
+
const uploadingFile = { id: nanoid(), file, progress: 0, status: 'queued' };
|
|
42
|
+
this._files = [...this._files, uploadingFile];
|
|
43
|
+
return uploadingFile;
|
|
44
|
+
}
|
|
45
|
+
/** Append multiple raw files at once. */
|
|
46
|
+
addMany(files) {
|
|
47
|
+
const wrappers = files.map((file) => ({ id: nanoid(), file, progress: 0, status: 'queued' }));
|
|
48
|
+
this._files = [...this._files, ...wrappers];
|
|
49
|
+
return wrappers;
|
|
50
|
+
}
|
|
51
|
+
/** Remove a file from the queue by its `UploadingFile.id`. Does NOT cancel an in-flight upload. */
|
|
52
|
+
remove(id) {
|
|
53
|
+
this._files = this._files.filter((f) => f.id !== id);
|
|
54
|
+
}
|
|
55
|
+
/** Clear all queued / completed files. Does NOT cancel any in-flight uploads. */
|
|
56
|
+
clear() {
|
|
57
|
+
this._files = [];
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Run the upload pipeline for every file currently in `'queued'` status. Files already
|
|
61
|
+
* `uploading` / `success` / `error` are skipped. Resolves once every targeted file has a
|
|
62
|
+
* terminal status.
|
|
63
|
+
*/
|
|
64
|
+
async upload() {
|
|
65
|
+
const queued = this._files.filter((f) => f.status === 'queued');
|
|
66
|
+
if (queued.length === 0) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const strategy = this.opts.strategy ?? BlobStorage.strategy;
|
|
70
|
+
const presigned = await strategy({ count: queued.length, kind: this.opts.kind });
|
|
71
|
+
if (presigned.length < queued.length) {
|
|
72
|
+
throw new Error(`BlobUploadStrategy returned ${presigned.length} slots for ${queued.length} files`);
|
|
73
|
+
}
|
|
74
|
+
const limit = pLimit(this.opts.concurrency ?? DEFAULT_CONCURRENCY);
|
|
75
|
+
const resizeOpt = this.opts.resize;
|
|
76
|
+
await Promise.all(queued.map((entry, i) => limit(async () => {
|
|
77
|
+
this.patch(entry.id, { status: 'uploading', progress: 0 });
|
|
78
|
+
try {
|
|
79
|
+
const blob = resizeOpt === false ? entry.file : await this.maybeResize(entry.file, resizeOpt ?? DEFAULT_RESIZE_LIMITS);
|
|
80
|
+
const slot = presigned[i];
|
|
81
|
+
await uploadBlob(slot.url, blob, (loaded, total) => {
|
|
82
|
+
this.patch(entry.id, { progress: total > 0 ? loaded / total : 0 });
|
|
83
|
+
});
|
|
84
|
+
this.patch(entry.id, { status: 'success', progress: 1, blobId: slot.id });
|
|
85
|
+
this.opts.on?.blobId?.(this.byId(entry.id), slot.id);
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
const message = error instanceof Error ? error.message : 'Upload failed';
|
|
89
|
+
this.patch(entry.id, { status: 'error', error: message });
|
|
90
|
+
this.opts.on?.error?.(this.byId(entry.id), error);
|
|
91
|
+
}
|
|
92
|
+
})));
|
|
93
|
+
this.opts.on?.done?.();
|
|
94
|
+
}
|
|
95
|
+
async maybeResize(file, limits) {
|
|
96
|
+
// Only resize images — leave other media alone.
|
|
97
|
+
if (!file.type.startsWith('image/') || file.type === 'image/gif') {
|
|
98
|
+
return file;
|
|
99
|
+
}
|
|
100
|
+
try {
|
|
101
|
+
return await resizeBlob(file, limits);
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
// Resize is best-effort: fall back to the original on failure (e.g. corrupt file).
|
|
105
|
+
return file;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
patch(id, partial) {
|
|
109
|
+
this._files = this._files.map((f) => (f.id === id ? { ...f, ...partial } : f));
|
|
110
|
+
}
|
|
111
|
+
byId(id) {
|
|
112
|
+
const found = this._files.find((f) => f.id === id);
|
|
113
|
+
if (!found) {
|
|
114
|
+
throw new Error(`UploadMediaStore: file ${id} not found`);
|
|
115
|
+
}
|
|
116
|
+
return found;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Domain tags for blob uploads. Empty by default — the consumer augments via TypeScript
|
|
3
|
+
* declaration merging at app bootstrap to get type-safe `kind` strings everywhere.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* // app-side (e.g. src/app.d.ts)
|
|
8
|
+
* declare module '@streamscloud/kit/core/files' {
|
|
9
|
+
* interface BlobKinds {
|
|
10
|
+
* avatar: never;
|
|
11
|
+
* asset: never;
|
|
12
|
+
* organization: never;
|
|
13
|
+
* }
|
|
14
|
+
* }
|
|
15
|
+
*
|
|
16
|
+
* // Now type-checked at all use sites:
|
|
17
|
+
* new UploadMediaStore({ kind: 'avatar' }); // ✓
|
|
18
|
+
* new UploadMediaStore({ kind: 'typo' }); // ✗ TS error
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* Without augmentation, `BlobKind` falls back to `string` so the API stays usable.
|
|
22
|
+
*/
|
|
23
|
+
export interface BlobKinds {
|
|
24
|
+
}
|
|
25
|
+
export type BlobKind = keyof BlobKinds extends never ? string : keyof BlobKinds;
|
|
26
|
+
/** A single presigned blob upload slot returned by a `BlobUploadStrategy`. */
|
|
27
|
+
export type BlobUpload = {
|
|
28
|
+
id: string;
|
|
29
|
+
url: string;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Async producer of presigned blob upload slots. The consumer registers ONE strategy at app
|
|
33
|
+
* bootstrap via `BlobStorage.register(...)`; it is called by `UploadMediaStore.upload()` with
|
|
34
|
+
* the queued file count and an optional `kind` discriminator that the consumer maps to its
|
|
35
|
+
* own backend (e.g. a GraphQL enum).
|
|
36
|
+
*/
|
|
37
|
+
export type BlobUploadStrategy = (request: {
|
|
38
|
+
count: number;
|
|
39
|
+
kind?: BlobKind;
|
|
40
|
+
}) => Promise<BlobUpload[]>;
|
|
41
|
+
/** Lifecycle status of a single file flowing through `UploadMediaStore`. */
|
|
42
|
+
export type UploadingFileStatus = 'queued' | 'uploading' | 'success' | 'error';
|
|
43
|
+
/**
|
|
44
|
+
* Canonical shape passed to `FileRow` / `FileUploadProgress` and emitted by `UploadMediaStore`.
|
|
45
|
+
* Fields update reactively as the upload progresses.
|
|
46
|
+
*/
|
|
47
|
+
export type UploadingFile = {
|
|
48
|
+
id: string;
|
|
49
|
+
file: File;
|
|
50
|
+
/** 0..1 — fraction uploaded. 1 on success. */
|
|
51
|
+
progress: number;
|
|
52
|
+
status: UploadingFileStatus;
|
|
53
|
+
/** Set when `status === 'success'`. */
|
|
54
|
+
blobId?: string;
|
|
55
|
+
/** Set when `status === 'error'`. */
|
|
56
|
+
error?: string;
|
|
57
|
+
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { transitionDuration } from './durations';
|
|
1
2
|
import { sineInOut } from 'svelte/easing';
|
|
2
|
-
export const slideHorizontally = (node, { delay = 0, duration =
|
|
3
|
+
export const slideHorizontally = (node, { delay = 0, duration = transitionDuration.base, easing = sineInOut } = {}) => {
|
|
3
4
|
const style = getComputedStyle(node);
|
|
4
5
|
const isHtmlElement = (n) => n.nodeType === Node.ELEMENT_NODE;
|
|
5
6
|
const children = Array.from(node.children).filter(isHtmlElement);
|
|
@@ -1,13 +1,4 @@
|
|
|
1
|
-
export
|
|
2
|
-
NotString = 0,
|
|
3
|
-
Empty = 1,
|
|
4
|
-
ControlChars = 2,
|
|
5
|
-
DisallowedScheme = 3,
|
|
6
|
-
MissingHost = 4,
|
|
7
|
-
EmbeddedCredentials = 5,
|
|
8
|
-
Relative = 6,
|
|
9
|
-
BareRelative = 7
|
|
10
|
-
}
|
|
1
|
+
export type ValidationError = 'NotString' | 'Empty' | 'ControlChars' | 'DisallowedScheme' | 'MissingHost' | 'EmbeddedCredentials' | 'Relative' | 'BareRelative';
|
|
11
2
|
type DetailedResult = {
|
|
12
3
|
valid: true;
|
|
13
4
|
} | {
|