@witchcraft/ui 0.3.24 → 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} +5 -4
  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} +5 -4
  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} +38 -50
  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} +44 -28
  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 +25 -3
  106. package/dist/runtime/helpers/NotificationHandler.js +5 -9
  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 +43 -43
  112. package/src/runtime/assets/animations.css +5 -5
  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} +24 -9
  145. package/src/runtime/components/{LibNotifications/LibNotification.vue → WNotifications/WNotification.vue} +46 -66
  146. package/src/runtime/components/WNotifications/WNotifications.stories.ts +139 -0
  147. package/src/runtime/components/{LibNotifications/LibNotifications.vue → WNotifications/WNotifications.vue} +60 -40
  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 +26 -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 -127
  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,402 @@
1
+ <template>
2
+ <!-- reka's filter does not work well, specially with lowercase/uppercase, e.g. A !== A but a === A ??? -->
3
+ <ComboboxRoot
4
+ :ignore-filter="true"
5
+ :class="twMerge(`combobox-root relative`, $attrs?.class)"
6
+ v-bind="{ ...$attrs, class: void 0 }"
7
+ :reset-search-term-on-select="true"
8
+ :reset-search-term-on-blur="true"
9
+ :open-on-click="true"
10
+ ref="comboboxRootComponent"
11
+ v-model:open="open"
12
+ v-model="modelValue"
13
+ >
14
+ <ComboboxAnchor
15
+ class="combobox-anchor justify-between flex"
16
+ >
17
+ <div
18
+ :class="twMerge(
19
+ `
20
+ combobox--input-wrapper
21
+ flex
22
+ items-center
23
+ justify-between
24
+ rounded-sm
25
+ px-1
26
+ leading-none
27
+ fg-inherit
28
+ bg-inherit
29
+ outlined-within:border-accent-500
30
+ gap-2
31
+ focus-outline-none
32
+ focus-outline-hidden
33
+ w-full
34
+ min-w-0
35
+ `,
36
+ errorMessage !== false && `!border-danger-500`,
37
+ border && `
38
+ border
39
+ border-neutral-300
40
+ dark:border-neutral-700
41
+ bg-neutral-100
42
+ dark:bg-neutral-800/50
43
+ focus:bg-bg
44
+ dark:focus:bg-neutral-800
45
+ dark:focus:border-accent-500
46
+ focus-within:border-accent-500
47
+ dark:focus-within:border-accent-500
48
+ has-[input:invalid]:border-danger-500
49
+ invalid:border-danger-500
50
+ `,
51
+ open && popupSide === 'top' && `rounded-tl-none rounded-tr-none`,
52
+ open && popupSide === 'bottom' && `rounded-bl-none rounded-br-none`
53
+ )"
54
+ >
55
+ <!-- @vue-expect-error aria/keydown can be defined -->
56
+ <ComboboxInput
57
+ :id="id"
58
+ :display-value="display"
59
+ spellcheck="false"
60
+ :aria-invalid="errorMessage !== false"
61
+ :aria-busy="loading"
62
+ :aria-errormessage="ariaDescribedBy"
63
+ :class="twMerge(
64
+ `
65
+ combobox--input
66
+ bg-transparent
67
+ min-w-[70px]
68
+ w-full
69
+ outline-hidden
70
+ px-1
71
+ `,
72
+ inputProps?.class
73
+ )"
74
+ v-bind="{ ...inputProps, class: void 0 }"
75
+ :aria-describedby="ariaDescribedBy"
76
+ v-model="searchTerm"
77
+ @keydown.enter="save"
78
+ />
79
+ <Transition>
80
+ <slot
81
+ v-if="showLoadingIndicator"
82
+ name="loading-indicator"
83
+ >
84
+ <WIcon
85
+ v-if="showLoadingIndicator"
86
+ aria-label="Loading suggestions"
87
+ class="
88
+ combobox--loading-indicator
89
+ animate-spin
90
+ text-neutral-500
91
+ -mr-1
92
+ "
93
+ >
94
+ <i-lucide-loader-circle/>
95
+ </WIcon>
96
+ </slot>
97
+ </Transition>
98
+ <ComboboxTrigger
99
+ :as-child="true"
100
+ >
101
+ <slot
102
+ name="trigger"
103
+ v-bind="{ open }"
104
+ >
105
+ <WButton
106
+ :border="false"
107
+ class="combobox--toggle p-0"
108
+ :aria-label="open ? 'Close' : 'Open'"
109
+ >
110
+ <slot
111
+ name="toggle"
112
+ :is-open="open"
113
+ >
114
+ <WIcon
115
+ :class="twMerge(`combobox--toggle scale-150`, open && `rotate-180`)"
116
+ >
117
+ <i-chevron-caret-down/>
118
+ </WIcon>
119
+ </slot>
120
+ </WButton>
121
+ </slot>
122
+ </ComboboxTrigger>
123
+ </div>
124
+ </ComboboxAnchor>
125
+ <ComboboxPortal :to="to">
126
+ <ComboboxContent
127
+ v-if="showEmptyLabel || filtered.length > 0 || errorMessage !== false"
128
+ :style="contentStyle"
129
+ :class="twMerge(`
130
+ combobox--content
131
+ z-100
132
+ w-[var(--reka-combobox-trigger-width)]
133
+ align-end
134
+ bg-white
135
+ dark:bg-neutral-900
136
+ will-change-[opacity,transform]
137
+ data-[side=top]:animate-slideDownAndFade
138
+ data-[side=right]:animate-slideLeftAndFade
139
+ data-[side=bottom]:animate-slideUpAndFade
140
+ data-[side=left]:animate-slideRightAndFade
141
+ border-neutral-300
142
+ dark:border-neutral-700
143
+ border
144
+ rounded-sm
145
+ shadow-lg
146
+ shadow-black/50
147
+ data-[side=bottom]:border-t-0
148
+ data-[side=top]:border-b-0
149
+ dark:data-[side=bottom]:border-t-0
150
+ dark:data-[side=top]:border-b-0
151
+ data-[side=bottom]:rounded-tl-none
152
+ data-[side=bottom]:rounded-tr-none
153
+ data-[side=top]:rounded-bl-none
154
+ data-[side=top]:rounded-br-none
155
+ max-h-[500px]
156
+ overflow-y-auto
157
+ `, contentProps?.class)"
158
+ ref="contentComponent"
159
+ v-bind="{
160
+ side: 'bottom',
161
+ position: 'popper',
162
+ avoidCollisions: true,
163
+ prioritizePosition: true,
164
+ ...contentProps,
165
+ class: void 0
166
+ }"
167
+ >
168
+ <ComboboxViewport
169
+
170
+ class="combobox--viewport flex flex-col"
171
+ >
172
+ <Transition>
173
+ <div
174
+ v-if="useSlots()['header']"
175
+ :id="`${id}-instruction`"
176
+ class="
177
+ combobox--popup-header
178
+ px-2
179
+ flex
180
+ items-center
181
+ justify-center
182
+ "
183
+ >
184
+ <slot
185
+ :filtered="filtered"
186
+ :is-showing-empty-label="showEmptyLabel"
187
+ name="header"
188
+ class="
189
+ text-neutral-800
190
+ dark:text-neutral-200
191
+ combobox--popup-label
192
+ text-ellipsis
193
+ overflow-hidden
194
+ whitespace-nowrap
195
+ "
196
+ />
197
+ </div>
198
+ </Transition>
199
+ <slot
200
+ v-if="errorMessage !== false"
201
+ name="invalid"
202
+ v-bind="{ searchTerm, errorMessage, id: `${id}-error`, role: 'alert' }"
203
+ >
204
+ <div
205
+ :id="`${id}-error`"
206
+ role="alert"
207
+ class="
208
+ combobox--error-message
209
+ text-danger-500
210
+ dark:text-danger-500
211
+ text-sm
212
+ px-2
213
+ py-1
214
+ bg-danger-100
215
+ dark:bg-danger-800
216
+ flex
217
+ items-center
218
+ justify-center
219
+ "
220
+ >
221
+ {{ errorMessage }}
222
+ </div>
223
+ </slot>
224
+ <ComboboxEmpty
225
+ v-if="showEmptyLabel"
226
+ class="
227
+ combobox--empty
228
+ px-2
229
+ text-center
230
+ text-neutral-800
231
+ dark:text-neutral-200
232
+ bg-neutral-100
233
+ dark:bg-neutral-800
234
+ "
235
+ >
236
+ {{ emptyLabel }}
237
+ </ComboboxEmpty>
238
+ <slot
239
+ name="suggestions"
240
+ v-bind="{ filtered, display, searchTerm }"
241
+ >
242
+ <div
243
+ class="
244
+ combobox--suggestions
245
+ flex-col
246
+ flex
247
+ max-h-[500px]
248
+ overflow-y-auto
249
+ "
250
+ >
251
+ <ComboboxItem
252
+ class="
253
+ combobox--suggestion
254
+ flex
255
+ justify-between
256
+ gap-2
257
+ px-2
258
+ cursor-pointer
259
+ data-[highlighted]:outline-hidden
260
+ data-[highlighted]:bg-accent-200
261
+ data-[highlighted]:text-accent-800
262
+ dark:data-[highlighted]:bg-accent-800
263
+ dark:data-[highlighted]:text-accent-200
264
+ "
265
+ :value="suggestion"
266
+ v-for="(suggestion, index) in filtered"
267
+ :key="index"
268
+ >
269
+ <slot
270
+ name="suggestion-icon"
271
+ v-bind="{ suggestion }"
272
+ />
273
+ <slot
274
+ name="suggestion"
275
+ v-bind="{
276
+ suggestion,
277
+ suggestionText: display(suggestion)
278
+ }"
279
+ >
280
+ <div
281
+ class="
282
+ combobox--suggestion-label
283
+ "
284
+ >
285
+ {{ display(suggestion) }}
286
+ </div>
287
+ </slot>
288
+ </ComboboxItem>
289
+ </div>
290
+ </slot>
291
+ </ComboboxViewport>
292
+ </ComboboxContent>
293
+ </ComboboxPortal>
294
+ </ComboboxRoot>
295
+ </template>
296
+
297
+ <script setup>
298
+ import {
299
+ ComboboxAnchor,
300
+ ComboboxContent,
301
+ ComboboxEmpty,
302
+ ComboboxInput,
303
+ ComboboxItem,
304
+ ComboboxPortal,
305
+ ComboboxRoot,
306
+ ComboboxTrigger,
307
+ ComboboxViewport,
308
+ useFilter
309
+ } from "reka-ui";
310
+ import { computed, nextTick, ref, useAttrs, useSlots, useTemplateRef, watch } from "vue";
311
+ import { useDelayedLoadingIndicator } from "../../composables/useDelayedLoadingIndicator.js";
312
+ import { useDisplayForReka } from "../../composables/useDisplayForReka.js";
313
+ import { useFallbackId } from "../../composables/useFallbackId.js";
314
+ import { usePopupConstrainToStyle } from "../../composables/usePopupConstrainToStyle.js";
315
+ import { usePreHydrationValue } from "../../composables/usePreHydrationValue.js";
316
+ import { twMerge } from "../../utils/twMerge.js";
317
+ import WButton from "../WButton/WButton.vue";
318
+ import WIcon from "../WIcon/WIcon.vue";
319
+ const $attrs = useAttrs();
320
+ const emit = defineEmits(["save", "new"]);
321
+ const props = defineProps({
322
+ displayKey: { type: String, required: false },
323
+ displayValue: { type: Function, required: false },
324
+ displayEntry: { type: Function, required: false },
325
+ constrainWidthTo: { type: [Number, String, null], required: false },
326
+ constrainHeightTo: { type: [Number, String, null], required: false },
327
+ id: { type: String, required: false },
328
+ border: { type: Boolean, required: false, default: true },
329
+ to: { type: String, required: false, default: "#root" },
330
+ isValid: { type: Function, required: false, default: (_) => true },
331
+ suggestions: { type: Array, required: true },
332
+ emptyLabel: { type: String, required: false, default: void 0 },
333
+ contentProps: { type: Object, required: false },
334
+ ignoreFilter: { type: Boolean, required: false, default: false },
335
+ restrictToSuggestions: { type: Boolean, required: false, default: false },
336
+ inputProps: { type: Object, required: false }
337
+ });
338
+ const finalId = useFallbackId(props);
339
+ const contentStyle = usePopupConstrainToStyle("combobox-content", props, [props?.contentProps?.style]);
340
+ const modelValue = defineModel({ type: null, ...{ required: false, default: "" } });
341
+ usePreHydrationValue(finalId, modelValue);
342
+ const open = defineModel("open", { type: Boolean, ...{ required: false, default: false } });
343
+ const searchTerm = defineModel("searchTerm", { type: String, ...{ default: "" } });
344
+ const display = useDisplayForReka(props);
345
+ const { contains } = useFilter();
346
+ const filtered = computed(() => {
347
+ const f = props.ignoreFilter ? props.suggestions : props.suggestions.filter((v) => {
348
+ return contains(display(v), searchTerm.value);
349
+ });
350
+ if ((f?.length ?? 0) === 0 && props.restrictToSuggestions) {
351
+ return props.suggestions;
352
+ } else {
353
+ return f;
354
+ }
355
+ });
356
+ const errorMessage = computed(() => {
357
+ if (searchTerm.value === "") return false;
358
+ const isExactMatch = filtered.value.find((v) => display(v) === searchTerm.value);
359
+ if (!props.restrictToSuggestions && isExactMatch) return false;
360
+ const validation = props.isValid(searchTerm.value);
361
+ if (validation === true) return false;
362
+ return validation;
363
+ });
364
+ watch(searchTerm, () => {
365
+ const isExactMatch = filtered.value.find((v) => display(v) === searchTerm.value);
366
+ if (isExactMatch) {
367
+ modelValue.value = isExactMatch;
368
+ }
369
+ });
370
+ function save(e) {
371
+ if (errorMessage.value !== false || searchTerm.value === "") {
372
+ open.value = false;
373
+ return;
374
+ }
375
+ e.preventDefault();
376
+ emit("save", searchTerm.value);
377
+ open.value = false;
378
+ }
379
+ const loading = defineModel("loading", { type: Boolean, ...{ default: false } });
380
+ const showLoadingIndicator = useDelayedLoadingIndicator(loading);
381
+ const showEmptyLabel = computed(() => {
382
+ return errorMessage.value === false && !props.restrictToSuggestions && searchTerm.value !== "" && props.emptyLabel !== "" && !props.suggestions.some((s) => display(s) === searchTerm.value);
383
+ });
384
+ const ariaDescribedBy = computed(() => {
385
+ const ids = [];
386
+ if (open.value) ids.push(`${props.id}-instruction`);
387
+ if (errorMessage.value !== false) ids.push(`${props.id}-error`);
388
+ if ("ariaDescribedby" in $attrs) ids.push($attrs.ariaDescribedby);
389
+ return ids.join(" ") || void 0;
390
+ });
391
+ const contentComp = useTemplateRef("contentComponent");
392
+ const popupSide = ref(void 0);
393
+ watch(open, () => {
394
+ nextTick(() => {
395
+ if (open.value && contentComp.value?.$el) {
396
+ popupSide.value = contentComp.value.$el.getAttribute("data-side");
397
+ } else {
398
+ popupSide.value = void 0;
399
+ }
400
+ });
401
+ });
402
+ </script>
@@ -0,0 +1,109 @@
1
+ import type { AcceptableValue, ComboboxContentEmits, ComboboxContentProps, ComboboxInputEmits, ComboboxInputProps } from "reka-ui";
2
+ import type { EmitsToProps, HTMLAttributes, InputHTMLAttributes } from "vue";
3
+ import { type SuggestionsDisplayProps } from "../../composables/useDisplayForReka.js";
4
+ import type { PopupConstrainToProps } from "../../types/index.js";
5
+ declare const __VLS_export: <TSuggestion extends NonNullable<AcceptableValue>>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
6
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<(SuggestionsDisplayProps<TSuggestion> & PopupConstrainToProps & {
7
+ id?: string;
8
+ border?: boolean;
9
+ to?: string;
10
+ /**
11
+ * Validates the input, return true if valid, otherwise return an error message.
12
+ *
13
+ * If the input is invalid, modelValue is not updated. Empty inputs are visually valid, but they cannot trigger saves or or any setting of modelValue.
14
+ *
15
+ * If restrictToSuggestions is true, the input will be invalid if there is no exact match.
16
+ *
17
+ * `save` will not be emitted when the input is invalid.
18
+ *
19
+ * To show an error message, return a string from the function.
20
+ */
21
+ isValid?: (searchTerm: string) => true | string;
22
+ suggestions: TSuggestion[];
23
+ /** Shown in the popup when the search term is valid, not empty, not already selected, there are no suggestions, and restrictToSuggestions is false. Defaults to undefined. */
24
+ emptyLabel?: string;
25
+ /** The popup can't be styled via the regular class attr because it's teleported. You can also pass any reka ComboboxContent options. */
26
+ contentProps?: {
27
+ class?: string;
28
+ to?: string;
29
+ } & HTMLAttributes & ComboboxContentProps & EmitsToProps<ComboboxContentEmits>;
30
+ /** Disables the filter. */
31
+ ignoreFilter?: boolean;
32
+ /** If false, modelValue is set to the search term (so long as it's valid). */
33
+ restrictToSuggestions?: boolean;
34
+ /** Input attributes or reka-ui ComboboxInput props. */
35
+ inputProps?: Omit<InputHTMLAttributes, "class"> & {
36
+ class?: string;
37
+ } & HTMLAttributes & ComboboxInputProps & EmitsToProps<ComboboxInputEmits>;
38
+ } & {
39
+ modelValue?: TSuggestion;
40
+ open?: boolean;
41
+ searchTerm?: string;
42
+ loading?: boolean;
43
+ }) & {
44
+ "onUpdate:modelValue"?: ((value: TSuggestion) => any) | undefined;
45
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
46
+ "onUpdate:searchTerm"?: ((value: string) => any) | undefined;
47
+ "onUpdate:loading"?: ((value: boolean) => any) | undefined;
48
+ onSave?: ((value: string) => any) | undefined;
49
+ onNew?: ((value: string) => any) | undefined;
50
+ }> & (typeof globalThis extends {
51
+ __VLS_PROPS_FALLBACK: infer P;
52
+ } ? P : {});
53
+ expose: (exposed: {}) => void;
54
+ attrs: any;
55
+ slots: {
56
+ 'loading-indicator'?: (props: {}) => any;
57
+ } & {
58
+ trigger?: (props: {
59
+ open: boolean;
60
+ }) => any;
61
+ } & {
62
+ toggle?: (props: {
63
+ isOpen: boolean;
64
+ }) => any;
65
+ } & {
66
+ header?: (props: {
67
+ class: string;
68
+ filtered: TSuggestion[];
69
+ isShowingEmptyLabel: boolean;
70
+ }) => any;
71
+ } & {
72
+ invalid?: (props: {
73
+ searchTerm: string;
74
+ errorMessage: string;
75
+ id: string;
76
+ role: string;
77
+ }) => any;
78
+ } & {
79
+ suggestions?: (props: {
80
+ filtered: TSuggestion[];
81
+ display: (value: TSuggestion, options?: {
82
+ isForEmit?: boolean;
83
+ }) => string;
84
+ searchTerm: string;
85
+ }) => any;
86
+ } & {
87
+ 'suggestion-icon'?: (props: {
88
+ suggestion: Exclude<TSuggestion, any[]>;
89
+ }) => any;
90
+ } & {
91
+ suggestion?: (props: {
92
+ suggestion: Exclude<TSuggestion, any[]>;
93
+ suggestionText: string;
94
+ }) => any;
95
+ };
96
+ emit: {
97
+ (e: "save", value: string): void;
98
+ (e: "new", value: string): void;
99
+ } & (((event: "update:modelValue", value: TSuggestion) => void) & ((event: "update:open", value: boolean) => void) & ((event: "update:searchTerm", value: string) => void) & ((event: "update:loading", value: boolean) => void));
100
+ }>) => import("vue").VNode & {
101
+ __ctx?: Awaited<typeof __VLS_setup>;
102
+ };
103
+ declare const _default: typeof __VLS_export;
104
+ export default _default;
105
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
106
+ [K in keyof T]: T[K];
107
+ } : {
108
+ [K in keyof T as K]: T[K];
109
+ }) & {};
@@ -0,0 +1,18 @@
1
+ export declare const playBasic: ({ canvasElement }: {
2
+ canvasElement: HTMLElement;
3
+ args: any;
4
+ }) => Promise<void>;
5
+ export declare const playBasicKeyboardSelect: ({ canvasElement }: {
6
+ canvasElement: HTMLElement;
7
+ args: any;
8
+ }) => Promise<void>;
9
+ export declare const playBasicClickSelect: ({ canvasElement }: {
10
+ canvasElement: HTMLElement;
11
+ args: any;
12
+ }) => Promise<void>;
13
+ export declare const playValidation: ({ canvasElement }: {
14
+ canvasElement: HTMLElement;
15
+ }) => Promise<void>;
16
+ export declare const playAllowNewValues: ({ canvasElement }: {
17
+ canvasElement: HTMLElement;
18
+ }) => Promise<void>;
@@ -0,0 +1,68 @@
1
+ import { expect, userEvent, waitFor, within } from "@storybook/test";
2
+ export const playBasic = async ({ canvasElement }) => {
3
+ const canvas = within(canvasElement);
4
+ const input = canvas.getByRole("combobox");
5
+ await userEvent.clear(input);
6
+ await userEvent.type(input, "A");
7
+ await expect(canvas.getByTestId("model-value")).toHaveTextContent("A");
8
+ await userEvent.clear(input);
9
+ await userEvent.type(input, "[Esc]");
10
+ await expect(canvas.getByTestId("search-term")).toHaveTextContent("");
11
+ await expect(canvas.getByTestId("model-value")).toHaveTextContent("A");
12
+ };
13
+ export const playBasicKeyboardSelect = async ({ canvasElement }) => {
14
+ const canvas = within(canvasElement);
15
+ const input = canvas.getByRole("combobox");
16
+ await userEvent.clear(input);
17
+ await userEvent.type(input, "A");
18
+ await expect(canvas.getByRole("listbox")).toBeInTheDocument();
19
+ await userEvent.keyboard("{ArrowDown}");
20
+ const options = canvas.getAllByRole("option");
21
+ await expect(options[1]).toHaveAttribute("data-highlighted");
22
+ await userEvent.keyboard("{Enter}");
23
+ await expect(canvas.getByTestId("model-value")).toHaveTextContent(options[0].textContent?.trim() ?? "");
24
+ };
25
+ export const playBasicClickSelect = async ({ canvasElement }) => {
26
+ const canvas = within(canvasElement);
27
+ const input = canvas.getByRole("combobox");
28
+ await userEvent.clear(input);
29
+ await userEvent.click(input);
30
+ const option = canvas.getByRole("option", { name: "AB" });
31
+ await userEvent.click(option);
32
+ await expect(canvas.getByTestId("model-value")).toHaveTextContent("AB");
33
+ await waitFor(() => {
34
+ expect(canvas.queryByRole("listbox")).not.toBeInTheDocument();
35
+ });
36
+ };
37
+ export const playValidation = async ({ canvasElement }) => {
38
+ const canvas = within(canvasElement);
39
+ const input = canvas.getByRole("combobox");
40
+ await userEvent.clear(input);
41
+ await userEvent.type(input, "Invalid");
42
+ await userEvent.click(input);
43
+ const body = within(document.body);
44
+ await waitFor(() => {
45
+ expect(body.getByRole("alert")).toBeInTheDocument();
46
+ });
47
+ };
48
+ export const playAllowNewValues = async ({ canvasElement }) => {
49
+ const canvas = within(canvasElement);
50
+ const input = canvas.getByRole("combobox");
51
+ await userEvent.clear(input);
52
+ const newValue = "New Custom Value";
53
+ await userEvent.type(input, newValue);
54
+ const body = within(document.body);
55
+ await waitFor(() => {
56
+ expect(body.getByText(/Press Enter to Add Value/i)).toBeInTheDocument();
57
+ });
58
+ await userEvent.keyboard("{Enter}");
59
+ await expect(canvas.getByTestId("model-value")).toHaveTextContent(newValue);
60
+ await userEvent.clear(input);
61
+ await userEvent.type(input, newValue);
62
+ expect(body.queryByText(/Press Enter to Add Value/i)).not.toBeInTheDocument();
63
+ await userEvent.clear(input);
64
+ await userEvent.type(input, "New");
65
+ await waitFor(() => {
66
+ expect(body.getByRole("option", { name: newValue })).toBeInTheDocument();
67
+ });
68
+ };
@@ -1,23 +1,18 @@
1
1
  import { type ButtonHTMLAttributes } from "vue";
2
- import type { TailwindClassProp } from "../shared/props.js";
3
- declare const _default: typeof __VLS_export;
4
- export default _default;
5
- type RealProps = {
6
- showLabel?: boolean;
7
- };
8
- interface Props extends
9
- /** @vue-ignore */
10
- Partial<Omit<ButtonHTMLAttributes, "class" | "color" | "disabled"> & TailwindClassProp & {
2
+ import type { BaseInteractiveProps, TailwindClassProp } from "../../types/index.js";
3
+ type __VLS_Props = Pick<BaseInteractiveProps, "border"> & {
11
4
  disabled?: boolean;
12
5
  unstyle?: boolean;
13
- }>, RealProps {
14
- }
15
- declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
6
+ showLabel?: boolean;
7
+ } & /** @vue-ignore */ Omit<ButtonHTMLAttributes, "class"> & /** @vue-ignore */ TailwindClassProp;
8
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
16
9
  "update:darkMode": (value: boolean) => any;
17
10
  "update:darkModeState": (value: "system" | "dark" | "light") => any;
18
- }, string, import("vue").PublicProps, Readonly<Props> & Readonly<{
11
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
19
12
  "onUpdate:darkMode"?: ((value: boolean) => any) | undefined;
20
13
  "onUpdate:darkModeState"?: ((value: "system" | "dark" | "light") => any) | undefined;
21
14
  }>, {
22
15
  showLabel: boolean;
23
16
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
17
+ declare const _default: typeof __VLS_export;
18
+ export default _default;
@@ -1,7 +1,7 @@
1
1
  <template>
2
- <lib-button
2
+ <WButton
3
3
  v-bind="{ ...$attrs, class: void 0 }"
4
- :class="!$attrs.unstyle && twMerge(
4
+ :class="!unstyle && twMerge(
5
5
  `
6
6
  dark-mode-switcher
7
7
  rounded-full
@@ -9,16 +9,16 @@
9
9
  `,
10
10
  $attrs?.class
11
11
  )"
12
- :title="`${t('dark-mode-switcher.title')}${t(`dark-mode-switcher.${darkModeState}`)}`"
12
+ :aria-label="`${t('dark-mode-switcher.title')}${t(`dark-mode-switcher.${darkModeState}`)}`"
13
13
  @click="cycleDarkMode"
14
14
  >
15
15
  <!-- content-vertical-holder will keep the icon the height of a text line regardless of the svg used -->
16
16
  <template #icon>
17
- <icon
17
+ <WIcon
18
18
  class="w-[1em] items-center content-vertical-holder"
19
19
  >
20
20
  <component :is="darkModeState === 'dark' ? IFaSolidMoon : darkModeState === 'light' ? IPhSunBold : IFa6SolidCircleHalfStroke"/>
21
- </icon>
21
+ </WIcon>
22
22
  </template>
23
23
  <template
24
24
  #default
@@ -28,7 +28,7 @@
28
28
  {{ t(`dark-mode-switcher.${darkModeState}`) }}
29
29
  </div>
30
30
  </template>
31
- </lib-button>
31
+ </Wbutton>
32
32
  </template>
33
33
 
34
34
  <script setup>
@@ -39,12 +39,15 @@ import IPhSunBold from "~icons/ph/sun-bold";
39
39
  import { useInjectedDarkMode } from "../../composables/useInjectedDarkMode.js";
40
40
  import { useInjectedI18n } from "../../composables/useInjectedI18n.js";
41
41
  import { twMerge } from "../../utils/twMerge.js";
42
- import Icon from "../Icon/Icon.vue";
43
- import LibButton from "../LibButton/LibButton.vue";
42
+ import WButton from "../WButton/WButton.vue";
43
+ import WIcon from "../WIcon/WIcon.vue";
44
44
  const t = useInjectedI18n();
45
45
  const emit = defineEmits(["update:darkMode", "update:darkModeState"]);
46
46
  const $attrs = useAttrs();
47
47
  defineProps({
48
+ border: { type: Boolean, required: false },
49
+ disabled: { type: Boolean, required: false },
50
+ unstyle: { type: Boolean, required: false },
48
51
  showLabel: { type: Boolean, required: false, default: true }
49
52
  });
50
53
  const {
@@ -58,9 +61,3 @@ onMounted(() => {
58
61
  emit("update:darkMode", darkMode.value);
59
62
  });
60
63
  </script>
61
-
62
- <script>
63
- export default {
64
- name: "LibDarkModeSwitcher"
65
- };
66
- </script>