vueless 0.0.4 → 0.0.5

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 (318) hide show
  1. package/package.json +1 -1
  2. package/src/library.web-types-gen/index.js +17 -0
  3. package/src/library.web-types-gen/lib/build.js +252 -0
  4. package/src/library.web-types-gen/lib/config.js +32 -0
  5. package/src/library.web-types-gen/package.json +3 -0
  6. package/src/plugin.vite/index.js +59 -0
  7. package/src/plugin.vite/services/iconResolver.service.js +291 -0
  8. package/src/plugin.vite/services/svgLoader.service.js +76 -0
  9. package/src/plugin.vite/services/tailwindSafelist.service.js +195 -0
  10. package/src/plugin.vite/services/unpluginComponentsResolver.js +172 -0
  11. package/src/service.storybook/index.js +91 -0
  12. package/src/ui.button/Docs.mdx +16 -0
  13. package/src/ui.button/composables/attrs.composable.js +41 -0
  14. package/src/ui.button/configs/default.config.js +165 -0
  15. package/src/ui.button/constants/index.js +5 -0
  16. package/src/ui.button/index.stories.js +166 -0
  17. package/src/ui.button/index.vue +152 -0
  18. package/src/ui.button-link/Docs.mdx +16 -0
  19. package/src/ui.button-link/composables/attrs.composable.js +99 -0
  20. package/src/ui.button-link/configs/default.config.js +80 -0
  21. package/src/ui.button-link/constants/index.js +5 -0
  22. package/src/ui.button-link/index.stories.js +158 -0
  23. package/src/ui.button-link/index.vue +226 -0
  24. package/src/ui.button-toggle/Docs.mdx +16 -0
  25. package/src/ui.button-toggle/composables/attrs.composable.js +16 -0
  26. package/src/ui.button-toggle/configs/default.config.js +12 -0
  27. package/src/ui.button-toggle/constants/index.js +7 -0
  28. package/src/ui.button-toggle/index.stories.js +155 -0
  29. package/src/ui.button-toggle/index.vue +128 -0
  30. package/src/ui.button-toggle-item/Docs.mdx +16 -0
  31. package/src/ui.button-toggle-item/composables/attrs.composable.js +53 -0
  32. package/src/ui.button-toggle-item/configs/default.config.js +58 -0
  33. package/src/ui.button-toggle-item/constants/index.js +5 -0
  34. package/src/ui.button-toggle-item/index.stories.js +77 -0
  35. package/src/ui.button-toggle-item/index.vue +147 -0
  36. package/src/ui.container-accordion/composables/attrs.composable.js +45 -0
  37. package/src/ui.container-accordion/configs/default.config.js +32 -0
  38. package/src/ui.container-accordion/constants/index.js +5 -0
  39. package/src/ui.container-accordion/index.stories.js +89 -0
  40. package/src/ui.container-accordion/index.vue +95 -0
  41. package/src/ui.container-card/Docs.mdx +16 -0
  42. package/src/ui.container-card/composable/attrs.composable.js +56 -0
  43. package/src/ui.container-card/configs/default.config.js +31 -0
  44. package/src/ui.container-card/constants/index.js +5 -0
  45. package/src/ui.container-card/index.stories.js +170 -0
  46. package/src/ui.container-card/index.vue +146 -0
  47. package/src/ui.container-divider/Docs.mdx +16 -0
  48. package/src/ui.container-divider/configs/default.config.js +79 -0
  49. package/src/ui.container-divider/index.stories.js +124 -0
  50. package/src/ui.container-group/Docs.mdx +16 -0
  51. package/src/ui.container-group/composables/attrs.composable.js +44 -0
  52. package/src/ui.container-group/configs/default.config.js +29 -0
  53. package/src/ui.container-group/constants/index.js +5 -0
  54. package/src/ui.container-group/index.stories.js +88 -0
  55. package/src/ui.container-group/index.vue +106 -0
  56. package/src/ui.container-groups/Docs.mdx +16 -0
  57. package/src/ui.container-groups/composables/attrs.composable.js +12 -0
  58. package/src/ui.container-groups/configs/default.config.js +3 -0
  59. package/src/ui.container-groups/index.stories.js +45 -0
  60. package/src/ui.container-groups/index.vue +33 -0
  61. package/src/ui.container-modal/Docs.mdx +16 -0
  62. package/src/ui.container-modal/composables/attrs.composable.js +90 -0
  63. package/src/ui.container-modal/configs/default.config.js +69 -0
  64. package/src/ui.container-modal/constants/index.js +5 -0
  65. package/src/ui.container-modal/index.stories.js +170 -0
  66. package/src/ui.container-modal/index.vue +335 -0
  67. package/src/ui.container-modal-confirm/Docs.mdx +16 -0
  68. package/src/ui.container-modal-confirm/composable/attrs.composable.js +20 -0
  69. package/src/ui.container-modal-confirm/configs/default.config.js +15 -0
  70. package/src/ui.container-modal-confirm/constants/index.js +5 -0
  71. package/src/ui.container-modal-confirm/index.stories.js +209 -0
  72. package/src/ui.container-modal-confirm/index.vue +182 -0
  73. package/src/ui.container-page/Docs.mdx +16 -0
  74. package/src/ui.container-page/composables/attrs.composable.js +96 -0
  75. package/src/ui.container-page/configs/default.config.js +71 -0
  76. package/src/ui.container-page/constants/index.js +5 -0
  77. package/src/ui.container-page/index.stories.js +147 -0
  78. package/src/ui.container-page/index.vue +271 -0
  79. package/src/ui.container-row/Docs.mdx +16 -0
  80. package/src/ui.container-row/composables/attrs.composable.js +23 -0
  81. package/src/ui.container-row/configs/default.config.js +14 -0
  82. package/src/ui.container-row/constants/index.js +5 -0
  83. package/src/ui.container-row/index.stories.js +81 -0
  84. package/src/ui.container-row/index.vue +45 -0
  85. package/src/ui.data-list/composables/attrs.composable.js +45 -0
  86. package/src/ui.data-list/configs/default.config.js +32 -0
  87. package/src/ui.data-list/constants/index.js +5 -0
  88. package/src/ui.data-list/index.stories.js +91 -0
  89. package/src/ui.data-list/index.vue +258 -0
  90. package/src/ui.data-table/Docs.mdx +16 -0
  91. package/src/ui.data-table-cell/configs/default.config.js +19 -0
  92. package/src/ui.dropdown-badge/Docs.mdx +16 -0
  93. package/src/ui.dropdown-badge/composables/attrs.composable.js +63 -0
  94. package/src/ui.dropdown-badge/configs/default.config.js +34 -0
  95. package/src/ui.dropdown-badge/constants/index.js +5 -0
  96. package/src/ui.dropdown-badge/index.stories.js +126 -0
  97. package/src/ui.dropdown-badge/index.vue +233 -0
  98. package/src/ui.dropdown-button/Docs.mdx +16 -0
  99. package/src/ui.dropdown-button/composables/attrs.composable.js +63 -0
  100. package/src/ui.dropdown-button/configs/default.config.js +37 -0
  101. package/src/ui.dropdown-button/constants/index.js +14 -0
  102. package/src/ui.dropdown-button/index.stories.js +158 -0
  103. package/src/ui.dropdown-button/index.vue +271 -0
  104. package/src/ui.dropdown-item/Docs.mdx +16 -0
  105. package/src/ui.dropdown-item/composables/attrs.composable.js +13 -0
  106. package/src/ui.dropdown-item/configs/default.config.js +16 -0
  107. package/src/ui.dropdown-item/index.stories.js +30 -0
  108. package/src/ui.dropdown-item/index.vue +53 -0
  109. package/src/ui.dropdown-link/Docs.mdx +16 -0
  110. package/src/ui.dropdown-link/composables/attrs.composable.js +65 -0
  111. package/src/ui.dropdown-link/configs/default.config.js +37 -0
  112. package/src/ui.dropdown-link/constants/index.js +5 -0
  113. package/src/ui.dropdown-link/index.stories.js +127 -0
  114. package/src/ui.dropdown-link/index.vue +260 -0
  115. package/src/ui.dropdown-list/Docs.mdx +16 -0
  116. package/src/ui.dropdown-list/composables/attrs.composable.js +93 -0
  117. package/src/ui.dropdown-list/composables/usePointer.js +77 -0
  118. package/src/ui.dropdown-list/configs/default.config.js +74 -0
  119. package/src/ui.dropdown-list/constants/index.js +5 -0
  120. package/src/ui.dropdown-list/index.stories.js +76 -0
  121. package/src/ui.dropdown-list/index.vue +282 -0
  122. package/src/ui.form-calendar/Docs.mdx +52 -0
  123. package/src/ui.form-calendar/components/DayView.vue +268 -0
  124. package/src/ui.form-calendar/components/MonthView.vue +114 -0
  125. package/src/ui.form-calendar/components/YearView.vue +118 -0
  126. package/src/ui.form-calendar/constants/index.js +71 -0
  127. package/src/ui.form-calendar/index.stories.js +59 -0
  128. package/src/ui.form-calendar/index.vue +738 -0
  129. package/src/ui.form-calendar/services/calendar.service.js +189 -0
  130. package/src/ui.form-calendar/services/formatting.service.js +180 -0
  131. package/src/ui.form-checkbox/Docs.mdx +16 -0
  132. package/src/ui.form-checkbox/configs/default.config.js +69 -0
  133. package/src/ui.form-checkbox/index.stories.js +147 -0
  134. package/src/ui.form-checkbox-group/Docs.mdx +16 -0
  135. package/src/ui.form-checkbox-group/composables/attrs.composable.js +17 -0
  136. package/src/ui.form-checkbox-group/configs/default.config.js +5 -0
  137. package/src/ui.form-checkbox-group/constants/index.js +5 -0
  138. package/src/ui.form-checkbox-group/index.stories.js +45 -0
  139. package/src/ui.form-checkbox-group/index.vue +143 -0
  140. package/src/ui.form-checkbox-multi-state/Docs.mdx +16 -0
  141. package/src/ui.form-checkbox-multi-state/composables/attrs.composable.js +24 -0
  142. package/src/ui.form-checkbox-multi-state/configs/default.config.js +9 -0
  143. package/src/ui.form-checkbox-multi-state/constants/index.js +5 -0
  144. package/src/ui.form-checkbox-multi-state/index.stories.js +59 -0
  145. package/src/ui.form-checkbox-multi-state/index.vue +133 -0
  146. package/src/ui.form-color-picker/composables/attrs.composable.js +44 -0
  147. package/src/ui.form-color-picker/configs/default.config.js +52 -0
  148. package/src/ui.form-color-picker/constants/index.js +5 -0
  149. package/src/ui.form-color-picker/index.stories.js +63 -0
  150. package/src/ui.form-color-picker/index.vue +168 -0
  151. package/src/ui.form-date-picker/Docs.mdx +52 -0
  152. package/src/ui.form-date-picker/composables/attrs.composable.js +22 -0
  153. package/src/ui.form-date-picker/configs/default.config.js +26 -0
  154. package/src/ui.form-date-picker/constants/index.js +5 -0
  155. package/src/ui.form-date-picker/index.stories.js +132 -0
  156. package/src/ui.form-date-picker/index.vue +253 -0
  157. package/src/ui.form-date-picker-range/constants/index.js +23 -0
  158. package/src/ui.form-date-picker-range/index.stories.js +135 -0
  159. package/src/ui.form-date-picker-range/index.vue +929 -0
  160. package/src/ui.form-date-picker-range/services/dateRange.service.js +116 -0
  161. package/src/ui.form-input/Docs.mdx +16 -0
  162. package/src/ui.form-input/assets/fonts/text-security-disc.woff +0 -0
  163. package/src/ui.form-input/composables/attrs.composable.js +66 -0
  164. package/src/ui.form-input/configs/default.config.js +72 -0
  165. package/src/ui.form-input/constants/index.js +5 -0
  166. package/src/ui.form-input/index.stories.js +166 -0
  167. package/src/ui.form-input/index.vue +385 -0
  168. package/src/ui.form-input-file/composables/attrs.composable.js +82 -0
  169. package/src/ui.form-input-file/configs/default.config.js +59 -0
  170. package/src/ui.form-input-file/constants/index.js +5 -0
  171. package/src/ui.form-input-file/index.stories.js +86 -0
  172. package/src/ui.form-input-file/index.vue +385 -0
  173. package/src/ui.form-input-money/Docs.mdx +16 -0
  174. package/src/ui.form-input-money/composables/attrs.composable.js +13 -0
  175. package/src/ui.form-input-money/composables/useFormatCurrency.js +82 -0
  176. package/src/ui.form-input-money/configs/default.config.js +16 -0
  177. package/src/ui.form-input-money/constants/index.js +5 -0
  178. package/src/ui.form-input-money/index.stories.js +126 -0
  179. package/src/ui.form-input-money/index.vue +264 -0
  180. package/src/ui.form-input-money/services/format.service.js +72 -0
  181. package/src/ui.form-input-number/Docs.mdx +16 -0
  182. package/src/ui.form-input-number/composables/attrs.composable.js +47 -0
  183. package/src/ui.form-input-number/configs/default.config.js +33 -0
  184. package/src/ui.form-input-number/constants/index.js +5 -0
  185. package/src/ui.form-input-number/index.stories.js +103 -0
  186. package/src/ui.form-input-number/index.vue +159 -0
  187. package/src/ui.form-input-rating/composables/attrs.composable.js +34 -0
  188. package/src/ui.form-input-rating/constants/index.js +5 -0
  189. package/src/ui.form-input-search/composables/attrs.composable.js +21 -0
  190. package/src/ui.form-input-search/configs/default.config.js +20 -0
  191. package/src/ui.form-input-search/constants/index.js +5 -0
  192. package/src/ui.form-input-search/index.stories.js +90 -0
  193. package/src/ui.form-input-search/index.vue +212 -0
  194. package/src/ui.form-label/Docs.mdx +16 -0
  195. package/src/ui.form-label/composables/attrs.composable.js +65 -0
  196. package/src/ui.form-label/configs/default.config.js +95 -0
  197. package/src/ui.form-label/constants/index.js +13 -0
  198. package/src/ui.form-label/index.stories.js +107 -0
  199. package/src/ui.form-label/index.vue +170 -0
  200. package/src/ui.form-radio/Docs.mdx +16 -0
  201. package/src/ui.form-radio/composables/attrs.composable.js +34 -0
  202. package/src/ui.form-radio/configs/default.config.js +47 -0
  203. package/src/ui.form-radio/constants/index.js +5 -0
  204. package/src/ui.form-radio/index.stories.js +71 -0
  205. package/src/ui.form-radio/index.vue +169 -0
  206. package/src/ui.form-radio-card/Docs.mdx +16 -0
  207. package/src/ui.form-radio-card/constants/index.js +5 -0
  208. package/src/ui.form-radio-card/index.stories.js +149 -0
  209. package/src/ui.form-radio-card/services/variant.service.js +15 -0
  210. package/src/ui.form-radio-group/Docs.mdx +16 -0
  211. package/src/ui.form-radio-group/composables/attrs.composable.js +27 -0
  212. package/src/ui.form-radio-group/configs/default.config.js +18 -0
  213. package/src/ui.form-radio-group/constants/index.js +5 -0
  214. package/src/ui.form-radio-group/index.stories.js +42 -0
  215. package/src/ui.form-radio-group/index.vue +127 -0
  216. package/src/ui.form-select/Docs.mdx +16 -0
  217. package/src/ui.form-select/composables/attrs.composable.js +172 -0
  218. package/src/ui.form-select/configs/default.config.js +138 -0
  219. package/src/ui.form-select/constants/index.js +19 -0
  220. package/src/ui.form-select/index.stories.js +339 -0
  221. package/src/ui.form-select/index.vue +719 -0
  222. package/src/ui.form-select/services/select.service.js +98 -0
  223. package/src/ui.form-switch/composables/attrs.composable.js +77 -0
  224. package/src/ui.form-switch/configs/default.config.js +76 -0
  225. package/src/ui.form-switch/constants/index.js +5 -0
  226. package/src/ui.form-switch/index.stories.js +93 -0
  227. package/src/ui.form-switch/index.vue +198 -0
  228. package/src/ui.form-switch/services/variant.service.js +31 -0
  229. package/src/ui.form-textarea/Docs.mdx +16 -0
  230. package/src/ui.form-textarea/composables/attrs.composable.js +52 -0
  231. package/src/ui.form-textarea/configs/default.config.js +68 -0
  232. package/src/ui.form-textarea/constants/index.js +5 -0
  233. package/src/ui.form-textarea/index.stories.js +151 -0
  234. package/src/ui.form-textarea/index.vue +284 -0
  235. package/src/ui.image-avatar/composables/attrs.composable.js +34 -0
  236. package/src/ui.image-avatar/configs/default.config.js +42 -0
  237. package/src/ui.image-avatar/constants/index.js +5 -0
  238. package/src/ui.image-avatar/default-avatar.png +0 -0
  239. package/src/ui.image-avatar/index.stories.js +107 -0
  240. package/src/ui.image-avatar/index.vue +121 -0
  241. package/src/ui.image-icon/Docs.mdx +16 -0
  242. package/src/ui.image-icon/index.stories.js +110 -0
  243. package/src/ui.image-logo/configs/default.config.js +38 -0
  244. package/src/ui.image-logo/index.stories.js +84 -0
  245. package/src/ui.loader-top/components/TopProgress.vue +277 -0
  246. package/src/ui.navigation-pagination/composables/attrs.composable.js +41 -0
  247. package/src/ui.navigation-pagination/configs/default.config.js +24 -0
  248. package/src/ui.navigation-pagination/constants/index.js +8 -0
  249. package/src/ui.navigation-pagination/index.stories.js +52 -0
  250. package/src/ui.navigation-pagination/index.vue +275 -0
  251. package/src/ui.navigation-stepper/composables/attrs.composable.js +25 -0
  252. package/src/ui.navigation-stepper/configs/default.config.js +13 -0
  253. package/src/ui.navigation-stepper/constants/index.js +5 -0
  254. package/src/ui.navigation-stepper/index.stories.js +30 -0
  255. package/src/ui.navigation-stepper/index.vue +128 -0
  256. package/src/ui.navigation-tab/composables/attrs.composable.js +30 -0
  257. package/src/ui.navigation-tab/configs/default.config.js +22 -0
  258. package/src/ui.navigation-tab/constants/index.js +5 -0
  259. package/src/ui.navigation-tab/index.stories.js +57 -0
  260. package/src/ui.navigation-tab/index.vue +85 -0
  261. package/src/ui.navigation-tabs/composables/attrs.composable.js +24 -0
  262. package/src/ui.navigation-tabs/configs/default.config.js +14 -0
  263. package/src/ui.navigation-tabs/constants/index.js +5 -0
  264. package/src/ui.navigation-tabs/index.stories.js +69 -0
  265. package/src/ui.navigation-tabs/index.vue +99 -0
  266. package/src/ui.notify/index.stories.js +102 -0
  267. package/src/ui.other-dot/composables/attrs.composable.js +32 -0
  268. package/src/ui.other-dot/configs/default.config.js +21 -0
  269. package/src/ui.other-dot/constants/index.js +5 -0
  270. package/src/ui.other-dot/index.stories.js +77 -0
  271. package/src/ui.other-dot/index.vue +52 -0
  272. package/src/ui.other-loader/composables/attrs.composable.js +51 -0
  273. package/src/ui.other-loader/configs/default.config.js +47 -0
  274. package/src/ui.other-loader/constants/index.js +5 -0
  275. package/src/ui.other-loader/index.stories.js +78 -0
  276. package/src/ui.other-loader/index.vue +136 -0
  277. package/src/ui.text-alert/composables/attrs.composable.js +48 -0
  278. package/src/ui.text-alert/configs/default.config.js +51 -0
  279. package/src/ui.text-alert/constatns/index.js +5 -0
  280. package/src/ui.text-alert/index.stories.js +157 -0
  281. package/src/ui.text-alert/index.vue +121 -0
  282. package/src/ui.text-badge/Docs.mdx +16 -0
  283. package/src/ui.text-badge/composables/attrs.composable.js +49 -0
  284. package/src/ui.text-badge/configs/default.config.js +51 -0
  285. package/src/ui.text-badge/constants/index.js +5 -0
  286. package/src/ui.text-badge/index.stories.js +190 -0
  287. package/src/ui.text-badge/index.vue +120 -0
  288. package/src/ui.text-block/composables/attrs.composable.js +31 -0
  289. package/src/ui.text-block/configs/default.config.js +35 -0
  290. package/src/ui.text-block/constatns/index.js +5 -0
  291. package/src/ui.text-block/index.stories.js +112 -0
  292. package/src/ui.text-block/index.vue +76 -0
  293. package/src/ui.text-empty/Docs.mdx +16 -0
  294. package/src/ui.text-empty/configs/default.config.js +30 -0
  295. package/src/ui.text-empty/index.stories.js +106 -0
  296. package/src/ui.text-file/composables/attrs.composable.js +37 -0
  297. package/src/ui.text-file/configs/default.config.js +15 -0
  298. package/src/ui.text-file/index.stories.js +29 -0
  299. package/src/ui.text-file/index.vue +93 -0
  300. package/src/ui.text-files/composables/attrs.composable.js +19 -0
  301. package/src/ui.text-files/configs/default.config.js +9 -0
  302. package/src/ui.text-files/constants/index.js +5 -0
  303. package/src/ui.text-files/index.stories.js +32 -0
  304. package/src/ui.text-files/index.vue +87 -0
  305. package/src/ui.text-header/Docs.mdx +16 -0
  306. package/src/ui.text-header/composables/attrs.composable.js +34 -0
  307. package/src/ui.text-header/constants/index.js +5 -0
  308. package/src/ui.text-header/index.stories.js +106 -0
  309. package/src/ui.text-header/index.vue +83 -0
  310. package/src/ui.text-money/Docs.mdx +16 -0
  311. package/src/ui.text-money/assets/credit.svg +7 -0
  312. package/src/ui.text-money/assets/debit.svg +12 -0
  313. package/src/ui.text-money/composables/attrs.composable.js +65 -0
  314. package/src/ui.text-money/constants/index.js +7 -0
  315. package/src/ui.text-money/index.stories.js +265 -0
  316. package/src/ui.text-money/index.vue +204 -0
  317. package/src/ui.text-money/services/money.services.js +24 -0
  318. package/src/ui.viewport/index.vue +78 -0
@@ -0,0 +1,189 @@
1
+ import { revFormat, formats } from "./formatting.service";
2
+ import { isSameDay, getDateFromUnixTimestamp } from "./date.service";
3
+
4
+ import { TOKEN_REG_EXP, YEARS_PER_VIEW } from "../constants";
5
+
6
+ export function getInitialActiveDate(localValue) {
7
+ if (Array.isArray(localValue) && localValue.length) {
8
+ return localValue[localValue.length - 1];
9
+ }
10
+
11
+ if (localValue instanceof Date) {
12
+ return localValue;
13
+ }
14
+
15
+ return new Date();
16
+ }
17
+
18
+ export function formatDate(dateObj, format, locale) {
19
+ if (dateObj === null) {
20
+ return "";
21
+ }
22
+
23
+ return format
24
+ .split("")
25
+ .map((char, i, arr) => {
26
+ if (formats[char] && arr[i - 1] !== "\\") {
27
+ return formats[char](dateObj, locale);
28
+ }
29
+
30
+ if (char !== "\\") {
31
+ return char;
32
+ }
33
+
34
+ return "";
35
+ })
36
+ .join("");
37
+ }
38
+
39
+ export function isNumeric(char) {
40
+ return /^\d+$/.test(String(char));
41
+ }
42
+
43
+ export function parseDate(date, format = "Y-m-d H:i:S", locale) {
44
+ if (date === null) {
45
+ return null;
46
+ }
47
+
48
+ const localeTokenRegex = { ...TOKEN_REG_EXP };
49
+
50
+ let timeless = false;
51
+ let parsedDate = null;
52
+ const originalDate = date;
53
+
54
+ const isDateObject = date instanceof Date;
55
+ const isTimestamp = typeof date !== "string" && date.toFixed !== undefined;
56
+ const isString = typeof date === "string";
57
+
58
+ if (isDateObject) {
59
+ parsedDate = new Date(date.getTime());
60
+ }
61
+
62
+ if (isTimestamp) {
63
+ parsedDate = getDateFromUnixTimestamp(date);
64
+ }
65
+
66
+ if (isString) {
67
+ const dateString = String(date).trim();
68
+
69
+ if (dateString === "today") {
70
+ parsedDate = new Date();
71
+ timeless = true;
72
+ } else {
73
+ parsedDate = parseStringDate(date, format, localeTokenRegex, locale);
74
+ }
75
+ }
76
+
77
+ if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {
78
+ throw new Error(`Invalid date provided: ${originalDate}`);
79
+ }
80
+
81
+ if (timeless === true) {
82
+ parsedDate.setHours(0, 0, 0, 0);
83
+ }
84
+
85
+ return parsedDate;
86
+ }
87
+
88
+ export function parseStringDate(dateString, format, localeTokenRegex, locale) {
89
+ const isWithinTimezone = /Z$/.test(dateString) || /GMT$/.test(dateString);
90
+
91
+ if (isWithinTimezone) {
92
+ return new Date(dateString);
93
+ } else {
94
+ let parsedDate = new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0);
95
+
96
+ let matched;
97
+ const ops = [];
98
+
99
+ for (let i = 0, matchIndex = 0, regexStr = ""; i < format.length; i += 1) {
100
+ const token2 = format[i];
101
+ const isBackSlash = token2 === "\\";
102
+ const escaped = format[i - 1] === "\\" || isBackSlash;
103
+
104
+ if (localeTokenRegex[token2] && !escaped) {
105
+ regexStr += localeTokenRegex[token2];
106
+ const match = new RegExp(regexStr).exec(dateString);
107
+
108
+ if (match) {
109
+ matched = true;
110
+ ops[token2 !== "Y" ? "push" : "unshift"]({
111
+ fn: revFormat[token2],
112
+ val: match[(matchIndex += 1)],
113
+ });
114
+ }
115
+ } else if (!isBackSlash) {
116
+ regexStr += ".";
117
+ }
118
+
119
+ ops.forEach((op) => {
120
+ const { fn } = op;
121
+ const { val } = op;
122
+
123
+ parsedDate = fn(parsedDate, String(val), locale) || parsedDate;
124
+ });
125
+ }
126
+
127
+ return matched ? parsedDate : undefined;
128
+ }
129
+ }
130
+
131
+ export function dayIsPartOfTheConditions(day, condition, dateParser, dateFormat) {
132
+ if (!day) {
133
+ return false;
134
+ }
135
+
136
+ if (typeof condition === "function") {
137
+ return condition(day);
138
+ }
139
+
140
+ if (typeof condition === "string" || condition instanceof String) {
141
+ const disabledDate = dateParser(condition, dateFormat);
142
+
143
+ return isSameDay(disabledDate, day);
144
+ }
145
+
146
+ if (condition instanceof Date) {
147
+ return isSameDay(condition, day);
148
+ }
149
+
150
+ if (Array.isArray(condition)) {
151
+ return condition.some((c) => dayIsPartOfTheConditions(day, c, dateParser, dateFormat));
152
+ }
153
+
154
+ return false;
155
+ }
156
+
157
+ export function dateIsOutOfRange(date, min, max, locale, dateFormat = null) {
158
+ if ((!dateFormat && typeof min === "string") || (!dateFormat && typeof max === "string")) {
159
+ throw new Error("strings needs a date format");
160
+ }
161
+
162
+ const minDate = typeof min === "string" ? parseDate(min, dateFormat, locale) : min;
163
+
164
+ const maxDate = typeof max === "string" ? parseDate(max, dateFormat, locale) : max;
165
+
166
+ const time = date.getTime();
167
+
168
+ if (minDate && maxDate) {
169
+ return time < minDate.getTime() || time > maxDate.getTime();
170
+ }
171
+
172
+ if (minDate) {
173
+ return time < minDate.getTime();
174
+ }
175
+
176
+ if (maxDate) {
177
+ return time > maxDate.getTime();
178
+ }
179
+
180
+ return false;
181
+ }
182
+
183
+ export function getYearsRange(date) {
184
+ const currentYear = date.getFullYear();
185
+ const from = currentYear - Math.floor(currentYear % YEARS_PER_VIEW);
186
+ const to = from + YEARS_PER_VIEW - 1;
187
+
188
+ return [from, to];
189
+ }
@@ -0,0 +1,180 @@
1
+ const pad = (number, length = 2) => `000${number}`.slice(length * -1);
2
+ const int = (bool) => (bool === true ? 1 : 0);
3
+
4
+ const doNothing = () => undefined;
5
+
6
+ export const monthToStr = (monthNumber, shorthand, locale) => {
7
+ return locale.months[shorthand ? "shorthand" : "longhand"][monthNumber];
8
+ };
9
+
10
+ export const revFormat = {
11
+ D: doNothing,
12
+ F(dateObj, monthName, locale) {
13
+ dateObj.setMonth(locale.months.longhand.indexOf(monthName));
14
+ },
15
+ G: (dateObj, hour) => {
16
+ dateObj.setHours(parseFloat(hour));
17
+ },
18
+ H: (dateObj, hour) => {
19
+ dateObj.setHours(parseFloat(hour));
20
+ },
21
+ J: (dateObj, day) => {
22
+ dateObj.setDate(parseFloat(day));
23
+ },
24
+ K: (dateObj, amPM, locale) => {
25
+ dateObj.setHours(
26
+ (dateObj.getHours() % 12) + 12 * int(new RegExp(locale.amPM[1], "i").test(amPM)),
27
+ );
28
+ },
29
+ M(dateObj, shortMonth, locale) {
30
+ dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));
31
+ },
32
+ S: (dateObj, seconds) => {
33
+ dateObj.setSeconds(parseFloat(seconds));
34
+ },
35
+ U: (_, unixSeconds) => new Date(parseFloat(unixSeconds) * 1000),
36
+
37
+ W(dateObj, weekNum, locale) {
38
+ const weekNumber = parseInt(weekNum, 10);
39
+ const date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);
40
+
41
+ date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);
42
+
43
+ return date;
44
+ },
45
+ Y: (dateObj, year) => {
46
+ dateObj.setFullYear(parseFloat(year));
47
+ },
48
+ Z: (_, ISODate) => new Date(ISODate),
49
+
50
+ d: (dateObj, day) => {
51
+ dateObj.setDate(parseFloat(day));
52
+ },
53
+ h: (dateObj, hour) => {
54
+ dateObj.setHours(parseFloat(hour));
55
+ },
56
+ i: (dateObj, minutes) => {
57
+ dateObj.setMinutes(parseFloat(minutes));
58
+ },
59
+ j: (dateObj, day) => {
60
+ dateObj.setDate(parseFloat(day));
61
+ },
62
+ l: doNothing,
63
+ m: (dateObj, month) => {
64
+ dateObj.setMonth(parseFloat(month) - 1);
65
+ },
66
+ n: (dateObj, month) => {
67
+ dateObj.setMonth(parseFloat(month) - 1);
68
+ },
69
+ s: (dateObj, seconds) => {
70
+ dateObj.setSeconds(parseFloat(seconds));
71
+ },
72
+ u: (_, unixMillSeconds) => new Date(parseFloat(unixMillSeconds)),
73
+ w: doNothing,
74
+ y: (dateObj, year) => {
75
+ dateObj.setFullYear(2000 + parseFloat(year));
76
+ },
77
+ };
78
+
79
+ export const formats = {
80
+ // get the date in UTC
81
+ Z: (date) => date.toISOString(),
82
+
83
+ // weekday name, short, e.g. Thu
84
+ D(date, locale) {
85
+ return locale.weekdays.shorthand[formats.w(date, locale)];
86
+ },
87
+
88
+ // full month name e.g. January
89
+ F(date, locale) {
90
+ return monthToStr(formats.n(date, locale) - 1, false, locale);
91
+ },
92
+
93
+ // padded hour 1-12
94
+ G(date, locale) {
95
+ return pad(formats.h(date, locale));
96
+ },
97
+
98
+ // hours with leading zero e.g. 03
99
+ H: (date) => pad(date.getHours()),
100
+
101
+ // day (1-30) with ordinal suffix e.g. 1st, 2nd
102
+ J(date, locale) {
103
+ return locale.ordinal !== undefined
104
+ ? date.getDate() + locale.ordinal(date.getDate())
105
+ : undefined;
106
+ },
107
+
108
+ // AM/PM
109
+ K: (date, locale) => locale.amPM[int(date.getHours() > 11)],
110
+
111
+ // shorthand month e.g. Jan, Sep, Oct, etc
112
+ M(date, locale) {
113
+ return monthToStr(date.getMonth(), true, locale);
114
+ },
115
+
116
+ // seconds 00-59
117
+ S: (date) => pad(date.getSeconds()),
118
+
119
+ // unix timestamp
120
+ U: (date) => date.getTime() / 1000,
121
+
122
+ W(givenDate) {
123
+ // return options.getWeek(date);
124
+ const date = new Date(givenDate.getTime());
125
+
126
+ date.setHours(0, 0, 0, 0);
127
+
128
+ // Thursday in current week decides the year.
129
+ date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));
130
+
131
+ // January 4 is always in week 1.
132
+ const week1 = new Date(date.getFullYear(), 0, 4);
133
+
134
+ // Adjust to Thursday in week 1 and count number of weeks from date to week1.
135
+ return (
136
+ 1 +
137
+ Math.round(
138
+ ((date.getTime() - week1.getTime()) / 86400000 - 3 + ((week1.getDay() + 6) % 7)) / 7,
139
+ )
140
+ );
141
+ },
142
+
143
+ // full year e.g. 2016, padded (0001-9999)
144
+ Y: (date) => pad(date.getFullYear(), 4),
145
+
146
+ // day in month, padded (01-30)
147
+ d: (date) => pad(date.getDate()),
148
+
149
+ // hour from 1-12 (am/pm)
150
+ h: (date) => (date.getHours() % 12 ? date.getHours() % 12 : 12),
151
+
152
+ // minutes, padded with leading zero e.g. 09
153
+ i: (date) => pad(date.getMinutes()),
154
+
155
+ // day in month (1-30)
156
+ j: (date) => date.getDate(),
157
+
158
+ // weekday name, full, e.g. Thursday
159
+ l(date, locale) {
160
+ return locale.weekdays.longhand[date.getDay()];
161
+ },
162
+
163
+ // padded month number (01-12)
164
+ m: (date) => pad(date.getMonth() + 1),
165
+
166
+ // the month number (1-12)
167
+ n: (date) => date.getMonth() + 1,
168
+
169
+ // seconds 0-59
170
+ s: (date) => date.getSeconds(),
171
+
172
+ // Unix Milliseconds
173
+ u: (date) => date.getTime(),
174
+
175
+ // number of the day of the week
176
+ w: (date) => date.getDay(),
177
+
178
+ // last two digits of year e.g. 16 for 2016
179
+ y: (date) => String(date.getFullYear()).substring(2),
180
+ };
@@ -0,0 +1,16 @@
1
+ import { Meta, Title, Subtitle, Description, Primary, Controls, Stories, Source } from "@storybook/blocks";
2
+ import { getSource } from "../service.storybook";
3
+
4
+ import * as stories from "./index.stories";
5
+ import defaultConfig from "./configs/default.config?raw"
6
+
7
+ <Meta of={stories} />
8
+ <Title of={stories} />
9
+ <Subtitle of={stories} />
10
+ <Description of={stories} />
11
+ <Primary of={stories} />
12
+ <Controls of={stories.Default} />
13
+ <Stories of={stories} />
14
+
15
+ ## **Default config**
16
+ <Source code={getSource(defaultConfig)} language="jsx" dark />
@@ -0,0 +1,69 @@
1
+ export default /*tw*/ {
2
+ label: "w-auto max-w-max relative gap-0",
3
+ partialIconName: "remove",
4
+ selectedIconName: "check",
5
+ iconWrapper: {
6
+ base: "flex items-center justify-center absolute rounded bg-{color}-500",
7
+ variants: {
8
+ size: {
9
+ sm: "size-5",
10
+ md: "size-6",
11
+ lg: "size-7",
12
+ },
13
+ color: {
14
+ grayscale: "border-gray-900 bg-gray-900",
15
+ },
16
+ },
17
+ },
18
+ icon: "",
19
+ checkbox: {
20
+ base: `
21
+ border border-solid border-{color}-300 rounded bg-white
22
+ hover:border-{color}-400
23
+ focus:border-{color}-500 focus:ring-4 focus:ring-{color}-200 focus:ring-offset-0
24
+ active:border-{color}-500 active:bg-{color}-500
25
+ checked:border-{color}-500 checked:bg-{color}-500 checked:hover:bg-{color}-500
26
+ checked:text-{color}-500 checked:bg-none
27
+ checked:focus:text-{color}-500 checked:active:text-{color}-500
28
+ `,
29
+ variants: {
30
+ size: {
31
+ sm: "size-5 text-sm",
32
+ md: "size-6",
33
+ lg: "size-7 text-lg",
34
+ },
35
+ color: {
36
+ grayscale: `
37
+ border-gray-300
38
+ hover:border-gray-400
39
+ focus:border-gray-500 focus:ring-gray-200
40
+ checked:border-gray-900 checked:bg-gray-900 checked:text-gray-900
41
+ active:border-gray-900 active:bg-gray-900
42
+ `,
43
+ },
44
+ disabled: {
45
+ true: `
46
+ border-gray-100 bg-gray-100 opacity-50
47
+ hover:border-gray-100 hover:bg-gray-100 hover:opacity-50
48
+ active:border-gray-100 active:bg-gray-100 active:opacity-50
49
+ `,
50
+ },
51
+ },
52
+ },
53
+ defaultVariants: {
54
+ color: "brand",
55
+ size: "md",
56
+ labelAlign: "left",
57
+ partial: false,
58
+ disabled: false,
59
+ },
60
+ safelist: (colors) => [
61
+ { pattern: `bg-(${colors})-900` /* , variants: ["checked:hover", "checked", "active"] */ },
62
+ { pattern: `border-(${colors})-300` },
63
+ { pattern: `border-(${colors})-400`, variants: ["hover"] },
64
+ { pattern: `border-(${colors})-500`, variants: ["focus"] },
65
+ { pattern: `border-(${colors})-500`, variants: ["active", "checked"] },
66
+ { pattern: `text-(${colors})-500`, variants: ["checked:focus", "checked", "checked:active"] },
67
+ { pattern: `ring-(${colors})-200`, variants: ["focus"] },
68
+ ],
69
+ };
@@ -0,0 +1,147 @@
1
+ import { getArgTypes, getSlotNames } from "../service.storybook";
2
+
3
+ import UCheckbox from "../ui.form-checkbox";
4
+ import UCheckboxGroup from "../ui.form-checkbox-group";
5
+ import UBadge from "../ui.text-badge";
6
+ import UGroup from "../ui.container-group";
7
+
8
+ export default {
9
+ id: "3100",
10
+ title: "Form Inputs & Controls / Checkbox",
11
+ component: UCheckbox,
12
+ args: {
13
+ label: "Label",
14
+ value: {},
15
+ },
16
+ argTypes: {
17
+ ...getArgTypes(UCheckbox.name),
18
+ },
19
+ };
20
+
21
+ const DefaultTemplate = (args) => ({
22
+ components: { UCheckbox },
23
+ setup() {
24
+ const slots = getSlotNames(UCheckbox.name);
25
+
26
+ return { args, slots };
27
+ },
28
+ template: `
29
+ <UCheckbox v-bind="args" v-model="args.value">
30
+ <template v-for="(slot, index) of slots" :key="index" v-slot:[slot]>
31
+ <template v-if="args[slot]">{{ args[slot] }}</template>
32
+ </template>
33
+ </UCheckbox>
34
+ `,
35
+ });
36
+
37
+ const ValueTypesTemplate = (args) => ({
38
+ components: { UCheckbox, UCheckboxGroup, UGroup },
39
+ setup() {
40
+ return { args };
41
+ },
42
+ data() {
43
+ return {
44
+ defaultValue: false,
45
+ arrayValue: [],
46
+ customValue: { vue: "less" },
47
+ };
48
+ },
49
+ template: `
50
+ <UGroup size="lg">
51
+ <UCheckbox
52
+ v-bind="args"
53
+ v-model="defaultValue"
54
+ label="Default"
55
+ :description="String(defaultValue)"
56
+ />
57
+
58
+ <UCheckbox
59
+ v-bind="args"
60
+ v-model="customValue"
61
+ :true-value="{ vue: 'less' }"
62
+ false-value="0"
63
+ :description="JSON.stringify(customValue)"
64
+ label="Custom"
65
+ />
66
+
67
+ <div>
68
+ <UCheckboxGroup name="checkboxGroup" label="Checkbox group">
69
+ <UCheckbox
70
+ v-bind="args"
71
+ v-model="arrayValue"
72
+ :value="{ key: 'value' }"
73
+ label="Array with object value"
74
+ />
75
+ <UCheckbox
76
+ v-bind="args"
77
+ v-model="arrayValue"
78
+ value="someString"
79
+ label="Array with custom string value"
80
+ />
81
+ </UCheckboxGroup>
82
+
83
+ <span class="font-normal text-gray-500/[85] text-xs pl-0 mt-1">
84
+ {{ arrayValue }}
85
+ </span>
86
+ </div>
87
+ </UGroup>
88
+ `,
89
+ });
90
+
91
+ const SizesTemplate = (args, { argTypes } = {}) => ({
92
+ components: { UCheckbox, UGroup },
93
+ setup() {
94
+ return {
95
+ args,
96
+ sizes: argTypes.size.options,
97
+ };
98
+ },
99
+ template: `
100
+ <UGroup size="lg">
101
+ <UCheckbox
102
+ v-for="(size, index) in sizes"
103
+ :key="index"
104
+ v-bind="args"
105
+ v-model="args.value[size]"
106
+ :size="size"
107
+ :label="size"
108
+ />
109
+ </UGroup>
110
+ `,
111
+ });
112
+
113
+ const SlotTemplate = (args) => ({
114
+ components: { UCheckbox, UBadge },
115
+ setup() {
116
+ return { args };
117
+ },
118
+ template: `
119
+ <UCheckbox v-bind="args" v-model="args.value" description="hello">
120
+ ${args.slotTemplate}
121
+ </UCheckbox>
122
+ `,
123
+ });
124
+
125
+ export const Default = DefaultTemplate.bind({});
126
+ Default.args = {};
127
+
128
+ export const CustomValues = ValueTypesTemplate.bind({});
129
+ CustomValues.args = {};
130
+
131
+ export const Sizes = SizesTemplate.bind({});
132
+ Sizes.args = {};
133
+
134
+ export const Disabled = DefaultTemplate.bind({});
135
+ Disabled.args = { disabled: true };
136
+
137
+ export const Description = DefaultTemplate.bind({});
138
+ Description.args = { description: "Some description" };
139
+
140
+ export const slotFooter = SlotTemplate.bind({});
141
+ slotFooter.args = {
142
+ slotTemplate: `
143
+ <template #footer>
144
+ <UBadge label="favourite" color="green" size="sm" />
145
+ </template>
146
+ `,
147
+ };
@@ -0,0 +1,16 @@
1
+ import { Meta, Title, Subtitle, Description, Primary, Controls, Stories, Source } from "@storybook/blocks";
2
+ import { getSource } from "../service.storybook";
3
+
4
+ import * as stories from "./index.stories";
5
+ import defaultConfig from "./configs/default.config?raw"
6
+
7
+ <Meta of={stories} />
8
+ <Title of={stories} />
9
+ <Subtitle of={stories} />
10
+ <Description of={stories} />
11
+ <Primary of={stories} />
12
+ <Controls of={stories.Default} />
13
+ <Stories of={stories} />
14
+
15
+ ## **Default config**
16
+ <Source code={getSource(defaultConfig)} language="jsx" dark />
@@ -0,0 +1,17 @@
1
+ import useUI from "../../composable.ui";
2
+
3
+ import defaultConfig from "../configs/default.config";
4
+
5
+ export function useAttrs(props) {
6
+ const { getAttrs } = useUI(defaultConfig, () => props.config);
7
+
8
+ const labelAttrs = getAttrs("label", { isComponent: true });
9
+ const listAttrs = getAttrs("list");
10
+ const checkboxAttrs = getAttrs("checkbox", { isComponent: true });
11
+
12
+ return {
13
+ labelAttrs,
14
+ checkboxAttrs,
15
+ listAttrs,
16
+ };
17
+ }
@@ -0,0 +1,5 @@
1
+ export default /*tw*/ {
2
+ label: "",
3
+ list: "ml-4 flex flex-col gap-4 relative",
4
+ checkbox: "",
5
+ };
@@ -0,0 +1,5 @@
1
+ /*
2
+ This const is needed to prevent the issue in script setup:
3
+ `defineProps` is referencing locally declared variables. (vue/valid-define-props)
4
+ */
5
+ export const UCheckboxGroup = "UCheckboxGroup";
@@ -0,0 +1,45 @@
1
+ import { getArgTypes } from "../service.storybook";
2
+
3
+ import UCheckboxGroup from "../ui.form-checkbox-group";
4
+
5
+ export default {
6
+ id: "3110",
7
+ title: "Form Inputs & Controls / Checkbox Group",
8
+ component: UCheckboxGroup,
9
+ args: {
10
+ label: "Label",
11
+ options: [
12
+ { label: "checkbox 1", description: "some description 1", value: "1" },
13
+ { label: "checkbox 2", description: "some description 2", value: "2" },
14
+ { label: "checkbox 3", description: "some description 3", value: "3" },
15
+ ],
16
+ value: ["1"],
17
+ },
18
+ argTypes: {
19
+ ...getArgTypes(UCheckboxGroup.name),
20
+ },
21
+ };
22
+
23
+ const DefaultTemplate = (args) => ({
24
+ components: { UCheckboxGroup },
25
+ setup() {
26
+ return { args };
27
+ },
28
+ data() {
29
+ return {
30
+ test: ["1"],
31
+ };
32
+ },
33
+ template: `
34
+ <UCheckboxGroup v-bind="args" name="default" v-model="test" />
35
+ `,
36
+ });
37
+
38
+ export const Default = DefaultTemplate.bind({});
39
+ Default.args = {};
40
+
41
+ export const disabled = DefaultTemplate.bind({});
42
+ disabled.args = { disabled: true };
43
+
44
+ export const error = DefaultTemplate.bind({});
45
+ error.args = { error: "some error" };