@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,48 @@
1
+ import { type HTMLAttributes, type ReactNode } from "react";
2
+ import { type KapiInputSize } from "../inputs/KapiInput";
3
+ import { type KapiTableFilterState } from "./tableLogic";
4
+ import "./KapiTableFilter.css";
5
+ import type { KapiLabelsOverride } from "../labelsLogic";
6
+ /** Textos de la barra de filtro (los mismos nombres que en `KapiTableLabels`). */
7
+ export type KapiTableFilterLabels = {
8
+ filter: string;
9
+ filterPlaceholder: string;
10
+ filterColumn: string;
11
+ filterAll: string;
12
+ /** Separador del contador "N de M". */
13
+ of: string;
14
+ };
15
+ export declare const DEFAULT_TABLE_FILTER_LABELS: KapiTableFilterLabels;
16
+ /** Atributos nativos (`id`, `style`, `data-*`…) van a la región `role="search"` (el rol es propio). */
17
+ export type KapiTableFilterProps = Omit<HTMLAttributes<HTMLDivElement>, "children" | "onChange" | "role"> & {
18
+ /** Filtro actual (`column: null` = todas las columnas). Controlado. */
19
+ value: KapiTableFilterState;
20
+ /** Se llama al tipear (con `debounce`, si hay) y al elegir columna (al instante). */
21
+ onChange: (filter: KapiTableFilterState) => void;
22
+ /** Columnas para el selector: entran las que no tienen `filterable: false`. */
23
+ columns: ReadonlyArray<{
24
+ key: string;
25
+ label: ReactNode;
26
+ filterable?: boolean;
27
+ }>;
28
+ /** Con filtro activo muestra "N de M" (filas mostradas / total). Sin esto no hay contador. */
29
+ count?: {
30
+ shown: number;
31
+ total: number;
32
+ } | undefined;
33
+ /** Debounce (ms) del texto; `0` emite en cada tecla. Default `0`. */
34
+ debounce?: number | undefined;
35
+ /** Etiqueta visible del campo de texto (lo envuelve en un `KapiField`). Sin ella usa `aria-label`. */
36
+ label?: ReactNode | undefined;
37
+ /** Tamaño de los controles (`sm` · `md` · `lg`). */
38
+ size?: KapiInputSize | undefined;
39
+ /** Textos fijos (clave `tableFilter`). */
40
+ labels?: KapiLabelsOverride<KapiTableFilterLabels> | undefined;
41
+ };
42
+ /**
43
+ * Barra de filtro de tabla: un `KapiInputGroup` con el selector de columna compacto adelante ("Todas"
44
+ * por defecto) y el texto con lupa y botón de limpiar. Es opcional: `KapiTable` la muestra con `filterable`, pero se puede poner en cualquier
45
+ * lugar de la pantalla y conectarla al `filter`/`onFilterChange` de la tabla, o reemplazarla por una
46
+ * UI propia. Con `debounce` el campo va adelante del valor emitido.
47
+ */
48
+ export declare function KapiTableFilter({ value, onChange, columns, count, debounce, label, size, labels, className, ...rest }: KapiTableFilterProps): import("react").JSX.Element;
@@ -0,0 +1,81 @@
1
+ "use client";
2
+ import { KapiField as e } from "../inputs/KapiField.js";
3
+ import { KapiInputGroup as t } from "../inputs/KapiInputGroup.js";
4
+ import { useLabels as n } from "../locale/KapiLocaleProvider.js";
5
+ import { KapiInput as r } from "../inputs/KapiInput.js";
6
+ import { KapiSelect as i } from "../inputs/KapiSelect.js";
7
+ import { joinClasses as a } from "../rootProps.js";
8
+ import { filterColumnOptions as o, isFilterActive as s } from "./tableLogic.js";
9
+ /* empty css */
10
+ import { jsx as c, jsxs as l } from "react/jsx-runtime";
11
+ import { useEffect as u, useId as d, useMemo as f, useRef as p, useState as m } from "react";
12
+ import { Search as h } from "lucide-react";
13
+ //#region src/components/data/KapiTableFilter.tsx
14
+ var g = {
15
+ filter: "Filtrar tabla",
16
+ filterPlaceholder: "Filtrar…",
17
+ filterColumn: "Columna del filtro",
18
+ filterAll: "Todas",
19
+ of: "de"
20
+ }, _ = "\0all", v = (e, t) => e.text === t.text && e.column === t.column;
21
+ function y({ value: y, onChange: b, columns: x, count: S, debounce: C = 0, label: w, size: T = "sm", labels: E, className: D, ...O }) {
22
+ let k = n("tableFilter", g, E), A = f(() => o(x), [x]), [j, M] = m(y), N = p(y), [P, F] = m(y);
23
+ v(P, y) || (F(y), v(N.current, y) || M(y));
24
+ let I = p(void 0);
25
+ u(() => () => clearTimeout(I.current), []);
26
+ let L = (e) => {
27
+ clearTimeout(I.current), N.current = e, b(e);
28
+ }, R = (e, t) => {
29
+ M(e), clearTimeout(I.current), !t && C > 0 ? I.current = setTimeout(() => L(e), C) : L(e);
30
+ }, z = d(), B = /* @__PURE__ */ l(t, {
31
+ size: T,
32
+ className: "kapi-tablefilter__group",
33
+ children: [/* @__PURE__ */ c(i, {
34
+ id: `${z}-col`,
35
+ searchable: !1,
36
+ "aria-label": k.filterColumn,
37
+ className: "kapi-tablefilter__col",
38
+ options: [{
39
+ value: _,
40
+ label: k.filterAll
41
+ }, ...A],
42
+ value: j.column ?? _,
43
+ onChange: (e) => {
44
+ e !== null && R({
45
+ ...j,
46
+ column: e === _ ? null : e
47
+ }, !0);
48
+ }
49
+ }), /* @__PURE__ */ c(r, {
50
+ id: z,
51
+ type: "search",
52
+ "aria-label": w == null ? k.filter : void 0,
53
+ placeholder: k.filterPlaceholder,
54
+ spellCheck: !1,
55
+ startIcon: /* @__PURE__ */ c(h, {}),
56
+ clearable: !0,
57
+ value: j.text,
58
+ onChange: (e) => R({
59
+ ...j,
60
+ text: e.target.value
61
+ }, !1)
62
+ })]
63
+ });
64
+ return /* @__PURE__ */ l("div", {
65
+ ...O,
66
+ className: a("kapi-tablefilter", D),
67
+ role: "search",
68
+ children: [w == null ? B : /* @__PURE__ */ c(e, {
69
+ label: w,
70
+ htmlFor: z,
71
+ className: "kapi-tablefilter__field",
72
+ children: B
73
+ }), /* @__PURE__ */ c("span", {
74
+ className: "kapi-tablefilter__count",
75
+ "aria-live": "polite",
76
+ children: S && s(y) ? `${S.shown} ${k.of} ${S.total}` : ""
77
+ })]
78
+ });
79
+ }
80
+ //#endregion
81
+ export { g as DEFAULT_TABLE_FILTER_LABELS, y as KapiTableFilter };
@@ -0,0 +1,10 @@
1
+ export { KapiTable, DEFAULT_TABLE_LABELS } from "./KapiTable";
2
+ export type { KapiTableColumn, KapiTableCellValue, KapiTableSortDirection, KapiTableSortState, KapiTableSortValue, KapiTableCsvOptions, KapiTableLabels, KapiTableProps } from "./KapiTable";
3
+ export { KapiTableFilter, DEFAULT_TABLE_FILTER_LABELS } from "./KapiTableFilter";
4
+ export type { KapiTableFilterProps, KapiTableFilterLabels } from "./KapiTableFilter";
5
+ export { KapiPagination } from "./KapiPagination";
6
+ export type { KapiPaginationLabels, KapiPaginationProps } from "./KapiPagination";
7
+ export { computePagination, paginateRows, sortRows, sortRowsByColumn, compareSortValues, nextSortState } from "./tableLogic";
8
+ export type { KapiPaginationInfo, KapiPaginationInput, KapiTableSortColumn } from "./tableLogic";
9
+ export { visibleColumnsOf, toggleColumnVisibility, clampColumnWidth, effectiveColumnWidth, resizeColumn, filterRows, filterSearchColumns, filterColumnOptions, isFilterActive, rowMatchesFilter, filterTerms, normalizeFilterText, buildCsv, csvCell } from "./tableLogic";
10
+ export type { KapiTableColumnVisibility, KapiTableColumnWidths, KapiTableFilterState } from "./tableLogic";
@@ -0,0 +1,197 @@
1
+ /** Ancho de la columna de checkboxes (px). Las columnas sticky arrancan después de ésta. */
2
+ export declare const CHECKBOX_COL_WIDTH = 46;
3
+ /** Ancho de la columna del expansor de fila (px). Las columnas sticky arrancan después de ésta. */
4
+ export declare const EXPANDER_COL_WIDTH = 44;
5
+ /** Ancho asumido para una columna sticky sin `width`. */
6
+ export declare const DEFAULT_STICKY_WIDTH = 170;
7
+ /** Filas extra renderizadas arriba/abajo del viewport al virtualizar. */
8
+ export declare const VIRTUAL_BUFFER = 6;
9
+ export type StickyColumnInfo = {
10
+ sticky?: boolean | undefined;
11
+ width?: number | undefined;
12
+ };
13
+ /**
14
+ * `left` acumulado de cada columna sticky (las no-sticky devuelven `undefined`).
15
+ * Arranca en `startOffset` (46 si hay columna de checkboxes, 0 si no).
16
+ */
17
+ export declare const computeStickyOffsets: (columns: ReadonlyArray<StickyColumnInfo>, startOffset?: number, defaultWidth?: number) => Array<number | undefined>;
18
+ /**
19
+ * Índice de la última columna sticky en orden visible (o -1 si no hay ninguna). Sólo esa columna
20
+ * dibuja la sombra del borde sticky↔scroll: las fijas del medio no, así no se apilan sombras.
21
+ */
22
+ export declare const lastStickyIndex: (columns: ReadonlyArray<{
23
+ sticky?: boolean;
24
+ }>) => number;
25
+ export type VisibleRangeInput = {
26
+ total: number;
27
+ rowHeight: number;
28
+ scrollTop: number;
29
+ viewHeight: number;
30
+ buffer?: number | undefined;
31
+ };
32
+ export type VisibleRange = {
33
+ start: number;
34
+ end: number;
35
+ padTop: number;
36
+ padBottom: number;
37
+ };
38
+ /** Rango de filas a renderizar (altura fija) + el relleno que conserva el alto total. */
39
+ export declare const computeVisibleRange: ({ total, rowHeight, scrollTop, viewHeight, buffer }: VisibleRangeInput) => VisibleRange;
40
+ /** Lo que la tabla virtual guarda del scroll: posición y alto visible. */
41
+ export type ScrollWindow = {
42
+ scrollTop: number;
43
+ viewHeight: number;
44
+ };
45
+ /**
46
+ * Próximo estado de scroll de la tabla virtual: devuelve `prev` (misma referencia) mientras el rango
47
+ * de filas no cambie, así el `setState` funcional se saltea y el scroll dentro de una fila no
48
+ * re-renderiza. Sólo cuando entra o sale una fila devuelve `next`.
49
+ */
50
+ export declare const nextScrollWindow: (prev: ScrollWindow, next: ScrollWindow, { total, rowHeight, buffer }: {
51
+ total: number;
52
+ rowHeight: number;
53
+ buffer?: number;
54
+ }) => ScrollWindow;
55
+ export type KapiPaginationInput = {
56
+ page: number;
57
+ pageSize: number;
58
+ total: number;
59
+ };
60
+ export type KapiPaginationInfo = {
61
+ totalPages: number;
62
+ from: number;
63
+ to: number;
64
+ canPrev: boolean;
65
+ canNext: boolean;
66
+ page: number;
67
+ };
68
+ /** Datos del footer de paginación (páginas desde 1). La página se acota al rango válido. */
69
+ export declare const computePagination: ({ page, pageSize, total }: KapiPaginationInput) => KapiPaginationInfo;
70
+ export type KapiTableSortDirection = "asc" | "desc";
71
+ export type KapiTableSortState = {
72
+ key: string;
73
+ direction: KapiTableSortDirection;
74
+ };
75
+ export type KapiTableSortValue = string | number | boolean | Date | null | undefined;
76
+ export declare const safeLocale: (locale?: string) => string | undefined;
77
+ export declare const compareSortValues: (a: KapiTableSortValue, b: KapiTableSortValue, direction?: KapiTableSortDirection, locale?: string) => number;
78
+ /** Ordena sin mutar y de forma estable (empates conservan el orden original). */
79
+ export declare const sortRows: <R>(rows: ReadonlyArray<R>, getValue: (row: R) => KapiTableSortValue, direction: KapiTableSortDirection, locale?: string) => R[];
80
+ /** Lo que `sortRowsByColumn` necesita de una columna (subconjunto de `KapiTableColumn`). */
81
+ export type KapiTableSortColumn<R> = {
82
+ key: string;
83
+ sortable?: boolean | undefined;
84
+ sortValue?: ((row: R) => KapiTableSortValue) | undefined;
85
+ };
86
+ /**
87
+ * Ordena las filas como lo hace la tabla: por `sortValue` de la columna activa o, sin él, por el valor
88
+ * de la celda (`row[key]`). Sin orden, o si la columna no existe o no es `sortable`, devuelve las mismas
89
+ * filas (misma referencia). Para paginar del lado del cliente con `manualSort`:
90
+ * `paginateRows(sortRowsByColumn(rows, columns, sort), page, pageSize)`.
91
+ */
92
+ /** Valor crudo de una celda (`row[key]`). Una sola fuente para el orden, el CSV y el render de KapiTable. */
93
+ export declare const readCell: (row: unknown, key: string) => unknown;
94
+ export declare const sortRowsByColumn: <R>(rows: ReadonlyArray<R>, columns: ReadonlyArray<KapiTableSortColumn<R>>, sort: KapiTableSortState | null | undefined, locale?: string) => ReadonlyArray<R>;
95
+ /** Filas de una página (desde 1). Acota la página y el tamaño igual que `computePagination`. */
96
+ export declare const paginateRows: <R>(rows: ReadonlyArray<R>, page: number, pageSize: number) => R[];
97
+ /** Ciclo del click en un header: sin orden → asc → desc → sin orden. Otra columna arranca en asc. */
98
+ export declare const nextSortState: (current: KapiTableSortState | null | undefined, key: string) => KapiTableSortState | null;
99
+ export type SelectionState = "none" | "some" | "all";
100
+ /** Estado del checkbox de header según cuántas de las filas visibles están elegidas. */
101
+ export declare const selectionState: <K>(rowIds: ReadonlyArray<K>, selected: ReadonlySet<K>) => SelectionState;
102
+ /** Alterna un id sin mutar. */
103
+ export declare const toggleId: <K>(selected: ReadonlySet<K>, id: K) => Set<K>;
104
+ /**
105
+ * "Seleccionar todo": si ya están todas, las quita; si no (ninguna o parcial), las suma.
106
+ * Los ids elegidos que no están en `rowIds` se conservan.
107
+ */
108
+ export declare const toggleAllIds: <K>(selected: ReadonlySet<K>, rowIds: ReadonlyArray<K>) => Set<K>;
109
+ /**
110
+ * Tramo inclusivo de `ids` entre `anchorId` y `targetId` (sin importar el orden).
111
+ * Devuelve `[]` si alguno de los dos no está en `ids`.
112
+ */
113
+ export declare const rangeBetween: <K>(ids: ReadonlyArray<K>, anchorId: K, targetId: K) => K[];
114
+ /** Suma (`select`) o quita el tramo `rangeIds` de la selección, sin mutar. Respeta los ids fuera del tramo. */
115
+ export declare const applyRangeSelection: <K>(selected: ReadonlySet<K>, rangeIds: ReadonlyArray<K>, select: boolean) => Set<K>;
116
+ /** Mapa `key → mostrada`. Una clave ausente cuenta como visible. */
117
+ export type KapiTableColumnVisibility = Record<string, boolean>;
118
+ /** Columnas que se muestran: todas salvo las marcadas explícitamente con `false`. */
119
+ export declare const visibleColumnsOf: <C extends {
120
+ key: string;
121
+ }>(columns: ReadonlyArray<C>, visibility: Readonly<KapiTableColumnVisibility> | undefined) => C[];
122
+ /** Invierte la visibilidad de una columna sin mutar (ausente = visible → pasa a oculta). */
123
+ export declare const toggleColumnVisibility: (visibility: Readonly<KapiTableColumnVisibility> | undefined, key: string) => KapiTableColumnVisibility;
124
+ /** Ancho mínimo por defecto al redimensionar (px). */
125
+ export declare const DEFAULT_MIN_COLUMN_WIDTH = 60;
126
+ /** Paso de las flechas del handle de redimensionado (px). */
127
+ export declare const RESIZE_KEY_STEP = 16;
128
+ export type KapiTableColumnWidths = Record<string, number>;
129
+ /** Acota un ancho al mínimo (redondeado a px enteros). */
130
+ export declare const clampColumnWidth: (width: number, min?: number) => number;
131
+ /** Ancho efectivo: el override del usuario gana sobre el `width` declarado. */
132
+ export declare const effectiveColumnWidth: (column: {
133
+ key: string;
134
+ width?: number;
135
+ }, widths: Readonly<KapiTableColumnWidths> | undefined) => number | undefined;
136
+ /** Mapa de anchos resultante de arrastrar `deltaPx` desde `startWidth`. No muta. */
137
+ export declare const resizeColumn: (widths: Readonly<KapiTableColumnWidths> | undefined, key: string, startWidth: number, deltaPx: number, min?: number) => KapiTableColumnWidths;
138
+ /** Texto comparable: minúsculas, sin acentos (á → a, ñ → n) y sin espacios en los bordes. */
139
+ export declare const normalizeFilterText: (text: string) => string;
140
+ /** Términos del filtro (separados por espacios), normalizados. Texto vacío → `[]`. */
141
+ export declare const filterTerms: (query: string) => string[];
142
+ /**
143
+ * La fila coincide si CADA término aparece dentro del valor de ALGUNA columna (Y entre términos,
144
+ * O entre columnas). Sin términos, todo coincide. Los vacíos no coinciden con nada.
145
+ */
146
+ export declare const rowMatchesFilter: (values: ReadonlyArray<unknown>, terms: ReadonlyArray<string>) => boolean;
147
+ /** Filtra sin mutar y conservando el orden. Sin texto devuelve `rows` (misma referencia). */
148
+ export declare const filterRows: <R>(rows: ReadonlyArray<R>, getValues: (row: R) => ReadonlyArray<unknown>, query: string) => ReadonlyArray<R>;
149
+ /** Filtro de la tabla: texto y columna donde buscar (`null` = todas). */
150
+ export type KapiTableFilterState = {
151
+ text: string;
152
+ column: string | null;
153
+ };
154
+ /** Hay filtro si el texto tiene al menos un término. */
155
+ export declare const isFilterActive: (filter: KapiTableFilterState) => boolean;
156
+ /**
157
+ * Columnas donde busca el filtro: la elegida si existe y es filtrable; si no (o con `null`), todas
158
+ * las que no se excluyen con `filterable: false`.
159
+ */
160
+ export declare const filterSearchColumns: <C extends {
161
+ key: string;
162
+ filterable?: boolean;
163
+ }>(columns: ReadonlyArray<C>, column: string | null) => C[];
164
+ /**
165
+ * Una celda CSV (RFC 4180): vacíos → "", fechas en ISO; cita si tiene comillas, el separador o
166
+ * saltos de línea. Los textos que empiezan como fórmula (= + - @ tab) llevan un apóstrofo delante.
167
+ */
168
+ export declare const csvCell: (value: unknown, separator?: string) => string;
169
+ /** CSV completo: header + filas, líneas separadas por CRLF. */
170
+ export declare const buildCsv: (header: ReadonlyArray<string>, rows: ReadonlyArray<ReadonlyArray<unknown>>, separator?: string) => string;
171
+ /** Título de la columna en el CSV: el label si es texto o número, si no la key. */
172
+ export declare const csvHeaderOf: (column: {
173
+ key: string;
174
+ label: unknown;
175
+ }) => string;
176
+ /** Nombre del archivo: default "tabla.csv"; agrega ".csv" si falta. */
177
+ export declare const csvFileName: (name: string | undefined) => string;
178
+ /** Opciones del selector de columna del filtro: las columnas filtrables con su título. */
179
+ export declare const filterColumnOptions: (columns: ReadonlyArray<{
180
+ key: string;
181
+ label: unknown;
182
+ filterable?: boolean;
183
+ }>) => Array<{
184
+ value: string;
185
+ label: string;
186
+ }>;
187
+ /**
188
+ * Nombre accesible del checkbox de una fila: `"{selectRowNamed} {etiqueta}"` con la etiqueta de
189
+ * `rowLabel` o, por defecto, el valor primitivo (texto/número no vacío) de la primera columna visible;
190
+ * si no hay, `"{selectRow} {posición}"` (posición desde 1). Pura.
191
+ */
192
+ export declare const rowSelectLabel: <T>(row: T, columns: ReadonlyArray<{
193
+ key: string;
194
+ }>, position: number, texts: {
195
+ selectRow: string;
196
+ selectRowNamed: string;
197
+ }, rowLabel?: (row: T) => string) => string;
@@ -0,0 +1,145 @@
1
+ var e = (e, t = 0, n = 170) => {
2
+ let r = t;
3
+ return e.map((e) => {
4
+ if (!e.sticky) return;
5
+ let t = r;
6
+ return r += e.width || n, t;
7
+ });
8
+ }, t = (e) => {
9
+ let t = -1;
10
+ return e.forEach((e, n) => {
11
+ e.sticky && (t = n);
12
+ }), t;
13
+ }, n = ({ total: e, rowHeight: t, scrollTop: n, viewHeight: r, buffer: i = 6 }) => {
14
+ if (e <= 0 || t <= 0) return {
15
+ start: 0,
16
+ end: Math.max(0, e),
17
+ padTop: 0,
18
+ padBottom: 0
19
+ };
20
+ let a = Math.min(e, Math.max(0, Math.floor(n / t) - i)), o = Math.ceil(r / t) + i * 2, s = Math.min(e, a + o);
21
+ return {
22
+ start: a,
23
+ end: s,
24
+ padTop: a * t,
25
+ padBottom: (e - s) * t
26
+ };
27
+ }, r = (e, t, { total: r, rowHeight: i, buffer: a }) => {
28
+ let o = n({
29
+ total: r,
30
+ rowHeight: i,
31
+ buffer: a,
32
+ ...e
33
+ }), s = n({
34
+ total: r,
35
+ rowHeight: i,
36
+ buffer: a,
37
+ ...t
38
+ });
39
+ return o.start === s.start && o.end === s.end ? e : t;
40
+ }, i = ({ page: e, pageSize: t, total: n }) => {
41
+ let r = Math.max(1, t), i = Math.max(1, Math.ceil(n / r)), a = Math.min(Math.max(1, e), i);
42
+ return {
43
+ totalPages: i,
44
+ from: n === 0 ? 0 : (a - 1) * r + 1,
45
+ to: Math.min(n, a * r),
46
+ canPrev: a > 1,
47
+ canNext: a < i,
48
+ page: a
49
+ };
50
+ }, a = (e) => e == null || typeof e == "number" && Number.isNaN(e) || e instanceof Date && Number.isNaN(e.getTime()), o = (e) => e instanceof Date ? e.getTime() : typeof e == "boolean" ? +!!e : e, s = /* @__PURE__ */ new Map(), c = (e) => {
51
+ if (!e) return;
52
+ if (s.has(e)) return s.get(e);
53
+ let t;
54
+ try {
55
+ t = Intl.getCanonicalLocales(e)[0];
56
+ } catch {
57
+ t = void 0;
58
+ }
59
+ return s.set(e, t), t;
60
+ }, l = (e, t, n = "asc", r) => {
61
+ let i = a(e), s = a(t);
62
+ if (i || s) return i && s ? 0 : i ? 1 : -1;
63
+ let l = o(e), u = o(t), d;
64
+ return d = typeof l == "number" && typeof u == "number" ? l - u : String(l).localeCompare(String(u), c(r), {
65
+ numeric: !0,
66
+ sensitivity: "base"
67
+ }), n === "desc" ? -d : d;
68
+ }, u = (e, t, n, r) => {
69
+ let i = c(r);
70
+ return e.map((e, n) => ({
71
+ row: e,
72
+ index: n,
73
+ value: t(e)
74
+ })).sort((e, t) => l(e.value, t.value, n, i) || e.index - t.index).map((e) => e.row);
75
+ }, d = (e, t) => e[t], f = (e, t, n, r) => {
76
+ if (!n) return e;
77
+ let i = t.find((e) => e.key === n.key);
78
+ return !i || !i.sortable ? e : u(e, (e) => i.sortValue ? i.sortValue(e) : d(e, i.key), n.direction, r);
79
+ }, p = (e, t, n) => {
80
+ let { from: r, to: a } = i({
81
+ page: t,
82
+ pageSize: n,
83
+ total: e.length
84
+ });
85
+ return r === 0 ? [] : e.slice(r - 1, a);
86
+ }, m = (e, t) => !e || e.key !== t ? {
87
+ key: t,
88
+ direction: "asc"
89
+ } : e.direction === "asc" ? {
90
+ key: t,
91
+ direction: "desc"
92
+ } : null, h = (e, t) => {
93
+ if (e.length === 0) return "none";
94
+ let n = 0;
95
+ for (let r of e) t.has(r) && (n += 1);
96
+ return n === 0 ? "none" : n === e.length ? "all" : "some";
97
+ }, g = (e, t) => {
98
+ let n = new Set(e);
99
+ return n.has(t) ? n.delete(t) : n.add(t), n;
100
+ }, _ = (e, t) => {
101
+ let n = new Set(e);
102
+ return h(t, e) === "all" ? t.forEach((e) => n.delete(e)) : t.forEach((e) => n.add(e)), n;
103
+ }, v = (e, t, n) => {
104
+ let r = e.indexOf(t), i = e.indexOf(n);
105
+ return r === -1 || i === -1 ? [] : e.slice(Math.min(r, i), Math.max(r, i) + 1);
106
+ }, y = (e, t, n) => {
107
+ let r = new Set(e);
108
+ return t.forEach((e) => n ? r.add(e) : r.delete(e)), r;
109
+ }, b = (e, t) => e.filter((e) => t?.[e.key] !== !1), x = (e, t) => ({
110
+ ...e,
111
+ [t]: e?.[t] === !1
112
+ }), S = (e, t = 60) => Math.max(t, Math.round(e)), C = (e, t) => t?.[e.key] ?? e.width, w = (e, t, n, r, i = 60) => ({
113
+ ...e,
114
+ [t]: S(n + r, i)
115
+ }), T = (e) => e.normalize("NFD").replace(/\p{M}/gu, "").toLowerCase().trim(), E = (e) => T(e).split(/\s+/).filter(Boolean), D = (e) => e == null ? "" : e instanceof Date ? Number.isNaN(e.getTime()) ? "" : e.toISOString() : T(String(e)), O = (e, t) => {
116
+ if (t.length === 0) return !0;
117
+ let n = e.map(D);
118
+ return t.every((e) => n.some((t) => t.includes(e)));
119
+ }, k = (e, t, n) => {
120
+ let r = E(n);
121
+ return r.length === 0 ? e : e.filter((e) => O(t(e), r));
122
+ }, A = (e) => E(e.text).length > 0, j = (e, t) => {
123
+ let n = e.filter((e) => e.filterable !== !1), r = t === null ? void 0 : n.find((e) => e.key === t);
124
+ return r ? [r] : n;
125
+ }, M = /^[+-]?\d+([.,]\d+)?$/, N = /^[=+\-@\t\r]/, P = (e, t = ",") => {
126
+ if (e == null) return "";
127
+ let n;
128
+ return n = e instanceof Date ? Number.isNaN(e.getTime()) ? "" : e.toISOString() : String(e), typeof e == "string" && N.test(n) && !M.test(n) && (n = `'${n}`), n.includes("\"") || n.includes(t) || /[\r\n]/.test(n) ? `"${n.replace(/"/g, "\"\"")}"` : n;
129
+ }, F = (e, t, n = ",") => [e, ...t].map((e) => e.map((e) => P(e, n)).join(n)).join("\r\n"), I = (e) => typeof e.label == "string" || typeof e.label == "number" ? String(e.label) : e.key, L = (e) => {
130
+ let t = e?.trim() || "tabla";
131
+ return /\.csv$/i.test(t) ? t : `${t}.csv`;
132
+ }, R = (e) => j(e, null).map((e) => ({
133
+ value: e.key,
134
+ label: I(e)
135
+ })), z = (e, t, n, r, i) => {
136
+ let a;
137
+ if (i) a = i(e);
138
+ else {
139
+ let n = t[0], r = n ? e[n.key] : void 0;
140
+ (typeof r == "string" || typeof r == "number") && (a = String(r));
141
+ }
142
+ return a?.trim() ? `${r.selectRowNamed} ${a.trim()}` : `${r.selectRow} ${n}`;
143
+ };
144
+ //#endregion
145
+ export { y as applyRangeSelection, F as buildCsv, S as clampColumnWidth, l as compareSortValues, i as computePagination, e as computeStickyOffsets, n as computeVisibleRange, P as csvCell, L as csvFileName, I as csvHeaderOf, C as effectiveColumnWidth, R as filterColumnOptions, k as filterRows, j as filterSearchColumns, E as filterTerms, A as isFilterActive, t as lastStickyIndex, r as nextScrollWindow, m as nextSortState, T as normalizeFilterText, p as paginateRows, v as rangeBetween, d as readCell, w as resizeColumn, O as rowMatchesFilter, z as rowSelectLabel, c as safeLocale, h as selectionState, u as sortRows, f as sortRowsByColumn, _ as toggleAllIds, x as toggleColumnVisibility, g as toggleId, b as visibleColumnsOf };
@@ -0,0 +1,28 @@
1
+ import { type KapiTableColumnWidths } from "./tableLogic";
2
+ /** Arrastre en curso: dónde empezó y el ancho borrador actual (px enteros, ya acotado). */
3
+ export type ResizeDrag = {
4
+ key: string;
5
+ startX: number;
6
+ startWidth: number;
7
+ min: number;
8
+ width: number;
9
+ };
10
+ export declare const startResizeDrag: (key: string, startX: number, startWidth: number, min: number) => ResizeDrag;
11
+ /** Nuevo borrador para la posición del puntero, o `null` si el ancho no cambió (no hay que pintar). */
12
+ export declare const moveResizeDrag: (drag: ResizeDrag, clientX: number) => ResizeDrag | null;
13
+ /**
14
+ * Qué confirmar al terminar: el mapa de anchos con el ancho final al soltar, o `null` si no hay
15
+ * nada que confirmar (se canceló, o se soltó sin cambiar el ancho de partida).
16
+ */
17
+ export declare const endResizeDrag: (drag: ResizeDrag, widths: Readonly<KapiTableColumnWidths>, reason: "commit" | "cancel") => KapiTableColumnWidths | null;
18
+ /**
19
+ * ¿Hay que repintar el `left` borrador de una columna? Se compara contra lo que está
20
+ * en pantalla: el último `left` pintado en este arrastre o, si no se pintó, el confirmado.
21
+ */
22
+ export declare const needsDraftLeftPaint: (draftLeft: number | undefined, committedLeft: number | undefined, paintedLeft: number | undefined) => boolean;
23
+ /** `left` de las columnas sticky con el ancho borrador de la columna arrastrada. */
24
+ export declare const draftStickyLefts: (columns: ReadonlyArray<{
25
+ key: string;
26
+ sticky?: boolean;
27
+ width?: number;
28
+ }>, widths: Readonly<KapiTableColumnWidths>, key: string, width: number, startOffset: number) => Array<number | undefined>;
@@ -0,0 +1,20 @@
1
+ import { clampColumnWidth as e, computeStickyOffsets as t, effectiveColumnWidth as n, resizeColumn as r } from "./tableLogic.js";
2
+ //#region src/components/data/tableResizeLogic.ts
3
+ var i = (t, n, r, i) => ({
4
+ key: t,
5
+ startX: n,
6
+ startWidth: r,
7
+ min: i,
8
+ width: e(r, i)
9
+ }), a = (t, n) => {
10
+ let r = e(t.startWidth + n - t.startX, t.min);
11
+ return r === t.width ? null : {
12
+ ...t,
13
+ width: r
14
+ };
15
+ }, o = (t, n, i) => i === "cancel" || t.width === e(t.startWidth, t.min) ? null : r(n, t.key, t.width, 0, t.min), s = (e, t, n) => e !== (n ?? t), c = (e, r, i, a, o) => t(e.map((e) => ({
16
+ sticky: e.sticky,
17
+ width: e.key === i ? a : n(e, r)
18
+ })), o);
19
+ //#endregion
20
+ export { c as draftStickyLefts, o as endResizeDrag, a as moveResizeDrag, s as needsDraftLeftPaint, i as startResizeDrag };
@@ -0,0 +1,32 @@
1
+ import { type HTMLAttributes, type ReactNode } from "react";
2
+ import { type KapiAnnotationTone, type KapiAnnotationUnderline } from "./annotationLogic";
3
+ import "./KapiAnnotation.css";
4
+ /**
5
+ * Atributos nativos (`id`, `style`, `data-*`, handlers de mouse…) van al término resaltado (el `<span>`/`<button>`
6
+ * que lleva `className`); el foco, el teclado, `onClick` y el nombre (`aria-label`) van al término. Un `aria-describedby`
7
+ * propio se suma al del popover.
8
+ */
9
+ export type KapiAnnotationProps = Omit<HTMLAttributes<HTMLElement>, "children" | "onClick" | "onKeyDown" | "onFocus" | "onBlur" | "tabIndex" | "popover"> & {
10
+ /** El término resaltado (inline). */
11
+ children: ReactNode;
12
+ /** Texto corto que se muestra al pasar el mouse / enfocar. */
13
+ info: ReactNode;
14
+ /** Variante visual del subrayado. Default "dotted". */
15
+ underline?: KapiAnnotationUnderline;
16
+ /** Tono del resaltado (reusa tokens --kapi-*). Default "primary". */
17
+ tone?: KapiAnnotationTone;
18
+ /** Si se pasa, el término es clickeable (cursor pointer + onClick); útil para "ver más". */
19
+ onClick?: () => void;
20
+ /** Contenido rico opcional para un popover (título + cuerpo) en vez del tooltip simple. */
21
+ popover?: {
22
+ title?: ReactNode;
23
+ body: ReactNode;
24
+ };
25
+ /**
26
+ * Popover interactivo: el contenido se puede seleccionar/copiar y el mouse puede pasar del término al popover.
27
+ * Cierra con click afuera, Escape o al salir de ambos. Default false (hint efímero, sin eventos de mouse).
28
+ */
29
+ interactive?: boolean;
30
+ };
31
+ /** Término anotado: texto resaltado que revela info al hover/foco y, opcionalmente, es clickeable. */
32
+ export declare function KapiAnnotation({ children, info, underline, tone, onClick, popover, interactive, className, "aria-label": ariaLabel, ...rest }: KapiAnnotationProps): import("react").JSX.Element;