@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,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;
@@ -1,34 +1,15 @@
1
- import type { VunoColor, VunoRadius, VunoSize } from '#vuno/types/base';
2
- import type { VunoUi } from '#vuno/types/slots';
3
- /**
4
- * Una etiqueta de estado: el estado de una fila, el contador de filtros
5
- * activos, el resumen de un filtro puesto.
6
- *
7
- * No es un botón ni lleva acción propia. Cuando algo dentro sí la lleva
8
- * —la cruz que quita un filtro— va en el slot, para que el elemento que se
9
- * pulsa sea ese y no la etiqueta entera.
10
- */
11
- type VunoBadgeVariant = 'outline' | 'soft' | 'solid' | 'subtle';
12
- type Props = {
13
- color?: VunoColor;
14
- label?: string;
15
- /** La curvatura. Sin valor, la que traiga el tema. */
16
- radius?: VunoRadius;
17
- size?: VunoSize;
18
- ui?: VunoUi<'badge'>;
19
- variant?: VunoBadgeVariant;
20
- };
1
+ import type { VunoBadgeProps } from './Badge.types.js';
21
2
  declare var __VLS_1: {};
22
3
  type __VLS_Slots = {} & {
23
4
  default?: (props: typeof __VLS_1) => any;
24
5
  };
25
- declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
26
- color: VunoColor;
27
- radius: VunoRadius;
28
- size: VunoSize;
29
- variant: VunoBadgeVariant;
6
+ declare const __VLS_base: import("vue").DefineComponent<VunoBadgeProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<VunoBadgeProps> & Readonly<{}>, {
7
+ color: import("../../types/base.js").VunoColor;
8
+ radius: import("../../types/base.js").VunoRadius;
9
+ size: import("./Badge.types.js").VunoBadgeSize;
10
+ variant: import("./Badge.types.js").VunoBadgeVariant;
30
11
  label: string;
31
- ui: VunoUi<"badge">;
12
+ ui: import("../../types/slots.js").VunoUi<"badge">;
32
13
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
33
14
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
34
15
  declare const _default: typeof __VLS_export;
@@ -0,0 +1,12 @@
1
+ import type { VunoColor, VunoRadius, VunoSize } from '#vuno/types/base';
2
+ import type { VunoUi } from '#vuno/types/slots';
3
+ export type VunoBadgeSize = Extract<VunoSize, 'lg' | 'md' | 'sm' | 'xl' | 'xs'>;
4
+ export type VunoBadgeVariant = 'outline' | 'soft' | 'solid' | 'subtle';
5
+ export type VunoBadgeProps = {
6
+ color?: VunoColor;
7
+ label?: string;
8
+ radius?: VunoRadius;
9
+ size?: VunoBadgeSize;
10
+ ui?: VunoUi<'badge'>;
11
+ variant?: VunoBadgeVariant;
12
+ };
@@ -1,34 +1,15 @@
1
- import type { VunoColor, VunoRadius, VunoSize } from '#vuno/types/base';
2
- import type { VunoUi } from '#vuno/types/slots';
3
- /**
4
- * Una etiqueta de estado: el estado de una fila, el contador de filtros
5
- * activos, el resumen de un filtro puesto.
6
- *
7
- * No es un botón ni lleva acción propia. Cuando algo dentro sí la lleva
8
- * —la cruz que quita un filtro— va en el slot, para que el elemento que se
9
- * pulsa sea ese y no la etiqueta entera.
10
- */
11
- type VunoBadgeVariant = 'outline' | 'soft' | 'solid' | 'subtle';
12
- type Props = {
13
- color?: VunoColor;
14
- label?: string;
15
- /** La curvatura. Sin valor, la que traiga el tema. */
16
- radius?: VunoRadius;
17
- size?: VunoSize;
18
- ui?: VunoUi<'badge'>;
19
- variant?: VunoBadgeVariant;
20
- };
1
+ import type { VunoBadgeProps } from './Badge.types.js';
21
2
  declare var __VLS_1: {};
22
3
  type __VLS_Slots = {} & {
23
4
  default?: (props: typeof __VLS_1) => any;
24
5
  };
25
- declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
26
- color: VunoColor;
27
- radius: VunoRadius;
28
- size: VunoSize;
29
- variant: VunoBadgeVariant;
6
+ declare const __VLS_base: import("vue").DefineComponent<VunoBadgeProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<VunoBadgeProps> & Readonly<{}>, {
7
+ color: import("../../types/base.js").VunoColor;
8
+ radius: import("../../types/base.js").VunoRadius;
9
+ size: import("./Badge.types.js").VunoBadgeSize;
10
+ variant: import("./Badge.types.js").VunoBadgeVariant;
30
11
  label: string;
31
- ui: VunoUi<"badge">;
12
+ ui: import("../../types/slots.js").VunoUi<"badge">;
32
13
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
33
14
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
34
15
  declare const _default: typeof __VLS_export;
@@ -0,0 +1,7 @@
1
+ import type { VunoBreadcrumbProps } from './Breadcrumb.types.js';
2
+ declare const __VLS_export: import("vue").DefineComponent<VunoBreadcrumbProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<VunoBreadcrumbProps> & Readonly<{}>, {
3
+ ui: import("../../types/slots.js").VunoUi<"breadcrumb">;
4
+ loading: boolean;
5
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
6
+ declare const _default: typeof __VLS_export;
7
+ export default _default;
@@ -0,0 +1,15 @@
1
+ export declare const breadcrumbTheme: Record<"breadcrumb", {
2
+ readonly slots: {
3
+ readonly collapsedItem: "hidden sm:flex";
4
+ readonly collapseIndicator: "shrink-0 text-sm font-medium text-vuno-muted sm:hidden";
5
+ readonly current: "flex min-w-0 items-center gap-1.5 truncate text-sm font-semibold text-vuno-strong";
6
+ readonly icon: "size-4 shrink-0";
7
+ readonly item: "flex min-w-0 items-center gap-1.5";
8
+ readonly link: "flex min-w-0 items-center gap-1.5 truncate rounded-sm text-sm font-medium text-vuno-muted transition-colors [--vuno-accent:var(--color-vuno-primary)] hover:text-vuno-body focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--vuno-accent)";
9
+ readonly list: "flex min-w-0 items-center gap-1.5 whitespace-nowrap";
10
+ readonly root: "min-w-0";
11
+ readonly separator: "size-4 shrink-0 text-vuno-subtle rtl:rotate-180";
12
+ readonly skeleton: "h-4 w-24 max-w-[35vw] animate-pulse rounded-full bg-vuno-surface-2 motion-reduce:animate-none";
13
+ readonly text: "flex min-w-0 items-center gap-1.5 truncate text-sm font-medium text-vuno-muted";
14
+ };
15
+ }>;
@@ -0,0 +1,16 @@
1
+ import { defineTheme } from "#vuno/utils/theme";
2
+ export const breadcrumbTheme = defineTheme("breadcrumb", {
3
+ slots: {
4
+ collapsedItem: "hidden sm:flex",
5
+ collapseIndicator: "shrink-0 text-sm font-medium text-vuno-muted sm:hidden",
6
+ current: "flex min-w-0 items-center gap-1.5 truncate text-sm font-semibold text-vuno-strong",
7
+ icon: "size-4 shrink-0",
8
+ item: "flex min-w-0 items-center gap-1.5",
9
+ link: "flex min-w-0 items-center gap-1.5 truncate rounded-sm text-sm font-medium text-vuno-muted transition-colors [--vuno-accent:var(--color-vuno-primary)] hover:text-vuno-body focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--vuno-accent)",
10
+ list: "flex min-w-0 items-center gap-1.5 whitespace-nowrap",
11
+ root: "min-w-0",
12
+ separator: "size-4 shrink-0 text-vuno-subtle rtl:rotate-180",
13
+ skeleton: "h-4 w-24 max-w-[35vw] animate-pulse rounded-full bg-vuno-surface-2 motion-reduce:animate-none",
14
+ text: "flex min-w-0 items-center gap-1.5 truncate text-sm font-medium text-vuno-muted"
15
+ }
16
+ });
@@ -0,0 +1,7 @@
1
+ import type { VunoBreadcrumbItem } from '#vuno/types/page';
2
+ import type { VunoUi } from '#vuno/types/slots';
3
+ export type VunoBreadcrumbProps = {
4
+ items: VunoBreadcrumbItem[];
5
+ loading?: boolean;
6
+ ui?: VunoUi<'breadcrumb'>;
7
+ };
@@ -0,0 +1,109 @@
1
+ <script setup>
2
+ import { useIcons, useMessages, useTheme } from "#vuno/composables/useTheme";
3
+ import Icon from "#vuno/components/Icon/Icon.vue";
4
+ import Text from "#vuno/components/Text/Text.vue";
5
+ defineOptions({ name: "VunoBreadcrumb" });
6
+ const props = defineProps({
7
+ items: { type: Array, required: true },
8
+ loading: { type: Boolean, required: false, default: false },
9
+ ui: { type: Object, required: false, default: void 0 }
10
+ });
11
+ const icons = useIcons();
12
+ const messages = useMessages();
13
+ const ui = useTheme("breadcrumb", () => props.ui);
14
+ function isCollapsedItem(index) {
15
+ return props.items.length > 3 && index < props.items.length - 2;
16
+ }
17
+ </script>
18
+
19
+ <template>
20
+ <nav
21
+ v-if="props.items.length"
22
+ :aria-busy="props.loading ? 'true' : void 0"
23
+ :aria-label="messages.breadcrumb"
24
+ :class="ui.root"
25
+ >
26
+ <ol :class="ui.list">
27
+ <li
28
+ v-if="props.items.length > 3"
29
+ aria-hidden="true"
30
+ :class="[ui.item, ui.collapseIndicator]"
31
+ >
32
+ …
33
+ </li>
34
+
35
+ <li
36
+ v-for="(item, index) in props.items"
37
+ :key="`${index}:${item.to ?? ''}:${item.label}`"
38
+ :class="[ui.item, isCollapsedItem(index) ? ui.collapsedItem : void 0]"
39
+ >
40
+ <Icon
41
+ v-if="index > 0"
42
+ aria-hidden="true"
43
+ :class="ui.separator"
44
+ :name="icons.breadcrumbSeparator"
45
+ />
46
+
47
+ <Text
48
+ v-if="index === props.items.length - 1"
49
+ :aria-busy="props.loading ? 'true' : void 0"
50
+ aria-current="page"
51
+ :aria-label="props.loading ? item.label : void 0"
52
+ :class="ui.current"
53
+ tag="span"
54
+ tone="inherit"
55
+ variant="inherit"
56
+ >
57
+ <Text
58
+ v-if="props.loading"
59
+ aria-hidden="true"
60
+ :class="ui.skeleton"
61
+ tag="span"
62
+ tone="inherit"
63
+ variant="inherit"
64
+ />
65
+
66
+ <template v-else>
67
+ <Icon
68
+ v-if="item.icon"
69
+ aria-hidden="true"
70
+ :class="ui.icon"
71
+ :name="item.icon"
72
+ />
73
+ {{ item.label }}
74
+ </template>
75
+ </Text>
76
+
77
+ <NuxtLink
78
+ v-else-if="item.to"
79
+ :class="ui.link"
80
+ :to="item.to"
81
+ >
82
+ <Icon
83
+ v-if="item.icon"
84
+ aria-hidden="true"
85
+ :class="ui.icon"
86
+ :name="item.icon"
87
+ />
88
+ {{ item.label }}
89
+ </NuxtLink>
90
+
91
+ <Text
92
+ v-else
93
+ :class="ui.text"
94
+ tag="span"
95
+ tone="inherit"
96
+ variant="inherit"
97
+ >
98
+ <Icon
99
+ v-if="item.icon"
100
+ aria-hidden="true"
101
+ :class="ui.icon"
102
+ :name="item.icon"
103
+ />
104
+ {{ item.label }}
105
+ </Text>
106
+ </li>
107
+ </ol>
108
+ </nav>
109
+ </template>
@@ -0,0 +1,7 @@
1
+ import type { VunoBreadcrumbProps } from './Breadcrumb.types.js';
2
+ declare const __VLS_export: import("vue").DefineComponent<VunoBreadcrumbProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<VunoBreadcrumbProps> & Readonly<{}>, {
3
+ ui: import("../../types/slots.js").VunoUi<"breadcrumb">;
4
+ loading: boolean;
5
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
6
+ declare const _default: typeof __VLS_export;
7
+ export default _default;
@@ -1,43 +1,23 @@
1
- import type { VunoColor, VunoRadius, VunoSize } from '#vuno/types/base';
2
- import type { VunoUi } from '#vuno/types/slots';
3
- type VunoButtonVariant = 'ghost' | 'link' | 'outline' | 'soft' | 'solid';
4
- type Props = {
5
- color?: VunoColor;
6
- disabled?: boolean;
7
- /** Nombre Iconify, como los de `useIcons`. */
8
- icon?: string;
9
- label?: string;
10
- /** Bloquea el botón y sustituye el icono por un giro. */
11
- loading?: boolean;
12
- /** La curvatura. Sin valor, la que traiga el tema. */
13
- radius?: VunoRadius;
14
- size?: VunoSize;
15
- /** El icono va detrás de la etiqueta en vez de delante. */
16
- trailing?: boolean;
17
- /**
18
- * `button` a propósito, y no `submit`: un botón dentro de un
19
- * formulario que no diga lo que es lo envía al pulsarlo, y eso
20
- * convierte cualquier acción secundaria en un envío accidental.
21
- */
22
- type?: 'button' | 'reset' | 'submit';
23
- ui?: VunoUi<'button'>;
24
- variant?: VunoButtonVariant;
25
- };
1
+ import type { VunoButtonProps } from './Button.types.js';
26
2
  type __VLS_Slots = {
27
3
  /** Contenido en lugar de la etiqueta. */
28
4
  default?: () => unknown;
29
5
  /** Va después de todo lo demás; la tabla mete ahí su contador. */
30
6
  trailing?: () => unknown;
31
7
  };
32
- declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
33
- color: VunoColor;
8
+ declare const __VLS_base: import("vue").DefineComponent<VunoButtonProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<VunoButtonProps> & Readonly<{}>, {
9
+ color: import("../../types/base.js").VunoColor;
34
10
  icon: string;
35
- radius: VunoRadius;
36
- size: VunoSize;
37
- variant: VunoButtonVariant;
11
+ radius: import("../../types/base.js").VunoRadius;
12
+ size: import("./Button.types.js").VunoButtonSize;
13
+ variant: import("./Button.types.js").VunoButtonVariant;
38
14
  label: string;
15
+ shape: import("./Button.types.js").VunoButtonShape;
16
+ tag: import("vue").Component | string;
39
17
  type: "button" | "reset" | "submit";
40
- ui: VunoUi<"button">;
18
+ ui: import("../../types/slots.js").VunoUi<"button">;
19
+ href: string;
20
+ to: import("vue-router").RouteLocationRaw;
41
21
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
42
22
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
43
23
  declare const _default: typeof __VLS_export;
@@ -1,15 +1,8 @@
1
1
  export declare const buttonTheme: Record<"button", {
2
- /**
3
- * El botón, y el primer componente propio del que todo lo demás cuelga.
4
- *
5
- * Las combinaciones no se escriben: la dimensión `color` solo asigna las
6
- * variables de acento y la dimensión `variant` las consume, así que siete
7
- * colores y cinco variantes son doce entradas en vez de treinta y cinco.
8
- * `shape` no depende del tamaño porque un `aspect-square` ya cuadra la
9
- * altura que haya puesto `size`.
10
- */
11
2
  readonly slots: {
12
- readonly base: "inline-flex shrink-0 cursor-pointer items-center justify-center rounded-sm font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--vuno-accent) disabled:pointer-events-none disabled:opacity-50";
3
+ readonly base: "group relative inline-flex shrink-0 cursor-pointer items-center justify-center overflow-hidden rounded-lg font-medium shadow-xs ring-1 ring-inset focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-vuno-focus disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 pointer-coarse:min-h-11 pointer-coarse:min-w-11";
4
+ readonly content: "relative inline-flex items-center justify-center gap-(--vuno-button-gap)";
5
+ readonly emphasis: "pointer-events-none absolute inset-0 rounded-[inherit] bg-linear-to-b from-(--vuno-button-emphasis-start) to-(--vuno-button-emphasis) shadow-[inset_0_1px_0_0_var(--vuno-button-emphasis-highlight)] group-hover:from-(--vuno-button-emphasis-hover)";
13
6
  readonly icon: "shrink-0";
14
7
  /**
15
8
  * Caja y no texto suelto: el contenido del slot puede ser cualquier
@@ -41,47 +34,68 @@ export declare const buttonTheme: Record<"button", {
41
34
  * devolvería las cinco combinaciones.
42
35
  */
43
36
  readonly shape: {
37
+ readonly base: {};
38
+ readonly circle: {
39
+ readonly base: "w-(--vuno-button-size) rounded-full px-0";
40
+ };
44
41
  readonly square: {
45
42
  readonly base: "w-(--vuno-button-size) px-0";
46
43
  };
47
44
  };
48
45
  readonly size: {
49
46
  readonly xs: {
50
- readonly base: "h-(--vuno-button-size) gap-1 px-2 text-xs [--vuno-button-size:1.5rem]";
51
- readonly icon: "size-3.5";
47
+ readonly base: "h-(--vuno-button-size) px-1.5 text-xs [--vuno-button-gap:0.25rem] [--vuno-button-size:1.25rem]";
48
+ readonly icon: "size-3";
52
49
  };
53
50
  readonly sm: {
54
- readonly base: "h-(--vuno-button-size) gap-1.5 px-2.5 text-sm [--vuno-button-size:1.75rem]";
55
- readonly icon: "size-4";
51
+ readonly base: "h-(--vuno-button-size) px-2 text-xs [--vuno-button-gap:0.25rem] [--vuno-button-size:1.625rem]";
52
+ readonly icon: "size-3.5";
56
53
  };
57
54
  readonly md: {
58
- readonly base: "h-(--vuno-button-size) gap-1.5 px-3 text-sm [--vuno-button-size:2rem]";
55
+ readonly base: "h-(--vuno-button-size) px-3 text-sm [--vuno-button-gap:0.375rem] [--vuno-button-size:2.25rem]";
59
56
  readonly icon: "size-4";
60
57
  };
61
58
  readonly lg: {
62
- readonly base: "h-(--vuno-button-size) gap-2 px-3.5 text-base [--vuno-button-size:2.25rem]";
59
+ readonly base: "h-(--vuno-button-size) px-4 text-sm [--vuno-button-gap:0.5rem] [--vuno-button-size:2.5rem]";
63
60
  readonly icon: "size-5";
64
61
  };
65
62
  readonly xl: {
66
- readonly base: "h-(--vuno-button-size) gap-2 px-4 text-base [--vuno-button-size:2.5rem]";
63
+ readonly base: "h-(--vuno-button-size) px-4 text-base [--vuno-button-gap:0.5rem] [--vuno-button-size:2.75rem]";
67
64
  readonly icon: "size-5";
68
65
  };
69
66
  };
70
67
  readonly variant: {
68
+ readonly destructive: {
69
+ readonly base: "bg-vuno-danger-solid text-vuno-danger-solid-contrast ring-vuno-danger-solid hover:bg-vuno-danger-solid-hover";
70
+ };
71
+ readonly 'destructive-subtle': {
72
+ readonly base: "bg-vuno-control text-vuno-error ring-vuno-line hover:bg-vuno-tint hover:ring-vuno-error/30";
73
+ };
71
74
  readonly ghost: {
72
- readonly base: "text-(--vuno-accent) hover:bg-(--vuno-accent)/10";
75
+ readonly base: "bg-transparent text-vuno-body shadow-none ring-transparent hover:bg-vuno-tint hover:text-vuno-strong";
73
76
  };
74
77
  readonly link: {
75
- readonly base: "text-(--vuno-accent) hover:underline";
78
+ readonly base: "bg-transparent text-(--vuno-accent) shadow-none ring-transparent hover:underline";
76
79
  };
77
80
  readonly outline: {
78
- readonly base: "border border-(--vuno-accent) text-(--vuno-accent) hover:bg-(--vuno-accent)/10";
81
+ readonly base: "bg-transparent text-vuno-body shadow-none ring-vuno-line hover:bg-vuno-tint hover:text-vuno-strong";
82
+ };
83
+ readonly primary: {
84
+ readonly base: "bg-vuno-brand text-vuno-brand-contrast ring-vuno-brand hover:bg-vuno-brand-hover";
85
+ };
86
+ readonly secondary: {
87
+ readonly base: "bg-vuno-control text-vuno-body ring-vuno-line hover:bg-vuno-tint hover:text-vuno-strong";
79
88
  };
80
89
  readonly soft: {
81
- readonly base: "bg-(--vuno-accent)/10 text-(--vuno-accent) hover:bg-(--vuno-accent)/20";
90
+ readonly base: "bg-(--vuno-accent)/10 text-(--vuno-accent) ring-transparent hover:bg-(--vuno-accent)/20";
82
91
  };
83
92
  readonly solid: {
84
- readonly base: "bg-(--vuno-accent) text-(--vuno-accent-contrast) hover:bg-(--vuno-accent)/90";
93
+ readonly base: "bg-(--vuno-accent) text-(--vuno-accent-contrast) ring-(--vuno-accent) [--vuno-button-emphasis:var(--vuno-accent)] [--vuno-button-emphasis-highlight:color-mix(in_oklch,var(--vuno-accent),white_30%)] [--vuno-button-emphasis-hover:var(--vuno-accent)] [--vuno-button-emphasis-start:color-mix(in_oklch,var(--vuno-accent),white_15%)]";
94
+ };
95
+ };
96
+ readonly variantAccent: {
97
+ readonly on: {
98
+ readonly base: "text-(--vuno-accent) ring-(--vuno-accent) hover:bg-(--vuno-accent)/10 hover:text-(--vuno-accent)";
85
99
  };
86
100
  };
87
101
  };
@@ -1,17 +1,10 @@
1
1
  import { accentByColor, radiusByStep } from "#vuno/theme/shared";
2
2
  import { defineTheme } from "#vuno/utils/theme";
3
3
  export const buttonTheme = defineTheme("button", {
4
- /**
5
- * El botón, y el primer componente propio del que todo lo demás cuelga.
6
- *
7
- * Las combinaciones no se escriben: la dimensión `color` solo asigna las
8
- * variables de acento y la dimensión `variant` las consume, así que siete
9
- * colores y cinco variantes son doce entradas en vez de treinta y cinco.
10
- * `shape` no depende del tamaño porque un `aspect-square` ya cuadra la
11
- * altura que haya puesto `size`.
12
- */
13
4
  slots: {
14
- base: "inline-flex shrink-0 cursor-pointer items-center justify-center rounded-sm font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--vuno-accent) disabled:pointer-events-none disabled:opacity-50",
5
+ base: "group relative inline-flex shrink-0 cursor-pointer items-center justify-center overflow-hidden rounded-lg font-medium shadow-xs ring-1 ring-inset focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-vuno-focus disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 pointer-coarse:min-h-11 pointer-coarse:min-w-11",
6
+ content: "relative inline-flex items-center justify-center gap-(--vuno-button-gap)",
7
+ emphasis: "pointer-events-none absolute inset-0 rounded-[inherit] bg-linear-to-b from-(--vuno-button-emphasis-start) to-(--vuno-button-emphasis) shadow-[inset_0_1px_0_0_var(--vuno-button-emphasis-highlight)] group-hover:from-(--vuno-button-emphasis-hover)",
15
8
  icon: "shrink-0",
16
9
  /**
17
10
  * Caja y no texto suelto: el contenido del slot puede ser cualquier
@@ -39,21 +32,36 @@ export const buttonTheme = defineTheme("button", {
39
32
  * devolvería las cinco combinaciones.
40
33
  */
41
34
  shape: {
35
+ base: {},
36
+ circle: { base: "w-(--vuno-button-size) rounded-full px-0" },
42
37
  square: { base: "w-(--vuno-button-size) px-0" }
43
38
  },
44
39
  size: {
45
- xs: { base: "h-(--vuno-button-size) gap-1 px-2 text-xs [--vuno-button-size:1.5rem]", icon: "size-3.5" },
46
- sm: { base: "h-(--vuno-button-size) gap-1.5 px-2.5 text-sm [--vuno-button-size:1.75rem]", icon: "size-4" },
47
- md: { base: "h-(--vuno-button-size) gap-1.5 px-3 text-sm [--vuno-button-size:2rem]", icon: "size-4" },
48
- lg: { base: "h-(--vuno-button-size) gap-2 px-3.5 text-base [--vuno-button-size:2.25rem]", icon: "size-5" },
49
- xl: { base: "h-(--vuno-button-size) gap-2 px-4 text-base [--vuno-button-size:2.5rem]", icon: "size-5" }
40
+ xs: { base: "h-(--vuno-button-size) px-1.5 text-xs [--vuno-button-gap:0.25rem] [--vuno-button-size:1.25rem]", icon: "size-3" },
41
+ sm: { base: "h-(--vuno-button-size) px-2 text-xs [--vuno-button-gap:0.25rem] [--vuno-button-size:1.625rem]", icon: "size-3.5" },
42
+ md: { base: "h-(--vuno-button-size) px-3 text-sm [--vuno-button-gap:0.375rem] [--vuno-button-size:2.25rem]", icon: "size-4" },
43
+ lg: { base: "h-(--vuno-button-size) px-4 text-sm [--vuno-button-gap:0.5rem] [--vuno-button-size:2.5rem]", icon: "size-5" },
44
+ xl: { base: "h-(--vuno-button-size) px-4 text-base [--vuno-button-gap:0.5rem] [--vuno-button-size:2.75rem]", icon: "size-5" }
50
45
  },
51
46
  variant: {
52
- ghost: { base: "text-(--vuno-accent) hover:bg-(--vuno-accent)/10" },
53
- link: { base: "text-(--vuno-accent) hover:underline" },
54
- outline: { base: "border border-(--vuno-accent) text-(--vuno-accent) hover:bg-(--vuno-accent)/10" },
55
- soft: { base: "bg-(--vuno-accent)/10 text-(--vuno-accent) hover:bg-(--vuno-accent)/20" },
56
- solid: { base: "bg-(--vuno-accent) text-(--vuno-accent-contrast) hover:bg-(--vuno-accent)/90" }
47
+ destructive: {
48
+ base: "bg-vuno-danger-solid text-vuno-danger-solid-contrast ring-vuno-danger-solid hover:bg-vuno-danger-solid-hover"
49
+ },
50
+ "destructive-subtle": { base: "bg-vuno-control text-vuno-error ring-vuno-line hover:bg-vuno-tint hover:ring-vuno-error/30" },
51
+ ghost: { base: "bg-transparent text-vuno-body shadow-none ring-transparent hover:bg-vuno-tint hover:text-vuno-strong" },
52
+ link: { base: "bg-transparent text-(--vuno-accent) shadow-none ring-transparent hover:underline" },
53
+ outline: { base: "bg-transparent text-vuno-body shadow-none ring-vuno-line hover:bg-vuno-tint hover:text-vuno-strong" },
54
+ primary: {
55
+ base: "bg-vuno-brand text-vuno-brand-contrast ring-vuno-brand hover:bg-vuno-brand-hover"
56
+ },
57
+ secondary: { base: "bg-vuno-control text-vuno-body ring-vuno-line hover:bg-vuno-tint hover:text-vuno-strong" },
58
+ soft: { base: "bg-(--vuno-accent)/10 text-(--vuno-accent) ring-transparent hover:bg-(--vuno-accent)/20" },
59
+ solid: {
60
+ base: "bg-(--vuno-accent) text-(--vuno-accent-contrast) ring-(--vuno-accent) [--vuno-button-emphasis:var(--vuno-accent)] [--vuno-button-emphasis-highlight:color-mix(in_oklch,var(--vuno-accent),white_30%)] [--vuno-button-emphasis-hover:var(--vuno-accent)] [--vuno-button-emphasis-start:color-mix(in_oklch,var(--vuno-accent),white_15%)]"
61
+ }
62
+ },
63
+ variantAccent: {
64
+ on: { base: "text-(--vuno-accent) ring-(--vuno-accent) hover:bg-(--vuno-accent)/10 hover:text-(--vuno-accent)" }
57
65
  }
58
66
  }
59
67
  });
@@ -0,0 +1,24 @@
1
+ import type { Component } from 'vue';
2
+ import type { RouteLocationRaw } from 'vue-router';
3
+ import type { VunoColor, VunoRadius, VunoSize } from '#vuno/types/base';
4
+ import type { VunoUi } from '#vuno/types/slots';
5
+ export type VunoButtonShape = 'base' | 'circle' | 'square';
6
+ export type VunoButtonSize = Extract<VunoSize, 'lg' | 'md' | 'sm' | 'xl' | 'xs'>;
7
+ export type VunoButtonVariant = 'destructive' | 'destructive-subtle' | 'ghost' | 'link' | 'outline' | 'primary' | 'secondary' | 'soft' | 'solid';
8
+ export type VunoButtonProps = {
9
+ color?: VunoColor;
10
+ disabled?: boolean;
11
+ href?: string;
12
+ icon?: string;
13
+ label?: string;
14
+ loading?: boolean;
15
+ radius?: VunoRadius;
16
+ shape?: VunoButtonShape;
17
+ size?: VunoButtonSize;
18
+ tag?: Component | string;
19
+ to?: RouteLocationRaw;
20
+ trailing?: boolean;
21
+ type?: 'button' | 'reset' | 'submit';
22
+ ui?: VunoUi<'button'>;
23
+ variant?: VunoButtonVariant;
24
+ };