@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,139 @@
1
+ <script setup>
2
+ import { cloneVNode, computed, nextTick, onBeforeUnmount, ref, useId } from "vue";
3
+ import { useVunoAnchor } from "#vuno/composables/internal/useVunoAnchor";
4
+ import { useVunoPortal } from "#vuno/composables/internal/useVunoPortal";
5
+ import { useTheme } from "#vuno/composables/useTheme";
6
+ import { firstElement } from "#vuno/internal/slots";
7
+ defineOptions({ name: "VunoTooltip" });
8
+ const props = defineProps({
9
+ delay: { type: Number, required: false, default: 300 },
10
+ disabled: { type: Boolean, required: false },
11
+ portal: { type: [String, Boolean], required: false, default: void 0 },
12
+ side: { type: String, required: false, default: "top" },
13
+ text: { type: String, required: false, default: void 0 },
14
+ ui: { type: Object, required: false, default: void 0 }
15
+ });
16
+ const slots = defineSlots();
17
+ const ui = useTheme("tooltip", () => props.ui);
18
+ const portalTarget = useVunoPortal(() => props.portal);
19
+ const tooltipId = useId();
20
+ const arrowEl = ref(null);
21
+ const contentEl = ref(null);
22
+ const open = ref(false);
23
+ const triggerEl = ref(null);
24
+ const usable = computed(() => !props.disabled && Boolean(props.text));
25
+ const opposite = { bottom: "top", left: "right", right: "left", top: "bottom" };
26
+ const { anchor, release } = useVunoAnchor({
27
+ onPlaced: (position) => pinArrow(position),
28
+ distance: 6,
29
+ arrowElement: () => arrowEl.value ?? void 0,
30
+ placement: () => props.side
31
+ });
32
+ function pinArrow(position) {
33
+ const point = position.middlewareData.arrow;
34
+ if (!arrowEl.value || !point) return;
35
+ const side = opposite[position.placement.split("-")[0]];
36
+ Object.assign(arrowEl.value.style, {
37
+ bottom: "",
38
+ left: point.x === void 0 ? "" : `${point.x}px`,
39
+ right: "",
40
+ /* Medio cuadrado fuera de la caja: la otra mitad la tapa el fondo. */
41
+ [side]: "-4px",
42
+ top: point.y === void 0 ? "" : `${point.y}px`
43
+ });
44
+ }
45
+ const follow = () => anchor(triggerEl.value ?? void 0, contentEl.value ?? void 0);
46
+ let timer;
47
+ function cancelPending() {
48
+ if (timer === void 0) return;
49
+ clearTimeout(timer);
50
+ timer = void 0;
51
+ }
52
+ async function show() {
53
+ cancelPending();
54
+ if (!usable.value || open.value) return;
55
+ open.value = true;
56
+ await nextTick();
57
+ follow();
58
+ }
59
+ function showAfterDelay() {
60
+ cancelPending();
61
+ if (!usable.value) return;
62
+ if (props.delay <= 0) return void show();
63
+ timer = setTimeout(() => void show(), props.delay);
64
+ }
65
+ function hide() {
66
+ cancelPending();
67
+ open.value = false;
68
+ release();
69
+ }
70
+ function onKeydown(event) {
71
+ if (event.key !== "Escape" || !open.value) return;
72
+ event.preventDefault();
73
+ hide();
74
+ }
75
+ if (typeof document !== "undefined") {
76
+ document.addEventListener("keydown", onKeydown);
77
+ onBeforeUnmount(() => document.removeEventListener("keydown", onKeydown));
78
+ }
79
+ const Trigger = () => {
80
+ const node = firstElement(slots.default?.());
81
+ if (!node) return null;
82
+ return cloneVNode(node, {
83
+ onBlur: hide,
84
+ /* Con el teclado no hay retardo que valga: al enfocar, ya. */
85
+ onFocus: () => void show(),
86
+ onPointerdown: hide,
87
+ /*
88
+ * En un táctil no hay «posar»: el navegador emite un `pointerenter`
89
+ * al tocar, y el aviso se abriría pegado al dedo y encima de lo que
90
+ * se acaba de pulsar.
91
+ */
92
+ onPointerenter: (event) => {
93
+ if (event.pointerType !== "touch") showAfterDelay();
94
+ },
95
+ onPointerleave: hide,
96
+ "aria-describedby": open.value ? tooltipId : void 0,
97
+ ref: (el) => {
98
+ triggerEl.value = el?.$el ?? el;
99
+ }
100
+ });
101
+ };
102
+ onBeforeUnmount(hide);
103
+ </script>
104
+
105
+ <template>
106
+ <Trigger />
107
+
108
+ <Teleport
109
+ v-if="open"
110
+ :to="portalTarget"
111
+ >
112
+ <!--
113
+ No es alcanzable con el tabulador y no recibe el foco: un aviso que
114
+ lo atrapara dejaría al teclado dentro de algo que se cierra solo.
115
+ -->
116
+ <div
117
+ :id="tooltipId"
118
+ ref="contentEl"
119
+ :class="ui.content"
120
+ role="tooltip"
121
+ style="position: fixed; top: 0; left: 0; width: max-content"
122
+ >
123
+ {{ props.text }}
124
+
125
+ <!--
126
+ Un cuadrado girado y no un polígono: así sirve igual por los
127
+ cuatro lados. Un triángulo habría que rotarlo según el lado
128
+ resuelto, y al rotarlo su caja deja de coincidir con lo que se
129
+ ve, que es de donde salen las flechas descolocadas.
130
+ -->
131
+ <div
132
+ ref="arrowEl"
133
+ aria-hidden="true"
134
+ :class="ui.arrow"
135
+ style="position: absolute"
136
+ />
137
+ </div>
138
+ </Teleport>
139
+ </template>
@@ -0,0 +1,40 @@
1
+ import type { VunoPortalTarget } from '#vuno/types/base';
2
+ import type { VunoUi } from '#vuno/types/slots';
3
+ /**
4
+ * El aviso que aparece al posar el ratón o al llegar con el teclado.
5
+ *
6
+ * Las cuatro cosas fáciles de dejarse y difíciles de notar que faltan son
7
+ * el retardo al abrir, cerrarlo con Escape, **abrirlo también al enfocar**
8
+ * —si solo abre al posar el ratón, para quien navega con el teclado no
9
+ * existe— y describir el disparador con `aria-describedby`, que es lo que
10
+ * hace que un lector de pantalla lo lea en vez de dejarlo suelto en la
11
+ * página. Las cuatro están abajo, cada una con su prueba.
12
+ */
13
+ type Props = {
14
+ /** Milisegundos antes de abrirse al posar el ratón. */
15
+ delay?: number;
16
+ disabled?: boolean;
17
+ /** Dónde montar el aviso. Por defecto, lo que provea el modal que envuelva. */
18
+ portal?: VunoPortalTarget;
19
+ side?: 'bottom' | 'left' | 'right' | 'top';
20
+ text?: string;
21
+ ui?: VunoUi<'tooltip'>;
22
+ };
23
+ type __VLS_Slots = {
24
+ default?: () => unknown;
25
+ };
26
+ declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
27
+ text: string;
28
+ ui: VunoUi<"tooltip">;
29
+ delay: number;
30
+ portal: VunoPortalTarget;
31
+ side: "bottom" | "left" | "right" | "top";
32
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
33
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
34
+ declare const _default: typeof __VLS_export;
35
+ export default _default;
36
+ type __VLS_WithSlots<T, S> = T & {
37
+ new (): {
38
+ $slots: S;
39
+ };
40
+ };
@@ -0,0 +1,41 @@
1
+ import type { VunoRadius, VunoSize } from '#vuno/types/base';
2
+ import type { VunoUi } from '#vuno/types/slots';
3
+ /**
4
+ * La caja de un control: borde, fondo, foco, inválido y deshabilitado.
5
+ *
6
+ * Existe separada porque el input, el área de texto y el combobox necesitan
7
+ * exactamente la misma caja, y tres copias del mismo borde divergen en
8
+ * cuanto alguien toca una. Lo que va dentro lo pone quien la usa.
9
+ *
10
+ * No sabe nada del control que envuelve: el estado lo lee del DOM con
11
+ * `has-[]`, así que funciona igual con un `<input>`, un `<textarea>` o un
12
+ * `div` con `role="combobox"`, y no hay forma de que lo que se ve y lo que
13
+ * se anuncia dejen de coincidir.
14
+ */
15
+ type Props = {
16
+ /** La curvatura. Sin valor, la que traiga el tema. */
17
+ radius?: VunoRadius;
18
+ size?: VunoSize;
19
+ ui?: VunoUi<'control'>;
20
+ };
21
+ type __VLS_Slots = {
22
+ /** El control en sí. */
23
+ default?: () => unknown;
24
+ /** Delante del control: un icono, un prefijo. */
25
+ leading?: () => unknown;
26
+ /** Detrás: un botón de acción, una unidad, un indicador. */
27
+ trailing?: () => unknown;
28
+ };
29
+ declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
30
+ radius: VunoRadius;
31
+ size: VunoSize;
32
+ ui: VunoUi<"control">;
33
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
34
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
35
+ declare const _default: typeof __VLS_export;
36
+ export default _default;
37
+ type __VLS_WithSlots<T, S> = T & {
38
+ new (): {
39
+ $slots: S;
40
+ };
41
+ };
@@ -0,0 +1,50 @@
1
+ export declare const controlTheme: Record<"control", {
2
+ /**
3
+ * La caja de un control: borde, fondo, foco, inválido y deshabilitado.
4
+ *
5
+ * La comparten el input, el área de texto y el combobox, que necesitan la
6
+ * misma exactamente, y tres copias del mismo borde divergen en cuanto
7
+ * alguien toca una. El estado no se pasa como prop: se lee del control de
8
+ * dentro con `has-[]`, de modo que lo que se ve no puede separarse de lo
9
+ * que se anuncia.
10
+ *
11
+ * La altura es `min-h` y no `h` para que un área de texto pueda crecer sin
12
+ * pelearse con la caja; en un control de una línea el resultado es el
13
+ * mismo, porque nada de dentro mide más.
14
+ *
15
+ * Cuando hay una acción al final, la caja la marca con `data-trailing` y
16
+ * esa acción llega hasta el borde. El relleno inicial se conserva para que
17
+ * el texto o el icono de entrada mantengan la misma alineación.
18
+ */
19
+ readonly slots: {
20
+ readonly root: "flex w-full items-center gap-1.5 rounded-sm border border-vuno-border-strong bg-vuno-surface text-vuno-body transition-colors [--vuno-accent:var(--color-vuno-primary)] focus-within:outline-2 focus-within:outline-offset-2 focus-within:outline-(--vuno-accent) has-disabled:cursor-not-allowed has-disabled:opacity-50 has-aria-invalid:border-vuno-error has-aria-invalid:[--vuno-accent:var(--color-vuno-error)] data-trailing:pe-0";
21
+ };
22
+ readonly variants: {
23
+ readonly groupOrientation: {
24
+ readonly horizontal: {
25
+ readonly root: "not-last:not-first:rounded-none not-only:first:rounded-e-none not-only:last:rounded-s-none focus-within:z-1";
26
+ };
27
+ readonly vertical: {
28
+ readonly root: "not-last:not-first:rounded-none not-only:first:rounded-b-none not-only:last:rounded-t-none focus-within:z-1";
29
+ };
30
+ };
31
+ readonly radius: Record<import("../../../types/base.js").VunoRadius, Record<"root", string>>;
32
+ readonly size: {
33
+ readonly xs: {
34
+ readonly root: "min-h-6 ps-2 pe-2 text-xs";
35
+ };
36
+ readonly sm: {
37
+ readonly root: "min-h-7 ps-2.5 pe-2.5 text-sm";
38
+ };
39
+ readonly md: {
40
+ readonly root: "min-h-8 ps-3 pe-3 text-sm";
41
+ };
42
+ readonly lg: {
43
+ readonly root: "min-h-9 ps-3.5 pe-3.5 text-base";
44
+ };
45
+ readonly xl: {
46
+ readonly root: "min-h-10 ps-4 pe-4 text-base";
47
+ };
48
+ };
49
+ };
50
+ }>;
@@ -0,0 +1,38 @@
1
+ import { radiusByStep } from "#vuno/theme/shared";
2
+ import { defineTheme } from "#vuno/utils/theme";
3
+ export const controlTheme = defineTheme("control", {
4
+ /**
5
+ * La caja de un control: borde, fondo, foco, inválido y deshabilitado.
6
+ *
7
+ * La comparten el input, el área de texto y el combobox, que necesitan la
8
+ * misma exactamente, y tres copias del mismo borde divergen en cuanto
9
+ * alguien toca una. El estado no se pasa como prop: se lee del control de
10
+ * dentro con `has-[]`, de modo que lo que se ve no puede separarse de lo
11
+ * que se anuncia.
12
+ *
13
+ * La altura es `min-h` y no `h` para que un área de texto pueda crecer sin
14
+ * pelearse con la caja; en un control de una línea el resultado es el
15
+ * mismo, porque nada de dentro mide más.
16
+ *
17
+ * Cuando hay una acción al final, la caja la marca con `data-trailing` y
18
+ * esa acción llega hasta el borde. El relleno inicial se conserva para que
19
+ * el texto o el icono de entrada mantengan la misma alineación.
20
+ */
21
+ slots: {
22
+ root: "flex w-full items-center gap-1.5 rounded-sm border border-vuno-border-strong bg-vuno-surface text-vuno-body transition-colors [--vuno-accent:var(--color-vuno-primary)] focus-within:outline-2 focus-within:outline-offset-2 focus-within:outline-(--vuno-accent) has-disabled:cursor-not-allowed has-disabled:opacity-50 has-aria-invalid:border-vuno-error has-aria-invalid:[--vuno-accent:var(--color-vuno-error)] data-trailing:pe-0"
23
+ },
24
+ variants: {
25
+ groupOrientation: {
26
+ horizontal: { root: "not-last:not-first:rounded-none not-only:first:rounded-e-none not-only:last:rounded-s-none focus-within:z-1" },
27
+ vertical: { root: "not-last:not-first:rounded-none not-only:first:rounded-b-none not-only:last:rounded-t-none focus-within:z-1" }
28
+ },
29
+ radius: radiusByStep("root"),
30
+ size: {
31
+ xs: { root: "min-h-6 ps-2 pe-2 text-xs" },
32
+ sm: { root: "min-h-7 ps-2.5 pe-2.5 text-sm" },
33
+ md: { root: "min-h-8 ps-3 pe-3 text-sm" },
34
+ lg: { root: "min-h-9 ps-3.5 pe-3.5 text-base" },
35
+ xl: { root: "min-h-10 ps-4 pe-4 text-base" }
36
+ }
37
+ }
38
+ });
@@ -0,0 +1,33 @@
1
+ <script setup>
2
+ import { computed } from "vue";
3
+ import { resetControlGroup, useVunoControlGroup } from "#vuno/composables/internal/useVunoControlGroup";
4
+ import { useTheme } from "#vuno/composables/useTheme";
5
+ defineOptions({ name: "VunoControlShell" });
6
+ const props = defineProps({
7
+ radius: { type: String, required: false, default: void 0 },
8
+ size: { type: String, required: false, default: void 0 },
9
+ ui: { type: Object, required: false, default: void 0 }
10
+ });
11
+ defineSlots();
12
+ const controlGroup = useVunoControlGroup();
13
+ resetControlGroup();
14
+ const size = computed(() => props.size ?? controlGroup.size.value ?? "md");
15
+ const ui = useTheme(
16
+ "control",
17
+ () => props.ui,
18
+ () => ({ groupOrientation: controlGroup.orientation.value, radius: props.radius, size: size.value })
19
+ );
20
+ </script>
21
+
22
+ <template>
23
+ <div
24
+ :class="ui.root"
25
+ :data-trailing="$slots.trailing ? '' : void 0"
26
+ >
27
+ <slot name="leading" />
28
+
29
+ <slot />
30
+
31
+ <slot name="trailing" />
32
+ </div>
33
+ </template>
@@ -0,0 +1,41 @@
1
+ import type { VunoRadius, VunoSize } from '#vuno/types/base';
2
+ import type { VunoUi } from '#vuno/types/slots';
3
+ /**
4
+ * La caja de un control: borde, fondo, foco, inválido y deshabilitado.
5
+ *
6
+ * Existe separada porque el input, el área de texto y el combobox necesitan
7
+ * exactamente la misma caja, y tres copias del mismo borde divergen en
8
+ * cuanto alguien toca una. Lo que va dentro lo pone quien la usa.
9
+ *
10
+ * No sabe nada del control que envuelve: el estado lo lee del DOM con
11
+ * `has-[]`, así que funciona igual con un `<input>`, un `<textarea>` o un
12
+ * `div` con `role="combobox"`, y no hay forma de que lo que se ve y lo que
13
+ * se anuncia dejen de coincidir.
14
+ */
15
+ type Props = {
16
+ /** La curvatura. Sin valor, la que traiga el tema. */
17
+ radius?: VunoRadius;
18
+ size?: VunoSize;
19
+ ui?: VunoUi<'control'>;
20
+ };
21
+ type __VLS_Slots = {
22
+ /** El control en sí. */
23
+ default?: () => unknown;
24
+ /** Delante del control: un icono, un prefijo. */
25
+ leading?: () => unknown;
26
+ /** Detrás: un botón de acción, una unidad, un indicador. */
27
+ trailing?: () => unknown;
28
+ };
29
+ declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
30
+ radius: VunoRadius;
31
+ size: VunoSize;
32
+ ui: VunoUi<"control">;
33
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
34
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
35
+ declare const _default: typeof __VLS_export;
36
+ export default _default;
37
+ type __VLS_WithSlots<T, S> = T & {
38
+ new (): {
39
+ $slots: S;
40
+ };
41
+ };
@@ -0,0 +1,23 @@
1
+ import type { VunoSize } from '#vuno/types/base';
2
+ import type { VunoFieldBase } from '#vuno/types/field';
3
+ type __VLS_Props = Omit<VunoFieldBase, 'columns'>;
4
+ type __VLS_Slots = {
5
+ default: (props: {
6
+ id?: string;
7
+ name?: string;
8
+ 'aria-describedby'?: string;
9
+ 'aria-invalid'?: boolean;
10
+ 'aria-required'?: boolean;
11
+ required?: boolean;
12
+ size?: VunoSize;
13
+ }) => unknown;
14
+ };
15
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
16
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
17
+ declare const _default: typeof __VLS_export;
18
+ export default _default;
19
+ type __VLS_WithSlots<T, S> = T & {
20
+ new (): {
21
+ $slots: S;
22
+ };
23
+ };
@@ -0,0 +1,63 @@
1
+ <script setup>
2
+ import { computed, useAttrs } from "vue";
3
+ import { useVunoControlGroup } from "#vuno/composables/internal/useVunoControlGroup";
4
+ import { useForm } from "#vuno/composables/useForm";
5
+ import FormField from "#vuno/components/FormField/FormField.vue";
6
+ defineOptions({ name: "VunoFieldShell", inheritAttrs: false });
7
+ const props = defineProps({
8
+ name: { type: String, required: false },
9
+ class: { type: String, required: false },
10
+ description: { type: String, required: false },
11
+ disabled: { type: Boolean, required: false },
12
+ error: { type: String, required: false },
13
+ help: { type: String, required: false },
14
+ hint: { type: String, required: false },
15
+ label: { type: String, required: false },
16
+ orientation: { type: String, required: false },
17
+ required: { type: Boolean, required: false },
18
+ size: { type: String, required: false },
19
+ ui: { type: Object, required: false }
20
+ });
21
+ defineSlots();
22
+ const attrs = useAttrs();
23
+ const form = useForm({ optional: true });
24
+ const controlGroup = useVunoControlGroup();
25
+ const error = computed(() => form && props.name ? form.errorFor(props.name) : props.error);
26
+ const size = computed(() => props.size ?? controlGroup.size.value ?? form?.size.value);
27
+ const embedded = computed(() => typeof attrs.id === "string");
28
+ function onBlur(event) {
29
+ if (!form || !props.name) return;
30
+ if (event.target?.getAttribute("aria-expanded") === "true") return;
31
+ form.setTouched(props.name);
32
+ }
33
+ </script>
34
+
35
+ <template>
36
+ <slot
37
+ v-if="embedded"
38
+ v-bind="attrs"
39
+ :size="size"
40
+ />
41
+
42
+ <FormField
43
+ v-else
44
+ :class="props.class"
45
+ :description="props.description"
46
+ :error="error"
47
+ :help="props.help"
48
+ :hint="props.hint"
49
+ :label="props.label"
50
+ :name="props.name"
51
+ :orientation="props.orientation"
52
+ :required="props.required"
53
+ :size="size"
54
+ @blur.capture="onBlur"
55
+ >
56
+ <template #default="control">
57
+ <slot
58
+ v-bind="control"
59
+ :size="size"
60
+ />
61
+ </template>
62
+ </FormField>
63
+ </template>
@@ -0,0 +1,23 @@
1
+ import type { VunoSize } from '#vuno/types/base';
2
+ import type { VunoFieldBase } from '#vuno/types/field';
3
+ type __VLS_Props = Omit<VunoFieldBase, 'columns'>;
4
+ type __VLS_Slots = {
5
+ default: (props: {
6
+ id?: string;
7
+ name?: string;
8
+ 'aria-describedby'?: string;
9
+ 'aria-invalid'?: boolean;
10
+ 'aria-required'?: boolean;
11
+ required?: boolean;
12
+ size?: VunoSize;
13
+ }) => unknown;
14
+ };
15
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
16
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
17
+ declare const _default: typeof __VLS_export;
18
+ export default _default;
19
+ type __VLS_WithSlots<T, S> = T & {
20
+ new (): {
21
+ $slots: S;
22
+ };
23
+ };
@@ -0,0 +1,52 @@
1
+ import type { VunoRadius, VunoSize } from '#vuno/types/base';
2
+ import type { VunoUi } from '#vuno/types/slots';
3
+ type __VLS_Props = Props;
4
+ type __VLS_Slots = {
5
+ /** Lo que va al final del campo: un botón de acción, una unidad. */
6
+ trailing?: () => unknown;
7
+ };
8
+ type Props = {
9
+ /** Nombre Iconify; se pinta dentro del campo, antes del texto. */
10
+ icon?: string;
11
+ /** La curvatura de la caja. Sin valor, la que traiga el tema. */
12
+ radius?: VunoRadius;
13
+ size?: VunoSize;
14
+ /**
15
+ * Los tipos de texto, no los demás: `checkbox`, `radio` y `file`
16
+ * tienen su propio control porque no se pintan como una caja de
17
+ * texto ni llevan valor de cadena.
18
+ */
19
+ type?: 'date' | 'email' | 'number' | 'password' | 'search' | 'tel' | 'text' | 'url';
20
+ ui?: VunoUi<'control' | 'input'>;
21
+ };
22
+ type __VLS_ModelProps = {
23
+ /**
24
+ * `number` devuelve número y el resto cadena, que es lo que espera el
25
+ * estado del formulario: un campo numérico que guardara `'12'` pasaría la
26
+ * validación de tipo por los pelos y fallaría al comparar o al sumar.
27
+ * Vacío es `undefined` y no `0` ni `''`: no es un valor, es que no hay.
28
+ */
29
+ modelValue?: number | string | undefined;
30
+ };
31
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
32
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {
33
+ inputRef: Readonly<import("vue").ShallowRef<HTMLInputElement | null>>;
34
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
35
+ "update:modelValue": (value: string | number | undefined) => any;
36
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
37
+ "onUpdate:modelValue"?: ((value: string | number | undefined) => any) | undefined;
38
+ }>, {
39
+ icon: string;
40
+ radius: VunoRadius;
41
+ size: VunoSize;
42
+ type: "date" | "email" | "number" | "password" | "search" | "tel" | "text" | "url";
43
+ ui: VunoUi<"control" | "input">;
44
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
45
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
46
+ declare const _default: typeof __VLS_export;
47
+ export default _default;
48
+ type __VLS_WithSlots<T, S> = T & {
49
+ new (): {
50
+ $slots: S;
51
+ };
52
+ };
@@ -0,0 +1,30 @@
1
+ export declare const inputTheme: Record<"input", {
2
+ /**
3
+ * El control de texto nativo, del que cuelgan `text`, `email`, `password`,
4
+ * `number` y `slug`. La caja la pone `baseControl`; aquí queda el `<input>`,
5
+ * que va transparente y sin contorno propio, y su icono.
6
+ */
7
+ readonly slots: {
8
+ readonly base: "w-full min-w-0 bg-transparent outline-none placeholder:text-vuno-subtle disabled:cursor-not-allowed";
9
+ readonly icon: "shrink-0 text-vuno-muted";
10
+ };
11
+ readonly variants: {
12
+ readonly size: {
13
+ readonly xs: {
14
+ readonly icon: "size-3.5";
15
+ };
16
+ readonly sm: {
17
+ readonly icon: "size-4";
18
+ };
19
+ readonly md: {
20
+ readonly icon: "size-4";
21
+ };
22
+ readonly lg: {
23
+ readonly icon: "size-5";
24
+ };
25
+ readonly xl: {
26
+ readonly icon: "size-5";
27
+ };
28
+ };
29
+ };
30
+ }>;
@@ -0,0 +1,21 @@
1
+ import { defineTheme } from "#vuno/utils/theme";
2
+ export const inputTheme = defineTheme("input", {
3
+ /**
4
+ * El control de texto nativo, del que cuelgan `text`, `email`, `password`,
5
+ * `number` y `slug`. La caja la pone `baseControl`; aquí queda el `<input>`,
6
+ * que va transparente y sin contorno propio, y su icono.
7
+ */
8
+ slots: {
9
+ base: "w-full min-w-0 bg-transparent outline-none placeholder:text-vuno-subtle disabled:cursor-not-allowed",
10
+ icon: "shrink-0 text-vuno-muted"
11
+ },
12
+ variants: {
13
+ size: {
14
+ xs: { icon: "size-3.5" },
15
+ sm: { icon: "size-4" },
16
+ md: { icon: "size-4" },
17
+ lg: { icon: "size-5" },
18
+ xl: { icon: "size-5" }
19
+ }
20
+ }
21
+ });
@@ -0,0 +1,66 @@
1
+ <script setup>
2
+ import { computed, useTemplateRef } from "vue";
3
+ import { useTheme } from "#vuno/composables/useTheme";
4
+ import Icon from "#vuno/components/Icon/Icon.vue";
5
+ import ControlShell from "#vuno/components/internal/ControlShell/ControlShell.vue";
6
+ defineOptions({ name: "VunoInput", inheritAttrs: false });
7
+ const model = defineModel({ type: null, ...{ default: void 0 } });
8
+ const props = defineProps({
9
+ icon: { type: String, required: false, default: void 0 },
10
+ radius: { type: String, required: false, default: void 0 },
11
+ size: { type: String, required: false, default: "md" },
12
+ type: { type: String, required: false, default: "text" },
13
+ ui: { type: Object, required: false, default: void 0 }
14
+ });
15
+ defineSlots();
16
+ const ui = useTheme(
17
+ "input",
18
+ () => props.ui,
19
+ () => ({ size: props.size })
20
+ );
21
+ const inputRef = useTemplateRef("input");
22
+ const isNumber = computed(() => props.type === "number");
23
+ function onInput(event) {
24
+ const target = event.target;
25
+ if (!isNumber.value) {
26
+ model.value = target.value;
27
+ return;
28
+ }
29
+ model.value = target.value === "" ? void 0 : target.valueAsNumber;
30
+ }
31
+ defineExpose({ inputRef });
32
+ </script>
33
+
34
+ <template>
35
+ <ControlShell
36
+ :radius="props.radius"
37
+ :size="props.size"
38
+ :ui="props.ui"
39
+ >
40
+ <template
41
+ v-if="props.icon"
42
+ #leading
43
+ >
44
+ <Icon
45
+ :class="ui.icon"
46
+ :name="props.icon"
47
+ />
48
+ </template>
49
+
50
+ <input
51
+ ref="input"
52
+ v-bind="$attrs"
53
+ :class="ui.base"
54
+ :type="props.type"
55
+ :value="model"
56
+ @input="onInput"
57
+ />
58
+
59
+ <template
60
+ v-if="$slots.trailing"
61
+ #trailing
62
+ >
63
+ <slot name="trailing" />
64
+ </template>
65
+ </ControlShell>
66
+ </template>