@dvcol/neo-svelte 1.1.2 → 1.2.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/CHANGELOG.md +90 -0
- package/README.md +15 -7
- package/dist/badge/neo-badge.model.d.ts +1 -1
- package/dist/buttons/NeoArrowButton.svelte +4 -4
- package/dist/buttons/NeoButton.svelte +110 -24
- package/dist/buttons/NeoButtonGroup.svelte +18 -9
- package/dist/buttons/NeoButtonGroup.svelte.d.ts +1 -1
- package/dist/buttons/NeoButtonRow.svelte +137 -0
- package/dist/buttons/NeoButtonRow.svelte.d.ts +4 -0
- package/dist/buttons/NeoCancelButton.svelte +2 -2
- package/dist/buttons/NeoCheckboxButton.svelte +6 -4
- package/dist/buttons/NeoCheckboxButton.svelte.d.ts +1 -1
- package/dist/buttons/NeoCloseButton.svelte +37 -6
- package/dist/buttons/NeoCloseButton.svelte.d.ts +2 -2
- package/dist/buttons/NeoRadioButton.svelte +6 -4
- package/dist/buttons/NeoSwitchButton.svelte +5 -3
- package/dist/buttons/index.d.ts +2 -0
- package/dist/buttons/index.js +1 -0
- package/dist/buttons/neo-arrow-button.model.d.ts +3 -3
- package/dist/buttons/neo-button-group.model.d.ts +12 -3
- package/dist/buttons/neo-button-row.model.d.ts +33 -0
- package/dist/buttons/neo-button-row.model.js +1 -0
- package/dist/buttons/neo-button.model.d.ts +11 -4
- package/dist/buttons/neo-close-button.model.d.ts +13 -0
- package/dist/buttons/neo-close-button.model.js +5 -0
- package/dist/buttons/neo-icon-button.model.d.ts +2 -2
- package/dist/cards/NeoCard.svelte +22 -20
- package/dist/cards/neo-card.model.d.ts +3 -2
- package/dist/collapse/NeoAccordion.svelte +3 -1
- package/dist/collapse/NeoCollapse.svelte +2 -2
- package/dist/collapse/NeoCollapse.svelte.d.ts +3 -1
- package/dist/collapse/neo-accordion.model.d.ts +2 -1
- package/dist/containers/NeoTransitionContainer.svelte +10 -0
- package/dist/containers/neo-transition-container.model.d.ts +9 -0
- package/dist/cursor/NeoCursor.svelte.d.ts +1 -1
- package/dist/divider/NeoDivider.svelte +4 -2
- package/dist/divider/neo-divider.model.d.ts +2 -1
- package/dist/floating/common/NeoConfirm.svelte +5 -5
- package/dist/floating/common/NeoConfirm.svelte.d.ts +1 -1
- package/dist/floating/common/NeoFloatingStepper.svelte +1 -1
- package/dist/floating/common/NeoFloatingStepper.svelte.d.ts +1 -1
- package/dist/floating/common/NeoHandle.svelte +2 -1
- package/dist/floating/common/neo-confirm.model.d.ts +2 -1
- package/dist/floating/common/neo-floating-stepper.model.d.ts +1 -1
- package/dist/floating/common/neo-placement.model.d.ts +56 -4
- package/dist/floating/common/neo-placement.model.js +22 -0
- package/dist/floating/dialog/NeoDialog.svelte +23 -21
- package/dist/floating/dialog/NeoDialog.svelte.d.ts +1 -1
- package/dist/floating/dialog/NeoDialogConfirm.svelte.d.ts +1 -1
- package/dist/floating/dialog/NeoDialogStepper.svelte.d.ts +1 -1
- package/dist/floating/dialog/neo-dialog-confirm.model.d.ts +5 -5
- package/dist/floating/dialog/neo-dialog-stepper.model.d.ts +4 -4
- package/dist/floating/dialog/neo-dialog.model.d.ts +2 -1
- package/dist/floating/dialog/use-movable.svelte.js +2 -1
- package/dist/floating/drawer/NeoDrawer.svelte +9 -9
- package/dist/floating/drawer/NeoDrawer.svelte.d.ts +2 -2
- package/dist/floating/drawer/NeoDrawerConfirm.svelte +2 -4
- package/dist/floating/drawer/NeoDrawerConfirm.svelte.d.ts +2 -2
- package/dist/floating/drawer/NeoDrawerStepper.svelte +2 -4
- package/dist/floating/drawer/NeoDrawerStepper.svelte.d.ts +2 -2
- package/dist/floating/drawer/neo-drawer.model.d.ts +6 -0
- package/dist/floating/drawer/neo-drawer.model.js +1 -0
- package/dist/floating/index.d.ts +1 -0
- package/dist/floating/index.js +1 -0
- package/dist/floating/menu/NeoMenu.svelte +55 -17
- package/dist/floating/menu/NeoMenu.svelte.d.ts +1 -1
- package/dist/floating/menu/NeoMenuList.svelte +60 -67
- package/dist/floating/menu/NeoMenuListItem.svelte +157 -24
- package/dist/floating/menu/NeoMenuListItem.svelte.d.ts +1 -0
- package/dist/floating/menu/index.d.ts +1 -0
- package/dist/floating/menu/neo-menu-list-item.model.d.ts +48 -11
- package/dist/floating/menu/neo-menu-list.model.d.ts +24 -4
- package/dist/floating/menu/neo-menu.model.d.ts +3 -3
- package/dist/floating/notification/NeoNotificationItem.svelte +459 -0
- package/dist/floating/notification/NeoNotificationItem.svelte.d.ts +4 -0
- package/dist/floating/notification/NeoNotificationProvider.svelte +49 -0
- package/dist/floating/notification/NeoNotificationProvider.svelte.d.ts +4 -0
- package/dist/floating/notification/NeoNotificationStack.svelte +345 -0
- package/dist/floating/notification/NeoNotificationStack.svelte.d.ts +16 -0
- package/dist/floating/notification/NeoSimpleNotification.svelte +304 -0
- package/dist/floating/notification/NeoSimpleNotification.svelte.d.ts +4 -0
- package/dist/floating/notification/index.d.ts +8 -0
- package/dist/floating/notification/index.js +7 -0
- package/dist/floating/notification/neo-notification-item.model.d.ts +54 -0
- package/dist/floating/notification/neo-notification-item.model.js +1 -0
- package/dist/floating/notification/neo-notification-provider.model.d.ts +78 -0
- package/dist/floating/notification/neo-notification-provider.model.js +18 -0
- package/dist/floating/notification/neo-notification-stack.model.d.ts +48 -0
- package/dist/floating/notification/neo-notification-stack.model.js +1 -0
- package/dist/floating/notification/neo-notification.model.d.ts +271 -0
- package/dist/floating/notification/neo-notification.model.js +70 -0
- package/dist/floating/notification/neo-simple-notification.model.d.ts +14 -0
- package/dist/floating/notification/neo-simple-notification.model.js +1 -0
- package/dist/floating/portal/NeoPortal.svelte +11 -8
- package/dist/floating/portal/NeoPortalTarget.svelte +7 -0
- package/dist/floating/portal/NeoPortalTarget.svelte.d.ts +7 -0
- package/dist/floating/portal/neo-portal-context.svelte.d.ts +1 -1
- package/dist/floating/portal/neo-portal.model.d.ts +4 -5
- package/dist/floating/tooltips/NeoPopConfirm.svelte +2 -0
- package/dist/floating/tooltips/NeoPopConfirm.svelte.d.ts +1 -1
- package/dist/floating/tooltips/NeoPopSelect.svelte +5 -3
- package/dist/floating/tooltips/NeoPopSelect.svelte.d.ts +1 -1
- package/dist/floating/tooltips/NeoPopStepper.svelte +2 -0
- package/dist/floating/tooltips/NeoPopStepper.svelte.d.ts +1 -1
- package/dist/floating/tooltips/NeoTooltip.svelte +43 -23
- package/dist/floating/tooltips/NeoTooltip.svelte.d.ts +5 -1
- package/dist/floating/tooltips/neo-pop-confirm.model.d.ts +1 -1
- package/dist/floating/tooltips/neo-pop-select.model.d.ts +1 -3
- package/dist/floating/tooltips/neo-pop-stepper.model.d.ts +2 -2
- package/dist/floating/tooltips/neo-tooltip.model.d.ts +7 -2
- package/dist/form/NeoForm.svelte +1 -1
- package/dist/form/NeoForm.svelte.d.ts +3 -1
- package/dist/form/neo-form-context.svelte.d.ts +2 -0
- package/dist/icons/{IconAccount.svelte → NeoIconAccount.svelte} +2 -2
- package/dist/icons/NeoIconAccount.svelte.d.ts +4 -0
- package/dist/icons/{IconAdd.svelte → NeoIconAdd.svelte} +11 -6
- package/dist/icons/NeoIconAdd.svelte.d.ts +4 -0
- package/dist/icons/{IconAddress.svelte → NeoIconAddress.svelte} +2 -2
- package/dist/icons/NeoIconAddress.svelte.d.ts +4 -0
- package/dist/icons/{IconAlert.svelte → NeoIconAlert.svelte} +11 -6
- package/dist/icons/NeoIconAlert.svelte.d.ts +4 -0
- package/dist/icons/{IconAlignBottom.svelte → NeoIconAlignBottom.svelte} +11 -6
- package/dist/icons/NeoIconAlignBottom.svelte.d.ts +4 -0
- package/dist/icons/{IconAlignMiddle.svelte → NeoIconAlignMiddle.svelte} +11 -6
- package/dist/icons/NeoIconAlignMiddle.svelte.d.ts +4 -0
- package/dist/icons/{IconAlignTop.svelte → NeoIconAlignTop.svelte} +11 -6
- package/dist/icons/NeoIconAlignTop.svelte.d.ts +4 -0
- package/dist/icons/{IconArrow.svelte → NeoIconArrow.svelte} +9 -9
- package/dist/icons/NeoIconArrow.svelte.d.ts +4 -0
- package/dist/icons/NeoIconAudio.svelte +83 -0
- package/dist/icons/NeoIconAudio.svelte.d.ts +4 -0
- package/dist/icons/NeoIconBouncingDots.svelte +82 -0
- package/dist/icons/NeoIconBouncingDots.svelte.d.ts +4 -0
- package/dist/icons/{IconCalendar.svelte → NeoIconCalendar.svelte} +11 -6
- package/dist/icons/NeoIconCalendar.svelte.d.ts +4 -0
- package/dist/icons/{IconCancel.svelte → NeoIconCancel.svelte} +2 -2
- package/dist/icons/NeoIconCancel.svelte.d.ts +4 -0
- package/dist/icons/{IconCheckbox.svelte → NeoIconCheckbox.svelte} +2 -2
- package/dist/icons/NeoIconCheckbox.svelte.d.ts +4 -0
- package/dist/icons/NeoIconCircle.svelte +18 -0
- package/dist/icons/NeoIconCircle.svelte.d.ts +4 -0
- package/dist/icons/{IconCircleLoading.svelte → NeoIconCircleLoading.svelte} +2 -2
- package/dist/icons/{IconCircleLoading.svelte.d.ts → NeoIconCircleLoading.svelte.d.ts} +55 -39
- package/dist/icons/{IconClear.svelte → NeoIconClear.svelte} +11 -6
- package/dist/icons/NeoIconClear.svelte.d.ts +4 -0
- package/dist/icons/{IconClose.svelte → NeoIconClose.svelte} +2 -2
- package/dist/icons/NeoIconClose.svelte.d.ts +4 -0
- package/dist/icons/NeoIconCog.svelte +36 -0
- package/dist/icons/NeoIconCog.svelte.d.ts +4 -0
- package/dist/icons/{IconConfirm.svelte → NeoIconConfirm.svelte} +11 -6
- package/dist/icons/NeoIconConfirm.svelte.d.ts +4 -0
- package/dist/icons/NeoIconCube.svelte +31 -0
- package/dist/icons/NeoIconCube.svelte.d.ts +4 -0
- package/dist/icons/{IconDoubleChevron.svelte → NeoIconDoubleChevron.svelte} +11 -5
- package/dist/icons/NeoIconDoubleChevron.svelte.d.ts +4 -0
- package/dist/icons/{IconDoubleChevronLeft.svelte → NeoIconDoubleChevronLeft.svelte} +11 -6
- package/dist/icons/NeoIconDoubleChevronLeft.svelte.d.ts +4 -0
- package/dist/icons/{IconDoubleChevronRight.svelte → NeoIconDoubleChevronRight.svelte} +11 -6
- package/dist/icons/NeoIconDoubleChevronRight.svelte.d.ts +4 -0
- package/dist/icons/{IconDownload.svelte → NeoIconDownload.svelte} +11 -6
- package/dist/icons/NeoIconDownload.svelte.d.ts +4 -0
- package/dist/icons/NeoIconEmpty.svelte +26 -0
- package/dist/icons/NeoIconEmpty.svelte.d.ts +4 -0
- package/dist/icons/NeoIconError.svelte +30 -0
- package/dist/icons/NeoIconError.svelte.d.ts +4 -0
- package/dist/icons/{IconFileUpload.svelte → NeoIconFileUpload.svelte} +11 -6
- package/dist/icons/NeoIconFileUpload.svelte.d.ts +4 -0
- package/dist/icons/NeoIconFire.svelte +33 -0
- package/dist/icons/NeoIconFire.svelte.d.ts +4 -0
- package/dist/icons/{IconGithub.svelte → NeoIconGithub.svelte} +11 -6
- package/dist/icons/NeoIconGithub.svelte.d.ts +4 -0
- package/dist/icons/NeoIconImage.svelte +39 -0
- package/dist/icons/NeoIconImage.svelte.d.ts +4 -0
- package/dist/icons/NeoIconInfo.svelte +30 -0
- package/dist/icons/NeoIconInfo.svelte.d.ts +4 -0
- package/dist/icons/{IconList.svelte → NeoIconList.svelte} +11 -6
- package/dist/icons/NeoIconList.svelte.d.ts +4 -0
- package/dist/icons/{IconListSmall.svelte → NeoIconListSmall.svelte} +2 -2
- package/dist/icons/NeoIconListSmall.svelte.d.ts +4 -0
- package/dist/icons/{IconLoadingMatrix.svelte → NeoIconLoadingMatrix.svelte} +2 -2
- package/dist/icons/NeoIconLoadingMatrix.svelte.d.ts +4 -0
- package/dist/icons/{IconMail.svelte → NeoIconMail.svelte} +11 -6
- package/dist/icons/NeoIconMail.svelte.d.ts +4 -0
- package/dist/icons/{IconMinus.svelte → NeoIconMinus.svelte} +11 -6
- package/dist/icons/NeoIconMinus.svelte.d.ts +4 -0
- package/dist/icons/{IconPaint.svelte → NeoIconPaint.svelte} +11 -6
- package/dist/icons/NeoIconPaint.svelte.d.ts +4 -0
- package/dist/icons/{IconPencil.svelte → NeoIconPencil.svelte} +11 -6
- package/dist/icons/NeoIconPencil.svelte.d.ts +4 -0
- package/dist/icons/{IconPlayPause.svelte → NeoIconPlayPause.svelte} +2 -2
- package/dist/icons/NeoIconPlayPause.svelte.d.ts +4 -0
- package/dist/icons/{IconQuestionMark.svelte → NeoIconQuestionMark.svelte} +11 -6
- package/dist/icons/NeoIconQuestionMark.svelte.d.ts +4 -0
- package/dist/icons/{IconRadio.svelte → NeoIconRadio.svelte} +2 -2
- package/dist/icons/NeoIconRadio.svelte.d.ts +4 -0
- package/dist/icons/NeoIconRefresh.svelte +38 -0
- package/dist/icons/NeoIconRefresh.svelte.d.ts +4 -0
- package/dist/icons/NeoIconRestore.svelte +20 -0
- package/dist/icons/NeoIconRestore.svelte.d.ts +4 -0
- package/dist/icons/NeoIconSave.svelte +35 -0
- package/dist/icons/NeoIconSave.svelte.d.ts +4 -0
- package/dist/icons/NeoIconSaveOff.svelte +42 -0
- package/dist/icons/NeoIconSaveOff.svelte.d.ts +4 -0
- package/dist/icons/{IconSearch.svelte → NeoIconSearch.svelte} +11 -6
- package/dist/icons/NeoIconSearch.svelte.d.ts +4 -0
- package/dist/icons/NeoIconSuccess.svelte +26 -0
- package/dist/icons/NeoIconSuccess.svelte.d.ts +4 -0
- package/dist/icons/{IconSun.svelte → NeoIconSun.svelte} +11 -6
- package/dist/icons/NeoIconSun.svelte.d.ts +4 -0
- package/dist/icons/{IconSunMoon.svelte → NeoIconSunMoon.svelte} +11 -64
- package/dist/icons/NeoIconSunMoon.svelte.d.ts +4 -0
- package/dist/icons/{IconTextHighlight.svelte → NeoIconTextHighlight.svelte} +11 -6
- package/dist/icons/NeoIconTextHighlight.svelte.d.ts +4 -0
- package/dist/icons/NeoIconTheme.svelte +14 -0
- package/dist/icons/NeoIconTheme.svelte.d.ts +3 -0
- package/dist/icons/NeoIconTrend.svelte +39 -0
- package/dist/icons/NeoIconTrend.svelte.d.ts +4 -0
- package/dist/icons/NeoIconUnplug.svelte +63 -0
- package/dist/icons/NeoIconUnplug.svelte.d.ts +4 -0
- package/dist/icons/{IconVideo.svelte → NeoIconVideo.svelte} +11 -6
- package/dist/icons/NeoIconVideo.svelte.d.ts +4 -0
- package/dist/icons/NeoIconWarning.svelte +30 -0
- package/dist/icons/NeoIconWarning.svelte.d.ts +4 -0
- package/dist/icons/NeoIconWatch.svelte +41 -0
- package/dist/icons/NeoIconWatch.svelte.d.ts +4 -0
- package/dist/icons/NeoIconWatchOff.svelte +50 -0
- package/dist/icons/NeoIconWatchOff.svelte.d.ts +4 -0
- package/dist/icons/NeoIconWave.svelte +31 -0
- package/dist/icons/NeoIconWave.svelte.d.ts +4 -0
- package/dist/icons/index.d.ts +54 -0
- package/dist/icons/index.js +54 -0
- package/dist/icons/{icon.model.d.ts → neo-icon.model.d.ts} +41 -13
- package/dist/icons/{icon.model.js → neo-icon.model.js} +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/inputs/NeoCheckbox.svelte +6 -4
- package/dist/inputs/NeoCheckbox.svelte.d.ts +1 -1
- package/dist/inputs/NeoColorPicker.svelte +6 -3
- package/dist/inputs/NeoColorPicker.svelte.d.ts +1 -1
- package/dist/inputs/NeoColorPickerSelector.svelte +2 -2
- package/dist/inputs/NeoColorPickerSelector.svelte.d.ts +1 -1
- package/dist/inputs/NeoDateTime.svelte +6 -3
- package/dist/inputs/NeoDateTime.svelte.d.ts +1 -1
- package/dist/inputs/NeoFilePicker.svelte +11 -6
- package/dist/inputs/NeoFilePicker.svelte.d.ts +1 -1
- package/dist/inputs/NeoFilePickerCard.svelte +20 -14
- package/dist/inputs/NeoNativeSelect.svelte +6 -3
- package/dist/inputs/NeoNativeSelect.svelte.d.ts +1 -1
- package/dist/inputs/NeoNumberStep.svelte +13 -8
- package/dist/inputs/NeoNumberStep.svelte.d.ts +1 -1
- package/dist/inputs/NeoPassword.svelte +4 -4
- package/dist/inputs/NeoPassword.svelte.d.ts +1 -1
- package/dist/inputs/NeoPin.svelte +10 -10
- package/dist/inputs/NeoPin.svelte.d.ts +10 -1
- package/dist/inputs/NeoRadio.svelte +3 -3
- package/dist/inputs/NeoRadio.svelte.d.ts +1 -1
- package/dist/inputs/NeoRange.svelte +29 -27
- package/dist/inputs/NeoRange.svelte.d.ts +5 -2
- package/dist/inputs/NeoSelect.svelte +17 -8
- package/dist/inputs/NeoSelect.svelte.d.ts +1 -1
- package/dist/inputs/NeoSwitch.svelte +2 -2
- package/dist/inputs/NeoSwitch.svelte.d.ts +1 -1
- package/dist/inputs/common/NeoAffix.svelte +10 -10
- package/dist/inputs/common/NeoBaseInput.svelte +16 -2
- package/dist/inputs/common/NeoBaseInput.svelte.d.ts +1 -1
- package/dist/inputs/common/NeoInput.svelte +12 -4
- package/dist/inputs/common/NeoInput.svelte.d.ts +1 -1
- package/dist/inputs/common/NeoTextarea.svelte +18 -6
- package/dist/inputs/common/NeoTextarea.svelte.d.ts +2 -1
- package/dist/inputs/common/NeoValidation.svelte +6 -4
- package/dist/inputs/common/neo-input.model.d.ts +8 -1
- package/dist/inputs/common/neo-validation.model.d.ts +2 -1
- package/dist/inputs/neo-range.model.d.ts +2 -1
- package/dist/inputs/neo-select.model.d.ts +8 -4
- package/dist/list/NeoList.svelte +100 -62
- package/dist/list/NeoList.svelte.d.ts +5 -2
- package/dist/list/NeoListBaseItem.svelte +222 -92
- package/dist/list/NeoListBaseItem.svelte.d.ts +1 -1
- package/dist/list/NeoListBaseLoader.svelte +28 -4
- package/dist/list/NeoListBaseSection.svelte +18 -15
- package/dist/list/NeoListSearch.svelte +36 -20
- package/dist/list/NeoListSearch.svelte.d.ts +1 -1
- package/dist/list/NeoSimpleList.svelte +391 -0
- package/dist/list/NeoSimpleList.svelte.d.ts +8 -0
- package/dist/list/NeoVirtualList.svelte +388 -0
- package/dist/list/NeoVirtualList.svelte.d.ts +22 -0
- package/dist/list/index.d.ts +4 -0
- package/dist/list/index.js +2 -0
- package/dist/list/neo-list-base-item.model.d.ts +36 -7
- package/dist/list/neo-list-base-item.model.js +1 -0
- package/dist/list/neo-list-base-loader.model.d.ts +18 -1
- package/dist/list/neo-list-base-section.model.d.ts +8 -5
- package/dist/list/neo-list-search.model.d.ts +2 -2
- package/dist/list/neo-list.model.d.ts +120 -51
- package/dist/list/neo-list.model.js +18 -0
- package/dist/list/neo-simple-list.model.d.ts +124 -0
- package/dist/list/neo-simple-list.model.js +1 -0
- package/dist/list/neo-virtual-list.model.d.ts +69 -0
- package/dist/list/neo-virtual-list.model.js +6 -0
- package/dist/loading/NeoLoadingMatrix.svelte +2 -2
- package/dist/loading/neo-lazy.model.d.ts +2 -2
- package/dist/loading/neo-suspense.model.d.ts +1 -1
- package/dist/media/NeoImage.svelte +204 -0
- package/dist/media/NeoImage.svelte.d.ts +4 -0
- package/dist/media/NeoMedia.svelte +204 -0
- package/dist/media/NeoMedia.svelte.d.ts +4 -0
- package/dist/media/index.d.ts +2 -0
- package/dist/media/index.js +1 -0
- package/dist/media/neo-image.model.d.ts +67 -0
- package/dist/media/neo-image.model.js +1 -0
- package/dist/media/neo-media.model.d.ts +120 -0
- package/dist/media/neo-media.model.js +5 -0
- package/dist/nav/NeoTab.svelte +20 -15
- package/dist/nav/NeoTab.svelte.d.ts +17 -2
- package/dist/nav/NeoTabPanel.svelte +7 -5
- package/dist/nav/NeoTabPanel.svelte.d.ts +17 -2
- package/dist/nav/NeoTabs.svelte +21 -17
- package/dist/nav/NeoTabs.svelte.d.ts +19 -3
- package/dist/nav/NeoTabsCard.svelte +5 -3
- package/dist/nav/NeoTabsCard.svelte.d.ts +17 -2
- package/dist/nav/NeoTabsRow.svelte +225 -0
- package/dist/nav/NeoTabsRow.svelte.d.ts +19 -0
- package/dist/nav/index.d.ts +2 -0
- package/dist/nav/index.js +1 -0
- package/dist/nav/neo-tab-panel.model.d.ts +3 -3
- package/dist/nav/neo-tab.model.d.ts +15 -5
- package/dist/nav/neo-tabs-card.model.d.ts +3 -2
- package/dist/nav/neo-tabs-context.svelte.d.ts +35 -29
- package/dist/nav/neo-tabs-context.svelte.js +17 -3
- package/dist/nav/neo-tabs-row.model.d.ts +85 -0
- package/dist/nav/neo-tabs-row.model.js +1 -0
- package/dist/nav/neo-tabs.model.d.ts +12 -11
- package/dist/pill/NeoPill.svelte +73 -14
- package/dist/pill/neo-pill.model.d.ts +25 -1
- package/dist/progress/NeoProgress.svelte +203 -42
- package/dist/progress/NeoProgress.svelte.d.ts +8 -8
- package/dist/progress/NeoProgressBar.svelte +37 -6
- package/dist/progress/NeoProgressBar.svelte.d.ts +9 -1
- package/dist/progress/index.d.ts +1 -0
- package/dist/progress/index.js +1 -0
- package/dist/progress/neo-progress-bar.model.d.ts +11 -6
- package/dist/progress/neo-progress-service.svelte.d.ts +47 -0
- package/dist/progress/neo-progress-service.svelte.js +157 -0
- package/dist/progress/neo-progress.model.d.ts +98 -41
- package/dist/progress/neo-progress.model.js +6 -1
- package/dist/providers/NeoRememberSelector.svelte +43 -0
- package/dist/providers/NeoRememberSelector.svelte.d.ts +4 -0
- package/dist/providers/NeoResetSelector.svelte +40 -0
- package/dist/providers/NeoResetSelector.svelte.d.ts +4 -0
- package/dist/providers/NeoSourceSelector.svelte +63 -0
- package/dist/providers/NeoSourceSelector.svelte.d.ts +4 -0
- package/dist/providers/NeoThemeProvider.svelte +25 -10
- package/dist/providers/NeoThemeProvider.svelte.d.ts +1 -2
- package/dist/providers/NeoThemeSelector.svelte +26 -108
- package/dist/providers/NeoThemeSelector.svelte.d.ts +1 -1
- package/dist/providers/NeoThemeSelectors.svelte +57 -0
- package/dist/providers/NeoThemeSelectors.svelte.d.ts +4 -0
- package/dist/providers/NeoTransitionSelector.svelte +57 -0
- package/dist/providers/NeoTransitionSelector.svelte.d.ts +4 -0
- package/dist/providers/index.d.ts +10 -0
- package/dist/providers/index.js +5 -0
- package/dist/providers/neo-remember-selector.model.d.ts +9 -0
- package/dist/providers/neo-remember-selector.model.js +2 -0
- package/dist/providers/neo-reset-selector.model.d.ts +9 -0
- package/dist/providers/neo-reset-selector.model.js +1 -0
- package/dist/providers/neo-source-selector.model.d.ts +9 -0
- package/dist/providers/neo-source-selector.model.js +2 -0
- package/dist/providers/neo-theme-provider-context.svelte.d.ts +14 -3
- package/dist/providers/neo-theme-provider-context.svelte.js +94 -11
- package/dist/providers/neo-theme-provider.model.d.ts +31 -3
- package/dist/providers/neo-theme-provider.model.js +9 -0
- package/dist/providers/neo-theme-selector.model.d.ts +3 -48
- package/dist/providers/neo-theme-selector.model.js +1 -0
- package/dist/providers/neo-theme-selectors.model.d.ts +84 -0
- package/dist/providers/neo-theme-selectors.model.js +1 -0
- package/dist/providers/neo-transition-selector.model.d.ts +9 -0
- package/dist/providers/neo-transition-selector.model.js +2 -0
- package/dist/skeletons/NeoSkeletonContainer.svelte +3 -1
- package/dist/skeletons/NeoSkeletonMedia.svelte +26 -18
- package/dist/skeletons/NeoSkeletonText.svelte +5 -3
- package/dist/skeletons/neo-skeleton-container.model.d.ts +9 -0
- package/dist/skeletons/neo-skeleton-media.model.d.ts +20 -10
- package/dist/skeletons/neo-skeleton-media.model.js +7 -1
- package/dist/skeletons/neo-skeleton-text.model.d.ts +5 -0
- package/dist/stepper/NeoStepper.svelte +20 -20
- package/dist/stepper/NeoStepper.svelte.d.ts +9 -2
- package/dist/stepper/neo-stepper.model.d.ts +5 -5
- package/dist/styles/animation.scss +76 -0
- package/dist/styles/common/colors.scss +15 -9
- package/dist/styles/common/properties.css +18 -0
- package/dist/styles/common/spacing.scss +8 -4
- package/dist/styles/common/typography.scss +13 -3
- package/dist/styles/common/utils.scss +2 -2
- package/dist/styles/mixin.scss +125 -11
- package/dist/styles/theme.scss +20 -0
- package/dist/styles/transition.scss +101 -0
- package/dist/text/NeoEllipsis.svelte +1 -0
- package/dist/text/NeoHtml.svelte +26 -0
- package/dist/text/NeoHtml.svelte.d.ts +7 -0
- package/dist/text/NeoMark.svelte +18 -5
- package/dist/text/NeoTypewriter.svelte +5 -4
- package/dist/text/NeoTypewriter.svelte.d.ts +5 -1
- package/dist/text/index.d.ts +2 -0
- package/dist/text/index.js +1 -0
- package/dist/text/neo-html.model.d.ts +4 -0
- package/dist/text/neo-html.model.js +1 -0
- package/dist/text/neo-mark.model.d.ts +8 -0
- package/dist/text/typewriter.utils.d.ts +2 -2
- package/dist/text/typewriter.utils.js +8 -9
- package/dist/utils/action.utils.d.ts +1 -21
- package/dist/utils/border.utils.d.ts +13 -0
- package/dist/utils/border.utils.js +18 -0
- package/dist/utils/colors.utils.d.ts +1 -1
- package/dist/utils/error.utils.d.ts +22 -0
- package/dist/utils/error.utils.js +36 -0
- package/dist/utils/style.utils.d.ts +1 -1
- package/package.json +55 -39
- package/dist/icons/IconAccount.svelte.d.ts +0 -4
- package/dist/icons/IconAdd.svelte.d.ts +0 -26
- package/dist/icons/IconAddress.svelte.d.ts +0 -4
- package/dist/icons/IconAlert.svelte.d.ts +0 -26
- package/dist/icons/IconAlignBottom.svelte.d.ts +0 -26
- package/dist/icons/IconAlignMiddle.svelte.d.ts +0 -26
- package/dist/icons/IconAlignTop.svelte.d.ts +0 -26
- package/dist/icons/IconArrow.svelte.d.ts +0 -4
- package/dist/icons/IconBouncingDots.svelte +0 -63
- package/dist/icons/IconBouncingDots.svelte.d.ts +0 -4
- package/dist/icons/IconCalendar.svelte.d.ts +0 -26
- package/dist/icons/IconCancel.svelte.d.ts +0 -4
- package/dist/icons/IconCheckbox.svelte.d.ts +0 -4
- package/dist/icons/IconClear.svelte.d.ts +0 -26
- package/dist/icons/IconClose.svelte.d.ts +0 -4
- package/dist/icons/IconConfirm.svelte.d.ts +0 -26
- package/dist/icons/IconDoubleChevron.svelte.d.ts +0 -26
- package/dist/icons/IconDoubleChevronLeft.svelte.d.ts +0 -26
- package/dist/icons/IconDoubleChevronRight.svelte.d.ts +0 -26
- package/dist/icons/IconDownload.svelte.d.ts +0 -26
- package/dist/icons/IconEmpty.svelte +0 -18
- package/dist/icons/IconEmpty.svelte.d.ts +0 -26
- package/dist/icons/IconFileUpload.svelte.d.ts +0 -26
- package/dist/icons/IconGithub.svelte.d.ts +0 -26
- package/dist/icons/IconImage.svelte +0 -26
- package/dist/icons/IconImage.svelte.d.ts +0 -26
- package/dist/icons/IconList.svelte.d.ts +0 -26
- package/dist/icons/IconListSmall.svelte.d.ts +0 -4
- package/dist/icons/IconLoadingMatrix.svelte.d.ts +0 -4
- package/dist/icons/IconMail.svelte.d.ts +0 -26
- package/dist/icons/IconMinus.svelte.d.ts +0 -26
- package/dist/icons/IconPaint.svelte.d.ts +0 -26
- package/dist/icons/IconPencil.svelte.d.ts +0 -26
- package/dist/icons/IconPlayPause.svelte.d.ts +0 -4
- package/dist/icons/IconQuestionMark.svelte.d.ts +0 -26
- package/dist/icons/IconRadio.svelte.d.ts +0 -4
- package/dist/icons/IconSave.svelte +0 -25
- package/dist/icons/IconSave.svelte.d.ts +0 -26
- package/dist/icons/IconSaveOff.svelte +0 -32
- package/dist/icons/IconSaveOff.svelte.d.ts +0 -26
- package/dist/icons/IconSearch.svelte.d.ts +0 -26
- package/dist/icons/IconSun.svelte.d.ts +0 -26
- package/dist/icons/IconSunMoon.svelte.d.ts +0 -4
- package/dist/icons/IconTextHighlight.svelte.d.ts +0 -26
- package/dist/icons/IconVideo.svelte.d.ts +0 -26
- package/dist/icons/IconWatch.svelte +0 -29
- package/dist/icons/IconWatch.svelte.d.ts +0 -26
- package/dist/icons/IconWatchOff.svelte +0 -34
- package/dist/icons/IconWatchOff.svelte.d.ts +0 -26
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { NeoImageProps } from './neo-image.model.js';
|
|
3
|
+
|
|
4
|
+
import { onMount } from 'svelte';
|
|
5
|
+
|
|
6
|
+
import NeoIconImage from '../icons/NeoIconImage.svelte';
|
|
7
|
+
import NeoIconInfo from '../icons/NeoIconWarning.svelte';
|
|
8
|
+
import { computeBorderRadius } from '../utils/border.utils.js';
|
|
9
|
+
import { Logger } from '../utils/logger.utils.js';
|
|
10
|
+
import { toSize } from '../utils/style.utils.js';
|
|
11
|
+
|
|
12
|
+
let {
|
|
13
|
+
// Snippet
|
|
14
|
+
children,
|
|
15
|
+
|
|
16
|
+
// State
|
|
17
|
+
ref = $bindable(),
|
|
18
|
+
src = $bindable(),
|
|
19
|
+
fallback,
|
|
20
|
+
alt,
|
|
21
|
+
error = $bindable(false),
|
|
22
|
+
loaded = $bindable(false),
|
|
23
|
+
skeleton,
|
|
24
|
+
delay = 0,
|
|
25
|
+
showAltText,
|
|
26
|
+
|
|
27
|
+
// Styles
|
|
28
|
+
rounded,
|
|
29
|
+
glass,
|
|
30
|
+
|
|
31
|
+
// Size
|
|
32
|
+
width: _width,
|
|
33
|
+
height: _height,
|
|
34
|
+
ratio,
|
|
35
|
+
flex,
|
|
36
|
+
fit,
|
|
37
|
+
|
|
38
|
+
// Events
|
|
39
|
+
onerror,
|
|
40
|
+
onload,
|
|
41
|
+
|
|
42
|
+
// Other props
|
|
43
|
+
containerProps: _containerProps = {},
|
|
44
|
+
...rest
|
|
45
|
+
}: NeoImageProps = $props();
|
|
46
|
+
|
|
47
|
+
const { tag = 'div', ...containerProps } = $derived(_containerProps);
|
|
48
|
+
|
|
49
|
+
const width = $derived(toSize(_width));
|
|
50
|
+
const height = $derived(toSize(_height));
|
|
51
|
+
|
|
52
|
+
let ready = $state(delay === null);
|
|
53
|
+
const loading = $derived(ready && !loaded && !error);
|
|
54
|
+
|
|
55
|
+
onMount(() => {
|
|
56
|
+
if (ready) return;
|
|
57
|
+
if (!delay) return ready = true;
|
|
58
|
+
setTimeout(() => {
|
|
59
|
+
ready = true;
|
|
60
|
+
}, delay);
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
const onError: NeoImageProps['onerror'] = (e) => {
|
|
64
|
+
onerror?.(e);
|
|
65
|
+
error = true;
|
|
66
|
+
Logger.error('Image failed to load', e);
|
|
67
|
+
if (!ref || !fallback || src === fallback || e.defaultPrevented) return;
|
|
68
|
+
src = fallback;
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
const onLoad: NeoImageProps['onload'] = (e) => {
|
|
72
|
+
loaded = true;
|
|
73
|
+
error = false;
|
|
74
|
+
onload?.(e);
|
|
75
|
+
};
|
|
76
|
+
</script>
|
|
77
|
+
|
|
78
|
+
<svelte:element
|
|
79
|
+
this={tag}
|
|
80
|
+
data-error={error}
|
|
81
|
+
data-loaded={loaded}
|
|
82
|
+
data-fallback={(error && src === fallback)}
|
|
83
|
+
data-src={(error && src === fallback) ? src : undefined}
|
|
84
|
+
class:neo-image={true}
|
|
85
|
+
class:neo-rounded={rounded}
|
|
86
|
+
class:neo-skeleton={skeleton || loading}
|
|
87
|
+
class:neo-glass={glass}
|
|
88
|
+
class:neo-error={error}
|
|
89
|
+
style:flex
|
|
90
|
+
style:width={width?.absolute}
|
|
91
|
+
style:min-width={width?.min}
|
|
92
|
+
style:max-width={width?.max}
|
|
93
|
+
style:height={height?.absolute}
|
|
94
|
+
style:min-height={height?.min}
|
|
95
|
+
style:max-height={height?.max}
|
|
96
|
+
style:aspect-ratio={ratio}
|
|
97
|
+
style:--neo-image-border-radius={computeBorderRadius(rounded)}
|
|
98
|
+
{...containerProps}
|
|
99
|
+
>
|
|
100
|
+
<div class="neo-image-icon">
|
|
101
|
+
{#if error}
|
|
102
|
+
<NeoIconInfo />
|
|
103
|
+
{@render children?.()}
|
|
104
|
+
{:else}
|
|
105
|
+
<NeoIconImage delay={0.3} />
|
|
106
|
+
{/if}
|
|
107
|
+
</div>
|
|
108
|
+
<img
|
|
109
|
+
bind:this={ref}
|
|
110
|
+
class:neo-image-img={true}
|
|
111
|
+
class:neo-rounded={rounded}
|
|
112
|
+
class:neo-alt-text={showAltText}
|
|
113
|
+
{src}
|
|
114
|
+
{alt}
|
|
115
|
+
loading="lazy"
|
|
116
|
+
decoding="auto"
|
|
117
|
+
style:object-fit={fit}
|
|
118
|
+
onerror={onError}
|
|
119
|
+
onload={onLoad}
|
|
120
|
+
{...rest}
|
|
121
|
+
/>
|
|
122
|
+
</svelte:element>
|
|
123
|
+
|
|
124
|
+
<style>.neo-image,
|
|
125
|
+
.neo-image-img {
|
|
126
|
+
width: 100%;
|
|
127
|
+
height: 100%;
|
|
128
|
+
border-radius: var(--neo-image-border-radius, var(--neo-border-radius, 0.5rem));
|
|
129
|
+
transition: border-radius 0.3s ease, color 0.3s ease, background-color 0.5s ease, border-color 0.5s ease, opacity 0.5s ease;
|
|
130
|
+
}
|
|
131
|
+
.neo-image.neo-rounded,
|
|
132
|
+
.neo-image-img.neo-rounded {
|
|
133
|
+
border-radius: var(--neo-image-border-radius, var(--neo-border-radius-xxl));
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.neo-image {
|
|
137
|
+
position: relative;
|
|
138
|
+
background-color: transparent;
|
|
139
|
+
visibility: visible;
|
|
140
|
+
}
|
|
141
|
+
.neo-image-icon {
|
|
142
|
+
position: absolute;
|
|
143
|
+
top: calc(50% - var(--neo-image-icon-size, 20%) / 2);
|
|
144
|
+
left: calc(50% - var(--neo-image-icon-size, 20%) / 2);
|
|
145
|
+
display: flex;
|
|
146
|
+
flex-direction: column;
|
|
147
|
+
gap: var(--neo-gap-xxs, 0.5rem);
|
|
148
|
+
align-items: center;
|
|
149
|
+
justify-content: center;
|
|
150
|
+
width: var(--neo-image-icon-size, 20%);
|
|
151
|
+
height: var(--neo-image-icon-size, 20%);
|
|
152
|
+
color: var(--neo-text-color-inverse);
|
|
153
|
+
visibility: hidden;
|
|
154
|
+
opacity: 0.75;
|
|
155
|
+
transition: visibility 0.3s ease, opacity 0.3s ease;
|
|
156
|
+
}
|
|
157
|
+
.neo-image-icon :global(> svg) {
|
|
158
|
+
width: 100%;
|
|
159
|
+
height: 100%;
|
|
160
|
+
}
|
|
161
|
+
.neo-image.neo-skeleton {
|
|
162
|
+
--neo-skeleton-start: 1;
|
|
163
|
+
--neo-skeleton-end: calc(1 + var(--neo-skeleton-step, -0.3));
|
|
164
|
+
color: var(--neo-skeleton-color);
|
|
165
|
+
background-color: var(--neo-skeleton-color);
|
|
166
|
+
background-clip: padding-box;
|
|
167
|
+
border-color: var(--neo-skeleton-color);
|
|
168
|
+
opacity: 1;
|
|
169
|
+
transition: border-radius 0.3333333333s ease, background-color 1s ease, color 0.3333333333s ease, border-color 1s ease, opacity 1s ease;
|
|
170
|
+
animation: skeleton 3s var(--neo-transition-skeleton) infinite;
|
|
171
|
+
animation-delay: 1s;
|
|
172
|
+
}
|
|
173
|
+
@keyframes skeleton {
|
|
174
|
+
0%, 80%, 100% {
|
|
175
|
+
opacity: var(--neo-skeleton-start);
|
|
176
|
+
}
|
|
177
|
+
40% {
|
|
178
|
+
opacity: var(--neo-skeleton-end);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
.neo-image.neo-skeleton .neo-image-img {
|
|
182
|
+
opacity: 0;
|
|
183
|
+
}
|
|
184
|
+
.neo-image.neo-skeleton .neo-image-icon {
|
|
185
|
+
visibility: visible;
|
|
186
|
+
}
|
|
187
|
+
.neo-image.neo-error {
|
|
188
|
+
background-color: var(--neo-image-error-bg, color-mix(in srgb, var(--neo-skeleton-color) 75%, var(--neo-dark-color-error-75)));
|
|
189
|
+
}
|
|
190
|
+
.neo-image.neo-error .neo-image-img:not(.neo-alt-text) {
|
|
191
|
+
opacity: 0;
|
|
192
|
+
}
|
|
193
|
+
.neo-image.neo-error .neo-image-img:not(.neo-alt-text)[alt] {
|
|
194
|
+
align-content: flex-end;
|
|
195
|
+
overflow: hidden;
|
|
196
|
+
white-space: pre-line;
|
|
197
|
+
overflow-wrap: anywhere;
|
|
198
|
+
}
|
|
199
|
+
.neo-image.neo-error .neo-image-icon {
|
|
200
|
+
visibility: visible;
|
|
201
|
+
}
|
|
202
|
+
.neo-image.neo-glass {
|
|
203
|
+
--neo-skeleton-color: var(--neo-glass-skeleton-color);
|
|
204
|
+
}</style>
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { NeoMediaContext, NeoMediaProps } from './neo-media.model.js';
|
|
3
|
+
|
|
4
|
+
import { NeoMediaType } from './neo-media.model.js';
|
|
5
|
+
import NeoImage from './NeoImage.svelte';
|
|
6
|
+
import NeoSkeletonMedia from '../skeletons/NeoSkeletonMedia.svelte';
|
|
7
|
+
import NeoSkeletonText from '../skeletons/NeoSkeletonText.svelte';
|
|
8
|
+
import { toTransition, toTransitionProps } from '../utils/action.utils.js';
|
|
9
|
+
import { computeBorderRadius } from '../utils/border.utils.js';
|
|
10
|
+
import { getColorVariable } from '../utils/colors.utils.js';
|
|
11
|
+
import { coerce, computeGlassFilter, computeShadowElevation, getDefaultElevation, parseBlur } from '../utils/shadow.utils.js';
|
|
12
|
+
import { toSize } from '../utils/style.utils.js';
|
|
13
|
+
|
|
14
|
+
let {
|
|
15
|
+
// Snippet
|
|
16
|
+
children,
|
|
17
|
+
caption,
|
|
18
|
+
|
|
19
|
+
// State
|
|
20
|
+
ref = $bindable(),
|
|
21
|
+
tag = 'figure',
|
|
22
|
+
type: _type,
|
|
23
|
+
loading = false,
|
|
24
|
+
|
|
25
|
+
// Media,
|
|
26
|
+
image,
|
|
27
|
+
|
|
28
|
+
// Styles
|
|
29
|
+
borderless,
|
|
30
|
+
pressed,
|
|
31
|
+
rounded,
|
|
32
|
+
glass,
|
|
33
|
+
color,
|
|
34
|
+
tinted,
|
|
35
|
+
filled,
|
|
36
|
+
start,
|
|
37
|
+
|
|
38
|
+
// Size
|
|
39
|
+
flex,
|
|
40
|
+
width: _width,
|
|
41
|
+
height: _height,
|
|
42
|
+
ratio,
|
|
43
|
+
|
|
44
|
+
// Shadow
|
|
45
|
+
elevation: _elevation = getDefaultElevation(pressed),
|
|
46
|
+
blur: _blur,
|
|
47
|
+
|
|
48
|
+
// Transition
|
|
49
|
+
in: inAction,
|
|
50
|
+
out: outAction,
|
|
51
|
+
transition: transitionAction,
|
|
52
|
+
|
|
53
|
+
// Other props
|
|
54
|
+
captionProps: _captionProps = {},
|
|
55
|
+
skeletonTextProps,
|
|
56
|
+
skeletonMediaProps,
|
|
57
|
+
...rest
|
|
58
|
+
}: NeoMediaProps = $props();
|
|
59
|
+
|
|
60
|
+
const { tag: captionTag = 'figcaption', ...captionProps } = $derived(_captionProps);
|
|
61
|
+
const type = $derived.by(() => {
|
|
62
|
+
if (_type) return _type;
|
|
63
|
+
if (image?.src) return NeoMediaType.Image;
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
const elevation = $derived(coerce(_elevation));
|
|
67
|
+
const blur = $derived(parseBlur(_blur, elevation));
|
|
68
|
+
const filter = $derived(computeGlassFilter(blur, glass));
|
|
69
|
+
|
|
70
|
+
const boxShadow = $derived(computeShadowElevation(elevation, { glass, pressed }));
|
|
71
|
+
|
|
72
|
+
const width = $derived(toSize(_width));
|
|
73
|
+
const height = $derived(toSize(_height));
|
|
74
|
+
|
|
75
|
+
const inFn = $derived(toTransition(inAction ?? transitionAction));
|
|
76
|
+
const inProps = $derived(toTransitionProps(inAction ?? transitionAction));
|
|
77
|
+
const outFn = $derived(toTransition(outAction ?? transitionAction));
|
|
78
|
+
const outProps = $derived(toTransitionProps(outAction ?? transitionAction));
|
|
79
|
+
|
|
80
|
+
const context = $derived<NeoMediaContext>({
|
|
81
|
+
// State
|
|
82
|
+
loading,
|
|
83
|
+
type,
|
|
84
|
+
|
|
85
|
+
// Styles
|
|
86
|
+
borderless,
|
|
87
|
+
pressed,
|
|
88
|
+
rounded,
|
|
89
|
+
glass,
|
|
90
|
+
color,
|
|
91
|
+
tinted,
|
|
92
|
+
filled,
|
|
93
|
+
|
|
94
|
+
// shadow
|
|
95
|
+
elevation,
|
|
96
|
+
blur,
|
|
97
|
+
});
|
|
98
|
+
</script>
|
|
99
|
+
|
|
100
|
+
<svelte:element
|
|
101
|
+
bind:this={ref}
|
|
102
|
+
this={tag}
|
|
103
|
+
class:neo-media={true}
|
|
104
|
+
class:neo-glass={glass}
|
|
105
|
+
class:neo-filled={filled}
|
|
106
|
+
class:neo-tinted={tinted}
|
|
107
|
+
class:neo-rounded={rounded}
|
|
108
|
+
class:neo-pressed={pressed}
|
|
109
|
+
class:neo-borderless={borderless}
|
|
110
|
+
class:neo-start={start}
|
|
111
|
+
class:neo-inset={elevation < 0}
|
|
112
|
+
class:neo-flat={!elevation}
|
|
113
|
+
style:flex
|
|
114
|
+
style:width={width?.absolute}
|
|
115
|
+
style:min-width={width?.min}
|
|
116
|
+
style:max-width={width?.max}
|
|
117
|
+
style:height={height?.absolute}
|
|
118
|
+
style:min-height={height?.min}
|
|
119
|
+
style:max-height={height?.max}
|
|
120
|
+
style:--neo-media-color={getColorVariable(color)}
|
|
121
|
+
style:--neo-media-glass-blur={filter}
|
|
122
|
+
style:--neo-media-box-shadow={boxShadow}
|
|
123
|
+
style:--neo-media-border-radius={computeBorderRadius(rounded)}
|
|
124
|
+
out:outFn={outProps}
|
|
125
|
+
in:inFn={inProps}
|
|
126
|
+
{...rest}
|
|
127
|
+
>
|
|
128
|
+
{#if type === NeoMediaType.Image}
|
|
129
|
+
<NeoImage skeleton={loading} {rounded} {glass} {ratio} {...image} />
|
|
130
|
+
{:else}
|
|
131
|
+
<NeoSkeletonMedia {loading} {glass} {rounded} {type} {ratio} {...skeletonMediaProps}>
|
|
132
|
+
{@render children?.(context)}
|
|
133
|
+
</NeoSkeletonMedia>
|
|
134
|
+
{/if}
|
|
135
|
+
|
|
136
|
+
{#if caption}
|
|
137
|
+
<NeoSkeletonText lines="1" {loading} {glass} {...skeletonTextProps}>
|
|
138
|
+
<svelte:element this={captionTag} class:neo-media-caption={true} {...captionProps}>
|
|
139
|
+
{#if typeof caption === 'function'}
|
|
140
|
+
{@render caption(context)}
|
|
141
|
+
{:else}
|
|
142
|
+
{caption}
|
|
143
|
+
{/if}
|
|
144
|
+
</svelte:element>
|
|
145
|
+
</NeoSkeletonText>
|
|
146
|
+
{/if}
|
|
147
|
+
</svelte:element>
|
|
148
|
+
|
|
149
|
+
<style>.neo-media {
|
|
150
|
+
display: flex;
|
|
151
|
+
flex: var(--neo-media-flex, 1 1 auto);
|
|
152
|
+
flex-direction: column;
|
|
153
|
+
gap: var(--neo-media-gap, var(--neo-gap-xs, 0.625rem));
|
|
154
|
+
margin: var(--neo-media-margin, var(--neo-shadow-margin, 0.625rem));
|
|
155
|
+
padding: var(--neo-media-padding, var(--neo-gap, 1rem));
|
|
156
|
+
color: var(--neo-media-color, inherit);
|
|
157
|
+
background-clip: padding-box;
|
|
158
|
+
border: var(--neo-media-border-width, var(--neo-border-width, 1px)) var(--neo-media-border-color, transparent) solid;
|
|
159
|
+
border-radius: var(--neo-media-border-radius, var(--neo-border-radius-lg));
|
|
160
|
+
box-shadow: var(--neo-media-box-shadow, var(--neo-box-shadow-flat));
|
|
161
|
+
transition: color 0.15s ease, padding 0.3s ease, margin 0.3s ease, border-color 0.3s ease, border-radius 0.3s ease, backdrop-filter 0.3s ease, background-color 0.3s ease, box-shadow 0.3s ease-out;
|
|
162
|
+
}
|
|
163
|
+
.neo-media .neo-media-caption {
|
|
164
|
+
transition: margin 0.3s ease;
|
|
165
|
+
}
|
|
166
|
+
@starting-style {
|
|
167
|
+
.neo-media.neo-start {
|
|
168
|
+
box-shadow: var(--neo-box-shadow-flat);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
.neo-media.neo-flat:not(.neo-borderless) {
|
|
172
|
+
border-color: var(--neo-media-border-color, var(--neo-border-color));
|
|
173
|
+
}
|
|
174
|
+
.neo-media.neo-borderless {
|
|
175
|
+
border-color: transparent;
|
|
176
|
+
}
|
|
177
|
+
.neo-media.neo-rounded {
|
|
178
|
+
border-radius: var(--neo-media-border-radius, var(--neo-border-radius-3xl));
|
|
179
|
+
}
|
|
180
|
+
.neo-media.neo-rounded .neo-media-caption {
|
|
181
|
+
margin-inline: 0.75rem;
|
|
182
|
+
}
|
|
183
|
+
.neo-media.neo-glass {
|
|
184
|
+
--neo-skeleton-color: var(--neo-glass-skeleton-color);
|
|
185
|
+
--neo-border-color: var(--neo-glass-border-color);
|
|
186
|
+
--neo-background-color-tinted: var(--neo-glass-background-color-tinted);
|
|
187
|
+
background-color: var(--neo-media-bg-color, var(--neo-glass-background-color));
|
|
188
|
+
backdrop-filter: var(--neo-media-glass-blur, var(--neo-blur-3) var(--neo-saturate-2));
|
|
189
|
+
}
|
|
190
|
+
.neo-media.neo-glass:not(.neo-borderless, .neo-inset, .neo-flat .neo-filled) {
|
|
191
|
+
border-color: var(--neo-media-border-color, var(--neo-glass-top-border-color) var(--neo-glass-right-border-color) var(--neo-glass-bottom-border-color) var(--neo-glass-left-border-color));
|
|
192
|
+
}
|
|
193
|
+
.neo-media.neo-glass.neo-flat:not(.neo-borderless) {
|
|
194
|
+
border-color: var(--neo-media-border-color, var(--neo-glass-border-color-flat));
|
|
195
|
+
}
|
|
196
|
+
.neo-media.neo-tinted {
|
|
197
|
+
background-color: var(--neo-media-bg-color, var(--neo-background-color-tinted));
|
|
198
|
+
}
|
|
199
|
+
.neo-media.neo-filled {
|
|
200
|
+
background-color: var(--neo-media-bg-color, var(--neo-background-color));
|
|
201
|
+
}
|
|
202
|
+
.neo-media.neo-filled.neo-glass {
|
|
203
|
+
border-color: var(--neo-media-border-color, var(--neo-filled-top-border-color) var(--neo-filled-right-border-color) var(--neo-filled-bottom-border-color) var(--neo-filled-left-border-color));
|
|
204
|
+
}</style>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as NeoImage } from './NeoImage.svelte';
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { HTMLImgAttributes } from 'svelte/elements';
|
|
2
|
+
import type { BorderRadiusInput } from '../utils/border.utils.js';
|
|
3
|
+
import type { HTMLNeoBaseElement, HTMLRefProps, HTMLTagProps } from '../utils/html-element.utils.js';
|
|
4
|
+
import type { SizeInput } from '../utils/style.utils.js';
|
|
5
|
+
export interface NeoImageProps extends Omit<HTMLImgAttributes, 'width' | 'height'>, HTMLRefProps {
|
|
6
|
+
/**
|
|
7
|
+
* Whether the image is loaded.
|
|
8
|
+
*/
|
|
9
|
+
loaded?: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Whether the image failed to load.
|
|
12
|
+
*/
|
|
13
|
+
error?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* An optional fallback image source to use if the image fails to load.
|
|
16
|
+
*/
|
|
17
|
+
fallback?: HTMLImgAttributes['src'];
|
|
18
|
+
/**
|
|
19
|
+
* Whether to show a skeleton in place of the image, regardless of loading state.
|
|
20
|
+
*/
|
|
21
|
+
skeleton?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Keep alternative text visible when the image is not loaded or errored.
|
|
24
|
+
* By default, the alt text is only visible to screen readers for accessibility.
|
|
25
|
+
*
|
|
26
|
+
* @default false
|
|
27
|
+
*/
|
|
28
|
+
showAltText?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* How long to wait before showing the skeleton if the image is not loaded or errored (in milliseconds).
|
|
31
|
+
*
|
|
32
|
+
* @default 0
|
|
33
|
+
*/
|
|
34
|
+
delay?: number;
|
|
35
|
+
/**
|
|
36
|
+
* Optional flex strategy for the image.
|
|
37
|
+
*/
|
|
38
|
+
flex?: CSSStyleDeclaration['flex'];
|
|
39
|
+
/**
|
|
40
|
+
* Optional width constraints for the image.
|
|
41
|
+
*/
|
|
42
|
+
width?: SizeInput<'width'>;
|
|
43
|
+
/**
|
|
44
|
+
* Optional height constraints for the image.
|
|
45
|
+
*/
|
|
46
|
+
height?: SizeInput<'height'>;
|
|
47
|
+
/**
|
|
48
|
+
* Optional aspect ratio for the image.
|
|
49
|
+
*/
|
|
50
|
+
ratio?: CSSStyleDeclaration['aspectRatio'];
|
|
51
|
+
/**
|
|
52
|
+
* Optional object fit for the image.
|
|
53
|
+
*/
|
|
54
|
+
fit?: CSSStyleDeclaration['objectFit'];
|
|
55
|
+
/**
|
|
56
|
+
* Rounds border radius.
|
|
57
|
+
*/
|
|
58
|
+
rounded?: BorderRadiusInput;
|
|
59
|
+
/**
|
|
60
|
+
* Whether to show the skeleton with a glass effect.
|
|
61
|
+
*/
|
|
62
|
+
glass?: boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Optional props to pass to the container element.
|
|
65
|
+
*/
|
|
66
|
+
containerProps?: HTMLNeoBaseElement & HTMLTagProps;
|
|
67
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { NeoImageProps } from './neo-image.model.js';
|
|
3
|
+
import type { NeoSkeletonMediaProps } from '../skeletons/neo-skeleton-media.model.js';
|
|
4
|
+
import type { NeoSkeletonTextProps } from '../skeletons/neo-skeleton-text.model.js';
|
|
5
|
+
import type { HTMLTransitionProps } from '../utils/action.utils.js';
|
|
6
|
+
import type { BorderRadiusInput } from '../utils/border.utils.js';
|
|
7
|
+
import type { Color } from '../utils/colors.utils.js';
|
|
8
|
+
import type { HTMLNeoBaseElement, HTMLRefProps, HTMLTagProps } from '../utils/html-element.utils.js';
|
|
9
|
+
import type { BlurElevation, BlurElevationString, ShadowElevation, ShadowElevationString } from '../utils/shadow.utils.js';
|
|
10
|
+
import type { SizeInput } from '../utils/style.utils.js';
|
|
11
|
+
export type NeoMediaElevation = ShadowElevation | ShadowElevationString;
|
|
12
|
+
export type NeoMediaBlur = BlurElevation | BlurElevationString;
|
|
13
|
+
export declare const NeoMediaType: {
|
|
14
|
+
readonly Image: "image";
|
|
15
|
+
readonly Video: "video";
|
|
16
|
+
readonly Audio: "audio";
|
|
17
|
+
};
|
|
18
|
+
export type NeoMediaTypes = (typeof NeoMediaType)[keyof typeof NeoMediaType];
|
|
19
|
+
export interface NeoMediaContext<Type extends NeoMediaTypes = NeoMediaTypes> {
|
|
20
|
+
/**
|
|
21
|
+
* Whether to show the media as a skeleton.
|
|
22
|
+
*/
|
|
23
|
+
loading?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* The type of media to display.
|
|
26
|
+
*/
|
|
27
|
+
type?: Type;
|
|
28
|
+
/**
|
|
29
|
+
* Whether to show a border around the media (when applicable).
|
|
30
|
+
*/
|
|
31
|
+
borderless?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Recess the content of the media if elevation is inset (< 0).
|
|
34
|
+
*/
|
|
35
|
+
pressed?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Whether to show the media with a border radius.
|
|
38
|
+
*/
|
|
39
|
+
rounded?: BorderRadiusInput;
|
|
40
|
+
/**
|
|
41
|
+
* Whether to show the media with a glass effect.
|
|
42
|
+
*/
|
|
43
|
+
glass?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Color to tint the media with.
|
|
46
|
+
*/
|
|
47
|
+
color?: Color | CSSStyleDeclaration['color'];
|
|
48
|
+
/**
|
|
49
|
+
* Whether to tint the media background with the color.
|
|
50
|
+
*/
|
|
51
|
+
tinted?: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Whether to fill the media with the color.
|
|
54
|
+
*/
|
|
55
|
+
filled?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Whether to display the media as flat on first render.
|
|
58
|
+
*/
|
|
59
|
+
start?: boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Media elevation.
|
|
62
|
+
* @default 3
|
|
63
|
+
*/
|
|
64
|
+
elevation?: NeoMediaElevation;
|
|
65
|
+
/**
|
|
66
|
+
* The blur level to apply when in glass mode.
|
|
67
|
+
*
|
|
68
|
+
* @default elevation, min: 1, max: 5
|
|
69
|
+
* @see glass
|
|
70
|
+
*/
|
|
71
|
+
blur?: NeoMediaBlur;
|
|
72
|
+
}
|
|
73
|
+
export interface NeoMediaProps<Type extends NeoMediaTypes = NeoMediaTypes, Tag extends keyof HTMLElementTagNameMap = 'figure'> extends NeoMediaContext<Type>, Omit<HTMLNeoBaseElement<HTMLElementTagNameMap[Tag]>, 'children' | 'color'>, HTMLRefProps, HTMLTransitionProps {
|
|
74
|
+
/**
|
|
75
|
+
* Element(s) to render inside the media.
|
|
76
|
+
*/
|
|
77
|
+
children?: Snippet<[NeoMediaContext<Type>]>;
|
|
78
|
+
/**
|
|
79
|
+
* A snippet or a string to display as the media caption.
|
|
80
|
+
*/
|
|
81
|
+
caption?: string | Snippet<[NeoMediaContext<Type>]>;
|
|
82
|
+
/**
|
|
83
|
+
* The HTML tag to use for the media component.
|
|
84
|
+
*
|
|
85
|
+
* @default 'figure'
|
|
86
|
+
*/
|
|
87
|
+
tag?: Tag;
|
|
88
|
+
/**
|
|
89
|
+
* The props to pass to the image element.
|
|
90
|
+
*/
|
|
91
|
+
image?: NeoImageProps;
|
|
92
|
+
/**
|
|
93
|
+
* Overrides the default flex value.
|
|
94
|
+
*/
|
|
95
|
+
flex?: CSSStyleDeclaration['flex'];
|
|
96
|
+
/**
|
|
97
|
+
* Optional width constraints.
|
|
98
|
+
*/
|
|
99
|
+
width?: SizeInput<'width'>;
|
|
100
|
+
/**
|
|
101
|
+
* Optional height constraints.
|
|
102
|
+
*/
|
|
103
|
+
height?: SizeInput<'height'>;
|
|
104
|
+
/**
|
|
105
|
+
* Optional aspect ratio for the media.
|
|
106
|
+
*/
|
|
107
|
+
ratio?: CSSStyleDeclaration['aspectRatio'];
|
|
108
|
+
/**
|
|
109
|
+
* The props to pass to the caption element.
|
|
110
|
+
*/
|
|
111
|
+
captionProps?: HTMLNeoBaseElement & HTMLTagProps;
|
|
112
|
+
/**
|
|
113
|
+
* The props to pass to the caption skeleton loader.
|
|
114
|
+
*/
|
|
115
|
+
skeletonTextProps?: NeoSkeletonTextProps;
|
|
116
|
+
/**
|
|
117
|
+
* The props to pass to the media skeleton loader.
|
|
118
|
+
*/
|
|
119
|
+
skeletonMediaProps?: NeoSkeletonMediaProps;
|
|
120
|
+
}
|