@witchcraft/ui 0.1.3 → 0.2.1-beta.1

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.
Files changed (179) hide show
  1. package/README.md +3 -6
  2. package/dist/module.json +3 -3
  3. package/dist/module.mjs +15 -12
  4. package/dist/runtime/build/generateTheme.js +1 -1
  5. package/dist/runtime/components/Aria/Aria.vue +5 -9
  6. package/dist/runtime/components/Aria/Aria.vue.d.ts +5 -0
  7. package/dist/runtime/components/Icon/Icon.vue +10 -30
  8. package/dist/runtime/components/Icon/Icon.vue.d.ts +21 -0
  9. package/dist/runtime/components/LibButton/LibButton.vue +51 -72
  10. package/dist/runtime/components/LibButton/LibButton.vue.d.ts +36 -0
  11. package/dist/runtime/components/LibCheckbox/LibCheckbox.vue +43 -74
  12. package/dist/runtime/components/LibCheckbox/LibCheckbox.vue.d.ts +42 -0
  13. package/dist/runtime/components/LibColorInput/LibColorInput.vue +63 -107
  14. package/dist/runtime/components/LibColorInput/LibColorInput.vue.d.ts +63 -0
  15. package/dist/runtime/components/LibColorPicker/LibColorPicker.vue +272 -352
  16. package/dist/runtime/components/LibColorPicker/LibColorPicker.vue.d.ts +61 -0
  17. package/dist/runtime/components/LibColorPicker/utils/safeConvertToHsva.js +1 -1
  18. package/dist/runtime/components/LibColorPicker/utils/safeConvertToRgba.js +1 -1
  19. package/dist/runtime/components/LibDarkModeSwitcher/LibDarkModeSwitcher.vue +35 -69
  20. package/dist/runtime/components/LibDarkModeSwitcher/LibDarkModeSwitcher.vue.d.ts +22 -0
  21. package/dist/runtime/components/LibDatePicker/LibDatePicker.vue +17 -38
  22. package/dist/runtime/components/LibDatePicker/LibDatePicker.vue.d.ts +40 -0
  23. package/dist/runtime/components/LibDatePicker/LibRangeDatePicker.vue +58 -82
  24. package/dist/runtime/components/LibDatePicker/LibRangeDatePicker.vue.d.ts +34 -0
  25. package/dist/runtime/components/LibDatePicker/LibSingleDatePicker.vue +55 -67
  26. package/dist/runtime/components/LibDatePicker/LibSingleDatePicker.vue.d.ts +34 -0
  27. package/dist/runtime/components/LibDatePicker/LibTimeZonePicker.vue +7 -8
  28. package/dist/runtime/components/LibDatePicker/LibTimeZonePicker.vue.d.ts +22 -0
  29. package/dist/runtime/components/LibDebug/LibDebug.vue +43 -70
  30. package/dist/runtime/components/LibDebug/LibDebug.vue.d.ts +32 -0
  31. package/dist/runtime/components/LibDevOnly/LibDevOnly.vue +18 -31
  32. package/dist/runtime/components/LibDevOnly/LibDevOnly.vue.d.ts +22 -0
  33. package/dist/runtime/components/LibFileInput/LibFileInput.vue +116 -156
  34. package/dist/runtime/components/LibFileInput/LibFileInput.vue.d.ts +43 -0
  35. package/dist/runtime/components/LibInputDeprecated/LibInputDeprecated.vue +211 -241
  36. package/dist/runtime/components/LibInputDeprecated/LibInputDeprecated.vue.d.ts +165 -0
  37. package/dist/runtime/components/LibLabel/LibLabel.vue +25 -46
  38. package/dist/runtime/components/LibLabel/LibLabel.vue.d.ts +26 -0
  39. package/dist/runtime/components/LibMultiValues/LibMultiValues.vue +43 -58
  40. package/dist/runtime/components/LibMultiValues/LibMultiValues.vue.d.ts +29 -0
  41. package/dist/runtime/components/LibNotifications/LibNotification.vue +34 -48
  42. package/dist/runtime/components/LibNotifications/LibNotification.vue.d.ts +17 -0
  43. package/dist/runtime/components/LibNotifications/LibNotifications.vue +63 -83
  44. package/dist/runtime/components/LibNotifications/LibNotifications.vue.d.ts +13 -0
  45. package/dist/runtime/components/LibPagination/LibPagination.vue +67 -111
  46. package/dist/runtime/components/LibPagination/LibPagination.vue.d.ts +104 -0
  47. package/dist/runtime/components/LibPalette/LibPalette.vue +17 -23
  48. package/dist/runtime/components/LibPalette/LibPalette.vue.d.ts +14 -0
  49. package/dist/runtime/components/LibPopup/LibPopup.vue +314 -351
  50. package/dist/runtime/components/LibPopup/LibPopup.vue.d.ts +46 -0
  51. package/dist/runtime/components/LibProgressBar/LibProgressBar.vue +65 -91
  52. package/dist/runtime/components/LibProgressBar/LibProgressBar.vue.d.ts +41 -0
  53. package/dist/runtime/components/LibRecorder/LibRecorder.vue +127 -177
  54. package/dist/runtime/components/LibRecorder/LibRecorder.vue.d.ts +77 -0
  55. package/dist/runtime/components/LibRoot/LibRoot.vue +75 -101
  56. package/dist/runtime/components/LibRoot/LibRoot.vue.d.ts +41 -0
  57. package/dist/runtime/components/LibSimpleInput/LibSimpleInput.vue +42 -77
  58. package/dist/runtime/components/LibSimpleInput/LibSimpleInput.vue.d.ts +35 -0
  59. package/dist/runtime/components/LibSuggestions/LibSuggestions.vue +118 -156
  60. package/dist/runtime/components/LibSuggestions/LibSuggestions.vue.d.ts +94 -0
  61. package/dist/runtime/components/LibTable/LibTable.vue +63 -99
  62. package/dist/runtime/components/LibTable/LibTable.vue.d.ts +45 -0
  63. package/dist/runtime/components/Template/NAME.vue +15 -36
  64. package/dist/runtime/components/Template/NAME.vue.d.ts +17 -0
  65. package/dist/runtime/components/TestControls/TestControls.vue +6 -9
  66. package/dist/runtime/components/TestControls/TestControls.vue.d.ts +5 -0
  67. package/dist/runtime/components/shared/props.d.ts +0 -29
  68. package/dist/runtime/components/shared/props.js +0 -12
  69. package/dist/runtime/composables/useAccesibilityOutline.js +1 -1
  70. package/dist/runtime/composables/useDivideAttrs.js +1 -1
  71. package/dist/runtime/composables/useSuggestions.js +4 -4
  72. package/dist/runtime/directives/vDetectFlex.js +4 -4
  73. package/dist/runtime/directives/vExtractRootEl.d.ts +1 -1
  74. package/dist/runtime/directives/vResizableCols.d.ts +1 -1
  75. package/dist/runtime/directives/vResizableCols.js +4 -4
  76. package/dist/runtime/helpers/NotificationHandler.js +6 -6
  77. package/dist/runtime/helpers/base64ToImg.js +2 -2
  78. package/dist/runtime/nuxt/plugins/vue-plugin.js +1 -1
  79. package/dist/runtime/tailwind/themeConvertionOpts.d.ts +1 -1
  80. package/dist/runtime/theme.d.ts +1 -1
  81. package/dist/runtime/theme.js +1 -1
  82. package/dist/runtime/utils/notifyIfError.js +1 -1
  83. package/dist/runtime/vue/registerComponents.js +1 -1
  84. package/dist/types.d.mts +2 -6
  85. package/package.json +68 -90
  86. package/src/module.ts +19 -12
  87. package/src/runtime/build/generateTheme.ts +1 -1
  88. package/src/runtime/components/LibButton/LibButton.stories.ts +1 -1
  89. package/src/runtime/components/LibButton/LibButton.vue +3 -3
  90. package/src/runtime/components/LibCheckbox/LibCheckbox.vue +3 -7
  91. package/src/runtime/components/LibColorPicker/LibColorPicker.vue +6 -4
  92. package/src/runtime/components/LibColorPicker/utils/safeConvertToHsva.ts +1 -1
  93. package/src/runtime/components/LibColorPicker/utils/safeConvertToRgba.ts +1 -1
  94. package/src/runtime/components/LibDarkModeSwitcher/LibDarkModeSwitcher.vue +8 -15
  95. package/src/runtime/components/LibDatePicker/LibRangeDatePicker.vue +6 -0
  96. package/src/runtime/components/LibDatePicker/LibSingleDatePicker.vue +6 -0
  97. package/src/runtime/components/LibDebug/LibDebug.stories.ts +1 -1
  98. package/src/runtime/components/LibDebug/LibDebug.vue +2 -0
  99. package/src/runtime/components/LibFileInput/LibFileInput.vue +4 -0
  100. package/src/runtime/components/LibInputDeprecated/LibInputDeprecated.vue +7 -5
  101. package/src/runtime/components/LibLabel/LibLabel.vue +2 -3
  102. package/src/runtime/components/LibMultiValues/LibMultiValues.vue +5 -3
  103. package/src/runtime/components/LibNotifications/LibNotification.vue +3 -0
  104. package/src/runtime/components/LibNotifications/LibNotifications.vue +1 -1
  105. package/src/runtime/components/LibPalette/LibPalette.vue +3 -3
  106. package/src/runtime/components/LibPopup/LibPopup.vue +2 -2
  107. package/src/runtime/components/LibProgressBar/LibProgressBar.vue +2 -2
  108. package/src/runtime/components/LibRecorder/LibRecorder.vue +3 -3
  109. package/src/runtime/components/LibRoot/LibRoot.vue +3 -2
  110. package/src/runtime/components/LibSimpleInput/LibSimpleInput.vue +2 -2
  111. package/src/runtime/components/LibSuggestions/LibSuggestions.vue +2 -2
  112. package/src/runtime/components/LibTable/LibTable.vue +1 -1
  113. package/src/runtime/components/Template/NAME.vue +2 -2
  114. package/src/runtime/components/shared/props.ts +8 -12
  115. package/src/runtime/composables/useAccesibilityOutline.ts +1 -1
  116. package/src/runtime/composables/useDivideAttrs.ts +1 -1
  117. package/src/runtime/composables/useSuggestions.ts +4 -4
  118. package/src/runtime/directives/vDetectFlex.ts +4 -4
  119. package/src/runtime/directives/vExtractRootEl.ts +1 -1
  120. package/src/runtime/directives/vResizableCols.ts +5 -5
  121. package/src/runtime/helpers/NotificationHandler.ts +6 -6
  122. package/src/runtime/nuxt/plugins/vue-plugin.ts +1 -1
  123. package/src/runtime/tailwind/themeConvertionOpts.ts +1 -1
  124. package/src/runtime/theme.ts +2 -2
  125. package/src/runtime/utils/notifyIfError.ts +1 -1
  126. package/src/runtime/vue/registerComponents.ts +1 -1
  127. package/dist/module.cjs +0 -5
  128. package/dist/module.d.ts +0 -36
  129. package/dist/runtime/components/Focus.stories.d.ts +0 -11
  130. package/dist/runtime/components/Focus.stories.js +0 -53
  131. package/dist/runtime/components/LibButton/LibButton.stories.d.ts +0 -12
  132. package/dist/runtime/components/LibButton/LibButton.stories.js +0 -94
  133. package/dist/runtime/components/LibCheckbox/LibCheckbox.stories.d.ts +0 -14
  134. package/dist/runtime/components/LibCheckbox/LibCheckbox.stories.js +0 -29
  135. package/dist/runtime/components/LibColorInput/LibColorInput.stories.d.ts +0 -7
  136. package/dist/runtime/components/LibColorInput/LibColorInput.stories.js +0 -58
  137. package/dist/runtime/components/LibColorPicker/LibColorPicker.stories.d.ts +0 -9
  138. package/dist/runtime/components/LibColorPicker/LibColorPicker.stories.js +0 -68
  139. package/dist/runtime/components/LibDarkModeSwitcher/LibDarkModeSwitcher.stories.d.ts +0 -7
  140. package/dist/runtime/components/LibDarkModeSwitcher/LibDarkModeSwitcher.stories.js +0 -36
  141. package/dist/runtime/components/LibDatePicker/LibDatePicker.stories.d.ts +0 -11
  142. package/dist/runtime/components/LibDatePicker/LibDatePicker.stories.js +0 -98
  143. package/dist/runtime/components/LibDebug/LibDebug.stories.d.ts +0 -9
  144. package/dist/runtime/components/LibDebug/LibDebug.stories.js +0 -46
  145. package/dist/runtime/components/LibFileInput/LibFileInput.stories.d.ts +0 -10
  146. package/dist/runtime/components/LibFileInput/LibFileInput.stories.js +0 -63
  147. package/dist/runtime/components/LibInputDeprecated/LibInputDeprecated.stories.d.ts +0 -33
  148. package/dist/runtime/components/LibInputDeprecated/LibInputDeprecated.stories.js +0 -384
  149. package/dist/runtime/components/LibLabel/LibLabel.stories.d.ts +0 -6
  150. package/dist/runtime/components/LibLabel/LibLabel.stories.js +0 -25
  151. package/dist/runtime/components/LibMultiValues/LibMultiValues.stories.d.ts +0 -23
  152. package/dist/runtime/components/LibMultiValues/LibMultiValues.stories.js +0 -61
  153. package/dist/runtime/components/LibNotifications/LibNotification.stories.d.ts +0 -15
  154. package/dist/runtime/components/LibNotifications/LibNotification.stories.js +0 -126
  155. package/dist/runtime/components/LibNotifications/LibNotifications.stories.d.ts +0 -6
  156. package/dist/runtime/components/LibNotifications/LibNotifications.stories.js +0 -109
  157. package/dist/runtime/components/LibPagination/LibPagination.stories.d.ts +0 -6
  158. package/dist/runtime/components/LibPagination/LibPagination.stories.js +0 -40
  159. package/dist/runtime/components/LibPalette/LibPalette.stories.d.ts +0 -6
  160. package/dist/runtime/components/LibPalette/LibPalette.stories.js +0 -20
  161. package/dist/runtime/components/LibPopup/LibPopup.stories.d.ts +0 -14
  162. package/dist/runtime/components/LibPopup/LibPopup.stories.js +0 -147
  163. package/dist/runtime/components/LibProgressBar/LibProgressBar.stories.d.ts +0 -10
  164. package/dist/runtime/components/LibProgressBar/LibProgressBar.stories.js +0 -81
  165. package/dist/runtime/components/LibRecorder/LibRecorder.stories.d.ts +0 -19
  166. package/dist/runtime/components/LibRecorder/LibRecorder.stories.js +0 -63
  167. package/dist/runtime/components/LibSimpleInput/LibSimpleInput.stories.d.ts +0 -26
  168. package/dist/runtime/components/LibSimpleInput/LibSimpleInput.stories.js +0 -78
  169. package/dist/runtime/components/LibSuggestions/LibSuggestions.stories.d.ts +0 -27
  170. package/dist/runtime/components/LibSuggestions/LibSuggestions.stories.js +0 -112
  171. package/dist/runtime/components/LibTable/LibTable.stories.d.ts +0 -16
  172. package/dist/runtime/components/LibTable/LibTable.stories.js +0 -156
  173. package/dist/runtime/components/Reset.stories.d.ts +0 -5
  174. package/dist/runtime/components/Reset.stories.js +0 -19
  175. package/dist/runtime/components/Scrolling.stories.d.ts +0 -6
  176. package/dist/runtime/components/Scrolling.stories.js +0 -44
  177. package/dist/runtime/composables/useScrollNearContainerEdges.stories.d.ts +0 -7
  178. package/dist/runtime/composables/useScrollNearContainerEdges.stories.js +0 -85
  179. package/dist/types.d.ts +0 -7
package/src/module.ts CHANGED
@@ -8,8 +8,8 @@ import {
8
8
  useLogger,
9
9
  } from "@nuxt/kit"
10
10
  import tailwindcss from "@tailwindcss/vite"
11
- import { addImportsCustom } from "@witchcraft/nuxt-utils/utils/addImportsCustom.js"
12
- import { globFiles } from "@witchcraft/nuxt-utils/utils/globFiles.js"
11
+ import { addImportsCustom } from "@witchcraft/nuxt-utils/utils/addImportsCustom"
12
+ import { globFiles } from "@witchcraft/nuxt-utils/utils/globFiles"
13
13
  import { defu } from "defu"
14
14
  import fs from "fs"
15
15
  import { themeAsTailwindCss } from "metamorphosis/tailwind"
@@ -158,16 +158,23 @@ export default defineNuxtModule<ModuleOptions>({
158
158
  logger.info(`Adding unplugin-icons`)
159
159
  config.plugins ??= []
160
160
  config.plugins = [
161
- // we must prepend or the custom style options don't work when the module is used
162
- ViteComponents({
163
- resolvers: [
164
- IconsResolver(),
165
- // we don't need our resolver since we use nuxt instead
166
- ],
167
- }),
168
- Icons({
169
- ...unpluginIconViteOptions,
170
- }),
161
+ ...(
162
+ options.includeUnpluginIconsPlugins
163
+ ? [
164
+ // we must prepend or the custom style options don't work when the module is used
165
+ ViteComponents({
166
+ resolvers: [
167
+ IconsResolver({prefix:"i"}),
168
+ // we don't need our resolver since we use nuxt instead
169
+ ],
170
+ }),
171
+ Icons({
172
+ compiler: "vue3",
173
+ ...unpluginIconViteOptions,
174
+ }),
175
+ ]
176
+ : []
177
+ ),
171
178
  tailwindcss() as any,
172
179
  ...config.plugins,
173
180
  ]
@@ -1,4 +1,4 @@
1
- import { themeAsTailwindCss } from "metamorphosis/tailwind.js"
1
+ import { themeAsTailwindCss } from "metamorphosis/tailwind"
2
2
  import fs from "node:fs"
3
3
  import { resolve } from "path"
4
4
 
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable @typescript-eslint/naming-convention */
2
- import { capitalize } from "@alanscodelog/utils/capitalize.js"
2
+ import { capitalize } from "@alanscodelog/utils/capitalize"
3
3
  import type { Meta, StoryObj } from "@storybook/vue3"
4
4
 
5
5
  import IconFaSolidBell from "~icons/fa-solid/bell"
@@ -184,12 +184,12 @@
184
184
  </template>
185
185
 
186
186
  <script setup lang="ts">
187
- import { isBlank } from "@alanscodelog/utils/isBlank.js"
187
+ import { isBlank } from "@alanscodelog/utils/isBlank"
188
188
  import { type ButtonHTMLAttributes,computed, useAttrs } from "vue"
189
189
 
190
190
  import { useAriaLabel } from "../../composables/useAriaLabel.js"
191
191
  import { twMerge } from "../../utils/twMerge.js"
192
- import { type BaseInteractiveProps, baseInteractivePropsDefaults, type ButtonProps,getFallbackId, type LabelProps, type LinkableByIdProps, type TailwindClassProp } from "../shared/props.js"
192
+ import { type BaseInteractiveProps, type ButtonProps,getFallbackId, type LabelProps, type LinkableByIdProps, type TailwindClassProp } from "../shared/props.js"
193
193
 
194
194
 
195
195
  const $attrs = useAttrs()
@@ -204,7 +204,7 @@ const fallbackId = getFallbackId()
204
204
  const props = withDefaults(defineProps<Props>(), {
205
205
  color: false,
206
206
  label: "",
207
- ...baseInteractivePropsDefaults
207
+ unstyle: false, disabled: false, readonly: false, border: true,
208
208
  })
209
209
 
210
210
 
@@ -67,16 +67,12 @@
67
67
  </div>
68
68
  </template>
69
69
  <script setup lang="ts">
70
- import { keys } from "@alanscodelog/utils/keys.js"
71
- import { omit } from "@alanscodelog/utils/omit.js"
72
- import { pick } from "@alanscodelog/utils/pick.js"
73
- import type { MakeRequired } from "@alanscodelog/utils/types"
74
- import { computed, type HTMLAttributes, type InputHTMLAttributes,type PropType, ref, useAttrs, useSlots } from "vue"
70
+ import { type HTMLAttributes, type InputHTMLAttributes,ref, useSlots } from "vue"
75
71
 
76
72
  import { useDivideAttrs } from "../../composables/useDivideAttrs.js"
77
73
  import { usePreHydrationValue } from "../../composables/usePreHydrationValue.js"
78
74
  import { twMerge } from "../../utils/twMerge.js"
79
- import { type BaseInteractiveProps, baseInteractivePropsDefaults, getFallbackId,type LabelProps, type LinkableByIdProps, type TailwindClassProp, type WrapperProps } from "../shared/props.js"
75
+ import { type BaseInteractiveProps, getFallbackId,type LabelProps, type LinkableByIdProps, type TailwindClassProp, type WrapperProps } from "../shared/props.js"
80
76
 
81
77
  defineOptions({
82
78
  name: "lib-checkbox",
@@ -89,7 +85,7 @@ const $slots = useSlots()
89
85
 
90
86
  const fallbackId = getFallbackId()
91
87
  const props = withDefaults(defineProps<Props>(), {
92
- ...baseInteractivePropsDefaults,
88
+ unstyle: false, disabled: false, readonly: false, border: true,
93
89
  })
94
90
 
95
91
 
@@ -170,10 +170,10 @@
170
170
 
171
171
  <script setup lang="ts">
172
172
  /* todo change to colorjsio for less dependencies */
173
- import { castType } from "@alanscodelog/utils/castType.js"
174
- import { clampNumber } from "@alanscodelog/utils/clampNumber.js"
175
- import { isArray } from "@alanscodelog/utils/isArray.js"
176
- import { unreachable } from "@alanscodelog/utils/unreachable.js"
173
+ import { castType } from "@alanscodelog/utils/castType"
174
+ import { clampNumber } from "@alanscodelog/utils/clampNumber"
175
+ import { isArray } from "@alanscodelog/utils/isArray"
176
+ import { unreachable } from "@alanscodelog/utils/unreachable"
177
177
  import Color from "colorjs.io"
178
178
  import { computed, onMounted, reactive, type Ref, ref, type UnwrapRef,useAttrs, watch } from "vue"
179
179
 
@@ -181,6 +181,8 @@ import { safeConvertToHsva } from "./utils/safeConvertToHsva.js"
181
181
  import { safeConvertToRgba } from "./utils/safeConvertToRgba.js"
182
182
  import { toLowPrecisionRgbaString } from "./utils/toLowPrecisionRgbaString.js"
183
183
 
184
+ import IFa6RegularCopy from "~icons/fa-regular/copy"
185
+
184
186
  import { useInjectedI18n } from "../../composables/useInjectedI18n.js"
185
187
  import { copy } from "../../helpers/copy.js"
186
188
  import type { HsvaColor, RgbaColor } from "../../types/index.js"
@@ -1,4 +1,4 @@
1
- import { clampNumber } from "@alanscodelog/utils/clampNumber.js"
1
+ import { clampNumber } from "@alanscodelog/utils/clampNumber"
2
2
  import Color from "colorjs.io"
3
3
 
4
4
  import type { HsvaColor, RgbaColor } from "../../../types/index.js"
@@ -1,4 +1,4 @@
1
- import { clampNumber } from "@alanscodelog/utils/clampNumber.js"
1
+ import { clampNumber } from "@alanscodelog/utils/clampNumber"
2
2
  import Color from "colorjs.io"
3
3
 
4
4
  import type { HsvaColor, RgbaColor } from "../../../types/index.js"
@@ -14,22 +14,9 @@
14
14
  <!-- content-vertical-holder will keep the icon the height of a text line regardless of the svg used -->
15
15
  <template #icon>
16
16
  <icon
17
- v-if="darkModeState==='dark'"
18
- class="w-[1em] flex items-center content-vertical-holder"
17
+ class="w-[1em] items-center content-vertical-holder"
19
18
  >
20
- <i-fa-solid-moon/>
21
- </icon>
22
- <icon
23
- v-else-if="darkModeState==='light'"
24
- class="w-[1em] content-vertical-holder"
25
- >
26
- <i-ph-sun-bold/>
27
- </icon>
28
- <icon
29
- v-else
30
- class="w-[1em] content-vertical-holder"
31
- >
32
- <i-fa6-solid-circle-half-stroke/>
19
+ <component :is="darkModeState==='dark' ? IFaSolidMoon : darkModeState==='light' ? IPhSunBold : IFa6SolidCircleHalfStroke"/>
33
20
  </icon>
34
21
  </template>
35
22
  <template #default v-if="showLabel">
@@ -42,6 +29,10 @@
42
29
  <script lang="ts" setup>
43
30
  import { type ButtonHTMLAttributes,onMounted,useAttrs, watch } from "vue"
44
31
 
32
+ import IFaSolidMoon from "~icons/fa-solid/moon"
33
+ import IFa6SolidCircleHalfStroke from "~icons/fa6-solid/circle-half-stroke"
34
+ import IPhSunBold from "~icons/ph/sun-bold"
35
+
45
36
  import { useInjectedDarkMode } from "../../composables/useInjectedDarkMode.js"
46
37
  import { useInjectedI18n } from "../../composables/useInjectedI18n.js"
47
38
  import { twMerge } from "../../utils/twMerge.js"
@@ -49,6 +40,7 @@ import Icon from "../Icon/Icon.vue"
49
40
  import LibButton from "../LibButton/LibButton.vue"
50
41
  import type { TailwindClassProp } from "../shared/props.js"
51
42
 
43
+
52
44
  const t = useInjectedI18n()
53
45
 
54
46
  const emit = defineEmits<{
@@ -68,6 +60,7 @@ const {
68
60
  darkModeState,
69
61
  } = useInjectedDarkMode()
70
62
 
63
+
71
64
  watch(darkMode, value => emit("update:darkMode", value))
72
65
  watch(darkModeState, value => emit("update:darkModeState", value))
73
66
 
@@ -6,6 +6,12 @@ import { onBeforeUnmount, ref, toRaw, useAttrs, watch } from "vue"
6
6
 
7
7
  import { convertDateWithFallback, getNow,toEmittableDate } from "./helpers.js"
8
8
 
9
+ import IRadixIconsCalendar from "~icons/radix-icons/calendar"
10
+ import IRadixIconsChevronLeft from "~icons/radix-icons/chevron-left"
11
+ import IRadixIconsChevronRight from "~icons/radix-icons/chevron-right"
12
+ import IRadixIconsDoubleArrowLeft from "~icons/radix-icons/double-arrow-left"
13
+ import IRadixIconsDoubleArrowRight from "~icons/radix-icons/double-arrow-right"
14
+
9
15
  import { useInjectedLocale } from "../../composables/useInjectedLocale.js"
10
16
  import type { RangeDate } from "../../types/index.js"
11
17
  import { twMerge } from "../../utils/twMerge.js"
@@ -5,6 +5,12 @@ import { onBeforeUnmount, ref, toRaw, useAttrs, watch } from "vue"
5
5
 
6
6
  import { convertDateWithFallback, getNow,toEmittableDate } from "./helpers.js"
7
7
 
8
+ import IRadixIconsCalendar from "~icons/radix-icons/calendar"
9
+ import IRadixIconsChevronLeft from "~icons/radix-icons/chevron-left"
10
+ import IRadixIconsChevronRight from "~icons/radix-icons/chevron-right"
11
+ import IRadixIconsDoubleArrowLeft from "~icons/radix-icons/double-arrow-left"
12
+ import IRadixIconsDoubleArrowRight from "~icons/radix-icons/double-arrow-right"
13
+
8
14
  import { useInjectedLocale } from "../../composables/useInjectedLocale.js"
9
15
  import type { SingleDate } from "../../types/index.js"
10
16
  import { twMerge } from "../../utils/twMerge.js"
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable @typescript-eslint/naming-convention */
2
- import { crop } from "@alanscodelog/utils/crop.js"
2
+ import { crop } from "@alanscodelog/utils/crop"
3
3
  import type { Meta, StoryObj } from "@storybook/vue3"
4
4
 
5
5
  import LibDebug from "./LibDebug.vue"
@@ -32,6 +32,8 @@
32
32
  <script setup lang="ts">
33
33
  import { type PropType, useSlots } from "vue"
34
34
 
35
+ import IFa6RegularCopy from "~icons/fa-regular/copy"
36
+
35
37
  import Icon from "../Icon/Icon.vue"
36
38
  import LibButton from "../LibButton/LibButton.vue"
37
39
 
@@ -166,6 +166,10 @@
166
166
  <script setup lang="ts">
167
167
  import { computed, type HTMLAttributes, type InputHTMLAttributes,ref, shallowReactive, watch } from "vue"
168
168
 
169
+ import IFa6RegularFile from "~icons/fa6-regular/file"
170
+ import IFa6SolidArrowUpFromBracket from "~icons/fa6-solid/arrow-up-from-bracket"
171
+ import IFa6SolidXmark from "~icons/fa6-solid/xmark"
172
+
169
173
  import { useDivideAttrs } from "../../composables/useDivideAttrs.js"
170
174
  import { useInjectedI18n } from "../../composables/useInjectedI18n.js"
171
175
  import { type FileInputError } from "../../types/index.js"
@@ -151,12 +151,14 @@
151
151
  </div>
152
152
  </template>
153
153
  <script setup lang="ts">
154
- import { isBlank } from "@alanscodelog/utils/isBlank.js"
155
- import { isObject } from "@alanscodelog/utils/isObject.js"
156
- import { pushIfNotIn } from "@alanscodelog/utils/pushIfNotIn.js"
154
+ import { isBlank } from "@alanscodelog/utils/isBlank"
155
+ import { isObject } from "@alanscodelog/utils/isObject"
156
+ import { pushIfNotIn } from "@alanscodelog/utils/pushIfNotIn"
157
157
  import { computed,type HTMLAttributes,type InputHTMLAttributes, nextTick, onBeforeMount, ref, toRef, useSlots, watch } from "vue"
158
158
  import type { ComponentExposed } from "vue-component-type-helpers"
159
159
 
160
+ import IFa6SolidChevronUp from "~icons/fa6-solid/chevron-up"
161
+
160
162
  import { useDivideAttrs } from "../../composables/useDivideAttrs.js"
161
163
  import { useSuggestionsInputAria } from "../../composables/useSuggestions.js"
162
164
  import { twMerge } from "../../utils/twMerge.js"
@@ -165,7 +167,7 @@ import LibLabel from "../LibLabel/LibLabel.vue"
165
167
  import LibMultiValues from "../LibMultiValues/LibMultiValues.vue"
166
168
  import LibSimpleInput from "../LibSimpleInput/LibSimpleInput.vue"
167
169
  import LibSuggestions from "../LibSuggestions/LibSuggestions.vue"
168
- import { type BaseInteractiveProps, baseInteractivePropsDefaults, getFallbackId, type LabelProps, type LinkableByIdProps, type SuggestionsProps, type TailwindClassProp, type WrapperProps } from "../shared/props.js"
170
+ import { type BaseInteractiveProps, getFallbackId, type LabelProps, type LinkableByIdProps, type SuggestionsProps, type TailwindClassProp, type WrapperProps } from "../shared/props.js"
169
171
 
170
172
 
171
173
  /* #region base */
@@ -189,7 +191,7 @@ const props = withDefaults(defineProps<Props>(), {
189
191
  valid: true,
190
192
  suggestions: undefined,
191
193
  updateOnlyOnSubmit: false,
192
- ...baseInteractivePropsDefaults,
194
+ unstyle: false, disabled: false, readonly: false, border: true,
193
195
  })
194
196
 
195
197
  const $ = useDivideAttrs(["wrapper", "inner-wrapper", "suggestions", "multivalues"] as const)
@@ -23,7 +23,7 @@ import type { MakeRequired } from "@alanscodelog/utils/types"
23
23
  import { type LabelHTMLAttributes,toRef,useAttrs } from "vue"
24
24
 
25
25
  import { twMerge } from "../../utils/twMerge.js"
26
- import { type BaseInteractiveProps, baseInteractivePropsDefaults, getFallbackId, type LabelProps, type LinkableByIdProps, type TailwindClassProp } from "../shared/props.js"
26
+ import { type BaseInteractiveProps, getFallbackId, type LabelProps, type LinkableByIdProps, type TailwindClassProp } from "../shared/props.js"
27
27
 
28
28
 
29
29
  defineOptions({
@@ -35,9 +35,8 @@ const fallbackId = getFallbackId()
35
35
  // eslint-disable-next-line no-undef
36
36
  withDefaults(defineProps<Props>(), {
37
37
  id: "",
38
- unstyled: undefined,
39
38
  valid: true,
40
- ...baseInteractivePropsDefaults,
39
+ unstyle: false, disabled: false, readonly: false, border: true,
41
40
  })
42
41
 
43
42
  const $attrs = useAttrs()
@@ -72,15 +72,17 @@
72
72
  </template>
73
73
 
74
74
  <script setup lang="ts" generic="T extends string | number">
75
- import { removeIfIn } from "@alanscodelog/utils/removeIfIn.js"
75
+ import { removeIfIn } from "@alanscodelog/utils/removeIfIn"
76
76
  import { computed, type HTMLAttributes } from "vue"
77
77
 
78
+ import IFa6SolidXmark from "~icons/fa6-solid/xmark"
79
+
78
80
  import { useDivideAttrs } from "../../composables/useDivideAttrs.js"
79
81
  import { copy } from "../../helpers/copy.js"
80
82
  import { twMerge } from "../../utils/twMerge.js"
81
83
  import Icon from "../Icon/Icon.vue"
82
84
  import LibButton from "../LibButton/LibButton.vue"
83
- import { type BaseInteractiveProps, baseInteractivePropsDefaults,type LabelProps, type TailwindClassProp, type WrapperProps } from "../shared/props.js"
85
+ import { type BaseInteractiveProps,type LabelProps, type TailwindClassProp, type WrapperProps } from "../shared/props.js"
84
86
 
85
87
 
86
88
  defineOptions({
@@ -90,7 +92,7 @@ defineOptions({
90
92
 
91
93
  const $ = useDivideAttrs(["item"] as const)
92
94
  const props = withDefaults(defineProps<Props>(), {
93
- ...baseInteractivePropsDefaults
95
+ unstyle: false, disabled: false, readonly: false, border: true,
94
96
  })
95
97
 
96
98
 
@@ -81,6 +81,9 @@
81
81
  <script setup lang="ts">
82
82
  import { computed, type HTMLAttributes,ref, useAttrs } from "vue"
83
83
 
84
+ import IFa6RegularCopy from "~icons/fa6-regular/copy"
85
+ import IFa6SolidXmark from "~icons/fa6-solid/xmark"
86
+
84
87
  import { copy } from "../../helpers/copy.js"
85
88
  import { type NotificationEntry, NotificationHandler } from "../../helpers/NotificationHandler.js"
86
89
  import { twMerge } from "../../utils/twMerge.js"
@@ -51,7 +51,7 @@
51
51
  </Transition>
52
52
  </template>
53
53
  <script setup lang="ts">
54
- import { removeIfIn } from "@alanscodelog/utils/removeIfIn.js"
54
+ import { removeIfIn } from "@alanscodelog/utils/removeIfIn"
55
55
  import { type HTMLAttributes,nextTick, onBeforeUnmount, ref,shallowReactive, Transition, TransitionGroup } from "vue"
56
56
 
57
57
  import LibNotification from "./LibNotification.vue"
@@ -27,10 +27,10 @@ export default { name: "lib-palette" }
27
27
  </script>
28
28
 
29
29
  <script setup lang="ts">
30
- import { keys } from "@alanscodelog/utils/keys.js"
30
+ import { keys } from "@alanscodelog/utils/keys"
31
31
  import { type Theme } from "metamorphosis"
32
32
 
33
- import { type BaseInteractiveProps, baseInteractivePropsDefaults,type LinkableByIdProps } from "../shared/props.js"
33
+ import { type BaseInteractiveProps,type LinkableByIdProps } from "../shared/props.js"
34
34
 
35
35
 
36
36
  const props = withDefaults(defineProps<
@@ -40,7 +40,7 @@ const props = withDefaults(defineProps<
40
40
  theme: Theme
41
41
  }>(), {
42
42
  theme: () => ({} as any),
43
- ...baseInteractivePropsDefaults
43
+ unstyle: false, disabled: false, readonly: false, border: true,
44
44
  })
45
45
 
46
46
  const exclude = ["--color-bg", "--color-fg"]
@@ -53,8 +53,8 @@ import { onMounted, nextTick, ref, useAttrs, watch , type HTMLAttributes } from
53
53
  import { getFallbackId, type LinkableByIdProps, type TailwindClassProp, type PopupProps } from "../shared/props.js"
54
54
 
55
55
  import { twMerge } from "../../utils/twMerge.js"
56
- import { castType } from "@alanscodelog/utils/castType.js"
57
- import { isArray } from "@alanscodelog/utils/isArray.js"
56
+ import { castType } from "@alanscodelog/utils/castType"
57
+ import { isArray } from "@alanscodelog/utils/isArray"
58
58
  import type { IPopupReference, PopupPosition, PopupPositioner, PopupPositionModifier, SimpleDOMRect } from "../../types/index.js"
59
59
 
60
60
  const fallbackId = getFallbackId()
@@ -97,7 +97,7 @@
97
97
  import { type HTMLAttributes,type PropType, ref, watch } from "vue"
98
98
 
99
99
  import { twMerge } from "../../utils/twMerge.js"
100
- import { type BaseInteractiveProps, baseInteractivePropsDefaults,getFallbackId,type LabelProps, type LinkableByIdProps, type TailwindClassProp } from "../shared/props.js"
100
+ import { type BaseInteractiveProps,getFallbackId,type LabelProps, type LinkableByIdProps, type TailwindClassProp } from "../shared/props.js"
101
101
 
102
102
  // TODO move to utils
103
103
  const clampVal = (n: number, min: number, max: number) => Math.min(Math.max(n, min), max)
@@ -111,7 +111,7 @@ const props = withDefaults(defineProps<Props>(), {
111
111
  autohideOnComplete: -1,
112
112
  keepSpaceWhenHidden: false,
113
113
  clamp: () => [0, 100],
114
- ...baseInteractivePropsDefaults
114
+ unstyle: false, disabled: false, readonly: false, border: true,
115
115
  })
116
116
  const hide = ref<boolean>(false)
117
117
  const psuedoHide = ref<boolean>(false)
@@ -70,13 +70,13 @@
70
70
  </div>
71
71
  </template>
72
72
  <script setup lang="ts">
73
- import { keys } from "@alanscodelog/utils/keys.js"
73
+ import { keys } from "@alanscodelog/utils/keys"
74
74
  import { computed, type HTMLAttributes ,onBeforeUnmount, onMounted, type PropType, ref, watch, watchPostEffect } from "vue"
75
75
 
76
76
  import { useAriaLabel } from "../../composables/useAriaLabel.js"
77
77
  import { useInjectedI18n } from "../../composables/useInjectedI18n.js"
78
78
  import { twMerge } from "../../utils/twMerge.js"
79
- import { type BaseInteractiveProps, baseInteractivePropsDefaults, getFallbackId, type LabelProps, type LinkableByIdProps,type TailwindClassProp } from "../shared/props.js"
79
+ import { type BaseInteractiveProps, getFallbackId, type LabelProps, type LinkableByIdProps,type TailwindClassProp } from "../shared/props.js"
80
80
 
81
81
  defineOptions({
82
82
  name: "lib-recorder",
@@ -98,7 +98,7 @@ const props = withDefaults(defineProps<Props>(), {
98
98
  id: undefined,
99
99
  binders: undefined,
100
100
  recorder: undefined,
101
- ...baseInteractivePropsDefaults
101
+ unstyle: false, disabled: false, readonly: false, border: true,
102
102
  })
103
103
  /**
104
104
  * Puts the element into recording mode if true. See {@link props.recorder}.
@@ -32,14 +32,15 @@
32
32
  ($attrs as any).attrs?.class)"
33
33
  >
34
34
  <TestControls v-if="testWrapperMode" :show-outline="showOutline"/>
35
- <Notifications v-if="useNotifications && isClientSide"/>
35
+ <!-- @vue-expect-error data-allow-mismatch is for vue/nuxt to allow the hydration mismatch-->
36
+ <Notifications v-if="useNotifications && isClientSide" data-allow-mismatch/>
36
37
  <slot/>
37
38
  </div>
38
39
  </div>
39
40
  </template>
40
41
 
41
42
  <script setup lang="ts">
42
- import { unreachable } from "@alanscodelog/utils/unreachable.js"
43
+ import { unreachable } from "@alanscodelog/utils/unreachable"
43
44
  import { type Theme } from "metamorphosis"
44
45
  import { type ComponentPublicInstance, computed, onBeforeUnmount, onMounted, ref, toRaw } from "vue"
45
46
 
@@ -77,7 +77,7 @@ import { useAriaLabel } from "../../composables/useAriaLabel.js"
77
77
  import { usePreHydrationValue } from "../../composables/usePreHydrationValue.js"
78
78
  import { hasModifiers } from "../../helpers/hasModifiers.js"
79
79
  import { twMerge } from "../../utils/twMerge.js"
80
- import { type BaseInteractiveProps, baseInteractivePropsDefaults, getFallbackId,type LabelProps, type LinkableByIdProps, type TailwindClassProp } from "../shared/props.js"
80
+ import { type BaseInteractiveProps, getFallbackId,type LabelProps, type LinkableByIdProps, type TailwindClassProp } from "../shared/props.js"
81
81
 
82
82
 
83
83
  defineOptions({
@@ -93,7 +93,7 @@ const props = withDefaults(defineProps<Props>(), {
93
93
  valid: true,
94
94
  label: "",
95
95
  type: undefined,
96
- ...baseInteractivePropsDefaults
96
+ unstyle: false, disabled: false, readonly: false, border: true,
97
97
  })
98
98
 
99
99
  const modelValue = defineModel<T>({ required: true })
@@ -67,7 +67,7 @@ import { useSuggestions } from "../../composables/useSuggestions.js"
67
67
  import { hasModifiers } from "../../helpers/hasModifiers.js"
68
68
  import { twMerge } from "../../utils/twMerge.js"
69
69
  import LibCheckbox from "../LibCheckbox/LibCheckbox.vue"
70
- import { type BaseInteractiveProps, baseInteractivePropsDefaults, getFallbackId,type LabelProps, type LinkableByIdProps, type SuggestionsEmits, type SuggestionsProps, type WrapperProps } from "../shared/props.js"
70
+ import { type BaseInteractiveProps, getFallbackId,type LabelProps, type LinkableByIdProps, type SuggestionsEmits, type SuggestionsProps, type WrapperProps } from "../shared/props.js"
71
71
 
72
72
  defineOptions({
73
73
  name: "lib-suggestions",
@@ -83,7 +83,7 @@ const props = withDefaults(defineProps<Props & SuggestionsProps<TSuggestion>>(),
83
83
  isValid: true,
84
84
  canOpen: true,
85
85
  filterKeydown: undefined,
86
- ...baseInteractivePropsDefaults
86
+ unstyle: false, disabled: false, readonly: false, border: true,
87
87
  })
88
88
  /**
89
89
  * The final valid value. This is *not* the value you want to share with the input. If `restrictToSuggestions` is true this will not update on any invalid values that `inputValue` might be set to.
@@ -93,7 +93,7 @@
93
93
  <!-- generic="T extends Record<string, any> -->"
94
94
  <script setup lang="ts" generic="T">
95
95
  import type { MakeRequired } from "@alanscodelog/utils"
96
- import { keys } from "@alanscodelog/utils/keys.js"
96
+ import { keys } from "@alanscodelog/utils/keys"
97
97
  import { computed, type PropType, ref, type TableHTMLAttributes } from "vue"
98
98
 
99
99
  import { vResizableCols } from "../../directives/vResizableCols.js"
@@ -10,10 +10,10 @@
10
10
  </template>
11
11
  <script setup lang="ts">
12
12
 
13
- import { computed, type HTMLAttributes, onBeforeUnmount, onMounted, type PropType, reactive, type Ref, ref, watch } from "vue"
13
+ import { type HTMLAttributes, ref } from "vue"
14
14
 
15
15
  import { twMerge } from "../../utils/twMerge.js"
16
- import { baseInteractiveProps, type TailwindClassProp } from "../shared/props.js"
16
+ import { type TailwindClassProp } from "../shared/props.js"
17
17
 
18
18
 
19
19
  defineOptions({
@@ -155,12 +155,6 @@ export interface PopupProps {
155
155
  canClose?: boolean
156
156
  }
157
157
 
158
- export const baseInteractiveProps = {
159
- unstyle: { type: Boolean as Function as PropType<boolean>, required: false, default: false },
160
- disabled: { type: Boolean as Function as PropType<boolean>, required: false, default: false },
161
- readonly: { type: Boolean as Function as PropType<boolean>, required: false, default: false },
162
- border: { type: Boolean as Function as PropType<boolean>, required: false, default: true },
163
- } as const
164
158
 
165
159
  export type BaseInteractiveProps = {
166
160
  /** Default is false. */
@@ -172,12 +166,14 @@ export type BaseInteractiveProps = {
172
166
  /** Removes styles from the component. Default is false. */
173
167
  unstyle?: boolean
174
168
  }
175
- export const baseInteractivePropsDefaults = {
176
- disabled: false,
177
- readonly: false,
178
- border: true,
179
- unstyle: false,
180
- }
169
+
170
+ // see https://github.com/nuxt/module-builder/issues/649
171
+ // export const baseInteractivePropsDefaults = {
172
+ // disabled: false,
173
+ // readonly: false,
174
+ // border: true,
175
+ // unstyle: false,
176
+ // }
181
177
 
182
178
  /**
183
179
  * @internal
@@ -1,4 +1,4 @@
1
- import { castType } from "@alanscodelog/utils/castType.js"
1
+ import { castType } from "@alanscodelog/utils/castType"
2
2
  import { onBeforeUnmount, onMounted, type Ref, ref, watch } from "vue"
3
3
 
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { keys } from "@alanscodelog/utils/keys.js"
1
+ import { keys } from "@alanscodelog/utils/keys"
2
2
  import { computed, type Ref, useAttrs } from "vue"
3
3
 
4
4
  /**
@@ -1,9 +1,9 @@
1
1
  /* eslint-disable no-console */
2
2
  import { type AnyFunction } from "@alanscodelog/utils"
3
- import { isBlank } from "@alanscodelog/utils/isBlank.js"
4
- import { isObject } from "@alanscodelog/utils/isObject.js"
5
- import { pushIfNotIn } from "@alanscodelog/utils/pushIfNotIn.js"
6
- import { removeIfIn } from "@alanscodelog/utils/removeIfIn.js"
3
+ import { isBlank } from "@alanscodelog/utils/isBlank"
4
+ import { isObject } from "@alanscodelog/utils/isObject"
5
+ import { pushIfNotIn } from "@alanscodelog/utils/pushIfNotIn"
6
+ import { removeIfIn } from "@alanscodelog/utils/removeIfIn"
7
7
  import { computed, type Ref, ref, toRaw, watch } from "vue"
8
8
 
9
9
  import { type SuggestionsEmits,type SuggestionsOptions } from "../components/shared/props.js"
@@ -1,7 +1,7 @@
1
- import { castType } from "@alanscodelog/utils/castType.js"
2
- import { last } from "@alanscodelog/utils/last.js"
3
- import { throttle } from "@alanscodelog/utils/throttle.js"
4
- import { unreachable } from "@alanscodelog/utils/unreachable.js"
1
+ import { castType } from "@alanscodelog/utils/castType"
2
+ import { last } from "@alanscodelog/utils/last"
3
+ import { throttle } from "@alanscodelog/utils/throttle"
4
+ import { unreachable } from "@alanscodelog/utils/unreachable"
5
5
  import type { Directive } from "vue"
6
6
 
7
7
  import { globalResizeObserver } from "../globalResizeObserver.js"
@@ -9,7 +9,7 @@ import type { Directive } from "vue"
9
9
  *
10
10
  * One can create a ref:
11
11
  * ```ts
12
- * import { vExtractRootEl } from "@witchcraft/ui/directives/vExtractRootEl.js"
12
+ * import { vExtractRootEl } from "@witchcraft/ui/directives/vExtractRootEl"
13
13
  * const el = ref<HTMLElement|null>(null)
14
14
  *
15
15
  * ```