@groupteknology/vuno 2.0.0 → 3.0.0

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 (381) hide show
  1. package/README.md +193 -175
  2. package/dist/module.json +1 -1
  3. package/dist/module.mjs +7 -1
  4. package/dist/runtime/app/assets/css/dialog.css +1 -1
  5. package/dist/runtime/app/assets/css/main.css +1 -1
  6. package/dist/runtime/app/assets/css/theme.css +1 -1
  7. package/dist/runtime/app/assets/css/tokens.css +1 -1
  8. package/dist/runtime/app/components/Alert/Alert.d.vue.ts +2 -2
  9. package/dist/runtime/app/components/Alert/Alert.theme.d.ts +7 -6
  10. package/dist/runtime/app/components/Alert/Alert.theme.js +7 -6
  11. package/dist/runtime/app/components/Alert/Alert.types.d.ts +10 -0
  12. package/dist/runtime/app/components/Alert/Alert.vue +17 -8
  13. package/dist/runtime/app/components/Alert/Alert.vue.d.ts +2 -2
  14. package/dist/runtime/app/components/App/App.d.vue.ts +3 -19
  15. package/dist/runtime/app/components/App/App.types.d.ts +4 -0
  16. package/dist/runtime/app/components/App/App.vue +48 -29
  17. package/dist/runtime/app/components/App/App.vue.d.ts +3 -19
  18. package/dist/runtime/app/components/App/internal/OverlayItem/OverlayItem.vue +2 -3
  19. package/dist/runtime/app/components/App/internal/Toast/Toast.theme.d.ts +5 -5
  20. package/dist/runtime/app/components/App/internal/Toast/Toast.theme.js +7 -9
  21. package/dist/runtime/app/components/App/internal/Toast/Toast.vue +27 -36
  22. package/dist/runtime/app/components/App/internal/Toaster/Toaster.theme.d.ts +3 -3
  23. package/dist/runtime/app/components/App/internal/Toaster/Toaster.theme.js +3 -3
  24. package/dist/runtime/app/components/Avatar/Avatar.d.vue.ts +5 -22
  25. package/dist/runtime/app/components/Avatar/Avatar.types.d.ts +10 -0
  26. package/dist/runtime/app/components/Avatar/Avatar.types.js +0 -0
  27. package/dist/runtime/app/components/Avatar/Avatar.vue.d.ts +5 -22
  28. package/dist/runtime/app/components/Badge/Badge.d.vue.ts +7 -26
  29. package/dist/runtime/app/components/Badge/Badge.types.d.ts +12 -0
  30. package/dist/runtime/app/components/Badge/Badge.types.js +0 -0
  31. package/dist/runtime/app/components/Badge/Badge.vue.d.ts +7 -26
  32. package/dist/runtime/app/components/Breadcrumb/Breadcrumb.d.vue.ts +7 -0
  33. package/dist/runtime/app/components/Breadcrumb/Breadcrumb.theme.d.ts +15 -0
  34. package/dist/runtime/app/components/Breadcrumb/Breadcrumb.theme.js +16 -0
  35. package/dist/runtime/app/components/Breadcrumb/Breadcrumb.types.d.ts +7 -0
  36. package/dist/runtime/app/components/Breadcrumb/Breadcrumb.types.js +0 -0
  37. package/dist/runtime/app/components/Breadcrumb/Breadcrumb.vue +109 -0
  38. package/dist/runtime/app/components/Breadcrumb/Breadcrumb.vue.d.ts +7 -0
  39. package/dist/runtime/app/components/Button/Button.d.vue.ts +11 -31
  40. package/dist/runtime/app/components/Button/Button.theme.d.ts +36 -22
  41. package/dist/runtime/app/components/Button/Button.theme.js +28 -20
  42. package/dist/runtime/app/components/Button/Button.types.d.ts +24 -0
  43. package/dist/runtime/app/components/Button/Button.types.js +0 -0
  44. package/dist/runtime/app/components/Button/Button.vue +84 -33
  45. package/dist/runtime/app/components/Button/Button.vue.d.ts +11 -31
  46. package/dist/runtime/app/components/Card/Card.d.vue.ts +7 -69
  47. package/dist/runtime/app/components/Card/Card.theme.d.ts +56 -13
  48. package/dist/runtime/app/components/Card/Card.theme.js +39 -19
  49. package/dist/runtime/app/components/Card/Card.types.d.ts +12 -0
  50. package/dist/runtime/app/components/Card/Card.types.js +0 -0
  51. package/dist/runtime/app/components/Card/Card.vue +17 -11
  52. package/dist/runtime/app/components/Card/Card.vue.d.ts +7 -69
  53. package/dist/runtime/app/components/Code/Code.d.vue.ts +3 -13
  54. package/dist/runtime/app/components/Code/Code.theme.d.ts +1 -1
  55. package/dist/runtime/app/components/Code/Code.theme.js +1 -1
  56. package/dist/runtime/app/components/Code/Code.types.d.ts +8 -0
  57. package/dist/runtime/app/components/Code/Code.types.js +0 -0
  58. package/dist/runtime/app/components/Code/Code.vue +12 -5
  59. package/dist/runtime/app/components/Code/Code.vue.d.ts +3 -13
  60. package/dist/runtime/app/components/Collapsible/Collapsible.d.vue.ts +31 -0
  61. package/dist/runtime/app/components/Collapsible/Collapsible.theme.d.ts +6 -0
  62. package/dist/runtime/app/components/Collapsible/Collapsible.theme.js +7 -0
  63. package/dist/runtime/app/components/Collapsible/Collapsible.types.d.ts +4 -0
  64. package/dist/runtime/app/components/Collapsible/Collapsible.types.js +0 -0
  65. package/dist/runtime/app/components/Collapsible/Collapsible.vue +72 -0
  66. package/dist/runtime/app/components/Collapsible/Collapsible.vue.d.ts +31 -0
  67. package/dist/runtime/app/components/ColorModeButton/ColorModeButton.d.vue.ts +12 -0
  68. package/dist/runtime/app/components/ColorModeButton/ColorModeButton.types.d.ts +13 -0
  69. package/dist/runtime/app/components/ColorModeButton/ColorModeButton.types.js +0 -0
  70. package/dist/runtime/app/components/ColorModeButton/ColorModeButton.vue +55 -0
  71. package/dist/runtime/app/components/ColorModeButton/ColorModeButton.vue.d.ts +12 -0
  72. package/dist/runtime/app/components/Confirm/Confirm.d.vue.ts +2 -6
  73. package/dist/runtime/app/components/Confirm/Confirm.types.d.ts +6 -0
  74. package/dist/runtime/app/components/Confirm/Confirm.types.js +0 -0
  75. package/dist/runtime/app/components/Confirm/Confirm.vue.d.ts +2 -6
  76. package/dist/runtime/app/components/Container/Container.d.vue.ts +4 -28
  77. package/dist/runtime/app/components/Container/Container.types.d.ts +9 -0
  78. package/dist/runtime/app/components/Container/Container.types.js +0 -0
  79. package/dist/runtime/app/components/Container/Container.vue +1 -1
  80. package/dist/runtime/app/components/Container/Container.vue.d.ts +4 -28
  81. package/dist/runtime/app/components/ControlGroup/ControlGroup.d.vue.ts +5 -14
  82. package/dist/runtime/app/components/ControlGroup/ControlGroup.types.d.ts +9 -0
  83. package/dist/runtime/app/components/ControlGroup/ControlGroup.types.js +0 -0
  84. package/dist/runtime/app/components/ControlGroup/ControlGroup.vue.d.ts +5 -14
  85. package/dist/runtime/app/components/DataTable/DataTable.d.vue.ts +64 -0
  86. package/dist/runtime/app/components/DataTable/DataTable.theme.d.ts +17 -0
  87. package/dist/runtime/app/components/DataTable/DataTable.theme.js +19 -0
  88. package/dist/runtime/app/components/DataTable/DataTable.types.d.ts +13 -0
  89. package/dist/runtime/app/components/DataTable/DataTable.types.js +0 -0
  90. package/dist/runtime/app/components/DataTable/DataTable.vue +356 -0
  91. package/dist/runtime/app/components/DataTable/DataTable.vue.d.ts +64 -0
  92. package/dist/runtime/app/components/{Table/internal/useVunoTable.d.ts → DataTable/internal/useVunoDataTable.d.ts} +6 -29
  93. package/dist/runtime/app/components/{Table/internal/useVunoTable.js → DataTable/internal/useVunoDataTable.js} +2 -29
  94. package/dist/runtime/app/components/FieldArray/FieldArray.d.vue.ts +2 -2
  95. package/dist/runtime/app/components/FieldArray/FieldArray.types.d.ts +2 -0
  96. package/dist/runtime/app/components/FieldArray/FieldArray.types.js +0 -0
  97. package/dist/runtime/app/components/FieldArray/FieldArray.vue +12 -5
  98. package/dist/runtime/app/components/FieldArray/FieldArray.vue.d.ts +2 -2
  99. package/dist/runtime/app/components/FieldCheckbox/FieldCheckbox.d.vue.ts +2 -2
  100. package/dist/runtime/app/components/FieldCheckbox/FieldCheckbox.types.d.ts +2 -0
  101. package/dist/runtime/app/components/FieldCheckbox/FieldCheckbox.types.js +0 -0
  102. package/dist/runtime/app/components/FieldCheckbox/FieldCheckbox.vue +1 -1
  103. package/dist/runtime/app/components/FieldCheckbox/FieldCheckbox.vue.d.ts +2 -2
  104. package/dist/runtime/app/components/FieldCheckbox/internal/Checkbox/Checkbox.d.vue.ts +4 -3
  105. package/dist/runtime/app/components/FieldCheckbox/internal/Checkbox/Checkbox.vue.d.ts +4 -3
  106. package/dist/runtime/app/components/FieldColor/FieldColor.d.vue.ts +2 -2
  107. package/dist/runtime/app/components/FieldColor/FieldColor.types.d.ts +2 -0
  108. package/dist/runtime/app/components/FieldColor/FieldColor.types.js +0 -0
  109. package/dist/runtime/app/components/FieldColor/FieldColor.vue +3 -3
  110. package/dist/runtime/app/components/FieldColor/FieldColor.vue.d.ts +2 -2
  111. package/dist/runtime/app/components/FieldCurrency/FieldCurrency.d.vue.ts +2 -2
  112. package/dist/runtime/app/components/FieldCurrency/FieldCurrency.types.d.ts +2 -0
  113. package/dist/runtime/app/components/FieldCurrency/FieldCurrency.types.js +0 -0
  114. package/dist/runtime/app/components/FieldCurrency/FieldCurrency.vue +3 -3
  115. package/dist/runtime/app/components/FieldCurrency/FieldCurrency.vue.d.ts +2 -2
  116. package/dist/runtime/app/components/FieldFile/FieldFile.d.vue.ts +2 -2
  117. package/dist/runtime/app/components/FieldFile/FieldFile.types.d.ts +2 -0
  118. package/dist/runtime/app/components/FieldFile/FieldFile.types.js +0 -0
  119. package/dist/runtime/app/components/FieldFile/FieldFile.vue +1 -1
  120. package/dist/runtime/app/components/FieldFile/FieldFile.vue.d.ts +2 -2
  121. package/dist/runtime/app/components/FieldFile/internal/FileUpload/FileUpload.d.vue.ts +4 -3
  122. package/dist/runtime/app/components/FieldFile/internal/FileUpload/FileUpload.theme.d.ts +1 -0
  123. package/dist/runtime/app/components/FieldFile/internal/FileUpload/FileUpload.theme.js +1 -0
  124. package/dist/runtime/app/components/FieldFile/internal/FileUpload/FileUpload.vue +26 -5
  125. package/dist/runtime/app/components/FieldFile/internal/FileUpload/FileUpload.vue.d.ts +4 -3
  126. package/dist/runtime/app/components/FieldInput/FieldInput.d.vue.ts +4 -4
  127. package/dist/runtime/app/components/FieldInput/FieldInput.types.d.ts +2 -0
  128. package/dist/runtime/app/components/FieldInput/FieldInput.types.js +0 -0
  129. package/dist/runtime/app/components/FieldInput/FieldInput.vue +3 -3
  130. package/dist/runtime/app/components/FieldInput/FieldInput.vue.d.ts +4 -4
  131. package/dist/runtime/app/components/FieldNumber/FieldNumber.d.vue.ts +2 -2
  132. package/dist/runtime/app/components/FieldNumber/FieldNumber.types.d.ts +2 -0
  133. package/dist/runtime/app/components/FieldNumber/FieldNumber.types.js +0 -0
  134. package/dist/runtime/app/components/FieldNumber/FieldNumber.vue +3 -3
  135. package/dist/runtime/app/components/FieldNumber/FieldNumber.vue.d.ts +2 -2
  136. package/dist/runtime/app/components/FieldPassword/FieldPassword.d.vue.ts +2 -2
  137. package/dist/runtime/app/components/FieldPassword/FieldPassword.types.d.ts +2 -0
  138. package/dist/runtime/app/components/FieldPassword/FieldPassword.types.js +0 -0
  139. package/dist/runtime/app/components/FieldPassword/FieldPassword.vue +4 -4
  140. package/dist/runtime/app/components/FieldPassword/FieldPassword.vue.d.ts +2 -2
  141. package/dist/runtime/app/components/FieldRadio/FieldRadio.d.vue.ts +3 -2
  142. package/dist/runtime/app/components/FieldRadio/FieldRadio.types.d.ts +2 -0
  143. package/dist/runtime/app/components/FieldRadio/FieldRadio.types.js +0 -0
  144. package/dist/runtime/app/components/FieldRadio/FieldRadio.vue +1 -1
  145. package/dist/runtime/app/components/FieldRadio/FieldRadio.vue.d.ts +3 -2
  146. package/dist/runtime/app/components/FieldRadio/internal/RadioGroup/RadioGroup.d.vue.ts +4 -4
  147. package/dist/runtime/app/components/FieldRadio/internal/RadioGroup/RadioGroup.vue +6 -2
  148. package/dist/runtime/app/components/FieldRadio/internal/RadioGroup/RadioGroup.vue.d.ts +4 -4
  149. package/dist/runtime/app/components/FieldSearch/FieldSearch.d.vue.ts +3 -3
  150. package/dist/runtime/app/components/FieldSearch/FieldSearch.types.d.ts +2 -0
  151. package/dist/runtime/app/components/FieldSearch/FieldSearch.types.js +0 -0
  152. package/dist/runtime/app/components/FieldSearch/FieldSearch.vue +4 -4
  153. package/dist/runtime/app/components/FieldSearch/FieldSearch.vue.d.ts +3 -3
  154. package/dist/runtime/app/components/FieldSelect/FieldSelect.d.vue.ts +3 -2
  155. package/dist/runtime/app/components/FieldSelect/FieldSelect.types.d.ts +2 -0
  156. package/dist/runtime/app/components/FieldSelect/FieldSelect.types.js +0 -0
  157. package/dist/runtime/app/components/FieldSelect/FieldSelect.vue +1 -1
  158. package/dist/runtime/app/components/FieldSelect/FieldSelect.vue.d.ts +3 -2
  159. package/dist/runtime/app/components/FieldSelect/internal/Select/Select.d.vue.ts +7 -7
  160. package/dist/runtime/app/components/FieldSelect/internal/Select/Select.vue +16 -6
  161. package/dist/runtime/app/components/FieldSelect/internal/Select/Select.vue.d.ts +7 -7
  162. package/dist/runtime/app/components/FieldSlug/FieldSlug.d.vue.ts +2 -2
  163. package/dist/runtime/app/components/FieldSlug/FieldSlug.types.d.ts +2 -0
  164. package/dist/runtime/app/components/FieldSlug/FieldSlug.types.js +0 -0
  165. package/dist/runtime/app/components/FieldSlug/FieldSlug.vue +4 -4
  166. package/dist/runtime/app/components/FieldSlug/FieldSlug.vue.d.ts +2 -2
  167. package/dist/runtime/app/components/FieldSwitch/FieldSwitch.d.vue.ts +2 -2
  168. package/dist/runtime/app/components/FieldSwitch/FieldSwitch.types.d.ts +2 -0
  169. package/dist/runtime/app/components/FieldSwitch/FieldSwitch.types.js +0 -0
  170. package/dist/runtime/app/components/FieldSwitch/FieldSwitch.vue +1 -1
  171. package/dist/runtime/app/components/FieldSwitch/FieldSwitch.vue.d.ts +2 -2
  172. package/dist/runtime/app/components/FieldSwitch/internal/Switch/Switch.d.vue.ts +4 -3
  173. package/dist/runtime/app/components/FieldSwitch/internal/Switch/Switch.vue.d.ts +4 -3
  174. package/dist/runtime/app/components/FieldTags/FieldTags.d.vue.ts +2 -2
  175. package/dist/runtime/app/components/FieldTags/FieldTags.types.d.ts +2 -0
  176. package/dist/runtime/app/components/FieldTags/FieldTags.types.js +0 -0
  177. package/dist/runtime/app/components/FieldTags/FieldTags.vue +1 -1
  178. package/dist/runtime/app/components/FieldTags/FieldTags.vue.d.ts +2 -2
  179. package/dist/runtime/app/components/FieldTags/internal/TagsInput/TagsInput.d.vue.ts +4 -4
  180. package/dist/runtime/app/components/FieldTags/internal/TagsInput/TagsInput.vue +16 -6
  181. package/dist/runtime/app/components/FieldTags/internal/TagsInput/TagsInput.vue.d.ts +4 -4
  182. package/dist/runtime/app/components/FieldTextarea/FieldTextarea.d.vue.ts +2 -2
  183. package/dist/runtime/app/components/FieldTextarea/FieldTextarea.types.d.ts +2 -0
  184. package/dist/runtime/app/components/FieldTextarea/FieldTextarea.types.js +0 -0
  185. package/dist/runtime/app/components/FieldTextarea/FieldTextarea.vue +1 -1
  186. package/dist/runtime/app/components/FieldTextarea/FieldTextarea.vue.d.ts +2 -2
  187. package/dist/runtime/app/components/FieldTextarea/internal/Textarea/Textarea.d.vue.ts +4 -3
  188. package/dist/runtime/app/components/FieldTextarea/internal/Textarea/Textarea.vue +4 -4
  189. package/dist/runtime/app/components/FieldTextarea/internal/Textarea/Textarea.vue.d.ts +4 -3
  190. package/dist/runtime/app/components/Form/Form.d.vue.ts +3 -19
  191. package/dist/runtime/app/components/Form/Form.types.d.ts +8 -0
  192. package/dist/runtime/app/components/Form/Form.types.js +0 -0
  193. package/dist/runtime/app/components/Form/Form.vue +3 -3
  194. package/dist/runtime/app/components/Form/Form.vue.d.ts +3 -19
  195. package/dist/runtime/app/components/FormField/FormField.d.vue.ts +4 -18
  196. package/dist/runtime/app/components/FormField/FormField.types.d.ts +14 -0
  197. package/dist/runtime/app/components/FormField/FormField.types.js +0 -0
  198. package/dist/runtime/app/components/FormField/FormField.vue +26 -10
  199. package/dist/runtime/app/components/FormField/FormField.vue.d.ts +4 -18
  200. package/dist/runtime/app/components/{internal → FormField/internal}/FieldShell/FieldShell.d.vue.ts +2 -3
  201. package/dist/runtime/app/components/{internal → FormField/internal}/FieldShell/FieldShell.vue.d.ts +2 -3
  202. package/dist/runtime/app/components/FormModal/FormModal.d.vue.ts +6 -25
  203. package/dist/runtime/app/components/FormModal/FormModal.types.d.ts +14 -0
  204. package/dist/runtime/app/components/FormModal/FormModal.types.js +0 -0
  205. package/dist/runtime/app/components/FormModal/FormModal.vue +12 -2
  206. package/dist/runtime/app/components/FormModal/FormModal.vue.d.ts +6 -25
  207. package/dist/runtime/app/components/FormSection/FormSection.d.vue.ts +2 -13
  208. package/dist/runtime/app/components/FormSection/FormSection.types.d.ts +7 -0
  209. package/dist/runtime/app/components/FormSection/FormSection.types.js +0 -0
  210. package/dist/runtime/app/components/FormSection/FormSection.vue +11 -4
  211. package/dist/runtime/app/components/FormSection/FormSection.vue.d.ts +2 -13
  212. package/dist/runtime/app/components/Icon/Icon.d.vue.ts +2 -4
  213. package/dist/runtime/app/components/Icon/Icon.types.d.ts +3 -0
  214. package/dist/runtime/app/components/Icon/Icon.types.js +0 -0
  215. package/dist/runtime/app/components/Icon/Icon.vue.d.ts +2 -4
  216. package/dist/runtime/app/components/Menu/Menu.d.vue.ts +4 -21
  217. package/dist/runtime/app/components/Menu/Menu.types.d.ts +7 -0
  218. package/dist/runtime/app/components/Menu/Menu.types.js +0 -0
  219. package/dist/runtime/app/components/Menu/Menu.vue +18 -110
  220. package/dist/runtime/app/components/Menu/Menu.vue.d.ts +4 -21
  221. package/dist/runtime/app/components/Menu/internal/MenuLevel/MenuLevel.d.vue.ts +26 -0
  222. package/dist/runtime/app/components/Menu/internal/MenuLevel/MenuLevel.vue +167 -0
  223. package/dist/runtime/app/components/Menu/internal/MenuLevel/MenuLevel.vue.d.ts +26 -0
  224. package/dist/runtime/app/components/Modal/Modal.d.vue.ts +6 -18
  225. package/dist/runtime/app/components/Modal/Modal.theme.d.ts +18 -14
  226. package/dist/runtime/app/components/Modal/Modal.theme.js +17 -21
  227. package/dist/runtime/app/components/Modal/Modal.types.d.ts +12 -0
  228. package/dist/runtime/app/components/Modal/Modal.types.js +0 -0
  229. package/dist/runtime/app/components/Modal/Modal.vue +99 -65
  230. package/dist/runtime/app/components/Modal/Modal.vue.d.ts +6 -18
  231. package/dist/runtime/app/components/Navbar/Navbar.d.vue.ts +3 -28
  232. package/dist/runtime/app/components/Navbar/Navbar.theme.d.ts +2 -3
  233. package/dist/runtime/app/components/Navbar/Navbar.theme.js +2 -3
  234. package/dist/runtime/app/components/Navbar/Navbar.types.d.ts +4 -0
  235. package/dist/runtime/app/components/Navbar/Navbar.types.js +0 -0
  236. package/dist/runtime/app/components/Navbar/Navbar.vue.d.ts +3 -28
  237. package/dist/runtime/app/components/NavigationList/NavigationList.d.vue.ts +4 -33
  238. package/dist/runtime/app/components/NavigationList/NavigationList.keys.d.ts +3 -0
  239. package/dist/runtime/app/components/NavigationList/NavigationList.keys.js +1 -0
  240. package/dist/runtime/app/components/NavigationList/NavigationList.types.d.ts +9 -0
  241. package/dist/runtime/app/components/NavigationList/NavigationList.types.js +0 -0
  242. package/dist/runtime/app/components/NavigationList/NavigationList.vue +65 -19
  243. package/dist/runtime/app/components/NavigationList/NavigationList.vue.d.ts +4 -33
  244. package/dist/runtime/app/components/NavigationMenu/NavigationMenu.d.vue.ts +3 -24
  245. package/dist/runtime/app/components/NavigationMenu/NavigationMenu.keys.d.ts +7 -0
  246. package/dist/runtime/app/components/NavigationMenu/NavigationMenu.keys.js +3 -0
  247. package/dist/runtime/app/components/NavigationMenu/NavigationMenu.types.d.ts +10 -0
  248. package/dist/runtime/app/components/NavigationMenu/NavigationMenu.types.js +0 -0
  249. package/dist/runtime/app/components/NavigationMenu/NavigationMenu.vue +45 -13
  250. package/dist/runtime/app/components/NavigationMenu/NavigationMenu.vue.d.ts +3 -24
  251. package/dist/runtime/app/components/NavigationToc/NavigationToc.d.vue.ts +3 -10
  252. package/dist/runtime/app/components/NavigationToc/NavigationToc.types.d.ts +7 -0
  253. package/dist/runtime/app/components/NavigationToc/NavigationToc.types.js +0 -0
  254. package/dist/runtime/app/components/NavigationToc/NavigationToc.vue +8 -1
  255. package/dist/runtime/app/components/NavigationToc/NavigationToc.vue.d.ts +3 -10
  256. package/dist/runtime/app/components/Pagination/Pagination.d.vue.ts +5 -23
  257. package/dist/runtime/app/components/Pagination/Pagination.types.d.ts +11 -0
  258. package/dist/runtime/app/components/Pagination/Pagination.types.js +0 -0
  259. package/dist/runtime/app/components/Pagination/Pagination.vue +6 -2
  260. package/dist/runtime/app/components/Pagination/Pagination.vue.d.ts +5 -23
  261. package/dist/runtime/app/components/Slideover/Slideover.d.vue.ts +4 -13
  262. package/dist/runtime/app/components/Slideover/Slideover.types.d.ts +12 -0
  263. package/dist/runtime/app/components/Slideover/Slideover.types.js +0 -0
  264. package/dist/runtime/app/components/Slideover/Slideover.vue.d.ts +4 -13
  265. package/dist/runtime/app/components/State/State.d.vue.ts +2 -2
  266. package/dist/runtime/app/components/State/State.types.d.ts +15 -0
  267. package/dist/runtime/app/components/State/State.types.js +0 -0
  268. package/dist/runtime/app/components/State/State.vue +13 -3
  269. package/dist/runtime/app/components/State/State.vue.d.ts +2 -2
  270. package/dist/runtime/app/components/Table/Table.d.vue.ts +8 -55
  271. package/dist/runtime/app/components/Table/Table.theme.d.ts +17 -35
  272. package/dist/runtime/app/components/Table/Table.theme.js +15 -48
  273. package/dist/runtime/app/components/Table/Table.types.d.ts +9 -0
  274. package/dist/runtime/app/components/Table/Table.types.js +0 -0
  275. package/dist/runtime/app/components/Table/Table.vue +143 -415
  276. package/dist/runtime/app/components/Table/Table.vue.d.ts +8 -55
  277. package/dist/runtime/app/components/Table/internal/CellBoolean/CellBoolean.vue +13 -3
  278. package/dist/runtime/app/components/Table/internal/CellCurrency/CellCurrency.vue +8 -1
  279. package/dist/runtime/app/components/Table/internal/CellDate/CellDate.vue +8 -1
  280. package/dist/runtime/app/components/Table/internal/CellNumber/CellNumber.vue +8 -1
  281. package/dist/runtime/app/components/Table/internal/CellText/CellText.vue +8 -1
  282. package/dist/runtime/app/components/Table/internal/TableCell/TableCell.d.vue.ts +2 -2
  283. package/dist/runtime/app/components/Table/internal/TableCell/TableCell.vue.d.ts +2 -2
  284. package/dist/runtime/app/components/Table/internal/column.d.ts +9 -0
  285. package/dist/runtime/app/components/Table/internal/column.js +15 -0
  286. package/dist/runtime/app/components/Table/internal/useVunoTableSelection.d.ts +1 -1
  287. package/dist/runtime/app/components/Tabs/Tabs.d.vue.ts +5 -24
  288. package/dist/runtime/app/components/Tabs/Tabs.theme.d.ts +15 -6
  289. package/dist/runtime/app/components/Tabs/Tabs.theme.js +15 -6
  290. package/dist/runtime/app/components/Tabs/Tabs.types.d.ts +10 -0
  291. package/dist/runtime/app/components/Tabs/Tabs.types.js +0 -0
  292. package/dist/runtime/app/components/Tabs/Tabs.vue +91 -17
  293. package/dist/runtime/app/components/Tabs/Tabs.vue.d.ts +5 -24
  294. package/dist/runtime/app/components/Text/Text.d.vue.ts +19 -0
  295. package/dist/runtime/app/components/Text/Text.theme.d.ts +55 -0
  296. package/dist/runtime/app/components/Text/Text.theme.js +28 -0
  297. package/dist/runtime/app/components/Text/Text.types.d.ts +9 -0
  298. package/dist/runtime/app/components/Text/Text.types.js +0 -0
  299. package/dist/runtime/app/components/Text/Text.vue +37 -0
  300. package/dist/runtime/app/components/Text/Text.vue.d.ts +19 -0
  301. package/dist/runtime/app/components/Toolbar/Toolbar.d.vue.ts +17 -0
  302. package/dist/runtime/app/components/Toolbar/Toolbar.theme.d.ts +5 -0
  303. package/dist/runtime/app/components/Toolbar/Toolbar.theme.js +6 -0
  304. package/dist/runtime/app/components/Toolbar/Toolbar.types.d.ts +9 -0
  305. package/dist/runtime/app/components/Toolbar/Toolbar.types.js +0 -0
  306. package/dist/runtime/app/components/Toolbar/Toolbar.vue +76 -0
  307. package/dist/runtime/app/components/Toolbar/Toolbar.vue.d.ts +17 -0
  308. package/dist/runtime/app/components/Tooltip/Tooltip.d.vue.ts +5 -26
  309. package/dist/runtime/app/components/Tooltip/Tooltip.types.d.ts +11 -0
  310. package/dist/runtime/app/components/Tooltip/Tooltip.types.js +0 -0
  311. package/dist/runtime/app/components/Tooltip/Tooltip.vue +1 -1
  312. package/dist/runtime/app/components/Tooltip/Tooltip.vue.d.ts +5 -26
  313. package/dist/runtime/app/composables/internal/useVunoContext.d.ts +5 -0
  314. package/dist/runtime/app/composables/internal/useVunoContext.js +8 -0
  315. package/dist/runtime/app/composables/internal/useVunoControlGroup.d.ts +3 -4
  316. package/dist/runtime/app/composables/internal/useVunoDirection.d.ts +5 -0
  317. package/dist/runtime/app/composables/internal/useVunoDirection.js +8 -0
  318. package/dist/runtime/app/composables/internal/useVunoFormContext.d.ts +5 -0
  319. package/dist/runtime/app/composables/internal/useVunoFormContext.js +8 -0
  320. package/dist/runtime/app/composables/internal/useVunoOverlayBehind.d.ts +6 -0
  321. package/dist/runtime/app/composables/internal/useVunoOverlayBehind.js +8 -0
  322. package/dist/runtime/app/composables/useContext.js +2 -3
  323. package/dist/runtime/app/composables/useForm.js +2 -3
  324. package/dist/runtime/app/composables/useTableQuery.d.ts +1 -1
  325. package/dist/runtime/app/composables/useTheme.js +6 -3
  326. package/dist/runtime/app/{components/internal/ControlShell/ControlShell.vue.d.ts → primitives/PrimitiveControl/PrimitiveControl.d.vue.ts} +4 -3
  327. package/dist/runtime/app/{components/internal/ControlShell/ControlShell.theme.d.ts → primitives/PrimitiveControl/PrimitiveControl.theme.d.ts} +1 -1
  328. package/dist/runtime/app/{components/internal/ControlShell/ControlShell.vue → primitives/PrimitiveControl/PrimitiveControl.vue} +1 -1
  329. package/dist/runtime/app/{components/internal/ControlShell/ControlShell.d.vue.ts → primitives/PrimitiveControl/PrimitiveControl.vue.d.ts} +4 -3
  330. package/dist/runtime/app/{components/internal/Input/Input.d.vue.ts → primitives/PrimitiveInput/PrimitiveInput.d.vue.ts} +4 -3
  331. package/dist/runtime/app/{components/internal/Input/Input.vue → primitives/PrimitiveInput/PrimitiveInput.vue} +4 -4
  332. package/dist/runtime/app/{components/internal/Input/Input.vue.d.ts → primitives/PrimitiveInput/PrimitiveInput.vue.d.ts} +4 -3
  333. package/dist/runtime/app/{components/internal/NumberInput/NumberInput.d.vue.ts → primitives/PrimitiveNumberInput/PrimitiveNumberInput.d.vue.ts} +3 -4
  334. package/dist/runtime/app/{components/internal/NumberInput/NumberInput.theme.d.ts → primitives/PrimitiveNumberInput/PrimitiveNumberInput.theme.d.ts} +3 -0
  335. package/dist/runtime/app/{components/internal/NumberInput/NumberInput.theme.js → primitives/PrimitiveNumberInput/PrimitiveNumberInput.theme.js} +4 -1
  336. package/dist/runtime/app/{components/internal/NumberInput/NumberInput.vue → primitives/PrimitiveNumberInput/PrimitiveNumberInput.vue} +7 -5
  337. package/dist/runtime/app/{components/internal/NumberInput/NumberInput.vue.d.ts → primitives/PrimitiveNumberInput/PrimitiveNumberInput.vue.d.ts} +3 -4
  338. package/dist/runtime/app/theme/index.d.ts +254 -96
  339. package/dist/runtime/app/theme/index.js +13 -5
  340. package/dist/runtime/app/theme/messages.js +1 -0
  341. package/dist/runtime/app/theme/shared.d.ts +3 -2
  342. package/dist/runtime/app/theme/shared.js +2 -1
  343. package/dist/runtime/app/types/app.d.ts +4 -2
  344. package/dist/runtime/app/types/base.d.ts +5 -23
  345. package/dist/runtime/app/types/field.d.ts +3 -1
  346. package/dist/runtime/app/types/form.d.ts +3 -4
  347. package/dist/runtime/app/types/index.d.ts +55 -7
  348. package/dist/runtime/app/types/menu.d.ts +22 -0
  349. package/dist/runtime/app/types/menu.js +0 -0
  350. package/dist/runtime/app/types/page.d.ts +6 -10
  351. package/dist/runtime/app/types/slots.d.ts +8 -4
  352. package/dist/runtime/app/types/table.d.ts +28 -28
  353. package/dist/runtime/app/types/text.d.ts +6 -0
  354. package/dist/runtime/app/types/text.js +0 -0
  355. package/dist/runtime/app/types/theme.d.ts +15 -6
  356. package/dist/runtime/app/utils/format.js +3 -2
  357. package/dist/runtime/app/utils/path.js +1 -1
  358. package/dist/runtime/app/{internal → utils}/slots.d.ts +2 -2
  359. package/dist/runtime/app/utils/theme.d.ts +8 -41
  360. package/dist/runtime/app/utils/theme.js +31 -29
  361. package/package.json +9 -9
  362. package/dist/runtime/app/components/Page/Page.d.vue.ts +0 -40
  363. package/dist/runtime/app/components/Page/Page.theme.d.ts +0 -32
  364. package/dist/runtime/app/components/Page/Page.theme.js +0 -31
  365. package/dist/runtime/app/components/Page/Page.vue +0 -132
  366. package/dist/runtime/app/components/Page/Page.vue.d.ts +0 -40
  367. package/dist/runtime/app/internal/keys.d.ts +0 -43
  368. package/dist/runtime/app/internal/keys.js +0 -8
  369. package/dist/runtime/app/types/alert.d.ts +0 -13
  370. package/dist/runtime/app/types/state.d.ts +0 -35
  371. /package/dist/runtime/app/{types/alert.js → components/Alert/Alert.types.js} +0 -0
  372. /package/dist/runtime/app/{types/state.js → components/App/App.types.js} +0 -0
  373. /package/dist/runtime/app/components/{Table → DataTable}/internal/query.d.ts +0 -0
  374. /package/dist/runtime/app/components/{Table → DataTable}/internal/query.js +0 -0
  375. /package/dist/runtime/app/components/{internal → FormField/internal}/FieldShell/FieldShell.vue +0 -0
  376. /package/dist/runtime/app/{components/internal/ControlShell/ControlShell.theme.js → primitives/PrimitiveControl/PrimitiveControl.theme.js} +0 -0
  377. /package/dist/runtime/app/{components/internal/Input/Input.theme.d.ts → primitives/PrimitiveInput/PrimitiveInput.theme.d.ts} +0 -0
  378. /package/dist/runtime/app/{components/internal/Input/Input.theme.js → primitives/PrimitiveInput/PrimitiveInput.theme.js} +0 -0
  379. /package/dist/runtime/app/{components/internal/NumberInput → primitives/PrimitiveNumberInput}/number.d.ts +0 -0
  380. /package/dist/runtime/app/{components/internal/NumberInput → primitives/PrimitiveNumberInput}/number.js +0 -0
  381. /package/dist/runtime/app/{internal → utils}/slots.js +0 -0
@@ -1 +1 @@
1
- @layer base{:root{color-scheme:light;--vuno-color-white:oklch(100% 0 0);--vuno-color-slate-50:oklch(98.4% 0.003 247.858);--vuno-color-slate-100:oklch(96.8% 0.007 247.896);--vuno-color-slate-200:oklch(92.9% 0.013 255.508);--vuno-color-slate-300:oklch(86.9% 0.022 252.894);--vuno-color-slate-400:oklch(70.4% 0.04 256.788);--vuno-color-slate-500:oklch(55.4% 0.046 257.417);--vuno-color-slate-600:oklch(44.6% 0.043 257.281);--vuno-color-slate-700:oklch(37.2% 0.044 257.287);--vuno-color-slate-800:oklch(27.9% 0.041 260.031);--vuno-color-slate-900:oklch(20.8% 0.042 265.755);--vuno-color-slate-950:oklch(12.9% 0.042 264.695);--vuno-color-black:oklch(0% 0 0);--vuno-color-blue-400:oklch(70.7% 0.165 254.624);--vuno-color-blue-600:oklch(54.6% 0.245 262.881);--vuno-color-violet-400:oklch(70.2% 0.183 293.541);--vuno-color-violet-600:oklch(54.1% 0.281 293.009);--vuno-color-emerald-400:oklch(76.5% 0.177 163.223);--vuno-color-emerald-700:oklch(50.8% 0.118 165.612);--vuno-color-cyan-400:oklch(78.9% 0.154 211.53);--vuno-color-cyan-700:oklch(52% 0.105 223.128);--vuno-color-red-400:oklch(70.4% 0.191 22.216);--vuno-color-red-700:oklch(50.5% 0.213 27.518);--vuno-color-amber-300:oklch(87.9% 0.169 91.605);--vuno-color-amber-400:oklch(82.8% 0.189 84.429);--dashboard-navbar-height:64px;--dashboard-aside-width:384px;--vuno-font-sans:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--vuno-font-mono:"JetBrains Mono",ui-monospace,"Cascadia Code","Source Code Pro",Menlo,monospace;--vuno-primary:var(--vuno-color-blue-600);--vuno-primary-contrast:var(--vuno-color-white);--vuno-secondary:var(--vuno-color-violet-600);--vuno-secondary-contrast:var(--vuno-color-white);--vuno-neutral:var(--vuno-color-slate-600);--vuno-neutral-contrast:var(--vuno-color-white);--vuno-surface:var(--vuno-color-white);--vuno-surface-1:var(--vuno-color-slate-100);--vuno-surface-2:var(--vuno-color-slate-200);--vuno-surface-inverse:var(--vuno-color-slate-900);--vuno-text-strong:var(--vuno-color-slate-900);--vuno-text-body:var(--vuno-color-slate-700);--vuno-text-muted:var(--vuno-color-slate-600);--vuno-text-subtle:var(--vuno-color-slate-400);--vuno-text-inverse:var(--vuno-color-slate-50);--vuno-border:var(--vuno-color-slate-300);--vuno-border-strong:var(--vuno-color-slate-500);--vuno-success:var(--vuno-color-emerald-700);--vuno-success-contrast:var(--vuno-color-white);--vuno-info:var(--vuno-color-cyan-700);--vuno-info-contrast:var(--vuno-color-white);--vuno-warning:var(--vuno-color-amber-400);--vuno-warning-contrast:var(--vuno-color-slate-900);--vuno-error:var(--vuno-color-red-700);--vuno-error-contrast:var(--vuno-color-white)}.dark{color-scheme:dark;--vuno-primary:var(--vuno-color-blue-400);--vuno-primary-contrast:var(--vuno-color-slate-950);--vuno-secondary:var(--vuno-color-violet-400);--vuno-secondary-contrast:var(--vuno-color-slate-950);--vuno-neutral:var(--vuno-color-slate-400);--vuno-neutral-contrast:var(--vuno-color-slate-950);--vuno-surface:var(--vuno-color-black);--vuno-surface-1:var(--vuno-color-slate-900);--vuno-surface-2:var(--vuno-color-slate-800);--vuno-surface-inverse:var(--vuno-color-slate-50);--vuno-text-strong:var(--vuno-color-white);--vuno-text-body:var(--vuno-color-slate-200);--vuno-text-muted:var(--vuno-color-slate-400);--vuno-text-subtle:var(--vuno-color-slate-500);--vuno-text-inverse:var(--vuno-color-slate-900);--vuno-border:var(--vuno-color-slate-700);--vuno-border-strong:var(--vuno-color-slate-500);--vuno-success:var(--vuno-color-emerald-400);--vuno-success-contrast:var(--vuno-color-slate-950);--vuno-info:var(--vuno-color-cyan-400);--vuno-info-contrast:var(--vuno-color-slate-950);--vuno-warning:var(--vuno-color-amber-300);--vuno-warning-contrast:var(--vuno-color-slate-950);--vuno-error:var(--vuno-color-red-400);--vuno-error-contrast:var(--vuno-color-slate-950)}html{scrollbar-gutter:stable}body{background-color:var(--vuno-surface);color:var(--vuno-text-body);font-family:var(--vuno-font-sans);font-optical-sizing:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}}
1
+ @layer base{:root{color-scheme:light;--vuno-color-white:oklch(100% 0 0);--vuno-color-slate-50:oklch(98.75% 0 0);--vuno-color-slate-100:oklch(98% 0 0);--vuno-color-slate-200:oklch(96.5% 0 0);--vuno-color-slate-300:oklch(92.2% 0 0);--vuno-color-slate-400:oklch(70.8% 0 0);--vuno-color-slate-500:oklch(55.6% 0 0);--vuno-color-slate-600:oklch(43.9% 0 0);--vuno-color-slate-700:oklch(32% 0 0);--vuno-color-slate-800:oklch(26.9% 0 0);--vuno-color-slate-900:oklch(20.5% 0 0);--vuno-color-slate-925:oklch(17% 0 0);--vuno-color-slate-950:oklch(10% 0 0);--vuno-color-blue-400:oklch(75.668% 0.1242 263.014);--vuno-color-blue-600:oklch(53.463% 0.1595 261.622);--vuno-color-violet-400:oklch(78.263% 0.0571 279.398);--vuno-color-violet-600:oklch(50.733% 0.0826 278.816);--vuno-color-emerald-400:oklch(78.38% 0.0683 165.304);--vuno-color-emerald-700:oklch(51.266% 0.071 168.046);--vuno-color-cyan-400:oklch(78.873% 0.0666 223.957);--vuno-color-cyan-700:oklch(51.089% 0.0694 228.76);--vuno-color-red-400:oklch(76.599% 0.0951 15.392);--vuno-color-red-700:oklch(54.926% 0.1344 17.946);--vuno-color-amber-300:oklch(79.558% 0.1002 81.479);--vuno-color-amber-400:oklch(51.495% 0.0997 72.607);--vuno-font-sans:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--vuno-font-mono:"JetBrains Mono",ui-monospace,"Cascadia Code","Source Code Pro",Menlo,monospace;--vuno-primary:var(--vuno-color-blue-600);--vuno-primary-contrast:var(--vuno-color-white);--vuno-secondary:var(--vuno-color-violet-600);--vuno-secondary-contrast:var(--vuno-color-white);--vuno-neutral:var(--vuno-color-slate-600);--vuno-neutral-contrast:var(--vuno-color-white);--vuno-surface:var(--vuno-color-white);--vuno-surface-1:var(--vuno-color-slate-100);--vuno-surface-2:var(--vuno-color-slate-200);--vuno-surface-inverse:var(--vuno-color-slate-900);--vuno-text-strong:var(--vuno-color-slate-900);--vuno-text-body:var(--vuno-color-slate-700);--vuno-text-muted:var(--vuno-color-slate-600);--vuno-text-subtle:var(--vuno-color-slate-400);--vuno-text-inverse:var(--vuno-color-slate-50);--vuno-border:var(--vuno-color-slate-300);--vuno-border-strong:var(--vuno-color-slate-500);--vuno-success:var(--vuno-color-emerald-700);--vuno-success-contrast:var(--vuno-color-white);--vuno-info:var(--vuno-color-cyan-700);--vuno-info-contrast:var(--vuno-color-white);--vuno-warning:var(--vuno-color-amber-400);--vuno-warning-contrast:var(--vuno-color-white);--vuno-error:var(--vuno-color-red-700);--vuno-error-contrast:var(--vuno-color-white);--vuno-brand:var(--vuno-color-blue-600);--vuno-brand-hover:oklch(47.771% 0.1444 262.217);--vuno-brand-contrast:var(--vuno-color-white);--vuno-control:var(--vuno-color-white);--vuno-tint:oklch(97% 0 0);--vuno-line:oklch(14.5% 0 0/10%);--vuno-focus:oklch(15% 0 0);--vuno-danger-solid:var(--vuno-color-red-700);--vuno-danger-solid-hover:oklch(47.974% 0.1224 17.032);--vuno-danger-solid-contrast:var(--vuno-color-white)}.dark{color-scheme:dark;--vuno-primary:var(--vuno-color-blue-400);--vuno-primary-contrast:var(--vuno-color-slate-950);--vuno-secondary:var(--vuno-color-violet-400);--vuno-secondary-contrast:var(--vuno-color-slate-950);--vuno-neutral:var(--vuno-color-slate-400);--vuno-neutral-contrast:var(--vuno-color-slate-950);--vuno-surface:var(--vuno-color-slate-950);--vuno-surface-1:var(--vuno-color-slate-925);--vuno-surface-2:var(--vuno-color-slate-800);--vuno-surface-inverse:var(--vuno-color-slate-100);--vuno-text-strong:var(--vuno-color-white);--vuno-text-body:var(--vuno-color-slate-300);--vuno-text-muted:var(--vuno-color-slate-400);--vuno-text-subtle:var(--vuno-color-slate-500);--vuno-text-inverse:var(--vuno-color-slate-900);--vuno-border:var(--vuno-color-slate-700);--vuno-success:var(--vuno-color-emerald-400);--vuno-success-contrast:var(--vuno-color-slate-950);--vuno-info:var(--vuno-color-cyan-400);--vuno-info-contrast:var(--vuno-color-slate-950);--vuno-warning:var(--vuno-color-amber-300);--vuno-warning-contrast:var(--vuno-color-slate-950);--vuno-error:var(--vuno-color-red-400);--vuno-error-contrast:var(--vuno-color-slate-950);--vuno-control:oklch(21% 0.006 285.885);--vuno-tint:oklch(26.9% 0 0);--vuno-line:oklch(32% 0 0);--vuno-focus:oklch(93.5% 0 0)}html{scrollbar-gutter:stable}body{background-color:var(--vuno-surface);color:var(--vuno-text-body);font-family:var(--vuno-font-sans);font-optical-sizing:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}}
@@ -1,5 +1,5 @@
1
- import type { VunoAlertProps } from '#vuno/types/alert';
2
1
  import type { VunoColor } from '#vuno/types/base';
2
+ import type { VunoAlertProps } from './Alert.types.js';
3
3
  type __VLS_Slots = {
4
4
  /** Acciones relacionadas con el aviso. */
5
5
  actions?: () => unknown;
@@ -8,7 +8,7 @@ type __VLS_Slots = {
8
8
  };
9
9
  declare const __VLS_base: import("vue").DefineComponent<VunoAlertProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<VunoAlertProps> & Readonly<{}>, {
10
10
  color: VunoColor;
11
- role: "alert" | "status";
11
+ role: "alert" | "status" | null;
12
12
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
13
13
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
14
14
  declare const _default: typeof __VLS_export;
@@ -1,11 +1,12 @@
1
1
  export declare const alertTheme: Record<"alert", {
2
2
  readonly slots: {
3
- readonly actions: "mt-3 flex flex-wrap items-center gap-2 empty:hidden";
4
- readonly body: "min-w-0 flex-1";
5
- readonly description: "mt-1 text-sm text-vuno-body";
6
- readonly icon: "size-5 shrink-0 self-center text-(--vuno-accent)";
7
- readonly root: "flex w-full items-start gap-3 rounded-sm bg-(--vuno-accent)/10 p-4 ring-1 ring-(--vuno-accent)/25 ring-inset";
8
- readonly title: "font-medium text-vuno-strong";
3
+ readonly actions: "flex shrink-0 flex-wrap items-center gap-2 empty:hidden";
4
+ readonly body: "flex min-w-0 flex-1 flex-wrap items-center justify-between gap-3";
5
+ readonly content: "flex min-w-0 flex-1 flex-col gap-0.5";
6
+ readonly description: "text-sm leading-snug text-(--vuno-accent)";
7
+ readonly icon: "mt-0.5 size-4 shrink-0 text-(--vuno-accent)";
8
+ readonly root: "flex w-full items-start gap-3 rounded-lg bg-(--vuno-accent)/10 px-4 py-3";
9
+ readonly title: "text-sm leading-snug font-medium text-(--vuno-accent)";
9
10
  };
10
11
  readonly variants: {
11
12
  readonly color: Record<import("../../types/base.js").VunoColor, Record<"root", string>>;
@@ -2,12 +2,13 @@ import { accentByColor } from "#vuno/theme/shared";
2
2
  import { defineTheme } from "#vuno/utils/theme";
3
3
  export const alertTheme = defineTheme("alert", {
4
4
  slots: {
5
- actions: "mt-3 flex flex-wrap items-center gap-2 empty:hidden",
6
- body: "min-w-0 flex-1",
7
- description: "mt-1 text-sm text-vuno-body",
8
- icon: "size-5 shrink-0 self-center text-(--vuno-accent)",
9
- root: "flex w-full items-start gap-3 rounded-sm bg-(--vuno-accent)/10 p-4 ring-1 ring-(--vuno-accent)/25 ring-inset",
10
- title: "font-medium text-vuno-strong"
5
+ actions: "flex shrink-0 flex-wrap items-center gap-2 empty:hidden",
6
+ body: "flex min-w-0 flex-1 flex-wrap items-center justify-between gap-3",
7
+ content: "flex min-w-0 flex-1 flex-col gap-0.5",
8
+ description: "text-sm leading-snug text-(--vuno-accent)",
9
+ icon: "mt-0.5 size-4 shrink-0 text-(--vuno-accent)",
10
+ root: "flex w-full items-start gap-3 rounded-lg bg-(--vuno-accent)/10 px-4 py-3",
11
+ title: "text-sm leading-snug font-medium text-(--vuno-accent)"
11
12
  },
12
13
  variants: { color: accentByColor("root") }
13
14
  });
@@ -0,0 +1,10 @@
1
+ import type { VunoColor } from '#vuno/types/base';
2
+ import type { VunoUi } from '#vuno/types/slots';
3
+ export type VunoAlertProps = {
4
+ color?: VunoColor;
5
+ description?: string;
6
+ icon?: null | string;
7
+ role?: 'alert' | 'status' | null;
8
+ title: string;
9
+ ui?: VunoUi<'alert'>;
10
+ };
@@ -2,12 +2,13 @@
2
2
  import { computed } from "vue";
3
3
  import { useIcons, useTheme } from "#vuno/composables/useTheme";
4
4
  import Icon from "#vuno/components/Icon/Icon.vue";
5
+ import Text from "#vuno/components/Text/Text.vue";
5
6
  defineOptions({ name: "VunoAlert" });
6
7
  const props = defineProps({
7
8
  color: { type: String, required: false, default: "info" },
8
9
  description: { type: String, required: false },
9
10
  icon: { type: [null, String], required: false },
10
- role: { type: String, required: false, default: "status" },
11
+ role: { type: [String, null], required: false, default: "status" },
11
12
  title: { type: String, required: true },
12
13
  ui: { type: Object, required: false }
13
14
  });
@@ -33,7 +34,7 @@ const ui = useTheme(
33
34
  <template>
34
35
  <div
35
36
  :class="ui.root"
36
- :role="props.role"
37
+ :role="props.role ?? void 0"
37
38
  >
38
39
  <Icon
39
40
  v-if="iconName"
@@ -42,13 +43,21 @@ const ui = useTheme(
42
43
  />
43
44
 
44
45
  <div :class="ui.body">
45
- <p :class="ui.title">{{ props.title }}</p>
46
+ <div :class="ui.content">
47
+ <Text
48
+ :class="ui.title"
49
+ tag="p"
50
+ tone="inherit"
51
+ variant="inherit"
52
+ >{{ props.title }}</Text
53
+ >
46
54
 
47
- <div
48
- v-if="props.description || $slots.default"
49
- :class="ui.description"
50
- >
51
- <slot>{{ props.description }}</slot>
55
+ <div
56
+ v-if="props.description || $slots.default"
57
+ :class="ui.description"
58
+ >
59
+ <slot>{{ props.description }}</slot>
60
+ </div>
52
61
  </div>
53
62
 
54
63
  <div :class="ui.actions">
@@ -1,5 +1,5 @@
1
- import type { VunoAlertProps } from '#vuno/types/alert';
2
1
  import type { VunoColor } from '#vuno/types/base';
2
+ import type { VunoAlertProps } from './Alert.types.js';
3
3
  type __VLS_Slots = {
4
4
  /** Acciones relacionadas con el aviso. */
5
5
  actions?: () => unknown;
@@ -8,7 +8,7 @@ type __VLS_Slots = {
8
8
  };
9
9
  declare const __VLS_base: import("vue").DefineComponent<VunoAlertProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<VunoAlertProps> & Readonly<{}>, {
10
10
  color: VunoColor;
11
- role: "alert" | "status";
11
+ role: "alert" | "status" | null;
12
12
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
13
13
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
14
14
  declare const _default: typeof __VLS_export;
@@ -1,22 +1,6 @@
1
1
  import { type Component } from 'vue';
2
2
  import type { VunoAlertRequest, VunoConfirmRequest, VunoNotifyRequest } from '#vuno/types/app';
3
- /**
4
- * Raíz del módulo: provee el contexto global, aloja los overlays y la pila
5
- * de notificaciones.
6
- *
7
- * Monta directamente todo lo que necesitan las piezas del módulo.
8
- */
9
- type Props = {
10
- /**
11
- * Dirección de lectura.
12
- *
13
- * Se provee a los componentes que la necesitan —hoy solo las
14
- * pestañas, para invertir sus flechas— y se pone además en el
15
- * elemento, que es de donde la lee el navegador para el texto y
16
- * para las propiedades lógicas del CSS.
17
- */
18
- dir?: 'ltr' | 'rtl';
19
- };
3
+ import type { VunoAppProps } from './App.types.js';
20
4
  /**
21
5
  * Monta un componente y espera a que emita `close`.
22
6
  *
@@ -32,14 +16,14 @@ declare var __VLS_1: {};
32
16
  type __VLS_Slots = {} & {
33
17
  default?: (props: typeof __VLS_1) => any;
34
18
  };
35
- declare const __VLS_base: import("vue").DefineComponent<Props, {
19
+ declare const __VLS_base: import("vue").DefineComponent<VunoAppProps, {
36
20
  alert: (request: VunoAlertRequest) => Promise<void>;
37
21
  closeAll: typeof closeAll;
38
22
  confirm: (request: VunoConfirmRequest) => Promise<boolean>;
39
23
  dismiss: typeof dismiss;
40
24
  notify: typeof notify;
41
25
  open: typeof open;
42
- }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
26
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<VunoAppProps> & Readonly<{}>, {
43
27
  dir: "ltr" | "rtl";
44
28
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
45
29
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -0,0 +1,4 @@
1
+ export type VunoAppProps = {
2
+ /** Dirección de lectura que heredan los componentes. */
3
+ dir?: 'ltr' | 'rtl';
4
+ };
@@ -1,6 +1,7 @@
1
1
  <script setup>
2
- import { markRaw, onBeforeUnmount, provide, reactive, shallowReactive } from "vue";
3
- import { vunoContextInjectionKey, vunoDirectionInjectionKey } from "#vuno/internal/keys";
2
+ import { markRaw, onBeforeUnmount, reactive, shallowReactive } from "vue";
3
+ import { provideVunoContext } from "#vuno/composables/internal/useVunoContext";
4
+ import { provideVunoDirection } from "#vuno/composables/internal/useVunoDirection";
4
5
  import Overlay from "#vuno/components/App/internal/Overlay/Overlay.vue";
5
6
  import Toaster from "#vuno/components/App/internal/Toaster/Toaster.vue";
6
7
  import Confirm from "#vuno/components/Confirm/Confirm.vue";
@@ -11,26 +12,41 @@ const props = defineProps({
11
12
  const notifications = shallowReactive([]);
12
13
  const overlays = reactive([]);
13
14
  let nextId = 0;
15
+ let unmounting = false;
14
16
  const EXIT_MS = 220;
17
+ const overlayRemovalTimers = /* @__PURE__ */ new Map();
15
18
  function removeOverlay(id) {
19
+ const timer = overlayRemovalTimers.get(id);
20
+ if (timer) {
21
+ clearTimeout(timer);
22
+ overlayRemovalTimers.delete(id);
23
+ }
16
24
  const index = overlays.findIndex((entry) => entry.id === id);
17
25
  if (index !== -1) overlays.splice(index, 1);
18
26
  }
19
27
  function dismissOverlay(id) {
20
28
  const entry = overlays.find((item) => item.id === id);
21
- if (entry) entry.open = false;
22
- setTimeout(() => removeOverlay(id), EXIT_MS);
29
+ if (!entry) return;
30
+ entry.open = false;
31
+ if (unmounting) {
32
+ removeOverlay(id);
33
+ return;
34
+ }
35
+ overlayRemovalTimers.set(id, setTimeout(() => removeOverlay(id), EXIT_MS));
36
+ }
37
+ function createOverlayResolver(id, resolve) {
38
+ let settled = false;
39
+ return (value) => {
40
+ if (settled) return;
41
+ settled = true;
42
+ resolve(value);
43
+ dismissOverlay(id);
44
+ };
23
45
  }
24
46
  function open(component, props2 = {}) {
25
47
  return new Promise((resolve) => {
26
48
  const id = nextId++;
27
- let settled = false;
28
- const settle = (value) => {
29
- if (settled) return;
30
- settled = true;
31
- resolve(value);
32
- dismissOverlay(id);
33
- };
49
+ const settle = createOverlayResolver(id, resolve);
34
50
  overlays.push({
35
51
  id,
36
52
  // El registro es reactivo en profundidad para poder animar la
@@ -65,13 +81,7 @@ function open(component, props2 = {}) {
65
81
  function askConfirm(request, dismissed) {
66
82
  return new Promise((resolve) => {
67
83
  const id = nextId++;
68
- let settled = false;
69
- const settle = (value) => {
70
- if (settled) return;
71
- settled = true;
72
- resolve(value);
73
- dismissOverlay(id);
74
- };
84
+ const settle = createOverlayResolver(id, resolve);
75
85
  overlays.push({
76
86
  id,
77
87
  component: markRaw(Confirm),
@@ -94,14 +104,17 @@ const alert = async (request) => {
94
104
  await askConfirm({ ...request, alert: true }, true);
95
105
  };
96
106
  function closeAll() {
97
- for (const entry of [...overlays]) (entry.listeners.cancel ?? entry.listeners.close)?.();
107
+ for (let index = overlays.length - 1; index >= 0; index--) {
108
+ const entry = overlays[index];
109
+ (entry.listeners.cancel ?? entry.listeners.close)?.();
110
+ }
98
111
  }
99
- const timers = /* @__PURE__ */ new Map();
112
+ const notificationTimers = /* @__PURE__ */ new Map();
100
113
  function dismiss(id) {
101
- const timer = timers.get(id);
114
+ const timer = notificationTimers.get(id);
102
115
  if (timer) {
103
116
  clearTimeout(timer);
104
- timers.delete(id);
117
+ notificationTimers.delete(id);
105
118
  }
106
119
  const index = notifications.findIndex((entry) => entry.id === id);
107
120
  if (index !== -1) notifications.splice(index, 1);
@@ -111,19 +124,25 @@ function notify(request) {
111
124
  const duration = request.duration ?? 5e3;
112
125
  notifications.push({ ...request, id, color: request.color ?? "neutral", duration });
113
126
  if (duration > 0)
114
- timers.set(
127
+ notificationTimers.set(
115
128
  id,
116
129
  setTimeout(() => dismiss(id), duration)
117
130
  );
118
131
  return id;
119
132
  }
120
133
  onBeforeUnmount(() => {
121
- for (const timer of timers.values()) clearTimeout(timer);
122
- timers.clear();
134
+ unmounting = true;
135
+ closeAll();
136
+ for (const timer of overlayRemovalTimers.values()) clearTimeout(timer);
137
+ for (const timer of notificationTimers.values()) clearTimeout(timer);
138
+ overlayRemovalTimers.clear();
139
+ notificationTimers.clear();
140
+ overlays.splice(0);
141
+ notifications.splice(0);
123
142
  });
124
143
  const context = { alert, closeAll, confirm, dismiss, notifications, notify, open, overlays };
125
- provide(vunoDirectionInjectionKey, () => props.dir);
126
- provide(vunoContextInjectionKey, context);
144
+ provideVunoDirection(() => props.dir);
145
+ provideVunoContext(context);
127
146
  defineExpose({ alert, closeAll, confirm, dismiss, notify, open });
128
147
  </script>
129
148
 
@@ -134,8 +153,8 @@ defineExpose({ alert, closeAll, confirm, dismiss, notify, open });
134
153
  Vue aporta un `useId` estable que Nuxt conserva entre servidor y cliente.
135
154
 
136
155
  El `div` es la única forma de llevar el `dir` sin pedirle nada al
137
- proyecto. No pinta: no tiene clase ni estilo, así que el hijo se
138
- comporta igual que si colgara del padre.
156
+ proyecto. No tiene estilos propios, pero sí forma parte del contrato:
157
+ es una caja de bloque alrededor de la aplicación.
139
158
  -->
140
159
  <div :dir="props.dir">
141
160
  <slot />
@@ -1,22 +1,6 @@
1
1
  import { type Component } from 'vue';
2
2
  import type { VunoAlertRequest, VunoConfirmRequest, VunoNotifyRequest } from '#vuno/types/app';
3
- /**
4
- * Raíz del módulo: provee el contexto global, aloja los overlays y la pila
5
- * de notificaciones.
6
- *
7
- * Monta directamente todo lo que necesitan las piezas del módulo.
8
- */
9
- type Props = {
10
- /**
11
- * Dirección de lectura.
12
- *
13
- * Se provee a los componentes que la necesitan —hoy solo las
14
- * pestañas, para invertir sus flechas— y se pone además en el
15
- * elemento, que es de donde la lee el navegador para el texto y
16
- * para las propiedades lógicas del CSS.
17
- */
18
- dir?: 'ltr' | 'rtl';
19
- };
3
+ import type { VunoAppProps } from './App.types.js';
20
4
  /**
21
5
  * Monta un componente y espera a que emita `close`.
22
6
  *
@@ -32,14 +16,14 @@ declare var __VLS_1: {};
32
16
  type __VLS_Slots = {} & {
33
17
  default?: (props: typeof __VLS_1) => any;
34
18
  };
35
- declare const __VLS_base: import("vue").DefineComponent<Props, {
19
+ declare const __VLS_base: import("vue").DefineComponent<VunoAppProps, {
36
20
  alert: (request: VunoAlertRequest) => Promise<void>;
37
21
  closeAll: typeof closeAll;
38
22
  confirm: (request: VunoConfirmRequest) => Promise<boolean>;
39
23
  dismiss: typeof dismiss;
40
24
  notify: typeof notify;
41
25
  open: typeof open;
42
- }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
26
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<VunoAppProps> & Readonly<{}>, {
43
27
  dir: "ltr" | "rtl";
44
28
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
45
29
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -1,12 +1,11 @@
1
1
  <script setup>
2
- import { provide } from "vue";
3
- import { vunoOverlayBehindInjectionKey } from "#vuno/internal/keys";
2
+ import { provideVunoOverlayBehind } from "#vuno/composables/internal/useVunoOverlayBehind";
4
3
  defineOptions({ name: "VunoOverlayItem" });
5
4
  const props = defineProps({
6
5
  behind: { type: Boolean, required: true },
7
6
  entry: { type: Object, required: true }
8
7
  });
9
- provide(vunoOverlayBehindInjectionKey, () => props.behind);
8
+ provideVunoOverlayBehind(() => props.behind);
10
9
  </script>
11
10
 
12
11
  <template>
@@ -1,11 +1,11 @@
1
1
  /** El apilado lo añade `Overlay`; aquí solo lo que sea del proyecto. */
2
2
  export declare const toastTheme: Record<"toast", {
3
3
  readonly slots: {
4
- readonly body: "min-w-0 flex-1";
5
- readonly description: "mt-1 text-sm text-vuno-muted";
6
- readonly icon: "mt-0.5 size-5 shrink-0 text-(--vuno-accent)";
7
- readonly root: "flex w-full items-start gap-3 rounded-sm bg-vuno-surface-1 p-3 shadow-lg ring ring-(--vuno-accent)/25";
8
- readonly title: "text-sm font-medium text-vuno-strong";
4
+ readonly actions: "absolute top-2 right-2";
5
+ readonly close: "rounded text-(--vuno-accent) shadow-none ring-transparent hover:bg-(--vuno-accent)/15 hover:text-(--vuno-accent)";
6
+ readonly content: "pr-5";
7
+ readonly description: "text-vuno-muted";
8
+ readonly root: "relative rounded-xl p-4 shadow-lg ring ring-(--vuno-accent)/25";
9
9
  };
10
10
  readonly variants: {
11
11
  readonly color: Record<import("../../../../types/base.js").VunoColor, Record<"root", string>>;
@@ -2,17 +2,15 @@ import { accentByColor } from "#vuno/theme/shared";
2
2
  import { defineTheme } from "#vuno/utils/theme";
3
3
  export const toastTheme = defineTheme("toast", {
4
4
  slots: {
5
- body: "min-w-0 flex-1",
6
- description: "mt-1 text-sm text-vuno-muted",
5
+ actions: "absolute top-2 right-2",
6
+ close: "rounded text-(--vuno-accent) shadow-none ring-transparent hover:bg-(--vuno-accent)/15 hover:text-(--vuno-accent)",
7
+ content: "pr-5",
8
+ description: "text-vuno-muted",
7
9
  /*
8
- * La tarjeta declara el acento para que el icono lo herede y el
9
- * anillo diferencie el estado sin teñir toda la superficie. Un
10
- * nombre compuesto como `text-${color}` no serviría: Tailwind no
11
- * genera una clase que nunca aparece literal en el código.
10
+ * `Alert` aporta el layout, el icono y el tinte semántico. El toast
11
+ * solo lo eleva sobre la página y reserva sitio para cerrarlo.
12
12
  */
13
- icon: "mt-0.5 size-5 shrink-0 text-(--vuno-accent)",
14
- root: "flex w-full items-start gap-3 rounded-sm bg-vuno-surface-1 p-3 shadow-lg ring ring-(--vuno-accent)/25",
15
- title: "text-sm font-medium text-vuno-strong"
13
+ root: "relative rounded-xl p-4 shadow-lg ring ring-(--vuno-accent)/25"
16
14
  },
17
15
  variants: { color: accentByColor("root") }
18
16
  });
@@ -1,8 +1,7 @@
1
1
  <script setup>
2
- import { computed } from "vue";
3
2
  import { useIcons, useMessages, useTheme } from "#vuno/composables/useTheme";
3
+ import Alert from "#vuno/components/Alert/Alert.vue";
4
4
  import Button from "#vuno/components/Button/Button.vue";
5
- import Icon from "#vuno/components/Icon/Icon.vue";
6
5
  defineOptions({ name: "VunoToast" });
7
6
  const props = defineProps({
8
7
  notification: { type: Object, required: true }
@@ -11,14 +10,6 @@ const emit = defineEmits(["dismiss"]);
11
10
  const icons = useIcons();
12
11
  const messages = useMessages();
13
12
  const ui = useTheme("toast", void 0, () => ({ color: props.notification.color ?? "neutral" }));
14
- const defaultIcons = {
15
- error: icons.value.notifyError,
16
- info: icons.value.notifyInfo,
17
- neutral: icons.value.notifyInfo,
18
- success: icons.value.notifySuccess,
19
- warning: icons.value.notifyWarning
20
- };
21
- const icon = computed(() => props.notification.icon ?? defaultIcons[props.notification.color]);
22
13
  </script>
23
14
 
24
15
  <template>
@@ -35,30 +26,30 @@ const icon = computed(() => props.notification.icon ?? defaultIcons[props.notifi
35
26
  solo. Queda dicho aquí y en su ficha para que sea un hueco conocido y no
36
27
  un defecto futuro.
37
28
  -->
38
- <div :class="ui.root">
39
- <Icon
40
- :class="ui.icon"
41
- :name="icon"
42
- />
43
-
44
- <div :class="ui.body">
45
- <p :class="ui.title">{{ props.notification.title }}</p>
46
-
47
- <p
48
- v-if="props.notification.description"
49
- :class="ui.description"
50
- >
51
- {{ props.notification.description }}
52
- </p>
53
- </div>
54
-
55
- <Button
56
- :aria-label="messages.close"
57
- color="neutral"
58
- :icon="icons.close"
59
- size="xs"
60
- variant="ghost"
61
- @click="emit('dismiss')"
62
- />
63
- </div>
29
+ <Alert
30
+ :color="props.notification.color"
31
+ :description="props.notification.description"
32
+ :icon="props.notification.icon"
33
+ :role="null"
34
+ :title="props.notification.title"
35
+ :ui="{
36
+ actions: ui.actions,
37
+ content: ui.content,
38
+ description: ui.description,
39
+ root: ui.root
40
+ }"
41
+ >
42
+ <template #actions>
43
+ <Button
44
+ :aria-label="messages.close"
45
+ color="neutral"
46
+ :icon="icons.close"
47
+ shape="square"
48
+ size="xs"
49
+ :ui="{ base: ui.close }"
50
+ variant="ghost"
51
+ @click="emit('dismiss')"
52
+ />
53
+ </template>
54
+ </Alert>
64
55
  </template>
@@ -6,10 +6,10 @@ export declare const toasterTheme: Record<"toaster", {
6
6
  readonly item: "pointer-events-auto";
7
7
  readonly leaveActive: "absolute inset-x-0 transition duration-150 ease-in";
8
8
  readonly leaveTo: "translate-x-4 opacity-0";
9
- readonly list: "flex flex-col gap-2";
9
+ readonly list: "flex flex-col gap-3";
10
10
  /** Sin esto, al cerrar una de en medio las de abajo dan un salto. */
11
11
  readonly move: "transition-transform duration-200 ease-out";
12
- /** Fijo arriba a la derecha; en móvil ocupa el ancho con margen. */
13
- readonly root: "pointer-events-none fixed inset-x-4 top-4 z-100 flex flex-col gap-2 sm:left-auto sm:w-96";
12
+ /** Fijo abajo a la derecha; en móvil ocupa el ancho con margen. */
13
+ readonly root: "pointer-events-none fixed inset-x-4 bottom-4 z-100 flex flex-col gap-3 sm:inset-x-auto sm:right-8 sm:bottom-8 sm:w-85";
14
14
  };
15
15
  }>;
@@ -7,10 +7,10 @@ export const toasterTheme = defineTheme("toaster", {
7
7
  item: "pointer-events-auto",
8
8
  leaveActive: "absolute inset-x-0 transition duration-150 ease-in",
9
9
  leaveTo: "translate-x-4 opacity-0",
10
- list: "flex flex-col gap-2",
10
+ list: "flex flex-col gap-3",
11
11
  /** Sin esto, al cerrar una de en medio las de abajo dan un salto. */
12
12
  move: "transition-transform duration-200 ease-out",
13
- /** Fijo arriba a la derecha; en móvil ocupa el ancho con margen. */
14
- root: "pointer-events-none fixed inset-x-4 top-4 z-100 flex flex-col gap-2 sm:left-auto sm:w-96"
13
+ /** Fijo abajo a la derecha; en móvil ocupa el ancho con margen. */
14
+ root: "pointer-events-none fixed inset-x-4 bottom-4 z-100 flex flex-col gap-3 sm:inset-x-auto sm:right-8 sm:bottom-8 sm:w-85"
15
15
  }
16
16
  });
@@ -1,26 +1,9 @@
1
- import type { VunoRadius, VunoSize } from '#vuno/types/base';
2
- import type { VunoUi } from '#vuno/types/slots';
3
- /**
4
- * La imagen redonda de una fila: una foto de producto, un logotipo, una
5
- * persona.
6
- *
7
- * El `alt` no es decoración: en un listado, la alternativa útil es el nombre
8
- * de la fila, y de ahí salen también las iniciales cuando no hay imagen que
9
- * enseñar.
10
- */
11
- type Props = {
12
- alt?: string;
13
- /** La curvatura. Sin valor, la que traiga el tema. */
14
- radius?: VunoRadius;
15
- size?: VunoSize;
16
- src?: string;
17
- ui?: VunoUi<'avatar'>;
18
- };
19
- declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
20
- radius: VunoRadius;
21
- size: VunoSize;
1
+ import type { VunoAvatarProps } from './Avatar.types.js';
2
+ declare const __VLS_export: import("vue").DefineComponent<VunoAvatarProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<VunoAvatarProps> & Readonly<{}>, {
3
+ radius: import("../../types/base.js").VunoRadius;
4
+ size: import("./Avatar.types.js").VunoAvatarSize;
22
5
  alt: string;
23
- ui: VunoUi<"avatar">;
6
+ ui: import("../../types/slots.js").VunoUi<"avatar">;
24
7
  src: string;
25
8
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
26
9
  declare const _default: typeof __VLS_export;
@@ -0,0 +1,10 @@
1
+ import type { VunoRadius, VunoSize } from '#vuno/types/base';
2
+ import type { VunoUi } from '#vuno/types/slots';
3
+ export type VunoAvatarSize = Extract<VunoSize, 'lg' | 'md' | 'sm' | 'xl' | 'xs'>;
4
+ export type VunoAvatarProps = {
5
+ alt?: string;
6
+ radius?: VunoRadius;
7
+ size?: VunoAvatarSize;
8
+ src?: string;
9
+ ui?: VunoUi<'avatar'>;
10
+ };