@kapiuara/ui 0.0.0-stage → 0.1.1

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 (425) hide show
  1. package/LICENSE +16 -0
  2. package/README.md +764 -2
  3. package/dist/components/data/KapiPagination.d.ts +36 -0
  4. package/dist/components/data/KapiPagination.js +102 -0
  5. package/dist/components/data/KapiTable.d.ts +245 -0
  6. package/dist/components/data/KapiTable.js +748 -0
  7. package/dist/components/data/KapiTableFilter.d.ts +48 -0
  8. package/dist/components/data/KapiTableFilter.js +81 -0
  9. package/dist/components/data/index.d.ts +10 -0
  10. package/dist/components/data/tableLogic.d.ts +197 -0
  11. package/dist/components/data/tableLogic.js +145 -0
  12. package/dist/components/data/tableResizeLogic.d.ts +28 -0
  13. package/dist/components/data/tableResizeLogic.js +20 -0
  14. package/dist/components/display/KapiAnnotation.d.ts +32 -0
  15. package/dist/components/display/KapiAnnotation.js +130 -0
  16. package/dist/components/display/KapiAvatar.d.ts +27 -0
  17. package/dist/components/display/KapiAvatar.js +43 -0
  18. package/dist/components/display/KapiAvatarGroup.d.ts +19 -0
  19. package/dist/components/display/KapiAvatarGroup.js +38 -0
  20. package/dist/components/display/KapiBadge.d.ts +21 -0
  21. package/dist/components/display/KapiBadge.js +28 -0
  22. package/dist/components/display/KapiComment.d.ts +27 -0
  23. package/dist/components/display/KapiComment.js +66 -0
  24. package/dist/components/display/KapiCommentComposer.d.ts +49 -0
  25. package/dist/components/display/KapiCommentComposer.js +76 -0
  26. package/dist/components/display/KapiDescriptionList.d.ts +19 -0
  27. package/dist/components/display/KapiDescriptionList.js +35 -0
  28. package/dist/components/display/KapiFileItem.d.ts +39 -0
  29. package/dist/components/display/KapiFileItem.js +74 -0
  30. package/dist/components/display/KapiFileViewer.d.ts +51 -0
  31. package/dist/components/display/KapiFileViewer.js +107 -0
  32. package/dist/components/display/KapiIconTile.d.ts +16 -0
  33. package/dist/components/display/KapiIconTile.js +29 -0
  34. package/dist/components/display/KapiStat.d.ts +24 -0
  35. package/dist/components/display/KapiStat.js +41 -0
  36. package/dist/components/display/KapiTag.d.ts +27 -0
  37. package/dist/components/display/KapiTag.js +44 -0
  38. package/dist/components/display/KapiTimeline.d.ts +15 -0
  39. package/dist/components/display/KapiTimeline.js +30 -0
  40. package/dist/components/display/annotationLogic.d.ts +26 -0
  41. package/dist/components/display/annotationLogic.js +17 -0
  42. package/dist/components/display/avatarGroupLogic.d.ts +14 -0
  43. package/dist/components/display/avatarGroupLogic.js +13 -0
  44. package/dist/components/display/avatarLogic.d.ts +5 -0
  45. package/dist/components/display/avatarLogic.js +9 -0
  46. package/dist/components/display/commentLogic.d.ts +18 -0
  47. package/dist/components/display/commentLogic.js +7 -0
  48. package/dist/components/display/fileItemLogic.d.ts +9 -0
  49. package/dist/components/display/fileItemLogic.js +12 -0
  50. package/dist/components/display/iconTileLogic.d.ts +13 -0
  51. package/dist/components/display/iconTileLogic.js +13 -0
  52. package/dist/components/display/index.d.ts +40 -0
  53. package/dist/components/display/statLogic.d.ts +10 -0
  54. package/dist/components/display/statLogic.js +10 -0
  55. package/dist/components/display/tagLogic.d.ts +11 -0
  56. package/dist/components/display/tagLogic.js +10 -0
  57. package/dist/components/display/timelineLogic.d.ts +5 -0
  58. package/dist/components/display/timelineLogic.js +4 -0
  59. package/dist/components/feedback/KapiAlert.d.ts +28 -0
  60. package/dist/components/feedback/KapiAlert.js +53 -0
  61. package/dist/components/feedback/KapiBulkBar.d.ts +30 -0
  62. package/dist/components/feedback/KapiBulkBar.js +34 -0
  63. package/dist/components/feedback/KapiCountdown.d.ts +26 -0
  64. package/dist/components/feedback/KapiCountdown.js +43 -0
  65. package/dist/components/feedback/KapiEmpty.d.ts +14 -0
  66. package/dist/components/feedback/KapiEmpty.js +31 -0
  67. package/dist/components/feedback/KapiFab.d.ts +34 -0
  68. package/dist/components/feedback/KapiFab.js +116 -0
  69. package/dist/components/feedback/KapiOfflineBanner.d.ts +25 -0
  70. package/dist/components/feedback/KapiOfflineBanner.js +40 -0
  71. package/dist/components/feedback/KapiProgress.d.ts +24 -0
  72. package/dist/components/feedback/KapiProgress.js +94 -0
  73. package/dist/components/feedback/KapiSkeleton.d.ts +12 -0
  74. package/dist/components/feedback/KapiSkeleton.js +16 -0
  75. package/dist/components/feedback/KapiToastContainer.d.ts +16 -0
  76. package/dist/components/feedback/KapiToastContainer.js +81 -0
  77. package/dist/components/feedback/KapiTour.d.ts +40 -0
  78. package/dist/components/feedback/KapiTour.js +157 -0
  79. package/dist/components/feedback/KapiUnsavedBar.d.ts +35 -0
  80. package/dist/components/feedback/KapiUnsavedBar.js +47 -0
  81. package/dist/components/feedback/bulkBarLogic.d.ts +2 -0
  82. package/dist/components/feedback/bulkBarLogic.js +7 -0
  83. package/dist/components/feedback/countdownLogic.d.ts +74 -0
  84. package/dist/components/feedback/countdownLogic.js +70 -0
  85. package/dist/components/feedback/fabLogic.d.ts +17 -0
  86. package/dist/components/feedback/fabLogic.js +10 -0
  87. package/dist/components/feedback/index.d.ts +33 -0
  88. package/dist/components/feedback/offlineBannerLogic.d.ts +10 -0
  89. package/dist/components/feedback/offlineBannerLogic.js +8 -0
  90. package/dist/components/feedback/progressLogic.d.ts +17 -0
  91. package/dist/components/feedback/progressLogic.js +16 -0
  92. package/dist/components/feedback/toastStore.d.ts +62 -0
  93. package/dist/components/feedback/toastStore.js +38 -0
  94. package/dist/components/feedback/tourLogic.d.ts +64 -0
  95. package/dist/components/feedback/tourLogic.js +31 -0
  96. package/dist/components/feedback/unsavedBarLogic.d.ts +2 -0
  97. package/dist/components/feedback/unsavedBarLogic.js +8 -0
  98. package/dist/components/inputs/KapiAutocomplete.d.ts +81 -0
  99. package/dist/components/inputs/KapiAutocomplete.js +205 -0
  100. package/dist/components/inputs/KapiButton.d.ts +23 -0
  101. package/dist/components/inputs/KapiButton.js +25 -0
  102. package/dist/components/inputs/KapiCalendar.d.ts +35 -0
  103. package/dist/components/inputs/KapiCalendar.js +60 -0
  104. package/dist/components/inputs/KapiCalendarGrid.d.ts +29 -0
  105. package/dist/components/inputs/KapiCalendarGrid.js +65 -0
  106. package/dist/components/inputs/KapiCheckCard.d.ts +28 -0
  107. package/dist/components/inputs/KapiCheckCard.js +41 -0
  108. package/dist/components/inputs/KapiCheckbox.d.ts +7 -0
  109. package/dist/components/inputs/KapiCheckbox.js +5 -0
  110. package/dist/components/inputs/KapiDatePicker.d.ts +46 -0
  111. package/dist/components/inputs/KapiDatePicker.js +189 -0
  112. package/dist/components/inputs/KapiDateRangePicker.d.ts +49 -0
  113. package/dist/components/inputs/KapiDateRangePicker.js +179 -0
  114. package/dist/components/inputs/KapiFacetedSearch.d.ts +45 -0
  115. package/dist/components/inputs/KapiFacetedSearch.js +188 -0
  116. package/dist/components/inputs/KapiField.d.ts +33 -0
  117. package/dist/components/inputs/KapiField.js +60 -0
  118. package/dist/components/inputs/KapiFileUpload.d.ts +58 -0
  119. package/dist/components/inputs/KapiFileUpload.js +134 -0
  120. package/dist/components/inputs/KapiIconButton.d.ts +13 -0
  121. package/dist/components/inputs/KapiIconButton.js +16 -0
  122. package/dist/components/inputs/KapiInput.d.ts +92 -0
  123. package/dist/components/inputs/KapiInput.js +123 -0
  124. package/dist/components/inputs/KapiInputGroup.d.ts +37 -0
  125. package/dist/components/inputs/KapiInputGroup.js +29 -0
  126. package/dist/components/inputs/KapiMaskedInput.d.ts +52 -0
  127. package/dist/components/inputs/KapiMaskedInput.js +78 -0
  128. package/dist/components/inputs/KapiNumberStepper.d.ts +44 -0
  129. package/dist/components/inputs/KapiNumberStepper.js +100 -0
  130. package/dist/components/inputs/KapiRadio.d.ts +7 -0
  131. package/dist/components/inputs/KapiRadio.js +5 -0
  132. package/dist/components/inputs/KapiRating.d.ts +55 -0
  133. package/dist/components/inputs/KapiRating.js +99 -0
  134. package/dist/components/inputs/KapiSegmented.d.ts +41 -0
  135. package/dist/components/inputs/KapiSegmented.js +83 -0
  136. package/dist/components/inputs/KapiSelect.d.ts +109 -0
  137. package/dist/components/inputs/KapiSelect.js +443 -0
  138. package/dist/components/inputs/KapiSlider.d.ts +42 -0
  139. package/dist/components/inputs/KapiSlider.js +70 -0
  140. package/dist/components/inputs/KapiSwitch.d.ts +13 -0
  141. package/dist/components/inputs/KapiSwitch.js +28 -0
  142. package/dist/components/inputs/KapiTagInput.d.ts +79 -0
  143. package/dist/components/inputs/KapiTagInput.js +115 -0
  144. package/dist/components/inputs/KapiTextarea.d.ts +32 -0
  145. package/dist/components/inputs/KapiTextarea.js +67 -0
  146. package/dist/components/inputs/asyncSelectLogic.d.ts +42 -0
  147. package/dist/components/inputs/asyncSelectLogic.js +46 -0
  148. package/dist/components/inputs/autocompleteLogic.d.ts +73 -0
  149. package/dist/components/inputs/autocompleteLogic.js +67 -0
  150. package/dist/components/inputs/checkControl.d.ts +20 -0
  151. package/dist/components/inputs/checkControl.js +31 -0
  152. package/dist/components/inputs/datePickerLogic.d.ts +92 -0
  153. package/dist/components/inputs/datePickerLogic.js +174 -0
  154. package/dist/components/inputs/dateRangeLogic.d.ts +31 -0
  155. package/dist/components/inputs/dateRangeLogic.js +44 -0
  156. package/dist/components/inputs/facetedSearchLogic.d.ts +69 -0
  157. package/dist/components/inputs/facetedSearchLogic.js +39 -0
  158. package/dist/components/inputs/fieldLogic.d.ts +67 -0
  159. package/dist/components/inputs/fieldLogic.js +35 -0
  160. package/dist/components/inputs/fileUploadLogic.d.ts +13 -0
  161. package/dist/components/inputs/fileUploadLogic.js +9 -0
  162. package/dist/components/inputs/index.d.ts +55 -0
  163. package/dist/components/inputs/inputGroupLogic.d.ts +22 -0
  164. package/dist/components/inputs/inputGroupLogic.js +9 -0
  165. package/dist/components/inputs/inputLogic.d.ts +25 -0
  166. package/dist/components/inputs/inputLogic.js +10 -0
  167. package/dist/components/inputs/maskLogic.d.ts +34 -0
  168. package/dist/components/inputs/maskLogic.js +57 -0
  169. package/dist/components/inputs/numberStepLogic.d.ts +14 -0
  170. package/dist/components/inputs/numberStepLogic.js +21 -0
  171. package/dist/components/inputs/ratingLogic.d.ts +9 -0
  172. package/dist/components/inputs/ratingLogic.js +22 -0
  173. package/dist/components/inputs/segmentedLogic.d.ts +6 -0
  174. package/dist/components/inputs/segmentedLogic.js +14 -0
  175. package/dist/components/inputs/selectLogic.d.ts +89 -0
  176. package/dist/components/inputs/selectLogic.js +82 -0
  177. package/dist/components/inputs/sliderLogic.d.ts +9 -0
  178. package/dist/components/inputs/sliderLogic.js +17 -0
  179. package/dist/components/inputs/tagInputLogic.d.ts +40 -0
  180. package/dist/components/inputs/tagInputLogic.js +40 -0
  181. package/dist/components/inputs/textareaLogic.d.ts +17 -0
  182. package/dist/components/inputs/textareaLogic.js +13 -0
  183. package/dist/components/inputs/useCalendarFocus.d.ts +13 -0
  184. package/dist/components/inputs/useCalendarFocus.js +25 -0
  185. package/dist/components/inputs/useDatePopSide.d.ts +15 -0
  186. package/dist/components/inputs/useDatePopSide.js +20 -0
  187. package/dist/components/labelsLogic.d.ts +6 -0
  188. package/dist/components/labelsLogic.js +11 -0
  189. package/dist/components/layout/KapiAccessCard.d.ts +40 -0
  190. package/dist/components/layout/KapiAccessCard.js +66 -0
  191. package/dist/components/layout/KapiAccountMenu.d.ts +61 -0
  192. package/dist/components/layout/KapiAccountMenu.js +212 -0
  193. package/dist/components/layout/KapiCard.d.ts +43 -0
  194. package/dist/components/layout/KapiCard.js +53 -0
  195. package/dist/components/layout/KapiCluster.d.ts +15 -0
  196. package/dist/components/layout/KapiCluster.js +21 -0
  197. package/dist/components/layout/KapiContextSlot.d.ts +45 -0
  198. package/dist/components/layout/KapiContextSlot.js +92 -0
  199. package/dist/components/layout/KapiDivider.d.ts +16 -0
  200. package/dist/components/layout/KapiDivider.js +41 -0
  201. package/dist/components/layout/KapiGrid.d.ts +19 -0
  202. package/dist/components/layout/KapiGrid.js +25 -0
  203. package/dist/components/layout/KapiNotificationBell.d.ts +75 -0
  204. package/dist/components/layout/KapiNotificationBell.js +196 -0
  205. package/dist/components/layout/KapiPageHeader.d.ts +28 -0
  206. package/dist/components/layout/KapiPageHeader.js +47 -0
  207. package/dist/components/layout/KapiPanelParts.d.ts +35 -0
  208. package/dist/components/layout/KapiPanelParts.js +63 -0
  209. package/dist/components/layout/KapiRail.d.ts +40 -0
  210. package/dist/components/layout/KapiRail.js +102 -0
  211. package/dist/components/layout/KapiScrollArea.d.ts +40 -0
  212. package/dist/components/layout/KapiScrollArea.js +49 -0
  213. package/dist/components/layout/KapiShell.d.ts +40 -0
  214. package/dist/components/layout/KapiShell.js +48 -0
  215. package/dist/components/layout/KapiStack.d.ts +11 -0
  216. package/dist/components/layout/KapiStack.js +19 -0
  217. package/dist/components/layout/accessCardLogic.d.ts +18 -0
  218. package/dist/components/layout/accessCardLogic.js +11 -0
  219. package/dist/components/layout/cardLogic.d.ts +9 -0
  220. package/dist/components/layout/cardLogic.js +11 -0
  221. package/dist/components/layout/index.d.ts +33 -0
  222. package/dist/components/layout/layoutPrimitives.d.ts +51 -0
  223. package/dist/components/layout/layoutPrimitives.js +58 -0
  224. package/dist/components/layout/notificationBellLogic.d.ts +20 -0
  225. package/dist/components/layout/notificationBellLogic.js +14 -0
  226. package/dist/components/layout/railLogic.d.ts +52 -0
  227. package/dist/components/layout/railLogic.js +16 -0
  228. package/dist/components/locale/KapiLocaleProvider.d.ts +29 -0
  229. package/dist/components/locale/KapiLocaleProvider.js +27 -0
  230. package/dist/components/locale/index.d.ts +5 -0
  231. package/dist/components/locale/labelRegistry.d.ts +110 -0
  232. package/dist/components/locale/linkLabels.d.ts +6 -0
  233. package/dist/components/locale/linkLabels.js +4 -0
  234. package/dist/components/navigation/CtxSlidingList.d.ts +11 -0
  235. package/dist/components/navigation/CtxSlidingList.js +24 -0
  236. package/dist/components/navigation/KapiAccordion.d.ts +24 -0
  237. package/dist/components/navigation/KapiAccordion.js +68 -0
  238. package/dist/components/navigation/KapiBreadcrumb.d.ts +23 -0
  239. package/dist/components/navigation/KapiBreadcrumb.js +32 -0
  240. package/dist/components/navigation/KapiCollapsiblePanel.d.ts +63 -0
  241. package/dist/components/navigation/KapiCollapsiblePanel.js +83 -0
  242. package/dist/components/navigation/KapiContextPanel.d.ts +117 -0
  243. package/dist/components/navigation/KapiContextPanel.js +265 -0
  244. package/dist/components/navigation/KapiFilterChips.d.ts +30 -0
  245. package/dist/components/navigation/KapiFilterChips.js +40 -0
  246. package/dist/components/navigation/KapiNavBadge.d.ts +26 -0
  247. package/dist/components/navigation/KapiNavBadge.js +33 -0
  248. package/dist/components/navigation/KapiPanelGroup.d.ts +69 -0
  249. package/dist/components/navigation/KapiPanelGroup.js +149 -0
  250. package/dist/components/navigation/KapiSteps.d.ts +43 -0
  251. package/dist/components/navigation/KapiSteps.js +63 -0
  252. package/dist/components/navigation/KapiTabs.d.ts +56 -0
  253. package/dist/components/navigation/KapiTabs.js +81 -0
  254. package/dist/components/navigation/KapiTree.d.ts +56 -0
  255. package/dist/components/navigation/KapiTree.js +157 -0
  256. package/dist/components/navigation/KapiWizard.d.ts +49 -0
  257. package/dist/components/navigation/KapiWizard.js +104 -0
  258. package/dist/components/navigation/MiniNavItem.d.ts +35 -0
  259. package/dist/components/navigation/MiniNavItem.js +57 -0
  260. package/dist/components/navigation/accordionLogic.d.ts +4 -0
  261. package/dist/components/navigation/accordionLogic.js +4 -0
  262. package/dist/components/navigation/activeItemLogic.d.ts +7 -0
  263. package/dist/components/navigation/activeItemLogic.js +4 -0
  264. package/dist/components/navigation/breadcrumbLogic.d.ts +8 -0
  265. package/dist/components/navigation/breadcrumbLogic.js +4 -0
  266. package/dist/components/navigation/contextPanelLogic.d.ts +27 -0
  267. package/dist/components/navigation/contextPanelLogic.js +11 -0
  268. package/dist/components/navigation/filterChipsLogic.d.ts +23 -0
  269. package/dist/components/navigation/filterChipsLogic.js +20 -0
  270. package/dist/components/navigation/index.d.ts +39 -0
  271. package/dist/components/navigation/navBadgeLogic.d.ts +26 -0
  272. package/dist/components/navigation/navBadgeLogic.js +16 -0
  273. package/dist/components/navigation/panelGroupLogic.d.ts +15 -0
  274. package/dist/components/navigation/panelGroupLogic.js +13 -0
  275. package/dist/components/navigation/panelMini.d.ts +13 -0
  276. package/dist/components/navigation/panelMini.js +9 -0
  277. package/dist/components/navigation/panelMiniLogic.d.ts +19 -0
  278. package/dist/components/navigation/panelMiniLogic.js +6 -0
  279. package/dist/components/navigation/stepsLogic.d.ts +25 -0
  280. package/dist/components/navigation/stepsLogic.js +10 -0
  281. package/dist/components/navigation/tabsLogic.d.ts +12 -0
  282. package/dist/components/navigation/tabsLogic.js +14 -0
  283. package/dist/components/navigation/treeLogic.d.ts +80 -0
  284. package/dist/components/navigation/treeLogic.js +91 -0
  285. package/dist/components/navigation/wizardLogic.d.ts +11 -0
  286. package/dist/components/navigation/wizardLogic.js +7 -0
  287. package/dist/components/overlays/KapiCanvasForm.d.ts +42 -0
  288. package/dist/components/overlays/KapiCanvasForm.js +60 -0
  289. package/dist/components/overlays/KapiCommandPalette.d.ts +58 -0
  290. package/dist/components/overlays/KapiCommandPalette.js +152 -0
  291. package/dist/components/overlays/KapiConfirm.d.ts +48 -0
  292. package/dist/components/overlays/KapiConfirm.js +94 -0
  293. package/dist/components/overlays/KapiContextMenu.d.ts +51 -0
  294. package/dist/components/overlays/KapiContextMenu.js +90 -0
  295. package/dist/components/overlays/KapiDialogHost.d.ts +23 -0
  296. package/dist/components/overlays/KapiDialogHost.js +129 -0
  297. package/dist/components/overlays/KapiDropdown.d.ts +30 -0
  298. package/dist/components/overlays/KapiDropdown.js +84 -0
  299. package/dist/components/overlays/KapiLoading.d.ts +14 -0
  300. package/dist/components/overlays/KapiLoading.js +43 -0
  301. package/dist/components/overlays/KapiMenuButton.d.ts +25 -0
  302. package/dist/components/overlays/KapiMenuButton.js +109 -0
  303. package/dist/components/overlays/KapiModal.d.ts +61 -0
  304. package/dist/components/overlays/KapiModal.js +106 -0
  305. package/dist/components/overlays/KapiOffcanvas.d.ts +96 -0
  306. package/dist/components/overlays/KapiOffcanvas.js +209 -0
  307. package/dist/components/overlays/KapiOffcanvasStack.d.ts +58 -0
  308. package/dist/components/overlays/KapiOffcanvasStack.js +84 -0
  309. package/dist/components/overlays/KapiPhotoView.d.ts +60 -0
  310. package/dist/components/overlays/KapiPhotoView.js +122 -0
  311. package/dist/components/overlays/KapiPopover.d.ts +46 -0
  312. package/dist/components/overlays/KapiPopover.js +68 -0
  313. package/dist/components/overlays/KapiShapeSheet.d.ts +34 -0
  314. package/dist/components/overlays/KapiShapeSheet.js +82 -0
  315. package/dist/components/overlays/KapiSplitModal.d.ts +41 -0
  316. package/dist/components/overlays/KapiSplitModal.js +125 -0
  317. package/dist/components/overlays/KapiTooltip.d.ts +38 -0
  318. package/dist/components/overlays/KapiTooltip.js +105 -0
  319. package/dist/components/overlays/canvasFormLogic.d.ts +18 -0
  320. package/dist/components/overlays/canvasFormLogic.js +16 -0
  321. package/dist/components/overlays/commandPaletteLogic.d.ts +29 -0
  322. package/dist/components/overlays/commandPaletteLogic.js +19 -0
  323. package/dist/components/overlays/dialogStore.d.ts +114 -0
  324. package/dist/components/overlays/dialogStore.js +76 -0
  325. package/dist/components/overlays/dialogUtils.d.ts +72 -0
  326. package/dist/components/overlays/dialogUtils.js +62 -0
  327. package/dist/components/overlays/exitPresenceLogic.d.ts +14 -0
  328. package/dist/components/overlays/exitPresenceLogic.js +5 -0
  329. package/dist/components/overlays/index.d.ts +38 -0
  330. package/dist/components/overlays/menuButtonLogic.d.ts +58 -0
  331. package/dist/components/overlays/menuButtonLogic.js +9 -0
  332. package/dist/components/overlays/menuKeyboardLogic.d.ts +25 -0
  333. package/dist/components/overlays/menuKeyboardLogic.js +30 -0
  334. package/dist/components/overlays/offcanvasCompanion.d.ts +16 -0
  335. package/dist/components/overlays/offcanvasCompanion.js +6 -0
  336. package/dist/components/overlays/offcanvasResize.d.ts +22 -0
  337. package/dist/components/overlays/offcanvasResize.js +10 -0
  338. package/dist/components/overlays/offcanvasSide.d.ts +30 -0
  339. package/dist/components/overlays/offcanvasSide.js +29 -0
  340. package/dist/components/overlays/offcanvasStack.d.ts +76 -0
  341. package/dist/components/overlays/offcanvasStack.js +72 -0
  342. package/dist/components/overlays/overlayPortal.d.ts +9 -0
  343. package/dist/components/overlays/overlayPortal.js +6 -0
  344. package/dist/components/overlays/popoverLogic.d.ts +94 -0
  345. package/dist/components/overlays/popoverLogic.js +47 -0
  346. package/dist/components/overlays/splitModalLayout.d.ts +8 -0
  347. package/dist/components/overlays/splitModalLayout.js +5 -0
  348. package/dist/components/overlays/useExitPresence.d.ts +14 -0
  349. package/dist/components/overlays/useExitPresence.js +34 -0
  350. package/dist/components/overlays/useNativeDialog.d.ts +30 -0
  351. package/dist/components/overlays/useNativeDialog.js +56 -0
  352. package/dist/components/rootProps.d.ts +17 -0
  353. package/dist/components/rootProps.js +4 -0
  354. package/dist/hooks/breakpointOpenLogic.d.ts +7 -0
  355. package/dist/hooks/breakpointOpenLogic.js +4 -0
  356. package/dist/hooks/dateFormat.d.ts +12 -0
  357. package/dist/hooks/dateFormat.js +15 -0
  358. package/dist/hooks/downloadLogic.d.ts +31 -0
  359. package/dist/hooks/downloadLogic.js +85 -0
  360. package/dist/hooks/focusLogic.d.ts +18 -0
  361. package/dist/hooks/focusLogic.js +17 -0
  362. package/dist/hooks/growOriginLogic.d.ts +22 -0
  363. package/dist/hooks/growOriginLogic.js +10 -0
  364. package/dist/hooks/hotkeyLogic.d.ts +22 -0
  365. package/dist/hooks/hotkeyLogic.js +32 -0
  366. package/dist/hooks/index.d.ts +49 -0
  367. package/dist/hooks/kapiRoot.d.ts +16 -0
  368. package/dist/hooks/kapiRoot.js +9 -0
  369. package/dist/hooks/onlineStatusLogic.d.ts +31 -0
  370. package/dist/hooks/onlineStatusLogic.js +28 -0
  371. package/dist/hooks/persistentStateLogic.d.ts +12 -0
  372. package/dist/hooks/persistentStateLogic.js +17 -0
  373. package/dist/hooks/rafThrottle.d.ts +33 -0
  374. package/dist/hooks/rafThrottle.js +33 -0
  375. package/dist/hooks/recentLogic.d.ts +9 -0
  376. package/dist/hooks/recentLogic.js +10 -0
  377. package/dist/hooks/reducedMotion.d.ts +13 -0
  378. package/dist/hooks/reducedMotion.js +5 -0
  379. package/dist/hooks/rightClick.d.ts +37 -0
  380. package/dist/hooks/rightClick.js +30 -0
  381. package/dist/hooks/scrollCollapseLogic.d.ts +12 -0
  382. package/dist/hooks/scrollCollapseLogic.js +4 -0
  383. package/dist/hooks/scrollEdgesLogic.d.ts +49 -0
  384. package/dist/hooks/scrollEdgesLogic.js +19 -0
  385. package/dist/hooks/slidingIndicatorLogic.d.ts +25 -0
  386. package/dist/hooks/slidingIndicatorLogic.js +15 -0
  387. package/dist/hooks/storageLogic.d.ts +15 -0
  388. package/dist/hooks/storageLogic.js +24 -0
  389. package/dist/hooks/unsavedGuardLogic.d.ts +17 -0
  390. package/dist/hooks/unsavedGuardLogic.js +17 -0
  391. package/dist/hooks/useDragScroll.d.ts +12 -0
  392. package/dist/hooks/useDragScroll.js +32 -0
  393. package/dist/hooks/useGlobalRightClick.d.ts +14 -0
  394. package/dist/hooks/useGlobalRightClick.js +35 -0
  395. package/dist/hooks/useGrowOrigin.d.ts +13 -0
  396. package/dist/hooks/useGrowOrigin.js +16 -0
  397. package/dist/hooks/useHotkey.d.ts +15 -0
  398. package/dist/hooks/useHotkey.js +31 -0
  399. package/dist/hooks/useKapiTheme.d.ts +69 -0
  400. package/dist/hooks/useKapiTheme.js +88 -0
  401. package/dist/hooks/useMediaQuery.d.ts +6 -0
  402. package/dist/hooks/useMediaQuery.js +13 -0
  403. package/dist/hooks/useObjectUrl.d.ts +6 -0
  404. package/dist/hooks/useObjectUrl.js +19 -0
  405. package/dist/hooks/useOnlineStatus.d.ts +7 -0
  406. package/dist/hooks/useOnlineStatus.js +7 -0
  407. package/dist/hooks/usePersistentState.d.ts +19 -0
  408. package/dist/hooks/usePersistentState.js +37 -0
  409. package/dist/hooks/usePlacement.d.ts +36 -0
  410. package/dist/hooks/usePlacement.js +84 -0
  411. package/dist/hooks/useRecent.d.ts +17 -0
  412. package/dist/hooks/useRecent.js +16 -0
  413. package/dist/hooks/useScrollCollapse.d.ts +10 -0
  414. package/dist/hooks/useScrollCollapse.js +27 -0
  415. package/dist/hooks/useScrollEdges.d.ts +32 -0
  416. package/dist/hooks/useScrollEdges.js +91 -0
  417. package/dist/hooks/useSlidingIndicator.d.ts +23 -0
  418. package/dist/hooks/useSlidingIndicator.js +51 -0
  419. package/dist/hooks/useUnsavedGuard.d.ts +70 -0
  420. package/dist/hooks/useUnsavedGuard.js +47 -0
  421. package/dist/index.d.ts +12 -0
  422. package/dist/index.js +162 -0
  423. package/dist/kapi.css +2 -0
  424. package/dist/kapi.layered.css +4 -0
  425. package/package.json +87 -4
@@ -0,0 +1,19 @@
1
+ import type { HTMLAttributes } from "react";
2
+ import { type KapiGap } from "./layoutPrimitives";
3
+ import "./layout-primitives.css";
4
+ export type KapiGridProps = HTMLAttributes<HTMLDivElement> & {
5
+ /** Espacio entre celdas: número = px, string = largo CSS. Default 12px. */
6
+ gap?: KapiGap;
7
+ /** Ancho mínimo de columna (número = px, string = largo CSS): `auto-fit` + `minmax`. Default 220px. */
8
+ min?: number | string;
9
+ /** Cantidad fija de columnas. Si se pasan `cols` y `min`, gana `cols`. */
10
+ cols?: number;
11
+ /**
12
+ * Responde al ancho de su contenedor (container queries) en vez del viewport: con `cols`, baja a
13
+ * 2 columnas bajo 768px y a 1 bajo 480px. Envuelve la grilla en un `div.kapi-gridx-cq`
14
+ * (`container: kapi-grid`), que también pueden consultar los hijos. Default `false`.
15
+ */
16
+ responsive?: boolean;
17
+ };
18
+ /** Grilla responsive: columnas fijas (`cols`) o fluidas por ancho mínimo (`min`). */
19
+ export declare function KapiGrid({ gap, min, cols, responsive, className, style, children, ...rest }: KapiGridProps): import("react").JSX.Element;
@@ -0,0 +1,25 @@
1
+ "use client";
2
+ import { gridProps as e } from "./layoutPrimitives.js";
3
+ /* empty css */
4
+ import { jsx as t } from "react/jsx-runtime";
5
+ //#region src/components/layout/KapiGrid.tsx
6
+ function n({ gap: n, min: r, cols: i, responsive: a = !1, className: o, style: s, children: c, ...l }) {
7
+ let u = /* @__PURE__ */ t("div", {
8
+ ...l,
9
+ ...e({
10
+ gap: n,
11
+ min: r,
12
+ cols: i,
13
+ responsive: a,
14
+ className: o,
15
+ style: s
16
+ }),
17
+ children: c
18
+ });
19
+ return a ? /* @__PURE__ */ t("div", {
20
+ className: "kapi-gridx-cq",
21
+ children: u
22
+ }) : u;
23
+ }
24
+ //#endregion
25
+ export { n as KapiGrid };
@@ -0,0 +1,75 @@
1
+ import { type ButtonHTMLAttributes, type MouseEvent as ReactMouseEvent, type ReactNode, type Ref } from "react";
2
+ import "./KapiNotificationBell.css";
3
+ import type { KapiLabelsOverride } from "../labelsLogic";
4
+ /** Una notificación de la campana. */
5
+ export type KapiNotification<Id extends string = string> = {
6
+ /** Identificador estable (clave de la lista y lo que recibe `onItemSelect`). */
7
+ id: Id;
8
+ /** Título (en negrita). */
9
+ title: ReactNode;
10
+ /** Texto secundario debajo del título. */
11
+ description?: ReactNode;
12
+ /** Fecha de la notificación; se muestra relativa ("hace 5 minutos"). */
13
+ date?: Date | string;
14
+ /** Ya leída; sin valor cuenta como no leída (resaltada y en el badge). */
15
+ read?: boolean;
16
+ /** Ícono a la izquierda. */
17
+ icon?: ReactNode;
18
+ /** Con `href` el ítem es un enlace; sin él, un botón. */
19
+ href?: string;
20
+ };
21
+ export type KapiNotificationBellLabels = {
22
+ /** Título del panel y base del nombre accesible de la campana. */
23
+ title: string;
24
+ /** Sufijo del conteo en el nombre accesible: "Notificaciones, 3 sin leer". */
25
+ unread: string;
26
+ /** Marca (solo lectores de pantalla) de cada ítem no leído. */
27
+ unreadItem: string;
28
+ markAllRead: string;
29
+ viewAll: string;
30
+ /** Lista vacía (lo pisa `emptyMessage`). */
31
+ empty: string;
32
+ loading: string;
33
+ };
34
+ export declare const DEFAULT_NOTIFICATION_BELL_LABELS: KapiNotificationBellLabels;
35
+ type OwnKeys = "children" | "type" | "onChange" | "onSelect" | "defaultValue" | "value";
36
+ /** Los atributos nativos (`className`, `style`, `id`, `onClick`, `aria-label`…) van al botón de la campana. */
37
+ export type KapiNotificationBellProps<Id extends string = string> = Omit<ButtonHTMLAttributes<HTMLButtonElement>, OwnKeys> & {
38
+ /** Notificaciones a listar, en el orden en que se muestran. */
39
+ items: KapiNotification<Id>[];
40
+ /** Click (o Enter) en un ítem; después el panel se cierra. El evento permite `preventDefault` en enlaces (router). */
41
+ onItemSelect?: (item: KapiNotification<Id>, event: ReactMouseEvent<HTMLElement>) => void;
42
+ /** Muestra "Marcar todas como leídas" (solo si hay no leídas). */
43
+ onMarkAllRead?: () => void;
44
+ /** Muestra el pie "Ver todas"; después el panel se cierra. */
45
+ onViewAll?: () => void;
46
+ /** Muestra el estado de carga en lugar de la lista. */
47
+ loading?: boolean;
48
+ /** Contenido de la lista vacía; pisa `labels.empty`. */
49
+ emptyMessage?: ReactNode;
50
+ /**
51
+ * Tope del badge: por encima muestra `max+`.
52
+ * @default 9
53
+ */
54
+ max?: number;
55
+ /** Panel abierto (controlado). */
56
+ open?: boolean;
57
+ /** Panel abierto al montar (no controlado). */
58
+ defaultOpen?: boolean;
59
+ /** Cambio de apertura (campana, Escape, click afuera, elegir un ítem o "Ver todas"). */
60
+ onOpenChange?: (open: boolean) => void;
61
+ /** Textos de la campana y el panel. */
62
+ labels?: KapiLabelsOverride<KapiNotificationBellLabels> | undefined;
63
+ /** Hora de referencia de las fechas relativas (tests y capturas deterministas). Sin valor, el reloj real. */
64
+ now?: Date | undefined;
65
+ /** Ref al botón de la campana. */
66
+ ref?: Ref<HTMLButtonElement>;
67
+ };
68
+ /**
69
+ * Campana de notificaciones: botón con badge de no leídas que abre un panel no modal (`role="dialog"`)
70
+ * portaleado a `.kapi` y posicionado con `usePlacement`. Al abrir enfoca la primera notificación;
71
+ * las flechas, Home y End recorren la lista (con vuelta); Escape cierra y devuelve el foco a la campana;
72
+ * click afuera o sacar el foco del panel lo cierran.
73
+ */
74
+ export declare function KapiNotificationBell<Id extends string = string>({ items, onItemSelect, onMarkAllRead, onViewAll, loading, emptyMessage, max, open: openProp, defaultOpen, onOpenChange, labels, now: nowProp, ref, className, onClick, "aria-label": ariaLabel, ...rest }: KapiNotificationBellProps<Id>): import("react").JSX.Element;
75
+ export {};
@@ -0,0 +1,196 @@
1
+ "use client";
2
+ import { assignRef as e, focusLeaves as t } from "../inputs/fieldLogic.js";
3
+ import { useKapiLocale as n, useLabels as r } from "../locale/KapiLocaleProvider.js";
4
+ import { resolveKapiRoot as i } from "../../hooks/kapiRoot.js";
5
+ import { isOutsidePopover as a } from "../overlays/popoverLogic.js";
6
+ import { usePlacement as ee } from "../../hooks/usePlacement.js";
7
+ import { joinClasses as o } from "../rootProps.js";
8
+ import { KapiOverlayPortal as te } from "../overlays/overlayPortal.js";
9
+ import { focusedMenuIndex as ne, menuKeyIntent as s, nextEnabledIndex as c } from "../overlays/menuKeyboardLogic.js";
10
+ import { formatRelativeTime as l } from "../../hooks/dateFormat.js";
11
+ import { NOTIFICATION_BELL_PLACEMENT as u, badgeText as re, bellTriggerLabel as ie, notificationDateTime as ae, unreadCount as oe } from "./notificationBellLogic.js";
12
+ /* empty css */
13
+ import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
14
+ import { useCallback as m, useEffect as h, useId as g, useLayoutEffect as se, useRef as _, useState as v } from "react";
15
+ import { Bell as ce } from "lucide-react";
16
+ //#region src/components/layout/KapiNotificationBell.tsx
17
+ var y = {
18
+ title: "Notificaciones",
19
+ unread: "sin leer",
20
+ unreadItem: "Sin leer",
21
+ markAllRead: "Marcar todas como leídas",
22
+ viewAll: "Ver todas",
23
+ empty: "No tienes notificaciones",
24
+ loading: "Cargando notificaciones…"
25
+ }, b = "[data-menu-index]", x = (e) => (e?.querySelector(b) ?? e)?.focus();
26
+ function S({ items: S, onItemSelect: le, onMarkAllRead: C, onViewAll: w, loading: T = !1, emptyMessage: E, max: D = 9, open: O, defaultOpen: k = !1, onOpenChange: A, labels: j, now: M, ref: N, className: P, onClick: F, "aria-label": I, ...L }) {
27
+ let R = r("notificationBell", y, j), z = n() ?? "es", [B, V] = v(k), H = O ?? B, U = g(), W = g(), G = _(null), K = _(null), [q, ue] = v(null), J = m((e) => {
28
+ O === void 0 && V(e), A?.(e);
29
+ }, [O, A]), Y = _(J);
30
+ h(() => {
31
+ Y.current = J;
32
+ }), se(() => {
33
+ ue(H ? i(G.current) : null);
34
+ }, [H]);
35
+ let { style: de } = ee({
36
+ open: H,
37
+ enabled: !!q,
38
+ anchor: G,
39
+ floatingRef: K,
40
+ hideUntilPlaced: !1,
41
+ ...u
42
+ }), fe = () => Array.from(K.current?.querySelectorAll(b) ?? []), pe = () => x(K.current);
43
+ h(() => {
44
+ H && q && x(K.current);
45
+ }, [H, q]), h(() => {
46
+ if (!H) return;
47
+ let e = (e) => {
48
+ e.key !== "Escape" || e.defaultPrevented || (e.preventDefault(), Y.current(!1), G.current?.focus());
49
+ }, t = (e) => {
50
+ a(e.target, [K.current, G.current]) && Y.current(!1);
51
+ };
52
+ return document.addEventListener("keydown", e), document.addEventListener("pointerdown", t, !0), () => {
53
+ document.removeEventListener("keydown", e), document.removeEventListener("pointerdown", t, !0);
54
+ };
55
+ }, [H]);
56
+ let X = () => {
57
+ J(!1), G.current?.focus();
58
+ }, Z = oe(S), Q = re(Z, D), $ = (e) => {
59
+ F?.(e), !e.defaultPrevented && J(!H);
60
+ }, me = (e) => {
61
+ let t = s(e.key);
62
+ if (t.kind !== "move") return;
63
+ let n = fe();
64
+ n.length !== 0 && (e.preventDefault(), n[c(ne(document.activeElement), t.dir, n.map((e, t) => t))]?.focus());
65
+ }, he = (e) => {
66
+ t(e.relatedTarget, K.current, G.current) && e.relatedTarget && J(!1);
67
+ }, ge = () => {
68
+ C?.(), pe();
69
+ }, _e = M ?? /* @__PURE__ */ new Date();
70
+ return /* @__PURE__ */ p(d, { children: [/* @__PURE__ */ p("button", {
71
+ ...L,
72
+ ref: (t) => {
73
+ G.current = t, e(N, t);
74
+ },
75
+ type: "button",
76
+ className: o("kapi-bell", P),
77
+ "aria-label": I ?? ie(R.title, Z, R.unread),
78
+ "aria-haspopup": "dialog",
79
+ "aria-expanded": H,
80
+ "aria-controls": H ? U : void 0,
81
+ onClick: $,
82
+ children: [/* @__PURE__ */ f(ce, {
83
+ size: 20,
84
+ strokeWidth: 1.8,
85
+ "aria-hidden": "true"
86
+ }), Q && /* @__PURE__ */ f("span", {
87
+ className: "kapi-bell__badge",
88
+ "aria-hidden": "true",
89
+ children: Q
90
+ })]
91
+ }), H && /* @__PURE__ */ f(te, {
92
+ root: q,
93
+ children: /* @__PURE__ */ p("div", {
94
+ ref: K,
95
+ id: U,
96
+ role: "dialog",
97
+ "aria-labelledby": W,
98
+ tabIndex: -1,
99
+ className: "kapi-bell__panel",
100
+ style: de,
101
+ onKeyDown: me,
102
+ onBlur: he,
103
+ children: [
104
+ /* @__PURE__ */ p("div", {
105
+ className: "kapi-bell__head",
106
+ children: [/* @__PURE__ */ f("h2", {
107
+ id: W,
108
+ className: "kapi-bell__title",
109
+ children: R.title
110
+ }), C && Z > 0 && !T && /* @__PURE__ */ f("button", {
111
+ type: "button",
112
+ className: "kapi-bell__link",
113
+ onClick: ge,
114
+ children: R.markAllRead
115
+ })]
116
+ }),
117
+ T ? /* @__PURE__ */ p("div", {
118
+ className: "kapi-bell__state",
119
+ role: "status",
120
+ children: [/* @__PURE__ */ f("span", {
121
+ className: "kapi-spinner kapi-spinner--sm",
122
+ "aria-hidden": "true"
123
+ }), R.loading]
124
+ }) : S.length === 0 ? /* @__PURE__ */ f("div", {
125
+ className: "kapi-bell__state",
126
+ children: E ?? R.empty
127
+ }) : /* @__PURE__ */ f("ul", {
128
+ className: "kapi-bell__list",
129
+ "aria-labelledby": W,
130
+ children: S.map((e, t) => {
131
+ let n = e.date === void 0 ? null : ae(e.date), r = (t) => {
132
+ le?.(e, t), X();
133
+ }, i = /* @__PURE__ */ p(d, { children: [
134
+ e.icon && /* @__PURE__ */ f("span", {
135
+ className: "kapi-bell__icon",
136
+ "aria-hidden": "true",
137
+ children: e.icon
138
+ }),
139
+ /* @__PURE__ */ p("span", {
140
+ className: "kapi-bell__body",
141
+ children: [
142
+ /* @__PURE__ */ f("span", {
143
+ className: "kapi-bell__itemtitle",
144
+ children: e.title
145
+ }),
146
+ e.description && /* @__PURE__ */ f("span", {
147
+ className: "kapi-bell__desc",
148
+ children: e.description
149
+ }),
150
+ n !== null && /* @__PURE__ */ f("time", {
151
+ className: "kapi-bell__date",
152
+ dateTime: n,
153
+ children: l(e.date, _e, z)
154
+ })
155
+ ]
156
+ }),
157
+ !e.read && /* @__PURE__ */ f("span", {
158
+ className: "kapi-bell__dot",
159
+ children: /* @__PURE__ */ f("span", {
160
+ className: "kapi-bell__sr",
161
+ children: R.unreadItem
162
+ })
163
+ })
164
+ ] }), a = {
165
+ className: o("kapi-bell__item", !e.read && "is-unread"),
166
+ "data-menu-index": t,
167
+ onClick: r
168
+ };
169
+ return /* @__PURE__ */ f("li", { children: e.href ? /* @__PURE__ */ f("a", {
170
+ ...a,
171
+ href: e.href,
172
+ children: i
173
+ }) : /* @__PURE__ */ f("button", {
174
+ ...a,
175
+ type: "button",
176
+ children: i
177
+ }) }, e.id);
178
+ })
179
+ }),
180
+ w && /* @__PURE__ */ f("div", {
181
+ className: "kapi-bell__foot",
182
+ children: /* @__PURE__ */ f("button", {
183
+ type: "button",
184
+ className: "kapi-bell__link",
185
+ onClick: () => {
186
+ w(), X();
187
+ },
188
+ children: R.viewAll
189
+ })
190
+ })
191
+ ]
192
+ })
193
+ })] });
194
+ }
195
+ //#endregion
196
+ export { y as DEFAULT_NOTIFICATION_BELL_LABELS, S as KapiNotificationBell };
@@ -0,0 +1,28 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ import "./KapiPageHeader.css";
3
+ /** Atributos nativos (`id`, `style`, `data-*`…) van al `<header>` (no al centinela de scroll). */
4
+ export type KapiPageHeaderProps = Omit<HTMLAttributes<HTMLElement>, "title" | "children"> & {
5
+ /** Título de la página (`<h1>`). */
6
+ title: ReactNode;
7
+ /** Texto secundario bajo el título. */
8
+ subtitle?: ReactNode;
9
+ /** Datos breves bajo el subtítulo (fecha, responsable, contadores…). */
10
+ meta?: ReactNode;
11
+ /** Acciones a la derecha (botones principales de la página). */
12
+ actions?: ReactNode;
13
+ /** Etiqueta/estado inline junto al título. */
14
+ chip?: ReactNode;
15
+ /** Se reduce a una barra compacta al scrollear. */
16
+ collapseOnScroll?: boolean;
17
+ /** `position: sticky; top: 0`. */
18
+ sticky?: boolean;
19
+ /** Contenedor con scroll (default: viewport). */
20
+ scrollRoot?: Element | null;
21
+ /**
22
+ * Se adapta al ancho de su contenedor (container queries, `container: kapi-pageheader`): bajo
23
+ * 560px las acciones pasan debajo del título y el título se achica. Default `true`.
24
+ */
25
+ responsive?: boolean;
26
+ };
27
+ /** Cabecera de página que colapsa a barra sticky compacta al hacer scroll. */
28
+ export declare function KapiPageHeader({ title, subtitle, meta, actions, chip, collapseOnScroll, sticky, scrollRoot, responsive, className, ...rest }: KapiPageHeaderProps): import("react").JSX.Element;
@@ -0,0 +1,47 @@
1
+ "use client";
2
+ import { useScrollCollapse as e } from "../../hooks/useScrollCollapse.js";
3
+ /* empty css */
4
+ import { Fragment as t, jsx as n, jsxs as r } from "react/jsx-runtime";
5
+ //#region src/components/layout/KapiPageHeader.tsx
6
+ function i({ title: i, subtitle: a, meta: o, actions: s, chip: c, collapseOnScroll: l = !0, sticky: u = !0, scrollRoot: d = null, responsive: f = !0, className: p, ...m }) {
7
+ let { collapsed: h, sentinelRef: g } = e({ root: d }), _ = [
8
+ "kapi-pageheader",
9
+ u && "kapi-pageheader--sticky",
10
+ f && "kapi-pageheader--cq",
11
+ l && h && "kapi-pageheader--collapsed",
12
+ p
13
+ ].filter(Boolean).join(" ");
14
+ return /* @__PURE__ */ r(t, { children: [/* @__PURE__ */ n("div", {
15
+ ref: g,
16
+ className: "kapi-pageheader__sentinel",
17
+ "aria-hidden": !0
18
+ }), /* @__PURE__ */ r("header", {
19
+ ...m,
20
+ className: _,
21
+ children: [/* @__PURE__ */ r("div", {
22
+ className: "kapi-pageheader__main",
23
+ children: [
24
+ /* @__PURE__ */ r("div", {
25
+ className: "kapi-pageheader__titlerow",
26
+ children: [/* @__PURE__ */ n("h1", {
27
+ className: "kapi-pageheader__title",
28
+ children: i
29
+ }), c]
30
+ }),
31
+ a && /* @__PURE__ */ n("div", {
32
+ className: "kapi-pageheader__subtitle",
33
+ children: a
34
+ }),
35
+ o && /* @__PURE__ */ n("div", {
36
+ className: "kapi-pageheader__meta",
37
+ children: o
38
+ })
39
+ ]
40
+ }), s && /* @__PURE__ */ n("div", {
41
+ className: "kapi-pageheader__actions",
42
+ children: s
43
+ })]
44
+ })] });
45
+ }
46
+ //#endregion
47
+ export { i as KapiPageHeader };
@@ -0,0 +1,35 @@
1
+ import { type KapiNavBadgeValue } from "../navigation/navBadgeLogic";
2
+ import type { KapiBadgeVariant } from "../display/KapiBadge";
3
+ import type { ButtonHTMLAttributes, HTMLAttributes, ReactNode } from "react";
4
+ import "./KapiPanelParts.css";
5
+ type DivProps = HTMLAttributes<HTMLDivElement>;
6
+ /** Etiqueta de sección dentro del panel (mayúsculas chicas). Atributos nativos al `<div>`. */
7
+ export declare const KapiPanelLabel: ({ className, ...rest }: DivProps) => import("react").JSX.Element;
8
+ /** Separador del panel. Atributos nativos al `<div>`. */
9
+ export declare const KapiPanelDivider: ({ className, ...rest }: Omit<DivProps, "children">) => import("react").JSX.Element;
10
+ /** Texto de ayuda al pie del panel. Atributos nativos al `<div>`. */
11
+ export declare const KapiPanelHint: ({ className, ...rest }: DivProps) => import("react").JSX.Element;
12
+ /** Lista vertical de ítems del panel. Atributos nativos al contenedor `.kapi-ctxlist`. */
13
+ export declare const KapiPanelList: ({ children, ...rest }: Omit<DivProps, "children"> & {
14
+ /** Ítems de la lista (`KapiPanelItem`). */
15
+ children: ReactNode;
16
+ }) => import("react").JSX.Element;
17
+ export type KapiPanelItemProps = Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children"> & {
18
+ /** Marca el ítem actual (resaltado y `aria-current="page"`). */
19
+ active?: boolean;
20
+ /** Contenido a la derecha (badge, contador…). */
21
+ trailing?: ReactNode;
22
+ /** Aviso de atención al final: contador (0 no dibuja nada; tope "999+") o `"dot"` sin número. */
23
+ badge?: KapiNavBadgeValue | undefined;
24
+ /** Color del aviso, como `KapiBadge` (`danger` para vencidos…). @default "primary" */
25
+ badgeTone?: KapiBadgeVariant | undefined;
26
+ /** Texto accesible del aviso (p. ej. "3 trámites vencidos"); sin él se lee el número. */
27
+ badgeLabel?: string | undefined;
28
+ /** Ícono decorativo antes del texto (va en un contenedor `aria-hidden`). */
29
+ icon?: ReactNode;
30
+ /** Texto del ítem. */
31
+ children: ReactNode;
32
+ };
33
+ /** Ítem de navegación del panel contextual. `aria-current` sale de `active`; `icon` va antes del texto. */
34
+ export declare const KapiPanelItem: ({ active, trailing, badge, badgeTone, badgeLabel, icon, className, type, children, ...rest }: KapiPanelItemProps) => import("react").JSX.Element;
35
+ export {};
@@ -0,0 +1,63 @@
1
+ "use client";
2
+ import { joinClasses as e } from "../rootProps.js";
3
+ import { CtxSlidingList as t } from "../navigation/CtxSlidingList.js";
4
+ import "../navigation/navBadgeLogic.js";
5
+ import { KapiNavBadge as n } from "../navigation/KapiNavBadge.js";
6
+ import { useKapiPanelMini as r } from "../navigation/panelMini.js";
7
+ import { MiniNavItem as i } from "../navigation/MiniNavItem.js";
8
+ /* empty css */
9
+ import { jsx as a, jsxs as o } from "react/jsx-runtime";
10
+ //#region src/components/layout/KapiPanelParts.tsx
11
+ var s = ({ className: t, ...n }) => /* @__PURE__ */ a("div", {
12
+ ...n,
13
+ className: e("kapi-ct", t)
14
+ }), c = ({ className: t, ...n }) => /* @__PURE__ */ a("div", {
15
+ ...n,
16
+ className: e("kapi-ctxdivider", t)
17
+ }), l = ({ className: t, ...n }) => /* @__PURE__ */ a("div", {
18
+ ...n,
19
+ className: e("kapi-hint", t)
20
+ }), u = ({ children: e, ...n }) => /* @__PURE__ */ a(t, {
21
+ ...n,
22
+ children: e
23
+ }), d = ({ active: t = !1, trailing: s, badge: c, badgeTone: l, badgeLabel: u, icon: d, className: f, type: p = "button", children: m, ...h }) => {
24
+ let { mini: g } = r();
25
+ return g ? /* @__PURE__ */ a(i, {
26
+ ...h,
27
+ type: p,
28
+ className: f,
29
+ label: m,
30
+ icon: d,
31
+ active: t,
32
+ badge: c,
33
+ badgeTone: l,
34
+ badgeLabel: u
35
+ }) : /* @__PURE__ */ o("button", {
36
+ ...h,
37
+ type: p,
38
+ className: e("kapi-ctxitem", t && "kapi-ctxitem--on", f),
39
+ "aria-current": t ? "page" : void 0,
40
+ children: [
41
+ d == null || d === !1 ? m : /* @__PURE__ */ o("span", {
42
+ className: "kapi-ctxitem__lead",
43
+ children: [/* @__PURE__ */ a("span", {
44
+ className: "kapi-ctxitem__icon",
45
+ "aria-hidden": "true",
46
+ children: d
47
+ }), /* @__PURE__ */ a("span", {
48
+ className: "kapi-ctxitem__label",
49
+ children: m
50
+ })]
51
+ }),
52
+ /* @__PURE__ */ a(n, {
53
+ value: c,
54
+ tone: l,
55
+ label: u,
56
+ max: 999
57
+ }),
58
+ s
59
+ ]
60
+ });
61
+ };
62
+ //#endregion
63
+ export { c as KapiPanelDivider, l as KapiPanelHint, d as KapiPanelItem, s as KapiPanelLabel, u as KapiPanelList };
@@ -0,0 +1,40 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ import { type KapiRailEntry, type KapiRailItem, type KapiRailPinned, type KapiRailSeparator, type KapiRailZone, type KapiRailVariant } from "./railLogic";
3
+ import "./KapiRail.css";
4
+ import { type KapiLinkLabels } from "../locale/linkLabels";
5
+ import type { KapiLabelsOverride } from "../labelsLogic";
6
+ export type { KapiRailEntry, KapiRailItem, KapiRailPinned, KapiRailSeparator, KapiRailVariant, KapiRailZone };
7
+ export type KapiRailLabels = {
8
+ /** Nombre accesible del `<nav>` (sin `aria-label`). */
9
+ navigation: string;
10
+ };
11
+ export declare const DEFAULT_RAIL_LABELS: KapiRailLabels;
12
+ /** Atributos nativos (`id`, `style`, `data-*`…) van al `<nav>`. `Id` se infiere de `items`. */
13
+ export type KapiRailProps<Id extends string = string> = Omit<HTMLAttributes<HTMLElement>, "children" | "onSelect"> & {
14
+ /**
15
+ * Ítems del rail. Intercala `{ separator: true }` para dibujar un divisor entre grupos. Con `pinned: "start"`
16
+ * o `"end"` el ítem queda fijo arriba o abajo; el resto va en la zona del medio, la única que scrollea.
17
+ */
18
+ items: KapiRailEntry<Id>[];
19
+ /** id del ítem activo (controlado por la app: derívalo de tu router). */
20
+ activeId?: Id;
21
+ /** Se llama con el `id` del ítem clickeado (la app navega y actualiza `activeId`). */
22
+ onSelect?: (id: Id) => void;
23
+ /** Marca arriba del rail (logo / inicial). Siempre fija. */
24
+ brand?: ReactNode;
25
+ /** Zona inferior (cuenta, tema…). Se pega al fondo del rail y siempre queda fija. */
26
+ footer?: ReactNode;
27
+ /**
28
+ * `labeled` (default): ícono + nombre debajo, sin tooltip (la etiqueta ya se ve).
29
+ * `compact`: sólo ícono, más angosto; el nombre aparece en un tooltip al hover/foco.
30
+ */
31
+ variant?: KapiRailVariant;
32
+ /** Textos fijos; `newTab` sale de la clave compartida `link`. `aria-label` gana sobre `navigation`. */
33
+ labels?: KapiLabelsOverride<KapiRailLabels & KapiLinkLabels> | undefined;
34
+ };
35
+ /**
36
+ * Rail de navegación (Nav A): ícono + nombre debajo. OPCIONAL en el shell.
37
+ * Es presentacional: no conoce el router; la app pasa `activeId` y `onSelect`.
38
+ * En móvil se convierte en barra inferior (shell.css).
39
+ */
40
+ export declare const KapiRail: <Id extends string = string>({ items, activeId, onSelect, brand, footer, variant, "aria-label": ariaLabel, labels, className, ...rest }: KapiRailProps<Id>) => import("react").JSX.Element;
@@ -0,0 +1,102 @@
1
+ "use client";
2
+ import { useLabels as e } from "../locale/KapiLocaleProvider.js";
3
+ import { joinClasses as t } from "../rootProps.js";
4
+ import { useSlidingIndicator as n } from "../../hooks/useSlidingIndicator.js";
5
+ import { KapiTooltip as r } from "../overlays/KapiTooltip.js";
6
+ import { DEFAULT_LINK_LABELS as i } from "../locale/linkLabels.js";
7
+ import { navBadgeA11yText as a } from "../navigation/navBadgeLogic.js";
8
+ import { KapiNavBadge as o } from "../navigation/KapiNavBadge.js";
9
+ import { isRailSeparator as s, railClasses as c, railItemClasses as l, railShowsTooltip as u, splitRailEntries as d } from "./railLogic.js";
10
+ /* empty css */
11
+ import { jsx as f, jsxs as p } from "react/jsx-runtime";
12
+ import { ExternalLink as m } from "lucide-react";
13
+ //#region src/components/layout/KapiRail.tsx
14
+ var h = { navigation: "Navegación principal" }, g = ({ items: g, activeId: _, onSelect: v, brand: y, footer: b, variant: x = "labeled", "aria-label": S, labels: C, className: w, ...T }) => {
15
+ let E = e("rail", h, C), D = e("link", i, C), O = x === "compact", k = u(x), A = d(g), { containerRef: j, indicatorRef: M } = n({
16
+ active: _ ?? null,
17
+ deps: [g, x],
18
+ findActive: (e) => e.querySelector(".kapi-rail__item[aria-current=\"page\"]")
19
+ }), N = ({ id: e, label: t, icon: n, href: i, external: s, newTab: c, badge: u, badgeTone: d, badgeLabel: h }) => {
20
+ let g = _ === e, y = g ? "page" : void 0, b = a(u, h), x = b === null ? t : `${t} ${b}`, S = O ? x : void 0, C = /* @__PURE__ */ f(o, {
21
+ value: u,
22
+ tone: d,
23
+ label: h,
24
+ placement: "corner",
25
+ announce: !O
26
+ }), w = i === void 0 ? /* @__PURE__ */ p("button", {
27
+ type: "button",
28
+ className: l({ active: g }),
29
+ onClick: () => v?.(e),
30
+ "aria-current": y,
31
+ "aria-label": S,
32
+ children: [
33
+ n,
34
+ !O && t,
35
+ C
36
+ ]
37
+ }, k ? void 0 : e) : /* @__PURE__ */ p("a", {
38
+ className: l({
39
+ active: g,
40
+ link: !0
41
+ }),
42
+ href: i,
43
+ rel: "noopener noreferrer",
44
+ target: c ? "_blank" : void 0,
45
+ "aria-current": y,
46
+ "aria-label": S,
47
+ children: [
48
+ n,
49
+ !O && t,
50
+ C,
51
+ s && /* @__PURE__ */ f(m, {
52
+ className: "kapi-rail__ext",
53
+ size: 12,
54
+ "aria-hidden": "true"
55
+ }),
56
+ c && /* @__PURE__ */ f("span", {
57
+ className: "kapi-rail__sr",
58
+ children: D.newTab
59
+ })
60
+ ]
61
+ }, k ? void 0 : e);
62
+ return k ? /* @__PURE__ */ f(r, {
63
+ label: x,
64
+ children: w
65
+ }, e) : w;
66
+ }, P = (e) => e.map((e, t) => s(e) ? /* @__PURE__ */ f("div", {
67
+ className: "kapi-rail__sep",
68
+ role: "separator",
69
+ "aria-orientation": "horizontal"
70
+ }, e.id ?? `sep-${t}`) : N(e));
71
+ return /* @__PURE__ */ p("nav", {
72
+ ...T,
73
+ className: t(c({ variant: x }), w),
74
+ "aria-label": S ?? E.navigation,
75
+ children: [
76
+ y !== void 0 && /* @__PURE__ */ f("div", {
77
+ className: "kapi-rail__brand",
78
+ children: y
79
+ }),
80
+ A.start.length > 0 && /* @__PURE__ */ f("div", {
81
+ className: "kapi-rail__start",
82
+ children: P(A.start)
83
+ }),
84
+ /* @__PURE__ */ p("div", {
85
+ ref: j,
86
+ className: "kapi-rail__scroll",
87
+ children: [/* @__PURE__ */ f("span", {
88
+ ref: M,
89
+ className: "kapi-rail__indicator",
90
+ "aria-hidden": "true"
91
+ }), P(A.scroll)]
92
+ }),
93
+ A.end.length > 0 && /* @__PURE__ */ f("div", {
94
+ className: "kapi-rail__end",
95
+ children: P(A.end)
96
+ }),
97
+ b
98
+ ]
99
+ });
100
+ };
101
+ //#endregion
102
+ export { h as DEFAULT_RAIL_LABELS, g as KapiRail };