@witchcraft/ui 0.0.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 (315) hide show
  1. package/README.md +236 -0
  2. package/dist/module.cjs +5 -0
  3. package/dist/module.d.mts +34 -0
  4. package/dist/module.d.ts +34 -0
  5. package/dist/module.json +9 -0
  6. package/dist/module.mjs +124 -0
  7. package/dist/runtime/assets/base.css +1 -0
  8. package/dist/runtime/assets/locales/en.json +33 -0
  9. package/dist/runtime/assets/style.css +1 -0
  10. package/dist/runtime/assets/tailwind.css +1 -0
  11. package/dist/runtime/assets/theme.css +1 -0
  12. package/dist/runtime/build/WitchcraftUiResolver.d.ts +5 -0
  13. package/dist/runtime/build/WitchcraftUiResolver.js +17 -0
  14. package/dist/runtime/build/generateTheme.d.ts +1 -0
  15. package/dist/runtime/build/generateTheme.js +14 -0
  16. package/dist/runtime/build/unpluginIconViteOptions.d.ts +2 -0
  17. package/dist/runtime/build/unpluginIconViteOptions.js +10 -0
  18. package/dist/runtime/components/Aria/Aria.vue +18 -0
  19. package/dist/runtime/components/Focus.stories.d.ts +11 -0
  20. package/dist/runtime/components/Focus.stories.js +53 -0
  21. package/dist/runtime/components/Icon/Icon.vue +39 -0
  22. package/dist/runtime/components/LibButton/LibButton.stories.d.ts +12 -0
  23. package/dist/runtime/components/LibButton/LibButton.stories.js +94 -0
  24. package/dist/runtime/components/LibButton/LibButton.vue +247 -0
  25. package/dist/runtime/components/LibCheckbox/LibCheckbox.stories.d.ts +14 -0
  26. package/dist/runtime/components/LibCheckbox/LibCheckbox.stories.js +29 -0
  27. package/dist/runtime/components/LibCheckbox/LibCheckbox.vue +132 -0
  28. package/dist/runtime/components/LibColorInput/LibColorInput.stories.d.ts +7 -0
  29. package/dist/runtime/components/LibColorInput/LibColorInput.stories.js +58 -0
  30. package/dist/runtime/components/LibColorInput/LibColorInput.vue +125 -0
  31. package/dist/runtime/components/LibColorPicker/LibColorPicker.stories.d.ts +7 -0
  32. package/dist/runtime/components/LibColorPicker/LibColorPicker.stories.js +51 -0
  33. package/dist/runtime/components/LibColorPicker/LibColorPicker.vue +448 -0
  34. package/dist/runtime/components/LibDarkModeSwitcher/LibDarkModeSwitcher.stories.d.ts +7 -0
  35. package/dist/runtime/components/LibDarkModeSwitcher/LibDarkModeSwitcher.stories.js +36 -0
  36. package/dist/runtime/components/LibDarkModeSwitcher/LibDarkModeSwitcher.vue +95 -0
  37. package/dist/runtime/components/LibDatePicker/LibDatePicker.stories.d.ts +11 -0
  38. package/dist/runtime/components/LibDatePicker/LibDatePicker.stories.js +98 -0
  39. package/dist/runtime/components/LibDatePicker/LibDatePicker.vue +67 -0
  40. package/dist/runtime/components/LibDatePicker/LibRangeDatePicker.vue +370 -0
  41. package/dist/runtime/components/LibDatePicker/LibSingleDatePicker.vue +314 -0
  42. package/dist/runtime/components/LibDatePicker/LibTimeZonePicker.vue +27 -0
  43. package/dist/runtime/components/LibDatePicker/helpers.d.ts +25 -0
  44. package/dist/runtime/components/LibDatePicker/helpers.js +28 -0
  45. package/dist/runtime/components/LibDebug/LibDebug.stories.d.ts +9 -0
  46. package/dist/runtime/components/LibDebug/LibDebug.stories.js +46 -0
  47. package/dist/runtime/components/LibDebug/LibDebug.vue +91 -0
  48. package/dist/runtime/components/LibDevOnly/LibDevOnly.vue +53 -0
  49. package/dist/runtime/components/LibFileInput/LibFileInput.stories.d.ts +10 -0
  50. package/dist/runtime/components/LibFileInput/LibFileInput.stories.js +63 -0
  51. package/dist/runtime/components/LibFileInput/LibFileInput.vue +273 -0
  52. package/dist/runtime/components/LibInput/LibInput.stories.d.ts +33 -0
  53. package/dist/runtime/components/LibInput/LibInput.stories.js +339 -0
  54. package/dist/runtime/components/LibInput/LibInput.vue +372 -0
  55. package/dist/runtime/components/LibLabel/LibLabel.stories.d.ts +6 -0
  56. package/dist/runtime/components/LibLabel/LibLabel.stories.js +25 -0
  57. package/dist/runtime/components/LibLabel/LibLabel.vue +66 -0
  58. package/dist/runtime/components/LibMultiValues/LibMultiValues.stories.d.ts +23 -0
  59. package/dist/runtime/components/LibMultiValues/LibMultiValues.stories.js +60 -0
  60. package/dist/runtime/components/LibMultiValues/LibMultiValues.vue +127 -0
  61. package/dist/runtime/components/LibNotifications/LibNotification.stories.d.ts +15 -0
  62. package/dist/runtime/components/LibNotifications/LibNotification.stories.js +126 -0
  63. package/dist/runtime/components/LibNotifications/LibNotification.vue +121 -0
  64. package/dist/runtime/components/LibNotifications/LibNotifications.stories.d.ts +6 -0
  65. package/dist/runtime/components/LibNotifications/LibNotifications.stories.js +109 -0
  66. package/dist/runtime/components/LibNotifications/LibNotifications.vue +133 -0
  67. package/dist/runtime/components/LibPagination/LibPagination.stories.d.ts +6 -0
  68. package/dist/runtime/components/LibPagination/LibPagination.stories.js +40 -0
  69. package/dist/runtime/components/LibPagination/LibPagination.vue +261 -0
  70. package/dist/runtime/components/LibPalette/LibPalette.stories.d.ts +6 -0
  71. package/dist/runtime/components/LibPalette/LibPalette.stories.js +20 -0
  72. package/dist/runtime/components/LibPalette/LibPalette.vue +49 -0
  73. package/dist/runtime/components/LibPopup/LibPopup.stories.d.ts +14 -0
  74. package/dist/runtime/components/LibPopup/LibPopup.stories.js +147 -0
  75. package/dist/runtime/components/LibPopup/LibPopup.vue +441 -0
  76. package/dist/runtime/components/LibProgressBar/LibProgressBar.stories.d.ts +10 -0
  77. package/dist/runtime/components/LibProgressBar/LibProgressBar.stories.js +81 -0
  78. package/dist/runtime/components/LibProgressBar/LibProgressBar.vue +192 -0
  79. package/dist/runtime/components/LibRecorder/LibRecorder.stories.d.ts +19 -0
  80. package/dist/runtime/components/LibRecorder/LibRecorder.stories.js +63 -0
  81. package/dist/runtime/components/LibRecorder/LibRecorder.vue +243 -0
  82. package/dist/runtime/components/LibRoot/LibRoot.vue +126 -0
  83. package/dist/runtime/components/LibSimpleInput/LibSimpleInput.stories.d.ts +26 -0
  84. package/dist/runtime/components/LibSimpleInput/LibSimpleInput.stories.js +78 -0
  85. package/dist/runtime/components/LibSimpleInput/LibSimpleInput.vue +148 -0
  86. package/dist/runtime/components/LibSuggestions/LibSuggestions.stories.d.ts +27 -0
  87. package/dist/runtime/components/LibSuggestions/LibSuggestions.stories.js +112 -0
  88. package/dist/runtime/components/LibSuggestions/LibSuggestions.vue +198 -0
  89. package/dist/runtime/components/LibTable/LibTable.stories.d.ts +16 -0
  90. package/dist/runtime/components/LibTable/LibTable.stories.js +156 -0
  91. package/dist/runtime/components/LibTable/LibTable.vue +177 -0
  92. package/dist/runtime/components/Template/NAME.vue +49 -0
  93. package/dist/runtime/components/Template/TemplateStory.d.ts +7 -0
  94. package/dist/runtime/components/Template/TemplateStory.js +22 -0
  95. package/dist/runtime/components/TestControls/TestControls.vue +19 -0
  96. package/dist/runtime/components/index.d.ts +19 -0
  97. package/dist/runtime/components/index.js +19 -0
  98. package/dist/runtime/components/reset.stories.d.ts +5 -0
  99. package/dist/runtime/components/reset.stories.js +19 -0
  100. package/dist/runtime/components/shared/props.d.ts +135 -0
  101. package/dist/runtime/components/shared/props.js +14 -0
  102. package/dist/runtime/components/shared/storyHelpers/playInput.d.ts +8 -0
  103. package/dist/runtime/components/shared/storyHelpers/playInput.js +26 -0
  104. package/dist/runtime/components/shared/storyHelpers/playSuggestions.d.ts +12 -0
  105. package/dist/runtime/components/shared/storyHelpers/playSuggestions.js +83 -0
  106. package/dist/runtime/composables/index.d.ts +11 -0
  107. package/dist/runtime/composables/index.js +11 -0
  108. package/dist/runtime/composables/useAccesibilityOutline.d.ts +41 -0
  109. package/dist/runtime/composables/useAccesibilityOutline.js +58 -0
  110. package/dist/runtime/composables/useAriaLabel.d.ts +6 -0
  111. package/dist/runtime/composables/useAriaLabel.js +15 -0
  112. package/dist/runtime/composables/useDarkMode.d.ts +38 -0
  113. package/dist/runtime/composables/useDarkMode.js +79 -0
  114. package/dist/runtime/composables/useDivideAttrs.d.ts +27 -0
  115. package/dist/runtime/composables/useDivideAttrs.js +26 -0
  116. package/dist/runtime/composables/useGlobalResizeObserver.d.ts +3 -0
  117. package/dist/runtime/composables/useGlobalResizeObserver.js +28 -0
  118. package/dist/runtime/composables/useInjectedDarkMode.d.ts +2 -0
  119. package/dist/runtime/composables/useInjectedDarkMode.js +13 -0
  120. package/dist/runtime/composables/useInjectedI18n.d.ts +2 -0
  121. package/dist/runtime/composables/useInjectedI18n.js +7 -0
  122. package/dist/runtime/composables/useInjectedLocale.d.ts +2 -0
  123. package/dist/runtime/composables/useInjectedLocale.js +21 -0
  124. package/dist/runtime/composables/useNotificationHandler.d.ts +4 -0
  125. package/dist/runtime/composables/useNotificationHandler.js +21 -0
  126. package/dist/runtime/composables/useScrollNearContainerEdges.d.ts +68 -0
  127. package/dist/runtime/composables/useScrollNearContainerEdges.js +116 -0
  128. package/dist/runtime/composables/useScrollNearContainerEdges.stories.d.ts +7 -0
  129. package/dist/runtime/composables/useScrollNearContainerEdges.stories.js +85 -0
  130. package/dist/runtime/composables/useSetupDarkMode.d.ts +12 -0
  131. package/dist/runtime/composables/useSetupDarkMode.js +4 -0
  132. package/dist/runtime/composables/useSetupI18n.d.ts +20 -0
  133. package/dist/runtime/composables/useSetupI18n.js +50 -0
  134. package/dist/runtime/composables/useSetupLocale.d.ts +9 -0
  135. package/dist/runtime/composables/useSetupLocale.js +21 -0
  136. package/dist/runtime/composables/useShowDevOnlyKey.d.ts +7 -0
  137. package/dist/runtime/composables/useShowDevOnlyKey.js +20 -0
  138. package/dist/runtime/composables/useSuggestions.d.ts +38 -0
  139. package/dist/runtime/composables/useSuggestions.js +226 -0
  140. package/dist/runtime/directives/index.d.ts +4 -0
  141. package/dist/runtime/directives/index.js +4 -0
  142. package/dist/runtime/directives/vDetectFlex.d.ts +2 -0
  143. package/dist/runtime/directives/vDetectFlex.js +109 -0
  144. package/dist/runtime/directives/vExtractRootEl.d.ts +22 -0
  145. package/dist/runtime/directives/vExtractRootEl.js +13 -0
  146. package/dist/runtime/directives/vResizableCols.d.ts +60 -0
  147. package/dist/runtime/directives/vResizableCols.js +252 -0
  148. package/dist/runtime/directives/vResizeObserver.d.ts +2 -0
  149. package/dist/runtime/directives/vResizeObserver.js +34 -0
  150. package/dist/runtime/globalResizeObserver.d.ts +5 -0
  151. package/dist/runtime/globalResizeObserver.js +5 -0
  152. package/dist/runtime/helpers/NotificationHandler.d.ts +48 -0
  153. package/dist/runtime/helpers/NotificationHandler.js +162 -0
  154. package/dist/runtime/helpers/addValue.d.ts +1 -0
  155. package/dist/runtime/helpers/addValue.js +8 -0
  156. package/dist/runtime/helpers/base64ToImg.d.ts +1 -0
  157. package/dist/runtime/helpers/base64ToImg.js +11 -0
  158. package/dist/runtime/helpers/copy.d.ts +1 -0
  159. package/dist/runtime/helpers/copy.js +10 -0
  160. package/dist/runtime/helpers/createNoonUtcDate.d.ts +7 -0
  161. package/dist/runtime/helpers/createNoonUtcDate.js +14 -0
  162. package/dist/runtime/helpers/defaultTranslationFunction.d.ts +16 -0
  163. package/dist/runtime/helpers/defaultTranslationFunction.js +14 -0
  164. package/dist/runtime/helpers/getTimeZoneList.d.ts +1 -0
  165. package/dist/runtime/helpers/getTimeZoneList.js +3 -0
  166. package/dist/runtime/helpers/hasModifiers.d.ts +1 -0
  167. package/dist/runtime/helpers/hasModifiers.js +1 -0
  168. package/dist/runtime/helpers/index.d.ts +8 -0
  169. package/dist/runtime/helpers/index.js +8 -0
  170. package/dist/runtime/helpers/readFile.d.ts +1 -0
  171. package/dist/runtime/helpers/readFile.js +13 -0
  172. package/dist/runtime/helpers/resizeObserverWrapper.d.ts +8 -0
  173. package/dist/runtime/helpers/resizeObserverWrapper.js +37 -0
  174. package/dist/runtime/helpers/storybook.d.ts +7 -0
  175. package/dist/runtime/helpers/storybook.js +42 -0
  176. package/dist/runtime/main.lib.d.ts +26 -0
  177. package/dist/runtime/main.lib.js +8 -0
  178. package/dist/runtime/nuxt/plugins/vue-plugin.d.ts +2 -0
  179. package/dist/runtime/nuxt/plugins/vue-plugin.js +12 -0
  180. package/dist/runtime/tailwind/index.d.ts +1 -0
  181. package/dist/runtime/tailwind/index.js +1 -0
  182. package/dist/runtime/tailwind/themeConvertionOpts.d.ts +2 -0
  183. package/dist/runtime/tailwind/themeConvertionOpts.js +12 -0
  184. package/dist/runtime/theme.d.ts +2 -0
  185. package/dist/runtime/theme.js +2 -0
  186. package/dist/runtime/types/index.d.ts +119 -0
  187. package/dist/runtime/types/index.js +0 -0
  188. package/dist/runtime/utils/twMerge.d.ts +10 -0
  189. package/dist/runtime/utils/twMerge.js +10 -0
  190. package/dist/runtime/vue/VueComponentsPlugin.d.ts +2 -0
  191. package/dist/runtime/vue/VueComponentsPlugin.js +10 -0
  192. package/dist/runtime/vue/registerComponents.d.ts +19 -0
  193. package/dist/runtime/vue/registerComponents.js +10 -0
  194. package/dist/runtime/vue/registerDirectives.d.ts +3 -0
  195. package/dist/runtime/vue/registerDirectives.js +9 -0
  196. package/dist/types.d.mts +7 -0
  197. package/dist/types.d.ts +7 -0
  198. package/package.json +207 -0
  199. package/src/module.ts +176 -0
  200. package/src/runtime/assets/base.css +67 -0
  201. package/src/runtime/assets/locales/en.json +33 -0
  202. package/src/runtime/assets/style.css +144 -0
  203. package/src/runtime/assets/tailwind.css +5 -0
  204. package/src/runtime/assets/theme.css +65 -0
  205. package/src/runtime/build/WitchcraftUiResolver.ts +27 -0
  206. package/src/runtime/build/generateTheme.ts +16 -0
  207. package/src/runtime/build/unpluginIconViteOptions.ts +11 -0
  208. package/src/runtime/components/Aria/Aria.vue +27 -0
  209. package/src/runtime/components/Focus.stories.ts +67 -0
  210. package/src/runtime/components/Icon/Icon.vue +39 -0
  211. package/src/runtime/components/LibButton/LibButton.stories.ts +107 -0
  212. package/src/runtime/components/LibButton/LibButton.vue +247 -0
  213. package/src/runtime/components/LibCheckbox/LibCheckbox.stories.ts +41 -0
  214. package/src/runtime/components/LibCheckbox/LibCheckbox.vue +132 -0
  215. package/src/runtime/components/LibColorInput/LibColorInput.stories.ts +69 -0
  216. package/src/runtime/components/LibColorInput/LibColorInput.vue +125 -0
  217. package/src/runtime/components/LibColorPicker/LibColorPicker.stories.ts +60 -0
  218. package/src/runtime/components/LibColorPicker/LibColorPicker.vue +448 -0
  219. package/src/runtime/components/LibDarkModeSwitcher/LibDarkModeSwitcher.stories.ts +51 -0
  220. package/src/runtime/components/LibDarkModeSwitcher/LibDarkModeSwitcher.vue +95 -0
  221. package/src/runtime/components/LibDatePicker/LibDatePicker.stories.ts +114 -0
  222. package/src/runtime/components/LibDatePicker/LibDatePicker.vue +67 -0
  223. package/src/runtime/components/LibDatePicker/LibRangeDatePicker.vue +370 -0
  224. package/src/runtime/components/LibDatePicker/LibSingleDatePicker.vue +314 -0
  225. package/src/runtime/components/LibDatePicker/LibTimeZonePicker.vue +27 -0
  226. package/src/runtime/components/LibDatePicker/helpers.ts +55 -0
  227. package/src/runtime/components/LibDebug/LibDebug.stories.ts +58 -0
  228. package/src/runtime/components/LibDebug/LibDebug.vue +91 -0
  229. package/src/runtime/components/LibDevOnly/LibDevOnly.vue +53 -0
  230. package/src/runtime/components/LibFileInput/LibFileInput.stories.ts +79 -0
  231. package/src/runtime/components/LibFileInput/LibFileInput.vue +273 -0
  232. package/src/runtime/components/LibInput/LibInput.stories.ts +367 -0
  233. package/src/runtime/components/LibInput/LibInput.vue +372 -0
  234. package/src/runtime/components/LibLabel/LibLabel.stories.ts +37 -0
  235. package/src/runtime/components/LibLabel/LibLabel.vue +66 -0
  236. package/src/runtime/components/LibMultiValues/LibMultiValues.stories.ts +83 -0
  237. package/src/runtime/components/LibMultiValues/LibMultiValues.vue +127 -0
  238. package/src/runtime/components/LibNotifications/LibNotification.stories.ts +142 -0
  239. package/src/runtime/components/LibNotifications/LibNotification.vue +121 -0
  240. package/src/runtime/components/LibNotifications/LibNotifications.stories.ts +124 -0
  241. package/src/runtime/components/LibNotifications/LibNotifications.vue +133 -0
  242. package/src/runtime/components/LibPagination/LibPagination.stories.ts +53 -0
  243. package/src/runtime/components/LibPagination/LibPagination.vue +261 -0
  244. package/src/runtime/components/LibPalette/LibPalette.stories.ts +32 -0
  245. package/src/runtime/components/LibPalette/LibPalette.vue +49 -0
  246. package/src/runtime/components/LibPopup/LibPopup.stories.ts +157 -0
  247. package/src/runtime/components/LibPopup/LibPopup.vue +441 -0
  248. package/src/runtime/components/LibProgressBar/LibProgressBar.stories.ts +94 -0
  249. package/src/runtime/components/LibProgressBar/LibProgressBar.vue +192 -0
  250. package/src/runtime/components/LibRecorder/LibRecorder.stories.ts +81 -0
  251. package/src/runtime/components/LibRecorder/LibRecorder.vue +243 -0
  252. package/src/runtime/components/LibRoot/LibRoot.vue +126 -0
  253. package/src/runtime/components/LibSimpleInput/LibSimpleInput.stories.ts +98 -0
  254. package/src/runtime/components/LibSimpleInput/LibSimpleInput.vue +148 -0
  255. package/src/runtime/components/LibSuggestions/LibSuggestions.stories.ts +137 -0
  256. package/src/runtime/components/LibSuggestions/LibSuggestions.vue +198 -0
  257. package/src/runtime/components/LibTable/LibTable.stories.ts +170 -0
  258. package/src/runtime/components/LibTable/LibTable.vue +177 -0
  259. package/src/runtime/components/Template/NAME.vue +49 -0
  260. package/src/runtime/components/Template/TemplateStory.ts +38 -0
  261. package/src/runtime/components/TestControls/TestControls.vue +19 -0
  262. package/src/runtime/components/index.ts +22 -0
  263. package/src/runtime/components/reset.stories.ts +32 -0
  264. package/src/runtime/components/shared/props.ts +142 -0
  265. package/src/runtime/components/shared/storyHelpers/playInput.ts +35 -0
  266. package/src/runtime/components/shared/storyHelpers/playSuggestions.ts +105 -0
  267. package/src/runtime/composables/index.ts +13 -0
  268. package/src/runtime/composables/useAccesibilityOutline.ts +104 -0
  269. package/src/runtime/composables/useAriaLabel.ts +23 -0
  270. package/src/runtime/composables/useDarkMode.ts +146 -0
  271. package/src/runtime/composables/useDivideAttrs.ts +52 -0
  272. package/src/runtime/composables/useGlobalResizeObserver.ts +33 -0
  273. package/src/runtime/composables/useInjectedDarkMode.ts +15 -0
  274. package/src/runtime/composables/useInjectedI18n.ts +10 -0
  275. package/src/runtime/composables/useInjectedLocale.ts +24 -0
  276. package/src/runtime/composables/useNotificationHandler.ts +32 -0
  277. package/src/runtime/composables/useScrollNearContainerEdges.stories.ts +93 -0
  278. package/src/runtime/composables/useScrollNearContainerEdges.ts +205 -0
  279. package/src/runtime/composables/useSetupDarkMode.ts +14 -0
  280. package/src/runtime/composables/useSetupI18n.ts +77 -0
  281. package/src/runtime/composables/useSetupLocale.ts +32 -0
  282. package/src/runtime/composables/useShowDevOnlyKey.ts +28 -0
  283. package/src/runtime/composables/useSuggestions.ts +297 -0
  284. package/src/runtime/directives/index.ts +6 -0
  285. package/src/runtime/directives/vDetectFlex.ts +159 -0
  286. package/src/runtime/directives/vExtractRootEl.ts +38 -0
  287. package/src/runtime/directives/vResizableCols.ts +378 -0
  288. package/src/runtime/directives/vResizeObserver.ts +45 -0
  289. package/src/runtime/globalResizeObserver.ts +12 -0
  290. package/src/runtime/helpers/NotificationHandler.ts +227 -0
  291. package/src/runtime/helpers/addValue.ts +10 -0
  292. package/src/runtime/helpers/base64ToImg.ts +14 -0
  293. package/src/runtime/helpers/copy.ts +11 -0
  294. package/src/runtime/helpers/createNoonUtcDate.ts +21 -0
  295. package/src/runtime/helpers/defaultTranslationFunction.ts +33 -0
  296. package/src/runtime/helpers/getTimeZoneList.ts +4 -0
  297. package/src/runtime/helpers/hasModifiers.ts +1 -0
  298. package/src/runtime/helpers/index.ts +10 -0
  299. package/src/runtime/helpers/readFile.ts +22 -0
  300. package/src/runtime/helpers/resizeObserverWrapper.ts +45 -0
  301. package/src/runtime/helpers/storybook.ts +52 -0
  302. package/src/runtime/main.lib.ts +31 -0
  303. package/src/runtime/nuxt/plugins/vue-plugin.ts +19 -0
  304. package/src/runtime/tailwind/index.ts +3 -0
  305. package/src/runtime/tailwind/themeConvertionOpts.ts +15 -0
  306. package/src/runtime/theme.ts +5 -0
  307. package/src/runtime/types/index.ts +116 -0
  308. package/src/runtime/utils/twMerge.ts +13 -0
  309. package/src/runtime/vue/VueComponentsPlugin.ts +16 -0
  310. package/src/runtime/vue/registerComponents.ts +31 -0
  311. package/src/runtime/vue/registerDirectives.ts +12 -0
  312. package/types/components.d.ts +27 -0
  313. package/types/global.d.ts +16 -0
  314. package/types/index.d.ts +5 -0
  315. package/types/vite.d.ts +2 -0
@@ -0,0 +1,142 @@
1
+ /* eslint-disable @typescript-eslint/naming-convention */
2
+ import type { Meta, StoryObj } from "@storybook/vue3"
3
+
4
+ import LibNotification from "./LibNotification.vue"
5
+
6
+ import { NotificationHandler } from "../../helpers/NotificationHandler.js"
7
+ // eslint-disable-next-line @typescript-eslint/no-restricted-imports
8
+ import * as components from "../index.js"
9
+
10
+
11
+ const handler = new NotificationHandler()
12
+
13
+ const meta: Meta<typeof LibNotification> = {
14
+ component: LibNotification,
15
+ title: "Components/Notification",
16
+ args: {
17
+
18
+ },
19
+ }
20
+
21
+ export default meta
22
+ type Story = StoryObj<typeof LibNotification>
23
+
24
+
25
+ export const Primary: Story = {
26
+ render: args => ({
27
+ components: { ...components, LibNotification },
28
+ setup() {
29
+ return { args }
30
+ },
31
+ backgrounds: { disable: true },
32
+ template: `
33
+ <lib-notification v-bind="args"/>
34
+ `,
35
+ }),
36
+ args: {
37
+ // @ts-expect-error calling protected method
38
+ notification: { ...handler._createEntry({
39
+ title: `Notification`,
40
+ message: `This is a notification. Pick an option:`,
41
+ }),
42
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
43
+ resolve: () => { } },
44
+ },
45
+ }
46
+ export const WithoutTitle: Story = {
47
+ ...Primary,
48
+ args: {
49
+ ...Primary.args,
50
+ // @ts-expect-error calling protected method
51
+ notification: handler._createEntry({
52
+ ...Primary.args!.notification,
53
+ title: undefined,
54
+ }),
55
+ },
56
+ }
57
+ export const WithCode: Story = {
58
+ ...Primary,
59
+ args: {
60
+ ...Primary.args,
61
+ // @ts-expect-error calling protected method
62
+ notification: handler._createEntry({
63
+ ...Primary.args!.notification,
64
+ code: "0001",
65
+ }),
66
+ },
67
+ }
68
+ export const RequiresAction: Story = {
69
+ ...Primary,
70
+ args: {
71
+ ...Primary.args,
72
+ // @ts-expect-error calling protected method
73
+ notification: handler._createEntry({
74
+ ...Primary.args!.notification,
75
+ requiresAction: true,
76
+ }),
77
+ },
78
+ }
79
+
80
+ /** Should not have cancel cross in top corner. */
81
+
82
+ export const Uncancellable: Story = {
83
+ ...Primary,
84
+ args: {
85
+ ...Primary.args,
86
+ // @ts-expect-error calling protected method
87
+ notification: handler._createEntry({
88
+ ...Primary.args!.notification,
89
+ options: ["Ok"],
90
+ cancellable: false,
91
+ }),
92
+ },
93
+ }
94
+
95
+ export const CustomOptions: Story = {
96
+ ...Primary,
97
+ args: {
98
+ ...Primary.args,
99
+ // @ts-expect-error calling protected method
100
+ notification: handler._createEntry({
101
+ ...Primary.args!.notification,
102
+ options: ["Ok", "Default Answer", "Cancel"],
103
+ }),
104
+ },
105
+ }
106
+ export const CustomDefaultOption: Story = {
107
+ ...Primary,
108
+ args: {
109
+ ...Primary.args,
110
+ // @ts-expect-error calling protected method
111
+ notification: handler._createEntry({
112
+ ...CustomOptions.args!.notification,
113
+ default: "Default Answer",
114
+ }),
115
+ },
116
+ }
117
+ export const CustomDangerousOption: Story = {
118
+ ...Primary,
119
+ args: {
120
+ ...Primary.args,
121
+ // @ts-expect-error calling protected method
122
+ notification: handler._createEntry({
123
+ ...CustomOptions.args!.notification,
124
+ options: ["Ok", "Dangerous Option", "Cancel"],
125
+ dangerous: ["Dangerous Option"],
126
+ }),
127
+ },
128
+ }
129
+ export const CustomDefaultAndDangerousOption: Story = {
130
+ ...Primary,
131
+ args: {
132
+ ...Primary.args,
133
+ // @ts-expect-error calling protected method
134
+ notification: handler._createEntry({
135
+ ...CustomOptions.args!.notification,
136
+ options: ["Ok", "Default Answer", "Dangerous Option", "Cancel"],
137
+ default: "Default Answer",
138
+ dangerous: ["Dangerous Option"],
139
+ }),
140
+ },
141
+ }
142
+
@@ -0,0 +1,121 @@
1
+ <template>
2
+ <div :class="twMerge(`notification
3
+ max-w-700px
4
+ bg-neutral-50
5
+ dark:bg-neutral-950
6
+ text-fg
7
+ dark:text-bg
8
+ border
9
+ border-neutral-400
10
+ rounded-sm
11
+ focus-outline
12
+ flex-flex-col
13
+ gap-2
14
+ p-2 m-2
15
+ `,
16
+ ($attrs as any).class)"
17
+ v-bind="{ ...$attrs, class: undefined }"
18
+ tabindex="0"
19
+ ref="notificationEl"
20
+ @keydown.enter.self="NotificationHandler.resolveToDefault(notification)"
21
+ >
22
+ <div class="header flex-reverse flex justify-between">
23
+ <div v-if="notification.title"
24
+ tabindex="0"
25
+ class="title
26
+ focus-outline flex
27
+ rounded-sm
28
+ font-bold
29
+ "
30
+ >
31
+ {{ notification.title }}
32
+ </div>
33
+ <div class="flex-1"/>
34
+ <div class="actions flex">
35
+ <LibButton :border="false"
36
+ class="copy text-neutral-700"
37
+ @click="copy(handler ? handler.stringify(notification) : JSON.stringify(notification))"
38
+ >
39
+ <icon><i-fa6-regular-copy/></icon>
40
+ </LibButton>
41
+ <lib-button v-if="notification.cancellable" :border="false" @click="NotificationHandler.dismiss(notification)">
42
+ <icon><i-fa6-solid-xmark/></icon>
43
+ </lib-button>
44
+ </div>
45
+ </div>
46
+ <div class="message whitespace-pre-wrap" tabindex="0">
47
+ {{ notification.message }}
48
+ </div>
49
+ <div class="bottom flex items-end justify-between">
50
+ <div v-if="notification.code" class="code text-xs text-neutral-700 dark:text-neutral-300">
51
+ Code: {{ notification.code }}
52
+ </div>
53
+ <div class="flex-1 py-1"/>
54
+ <div v-if="notification.options"
55
+ class="options
56
+ flex flex-wrap justify-end
57
+ gap-2
58
+ "
59
+ >
60
+ <lib-button :label="option"
61
+ :class="buttonColors[i] == 'secondary' ? 'p-0': undefined"
62
+ :border="buttonColors[i] !== 'secondary'"
63
+ :color="buttonColors[i]"
64
+ v-for="option, i in notification.options"
65
+ :key="option"
66
+ @click="notification.resolve(option)"
67
+ />
68
+ </div>
69
+ </div>
70
+ </div>
71
+ </template>
72
+ <script setup lang="ts">
73
+ import { computed, type HTMLAttributes,ref, useAttrs } from "vue"
74
+
75
+ import { copy } from "../../helpers/copy.js"
76
+ import { type NotificationEntry, NotificationHandler } from "../../helpers/NotificationHandler.js"
77
+ import { twMerge } from "../../utils/twMerge.js"
78
+ import Icon from "../Icon/Icon.vue"
79
+ import LibButton from "../LibButton/LibButton.vue"
80
+ import type { TailwindClassProp } from "../shared/props.js"
81
+
82
+
83
+ defineOptions({
84
+ name: "lib-notification",
85
+ inheritAttrs: false,
86
+ })
87
+ const $attrs = useAttrs()
88
+
89
+ // eslint-disable-next-line no-use-before-define
90
+ const props = withDefaults(defineProps<Props>(), {
91
+ handler: undefined,
92
+ })
93
+
94
+ const getColor = (notification: NotificationEntry, option: string): "ok" | "primary" | "danger" | "secondary" => notification.default === option ? "primary" : notification.dangerous.includes(option) ? "danger" : "secondary"
95
+
96
+ /* Todo make this more flexible? */
97
+ // eslint-disable-next-line @stylistic/space-in-parens
98
+ const buttonColors = computed(() => props.notification.options.map((option: any /* what ??? */) => getColor(props.notification, option)))
99
+
100
+ const notificationEl = ref<null | HTMLElement>(null)
101
+ defineExpose({
102
+ focus: () => {
103
+ notificationEl.value?.focus()
104
+ },
105
+ })
106
+
107
+ </script>
108
+
109
+ <script lang="ts">
110
+ type RealProps = {
111
+ notification: NotificationEntry
112
+ handler?: NotificationHandler
113
+ }
114
+
115
+ interface Props
116
+ extends
117
+ /** @vue-ignore */
118
+ Partial<Omit<HTMLAttributes,"class"> & TailwindClassProp>,
119
+ RealProps
120
+ {}
121
+ </script>
@@ -0,0 +1,124 @@
1
+ /* eslint-disable @typescript-eslint/naming-convention */
2
+ import type { Meta, StoryObj } from "@storybook/vue3"
3
+ import { reactive, ref } from "vue"
4
+
5
+ import LibNotifications from "./LibNotifications.vue"
6
+
7
+ import { NotificationHandler } from "../../helpers/NotificationHandler.js"
8
+ // eslint-disable-next-line @typescript-eslint/no-restricted-imports
9
+ import * as components from "../index.js"
10
+
11
+
12
+ const meta: Meta<typeof LibNotifications> = {
13
+ component: LibNotifications,
14
+ title: "Components/Notifications",
15
+ args: {
16
+ // @ts-expect-error story only arg
17
+ withTitle: true,
18
+ },
19
+ }
20
+
21
+ export default meta
22
+ type Story = StoryObj<typeof LibNotifications>
23
+
24
+
25
+ export const Primary: Story = {
26
+ render: args => ({
27
+ components,
28
+ setup() {
29
+ const handler = reactive(new NotificationHandler())
30
+
31
+ let count = 0
32
+
33
+ const withTitle = ref(args.withTitle)
34
+ const disableTimeout = ref(false)
35
+
36
+ const notifyRequiresAction = () => {
37
+ count++
38
+ void handler.notify({
39
+ title: withTitle.value ? `Notification(${count})` : undefined,
40
+ message: `This is a notification that requires action. Pick an option:`,
41
+ requiresAction: true,
42
+ options: ["Ok", "Default Answer", "Cancel"],
43
+ default: "Default Answer",
44
+ })
45
+ }
46
+ const notifyWithDangerousOption = () => {
47
+ count++
48
+ void handler.notify({
49
+ title: withTitle.value ? `Notification(${count})` : undefined,
50
+ message: `This is a notification that has a dangerous option. Pick an option:`,
51
+ options: ["Ok", "Default Answer", "Dangerous Option", "Cancel"],
52
+ default: "Default Answer",
53
+ dangerous: ["Dangerous Option"],
54
+ })
55
+ }
56
+ const notifyNonCancellable = () => {
57
+ count++
58
+ void handler.notify({
59
+ title: withTitle.value ? `Notification(${count})` : undefined,
60
+ message: `This is a non-cancellable notification. Pick an option:`,
61
+ options: ["Ok", "Default Answer"],
62
+ default: "Default Answer",
63
+ cancellable: false,
64
+ })
65
+ }
66
+ const notifyNonCancellableRequiresAction = () => {
67
+ count++
68
+ void handler.notify({
69
+ title: withTitle.value ? `Notification(${count})` : undefined,
70
+ message: `This is a non-cancellable notification. Pick an option:`,
71
+ requiresAction: true,
72
+ options: ["Ok", "Default Answer"],
73
+ default: "Default Answer",
74
+ cancellable: false,
75
+ })
76
+ }
77
+ const notifyTimeoutable = () => {
78
+ count++
79
+ void handler.notify({
80
+ title: withTitle.value ? `Notification(${count})` : undefined,
81
+ message: `This is a notification. No action required.`,
82
+ timeout: disableTimeout.value ? false : 2000,
83
+ })
84
+ }
85
+ return {
86
+ notifyRequiresAction,
87
+ notifyTimeoutable,
88
+ notifyNonCancellable,
89
+ notifyWithDangerousOption,
90
+ notifyNonCancellableRequiresAction,
91
+ handler,
92
+ withTitle,
93
+ disableTimeout,
94
+ args: {
95
+ outline: false,
96
+ ...args,
97
+ },
98
+ }
99
+ },
100
+ backgrounds: { disable: true },
101
+ // <lib-debug>{{args.handler}}</lib-debug>
102
+ template: `
103
+ <test-wrapper :outline="args.outline">
104
+ <lib-button :label="'Notify Timeoutable'" @click="notifyTimeoutable()"></lib-button>
105
+ <lib-button :label="'Notify RequiresAction'" @click="notifyRequiresAction()"></lib-button>
106
+ <lib-button :label="'Notify Non-Cancellable that RequiresAction'" @click="notifyNonCancellableRequiresAction()"></lib-button>
107
+ <lib-button :label="'Notify With Dangerous Option'" @click="notifyWithDangerousOption()"></lib-button>
108
+ <lib-button :label="'Notify Non-Cancellable'" @click="notifyNonCancellable()"></lib-button>
109
+ <input type="checkbox" v-model="withTitle"/> With Title
110
+ <input type="checkbox" v-model="disableTimeout"/> Disable Timeout
111
+ <lib-notifications :handler="handler" />
112
+ History:
113
+ <lib-debug>
114
+ <template v-for="entry in handler.history">
115
+ Message: {{entry.message}}
116
+ Resolution: {{entry.resolution}}
117
+ <br>
118
+ </template>
119
+ </lib-debug>
120
+ </test-wrapper>
121
+ `,
122
+ }),
123
+ }
124
+
@@ -0,0 +1,133 @@
1
+ <template>
2
+ <TransitionGroup name="list"
3
+ tag="div"
4
+ :class="twMerge(`notifications
5
+ fixed
6
+ z-50
7
+ inset-y-0 right-0
8
+ w-1/3
9
+ min-w-[300px]
10
+ pointer-events-none
11
+ overflow-hidden
12
+ `, ($attrs as any).class)"
13
+ v-bind="{ ...$attrs, class: undefined }"
14
+ >
15
+ <lib-notification class="pointer-events-auto"
16
+ :handler="handler"
17
+ tabindex="0"
18
+ :notification="notification"
19
+ v-for="notification of notifications"
20
+ :key="notification.id"
21
+ />
22
+ </TransitionGroup>
23
+ <Transition>
24
+ <div v-show="topNotifications.length > 0"/>
25
+ </Transition>
26
+ <Transition>
27
+ <dialog v-show="topNotifications.length > 0"
28
+ :id="id"
29
+ class="modal
30
+ bg-transparent
31
+ p-0
32
+ backdrop:bg-black/50
33
+ backdrop:p-5
34
+ "
35
+ ref="dialogEl"
36
+ @click.self.prevent="NotificationHandler.dismiss(topNotifications[0])"
37
+ >
38
+ <form>
39
+ <lib-notification v-if="topNotifications.length > 0"
40
+ :handler="handler"
41
+ class="top-notification"
42
+ :notification="topNotifications[0]"
43
+ ref="topNotificationComp"
44
+ />
45
+ </form>
46
+ </dialog>
47
+ </Transition>
48
+ </template>
49
+ <script setup lang="ts">
50
+ import { removeIfIn } from "@alanscodelog/utils/removeIfIn.js"
51
+ import { type HTMLAttributes,nextTick, onBeforeUnmount, type PropType, ref, shallowReactive } from "vue"
52
+
53
+ import LibNotification from "./LibNotification.vue"
54
+
55
+ import { type NotificationEntry, NotificationHandler } from "../../helpers/NotificationHandler.js"
56
+ import { twMerge } from "../../utils/twMerge.js"
57
+ import type { LinkableByIdProps, TailwindClassProp } from "../shared/props.js"
58
+
59
+ defineOptions({
60
+ name: "lib-notifications",
61
+ inheritAttrs: false,
62
+ })
63
+
64
+
65
+ // eslint-disable-next-line no-use-before-define
66
+ const props = defineProps<Props>()
67
+
68
+ const dialogEl = ref<HTMLDialogElement | null>(null)
69
+
70
+ const isOpen = ref(false)
71
+ const notifications = shallowReactive<NotificationEntry[]>([])
72
+ const topNotifications = shallowReactive<NotificationEntry[]>([])
73
+ const open = () => {
74
+ if (!isOpen.value) {
75
+ void nextTick(() => {
76
+ dialogEl.value!.showModal()
77
+ isOpen.value = true
78
+ })
79
+ }
80
+ }
81
+ const close = () => {
82
+ if (isOpen.value && topNotifications.length === 0) {
83
+ dialogEl.value!.close()
84
+ isOpen.value = false
85
+ }
86
+ }
87
+
88
+ const addNotification = (entry: NotificationEntry) => {
89
+ if (entry.resolution === undefined) {
90
+ if (entry.requiresAction) {
91
+ topNotifications.push(entry)
92
+ open()
93
+ entry.promise.then(() => {
94
+ removeIfIn(topNotifications, entry)
95
+ close()
96
+ })
97
+ } else {
98
+ notifications.splice(0, 0, entry)
99
+ entry.promise.then(() => {
100
+ removeIfIn(notifications, entry)
101
+ })
102
+ }
103
+ }
104
+ }
105
+
106
+ const notificationListener = (entry: NotificationEntry, type: "added" | "resolved" | "deleted"): void => {
107
+ if (type === "added") {
108
+ addNotification(entry)
109
+ }
110
+ }
111
+ props.handler.addNotificationListener(notificationListener)
112
+
113
+ for (const entry of props.handler.queue) { addNotification(entry) }
114
+ onBeforeUnmount(() => {
115
+ props.handler.removeNotificationListener(notificationListener)
116
+ })
117
+
118
+ </script>
119
+ <script lang="ts">
120
+
121
+ type RealProps =
122
+ & LinkableByIdProps
123
+ & {
124
+ handler: NotificationHandler
125
+ }
126
+
127
+ interface Props
128
+ extends
129
+ /** @vue-ignore */
130
+ Partial<Omit<HTMLAttributes,"class"> & TailwindClassProp>,
131
+ RealProps
132
+ {}
133
+ </script>
@@ -0,0 +1,53 @@
1
+ /* eslint-disable @typescript-eslint/naming-convention */
2
+ import type { Meta, StoryObj } from "@storybook/vue3"
3
+ import { ref } from "vue"
4
+
5
+ import LibPagination from "./LibPagination.vue"
6
+
7
+ // eslint-disable-next-line @typescript-eslint/no-restricted-imports
8
+ import * as components from "../index.js"
9
+
10
+
11
+ const meta: Meta<typeof LibPagination> = {
12
+ component: LibPagination,
13
+ title: "Components/Pagination",
14
+ args: {
15
+ total: 10,
16
+ },
17
+ }
18
+
19
+ export default meta
20
+ type Story = StoryObj<typeof LibPagination>
21
+
22
+
23
+ export const Primary: Story = {
24
+ render: args => ({
25
+ components,
26
+ setup() {
27
+ const num = ref(1)
28
+ const changePage = ($event: any, i: any) => {
29
+ $event.preventDefault()
30
+ if (i >= 10) num.value = 10
31
+ if (i <= 1) num.value = 1
32
+ num.value = i
33
+ }
34
+
35
+ return {
36
+ changePage,
37
+ args,
38
+ num,
39
+ }
40
+ },
41
+ template: `
42
+ <lib-pagination v-bind="{...args, current: num, route:'#'}">
43
+ <template #link="linkProps">
44
+ <a v-bind="linkProps" @click="changePage($event, linkProps.i)">{{ linkProps.text ?? linkProps.i }}</a>
45
+ </template>
46
+ </lib-pagination>
47
+ <lib-input :label="'Change Page'" :modelValue="num.toString()" @update:modelValue="num = parseInt($event)" type="number" min="0" :max="args.total">
48
+
49
+ </lib-input>
50
+ `,
51
+ }),
52
+ }
53
+