@witchcraft/ui 0.3.25 → 0.4.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. package/README.md +54 -61
  2. package/dist/module.json +1 -1
  3. package/dist/runtime/assets/animations.css +1 -1
  4. package/dist/runtime/assets/locales/en.json +2 -0
  5. package/dist/runtime/assets/utils.css +1 -1
  6. package/dist/runtime/build/WitchcraftUiResolver.js +1 -1
  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 +109 -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} +40 -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 +109 -0
  24. package/dist/runtime/components/WCombobox/WCombobox.vue +402 -0
  25. package/dist/runtime/components/WCombobox/WCombobox.vue.d.ts +109 -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} +16 -21
  35. package/dist/runtime/components/{LibDatePicker/LibSingleDatePicker.vue → WDatePicker/WSingleDatePicker.vue} +16 -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} +9 -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} +71 -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 +149 -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} +32 -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 +43 -0
  67. package/dist/runtime/components/WPopover/WPopover.vue +138 -0
  68. package/dist/runtime/components/WPopover/WPopover.vue.d.ts +43 -0
  69. package/dist/runtime/components/WPopup/WPopup.d.vue.ts +41 -0
  70. package/dist/runtime/components/WPopup/WPopup.vue +74 -0
  71. package/dist/runtime/components/WPopup/WPopup.vue.d.ts +41 -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} +9 -16
  82. package/dist/runtime/components/{LibSimpleInput/LibSimpleInput.vue → WSimpleInput/WSimpleInput.vue} +12 -23
  83. package/dist/runtime/components/{LibSimpleInput/LibSimpleInput.vue.d.ts → WSimpleInput/WSimpleInput.vue.d.ts} +9 -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 +111 -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 +8 -4
  106. package/dist/runtime/helpers/NotificationHandler.js +5 -8
  107. package/dist/runtime/injectionKeys.d.ts +1 -5
  108. package/dist/runtime/injectionKeys.js +0 -2
  109. package/dist/runtime/types/index.d.ts +85 -27
  110. package/dist/runtime/types/index.js +1 -0
  111. package/package.json +7 -7
  112. package/src/runtime/assets/animations.css +3 -3
  113. package/src/runtime/assets/locales/en.json +2 -0
  114. package/src/runtime/assets/utils.css +43 -0
  115. package/src/runtime/build/WitchcraftUiResolver.ts +1 -1
  116. package/src/runtime/components/TestControls/TestControls.vue +3 -3
  117. package/src/runtime/components/WButton/WButton.stories.ts +112 -0
  118. package/src/runtime/components/{LibButton/LibButton.vue → WButton/WButton.vue} +34 -50
  119. package/src/runtime/components/{LibCheckbox/LibCheckbox.stories.ts → WCheckbox/WCheckbox.stories.ts} +5 -5
  120. package/src/runtime/components/WCheckbox/WCheckbox.vue +123 -0
  121. package/src/runtime/components/{LibColorInput/LibColorInput.stories.ts → WColorInput/WColorInput.stories.ts} +8 -8
  122. package/src/runtime/components/WColorInput/WColorInput.vue +112 -0
  123. package/src/runtime/components/WColorInput/WColorSwatchButton.vue +102 -0
  124. package/src/runtime/components/{LibColorPicker/LibColorPicker.stories.ts → WColorPicker/WColorPicker.stories.ts} +12 -12
  125. package/src/runtime/components/{LibColorPicker/LibColorPicker.vue → WColorPicker/WColorPicker.vue} +43 -32
  126. package/src/runtime/components/WCombobox/WCombobox.stories.ts +209 -0
  127. package/src/runtime/components/WCombobox/WCombobox.vue +446 -0
  128. package/src/runtime/components/WCombobox/storyPlays.ts +92 -0
  129. package/src/runtime/components/{LibDarkModeSwitcher/LibDarkModeSwitcher.stories.ts → WDarkModeSwitcher/WDarkModeSwitcher.stories.ts} +6 -6
  130. package/src/runtime/components/{LibDarkModeSwitcher/LibDarkModeSwitcher.vue → WDarkModeSwitcher/WDarkModeSwitcher.vue} +19 -30
  131. package/src/runtime/components/{LibDatePicker/LibDatePicker.stories.ts → WDatePicker/WDatePicker.stories.ts} +42 -34
  132. package/src/runtime/components/{LibDatePicker/LibDatePicker.vue → WDatePicker/WDatePicker.vue} +3 -7
  133. package/src/runtime/components/{LibDatePicker/LibRangeDatePicker.vue → WDatePicker/WRangeDatePicker.vue} +16 -22
  134. package/src/runtime/components/{LibDatePicker/LibSingleDatePicker.vue → WDatePicker/WSingleDatePicker.vue} +16 -22
  135. package/src/runtime/components/{LibDatePicker/LibTimeZonePicker.vue → WDatePicker/WTimeZonePicker.vue} +5 -12
  136. package/src/runtime/components/{LibDebug/LibDebug.stories.ts → WDebug/WDebug.stories.ts} +5 -5
  137. package/src/runtime/components/{LibDebug/LibDebug.vue → WDebug/WDebug.vue} +8 -11
  138. package/src/runtime/components/{LibDevOnly/LibDevOnly.vue → WDevOnly/WDevOnly.vue} +0 -4
  139. package/src/runtime/components/{LibFileInput/LibFileInput.stories.ts → WFileInput/WFileInput.stories.ts} +7 -7
  140. package/src/runtime/components/{LibFileInput/LibFileInput.vue → WFileInput/WFileInput.vue} +95 -98
  141. package/src/runtime/components/{Icon/Icon.vue → WIcon/WIcon.vue} +5 -8
  142. package/src/runtime/components/{LibMultiValues/LibMultiValues.stories.ts → WMultiValues/WMultiValues.stories.ts} +9 -9
  143. package/src/runtime/components/WMultiValues/WMultiValues.vue +161 -0
  144. package/src/runtime/components/{LibNotifications/LibNotification.stories.ts → WNotifications/WNotification.stories.ts} +9 -9
  145. package/src/runtime/components/{LibNotifications/LibNotification.vue → WNotifications/WNotification.vue} +43 -66
  146. package/src/runtime/components/WNotifications/WNotifications.stories.ts +139 -0
  147. package/src/runtime/components/{LibNotifications/LibNotifications.vue → WNotifications/WNotifications.vue} +51 -29
  148. package/src/runtime/components/WNumberInput/WNumberInput.vue +109 -0
  149. package/src/runtime/components/WPagination/WPagination.stories.ts +51 -0
  150. package/src/runtime/components/WPagination/WPagination.vue +207 -0
  151. package/src/runtime/components/{LibPalette/LibPalette.stories.ts → WPalette/WPalette.stories.ts} +6 -6
  152. package/src/runtime/components/{LibPalette/LibPalette.vue → WPalette/WPalette.vue} +3 -8
  153. package/src/runtime/components/WPopover/WPopover.stories.ts +218 -0
  154. package/src/runtime/components/WPopover/WPopover.vue +161 -0
  155. package/src/runtime/components/WPopup/WPopup.stories.ts +60 -0
  156. package/src/runtime/components/WPopup/WPopup.vue +93 -0
  157. package/src/runtime/components/WProgressBar/WProgressBar.stories.ts +119 -0
  158. package/src/runtime/components/WProgressBar/WProgressBar.vue +185 -0
  159. package/src/runtime/components/{LibRecorder/LibRecorder.stories.ts → WRecorder/WRecorder.stories.ts} +9 -6
  160. package/src/runtime/components/{LibRecorder/LibRecorder.vue → WRecorder/WRecorder.vue} +69 -68
  161. package/src/runtime/components/{LibRoot/LibRoot.vue → WRoot/WRoot.vue} +18 -15
  162. package/src/runtime/components/{LibSimpleInput/LibSimpleInput.stories.ts → WSimpleInput/WSimpleInput.stories.ts} +11 -12
  163. package/src/runtime/components/{LibSimpleInput/LibSimpleInput.vue → WSimpleInput/WSimpleInput.vue} +27 -44
  164. package/src/runtime/components/{LibTable/LibTable.stories.ts → WTable/WTable.stories.ts} +60 -52
  165. package/src/runtime/components/{LibTable/LibTable.vue → WTable/WTable.vue} +85 -87
  166. package/src/runtime/components/WTooltip/WTooltip.stories.ts +82 -0
  167. package/src/runtime/components/WTooltip/WTooltip.vue +126 -0
  168. package/src/runtime/components/index.ts +20 -20
  169. package/src/runtime/composables/index.ts +4 -4
  170. package/src/runtime/composables/useDelayedLoadingIndicator.ts +30 -0
  171. package/src/runtime/composables/useDisplayForReka.ts +37 -0
  172. package/src/runtime/composables/useFallbackId.ts +6 -0
  173. package/src/runtime/composables/useInjectedDarkMode.ts +1 -2
  174. package/src/runtime/composables/usePopupConstrainToStyle.ts +29 -0
  175. package/src/runtime/composables/useSetupDarkMode.ts +122 -4
  176. package/src/runtime/helpers/NotificationHandler.ts +9 -11
  177. package/src/runtime/injectionKeys.ts +1 -7
  178. package/src/runtime/types/index.ts +105 -32
  179. package/types/components.d.ts +13 -15
  180. package/dist/runtime/components/Aria/Aria.d.vue.ts +0 -6
  181. package/dist/runtime/components/Aria/Aria.vue +0 -16
  182. package/dist/runtime/components/Aria/Aria.vue.d.ts +0 -6
  183. package/dist/runtime/components/LibButton/LibButton.d.vue.ts +0 -37
  184. package/dist/runtime/components/LibButton/LibButton.vue.d.ts +0 -37
  185. package/dist/runtime/components/LibCheckbox/LibCheckbox.d.vue.ts +0 -41
  186. package/dist/runtime/components/LibCheckbox/LibCheckbox.vue +0 -103
  187. package/dist/runtime/components/LibCheckbox/LibCheckbox.vue.d.ts +0 -41
  188. package/dist/runtime/components/LibColorInput/LibColorInput.d.vue.ts +0 -64
  189. package/dist/runtime/components/LibColorInput/LibColorInput.vue +0 -162
  190. package/dist/runtime/components/LibColorInput/LibColorInput.vue.d.ts +0 -64
  191. package/dist/runtime/components/LibDatePicker/LibDatePicker.d.vue.ts +0 -191
  192. package/dist/runtime/components/LibDatePicker/LibDatePicker.vue.d.ts +0 -191
  193. package/dist/runtime/components/LibFileInput/LibFileInput.d.vue.ts +0 -46
  194. package/dist/runtime/components/LibFileInput/LibFileInput.vue.d.ts +0 -46
  195. package/dist/runtime/components/LibInputDeprecated/LibInputDeprecated.d.vue.ts +0 -256
  196. package/dist/runtime/components/LibInputDeprecated/LibInputDeprecated.vue +0 -387
  197. package/dist/runtime/components/LibInputDeprecated/LibInputDeprecated.vue.d.ts +0 -256
  198. package/dist/runtime/components/LibLabel/LibLabel.d.vue.ts +0 -27
  199. package/dist/runtime/components/LibLabel/LibLabel.vue +0 -45
  200. package/dist/runtime/components/LibLabel/LibLabel.vue.d.ts +0 -27
  201. package/dist/runtime/components/LibMultiValues/LibMultiValues.vue +0 -109
  202. package/dist/runtime/components/LibNotifications/LibNotification.d.vue.ts +0 -45
  203. package/dist/runtime/components/LibNotifications/LibNotification.vue.d.ts +0 -45
  204. package/dist/runtime/components/LibNotifications/LibNotifications.d.vue.ts +0 -15
  205. package/dist/runtime/components/LibNotifications/LibNotifications.vue.d.ts +0 -15
  206. package/dist/runtime/components/LibPagination/LibPagination.d.vue.ts +0 -105
  207. package/dist/runtime/components/LibPagination/LibPagination.vue +0 -229
  208. package/dist/runtime/components/LibPagination/LibPagination.vue.d.ts +0 -105
  209. package/dist/runtime/components/LibPalette/LibPalette.d.vue.ts +0 -15
  210. package/dist/runtime/components/LibPalette/LibPalette.vue.d.ts +0 -15
  211. package/dist/runtime/components/LibPopup/LibPopup.d.vue.ts +0 -52
  212. package/dist/runtime/components/LibPopup/LibPopup.vue +0 -365
  213. package/dist/runtime/components/LibPopup/LibPopup.vue.d.ts +0 -52
  214. package/dist/runtime/components/LibProgressBar/LibProgressBar.vue +0 -169
  215. package/dist/runtime/components/LibSuggestions/LibSuggestions.d.vue.ts +0 -99
  216. package/dist/runtime/components/LibSuggestions/LibSuggestions.vue +0 -178
  217. package/dist/runtime/components/LibSuggestions/LibSuggestions.vue.d.ts +0 -99
  218. package/dist/runtime/components/LibTable/LibTable.d.vue.ts +0 -125
  219. package/dist/runtime/components/LibTable/LibTable.vue.d.ts +0 -125
  220. package/dist/runtime/components/Template/NAME.d.vue.ts +0 -18
  221. package/dist/runtime/components/Template/NAME.vue +0 -27
  222. package/dist/runtime/components/Template/NAME.vue.d.ts +0 -18
  223. package/dist/runtime/components/Template/TemplateStory.d.ts +0 -7
  224. package/dist/runtime/components/Template/TemplateStory.js +0 -22
  225. package/dist/runtime/components/shared/props.d.ts +0 -171
  226. package/dist/runtime/components/shared/props.js +0 -2
  227. package/dist/runtime/composables/useAriaLabel.d.ts +0 -6
  228. package/dist/runtime/composables/useAriaLabel.js +0 -15
  229. package/dist/runtime/composables/useDarkMode.d.ts +0 -77
  230. package/dist/runtime/composables/useDarkMode.js +0 -89
  231. package/dist/runtime/composables/useDivideAttrs.d.ts +0 -27
  232. package/dist/runtime/composables/useDivideAttrs.js +0 -27
  233. package/dist/runtime/composables/useSuggestions.d.ts +0 -40
  234. package/dist/runtime/composables/useSuggestions.js +0 -263
  235. package/src/runtime/components/Aria/Aria.vue +0 -26
  236. package/src/runtime/components/LibButton/LibButton.stories.ts +0 -106
  237. package/src/runtime/components/LibCheckbox/LibCheckbox.vue +0 -131
  238. package/src/runtime/components/LibColorInput/LibColorInput.vue +0 -203
  239. package/src/runtime/components/LibInputDeprecated/LibInputDeprecated.stories.ts +0 -405
  240. package/src/runtime/components/LibInputDeprecated/LibInputDeprecated.vue +0 -419
  241. package/src/runtime/components/LibLabel/LibLabel.stories.ts +0 -33
  242. package/src/runtime/components/LibLabel/LibLabel.vue +0 -65
  243. package/src/runtime/components/LibMultiValues/LibMultiValues.vue +0 -123
  244. package/src/runtime/components/LibNotifications/LibNotifications.stories.ts +0 -131
  245. package/src/runtime/components/LibPagination/LibPagination.stories.ts +0 -49
  246. package/src/runtime/components/LibPagination/LibPagination.vue +0 -274
  247. package/src/runtime/components/LibPopup/LibPopup.stories.ts +0 -153
  248. package/src/runtime/components/LibPopup/LibPopup.vue +0 -396
  249. package/src/runtime/components/LibProgressBar/LibProgressBar.stories.ts +0 -90
  250. package/src/runtime/components/LibProgressBar/LibProgressBar.vue +0 -197
  251. package/src/runtime/components/LibSuggestions/LibSuggestions.stories.ts +0 -134
  252. package/src/runtime/components/LibSuggestions/LibSuggestions.vue +0 -212
  253. package/src/runtime/components/Template/NAME.vue +0 -49
  254. package/src/runtime/components/Template/TemplateStory.ts +0 -37
  255. package/src/runtime/components/shared/props.ts +0 -199
  256. package/src/runtime/composables/useAriaLabel.ts +0 -23
  257. package/src/runtime/composables/useDarkMode.ts +0 -199
  258. package/src/runtime/composables/useDivideAttrs.ts +0 -53
  259. package/src/runtime/composables/useSuggestions.ts +0 -339
  260. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToHsva.d.ts +0 -0
  261. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToHsva.js +0 -0
  262. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToRgba.d.ts +0 -0
  263. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToRgba.js +0 -0
  264. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/toLowPrecisionRgbaString.d.ts +0 -0
  265. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/toLowPrecisionRgbaString.js +0 -0
  266. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/truncate.d.ts +0 -0
  267. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/truncate.js +0 -0
  268. /package/dist/runtime/components/{LibDatePicker/LibRangeDatePicker.d.vue.ts → WDatePicker/WRangeDatePicker.d.vue.ts} +0 -0
  269. /package/dist/runtime/components/{LibDatePicker/LibRangeDatePicker.vue.d.ts → WDatePicker/WRangeDatePicker.vue.d.ts} +0 -0
  270. /package/dist/runtime/components/{LibDatePicker/LibSingleDatePicker.d.vue.ts → WDatePicker/WSingleDatePicker.d.vue.ts} +0 -0
  271. /package/dist/runtime/components/{LibDatePicker/LibSingleDatePicker.vue.d.ts → WDatePicker/WSingleDatePicker.vue.d.ts} +0 -0
  272. /package/dist/runtime/components/{LibDatePicker → WDatePicker}/helpers.d.ts +0 -0
  273. /package/dist/runtime/components/{LibDatePicker → WDatePicker}/helpers.js +0 -0
  274. /package/dist/runtime/components/{LibDebug/LibDebug.d.vue.ts → WDebug/WDebug.d.vue.ts} +0 -0
  275. /package/dist/runtime/components/{LibDebug/LibDebug.vue.d.ts → WDebug/WDebug.vue.d.ts} +0 -0
  276. /package/dist/runtime/components/{LibDevOnly/LibDevOnly.vue → WDevOnly/WDevOnly.vue} +0 -0
  277. /package/dist/runtime/components/{LibNotifications/LibNotificationTestMessageComponent.d.vue.ts → WNotifications/WNotificationTestMessageComponent.d.vue.ts} +0 -0
  278. /package/dist/runtime/components/{LibNotifications/LibNotificationTestMessageComponent.vue → WNotifications/WNotificationTestMessageComponent.vue} +0 -0
  279. /package/dist/runtime/components/{LibNotifications/LibNotificationTestMessageComponent.vue.d.ts → WNotifications/WNotificationTestMessageComponent.vue.d.ts} +0 -0
  280. /package/dist/runtime/components/{LibNotifications → WNotifications}/calculateNotificationProgress.d.ts +0 -0
  281. /package/dist/runtime/components/{LibNotifications → WNotifications}/calculateNotificationProgress.js +0 -0
  282. /package/src/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToHsva.ts +0 -0
  283. /package/src/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToRgba.ts +0 -0
  284. /package/src/runtime/components/{LibColorPicker → WColorPicker}/utils/toLowPrecisionRgbaString.ts +0 -0
  285. /package/src/runtime/components/{LibColorPicker → WColorPicker}/utils/truncate.ts +0 -0
  286. /package/src/runtime/components/{LibDatePicker → WDatePicker}/helpers.ts +0 -0
  287. /package/src/runtime/components/{LibNotifications/LibNotificationTestMessageComponent.vue → WNotifications/WNotificationTestMessageComponent.vue} +0 -0
  288. /package/src/runtime/components/{LibNotifications → WNotifications}/calculateNotificationProgress.ts +0 -0
@@ -0,0 +1,123 @@
1
+ <template>
2
+ <div
3
+ :class="twMerge(`
4
+ checkbox--wrapper
5
+ flex
6
+ items-center
7
+ gap-1
8
+ `,
9
+ (disabled || readonly) && `
10
+ cursor-not-allowed
11
+ text-neutral-500
12
+ `,
13
+
14
+ wrapperAttrs?.class
15
+ )"
16
+ v-bind="{ ...wrapperAttrs, class: undefined }"
17
+ ref="el"
18
+ >
19
+ <slot name="left"/>
20
+ <label
21
+ :class="twMerge(`
22
+ checkbox--label
23
+ flex
24
+ items-center
25
+ gap-1
26
+ `,
27
+ labelAttrs?.class
28
+ )"
29
+ v-bind="{ ...labelAttrs, class: undefined }"
30
+ >
31
+ <CheckboxRoot
32
+ :id="finalId"
33
+ :disabled="disabled || readonly"
34
+ :class="!unstyle && twMerge(`
35
+ checkbox
36
+ flex
37
+ items-center
38
+ justify-center
39
+ focus-outline-no-offset
40
+ m-0
41
+ h-[1.2em]
42
+ w-[1.2em]
43
+ aspect-square
44
+ bg-neutral-500/10
45
+ text-white
46
+ dark:text-white
47
+ border
48
+ border-neutral-500
49
+ data-[state=checked]:border-accent-800/50
50
+ data-[state=checked]:bg-accent-500
51
+ data-[state=checked]:shadow-2xs
52
+ data-[state=checked]:shadow-black/20
53
+ data-[state=unchecked]:inset-shadow-2xs
54
+ data-[state=unchecked]:inset-shadow-black/20
55
+ focus:border-accent-600
56
+ rounded-sm
57
+ relative
58
+ transition-colors
59
+ dark:disabled:bg-neutral-800
60
+ cursor-pointer
61
+ disabled:text-neutral-500
62
+ disabled:bg-neutral-500/50
63
+ disabled:cursor-not-allowed
64
+ disabled:data-[state=checked]:border-neutral-500
65
+ `,
66
+ ($attrs as any)?.class
67
+ )"
68
+ v-bind="{ ...$attrs, class: undefined }"
69
+
70
+ v-model="modelValue"
71
+ >
72
+ <CheckboxIndicator class="checkbox--indicator">
73
+ <WIcon class="scale-110 mt-[2px] ml-[0.5px] [&_path]:stroke-3"><i-lucide-check/></WIcon>
74
+ </CheckboxIndicator>
75
+ </CheckboxRoot>
76
+
77
+ <slot/> {{ label }}
78
+ </label>
79
+ </div>
80
+ </template>
81
+
82
+ <script setup lang="ts">
83
+ import { CheckboxIndicator, CheckboxRoot } from "reka-ui"
84
+ import type { HTMLAttributes, InputHTMLAttributes } from "vue"
85
+ import { useAttrs } from "vue"
86
+
87
+ import { useFallbackId } from "../../composables/useFallbackId.js"
88
+ import { usePreHydrationValue } from "../../composables/usePreHydrationValue.js"
89
+ import type { BaseInteractiveProps, TailwindClassProp } from "../../types/index.js"
90
+ import { twMerge } from "../../utils/twMerge.js"
91
+ import WIcon from "../WIcon/WIcon.vue"
92
+
93
+ const $attrs = useAttrs()
94
+
95
+ defineOptions({
96
+ name: "WCheckbox",
97
+ inheritAttrs: false
98
+ })
99
+
100
+ const props = withDefaults(defineProps<
101
+ & BaseInteractiveProps
102
+ & {
103
+ id?: string
104
+ label?: string
105
+ labelAttrs?: Omit<HTMLAttributes, "class"> & TailwindClassProp
106
+ wrapperAttrs?: Omit<HTMLAttributes, "class"> & TailwindClassProp
107
+ }
108
+ & /** @vue-ignore */Omit<
109
+ InputHTMLAttributes,
110
+ "class" | "readonly" | "disabled" | "onSumbit"
111
+ // https://github.com/vuejs/core/pull/14237
112
+ | "autocomplete"
113
+ >
114
+ & /** @vue-ignore */ TailwindClassProp
115
+ >(), {
116
+ border: true
117
+ })
118
+
119
+ const modelValue = defineModel<boolean | "indeterminate">("modelValue", { default: false })
120
+ const finalId = useFallbackId(props)
121
+ usePreHydrationValue(finalId, modelValue)
122
+ </script>
123
+
@@ -2,12 +2,12 @@
2
2
  import type { Meta, StoryObj } from "@storybook/vue3"
3
3
  import { ref } from "vue"
4
4
 
5
- import LibColorInput from "./LibColorInput.vue"
5
+ import WColorInput from "./WColorInput.vue"
6
6
 
7
7
  import * as components from "../index.js"
8
8
 
9
- const meta: Meta<typeof LibColorInput> = {
10
- component: LibColorInput,
9
+ const meta: Meta<typeof WColorInput> = {
10
+ component: WColorInput,
11
11
  title: "Components/ColorInput",
12
12
  args: {
13
13
 
@@ -15,7 +15,7 @@ const meta: Meta<typeof LibColorInput> = {
15
15
  }
16
16
 
17
17
  export default meta
18
- type Story = StoryObj<typeof LibColorInput>
18
+ type Story = StoryObj<typeof WColorInput>
19
19
 
20
20
  export const Primary: Story = {
21
21
  render: args => ({
@@ -36,21 +36,21 @@ export const Primary: Story = {
36
36
  }
37
37
  },
38
38
  template: `
39
- <lib-color-Input
39
+ <WColorInput
40
40
  :allowAlpha="args.allowAlpha"
41
41
  :modelValue="args.color.value"
42
42
  @update:modelValue="handleChange"
43
43
  >
44
- </lib-color-Input>
44
+ </WColorInput>
45
45
  Stretched:
46
46
  <div class="flex-1 flex">
47
- <lib-color-Input
47
+ <WColorInput
48
48
  class="flex-1"
49
49
  :allowAlpha="args.allowAlpha"
50
50
  :modelValue="args.color.value"
51
51
  @update:modelValue="handleChange"
52
52
  >
53
- </lib-color-Input>
53
+ </WColorInput>
54
54
  </div>
55
55
  `
56
56
  })
@@ -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,17 @@ 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"
190
-
194
+ import { useFallbackId } from "../../composables/useFallbackId.js"
191
195
  import { useInjectedI18n } from "../../composables/useInjectedI18n.js"
192
196
  import { copy } from "../../helpers/copy.js"
193
197
  import type { HsvaColor, RgbaColor } from "../../types/index.js"
194
198
  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"
199
+ import WButton from "../WButton/WButton.vue"
200
+ import WIcon from "../WIcon/WIcon.vue"
201
+ import WSimpleInput from "../WSimpleInput/WSimpleInput.vue"
199
202
 
200
203
  defineOptions({
201
- name: "LibColorPicker"
204
+ name: "WColorPicker"
202
205
  })
203
206
 
204
207
  const $attrs = useAttrs()
@@ -235,9 +238,9 @@ const emits = defineEmits<{
235
238
  }>()
236
239
 
237
240
  const props = withDefaults(defineProps<
238
- LabelProps
239
- & LinkableByIdProps
240
241
  & {
242
+ id?: string
243
+ label?: string
241
244
  allowAlpha?: boolean
242
245
  /**
243
246
  * The precision of the rgba string representation of the color. Defaults to 3. Extra trailing zeros are removed for a prettier number.
@@ -264,9 +267,8 @@ const props = withDefaults(defineProps<
264
267
  customRepresentation: undefined,
265
268
  valid: true
266
269
  })
267
-
270
+ const finalId = useFallbackId(props)
268
271
  const ariaDescription = t("color-picker.aria.description")
269
- const fallbackId = getFallbackId()
270
272
 
271
273
  const $value = defineModel<RgbaColor>({ required: false, default: () => ({ r: 0, g: 0, b: 0 }) })
272
274
  const $tempValue = defineModel<RgbaColor | undefined>("tempValue", { required: false, default: () => (undefined) })
@@ -275,6 +277,10 @@ const pickerEl = ref<HTMLCanvasElement | null>(null)
275
277
  const hueSliderEl = ref<HTMLCanvasElement | null>(null)
276
278
  const alphaSliderEl = ref<HTMLCanvasElement | null>(null)
277
279
 
280
+ let pickerCtx: CanvasRenderingContext2D | null = null
281
+ let hueSliderCtx: CanvasRenderingContext2D | null = null
282
+ let alphaSliderCtx: CanvasRenderingContext2D | null = null
283
+
278
284
  type Config = Record<string, {
279
285
  el: Ref<HTMLCanvasElement>
280
286
  xKey?: keyof HsvaColor
@@ -338,7 +344,8 @@ function onBlurFixInvalidValue() {
338
344
  }
339
345
 
340
346
  function updatePicker(el: HTMLCanvasElement, hue: number): void {
341
- const ctx = el.getContext("2d")!
347
+ if (!pickerCtx) return
348
+ const ctx = pickerCtx
342
349
  const { height, width } = el
343
350
  ctx.clearRect(0, 0, width, height)
344
351
 
@@ -357,8 +364,8 @@ function updatePicker(el: HTMLCanvasElement, hue: number): void {
357
364
  ctx.globalCompositeOperation = "source-over"
358
365
  }
359
366
 
360
- function updateSlider(el: HTMLCanvasElement, stops: ((i: number) => string) | string[], length: number = 360): void {
361
- const ctx = el.getContext("2d")!
367
+ function updateSlider(el: HTMLCanvasElement, ctx: CanvasRenderingContext2D | null, stops: ((i: number) => string) | string[], length: number = 360): void {
368
+ if (!ctx) return
362
369
  const { height, width } = el
363
370
  ctx.clearRect(0, 0, width, height)
364
371
 
@@ -438,7 +445,7 @@ const slider = {
438
445
  }
439
446
  },
440
447
  pointerdown: (e: PointerEvent, type: Types) => {
441
- const focusTargetClass = `#${props.id ?? fallbackId} .color-picker--${type}-handle`
448
+ const focusTargetClass = `#${finalId} .color-picker--${type}-handle`
442
449
  const focusTarget = document.querySelector(focusTargetClass)
443
450
  // allows enter to work when the user drags any slider as the even will be captured by the keydown listener
444
451
  if (focusTarget instanceof HTMLElement) focusTarget.focus()
@@ -476,9 +483,9 @@ function updateSliders(_: HsvaColor): void {
476
483
  hsl0.alpha = 0
477
484
  const hsl1 = color.clone()
478
485
  hsl1.alpha = 1
479
- updateSlider(alphaSliderEl.value, [hsl0.toString(), hsl1.toString()])
486
+ updateSlider(alphaSliderEl.value, alphaSliderCtx!, [hsl0.toString(), hsl1.toString()])
480
487
  }
481
- updateSlider(hueSliderEl.value!, i => `hsl(${i} 100% 50%)`)
488
+ updateSlider(hueSliderEl.value!, hueSliderCtx!, i => `hsl(${i} 100% 50%)`)
482
489
  updatePicker(pickerEl.value!, _.h)
483
490
  }
484
491
 
@@ -530,8 +537,12 @@ onMounted(() => {
530
537
  convertAndUpdateAll($tempValue.value)
531
538
  }
532
539
 
533
- const handle = document.querySelector(`#${props.id ?? fallbackId} .color-picker--all-handle`)
540
+ const handle = document.querySelector(`#${finalId} .color-picker--all-handle`)
534
541
  if (handle instanceof HTMLElement) handle.focus()
542
+
543
+ pickerCtx = pickerEl.value?.getContext("2d") ?? null
544
+ hueSliderCtx = hueSliderEl.value?.getContext("2d") ?? null
545
+ alphaSliderCtx = alphaSliderEl.value?.getContext("2d") ?? null
535
546
  })
536
547
 
537
548
  watch($value, () => {