@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
@@ -95,33 +95,6 @@ export type ScrollNearContainerEdgesOptions = {
95
95
  timerInterval?: number;
96
96
  };
97
97
  export type SimpleDOMRect = Omit<DOMRect, "toJSON">;
98
- export interface IPopupReference {
99
- getBoundingClientRect: () => SimpleDOMRect;
100
- }
101
- export type PopupPosition = {
102
- x: number;
103
- y: number;
104
- maxWidth?: number;
105
- maxHeight?: number;
106
- };
107
- export type PopupSpaceInfo = {
108
- left: number;
109
- right: number;
110
- leftLeft: number;
111
- rightRight: number;
112
- leftFromCenter: number;
113
- rightFromCenter: number;
114
- topFromCenter: number;
115
- bottomFromCenter: number;
116
- top: number;
117
- bottom: number;
118
- };
119
- export type PopupPositioner = (
120
- /** Reference is only undefined, if you did not specify a button element or use the exposed setReference. The function is still called, because there are other ways you might want to still position the popup (e.g. center-screen or some similar variation). */
121
- reference: SimpleDOMRect | undefined, popup: SimpleDOMRect | DOMRect, bg: SimpleDOMRect | DOMRect, space: PopupSpaceInfo) => number;
122
- export type PopupPositionModifier = (pos: PopupPosition,
123
- /** This will only be called with the reference element as undefined when one of the preferred positions is center-screen or it's a function. */
124
- reference: SimpleDOMRect | undefined, popup: SimpleDOMRect | DOMRect, bg: SimpleDOMRect | DOMRect, space: PopupSpaceInfo) => PopupPosition;
125
98
  export type SingleDate = Date | undefined;
126
99
  export type RangeDate = {
127
100
  start?: SingleDate;
@@ -131,3 +104,88 @@ export type CustomNotificationComponentProps = {
131
104
  message: string;
132
105
  messageClasses?: string;
133
106
  };
107
+ export type BaseInteractiveProps = {
108
+ /** Default is false. */
109
+ disabled?: boolean;
110
+ /** Default is false. */
111
+ readonly?: boolean;
112
+ /** Default is true. */
113
+ border?: boolean;
114
+ /** Removes styles from the component. Default is false. */
115
+ unstyle?: boolean;
116
+ };
117
+ export type TailwindClassProp = {
118
+ /** Tailwind classes. */
119
+ class?: string | false;
120
+ };
121
+ export declare const defaultDarkModeOrder: readonly ["system", "dark", "light"];
122
+ export type DarkModeOptions = {
123
+ useLocalStorage?: boolean | string;
124
+ darkModeOrder?: readonly ("system" | "dark" | "light")[];
125
+ /** True by default, should be passed import.meta.client if using nuxt, or false when running server side. */
126
+ isClientSide?: boolean;
127
+ /**
128
+ * Whether to use the view transition to animate the dark mode switch (you just need to add the css).
129
+ *
130
+ * Note that the transitition is NOT triggered if visually the mode does not change (e.g. system mode is dark and the user switches from system to dark, visually nothing changes so transitioning is skipped).
131
+ *
132
+ * There is an example in storybook. But basically:
133
+ *
134
+ * ```css
135
+ *
136
+ * #root { // the dark mode switcher works on the WRoot component not the html root
137
+ * view-transition-name: wroot;
138
+ * height: 100dvh;
139
+ * padding: 0;
140
+ * }
141
+ *
142
+ * ::view-transition-new(wroot) {
143
+ * animation: grow var(--story-anim-length) ease-in-out;
144
+ * animation-fill-mode: both;
145
+ * z-index: 2;
146
+ * mask: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><circle cx="20" cy="20" r="20" fill="white"/></svg>') center / 0 no-repeat;
147
+ * }
148
+ *
149
+ * ::view-transition-old(wroot) {
150
+ * animation: none;
151
+ * animation-fill-mode: both;
152
+ * z-index: 1;
153
+ * }
154
+ *
155
+ * @keyframes grow {
156
+ * from {
157
+ * mask-size: 0dvw;
158
+ * }
159
+ * to {
160
+ * mask-size: 300dvw;
161
+ * }
162
+ * }
163
+ * ```
164
+ *
165
+ * See https://theme-toggle.rdsx.dev/ for more ideas.
166
+ *
167
+ * @default true
168
+ */
169
+ useViewTransition?: boolean;
170
+ };
171
+ export interface DarkModeCommands {
172
+ setDarkMode: (value: "dark" | "light" | "system") => void;
173
+ cycleDarkMode: () => void;
174
+ }
175
+ export interface DarkModeState {
176
+ /** Whether the dark mode should be enabled or not */
177
+ darkMode: Ref<boolean>;
178
+ /** The current state of the darkMode but as a string (dark, light, system) */
179
+ darkModeState: Ref<"dark" | "light" | "system">;
180
+ /** The value of the manuably controllable dark mode. You can set this to true/false or undefined to allow the systemDarkMode to take priority. Alternatively use setDarkMode instead. */
181
+ manualDarkMode: Ref<boolean | undefined>;
182
+ /** The value of the system dark mode. This is automatically set depending on the user's `prefer-color-scheme` and should not be set directly. */
183
+ systemDarkMode: Ref<boolean>;
184
+ }
185
+ export type PopupConstrainToProps = {
186
+ constrainWidthTo?: number | "trigger" | "available" | string | null;
187
+ constrainHeightTo?: number | "trigger" | "available" | string | null;
188
+ };
189
+ export type EmitsToProps<T> = {
190
+ [K in keyof T as K extends string ? `on${Capitalize<K>}` : never]?: T[K] extends (...args: infer Args) => any ? (...args: Args) => void : T[K] extends any[] ? (...args: T[K]) => void : T[K];
191
+ };
@@ -0,0 +1 @@
1
+ export const defaultDarkModeOrder = ["system", "dark", "light"];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@witchcraft/ui",
3
- "version": "0.3.26",
3
+ "version": "0.4.0-beta.2",
4
4
  "description": "Vue component library.",
5
5
  "type": "module",
6
6
  "main": "./dist/runtime/main.lib.js",
package/src/module.ts CHANGED
@@ -35,7 +35,7 @@ const componentsInfo: {
35
35
  `!**/Template/**.vue`
36
36
  ], [], (filepath: string, name: string) => ({
37
37
  originalName: name,
38
- name: name.startsWith("Lib") ? name.replace("Lib", "PREFIX") : `PREFIX${name}`,
38
+ name: name.startsWith("W") ? name.replace("W", "PREFIX") : `PREFIX${name}`,
39
39
  filepath
40
40
  }))
41
41
 
@@ -28,8 +28,8 @@
28
28
  }
29
29
  }
30
30
 
31
- --animate-slideBgInf: slide-bg 10s ease-in-out linear-infinite;
32
- @keyframes slide {
31
+ --animate-slideBgInf: slideBg 10s ease-in-out linear-infinite;
32
+ @keyframes slideBg {
33
33
  0% {
34
34
  background-position:0%;
35
35
  }
@@ -60,7 +60,7 @@
60
60
  }
61
61
  }
62
62
 
63
- --animate-slideInRight: slideInLeft 500ms cubic-bezier(0.16, 1, 0.3, 1);
63
+ --animate-slideInRight: slideInRight 500ms cubic-bezier(0.16, 1, 0.3, 1);
64
64
  @keyframes slideInRight {
65
65
  from {
66
66
  transform: translateX(var(--animate-from, -100%));
@@ -25,6 +25,8 @@
25
25
  "pagination.aria.go-to-next-page": "Go to next page. Page {count}",
26
26
  "pagination.aria.go-to-page": "Go to page {count}",
27
27
  "pagination.aria.current-page": "Current page {count}",
28
+ "pagination.aria.go-to-first-page": "Go to first page",
29
+ "pagination.aria.go-to-last-page": "Go to last page",
28
30
  "pagination.previous-page": "Prev",
29
31
  "pagination.next-page": "Next",
30
32
  "recorder.recording": "Recording",
@@ -1,6 +1,6 @@
1
1
  import type { ComponentResolver } from "unplugin-vue-components"
2
2
 
3
- const prefixless = ["Icon", "Aria"]
3
+ const prefixless = ["Icon"]
4
4
  // eslint-disable-next-line @typescript-eslint/naming-convention
5
5
  export const WitchcraftUiResolver = (
6
6
  {
@@ -1,16 +1,16 @@
1
1
  <template>
2
- <!-- Width 100% + 2xmargin in combination with the margins in LibRoot is a bit of a hack so that it looks like there's padding around the content in test mode (for storybook). We can't just absolutely position these controls or they make the container scroll. -->
2
+ <!-- Width 100% + 2xmargin in combination with the margins in WRoot is a bit of a hack so that it looks like there's padding around the content in test mode (for storybook). We can't just absolutely position these controls or they make the container scroll. -->
3
3
  <div class="test-controls flex gap-2 p-1 pb-10 -ml-10 w-[calc(100%_+_var(--spacing)*20)]">
4
4
  <div class="flex-grow"/>
5
5
  <div class="outline-indicator">
6
6
  {{ showOutline ? "Outline Enabled" : "Outline Disabled" }}
7
7
  </div>
8
- <lib-dark-mode-switcher/>
8
+ <WDarkModeSwitcher/>
9
9
  </div>
10
10
  </template>
11
11
 
12
12
  <script setup lang="ts">
13
- import LibDarkModeSwitcher from "../LibDarkModeSwitcher/LibDarkModeSwitcher.vue"
13
+ import WDarkModeSwitcher from "../WDarkModeSwitcher/WDarkModeSwitcher.vue"
14
14
 
15
15
  defineOptions({ name: "TestControls" })
16
16
  defineProps<{
@@ -0,0 +1,112 @@
1
+ /* eslint-disable @typescript-eslint/naming-convention */
2
+ import { capitalize } from "@alanscodelog/utils/capitalize"
3
+ import type { Meta, StoryObj } from "@storybook/vue3"
4
+
5
+ import IconFaSolidBell from "~icons/fa-solid/bell"
6
+
7
+ import * as components from "../index.js"
8
+
9
+ type ExtraTestArgs = {
10
+ _iconAfter?: boolean
11
+ }
12
+ const meta: Meta<typeof components.WButton> = {
13
+ component: components.WButton,
14
+ title: "Components/Button",
15
+ args: {
16
+ label: "Label",
17
+ ...{
18
+ _iconAfter: true
19
+ } satisfies ExtraTestArgs as any
20
+ }
21
+ }
22
+
23
+ export default meta
24
+ type Story = StoryObj<typeof components.WButton> & { args?: ExtraTestArgs }
25
+
26
+ export const Primary: Story = {
27
+ render: args => {
28
+ const extraArgs = args as ExtraTestArgs
29
+ return {
30
+ components: {
31
+ ...components,
32
+ IconFaSolidBell
33
+ },
34
+ setup: () => ({ args, capitalize }),
35
+ template: `
36
+ <div class="flex gap-4 justify-center">
37
+ <template v-for="type of [false, 'ok', 'warning', 'danger', 'primary', 'secondary' ]">
38
+ <WButton v-bind="{...args, color: type, label: !args.label ? undefined : args.label + ' ' + capitalize(type || 'false')}">
39
+ <template #icon>
40
+ <icon class="w-[1em]"><icon-fa-solid-bell /></icon>
41
+ </template>
42
+ </WButton>
43
+ </template>
44
+ </div>
45
+ <div class="flex flex-col gap-4 pt-10">
46
+ <template v-for="type of [false, 'ok', 'warning', 'danger', 'primary', 'secondary']">
47
+ <WButton v-bind="{...args, color: type , label: !args.label ? undefined : args.label + ' ' + capitalize(type || 'false') }">
48
+ ${extraArgs._iconAfter
49
+ ? `
50
+ <template #icon-after>
51
+ <icon class="w-[1em]"><icon-fa-solid-bell /></icon>
52
+ </template>
53
+ `
54
+ : ``}
55
+ </WButton>
56
+ </template>
57
+ </div>
58
+ `
59
+ }
60
+ }
61
+ }
62
+
63
+ export const IconAfter: Story = {
64
+ ...Primary,
65
+ args: {
66
+ ...Primary.args,
67
+ _iconAfter: true
68
+ }
69
+ }
70
+
71
+ export const OnlyIcon: Story = {
72
+ ...Primary,
73
+ args: {
74
+ ...Primary.args,
75
+ label: undefined
76
+ }
77
+ }
78
+ export const Disabled: Story = {
79
+ ...Primary,
80
+ args: {
81
+ ...Primary.args,
82
+ disabled: true
83
+ }
84
+ }
85
+ export const Borderless: Story = {
86
+ ...Primary,
87
+ args: {
88
+ ...Primary.args,
89
+ border: false
90
+ }
91
+ }
92
+ export const BorderlessDisabled: Story = {
93
+ ...Primary,
94
+ args: {
95
+ ...Primary.args,
96
+ border: false,
97
+ disabled: true
98
+ }
99
+ }
100
+ export const WithDivInside: Story = {
101
+ render: args => ({
102
+ components,
103
+ setup: () => ({ args }),
104
+ template: `
105
+ <div class="flex gap-4 justify-center">
106
+ <WButton v-bind="{...args}">
107
+ <div>Div inside button still has a pointer cursor.</div>
108
+ </WButton>
109
+ </div>
110
+ `
111
+ })
112
+ }
@@ -1,7 +1,6 @@
1
1
  <template>
2
2
  <button
3
- :id="id ?? fallbackId"
4
- :class="!($attrs as any).unstyle && twMerge(`
3
+ :class="!unstyle && twMerge(`
5
4
  button
6
5
  flex
7
6
  cursor-pointer
@@ -26,7 +25,8 @@
26
25
  border && `
27
26
  transition-all
28
27
  bg-neutral-100
29
- dark:bg-neutral-800
28
+ dark:tint-neutral-800/10
29
+ dark:bg-(--mix)
30
30
  shadow-[0_1px_1px_0]
31
31
  shadow-neutral-950/20
32
32
  hover:shadow-[0_1px_3px_0]
@@ -41,6 +41,7 @@
41
41
  after:shadow-[0_1px_0_0_inset]
42
42
  after:shadow-bg/20
43
43
  hover:after:shadow-bg/60
44
+ disabled:after:hidden
44
45
  dark:after:shadow-bg/10
45
46
  dark:hover:after:shadow-bg/50
46
47
  after:pointer-events-none
@@ -49,15 +50,16 @@
49
50
  active:shadow-fg/20
50
51
  active:border-transparent
51
52
  border
52
- border-neutral-300
53
+ border-black/10
53
54
  disabled:border-neutral-200
54
- disabled:bg-neutral-50
55
+ disabled:bg-neutral-100
55
56
  dark:hover:shadow-neutral-950/70
56
57
  dark:active:shadow-fg/40
57
58
  dark:active:border-neutral-900
58
- dark:border-neutral-900
59
+ dark:border-black/50
59
60
  dark:disabled:border-neutral-800
60
- dark:disabled:bg-neutral-900
61
+ dark:disabled:bg-(--mix)
62
+ dark:disabled:shade-neutral-900/10
61
63
  `,
62
64
  border && (!color || color === `secondary`) && `
63
65
  after:shadow-bg/90
@@ -153,26 +155,24 @@
153
155
  `,
154
156
  ($attrs as any)?.class
155
157
  )"
156
- :type="$attrs.type as any"
158
+ :type="($attrs as any)?.type || 'button'"
157
159
  :tabindex="0"
158
160
  :disabled="disabled"
159
161
  :data-border="border"
160
162
  :data-color="color"
161
- :aria-disabled="disabled"
162
163
  v-bind="{
163
- ...autoTitle,
164
164
  ...$attrs,
165
- class: undefined,
166
- ...ariaLabel
165
+ class: undefined
167
166
  }"
168
167
  >
169
168
  <slot
170
169
  name="label"
171
- v-bind="{ id: `label-${id ?? fallbackId}`, classes: 'button--label pointer-events-none flex flex-1 items-center justify-center gap-1' }"
170
+ v-bind="{
171
+ classes: 'button--label pointer-events-none flex flex-1 items-center justify-center gap-1'
172
+ }"
172
173
  >
173
- <label
174
- :id="`label-${id ?? fallbackId}`"
175
- class="button--label pointer-events-none flex flex-1 items-center justify-center gap-1"
174
+ <div
175
+ :class="!unstyle && 'button--label pointer-events-none flex flex-1 items-center justify-center gap-1'"
176
176
  >
177
177
  <slot name="icon"/>
178
178
  <slot
@@ -183,57 +183,41 @@
183
183
  </span>
184
184
  </slot>
185
185
  <slot name="icon-after"/>
186
- </label>
186
+ </div>
187
187
  </slot>
188
188
  </button>
189
189
  </template>
190
190
 
191
191
  <script setup lang="ts">
192
192
  import { isBlank } from "@alanscodelog/utils/isBlank"
193
- import { type ButtonHTMLAttributes, computed, useAttrs } from "vue"
193
+ import { type ButtonHTMLAttributes, useAttrs } from "vue"
194
194
 
195
- import { useAriaLabel } from "../../composables/useAriaLabel.js"
195
+ import type { BaseInteractiveProps, TailwindClassProp } from "../../types/index.js"
196
196
  import { twMerge } from "../../utils/twMerge.js"
197
- import { type BaseInteractiveProps, type ButtonProps, getFallbackId, type LabelProps, type LinkableByIdProps, type TailwindClassProp } from "../shared/props.js"
197
+
198
198
 
199
199
  const $attrs = useAttrs()
200
200
 
201
201
  defineOptions({
202
- name: "LibButton"
202
+ name: "WButton",
203
+ inheritAttrs: false
203
204
  })
204
205
 
205
- const fallbackId = getFallbackId()
206
206
 
207
- const props = withDefaults(defineProps<Props>(), {
207
+ withDefaults(defineProps<
208
+ & BaseInteractiveProps
209
+ & {
210
+ label?: string
211
+ border?: boolean
212
+ color?: "warning" | "ok" | "danger" | "primary" | "secondary" | false
213
+ }
214
+
215
+ & /** @vue-ignore */ Omit<ButtonHTMLAttributes, "class" | "color">
216
+ & /** @vue-ignore */ TailwindClassProp
217
+ >(), {
208
218
  color: false,
209
219
  label: "",
210
- unstyle: false, disabled: false, readonly: false, border: true
220
+ border: true
211
221
  })
212
-
213
- const ariaLabel = useAriaLabel(props, fallbackId)
214
- const autoTitle = computed(() => ({
215
- title: props.autoTitleFromAria
216
- ? ($attrs["aria-label"] ?? props.label) as string
217
- : undefined
218
- }))
219
222
  </script>
220
223
 
221
- <script lang="ts">
222
- type RealProps
223
- = & LinkableByIdProps
224
- & LabelProps
225
- & BaseInteractiveProps
226
- & ButtonProps
227
-
228
- interface Props
229
- extends
230
- /** @vue-ignore */
231
- Partial<Omit<ButtonHTMLAttributes, "class" | "color" | "disabled">
232
- & TailwindClassProp
233
- & {
234
- // why is this not already a part of button?
235
- // eslint-disable-next-line @typescript-eslint/naming-convention
236
- "aria-label": string
237
- }>,
238
- RealProps {}
239
- </script>
@@ -4,27 +4,27 @@ import type { Meta, StoryObj } from "@storybook/vue3"
4
4
  import * as components from "../index.js"
5
5
 
6
6
  const meta = {
7
- component: components.LibCheckbox,
7
+ component: components.WCheckbox,
8
8
  title: "Components/Checkbox",
9
9
  args: {
10
10
  modelValue: true,
11
11
  label: "Label"
12
12
  }
13
- } satisfies Meta<typeof components.LibCheckbox> & Meta<{ custom: string }>
13
+ } satisfies Meta<typeof components.WCheckbox> & Meta<{ custom: string }>
14
14
 
15
15
  export default meta
16
- type Story = StoryObj<typeof components.LibCheckbox> // & StoryObj<typeof extraArgs>
16
+ type Story = StoryObj<typeof components.WCheckbox> // & StoryObj<typeof extraArgs>
17
17
 
18
18
  export const Primary: Story = {
19
19
  render: args => ({
20
20
  components,
21
21
  setup: () => ({ args }),
22
22
  template: `
23
- <lib-checkbox v-bind="args" v-model="args.modelValue"></lib-checkbox>
23
+ <WCheckbox v-bind="args" v-model="args.modelValue"></WCheckbox>
24
24
  <br>
25
25
  Opposite State:
26
26
  <br>
27
- <lib-checkbox v-bind="args" :modelValue="!args.modelValue" @update:modelValue="args.modelValue = !$event"></lib-checkbox>
27
+ <WCheckbox v-bind="args" :modelValue="!args.modelValue" @update:modelValue="args.modelValue = !$event"></WCheckbox>
28
28
  `
29
29
  })
30
30
  }
@@ -0,0 +1,123 @@
1
+ <template>
2
+ <div
3
+ :class="twMerge(`
4
+ checkbox--wrapper
5
+ flex
6
+ items-center
7
+ gap-1
8
+ `,
9
+ (disabled || readonly) && `
10
+ cursor-not-allowed
11
+ text-neutral-500
12
+ `,
13
+
14
+ wrapperAttrs?.class
15
+ )"
16
+ v-bind="{ ...wrapperAttrs, class: undefined }"
17
+ ref="el"
18
+ >
19
+ <slot name="left"/>
20
+ <label
21
+ :class="twMerge(`
22
+ checkbox--label
23
+ flex
24
+ items-center
25
+ gap-1
26
+ `,
27
+ labelAttrs?.class
28
+ )"
29
+ v-bind="{ ...labelAttrs, class: undefined }"
30
+ >
31
+ <CheckboxRoot
32
+ :id="finalId"
33
+ :disabled="disabled || readonly"
34
+ :class="!unstyle && twMerge(`
35
+ checkbox
36
+ flex
37
+ items-center
38
+ justify-center
39
+ focus-outline-no-offset
40
+ m-0
41
+ h-[1.2em]
42
+ w-[1.2em]
43
+ aspect-square
44
+ bg-neutral-500/10
45
+ text-white
46
+ dark:text-white
47
+ border
48
+ border-neutral-500
49
+ data-[state=checked]:border-accent-800/50
50
+ data-[state=checked]:bg-accent-500
51
+ data-[state=checked]:shadow-2xs
52
+ data-[state=checked]:shadow-black/20
53
+ data-[state=unchecked]:inset-shadow-2xs
54
+ data-[state=unchecked]:inset-shadow-black/20
55
+ focus:border-accent-600
56
+ rounded-sm
57
+ relative
58
+ transition-colors
59
+ dark:disabled:bg-neutral-800
60
+ cursor-pointer
61
+ disabled:text-neutral-500
62
+ disabled:bg-neutral-500/50
63
+ disabled:cursor-not-allowed
64
+ disabled:data-[state=checked]:border-neutral-500
65
+ `,
66
+ ($attrs as any)?.class
67
+ )"
68
+ v-bind="{ ...$attrs, class: undefined }"
69
+
70
+ v-model="modelValue"
71
+ >
72
+ <CheckboxIndicator class="checkbox--indicator">
73
+ <WIcon class="scale-110 mt-[2px] ml-[0.5px] [&_path]:stroke-3"><i-lucide-check/></WIcon>
74
+ </CheckboxIndicator>
75
+ </CheckboxRoot>
76
+
77
+ <slot/> {{ label }}
78
+ </label>
79
+ </div>
80
+ </template>
81
+
82
+ <script setup lang="ts">
83
+ import { CheckboxIndicator, CheckboxRoot } from "reka-ui"
84
+ import type { HTMLAttributes, InputHTMLAttributes } from "vue"
85
+ import { useAttrs } from "vue"
86
+
87
+ import { useFallbackId } from "../../composables/useFallbackId.js"
88
+ import { usePreHydrationValue } from "../../composables/usePreHydrationValue.js"
89
+ import type { BaseInteractiveProps, TailwindClassProp } from "../../types/index.js"
90
+ import { twMerge } from "../../utils/twMerge.js"
91
+ import WIcon from "../WIcon/WIcon.vue"
92
+
93
+ const $attrs = useAttrs()
94
+
95
+ defineOptions({
96
+ name: "WCheckbox",
97
+ inheritAttrs: false
98
+ })
99
+
100
+ const props = withDefaults(defineProps<
101
+ & BaseInteractiveProps
102
+ & {
103
+ id?: string
104
+ label?: string
105
+ labelAttrs?: Omit<HTMLAttributes, "class"> & TailwindClassProp
106
+ wrapperAttrs?: Omit<HTMLAttributes, "class"> & TailwindClassProp
107
+ }
108
+ & /** @vue-ignore */Omit<
109
+ InputHTMLAttributes,
110
+ "class" | "readonly" | "disabled" | "onSumbit"
111
+ // https://github.com/vuejs/core/pull/14237
112
+ | "autocomplete"
113
+ >
114
+ & /** @vue-ignore */ TailwindClassProp
115
+ >(), {
116
+ border: true
117
+ })
118
+
119
+ const modelValue = defineModel<boolean | "indeterminate">("modelValue", { default: false })
120
+ const finalId = useFallbackId(props)
121
+ usePreHydrationValue(finalId, modelValue)
122
+ </script>
123
+
@@ -2,12 +2,12 @@
2
2
  import type { Meta, StoryObj } from "@storybook/vue3"
3
3
  import { ref } from "vue"
4
4
 
5
- import LibColorInput from "./LibColorInput.vue"
5
+ import WColorInput from "./WColorInput.vue"
6
6
 
7
7
  import * as components from "../index.js"
8
8
 
9
- const meta: Meta<typeof LibColorInput> = {
10
- component: LibColorInput,
9
+ const meta: Meta<typeof WColorInput> = {
10
+ component: WColorInput,
11
11
  title: "Components/ColorInput",
12
12
  args: {
13
13
 
@@ -15,7 +15,7 @@ const meta: Meta<typeof LibColorInput> = {
15
15
  }
16
16
 
17
17
  export default meta
18
- type Story = StoryObj<typeof LibColorInput>
18
+ type Story = StoryObj<typeof WColorInput>
19
19
 
20
20
  export const Primary: Story = {
21
21
  render: args => ({
@@ -36,21 +36,21 @@ export const Primary: Story = {
36
36
  }
37
37
  },
38
38
  template: `
39
- <lib-color-Input
39
+ <WColorInput
40
40
  :allowAlpha="args.allowAlpha"
41
41
  :modelValue="args.color.value"
42
42
  @update:modelValue="handleChange"
43
43
  >
44
- </lib-color-Input>
44
+ </WColorInput>
45
45
  Stretched:
46
46
  <div class="flex-1 flex">
47
- <lib-color-Input
47
+ <WColorInput
48
48
  class="flex-1"
49
49
  :allowAlpha="args.allowAlpha"
50
50
  :modelValue="args.color.value"
51
51
  @update:modelValue="handleChange"
52
52
  >
53
- </lib-color-Input>
53
+ </WColorInput>
54
54
  </div>
55
55
  `
56
56
  })