@witchcraft/ui 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. package/README.md +56 -61
  2. package/dist/module.d.mts +1 -1
  3. package/dist/module.json +1 -1
  4. package/dist/module.mjs +13 -9
  5. package/dist/runtime/assets/animations.css +1 -1
  6. package/dist/runtime/assets/locales/en.json +2 -0
  7. package/dist/runtime/assets/utils.css +1 -1
  8. package/dist/runtime/build/WitchcraftUiResolver.js +1 -2
  9. package/dist/runtime/components/TestControls/TestControls.d.vue.ts +2 -1
  10. package/dist/runtime/components/TestControls/TestControls.vue +3 -3
  11. package/dist/runtime/components/TestControls/TestControls.vue.d.ts +2 -1
  12. package/dist/runtime/components/WButton/WButton.d.vue.ts +34 -0
  13. package/dist/runtime/components/{LibButton/LibButton.vue → WButton/WButton.vue} +26 -38
  14. package/dist/runtime/components/WButton/WButton.vue.d.ts +34 -0
  15. package/dist/runtime/components/WCheckbox/WCheckbox.d.vue.ts +33 -0
  16. package/dist/runtime/components/WCheckbox/WCheckbox.vue +110 -0
  17. package/dist/runtime/components/WCheckbox/WCheckbox.vue.d.ts +33 -0
  18. package/dist/runtime/components/{LibColorInput/LibColorInput.d.vue.ts → WColorInput/WColorInput.d.vue.ts} +18 -36
  19. package/dist/runtime/components/WColorInput/WColorInput.vue +85 -0
  20. package/dist/runtime/components/{LibColorInput/LibColorInput.vue.d.ts → WColorInput/WColorInput.vue.d.ts} +18 -36
  21. package/dist/runtime/components/WColorInput/WColorSwatchButton.d.vue.ts +28 -0
  22. package/dist/runtime/components/WColorInput/WColorSwatchButton.vue +86 -0
  23. package/dist/runtime/components/WColorInput/WColorSwatchButton.vue.d.ts +28 -0
  24. package/dist/runtime/components/{LibColorPicker/LibColorPicker.d.vue.ts → WColorPicker/WColorPicker.d.vue.ts} +12 -9
  25. package/dist/runtime/components/{LibColorPicker/LibColorPicker.vue → WColorPicker/WColorPicker.vue} +41 -29
  26. package/dist/runtime/components/{LibColorPicker/LibColorPicker.vue.d.ts → WColorPicker/WColorPicker.vue.d.ts} +12 -9
  27. package/dist/runtime/components/WCombobox/WCombobox.d.vue.ts +111 -0
  28. package/dist/runtime/components/WCombobox/WCombobox.vue +405 -0
  29. package/dist/runtime/components/WCombobox/WCombobox.vue.d.ts +111 -0
  30. package/dist/runtime/components/WCombobox/storyPlays.d.ts +18 -0
  31. package/dist/runtime/components/WCombobox/storyPlays.js +68 -0
  32. package/dist/runtime/components/{LibDarkModeSwitcher/LibDarkModeSwitcher.d.vue.ts → WDarkModeSwitcher/WDarkModeSwitcher.d.vue.ts} +9 -13
  33. package/dist/runtime/components/{LibDarkModeSwitcher/LibDarkModeSwitcher.vue → WDarkModeSwitcher/WDarkModeSwitcher.vue} +11 -14
  34. package/dist/runtime/components/{LibDarkModeSwitcher/LibDarkModeSwitcher.vue.d.ts → WDarkModeSwitcher/WDarkModeSwitcher.vue.d.ts} +9 -13
  35. package/dist/runtime/components/{LibDatePicker/LibDatePicker.d.vue.ts → WDatePicker/WDatePicker.d.vue.ts} +7 -7
  36. package/dist/runtime/components/{LibDatePicker/LibDatePicker.vue → WDatePicker/WDatePicker.vue} +3 -7
  37. package/dist/runtime/components/{LibDatePicker/LibDatePicker.vue.d.ts → WDatePicker/WDatePicker.vue.d.ts} +7 -7
  38. package/dist/runtime/components/WDatePicker/WRangeDatePicker.d.vue.ts +182 -0
  39. package/dist/runtime/components/{LibDatePicker/LibRangeDatePicker.vue → WDatePicker/WRangeDatePicker.vue} +29 -25
  40. package/dist/runtime/components/WDatePicker/WRangeDatePicker.vue.d.ts +182 -0
  41. package/dist/runtime/components/{LibDatePicker/LibSingleDatePicker.d.vue.ts → WDatePicker/WSingleDatePicker.d.vue.ts} +7 -5
  42. package/dist/runtime/components/{LibDatePicker/LibSingleDatePicker.vue → WDatePicker/WSingleDatePicker.vue} +21 -21
  43. package/dist/runtime/components/{LibDatePicker/LibSingleDatePicker.vue.d.ts → WDatePicker/WSingleDatePicker.vue.d.ts} +7 -5
  44. package/dist/runtime/components/WDatePicker/WTimeZonePicker.d.vue.ts +13 -0
  45. package/dist/runtime/components/{LibDatePicker/LibTimeZonePicker.vue → WDatePicker/WTimeZonePicker.vue} +5 -12
  46. package/dist/runtime/components/WDatePicker/WTimeZonePicker.vue.d.ts +13 -0
  47. package/dist/runtime/components/{LibDebug/LibDebug.d.vue.ts → WDebug/WDebug.d.vue.ts} +3 -2
  48. package/dist/runtime/components/{LibDebug/LibDebug.vue → WDebug/WDebug.vue} +10 -12
  49. package/dist/runtime/components/{LibDebug/LibDebug.vue.d.ts → WDebug/WDebug.vue.d.ts} +3 -2
  50. package/dist/runtime/components/{LibDevOnly/LibDevOnly.d.vue.ts → WDevOnly/WDevOnly.d.vue.ts} +3 -5
  51. package/dist/runtime/components/{LibDevOnly/LibDevOnly.vue.d.ts → WDevOnly/WDevOnly.vue.d.ts} +3 -5
  52. package/dist/runtime/components/WFileInput/WFileInput.d.vue.ts +58 -0
  53. package/dist/runtime/components/WFileInput/WFileInput.vue +348 -0
  54. package/dist/runtime/components/WFileInput/WFileInput.vue.d.ts +58 -0
  55. package/dist/runtime/components/WIcon/WIcon.d.vue.ts +18 -0
  56. package/dist/runtime/components/{Icon/Icon.vue → WIcon/WIcon.vue} +1 -1
  57. package/dist/runtime/components/WIcon/WIcon.vue.d.ts +18 -0
  58. package/dist/runtime/components/WMultiValues/WMultiValues.d.vue.ts +28 -0
  59. package/dist/runtime/components/WMultiValues/WMultiValues.vue +150 -0
  60. package/dist/runtime/components/WMultiValues/WMultiValues.vue.d.ts +28 -0
  61. package/dist/runtime/components/WNotifications/WNotification.d.vue.ts +37 -0
  62. package/dist/runtime/components/{LibNotifications/LibNotification.vue → WNotifications/WNotification.vue} +61 -35
  63. package/dist/runtime/components/WNotifications/WNotification.vue.d.ts +37 -0
  64. package/dist/runtime/components/WNotifications/WNotificationTestMessageComponent.d.vue.ts +7 -0
  65. package/dist/runtime/components/WNotifications/WNotificationTestMessageComponent.vue +29 -0
  66. package/dist/runtime/components/WNotifications/WNotificationTestMessageComponent.vue.d.ts +7 -0
  67. package/dist/runtime/components/WNotifications/WNotifications.d.vue.ts +11 -0
  68. package/dist/runtime/components/{LibNotifications/LibNotifications.vue → WNotifications/WNotifications.vue} +72 -36
  69. package/dist/runtime/components/WNotifications/WNotifications.vue.d.ts +11 -0
  70. package/dist/runtime/components/WNotifications/calculateNotificationProgress.d.ts +2 -0
  71. package/dist/runtime/components/WNotifications/calculateNotificationProgress.js +4 -0
  72. package/dist/runtime/components/WNumberInput/WNumberInput.d.vue.ts +27 -0
  73. package/dist/runtime/components/WNumberInput/WNumberInput.vue +96 -0
  74. package/dist/runtime/components/WNumberInput/WNumberInput.vue.d.ts +27 -0
  75. package/dist/runtime/components/WPagination/WPagination.d.vue.ts +59 -0
  76. package/dist/runtime/components/WPagination/WPagination.vue +182 -0
  77. package/dist/runtime/components/WPagination/WPagination.vue.d.ts +59 -0
  78. package/dist/runtime/components/WPalette/WPalette.d.vue.ts +11 -0
  79. package/dist/runtime/components/{LibPalette/LibPalette.vue → WPalette/WPalette.vue} +3 -8
  80. package/dist/runtime/components/WPalette/WPalette.vue.d.ts +11 -0
  81. package/dist/runtime/components/WPopover/WPopover.d.vue.ts +45 -0
  82. package/dist/runtime/components/WPopover/WPopover.vue +144 -0
  83. package/dist/runtime/components/WPopover/WPopover.vue.d.ts +45 -0
  84. package/dist/runtime/components/WPopup/WPopup.d.vue.ts +51 -0
  85. package/dist/runtime/components/WPopup/WPopup.vue +115 -0
  86. package/dist/runtime/components/WPopup/WPopup.vue.d.ts +51 -0
  87. package/dist/runtime/components/{LibProgressBar/LibProgressBar.d.vue.ts → WProgressBar/WProgressBar.d.vue.ts} +13 -16
  88. package/dist/runtime/components/WProgressBar/WProgressBar.vue +150 -0
  89. package/dist/runtime/components/{LibProgressBar/LibProgressBar.vue.d.ts → WProgressBar/WProgressBar.vue.d.ts} +13 -16
  90. package/dist/runtime/components/{LibRecorder/LibRecorder.d.vue.ts → WRecorder/WRecorder.d.vue.ts} +13 -27
  91. package/dist/runtime/components/{LibRecorder/LibRecorder.vue → WRecorder/WRecorder.vue} +37 -36
  92. package/dist/runtime/components/{LibRecorder/LibRecorder.vue.d.ts → WRecorder/WRecorder.vue.d.ts} +13 -27
  93. package/dist/runtime/components/{LibRoot/LibRoot.d.vue.ts → WRoot/WRoot.d.vue.ts} +11 -9
  94. package/dist/runtime/components/{LibRoot/LibRoot.vue → WRoot/WRoot.vue} +17 -15
  95. package/dist/runtime/components/{LibRoot/LibRoot.vue.d.ts → WRoot/WRoot.vue.d.ts} +11 -9
  96. package/dist/runtime/components/WSimpleInput/WSimpleInput.d.vue.ts +34 -0
  97. package/dist/runtime/components/{LibSimpleInput/LibSimpleInput.vue → WSimpleInput/WSimpleInput.vue} +14 -24
  98. package/dist/runtime/components/WSimpleInput/WSimpleInput.vue.d.ts +34 -0
  99. package/dist/runtime/components/WTable/WTable.d.vue.ts +102 -0
  100. package/dist/runtime/components/WTable/WTable.vue +370 -0
  101. package/dist/runtime/components/WTable/WTable.vue.d.ts +102 -0
  102. package/dist/runtime/components/WTooltip/WTooltip.d.vue.ts +40 -0
  103. package/dist/runtime/components/WTooltip/WTooltip.vue +112 -0
  104. package/dist/runtime/components/WTooltip/WTooltip.vue.d.ts +40 -0
  105. package/dist/runtime/components/index.d.ts +20 -20
  106. package/dist/runtime/components/index.js +20 -20
  107. package/dist/runtime/composables/index.d.ts +4 -4
  108. package/dist/runtime/composables/index.js +4 -4
  109. package/dist/runtime/composables/useDelayedLoadingIndicator.d.ts +9 -0
  110. package/dist/runtime/composables/useDelayedLoadingIndicator.js +18 -0
  111. package/dist/runtime/composables/useDisplayForReka.d.ts +25 -0
  112. package/dist/runtime/composables/useDisplayForReka.js +16 -0
  113. package/dist/runtime/composables/useFallbackId.d.ts +3 -0
  114. package/dist/runtime/composables/useFallbackId.js +5 -0
  115. package/dist/runtime/composables/useInjectedDarkMode.d.ts +1 -1
  116. package/dist/runtime/composables/usePopupConstrainToStyle.d.ts +8 -0
  117. package/dist/runtime/composables/usePopupConstrainToStyle.js +8 -0
  118. package/dist/runtime/composables/useSetupDarkMode.d.ts +2 -3
  119. package/dist/runtime/composables/useSetupDarkMode.js +90 -4
  120. package/dist/runtime/composables/useTimeConditionally.d.ts +16 -0
  121. package/dist/runtime/composables/useTimeConditionally.js +27 -0
  122. package/dist/runtime/directives/vResizableCols.js +101 -34
  123. package/dist/runtime/helpers/NotificationHandler.d.ts +28 -3
  124. package/dist/runtime/helpers/NotificationHandler.js +7 -10
  125. package/dist/runtime/injectionKeys.d.ts +1 -5
  126. package/dist/runtime/injectionKeys.js +0 -2
  127. package/dist/runtime/types/index.d.ts +97 -31
  128. package/dist/runtime/types/index.js +1 -0
  129. package/dist/runtime/utils/notifyIfError.d.ts +3 -1
  130. package/dist/runtime/utils/notifyIfError.js +4 -2
  131. package/dist/runtime/utils/twMerge.d.ts +1 -0
  132. package/dist/runtime/utils/twMerge.js +2 -1
  133. package/package.json +59 -56
  134. package/src/module.ts +16 -8
  135. package/src/runtime/assets/animations.css +53 -6
  136. package/src/runtime/assets/locales/en.json +2 -0
  137. package/src/runtime/assets/tailwind.css +1 -1
  138. package/src/runtime/assets/utils.css +52 -4
  139. package/src/runtime/build/WitchcraftUiResolver.ts +1 -2
  140. package/src/runtime/components/TestControls/TestControls.vue +3 -3
  141. package/src/runtime/components/WButton/WButton.stories.ts +112 -0
  142. package/src/runtime/components/{LibButton/LibButton.vue → WButton/WButton.vue} +34 -50
  143. package/src/runtime/components/{LibCheckbox/LibCheckbox.stories.ts → WCheckbox/WCheckbox.stories.ts} +5 -5
  144. package/src/runtime/components/WCheckbox/WCheckbox.vue +125 -0
  145. package/src/runtime/components/{LibColorInput/LibColorInput.stories.ts → WColorInput/WColorInput.stories.ts} +8 -8
  146. package/src/runtime/components/WColorInput/WColorInput.vue +112 -0
  147. package/src/runtime/components/WColorInput/WColorSwatchButton.vue +102 -0
  148. package/src/runtime/components/{LibColorPicker/LibColorPicker.stories.ts → WColorPicker/WColorPicker.stories.ts} +12 -12
  149. package/src/runtime/components/{LibColorPicker/LibColorPicker.vue → WColorPicker/WColorPicker.vue} +44 -31
  150. package/src/runtime/components/WCombobox/WCombobox.stories.ts +209 -0
  151. package/src/runtime/components/WCombobox/WCombobox.vue +450 -0
  152. package/src/runtime/components/WCombobox/storyPlays.ts +92 -0
  153. package/src/runtime/components/{LibDarkModeSwitcher/LibDarkModeSwitcher.stories.ts → WDarkModeSwitcher/WDarkModeSwitcher.stories.ts} +6 -6
  154. package/src/runtime/components/{LibDarkModeSwitcher/LibDarkModeSwitcher.vue → WDarkModeSwitcher/WDarkModeSwitcher.vue} +19 -30
  155. package/src/runtime/components/{LibDatePicker/LibDatePicker.stories.ts → WDatePicker/WDatePicker.stories.ts} +42 -34
  156. package/src/runtime/components/{LibDatePicker/LibDatePicker.vue → WDatePicker/WDatePicker.vue} +3 -7
  157. package/src/runtime/components/{LibDatePicker/LibRangeDatePicker.vue → WDatePicker/WRangeDatePicker.vue} +29 -25
  158. package/src/runtime/components/{LibDatePicker/LibSingleDatePicker.vue → WDatePicker/WSingleDatePicker.vue} +21 -21
  159. package/src/runtime/components/{LibDatePicker/LibTimeZonePicker.vue → WDatePicker/WTimeZonePicker.vue} +5 -12
  160. package/src/runtime/components/{LibDebug/LibDebug.stories.ts → WDebug/WDebug.stories.ts} +5 -5
  161. package/src/runtime/components/{LibDebug/LibDebug.vue → WDebug/WDebug.vue} +9 -10
  162. package/src/runtime/components/{LibDevOnly/LibDevOnly.vue → WDevOnly/WDevOnly.vue} +0 -4
  163. package/src/runtime/components/{LibFileInput/LibFileInput.stories.ts → WFileInput/WFileInput.stories.ts} +20 -10
  164. package/src/runtime/components/WFileInput/WFileInput.vue +392 -0
  165. package/src/runtime/components/{Icon/Icon.vue → WIcon/WIcon.vue} +5 -8
  166. package/src/runtime/components/{LibMultiValues/LibMultiValues.stories.ts → WMultiValues/WMultiValues.stories.ts} +9 -9
  167. package/src/runtime/components/WMultiValues/WMultiValues.vue +163 -0
  168. package/src/runtime/components/{LibNotifications/LibNotification.stories.ts → WNotifications/WNotification.stories.ts} +42 -6
  169. package/src/runtime/components/{LibNotifications/LibNotification.vue → WNotifications/WNotification.vue} +72 -45
  170. package/src/runtime/components/WNotifications/WNotificationTestMessageComponent.vue +27 -0
  171. package/src/runtime/components/WNotifications/WNotifications.stories.ts +139 -0
  172. package/src/runtime/components/{LibNotifications/LibNotifications.vue → WNotifications/WNotifications.vue} +87 -47
  173. package/src/runtime/components/WNotifications/calculateNotificationProgress.ts +8 -0
  174. package/src/runtime/components/WNumberInput/WNumberInput.vue +109 -0
  175. package/src/runtime/components/WPagination/WPagination.stories.ts +51 -0
  176. package/src/runtime/components/WPagination/WPagination.vue +207 -0
  177. package/src/runtime/components/{LibPalette/LibPalette.stories.ts → WPalette/WPalette.stories.ts} +6 -6
  178. package/src/runtime/components/{LibPalette/LibPalette.vue → WPalette/WPalette.vue} +3 -8
  179. package/src/runtime/components/WPopover/WPopover.stories.ts +218 -0
  180. package/src/runtime/components/WPopover/WPopover.vue +168 -0
  181. package/src/runtime/components/WPopup/WPopup.stories.ts +104 -0
  182. package/src/runtime/components/WPopup/WPopup.vue +134 -0
  183. package/src/runtime/components/WProgressBar/WProgressBar.stories.ts +119 -0
  184. package/src/runtime/components/WProgressBar/WProgressBar.vue +185 -0
  185. package/src/runtime/components/{LibRecorder/LibRecorder.stories.ts → WRecorder/WRecorder.stories.ts} +9 -6
  186. package/src/runtime/components/{LibRecorder/LibRecorder.vue → WRecorder/WRecorder.vue} +69 -68
  187. package/src/runtime/components/{LibRoot/LibRoot.vue → WRoot/WRoot.vue} +18 -15
  188. package/src/runtime/components/{LibSimpleInput/LibSimpleInput.stories.ts → WSimpleInput/WSimpleInput.stories.ts} +11 -12
  189. package/src/runtime/components/{LibSimpleInput/LibSimpleInput.vue → WSimpleInput/WSimpleInput.vue} +28 -42
  190. package/src/runtime/components/WTable/WTable.stories.ts +334 -0
  191. package/src/runtime/components/WTable/WTable.vue +471 -0
  192. package/src/runtime/components/WTooltip/WTooltip.stories.ts +82 -0
  193. package/src/runtime/components/WTooltip/WTooltip.vue +128 -0
  194. package/src/runtime/components/index.ts +20 -20
  195. package/src/runtime/composables/index.ts +4 -4
  196. package/src/runtime/composables/useDelayedLoadingIndicator.ts +30 -0
  197. package/src/runtime/composables/useDisplayForReka.ts +37 -0
  198. package/src/runtime/composables/useFallbackId.ts +6 -0
  199. package/src/runtime/composables/useInjectedDarkMode.ts +1 -2
  200. package/src/runtime/composables/usePopupConstrainToStyle.ts +29 -0
  201. package/src/runtime/composables/useSetupDarkMode.ts +122 -4
  202. package/src/runtime/composables/useTimeConditionally.ts +51 -0
  203. package/src/runtime/directives/vResizableCols.ts +121 -38
  204. package/src/runtime/helpers/NotificationHandler.ts +30 -11
  205. package/src/runtime/injectionKeys.ts +1 -7
  206. package/src/runtime/types/index.ts +118 -36
  207. package/src/runtime/utils/notifyIfError.ts +6 -2
  208. package/src/runtime/utils/twMerge.ts +2 -1
  209. package/types/components.d.ts +14 -15
  210. package/dist/runtime/components/Aria/Aria.d.vue.ts +0 -5
  211. package/dist/runtime/components/Aria/Aria.vue +0 -16
  212. package/dist/runtime/components/Aria/Aria.vue.d.ts +0 -5
  213. package/dist/runtime/components/Icon/Icon.d.vue.ts +0 -21
  214. package/dist/runtime/components/Icon/Icon.vue.d.ts +0 -21
  215. package/dist/runtime/components/LibButton/LibButton.d.vue.ts +0 -36
  216. package/dist/runtime/components/LibButton/LibButton.vue.d.ts +0 -36
  217. package/dist/runtime/components/LibCheckbox/LibCheckbox.d.vue.ts +0 -42
  218. package/dist/runtime/components/LibCheckbox/LibCheckbox.vue +0 -103
  219. package/dist/runtime/components/LibCheckbox/LibCheckbox.vue.d.ts +0 -42
  220. package/dist/runtime/components/LibColorInput/LibColorInput.vue +0 -162
  221. package/dist/runtime/components/LibDatePicker/LibRangeDatePicker.d.vue.ts +0 -34
  222. package/dist/runtime/components/LibDatePicker/LibRangeDatePicker.vue.d.ts +0 -34
  223. package/dist/runtime/components/LibDatePicker/LibTimeZonePicker.d.vue.ts +0 -22
  224. package/dist/runtime/components/LibDatePicker/LibTimeZonePicker.vue.d.ts +0 -22
  225. package/dist/runtime/components/LibFileInput/LibFileInput.d.vue.ts +0 -43
  226. package/dist/runtime/components/LibFileInput/LibFileInput.vue +0 -274
  227. package/dist/runtime/components/LibFileInput/LibFileInput.vue.d.ts +0 -43
  228. package/dist/runtime/components/LibInputDeprecated/LibInputDeprecated.d.vue.ts +0 -165
  229. package/dist/runtime/components/LibInputDeprecated/LibInputDeprecated.vue +0 -387
  230. package/dist/runtime/components/LibInputDeprecated/LibInputDeprecated.vue.d.ts +0 -165
  231. package/dist/runtime/components/LibLabel/LibLabel.d.vue.ts +0 -26
  232. package/dist/runtime/components/LibLabel/LibLabel.vue +0 -45
  233. package/dist/runtime/components/LibLabel/LibLabel.vue.d.ts +0 -26
  234. package/dist/runtime/components/LibMultiValues/LibMultiValues.d.vue.ts +0 -29
  235. package/dist/runtime/components/LibMultiValues/LibMultiValues.vue +0 -109
  236. package/dist/runtime/components/LibMultiValues/LibMultiValues.vue.d.ts +0 -29
  237. package/dist/runtime/components/LibNotifications/LibNotification.d.vue.ts +0 -30
  238. package/dist/runtime/components/LibNotifications/LibNotification.vue.d.ts +0 -30
  239. package/dist/runtime/components/LibNotifications/LibNotifications.d.vue.ts +0 -13
  240. package/dist/runtime/components/LibNotifications/LibNotifications.vue.d.ts +0 -13
  241. package/dist/runtime/components/LibPagination/LibPagination.d.vue.ts +0 -104
  242. package/dist/runtime/components/LibPagination/LibPagination.vue +0 -229
  243. package/dist/runtime/components/LibPagination/LibPagination.vue.d.ts +0 -104
  244. package/dist/runtime/components/LibPalette/LibPalette.d.vue.ts +0 -14
  245. package/dist/runtime/components/LibPalette/LibPalette.vue.d.ts +0 -14
  246. package/dist/runtime/components/LibPopup/LibPopup.d.vue.ts +0 -46
  247. package/dist/runtime/components/LibPopup/LibPopup.vue +0 -365
  248. package/dist/runtime/components/LibPopup/LibPopup.vue.d.ts +0 -46
  249. package/dist/runtime/components/LibProgressBar/LibProgressBar.vue +0 -169
  250. package/dist/runtime/components/LibSimpleInput/LibSimpleInput.d.vue.ts +0 -35
  251. package/dist/runtime/components/LibSimpleInput/LibSimpleInput.vue.d.ts +0 -35
  252. package/dist/runtime/components/LibSuggestions/LibSuggestions.d.vue.ts +0 -94
  253. package/dist/runtime/components/LibSuggestions/LibSuggestions.vue +0 -178
  254. package/dist/runtime/components/LibSuggestions/LibSuggestions.vue.d.ts +0 -94
  255. package/dist/runtime/components/LibTable/LibTable.d.vue.ts +0 -45
  256. package/dist/runtime/components/LibTable/LibTable.vue +0 -155
  257. package/dist/runtime/components/LibTable/LibTable.vue.d.ts +0 -45
  258. package/dist/runtime/components/Template/NAME.d.vue.ts +0 -17
  259. package/dist/runtime/components/Template/NAME.vue +0 -27
  260. package/dist/runtime/components/Template/NAME.vue.d.ts +0 -17
  261. package/dist/runtime/components/Template/TemplateStory.d.ts +0 -7
  262. package/dist/runtime/components/Template/TemplateStory.js +0 -22
  263. package/dist/runtime/components/shared/props.d.ts +0 -171
  264. package/dist/runtime/components/shared/props.js +0 -2
  265. package/dist/runtime/composables/useAriaLabel.d.ts +0 -6
  266. package/dist/runtime/composables/useAriaLabel.js +0 -15
  267. package/dist/runtime/composables/useDarkMode.d.ts +0 -77
  268. package/dist/runtime/composables/useDarkMode.js +0 -89
  269. package/dist/runtime/composables/useDivideAttrs.d.ts +0 -27
  270. package/dist/runtime/composables/useDivideAttrs.js +0 -27
  271. package/dist/runtime/composables/useSuggestions.d.ts +0 -40
  272. package/dist/runtime/composables/useSuggestions.js +0 -263
  273. package/src/runtime/components/Aria/Aria.vue +0 -26
  274. package/src/runtime/components/LibButton/LibButton.stories.ts +0 -106
  275. package/src/runtime/components/LibCheckbox/LibCheckbox.vue +0 -129
  276. package/src/runtime/components/LibColorInput/LibColorInput.vue +0 -203
  277. package/src/runtime/components/LibFileInput/LibFileInput.vue +0 -320
  278. package/src/runtime/components/LibInputDeprecated/LibInputDeprecated.stories.ts +0 -405
  279. package/src/runtime/components/LibInputDeprecated/LibInputDeprecated.vue +0 -414
  280. package/src/runtime/components/LibLabel/LibLabel.stories.ts +0 -33
  281. package/src/runtime/components/LibLabel/LibLabel.vue +0 -65
  282. package/src/runtime/components/LibMultiValues/LibMultiValues.vue +0 -123
  283. package/src/runtime/components/LibNotifications/LibNotifications.stories.ts +0 -120
  284. package/src/runtime/components/LibPagination/LibPagination.stories.ts +0 -49
  285. package/src/runtime/components/LibPagination/LibPagination.vue +0 -274
  286. package/src/runtime/components/LibPopup/LibPopup.stories.ts +0 -153
  287. package/src/runtime/components/LibPopup/LibPopup.vue +0 -396
  288. package/src/runtime/components/LibProgressBar/LibProgressBar.stories.ts +0 -90
  289. package/src/runtime/components/LibProgressBar/LibProgressBar.vue +0 -197
  290. package/src/runtime/components/LibSuggestions/LibSuggestions.stories.ts +0 -134
  291. package/src/runtime/components/LibSuggestions/LibSuggestions.vue +0 -212
  292. package/src/runtime/components/LibTable/LibTable.stories.ts +0 -167
  293. package/src/runtime/components/LibTable/LibTable.vue +0 -190
  294. package/src/runtime/components/Template/NAME.vue +0 -49
  295. package/src/runtime/components/Template/TemplateStory.ts +0 -37
  296. package/src/runtime/components/shared/props.ts +0 -199
  297. package/src/runtime/composables/useAriaLabel.ts +0 -23
  298. package/src/runtime/composables/useDarkMode.ts +0 -199
  299. package/src/runtime/composables/useDivideAttrs.ts +0 -53
  300. package/src/runtime/composables/useSuggestions.ts +0 -339
  301. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToHsva.d.ts +0 -0
  302. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToHsva.js +0 -0
  303. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToRgba.d.ts +0 -0
  304. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToRgba.js +0 -0
  305. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/toLowPrecisionRgbaString.d.ts +0 -0
  306. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/toLowPrecisionRgbaString.js +0 -0
  307. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/truncate.d.ts +0 -0
  308. /package/dist/runtime/components/{LibColorPicker → WColorPicker}/utils/truncate.js +0 -0
  309. /package/dist/runtime/components/{LibDatePicker → WDatePicker}/helpers.d.ts +0 -0
  310. /package/dist/runtime/components/{LibDatePicker → WDatePicker}/helpers.js +0 -0
  311. /package/dist/runtime/components/{LibDevOnly/LibDevOnly.vue → WDevOnly/WDevOnly.vue} +0 -0
  312. /package/src/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToHsva.ts +0 -0
  313. /package/src/runtime/components/{LibColorPicker → WColorPicker}/utils/safeConvertToRgba.ts +0 -0
  314. /package/src/runtime/components/{LibColorPicker → WColorPicker}/utils/toLowPrecisionRgbaString.ts +0 -0
  315. /package/src/runtime/components/{LibColorPicker → WColorPicker}/utils/truncate.ts +0 -0
  316. /package/src/runtime/components/{LibDatePicker → WDatePicker}/helpers.ts +0 -0
@@ -0,0 +1,471 @@
1
+ <template>
2
+ <!--
3
+ - moving the border to the wrapper is to hide the little bits of border sticking out
4
+ added back the right straight border otherwise the scrollbar looks ass
5
+ this is ever so slightly visible if there is no scrollbar
6
+
7
+ - relative is for the sticky header in dynamic mode
8
+
9
+ - dynamic mode REQUIRES grid since otherwise the transforms don't work because of how tanstack calculates them
10
+ - tried pre-calculating the transforms to take into account the previous elements (e.g. virtual.start - (height of previous rows)) but this was way to slow and buggy
11
+ -->
12
+ <div
13
+ :class="twMerge(`
14
+ table--container
15
+ overflow-auto
16
+ `,
17
+ hasScrollbar.vertical && `has-scrollbar-vertical`,
18
+ hasScrollbar.horizontal && `has-scrollbar-horizontal`,
19
+ stickyHeader && `
20
+ [&_thead]:sticky
21
+ [&_thead]:top-0
22
+ [&_thead]:z-1
23
+ [&_.grip]:z-2
24
+ `,
25
+ isPostSetup && `resizable-cols-setup`,
26
+ border && `
27
+ border
28
+ border-neutral-500
29
+ `,
30
+ border && cellBorder && `
31
+ [&.has-scrollbar-horizontal_.last-row]:border-b
32
+ [&.has-scrollbar-horizontal_.last-row]:border-neutral-500
33
+ [&.has-scrollbar-vertical_.last-col]:border-r
34
+ [&.has-scrollbar-vertical_.last-col]:border-neutral-500
35
+ `,
36
+ (!resizableOptions.fitWidth || stickyHeader) && `
37
+ [&_td.tr]:rounded-tr-none!
38
+ [&_td.br]:rounded-br-none!
39
+ `,
40
+ // this combo prevents the x-scrollbar from showing up when it shouldn't
41
+ // and max-w-fit allows the border to shrink with the table columns
42
+ resizableOptions.fitWidth === false && `
43
+ [&_.grip]:last:translate-x-[-5px]
44
+ mr-1
45
+ max-w-fit
46
+ `,
47
+ rounded &&`
48
+ rounded-md
49
+ `,
50
+ mergedVirtualizerOpts.enabled && mergedVirtualizerOpts.method === 'dynamic' && `
51
+ relative
52
+ `,
53
+ wrapperAttrs?.class
54
+ )"
55
+ v-bind="{ ...wrapperAttrs, class: undefined }"
56
+ ref="parentRef"
57
+ >
58
+ <div
59
+ class="table--inner-container"
60
+ :style="{
61
+ ...(mergedVirtualizerOpts.enabled
62
+ ? { height: `${totalSize}px` }
63
+ : {})
64
+ }"
65
+ >
66
+ <!-- https://github.com/TanStack/virtual/issues/640#issuecomment-2795731690 -->
67
+ <table
68
+ :style="[{
69
+ ...(stickyHeader && mergedVirtualizerOpts.enabled
70
+ ? { '--table-sticky-fix': `${totalSize-tableHeight}px` }
71
+ : {})
72
+
73
+ }, $attrs?.style]"
74
+ :class="twMerge(`
75
+ table
76
+ table-fixed
77
+ border-separate
78
+ border-spacing-0
79
+ scrollbar-hidden
80
+ [&_.grip]:w-[5px]
81
+ relative
82
+ w-full
83
+ box-content
84
+ [&_thead]:font-bold
85
+ [&_td]:p-1
86
+ [&_th]:p-1
87
+ [&.resizable-cols-error]:cursor-not-allowed
88
+ [&.resizable-cols-error]:user-select-none
89
+ [&_thead_th]:bg-neutral-200
90
+ dark:[&_thead_th]:bg-neutral-800
91
+ `,
92
+ isPostSetup && mergedVirtualizerOpts.enabled && mergedVirtualizerOpts.method === 'dynamic' && `
93
+ grid
94
+ `,
95
+ stickyHeader && mergedVirtualizerOpts.enabled && mergedVirtualizerOpts.method === 'fixed' && `
96
+ after:inline-block
97
+ after:h-(--table-sticky-fix)
98
+ `,
99
+ cellBorder && `
100
+ [&_td]:border-neutral-500
101
+ [&_td:not(.last-row)]:border-b
102
+ [&_td:not(.first-col)]:border-l
103
+ [&_th]:border-neutral-500
104
+ [&_th:not(.last-row)]:border-b
105
+ [&_th:not(.first-col)]:border-l
106
+ `,
107
+ !cellBorder && `
108
+ [&_.grip]:hover:bg-neutral-300
109
+ dark:[&_.grip]:hover:bg-neutral-700
110
+ `,
111
+ ($attrs as any).class)"
112
+ v-bind="{ ...$attrs, class: undefined, style: undefined }"
113
+ v-resizable-cols="resizableOptions"
114
+ >
115
+ <thead
116
+ v-if="header"
117
+ :class="twMerge(
118
+ `table--header`,
119
+ isPostSetup && mergedVirtualizerOpts.enabled && mergedVirtualizerOpts.method === 'dynamic' && `
120
+ grid
121
+ top-0
122
+ `
123
+ )"
124
+ >
125
+ <tr
126
+ :class="twMerge(
127
+ `table--row`,
128
+ isPostSetup && mergedVirtualizerOpts.enabled && mergedVirtualizerOpts.method === 'dynamic'
129
+ && `flex w-full`
130
+ )"
131
+ >
132
+ <template
133
+ v-for="col, i of cols"
134
+ :key="col"
135
+ >
136
+ <slot
137
+ :name="`header-${col.toString()}`"
138
+ :class="classes[`-1-${i}`]"
139
+ :style="{ width: widths[i] }"
140
+ :col-key="col"
141
+ :config="(colConfig as any)[col]"
142
+ >
143
+ <th
144
+ :class="classes[`-1-${i}`]"
145
+ :style="{ width: widths[i] }"
146
+ >
147
+ {{ (colConfig as any)[col]?.name ?? col }}
148
+ </th>
149
+ </slot>
150
+ </template>
151
+ </tr>
152
+ </thead>
153
+ <tbody
154
+ :class="twMerge(
155
+ `table--body`,
156
+ isPostSetup && mergedVirtualizerOpts.enabled && mergedVirtualizerOpts.method === 'dynamic' && `
157
+ grid
158
+ relative
159
+ `
160
+ )"
161
+ :style="{
162
+ ...(mergedVirtualizerOpts.enabled && mergedVirtualizerOpts.method === 'dynamic'
163
+ ? { height: `${totalSize}px` }
164
+ : {})
165
+ }"
166
+ >
167
+ <template
168
+ v-for="(virtual, index) in virtualList"
169
+ :key="virtual.key as any"
170
+ >
171
+ <tr
172
+ :class="twMerge(`
173
+ table--row
174
+ `,
175
+ isPostSetup && mergedVirtualizerOpts.enabled && mergedVirtualizerOpts.method === 'dynamic' && `
176
+ flex
177
+ absolute
178
+ w-full
179
+ `,
180
+ isPostSetup && mergedVirtualizerOpts.enabled && ` will-change-transform `
181
+ )"
182
+ :style="{
183
+ ...(mergedVirtualizerOpts.enabled
184
+ ? {
185
+ transform: mergedVirtualizerOpts.method === 'fixed'
186
+ ? `translateY(${virtual.start - index * virtual.size!}px)`
187
+ : `translateY(${virtual.start}px)`,
188
+ height: mergedVirtualizerOpts.method === 'fixed' ? `${virtual.size}px` : undefined
189
+ }
190
+ : {})
191
+ }"
192
+ :data-index="virtual.index"
193
+ :ref="measureElement"
194
+ >
195
+ <template
196
+ v-for="col, j of cols"
197
+ :key="virtual.key + '-' + col.toString()"
198
+ >
199
+ <slot
200
+ :name="col"
201
+ :item="values[virtual.index]"
202
+ :value="values[virtual.index]![col]"
203
+ :style="{ width: widths[j] }"
204
+ :class="classes[`${virtual.index}-${j}`]"
205
+ >
206
+ <td
207
+ :style="{ width: widths[j] }"
208
+ :class="classes[`${virtual.index}-${j}`]"
209
+ >
210
+ {{ values[virtual.index]![col] }}
211
+ </td>
212
+ </slot>
213
+ </template>
214
+ </tr>
215
+ </template>
216
+ </tbody>
217
+ </table>
218
+ </div>
219
+ </div>
220
+ </template>
221
+
222
+ <!-- generic="T extends Record<string, any> -->"
223
+ <script setup lang="ts" generic="T">
224
+ import type { MakeRequired } from "@alanscodelog/utils"
225
+ import { keys } from "@alanscodelog/utils/keys"
226
+ import { throttle } from "@alanscodelog/utils/throttle"
227
+ import { useVirtualizer, type VirtualizerOptions } from "@tanstack/vue-virtual"
228
+ import { computed, type HTMLAttributes, onMounted, ref, type TableHTMLAttributes, useAttrs } from "vue"
229
+
230
+ import { useGlobalResizeObserver } from "../../composables/useGlobalResizeObserver.js"
231
+ import { vResizableCols } from "../../directives/vResizableCols.js"
232
+ import type { ResizableOptions, TableColConfig, TailwindClassProp } from "../../types/index.js"
233
+ import { twMerge } from "../../utils/twMerge.js"
234
+
235
+ defineOptions({
236
+ name: "WTable",
237
+ inheritAttrs: false
238
+ })
239
+
240
+ const $attrs = useAttrs()
241
+ const props = withDefaults(defineProps<
242
+ & {
243
+ resizable?: Partial<ResizableOptions>
244
+ values: T[]
245
+ /** Let's the table know the shape of the data since values might be empty. */
246
+ cols?: (keyof T)[]
247
+ rounded?: boolean
248
+ border?: boolean
249
+ cellBorder?: boolean
250
+ /** Disables the header. This also sets the selector to `tr:first-child > td` instead to avoid issues with the vResizableCols directive. */
251
+ header?: boolean
252
+ colConfig?: TableColConfig<T>
253
+ /**
254
+ * See tanstack/vue-virtual {@link https://tanstack.com/virtual/latest/docs/api/virtualizer}
255
+ *
256
+ * The defaults are:
257
+ *
258
+ * - enabled: false
259
+ * - method: "fixed"
260
+ * - overscan: (50 if fixed, 10 if dynamic)
261
+ * - estimateSize: () => { return 33 }
262
+ *
263
+ * This also has an additional option, `method`, which can be set to `fixed` or `dynamic` (experimental).
264
+ *
265
+ * Notes:
266
+ *
267
+ * - Because of how virtualization works, initial layout (before .resizable-cols-setup class is applied) will only have access to the headers and not the rows. This can cause cols to look very small, especially if using resizable.fitWidth false.
268
+ *
269
+ * ### Fixed
270
+ *
271
+ * `fixed` is the default and will set the height of ALL items to the height of the first item onMounted (tanstack does not do this and if your estimateSize if off, the scrolling is weird).
272
+ *
273
+ * Since the table now truncates rows by default, they will always be the same height unless you change the inner styling. In fixed mode, `forceRecalculateFixedVirtualizer` is exposed if you need to force re-calculation.
274
+ *
275
+ * If using slots, be sure to at least pass the `class` slot prop to the td element. `style` with width is also supplied but is not required if you're displaying the table as a table.
276
+ *
277
+ * ### Dynamic (experimental)
278
+ *
279
+ * In `dynamic` mode we use tanstack's measureElement method. This is more expensive, but it will work with any heights.
280
+ *
281
+ * Dynamic mode also requires the table displays itself using grid and flex post setup as otherwise dynamic mode doesn't work.
282
+ *
283
+ * You don't need to do anything unless using slots. If using slots, pass the given `ref` slot prop to ref (internally this is tanstack's measureElement) and the class and style slot props at the very least:
284
+ * ```vue
285
+ * <template #[`${colName}`]="slotProps">
286
+ * <td
287
+ * :ref="slotProps.ref"
288
+ * :class="slotProps.class"
289
+ * :style="slotProps.style"
290
+ * >
291
+ * {{ slotProps.value }}
292
+ * </td>
293
+ * </template>
294
+ * ```
295
+ */
296
+ virtualizerOptions?: Partial<VirtualizerOptions<any, any>> & { method?: "fixed" | "dynamic" }
297
+ /** Whether to enable sticky header styles. This requires `border:false`. This moves the border to the wrapper and styles a straight border between the scroll bar and the rounded border. */
298
+ stickyHeader?: boolean
299
+ /** Which key to use for the rows (only if not using virtualization). */
300
+ itemKey?: keyof T | ((item: T) => string)
301
+ /** Pass attributes to the wrapper div. To pass to the table you can use regular top level attributes. */
302
+ wrapperAttrs?: Omit<HTMLAttributes, "class"> & TailwindClassProp
303
+ }
304
+ & /** @vue-ignore */ Omit<TableHTMLAttributes, "class" | "readonly" | "disabled">
305
+ & /** @vue-ignore */ TailwindClassProp
306
+ >(), {
307
+ resizable: () => ({}),
308
+ cols: () => [] as (keyof T)[],
309
+ rounded: true,
310
+ border: true,
311
+ cellBorder: true,
312
+ header: true,
313
+ colConfig: () => ({} as any),
314
+ virtualizerOptions: () => ({ }),
315
+ enableStickyHeader: false
316
+ })
317
+
318
+
319
+ const widths = ref([])
320
+
321
+
322
+ const isPostSetup = ref(false)
323
+ const resizableOptions = computed<MakeRequired<Partial<ResizableOptions>, "colCount" | "widths">>(() => ({
324
+ colCount: props.cols.length,
325
+ widths,
326
+ selector: props.header ? undefined : `tr:first-child > td`,
327
+ ...props.resizable,
328
+ onSetup: el => {
329
+ isPostSetup.value = true
330
+ if (props.resizable.onSetup) {
331
+ props.resizable.onSetup(el)
332
+ }
333
+ },
334
+ onTeardown: el => {
335
+ isPostSetup.value = false
336
+ if (props.resizable.onTeardown) {
337
+ props.resizable.onTeardown(el)
338
+ }
339
+ }
340
+ }))
341
+
342
+
343
+ const parentRef = ref<HTMLElement | null>(null)
344
+ const mergedVirtualizerOpts = computed(() => {
345
+ return {
346
+ // we have to put the defaults here as they can't reference local variables
347
+ count: props.values.length,
348
+ getScrollElement: () => parentRef.value,
349
+ estimateSize: () => { return 33 },
350
+ overscan: props.virtualizerOptions?.overscan ?? (props.virtualizerOptions?.method === "dynamic" ? 10 : 50),
351
+ method: "fixed",
352
+ enabled: false,
353
+ ...props.virtualizerOptions
354
+ } satisfies Partial<VirtualizerOptions<any, any>> & { method: "fixed" | "dynamic" }
355
+ })
356
+
357
+ const rowVirtualizer = useVirtualizer(mergedVirtualizerOpts)
358
+
359
+ const virtualList = computed(() => {
360
+ return mergedVirtualizerOpts.value.enabled
361
+ ? rowVirtualizer.value.getVirtualItems()
362
+ : props.values.map((_, i) => ({
363
+ index: i,
364
+ size: undefined,
365
+ start: 0,
366
+ end: 0,
367
+ key: typeof props.itemKey === "function"
368
+ ? props.itemKey(_)
369
+ : props.itemKey
370
+ ? props.values[props.itemKey as keyof typeof props.values]
371
+ : i
372
+ }))
373
+ })
374
+
375
+ const totalSize = computed(() => rowVirtualizer.value.getTotalSize())
376
+
377
+ function measureElement(el: any): void {
378
+ if (!el || !mergedVirtualizerOpts.value.enabled) return
379
+ if (mergedVirtualizerOpts.value?.method === "dynamic") {
380
+ rowVirtualizer.value.measureElement(el)
381
+ }
382
+ }
383
+
384
+ let mounted = false
385
+ function forceRecalculateFixedVirtualizer() {
386
+ if (mergedVirtualizerOpts.value?.method === "dynamic" || !mergedVirtualizerOpts.value.enabled) return
387
+ if (!mounted) {
388
+ throw new Error("forceRecalculateFixedVirtualizer cannot be called before the table is mounted.")
389
+ }
390
+ if (!parentRef.value) return // this could happen if the table is destroyed before the timeout (highly unlikely, probably impossible)
391
+ const height = parentRef.value.querySelector("td")?.getBoundingClientRect().height
392
+ if (!height) return
393
+ for (let i = 0; i < props.values.length; i++) {
394
+ rowVirtualizer.value.resizeItem(i, height)
395
+ }
396
+ }
397
+
398
+ const tableHeight = ref(0)
399
+ function updateTableHeight(): void {
400
+ if (!parentRef.value) return
401
+ const el = parentRef.value.querySelector("tbody")
402
+ if (!el) return
403
+ if (tableHeight.value === el.getBoundingClientRect().height) return
404
+ tableHeight.value = el.getBoundingClientRect().height
405
+ }
406
+ const throttledUpdateTableHeight = throttle(updateTableHeight, 100, { leading: true })
407
+
408
+
409
+ onMounted(() => {
410
+ throttledUpdateTableHeight()
411
+ mounted = true
412
+ setTimeout(() => {
413
+ forceRecalculateFixedVirtualizer()
414
+ }, 0)
415
+ useGlobalResizeObserver(parentRef, onResize)
416
+ })
417
+
418
+
419
+ const hasScrollbar = ref({ vertical: false, horizontal: false })
420
+ function onResize(): void {
421
+ const el = parentRef.value
422
+ if (!el) return
423
+ hasScrollbar.value = {
424
+ vertical: el.scrollHeight > el.clientHeight,
425
+ horizontal: el.scrollWidth > el.clientWidth
426
+ }
427
+ if (hasScrollbar.value.vertical) {
428
+ throttledUpdateTableHeight()
429
+ }
430
+ }
431
+
432
+ /* props.values.length instead of `props.values.length - 1` because we're creating an artificial first row for the header */
433
+ const getExtraClasses = (row: number, col: number, isHeader: boolean): string[] => {
434
+ const res = {
435
+ bl: !isHeader && row === props.values.length - 1 && col === 0,
436
+ br: !isHeader && row === props.values.length - 1 && col === props.cols.length - 1,
437
+ tr: (isHeader || !props.header) && row === 0 && col === props.cols.length - 1,
438
+ tl: (isHeader || !props.header) && row === 0 && col === 0,
439
+ "first-row": (isHeader || !props.header) && row === 0,
440
+ "last-row": row === props.values.length - 1,
441
+ "first-col": col === 0,
442
+ "last-col": col === props.cols.length - 1
443
+ }
444
+ return keys(res).filter(key => res[key])
445
+ }
446
+
447
+ const classes = computed(() => {
448
+ const res: Record<string, string> = {}
449
+ const headerTdClass = `table--header-cell cell truncate`
450
+ const bodyTdClass = `table--cell cell truncate`
451
+ for (let i = -1; i < props.values.length + 1; i++) {
452
+ for (let j = 0; j < props.cols.length; j++) {
453
+ const col = props.cols[j]!
454
+ const colConfig = props.colConfig[col]
455
+ const key = `${i}-${j}`
456
+ res[key] = twMerge(
457
+ getExtraClasses(i, j, i === -1).join(" "),
458
+ i === -1 ? headerTdClass : bodyTdClass,
459
+ i === -1 ? colConfig?.resizable === false && `no-resize` : undefined,
460
+ i !== -1 && mergedVirtualizerOpts.value.enabled && mergedVirtualizerOpts.value.method === "dynamic" && `flex`
461
+ )
462
+ }
463
+ }
464
+ return res
465
+ })
466
+
467
+ defineExpose({
468
+ forceRecalculateFixedVirtualizer
469
+ })
470
+ </script>
471
+
@@ -0,0 +1,82 @@
1
+ /* eslint-disable @typescript-eslint/naming-convention */
2
+ import type { Meta, StoryObj } from "@storybook/vue3"
3
+ import { ref } from "vue"
4
+
5
+ import WTooltip from "./WTooltip.vue"
6
+
7
+ import * as components from "../index.js"
8
+
9
+ const meta: Meta<typeof WTooltip> = {
10
+ component: WTooltip as any,
11
+ title: "Components/Tooltip",
12
+ args: {
13
+ content: "This is a tooltip"
14
+ }
15
+ }
16
+
17
+ export default meta
18
+
19
+ type ExtraTestArgs = {
20
+ _testContent?: string
21
+ _testTrigger?: string
22
+ }
23
+
24
+ type Story = StoryObj<typeof WTooltip> & {
25
+ args?: ExtraTestArgs
26
+ }
27
+
28
+ export const Primary: Story = {
29
+ render: args => {
30
+ const extraArgs = args as ExtraTestArgs
31
+ return {
32
+ components,
33
+ setup() {
34
+ const showTooltip = ref(false)
35
+ return {
36
+ showTooltip,
37
+ extraArgs,
38
+ args
39
+ }
40
+ },
41
+ template: `
42
+ <div class="flex flex-col gap-3 items-center pt-10">
43
+ <WTooltip v-bind="args">
44
+ ${extraArgs._testTrigger ?? ""}
45
+ <template #content>
46
+ ${extraArgs._testContent ?? "This is a tooltip"}
47
+ </template>
48
+ </WTooltip>
49
+ </div>
50
+ `
51
+ }
52
+ }
53
+ }
54
+
55
+
56
+ export const CustomTrigger: Story = {
57
+ ...Primary,
58
+ args: {
59
+
60
+ _testTrigger: "Custom Trigger"
61
+ }
62
+ }
63
+
64
+ export const VeryLongContentConstrainedToTriggerWidth: Story = {
65
+ ...Primary,
66
+ args: {
67
+ constrainWidthTo: "trigger",
68
+ constrainHeightTo: "available",
69
+ _testTrigger: "<button>Tiny Trigger</button>",
70
+ // should scroll
71
+ _testContent: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.".repeat(10)
72
+ }
73
+ }
74
+
75
+ export const VeryLongContentConstrainedToCustomPxHeight: Story = {
76
+ ...Primary,
77
+ args: {
78
+ constrainHeightTo: 50,
79
+ // should scroll
80
+ _testContent: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.".repeat(10)
81
+ }
82
+ }
@@ -0,0 +1,128 @@
1
+ <template>
2
+ <TooltipProvider :disabled="disabled">
3
+ <TooltipRoot
4
+ :delay-duration="rootProps?.delayDuration ?? 200"
5
+ :disable-closing-trigger="rootProps?.disableClosingTrigger ?? false"
6
+ v-bind="rootProps"
7
+ >
8
+ <TooltipTrigger
9
+ v-if="triggerWhileDisabled"
10
+ as-child
11
+ >
12
+ <!-- https://reka-ui.com/docs/components/tooltip#displaying-a-tooltip-from-a-disabled-button -->
13
+ <span>
14
+ <slot>
15
+ <WIcon class="text-neutral-500"><i-lucide-info/></WIcon>
16
+ </slot>
17
+ </span>
18
+ </TooltipTrigger>
19
+ <TooltipTrigger v-else>
20
+ <slot>
21
+ <WIcon class="text-neutral-500">
22
+ <i-lucide-info/>
23
+ </WIcon>
24
+ </slot>
25
+ </TooltipTrigger>
26
+ <TooltipPortal
27
+ :to="to"
28
+ >
29
+ <TooltipContent
30
+ :style="contentStyle"
31
+ :class="twMerge(`
32
+ z-100
33
+ tooltip--content-wrapper
34
+ origin-[var(--reka-tooltip-content-transform-origin)]
35
+ data-[side=top]:animate-slideDownAndFade
36
+ data-[side=right]:animate-slideLeftAndFade
37
+ data-[side=bottom]:animate-slideUpAndFade
38
+ data-[side=left]:animate-slideRightAndFade
39
+ bg-neutral-50
40
+ dark:bg-neutral-800
41
+ rounded-sm
42
+ shadow-sm
43
+ shadow-black/30
44
+ border
45
+ border-black/30
46
+ p-2
47
+ overflow-auto
48
+ `,
49
+ contentProps?.class
50
+ ) "
51
+ v-bind="{
52
+ collisionPadding: 20,
53
+ side: 'top',
54
+ ...contentProps,
55
+ class: undefined,
56
+ style: undefined
57
+ }"
58
+ >
59
+ <div
60
+ class="
61
+ tooltip--content-container
62
+ text-sm
63
+ whitespace-pre-wrap
64
+ flex
65
+ flex-col
66
+ justify-center
67
+ "
68
+ >
69
+ <slot
70
+ name="content"
71
+ v-bind="{ content }"
72
+ >
73
+ {{ content }}
74
+ </slot>
75
+ </div>
76
+ <TooltipArrow
77
+ class="
78
+ tooltip--arrow
79
+ -mt-px
80
+ fill-neutral-50
81
+ dark:fill-neutral-800
82
+ drop-shadow-[0_2px_1px_rgba(0,0,0,0.3)]
83
+ relative
84
+ "
85
+ />
86
+ </TooltipContent>
87
+ </TooltipPortal>
88
+ </TooltipRoot>
89
+ </TooltipProvider>
90
+ </template>
91
+
92
+ <script setup lang="ts">
93
+ import { TooltipArrow, TooltipContent, TooltipPortal, TooltipProvider, TooltipRoot, TooltipTrigger } from "reka-ui"
94
+
95
+ import ILucideInfo from "~icons/lucide/info"
96
+
97
+ import { usePopupConstrainToStyle } from "../../composables/usePopupConstrainToStyle.js"
98
+ import type { PopupConstrainToProps } from "../../types/index.js"
99
+ import { twMerge } from "../../utils/twMerge.js"
100
+ import WIcon from "../WIcon/WIcon.vue"
101
+
102
+ const props = withDefaults(defineProps<
103
+ & PopupConstrainToProps
104
+ & {
105
+ delayDuration?: number
106
+ disabled?: boolean
107
+ triggerWhileDisabled?: boolean
108
+ content?: string
109
+ collisionBoundary?: Element | null
110
+ to?: string
111
+ /** Reka's TooltipRoot props */
112
+ rootProps?: any
113
+ /** Reka's TooltipContent props */
114
+ contentProps?: any
115
+ }>(),
116
+ {
117
+ delayDuration: 200,
118
+ disabled: false,
119
+ triggerWhileDisabled: false,
120
+ constrainWidthTo: "available",
121
+ constrainHeightTo: "available",
122
+ content: "",
123
+ to: "#root"
124
+ })
125
+
126
+ const contentStyle = usePopupConstrainToStyle("tooltip", props, [props?.contentProps?.style])
127
+ </script>
128
+