@groupteknology/vuno 1.0.0 → 2.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 (437) hide show
  1. package/README.md +53 -27
  2. package/dist/module.d.mts +14 -2
  3. package/dist/module.json +1 -1
  4. package/dist/module.mjs +80 -13
  5. package/dist/runtime/app/assets/css/dialog.css +1 -0
  6. package/dist/runtime/app/assets/css/main.css +1 -0
  7. package/dist/runtime/app/assets/css/stylesheet.css +1 -0
  8. package/dist/runtime/app/assets/css/theme.css +1 -0
  9. package/dist/runtime/app/assets/css/tokens.css +1 -0
  10. package/dist/runtime/app/components/Alert/Alert.d.vue.ts +20 -0
  11. package/dist/runtime/app/components/Alert/Alert.theme.d.ts +13 -0
  12. package/dist/runtime/app/components/Alert/Alert.theme.js +13 -0
  13. package/dist/runtime/app/components/Alert/Alert.vue +59 -0
  14. package/dist/runtime/app/components/Alert/Alert.vue.d.ts +20 -0
  15. package/dist/runtime/app/components/App/App.d.vue.ts +52 -0
  16. package/dist/runtime/app/components/App/App.vue +150 -0
  17. package/dist/runtime/app/components/App/App.vue.d.ts +52 -0
  18. package/dist/runtime/app/components/App/internal/Overlay/Overlay.d.vue.ts +7 -0
  19. package/dist/runtime/app/components/App/internal/Overlay/Overlay.vue +39 -0
  20. package/dist/runtime/app/components/App/internal/Overlay/Overlay.vue.d.ts +7 -0
  21. package/dist/runtime/app/components/App/internal/OverlayItem/OverlayItem.d.vue.ts +8 -0
  22. package/dist/runtime/app/components/App/internal/OverlayItem/OverlayItem.vue +19 -0
  23. package/dist/runtime/app/components/App/internal/OverlayItem/OverlayItem.vue.d.ts +8 -0
  24. package/dist/runtime/app/components/App/internal/Toast/Toast.d.vue.ts +11 -0
  25. package/dist/runtime/app/components/App/internal/Toast/Toast.theme.d.ts +13 -0
  26. package/dist/runtime/app/components/App/internal/Toast/Toast.theme.js +18 -0
  27. package/dist/runtime/app/components/App/internal/Toast/Toast.vue +64 -0
  28. package/dist/runtime/app/components/App/internal/Toast/Toast.vue.d.ts +11 -0
  29. package/dist/runtime/app/components/App/internal/Toaster/Toaster.d.vue.ts +11 -0
  30. package/dist/runtime/app/components/App/internal/Toaster/Toaster.theme.d.ts +15 -0
  31. package/dist/runtime/app/components/App/internal/Toaster/Toaster.theme.js +16 -0
  32. package/dist/runtime/app/components/App/internal/Toaster/Toaster.vue +100 -0
  33. package/dist/runtime/app/components/App/internal/Toaster/Toaster.vue.d.ts +11 -0
  34. package/dist/runtime/app/components/Avatar/Avatar.d.vue.ts +27 -0
  35. package/dist/runtime/app/components/Avatar/Avatar.theme.d.ts +30 -0
  36. package/dist/runtime/app/components/Avatar/Avatar.theme.js +22 -0
  37. package/dist/runtime/app/components/Avatar/Avatar.vue +51 -0
  38. package/dist/runtime/app/components/Avatar/Avatar.vue.d.ts +27 -0
  39. package/dist/runtime/app/components/Badge/Badge.d.vue.ts +40 -0
  40. package/dist/runtime/app/components/Badge/Badge.theme.d.ts +40 -0
  41. package/dist/runtime/app/components/Badge/Badge.theme.js +22 -0
  42. package/dist/runtime/app/components/Badge/Badge.vue +28 -0
  43. package/dist/runtime/app/components/Badge/Badge.vue.d.ts +40 -0
  44. package/dist/runtime/app/components/Button/Button.d.vue.ts +49 -0
  45. package/dist/runtime/app/components/Button/Button.theme.d.ts +88 -0
  46. package/dist/runtime/app/components/Button/Button.theme.js +59 -0
  47. package/dist/runtime/app/components/Button/Button.vue +78 -0
  48. package/dist/runtime/app/components/Button/Button.vue.d.ts +49 -0
  49. package/dist/runtime/app/components/Card/Card.d.vue.ts +94 -0
  50. package/dist/runtime/app/components/Card/Card.theme.d.ts +57 -0
  51. package/dist/runtime/app/components/Card/Card.theme.js +62 -0
  52. package/dist/runtime/app/components/Card/Card.vue +45 -0
  53. package/dist/runtime/app/components/Card/Card.vue.d.ts +94 -0
  54. package/dist/runtime/app/components/Code/Code.d.vue.ts +19 -0
  55. package/dist/runtime/app/components/Code/Code.theme.d.ts +11 -0
  56. package/dist/runtime/app/components/Code/Code.theme.js +12 -0
  57. package/dist/runtime/app/components/Code/Code.vue +109 -0
  58. package/dist/runtime/app/components/Code/Code.vue.d.ts +19 -0
  59. package/dist/runtime/app/components/Confirm/Confirm.d.vue.ts +35 -0
  60. package/dist/runtime/app/components/Confirm/Confirm.theme.d.ts +12 -0
  61. package/dist/runtime/app/components/Confirm/Confirm.theme.js +13 -0
  62. package/dist/runtime/app/components/Confirm/Confirm.vue +83 -0
  63. package/dist/runtime/app/components/Confirm/Confirm.vue.d.ts +35 -0
  64. package/dist/runtime/app/components/Container/Container.d.vue.ts +42 -0
  65. package/dist/runtime/app/components/Container/Container.theme.d.ts +53 -0
  66. package/dist/runtime/app/components/Container/Container.theme.js +31 -0
  67. package/dist/runtime/app/components/Container/Container.vue +20 -0
  68. package/dist/runtime/app/components/Container/Container.vue.d.ts +42 -0
  69. package/dist/runtime/app/components/ControlGroup/ControlGroup.d.vue.ts +26 -0
  70. package/dist/runtime/app/components/ControlGroup/ControlGroup.theme.d.ts +16 -0
  71. package/dist/runtime/app/components/ControlGroup/ControlGroup.theme.js +13 -0
  72. package/dist/runtime/app/components/ControlGroup/ControlGroup.vue +26 -0
  73. package/dist/runtime/app/components/ControlGroup/ControlGroup.vue.d.ts +26 -0
  74. package/dist/runtime/app/components/FieldArray/FieldArray.d.vue.ts +13 -0
  75. package/dist/runtime/app/components/FieldArray/FieldArray.theme.d.ts +12 -0
  76. package/dist/runtime/app/components/FieldArray/FieldArray.theme.js +13 -0
  77. package/dist/runtime/app/components/FieldArray/FieldArray.vue +173 -0
  78. package/dist/runtime/app/components/FieldArray/FieldArray.vue.d.ts +13 -0
  79. package/dist/runtime/app/components/FieldCheckbox/FieldCheckbox.d.vue.ts +13 -0
  80. package/dist/runtime/app/components/FieldCheckbox/FieldCheckbox.theme.d.ts +5 -0
  81. package/dist/runtime/app/components/FieldCheckbox/FieldCheckbox.theme.js +2 -0
  82. package/dist/runtime/app/components/FieldCheckbox/FieldCheckbox.vue +39 -0
  83. package/dist/runtime/app/components/FieldCheckbox/FieldCheckbox.vue.d.ts +13 -0
  84. package/dist/runtime/app/components/FieldCheckbox/internal/Checkbox/Checkbox.d.vue.ts +40 -0
  85. package/dist/runtime/app/components/FieldCheckbox/internal/Checkbox/Checkbox.theme.d.ts +30 -0
  86. package/dist/runtime/app/components/FieldCheckbox/internal/Checkbox/Checkbox.theme.js +10 -0
  87. package/dist/runtime/app/components/FieldCheckbox/internal/Checkbox/Checkbox.vue +40 -0
  88. package/dist/runtime/app/components/FieldCheckbox/internal/Checkbox/Checkbox.vue.d.ts +40 -0
  89. package/dist/runtime/app/components/FieldColor/FieldColor.d.vue.ts +13 -0
  90. package/dist/runtime/app/components/FieldColor/FieldColor.theme.d.ts +27 -0
  91. package/dist/runtime/app/components/FieldColor/FieldColor.theme.js +18 -0
  92. package/dist/runtime/app/components/FieldColor/FieldColor.vue +88 -0
  93. package/dist/runtime/app/components/FieldColor/FieldColor.vue.d.ts +13 -0
  94. package/dist/runtime/app/components/FieldCurrency/FieldCurrency.d.vue.ts +13 -0
  95. package/dist/runtime/app/components/FieldCurrency/FieldCurrency.theme.d.ts +5 -0
  96. package/dist/runtime/app/components/FieldCurrency/FieldCurrency.theme.js +2 -0
  97. package/dist/runtime/app/components/FieldCurrency/FieldCurrency.vue +51 -0
  98. package/dist/runtime/app/components/FieldCurrency/FieldCurrency.vue.d.ts +13 -0
  99. package/dist/runtime/app/components/FieldFile/FieldFile.d.vue.ts +26 -0
  100. package/dist/runtime/app/components/FieldFile/FieldFile.theme.d.ts +5 -0
  101. package/dist/runtime/app/components/FieldFile/FieldFile.theme.js +2 -0
  102. package/dist/runtime/app/components/FieldFile/FieldFile.vue +99 -0
  103. package/dist/runtime/app/components/FieldFile/FieldFile.vue.d.ts +26 -0
  104. package/dist/runtime/app/components/FieldFile/internal/FileUpload/FileUpload.d.vue.ts +66 -0
  105. package/dist/runtime/app/components/FieldFile/internal/FileUpload/FileUpload.theme.d.ts +88 -0
  106. package/dist/runtime/app/components/FieldFile/internal/FileUpload/FileUpload.theme.js +55 -0
  107. package/dist/runtime/app/components/FieldFile/internal/FileUpload/FileUpload.vue +187 -0
  108. package/dist/runtime/app/components/FieldFile/internal/FileUpload/FileUpload.vue.d.ts +66 -0
  109. package/dist/runtime/app/components/FieldInput/FieldInput.d.vue.ts +24 -0
  110. package/dist/runtime/app/components/FieldInput/FieldInput.theme.d.ts +5 -0
  111. package/dist/runtime/app/components/FieldInput/FieldInput.theme.js +2 -0
  112. package/dist/runtime/app/components/FieldInput/FieldInput.vue +61 -0
  113. package/dist/runtime/app/components/FieldInput/FieldInput.vue.d.ts +24 -0
  114. package/dist/runtime/app/components/FieldNumber/FieldNumber.d.vue.ts +13 -0
  115. package/dist/runtime/app/components/FieldNumber/FieldNumber.theme.d.ts +5 -0
  116. package/dist/runtime/app/components/FieldNumber/FieldNumber.theme.js +2 -0
  117. package/dist/runtime/app/components/FieldNumber/FieldNumber.vue +47 -0
  118. package/dist/runtime/app/components/FieldNumber/FieldNumber.vue.d.ts +13 -0
  119. package/dist/runtime/app/components/FieldPassword/FieldPassword.d.vue.ts +13 -0
  120. package/dist/runtime/app/components/FieldPassword/FieldPassword.theme.d.ts +5 -0
  121. package/dist/runtime/app/components/FieldPassword/FieldPassword.theme.js +2 -0
  122. package/dist/runtime/app/components/FieldPassword/FieldPassword.vue +62 -0
  123. package/dist/runtime/app/components/FieldPassword/FieldPassword.vue.d.ts +13 -0
  124. package/dist/runtime/app/components/FieldRadio/FieldRadio.d.vue.ts +13 -0
  125. package/dist/runtime/app/components/FieldRadio/FieldRadio.theme.d.ts +5 -0
  126. package/dist/runtime/app/components/FieldRadio/FieldRadio.theme.js +2 -0
  127. package/dist/runtime/app/components/FieldRadio/FieldRadio.vue +41 -0
  128. package/dist/runtime/app/components/FieldRadio/FieldRadio.vue.d.ts +13 -0
  129. package/dist/runtime/app/components/FieldRadio/internal/RadioGroup/RadioGroup.d.vue.ts +32 -0
  130. package/dist/runtime/app/components/FieldRadio/internal/RadioGroup/RadioGroup.theme.d.ts +54 -0
  131. package/dist/runtime/app/components/FieldRadio/internal/RadioGroup/RadioGroup.theme.js +31 -0
  132. package/dist/runtime/app/components/FieldRadio/internal/RadioGroup/RadioGroup.vue +80 -0
  133. package/dist/runtime/app/components/FieldRadio/internal/RadioGroup/RadioGroup.vue.d.ts +32 -0
  134. package/dist/runtime/app/components/FieldSearch/FieldSearch.d.vue.ts +17 -0
  135. package/dist/runtime/app/components/FieldSearch/FieldSearch.theme.d.ts +6 -0
  136. package/dist/runtime/app/components/FieldSearch/FieldSearch.theme.js +7 -0
  137. package/dist/runtime/app/components/FieldSearch/FieldSearch.vue +74 -0
  138. package/dist/runtime/app/components/FieldSearch/FieldSearch.vue.d.ts +17 -0
  139. package/dist/runtime/app/components/FieldSelect/FieldSelect.d.vue.ts +13 -0
  140. package/dist/runtime/app/components/FieldSelect/FieldSelect.theme.d.ts +5 -0
  141. package/dist/runtime/app/components/FieldSelect/FieldSelect.theme.js +2 -0
  142. package/dist/runtime/app/components/FieldSelect/FieldSelect.vue +45 -0
  143. package/dist/runtime/app/components/FieldSelect/FieldSelect.vue.d.ts +13 -0
  144. package/dist/runtime/app/components/FieldSelect/internal/Select/Select.d.vue.ts +97 -0
  145. package/dist/runtime/app/components/FieldSelect/internal/Select/Select.theme.d.ts +36 -0
  146. package/dist/runtime/app/components/FieldSelect/internal/Select/Select.theme.js +49 -0
  147. package/dist/runtime/app/components/FieldSelect/internal/Select/Select.vue +196 -0
  148. package/dist/runtime/app/components/FieldSelect/internal/Select/Select.vue.d.ts +97 -0
  149. package/dist/runtime/app/components/FieldSelect/internal/Select/option.d.ts +25 -0
  150. package/dist/runtime/app/components/FieldSelect/internal/Select/option.js +6 -0
  151. package/dist/runtime/app/components/FieldSelect/internal/Select/useVunoSelectState.d.ts +30 -0
  152. package/dist/runtime/app/components/FieldSelect/internal/Select/useVunoSelectState.js +142 -0
  153. package/dist/runtime/app/components/FieldSlug/FieldSlug.d.vue.ts +13 -0
  154. package/dist/runtime/app/components/FieldSlug/FieldSlug.theme.d.ts +5 -0
  155. package/dist/runtime/app/components/FieldSlug/FieldSlug.theme.js +2 -0
  156. package/dist/runtime/app/components/FieldSlug/FieldSlug.vue +113 -0
  157. package/dist/runtime/app/components/FieldSlug/FieldSlug.vue.d.ts +13 -0
  158. package/dist/runtime/app/components/FieldSwitch/FieldSwitch.d.vue.ts +13 -0
  159. package/dist/runtime/app/components/FieldSwitch/FieldSwitch.theme.d.ts +5 -0
  160. package/dist/runtime/app/components/FieldSwitch/FieldSwitch.theme.js +2 -0
  161. package/dist/runtime/app/components/FieldSwitch/FieldSwitch.vue +37 -0
  162. package/dist/runtime/app/components/FieldSwitch/FieldSwitch.vue.d.ts +13 -0
  163. package/dist/runtime/app/components/FieldSwitch/internal/Switch/Switch.d.vue.ts +26 -0
  164. package/dist/runtime/app/components/FieldSwitch/internal/Switch/Switch.theme.d.ts +39 -0
  165. package/dist/runtime/app/components/FieldSwitch/internal/Switch/Switch.theme.js +20 -0
  166. package/dist/runtime/app/components/FieldSwitch/internal/Switch/Switch.vue +46 -0
  167. package/dist/runtime/app/components/FieldSwitch/internal/Switch/Switch.vue.d.ts +26 -0
  168. package/dist/runtime/app/components/FieldTags/FieldTags.d.vue.ts +13 -0
  169. package/dist/runtime/app/components/FieldTags/FieldTags.theme.d.ts +5 -0
  170. package/dist/runtime/app/components/FieldTags/FieldTags.theme.js +2 -0
  171. package/dist/runtime/app/components/FieldTags/FieldTags.vue +41 -0
  172. package/dist/runtime/app/components/FieldTags/FieldTags.vue.d.ts +13 -0
  173. package/dist/runtime/app/components/FieldTags/internal/TagsInput/TagsInput.d.vue.ts +26 -0
  174. package/dist/runtime/app/components/FieldTags/internal/TagsInput/TagsInput.theme.d.ts +34 -0
  175. package/dist/runtime/app/components/FieldTags/internal/TagsInput/TagsInput.theme.js +20 -0
  176. package/dist/runtime/app/components/FieldTags/internal/TagsInput/TagsInput.vue +97 -0
  177. package/dist/runtime/app/components/FieldTags/internal/TagsInput/TagsInput.vue.d.ts +26 -0
  178. package/dist/runtime/app/components/FieldTextarea/FieldTextarea.d.vue.ts +26 -0
  179. package/dist/runtime/app/components/FieldTextarea/FieldTextarea.theme.d.ts +5 -0
  180. package/dist/runtime/app/components/FieldTextarea/FieldTextarea.theme.js +2 -0
  181. package/dist/runtime/app/components/FieldTextarea/FieldTextarea.vue +45 -0
  182. package/dist/runtime/app/components/FieldTextarea/FieldTextarea.vue.d.ts +26 -0
  183. package/dist/runtime/app/components/FieldTextarea/internal/Textarea/Textarea.d.vue.ts +34 -0
  184. package/dist/runtime/app/components/FieldTextarea/internal/Textarea/Textarea.theme.d.ts +36 -0
  185. package/dist/runtime/app/components/FieldTextarea/internal/Textarea/Textarea.theme.js +37 -0
  186. package/dist/runtime/app/components/FieldTextarea/internal/Textarea/Textarea.vue +43 -0
  187. package/dist/runtime/app/components/FieldTextarea/internal/Textarea/Textarea.vue.d.ts +34 -0
  188. package/dist/runtime/app/components/Form/Form.d.vue.ts +52 -0
  189. package/dist/runtime/app/components/Form/Form.theme.d.ts +9 -0
  190. package/dist/runtime/app/components/Form/Form.theme.js +10 -0
  191. package/dist/runtime/app/components/Form/Form.vue +129 -0
  192. package/dist/runtime/app/components/Form/Form.vue.d.ts +52 -0
  193. package/dist/runtime/app/components/Form/internal/FormFieldRenderer/FormFieldRenderer.d.vue.ts +7 -0
  194. package/dist/runtime/app/components/Form/internal/FormFieldRenderer/FormFieldRenderer.vue +67 -0
  195. package/dist/runtime/app/components/Form/internal/FormFieldRenderer/FormFieldRenderer.vue.d.ts +7 -0
  196. package/dist/runtime/app/components/Form/internal/grid.d.ts +9 -0
  197. package/dist/runtime/app/components/Form/internal/grid.js +91 -0
  198. package/dist/runtime/app/components/Form/internal/standard-schema.d.ts +29 -0
  199. package/dist/runtime/app/components/Form/internal/standard-schema.js +15 -0
  200. package/dist/runtime/app/components/Form/internal/useVunoFormState.d.ts +43 -0
  201. package/dist/runtime/app/components/Form/internal/useVunoFormState.js +81 -0
  202. package/dist/runtime/app/components/FormField/FormField.d.vue.ts +35 -0
  203. package/dist/runtime/app/components/FormField/FormField.theme.d.ts +62 -0
  204. package/dist/runtime/app/components/FormField/FormField.theme.js +28 -0
  205. package/dist/runtime/app/components/FormField/FormField.vue +124 -0
  206. package/dist/runtime/app/components/FormField/FormField.vue.d.ts +35 -0
  207. package/dist/runtime/app/components/FormModal/FormModal.d.vue.ts +63 -0
  208. package/dist/runtime/app/components/FormModal/FormModal.theme.d.ts +8 -0
  209. package/dist/runtime/app/components/FormModal/FormModal.theme.js +9 -0
  210. package/dist/runtime/app/components/FormModal/FormModal.vue +95 -0
  211. package/dist/runtime/app/components/FormModal/FormModal.vue.d.ts +63 -0
  212. package/dist/runtime/app/components/FormSection/FormSection.d.vue.ts +15 -0
  213. package/dist/runtime/app/components/FormSection/FormSection.theme.d.ts +12 -0
  214. package/dist/runtime/app/components/FormSection/FormSection.theme.js +14 -0
  215. package/dist/runtime/app/components/FormSection/FormSection.vue +45 -0
  216. package/dist/runtime/app/components/FormSection/FormSection.vue.d.ts +15 -0
  217. package/dist/runtime/app/components/Icon/Icon.d.vue.ts +6 -0
  218. package/dist/runtime/app/components/Icon/Icon.vue +32 -0
  219. package/dist/runtime/app/components/Icon/Icon.vue.d.ts +6 -0
  220. package/dist/runtime/app/components/Menu/Menu.d.vue.ts +36 -0
  221. package/dist/runtime/app/components/Menu/Menu.theme.d.ts +17 -0
  222. package/dist/runtime/app/components/Menu/Menu.theme.js +20 -0
  223. package/dist/runtime/app/components/Menu/Menu.vue +182 -0
  224. package/dist/runtime/app/components/Menu/Menu.vue.d.ts +36 -0
  225. package/dist/runtime/app/components/Modal/Modal.d.vue.ts +43 -0
  226. package/dist/runtime/app/components/Modal/Modal.theme.d.ts +59 -0
  227. package/dist/runtime/app/components/Modal/Modal.theme.js +47 -0
  228. package/dist/runtime/app/components/Modal/Modal.vue +215 -0
  229. package/dist/runtime/app/components/Modal/Modal.vue.d.ts +43 -0
  230. package/dist/runtime/app/components/Navbar/Navbar.d.vue.ts +45 -0
  231. package/dist/runtime/app/components/Navbar/Navbar.theme.d.ts +31 -0
  232. package/dist/runtime/app/components/Navbar/Navbar.theme.js +32 -0
  233. package/dist/runtime/app/components/Navbar/Navbar.vue +47 -0
  234. package/dist/runtime/app/components/Navbar/Navbar.vue.d.ts +45 -0
  235. package/dist/runtime/app/components/NavigationList/NavigationList.d.vue.ts +38 -0
  236. package/dist/runtime/app/components/NavigationList/NavigationList.theme.d.ts +32 -0
  237. package/dist/runtime/app/components/NavigationList/NavigationList.theme.js +35 -0
  238. package/dist/runtime/app/components/NavigationList/NavigationList.vue +187 -0
  239. package/dist/runtime/app/components/NavigationList/NavigationList.vue.d.ts +38 -0
  240. package/dist/runtime/app/components/NavigationMenu/NavigationMenu.d.vue.ts +31 -0
  241. package/dist/runtime/app/components/NavigationMenu/NavigationMenu.theme.d.ts +26 -0
  242. package/dist/runtime/app/components/NavigationMenu/NavigationMenu.theme.js +27 -0
  243. package/dist/runtime/app/components/NavigationMenu/NavigationMenu.vue +236 -0
  244. package/dist/runtime/app/components/NavigationMenu/NavigationMenu.vue.d.ts +31 -0
  245. package/dist/runtime/app/components/NavigationToc/NavigationToc.d.vue.ts +14 -0
  246. package/dist/runtime/app/components/NavigationToc/NavigationToc.theme.d.ts +9 -0
  247. package/dist/runtime/app/components/NavigationToc/NavigationToc.theme.js +10 -0
  248. package/dist/runtime/app/components/NavigationToc/NavigationToc.vue +81 -0
  249. package/dist/runtime/app/components/NavigationToc/NavigationToc.vue.d.ts +14 -0
  250. package/dist/runtime/app/components/Page/Page.d.vue.ts +40 -0
  251. package/dist/runtime/app/components/Page/Page.theme.d.ts +32 -0
  252. package/dist/runtime/app/components/Page/Page.theme.js +31 -0
  253. package/dist/runtime/app/components/Page/Page.vue +132 -0
  254. package/dist/runtime/app/components/Page/Page.vue.d.ts +40 -0
  255. package/dist/runtime/app/components/Pagination/Pagination.d.vue.ts +33 -0
  256. package/dist/runtime/app/components/Pagination/Pagination.theme.d.ts +13 -0
  257. package/dist/runtime/app/components/Pagination/Pagination.theme.js +14 -0
  258. package/dist/runtime/app/components/Pagination/Pagination.vue +129 -0
  259. package/dist/runtime/app/components/Pagination/Pagination.vue.d.ts +33 -0
  260. package/dist/runtime/app/components/Slideover/Slideover.d.vue.ts +43 -0
  261. package/dist/runtime/app/components/Slideover/Slideover.theme.d.ts +35 -0
  262. package/dist/runtime/app/components/Slideover/Slideover.theme.js +24 -0
  263. package/dist/runtime/app/components/Slideover/Slideover.vue +58 -0
  264. package/dist/runtime/app/components/Slideover/Slideover.vue.d.ts +43 -0
  265. package/dist/runtime/app/components/State/State.d.vue.ts +14 -0
  266. package/dist/runtime/app/components/State/State.theme.d.ts +19 -0
  267. package/dist/runtime/app/components/State/State.theme.js +26 -0
  268. package/dist/runtime/app/components/State/State.vue +66 -0
  269. package/dist/runtime/app/components/State/State.vue.d.ts +14 -0
  270. package/dist/runtime/app/components/Table/Table.d.vue.ts +80 -0
  271. package/dist/runtime/app/components/Table/Table.theme.d.ts +50 -0
  272. package/dist/runtime/app/components/Table/Table.theme.js +64 -0
  273. package/dist/runtime/app/components/Table/Table.vue +483 -0
  274. package/dist/runtime/app/components/Table/Table.vue.d.ts +80 -0
  275. package/dist/runtime/app/components/Table/internal/CellBadge/CellBadge.d.vue.ts +5 -0
  276. package/dist/runtime/app/components/Table/internal/CellBadge/CellBadge.vue +26 -0
  277. package/dist/runtime/app/components/Table/internal/CellBadge/CellBadge.vue.d.ts +5 -0
  278. package/dist/runtime/app/components/Table/internal/CellBoolean/CellBoolean.d.vue.ts +5 -0
  279. package/dist/runtime/app/components/Table/internal/CellBoolean/CellBoolean.theme.d.ts +21 -0
  280. package/dist/runtime/app/components/Table/internal/CellBoolean/CellBoolean.theme.js +11 -0
  281. package/dist/runtime/app/components/Table/internal/CellBoolean/CellBoolean.vue +32 -0
  282. package/dist/runtime/app/components/Table/internal/CellBoolean/CellBoolean.vue.d.ts +5 -0
  283. package/dist/runtime/app/components/Table/internal/CellCurrency/CellCurrency.d.vue.ts +5 -0
  284. package/dist/runtime/app/components/Table/internal/CellCurrency/CellCurrency.theme.d.ts +5 -0
  285. package/dist/runtime/app/components/Table/internal/CellCurrency/CellCurrency.theme.js +4 -0
  286. package/dist/runtime/app/components/Table/internal/CellCurrency/CellCurrency.vue +16 -0
  287. package/dist/runtime/app/components/Table/internal/CellCurrency/CellCurrency.vue.d.ts +5 -0
  288. package/dist/runtime/app/components/Table/internal/CellDate/CellDate.d.vue.ts +5 -0
  289. package/dist/runtime/app/components/Table/internal/CellDate/CellDate.theme.d.ts +5 -0
  290. package/dist/runtime/app/components/Table/internal/CellDate/CellDate.theme.js +4 -0
  291. package/dist/runtime/app/components/Table/internal/CellDate/CellDate.vue +21 -0
  292. package/dist/runtime/app/components/Table/internal/CellDate/CellDate.vue.d.ts +5 -0
  293. package/dist/runtime/app/components/Table/internal/CellImage/CellImage.d.vue.ts +5 -0
  294. package/dist/runtime/app/components/Table/internal/CellImage/CellImage.vue +24 -0
  295. package/dist/runtime/app/components/Table/internal/CellImage/CellImage.vue.d.ts +5 -0
  296. package/dist/runtime/app/components/Table/internal/CellNumber/CellNumber.d.vue.ts +5 -0
  297. package/dist/runtime/app/components/Table/internal/CellNumber/CellNumber.theme.d.ts +5 -0
  298. package/dist/runtime/app/components/Table/internal/CellNumber/CellNumber.theme.js +4 -0
  299. package/dist/runtime/app/components/Table/internal/CellNumber/CellNumber.vue +17 -0
  300. package/dist/runtime/app/components/Table/internal/CellNumber/CellNumber.vue.d.ts +5 -0
  301. package/dist/runtime/app/components/Table/internal/CellText/CellText.d.vue.ts +5 -0
  302. package/dist/runtime/app/components/Table/internal/CellText/CellText.theme.d.ts +13 -0
  303. package/dist/runtime/app/components/Table/internal/CellText/CellText.theme.js +11 -0
  304. package/dist/runtime/app/components/Table/internal/CellText/CellText.vue +16 -0
  305. package/dist/runtime/app/components/Table/internal/CellText/CellText.vue.d.ts +5 -0
  306. package/dist/runtime/app/components/Table/internal/TableCell/TableCell.d.vue.ts +22 -0
  307. package/dist/runtime/app/components/Table/internal/TableCell/TableCell.vue +48 -0
  308. package/dist/runtime/app/components/Table/internal/TableCell/TableCell.vue.d.ts +22 -0
  309. package/dist/runtime/app/components/Table/internal/column.d.ts +9 -0
  310. package/dist/runtime/app/components/Table/internal/column.js +5 -0
  311. package/dist/runtime/app/components/Table/internal/query.d.ts +18 -0
  312. package/dist/runtime/app/components/Table/internal/query.js +8 -0
  313. package/dist/runtime/app/components/Table/internal/selection.d.ts +29 -0
  314. package/dist/runtime/app/components/Table/internal/selection.js +10 -0
  315. package/dist/runtime/app/components/Table/internal/useVunoTable.d.ts +93 -0
  316. package/dist/runtime/app/components/Table/internal/useVunoTable.js +153 -0
  317. package/dist/runtime/app/components/Table/internal/useVunoTableSelection.d.ts +21 -0
  318. package/dist/runtime/app/components/Table/internal/useVunoTableSelection.js +29 -0
  319. package/dist/runtime/app/components/Tabs/Tabs.d.vue.ts +49 -0
  320. package/dist/runtime/app/components/Tabs/Tabs.theme.d.ts +32 -0
  321. package/dist/runtime/app/components/Tabs/Tabs.theme.js +23 -0
  322. package/dist/runtime/app/components/Tabs/Tabs.vue +119 -0
  323. package/dist/runtime/app/components/Tabs/Tabs.vue.d.ts +49 -0
  324. package/dist/runtime/app/components/Tooltip/Tooltip.d.vue.ts +40 -0
  325. package/dist/runtime/app/components/Tooltip/Tooltip.theme.d.ts +12 -0
  326. package/dist/runtime/app/components/Tooltip/Tooltip.theme.js +13 -0
  327. package/dist/runtime/app/components/Tooltip/Tooltip.vue +139 -0
  328. package/dist/runtime/app/components/Tooltip/Tooltip.vue.d.ts +40 -0
  329. package/dist/runtime/app/components/internal/ControlShell/ControlShell.d.vue.ts +41 -0
  330. package/dist/runtime/app/components/internal/ControlShell/ControlShell.theme.d.ts +50 -0
  331. package/dist/runtime/app/components/internal/ControlShell/ControlShell.theme.js +38 -0
  332. package/dist/runtime/app/components/internal/ControlShell/ControlShell.vue +33 -0
  333. package/dist/runtime/app/components/internal/ControlShell/ControlShell.vue.d.ts +41 -0
  334. package/dist/runtime/app/components/internal/FieldShell/FieldShell.d.vue.ts +23 -0
  335. package/dist/runtime/app/components/internal/FieldShell/FieldShell.vue +63 -0
  336. package/dist/runtime/app/components/internal/FieldShell/FieldShell.vue.d.ts +23 -0
  337. package/dist/runtime/app/components/internal/Input/Input.d.vue.ts +52 -0
  338. package/dist/runtime/app/components/internal/Input/Input.theme.d.ts +30 -0
  339. package/dist/runtime/app/components/internal/Input/Input.theme.js +21 -0
  340. package/dist/runtime/app/components/internal/Input/Input.vue +66 -0
  341. package/dist/runtime/app/components/internal/Input/Input.vue.d.ts +52 -0
  342. package/dist/runtime/app/components/internal/NumberInput/NumberInput.d.vue.ts +36 -0
  343. package/dist/runtime/app/components/internal/NumberInput/NumberInput.theme.d.ts +31 -0
  344. package/dist/runtime/app/components/internal/NumberInput/NumberInput.theme.js +26 -0
  345. package/dist/runtime/app/components/internal/NumberInput/NumberInput.vue +221 -0
  346. package/dist/runtime/app/components/internal/NumberInput/NumberInput.vue.d.ts +36 -0
  347. package/dist/runtime/app/components/internal/NumberInput/number.d.ts +42 -0
  348. package/dist/runtime/app/components/internal/NumberInput/number.js +64 -0
  349. package/dist/runtime/app/composables/defineShortcuts.d.ts +19 -0
  350. package/dist/runtime/app/composables/defineShortcuts.js +68 -0
  351. package/dist/runtime/app/composables/internal/useVunoAnchor.d.ts +45 -0
  352. package/dist/runtime/app/composables/internal/useVunoAnchor.js +35 -0
  353. package/dist/runtime/app/composables/internal/useVunoControlGroup.d.ts +17 -0
  354. package/dist/runtime/app/composables/internal/useVunoControlGroup.js +18 -0
  355. package/dist/runtime/app/composables/internal/useVunoPortal.d.ts +18 -0
  356. package/dist/runtime/app/composables/internal/useVunoPortal.js +12 -0
  357. package/dist/runtime/app/composables/useConfirm.d.ts +15 -0
  358. package/dist/runtime/app/composables/useConfirm.js +5 -0
  359. package/dist/runtime/app/composables/useContext.d.ts +11 -0
  360. package/dist/runtime/app/composables/useContext.js +9 -0
  361. package/dist/runtime/app/composables/useCrud.d.ts +23 -0
  362. package/dist/runtime/app/composables/useCrud.js +153 -0
  363. package/dist/runtime/app/composables/useField.d.ts +10 -0
  364. package/dist/runtime/app/composables/useField.js +42 -0
  365. package/dist/runtime/app/composables/useForm.d.ts +5 -0
  366. package/dist/runtime/app/composables/useForm.js +9 -0
  367. package/dist/runtime/app/composables/useModal.d.ts +21 -0
  368. package/dist/runtime/app/composables/useModal.js +24 -0
  369. package/dist/runtime/app/composables/useOverlay.d.ts +22 -0
  370. package/dist/runtime/app/composables/useOverlay.js +10 -0
  371. package/dist/runtime/app/composables/useTableQuery.d.ts +10 -0
  372. package/dist/runtime/app/composables/useTableQuery.js +126 -0
  373. package/dist/runtime/app/composables/useTheme.d.ts +31 -0
  374. package/dist/runtime/app/composables/useTheme.js +29 -0
  375. package/dist/runtime/app/composables/useToast.d.ts +28 -0
  376. package/dist/runtime/app/composables/useToast.js +13 -0
  377. package/dist/runtime/app/internal/keys.d.ts +43 -0
  378. package/dist/runtime/app/internal/keys.js +8 -0
  379. package/dist/runtime/app/internal/slots.d.ts +22 -0
  380. package/dist/runtime/app/internal/slots.js +24 -0
  381. package/dist/runtime/app/plugins/vue-query.d.ts +8 -0
  382. package/dist/runtime/app/plugins/vue-query.js +13 -0
  383. package/dist/runtime/app/theme/icons.d.ts +2 -0
  384. package/dist/runtime/app/theme/icons.js +43 -0
  385. package/dist/runtime/app/theme/index.d.ts +1168 -0
  386. package/dist/runtime/app/theme/index.js +120 -0
  387. package/dist/runtime/app/theme/messages.d.ts +2 -0
  388. package/dist/runtime/app/theme/messages.js +70 -0
  389. package/dist/runtime/app/theme/shared.d.ts +42 -0
  390. package/dist/runtime/app/theme/shared.js +24 -0
  391. package/dist/runtime/app/types/alert.d.ts +13 -0
  392. package/dist/runtime/app/types/alert.js +0 -0
  393. package/dist/runtime/app/types/app-config.d.ts +8 -0
  394. package/dist/runtime/app/types/app-config.js +1 -0
  395. package/dist/runtime/app/types/app.d.ts +83 -0
  396. package/dist/runtime/app/types/app.js +0 -0
  397. package/dist/runtime/app/types/base.d.ts +78 -0
  398. package/dist/runtime/app/types/base.js +0 -0
  399. package/dist/runtime/app/types/confirm.d.ts +19 -0
  400. package/dist/runtime/app/types/confirm.js +0 -0
  401. package/dist/runtime/app/types/crud.d.ts +108 -0
  402. package/dist/runtime/app/types/crud.js +0 -0
  403. package/dist/runtime/app/types/field-type.d.ts +4 -0
  404. package/dist/runtime/app/types/field-type.js +0 -0
  405. package/dist/runtime/app/types/field.d.ts +233 -0
  406. package/dist/runtime/app/types/field.js +0 -0
  407. package/dist/runtime/app/types/form.d.ts +67 -0
  408. package/dist/runtime/app/types/form.js +0 -0
  409. package/dist/runtime/app/types/index.d.ts +16 -0
  410. package/dist/runtime/app/types/index.js +1 -0
  411. package/dist/runtime/app/types/page.d.ts +61 -0
  412. package/dist/runtime/app/types/page.js +0 -0
  413. package/dist/runtime/app/types/responsive.d.ts +8 -0
  414. package/dist/runtime/app/types/responsive.js +0 -0
  415. package/dist/runtime/app/types/shortcuts.d.ts +44 -0
  416. package/dist/runtime/app/types/shortcuts.js +0 -0
  417. package/dist/runtime/app/types/slots.d.ts +30 -0
  418. package/dist/runtime/app/types/slots.js +0 -0
  419. package/dist/runtime/app/types/state.d.ts +35 -0
  420. package/dist/runtime/app/types/state.js +0 -0
  421. package/dist/runtime/app/types/table.d.ts +287 -0
  422. package/dist/runtime/app/types/table.js +0 -0
  423. package/dist/runtime/app/types/theme.d.ts +251 -0
  424. package/dist/runtime/app/types/theme.js +0 -0
  425. package/dist/runtime/app/utils/format.d.ts +18 -0
  426. package/dist/runtime/app/utils/format.js +36 -0
  427. package/dist/runtime/app/utils/pagination.d.ts +41 -0
  428. package/dist/runtime/app/utils/pagination.js +32 -0
  429. package/dist/runtime/app/utils/path.d.ts +16 -0
  430. package/dist/runtime/app/utils/path.js +76 -0
  431. package/dist/runtime/app/utils/query-key.d.ts +20 -0
  432. package/dist/runtime/app/utils/query-key.js +7 -0
  433. package/dist/runtime/app/utils/theme.d.ts +44 -0
  434. package/dist/runtime/app/utils/theme.js +43 -0
  435. package/dist/types.d.mts +3 -11
  436. package/package.json +18 -3
  437. package/dist/module.d.cts +0 -2
@@ -0,0 +1,62 @@
1
+ import { radiusByStep } from "#vuno/theme/shared";
2
+ import { defineTheme } from "#vuno/utils/theme";
3
+ export const cardTheme = defineTheme("card", {
4
+ /**
5
+ * La tarjeta. Tres regiones apiladas y separadas por una línea, que es la
6
+ * forma que tenía el caso real escrito a mano antes de que existiera.
7
+ *
8
+ * El relleno va en cada región y no en la raíz: con él en la raíz, la línea
9
+ * divisoria no llegaría a los bordes y quedaría flotando en medio.
10
+ *
11
+ * **La raíz lleva anillo de foco desde que existe `tag`.** Con `tag` la
12
+ * tarjeta puede **ser** un enlace o un botón, y entonces recibe el foco.
13
+ *
14
+ * Y aquí hay que decir qué pasaba de verdad, porque lo primero que se
15
+ * escribió en este mismo comentario era falso y lo desmintió la medición.
16
+ * **No se quedaba sin contorno**: quitando las tres clases con el elemento
17
+ * enfocado, el contorno calculado sigue siendo `1px auto` —el del navegador,
18
+ * que el preflight de Tailwind no neutraliza— y con las clases pasa a `2px
19
+ * solid` del acento, con 2px de separación. O sea que el defecto no era una
20
+ * tarjeta invisible al tabular, sino **la única superficie enfocable de vuno
21
+ * que no llevaba el anillo del sistema**: grosor, color y separación
22
+ * distintos de los del botón, el campo y el enlace de la miga, y a merced de
23
+ * lo que pinte cada navegador. Que ya lo era se ve en que el ejemplo de la
24
+ * ficha llevaba el anillo escrito a mano sobre el enlace que la envolvía.
25
+ *
26
+ * Va **siempre puesto y sin variante que lo encienda**, que es lo contrario
27
+ * de lo que pide el reflejo. El motivo es que la condición ya la impone
28
+ * `:focus-visible`: un elemento que no puede recibir el foco no la cumple
29
+ * nunca, así que sobre un `div` las tres clases no pintan nada —medido: con
30
+ * `tag` por defecto la tarjeta ni siquiera es parada del tabulador—. Una
31
+ * variante sería una segunda copia, más débil, de una condición que el CSS
32
+ * ya garantiza, y además tendría que **adivinar** si un `tag` cualquiera es
33
+ * enfocable; se equivocaría justo en el caso peligroso, el de un `div` con
34
+ * un `tabindex` llegado por atributos, dejando sin anillo algo que sí toma
35
+ * el foco.
36
+ *
37
+ * El acento se declara aquí, como en `breadcrumbLink` y en la pestaña: la
38
+ * tarjeta no tiene variantes de color de las que sacarlo, y sin declararlo
39
+ * `outline-(--vuno-accent)` se quedaría con lo que hubiera heredado.
40
+ */
41
+ slots: {
42
+ body: "p-4 text-vuno-body",
43
+ footer: "p-4",
44
+ header: "p-4 font-semibold text-vuno-strong",
45
+ root: "flex w-full flex-col divide-y divide-vuno-border rounded-sm [--vuno-accent:var(--color-vuno-primary)] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--vuno-accent)"
46
+ },
47
+ variants: {
48
+ radius: radiusByStep("root"),
49
+ /*
50
+ * `outline` sube un escalón sobre la página y se cierra con un borde.
51
+ * `soft` sube dos y no lleva borde, porque va dentro de algo que ya
52
+ * está levantado y ahí otro borde no separa nada: lo que distingue es
53
+ * la elevación.
54
+ */
55
+ variant: {
56
+ outline: { root: "border border-vuno-border bg-vuno-surface-1" },
57
+ /* Sin contenedor: el marco lo pone quien la envuelve. */
58
+ plain: {},
59
+ soft: { root: "bg-vuno-surface-2" }
60
+ }
61
+ }
62
+ });
@@ -0,0 +1,45 @@
1
+ <script setup>
2
+ import { useTheme } from "#vuno/composables/useTheme";
3
+ import { filled } from "#vuno/internal/slots";
4
+ defineOptions({ name: "VunoCard" });
5
+ const props = defineProps({
6
+ radius: { type: String, required: false, default: void 0 },
7
+ tag: { type: null, required: false, default: "div" },
8
+ ui: { type: Object, required: false, default: void 0 },
9
+ variant: { type: String, required: false, default: "outline" }
10
+ });
11
+ const slots = defineSlots();
12
+ const ui = useTheme(
13
+ "card",
14
+ () => props.ui,
15
+ () => ({ radius: props.radius, variant: props.variant })
16
+ );
17
+ </script>
18
+
19
+ <template>
20
+ <component
21
+ :is="props.tag"
22
+ :class="ui.root"
23
+ >
24
+ <div
25
+ v-if="filled(slots.header)"
26
+ :class="ui.header"
27
+ >
28
+ <slot name="header" />
29
+ </div>
30
+
31
+ <div
32
+ v-if="filled(slots.default)"
33
+ :class="ui.body"
34
+ >
35
+ <slot />
36
+ </div>
37
+
38
+ <div
39
+ v-if="filled(slots.footer)"
40
+ :class="ui.footer"
41
+ >
42
+ <slot name="footer" />
43
+ </div>
44
+ </component>
45
+ </template>
@@ -0,0 +1,94 @@
1
+ import type { Component } from 'vue';
2
+ import type { VunoRadius } from '#vuno/types/base';
3
+ import type { VunoUi } from '#vuno/types/slots';
4
+ /**
5
+ * Una caja que agrupa contenido, con cabecera y pie opcionales.
6
+ *
7
+ * No estaba y se decidió a propósito que no estuviera: el playground se
8
+ * escribió la suya a mano y el argumento fue que «si algún día vuno ofrece
9
+ * una tarjeta, que sea porque alguien la pida, no porque el banco de pruebas
10
+ * la necesitara». Entra ahora porque la han pedido, y con la forma que el
11
+ * caso real ya tenía: tres regiones apiladas y separadas por una línea.
12
+ *
13
+ * **No es pulsable, y eso es deliberado.** Una tarjeta que se pulsa entera es
14
+ * un botón o un enlace, y disfrazarla deja de serlo para el teclado y para el
15
+ * lector de pantalla. Si hace falta navegar, se envuelve en un `NuxtLink` o
16
+ * se pone un botón dentro, que es lo que hace el playground.
17
+ */
18
+ type Props = {
19
+ /** La curvatura. Sin valor, la que traiga el tema. */
20
+ radius?: VunoRadius;
21
+ /**
22
+ * El elemento que pinta. `div` de serie; `form` para una tarjeta que
23
+ * se envía, `NuxtLink` para una que navega, `article` o `section`
24
+ * cuando el contenido lo pida.
25
+ *
26
+ * Es la forma correcta de una tarjeta pulsable, y por eso existe.
27
+ * Antes esto decía que una tarjeta que se pulsa entera «es un botón o
28
+ * un enlace, y disfrazarla deja de serlo para el teclado y para el
29
+ * lector de pantalla», con la salida de envolverla en un `NuxtLink`.
30
+ * El aviso sigue siendo cierto sobre el disfraz —un `div` con
31
+ * `@click` no lo arregla ningún `role`—, pero envolver no era la
32
+ * mejor salida: **siéndolo** no hay elemento de más, el foco cae
33
+ * donde debe y el navegador da gratis abrir en otra pestaña, copiar
34
+ * el enlace y anunciarlo como lo que es.
35
+ *
36
+ * Los atributos caen en él: `to` para un enlace, `action` y `method`
37
+ * para un formulario, sin declararlos aquí.
38
+ *
39
+ * **La cadena solo vale para etiquetas nativas.** Para un componente
40
+ * hay que pasar el componente, no su nombre: `:tag="NuxtLink"` con
41
+ * `import { NuxtLink } from '#components'`, nunca `tag="NuxtLink"`.
42
+ * Los componentes de Nuxt se auto-importan en **tiempo de
43
+ * compilación**, así que al resolver una cadena no hay nada
44
+ * registrado que encontrar — y lo que no resuelve se pinta como
45
+ * etiqueta nativa: sale un `<nuxtlink to="…">` literal en el DOM,
46
+ * con todas las clases puestas, sin `href`, sin navegación, sin
47
+ * foco y **sin un solo aviso**. Se ve exactamente igual que una
48
+ * tarjeta enlazada.
49
+ */
50
+ tag?: Component | string;
51
+ ui?: VunoUi<'card'>;
52
+ /**
53
+ * `outline` para una tarjeta sobre la página: borde y un escalón de
54
+ * elevación. `soft` para una que ya está dentro de algo levantado —un
55
+ * diálogo, un panel—, donde otro borde sobra y lo que distingue es
56
+ * subir otro escalón.
57
+ *
58
+ * `plain` no pinta contenedor: ni fondo ni borde, solo las tres
59
+ * regiones y la línea que las separa. Es para cuando el marco ya lo
60
+ * pone otro —un `<dialog>` con su anillo y su sombra— y repetirlo
61
+ * dentro dibujaría una caja dentro de otra.
62
+ */
63
+ variant?: 'outline' | 'plain' | 'soft';
64
+ };
65
+ /**
66
+ * Las tres regiones se pintan solo si se rellenan.
67
+ *
68
+ * Sin esto, una tarjeta con solo cuerpo arrastraría una cabecera vacía con su
69
+ * relleno y su línea divisoria: un hueco y una raya que no separan nada. Se
70
+ * ve raro y no falla, que es el peor modo de fallar.
71
+ *
72
+ * «Rellenada» es que produzca algo y no que esté declarada; lo decide
73
+ * `filled`, que vive en `internal/` porque los layouts necesitan la misma
74
+ * regla y dos copias de una regla divergen.
75
+ */
76
+ type __VLS_Slots = {
77
+ default?: () => unknown;
78
+ footer?: () => unknown;
79
+ header?: () => unknown;
80
+ };
81
+ declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
82
+ radius: VunoRadius;
83
+ variant: "outline" | "plain" | "soft";
84
+ tag: Component | string;
85
+ ui: VunoUi<"card">;
86
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
87
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
88
+ declare const _default: typeof __VLS_export;
89
+ export default _default;
90
+ type __VLS_WithSlots<T, S> = T & {
91
+ new (): {
92
+ $slots: S;
93
+ };
94
+ };
@@ -0,0 +1,19 @@
1
+ import type { VunoUi } from '#vuno/types/slots';
2
+ type Props = {
3
+ /** Código sin transformar. También es lo que se copia al portapapeles. */
4
+ code: string;
5
+ /** HTML completo producido por un resaltador de confianza, como Shiki. */
6
+ highlighted?: string;
7
+ /** Nombre accesible cuando el bloque necesita desplazamiento horizontal. */
8
+ label?: string;
9
+ language?: string;
10
+ ui?: VunoUi<'code'>;
11
+ };
12
+ declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
13
+ label: string;
14
+ ui: VunoUi<"code">;
15
+ highlighted: string;
16
+ language: string;
17
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
18
+ declare const _default: typeof __VLS_export;
19
+ export default _default;
@@ -0,0 +1,11 @@
1
+ export declare const codeTheme: Record<"code", {
2
+ readonly slots: {
3
+ readonly copy: "absolute inset-e-2 top-1 opacity-0 transition-opacity group-hover:opacity-100 focus-visible:opacity-100 max-sm:top-0 max-sm:size-11 max-sm:opacity-100 pointer-coarse:top-0 pointer-coarse:size-11 pointer-coarse:opacity-100";
4
+ readonly copyError: "border-t border-vuno-error/25 bg-vuno-error/10 px-4 py-2 text-xs text-vuno-error";
5
+ readonly fallback: "text-vuno-body";
6
+ readonly header: "flex items-center gap-2 border-b border-vuno-border/70 px-4 py-2 font-mono text-xs text-vuno-muted";
7
+ readonly live: "sr-only";
8
+ readonly root: "group relative border-t border-vuno-border";
9
+ readonly scroller: "overflow-x-auto text-sm/relaxed [&_pre]:px-4 [&_pre]:py-3.5";
10
+ };
11
+ }>;
@@ -0,0 +1,12 @@
1
+ import { defineTheme } from "#vuno/utils/theme";
2
+ export const codeTheme = defineTheme("code", {
3
+ slots: {
4
+ copy: "absolute inset-e-2 top-1 opacity-0 transition-opacity group-hover:opacity-100 focus-visible:opacity-100 max-sm:top-0 max-sm:size-11 max-sm:opacity-100 pointer-coarse:top-0 pointer-coarse:size-11 pointer-coarse:opacity-100",
5
+ copyError: "border-t border-vuno-error/25 bg-vuno-error/10 px-4 py-2 text-xs text-vuno-error",
6
+ fallback: "text-vuno-body",
7
+ header: "flex items-center gap-2 border-b border-vuno-border/70 px-4 py-2 font-mono text-xs text-vuno-muted",
8
+ live: "sr-only",
9
+ root: "group relative border-t border-vuno-border",
10
+ scroller: "overflow-x-auto text-sm/relaxed [&_pre]:px-4 [&_pre]:py-3.5"
11
+ }
12
+ });
@@ -0,0 +1,109 @@
1
+ <script setup>
2
+ import { computed, nextTick, onBeforeUnmount, onMounted, ref, useTemplateRef, watch } from "vue";
3
+ import { useIcons, useMessages, useTheme } from "#vuno/composables/useTheme";
4
+ import Button from "#vuno/components/Button/Button.vue";
5
+ defineOptions({ name: "VunoCode" });
6
+ const props = defineProps({
7
+ code: { type: String, required: true },
8
+ highlighted: { type: String, required: false, default: void 0 },
9
+ label: { type: String, required: false, default: void 0 },
10
+ language: { type: String, required: false, default: "text" },
11
+ ui: { type: Object, required: false, default: void 0 }
12
+ });
13
+ const icons = useIcons();
14
+ const messages = useMessages();
15
+ const ui = useTheme("code", () => props.ui);
16
+ const copied = ref(false);
17
+ const copyFailed = ref(false);
18
+ const overflows = ref(false);
19
+ const scroller = useTemplateRef("scroller");
20
+ const copyLabel = computed(() => {
21
+ const action = copied.value ? messages.value.codeCopied : messages.value.codeCopy;
22
+ return props.label ? `${action}: ${props.label}` : action;
23
+ });
24
+ let observer;
25
+ let timer;
26
+ function syncOverflow() {
27
+ const element = scroller.value;
28
+ overflows.value = !!element && element.scrollWidth > element.clientWidth + 1;
29
+ }
30
+ async function copy() {
31
+ copyFailed.value = false;
32
+ try {
33
+ await navigator.clipboard.writeText(props.code);
34
+ } catch {
35
+ copied.value = false;
36
+ copyFailed.value = true;
37
+ clearTimeout(timer);
38
+ return;
39
+ }
40
+ copied.value = true;
41
+ clearTimeout(timer);
42
+ timer = setTimeout(() => copied.value = false, 2e3);
43
+ }
44
+ watch(
45
+ () => [props.code, props.highlighted],
46
+ () => void nextTick(syncOverflow)
47
+ );
48
+ onMounted(() => {
49
+ syncOverflow();
50
+ observer = new ResizeObserver(syncOverflow);
51
+ if (scroller.value) observer.observe(scroller.value);
52
+ });
53
+ onBeforeUnmount(() => {
54
+ observer?.disconnect();
55
+ clearTimeout(timer);
56
+ });
57
+ </script>
58
+
59
+ <template>
60
+ <div :class="ui.root">
61
+ <div :class="ui.header">{{ props.language }}</div>
62
+
63
+ <Button
64
+ :aria-label="copyLabel"
65
+ :class="ui.copy"
66
+ color="neutral"
67
+ :icon="copied ? icons.codeCopied : icons.codeCopy"
68
+ size="xs"
69
+ variant="soft"
70
+ @click="copy"
71
+ />
72
+
73
+ <div
74
+ ref="scroller"
75
+ :aria-label="overflows ? props.label ?? messages.codeRegion : void 0"
76
+ :class="ui.scroller"
77
+ :role="overflows ? 'region' : void 0"
78
+ :tabindex="overflows ? 0 : void 0"
79
+ >
80
+ <!-- El HTML viene de un resaltador elegido por quien consume el componente. -->
81
+ <!-- eslint-disable vue/no-v-html -->
82
+ <!-- nosemgrep: javascript.vue.security.audit.xss.templates.avoid-v-html.avoid-v-html -->
83
+ <div
84
+ v-if="props.highlighted"
85
+ v-html="props.highlighted"
86
+ />
87
+ <!-- eslint-enable vue/no-v-html -->
88
+
89
+ <pre
90
+ v-else
91
+ :class="ui.fallback"
92
+ ><code>{{ props.code }}</code></pre>
93
+ </div>
94
+
95
+ <p
96
+ v-if="copyFailed"
97
+ :class="ui.copyError"
98
+ role="alert"
99
+ >
100
+ {{ messages.codeCopyFailed }}
101
+ </p>
102
+
103
+ <span
104
+ aria-live="polite"
105
+ :class="ui.live"
106
+ >{{ copied ? messages.codeCopiedAnnouncement : "" }}</span
107
+ >
108
+ </div>
109
+ </template>
@@ -0,0 +1,19 @@
1
+ import type { VunoUi } from '#vuno/types/slots';
2
+ type Props = {
3
+ /** Código sin transformar. También es lo que se copia al portapapeles. */
4
+ code: string;
5
+ /** HTML completo producido por un resaltador de confianza, como Shiki. */
6
+ highlighted?: string;
7
+ /** Nombre accesible cuando el bloque necesita desplazamiento horizontal. */
8
+ label?: string;
9
+ language?: string;
10
+ ui?: VunoUi<'code'>;
11
+ };
12
+ declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
13
+ label: string;
14
+ ui: VunoUi<"code">;
15
+ highlighted: string;
16
+ language: string;
17
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
18
+ declare const _default: typeof __VLS_export;
19
+ export default _default;
@@ -0,0 +1,35 @@
1
+ import type { VunoConfirmOptions } from '#vuno/types/confirm';
2
+ import type { VunoUi } from '#vuno/types/slots';
3
+ type __VLS_Props = VunoConfirmOptions & {
4
+ loading?: boolean;
5
+ ui?: VunoUi<'confirm'>;
6
+ };
7
+ type __VLS_Slots = {
8
+ /**
9
+ * Sustituye a `description`. Para cuando el aviso es información que
10
+ * cambia la decisión —cuántos hijos quedan huérfanos, qué se pierde—
11
+ * y aplanarlo a una frase la escondería.
12
+ */
13
+ default?: () => unknown;
14
+ };
15
+ type __VLS_ModelProps = {
16
+ 'open'?: boolean;
17
+ };
18
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
19
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
20
+ confirm: () => any;
21
+ cancel: () => any;
22
+ "update:open": (value: boolean) => any;
23
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
24
+ onConfirm?: (() => any) | undefined;
25
+ onCancel?: (() => any) | undefined;
26
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
27
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
28
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
29
+ declare const _default: typeof __VLS_export;
30
+ export default _default;
31
+ type __VLS_WithSlots<T, S> = T & {
32
+ new (): {
33
+ $slots: S;
34
+ };
35
+ };
@@ -0,0 +1,12 @@
1
+ export declare const confirmTheme: Record<"confirm", {
2
+ readonly slots: {
3
+ readonly body: "flex items-start gap-3";
4
+ readonly content: "";
5
+ readonly description: "min-w-0 space-y-1";
6
+ readonly footer: "justify-end";
7
+ readonly icon: "size-5 shrink-0 text-(--vuno-accent)";
8
+ };
9
+ readonly variants: {
10
+ readonly color: Record<import("../../types/base.js").VunoColor, Record<"icon", string>>;
11
+ };
12
+ }>;
@@ -0,0 +1,13 @@
1
+ import { accentByColor } from "#vuno/theme/shared";
2
+ import { defineTheme } from "#vuno/utils/theme";
3
+ export const confirmTheme = defineTheme("confirm", {
4
+ slots: {
5
+ body: "flex items-start gap-3",
6
+ content: "",
7
+ description: "min-w-0 space-y-1",
8
+ footer: "justify-end",
9
+ // Mismo caso que el aviso: el color por variable, no por nombre.
10
+ icon: "size-5 shrink-0 text-(--vuno-accent)"
11
+ },
12
+ variants: { color: accentByColor("icon") }
13
+ });
@@ -0,0 +1,83 @@
1
+ <script setup>
2
+ import { computed, nextTick } from "vue";
3
+ import { useIcons, useMessages, useTheme } from "#vuno/composables/useTheme";
4
+ import Button from "#vuno/components/Button/Button.vue";
5
+ import Icon from "#vuno/components/Icon/Icon.vue";
6
+ import Modal from "#vuno/components/Modal/Modal.vue";
7
+ defineOptions({ name: "VunoConfirm" });
8
+ const open = defineModel("open", { type: Boolean, ...{ default: false } });
9
+ const props = defineProps({
10
+ alert: { type: Boolean, required: false },
11
+ cancelLabel: { type: String, required: false },
12
+ color: { type: String, required: false },
13
+ confirmLabel: { type: String, required: false },
14
+ description: { type: String, required: false },
15
+ icon: { type: String, required: false },
16
+ title: { type: String, required: false },
17
+ loading: { type: Boolean, required: false },
18
+ ui: { type: Object, required: false }
19
+ });
20
+ const emit = defineEmits(["cancel", "confirm"]);
21
+ defineSlots();
22
+ const icons = useIcons();
23
+ const messages = useMessages();
24
+ const color = computed(() => props.color ?? "error");
25
+ const ui = useTheme(
26
+ "confirm",
27
+ () => props.ui,
28
+ () => ({ color: color.value })
29
+ );
30
+ const modalUi = computed(() => ({ content: ui.value.content, footer: ui.value.footer }));
31
+ function onCancel() {
32
+ open.value = false;
33
+ emit("cancel");
34
+ }
35
+ async function onConfirm() {
36
+ emit("confirm");
37
+ await nextTick();
38
+ if (!props.loading) open.value = false;
39
+ }
40
+ </script>
41
+
42
+ <template>
43
+ <!--
44
+ Sobre `Modal`, no sobre el de Nuxt UI, y no por gusto: un `<dialog>`
45
+ nativo vive en la capa superior del navegador, que queda por encima de
46
+ cualquier z-index. Mezclando los dos sistemas, un confirm abierto desde
47
+ dentro de un `Modal` se pintaba detrás de él —estaba en el DOM y no se
48
+ veía—. Nativos los dos, el navegador los apila por orden de apertura.
49
+ -->
50
+ <Modal
51
+ v-model:open="open"
52
+ :dismissible="!props.loading"
53
+ :title="props.title ?? messages.confirmTitle"
54
+ :ui="modalUi"
55
+ >
56
+ <div :class="ui.body">
57
+ <Icon
58
+ :class="ui.icon"
59
+ :name="props.icon ?? icons.confirm"
60
+ />
61
+ <div :class="ui.description">
62
+ <slot>{{ props.description ?? messages.confirmDescription }}</slot>
63
+ </div>
64
+ </div>
65
+
66
+ <template #footer>
67
+ <Button
68
+ v-if="!props.alert"
69
+ color="neutral"
70
+ :disabled="props.loading"
71
+ :label="props.cancelLabel ?? messages.cancel"
72
+ variant="ghost"
73
+ @click="onCancel"
74
+ />
75
+ <Button
76
+ :color="color"
77
+ :label="props.confirmLabel ?? messages.confirm"
78
+ :loading="props.loading"
79
+ @click="onConfirm"
80
+ />
81
+ </template>
82
+ </Modal>
83
+ </template>
@@ -0,0 +1,35 @@
1
+ import type { VunoConfirmOptions } from '#vuno/types/confirm';
2
+ import type { VunoUi } from '#vuno/types/slots';
3
+ type __VLS_Props = VunoConfirmOptions & {
4
+ loading?: boolean;
5
+ ui?: VunoUi<'confirm'>;
6
+ };
7
+ type __VLS_Slots = {
8
+ /**
9
+ * Sustituye a `description`. Para cuando el aviso es información que
10
+ * cambia la decisión —cuántos hijos quedan huérfanos, qué se pierde—
11
+ * y aplanarlo a una frase la escondería.
12
+ */
13
+ default?: () => unknown;
14
+ };
15
+ type __VLS_ModelProps = {
16
+ 'open'?: boolean;
17
+ };
18
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
19
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
20
+ confirm: () => any;
21
+ cancel: () => any;
22
+ "update:open": (value: boolean) => any;
23
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
24
+ onConfirm?: (() => any) | undefined;
25
+ onCancel?: (() => any) | undefined;
26
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
27
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
28
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
29
+ declare const _default: typeof __VLS_export;
30
+ export default _default;
31
+ type __VLS_WithSlots<T, S> = T & {
32
+ new (): {
33
+ $slots: S;
34
+ };
35
+ };
@@ -0,0 +1,42 @@
1
+ import type { VunoContainerSize } from '#vuno/types/page';
2
+ import type { VunoUi } from '#vuno/types/slots';
3
+ /**
4
+ * Centra el contenido y le pone un ancho máximo.
5
+ *
6
+ * **El ancho es una variante del tema y no una clase que se pasa.** Escribirlo
7
+ * como `class="max-w-lg"` sobre el componente sería el defecto de siempre: una
8
+ * clase puesta sobre un componente no pasa por tailwind-merge, así que
9
+ * convive con la del tema y gana el orden de la hoja — dos anchos declarados
10
+ * y el que se aplica depende de en qué orden salieran compilados. Por la
11
+ * variante hay uno solo, y un proyecto puede cambiar la escala entera desde
12
+ * su `app.config`.
13
+ *
14
+ * Los tamaños son los de Tailwind, de `sm` a `7xl`, más `full` para cuando lo
15
+ * que se quiere es solo el relleno lateral y no el tope.
16
+ */
17
+ type Props = {
18
+ /**
19
+ * Quita el relleno lateral. Para un contenedor dentro de otro que ya
20
+ * lo tiene, donde el relleno se sumaría dos veces.
21
+ */
22
+ flush?: boolean;
23
+ size?: VunoContainerSize;
24
+ ui?: VunoUi<'container'>;
25
+ };
26
+ declare var __VLS_1: {};
27
+ type __VLS_Slots = {} & {
28
+ default?: (props: typeof __VLS_1) => any;
29
+ };
30
+ declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
31
+ size: VunoContainerSize;
32
+ ui: VunoUi<"container">;
33
+ flush: boolean;
34
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
35
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
36
+ declare const _default: typeof __VLS_export;
37
+ export default _default;
38
+ type __VLS_WithSlots<T, S> = T & {
39
+ new (): {
40
+ $slots: S;
41
+ };
42
+ };
@@ -0,0 +1,53 @@
1
+ export declare const containerTheme: Record<"container", {
2
+ /**
3
+ * El contenedor. El ancho sale de la variante y no de una clase suelta: dos
4
+ * `max-w-*` sobre el mismo elemento no se resuelven, conviven.
5
+ */
6
+ readonly slots: {
7
+ readonly root: "mx-auto w-full";
8
+ };
9
+ readonly variants: {
10
+ readonly padding: {
11
+ readonly false: {};
12
+ readonly true: {
13
+ readonly root: "px-4 sm:px-6 lg:px-8";
14
+ };
15
+ };
16
+ readonly size: {
17
+ readonly sm: {
18
+ readonly root: "max-w-sm";
19
+ };
20
+ readonly md: {
21
+ readonly root: "max-w-md";
22
+ };
23
+ readonly lg: {
24
+ readonly root: "max-w-lg";
25
+ };
26
+ readonly xl: {
27
+ readonly root: "max-w-xl";
28
+ };
29
+ readonly '2xl': {
30
+ readonly root: "max-w-2xl";
31
+ };
32
+ readonly '3xl': {
33
+ readonly root: "max-w-3xl";
34
+ };
35
+ readonly '4xl': {
36
+ readonly root: "max-w-4xl";
37
+ };
38
+ readonly '5xl': {
39
+ readonly root: "max-w-5xl";
40
+ };
41
+ readonly '6xl': {
42
+ readonly root: "max-w-6xl";
43
+ };
44
+ readonly '7xl': {
45
+ readonly root: "max-w-7xl";
46
+ };
47
+ readonly '8xl': {
48
+ readonly root: "max-w-8xl";
49
+ };
50
+ readonly full: {};
51
+ };
52
+ };
53
+ }>;