@witchcraft/ui 0.3.26 → 0.4.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -61
- package/dist/module.json +1 -1
- package/dist/module.mjs +1 -1
- package/dist/runtime/assets/animations.css +1 -1
- package/dist/runtime/assets/locales/en.json +2 -0
- package/dist/runtime/build/WitchcraftUiResolver.js +1 -1
- package/dist/runtime/components/TestControls/TestControls.vue +3 -3
- package/dist/runtime/components/WButton/WButton.d.vue.ts +34 -0
- package/dist/runtime/components/{LibButton/LibButton.vue → WButton/WButton.vue} +26 -38
- package/dist/runtime/components/WButton/WButton.vue.d.ts +34 -0
- package/dist/runtime/components/WCheckbox/WCheckbox.d.vue.ts +33 -0
- package/dist/runtime/components/WCheckbox/WCheckbox.vue +109 -0
- package/dist/runtime/components/WCheckbox/WCheckbox.vue.d.ts +33 -0
- package/dist/runtime/components/WColorInput/WColorInput.d.vue.ts +45 -0
- package/dist/runtime/components/WColorInput/WColorInput.vue +85 -0
- package/dist/runtime/components/WColorInput/WColorInput.vue.d.ts +45 -0
- package/dist/runtime/components/WColorInput/WColorSwatchButton.d.vue.ts +28 -0
- package/dist/runtime/components/WColorInput/WColorSwatchButton.vue +86 -0
- package/dist/runtime/components/WColorInput/WColorSwatchButton.vue.d.ts +28 -0
- package/dist/runtime/components/{LibColorPicker/LibColorPicker.d.vue.ts → WColorPicker/WColorPicker.d.vue.ts} +7 -6
- package/dist/runtime/components/{LibColorPicker/LibColorPicker.vue → WColorPicker/WColorPicker.vue} +40 -29
- package/dist/runtime/components/{LibColorPicker/LibColorPicker.vue.d.ts → WColorPicker/WColorPicker.vue.d.ts} +7 -6
- package/dist/runtime/components/WCombobox/WCombobox.d.vue.ts +109 -0
- package/dist/runtime/components/WCombobox/WCombobox.vue +402 -0
- package/dist/runtime/components/WCombobox/WCombobox.vue.d.ts +109 -0
- package/dist/runtime/components/WCombobox/storyPlays.d.ts +18 -0
- package/dist/runtime/components/WCombobox/storyPlays.js +68 -0
- package/dist/runtime/components/{LibDarkModeSwitcher/LibDarkModeSwitcher.d.vue.ts → WDarkModeSwitcher/WDarkModeSwitcher.d.vue.ts} +8 -13
- package/dist/runtime/components/{LibDarkModeSwitcher/LibDarkModeSwitcher.vue → WDarkModeSwitcher/WDarkModeSwitcher.vue} +11 -14
- package/dist/runtime/components/{LibDarkModeSwitcher/LibDarkModeSwitcher.vue.d.ts → WDarkModeSwitcher/WDarkModeSwitcher.vue.d.ts} +8 -13
- package/dist/runtime/components/WDatePicker/WDatePicker.d.vue.ts +40 -0
- package/dist/runtime/components/{LibDatePicker/LibDatePicker.vue → WDatePicker/WDatePicker.vue} +3 -7
- package/dist/runtime/components/WDatePicker/WDatePicker.vue.d.ts +40 -0
- package/dist/runtime/components/{LibDatePicker/LibRangeDatePicker.vue → WDatePicker/WRangeDatePicker.vue} +16 -21
- package/dist/runtime/components/{LibDatePicker/LibSingleDatePicker.vue → WDatePicker/WSingleDatePicker.vue} +16 -21
- package/dist/runtime/components/{LibDatePicker/LibTimeZonePicker.d.vue.ts → WDatePicker/WTimeZonePicker.d.vue.ts} +1 -11
- package/dist/runtime/components/{LibDatePicker/LibTimeZonePicker.vue → WDatePicker/WTimeZonePicker.vue} +5 -12
- package/dist/runtime/components/{LibDatePicker/LibTimeZonePicker.vue.d.ts → WDatePicker/WTimeZonePicker.vue.d.ts} +1 -11
- package/dist/runtime/components/{LibDebug/LibDebug.vue → WDebug/WDebug.vue} +9 -12
- package/dist/runtime/components/{LibDevOnly/LibDevOnly.d.vue.ts → WDevOnly/WDevOnly.d.vue.ts} +0 -3
- package/dist/runtime/components/{LibDevOnly/LibDevOnly.vue.d.ts → WDevOnly/WDevOnly.vue.d.ts} +0 -3
- package/dist/runtime/components/WFileInput/WFileInput.d.vue.ts +58 -0
- package/dist/runtime/components/{LibFileInput/LibFileInput.vue → WFileInput/WFileInput.vue} +71 -57
- package/dist/runtime/components/WFileInput/WFileInput.vue.d.ts +58 -0
- package/dist/runtime/components/{Icon/Icon.vue.d.ts → WIcon/WIcon.d.vue.ts} +2 -6
- package/dist/runtime/components/{Icon/Icon.vue → WIcon/WIcon.vue} +1 -1
- package/dist/runtime/components/{Icon/Icon.d.vue.ts → WIcon/WIcon.vue.d.ts} +2 -6
- package/dist/runtime/components/{LibMultiValues/LibMultiValues.d.vue.ts → WMultiValues/WMultiValues.d.vue.ts} +8 -14
- package/dist/runtime/components/WMultiValues/WMultiValues.vue +149 -0
- package/dist/runtime/components/{LibMultiValues/LibMultiValues.vue.d.ts → WMultiValues/WMultiValues.vue.d.ts} +8 -14
- package/dist/runtime/components/WNotifications/WNotification.d.vue.ts +37 -0
- package/dist/runtime/components/{LibNotifications/LibNotification.vue → WNotifications/WNotification.vue} +32 -47
- package/dist/runtime/components/WNotifications/WNotification.vue.d.ts +37 -0
- package/dist/runtime/components/WNotifications/WNotifications.d.vue.ts +11 -0
- package/dist/runtime/components/{LibNotifications/LibNotifications.vue → WNotifications/WNotifications.vue} +35 -17
- package/dist/runtime/components/WNotifications/WNotifications.vue.d.ts +11 -0
- package/dist/runtime/components/WNumberInput/WNumberInput.d.vue.ts +27 -0
- package/dist/runtime/components/WNumberInput/WNumberInput.vue +96 -0
- package/dist/runtime/components/WNumberInput/WNumberInput.vue.d.ts +27 -0
- package/dist/runtime/components/WPagination/WPagination.d.vue.ts +59 -0
- package/dist/runtime/components/WPagination/WPagination.vue +182 -0
- package/dist/runtime/components/WPagination/WPagination.vue.d.ts +59 -0
- package/dist/runtime/components/WPalette/WPalette.d.vue.ts +11 -0
- package/dist/runtime/components/{LibPalette/LibPalette.vue → WPalette/WPalette.vue} +3 -8
- package/dist/runtime/components/WPalette/WPalette.vue.d.ts +11 -0
- package/dist/runtime/components/WPopover/WPopover.d.vue.ts +43 -0
- package/dist/runtime/components/WPopover/WPopover.vue +138 -0
- package/dist/runtime/components/WPopover/WPopover.vue.d.ts +43 -0
- package/dist/runtime/components/WPopup/WPopup.d.vue.ts +41 -0
- package/dist/runtime/components/WPopup/WPopup.vue +74 -0
- package/dist/runtime/components/WPopup/WPopup.vue.d.ts +41 -0
- package/dist/runtime/components/{LibProgressBar/LibProgressBar.d.vue.ts → WProgressBar/WProgressBar.d.vue.ts} +14 -18
- package/dist/runtime/components/WProgressBar/WProgressBar.vue +150 -0
- package/dist/runtime/components/{LibProgressBar/LibProgressBar.vue.d.ts → WProgressBar/WProgressBar.vue.d.ts} +14 -18
- package/dist/runtime/components/{LibRecorder/LibRecorder.d.vue.ts → WRecorder/WRecorder.d.vue.ts} +14 -29
- package/dist/runtime/components/{LibRecorder/LibRecorder.vue → WRecorder/WRecorder.vue} +37 -36
- package/dist/runtime/components/{LibRecorder/LibRecorder.vue.d.ts → WRecorder/WRecorder.vue.d.ts} +14 -29
- package/dist/runtime/components/{LibRoot/LibRoot.d.vue.ts → WRoot/WRoot.d.vue.ts} +6 -5
- package/dist/runtime/components/{LibRoot/LibRoot.vue → WRoot/WRoot.vue} +17 -15
- package/dist/runtime/components/{LibRoot/LibRoot.vue.d.ts → WRoot/WRoot.vue.d.ts} +6 -5
- package/dist/runtime/components/{LibSimpleInput/LibSimpleInput.d.vue.ts → WSimpleInput/WSimpleInput.d.vue.ts} +9 -16
- package/dist/runtime/components/{LibSimpleInput/LibSimpleInput.vue → WSimpleInput/WSimpleInput.vue} +12 -23
- package/dist/runtime/components/{LibSimpleInput/LibSimpleInput.vue.d.ts → WSimpleInput/WSimpleInput.vue.d.ts} +9 -16
- package/dist/runtime/components/WTable/WTable.d.vue.ts +102 -0
- package/dist/runtime/components/{LibTable/LibTable.vue → WTable/WTable.vue} +13 -14
- package/dist/runtime/components/WTable/WTable.vue.d.ts +102 -0
- package/dist/runtime/components/WTooltip/WTooltip.d.vue.ts +40 -0
- package/dist/runtime/components/WTooltip/WTooltip.vue +111 -0
- package/dist/runtime/components/WTooltip/WTooltip.vue.d.ts +40 -0
- package/dist/runtime/components/index.d.ts +20 -20
- package/dist/runtime/components/index.js +20 -20
- package/dist/runtime/composables/index.d.ts +4 -4
- package/dist/runtime/composables/index.js +4 -4
- package/dist/runtime/composables/useDelayedLoadingIndicator.d.ts +9 -0
- package/dist/runtime/composables/useDelayedLoadingIndicator.js +18 -0
- package/dist/runtime/composables/useDisplayForReka.d.ts +25 -0
- package/dist/runtime/composables/useDisplayForReka.js +16 -0
- package/dist/runtime/composables/useFallbackId.d.ts +3 -0
- package/dist/runtime/composables/useFallbackId.js +5 -0
- package/dist/runtime/composables/useInjectedDarkMode.d.ts +1 -1
- package/dist/runtime/composables/usePopupConstrainToStyle.d.ts +8 -0
- package/dist/runtime/composables/usePopupConstrainToStyle.js +8 -0
- package/dist/runtime/composables/useSetupDarkMode.d.ts +2 -3
- package/dist/runtime/composables/useSetupDarkMode.js +90 -4
- package/dist/runtime/helpers/NotificationHandler.d.ts +2 -2
- package/dist/runtime/injectionKeys.d.ts +1 -5
- package/dist/runtime/injectionKeys.js +0 -2
- package/dist/runtime/types/index.d.ts +85 -27
- package/dist/runtime/types/index.js +1 -0
- package/package.json +1 -1
- package/src/module.ts +1 -1
- package/src/runtime/assets/animations.css +3 -3
- package/src/runtime/assets/locales/en.json +2 -0
- package/src/runtime/build/WitchcraftUiResolver.ts +1 -1
- package/src/runtime/components/TestControls/TestControls.vue +3 -3
- package/src/runtime/components/WButton/WButton.stories.ts +112 -0
- package/src/runtime/components/{LibButton/LibButton.vue → WButton/WButton.vue} +34 -50
- package/src/runtime/components/{LibCheckbox/LibCheckbox.stories.ts → WCheckbox/WCheckbox.stories.ts} +5 -5
- package/src/runtime/components/WCheckbox/WCheckbox.vue +123 -0
- package/src/runtime/components/{LibColorInput/LibColorInput.stories.ts → WColorInput/WColorInput.stories.ts} +8 -8
- package/src/runtime/components/WColorInput/WColorInput.vue +112 -0
- package/src/runtime/components/WColorInput/WColorSwatchButton.vue +102 -0
- package/src/runtime/components/{LibColorPicker/LibColorPicker.stories.ts → WColorPicker/WColorPicker.stories.ts} +12 -12
- package/src/runtime/components/{LibColorPicker/LibColorPicker.vue → WColorPicker/WColorPicker.vue} +43 -32
- package/src/runtime/components/WCombobox/WCombobox.stories.ts +209 -0
- package/src/runtime/components/WCombobox/WCombobox.vue +446 -0
- package/src/runtime/components/WCombobox/storyPlays.ts +92 -0
- package/src/runtime/components/{LibDarkModeSwitcher/LibDarkModeSwitcher.stories.ts → WDarkModeSwitcher/WDarkModeSwitcher.stories.ts} +6 -6
- package/src/runtime/components/{LibDarkModeSwitcher/LibDarkModeSwitcher.vue → WDarkModeSwitcher/WDarkModeSwitcher.vue} +19 -30
- package/src/runtime/components/{LibDatePicker/LibDatePicker.stories.ts → WDatePicker/WDatePicker.stories.ts} +42 -34
- package/src/runtime/components/{LibDatePicker/LibDatePicker.vue → WDatePicker/WDatePicker.vue} +3 -7
- package/src/runtime/components/{LibDatePicker/LibRangeDatePicker.vue → WDatePicker/WRangeDatePicker.vue} +16 -22
- package/src/runtime/components/{LibDatePicker/LibSingleDatePicker.vue → WDatePicker/WSingleDatePicker.vue} +16 -22
- package/src/runtime/components/{LibDatePicker/LibTimeZonePicker.vue → WDatePicker/WTimeZonePicker.vue} +5 -12
- package/src/runtime/components/{LibDebug/LibDebug.stories.ts → WDebug/WDebug.stories.ts} +5 -5
- package/src/runtime/components/{LibDebug/LibDebug.vue → WDebug/WDebug.vue} +8 -11
- package/src/runtime/components/{LibDevOnly/LibDevOnly.vue → WDevOnly/WDevOnly.vue} +0 -4
- package/src/runtime/components/{LibFileInput/LibFileInput.stories.ts → WFileInput/WFileInput.stories.ts} +7 -7
- package/src/runtime/components/{LibFileInput/LibFileInput.vue → WFileInput/WFileInput.vue} +95 -98
- package/src/runtime/components/{Icon/Icon.vue → WIcon/WIcon.vue} +5 -8
- package/src/runtime/components/{LibMultiValues/LibMultiValues.stories.ts → WMultiValues/WMultiValues.stories.ts} +9 -9
- package/src/runtime/components/WMultiValues/WMultiValues.vue +161 -0
- package/src/runtime/components/{LibNotifications/LibNotification.stories.ts → WNotifications/WNotification.stories.ts} +9 -9
- package/src/runtime/components/{LibNotifications/LibNotification.vue → WNotifications/WNotification.vue} +43 -66
- package/src/runtime/components/WNotifications/WNotifications.stories.ts +139 -0
- package/src/runtime/components/{LibNotifications/LibNotifications.vue → WNotifications/WNotifications.vue} +51 -29
- package/src/runtime/components/WNumberInput/WNumberInput.vue +109 -0
- package/src/runtime/components/WPagination/WPagination.stories.ts +51 -0
- package/src/runtime/components/WPagination/WPagination.vue +207 -0
- package/src/runtime/components/{LibPalette/LibPalette.stories.ts → WPalette/WPalette.stories.ts} +6 -6
- package/src/runtime/components/{LibPalette/LibPalette.vue → WPalette/WPalette.vue} +3 -8
- package/src/runtime/components/WPopover/WPopover.stories.ts +218 -0
- package/src/runtime/components/WPopover/WPopover.vue +161 -0
- package/src/runtime/components/WPopup/WPopup.stories.ts +60 -0
- package/src/runtime/components/WPopup/WPopup.vue +93 -0
- package/src/runtime/components/WProgressBar/WProgressBar.stories.ts +119 -0
- package/src/runtime/components/WProgressBar/WProgressBar.vue +185 -0
- package/src/runtime/components/{LibRecorder/LibRecorder.stories.ts → WRecorder/WRecorder.stories.ts} +9 -6
- package/src/runtime/components/{LibRecorder/LibRecorder.vue → WRecorder/WRecorder.vue} +69 -68
- package/src/runtime/components/{LibRoot/LibRoot.vue → WRoot/WRoot.vue} +18 -15
- package/src/runtime/components/{LibSimpleInput/LibSimpleInput.stories.ts → WSimpleInput/WSimpleInput.stories.ts} +11 -12
- package/src/runtime/components/{LibSimpleInput/LibSimpleInput.vue → WSimpleInput/WSimpleInput.vue} +27 -44
- package/src/runtime/components/{LibTable/LibTable.stories.ts → WTable/WTable.stories.ts} +60 -52
- package/src/runtime/components/{LibTable/LibTable.vue → WTable/WTable.vue} +85 -87
- package/src/runtime/components/WTooltip/WTooltip.stories.ts +82 -0
- package/src/runtime/components/WTooltip/WTooltip.vue +126 -0
- package/src/runtime/components/index.ts +20 -20
- package/src/runtime/composables/index.ts +4 -4
- package/src/runtime/composables/useDelayedLoadingIndicator.ts +30 -0
- package/src/runtime/composables/useDisplayForReka.ts +37 -0
- package/src/runtime/composables/useFallbackId.ts +6 -0
- package/src/runtime/composables/useInjectedDarkMode.ts +1 -2
- package/src/runtime/composables/usePopupConstrainToStyle.ts +29 -0
- package/src/runtime/composables/useSetupDarkMode.ts +122 -4
- package/src/runtime/helpers/NotificationHandler.ts +2 -2
- package/src/runtime/injectionKeys.ts +1 -7
- package/src/runtime/types/index.ts +105 -32
- package/types/components.d.ts +13 -15
- package/dist/runtime/components/Aria/Aria.d.vue.ts +0 -6
- package/dist/runtime/components/Aria/Aria.vue +0 -16
- package/dist/runtime/components/Aria/Aria.vue.d.ts +0 -6
- package/dist/runtime/components/LibButton/LibButton.d.vue.ts +0 -37
- package/dist/runtime/components/LibButton/LibButton.vue.d.ts +0 -37
- package/dist/runtime/components/LibCheckbox/LibCheckbox.d.vue.ts +0 -41
- package/dist/runtime/components/LibCheckbox/LibCheckbox.vue +0 -103
- package/dist/runtime/components/LibCheckbox/LibCheckbox.vue.d.ts +0 -41
- package/dist/runtime/components/LibColorInput/LibColorInput.d.vue.ts +0 -64
- package/dist/runtime/components/LibColorInput/LibColorInput.vue +0 -162
- package/dist/runtime/components/LibColorInput/LibColorInput.vue.d.ts +0 -64
- package/dist/runtime/components/LibDatePicker/LibDatePicker.d.vue.ts +0 -191
- package/dist/runtime/components/LibDatePicker/LibDatePicker.vue.d.ts +0 -191
- package/dist/runtime/components/LibFileInput/LibFileInput.d.vue.ts +0 -46
- package/dist/runtime/components/LibFileInput/LibFileInput.vue.d.ts +0 -46
- package/dist/runtime/components/LibInputDeprecated/LibInputDeprecated.d.vue.ts +0 -256
- package/dist/runtime/components/LibInputDeprecated/LibInputDeprecated.vue +0 -387
- package/dist/runtime/components/LibInputDeprecated/LibInputDeprecated.vue.d.ts +0 -256
- package/dist/runtime/components/LibLabel/LibLabel.d.vue.ts +0 -27
- package/dist/runtime/components/LibLabel/LibLabel.vue +0 -45
- package/dist/runtime/components/LibLabel/LibLabel.vue.d.ts +0 -27
- package/dist/runtime/components/LibMultiValues/LibMultiValues.vue +0 -109
- package/dist/runtime/components/LibNotifications/LibNotification.d.vue.ts +0 -45
- package/dist/runtime/components/LibNotifications/LibNotification.vue.d.ts +0 -45
- package/dist/runtime/components/LibNotifications/LibNotifications.d.vue.ts +0 -15
- package/dist/runtime/components/LibNotifications/LibNotifications.vue.d.ts +0 -15
- package/dist/runtime/components/LibPagination/LibPagination.d.vue.ts +0 -105
- package/dist/runtime/components/LibPagination/LibPagination.vue +0 -229
- package/dist/runtime/components/LibPagination/LibPagination.vue.d.ts +0 -105
- package/dist/runtime/components/LibPalette/LibPalette.d.vue.ts +0 -15
- package/dist/runtime/components/LibPalette/LibPalette.vue.d.ts +0 -15
- package/dist/runtime/components/LibPopup/LibPopup.d.vue.ts +0 -52
- package/dist/runtime/components/LibPopup/LibPopup.vue +0 -365
- package/dist/runtime/components/LibPopup/LibPopup.vue.d.ts +0 -52
- package/dist/runtime/components/LibProgressBar/LibProgressBar.vue +0 -169
- package/dist/runtime/components/LibSuggestions/LibSuggestions.d.vue.ts +0 -99
- package/dist/runtime/components/LibSuggestions/LibSuggestions.vue +0 -178
- package/dist/runtime/components/LibSuggestions/LibSuggestions.vue.d.ts +0 -99
- package/dist/runtime/components/LibTable/LibTable.d.vue.ts +0 -125
- package/dist/runtime/components/LibTable/LibTable.vue.d.ts +0 -125
- package/dist/runtime/components/Template/NAME.d.vue.ts +0 -18
- package/dist/runtime/components/Template/NAME.vue +0 -27
- package/dist/runtime/components/Template/NAME.vue.d.ts +0 -18
- package/dist/runtime/components/Template/TemplateStory.d.ts +0 -7
- package/dist/runtime/components/Template/TemplateStory.js +0 -22
- package/dist/runtime/components/shared/props.d.ts +0 -171
- package/dist/runtime/components/shared/props.js +0 -2
- package/dist/runtime/composables/useAriaLabel.d.ts +0 -6
- package/dist/runtime/composables/useAriaLabel.js +0 -15
- package/dist/runtime/composables/useDarkMode.d.ts +0 -77
- package/dist/runtime/composables/useDarkMode.js +0 -89
- package/dist/runtime/composables/useDivideAttrs.d.ts +0 -27
- package/dist/runtime/composables/useDivideAttrs.js +0 -27
- package/dist/runtime/composables/useSuggestions.d.ts +0 -40
- package/dist/runtime/composables/useSuggestions.js +0 -263
- package/src/runtime/components/Aria/Aria.vue +0 -26
- package/src/runtime/components/LibButton/LibButton.stories.ts +0 -106
- package/src/runtime/components/LibCheckbox/LibCheckbox.vue +0 -131
- package/src/runtime/components/LibColorInput/LibColorInput.vue +0 -203
- package/src/runtime/components/LibInputDeprecated/LibInputDeprecated.stories.ts +0 -405
- package/src/runtime/components/LibInputDeprecated/LibInputDeprecated.vue +0 -419
- package/src/runtime/components/LibLabel/LibLabel.stories.ts +0 -33
- package/src/runtime/components/LibLabel/LibLabel.vue +0 -65
- package/src/runtime/components/LibMultiValues/LibMultiValues.vue +0 -123
- package/src/runtime/components/LibNotifications/LibNotifications.stories.ts +0 -131
- package/src/runtime/components/LibPagination/LibPagination.stories.ts +0 -49
- package/src/runtime/components/LibPagination/LibPagination.vue +0 -274
- package/src/runtime/components/LibPopup/LibPopup.stories.ts +0 -153
- package/src/runtime/components/LibPopup/LibPopup.vue +0 -396
- package/src/runtime/components/LibProgressBar/LibProgressBar.stories.ts +0 -90
- package/src/runtime/components/LibProgressBar/LibProgressBar.vue +0 -197
- package/src/runtime/components/LibSuggestions/LibSuggestions.stories.ts +0 -134
- package/src/runtime/components/LibSuggestions/LibSuggestions.vue +0 -212
- package/src/runtime/components/Template/NAME.vue +0 -49
- package/src/runtime/components/Template/TemplateStory.ts +0 -37
- package/src/runtime/components/shared/props.ts +0 -199
- package/src/runtime/composables/useAriaLabel.ts +0 -23
- package/src/runtime/composables/useDarkMode.ts +0 -199
- package/src/runtime/composables/useDivideAttrs.ts +0 -53
- package/src/runtime/composables/useSuggestions.ts +0 -339
- /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToHsva.d.ts +0 -0
- /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToHsva.js +0 -0
- /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToRgba.d.ts +0 -0
- /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToRgba.js +0 -0
- /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/toLowPrecisionRgbaString.d.ts +0 -0
- /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/toLowPrecisionRgbaString.js +0 -0
- /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/truncate.d.ts +0 -0
- /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/truncate.js +0 -0
- /package/dist/runtime/components/{LibDatePicker/LibRangeDatePicker.d.vue.ts → WDatePicker/WRangeDatePicker.d.vue.ts} +0 -0
- /package/dist/runtime/components/{LibDatePicker/LibRangeDatePicker.vue.d.ts → WDatePicker/WRangeDatePicker.vue.d.ts} +0 -0
- /package/dist/runtime/components/{LibDatePicker/LibSingleDatePicker.d.vue.ts → WDatePicker/WSingleDatePicker.d.vue.ts} +0 -0
- /package/dist/runtime/components/{LibDatePicker/LibSingleDatePicker.vue.d.ts → WDatePicker/WSingleDatePicker.vue.d.ts} +0 -0
- /package/dist/runtime/components/{LibDatePicker → WDatePicker}/helpers.d.ts +0 -0
- /package/dist/runtime/components/{LibDatePicker → WDatePicker}/helpers.js +0 -0
- /package/dist/runtime/components/{LibDebug/LibDebug.d.vue.ts → WDebug/WDebug.d.vue.ts} +0 -0
- /package/dist/runtime/components/{LibDebug/LibDebug.vue.d.ts → WDebug/WDebug.vue.d.ts} +0 -0
- /package/dist/runtime/components/{LibDevOnly/LibDevOnly.vue → WDevOnly/WDevOnly.vue} +0 -0
- /package/dist/runtime/components/{LibNotifications/LibNotificationTestMessageComponent.d.vue.ts → WNotifications/WNotificationTestMessageComponent.d.vue.ts} +0 -0
- /package/dist/runtime/components/{LibNotifications/LibNotificationTestMessageComponent.vue → WNotifications/WNotificationTestMessageComponent.vue} +0 -0
- /package/dist/runtime/components/{LibNotifications/LibNotificationTestMessageComponent.vue.d.ts → WNotifications/WNotificationTestMessageComponent.vue.d.ts} +0 -0
- /package/dist/runtime/components/{LibNotifications → WNotifications}/calculateNotificationProgress.d.ts +0 -0
- /package/dist/runtime/components/{LibNotifications → WNotifications}/calculateNotificationProgress.js +0 -0
- /package/src/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToHsva.ts +0 -0
- /package/src/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToRgba.ts +0 -0
- /package/src/runtime/components/{LibColorPicker → WColorPicker}/utils/toLowPrecisionRgbaString.ts +0 -0
- /package/src/runtime/components/{LibColorPicker → WColorPicker}/utils/truncate.ts +0 -0
- /package/src/runtime/components/{LibDatePicker → WDatePicker}/helpers.ts +0 -0
- /package/src/runtime/components/{LibNotifications/LibNotificationTestMessageComponent.vue → WNotifications/WNotificationTestMessageComponent.vue} +0 -0
- /package/src/runtime/components/{LibNotifications → WNotifications}/calculateNotificationProgress.ts +0 -0
|
@@ -95,33 +95,6 @@ export type ScrollNearContainerEdgesOptions = {
|
|
|
95
95
|
timerInterval?: number;
|
|
96
96
|
};
|
|
97
97
|
export type SimpleDOMRect = Omit<DOMRect, "toJSON">;
|
|
98
|
-
export interface IPopupReference {
|
|
99
|
-
getBoundingClientRect: () => SimpleDOMRect;
|
|
100
|
-
}
|
|
101
|
-
export type PopupPosition = {
|
|
102
|
-
x: number;
|
|
103
|
-
y: number;
|
|
104
|
-
maxWidth?: number;
|
|
105
|
-
maxHeight?: number;
|
|
106
|
-
};
|
|
107
|
-
export type PopupSpaceInfo = {
|
|
108
|
-
left: number;
|
|
109
|
-
right: number;
|
|
110
|
-
leftLeft: number;
|
|
111
|
-
rightRight: number;
|
|
112
|
-
leftFromCenter: number;
|
|
113
|
-
rightFromCenter: number;
|
|
114
|
-
topFromCenter: number;
|
|
115
|
-
bottomFromCenter: number;
|
|
116
|
-
top: number;
|
|
117
|
-
bottom: number;
|
|
118
|
-
};
|
|
119
|
-
export type PopupPositioner = (
|
|
120
|
-
/** Reference is only undefined, if you did not specify a button element or use the exposed setReference. The function is still called, because there are other ways you might want to still position the popup (e.g. center-screen or some similar variation). */
|
|
121
|
-
reference: SimpleDOMRect | undefined, popup: SimpleDOMRect | DOMRect, bg: SimpleDOMRect | DOMRect, space: PopupSpaceInfo) => number;
|
|
122
|
-
export type PopupPositionModifier = (pos: PopupPosition,
|
|
123
|
-
/** This will only be called with the reference element as undefined when one of the preferred positions is center-screen or it's a function. */
|
|
124
|
-
reference: SimpleDOMRect | undefined, popup: SimpleDOMRect | DOMRect, bg: SimpleDOMRect | DOMRect, space: PopupSpaceInfo) => PopupPosition;
|
|
125
98
|
export type SingleDate = Date | undefined;
|
|
126
99
|
export type RangeDate = {
|
|
127
100
|
start?: SingleDate;
|
|
@@ -131,3 +104,88 @@ export type CustomNotificationComponentProps = {
|
|
|
131
104
|
message: string;
|
|
132
105
|
messageClasses?: string;
|
|
133
106
|
};
|
|
107
|
+
export type BaseInteractiveProps = {
|
|
108
|
+
/** Default is false. */
|
|
109
|
+
disabled?: boolean;
|
|
110
|
+
/** Default is false. */
|
|
111
|
+
readonly?: boolean;
|
|
112
|
+
/** Default is true. */
|
|
113
|
+
border?: boolean;
|
|
114
|
+
/** Removes styles from the component. Default is false. */
|
|
115
|
+
unstyle?: boolean;
|
|
116
|
+
};
|
|
117
|
+
export type TailwindClassProp = {
|
|
118
|
+
/** Tailwind classes. */
|
|
119
|
+
class?: string | false;
|
|
120
|
+
};
|
|
121
|
+
export declare const defaultDarkModeOrder: readonly ["system", "dark", "light"];
|
|
122
|
+
export type DarkModeOptions = {
|
|
123
|
+
useLocalStorage?: boolean | string;
|
|
124
|
+
darkModeOrder?: readonly ("system" | "dark" | "light")[];
|
|
125
|
+
/** True by default, should be passed import.meta.client if using nuxt, or false when running server side. */
|
|
126
|
+
isClientSide?: boolean;
|
|
127
|
+
/**
|
|
128
|
+
* Whether to use the view transition to animate the dark mode switch (you just need to add the css).
|
|
129
|
+
*
|
|
130
|
+
* Note that the transitition is NOT triggered if visually the mode does not change (e.g. system mode is dark and the user switches from system to dark, visually nothing changes so transitioning is skipped).
|
|
131
|
+
*
|
|
132
|
+
* There is an example in storybook. But basically:
|
|
133
|
+
*
|
|
134
|
+
* ```css
|
|
135
|
+
*
|
|
136
|
+
* #root { // the dark mode switcher works on the WRoot component not the html root
|
|
137
|
+
* view-transition-name: wroot;
|
|
138
|
+
* height: 100dvh;
|
|
139
|
+
* padding: 0;
|
|
140
|
+
* }
|
|
141
|
+
*
|
|
142
|
+
* ::view-transition-new(wroot) {
|
|
143
|
+
* animation: grow var(--story-anim-length) ease-in-out;
|
|
144
|
+
* animation-fill-mode: both;
|
|
145
|
+
* z-index: 2;
|
|
146
|
+
* mask: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><circle cx="20" cy="20" r="20" fill="white"/></svg>') center / 0 no-repeat;
|
|
147
|
+
* }
|
|
148
|
+
*
|
|
149
|
+
* ::view-transition-old(wroot) {
|
|
150
|
+
* animation: none;
|
|
151
|
+
* animation-fill-mode: both;
|
|
152
|
+
* z-index: 1;
|
|
153
|
+
* }
|
|
154
|
+
*
|
|
155
|
+
* @keyframes grow {
|
|
156
|
+
* from {
|
|
157
|
+
* mask-size: 0dvw;
|
|
158
|
+
* }
|
|
159
|
+
* to {
|
|
160
|
+
* mask-size: 300dvw;
|
|
161
|
+
* }
|
|
162
|
+
* }
|
|
163
|
+
* ```
|
|
164
|
+
*
|
|
165
|
+
* See https://theme-toggle.rdsx.dev/ for more ideas.
|
|
166
|
+
*
|
|
167
|
+
* @default true
|
|
168
|
+
*/
|
|
169
|
+
useViewTransition?: boolean;
|
|
170
|
+
};
|
|
171
|
+
export interface DarkModeCommands {
|
|
172
|
+
setDarkMode: (value: "dark" | "light" | "system") => void;
|
|
173
|
+
cycleDarkMode: () => void;
|
|
174
|
+
}
|
|
175
|
+
export interface DarkModeState {
|
|
176
|
+
/** Whether the dark mode should be enabled or not */
|
|
177
|
+
darkMode: Ref<boolean>;
|
|
178
|
+
/** The current state of the darkMode but as a string (dark, light, system) */
|
|
179
|
+
darkModeState: Ref<"dark" | "light" | "system">;
|
|
180
|
+
/** The value of the manuably controllable dark mode. You can set this to true/false or undefined to allow the systemDarkMode to take priority. Alternatively use setDarkMode instead. */
|
|
181
|
+
manualDarkMode: Ref<boolean | undefined>;
|
|
182
|
+
/** The value of the system dark mode. This is automatically set depending on the user's `prefer-color-scheme` and should not be set directly. */
|
|
183
|
+
systemDarkMode: Ref<boolean>;
|
|
184
|
+
}
|
|
185
|
+
export type PopupConstrainToProps = {
|
|
186
|
+
constrainWidthTo?: number | "trigger" | "available" | string | null;
|
|
187
|
+
constrainHeightTo?: number | "trigger" | "available" | string | null;
|
|
188
|
+
};
|
|
189
|
+
export type EmitsToProps<T> = {
|
|
190
|
+
[K in keyof T as K extends string ? `on${Capitalize<K>}` : never]?: T[K] extends (...args: infer Args) => any ? (...args: Args) => void : T[K] extends any[] ? (...args: T[K]) => void : T[K];
|
|
191
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const defaultDarkModeOrder = ["system", "dark", "light"];
|
package/package.json
CHANGED
package/src/module.ts
CHANGED
|
@@ -35,7 +35,7 @@ const componentsInfo: {
|
|
|
35
35
|
`!**/Template/**.vue`
|
|
36
36
|
], [], (filepath: string, name: string) => ({
|
|
37
37
|
originalName: name,
|
|
38
|
-
name: name.startsWith("
|
|
38
|
+
name: name.startsWith("W") ? name.replace("W", "PREFIX") : `PREFIX${name}`,
|
|
39
39
|
filepath
|
|
40
40
|
}))
|
|
41
41
|
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
--animate-slideBgInf:
|
|
32
|
-
@keyframes
|
|
31
|
+
--animate-slideBgInf: slideBg 10s ease-in-out linear-infinite;
|
|
32
|
+
@keyframes slideBg {
|
|
33
33
|
0% {
|
|
34
34
|
background-position:0%;
|
|
35
35
|
}
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
--animate-slideInRight:
|
|
63
|
+
--animate-slideInRight: slideInRight 500ms cubic-bezier(0.16, 1, 0.3, 1);
|
|
64
64
|
@keyframes slideInRight {
|
|
65
65
|
from {
|
|
66
66
|
transform: translateX(var(--animate-from, -100%));
|
|
@@ -25,6 +25,8 @@
|
|
|
25
25
|
"pagination.aria.go-to-next-page": "Go to next page. Page {count}",
|
|
26
26
|
"pagination.aria.go-to-page": "Go to page {count}",
|
|
27
27
|
"pagination.aria.current-page": "Current page {count}",
|
|
28
|
+
"pagination.aria.go-to-first-page": "Go to first page",
|
|
29
|
+
"pagination.aria.go-to-last-page": "Go to last page",
|
|
28
30
|
"pagination.previous-page": "Prev",
|
|
29
31
|
"pagination.next-page": "Next",
|
|
30
32
|
"recorder.recording": "Recording",
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<!-- Width 100% + 2xmargin in combination with the margins in
|
|
2
|
+
<!-- Width 100% + 2xmargin in combination with the margins in WRoot is a bit of a hack so that it looks like there's padding around the content in test mode (for storybook). We can't just absolutely position these controls or they make the container scroll. -->
|
|
3
3
|
<div class="test-controls flex gap-2 p-1 pb-10 -ml-10 w-[calc(100%_+_var(--spacing)*20)]">
|
|
4
4
|
<div class="flex-grow"/>
|
|
5
5
|
<div class="outline-indicator">
|
|
6
6
|
{{ showOutline ? "Outline Enabled" : "Outline Disabled" }}
|
|
7
7
|
</div>
|
|
8
|
-
<
|
|
8
|
+
<WDarkModeSwitcher/>
|
|
9
9
|
</div>
|
|
10
10
|
</template>
|
|
11
11
|
|
|
12
12
|
<script setup lang="ts">
|
|
13
|
-
import
|
|
13
|
+
import WDarkModeSwitcher from "../WDarkModeSwitcher/WDarkModeSwitcher.vue"
|
|
14
14
|
|
|
15
15
|
defineOptions({ name: "TestControls" })
|
|
16
16
|
defineProps<{
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
|
2
|
+
import { capitalize } from "@alanscodelog/utils/capitalize"
|
|
3
|
+
import type { Meta, StoryObj } from "@storybook/vue3"
|
|
4
|
+
|
|
5
|
+
import IconFaSolidBell from "~icons/fa-solid/bell"
|
|
6
|
+
|
|
7
|
+
import * as components from "../index.js"
|
|
8
|
+
|
|
9
|
+
type ExtraTestArgs = {
|
|
10
|
+
_iconAfter?: boolean
|
|
11
|
+
}
|
|
12
|
+
const meta: Meta<typeof components.WButton> = {
|
|
13
|
+
component: components.WButton,
|
|
14
|
+
title: "Components/Button",
|
|
15
|
+
args: {
|
|
16
|
+
label: "Label",
|
|
17
|
+
...{
|
|
18
|
+
_iconAfter: true
|
|
19
|
+
} satisfies ExtraTestArgs as any
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export default meta
|
|
24
|
+
type Story = StoryObj<typeof components.WButton> & { args?: ExtraTestArgs }
|
|
25
|
+
|
|
26
|
+
export const Primary: Story = {
|
|
27
|
+
render: args => {
|
|
28
|
+
const extraArgs = args as ExtraTestArgs
|
|
29
|
+
return {
|
|
30
|
+
components: {
|
|
31
|
+
...components,
|
|
32
|
+
IconFaSolidBell
|
|
33
|
+
},
|
|
34
|
+
setup: () => ({ args, capitalize }),
|
|
35
|
+
template: `
|
|
36
|
+
<div class="flex gap-4 justify-center">
|
|
37
|
+
<template v-for="type of [false, 'ok', 'warning', 'danger', 'primary', 'secondary' ]">
|
|
38
|
+
<WButton v-bind="{...args, color: type, label: !args.label ? undefined : args.label + ' ' + capitalize(type || 'false')}">
|
|
39
|
+
<template #icon>
|
|
40
|
+
<icon class="w-[1em]"><icon-fa-solid-bell /></icon>
|
|
41
|
+
</template>
|
|
42
|
+
</WButton>
|
|
43
|
+
</template>
|
|
44
|
+
</div>
|
|
45
|
+
<div class="flex flex-col gap-4 pt-10">
|
|
46
|
+
<template v-for="type of [false, 'ok', 'warning', 'danger', 'primary', 'secondary']">
|
|
47
|
+
<WButton v-bind="{...args, color: type , label: !args.label ? undefined : args.label + ' ' + capitalize(type || 'false') }">
|
|
48
|
+
${extraArgs._iconAfter
|
|
49
|
+
? `
|
|
50
|
+
<template #icon-after>
|
|
51
|
+
<icon class="w-[1em]"><icon-fa-solid-bell /></icon>
|
|
52
|
+
</template>
|
|
53
|
+
`
|
|
54
|
+
: ``}
|
|
55
|
+
</WButton>
|
|
56
|
+
</template>
|
|
57
|
+
</div>
|
|
58
|
+
`
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export const IconAfter: Story = {
|
|
64
|
+
...Primary,
|
|
65
|
+
args: {
|
|
66
|
+
...Primary.args,
|
|
67
|
+
_iconAfter: true
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export const OnlyIcon: Story = {
|
|
72
|
+
...Primary,
|
|
73
|
+
args: {
|
|
74
|
+
...Primary.args,
|
|
75
|
+
label: undefined
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
export const Disabled: Story = {
|
|
79
|
+
...Primary,
|
|
80
|
+
args: {
|
|
81
|
+
...Primary.args,
|
|
82
|
+
disabled: true
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
export const Borderless: Story = {
|
|
86
|
+
...Primary,
|
|
87
|
+
args: {
|
|
88
|
+
...Primary.args,
|
|
89
|
+
border: false
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
export const BorderlessDisabled: Story = {
|
|
93
|
+
...Primary,
|
|
94
|
+
args: {
|
|
95
|
+
...Primary.args,
|
|
96
|
+
border: false,
|
|
97
|
+
disabled: true
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
export const WithDivInside: Story = {
|
|
101
|
+
render: args => ({
|
|
102
|
+
components,
|
|
103
|
+
setup: () => ({ args }),
|
|
104
|
+
template: `
|
|
105
|
+
<div class="flex gap-4 justify-center">
|
|
106
|
+
<WButton v-bind="{...args}">
|
|
107
|
+
<div>Div inside button still has a pointer cursor.</div>
|
|
108
|
+
</WButton>
|
|
109
|
+
</div>
|
|
110
|
+
`
|
|
111
|
+
})
|
|
112
|
+
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<button
|
|
3
|
-
:
|
|
4
|
-
:class="!($attrs as any).unstyle && twMerge(`
|
|
3
|
+
:class="!unstyle && twMerge(`
|
|
5
4
|
button
|
|
6
5
|
flex
|
|
7
6
|
cursor-pointer
|
|
@@ -26,7 +25,8 @@
|
|
|
26
25
|
border && `
|
|
27
26
|
transition-all
|
|
28
27
|
bg-neutral-100
|
|
29
|
-
dark:
|
|
28
|
+
dark:tint-neutral-800/10
|
|
29
|
+
dark:bg-(--mix)
|
|
30
30
|
shadow-[0_1px_1px_0]
|
|
31
31
|
shadow-neutral-950/20
|
|
32
32
|
hover:shadow-[0_1px_3px_0]
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
after:shadow-[0_1px_0_0_inset]
|
|
42
42
|
after:shadow-bg/20
|
|
43
43
|
hover:after:shadow-bg/60
|
|
44
|
+
disabled:after:hidden
|
|
44
45
|
dark:after:shadow-bg/10
|
|
45
46
|
dark:hover:after:shadow-bg/50
|
|
46
47
|
after:pointer-events-none
|
|
@@ -49,15 +50,16 @@
|
|
|
49
50
|
active:shadow-fg/20
|
|
50
51
|
active:border-transparent
|
|
51
52
|
border
|
|
52
|
-
border-
|
|
53
|
+
border-black/10
|
|
53
54
|
disabled:border-neutral-200
|
|
54
|
-
disabled:bg-neutral-
|
|
55
|
+
disabled:bg-neutral-100
|
|
55
56
|
dark:hover:shadow-neutral-950/70
|
|
56
57
|
dark:active:shadow-fg/40
|
|
57
58
|
dark:active:border-neutral-900
|
|
58
|
-
dark:border-
|
|
59
|
+
dark:border-black/50
|
|
59
60
|
dark:disabled:border-neutral-800
|
|
60
|
-
dark:disabled:bg-
|
|
61
|
+
dark:disabled:bg-(--mix)
|
|
62
|
+
dark:disabled:shade-neutral-900/10
|
|
61
63
|
`,
|
|
62
64
|
border && (!color || color === `secondary`) && `
|
|
63
65
|
after:shadow-bg/90
|
|
@@ -153,26 +155,24 @@
|
|
|
153
155
|
`,
|
|
154
156
|
($attrs as any)?.class
|
|
155
157
|
)"
|
|
156
|
-
:type="$attrs
|
|
158
|
+
:type="($attrs as any)?.type || 'button'"
|
|
157
159
|
:tabindex="0"
|
|
158
160
|
:disabled="disabled"
|
|
159
161
|
:data-border="border"
|
|
160
162
|
:data-color="color"
|
|
161
|
-
:aria-disabled="disabled"
|
|
162
163
|
v-bind="{
|
|
163
|
-
...autoTitle,
|
|
164
164
|
...$attrs,
|
|
165
|
-
class: undefined
|
|
166
|
-
...ariaLabel
|
|
165
|
+
class: undefined
|
|
167
166
|
}"
|
|
168
167
|
>
|
|
169
168
|
<slot
|
|
170
169
|
name="label"
|
|
171
|
-
v-bind="{
|
|
170
|
+
v-bind="{
|
|
171
|
+
classes: 'button--label pointer-events-none flex flex-1 items-center justify-center gap-1'
|
|
172
|
+
}"
|
|
172
173
|
>
|
|
173
|
-
<
|
|
174
|
-
:
|
|
175
|
-
class="button--label pointer-events-none flex flex-1 items-center justify-center gap-1"
|
|
174
|
+
<div
|
|
175
|
+
:class="!unstyle && 'button--label pointer-events-none flex flex-1 items-center justify-center gap-1'"
|
|
176
176
|
>
|
|
177
177
|
<slot name="icon"/>
|
|
178
178
|
<slot
|
|
@@ -183,57 +183,41 @@
|
|
|
183
183
|
</span>
|
|
184
184
|
</slot>
|
|
185
185
|
<slot name="icon-after"/>
|
|
186
|
-
</
|
|
186
|
+
</div>
|
|
187
187
|
</slot>
|
|
188
188
|
</button>
|
|
189
189
|
</template>
|
|
190
190
|
|
|
191
191
|
<script setup lang="ts">
|
|
192
192
|
import { isBlank } from "@alanscodelog/utils/isBlank"
|
|
193
|
-
import { type ButtonHTMLAttributes,
|
|
193
|
+
import { type ButtonHTMLAttributes, useAttrs } from "vue"
|
|
194
194
|
|
|
195
|
-
import {
|
|
195
|
+
import type { BaseInteractiveProps, TailwindClassProp } from "../../types/index.js"
|
|
196
196
|
import { twMerge } from "../../utils/twMerge.js"
|
|
197
|
-
|
|
197
|
+
|
|
198
198
|
|
|
199
199
|
const $attrs = useAttrs()
|
|
200
200
|
|
|
201
201
|
defineOptions({
|
|
202
|
-
name: "
|
|
202
|
+
name: "WButton",
|
|
203
|
+
inheritAttrs: false
|
|
203
204
|
})
|
|
204
205
|
|
|
205
|
-
const fallbackId = getFallbackId()
|
|
206
206
|
|
|
207
|
-
|
|
207
|
+
withDefaults(defineProps<
|
|
208
|
+
& BaseInteractiveProps
|
|
209
|
+
& {
|
|
210
|
+
label?: string
|
|
211
|
+
border?: boolean
|
|
212
|
+
color?: "warning" | "ok" | "danger" | "primary" | "secondary" | false
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
& /** @vue-ignore */ Omit<ButtonHTMLAttributes, "class" | "color">
|
|
216
|
+
& /** @vue-ignore */ TailwindClassProp
|
|
217
|
+
>(), {
|
|
208
218
|
color: false,
|
|
209
219
|
label: "",
|
|
210
|
-
|
|
220
|
+
border: true
|
|
211
221
|
})
|
|
212
|
-
|
|
213
|
-
const ariaLabel = useAriaLabel(props, fallbackId)
|
|
214
|
-
const autoTitle = computed(() => ({
|
|
215
|
-
title: props.autoTitleFromAria
|
|
216
|
-
? ($attrs["aria-label"] ?? props.label) as string
|
|
217
|
-
: undefined
|
|
218
|
-
}))
|
|
219
222
|
</script>
|
|
220
223
|
|
|
221
|
-
<script lang="ts">
|
|
222
|
-
type RealProps
|
|
223
|
-
= & LinkableByIdProps
|
|
224
|
-
& LabelProps
|
|
225
|
-
& BaseInteractiveProps
|
|
226
|
-
& ButtonProps
|
|
227
|
-
|
|
228
|
-
interface Props
|
|
229
|
-
extends
|
|
230
|
-
/** @vue-ignore */
|
|
231
|
-
Partial<Omit<ButtonHTMLAttributes, "class" | "color" | "disabled">
|
|
232
|
-
& TailwindClassProp
|
|
233
|
-
& {
|
|
234
|
-
// why is this not already a part of button?
|
|
235
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
236
|
-
"aria-label": string
|
|
237
|
-
}>,
|
|
238
|
-
RealProps {}
|
|
239
|
-
</script>
|
package/src/runtime/components/{LibCheckbox/LibCheckbox.stories.ts → WCheckbox/WCheckbox.stories.ts}
RENAMED
|
@@ -4,27 +4,27 @@ import type { Meta, StoryObj } from "@storybook/vue3"
|
|
|
4
4
|
import * as components from "../index.js"
|
|
5
5
|
|
|
6
6
|
const meta = {
|
|
7
|
-
component: components.
|
|
7
|
+
component: components.WCheckbox,
|
|
8
8
|
title: "Components/Checkbox",
|
|
9
9
|
args: {
|
|
10
10
|
modelValue: true,
|
|
11
11
|
label: "Label"
|
|
12
12
|
}
|
|
13
|
-
} satisfies Meta<typeof components.
|
|
13
|
+
} satisfies Meta<typeof components.WCheckbox> & Meta<{ custom: string }>
|
|
14
14
|
|
|
15
15
|
export default meta
|
|
16
|
-
type Story = StoryObj<typeof components.
|
|
16
|
+
type Story = StoryObj<typeof components.WCheckbox> // & StoryObj<typeof extraArgs>
|
|
17
17
|
|
|
18
18
|
export const Primary: Story = {
|
|
19
19
|
render: args => ({
|
|
20
20
|
components,
|
|
21
21
|
setup: () => ({ args }),
|
|
22
22
|
template: `
|
|
23
|
-
<
|
|
23
|
+
<WCheckbox v-bind="args" v-model="args.modelValue"></WCheckbox>
|
|
24
24
|
<br>
|
|
25
25
|
Opposite State:
|
|
26
26
|
<br>
|
|
27
|
-
<
|
|
27
|
+
<WCheckbox v-bind="args" :modelValue="!args.modelValue" @update:modelValue="args.modelValue = !$event"></WCheckbox>
|
|
28
28
|
`
|
|
29
29
|
})
|
|
30
30
|
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div
|
|
3
|
+
:class="twMerge(`
|
|
4
|
+
checkbox--wrapper
|
|
5
|
+
flex
|
|
6
|
+
items-center
|
|
7
|
+
gap-1
|
|
8
|
+
`,
|
|
9
|
+
(disabled || readonly) && `
|
|
10
|
+
cursor-not-allowed
|
|
11
|
+
text-neutral-500
|
|
12
|
+
`,
|
|
13
|
+
|
|
14
|
+
wrapperAttrs?.class
|
|
15
|
+
)"
|
|
16
|
+
v-bind="{ ...wrapperAttrs, class: undefined }"
|
|
17
|
+
ref="el"
|
|
18
|
+
>
|
|
19
|
+
<slot name="left"/>
|
|
20
|
+
<label
|
|
21
|
+
:class="twMerge(`
|
|
22
|
+
checkbox--label
|
|
23
|
+
flex
|
|
24
|
+
items-center
|
|
25
|
+
gap-1
|
|
26
|
+
`,
|
|
27
|
+
labelAttrs?.class
|
|
28
|
+
)"
|
|
29
|
+
v-bind="{ ...labelAttrs, class: undefined }"
|
|
30
|
+
>
|
|
31
|
+
<CheckboxRoot
|
|
32
|
+
:id="finalId"
|
|
33
|
+
:disabled="disabled || readonly"
|
|
34
|
+
:class="!unstyle && twMerge(`
|
|
35
|
+
checkbox
|
|
36
|
+
flex
|
|
37
|
+
items-center
|
|
38
|
+
justify-center
|
|
39
|
+
focus-outline-no-offset
|
|
40
|
+
m-0
|
|
41
|
+
h-[1.2em]
|
|
42
|
+
w-[1.2em]
|
|
43
|
+
aspect-square
|
|
44
|
+
bg-neutral-500/10
|
|
45
|
+
text-white
|
|
46
|
+
dark:text-white
|
|
47
|
+
border
|
|
48
|
+
border-neutral-500
|
|
49
|
+
data-[state=checked]:border-accent-800/50
|
|
50
|
+
data-[state=checked]:bg-accent-500
|
|
51
|
+
data-[state=checked]:shadow-2xs
|
|
52
|
+
data-[state=checked]:shadow-black/20
|
|
53
|
+
data-[state=unchecked]:inset-shadow-2xs
|
|
54
|
+
data-[state=unchecked]:inset-shadow-black/20
|
|
55
|
+
focus:border-accent-600
|
|
56
|
+
rounded-sm
|
|
57
|
+
relative
|
|
58
|
+
transition-colors
|
|
59
|
+
dark:disabled:bg-neutral-800
|
|
60
|
+
cursor-pointer
|
|
61
|
+
disabled:text-neutral-500
|
|
62
|
+
disabled:bg-neutral-500/50
|
|
63
|
+
disabled:cursor-not-allowed
|
|
64
|
+
disabled:data-[state=checked]:border-neutral-500
|
|
65
|
+
`,
|
|
66
|
+
($attrs as any)?.class
|
|
67
|
+
)"
|
|
68
|
+
v-bind="{ ...$attrs, class: undefined }"
|
|
69
|
+
|
|
70
|
+
v-model="modelValue"
|
|
71
|
+
>
|
|
72
|
+
<CheckboxIndicator class="checkbox--indicator">
|
|
73
|
+
<WIcon class="scale-110 mt-[2px] ml-[0.5px] [&_path]:stroke-3"><i-lucide-check/></WIcon>
|
|
74
|
+
</CheckboxIndicator>
|
|
75
|
+
</CheckboxRoot>
|
|
76
|
+
|
|
77
|
+
<slot/> {{ label }}
|
|
78
|
+
</label>
|
|
79
|
+
</div>
|
|
80
|
+
</template>
|
|
81
|
+
|
|
82
|
+
<script setup lang="ts">
|
|
83
|
+
import { CheckboxIndicator, CheckboxRoot } from "reka-ui"
|
|
84
|
+
import type { HTMLAttributes, InputHTMLAttributes } from "vue"
|
|
85
|
+
import { useAttrs } from "vue"
|
|
86
|
+
|
|
87
|
+
import { useFallbackId } from "../../composables/useFallbackId.js"
|
|
88
|
+
import { usePreHydrationValue } from "../../composables/usePreHydrationValue.js"
|
|
89
|
+
import type { BaseInteractiveProps, TailwindClassProp } from "../../types/index.js"
|
|
90
|
+
import { twMerge } from "../../utils/twMerge.js"
|
|
91
|
+
import WIcon from "../WIcon/WIcon.vue"
|
|
92
|
+
|
|
93
|
+
const $attrs = useAttrs()
|
|
94
|
+
|
|
95
|
+
defineOptions({
|
|
96
|
+
name: "WCheckbox",
|
|
97
|
+
inheritAttrs: false
|
|
98
|
+
})
|
|
99
|
+
|
|
100
|
+
const props = withDefaults(defineProps<
|
|
101
|
+
& BaseInteractiveProps
|
|
102
|
+
& {
|
|
103
|
+
id?: string
|
|
104
|
+
label?: string
|
|
105
|
+
labelAttrs?: Omit<HTMLAttributes, "class"> & TailwindClassProp
|
|
106
|
+
wrapperAttrs?: Omit<HTMLAttributes, "class"> & TailwindClassProp
|
|
107
|
+
}
|
|
108
|
+
& /** @vue-ignore */Omit<
|
|
109
|
+
InputHTMLAttributes,
|
|
110
|
+
"class" | "readonly" | "disabled" | "onSumbit"
|
|
111
|
+
// https://github.com/vuejs/core/pull/14237
|
|
112
|
+
| "autocomplete"
|
|
113
|
+
>
|
|
114
|
+
& /** @vue-ignore */ TailwindClassProp
|
|
115
|
+
>(), {
|
|
116
|
+
border: true
|
|
117
|
+
})
|
|
118
|
+
|
|
119
|
+
const modelValue = defineModel<boolean | "indeterminate">("modelValue", { default: false })
|
|
120
|
+
const finalId = useFallbackId(props)
|
|
121
|
+
usePreHydrationValue(finalId, modelValue)
|
|
122
|
+
</script>
|
|
123
|
+
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
import type { Meta, StoryObj } from "@storybook/vue3"
|
|
3
3
|
import { ref } from "vue"
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
import WColorInput from "./WColorInput.vue"
|
|
6
6
|
|
|
7
7
|
import * as components from "../index.js"
|
|
8
8
|
|
|
9
|
-
const meta: Meta<typeof
|
|
10
|
-
component:
|
|
9
|
+
const meta: Meta<typeof WColorInput> = {
|
|
10
|
+
component: WColorInput,
|
|
11
11
|
title: "Components/ColorInput",
|
|
12
12
|
args: {
|
|
13
13
|
|
|
@@ -15,7 +15,7 @@ const meta: Meta<typeof LibColorInput> = {
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
export default meta
|
|
18
|
-
type Story = StoryObj<typeof
|
|
18
|
+
type Story = StoryObj<typeof WColorInput>
|
|
19
19
|
|
|
20
20
|
export const Primary: Story = {
|
|
21
21
|
render: args => ({
|
|
@@ -36,21 +36,21 @@ export const Primary: Story = {
|
|
|
36
36
|
}
|
|
37
37
|
},
|
|
38
38
|
template: `
|
|
39
|
-
<
|
|
39
|
+
<WColorInput
|
|
40
40
|
:allowAlpha="args.allowAlpha"
|
|
41
41
|
:modelValue="args.color.value"
|
|
42
42
|
@update:modelValue="handleChange"
|
|
43
43
|
>
|
|
44
|
-
</
|
|
44
|
+
</WColorInput>
|
|
45
45
|
Stretched:
|
|
46
46
|
<div class="flex-1 flex">
|
|
47
|
-
<
|
|
47
|
+
<WColorInput
|
|
48
48
|
class="flex-1"
|
|
49
49
|
:allowAlpha="args.allowAlpha"
|
|
50
50
|
:modelValue="args.color.value"
|
|
51
51
|
@update:modelValue="handleChange"
|
|
52
52
|
>
|
|
53
|
-
</
|
|
53
|
+
</WColorInput>
|
|
54
54
|
</div>
|
|
55
55
|
`
|
|
56
56
|
})
|