@witchcraft/ui 0.3.26 → 0.4.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (287) hide show
  1. package/README.md +54 -61
  2. package/dist/module.json +1 -1
  3. package/dist/module.mjs +1 -1
  4. package/dist/runtime/assets/animations.css +1 -1
  5. package/dist/runtime/assets/locales/en.json +2 -0
  6. package/dist/runtime/build/WitchcraftUiResolver.js +2 -2
  7. package/dist/runtime/components/TestControls/TestControls.vue +3 -3
  8. package/dist/runtime/components/WButton/WButton.d.vue.ts +34 -0
  9. package/dist/runtime/components/{LibButton/LibButton.vue → WButton/WButton.vue} +26 -38
  10. package/dist/runtime/components/WButton/WButton.vue.d.ts +34 -0
  11. package/dist/runtime/components/WCheckbox/WCheckbox.d.vue.ts +33 -0
  12. package/dist/runtime/components/WCheckbox/WCheckbox.vue +110 -0
  13. package/dist/runtime/components/WCheckbox/WCheckbox.vue.d.ts +33 -0
  14. package/dist/runtime/components/WColorInput/WColorInput.d.vue.ts +45 -0
  15. package/dist/runtime/components/WColorInput/WColorInput.vue +85 -0
  16. package/dist/runtime/components/WColorInput/WColorInput.vue.d.ts +45 -0
  17. package/dist/runtime/components/WColorInput/WColorSwatchButton.d.vue.ts +28 -0
  18. package/dist/runtime/components/WColorInput/WColorSwatchButton.vue +86 -0
  19. package/dist/runtime/components/WColorInput/WColorSwatchButton.vue.d.ts +28 -0
  20. package/dist/runtime/components/{LibColorPicker/LibColorPicker.d.vue.ts → WColorPicker/WColorPicker.d.vue.ts} +7 -6
  21. package/dist/runtime/components/{LibColorPicker/LibColorPicker.vue → WColorPicker/WColorPicker.vue} +41 -29
  22. package/dist/runtime/components/{LibColorPicker/LibColorPicker.vue.d.ts → WColorPicker/WColorPicker.vue.d.ts} +7 -6
  23. package/dist/runtime/components/WCombobox/WCombobox.d.vue.ts +111 -0
  24. package/dist/runtime/components/WCombobox/WCombobox.vue +405 -0
  25. package/dist/runtime/components/WCombobox/WCombobox.vue.d.ts +111 -0
  26. package/dist/runtime/components/WCombobox/storyPlays.d.ts +18 -0
  27. package/dist/runtime/components/WCombobox/storyPlays.js +68 -0
  28. package/dist/runtime/components/{LibDarkModeSwitcher/LibDarkModeSwitcher.d.vue.ts → WDarkModeSwitcher/WDarkModeSwitcher.d.vue.ts} +8 -13
  29. package/dist/runtime/components/{LibDarkModeSwitcher/LibDarkModeSwitcher.vue → WDarkModeSwitcher/WDarkModeSwitcher.vue} +11 -14
  30. package/dist/runtime/components/{LibDarkModeSwitcher/LibDarkModeSwitcher.vue.d.ts → WDarkModeSwitcher/WDarkModeSwitcher.vue.d.ts} +8 -13
  31. package/dist/runtime/components/WDatePicker/WDatePicker.d.vue.ts +40 -0
  32. package/dist/runtime/components/{LibDatePicker/LibDatePicker.vue → WDatePicker/WDatePicker.vue} +3 -7
  33. package/dist/runtime/components/WDatePicker/WDatePicker.vue.d.ts +40 -0
  34. package/dist/runtime/components/{LibDatePicker/LibRangeDatePicker.vue → WDatePicker/WRangeDatePicker.vue} +21 -21
  35. package/dist/runtime/components/{LibDatePicker/LibSingleDatePicker.vue → WDatePicker/WSingleDatePicker.vue} +21 -21
  36. package/dist/runtime/components/{LibDatePicker/LibTimeZonePicker.d.vue.ts → WDatePicker/WTimeZonePicker.d.vue.ts} +1 -11
  37. package/dist/runtime/components/{LibDatePicker/LibTimeZonePicker.vue → WDatePicker/WTimeZonePicker.vue} +5 -12
  38. package/dist/runtime/components/{LibDatePicker/LibTimeZonePicker.vue.d.ts → WDatePicker/WTimeZonePicker.vue.d.ts} +1 -11
  39. package/dist/runtime/components/{LibDebug/LibDebug.vue → WDebug/WDebug.vue} +10 -12
  40. package/dist/runtime/components/{LibDevOnly/LibDevOnly.d.vue.ts → WDevOnly/WDevOnly.d.vue.ts} +0 -3
  41. package/dist/runtime/components/{LibDevOnly/LibDevOnly.vue.d.ts → WDevOnly/WDevOnly.vue.d.ts} +0 -3
  42. package/dist/runtime/components/WFileInput/WFileInput.d.vue.ts +58 -0
  43. package/dist/runtime/components/{LibFileInput/LibFileInput.vue → WFileInput/WFileInput.vue} +74 -57
  44. package/dist/runtime/components/WFileInput/WFileInput.vue.d.ts +58 -0
  45. package/dist/runtime/components/{Icon/Icon.vue.d.ts → WIcon/WIcon.d.vue.ts} +2 -6
  46. package/dist/runtime/components/{Icon/Icon.vue → WIcon/WIcon.vue} +1 -1
  47. package/dist/runtime/components/{Icon/Icon.d.vue.ts → WIcon/WIcon.vue.d.ts} +2 -6
  48. package/dist/runtime/components/{LibMultiValues/LibMultiValues.d.vue.ts → WMultiValues/WMultiValues.d.vue.ts} +8 -14
  49. package/dist/runtime/components/WMultiValues/WMultiValues.vue +150 -0
  50. package/dist/runtime/components/{LibMultiValues/LibMultiValues.vue.d.ts → WMultiValues/WMultiValues.vue.d.ts} +8 -14
  51. package/dist/runtime/components/WNotifications/WNotification.d.vue.ts +37 -0
  52. package/dist/runtime/components/{LibNotifications/LibNotification.vue → WNotifications/WNotification.vue} +34 -47
  53. package/dist/runtime/components/WNotifications/WNotification.vue.d.ts +37 -0
  54. package/dist/runtime/components/WNotifications/WNotifications.d.vue.ts +11 -0
  55. package/dist/runtime/components/{LibNotifications/LibNotifications.vue → WNotifications/WNotifications.vue} +35 -17
  56. package/dist/runtime/components/WNotifications/WNotifications.vue.d.ts +11 -0
  57. package/dist/runtime/components/WNumberInput/WNumberInput.d.vue.ts +27 -0
  58. package/dist/runtime/components/WNumberInput/WNumberInput.vue +96 -0
  59. package/dist/runtime/components/WNumberInput/WNumberInput.vue.d.ts +27 -0
  60. package/dist/runtime/components/WPagination/WPagination.d.vue.ts +59 -0
  61. package/dist/runtime/components/WPagination/WPagination.vue +182 -0
  62. package/dist/runtime/components/WPagination/WPagination.vue.d.ts +59 -0
  63. package/dist/runtime/components/WPalette/WPalette.d.vue.ts +11 -0
  64. package/dist/runtime/components/{LibPalette/LibPalette.vue → WPalette/WPalette.vue} +3 -8
  65. package/dist/runtime/components/WPalette/WPalette.vue.d.ts +11 -0
  66. package/dist/runtime/components/WPopover/WPopover.d.vue.ts +45 -0
  67. package/dist/runtime/components/WPopover/WPopover.vue +144 -0
  68. package/dist/runtime/components/WPopover/WPopover.vue.d.ts +45 -0
  69. package/dist/runtime/components/WPopup/WPopup.d.vue.ts +51 -0
  70. package/dist/runtime/components/WPopup/WPopup.vue +106 -0
  71. package/dist/runtime/components/WPopup/WPopup.vue.d.ts +51 -0
  72. package/dist/runtime/components/{LibProgressBar/LibProgressBar.d.vue.ts → WProgressBar/WProgressBar.d.vue.ts} +14 -18
  73. package/dist/runtime/components/WProgressBar/WProgressBar.vue +150 -0
  74. package/dist/runtime/components/{LibProgressBar/LibProgressBar.vue.d.ts → WProgressBar/WProgressBar.vue.d.ts} +14 -18
  75. package/dist/runtime/components/{LibRecorder/LibRecorder.d.vue.ts → WRecorder/WRecorder.d.vue.ts} +14 -29
  76. package/dist/runtime/components/{LibRecorder/LibRecorder.vue → WRecorder/WRecorder.vue} +37 -36
  77. package/dist/runtime/components/{LibRecorder/LibRecorder.vue.d.ts → WRecorder/WRecorder.vue.d.ts} +14 -29
  78. package/dist/runtime/components/{LibRoot/LibRoot.d.vue.ts → WRoot/WRoot.d.vue.ts} +6 -5
  79. package/dist/runtime/components/{LibRoot/LibRoot.vue → WRoot/WRoot.vue} +17 -15
  80. package/dist/runtime/components/{LibRoot/LibRoot.vue.d.ts → WRoot/WRoot.vue.d.ts} +6 -5
  81. package/dist/runtime/components/{LibSimpleInput/LibSimpleInput.d.vue.ts → WSimpleInput/WSimpleInput.d.vue.ts} +10 -16
  82. package/dist/runtime/components/{LibSimpleInput/LibSimpleInput.vue → WSimpleInput/WSimpleInput.vue} +14 -24
  83. package/dist/runtime/components/{LibSimpleInput/LibSimpleInput.vue.d.ts → WSimpleInput/WSimpleInput.vue.d.ts} +10 -16
  84. package/dist/runtime/components/WTable/WTable.d.vue.ts +102 -0
  85. package/dist/runtime/components/{LibTable/LibTable.vue → WTable/WTable.vue} +13 -14
  86. package/dist/runtime/components/WTable/WTable.vue.d.ts +102 -0
  87. package/dist/runtime/components/WTooltip/WTooltip.d.vue.ts +40 -0
  88. package/dist/runtime/components/WTooltip/WTooltip.vue +112 -0
  89. package/dist/runtime/components/WTooltip/WTooltip.vue.d.ts +40 -0
  90. package/dist/runtime/components/index.d.ts +20 -20
  91. package/dist/runtime/components/index.js +20 -20
  92. package/dist/runtime/composables/index.d.ts +4 -4
  93. package/dist/runtime/composables/index.js +4 -4
  94. package/dist/runtime/composables/useDelayedLoadingIndicator.d.ts +9 -0
  95. package/dist/runtime/composables/useDelayedLoadingIndicator.js +18 -0
  96. package/dist/runtime/composables/useDisplayForReka.d.ts +25 -0
  97. package/dist/runtime/composables/useDisplayForReka.js +16 -0
  98. package/dist/runtime/composables/useFallbackId.d.ts +3 -0
  99. package/dist/runtime/composables/useFallbackId.js +5 -0
  100. package/dist/runtime/composables/useInjectedDarkMode.d.ts +1 -1
  101. package/dist/runtime/composables/usePopupConstrainToStyle.d.ts +8 -0
  102. package/dist/runtime/composables/usePopupConstrainToStyle.js +8 -0
  103. package/dist/runtime/composables/useSetupDarkMode.d.ts +2 -3
  104. package/dist/runtime/composables/useSetupDarkMode.js +90 -4
  105. package/dist/runtime/helpers/NotificationHandler.d.ts +2 -2
  106. package/dist/runtime/injectionKeys.d.ts +1 -5
  107. package/dist/runtime/injectionKeys.js +0 -2
  108. package/dist/runtime/types/index.d.ts +85 -27
  109. package/dist/runtime/types/index.js +1 -0
  110. package/package.json +1 -1
  111. package/src/module.ts +1 -1
  112. package/src/runtime/assets/animations.css +3 -3
  113. package/src/runtime/assets/locales/en.json +2 -0
  114. package/src/runtime/build/WitchcraftUiResolver.ts +2 -2
  115. package/src/runtime/components/TestControls/TestControls.vue +3 -3
  116. package/src/runtime/components/WButton/WButton.stories.ts +112 -0
  117. package/src/runtime/components/{LibButton/LibButton.vue → WButton/WButton.vue} +34 -50
  118. package/src/runtime/components/{LibCheckbox/LibCheckbox.stories.ts → WCheckbox/WCheckbox.stories.ts} +5 -5
  119. package/src/runtime/components/WCheckbox/WCheckbox.vue +125 -0
  120. package/src/runtime/components/{LibColorInput/LibColorInput.stories.ts → WColorInput/WColorInput.stories.ts} +8 -8
  121. package/src/runtime/components/WColorInput/WColorInput.vue +112 -0
  122. package/src/runtime/components/WColorInput/WColorSwatchButton.vue +102 -0
  123. package/src/runtime/components/{LibColorPicker/LibColorPicker.stories.ts → WColorPicker/WColorPicker.stories.ts} +12 -12
  124. package/src/runtime/components/{LibColorPicker/LibColorPicker.vue → WColorPicker/WColorPicker.vue} +44 -31
  125. package/src/runtime/components/WCombobox/WCombobox.stories.ts +209 -0
  126. package/src/runtime/components/WCombobox/WCombobox.vue +450 -0
  127. package/src/runtime/components/WCombobox/storyPlays.ts +92 -0
  128. package/src/runtime/components/{LibDarkModeSwitcher/LibDarkModeSwitcher.stories.ts → WDarkModeSwitcher/WDarkModeSwitcher.stories.ts} +6 -6
  129. package/src/runtime/components/{LibDarkModeSwitcher/LibDarkModeSwitcher.vue → WDarkModeSwitcher/WDarkModeSwitcher.vue} +19 -30
  130. package/src/runtime/components/{LibDatePicker/LibDatePicker.stories.ts → WDatePicker/WDatePicker.stories.ts} +42 -34
  131. package/src/runtime/components/{LibDatePicker/LibDatePicker.vue → WDatePicker/WDatePicker.vue} +3 -7
  132. package/src/runtime/components/{LibDatePicker/LibRangeDatePicker.vue → WDatePicker/WRangeDatePicker.vue} +21 -21
  133. package/src/runtime/components/{LibDatePicker/LibSingleDatePicker.vue → WDatePicker/WSingleDatePicker.vue} +21 -21
  134. package/src/runtime/components/{LibDatePicker/LibTimeZonePicker.vue → WDatePicker/WTimeZonePicker.vue} +5 -12
  135. package/src/runtime/components/{LibDebug/LibDebug.stories.ts → WDebug/WDebug.stories.ts} +5 -5
  136. package/src/runtime/components/{LibDebug/LibDebug.vue → WDebug/WDebug.vue} +9 -10
  137. package/src/runtime/components/{LibDevOnly/LibDevOnly.vue → WDevOnly/WDevOnly.vue} +0 -4
  138. package/src/runtime/components/{LibFileInput/LibFileInput.stories.ts → WFileInput/WFileInput.stories.ts} +7 -7
  139. package/src/runtime/components/{LibFileInput/LibFileInput.vue → WFileInput/WFileInput.vue} +98 -97
  140. package/src/runtime/components/{Icon/Icon.vue → WIcon/WIcon.vue} +5 -8
  141. package/src/runtime/components/{LibMultiValues/LibMultiValues.stories.ts → WMultiValues/WMultiValues.stories.ts} +9 -9
  142. package/src/runtime/components/WMultiValues/WMultiValues.vue +163 -0
  143. package/src/runtime/components/{LibNotifications/LibNotification.stories.ts → WNotifications/WNotification.stories.ts} +9 -9
  144. package/src/runtime/components/{LibNotifications/LibNotification.vue → WNotifications/WNotification.vue} +45 -65
  145. package/src/runtime/components/WNotifications/WNotifications.stories.ts +139 -0
  146. package/src/runtime/components/{LibNotifications/LibNotifications.vue → WNotifications/WNotifications.vue} +51 -29
  147. package/src/runtime/components/WNumberInput/WNumberInput.vue +109 -0
  148. package/src/runtime/components/WPagination/WPagination.stories.ts +51 -0
  149. package/src/runtime/components/WPagination/WPagination.vue +207 -0
  150. package/src/runtime/components/{LibPalette/LibPalette.stories.ts → WPalette/WPalette.stories.ts} +6 -6
  151. package/src/runtime/components/{LibPalette/LibPalette.vue → WPalette/WPalette.vue} +3 -8
  152. package/src/runtime/components/WPopover/WPopover.stories.ts +218 -0
  153. package/src/runtime/components/WPopover/WPopover.vue +168 -0
  154. package/src/runtime/components/WPopup/WPopup.stories.ts +104 -0
  155. package/src/runtime/components/WPopup/WPopup.vue +125 -0
  156. package/src/runtime/components/WProgressBar/WProgressBar.stories.ts +119 -0
  157. package/src/runtime/components/WProgressBar/WProgressBar.vue +185 -0
  158. package/src/runtime/components/{LibRecorder/LibRecorder.stories.ts → WRecorder/WRecorder.stories.ts} +9 -6
  159. package/src/runtime/components/{LibRecorder/LibRecorder.vue → WRecorder/WRecorder.vue} +69 -68
  160. package/src/runtime/components/{LibRoot/LibRoot.vue → WRoot/WRoot.vue} +18 -15
  161. package/src/runtime/components/{LibSimpleInput/LibSimpleInput.stories.ts → WSimpleInput/WSimpleInput.stories.ts} +11 -12
  162. package/src/runtime/components/{LibSimpleInput/LibSimpleInput.vue → WSimpleInput/WSimpleInput.vue} +28 -44
  163. package/src/runtime/components/{LibTable/LibTable.stories.ts → WTable/WTable.stories.ts} +60 -52
  164. package/src/runtime/components/{LibTable/LibTable.vue → WTable/WTable.vue} +85 -88
  165. package/src/runtime/components/WTooltip/WTooltip.stories.ts +82 -0
  166. package/src/runtime/components/WTooltip/WTooltip.vue +128 -0
  167. package/src/runtime/components/index.ts +20 -20
  168. package/src/runtime/composables/index.ts +4 -4
  169. package/src/runtime/composables/useDelayedLoadingIndicator.ts +30 -0
  170. package/src/runtime/composables/useDisplayForReka.ts +37 -0
  171. package/src/runtime/composables/useFallbackId.ts +6 -0
  172. package/src/runtime/composables/useInjectedDarkMode.ts +1 -2
  173. package/src/runtime/composables/usePopupConstrainToStyle.ts +29 -0
  174. package/src/runtime/composables/useSetupDarkMode.ts +122 -4
  175. package/src/runtime/helpers/NotificationHandler.ts +2 -2
  176. package/src/runtime/injectionKeys.ts +1 -7
  177. package/src/runtime/types/index.ts +105 -32
  178. package/types/components.d.ts +14 -15
  179. package/dist/runtime/components/Aria/Aria.d.vue.ts +0 -6
  180. package/dist/runtime/components/Aria/Aria.vue +0 -16
  181. package/dist/runtime/components/Aria/Aria.vue.d.ts +0 -6
  182. package/dist/runtime/components/LibButton/LibButton.d.vue.ts +0 -37
  183. package/dist/runtime/components/LibButton/LibButton.vue.d.ts +0 -37
  184. package/dist/runtime/components/LibCheckbox/LibCheckbox.d.vue.ts +0 -41
  185. package/dist/runtime/components/LibCheckbox/LibCheckbox.vue +0 -103
  186. package/dist/runtime/components/LibCheckbox/LibCheckbox.vue.d.ts +0 -41
  187. package/dist/runtime/components/LibColorInput/LibColorInput.d.vue.ts +0 -64
  188. package/dist/runtime/components/LibColorInput/LibColorInput.vue +0 -162
  189. package/dist/runtime/components/LibColorInput/LibColorInput.vue.d.ts +0 -64
  190. package/dist/runtime/components/LibDatePicker/LibDatePicker.d.vue.ts +0 -191
  191. package/dist/runtime/components/LibDatePicker/LibDatePicker.vue.d.ts +0 -191
  192. package/dist/runtime/components/LibFileInput/LibFileInput.d.vue.ts +0 -46
  193. package/dist/runtime/components/LibFileInput/LibFileInput.vue.d.ts +0 -46
  194. package/dist/runtime/components/LibInputDeprecated/LibInputDeprecated.d.vue.ts +0 -256
  195. package/dist/runtime/components/LibInputDeprecated/LibInputDeprecated.vue +0 -387
  196. package/dist/runtime/components/LibInputDeprecated/LibInputDeprecated.vue.d.ts +0 -256
  197. package/dist/runtime/components/LibLabel/LibLabel.d.vue.ts +0 -27
  198. package/dist/runtime/components/LibLabel/LibLabel.vue +0 -45
  199. package/dist/runtime/components/LibLabel/LibLabel.vue.d.ts +0 -27
  200. package/dist/runtime/components/LibMultiValues/LibMultiValues.vue +0 -109
  201. package/dist/runtime/components/LibNotifications/LibNotification.d.vue.ts +0 -45
  202. package/dist/runtime/components/LibNotifications/LibNotification.vue.d.ts +0 -45
  203. package/dist/runtime/components/LibNotifications/LibNotifications.d.vue.ts +0 -15
  204. package/dist/runtime/components/LibNotifications/LibNotifications.vue.d.ts +0 -15
  205. package/dist/runtime/components/LibPagination/LibPagination.d.vue.ts +0 -105
  206. package/dist/runtime/components/LibPagination/LibPagination.vue +0 -229
  207. package/dist/runtime/components/LibPagination/LibPagination.vue.d.ts +0 -105
  208. package/dist/runtime/components/LibPalette/LibPalette.d.vue.ts +0 -15
  209. package/dist/runtime/components/LibPalette/LibPalette.vue.d.ts +0 -15
  210. package/dist/runtime/components/LibPopup/LibPopup.d.vue.ts +0 -52
  211. package/dist/runtime/components/LibPopup/LibPopup.vue +0 -365
  212. package/dist/runtime/components/LibPopup/LibPopup.vue.d.ts +0 -52
  213. package/dist/runtime/components/LibProgressBar/LibProgressBar.vue +0 -169
  214. package/dist/runtime/components/LibSuggestions/LibSuggestions.d.vue.ts +0 -99
  215. package/dist/runtime/components/LibSuggestions/LibSuggestions.vue +0 -178
  216. package/dist/runtime/components/LibSuggestions/LibSuggestions.vue.d.ts +0 -99
  217. package/dist/runtime/components/LibTable/LibTable.d.vue.ts +0 -125
  218. package/dist/runtime/components/LibTable/LibTable.vue.d.ts +0 -125
  219. package/dist/runtime/components/Template/NAME.d.vue.ts +0 -18
  220. package/dist/runtime/components/Template/NAME.vue +0 -27
  221. package/dist/runtime/components/Template/NAME.vue.d.ts +0 -18
  222. package/dist/runtime/components/Template/TemplateStory.d.ts +0 -7
  223. package/dist/runtime/components/Template/TemplateStory.js +0 -22
  224. package/dist/runtime/components/shared/props.d.ts +0 -171
  225. package/dist/runtime/components/shared/props.js +0 -2
  226. package/dist/runtime/composables/useAriaLabel.d.ts +0 -6
  227. package/dist/runtime/composables/useAriaLabel.js +0 -15
  228. package/dist/runtime/composables/useDarkMode.d.ts +0 -77
  229. package/dist/runtime/composables/useDarkMode.js +0 -89
  230. package/dist/runtime/composables/useDivideAttrs.d.ts +0 -27
  231. package/dist/runtime/composables/useDivideAttrs.js +0 -27
  232. package/dist/runtime/composables/useSuggestions.d.ts +0 -40
  233. package/dist/runtime/composables/useSuggestions.js +0 -263
  234. package/src/runtime/components/Aria/Aria.vue +0 -26
  235. package/src/runtime/components/LibButton/LibButton.stories.ts +0 -106
  236. package/src/runtime/components/LibCheckbox/LibCheckbox.vue +0 -131
  237. package/src/runtime/components/LibColorInput/LibColorInput.vue +0 -203
  238. package/src/runtime/components/LibInputDeprecated/LibInputDeprecated.stories.ts +0 -405
  239. package/src/runtime/components/LibInputDeprecated/LibInputDeprecated.vue +0 -419
  240. package/src/runtime/components/LibLabel/LibLabel.stories.ts +0 -33
  241. package/src/runtime/components/LibLabel/LibLabel.vue +0 -65
  242. package/src/runtime/components/LibMultiValues/LibMultiValues.vue +0 -123
  243. package/src/runtime/components/LibNotifications/LibNotifications.stories.ts +0 -131
  244. package/src/runtime/components/LibPagination/LibPagination.stories.ts +0 -49
  245. package/src/runtime/components/LibPagination/LibPagination.vue +0 -274
  246. package/src/runtime/components/LibPopup/LibPopup.stories.ts +0 -153
  247. package/src/runtime/components/LibPopup/LibPopup.vue +0 -396
  248. package/src/runtime/components/LibProgressBar/LibProgressBar.stories.ts +0 -90
  249. package/src/runtime/components/LibProgressBar/LibProgressBar.vue +0 -197
  250. package/src/runtime/components/LibSuggestions/LibSuggestions.stories.ts +0 -134
  251. package/src/runtime/components/LibSuggestions/LibSuggestions.vue +0 -212
  252. package/src/runtime/components/Template/NAME.vue +0 -49
  253. package/src/runtime/components/Template/TemplateStory.ts +0 -37
  254. package/src/runtime/components/shared/props.ts +0 -199
  255. package/src/runtime/composables/useAriaLabel.ts +0 -23
  256. package/src/runtime/composables/useDarkMode.ts +0 -199
  257. package/src/runtime/composables/useDivideAttrs.ts +0 -53
  258. package/src/runtime/composables/useSuggestions.ts +0 -339
  259. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToHsva.d.ts +0 -0
  260. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToHsva.js +0 -0
  261. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToRgba.d.ts +0 -0
  262. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToRgba.js +0 -0
  263. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/toLowPrecisionRgbaString.d.ts +0 -0
  264. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/toLowPrecisionRgbaString.js +0 -0
  265. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/truncate.d.ts +0 -0
  266. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/truncate.js +0 -0
  267. /package/dist/runtime/components/{LibDatePicker/LibRangeDatePicker.d.vue.ts → WDatePicker/WRangeDatePicker.d.vue.ts} +0 -0
  268. /package/dist/runtime/components/{LibDatePicker/LibRangeDatePicker.vue.d.ts → WDatePicker/WRangeDatePicker.vue.d.ts} +0 -0
  269. /package/dist/runtime/components/{LibDatePicker/LibSingleDatePicker.d.vue.ts → WDatePicker/WSingleDatePicker.d.vue.ts} +0 -0
  270. /package/dist/runtime/components/{LibDatePicker/LibSingleDatePicker.vue.d.ts → WDatePicker/WSingleDatePicker.vue.d.ts} +0 -0
  271. /package/dist/runtime/components/{LibDatePicker → WDatePicker}/helpers.d.ts +0 -0
  272. /package/dist/runtime/components/{LibDatePicker → WDatePicker}/helpers.js +0 -0
  273. /package/dist/runtime/components/{LibDebug/LibDebug.d.vue.ts → WDebug/WDebug.d.vue.ts} +0 -0
  274. /package/dist/runtime/components/{LibDebug/LibDebug.vue.d.ts → WDebug/WDebug.vue.d.ts} +0 -0
  275. /package/dist/runtime/components/{LibDevOnly/LibDevOnly.vue → WDevOnly/WDevOnly.vue} +0 -0
  276. /package/dist/runtime/components/{LibNotifications/LibNotificationTestMessageComponent.d.vue.ts → WNotifications/WNotificationTestMessageComponent.d.vue.ts} +0 -0
  277. /package/dist/runtime/components/{LibNotifications/LibNotificationTestMessageComponent.vue → WNotifications/WNotificationTestMessageComponent.vue} +0 -0
  278. /package/dist/runtime/components/{LibNotifications/LibNotificationTestMessageComponent.vue.d.ts → WNotifications/WNotificationTestMessageComponent.vue.d.ts} +0 -0
  279. /package/dist/runtime/components/{LibNotifications → WNotifications}/calculateNotificationProgress.d.ts +0 -0
  280. /package/dist/runtime/components/{LibNotifications → WNotifications}/calculateNotificationProgress.js +0 -0
  281. /package/src/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToHsva.ts +0 -0
  282. /package/src/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToRgba.ts +0 -0
  283. /package/src/runtime/components/{LibColorPicker → WColorPicker}/utils/toLowPrecisionRgbaString.ts +0 -0
  284. /package/src/runtime/components/{LibColorPicker → WColorPicker}/utils/truncate.ts +0 -0
  285. /package/src/runtime/components/{LibDatePicker → WDatePicker}/helpers.ts +0 -0
  286. /package/src/runtime/components/{LibNotifications/LibNotificationTestMessageComponent.vue → WNotifications/WNotificationTestMessageComponent.vue} +0 -0
  287. /package/src/runtime/components/{LibNotifications → WNotifications}/calculateNotificationProgress.ts +0 -0
@@ -0,0 +1,405 @@
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-white
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
+ filtered.length > 0 && open && popupSide === 'top' && `rounded-tl-none rounded-tr-none`,
52
+ filtered.length > 0 && 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
+ <slot name="right"/>
99
+ <ComboboxTrigger
100
+ :as-child="true"
101
+ >
102
+ <slot
103
+ name="trigger"
104
+ v-bind="{ open }"
105
+ >
106
+ <WButton
107
+ :border="false"
108
+ class="combobox--toggle p-0 text-neutral-800 dark:text-neutral-200"
109
+ :aria-label="open ? 'Close' : 'Open'"
110
+ >
111
+ <slot
112
+ name="toggle"
113
+ :is-open="open"
114
+ >
115
+ <WIcon
116
+ :class="twMerge(`combobox--toggle scale-150`, open && `rotate-180`)"
117
+ >
118
+ <i-lucide-chevron-down/>
119
+ </WIcon>
120
+ </slot>
121
+ </WButton>
122
+ </slot>
123
+ </ComboboxTrigger>
124
+ </div>
125
+ </ComboboxAnchor>
126
+ <ComboboxPortal :to="to">
127
+ <ComboboxContent
128
+ v-if="showEmptyLabel || filtered.length > 0 || errorMessage !== false"
129
+ :style="contentStyle"
130
+ :class="twMerge(`
131
+ combobox--content
132
+ z-100
133
+ w-[var(--reka-combobox-trigger-width)]
134
+ align-end
135
+ bg-white
136
+ dark:bg-neutral-900
137
+ will-change-[opacity,transform]
138
+ data-[side=top]:animate-slideDownAndFade
139
+ data-[side=right]:animate-slideLeftAndFade
140
+ data-[side=bottom]:animate-slideUpAndFade
141
+ data-[side=left]:animate-slideRightAndFade
142
+ border-neutral-300
143
+ dark:border-neutral-700
144
+ border
145
+ rounded-sm
146
+ shadow-lg
147
+ shadow-black/50
148
+ data-[side=bottom]:border-t-0
149
+ data-[side=top]:border-b-0
150
+ dark:data-[side=bottom]:border-t-0
151
+ dark:data-[side=top]:border-b-0
152
+ data-[side=bottom]:rounded-tl-none
153
+ data-[side=bottom]:rounded-tr-none
154
+ data-[side=top]:rounded-bl-none
155
+ data-[side=top]:rounded-br-none
156
+ max-h-[500px]
157
+ overflow-y-auto
158
+ `, contentProps?.class)"
159
+ ref="contentComponent"
160
+ v-bind="{
161
+ side: 'bottom',
162
+ position: 'popper',
163
+ avoidCollisions: true,
164
+ prioritizePosition: true,
165
+ ...contentProps,
166
+ class: void 0
167
+ }"
168
+ >
169
+ <ComboboxViewport
170
+
171
+ class="combobox--viewport flex flex-col"
172
+ >
173
+ <Transition>
174
+ <div
175
+ v-if="useSlots()['header']"
176
+ :id="`${id}-instruction`"
177
+ class="
178
+ combobox--popup-header
179
+ px-2
180
+ flex
181
+ items-center
182
+ justify-center
183
+ "
184
+ >
185
+ <slot
186
+ :filtered="filtered"
187
+ :is-showing-empty-label="showEmptyLabel"
188
+ name="header"
189
+ class="
190
+ text-neutral-800
191
+ dark:text-neutral-200
192
+ combobox--popup-label
193
+ text-ellipsis
194
+ overflow-hidden
195
+ whitespace-nowrap
196
+ "
197
+ />
198
+ </div>
199
+ </Transition>
200
+ <slot
201
+ v-if="errorMessage !== false"
202
+ name="invalid"
203
+ v-bind="{ searchTerm, errorMessage, id: `${id}-error`, role: 'alert' }"
204
+ >
205
+ <div
206
+ :id="`${id}-error`"
207
+ role="alert"
208
+ class="
209
+ combobox--error-message
210
+ text-danger-500
211
+ dark:text-danger-500
212
+ text-sm
213
+ px-2
214
+ py-1
215
+ bg-danger-100
216
+ dark:bg-danger-800
217
+ flex
218
+ items-center
219
+ justify-center
220
+ "
221
+ >
222
+ {{ errorMessage }}
223
+ </div>
224
+ </slot>
225
+ <ComboboxEmpty
226
+ v-if="showEmptyLabel"
227
+ class="
228
+ combobox--empty
229
+ px-2
230
+ text-center
231
+ text-neutral-800
232
+ dark:text-neutral-200
233
+ bg-neutral-100
234
+ dark:bg-neutral-800
235
+ "
236
+ >
237
+ {{ emptyLabel }}
238
+ </ComboboxEmpty>
239
+ <slot
240
+ name="suggestions"
241
+ v-bind="{ filtered, display, searchTerm }"
242
+ >
243
+ <div
244
+ class="
245
+ combobox--suggestions
246
+ flex-col
247
+ flex
248
+ max-h-[500px]
249
+ overflow-y-auto
250
+ "
251
+ >
252
+ <ComboboxItem
253
+ class="
254
+ combobox--suggestion
255
+ flex
256
+ justify-between
257
+ gap-2
258
+ px-2
259
+ cursor-pointer
260
+ data-[highlighted]:outline-hidden
261
+ data-[highlighted]:bg-accent-200
262
+ data-[highlighted]:text-accent-800
263
+ dark:data-[highlighted]:bg-accent-800
264
+ dark:data-[highlighted]:text-accent-200
265
+ "
266
+ :value="suggestion"
267
+ v-for="(suggestion, index) in filtered"
268
+ :key="index"
269
+ >
270
+ <slot
271
+ name="suggestion-icon"
272
+ v-bind="{ suggestion }"
273
+ />
274
+ <slot
275
+ name="suggestion"
276
+ v-bind="{
277
+ suggestion,
278
+ suggestionText: display(suggestion)
279
+ }"
280
+ >
281
+ <div
282
+ class="
283
+ combobox--suggestion-label
284
+ "
285
+ >
286
+ {{ display(suggestion) }}
287
+ </div>
288
+ </slot>
289
+ </ComboboxItem>
290
+ </div>
291
+ </slot>
292
+ </ComboboxViewport>
293
+ </ComboboxContent>
294
+ </ComboboxPortal>
295
+ </ComboboxRoot>
296
+ </template>
297
+
298
+ <script setup>
299
+ import {
300
+ ComboboxAnchor,
301
+ ComboboxContent,
302
+ ComboboxEmpty,
303
+ ComboboxInput,
304
+ ComboboxItem,
305
+ ComboboxPortal,
306
+ ComboboxRoot,
307
+ ComboboxTrigger,
308
+ ComboboxViewport,
309
+ useFilter
310
+ } from "reka-ui";
311
+ import { computed, nextTick, ref, useAttrs, useSlots, useTemplateRef, watch } from "vue";
312
+ import ILucideChevronDown from "~icons/lucide/chevron-down";
313
+ import ILucideLoaderCircle from "~icons/lucide/loader-circle";
314
+ import { useDelayedLoadingIndicator } from "../../composables/useDelayedLoadingIndicator.js";
315
+ import { useDisplayForReka } from "../../composables/useDisplayForReka.js";
316
+ import { useFallbackId } from "../../composables/useFallbackId.js";
317
+ import { usePopupConstrainToStyle } from "../../composables/usePopupConstrainToStyle.js";
318
+ import { usePreHydrationValue } from "../../composables/usePreHydrationValue.js";
319
+ import { twMerge } from "../../utils/twMerge.js";
320
+ import WButton from "../WButton/WButton.vue";
321
+ import WIcon from "../WIcon/WIcon.vue";
322
+ const $attrs = useAttrs();
323
+ const emit = defineEmits(["save", "new"]);
324
+ const props = defineProps({
325
+ displayKey: { type: String, required: false },
326
+ displayValue: { type: Function, required: false },
327
+ displayEntry: { type: Function, required: false },
328
+ constrainWidthTo: { type: [Number, String, null], required: false },
329
+ constrainHeightTo: { type: [Number, String, null], required: false },
330
+ id: { type: String, required: false },
331
+ border: { type: Boolean, required: false, default: true },
332
+ to: { type: String, required: false, default: "#root" },
333
+ isValid: { type: Function, required: false, default: (_) => true },
334
+ suggestions: { type: Array, required: true },
335
+ emptyLabel: { type: String, required: false, default: void 0 },
336
+ contentProps: { type: Object, required: false },
337
+ ignoreFilter: { type: Boolean, required: false, default: false },
338
+ restrictToSuggestions: { type: Boolean, required: false, default: false },
339
+ inputProps: { type: Object, required: false }
340
+ });
341
+ const finalId = useFallbackId(props);
342
+ const contentStyle = usePopupConstrainToStyle("combobox-content", props, [props?.contentProps?.style]);
343
+ const modelValue = defineModel({ type: null, ...{ required: false, default: "" } });
344
+ usePreHydrationValue(finalId, modelValue);
345
+ const open = defineModel("open", { type: Boolean, ...{ required: false, default: false } });
346
+ const searchTerm = defineModel("searchTerm", { type: String, ...{ default: "" } });
347
+ const display = useDisplayForReka(props);
348
+ const { contains } = useFilter();
349
+ const filtered = computed(() => {
350
+ const f = props.ignoreFilter ? props.suggestions : props.suggestions.filter((v) => {
351
+ return contains(display(v), searchTerm.value);
352
+ });
353
+ if ((f?.length ?? 0) === 0 && props.restrictToSuggestions) {
354
+ return props.suggestions;
355
+ } else {
356
+ return f;
357
+ }
358
+ });
359
+ const errorMessage = computed(() => {
360
+ if (searchTerm.value === "") return false;
361
+ const isExactMatch = filtered.value.find((v) => display(v) === searchTerm.value);
362
+ if (!props.restrictToSuggestions && isExactMatch) return false;
363
+ const validation = props.isValid(searchTerm.value);
364
+ if (validation === true) return false;
365
+ return validation;
366
+ });
367
+ watch(searchTerm, () => {
368
+ const isExactMatch = filtered.value.find((v) => display(v) === searchTerm.value);
369
+ if (isExactMatch) {
370
+ modelValue.value = isExactMatch;
371
+ }
372
+ });
373
+ function save(e) {
374
+ if (errorMessage.value !== false || searchTerm.value === "") {
375
+ open.value = false;
376
+ return;
377
+ }
378
+ e.preventDefault();
379
+ emit("save", searchTerm.value);
380
+ open.value = false;
381
+ }
382
+ const loading = defineModel("loading", { type: Boolean, ...{ default: false } });
383
+ const showLoadingIndicator = useDelayedLoadingIndicator(loading);
384
+ const showEmptyLabel = computed(() => {
385
+ return errorMessage.value === false && !props.restrictToSuggestions && searchTerm.value !== "" && props.emptyLabel !== "" && !props.suggestions.some((s) => display(s) === searchTerm.value);
386
+ });
387
+ const ariaDescribedBy = computed(() => {
388
+ const ids = [];
389
+ if (open.value) ids.push(`${props.id}-instruction`);
390
+ if (errorMessage.value !== false) ids.push(`${props.id}-error`);
391
+ if ("ariaDescribedby" in $attrs) ids.push($attrs.ariaDescribedby);
392
+ return ids.join(" ") || void 0;
393
+ });
394
+ const contentComp = useTemplateRef("contentComponent");
395
+ const popupSide = ref(void 0);
396
+ watch(open, () => {
397
+ nextTick(() => {
398
+ if (open.value && contentComp.value?.$el) {
399
+ popupSide.value = contentComp.value.$el.getAttribute("data-side");
400
+ } else {
401
+ popupSide.value = void 0;
402
+ }
403
+ });
404
+ });
405
+ </script>
@@ -0,0 +1,111 @@
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
+ right?: (props: {}) => any;
59
+ } & {
60
+ trigger?: (props: {
61
+ open: boolean;
62
+ }) => any;
63
+ } & {
64
+ toggle?: (props: {
65
+ isOpen: boolean;
66
+ }) => any;
67
+ } & {
68
+ header?: (props: {
69
+ class: string;
70
+ filtered: TSuggestion[];
71
+ isShowingEmptyLabel: boolean;
72
+ }) => any;
73
+ } & {
74
+ invalid?: (props: {
75
+ searchTerm: string;
76
+ errorMessage: string;
77
+ id: string;
78
+ role: string;
79
+ }) => any;
80
+ } & {
81
+ suggestions?: (props: {
82
+ filtered: TSuggestion[];
83
+ display: (value: TSuggestion, options?: {
84
+ isForEmit?: boolean;
85
+ }) => string;
86
+ searchTerm: string;
87
+ }) => any;
88
+ } & {
89
+ 'suggestion-icon'?: (props: {
90
+ suggestion: Exclude<TSuggestion, any[]>;
91
+ }) => any;
92
+ } & {
93
+ suggestion?: (props: {
94
+ suggestion: Exclude<TSuggestion, any[]>;
95
+ suggestionText: string;
96
+ }) => any;
97
+ };
98
+ emit: {
99
+ (e: "save", value: string): void;
100
+ (e: "new", value: string): void;
101
+ } & (((event: "update:modelValue", value: TSuggestion) => void) & ((event: "update:open", value: boolean) => void) & ((event: "update:searchTerm", value: string) => void) & ((event: "update:loading", value: boolean) => void));
102
+ }>) => import("vue").VNode & {
103
+ __ctx?: Awaited<typeof __VLS_setup>;
104
+ };
105
+ declare const _default: typeof __VLS_export;
106
+ export default _default;
107
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
108
+ [K in keyof T]: T[K];
109
+ } : {
110
+ [K in keyof T as K]: T[K];
111
+ }) & {};
@@ -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;