@witchcraft/ui 0.4.0 → 0.4.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.
Files changed (316) hide show
  1. package/README.md +56 -61
  2. package/dist/module.d.mts +1 -1
  3. package/dist/module.json +1 -1
  4. package/dist/module.mjs +13 -9
  5. package/dist/runtime/assets/animations.css +1 -1
  6. package/dist/runtime/assets/locales/en.json +2 -0
  7. package/dist/runtime/assets/utils.css +1 -1
  8. package/dist/runtime/build/WitchcraftUiResolver.js +1 -2
  9. package/dist/runtime/components/TestControls/TestControls.d.vue.ts +2 -1
  10. package/dist/runtime/components/TestControls/TestControls.vue +3 -3
  11. package/dist/runtime/components/TestControls/TestControls.vue.d.ts +2 -1
  12. package/dist/runtime/components/WButton/WButton.d.vue.ts +34 -0
  13. package/dist/runtime/components/{LibButton/LibButton.vue → WButton/WButton.vue} +26 -38
  14. package/dist/runtime/components/WButton/WButton.vue.d.ts +34 -0
  15. package/dist/runtime/components/WCheckbox/WCheckbox.d.vue.ts +33 -0
  16. package/dist/runtime/components/WCheckbox/WCheckbox.vue +110 -0
  17. package/dist/runtime/components/WCheckbox/WCheckbox.vue.d.ts +33 -0
  18. package/dist/runtime/components/{LibColorInput/LibColorInput.d.vue.ts → WColorInput/WColorInput.d.vue.ts} +18 -36
  19. package/dist/runtime/components/WColorInput/WColorInput.vue +85 -0
  20. package/dist/runtime/components/{LibColorInput/LibColorInput.vue.d.ts → WColorInput/WColorInput.vue.d.ts} +18 -36
  21. package/dist/runtime/components/WColorInput/WColorSwatchButton.d.vue.ts +28 -0
  22. package/dist/runtime/components/WColorInput/WColorSwatchButton.vue +86 -0
  23. package/dist/runtime/components/WColorInput/WColorSwatchButton.vue.d.ts +28 -0
  24. package/dist/runtime/components/{LibColorPicker/LibColorPicker.d.vue.ts → WColorPicker/WColorPicker.d.vue.ts} +12 -9
  25. package/dist/runtime/components/{LibColorPicker/LibColorPicker.vue → WColorPicker/WColorPicker.vue} +41 -29
  26. package/dist/runtime/components/{LibColorPicker/LibColorPicker.vue.d.ts → WColorPicker/WColorPicker.vue.d.ts} +12 -9
  27. package/dist/runtime/components/WCombobox/WCombobox.d.vue.ts +111 -0
  28. package/dist/runtime/components/WCombobox/WCombobox.vue +405 -0
  29. package/dist/runtime/components/WCombobox/WCombobox.vue.d.ts +111 -0
  30. package/dist/runtime/components/WCombobox/storyPlays.d.ts +18 -0
  31. package/dist/runtime/components/WCombobox/storyPlays.js +68 -0
  32. package/dist/runtime/components/{LibDarkModeSwitcher/LibDarkModeSwitcher.d.vue.ts → WDarkModeSwitcher/WDarkModeSwitcher.d.vue.ts} +9 -13
  33. package/dist/runtime/components/{LibDarkModeSwitcher/LibDarkModeSwitcher.vue → WDarkModeSwitcher/WDarkModeSwitcher.vue} +11 -14
  34. package/dist/runtime/components/{LibDarkModeSwitcher/LibDarkModeSwitcher.vue.d.ts → WDarkModeSwitcher/WDarkModeSwitcher.vue.d.ts} +9 -13
  35. package/dist/runtime/components/{LibDatePicker/LibDatePicker.d.vue.ts → WDatePicker/WDatePicker.d.vue.ts} +7 -7
  36. package/dist/runtime/components/{LibDatePicker/LibDatePicker.vue → WDatePicker/WDatePicker.vue} +3 -7
  37. package/dist/runtime/components/{LibDatePicker/LibDatePicker.vue.d.ts → WDatePicker/WDatePicker.vue.d.ts} +7 -7
  38. package/dist/runtime/components/WDatePicker/WRangeDatePicker.d.vue.ts +182 -0
  39. package/dist/runtime/components/{LibDatePicker/LibRangeDatePicker.vue → WDatePicker/WRangeDatePicker.vue} +29 -25
  40. package/dist/runtime/components/WDatePicker/WRangeDatePicker.vue.d.ts +182 -0
  41. package/dist/runtime/components/{LibDatePicker/LibSingleDatePicker.d.vue.ts → WDatePicker/WSingleDatePicker.d.vue.ts} +7 -5
  42. package/dist/runtime/components/{LibDatePicker/LibSingleDatePicker.vue → WDatePicker/WSingleDatePicker.vue} +21 -21
  43. package/dist/runtime/components/{LibDatePicker/LibSingleDatePicker.vue.d.ts → WDatePicker/WSingleDatePicker.vue.d.ts} +7 -5
  44. package/dist/runtime/components/WDatePicker/WTimeZonePicker.d.vue.ts +13 -0
  45. package/dist/runtime/components/{LibDatePicker/LibTimeZonePicker.vue → WDatePicker/WTimeZonePicker.vue} +5 -12
  46. package/dist/runtime/components/WDatePicker/WTimeZonePicker.vue.d.ts +13 -0
  47. package/dist/runtime/components/{LibDebug/LibDebug.d.vue.ts → WDebug/WDebug.d.vue.ts} +3 -2
  48. package/dist/runtime/components/{LibDebug/LibDebug.vue → WDebug/WDebug.vue} +10 -12
  49. package/dist/runtime/components/{LibDebug/LibDebug.vue.d.ts → WDebug/WDebug.vue.d.ts} +3 -2
  50. package/dist/runtime/components/{LibDevOnly/LibDevOnly.d.vue.ts → WDevOnly/WDevOnly.d.vue.ts} +3 -5
  51. package/dist/runtime/components/{LibDevOnly/LibDevOnly.vue.d.ts → WDevOnly/WDevOnly.vue.d.ts} +3 -5
  52. package/dist/runtime/components/WFileInput/WFileInput.d.vue.ts +58 -0
  53. package/dist/runtime/components/WFileInput/WFileInput.vue +348 -0
  54. package/dist/runtime/components/WFileInput/WFileInput.vue.d.ts +58 -0
  55. package/dist/runtime/components/WIcon/WIcon.d.vue.ts +18 -0
  56. package/dist/runtime/components/{Icon/Icon.vue → WIcon/WIcon.vue} +1 -1
  57. package/dist/runtime/components/WIcon/WIcon.vue.d.ts +18 -0
  58. package/dist/runtime/components/WMultiValues/WMultiValues.d.vue.ts +28 -0
  59. package/dist/runtime/components/WMultiValues/WMultiValues.vue +150 -0
  60. package/dist/runtime/components/WMultiValues/WMultiValues.vue.d.ts +28 -0
  61. package/dist/runtime/components/WNotifications/WNotification.d.vue.ts +37 -0
  62. package/dist/runtime/components/{LibNotifications/LibNotification.vue → WNotifications/WNotification.vue} +61 -35
  63. package/dist/runtime/components/WNotifications/WNotification.vue.d.ts +37 -0
  64. package/dist/runtime/components/WNotifications/WNotificationTestMessageComponent.d.vue.ts +7 -0
  65. package/dist/runtime/components/WNotifications/WNotificationTestMessageComponent.vue +29 -0
  66. package/dist/runtime/components/WNotifications/WNotificationTestMessageComponent.vue.d.ts +7 -0
  67. package/dist/runtime/components/WNotifications/WNotifications.d.vue.ts +11 -0
  68. package/dist/runtime/components/{LibNotifications/LibNotifications.vue → WNotifications/WNotifications.vue} +72 -36
  69. package/dist/runtime/components/WNotifications/WNotifications.vue.d.ts +11 -0
  70. package/dist/runtime/components/WNotifications/calculateNotificationProgress.d.ts +2 -0
  71. package/dist/runtime/components/WNotifications/calculateNotificationProgress.js +4 -0
  72. package/dist/runtime/components/WNumberInput/WNumberInput.d.vue.ts +27 -0
  73. package/dist/runtime/components/WNumberInput/WNumberInput.vue +96 -0
  74. package/dist/runtime/components/WNumberInput/WNumberInput.vue.d.ts +27 -0
  75. package/dist/runtime/components/WPagination/WPagination.d.vue.ts +59 -0
  76. package/dist/runtime/components/WPagination/WPagination.vue +182 -0
  77. package/dist/runtime/components/WPagination/WPagination.vue.d.ts +59 -0
  78. package/dist/runtime/components/WPalette/WPalette.d.vue.ts +11 -0
  79. package/dist/runtime/components/{LibPalette/LibPalette.vue → WPalette/WPalette.vue} +3 -8
  80. package/dist/runtime/components/WPalette/WPalette.vue.d.ts +11 -0
  81. package/dist/runtime/components/WPopover/WPopover.d.vue.ts +45 -0
  82. package/dist/runtime/components/WPopover/WPopover.vue +144 -0
  83. package/dist/runtime/components/WPopover/WPopover.vue.d.ts +45 -0
  84. package/dist/runtime/components/WPopup/WPopup.d.vue.ts +51 -0
  85. package/dist/runtime/components/WPopup/WPopup.vue +115 -0
  86. package/dist/runtime/components/WPopup/WPopup.vue.d.ts +51 -0
  87. package/dist/runtime/components/{LibProgressBar/LibProgressBar.d.vue.ts → WProgressBar/WProgressBar.d.vue.ts} +13 -16
  88. package/dist/runtime/components/WProgressBar/WProgressBar.vue +150 -0
  89. package/dist/runtime/components/{LibProgressBar/LibProgressBar.vue.d.ts → WProgressBar/WProgressBar.vue.d.ts} +13 -16
  90. package/dist/runtime/components/{LibRecorder/LibRecorder.d.vue.ts → WRecorder/WRecorder.d.vue.ts} +13 -27
  91. package/dist/runtime/components/{LibRecorder/LibRecorder.vue → WRecorder/WRecorder.vue} +37 -36
  92. package/dist/runtime/components/{LibRecorder/LibRecorder.vue.d.ts → WRecorder/WRecorder.vue.d.ts} +13 -27
  93. package/dist/runtime/components/{LibRoot/LibRoot.d.vue.ts → WRoot/WRoot.d.vue.ts} +11 -9
  94. package/dist/runtime/components/{LibRoot/LibRoot.vue → WRoot/WRoot.vue} +17 -15
  95. package/dist/runtime/components/{LibRoot/LibRoot.vue.d.ts → WRoot/WRoot.vue.d.ts} +11 -9
  96. package/dist/runtime/components/WSimpleInput/WSimpleInput.d.vue.ts +34 -0
  97. package/dist/runtime/components/{LibSimpleInput/LibSimpleInput.vue → WSimpleInput/WSimpleInput.vue} +14 -24
  98. package/dist/runtime/components/WSimpleInput/WSimpleInput.vue.d.ts +34 -0
  99. package/dist/runtime/components/WTable/WTable.d.vue.ts +102 -0
  100. package/dist/runtime/components/WTable/WTable.vue +370 -0
  101. package/dist/runtime/components/WTable/WTable.vue.d.ts +102 -0
  102. package/dist/runtime/components/WTooltip/WTooltip.d.vue.ts +40 -0
  103. package/dist/runtime/components/WTooltip/WTooltip.vue +112 -0
  104. package/dist/runtime/components/WTooltip/WTooltip.vue.d.ts +40 -0
  105. package/dist/runtime/components/index.d.ts +20 -20
  106. package/dist/runtime/components/index.js +20 -20
  107. package/dist/runtime/composables/index.d.ts +4 -4
  108. package/dist/runtime/composables/index.js +4 -4
  109. package/dist/runtime/composables/useDelayedLoadingIndicator.d.ts +9 -0
  110. package/dist/runtime/composables/useDelayedLoadingIndicator.js +18 -0
  111. package/dist/runtime/composables/useDisplayForReka.d.ts +25 -0
  112. package/dist/runtime/composables/useDisplayForReka.js +16 -0
  113. package/dist/runtime/composables/useFallbackId.d.ts +3 -0
  114. package/dist/runtime/composables/useFallbackId.js +5 -0
  115. package/dist/runtime/composables/useInjectedDarkMode.d.ts +1 -1
  116. package/dist/runtime/composables/usePopupConstrainToStyle.d.ts +8 -0
  117. package/dist/runtime/composables/usePopupConstrainToStyle.js +8 -0
  118. package/dist/runtime/composables/useSetupDarkMode.d.ts +2 -3
  119. package/dist/runtime/composables/useSetupDarkMode.js +90 -4
  120. package/dist/runtime/composables/useTimeConditionally.d.ts +16 -0
  121. package/dist/runtime/composables/useTimeConditionally.js +27 -0
  122. package/dist/runtime/directives/vResizableCols.js +101 -34
  123. package/dist/runtime/helpers/NotificationHandler.d.ts +28 -3
  124. package/dist/runtime/helpers/NotificationHandler.js +7 -10
  125. package/dist/runtime/injectionKeys.d.ts +1 -5
  126. package/dist/runtime/injectionKeys.js +0 -2
  127. package/dist/runtime/types/index.d.ts +97 -31
  128. package/dist/runtime/types/index.js +1 -0
  129. package/dist/runtime/utils/notifyIfError.d.ts +3 -1
  130. package/dist/runtime/utils/notifyIfError.js +4 -2
  131. package/dist/runtime/utils/twMerge.d.ts +1 -0
  132. package/dist/runtime/utils/twMerge.js +2 -1
  133. package/package.json +59 -56
  134. package/src/module.ts +16 -8
  135. package/src/runtime/assets/animations.css +53 -6
  136. package/src/runtime/assets/locales/en.json +2 -0
  137. package/src/runtime/assets/tailwind.css +1 -1
  138. package/src/runtime/assets/utils.css +52 -4
  139. package/src/runtime/build/WitchcraftUiResolver.ts +1 -2
  140. package/src/runtime/components/TestControls/TestControls.vue +3 -3
  141. package/src/runtime/components/WButton/WButton.stories.ts +112 -0
  142. package/src/runtime/components/{LibButton/LibButton.vue → WButton/WButton.vue} +34 -50
  143. package/src/runtime/components/{LibCheckbox/LibCheckbox.stories.ts → WCheckbox/WCheckbox.stories.ts} +5 -5
  144. package/src/runtime/components/WCheckbox/WCheckbox.vue +125 -0
  145. package/src/runtime/components/{LibColorInput/LibColorInput.stories.ts → WColorInput/WColorInput.stories.ts} +8 -8
  146. package/src/runtime/components/WColorInput/WColorInput.vue +112 -0
  147. package/src/runtime/components/WColorInput/WColorSwatchButton.vue +102 -0
  148. package/src/runtime/components/{LibColorPicker/LibColorPicker.stories.ts → WColorPicker/WColorPicker.stories.ts} +12 -12
  149. package/src/runtime/components/{LibColorPicker/LibColorPicker.vue → WColorPicker/WColorPicker.vue} +44 -31
  150. package/src/runtime/components/WCombobox/WCombobox.stories.ts +209 -0
  151. package/src/runtime/components/WCombobox/WCombobox.vue +450 -0
  152. package/src/runtime/components/WCombobox/storyPlays.ts +92 -0
  153. package/src/runtime/components/{LibDarkModeSwitcher/LibDarkModeSwitcher.stories.ts → WDarkModeSwitcher/WDarkModeSwitcher.stories.ts} +6 -6
  154. package/src/runtime/components/{LibDarkModeSwitcher/LibDarkModeSwitcher.vue → WDarkModeSwitcher/WDarkModeSwitcher.vue} +19 -30
  155. package/src/runtime/components/{LibDatePicker/LibDatePicker.stories.ts → WDatePicker/WDatePicker.stories.ts} +42 -34
  156. package/src/runtime/components/{LibDatePicker/LibDatePicker.vue → WDatePicker/WDatePicker.vue} +3 -7
  157. package/src/runtime/components/{LibDatePicker/LibRangeDatePicker.vue → WDatePicker/WRangeDatePicker.vue} +29 -25
  158. package/src/runtime/components/{LibDatePicker/LibSingleDatePicker.vue → WDatePicker/WSingleDatePicker.vue} +21 -21
  159. package/src/runtime/components/{LibDatePicker/LibTimeZonePicker.vue → WDatePicker/WTimeZonePicker.vue} +5 -12
  160. package/src/runtime/components/{LibDebug/LibDebug.stories.ts → WDebug/WDebug.stories.ts} +5 -5
  161. package/src/runtime/components/{LibDebug/LibDebug.vue → WDebug/WDebug.vue} +9 -10
  162. package/src/runtime/components/{LibDevOnly/LibDevOnly.vue → WDevOnly/WDevOnly.vue} +0 -4
  163. package/src/runtime/components/{LibFileInput/LibFileInput.stories.ts → WFileInput/WFileInput.stories.ts} +20 -10
  164. package/src/runtime/components/WFileInput/WFileInput.vue +392 -0
  165. package/src/runtime/components/{Icon/Icon.vue → WIcon/WIcon.vue} +5 -8
  166. package/src/runtime/components/{LibMultiValues/LibMultiValues.stories.ts → WMultiValues/WMultiValues.stories.ts} +9 -9
  167. package/src/runtime/components/WMultiValues/WMultiValues.vue +163 -0
  168. package/src/runtime/components/{LibNotifications/LibNotification.stories.ts → WNotifications/WNotification.stories.ts} +42 -6
  169. package/src/runtime/components/{LibNotifications/LibNotification.vue → WNotifications/WNotification.vue} +72 -45
  170. package/src/runtime/components/WNotifications/WNotificationTestMessageComponent.vue +27 -0
  171. package/src/runtime/components/WNotifications/WNotifications.stories.ts +139 -0
  172. package/src/runtime/components/{LibNotifications/LibNotifications.vue → WNotifications/WNotifications.vue} +87 -47
  173. package/src/runtime/components/WNotifications/calculateNotificationProgress.ts +8 -0
  174. package/src/runtime/components/WNumberInput/WNumberInput.vue +109 -0
  175. package/src/runtime/components/WPagination/WPagination.stories.ts +51 -0
  176. package/src/runtime/components/WPagination/WPagination.vue +207 -0
  177. package/src/runtime/components/{LibPalette/LibPalette.stories.ts → WPalette/WPalette.stories.ts} +6 -6
  178. package/src/runtime/components/{LibPalette/LibPalette.vue → WPalette/WPalette.vue} +3 -8
  179. package/src/runtime/components/WPopover/WPopover.stories.ts +218 -0
  180. package/src/runtime/components/WPopover/WPopover.vue +168 -0
  181. package/src/runtime/components/WPopup/WPopup.stories.ts +104 -0
  182. package/src/runtime/components/WPopup/WPopup.vue +134 -0
  183. package/src/runtime/components/WProgressBar/WProgressBar.stories.ts +119 -0
  184. package/src/runtime/components/WProgressBar/WProgressBar.vue +185 -0
  185. package/src/runtime/components/{LibRecorder/LibRecorder.stories.ts → WRecorder/WRecorder.stories.ts} +9 -6
  186. package/src/runtime/components/{LibRecorder/LibRecorder.vue → WRecorder/WRecorder.vue} +69 -68
  187. package/src/runtime/components/{LibRoot/LibRoot.vue → WRoot/WRoot.vue} +18 -15
  188. package/src/runtime/components/{LibSimpleInput/LibSimpleInput.stories.ts → WSimpleInput/WSimpleInput.stories.ts} +11 -12
  189. package/src/runtime/components/{LibSimpleInput/LibSimpleInput.vue → WSimpleInput/WSimpleInput.vue} +28 -42
  190. package/src/runtime/components/WTable/WTable.stories.ts +334 -0
  191. package/src/runtime/components/WTable/WTable.vue +471 -0
  192. package/src/runtime/components/WTooltip/WTooltip.stories.ts +82 -0
  193. package/src/runtime/components/WTooltip/WTooltip.vue +128 -0
  194. package/src/runtime/components/index.ts +20 -20
  195. package/src/runtime/composables/index.ts +4 -4
  196. package/src/runtime/composables/useDelayedLoadingIndicator.ts +30 -0
  197. package/src/runtime/composables/useDisplayForReka.ts +37 -0
  198. package/src/runtime/composables/useFallbackId.ts +6 -0
  199. package/src/runtime/composables/useInjectedDarkMode.ts +1 -2
  200. package/src/runtime/composables/usePopupConstrainToStyle.ts +29 -0
  201. package/src/runtime/composables/useSetupDarkMode.ts +122 -4
  202. package/src/runtime/composables/useTimeConditionally.ts +51 -0
  203. package/src/runtime/directives/vResizableCols.ts +121 -38
  204. package/src/runtime/helpers/NotificationHandler.ts +30 -11
  205. package/src/runtime/injectionKeys.ts +1 -7
  206. package/src/runtime/types/index.ts +118 -36
  207. package/src/runtime/utils/notifyIfError.ts +6 -2
  208. package/src/runtime/utils/twMerge.ts +2 -1
  209. package/types/components.d.ts +14 -15
  210. package/dist/runtime/components/Aria/Aria.d.vue.ts +0 -5
  211. package/dist/runtime/components/Aria/Aria.vue +0 -16
  212. package/dist/runtime/components/Aria/Aria.vue.d.ts +0 -5
  213. package/dist/runtime/components/Icon/Icon.d.vue.ts +0 -21
  214. package/dist/runtime/components/Icon/Icon.vue.d.ts +0 -21
  215. package/dist/runtime/components/LibButton/LibButton.d.vue.ts +0 -36
  216. package/dist/runtime/components/LibButton/LibButton.vue.d.ts +0 -36
  217. package/dist/runtime/components/LibCheckbox/LibCheckbox.d.vue.ts +0 -42
  218. package/dist/runtime/components/LibCheckbox/LibCheckbox.vue +0 -103
  219. package/dist/runtime/components/LibCheckbox/LibCheckbox.vue.d.ts +0 -42
  220. package/dist/runtime/components/LibColorInput/LibColorInput.vue +0 -162
  221. package/dist/runtime/components/LibDatePicker/LibRangeDatePicker.d.vue.ts +0 -34
  222. package/dist/runtime/components/LibDatePicker/LibRangeDatePicker.vue.d.ts +0 -34
  223. package/dist/runtime/components/LibDatePicker/LibTimeZonePicker.d.vue.ts +0 -22
  224. package/dist/runtime/components/LibDatePicker/LibTimeZonePicker.vue.d.ts +0 -22
  225. package/dist/runtime/components/LibFileInput/LibFileInput.d.vue.ts +0 -43
  226. package/dist/runtime/components/LibFileInput/LibFileInput.vue +0 -274
  227. package/dist/runtime/components/LibFileInput/LibFileInput.vue.d.ts +0 -43
  228. package/dist/runtime/components/LibInputDeprecated/LibInputDeprecated.d.vue.ts +0 -165
  229. package/dist/runtime/components/LibInputDeprecated/LibInputDeprecated.vue +0 -387
  230. package/dist/runtime/components/LibInputDeprecated/LibInputDeprecated.vue.d.ts +0 -165
  231. package/dist/runtime/components/LibLabel/LibLabel.d.vue.ts +0 -26
  232. package/dist/runtime/components/LibLabel/LibLabel.vue +0 -45
  233. package/dist/runtime/components/LibLabel/LibLabel.vue.d.ts +0 -26
  234. package/dist/runtime/components/LibMultiValues/LibMultiValues.d.vue.ts +0 -29
  235. package/dist/runtime/components/LibMultiValues/LibMultiValues.vue +0 -109
  236. package/dist/runtime/components/LibMultiValues/LibMultiValues.vue.d.ts +0 -29
  237. package/dist/runtime/components/LibNotifications/LibNotification.d.vue.ts +0 -30
  238. package/dist/runtime/components/LibNotifications/LibNotification.vue.d.ts +0 -30
  239. package/dist/runtime/components/LibNotifications/LibNotifications.d.vue.ts +0 -13
  240. package/dist/runtime/components/LibNotifications/LibNotifications.vue.d.ts +0 -13
  241. package/dist/runtime/components/LibPagination/LibPagination.d.vue.ts +0 -104
  242. package/dist/runtime/components/LibPagination/LibPagination.vue +0 -229
  243. package/dist/runtime/components/LibPagination/LibPagination.vue.d.ts +0 -104
  244. package/dist/runtime/components/LibPalette/LibPalette.d.vue.ts +0 -14
  245. package/dist/runtime/components/LibPalette/LibPalette.vue.d.ts +0 -14
  246. package/dist/runtime/components/LibPopup/LibPopup.d.vue.ts +0 -46
  247. package/dist/runtime/components/LibPopup/LibPopup.vue +0 -365
  248. package/dist/runtime/components/LibPopup/LibPopup.vue.d.ts +0 -46
  249. package/dist/runtime/components/LibProgressBar/LibProgressBar.vue +0 -169
  250. package/dist/runtime/components/LibSimpleInput/LibSimpleInput.d.vue.ts +0 -35
  251. package/dist/runtime/components/LibSimpleInput/LibSimpleInput.vue.d.ts +0 -35
  252. package/dist/runtime/components/LibSuggestions/LibSuggestions.d.vue.ts +0 -94
  253. package/dist/runtime/components/LibSuggestions/LibSuggestions.vue +0 -178
  254. package/dist/runtime/components/LibSuggestions/LibSuggestions.vue.d.ts +0 -94
  255. package/dist/runtime/components/LibTable/LibTable.d.vue.ts +0 -45
  256. package/dist/runtime/components/LibTable/LibTable.vue +0 -155
  257. package/dist/runtime/components/LibTable/LibTable.vue.d.ts +0 -45
  258. package/dist/runtime/components/Template/NAME.d.vue.ts +0 -17
  259. package/dist/runtime/components/Template/NAME.vue +0 -27
  260. package/dist/runtime/components/Template/NAME.vue.d.ts +0 -17
  261. package/dist/runtime/components/Template/TemplateStory.d.ts +0 -7
  262. package/dist/runtime/components/Template/TemplateStory.js +0 -22
  263. package/dist/runtime/components/shared/props.d.ts +0 -171
  264. package/dist/runtime/components/shared/props.js +0 -2
  265. package/dist/runtime/composables/useAriaLabel.d.ts +0 -6
  266. package/dist/runtime/composables/useAriaLabel.js +0 -15
  267. package/dist/runtime/composables/useDarkMode.d.ts +0 -77
  268. package/dist/runtime/composables/useDarkMode.js +0 -89
  269. package/dist/runtime/composables/useDivideAttrs.d.ts +0 -27
  270. package/dist/runtime/composables/useDivideAttrs.js +0 -27
  271. package/dist/runtime/composables/useSuggestions.d.ts +0 -40
  272. package/dist/runtime/composables/useSuggestions.js +0 -263
  273. package/src/runtime/components/Aria/Aria.vue +0 -26
  274. package/src/runtime/components/LibButton/LibButton.stories.ts +0 -106
  275. package/src/runtime/components/LibCheckbox/LibCheckbox.vue +0 -129
  276. package/src/runtime/components/LibColorInput/LibColorInput.vue +0 -203
  277. package/src/runtime/components/LibFileInput/LibFileInput.vue +0 -320
  278. package/src/runtime/components/LibInputDeprecated/LibInputDeprecated.stories.ts +0 -405
  279. package/src/runtime/components/LibInputDeprecated/LibInputDeprecated.vue +0 -414
  280. package/src/runtime/components/LibLabel/LibLabel.stories.ts +0 -33
  281. package/src/runtime/components/LibLabel/LibLabel.vue +0 -65
  282. package/src/runtime/components/LibMultiValues/LibMultiValues.vue +0 -123
  283. package/src/runtime/components/LibNotifications/LibNotifications.stories.ts +0 -120
  284. package/src/runtime/components/LibPagination/LibPagination.stories.ts +0 -49
  285. package/src/runtime/components/LibPagination/LibPagination.vue +0 -274
  286. package/src/runtime/components/LibPopup/LibPopup.stories.ts +0 -153
  287. package/src/runtime/components/LibPopup/LibPopup.vue +0 -396
  288. package/src/runtime/components/LibProgressBar/LibProgressBar.stories.ts +0 -90
  289. package/src/runtime/components/LibProgressBar/LibProgressBar.vue +0 -197
  290. package/src/runtime/components/LibSuggestions/LibSuggestions.stories.ts +0 -134
  291. package/src/runtime/components/LibSuggestions/LibSuggestions.vue +0 -212
  292. package/src/runtime/components/LibTable/LibTable.stories.ts +0 -167
  293. package/src/runtime/components/LibTable/LibTable.vue +0 -190
  294. package/src/runtime/components/Template/NAME.vue +0 -49
  295. package/src/runtime/components/Template/TemplateStory.ts +0 -37
  296. package/src/runtime/components/shared/props.ts +0 -199
  297. package/src/runtime/composables/useAriaLabel.ts +0 -23
  298. package/src/runtime/composables/useDarkMode.ts +0 -199
  299. package/src/runtime/composables/useDivideAttrs.ts +0 -53
  300. package/src/runtime/composables/useSuggestions.ts +0 -339
  301. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToHsva.d.ts +0 -0
  302. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToHsva.js +0 -0
  303. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToRgba.d.ts +0 -0
  304. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToRgba.js +0 -0
  305. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/toLowPrecisionRgbaString.d.ts +0 -0
  306. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/toLowPrecisionRgbaString.js +0 -0
  307. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/truncate.d.ts +0 -0
  308. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/truncate.js +0 -0
  309. /package/dist/runtime/components/{LibDatePicker → WDatePicker}/helpers.d.ts +0 -0
  310. /package/dist/runtime/components/{LibDatePicker → WDatePicker}/helpers.js +0 -0
  311. /package/dist/runtime/components/{LibDevOnly/LibDevOnly.vue → WDevOnly/WDevOnly.vue} +0 -0
  312. /package/src/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToHsva.ts +0 -0
  313. /package/src/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToRgba.ts +0 -0
  314. /package/src/runtime/components/{LibColorPicker → WColorPicker}/utils/toLowPrecisionRgbaString.ts +0 -0
  315. /package/src/runtime/components/{LibColorPicker → WColorPicker}/utils/truncate.ts +0 -0
  316. /package/src/runtime/components/{LibDatePicker → WDatePicker}/helpers.ts +0 -0
@@ -0,0 +1,112 @@
1
+ <template>
2
+ <WPopover
3
+ :root-props="{
4
+ class: 'color-input--popover-root',
5
+ ...rootProps
6
+ }"
7
+ :content-props="{
8
+ onInteractOutside: () => { $tempValue = undefined;emit('cancel') }
9
+ }"
10
+ v-model="showPopover"
11
+ >
12
+ <template #button>
13
+ <WColorSwatchButton
14
+ :id="finalId"
15
+ :temp-value="$tempValue"
16
+ :value="$value"
17
+ @click="togglePopover"
18
+ />
19
+ </template>
20
+ <template #popover>
21
+ <div
22
+ class="color-input--popover-wrapper p-5"
23
+ >
24
+ <WColorPicker
25
+ v-if="showPopover"
26
+ :id="finalId"
27
+ :allow-alpha="allowAlpha"
28
+ :custom-representation="customRepresentation"
29
+ :string-precision="stringPrecision"
30
+ v-model="internalTempValue"
31
+ v-model:temp-value="$tempValue"
32
+ @save="save"
33
+ @cancel="cancel"
34
+ />
35
+ </div>
36
+ </template>
37
+ </Wpopover>
38
+ </template>
39
+
40
+ <script setup lang="ts">
41
+ import type { DialogRootEmits, PopoverRootProps } from "reka-ui"
42
+ import { type ButtonHTMLAttributes, type EmitsToProps, type HTMLAttributes, ref } from "vue"
43
+
44
+ import WColorSwatchButton from "./WColorSwatchButton.vue"
45
+
46
+ import { useFallbackId } from "../../composables/useFallbackId.js"
47
+ import type { HsvaColor, RgbaColor, TailwindClassProp } from "../../types/index.js"
48
+ import WColorPicker from "../WColorPicker/WColorPicker.vue"
49
+ import WPopover from "../WPopover/WPopover.vue"
50
+
51
+ defineOptions({
52
+ name: "WColorInput"
53
+ })
54
+ const props = withDefaults(defineProps<
55
+ & {
56
+ id?: string
57
+ label?: string
58
+ allowAlpha?: boolean
59
+ border?: boolean
60
+ /** See ColorPicker.copyTransform */
61
+ copyTransform?: (val: HsvaColor, stringVal: string) => any
62
+ /** See ColorPicker.allowAlpha */
63
+ stringPrecision?: number
64
+ /** See ColorPicker.customRepresentation */
65
+ customRepresentation?: {
66
+ fromHsvaToString: (hsva: HsvaColor, includeAlpha: boolean) => string
67
+ }
68
+ rootProps?: PopoverRootProps & EmitsToProps<DialogRootEmits> & Omit<HTMLAttributes, "class"> & TailwindClassProp
69
+ }
70
+ & /** @vue-ignore */ Omit<ButtonHTMLAttributes, "class">
71
+ & /** @vue-ignore */ TailwindClassProp
72
+ >(), {
73
+ allowAlpha: true,
74
+ border: true,
75
+ copyTransform: (_val: HsvaColor, stringVal: string) => stringVal,
76
+ stringPrecision: 3,
77
+ customRepresentation: undefined
78
+ })
79
+ const finalId = useFallbackId(props)
80
+
81
+ const emit = defineEmits<{
82
+ (e: "save"): void
83
+ (e: "cancel"): void
84
+ }>()
85
+
86
+
87
+ const $value = defineModel<RgbaColor>({ required: false, default: () => ({ r: 0, g: 0, b: 0 }) })
88
+ const $tempValue = defineModel<RgbaColor | undefined>("tempValue", { required: false, default: () => (undefined) })
89
+
90
+ const internalTempValue = ref({ ...$value.value })
91
+
92
+ const showPopover = ref(false)
93
+
94
+ const togglePopover = (): void => {
95
+ if (showPopover.value) {
96
+ $value.value = internalTempValue.value
97
+ }
98
+ showPopover.value = !showPopover.value
99
+ }
100
+
101
+ function save() {
102
+ $value.value = internalTempValue.value
103
+ showPopover.value = false
104
+ $tempValue.value = undefined
105
+ emit("save")
106
+ }
107
+ function cancel() {
108
+ showPopover.value = false
109
+ $tempValue.value = undefined
110
+ emit("cancel")
111
+ }
112
+ </script>
@@ -0,0 +1,102 @@
1
+ <template>
2
+ <WButton
3
+ :id="id"
4
+ :class="twMerge(`
5
+ color-input--button
6
+ p-0
7
+ flex
8
+ flex-nowrap
9
+ min-w-4
10
+ overflow-hidden
11
+ [&_.button--label]:items-stretch
12
+ [&_.button--label]:gap-0
13
+ after:hidden
14
+ `,
15
+ ($attrs as any).class
16
+ )"
17
+ :aria-label="t('color-input.aria-and-title-prefix') + stringColor"
18
+ :title="t('color-input.aria-and-title-prefix') + stringColor"
19
+ v-bind="{ ...$attrs, class: undefined }"
20
+ >
21
+ <template #label>
22
+ <div
23
+ class="
24
+ color-input--swatch-wrapper
25
+ flex
26
+ w-full
27
+ "
28
+ >
29
+ <slot v-bind="{ stringColor, classes: swatchClasses }">
30
+ <div
31
+ :class="swatchClasses"
32
+ :style="`background:${stringColor}`"
33
+ />
34
+ </slot>
35
+ <slot
36
+ v-if="tempValue"
37
+ v-bind="{ tempStringColor, classes: swatchClasses }"
38
+ name="temp"
39
+ >
40
+ <div
41
+ :class="swatchClasses"
42
+ :style="`background:${tempStringColor}`"
43
+ />
44
+ </slot>
45
+ </div>
46
+ </template>
47
+ </Wbutton>
48
+ </template>
49
+
50
+ <script setup lang="ts">
51
+ import Color from "colorjs.io"
52
+ import { type ButtonHTMLAttributes, computed, useAttrs } from "vue"
53
+
54
+ import { useInjectedI18n } from "../../composables/useInjectedI18n.js"
55
+ import type { RgbaColor, TailwindClassProp } from "../../types/index.js"
56
+ import { twMerge } from "../../utils/twMerge.js"
57
+ import WButton from "../WButton/WButton.vue"
58
+
59
+
60
+ const $attrs = useAttrs()
61
+
62
+ const t = useInjectedI18n()
63
+
64
+ const props = withDefaults(defineProps<
65
+ & {
66
+ id?: string
67
+ tempValue: RgbaColor | undefined
68
+ value: RgbaColor
69
+ }
70
+ & /** @vue-ignore */ Omit<ButtonHTMLAttributes, "class" | "value">
71
+ & /** @vue-ignore */ TailwindClassProp
72
+ >(), {
73
+ })
74
+
75
+ const swatchClasses = `
76
+ color-input--swatch
77
+ after:content-vertical-holder
78
+ min-w-4
79
+ flex-1
80
+ relative
81
+ before:content-['']
82
+ before:absolute
83
+ before:inset-0
84
+ before:bg-transparency-squares
85
+ before:z-[-1]
86
+ `
87
+
88
+
89
+ const stringColor = computed(() => new Color("srgb", [
90
+ props.value.r / 255,
91
+ props.value.g / 255,
92
+ props.value.b / 255
93
+ ], props.value.a ?? 1).toString())
94
+
95
+ const tempStringColor = computed(() => props.tempValue
96
+ ? new Color("srgb", [
97
+ props.tempValue.r / 255,
98
+ props.tempValue.g / 255,
99
+ props.tempValue.b / 255
100
+ ], props.tempValue.a ?? 1).toString()
101
+ : "")
102
+ </script>
@@ -3,12 +3,12 @@ import type { Meta, StoryObj } from "@storybook/vue3"
3
3
  import Color from "colorjs.io"
4
4
  import { ref } from "vue"
5
5
 
6
- import LibColorPicker from "./LibColorPicker.vue"
6
+ import WColorPicker from "./WColorPicker.vue"
7
7
 
8
8
  import * as components from "../index.js"
9
9
 
10
- const meta: Meta<typeof LibColorPicker> = {
11
- component: LibColorPicker,
10
+ const meta: Meta<typeof WColorPicker> = {
11
+ component: WColorPicker,
12
12
  title: "Components/ColorPicker",
13
13
  args: {
14
14
 
@@ -16,7 +16,7 @@ const meta: Meta<typeof LibColorPicker> = {
16
16
  }
17
17
 
18
18
  export default meta
19
- type Story = StoryObj<typeof LibColorPicker>
19
+ type Story = StoryObj<typeof WColorPicker>
20
20
 
21
21
  export const Primary: Story = {
22
22
  render: args => ({
@@ -38,15 +38,15 @@ export const Primary: Story = {
38
38
  }
39
39
  },
40
40
  template: `
41
- <lib-root :outline="args.outline">
42
- {{args.color}}
43
- <lib-color-picker
44
- :modelValue="args.color.value"
41
+ <WRoot :outline="args.outline">
42
+ {{args.color}}
43
+ <WColorPicker
44
+ :modelValue="args.color.value"
45
45
  v-bind="args"
46
- @update:modelValue="handleChange"
47
- >
48
- </lib-color-picker>
49
- </lib-root>
46
+ @update:modelValue="handleChange"
47
+ >
48
+ </WColorPicker>
49
+ </WRoot>
50
50
  `
51
51
  })
52
52
  }
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div
3
- :id="id ?? fallbackId"
3
+ :id="finalId"
4
4
  :aria-label="t('color-picker.aria')"
5
5
  :class="twMerge(`color-picker
6
6
  [--slider-size:calc(var(--spacing)_*_4)]
@@ -11,7 +11,7 @@
11
11
  max-w-[300px]
12
12
  flex flex-col items-center justify-center
13
13
  bg-neutral-50
14
- dark:bg-neutral-950
14
+ dark:bg-neutral-800
15
15
  gap-3
16
16
  p-3
17
17
  `,
@@ -20,7 +20,12 @@
20
20
  [--bg:rgb(var(--contrast-dark))]
21
21
  `,
22
22
  border && `
23
- border rounded-sm border-neutral-600
23
+ border
24
+ rounded-sm
25
+ border-neutral-300
26
+ dark:border-neutral-900
27
+ shadow-md
28
+ shadow-black/30
24
29
  `,
25
30
  ($attrs as any)?.class
26
31
  )"
@@ -43,9 +48,9 @@
43
48
  ref="pickerEl"
44
49
  />
45
50
  <div
46
- aria-live="assertive"
51
+ role="slider"
47
52
  :aria-description="ariaDescription"
48
- :aria-label="`${t('color-picker.aria.saturation')}: ${localColor.percent.s}, ${t('color-picker.aria.value')}: ${localColor.percent.s}`"
53
+ :aria-valuetext="`${t('color-picker.aria.saturation')}: ${localColor.percent.s}, ${t('color-picker.aria.value')}: ${localColor.percent.v}`"
49
54
  :class="`
50
55
  color-picker--all-handle
51
56
  ${handleClasses}
@@ -102,7 +107,7 @@
102
107
  <div
103
108
  role="slider"
104
109
  :aria-label="t('color-picker.aria.alpha-slider')"
105
- :aria-valuenow="`${localColor.percent.h}`"
110
+ :aria-valuenow="`${localColor.percent.a}`"
106
111
  :aria-valuemin="0"
107
112
  :aria-valuemax="100"
108
113
  :aria-description="ariaDescription"
@@ -137,7 +142,7 @@
137
142
  </div>
138
143
  <div class="color-picker--input-group flex flex-1 items-center gap-2">
139
144
  <slot name="input">
140
- <lib-simple-input
145
+ <WSimpleInput
141
146
  :valid="valid"
142
147
  class="color-picker--input w-full"
143
148
  :aria-label="label"
@@ -145,30 +150,30 @@
145
150
  @input="parseInput"
146
151
  @blur="onBlurFixInvalidValue"
147
152
  />
148
- <lib-button
153
+ <WButton
149
154
  class="color-picker--copy-button"
150
155
  :aria-label="t('copy')"
151
156
  @click="copy(copyTransform?.(localColor.val, localColorString) ?? localColorString)"
152
157
  >
153
- <icon><i-fa6-regular-copy/></icon>
154
- </lib-button>
158
+ <WIcon><i-lucide-copy/></WIcon>
159
+ </Wbutton>
155
160
  </slot>
156
161
  </div>
157
162
  </div>
158
163
  <slot name="buttons">
159
164
  <div class="color-picker--save-cancel-group flex w-full items-center justify-center gap-2">
160
- <lib-button
165
+ <WButton
161
166
  class="color-picker--save-button"
162
167
  @click="save()"
163
168
  >
164
169
  {{ t("save") }}
165
- </lib-button>
166
- <lib-button
170
+ </Wbutton>
171
+ <WButton
167
172
  class="color-picker--cancel-button"
168
173
  @click="emits('cancel')"
169
174
  >
170
175
  {{ t("cancel") }}
171
- </lib-button>
176
+ </Wbutton>
172
177
  </div>
173
178
  </slot>
174
179
  </div>
@@ -186,19 +191,19 @@ import { safeConvertToHsva } from "./utils/safeConvertToHsva.js"
186
191
  import { safeConvertToRgba } from "./utils/safeConvertToRgba.js"
187
192
  import { toLowPrecisionRgbaString } from "./utils/toLowPrecisionRgbaString.js"
188
193
 
189
- import IFa6RegularCopy from "~icons/fa-regular/copy"
194
+ import ILucideCopy from "~icons/lucide/copy"
190
195
 
196
+ import { useFallbackId } from "../../composables/useFallbackId.js"
191
197
  import { useInjectedI18n } from "../../composables/useInjectedI18n.js"
192
198
  import { copy } from "../../helpers/copy.js"
193
199
  import type { HsvaColor, RgbaColor } from "../../types/index.js"
194
200
  import { twMerge } from "../../utils/twMerge.js"
195
- import Icon from "../Icon/Icon.vue"
196
- import LibButton from "../LibButton/LibButton.vue"
197
- import LibSimpleInput from "../LibSimpleInput/LibSimpleInput.vue"
198
- import { getFallbackId, type LabelProps, type LinkableByIdProps } from "../shared/props.js"
201
+ import WButton from "../WButton/WButton.vue"
202
+ import WIcon from "../WIcon/WIcon.vue"
203
+ import WSimpleInput from "../WSimpleInput/WSimpleInput.vue"
199
204
 
200
205
  defineOptions({
201
- name: "LibColorPicker"
206
+ name: "WColorPicker"
202
207
  })
203
208
 
204
209
  const $attrs = useAttrs()
@@ -235,9 +240,9 @@ const emits = defineEmits<{
235
240
  }>()
236
241
 
237
242
  const props = withDefaults(defineProps<
238
- LabelProps
239
- & LinkableByIdProps
240
243
  & {
244
+ id?: string
245
+ label?: string
241
246
  allowAlpha?: boolean
242
247
  /**
243
248
  * The precision of the rgba string representation of the color. Defaults to 3. Extra trailing zeros are removed for a prettier number.
@@ -264,9 +269,8 @@ const props = withDefaults(defineProps<
264
269
  customRepresentation: undefined,
265
270
  valid: true
266
271
  })
267
-
272
+ const finalId = useFallbackId(props)
268
273
  const ariaDescription = t("color-picker.aria.description")
269
- const fallbackId = getFallbackId()
270
274
 
271
275
  const $value = defineModel<RgbaColor>({ required: false, default: () => ({ r: 0, g: 0, b: 0 }) })
272
276
  const $tempValue = defineModel<RgbaColor | undefined>("tempValue", { required: false, default: () => (undefined) })
@@ -275,6 +279,10 @@ const pickerEl = ref<HTMLCanvasElement | null>(null)
275
279
  const hueSliderEl = ref<HTMLCanvasElement | null>(null)
276
280
  const alphaSliderEl = ref<HTMLCanvasElement | null>(null)
277
281
 
282
+ let pickerCtx: CanvasRenderingContext2D | null = null
283
+ let hueSliderCtx: CanvasRenderingContext2D | null = null
284
+ let alphaSliderCtx: CanvasRenderingContext2D | null = null
285
+
278
286
  type Config = Record<string, {
279
287
  el: Ref<HTMLCanvasElement>
280
288
  xKey?: keyof HsvaColor
@@ -338,7 +346,8 @@ function onBlurFixInvalidValue() {
338
346
  }
339
347
 
340
348
  function updatePicker(el: HTMLCanvasElement, hue: number): void {
341
- const ctx = el.getContext("2d")!
349
+ if (!pickerCtx) return
350
+ const ctx = pickerCtx
342
351
  const { height, width } = el
343
352
  ctx.clearRect(0, 0, width, height)
344
353
 
@@ -357,8 +366,8 @@ function updatePicker(el: HTMLCanvasElement, hue: number): void {
357
366
  ctx.globalCompositeOperation = "source-over"
358
367
  }
359
368
 
360
- function updateSlider(el: HTMLCanvasElement, stops: ((i: number) => string) | string[], length: number = 360): void {
361
- const ctx = el.getContext("2d")!
369
+ function updateSlider(el: HTMLCanvasElement, ctx: CanvasRenderingContext2D | null, stops: ((i: number) => string) | string[], length: number = 360): void {
370
+ if (!ctx) return
362
371
  const { height, width } = el
363
372
  ctx.clearRect(0, 0, width, height)
364
373
 
@@ -438,7 +447,7 @@ const slider = {
438
447
  }
439
448
  },
440
449
  pointerdown: (e: PointerEvent, type: Types) => {
441
- const focusTargetClass = `#${props.id ?? fallbackId} .color-picker--${type}-handle`
450
+ const focusTargetClass = `#${finalId} .color-picker--${type}-handle`
442
451
  const focusTarget = document.querySelector(focusTargetClass)
443
452
  // allows enter to work when the user drags any slider as the even will be captured by the keydown listener
444
453
  if (focusTarget instanceof HTMLElement) focusTarget.focus()
@@ -476,9 +485,9 @@ function updateSliders(_: HsvaColor): void {
476
485
  hsl0.alpha = 0
477
486
  const hsl1 = color.clone()
478
487
  hsl1.alpha = 1
479
- updateSlider(alphaSliderEl.value, [hsl0.toString(), hsl1.toString()])
488
+ updateSlider(alphaSliderEl.value, alphaSliderCtx!, [hsl0.toString(), hsl1.toString()])
480
489
  }
481
- updateSlider(hueSliderEl.value!, i => `hsl(${i} 100% 50%)`)
490
+ updateSlider(hueSliderEl.value!, hueSliderCtx!, i => `hsl(${i} 100% 50%)`)
482
491
  updatePicker(pickerEl.value!, _.h)
483
492
  }
484
493
 
@@ -530,8 +539,12 @@ onMounted(() => {
530
539
  convertAndUpdateAll($tempValue.value)
531
540
  }
532
541
 
533
- const handle = document.querySelector(`#${props.id ?? fallbackId} .color-picker--all-handle`)
542
+ const handle = document.querySelector(`#${finalId} .color-picker--all-handle`)
534
543
  if (handle instanceof HTMLElement) handle.focus()
544
+
545
+ pickerCtx = pickerEl.value?.getContext("2d") ?? null
546
+ hueSliderCtx = hueSliderEl.value?.getContext("2d") ?? null
547
+ alphaSliderCtx = alphaSliderEl.value?.getContext("2d") ?? null
535
548
  })
536
549
 
537
550
  watch($value, () => {
@@ -0,0 +1,209 @@
1
+ /* eslint-disable @typescript-eslint/naming-convention */
2
+ import type { Meta, StoryObj } from "@storybook/vue3"
3
+ import { ref, watch } from "vue"
4
+
5
+ import { playAllowNewValues, playBasic, playBasicClickSelect, playBasicKeyboardSelect, playValidation } from "./storyPlays.js"
6
+ import WCombobox from "./WCombobox.vue"
7
+
8
+ import * as components from "../index.js"
9
+
10
+
11
+ const meta: Meta<typeof WCombobox> = {
12
+ component: WCombobox as any,
13
+ title: "Components/Combobox",
14
+ args: {
15
+ modelValue: "",
16
+ searchTerm: "",
17
+ emptyLabel: "No matches found",
18
+ suggestions: ["A", "AB", "ABC", "B", "BC", "C", "ABCDEFGHIJKLMNOPQRSTUVWXYZ"]
19
+ }
20
+ }
21
+
22
+ export default meta
23
+
24
+ type ExtraTestArgs = {
25
+ _simulateLoading?: boolean
26
+ _allowSave?: boolean
27
+ _headerTemplate?: string
28
+ }
29
+
30
+ type Story = StoryObj<typeof WCombobox> & { args?: ExtraTestArgs }
31
+
32
+ /**
33
+ * Primary story setup to match the DOM structure expected by the
34
+ * migrated play functions (specifically looking for data-testid="model-value").
35
+ */
36
+ export const Primary: Story = {
37
+ render: args => {
38
+ const extraArgs = args as ExtraTestArgs
39
+ return {
40
+ components,
41
+ setup() {
42
+ const modelValue = ref(args.modelValue)
43
+ const searchTerm = ref(args.searchTerm)
44
+ const suggestions = ref([...args.suggestions!])
45
+ const loading = ref(false)
46
+ const simulateLoading = ref((extraArgs)._simulateLoading)
47
+ // the component takes care of extending this so we can actually see the icon on quick loads like this
48
+ watch(searchTerm, () => {
49
+ if (simulateLoading.value) {
50
+ loading.value = true
51
+ setTimeout(() => {
52
+ loading.value = false
53
+ }, 1)
54
+ }
55
+ })
56
+ function save(value: string) {
57
+ if (!(extraArgs)._allowSave) return
58
+ const newValue: any
59
+ = typeof value === "string" && typeof suggestions.value[0] === "object"
60
+ ? { name: value, id: "new-id" }
61
+ : value
62
+ suggestions.value = [...suggestions.value, newValue]
63
+ modelValue.value = newValue
64
+ }
65
+ return {
66
+ args,
67
+ modelValue,
68
+ searchTerm,
69
+ suggestions,
70
+ loading,
71
+ simulateLoading,
72
+ save,
73
+ extraArgs
74
+ }
75
+ },
76
+ template: `
77
+ <div class="flex flex-col gap-3">
78
+ <div class="flex flex-col gap-1">
79
+ <WCheckbox v-model="simulateLoading">Simulate Loading</WCheckbox>
80
+ <WCheckbox v-model="loading">Loading (Force State)</WCheckbox>
81
+ </div>
82
+ <div class="text-xs text-neutral-500">
83
+ <div>
84
+ Current Model Value:
85
+ <span class="font-mono" data-testid="model-value">{{ modelValue }}</span>
86
+ </div>
87
+ <div>
88
+ Current Search Term:
89
+ <span class="font-mono" data-testid="search-term">{{ searchTerm }}</span>
90
+ </div>
91
+ </div>
92
+
93
+ <div class="flex flex-col gap-1">
94
+ <WCombobox
95
+ @save="save"
96
+ v-bind="args"
97
+ v-model="modelValue"
98
+ v-model:searchTerm="searchTerm"
99
+ :suggestions="suggestions"
100
+ :loading="loading"
101
+ >
102
+ ${(extraArgs)._headerTemplate ?? ""}
103
+ </WCombobox>
104
+ </div>
105
+ </div>
106
+ `
107
+ }
108
+ },
109
+ play: async (...args) => {
110
+ await playBasicClickSelect(...args)
111
+ await playBasicKeyboardSelect(...args)
112
+ await playBasic(...args)
113
+ }
114
+ }
115
+
116
+ export const RestrictToSuggestions: Story = {
117
+ ...Primary,
118
+ args: {
119
+ ...Primary.args,
120
+ restrictToSuggestions: true
121
+ },
122
+ play: async (...args) => {
123
+ await playBasicClickSelect(...args)
124
+ await playBasicKeyboardSelect(...args)
125
+ await playBasic(...args)
126
+ }
127
+ }
128
+
129
+
130
+ export const ObjectSuggestions: Story = {
131
+ ...Primary,
132
+ play: undefined,
133
+ args: {
134
+ ...Primary.args,
135
+ suggestions: [
136
+ { id: 1, name: "Apple" },
137
+ { id: 2, name: "Banana" },
138
+ { id: 3, name: "Cherry" }
139
+ ] as any[],
140
+ displayKey: "name"
141
+ }
142
+ }
143
+
144
+
145
+ export const AllowNewValues: Story = {
146
+ ...Primary,
147
+ args: {
148
+ ...Primary.args,
149
+ _allowSave: true,
150
+ _headerTemplate: `
151
+ <template #header="slotProps">
152
+ <div v-if="slotProps.isShowingEmptyLabel" :class="slotProps.class">
153
+ Press Enter to Add Value
154
+ </div>
155
+ </template>
156
+ `
157
+ },
158
+ play: playAllowNewValues
159
+ }
160
+
161
+ /** Note that when allowing new values to be added, if the input is v-modeling objects, you have to transform the object before adding it to the suggestions array. */
162
+ export const ObjectSuggestionsCustomDisplay: Story = {
163
+ ...Primary,
164
+ play: undefined,
165
+ args: {
166
+ ...Primary.args,
167
+ _allowSave: true,
168
+ suggestions: [
169
+ { id: 1, name: "Apple" },
170
+ { id: 2, name: "Banana" },
171
+ { id: 3, name: "Cherry" }
172
+ ] as any[],
173
+ displayEntry: (value: any) => {
174
+ return value.name?.toLowerCase()
175
+ }
176
+ }
177
+ }
178
+
179
+
180
+ export const CustomHeader: Story = {
181
+ ...Primary,
182
+ play: undefined,
183
+ args: {
184
+ ...Primary.args,
185
+ loading: true,
186
+ _headerTemplate: `<template #header> Custom Header </template>`
187
+ }
188
+ }
189
+
190
+ export const WithValidation: Story = {
191
+ ...Primary,
192
+ args: {
193
+ ...Primary.args,
194
+ loading: true,
195
+ isValid: (searchTerm: string) => searchTerm === "Invalid" ? "Error Message" : true,
196
+ modelValue: "Invalid"
197
+ },
198
+ play: playValidation
199
+ }
200
+
201
+ export const LoadingIndicator: Story = {
202
+ ...Primary,
203
+ play: undefined,
204
+ args: {
205
+ ...Primary.args,
206
+ _simulateLoading: true
207
+ }
208
+ }
209
+