vueless 0.0.2 → 0.0.4

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 (666) hide show
  1. package/.browserslistrc +4 -0
  2. package/.editorconfig +12 -0
  3. package/.eslintignore +7 -0
  4. package/.eslintrc.js +59 -0
  5. package/.storybook/configs/main.config.js +20 -0
  6. package/.storybook/decorators/vue3SourceDecorator.js +119 -0
  7. package/.storybook/main.js +20 -0
  8. package/.storybook/manager-head.html +10 -0
  9. package/.storybook/manager.js +6 -0
  10. package/.storybook/preview-head.html +72 -0
  11. package/.storybook/preview.js +50 -0
  12. package/.storybook/themes/vueless.docs.theme.js +41 -0
  13. package/.storybook/themes/vueless.theme.js +45 -0
  14. package/{library.web-types-gen → .web-types-gen}/lib/build.js +35 -9
  15. package/{library.web-types-gen → .web-types-gen}/lib/config.js +9 -3
  16. package/LICENSE +21 -0
  17. package/README.md +174 -0
  18. package/index.pcss +3 -0
  19. package/package.json +56 -6
  20. package/postcss.config.js +9 -0
  21. package/public/images/logo.png +0 -0
  22. package/readme/README.md +8 -0
  23. package/{_readme → readme}/UNotify.md +1 -1
  24. package/{_readme → readme}/UTopLoader.md +2 -2
  25. package/readme/customization.md +347 -0
  26. package/readme/installation.md +139 -0
  27. package/readme/storybook-pages/Customisation.mdx +6 -0
  28. package/readme/storybook-pages/Installation.mdx +7 -0
  29. package/src/composable.ui/index.js +395 -0
  30. package/src/service.storybook/index.js +0 -0
  31. package/src/service.tailwind/index.js +114 -0
  32. package/{service.ui → src/service.ui}/index.js +70 -51
  33. package/src/ui.button/Docs.mdx +0 -0
  34. package/src/ui.button/composables/attrs.composable.js +0 -0
  35. package/src/ui.button/configs/default.config.js +0 -0
  36. package/src/ui.button/constants/index.js +0 -0
  37. package/src/ui.button/index.stories.js +0 -0
  38. package/src/ui.button/index.vue +0 -0
  39. package/src/ui.button-link/Docs.mdx +0 -0
  40. package/src/ui.button-link/composables/attrs.composable.js +0 -0
  41. package/src/ui.button-link/configs/default.config.js +0 -0
  42. package/src/ui.button-link/constants/index.js +0 -0
  43. package/src/ui.button-link/index.stories.js +0 -0
  44. package/src/ui.button-link/index.vue +0 -0
  45. package/src/ui.button-toggle/Docs.mdx +0 -0
  46. package/src/ui.button-toggle/composables/attrs.composable.js +0 -0
  47. package/src/ui.button-toggle/configs/default.config.js +0 -0
  48. package/src/ui.button-toggle/constants/index.js +0 -0
  49. package/src/ui.button-toggle/index.stories.js +0 -0
  50. package/src/ui.button-toggle/index.vue +0 -0
  51. package/src/ui.button-toggle-item/Docs.mdx +0 -0
  52. package/src/ui.button-toggle-item/composables/attrs.composable.js +0 -0
  53. package/src/ui.button-toggle-item/configs/default.config.js +0 -0
  54. package/src/ui.button-toggle-item/constants/index.js +0 -0
  55. package/src/ui.button-toggle-item/index.stories.js +0 -0
  56. package/src/ui.button-toggle-item/index.vue +0 -0
  57. package/src/ui.container-accordion/composables/attrs.composable.js +0 -0
  58. package/src/ui.container-accordion/configs/default.config.js +0 -0
  59. package/src/ui.container-accordion/constants/index.js +0 -0
  60. package/src/ui.container-accordion/index.stories.js +0 -0
  61. package/src/ui.container-accordion/index.vue +0 -0
  62. package/src/ui.container-card/Docs.mdx +0 -0
  63. package/src/ui.container-card/composable/attrs.composable.js +0 -0
  64. package/src/ui.container-card/configs/default.config.js +0 -0
  65. package/src/ui.container-card/constants/index.js +0 -0
  66. package/src/ui.container-card/index.stories.js +0 -0
  67. package/src/ui.container-card/index.vue +0 -0
  68. package/src/ui.container-divider/Docs.mdx +0 -0
  69. package/src/ui.container-divider/composables/attrs.composable.js +65 -0
  70. package/src/ui.container-divider/configs/default.config.js +0 -0
  71. package/src/ui.container-divider/constants/index.js +5 -0
  72. package/src/ui.container-divider/index.stories.js +0 -0
  73. package/src/ui.container-divider/index.vue +138 -0
  74. package/src/ui.container-group/Docs.mdx +0 -0
  75. package/src/ui.container-group/composables/attrs.composable.js +0 -0
  76. package/src/ui.container-group/configs/default.config.js +0 -0
  77. package/src/ui.container-group/constants/index.js +0 -0
  78. package/src/ui.container-group/index.stories.js +0 -0
  79. package/src/ui.container-group/index.vue +0 -0
  80. package/src/ui.container-groups/Docs.mdx +0 -0
  81. package/src/ui.container-groups/composables/attrs.composable.js +0 -0
  82. package/src/ui.container-groups/configs/default.config.js +0 -0
  83. package/src/ui.container-groups/index.stories.js +0 -0
  84. package/src/ui.container-groups/index.vue +0 -0
  85. package/src/ui.container-modal/Docs.mdx +0 -0
  86. package/src/ui.container-modal/composables/attrs.composable.js +0 -0
  87. package/src/ui.container-modal/configs/default.config.js +0 -0
  88. package/src/ui.container-modal/constants/index.js +0 -0
  89. package/src/ui.container-modal/index.stories.js +0 -0
  90. package/src/ui.container-modal/index.vue +0 -0
  91. package/src/ui.container-modal-confirm/Docs.mdx +0 -0
  92. package/src/ui.container-modal-confirm/composable/attrs.composable.js +0 -0
  93. package/src/ui.container-modal-confirm/configs/default.config.js +0 -0
  94. package/src/ui.container-modal-confirm/constants/index.js +0 -0
  95. package/src/ui.container-modal-confirm/index.stories.js +0 -0
  96. package/src/ui.container-modal-confirm/index.vue +0 -0
  97. package/src/ui.container-page/Docs.mdx +0 -0
  98. package/src/ui.container-page/composables/attrs.composable.js +0 -0
  99. package/src/ui.container-page/configs/default.config.js +0 -0
  100. package/src/ui.container-page/constants/index.js +0 -0
  101. package/src/ui.container-page/index.stories.js +0 -0
  102. package/src/ui.container-page/index.vue +0 -0
  103. package/src/ui.container-row/Docs.mdx +0 -0
  104. package/src/ui.container-row/composables/attrs.composable.js +0 -0
  105. package/src/ui.container-row/configs/default.config.js +0 -0
  106. package/src/ui.container-row/constants/index.js +0 -0
  107. package/src/ui.container-row/index.stories.js +0 -0
  108. package/src/ui.container-row/index.vue +0 -0
  109. package/src/ui.data-list/composables/attrs.composable.js +0 -0
  110. package/src/ui.data-list/configs/default.config.js +0 -0
  111. package/src/ui.data-list/constants/index.js +0 -0
  112. package/src/ui.data-list/index.stories.js +0 -0
  113. package/src/ui.data-list/index.vue +0 -0
  114. package/src/ui.data-table/Docs.mdx +0 -0
  115. package/src/ui.data-table/composables/attrs.composable.js +188 -0
  116. package/src/ui.data-table/configs/default.config.js +88 -0
  117. package/src/ui.data-table/constants/index.js +5 -0
  118. package/{ui.data-table → src/ui.data-table}/index.stories.js +76 -46
  119. package/src/ui.data-table/index.vue +725 -0
  120. package/src/ui.data-table/services/table.service.js +15 -0
  121. package/src/ui.data-table-cell/composables/attrs.composable.js +24 -0
  122. package/src/ui.data-table-cell/configs/default.config.js +0 -0
  123. package/src/ui.data-table-cell/constants/index.js +5 -0
  124. package/src/ui.data-table-cell/index.vue +44 -0
  125. package/src/ui.dropdown-badge/Docs.mdx +0 -0
  126. package/src/ui.dropdown-badge/composables/attrs.composable.js +0 -0
  127. package/src/ui.dropdown-badge/configs/default.config.js +0 -0
  128. package/src/ui.dropdown-badge/constants/index.js +0 -0
  129. package/src/ui.dropdown-badge/index.stories.js +0 -0
  130. package/src/ui.dropdown-badge/index.vue +0 -0
  131. package/src/ui.dropdown-button/Docs.mdx +0 -0
  132. package/src/ui.dropdown-button/composables/attrs.composable.js +0 -0
  133. package/src/ui.dropdown-button/configs/default.config.js +0 -0
  134. package/src/ui.dropdown-button/constants/index.js +0 -0
  135. package/src/ui.dropdown-button/index.stories.js +0 -0
  136. package/src/ui.dropdown-button/index.vue +0 -0
  137. package/src/ui.dropdown-item/Docs.mdx +0 -0
  138. package/src/ui.dropdown-item/composables/attrs.composable.js +0 -0
  139. package/src/ui.dropdown-item/configs/default.config.js +0 -0
  140. package/src/ui.dropdown-item/index.stories.js +0 -0
  141. package/src/ui.dropdown-item/index.vue +0 -0
  142. package/src/ui.dropdown-link/Docs.mdx +0 -0
  143. package/src/ui.dropdown-link/composables/attrs.composable.js +0 -0
  144. package/src/ui.dropdown-link/configs/default.config.js +0 -0
  145. package/src/ui.dropdown-link/constants/index.js +0 -0
  146. package/src/ui.dropdown-link/index.stories.js +0 -0
  147. package/src/ui.dropdown-link/index.vue +0 -0
  148. package/src/ui.dropdown-list/Docs.mdx +0 -0
  149. package/src/ui.dropdown-list/composables/attrs.composable.js +0 -0
  150. package/src/ui.dropdown-list/composables/usePointer.js +0 -0
  151. package/src/ui.dropdown-list/configs/default.config.js +0 -0
  152. package/src/ui.dropdown-list/constants/index.js +0 -0
  153. package/src/ui.dropdown-list/index.stories.js +0 -0
  154. package/src/ui.dropdown-list/index.vue +0 -0
  155. package/src/ui.form-calendar/Docs.mdx +0 -0
  156. package/src/ui.form-calendar/components/DayView.vue +0 -0
  157. package/src/ui.form-calendar/components/MonthView.vue +0 -0
  158. package/src/ui.form-calendar/components/YearView.vue +0 -0
  159. package/src/ui.form-calendar/composables/attrs.composable.js +106 -0
  160. package/src/ui.form-calendar/configs/default.config.js +125 -0
  161. package/src/ui.form-calendar/constants/index.js +0 -0
  162. package/src/ui.form-calendar/index.stories.js +0 -0
  163. package/src/ui.form-calendar/index.vue +0 -0
  164. package/src/ui.form-calendar/services/calendar.service.js +0 -0
  165. package/src/ui.form-calendar/services/date.service.js +282 -0
  166. package/src/ui.form-calendar/services/formatting.service.js +0 -0
  167. package/src/ui.form-checkbox/Docs.mdx +0 -0
  168. package/src/ui.form-checkbox/composables/attrs.composable.js +57 -0
  169. package/src/ui.form-checkbox/configs/default.config.js +0 -0
  170. package/src/ui.form-checkbox/constants/index.js +5 -0
  171. package/src/ui.form-checkbox/index.stories.js +0 -0
  172. package/src/ui.form-checkbox/index.vue +241 -0
  173. package/src/ui.form-checkbox-group/Docs.mdx +0 -0
  174. package/src/ui.form-checkbox-group/composables/attrs.composable.js +0 -0
  175. package/src/ui.form-checkbox-group/configs/default.config.js +0 -0
  176. package/src/ui.form-checkbox-group/constants/index.js +0 -0
  177. package/src/ui.form-checkbox-group/index.stories.js +0 -0
  178. package/src/ui.form-checkbox-group/index.vue +0 -0
  179. package/src/ui.form-checkbox-multi-state/Docs.mdx +0 -0
  180. package/src/ui.form-checkbox-multi-state/composables/attrs.composable.js +0 -0
  181. package/src/ui.form-checkbox-multi-state/configs/default.config.js +0 -0
  182. package/src/ui.form-checkbox-multi-state/constants/index.js +0 -0
  183. package/src/ui.form-checkbox-multi-state/index.stories.js +0 -0
  184. package/src/ui.form-checkbox-multi-state/index.vue +0 -0
  185. package/src/ui.form-color-picker/composables/attrs.composable.js +0 -0
  186. package/src/ui.form-color-picker/configs/default.config.js +0 -0
  187. package/src/ui.form-color-picker/constants/index.js +0 -0
  188. package/src/ui.form-color-picker/index.stories.js +0 -0
  189. package/src/ui.form-color-picker/index.vue +0 -0
  190. package/src/ui.form-date-picker/Docs.mdx +0 -0
  191. package/src/ui.form-date-picker/composables/attrs.composable.js +0 -0
  192. package/src/ui.form-date-picker/configs/default.config.js +0 -0
  193. package/src/ui.form-date-picker/constants/index.js +0 -0
  194. package/src/ui.form-date-picker/index.stories.js +0 -0
  195. package/src/ui.form-date-picker/index.vue +0 -0
  196. package/src/ui.form-date-picker-range/composables/attrs.composable.js +100 -0
  197. package/src/ui.form-date-picker-range/configs/default.config.js +172 -0
  198. package/src/ui.form-date-picker-range/constants/index.js +0 -0
  199. package/src/ui.form-date-picker-range/index.stories.js +0 -0
  200. package/src/ui.form-date-picker-range/index.vue +0 -0
  201. package/src/ui.form-date-picker-range/services/dateRange.service.js +0 -0
  202. package/src/ui.form-date-picker-range/services/validation.service.js +22 -0
  203. package/src/ui.form-input/Docs.mdx +0 -0
  204. package/src/ui.form-input/assets/fonts/text-security-disc.woff +0 -0
  205. package/src/ui.form-input/composables/attrs.composable.js +0 -0
  206. package/src/ui.form-input/configs/default.config.js +0 -0
  207. package/src/ui.form-input/constants/index.js +0 -0
  208. package/src/ui.form-input/index.stories.js +0 -0
  209. package/src/ui.form-input/index.vue +0 -0
  210. package/src/ui.form-input-file/composables/attrs.composable.js +0 -0
  211. package/src/ui.form-input-file/configs/default.config.js +0 -0
  212. package/src/ui.form-input-file/constants/index.js +0 -0
  213. package/src/ui.form-input-file/index.stories.js +0 -0
  214. package/src/ui.form-input-file/index.vue +0 -0
  215. package/src/ui.form-input-money/Docs.mdx +0 -0
  216. package/src/ui.form-input-money/composables/attrs.composable.js +0 -0
  217. package/src/ui.form-input-money/composables/useFormatCurrency.js +0 -0
  218. package/src/ui.form-input-money/configs/default.config.js +0 -0
  219. package/src/ui.form-input-money/constants/index.js +0 -0
  220. package/src/ui.form-input-money/index.stories.js +0 -0
  221. package/src/ui.form-input-money/index.vue +0 -0
  222. package/src/ui.form-input-money/services/format.service.js +0 -0
  223. package/src/ui.form-input-number/Docs.mdx +0 -0
  224. package/src/ui.form-input-number/composables/attrs.composable.js +0 -0
  225. package/src/ui.form-input-number/configs/default.config.js +0 -0
  226. package/src/ui.form-input-number/constants/index.js +0 -0
  227. package/src/ui.form-input-number/index.stories.js +0 -0
  228. package/src/ui.form-input-number/index.vue +0 -0
  229. package/src/ui.form-input-rating/composables/attrs.composable.js +0 -0
  230. package/src/ui.form-input-rating/configs/default.config.js +25 -0
  231. package/src/ui.form-input-rating/constants/index.js +0 -0
  232. package/{ui.form-input-rating → src/ui.form-input-rating}/index.stories.js +6 -5
  233. package/src/ui.form-input-rating/index.vue +185 -0
  234. package/src/ui.form-input-search/composables/attrs.composable.js +0 -0
  235. package/src/ui.form-input-search/configs/default.config.js +0 -0
  236. package/src/ui.form-input-search/constants/index.js +0 -0
  237. package/src/ui.form-input-search/index.stories.js +0 -0
  238. package/src/ui.form-input-search/index.vue +0 -0
  239. package/src/ui.form-label/Docs.mdx +0 -0
  240. package/src/ui.form-label/composables/attrs.composable.js +0 -0
  241. package/src/ui.form-label/configs/default.config.js +0 -0
  242. package/src/ui.form-label/constants/index.js +0 -0
  243. package/src/ui.form-label/index.stories.js +0 -0
  244. package/src/ui.form-label/index.vue +0 -0
  245. package/src/ui.form-radio/Docs.mdx +0 -0
  246. package/src/ui.form-radio/composables/attrs.composable.js +0 -0
  247. package/src/ui.form-radio/configs/default.config.js +0 -0
  248. package/src/ui.form-radio/constants/index.js +0 -0
  249. package/src/ui.form-radio/index.stories.js +0 -0
  250. package/src/ui.form-radio/index.vue +0 -0
  251. package/src/ui.form-radio-card/Docs.mdx +0 -0
  252. package/src/ui.form-radio-card/composables/attrs.composable.js +35 -0
  253. package/src/ui.form-radio-card/configs/default.config.js +25 -0
  254. package/src/ui.form-radio-card/constants/index.js +0 -0
  255. package/src/ui.form-radio-card/index.stories.js +0 -0
  256. package/src/ui.form-radio-card/index.vue +159 -0
  257. package/src/ui.form-radio-card/services/variant.service.js +0 -0
  258. package/src/ui.form-radio-group/Docs.mdx +0 -0
  259. package/src/ui.form-radio-group/composables/attrs.composable.js +0 -0
  260. package/src/ui.form-radio-group/configs/default.config.js +0 -0
  261. package/src/ui.form-radio-group/constants/index.js +0 -0
  262. package/src/ui.form-radio-group/index.stories.js +0 -0
  263. package/src/ui.form-radio-group/index.vue +0 -0
  264. package/src/ui.form-select/Docs.mdx +0 -0
  265. package/src/ui.form-select/composables/attrs.composable.js +0 -0
  266. package/src/ui.form-select/configs/default.config.js +0 -0
  267. package/src/ui.form-select/constants/index.js +0 -0
  268. package/src/ui.form-select/index.stories.js +0 -0
  269. package/src/ui.form-select/index.vue +0 -0
  270. package/src/ui.form-select/services/select.service.js +0 -0
  271. package/src/ui.form-switch/composables/attrs.composable.js +0 -0
  272. package/src/ui.form-switch/configs/default.config.js +0 -0
  273. package/src/ui.form-switch/constants/index.js +0 -0
  274. package/src/ui.form-switch/index.stories.js +0 -0
  275. package/src/ui.form-switch/index.vue +0 -0
  276. package/src/ui.form-switch/services/variant.service.js +0 -0
  277. package/src/ui.form-textarea/Docs.mdx +0 -0
  278. package/src/ui.form-textarea/composables/attrs.composable.js +0 -0
  279. package/src/ui.form-textarea/configs/default.config.js +0 -0
  280. package/src/ui.form-textarea/constants/index.js +0 -0
  281. package/src/ui.form-textarea/index.stories.js +0 -0
  282. package/src/ui.form-textarea/index.vue +0 -0
  283. package/src/ui.image-avatar/composables/attrs.composable.js +0 -0
  284. package/src/ui.image-avatar/configs/default.config.js +0 -0
  285. package/src/ui.image-avatar/constants/index.js +0 -0
  286. package/src/ui.image-avatar/default-avatar.png +0 -0
  287. package/src/ui.image-avatar/index.stories.js +0 -0
  288. package/src/ui.image-avatar/index.vue +0 -0
  289. package/src/ui.image-icon/Docs.mdx +0 -0
  290. package/src/ui.image-icon/composables/attrs.composable.js +65 -0
  291. package/src/ui.image-icon/configs/default.config.js +90 -0
  292. package/src/ui.image-icon/constants/index.js +5 -0
  293. package/src/ui.image-icon/index.stories.js +0 -0
  294. package/src/ui.image-icon/index.vue +223 -0
  295. package/src/ui.image-logo/composables/attrs.composable.js +41 -0
  296. package/src/ui.image-logo/configs/default.config.js +0 -0
  297. package/src/ui.image-logo/constants/index.js +5 -0
  298. package/src/ui.image-logo/index.stories.js +0 -0
  299. package/src/ui.image-logo/index.vue +98 -0
  300. package/{layout-ui.loader → src/ui.loader-rendering}/index.vue +16 -5
  301. package/src/ui.loader-top/components/TopProgress.vue +0 -0
  302. package/{layout-ui.loader-top → src/ui.loader-top}/index.vue +20 -17
  303. package/{layout-ui.loader-top → src/ui.loader-top}/store/index.js +11 -7
  304. package/src/ui.navigation-pagination/composables/attrs.composable.js +0 -0
  305. package/src/ui.navigation-pagination/configs/default.config.js +0 -0
  306. package/src/ui.navigation-pagination/constants/index.js +0 -0
  307. package/src/ui.navigation-pagination/index.stories.js +0 -0
  308. package/src/ui.navigation-pagination/index.vue +0 -0
  309. package/src/ui.navigation-stepper/composables/attrs.composable.js +0 -0
  310. package/src/ui.navigation-stepper/configs/default.config.js +0 -0
  311. package/src/ui.navigation-stepper/constants/index.js +0 -0
  312. package/src/ui.navigation-stepper/index.stories.js +0 -0
  313. package/src/ui.navigation-stepper/index.vue +0 -0
  314. package/src/ui.navigation-tab/composables/attrs.composable.js +0 -0
  315. package/src/ui.navigation-tab/configs/default.config.js +0 -0
  316. package/src/ui.navigation-tab/constants/index.js +0 -0
  317. package/src/ui.navigation-tab/index.stories.js +0 -0
  318. package/src/ui.navigation-tab/index.vue +0 -0
  319. package/src/ui.navigation-tabs/composables/attrs.composable.js +0 -0
  320. package/src/ui.navigation-tabs/configs/default.config.js +0 -0
  321. package/src/ui.navigation-tabs/constants/index.js +0 -0
  322. package/src/ui.navigation-tabs/index.stories.js +0 -0
  323. package/src/ui.navigation-tabs/index.vue +0 -0
  324. package/src/ui.notify/index.stories.js +0 -0
  325. package/{layout-ui.notify → src/ui.notify}/index.vue +14 -20
  326. package/{service.notify → src/ui.notify/services}/index.js +1 -1
  327. package/src/ui.other-dot/composables/attrs.composable.js +0 -0
  328. package/src/ui.other-dot/configs/default.config.js +0 -0
  329. package/src/ui.other-dot/constants/index.js +0 -0
  330. package/src/ui.other-dot/index.stories.js +0 -0
  331. package/src/ui.other-dot/index.vue +0 -0
  332. package/src/ui.other-loader/composables/attrs.composable.js +0 -0
  333. package/src/ui.other-loader/configs/default.config.js +0 -0
  334. package/src/ui.other-loader/constants/index.js +0 -0
  335. package/src/ui.other-loader/index.stories.js +0 -0
  336. package/src/ui.other-loader/index.vue +0 -0
  337. package/src/ui.text-alert/composables/attrs.composable.js +0 -0
  338. package/src/ui.text-alert/configs/default.config.js +0 -0
  339. package/src/ui.text-alert/constatns/index.js +0 -0
  340. package/src/ui.text-alert/index.stories.js +0 -0
  341. package/src/ui.text-alert/index.vue +0 -0
  342. package/src/ui.text-badge/Docs.mdx +0 -0
  343. package/src/ui.text-badge/composables/attrs.composable.js +0 -0
  344. package/src/ui.text-badge/configs/default.config.js +0 -0
  345. package/src/ui.text-badge/constants/index.js +0 -0
  346. package/src/ui.text-badge/index.stories.js +0 -0
  347. package/src/ui.text-badge/index.vue +0 -0
  348. package/src/ui.text-block/composables/attrs.composable.js +0 -0
  349. package/src/ui.text-block/configs/default.config.js +0 -0
  350. package/src/ui.text-block/constatns/index.js +0 -0
  351. package/src/ui.text-block/index.stories.js +0 -0
  352. package/src/ui.text-block/index.vue +0 -0
  353. package/src/ui.text-empty/Docs.mdx +0 -0
  354. package/src/ui.text-empty/composables/attrs.composable.js +43 -0
  355. package/src/ui.text-empty/configs/default.config.js +0 -0
  356. package/{constant.component-names → src/ui.text-empty/constants}/index.js +1 -2
  357. package/src/ui.text-empty/index.stories.js +0 -0
  358. package/{ui.text-empty → src/ui.text-empty}/index.vue +14 -15
  359. package/src/ui.text-file/composables/attrs.composable.js +0 -0
  360. package/src/ui.text-file/configs/default.config.js +0 -0
  361. package/src/ui.text-file/index.stories.js +0 -0
  362. package/src/ui.text-file/index.vue +0 -0
  363. package/src/ui.text-files/composables/attrs.composable.js +0 -0
  364. package/src/ui.text-files/configs/default.config.js +0 -0
  365. package/src/ui.text-files/constants/index.js +0 -0
  366. package/src/ui.text-files/index.stories.js +0 -0
  367. package/src/ui.text-files/index.vue +0 -0
  368. package/src/ui.text-header/Docs.mdx +0 -0
  369. package/src/ui.text-header/composables/attrs.composable.js +0 -0
  370. package/src/ui.text-header/configs/default.config.js +45 -0
  371. package/src/ui.text-header/constants/index.js +0 -0
  372. package/src/ui.text-header/index.stories.js +0 -0
  373. package/src/ui.text-header/index.vue +0 -0
  374. package/src/ui.text-money/Docs.mdx +0 -0
  375. package/src/ui.text-money/assets/credit.svg +0 -0
  376. package/src/ui.text-money/assets/debit.svg +0 -0
  377. package/src/ui.text-money/composables/attrs.composable.js +0 -0
  378. package/src/ui.text-money/configs/default.config.js +69 -0
  379. package/src/ui.text-money/constants/index.js +0 -0
  380. package/src/ui.text-money/index.stories.js +0 -0
  381. package/src/ui.text-money/index.vue +0 -0
  382. package/src/ui.text-money/services/money.services.js +0 -0
  383. package/src/ui.viewport/index.vue +0 -0
  384. package/tailwind.config.js +69 -0
  385. package/vite.config.mjs +39 -0
  386. package/vueless.config.js +7 -0
  387. package/web-types.json +3110 -2243
  388. package/_readme/README.md +0 -78
  389. package/_readme/layoutAdmin.md +0 -703
  390. package/_readme/layoutApp.md +0 -153
  391. package/_readme/layoutAuth.md +0 -190
  392. package/composable.ui/index.js +0 -81
  393. package/config.rollup-plugin-visualizer/index.js +0 -11
  394. package/config.unplugin-vue-i18n/index.js +0 -9
  395. package/config.vite-plugin-pwa/index.js +0 -132
  396. package/config.vite-svg-loader/index.js +0 -22
  397. package/index.js +0 -151
  398. package/layout-ui.loader-top/components/TopProgress.vue +0 -277
  399. package/layout-ui.notify/index.stories.js +0 -102
  400. package/layout-ui.viewport/index.vue +0 -78
  401. package/layout.admin/AsideBlock.vue +0 -534
  402. package/layout.admin/AsideInfoBlock.vue +0 -85
  403. package/layout.admin/BrandBlock.vue +0 -380
  404. package/layout.admin/ChangeThemeModal.vue +0 -179
  405. package/layout.admin/HelperBlock.vue +0 -132
  406. package/layout.admin/MainMenu.vue +0 -234
  407. package/layout.admin/MainSubMenu.vue +0 -196
  408. package/layout.admin/MobileMainMenu.vue +0 -197
  409. package/layout.admin/MobileSubBlock.vue +0 -171
  410. package/layout.admin/RightInfoBlock.vue +0 -166
  411. package/layout.admin/UserBlock.vue +0 -290
  412. package/layout.admin/images/abstract-01.jpg +0 -0
  413. package/layout.admin/images/abstract-01_preview.jpg +0 -0
  414. package/layout.admin/index.vue +0 -544
  415. package/layout.admin/mixins/index.js +0 -54
  416. package/layout.admin/store/index.js +0 -167
  417. package/layout.auth/FeaturesBlock.vue +0 -57
  418. package/layout.auth/FooterMenu.vue +0 -90
  419. package/layout.auth/LanguageSwitcher.vue +0 -90
  420. package/layout.auth/index.vue +0 -237
  421. package/library.vue-tailwind-3/TDatepicker/components/t-date-trigger.js +0 -257
  422. package/library.vue-tailwind-3/TDatepicker/components/t-datepicker-navigator.js +0 -600
  423. package/library.vue-tailwind-3/TDatepicker/components/t-datepicker-time-selector.js +0 -522
  424. package/library.vue-tailwind-3/TDatepicker/components/t-datepicker-views-view-calendar-days-day.js +0 -289
  425. package/library.vue-tailwind-3/TDatepicker/components/t-datepicker-views-view-calendar-days.js +0 -236
  426. package/library.vue-tailwind-3/TDatepicker/components/t-datepicker-views-view-calendar-headers.js +0 -64
  427. package/library.vue-tailwind-3/TDatepicker/components/t-datepicker-views-view-calendar.js +0 -159
  428. package/library.vue-tailwind-3/TDatepicker/components/t-datepicker-views-view-months-month.js +0 -106
  429. package/library.vue-tailwind-3/TDatepicker/components/t-datepicker-views-view-months.js +0 -97
  430. package/library.vue-tailwind-3/TDatepicker/components/t-datepicker-views-view-years-year.js +0 -117
  431. package/library.vue-tailwind-3/TDatepicker/components/t-datepicker-views-view-years.js +0 -104
  432. package/library.vue-tailwind-3/TDatepicker/components/t-datepicker-views-view.js +0 -294
  433. package/library.vue-tailwind-3/TDatepicker/components/t-datepicker-views.js +0 -212
  434. package/library.vue-tailwind-3/TDatepicker/components/t-toggle.js +0 -323
  435. package/library.vue-tailwind-3/TDatepicker/index.js +0 -1051
  436. package/library.vue-tailwind-3/base/Component.js +0 -126
  437. package/library.vue-tailwind-3/base/HtmlInput.js +0 -38
  438. package/library.vue-tailwind-3/base/TextInput.js +0 -102
  439. package/library.vue-tailwind-3/index.js +0 -12
  440. package/library.vue-tailwind-3/l10n/ar.js +0 -27
  441. package/library.vue-tailwind-3/l10n/at.js +0 -29
  442. package/library.vue-tailwind-3/l10n/az.js +0 -40
  443. package/library.vue-tailwind-3/l10n/be.js +0 -35
  444. package/library.vue-tailwind-3/l10n/bg.js +0 -41
  445. package/library.vue-tailwind-3/l10n/bn.js +0 -39
  446. package/library.vue-tailwind-3/l10n/bs.js +0 -28
  447. package/library.vue-tailwind-3/l10n/cat.js +0 -59
  448. package/library.vue-tailwind-3/l10n/cs.js +0 -35
  449. package/library.vue-tailwind-3/l10n/cy.js +0 -68
  450. package/library.vue-tailwind-3/l10n/da.js +0 -31
  451. package/library.vue-tailwind-3/l10n/de.js +0 -30
  452. package/library.vue-tailwind-3/l10n/default.js +0 -54
  453. package/library.vue-tailwind-3/l10n/eo.js +0 -31
  454. package/library.vue-tailwind-3/l10n/es.js +0 -32
  455. package/library.vue-tailwind-3/l10n/et.js +0 -46
  456. package/library.vue-tailwind-3/l10n/fa.js +0 -41
  457. package/library.vue-tailwind-3/l10n/fi.js +0 -50
  458. package/library.vue-tailwind-3/l10n/fo.js +0 -40
  459. package/library.vue-tailwind-3/l10n/fr.js +0 -48
  460. package/library.vue-tailwind-3/l10n/ga.js +0 -36
  461. package/library.vue-tailwind-3/l10n/gr.js +0 -33
  462. package/library.vue-tailwind-3/l10n/he.js +0 -41
  463. package/library.vue-tailwind-3/l10n/hi.js +0 -39
  464. package/library.vue-tailwind-3/l10n/hr.js +0 -41
  465. package/library.vue-tailwind-3/l10n/hu.js +0 -46
  466. package/library.vue-tailwind-3/l10n/id.js +0 -30
  467. package/library.vue-tailwind-3/l10n/index.js +0 -127
  468. package/library.vue-tailwind-3/l10n/is.js +0 -40
  469. package/library.vue-tailwind-3/l10n/it.js +0 -31
  470. package/library.vue-tailwind-3/l10n/ja.js +0 -42
  471. package/library.vue-tailwind-3/l10n/ka.js +0 -35
  472. package/library.vue-tailwind-3/l10n/km.js +0 -45
  473. package/library.vue-tailwind-3/l10n/ko.js +0 -41
  474. package/library.vue-tailwind-3/l10n/kz.js +0 -34
  475. package/library.vue-tailwind-3/l10n/lt.js +0 -41
  476. package/library.vue-tailwind-3/l10n/lv.js +0 -37
  477. package/library.vue-tailwind-3/l10n/mk.js +0 -30
  478. package/library.vue-tailwind-3/l10n/mn.js +0 -42
  479. package/library.vue-tailwind-3/l10n/ms.js +0 -28
  480. package/library.vue-tailwind-3/l10n/my.js +0 -42
  481. package/library.vue-tailwind-3/l10n/nl.js +0 -48
  482. package/library.vue-tailwind-3/l10n/no.js +0 -31
  483. package/library.vue-tailwind-3/l10n/pa.js +0 -27
  484. package/library.vue-tailwind-3/l10n/pl.js +0 -31
  485. package/library.vue-tailwind-3/l10n/pt.js +0 -36
  486. package/library.vue-tailwind-3/l10n/ro.js +0 -29
  487. package/library.vue-tailwind-3/l10n/ru.js +0 -48
  488. package/library.vue-tailwind-3/l10n/si.js +0 -40
  489. package/library.vue-tailwind-3/l10n/sk.js +0 -32
  490. package/library.vue-tailwind-3/l10n/sl.js +0 -32
  491. package/library.vue-tailwind-3/l10n/sq.js +0 -27
  492. package/library.vue-tailwind-3/l10n/sr-cyr.js +0 -29
  493. package/library.vue-tailwind-3/l10n/sr.js +0 -30
  494. package/library.vue-tailwind-3/l10n/sv.js +0 -30
  495. package/library.vue-tailwind-3/l10n/th.js +0 -43
  496. package/library.vue-tailwind-3/l10n/tr.js +0 -32
  497. package/library.vue-tailwind-3/l10n/uk.js +0 -28
  498. package/library.vue-tailwind-3/l10n/uz.js +0 -35
  499. package/library.vue-tailwind-3/l10n/uz_latn.js +0 -48
  500. package/library.vue-tailwind-3/l10n/vn.js +0 -41
  501. package/library.vue-tailwind-3/l10n/zh-tw.js +0 -41
  502. package/library.vue-tailwind-3/l10n/zh.js +0 -41
  503. package/library.vue-tailwind-3/services/date.service.js +0 -294
  504. package/library.vue-tailwind-3/services/formatting.service.js +0 -205
  505. package/library.vue-tailwind-3/services/vueTailwind.service.js +0 -41
  506. package/library.vue-tailwind-3/t-alert.js +0 -151
  507. package/library.vue-tailwind-3/t-button.js +0 -243
  508. package/library.vue-tailwind-3/t-card.js +0 -98
  509. package/library.vue-tailwind-3/t-checkbox.js +0 -292
  510. package/library.vue-tailwind-3/t-dropdown.js +0 -322
  511. package/library.vue-tailwind-3/t-input.js +0 -68
  512. package/library.vue-tailwind-3/t-modal.js +0 -409
  513. package/library.vue-tailwind-3/t-pagination.js +0 -309
  514. package/library.vue-tailwind-3/t-radio.js +0 -301
  515. package/library.vue-tailwind-3/t-table.js +0 -362
  516. package/library.vue-tailwind-3/t-textarea.js +0 -84
  517. package/resolver.unplugin-vue-components/index.js +0 -94
  518. package/service.api/index.js +0 -275
  519. package/service.data/index.js +0 -75
  520. package/service.date/index.js +0 -222
  521. package/service.i18n/index.js +0 -145
  522. package/service.idb-keyval/index.js +0 -37
  523. package/service.jwt/index.js +0 -27
  524. package/service.money/index.js +0 -86
  525. package/service.redirect/index.js +0 -20
  526. package/service.storybook/index.js +0 -118
  527. package/service.validation/index.js +0 -55
  528. package/service.worker/index.js +0 -26
  529. package/ui.button/index.stories.js +0 -165
  530. package/ui.button/index.vue +0 -1018
  531. package/ui.button-expand/index.stories.js +0 -44
  532. package/ui.button-expand/index.vue +0 -22
  533. package/ui.button-expand-item/index.stories.js +0 -69
  534. package/ui.button-expand-item/index.vue +0 -154
  535. package/ui.button-group/index.stories.js +0 -104
  536. package/ui.button-group/index.vue +0 -165
  537. package/ui.button-group-item/index.stories.js +0 -74
  538. package/ui.button-group-item/index.vue +0 -283
  539. package/ui.button-link/index.stories.js +0 -121
  540. package/ui.button-link/index.vue +0 -541
  541. package/ui.container-accordion/index.stories.js +0 -88
  542. package/ui.container-accordion/index.vue +0 -167
  543. package/ui.container-card/index.stories.js +0 -128
  544. package/ui.container-card/index.vue +0 -207
  545. package/ui.container-divider/index.stories.js +0 -91
  546. package/ui.container-divider/index.vue +0 -201
  547. package/ui.container-group/index.stories.js +0 -87
  548. package/ui.container-group/index.vue +0 -172
  549. package/ui.container-groups/index.stories.js +0 -44
  550. package/ui.container-groups/index.vue +0 -18
  551. package/ui.container-modal/components/ArrowLink.vue +0 -87
  552. package/ui.container-modal/index.stories.js +0 -169
  553. package/ui.container-modal/index.vue +0 -416
  554. package/ui.container-modal-confirm/index.stories.js +0 -150
  555. package/ui.container-modal-confirm/index.vue +0 -186
  556. package/ui.container-page/components/ArrowLink.vue +0 -87
  557. package/ui.container-page/index.stories.js +0 -174
  558. package/ui.container-page/index.vue +0 -486
  559. package/ui.container-row/index.stories.js +0 -71
  560. package/ui.container-row/index.vue +0 -52
  561. package/ui.data-list/index.stories.js +0 -90
  562. package/ui.data-list/index.vue +0 -367
  563. package/ui.data-table/components/DateSeparator.vue +0 -99
  564. package/ui.data-table/components/EmptyTableMsg.vue +0 -46
  565. package/ui.data-table/components/TableCheckbox.vue +0 -109
  566. package/ui.data-table/index.vue +0 -1101
  567. package/ui.dropdown-button/index.stories.js +0 -157
  568. package/ui.dropdown-button/index.vue +0 -331
  569. package/ui.dropdown-item/index.stories.js +0 -29
  570. package/ui.dropdown-item/index.vue +0 -70
  571. package/ui.dropdown-link/index.stories.js +0 -127
  572. package/ui.dropdown-link/index.vue +0 -330
  573. package/ui.dropdown-list/index.stories.js +0 -46
  574. package/ui.dropdown-list/index.vue +0 -139
  575. package/ui.dropdown-tag/index.stories.js +0 -125
  576. package/ui.dropdown-tag/index.vue +0 -285
  577. package/ui.form-checkbox/index.stories.js +0 -98
  578. package/ui.form-checkbox/index.vue +0 -301
  579. package/ui.form-checkbox-group/index.stories.js +0 -39
  580. package/ui.form-checkbox-group/index.vue +0 -216
  581. package/ui.form-checkbox-multi-state/index.stories.js +0 -62
  582. package/ui.form-checkbox-multi-state/index.vue +0 -244
  583. package/ui.form-color-picker/index.vue +0 -350
  584. package/ui.form-date-picker/index.stories.js +0 -119
  585. package/ui.form-date-picker/index.vue +0 -851
  586. package/ui.form-date-picker-range/components/VariantButton.vue +0 -136
  587. package/ui.form-date-picker-range/components/VariantInput.vue +0 -101
  588. package/ui.form-date-picker-range/index.stories.js +0 -93
  589. package/ui.form-date-picker-range/index.vue +0 -1537
  590. package/ui.form-date-picker-range/services/dateRange.service.js +0 -178
  591. package/ui.form-input/index.stories.js +0 -132
  592. package/ui.form-input/index.vue +0 -524
  593. package/ui.form-input/text-security-disc.woff +0 -0
  594. package/ui.form-input-file/index.stories.js +0 -85
  595. package/ui.form-input-file/index.vue +0 -584
  596. package/ui.form-input-money/_components/ConvertibleInput.vue +0 -773
  597. package/ui.form-input-money/_components/RangeInput.vue +0 -356
  598. package/ui.form-input-money/_components/SingleInput.vue +0 -378
  599. package/ui.form-input-money/index.stories.js +0 -98
  600. package/ui.form-input-money/index.vue +0 -260
  601. package/ui.form-input-number/index.stories.js +0 -33
  602. package/ui.form-input-number/index.vue +0 -127
  603. package/ui.form-input-rating/index.vue +0 -242
  604. package/ui.form-input-search/index.stories.js +0 -86
  605. package/ui.form-input-search/index.vue +0 -210
  606. package/ui.form-radio/index.stories.js +0 -69
  607. package/ui.form-radio/index.vue +0 -176
  608. package/ui.form-radio-card/index.stories.js +0 -140
  609. package/ui.form-radio-card/index.vue +0 -183
  610. package/ui.form-radio-group/index.stories.js +0 -41
  611. package/ui.form-radio-group/index.vue +0 -98
  612. package/ui.form-select/index.stories.js +0 -183
  613. package/ui.form-select/index.vue +0 -1025
  614. package/ui.form-select-multi/index.stories.js +0 -131
  615. package/ui.form-select-multi/index.vue +0 -882
  616. package/ui.form-switch/index.stories.js +0 -126
  617. package/ui.form-switch/index.vue +0 -673
  618. package/ui.form-textarea/index.stories.js +0 -109
  619. package/ui.form-textarea/index.vue +0 -399
  620. package/ui.image-avatar/default-avatar.png +0 -0
  621. package/ui.image-avatar/index.stories.js +0 -106
  622. package/ui.image-avatar/index.vue +0 -253
  623. package/ui.image-icon/cli.mjs +0 -159
  624. package/ui.image-icon/index.stories.js +0 -129
  625. package/ui.image-icon/index.vue +0 -511
  626. package/ui.image-logo/index.stories.js +0 -84
  627. package/ui.image-logo/index.vue +0 -184
  628. package/ui.navigation-pagination/index.stories.js +0 -35
  629. package/ui.navigation-pagination/index.vue +0 -115
  630. package/ui.navigation-stepper/index.stories.js +0 -29
  631. package/ui.navigation-stepper/index.vue +0 -129
  632. package/ui.navigation-tab/index.stories.js +0 -61
  633. package/ui.navigation-tab/index.vue +0 -112
  634. package/ui.navigation-tabs/index.stories.js +0 -73
  635. package/ui.navigation-tabs/index.vue +0 -119
  636. package/ui.other-dot/index.stories.js +0 -77
  637. package/ui.other-dot/index.vue +0 -100
  638. package/ui.other-loader/index.stories.js +0 -77
  639. package/ui.other-loader/index.vue +0 -185
  640. package/ui.text-alert/index.stories.js +0 -124
  641. package/ui.text-alert/index.vue +0 -236
  642. package/ui.text-block/index.stories.js +0 -111
  643. package/ui.text-block/index.vue +0 -137
  644. package/ui.text-empty/configs/default.config.js +0 -28
  645. package/ui.text-empty/index.stories.js +0 -106
  646. package/ui.text-empty/services/variant.service.js +0 -22
  647. package/ui.text-field/index.stories.js +0 -60
  648. package/ui.text-field/index.vue +0 -109
  649. package/ui.text-file/index.stories.js +0 -28
  650. package/ui.text-file/index.vue +0 -102
  651. package/ui.text-files/index.stories.js +0 -31
  652. package/ui.text-files/index.vue +0 -64
  653. package/ui.text-header/index.stories.js +0 -110
  654. package/ui.text-header/index.vue +0 -237
  655. package/ui.text-money/assets/credit.svg +0 -7
  656. package/ui.text-money/assets/debit.svg +0 -12
  657. package/ui.text-money/index.stories.js +0 -263
  658. package/ui.text-money/index.vue +0 -523
  659. package/ui.text-tag/index.stories.js +0 -90
  660. package/ui.text-tag/index.vue +0 -178
  661. /package/{library.web-types-gen → .web-types-gen}/index.js +0 -0
  662. /package/{library.web-types-gen → .web-types-gen}/package.json +0 -0
  663. /package/{_readme → readme}/UGroup.md +0 -0
  664. /package/{_readme → readme}/UPage.md +0 -0
  665. /package/{layout-ui.loader → src/ui.loader-rendering}/store/index.js +0 -0
  666. /package/{layout-ui.viewport → src/ui.viewport}/store/index.js +0 -0
@@ -0,0 +1,139 @@
1
+ # Installation
2
+ Learn how to install and configure the package in your Vue app.
3
+
4
+ ## Quick Start
5
+
6
+ 1\. Install `vueless` to your project:
7
+
8
+ ```bash
9
+ # npm
10
+ npm install vueless
11
+
12
+ # yarn
13
+ yarn add vueless
14
+
15
+ # pnpm
16
+ pnpm add vueless
17
+ ```
18
+
19
+ 2\. Create `vueless.config.js` at the root of your project.
20
+
21
+ ```js
22
+ export default {
23
+ color: {},
24
+ component: {},
25
+ };
26
+ ```
27
+
28
+ 3\. Add vueless preset into `tailwind.config.js`.
29
+
30
+ ```js
31
+ import { vuelessPreset } from "vueless/service.tailwind";
32
+
33
+ export default {
34
+ presets: [vuelessPreset],
35
+ ...
36
+ };
37
+ ```
38
+
39
+ 4\. Add Vueless Vite plugins into `vite.config.js`.
40
+
41
+ ```js
42
+ import { Vueless, VuelessUnpluginComponents } from "vueless/plugin.vite";
43
+
44
+ export default defineConfig({
45
+ plugins: [
46
+ ...
47
+ Vueless(),
48
+ VuelessUnpluginComponents(),
49
+ ],
50
+ ...
51
+ })
52
+ ```
53
+
54
+ 5\. Configure your `package.json`.
55
+
56
+ ```json
57
+ {
58
+ ...
59
+ "web-types": "vueless/web-types.json"
60
+ }
61
+ ```
62
+
63
+ Where:
64
+ * `web-types` – add props and values autocompletion to your IDE.
65
+
66
+ <br/>
67
+
68
+ That's it! You can now use all the components in your Vue app ✨
69
+
70
+ ## IntelliSense
71
+ If you're using **VSCode** or **JetBrains** IDEs (WebStorm, PHPStorm, etc..) you can configure autocompletion for the classes.
72
+
73
+ **What you'll get:**
74
+ * Autocompletion on typing.
75
+ * Autocompletion on objects by prefixing them with `/*tw*/`
76
+ * Autocompletion when using the `config` prop.
77
+
78
+ **An example SFC using IntelliSense:**
79
+
80
+ ```jsx
81
+ <template>
82
+ <UCard :config="config" />
83
+ </template>
84
+
85
+ <script setup>
86
+ const config = /*tw*/ {
87
+ background: 'bg-white dark:bg-slate-900'
88
+ }
89
+ </script>
90
+ ```
91
+
92
+ ### VSCode
93
+ * Install [Tailwind CSS IntelliSense](https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss)
94
+ extension.
95
+ * Set the plugin configuration below in the file `.vscode/settings.json`.
96
+
97
+ ```json
98
+ {
99
+ "files.associations": {
100
+ "*.css": "tailwindcss"
101
+ },
102
+ "editor.quickSuggestions": {
103
+ "strings": true
104
+ },
105
+ "tailwindCSS.experimental.classRegex": [
106
+ ["config:\\s*{([^)]*)\\s*}", "[\"'`]([^\"'`]*).*?[\"'`]"],
107
+ ["/\\*tw\\*/\\s*{([^;]*)}", ":\\s*[\"'`]([^\"'`]*).*?[\"'`]"]
108
+ ],
109
+ "tailwindCSS.classAttributes": ["class", "className", "ngClass", "config"]
110
+ }
111
+ ```
112
+
113
+
114
+ ### JetBrains IDEs
115
+ * Check if [Tailwind CSS IntelliSense](https://www.jetbrains.com/help/webstorm/tailwind-css.html)
116
+ already installed in the IDE, if not, install it in extensions.
117
+ * Set the plugin configuration below in `Settings` > `Languages & Frameworks` > `Style Sheets` > `Tailwind CSS`.
118
+
119
+ ```json
120
+ {
121
+ "includeLanguages": {
122
+ "javascript": "javascript"
123
+ },
124
+ "suggestions": true,
125
+ "classAttributes": ["class", "className", "ngClass", "config"],
126
+ "experimental": {
127
+ "classRegex": [
128
+ ["config:\\s*{([^)]*)\\s*}", "[\"'`]([^\"'`]*).*?[\"'`]"],
129
+ ["/\\*tw\\*/\\s*{([^;]*)}", ":\\s*[\"'`]([^\"'`]*).*?[\"'`]"]
130
+ ]
131
+ }
132
+ }
133
+ ```
134
+
135
+
136
+
137
+
138
+
139
+
@@ -0,0 +1,6 @@
1
+ import { Markdown, Meta } from "@storybook/blocks";
2
+
3
+ import customization from "../customization.md?raw"
4
+
5
+ <Meta title="2. Customisation" />
6
+ <Markdown className="markdown">{customization}</Markdown>
@@ -0,0 +1,7 @@
1
+ import { Markdown, Meta } from "@storybook/blocks";
2
+
3
+ import installation from "../installation.md?raw"
4
+
5
+ <Meta title="1. Installation" />
6
+ <Markdown className="markdown">{installation}</Markdown>
7
+
@@ -0,0 +1,395 @@
1
+ import {
2
+ ref,
3
+ watchEffect,
4
+ getCurrentInstance,
5
+ toValue,
6
+ useAttrs,
7
+ Comment,
8
+ Text,
9
+ Fragment,
10
+ } from "vue";
11
+ import { cx, globalComponentConfig, strategy } from "../service.ui";
12
+
13
+ const strategyType = {
14
+ merge: "merge",
15
+ replace: "replace",
16
+ overwrite: "overwrite",
17
+ };
18
+
19
+ /**
20
+ Merging component configs in a given sequence (bigger number = bigger priority):
21
+ 1. Default component config
22
+ 2. Custom global component config (/vueless.config.js)
23
+ 3. Component config (:config="{...}" props)
24
+ 4. Component classes (class="...")
25
+ */
26
+ export default function useUI(defaultConfig = {}, propsConfigGetter = null, topLevelClassKey) {
27
+ const { name: componentName } = getCurrentInstance().type;
28
+ const globalConfig = globalComponentConfig[componentName];
29
+
30
+ const isStrategyValid = strategy && Object.values(strategyType).includes(strategy);
31
+ const vuelessStrategy = isStrategyValid ? strategy : strategyType.merge;
32
+
33
+ const [firstClassKey] = Object.keys(defaultConfig);
34
+ const config = ref({});
35
+ const attrs = useAttrs();
36
+
37
+ watchEffect(() => {
38
+ const propsConfig = propsConfigGetter && propsConfigGetter();
39
+
40
+ const mergedConfig = getMergedConfig({
41
+ defaultConfig,
42
+ globalConfig,
43
+ propsConfig,
44
+ vuelessStrategy,
45
+ });
46
+
47
+ config.value = mergeClassesIntoConfig(mergedConfig, topLevelClassKey || firstClassKey, attrs);
48
+ });
49
+
50
+ function getAttrs(configKey, options) {
51
+ const cvaClasses = options?.classes || "";
52
+ const isComponent = options?.isComponent;
53
+
54
+ const attrs = useAttrs();
55
+ const isDev = import.meta.env.DEV;
56
+ const vuelessAttrs = ref({});
57
+
58
+ const commonAttrs = {
59
+ ...attrs,
60
+ component: isDev && (attrs.component || componentName || null),
61
+ "config-key": isDev && (attrs["config-key"] || configKey || null),
62
+ "child-component": isDev && attrs.component ? componentName : null,
63
+ "child-config-key": isDev && attrs.component ? configKey : null,
64
+ };
65
+
66
+ // Delete value key to prevent v-model overwrite
67
+ delete commonAttrs.value;
68
+
69
+ watchEffect(() => {
70
+ const configKeyValue = config.value[configKey];
71
+ const isObject = typeof configKeyValue === "object";
72
+
73
+ const configAttrs = {
74
+ config: configKeyValue,
75
+ ...configKeyValue?.defaultVariants,
76
+ };
77
+
78
+ const isTopLevelClassKey = configKey === (topLevelClassKey || firstClassKey);
79
+
80
+ const attrClass = isTopLevelClassKey && !isComponent ? attrs.class : "";
81
+ const configKeyClass = isObject ? configKeyValue.base : configKeyValue;
82
+
83
+ vuelessAttrs.value = {
84
+ ...commonAttrs,
85
+ class: cx([configKeyClass, toValue(cvaClasses), attrClass]),
86
+ ...((isObject && configAttrs) || {}),
87
+ };
88
+ });
89
+
90
+ return vuelessAttrs;
91
+ }
92
+
93
+ return {
94
+ config,
95
+ getAttrs,
96
+ setColor,
97
+ hasSlotContent,
98
+ };
99
+ }
100
+
101
+ /**
102
+ Get merged config based on config merging strategy.
103
+ @param {Object} defaultConfig
104
+ @param {Object} globalConfig
105
+ @param {Object} propsConfig
106
+ @param {string} vuelessStrategy - vueless top level merge strategy.
107
+
108
+ @returns {Object}
109
+ */
110
+ function getMergedConfig({ defaultConfig, globalConfig, propsConfig, vuelessStrategy }) {
111
+ defaultConfig = cloneDeep(defaultConfig);
112
+
113
+ const strategy =
114
+ !globalConfig && !propsConfig
115
+ ? strategyType.merge
116
+ : propsConfig?.strategy || globalConfig?.strategy || vuelessStrategy;
117
+
118
+ if (strategy === strategyType.merge) {
119
+ return mergeConfigs({ defaultConfig, globalConfig, propsConfig });
120
+ }
121
+
122
+ if (strategy === strategyType.replace) {
123
+ return mergeConfigs({ defaultConfig, globalConfig, propsConfig, isReplace: true });
124
+ }
125
+
126
+ if (strategy === strategyType.overwrite) {
127
+ const isGlobalConfig = globalConfig && Object.keys(globalConfig).length;
128
+ const isPropsConfig = propsConfig && Object.keys(propsConfig).length;
129
+
130
+ return isPropsConfig ? propsConfig : isGlobalConfig ? globalConfig : defaultConfig;
131
+ }
132
+ }
133
+
134
+ /**
135
+ Recursively merge config objects with removing tailwind classes duplicates.
136
+ @param {Object} defaultConfig
137
+ @param {Object} globalConfig
138
+ @param {Object} propsConfig
139
+ @param {Object} config - final merged config.
140
+ @param {boolean} isReplace - enables class replacement instead of merge.
141
+
142
+ @returns {Object}
143
+ */
144
+ function mergeConfigs({
145
+ defaultConfig,
146
+ globalConfig,
147
+ propsConfig,
148
+ config = {},
149
+ isReplace = false,
150
+ }) {
151
+ globalConfig = globalConfig || {};
152
+ propsConfig = propsConfig || {};
153
+
154
+ const isGlobalConfig = Object.keys(globalConfig).length;
155
+ const isPropsConfig = Object.keys(propsConfig).length;
156
+
157
+ // Add unique keys from defaultConfig to composedConfig
158
+ let composedConfig = cloneDeep(defaultConfig);
159
+
160
+ // Add unique keys from globalConfig to composedConfig
161
+ for (let key in globalConfig) {
162
+ if (!Object.keys(composedConfig).includes(key)) {
163
+ composedConfig[key] = globalConfig[key];
164
+ }
165
+ }
166
+
167
+ // Add unique keys from propsConfig to composedConfig
168
+ for (let key in propsConfig) {
169
+ if (!Object.keys(composedConfig).includes(key)) {
170
+ composedConfig[key] = propsConfig[key];
171
+ }
172
+ }
173
+
174
+ for (let key in composedConfig) {
175
+ if (isGlobalConfig || isPropsConfig) {
176
+ if (key === "strategy") {
177
+ config[key] = propsConfig[key] || globalConfig[key] || defaultConfig[key];
178
+ } else if (key === "defaultVariants") {
179
+ config[key] = { ...defaultConfig[key], ...globalConfig[key], ...propsConfig[key] };
180
+ } else if (key === "compoundVariants") {
181
+ config[key] = mergeCompoundVariants({
182
+ defaultConfig: composedConfig,
183
+ globalConfig,
184
+ propsConfig,
185
+ isReplace,
186
+ key,
187
+ });
188
+ } else {
189
+ const isObjectComposedConfig = typeof composedConfig[key] === "object";
190
+ const isObjectGlobalConfig = typeof globalConfig[key] === "object";
191
+ const isObjectPropsConfig = typeof propsConfig[key] === "object";
192
+
193
+ const isObject = isObjectComposedConfig || isObjectGlobalConfig || isObjectPropsConfig;
194
+ const isEmpty = composedConfig[key] === null;
195
+ const isIconName = /^.*(iconName|IconName)$/.test(key);
196
+ const isI18n = key === "i18n";
197
+
198
+ config[key] =
199
+ isObject && !isEmpty && !isI18n
200
+ ? mergeConfigs({
201
+ defaultConfig: stringToObject(composedConfig[key]),
202
+ globalConfig: stringToObject(globalConfig[key]),
203
+ propsConfig: stringToObject(propsConfig[key]),
204
+ config: stringToObject(composedConfig[key]),
205
+ isReplace,
206
+ })
207
+ : isReplace || isIconName || isI18n
208
+ ? propsConfig[key] || globalConfig[key] || defaultConfig[key]
209
+ : cx([defaultConfig[key], globalConfig[key], propsConfig[key]]);
210
+ }
211
+ } else {
212
+ config[key] = composedConfig[key];
213
+ }
214
+ }
215
+
216
+ return config;
217
+ }
218
+
219
+ /**
220
+ Turn simplified nested component config to regular config.
221
+ @param {Object | String} value
222
+ @returns {Object}
223
+ */
224
+ function stringToObject(value) {
225
+ return typeof value === "object" ? value : { base: value };
226
+ }
227
+
228
+ /**
229
+ Merge CVA compound variants arrays.
230
+ @param {Object} defaultConfig
231
+ @param {Object} globalConfig
232
+ @param {Object} propsConfig
233
+ @param {string} key
234
+ @param {boolean} isReplace - enables class replacement instead of merge.
235
+
236
+ @returns {Array}
237
+ */
238
+ function mergeCompoundVariants({ defaultConfig, globalConfig, propsConfig, key, isReplace }) {
239
+ if (
240
+ (globalConfig[key] && !Array.isArray(globalConfig[key])) ||
241
+ (propsConfig[key] && !Array.isArray(propsConfig[key])) ||
242
+ (defaultConfig[key] && !Array.isArray(defaultConfig[key]))
243
+ ) {
244
+ // eslint-disable-next-line no-console
245
+ console.error("CompoundVariants should be an array.");
246
+ }
247
+
248
+ let globalConfigUniqueItems = cloneDeep(globalConfig[key] || []);
249
+ let propsConfigUniqueItems = cloneDeep(propsConfig[key] || []);
250
+
251
+ const config = defaultConfig[key].map((defaultConfigItem) => {
252
+ /**
253
+ Compare two objects by keys for match.
254
+ @param {Object} configItem
255
+ @returns {Boolean}
256
+ */
257
+ function isSameItem(configItem) {
258
+ const hasConfigItemKeys = Object.keys(defaultConfigItem)
259
+ .map((key) => defaultConfigItem[key] === configItem[key] || key === "class")
260
+ .every((item) => !!item);
261
+
262
+ const hasDefaultConfigItemKeys = Object.keys(configItem)
263
+ .map((key) => defaultConfigItem[key] === configItem[key] || key === "class")
264
+ .every((item) => !!item);
265
+
266
+ return hasConfigItemKeys && hasDefaultConfigItemKeys;
267
+ }
268
+
269
+ /**
270
+ Find the same compound variant item in custom config if exist.
271
+ @param {Object} config
272
+ @returns {Object|undefined}
273
+ */
274
+ function findItem(config = []) {
275
+ const globalConfigUniqueItemIndex = globalConfigUniqueItems.findIndex(isSameItem);
276
+ const propsConfigUniqueItemIndex = propsConfigUniqueItems.findIndex(isSameItem);
277
+
278
+ if (~globalConfigUniqueItemIndex) {
279
+ globalConfigUniqueItems.splice(globalConfigUniqueItemIndex, 1);
280
+ }
281
+
282
+ if (~propsConfigUniqueItemIndex) {
283
+ propsConfigUniqueItems.splice(propsConfigUniqueItemIndex, 1);
284
+ }
285
+
286
+ return config.find(isSameItem);
287
+ }
288
+
289
+ const globalConfigItem = findItem(globalConfig[key]);
290
+ const propsConfigItem = findItem(propsConfig[key]);
291
+
292
+ return globalConfigItem || propsConfigItem
293
+ ? {
294
+ ...defaultConfigItem,
295
+ class: isReplace
296
+ ? propsConfigItem?.class || globalConfigItem?.class || defaultConfigItem.class
297
+ : cx([defaultConfigItem.class, globalConfigItem?.class, propsConfigItem?.class]),
298
+ }
299
+ : defaultConfigItem;
300
+ });
301
+
302
+ return [...config, ...globalConfigUniqueItems, ...propsConfigUniqueItems];
303
+ }
304
+
305
+ /**
306
+ Merge component classes from "class" attribute into final config.
307
+ @param {Object} config
308
+ @param {Object} attrs
309
+ @param {string} topLevelClassKey
310
+
311
+ @returns {Object}
312
+ */
313
+ function mergeClassesIntoConfig(config, topLevelClassKey, attrs) {
314
+ if (typeof config[topLevelClassKey] === "object") {
315
+ config[topLevelClassKey].base = cx([config[topLevelClassKey]?.base, attrs.class]);
316
+ } else {
317
+ config[topLevelClassKey] = cx([config[topLevelClassKey], attrs.class]);
318
+ }
319
+
320
+ return config;
321
+ }
322
+
323
+ /**
324
+ Check if slot defined, and have a content.
325
+ @param slot
326
+ @param props
327
+
328
+ @returns {boolean}
329
+ */
330
+ function hasSlotContent(slot, props = {}) {
331
+ const asArray = (arg) => (Array.isArray(arg) ? arg : arg != null ? [arg] : []);
332
+
333
+ const isVNodeEmpty = (vnode) => {
334
+ return (
335
+ !vnode ||
336
+ asArray(vnode).every(
337
+ (vnode) =>
338
+ vnode.type === Comment ||
339
+ (vnode.type === Text && !vnode.children?.length) ||
340
+ (vnode.type === Fragment && !vnode.children?.length),
341
+ )
342
+ );
343
+ };
344
+
345
+ return !isVNodeEmpty(slot?.(props));
346
+ }
347
+
348
+ /**
349
+ Deeply clone given object (same as lodash.cloneDeep).
350
+ @param {Object} entity
351
+ @param cache
352
+
353
+ @returns {Object}
354
+ */
355
+ function cloneDeep(entity, cache = new WeakMap()) {
356
+ const referenceTypes = ["Array", "Object", "Map", "Set", "Date"];
357
+ const entityType = Object.prototype.toString.call(entity);
358
+
359
+ if (
360
+ !new RegExp(referenceTypes.join("|")).test(entityType) ||
361
+ entity instanceof WeakMap ||
362
+ entity instanceof WeakSet
363
+ ) {
364
+ return entity;
365
+ }
366
+
367
+ if (cache.has(entity)) {
368
+ return cache.get(entity);
369
+ }
370
+
371
+ const c = new entity.constructor();
372
+
373
+ if (entity instanceof Map) {
374
+ entity.forEach((value, key) => c.set(cloneDeep(key), cloneDeep(value)));
375
+ }
376
+
377
+ if (entity instanceof Set) {
378
+ entity.forEach((value) => c.add(cloneDeep(value)));
379
+ }
380
+
381
+ if (entity instanceof Date) {
382
+ return new Date(entity);
383
+ }
384
+
385
+ cache.set(entity, c);
386
+
387
+ return Object.assign(
388
+ c,
389
+ ...Object.keys(entity).map((prop) => ({ [prop]: cloneDeep(entity[prop], cache) })),
390
+ );
391
+ }
392
+
393
+ function setColor(classes, color) {
394
+ return classes?.replaceAll("{color}", color);
395
+ }
File without changes
@@ -0,0 +1,114 @@
1
+ import colors from "tailwindcss/colors";
2
+ import forms from "@tailwindcss/forms";
3
+ import vuelessConfig from "../../vueless.config";
4
+
5
+ export const grayColors = ["slate", "gray", "zinc", "neutral", "stone"];
6
+ export const brandColors = [
7
+ "brand",
8
+ "red",
9
+ "orange",
10
+ "amber",
11
+ "yellow",
12
+ "lime",
13
+ "green",
14
+ "emerald",
15
+ "teal",
16
+ "cyan",
17
+ "sky",
18
+ "blue",
19
+ "indigo",
20
+ "violet",
21
+ "purple",
22
+ "fuchsia",
23
+ "pink",
24
+ "rose",
25
+ ];
26
+
27
+ export default class TailwindServiceDefault {
28
+ constructor() {
29
+ this.vuelessPreset = this.get();
30
+ }
31
+
32
+ /**
33
+ * Transform CSS variable with RGB numbers into CSS color.
34
+ * @returns {Function}
35
+ */
36
+ static twColorWithOpacity(variableName) {
37
+ return ({ opacityValue }) => {
38
+ return opacityValue !== undefined
39
+ ? `rgba(var(${variableName}), ${opacityValue})`
40
+ : `rgb(var(${variableName}))`;
41
+ };
42
+ }
43
+
44
+ /**
45
+ * Convert sting patterns to RegExp.
46
+ * @returns {Array} - TailwindCSS safelist.
47
+ */
48
+ static getSafelist() {
49
+ return JSON.parse(process.env.SAFELIST_JSON || "[]").map((rule) => ({
50
+ ...rule,
51
+ pattern: new RegExp(rule.pattern),
52
+ }));
53
+ }
54
+
55
+ /**
56
+ * Generates preset for TailwindCSS base on Vueless config.
57
+ * @returns {Object}
58
+ */
59
+ get() {
60
+ const isProd = process.env.NODE_ENV === "production";
61
+ const brandColor = TailwindServiceDefault.twColorWithOpacity("--color-brand");
62
+ const { brand, gray } = vuelessConfig;
63
+
64
+ let brandPalette = brandColors.includes(brand) ? colors[brand] : colors.green;
65
+ let grayPalette = grayColors.includes(gray) ? colors[gray] : colors.zinc;
66
+
67
+ if (brand === "grayscale") {
68
+ brandPalette = grayPalette;
69
+ }
70
+
71
+ const prodSafelist = TailwindServiceDefault.getSafelist();
72
+ const devSafelist = [
73
+ {
74
+ pattern: /(border|bg|text|ring)-(.*)-((50|[1-9]00|950)?)$/,
75
+ variants: ["hover", "focus", "focus-within", "active"],
76
+ },
77
+ ];
78
+
79
+ return {
80
+ content: [
81
+ "./index.html",
82
+ "./src/**/*.{js,ts,jsx,tsx,vue}",
83
+ "./vueless.config.{js,ts}",
84
+ "./node_modules/vueless/**/*.{js,ts,vue}",
85
+ // TODO: remove it after creating the package
86
+ "./.vueless/**/*.{js,ts,vue}",
87
+ "./.vueless-layouts/**/*.{js,ts,vue}",
88
+ "./.vueless-services/**/*.{js,ts,vue}",
89
+ ],
90
+ safelist: isProd ? prodSafelist : devSafelist,
91
+ theme: {
92
+ extend: {
93
+ colors: {
94
+ brand: { ...brandPalette, DEFAULT: brandColor },
95
+ gray: grayPalette,
96
+ },
97
+ spacing: {
98
+ "safe-top": "env(safe-area-inset-top)",
99
+ "safe-bottom": "env(safe-area-inset-bottom)",
100
+ "safe-left": "env(safe-area-inset-left)",
101
+ "safe-right": "env(safe-area-inset-right)",
102
+ "mobile-menu-height": "3.5rem",
103
+ },
104
+ fontSize: {
105
+ "2xs": ["0.625rem", "0.875rem"], // 10px
106
+ },
107
+ },
108
+ },
109
+ plugins: [forms],
110
+ };
111
+ }
112
+ }
113
+
114
+ export const { vuelessPreset } = new TailwindServiceDefault();