@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,126 @@
1
+ import LibNotification from "./LibNotification.vue";
2
+ import { NotificationHandler } from "../../helpers/NotificationHandler.js";
3
+ import * as components from "../index.js";
4
+ const handler = new NotificationHandler();
5
+ const meta = {
6
+ component: LibNotification,
7
+ title: "Components/Notification",
8
+ args: {}
9
+ };
10
+ export default meta;
11
+ export const Primary = {
12
+ render: (args) => ({
13
+ components: { ...components, LibNotification },
14
+ setup() {
15
+ return { args };
16
+ },
17
+ backgrounds: { disable: true },
18
+ template: `
19
+ <lib-notification v-bind="args"/>
20
+ `
21
+ }),
22
+ args: {
23
+ // @ts-expect-error calling protected method
24
+ notification: {
25
+ ...handler._createEntry({
26
+ title: `Notification`,
27
+ message: `This is a notification. Pick an option:`
28
+ }),
29
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
30
+ resolve: () => {
31
+ }
32
+ }
33
+ }
34
+ };
35
+ export const WithoutTitle = {
36
+ ...Primary,
37
+ args: {
38
+ ...Primary.args,
39
+ // @ts-expect-error calling protected method
40
+ notification: handler._createEntry({
41
+ ...Primary.args.notification,
42
+ title: void 0
43
+ })
44
+ }
45
+ };
46
+ export const WithCode = {
47
+ ...Primary,
48
+ args: {
49
+ ...Primary.args,
50
+ // @ts-expect-error calling protected method
51
+ notification: handler._createEntry({
52
+ ...Primary.args.notification,
53
+ code: "0001"
54
+ })
55
+ }
56
+ };
57
+ export const RequiresAction = {
58
+ ...Primary,
59
+ args: {
60
+ ...Primary.args,
61
+ // @ts-expect-error calling protected method
62
+ notification: handler._createEntry({
63
+ ...Primary.args.notification,
64
+ requiresAction: true
65
+ })
66
+ }
67
+ };
68
+ export const Uncancellable = {
69
+ ...Primary,
70
+ args: {
71
+ ...Primary.args,
72
+ // @ts-expect-error calling protected method
73
+ notification: handler._createEntry({
74
+ ...Primary.args.notification,
75
+ options: ["Ok"],
76
+ cancellable: false
77
+ })
78
+ }
79
+ };
80
+ export const CustomOptions = {
81
+ ...Primary,
82
+ args: {
83
+ ...Primary.args,
84
+ // @ts-expect-error calling protected method
85
+ notification: handler._createEntry({
86
+ ...Primary.args.notification,
87
+ options: ["Ok", "Default Answer", "Cancel"]
88
+ })
89
+ }
90
+ };
91
+ export const CustomDefaultOption = {
92
+ ...Primary,
93
+ args: {
94
+ ...Primary.args,
95
+ // @ts-expect-error calling protected method
96
+ notification: handler._createEntry({
97
+ ...CustomOptions.args.notification,
98
+ default: "Default Answer"
99
+ })
100
+ }
101
+ };
102
+ export const CustomDangerousOption = {
103
+ ...Primary,
104
+ args: {
105
+ ...Primary.args,
106
+ // @ts-expect-error calling protected method
107
+ notification: handler._createEntry({
108
+ ...CustomOptions.args.notification,
109
+ options: ["Ok", "Dangerous Option", "Cancel"],
110
+ dangerous: ["Dangerous Option"]
111
+ })
112
+ }
113
+ };
114
+ export const CustomDefaultAndDangerousOption = {
115
+ ...Primary,
116
+ args: {
117
+ ...Primary.args,
118
+ // @ts-expect-error calling protected method
119
+ notification: handler._createEntry({
120
+ ...CustomOptions.args.notification,
121
+ options: ["Ok", "Default Answer", "Dangerous Option", "Cancel"],
122
+ default: "Default Answer",
123
+ dangerous: ["Dangerous Option"]
124
+ })
125
+ }
126
+ };
@@ -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,6 @@
1
+ import type { Meta, StoryObj } from "@storybook/vue3";
2
+ import LibNotifications from "./LibNotifications.vue.js";
3
+ declare const meta: Meta<typeof LibNotifications>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof LibNotifications>;
6
+ export declare const Primary: Story;
@@ -0,0 +1,109 @@
1
+ import { reactive, ref } from "vue";
2
+ import LibNotifications from "./LibNotifications.vue";
3
+ import { NotificationHandler } from "../../helpers/NotificationHandler.js";
4
+ import * as components from "../index.js";
5
+ const meta = {
6
+ component: LibNotifications,
7
+ title: "Components/Notifications",
8
+ args: {
9
+ // @ts-expect-error story only arg
10
+ withTitle: true
11
+ }
12
+ };
13
+ export default meta;
14
+ export const Primary = {
15
+ render: (args) => ({
16
+ components,
17
+ setup() {
18
+ const handler = reactive(new NotificationHandler());
19
+ let count = 0;
20
+ const withTitle = ref(args.withTitle);
21
+ const disableTimeout = ref(false);
22
+ const notifyRequiresAction = () => {
23
+ count++;
24
+ void handler.notify({
25
+ title: withTitle.value ? `Notification(${count})` : void 0,
26
+ message: `This is a notification that requires action. Pick an option:`,
27
+ requiresAction: true,
28
+ options: ["Ok", "Default Answer", "Cancel"],
29
+ default: "Default Answer"
30
+ });
31
+ };
32
+ const notifyWithDangerousOption = () => {
33
+ count++;
34
+ void handler.notify({
35
+ title: withTitle.value ? `Notification(${count})` : void 0,
36
+ message: `This is a notification that has a dangerous option. Pick an option:`,
37
+ options: ["Ok", "Default Answer", "Dangerous Option", "Cancel"],
38
+ default: "Default Answer",
39
+ dangerous: ["Dangerous Option"]
40
+ });
41
+ };
42
+ const notifyNonCancellable = () => {
43
+ count++;
44
+ void handler.notify({
45
+ title: withTitle.value ? `Notification(${count})` : void 0,
46
+ message: `This is a non-cancellable notification. Pick an option:`,
47
+ options: ["Ok", "Default Answer"],
48
+ default: "Default Answer",
49
+ cancellable: false
50
+ });
51
+ };
52
+ const notifyNonCancellableRequiresAction = () => {
53
+ count++;
54
+ void handler.notify({
55
+ title: withTitle.value ? `Notification(${count})` : void 0,
56
+ message: `This is a non-cancellable notification. Pick an option:`,
57
+ requiresAction: true,
58
+ options: ["Ok", "Default Answer"],
59
+ default: "Default Answer",
60
+ cancellable: false
61
+ });
62
+ };
63
+ const notifyTimeoutable = () => {
64
+ count++;
65
+ void handler.notify({
66
+ title: withTitle.value ? `Notification(${count})` : void 0,
67
+ message: `This is a notification. No action required.`,
68
+ timeout: disableTimeout.value ? false : 2e3
69
+ });
70
+ };
71
+ return {
72
+ notifyRequiresAction,
73
+ notifyTimeoutable,
74
+ notifyNonCancellable,
75
+ notifyWithDangerousOption,
76
+ notifyNonCancellableRequiresAction,
77
+ handler,
78
+ withTitle,
79
+ disableTimeout,
80
+ args: {
81
+ outline: false,
82
+ ...args
83
+ }
84
+ };
85
+ },
86
+ backgrounds: { disable: true },
87
+ // <lib-debug>{{args.handler}}</lib-debug>
88
+ template: `
89
+ <test-wrapper :outline="args.outline">
90
+ <lib-button :label="'Notify Timeoutable'" @click="notifyTimeoutable()"></lib-button>
91
+ <lib-button :label="'Notify RequiresAction'" @click="notifyRequiresAction()"></lib-button>
92
+ <lib-button :label="'Notify Non-Cancellable that RequiresAction'" @click="notifyNonCancellableRequiresAction()"></lib-button>
93
+ <lib-button :label="'Notify With Dangerous Option'" @click="notifyWithDangerousOption()"></lib-button>
94
+ <lib-button :label="'Notify Non-Cancellable'" @click="notifyNonCancellable()"></lib-button>
95
+ <input type="checkbox" v-model="withTitle"/> With Title
96
+ <input type="checkbox" v-model="disableTimeout"/> Disable Timeout
97
+ <lib-notifications :handler="handler" />
98
+ History:
99
+ <lib-debug>
100
+ <template v-for="entry in handler.history">
101
+ Message: {{entry.message}}
102
+ Resolution: {{entry.resolution}}
103
+ <br>
104
+ </template>
105
+ </lib-debug>
106
+ </test-wrapper>
107
+ `
108
+ })
109
+ };
@@ -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,6 @@
1
+ import type { Meta, StoryObj } from "@storybook/vue3";
2
+ import LibPagination from "./LibPagination.vue.js";
3
+ declare const meta: Meta<typeof LibPagination>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof LibPagination>;
6
+ export declare const Primary: Story;
@@ -0,0 +1,40 @@
1
+ import { ref } from "vue";
2
+ import LibPagination from "./LibPagination.vue";
3
+ import * as components from "../index.js";
4
+ const meta = {
5
+ component: LibPagination,
6
+ title: "Components/Pagination",
7
+ args: {
8
+ total: 10
9
+ }
10
+ };
11
+ export default meta;
12
+ export const Primary = {
13
+ render: (args) => ({
14
+ components,
15
+ setup() {
16
+ const num = ref(1);
17
+ const changePage = ($event, i) => {
18
+ $event.preventDefault();
19
+ if (i >= 10) num.value = 10;
20
+ if (i <= 1) num.value = 1;
21
+ num.value = i;
22
+ };
23
+ return {
24
+ changePage,
25
+ args,
26
+ num
27
+ };
28
+ },
29
+ template: `
30
+ <lib-pagination v-bind="{...args, current: num, route:'#'}">
31
+ <template #link="linkProps">
32
+ <a v-bind="linkProps" @click="changePage($event, linkProps.i)">{{ linkProps.text ?? linkProps.i }}</a>
33
+ </template>
34
+ </lib-pagination>
35
+ <lib-input :label="'Change Page'" :modelValue="num.toString()" @update:modelValue="num = parseInt($event)" type="number" min="0" :max="args.total">
36
+
37
+ </lib-input>
38
+ `
39
+ })
40
+ };