vueless 0.0.4 → 0.0.6

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 (321) hide show
  1. package/.eslintrc.js +7 -0
  2. package/package.json +3 -2
  3. package/postcss.config.js +1 -1
  4. package/src/service.storybook/index.js +91 -0
  5. package/src/service.tailwind/index.js +1 -1
  6. package/src/service.ui/index.js +1 -1
  7. package/src/ui.button/Docs.mdx +16 -0
  8. package/src/ui.button/composables/attrs.composable.js +41 -0
  9. package/src/ui.button/configs/default.config.js +165 -0
  10. package/src/ui.button/constants/index.js +5 -0
  11. package/src/ui.button/index.stories.js +166 -0
  12. package/src/ui.button/index.vue +151 -0
  13. package/src/ui.button-link/Docs.mdx +16 -0
  14. package/src/ui.button-link/composables/attrs.composable.js +99 -0
  15. package/src/ui.button-link/configs/default.config.js +80 -0
  16. package/src/ui.button-link/constants/index.js +5 -0
  17. package/src/ui.button-link/index.stories.js +158 -0
  18. package/src/ui.button-link/index.vue +226 -0
  19. package/src/ui.button-toggle/Docs.mdx +16 -0
  20. package/src/ui.button-toggle/composables/attrs.composable.js +16 -0
  21. package/src/ui.button-toggle/configs/default.config.js +12 -0
  22. package/src/ui.button-toggle/constants/index.js +7 -0
  23. package/src/ui.button-toggle/index.stories.js +155 -0
  24. package/src/ui.button-toggle/index.vue +128 -0
  25. package/src/ui.button-toggle-item/Docs.mdx +16 -0
  26. package/src/ui.button-toggle-item/composables/attrs.composable.js +53 -0
  27. package/src/ui.button-toggle-item/configs/default.config.js +58 -0
  28. package/src/ui.button-toggle-item/constants/index.js +5 -0
  29. package/src/ui.button-toggle-item/index.stories.js +77 -0
  30. package/src/ui.button-toggle-item/index.vue +147 -0
  31. package/src/ui.container-accordion/composables/attrs.composable.js +45 -0
  32. package/src/ui.container-accordion/configs/default.config.js +32 -0
  33. package/src/ui.container-accordion/constants/index.js +5 -0
  34. package/src/ui.container-accordion/index.stories.js +89 -0
  35. package/src/ui.container-accordion/index.vue +95 -0
  36. package/src/ui.container-card/Docs.mdx +16 -0
  37. package/src/ui.container-card/composable/attrs.composable.js +56 -0
  38. package/src/ui.container-card/configs/default.config.js +31 -0
  39. package/src/ui.container-card/constants/index.js +5 -0
  40. package/src/ui.container-card/index.stories.js +170 -0
  41. package/src/ui.container-card/index.vue +146 -0
  42. package/src/ui.container-divider/Docs.mdx +16 -0
  43. package/src/ui.container-divider/configs/default.config.js +79 -0
  44. package/src/ui.container-divider/index.stories.js +124 -0
  45. package/src/ui.container-group/Docs.mdx +16 -0
  46. package/src/ui.container-group/composables/attrs.composable.js +44 -0
  47. package/src/ui.container-group/configs/default.config.js +29 -0
  48. package/src/ui.container-group/constants/index.js +5 -0
  49. package/src/ui.container-group/index.stories.js +88 -0
  50. package/src/ui.container-group/index.vue +106 -0
  51. package/src/ui.container-groups/Docs.mdx +16 -0
  52. package/src/ui.container-groups/composables/attrs.composable.js +12 -0
  53. package/src/ui.container-groups/configs/default.config.js +3 -0
  54. package/src/ui.container-groups/index.stories.js +45 -0
  55. package/src/ui.container-groups/index.vue +33 -0
  56. package/src/ui.container-modal/Docs.mdx +16 -0
  57. package/src/ui.container-modal/composables/attrs.composable.js +90 -0
  58. package/src/ui.container-modal/configs/default.config.js +69 -0
  59. package/src/ui.container-modal/constants/index.js +5 -0
  60. package/src/ui.container-modal/index.stories.js +170 -0
  61. package/src/ui.container-modal/index.vue +336 -0
  62. package/src/ui.container-modal-confirm/Docs.mdx +16 -0
  63. package/src/ui.container-modal-confirm/composable/attrs.composable.js +20 -0
  64. package/src/ui.container-modal-confirm/configs/default.config.js +15 -0
  65. package/src/ui.container-modal-confirm/constants/index.js +5 -0
  66. package/src/ui.container-modal-confirm/index.stories.js +209 -0
  67. package/src/ui.container-modal-confirm/index.vue +182 -0
  68. package/src/ui.container-page/Docs.mdx +16 -0
  69. package/src/ui.container-page/composables/attrs.composable.js +96 -0
  70. package/src/ui.container-page/configs/default.config.js +71 -0
  71. package/src/ui.container-page/constants/index.js +5 -0
  72. package/src/ui.container-page/index.stories.js +147 -0
  73. package/src/ui.container-page/index.vue +275 -0
  74. package/src/ui.container-row/Docs.mdx +16 -0
  75. package/src/ui.container-row/composables/attrs.composable.js +23 -0
  76. package/src/ui.container-row/configs/default.config.js +14 -0
  77. package/src/ui.container-row/constants/index.js +5 -0
  78. package/src/ui.container-row/index.stories.js +81 -0
  79. package/src/ui.container-row/index.vue +45 -0
  80. package/src/ui.data-list/composables/attrs.composable.js +45 -0
  81. package/src/ui.data-list/configs/default.config.js +32 -0
  82. package/src/ui.data-list/constants/index.js +5 -0
  83. package/src/ui.data-list/index.stories.js +91 -0
  84. package/src/ui.data-list/index.vue +259 -0
  85. package/src/ui.data-table/Docs.mdx +16 -0
  86. package/src/ui.data-table/index.vue +5 -0
  87. package/src/ui.data-table-cell/configs/default.config.js +19 -0
  88. package/src/ui.dropdown-badge/Docs.mdx +16 -0
  89. package/src/ui.dropdown-badge/composables/attrs.composable.js +63 -0
  90. package/src/ui.dropdown-badge/configs/default.config.js +34 -0
  91. package/src/ui.dropdown-badge/constants/index.js +5 -0
  92. package/src/ui.dropdown-badge/index.stories.js +126 -0
  93. package/src/ui.dropdown-badge/index.vue +234 -0
  94. package/src/ui.dropdown-button/Docs.mdx +16 -0
  95. package/src/ui.dropdown-button/composables/attrs.composable.js +63 -0
  96. package/src/ui.dropdown-button/configs/default.config.js +37 -0
  97. package/src/ui.dropdown-button/constants/index.js +14 -0
  98. package/src/ui.dropdown-button/index.stories.js +158 -0
  99. package/src/ui.dropdown-button/index.vue +271 -0
  100. package/src/ui.dropdown-item/Docs.mdx +16 -0
  101. package/src/ui.dropdown-item/composables/attrs.composable.js +13 -0
  102. package/src/ui.dropdown-item/configs/default.config.js +16 -0
  103. package/src/ui.dropdown-item/index.stories.js +30 -0
  104. package/src/ui.dropdown-item/index.vue +53 -0
  105. package/src/ui.dropdown-link/Docs.mdx +16 -0
  106. package/src/ui.dropdown-link/composables/attrs.composable.js +65 -0
  107. package/src/ui.dropdown-link/configs/default.config.js +37 -0
  108. package/src/ui.dropdown-link/constants/index.js +5 -0
  109. package/src/ui.dropdown-link/index.stories.js +127 -0
  110. package/src/ui.dropdown-link/index.vue +261 -0
  111. package/src/ui.dropdown-list/Docs.mdx +16 -0
  112. package/src/ui.dropdown-list/composables/attrs.composable.js +93 -0
  113. package/src/ui.dropdown-list/composables/usePointer.js +77 -0
  114. package/src/ui.dropdown-list/configs/default.config.js +74 -0
  115. package/src/ui.dropdown-list/constants/index.js +5 -0
  116. package/src/ui.dropdown-list/index.stories.js +76 -0
  117. package/src/ui.dropdown-list/index.vue +284 -0
  118. package/src/ui.form-calendar/Docs.mdx +52 -0
  119. package/src/ui.form-calendar/components/DayView.vue +268 -0
  120. package/src/ui.form-calendar/components/MonthView.vue +114 -0
  121. package/src/ui.form-calendar/components/YearView.vue +118 -0
  122. package/src/ui.form-calendar/constants/index.js +71 -0
  123. package/src/ui.form-calendar/index.stories.js +59 -0
  124. package/src/ui.form-calendar/index.vue +743 -0
  125. package/src/ui.form-calendar/services/calendar.service.js +189 -0
  126. package/src/ui.form-calendar/services/formatting.service.js +180 -0
  127. package/src/ui.form-checkbox/Docs.mdx +16 -0
  128. package/src/ui.form-checkbox/configs/default.config.js +69 -0
  129. package/src/ui.form-checkbox/index.stories.js +147 -0
  130. package/src/ui.form-checkbox/index.vue +3 -2
  131. package/src/ui.form-checkbox-group/Docs.mdx +16 -0
  132. package/src/ui.form-checkbox-group/composables/attrs.composable.js +17 -0
  133. package/src/ui.form-checkbox-group/configs/default.config.js +5 -0
  134. package/src/ui.form-checkbox-group/constants/index.js +5 -0
  135. package/src/ui.form-checkbox-group/index.stories.js +45 -0
  136. package/src/ui.form-checkbox-group/index.vue +145 -0
  137. package/src/ui.form-checkbox-multi-state/Docs.mdx +16 -0
  138. package/src/ui.form-checkbox-multi-state/composables/attrs.composable.js +24 -0
  139. package/src/ui.form-checkbox-multi-state/configs/default.config.js +9 -0
  140. package/src/ui.form-checkbox-multi-state/constants/index.js +5 -0
  141. package/src/ui.form-checkbox-multi-state/index.stories.js +59 -0
  142. package/src/ui.form-checkbox-multi-state/index.vue +134 -0
  143. package/src/ui.form-color-picker/composables/attrs.composable.js +44 -0
  144. package/src/ui.form-color-picker/configs/default.config.js +52 -0
  145. package/src/ui.form-color-picker/constants/index.js +5 -0
  146. package/src/ui.form-color-picker/index.stories.js +63 -0
  147. package/src/ui.form-color-picker/index.vue +171 -0
  148. package/src/ui.form-date-picker/Docs.mdx +52 -0
  149. package/src/ui.form-date-picker/composables/attrs.composable.js +22 -0
  150. package/src/ui.form-date-picker/configs/default.config.js +26 -0
  151. package/src/ui.form-date-picker/constants/index.js +5 -0
  152. package/src/ui.form-date-picker/index.stories.js +132 -0
  153. package/src/ui.form-date-picker/index.vue +256 -0
  154. package/src/ui.form-date-picker-range/constants/index.js +23 -0
  155. package/src/ui.form-date-picker-range/index.stories.js +135 -0
  156. package/src/ui.form-date-picker-range/index.vue +937 -0
  157. package/src/ui.form-date-picker-range/services/dateRange.service.js +116 -0
  158. package/src/ui.form-input/Docs.mdx +16 -0
  159. package/src/ui.form-input/assets/fonts/text-security-disc.woff +0 -0
  160. package/src/ui.form-input/composables/attrs.composable.js +66 -0
  161. package/src/ui.form-input/configs/default.config.js +72 -0
  162. package/src/ui.form-input/constants/index.js +5 -0
  163. package/src/ui.form-input/index.stories.js +166 -0
  164. package/src/ui.form-input/index.vue +388 -0
  165. package/src/ui.form-input-file/composables/attrs.composable.js +82 -0
  166. package/src/ui.form-input-file/configs/default.config.js +59 -0
  167. package/src/ui.form-input-file/constants/index.js +5 -0
  168. package/src/ui.form-input-file/index.stories.js +86 -0
  169. package/src/ui.form-input-file/index.vue +387 -0
  170. package/src/ui.form-input-money/Docs.mdx +16 -0
  171. package/src/ui.form-input-money/composables/attrs.composable.js +13 -0
  172. package/src/ui.form-input-money/composables/useFormatCurrency.js +82 -0
  173. package/src/ui.form-input-money/configs/default.config.js +16 -0
  174. package/src/ui.form-input-money/constants/index.js +5 -0
  175. package/src/ui.form-input-money/index.stories.js +126 -0
  176. package/src/ui.form-input-money/index.vue +263 -0
  177. package/src/ui.form-input-money/services/format.service.js +72 -0
  178. package/src/ui.form-input-number/Docs.mdx +16 -0
  179. package/src/ui.form-input-number/composables/attrs.composable.js +47 -0
  180. package/src/ui.form-input-number/configs/default.config.js +33 -0
  181. package/src/ui.form-input-number/constants/index.js +5 -0
  182. package/src/ui.form-input-number/index.stories.js +103 -0
  183. package/src/ui.form-input-number/index.vue +162 -0
  184. package/src/ui.form-input-rating/composables/attrs.composable.js +34 -0
  185. package/src/ui.form-input-rating/constants/index.js +5 -0
  186. package/src/ui.form-input-rating/index.vue +1 -0
  187. package/src/ui.form-input-search/composables/attrs.composable.js +21 -0
  188. package/src/ui.form-input-search/configs/default.config.js +20 -0
  189. package/src/ui.form-input-search/constants/index.js +5 -0
  190. package/src/ui.form-input-search/index.stories.js +90 -0
  191. package/src/ui.form-input-search/index.vue +215 -0
  192. package/src/ui.form-label/Docs.mdx +16 -0
  193. package/src/ui.form-label/composables/attrs.composable.js +65 -0
  194. package/src/ui.form-label/configs/default.config.js +95 -0
  195. package/src/ui.form-label/constants/index.js +13 -0
  196. package/src/ui.form-label/index.stories.js +107 -0
  197. package/src/ui.form-label/index.vue +170 -0
  198. package/src/ui.form-radio/Docs.mdx +16 -0
  199. package/src/ui.form-radio/composables/attrs.composable.js +34 -0
  200. package/src/ui.form-radio/configs/default.config.js +47 -0
  201. package/src/ui.form-radio/constants/index.js +5 -0
  202. package/src/ui.form-radio/index.stories.js +71 -0
  203. package/src/ui.form-radio/index.vue +170 -0
  204. package/src/ui.form-radio-card/Docs.mdx +16 -0
  205. package/src/ui.form-radio-card/constants/index.js +5 -0
  206. package/src/ui.form-radio-card/index.stories.js +149 -0
  207. package/src/ui.form-radio-card/index.vue +1 -0
  208. package/src/ui.form-radio-card/services/variant.service.js +15 -0
  209. package/src/ui.form-radio-group/Docs.mdx +16 -0
  210. package/src/ui.form-radio-group/composables/attrs.composable.js +27 -0
  211. package/src/ui.form-radio-group/configs/default.config.js +18 -0
  212. package/src/ui.form-radio-group/constants/index.js +5 -0
  213. package/src/ui.form-radio-group/index.stories.js +42 -0
  214. package/src/ui.form-radio-group/index.vue +127 -0
  215. package/src/ui.form-select/Docs.mdx +16 -0
  216. package/src/ui.form-select/composables/attrs.composable.js +172 -0
  217. package/src/ui.form-select/configs/default.config.js +138 -0
  218. package/src/ui.form-select/constants/index.js +19 -0
  219. package/src/ui.form-select/index.stories.js +339 -0
  220. package/src/ui.form-select/index.vue +722 -0
  221. package/src/ui.form-select/services/select.service.js +98 -0
  222. package/src/ui.form-switch/composables/attrs.composable.js +77 -0
  223. package/src/ui.form-switch/configs/default.config.js +76 -0
  224. package/src/ui.form-switch/constants/index.js +5 -0
  225. package/src/ui.form-switch/index.stories.js +93 -0
  226. package/src/ui.form-switch/index.vue +199 -0
  227. package/src/ui.form-switch/services/variant.service.js +31 -0
  228. package/src/ui.form-textarea/Docs.mdx +16 -0
  229. package/src/ui.form-textarea/composables/attrs.composable.js +52 -0
  230. package/src/ui.form-textarea/configs/default.config.js +68 -0
  231. package/src/ui.form-textarea/constants/index.js +5 -0
  232. package/src/ui.form-textarea/index.stories.js +151 -0
  233. package/src/ui.form-textarea/index.vue +284 -0
  234. package/src/ui.image-avatar/composables/attrs.composable.js +34 -0
  235. package/src/ui.image-avatar/configs/default.config.js +42 -0
  236. package/src/ui.image-avatar/constants/index.js +5 -0
  237. package/src/ui.image-avatar/default-avatar.png +0 -0
  238. package/src/ui.image-avatar/index.stories.js +107 -0
  239. package/src/ui.image-avatar/index.vue +121 -0
  240. package/src/ui.image-icon/Docs.mdx +16 -0
  241. package/src/ui.image-icon/index.stories.js +110 -0
  242. package/src/ui.image-logo/configs/default.config.js +38 -0
  243. package/src/ui.image-logo/index.stories.js +84 -0
  244. package/src/ui.loader-top/components/TopProgress.vue +277 -0
  245. package/src/ui.navigation-pagination/composables/attrs.composable.js +41 -0
  246. package/src/ui.navigation-pagination/configs/default.config.js +24 -0
  247. package/src/ui.navigation-pagination/constants/index.js +8 -0
  248. package/src/ui.navigation-pagination/index.stories.js +52 -0
  249. package/src/ui.navigation-pagination/index.vue +276 -0
  250. package/src/ui.navigation-stepper/composables/attrs.composable.js +25 -0
  251. package/src/ui.navigation-stepper/configs/default.config.js +13 -0
  252. package/src/ui.navigation-stepper/constants/index.js +5 -0
  253. package/src/ui.navigation-stepper/index.stories.js +30 -0
  254. package/src/ui.navigation-stepper/index.vue +126 -0
  255. package/src/ui.navigation-tab/composables/attrs.composable.js +30 -0
  256. package/src/ui.navigation-tab/configs/default.config.js +22 -0
  257. package/src/ui.navigation-tab/constants/index.js +5 -0
  258. package/src/ui.navigation-tab/index.stories.js +57 -0
  259. package/src/ui.navigation-tab/index.vue +85 -0
  260. package/src/ui.navigation-tabs/composables/attrs.composable.js +24 -0
  261. package/src/ui.navigation-tabs/configs/default.config.js +14 -0
  262. package/src/ui.navigation-tabs/constants/index.js +5 -0
  263. package/src/ui.navigation-tabs/index.stories.js +69 -0
  264. package/src/ui.navigation-tabs/index.vue +99 -0
  265. package/src/ui.notify/index.stories.js +102 -0
  266. package/src/ui.other-dot/composables/attrs.composable.js +32 -0
  267. package/src/ui.other-dot/configs/default.config.js +21 -0
  268. package/src/ui.other-dot/constants/index.js +5 -0
  269. package/src/ui.other-dot/index.stories.js +77 -0
  270. package/src/ui.other-dot/index.vue +52 -0
  271. package/src/ui.other-loader/composables/attrs.composable.js +51 -0
  272. package/src/ui.other-loader/configs/default.config.js +47 -0
  273. package/src/ui.other-loader/constants/index.js +5 -0
  274. package/src/ui.other-loader/index.stories.js +78 -0
  275. package/src/ui.other-loader/index.vue +136 -0
  276. package/src/ui.text-alert/composables/attrs.composable.js +48 -0
  277. package/src/ui.text-alert/configs/default.config.js +51 -0
  278. package/src/ui.text-alert/constatns/index.js +5 -0
  279. package/src/ui.text-alert/index.stories.js +157 -0
  280. package/src/ui.text-alert/index.vue +122 -0
  281. package/src/ui.text-badge/Docs.mdx +16 -0
  282. package/src/ui.text-badge/composables/attrs.composable.js +49 -0
  283. package/src/ui.text-badge/configs/default.config.js +51 -0
  284. package/src/ui.text-badge/constants/index.js +5 -0
  285. package/src/ui.text-badge/index.stories.js +190 -0
  286. package/src/ui.text-badge/index.vue +120 -0
  287. package/src/ui.text-block/composables/attrs.composable.js +31 -0
  288. package/src/ui.text-block/configs/default.config.js +35 -0
  289. package/src/ui.text-block/constatns/index.js +5 -0
  290. package/src/ui.text-block/index.stories.js +112 -0
  291. package/src/ui.text-block/index.vue +76 -0
  292. package/src/ui.text-empty/Docs.mdx +16 -0
  293. package/src/ui.text-empty/configs/default.config.js +30 -0
  294. package/src/ui.text-empty/index.stories.js +106 -0
  295. package/src/ui.text-empty/index.vue +1 -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
  319. package/vite.config.mjs +5 -4
  320. package/web-types.json +1 -1
  321. package/.web-types-gen/package.json +0 -3
@@ -0,0 +1,88 @@
1
+ import { getArgTypes } from "../service.storybook";
2
+
3
+ import UGroup from "../ui.container-group";
4
+ import UInput from "../ui.form-input";
5
+ import UButton from "../ui.button";
6
+
7
+ export default {
8
+ id: "5030",
9
+ title: "Containers / Group",
10
+ component: UGroup,
11
+ args: {
12
+ title: "Form group",
13
+ slotTemplate: `
14
+ <template #default>
15
+ <UInput placeholder="Vasyl" label="Name" />
16
+
17
+ <UInput placeholder="Vasylenko" label="Surname" />
18
+
19
+ <UInput placeholder="Kyiv" label="Town" />
20
+ </template>
21
+ `,
22
+ },
23
+ argTypes: {
24
+ ...getArgTypes(UGroup.name),
25
+ },
26
+ parameters: {
27
+ docs: {
28
+ story: {
29
+ iframeHeight: 360,
30
+ },
31
+ },
32
+ },
33
+ };
34
+
35
+ const DefaultTemplate = (args) => ({
36
+ components: { UGroup, UInput, UButton },
37
+ setup() {
38
+ return { args };
39
+ },
40
+ template: `
41
+ <UGroup v-bind="args">
42
+ ${args.slotTemplate}
43
+ </UGroup>
44
+ `,
45
+ });
46
+
47
+ export const Default = DefaultTemplate.bind({});
48
+ Default.args = {
49
+ title: "Some title",
50
+ };
51
+
52
+ export const upperlined = DefaultTemplate.bind({});
53
+ upperlined.args = { upperlined: false, underlined: true };
54
+
55
+ export const underlined = DefaultTemplate.bind({});
56
+ underlined.args = { upperlined: true, underlined: false };
57
+
58
+ export const slotDefault = DefaultTemplate.bind({});
59
+ slotDefault.args = {
60
+ slotTemplate: `
61
+ <template #default>
62
+ <UInput placeholder="placeholder" label="Label" />
63
+ </template>
64
+ `,
65
+ };
66
+ slotDefault.parameters = {
67
+ docs: {
68
+ story: {
69
+ iframeHeight: 240,
70
+ },
71
+ },
72
+ };
73
+
74
+ export const slotRight = DefaultTemplate.bind({});
75
+ slotRight.args = {
76
+ slotTemplate: `
77
+ <template #right>
78
+ <UButton size="sm" label="Edit"/>
79
+ </template>
80
+ `,
81
+ };
82
+ slotRight.parameters = {
83
+ docs: {
84
+ story: {
85
+ iframeHeight: 200,
86
+ },
87
+ },
88
+ };
@@ -0,0 +1,106 @@
1
+ <template>
2
+ <div :data-cy="dataCy" v-bind="wrapperAttrs">
3
+ <template v-if="title">
4
+ <UDivider v-if="upperlined" size="xl" no-top-padding v-bind="upperlineAttrs" />
5
+
6
+ <div v-bind="headerAttrs">
7
+ <!-- @slot Use it to add something left side of the header. -->
8
+ <slot name="left">
9
+ <div v-bind="headerFallbackAttrs">
10
+ <!-- @slot Use it to add something before title. -->
11
+ <slot name="before-title" />
12
+
13
+ <UHeader :label="title" size="xs" v-bind="titleAttrs" />
14
+
15
+ <!-- @slot Use it to add something after title. -->
16
+ <slot name="after-title" />
17
+ </div>
18
+ </slot>
19
+
20
+ <!-- @slot Use it to add something right side of the header. -->
21
+ <slot name="right" />
22
+ </div>
23
+
24
+ <UDivider v-if="underlined" size="xl" v-bind="underlineAttrs" />
25
+ </template>
26
+
27
+ <div v-bind="contentAttrs">
28
+ <!-- @slot Use it to add something instead form. -->
29
+ <slot />
30
+ </div>
31
+ </div>
32
+ </template>
33
+
34
+ <script setup>
35
+ import UIService from "../service.ui";
36
+ import UDivider from "../ui.container-divider";
37
+ import UHeader from "../ui.text-header";
38
+
39
+ import { UGroup } from "./constants";
40
+ import defaultConfig from "./configs/default.config";
41
+ import { useAttrs } from "./composables/attrs.composable";
42
+
43
+ /* Should be a string for correct web-types gen */
44
+ defineOptions({ name: "UGroup", inheritAttrs: false });
45
+
46
+ const props = defineProps({
47
+ /**
48
+ * Set header title.
49
+ */
50
+ title: {
51
+ type: String,
52
+ default: "",
53
+ },
54
+
55
+ /**
56
+ * The distance between nested components.
57
+ * @values sm, md, lg
58
+ */
59
+ size: {
60
+ type: String,
61
+ default: UIService.get(defaultConfig, UGroup).default.size,
62
+ },
63
+
64
+ /**
65
+ * Show line above the header.
66
+ */
67
+ upperlined: {
68
+ type: Boolean,
69
+ default: UIService.get(defaultConfig, UGroup).default.upperlined,
70
+ },
71
+
72
+ /**
73
+ * Show line under the header.
74
+ */
75
+ underlined: {
76
+ type: Boolean,
77
+ default: UIService.get(defaultConfig, UGroup).default.underlined,
78
+ },
79
+
80
+ /**
81
+ * Set component ui config object.
82
+ */
83
+ config: {
84
+ type: Object,
85
+ default: () => ({}),
86
+ },
87
+
88
+ /**
89
+ * Set data-cy attribute for automated testing.
90
+ */
91
+ dataCy: {
92
+ type: String,
93
+ default: "",
94
+ },
95
+ });
96
+
97
+ const {
98
+ contentAttrs,
99
+ headerAttrs,
100
+ wrapperAttrs,
101
+ headerFallbackAttrs,
102
+ titleAttrs,
103
+ upperlineAttrs,
104
+ underlineAttrs,
105
+ } = useAttrs(props);
106
+ </script>
@@ -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,12 @@
1
+ import useUI from "../../composable.ui";
2
+ import defaultConfig from "../configs/default.config";
3
+
4
+ export function useAttrs(props) {
5
+ const { getAttrs } = useUI(defaultConfig, () => props.config);
6
+
7
+ const wrapperAttrs = getAttrs("wrapper");
8
+
9
+ return {
10
+ wrapperAttrs,
11
+ };
12
+ }
@@ -0,0 +1,3 @@
1
+ export default /*tw*/ {
2
+ wrapper: "flex flex-col space-y-14",
3
+ };
@@ -0,0 +1,45 @@
1
+ import { getArgTypes } from "../service.storybook";
2
+
3
+ import UGroup from "../ui.container-group";
4
+ import UGroups from "../ui.container-groups";
5
+ import UInput from "../ui.form-input";
6
+
7
+ export default {
8
+ id: "5040",
9
+ title: "Containers / Groups",
10
+ component: UGroups,
11
+ argTypes: {
12
+ ...getArgTypes(UGroups.name),
13
+ },
14
+ parameters: {
15
+ docs: {
16
+ story: {
17
+ iframeHeight: 760,
18
+ },
19
+ },
20
+ },
21
+ };
22
+
23
+ const DefaultTemplate = (args) => ({
24
+ components: { UGroups, UGroup, UInput },
25
+ setup() {
26
+ return { args };
27
+ },
28
+ template: `
29
+ <UGroups>
30
+ ${args.slotTemplate}
31
+ </UGroups>
32
+ `,
33
+ });
34
+
35
+ export const Default = DefaultTemplate.bind({});
36
+ Default.args = {
37
+ slotTemplate: `
38
+ <template #default>
39
+ <UGroup :upperlined="n !== 1" :title="'Group '+n" v-for="n in 3">
40
+ <UInput placeholder="input" label="Label" />
41
+ <UInput placeholder="input" label="Label" />
42
+ </UGroup>
43
+ </template>
44
+ `,
45
+ };
@@ -0,0 +1,33 @@
1
+ <template>
2
+ <div :data-cy="dataCy" v-bind="wrapperAttrs">
3
+ <!-- @slot Use it to add something inside. -->
4
+ <slot />
5
+ </div>
6
+ </template>
7
+
8
+ <script setup>
9
+ import { useAttrs } from "./composables/attrs.composable";
10
+
11
+ /* Should be a string for correct web-types gen */
12
+ defineOptions({ name: "UGroups", inheritAttrs: false });
13
+
14
+ const props = defineProps({
15
+ /**
16
+ * Set component ui config object.
17
+ */
18
+ config: {
19
+ type: Object,
20
+ default: () => ({}),
21
+ },
22
+
23
+ /**
24
+ * Set data-cy attribute for automated testing.
25
+ */
26
+ dataCy: {
27
+ type: String,
28
+ default: "",
29
+ },
30
+ });
31
+
32
+ const { wrapperAttrs } = useAttrs(props);
33
+ </script>
@@ -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,90 @@
1
+ import useUI from "../../composable.ui";
2
+ import { cva, cx } from "../../service.ui";
3
+
4
+ import defaultConfig from "../configs/default.config";
5
+ import { useStore } from "vuex";
6
+ import { computed } from "vue";
7
+
8
+ export function useAttrs(props) {
9
+ const store = useStore();
10
+ const { config, getAttrs, hasSlotContent } = useUI(defaultConfig, () => props.config, "wrapper");
11
+ const { modal } = config.value;
12
+
13
+ const cvaModal = cva({
14
+ base: modal.base,
15
+ variants: modal.variants,
16
+ compoundVariants: modal.compoundVariants,
17
+ });
18
+
19
+ const modalClasses = computed(() =>
20
+ cvaModal({
21
+ width: props.width,
22
+ inner: props.inner,
23
+ }),
24
+ );
25
+
26
+ const wrapperAttrs = getAttrs("wrapper");
27
+ const overlayAttrs = getAttrs("overlay");
28
+ const innerWrapperAttrs = getAttrs("innerWrapper");
29
+ const headerAttrsRaw = getAttrs("header");
30
+ const headerLeftAttrs = getAttrs("headerLeft");
31
+ const headerLeftFallbackAttrs = getAttrs("headerLeftFallback");
32
+ const backLinkAttrs = getAttrs("backLink", { isComponent: true });
33
+ const backLinkIconAttrs = getAttrs("backLinkIcon", { isComponent: true });
34
+ const titleAttrs = getAttrs("title", { isComponent: true });
35
+ const descriptionAttrs = getAttrs("description");
36
+ const headerRightAttrs = getAttrs("headerRight");
37
+ const closeIconAttrs = getAttrs("closeIcon", { isComponent: true });
38
+ const bodyAttrs = getAttrs("body");
39
+ const dividerAttrs = getAttrs("divider", { isComponent: true });
40
+ const dividerSpacingAttrs = getAttrs("dividerSpacing", { isComponent: true });
41
+ const footerAttrsRaw = getAttrs("footer");
42
+
43
+ const headerAttrs = computed(() => ({
44
+ ...headerAttrsRaw.value,
45
+ class: cx([
46
+ headerAttrsRaw.value.class,
47
+ props.mobileFooterReverse &&
48
+ store.getters["breakpoint/isMobileDevice"] &&
49
+ config.value.footerMobileReverse,
50
+ ]),
51
+ }));
52
+
53
+ const footerAttrs = computed(() => ({
54
+ ...footerAttrsRaw.value,
55
+ class: cx([
56
+ footerAttrsRaw.value.class,
57
+ props.mobileFooterReverse &&
58
+ store.getters["breakpoint/isMobileDevice"] &&
59
+ config.value.footerMobileReverse,
60
+ ]),
61
+ }));
62
+
63
+ const footerLeftAttrs = getAttrs("footerLeft");
64
+ const footerRightAttrs = getAttrs("footerRight");
65
+ const modalAttrs = getAttrs("modal", { classes: modalClasses });
66
+
67
+ return {
68
+ config,
69
+ modalAttrs,
70
+ titleAttrs,
71
+ backLinkAttrs,
72
+ backLinkIconAttrs,
73
+ closeIconAttrs,
74
+ dividerAttrs,
75
+ dividerSpacingAttrs,
76
+ overlayAttrs,
77
+ wrapperAttrs,
78
+ innerWrapperAttrs,
79
+ headerAttrs,
80
+ headerLeftAttrs,
81
+ headerLeftFallbackAttrs,
82
+ descriptionAttrs,
83
+ headerRightAttrs,
84
+ bodyAttrs,
85
+ footerLeftAttrs,
86
+ footerAttrs,
87
+ footerRightAttrs,
88
+ hasSlotContent,
89
+ };
90
+ }
@@ -0,0 +1,69 @@
1
+ export default /*tw*/ {
2
+ wrapper: "fixed inset-0 z-50 outline-none",
3
+ wrapperTransition: {
4
+ enterActiveClass: "ease-out duration-300",
5
+ enterFromClass: "opacity-0 translate-y-4 sm:translate-y-0 transform sm:scale-95",
6
+ enterToClass: "opacity-100 translate-y-0 transform sm:scale-100",
7
+ leaveActiveClass: "ease-in duration-200",
8
+ leaveFromClass: "opacity-100 translate-y-0 transform sm:scale-100",
9
+ leaveToClass: "opacity-0 translate-y-4 sm:translate-y-0 transform sm:scale-95",
10
+ },
11
+ overlay: "fixed inset-0 z-40 bg-gray-900 bg-opacity-75",
12
+ overlayTransition: {
13
+ enterActiveClass: "ease-out duration-300",
14
+ enterFromClass: "opacity-0",
15
+ enterToClass: "opacity-100",
16
+ leaveActiveClass: "ease-in duration-200",
17
+ leaveFromClass: "opacity-100",
18
+ leaveToClass: "opacity-0",
19
+ },
20
+ innerWrapper: "py-12 w-full h-full overflow-auto",
21
+ header: "flex items-center justify-between px-4 md:px-8 pb-6 pt-8",
22
+ headerLeft: "flex items-center space-x-4",
23
+ headerLeftFallback: "flex flex-col",
24
+ backLink: "flex items-center gap-0.5",
25
+ backLinkIcon: "",
26
+ backLinkIconName: "arrow_back",
27
+ title: "",
28
+ description: "mt-1.5 text-base font-normal text-gray-500",
29
+ headerRight: "",
30
+ closeIcon: "",
31
+ closeIconName: "close",
32
+ body: "space-y-4 px-4 md:px-8",
33
+ divider: "",
34
+ dividerSpacing: "",
35
+ footer: "flex justify-between px-4 md:px-8 py-8 max-md:flex-col max-md:gap-4",
36
+ footerLeft: "flex flex-col md:flex-row space-y-4 md:space-x-4 md:space-y-0 w-full",
37
+ footerRight: "flex flex-col md:flex-row space-y-4 md:space-x-4 md:space-y-0 w-full justify-end",
38
+ footerMobileReverse: "flex flex-col-reverse space-y-reverse group/reversed-footer",
39
+ modal: {
40
+ base: "mx-auto rounded-2xl bg-white",
41
+ variants: {
42
+ width: {
43
+ xs: "md:w-[25rem]",
44
+ sm: "md:w-[31.25rem]",
45
+ md: "md:w-[37.5rem]",
46
+ lg: "md:w-[43.75rem]",
47
+ xl: "md:w-[50rem]",
48
+ "2xl": "md:w-[56.25rem]",
49
+ "3xl": "md:w-[62.5rem]",
50
+ "4xl": "md:w-[68.75rem]",
51
+ "5xl": "md:w-[75rem]",
52
+ },
53
+ inner: {
54
+ true: "!my-[4.5rem]",
55
+ },
56
+ },
57
+ },
58
+ defaultVariants: {
59
+ color: "brand",
60
+ width: "sm",
61
+ inner: false,
62
+ closeIcon: true,
63
+ escToClose: true,
64
+ clickToClose: true,
65
+ noDivider: false,
66
+ mobileBottomAlign: false,
67
+ mobileFooterReverse: false,
68
+ },
69
+ };
@@ -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 UModal = "UModal";
@@ -0,0 +1,170 @@
1
+ import { getArgTypes } from "../service.storybook";
2
+
3
+ import UModal from "../ui.container-modal";
4
+ import UButton from "../ui.button";
5
+ import UIcon from "../ui.image-icon";
6
+ import UHeader from "../ui.text-header";
7
+ import UInput from "../ui.form-input";
8
+ import UTextarea from "../ui.form-textarea";
9
+ import URow from "../ui.container-row";
10
+
11
+ export default {
12
+ id: "5070",
13
+ title: "Containers / Modal",
14
+ component: UModal,
15
+ args: {
16
+ title: "Modal title",
17
+ value: false,
18
+ slotDefaultTemplate: `
19
+ <template #default>
20
+ <URow>
21
+ <UInput label="Name" />
22
+ <UInput label="Lastname" />
23
+ </URow>
24
+
25
+ <UTextarea class="mb-7" label="Comments" rows="3" />
26
+ </template>
27
+ `,
28
+ },
29
+ argTypes: {
30
+ ...getArgTypes(UModal.name),
31
+ },
32
+ parameters: {
33
+ docs: {
34
+ story: {
35
+ height: "500px",
36
+ },
37
+ },
38
+ },
39
+ };
40
+
41
+ const DefaultTemplate = (args) => ({
42
+ components: { UModal, URow, UButton, UIcon, UHeader, UInput, UTextarea },
43
+ setup() {
44
+ return { args };
45
+ },
46
+ template: `
47
+ <div>
48
+ <UModal v-bind="args" v-model="args.value">
49
+ ${args.slotDefaultTemplate}
50
+ ${args.slotTemplate || ""}
51
+ </UModal>
52
+
53
+ <UButton label="show modal" @click="onClick"/>
54
+ </div>
55
+ `,
56
+ methods: {
57
+ onClick() {
58
+ args.value = true;
59
+ },
60
+ },
61
+ });
62
+
63
+ const SizesTemplate = (args, { argTypes } = {}) => ({
64
+ components: { UModal, UButton, URow, UInput, UTextarea },
65
+ setup() {
66
+ return {
67
+ args,
68
+ sizes: argTypes.width.options,
69
+ };
70
+ },
71
+ template: `
72
+ <div>
73
+ <UModal v-bind="args" v-model="args.value">
74
+ ${args.slotDefaultTemplate}
75
+ ${args.slotTemplate || ""}
76
+ </UModal>
77
+
78
+ <URow>
79
+ <UButton
80
+ v-for="(size, index) in sizes"
81
+ :key="index" :label="size" @click="onClick(size)"
82
+ />
83
+ </URow>
84
+ </div>
85
+ `,
86
+ methods: {
87
+ onClick(value) {
88
+ args.width = value;
89
+ args.value = true;
90
+ },
91
+ },
92
+ });
93
+
94
+ export const Default = DefaultTemplate.bind({});
95
+ Default.args = {};
96
+
97
+ export const sizes = SizesTemplate.bind({});
98
+ sizes.args = { text: "" };
99
+
100
+ export const backRoute = DefaultTemplate.bind({});
101
+ backRoute.args = { backRoute: { title: "route title" } };
102
+
103
+ export const slotDefault = DefaultTemplate.bind({});
104
+ slotDefault.args = {
105
+ slotTemplate: `
106
+ <template #default>
107
+ Some text
108
+ </template>
109
+ `,
110
+ };
111
+
112
+ export const slotHeaderLeftBefore = DefaultTemplate.bind({});
113
+ slotHeaderLeftBefore.args = {
114
+ slotTemplate: `
115
+ <template #header-left-before>
116
+ <UIcon
117
+ name="star"
118
+ color="gray"
119
+ />
120
+ </template>
121
+ `,
122
+ };
123
+
124
+ export const slotHeaderLeft = DefaultTemplate.bind({});
125
+ slotHeaderLeft.args = {
126
+ slotTemplate: `
127
+ <template #header-left>
128
+ <UHeader size="lg" label="Large title" />
129
+ </template>
130
+ `,
131
+ };
132
+
133
+ export const slotHeaderLeftAfter = DefaultTemplate.bind({});
134
+ slotHeaderLeftAfter.args = {
135
+ slotTemplate: `
136
+ <template #header-left-after>
137
+ <UIcon
138
+ name="star"
139
+ color="gray"
140
+ />
141
+ </template>
142
+ `,
143
+ };
144
+
145
+ export const slotHeaderRight = DefaultTemplate.bind({});
146
+ slotHeaderRight.args = {
147
+ slotTemplate: `
148
+ <template #header-right>
149
+ <UButton size="sm" color="gray" label="some button" />
150
+ </template>
151
+ `,
152
+ };
153
+
154
+ export const slotFooterLeft = DefaultTemplate.bind({});
155
+ slotFooterLeft.args = {
156
+ slotTemplate: `
157
+ <template #footer-left>
158
+ <UButton label="Submit" />
159
+ </template>
160
+ `,
161
+ };
162
+
163
+ export const slotFooterRight = DefaultTemplate.bind({});
164
+ slotFooterRight.args = {
165
+ slotTemplate: `
166
+ <template #footer-right>
167
+ <UButton label="Back" />
168
+ </template>
169
+ `,
170
+ };