@gcsa/console-react 0.1.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 (394) hide show
  1. package/dist/ConsoleHeader.d.ts +9 -0
  2. package/dist/ConsoleHeader.js +21 -0
  3. package/dist/ConsoleHeader.js.map +1 -0
  4. package/dist/ConsolePage.d.ts +8 -0
  5. package/dist/ConsolePage.js +14 -0
  6. package/dist/ConsolePage.js.map +1 -0
  7. package/dist/ConsoleShell.d.ts +23 -0
  8. package/dist/ConsoleShell.js +133 -0
  9. package/dist/ConsoleShell.js.map +1 -0
  10. package/dist/ConsoleSidebar.d.ts +11 -0
  11. package/dist/ConsoleSidebar.js +52 -0
  12. package/dist/ConsoleSidebar.js.map +1 -0
  13. package/dist/GcsaAlert.d.ts +9 -0
  14. package/dist/GcsaAlert.js +24 -0
  15. package/dist/GcsaAlert.js.map +1 -0
  16. package/dist/GcsaAutoComplete.d.ts +15 -0
  17. package/dist/GcsaAutoComplete.js +106 -0
  18. package/dist/GcsaAutoComplete.js.map +1 -0
  19. package/dist/GcsaAvatar.d.ts +8 -0
  20. package/dist/GcsaAvatar.js +13 -0
  21. package/dist/GcsaAvatar.js.map +1 -0
  22. package/dist/GcsaBadge.d.ts +7 -0
  23. package/dist/GcsaBadge.js +8 -0
  24. package/dist/GcsaBadge.js.map +1 -0
  25. package/dist/GcsaBrandMark.d.ts +4 -0
  26. package/dist/GcsaBrandMark.js +21 -0
  27. package/dist/GcsaBrandMark.js.map +1 -0
  28. package/dist/GcsaBreadcrumb.d.ts +9 -0
  29. package/dist/GcsaBreadcrumb.js +20 -0
  30. package/dist/GcsaBreadcrumb.js.map +1 -0
  31. package/dist/GcsaButton.d.ts +8 -0
  32. package/dist/GcsaButton.js +38 -0
  33. package/dist/GcsaButton.js.map +1 -0
  34. package/dist/GcsaCalendar.d.ts +11 -0
  35. package/dist/GcsaCalendar.js +35 -0
  36. package/dist/GcsaCalendar.js.map +1 -0
  37. package/dist/GcsaCard.d.ts +8 -0
  38. package/dist/GcsaCard.js +11 -0
  39. package/dist/GcsaCard.js.map +1 -0
  40. package/dist/GcsaCascader.d.ts +14 -0
  41. package/dist/GcsaCascader.js +91 -0
  42. package/dist/GcsaCascader.js.map +1 -0
  43. package/dist/GcsaChatPanel.d.ts +43 -0
  44. package/dist/GcsaChatPanel.js +180 -0
  45. package/dist/GcsaChatPanel.js.map +1 -0
  46. package/dist/GcsaCheckbox.d.ts +11 -0
  47. package/dist/GcsaCheckbox.js +45 -0
  48. package/dist/GcsaCheckbox.js.map +1 -0
  49. package/dist/GcsaCollapse.d.ts +16 -0
  50. package/dist/GcsaCollapse.js +20 -0
  51. package/dist/GcsaCollapse.js.map +1 -0
  52. package/dist/GcsaConfigProvider.d.ts +13 -0
  53. package/dist/GcsaConfigProvider.js +68 -0
  54. package/dist/GcsaConfigProvider.js.map +1 -0
  55. package/dist/GcsaDataTable.d.ts +119 -0
  56. package/dist/GcsaDataTable.js +508 -0
  57. package/dist/GcsaDataTable.js.map +1 -0
  58. package/dist/GcsaDatePicker.d.ts +16 -0
  59. package/dist/GcsaDatePicker.js +211 -0
  60. package/dist/GcsaDatePicker.js.map +1 -0
  61. package/dist/GcsaDateRangePicker.d.ts +17 -0
  62. package/dist/GcsaDateRangePicker.js +222 -0
  63. package/dist/GcsaDateRangePicker.js.map +1 -0
  64. package/dist/GcsaDateTimePicker.d.ts +13 -0
  65. package/dist/GcsaDateTimePicker.js +300 -0
  66. package/dist/GcsaDateTimePicker.js.map +1 -0
  67. package/dist/GcsaDescriptions.d.ts +9 -0
  68. package/dist/GcsaDescriptions.js +11 -0
  69. package/dist/GcsaDescriptions.js.map +1 -0
  70. package/dist/GcsaDivider.d.ts +4 -0
  71. package/dist/GcsaDivider.js +8 -0
  72. package/dist/GcsaDivider.js.map +1 -0
  73. package/dist/GcsaDrawer.d.ts +15 -0
  74. package/dist/GcsaDrawer.js +68 -0
  75. package/dist/GcsaDrawer.js.map +1 -0
  76. package/dist/GcsaDropdown.d.ts +20 -0
  77. package/dist/GcsaDropdown.js +46 -0
  78. package/dist/GcsaDropdown.js.map +1 -0
  79. package/dist/GcsaEmpty.d.ts +9 -0
  80. package/dist/GcsaEmpty.js +16 -0
  81. package/dist/GcsaEmpty.js.map +1 -0
  82. package/dist/GcsaField.d.ts +11 -0
  83. package/dist/GcsaField.js +26 -0
  84. package/dist/GcsaField.js.map +1 -0
  85. package/dist/GcsaForm.d.ts +13 -0
  86. package/dist/GcsaForm.js +60 -0
  87. package/dist/GcsaForm.js.map +1 -0
  88. package/dist/GcsaFormField.d.ts +16 -0
  89. package/dist/GcsaFormField.js +39 -0
  90. package/dist/GcsaFormField.js.map +1 -0
  91. package/dist/GcsaIcon.d.ts +7 -0
  92. package/dist/GcsaIcon.js +17 -0
  93. package/dist/GcsaIcon.js.map +1 -0
  94. package/dist/GcsaImagePreview.d.ts +8 -0
  95. package/dist/GcsaImagePreview.js +18 -0
  96. package/dist/GcsaImagePreview.js.map +1 -0
  97. package/dist/GcsaInput.d.ts +13 -0
  98. package/dist/GcsaInput.js +76 -0
  99. package/dist/GcsaInput.js.map +1 -0
  100. package/dist/GcsaInputGroup.d.ts +11 -0
  101. package/dist/GcsaInputGroup.js +27 -0
  102. package/dist/GcsaInputGroup.js.map +1 -0
  103. package/dist/GcsaInputNumber.d.ts +18 -0
  104. package/dist/GcsaInputNumber.js +108 -0
  105. package/dist/GcsaInputNumber.js.map +1 -0
  106. package/dist/GcsaLoading.d.ts +24 -0
  107. package/dist/GcsaLoading.js +101 -0
  108. package/dist/GcsaLoading.js.map +1 -0
  109. package/dist/GcsaLoadingMask.d.ts +8 -0
  110. package/dist/GcsaLoadingMask.js +39 -0
  111. package/dist/GcsaLoadingMask.js.map +1 -0
  112. package/dist/GcsaMarkdownRenderer.d.ts +6 -0
  113. package/dist/GcsaMarkdownRenderer.js +32 -0
  114. package/dist/GcsaMarkdownRenderer.js.map +1 -0
  115. package/dist/GcsaMenu.d.ts +16 -0
  116. package/dist/GcsaMenu.js +241 -0
  117. package/dist/GcsaMenu.js.map +1 -0
  118. package/dist/GcsaModal.d.ts +10 -0
  119. package/dist/GcsaModal.js +45 -0
  120. package/dist/GcsaModal.js.map +1 -0
  121. package/dist/GcsaMultiSelect.d.ts +23 -0
  122. package/dist/GcsaMultiSelect.js +149 -0
  123. package/dist/GcsaMultiSelect.js.map +1 -0
  124. package/dist/GcsaPagination.d.ts +17 -0
  125. package/dist/GcsaPagination.js +108 -0
  126. package/dist/GcsaPagination.js.map +1 -0
  127. package/dist/GcsaPopconfirm.d.ts +18 -0
  128. package/dist/GcsaPopconfirm.js +68 -0
  129. package/dist/GcsaPopconfirm.js.map +1 -0
  130. package/dist/GcsaPopover.d.ts +30 -0
  131. package/dist/GcsaPopover.js +65 -0
  132. package/dist/GcsaPopover.js.map +1 -0
  133. package/dist/GcsaPopoverClose.d.ts +6 -0
  134. package/dist/GcsaPopoverClose.js +9 -0
  135. package/dist/GcsaPopoverClose.js.map +1 -0
  136. package/dist/GcsaProgress.d.ts +5 -0
  137. package/dist/GcsaProgress.js +18 -0
  138. package/dist/GcsaProgress.js.map +1 -0
  139. package/dist/GcsaRadioGroup.d.ts +9 -0
  140. package/dist/GcsaRadioGroup.js +37 -0
  141. package/dist/GcsaRadioGroup.js.map +1 -0
  142. package/dist/GcsaResult.d.ts +9 -0
  143. package/dist/GcsaResult.js +14 -0
  144. package/dist/GcsaResult.js.map +1 -0
  145. package/dist/GcsaRow.d.ts +7 -0
  146. package/dist/GcsaRow.js +8 -0
  147. package/dist/GcsaRow.js.map +1 -0
  148. package/dist/GcsaSelect.d.ts +20 -0
  149. package/dist/GcsaSelect.js +117 -0
  150. package/dist/GcsaSelect.js.map +1 -0
  151. package/dist/GcsaSkeleton.d.ts +6 -0
  152. package/dist/GcsaSkeleton.js +19 -0
  153. package/dist/GcsaSkeleton.js.map +1 -0
  154. package/dist/GcsaSpace.d.ts +7 -0
  155. package/dist/GcsaSpace.js +14 -0
  156. package/dist/GcsaSpace.js.map +1 -0
  157. package/dist/GcsaSpin.d.ts +7 -0
  158. package/dist/GcsaSpin.js +16 -0
  159. package/dist/GcsaSpin.js.map +1 -0
  160. package/dist/GcsaStatistic.d.ts +8 -0
  161. package/dist/GcsaStatistic.js +11 -0
  162. package/dist/GcsaStatistic.js.map +1 -0
  163. package/dist/GcsaSteps.d.ts +10 -0
  164. package/dist/GcsaSteps.js +54 -0
  165. package/dist/GcsaSteps.js.map +1 -0
  166. package/dist/GcsaSwitch.d.ts +11 -0
  167. package/dist/GcsaSwitch.js +36 -0
  168. package/dist/GcsaSwitch.js.map +1 -0
  169. package/dist/GcsaTabs.d.ts +15 -0
  170. package/dist/GcsaTabs.js +39 -0
  171. package/dist/GcsaTabs.js.map +1 -0
  172. package/dist/GcsaTag.d.ts +7 -0
  173. package/dist/GcsaTag.js +9 -0
  174. package/dist/GcsaTag.js.map +1 -0
  175. package/dist/GcsaTextarea.d.ts +13 -0
  176. package/dist/GcsaTextarea.js +76 -0
  177. package/dist/GcsaTextarea.js.map +1 -0
  178. package/dist/GcsaTimePicker.d.ts +12 -0
  179. package/dist/GcsaTimePicker.js +221 -0
  180. package/dist/GcsaTimePicker.js.map +1 -0
  181. package/dist/GcsaTimeline.d.ts +5 -0
  182. package/dist/GcsaTimeline.js +19 -0
  183. package/dist/GcsaTimeline.js.map +1 -0
  184. package/dist/GcsaToastStack.d.ts +11 -0
  185. package/dist/GcsaToastStack.js +45 -0
  186. package/dist/GcsaToastStack.js.map +1 -0
  187. package/dist/GcsaTooltip.d.ts +17 -0
  188. package/dist/GcsaTooltip.js +43 -0
  189. package/dist/GcsaTooltip.js.map +1 -0
  190. package/dist/GcsaTransfer.d.ts +11 -0
  191. package/dist/GcsaTransfer.js +95 -0
  192. package/dist/GcsaTransfer.js.map +1 -0
  193. package/dist/GcsaTree.d.ts +17 -0
  194. package/dist/GcsaTree.js +38 -0
  195. package/dist/GcsaTree.js.map +1 -0
  196. package/dist/GcsaTypography.d.ts +8 -0
  197. package/dist/GcsaTypography.js +14 -0
  198. package/dist/GcsaTypography.js.map +1 -0
  199. package/dist/GcsaUpload.d.ts +24 -0
  200. package/dist/GcsaUpload.js +146 -0
  201. package/dist/GcsaUpload.js.map +1 -0
  202. package/dist/hooks/gcsaFormTypes.d.ts +7 -0
  203. package/dist/hooks/useDocumentThemeSync.d.ts +3 -0
  204. package/dist/hooks/useDocumentThemeSync.js +7 -0
  205. package/dist/hooks/useDocumentThemeSync.js.map +1 -0
  206. package/dist/hooks/useGcsaComponentSize.d.ts +5 -0
  207. package/dist/hooks/useGcsaComponentSize.js +21 -0
  208. package/dist/hooks/useGcsaComponentSize.js.map +1 -0
  209. package/dist/hooks/useGcsaFormField.d.ts +26 -0
  210. package/dist/hooks/useGcsaFormField.js +47 -0
  211. package/dist/hooks/useGcsaFormField.js.map +1 -0
  212. package/dist/hooks/useGcsaFormSchema.d.ts +7 -0
  213. package/dist/hooks/useGcsaFormSchema.js +6 -0
  214. package/dist/hooks/useGcsaFormSchema.js.map +1 -0
  215. package/dist/hooks/useGcsaLocale.d.ts +4 -0
  216. package/dist/hooks/useGcsaLocale.js +15 -0
  217. package/dist/hooks/useGcsaLocale.js.map +1 -0
  218. package/dist/hooks/useGcsaPopupZIndex.d.ts +6 -0
  219. package/dist/hooks/useGcsaPopupZIndex.js +18 -0
  220. package/dist/hooks/useGcsaPopupZIndex.js.map +1 -0
  221. package/dist/hooks/useGcsaTextCount.d.ts +16 -0
  222. package/dist/hooks/useGcsaTextCount.js +16 -0
  223. package/dist/hooks/useGcsaTextCount.js.map +1 -0
  224. package/dist/hooks/useGcsaTheme.d.ts +7 -0
  225. package/dist/hooks/useGcsaTheme.js +19 -0
  226. package/dist/hooks/useGcsaTheme.js.map +1 -0
  227. package/dist/hooks/useGcsaZIndex.d.ts +13 -0
  228. package/dist/hooks/useGcsaZIndex.js +37 -0
  229. package/dist/hooks/useGcsaZIndex.js.map +1 -0
  230. package/dist/hooks/useMessage.d.ts +6 -0
  231. package/dist/hooks/useOverlayZIndex.d.ts +8 -0
  232. package/dist/hooks/useOverlayZIndex.js +14 -0
  233. package/dist/hooks/useOverlayZIndex.js.map +1 -0
  234. package/dist/hooks/usePreventHiddenInputScroll.d.ts +13 -0
  235. package/dist/hooks/usePreventHiddenInputScroll.js +124 -0
  236. package/dist/hooks/usePreventHiddenInputScroll.js.map +1 -0
  237. package/dist/icons/iconNames.d.ts +7 -0
  238. package/dist/icons/iconNames.js +24 -0
  239. package/dist/icons/iconNames.js.map +1 -0
  240. package/dist/icons/index.d.ts +2 -0
  241. package/dist/icons/registry.d.ts +3 -0
  242. package/dist/icons/registry.js +58 -0
  243. package/dist/icons/registry.js.map +1 -0
  244. package/dist/icons/svg/alert.svg.js +9 -0
  245. package/dist/icons/svg/alert.svg.js.map +1 -0
  246. package/dist/icons/svg/assets.svg.js +9 -0
  247. package/dist/icons/svg/assets.svg.js.map +1 -0
  248. package/dist/icons/svg/chat.svg.js +8 -0
  249. package/dist/icons/svg/chat.svg.js.map +1 -0
  250. package/dist/icons/svg/check.svg.js +8 -0
  251. package/dist/icons/svg/check.svg.js.map +1 -0
  252. package/dist/icons/svg/chevron-down.svg.js +8 -0
  253. package/dist/icons/svg/chevron-down.svg.js.map +1 -0
  254. package/dist/icons/svg/chevron-left.svg.js +8 -0
  255. package/dist/icons/svg/chevron-left.svg.js.map +1 -0
  256. package/dist/icons/svg/chevron-right.svg.js +8 -0
  257. package/dist/icons/svg/chevron-right.svg.js.map +1 -0
  258. package/dist/icons/svg/chevron-up.svg.js +8 -0
  259. package/dist/icons/svg/chevron-up.svg.js.map +1 -0
  260. package/dist/icons/svg/close.svg.js +6 -0
  261. package/dist/icons/svg/close.svg.js.map +1 -0
  262. package/dist/icons/svg/dashboard.svg.js +8 -0
  263. package/dist/icons/svg/dashboard.svg.js.map +1 -0
  264. package/dist/icons/svg/menu.svg.js +8 -0
  265. package/dist/icons/svg/menu.svg.js.map +1 -0
  266. package/dist/icons/svg/plus.svg.js +6 -0
  267. package/dist/icons/svg/plus.svg.js.map +1 -0
  268. package/dist/icons/svg/result-empty.svg.js +6 -0
  269. package/dist/icons/svg/result-empty.svg.js.map +1 -0
  270. package/dist/icons/svg/settings.svg.js +8 -0
  271. package/dist/icons/svg/settings.svg.js.map +1 -0
  272. package/dist/icons/svg/users.svg.js +11 -0
  273. package/dist/icons/svg/users.svg.js.map +1 -0
  274. package/dist/index.d.ts +151 -0
  275. package/dist/index.js +166 -0
  276. package/dist/index.js.map +1 -0
  277. package/dist/style.css +8028 -0
  278. package/dist/utils/gcsaDateValue.d.ts +25 -0
  279. package/dist/utils/gcsaDateValue.js +60 -0
  280. package/dist/utils/gcsaDateValue.js.map +1 -0
  281. package/dist/utils/gcsaTableColumns.d.ts +19 -0
  282. package/dist/utils/gcsaTableColumns.js +43 -0
  283. package/dist/utils/gcsaTableColumns.js.map +1 -0
  284. package/dist/utils/preserveDrawerScroll.d.ts +2 -0
  285. package/dist/utils/preserveDrawerScroll.js +13 -0
  286. package/dist/utils/preserveDrawerScroll.js.map +1 -0
  287. package/dist/utils/zodValidators.d.ts +21 -0
  288. package/dist/utils/zodValidators.js +35 -0
  289. package/dist/utils/zodValidators.js.map +1 -0
  290. package/package.json +58 -0
  291. package/src/ConsoleHeader.tsx +24 -0
  292. package/src/ConsolePage.tsx +22 -0
  293. package/src/ConsoleShell.tsx +248 -0
  294. package/src/ConsoleSidebar.tsx +61 -0
  295. package/src/GcsaAlert.tsx +29 -0
  296. package/src/GcsaAutoComplete.tsx +163 -0
  297. package/src/GcsaAvatar.tsx +21 -0
  298. package/src/GcsaBadge.tsx +15 -0
  299. package/src/GcsaBrandMark.tsx +18 -0
  300. package/src/GcsaBreadcrumb.tsx +35 -0
  301. package/src/GcsaButton.tsx +44 -0
  302. package/src/GcsaCalendar.tsx +14 -0
  303. package/src/GcsaCard.tsx +21 -0
  304. package/src/GcsaCascader.tsx +121 -0
  305. package/src/GcsaChatPanel.tsx +320 -0
  306. package/src/GcsaCheckbox.tsx +55 -0
  307. package/src/GcsaCollapse.tsx +23 -0
  308. package/src/GcsaConfigProvider.tsx +121 -0
  309. package/src/GcsaDataTable.tsx +779 -0
  310. package/src/GcsaDatePicker.tsx +284 -0
  311. package/src/GcsaDateRangePicker.tsx +310 -0
  312. package/src/GcsaDateTimePicker.tsx +407 -0
  313. package/src/GcsaDescriptions.tsx +22 -0
  314. package/src/GcsaDivider.tsx +7 -0
  315. package/src/GcsaDrawer.tsx +87 -0
  316. package/src/GcsaDropdown.tsx +84 -0
  317. package/src/GcsaEmpty.tsx +27 -0
  318. package/src/GcsaField.tsx +50 -0
  319. package/src/GcsaForm.tsx +82 -0
  320. package/src/GcsaFormField.tsx +67 -0
  321. package/src/GcsaIcon.tsx +21 -0
  322. package/src/GcsaImagePreview.tsx +30 -0
  323. package/src/GcsaInput.tsx +87 -0
  324. package/src/GcsaInputGroup.tsx +32 -0
  325. package/src/GcsaInputNumber.tsx +155 -0
  326. package/src/GcsaLoading.ts +206 -0
  327. package/src/GcsaLoadingMask.tsx +53 -0
  328. package/src/GcsaMarkdownRenderer.tsx +40 -0
  329. package/src/GcsaMenu.tsx +340 -0
  330. package/src/GcsaModal.tsx +68 -0
  331. package/src/GcsaMultiSelect.tsx +246 -0
  332. package/src/GcsaPagination.tsx +194 -0
  333. package/src/GcsaPopconfirm.tsx +104 -0
  334. package/src/GcsaPopover.tsx +131 -0
  335. package/src/GcsaPopoverClose.tsx +11 -0
  336. package/src/GcsaProgress.tsx +18 -0
  337. package/src/GcsaRadioGroup.tsx +42 -0
  338. package/src/GcsaResult.tsx +23 -0
  339. package/src/GcsaRow.tsx +13 -0
  340. package/src/GcsaSelect.tsx +186 -0
  341. package/src/GcsaSkeleton.tsx +19 -0
  342. package/src/GcsaSpace.tsx +17 -0
  343. package/src/GcsaSpin.tsx +25 -0
  344. package/src/GcsaStatistic.tsx +17 -0
  345. package/src/GcsaSteps.tsx +73 -0
  346. package/src/GcsaSwitch.tsx +45 -0
  347. package/src/GcsaTabs.tsx +53 -0
  348. package/src/GcsaTag.tsx +16 -0
  349. package/src/GcsaTextarea.tsx +87 -0
  350. package/src/GcsaTimePicker.tsx +298 -0
  351. package/src/GcsaTimeline.tsx +27 -0
  352. package/src/GcsaToastStack.tsx +67 -0
  353. package/src/GcsaTooltip.tsx +75 -0
  354. package/src/GcsaTransfer.tsx +129 -0
  355. package/src/GcsaTree.tsx +43 -0
  356. package/src/GcsaTypography.tsx +24 -0
  357. package/src/GcsaUpload.tsx +206 -0
  358. package/src/hooks/gcsaFormTypes.ts +23 -0
  359. package/src/hooks/useDocumentThemeSync.ts +6 -0
  360. package/src/hooks/useGcsaComponentSize.ts +24 -0
  361. package/src/hooks/useGcsaFormField.ts +49 -0
  362. package/src/hooks/useGcsaFormSchema.ts +6 -0
  363. package/src/hooks/useGcsaLocale.ts +16 -0
  364. package/src/hooks/useGcsaPopupZIndex.ts +23 -0
  365. package/src/hooks/useGcsaTextCount.ts +44 -0
  366. package/src/hooks/useGcsaTheme.ts +19 -0
  367. package/src/hooks/useGcsaZIndex.ts +60 -0
  368. package/src/hooks/useMessage.ts +7 -0
  369. package/src/hooks/useOverlayZIndex.ts +23 -0
  370. package/src/hooks/usePreventHiddenInputScroll.ts +233 -0
  371. package/src/icons/iconNames.ts +27 -0
  372. package/src/icons/index.ts +8 -0
  373. package/src/icons/registry.ts +38 -0
  374. package/src/icons/svg/alert.svg +4 -0
  375. package/src/icons/svg/assets.svg +4 -0
  376. package/src/icons/svg/chat.svg +3 -0
  377. package/src/icons/svg/check.svg +3 -0
  378. package/src/icons/svg/chevron-down.svg +3 -0
  379. package/src/icons/svg/chevron-left.svg +3 -0
  380. package/src/icons/svg/chevron-right.svg +3 -0
  381. package/src/icons/svg/chevron-up.svg +3 -0
  382. package/src/icons/svg/close.svg +1 -0
  383. package/src/icons/svg/dashboard.svg +3 -0
  384. package/src/icons/svg/menu.svg +3 -0
  385. package/src/icons/svg/plus.svg +1 -0
  386. package/src/icons/svg/result-empty.svg +1 -0
  387. package/src/icons/svg/settings.svg +3 -0
  388. package/src/icons/svg/users.svg +6 -0
  389. package/src/index.ts +166 -0
  390. package/src/utils/gcsaDateValue.ts +99 -0
  391. package/src/utils/gcsaTableColumns.ts +97 -0
  392. package/src/utils/preserveDrawerScroll.ts +20 -0
  393. package/src/utils/zodValidators.ts +45 -0
  394. package/src/vite-env.d.ts +6 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GcsaTree.js","sources":["../src/GcsaTree.tsx"],"sourcesContent":["import type { CSSProperties, ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\nimport { GcsaIcon } from './GcsaIcon';\nimport { useGcsaLocaleMessages } from './hooks/useGcsaLocale';\n\nexport type GcsaTreeNode = { key: string; label: ReactNode; disabled?: boolean; children?: GcsaTreeNode[] };\nexport type GcsaTreeProps = { nodes?: GcsaTreeNode[]; expandedKeys?: string[]; selectedKeys?: string[]; multiple?: boolean; onExpandedKeysChange?: (keys: string[]) => void; onSelectedKeysChange?: (keys: string[]) => void; onSelect?: (node: GcsaTreeNode) => void };\n\nexport function GcsaTree({ nodes = [], expandedKeys, selectedKeys, multiple = false, onExpandedKeysChange, onSelectedKeysChange, onSelect }: GcsaTreeProps) {\n const messages = useGcsaLocaleMessages();\n const [internalExpandedKeys, setInternalExpandedKeys] = useState<string[]>(() => expandedKeys ?? []);\n const [internalSelectedKeys, setInternalSelectedKeys] = useState<string[]>(() => selectedKeys ?? []);\n const resolvedExpandedKeys = expandedKeys ?? internalExpandedKeys;\n const resolvedSelectedKeys = selectedKeys ?? internalSelectedKeys;\n\n useEffect(() => {\n if (expandedKeys) setInternalExpandedKeys(expandedKeys);\n }, [expandedKeys]);\n useEffect(() => {\n if (selectedKeys) setInternalSelectedKeys(selectedKeys);\n }, [selectedKeys]);\n\n function renderNode(node: GcsaTreeNode, depth: number, position: number, setSize: number): ReactNode {\n const expanded = resolvedExpandedKeys.includes(node.key);\n const selected = resolvedSelectedKeys.includes(node.key);\n const hasChildren = Boolean(node.children?.length);\n const updateExpanded = () => {\n const next = expanded ? resolvedExpandedKeys.filter(key => key !== node.key) : [...resolvedExpandedKeys, node.key];\n if (expandedKeys === undefined) setInternalExpandedKeys(next);\n onExpandedKeysChange?.(next);\n };\n const childrenId = `gcsa-tree-children-${node.key}`;\n return <div key={node.key} className=\"gcsa-tree__branch\" role=\"treeitem\" aria-level={depth + 1} aria-posinset={position} aria-setsize={setSize} aria-expanded={hasChildren ? expanded : undefined}>\n <div className=\"gcsa-tree__node\" style={{ paddingInlineStart: depth * 20 + 8 } as CSSProperties} data-selected={selected || undefined} data-expanded={hasChildren ? expanded : undefined} data-leaf={!hasChildren || undefined}>\n {hasChildren ? <button type=\"button\" className=\"gcsa-tree__toggle gcsa-focus-ring\" aria-label={expanded ? 'Collapse' : 'Expand'} aria-expanded={expanded} aria-controls={childrenId} onClick={updateExpanded}><GcsaIcon name=\"chevronDown\" size=\"sm\" className={`gcsa-tree__caret${expanded ? ' gcsa-tree__caret--expanded' : ''}`} /></button> : <span className=\"gcsa-tree__spacer\" />}\n <button type=\"button\" className=\"gcsa-tree__label gcsa-focus-ring\" disabled={node.disabled} onClick={() => { const next = multiple ? selected ? resolvedSelectedKeys.filter(key => key !== node.key) : [...resolvedSelectedKeys, node.key] : [node.key]; if (selectedKeys === undefined) setInternalSelectedKeys(next); onSelectedKeysChange?.(next); onSelect?.(node); }}>{node.label}</button>\n {hasChildren && !expanded ? <span className=\"gcsa-tree__summary\" aria-label={`${node.children!.length} 项`}>{node.children!.length} 项</span> : null}\n </div>\n {hasChildren && expanded ? <div id={childrenId} className=\"gcsa-tree__children\" role=\"group\">{node.children!.map((child, index) => renderNode(child, depth + 1, index + 1, node.children!.length))}</div> : null}\n </div>;\n }\n return <div className=\"gcsa-tree\" role=\"tree\" aria-multiselectable={multiple}>{nodes.length ? nodes.map((node, index) => renderNode(node, 0, index + 1, nodes.length)) : <div className=\"gcsa-tree__empty\" role=\"status\">{messages.emptyDefault}</div>}</div>;\n}\n"],"names":["GcsaTree","nodes","expandedKeys","selectedKeys","multiple","onExpandedKeysChange","onSelectedKeysChange","onSelect","messages","useGcsaLocaleMessages","internalExpandedKeys","setInternalExpandedKeys","useState","internalSelectedKeys","setInternalSelectedKeys","resolvedExpandedKeys","resolvedSelectedKeys","useEffect","renderNode","node","depth","position","setSize","expanded","selected","hasChildren","_a","updateExpanded","next","key","childrenId","jsxs","jsx","GcsaIcon","child","index"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { ReactNode } from 'react';
2
+ export type GcsaTypographyProps = {
3
+ variant?: 'title' | 'text';
4
+ level?: 1 | 2 | 3 | 4 | 5;
5
+ className?: string;
6
+ children?: ReactNode;
7
+ };
8
+ export declare function GcsaTypography({ variant, level, className, children }: GcsaTypographyProps): import("react").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import { jsx as r } from "react/jsx-runtime";
2
+ function c({
3
+ variant: a = "text",
4
+ level: p = 3,
5
+ className: t,
6
+ children: s
7
+ }) {
8
+ const g = a === "title" ? `gcsa-typography gcsa-typography-title gcsa-typography-title--l${p}` : "gcsa-typography gcsa-typography-text";
9
+ return /* @__PURE__ */ r("div", { className: `gcsa-ui-surface ${g}${t ? ` ${t}` : ""}`, children: s });
10
+ }
11
+ export {
12
+ c as GcsaTypography
13
+ };
14
+ //# sourceMappingURL=GcsaTypography.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GcsaTypography.js","sources":["../src/GcsaTypography.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nexport type GcsaTypographyProps = {\n variant?: 'title' | 'text';\n level?: 1 | 2 | 3 | 4 | 5;\n className?: string;\n children?: ReactNode;\n};\n\nexport function GcsaTypography({\n variant = 'text',\n level = 3,\n className,\n children\n}: GcsaTypographyProps) {\n const classes =\n variant === 'title'\n ? `gcsa-typography gcsa-typography-title gcsa-typography-title--l${level}`\n : 'gcsa-typography gcsa-typography-text';\n\n return (\n <div className={`gcsa-ui-surface ${classes}${className ? ` ${className}` : ''}`}>{children}</div>\n );\n}\n"],"names":["GcsaTypography","variant","level","className","children","classes","jsx"],"mappings":";AASO,SAASA,EAAe;AAAA,EAC7B,SAAAC,IAAU;AAAA,EACV,OAAAC,IAAQ;AAAA,EACR,WAAAC;AAAA,EACA,UAAAC;AACF,GAAwB;AACtB,QAAMC,IACJJ,MAAY,UACR,iEAAiEC,CAAK,KACtE;AAEN,SACE,gBAAAI,EAAC,OAAA,EAAI,WAAW,mBAAmBD,CAAO,GAAGF,IAAY,IAAIA,CAAS,KAAK,EAAE,IAAK,UAAAC,GAAS;AAE/F;"}
@@ -0,0 +1,24 @@
1
+ export type GcsaUploadProps = {
2
+ files?: File[];
3
+ accept?: string;
4
+ multiple?: boolean;
5
+ disabled?: boolean;
6
+ buttonLabel?: string;
7
+ hint?: string;
8
+ maxCount?: number;
9
+ maxSize?: number;
10
+ drag?: boolean;
11
+ directory?: boolean;
12
+ dragLabel?: string;
13
+ uploadingLabel?: string;
14
+ uploadErrorLabel?: string;
15
+ upload?: (file: File, onProgress?: (percent: number) => void) => Promise<void> | void;
16
+ retryLabel?: string;
17
+ onProgress?: (file: File, percent: number) => void;
18
+ onUploadStart?: (file: File) => void;
19
+ onUploadSuccess?: (file: File) => void;
20
+ onUploadError?: (file: File, error: unknown) => void;
21
+ className?: string;
22
+ onFilesChange?: (files: File[]) => void;
23
+ };
24
+ export declare function GcsaUpload({ files, accept, multiple, disabled, buttonLabel, hint, maxCount, className, onFilesChange, maxSize, drag, directory, dragLabel, uploadingLabel, uploadErrorLabel, upload, retryLabel, onProgress, onUploadStart, onUploadSuccess, onUploadError }: GcsaUploadProps): import("react").JSX.Element;
@@ -0,0 +1,146 @@
1
+ import { jsxs as i, jsx as t } from "react/jsx-runtime";
2
+ import { useRef as P, useState as M } from "react";
3
+ import { GcsaIcon as C } from "./GcsaIcon.js";
4
+ import { useGcsaLocaleMessages as S } from "./hooks/useGcsaLocale.js";
5
+ function sa({
6
+ files: u = [],
7
+ accept: A,
8
+ multiple: w = !1,
9
+ disabled: n,
10
+ buttonLabel: G,
11
+ hint: j,
12
+ maxCount: y,
13
+ className: D,
14
+ onFilesChange: c,
15
+ maxSize: $,
16
+ drag: p = !1,
17
+ directory: H = !1,
18
+ dragLabel: I,
19
+ uploadingLabel: K,
20
+ uploadErrorLabel: O,
21
+ upload: d,
22
+ retryLabel: T,
23
+ onProgress: g,
24
+ onUploadStart: m,
25
+ onUploadSuccess: _,
26
+ onUploadError: f
27
+ }) {
28
+ const r = S(), q = G ?? r.uploadSelectFile, E = I ?? r.uploadDragHint, J = K ?? r.uploadUploading, Q = O ?? r.uploadFailed, V = T ?? r.uploadRetry, k = j || (p ? E : void 0), L = P(null), [W, v] = M(!1), [o, h] = M(/* @__PURE__ */ new Map()), [x, N] = M(/* @__PURE__ */ new Map());
29
+ function b() {
30
+ var a;
31
+ (a = L.current) == null || a.click();
32
+ }
33
+ function X(a) {
34
+ const e = Array.from(a.target.files ?? []);
35
+ a.target.value = "", e.length && R(e);
36
+ }
37
+ function R(a) {
38
+ const e = $ == null ? a : a.filter((l) => l.size <= $);
39
+ let s = w ? [...u, ...e] : e.slice(0, 1);
40
+ y != null && (s = s.slice(0, y)), c == null || c(s), d && s.filter((l) => e.includes(l)).forEach(B);
41
+ }
42
+ function z(a) {
43
+ a.preventDefault(), !(!p || n) && v(!0);
44
+ }
45
+ function Y(a) {
46
+ a.preventDefault(), v(!1), !(!p || n) && R(Array.from(a.dataTransfer.files));
47
+ }
48
+ async function B(a) {
49
+ if (d) {
50
+ h((e) => new Map(e).set(a, "uploading")), N((e) => new Map(e).set(a, 0)), m == null || m(a);
51
+ try {
52
+ await d(a, (e) => {
53
+ const s = Math.max(0, Math.min(100, Math.round(e)));
54
+ N((l) => new Map(l).set(a, s)), g == null || g(a, s);
55
+ }), h((e) => new Map(e).set(a, "success")), N((e) => new Map(e).set(a, 100)), _ == null || _(a);
56
+ } catch (e) {
57
+ h((s) => new Map(s).set(a, "error")), f == null || f(a, e);
58
+ }
59
+ }
60
+ }
61
+ function Z(a) {
62
+ c == null || c(u.filter((e, s) => s !== a));
63
+ }
64
+ function F(a) {
65
+ return a < 1024 ? `${a} B` : a < 1024 * 1024 ? `${(a / 1024).toFixed(1)} KB` : `${(a / (1024 * 1024)).toFixed(1)} MB`;
66
+ }
67
+ return /* @__PURE__ */ i(
68
+ "div",
69
+ {
70
+ className: `gcsa-upload${n ? " gcsa-upload--disabled" : ""}${W ? " gcsa-upload--dragging" : ""}${D ? ` ${D}` : ""}`,
71
+ children: [
72
+ /* @__PURE__ */ t(
73
+ "input",
74
+ {
75
+ ref: L,
76
+ type: "file",
77
+ className: "gcsa-upload__native",
78
+ accept: A,
79
+ multiple: w,
80
+ ...H ? { webkitdirectory: "" } : {},
81
+ disabled: n,
82
+ onChange: X
83
+ }
84
+ ),
85
+ /* @__PURE__ */ i(
86
+ "div",
87
+ {
88
+ className: "gcsa-upload__dropzone",
89
+ role: "button",
90
+ tabIndex: 0,
91
+ onClick: b,
92
+ onKeyDown: (a) => {
93
+ (a.key === "Enter" || a.key === " ") && b();
94
+ },
95
+ onDragEnter: z,
96
+ onDragOver: z,
97
+ onDragLeave: () => v(!1),
98
+ onDrop: Y,
99
+ children: [
100
+ /* @__PURE__ */ t("span", { className: "gcsa-upload__icon", "aria-hidden": "true", children: /* @__PURE__ */ t(C, { name: "plus" }) }),
101
+ /* @__PURE__ */ t("span", { className: "gcsa-upload__title", children: q }),
102
+ k ? /* @__PURE__ */ t("p", { className: "gcsa-upload__hint", children: k }) : null
103
+ ]
104
+ }
105
+ ),
106
+ u.length > 0 ? /* @__PURE__ */ t("ul", { className: "gcsa-upload__list", children: u.map((a, e) => /* @__PURE__ */ i("li", { className: "gcsa-upload__item", children: [
107
+ /* @__PURE__ */ t("span", { className: "gcsa-upload__name", children: a.name }),
108
+ /* @__PURE__ */ t("span", { className: "gcsa-upload__size", children: F(a.size) }),
109
+ o.get(a) === "uploading" ? /* @__PURE__ */ i("span", { className: "gcsa-upload__status", role: "status", children: [
110
+ J,
111
+ " ",
112
+ x.get(a) ?? 0,
113
+ "%"
114
+ ] }) : null,
115
+ o.get(a) === "error" ? /* @__PURE__ */ t("span", { className: "gcsa-upload__status gcsa-upload__status--error", role: "alert", children: Q }) : null,
116
+ o.get(a) === "uploading" ? /* @__PURE__ */ t("div", { className: "gcsa-upload__progress", "aria-hidden": "true", children: /* @__PURE__ */ t("span", { style: { width: `${x.get(a) ?? 0}%` } }) }) : null,
117
+ o.get(a) === "error" ? /* @__PURE__ */ t(
118
+ "button",
119
+ {
120
+ type: "button",
121
+ className: "gcsa-upload__retry gcsa-focus-ring",
122
+ disabled: n,
123
+ onClick: () => B(a),
124
+ children: V
125
+ }
126
+ ) : null,
127
+ /* @__PURE__ */ t(
128
+ "button",
129
+ {
130
+ type: "button",
131
+ className: "gcsa-upload__remove gcsa-focus-ring",
132
+ disabled: n,
133
+ "aria-label": r.uploadRemoveFile,
134
+ onClick: () => Z(e),
135
+ children: r.remove
136
+ }
137
+ )
138
+ ] }, `${a.name}-${e}`)) }) : null
139
+ ]
140
+ }
141
+ );
142
+ }
143
+ export {
144
+ sa as GcsaUpload
145
+ };
146
+ //# sourceMappingURL=GcsaUpload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GcsaUpload.js","sources":["../src/GcsaUpload.tsx"],"sourcesContent":["import { useRef, useState } from 'react';\nimport { GcsaIcon } from './GcsaIcon';\nimport { useGcsaLocaleMessages } from './hooks/useGcsaLocale';\n\nexport type GcsaUploadProps = {\n files?: File[];\n accept?: string;\n multiple?: boolean;\n disabled?: boolean;\n buttonLabel?: string;\n hint?: string;\n maxCount?: number;\n maxSize?: number;\n drag?: boolean;\n directory?: boolean;\n dragLabel?: string;\n uploadingLabel?: string;\n uploadErrorLabel?: string;\n upload?: (file: File, onProgress?: (percent: number) => void) => Promise<void> | void;\n retryLabel?: string;\n onProgress?: (file: File, percent: number) => void;\n onUploadStart?: (file: File) => void;\n onUploadSuccess?: (file: File) => void;\n onUploadError?: (file: File, error: unknown) => void;\n className?: string;\n onFilesChange?: (files: File[]) => void;\n};\n\nexport function GcsaUpload({\n files = [],\n accept,\n multiple = false,\n disabled,\n buttonLabel,\n hint,\n maxCount,\n className,\n onFilesChange,\n maxSize,\n drag = false,\n directory = false,\n dragLabel,\n uploadingLabel,\n uploadErrorLabel,\n upload,\n retryLabel,\n onProgress,\n onUploadStart,\n onUploadSuccess,\n onUploadError\n}: GcsaUploadProps) {\n const messages = useGcsaLocaleMessages();\n const resolvedButtonLabel = buttonLabel ?? messages.uploadSelectFile;\n const resolvedDragLabel = dragLabel ?? messages.uploadDragHint;\n const resolvedUploadingLabel = uploadingLabel ?? messages.uploadUploading;\n const resolvedUploadErrorLabel = uploadErrorLabel ?? messages.uploadFailed;\n const resolvedRetryLabel = retryLabel ?? messages.uploadRetry;\n const resolvedHint = hint || (drag ? resolvedDragLabel : undefined);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const [dragging, setDragging] = useState(false);\n const [statuses, setStatuses] = useState<Map<File, 'uploading' | 'success' | 'error'>>(new Map());\n const [progress, setProgress] = useState<Map<File, number>>(new Map());\n\n function openPicker() {\n inputRef.current?.click();\n }\n\n function onNativeChange(event: React.ChangeEvent<HTMLInputElement>) {\n const picked = Array.from(event.target.files ?? []);\n event.target.value = '';\n if (!picked.length) return;\n\n acceptFiles(picked);\n }\n\n function acceptFiles(picked: File[]) {\n const valid = maxSize == null ? picked : picked.filter(file => file.size <= maxSize);\n let next = multiple ? [...files, ...valid] : valid.slice(0, 1);\n if (maxCount != null) next = next.slice(0, maxCount);\n onFilesChange?.(next);\n if (upload) next.filter(file => valid.includes(file)).forEach(uploadFile);\n }\n\n function onDragEnter(event: React.DragEvent<HTMLDivElement>) {\n event.preventDefault();\n if (!drag || disabled) return;\n setDragging(true);\n }\n\n function onDrop(event: React.DragEvent<HTMLDivElement>) {\n event.preventDefault();\n setDragging(false);\n if (!drag || disabled) return;\n acceptFiles(Array.from(event.dataTransfer.files));\n }\n\n async function uploadFile(file: File) {\n if (!upload) return;\n setStatuses(current => new Map(current).set(file, 'uploading'));\n setProgress(current => new Map(current).set(file, 0));\n onUploadStart?.(file);\n try {\n await upload(file, percent => {\n const next = Math.max(0, Math.min(100, Math.round(percent)));\n setProgress(current => new Map(current).set(file, next));\n onProgress?.(file, next);\n });\n setStatuses(current => new Map(current).set(file, 'success'));\n setProgress(current => new Map(current).set(file, 100));\n onUploadSuccess?.(file);\n } catch (error) {\n setStatuses(current => new Map(current).set(file, 'error'));\n onUploadError?.(file, error);\n }\n }\n\n function removeAt(index: number) {\n onFilesChange?.(files.filter((_, i) => i !== index));\n }\n\n function formatSize(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n }\n\n return (\n <div\n className={`gcsa-upload${disabled ? ' gcsa-upload--disabled' : ''}${dragging ? ' gcsa-upload--dragging' : ''}${className ? ` ${className}` : ''}`}\n >\n <input\n ref={inputRef}\n type=\"file\"\n className=\"gcsa-upload__native\"\n accept={accept}\n multiple={multiple}\n {...(directory ? { webkitdirectory: '' } : {})}\n disabled={disabled}\n onChange={onNativeChange}\n />\n <div\n className=\"gcsa-upload__dropzone\"\n role=\"button\"\n tabIndex={0}\n onClick={openPicker}\n onKeyDown={event => {\n if (event.key === 'Enter' || event.key === ' ') openPicker();\n }}\n onDragEnter={onDragEnter}\n onDragOver={onDragEnter}\n onDragLeave={() => setDragging(false)}\n onDrop={onDrop}\n >\n <span className=\"gcsa-upload__icon\" aria-hidden=\"true\">\n <GcsaIcon name=\"plus\" />\n </span>\n <span className=\"gcsa-upload__title\">{resolvedButtonLabel}</span>\n {resolvedHint ? <p className=\"gcsa-upload__hint\">{resolvedHint}</p> : null}\n </div>\n {files.length > 0 ? (\n <ul className=\"gcsa-upload__list\">\n {files.map((file, index) => (\n <li key={`${file.name}-${index}`} className=\"gcsa-upload__item\">\n <span className=\"gcsa-upload__name\">{file.name}</span>\n <span className=\"gcsa-upload__size\">{formatSize(file.size)}</span>\n {statuses.get(file) === 'uploading' ? (\n <span className=\"gcsa-upload__status\" role=\"status\">\n {resolvedUploadingLabel} {progress.get(file) ?? 0}%\n </span>\n ) : null}\n {statuses.get(file) === 'error' ? (\n <span className=\"gcsa-upload__status gcsa-upload__status--error\" role=\"alert\">\n {resolvedUploadErrorLabel}\n </span>\n ) : null}\n {statuses.get(file) === 'uploading' ? (\n <div className=\"gcsa-upload__progress\" aria-hidden=\"true\">\n <span style={{ width: `${progress.get(file) ?? 0}%` }} />\n </div>\n ) : null}\n {statuses.get(file) === 'error' ? (\n <button\n type=\"button\"\n className=\"gcsa-upload__retry gcsa-focus-ring\"\n disabled={disabled}\n onClick={() => uploadFile(file)}\n >\n {resolvedRetryLabel}\n </button>\n ) : null}\n <button\n type=\"button\"\n className=\"gcsa-upload__remove gcsa-focus-ring\"\n disabled={disabled}\n aria-label={messages.uploadRemoveFile}\n onClick={() => removeAt(index)}\n >\n {messages.remove}\n </button>\n </li>\n ))}\n </ul>\n ) : null}\n </div>\n );\n}\n"],"names":["GcsaUpload","files","accept","multiple","disabled","buttonLabel","hint","maxCount","className","onFilesChange","maxSize","drag","directory","dragLabel","uploadingLabel","uploadErrorLabel","upload","retryLabel","onProgress","onUploadStart","onUploadSuccess","onUploadError","messages","useGcsaLocaleMessages","resolvedButtonLabel","resolvedDragLabel","resolvedUploadingLabel","resolvedUploadErrorLabel","resolvedRetryLabel","resolvedHint","inputRef","useRef","dragging","setDragging","useState","statuses","setStatuses","progress","setProgress","openPicker","_a","onNativeChange","event","picked","acceptFiles","valid","file","next","uploadFile","onDragEnter","onDrop","current","percent","error","removeAt","index","_","i","formatSize","bytes","jsxs","jsx","GcsaIcon"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { ReactFormExtendedApi } from '@tanstack/react-form';
2
+ export type GcsaFormValues = Record<string, unknown>;
3
+ /**
4
+ * Form instance used by GcsaForm / GcsaFormField.
5
+ * Validator generics are relaxed so schema-backed forms remain assignable.
6
+ */
7
+ export type GcsaFormApi = ReactFormExtendedApi<GcsaFormValues, any, any, any, any, any, any, any, any, any, any, any>;
@@ -0,0 +1,3 @@
1
+ /** Docs / app may provide this to restore document theme after ConfigProvider unmounts. */
2
+ export declare const GcsaRestoreDocumentThemeContext: import('react').Context<(() => void) | null>;
3
+ export declare const GCSA_RESTORE_DOCUMENT_THEME_KEY: unique symbol;
@@ -0,0 +1,7 @@
1
+ import { createContext as e } from "react";
2
+ const o = e(null), c = Symbol("gcsa-restore-document-theme");
3
+ export {
4
+ c as GCSA_RESTORE_DOCUMENT_THEME_KEY,
5
+ o as GcsaRestoreDocumentThemeContext
6
+ };
7
+ //# sourceMappingURL=useDocumentThemeSync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDocumentThemeSync.js","sources":["../../src/hooks/useDocumentThemeSync.ts"],"sourcesContent":["import { createContext } from 'react';\n\n/** Docs / app may provide this to restore document theme after ConfigProvider unmounts. */\nexport const GcsaRestoreDocumentThemeContext = createContext<(() => void) | null>(null);\n\nexport const GCSA_RESTORE_DOCUMENT_THEME_KEY = Symbol('gcsa-restore-document-theme');\n"],"names":["GcsaRestoreDocumentThemeContext","createContext","GCSA_RESTORE_DOCUMENT_THEME_KEY"],"mappings":";AAGO,MAAMA,IAAkCC,EAAmC,IAAI,GAEzEC,IAAkC,OAAO,6BAA6B;"}
@@ -0,0 +1,5 @@
1
+ import { GcsaButtonSize, GcsaComponentSize } from '@gcsa/console-core';
2
+ export declare const GcsaComponentSizeContext: import('react').Context<GcsaComponentSize>;
3
+ export declare function useGcsaComponentSizeConfig(): GcsaComponentSize;
4
+ export declare function useGcsaComponentSize(propSize?: GcsaComponentSize): GcsaComponentSize;
5
+ export declare function useGcsaButtonSize(propSize?: GcsaButtonSize): GcsaButtonSize;
@@ -0,0 +1,21 @@
1
+ import { useContext as t, createContext as i } from "react";
2
+ import { resolveGcsaButtonSize as c, resolveGcsaComponentSize as s, GCSA_DEFAULT_COMPONENT_SIZE as r } from "@gcsa/console-core";
3
+ const u = i(r);
4
+ function n() {
5
+ return t(u);
6
+ }
7
+ function f(e) {
8
+ const o = n();
9
+ return s(e, o);
10
+ }
11
+ function m(e) {
12
+ const o = n();
13
+ return c(e, o);
14
+ }
15
+ export {
16
+ u as GcsaComponentSizeContext,
17
+ m as useGcsaButtonSize,
18
+ f as useGcsaComponentSize,
19
+ n as useGcsaComponentSizeConfig
20
+ };
21
+ //# sourceMappingURL=useGcsaComponentSize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGcsaComponentSize.js","sources":["../../src/hooks/useGcsaComponentSize.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport {\n GCSA_DEFAULT_COMPONENT_SIZE,\n resolveGcsaButtonSize,\n resolveGcsaComponentSize,\n type GcsaButtonSize,\n type GcsaComponentSize\n} from '@gcsa/console-core';\n\nexport const GcsaComponentSizeContext = createContext<GcsaComponentSize>(GCSA_DEFAULT_COMPONENT_SIZE);\n\nexport function useGcsaComponentSizeConfig(): GcsaComponentSize {\n return useContext(GcsaComponentSizeContext);\n}\n\nexport function useGcsaComponentSize(propSize?: GcsaComponentSize): GcsaComponentSize {\n const configSize = useGcsaComponentSizeConfig();\n return resolveGcsaComponentSize(propSize, configSize);\n}\n\nexport function useGcsaButtonSize(propSize?: GcsaButtonSize): GcsaButtonSize {\n const configSize = useGcsaComponentSizeConfig();\n return resolveGcsaButtonSize(propSize, configSize);\n}\n"],"names":["GcsaComponentSizeContext","createContext","GCSA_DEFAULT_COMPONENT_SIZE","useGcsaComponentSizeConfig","useContext","useGcsaComponentSize","propSize","configSize","resolveGcsaComponentSize","useGcsaButtonSize","resolveGcsaButtonSize"],"mappings":";;AASO,MAAMA,IAA2BC,EAAiCC,CAA2B;AAE7F,SAASC,IAAgD;AAC9D,SAAOC,EAAWJ,CAAwB;AAC5C;AAEO,SAASK,EAAqBC,GAAiD;AACpF,QAAMC,IAAaJ,EAAA;AACnB,SAAOK,EAAyBF,GAAUC,CAAU;AACtD;AAEO,SAASE,EAAkBH,GAA2C;AAC3E,QAAMC,IAAaJ,EAAA;AACnB,SAAOO,EAAsBJ,GAAUC,CAAU;AACnD;"}
@@ -0,0 +1,26 @@
1
+ import { FieldApi } from '@tanstack/react-form';
2
+ /** TanStack FieldApi with relaxed generics for field binding helpers. */
3
+ export type GcsaAnyFieldApi = FieldApi<any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any>;
4
+ export declare function gcsaTextFieldBindings(field: GcsaAnyFieldApi): {
5
+ value: string;
6
+ invalid: boolean;
7
+ onBlur: () => void;
8
+ onChange: (value: string) => void;
9
+ };
10
+ export declare function gcsaBooleanFieldBindings(field: GcsaAnyFieldApi): {
11
+ checked: boolean;
12
+ onCheckedChange: (value: boolean) => void;
13
+ };
14
+ export declare function gcsaRadioFieldBindings(field: GcsaAnyFieldApi): {
15
+ value: string;
16
+ invalid: boolean;
17
+ onValueChange: (value: string) => void;
18
+ };
19
+ export declare function gcsaNumberFieldBindings(field: GcsaAnyFieldApi): {
20
+ value: number | null;
21
+ invalid: boolean;
22
+ onBlur: () => void;
23
+ onValueChange: (value: number | null) => void;
24
+ };
25
+ export declare function gcsaFieldError(field: GcsaAnyFieldApi): string | undefined;
26
+ export declare function gcsaFieldInvalid(field: GcsaAnyFieldApi): boolean;
@@ -0,0 +1,47 @@
1
+ function r(e) {
2
+ const n = e.state.meta.errors[0];
3
+ return {
4
+ value: e.state.value ?? "",
5
+ invalid: !!n,
6
+ onBlur: () => e.handleBlur(),
7
+ onChange: (a) => e.handleChange(a)
8
+ };
9
+ }
10
+ function t(e) {
11
+ return {
12
+ checked: !!e.state.value,
13
+ onCheckedChange: (n) => e.handleChange(n)
14
+ };
15
+ }
16
+ function o(e) {
17
+ const n = e.state.meta.errors[0];
18
+ return {
19
+ value: e.state.value ?? "",
20
+ invalid: !!n,
21
+ onValueChange: (a) => e.handleChange(a)
22
+ };
23
+ }
24
+ function s(e) {
25
+ const n = e.state.meta.errors[0];
26
+ return {
27
+ value: e.state.value,
28
+ invalid: !!n,
29
+ onBlur: () => e.handleBlur(),
30
+ onValueChange: (a) => e.handleChange(a)
31
+ };
32
+ }
33
+ function l(e) {
34
+ return e.state.meta.errors[0];
35
+ }
36
+ function u(e) {
37
+ return e.state.meta.errors.length > 0;
38
+ }
39
+ export {
40
+ t as gcsaBooleanFieldBindings,
41
+ l as gcsaFieldError,
42
+ u as gcsaFieldInvalid,
43
+ s as gcsaNumberFieldBindings,
44
+ o as gcsaRadioFieldBindings,
45
+ r as gcsaTextFieldBindings
46
+ };
47
+ //# sourceMappingURL=useGcsaFormField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGcsaFormField.js","sources":["../../src/hooks/useGcsaFormField.ts"],"sourcesContent":["import type { FieldApi } from '@tanstack/react-form';\n\n/** TanStack FieldApi with relaxed generics for field binding helpers. */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type GcsaAnyFieldApi = FieldApi<any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any>;\n\nexport function gcsaTextFieldBindings(field: GcsaAnyFieldApi) {\n const error = field.state.meta.errors[0];\n return {\n value: (field.state.value as string) ?? '',\n invalid: Boolean(error),\n onBlur: () => field.handleBlur(),\n onChange: (value: string) => field.handleChange(value)\n };\n}\n\nexport function gcsaBooleanFieldBindings(field: GcsaAnyFieldApi) {\n return {\n checked: Boolean(field.state.value),\n onCheckedChange: (value: boolean) => field.handleChange(value)\n };\n}\n\nexport function gcsaRadioFieldBindings(field: GcsaAnyFieldApi) {\n const error = field.state.meta.errors[0];\n return {\n value: (field.state.value as string) ?? '',\n invalid: Boolean(error),\n onValueChange: (value: string) => field.handleChange(value)\n };\n}\n\nexport function gcsaNumberFieldBindings(field: GcsaAnyFieldApi) {\n const error = field.state.meta.errors[0];\n return {\n value: field.state.value as number | null,\n invalid: Boolean(error),\n onBlur: () => field.handleBlur(),\n onValueChange: (value: number | null) => field.handleChange(value)\n };\n}\n\nexport function gcsaFieldError(field: GcsaAnyFieldApi) {\n return field.state.meta.errors[0] as string | undefined;\n}\n\nexport function gcsaFieldInvalid(field: GcsaAnyFieldApi) {\n return field.state.meta.errors.length > 0;\n}\n"],"names":["gcsaTextFieldBindings","field","error","value","gcsaBooleanFieldBindings","gcsaRadioFieldBindings","gcsaNumberFieldBindings","gcsaFieldError","gcsaFieldInvalid"],"mappings":"AAMO,SAASA,EAAsBC,GAAwB;AAC5D,QAAMC,IAAQD,EAAM,MAAM,KAAK,OAAO,CAAC;AACvC,SAAO;AAAA,IACL,OAAQA,EAAM,MAAM,SAAoB;AAAA,IACxC,SAAS,EAAQC;AAAA,IACjB,QAAQ,MAAMD,EAAM,WAAA;AAAA,IACpB,UAAU,CAACE,MAAkBF,EAAM,aAAaE,CAAK;AAAA,EAAA;AAEzD;AAEO,SAASC,EAAyBH,GAAwB;AAC/D,SAAO;AAAA,IACL,SAAS,EAAQA,EAAM,MAAM;AAAA,IAC7B,iBAAiB,CAACE,MAAmBF,EAAM,aAAaE,CAAK;AAAA,EAAA;AAEjE;AAEO,SAASE,EAAuBJ,GAAwB;AAC7D,QAAMC,IAAQD,EAAM,MAAM,KAAK,OAAO,CAAC;AACvC,SAAO;AAAA,IACL,OAAQA,EAAM,MAAM,SAAoB;AAAA,IACxC,SAAS,EAAQC;AAAA,IACjB,eAAe,CAACC,MAAkBF,EAAM,aAAaE,CAAK;AAAA,EAAA;AAE9D;AAEO,SAASG,EAAwBL,GAAwB;AAC9D,QAAMC,IAAQD,EAAM,MAAM,KAAK,OAAO,CAAC;AACvC,SAAO;AAAA,IACL,OAAOA,EAAM,MAAM;AAAA,IACnB,SAAS,EAAQC;AAAA,IACjB,QAAQ,MAAMD,EAAM,WAAA;AAAA,IACpB,eAAe,CAACE,MAAyBF,EAAM,aAAaE,CAAK;AAAA,EAAA;AAErE;AAEO,SAASI,EAAeN,GAAwB;AACrD,SAAOA,EAAM,MAAM,KAAK,OAAO,CAAC;AAClC;AAEO,SAASO,EAAiBP,GAAwB;AACvD,SAAOA,EAAM,MAAM,KAAK,OAAO,SAAS;AAC1C;"}
@@ -0,0 +1,7 @@
1
+ import { ZodObject, ZodTypeAny } from 'zod';
2
+ export declare const GcsaFormSchemaContext: import('react').Context<ZodObject<Record<string, ZodTypeAny>, import('zod').UnknownKeysParam, ZodTypeAny, {
3
+ [x: string]: any;
4
+ }, {
5
+ [x: string]: any;
6
+ }> | null>;
7
+ export declare const GCSA_FORM_SCHEMA_KEY: unique symbol;
@@ -0,0 +1,6 @@
1
+ import { createContext as t } from "react";
2
+ const e = t(null);
3
+ export {
4
+ e as GcsaFormSchemaContext
5
+ };
6
+ //# sourceMappingURL=useGcsaFormSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGcsaFormSchema.js","sources":["../../src/hooks/useGcsaFormSchema.ts"],"sourcesContent":["import { createContext } from 'react';\nimport type { ZodObject, ZodTypeAny } from 'zod';\n\nexport const GcsaFormSchemaContext = createContext<ZodObject<Record<string, ZodTypeAny>> | null>(null);\n\nexport const GCSA_FORM_SCHEMA_KEY = Symbol('gcsa-form-schema');\n"],"names":["GcsaFormSchemaContext","createContext"],"mappings":";AAGO,MAAMA,IAAwBC,EAA4D,IAAI;"}
@@ -0,0 +1,4 @@
1
+ import { GcsaConsoleLocale } from '@gcsa/console-core';
2
+ export declare const GcsaLocaleContext: import('react').Context<GcsaConsoleLocale>;
3
+ export declare function useGcsaLocale(): GcsaConsoleLocale;
4
+ export declare function useGcsaLocaleMessages(): import('@gcsa/console-core').GcsaConsoleLocaleMessages;
@@ -0,0 +1,15 @@
1
+ import { useContext as e, createContext as t } from "react";
2
+ import { getGcsaLocaleMessages as o, GCSA_DEFAULT_LOCALE as s } from "@gcsa/console-core";
3
+ const c = t(s);
4
+ function a() {
5
+ return e(c);
6
+ }
7
+ function u() {
8
+ return o(a());
9
+ }
10
+ export {
11
+ c as GcsaLocaleContext,
12
+ a as useGcsaLocale,
13
+ u as useGcsaLocaleMessages
14
+ };
15
+ //# sourceMappingURL=useGcsaLocale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGcsaLocale.js","sources":["../../src/hooks/useGcsaLocale.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport {\n GCSA_DEFAULT_LOCALE,\n getGcsaLocaleMessages,\n type GcsaConsoleLocale\n} from '@gcsa/console-core';\n\nexport const GcsaLocaleContext = createContext<GcsaConsoleLocale>(GCSA_DEFAULT_LOCALE);\n\nexport function useGcsaLocale(): GcsaConsoleLocale {\n return useContext(GcsaLocaleContext);\n}\n\nexport function useGcsaLocaleMessages() {\n return getGcsaLocaleMessages(useGcsaLocale());\n}\n"],"names":["GcsaLocaleContext","createContext","GCSA_DEFAULT_LOCALE","useGcsaLocale","useContext","useGcsaLocaleMessages","getGcsaLocaleMessages"],"mappings":";;AAOO,MAAMA,IAAoBC,EAAiCC,CAAmB;AAE9E,SAASC,IAAmC;AACjD,SAAOC,EAAWJ,CAAiB;AACrC;AAEO,SAASK,IAAwB;AACtC,SAAOC,EAAsBH,GAAe;AAC9C;"}
@@ -0,0 +1,6 @@
1
+ /** Select / Dropdown / Popover 等:打开时领取高于当前 overlay 的 z-index */
2
+ export declare function useGcsaPopupZIndex(): {
3
+ zIndex: number | undefined;
4
+ claimZIndex: () => number;
5
+ onOpenChange: (open: boolean) => void;
6
+ };
@@ -0,0 +1,18 @@
1
+ import { useState as x, useCallback as o } from "react";
2
+ import { useGcsaZIndex as u } from "./useGcsaZIndex.js";
3
+ function p() {
4
+ const { nextZIndex: t } = u(), [s, c] = x(), e = o(() => {
5
+ const n = t();
6
+ return c(n), n;
7
+ }, [t]), r = o(
8
+ (n) => {
9
+ n && e();
10
+ },
11
+ [e]
12
+ );
13
+ return { zIndex: s, claimZIndex: e, onOpenChange: r };
14
+ }
15
+ export {
16
+ p as useGcsaPopupZIndex
17
+ };
18
+ //# sourceMappingURL=useGcsaPopupZIndex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGcsaPopupZIndex.js","sources":["../../src/hooks/useGcsaPopupZIndex.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\nimport { useGcsaZIndex } from './useGcsaZIndex';\n\n/** Select / Dropdown / Popover 等:打开时领取高于当前 overlay 的 z-index */\nexport function useGcsaPopupZIndex() {\n const { nextZIndex } = useGcsaZIndex();\n const [zIndex, setZIndex] = useState<number>();\n\n const claimZIndex = useCallback(() => {\n const next = nextZIndex();\n setZIndex(next);\n return next;\n }, [nextZIndex]);\n\n const onOpenChange = useCallback(\n (open: boolean) => {\n if (open) claimZIndex();\n },\n [claimZIndex]\n );\n\n return { zIndex, claimZIndex, onOpenChange };\n}\n"],"names":["useGcsaPopupZIndex","nextZIndex","useGcsaZIndex","zIndex","setZIndex","useState","claimZIndex","useCallback","next","onOpenChange","open"],"mappings":";;AAIO,SAASA,IAAqB;AACnC,QAAM,EAAE,YAAAC,EAAA,IAAeC,EAAA,GACjB,CAACC,GAAQC,CAAS,IAAIC,EAAA,GAEtBC,IAAcC,EAAY,MAAM;AACpC,UAAMC,IAAOP,EAAA;AACb,WAAAG,EAAUI,CAAI,GACPA;AAAA,EACT,GAAG,CAACP,CAAU,CAAC,GAETQ,IAAeF;AAAA,IACnB,CAACG,MAAkB;AACjB,MAAIA,KAAMJ,EAAA;AAAA,IACZ;AAAA,IACA,CAACA,CAAW;AAAA,EAAA;AAGd,SAAO,EAAE,QAAAH,GAAQ,aAAAG,GAAa,cAAAG,EAAA;AAChC;"}
@@ -0,0 +1,16 @@
1
+ export type GcsaTextCountFormatter = (info: {
2
+ value: string;
3
+ count: number;
4
+ maxLength?: number;
5
+ }) => string;
6
+ export declare function useGcsaTextCount(options: {
7
+ modelValue: string;
8
+ maxLength?: number;
9
+ showCount?: boolean;
10
+ formatter?: GcsaTextCountFormatter;
11
+ }): {
12
+ showCounter: boolean;
13
+ count: number;
14
+ countText: string;
15
+ isNearLimit: boolean;
16
+ };
@@ -0,0 +1,16 @@
1
+ import { useMemo as a } from "react";
2
+ function f(e) {
3
+ var n;
4
+ const m = a(() => {
5
+ const u = e.maxLength, r = e.showCount;
6
+ return r === !0 ? !0 : r === !1 ? !1 : u != null;
7
+ }, [e.maxLength, e.showCount]), t = ((n = e.modelValue) == null ? void 0 : n.length) ?? 0, l = a(() => {
8
+ const u = e.modelValue ?? "", r = e.maxLength;
9
+ return e.formatter ? e.formatter({ value: u, count: t, maxLength: r }) : r != null ? `${t}/${r}` : String(t);
10
+ }, [e.modelValue, e.formatter, e.maxLength, t]), c = e.maxLength != null && t >= e.maxLength * 0.9;
11
+ return { showCounter: m, count: t, countText: l, isNearLimit: c };
12
+ }
13
+ export {
14
+ f as useGcsaTextCount
15
+ };
16
+ //# sourceMappingURL=useGcsaTextCount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGcsaTextCount.js","sources":["../../src/hooks/useGcsaTextCount.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nexport type GcsaTextCountFormatter = (info: {\n value: string;\n count: number;\n maxLength?: number;\n}) => string;\n\nexport function useGcsaTextCount(options: {\n modelValue: string;\n maxLength?: number;\n showCount?: boolean;\n formatter?: GcsaTextCountFormatter;\n}) {\n const showCounter = useMemo(() => {\n const max = options.maxLength;\n const explicit = options.showCount;\n\n if (explicit === true) return true;\n if (explicit === false) return false;\n return max != null;\n }, [options.maxLength, options.showCount]);\n\n const count = options.modelValue?.length ?? 0;\n\n const countText = useMemo(() => {\n const value = options.modelValue ?? '';\n const max = options.maxLength;\n\n if (options.formatter) {\n return options.formatter({ value, count, maxLength: max });\n }\n\n if (max != null) {\n return `${count}/${max}`;\n }\n\n return String(count);\n }, [options.modelValue, options.formatter, options.maxLength, count]);\n\n const isNearLimit = options.maxLength != null && count >= options.maxLength * 0.9;\n\n return { showCounter, count, countText, isNearLimit };\n}\n"],"names":["useGcsaTextCount","options","showCounter","useMemo","max","explicit","count","_a","countText","value","isNearLimit"],"mappings":";AAQO,SAASA,EAAiBC,GAK9B;;AACD,QAAMC,IAAcC,EAAQ,MAAM;AAChC,UAAMC,IAAMH,EAAQ,WACdI,IAAWJ,EAAQ;AAEzB,WAAII,MAAa,KAAa,KAC1BA,MAAa,KAAc,KACxBD,KAAO;AAAA,EAChB,GAAG,CAACH,EAAQ,WAAWA,EAAQ,SAAS,CAAC,GAEnCK,MAAQC,IAAAN,EAAQ,eAAR,gBAAAM,EAAoB,WAAU,GAEtCC,IAAYL,EAAQ,MAAM;AAC9B,UAAMM,IAAQR,EAAQ,cAAc,IAC9BG,IAAMH,EAAQ;AAEpB,WAAIA,EAAQ,YACHA,EAAQ,UAAU,EAAE,OAAAQ,GAAO,OAAAH,GAAO,WAAWF,GAAK,IAGvDA,KAAO,OACF,GAAGE,CAAK,IAAIF,CAAG,KAGjB,OAAOE,CAAK;AAAA,EACrB,GAAG,CAACL,EAAQ,YAAYA,EAAQ,WAAWA,EAAQ,WAAWK,CAAK,CAAC,GAE9DI,IAAcT,EAAQ,aAAa,QAAQK,KAASL,EAAQ,YAAY;AAE9E,SAAO,EAAE,aAAAC,GAAa,OAAAI,GAAO,WAAAE,GAAW,aAAAE,EAAA;AAC1C;"}
@@ -0,0 +1,7 @@
1
+ import { GcsaConsoleTheme } from '@gcsa/console-core';
2
+ import { GcsaMessageApi } from './useMessage';
3
+ export declare const GcsaMessageContext: import('react').Context<GcsaMessageApi | null>;
4
+ export declare const GcsaThemeContext: import('react').Context<GcsaConsoleTheme>;
5
+ export declare const GcsaConfigProviderContext: import('react').Context<boolean>;
6
+ export declare function useGcsaMessage(): GcsaMessageApi;
7
+ export declare function useGcsaTheme(): GcsaConsoleTheme;
@@ -0,0 +1,19 @@
1
+ import { createContext as e, useContext as t } from "react";
2
+ const n = e(null), o = e("dark"), a = e(!1);
3
+ function c() {
4
+ const s = t(n);
5
+ if (!s)
6
+ throw new Error("useGcsaMessage must be used within GcsaConfigProvider");
7
+ return s;
8
+ }
9
+ function i() {
10
+ return t(o);
11
+ }
12
+ export {
13
+ a as GcsaConfigProviderContext,
14
+ n as GcsaMessageContext,
15
+ o as GcsaThemeContext,
16
+ c as useGcsaMessage,
17
+ i as useGcsaTheme
18
+ };
19
+ //# sourceMappingURL=useGcsaTheme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGcsaTheme.js","sources":["../../src/hooks/useGcsaTheme.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { GcsaConsoleTheme } from '@gcsa/console-core';\nimport type { GcsaMessageApi } from './useMessage';\n\nexport const GcsaMessageContext = createContext<GcsaMessageApi | null>(null);\nexport const GcsaThemeContext = createContext<GcsaConsoleTheme>('dark');\nexport const GcsaConfigProviderContext = createContext(false);\n\nexport function useGcsaMessage(): GcsaMessageApi {\n const api = useContext(GcsaMessageContext);\n if (!api) {\n throw new Error('useGcsaMessage must be used within GcsaConfigProvider');\n }\n return api;\n}\n\nexport function useGcsaTheme(): GcsaConsoleTheme {\n return useContext(GcsaThemeContext);\n}\n"],"names":["GcsaMessageContext","createContext","GcsaThemeContext","GcsaConfigProviderContext","useGcsaMessage","api","useContext","useGcsaTheme"],"mappings":";AAIO,MAAMA,IAAqBC,EAAqC,IAAI,GAC9DC,IAAmBD,EAAgC,MAAM,GACzDE,IAA4BF,EAAc,EAAK;AAErD,SAASG,IAAiC;AAC/C,QAAMC,IAAMC,EAAWN,CAAkB;AACzC,MAAI,CAACK;AACH,UAAM,IAAI,MAAM,uDAAuD;AAEzE,SAAOA;AACT;AAEO,SAASE,IAAiC;AAC/C,SAAOD,EAAWJ,CAAgB;AACpC;"}
@@ -0,0 +1,13 @@
1
+ export type GcsaZIndexApi = {
2
+ next: () => number;
3
+ };
4
+ export declare const GcsaZIndexContext: import('react').Context<GcsaZIndexApi | null>;
5
+ export declare function readToastZIndex(): number;
6
+ export declare function createGcsaZIndexApi(initial?: number): GcsaZIndexApi;
7
+ /**
8
+ * 与 Vue `useGcsaZIndex` 同职责:从 ConfigProvider 的共享计数器领取下一层 z-index。
9
+ * `nextZIndex` 引用稳定,避免 overlay 在每次父级重渲染时重复抢占层级。
10
+ */
11
+ export declare function useGcsaZIndex(): {
12
+ nextZIndex: () => number;
13
+ };
@@ -0,0 +1,37 @@
1
+ import { useContext as i, useCallback as c, createContext as d } from "react";
2
+ const m = d(null), o = 2e3, l = 1300, a = 2;
3
+ function s(e, t) {
4
+ if (typeof document > "u") return t;
5
+ const n = getComputedStyle(document.documentElement).getPropertyValue(e).trim(), r = Number.parseInt(n, 10);
6
+ return Number.isFinite(r) ? r : t;
7
+ }
8
+ function p() {
9
+ const e = s("--gcsa-z-toast", Number.NaN), t = s("--z-overlay-toast", Number.NaN), n = [e, t, l].filter((r) => Number.isFinite(r));
10
+ return Math.max(...n);
11
+ }
12
+ function x() {
13
+ if (typeof document > "u") return o;
14
+ const e = document.documentElement, t = getComputedStyle(e).getPropertyValue("--gcsa-z-index-initial").trim(), n = Number.parseInt(t, 10);
15
+ if (Number.isFinite(n)) return n;
16
+ const r = getComputedStyle(e).getPropertyValue("--gcsa-z-modal").trim(), u = Number.parseInt(r, 10);
17
+ return Number.isFinite(u) ? u : o;
18
+ }
19
+ function N(e) {
20
+ let t = e ?? x();
21
+ return {
22
+ next() {
23
+ return t += a, t;
24
+ }
25
+ };
26
+ }
27
+ function f() {
28
+ const e = i(m);
29
+ return { nextZIndex: c(() => (e == null ? void 0 : e.next()) ?? o + a, [e]) };
30
+ }
31
+ export {
32
+ m as GcsaZIndexContext,
33
+ N as createGcsaZIndexApi,
34
+ p as readToastZIndex,
35
+ f as useGcsaZIndex
36
+ };
37
+ //# sourceMappingURL=useGcsaZIndex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGcsaZIndex.js","sources":["../../src/hooks/useGcsaZIndex.ts"],"sourcesContent":["import { createContext, useCallback, useContext } from 'react';\n\nexport type GcsaZIndexApi = {\n next: () => number;\n};\n\nexport const GcsaZIndexContext = createContext<GcsaZIndexApi | null>(null);\n\nconst FALLBACK_INITIAL = 2000;\nconst FALLBACK_TOAST = 1300;\nconst Z_INDEX_STEP = 2;\n\nfunction readCssZIndex(token: string, fallback: number): number {\n if (typeof document === 'undefined') return fallback;\n const raw = getComputedStyle(document.documentElement).getPropertyValue(token).trim();\n const parsed = Number.parseInt(raw, 10);\n return Number.isFinite(parsed) ? parsed : fallback;\n}\n\nexport function readToastZIndex(): number {\n const toast = readCssZIndex('--gcsa-z-toast', Number.NaN);\n const overlay = readCssZIndex('--z-overlay-toast', Number.NaN);\n const candidates = [toast, overlay, FALLBACK_TOAST].filter(value => Number.isFinite(value));\n return Math.max(...candidates);\n}\n\nfunction readInitialZIndex(): number {\n if (typeof document === 'undefined') return FALLBACK_INITIAL;\n const root = document.documentElement;\n const initial = getComputedStyle(root).getPropertyValue('--gcsa-z-index-initial').trim();\n const parsedInitial = Number.parseInt(initial, 10);\n if (Number.isFinite(parsedInitial)) return parsedInitial;\n const modal = getComputedStyle(root).getPropertyValue('--gcsa-z-modal').trim();\n const parsedModal = Number.parseInt(modal, 10);\n return Number.isFinite(parsedModal) ? parsedModal : FALLBACK_INITIAL;\n}\n\nexport function createGcsaZIndexApi(initial?: number): GcsaZIndexApi {\n let current = initial ?? readInitialZIndex();\n return {\n next() {\n current += Z_INDEX_STEP;\n return current;\n }\n };\n}\n\n/**\n * 与 Vue `useGcsaZIndex` 同职责:从 ConfigProvider 的共享计数器领取下一层 z-index。\n * `nextZIndex` 引用稳定,避免 overlay 在每次父级重渲染时重复抢占层级。\n */\nexport function useGcsaZIndex() {\n const api = useContext(GcsaZIndexContext);\n\n const nextZIndex = useCallback(() => {\n return api?.next() ?? FALLBACK_INITIAL + Z_INDEX_STEP;\n }, [api]);\n\n return { nextZIndex };\n}\n"],"names":["GcsaZIndexContext","createContext","FALLBACK_INITIAL","FALLBACK_TOAST","Z_INDEX_STEP","readCssZIndex","token","fallback","raw","parsed","readToastZIndex","toast","overlay","candidates","value","readInitialZIndex","root","initial","parsedInitial","modal","parsedModal","createGcsaZIndexApi","current","useGcsaZIndex","api","useContext","useCallback"],"mappings":";AAMO,MAAMA,IAAoBC,EAAoC,IAAI,GAEnEC,IAAmB,KACnBC,IAAiB,MACjBC,IAAe;AAErB,SAASC,EAAcC,GAAeC,GAA0B;AAC9D,MAAI,OAAO,WAAa,IAAa,QAAOA;AAC5C,QAAMC,IAAM,iBAAiB,SAAS,eAAe,EAAE,iBAAiBF,CAAK,EAAE,KAAA,GACzEG,IAAS,OAAO,SAASD,GAAK,EAAE;AACtC,SAAO,OAAO,SAASC,CAAM,IAAIA,IAASF;AAC5C;AAEO,SAASG,IAA0B;AACxC,QAAMC,IAAQN,EAAc,kBAAkB,OAAO,GAAG,GAClDO,IAAUP,EAAc,qBAAqB,OAAO,GAAG,GACvDQ,IAAa,CAACF,GAAOC,GAAST,CAAc,EAAE,OAAO,CAAAW,MAAS,OAAO,SAASA,CAAK,CAAC;AAC1F,SAAO,KAAK,IAAI,GAAGD,CAAU;AAC/B;AAEA,SAASE,IAA4B;AACnC,MAAI,OAAO,WAAa,IAAa,QAAOb;AAC5C,QAAMc,IAAO,SAAS,iBAChBC,IAAU,iBAAiBD,CAAI,EAAE,iBAAiB,wBAAwB,EAAE,KAAA,GAC5EE,IAAgB,OAAO,SAASD,GAAS,EAAE;AACjD,MAAI,OAAO,SAASC,CAAa,EAAG,QAAOA;AAC3C,QAAMC,IAAQ,iBAAiBH,CAAI,EAAE,iBAAiB,gBAAgB,EAAE,KAAA,GAClEI,IAAc,OAAO,SAASD,GAAO,EAAE;AAC7C,SAAO,OAAO,SAASC,CAAW,IAAIA,IAAclB;AACtD;AAEO,SAASmB,EAAoBJ,GAAiC;AACnE,MAAIK,IAAUL,KAAWF,EAAA;AACzB,SAAO;AAAA,IACL,OAAO;AACL,aAAAO,KAAWlB,GACJkB;AAAA,IACT;AAAA,EAAA;AAEJ;AAMO,SAASC,IAAgB;AAC9B,QAAMC,IAAMC,EAAWzB,CAAiB;AAMxC,SAAO,EAAE,YAJU0B,EAAY,OACtBF,KAAA,gBAAAA,EAAK,WAAUtB,IAAmBE,GACxC,CAACoB,CAAG,CAAC,EAEC;AACX;"}
@@ -0,0 +1,6 @@
1
+ export type GcsaMessageApi = {
2
+ success: (message: string) => void;
3
+ error: (message: string) => void;
4
+ info: (message: string) => void;
5
+ };
6
+ export declare const GCSA_MESSAGE_KEY: unique symbol;