@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,7 +12,7 @@
12
12
 
13
13
  import { CoordinateFieldProps } from "./types.js";
14
14
  import "client-only";
15
- import * as react_jsx_runtime82 from "react/jsx-runtime";
15
+ import * as react_jsx_runtime37 from "react/jsx-runtime";
16
16
 
17
17
  //#region src/components/coordinate-field/index.d.ts
18
18
 
@@ -23,11 +23,29 @@ import * as react_jsx_runtime82 from "react/jsx-runtime";
23
23
  * systems (DD, DDM, DMS, MGRS, UTM). All values are normalized to Decimal Degrees internally
24
24
  * for consistency.
25
25
  *
26
+ * @param props - The coordinate field props.
27
+ * @param props.ref - Reference to the coordinate field element.
28
+ * @param props.classNames - Custom class names for sub-elements.
29
+ * @param props.description - Description text displayed below the field.
30
+ * @param props.label - Label text for the coordinate field.
31
+ * @param props.format - Coordinate format to use (dd, ddm, dms, mgrs, utm).
32
+ * @param props.size - Size variant of the field.
33
+ * @param props.variant - Layout variant (inline or stacked).
34
+ * @param props.showFormatButton - Whether to show the format conversion button.
35
+ * @param props.isDisabled - Whether the field is disabled.
36
+ * @param props.isInvalid - Whether the field is in an invalid state.
37
+ * @param props.isRequired - Whether the field is required.
38
+ * @param props.isReadOnly - Whether the field is read-only.
39
+ * @returns The coordinate field component.
40
+ *
26
41
  * @example
42
+ * ```tsx
27
43
  * // Basic coordinate field
28
44
  * <CoordinateField label="Location" />
45
+ * ```
29
46
  *
30
47
  * @example
48
+ * ```tsx
31
49
  * // Coordinate field with validation
32
50
  * <CoordinateField
33
51
  * label="Target Coordinates"
@@ -35,32 +53,40 @@ import * as react_jsx_runtime82 from "react/jsx-runtime";
35
53
  * isInvalid={hasError}
36
54
  * errorMessage="Please enter a valid coordinate"
37
55
  * />
56
+ * ```
38
57
  *
39
58
  * @example
59
+ * ```tsx
40
60
  * // Coordinate field with specific format
41
61
  * <CoordinateField
42
62
  * label="Position"
43
63
  * format="dms"
44
64
  * description="Enter coordinates in Degrees Minutes Seconds format"
45
65
  * />
66
+ * ```
46
67
  *
47
68
  * @example
69
+ * ```tsx
48
70
  * // Compact coordinate field
49
71
  * <CoordinateField
50
72
  * label="Coordinates"
51
73
  * size="small"
52
74
  * format="dd"
53
75
  * />
76
+ * ```
54
77
  *
55
78
  * @example
79
+ * ```tsx
56
80
  * // Controlled coordinate field
57
81
  * <CoordinateField
58
82
  * label="Selected Location"
59
83
  * value={coordinates}
60
84
  * onChange={setCoordinates}
61
85
  * />
86
+ * ```
62
87
  *
63
88
  * @example
89
+ * ```tsx
64
90
  * // Coordinate field with error handling
65
91
  * <CoordinateField
66
92
  * label="Target Coordinates"
@@ -73,11 +99,12 @@ import * as react_jsx_runtime82 from "react/jsx-runtime";
73
99
  * isInvalid={!!errorMessage}
74
100
  * errorMessage={errorMessage}
75
101
  * />
102
+ * ```
76
103
  */
77
104
  declare function CoordinateField({
78
105
  ref,
79
106
  ...props
80
- }: CoordinateFieldProps): react_jsx_runtime82.JSX.Element;
107
+ }: CoordinateFieldProps): react_jsx_runtime37.JSX.Element;
81
108
  //#endregion
82
109
  export { CoordinateField };
83
110
  //# sourceMappingURL=index.d.ts.map
@@ -30,7 +30,6 @@ import { DialogTrigger as DialogTrigger$1 } from "../dialog/trigger.js";
30
30
  import { Popover as Popover$1 } from "../popover/index.js";
31
31
  import { PopoverContent } from "../popover/content.js";
32
32
  import { PopoverTitle } from "../popover/title.js";
33
- import { PopoverTrigger } from "../popover/trigger.js";
34
33
  import { Radio as Radio$1 } from "../radio/index.js";
35
34
  import { RadioGroup as RadioGroup$1 } from "../radio/group.js";
36
35
  import { CoordinateSegment } from "./segment.js";
@@ -54,11 +53,29 @@ import styles from "./styles.module.css";
54
53
  * systems (DD, DDM, DMS, MGRS, UTM). All values are normalized to Decimal Degrees internally
55
54
  * for consistency.
56
55
  *
56
+ * @param props - The coordinate field props.
57
+ * @param props.ref - Reference to the coordinate field element.
58
+ * @param props.classNames - Custom class names for sub-elements.
59
+ * @param props.description - Description text displayed below the field.
60
+ * @param props.label - Label text for the coordinate field.
61
+ * @param props.format - Coordinate format to use (dd, ddm, dms, mgrs, utm).
62
+ * @param props.size - Size variant of the field.
63
+ * @param props.variant - Layout variant (inline or stacked).
64
+ * @param props.showFormatButton - Whether to show the format conversion button.
65
+ * @param props.isDisabled - Whether the field is disabled.
66
+ * @param props.isInvalid - Whether the field is in an invalid state.
67
+ * @param props.isRequired - Whether the field is required.
68
+ * @param props.isReadOnly - Whether the field is read-only.
69
+ * @returns The coordinate field component.
70
+ *
57
71
  * @example
72
+ * ```tsx
58
73
  * // Basic coordinate field
59
74
  * <CoordinateField label="Location" />
75
+ * ```
60
76
  *
61
77
  * @example
78
+ * ```tsx
62
79
  * // Coordinate field with validation
63
80
  * <CoordinateField
64
81
  * label="Target Coordinates"
@@ -66,32 +83,40 @@ import styles from "./styles.module.css";
66
83
  * isInvalid={hasError}
67
84
  * errorMessage="Please enter a valid coordinate"
68
85
  * />
86
+ * ```
69
87
  *
70
88
  * @example
89
+ * ```tsx
71
90
  * // Coordinate field with specific format
72
91
  * <CoordinateField
73
92
  * label="Position"
74
93
  * format="dms"
75
94
  * description="Enter coordinates in Degrees Minutes Seconds format"
76
95
  * />
96
+ * ```
77
97
  *
78
98
  * @example
99
+ * ```tsx
79
100
  * // Compact coordinate field
80
101
  * <CoordinateField
81
102
  * label="Coordinates"
82
103
  * size="small"
83
104
  * format="dd"
84
105
  * />
106
+ * ```
85
107
  *
86
108
  * @example
109
+ * ```tsx
87
110
  * // Controlled coordinate field
88
111
  * <CoordinateField
89
112
  * label="Selected Location"
90
113
  * value={coordinates}
91
114
  * onChange={setCoordinates}
92
115
  * />
116
+ * ```
93
117
  *
94
118
  * @example
119
+ * ```tsx
95
120
  * // Coordinate field with error handling
96
121
  * <CoordinateField
97
122
  * label="Target Coordinates"
@@ -104,6 +129,7 @@ import styles from "./styles.module.css";
104
129
  * isInvalid={!!errorMessage}
105
130
  * errorMessage={errorMessage}
106
131
  * />
132
+ * ```
107
133
  */
108
134
  function CoordinateField({ ref, ...props }) {
109
135
  [props, ref] = useContextProps(props, ref, CoordinateFieldContext);
@@ -210,7 +236,7 @@ function CoordinateField({ ref, ...props }) {
210
236
  className: clsx(styles.segmentGroup, styles[variant]),
211
237
  children: group
212
238
  }, `${format}-group-${groupIndex}`))
213
- }), showFormatButton && /* @__PURE__ */ jsxs(PopoverTrigger, {
239
+ }), showFormatButton && /* @__PURE__ */ jsxs(DialogTrigger$1, {
214
240
  onOpenChange: handlePopoverOpenChange,
215
241
  children: [/* @__PURE__ */ jsx(Button$1, {
216
242
  variant: "icon",
@@ -266,7 +292,7 @@ function CoordinateField({ ref, ...props }) {
266
292
  isOpen: paste.showDisambiguationModal,
267
293
  onOpenChange: paste.setShowDisambiguationModal,
268
294
  children: [/* @__PURE__ */ jsx(Button$1, {
269
- className: "hidden",
295
+ className: styles.hiddenTrigger,
270
296
  children: "Hidden Trigger"
271
297
  }), /* @__PURE__ */ jsxs(Dialog$1, {
272
298
  size: "small",
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Label","Button","Popover","AriaText","DialogTrigger","Dialog","RadioGroup","Radio"],"sources":["../../../src/components/coordinate-field/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\n'use client';\n\nimport { clsx } from '@accelint/design-foundation/lib/utils';\nimport Check from '@accelint/icons/check';\nimport CopyToClipboard from '@accelint/icons/copy-to-clipboard';\nimport GlobalShare from '@accelint/icons/global-share';\nimport { filterDOMProps } from '@react-aria/utils';\nimport 'client-only';\nimport {\n type CSSProperties,\n type ReactNode,\n useCallback,\n useMemo,\n useState,\n} from 'react';\nimport {\n Text as AriaText,\n composeRenderProps,\n FieldError,\n FieldErrorContext,\n GroupContext,\n LabelContext,\n Provider,\n TextContext,\n useContextProps,\n} from 'react-aria-components';\nimport { useCoordinateField } from '../../hooks/coordinate-field';\nimport { Button } from '../button';\nimport { Dialog } from '../dialog';\nimport { DialogContent } from '../dialog/content';\nimport { DialogFooter } from '../dialog/footer';\nimport { DialogTitle } from '../dialog/title';\nimport { DialogTrigger } from '../dialog/trigger';\nimport { Icon } from '../icon';\nimport { Label } from '../label';\nimport { Popover } from '../popover';\nimport { PopoverContent } from '../popover/content';\nimport { PopoverTitle } from '../popover/title';\nimport { PopoverTrigger } from '../popover/trigger';\nimport { Radio } from '../radio';\nimport { RadioGroup } from '../radio/group';\nimport { CoordinateFieldContext, CoordinateFieldStateContext } from './context';\nimport {\n type CoordinateFormatResult,\n getAllCoordinateFormats,\n} from './coordinate-utils';\nimport { CoordinateSegment } from './segment';\nimport { GROUP_SEPARATOR, getSegmentLabel } from './segment-configs';\nimport styles from './styles.module.css';\nimport {\n COORDINATE_FORMAT_LABELS,\n COORDINATE_FORMAT_NAMES,\n COORDINATE_SYSTEMS,\n type CoordinateSystem,\n} from './types';\nimport { calculateMinControlWidth } from './width-utils';\nimport type { CoordinateFieldProps } from './types';\n\n/**\n * CoordinateField - A comprehensive coordinate input component with multiple format support\n *\n * Provides accessible coordinate input functionality with support for multiple coordinate\n * systems (DD, DDM, DMS, MGRS, UTM). All values are normalized to Decimal Degrees internally\n * for consistency.\n *\n * @example\n * // Basic coordinate field\n * <CoordinateField label=\"Location\" />\n *\n * @example\n * // Coordinate field with validation\n * <CoordinateField\n * label=\"Target Coordinates\"\n * isRequired\n * isInvalid={hasError}\n * errorMessage=\"Please enter a valid coordinate\"\n * />\n *\n * @example\n * // Coordinate field with specific format\n * <CoordinateField\n * label=\"Position\"\n * format=\"dms\"\n * description=\"Enter coordinates in Degrees Minutes Seconds format\"\n * />\n *\n * @example\n * // Compact coordinate field\n * <CoordinateField\n * label=\"Coordinates\"\n * size=\"small\"\n * format=\"dd\"\n * />\n *\n * @example\n * // Controlled coordinate field\n * <CoordinateField\n * label=\"Selected Location\"\n * value={coordinates}\n * onChange={setCoordinates}\n * />\n *\n * @example\n * // Coordinate field with error handling\n * <CoordinateField\n * label=\"Target Coordinates\"\n * onError={(message, context) => {\n * // message will be \"Invalid coordinate value\" for validation errors\n * // or \"Invalid coordinate format\" for paste errors\n * setErrorMessage(message);\n * console.error(message, context);\n * }}\n * isInvalid={!!errorMessage}\n * errorMessage={errorMessage}\n * />\n */\nexport function CoordinateField({ ref, ...props }: CoordinateFieldProps) {\n [props, ref] = useContextProps(props, ref, CoordinateFieldContext);\n\n const {\n classNames,\n description: descriptionProp,\n label: labelProp,\n format = 'dd',\n size = 'medium',\n variant = 'inline',\n showFormatButton = true,\n isDisabled = false,\n isInvalid: isInvalidProp = false,\n isRequired = false,\n isReadOnly = false,\n ...rest\n } = props;\n\n const isSmall = size === 'small';\n\n const DOMProps = filterDOMProps(rest, { global: true });\n\n // When size is small and label is hidden, use aria-label instead of aria-labelledby\n // to ensure screen readers have an accessible name\n const ariaLabelForSmallSize =\n isSmall && labelProp ? labelProp : rest['aria-label'];\n\n const {\n state,\n focus,\n paste,\n copy,\n registerTimeout,\n fieldProps,\n labelProps,\n descriptionProps,\n errorProps,\n validation,\n effectiveErrorMessage,\n isInvalid,\n } = useCoordinateField(\n props,\n ariaLabelForSmallSize,\n rest['aria-describedby'],\n rest['aria-details'],\n );\n\n const componentState = {\n segmentValues: state.segmentValues,\n format,\n currentValue: state.currentValue,\n validationErrors: state.validationErrors,\n isDisabled,\n isInvalid,\n isRequired,\n size,\n variant,\n registerTimeout,\n };\n\n // Store all coordinate formats, calculated only when popover opens\n const [allCoordinateFormats, setAllCoordinateFormats] = useState<Record<\n CoordinateSystem,\n CoordinateFormatResult\n > | null>(null);\n\n const handlePopoverOpenChange = useCallback(\n (isOpen: boolean) => {\n if (isOpen) {\n setAllCoordinateFormats(getAllCoordinateFormats(state.currentValue));\n }\n },\n [state.currentValue],\n );\n\n // Calculate the minimum width needed for the control container\n // This keeps the outlined container at a fixed width while segments animate\n const minControlWidth = useMemo(\n () =>\n calculateMinControlWidth(\n state.editableSegmentConfigs,\n state.segmentConfigs,\n showFormatButton,\n ),\n [state.editableSegmentConfigs, state.segmentConfigs, showFormatButton],\n );\n\n return (\n <Provider\n values={[\n [CoordinateFieldContext, props],\n [CoordinateFieldStateContext, componentState],\n [GroupContext, fieldProps],\n [LabelContext, labelProps],\n [\n TextContext,\n {\n slots: {\n description: descriptionProps,\n errorMessage: errorProps,\n },\n },\n ],\n [FieldErrorContext, validation],\n ]}\n >\n <div\n {...DOMProps}\n {...fieldProps}\n ref={ref}\n className={clsx(\n 'group/coordinate-field',\n styles.field,\n classNames?.field,\n )}\n data-size={size}\n data-disabled={isDisabled || null}\n data-invalid={isInvalid || null}\n >\n {!isSmall && labelProp && (\n <Label\n className={classNames?.label}\n isDisabled={isDisabled}\n isRequired={isRequired}\n >\n {labelProp}\n </Label>\n )}\n\n <div\n style={\n {\n '--min-width': variant === 'stacked' ? 'unset' : minControlWidth,\n } as CSSProperties\n }\n className={clsx(styles.control, classNames?.control)}\n data-readonly={isReadOnly || null}\n >\n <div\n className={clsx(styles.input, styles[variant], classNames?.input)}\n onPasteCapture={paste.handleInputPaste}\n data-input-container\n >\n {state.segmentConfigs\n .reduce<ReactNode[][]>(\n (acc, config, configIndex) => {\n const currentGroupIndex = acc.length - 1;\n\n if (\n config.value === GROUP_SEPARATOR &&\n variant === 'stacked'\n ) {\n acc.push([]);\n\n return acc;\n }\n\n if (config.type === 'literal') {\n acc[currentGroupIndex]?.push(\n <span\n key={`${format}-literal-${configIndex}-${config.value}`}\n className={styles.literal}\n >\n {config.value}\n </span>,\n );\n\n return acc;\n }\n\n const editableIndex = state.segmentConfigs\n .slice(0, configIndex)\n .filter((c) => c.type !== 'literal').length;\n\n acc[currentGroupIndex]?.push(\n <CoordinateSegment\n key={`${format}-segment-${editableIndex}`}\n value={state.segmentValues[editableIndex] || ''}\n onChange={(newValue) =>\n state.handleSegmentChange(editableIndex, newValue)\n }\n onFocus={() =>\n focus.setFocusedSegmentIndex(editableIndex)\n }\n onBlur={() => {\n focus.setFocusedSegmentIndex(-1);\n state.flushPendingValidation();\n }}\n onKeyDown={(e) =>\n focus.handleSegmentKeyDown(editableIndex, e)\n }\n onAutoAdvance={() =>\n focus.focusNextSegment(editableIndex)\n }\n onAutoRetreat={() =>\n focus.focusPreviousSegment(editableIndex)\n }\n placeholder={config.placeholder}\n maxLength={config.maxLength}\n pad={config.pad}\n className={clsx(styles.segment, classNames?.segment)}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n allowedChars={config.allowedChars}\n segmentRef={focus.segmentRefs[editableIndex]}\n segmentIndex={editableIndex}\n totalSegments={state.editableSegmentConfigs.length}\n ariaLabel={getSegmentLabel(format, editableIndex)}\n />,\n );\n\n return acc;\n },\n [[]],\n )\n .map((group, groupIndex) => (\n <div\n className={clsx(styles.segmentGroup, styles[variant])}\n key={`${format}-group-${\n // biome-ignore lint/suspicious/noArrayIndexKey: intentional\n groupIndex\n }`}\n >\n {group}\n </div>\n ))}\n </div>\n\n {showFormatButton && (\n <PopoverTrigger onOpenChange={handlePopoverOpenChange}>\n <Button\n variant='icon'\n size={size}\n color='mono-bold'\n className={classNames?.formatButton}\n aria-label='View coordinate in all formats'\n isDisabled={!copy.isFormatButtonEnabled}\n >\n <Icon>\n <GlobalShare />\n </Icon>\n </Button>\n <Popover classNames={{ popover: styles.popover }}>\n <PopoverTitle className={styles.popoverTitle}>\n Copy Coordinates\n </PopoverTitle>\n <PopoverContent>\n {allCoordinateFormats &&\n COORDINATE_SYSTEMS.map((formatKey) => {\n const formatResult = allCoordinateFormats[formatKey];\n const isCopied = copy.copiedFormat === formatKey;\n\n return (\n <div key={formatKey} className={styles.formatRow}>\n <div className={styles.formatLabels}>\n <span className={styles.formatLabel}>\n {COORDINATE_FORMAT_LABELS[formatKey]}\n </span>\n <span\n className={styles.formatValue}\n title={formatResult.value}\n >\n {formatResult.value}\n </span>\n </div>\n <Button\n variant='icon'\n color='mono-bold'\n aria-label={`Copy ${COORDINATE_FORMAT_LABELS[formatKey]} format`}\n onClick={() => copy.handleCopyFormat(formatKey)}\n isDisabled={!formatResult.isValid}\n >\n <Icon>\n {isCopied ? <Check /> : <CopyToClipboard />}\n </Icon>\n </Button>\n </div>\n );\n })}\n </PopoverContent>\n </Popover>\n </PopoverTrigger>\n )}\n </div>\n\n {/* Description is hidden when field is invalid (unless disabled) to make room for error message */}\n {descriptionProp && !isSmall && (!isInvalid || isDisabled) && (\n <AriaText\n className={clsx(styles.description, classNames?.description)}\n slot='description'\n >\n {descriptionProp}\n </AriaText>\n )}\n\n <FieldError\n className={composeRenderProps(classNames?.error, (className) =>\n clsx(styles.error, className),\n )}\n >\n {effectiveErrorMessage}\n </FieldError>\n\n <DialogTrigger\n isOpen={paste.showDisambiguationModal}\n onOpenChange={paste.setShowDisambiguationModal}\n >\n <Button className='hidden'>Hidden Trigger</Button>\n <Dialog size='small'>\n <DialogTitle className={styles.modalTitle}>\n Select Coordinate Format\n </DialogTitle>\n <DialogContent>\n <p className={styles.modalDescription}>\n The pasted value matches multiple coordinate formats. Please\n select the correct interpretation:\n </p>\n\n <RadioGroup\n classNames={{ group: styles.formatOptions }}\n value={paste.selectedDisambiguationFormat}\n onChange={(value) =>\n paste.setSelectedDisambiguationFormat(\n value as CoordinateSystem,\n )\n }\n >\n {paste.disambiguationMatches.map((match) => (\n <Radio key={match.format} value={match.format}>\n <div className={styles.modalOptionContent}>\n <span className={styles.formatOptionLabel}>\n {COORDINATE_FORMAT_NAMES[match.format]}\n </span>\n <span className={styles.formatOptionValue}>\n {match.displayString}\n </span>\n </div>\n </Radio>\n ))}\n </RadioGroup>\n </DialogContent>\n <DialogFooter className={styles.modalActions}>\n <Button\n variant='flat'\n onPress={() => paste.setShowDisambiguationModal(false)}\n >\n Cancel\n </Button>\n <Button onPress={paste.handleDisambiguationSelect}>\n Apply Selected\n </Button>\n </DialogFooter>\n </Dialog>\n </DialogTrigger>\n </div>\n </Provider>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["Label","DialogTrigger","Button","Popover","AriaText","Dialog","RadioGroup","Radio"],"sources":["../../../src/components/coordinate-field/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\n'use client';\n\nimport { clsx } from '@accelint/design-foundation/lib/utils';\nimport Check from '@accelint/icons/check';\nimport CopyToClipboard from '@accelint/icons/copy-to-clipboard';\nimport GlobalShare from '@accelint/icons/global-share';\nimport { filterDOMProps } from '@react-aria/utils';\nimport 'client-only';\nimport {\n type CSSProperties,\n type ReactNode,\n useCallback,\n useMemo,\n useState,\n} from 'react';\nimport {\n Text as AriaText,\n composeRenderProps,\n FieldError,\n FieldErrorContext,\n GroupContext,\n LabelContext,\n Provider,\n TextContext,\n useContextProps,\n} from 'react-aria-components';\nimport { useCoordinateField } from '../../hooks/coordinate-field';\nimport { Button } from '../button';\nimport { Dialog } from '../dialog';\nimport { DialogContent } from '../dialog/content';\nimport { DialogFooter } from '../dialog/footer';\nimport { DialogTitle } from '../dialog/title';\nimport { DialogTrigger } from '../dialog/trigger';\nimport { Icon } from '../icon';\nimport { Label } from '../label';\nimport { Popover } from '../popover';\nimport { PopoverContent } from '../popover/content';\nimport { PopoverTitle } from '../popover/title';\nimport { Radio } from '../radio';\nimport { RadioGroup } from '../radio/group';\nimport { CoordinateFieldContext, CoordinateFieldStateContext } from './context';\nimport {\n type CoordinateFormatResult,\n getAllCoordinateFormats,\n} from './coordinate-utils';\nimport { CoordinateSegment } from './segment';\nimport { GROUP_SEPARATOR, getSegmentLabel } from './segment-configs';\nimport styles from './styles.module.css';\nimport {\n COORDINATE_FORMAT_LABELS,\n COORDINATE_FORMAT_NAMES,\n COORDINATE_SYSTEMS,\n type CoordinateSystem,\n} from './types';\nimport { calculateMinControlWidth } from './width-utils';\nimport type { CoordinateFieldProps } from './types';\n\n/**\n * CoordinateField - A comprehensive coordinate input component with multiple format support\n *\n * Provides accessible coordinate input functionality with support for multiple coordinate\n * systems (DD, DDM, DMS, MGRS, UTM). All values are normalized to Decimal Degrees internally\n * for consistency.\n *\n * @param props - The coordinate field props.\n * @param props.ref - Reference to the coordinate field element.\n * @param props.classNames - Custom class names for sub-elements.\n * @param props.description - Description text displayed below the field.\n * @param props.label - Label text for the coordinate field.\n * @param props.format - Coordinate format to use (dd, ddm, dms, mgrs, utm).\n * @param props.size - Size variant of the field.\n * @param props.variant - Layout variant (inline or stacked).\n * @param props.showFormatButton - Whether to show the format conversion button.\n * @param props.isDisabled - Whether the field is disabled.\n * @param props.isInvalid - Whether the field is in an invalid state.\n * @param props.isRequired - Whether the field is required.\n * @param props.isReadOnly - Whether the field is read-only.\n * @returns The coordinate field component.\n *\n * @example\n * ```tsx\n * // Basic coordinate field\n * <CoordinateField label=\"Location\" />\n * ```\n *\n * @example\n * ```tsx\n * // Coordinate field with validation\n * <CoordinateField\n * label=\"Target Coordinates\"\n * isRequired\n * isInvalid={hasError}\n * errorMessage=\"Please enter a valid coordinate\"\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Coordinate field with specific format\n * <CoordinateField\n * label=\"Position\"\n * format=\"dms\"\n * description=\"Enter coordinates in Degrees Minutes Seconds format\"\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Compact coordinate field\n * <CoordinateField\n * label=\"Coordinates\"\n * size=\"small\"\n * format=\"dd\"\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Controlled coordinate field\n * <CoordinateField\n * label=\"Selected Location\"\n * value={coordinates}\n * onChange={setCoordinates}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Coordinate field with error handling\n * <CoordinateField\n * label=\"Target Coordinates\"\n * onError={(message, context) => {\n * // message will be \"Invalid coordinate value\" for validation errors\n * // or \"Invalid coordinate format\" for paste errors\n * setErrorMessage(message);\n * console.error(message, context);\n * }}\n * isInvalid={!!errorMessage}\n * errorMessage={errorMessage}\n * />\n * ```\n */\nexport function CoordinateField({ ref, ...props }: CoordinateFieldProps) {\n [props, ref] = useContextProps(props, ref, CoordinateFieldContext);\n\n const {\n classNames,\n description: descriptionProp,\n label: labelProp,\n format = 'dd',\n size = 'medium',\n variant = 'inline',\n showFormatButton = true,\n isDisabled = false,\n isInvalid: isInvalidProp = false,\n isRequired = false,\n isReadOnly = false,\n ...rest\n } = props;\n\n const isSmall = size === 'small';\n\n const DOMProps = filterDOMProps(rest, { global: true });\n\n // When size is small and label is hidden, use aria-label instead of aria-labelledby\n // to ensure screen readers have an accessible name\n const ariaLabelForSmallSize =\n isSmall && labelProp ? labelProp : rest['aria-label'];\n\n const {\n state,\n focus,\n paste,\n copy,\n registerTimeout,\n fieldProps,\n labelProps,\n descriptionProps,\n errorProps,\n validation,\n effectiveErrorMessage,\n isInvalid,\n } = useCoordinateField(\n props,\n ariaLabelForSmallSize,\n rest['aria-describedby'],\n rest['aria-details'],\n );\n\n const componentState = {\n segmentValues: state.segmentValues,\n format,\n currentValue: state.currentValue,\n validationErrors: state.validationErrors,\n isDisabled,\n isInvalid,\n isRequired,\n size,\n variant,\n registerTimeout,\n };\n\n // Store all coordinate formats, calculated only when popover opens\n const [allCoordinateFormats, setAllCoordinateFormats] = useState<Record<\n CoordinateSystem,\n CoordinateFormatResult\n > | null>(null);\n\n const handlePopoverOpenChange = useCallback(\n (isOpen: boolean) => {\n if (isOpen) {\n setAllCoordinateFormats(getAllCoordinateFormats(state.currentValue));\n }\n },\n [state.currentValue],\n );\n\n // Calculate the minimum width needed for the control container\n // This keeps the outlined container at a fixed width while segments animate\n const minControlWidth = useMemo(\n () =>\n calculateMinControlWidth(\n state.editableSegmentConfigs,\n state.segmentConfigs,\n showFormatButton,\n ),\n [state.editableSegmentConfigs, state.segmentConfigs, showFormatButton],\n );\n\n return (\n <Provider\n values={[\n [CoordinateFieldContext, props],\n [CoordinateFieldStateContext, componentState],\n [GroupContext, fieldProps],\n [LabelContext, labelProps],\n [\n TextContext,\n {\n slots: {\n description: descriptionProps,\n errorMessage: errorProps,\n },\n },\n ],\n [FieldErrorContext, validation],\n ]}\n >\n <div\n {...DOMProps}\n {...fieldProps}\n ref={ref}\n className={clsx(\n 'group/coordinate-field',\n styles.field,\n classNames?.field,\n )}\n data-size={size}\n data-disabled={isDisabled || null}\n data-invalid={isInvalid || null}\n >\n {!isSmall && labelProp && (\n <Label\n className={classNames?.label}\n isDisabled={isDisabled}\n isRequired={isRequired}\n >\n {labelProp}\n </Label>\n )}\n\n <div\n style={\n {\n '--min-width': variant === 'stacked' ? 'unset' : minControlWidth,\n } as CSSProperties\n }\n className={clsx(styles.control, classNames?.control)}\n data-readonly={isReadOnly || null}\n >\n <div\n className={clsx(styles.input, styles[variant], classNames?.input)}\n onPasteCapture={paste.handleInputPaste}\n data-input-container\n >\n {state.segmentConfigs\n .reduce<ReactNode[][]>(\n (acc, config, configIndex) => {\n const currentGroupIndex = acc.length - 1;\n\n if (\n config.value === GROUP_SEPARATOR &&\n variant === 'stacked'\n ) {\n acc.push([]);\n\n return acc;\n }\n\n if (config.type === 'literal') {\n acc[currentGroupIndex]?.push(\n <span\n key={`${format}-literal-${configIndex}-${config.value}`}\n className={styles.literal}\n >\n {config.value}\n </span>,\n );\n\n return acc;\n }\n\n const editableIndex = state.segmentConfigs\n .slice(0, configIndex)\n .filter((c) => c.type !== 'literal').length;\n\n acc[currentGroupIndex]?.push(\n <CoordinateSegment\n key={`${format}-segment-${editableIndex}`}\n value={state.segmentValues[editableIndex] || ''}\n onChange={(newValue) =>\n state.handleSegmentChange(editableIndex, newValue)\n }\n onFocus={() =>\n focus.setFocusedSegmentIndex(editableIndex)\n }\n onBlur={() => {\n focus.setFocusedSegmentIndex(-1);\n state.flushPendingValidation();\n }}\n onKeyDown={(e) =>\n focus.handleSegmentKeyDown(editableIndex, e)\n }\n onAutoAdvance={() =>\n focus.focusNextSegment(editableIndex)\n }\n onAutoRetreat={() =>\n focus.focusPreviousSegment(editableIndex)\n }\n placeholder={config.placeholder}\n maxLength={config.maxLength}\n pad={config.pad}\n className={clsx(styles.segment, classNames?.segment)}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n allowedChars={config.allowedChars}\n segmentRef={focus.segmentRefs[editableIndex]}\n segmentIndex={editableIndex}\n totalSegments={state.editableSegmentConfigs.length}\n ariaLabel={getSegmentLabel(format, editableIndex)}\n />,\n );\n\n return acc;\n },\n [[]],\n )\n .map((group, groupIndex) => (\n <div\n className={clsx(styles.segmentGroup, styles[variant])}\n key={`${format}-group-${\n // biome-ignore lint/suspicious/noArrayIndexKey: intentional\n groupIndex\n }`}\n >\n {group}\n </div>\n ))}\n </div>\n\n {showFormatButton && (\n <DialogTrigger onOpenChange={handlePopoverOpenChange}>\n <Button\n variant='icon'\n size={size}\n color='mono-bold'\n className={classNames?.formatButton}\n aria-label='View coordinate in all formats'\n isDisabled={!copy.isFormatButtonEnabled}\n >\n <Icon>\n <GlobalShare />\n </Icon>\n </Button>\n <Popover classNames={{ popover: styles.popover }}>\n <PopoverTitle className={styles.popoverTitle}>\n Copy Coordinates\n </PopoverTitle>\n <PopoverContent>\n {allCoordinateFormats &&\n COORDINATE_SYSTEMS.map((formatKey) => {\n const formatResult = allCoordinateFormats[formatKey];\n const isCopied = copy.copiedFormat === formatKey;\n\n return (\n <div key={formatKey} className={styles.formatRow}>\n <div className={styles.formatLabels}>\n <span className={styles.formatLabel}>\n {COORDINATE_FORMAT_LABELS[formatKey]}\n </span>\n <span\n className={styles.formatValue}\n title={formatResult.value}\n >\n {formatResult.value}\n </span>\n </div>\n <Button\n variant='icon'\n color='mono-bold'\n aria-label={`Copy ${COORDINATE_FORMAT_LABELS[formatKey]} format`}\n onClick={() => copy.handleCopyFormat(formatKey)}\n isDisabled={!formatResult.isValid}\n >\n <Icon>\n {isCopied ? <Check /> : <CopyToClipboard />}\n </Icon>\n </Button>\n </div>\n );\n })}\n </PopoverContent>\n </Popover>\n </DialogTrigger>\n )}\n </div>\n\n {/* Description is hidden when field is invalid (unless disabled) to make room for error message */}\n {descriptionProp && !isSmall && (!isInvalid || isDisabled) && (\n <AriaText\n className={clsx(styles.description, classNames?.description)}\n slot='description'\n >\n {descriptionProp}\n </AriaText>\n )}\n\n <FieldError\n className={composeRenderProps(classNames?.error, (className) =>\n clsx(styles.error, className),\n )}\n >\n {effectiveErrorMessage}\n </FieldError>\n\n <DialogTrigger\n isOpen={paste.showDisambiguationModal}\n onOpenChange={paste.setShowDisambiguationModal}\n >\n <Button className={styles.hiddenTrigger}>Hidden Trigger</Button>\n <Dialog size='small'>\n <DialogTitle className={styles.modalTitle}>\n Select Coordinate Format\n </DialogTitle>\n <DialogContent>\n <p className={styles.modalDescription}>\n The pasted value matches multiple coordinate formats. Please\n select the correct interpretation:\n </p>\n\n <RadioGroup\n classNames={{ group: styles.formatOptions }}\n value={paste.selectedDisambiguationFormat}\n onChange={(value) =>\n paste.setSelectedDisambiguationFormat(\n value as CoordinateSystem,\n )\n }\n >\n {paste.disambiguationMatches.map((match) => (\n <Radio key={match.format} value={match.format}>\n <div className={styles.modalOptionContent}>\n <span className={styles.formatOptionLabel}>\n {COORDINATE_FORMAT_NAMES[match.format]}\n </span>\n <span className={styles.formatOptionValue}>\n {match.displayString}\n </span>\n </div>\n </Radio>\n ))}\n </RadioGroup>\n </DialogContent>\n <DialogFooter className={styles.modalActions}>\n <Button\n variant='flat'\n onPress={() => paste.setShowDisambiguationModal(false)}\n >\n Cancel\n </Button>\n <Button onPress={paste.handleDisambiguationSelect}>\n Apply Selected\n </Button>\n </DialogFooter>\n </Dialog>\n </DialogTrigger>\n </div>\n </Provider>\n );\n}\n"],"mappings":"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"}
@@ -12,7 +12,7 @@
12
12
 
13
13
  import { CoordinateSegmentProps } from "./types.js";
14
14
  import "client-only";
15
- import * as react_jsx_runtime69 from "react/jsx-runtime";
15
+ import * as react_jsx_runtime38 from "react/jsx-runtime";
16
16
 
17
17
  //#region src/components/coordinate-field/segment.d.ts
18
18
 
@@ -27,7 +27,29 @@ import * as react_jsx_runtime69 from "react/jsx-runtime";
27
27
  * - Directional: "[NSEW]" - for DDM/DMS direction indicators
28
28
  * - Alphanumeric: "[0-9A-Z]" - for MGRS/UTM zone identifiers
29
29
  *
30
+ * @param props - The coordinate segment props.
31
+ * @param props.value - Current value of the segment.
32
+ * @param props.onChange - Callback when the segment value changes.
33
+ * @param props.onFocus - Callback when the segment gains focus.
34
+ * @param props.onBlur - Callback when the segment loses focus.
35
+ * @param props.onKeyDown - Callback for key down events.
36
+ * @param props.placeholder - Placeholder text for the segment.
37
+ * @param props.maxLength - Maximum character length for the segment.
38
+ * @param props.className - Additional CSS class name.
39
+ * @param props.isDisabled - Whether the segment is disabled.
40
+ * @param props.isReadOnly - Whether the segment is read-only.
41
+ * @param props.allowedChars - Regex pattern for allowed characters.
42
+ * @param props.segmentRef - Ref for the segment input element.
43
+ * @param props.segmentIndex - Index of this segment within the coordinate field.
44
+ * @param props.totalSegments - Total number of segments in the coordinate field.
45
+ * @param props.onAutoAdvance - Callback to advance focus to the next segment.
46
+ * @param props.onAutoRetreat - Callback to retreat focus to the previous segment.
47
+ * @param props.pad - Padding value for width calculation.
48
+ * @param props.ariaLabel - Accessible label for the segment.
49
+ * @returns The coordinate segment input component.
50
+ *
30
51
  * @example
52
+ * ```tsx
31
53
  * // Numeric segment (latitude degrees)
32
54
  * <CoordinateSegment
33
55
  * value={latDegrees}
@@ -36,8 +58,10 @@ import * as react_jsx_runtime69 from "react/jsx-runtime";
36
58
  * maxLength={10}
37
59
  * placeholder="00.00000"
38
60
  * />
61
+ * ```
39
62
  *
40
63
  * @example
64
+ * ```tsx
41
65
  * // Directional segment (latitude direction)
42
66
  * <CoordinateSegment
43
67
  * value={latDir}
@@ -46,6 +70,7 @@ import * as react_jsx_runtime69 from "react/jsx-runtime";
46
70
  * maxLength={1}
47
71
  * placeholder="N"
48
72
  * />
73
+ * ```
49
74
  */
50
75
  declare function CoordinateSegment({
51
76
  value,
@@ -66,7 +91,7 @@ declare function CoordinateSegment({
66
91
  onAutoRetreat,
67
92
  pad,
68
93
  ariaLabel
69
- }: CoordinateSegmentProps): react_jsx_runtime69.JSX.Element;
94
+ }: CoordinateSegmentProps): react_jsx_runtime38.JSX.Element;
70
95
  //#endregion
71
96
  export { CoordinateSegment };
72
97
  //# sourceMappingURL=segment.d.ts.map
@@ -30,7 +30,29 @@ import { jsx } from "react/jsx-runtime";
30
30
  * - Directional: "[NSEW]" - for DDM/DMS direction indicators
31
31
  * - Alphanumeric: "[0-9A-Z]" - for MGRS/UTM zone identifiers
32
32
  *
33
+ * @param props - The coordinate segment props.
34
+ * @param props.value - Current value of the segment.
35
+ * @param props.onChange - Callback when the segment value changes.
36
+ * @param props.onFocus - Callback when the segment gains focus.
37
+ * @param props.onBlur - Callback when the segment loses focus.
38
+ * @param props.onKeyDown - Callback for key down events.
39
+ * @param props.placeholder - Placeholder text for the segment.
40
+ * @param props.maxLength - Maximum character length for the segment.
41
+ * @param props.className - Additional CSS class name.
42
+ * @param props.isDisabled - Whether the segment is disabled.
43
+ * @param props.isReadOnly - Whether the segment is read-only.
44
+ * @param props.allowedChars - Regex pattern for allowed characters.
45
+ * @param props.segmentRef - Ref for the segment input element.
46
+ * @param props.segmentIndex - Index of this segment within the coordinate field.
47
+ * @param props.totalSegments - Total number of segments in the coordinate field.
48
+ * @param props.onAutoAdvance - Callback to advance focus to the next segment.
49
+ * @param props.onAutoRetreat - Callback to retreat focus to the previous segment.
50
+ * @param props.pad - Padding value for width calculation.
51
+ * @param props.ariaLabel - Accessible label for the segment.
52
+ * @returns The coordinate segment input component.
53
+ *
33
54
  * @example
55
+ * ```tsx
34
56
  * // Numeric segment (latitude degrees)
35
57
  * <CoordinateSegment
36
58
  * value={latDegrees}
@@ -39,8 +61,10 @@ import { jsx } from "react/jsx-runtime";
39
61
  * maxLength={10}
40
62
  * placeholder="00.00000"
41
63
  * />
64
+ * ```
42
65
  *
43
66
  * @example
67
+ * ```tsx
44
68
  * // Directional segment (latitude direction)
45
69
  * <CoordinateSegment
46
70
  * value={latDir}
@@ -49,6 +73,7 @@ import { jsx } from "react/jsx-runtime";
49
73
  * maxLength={1}
50
74
  * placeholder="N"
51
75
  * />
76
+ * ```
52
77
  */
53
78
  function CoordinateSegment({ value, onChange, onFocus, onBlur, onKeyDown, placeholder, maxLength, className, isDisabled, isReadOnly, allowedChars, segmentRef, segmentIndex, totalSegments: _totalSegments, onAutoAdvance, onAutoRetreat, pad, ariaLabel }) {
54
79
  const contextState = useCoordinateFieldStateContext();
@@ -1 +1 @@
1
- {"version":3,"file":"segment.js","names":[],"sources":["../../../src/components/coordinate-field/segment.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\n'use client';\n\nimport 'client-only';\nimport { useMemo } from 'react';\nimport { useCoordinateFieldStateContext } from './context';\nimport type { ChangeEvent, FocusEvent, KeyboardEvent } from 'react';\nimport type { CoordinateSegmentProps } from './types';\n\n/**\n * CoordinateSegment - A controlled input component for a single coordinate segment\n *\n * This component represents one editable part of a coordinate (e.g., degrees, minutes, direction).\n * It handles character filtering, focus management, and keyboard navigation.\n *\n * Segment Types (determined by allowedChars):\n * - Numeric: \"[0-9\\\\-\\\\.]\" - for DD degrees, DDM/DMS degrees/minutes/seconds\n * - Directional: \"[NSEW]\" - for DDM/DMS direction indicators\n * - Alphanumeric: \"[0-9A-Z]\" - for MGRS/UTM zone identifiers\n *\n * @example\n * // Numeric segment (latitude degrees)\n * <CoordinateSegment\n * value={latDegrees}\n * onChange={setLatDegrees}\n * allowedChars=\"[0-9\\\\-\\\\.]\"\n * maxLength={10}\n * placeholder=\"00.00000\"\n * />\n *\n * @example\n * // Directional segment (latitude direction)\n * <CoordinateSegment\n * value={latDir}\n * onChange={setLatDir}\n * allowedChars=\"[NS]\"\n * maxLength={1}\n * placeholder=\"N\"\n * />\n */\nexport function CoordinateSegment({\n value,\n onChange,\n onFocus,\n onBlur,\n onKeyDown,\n placeholder,\n maxLength,\n className,\n isDisabled,\n isReadOnly,\n allowedChars,\n segmentRef,\n segmentIndex,\n totalSegments: _totalSegments,\n onAutoAdvance,\n onAutoRetreat,\n pad,\n ariaLabel,\n}: CoordinateSegmentProps) {\n const contextState = useCoordinateFieldStateContext();\n\n const effectiveIsDisabled = contextState.isDisabled ?? isDisabled;\n\n // Calculate dynamic width based on focus state\n const dynamicWidth = useMemo(() => {\n if (maxLength === undefined) {\n return undefined;\n }\n\n // Default padding to 0.5 if not specified\n const padding = pad ?? 0.5;\n\n // When blurred, use value length (or maxLength if empty) + padding\n const contentLength = value.length > 0 ? value.length : maxLength;\n return contentLength + padding;\n }, [maxLength, pad, value.length]);\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n\n if (allowedChars) {\n const regex = new RegExp(`^${allowedChars}*$`);\n if (!regex.test(newValue)) {\n return;\n }\n }\n\n if (maxLength && newValue.length > maxLength) {\n return;\n }\n\n onChange(newValue);\n\n if (maxLength && newValue.length === maxLength && onAutoAdvance) {\n const timeoutId = setTimeout(() => {\n onAutoAdvance();\n }, 0);\n contextState.registerTimeout(timeoutId);\n }\n };\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n const pastedText = e.clipboardData.getData('text');\n\n if (allowedChars) {\n const regex = new RegExp(`^${allowedChars}*$`);\n if (!regex.test(pastedText)) {\n e.preventDefault();\n return;\n }\n }\n\n if (maxLength && pastedText.length > maxLength) {\n e.preventDefault();\n onChange(pastedText.slice(0, maxLength));\n return;\n }\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n const input = e.currentTarget;\n const cursorAtStart = input.selectionStart === 0;\n const cursorAtEnd = input.selectionStart === value.length;\n const isEmpty = value.length === 0;\n\n if (e.key === 'Backspace' && isEmpty && onAutoRetreat) {\n e.preventDefault();\n onAutoRetreat();\n return;\n }\n\n if (e.key === 'ArrowLeft' && cursorAtStart && onAutoRetreat) {\n e.preventDefault();\n onAutoRetreat();\n return;\n }\n\n if (e.key === 'ArrowRight' && cursorAtEnd && onAutoAdvance) {\n e.preventDefault();\n onAutoAdvance();\n return;\n }\n\n onKeyDown?.(e);\n };\n\n const handleFocus = (e: FocusEvent<HTMLInputElement>) => {\n e.target.select();\n onFocus?.();\n };\n\n const handleBlur = () => {\n onBlur?.();\n };\n\n return (\n <input\n readOnly={isReadOnly}\n ref={segmentRef}\n tabIndex={isReadOnly ? -1 : 0}\n type='text'\n value={value}\n onChange={handleChange}\n onPaste={handlePaste}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n placeholder={placeholder}\n maxLength={maxLength}\n className={className}\n disabled={effectiveIsDisabled}\n style={dynamicWidth ? { width: `${dynamicWidth}ch` } : undefined}\n aria-label={\n ariaLabel ||\n `Coordinate segment ${segmentIndex !== undefined ? segmentIndex + 1 : ''}`\n }\n aria-disabled={effectiveIsDisabled}\n autoComplete='off'\n inputMode={\n allowedChars?.includes('0-9')\n ? allowedChars.includes('\\\\-\\\\.')\n ? 'decimal'\n : 'numeric'\n : 'text'\n }\n />\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDA,SAAgB,kBAAkB,EAChC,OACA,UACA,SACA,QACA,WACA,aACA,WACA,WACA,YACA,YACA,cACA,YACA,cACA,eAAe,gBACf,eACA,eACA,KACA,aACyB;CACzB,MAAM,eAAe,gCAAgC;CAErD,MAAM,sBAAsB,aAAa,cAAc;CAGvD,MAAM,eAAe,cAAc;AACjC,MAAI,cAAc,OAChB;EAIF,MAAM,UAAU,OAAO;AAIvB,UADsB,MAAM,SAAS,IAAI,MAAM,SAAS,aACjC;IACtB;EAAC;EAAW;EAAK,MAAM;EAAO,CAAC;CAElC,MAAM,gBAAgB,MAAqC;EACzD,MAAM,WAAW,EAAE,OAAO;AAE1B,MAAI,cAEF;OAAI,kBADU,IAAI,OAAO,IAAI,aAAa,IAAI,EACnC,KAAK,SAAS,CACvB;;AAIJ,MAAI,aAAa,SAAS,SAAS,UACjC;AAGF,WAAS,SAAS;AAElB,MAAI,aAAa,SAAS,WAAW,aAAa,eAAe;GAC/D,MAAM,YAAY,iBAAiB;AACjC,mBAAe;MACd,EAAE;AACL,gBAAa,gBAAgB,UAAU;;;CAI3C,MAAM,eAAe,MAA8C;EACjE,MAAM,aAAa,EAAE,cAAc,QAAQ,OAAO;AAElD,MAAI,cAEF;OAAI,kBADU,IAAI,OAAO,IAAI,aAAa,IAAI,EACnC,KAAK,WAAW,EAAE;AAC3B,MAAE,gBAAgB;AAClB;;;AAIJ,MAAI,aAAa,WAAW,SAAS,WAAW;AAC9C,KAAE,gBAAgB;AAClB,YAAS,WAAW,MAAM,GAAG,UAAU,CAAC;AACxC;;;CAIJ,MAAM,iBAAiB,MAAuC;EAC5D,MAAM,QAAQ,EAAE;EAChB,MAAM,gBAAgB,MAAM,mBAAmB;EAC/C,MAAM,cAAc,MAAM,mBAAmB,MAAM;EACnD,MAAM,UAAU,MAAM,WAAW;AAEjC,MAAI,EAAE,QAAQ,eAAe,WAAW,eAAe;AACrD,KAAE,gBAAgB;AAClB,kBAAe;AACf;;AAGF,MAAI,EAAE,QAAQ,eAAe,iBAAiB,eAAe;AAC3D,KAAE,gBAAgB;AAClB,kBAAe;AACf;;AAGF,MAAI,EAAE,QAAQ,gBAAgB,eAAe,eAAe;AAC1D,KAAE,gBAAgB;AAClB,kBAAe;AACf;;AAGF,cAAY,EAAE;;CAGhB,MAAM,eAAe,MAAoC;AACvD,IAAE,OAAO,QAAQ;AACjB,aAAW;;CAGb,MAAM,mBAAmB;AACvB,YAAU;;AAGZ,QACE,oBAAC;EACC,UAAU;EACV,KAAK;EACL,UAAU,aAAa,KAAK;EAC5B,MAAK;EACE;EACP,UAAU;EACV,SAAS;EACT,WAAW;EACX,SAAS;EACT,QAAQ;EACK;EACF;EACA;EACX,UAAU;EACV,OAAO,eAAe,EAAE,OAAO,GAAG,aAAa,KAAK,GAAG;EACvD,cACE,aACA,sBAAsB,iBAAiB,SAAY,eAAe,IAAI;EAExE,iBAAe;EACf,cAAa;EACb,WACE,cAAc,SAAS,MAAM,GACzB,aAAa,SAAS,SAAS,GAC7B,YACA,YACF;GAEN"}
1
+ {"version":3,"file":"segment.js","names":[],"sources":["../../../src/components/coordinate-field/segment.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\n'use client';\n\nimport 'client-only';\nimport { useMemo } from 'react';\nimport { useCoordinateFieldStateContext } from './context';\nimport type { ChangeEvent, FocusEvent, KeyboardEvent } from 'react';\nimport type { CoordinateSegmentProps } from './types';\n\n/**\n * CoordinateSegment - A controlled input component for a single coordinate segment\n *\n * This component represents one editable part of a coordinate (e.g., degrees, minutes, direction).\n * It handles character filtering, focus management, and keyboard navigation.\n *\n * Segment Types (determined by allowedChars):\n * - Numeric: \"[0-9\\\\-\\\\.]\" - for DD degrees, DDM/DMS degrees/minutes/seconds\n * - Directional: \"[NSEW]\" - for DDM/DMS direction indicators\n * - Alphanumeric: \"[0-9A-Z]\" - for MGRS/UTM zone identifiers\n *\n * @param props - The coordinate segment props.\n * @param props.value - Current value of the segment.\n * @param props.onChange - Callback when the segment value changes.\n * @param props.onFocus - Callback when the segment gains focus.\n * @param props.onBlur - Callback when the segment loses focus.\n * @param props.onKeyDown - Callback for key down events.\n * @param props.placeholder - Placeholder text for the segment.\n * @param props.maxLength - Maximum character length for the segment.\n * @param props.className - Additional CSS class name.\n * @param props.isDisabled - Whether the segment is disabled.\n * @param props.isReadOnly - Whether the segment is read-only.\n * @param props.allowedChars - Regex pattern for allowed characters.\n * @param props.segmentRef - Ref for the segment input element.\n * @param props.segmentIndex - Index of this segment within the coordinate field.\n * @param props.totalSegments - Total number of segments in the coordinate field.\n * @param props.onAutoAdvance - Callback to advance focus to the next segment.\n * @param props.onAutoRetreat - Callback to retreat focus to the previous segment.\n * @param props.pad - Padding value for width calculation.\n * @param props.ariaLabel - Accessible label for the segment.\n * @returns The coordinate segment input component.\n *\n * @example\n * ```tsx\n * // Numeric segment (latitude degrees)\n * <CoordinateSegment\n * value={latDegrees}\n * onChange={setLatDegrees}\n * allowedChars=\"[0-9\\\\-\\\\.]\"\n * maxLength={10}\n * placeholder=\"00.00000\"\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Directional segment (latitude direction)\n * <CoordinateSegment\n * value={latDir}\n * onChange={setLatDir}\n * allowedChars=\"[NS]\"\n * maxLength={1}\n * placeholder=\"N\"\n * />\n * ```\n */\nexport function CoordinateSegment({\n value,\n onChange,\n onFocus,\n onBlur,\n onKeyDown,\n placeholder,\n maxLength,\n className,\n isDisabled,\n isReadOnly,\n allowedChars,\n segmentRef,\n segmentIndex,\n totalSegments: _totalSegments,\n onAutoAdvance,\n onAutoRetreat,\n pad,\n ariaLabel,\n}: CoordinateSegmentProps) {\n const contextState = useCoordinateFieldStateContext();\n\n const effectiveIsDisabled = contextState.isDisabled ?? isDisabled;\n\n // Calculate dynamic width based on focus state\n const dynamicWidth = useMemo(() => {\n if (maxLength === undefined) {\n return undefined;\n }\n\n // Default padding to 0.5 if not specified\n const padding = pad ?? 0.5;\n\n // When blurred, use value length (or maxLength if empty) + padding\n const contentLength = value.length > 0 ? value.length : maxLength;\n return contentLength + padding;\n }, [maxLength, pad, value.length]);\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n\n if (allowedChars) {\n const regex = new RegExp(`^${allowedChars}*$`);\n if (!regex.test(newValue)) {\n return;\n }\n }\n\n if (maxLength && newValue.length > maxLength) {\n return;\n }\n\n onChange(newValue);\n\n if (maxLength && newValue.length === maxLength && onAutoAdvance) {\n const timeoutId = setTimeout(() => {\n onAutoAdvance();\n }, 0);\n contextState.registerTimeout(timeoutId);\n }\n };\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n const pastedText = e.clipboardData.getData('text');\n\n if (allowedChars) {\n const regex = new RegExp(`^${allowedChars}*$`);\n if (!regex.test(pastedText)) {\n e.preventDefault();\n return;\n }\n }\n\n if (maxLength && pastedText.length > maxLength) {\n e.preventDefault();\n onChange(pastedText.slice(0, maxLength));\n return;\n }\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n const input = e.currentTarget;\n const cursorAtStart = input.selectionStart === 0;\n const cursorAtEnd = input.selectionStart === value.length;\n const isEmpty = value.length === 0;\n\n if (e.key === 'Backspace' && isEmpty && onAutoRetreat) {\n e.preventDefault();\n onAutoRetreat();\n return;\n }\n\n if (e.key === 'ArrowLeft' && cursorAtStart && onAutoRetreat) {\n e.preventDefault();\n onAutoRetreat();\n return;\n }\n\n if (e.key === 'ArrowRight' && cursorAtEnd && onAutoAdvance) {\n e.preventDefault();\n onAutoAdvance();\n return;\n }\n\n onKeyDown?.(e);\n };\n\n const handleFocus = (e: FocusEvent<HTMLInputElement>) => {\n e.target.select();\n onFocus?.();\n };\n\n const handleBlur = () => {\n onBlur?.();\n };\n\n return (\n <input\n readOnly={isReadOnly}\n ref={segmentRef}\n tabIndex={isReadOnly ? -1 : 0}\n type='text'\n value={value}\n onChange={handleChange}\n onPaste={handlePaste}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n placeholder={placeholder}\n maxLength={maxLength}\n className={className}\n disabled={effectiveIsDisabled}\n style={dynamicWidth ? { width: `${dynamicWidth}ch` } : undefined}\n aria-label={\n ariaLabel ||\n `Coordinate segment ${segmentIndex !== undefined ? segmentIndex + 1 : ''}`\n }\n aria-disabled={effectiveIsDisabled}\n autoComplete='off'\n inputMode={\n allowedChars?.includes('0-9')\n ? allowedChars.includes('\\\\-\\\\.')\n ? 'decimal'\n : 'numeric'\n : 'text'\n }\n />\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4EA,SAAgB,kBAAkB,EAChC,OACA,UACA,SACA,QACA,WACA,aACA,WACA,WACA,YACA,YACA,cACA,YACA,cACA,eAAe,gBACf,eACA,eACA,KACA,aACyB;CACzB,MAAM,eAAe,gCAAgC;CAErD,MAAM,sBAAsB,aAAa,cAAc;CAGvD,MAAM,eAAe,cAAc;AACjC,MAAI,cAAc,OAChB;EAIF,MAAM,UAAU,OAAO;AAIvB,UADsB,MAAM,SAAS,IAAI,MAAM,SAAS,aACjC;IACtB;EAAC;EAAW;EAAK,MAAM;EAAO,CAAC;CAElC,MAAM,gBAAgB,MAAqC;EACzD,MAAM,WAAW,EAAE,OAAO;AAE1B,MAAI,cAEF;OAAI,kBADU,IAAI,OAAO,IAAI,aAAa,IAAI,EACnC,KAAK,SAAS,CACvB;;AAIJ,MAAI,aAAa,SAAS,SAAS,UACjC;AAGF,WAAS,SAAS;AAElB,MAAI,aAAa,SAAS,WAAW,aAAa,eAAe;GAC/D,MAAM,YAAY,iBAAiB;AACjC,mBAAe;MACd,EAAE;AACL,gBAAa,gBAAgB,UAAU;;;CAI3C,MAAM,eAAe,MAA8C;EACjE,MAAM,aAAa,EAAE,cAAc,QAAQ,OAAO;AAElD,MAAI,cAEF;OAAI,kBADU,IAAI,OAAO,IAAI,aAAa,IAAI,EACnC,KAAK,WAAW,EAAE;AAC3B,MAAE,gBAAgB;AAClB;;;AAIJ,MAAI,aAAa,WAAW,SAAS,WAAW;AAC9C,KAAE,gBAAgB;AAClB,YAAS,WAAW,MAAM,GAAG,UAAU,CAAC;AACxC;;;CAIJ,MAAM,iBAAiB,MAAuC;EAC5D,MAAM,QAAQ,EAAE;EAChB,MAAM,gBAAgB,MAAM,mBAAmB;EAC/C,MAAM,cAAc,MAAM,mBAAmB,MAAM;EACnD,MAAM,UAAU,MAAM,WAAW;AAEjC,MAAI,EAAE,QAAQ,eAAe,WAAW,eAAe;AACrD,KAAE,gBAAgB;AAClB,kBAAe;AACf;;AAGF,MAAI,EAAE,QAAQ,eAAe,iBAAiB,eAAe;AAC3D,KAAE,gBAAgB;AAClB,kBAAe;AACf;;AAGF,MAAI,EAAE,QAAQ,gBAAgB,eAAe,eAAe;AAC1D,KAAE,gBAAgB;AAClB,kBAAe;AACf;;AAGF,cAAY,EAAE;;CAGhB,MAAM,eAAe,MAAoC;AACvD,IAAE,OAAO,QAAQ;AACjB,aAAW;;CAGb,MAAM,mBAAmB;AACvB,YAAU;;AAGZ,QACE,oBAAC;EACC,UAAU;EACV,KAAK;EACL,UAAU,aAAa,KAAK;EAC5B,MAAK;EACE;EACP,UAAU;EACV,SAAS;EACT,WAAW;EACX,SAAS;EACT,QAAQ;EACK;EACF;EACA;EACX,UAAU;EACV,OAAO,eAAe,EAAE,OAAO,GAAG,aAAa,KAAK,GAAG;EACvD,cACE,aACA,sBAAsB,iBAAiB,SAAY,eAAe,IAAI;EAExE,iBAAe;EACf,cAAa;EACb,WACE,cAAc,SAAS,MAAM,GACzB,aAAa,SAAS,SAAS,GAC7B,YACA,YACF;GAEN"}
@@ -18,7 +18,7 @@
18
18
  }
19
19
 
20
20
  .control {
21
- @apply fg-primary-bold gap-m rounded-medium px-s py-xs font-display outline-interactive flex w-full items-center outline;
21
+ @apply fg-primary-bold gap-m rounded-medium pl-s pr-xs py-xs font-display outline-interactive flex w-full items-center outline;
22
22
 
23
23
  min-width: var(--min-width, unset);
24
24
 
@@ -162,4 +162,8 @@
162
162
  .popoverTitle {
163
163
  @apply fg-primary-muted text-header-s;
164
164
  }
165
+
166
+ .hiddenTrigger {
167
+ @apply hidden;
168
+ }
165
169
  }
@@ -12,7 +12,7 @@
12
12
 
13
13
  import { DateFieldProps } from "./types.js";
14
14
  import "client-only";
15
- import * as react_jsx_runtime71 from "react/jsx-runtime";
15
+ import * as react_jsx_runtime40 from "react/jsx-runtime";
16
16
  import { DateValue } from "@internationalized/date";
17
17
 
18
18
  //#region src/components/date-field/index.d.ts
@@ -24,11 +24,29 @@ import { DateValue } from "@internationalized/date";
24
24
  * month, and year. Includes calendar icon, validation states, and international
25
25
  * date format support with keyboard navigation between segments.
26
26
  *
27
+ * @param props - The date field props.
28
+ * @param props.classNames - Custom class names for sub-elements.
29
+ * @param props.description - Helper text displayed below the field.
30
+ * @param props.errorMessage - Error message displayed when invalid.
31
+ * @param props.inputProps - Additional props for the date input element.
32
+ * @param props.label - Label text displayed above the field.
33
+ * @param props.size - Size variant of the field.
34
+ * @param props.shortMonth - When true, displays 3-letter month abbreviation when not editing.
35
+ * @param props.shouldForceLeadingZeros - Whether to force leading zeros in segments.
36
+ * @param props.isDisabled - Whether the field is disabled.
37
+ * @param props.isInvalid - Whether the field is in an invalid state.
38
+ * @param props.isRequired - Whether the field is required.
39
+ * @param props.isReadOnly - Whether the field is read-only.
40
+ * @returns The date field component.
41
+ *
27
42
  * @example
43
+ * ```tsx
28
44
  * // Basic date field
29
45
  * <DateField label="Birth Date" />
46
+ * ```
30
47
  *
31
48
  * @example
49
+ * ```tsx
32
50
  * // Date field with validation
33
51
  * <DateField
34
52
  * label="Event Date"
@@ -36,30 +54,37 @@ import { DateValue } from "@internationalized/date";
36
54
  * isInvalid={hasError}
37
55
  * errorMessage="Please select a valid date"
38
56
  * />
57
+ * ```
39
58
  *
40
59
  * @example
60
+ * ```tsx
41
61
  * // Date field with custom formatting
42
62
  * <DateField
43
63
  * label="Meeting Date"
44
64
  * shortMonth={false}
45
65
  * placeholder="Select meeting date"
46
66
  * />
67
+ * ```
47
68
  *
48
69
  * @example
70
+ * ```tsx
49
71
  * // Compact date field
50
72
  * <DateField
51
73
  * label="Due Date"
52
74
  * size="small"
53
75
  * description="When is this task due?"
54
76
  * />
77
+ * ```
55
78
  *
56
79
  * @example
80
+ * ```tsx
57
81
  * // Controlled date field
58
82
  * <DateField
59
83
  * label="Selected Date"
60
84
  * value={selectedDate}
61
85
  * onChange={setSelectedDate}
62
86
  * />
87
+ * ```
63
88
  */
64
89
  declare function DateField<T extends DateValue>({
65
90
  classNames,
@@ -75,7 +100,7 @@ declare function DateField<T extends DateValue>({
75
100
  isRequired,
76
101
  isReadOnly,
77
102
  ...rest
78
- }: DateFieldProps<T>): react_jsx_runtime71.JSX.Element;
103
+ }: DateFieldProps<T>): react_jsx_runtime40.JSX.Element;
79
104
  //#endregion
80
105
  export { DateField };
81
106
  //# sourceMappingURL=index.d.ts.map
@@ -44,11 +44,29 @@ const months = [
44
44
  * month, and year. Includes calendar icon, validation states, and international
45
45
  * date format support with keyboard navigation between segments.
46
46
  *
47
+ * @param props - The date field props.
48
+ * @param props.classNames - Custom class names for sub-elements.
49
+ * @param props.description - Helper text displayed below the field.
50
+ * @param props.errorMessage - Error message displayed when invalid.
51
+ * @param props.inputProps - Additional props for the date input element.
52
+ * @param props.label - Label text displayed above the field.
53
+ * @param props.size - Size variant of the field.
54
+ * @param props.shortMonth - When true, displays 3-letter month abbreviation when not editing.
55
+ * @param props.shouldForceLeadingZeros - Whether to force leading zeros in segments.
56
+ * @param props.isDisabled - Whether the field is disabled.
57
+ * @param props.isInvalid - Whether the field is in an invalid state.
58
+ * @param props.isRequired - Whether the field is required.
59
+ * @param props.isReadOnly - Whether the field is read-only.
60
+ * @returns The date field component.
61
+ *
47
62
  * @example
63
+ * ```tsx
48
64
  * // Basic date field
49
65
  * <DateField label="Birth Date" />
66
+ * ```
50
67
  *
51
68
  * @example
69
+ * ```tsx
52
70
  * // Date field with validation
53
71
  * <DateField
54
72
  * label="Event Date"
@@ -56,30 +74,37 @@ const months = [
56
74
  * isInvalid={hasError}
57
75
  * errorMessage="Please select a valid date"
58
76
  * />
77
+ * ```
59
78
  *
60
79
  * @example
80
+ * ```tsx
61
81
  * // Date field with custom formatting
62
82
  * <DateField
63
83
  * label="Meeting Date"
64
84
  * shortMonth={false}
65
85
  * placeholder="Select meeting date"
66
86
  * />
87
+ * ```
67
88
  *
68
89
  * @example
90
+ * ```tsx
69
91
  * // Compact date field
70
92
  * <DateField
71
93
  * label="Due Date"
72
94
  * size="small"
73
95
  * description="When is this task due?"
74
96
  * />
97
+ * ```
75
98
  *
76
99
  * @example
100
+ * ```tsx
77
101
  * // Controlled date field
78
102
  * <DateField
79
103
  * label="Selected Date"
80
104
  * value={selectedDate}
81
105
  * onChange={setSelectedDate}
82
106
  * />
107
+ * ```
83
108
  */
84
109
  function DateField({ classNames, description: descriptionProp, errorMessage: errorMessageProp, inputProps, label: labelProp, size = "medium", shortMonth = true, shouldForceLeadingZeros = true, isDisabled, isInvalid: isInvalidProp, isRequired, isReadOnly = false, ...rest }) {
85
110
  const errorMessage = errorMessageProp || null;