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,77 @@
1
+ import { getArgTypes, getSlotNames } from "../service.storybook";
2
+
3
+ import UToggleItem from "../ui.button-toggle-item";
4
+ import UIcon from "../ui.image-icon";
5
+
6
+ export default {
7
+ title: "Buttons & Links / Toggle Item",
8
+ component: UToggleItem,
9
+ args: {
10
+ value: "1",
11
+ label: "Label",
12
+ },
13
+ argTypes: {
14
+ ...getArgTypes(UToggleItem.name),
15
+ value: { control: { type: "text" } },
16
+ },
17
+ };
18
+
19
+ const DefaultTemplate = (args) => ({
20
+ components: { UToggleItem },
21
+ setup() {
22
+ const slots = getSlotNames(UToggleItem.name);
23
+
24
+ return { args, slots };
25
+ },
26
+ template: `
27
+ <UToggleItem v-bind="args" name="toggle">
28
+ <template v-for="(slot, index) of slots" :key="index" v-slot:[slot]>
29
+ <template v-if="args[slot]">{{ args[slot] }}</template>
30
+ </template>
31
+ </UToggleItem>
32
+ `,
33
+ });
34
+
35
+ const SlotTemplate = (args) => ({
36
+ components: { UToggleItem, UIcon },
37
+ setup() {
38
+ return { args };
39
+ },
40
+ template: `
41
+ <UToggleItem v-bind="args" label="Label" >
42
+ ${args.slotTemplate}
43
+ </UToggleItem>
44
+ `,
45
+ });
46
+
47
+ export const Default = DefaultTemplate.bind({});
48
+ Default.args = {};
49
+
50
+ export const disabled = DefaultTemplate.bind({});
51
+ disabled.args = { disabled: true };
52
+
53
+ export const slotLeft = SlotTemplate.bind({});
54
+ slotLeft.args = {
55
+ slotTemplate: `
56
+ <template #left>
57
+ <UIcon
58
+ name="star"
59
+ color="green"
60
+ size="md"
61
+ />
62
+ </template>
63
+ `,
64
+ };
65
+
66
+ export const slotRight = SlotTemplate.bind({});
67
+ slotRight.args = {
68
+ slotTemplate: `
69
+ <template #right>
70
+ <UIcon
71
+ name="star"
72
+ color="green"
73
+ size="md"
74
+ />
75
+ </template>
76
+ `,
77
+ };
@@ -0,0 +1,147 @@
1
+ <template>
2
+ <div v-bind="wrapperAttrs">
3
+ <input
4
+ :id="id"
5
+ v-model="selectedItem"
6
+ :disabled="disabled"
7
+ :value="value"
8
+ :name="name"
9
+ :type="type"
10
+ v-bind="inputAttrs"
11
+ />
12
+ <label tabindex="0" :for="id" v-bind="labelAttrs" @click="onClickSetValue">
13
+ <span v-if="hasSlotContent($slots['left'])">
14
+ <!-- @slot Use it to add some content before label. -->
15
+ <slot name="left" />
16
+ </span>
17
+
18
+ <!-- @slot Use it to add some content instead of label. -->
19
+ <slot />
20
+ <span v-if="!hasSlotContent($slots['default'])" v-bind="labelTextAttrs" v-text="label" />
21
+
22
+ <span v-if="hasSlotContent($slots['right'])">
23
+ <!-- @slot Use it to add some content after label. -->
24
+ <slot name="right" />
25
+ </span>
26
+ </label>
27
+ </div>
28
+ </template>
29
+
30
+ <script setup>
31
+ import { inject, onMounted, ref } from "vue";
32
+ import UIService, { getRandomId } from "../service.ui";
33
+
34
+ import { TYPE_RADIO } from "../ui.button-toggle/constants";
35
+
36
+ import { useAttrs } from "./composables/attrs.composable";
37
+ import defaultConfig from "./configs/default.config";
38
+ import { UToggleItem } from "./constants";
39
+
40
+ /* Should be a string for correct web-types gen */
41
+ defineOptions({ name: "UToggleItem", inheritAttrs: false });
42
+
43
+ const props = defineProps({
44
+ /**
45
+ * Set data for button.
46
+ */
47
+ modelValue: {
48
+ type: [String, Number, Array],
49
+ default: "",
50
+ },
51
+
52
+ /**
53
+ * Set value for checkbox state.
54
+ */
55
+ value: {
56
+ type: [String, Number],
57
+ default: "",
58
+ },
59
+
60
+ /**
61
+ * Set label.
62
+ */
63
+ label: {
64
+ type: String,
65
+ default: "",
66
+ },
67
+
68
+ /**
69
+ * Make item disabled.
70
+ */
71
+ disabled: {
72
+ type: Boolean,
73
+ default: UIService.get(defaultConfig, UToggleItem).default.disabled,
74
+ },
75
+
76
+ /**
77
+ * The variant of the button.
78
+ * @values primary, secondary, thirdary
79
+ */
80
+ variant: {
81
+ type: String,
82
+ default: UIService.get(defaultConfig, UToggleItem).default.variant,
83
+ },
84
+
85
+ /**
86
+ * Generates unique element id.
87
+ * @ignore
88
+ */
89
+ id: {
90
+ type: String,
91
+ default: () => getRandomId(),
92
+ },
93
+
94
+ /**
95
+ * Sets component ui config object.
96
+ */
97
+ config: {
98
+ type: Object,
99
+ default: () => ({}),
100
+ },
101
+
102
+ /**
103
+ * Sets data-cy attribute for automated testing.
104
+ */
105
+ dataCy: {
106
+ type: String,
107
+ default: "",
108
+ },
109
+ });
110
+
111
+ const emit = defineEmits(["update:modelValue"]);
112
+
113
+ const type = inject("toggleType", UIService.get(defaultConfig, UToggleItem).default.type);
114
+ const name = inject("toggleName", "toggle");
115
+ const size = inject("toggleSize", UIService.get(defaultConfig, UToggleItem).default.size);
116
+ const block = inject("toggleBlock", UIService.get(defaultConfig, UToggleItem).default.block);
117
+ const { selectedValue, updateSelectedValue } = inject("toggleSelectedValue", {});
118
+
119
+ const { wrapperAttrs, labelTextAttrs, labelAttrs, inputAttrs, hasSlotContent } = useAttrs(props, {
120
+ size,
121
+ block,
122
+ });
123
+
124
+ const selectedItem = ref("");
125
+
126
+ onMounted(() => {
127
+ if (type.value === TYPE_RADIO) {
128
+ selectedItem.value = selectedValue ? selectedValue.value : selectedItem.value;
129
+ } else {
130
+ selectedItem.value = selectedValue
131
+ ? selectedValue.value.includes(props.value)
132
+ : selectedItem.value;
133
+ }
134
+ });
135
+
136
+ function onClickSetValue() {
137
+ if (type.value === TYPE_RADIO) {
138
+ selectedItem.value = props.value;
139
+ }
140
+
141
+ if (updateSelectedValue) {
142
+ updateSelectedValue(props.value, !selectedItem.value);
143
+ }
144
+
145
+ emit("update:modelValue", props.value);
146
+ }
147
+ </script>
@@ -0,0 +1,45 @@
1
+ import { computed } from "vue";
2
+ import useUI from "../../composable.ui";
3
+ import { cva } from "../../service.ui";
4
+
5
+ import defaultConfig from "../configs/default.config";
6
+
7
+ export function useAttrs(props, { isOpened }) {
8
+ const { config, getAttrs } = useUI(defaultConfig, () => props.config);
9
+ const { wrapper, description } = config.value;
10
+
11
+ const cvaWrapper = cva({
12
+ base: wrapper.base,
13
+ variants: wrapper.variants,
14
+ compoundVariants: wrapper.compoundVariants,
15
+ });
16
+
17
+ const cvaDescription = cva({
18
+ base: description.base,
19
+ variants: description.variants,
20
+ compoundVariants: description.compoundVariants,
21
+ });
22
+
23
+ const wrapperClasses = computed(() => cvaWrapper({ size: props.size }));
24
+
25
+ const descriptionClasses = computed(() =>
26
+ cvaDescription({ size: props.size, isOpened: isOpened.value }),
27
+ );
28
+
29
+ const wrapperAttrs = getAttrs("wrapper", { classes: wrapperClasses });
30
+ const descriptionAttrs = getAttrs("description", { classes: descriptionClasses });
31
+ const infoAttrs = getAttrs("info");
32
+ const titleAttrs = getAttrs("title");
33
+ const iconAttrs = getAttrs("icon", { isComponent: true });
34
+ const separatorAttrs = getAttrs("separator");
35
+
36
+ return {
37
+ config,
38
+ wrapperAttrs,
39
+ descriptionAttrs,
40
+ infoAttrs,
41
+ titleAttrs,
42
+ iconAttrs,
43
+ separatorAttrs,
44
+ };
45
+ }
@@ -0,0 +1,32 @@
1
+ export default /*tw*/ {
2
+ wrapper: {
3
+ base: "group cursor-pointer [&:not(:first-child)]:pt-6",
4
+ variants: {
5
+ size: {
6
+ sm: "text-sm",
7
+ md: "text-base",
8
+ lg: "text-lg",
9
+ },
10
+ },
11
+ },
12
+ info: "leading-6",
13
+ title: "flex items-center justify-between font-medium text-gray-800",
14
+ description: {
15
+ base: "text-gray-600 leading-normal h-0 overflow-hidden opacity-0",
16
+ variants: {
17
+ size: {
18
+ sm: "text-xs",
19
+ md: "text-sm",
20
+ lg: "text-base",
21
+ },
22
+ isOpened: {
23
+ true: "h-full pt-3 opacity-100 transition-all duration-100 ease-in-out",
24
+ },
25
+ },
26
+ },
27
+ icon: "",
28
+ separator: "mt-2 h-px w-full lg:mt-6 bg-gray-100 mt-2.5 group-last:hidden",
29
+ defaultVariants: {
30
+ size: "md",
31
+ },
32
+ };
@@ -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 UAccordion = "UAccordion";
@@ -0,0 +1,89 @@
1
+ import { getArgTypes } from "../service.storybook";
2
+
3
+ import UAccordion from "../ui.container-accordion";
4
+ import UCard from "../ui.container-card";
5
+ import UGroup from "../ui.container-group";
6
+
7
+ export default {
8
+ id: "5050",
9
+ title: "Containers / Accordion",
10
+ component: UAccordion,
11
+ argTypes: {
12
+ ...getArgTypes(UAccordion.name),
13
+ },
14
+ };
15
+
16
+ const DefaultTemplate = (args) => ({
17
+ components: { UAccordion, UCard },
18
+ setup() {
19
+ return { args };
20
+ },
21
+ template: `
22
+ <UCard>
23
+ <UAccordion
24
+ name="accordion1"
25
+ title="Excellence by necessity"
26
+ description="As creators and maintainers of the technologies you are using,
27
+ our services are here to showcase the full power of our softwares."
28
+ />
29
+ <UAccordion
30
+ name="accordion1"
31
+ title="Unique expertise"
32
+ description="All the peoples that will be involved in delivering your project are contributing
33
+ to the technologies you are using, when they are not the creators themselves."
34
+ />
35
+ <UAccordion
36
+ name="accordion1"
37
+ title="Commitment to innovation"
38
+ description="By working with us, you are directly supporting the open source community,
39
+ ensuring the ecosystem continuity and enabling Nuxt development."
40
+ />
41
+ </UCard>
42
+ `,
43
+ });
44
+
45
+ const SizesTemplate = (args, { argTypes } = {}) => ({
46
+ components: { UAccordion, UCard, UGroup },
47
+ setup() {
48
+ return {
49
+ args,
50
+ sizes: argTypes.size.options,
51
+ };
52
+ },
53
+ template: `
54
+ <UGroup>
55
+ <UCard v-for="(sizes, index) in sizes" :padding="sizes">
56
+ <UAccordion
57
+ :size="size"
58
+ :name="size"
59
+ title="Excellence by necessity"
60
+ description="As creators and maintainers of the technologies you are using,
61
+ our services are here to showcase the full power of our softwares."
62
+ :key="index"
63
+ />
64
+ <UAccordion
65
+ :size="size"
66
+ :name="size"
67
+ title="Unique expertise"
68
+ description="All the peoples that will be involved in delivering your project are contributing
69
+ to the technologies you are using, when they are not the creators themselves."
70
+ :key="index"
71
+ />
72
+ <UAccordion
73
+ :size="size"
74
+ :name="size"
75
+ title="Commitment to innovation"
76
+ description="By working with us, you are directly supporting the open source community,
77
+ ensuring the ecosystem continuity and enabling Nuxt development."
78
+ :key="index"
79
+ />
80
+ </UCard>
81
+ </UGroup>
82
+ `,
83
+ });
84
+
85
+ export const Default = DefaultTemplate.bind({});
86
+ Default.args = {};
87
+
88
+ export const Sizes = SizesTemplate.bind({});
89
+ Sizes.args = {};
@@ -0,0 +1,95 @@
1
+ <template>
2
+ <div :data-cy="dataCy" v-bind="wrapperAttrs" @click="onClickItem">
3
+ <div v-bind="infoAttrs">
4
+ <div v-bind="titleAttrs">
5
+ <div v-text="title" />
6
+
7
+ <UIcon :name="isOpened ? 'remove' : 'add'" :size="size" color="gray" v-bind="iconAttrs" />
8
+ </div>
9
+
10
+ <div :id="`description-${id}`" v-bind="descriptionAttrs" v-text="description" />
11
+ </div>
12
+
13
+ <div v-bind="separatorAttrs" />
14
+ </div>
15
+ </template>
16
+
17
+ <script setup>
18
+ import { ref } from "vue";
19
+
20
+ import UIcon from "../ui.image-icon";
21
+ import UIService, { getRandomId } from "../service.ui";
22
+
23
+ import { UAccordion } from "./constants/index";
24
+ import defaultConfig from "./configs/default.config";
25
+ import { useAttrs } from "./composables/attrs.composable";
26
+
27
+ /* Should be a string for correct web-types gen */
28
+ defineOptions({ name: "UAccordion", inheritAttrs: false });
29
+
30
+ const props = defineProps({
31
+ /**
32
+ * Set component title.
33
+ */
34
+ title: {
35
+ type: String,
36
+ required: true,
37
+ },
38
+
39
+ /**
40
+ * Set component description.
41
+ */
42
+ description: {
43
+ type: String,
44
+ required: true,
45
+ },
46
+
47
+ /**
48
+ * Set unique block name.
49
+ * @ignore
50
+ */
51
+ name: {
52
+ type: String,
53
+ required: true,
54
+ },
55
+
56
+ /**
57
+ * The size of component.
58
+ * @values sm, md, lg
59
+ */
60
+ size: {
61
+ type: String,
62
+ default: UIService.get(defaultConfig, UAccordion).default.size,
63
+ },
64
+
65
+ /**
66
+ * Generates unique element id.
67
+ * @ignore
68
+ */
69
+ id: {
70
+ type: String,
71
+ default: () => getRandomId(),
72
+ },
73
+
74
+ /**
75
+ * Sets data-cy attribute for automated testing.
76
+ */
77
+ dataCy: {
78
+ type: String,
79
+ default: "",
80
+ },
81
+ });
82
+
83
+ const emit = defineEmits(["itemClicked"]);
84
+
85
+ const isOpened = ref(false);
86
+
87
+ const { wrapperAttrs, descriptionAttrs, infoAttrs, titleAttrs, iconAttrs, separatorAttrs } =
88
+ useAttrs(props, { isOpened });
89
+
90
+ function onClickItem() {
91
+ isOpened.value = !isOpened.value;
92
+
93
+ emit("itemClicked", props.name);
94
+ }
95
+ </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,56 @@
1
+ import useUI from "../../composable.ui";
2
+ import { cva, cx } from "../../service.ui";
3
+
4
+ import defaultConfig from "../configs/default.config";
5
+ import { computed } from "vue";
6
+
7
+ export function useAttrs(props, { isMobileDevice }) {
8
+ const { config, getAttrs, hasSlotContent } = useUI(defaultConfig, () => props.config);
9
+ const { wrapper } = config.value;
10
+
11
+ const cvaWrapper = cva({
12
+ base: wrapper.base,
13
+ variants: wrapper.variants,
14
+ compoundVariants: wrapper.compoundVariants,
15
+ });
16
+
17
+ const wrapperClasses = computed(() =>
18
+ cvaWrapper({
19
+ padding: props.padding,
20
+ rounded: props.rounded,
21
+ }),
22
+ );
23
+
24
+ const wrapperAttrs = getAttrs("wrapper", { classes: wrapperClasses });
25
+ const headerAttrs = getAttrs("header");
26
+ const headerLeftAttrs = getAttrs("headerLeft");
27
+ const headerLeftFallbackAttrs = getAttrs("headerLeftFallback");
28
+ const titleAttrs = getAttrs("title", { isComponent: true });
29
+ const descriptionAttrs = getAttrs("description");
30
+ const contentAttrs = getAttrs("content");
31
+ const dividerAttrs = getAttrs("divider", { isComponent: true });
32
+ const footerAttrsRaw = getAttrs("footer");
33
+
34
+ const footerAttrs = computed(() => {
35
+ const footerMobileReverseClasses =
36
+ props.mobileFooterReverse && isMobileDevice.value && config.value.footerMobileReverse;
37
+
38
+ return {
39
+ ...footerAttrsRaw.value,
40
+ class: cx([footerAttrsRaw.value.class, footerMobileReverseClasses]),
41
+ };
42
+ });
43
+
44
+ return {
45
+ hasSlotContent,
46
+ wrapperAttrs,
47
+ titleAttrs,
48
+ dividerAttrs,
49
+ headerAttrs,
50
+ headerLeftAttrs,
51
+ headerLeftFallbackAttrs,
52
+ descriptionAttrs,
53
+ contentAttrs,
54
+ footerAttrs,
55
+ };
56
+ }
@@ -0,0 +1,31 @@
1
+ export default /*tw*/ {
2
+ wrapper: {
3
+ base: "border border-gray-200 bg-white space-y-4 md:space-y-6 w-full",
4
+ variants: {
5
+ rounded: {
6
+ sm: "rounded-lg",
7
+ md: "rounded-2xl",
8
+ lg: "rounded-3xl",
9
+ },
10
+ padding: {
11
+ sm: "p-2 md:p-4",
12
+ md: "p-4 md:p-6",
13
+ lg: "p-6 md:p-8",
14
+ },
15
+ },
16
+ },
17
+ header: "flex justify-between",
18
+ headerLeft: "flex items-center space-x-4 w-full",
19
+ headerLeftFallback: "flex flex-col w-full",
20
+ title: "",
21
+ description: "mt-1.5 text-base font-normal text-gray-500",
22
+ content: "",
23
+ divider: "",
24
+ footer: "flex justify-between",
25
+ footerMobileReverse: "flex flex-col-reverse space-y-reverse",
26
+ defaultVariants: {
27
+ padding: "md",
28
+ rounded: "md",
29
+ mobileFooterReverse: false,
30
+ },
31
+ };
@@ -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 UCard = "UCard";