@accelint/design-toolkit 9.3.0 → 9.4.0

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 (722) hide show
  1. package/catalog-info.yaml +1 -1
  2. package/dist/components/accordion/context.d.ts +6 -0
  3. package/dist/components/accordion/context.js +6 -0
  4. package/dist/components/accordion/context.js.map +1 -1
  5. package/dist/components/accordion/group.d.ts +37 -2
  6. package/dist/components/accordion/group.js +34 -0
  7. package/dist/components/accordion/group.js.map +1 -1
  8. package/dist/components/accordion/header.d.ts +27 -2
  9. package/dist/components/accordion/header.js +25 -1
  10. package/dist/components/accordion/header.js.map +1 -1
  11. package/dist/components/accordion/index.d.ts +18 -4
  12. package/dist/components/accordion/index.js +16 -2
  13. package/dist/components/accordion/index.js.map +1 -1
  14. package/dist/components/accordion/panel.d.ts +29 -2
  15. package/dist/components/accordion/panel.js +26 -0
  16. package/dist/components/accordion/panel.js.map +1 -1
  17. package/dist/components/accordion/trigger.d.ts +25 -2
  18. package/dist/components/accordion/trigger.js +23 -1
  19. package/dist/components/accordion/trigger.js.map +1 -1
  20. package/dist/components/accordion/types.d.ts +33 -0
  21. package/dist/components/action-bar/index.d.ts +29 -8
  22. package/dist/components/action-bar/index.js +27 -6
  23. package/dist/components/action-bar/index.js.map +1 -1
  24. package/dist/components/action-bar/types.d.ts +7 -0
  25. package/dist/components/avatar/context.d.ts +22 -4
  26. package/dist/components/avatar/context.js +18 -0
  27. package/dist/components/avatar/context.js.map +1 -1
  28. package/dist/components/avatar/index.d.ts +22 -15
  29. package/dist/components/avatar/index.js +21 -14
  30. package/dist/components/avatar/index.js.map +1 -1
  31. package/dist/components/avatar/types.d.ts +13 -0
  32. package/dist/components/badge/context.d.ts +20 -2
  33. package/dist/components/badge/context.js +18 -0
  34. package/dist/components/badge/context.js.map +1 -1
  35. package/dist/components/badge/index.d.ts +28 -14
  36. package/dist/components/badge/index.js +28 -14
  37. package/dist/components/badge/index.js.map +1 -1
  38. package/dist/components/badge/types.d.ts +9 -0
  39. package/dist/components/breadcrumbs/index.d.ts +8 -0
  40. package/dist/components/breadcrumbs/index.js +7 -0
  41. package/dist/components/breadcrumbs/index.js.map +1 -1
  42. package/dist/components/breadcrumbs/item.d.ts +23 -0
  43. package/dist/components/breadcrumbs/item.js +23 -1
  44. package/dist/components/breadcrumbs/item.js.map +1 -1
  45. package/dist/components/breadcrumbs/types.d.ts +17 -0
  46. package/dist/components/button/context.d.ts +62 -8
  47. package/dist/components/button/context.js +54 -0
  48. package/dist/components/button/context.js.map +1 -1
  49. package/dist/components/button/index.d.ts +21 -2
  50. package/dist/components/button/index.js +19 -0
  51. package/dist/components/button/index.js.map +1 -1
  52. package/dist/components/button/link.d.ts +20 -0
  53. package/dist/components/button/link.js +20 -0
  54. package/dist/components/button/link.js.map +1 -1
  55. package/dist/components/button/toggle.d.ts +23 -2
  56. package/dist/components/button/toggle.js +22 -1
  57. package/dist/components/button/toggle.js.map +1 -1
  58. package/dist/components/button/types.d.ts +26 -0
  59. package/dist/components/checkbox/context.d.ts +9 -3
  60. package/dist/components/checkbox/context.js +6 -0
  61. package/dist/components/checkbox/context.js.map +1 -1
  62. package/dist/components/checkbox/group.d.ts +31 -2
  63. package/dist/components/checkbox/group.js +28 -0
  64. package/dist/components/checkbox/group.js.map +1 -1
  65. package/dist/components/checkbox/index.d.ts +19 -2
  66. package/dist/components/checkbox/index.js +19 -1
  67. package/dist/components/checkbox/index.js.map +1 -1
  68. package/dist/components/checkbox/types.d.ts +19 -0
  69. package/dist/components/chip/context.d.ts +22 -4
  70. package/dist/components/chip/context.js +18 -0
  71. package/dist/components/chip/context.js.map +1 -1
  72. package/dist/components/chip/deletable.d.ts +38 -2
  73. package/dist/components/chip/deletable.js +36 -1
  74. package/dist/components/chip/deletable.js.map +1 -1
  75. package/dist/components/chip/index.d.ts +24 -2
  76. package/dist/components/chip/index.js +22 -0
  77. package/dist/components/chip/index.js.map +1 -1
  78. package/dist/components/chip/list.d.ts +47 -2
  79. package/dist/components/chip/list.js +45 -0
  80. package/dist/components/chip/list.js.map +1 -1
  81. package/dist/components/chip/selectable.d.ts +32 -0
  82. package/dist/components/chip/selectable.js +31 -0
  83. package/dist/components/chip/selectable.js.map +1 -1
  84. package/dist/components/chip/types.d.ts +27 -0
  85. package/dist/components/classification-badge/context.d.ts +18 -2
  86. package/dist/components/classification-badge/context.js +16 -0
  87. package/dist/components/classification-badge/context.js.map +1 -1
  88. package/dist/components/classification-badge/index.d.ts +26 -8
  89. package/dist/components/classification-badge/index.js +25 -8
  90. package/dist/components/classification-badge/index.js.map +1 -1
  91. package/dist/components/classification-badge/types.d.ts +4 -0
  92. package/dist/components/classification-banner/context.d.ts +20 -4
  93. package/dist/components/classification-banner/context.js +16 -0
  94. package/dist/components/classification-banner/context.js.map +1 -1
  95. package/dist/components/classification-banner/index.d.ts +12 -2
  96. package/dist/components/classification-banner/index.js +9 -0
  97. package/dist/components/classification-banner/index.js.map +1 -1
  98. package/dist/components/classification-banner/types.d.ts +4 -0
  99. package/dist/components/clock/index.d.ts +12 -2
  100. package/dist/components/clock/index.js +10 -0
  101. package/dist/components/clock/index.js.map +1 -1
  102. package/dist/components/clock/types.d.ts +4 -0
  103. package/dist/components/color-picker/index.d.ts +12 -10
  104. package/dist/components/color-picker/index.js +10 -8
  105. package/dist/components/color-picker/index.js.map +1 -1
  106. package/dist/components/color-picker/types.d.ts +8 -0
  107. package/dist/components/combobox-field/context.d.ts +20 -4
  108. package/dist/components/combobox-field/context.js +16 -0
  109. package/dist/components/combobox-field/context.js.map +1 -1
  110. package/dist/components/combobox-field/index.d.ts +15 -2
  111. package/dist/components/combobox-field/index.js +13 -1
  112. package/dist/components/combobox-field/index.js.map +1 -1
  113. package/dist/components/combobox-field/types.d.ts +19 -0
  114. package/dist/components/coordinate-field/context.d.ts +15 -6
  115. package/dist/components/coordinate-field/context.js +9 -0
  116. package/dist/components/coordinate-field/context.js.map +1 -1
  117. package/dist/components/coordinate-field/coordinate-utils.d.ts +8 -0
  118. package/dist/components/coordinate-field/coordinate-utils.js +8 -0
  119. package/dist/components/coordinate-field/coordinate-utils.js.map +1 -1
  120. package/dist/components/coordinate-field/index.d.ts +29 -2
  121. package/dist/components/coordinate-field/index.js +29 -3
  122. package/dist/components/coordinate-field/index.js.map +1 -1
  123. package/dist/components/coordinate-field/segment.d.ts +27 -2
  124. package/dist/components/coordinate-field/segment.js +25 -0
  125. package/dist/components/coordinate-field/segment.js.map +1 -1
  126. package/dist/components/coordinate-field/styles.module.css +5 -1
  127. package/dist/components/date-field/index.d.ts +27 -2
  128. package/dist/components/date-field/index.js +25 -0
  129. package/dist/components/date-field/index.js.map +1 -1
  130. package/dist/components/date-field/types.d.ts +19 -3
  131. package/dist/components/deferred-collection/index.d.ts +10 -2
  132. package/dist/components/deferred-collection/index.js +8 -0
  133. package/dist/components/deferred-collection/index.js.map +1 -1
  134. package/dist/components/deferred-collection/types.d.ts +6 -3
  135. package/dist/components/details-list/context.d.ts +25 -4
  136. package/dist/components/details-list/context.js +21 -0
  137. package/dist/components/details-list/context.js.map +1 -1
  138. package/dist/components/details-list/index.d.ts +9 -2
  139. package/dist/components/details-list/index.js +7 -0
  140. package/dist/components/details-list/index.js.map +1 -1
  141. package/dist/components/details-list/label.d.ts +18 -2
  142. package/dist/components/details-list/label.js +16 -0
  143. package/dist/components/details-list/label.js.map +1 -1
  144. package/dist/components/details-list/types.d.ts +14 -0
  145. package/dist/components/details-list/value.d.ts +20 -2
  146. package/dist/components/details-list/value.js +17 -0
  147. package/dist/components/details-list/value.js.map +1 -1
  148. package/dist/components/dialog/content.d.ts +23 -2
  149. package/dist/components/dialog/content.js +20 -0
  150. package/dist/components/dialog/content.js.map +1 -1
  151. package/dist/components/dialog/context.d.ts +5 -2
  152. package/dist/components/dialog/context.js +3 -0
  153. package/dist/components/dialog/context.js.map +1 -1
  154. package/dist/components/dialog/footer.d.ts +26 -2
  155. package/dist/components/dialog/footer.js +23 -0
  156. package/dist/components/dialog/footer.js.map +1 -1
  157. package/dist/components/dialog/index.d.ts +12 -2
  158. package/dist/components/dialog/index.js +10 -0
  159. package/dist/components/dialog/index.js.map +1 -1
  160. package/dist/components/dialog/title.d.ts +21 -2
  161. package/dist/components/dialog/title.js +18 -0
  162. package/dist/components/dialog/title.js.map +1 -1
  163. package/dist/components/dialog/trigger.d.ts +18 -0
  164. package/dist/components/dialog/trigger.js +17 -0
  165. package/dist/components/dialog/trigger.js.map +1 -1
  166. package/dist/components/dialog/types.d.ts +12 -0
  167. package/dist/components/divider/context.d.ts +24 -4
  168. package/dist/components/divider/context.js +20 -0
  169. package/dist/components/divider/context.js.map +1 -1
  170. package/dist/components/divider/index.d.ts +13 -2
  171. package/dist/components/divider/index.js +10 -0
  172. package/dist/components/divider/index.js.map +1 -1
  173. package/dist/components/divider/types.d.ts +4 -4
  174. package/dist/components/drawer/back.d.ts +21 -2
  175. package/dist/components/drawer/back.js +19 -1
  176. package/dist/components/drawer/back.js.map +1 -1
  177. package/dist/components/drawer/close.d.ts +25 -2
  178. package/dist/components/drawer/close.js +28 -3
  179. package/dist/components/drawer/close.js.map +1 -1
  180. package/dist/components/drawer/content.d.ts +22 -2
  181. package/dist/components/drawer/content.js +19 -0
  182. package/dist/components/drawer/content.js.map +1 -1
  183. package/dist/components/drawer/context.d.ts +46 -4
  184. package/dist/components/drawer/context.js +45 -2
  185. package/dist/components/drawer/context.js.map +1 -1
  186. package/dist/components/drawer/events.d.ts +2 -0
  187. package/dist/components/drawer/events.js +2 -0
  188. package/dist/components/drawer/events.js.map +1 -1
  189. package/dist/components/drawer/footer.d.ts +24 -2
  190. package/dist/components/drawer/footer.js +21 -0
  191. package/dist/components/drawer/footer.js.map +1 -1
  192. package/dist/components/drawer/header-title.d.ts +22 -4
  193. package/dist/components/drawer/header-title.js +19 -2
  194. package/dist/components/drawer/header-title.js.map +1 -1
  195. package/dist/components/drawer/header.d.ts +34 -2
  196. package/dist/components/drawer/header.js +42 -2
  197. package/dist/components/drawer/header.js.map +1 -1
  198. package/dist/components/drawer/index.d.ts +14 -2
  199. package/dist/components/drawer/index.js +16 -0
  200. package/dist/components/drawer/index.js.map +1 -1
  201. package/dist/components/drawer/layout-main.d.ts +23 -2
  202. package/dist/components/drawer/layout-main.js +20 -0
  203. package/dist/components/drawer/layout-main.js.map +1 -1
  204. package/dist/components/drawer/layout.d.ts +25 -2
  205. package/dist/components/drawer/layout.js +22 -0
  206. package/dist/components/drawer/layout.js.map +1 -1
  207. package/dist/components/drawer/menu-item.d.ts +25 -2
  208. package/dist/components/drawer/menu-item.js +22 -0
  209. package/dist/components/drawer/menu-item.js.map +1 -1
  210. package/dist/components/drawer/menu.d.ts +22 -2
  211. package/dist/components/drawer/menu.js +19 -0
  212. package/dist/components/drawer/menu.js.map +1 -1
  213. package/dist/components/drawer/panel.d.ts +21 -2
  214. package/dist/components/drawer/panel.js +18 -0
  215. package/dist/components/drawer/panel.js.map +1 -1
  216. package/dist/components/drawer/trigger.d.ts +31 -2
  217. package/dist/components/drawer/trigger.js +29 -1
  218. package/dist/components/drawer/trigger.js.map +1 -1
  219. package/dist/components/drawer/types.d.ts +149 -2
  220. package/dist/components/drawer/view.d.ts +25 -2
  221. package/dist/components/drawer/view.js +22 -0
  222. package/dist/components/drawer/view.js.map +1 -1
  223. package/dist/components/flashcard/index.d.ts +129 -27
  224. package/dist/components/flashcard/index.js +120 -18
  225. package/dist/components/flashcard/index.js.map +1 -1
  226. package/dist/components/flashcard/styles.module.css +1 -1
  227. package/dist/components/flashcard/types.d.ts +12 -0
  228. package/dist/components/hero/context.d.ts +5 -2
  229. package/dist/components/hero/context.js +3 -0
  230. package/dist/components/hero/context.js.map +1 -1
  231. package/dist/components/hero/index.d.ts +9 -2
  232. package/dist/components/hero/index.js +7 -0
  233. package/dist/components/hero/index.js.map +1 -1
  234. package/dist/components/hero/subtitle.d.ts +17 -2
  235. package/dist/components/hero/subtitle.js +15 -0
  236. package/dist/components/hero/subtitle.js.map +1 -1
  237. package/dist/components/hero/title.d.ts +15 -2
  238. package/dist/components/hero/title.js +13 -0
  239. package/dist/components/hero/title.js.map +1 -1
  240. package/dist/components/hero/types.d.ts +9 -0
  241. package/dist/components/hotkey/context.d.ts +24 -4
  242. package/dist/components/hotkey/context.js +20 -0
  243. package/dist/components/hotkey/context.js.map +1 -1
  244. package/dist/components/hotkey/index.d.ts +17 -2
  245. package/dist/components/hotkey/index.js +15 -0
  246. package/dist/components/hotkey/index.js.map +1 -1
  247. package/dist/components/hotkey/set.d.ts +21 -2
  248. package/dist/components/hotkey/set.js +18 -0
  249. package/dist/components/hotkey/set.js.map +1 -1
  250. package/dist/components/hotkey/types.d.ts +4 -0
  251. package/dist/components/icon/context.d.ts +24 -4
  252. package/dist/components/icon/context.js +20 -0
  253. package/dist/components/icon/context.js.map +1 -1
  254. package/dist/components/icon/index.d.ts +15 -2
  255. package/dist/components/icon/index.js +13 -0
  256. package/dist/components/icon/index.js.map +1 -1
  257. package/dist/components/icon/types.d.ts +4 -0
  258. package/dist/components/input/context.d.ts +4 -0
  259. package/dist/components/input/context.js +4 -0
  260. package/dist/components/input/context.js.map +1 -1
  261. package/dist/components/input/index.d.ts +17 -2
  262. package/dist/components/input/index.js +16 -1
  263. package/dist/components/input/index.js.map +1 -1
  264. package/dist/components/input/types.d.ts +16 -0
  265. package/dist/components/kanban/card-body.d.ts +10 -2
  266. package/dist/components/kanban/card-body.js +8 -0
  267. package/dist/components/kanban/card-body.js.map +1 -1
  268. package/dist/components/kanban/card-header-actions.d.ts +10 -2
  269. package/dist/components/kanban/card-header-actions.js +8 -0
  270. package/dist/components/kanban/card-header-actions.js.map +1 -1
  271. package/dist/components/kanban/card-header-title.d.ts +10 -2
  272. package/dist/components/kanban/card-header-title.js +8 -0
  273. package/dist/components/kanban/card-header-title.js.map +1 -1
  274. package/dist/components/kanban/card-header.d.ts +12 -2
  275. package/dist/components/kanban/card-header.js +10 -0
  276. package/dist/components/kanban/card-header.js.map +1 -1
  277. package/dist/components/kanban/card.d.ts +26 -2
  278. package/dist/components/kanban/card.js +23 -0
  279. package/dist/components/kanban/card.js.map +1 -1
  280. package/dist/components/kanban/column-actions.d.ts +10 -2
  281. package/dist/components/kanban/column-actions.js +9 -1
  282. package/dist/components/kanban/column-actions.js.map +1 -1
  283. package/dist/components/kanban/column-container.d.ts +10 -2
  284. package/dist/components/kanban/column-container.js +8 -0
  285. package/dist/components/kanban/column-container.js.map +1 -1
  286. package/dist/components/kanban/column-content.d.ts +13 -2
  287. package/dist/components/kanban/column-content.js +11 -0
  288. package/dist/components/kanban/column-content.js.map +1 -1
  289. package/dist/components/kanban/column-header-actions.d.ts +13 -2
  290. package/dist/components/kanban/column-header-actions.js +11 -0
  291. package/dist/components/kanban/column-header-actions.js.map +1 -1
  292. package/dist/components/kanban/column-header-drag-handle.d.ts +7 -2
  293. package/dist/components/kanban/column-header-drag-handle.js +6 -1
  294. package/dist/components/kanban/column-header-drag-handle.js.map +1 -1
  295. package/dist/components/kanban/column-header-title.d.ts +10 -2
  296. package/dist/components/kanban/column-header-title.js +8 -0
  297. package/dist/components/kanban/column-header-title.js.map +1 -1
  298. package/dist/components/kanban/column-header.d.ts +12 -2
  299. package/dist/components/kanban/column-header.js +10 -0
  300. package/dist/components/kanban/column-header.js.map +1 -1
  301. package/dist/components/kanban/column.d.ts +22 -2
  302. package/dist/components/kanban/column.js +19 -0
  303. package/dist/components/kanban/column.js.map +1 -1
  304. package/dist/components/kanban/context.d.ts +49 -2
  305. package/dist/components/kanban/context.js +30 -0
  306. package/dist/components/kanban/context.js.map +1 -1
  307. package/dist/components/kanban/header-actions.d.ts +10 -2
  308. package/dist/components/kanban/header-actions.js +8 -0
  309. package/dist/components/kanban/header-actions.js.map +1 -1
  310. package/dist/components/kanban/header-search.d.ts +9 -2
  311. package/dist/components/kanban/header-search.js +7 -0
  312. package/dist/components/kanban/header-search.js.map +1 -1
  313. package/dist/components/kanban/header-title.d.ts +10 -2
  314. package/dist/components/kanban/header-title.js +8 -0
  315. package/dist/components/kanban/header-title.js.map +1 -1
  316. package/dist/components/kanban/header.d.ts +12 -2
  317. package/dist/components/kanban/header.js +10 -0
  318. package/dist/components/kanban/header.js.map +1 -1
  319. package/dist/components/kanban/kanban.d.ts +33 -4
  320. package/dist/components/kanban/kanban.js +29 -0
  321. package/dist/components/kanban/kanban.js.map +1 -1
  322. package/dist/components/kanban/types.d.ts +51 -0
  323. package/dist/components/label/context.d.ts +25 -4
  324. package/dist/components/label/context.js +21 -0
  325. package/dist/components/label/context.js.map +1 -1
  326. package/dist/components/label/index.d.ts +16 -2
  327. package/dist/components/label/index.js +14 -0
  328. package/dist/components/label/index.js.map +1 -1
  329. package/dist/components/label/types.d.ts +5 -0
  330. package/dist/components/lines/index.d.ts +10 -0
  331. package/dist/components/lines/index.js +9 -0
  332. package/dist/components/lines/index.js.map +1 -1
  333. package/dist/components/lines/types.d.ts +6 -0
  334. package/dist/components/link/context.d.ts +21 -2
  335. package/dist/components/link/context.js +18 -0
  336. package/dist/components/link/context.js.map +1 -1
  337. package/dist/components/link/index.d.ts +12 -2
  338. package/dist/components/link/index.js +9 -0
  339. package/dist/components/link/index.js.map +1 -1
  340. package/dist/components/link/types.d.ts +5 -0
  341. package/dist/components/list/context.d.ts +11 -2
  342. package/dist/components/list/context.js +9 -0
  343. package/dist/components/list/context.js.map +1 -1
  344. package/dist/components/list/index.d.ts +11 -2
  345. package/dist/components/list/index.js +9 -0
  346. package/dist/components/list/index.js.map +1 -1
  347. package/dist/components/list/item-content.d.ts +9 -2
  348. package/dist/components/list/item-content.js +6 -0
  349. package/dist/components/list/item-content.js.map +1 -1
  350. package/dist/components/list/item-description.d.ts +9 -2
  351. package/dist/components/list/item-description.js +7 -0
  352. package/dist/components/list/item-description.js.map +1 -1
  353. package/dist/components/list/item-title.d.ts +9 -2
  354. package/dist/components/list/item-title.js +7 -0
  355. package/dist/components/list/item-title.js.map +1 -1
  356. package/dist/components/list/item.d.ts +10 -2
  357. package/dist/components/list/item.js +8 -0
  358. package/dist/components/list/item.js.map +1 -1
  359. package/dist/components/list/types.d.ts +22 -0
  360. package/dist/components/menu/context.d.ts +6 -2
  361. package/dist/components/menu/context.js +4 -0
  362. package/dist/components/menu/context.js.map +1 -1
  363. package/dist/components/menu/index.d.ts +24 -3
  364. package/dist/components/menu/index.js +22 -1
  365. package/dist/components/menu/index.js.map +1 -1
  366. package/dist/components/menu/item-description.d.ts +17 -2
  367. package/dist/components/menu/item-description.js +15 -0
  368. package/dist/components/menu/item-description.js.map +1 -1
  369. package/dist/components/menu/item-label.d.ts +17 -2
  370. package/dist/components/menu/item-label.js +15 -0
  371. package/dist/components/menu/item-label.js.map +1 -1
  372. package/dist/components/menu/item.d.ts +23 -2
  373. package/dist/components/menu/item.js +21 -1
  374. package/dist/components/menu/item.js.map +1 -1
  375. package/dist/components/menu/section.d.ts +23 -2
  376. package/dist/components/menu/section.js +20 -0
  377. package/dist/components/menu/section.js.map +1 -1
  378. package/dist/components/menu/separator.d.ts +16 -2
  379. package/dist/components/menu/separator.js +14 -0
  380. package/dist/components/menu/separator.js.map +1 -1
  381. package/dist/components/menu/submenu.d.ts +18 -2
  382. package/dist/components/menu/submenu.js +16 -0
  383. package/dist/components/menu/submenu.js.map +1 -1
  384. package/dist/components/menu/trigger.d.ts +15 -0
  385. package/dist/components/menu/trigger.js +15 -0
  386. package/dist/components/menu/trigger.js.map +1 -1
  387. package/dist/components/menu/types.d.ts +25 -0
  388. package/dist/components/notice/events.d.ts +9 -0
  389. package/dist/components/notice/events.js +9 -0
  390. package/dist/components/notice/events.js.map +1 -1
  391. package/dist/components/notice/index.d.ts +34 -2
  392. package/dist/components/notice/index.js +32 -1
  393. package/dist/components/notice/index.js.map +1 -1
  394. package/dist/components/notice/list.d.ts +31 -2
  395. package/dist/components/notice/list.js +28 -0
  396. package/dist/components/notice/list.js.map +1 -1
  397. package/dist/components/notice/notice-icon.d.ts +22 -2
  398. package/dist/components/notice/notice-icon.js +23 -1
  399. package/dist/components/notice/notice-icon.js.map +1 -1
  400. package/dist/components/notice/types.d.ts +60 -0
  401. package/dist/components/notice/utils.d.ts +8 -0
  402. package/dist/components/notice/utils.js +8 -0
  403. package/dist/components/notice/utils.js.map +1 -1
  404. package/dist/components/options/context.d.ts +1 -0
  405. package/dist/components/options/context.js +1 -0
  406. package/dist/components/options/context.js.map +1 -1
  407. package/dist/components/options/index.d.ts +15 -2
  408. package/dist/components/options/index.js +13 -0
  409. package/dist/components/options/index.js.map +1 -1
  410. package/dist/components/options/item-content.d.ts +22 -2
  411. package/dist/components/options/item-content.js +19 -0
  412. package/dist/components/options/item-content.js.map +1 -1
  413. package/dist/components/options/item-description.d.ts +14 -2
  414. package/dist/components/options/item-description.js +12 -0
  415. package/dist/components/options/item-description.js.map +1 -1
  416. package/dist/components/options/item-label.d.ts +14 -2
  417. package/dist/components/options/item-label.js +12 -0
  418. package/dist/components/options/item-label.js.map +1 -1
  419. package/dist/components/options/item.d.ts +24 -2
  420. package/dist/components/options/item.js +21 -0
  421. package/dist/components/options/item.js.map +1 -1
  422. package/dist/components/options/section.d.ts +21 -2
  423. package/dist/components/options/section.js +18 -0
  424. package/dist/components/options/section.js.map +1 -1
  425. package/dist/components/options/types.d.ts +24 -0
  426. package/dist/components/pagination/context.d.ts +3 -2
  427. package/dist/components/pagination/context.js +1 -0
  428. package/dist/components/pagination/context.js.map +1 -1
  429. package/dist/components/pagination/index.d.ts +18 -11
  430. package/dist/components/pagination/index.js +15 -9
  431. package/dist/components/pagination/index.js.map +1 -1
  432. package/dist/components/pagination/next.d.ts +17 -2
  433. package/dist/components/pagination/next.js +15 -0
  434. package/dist/components/pagination/next.js.map +1 -1
  435. package/dist/components/pagination/pages.d.ts +21 -2
  436. package/dist/components/pagination/pages.js +18 -0
  437. package/dist/components/pagination/pages.js.map +1 -1
  438. package/dist/components/pagination/prev.d.ts +17 -2
  439. package/dist/components/pagination/prev.js +16 -1
  440. package/dist/components/pagination/prev.js.map +1 -1
  441. package/dist/components/pagination/types.d.ts +32 -0
  442. package/dist/components/pagination/utils.d.ts +35 -0
  443. package/dist/components/pagination/utils.js +35 -0
  444. package/dist/components/pagination/utils.js.map +1 -1
  445. package/dist/components/popover/content.d.ts +20 -2
  446. package/dist/components/popover/content.js +17 -0
  447. package/dist/components/popover/content.js.map +1 -1
  448. package/dist/components/popover/footer.d.ts +22 -2
  449. package/dist/components/popover/footer.js +19 -0
  450. package/dist/components/popover/footer.js.map +1 -1
  451. package/dist/components/popover/index.d.ts +9 -2
  452. package/dist/components/popover/index.js +8 -1
  453. package/dist/components/popover/index.js.map +1 -1
  454. package/dist/components/popover/styles.module.css +6 -0
  455. package/dist/components/popover/title.d.ts +17 -2
  456. package/dist/components/popover/title.js +15 -0
  457. package/dist/components/popover/title.js.map +1 -1
  458. package/dist/components/popover/trigger.d.ts +24 -2
  459. package/dist/components/popover/trigger.js +21 -0
  460. package/dist/components/popover/trigger.js.map +1 -1
  461. package/dist/components/popover/types.d.ts +10 -0
  462. package/dist/components/query-builder/action-element.d.ts +20 -2
  463. package/dist/components/query-builder/action-element.js +17 -0
  464. package/dist/components/query-builder/action-element.js.map +1 -1
  465. package/dist/components/query-builder/actions.d.ts +37 -4
  466. package/dist/components/query-builder/actions.js +36 -1
  467. package/dist/components/query-builder/actions.js.map +1 -1
  468. package/dist/components/query-builder/combinator-selector.d.ts +10 -2
  469. package/dist/components/query-builder/combinator-selector.js +8 -0
  470. package/dist/components/query-builder/combinator-selector.js.map +1 -1
  471. package/dist/components/query-builder/constants.d.ts +1 -0
  472. package/dist/components/query-builder/constants.js +1 -0
  473. package/dist/components/query-builder/constants.js.map +1 -1
  474. package/dist/components/query-builder/index.d.ts +11 -2
  475. package/dist/components/query-builder/index.js +9 -0
  476. package/dist/components/query-builder/index.js.map +1 -1
  477. package/dist/components/query-builder/rule-group.d.ts +52 -4
  478. package/dist/components/query-builder/rule-group.js +47 -0
  479. package/dist/components/query-builder/rule-group.js.map +1 -1
  480. package/dist/components/query-builder/rule.d.ts +20 -2
  481. package/dist/components/query-builder/rule.js +18 -0
  482. package/dist/components/query-builder/rule.js.map +1 -1
  483. package/dist/components/query-builder/types.d.ts +9 -0
  484. package/dist/components/query-builder/utils.d.ts +15 -0
  485. package/dist/components/query-builder/utils.js +15 -0
  486. package/dist/components/query-builder/utils.js.map +1 -1
  487. package/dist/components/query-builder/value-editor.d.ts +23 -2
  488. package/dist/components/query-builder/value-editor.js +20 -0
  489. package/dist/components/query-builder/value-editor.js.map +1 -1
  490. package/dist/components/query-builder/value-selector.d.ts +23 -2
  491. package/dist/components/query-builder/value-selector.js +20 -0
  492. package/dist/components/query-builder/value-selector.js.map +1 -1
  493. package/dist/components/radio/context.d.ts +2 -2
  494. package/dist/components/radio/group.d.ts +19 -2
  495. package/dist/components/radio/group.js +16 -0
  496. package/dist/components/radio/group.js.map +1 -1
  497. package/dist/components/radio/index.d.ts +13 -26
  498. package/dist/components/radio/index.js +11 -24
  499. package/dist/components/radio/index.js.map +1 -1
  500. package/dist/components/radio/types.d.ts +16 -0
  501. package/dist/components/search-field/context.d.ts +7 -4
  502. package/dist/components/search-field/context.js +3 -0
  503. package/dist/components/search-field/context.js.map +1 -1
  504. package/dist/components/search-field/index.d.ts +15 -24
  505. package/dist/components/search-field/index.js +16 -23
  506. package/dist/components/search-field/index.js.map +1 -1
  507. package/dist/components/search-field/types.d.ts +13 -0
  508. package/dist/components/select-field/context.d.ts +11 -4
  509. package/dist/components/select-field/context.js +7 -0
  510. package/dist/components/select-field/context.js.map +1 -1
  511. package/dist/components/select-field/index.d.ts +19 -39
  512. package/dist/components/select-field/index.js +18 -38
  513. package/dist/components/select-field/index.js.map +1 -1
  514. package/dist/components/select-field/styles.module.css +8 -0
  515. package/dist/components/select-field/types.d.ts +18 -0
  516. package/dist/components/sidenav/avatar.d.ts +19 -2
  517. package/dist/components/sidenav/avatar.js +16 -0
  518. package/dist/components/sidenav/avatar.js.map +1 -1
  519. package/dist/components/sidenav/content.d.ts +23 -2
  520. package/dist/components/sidenav/content.js +20 -0
  521. package/dist/components/sidenav/content.js.map +1 -1
  522. package/dist/components/sidenav/context.d.ts +3 -2
  523. package/dist/components/sidenav/context.js +1 -0
  524. package/dist/components/sidenav/context.js.map +1 -1
  525. package/dist/components/sidenav/events.d.ts +2 -0
  526. package/dist/components/sidenav/events.js +2 -0
  527. package/dist/components/sidenav/events.js.map +1 -1
  528. package/dist/components/sidenav/footer.d.ts +16 -2
  529. package/dist/components/sidenav/footer.js +13 -0
  530. package/dist/components/sidenav/footer.js.map +1 -1
  531. package/dist/components/sidenav/header.d.ts +20 -2
  532. package/dist/components/sidenav/header.js +18 -1
  533. package/dist/components/sidenav/header.js.map +1 -1
  534. package/dist/components/sidenav/index.d.ts +11 -2
  535. package/dist/components/sidenav/index.js +9 -0
  536. package/dist/components/sidenav/index.js.map +1 -1
  537. package/dist/components/sidenav/item.d.ts +17 -2
  538. package/dist/components/sidenav/item.js +14 -0
  539. package/dist/components/sidenav/item.js.map +1 -1
  540. package/dist/components/sidenav/link.d.ts +17 -2
  541. package/dist/components/sidenav/link.js +15 -1
  542. package/dist/components/sidenav/link.js.map +1 -1
  543. package/dist/components/sidenav/menu-item.d.ts +16 -2
  544. package/dist/components/sidenav/menu-item.js +13 -0
  545. package/dist/components/sidenav/menu-item.js.map +1 -1
  546. package/dist/components/sidenav/menu.d.ts +19 -2
  547. package/dist/components/sidenav/menu.js +17 -1
  548. package/dist/components/sidenav/menu.js.map +1 -1
  549. package/dist/components/sidenav/trigger.d.ts +17 -2
  550. package/dist/components/sidenav/trigger.js +14 -0
  551. package/dist/components/sidenav/trigger.js.map +1 -1
  552. package/dist/components/sidenav/types.d.ts +53 -0
  553. package/dist/components/skeleton/index.d.ts +12 -27
  554. package/dist/components/skeleton/index.js +10 -24
  555. package/dist/components/skeleton/index.js.map +1 -1
  556. package/dist/components/skeleton/types.d.ts +4 -0
  557. package/dist/components/slider/index.d.ts +30 -29
  558. package/dist/components/slider/index.js +28 -27
  559. package/dist/components/slider/index.js.map +1 -1
  560. package/dist/components/slider/types.d.ts +18 -0
  561. package/dist/components/switch/context.d.ts +16 -10
  562. package/dist/components/switch/context.js +13 -7
  563. package/dist/components/switch/context.js.map +1 -1
  564. package/dist/components/switch/index.d.ts +14 -31
  565. package/dist/components/switch/index.js +12 -29
  566. package/dist/components/switch/index.js.map +1 -1
  567. package/dist/components/switch/types.d.ts +5 -0
  568. package/dist/components/table/body.d.ts +21 -2
  569. package/dist/components/table/body.js +18 -0
  570. package/dist/components/table/body.js.map +1 -1
  571. package/dist/components/table/cell.d.ts +22 -2
  572. package/dist/components/table/cell.js +19 -0
  573. package/dist/components/table/cell.js.map +1 -1
  574. package/dist/components/table/constants/table.d.ts +6 -0
  575. package/dist/components/table/constants/table.js +4 -0
  576. package/dist/components/table/constants/table.js.map +1 -1
  577. package/dist/components/table/context.d.ts +3 -2
  578. package/dist/components/table/context.js +1 -0
  579. package/dist/components/table/context.js.map +1 -1
  580. package/dist/components/table/header-cell.d.ts +24 -2
  581. package/dist/components/table/header-cell.js +24 -1
  582. package/dist/components/table/header-cell.js.map +1 -1
  583. package/dist/components/table/header.d.ts +20 -0
  584. package/dist/components/table/header.js +19 -0
  585. package/dist/components/table/header.js.map +1 -1
  586. package/dist/components/table/index.d.ts +28 -6
  587. package/dist/components/table/index.js +27 -5
  588. package/dist/components/table/index.js.map +1 -1
  589. package/dist/components/table/row.d.ts +26 -2
  590. package/dist/components/table/row.js +23 -0
  591. package/dist/components/table/row.js.map +1 -1
  592. package/dist/components/table/types.d.ts +3 -0
  593. package/dist/components/tabs/context.d.ts +20 -10
  594. package/dist/components/tabs/context.js +17 -7
  595. package/dist/components/tabs/context.js.map +1 -1
  596. package/dist/components/tabs/index.d.ts +17 -40
  597. package/dist/components/tabs/index.js +15 -38
  598. package/dist/components/tabs/index.js.map +1 -1
  599. package/dist/components/tabs/list.d.ts +20 -4
  600. package/dist/components/tabs/list.js +17 -2
  601. package/dist/components/tabs/list.js.map +1 -1
  602. package/dist/components/tabs/panel.d.ts +21 -4
  603. package/dist/components/tabs/panel.js +18 -2
  604. package/dist/components/tabs/panel.js.map +1 -1
  605. package/dist/components/tabs/tab.d.ts +17 -4
  606. package/dist/components/tabs/tab.js +14 -2
  607. package/dist/components/tabs/tab.js.map +1 -1
  608. package/dist/components/tabs/types.d.ts +3 -0
  609. package/dist/components/text-area-field/context.d.ts +20 -10
  610. package/dist/components/text-area-field/context.js +17 -7
  611. package/dist/components/text-area-field/context.js.map +1 -1
  612. package/dist/components/text-area-field/index.d.ts +20 -15
  613. package/dist/components/text-area-field/index.js +18 -13
  614. package/dist/components/text-area-field/index.js.map +1 -1
  615. package/dist/components/text-area-field/styles.module.css +1 -1
  616. package/dist/components/text-area-field/types.d.ts +9 -0
  617. package/dist/components/text-field/context.d.ts +24 -4
  618. package/dist/components/text-field/context.js +20 -0
  619. package/dist/components/text-field/context.js.map +1 -1
  620. package/dist/components/text-field/index.d.ts +17 -82
  621. package/dist/components/text-field/index.js +15 -80
  622. package/dist/components/text-field/index.js.map +1 -1
  623. package/dist/components/text-field/types.d.ts +9 -0
  624. package/dist/components/time-field/index.d.ts +23 -5
  625. package/dist/components/time-field/index.js +21 -4
  626. package/dist/components/time-field/index.js.map +1 -1
  627. package/dist/components/time-field/types.d.ts +9 -0
  628. package/dist/components/tooltip/context.d.ts +3 -2
  629. package/dist/components/tooltip/context.js +1 -0
  630. package/dist/components/tooltip/context.js.map +1 -1
  631. package/dist/components/tooltip/index.d.ts +15 -30
  632. package/dist/components/tooltip/index.js +13 -28
  633. package/dist/components/tooltip/index.js.map +1 -1
  634. package/dist/components/tooltip/trigger.d.ts +22 -2
  635. package/dist/components/tooltip/trigger.js +19 -0
  636. package/dist/components/tooltip/trigger.js.map +1 -1
  637. package/dist/components/tooltip/types.d.ts +7 -0
  638. package/dist/components/tree/context.d.ts +5 -9
  639. package/dist/components/tree/context.js +2 -6
  640. package/dist/components/tree/context.js.map +1 -1
  641. package/dist/components/tree/index.d.ts +30 -8
  642. package/dist/components/tree/index.js +28 -6
  643. package/dist/components/tree/index.js.map +1 -1
  644. package/dist/components/tree/item-actions.d.ts +19 -4
  645. package/dist/components/tree/item-actions.js +16 -2
  646. package/dist/components/tree/item-actions.js.map +1 -1
  647. package/dist/components/tree/item-content.d.ts +18 -4
  648. package/dist/components/tree/item-content.js +20 -3
  649. package/dist/components/tree/item-content.js.map +1 -1
  650. package/dist/components/tree/item-description.d.ts +15 -4
  651. package/dist/components/tree/item-description.js +13 -2
  652. package/dist/components/tree/item-description.js.map +1 -1
  653. package/dist/components/tree/item-label.d.ts +15 -4
  654. package/dist/components/tree/item-label.js +13 -2
  655. package/dist/components/tree/item-label.js.map +1 -1
  656. package/dist/components/tree/item-prefix-icon.d.ts +15 -4
  657. package/dist/components/tree/item-prefix-icon.js +13 -2
  658. package/dist/components/tree/item-prefix-icon.js.map +1 -1
  659. package/dist/components/tree/item.d.ts +24 -4
  660. package/dist/components/tree/item.js +21 -2
  661. package/dist/components/tree/item.js.map +1 -1
  662. package/dist/components/tree/lines.d.ts +10 -2
  663. package/dist/components/tree/lines.js +8 -0
  664. package/dist/components/tree/lines.js.map +1 -1
  665. package/dist/components/tree/types.d.ts +26 -0
  666. package/dist/components/view-stack/context.d.ts +20 -9
  667. package/dist/components/view-stack/context.js +18 -7
  668. package/dist/components/view-stack/context.js.map +1 -1
  669. package/dist/components/view-stack/events.d.ts +2 -0
  670. package/dist/components/view-stack/events.js +2 -0
  671. package/dist/components/view-stack/events.js.map +1 -1
  672. package/dist/components/view-stack/index.d.ts +16 -24
  673. package/dist/components/view-stack/index.js +14 -22
  674. package/dist/components/view-stack/index.js.map +1 -1
  675. package/dist/components/view-stack/trigger.d.ts +26 -4
  676. package/dist/components/view-stack/trigger.js +23 -2
  677. package/dist/components/view-stack/trigger.js.map +1 -1
  678. package/dist/components/view-stack/types.d.ts +29 -0
  679. package/dist/components/view-stack/view.d.ts +22 -2
  680. package/dist/components/view-stack/view.js +19 -0
  681. package/dist/components/view-stack/view.js.map +1 -1
  682. package/dist/hooks/coordinate-field/use-coordinate-copy.d.ts +44 -0
  683. package/dist/hooks/coordinate-field/use-coordinate-copy.js +35 -0
  684. package/dist/hooks/coordinate-field/use-coordinate-copy.js.map +1 -1
  685. package/dist/hooks/coordinate-field/use-coordinate-field-state.d.ts +69 -0
  686. package/dist/hooks/coordinate-field/use-coordinate-field-state.js +50 -0
  687. package/dist/hooks/coordinate-field/use-coordinate-field-state.js.map +1 -1
  688. package/dist/hooks/coordinate-field/use-coordinate-field.d.ts +61 -0
  689. package/dist/hooks/coordinate-field/use-coordinate-field.js +47 -0
  690. package/dist/hooks/coordinate-field/use-coordinate-field.js.map +1 -1
  691. package/dist/hooks/coordinate-field/use-coordinate-focus.d.ts +51 -0
  692. package/dist/hooks/coordinate-field/use-coordinate-focus.js +39 -0
  693. package/dist/hooks/coordinate-field/use-coordinate-focus.js.map +1 -1
  694. package/dist/hooks/coordinate-field/use-coordinate-paste.d.ts +63 -0
  695. package/dist/hooks/coordinate-field/use-coordinate-paste.js +51 -0
  696. package/dist/hooks/coordinate-field/use-coordinate-paste.js.map +1 -1
  697. package/dist/hooks/coordinate-field/use-timeout-cleanup.d.ts +32 -0
  698. package/dist/hooks/coordinate-field/use-timeout-cleanup.js +30 -0
  699. package/dist/hooks/coordinate-field/use-timeout-cleanup.js.map +1 -1
  700. package/dist/hooks/use-frame-delay/index.d.ts +5 -0
  701. package/dist/hooks/use-frame-delay/index.js +5 -0
  702. package/dist/hooks/use-frame-delay/index.js.map +1 -1
  703. package/dist/hooks/use-tree/actions/index.d.ts +4 -2
  704. package/dist/hooks/use-tree/actions/index.js +4 -2
  705. package/dist/hooks/use-tree/actions/index.js.map +1 -1
  706. package/dist/hooks/use-tree/state/index.d.ts +7 -0
  707. package/dist/hooks/use-tree/state/index.js +7 -0
  708. package/dist/hooks/use-tree/state/index.js.map +1 -1
  709. package/dist/hooks/use-tree/types.d.ts +22 -0
  710. package/dist/index.d.ts +4 -4
  711. package/dist/index.js +1 -1
  712. package/dist/lib/types.d.ts +17 -0
  713. package/dist/lib/utils.d.ts +15 -0
  714. package/dist/lib/utils.js +15 -0
  715. package/dist/lib/utils.js.map +1 -1
  716. package/dist/providers/portal.d.ts +11 -2
  717. package/dist/providers/portal.js +9 -0
  718. package/dist/providers/portal.js.map +1 -1
  719. package/dist/providers/theme-provider.d.ts +18 -2
  720. package/dist/providers/theme-provider.js +15 -0
  721. package/dist/providers/theme-provider.js.map +1 -1
  722. package/package.json +3 -3
@@ -12,50 +12,42 @@
12
12
 
13
13
  import { ViewStackProps } from "./types.js";
14
14
  import "client-only";
15
- import * as react_jsx_runtime114 from "react/jsx-runtime";
15
+ import * as react_jsx_runtime170 from "react/jsx-runtime";
16
16
 
17
17
  //#region src/components/view-stack/index.d.ts
18
18
 
19
19
  /**
20
- * ViewStack - Stack-based view manager for pushing/popping views
20
+ * ViewStack - Stack-based navigation for managing multiple views
21
21
  *
22
- * Manages a stack of views that can be pushed, popped, or reset programmatically
23
- * and is intended for building nested or stacked UIs such as Drawer views.
22
+ * Supports push, pop, clear, and reset operations with global event system.
23
+ *
24
+ * @param props - {@link ViewStackProps}
25
+ * @param props.id - Unique identifier for the stack.
26
+ * @param props.children - ViewStackView components.
27
+ * @param props.defaultView - Default view to display when the stack is initialized.
28
+ * @param props.onChange - Callback when the active view changes.
29
+ * @returns The rendered ViewStack component.
24
30
  *
25
31
  * @example
26
- * const ids = {
27
- * stack: uuid(),
28
- * a: uuid(),
29
- * b: uuid(),
30
- * };
32
+ * ```tsx
33
+ * const ids = { stack: uuid(), a: uuid(), b: uuid() };
31
34
  *
32
35
  * <ViewStack id={ids.stack} defaultView={ids.a}>
33
36
  * <ViewStackView id={ids.a}>
34
- * <ViewStackTrigger for={ids.b}>
35
- * <Button>
36
- * Push View B
37
- * </Button>
38
- * </ViewStackTrigger>
39
- * <h1>View A</h1>
37
+ * <ViewStackTrigger for={ids.b}><Button>Go to B</Button></ViewStackTrigger>
40
38
  * </ViewStackView>
41
39
  * <ViewStackView id={ids.b}>
42
- * <ViewStackTrigger for='back'>
43
- * <Button variant='icon'>
44
- * <Icon>
45
- * <ChevronLeft />
46
- * </Icon>
47
- * </Button>
48
- * </ViewStackTrigger>
49
- * <h1>View B</h1>
40
+ * <ViewStackTrigger for="back"><Button>Back</Button></ViewStackTrigger>
50
41
  * </ViewStackView>
51
42
  * </ViewStack>
43
+ * ```
52
44
  */
53
45
  declare function ViewStack({
54
46
  id,
55
47
  children,
56
48
  defaultView,
57
49
  onChange
58
- }: ViewStackProps): react_jsx_runtime114.JSX.Element;
50
+ }: ViewStackProps): react_jsx_runtime170.JSX.Element;
59
51
  //#endregion
60
52
  export { ViewStack };
61
53
  //# sourceMappingURL=index.d.ts.map
@@ -23,38 +23,30 @@ import { isUUID } from "@accelint/core";
23
23
 
24
24
  //#region src/components/view-stack/index.tsx
25
25
  /**
26
- * ViewStack - Stack-based view manager for pushing/popping views
26
+ * ViewStack - Stack-based navigation for managing multiple views
27
27
  *
28
- * Manages a stack of views that can be pushed, popped, or reset programmatically
29
- * and is intended for building nested or stacked UIs such as Drawer views.
28
+ * Supports push, pop, clear, and reset operations with global event system.
29
+ *
30
+ * @param props - {@link ViewStackProps}
31
+ * @param props.id - Unique identifier for the stack.
32
+ * @param props.children - ViewStackView components.
33
+ * @param props.defaultView - Default view to display when the stack is initialized.
34
+ * @param props.onChange - Callback when the active view changes.
35
+ * @returns The rendered ViewStack component.
30
36
  *
31
37
  * @example
32
- * const ids = {
33
- * stack: uuid(),
34
- * a: uuid(),
35
- * b: uuid(),
36
- * };
38
+ * ```tsx
39
+ * const ids = { stack: uuid(), a: uuid(), b: uuid() };
37
40
  *
38
41
  * <ViewStack id={ids.stack} defaultView={ids.a}>
39
42
  * <ViewStackView id={ids.a}>
40
- * <ViewStackTrigger for={ids.b}>
41
- * <Button>
42
- * Push View B
43
- * </Button>
44
- * </ViewStackTrigger>
45
- * <h1>View A</h1>
43
+ * <ViewStackTrigger for={ids.b}><Button>Go to B</Button></ViewStackTrigger>
46
44
  * </ViewStackView>
47
45
  * <ViewStackView id={ids.b}>
48
- * <ViewStackTrigger for='back'>
49
- * <Button variant='icon'>
50
- * <Icon>
51
- * <ChevronLeft />
52
- * </Icon>
53
- * </Button>
54
- * </ViewStackTrigger>
55
- * <h1>View B</h1>
46
+ * <ViewStackTrigger for="back"><Button>Back</Button></ViewStackTrigger>
56
47
  * </ViewStackView>
57
48
  * </ViewStack>
49
+ * ```
58
50
  */
59
51
  function ViewStack({ id, children, defaultView, onChange }) {
60
52
  if (!isUUID(id)) throw new Error(`ViewStack's id must be a UniqueId`);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["view"],"sources":["../../../src/components/view-stack/index.tsx"],"sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n'use client';\n\nimport { useOn } from '@accelint/bus/react';\nimport { isUUID, type UniqueId } from '@accelint/core';\nimport 'client-only';\nimport { useCallback, useRef, useState } from 'react';\nimport { ViewStackContext } from './context';\nimport { ViewStackEventTypes } from './events';\nimport type {\n ViewStackBackEvent,\n ViewStackClearEvent,\n ViewStackProps,\n ViewStackPushEvent,\n ViewStackResetEvent,\n} from './types';\n\n/**\n * ViewStack - Stack-based view manager for pushing/popping views\n *\n * Manages a stack of views that can be pushed, popped, or reset programmatically\n * and is intended for building nested or stacked UIs such as Drawer views.\n *\n * @example\n * const ids = {\n * stack: uuid(),\n * a: uuid(),\n * b: uuid(),\n * };\n *\n * <ViewStack id={ids.stack} defaultView={ids.a}>\n * <ViewStackView id={ids.a}>\n * <ViewStackTrigger for={ids.b}>\n * <Button>\n * Push View B\n * </Button>\n * </ViewStackTrigger>\n * <h1>View A</h1>\n * </ViewStackView>\n * <ViewStackView id={ids.b}>\n * <ViewStackTrigger for='back'>\n * <Button variant='icon'>\n * <Icon>\n * <ChevronLeft />\n * </Icon>\n * </Button>\n * </ViewStackTrigger>\n * <h1>View B</h1>\n * </ViewStackView>\n * </ViewStack>\n */\nexport function ViewStack({\n id,\n children,\n defaultView,\n onChange,\n}: ViewStackProps) {\n if (!isUUID(id)) {\n throw new Error(`ViewStack's id must be a UniqueId`);\n }\n\n const views = useRef(new Set<UniqueId>());\n const [stack, setStack] = useState<UniqueId[]>(\n defaultView ? [defaultView] : [],\n );\n const view = stack.at(-1) ?? null;\n\n const handleBack = useCallback(\n (data: ViewStackBackEvent) => {\n if (id === data?.payload?.stack) {\n const next = stack.slice(0, -1);\n\n if (!next.length && defaultView) {\n next.push(defaultView);\n }\n\n setStack(next);\n onChange?.(next.at(-1) ?? null);\n }\n },\n [id, defaultView, onChange, stack],\n );\n\n const handleClear = useCallback(\n (data: ViewStackClearEvent) => {\n if (id === data?.payload?.stack) {\n setStack([]);\n onChange?.(null);\n }\n },\n [id, onChange],\n );\n\n const handlePush = useCallback(\n (data: ViewStackPushEvent) => {\n if (views.current.has(data?.payload?.view)) {\n setStack((prev) => [...prev, data?.payload?.view]);\n onChange?.(data?.payload?.view);\n }\n },\n [onChange],\n );\n\n const handleReset = useCallback(\n (data: ViewStackResetEvent) => {\n if (id === data?.payload?.stack) {\n setStack(defaultView ? [defaultView] : []);\n onChange?.(defaultView ?? null);\n }\n },\n [id, defaultView, onChange],\n );\n useOn(ViewStackEventTypes.back, handleBack);\n useOn(ViewStackEventTypes.clear, handleClear);\n useOn(ViewStackEventTypes.push, handlePush);\n useOn(ViewStackEventTypes.reset, handleReset);\n\n return (\n <ViewStackContext.Provider\n value={{\n parent: id,\n stack,\n view,\n register: (view: UniqueId) => views.current.add(view),\n unregister: (view: UniqueId) => views.current.delete(view),\n }}\n >\n {children}\n </ViewStackContext.Provider>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6DA,SAAgB,UAAU,EACxB,IACA,UACA,aACA,YACiB;AACjB,KAAI,CAAC,OAAO,GAAG,CACb,OAAM,IAAI,MAAM,oCAAoC;CAGtD,MAAM,QAAQ,uBAAO,IAAI,KAAe,CAAC;CACzC,MAAM,CAAC,OAAO,YAAY,SACxB,cAAc,CAAC,YAAY,GAAG,EAAE,CACjC;CACD,MAAM,OAAO,MAAM,GAAG,GAAG,IAAI;CAE7B,MAAM,aAAa,aAChB,SAA6B;AAC5B,MAAI,OAAO,MAAM,SAAS,OAAO;GAC/B,MAAM,OAAO,MAAM,MAAM,GAAG,GAAG;AAE/B,OAAI,CAAC,KAAK,UAAU,YAClB,MAAK,KAAK,YAAY;AAGxB,YAAS,KAAK;AACd,cAAW,KAAK,GAAG,GAAG,IAAI,KAAK;;IAGnC;EAAC;EAAI;EAAa;EAAU;EAAM,CACnC;CAED,MAAM,cAAc,aACjB,SAA8B;AAC7B,MAAI,OAAO,MAAM,SAAS,OAAO;AAC/B,YAAS,EAAE,CAAC;AACZ,cAAW,KAAK;;IAGpB,CAAC,IAAI,SAAS,CACf;CAED,MAAM,aAAa,aAChB,SAA6B;AAC5B,MAAI,MAAM,QAAQ,IAAI,MAAM,SAAS,KAAK,EAAE;AAC1C,aAAU,SAAS,CAAC,GAAG,MAAM,MAAM,SAAS,KAAK,CAAC;AAClD,cAAW,MAAM,SAAS,KAAK;;IAGnC,CAAC,SAAS,CACX;CAED,MAAM,cAAc,aACjB,SAA8B;AAC7B,MAAI,OAAO,MAAM,SAAS,OAAO;AAC/B,YAAS,cAAc,CAAC,YAAY,GAAG,EAAE,CAAC;AAC1C,cAAW,eAAe,KAAK;;IAGnC;EAAC;EAAI;EAAa;EAAS,CAC5B;AACD,OAAM,oBAAoB,MAAM,WAAW;AAC3C,OAAM,oBAAoB,OAAO,YAAY;AAC7C,OAAM,oBAAoB,MAAM,WAAW;AAC3C,OAAM,oBAAoB,OAAO,YAAY;AAE7C,QACE,oBAAC,iBAAiB;EAChB,OAAO;GACL,QAAQ;GACR;GACA;GACA,WAAW,WAAmB,MAAM,QAAQ,IAAIA,OAAK;GACrD,aAAa,WAAmB,MAAM,QAAQ,OAAOA,OAAK;GAC3D;EAEA;GACyB"}
1
+ {"version":3,"file":"index.js","names":["view"],"sources":["../../../src/components/view-stack/index.tsx"],"sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n'use client';\n\nimport { useOn } from '@accelint/bus/react';\nimport { isUUID, type UniqueId } from '@accelint/core';\nimport 'client-only';\nimport { useCallback, useRef, useState } from 'react';\nimport { ViewStackContext } from './context';\nimport { ViewStackEventTypes } from './events';\nimport type {\n ViewStackBackEvent,\n ViewStackClearEvent,\n ViewStackProps,\n ViewStackPushEvent,\n ViewStackResetEvent,\n} from './types';\n\n/**\n * ViewStack - Stack-based navigation for managing multiple views\n *\n * Supports push, pop, clear, and reset operations with global event system.\n *\n * @param props - {@link ViewStackProps}\n * @param props.id - Unique identifier for the stack.\n * @param props.children - ViewStackView components.\n * @param props.defaultView - Default view to display when the stack is initialized.\n * @param props.onChange - Callback when the active view changes.\n * @returns The rendered ViewStack component.\n *\n * @example\n * ```tsx\n * const ids = { stack: uuid(), a: uuid(), b: uuid() };\n *\n * <ViewStack id={ids.stack} defaultView={ids.a}>\n * <ViewStackView id={ids.a}>\n * <ViewStackTrigger for={ids.b}><Button>Go to B</Button></ViewStackTrigger>\n * </ViewStackView>\n * <ViewStackView id={ids.b}>\n * <ViewStackTrigger for=\"back\"><Button>Back</Button></ViewStackTrigger>\n * </ViewStackView>\n * </ViewStack>\n * ```\n */\nexport function ViewStack({\n id,\n children,\n defaultView,\n onChange,\n}: ViewStackProps) {\n if (!isUUID(id)) {\n throw new Error(`ViewStack's id must be a UniqueId`);\n }\n\n const views = useRef(new Set<UniqueId>());\n const [stack, setStack] = useState<UniqueId[]>(\n defaultView ? [defaultView] : [],\n );\n const view = stack.at(-1) ?? null;\n\n const handleBack = useCallback(\n (data: ViewStackBackEvent) => {\n if (id === data?.payload?.stack) {\n const next = stack.slice(0, -1);\n\n if (!next.length && defaultView) {\n next.push(defaultView);\n }\n\n setStack(next);\n onChange?.(next.at(-1) ?? null);\n }\n },\n [id, defaultView, onChange, stack],\n );\n\n const handleClear = useCallback(\n (data: ViewStackClearEvent) => {\n if (id === data?.payload?.stack) {\n setStack([]);\n onChange?.(null);\n }\n },\n [id, onChange],\n );\n\n const handlePush = useCallback(\n (data: ViewStackPushEvent) => {\n if (views.current.has(data?.payload?.view)) {\n setStack((prev) => [...prev, data?.payload?.view]);\n onChange?.(data?.payload?.view);\n }\n },\n [onChange],\n );\n\n const handleReset = useCallback(\n (data: ViewStackResetEvent) => {\n if (id === data?.payload?.stack) {\n setStack(defaultView ? [defaultView] : []);\n onChange?.(defaultView ?? null);\n }\n },\n [id, defaultView, onChange],\n );\n useOn(ViewStackEventTypes.back, handleBack);\n useOn(ViewStackEventTypes.clear, handleClear);\n useOn(ViewStackEventTypes.push, handlePush);\n useOn(ViewStackEventTypes.reset, handleReset);\n\n return (\n <ViewStackContext.Provider\n value={{\n parent: id,\n stack,\n view,\n register: (view: UniqueId) => views.current.add(view),\n unregister: (view: UniqueId) => views.current.delete(view),\n }}\n >\n {children}\n </ViewStackContext.Provider>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDA,SAAgB,UAAU,EACxB,IACA,UACA,aACA,YACiB;AACjB,KAAI,CAAC,OAAO,GAAG,CACb,OAAM,IAAI,MAAM,oCAAoC;CAGtD,MAAM,QAAQ,uBAAO,IAAI,KAAe,CAAC;CACzC,MAAM,CAAC,OAAO,YAAY,SACxB,cAAc,CAAC,YAAY,GAAG,EAAE,CACjC;CACD,MAAM,OAAO,MAAM,GAAG,GAAG,IAAI;CAE7B,MAAM,aAAa,aAChB,SAA6B;AAC5B,MAAI,OAAO,MAAM,SAAS,OAAO;GAC/B,MAAM,OAAO,MAAM,MAAM,GAAG,GAAG;AAE/B,OAAI,CAAC,KAAK,UAAU,YAClB,MAAK,KAAK,YAAY;AAGxB,YAAS,KAAK;AACd,cAAW,KAAK,GAAG,GAAG,IAAI,KAAK;;IAGnC;EAAC;EAAI;EAAa;EAAU;EAAM,CACnC;CAED,MAAM,cAAc,aACjB,SAA8B;AAC7B,MAAI,OAAO,MAAM,SAAS,OAAO;AAC/B,YAAS,EAAE,CAAC;AACZ,cAAW,KAAK;;IAGpB,CAAC,IAAI,SAAS,CACf;CAED,MAAM,aAAa,aAChB,SAA6B;AAC5B,MAAI,MAAM,QAAQ,IAAI,MAAM,SAAS,KAAK,EAAE;AAC1C,aAAU,SAAS,CAAC,GAAG,MAAM,MAAM,SAAS,KAAK,CAAC;AAClD,cAAW,MAAM,SAAS,KAAK;;IAGnC,CAAC,SAAS,CACX;CAED,MAAM,cAAc,aACjB,SAA8B;AAC7B,MAAI,OAAO,MAAM,SAAS,OAAO;AAC/B,YAAS,cAAc,CAAC,YAAY,GAAG,EAAE,CAAC;AAC1C,cAAW,eAAe,KAAK;;IAGnC;EAAC;EAAI;EAAa;EAAS,CAC5B;AACD,OAAM,oBAAoB,MAAM,WAAW;AAC3C,OAAM,oBAAoB,OAAO,YAAY;AAC7C,OAAM,oBAAoB,MAAM,WAAW;AAC3C,OAAM,oBAAoB,OAAO,YAAY;AAE7C,QACE,oBAAC,iBAAiB;EAChB,OAAO;GACL,QAAQ;GACR;GACA;GACA,WAAW,WAAmB,MAAM,QAAQ,IAAIA,OAAK;GACrD,aAAa,WAAmB,MAAM,QAAQ,OAAOA,OAAK;GAC3D;EAEA;GACyB"}
@@ -12,18 +12,40 @@
12
12
 
13
13
  import { ViewStackTriggerProps } from "./types.js";
14
14
  import "client-only";
15
- import * as react_jsx_runtime116 from "react/jsx-runtime";
15
+ import * as react_jsx_runtime172 from "react/jsx-runtime";
16
16
 
17
17
  //#region src/components/view-stack/trigger.d.ts
18
+
18
19
  /**
19
- * ViewStackTrigger - Trigger for ViewStack actions
20
+ * ViewStackTrigger - Pressable element that triggers ViewStack navigation actions
21
+ *
22
+ * @example
23
+ * ```tsx
24
+ * <ViewStack id="main-stack">
25
+ * <ViewStackView id="home">
26
+ * <h1>Home</h1>
27
+ * <ViewStackTrigger for="settings-view-id">
28
+ * <Button>Go to Settings</Button>
29
+ * </ViewStackTrigger>
30
+ * </ViewStackView>
31
+ * <ViewStackView id="settings-view-id">
32
+ * <h1>Settings</h1>
33
+ * <ViewStackTrigger for="back:main-stack">
34
+ * <Button>Back</Button>
35
+ * </ViewStackTrigger>
36
+ * </ViewStackView>
37
+ * </ViewStack>
38
+ * ```
20
39
  *
21
- * Provides a pressable element that triggers ViewStack actions
40
+ * @param props - {@link ViewStackTriggerProps}
41
+ * @param props.children - Pressable children content.
42
+ * @param props.for - Navigation action(s) to trigger on press.
43
+ * @returns The rendered ViewStackTrigger component.
22
44
  */
23
45
  declare function ViewStackTrigger({
24
46
  children,
25
47
  for: types
26
- }: ViewStackTriggerProps): react_jsx_runtime116.JSX.Element;
48
+ }: ViewStackTriggerProps): react_jsx_runtime172.JSX.Element;
27
49
  //#endregion
28
50
  export { ViewStackTrigger };
29
51
  //# sourceMappingURL=trigger.d.ts.map
@@ -22,9 +22,30 @@ import { isUUID } from "@accelint/core";
22
22
 
23
23
  //#region src/components/view-stack/trigger.tsx
24
24
  /**
25
- * ViewStackTrigger - Trigger for ViewStack actions
25
+ * ViewStackTrigger - Pressable element that triggers ViewStack navigation actions
26
26
  *
27
- * Provides a pressable element that triggers ViewStack actions
27
+ * @example
28
+ * ```tsx
29
+ * <ViewStack id="main-stack">
30
+ * <ViewStackView id="home">
31
+ * <h1>Home</h1>
32
+ * <ViewStackTrigger for="settings-view-id">
33
+ * <Button>Go to Settings</Button>
34
+ * </ViewStackTrigger>
35
+ * </ViewStackView>
36
+ * <ViewStackView id="settings-view-id">
37
+ * <h1>Settings</h1>
38
+ * <ViewStackTrigger for="back:main-stack">
39
+ * <Button>Back</Button>
40
+ * </ViewStackTrigger>
41
+ * </ViewStackView>
42
+ * </ViewStack>
43
+ * ```
44
+ *
45
+ * @param props - {@link ViewStackTriggerProps}
46
+ * @param props.children - Pressable children content.
47
+ * @param props.for - Navigation action(s) to trigger on press.
48
+ * @returns The rendered ViewStackTrigger component.
28
49
  */
29
50
  function ViewStackTrigger({ children, for: types }) {
30
51
  const { parent } = useContext(ViewStackContext);
@@ -1 +1 @@
1
- {"version":3,"file":"trigger.js","names":[],"sources":["../../../src/components/view-stack/trigger.tsx"],"sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n'use client';\n\nimport 'client-only';\nimport { isUUID, type UniqueId } from '@accelint/core';\nimport { useContext } from 'react';\nimport { Pressable } from 'react-aria-components';\nimport { useViewStackEmit, ViewStackContext } from './context';\nimport type { ViewStackTriggerProps } from './types';\n\n/**\n * ViewStackTrigger - Trigger for ViewStack actions\n *\n * Provides a pressable element that triggers ViewStack actions\n */\nexport function ViewStackTrigger({\n children,\n for: types,\n}: ViewStackTriggerProps) {\n const { parent } = useContext(ViewStackContext);\n const viewStackEmit = useViewStackEmit();\n\n function handlePress() {\n for (const type of Array.isArray(types) ? types : [types]) {\n let [event, id] = (isUUID(type) ? ['push', type] : type.split(':')) as [\n 'back' | 'clear' | 'reset' | 'push',\n UniqueId | undefined | null,\n ];\n\n id ??= parent;\n\n if (!id) {\n continue;\n }\n\n viewStackEmit[event](id);\n }\n }\n\n return <Pressable onPress={handlePress}>{children}</Pressable>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,SAAgB,iBAAiB,EAC/B,UACA,KAAK,SACmB;CACxB,MAAM,EAAE,WAAW,WAAW,iBAAiB;CAC/C,MAAM,gBAAgB,kBAAkB;CAExC,SAAS,cAAc;AACrB,OAAK,MAAM,QAAQ,MAAM,QAAQ,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE;GACzD,IAAI,CAAC,OAAO,MAAO,OAAO,KAAK,GAAG,CAAC,QAAQ,KAAK,GAAG,KAAK,MAAM,IAAI;AAKlE,UAAO;AAEP,OAAI,CAAC,GACH;AAGF,iBAAc,OAAO,GAAG;;;AAI5B,QAAO,oBAAC;EAAU,SAAS;EAAc;GAAqB"}
1
+ {"version":3,"file":"trigger.js","names":[],"sources":["../../../src/components/view-stack/trigger.tsx"],"sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n'use client';\n\nimport 'client-only';\nimport { isUUID, type UniqueId } from '@accelint/core';\nimport { useContext } from 'react';\nimport { Pressable } from 'react-aria-components';\nimport { useViewStackEmit, ViewStackContext } from './context';\nimport type { ViewStackTriggerProps } from './types';\n\n/**\n * ViewStackTrigger - Pressable element that triggers ViewStack navigation actions\n *\n * @example\n * ```tsx\n * <ViewStack id=\"main-stack\">\n * <ViewStackView id=\"home\">\n * <h1>Home</h1>\n * <ViewStackTrigger for=\"settings-view-id\">\n * <Button>Go to Settings</Button>\n * </ViewStackTrigger>\n * </ViewStackView>\n * <ViewStackView id=\"settings-view-id\">\n * <h1>Settings</h1>\n * <ViewStackTrigger for=\"back:main-stack\">\n * <Button>Back</Button>\n * </ViewStackTrigger>\n * </ViewStackView>\n * </ViewStack>\n * ```\n *\n * @param props - {@link ViewStackTriggerProps}\n * @param props.children - Pressable children content.\n * @param props.for - Navigation action(s) to trigger on press.\n * @returns The rendered ViewStackTrigger component.\n */\nexport function ViewStackTrigger({\n children,\n for: types,\n}: ViewStackTriggerProps) {\n const { parent } = useContext(ViewStackContext);\n const viewStackEmit = useViewStackEmit();\n\n function handlePress() {\n for (const type of Array.isArray(types) ? types : [types]) {\n let [event, id] = (isUUID(type) ? ['push', type] : type.split(':')) as [\n 'back' | 'clear' | 'reset' | 'push',\n UniqueId | undefined | null,\n ];\n\n id ??= parent;\n\n if (!id) {\n continue;\n }\n\n viewStackEmit[event](id);\n }\n }\n\n return <Pressable onPress={handlePress}>{children}</Pressable>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA,SAAgB,iBAAiB,EAC/B,UACA,KAAK,SACmB;CACxB,MAAM,EAAE,WAAW,WAAW,iBAAiB;CAC/C,MAAM,gBAAgB,kBAAkB;CAExC,SAAS,cAAc;AACrB,OAAK,MAAM,QAAQ,MAAM,QAAQ,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE;GACzD,IAAI,CAAC,OAAO,MAAO,OAAO,KAAK,GAAG,CAAC,QAAQ,KAAK,GAAG,KAAK,MAAM,IAAI;AAKlE,UAAO;AAEP,OAAI,CAAC,GACH;AAGF,iBAAc,OAAO,GAAG;;;AAI5B,QAAO,oBAAC;EAAU,SAAS;EAAc;GAAqB"}
@@ -17,31 +17,50 @@ import { Payload } from "@accelint/bus";
17
17
  import { UniqueId } from "@accelint/core";
18
18
 
19
19
  //#region src/components/view-stack/types.d.ts
20
+ /**
21
+ * Props for the ViewStack component.
22
+ */
20
23
  type ViewStackProps = RefAttributes<HTMLDivElement> & PropsWithChildren<{
24
+ /** Unique identifier for the stack. */
21
25
  id: UniqueId;
26
+ /** Default view to display when the stack is initialized. */
22
27
  defaultView?: UniqueId;
28
+ /** Callback when the active view changes. */
23
29
  onChange?: (view: UniqueId | null) => void;
24
30
  }>;
31
+ /**
32
+ * Props for the ViewStackView component.
33
+ */
25
34
  type ViewStackViewProps = RefAttributes<HTMLDivElement> & PropsWithChildren<{
35
+ /** Unique identifier for the view. */
26
36
  id: UniqueId;
27
37
  }>;
38
+ /** Event payload for navigating back in a ViewStack. */
28
39
  type ViewStackBackEvent = Payload<typeof ViewStackEventTypes.back, {
29
40
  stack: UniqueId;
30
41
  }>;
42
+ /** Event payload for clearing all views in a ViewStack. */
31
43
  type ViewStackClearEvent = Payload<typeof ViewStackEventTypes.clear, {
32
44
  stack: UniqueId;
33
45
  }>;
46
+ /** Event payload for resetting a ViewStack to its default view. */
34
47
  type ViewStackResetEvent = Payload<typeof ViewStackEventTypes.reset, {
35
48
  stack: UniqueId;
36
49
  }>;
50
+ /** Event payload for pushing a view onto a ViewStack. */
37
51
  type ViewStackPushEvent = Payload<typeof ViewStackEventTypes.push, {
38
52
  view: UniqueId;
39
53
  }>;
54
+ /** Union of all ViewStack event types. */
40
55
  type ViewStackEvent = ViewStackBackEvent | ViewStackClearEvent | ViewStackResetEvent | ViewStackPushEvent;
41
56
  type SimpleEvents = 'back' | 'clear' | 'reset' | UniqueId;
42
57
  type TargetedEvents = `back:${UniqueId}` | `clear:${UniqueId}` | `reset:${UniqueId}`;
43
58
  type ChainedEvents = (SimpleEvents | TargetedEvents)[];
59
+ /**
60
+ * Props for the ViewStackTrigger component.
61
+ */
44
62
  type ViewStackTriggerProps = {
63
+ /** Pressable children content. */
45
64
  children: ComponentProps<typeof Pressable>['children'];
46
65
  /**
47
66
  * __SimpleEvents__ allow the easiest implementation of events, but come with some restrictions:
@@ -53,6 +72,7 @@ type ViewStackTriggerProps = {
53
72
  * __ChainedEvents__ allow a list of events from a single control to enable multiple behaviors
54
73
  *
55
74
  * @example
75
+ * ```ts
56
76
  * // Clear a stack and then push a view on:
57
77
  * ['clear', myViewId]
58
78
  *
@@ -61,14 +81,23 @@ type ViewStackTriggerProps = {
61
81
  *
62
82
  * // Hydrate a stack with multiple views:
63
83
  * [viewOneId, viewTwoId, viewThreeId]
84
+ * ```
64
85
  */
65
86
  for: SimpleEvents | TargetedEvents | ChainedEvents;
66
87
  };
88
+ /**
89
+ * Context value for the ViewStack component.
90
+ */
67
91
  type ViewStackContextValue = {
92
+ /** Parent stack identifier, or null if at root. */
68
93
  parent: UniqueId | null;
94
+ /** Array of view IDs currently in the stack. */
69
95
  stack: string[];
96
+ /** Currently active view ID, or null if empty. */
70
97
  view: UniqueId | null;
98
+ /** Registers a view with the stack. */
71
99
  register: (view: UniqueId) => void;
100
+ /** Unregisters a view from the stack. */
72
101
  unregister: (view: UniqueId) => void;
73
102
  };
74
103
  //#endregion
@@ -12,18 +12,38 @@
12
12
 
13
13
  import { ViewStackViewProps } from "./types.js";
14
14
  import "client-only";
15
- import * as react_jsx_runtime117 from "react/jsx-runtime";
15
+ import * as react_jsx_runtime175 from "react/jsx-runtime";
16
16
 
17
17
  //#region src/components/view-stack/view.d.ts
18
+
18
19
  /**
19
20
  * ViewStackView - Individual view in a ViewStack
20
21
  *
21
22
  * Represents a single view that can be pushed onto the ViewStack
23
+ *
24
+ * @example
25
+ * ```tsx
26
+ * <ViewStack id="app-stack">
27
+ * <ViewStackView id="home-view">
28
+ * <h1>Home Screen</h1>
29
+ * <p>Welcome to the app</p>
30
+ * </ViewStackView>
31
+ * <ViewStackView id="details-view">
32
+ * <h1>Details Screen</h1>
33
+ * <p>Detailed information</p>
34
+ * </ViewStackView>
35
+ * </ViewStack>
36
+ * ```
37
+ *
38
+ * @param props - {@link ViewStackViewProps}
39
+ * @param props.id - Unique identifier for the view.
40
+ * @param props.children - View content to render when active.
41
+ * @returns The rendered view content if active, or null.
22
42
  */
23
43
  declare function ViewStackView({
24
44
  id,
25
45
  children
26
- }: ViewStackViewProps): react_jsx_runtime117.JSX.Element | null;
46
+ }: ViewStackViewProps): react_jsx_runtime175.JSX.Element | null;
27
47
  //#endregion
28
48
  export { ViewStackView };
29
49
  //# sourceMappingURL=view.d.ts.map
@@ -24,6 +24,25 @@ import { isUUID } from "@accelint/core";
24
24
  * ViewStackView - Individual view in a ViewStack
25
25
  *
26
26
  * Represents a single view that can be pushed onto the ViewStack
27
+ *
28
+ * @example
29
+ * ```tsx
30
+ * <ViewStack id="app-stack">
31
+ * <ViewStackView id="home-view">
32
+ * <h1>Home Screen</h1>
33
+ * <p>Welcome to the app</p>
34
+ * </ViewStackView>
35
+ * <ViewStackView id="details-view">
36
+ * <h1>Details Screen</h1>
37
+ * <p>Detailed information</p>
38
+ * </ViewStackView>
39
+ * </ViewStack>
40
+ * ```
41
+ *
42
+ * @param props - {@link ViewStackViewProps}
43
+ * @param props.id - Unique identifier for the view.
44
+ * @param props.children - View content to render when active.
45
+ * @returns The rendered view content if active, or null.
27
46
  */
28
47
  function ViewStackView({ id, children }) {
29
48
  const { parent, view, register, unregister } = useContext(ViewStackContext);
@@ -1 +1 @@
1
- {"version":3,"file":"view.js","names":[],"sources":["../../../src/components/view-stack/view.tsx"],"sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n'use client';\n\nimport { isUUID } from '@accelint/core';\nimport 'client-only';\nimport { Fragment, useContext, useEffect } from 'react';\nimport { ViewStackContext } from './context';\nimport type { ViewStackViewProps } from './types';\n\n/**\n * ViewStackView - Individual view in a ViewStack\n *\n * Represents a single view that can be pushed onto the ViewStack\n */\nexport function ViewStackView({ id, children }: ViewStackViewProps) {\n const { parent, view, register, unregister } = useContext(ViewStackContext);\n\n if (!parent) {\n throw new Error('ViewStackView must be implemented within a ViewStack');\n }\n\n if (!isUUID(id)) {\n throw new Error(`ViewStackView's id must be a UniqueId`);\n }\n\n useEffect(() => {\n register(id);\n\n return () => unregister(id);\n }, [register, unregister, id]);\n\n return view === id ? <Fragment key={id}>{children}</Fragment> : null;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,SAAgB,cAAc,EAAE,IAAI,YAAgC;CAClE,MAAM,EAAE,QAAQ,MAAM,UAAU,eAAe,WAAW,iBAAiB;AAE3E,KAAI,CAAC,OACH,OAAM,IAAI,MAAM,uDAAuD;AAGzE,KAAI,CAAC,OAAO,GAAG,CACb,OAAM,IAAI,MAAM,wCAAwC;AAG1D,iBAAgB;AACd,WAAS,GAAG;AAEZ,eAAa,WAAW,GAAG;IAC1B;EAAC;EAAU;EAAY;EAAG,CAAC;AAE9B,QAAO,SAAS,KAAK,oBAAC,YAAmB,YAAL,GAAyB,GAAG"}
1
+ {"version":3,"file":"view.js","names":[],"sources":["../../../src/components/view-stack/view.tsx"],"sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n'use client';\n\nimport { isUUID } from '@accelint/core';\nimport 'client-only';\nimport { Fragment, useContext, useEffect } from 'react';\nimport { ViewStackContext } from './context';\nimport type { ViewStackViewProps } from './types';\n\n/**\n * ViewStackView - Individual view in a ViewStack\n *\n * Represents a single view that can be pushed onto the ViewStack\n *\n * @example\n * ```tsx\n * <ViewStack id=\"app-stack\">\n * <ViewStackView id=\"home-view\">\n * <h1>Home Screen</h1>\n * <p>Welcome to the app</p>\n * </ViewStackView>\n * <ViewStackView id=\"details-view\">\n * <h1>Details Screen</h1>\n * <p>Detailed information</p>\n * </ViewStackView>\n * </ViewStack>\n * ```\n *\n * @param props - {@link ViewStackViewProps}\n * @param props.id - Unique identifier for the view.\n * @param props.children - View content to render when active.\n * @returns The rendered view content if active, or null.\n */\nexport function ViewStackView({ id, children }: ViewStackViewProps) {\n const { parent, view, register, unregister } = useContext(ViewStackContext);\n\n if (!parent) {\n throw new Error('ViewStackView must be implemented within a ViewStack');\n }\n\n if (!isUUID(id)) {\n throw new Error(`ViewStackView's id must be a UniqueId`);\n }\n\n useEffect(() => {\n register(id);\n\n return () => unregister(id);\n }, [register, unregister, id]);\n\n return view === id ? <Fragment key={id}>{children}</Fragment> : null;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CA,SAAgB,cAAc,EAAE,IAAI,YAAgC;CAClE,MAAM,EAAE,QAAQ,MAAM,UAAU,eAAe,WAAW,iBAAiB;AAE3E,KAAI,CAAC,OACH,OAAM,IAAI,MAAM,uDAAuD;AAGzE,KAAI,CAAC,OAAO,GAAG,CACb,OAAM,IAAI,MAAM,wCAAwC;AAG1D,iBAAgB;AACd,WAAS,GAAG;AAEZ,eAAa,WAAW,GAAG;IAC1B;EAAC;EAAU;EAAY;EAAG,CAAC;AAE9B,QAAO,SAAS,KAAK,oBAAC,YAAmB,YAAL,GAAyB,GAAG"}
@@ -14,17 +14,61 @@ import { CoordinateSystem, CoordinateValue } from "../../components/coordinate-f
14
14
  import { UseTimeoutCleanupResult } from "./use-timeout-cleanup.js";
15
15
 
16
16
  //#region src/hooks/coordinate-field/use-coordinate-copy.d.ts
17
+ /** Options for the useCoordinateCopy hook */
17
18
  interface UseCoordinateCopyOptions {
19
+ /** Current coordinate value to copy (null if empty) */
18
20
  currentValue: CoordinateValue | null;
21
+ /** Array of validation error messages */
19
22
  validationErrors: string[];
23
+ /** Whether copying is disabled */
20
24
  isDisabled: boolean;
25
+ /** Function to register timeouts for cleanup */
21
26
  registerTimeout: UseTimeoutCleanupResult['registerTimeout'];
22
27
  }
28
+ /** Return value from the useCoordinateCopy hook */
23
29
  interface UseCoordinateCopyResult {
30
+ /** Currently copied format (for visual feedback) or null */
24
31
  copiedFormat: CoordinateSystem | null;
32
+ /** Copy coordinate in specified format to clipboard */
25
33
  handleCopyFormat: (formatToCopy: CoordinateSystem) => Promise<void>;
34
+ /** Whether copy format buttons should be enabled */
26
35
  isFormatButtonEnabled: boolean;
27
36
  }
37
+ /**
38
+ * Handles copying coordinates to clipboard with format conversion and visual feedback
39
+ *
40
+ * @example
41
+ * ```tsx
42
+ * function CoordinateField() {
43
+ * const { registerTimeout } = useTimeoutCleanup();
44
+ * const [value, setValue] = useState<CoordinateValue | null>(null);
45
+ * const [errors, setErrors] = useState<string[]>([]);
46
+ *
47
+ * const { copiedFormat, handleCopyFormat, isFormatButtonEnabled } = useCoordinateCopy({
48
+ * currentValue: value,
49
+ * validationErrors: errors,
50
+ * isDisabled: false,
51
+ * registerTimeout,
52
+ * });
53
+ *
54
+ * return (
55
+ * <Button
56
+ * onPress={() => handleCopyFormat('dd')}
57
+ * isDisabled={!isFormatButtonEnabled}
58
+ * >
59
+ * {copiedFormat === 'dd' ? <Check /> : <Copy />}
60
+ * </Button>
61
+ * );
62
+ * }
63
+ * ```
64
+ *
65
+ * @param options - {@link UseCoordinateCopyOptions}
66
+ * @param options.currentValue - Current coordinate value to copy (null if empty).
67
+ * @param options.validationErrors - Array of validation error messages.
68
+ * @param options.isDisabled - Whether copying is disabled.
69
+ * @param options.registerTimeout - Function to register timeouts for cleanup.
70
+ * @returns {@link UseCoordinateCopyResult} Copy utilities and feedback state.
71
+ */
28
72
  declare function useCoordinateCopy({
29
73
  currentValue,
30
74
  validationErrors,
@@ -23,6 +23,41 @@ const logger = getLogger({
23
23
  pretty: true
24
24
  });
25
25
  const COPY_FEEDBACK_DURATION_MS = 2e3;
26
+ /**
27
+ * Handles copying coordinates to clipboard with format conversion and visual feedback
28
+ *
29
+ * @example
30
+ * ```tsx
31
+ * function CoordinateField() {
32
+ * const { registerTimeout } = useTimeoutCleanup();
33
+ * const [value, setValue] = useState<CoordinateValue | null>(null);
34
+ * const [errors, setErrors] = useState<string[]>([]);
35
+ *
36
+ * const { copiedFormat, handleCopyFormat, isFormatButtonEnabled } = useCoordinateCopy({
37
+ * currentValue: value,
38
+ * validationErrors: errors,
39
+ * isDisabled: false,
40
+ * registerTimeout,
41
+ * });
42
+ *
43
+ * return (
44
+ * <Button
45
+ * onPress={() => handleCopyFormat('dd')}
46
+ * isDisabled={!isFormatButtonEnabled}
47
+ * >
48
+ * {copiedFormat === 'dd' ? <Check /> : <Copy />}
49
+ * </Button>
50
+ * );
51
+ * }
52
+ * ```
53
+ *
54
+ * @param options - {@link UseCoordinateCopyOptions}
55
+ * @param options.currentValue - Current coordinate value to copy (null if empty).
56
+ * @param options.validationErrors - Array of validation error messages.
57
+ * @param options.isDisabled - Whether copying is disabled.
58
+ * @param options.registerTimeout - Function to register timeouts for cleanup.
59
+ * @returns {@link UseCoordinateCopyResult} Copy utilities and feedback state.
60
+ */
26
61
  function useCoordinateCopy({ currentValue, validationErrors, isDisabled, registerTimeout }) {
27
62
  const [copiedFormat, setCopiedFormat] = useState(null);
28
63
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"use-coordinate-copy.js","names":[],"sources":["../../../src/hooks/coordinate-field/use-coordinate-copy.ts"],"sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { getLogger } from '@accelint/logger';\nimport { useState } from 'react';\n\nconst logger = getLogger({\n enabled: process.env.NODE_ENV !== 'production',\n level: 'debug',\n prefix: '[CoordinateField]',\n pretty: true,\n});\n\nimport { getAllCoordinateFormats } from '../../components/coordinate-field/coordinate-utils';\nimport type {\n CoordinateSystem,\n CoordinateValue,\n} from '../../components/coordinate-field/types';\nimport type { UseTimeoutCleanupResult } from './use-timeout-cleanup';\n\nconst COPY_FEEDBACK_DURATION_MS = 2000;\n\nexport interface UseCoordinateCopyOptions {\n currentValue: CoordinateValue | null;\n validationErrors: string[];\n isDisabled: boolean;\n registerTimeout: UseTimeoutCleanupResult['registerTimeout'];\n}\n\nexport interface UseCoordinateCopyResult {\n copiedFormat: CoordinateSystem | null;\n handleCopyFormat: (formatToCopy: CoordinateSystem) => Promise<void>;\n isFormatButtonEnabled: boolean;\n}\n\nexport function useCoordinateCopy({\n currentValue,\n validationErrors,\n isDisabled,\n registerTimeout,\n}: UseCoordinateCopyOptions): UseCoordinateCopyResult {\n const [copiedFormat, setCopiedFormat] = useState<CoordinateSystem | null>(\n null,\n );\n\n /**\n * Fallback clipboard copy for browsers that don't support navigator.clipboard API.\n * Creates a temporary textarea, copies text using document.execCommand('copy'),\n * and provides visual feedback by setting copiedFormat state for 2 seconds.\n *\n * @param text - The coordinate string to copy to clipboard\n * @param formatToCopy - The coordinate format being copied (for UI feedback)\n */\n const fallbackCopyToClipboard = (\n text: string,\n formatToCopy: CoordinateSystem,\n ) => {\n // Create temporary textarea for copy operation\n const textArea = document.createElement('textarea');\n textArea.value = text;\n // Position off-screen so it's not visible to user\n textArea.style.position = 'fixed';\n textArea.style.left = '-999999px';\n textArea.style.top = '-999999px';\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n\n try {\n document.execCommand('copy');\n\n // Set copied format to show Check icon in UI\n setCopiedFormat(formatToCopy);\n\n // Reset to null after 2 seconds to return to Copy icon\n registerTimeout(\n setTimeout(() => {\n setCopiedFormat(null);\n }, COPY_FEEDBACK_DURATION_MS),\n );\n } catch (err) {\n logger.withError(err).warn('Fallback copy to clipboard failed');\n }\n\n // Clean up temporary textarea\n document.body.removeChild(textArea);\n };\n\n /**\n * Handles copying a coordinate in the specified format to the clipboard.\n * Uses modern clipboard API (navigator.clipboard.writeText) with fallback\n * to document.execCommand for older browsers.\n *\n * Sets copiedFormat state to show visual feedback (Check icon) for 2 seconds.\n *\n * @param formatToCopy - The coordinate format to copy (dd, ddm, dms, mgrs, utm)\n */\n const handleCopyFormat = async (formatToCopy: CoordinateSystem) => {\n if (!currentValue) {\n return;\n }\n\n const allFormats = getAllCoordinateFormats(currentValue);\n const formatResult = allFormats[formatToCopy];\n\n if (!formatResult.isValid) {\n return;\n }\n\n try {\n // Modern clipboard API - copy and show feedback\n await navigator.clipboard.writeText(formatResult.value);\n\n // Set copied format to show Check icon in UI\n setCopiedFormat(formatToCopy);\n\n // Reset to null after 2 seconds to return to Copy icon\n registerTimeout(\n setTimeout(() => {\n setCopiedFormat(null);\n }, COPY_FEEDBACK_DURATION_MS),\n );\n } catch (_err) {\n // Fall back to document.execCommand for older browsers\n fallbackCopyToClipboard(formatResult.value, formatToCopy);\n }\n };\n\n const isFormatButtonEnabled =\n currentValue !== null && validationErrors.length === 0 && !isDisabled;\n\n return {\n copiedFormat,\n handleCopyFormat,\n isFormatButtonEnabled,\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAeA,MAAM,SAAS,UAAU;CACvB,SAAS,QAAQ,IAAI,aAAa;CAClC,OAAO;CACP,QAAQ;CACR,QAAQ;CACT,CAAC;AASF,MAAM,4BAA4B;AAelC,SAAgB,kBAAkB,EAChC,cACA,kBACA,YACA,mBACoD;CACpD,MAAM,CAAC,cAAc,mBAAmB,SACtC,KACD;;;;;;;;;CAUD,MAAM,2BACJ,MACA,iBACG;EAEH,MAAM,WAAW,SAAS,cAAc,WAAW;AACnD,WAAS,QAAQ;AAEjB,WAAS,MAAM,WAAW;AAC1B,WAAS,MAAM,OAAO;AACtB,WAAS,MAAM,MAAM;AACrB,WAAS,KAAK,YAAY,SAAS;AACnC,WAAS,OAAO;AAChB,WAAS,QAAQ;AAEjB,MAAI;AACF,YAAS,YAAY,OAAO;AAG5B,mBAAgB,aAAa;AAG7B,mBACE,iBAAiB;AACf,oBAAgB,KAAK;MACpB,0BAA0B,CAC9B;WACM,KAAK;AACZ,UAAO,UAAU,IAAI,CAAC,KAAK,oCAAoC;;AAIjE,WAAS,KAAK,YAAY,SAAS;;;;;;;;;;;CAYrC,MAAM,mBAAmB,OAAO,iBAAmC;AACjE,MAAI,CAAC,aACH;EAIF,MAAM,eADa,wBAAwB,aAAa,CACxB;AAEhC,MAAI,CAAC,aAAa,QAChB;AAGF,MAAI;AAEF,SAAM,UAAU,UAAU,UAAU,aAAa,MAAM;AAGvD,mBAAgB,aAAa;AAG7B,mBACE,iBAAiB;AACf,oBAAgB,KAAK;MACpB,0BAA0B,CAC9B;WACM,MAAM;AAEb,2BAAwB,aAAa,OAAO,aAAa;;;AAO7D,QAAO;EACL;EACA;EACA,uBALA,iBAAiB,QAAQ,iBAAiB,WAAW,KAAK,CAAC;EAM5D"}
1
+ {"version":3,"file":"use-coordinate-copy.js","names":[],"sources":["../../../src/hooks/coordinate-field/use-coordinate-copy.ts"],"sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { getLogger } from '@accelint/logger';\nimport { useState } from 'react';\n\nconst logger = getLogger({\n enabled: process.env.NODE_ENV !== 'production',\n level: 'debug',\n prefix: '[CoordinateField]',\n pretty: true,\n});\n\nimport { getAllCoordinateFormats } from '../../components/coordinate-field/coordinate-utils';\nimport type {\n CoordinateSystem,\n CoordinateValue,\n} from '../../components/coordinate-field/types';\nimport type { UseTimeoutCleanupResult } from './use-timeout-cleanup';\n\nconst COPY_FEEDBACK_DURATION_MS = 2000;\n\n/** Options for the useCoordinateCopy hook */\nexport interface UseCoordinateCopyOptions {\n /** Current coordinate value to copy (null if empty) */\n currentValue: CoordinateValue | null;\n /** Array of validation error messages */\n validationErrors: string[];\n /** Whether copying is disabled */\n isDisabled: boolean;\n /** Function to register timeouts for cleanup */\n registerTimeout: UseTimeoutCleanupResult['registerTimeout'];\n}\n\n/** Return value from the useCoordinateCopy hook */\nexport interface UseCoordinateCopyResult {\n /** Currently copied format (for visual feedback) or null */\n copiedFormat: CoordinateSystem | null;\n /** Copy coordinate in specified format to clipboard */\n handleCopyFormat: (formatToCopy: CoordinateSystem) => Promise<void>;\n /** Whether copy format buttons should be enabled */\n isFormatButtonEnabled: boolean;\n}\n\n/**\n * Handles copying coordinates to clipboard with format conversion and visual feedback\n *\n * @example\n * ```tsx\n * function CoordinateField() {\n * const { registerTimeout } = useTimeoutCleanup();\n * const [value, setValue] = useState<CoordinateValue | null>(null);\n * const [errors, setErrors] = useState<string[]>([]);\n *\n * const { copiedFormat, handleCopyFormat, isFormatButtonEnabled } = useCoordinateCopy({\n * currentValue: value,\n * validationErrors: errors,\n * isDisabled: false,\n * registerTimeout,\n * });\n *\n * return (\n * <Button\n * onPress={() => handleCopyFormat('dd')}\n * isDisabled={!isFormatButtonEnabled}\n * >\n * {copiedFormat === 'dd' ? <Check /> : <Copy />}\n * </Button>\n * );\n * }\n * ```\n *\n * @param options - {@link UseCoordinateCopyOptions}\n * @param options.currentValue - Current coordinate value to copy (null if empty).\n * @param options.validationErrors - Array of validation error messages.\n * @param options.isDisabled - Whether copying is disabled.\n * @param options.registerTimeout - Function to register timeouts for cleanup.\n * @returns {@link UseCoordinateCopyResult} Copy utilities and feedback state.\n */\nexport function useCoordinateCopy({\n currentValue,\n validationErrors,\n isDisabled,\n registerTimeout,\n}: UseCoordinateCopyOptions): UseCoordinateCopyResult {\n const [copiedFormat, setCopiedFormat] = useState<CoordinateSystem | null>(\n null,\n );\n\n /**\n * Fallback clipboard copy for browsers that don't support navigator.clipboard API.\n * Creates a temporary textarea, copies text using document.execCommand('copy'),\n * and provides visual feedback by setting copiedFormat state for 2 seconds.\n *\n * @param text - The coordinate string to copy to clipboard\n * @param formatToCopy - The coordinate format being copied (for UI feedback)\n */\n const fallbackCopyToClipboard = (\n text: string,\n formatToCopy: CoordinateSystem,\n ) => {\n // Create temporary textarea for copy operation\n const textArea = document.createElement('textarea');\n textArea.value = text;\n // Position off-screen so it's not visible to user\n textArea.style.position = 'fixed';\n textArea.style.left = '-999999px';\n textArea.style.top = '-999999px';\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n\n try {\n document.execCommand('copy');\n\n // Set copied format to show Check icon in UI\n setCopiedFormat(formatToCopy);\n\n // Reset to null after 2 seconds to return to Copy icon\n registerTimeout(\n setTimeout(() => {\n setCopiedFormat(null);\n }, COPY_FEEDBACK_DURATION_MS),\n );\n } catch (err) {\n logger.withError(err).warn('Fallback copy to clipboard failed');\n }\n\n // Clean up temporary textarea\n document.body.removeChild(textArea);\n };\n\n /**\n * Handles copying a coordinate in the specified format to the clipboard.\n * Uses modern clipboard API (navigator.clipboard.writeText) with fallback\n * to document.execCommand for older browsers.\n *\n * Sets copiedFormat state to show visual feedback (Check icon) for 2 seconds.\n *\n * @param formatToCopy - The coordinate format to copy (dd, ddm, dms, mgrs, utm)\n */\n const handleCopyFormat = async (formatToCopy: CoordinateSystem) => {\n if (!currentValue) {\n return;\n }\n\n const allFormats = getAllCoordinateFormats(currentValue);\n const formatResult = allFormats[formatToCopy];\n\n if (!formatResult.isValid) {\n return;\n }\n\n try {\n // Modern clipboard API - copy and show feedback\n await navigator.clipboard.writeText(formatResult.value);\n\n // Set copied format to show Check icon in UI\n setCopiedFormat(formatToCopy);\n\n // Reset to null after 2 seconds to return to Copy icon\n registerTimeout(\n setTimeout(() => {\n setCopiedFormat(null);\n }, COPY_FEEDBACK_DURATION_MS),\n );\n } catch (_err) {\n // Fall back to document.execCommand for older browsers\n fallbackCopyToClipboard(formatResult.value, formatToCopy);\n }\n };\n\n const isFormatButtonEnabled =\n currentValue !== null && validationErrors.length === 0 && !isDisabled;\n\n return {\n copiedFormat,\n handleCopyFormat,\n isFormatButtonEnabled,\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAeA,MAAM,SAAS,UAAU;CACvB,SAAS,QAAQ,IAAI,aAAa;CAClC,OAAO;CACP,QAAQ;CACR,QAAQ;CACT,CAAC;AASF,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2DlC,SAAgB,kBAAkB,EAChC,cACA,kBACA,YACA,mBACoD;CACpD,MAAM,CAAC,cAAc,mBAAmB,SACtC,KACD;;;;;;;;;CAUD,MAAM,2BACJ,MACA,iBACG;EAEH,MAAM,WAAW,SAAS,cAAc,WAAW;AACnD,WAAS,QAAQ;AAEjB,WAAS,MAAM,WAAW;AAC1B,WAAS,MAAM,OAAO;AACtB,WAAS,MAAM,MAAM;AACrB,WAAS,KAAK,YAAY,SAAS;AACnC,WAAS,OAAO;AAChB,WAAS,QAAQ;AAEjB,MAAI;AACF,YAAS,YAAY,OAAO;AAG5B,mBAAgB,aAAa;AAG7B,mBACE,iBAAiB;AACf,oBAAgB,KAAK;MACpB,0BAA0B,CAC9B;WACM,KAAK;AACZ,UAAO,UAAU,IAAI,CAAC,KAAK,oCAAoC;;AAIjE,WAAS,KAAK,YAAY,SAAS;;;;;;;;;;;CAYrC,MAAM,mBAAmB,OAAO,iBAAmC;AACjE,MAAI,CAAC,aACH;EAIF,MAAM,eADa,wBAAwB,aAAa,CACxB;AAEhC,MAAI,CAAC,aAAa,QAChB;AAGF,MAAI;AAEF,SAAM,UAAU,UAAU,UAAU,aAAa,MAAM;AAGvD,mBAAgB,aAAa;AAG7B,mBACE,iBAAiB;AACf,oBAAgB,KAAK;MACpB,0BAA0B,CAC9B;WACM,MAAM;AAEb,2BAAwB,aAAa,OAAO,aAAa;;;AAO7D,QAAO;EACL;EACA;EACA,uBALA,iBAAiB,QAAQ,iBAAiB,WAAW,KAAK,CAAC;EAM5D"}
@@ -14,27 +14,96 @@ import { CoordinateSystem, CoordinateValue, SegmentConfig } from "../../componen
14
14
  import { Dispatch, SetStateAction } from "react";
15
15
 
16
16
  //#region src/hooks/coordinate-field/use-coordinate-field-state.d.ts
17
+ /** Options for the useCoordinateFieldState hook */
17
18
  interface UseCoordinateFieldStateOptions {
19
+ /** Controlled coordinate value */
18
20
  value?: CoordinateValue | null;
21
+ /** Default value for uncontrolled mode */
19
22
  defaultValue?: CoordinateValue;
23
+ /** Coordinate format system (dd, ddm, dms, mgrs, utm) */
20
24
  format: CoordinateSystem;
25
+ /** Callback when coordinate value changes */
21
26
  onChange?: Dispatch<SetStateAction<CoordinateValue | null>> | ((value: CoordinateValue | null) => void);
27
+ /** Callback for validation errors */
22
28
  onError?: (message: string, context?: Record<string, unknown>) => void;
29
+ /** Register timeouts for cleanup on unmount */
23
30
  registerTimeout?: (timeoutId: NodeJS.Timeout) => void;
24
31
  }
32
+ /** Return value from the useCoordinateFieldState hook */
25
33
  interface UseCoordinateFieldStateResult {
34
+ /** Current coordinate value (null if incomplete/invalid) */
26
35
  currentValue: CoordinateValue | null;
36
+ /** Array of display values for each segment */
27
37
  segmentValues: string[];
38
+ /** Array of validation error messages */
28
39
  validationErrors: string[];
40
+ /** All segment configurations including literals */
29
41
  segmentConfigs: SegmentConfig[];
42
+ /** Only editable segment configurations */
30
43
  editableSegmentConfigs: SegmentConfig[];
44
+ /** Handle change of a single segment */
31
45
  handleSegmentChange: (index: number, newValue: string) => void;
46
+ /** Set all segment values at once */
32
47
  setSegmentValues: (values: string[]) => void;
48
+ /** Set validation errors */
33
49
  setValidationErrors: (errors: string[]) => void;
50
+ /** First validation error or null */
34
51
  effectiveErrorMessage: string | null;
52
+ /** Apply a pasted coordinate value */
35
53
  applyPastedCoordinate: (pastedValue: CoordinateValue) => void;
54
+ /** Immediately run pending validation */
36
55
  flushPendingValidation: () => void;
37
56
  }
57
+ /**
58
+ * Manages coordinate segment values, validation, and format conversion
59
+ *
60
+ * @example
61
+ * ```tsx
62
+ * function CoordinateInputs() {
63
+ * const [value, setValue] = useState<CoordinateValue | null>(null);
64
+ * const { registerTimeout } = useTimeoutCleanup();
65
+ *
66
+ * const {
67
+ * currentValue,
68
+ * segmentValues,
69
+ * validationErrors,
70
+ * editableSegmentConfigs,
71
+ * handleSegmentChange,
72
+ * } = useCoordinateFieldState({
73
+ * value,
74
+ * format: 'ddm',
75
+ * onChange: setValue,
76
+ * onError: (msg) => console.error(msg),
77
+ * registerTimeout,
78
+ * });
79
+ *
80
+ * return (
81
+ * <div>
82
+ * {editableSegmentConfigs.map((config, i) => (
83
+ * <input
84
+ * key={i}
85
+ * value={segmentValues[i]}
86
+ * onChange={(e) => handleSegmentChange(i, e.target.value)}
87
+ * placeholder={config.placeholder}
88
+ * />
89
+ * ))}
90
+ * {validationErrors.map((error, i) => (
91
+ * <span key={i}>{error}</span>
92
+ * ))}
93
+ * </div>
94
+ * );
95
+ * }
96
+ * ```
97
+ *
98
+ * @param options - {@link UseCoordinateFieldStateOptions}
99
+ * @param options.value - Controlled coordinate value.
100
+ * @param options.defaultValue - Default value for uncontrolled mode.
101
+ * @param options.format - Coordinate format system (dd, ddm, dms, mgrs, utm).
102
+ * @param options.onChange - Callback when coordinate value changes.
103
+ * @param options.onError - Callback for validation errors.
104
+ * @param options.registerTimeout - Register timeouts for cleanup on unmount.
105
+ * @returns {@link UseCoordinateFieldStateResult} Segment state, validation, and change handlers.
106
+ */
38
107
  declare function useCoordinateFieldState({
39
108
  value,
40
109
  defaultValue,