@accelint/design-toolkit 9.3.0 → 9.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (724) 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 +22 -4
  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 +30 -16
  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 +10 -2
  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 +25 -2
  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 +22 -2
  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 +49 -4
  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 +34 -2
  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 +20 -4
  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 +28 -10
  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 +31 -5
  122. package/dist/components/coordinate-field/index.js.map +1 -1
  123. package/dist/components/coordinate-field/segment-configs.js +1 -1
  124. package/dist/components/coordinate-field/segment-configs.js.map +1 -1
  125. package/dist/components/coordinate-field/segment.d.ts +27 -2
  126. package/dist/components/coordinate-field/segment.js +33 -8
  127. package/dist/components/coordinate-field/segment.js.map +1 -1
  128. package/dist/components/coordinate-field/styles.module.css +12 -4
  129. package/dist/components/date-field/index.d.ts +27 -2
  130. package/dist/components/date-field/index.js +25 -0
  131. package/dist/components/date-field/index.js.map +1 -1
  132. package/dist/components/date-field/types.d.ts +19 -3
  133. package/dist/components/deferred-collection/index.d.ts +10 -2
  134. package/dist/components/deferred-collection/index.js +8 -0
  135. package/dist/components/deferred-collection/index.js.map +1 -1
  136. package/dist/components/deferred-collection/types.d.ts +6 -3
  137. package/dist/components/details-list/context.d.ts +25 -4
  138. package/dist/components/details-list/context.js +21 -0
  139. package/dist/components/details-list/context.js.map +1 -1
  140. package/dist/components/details-list/index.d.ts +9 -2
  141. package/dist/components/details-list/index.js +7 -0
  142. package/dist/components/details-list/index.js.map +1 -1
  143. package/dist/components/details-list/label.d.ts +18 -2
  144. package/dist/components/details-list/label.js +16 -0
  145. package/dist/components/details-list/label.js.map +1 -1
  146. package/dist/components/details-list/types.d.ts +14 -0
  147. package/dist/components/details-list/value.d.ts +20 -2
  148. package/dist/components/details-list/value.js +17 -0
  149. package/dist/components/details-list/value.js.map +1 -1
  150. package/dist/components/dialog/content.d.ts +23 -2
  151. package/dist/components/dialog/content.js +20 -0
  152. package/dist/components/dialog/content.js.map +1 -1
  153. package/dist/components/dialog/context.d.ts +5 -2
  154. package/dist/components/dialog/context.js +3 -0
  155. package/dist/components/dialog/context.js.map +1 -1
  156. package/dist/components/dialog/footer.d.ts +26 -2
  157. package/dist/components/dialog/footer.js +23 -0
  158. package/dist/components/dialog/footer.js.map +1 -1
  159. package/dist/components/dialog/index.d.ts +12 -2
  160. package/dist/components/dialog/index.js +10 -0
  161. package/dist/components/dialog/index.js.map +1 -1
  162. package/dist/components/dialog/title.d.ts +21 -2
  163. package/dist/components/dialog/title.js +18 -0
  164. package/dist/components/dialog/title.js.map +1 -1
  165. package/dist/components/dialog/trigger.d.ts +18 -0
  166. package/dist/components/dialog/trigger.js +17 -0
  167. package/dist/components/dialog/trigger.js.map +1 -1
  168. package/dist/components/dialog/types.d.ts +12 -0
  169. package/dist/components/divider/context.d.ts +24 -4
  170. package/dist/components/divider/context.js +20 -0
  171. package/dist/components/divider/context.js.map +1 -1
  172. package/dist/components/divider/index.d.ts +13 -2
  173. package/dist/components/divider/index.js +10 -0
  174. package/dist/components/divider/index.js.map +1 -1
  175. package/dist/components/divider/types.d.ts +4 -4
  176. package/dist/components/drawer/back.d.ts +21 -2
  177. package/dist/components/drawer/back.js +19 -1
  178. package/dist/components/drawer/back.js.map +1 -1
  179. package/dist/components/drawer/close.d.ts +25 -2
  180. package/dist/components/drawer/close.js +28 -3
  181. package/dist/components/drawer/close.js.map +1 -1
  182. package/dist/components/drawer/content.d.ts +22 -2
  183. package/dist/components/drawer/content.js +19 -0
  184. package/dist/components/drawer/content.js.map +1 -1
  185. package/dist/components/drawer/context.d.ts +46 -4
  186. package/dist/components/drawer/context.js +45 -2
  187. package/dist/components/drawer/context.js.map +1 -1
  188. package/dist/components/drawer/events.d.ts +2 -0
  189. package/dist/components/drawer/events.js +2 -0
  190. package/dist/components/drawer/events.js.map +1 -1
  191. package/dist/components/drawer/footer.d.ts +24 -2
  192. package/dist/components/drawer/footer.js +21 -0
  193. package/dist/components/drawer/footer.js.map +1 -1
  194. package/dist/components/drawer/header-title.d.ts +22 -4
  195. package/dist/components/drawer/header-title.js +19 -2
  196. package/dist/components/drawer/header-title.js.map +1 -1
  197. package/dist/components/drawer/header.d.ts +34 -2
  198. package/dist/components/drawer/header.js +42 -2
  199. package/dist/components/drawer/header.js.map +1 -1
  200. package/dist/components/drawer/index.d.ts +14 -2
  201. package/dist/components/drawer/index.js +16 -0
  202. package/dist/components/drawer/index.js.map +1 -1
  203. package/dist/components/drawer/layout-main.d.ts +23 -2
  204. package/dist/components/drawer/layout-main.js +20 -0
  205. package/dist/components/drawer/layout-main.js.map +1 -1
  206. package/dist/components/drawer/layout.d.ts +25 -2
  207. package/dist/components/drawer/layout.js +22 -0
  208. package/dist/components/drawer/layout.js.map +1 -1
  209. package/dist/components/drawer/menu-item.d.ts +25 -2
  210. package/dist/components/drawer/menu-item.js +22 -0
  211. package/dist/components/drawer/menu-item.js.map +1 -1
  212. package/dist/components/drawer/menu.d.ts +22 -2
  213. package/dist/components/drawer/menu.js +19 -0
  214. package/dist/components/drawer/menu.js.map +1 -1
  215. package/dist/components/drawer/panel.d.ts +21 -2
  216. package/dist/components/drawer/panel.js +18 -0
  217. package/dist/components/drawer/panel.js.map +1 -1
  218. package/dist/components/drawer/trigger.d.ts +31 -2
  219. package/dist/components/drawer/trigger.js +29 -1
  220. package/dist/components/drawer/trigger.js.map +1 -1
  221. package/dist/components/drawer/types.d.ts +149 -2
  222. package/dist/components/drawer/view.d.ts +25 -2
  223. package/dist/components/drawer/view.js +22 -0
  224. package/dist/components/drawer/view.js.map +1 -1
  225. package/dist/components/flashcard/index.d.ts +129 -27
  226. package/dist/components/flashcard/index.js +120 -18
  227. package/dist/components/flashcard/index.js.map +1 -1
  228. package/dist/components/flashcard/styles.module.css +1 -1
  229. package/dist/components/flashcard/types.d.ts +12 -0
  230. package/dist/components/hero/context.d.ts +5 -2
  231. package/dist/components/hero/context.js +3 -0
  232. package/dist/components/hero/context.js.map +1 -1
  233. package/dist/components/hero/index.d.ts +9 -2
  234. package/dist/components/hero/index.js +7 -0
  235. package/dist/components/hero/index.js.map +1 -1
  236. package/dist/components/hero/subtitle.d.ts +17 -2
  237. package/dist/components/hero/subtitle.js +15 -0
  238. package/dist/components/hero/subtitle.js.map +1 -1
  239. package/dist/components/hero/title.d.ts +16 -3
  240. package/dist/components/hero/title.js +13 -0
  241. package/dist/components/hero/title.js.map +1 -1
  242. package/dist/components/hero/types.d.ts +9 -0
  243. package/dist/components/hotkey/context.d.ts +24 -4
  244. package/dist/components/hotkey/context.js +20 -0
  245. package/dist/components/hotkey/context.js.map +1 -1
  246. package/dist/components/hotkey/index.d.ts +17 -2
  247. package/dist/components/hotkey/index.js +15 -0
  248. package/dist/components/hotkey/index.js.map +1 -1
  249. package/dist/components/hotkey/set.d.ts +21 -2
  250. package/dist/components/hotkey/set.js +18 -0
  251. package/dist/components/hotkey/set.js.map +1 -1
  252. package/dist/components/hotkey/types.d.ts +4 -0
  253. package/dist/components/icon/context.d.ts +24 -4
  254. package/dist/components/icon/context.js +20 -0
  255. package/dist/components/icon/context.js.map +1 -1
  256. package/dist/components/icon/index.d.ts +15 -2
  257. package/dist/components/icon/index.js +13 -0
  258. package/dist/components/icon/index.js.map +1 -1
  259. package/dist/components/icon/types.d.ts +4 -0
  260. package/dist/components/input/context.d.ts +6 -2
  261. package/dist/components/input/context.js +4 -0
  262. package/dist/components/input/context.js.map +1 -1
  263. package/dist/components/input/index.d.ts +17 -2
  264. package/dist/components/input/index.js +16 -1
  265. package/dist/components/input/index.js.map +1 -1
  266. package/dist/components/input/types.d.ts +16 -0
  267. package/dist/components/kanban/card-body.d.ts +10 -2
  268. package/dist/components/kanban/card-body.js +8 -0
  269. package/dist/components/kanban/card-body.js.map +1 -1
  270. package/dist/components/kanban/card-header-actions.d.ts +10 -2
  271. package/dist/components/kanban/card-header-actions.js +8 -0
  272. package/dist/components/kanban/card-header-actions.js.map +1 -1
  273. package/dist/components/kanban/card-header-title.d.ts +10 -2
  274. package/dist/components/kanban/card-header-title.js +8 -0
  275. package/dist/components/kanban/card-header-title.js.map +1 -1
  276. package/dist/components/kanban/card-header.d.ts +12 -2
  277. package/dist/components/kanban/card-header.js +10 -0
  278. package/dist/components/kanban/card-header.js.map +1 -1
  279. package/dist/components/kanban/card.d.ts +26 -2
  280. package/dist/components/kanban/card.js +23 -0
  281. package/dist/components/kanban/card.js.map +1 -1
  282. package/dist/components/kanban/column-actions.d.ts +10 -2
  283. package/dist/components/kanban/column-actions.js +9 -1
  284. package/dist/components/kanban/column-actions.js.map +1 -1
  285. package/dist/components/kanban/column-container.d.ts +10 -2
  286. package/dist/components/kanban/column-container.js +8 -0
  287. package/dist/components/kanban/column-container.js.map +1 -1
  288. package/dist/components/kanban/column-content.d.ts +13 -2
  289. package/dist/components/kanban/column-content.js +11 -0
  290. package/dist/components/kanban/column-content.js.map +1 -1
  291. package/dist/components/kanban/column-header-actions.d.ts +13 -2
  292. package/dist/components/kanban/column-header-actions.js +11 -0
  293. package/dist/components/kanban/column-header-actions.js.map +1 -1
  294. package/dist/components/kanban/column-header-drag-handle.d.ts +7 -2
  295. package/dist/components/kanban/column-header-drag-handle.js +6 -1
  296. package/dist/components/kanban/column-header-drag-handle.js.map +1 -1
  297. package/dist/components/kanban/column-header-title.d.ts +10 -2
  298. package/dist/components/kanban/column-header-title.js +8 -0
  299. package/dist/components/kanban/column-header-title.js.map +1 -1
  300. package/dist/components/kanban/column-header.d.ts +12 -2
  301. package/dist/components/kanban/column-header.js +10 -0
  302. package/dist/components/kanban/column-header.js.map +1 -1
  303. package/dist/components/kanban/column.d.ts +22 -2
  304. package/dist/components/kanban/column.js +19 -0
  305. package/dist/components/kanban/column.js.map +1 -1
  306. package/dist/components/kanban/context.d.ts +49 -2
  307. package/dist/components/kanban/context.js +30 -0
  308. package/dist/components/kanban/context.js.map +1 -1
  309. package/dist/components/kanban/header-actions.d.ts +10 -2
  310. package/dist/components/kanban/header-actions.js +8 -0
  311. package/dist/components/kanban/header-actions.js.map +1 -1
  312. package/dist/components/kanban/header-search.d.ts +9 -2
  313. package/dist/components/kanban/header-search.js +7 -0
  314. package/dist/components/kanban/header-search.js.map +1 -1
  315. package/dist/components/kanban/header-title.d.ts +10 -2
  316. package/dist/components/kanban/header-title.js +8 -0
  317. package/dist/components/kanban/header-title.js.map +1 -1
  318. package/dist/components/kanban/header.d.ts +12 -2
  319. package/dist/components/kanban/header.js +10 -0
  320. package/dist/components/kanban/header.js.map +1 -1
  321. package/dist/components/kanban/kanban.d.ts +33 -4
  322. package/dist/components/kanban/kanban.js +29 -0
  323. package/dist/components/kanban/kanban.js.map +1 -1
  324. package/dist/components/kanban/types.d.ts +51 -0
  325. package/dist/components/label/context.d.ts +25 -4
  326. package/dist/components/label/context.js +21 -0
  327. package/dist/components/label/context.js.map +1 -1
  328. package/dist/components/label/index.d.ts +16 -2
  329. package/dist/components/label/index.js +14 -0
  330. package/dist/components/label/index.js.map +1 -1
  331. package/dist/components/label/types.d.ts +5 -0
  332. package/dist/components/lines/index.d.ts +12 -2
  333. package/dist/components/lines/index.js +9 -0
  334. package/dist/components/lines/index.js.map +1 -1
  335. package/dist/components/lines/types.d.ts +6 -0
  336. package/dist/components/link/context.d.ts +21 -2
  337. package/dist/components/link/context.js +18 -0
  338. package/dist/components/link/context.js.map +1 -1
  339. package/dist/components/link/index.d.ts +12 -2
  340. package/dist/components/link/index.js +9 -0
  341. package/dist/components/link/index.js.map +1 -1
  342. package/dist/components/link/types.d.ts +5 -0
  343. package/dist/components/list/context.d.ts +11 -2
  344. package/dist/components/list/context.js +9 -0
  345. package/dist/components/list/context.js.map +1 -1
  346. package/dist/components/list/index.d.ts +11 -2
  347. package/dist/components/list/index.js +9 -0
  348. package/dist/components/list/index.js.map +1 -1
  349. package/dist/components/list/item-content.d.ts +9 -2
  350. package/dist/components/list/item-content.js +6 -0
  351. package/dist/components/list/item-content.js.map +1 -1
  352. package/dist/components/list/item-description.d.ts +9 -2
  353. package/dist/components/list/item-description.js +7 -0
  354. package/dist/components/list/item-description.js.map +1 -1
  355. package/dist/components/list/item-title.d.ts +9 -2
  356. package/dist/components/list/item-title.js +7 -0
  357. package/dist/components/list/item-title.js.map +1 -1
  358. package/dist/components/list/item.d.ts +10 -2
  359. package/dist/components/list/item.js +8 -0
  360. package/dist/components/list/item.js.map +1 -1
  361. package/dist/components/list/types.d.ts +22 -0
  362. package/dist/components/menu/context.d.ts +6 -2
  363. package/dist/components/menu/context.js +4 -0
  364. package/dist/components/menu/context.js.map +1 -1
  365. package/dist/components/menu/index.d.ts +24 -3
  366. package/dist/components/menu/index.js +22 -1
  367. package/dist/components/menu/index.js.map +1 -1
  368. package/dist/components/menu/item-description.d.ts +17 -2
  369. package/dist/components/menu/item-description.js +15 -0
  370. package/dist/components/menu/item-description.js.map +1 -1
  371. package/dist/components/menu/item-label.d.ts +17 -2
  372. package/dist/components/menu/item-label.js +15 -0
  373. package/dist/components/menu/item-label.js.map +1 -1
  374. package/dist/components/menu/item.d.ts +23 -2
  375. package/dist/components/menu/item.js +21 -1
  376. package/dist/components/menu/item.js.map +1 -1
  377. package/dist/components/menu/section.d.ts +23 -2
  378. package/dist/components/menu/section.js +20 -0
  379. package/dist/components/menu/section.js.map +1 -1
  380. package/dist/components/menu/separator.d.ts +16 -2
  381. package/dist/components/menu/separator.js +14 -0
  382. package/dist/components/menu/separator.js.map +1 -1
  383. package/dist/components/menu/submenu.d.ts +19 -3
  384. package/dist/components/menu/submenu.js +16 -0
  385. package/dist/components/menu/submenu.js.map +1 -1
  386. package/dist/components/menu/trigger.d.ts +15 -0
  387. package/dist/components/menu/trigger.js +15 -0
  388. package/dist/components/menu/trigger.js.map +1 -1
  389. package/dist/components/menu/types.d.ts +25 -0
  390. package/dist/components/notice/events.d.ts +9 -0
  391. package/dist/components/notice/events.js +9 -0
  392. package/dist/components/notice/events.js.map +1 -1
  393. package/dist/components/notice/index.d.ts +34 -2
  394. package/dist/components/notice/index.js +32 -1
  395. package/dist/components/notice/index.js.map +1 -1
  396. package/dist/components/notice/list.d.ts +31 -2
  397. package/dist/components/notice/list.js +28 -0
  398. package/dist/components/notice/list.js.map +1 -1
  399. package/dist/components/notice/notice-icon.d.ts +22 -2
  400. package/dist/components/notice/notice-icon.js +23 -1
  401. package/dist/components/notice/notice-icon.js.map +1 -1
  402. package/dist/components/notice/types.d.ts +60 -0
  403. package/dist/components/notice/utils.d.ts +8 -0
  404. package/dist/components/notice/utils.js +8 -0
  405. package/dist/components/notice/utils.js.map +1 -1
  406. package/dist/components/options/context.d.ts +3 -2
  407. package/dist/components/options/context.js +1 -0
  408. package/dist/components/options/context.js.map +1 -1
  409. package/dist/components/options/index.d.ts +15 -2
  410. package/dist/components/options/index.js +13 -0
  411. package/dist/components/options/index.js.map +1 -1
  412. package/dist/components/options/item-content.d.ts +22 -2
  413. package/dist/components/options/item-content.js +19 -0
  414. package/dist/components/options/item-content.js.map +1 -1
  415. package/dist/components/options/item-description.d.ts +14 -2
  416. package/dist/components/options/item-description.js +12 -0
  417. package/dist/components/options/item-description.js.map +1 -1
  418. package/dist/components/options/item-label.d.ts +14 -2
  419. package/dist/components/options/item-label.js +12 -0
  420. package/dist/components/options/item-label.js.map +1 -1
  421. package/dist/components/options/item.d.ts +24 -2
  422. package/dist/components/options/item.js +21 -0
  423. package/dist/components/options/item.js.map +1 -1
  424. package/dist/components/options/section.d.ts +21 -2
  425. package/dist/components/options/section.js +18 -0
  426. package/dist/components/options/section.js.map +1 -1
  427. package/dist/components/options/types.d.ts +24 -0
  428. package/dist/components/pagination/context.d.ts +1 -0
  429. package/dist/components/pagination/context.js +1 -0
  430. package/dist/components/pagination/context.js.map +1 -1
  431. package/dist/components/pagination/index.d.ts +18 -11
  432. package/dist/components/pagination/index.js +15 -9
  433. package/dist/components/pagination/index.js.map +1 -1
  434. package/dist/components/pagination/next.d.ts +17 -2
  435. package/dist/components/pagination/next.js +15 -0
  436. package/dist/components/pagination/next.js.map +1 -1
  437. package/dist/components/pagination/pages.d.ts +21 -2
  438. package/dist/components/pagination/pages.js +18 -0
  439. package/dist/components/pagination/pages.js.map +1 -1
  440. package/dist/components/pagination/prev.d.ts +17 -2
  441. package/dist/components/pagination/prev.js +16 -1
  442. package/dist/components/pagination/prev.js.map +1 -1
  443. package/dist/components/pagination/types.d.ts +32 -0
  444. package/dist/components/pagination/utils.d.ts +35 -0
  445. package/dist/components/pagination/utils.js +35 -0
  446. package/dist/components/pagination/utils.js.map +1 -1
  447. package/dist/components/popover/content.d.ts +20 -2
  448. package/dist/components/popover/content.js +17 -0
  449. package/dist/components/popover/content.js.map +1 -1
  450. package/dist/components/popover/footer.d.ts +22 -2
  451. package/dist/components/popover/footer.js +19 -0
  452. package/dist/components/popover/footer.js.map +1 -1
  453. package/dist/components/popover/index.d.ts +9 -2
  454. package/dist/components/popover/index.js +8 -1
  455. package/dist/components/popover/index.js.map +1 -1
  456. package/dist/components/popover/styles.module.css +6 -0
  457. package/dist/components/popover/title.d.ts +17 -2
  458. package/dist/components/popover/title.js +15 -0
  459. package/dist/components/popover/title.js.map +1 -1
  460. package/dist/components/popover/trigger.d.ts +24 -2
  461. package/dist/components/popover/trigger.js +21 -0
  462. package/dist/components/popover/trigger.js.map +1 -1
  463. package/dist/components/popover/types.d.ts +10 -0
  464. package/dist/components/query-builder/action-element.d.ts +20 -2
  465. package/dist/components/query-builder/action-element.js +17 -0
  466. package/dist/components/query-builder/action-element.js.map +1 -1
  467. package/dist/components/query-builder/actions.d.ts +37 -4
  468. package/dist/components/query-builder/actions.js +36 -1
  469. package/dist/components/query-builder/actions.js.map +1 -1
  470. package/dist/components/query-builder/combinator-selector.d.ts +10 -2
  471. package/dist/components/query-builder/combinator-selector.js +8 -0
  472. package/dist/components/query-builder/combinator-selector.js.map +1 -1
  473. package/dist/components/query-builder/constants.d.ts +1 -0
  474. package/dist/components/query-builder/constants.js +1 -0
  475. package/dist/components/query-builder/constants.js.map +1 -1
  476. package/dist/components/query-builder/index.d.ts +11 -2
  477. package/dist/components/query-builder/index.js +9 -0
  478. package/dist/components/query-builder/index.js.map +1 -1
  479. package/dist/components/query-builder/rule-group.d.ts +52 -4
  480. package/dist/components/query-builder/rule-group.js +47 -0
  481. package/dist/components/query-builder/rule-group.js.map +1 -1
  482. package/dist/components/query-builder/rule.d.ts +20 -2
  483. package/dist/components/query-builder/rule.js +18 -0
  484. package/dist/components/query-builder/rule.js.map +1 -1
  485. package/dist/components/query-builder/types.d.ts +9 -0
  486. package/dist/components/query-builder/utils.d.ts +15 -0
  487. package/dist/components/query-builder/utils.js +15 -0
  488. package/dist/components/query-builder/utils.js.map +1 -1
  489. package/dist/components/query-builder/value-editor.d.ts +23 -2
  490. package/dist/components/query-builder/value-editor.js +20 -0
  491. package/dist/components/query-builder/value-editor.js.map +1 -1
  492. package/dist/components/query-builder/value-selector.d.ts +23 -2
  493. package/dist/components/query-builder/value-selector.js +20 -0
  494. package/dist/components/query-builder/value-selector.js.map +1 -1
  495. package/dist/components/radio/context.d.ts +2 -2
  496. package/dist/components/radio/group.d.ts +19 -2
  497. package/dist/components/radio/group.js +16 -0
  498. package/dist/components/radio/group.js.map +1 -1
  499. package/dist/components/radio/index.d.ts +13 -26
  500. package/dist/components/radio/index.js +11 -24
  501. package/dist/components/radio/index.js.map +1 -1
  502. package/dist/components/radio/types.d.ts +16 -0
  503. package/dist/components/search-field/context.d.ts +7 -4
  504. package/dist/components/search-field/context.js +3 -0
  505. package/dist/components/search-field/context.js.map +1 -1
  506. package/dist/components/search-field/index.d.ts +15 -24
  507. package/dist/components/search-field/index.js +16 -23
  508. package/dist/components/search-field/index.js.map +1 -1
  509. package/dist/components/search-field/types.d.ts +13 -0
  510. package/dist/components/select-field/context.d.ts +11 -4
  511. package/dist/components/select-field/context.js +7 -0
  512. package/dist/components/select-field/context.js.map +1 -1
  513. package/dist/components/select-field/index.d.ts +19 -39
  514. package/dist/components/select-field/index.js +18 -38
  515. package/dist/components/select-field/index.js.map +1 -1
  516. package/dist/components/select-field/styles.module.css +8 -0
  517. package/dist/components/select-field/types.d.ts +18 -0
  518. package/dist/components/sidenav/avatar.d.ts +19 -2
  519. package/dist/components/sidenav/avatar.js +16 -0
  520. package/dist/components/sidenav/avatar.js.map +1 -1
  521. package/dist/components/sidenav/content.d.ts +23 -2
  522. package/dist/components/sidenav/content.js +20 -0
  523. package/dist/components/sidenav/content.js.map +1 -1
  524. package/dist/components/sidenav/context.d.ts +3 -2
  525. package/dist/components/sidenav/context.js +1 -0
  526. package/dist/components/sidenav/context.js.map +1 -1
  527. package/dist/components/sidenav/events.d.ts +2 -0
  528. package/dist/components/sidenav/events.js +2 -0
  529. package/dist/components/sidenav/events.js.map +1 -1
  530. package/dist/components/sidenav/footer.d.ts +16 -2
  531. package/dist/components/sidenav/footer.js +13 -0
  532. package/dist/components/sidenav/footer.js.map +1 -1
  533. package/dist/components/sidenav/header.d.ts +20 -2
  534. package/dist/components/sidenav/header.js +18 -1
  535. package/dist/components/sidenav/header.js.map +1 -1
  536. package/dist/components/sidenav/index.d.ts +11 -2
  537. package/dist/components/sidenav/index.js +9 -0
  538. package/dist/components/sidenav/index.js.map +1 -1
  539. package/dist/components/sidenav/item.d.ts +17 -2
  540. package/dist/components/sidenav/item.js +14 -0
  541. package/dist/components/sidenav/item.js.map +1 -1
  542. package/dist/components/sidenav/link.d.ts +17 -2
  543. package/dist/components/sidenav/link.js +15 -1
  544. package/dist/components/sidenav/link.js.map +1 -1
  545. package/dist/components/sidenav/menu-item.d.ts +16 -2
  546. package/dist/components/sidenav/menu-item.js +13 -0
  547. package/dist/components/sidenav/menu-item.js.map +1 -1
  548. package/dist/components/sidenav/menu.d.ts +19 -2
  549. package/dist/components/sidenav/menu.js +17 -1
  550. package/dist/components/sidenav/menu.js.map +1 -1
  551. package/dist/components/sidenav/trigger.d.ts +17 -2
  552. package/dist/components/sidenav/trigger.js +14 -0
  553. package/dist/components/sidenav/trigger.js.map +1 -1
  554. package/dist/components/sidenav/types.d.ts +53 -0
  555. package/dist/components/skeleton/index.d.ts +12 -27
  556. package/dist/components/skeleton/index.js +10 -24
  557. package/dist/components/skeleton/index.js.map +1 -1
  558. package/dist/components/skeleton/types.d.ts +4 -0
  559. package/dist/components/slider/index.d.ts +30 -29
  560. package/dist/components/slider/index.js +28 -27
  561. package/dist/components/slider/index.js.map +1 -1
  562. package/dist/components/slider/types.d.ts +18 -0
  563. package/dist/components/switch/context.d.ts +16 -10
  564. package/dist/components/switch/context.js +13 -7
  565. package/dist/components/switch/context.js.map +1 -1
  566. package/dist/components/switch/index.d.ts +14 -31
  567. package/dist/components/switch/index.js +12 -29
  568. package/dist/components/switch/index.js.map +1 -1
  569. package/dist/components/switch/types.d.ts +5 -0
  570. package/dist/components/table/body.d.ts +21 -2
  571. package/dist/components/table/body.js +18 -0
  572. package/dist/components/table/body.js.map +1 -1
  573. package/dist/components/table/cell.d.ts +22 -2
  574. package/dist/components/table/cell.js +19 -0
  575. package/dist/components/table/cell.js.map +1 -1
  576. package/dist/components/table/constants/table.d.ts +6 -0
  577. package/dist/components/table/constants/table.js +4 -0
  578. package/dist/components/table/constants/table.js.map +1 -1
  579. package/dist/components/table/context.d.ts +3 -2
  580. package/dist/components/table/context.js +1 -0
  581. package/dist/components/table/context.js.map +1 -1
  582. package/dist/components/table/header-cell.d.ts +24 -2
  583. package/dist/components/table/header-cell.js +24 -1
  584. package/dist/components/table/header-cell.js.map +1 -1
  585. package/dist/components/table/header.d.ts +22 -2
  586. package/dist/components/table/header.js +19 -0
  587. package/dist/components/table/header.js.map +1 -1
  588. package/dist/components/table/index.d.ts +28 -6
  589. package/dist/components/table/index.js +27 -5
  590. package/dist/components/table/index.js.map +1 -1
  591. package/dist/components/table/row.d.ts +26 -2
  592. package/dist/components/table/row.js +23 -0
  593. package/dist/components/table/row.js.map +1 -1
  594. package/dist/components/table/types.d.ts +3 -0
  595. package/dist/components/tabs/context.d.ts +20 -10
  596. package/dist/components/tabs/context.js +17 -7
  597. package/dist/components/tabs/context.js.map +1 -1
  598. package/dist/components/tabs/index.d.ts +17 -40
  599. package/dist/components/tabs/index.js +15 -38
  600. package/dist/components/tabs/index.js.map +1 -1
  601. package/dist/components/tabs/list.d.ts +20 -4
  602. package/dist/components/tabs/list.js +17 -2
  603. package/dist/components/tabs/list.js.map +1 -1
  604. package/dist/components/tabs/panel.d.ts +21 -4
  605. package/dist/components/tabs/panel.js +18 -2
  606. package/dist/components/tabs/panel.js.map +1 -1
  607. package/dist/components/tabs/tab.d.ts +17 -4
  608. package/dist/components/tabs/tab.js +14 -2
  609. package/dist/components/tabs/tab.js.map +1 -1
  610. package/dist/components/tabs/types.d.ts +3 -0
  611. package/dist/components/text-area-field/context.d.ts +20 -10
  612. package/dist/components/text-area-field/context.js +17 -7
  613. package/dist/components/text-area-field/context.js.map +1 -1
  614. package/dist/components/text-area-field/index.d.ts +20 -15
  615. package/dist/components/text-area-field/index.js +18 -13
  616. package/dist/components/text-area-field/index.js.map +1 -1
  617. package/dist/components/text-area-field/styles.module.css +1 -1
  618. package/dist/components/text-area-field/types.d.ts +9 -0
  619. package/dist/components/text-field/context.d.ts +24 -4
  620. package/dist/components/text-field/context.js +20 -0
  621. package/dist/components/text-field/context.js.map +1 -1
  622. package/dist/components/text-field/index.d.ts +17 -82
  623. package/dist/components/text-field/index.js +15 -80
  624. package/dist/components/text-field/index.js.map +1 -1
  625. package/dist/components/text-field/types.d.ts +9 -0
  626. package/dist/components/time-field/index.d.ts +23 -5
  627. package/dist/components/time-field/index.js +21 -4
  628. package/dist/components/time-field/index.js.map +1 -1
  629. package/dist/components/time-field/types.d.ts +9 -0
  630. package/dist/components/tooltip/context.d.ts +3 -2
  631. package/dist/components/tooltip/context.js +1 -0
  632. package/dist/components/tooltip/context.js.map +1 -1
  633. package/dist/components/tooltip/index.d.ts +15 -30
  634. package/dist/components/tooltip/index.js +13 -28
  635. package/dist/components/tooltip/index.js.map +1 -1
  636. package/dist/components/tooltip/trigger.d.ts +22 -2
  637. package/dist/components/tooltip/trigger.js +19 -0
  638. package/dist/components/tooltip/trigger.js.map +1 -1
  639. package/dist/components/tooltip/types.d.ts +7 -0
  640. package/dist/components/tree/context.d.ts +5 -9
  641. package/dist/components/tree/context.js +2 -6
  642. package/dist/components/tree/context.js.map +1 -1
  643. package/dist/components/tree/index.d.ts +30 -8
  644. package/dist/components/tree/index.js +28 -6
  645. package/dist/components/tree/index.js.map +1 -1
  646. package/dist/components/tree/item-actions.d.ts +19 -4
  647. package/dist/components/tree/item-actions.js +16 -2
  648. package/dist/components/tree/item-actions.js.map +1 -1
  649. package/dist/components/tree/item-content.d.ts +18 -4
  650. package/dist/components/tree/item-content.js +20 -3
  651. package/dist/components/tree/item-content.js.map +1 -1
  652. package/dist/components/tree/item-description.d.ts +15 -4
  653. package/dist/components/tree/item-description.js +13 -2
  654. package/dist/components/tree/item-description.js.map +1 -1
  655. package/dist/components/tree/item-label.d.ts +15 -4
  656. package/dist/components/tree/item-label.js +13 -2
  657. package/dist/components/tree/item-label.js.map +1 -1
  658. package/dist/components/tree/item-prefix-icon.d.ts +15 -4
  659. package/dist/components/tree/item-prefix-icon.js +13 -2
  660. package/dist/components/tree/item-prefix-icon.js.map +1 -1
  661. package/dist/components/tree/item.d.ts +24 -4
  662. package/dist/components/tree/item.js +21 -2
  663. package/dist/components/tree/item.js.map +1 -1
  664. package/dist/components/tree/lines.d.ts +10 -2
  665. package/dist/components/tree/lines.js +8 -0
  666. package/dist/components/tree/lines.js.map +1 -1
  667. package/dist/components/tree/types.d.ts +26 -0
  668. package/dist/components/view-stack/context.d.ts +20 -9
  669. package/dist/components/view-stack/context.js +18 -7
  670. package/dist/components/view-stack/context.js.map +1 -1
  671. package/dist/components/view-stack/events.d.ts +2 -0
  672. package/dist/components/view-stack/events.js +2 -0
  673. package/dist/components/view-stack/events.js.map +1 -1
  674. package/dist/components/view-stack/index.d.ts +16 -24
  675. package/dist/components/view-stack/index.js +14 -22
  676. package/dist/components/view-stack/index.js.map +1 -1
  677. package/dist/components/view-stack/trigger.d.ts +26 -4
  678. package/dist/components/view-stack/trigger.js +23 -2
  679. package/dist/components/view-stack/trigger.js.map +1 -1
  680. package/dist/components/view-stack/types.d.ts +29 -0
  681. package/dist/components/view-stack/view.d.ts +22 -2
  682. package/dist/components/view-stack/view.js +19 -0
  683. package/dist/components/view-stack/view.js.map +1 -1
  684. package/dist/hooks/coordinate-field/use-coordinate-copy.d.ts +44 -0
  685. package/dist/hooks/coordinate-field/use-coordinate-copy.js +35 -0
  686. package/dist/hooks/coordinate-field/use-coordinate-copy.js.map +1 -1
  687. package/dist/hooks/coordinate-field/use-coordinate-field-state.d.ts +69 -0
  688. package/dist/hooks/coordinate-field/use-coordinate-field-state.js +50 -0
  689. package/dist/hooks/coordinate-field/use-coordinate-field-state.js.map +1 -1
  690. package/dist/hooks/coordinate-field/use-coordinate-field.d.ts +61 -0
  691. package/dist/hooks/coordinate-field/use-coordinate-field.js +47 -0
  692. package/dist/hooks/coordinate-field/use-coordinate-field.js.map +1 -1
  693. package/dist/hooks/coordinate-field/use-coordinate-focus.d.ts +51 -0
  694. package/dist/hooks/coordinate-field/use-coordinate-focus.js +39 -0
  695. package/dist/hooks/coordinate-field/use-coordinate-focus.js.map +1 -1
  696. package/dist/hooks/coordinate-field/use-coordinate-paste.d.ts +63 -0
  697. package/dist/hooks/coordinate-field/use-coordinate-paste.js +51 -0
  698. package/dist/hooks/coordinate-field/use-coordinate-paste.js.map +1 -1
  699. package/dist/hooks/coordinate-field/use-timeout-cleanup.d.ts +32 -0
  700. package/dist/hooks/coordinate-field/use-timeout-cleanup.js +30 -0
  701. package/dist/hooks/coordinate-field/use-timeout-cleanup.js.map +1 -1
  702. package/dist/hooks/use-frame-delay/index.d.ts +5 -0
  703. package/dist/hooks/use-frame-delay/index.js +5 -0
  704. package/dist/hooks/use-frame-delay/index.js.map +1 -1
  705. package/dist/hooks/use-tree/actions/index.d.ts +4 -2
  706. package/dist/hooks/use-tree/actions/index.js +4 -2
  707. package/dist/hooks/use-tree/actions/index.js.map +1 -1
  708. package/dist/hooks/use-tree/state/index.d.ts +7 -0
  709. package/dist/hooks/use-tree/state/index.js +7 -0
  710. package/dist/hooks/use-tree/state/index.js.map +1 -1
  711. package/dist/hooks/use-tree/types.d.ts +22 -0
  712. package/dist/index.d.ts +4 -4
  713. package/dist/index.js +1 -1
  714. package/dist/lib/types.d.ts +17 -0
  715. package/dist/lib/utils.d.ts +15 -0
  716. package/dist/lib/utils.js +15 -0
  717. package/dist/lib/utils.js.map +1 -1
  718. package/dist/providers/portal.d.ts +11 -2
  719. package/dist/providers/portal.js +9 -0
  720. package/dist/providers/portal.js.map +1 -1
  721. package/dist/providers/theme-provider.d.ts +18 -2
  722. package/dist/providers/theme-provider.js +15 -0
  723. package/dist/providers/theme-provider.js.map +1 -1
  724. package/package.json +7 -7
@@ -21,9 +21,7 @@ import { useEmit } from "@accelint/bus/react";
21
21
 
22
22
  //#region src/components/view-stack/context.tsx
23
23
  const bus = Broadcast.getInstance();
24
- /**
25
- * Context for ViewStack component
26
- */
24
+ /** Context for sharing state across ViewStack components */
27
25
  const ViewStackContext = createContext({
28
26
  parent: null,
29
27
  stack: [],
@@ -31,9 +29,7 @@ const ViewStackContext = createContext({
31
29
  register: () => void 0,
32
30
  unregister: () => void 0
33
31
  });
34
- /**
35
- * Event handlers for ViewStack events
36
- */
32
+ /** Event handlers for ViewStack events */
37
33
  const ViewStackEventHandlers = {
38
34
  back: (stack) => bus.emit(ViewStackEventTypes.back, { stack }),
39
35
  clear: (stack) => bus.emit(ViewStackEventTypes.clear, { stack }),
@@ -41,7 +37,22 @@ const ViewStackEventHandlers = {
41
37
  reset: (stack) => bus.emit(ViewStackEventTypes.reset, { stack })
42
38
  };
43
39
  /**
44
- * Hook for emitting ViewStack events
40
+ * Hook for programmatic ViewStack control from anywhere in the application
41
+ *
42
+ * @example
43
+ * ```tsx
44
+ * function MyComponent() {
45
+ * const viewStack = useViewStackEmit();
46
+ *
47
+ * return (
48
+ * <Button onPress={() => viewStack.push('view-id')}>
49
+ * Navigate to View
50
+ * </Button>
51
+ * );
52
+ * }
53
+ * ```
54
+ *
55
+ * @returns Object with emit functions for back, clear, push, and reset actions.
45
56
  */
46
57
  function useViewStackEmit() {
47
58
  const emitBack = useEmit(ViewStackEventTypes.back);
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/view-stack/context.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 { Broadcast } from '@accelint/bus';\nimport { useEmit } from '@accelint/bus/react';\nimport type { UniqueId } from '@accelint/core';\nimport 'client-only';\nimport { createContext } from 'react';\nimport { ViewStackEventTypes } from './events';\nimport type { ViewStackContextValue, ViewStackEvent } from './types';\n\nconst bus = Broadcast.getInstance<ViewStackEvent>();\n\n/**\n * Context for ViewStack component\n */\nexport const ViewStackContext = createContext<ViewStackContextValue>({\n parent: null,\n stack: [],\n view: null,\n register: () => undefined,\n unregister: () => undefined,\n});\n\n/**\n * Event handlers for ViewStack events\n */\nexport const ViewStackEventHandlers = {\n back: (stack: UniqueId) => bus.emit(ViewStackEventTypes.back, { stack }),\n clear: (stack: UniqueId) => bus.emit(ViewStackEventTypes.clear, { stack }),\n push: (view: UniqueId) => bus.emit(ViewStackEventTypes.push, { view }),\n reset: (stack: UniqueId) => bus.emit(ViewStackEventTypes.reset, { stack }),\n} as const;\n\n/**\n * Hook for emitting ViewStack events\n */\nexport function useViewStackEmit() {\n const emitBack = useEmit<ViewStackEvent>(ViewStackEventTypes.back);\n const emitClear = useEmit<ViewStackEvent>(ViewStackEventTypes.clear);\n const emitPush = useEmit<ViewStackEvent>(ViewStackEventTypes.push);\n const emitReset = useEmit<ViewStackEvent>(ViewStackEventTypes.reset);\n\n return {\n back: (stack: UniqueId) => emitBack({ stack }),\n clear: (stack: UniqueId) => emitClear({ stack }),\n push: (view: UniqueId) => emitPush({ view }),\n reset: (stack: UniqueId) => emitReset({ stack }),\n } as const;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAqBA,MAAM,MAAM,UAAU,aAA6B;;;;AAKnD,MAAa,mBAAmB,cAAqC;CACnE,QAAQ;CACR,OAAO,EAAE;CACT,MAAM;CACN,gBAAgB;CAChB,kBAAkB;CACnB,CAAC;;;;AAKF,MAAa,yBAAyB;CACpC,OAAO,UAAoB,IAAI,KAAK,oBAAoB,MAAM,EAAE,OAAO,CAAC;CACxE,QAAQ,UAAoB,IAAI,KAAK,oBAAoB,OAAO,EAAE,OAAO,CAAC;CAC1E,OAAO,SAAmB,IAAI,KAAK,oBAAoB,MAAM,EAAE,MAAM,CAAC;CACtE,QAAQ,UAAoB,IAAI,KAAK,oBAAoB,OAAO,EAAE,OAAO,CAAC;CAC3E;;;;AAKD,SAAgB,mBAAmB;CACjC,MAAM,WAAW,QAAwB,oBAAoB,KAAK;CAClE,MAAM,YAAY,QAAwB,oBAAoB,MAAM;CACpE,MAAM,WAAW,QAAwB,oBAAoB,KAAK;CAClE,MAAM,YAAY,QAAwB,oBAAoB,MAAM;AAEpE,QAAO;EACL,OAAO,UAAoB,SAAS,EAAE,OAAO,CAAC;EAC9C,QAAQ,UAAoB,UAAU,EAAE,OAAO,CAAC;EAChD,OAAO,SAAmB,SAAS,EAAE,MAAM,CAAC;EAC5C,QAAQ,UAAoB,UAAU,EAAE,OAAO,CAAC;EACjD"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/view-stack/context.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 { Broadcast } from '@accelint/bus';\nimport { useEmit } from '@accelint/bus/react';\nimport type { UniqueId } from '@accelint/core';\nimport 'client-only';\nimport { createContext } from 'react';\nimport { ViewStackEventTypes } from './events';\nimport type { ViewStackContextValue, ViewStackEvent } from './types';\n\nconst bus = Broadcast.getInstance<ViewStackEvent>();\n\n/** Context for sharing state across ViewStack components */\nexport const ViewStackContext = createContext<ViewStackContextValue>({\n parent: null,\n stack: [],\n view: null,\n register: () => undefined,\n unregister: () => undefined,\n});\n\n/** Event handlers for ViewStack events */\nexport const ViewStackEventHandlers = {\n back: (stack: UniqueId) => bus.emit(ViewStackEventTypes.back, { stack }),\n clear: (stack: UniqueId) => bus.emit(ViewStackEventTypes.clear, { stack }),\n push: (view: UniqueId) => bus.emit(ViewStackEventTypes.push, { view }),\n reset: (stack: UniqueId) => bus.emit(ViewStackEventTypes.reset, { stack }),\n} as const;\n\n/**\n * Hook for programmatic ViewStack control from anywhere in the application\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const viewStack = useViewStackEmit();\n *\n * return (\n * <Button onPress={() => viewStack.push('view-id')}>\n * Navigate to View\n * </Button>\n * );\n * }\n * ```\n *\n * @returns Object with emit functions for back, clear, push, and reset actions.\n */\nexport function useViewStackEmit() {\n const emitBack = useEmit<ViewStackEvent>(ViewStackEventTypes.back);\n const emitClear = useEmit<ViewStackEvent>(ViewStackEventTypes.clear);\n const emitPush = useEmit<ViewStackEvent>(ViewStackEventTypes.push);\n const emitReset = useEmit<ViewStackEvent>(ViewStackEventTypes.reset);\n\n return {\n back: (stack: UniqueId) => emitBack({ stack }),\n clear: (stack: UniqueId) => emitClear({ stack }),\n push: (view: UniqueId) => emitPush({ view }),\n reset: (stack: UniqueId) => emitReset({ stack }),\n } as const;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAqBA,MAAM,MAAM,UAAU,aAA6B;;AAGnD,MAAa,mBAAmB,cAAqC;CACnE,QAAQ;CACR,OAAO,EAAE;CACT,MAAM;CACN,gBAAgB;CAChB,kBAAkB;CACnB,CAAC;;AAGF,MAAa,yBAAyB;CACpC,OAAO,UAAoB,IAAI,KAAK,oBAAoB,MAAM,EAAE,OAAO,CAAC;CACxE,QAAQ,UAAoB,IAAI,KAAK,oBAAoB,OAAO,EAAE,OAAO,CAAC;CAC1E,OAAO,SAAmB,IAAI,KAAK,oBAAoB,MAAM,EAAE,MAAM,CAAC;CACtE,QAAQ,UAAoB,IAAI,KAAK,oBAAoB,OAAO,EAAE,OAAO,CAAC;CAC3E;;;;;;;;;;;;;;;;;;;AAoBD,SAAgB,mBAAmB;CACjC,MAAM,WAAW,QAAwB,oBAAoB,KAAK;CAClE,MAAM,YAAY,QAAwB,oBAAoB,MAAM;CACpE,MAAM,WAAW,QAAwB,oBAAoB,KAAK;CAClE,MAAM,YAAY,QAAwB,oBAAoB,MAAM;AAEpE,QAAO;EACL,OAAO,UAAoB,SAAS,EAAE,OAAO,CAAC;EAC9C,QAAQ,UAAoB,UAAU,EAAE,OAAO,CAAC;EAChD,OAAO,SAAmB,SAAS,EAAE,MAAM,CAAC;EAC5C,QAAQ,UAAoB,UAAU,EAAE,OAAO,CAAC;EACjD"}
@@ -1,5 +1,7 @@
1
1
  //#region src/components/view-stack/events.d.ts
2
+ /** Namespace prefix for ViewStack events. */
2
3
  declare const ViewStackEventNamespace = "ViewStack";
4
+ /** Event type constants for ViewStack navigation actions. */
3
5
  declare const ViewStackEventTypes: {
4
6
  readonly back: "ViewStack:back";
5
7
  readonly clear: "ViewStack:clear";
@@ -12,7 +12,9 @@
12
12
 
13
13
 
14
14
  //#region src/components/view-stack/events.ts
15
+ /** Namespace prefix for ViewStack events. */
15
16
  const ViewStackEventNamespace = "ViewStack";
17
+ /** Event type constants for ViewStack navigation actions. */
16
18
  const ViewStackEventTypes = {
17
19
  back: `${ViewStackEventNamespace}:back`,
18
20
  clear: `${ViewStackEventNamespace}:clear`,
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","names":[],"sources":["../../../src/components/view-stack/events.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\nexport const ViewStackEventNamespace = 'ViewStack';\n\nexport const ViewStackEventTypes = {\n back: `${ViewStackEventNamespace}:back`,\n clear: `${ViewStackEventNamespace}:clear`,\n reset: `${ViewStackEventNamespace}:reset`,\n push: `${ViewStackEventNamespace}:push`,\n} as const;\n"],"mappings":";;;;;;;;;;;;;;AAYA,MAAa,0BAA0B;AAEvC,MAAa,sBAAsB;CACjC,MAAM,GAAG,wBAAwB;CACjC,OAAO,GAAG,wBAAwB;CAClC,OAAO,GAAG,wBAAwB;CAClC,MAAM,GAAG,wBAAwB;CAClC"}
1
+ {"version":3,"file":"events.js","names":[],"sources":["../../../src/components/view-stack/events.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\n/** Namespace prefix for ViewStack events. */\nexport const ViewStackEventNamespace = 'ViewStack';\n\n/** Event type constants for ViewStack navigation actions. */\nexport const ViewStackEventTypes = {\n back: `${ViewStackEventNamespace}:back`,\n clear: `${ViewStackEventNamespace}:clear`,\n reset: `${ViewStackEventNamespace}:reset`,\n push: `${ViewStackEventNamespace}:push`,\n} as const;\n"],"mappings":";;;;;;;;;;;;;;;AAaA,MAAa,0BAA0B;;AAGvC,MAAa,sBAAsB;CACjC,MAAM,GAAG,wBAAwB;CACjC,OAAO,GAAG,wBAAwB;CAClC,OAAO,GAAG,wBAAwB;CAClC,MAAM,GAAG,wBAAwB;CAClC"}
@@ -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_runtime186 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_runtime186.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_runtime188 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_runtime188.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
  /**