@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,24 +1,12 @@
1
- import type { VunoModalSize, VunoRadius } from '#vuno/types/base';
2
- import type { VunoUi } from '#vuno/types/slots';
3
- type Props = {
4
- description?: string;
5
- /** Cerrar con Escape o pulsando el fondo. */
6
- dismissible?: boolean;
7
- /** La curvatura. Sin valor, la que traiga el tema. */
8
- radius?: VunoRadius;
9
- /** Ancho máximo; `full` ocupa todo el viewport. */
10
- size?: VunoModalSize;
11
- title?: string;
12
- ui?: VunoUi<'modal'>;
13
- };
1
+ import type { VunoModalProps } from './Modal.types.js';
14
2
  declare const _default: typeof __VLS_export;
15
3
  export default _default;
16
- declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<Props & {
4
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<VunoModalProps & {
17
5
  open?: boolean;
18
6
  }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
19
7
  close: () => any;
20
8
  "update:open": (value: boolean) => any;
21
- }, string, import("vue").PublicProps, Readonly<Props & {
9
+ }, string, import("vue").PublicProps, Readonly<VunoModalProps & {
22
10
  open?: boolean;
23
11
  }> & Readonly<{
24
12
  onClose?: (() => any) | undefined;
@@ -26,9 +14,9 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<Props
26
14
  }>, {
27
15
  description: string;
28
16
  title: string;
29
- radius: VunoRadius;
30
- size: VunoModalSize;
31
- ui: VunoUi<"modal">;
17
+ radius: import("../../types/base.js").VunoRadius;
18
+ size: import("./Modal.types.js").VunoModalSize;
19
+ ui: import("../../types/slots.js").VunoUi<"modal">;
32
20
  dismissible: boolean;
33
21
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
34
22
  body?: () => unknown;
@@ -13,12 +13,16 @@ export declare const modalTheme: Record<"modal", {
13
13
  readonly size: "full";
14
14
  }];
15
15
  readonly slots: {
16
- readonly body: "flex-1 overflow-y-auto p-4 sm:p-6";
17
- readonly content: "max-h-[85vh]";
16
+ readonly body: "min-h-0 flex-1 overflow-y-auto p-4 pt-0";
17
+ readonly bodyStandalone: "pt-4";
18
+ readonly close: "-me-2 -mt-2 shrink-0";
19
+ readonly content: "flex max-h-[calc(85dvh-0.75rem)] min-h-0 flex-col sm:max-h-[calc(100dvh-3.75rem)]";
18
20
  readonly description: "mt-1 text-sm text-vuno-muted";
19
- readonly footer: "flex items-center justify-end gap-2 p-4 sm:px-6";
20
- readonly header: "p-4 sm:px-6";
21
- readonly root: "m-auto w-[calc(100dvw-2rem)] max-w-lg rounded-sm bg-vuno-surface-1 p-0 text-vuno-body shadow-lg ring ring-vuno-border";
21
+ readonly footer: "flex shrink-0 items-center justify-end gap-2 pt-1.5";
22
+ readonly frame: "flex min-h-0 flex-1 flex-col overflow-hidden rounded-lg bg-vuno-surface ring ring-vuno-border";
23
+ readonly header: "flex shrink-0 items-start justify-between gap-4 p-4";
24
+ readonly heading: "flex min-w-0 flex-col";
25
+ readonly root: "m-auto mb-0 max-h-[85dvh] w-dvw max-w-none overflow-hidden rounded-none border-0 bg-vuno-surface-1 p-1.5 text-vuno-body shadow-lg ring-0 sm:mb-auto sm:max-h-[calc(100dvh-3rem)] sm:w-[calc(100dvw-2rem)] sm:max-w-lg sm:rounded-sm sm:ring sm:ring-vuno-border";
22
26
  readonly title: "font-semibold text-vuno-strong";
23
27
  };
24
28
  /**
@@ -30,29 +34,29 @@ export declare const modalTheme: Record<"modal", {
30
34
  readonly radius: Record<import("../../types/base.js").VunoRadius, Record<"root", string>>;
31
35
  readonly size: {
32
36
  readonly sm: {
33
- readonly root: "max-w-sm";
37
+ readonly root: "sm:max-w-sm";
34
38
  };
35
39
  readonly md: {
36
- readonly root: "max-w-md";
40
+ readonly root: "sm:max-w-md";
37
41
  };
38
42
  readonly lg: {
39
- readonly root: "max-w-lg";
43
+ readonly root: "sm:max-w-lg";
40
44
  };
41
45
  readonly xl: {
42
- readonly root: "max-w-xl";
46
+ readonly root: "sm:max-w-xl";
43
47
  };
44
48
  readonly '2xl': {
45
- readonly root: "max-w-2xl";
49
+ readonly root: "sm:max-w-2xl";
46
50
  };
47
51
  readonly '3xl': {
48
- readonly root: "max-w-3xl";
52
+ readonly root: "sm:max-w-3xl";
49
53
  };
50
54
  readonly '4xl': {
51
- readonly root: "max-w-4xl";
55
+ readonly root: "sm:max-w-4xl";
52
56
  };
53
57
  readonly full: {
54
- readonly content: "h-dvh max-h-dvh";
55
- readonly root: "m-0 h-dvh max-h-dvh w-dvw max-w-none shadow-none ring-0";
58
+ readonly content: "h-[calc(100dvh-0.75rem)] max-h-[calc(100dvh-0.75rem)]";
59
+ readonly root: "m-0 h-dvh max-h-dvh w-dvw max-w-none shadow-none ring-0 sm:rounded-none";
56
60
  };
57
61
  };
58
62
  };
@@ -10,20 +10,16 @@ export const modalTheme = defineTheme("modal", {
10
10
  */
11
11
  compoundVariants: [{ class: { root: "rounded-none" }, size: "full" }],
12
12
  slots: {
13
- body: "flex-1 overflow-y-auto p-4 sm:p-6",
14
- /*
15
- * Solo lo que la tarjeta no da. La columna, el `divide-y` y su color
16
- * salen de `card`, que es quien define la forma «tres regiones
17
- * separadas por una línea»; aquí queda el alto máximo y nada más.
18
- * Antes esto repetía las cinco clases, y repetidas no se mantienen
19
- * juntas: un proyecto que cambiara el separador de sus tarjetas se
20
- * encontraba con que sus modales no cambiaban.
21
- */
22
- content: "max-h-[85vh]",
13
+ body: "min-h-0 flex-1 overflow-y-auto p-4 pt-0",
14
+ bodyStandalone: "pt-4",
15
+ close: "-me-2 -mt-2 shrink-0",
16
+ content: "flex max-h-[calc(85dvh-0.75rem)] min-h-0 flex-col sm:max-h-[calc(100dvh-3.75rem)]",
23
17
  description: "mt-1 text-sm text-vuno-muted",
24
- footer: "flex items-center justify-end gap-2 p-4 sm:px-6",
25
- header: "p-4 sm:px-6",
26
- root: "m-auto w-[calc(100dvw-2rem)] max-w-lg rounded-sm bg-vuno-surface-1 p-0 text-vuno-body shadow-lg ring ring-vuno-border",
18
+ footer: "flex shrink-0 items-center justify-end gap-2 pt-1.5",
19
+ frame: "flex min-h-0 flex-1 flex-col overflow-hidden rounded-lg bg-vuno-surface ring ring-vuno-border",
20
+ header: "flex shrink-0 items-start justify-between gap-4 p-4",
21
+ heading: "flex min-w-0 flex-col",
22
+ root: "m-auto mb-0 max-h-[85dvh] w-dvw max-w-none overflow-hidden rounded-none border-0 bg-vuno-surface-1 p-1.5 text-vuno-body shadow-lg ring-0 sm:mb-auto sm:max-h-[calc(100dvh-3rem)] sm:w-[calc(100dvw-2rem)] sm:max-w-lg sm:rounded-sm sm:ring sm:ring-vuno-border",
27
23
  title: "font-semibold text-vuno-strong"
28
24
  },
29
25
  /**
@@ -34,14 +30,14 @@ export const modalTheme = defineTheme("modal", {
34
30
  variants: {
35
31
  radius: radiusByStep("root"),
36
32
  size: {
37
- sm: { root: "max-w-sm" },
38
- md: { root: "max-w-md" },
39
- lg: { root: "max-w-lg" },
40
- xl: { root: "max-w-xl" },
41
- "2xl": { root: "max-w-2xl" },
42
- "3xl": { root: "max-w-3xl" },
43
- "4xl": { root: "max-w-4xl" },
44
- full: { content: "h-dvh max-h-dvh", root: "m-0 h-dvh max-h-dvh w-dvw max-w-none shadow-none ring-0" }
33
+ sm: { root: "sm:max-w-sm" },
34
+ md: { root: "sm:max-w-md" },
35
+ lg: { root: "sm:max-w-lg" },
36
+ xl: { root: "sm:max-w-xl" },
37
+ "2xl": { root: "sm:max-w-2xl" },
38
+ "3xl": { root: "sm:max-w-3xl" },
39
+ "4xl": { root: "sm:max-w-4xl" },
40
+ full: { content: "h-[calc(100dvh-0.75rem)] max-h-[calc(100dvh-0.75rem)]", root: "m-0 h-dvh max-h-dvh w-dvw max-w-none shadow-none ring-0 sm:rounded-none" }
45
41
  }
46
42
  }
47
43
  });
@@ -0,0 +1,12 @@
1
+ import type { VunoRadius, VunoSize } from '#vuno/types/base';
2
+ import type { VunoUi } from '#vuno/types/slots';
3
+ /** Anchos que admite el diálogo; `full` ocupa todo el viewport. */
4
+ export type VunoModalSize = Extract<VunoSize, '2xl' | '3xl' | '4xl' | 'full' | 'lg' | 'md' | 'sm' | 'xl'>;
5
+ export type VunoModalProps = {
6
+ description?: string;
7
+ dismissible?: boolean;
8
+ radius?: VunoRadius;
9
+ size?: VunoModalSize;
10
+ title?: string;
11
+ ui?: VunoUi<'modal'>;
12
+ };
@@ -14,11 +14,13 @@ function releaseScrollLock() {
14
14
  </script>
15
15
 
16
16
  <script setup>
17
- import { inject, nextTick, onBeforeUnmount, useId, useTemplateRef, watch } from "vue";
17
+ import { nextTick, onBeforeUnmount, useId, useTemplateRef, watch } from "vue";
18
+ import { useVunoOverlayBehind } from "#vuno/composables/internal/useVunoOverlayBehind";
18
19
  import { provideVunoPortal } from "#vuno/composables/internal/useVunoPortal";
19
- import { useTheme } from "#vuno/composables/useTheme";
20
- import { vunoOverlayBehindInjectionKey } from "#vuno/internal/keys";
21
- import Card from "#vuno/components/Card/Card.vue";
20
+ import { useIcons, useMessages, useTheme } from "#vuno/composables/useTheme";
21
+ import { filled } from "#vuno/utils/slots";
22
+ import Button from "#vuno/components/Button/Button.vue";
23
+ import Text from "#vuno/components/Text/Text.vue";
22
24
  defineOptions({ name: "VunoModal" });
23
25
  const open = defineModel("open", { type: Boolean, ...{ default: false } });
24
26
  const props = defineProps({
@@ -30,14 +32,22 @@ const props = defineProps({
30
32
  ui: { type: Object, required: false, default: void 0 }
31
33
  });
32
34
  const emit = defineEmits(["close"]);
33
- defineSlots();
34
- const isBehindOverlay = inject(vunoOverlayBehindInjectionKey, () => false);
35
+ const slots = defineSlots();
36
+ const isBehindOverlay = useVunoOverlayBehind();
37
+ const icons = useIcons();
38
+ const messages = useMessages();
35
39
  const ui = useTheme(
36
40
  "modal",
37
41
  () => props.ui,
38
42
  () => ({ radius: props.radius, size: props.size })
39
43
  );
40
44
  const dialog = useTemplateRef("dialog");
45
+ function hasFooter() {
46
+ return filled(slots.footer);
47
+ }
48
+ function hasHeader() {
49
+ return Boolean(props.title || props.description) || filled(slots.header) || props.dismissible && !hasFooter();
50
+ }
41
51
  const baseId = `vuno-${useId().replace(/[^\w-]/g, "")}`;
42
52
  provideVunoPortal(`#${baseId}`);
43
53
  let scrollLocked = false;
@@ -122,16 +132,6 @@ onBeforeUnmount(() => lockScroll(false));
122
132
  @keydown.capture="onKeydown"
123
133
  @mousedown="onPointerDown"
124
134
  >
125
- <!--
126
- El interior es una tarjeta, literalmente.
127
- «Tres regiones apiladas y separadas por una línea» es lo que `VCard`
128
- define, y el modal lo repetía clase por clase. Ahora lo reutiliza:
129
- un proyecto que cambie el separador de sus tarjetas cambia también
130
- sus modales, que es lo que uno espera y lo que no ocurría.
131
- Va en la variante `plain` porque el marco —el anillo, la sombra y el
132
- radio— lo pone el `<dialog>`, y pintarlo otra vez dentro dibujaría
133
- una caja dentro de otra.
134
- -->
135
135
  <!--
136
136
  **El contenido se monta al abrir y se desmonta al cerrar.**
137
137
 
@@ -152,64 +152,98 @@ onBeforeUnmount(() => lockScroll(false));
152
152
  existiendo cerrado. Eso se comprobó antes de tocarlo, porque la
153
153
  sospecha de partida era la contraria.
154
154
  -->
155
- <Card
155
+ <!--
156
+ El marco principal y las acciones son hermanos a propósito. `VCard`
157
+ siempre deja el pie dentro de su superficie primaria; aquí el pie
158
+ queda fuera del marco para permanecer fijo, mientras cabecera y
159
+ cuerpo forman la única superficie que puede desplazarse.
160
+ -->
161
+ <div
156
162
  v-if="open"
157
- :ui="{ body: ui.body, footer: ui.footer, header: ui.header, root: ui.content }"
158
- variant="plain"
163
+ :class="ui.content"
159
164
  >
160
- <template #header>
161
- <template v-if="$slots.header">
162
- <!-- El slot reemplaza lo visible, pero no los destinos ARIA. -->
163
- <span
164
- v-if="props.title"
165
- :id="`${baseId}-title`"
166
- class="sr-only"
167
- >
168
- {{ props.title }}
169
- </span>
165
+ <div :class="ui.frame">
166
+ <div
167
+ v-if="hasHeader()"
168
+ :class="ui.header"
169
+ >
170
+ <div :class="ui.heading">
171
+ <template v-if="filled(slots.header)">
172
+ <!-- El slot reemplaza lo visible, pero no los destinos ARIA. -->
173
+ <Text
174
+ v-if="props.title"
175
+ :id="`${baseId}-title`"
176
+ class="sr-only"
177
+ tag="span"
178
+ tone="inherit"
179
+ variant="inherit"
180
+ >
181
+ {{ props.title }}
182
+ </Text>
183
+
184
+ <Text
185
+ v-if="props.description"
186
+ :id="`${baseId}-description`"
187
+ class="sr-only"
188
+ tag="span"
189
+ tone="inherit"
190
+ variant="inherit"
191
+ >
192
+ {{ props.description }}
193
+ </Text>
170
194
 
171
- <span
172
- v-if="props.description"
173
- :id="`${baseId}-description`"
174
- class="sr-only"
175
- >
176
- {{ props.description }}
177
- </span>
195
+ <slot name="header" />
196
+ </template>
178
197
 
179
- <slot name="header" />
180
- </template>
198
+ <template v-else>
199
+ <Text
200
+ v-if="props.title"
201
+ :id="`${baseId}-title`"
202
+ :class="ui.title"
203
+ tag="h2"
204
+ tone="inherit"
205
+ variant="inherit"
206
+ >
207
+ {{ props.title }}
208
+ </Text>
181
209
 
182
- <template v-else>
183
- <template v-if="props.title || props.description">
184
- <h2
185
- v-if="props.title"
186
- :id="`${baseId}-title`"
187
- :class="ui.title"
188
- >
189
- {{ props.title }}
190
- </h2>
210
+ <Text
211
+ v-if="props.description"
212
+ :id="`${baseId}-description`"
213
+ :class="ui.description"
214
+ tag="p"
215
+ tone="inherit"
216
+ variant="inherit"
217
+ >
218
+ {{ props.description }}
219
+ </Text>
220
+ </template>
221
+ </div>
191
222
 
192
- <p
193
- v-if="props.description"
194
- :id="`${baseId}-description`"
195
- :class="ui.description"
196
- >
197
- {{ props.description }}
198
- </p>
199
- </template>
200
- </template>
201
- </template>
223
+ <Button
224
+ v-if="props.dismissible && !hasFooter()"
225
+ :aria-label="messages.close"
226
+ :class="ui.close"
227
+ :icon="icons.close"
228
+ size="sm"
229
+ variant="ghost"
230
+ @click="requestClose"
231
+ />
232
+ </div>
202
233
 
203
- <slot name="body">
204
- <slot />
205
- </slot>
234
+ <div :class="[ui.body, hasHeader() ? void 0 : ui.bodyStandalone]">
235
+ <slot name="body">
236
+ <slot />
237
+ </slot>
238
+ </div>
239
+ </div>
206
240
 
207
- <template
208
- v-if="$slots.footer"
209
- #footer
241
+ <div
242
+ v-if="hasFooter()"
243
+ :class="ui.footer"
210
244
  >
211
245
  <slot name="footer" />
212
- </template>
213
- </Card>
246
+ </div>
247
+ </div>
214
248
  </dialog>
215
249
  </template>
@@ -1,24 +1,12 @@
1
- import type { VunoModalSize, VunoRadius } from '#vuno/types/base';
2
- import type { VunoUi } from '#vuno/types/slots';
3
- type Props = {
4
- description?: string;
5
- /** Cerrar con Escape o pulsando el fondo. */
6
- dismissible?: boolean;
7
- /** La curvatura. Sin valor, la que traiga el tema. */
8
- radius?: VunoRadius;
9
- /** Ancho máximo; `full` ocupa todo el viewport. */
10
- size?: VunoModalSize;
11
- title?: string;
12
- ui?: VunoUi<'modal'>;
13
- };
1
+ import type { VunoModalProps } from './Modal.types.js';
14
2
  declare const _default: typeof __VLS_export;
15
3
  export default _default;
16
- declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<Props & {
4
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<VunoModalProps & {
17
5
  open?: boolean;
18
6
  }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
19
7
  close: () => any;
20
8
  "update:open": (value: boolean) => any;
21
- }, string, import("vue").PublicProps, Readonly<Props & {
9
+ }, string, import("vue").PublicProps, Readonly<VunoModalProps & {
22
10
  open?: boolean;
23
11
  }> & Readonly<{
24
12
  onClose?: (() => any) | undefined;
@@ -26,9 +14,9 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<Props
26
14
  }>, {
27
15
  description: string;
28
16
  title: string;
29
- radius: VunoRadius;
30
- size: VunoModalSize;
31
- ui: VunoUi<"modal">;
17
+ radius: import("../../types/base.js").VunoRadius;
18
+ size: import("./Modal.types.js").VunoModalSize;
19
+ ui: import("../../types/slots.js").VunoUi<"modal">;
32
20
  dismissible: boolean;
33
21
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
34
22
  body?: () => unknown;
@@ -1,29 +1,4 @@
1
- import type { VunoUi } from '#vuno/types/slots';
2
- /**
3
- * La barra de navegación: izquierda, centro y derecha.
4
- *
5
- * **No se pega arriba ni se pinta**, y es lo que la hace reutilizable: eso
6
- * lo decide el `<header>` de cada aplicación y esta barra solo reparte lo
7
- * que va dentro. Si trajera su propio fondo habría dos, y si trajera su
8
- * borde habría dos líneas a un píxel una de otra.
9
- *
10
- * Las tres regiones son slots y ninguna es obligatoria. La de la izquierda
11
- * encoge y la de la derecha no, que es lo que ya se aprendió en la barra de
12
- * `VPage`: lo que se recorta cuando falta sitio es el texto, nunca los
13
- * botones.
14
- *
15
- * ```vue
16
- * <header class="sticky top-0">
17
- * <VNavbar>
18
- * <template #left>vuno</template>
19
- * <template #right><VButton label="Entrar" /></template>
20
- * </VNavbar>
21
- * </header>
22
- * ```
23
- */
24
- type Props = {
25
- ui?: VunoUi<'navbar'>;
26
- };
1
+ import type { VunoNavbarProps } from './Navbar.types.js';
27
2
  type __VLS_Slots = {
28
3
  /** El centro de la barra: la navegación, normalmente. */
29
4
  center?: () => unknown;
@@ -32,8 +7,8 @@ type __VLS_Slots = {
32
7
  /** Lo de la derecha: sesión, idioma, la acción principal. */
33
8
  right?: () => unknown;
34
9
  };
35
- declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
36
- ui: VunoUi<"navbar">;
10
+ declare const __VLS_base: import("vue").DefineComponent<VunoNavbarProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<VunoNavbarProps> & Readonly<{}>, {
11
+ ui: import("../../types/slots.js").VunoUi<"navbar">;
37
12
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
38
13
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
39
14
  declare const _default: typeof __VLS_export;
@@ -18,9 +18,8 @@ export declare const navbarTheme: Record<"navbar", {
18
18
  * entonces un título largo a la izquierda no se trunca: empuja la barra y
19
19
  * saca scroll horizontal a la página.
20
20
  *
21
- * La izquierda encoge y la derecha no —`min-w-0` contra `shrink-0`—, que es
22
- * lo que ya se aprendió en la barra de `VPage`: lo que se recorta es el
23
- * texto, nunca los botones.
21
+ * La izquierda encoge y la derecha no —`min-w-0` contra `shrink-0`—: lo que
22
+ * se recorta es el texto, nunca los botones.
24
23
  */
25
24
  readonly slots: {
26
25
  readonly center: "flex min-w-0 items-center justify-center gap-2";
@@ -19,9 +19,8 @@ export const navbarTheme = defineTheme("navbar", {
19
19
  * entonces un título largo a la izquierda no se trunca: empuja la barra y
20
20
  * saca scroll horizontal a la página.
21
21
  *
22
- * La izquierda encoge y la derecha no —`min-w-0` contra `shrink-0`—, que es
23
- * lo que ya se aprendió en la barra de `VPage`: lo que se recorta es el
24
- * texto, nunca los botones.
22
+ * La izquierda encoge y la derecha no —`min-w-0` contra `shrink-0`—: lo que
23
+ * se recorta es el texto, nunca los botones.
25
24
  */
26
25
  slots: {
27
26
  center: "flex min-w-0 items-center justify-center gap-2",
@@ -0,0 +1,4 @@
1
+ import type { VunoUi } from '#vuno/types/slots';
2
+ export type VunoNavbarProps = {
3
+ ui?: VunoUi<'navbar'>;
4
+ };
@@ -1,29 +1,4 @@
1
- import type { VunoUi } from '#vuno/types/slots';
2
- /**
3
- * La barra de navegación: izquierda, centro y derecha.
4
- *
5
- * **No se pega arriba ni se pinta**, y es lo que la hace reutilizable: eso
6
- * lo decide el `<header>` de cada aplicación y esta barra solo reparte lo
7
- * que va dentro. Si trajera su propio fondo habría dos, y si trajera su
8
- * borde habría dos líneas a un píxel una de otra.
9
- *
10
- * Las tres regiones son slots y ninguna es obligatoria. La de la izquierda
11
- * encoge y la de la derecha no, que es lo que ya se aprendió en la barra de
12
- * `VPage`: lo que se recorta cuando falta sitio es el texto, nunca los
13
- * botones.
14
- *
15
- * ```vue
16
- * <header class="sticky top-0">
17
- * <VNavbar>
18
- * <template #left>vuno</template>
19
- * <template #right><VButton label="Entrar" /></template>
20
- * </VNavbar>
21
- * </header>
22
- * ```
23
- */
24
- type Props = {
25
- ui?: VunoUi<'navbar'>;
26
- };
1
+ import type { VunoNavbarProps } from './Navbar.types.js';
27
2
  type __VLS_Slots = {
28
3
  /** El centro de la barra: la navegación, normalmente. */
29
4
  center?: () => unknown;
@@ -32,8 +7,8 @@ type __VLS_Slots = {
32
7
  /** Lo de la derecha: sesión, idioma, la acción principal. */
33
8
  right?: () => unknown;
34
9
  };
35
- declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
36
- ui: VunoUi<"navbar">;
10
+ declare const __VLS_base: import("vue").DefineComponent<VunoNavbarProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<VunoNavbarProps> & Readonly<{}>, {
11
+ ui: import("../../types/slots.js").VunoUi<"navbar">;
37
12
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
38
13
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
39
14
  declare const _default: typeof __VLS_export;
@@ -1,37 +1,8 @@
1
- import type { VunoNavigationItem } from '#vuno/types/page';
2
- import type { VunoUi } from '#vuno/types/slots';
3
- /**
4
- * Navegación anidada: listas dentro de listas, con las ramas que contienen la
5
- * página actual openKeys.
6
- *
7
- * **La apertura se deriva de la ruta, no del clic.** Es lo que hace que al
8
- * recargar en `config/perfil/contrasena` las dos ramas de arriba estén
9
- * openKeys, y que lo estén también en el HTML del servidor. Un estado que solo
10
- * se moviera al pulsar dejaría la página actual escondida en cuanto alguien
11
- * llegara por un enlace directo. Se recalcula al cambiar de ruta, de forma
12
- * **aditiva**: navegar abre lo que hace falta y no cierra lo que el usuario
13
- * abrió a mano.
14
- *
15
- * **Listas anidadas y no `role="tree"`.** Un árbol ARIA es un control de
16
- * selección única con foco móvil, y esto es un menú de enlaces: lo que
17
- * corresponde es `<ul>` dentro de `<li>` con un botón de desplegar. Ponerle
18
- * `role="tree"` obligaría a reimplementar el teclado de un widget y a cambiar
19
- * cómo lo anuncia un lector, para peor.
20
- */
21
- type Props = {
22
- /** Permite cerrar y abrir ramas; desactivado las mantiene visibles. */
23
- collapsible?: boolean;
24
- items: VunoNavigationItem[];
25
- /** Profundidad de esta lista. Interno: lo pone la propia recursión. */
26
- level?: number;
27
- /** Ruta estructural de esta lista. Interno: evita colisiones entre rótulos repetidos. */
28
- path?: string;
29
- ui?: VunoUi<'navigationList'>;
30
- };
31
- declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
32
- path: string;
33
- ui: VunoUi<"navigationList">;
1
+ import type { VunoNavigationListProps } from './NavigationList.types.js';
2
+ declare const __VLS_export: import("vue").DefineComponent<VunoNavigationListProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<VunoNavigationListProps> & Readonly<{}>, {
34
3
  collapsible: boolean;
4
+ path: string;
5
+ ui: import("../../types/slots.js").VunoUi<"navigationList">;
35
6
  level: number;
36
7
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
37
8
  declare const _default: typeof __VLS_export;
@@ -0,0 +1,3 @@
1
+ import type { InjectionKey } from 'vue';
2
+ /** Ramas abiertas compartidas por todos los niveles de la navegación anidada. */
3
+ export declare const vunoNavigationListInjectionKey: InjectionKey<Set<string>>;
@@ -0,0 +1 @@
1
+ export const vunoNavigationListInjectionKey = Symbol("vuno-navigation-list");
@@ -0,0 +1,9 @@
1
+ import type { VunoNavigationItem } from '#vuno/types/page';
2
+ import type { VunoUi } from '#vuno/types/slots';
3
+ export type VunoNavigationListProps = {
4
+ collapsible?: boolean;
5
+ items: VunoNavigationItem[];
6
+ level?: number;
7
+ path?: string;
8
+ ui?: VunoUi<'navigationList'>;
9
+ };