@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,100 @@
1
+ "use client";
2
+ import { KapiField as e } from "./KapiField.js";
3
+ import { useLabels as t } from "../locale/KapiLocaleProvider.js";
4
+ /* empty css */
5
+ import { inputClasses as n } from "./KapiInput.js";
6
+ import { canDecrement as r, canIncrement as i, clampNumber as a, stepValue as o } from "./numberStepLogic.js";
7
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
8
+ import { useEffect as l, useId as u, useState as d } from "react";
9
+ import { Minus as f, Plus as p } from "lucide-react";
10
+ //#region src/components/inputs/KapiNumberStepper.tsx
11
+ var m = ({ size: e = "md", className: t = "" } = {}) => [
12
+ "kapi-stepper",
13
+ e !== "md" && `kapi-stepper--${e}`,
14
+ t
15
+ ].filter(Boolean).join(" "), h = {
16
+ decrease: "Disminuir",
17
+ increase: "Aumentar"
18
+ }, g = ({ value: g, onChange: _, min: v, max: y, step: b = 1, size: x = "md", status: S, label: C, help: w, wrapperClassName: T, labels: E, className: D, disabled: O, id: k, ...A }) => {
19
+ let j = t("numberStepper", h, E), M = u(), N = k ?? M, P = {
20
+ min: v,
21
+ max: y,
22
+ step: b
23
+ }, [F, I] = d(null);
24
+ l(() => I(null), [g]);
25
+ let L = (e) => {
26
+ let t = a(e, P);
27
+ t !== g && _(t), I(null);
28
+ }, R = () => {
29
+ if (F === null) return;
30
+ let e = Number(F.replace(",", "."));
31
+ L(F.trim() === "" || Number.isNaN(e) ? g : e);
32
+ }, z = (e) => {
33
+ let t = F === null || F.trim() === "" ? NaN : Number(F.replace(",", "."));
34
+ L(o(Number.isNaN(t) ? g : t, e, P));
35
+ }, B = /* @__PURE__ */ c("div", {
36
+ className: m({
37
+ size: x,
38
+ className: T
39
+ }),
40
+ children: [
41
+ /* @__PURE__ */ s("button", {
42
+ type: "button",
43
+ className: "kapi-stepper__btn",
44
+ "aria-label": j.decrease,
45
+ tabIndex: -1,
46
+ disabled: O || !r(g, P),
47
+ onClick: () => z(-1),
48
+ children: /* @__PURE__ */ s(f, {
49
+ size: 15,
50
+ strokeWidth: 2.4
51
+ })
52
+ }),
53
+ /* @__PURE__ */ s("input", {
54
+ ...A,
55
+ id: N,
56
+ type: "text",
57
+ inputMode: b % 1 == 0 ? "numeric" : "decimal",
58
+ role: "spinbutton",
59
+ "aria-valuenow": g,
60
+ "aria-valuemin": v,
61
+ "aria-valuemax": y,
62
+ "aria-invalid": S === "err" || void 0,
63
+ className: n({
64
+ size: x,
65
+ status: S,
66
+ num: !0,
67
+ className: `kapi-stepper__input ${D ?? ""}`.trim()
68
+ }),
69
+ value: F ?? String(g),
70
+ disabled: O,
71
+ onChange: (e) => I(e.target.value),
72
+ onBlur: R,
73
+ onKeyDown: (e) => {
74
+ e.key === "ArrowUp" ? (e.preventDefault(), z(1)) : e.key === "ArrowDown" ? (e.preventDefault(), z(-1)) : e.key === "Enter" && R();
75
+ }
76
+ }),
77
+ /* @__PURE__ */ s("button", {
78
+ type: "button",
79
+ className: "kapi-stepper__btn",
80
+ "aria-label": j.increase,
81
+ tabIndex: -1,
82
+ disabled: O || !i(g, P),
83
+ onClick: () => z(1),
84
+ children: /* @__PURE__ */ s(p, {
85
+ size: 15,
86
+ strokeWidth: 2.4
87
+ })
88
+ })
89
+ ]
90
+ });
91
+ return C == null && !w ? B : /* @__PURE__ */ s(e, {
92
+ label: C,
93
+ htmlFor: N,
94
+ help: w,
95
+ status: S,
96
+ children: B
97
+ });
98
+ };
99
+ //#endregion
100
+ export { h as DEFAULT_NUMBER_STEPPER_LABELS, g as KapiNumberStepper, m as stepperClasses };
@@ -0,0 +1,7 @@
1
+ import { type KapiCheckControlProps } from "./checkControl";
2
+ export type KapiRadioProps = KapiCheckControlProps;
3
+ /** Radio (`.kapi-check`). Agrupá con el mismo `name`. Props nativas al `<input>`; `className` a la etiqueta. */
4
+ export declare const KapiRadio: {
5
+ ({ label, className, ref, invalid, id, required, "aria-describedby": describedBy, "aria-invalid": ariaInvalid, "aria-required": ariaRequired, ...rest }: KapiCheckControlProps): import("react").JSX.Element;
6
+ displayName: string;
7
+ };
@@ -0,0 +1,5 @@
1
+ import { createCheckControl as e } from "./checkControl.js";
2
+ //#region src/components/inputs/KapiRadio.tsx
3
+ var t = e("radio", "KapiRadio");
4
+ //#endregion
5
+ export { t as KapiRadio };
@@ -0,0 +1,55 @@
1
+ import { type HTMLAttributes, type Ref } from "react";
2
+ import "./inputsExtra.css";
3
+ import type { KapiLabelsOverride } from "../labelsLogic";
4
+ export type KapiRatingSize = "sm" | "md" | "lg";
5
+ export type KapiRatingLabels = {
6
+ /** Accessible name when there is no `aria-label`. */
7
+ rating: string;
8
+ /** Joins value and max: "3 de 5". */
9
+ of: string;
10
+ };
11
+ export declare const DEFAULT_RATING_LABELS: KapiRatingLabels;
12
+ /** Native attributes (`id`, `style`, `data-*`…) go to the root (slider or image). */
13
+ export type KapiRatingProps = Omit<HTMLAttributes<HTMLDivElement>, "children" | "onChange" | "aria-label"> & {
14
+ /** Current rating, 0..max (halves allowed with `allowHalf`). */
15
+ value: number;
16
+ /** Omit to render a read-only (non-interactive) rating. */
17
+ onChange?: (value: number) => void;
18
+ /** Cantidad de estrellas (el valor máximo). */
19
+ max?: number;
20
+ /** Tamaño de las estrellas. */
21
+ size?: KapiRatingSize;
22
+ /** Deshabilita la interacción (se ve atenuado). */
23
+ disabled?: boolean;
24
+ /** Allow half stars. */
25
+ allowHalf?: boolean;
26
+ /** Accessible name; wins over `labels.rating` ("Calificación"). */
27
+ "aria-label"?: string;
28
+ /** Fixed copy (key `rating`). */
29
+ labels?: KapiLabelsOverride<KapiRatingLabels> | undefined;
30
+ /** Clase de la raíz. */
31
+ className?: string;
32
+ /** Name for native forms: renders an `<input type="hidden">` with the value (disabled with the rating). */
33
+ name?: string;
34
+ /** Marks the rating invalid (`aria-invalid`). Without it, taken from the wrapping `KapiField` (`status="err"`). */
35
+ invalid?: boolean;
36
+ /** Marks the rating required (`aria-required`). Without it, taken from the wrapping `KapiField`. */
37
+ required?: boolean;
38
+ /** Ref to the root (the focusable slider when interactive). */
39
+ ref?: Ref<HTMLDivElement>;
40
+ };
41
+ /** Wrapper classes. Pure and exported. */
42
+ export declare const ratingClasses: ({ size, interactive, disabled, className }?: {
43
+ size?: KapiRatingSize | undefined;
44
+ interactive?: boolean | undefined;
45
+ disabled?: boolean | undefined;
46
+ className?: string | undefined;
47
+ }) => string;
48
+ /**
49
+ * Star rating. With `onChange` it is a keyboard-operable slider
50
+ * (arrows, Home, End; click or hover-preview with the mouse; clicking the current
51
+ * value clears it). Without `onChange` it is a read-only image.
52
+ * Inside a `KapiField` the interactive slider takes the field id, name (`aria-labelledby`), help,
53
+ * `aria-invalid` and `aria-required`.
54
+ */
55
+ export declare const KapiRating: ({ value, onChange, max, size, disabled, allowHalf, className, labels, "aria-label": ariaLabelProp, name, invalid, required, id, "aria-describedby": describedBy, ref, ...rest }: KapiRatingProps) => import("react").JSX.Element;
@@ -0,0 +1,99 @@
1
+ "use client";
2
+ import { fieldControlProps as e } from "./fieldLogic.js";
3
+ import { useKapiField as t } from "./KapiField.js";
4
+ import { useLabels as n } from "../locale/KapiLocaleProvider.js";
5
+ /* empty css */
6
+ import { normalizeRating as r, ratingFromKey as i, ratingFromPointer as a, starFills as o } from "./ratingLogic.js";
7
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
8
+ import { useState as l } from "react";
9
+ import { Star as u } from "lucide-react";
10
+ //#region src/components/inputs/KapiRating.tsx
11
+ var d = {
12
+ rating: "Calificación",
13
+ of: "de"
14
+ }, f = {
15
+ sm: 16,
16
+ md: 22,
17
+ lg: 30
18
+ }, p = ({ size: e = "md", interactive: t = !1, disabled: n = !1, className: r = "" } = {}) => [
19
+ "kapi-rating",
20
+ e !== "md" && `kapi-rating--${e}`,
21
+ t && "kapi-rating--interactive",
22
+ n && "kapi-rating--disabled",
23
+ r
24
+ ].filter(Boolean).join(" "), m = ({ value: m, onChange: h, max: g = 5, size: _ = "md", disabled: v = !1, allowHalf: y = !1, className: b, labels: x, "aria-label": S, name: C, invalid: w, required: T, id: E, "aria-describedby": D, ref: O, ...k }) => {
25
+ let A = n("rating", d, x), j = t(), [M, N] = l(null), P = h !== void 0 && !v, F = e(P ? j : null, {
26
+ id: E,
27
+ describedBy: D,
28
+ invalid: w,
29
+ required: T,
30
+ labelable: !1,
31
+ ariaLabel: S
32
+ }), I = S ?? A.rating, L = r(m, g, y), R = C ? /* @__PURE__ */ s("input", {
33
+ type: "hidden",
34
+ name: C,
35
+ value: L,
36
+ disabled: v
37
+ }) : null, z = o(P && M !== null ? M : L, g, y), B = f[_], V = (e, t) => {
38
+ let n = e.currentTarget.getBoundingClientRect(), r = n.width > 0 ? (e.clientX - n.left) / n.width : 1;
39
+ return a(t, r, y);
40
+ }, H = (e) => {
41
+ let t = i(e.key, L, g, y);
42
+ t !== null && (e.preventDefault(), t !== L && h?.(t));
43
+ }, U = z.map((e, t) => /* @__PURE__ */ c("span", {
44
+ className: "kapi-rating__star",
45
+ "data-fill": e,
46
+ onMouseMove: P ? (e) => N(V(e, t)) : void 0,
47
+ onClick: P ? (e) => {
48
+ let n = V(e, t);
49
+ h(n === L ? 0 : n);
50
+ } : void 0,
51
+ children: [/* @__PURE__ */ s(u, {
52
+ size: B,
53
+ strokeWidth: 2,
54
+ className: "kapi-rating__base",
55
+ "aria-hidden": "true"
56
+ }), e !== "empty" && /* @__PURE__ */ s("span", {
57
+ className: "kapi-rating__fill",
58
+ style: { width: e === "half" ? "50%" : "100%" },
59
+ children: /* @__PURE__ */ s(u, {
60
+ size: B,
61
+ strokeWidth: 2,
62
+ fill: "currentColor",
63
+ "aria-hidden": "true"
64
+ })
65
+ })]
66
+ }, t)), W = p({
67
+ size: _,
68
+ interactive: P,
69
+ disabled: v,
70
+ className: b
71
+ });
72
+ return P ? /* @__PURE__ */ c("div", {
73
+ ...k,
74
+ ...F,
75
+ ref: O,
76
+ className: W,
77
+ role: "slider",
78
+ tabIndex: 0,
79
+ "aria-label": F["aria-labelledby"] ? void 0 : I,
80
+ "aria-valuemin": 0,
81
+ "aria-valuemax": g,
82
+ "aria-valuenow": L,
83
+ "aria-valuetext": `${L} ${A.of} ${g}`,
84
+ onKeyDown: H,
85
+ onMouseLeave: () => N(null),
86
+ children: [U, R]
87
+ }) : /* @__PURE__ */ c("div", {
88
+ ...k,
89
+ ref: O,
90
+ id: E,
91
+ "aria-describedby": D,
92
+ className: W,
93
+ role: "img",
94
+ "aria-label": `${I}: ${L} ${A.of} ${g}`,
95
+ children: [U, R]
96
+ });
97
+ };
98
+ //#endregion
99
+ export { d as DEFAULT_RATING_LABELS, m as KapiRating, p as ratingClasses };
@@ -0,0 +1,41 @@
1
+ import type { FocusEvent, HTMLAttributes, ReactNode, Ref } from "react";
2
+ export type KapiSegmentedVariant = "text" | "icon" | "both";
3
+ export type KapiSegmentedColor = "success" | "warning" | "danger" | "info";
4
+ export type KapiSegmentedItem<Id extends string | number = string> = {
5
+ id: Id;
6
+ label: string;
7
+ /** Ícono (lucide-react). Se muestra en las variantes `icon` y `both`. */
8
+ icon?: ReactNode;
9
+ /** Contador en píldora a la derecha. */
10
+ count?: number;
11
+ /** Color del ítem cuando está activo (en vez del primario). */
12
+ color?: KapiSegmentedColor;
13
+ };
14
+ /** Atributos nativos (`id`, `style`, `data-*`…) van al `radiogroup`; el rol y el teclado son propios. */
15
+ export type KapiSegmentedProps<Id extends string | number = string> = Omit<HTMLAttributes<HTMLDivElement>, "children" | "onChange" | "defaultValue" | "role" | "onKeyDown"> & {
16
+ /** Opciones, en orden; cada una con `id`, `label` y opcionalmente `icon`. */
17
+ items: KapiSegmentedItem<Id>[];
18
+ /** `id` de la opción seleccionada (controlado). */
19
+ value: Id;
20
+ /** Se llama con el `id` de la opción elegida. */
21
+ onChange: (id: Id) => void;
22
+ /** `text` sólo label · `icon` sólo ícono (label en tooltip) · `both` ambos. */
23
+ variant?: KapiSegmentedVariant | undefined;
24
+ /** Name for native forms: renders an `<input type="hidden">` with the selected `id`. */
25
+ name?: string | undefined;
26
+ /** Fires when focus leaves the group as a whole (moving between options does not count). */
27
+ onBlur?: ((event: FocusEvent<HTMLDivElement>) => void) | undefined;
28
+ /** Marks the group invalid (`aria-invalid`). Without it, taken from the wrapping `KapiField` (`status="err"`). */
29
+ invalid?: boolean | undefined;
30
+ /** Marks the group required (`aria-required`). Without it, taken from the wrapping `KapiField`. */
31
+ required?: boolean | undefined;
32
+ /** Ref to the `radiogroup`. */
33
+ ref?: Ref<HTMLDivElement> | undefined;
34
+ };
35
+ /**
36
+ * Segmentado: elección única (patrón WAI-ARIA radio group: `radiogroup`/`radio`, roving tabindex,
37
+ * flechas con vuelta, Home/End; la flecha marca y enfoca). Un ítem activo con `color` usa ese color (vía `data-color`).
38
+ * En variante `icon` cada tab muestra su label en un tooltip al hover.
39
+ * Dentro de un `KapiField` toma id, nombre (`aria-labelledby`), ayuda, `aria-invalid` y `aria-required`.
40
+ */
41
+ export declare const KapiSegmented: <Id extends string | number = string>({ items, value, onChange, variant, "aria-label": ariaLabel, className, name, onBlur, invalid, required, id, "aria-describedby": describedBy, ref, ...rest }: KapiSegmentedProps<Id>) => import("react").JSX.Element;
@@ -0,0 +1,83 @@
1
+ "use client";
2
+ import { assignRef as e, fieldControlProps as t } from "./fieldLogic.js";
3
+ import { useKapiField as n } from "./KapiField.js";
4
+ import { joinClasses as r } from "../rootProps.js";
5
+ import { useSlidingIndicator as i } from "../../hooks/useSlidingIndicator.js";
6
+ import { KapiTooltip as a } from "../overlays/KapiTooltip.js";
7
+ import { nextRadioIndex as o } from "./segmentedLogic.js";
8
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
9
+ //#region src/components/inputs/KapiSegmented.tsx
10
+ var l = ({ items: l, value: u, onChange: d, variant: f = "text", "aria-label": p, className: m, name: h, onBlur: g, invalid: _, required: v, id: y, "aria-describedby": b, ref: x, ...S }) => {
11
+ let C = t(n(), {
12
+ id: y,
13
+ describedBy: b,
14
+ invalid: _,
15
+ required: v,
16
+ labelable: !1,
17
+ ariaLabel: p
18
+ }), w = l.find((e) => e.id === u), { containerRef: T, indicatorRef: E } = i({
19
+ active: u,
20
+ deps: [l, f],
21
+ findActive: (e) => e.querySelector("[role=\"radio\"][aria-checked=\"true\"]")
22
+ }), D = l.findIndex((e) => e.id === u), O = (e) => {
23
+ let t = o(l.length, D, e.key), n = t === void 0 ? void 0 : l[t];
24
+ t !== void 0 && n && (e.preventDefault(), d(n.id), T.current?.querySelectorAll("[role=\"radio\"]")[t]?.focus());
25
+ }, k = (e) => {
26
+ e.currentTarget.contains(e.relatedTarget) || g?.(e);
27
+ };
28
+ return /* @__PURE__ */ c("div", {
29
+ ...S,
30
+ ...C,
31
+ ref: (t) => {
32
+ T.current = t, e(x, t);
33
+ },
34
+ className: r("kapi-seg", m),
35
+ role: "radiogroup",
36
+ "aria-label": p,
37
+ onKeyDown: O,
38
+ onBlur: k,
39
+ children: [
40
+ /* @__PURE__ */ s("span", {
41
+ ref: E,
42
+ className: "kapi-seg__indicator",
43
+ "data-color": w?.color,
44
+ "aria-hidden": "true"
45
+ }),
46
+ l.map((e, t) => {
47
+ let n = u === e.id, r = /* @__PURE__ */ c("button", {
48
+ type: "button",
49
+ role: "radio",
50
+ "aria-checked": n,
51
+ tabIndex: n || D === -1 && t === 0 ? 0 : -1,
52
+ "aria-label": f === "icon" ? e.label : void 0,
53
+ className: `kapi-seg__btn${n ? " is-on" : ""}`,
54
+ "data-color": n && e.color ? e.color : void 0,
55
+ onClick: () => d(e.id),
56
+ children: [
57
+ (f === "icon" || f === "both") && e.icon && /* @__PURE__ */ s("span", {
58
+ className: "kapi-seg__ico",
59
+ children: e.icon
60
+ }),
61
+ f !== "icon" && /* @__PURE__ */ s("span", { children: e.label }),
62
+ e.count != null && /* @__PURE__ */ s("span", {
63
+ className: "kapi-seg__n",
64
+ children: e.count
65
+ })
66
+ ]
67
+ }, e.id);
68
+ return f === "icon" && e.label ? /* @__PURE__ */ s(a, {
69
+ label: e.label,
70
+ prefer: "top",
71
+ children: r
72
+ }, e.id) : r;
73
+ }),
74
+ h && /* @__PURE__ */ s("input", {
75
+ type: "hidden",
76
+ name: h,
77
+ value: String(u)
78
+ })
79
+ ]
80
+ });
81
+ };
82
+ //#endregion
83
+ export { l as KapiSegmented };
@@ -0,0 +1,109 @@
1
+ import { type CSSProperties, type FocusEvent, type ReactNode, type Ref } from "react";
2
+ import { type KapiSelectEntry, type KapiSelectGroup, type KapiSelectOption } from "./selectLogic";
3
+ import "./KapiSelect.css";
4
+ import type { KapiLabelsOverride } from "../labelsLogic";
5
+ export type { KapiSelectEntry, KapiSelectGroup, KapiSelectOption };
6
+ export type KapiSelectSize = "sm" | "md" | "lg";
7
+ /** Modo simple (default): el valor es un `string` o `null` (vacío). */
8
+ export type KapiSelectSingleProps<V extends string = string> = {
9
+ /** Modo simple (`false` u omitido): un solo valor. */
10
+ multiple?: false;
11
+ /** Controlado. `null` = sin selección. */
12
+ value?: V | null;
13
+ /** No controlado: valor inicial. */
14
+ defaultValue?: V | null;
15
+ /** Recibe el valor elegido, o `null` al limpiar. */
16
+ onChange?: (value: V | null) => void;
17
+ };
18
+ /** Modo múltiple: el valor es siempre un arreglo (vacío = sin selección). */
19
+ export type KapiSelectMultiProps<V extends string = string> = {
20
+ multiple: true;
21
+ /** Controlado. */
22
+ value?: V[];
23
+ /** No controlado: valor inicial. */
24
+ defaultValue?: V[];
25
+ /** Recibe la selección completa. */
26
+ onChange?: (value: V[]) => void;
27
+ };
28
+ /**
29
+ * Props de `KapiSelect`. El tipo de `value` / `onChange` depende de `multiple`. `T` tipa
30
+ * `option.data`; `V` permite estrechar el valor a una unión literal (se infiere de `value`/`onChange`).
31
+ */
32
+ export type KapiSelectProps<T = unknown, V extends string = string> = KapiSelectBaseProps<T> & (KapiSelectSingleProps<V> | KapiSelectMultiProps<V>);
33
+ /** Props comunes a ambos modos. */
34
+ export interface KapiSelectBaseProps<T = unknown> {
35
+ /** Opciones (`{ value, label }`) o grupos (`{ label, options }`). Con `loadOptions`, lista inicial para la búsqueda vacía. */
36
+ options?: KapiSelectEntry<T>[];
37
+ /** Carga async de opciones según lo tipeado (reemplaza al filtro local); se aborta con `signal` si queda vieja. */
38
+ loadOptions?: (query: string, context: {
39
+ signal: AbortSignal;
40
+ }) => Promise<KapiSelectEntry<T>[]>;
41
+ /** Espera tras la última tecla antes de llamar a `loadOptions`, en ms. @default 300 */
42
+ loadDelay?: number;
43
+ /** Ofrece "Crear “texto”" si ninguna opción coincide exacto; si devuelve una opción, se elige. Una promesa debe terminar (resolver o rechazar): mientras está pendiente no se puede crear otra. */
44
+ onCreate?: (text: string) => KapiSelectOption<T> | void | Promise<KapiSelectOption<T> | void>;
45
+ /** Filtrar tipeando. Default `true`. */
46
+ searchable?: boolean;
47
+ /** Muestra el botón de limpiar cuando hay valor. */
48
+ clearable?: boolean;
49
+ /** Deshabilita el control. */
50
+ disabled?: boolean;
51
+ /** Estado de carga: spinner en el control y `loadingMessage` en el menú. */
52
+ loading?: boolean;
53
+ /** Gana sobre `labels.placeholder` ("Seleccionar…"). */
54
+ placeholder?: string;
55
+ /** Escala compartida con inputs y botones (misma altura por token). Default `md`. */
56
+ size?: KapiSelectSize;
57
+ /** Contenido rico de cada opción en el menú (ícono, título, sub-label). */
58
+ renderOption?: (opt: KapiSelectOption<T>) => ReactNode;
59
+ /** Gana sobre `labels.noOptions` ("Sin opciones"). */
60
+ noOptionsMessage?: string;
61
+ /** Gana sobre `labels.loading` ("Cargando…"). */
62
+ loadingMessage?: string;
63
+ /** Nombre del campo: con `name` el valor viaja en el `<form>` en inputs ocultos. */
64
+ name?: string;
65
+ /** `id` del control enfocable (no del envoltorio): `className`/`style` van al envoltorio. */
66
+ id?: string;
67
+ /** Clase del envoltorio. */
68
+ className?: string;
69
+ /** Estilos en línea del envoltorio. */
70
+ style?: CSSProperties;
71
+ /** Nombre accesible cuando no hay `<label>` asociado (o `KapiField`). */
72
+ "aria-label"?: string;
73
+ /** Textos fijos (limpiar, quitar chip, placeholder y estados del menú). */
74
+ labels?: KapiLabelsOverride<KapiSelectLabels> | undefined;
75
+ /** Ref al elemento enfocable (el input si hay búsqueda; el combobox si no). */
76
+ ref?: Ref<HTMLElement>;
77
+ /** Se dispara cuando el foco sale del control (moverse dentro de él o de su menú no cuenta). */
78
+ onBlur?: (event: FocusEvent<HTMLElement>) => void;
79
+ }
80
+ /** Clases del contenedor. Pura y exportada para testear. */
81
+ export declare const selectClasses: ({ size, open, disabled, multi, className }: {
82
+ size?: KapiSelectSize | undefined;
83
+ open?: boolean | undefined;
84
+ disabled?: boolean | undefined;
85
+ multi?: boolean | undefined;
86
+ className?: string | undefined;
87
+ }) => string;
88
+ /**
89
+ * Select: combobox ARIA nativo (sin dependencias). Menú portaleado a `.kapi`
90
+ * (escapa tablas/overflow), búsqueda sin acentos, teclado completo, grupos y múltiple con chips.
91
+ */
92
+ export type KapiSelectLabels = {
93
+ /** Botón que vacía la selección. */
94
+ clear: string;
95
+ /** Prefijo del quitar de cada chip en modo múltiple ("Quitar Medicina"). */
96
+ remove: string;
97
+ placeholder: string;
98
+ noOptions: string;
99
+ loading: string;
100
+ /** Mensaje cuando `loadOptions` falla. */
101
+ loadError: string;
102
+ /** Mensaje cuando la promesa de `onCreate` se rechaza (lo tipeado se conserva para reintentar). */
103
+ createError: string;
104
+ /** Prefijo de la opción que crea un valor nuevo ("Crear “Medicina”"). */
105
+ create: string;
106
+ };
107
+ export declare const DEFAULT_SELECT_LABELS: KapiSelectLabels;
108
+ /** Select: búsqueda, grupos, modo múltiple con chips, teclado y typeahead de WAI-ARIA. */
109
+ export declare const KapiSelect: <T = unknown, V extends string = string>(props: KapiSelectProps<T, V>) => import("react").JSX.Element;