@godxjp/ui 13.9.3 → 13.11.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 (477) hide show
  1. package/dist/app/app-provider.d.ts +30 -0
  2. package/dist/app/app-provider.js +244 -0
  3. package/dist/app/date-format-labels.d.ts +8 -0
  4. package/dist/app/date-format-labels.js +16 -0
  5. package/dist/app/date-formats.d.ts +10 -0
  6. package/dist/app/date-formats.js +27 -0
  7. package/dist/app/index.d.ts +13 -136
  8. package/dist/app/index.js +65 -38
  9. package/dist/app/locales.d.ts +12 -0
  10. package/dist/app/locales.js +26 -0
  11. package/dist/app/request-headers.d.ts +7 -0
  12. package/dist/app/request-headers.js +27 -0
  13. package/dist/app/storage.d.ts +11 -0
  14. package/dist/app/storage.js +32 -0
  15. package/dist/app/time-format-labels.d.ts +8 -0
  16. package/dist/app/time-format-labels.js +14 -0
  17. package/dist/app/time-formats.d.ts +7 -0
  18. package/dist/app/time-formats.js +14 -0
  19. package/dist/app/timezones.d.ts +31 -0
  20. package/dist/app/timezones.js +161 -0
  21. package/dist/app/types.d.ts +21 -0
  22. package/dist/app/types.js +30 -0
  23. package/dist/app/use-formatting.d.ts +19 -0
  24. package/dist/app/use-formatting.js +37 -0
  25. package/dist/components/admin/index.d.ts +26 -66
  26. package/dist/components/admin/index.js +96 -49
  27. package/dist/components/data-display/accordion.d.ts +1 -0
  28. package/dist/components/data-display/accordion.js +7 -0
  29. package/dist/components/data-display/avatar.d.ts +1 -0
  30. package/dist/components/data-display/avatar.js +6 -0
  31. package/dist/components/data-display/badge.d.ts +9 -13
  32. package/dist/components/data-display/badge.js +111 -5
  33. package/dist/components/data-display/card.d.ts +22 -26
  34. package/dist/components/data-display/card.js +153 -2
  35. package/dist/components/data-display/carousel.d.ts +11 -13
  36. package/dist/components/data-display/carousel.js +220 -4
  37. package/dist/components/data-display/collapsible.d.ts +4 -0
  38. package/dist/components/data-display/collapsible.js +9 -0
  39. package/dist/components/data-display/data-table.d.ts +53 -0
  40. package/dist/components/data-display/data-table.js +424 -0
  41. package/dist/components/data-display/descriptions.d.ts +19 -0
  42. package/dist/components/data-display/descriptions.js +25 -0
  43. package/dist/components/data-display/empty-state.d.ts +3 -0
  44. package/dist/{chunk-YD7V2HGZ.js → components/data-display/empty-state.js} +5 -5
  45. package/dist/components/data-display/hover-card.d.ts +1 -0
  46. package/dist/components/data-display/hover-card.js +6 -0
  47. package/dist/components/data-display/index.d.ts +24 -79
  48. package/dist/components/data-display/index.js +95 -176
  49. package/dist/components/data-display/popover.d.ts +9 -13
  50. package/dist/components/data-display/popover.js +61 -2
  51. package/dist/components/data-display/progress.d.ts +7 -0
  52. package/dist/components/data-display/progress.js +27 -0
  53. package/dist/components/data-display/scroll-area.d.ts +4 -7
  54. package/dist/components/data-display/scroll-area.js +38 -2
  55. package/dist/components/data-display/table.d.ts +7 -10
  56. package/dist/components/data-display/table.js +36 -3
  57. package/dist/components/data-display/timeline.d.ts +12 -0
  58. package/dist/components/data-display/timeline.js +35 -0
  59. package/dist/components/data-display/tree-list.d.ts +13 -0
  60. package/dist/components/data-display/tree-list.js +30 -0
  61. package/dist/components/data-entry/calendar.d.ts +3 -19
  62. package/dist/components/data-entry/calendar.js +96 -6
  63. package/dist/components/data-entry/cascader.d.ts +4 -35
  64. package/dist/components/data-entry/cascader.js +327 -10
  65. package/dist/components/data-entry/checkbox-group.d.ts +3 -0
  66. package/dist/{chunk-BE6GJGKJ.js → components/data-entry/checkbox-group.js} +9 -26
  67. package/dist/components/data-entry/checkbox.d.ts +7 -16
  68. package/dist/components/data-entry/checkbox.js +26 -4
  69. package/dist/components/data-entry/choice-option.d.ts +10 -0
  70. package/dist/components/data-entry/choice-option.js +7 -0
  71. package/dist/components/data-entry/color-picker.d.ts +3 -19
  72. package/dist/components/data-entry/color-picker.js +75 -6
  73. package/dist/components/data-entry/command.d.ts +7 -10
  74. package/dist/components/data-entry/command.js +51 -3
  75. package/dist/components/data-entry/date-picker.d.ts +3 -19
  76. package/dist/components/data-entry/date-picker.js +153 -9
  77. package/dist/components/data-entry/date-range-picker.d.ts +3 -19
  78. package/dist/components/data-entry/date-range-picker.js +191 -8
  79. package/dist/components/data-entry/field.d.ts +4 -0
  80. package/dist/{chunk-44YRPSZ7.js → components/data-entry/field.js} +6 -11
  81. package/dist/components/data-entry/form-field.d.ts +3 -0
  82. package/dist/{chunk-LBYSX3VM.js → components/data-entry/form-field.js} +14 -47
  83. package/dist/components/data-entry/form.d.ts +29 -0
  84. package/dist/components/data-entry/form.js +41 -0
  85. package/dist/components/data-entry/index.d.ts +61 -164
  86. package/dist/components/data-entry/index.js +117 -37
  87. package/dist/components/data-entry/input-otp.d.ts +1 -0
  88. package/dist/components/data-entry/input-otp.js +7 -0
  89. package/dist/components/data-entry/input.d.ts +3 -6
  90. package/dist/components/data-entry/input.js +98 -4
  91. package/dist/components/data-entry/label.d.ts +4 -8
  92. package/dist/components/data-entry/label.js +25 -2
  93. package/dist/components/data-entry/month-picker.d.ts +9 -0
  94. package/dist/components/data-entry/month-picker.js +188 -0
  95. package/dist/components/data-entry/month-range-picker.d.ts +11 -0
  96. package/dist/components/data-entry/month-range-picker.js +245 -0
  97. package/dist/components/data-entry/number-input.d.ts +12 -0
  98. package/dist/components/data-entry/number-input.js +219 -0
  99. package/dist/components/data-entry/password-input.d.ts +2 -0
  100. package/dist/components/data-entry/password-input.js +4 -0
  101. package/dist/components/data-entry/password-strength.d.ts +20 -0
  102. package/dist/{chunk-VSUYVT2Q.js → components/data-entry/password-strength.js} +8 -62
  103. package/dist/components/data-entry/radio.d.ts +7 -20
  104. package/dist/components/data-entry/radio.js +93 -4
  105. package/dist/components/data-entry/rating.d.ts +2 -0
  106. package/dist/components/data-entry/rating.js +4 -0
  107. package/dist/components/data-entry/search-input.d.ts +18 -0
  108. package/dist/{chunk-LVLPNKJP.js → components/data-entry/search-input.js} +11 -11
  109. package/dist/components/data-entry/search-select.d.ts +11 -0
  110. package/dist/{chunk-6S2ZU26B.js → components/data-entry/search-select.js} +14 -239
  111. package/dist/components/data-entry/select.d.ts +14 -30
  112. package/dist/components/data-entry/select.js +243 -9
  113. package/dist/components/data-entry/slider.d.ts +4 -18
  114. package/dist/components/data-entry/slider.js +52 -2
  115. package/dist/components/data-entry/switch.d.ts +4 -18
  116. package/dist/components/data-entry/switch.js +40 -2
  117. package/dist/components/data-entry/tag-input.d.ts +2 -0
  118. package/dist/components/data-entry/tag-input.js +4 -0
  119. package/dist/components/data-entry/textarea.d.ts +3 -6
  120. package/dist/components/data-entry/textarea.js +86 -5
  121. package/dist/components/data-entry/time-input.d.ts +3 -6
  122. package/dist/components/data-entry/time-input.js +137 -3
  123. package/dist/components/data-entry/time-picker.d.ts +3 -19
  124. package/dist/components/data-entry/time-picker.js +329 -7
  125. package/dist/components/data-entry/toggle-group.d.ts +1 -0
  126. package/dist/components/data-entry/toggle-group.js +5 -0
  127. package/dist/components/data-entry/toggle.d.ts +2 -0
  128. package/dist/components/data-entry/toggle.js +4 -0
  129. package/dist/components/data-entry/transfer.d.ts +3 -20
  130. package/dist/components/data-entry/transfer.js +193 -13
  131. package/dist/components/data-entry/tree-select-strategy.d.ts +5 -0
  132. package/dist/components/data-entry/tree-select-strategy.js +8 -0
  133. package/dist/components/data-entry/tree-select.d.ts +5 -25
  134. package/dist/components/data-entry/tree-select.js +299 -13
  135. package/dist/components/data-entry/tree-utils.d.ts +48 -0
  136. package/dist/{chunk-SMLKNECP.js → components/data-entry/tree-utils.js} +33 -5
  137. package/dist/components/data-entry/upload-crop-dialog.d.ts +9 -0
  138. package/dist/components/data-entry/upload-crop-dialog.js +102 -0
  139. package/dist/components/data-entry/upload-types.d.ts +39 -0
  140. package/dist/components/data-entry/upload-types.js +41 -0
  141. package/dist/components/data-entry/upload.d.ts +6 -45
  142. package/dist/components/data-entry/upload.js +417 -12
  143. package/dist/components/data-entry/use-upload-draft.d.ts +25 -0
  144. package/dist/components/data-entry/use-upload-draft.js +64 -0
  145. package/dist/components/data-grid/data-grid.d.ts +67 -0
  146. package/dist/components/data-grid/data-grid.js +402 -0
  147. package/dist/components/data-grid/index.d.ts +2 -71
  148. package/dist/components/data-grid/index.js +3 -371
  149. package/dist/components/feedback/alert.d.ts +37 -42
  150. package/dist/components/feedback/alert.js +127 -7
  151. package/dist/components/feedback/dialog.d.ts +21 -25
  152. package/dist/components/feedback/dialog.js +356 -8
  153. package/dist/components/feedback/index.d.ts +10 -28
  154. package/dist/components/feedback/index.js +105 -18
  155. package/dist/components/feedback/overlay-header-tone.d.ts +7 -0
  156. package/dist/{chunk-VU4GFGDG.js → components/feedback/overlay-header-tone.js} +4 -4
  157. package/dist/components/feedback/sheet.d.ts +18 -23
  158. package/dist/components/feedback/sheet.js +192 -3
  159. package/dist/components/feedback/skeleton.d.ts +17 -0
  160. package/dist/{chunk-2BR7KFCP.js → components/feedback/skeleton.js} +10 -6
  161. package/dist/components/feedback/sonner.d.ts +2 -5
  162. package/dist/components/feedback/sonner.js +50 -1
  163. package/dist/components/feedback/tooltip.d.ts +10 -0
  164. package/dist/{chunk-32WO3YLB.js → components/feedback/tooltip.js} +12 -9
  165. package/dist/components/feedback/use-toast.d.ts +3 -0
  166. package/dist/components/feedback/use-toast.js +5 -0
  167. package/dist/components/general/button.d.ts +12 -18
  168. package/dist/components/general/button.js +118 -4
  169. package/dist/components/general/index.d.ts +4 -37
  170. package/dist/components/general/index.js +8 -48
  171. package/dist/components/general/typography.d.ts +30 -0
  172. package/dist/components/general/typography.js +46 -0
  173. package/dist/components/layout/app-shell.d.ts +3 -0
  174. package/dist/components/layout/app-shell.js +33 -0
  175. package/dist/components/layout/aspect-ratio.d.ts +1 -0
  176. package/dist/components/layout/aspect-ratio.js +4 -0
  177. package/dist/components/layout/breadcrumb.d.ts +7 -0
  178. package/dist/components/layout/breadcrumb.js +16 -0
  179. package/dist/components/layout/flex.d.ts +3 -0
  180. package/dist/components/layout/flex.js +29 -0
  181. package/dist/components/layout/index.d.ts +19 -60
  182. package/dist/components/layout/index.js +29 -12
  183. package/dist/components/layout/page-container.d.ts +8 -0
  184. package/dist/components/layout/page-container.js +77 -0
  185. package/dist/components/layout/resizable.d.ts +8 -12
  186. package/dist/components/layout/resizable.js +44 -2
  187. package/dist/components/layout/responsive-grid.d.ts +7 -0
  188. package/dist/{chunk-C3PKEV6S.js → components/layout/responsive-grid.js} +4 -5
  189. package/dist/components/layout/separator.d.ts +1 -0
  190. package/dist/components/layout/separator.js +4 -0
  191. package/dist/components/layout/sidebar.d.ts +21 -0
  192. package/dist/components/layout/sidebar.js +254 -0
  193. package/dist/components/layout/split-pane.d.ts +7 -0
  194. package/dist/components/layout/split-pane.js +10 -0
  195. package/dist/components/layout/topbar.d.ts +3 -0
  196. package/dist/components/layout/topbar.js +133 -0
  197. package/dist/components/navigation/app-setting-picker.d.ts +9 -0
  198. package/dist/{chunk-RHPFCKB2.js → components/navigation/app-setting-picker.js} +24 -49
  199. package/dist/components/navigation/context-menu.d.ts +16 -20
  200. package/dist/components/navigation/context-menu.js +144 -2
  201. package/dist/components/navigation/dropdown-menu.d.ts +17 -21
  202. package/dist/components/navigation/dropdown-menu.js +164 -2
  203. package/dist/components/navigation/filter-bar.d.ts +4 -0
  204. package/dist/components/navigation/filter-bar.js +43 -0
  205. package/dist/components/navigation/index.d.ts +12 -36
  206. package/dist/components/navigation/index.js +140 -17
  207. package/dist/components/navigation/menubar.d.ts +18 -23
  208. package/dist/components/navigation/menubar.js +135 -2
  209. package/dist/components/navigation/navigation-menu.d.ts +10 -13
  210. package/dist/components/navigation/navigation-menu.js +90 -2
  211. package/dist/components/navigation/pagination-utils.d.ts +2 -0
  212. package/dist/components/navigation/pagination-utils.js +25 -0
  213. package/dist/components/navigation/pagination.d.ts +6 -12
  214. package/dist/components/navigation/pagination.js +222 -10
  215. package/dist/components/navigation/steps.d.ts +3 -12
  216. package/dist/components/navigation/steps.js +150 -5
  217. package/dist/components/navigation/tabs.d.ts +8 -12
  218. package/dist/components/navigation/tabs.js +109 -2
  219. package/dist/components/query/data-state.d.ts +7 -0
  220. package/dist/components/query/data-state.js +44 -0
  221. package/dist/components/query/index.d.ts +10 -43
  222. package/dist/components/query/index.js +13 -195
  223. package/dist/components/query/infinite-query-state.d.ts +13 -0
  224. package/dist/components/query/infinite-query-state.js +70 -0
  225. package/dist/components/query/mutation-feedback.d.ts +7 -0
  226. package/dist/components/query/mutation-feedback.js +23 -0
  227. package/dist/components/query/prefetch-link.d.ts +7 -0
  228. package/dist/components/query/prefetch-link.js +36 -0
  229. package/dist/components/query/query-refetch-button.d.ts +4 -0
  230. package/dist/components/query/query-refetch-button.js +40 -0
  231. package/dist/components/ui/accordion.d.ts +6 -0
  232. package/dist/components/ui/accordion.js +47 -0
  233. package/dist/components/ui/alert-dialog.d.ts +1 -0
  234. package/dist/components/ui/alert-dialog.js +1 -0
  235. package/dist/components/ui/alert.d.ts +1 -0
  236. package/dist/components/ui/alert.js +1 -0
  237. package/dist/components/ui/aspect-ratio.d.ts +3 -0
  238. package/dist/components/ui/aspect-ratio.js +18 -0
  239. package/dist/components/ui/avatar.d.ts +5 -0
  240. package/dist/{chunk-QTUJSRDH.js → components/ui/avatar.js} +12 -10
  241. package/dist/components/ui/badge.d.ts +1 -0
  242. package/dist/components/ui/badge.js +1 -0
  243. package/dist/components/ui/button.d.ts +1 -0
  244. package/dist/components/ui/button.js +1 -0
  245. package/dist/components/ui/calendar.d.ts +1 -0
  246. package/dist/components/ui/calendar.js +1 -0
  247. package/dist/components/ui/card.d.ts +1 -0
  248. package/dist/components/ui/card.js +1 -0
  249. package/dist/components/ui/carousel.d.ts +1 -0
  250. package/dist/components/ui/carousel.js +1 -0
  251. package/dist/components/ui/checkbox.d.ts +1 -0
  252. package/dist/components/ui/checkbox.js +1 -0
  253. package/dist/components/ui/color-picker.d.ts +1 -0
  254. package/dist/components/ui/color-picker.js +1 -0
  255. package/dist/components/ui/command.d.ts +1 -0
  256. package/dist/components/ui/command.js +1 -0
  257. package/dist/components/ui/context-menu.d.ts +1 -0
  258. package/dist/components/ui/context-menu.js +1 -0
  259. package/dist/components/ui/date-picker.d.ts +1 -0
  260. package/dist/components/ui/date-picker.js +1 -0
  261. package/dist/components/ui/date-range-picker.d.ts +1 -0
  262. package/dist/components/ui/date-range-picker.js +1 -0
  263. package/dist/components/ui/dialog.d.ts +1 -0
  264. package/dist/components/ui/dialog.js +1 -0
  265. package/dist/components/ui/dropdown-menu.d.ts +1 -0
  266. package/dist/components/ui/dropdown-menu.js +1 -0
  267. package/dist/components/ui/hover-card.d.ts +10 -0
  268. package/dist/components/ui/hover-card.js +45 -0
  269. package/dist/components/ui/index.d.ts +43 -80
  270. package/dist/components/ui/index.js +50 -47
  271. package/dist/components/ui/input-otp.d.ts +33 -0
  272. package/dist/components/ui/input-otp.js +55 -0
  273. package/dist/components/ui/input.d.ts +1 -0
  274. package/dist/components/ui/input.js +1 -0
  275. package/dist/components/ui/label.d.ts +1 -0
  276. package/dist/components/ui/label.js +1 -0
  277. package/dist/components/ui/menubar.d.ts +1 -0
  278. package/dist/components/ui/menubar.js +1 -0
  279. package/dist/components/ui/navigation-menu.d.ts +1 -0
  280. package/dist/components/ui/navigation-menu.js +1 -0
  281. package/dist/components/ui/pagination.d.ts +1 -0
  282. package/dist/components/ui/pagination.js +1 -0
  283. package/dist/components/ui/password-input.d.ts +4 -0
  284. package/dist/components/ui/password-input.js +38 -0
  285. package/dist/components/ui/password-strength.d.ts +1 -0
  286. package/dist/components/ui/password-strength.js +1 -0
  287. package/dist/components/ui/popover.d.ts +1 -0
  288. package/dist/components/ui/popover.js +1 -0
  289. package/dist/components/ui/radio.d.ts +1 -0
  290. package/dist/components/ui/radio.js +1 -0
  291. package/dist/components/ui/rating.d.ts +13 -0
  292. package/dist/components/ui/rating.js +90 -0
  293. package/dist/components/ui/resizable.d.ts +1 -0
  294. package/dist/components/ui/resizable.js +1 -0
  295. package/dist/components/ui/scroll-area.d.ts +1 -0
  296. package/dist/components/ui/scroll-area.js +1 -0
  297. package/dist/components/ui/select.d.ts +1 -0
  298. package/dist/components/ui/select.js +1 -0
  299. package/dist/components/ui/separator.d.ts +3 -0
  300. package/dist/components/ui/separator.js +20 -0
  301. package/dist/components/ui/sheet.d.ts +1 -0
  302. package/dist/components/ui/sheet.js +1 -0
  303. package/dist/components/ui/skeleton.d.ts +1 -0
  304. package/dist/components/ui/skeleton.js +4 -0
  305. package/dist/components/ui/slider.d.ts +1 -0
  306. package/dist/components/ui/slider.js +1 -0
  307. package/dist/components/ui/sonner.d.ts +1 -0
  308. package/dist/components/ui/sonner.js +1 -0
  309. package/dist/components/ui/switch.d.ts +1 -0
  310. package/dist/components/ui/switch.js +1 -0
  311. package/dist/components/ui/table.d.ts +1 -0
  312. package/dist/components/ui/table.js +1 -0
  313. package/dist/components/ui/tabs.d.ts +1 -0
  314. package/dist/components/ui/tabs.js +1 -0
  315. package/dist/components/ui/tag-input.d.ts +13 -0
  316. package/dist/components/ui/tag-input.js +100 -0
  317. package/dist/components/ui/textarea.d.ts +1 -0
  318. package/dist/components/ui/textarea.js +1 -0
  319. package/dist/components/ui/time-input.d.ts +1 -0
  320. package/dist/components/ui/time-input.js +1 -0
  321. package/dist/components/ui/time-picker.d.ts +1 -0
  322. package/dist/components/ui/time-picker.js +1 -0
  323. package/dist/components/ui/toggle-group.d.ts +11 -0
  324. package/dist/components/ui/toggle-group.js +32 -0
  325. package/dist/components/ui/toggle.d.ts +13 -0
  326. package/dist/components/ui/toggle.js +36 -0
  327. package/dist/components/ui/upload.d.ts +1 -0
  328. package/dist/components/ui/upload.js +1 -0
  329. package/dist/form/form-field-control.d.ts +4 -0
  330. package/dist/form/form-field-control.js +42 -0
  331. package/dist/form/form-root.d.ts +4 -0
  332. package/dist/form/form-root.js +26 -0
  333. package/dist/form/index.d.ts +7 -21
  334. package/dist/form/index.js +8 -73
  335. package/dist/form/use-zod-form.d.ts +10 -0
  336. package/dist/form/use-zod-form.js +14 -0
  337. package/dist/i18n/index.d.ts +3 -326
  338. package/dist/i18n/index.js +17 -2
  339. package/dist/i18n/messages/en.json +279 -0
  340. package/dist/i18n/messages/ja.json +276 -0
  341. package/dist/i18n/messages/vi.json +276 -0
  342. package/dist/i18n/translate.d.ts +15 -0
  343. package/dist/i18n/translate.js +82 -0
  344. package/dist/i18n/use-translation.d.ts +19 -0
  345. package/dist/i18n/use-translation.js +46 -0
  346. package/dist/index.d.ts +11 -47
  347. package/dist/index.js +16 -62
  348. package/dist/lib/control-styles.d.ts +26 -0
  349. package/dist/lib/control-styles.js +34 -0
  350. package/dist/lib/datetime/detect.d.ts +4 -0
  351. package/dist/lib/datetime/detect.js +16 -0
  352. package/dist/lib/datetime/format-date.d.ts +22 -0
  353. package/dist/lib/datetime/format-date.js +73 -0
  354. package/dist/lib/datetime/format.d.ts +23 -0
  355. package/dist/lib/datetime/format.js +94 -0
  356. package/dist/lib/datetime/index.d.ts +5 -35
  357. package/dist/lib/datetime/index.js +50 -1
  358. package/dist/lib/datetime/parse.d.ts +12 -0
  359. package/dist/lib/datetime/parse.js +56 -0
  360. package/dist/lib/datetime/sync.d.ts +19 -0
  361. package/dist/lib/datetime/sync.js +45 -0
  362. package/dist/lib/format.d.ts +21 -0
  363. package/dist/{chunk-X6AJ5HEI.js → lib/format.js} +35 -5
  364. package/dist/lib/hooks.d.ts +4 -6
  365. package/dist/lib/hooks.js +70 -1
  366. package/dist/lib/utils.d.ts +2 -5
  367. package/dist/lib/utils.js +8 -1
  368. package/dist/lib/variants.d.ts +12 -0
  369. package/dist/lib/variants.js +38 -0
  370. package/dist/{app.prop-CVY8V4ss.d.ts → props/components/app.prop.d.ts} +8 -12
  371. package/dist/props/components/app.prop.js +0 -0
  372. package/dist/{data-display.prop-CT0nVMdp.d.ts → props/components/data-display.prop.d.ts} +7 -15
  373. package/dist/props/components/data-display.prop.js +0 -0
  374. package/dist/{data-entry.prop-BSUaseKh.d.ts → props/components/data-entry.prop.d.ts} +46 -91
  375. package/dist/props/components/data-entry.prop.js +0 -0
  376. package/dist/{feedback.prop-CHlHDYZK.d.ts → props/components/feedback.prop.d.ts} +10 -16
  377. package/dist/props/components/feedback.prop.js +0 -0
  378. package/dist/{form.prop-5cyL3bvT.d.ts → props/components/form.prop.d.ts} +10 -14
  379. package/dist/props/components/form.prop.js +0 -0
  380. package/dist/{general.prop-CzlQin6v.d.ts → props/components/general.prop.d.ts} +5 -10
  381. package/dist/props/components/general.prop.js +0 -0
  382. package/dist/props/components/index.d.ts +9 -27
  383. package/dist/props/components/index.js +0 -1
  384. package/dist/{layout.prop-fCz-Vlie.d.ts → props/components/layout.prop.d.ts} +19 -26
  385. package/dist/props/components/layout.prop.js +0 -0
  386. package/dist/{navigation.prop-FCsOVGrP.d.ts → props/components/navigation.prop.d.ts} +10 -15
  387. package/dist/props/components/navigation.prop.js +0 -0
  388. package/dist/{query.prop-CT2gFtr4.d.ts → props/components/query.prop.d.ts} +12 -15
  389. package/dist/props/components/query.prop.js +0 -0
  390. package/dist/props/index.d.ts +7 -28
  391. package/dist/props/index.js +12 -3
  392. package/dist/props/registry.d.ts +5 -7
  393. package/dist/props/registry.js +998 -1
  394. package/dist/{content.prop-DrV_zDy-.d.ts → props/vocabulary/content.prop.d.ts} +12 -16
  395. package/dist/props/vocabulary/content.prop.js +0 -0
  396. package/dist/props/vocabulary/data.prop.d.ts +45 -0
  397. package/dist/props/vocabulary/data.prop.js +0 -0
  398. package/dist/props/vocabulary/index.d.ts +7 -7
  399. package/dist/props/vocabulary/index.js +0 -1
  400. package/dist/props/vocabulary/interaction.prop.d.ts +45 -0
  401. package/dist/props/vocabulary/interaction.prop.js +0 -0
  402. package/dist/props/vocabulary/layout.prop.d.ts +14 -0
  403. package/dist/props/vocabulary/layout.prop.js +0 -0
  404. package/dist/{navigation.prop-CXDaVNaR.d.ts → props/vocabulary/navigation.prop.d.ts} +3 -7
  405. package/dist/props/vocabulary/navigation.prop.js +0 -0
  406. package/dist/{shared.prop-BvMSLFJ6.d.ts → props/vocabulary/shared.prop.d.ts} +23 -27
  407. package/dist/props/vocabulary/shared.prop.js +0 -0
  408. package/dist/styles/table-layout.css +38 -0
  409. package/dist/tokens/components/table.css +2 -0
  410. package/package.json +2 -2
  411. package/dist/aspect-ratio-CZZJd9Km.d.ts +0 -9
  412. package/dist/avatar-D9MdXzfF.d.ts +0 -8
  413. package/dist/checkbox-bBfLARyF.d.ts +0 -13
  414. package/dist/chunk-2H65B4JA.js +0 -1
  415. package/dist/chunk-2RGPEFAW.js +0 -46
  416. package/dist/chunk-3JORZPS7.js +0 -232
  417. package/dist/chunk-3VFNWVR7.js +0 -153
  418. package/dist/chunk-4FGE5XVC.js +0 -996
  419. package/dist/chunk-5732TWQF.js +0 -1206
  420. package/dist/chunk-57VDEN64.js +0 -881
  421. package/dist/chunk-5LTW2LWF.js +0 -182
  422. package/dist/chunk-65RWSIZF.js +0 -327
  423. package/dist/chunk-7PWBC4BY.js +0 -25
  424. package/dist/chunk-B4K4BXEF.js +0 -18
  425. package/dist/chunk-B6S6LTWT.js +0 -464
  426. package/dist/chunk-B73NA66T.js +0 -122
  427. package/dist/chunk-B775Y6BE.js +0 -1
  428. package/dist/chunk-D4JX6O2W.js +0 -114
  429. package/dist/chunk-DV52WNXO.js +0 -8
  430. package/dist/chunk-DY5C44UP.js +0 -55
  431. package/dist/chunk-EG3RDM6F.js +0 -288
  432. package/dist/chunk-ES4Q3KGL.js +0 -1
  433. package/dist/chunk-FQGGF7GQ.js +0 -320
  434. package/dist/chunk-GJXOBDER.js +0 -1
  435. package/dist/chunk-HIEGUYPP.js +0 -95
  436. package/dist/chunk-HL3G4SVG.js +0 -131
  437. package/dist/chunk-I6G4IO7V.js +0 -485
  438. package/dist/chunk-I7NQ2LIL.js +0 -40
  439. package/dist/chunk-IJ5ALJGA.js +0 -31
  440. package/dist/chunk-INIIF7F7.js +0 -47
  441. package/dist/chunk-ION2KFXK.js +0 -75
  442. package/dist/chunk-J2DEWIYY.js +0 -37
  443. package/dist/chunk-K24AQV4R.js +0 -98
  444. package/dist/chunk-LFW37FGG.js +0 -68
  445. package/dist/chunk-LMKUKCTN.js +0 -150
  446. package/dist/chunk-NU2SOVTU.js +0 -96
  447. package/dist/chunk-NVTZ2EDW.js +0 -389
  448. package/dist/chunk-NZBAFFWP.js +0 -214
  449. package/dist/chunk-OO5DZH45.js +0 -587
  450. package/dist/chunk-Q3KUZG4P.js +0 -86
  451. package/dist/chunk-QROC2RMH.js +0 -150
  452. package/dist/chunk-QVBOICFU.js +0 -145
  453. package/dist/chunk-R2TXLS7S.js +0 -137
  454. package/dist/chunk-RZ32HY5E.js +0 -331
  455. package/dist/chunk-S2IJKT3D.js +0 -89
  456. package/dist/chunk-TBJBVEIP.js +0 -52
  457. package/dist/chunk-TO7URV7U.js +0 -51
  458. package/dist/chunk-U7N2A7A3.js +0 -9
  459. package/dist/chunk-V3N266PT.js +0 -106
  460. package/dist/chunk-W4REF4TD.js +0 -42
  461. package/dist/chunk-WGWI7EGL.js +0 -83
  462. package/dist/chunk-WY3VYUMX.js +0 -193
  463. package/dist/chunk-XBFUROAY.js +0 -117
  464. package/dist/chunk-XK3M3VRR.js +0 -32
  465. package/dist/chunk-YXVJFYQE.js +0 -191
  466. package/dist/chunk-ZT5UEUBO.js +0 -1
  467. package/dist/data-table-DRr70ULe.d.ts +0 -80
  468. package/dist/data.prop-D0UEEczj.d.ts +0 -42
  469. package/dist/filter-bar-DoDtwYrr.d.ts +0 -7
  470. package/dist/flex-1Cy46L0M.d.ts +0 -12
  471. package/dist/format-date-ByyZoqI5.d.ts +0 -51
  472. package/dist/interaction.prop-DD46aTro.d.ts +0 -47
  473. package/dist/layout.prop-CXvl2rVR.d.ts +0 -16
  474. package/dist/password-strength-DVRvXEOK.d.ts +0 -47
  475. package/dist/search-input-D4v1JGOA.d.ts +0 -27
  476. package/dist/skeleton-cj9kh5wo.d.ts +0 -20
  477. package/dist/types-mvzYGrma.d.ts +0 -37
@@ -0,0 +1,16 @@
1
+ import { isValidHhmm } from "./parse";
2
+ const DATE_ONLY_RE = /^\d{4}-\d{2}-\d{2}$/;
3
+ function detectFormatDateKind(value) {
4
+ if (value instanceof Date) return "datetime";
5
+ const trimmed = value.trim();
6
+ if (isValidHhmm(trimmed)) return "time";
7
+ if (DATE_ONLY_RE.test(trimmed)) return "date";
8
+ return "datetime";
9
+ }
10
+ function isDateOnlyString(value) {
11
+ return DATE_ONLY_RE.test(value.trim());
12
+ }
13
+ export {
14
+ detectFormatDateKind,
15
+ isDateOnlyString
16
+ };
@@ -0,0 +1,22 @@
1
+ import { type FormatDatetimeOptions } from "./format";
2
+ import { type FormatDateKind } from "./detect";
3
+ export type FormatDateOptions = FormatDatetimeOptions & {
4
+ /**
5
+ * Output preset. Default `auto` detects ISO date / HH:mm / instant.
6
+ * Locale, timezone, and 12h|24h fall back to AppProvider when omitted.
7
+ */
8
+ kind?: FormatDateKind;
9
+ /** Treat `Date` as calendar pick (react-day-picker) — not an instant. */
10
+ calendar?: boolean;
11
+ };
12
+ /**
13
+ * **Single entry point** for all date/time display in GX apps.
14
+ *
15
+ * - Defaults: locale, timezone, timeFormat from AppProvider (`syncDatetimeContext`)
16
+ * - Optional overrides: `{ timezone: "Asia/Tokyo" }` per call
17
+ * - Auto-detect: `"2026-05-01"` → date, `"14:30"` → time, ISO instant → datetime
18
+ * - International patterns: ISO 8601 date (`yyyy-MM-dd`) + ISO datetime (`yyyy-MM-dd HH:mm`)
19
+ */
20
+ export declare function formatDate(value: string | Date | null | undefined, options?: FormatDateOptions): string;
21
+ /** True when value looks like a displayable date/time (string or valid Date). */
22
+ export declare function isFormatDateValue(value: unknown): value is string | Date;
@@ -0,0 +1,73 @@
1
+ import {
2
+ formatAppDate,
3
+ formatAppDateLong,
4
+ formatAppDateTime,
5
+ formatAppRelative,
6
+ formatAppTime,
7
+ formatCalendarDate,
8
+ formatTimeOfDay
9
+ } from "./format";
10
+ import { detectFormatDateKind } from "./detect";
11
+ import { isValidHhmm, parseDateInput } from "./parse";
12
+ import { canUseLiveRelativeFormatting } from "./sync";
13
+ const EMPTY = "\u2014";
14
+ function resolveKind(value, options) {
15
+ if (options?.kind && options.kind !== "auto") return options.kind;
16
+ if (options?.calendar && value instanceof Date) return "calendar";
17
+ return detectFormatDateKind(value);
18
+ }
19
+ function formatInitialRelative(value, options) {
20
+ if (canUseLiveRelativeFormatting()) return formatAppRelative(value, options);
21
+ return formatAppDateTime(value, options);
22
+ }
23
+ function formatDate(value, options) {
24
+ if (value == null || value === "") return EMPTY;
25
+ if (typeof value === "string") {
26
+ const trimmed = value.trim();
27
+ if (!trimmed) return EMPTY;
28
+ const kind2 = resolveKind(trimmed, options);
29
+ switch (kind2) {
30
+ case "time":
31
+ return isValidHhmm(trimmed) ? formatTimeOfDay(trimmed, options) : formatAppTime(trimmed, options);
32
+ case "date":
33
+ return formatAppDate(trimmed, options);
34
+ case "long":
35
+ return formatAppDateLong(trimmed, options);
36
+ case "relative":
37
+ return formatInitialRelative(trimmed, options);
38
+ case "calendar":
39
+ case "datetime":
40
+ default:
41
+ return formatAppDateTime(trimmed, options);
42
+ }
43
+ }
44
+ if (!(value instanceof Date) || Number.isNaN(value.getTime())) return EMPTY;
45
+ const kind = resolveKind(value, options);
46
+ switch (kind) {
47
+ case "calendar":
48
+ return formatCalendarDate(value, options);
49
+ case "date":
50
+ return formatCalendarDate(value, options);
51
+ case "time":
52
+ return formatAppTime(value, options);
53
+ case "long":
54
+ return formatAppDateLong(value, options);
55
+ case "relative":
56
+ return formatInitialRelative(value, options);
57
+ case "datetime":
58
+ default:
59
+ return formatAppDateTime(value, options);
60
+ }
61
+ }
62
+ function isFormatDateValue(value) {
63
+ if (value instanceof Date) return !Number.isNaN(value.getTime());
64
+ if (typeof value !== "string") return false;
65
+ const trimmed = value.trim();
66
+ if (!trimmed) return false;
67
+ if (isValidHhmm(trimmed)) return true;
68
+ return parseDateInput(trimmed) != null;
69
+ }
70
+ export {
71
+ formatDate,
72
+ isFormatDateValue
73
+ };
@@ -0,0 +1,23 @@
1
+ import { type Locale } from "date-fns";
2
+ import { type AppTimeFormat } from "../../app/time-formats";
3
+ import type { AppLocale, AppDateFormat } from "../../app/types";
4
+ export type FormatDatetimeOptions = {
5
+ locale?: Locale | AppLocale;
6
+ timezone?: string;
7
+ timeFormat?: AppTimeFormat;
8
+ dateFormat?: AppDateFormat;
9
+ };
10
+ /** Date-only from calendar picker — uses Y/M/D in app timezone. */
11
+ export declare function formatCalendarDate(value: Date | null | undefined, options?: FormatDatetimeOptions): string;
12
+ /** Date-only from ISO instant or `yyyy-MM-dd` string — date part in app timezone. */
13
+ export declare function formatAppDate(value: string | Date | null | undefined, options?: FormatDatetimeOptions): string;
14
+ /** Date + time in app timezone. */
15
+ export declare function formatAppDateTime(value: string | Date | null | undefined, options?: FormatDatetimeOptions): string;
16
+ /** Time from ISO instant in app timezone. */
17
+ export declare function formatAppTime(value: string | Date | null | undefined, options?: FormatDatetimeOptions): string;
18
+ /** Long date (PPP) in app timezone. */
19
+ export declare function formatAppDateLong(value: string | Date | null | undefined, options?: FormatDatetimeOptions): string;
20
+ /** Relative time — instant-based; locale from context. */
21
+ export declare function formatAppRelative(value: string | Date | null | undefined, options?: Pick<FormatDatetimeOptions, "locale">): string;
22
+ /** Format canonical HH:mm (24h storage) for display per timeFormat + locale. */
23
+ export declare function formatTimeOfDay(hhmm: string | null | undefined, options?: FormatDatetimeOptions): string;
@@ -0,0 +1,94 @@
1
+ import { TZDate } from "@date-fns/tz";
2
+ import { format, formatDistanceToNow } from "date-fns";
3
+ import { getDateFnsLocale } from "../../app/locales";
4
+ import { getDatePattern, getDateTimePattern } from "../../app/date-formats";
5
+ import { getTimePattern } from "../../app/time-formats";
6
+ import { calendarDateToTZDate, hhmmToTZDate, parseDateInput } from "./parse";
7
+ import { isDateOnlyString } from "./detect";
8
+ import { getDatetimeContext } from "./sync";
9
+ function resolveLocale(locale) {
10
+ if (!locale) return getDatetimeContext().dateFnsLocale;
11
+ if (typeof locale === "string") return getDateFnsLocale(locale);
12
+ return locale;
13
+ }
14
+ function resolveOptions(options) {
15
+ const ctx = getDatetimeContext();
16
+ return {
17
+ locale: resolveLocale(options?.locale),
18
+ timezone: options?.timezone ?? ctx.timezone,
19
+ timeFormat: options?.timeFormat ?? ctx.timeFormat,
20
+ dateFormat: options?.dateFormat ?? ctx.dateFormat
21
+ };
22
+ }
23
+ function formatTZDate(zoned, pattern, options) {
24
+ return format(zoned, pattern, { locale: options.locale });
25
+ }
26
+ function instantToTZDate(value, timezone) {
27
+ return new TZDate(value, timezone);
28
+ }
29
+ const EMPTY = "\u2014";
30
+ function formatCalendarDate(value, options) {
31
+ if (!value) return EMPTY;
32
+ const resolved = resolveOptions(options);
33
+ const zoned = calendarDateToTZDate(value, resolved.timezone);
34
+ return formatTZDate(zoned, getDatePattern(resolved.dateFormat), resolved);
35
+ }
36
+ function formatAppDate(value, options) {
37
+ const resolved = resolveOptions(options);
38
+ if (typeof value === "string" && isDateOnlyString(value)) {
39
+ const [year, month, day] = value.split("-").map(Number);
40
+ const zoned2 = new TZDate(year, month - 1, day, resolved.timezone);
41
+ return formatTZDate(zoned2, getDatePattern(resolved.dateFormat), resolved);
42
+ }
43
+ const parsed = parseDateInput(value);
44
+ if (!parsed) return EMPTY;
45
+ const zoned = instantToTZDate(parsed, resolved.timezone);
46
+ return formatTZDate(zoned, getDatePattern(resolved.dateFormat), resolved);
47
+ }
48
+ function formatAppDateTime(value, options) {
49
+ const parsed = parseDateInput(value);
50
+ if (!parsed) return EMPTY;
51
+ const resolved = resolveOptions(options);
52
+ const zoned = instantToTZDate(parsed, resolved.timezone);
53
+ return formatTZDate(
54
+ zoned,
55
+ getDateTimePattern(resolved.timeFormat, resolved.dateFormat),
56
+ resolved
57
+ );
58
+ }
59
+ function formatAppTime(value, options) {
60
+ const parsed = parseDateInput(value);
61
+ if (!parsed) return EMPTY;
62
+ const resolved = resolveOptions(options);
63
+ const zoned = instantToTZDate(parsed, resolved.timezone);
64
+ return formatTZDate(zoned, getTimePattern(resolved.timeFormat), resolved);
65
+ }
66
+ function formatAppDateLong(value, options) {
67
+ const parsed = parseDateInput(value);
68
+ if (!parsed) return EMPTY;
69
+ const resolved = resolveOptions(options);
70
+ const zoned = instantToTZDate(parsed, resolved.timezone);
71
+ return formatTZDate(zoned, "PPP", resolved);
72
+ }
73
+ function formatAppRelative(value, options) {
74
+ const parsed = parseDateInput(value);
75
+ if (!parsed) return EMPTY;
76
+ const locale = resolveLocale(options?.locale);
77
+ return formatDistanceToNow(parsed, { addSuffix: true, locale });
78
+ }
79
+ function formatTimeOfDay(hhmm, options) {
80
+ if (!hhmm) return EMPTY;
81
+ const resolved = resolveOptions(options);
82
+ const zoned = hhmmToTZDate(hhmm, resolved.timezone);
83
+ if (!zoned) return hhmm;
84
+ return formatTZDate(zoned, getTimePattern(resolved.timeFormat), resolved);
85
+ }
86
+ export {
87
+ formatAppDate,
88
+ formatAppDateLong,
89
+ formatAppDateTime,
90
+ formatAppRelative,
91
+ formatAppTime,
92
+ formatCalendarDate,
93
+ formatTimeOfDay
94
+ };
@@ -1,35 +1,5 @@
1
- import { Locale } from 'date-fns';
2
- import { h as AppLocale, j as AppTimeFormat, g as AppDateFormat } from '../../types-mvzYGrma.js';
3
- import { TZDate } from '@date-fns/tz';
4
- export { F as FormatDateKind, a as FormatDateOptions, b as FormatDatetimeOptions, d as detectFormatDateKind, f as formatAppDate, c as formatAppDateLong, e as formatAppDateTime, g as formatAppRelative, h as formatAppTime, i as formatCalendarDate, j as formatDate, k as formatTimeOfDay, l as isDateOnlyString, m as isFormatDateValue } from '../../format-date-ByyZoqI5.js';
5
-
6
- type DatetimeContext = {
7
- locale: AppLocale;
8
- dateFnsLocale: Locale;
9
- timezone: string;
10
- timeFormat: AppTimeFormat;
11
- dateFormat: AppDateFormat;
12
- };
13
- /** Sync module-level datetime prefs from AppProvider (mirrors syncI18nLocale). */
14
- declare function syncDatetimeContext(partial: Pick<DatetimeContext, "locale" | "timezone" | "timeFormat" | "dateFormat"> & {
15
- dateFnsLocale?: Locale;
16
- }): void;
17
- declare function getDatetimeContext(): Readonly<DatetimeContext>;
18
- declare function enableLiveRelativeFormatting(): void;
19
- declare function disableLiveRelativeFormatting(): void;
20
- /** Vitest only — reset to defaults between cases. */
21
- declare function resetDatetimeContextForTests(): void;
22
-
23
- /** Format a calendar Date to an ISO-8601 date-only string (`yyyy-MM-dd`) from its local Y/M/D. */
24
- declare function toIsoDate(value: Date | null | undefined): string;
25
- /** Parse ISO string or Date — returns null for invalid values. */
26
- declare function parseDateInput(value: string | Date | null | undefined): Date | null;
27
- /** Calendar date from react-day-picker — interpret Y/M/D in app timezone, not browser local. */
28
- declare function calendarDateToTZDate(date: Date, timezone: string): TZDate;
29
- declare function isValidHhmm(value: string): boolean;
30
- /** Normalize loose input ("9:30") to canonical 24h "09:30". */
31
- declare function normalizeHhmm(value: string): string | null;
32
- /** Map canonical HH:mm to a TZDate on today's calendar date in the given timezone. */
33
- declare function hhmmToTZDate(hhmm: string, timezone: string): TZDate | null;
34
-
35
- export { type DatetimeContext, calendarDateToTZDate, disableLiveRelativeFormatting, enableLiveRelativeFormatting, getDatetimeContext, hhmmToTZDate, isValidHhmm, normalizeHhmm, parseDateInput, resetDatetimeContextForTests, syncDatetimeContext, toIsoDate };
1
+ export { syncDatetimeContext, getDatetimeContext, enableLiveRelativeFormatting, disableLiveRelativeFormatting, resetDatetimeContextForTests, type DatetimeContext, } from "./sync";
2
+ export { parseDateInput, toIsoDate, calendarDateToTZDate, isValidHhmm, normalizeHhmm, hhmmToTZDate, } from "./parse";
3
+ export { formatCalendarDate, formatAppDate, formatAppDateTime, formatAppTime, formatAppDateLong, formatAppRelative, formatTimeOfDay, type FormatDatetimeOptions, } from "./format";
4
+ export { formatDate, isFormatDateValue, type FormatDateOptions } from "./format-date";
5
+ export { detectFormatDateKind, isDateOnlyString, type FormatDateKind } from "./detect";
@@ -1 +1,50 @@
1
- export { calendarDateToTZDate, detectFormatDateKind, disableLiveRelativeFormatting, enableLiveRelativeFormatting, formatAppDate, formatAppDateLong, formatAppDateTime, formatAppRelative, formatAppTime, formatCalendarDate, formatDate, formatTimeOfDay, getDatetimeContext, hhmmToTZDate, isDateOnlyString, isFormatDateValue, isValidHhmm, normalizeHhmm, parseDateInput, resetDatetimeContextForTests, syncDatetimeContext, toIsoDate } from '../../chunk-5732TWQF.js';
1
+ import {
2
+ syncDatetimeContext,
3
+ getDatetimeContext,
4
+ enableLiveRelativeFormatting,
5
+ disableLiveRelativeFormatting,
6
+ resetDatetimeContextForTests
7
+ } from "./sync";
8
+ import {
9
+ parseDateInput,
10
+ toIsoDate,
11
+ calendarDateToTZDate,
12
+ isValidHhmm,
13
+ normalizeHhmm,
14
+ hhmmToTZDate
15
+ } from "./parse";
16
+ import {
17
+ formatCalendarDate,
18
+ formatAppDate,
19
+ formatAppDateTime,
20
+ formatAppTime,
21
+ formatAppDateLong,
22
+ formatAppRelative,
23
+ formatTimeOfDay
24
+ } from "./format";
25
+ import { formatDate, isFormatDateValue } from "./format-date";
26
+ import { detectFormatDateKind, isDateOnlyString } from "./detect";
27
+ export {
28
+ calendarDateToTZDate,
29
+ detectFormatDateKind,
30
+ disableLiveRelativeFormatting,
31
+ enableLiveRelativeFormatting,
32
+ formatAppDate,
33
+ formatAppDateLong,
34
+ formatAppDateTime,
35
+ formatAppRelative,
36
+ formatAppTime,
37
+ formatCalendarDate,
38
+ formatDate,
39
+ formatTimeOfDay,
40
+ getDatetimeContext,
41
+ hhmmToTZDate,
42
+ isDateOnlyString,
43
+ isFormatDateValue,
44
+ isValidHhmm,
45
+ normalizeHhmm,
46
+ parseDateInput,
47
+ resetDatetimeContextForTests,
48
+ syncDatetimeContext,
49
+ toIsoDate
50
+ };
@@ -0,0 +1,12 @@
1
+ import { TZDate } from "@date-fns/tz";
2
+ /** Format a calendar Date to an ISO-8601 date-only string (`yyyy-MM-dd`) from its local Y/M/D. */
3
+ export declare function toIsoDate(value: Date | null | undefined): string;
4
+ /** Parse ISO string or Date — returns null for invalid values. */
5
+ export declare function parseDateInput(value: string | Date | null | undefined): Date | null;
6
+ /** Calendar date from react-day-picker — interpret Y/M/D in app timezone, not browser local. */
7
+ export declare function calendarDateToTZDate(date: Date, timezone: string): TZDate;
8
+ export declare function isValidHhmm(value: string): boolean;
9
+ /** Normalize loose input ("9:30") to canonical 24h "09:30". */
10
+ export declare function normalizeHhmm(value: string): string | null;
11
+ /** Map canonical HH:mm to a TZDate on today's calendar date in the given timezone. */
12
+ export declare function hhmmToTZDate(hhmm: string, timezone: string): TZDate | null;
@@ -0,0 +1,56 @@
1
+ import { TZDate } from "@date-fns/tz";
2
+ import { parseISO } from "date-fns";
3
+ import { isDateOnlyString } from "./detect";
4
+ function toIsoDate(value) {
5
+ if (value == null || Number.isNaN(value.getTime())) return "";
6
+ const year = String(value.getFullYear()).padStart(4, "0");
7
+ const month = String(value.getMonth() + 1).padStart(2, "0");
8
+ const day = String(value.getDate()).padStart(2, "0");
9
+ return `${year}-${month}-${day}`;
10
+ }
11
+ function parseDateInput(value) {
12
+ if (value == null) return null;
13
+ if (value instanceof Date) return Number.isNaN(value.getTime()) ? null : value;
14
+ const trimmed = value.trim();
15
+ if (isDateOnlyString(trimmed)) {
16
+ const [year, month, day] = trimmed.split("-").map(Number);
17
+ return new Date(year, month - 1, day);
18
+ }
19
+ const parsed = parseISO(trimmed);
20
+ return Number.isNaN(parsed.getTime()) ? null : parsed;
21
+ }
22
+ function calendarDateToTZDate(date, timezone) {
23
+ return new TZDate(date.getFullYear(), date.getMonth(), date.getDate(), timezone);
24
+ }
25
+ const HHMM_RE = /^([01]?\d|2[0-3]):([0-5]\d)$/;
26
+ function isValidHhmm(value) {
27
+ return HHMM_RE.test(value.trim());
28
+ }
29
+ function normalizeHhmm(value) {
30
+ const trimmed = value.trim();
31
+ if (isValidHhmm(trimmed)) {
32
+ const [h, m] = trimmed.split(":");
33
+ return `${h.padStart(2, "0")}:${m}`;
34
+ }
35
+ const loose = /^(\d{1,2}):(\d{2})$/.exec(trimmed);
36
+ if (!loose) return null;
37
+ const hours = Number(loose[1]);
38
+ const minutes = Number(loose[2]);
39
+ if (hours > 23 || minutes > 59) return null;
40
+ return `${String(hours).padStart(2, "0")}:${String(minutes).padStart(2, "0")}`;
41
+ }
42
+ function hhmmToTZDate(hhmm, timezone) {
43
+ const normalized = normalizeHhmm(hhmm);
44
+ if (!normalized) return null;
45
+ const [h, m] = normalized.split(":").map(Number);
46
+ const today = TZDate.tz(timezone);
47
+ return new TZDate(today.getFullYear(), today.getMonth(), today.getDate(), h, m, 0, 0, timezone);
48
+ }
49
+ export {
50
+ calendarDateToTZDate,
51
+ hhmmToTZDate,
52
+ isValidHhmm,
53
+ normalizeHhmm,
54
+ parseDateInput,
55
+ toIsoDate
56
+ };
@@ -0,0 +1,19 @@
1
+ import type { Locale } from "date-fns";
2
+ import type { AppLocale, AppTimeFormat, AppDateFormat } from "../../app/types";
3
+ export type DatetimeContext = {
4
+ locale: AppLocale;
5
+ dateFnsLocale: Locale;
6
+ timezone: string;
7
+ timeFormat: AppTimeFormat;
8
+ dateFormat: AppDateFormat;
9
+ };
10
+ /** Sync module-level datetime prefs from AppProvider (mirrors syncI18nLocale). */
11
+ export declare function syncDatetimeContext(partial: Pick<DatetimeContext, "locale" | "timezone" | "timeFormat" | "dateFormat"> & {
12
+ dateFnsLocale?: Locale;
13
+ }): void;
14
+ export declare function getDatetimeContext(): Readonly<DatetimeContext>;
15
+ export declare function enableLiveRelativeFormatting(): void;
16
+ export declare function disableLiveRelativeFormatting(): void;
17
+ export declare function canUseLiveRelativeFormatting(): boolean;
18
+ /** Vitest only — reset to defaults between cases. */
19
+ export declare function resetDatetimeContextForTests(): void;
@@ -0,0 +1,45 @@
1
+ import { getDateFnsLocale } from "../../app/locales";
2
+ import { resolveDefaultDateFormat } from "../../app/date-format-labels";
3
+ const DEFAULT_LOCALE = "vi";
4
+ const defaultContext = () => ({
5
+ locale: DEFAULT_LOCALE,
6
+ dateFnsLocale: getDateFnsLocale(DEFAULT_LOCALE),
7
+ timezone: "Asia/Ho_Chi_Minh",
8
+ timeFormat: "24h",
9
+ dateFormat: resolveDefaultDateFormat(DEFAULT_LOCALE)
10
+ });
11
+ let syncedContext = defaultContext();
12
+ let liveRelativeFormattingEnabled = true;
13
+ function syncDatetimeContext(partial) {
14
+ syncedContext = {
15
+ locale: partial.locale,
16
+ timezone: partial.timezone,
17
+ timeFormat: partial.timeFormat,
18
+ dateFormat: partial.dateFormat,
19
+ dateFnsLocale: partial.dateFnsLocale ?? getDateFnsLocale(partial.locale)
20
+ };
21
+ }
22
+ function getDatetimeContext() {
23
+ return syncedContext;
24
+ }
25
+ function enableLiveRelativeFormatting() {
26
+ liveRelativeFormattingEnabled = true;
27
+ }
28
+ function disableLiveRelativeFormatting() {
29
+ liveRelativeFormattingEnabled = false;
30
+ }
31
+ function canUseLiveRelativeFormatting() {
32
+ return liveRelativeFormattingEnabled;
33
+ }
34
+ function resetDatetimeContextForTests() {
35
+ syncedContext = defaultContext();
36
+ liveRelativeFormattingEnabled = true;
37
+ }
38
+ export {
39
+ canUseLiveRelativeFormatting,
40
+ disableLiveRelativeFormatting,
41
+ enableLiveRelativeFormatting,
42
+ getDatetimeContext,
43
+ resetDatetimeContextForTests,
44
+ syncDatetimeContext
45
+ };
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Bytes → size with conventional binary units (B/KB/MB/GB) and a locale-correct number,
3
+ * e.g. "2.0 KB" (en) / "2,0 KB" (vi). The numeric part is formatted via `Intl.NumberFormat`
4
+ * (locale decimal/grouping separators — no hardcoded "."); an optional `locale` overrides the
5
+ * module-synced active locale.
6
+ */
7
+ export declare function formatBytes(n: number | null | undefined, locale?: string): string;
8
+ /**
9
+ * ISO 4217 minor units → locale-formatted currency, e.g. (1995, "USD") → "$19.95" (en) /
10
+ * "19,95 $" (vi). The active locale (or an explicit `locale`) drives grouping/symbol placement;
11
+ * the currency's minor-unit scale comes from CLDR via `resolvedOptions().maximumFractionDigits`
12
+ * — no hand-maintained zero-decimal list.
13
+ */
14
+ export declare function formatCurrency(amountMinor: number | null | undefined, currency: string, locale?: string): string;
15
+ /** UUIDv7 / UUIDv4 → first 8 chars + ellipsis. Pair with a Tooltip showing full. */
16
+ export declare function shortId(id: string | null | undefined): string;
17
+ /** Translate any backend error into something a user can act on. Falls back
18
+ * to a generic message for non-Error objects (avoids dumping stack traces). */
19
+ export declare function humanError(err: unknown): string;
20
+ export { formatDate, isFormatDateValue, formatCalendarDate, formatAppDate, formatAppDateTime, formatAppTime, formatAppDateLong, formatAppRelative, formatTimeOfDay, parseDateInput, normalizeHhmm, isValidHhmm, detectFormatDateKind, } from "./datetime";
21
+ export type { FormatDateOptions, FormatDatetimeOptions, FormatDateKind } from "./datetime";
@@ -1,6 +1,4 @@
1
- import { getSyncedLocale, translateCurrent } from './chunk-5732TWQF.js';
2
-
3
- // src/lib/format.ts
1
+ import { getSyncedLocale, translateCurrent } from "../i18n/translate";
4
2
  function formatBytes(n, locale = getSyncedLocale()) {
5
3
  if (n == null) return "\u2014";
6
4
  const num = (digits, scaled) => new Intl.NumberFormat(locale, {
@@ -33,5 +31,37 @@ function humanError(err) {
33
31
  }
34
32
  return translateCurrent("feedback.genericError");
35
33
  }
36
-
37
- export { formatBytes, formatCurrency, humanError, shortId };
34
+ import {
35
+ formatDate,
36
+ isFormatDateValue,
37
+ formatCalendarDate,
38
+ formatAppDate,
39
+ formatAppDateTime,
40
+ formatAppTime,
41
+ formatAppDateLong,
42
+ formatAppRelative,
43
+ formatTimeOfDay,
44
+ parseDateInput,
45
+ normalizeHhmm,
46
+ isValidHhmm,
47
+ detectFormatDateKind
48
+ } from "./datetime";
49
+ export {
50
+ detectFormatDateKind,
51
+ formatAppDate,
52
+ formatAppDateLong,
53
+ formatAppDateTime,
54
+ formatAppRelative,
55
+ formatAppTime,
56
+ formatBytes,
57
+ formatCalendarDate,
58
+ formatCurrency,
59
+ formatDate,
60
+ formatTimeOfDay,
61
+ humanError,
62
+ isFormatDateValue,
63
+ isValidHhmm,
64
+ normalizeHhmm,
65
+ parseDateInput,
66
+ shortId
67
+ };
@@ -5,13 +5,11 @@
5
5
  * setState runs only inside setTimeout (async) — compliant with
6
6
  * react-hooks/set-state-in-effect.
7
7
  */
8
- declare function useDebouncedValue<T>(value: T, delay?: number): T;
8
+ export declare function useDebouncedValue<T>(value: T, delay?: number): T;
9
9
  /**
10
10
  * Returns true while `ms` haven't elapsed since `signal` last flipped truthy.
11
11
  * setState is scheduled asynchronously (setTimeout 0 / ms) — Rules of React safe.
12
12
  */
13
- declare function useTimeoutFlag(signal: unknown, ms?: number): boolean;
14
- declare function useMediaQuery(query: string): boolean;
15
- declare function useIsMobile(): boolean;
16
-
17
- export { useDebouncedValue, useIsMobile, useMediaQuery, useTimeoutFlag };
13
+ export declare function useTimeoutFlag(signal: unknown, ms?: number): boolean;
14
+ export declare function useMediaQuery(query: string): boolean;
15
+ export declare function useIsMobile(): boolean;
package/dist/lib/hooks.js CHANGED
@@ -1 +1,70 @@
1
- export { useDebouncedValue, useIsMobile, useMediaQuery, useTimeoutFlag } from '../chunk-LFW37FGG.js';
1
+ import { useEffect, useState } from "react";
2
+ function useDebouncedValue(value, delay = 250) {
3
+ const [debounced, setDebounced] = useState(value);
4
+ useEffect(() => {
5
+ const t = setTimeout(() => {
6
+ setDebounced(value);
7
+ }, delay);
8
+ return () => {
9
+ clearTimeout(t);
10
+ };
11
+ }, [value, delay]);
12
+ return debounced;
13
+ }
14
+ function useTimeoutFlag(signal, ms = 2e3) {
15
+ const [active, setActive] = useState(false);
16
+ useEffect(() => {
17
+ if (!signal) {
18
+ const id = window.setTimeout(() => {
19
+ setActive(false);
20
+ }, 0);
21
+ return () => {
22
+ clearTimeout(id);
23
+ };
24
+ }
25
+ const showId = window.setTimeout(() => {
26
+ setActive(true);
27
+ }, 0);
28
+ const hideId = window.setTimeout(() => {
29
+ setActive(false);
30
+ }, ms);
31
+ return () => {
32
+ clearTimeout(showId);
33
+ clearTimeout(hideId);
34
+ };
35
+ }, [signal, ms]);
36
+ return Boolean(signal) && active;
37
+ }
38
+ function useMediaQuery(query) {
39
+ const isBrowser = typeof window !== "undefined";
40
+ const getMatch = () => isBrowser ? window.matchMedia(query).matches : false;
41
+ const [matches, setMatches] = useState(getMatch());
42
+ useEffect(() => {
43
+ if (!isBrowser) return void 0;
44
+ const mediaQuery = window.matchMedia(query);
45
+ const updateMatch = () => {
46
+ setMatches(mediaQuery.matches);
47
+ };
48
+ updateMatch();
49
+ if (typeof mediaQuery.addEventListener === "function") {
50
+ mediaQuery.addEventListener("change", updateMatch);
51
+ return () => {
52
+ mediaQuery.removeEventListener("change", updateMatch);
53
+ };
54
+ }
55
+ mediaQuery.addListener(updateMatch);
56
+ return () => {
57
+ mediaQuery.removeListener(updateMatch);
58
+ };
59
+ }, [isBrowser, query]);
60
+ return matches;
61
+ }
62
+ function useIsMobile() {
63
+ return useMediaQuery("(max-width: 767px)");
64
+ }
65
+ export {
66
+ useDebouncedValue,
67
+ useIsMobile,
68
+ useMediaQuery,
69
+ useTimeoutFlag
70
+ };
@@ -1,5 +1,2 @@
1
- import { ClassValue } from 'clsx';
2
-
3
- declare function cn(...inputs: ClassValue[]): string;
4
-
5
- export { cn };
1
+ import { type ClassValue } from "clsx";
2
+ export declare function cn(...inputs: ClassValue[]): string;
package/dist/lib/utils.js CHANGED
@@ -1 +1,8 @@
1
- export { cn } from '../chunk-U7N2A7A3.js';
1
+ import { clsx } from "clsx";
2
+ import { twMerge } from "tailwind-merge";
3
+ function cn(...inputs) {
4
+ return twMerge(clsx(inputs));
5
+ }
6
+ export {
7
+ cn
8
+ };
@@ -0,0 +1,12 @@
1
+ /** Prop → internal class maps. Apps use component props, never these classes directly. */
2
+ import type { GapProp, PageContainerVariantProp, PageDensityProp } from "../props/vocabulary";
3
+ export type Density = PageDensityProp;
4
+ export type StackGap = GapProp;
5
+ export type FlexGap = GapProp;
6
+ export type InlineGap = Exclude<GapProp, "xl">;
7
+ export type PageContainerVariant = PageContainerVariantProp;
8
+ export declare const densityClass: Record<PageDensityProp, string>;
9
+ export declare const pageContainerVariantClass: Record<PageContainerVariantProp, string | undefined>;
10
+ export declare const stackGapClass: Record<GapProp, string>;
11
+ export declare const inlineGapClass: Record<Exclude<GapProp, "xl">, string>;
12
+ export declare const flexGapClass: Record<GapProp, string>;