@kapiuara/ui 0.0.0-stage → 0.1.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 (424) hide show
  1. package/README.md +764 -2
  2. package/dist/components/data/KapiPagination.d.ts +36 -0
  3. package/dist/components/data/KapiPagination.js +102 -0
  4. package/dist/components/data/KapiTable.d.ts +245 -0
  5. package/dist/components/data/KapiTable.js +748 -0
  6. package/dist/components/data/KapiTableFilter.d.ts +48 -0
  7. package/dist/components/data/KapiTableFilter.js +81 -0
  8. package/dist/components/data/index.d.ts +10 -0
  9. package/dist/components/data/tableLogic.d.ts +197 -0
  10. package/dist/components/data/tableLogic.js +145 -0
  11. package/dist/components/data/tableResizeLogic.d.ts +28 -0
  12. package/dist/components/data/tableResizeLogic.js +20 -0
  13. package/dist/components/display/KapiAnnotation.d.ts +32 -0
  14. package/dist/components/display/KapiAnnotation.js +130 -0
  15. package/dist/components/display/KapiAvatar.d.ts +27 -0
  16. package/dist/components/display/KapiAvatar.js +43 -0
  17. package/dist/components/display/KapiAvatarGroup.d.ts +19 -0
  18. package/dist/components/display/KapiAvatarGroup.js +38 -0
  19. package/dist/components/display/KapiBadge.d.ts +21 -0
  20. package/dist/components/display/KapiBadge.js +28 -0
  21. package/dist/components/display/KapiComment.d.ts +27 -0
  22. package/dist/components/display/KapiComment.js +66 -0
  23. package/dist/components/display/KapiCommentComposer.d.ts +49 -0
  24. package/dist/components/display/KapiCommentComposer.js +76 -0
  25. package/dist/components/display/KapiDescriptionList.d.ts +19 -0
  26. package/dist/components/display/KapiDescriptionList.js +35 -0
  27. package/dist/components/display/KapiFileItem.d.ts +39 -0
  28. package/dist/components/display/KapiFileItem.js +74 -0
  29. package/dist/components/display/KapiFileViewer.d.ts +51 -0
  30. package/dist/components/display/KapiFileViewer.js +107 -0
  31. package/dist/components/display/KapiIconTile.d.ts +16 -0
  32. package/dist/components/display/KapiIconTile.js +29 -0
  33. package/dist/components/display/KapiStat.d.ts +24 -0
  34. package/dist/components/display/KapiStat.js +41 -0
  35. package/dist/components/display/KapiTag.d.ts +27 -0
  36. package/dist/components/display/KapiTag.js +44 -0
  37. package/dist/components/display/KapiTimeline.d.ts +15 -0
  38. package/dist/components/display/KapiTimeline.js +30 -0
  39. package/dist/components/display/annotationLogic.d.ts +26 -0
  40. package/dist/components/display/annotationLogic.js +17 -0
  41. package/dist/components/display/avatarGroupLogic.d.ts +14 -0
  42. package/dist/components/display/avatarGroupLogic.js +13 -0
  43. package/dist/components/display/avatarLogic.d.ts +5 -0
  44. package/dist/components/display/avatarLogic.js +9 -0
  45. package/dist/components/display/commentLogic.d.ts +18 -0
  46. package/dist/components/display/commentLogic.js +7 -0
  47. package/dist/components/display/fileItemLogic.d.ts +9 -0
  48. package/dist/components/display/fileItemLogic.js +12 -0
  49. package/dist/components/display/iconTileLogic.d.ts +13 -0
  50. package/dist/components/display/iconTileLogic.js +13 -0
  51. package/dist/components/display/index.d.ts +40 -0
  52. package/dist/components/display/statLogic.d.ts +10 -0
  53. package/dist/components/display/statLogic.js +10 -0
  54. package/dist/components/display/tagLogic.d.ts +11 -0
  55. package/dist/components/display/tagLogic.js +10 -0
  56. package/dist/components/display/timelineLogic.d.ts +5 -0
  57. package/dist/components/display/timelineLogic.js +4 -0
  58. package/dist/components/feedback/KapiAlert.d.ts +28 -0
  59. package/dist/components/feedback/KapiAlert.js +53 -0
  60. package/dist/components/feedback/KapiBulkBar.d.ts +30 -0
  61. package/dist/components/feedback/KapiBulkBar.js +34 -0
  62. package/dist/components/feedback/KapiCountdown.d.ts +26 -0
  63. package/dist/components/feedback/KapiCountdown.js +43 -0
  64. package/dist/components/feedback/KapiEmpty.d.ts +14 -0
  65. package/dist/components/feedback/KapiEmpty.js +31 -0
  66. package/dist/components/feedback/KapiFab.d.ts +34 -0
  67. package/dist/components/feedback/KapiFab.js +116 -0
  68. package/dist/components/feedback/KapiOfflineBanner.d.ts +25 -0
  69. package/dist/components/feedback/KapiOfflineBanner.js +40 -0
  70. package/dist/components/feedback/KapiProgress.d.ts +24 -0
  71. package/dist/components/feedback/KapiProgress.js +94 -0
  72. package/dist/components/feedback/KapiSkeleton.d.ts +12 -0
  73. package/dist/components/feedback/KapiSkeleton.js +16 -0
  74. package/dist/components/feedback/KapiToastContainer.d.ts +16 -0
  75. package/dist/components/feedback/KapiToastContainer.js +81 -0
  76. package/dist/components/feedback/KapiTour.d.ts +40 -0
  77. package/dist/components/feedback/KapiTour.js +157 -0
  78. package/dist/components/feedback/KapiUnsavedBar.d.ts +35 -0
  79. package/dist/components/feedback/KapiUnsavedBar.js +47 -0
  80. package/dist/components/feedback/bulkBarLogic.d.ts +2 -0
  81. package/dist/components/feedback/bulkBarLogic.js +7 -0
  82. package/dist/components/feedback/countdownLogic.d.ts +74 -0
  83. package/dist/components/feedback/countdownLogic.js +70 -0
  84. package/dist/components/feedback/fabLogic.d.ts +17 -0
  85. package/dist/components/feedback/fabLogic.js +10 -0
  86. package/dist/components/feedback/index.d.ts +33 -0
  87. package/dist/components/feedback/offlineBannerLogic.d.ts +10 -0
  88. package/dist/components/feedback/offlineBannerLogic.js +8 -0
  89. package/dist/components/feedback/progressLogic.d.ts +17 -0
  90. package/dist/components/feedback/progressLogic.js +16 -0
  91. package/dist/components/feedback/toastStore.d.ts +62 -0
  92. package/dist/components/feedback/toastStore.js +38 -0
  93. package/dist/components/feedback/tourLogic.d.ts +64 -0
  94. package/dist/components/feedback/tourLogic.js +31 -0
  95. package/dist/components/feedback/unsavedBarLogic.d.ts +2 -0
  96. package/dist/components/feedback/unsavedBarLogic.js +8 -0
  97. package/dist/components/inputs/KapiAutocomplete.d.ts +81 -0
  98. package/dist/components/inputs/KapiAutocomplete.js +205 -0
  99. package/dist/components/inputs/KapiButton.d.ts +23 -0
  100. package/dist/components/inputs/KapiButton.js +25 -0
  101. package/dist/components/inputs/KapiCalendar.d.ts +35 -0
  102. package/dist/components/inputs/KapiCalendar.js +60 -0
  103. package/dist/components/inputs/KapiCalendarGrid.d.ts +29 -0
  104. package/dist/components/inputs/KapiCalendarGrid.js +65 -0
  105. package/dist/components/inputs/KapiCheckCard.d.ts +28 -0
  106. package/dist/components/inputs/KapiCheckCard.js +41 -0
  107. package/dist/components/inputs/KapiCheckbox.d.ts +7 -0
  108. package/dist/components/inputs/KapiCheckbox.js +5 -0
  109. package/dist/components/inputs/KapiDatePicker.d.ts +46 -0
  110. package/dist/components/inputs/KapiDatePicker.js +189 -0
  111. package/dist/components/inputs/KapiDateRangePicker.d.ts +49 -0
  112. package/dist/components/inputs/KapiDateRangePicker.js +179 -0
  113. package/dist/components/inputs/KapiFacetedSearch.d.ts +45 -0
  114. package/dist/components/inputs/KapiFacetedSearch.js +188 -0
  115. package/dist/components/inputs/KapiField.d.ts +33 -0
  116. package/dist/components/inputs/KapiField.js +60 -0
  117. package/dist/components/inputs/KapiFileUpload.d.ts +58 -0
  118. package/dist/components/inputs/KapiFileUpload.js +134 -0
  119. package/dist/components/inputs/KapiIconButton.d.ts +13 -0
  120. package/dist/components/inputs/KapiIconButton.js +16 -0
  121. package/dist/components/inputs/KapiInput.d.ts +92 -0
  122. package/dist/components/inputs/KapiInput.js +123 -0
  123. package/dist/components/inputs/KapiInputGroup.d.ts +37 -0
  124. package/dist/components/inputs/KapiInputGroup.js +29 -0
  125. package/dist/components/inputs/KapiMaskedInput.d.ts +52 -0
  126. package/dist/components/inputs/KapiMaskedInput.js +78 -0
  127. package/dist/components/inputs/KapiNumberStepper.d.ts +44 -0
  128. package/dist/components/inputs/KapiNumberStepper.js +100 -0
  129. package/dist/components/inputs/KapiRadio.d.ts +7 -0
  130. package/dist/components/inputs/KapiRadio.js +5 -0
  131. package/dist/components/inputs/KapiRating.d.ts +55 -0
  132. package/dist/components/inputs/KapiRating.js +99 -0
  133. package/dist/components/inputs/KapiSegmented.d.ts +41 -0
  134. package/dist/components/inputs/KapiSegmented.js +83 -0
  135. package/dist/components/inputs/KapiSelect.d.ts +109 -0
  136. package/dist/components/inputs/KapiSelect.js +443 -0
  137. package/dist/components/inputs/KapiSlider.d.ts +42 -0
  138. package/dist/components/inputs/KapiSlider.js +70 -0
  139. package/dist/components/inputs/KapiSwitch.d.ts +13 -0
  140. package/dist/components/inputs/KapiSwitch.js +28 -0
  141. package/dist/components/inputs/KapiTagInput.d.ts +79 -0
  142. package/dist/components/inputs/KapiTagInput.js +115 -0
  143. package/dist/components/inputs/KapiTextarea.d.ts +32 -0
  144. package/dist/components/inputs/KapiTextarea.js +67 -0
  145. package/dist/components/inputs/asyncSelectLogic.d.ts +42 -0
  146. package/dist/components/inputs/asyncSelectLogic.js +46 -0
  147. package/dist/components/inputs/autocompleteLogic.d.ts +73 -0
  148. package/dist/components/inputs/autocompleteLogic.js +67 -0
  149. package/dist/components/inputs/checkControl.d.ts +20 -0
  150. package/dist/components/inputs/checkControl.js +31 -0
  151. package/dist/components/inputs/datePickerLogic.d.ts +92 -0
  152. package/dist/components/inputs/datePickerLogic.js +174 -0
  153. package/dist/components/inputs/dateRangeLogic.d.ts +31 -0
  154. package/dist/components/inputs/dateRangeLogic.js +44 -0
  155. package/dist/components/inputs/facetedSearchLogic.d.ts +69 -0
  156. package/dist/components/inputs/facetedSearchLogic.js +39 -0
  157. package/dist/components/inputs/fieldLogic.d.ts +67 -0
  158. package/dist/components/inputs/fieldLogic.js +35 -0
  159. package/dist/components/inputs/fileUploadLogic.d.ts +13 -0
  160. package/dist/components/inputs/fileUploadLogic.js +9 -0
  161. package/dist/components/inputs/index.d.ts +55 -0
  162. package/dist/components/inputs/inputGroupLogic.d.ts +22 -0
  163. package/dist/components/inputs/inputGroupLogic.js +9 -0
  164. package/dist/components/inputs/inputLogic.d.ts +25 -0
  165. package/dist/components/inputs/inputLogic.js +10 -0
  166. package/dist/components/inputs/maskLogic.d.ts +34 -0
  167. package/dist/components/inputs/maskLogic.js +57 -0
  168. package/dist/components/inputs/numberStepLogic.d.ts +14 -0
  169. package/dist/components/inputs/numberStepLogic.js +21 -0
  170. package/dist/components/inputs/ratingLogic.d.ts +9 -0
  171. package/dist/components/inputs/ratingLogic.js +22 -0
  172. package/dist/components/inputs/segmentedLogic.d.ts +6 -0
  173. package/dist/components/inputs/segmentedLogic.js +14 -0
  174. package/dist/components/inputs/selectLogic.d.ts +89 -0
  175. package/dist/components/inputs/selectLogic.js +82 -0
  176. package/dist/components/inputs/sliderLogic.d.ts +9 -0
  177. package/dist/components/inputs/sliderLogic.js +17 -0
  178. package/dist/components/inputs/tagInputLogic.d.ts +40 -0
  179. package/dist/components/inputs/tagInputLogic.js +40 -0
  180. package/dist/components/inputs/textareaLogic.d.ts +17 -0
  181. package/dist/components/inputs/textareaLogic.js +13 -0
  182. package/dist/components/inputs/useCalendarFocus.d.ts +13 -0
  183. package/dist/components/inputs/useCalendarFocus.js +25 -0
  184. package/dist/components/inputs/useDatePopSide.d.ts +15 -0
  185. package/dist/components/inputs/useDatePopSide.js +20 -0
  186. package/dist/components/labelsLogic.d.ts +6 -0
  187. package/dist/components/labelsLogic.js +11 -0
  188. package/dist/components/layout/KapiAccessCard.d.ts +40 -0
  189. package/dist/components/layout/KapiAccessCard.js +66 -0
  190. package/dist/components/layout/KapiAccountMenu.d.ts +61 -0
  191. package/dist/components/layout/KapiAccountMenu.js +212 -0
  192. package/dist/components/layout/KapiCard.d.ts +43 -0
  193. package/dist/components/layout/KapiCard.js +53 -0
  194. package/dist/components/layout/KapiCluster.d.ts +15 -0
  195. package/dist/components/layout/KapiCluster.js +21 -0
  196. package/dist/components/layout/KapiContextSlot.d.ts +45 -0
  197. package/dist/components/layout/KapiContextSlot.js +92 -0
  198. package/dist/components/layout/KapiDivider.d.ts +16 -0
  199. package/dist/components/layout/KapiDivider.js +41 -0
  200. package/dist/components/layout/KapiGrid.d.ts +19 -0
  201. package/dist/components/layout/KapiGrid.js +25 -0
  202. package/dist/components/layout/KapiNotificationBell.d.ts +75 -0
  203. package/dist/components/layout/KapiNotificationBell.js +196 -0
  204. package/dist/components/layout/KapiPageHeader.d.ts +28 -0
  205. package/dist/components/layout/KapiPageHeader.js +47 -0
  206. package/dist/components/layout/KapiPanelParts.d.ts +35 -0
  207. package/dist/components/layout/KapiPanelParts.js +63 -0
  208. package/dist/components/layout/KapiRail.d.ts +40 -0
  209. package/dist/components/layout/KapiRail.js +102 -0
  210. package/dist/components/layout/KapiScrollArea.d.ts +40 -0
  211. package/dist/components/layout/KapiScrollArea.js +49 -0
  212. package/dist/components/layout/KapiShell.d.ts +40 -0
  213. package/dist/components/layout/KapiShell.js +48 -0
  214. package/dist/components/layout/KapiStack.d.ts +11 -0
  215. package/dist/components/layout/KapiStack.js +19 -0
  216. package/dist/components/layout/accessCardLogic.d.ts +18 -0
  217. package/dist/components/layout/accessCardLogic.js +11 -0
  218. package/dist/components/layout/cardLogic.d.ts +9 -0
  219. package/dist/components/layout/cardLogic.js +11 -0
  220. package/dist/components/layout/index.d.ts +33 -0
  221. package/dist/components/layout/layoutPrimitives.d.ts +51 -0
  222. package/dist/components/layout/layoutPrimitives.js +58 -0
  223. package/dist/components/layout/notificationBellLogic.d.ts +20 -0
  224. package/dist/components/layout/notificationBellLogic.js +14 -0
  225. package/dist/components/layout/railLogic.d.ts +52 -0
  226. package/dist/components/layout/railLogic.js +16 -0
  227. package/dist/components/locale/KapiLocaleProvider.d.ts +29 -0
  228. package/dist/components/locale/KapiLocaleProvider.js +27 -0
  229. package/dist/components/locale/index.d.ts +5 -0
  230. package/dist/components/locale/labelRegistry.d.ts +110 -0
  231. package/dist/components/locale/linkLabels.d.ts +6 -0
  232. package/dist/components/locale/linkLabels.js +4 -0
  233. package/dist/components/navigation/CtxSlidingList.d.ts +11 -0
  234. package/dist/components/navigation/CtxSlidingList.js +24 -0
  235. package/dist/components/navigation/KapiAccordion.d.ts +24 -0
  236. package/dist/components/navigation/KapiAccordion.js +68 -0
  237. package/dist/components/navigation/KapiBreadcrumb.d.ts +23 -0
  238. package/dist/components/navigation/KapiBreadcrumb.js +32 -0
  239. package/dist/components/navigation/KapiCollapsiblePanel.d.ts +63 -0
  240. package/dist/components/navigation/KapiCollapsiblePanel.js +83 -0
  241. package/dist/components/navigation/KapiContextPanel.d.ts +117 -0
  242. package/dist/components/navigation/KapiContextPanel.js +265 -0
  243. package/dist/components/navigation/KapiFilterChips.d.ts +30 -0
  244. package/dist/components/navigation/KapiFilterChips.js +40 -0
  245. package/dist/components/navigation/KapiNavBadge.d.ts +26 -0
  246. package/dist/components/navigation/KapiNavBadge.js +33 -0
  247. package/dist/components/navigation/KapiPanelGroup.d.ts +69 -0
  248. package/dist/components/navigation/KapiPanelGroup.js +149 -0
  249. package/dist/components/navigation/KapiSteps.d.ts +43 -0
  250. package/dist/components/navigation/KapiSteps.js +63 -0
  251. package/dist/components/navigation/KapiTabs.d.ts +56 -0
  252. package/dist/components/navigation/KapiTabs.js +81 -0
  253. package/dist/components/navigation/KapiTree.d.ts +56 -0
  254. package/dist/components/navigation/KapiTree.js +157 -0
  255. package/dist/components/navigation/KapiWizard.d.ts +49 -0
  256. package/dist/components/navigation/KapiWizard.js +104 -0
  257. package/dist/components/navigation/MiniNavItem.d.ts +35 -0
  258. package/dist/components/navigation/MiniNavItem.js +57 -0
  259. package/dist/components/navigation/accordionLogic.d.ts +4 -0
  260. package/dist/components/navigation/accordionLogic.js +4 -0
  261. package/dist/components/navigation/activeItemLogic.d.ts +7 -0
  262. package/dist/components/navigation/activeItemLogic.js +4 -0
  263. package/dist/components/navigation/breadcrumbLogic.d.ts +8 -0
  264. package/dist/components/navigation/breadcrumbLogic.js +4 -0
  265. package/dist/components/navigation/contextPanelLogic.d.ts +27 -0
  266. package/dist/components/navigation/contextPanelLogic.js +11 -0
  267. package/dist/components/navigation/filterChipsLogic.d.ts +23 -0
  268. package/dist/components/navigation/filterChipsLogic.js +20 -0
  269. package/dist/components/navigation/index.d.ts +39 -0
  270. package/dist/components/navigation/navBadgeLogic.d.ts +26 -0
  271. package/dist/components/navigation/navBadgeLogic.js +16 -0
  272. package/dist/components/navigation/panelGroupLogic.d.ts +15 -0
  273. package/dist/components/navigation/panelGroupLogic.js +13 -0
  274. package/dist/components/navigation/panelMini.d.ts +13 -0
  275. package/dist/components/navigation/panelMini.js +9 -0
  276. package/dist/components/navigation/panelMiniLogic.d.ts +19 -0
  277. package/dist/components/navigation/panelMiniLogic.js +6 -0
  278. package/dist/components/navigation/stepsLogic.d.ts +25 -0
  279. package/dist/components/navigation/stepsLogic.js +10 -0
  280. package/dist/components/navigation/tabsLogic.d.ts +12 -0
  281. package/dist/components/navigation/tabsLogic.js +14 -0
  282. package/dist/components/navigation/treeLogic.d.ts +80 -0
  283. package/dist/components/navigation/treeLogic.js +91 -0
  284. package/dist/components/navigation/wizardLogic.d.ts +11 -0
  285. package/dist/components/navigation/wizardLogic.js +7 -0
  286. package/dist/components/overlays/KapiCanvasForm.d.ts +42 -0
  287. package/dist/components/overlays/KapiCanvasForm.js +60 -0
  288. package/dist/components/overlays/KapiCommandPalette.d.ts +58 -0
  289. package/dist/components/overlays/KapiCommandPalette.js +152 -0
  290. package/dist/components/overlays/KapiConfirm.d.ts +48 -0
  291. package/dist/components/overlays/KapiConfirm.js +94 -0
  292. package/dist/components/overlays/KapiContextMenu.d.ts +51 -0
  293. package/dist/components/overlays/KapiContextMenu.js +90 -0
  294. package/dist/components/overlays/KapiDialogHost.d.ts +23 -0
  295. package/dist/components/overlays/KapiDialogHost.js +129 -0
  296. package/dist/components/overlays/KapiDropdown.d.ts +30 -0
  297. package/dist/components/overlays/KapiDropdown.js +84 -0
  298. package/dist/components/overlays/KapiLoading.d.ts +14 -0
  299. package/dist/components/overlays/KapiLoading.js +43 -0
  300. package/dist/components/overlays/KapiMenuButton.d.ts +25 -0
  301. package/dist/components/overlays/KapiMenuButton.js +109 -0
  302. package/dist/components/overlays/KapiModal.d.ts +61 -0
  303. package/dist/components/overlays/KapiModal.js +106 -0
  304. package/dist/components/overlays/KapiOffcanvas.d.ts +96 -0
  305. package/dist/components/overlays/KapiOffcanvas.js +209 -0
  306. package/dist/components/overlays/KapiOffcanvasStack.d.ts +58 -0
  307. package/dist/components/overlays/KapiOffcanvasStack.js +84 -0
  308. package/dist/components/overlays/KapiPhotoView.d.ts +60 -0
  309. package/dist/components/overlays/KapiPhotoView.js +122 -0
  310. package/dist/components/overlays/KapiPopover.d.ts +46 -0
  311. package/dist/components/overlays/KapiPopover.js +68 -0
  312. package/dist/components/overlays/KapiShapeSheet.d.ts +34 -0
  313. package/dist/components/overlays/KapiShapeSheet.js +82 -0
  314. package/dist/components/overlays/KapiSplitModal.d.ts +41 -0
  315. package/dist/components/overlays/KapiSplitModal.js +125 -0
  316. package/dist/components/overlays/KapiTooltip.d.ts +38 -0
  317. package/dist/components/overlays/KapiTooltip.js +105 -0
  318. package/dist/components/overlays/canvasFormLogic.d.ts +18 -0
  319. package/dist/components/overlays/canvasFormLogic.js +16 -0
  320. package/dist/components/overlays/commandPaletteLogic.d.ts +29 -0
  321. package/dist/components/overlays/commandPaletteLogic.js +19 -0
  322. package/dist/components/overlays/dialogStore.d.ts +114 -0
  323. package/dist/components/overlays/dialogStore.js +76 -0
  324. package/dist/components/overlays/dialogUtils.d.ts +72 -0
  325. package/dist/components/overlays/dialogUtils.js +62 -0
  326. package/dist/components/overlays/exitPresenceLogic.d.ts +14 -0
  327. package/dist/components/overlays/exitPresenceLogic.js +5 -0
  328. package/dist/components/overlays/index.d.ts +38 -0
  329. package/dist/components/overlays/menuButtonLogic.d.ts +58 -0
  330. package/dist/components/overlays/menuButtonLogic.js +9 -0
  331. package/dist/components/overlays/menuKeyboardLogic.d.ts +25 -0
  332. package/dist/components/overlays/menuKeyboardLogic.js +30 -0
  333. package/dist/components/overlays/offcanvasCompanion.d.ts +16 -0
  334. package/dist/components/overlays/offcanvasCompanion.js +6 -0
  335. package/dist/components/overlays/offcanvasResize.d.ts +22 -0
  336. package/dist/components/overlays/offcanvasResize.js +10 -0
  337. package/dist/components/overlays/offcanvasSide.d.ts +30 -0
  338. package/dist/components/overlays/offcanvasSide.js +29 -0
  339. package/dist/components/overlays/offcanvasStack.d.ts +76 -0
  340. package/dist/components/overlays/offcanvasStack.js +72 -0
  341. package/dist/components/overlays/overlayPortal.d.ts +9 -0
  342. package/dist/components/overlays/overlayPortal.js +6 -0
  343. package/dist/components/overlays/popoverLogic.d.ts +94 -0
  344. package/dist/components/overlays/popoverLogic.js +47 -0
  345. package/dist/components/overlays/splitModalLayout.d.ts +8 -0
  346. package/dist/components/overlays/splitModalLayout.js +5 -0
  347. package/dist/components/overlays/useExitPresence.d.ts +14 -0
  348. package/dist/components/overlays/useExitPresence.js +34 -0
  349. package/dist/components/overlays/useNativeDialog.d.ts +30 -0
  350. package/dist/components/overlays/useNativeDialog.js +56 -0
  351. package/dist/components/rootProps.d.ts +17 -0
  352. package/dist/components/rootProps.js +4 -0
  353. package/dist/hooks/breakpointOpenLogic.d.ts +7 -0
  354. package/dist/hooks/breakpointOpenLogic.js +4 -0
  355. package/dist/hooks/dateFormat.d.ts +12 -0
  356. package/dist/hooks/dateFormat.js +15 -0
  357. package/dist/hooks/downloadLogic.d.ts +31 -0
  358. package/dist/hooks/downloadLogic.js +85 -0
  359. package/dist/hooks/focusLogic.d.ts +18 -0
  360. package/dist/hooks/focusLogic.js +17 -0
  361. package/dist/hooks/growOriginLogic.d.ts +22 -0
  362. package/dist/hooks/growOriginLogic.js +10 -0
  363. package/dist/hooks/hotkeyLogic.d.ts +22 -0
  364. package/dist/hooks/hotkeyLogic.js +32 -0
  365. package/dist/hooks/index.d.ts +49 -0
  366. package/dist/hooks/kapiRoot.d.ts +16 -0
  367. package/dist/hooks/kapiRoot.js +9 -0
  368. package/dist/hooks/onlineStatusLogic.d.ts +31 -0
  369. package/dist/hooks/onlineStatusLogic.js +28 -0
  370. package/dist/hooks/persistentStateLogic.d.ts +12 -0
  371. package/dist/hooks/persistentStateLogic.js +17 -0
  372. package/dist/hooks/rafThrottle.d.ts +33 -0
  373. package/dist/hooks/rafThrottle.js +33 -0
  374. package/dist/hooks/recentLogic.d.ts +9 -0
  375. package/dist/hooks/recentLogic.js +10 -0
  376. package/dist/hooks/reducedMotion.d.ts +13 -0
  377. package/dist/hooks/reducedMotion.js +5 -0
  378. package/dist/hooks/rightClick.d.ts +37 -0
  379. package/dist/hooks/rightClick.js +30 -0
  380. package/dist/hooks/scrollCollapseLogic.d.ts +12 -0
  381. package/dist/hooks/scrollCollapseLogic.js +4 -0
  382. package/dist/hooks/scrollEdgesLogic.d.ts +49 -0
  383. package/dist/hooks/scrollEdgesLogic.js +19 -0
  384. package/dist/hooks/slidingIndicatorLogic.d.ts +25 -0
  385. package/dist/hooks/slidingIndicatorLogic.js +15 -0
  386. package/dist/hooks/storageLogic.d.ts +15 -0
  387. package/dist/hooks/storageLogic.js +24 -0
  388. package/dist/hooks/unsavedGuardLogic.d.ts +17 -0
  389. package/dist/hooks/unsavedGuardLogic.js +17 -0
  390. package/dist/hooks/useDragScroll.d.ts +12 -0
  391. package/dist/hooks/useDragScroll.js +32 -0
  392. package/dist/hooks/useGlobalRightClick.d.ts +14 -0
  393. package/dist/hooks/useGlobalRightClick.js +35 -0
  394. package/dist/hooks/useGrowOrigin.d.ts +13 -0
  395. package/dist/hooks/useGrowOrigin.js +16 -0
  396. package/dist/hooks/useHotkey.d.ts +15 -0
  397. package/dist/hooks/useHotkey.js +31 -0
  398. package/dist/hooks/useKapiTheme.d.ts +69 -0
  399. package/dist/hooks/useKapiTheme.js +88 -0
  400. package/dist/hooks/useMediaQuery.d.ts +6 -0
  401. package/dist/hooks/useMediaQuery.js +13 -0
  402. package/dist/hooks/useObjectUrl.d.ts +6 -0
  403. package/dist/hooks/useObjectUrl.js +19 -0
  404. package/dist/hooks/useOnlineStatus.d.ts +7 -0
  405. package/dist/hooks/useOnlineStatus.js +7 -0
  406. package/dist/hooks/usePersistentState.d.ts +19 -0
  407. package/dist/hooks/usePersistentState.js +37 -0
  408. package/dist/hooks/usePlacement.d.ts +36 -0
  409. package/dist/hooks/usePlacement.js +84 -0
  410. package/dist/hooks/useRecent.d.ts +17 -0
  411. package/dist/hooks/useRecent.js +16 -0
  412. package/dist/hooks/useScrollCollapse.d.ts +10 -0
  413. package/dist/hooks/useScrollCollapse.js +27 -0
  414. package/dist/hooks/useScrollEdges.d.ts +32 -0
  415. package/dist/hooks/useScrollEdges.js +91 -0
  416. package/dist/hooks/useSlidingIndicator.d.ts +23 -0
  417. package/dist/hooks/useSlidingIndicator.js +51 -0
  418. package/dist/hooks/useUnsavedGuard.d.ts +70 -0
  419. package/dist/hooks/useUnsavedGuard.js +47 -0
  420. package/dist/index.d.ts +12 -0
  421. package/dist/index.js +162 -0
  422. package/dist/kapi.css +2 -0
  423. package/dist/kapi.layered.css +4 -0
  424. package/package.json +86 -4
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Id activo dentro de una lista de navegación (para su indicador deslizante): el `activeId` del
3
+ * componente si pertenece a esta lista; `null` si es de otra sección o no hay activo.
4
+ */
5
+ export declare const activeIdIn: <Id extends string>(items: ReadonlyArray<{
6
+ id: Id;
7
+ }>, activeId: Id | undefined) => Id | null;
@@ -0,0 +1,4 @@
1
+ //#region src/components/navigation/activeItemLogic.ts
2
+ var e = (e, t) => t !== void 0 && e.some((e) => e.id === t) ? t : null;
3
+ //#endregion
4
+ export { e as activeIdIn };
@@ -0,0 +1,8 @@
1
+ export type KapiBreadcrumbItemKind = "link" | "text" | "current";
2
+ /**
3
+ * Rol de cada ítem: el último es la ubicación actual; los anteriores con
4
+ * `onClick` son botones; el resto es texto plano.
5
+ */
6
+ export declare const breadcrumbKinds: (items: ReadonlyArray<{
7
+ onClick?: () => void;
8
+ }>) => KapiBreadcrumbItemKind[];
@@ -0,0 +1,4 @@
1
+ //#region src/components/navigation/breadcrumbLogic.ts
2
+ var e = (e) => e.map((t, n) => n === e.length - 1 ? "current" : t.onClick ? "link" : "text");
3
+ //#endregion
4
+ export { e as breadcrumbKinds };
@@ -0,0 +1,27 @@
1
+ export type KapiContextPanelSide = "left" | "right";
2
+ /** Estado efectivo: el controlado gana; si no hay, el interno. */
3
+ export declare const resolveCollapsed: (controlled: boolean | undefined, internal: boolean) => boolean;
4
+ /** Clases del `<aside>`: conserva siempre `kapi-ctxpanel--{side}` (el `order` no depende del estado). */
5
+ export declare const ctxPanelClasses: ({ side, collapsed, resizing, className }: {
6
+ side?: KapiContextPanelSide;
7
+ collapsed?: boolean;
8
+ resizing?: boolean;
9
+ className?: string;
10
+ }) => string;
11
+ /** El panel ofrece plegar sólo si el consumidor pasó alguna de las props de plegado. */
12
+ export declare const canCollapse: ({ collapsed, defaultCollapsed, onCollapsedChange }: {
13
+ collapsed?: boolean | undefined;
14
+ defaultCollapsed?: boolean | undefined;
15
+ onCollapsedChange?: unknown;
16
+ }) => boolean;
17
+ export declare const DEFAULT_CTXPANEL_WIDTH = 258;
18
+ export declare const DEFAULT_CTXPANEL_MIN_WIDTH = 200;
19
+ export declare const DEFAULT_CTXPANEL_MAX_WIDTH = 420;
20
+ /** Keyboard step in px. */
21
+ export declare const CTXPANEL_RESIZE_STEP = 16;
22
+ /** Clamp to [min, max]. */
23
+ export declare const clampCtxPanelWidth: (width: number, min: number, max: number) => number;
24
+ /** Width after dragging the inner edge: `left` grows to the right, `right` grows to the left. */
25
+ export declare const ctxPanelWidthFromDrag: (side: KapiContextPanelSide, startWidth: number, startClientX: number, currentClientX: number, min: number, max: number) => number;
26
+ /** Arrow keys on the separator (left/right per side). Other keys: null (no change). */
27
+ export declare const stepCtxPanelWidth: (side: KapiContextPanelSide, width: number, key: string, min: number, max: number, step?: number) => number | null;
@@ -0,0 +1,11 @@
1
+ import { clampOffcanvasWidth as e, widthFromDrag as t } from "../overlays/offcanvasResize.js";
2
+ //#region src/components/navigation/contextPanelLogic.ts
3
+ var n = (e, t) => e ?? t, r = ({ side: e = "left", collapsed: t = !1, resizing: n = !1, className: r }) => [
4
+ "kapi-ctxpanel",
5
+ e === "right" ? "kapi-ctxpanel--right" : "",
6
+ t ? "is-collapsed" : "",
7
+ n ? "is-resizing" : "",
8
+ r ?? ""
9
+ ].filter(Boolean).join(" "), i = ({ collapsed: e, defaultCollapsed: t, onCollapsedChange: n }) => e !== void 0 || t !== void 0 || n !== void 0, a = (t, n, r) => e(t, n, r), o = (e, n, r, i, a, o) => t(e, n, r, i, a, o), s = (e, t, n, r, i, o = 16) => n === (e === "right" ? "ArrowLeft" : "ArrowRight") ? a(t + o, r, i) : n === (e === "right" ? "ArrowRight" : "ArrowLeft") ? a(t - o, r, i) : null;
10
+ //#endregion
11
+ export { i as canCollapse, a as clampCtxPanelWidth, r as ctxPanelClasses, o as ctxPanelWidthFromDrag, n as resolveCollapsed, s as stepCtxPanelWidth };
@@ -0,0 +1,23 @@
1
+ export type KapiFilterChipTone = "neutral" | "primary" | "success" | "warning" | "danger";
2
+ /** Chip de `KapiFilterChips`. `Id` acota los ids (p. ej. una unión de literales). */
3
+ export type KapiFilterChipItem<Id extends string = string> = {
4
+ id: Id;
5
+ label: string;
6
+ /** Contador opcional en píldora. */
7
+ count?: number;
8
+ /** Color del contador (y del chip activo si no es neutral/primary). */
9
+ tone?: KapiFilterChipTone;
10
+ };
11
+ /** Clases de un chip. Pura: es lo que se testea. */
12
+ export declare const filterChipClasses: (item: Pick<KapiFilterChipItem, "tone">, active: boolean, size?: "sm" | "md") => string;
13
+ /** Índice del chip activo para el roving tabindex (0 si `value` no existe). */
14
+ export declare const activeChipIndex: (items: readonly {
15
+ id: string;
16
+ }[], value: string) => number;
17
+ /**
18
+ * Próximo índice al navegar con el teclado. Flechas circulares; Home/End a los extremos.
19
+ * Devuelve `null` si la tecla no navega.
20
+ */
21
+ export declare const nextChipIndex: (current: number, length: number, key: string) => number | null;
22
+ /** Texto accesible del chip: "Aprobados, 7". */
23
+ export declare const chipAriaLabel: (item: KapiFilterChipItem) => string;
@@ -0,0 +1,20 @@
1
+ //#region src/components/navigation/filterChipsLogic.ts
2
+ var e = (e, t, n = "md") => [
3
+ "kapi-filterchip",
4
+ `kapi-filterchip--${e.tone ?? "neutral"}`,
5
+ n !== "md" && `kapi-filterchip--${n}`,
6
+ t && "is-on"
7
+ ].filter(Boolean).join(" "), t = (e, t) => Math.max(0, e.findIndex((e) => e.id === t)), n = (e, t, n) => {
8
+ if (t <= 0) return null;
9
+ switch (n) {
10
+ case "ArrowRight":
11
+ case "ArrowDown": return (e + 1) % t;
12
+ case "ArrowLeft":
13
+ case "ArrowUp": return (e - 1 + t) % t;
14
+ case "Home": return 0;
15
+ case "End": return t - 1;
16
+ default: return null;
17
+ }
18
+ }, r = (e) => e.count == null ? e.label : `${e.label}, ${e.count}`;
19
+ //#endregion
20
+ export { t as activeChipIndex, r as chipAriaLabel, e as filterChipClasses, n as nextChipIndex };
@@ -0,0 +1,39 @@
1
+ export { KapiWizard, DEFAULT_WIZARD_LABELS } from "./KapiWizard";
2
+ export type { KapiWizardLabels, KapiWizardOrientation, KapiWizardProps, KapiWizardStep } from "./KapiWizard";
3
+ export { KapiSteps, DEFAULT_STEPS_LABELS } from "./KapiSteps";
4
+ export type { KapiStep, KapiStepStatus, KapiStepsLabels, KapiStepsOrientation, KapiStepsProps, KapiStepsSize } from "./KapiSteps";
5
+ export { resolveSteps, stepsClasses } from "./stepsLogic";
6
+ export type { ResolvedSteps } from "./stepsLogic";
7
+ export { KapiContextPanel, KapiContextSections, DEFAULT_CONTEXT_PANEL_LABELS } from "./KapiContextPanel";
8
+ export type { KapiContextPanelItem, KapiContextPanelProps, KapiContextPanelLabels, KapiContextPanelSearch, KapiContextPanelSection, KapiContextSectionsProps } from "./KapiContextPanel";
9
+ export { KapiCollapsiblePanel, KapiCollapsiblePanelStripItem, DEFAULT_COLLAPSIBLE_PANEL_LABELS } from "./KapiCollapsiblePanel";
10
+ export type { KapiCollapsiblePanelLabels, KapiCollapsiblePanelProps, KapiCollapsiblePanelSide, KapiCollapsiblePanelStripItemProps } from "./KapiCollapsiblePanel";
11
+ export { KapiTabPanel, KapiTabs } from "./KapiTabs";
12
+ export type { KapiTabItem, KapiTabPanelProps, KapiTabsProps } from "./KapiTabs";
13
+ export { nextTabId, tabClasses, tabId, tabPanelId } from "./tabsLogic";
14
+ export { KapiBreadcrumb, DEFAULT_BREADCRUMB_LABELS } from "./KapiBreadcrumb";
15
+ export type { KapiBreadcrumbItem, KapiBreadcrumbLabels, KapiBreadcrumbProps } from "./KapiBreadcrumb";
16
+ export { breadcrumbKinds } from "./breadcrumbLogic";
17
+ export type { KapiBreadcrumbItemKind } from "./breadcrumbLogic";
18
+ export { KapiAccordion } from "./KapiAccordion";
19
+ export type { KapiAccordionItem, KapiAccordionProps } from "./KapiAccordion";
20
+ export { normalizeOpenIds, toggleOpenId } from "./accordionLogic";
21
+ export { KapiTree, DEFAULT_TREE_LABELS } from "./KapiTree";
22
+ export type { KapiTreeLabels, KapiTreeProps } from "./KapiTree";
23
+ export type { KapiTreeNode } from "./treeLogic";
24
+ export { KapiFilterChips, DEFAULT_FILTER_CHIPS_LABELS } from "./KapiFilterChips";
25
+ export type { KapiFilterChipsLabels, KapiFilterChipsProps } from "./KapiFilterChips";
26
+ export { filterChipClasses, activeChipIndex, nextChipIndex, chipAriaLabel } from "./filterChipsLogic";
27
+ export type { KapiFilterChipItem, KapiFilterChipTone } from "./filterChipsLogic";
28
+ export { useKapiPanelMini } from "./panelMini";
29
+ export type { KapiPanelMiniState } from "./panelMini";
30
+ export type { KapiPanelCollapsedMode } from "./panelMiniLogic";
31
+ export { KapiNavBadge } from "./KapiNavBadge";
32
+ export type { KapiNavBadgeProps } from "./KapiNavBadge";
33
+ export { NAV_BADGE_MAX, NAV_BADGE_PANEL_MAX, navBadgeA11yText, navBadgeView } from "./navBadgeLogic";
34
+ export type { KapiNavBadgeValue, KapiNavBadgeView } from "./navBadgeLogic";
35
+ export { KapiPanelGroup } from "./KapiPanelGroup";
36
+ export type { KapiPanelGroupItem, KapiPanelGroupProps } from "./KapiPanelGroup";
37
+ export { panelGroupClasses, resolveOpen, formatCount, PANEL_GROUP_COUNT_MAX } from "./panelGroupLogic";
38
+ export { canCollapse, ctxPanelClasses, resolveCollapsed } from "./contextPanelLogic";
39
+ export type { KapiContextPanelSide } from "./contextPanelLogic";
@@ -0,0 +1,26 @@
1
+ /** Valor de un badge de navegación: un contador o `"dot"` (aviso sin número). */
2
+ export type KapiNavBadgeValue = number | "dot";
3
+ /** Tope por defecto del contador: por encima se muestra "99+". */
4
+ export declare const NAV_BADGE_MAX = 99;
5
+ /** Tope de los paneles (ítems de panel y grupos plegables), que tienen más ancho: "999+". */
6
+ export declare const NAV_BADGE_PANEL_MAX = 999;
7
+ export type KapiNavBadgeView = {
8
+ kind: "dot";
9
+ } | {
10
+ kind: "count";
11
+ text: string;
12
+ };
13
+ type ViewOptions = {
14
+ /** Tope visual del contador. */
15
+ max?: number | undefined;
16
+ /** Muestra el 0 (por defecto un 0 no dibuja nada: no hay nada que atender). */
17
+ showZero?: boolean | undefined;
18
+ };
19
+ /** Qué dibujar: `null` si no hay badge (sin valor, 0 sin `showZero`, negativo o `NaN`). */
20
+ export declare const navBadgeView: (value: KapiNavBadgeValue | null | undefined, { max, showZero }?: ViewOptions) => KapiNavBadgeView | null;
21
+ /**
22
+ * Texto accesible que se suma al nombre del ítem: `label` si está, si no el número completo (sin tope).
23
+ * `null` si el badge no se dibuja o es un `dot` sin `label` (un punto solo no dice nada a un lector).
24
+ */
25
+ export declare const navBadgeA11yText: (value: KapiNavBadgeValue | null | undefined, label?: string, { showZero }?: Pick<ViewOptions, "showZero">) => string | null;
26
+ export {};
@@ -0,0 +1,16 @@
1
+ //#region src/components/navigation/navBadgeLogic.ts
2
+ var e = 99, t = 999, n = (e, t) => {
3
+ if (Number.isNaN(e)) return null;
4
+ let n = Math.max(0, Math.trunc(e));
5
+ return n === 0 && !t ? null : n;
6
+ }, r = (e, { max: t = 99, showZero: r = !1 } = {}) => {
7
+ if (e == null) return null;
8
+ if (e === "dot") return { kind: "dot" };
9
+ let i = n(e, r);
10
+ return i === null ? null : {
11
+ kind: "count",
12
+ text: i > t ? `${t}+` : String(i)
13
+ };
14
+ }, i = (e, t, { showZero: i = !1 } = {}) => r(e, { showZero: i }) === null ? null : t !== void 0 && t.trim() !== "" ? t : e === "dot" || e == null ? null : String(n(e, i));
15
+ //#endregion
16
+ export { e as NAV_BADGE_MAX, t as NAV_BADGE_PANEL_MAX, i as navBadgeA11yText, r as navBadgeView };
@@ -0,0 +1,15 @@
1
+ /** Tope visual del contador: por encima se muestra "999+". */
2
+ export declare const PANEL_GROUP_COUNT_MAX = 999;
3
+ /** Estado abierto efectivo: el controlado (si existe) gana sobre el interno. */
4
+ export declare const resolveOpen: (controlled: boolean | undefined, internal: boolean) => boolean;
5
+ /** Clases del contenedor raíz. */
6
+ export declare const panelGroupClasses: ({ open, disabled, className }: {
7
+ open: boolean;
8
+ disabled?: boolean | undefined;
9
+ className?: string | undefined;
10
+ }) => string;
11
+ /**
12
+ * Texto del contador. Devuelve `null` si no hay contador (`undefined`/`null`/`NaN`),
13
+ * así el `0` sí se muestra. Los negativos y decimales se normalizan a un entero >= 0.
14
+ */
15
+ export declare const formatCount: (count: number | null | undefined, max?: number) => string | null;
@@ -0,0 +1,13 @@
1
+ //#region src/components/navigation/panelGroupLogic.ts
2
+ var e = 999, t = (e, t) => e ?? t, n = ({ open: e, disabled: t, className: n }) => [
3
+ "kapi-panelgroup",
4
+ e && "kapi-panelgroup--open",
5
+ t && "kapi-panelgroup--disabled",
6
+ n
7
+ ].filter(Boolean).join(" "), r = (e, t = 999) => {
8
+ if (e == null || Number.isNaN(e)) return null;
9
+ let n = Math.max(0, Math.trunc(e));
10
+ return n > t ? `${t}+` : String(n);
11
+ };
12
+ //#endregion
13
+ export { e as PANEL_GROUP_COUNT_MAX, r as formatCount, n as panelGroupClasses, t as resolveOpen };
@@ -0,0 +1,13 @@
1
+ import type { KapiTooltipSide } from "../overlays/KapiTooltip";
2
+ /** Estado del modo mini que el panel plegado comparte con sus ítems. */
3
+ export type KapiPanelMiniState = {
4
+ /** El panel está plegado en modo mini: los ítems se dibujan como ícono + tooltip. */
5
+ mini: boolean;
6
+ /** Despliega el panel (p. ej. al tocar la cabecera de un grupo en mini). */
7
+ expand: () => void;
8
+ /** Lado donde abre el tooltip (hacia el contenido). */
9
+ tooltipSide: KapiTooltipSide;
10
+ };
11
+ export declare const KapiPanelMiniContext: import("react").Context<KapiPanelMiniState>;
12
+ /** Si el panel que contiene al componente está en modo mini (para contenido propio dentro del panel). */
13
+ export declare const useKapiPanelMini: () => KapiPanelMiniState;
@@ -0,0 +1,9 @@
1
+ "use client";
2
+ import { createContext as e, useContext as t } from "react";
3
+ var n = e({
4
+ mini: !1,
5
+ expand: () => {},
6
+ tooltipSide: "right"
7
+ }), r = () => t(n);
8
+ //#endregion
9
+ export { n as KapiPanelMiniContext, r as useKapiPanelMini };
@@ -0,0 +1,19 @@
1
+ import { type ReactNode } from "react";
2
+ /** Cómo queda el panel plegado: `hidden` lo oculta (con botón de reabrir); `mini` deja una tira de íconos. */
3
+ export type KapiPanelCollapsedMode = "hidden" | "mini";
4
+ /** El panel se dibuja en mini sólo plegado, con `collapsedMode="mini"` y fuera de móvil (ahí es un drawer). */
5
+ export declare const resolveMini: ({ collapsedMode, open, mobile }: {
6
+ collapsedMode?: KapiPanelCollapsedMode | undefined;
7
+ open: boolean;
8
+ mobile: boolean;
9
+ }) => boolean;
10
+ /**
11
+ * Texto plano de un `ReactNode` (para el tooltip y la inicial de un ítem cuya etiqueta es JSX). Sólo sigue
12
+ * `children`: una etiqueta que es un componente que arma su texto desde otras props (p. ej. `<T id="…" />`)
13
+ * da "" (en mini conviene pasar la etiqueta como texto o un ícono).
14
+ */
15
+ export declare const nodeText: (node: ReactNode) => string;
16
+ /** Inicial que reemplaza al ícono en mini: primera letra o dígito, en mayúscula. */
17
+ export declare const miniInitial: (text: string) => string;
18
+ /** Texto del tooltip en mini: el título y, si hay, el aviso ("Mi trabajo · 22 esperando tu acción"). */
19
+ export declare const miniTooltipLabel: (title: string, notice: string | null) => string;
@@ -0,0 +1,6 @@
1
+ "use client";
2
+ import { isValidElement as e } from "react";
3
+ //#region src/components/navigation/panelMiniLogic.ts
4
+ var t = ({ collapsedMode: e = "hidden", open: t, mobile: n }) => e === "mini" && !t && !n, n = (t) => t == null || typeof t == "boolean" ? "" : typeof t == "string" || typeof t == "number" ? String(t) : Array.isArray(t) ? t.map(n).join("") : e(t) ? n(t.props.children) : "", r = (e) => e.match(/[\p{L}\p{N}]/u)?.[0]?.toUpperCase() ?? "", i = (e, t) => t === null ? e : `${e} · ${t}`;
5
+ //#endregion
6
+ export { r as miniInitial, i as miniTooltipLabel, n as nodeText, t as resolveMini };
@@ -0,0 +1,25 @@
1
+ /** Estado de un paso de `KapiSteps`. */
2
+ export type KapiStepStatus = "complete" | "current" | "upcoming" | "error";
3
+ /** Disposición de `KapiSteps`. */
4
+ export type KapiStepsOrientation = "vertical" | "horizontal";
5
+ /** Tamaño de `KapiSteps`. */
6
+ export type KapiStepsSize = "sm" | "md";
7
+ export type ResolvedSteps = {
8
+ /** Estado final de cada paso, en el orden de entrada. */
9
+ statuses: KapiStepStatus[];
10
+ /** Índice que lleva `aria-current="step"` (-1 si ninguno). */
11
+ currentIndex: number;
12
+ };
13
+ /**
14
+ * Estados de los pasos. Con `current` (id existente): antes = completo, ese = en curso, después =
15
+ * pendiente. El `status` explícito de un paso gana, salvo `"current"` en otro paso que no es `current`:
16
+ * hay un solo paso en curso (el que lleva `aria-current`), así que ese se resuelve por posición. Sin
17
+ * `current` (o con uno que no existe) sólo cuentan los explícitos y el resto queda pendiente; el paso
18
+ * actual es el primero en curso.
19
+ */
20
+ export declare const resolveSteps: <Id extends string>(steps: readonly {
21
+ id: Id;
22
+ status?: KapiStepStatus | undefined;
23
+ }[], current: Id | undefined) => ResolvedSteps;
24
+ /** Clases de la lista. Pura y exportada para testear. */
25
+ export declare const stepsClasses: (orientation: KapiStepsOrientation, size: KapiStepsSize) => string;
@@ -0,0 +1,10 @@
1
+ //#region src/components/navigation/stepsLogic.ts
2
+ var e = (e, t) => {
3
+ let n = t === void 0 ? -1 : e.findIndex((e) => e.id === t), r = e.map((e, t) => e.status && !(e.status === "current" && n >= 0 && t !== n) ? e.status : n < 0 ? "upcoming" : t < n ? "complete" : t === n ? "current" : "upcoming");
4
+ return {
5
+ statuses: r,
6
+ currentIndex: n >= 0 ? n : r.indexOf("current")
7
+ };
8
+ }, t = (e, t) => `kapi-steps kapi-steps--${e}${t === "sm" ? " kapi-steps--sm" : ""}`;
9
+ //#endregion
10
+ export { e as resolveSteps, t as stepsClasses };
@@ -0,0 +1,12 @@
1
+ export type TabsKey = "ArrowRight" | "ArrowLeft" | "Home" | "End";
2
+ /**
3
+ * Id de la pestaña a enfocar/activar tras una tecla de navegación (patrón WAI-ARIA tabs).
4
+ * Con wrap en los extremos. Devuelve `undefined` si la tecla no navega o no hay pestañas.
5
+ */
6
+ export declare const nextTabId: <Id extends string>(ids: readonly Id[], current: Id, key: string) => Id | undefined;
7
+ /** Clases de una pestaña. Pura y exportada para testear. */
8
+ export declare const tabClasses: (on: boolean) => string;
9
+ /** Id del botón de una pestaña, derivado de la base del grupo. Lo usa `aria-labelledby` del panel. */
10
+ export declare const tabId: (base: string, id: string) => string;
11
+ /** Id del `tabpanel` de una pestaña, derivado de la base del grupo. Lo usa `aria-controls` del tab. */
12
+ export declare const tabPanelId: (base: string, id: string) => string;
@@ -0,0 +1,14 @@
1
+ //#region src/components/navigation/tabsLogic.ts
2
+ var e = (e, t, n) => {
3
+ if (e.length === 0) return;
4
+ let r = e.indexOf(t);
5
+ switch (n) {
6
+ case "ArrowRight": return e[(r + 1) % e.length];
7
+ case "ArrowLeft": return e[(r <= 0 ? e.length : r) - 1];
8
+ case "Home": return e[0];
9
+ case "End": return e[e.length - 1];
10
+ default: return;
11
+ }
12
+ }, t = (e) => e ? "kapi-tab kapi-tab--on" : "kapi-tab", n = (e, t) => `${e}-tab-${t}`, r = (e, t) => `${e}-panel-${t}`;
13
+ //#endregion
14
+ export { e as nextTabId, t as tabClasses, n as tabId, r as tabPanelId };
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Nodo de `KapiTree`. `T` tipa `data` (el dato de negocio que vuelve en los callbacks y en `renderLabel`);
3
+ * `Id` acota los ids (p. ej. una unión de literales).
4
+ */
5
+ export type KapiTreeNode<T = unknown, Id extends string = string> = {
6
+ id: Id;
7
+ /** Texto del nodo: lo muestra, lo nombra y lo usa el type-ahead (el contenido rico va por `renderLabel`). */
8
+ label: string;
9
+ /** Hijos ya cargados. */
10
+ children?: KapiTreeNode<T, Id>[];
11
+ /** Hijos que todavía no se cargaron: el nodo se puede expandir y `onExpand` los trae. */
12
+ hasChildren?: boolean;
13
+ /** Hijos cargándose (con `hasChildren`): muestra el spinner y marca `aria-busy`. */
14
+ loading?: boolean;
15
+ /** Enfocable pero no se selecciona ni se expande. */
16
+ disabled?: boolean;
17
+ /** Dato propio del nodo; el árbol no lo lee, sólo lo devuelve en los callbacks y en `renderLabel`. */
18
+ data?: T;
19
+ };
20
+ /** Un nodo visible (sus ancestros están expandidos), con los datos ARIA de su posición. */
21
+ export type KapiTreeVisibleNode = {
22
+ node: KapiTreeNode;
23
+ level: number;
24
+ setSize: number;
25
+ posInSet: number;
26
+ parentId: string | null;
27
+ };
28
+ export type KapiTreeKeyAction = {
29
+ type: "focus";
30
+ id: string;
31
+ } | {
32
+ type: "expand";
33
+ id: string;
34
+ } | {
35
+ type: "collapse";
36
+ id: string;
37
+ } | {
38
+ type: "select";
39
+ id: string;
40
+ } | {
41
+ type: "expandMany";
42
+ ids: string[];
43
+ };
44
+ /** ¿Se puede expandir? Con hijos cargados o con `hasChildren` (carga diferida). */
45
+ export declare const isExpandable: (node: KapiTreeNode) => boolean;
46
+ /**
47
+ * ¿Hay que pedir los hijos al expandirlo? Sólo un nodo diferido (`hasChildren`) sin `children` cargados y que
48
+ * no esté cargando: es cuando `KapiTree` llama a `onExpand`.
49
+ */
50
+ export declare const needsChildren: (node: KapiTreeNode) => boolean;
51
+ /** Aplana el árbol en el orden visual: sólo entran los hijos de nodos expandidos (con todos sus ancestros abiertos). */
52
+ export declare const flattenVisible: (nodes: ReadonlyArray<KapiTreeNode>, expanded: ReadonlyArray<string>) => KapiTreeVisibleNode[];
53
+ /** Ids de los ancestros de `id`, de la raíz al padre; `null` si el nodo no existe. */
54
+ export declare const findAncestors: (nodes: ReadonlyArray<KapiTreeNode>, id: string) => string[] | null;
55
+ /**
56
+ * Nodo que lleva el `tabIndex=0` (roving): el enfocado si se ve; si quedó oculto, su ancestro visible más
57
+ * cercano; sin foco previo, el primer seleccionado visible y si no, el primero.
58
+ */
59
+ export declare const resolveTabStop: (nodes: ReadonlyArray<KapiTreeNode>, visible: ReadonlyArray<KapiTreeVisibleNode>, focusId: string | null, selected: ReadonlyArray<string>) => string | null;
60
+ /** Alterna un nodo expandido sin mutar. */
61
+ export declare const toggleExpandedId: (expanded: ReadonlyArray<string>, id: string) => string[];
62
+ /** Selección: en simple reemplaza (re-seleccionar no deselecciona); en múltiple alterna. */
63
+ export declare const toggleSelectedId: <Id extends string>(selected: ReadonlyArray<Id>, id: Id, multiple: boolean) => Id[];
64
+ /**
65
+ * Type-ahead: el siguiente nodo visible (después del actual, con vuelta) cuyo texto empieza con `query`, sin
66
+ * mayúsculas ni acentos. Una consulta de varias letras puede quedarse en el actual; repetir la misma letra
67
+ * ("aa") recorre los que empiezan con ella. Contrato: `fromIndex` es el índice del nodo enfocado en `visible`
68
+ * (`0 <= fromIndex < visible.length`); quien llama descarta el caso sin nodo enfocado.
69
+ */
70
+ export declare const matchTypeahead: (visible: ReadonlyArray<KapiTreeVisibleNode>, fromIndex: number, query: string) => string | null;
71
+ /** Teclas que maneja `treeKeyAction` (fuente única: el componente las previene aunque no hagan nada). */
72
+ export declare const TREE_KEYS: ReadonlySet<string>;
73
+ /** Qué hace una tecla sobre el nodo enfocado (WAI-ARIA APG, Tree View); `null` si no le corresponde. */
74
+ export declare const treeKeyAction: ({ key, nodes, visible, focusId, expanded }: {
75
+ key: string;
76
+ nodes: ReadonlyArray<KapiTreeNode>;
77
+ visible: ReadonlyArray<KapiTreeVisibleNode>;
78
+ focusId: string;
79
+ expanded: ReadonlyArray<string>;
80
+ }) => KapiTreeKeyAction | null;
@@ -0,0 +1,91 @@
1
+ import { normalizeText as e } from "../inputs/selectLogic.js";
2
+ //#region src/components/navigation/treeLogic.ts
3
+ var t = (e) => (e.children?.length ?? 0) > 0 || e.hasChildren === !0, n = (e) => e.hasChildren === !0 && e.children === void 0 && e.loading !== !0, r = (e, t) => {
4
+ let n = new Set(t), r = [], i = (e, t, a) => {
5
+ e.forEach((o, s) => {
6
+ r.push({
7
+ node: o,
8
+ level: t,
9
+ setSize: e.length,
10
+ posInSet: s + 1,
11
+ parentId: a
12
+ }), n.has(o.id) && o.children?.length && i(o.children, t + 1, o.id);
13
+ });
14
+ };
15
+ return i(e, 1, null), r;
16
+ }, i = (e, t) => {
17
+ for (let n of e) {
18
+ if (n.id === t) return [];
19
+ if (n.children) {
20
+ let e = i(n.children, t);
21
+ if (e) return [n.id, ...e];
22
+ }
23
+ }
24
+ return null;
25
+ }, a = (e, t, n, r) => {
26
+ let a = new Set(t.map((e) => e.node.id));
27
+ if (n !== null) {
28
+ if (a.has(n)) return n;
29
+ let t = (i(e, n) ?? []).reverse().find((e) => a.has(e));
30
+ if (t) return t;
31
+ }
32
+ return t.find((e) => r.includes(e.node.id))?.node.id ?? t[0]?.node.id ?? null;
33
+ }, o = (e, t, n) => n ? e.includes(t) ? e.filter((e) => e !== t) : [...e, t] : [t], s = (t, n, r) => {
34
+ let i = e(r);
35
+ if (!i || t.length === 0) return null;
36
+ let a = i.length > 1 && [...i].every((e) => e === i[0]), o = a ? i.charAt(0) : i, s = i.length > 1 && !a ? n : n + 1;
37
+ for (let n = 0; n < t.length; n++) {
38
+ let r = t[(s + n) % t.length];
39
+ if (r && e(r.node.label).startsWith(o)) return r.node.id;
40
+ }
41
+ return null;
42
+ }, c = /* @__PURE__ */ new Set([
43
+ "ArrowUp",
44
+ "ArrowDown",
45
+ "ArrowLeft",
46
+ "ArrowRight",
47
+ "Home",
48
+ "End",
49
+ "Enter",
50
+ " ",
51
+ "*"
52
+ ]), l = ({ key: e, nodes: n, visible: r, focusId: i, expanded: a }) => {
53
+ let o = r.findIndex((e) => e.node.id === i), s = r[o];
54
+ if (!s) return null;
55
+ let { node: c } = s, l = a.includes(c.id), u = (e) => e ? {
56
+ type: "focus",
57
+ id: e.node.id
58
+ } : null;
59
+ switch (e) {
60
+ case "ArrowDown": return u(r[o + 1]);
61
+ case "ArrowUp": return u(r[o - 1]);
62
+ case "Home": return u(r[0]);
63
+ case "End": return u(r[r.length - 1]);
64
+ case "ArrowRight": return c.disabled || !t(c) ? null : l ? r[o + 1]?.parentId === c.id ? u(r[o + 1]) : null : {
65
+ type: "expand",
66
+ id: c.id
67
+ };
68
+ case "ArrowLeft": return l && t(c) && !c.disabled ? {
69
+ type: "collapse",
70
+ id: c.id
71
+ } : s.parentId === null ? null : {
72
+ type: "focus",
73
+ id: s.parentId
74
+ };
75
+ case "Enter":
76
+ case " ": return c.disabled ? null : {
77
+ type: "select",
78
+ id: c.id
79
+ };
80
+ case "*": {
81
+ let e = (s.parentId === null ? n : r.find((e) => e.node.id === s.parentId)?.node.children ?? []).filter((e) => !e.disabled && t(e) && !a.includes(e.id)).map((e) => e.id);
82
+ return e.length ? {
83
+ type: "expandMany",
84
+ ids: e
85
+ } : null;
86
+ }
87
+ default: return null;
88
+ }
89
+ };
90
+ //#endregion
91
+ export { c as TREE_KEYS, i as findAncestors, r as flattenVisible, t as isExpandable, s as matchTypeahead, n as needsChildren, a as resolveTabStop, o as toggleSelectedId, l as treeKeyAction };
@@ -0,0 +1,11 @@
1
+ /** Lo mínimo que la lógica necesita de un paso. */
2
+ export type WizardStepLike = {
3
+ validate?: (() => boolean) | undefined;
4
+ };
5
+ export type WizardAdvance = "blocked" | "next" | "finish";
6
+ /** Mantiene el índice dentro de [0, total-1]. Con 0 pasos devuelve 0. */
7
+ export declare const clampStep: (index: number, total: number) => number;
8
+ /** Sólo se puede saltar hacia atrás por click (nunca adelante). */
9
+ export declare const canJumpTo: (target: number, current: number) => boolean;
10
+ /** Qué pasa al apretar "Siguiente": respeta `validate()` del paso actual. */
11
+ export declare const resolveAdvance: (steps: readonly WizardStepLike[], current: number) => WizardAdvance;
@@ -0,0 +1,7 @@
1
+ //#region src/components/navigation/wizardLogic.ts
2
+ var e = (e, t) => t <= 0 ? 0 : Math.min(Math.max(Math.trunc(e) || 0, 0), t - 1), t = (e, t) => e < t, n = (e, t) => {
3
+ let n = e[t];
4
+ return !n || n.validate && !n.validate() ? "blocked" : t >= e.length - 1 ? "finish" : "next";
5
+ };
6
+ //#endregion
7
+ export { t as canJumpTo, e as clampStep, n as resolveAdvance };
@@ -0,0 +1,42 @@
1
+ import { type FormEvent, type ReactNode } from "react";
2
+ import { type KapiOffcanvasProps } from "./KapiOffcanvas";
3
+ /**
4
+ * Textos de los botones (clave `canvasForm` del provider). No hay prop `labels` propia: `labels` es la
5
+ * del `KapiOffcanvas`; por componente se usan `submitLabel`/`cancelLabel`.
6
+ */
7
+ export type KapiCanvasFormLabels = {
8
+ submit: string;
9
+ cancel: string;
10
+ };
11
+ export declare const DEFAULT_CANVAS_FORM_LABELS: KapiCanvasFormLabels;
12
+ export type KapiCanvasFormProps = Omit<KapiOffcanvasProps, "footer" | "children" | "onClose"> & {
13
+ /** Pedido de cierre (X, fondo, Escape, Cancelar). Se ignora mientras se está guardando. */
14
+ onClose: () => void;
15
+ /** Los campos del formulario. */
16
+ children?: ReactNode;
17
+ /**
18
+ * Se llama al enviar el form (botón Guardar o Enter en un campo). Si devuelve una promesa, el
19
+ * formulario queda en estado "guardando" hasta que se resuelva. No cierra el panel: el padre decide.
20
+ */
21
+ onSubmit: (event: FormEvent<HTMLFormElement>) => void | Promise<void>;
22
+ /** Recibe el rechazo de `onSubmit`. Sin esto el error se vuelve a lanzar (queda visible en consola). */
23
+ onError?: (error: unknown) => void;
24
+ /** Texto del botón de envío. Gana sobre la clave `canvasForm.submit` ("Guardar"). */
25
+ submitLabel?: string;
26
+ /** Texto del botón de cancelar. Gana sobre la clave `canvasForm.cancel` ("Cancelar"). */
27
+ cancelLabel?: string;
28
+ /** Deshabilita el envío (p. ej. formulario inválido o sin cambios). */
29
+ submitDisabled?: boolean;
30
+ /** `id` del `<form>`. Se genera uno si no se pasa. */
31
+ formId?: string;
32
+ };
33
+ /**
34
+ * Formulario dentro de un `KapiOffcanvas`: cuerpo con scroll, footer fijo con Cancelar / Guardar
35
+ * y manejo del envío asíncrono.
36
+ *
37
+ * El `<form>` vive en el cuerpo y el footer queda fuera de él en el DOM, así que el botón de envío
38
+ * se asocia con el atributo `form={formId}`: así `type="submit"` envía el form del cuerpo.
39
+ * Mientras `onSubmit` está pendiente: el footer se deshabilita, Guardar muestra un spinner con
40
+ * `aria-busy`, y se ignoran los cierres y los reenvíos.
41
+ */
42
+ export declare const KapiCanvasForm: ({ onClose, children, onSubmit, onError, submitLabel, cancelLabel, submitDisabled, formId, closeOnBackdrop, closeOnEscape, ...offcanvas }: KapiCanvasFormProps) => import("react").JSX.Element;