@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,40 @@
1
+ export { KapiBadge, badgeClasses } from "./KapiBadge";
2
+ export type { KapiBadgeProps, KapiBadgeSize, KapiBadgeTone, KapiBadgeVariant } from "./KapiBadge";
3
+ export { KapiAvatar } from "./KapiAvatar";
4
+ export type { KapiAvatarColor, KapiAvatarProps, KapiAvatarSize } from "./KapiAvatar";
5
+ export { colorIndexFrom, initialsFrom } from "./avatarLogic";
6
+ export { KapiStat } from "./KapiStat";
7
+ export type { KapiStatProps } from "./KapiStat";
8
+ export { statClasses } from "./statLogic";
9
+ export type { KapiStatTone } from "./statLogic";
10
+ export { KapiTimeline } from "./KapiTimeline";
11
+ export type { KapiTimelineItem, KapiTimelineProps } from "./KapiTimeline";
12
+ export { showConnector, timelineDotClass } from "./timelineLogic";
13
+ export type { KapiTimelineTone } from "./timelineLogic";
14
+ export { KapiDescriptionList, descriptionListClasses } from "./KapiDescriptionList";
15
+ export type { KapiDescriptionItem, KapiDescriptionListProps } from "./KapiDescriptionList";
16
+ export { KapiTag, DEFAULT_TAG_LABELS } from "./KapiTag";
17
+ export type { KapiTagLabels, KapiTagProps } from "./KapiTag";
18
+ export { tagClasses } from "./tagLogic";
19
+ export type { KapiTagClassesInput, KapiTagSize, KapiTagTone } from "./tagLogic";
20
+ export { KapiIconTile } from "./KapiIconTile";
21
+ export type { KapiIconTileProps } from "./KapiIconTile";
22
+ export { iconTileClasses, iconTileSizePx, iconTileRadiusPx } from "./iconTileLogic";
23
+ export type { KapiIconTileSize, KapiIconTileTone } from "./iconTileLogic";
24
+ export { KapiAvatarGroup } from "./KapiAvatarGroup";
25
+ export type { KapiAvatarGroupItem, KapiAvatarGroupProps } from "./KapiAvatarGroup";
26
+ export { splitAvatarGroup, overflowLabel, avatarOverlapPx } from "./avatarGroupLogic";
27
+ export { KapiAnnotation } from "./KapiAnnotation";
28
+ export type { KapiAnnotationProps } from "./KapiAnnotation";
29
+ export { annotationClasses, annotationRole } from "./annotationLogic";
30
+ export type { KapiAnnotationUnderline, KapiAnnotationTone, KapiAnnotationRole } from "./annotationLogic";
31
+ export { KapiFileViewer, DEFAULT_FILE_VIEWER_LABELS } from "./KapiFileViewer";
32
+ export type { KapiFileViewerLabels, KapiFileViewerProps } from "./KapiFileViewer";
33
+ export { KapiFileItem, KapiFileList } from "./KapiFileItem";
34
+ export type { KapiFileItemProps, KapiFileListProps } from "./KapiFileItem";
35
+ export { fileItemKind, fileMetaParts } from "./fileItemLogic";
36
+ export { KapiComment } from "./KapiComment";
37
+ export type { KapiCommentProps } from "./KapiComment";
38
+ export { KapiCommentComposer, DEFAULT_COMMENT_COMPOSER_LABELS } from "./KapiCommentComposer";
39
+ export type { KapiCommentComposerLabels, KapiCommentComposerProps } from "./KapiCommentComposer";
40
+ export { canSubmitComment, isSubmitShortcut } from "./commentLogic";
@@ -0,0 +1,10 @@
1
+ import type { KapiIconTileTone } from "./iconTileLogic";
2
+ export type KapiStatTone = "neutral" | "primary" | "success" | "info" | "warning" | "danger";
3
+ /** Clases de una tarjeta KPI: reutiliza `.kapi-card .kapi-statcard`; el tono sólo tiñe el valor/nota. */
4
+ export declare const statClasses: ({ tone, hasIcon, className }?: {
5
+ tone?: KapiStatTone | undefined;
6
+ hasIcon?: boolean | undefined;
7
+ className?: string | undefined;
8
+ }) => string;
9
+ /** Tono del tile: el explícito, si no el del stat (neutral → primary). */
10
+ export declare const statIconTone: (tone?: KapiStatTone, iconTone?: KapiIconTileTone) => KapiIconTileTone;
@@ -0,0 +1,10 @@
1
+ //#region src/components/display/statLogic.ts
2
+ var e = ({ tone: e = "neutral", hasIcon: t = !1, className: n = "" } = {}) => [
3
+ "kapi-card",
4
+ "kapi-statcard",
5
+ e !== "neutral" && `kapi-statcard--${e}`,
6
+ t && "kapi-statcard--icon",
7
+ n
8
+ ].filter(Boolean).join(" "), t = (e = "neutral", t) => t ?? (e === "neutral" ? "primary" : e);
9
+ //#endregion
10
+ export { e as statClasses, t as statIconTone };
@@ -0,0 +1,11 @@
1
+ export type KapiTagTone = "neutral" | "primary" | "success" | "info" | "warning" | "danger";
2
+ export type KapiTagSize = "sm" | "md";
3
+ export type KapiTagClassesInput = {
4
+ tone?: KapiTagTone | undefined;
5
+ size?: KapiTagSize | undefined;
6
+ /** Tiene botón de quitar: reserva el espacio del borde derecho. */
7
+ removable?: boolean | undefined;
8
+ className?: string | undefined;
9
+ };
10
+ /** Clases de un tag. */
11
+ export declare const tagClasses: ({ tone, size, removable, className }?: KapiTagClassesInput) => string;
@@ -0,0 +1,10 @@
1
+ //#region src/components/display/tagLogic.ts
2
+ var e = ({ tone: e = "neutral", size: t = "md", removable: n = !1, className: r = "" } = {}) => [
3
+ "kapi-tag",
4
+ `kapi-tag--${e}`,
5
+ t !== "md" && `kapi-tag--${t}`,
6
+ n && "kapi-tag--removable",
7
+ r
8
+ ].filter(Boolean).join(" ");
9
+ //#endregion
10
+ export { e as tagClasses };
@@ -0,0 +1,5 @@
1
+ export type KapiTimelineTone = "primary" | "success" | "info" | "warning" | "danger" | "muted";
2
+ /** Clase del punto según el tono (default `primary`). */
3
+ export declare const timelineDotClass: (tone?: KapiTimelineTone) => string;
4
+ /** El último ítem no dibuja el conector hacia abajo. */
5
+ export declare const showConnector: (index: number, total: number) => boolean;
@@ -0,0 +1,4 @@
1
+ //#region src/components/display/timelineLogic.ts
2
+ var e = (e = "primary") => `kapi-tl-dot kapi-timeline__dot--${e}`, t = (e, t) => e < t - 1;
3
+ //#endregion
4
+ export { t as showConnector, e as timelineDotClass };
@@ -0,0 +1,28 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ export type KapiAlertVariant = "info" | "success" | "warning" | "danger";
3
+ /** Atributos nativos (`id`, `style`, `data-*`, `aria-*`…) van al contenedor. */
4
+ export type KapiAlertProps = Omit<HTMLAttributes<HTMLDivElement>, "title" | "role" | "children"> & {
5
+ /** Rol semántico: define color, ícono y si se anuncia como `alert` o `status`. */
6
+ variant?: KapiAlertVariant;
7
+ /** Título en negrita sobre el mensaje. */
8
+ title?: ReactNode;
9
+ /** Mensaje del aviso. */
10
+ children?: ReactNode;
11
+ /** Acción a la derecha (botón, link). */
12
+ action?: ReactNode;
13
+ /**
14
+ * Rol de anuncio. Default: `alert` (asertivo, interrumpe al lector) para `danger`; `status` (cortés)
15
+ * para info/success/warning, porque un aviso inline suele ser contextual y no urgente. Pasar
16
+ * `"alert"` para un warning urgente (p. ej. sesión por vencer) o `"none"` para contenido estático
17
+ * que no debe anunciarse.
18
+ */
19
+ role?: KapiAlertRole;
20
+ };
21
+ export type KapiAlertRole = "alert" | "status" | "none";
22
+ /** Rol ARIA efectivo del alert (`undefined` = sin rol). Pura y exportada para testear. */
23
+ export declare const alertRole: (variant: KapiAlertVariant, override?: KapiAlertRole) => "alert" | "status" | undefined;
24
+ /**
25
+ * Banner inline (info / success / warning / danger) para formularios, modales y pantallas.
26
+ * `danger` se anuncia como `role="alert"`; el resto como `role="status"` (ver `role`).
27
+ */
28
+ export declare const KapiAlert: ({ variant, title, children, action, className, role, ...rest }: KapiAlertProps) => import("react").JSX.Element;
@@ -0,0 +1,53 @@
1
+ "use client";
2
+ import { jsx as e, jsxs as t } from "react/jsx-runtime";
3
+ import { AlertTriangle as n, CheckCircle2 as r, Info as i, XCircle as a } from "lucide-react";
4
+ //#region src/components/feedback/KapiAlert.tsx
5
+ var o = (e, t) => {
6
+ let n = t ?? (e === "danger" ? "alert" : "status");
7
+ return n === "none" ? void 0 : n;
8
+ }, s = {
9
+ info: {
10
+ Icon: i,
11
+ color: "var(--kapi-info)"
12
+ },
13
+ success: {
14
+ Icon: r,
15
+ color: "var(--kapi-success)"
16
+ },
17
+ warning: {
18
+ Icon: n,
19
+ color: "var(--kapi-warning)"
20
+ },
21
+ danger: {
22
+ Icon: a,
23
+ color: "var(--kapi-danger)"
24
+ }
25
+ }, c = ({ variant: n = "info", title: r, children: i, action: a, className: c, role: l, ...u }) => {
26
+ let { Icon: d, color: f } = s[n] ?? s.info;
27
+ return /* @__PURE__ */ t("div", {
28
+ ...u,
29
+ className: `kapi-alert kapi-alert--${n}${c ? ` ${c}` : ""}`,
30
+ role: o(n, l),
31
+ children: [
32
+ /* @__PURE__ */ e(d, {
33
+ className: "kapi-alert__ico",
34
+ size: 19,
35
+ strokeWidth: 2,
36
+ color: f
37
+ }),
38
+ /* @__PURE__ */ t("div", {
39
+ className: "kapi-alert__body",
40
+ children: [r && /* @__PURE__ */ e("div", {
41
+ className: "kapi-alert__title",
42
+ children: r
43
+ }), i && /* @__PURE__ */ e("div", {
44
+ className: "kapi-alert__msg",
45
+ children: i
46
+ })]
47
+ }),
48
+ a
49
+ ]
50
+ });
51
+ };
52
+ //#endregion
53
+ export { c as KapiAlert, o as alertRole };
@@ -0,0 +1,30 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ import "./KapiBulkBar.css";
3
+ import type { KapiLabelsOverride } from "../labelsLogic";
4
+ /** Atributos nativos (`id`, `style`, `data-*`…) van a la región; `role` y `aria-label` son propios. */
5
+ export type KapiBulkBarProps = Omit<HTMLAttributes<HTMLDivElement>, "children" | "role" | "aria-label"> & {
6
+ /** Cantidad de filas seleccionadas. */
7
+ count: number;
8
+ /** Vacía la selección. */
9
+ onClear: () => void;
10
+ /** Botones de acción masiva. */
11
+ children?: ReactNode;
12
+ /** Texto del botón de limpiar. Gana sobre `labels.clear` ("Limpiar"). */
13
+ clearLabel?: string;
14
+ /** Default `selectedCountLabel` ("N seleccionadas"). */
15
+ countLabel?: (n: number) => string;
16
+ /** Borde donde se clava la barra: arriba (estilo Gmail) o abajo. Default `"bottom"`. */
17
+ placement?: "top" | "bottom";
18
+ /** Textos fijos (nombre de la región y botón de limpiar). */
19
+ labels?: KapiLabelsOverride<KapiBulkBarLabels> | undefined;
20
+ };
21
+ export type KapiBulkBarLabels = {
22
+ region: string;
23
+ clear: string;
24
+ };
25
+ export declare const DEFAULT_BULK_BAR_LABELS: KapiBulkBarLabels;
26
+ /**
27
+ * Barra sticky de acciones masivas: a la izquierda el conteo, después las acciones
28
+ * que pase el consumidor y un botón "Limpiar" (ghost). Renderizala sólo con selección.
29
+ */
30
+ export declare const KapiBulkBar: ({ count, onClear, children, clearLabel, countLabel, className, placement, labels, ...rest }: KapiBulkBarProps) => import("react").JSX.Element;
@@ -0,0 +1,34 @@
1
+ "use client";
2
+ import { KapiButton as e } from "../inputs/KapiButton.js";
3
+ import { useLabels as t } from "../locale/KapiLocaleProvider.js";
4
+ import { selectedCountLabel as n } from "./bulkBarLogic.js";
5
+ /* empty css */
6
+ import { jsx as r, jsxs as i } from "react/jsx-runtime";
7
+ //#region src/components/feedback/KapiBulkBar.tsx
8
+ var a = {
9
+ region: "Acciones de selección",
10
+ clear: "Limpiar"
11
+ }, o = ({ count: o, onClear: s, children: c, clearLabel: l, countLabel: u = n, className: d, placement: f = "bottom", labels: p, ...m }) => {
12
+ let h = t("bulkBar", a, p);
13
+ return /* @__PURE__ */ i("div", {
14
+ ...m,
15
+ className: `kapi-bulk-bar${f === "top" ? " kapi-bulk-bar--top" : ""}${d ? ` ${d}` : ""}`,
16
+ role: "region",
17
+ "aria-label": h.region,
18
+ children: [/* @__PURE__ */ r("span", {
19
+ className: "kapi-bulk-bar__label",
20
+ "aria-live": "polite",
21
+ children: u(o)
22
+ }), /* @__PURE__ */ i("div", {
23
+ className: "kapi-bulk-bar__actions",
24
+ children: [c, /* @__PURE__ */ r(e, {
25
+ size: "sm",
26
+ variant: "ghost",
27
+ onClick: s,
28
+ children: l ?? h.clear
29
+ })]
30
+ })]
31
+ });
32
+ };
33
+ //#endregion
34
+ export { a as DEFAULT_BULK_BAR_LABELS, o as KapiBulkBar };
@@ -0,0 +1,26 @@
1
+ import { type HTMLAttributes, type ReactNode } from "react";
2
+ import { type KapiBadgeSize, type KapiBadgeTone } from "../display/KapiBadge";
3
+ import { type KapiCountdownLabels, type KapiCountdownTarget, type KapiCountdownToneMap } from "./countdownLogic";
4
+ import "./feedback.css";
5
+ import type { KapiLabelsOverride } from "../labelsLogic";
6
+ /** Native attributes (`id`, `style`, `data-*`…) go to the chip; `role="timer"` and its label (from `detail`) are owned. */
7
+ export type KapiCountdownProps = Omit<HTMLAttributes<HTMLSpanElement>, "prefix" | "children" | "role" | "aria-label"> & {
8
+ /** Deadline: Date, ISO string or epoch milliseconds. */
9
+ to: KapiCountdownTarget;
10
+ /** Text before the clock while running (e.g. "Cierra en"). Hidden once overdue. */
11
+ prefix?: ReactNode;
12
+ /** Tone per state; unspecified keys keep the defaults (far=info, near=warning, overdue=danger). */
13
+ tones?: Partial<KapiCountdownToneMap>;
14
+ /** Remaining time at or below which the state becomes "near". Default: 24 h. */
15
+ nearThresholdMs?: number;
16
+ /** Tooltip text. Defaults to a sentence like "Faltan 2 horas". */
17
+ detail?: string;
18
+ /** Override the Spanish copy (unit words keyed by `Intl.PluralRules` category). */
19
+ labels?: KapiLabelsOverride<KapiCountdownLabels> | undefined;
20
+ /** Tamaño del badge: `sm` · `md`. */
21
+ size?: KapiBadgeSize;
22
+ /** Estilo del badge: `subtle` (fondo suave) o `solid` (color pleno). */
23
+ badgeTone?: KapiBadgeTone;
24
+ };
25
+ /** Live countdown chip: ticks every second and changes color as the deadline approaches. */
26
+ export declare function KapiCountdown({ to, prefix, tones, nearThresholdMs, detail, labels, size, badgeTone, className, ...rest }: KapiCountdownProps): import("react").JSX.Element | null;
@@ -0,0 +1,43 @@
1
+ "use client";
2
+ import { useKapiLocale as e, useLabels as t } from "../locale/KapiLocaleProvider.js";
3
+ import { KapiTooltip as n } from "../overlays/KapiTooltip.js";
4
+ import { KapiBadge as r } from "../display/KapiBadge.js";
5
+ /* empty css */
6
+ import { DEFAULT_COUNTDOWN_LABELS as i, DEFAULT_NEAR_MS as a, bucketFor as o, chipText as s, describe as c, parseTarget as l, resolveTones as u } from "./countdownLogic.js";
7
+ import { jsx as d, jsxs as f } from "react/jsx-runtime";
8
+ import { useEffect as p, useState as m } from "react";
9
+ //#region src/components/feedback/KapiCountdown.tsx
10
+ function h({ to: h, prefix: g, tones: _, nearThresholdMs: v = a, detail: y, labels: b, size: x = "md", badgeTone: S = "subtle", className: C, ...w }) {
11
+ let [T, E] = m(() => Date.now()), D = t("countdown", i, b), O = e() ?? "es";
12
+ p(() => {
13
+ E(Date.now());
14
+ let e = setInterval(() => E(Date.now()), 1e3);
15
+ return () => clearInterval(e);
16
+ }, [h]);
17
+ let k = l(h);
18
+ if (!Number.isFinite(k)) return null;
19
+ let A = k - T, j = o(A, v), M = u(_)[j], N = y ?? c(A, D, O), P = g && j !== "overdue";
20
+ return /* @__PURE__ */ d(n, {
21
+ label: N,
22
+ children: /* @__PURE__ */ f(r, {
23
+ ...w,
24
+ variant: M,
25
+ tone: S,
26
+ size: x,
27
+ className: ["kapi-countdown", C].filter(Boolean).join(" "),
28
+ "data-state": j,
29
+ role: "timer",
30
+ "aria-label": N,
31
+ suppressHydrationWarning: !0,
32
+ children: [P && /* @__PURE__ */ d("span", {
33
+ className: "kapi-countdown__prefix",
34
+ children: g
35
+ }), /* @__PURE__ */ d("span", {
36
+ className: "kapi-countdown__time",
37
+ children: s(A, D)
38
+ })]
39
+ })
40
+ });
41
+ }
42
+ //#endregion
43
+ export { h as KapiCountdown };
@@ -0,0 +1,14 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ import "./feedback.css";
3
+ export type KapiEmptyProps = Omit<HTMLAttributes<HTMLDivElement>, "title"> & {
4
+ /** Ícono o ilustración (se muestra en un círculo suave). */
5
+ icon?: ReactNode;
6
+ /** Título del estado vacío. */
7
+ title: ReactNode;
8
+ /** Texto secundario bajo el título (qué pasó o qué hacer). */
9
+ description?: ReactNode;
10
+ /** Acción principal (típicamente un `KapiButton`). */
11
+ action?: ReactNode;
12
+ };
13
+ /** Estado vacío: ícono, título, descripción y acción opcionales, centrados. */
14
+ export declare function KapiEmpty({ icon, title, description, action, className, ...rest }: KapiEmptyProps): import("react").JSX.Element;
@@ -0,0 +1,31 @@
1
+ "use client";
2
+ /* empty css */
3
+ import { jsx as e, jsxs as t } from "react/jsx-runtime";
4
+ //#region src/components/feedback/KapiEmpty.tsx
5
+ function n({ icon: n, title: r, description: i, action: a, className: o, ...s }) {
6
+ return /* @__PURE__ */ t("div", {
7
+ className: ["kapi-empty", o].filter(Boolean).join(" "),
8
+ ...s,
9
+ children: [
10
+ n != null && /* @__PURE__ */ e("div", {
11
+ className: "kapi-empty__icon",
12
+ "aria-hidden": !0,
13
+ children: n
14
+ }),
15
+ /* @__PURE__ */ e("div", {
16
+ className: "kapi-empty__title",
17
+ children: r
18
+ }),
19
+ i != null && /* @__PURE__ */ e("div", {
20
+ className: "kapi-empty__desc",
21
+ children: i
22
+ }),
23
+ a != null && /* @__PURE__ */ e("div", {
24
+ className: "kapi-empty__action",
25
+ children: a
26
+ })
27
+ ]
28
+ });
29
+ }
30
+ //#endregion
31
+ export { n as KapiEmpty };
@@ -0,0 +1,34 @@
1
+ import { type ReactNode } from "react";
2
+ import "./feedback.css";
3
+ import type { KapiRootProps } from "../rootProps";
4
+ import type { KapiLabelsOverride } from "../labelsLogic";
5
+ export type KapiFabAction = {
6
+ label: string;
7
+ icon?: ReactNode;
8
+ onClick?: () => void;
9
+ };
10
+ export type KapiFabPlacement = "br" | "bl" | "tr" | "tl";
11
+ export type KapiFabLabels = {
12
+ /** Nombre accesible del botón principal (sin `label`). */
13
+ action: string;
14
+ };
15
+ export declare const DEFAULT_FAB_LABELS: KapiFabLabels;
16
+ /** `className`/`style`/`id` van al contenedor flotante (portaleado); la posición arrastrada gana sobre `style`. */
17
+ export type KapiFabProps = KapiRootProps & {
18
+ /** Con acciones, el FAB se vuelve speed-dial. */
19
+ actions?: KapiFabAction[] | undefined;
20
+ /** Ícono del botón principal. */
21
+ icon?: ReactNode | undefined;
22
+ /** Etiqueta accesible del botón principal; gana sobre `labels.action`. */
23
+ label?: string | undefined;
24
+ /** Textos fijos (clave `fab`). */
25
+ labels?: KapiLabelsOverride<KapiFabLabels> | undefined;
26
+ /** Click del botón único (sin `actions`). */
27
+ onClick?: (() => void) | undefined;
28
+ /** Esquina del viewport donde se ubica: `br` · `bl` · `tr` · `tl` (abajo/arriba, derecha/izquierda). */
29
+ position?: KapiFabPlacement | undefined;
30
+ /** Permite arrastrarlo (queda siempre dentro del viewport). */
31
+ draggable?: boolean | undefined;
32
+ };
33
+ /** Botón flotante: único o speed-dial; arrastrable con clamp al viewport; cierra al click afuera / Escape. */
34
+ export declare const KapiFab: ({ actions, icon, label: labelProp, labels, onClick, position, draggable, className, style: styleProp, id }: KapiFabProps) => import("react").ReactPortal | null;
@@ -0,0 +1,116 @@
1
+ "use client";
2
+ import { useLabels as e } from "../locale/KapiLocaleProvider.js";
3
+ import { useKapiRoot as t } from "../../hooks/kapiRoot.js";
4
+ /* empty css */
5
+ import { clampFabPosition as n, isDragMove as r } from "./fabLogic.js";
6
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
7
+ import { useCallback as o, useEffect as s, useRef as c, useState as l } from "react";
8
+ import { Plus as u } from "lucide-react";
9
+ import { createPortal as d } from "react-dom";
10
+ //#region src/components/feedback/KapiFab.tsx
11
+ var f = { action: "Acción" }, p = ({ actions: p = [], icon: m, label: h, labels: g, onClick: _, position: v = "br", draggable: y = !1, className: b, style: x, id: S }) => {
12
+ let C = e("fab", f, g), w = h ?? C.action, [T, E] = l(!1), [D, O] = l(null), [k, A] = l(!1), j = c(null), M = c(!1), N = t(), P = p.length > 0, F = o((e) => {
13
+ let t = j.current;
14
+ if (!t) return e;
15
+ let r = t.getBoundingClientRect();
16
+ return n(e, {
17
+ width: r.width,
18
+ height: r.height
19
+ }, {
20
+ width: window.innerWidth,
21
+ height: window.innerHeight
22
+ });
23
+ }, []);
24
+ s(() => {
25
+ if (!T) return;
26
+ let e = (e) => {
27
+ j.current && !j.current.contains(e.target) && E(!1);
28
+ }, t = (e) => {
29
+ e.key === "Escape" && E(!1);
30
+ };
31
+ return document.addEventListener("pointerdown", e), document.addEventListener("keydown", t), () => {
32
+ document.removeEventListener("pointerdown", e), document.removeEventListener("keydown", t);
33
+ };
34
+ }, [T]), s(() => {
35
+ if (!D) return;
36
+ let e = () => O((e) => e && F(e));
37
+ return window.addEventListener("resize", e), () => window.removeEventListener("resize", e);
38
+ }, [D, F]);
39
+ let I = (e) => {
40
+ if (!y || e.button !== 0 || !j.current) return;
41
+ let t = j.current.getBoundingClientRect(), n = {
42
+ mx: e.clientX,
43
+ my: e.clientY,
44
+ x: t.left,
45
+ y: t.top,
46
+ moved: !1
47
+ }, i = (e) => {
48
+ let t = e.clientX - n.mx, i = e.clientY - n.my;
49
+ r(t, i) && (n.moved = !0), n.moved && (A(!0), O(F({
50
+ x: n.x + t,
51
+ y: n.y + i
52
+ })));
53
+ }, a = () => {
54
+ window.removeEventListener("pointermove", i), window.removeEventListener("pointerup", a), window.removeEventListener("pointercancel", a), M.current = n.moved, A(!1), setTimeout(() => {
55
+ M.current = !1;
56
+ }, 0);
57
+ };
58
+ window.addEventListener("pointermove", i), window.addEventListener("pointerup", a), window.addEventListener("pointercancel", a);
59
+ }, L = () => {
60
+ M.current || (P ? E((e) => !e) : _?.());
61
+ };
62
+ if (!N) return null;
63
+ let R = D ? {
64
+ ...x,
65
+ left: D.x,
66
+ top: D.y,
67
+ right: "auto",
68
+ bottom: "auto"
69
+ } : x, z = [
70
+ "kapi-fab-wrap",
71
+ `kapi-fab-wrap--${v}`,
72
+ y && "is-draggable",
73
+ k && "is-dragging",
74
+ b
75
+ ].filter(Boolean).join(" ");
76
+ return d(/* @__PURE__ */ a("div", {
77
+ ref: j,
78
+ id: S,
79
+ className: z,
80
+ style: R,
81
+ children: [P && /* @__PURE__ */ i("div", {
82
+ className: `kapi-fab-actions${T ? " is-open" : ""}`,
83
+ children: p.map((e) => /* @__PURE__ */ a("button", {
84
+ type: "button",
85
+ className: "kapi-fab-act",
86
+ tabIndex: T ? 0 : -1,
87
+ onClick: () => {
88
+ e.onClick?.(), E(!1);
89
+ },
90
+ children: [/* @__PURE__ */ i("span", {
91
+ className: "kapi-fab-act__label",
92
+ children: e.label
93
+ }), /* @__PURE__ */ i("span", {
94
+ className: "kapi-fab-act__btn",
95
+ children: e.icon
96
+ })]
97
+ }, e.label))
98
+ }), /* @__PURE__ */ i("button", {
99
+ type: "button",
100
+ className: "kapi-fab-main",
101
+ onPointerDown: I,
102
+ onClick: L,
103
+ "aria-label": w,
104
+ "aria-expanded": P ? T : void 0,
105
+ children: /* @__PURE__ */ i("span", {
106
+ className: `kapi-fab-main__ico${P && T ? " is-open" : ""}`,
107
+ children: m ?? /* @__PURE__ */ i(u, {
108
+ size: 24,
109
+ strokeWidth: 2.4
110
+ })
111
+ })
112
+ })]
113
+ }), N);
114
+ };
115
+ //#endregion
116
+ export { f as DEFAULT_FAB_LABELS, p as KapiFab };
@@ -0,0 +1,25 @@
1
+ import { type HTMLAttributes } from "react";
2
+ import "./KapiOfflineBanner.css";
3
+ import type { KapiLabelsOverride } from "../labelsLogic";
4
+ export type KapiOfflineBannerLabels = {
5
+ offline: string;
6
+ restored: string;
7
+ };
8
+ export declare const DEFAULT_OFFLINE_BANNER_LABELS: KapiOfflineBannerLabels;
9
+ /** Atributos nativos (`id`, `style`, `data-*`…) van a la barra; `role="status"` es propio. */
10
+ export type KapiOfflineBannerProps = Omit<HTMLAttributes<HTMLDivElement>, "children" | "role"> & {
11
+ /** Fuerza el estado sin conexión (demo, tests o una verificación propia contra el servidor). */
12
+ forceOffline?: boolean;
13
+ /** Mostrar el aviso breve "Conexión restablecida" al volver. Default true. */
14
+ showRestored?: boolean;
15
+ /** Cuánto dura el aviso de conexión restablecida (ms). Default 3000. */
16
+ restoredDuration?: number;
17
+ /** Textos fijos (clave `offlineBanner`). */
18
+ labels?: KapiLabelsOverride<KapiOfflineBannerLabels> | undefined;
19
+ };
20
+ /**
21
+ * Barra flotante y discreta que avisa cuando se pierde la conexión (eventos `online`/`offline`
22
+ * vía `useOnlineStatus`). Con conexión no renderiza nada; al volver muestra un aviso breve.
23
+ * Montala una vez, dentro de `.kapi` (p. ej. en `overlays` de KapiShell).
24
+ */
25
+ export declare const KapiOfflineBanner: ({ forceOffline, showRestored, restoredDuration, labels, className, ...rest }: KapiOfflineBannerProps) => import("react").JSX.Element | null;
@@ -0,0 +1,40 @@
1
+ "use client";
2
+ import { useLabels as e } from "../locale/KapiLocaleProvider.js";
3
+ import { useOnlineStatus as t } from "../../hooks/useOnlineStatus.js";
4
+ import { DEFAULT_RESTORED_DURATION as n, nextOfflineBannerPhase as r, offlineBannerClasses as i } from "./offlineBannerLogic.js";
5
+ /* empty css */
6
+ import { jsx as a, jsxs as o } from "react/jsx-runtime";
7
+ import { useEffect as s, useState as c } from "react";
8
+ import { Wifi as l, WifiOff as u } from "lucide-react";
9
+ //#region src/components/feedback/KapiOfflineBanner.tsx
10
+ var d = {
11
+ offline: "Sin conexión. Los cambios se guardarán cuando vuelva la conexión.",
12
+ restored: "Conexión restablecida."
13
+ }, f = ({ forceOffline: f = !1, showRestored: p = !0, restoredDuration: m = n, labels: h, className: g, ..._ }) => {
14
+ let v = t(), y = e("offlineBanner", d, h), b = v.online && !f, [x, S] = c(() => b ? "hidden" : "offline");
15
+ if (s(() => {
16
+ S((e) => r(e, b, p));
17
+ }, [b, p]), s(() => {
18
+ if (x !== "restored") return;
19
+ let e = setTimeout(() => S("hidden"), m);
20
+ return () => clearTimeout(e);
21
+ }, [x, m]), x === "hidden") return null;
22
+ let C = x === "offline" ? u : l;
23
+ return /* @__PURE__ */ o("div", {
24
+ ..._,
25
+ className: i(x, g),
26
+ role: "status",
27
+ "aria-live": "polite",
28
+ children: [/* @__PURE__ */ a(C, {
29
+ className: "kapi-offline-banner__icon",
30
+ size: 16,
31
+ strokeWidth: 2.2,
32
+ "aria-hidden": "true"
33
+ }), /* @__PURE__ */ a("span", {
34
+ className: "kapi-offline-banner__text",
35
+ children: x === "offline" ? y.offline : y.restored
36
+ })]
37
+ });
38
+ };
39
+ //#endregion
40
+ export { d as DEFAULT_OFFLINE_BANNER_LABELS, f as KapiOfflineBanner };
@@ -0,0 +1,24 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ import { type KapiProgressTone } from "./progressLogic";
3
+ import "./feedback.css";
4
+ export type KapiProgressSize = "sm" | "md" | "lg";
5
+ /**
6
+ * Atributos nativos (`id`, `style`, `data-*`, `aria-*`…) van al contenedor; el `role="progressbar"` y su
7
+ * nombre son del indicador: se nombra con `label` o, si no hay, con `aria-label` (que va al indicador, no al contenedor).
8
+ */
9
+ export type KapiProgressProps = Omit<HTMLAttributes<HTMLDivElement>, "children"> & {
10
+ /** Avance 0–100 (se clampa). */
11
+ value: number;
12
+ /** Forma: barra horizontal o anillo. */
13
+ variant?: "bar" | "circle";
14
+ /** Color del avance según el significado. */
15
+ tone?: KapiProgressTone;
16
+ /** Tamaño: grosor de la barra o diámetro del anillo. */
17
+ size?: KapiProgressSize;
18
+ /** Rótulo sobre la barra (o bajo el anillo). */
19
+ label?: ReactNode;
20
+ /** Muestra el porcentaje (a la derecha de la barra / en el centro del anillo). */
21
+ showValue?: boolean;
22
+ };
23
+ /** Progreso lineal (por defecto) o circular (`variant="circle"`) sobre tokens semánticos. */
24
+ export declare function KapiProgress({ value, variant, tone, size, label, showValue, "aria-label": ariaLabel, className, ...rest }: KapiProgressProps): import("react").JSX.Element;