@witchcraft/ui 0.3.26 → 0.4.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (287) hide show
  1. package/README.md +54 -61
  2. package/dist/module.json +1 -1
  3. package/dist/module.mjs +1 -1
  4. package/dist/runtime/assets/animations.css +1 -1
  5. package/dist/runtime/assets/locales/en.json +2 -0
  6. package/dist/runtime/build/WitchcraftUiResolver.js +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 +2 -2
  106. package/dist/runtime/injectionKeys.d.ts +1 -5
  107. package/dist/runtime/injectionKeys.js +0 -2
  108. package/dist/runtime/types/index.d.ts +85 -27
  109. package/dist/runtime/types/index.js +1 -0
  110. package/package.json +1 -1
  111. package/src/module.ts +1 -1
  112. package/src/runtime/assets/animations.css +3 -3
  113. package/src/runtime/assets/locales/en.json +2 -0
  114. package/src/runtime/build/WitchcraftUiResolver.ts +1 -1
  115. package/src/runtime/components/TestControls/TestControls.vue +3 -3
  116. package/src/runtime/components/WButton/WButton.stories.ts +112 -0
  117. package/src/runtime/components/{LibButton/LibButton.vue → WButton/WButton.vue} +34 -50
  118. package/src/runtime/components/{LibCheckbox/LibCheckbox.stories.ts → WCheckbox/WCheckbox.stories.ts} +5 -5
  119. package/src/runtime/components/WCheckbox/WCheckbox.vue +123 -0
  120. package/src/runtime/components/{LibColorInput/LibColorInput.stories.ts → WColorInput/WColorInput.stories.ts} +8 -8
  121. package/src/runtime/components/WColorInput/WColorInput.vue +112 -0
  122. package/src/runtime/components/WColorInput/WColorSwatchButton.vue +102 -0
  123. package/src/runtime/components/{LibColorPicker/LibColorPicker.stories.ts → WColorPicker/WColorPicker.stories.ts} +12 -12
  124. package/src/runtime/components/{LibColorPicker/LibColorPicker.vue → WColorPicker/WColorPicker.vue} +43 -32
  125. package/src/runtime/components/WCombobox/WCombobox.stories.ts +209 -0
  126. package/src/runtime/components/WCombobox/WCombobox.vue +446 -0
  127. package/src/runtime/components/WCombobox/storyPlays.ts +92 -0
  128. package/src/runtime/components/{LibDarkModeSwitcher/LibDarkModeSwitcher.stories.ts → WDarkModeSwitcher/WDarkModeSwitcher.stories.ts} +6 -6
  129. package/src/runtime/components/{LibDarkModeSwitcher/LibDarkModeSwitcher.vue → WDarkModeSwitcher/WDarkModeSwitcher.vue} +19 -30
  130. package/src/runtime/components/{LibDatePicker/LibDatePicker.stories.ts → WDatePicker/WDatePicker.stories.ts} +42 -34
  131. package/src/runtime/components/{LibDatePicker/LibDatePicker.vue → WDatePicker/WDatePicker.vue} +3 -7
  132. package/src/runtime/components/{LibDatePicker/LibRangeDatePicker.vue → WDatePicker/WRangeDatePicker.vue} +16 -22
  133. package/src/runtime/components/{LibDatePicker/LibSingleDatePicker.vue → WDatePicker/WSingleDatePicker.vue} +16 -22
  134. package/src/runtime/components/{LibDatePicker/LibTimeZonePicker.vue → WDatePicker/WTimeZonePicker.vue} +5 -12
  135. package/src/runtime/components/{LibDebug/LibDebug.stories.ts → WDebug/WDebug.stories.ts} +5 -5
  136. package/src/runtime/components/{LibDebug/LibDebug.vue → WDebug/WDebug.vue} +8 -11
  137. package/src/runtime/components/{LibDevOnly/LibDevOnly.vue → WDevOnly/WDevOnly.vue} +0 -4
  138. package/src/runtime/components/{LibFileInput/LibFileInput.stories.ts → WFileInput/WFileInput.stories.ts} +7 -7
  139. package/src/runtime/components/{LibFileInput/LibFileInput.vue → WFileInput/WFileInput.vue} +95 -98
  140. package/src/runtime/components/{Icon/Icon.vue → WIcon/WIcon.vue} +5 -8
  141. package/src/runtime/components/{LibMultiValues/LibMultiValues.stories.ts → WMultiValues/WMultiValues.stories.ts} +9 -9
  142. package/src/runtime/components/WMultiValues/WMultiValues.vue +161 -0
  143. package/src/runtime/components/{LibNotifications/LibNotification.stories.ts → WNotifications/WNotification.stories.ts} +9 -9
  144. package/src/runtime/components/{LibNotifications/LibNotification.vue → WNotifications/WNotification.vue} +43 -66
  145. package/src/runtime/components/WNotifications/WNotifications.stories.ts +139 -0
  146. package/src/runtime/components/{LibNotifications/LibNotifications.vue → WNotifications/WNotifications.vue} +51 -29
  147. package/src/runtime/components/WNumberInput/WNumberInput.vue +109 -0
  148. package/src/runtime/components/WPagination/WPagination.stories.ts +51 -0
  149. package/src/runtime/components/WPagination/WPagination.vue +207 -0
  150. package/src/runtime/components/{LibPalette/LibPalette.stories.ts → WPalette/WPalette.stories.ts} +6 -6
  151. package/src/runtime/components/{LibPalette/LibPalette.vue → WPalette/WPalette.vue} +3 -8
  152. package/src/runtime/components/WPopover/WPopover.stories.ts +218 -0
  153. package/src/runtime/components/WPopover/WPopover.vue +161 -0
  154. package/src/runtime/components/WPopup/WPopup.stories.ts +60 -0
  155. package/src/runtime/components/WPopup/WPopup.vue +93 -0
  156. package/src/runtime/components/WProgressBar/WProgressBar.stories.ts +119 -0
  157. package/src/runtime/components/WProgressBar/WProgressBar.vue +185 -0
  158. package/src/runtime/components/{LibRecorder/LibRecorder.stories.ts → WRecorder/WRecorder.stories.ts} +9 -6
  159. package/src/runtime/components/{LibRecorder/LibRecorder.vue → WRecorder/WRecorder.vue} +69 -68
  160. package/src/runtime/components/{LibRoot/LibRoot.vue → WRoot/WRoot.vue} +18 -15
  161. package/src/runtime/components/{LibSimpleInput/LibSimpleInput.stories.ts → WSimpleInput/WSimpleInput.stories.ts} +11 -12
  162. package/src/runtime/components/{LibSimpleInput/LibSimpleInput.vue → WSimpleInput/WSimpleInput.vue} +27 -44
  163. package/src/runtime/components/{LibTable/LibTable.stories.ts → WTable/WTable.stories.ts} +60 -52
  164. package/src/runtime/components/{LibTable/LibTable.vue → WTable/WTable.vue} +85 -87
  165. package/src/runtime/components/WTooltip/WTooltip.stories.ts +82 -0
  166. package/src/runtime/components/WTooltip/WTooltip.vue +126 -0
  167. package/src/runtime/components/index.ts +20 -20
  168. package/src/runtime/composables/index.ts +4 -4
  169. package/src/runtime/composables/useDelayedLoadingIndicator.ts +30 -0
  170. package/src/runtime/composables/useDisplayForReka.ts +37 -0
  171. package/src/runtime/composables/useFallbackId.ts +6 -0
  172. package/src/runtime/composables/useInjectedDarkMode.ts +1 -2
  173. package/src/runtime/composables/usePopupConstrainToStyle.ts +29 -0
  174. package/src/runtime/composables/useSetupDarkMode.ts +122 -4
  175. package/src/runtime/helpers/NotificationHandler.ts +2 -2
  176. package/src/runtime/injectionKeys.ts +1 -7
  177. package/src/runtime/types/index.ts +105 -32
  178. package/types/components.d.ts +13 -15
  179. package/dist/runtime/components/Aria/Aria.d.vue.ts +0 -6
  180. package/dist/runtime/components/Aria/Aria.vue +0 -16
  181. package/dist/runtime/components/Aria/Aria.vue.d.ts +0 -6
  182. package/dist/runtime/components/LibButton/LibButton.d.vue.ts +0 -37
  183. package/dist/runtime/components/LibButton/LibButton.vue.d.ts +0 -37
  184. package/dist/runtime/components/LibCheckbox/LibCheckbox.d.vue.ts +0 -41
  185. package/dist/runtime/components/LibCheckbox/LibCheckbox.vue +0 -103
  186. package/dist/runtime/components/LibCheckbox/LibCheckbox.vue.d.ts +0 -41
  187. package/dist/runtime/components/LibColorInput/LibColorInput.d.vue.ts +0 -64
  188. package/dist/runtime/components/LibColorInput/LibColorInput.vue +0 -162
  189. package/dist/runtime/components/LibColorInput/LibColorInput.vue.d.ts +0 -64
  190. package/dist/runtime/components/LibDatePicker/LibDatePicker.d.vue.ts +0 -191
  191. package/dist/runtime/components/LibDatePicker/LibDatePicker.vue.d.ts +0 -191
  192. package/dist/runtime/components/LibFileInput/LibFileInput.d.vue.ts +0 -46
  193. package/dist/runtime/components/LibFileInput/LibFileInput.vue.d.ts +0 -46
  194. package/dist/runtime/components/LibInputDeprecated/LibInputDeprecated.d.vue.ts +0 -256
  195. package/dist/runtime/components/LibInputDeprecated/LibInputDeprecated.vue +0 -387
  196. package/dist/runtime/components/LibInputDeprecated/LibInputDeprecated.vue.d.ts +0 -256
  197. package/dist/runtime/components/LibLabel/LibLabel.d.vue.ts +0 -27
  198. package/dist/runtime/components/LibLabel/LibLabel.vue +0 -45
  199. package/dist/runtime/components/LibLabel/LibLabel.vue.d.ts +0 -27
  200. package/dist/runtime/components/LibMultiValues/LibMultiValues.vue +0 -109
  201. package/dist/runtime/components/LibNotifications/LibNotification.d.vue.ts +0 -45
  202. package/dist/runtime/components/LibNotifications/LibNotification.vue.d.ts +0 -45
  203. package/dist/runtime/components/LibNotifications/LibNotifications.d.vue.ts +0 -15
  204. package/dist/runtime/components/LibNotifications/LibNotifications.vue.d.ts +0 -15
  205. package/dist/runtime/components/LibPagination/LibPagination.d.vue.ts +0 -105
  206. package/dist/runtime/components/LibPagination/LibPagination.vue +0 -229
  207. package/dist/runtime/components/LibPagination/LibPagination.vue.d.ts +0 -105
  208. package/dist/runtime/components/LibPalette/LibPalette.d.vue.ts +0 -15
  209. package/dist/runtime/components/LibPalette/LibPalette.vue.d.ts +0 -15
  210. package/dist/runtime/components/LibPopup/LibPopup.d.vue.ts +0 -52
  211. package/dist/runtime/components/LibPopup/LibPopup.vue +0 -365
  212. package/dist/runtime/components/LibPopup/LibPopup.vue.d.ts +0 -52
  213. package/dist/runtime/components/LibProgressBar/LibProgressBar.vue +0 -169
  214. package/dist/runtime/components/LibSuggestions/LibSuggestions.d.vue.ts +0 -99
  215. package/dist/runtime/components/LibSuggestions/LibSuggestions.vue +0 -178
  216. package/dist/runtime/components/LibSuggestions/LibSuggestions.vue.d.ts +0 -99
  217. package/dist/runtime/components/LibTable/LibTable.d.vue.ts +0 -125
  218. package/dist/runtime/components/LibTable/LibTable.vue.d.ts +0 -125
  219. package/dist/runtime/components/Template/NAME.d.vue.ts +0 -18
  220. package/dist/runtime/components/Template/NAME.vue +0 -27
  221. package/dist/runtime/components/Template/NAME.vue.d.ts +0 -18
  222. package/dist/runtime/components/Template/TemplateStory.d.ts +0 -7
  223. package/dist/runtime/components/Template/TemplateStory.js +0 -22
  224. package/dist/runtime/components/shared/props.d.ts +0 -171
  225. package/dist/runtime/components/shared/props.js +0 -2
  226. package/dist/runtime/composables/useAriaLabel.d.ts +0 -6
  227. package/dist/runtime/composables/useAriaLabel.js +0 -15
  228. package/dist/runtime/composables/useDarkMode.d.ts +0 -77
  229. package/dist/runtime/composables/useDarkMode.js +0 -89
  230. package/dist/runtime/composables/useDivideAttrs.d.ts +0 -27
  231. package/dist/runtime/composables/useDivideAttrs.js +0 -27
  232. package/dist/runtime/composables/useSuggestions.d.ts +0 -40
  233. package/dist/runtime/composables/useSuggestions.js +0 -263
  234. package/src/runtime/components/Aria/Aria.vue +0 -26
  235. package/src/runtime/components/LibButton/LibButton.stories.ts +0 -106
  236. package/src/runtime/components/LibCheckbox/LibCheckbox.vue +0 -131
  237. package/src/runtime/components/LibColorInput/LibColorInput.vue +0 -203
  238. package/src/runtime/components/LibInputDeprecated/LibInputDeprecated.stories.ts +0 -405
  239. package/src/runtime/components/LibInputDeprecated/LibInputDeprecated.vue +0 -419
  240. package/src/runtime/components/LibLabel/LibLabel.stories.ts +0 -33
  241. package/src/runtime/components/LibLabel/LibLabel.vue +0 -65
  242. package/src/runtime/components/LibMultiValues/LibMultiValues.vue +0 -123
  243. package/src/runtime/components/LibNotifications/LibNotifications.stories.ts +0 -131
  244. package/src/runtime/components/LibPagination/LibPagination.stories.ts +0 -49
  245. package/src/runtime/components/LibPagination/LibPagination.vue +0 -274
  246. package/src/runtime/components/LibPopup/LibPopup.stories.ts +0 -153
  247. package/src/runtime/components/LibPopup/LibPopup.vue +0 -396
  248. package/src/runtime/components/LibProgressBar/LibProgressBar.stories.ts +0 -90
  249. package/src/runtime/components/LibProgressBar/LibProgressBar.vue +0 -197
  250. package/src/runtime/components/LibSuggestions/LibSuggestions.stories.ts +0 -134
  251. package/src/runtime/components/LibSuggestions/LibSuggestions.vue +0 -212
  252. package/src/runtime/components/Template/NAME.vue +0 -49
  253. package/src/runtime/components/Template/TemplateStory.ts +0 -37
  254. package/src/runtime/components/shared/props.ts +0 -199
  255. package/src/runtime/composables/useAriaLabel.ts +0 -23
  256. package/src/runtime/composables/useDarkMode.ts +0 -199
  257. package/src/runtime/composables/useDivideAttrs.ts +0 -53
  258. package/src/runtime/composables/useSuggestions.ts +0 -339
  259. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToHsva.d.ts +0 -0
  260. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToHsva.js +0 -0
  261. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToRgba.d.ts +0 -0
  262. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToRgba.js +0 -0
  263. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/toLowPrecisionRgbaString.d.ts +0 -0
  264. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/toLowPrecisionRgbaString.js +0 -0
  265. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/truncate.d.ts +0 -0
  266. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/truncate.js +0 -0
  267. /package/dist/runtime/components/{LibDatePicker/LibRangeDatePicker.d.vue.ts → WDatePicker/WRangeDatePicker.d.vue.ts} +0 -0
  268. /package/dist/runtime/components/{LibDatePicker/LibRangeDatePicker.vue.d.ts → WDatePicker/WRangeDatePicker.vue.d.ts} +0 -0
  269. /package/dist/runtime/components/{LibDatePicker/LibSingleDatePicker.d.vue.ts → WDatePicker/WSingleDatePicker.d.vue.ts} +0 -0
  270. /package/dist/runtime/components/{LibDatePicker/LibSingleDatePicker.vue.d.ts → WDatePicker/WSingleDatePicker.vue.d.ts} +0 -0
  271. /package/dist/runtime/components/{LibDatePicker → WDatePicker}/helpers.d.ts +0 -0
  272. /package/dist/runtime/components/{LibDatePicker → WDatePicker}/helpers.js +0 -0
  273. /package/dist/runtime/components/{LibDebug/LibDebug.d.vue.ts → WDebug/WDebug.d.vue.ts} +0 -0
  274. /package/dist/runtime/components/{LibDebug/LibDebug.vue.d.ts → WDebug/WDebug.vue.d.ts} +0 -0
  275. /package/dist/runtime/components/{LibDevOnly/LibDevOnly.vue → WDevOnly/WDevOnly.vue} +0 -0
  276. /package/dist/runtime/components/{LibNotifications/LibNotificationTestMessageComponent.d.vue.ts → WNotifications/WNotificationTestMessageComponent.d.vue.ts} +0 -0
  277. /package/dist/runtime/components/{LibNotifications/LibNotificationTestMessageComponent.vue → WNotifications/WNotificationTestMessageComponent.vue} +0 -0
  278. /package/dist/runtime/components/{LibNotifications/LibNotificationTestMessageComponent.vue.d.ts → WNotifications/WNotificationTestMessageComponent.vue.d.ts} +0 -0
  279. /package/dist/runtime/components/{LibNotifications → WNotifications}/calculateNotificationProgress.d.ts +0 -0
  280. /package/dist/runtime/components/{LibNotifications → WNotifications}/calculateNotificationProgress.js +0 -0
  281. /package/src/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToHsva.ts +0 -0
  282. /package/src/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToRgba.ts +0 -0
  283. /package/src/runtime/components/{LibColorPicker → WColorPicker}/utils/toLowPrecisionRgbaString.ts +0 -0
  284. /package/src/runtime/components/{LibColorPicker → WColorPicker}/utils/truncate.ts +0 -0
  285. /package/src/runtime/components/{LibDatePicker → WDatePicker}/helpers.ts +0 -0
  286. /package/src/runtime/components/{LibNotifications/LibNotificationTestMessageComponent.vue → WNotifications/WNotificationTestMessageComponent.vue} +0 -0
  287. /package/src/runtime/components/{LibNotifications → WNotifications}/calculateNotificationProgress.ts +0 -0
@@ -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
+ onSave?: ((value: string) => any) | undefined;
47
+ "onUpdate:searchTerm"?: ((value: string) => any) | undefined;
48
+ "onUpdate:loading"?: ((value: boolean) => 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>