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,68 @@
1
+ export default /*tw*/ {
2
+ wrapper: "relative w-full",
3
+ leftSlot: "flex items-center justify-center h-full w-11 absolute left-0",
4
+ rightSlot: "flex items-center justify-center h-full w-11 absolute right-0",
5
+ textareaWrapper: {
6
+ base: `
7
+ transition duration-100 ease-in-out focus-within:outline-none rounded-lg border
8
+ border-solid border-gray-300 focus-within:border-gray-500 focus-within:ring-4
9
+ focus-within:ring-gray-600/[.15] ring-0 hover:border-gray-400 pl-4 hover:focus-within:border-gray-500
10
+ cursor-text bg-white
11
+ `,
12
+ variants: {
13
+ error: {
14
+ true: `
15
+ border-red-300
16
+ hover:border-red-400 hover:focus-within:border-red-500
17
+ focus-within:border-red-500 focus-within:ring-red-100
18
+ `,
19
+ },
20
+ disabled: {
21
+ true: "cursor-not-allowed border-none focus-within:ring-0 bg-gray-100",
22
+ },
23
+ readonly: {
24
+ true: "ring-0 border-gray-300 focus-within:ring-0 focus-within:border-gray-300",
25
+ },
26
+ size: {
27
+ sm: "pb-2 pr-4 pt-6",
28
+ md: "pb-2.5 pr-4 pt-7",
29
+ lg: "pb-3 pr-4 pt-8",
30
+ },
31
+ },
32
+ compoundVariants: [
33
+ { labelPlacement: "top", size: "sm", class: "pt-2" },
34
+ { labelPlacement: "top", size: "md", class: "pt-2.5" },
35
+ { labelPlacement: "top", size: "lg", class: "pt-3" },
36
+ { labelPlacement: "topInside", label: false, class: "pt-2" },
37
+ { labelPlacement: "topInside", label: false, class: "pt-2.5" },
38
+ { labelPlacement: "topInside", label: false, class: "pt-3" },
39
+ ],
40
+ },
41
+ textarea: {
42
+ base: `
43
+ placeholder:font-normal placeholder:text-gray-400 shadow-none w-full
44
+ disabled:cursor-not-allowed font-normal text-gray-900 resize-none block
45
+ border-none focus:border-none focus:outline-none focus:ring-0 p-0
46
+ bg-transparent
47
+ `,
48
+ variants: {
49
+ size: {
50
+ sm: "text-xs placeholder:text-xs",
51
+ md: "text-base placeholder:text-base",
52
+ lg: "text-lg placeholder:text-lg",
53
+ },
54
+ },
55
+ },
56
+ label: "",
57
+ defaultVariants: {
58
+ size: "md",
59
+ type: "text",
60
+ inputMode: "text",
61
+ rows: "2",
62
+ labelAlign: "topInside",
63
+ error: false,
64
+ disabled: false,
65
+ readonly: false,
66
+ noAutocomplete: false,
67
+ },
68
+ };
@@ -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 UTextarea = "UTextarea";
@@ -0,0 +1,151 @@
1
+ import { getArgTypes, getSlotNames } from "../service.storybook";
2
+
3
+ import UTextarea from "../ui.form-textarea";
4
+ import UIcon from "../ui.image-icon";
5
+ import URow from "../ui.container-row";
6
+ import UGroup from "../ui.container-group";
7
+
8
+ export default {
9
+ id: "3070",
10
+ title: "Form Inputs & Controls / Textarea",
11
+ component: UTextarea,
12
+ args: {
13
+ label: "Label",
14
+ },
15
+ argTypes: {
16
+ ...getArgTypes(UTextarea.name),
17
+ modelValue: { control: { type: "text" } },
18
+ },
19
+ };
20
+
21
+ const DefaultTemplate = (args) => ({
22
+ components: { UTextarea },
23
+ setup() {
24
+ const slots = getSlotNames(UTextarea.name);
25
+
26
+ return { args, slots };
27
+ },
28
+ template: `
29
+ <UTextarea
30
+ v-bind="args"
31
+ >
32
+ <template v-for="(slot, index) of slots" :key="index" v-slot:[slot]>
33
+ <template v-if="args[slot]">{{ args[slot] }}</template>
34
+ </template>
35
+ </UTextarea>
36
+ `,
37
+ });
38
+
39
+ const SlotTemplate = (args) => ({
40
+ components: { UTextarea, UIcon },
41
+ setup() {
42
+ return { args };
43
+ },
44
+ template: `
45
+ <UTextarea
46
+ v-bind="args"
47
+ >
48
+ ${args.slotTemplate}
49
+ </UTextarea>
50
+ `,
51
+ });
52
+
53
+ const SizesTemplate = (args, { argTypes } = {}) => ({
54
+ components: { UTextarea, URow },
55
+ setup() {
56
+ return {
57
+ args,
58
+ sizes: argTypes.size.options,
59
+ };
60
+ },
61
+ template: `
62
+ <URow>
63
+ <div class="w-1/3" v-for="(size, index) in sizes" :key="index">
64
+ <UTextarea
65
+ v-bind="args"
66
+ :size="size"
67
+ />
68
+ </div>
69
+ </URow>
70
+ `,
71
+ });
72
+
73
+ const LabelPlacementTemplate = (args) => ({
74
+ components: { UTextarea, UGroup },
75
+ setup() {
76
+ return {
77
+ args,
78
+ };
79
+ },
80
+ template: `
81
+ <UGroup size="lg">
82
+ <UTextarea
83
+ v-bind="args"
84
+ label-align="top"
85
+ label="top"
86
+ />
87
+
88
+ <UTextarea
89
+ v-bind="args"
90
+ label-align="topInside"
91
+ label="topInside"
92
+ />
93
+ </UGroup>
94
+ `,
95
+ });
96
+
97
+ export const Default = DefaultTemplate.bind({});
98
+ Default.args = {};
99
+
100
+ export const labelPlacement = LabelPlacementTemplate.bind({});
101
+ labelPlacement.args = {};
102
+
103
+ export const placeholder = DefaultTemplate.bind({});
104
+ placeholder.args = { placeholder: "some placeholder text" };
105
+
106
+ export const disabled = DefaultTemplate.bind({});
107
+ disabled.args = { disabled: true };
108
+
109
+ export const error = DefaultTemplate.bind({});
110
+ error.args = { error: "some error text" };
111
+
112
+ export const description = DefaultTemplate.bind({});
113
+ description.args = { description: "some description text" };
114
+
115
+ export const rows1 = DefaultTemplate.bind({});
116
+ rows1.args = { rows: "1" };
117
+
118
+ export const readonly = DefaultTemplate.bind({});
119
+ readonly.args = { readonly: true, value: "some value for read" };
120
+
121
+ export const noAutocomplete = DefaultTemplate.bind({});
122
+ noAutocomplete.args = { noAutocomplete: true };
123
+
124
+ export const sizes = SizesTemplate.bind({});
125
+ sizes.args = {};
126
+
127
+ export const slotLeft = SlotTemplate.bind({});
128
+ slotLeft.args = {
129
+ slotTemplate: `
130
+ <template #left>
131
+ <UIcon
132
+ name="star"
133
+ color="black"
134
+ size="md"
135
+ />
136
+ </template>
137
+ `,
138
+ };
139
+
140
+ export const slotRight = SlotTemplate.bind({});
141
+ slotLeft.args = {
142
+ slotTemplate: `
143
+ <template #right>
144
+ <UIcon
145
+ name="star"
146
+ color="black"
147
+ size="md"
148
+ />
149
+ </template>
150
+ `,
151
+ };
@@ -0,0 +1,284 @@
1
+ <template>
2
+ <div v-bind="wrapperAttrs">
3
+ <ULabel
4
+ ref="labelComponent"
5
+ :for="id"
6
+ :label="label"
7
+ :error="error"
8
+ :description="description"
9
+ :size="size"
10
+ :disabled="disabled"
11
+ :data-cy="dataCy"
12
+ :align="labelAlign"
13
+ v-bind="labelAttrs"
14
+ >
15
+ <label
16
+ v-if="hasSlotContent($slots['left'])"
17
+ ref="leftSlotWrapper"
18
+ :for="id"
19
+ v-bind="leftSlotAttrs"
20
+ >
21
+ <!-- @slot Use it to add some component before text. -->
22
+ <slot name="left" />
23
+ </label>
24
+ <label ref="textareaWrapper" :for="id" v-bind="textareaWrapperAttrs">
25
+ <textarea
26
+ :id="id"
27
+ ref="textarea"
28
+ v-model="localValue"
29
+ :value="modelValue"
30
+ :placeholder="placeholder"
31
+ :type="type"
32
+ :readonly="readonly"
33
+ :disabled="disabled"
34
+ :rows="rows"
35
+ :inputmode="inputMode"
36
+ :data-cy="dataCy"
37
+ v-bind="textareaAttrs"
38
+ @focus="onFocus"
39
+ @blur="onBlur"
40
+ @change="onChange"
41
+ @mouseleave="onMouseleave"
42
+ @mousedown="onMousedown"
43
+ @click="onClick"
44
+ />
45
+ </label>
46
+ <label v-if="hasSlotContent($slots['right'])" :for="id" v-bind="rightSlotAttrs">
47
+ <!-- @slot Use it to add some component after text. -->
48
+ <slot name="right" />
49
+ </label>
50
+ </ULabel>
51
+ </div>
52
+ </template>
53
+
54
+ <script setup>
55
+ import { computed, onMounted, ref, useSlots } from "vue";
56
+
57
+ import UIService from "../service.ui";
58
+ import { getRandomId } from "../service.ui";
59
+
60
+ import { UTextarea } from "./constants";
61
+ import defaultConfig from "./configs/default.config";
62
+ import { useAttrs } from "./composables/attrs.composable";
63
+
64
+ /* Should be a string for correct web-types gen */
65
+ defineOptions({ name: "UTextarea", inheritAttrs: false });
66
+
67
+ const props = defineProps({
68
+ /**
69
+ * Set input size.
70
+ * @values sm, md, lg
71
+ */
72
+ size: {
73
+ type: String,
74
+ default: UIService.get(defaultConfig, UTextarea).default.size,
75
+ },
76
+
77
+ /**
78
+ * Set component value.
79
+ */
80
+ modelValue: {
81
+ type: String,
82
+ default: "",
83
+ },
84
+
85
+ /**
86
+ * Set component placeholder.
87
+ */
88
+ placeholder: {
89
+ type: String,
90
+ default: "",
91
+ },
92
+
93
+ /**
94
+ * Set input label.
95
+ */
96
+ label: {
97
+ type: String,
98
+ default: "",
99
+ },
100
+
101
+ /**
102
+ * Input label place (above the input box or inside of it).
103
+ * @values topInside, top
104
+ */
105
+ labelAlign: {
106
+ type: String,
107
+ default: UIService.get(defaultConfig, UTextarea).default.labelAlign,
108
+ },
109
+
110
+ /**
111
+ * Set description for component.
112
+ */
113
+ description: {
114
+ type: String,
115
+ default: "",
116
+ },
117
+
118
+ /**
119
+ * Make textarea read only.
120
+ */
121
+ readonly: {
122
+ type: Boolean,
123
+ default: UIService.get(defaultConfig, UTextarea).default.readonly,
124
+ },
125
+
126
+ /**
127
+ * Make input disabled.
128
+ */
129
+ disabled: {
130
+ type: Boolean,
131
+ default: UIService.get(defaultConfig, UTextarea).default.disabled,
132
+ },
133
+
134
+ /**
135
+ * Set input type.
136
+ * @values text, number, email, tel, password, url
137
+ */
138
+ type: {
139
+ type: String,
140
+ default: UIService.get(defaultConfig, UTextarea).default.type,
141
+ },
142
+
143
+ /**
144
+ * Set proper keyboard on mobile devices.
145
+ * @values text, none, decimal, tel, numeric, search, email, url,
146
+ */
147
+ inputMode: {
148
+ type: String,
149
+ default: UIService.get(defaultConfig, UTextarea).default.inputMode,
150
+ },
151
+
152
+ /**
153
+ * Disable browsers autocomplete.
154
+ */
155
+ noAutocomplete: {
156
+ type: Boolean,
157
+ default: UIService.get(defaultConfig, UTextarea).default.noAutocomplete,
158
+ },
159
+
160
+ /**
161
+ * Set error message.
162
+ */
163
+ error: {
164
+ type: String,
165
+ default: "",
166
+ },
167
+
168
+ /**
169
+ * Set number of visible rows.
170
+ */
171
+ rows: {
172
+ type: String,
173
+ default: UIService.get(defaultConfig, UTextarea).default.rows,
174
+ },
175
+
176
+ /**
177
+ * Generates unique element id.
178
+ * @ignore
179
+ */
180
+ id: {
181
+ type: String,
182
+ default: () => getRandomId(),
183
+ },
184
+
185
+ /**
186
+ * Sets component ui config object.
187
+ */
188
+ config: {
189
+ type: Object,
190
+ default: () => ({}),
191
+ },
192
+
193
+ /**
194
+ * Sets data-cy attribute for automated testing.
195
+ */
196
+ dataCy: {
197
+ type: String,
198
+ default: "",
199
+ },
200
+ });
201
+
202
+ const emit = defineEmits(["change", "click", "focus", "blur", "update:modelValue", "mousedown"]);
203
+
204
+ const slots = useSlots();
205
+
206
+ const {
207
+ textareaAttrs,
208
+ labelAttrs,
209
+ textareaWrapperAttrs,
210
+ leftSlotAttrs,
211
+ rightSlotAttrs,
212
+ wrapperAttrs,
213
+ hasSlotContent,
214
+ } = useAttrs(props);
215
+
216
+ const textarea = ref(null);
217
+ const labelComponent = ref(null);
218
+ const leftSlotWrapper = ref(null);
219
+ const textareaWrapper = ref(null);
220
+
221
+ const localValue = computed({
222
+ get() {
223
+ return props.modelValue;
224
+ },
225
+ set(value) {
226
+ emit("update:modelValue", value);
227
+ },
228
+ });
229
+
230
+ defineExpose({ textarea });
231
+
232
+ onMounted(() => toggleReadonly(true));
233
+
234
+ function onChange() {
235
+ emit("change");
236
+ }
237
+
238
+ function onClick(event) {
239
+ toggleReadonly(false);
240
+
241
+ emit("click", event);
242
+ }
243
+
244
+ function onFocus() {
245
+ toggleReadonly(false);
246
+
247
+ emit("focus");
248
+ }
249
+
250
+ function onBlur() {
251
+ toggleReadonly(true);
252
+
253
+ emit("blur");
254
+ }
255
+
256
+ function onMouseleave() {
257
+ toggleReadonly(true);
258
+ }
259
+
260
+ function onMousedown() {
261
+ emit("mousedown");
262
+ }
263
+
264
+ function toggleReadonly(hasReadonly) {
265
+ if (props.noAutocomplete && !props.readonly) {
266
+ const textarea = document.getElementById(props.id);
267
+
268
+ hasReadonly
269
+ ? textarea.setAttribute("readonly", "readonly")
270
+ : textarea.removeAttribute("readonly");
271
+ }
272
+ }
273
+
274
+ function setLabelPosition() {
275
+ if (props.labelAlign === "top" || !hasSlotContent(slots["left"])) return;
276
+
277
+ const leftSlotWidth = leftSlotWrapper.value.getBoundingClientRect().width;
278
+
279
+ labelComponent.value.labelElement.style.left = `${leftSlotWidth}px`;
280
+ textareaWrapper.value.style.paddingLeft = `${leftSlotWidth}px`;
281
+ }
282
+
283
+ onMounted(() => setLabelPosition());
284
+ </script>
@@ -0,0 +1,34 @@
1
+ import useUI from "../../composable.ui";
2
+ import { cva } from "../../service.ui";
3
+
4
+ import defaultConfig from "../configs/default.config";
5
+ import { computed } from "vue";
6
+
7
+ export function useAttrs(props) {
8
+ const { config, getAttrs, setColor } = useUI(defaultConfig, () => props.config);
9
+ const { avatar } = config.value;
10
+
11
+ const cvaAvatar = cva({
12
+ base: avatar.base,
13
+ variants: avatar.variants,
14
+ compoundVariants: avatar.compoundVariants,
15
+ });
16
+
17
+ const avatarClasses = computed(() =>
18
+ setColor(
19
+ cvaAvatar({
20
+ size: props.size,
21
+ color: props.color,
22
+ rounded: props.rounded,
23
+ bordered: props.bordered,
24
+ }),
25
+ props.color,
26
+ ),
27
+ );
28
+
29
+ const avatarAttrs = getAttrs("avatar", { classes: avatarClasses });
30
+
31
+ return {
32
+ avatarAttrs,
33
+ };
34
+ }
@@ -0,0 +1,42 @@
1
+ export default /*tw*/ {
2
+ avatar: {
3
+ base: `
4
+ flex h-full items-center justify-center font-medium
5
+ bg-contain bg-center bg-no-repeat bg-{color}-100 text-{color}-600`,
6
+ variants: {
7
+ bordered: {
8
+ true: "border border-{color}-200",
9
+ },
10
+ size: {
11
+ "2xs": "size-4 text-2xs",
12
+ xs: "size-5 text-2xs",
13
+ sm: "size-6 text-xs",
14
+ md: "size-8 text-sm",
15
+ lg: "size-10 text-lg",
16
+ xl: "size-12 text-2xl",
17
+ "2xl": "size-14 text-3xl",
18
+ },
19
+ rounded: {
20
+ sm: "rounded",
21
+ md: "rounded-lg",
22
+ lg: "rounded-xl",
23
+ full: "rounded-full",
24
+ },
25
+ color: {
26
+ white: "bg-white text-gray-900",
27
+ grayscale: "bg-gray-100 text-gray-900",
28
+ },
29
+ },
30
+ },
31
+ defaultVariants: {
32
+ color: "grayscale",
33
+ size: "md",
34
+ rounded: "md",
35
+ bordered: false,
36
+ },
37
+ safelist: (colors) => [
38
+ { pattern: `bg-(${colors})-100` },
39
+ { pattern: `text-(${colors})-600` },
40
+ { pattern: `border-(${colors})-200` },
41
+ ],
42
+ };
@@ -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 UAvatar = "UAvatar";
@@ -0,0 +1,107 @@
1
+ import { getArgTypes } from "../service.storybook";
2
+
3
+ import UAvatar from "../ui.image-avatar";
4
+ import URow from "../ui.container-row";
5
+
6
+ export default {
7
+ id: "6030",
8
+ title: "Images & Icons / Avatar",
9
+ component: UAvatar,
10
+ argTypes: {
11
+ ...getArgTypes(UAvatar.name),
12
+ },
13
+ };
14
+
15
+ const DefaultTemplate = (args) => ({
16
+ components: { UAvatar },
17
+ setup() {
18
+ return { args };
19
+ },
20
+ template: `
21
+ <UAvatar v-bind="args" />
22
+ `,
23
+ });
24
+
25
+ const SizesTemplate = (args, { argTypes } = {}) => ({
26
+ components: { UAvatar, URow },
27
+ setup() {
28
+ return {
29
+ args,
30
+ sizes: argTypes.size.options,
31
+ };
32
+ },
33
+ template: `
34
+ <URow>
35
+ <UAvatar
36
+ v-for="(size, index) in sizes"
37
+ v-bind="args"
38
+ :size="size"
39
+ :key="index"
40
+ />
41
+ </URow>
42
+ `,
43
+ });
44
+
45
+ const ColorsTemplate = (args, { argTypes } = {}) => ({
46
+ components: { UAvatar, URow },
47
+ setup() {
48
+ return {
49
+ args,
50
+ colors: argTypes.color.options,
51
+ };
52
+ },
53
+ template: `
54
+ <URow>
55
+ <UAvatar
56
+ v-for="(color, index) in colors"
57
+ v-bind="args"
58
+ :color="color"
59
+ :key="index"
60
+ />
61
+ </URow>
62
+ `,
63
+ created() {
64
+ this.mxArgTypes = argTypes;
65
+ },
66
+ });
67
+
68
+ const RoundedTemplate = (args, { argTypes } = {}) => ({
69
+ components: { UAvatar, URow },
70
+ setup() {
71
+ return {
72
+ args,
73
+ roundedValues: argTypes.rounded.options,
74
+ };
75
+ },
76
+ template: `
77
+ <URow>
78
+ <UAvatar
79
+ v-for="(rounded, index) in roundedValues"
80
+ v-bind="args"
81
+ :rounded="rounded"
82
+ :key="index"
83
+ />
84
+ </URow>
85
+ `,
86
+ });
87
+
88
+ export const Default = DefaultTemplate.bind({});
89
+ Default.args = {};
90
+
91
+ export const sizes = SizesTemplate.bind({});
92
+ sizes.args = {};
93
+
94
+ export const colors = ColorsTemplate.bind({});
95
+ colors.args = { userName: "Name" };
96
+
97
+ export const rounded = RoundedTemplate.bind({});
98
+ rounded.args = { userName: "Name", color: "orange" };
99
+
100
+ export const bordered = ColorsTemplate.bind({});
101
+ bordered.args = { userName: "Name", bordered: true };
102
+
103
+ export const roundedFull = DefaultTemplate.bind({});
104
+ roundedFull.args = { userName: "Name", rounded: "full" };
105
+
106
+ export const userName = DefaultTemplate.bind({});
107
+ userName.args = { userName: "Name Surname" };