@witchcraft/ui 0.3.26 → 0.4.0-beta.10

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 (287) hide show
  1. package/README.md +54 -61
  2. package/dist/module.json +1 -1
  3. package/dist/module.mjs +1 -1
  4. package/dist/runtime/assets/animations.css +1 -1
  5. package/dist/runtime/assets/locales/en.json +2 -0
  6. package/dist/runtime/build/WitchcraftUiResolver.js +2 -2
  7. package/dist/runtime/components/TestControls/TestControls.vue +3 -3
  8. package/dist/runtime/components/WButton/WButton.d.vue.ts +34 -0
  9. package/dist/runtime/components/{LibButton/LibButton.vue → WButton/WButton.vue} +26 -38
  10. package/dist/runtime/components/WButton/WButton.vue.d.ts +34 -0
  11. package/dist/runtime/components/WCheckbox/WCheckbox.d.vue.ts +33 -0
  12. package/dist/runtime/components/WCheckbox/WCheckbox.vue +110 -0
  13. package/dist/runtime/components/WCheckbox/WCheckbox.vue.d.ts +33 -0
  14. package/dist/runtime/components/WColorInput/WColorInput.d.vue.ts +45 -0
  15. package/dist/runtime/components/WColorInput/WColorInput.vue +85 -0
  16. package/dist/runtime/components/WColorInput/WColorInput.vue.d.ts +45 -0
  17. package/dist/runtime/components/WColorInput/WColorSwatchButton.d.vue.ts +28 -0
  18. package/dist/runtime/components/WColorInput/WColorSwatchButton.vue +86 -0
  19. package/dist/runtime/components/WColorInput/WColorSwatchButton.vue.d.ts +28 -0
  20. package/dist/runtime/components/{LibColorPicker/LibColorPicker.d.vue.ts → WColorPicker/WColorPicker.d.vue.ts} +7 -6
  21. package/dist/runtime/components/{LibColorPicker/LibColorPicker.vue → WColorPicker/WColorPicker.vue} +41 -29
  22. package/dist/runtime/components/{LibColorPicker/LibColorPicker.vue.d.ts → WColorPicker/WColorPicker.vue.d.ts} +7 -6
  23. package/dist/runtime/components/WCombobox/WCombobox.d.vue.ts +111 -0
  24. package/dist/runtime/components/WCombobox/WCombobox.vue +405 -0
  25. package/dist/runtime/components/WCombobox/WCombobox.vue.d.ts +111 -0
  26. package/dist/runtime/components/WCombobox/storyPlays.d.ts +18 -0
  27. package/dist/runtime/components/WCombobox/storyPlays.js +68 -0
  28. package/dist/runtime/components/{LibDarkModeSwitcher/LibDarkModeSwitcher.d.vue.ts → WDarkModeSwitcher/WDarkModeSwitcher.d.vue.ts} +8 -13
  29. package/dist/runtime/components/{LibDarkModeSwitcher/LibDarkModeSwitcher.vue → WDarkModeSwitcher/WDarkModeSwitcher.vue} +11 -14
  30. package/dist/runtime/components/{LibDarkModeSwitcher/LibDarkModeSwitcher.vue.d.ts → WDarkModeSwitcher/WDarkModeSwitcher.vue.d.ts} +8 -13
  31. package/dist/runtime/components/WDatePicker/WDatePicker.d.vue.ts +40 -0
  32. package/dist/runtime/components/{LibDatePicker/LibDatePicker.vue → WDatePicker/WDatePicker.vue} +3 -7
  33. package/dist/runtime/components/WDatePicker/WDatePicker.vue.d.ts +40 -0
  34. package/dist/runtime/components/{LibDatePicker/LibRangeDatePicker.vue → WDatePicker/WRangeDatePicker.vue} +21 -21
  35. package/dist/runtime/components/{LibDatePicker/LibSingleDatePicker.vue → WDatePicker/WSingleDatePicker.vue} +21 -21
  36. package/dist/runtime/components/{LibDatePicker/LibTimeZonePicker.d.vue.ts → WDatePicker/WTimeZonePicker.d.vue.ts} +1 -11
  37. package/dist/runtime/components/{LibDatePicker/LibTimeZonePicker.vue → WDatePicker/WTimeZonePicker.vue} +5 -12
  38. package/dist/runtime/components/{LibDatePicker/LibTimeZonePicker.vue.d.ts → WDatePicker/WTimeZonePicker.vue.d.ts} +1 -11
  39. package/dist/runtime/components/{LibDebug/LibDebug.vue → WDebug/WDebug.vue} +10 -12
  40. package/dist/runtime/components/{LibDevOnly/LibDevOnly.d.vue.ts → WDevOnly/WDevOnly.d.vue.ts} +0 -3
  41. package/dist/runtime/components/{LibDevOnly/LibDevOnly.vue.d.ts → WDevOnly/WDevOnly.vue.d.ts} +0 -3
  42. package/dist/runtime/components/WFileInput/WFileInput.d.vue.ts +58 -0
  43. package/dist/runtime/components/{LibFileInput/LibFileInput.vue → WFileInput/WFileInput.vue} +74 -57
  44. package/dist/runtime/components/WFileInput/WFileInput.vue.d.ts +58 -0
  45. package/dist/runtime/components/{Icon/Icon.vue.d.ts → WIcon/WIcon.d.vue.ts} +2 -6
  46. package/dist/runtime/components/{Icon/Icon.vue → WIcon/WIcon.vue} +1 -1
  47. package/dist/runtime/components/{Icon/Icon.d.vue.ts → WIcon/WIcon.vue.d.ts} +2 -6
  48. package/dist/runtime/components/{LibMultiValues/LibMultiValues.d.vue.ts → WMultiValues/WMultiValues.d.vue.ts} +8 -14
  49. package/dist/runtime/components/WMultiValues/WMultiValues.vue +150 -0
  50. package/dist/runtime/components/{LibMultiValues/LibMultiValues.vue.d.ts → WMultiValues/WMultiValues.vue.d.ts} +8 -14
  51. package/dist/runtime/components/WNotifications/WNotification.d.vue.ts +37 -0
  52. package/dist/runtime/components/{LibNotifications/LibNotification.vue → WNotifications/WNotification.vue} +34 -47
  53. package/dist/runtime/components/WNotifications/WNotification.vue.d.ts +37 -0
  54. package/dist/runtime/components/WNotifications/WNotifications.d.vue.ts +11 -0
  55. package/dist/runtime/components/{LibNotifications/LibNotifications.vue → WNotifications/WNotifications.vue} +35 -17
  56. package/dist/runtime/components/WNotifications/WNotifications.vue.d.ts +11 -0
  57. package/dist/runtime/components/WNumberInput/WNumberInput.d.vue.ts +27 -0
  58. package/dist/runtime/components/WNumberInput/WNumberInput.vue +96 -0
  59. package/dist/runtime/components/WNumberInput/WNumberInput.vue.d.ts +27 -0
  60. package/dist/runtime/components/WPagination/WPagination.d.vue.ts +59 -0
  61. package/dist/runtime/components/WPagination/WPagination.vue +182 -0
  62. package/dist/runtime/components/WPagination/WPagination.vue.d.ts +59 -0
  63. package/dist/runtime/components/WPalette/WPalette.d.vue.ts +11 -0
  64. package/dist/runtime/components/{LibPalette/LibPalette.vue → WPalette/WPalette.vue} +3 -8
  65. package/dist/runtime/components/WPalette/WPalette.vue.d.ts +11 -0
  66. package/dist/runtime/components/WPopover/WPopover.d.vue.ts +45 -0
  67. package/dist/runtime/components/WPopover/WPopover.vue +144 -0
  68. package/dist/runtime/components/WPopover/WPopover.vue.d.ts +45 -0
  69. package/dist/runtime/components/WPopup/WPopup.d.vue.ts +51 -0
  70. package/dist/runtime/components/WPopup/WPopup.vue +106 -0
  71. package/dist/runtime/components/WPopup/WPopup.vue.d.ts +51 -0
  72. package/dist/runtime/components/{LibProgressBar/LibProgressBar.d.vue.ts → WProgressBar/WProgressBar.d.vue.ts} +14 -18
  73. package/dist/runtime/components/WProgressBar/WProgressBar.vue +150 -0
  74. package/dist/runtime/components/{LibProgressBar/LibProgressBar.vue.d.ts → WProgressBar/WProgressBar.vue.d.ts} +14 -18
  75. package/dist/runtime/components/{LibRecorder/LibRecorder.d.vue.ts → WRecorder/WRecorder.d.vue.ts} +14 -29
  76. package/dist/runtime/components/{LibRecorder/LibRecorder.vue → WRecorder/WRecorder.vue} +37 -36
  77. package/dist/runtime/components/{LibRecorder/LibRecorder.vue.d.ts → WRecorder/WRecorder.vue.d.ts} +14 -29
  78. package/dist/runtime/components/{LibRoot/LibRoot.d.vue.ts → WRoot/WRoot.d.vue.ts} +6 -5
  79. package/dist/runtime/components/{LibRoot/LibRoot.vue → WRoot/WRoot.vue} +17 -15
  80. package/dist/runtime/components/{LibRoot/LibRoot.vue.d.ts → WRoot/WRoot.vue.d.ts} +6 -5
  81. package/dist/runtime/components/{LibSimpleInput/LibSimpleInput.d.vue.ts → WSimpleInput/WSimpleInput.d.vue.ts} +10 -16
  82. package/dist/runtime/components/{LibSimpleInput/LibSimpleInput.vue → WSimpleInput/WSimpleInput.vue} +14 -24
  83. package/dist/runtime/components/{LibSimpleInput/LibSimpleInput.vue.d.ts → WSimpleInput/WSimpleInput.vue.d.ts} +10 -16
  84. package/dist/runtime/components/WTable/WTable.d.vue.ts +102 -0
  85. package/dist/runtime/components/{LibTable/LibTable.vue → WTable/WTable.vue} +13 -14
  86. package/dist/runtime/components/WTable/WTable.vue.d.ts +102 -0
  87. package/dist/runtime/components/WTooltip/WTooltip.d.vue.ts +40 -0
  88. package/dist/runtime/components/WTooltip/WTooltip.vue +112 -0
  89. package/dist/runtime/components/WTooltip/WTooltip.vue.d.ts +40 -0
  90. package/dist/runtime/components/index.d.ts +20 -20
  91. package/dist/runtime/components/index.js +20 -20
  92. package/dist/runtime/composables/index.d.ts +4 -4
  93. package/dist/runtime/composables/index.js +4 -4
  94. package/dist/runtime/composables/useDelayedLoadingIndicator.d.ts +9 -0
  95. package/dist/runtime/composables/useDelayedLoadingIndicator.js +18 -0
  96. package/dist/runtime/composables/useDisplayForReka.d.ts +25 -0
  97. package/dist/runtime/composables/useDisplayForReka.js +16 -0
  98. package/dist/runtime/composables/useFallbackId.d.ts +3 -0
  99. package/dist/runtime/composables/useFallbackId.js +5 -0
  100. package/dist/runtime/composables/useInjectedDarkMode.d.ts +1 -1
  101. package/dist/runtime/composables/usePopupConstrainToStyle.d.ts +8 -0
  102. package/dist/runtime/composables/usePopupConstrainToStyle.js +8 -0
  103. package/dist/runtime/composables/useSetupDarkMode.d.ts +2 -3
  104. package/dist/runtime/composables/useSetupDarkMode.js +90 -4
  105. package/dist/runtime/helpers/NotificationHandler.d.ts +2 -2
  106. package/dist/runtime/injectionKeys.d.ts +1 -5
  107. package/dist/runtime/injectionKeys.js +0 -2
  108. package/dist/runtime/types/index.d.ts +85 -27
  109. package/dist/runtime/types/index.js +1 -0
  110. package/package.json +1 -1
  111. package/src/module.ts +1 -1
  112. package/src/runtime/assets/animations.css +3 -3
  113. package/src/runtime/assets/locales/en.json +2 -0
  114. package/src/runtime/build/WitchcraftUiResolver.ts +2 -2
  115. package/src/runtime/components/TestControls/TestControls.vue +3 -3
  116. package/src/runtime/components/WButton/WButton.stories.ts +112 -0
  117. package/src/runtime/components/{LibButton/LibButton.vue → WButton/WButton.vue} +34 -50
  118. package/src/runtime/components/{LibCheckbox/LibCheckbox.stories.ts → WCheckbox/WCheckbox.stories.ts} +5 -5
  119. package/src/runtime/components/WCheckbox/WCheckbox.vue +125 -0
  120. package/src/runtime/components/{LibColorInput/LibColorInput.stories.ts → WColorInput/WColorInput.stories.ts} +8 -8
  121. package/src/runtime/components/WColorInput/WColorInput.vue +112 -0
  122. package/src/runtime/components/WColorInput/WColorSwatchButton.vue +102 -0
  123. package/src/runtime/components/{LibColorPicker/LibColorPicker.stories.ts → WColorPicker/WColorPicker.stories.ts} +12 -12
  124. package/src/runtime/components/{LibColorPicker/LibColorPicker.vue → WColorPicker/WColorPicker.vue} +44 -31
  125. package/src/runtime/components/WCombobox/WCombobox.stories.ts +209 -0
  126. package/src/runtime/components/WCombobox/WCombobox.vue +450 -0
  127. package/src/runtime/components/WCombobox/storyPlays.ts +92 -0
  128. package/src/runtime/components/{LibDarkModeSwitcher/LibDarkModeSwitcher.stories.ts → WDarkModeSwitcher/WDarkModeSwitcher.stories.ts} +6 -6
  129. package/src/runtime/components/{LibDarkModeSwitcher/LibDarkModeSwitcher.vue → WDarkModeSwitcher/WDarkModeSwitcher.vue} +19 -30
  130. package/src/runtime/components/{LibDatePicker/LibDatePicker.stories.ts → WDatePicker/WDatePicker.stories.ts} +42 -34
  131. package/src/runtime/components/{LibDatePicker/LibDatePicker.vue → WDatePicker/WDatePicker.vue} +3 -7
  132. package/src/runtime/components/{LibDatePicker/LibRangeDatePicker.vue → WDatePicker/WRangeDatePicker.vue} +21 -21
  133. package/src/runtime/components/{LibDatePicker/LibSingleDatePicker.vue → WDatePicker/WSingleDatePicker.vue} +21 -21
  134. package/src/runtime/components/{LibDatePicker/LibTimeZonePicker.vue → WDatePicker/WTimeZonePicker.vue} +5 -12
  135. package/src/runtime/components/{LibDebug/LibDebug.stories.ts → WDebug/WDebug.stories.ts} +5 -5
  136. package/src/runtime/components/{LibDebug/LibDebug.vue → WDebug/WDebug.vue} +9 -10
  137. package/src/runtime/components/{LibDevOnly/LibDevOnly.vue → WDevOnly/WDevOnly.vue} +0 -4
  138. package/src/runtime/components/{LibFileInput/LibFileInput.stories.ts → WFileInput/WFileInput.stories.ts} +7 -7
  139. package/src/runtime/components/{LibFileInput/LibFileInput.vue → WFileInput/WFileInput.vue} +98 -97
  140. package/src/runtime/components/{Icon/Icon.vue → WIcon/WIcon.vue} +5 -8
  141. package/src/runtime/components/{LibMultiValues/LibMultiValues.stories.ts → WMultiValues/WMultiValues.stories.ts} +9 -9
  142. package/src/runtime/components/WMultiValues/WMultiValues.vue +163 -0
  143. package/src/runtime/components/{LibNotifications/LibNotification.stories.ts → WNotifications/WNotification.stories.ts} +9 -9
  144. package/src/runtime/components/{LibNotifications/LibNotification.vue → WNotifications/WNotification.vue} +45 -65
  145. package/src/runtime/components/WNotifications/WNotifications.stories.ts +139 -0
  146. package/src/runtime/components/{LibNotifications/LibNotifications.vue → WNotifications/WNotifications.vue} +51 -29
  147. package/src/runtime/components/WNumberInput/WNumberInput.vue +109 -0
  148. package/src/runtime/components/WPagination/WPagination.stories.ts +51 -0
  149. package/src/runtime/components/WPagination/WPagination.vue +207 -0
  150. package/src/runtime/components/{LibPalette/LibPalette.stories.ts → WPalette/WPalette.stories.ts} +6 -6
  151. package/src/runtime/components/{LibPalette/LibPalette.vue → WPalette/WPalette.vue} +3 -8
  152. package/src/runtime/components/WPopover/WPopover.stories.ts +218 -0
  153. package/src/runtime/components/WPopover/WPopover.vue +168 -0
  154. package/src/runtime/components/WPopup/WPopup.stories.ts +104 -0
  155. package/src/runtime/components/WPopup/WPopup.vue +125 -0
  156. package/src/runtime/components/WProgressBar/WProgressBar.stories.ts +119 -0
  157. package/src/runtime/components/WProgressBar/WProgressBar.vue +185 -0
  158. package/src/runtime/components/{LibRecorder/LibRecorder.stories.ts → WRecorder/WRecorder.stories.ts} +9 -6
  159. package/src/runtime/components/{LibRecorder/LibRecorder.vue → WRecorder/WRecorder.vue} +69 -68
  160. package/src/runtime/components/{LibRoot/LibRoot.vue → WRoot/WRoot.vue} +18 -15
  161. package/src/runtime/components/{LibSimpleInput/LibSimpleInput.stories.ts → WSimpleInput/WSimpleInput.stories.ts} +11 -12
  162. package/src/runtime/components/{LibSimpleInput/LibSimpleInput.vue → WSimpleInput/WSimpleInput.vue} +28 -44
  163. package/src/runtime/components/{LibTable/LibTable.stories.ts → WTable/WTable.stories.ts} +60 -52
  164. package/src/runtime/components/{LibTable/LibTable.vue → WTable/WTable.vue} +85 -88
  165. package/src/runtime/components/WTooltip/WTooltip.stories.ts +82 -0
  166. package/src/runtime/components/WTooltip/WTooltip.vue +128 -0
  167. package/src/runtime/components/index.ts +20 -20
  168. package/src/runtime/composables/index.ts +4 -4
  169. package/src/runtime/composables/useDelayedLoadingIndicator.ts +30 -0
  170. package/src/runtime/composables/useDisplayForReka.ts +37 -0
  171. package/src/runtime/composables/useFallbackId.ts +6 -0
  172. package/src/runtime/composables/useInjectedDarkMode.ts +1 -2
  173. package/src/runtime/composables/usePopupConstrainToStyle.ts +29 -0
  174. package/src/runtime/composables/useSetupDarkMode.ts +122 -4
  175. package/src/runtime/helpers/NotificationHandler.ts +2 -2
  176. package/src/runtime/injectionKeys.ts +1 -7
  177. package/src/runtime/types/index.ts +105 -32
  178. package/types/components.d.ts +14 -15
  179. package/dist/runtime/components/Aria/Aria.d.vue.ts +0 -6
  180. package/dist/runtime/components/Aria/Aria.vue +0 -16
  181. package/dist/runtime/components/Aria/Aria.vue.d.ts +0 -6
  182. package/dist/runtime/components/LibButton/LibButton.d.vue.ts +0 -37
  183. package/dist/runtime/components/LibButton/LibButton.vue.d.ts +0 -37
  184. package/dist/runtime/components/LibCheckbox/LibCheckbox.d.vue.ts +0 -41
  185. package/dist/runtime/components/LibCheckbox/LibCheckbox.vue +0 -103
  186. package/dist/runtime/components/LibCheckbox/LibCheckbox.vue.d.ts +0 -41
  187. package/dist/runtime/components/LibColorInput/LibColorInput.d.vue.ts +0 -64
  188. package/dist/runtime/components/LibColorInput/LibColorInput.vue +0 -162
  189. package/dist/runtime/components/LibColorInput/LibColorInput.vue.d.ts +0 -64
  190. package/dist/runtime/components/LibDatePicker/LibDatePicker.d.vue.ts +0 -191
  191. package/dist/runtime/components/LibDatePicker/LibDatePicker.vue.d.ts +0 -191
  192. package/dist/runtime/components/LibFileInput/LibFileInput.d.vue.ts +0 -46
  193. package/dist/runtime/components/LibFileInput/LibFileInput.vue.d.ts +0 -46
  194. package/dist/runtime/components/LibInputDeprecated/LibInputDeprecated.d.vue.ts +0 -256
  195. package/dist/runtime/components/LibInputDeprecated/LibInputDeprecated.vue +0 -387
  196. package/dist/runtime/components/LibInputDeprecated/LibInputDeprecated.vue.d.ts +0 -256
  197. package/dist/runtime/components/LibLabel/LibLabel.d.vue.ts +0 -27
  198. package/dist/runtime/components/LibLabel/LibLabel.vue +0 -45
  199. package/dist/runtime/components/LibLabel/LibLabel.vue.d.ts +0 -27
  200. package/dist/runtime/components/LibMultiValues/LibMultiValues.vue +0 -109
  201. package/dist/runtime/components/LibNotifications/LibNotification.d.vue.ts +0 -45
  202. package/dist/runtime/components/LibNotifications/LibNotification.vue.d.ts +0 -45
  203. package/dist/runtime/components/LibNotifications/LibNotifications.d.vue.ts +0 -15
  204. package/dist/runtime/components/LibNotifications/LibNotifications.vue.d.ts +0 -15
  205. package/dist/runtime/components/LibPagination/LibPagination.d.vue.ts +0 -105
  206. package/dist/runtime/components/LibPagination/LibPagination.vue +0 -229
  207. package/dist/runtime/components/LibPagination/LibPagination.vue.d.ts +0 -105
  208. package/dist/runtime/components/LibPalette/LibPalette.d.vue.ts +0 -15
  209. package/dist/runtime/components/LibPalette/LibPalette.vue.d.ts +0 -15
  210. package/dist/runtime/components/LibPopup/LibPopup.d.vue.ts +0 -52
  211. package/dist/runtime/components/LibPopup/LibPopup.vue +0 -365
  212. package/dist/runtime/components/LibPopup/LibPopup.vue.d.ts +0 -52
  213. package/dist/runtime/components/LibProgressBar/LibProgressBar.vue +0 -169
  214. package/dist/runtime/components/LibSuggestions/LibSuggestions.d.vue.ts +0 -99
  215. package/dist/runtime/components/LibSuggestions/LibSuggestions.vue +0 -178
  216. package/dist/runtime/components/LibSuggestions/LibSuggestions.vue.d.ts +0 -99
  217. package/dist/runtime/components/LibTable/LibTable.d.vue.ts +0 -125
  218. package/dist/runtime/components/LibTable/LibTable.vue.d.ts +0 -125
  219. package/dist/runtime/components/Template/NAME.d.vue.ts +0 -18
  220. package/dist/runtime/components/Template/NAME.vue +0 -27
  221. package/dist/runtime/components/Template/NAME.vue.d.ts +0 -18
  222. package/dist/runtime/components/Template/TemplateStory.d.ts +0 -7
  223. package/dist/runtime/components/Template/TemplateStory.js +0 -22
  224. package/dist/runtime/components/shared/props.d.ts +0 -171
  225. package/dist/runtime/components/shared/props.js +0 -2
  226. package/dist/runtime/composables/useAriaLabel.d.ts +0 -6
  227. package/dist/runtime/composables/useAriaLabel.js +0 -15
  228. package/dist/runtime/composables/useDarkMode.d.ts +0 -77
  229. package/dist/runtime/composables/useDarkMode.js +0 -89
  230. package/dist/runtime/composables/useDivideAttrs.d.ts +0 -27
  231. package/dist/runtime/composables/useDivideAttrs.js +0 -27
  232. package/dist/runtime/composables/useSuggestions.d.ts +0 -40
  233. package/dist/runtime/composables/useSuggestions.js +0 -263
  234. package/src/runtime/components/Aria/Aria.vue +0 -26
  235. package/src/runtime/components/LibButton/LibButton.stories.ts +0 -106
  236. package/src/runtime/components/LibCheckbox/LibCheckbox.vue +0 -131
  237. package/src/runtime/components/LibColorInput/LibColorInput.vue +0 -203
  238. package/src/runtime/components/LibInputDeprecated/LibInputDeprecated.stories.ts +0 -405
  239. package/src/runtime/components/LibInputDeprecated/LibInputDeprecated.vue +0 -419
  240. package/src/runtime/components/LibLabel/LibLabel.stories.ts +0 -33
  241. package/src/runtime/components/LibLabel/LibLabel.vue +0 -65
  242. package/src/runtime/components/LibMultiValues/LibMultiValues.vue +0 -123
  243. package/src/runtime/components/LibNotifications/LibNotifications.stories.ts +0 -131
  244. package/src/runtime/components/LibPagination/LibPagination.stories.ts +0 -49
  245. package/src/runtime/components/LibPagination/LibPagination.vue +0 -274
  246. package/src/runtime/components/LibPopup/LibPopup.stories.ts +0 -153
  247. package/src/runtime/components/LibPopup/LibPopup.vue +0 -396
  248. package/src/runtime/components/LibProgressBar/LibProgressBar.stories.ts +0 -90
  249. package/src/runtime/components/LibProgressBar/LibProgressBar.vue +0 -197
  250. package/src/runtime/components/LibSuggestions/LibSuggestions.stories.ts +0 -134
  251. package/src/runtime/components/LibSuggestions/LibSuggestions.vue +0 -212
  252. package/src/runtime/components/Template/NAME.vue +0 -49
  253. package/src/runtime/components/Template/TemplateStory.ts +0 -37
  254. package/src/runtime/components/shared/props.ts +0 -199
  255. package/src/runtime/composables/useAriaLabel.ts +0 -23
  256. package/src/runtime/composables/useDarkMode.ts +0 -199
  257. package/src/runtime/composables/useDivideAttrs.ts +0 -53
  258. package/src/runtime/composables/useSuggestions.ts +0 -339
  259. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToHsva.d.ts +0 -0
  260. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToHsva.js +0 -0
  261. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToRgba.d.ts +0 -0
  262. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToRgba.js +0 -0
  263. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/toLowPrecisionRgbaString.d.ts +0 -0
  264. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/toLowPrecisionRgbaString.js +0 -0
  265. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/truncate.d.ts +0 -0
  266. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/truncate.js +0 -0
  267. /package/dist/runtime/components/{LibDatePicker/LibRangeDatePicker.d.vue.ts → WDatePicker/WRangeDatePicker.d.vue.ts} +0 -0
  268. /package/dist/runtime/components/{LibDatePicker/LibRangeDatePicker.vue.d.ts → WDatePicker/WRangeDatePicker.vue.d.ts} +0 -0
  269. /package/dist/runtime/components/{LibDatePicker/LibSingleDatePicker.d.vue.ts → WDatePicker/WSingleDatePicker.d.vue.ts} +0 -0
  270. /package/dist/runtime/components/{LibDatePicker/LibSingleDatePicker.vue.d.ts → WDatePicker/WSingleDatePicker.vue.d.ts} +0 -0
  271. /package/dist/runtime/components/{LibDatePicker → WDatePicker}/helpers.d.ts +0 -0
  272. /package/dist/runtime/components/{LibDatePicker → WDatePicker}/helpers.js +0 -0
  273. /package/dist/runtime/components/{LibDebug/LibDebug.d.vue.ts → WDebug/WDebug.d.vue.ts} +0 -0
  274. /package/dist/runtime/components/{LibDebug/LibDebug.vue.d.ts → WDebug/WDebug.vue.d.ts} +0 -0
  275. /package/dist/runtime/components/{LibDevOnly/LibDevOnly.vue → WDevOnly/WDevOnly.vue} +0 -0
  276. /package/dist/runtime/components/{LibNotifications/LibNotificationTestMessageComponent.d.vue.ts → WNotifications/WNotificationTestMessageComponent.d.vue.ts} +0 -0
  277. /package/dist/runtime/components/{LibNotifications/LibNotificationTestMessageComponent.vue → WNotifications/WNotificationTestMessageComponent.vue} +0 -0
  278. /package/dist/runtime/components/{LibNotifications/LibNotificationTestMessageComponent.vue.d.ts → WNotifications/WNotificationTestMessageComponent.vue.d.ts} +0 -0
  279. /package/dist/runtime/components/{LibNotifications → WNotifications}/calculateNotificationProgress.d.ts +0 -0
  280. /package/dist/runtime/components/{LibNotifications → WNotifications}/calculateNotificationProgress.js +0 -0
  281. /package/src/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToHsva.ts +0 -0
  282. /package/src/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToRgba.ts +0 -0
  283. /package/src/runtime/components/{LibColorPicker → WColorPicker}/utils/toLowPrecisionRgbaString.ts +0 -0
  284. /package/src/runtime/components/{LibColorPicker → WColorPicker}/utils/truncate.ts +0 -0
  285. /package/src/runtime/components/{LibDatePicker → WDatePicker}/helpers.ts +0 -0
  286. /package/src/runtime/components/{LibNotifications/LibNotificationTestMessageComponent.vue → WNotifications/WNotificationTestMessageComponent.vue} +0 -0
  287. /package/src/runtime/components/{LibNotifications → WNotifications}/calculateNotificationProgress.ts +0 -0
@@ -1,5 +1,4 @@
1
1
  <template>
2
- <!-- todo aria errors -->
3
2
  <div
4
3
  :class="twMerge(
5
4
  `
@@ -24,11 +23,11 @@
24
23
  rounded-xl
25
24
  p-2
26
25
  `,
27
- errors.length > 0 && errorFlashing && `border-danger-400`,
28
26
  isHovered && `bg-accent-500/10`,
29
- $.wrapperAttrs.class
27
+ errors.length > 0 && isErrored && `errored border-red-400 hover:border-red-500`,
28
+ wrapperAttrs?.class
30
29
  )"
31
- v-bind="{ ...$.wrapperAttrs, class: void 0 }"
30
+ v-bind="{ ...wrapperAttrs, class: void 0 }"
32
31
  @drop="onDrop"
33
32
  @dragover.prevent="isHovered = true"
34
33
  @dragleave="isHovered = false"
@@ -51,7 +50,7 @@
51
50
  )"
52
51
  >
53
52
  <label
54
- :for="id ?? fallbackId"
53
+ :for="finalId"
55
54
  :class="twMerge(`
56
55
  file-input--label
57
56
  pointer-events-none
@@ -67,7 +66,7 @@
67
66
  v-if="compact || multiple || files.length === 0"
68
67
  name="icon"
69
68
  >
70
- <icon><i-fa6-solid-arrow-up-from-bracket/></icon>
69
+ <WIcon><i-lucide-upload/></WIcon>
71
70
  </slot>
72
71
  <slot name="label">
73
72
  <div class="text-ellipsis overflow-hidden shrink-1 hidden @min-[15ch]:block">
@@ -105,7 +104,7 @@
105
104
  </div>
106
105
  </label>
107
106
  <input
108
- :id="id ?? fallbackId"
107
+ :id="finalId"
109
108
  :class="twMerge(
110
109
  `
111
110
  file-input--input
@@ -116,13 +115,15 @@
116
115
  text-[0]
117
116
  opacity-0
118
117
  `,
119
- $.inputAttrs?.class
118
+ inputAttrs?.class
120
119
  )"
121
120
  type="file"
122
121
  :accept="formats.join(', ')"
123
122
  :multiple="multiple"
123
+ v-bind="{ ...inputAttrs, class: void 0 }"
124
+ :aria-invalid="errors.length > 0"
125
+ :aria-errormessage="errors.map((_) => _.message).join(', ')"
124
126
  ref="el"
125
- v-bind="{ ...$.inputAttrs, class: void 0 }"
126
127
  @input="inputFile"
127
128
  @click="$event.target.value = null"
128
129
  >
@@ -136,8 +137,7 @@
136
137
  `,
137
138
  multiple && `
138
139
  w-full
139
- `,
140
- $.previewsAttrs?.class
140
+ `
141
141
  )"
142
142
  >
143
143
  <div
@@ -167,14 +167,14 @@
167
167
  :key="entry.file.name"
168
168
  >
169
169
  <div class="flex flex-initial basis-full justify-start items-center max-w-full gap-2 px-1">
170
- <lib-button
170
+ <WButton
171
171
  :border="false"
172
172
  class="file-input--remove-button rounded-full p-0"
173
173
  :aria-label="`Remove file ${entry.file.name}`"
174
174
  @click="removeFile(entry)"
175
175
  >
176
- <icon><i-fa6-solid-xmark/></icon>
177
- </lib-button>
176
+ <WIcon><i-lucide-x/></WIcon>
177
+ </Wbutton>
178
178
  <div
179
179
  class="file-input--preview-filename min-w-0 flex-1 basis-0 truncate break-all rounded-sm text-sm"
180
180
  :title="entry.file.name"
@@ -194,7 +194,7 @@
194
194
  >
195
195
  <img
196
196
  class="max-h-full w-auto"
197
- :src="getSrc(entry.file)"
197
+ :src="entry.previewUrl"
198
198
  >
199
199
  </div>
200
200
  <div
@@ -204,33 +204,59 @@
204
204
  flex-1 basis-full flex-wrap items-center justify-center
205
205
  "
206
206
  >
207
- <icon><i-fa6-regular-file class="text-4xl opacity-50"/></icon>
207
+ <WIcon><i-lucide-file class="text-4xl opacity-50"/></WIcon>
208
208
  </div>
209
209
  </div>
210
210
  </div>
211
211
  </div>
212
+ <div
213
+ v-if="!compact && errors.length > 0"
214
+ class="file-input--errors flex flex-col gap-2 text-sm text-red-600 dark:text-red-400 items-center px-2"
215
+ >
216
+ <div
217
+ class="file-input--error text-center"
218
+ v-for="error of errors"
219
+ :key="error.message"
220
+ >
221
+ {{ error.message }}
222
+ </div>
223
+ </div>
212
224
  </div>
213
225
  </template>
214
226
 
215
227
  <script setup>
216
- import { computed, ref, shallowReactive, watch } from "vue";
217
- import IFa6RegularFile from "~icons/fa6-regular/file";
218
- import IFa6SolidArrowUpFromBracket from "~icons/fa6-solid/arrow-up-from-bracket";
219
- import IFa6SolidXmark from "~icons/fa6-solid/xmark";
220
- import { useDivideAttrs } from "../../composables/useDivideAttrs.js";
228
+ import { computed, onBeforeUnmount, ref, shallowReactive, watch } from "vue";
229
+ import ILucideFile from "~icons/lucide/file";
230
+ import ILucideUpload from "~icons/lucide/upload";
231
+ import ILucideX from "~icons/lucide/x";
232
+ import { useFallbackId } from "../../composables/useFallbackId.js";
221
233
  import { useInjectedI18n } from "../../composables/useInjectedI18n.js";
222
234
  import { twMerge } from "../../utils/twMerge.js";
223
- import Icon from "../Icon/Icon.vue";
224
- import LibButton from "../LibButton/LibButton.vue";
225
- import { getFallbackId } from "../shared/props.js";
235
+ import WButton from "../WButton/WButton.vue";
236
+ import WIcon from "../WIcon/WIcon.vue";
226
237
  const t = useInjectedI18n();
227
238
  const el = ref(null);
239
+ const props = defineProps({
240
+ id: { type: String, required: false },
241
+ multiple: { type: Boolean, required: false, default: false },
242
+ formats: { type: Array, required: false, default: () => ["image/*", ".jpeg", ".jpg", ".png"] },
243
+ compact: { type: Boolean, required: false, default: false },
244
+ inputAttrs: { type: Object, required: false },
245
+ wrapperAttrs: { type: Object, required: false }
246
+ });
247
+ const finalId = useFallbackId(props);
248
+ const emits = defineEmits(["input", "errors"]);
228
249
  const files = shallowReactive([]);
229
250
  const errors = shallowReactive([]);
230
- const errorFlashing = ref(false);
251
+ const isErrored = ref(false);
231
252
  const isHovered = ref(false);
232
253
  function clearFiles() {
233
- el.value.value = "";
254
+ if (el.value) {
255
+ el.value.value = "";
256
+ }
257
+ for (const entry of files) {
258
+ if (entry.previewUrl) URL.revokeObjectURL(entry.previewUrl);
259
+ }
234
260
  files.splice(0, files.length);
235
261
  }
236
262
  watch(files, () => {
@@ -238,37 +264,30 @@ watch(files, () => {
238
264
  });
239
265
  watch(errors, () => {
240
266
  if (errors.length > 0) {
241
- errorFlashing.value = true;
242
- setTimeout(() => {
243
- errorFlashing.value = false;
244
- }, 500);
245
- emits("errors", [...errors]);
246
- errors.splice(0, errors.length);
267
+ isErrored.value = true;
268
+ emits("errors", [...errors], clearErrors);
247
269
  }
248
270
  });
271
+ function clearErrors() {
272
+ isErrored.value = false;
273
+ errors.splice(0, errors.length);
274
+ }
249
275
  defineOptions({
250
- name: "LibFileInput",
276
+ name: "WFileInput",
251
277
  inheritAttrs: false
252
278
  });
253
- const $ = useDivideAttrs(["wrapper", "input", "previews"]);
254
- const emits = defineEmits(["input", "errors"]);
255
- const fallbackId = getFallbackId();
256
- const props = defineProps({
257
- id: { type: String, required: false },
258
- multiple: { type: Boolean, required: false, default: false },
259
- formats: { type: Array, required: false, default: () => ["image/*", ".jpeg", ".jpg", ".png"] },
260
- compact: { type: Boolean, required: false, default: false }
261
- });
262
279
  const mimeTypes = computed(() => props.formats?.filter((_) => !_.startsWith(".")) ?? []);
263
280
  const extensions = computed(() => props.formats?.filter((_) => _.startsWith(".")) ?? []);
264
- const getSrc = (file) => {
265
- const src = URL.createObjectURL(file);
266
- return src;
267
- };
268
- const removeFile = (entry) => {
281
+ onBeforeUnmount(() => {
282
+ for (const entry of files) {
283
+ if (entry.previewUrl) URL.revokeObjectURL(entry.previewUrl);
284
+ }
285
+ });
286
+ function removeFile(entry) {
287
+ if (entry.previewUrl) URL.revokeObjectURL(entry.previewUrl);
269
288
  const index = files.indexOf(entry);
270
- files.splice(index, 1);
271
- };
289
+ if (index > -1) files.splice(index, 1);
290
+ }
272
291
  const extensionsList = computed(() => extensions.value.join(", "));
273
292
  function onDrop(e) {
274
293
  if ("dataTransfer" in e && e.dataTransfer && e.dataTransfer.files && e.dataTransfer.files.length > 0) {
@@ -304,12 +323,13 @@ function updateFiles(filesList) {
304
323
  errs.push(err);
305
324
  continue;
306
325
  }
326
+ const previewUrl = isImg ? URL.createObjectURL(file) : void 0;
307
327
  if (errs.length > 0) continue;
308
328
  if (!files.find((_) => _.file === file)) {
309
329
  if (props.multiple || files.length < 1) {
310
- files.push({ file, isImg });
330
+ files.push({ file, isImg, previewUrl });
311
331
  } else {
312
- files.splice(0, files.length, { file, isImg });
332
+ files.splice(0, files.length, { file, isImg, previewUrl });
313
333
  }
314
334
  }
315
335
  }
@@ -317,15 +337,12 @@ function updateFiles(filesList) {
317
337
  errors.splice(0, errors.length, ...errs);
318
338
  return false;
319
339
  } else if (errors.length > 0) {
320
- errors.splice(0, errors.length);
340
+ clearErrors();
321
341
  }
322
342
  return void 0;
323
343
  }
324
344
  defineExpose({
325
- clearFiles
345
+ clearFiles,
346
+ clearErrors
326
347
  });
327
348
  </script>
328
-
329
- <script>
330
- export default { name: "LibFileInput" };
331
- </script>
@@ -0,0 +1,58 @@
1
+ import type { HTMLAttributes, InputHTMLAttributes } from "vue";
2
+ import type { FileInputError, TailwindClassProp } from "../../types/index.js";
3
+ declare function clearFiles(): void;
4
+ declare function clearErrors(): void;
5
+ declare var __VLS_1: {}, __VLS_14: {}, __VLS_16: {};
6
+ type __VLS_Slots = {} & {
7
+ icon?: (props: typeof __VLS_1) => any;
8
+ } & {
9
+ label?: (props: typeof __VLS_14) => any;
10
+ } & {
11
+ formats?: (props: typeof __VLS_16) => any;
12
+ };
13
+ declare const __VLS_base: import("vue").DefineComponent<{
14
+ id?: string;
15
+ multiple?: boolean;
16
+ /**
17
+ * A list of extensions or mime types to add to the input's accept. Basic validations are done so that files match an extension and mimeType, but note that a file could still be lying, all files should be validated server side.
18
+ *
19
+ * Pass an empty array to allow any filetype.
20
+ */
21
+ formats?: string[];
22
+ compact?: boolean;
23
+ inputAttrs?: Omit<InputHTMLAttributes, "class"> & TailwindClassProp;
24
+ wrapperAttrs?: Omit<HTMLAttributes, "class"> & TailwindClassProp;
25
+ }, {
26
+ clearFiles: typeof clearFiles;
27
+ clearErrors: typeof clearErrors;
28
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
29
+ input: (val: File[], clearFiles: () => void) => any;
30
+ errors: (val: FileInputError[], clearErrors: () => void) => any;
31
+ }, string, import("vue").PublicProps, Readonly<{
32
+ id?: string;
33
+ multiple?: boolean;
34
+ /**
35
+ * A list of extensions or mime types to add to the input's accept. Basic validations are done so that files match an extension and mimeType, but note that a file could still be lying, all files should be validated server side.
36
+ *
37
+ * Pass an empty array to allow any filetype.
38
+ */
39
+ formats?: string[];
40
+ compact?: boolean;
41
+ inputAttrs?: Omit<InputHTMLAttributes, "class"> & TailwindClassProp;
42
+ wrapperAttrs?: Omit<HTMLAttributes, "class"> & TailwindClassProp;
43
+ }> & Readonly<{
44
+ onInput?: ((val: File[], clearFiles: () => void) => any) | undefined;
45
+ onErrors?: ((val: FileInputError[], clearErrors: () => void) => any) | undefined;
46
+ }>, {
47
+ multiple: boolean;
48
+ compact: boolean;
49
+ formats: string[];
50
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
51
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
52
+ declare const _default: typeof __VLS_export;
53
+ export default _default;
54
+ type __VLS_WithSlots<T, S> = T & {
55
+ new (): {
56
+ $slots: S;
57
+ };
58
+ };
@@ -3,16 +3,12 @@ import { type HTMLAttributes } from "vue";
3
3
  * Just a very simple wrapper for wrapping unplugin-icons in an inline-block div so the icon in the slot take's up a normal line height when it's alone.
4
4
  *
5
5
  * ```vue
6
- * <icon><i-...></icon>
6
+ * <WIcon><i-...></WIcon>
7
7
  * ``
8
8
  */
9
- interface Props extends
10
- /** @vue-ignore */
11
- Partial<Omit<HTMLAttributes, "class">> {
12
- }
13
9
  declare const _default: typeof __VLS_export;
14
10
  export default _default;
15
- declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
11
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<Omit<HTMLAttributes, "class">, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Omit<HTMLAttributes, "class">> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
16
12
  default?: (props: {}) => any;
17
13
  }>;
18
14
  type __VLS_WithSlots<T, S> = T & {
@@ -19,5 +19,5 @@ defineProps({});
19
19
  </script>
20
20
 
21
21
  <script>
22
-
22
+ export default { name: "Icon" };
23
23
  </script>
@@ -3,16 +3,12 @@ import { type HTMLAttributes } from "vue";
3
3
  * Just a very simple wrapper for wrapping unplugin-icons in an inline-block div so the icon in the slot take's up a normal line height when it's alone.
4
4
  *
5
5
  * ```vue
6
- * <icon><i-...></icon>
6
+ * <WIcon><i-...></WIcon>
7
7
  * ``
8
8
  */
9
- interface Props extends
10
- /** @vue-ignore */
11
- Partial<Omit<HTMLAttributes, "class">> {
12
- }
13
9
  declare const _default: typeof __VLS_export;
14
10
  export default _default;
15
- declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
11
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<Omit<HTMLAttributes, "class">, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Omit<HTMLAttributes, "class">> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
16
12
  default?: (props: {}) => any;
17
13
  }>;
18
14
  type __VLS_WithSlots<T, S> = T & {
@@ -1,19 +1,11 @@
1
1
  import { type HTMLAttributes } from "vue";
2
- import type { BaseInteractiveProps, LabelProps, TailwindClassProp, WrapperProps } from "../shared/props.js";
3
- type WrapperTypes = Partial<WrapperProps<"item", HTMLAttributes>>;
4
- type RealProps = LabelProps & BaseInteractiveProps & {
5
- border?: boolean;
6
- };
7
- interface Props extends
8
- /** @vue-ignore */
9
- Partial<Omit<HTMLAttributes, "class"> & TailwindClassProp>,
10
- /** @vue-ignore */
11
- WrapperTypes, RealProps {
12
- }
13
- declare const _default: typeof __VLS_export;
14
- export default _default;
2
+ import type { BaseInteractiveProps, TailwindClassProp } from "../../types/index.js";
15
3
  declare const __VLS_export: <T extends string | number>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
16
- props: import("vue").PublicProps & __VLS_PrettifyLocal<(Props & {
4
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<(BaseInteractiveProps & {
5
+ label?: string;
6
+ border?: boolean;
7
+ itemAttrs?: Omit<HTMLAttributes, "class"> & TailwindClassProp;
8
+ } & Omit<HTMLAttributes, "class"> & TailwindClassProp & {
17
9
  modelValue?: T[];
18
10
  }) & {
19
11
  "onUpdate:modelValue"?: ((value: T[]) => any) | undefined;
@@ -27,6 +19,8 @@ declare const __VLS_export: <T extends string | number>(__VLS_props: NonNullable
27
19
  }>) => import("vue").VNode & {
28
20
  __ctx?: Awaited<typeof __VLS_setup>;
29
21
  };
22
+ declare const _default: typeof __VLS_export;
23
+ export default _default;
30
24
  type __VLS_PrettifyLocal<T> = (T extends any ? {
31
25
  [K in keyof T]: T[K];
32
26
  } : {
@@ -0,0 +1,150 @@
1
+ <template>
2
+ <div
3
+ v-if="$modelValue && $modelValue?.length > 0"
4
+ role="list"
5
+ :class="
6
+ twMerge(
7
+ `
8
+ multivalues
9
+ group
10
+ flex
11
+ flex-initial
12
+ items-center
13
+ justify-center
14
+ gap-1
15
+ overflow-x-scroll
16
+ scrollbar-hidden
17
+ `,
18
+ $attrs?.class
19
+ )
20
+ "
21
+ :data-disabled="disabled"
22
+ :data-read-only="readonly"
23
+ :aria-label="label ? `Values for ${label}` : void 0"
24
+ v-bind="{ ...$attrs, class: void 0 }"
25
+ @keydown="handleKeydown"
26
+ >
27
+ <div
28
+ role="listitem"
29
+ :data-border="border"
30
+ :class="twMerge(
31
+ `
32
+ multivalues--item
33
+ flex-basis-0
34
+ min-w-2
35
+ flex
36
+ max-w-fit
37
+ flex-1
38
+ items-center
39
+ gap-0.5
40
+ overflow-hidden
41
+ px-1
42
+ text-xs
43
+ leading-none
44
+ focus-outline
45
+ outlined:outline-offset-0
46
+ `,
47
+ !(disabled || readonly) && `
48
+ group-focus:text-accent-500
49
+ focus:text-accent-500`,
50
+ border && `
51
+ rounded-sm
52
+ border-neutral-400
53
+ border
54
+ focus:border-accent-400
55
+ `,
56
+ border && (disabled || readonly) && `
57
+ border-neutral-200
58
+ focus:border-neutral-200
59
+ dark:border-neutral-800
60
+ dark:focus:border-neutral-800
61
+ `,
62
+ itemAttrs?.class
63
+ )"
64
+ :tabindex="canEdit ? activeIndex === index ? 0 : -1 : void 0"
65
+ v-for="(value, index) of $modelValue"
66
+ :key="value"
67
+ ref="itemRefs"
68
+ @keydown.ctrl.c.prevent="copy(value.toString())"
69
+ @focus="activeIndex = index"
70
+ >
71
+ <span class="multivalues--label truncate">{{ value }}</span>
72
+ <WButton
73
+ class="multivalues--remove-button !p-0 text-sm !leading-none"
74
+ :aria-label="`Remove ${value}`"
75
+ :border="false"
76
+ :disabled="disabled || readonly"
77
+ tabindex="-1"
78
+ @click="removeVal(value)"
79
+ >
80
+ <WIcon><i-lucide-x/></WIcon>
81
+ </Wbutton>
82
+ </div>
83
+ </div>
84
+ </template>
85
+
86
+ <script setup>
87
+ import { removeIfIn } from "@alanscodelog/utils/removeIfIn";
88
+ import { computed, nextTick, ref, useAttrs } from "vue";
89
+ import ILucideX from "~icons/lucide/x";
90
+ import { copy } from "../../helpers/copy.js";
91
+ import { twMerge } from "../../utils/twMerge.js";
92
+ import WButton from "../WButton/WButton.vue";
93
+ import WIcon from "../WIcon/WIcon.vue";
94
+ defineOptions({
95
+ name: "WMultiValues",
96
+ inheritAttrs: false
97
+ });
98
+ const $attrs = useAttrs();
99
+ const props = defineProps({
100
+ disabled: { type: Boolean, required: false },
101
+ readonly: { type: Boolean, required: false },
102
+ border: { type: Boolean, required: false, default: true },
103
+ unstyle: { type: Boolean, required: false },
104
+ label: { type: String, required: false },
105
+ itemAttrs: { type: Object, required: false }
106
+ });
107
+ const canEdit = computed(() => !props.disabled && !props.readonly);
108
+ const $modelValue = defineModel({ type: Array, ...{ default: () => [] } });
109
+ const itemRefs = ref([]);
110
+ const activeIndex = ref(0);
111
+ function removeVal(value) {
112
+ if (!canEdit.value) return;
113
+ removeIfIn($modelValue.value, value);
114
+ if ($modelValue.value.length > 0) {
115
+ if (activeIndex.value >= $modelValue.value.length) {
116
+ activeIndex.value = $modelValue.value.length - 1;
117
+ }
118
+ nextTick(() => {
119
+ itemRefs.value[activeIndex.value]?.focus();
120
+ });
121
+ }
122
+ }
123
+ function handleKeydown(e) {
124
+ if (props.disabled) return;
125
+ const len = $modelValue.value.length;
126
+ if (len === 0) return;
127
+ if (e.key === "ArrowRight") {
128
+ activeIndex.value = (activeIndex.value + 1) % len;
129
+ itemRefs.value[activeIndex.value]?.focus();
130
+ e.preventDefault();
131
+ } else if (e.key === "ArrowLeft") {
132
+ activeIndex.value = (activeIndex.value - 1 + len) % len;
133
+ itemRefs.value[activeIndex.value]?.focus();
134
+ e.preventDefault();
135
+ } else if (e.key === "Delete" || e.key === "Backspace") {
136
+ if (canEdit.value) {
137
+ removeVal($modelValue.value[activeIndex.value]);
138
+ e.preventDefault();
139
+ }
140
+ } else if (e.key === "Home") {
141
+ activeIndex.value = 0;
142
+ itemRefs.value[activeIndex.value]?.focus();
143
+ e.preventDefault();
144
+ } else if (e.key === "End") {
145
+ activeIndex.value = len - 1;
146
+ itemRefs.value[activeIndex.value]?.focus();
147
+ e.preventDefault();
148
+ }
149
+ }
150
+ </script>
@@ -1,19 +1,11 @@
1
1
  import { type HTMLAttributes } from "vue";
2
- import type { BaseInteractiveProps, LabelProps, TailwindClassProp, WrapperProps } from "../shared/props.js";
3
- type WrapperTypes = Partial<WrapperProps<"item", HTMLAttributes>>;
4
- type RealProps = LabelProps & BaseInteractiveProps & {
5
- border?: boolean;
6
- };
7
- interface Props extends
8
- /** @vue-ignore */
9
- Partial<Omit<HTMLAttributes, "class"> & TailwindClassProp>,
10
- /** @vue-ignore */
11
- WrapperTypes, RealProps {
12
- }
13
- declare const _default: typeof __VLS_export;
14
- export default _default;
2
+ import type { BaseInteractiveProps, TailwindClassProp } from "../../types/index.js";
15
3
  declare const __VLS_export: <T extends string | number>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
16
- props: import("vue").PublicProps & __VLS_PrettifyLocal<(Props & {
4
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<(BaseInteractiveProps & {
5
+ label?: string;
6
+ border?: boolean;
7
+ itemAttrs?: Omit<HTMLAttributes, "class"> & TailwindClassProp;
8
+ } & Omit<HTMLAttributes, "class"> & TailwindClassProp & {
17
9
  modelValue?: T[];
18
10
  }) & {
19
11
  "onUpdate:modelValue"?: ((value: T[]) => any) | undefined;
@@ -27,6 +19,8 @@ declare const __VLS_export: <T extends string | number>(__VLS_props: NonNullable
27
19
  }>) => import("vue").VNode & {
28
20
  __ctx?: Awaited<typeof __VLS_setup>;
29
21
  };
22
+ declare const _default: typeof __VLS_export;
23
+ export default _default;
30
24
  type __VLS_PrettifyLocal<T> = (T extends any ? {
31
25
  [K in keyof T]: T[K];
32
26
  } : {
@@ -0,0 +1,37 @@
1
+ import { type HTMLAttributes } from "vue";
2
+ import { type NotificationEntry, NotificationHandler } from "../../helpers/NotificationHandler.js";
3
+ import type { TailwindClassProp } from "../../types/index.js";
4
+ type __VLS_Props = {
5
+ notification: NotificationEntry;
6
+ handler?: NotificationHandler;
7
+ } & /** @vue-ignore */ Omit<HTMLAttributes, "class"> & /** @vue-ignore */ TailwindClassProp;
8
+ declare var __VLS_1: {
9
+ notification: NotificationEntry;
10
+ }, __VLS_3: {
11
+ id: string;
12
+ title: string;
13
+ class: string;
14
+ }, __VLS_43: {
15
+ class: string;
16
+ message: string;
17
+ };
18
+ type __VLS_Slots = {} & {
19
+ top?: (props: typeof __VLS_1) => any;
20
+ } & {
21
+ title?: (props: typeof __VLS_3) => any;
22
+ } & {
23
+ message?: (props: typeof __VLS_43) => any;
24
+ };
25
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
26
+ focus: () => void;
27
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
28
+ handler: NotificationHandler;
29
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
30
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
31
+ declare const _default: typeof __VLS_export;
32
+ export default _default;
33
+ type __VLS_WithSlots<T, S> = T & {
34
+ new (): {
35
+ $slots: S;
36
+ };
37
+ };