@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,66 @@
1
+ "use client";
2
+ import { useLabels as e } from "../locale/KapiLocaleProvider.js";
3
+ import { DEFAULT_LINK_LABELS as t } from "../locale/linkLabels.js";
4
+ import { accessCardAffordance as n, accessCardClasses as r, isActivationKey as i, linkAttrs as a } from "./accessCardLogic.js";
5
+ /* empty css */
6
+ import { Fragment as o, jsx as s, jsxs as c } from "react/jsx-runtime";
7
+ import { ChevronRight as l, ExternalLink as u } from "lucide-react";
8
+ //#region src/components/layout/KapiAccessCard.tsx
9
+ var d = ({ icon: d, tone: f, title: p, description: m, external: h = !1, href: g, newTab: _, onClick: v, className: y, style: b, id: x, labels: S }) => {
10
+ let C = e("link", t, S), w = r({
11
+ tone: f,
12
+ className: y
13
+ }), T = /* @__PURE__ */ c(o, { children: [
14
+ /* @__PURE__ */ s("span", {
15
+ className: "kapi-accesscard__icon",
16
+ "aria-hidden": "true",
17
+ children: d
18
+ }),
19
+ /* @__PURE__ */ c("span", {
20
+ className: "kapi-accesscard__txt",
21
+ children: [/* @__PURE__ */ s("span", {
22
+ className: "kapi-accesscard__title",
23
+ children: p
24
+ }), m !== void 0 && /* @__PURE__ */ s("span", {
25
+ className: "kapi-accesscard__desc",
26
+ children: m
27
+ })]
28
+ }),
29
+ n(h) === "external" ? /* @__PURE__ */ s(u, {
30
+ className: "kapi-accesscard__go kapi-accesscard__go--ext",
31
+ size: 16,
32
+ "aria-hidden": "true"
33
+ }) : /* @__PURE__ */ s(l, {
34
+ className: "kapi-accesscard__go",
35
+ size: 16,
36
+ "aria-hidden": "true"
37
+ })
38
+ ] });
39
+ return g === void 0 ? /* @__PURE__ */ s("div", {
40
+ className: w,
41
+ style: b,
42
+ id: x,
43
+ role: "button",
44
+ tabIndex: 0,
45
+ onClick: v,
46
+ onKeyDown: (e) => {
47
+ i(e.key) && (e.preventDefault(), v?.());
48
+ },
49
+ children: T
50
+ }) : /* @__PURE__ */ c("a", {
51
+ className: w,
52
+ style: b,
53
+ id: x,
54
+ href: g,
55
+ ...a({
56
+ external: h,
57
+ newTab: _
58
+ }),
59
+ children: [T, _ && /* @__PURE__ */ c("span", {
60
+ className: "kapi-accesscard__sr",
61
+ children: [" ", C.newTab]
62
+ })]
63
+ });
64
+ };
65
+ //#endregion
66
+ export { d as KapiAccessCard };
@@ -0,0 +1,61 @@
1
+ import { type RefObject } from "react";
2
+ import { type KapiRootProps } from "../rootProps";
3
+ import type { KapiLabelsOverride } from "../labelsLogic";
4
+ export type KapiAccountMenuUser = {
5
+ name: string;
6
+ email: string;
7
+ role?: string;
8
+ /** Pisa las iniciales calculadas desde `name`. */
9
+ initials?: string;
10
+ };
11
+ /** `className`/`style` van al menú (`role="menu"`); `id` también (para el `aria-controls` del disparador). */
12
+ export type KapiAccountMenuProps = KapiRootProps & {
13
+ /** Muestra u oculta el menú (controlado). */
14
+ open: boolean;
15
+ /** Pide cerrar el menú (Escape, click afuera o tras elegir una acción); el foco vuelve al disparador. */
16
+ onClose: () => void;
17
+ /** Usuario de la cabecera: nombre, email, rol e iniciales opcionales. */
18
+ user: KapiAccountMenuUser;
19
+ /** Cantidad de notificaciones sin leer; con 0 o sin valor no se muestra el badge. */
20
+ notificationsCount?: number | undefined;
21
+ /** Click en "Notificaciones"; después el menú se cierra. */
22
+ onNotifications?: (() => void) | undefined;
23
+ /** Click en "Mi perfil"; después el menú se cierra. */
24
+ onProfile?: (() => void) | undefined;
25
+ /** Click en "Configuración"; después el menú se cierra. */
26
+ onConfig?: (() => void) | undefined;
27
+ /** Click en "Cerrar sesión"; después el menú se cierra. */
28
+ onLogout?: (() => void) | undefined;
29
+ /** Textos del menú. */
30
+ labels?: KapiLabelsOverride<KapiAccountMenuLabels> | undefined;
31
+ /**
32
+ * Disparador al que vuelve el foco al cerrar con Escape o al elegir un ítem. Sin él, vuelve al
33
+ * elemento que tenía el foco al abrir (normalmente el botón que lo abrió).
34
+ */
35
+ triggerRef?: RefObject<HTMLElement | null> | undefined;
36
+ };
37
+ export type KapiAccountMenuLabels = {
38
+ notifications: string;
39
+ profile: string;
40
+ config: string;
41
+ theme: string;
42
+ themeLight: string;
43
+ themeDark: string;
44
+ /** Sigue al modo claro/oscuro del sistema operativo. */
45
+ themeSystem: string;
46
+ font: string;
47
+ logout: string;
48
+ /** Nombre accesible del menú. */
49
+ menu: string;
50
+ };
51
+ export declare const DEFAULT_ACCOUNT_MENU_LABELS: KapiAccountMenuLabels;
52
+ /**
53
+ * Menú de cuenta: popover que nace del botón "Cuenta" del rail. Controlado por
54
+ * `open`; el tema y la fuente se leen y cambian con `useKapiTheme`. Se cierra con
55
+ * click afuera (backdrop) o Escape.
56
+ * Patrón WAI-ARIA menu button: al abrir enfoca el primer ítem; flechas (con vuelta), Home/End recorren
57
+ * `menuitem`/`menuitemradio` (modelo compartido `menuKeyboardLogic`); Escape o elegir un ítem cierran y
58
+ * devuelven el foco al disparador; Tab cierra y deja seguir el foco. El disparador lo pone el consumidor
59
+ * (con `aria-haspopup="menu"` y `aria-expanded`).
60
+ */
61
+ export declare function KapiAccountMenu({ open, onClose, user, notificationsCount, onNotifications, onProfile, onConfig, onLogout, labels, id, triggerRef, className, style }: KapiAccountMenuProps): import("react").JSX.Element | null;
@@ -0,0 +1,212 @@
1
+ "use client";
2
+ import { useLabels as e } from "../locale/KapiLocaleProvider.js";
3
+ import { joinClasses as t } from "../rootProps.js";
4
+ import { useExitPresence as n } from "../overlays/useExitPresence.js";
5
+ import { focusedMenuIndex as r, menuKeyIntent as i, nextEnabledIndex as a } from "../overlays/menuKeyboardLogic.js";
6
+ import { initialsFrom as o } from "../display/avatarLogic.js";
7
+ import { useKapiTheme as s } from "../../hooks/useKapiTheme.js";
8
+ import { Fragment as c, jsx as l, jsxs as u } from "react/jsx-runtime";
9
+ import { useEffect as d, useId as f, useRef as p } from "react";
10
+ import { Bell as m, LogOut as h, Settings as g, User as _ } from "lucide-react";
11
+ //#region src/components/layout/KapiAccountMenu.tsx
12
+ var v = {
13
+ notifications: "Notificaciones",
14
+ profile: "Mi perfil",
15
+ config: "Configuración",
16
+ theme: "Tema",
17
+ themeLight: "Claro",
18
+ themeDark: "Oscuro",
19
+ themeSystem: "Sistema",
20
+ font: "Fuente",
21
+ logout: "Cerrar sesión",
22
+ menu: "Menú de cuenta"
23
+ }, y = {
24
+ size: 18,
25
+ strokeWidth: 1.8
26
+ }, b = [{
27
+ key: "nunito",
28
+ label: "Nunito"
29
+ }, {
30
+ key: "roboto",
31
+ label: "Roboto"
32
+ }], x = ({ label: e, children: t }) => {
33
+ let n = f();
34
+ return /* @__PURE__ */ u("div", {
35
+ className: "kapi-acct__row",
36
+ role: "group",
37
+ "aria-labelledby": n,
38
+ children: [/* @__PURE__ */ l("span", {
39
+ id: n,
40
+ className: "kapi-acct__rowlabel",
41
+ children: e
42
+ }), /* @__PURE__ */ l("div", {
43
+ className: "kapi-acct__seg",
44
+ children: t
45
+ })]
46
+ });
47
+ }, S = "[role=\"menuitem\"], [role=\"menuitemradio\"]";
48
+ function C({ open: f, onClose: C, user: w, notificationsCount: T = 0, onNotifications: E, onProfile: D, onConfig: O, onLogout: k, labels: A, id: j, triggerRef: M, className: N, style: P }) {
49
+ let { preference: F, setPreference: I, font: L, setFont: R } = s(), z = e("accountMenu", v, A), B = [
50
+ {
51
+ key: "light",
52
+ label: z.themeLight
53
+ },
54
+ {
55
+ key: "dark",
56
+ label: z.themeDark
57
+ },
58
+ {
59
+ key: "system",
60
+ label: z.themeSystem
61
+ }
62
+ ], V = p(null), H = p(null), { present: U, closing: W } = n(f, V), G = () => Array.from(V.current?.querySelectorAll(S) ?? []), K = () => {
63
+ C(), (M?.current ?? H.current)?.focus();
64
+ }, q = p(K);
65
+ if (q.current = K, d(() => {
66
+ f && (H.current = document.activeElement instanceof HTMLElement ? document.activeElement : null, V.current?.querySelector(S)?.focus());
67
+ }, [f]), d(() => {
68
+ if (!f) return;
69
+ let e = (e) => {
70
+ e.key === "Escape" && (e.preventDefault(), q.current());
71
+ };
72
+ return document.addEventListener("keydown", e), () => document.removeEventListener("keydown", e);
73
+ }, [f]), !U) return null;
74
+ let J = (e) => () => {
75
+ e?.(), K();
76
+ }, Y = (e) => {
77
+ let t = i(e.key);
78
+ if (t.kind === "move") {
79
+ e.preventDefault();
80
+ let n = G();
81
+ n[a(r(document.activeElement), t.dir, n.map((e, t) => t))]?.focus();
82
+ } else t.kind === "close" && t.returnFocus ? (e.preventDefault(), e.stopPropagation(), K()) : t.kind === "close" && !t.returnFocus && ((M?.current ?? H.current)?.focus(), C());
83
+ }, X = 0, Z = () => ({
84
+ tabIndex: -1,
85
+ "data-menu-index": X++
86
+ });
87
+ return /* @__PURE__ */ u(c, { children: [/* @__PURE__ */ l("div", {
88
+ className: "kapi-acct__backdrop",
89
+ "data-closing": W || void 0,
90
+ onClick: C,
91
+ "aria-hidden": "true"
92
+ }), /* @__PURE__ */ u("div", {
93
+ ref: V,
94
+ id: j,
95
+ className: t("kapi-acct", N),
96
+ style: P,
97
+ role: "menu",
98
+ "data-closing": W || void 0,
99
+ inert: W || void 0,
100
+ "aria-label": z.menu,
101
+ onKeyDown: Y,
102
+ children: [/* @__PURE__ */ u("div", {
103
+ className: "kapi-acct__head",
104
+ children: [/* @__PURE__ */ l("span", {
105
+ className: "kapi-acct__av",
106
+ children: w.initials ?? o(w.name)
107
+ }), /* @__PURE__ */ u("div", {
108
+ className: "kapi-acct__who",
109
+ children: [/* @__PURE__ */ l("div", {
110
+ className: "kapi-acct__name",
111
+ children: w.name
112
+ }), /* @__PURE__ */ l("div", {
113
+ className: "kapi-acct__mail",
114
+ children: w.role ? `${w.email} · ${w.role}` : w.email
115
+ })]
116
+ })]
117
+ }), /* @__PURE__ */ u("div", {
118
+ className: "kapi-acct__body",
119
+ children: [
120
+ /* @__PURE__ */ u("button", {
121
+ type: "button",
122
+ role: "menuitem",
123
+ ...Z(),
124
+ className: "kapi-acct__item",
125
+ onClick: J(E),
126
+ children: [/* @__PURE__ */ u("span", {
127
+ className: "kapi-acct__label",
128
+ children: [/* @__PURE__ */ l(m, {
129
+ ...y,
130
+ color: "var(--kapi-ink-3)"
131
+ }), z.notifications]
132
+ }), T > 0 && /* @__PURE__ */ l("span", {
133
+ className: "kapi-acct__badge",
134
+ children: T
135
+ })]
136
+ }),
137
+ /* @__PURE__ */ l("button", {
138
+ type: "button",
139
+ role: "menuitem",
140
+ ...Z(),
141
+ className: "kapi-acct__item",
142
+ onClick: J(D),
143
+ children: /* @__PURE__ */ u("span", {
144
+ className: "kapi-acct__label",
145
+ children: [/* @__PURE__ */ l(_, {
146
+ ...y,
147
+ color: "var(--kapi-ink-3)"
148
+ }), z.profile]
149
+ })
150
+ }),
151
+ /* @__PURE__ */ l("button", {
152
+ type: "button",
153
+ role: "menuitem",
154
+ ...Z(),
155
+ className: "kapi-acct__item",
156
+ onClick: J(O),
157
+ children: /* @__PURE__ */ u("span", {
158
+ className: "kapi-acct__label",
159
+ children: [/* @__PURE__ */ l(g, {
160
+ ...y,
161
+ color: "var(--kapi-ink-3)"
162
+ }), z.config]
163
+ })
164
+ }),
165
+ /* @__PURE__ */ l(x, {
166
+ label: z.theme,
167
+ children: B.map((e) => /* @__PURE__ */ l("button", {
168
+ type: "button",
169
+ role: "menuitemradio",
170
+ ...Z(),
171
+ className: F === e.key ? "on" : "",
172
+ "aria-checked": F === e.key,
173
+ onClick: () => I(e.key),
174
+ children: e.label
175
+ }, e.key))
176
+ }),
177
+ /* @__PURE__ */ l(x, {
178
+ label: z.font,
179
+ children: b.map((e) => /* @__PURE__ */ l("button", {
180
+ type: "button",
181
+ role: "menuitemradio",
182
+ ...Z(),
183
+ className: L === e.key ? "on" : "",
184
+ "aria-checked": L === e.key,
185
+ onClick: () => R(e.key),
186
+ children: e.label
187
+ }, e.key))
188
+ }),
189
+ /* @__PURE__ */ l("div", {
190
+ role: "separator",
191
+ className: "kapi-acct__sep"
192
+ }),
193
+ /* @__PURE__ */ l("button", {
194
+ type: "button",
195
+ role: "menuitem",
196
+ ...Z(),
197
+ className: "kapi-acct__item kapi-acct__item--danger",
198
+ onClick: J(k),
199
+ children: /* @__PURE__ */ u("span", {
200
+ className: "kapi-acct__label",
201
+ children: [/* @__PURE__ */ l(h, {
202
+ ...y,
203
+ color: "var(--kapi-danger)"
204
+ }), z.logout]
205
+ })
206
+ })
207
+ ]
208
+ })]
209
+ })] });
210
+ }
211
+ //#endregion
212
+ export { v as DEFAULT_ACCOUNT_MENU_LABELS, C as KapiAccountMenu };
@@ -0,0 +1,43 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ import "./KapiCard.css";
3
+ type DivProps = Omit<HTMLAttributes<HTMLDivElement>, "title">;
4
+ export type KapiCardHeaderProps = DivProps & {
5
+ /** Título a la izquierda de la cabecera. */
6
+ title?: ReactNode;
7
+ /** Acciones a la derecha (botones, badge, link…). */
8
+ actions?: ReactNode;
9
+ };
10
+ /** Cabecera de card: título a la izquierda, acciones a la derecha. */
11
+ export declare function KapiCardHeader({ title, actions, className, children, ...rest }: KapiCardHeaderProps): import("react").JSX.Element;
12
+ /** Cuerpo de card (ocupa el alto restante). */
13
+ export declare function KapiCardBody({ className, ...rest }: DivProps): import("react").JSX.Element;
14
+ /** Pie de card, con separador superior y acciones alineadas a la derecha. */
15
+ export declare function KapiCardFooter({ className, ...rest }: DivProps): import("react").JSX.Element;
16
+ export type KapiCardProps = DivProps & {
17
+ /** Atajo: si se pasa, renderiza un `KapiCardHeader`. */
18
+ title?: ReactNode;
19
+ /** Atajo: acciones a la derecha de la cabecera (botones, badge, link…). */
20
+ actions?: ReactNode;
21
+ /** Atajo: si se pasa, renderiza un `KapiCardFooter`. */
22
+ footer?: ReactNode;
23
+ /** Sin padding propio: para contenido a sangre (tablas, listas) con header/footer con su padding. */
24
+ flush?: boolean;
25
+ /**
26
+ * La card es contenedor (`container: kapi-card`): bajo 360px de ancho el header apila título y
27
+ * acciones y el pie reparte sus botones. Opt-in porque el contenedor no toma ancho de su contenido
28
+ * (en un flex que la dimensiona por contenido hay que darle ancho). Default `false`.
29
+ */
30
+ responsive?: boolean;
31
+ /**
32
+ * La card responde al puntero: cursor, hover-lift y anillo de foco. Es sólo presentación —
33
+ * el destino lo pone el consumidor (`onClick` con `role`/`tabIndex`, o un enlace adentro).
34
+ * Default `false`: una card de panel estática no se mueve. Sin movimiento, el lift se apaga.
35
+ */
36
+ interactive?: boolean;
37
+ };
38
+ /**
39
+ * Card. Dos formas de uso: props (`title`/`actions`/`footer` + children)
40
+ * o composición con `KapiCardHeader`, `KapiCardBody` y `KapiCardFooter`.
41
+ */
42
+ export declare function KapiCard({ title, actions, footer, flush, responsive, interactive, className, children, ...rest }: KapiCardProps): import("react").JSX.Element;
43
+ export {};
@@ -0,0 +1,53 @@
1
+ "use client";
2
+ import { cardClasses as e, hasCardHeader as t } from "./cardLogic.js";
3
+ /* empty css */
4
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
5
+ //#region src/components/layout/KapiCard.tsx
6
+ function i({ title: e, actions: t, className: i, children: a, ...o }) {
7
+ return /* @__PURE__ */ r("div", {
8
+ className: ["kapi-panelcard__head", i].filter(Boolean).join(" "),
9
+ ...o,
10
+ children: [
11
+ e != null && /* @__PURE__ */ n("span", { children: e }),
12
+ a,
13
+ t != null && /* @__PURE__ */ n("span", {
14
+ className: "kapi-panelcard__actions",
15
+ children: t
16
+ })
17
+ ]
18
+ });
19
+ }
20
+ function a({ className: e, ...t }) {
21
+ return /* @__PURE__ */ n("div", {
22
+ className: ["kapi-card__body", e].filter(Boolean).join(" "),
23
+ ...t
24
+ });
25
+ }
26
+ function o({ className: e, ...t }) {
27
+ return /* @__PURE__ */ n("div", {
28
+ className: ["kapi-card__foot", e].filter(Boolean).join(" "),
29
+ ...t
30
+ });
31
+ }
32
+ function s({ title: s, actions: c, footer: l, flush: u = !1, responsive: d = !1, interactive: f = !1, className: p, children: m, ...h }) {
33
+ let g = t(s, c) || l != null;
34
+ return /* @__PURE__ */ r("div", {
35
+ className: e({
36
+ flush: u,
37
+ responsive: d,
38
+ interactive: f,
39
+ className: p
40
+ }),
41
+ ...h,
42
+ children: [
43
+ t(s, c) && /* @__PURE__ */ n(i, {
44
+ title: s,
45
+ actions: c
46
+ }),
47
+ g ? /* @__PURE__ */ n(a, { children: m }) : m,
48
+ l != null && /* @__PURE__ */ n(o, { children: l })
49
+ ]
50
+ });
51
+ }
52
+ //#endregion
53
+ export { s as KapiCard, a as KapiCardBody, o as KapiCardFooter, i as KapiCardHeader };
@@ -0,0 +1,15 @@
1
+ import type { HTMLAttributes } from "react";
2
+ import { type KapiClusterAlign, type KapiClusterJustify, type KapiGap } from "./layoutPrimitives";
3
+ import "./layout-primitives.css";
4
+ export type KapiClusterProps = HTMLAttributes<HTMLDivElement> & {
5
+ /** Espacio entre hijos: número = px, string = largo CSS. Default 12px. */
6
+ gap?: KapiGap;
7
+ /** Distribución en el eje principal (`justify-content`). */
8
+ justify?: KapiClusterJustify;
9
+ /** Alineación en el eje cruzado (`align-items`). Default `center`. */
10
+ align?: KapiClusterAlign;
11
+ /** Si los hijos saltan de línea. Default `true`. */
12
+ wrap?: boolean;
13
+ };
14
+ /** Fila horizontal que envuelve (flex row wrap). */
15
+ export declare function KapiCluster({ gap, justify, align, wrap, className, style, children, ...rest }: KapiClusterProps): import("react").JSX.Element;
@@ -0,0 +1,21 @@
1
+ "use client";
2
+ import { clusterProps as e } from "./layoutPrimitives.js";
3
+ /* empty css */
4
+ import { jsx as t } from "react/jsx-runtime";
5
+ //#region src/components/layout/KapiCluster.tsx
6
+ function n({ gap: n, justify: r, align: i, wrap: a, className: o, style: s, children: c, ...l }) {
7
+ return /* @__PURE__ */ t("div", {
8
+ ...l,
9
+ ...e({
10
+ gap: n,
11
+ justify: r,
12
+ align: i,
13
+ wrap: a,
14
+ className: o,
15
+ style: s
16
+ }),
17
+ children: c
18
+ });
19
+ }
20
+ //#endregion
21
+ export { n as KapiCluster };
@@ -0,0 +1,45 @@
1
+ import { type ReactNode } from "react";
2
+ import "../navigation/navigation.css";
3
+ import { type KapiPanelCollapsedMode } from "../navigation/panelMiniLogic";
4
+ import { type KapiRootProps } from "../rootProps";
5
+ import type { KapiLabelsOverride } from "../labelsLogic";
6
+ /** `className`/`style`/`id` van al contenedor del panel (`.kapi-ctxslot`), no al backdrop móvil. */
7
+ export type KapiContextSlotProps = KapiRootProps & {
8
+ /** Título del panel (cabecera). */
9
+ title: ReactNode;
10
+ /** Acciones extra en la cabecera, a la izquierda del botón de plegar. */
11
+ actions?: ReactNode;
12
+ /** Contenido del panel (usa KapiPanelItem, KapiPanelSection…). */
13
+ children?: ReactNode;
14
+ /** Estado controlado. Si se omite, el slot maneja su propio estado. */
15
+ open?: boolean;
16
+ /** Estado inicial no controlado. Por defecto: abierto en desktop, cerrado en móvil. */
17
+ defaultOpen?: boolean;
18
+ /** Se llama con el estado nuevo al plegar o desplegar. */
19
+ onOpenChange?: (open: boolean) => void;
20
+ /** Lado del contenido donde se ubica el panel. Por defecto "left". */
21
+ side?: "left" | "right";
22
+ /**
23
+ * Cómo queda plegado en desktop: `hidden` (default) lo oculta y deja el botón de reabrir; `mini` deja una tira
24
+ * de íconos (los `KapiPanelItem`, ítems de `KapiContextSections` y cabeceras de `KapiPanelGroup`) con tooltip
25
+ * y avisos. En móvil siempre es un drawer.
26
+ */
27
+ collapsedMode?: KapiPanelCollapsedMode | undefined;
28
+ /** Nombre accesible del `<aside>` del panel; gana sobre `labels.region`. */
29
+ "aria-label"?: string;
30
+ /** Textos de plegar/desplegar. */
31
+ labels?: KapiLabelsOverride<KapiContextSlotLabels> | undefined;
32
+ };
33
+ /**
34
+ * Panel contextual plegable (OPCIONAL en el shell). Desktop: colapsa su ancho con
35
+ * animación (258px ↔ 44px con botón de reabrir). Móvil: drawer superpuesto con backdrop.
36
+ * Funciona con o sin rail: no depende de él.
37
+ */
38
+ /** `region` es el nombre del panel (sin `aria-label`). */
39
+ export type KapiContextSlotLabels = {
40
+ collapse: string;
41
+ expand: string;
42
+ region: string;
43
+ };
44
+ export declare const DEFAULT_CONTEXT_SLOT_LABELS: KapiContextSlotLabels;
45
+ export declare const KapiContextSlot: ({ title, actions, children, open, defaultOpen, onOpenChange, side, collapsedMode, "aria-label": ariaLabelProp, labels, className, style, id }: KapiContextSlotProps) => import("react").JSX.Element;
@@ -0,0 +1,92 @@
1
+ "use client";
2
+ import { useLabels as e } from "../locale/KapiLocaleProvider.js";
3
+ import { joinClasses as t } from "../rootProps.js";
4
+ /* empty css */
5
+ import { KapiPanelMiniContext as n } from "../navigation/panelMini.js";
6
+ import { resolveMini as r } from "../navigation/panelMiniLogic.js";
7
+ import { SHELL_MOBILE_QUERY as i, matchesQuery as a, useMediaQuery as o } from "../../hooks/useMediaQuery.js";
8
+ import { openOnBreakpointCross as s } from "../../hooks/breakpointOpenLogic.js";
9
+ import { Fragment as c, jsx as l, jsxs as u } from "react/jsx-runtime";
10
+ import { useCallback as d, useEffect as f, useMemo as p, useRef as m, useState as h } from "react";
11
+ import { ChevronsLeft as g, ChevronsRight as _ } from "lucide-react";
12
+ //#region src/components/layout/KapiContextSlot.tsx
13
+ var v = {
14
+ collapse: "Plegar panel",
15
+ expand: "Desplegar panel",
16
+ region: "Panel contextual"
17
+ }, y = ({ title: y, actions: b, children: x, open: S, defaultOpen: C, onOpenChange: w, side: T = "left", collapsedMode: E = "hidden", "aria-label": D, labels: O, className: k, style: A, id: j }) => {
18
+ let M = e("contextSlot", v, O), N = D ?? M.region, P = T === "right", F = P ? _ : g, I = P ? g : _, [L, R] = h(() => C ?? !a("(max-width: 768px)")), z = S ?? L, B = d((e) => {
19
+ S === void 0 && R(e), w?.(e);
20
+ }, [S, w]), V = o(i), H = m(V), U = m(V ? C ?? !0 : z);
21
+ f(() => {
22
+ let e = s(H.current, V, U.current);
23
+ H.current = V, e !== null && e !== z && B(e);
24
+ }, [
25
+ V,
26
+ z,
27
+ B
28
+ ]), f(() => {
29
+ V || (U.current = z);
30
+ }, [V, z]);
31
+ let W = r({
32
+ collapsedMode: E,
33
+ open: z,
34
+ mobile: V
35
+ }), G = p(() => ({
36
+ mini: W,
37
+ expand: () => B(!0),
38
+ tooltipSide: P ? "left" : "right"
39
+ }), [
40
+ W,
41
+ B,
42
+ P
43
+ ]);
44
+ return /* @__PURE__ */ u(c, { children: [/* @__PURE__ */ u("div", {
45
+ id: j,
46
+ className: t("kapi-ctxslot", P && "kapi-ctxslot--right", !z && "is-collapsed", W && "is-mini kapi-navmini", k),
47
+ style: A,
48
+ children: [/* @__PURE__ */ l("div", {
49
+ className: "kapi-ctxslot__inner",
50
+ children: /* @__PURE__ */ u("aside", {
51
+ className: "kapi-ctxpanel",
52
+ "aria-label": N,
53
+ children: [/* @__PURE__ */ u("div", {
54
+ className: "kapi-ctxpanel__head",
55
+ children: [/* @__PURE__ */ l("span", { children: y }), /* @__PURE__ */ u("div", {
56
+ className: "kapi-ctxpanel__actions",
57
+ children: [b, /* @__PURE__ */ l("button", {
58
+ type: "button",
59
+ className: "kapi-paneltoggle",
60
+ onClick: () => B(!1),
61
+ "aria-label": M.collapse,
62
+ children: /* @__PURE__ */ l(F, {
63
+ size: 16,
64
+ strokeWidth: 2,
65
+ "aria-hidden": "true"
66
+ })
67
+ })]
68
+ })]
69
+ }), /* @__PURE__ */ l(n.Provider, {
70
+ value: G,
71
+ children: x
72
+ })]
73
+ })
74
+ }), /* @__PURE__ */ l("button", {
75
+ type: "button",
76
+ className: "kapi-paneltoggle kapi-ctxslot__reopen",
77
+ onClick: () => B(!0),
78
+ "aria-label": M.expand,
79
+ children: /* @__PURE__ */ l(I, {
80
+ size: 16,
81
+ strokeWidth: 2,
82
+ "aria-hidden": "true"
83
+ })
84
+ })]
85
+ }), /* @__PURE__ */ l("div", {
86
+ className: "kapi-ctxslot__backdrop",
87
+ onClick: () => B(!1),
88
+ "aria-hidden": "true"
89
+ })] });
90
+ };
91
+ //#endregion
92
+ export { v as DEFAULT_CONTEXT_SLOT_LABELS, y as KapiContextSlot };
@@ -0,0 +1,16 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ import "./KapiDivider.css";
3
+ export type KapiDividerOrientation = "horizontal" | "vertical";
4
+ /** Atributos nativos (`id`, `style`, `data-*`…) van al separador. */
5
+ export type KapiDividerProps = Omit<HTMLAttributes<HTMLDivElement>, "children"> & {
6
+ /** Dirección de la línea; `vertical` separa elementos en una fila. */
7
+ orientation?: KapiDividerOrientation | undefined;
8
+ /** Texto centrado entre dos líneas (sólo horizontal). */
9
+ label?: ReactNode | undefined;
10
+ /** Clase del separador. */
11
+ className?: string | undefined;
12
+ };
13
+ /** Clases del divisor. Pura y exportada. */
14
+ export declare const dividerClasses: ({ orientation, className }?: Pick<KapiDividerProps, "orientation" | "className">) => string;
15
+ /** Separador horizontal (opcionalmente con texto) o vertical. */
16
+ export declare function KapiDivider({ orientation, label, className, ...rest }: KapiDividerProps): import("react").JSX.Element;
@@ -0,0 +1,41 @@
1
+ "use client";
2
+ import { joinClasses as e } from "../rootProps.js";
3
+ /* empty css */
4
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
5
+ //#region src/components/layout/KapiDivider.tsx
6
+ var r = ({ orientation: e = "horizontal", className: t = "" } = {}) => [
7
+ "kapi-divider",
8
+ e === "vertical" && "kapi-divider--vertical",
9
+ t
10
+ ].filter(Boolean).join(" ");
11
+ function i({ orientation: i = "horizontal", label: a, className: o, ...s }) {
12
+ return i === "horizontal" && a != null ? /* @__PURE__ */ n("div", {
13
+ ...s,
14
+ role: "separator",
15
+ className: e("kapi-divider-labeled", o),
16
+ children: [
17
+ /* @__PURE__ */ t("span", {
18
+ className: "kapi-divider",
19
+ "aria-hidden": !0
20
+ }),
21
+ /* @__PURE__ */ t("span", {
22
+ className: "kapi-divider-labeled__text",
23
+ children: a
24
+ }),
25
+ /* @__PURE__ */ t("span", {
26
+ className: "kapi-divider",
27
+ "aria-hidden": !0
28
+ })
29
+ ]
30
+ }) : /* @__PURE__ */ t("div", {
31
+ ...s,
32
+ role: "separator",
33
+ "aria-orientation": i,
34
+ className: r({
35
+ orientation: i,
36
+ className: o
37
+ })
38
+ });
39
+ }
40
+ //#endregion
41
+ export { i as KapiDivider, r as dividerClasses };