shad-m 1.0.2 → 1.0.3

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 (613) hide show
  1. package/dist/assets/Animation/index.js +180 -0
  2. package/dist/assets/Animation/index.js.map +1 -0
  3. package/dist/assets/Animation/index.mjs +79 -0
  4. package/dist/assets/Animation/index.mjs.map +1 -0
  5. package/dist/assets/Icon/index.js +2102 -0
  6. package/dist/assets/Icon/index.js.map +1 -0
  7. package/dist/assets/Icon/index.mjs +421 -0
  8. package/dist/assets/Icon/index.mjs.map +1 -0
  9. package/dist/assets/Image/index.js +755 -0
  10. package/dist/assets/Image/index.js.map +1 -0
  11. package/dist/assets/Image/index.mjs +150 -0
  12. package/dist/assets/Image/index.mjs.map +1 -0
  13. package/dist/common/display/countdown.js +68 -0
  14. package/dist/common/display/countdown.js.map +1 -0
  15. package/dist/common/display/countdown.mjs +46 -0
  16. package/dist/common/display/countdown.mjs.map +1 -0
  17. package/dist/common/display/display-field-group.js +91 -0
  18. package/dist/common/display/display-field-group.js.map +1 -0
  19. package/dist/common/display/display-field-group.mjs +89 -0
  20. package/dist/common/display/display-field-group.mjs.map +1 -0
  21. package/dist/common/display/display-field.js +46 -0
  22. package/dist/common/display/display-field.js.map +1 -0
  23. package/dist/common/display/display-field.mjs +40 -0
  24. package/dist/common/display/display-field.mjs.map +1 -0
  25. package/dist/common/display/display-html-string.js +52 -0
  26. package/dist/common/display/display-html-string.js.map +1 -0
  27. package/dist/common/display/display-html-string.mjs +30 -0
  28. package/dist/common/display/display-html-string.mjs.map +1 -0
  29. package/dist/common/display/index.js +59 -0
  30. package/dist/common/display/index.js.map +1 -0
  31. package/dist/common/display/index.mjs +10 -0
  32. package/dist/common/display/index.mjs.map +1 -0
  33. package/dist/common/display/page-breadcrumb.js +43 -0
  34. package/dist/common/display/page-breadcrumb.js.map +1 -0
  35. package/dist/common/display/page-breadcrumb.mjs +37 -0
  36. package/dist/common/display/page-breadcrumb.mjs.map +1 -0
  37. package/dist/common/display/page-v2.js +58 -0
  38. package/dist/common/display/page-v2.js.map +1 -0
  39. package/dist/common/display/page-v2.mjs +20 -0
  40. package/dist/common/display/page-v2.mjs.map +1 -0
  41. package/dist/common/display/page.js +155 -0
  42. package/dist/common/display/page.js.map +1 -0
  43. package/dist/common/display/page.mjs +138 -0
  44. package/dist/common/display/page.mjs.map +1 -0
  45. package/dist/common/display/score-meter.js +161 -0
  46. package/dist/common/display/score-meter.js.map +1 -0
  47. package/dist/common/display/score-meter.mjs +140 -0
  48. package/dist/common/display/score-meter.mjs.map +1 -0
  49. package/dist/common/display/sidebar/app-sidebar.js +114 -0
  50. package/dist/common/display/sidebar/app-sidebar.js.map +1 -0
  51. package/dist/common/display/sidebar/app-sidebar.mjs +92 -0
  52. package/dist/common/display/sidebar/app-sidebar.mjs.map +1 -0
  53. package/dist/common/display/sidebar/index.js +89 -0
  54. package/dist/common/display/sidebar/index.js.map +1 -0
  55. package/dist/common/display/sidebar/index.mjs +81 -0
  56. package/dist/common/display/sidebar/index.mjs.map +1 -0
  57. package/dist/common/display/sidebar/nav-main.js +406 -0
  58. package/dist/common/display/sidebar/nav-main.js.map +1 -0
  59. package/dist/common/display/sidebar/nav-main.mjs +400 -0
  60. package/dist/common/display/sidebar/nav-main.mjs.map +1 -0
  61. package/dist/common/display/sidebar/sidebar-sheet.js +140 -0
  62. package/dist/common/display/sidebar/sidebar-sheet.js.map +1 -0
  63. package/dist/common/display/sidebar/sidebar-sheet.mjs +118 -0
  64. package/dist/common/display/sidebar/sidebar-sheet.mjs.map +1 -0
  65. package/dist/common/display/sidebar/types.js +4 -0
  66. package/dist/common/display/sidebar/types.js.map +1 -0
  67. package/dist/common/display/sidebar/types.mjs +3 -0
  68. package/dist/common/display/sidebar/types.mjs.map +1 -0
  69. package/dist/common/display/status-state.js +97 -0
  70. package/dist/common/display/status-state.js.map +1 -0
  71. package/dist/common/display/status-state.mjs +88 -0
  72. package/dist/common/display/status-state.mjs.map +1 -0
  73. package/dist/common/forms/auto-form.js +101 -0
  74. package/dist/common/forms/auto-form.js.map +1 -0
  75. package/dist/common/forms/auto-form.mjs +78 -0
  76. package/dist/common/forms/auto-form.mjs.map +1 -0
  77. package/dist/common/forms/form-field.js +58 -0
  78. package/dist/common/forms/form-field.js.map +1 -0
  79. package/dist/common/forms/form-field.mjs +56 -0
  80. package/dist/common/forms/form-field.mjs.map +1 -0
  81. package/dist/common/forms/form-input-field.js +64 -0
  82. package/dist/common/forms/form-input-field.js.map +1 -0
  83. package/dist/common/forms/form-input-field.mjs +62 -0
  84. package/dist/common/forms/form-input-field.mjs.map +1 -0
  85. package/dist/common/forms/index.js +22 -0
  86. package/dist/common/forms/index.js.map +1 -0
  87. package/dist/common/forms/index.mjs +5 -0
  88. package/dist/common/forms/index.mjs.map +1 -0
  89. package/dist/common/forms/switch-field.js +106 -0
  90. package/dist/common/forms/switch-field.js.map +1 -0
  91. package/dist/common/forms/switch-field.mjs +104 -0
  92. package/dist/common/forms/switch-field.mjs.map +1 -0
  93. package/dist/common/interactive/alert-dialog-wrapper.js +141 -0
  94. package/dist/common/interactive/alert-dialog-wrapper.js.map +1 -0
  95. package/dist/common/interactive/alert-dialog-wrapper.mjs +119 -0
  96. package/dist/common/interactive/alert-dialog-wrapper.mjs.map +1 -0
  97. package/dist/common/interactive/autocomplete.js +178 -0
  98. package/dist/common/interactive/autocomplete.js.map +1 -0
  99. package/dist/common/interactive/autocomplete.mjs +157 -0
  100. package/dist/common/interactive/autocomplete.mjs.map +1 -0
  101. package/dist/common/interactive/copy-tooltip.js +152 -0
  102. package/dist/common/interactive/copy-tooltip.js.map +1 -0
  103. package/dist/common/interactive/copy-tooltip.mjs +143 -0
  104. package/dist/common/interactive/copy-tooltip.mjs.map +1 -0
  105. package/dist/common/interactive/date-field.js +303 -0
  106. package/dist/common/interactive/date-field.js.map +1 -0
  107. package/dist/common/interactive/date-field.mjs +281 -0
  108. package/dist/common/interactive/date-field.mjs.map +1 -0
  109. package/dist/common/interactive/date-input/date-input.js +68 -0
  110. package/dist/common/interactive/date-input/date-input.js.map +1 -0
  111. package/dist/common/interactive/date-input/date-input.mjs +62 -0
  112. package/dist/common/interactive/date-input/date-input.mjs.map +1 -0
  113. package/dist/common/interactive/date-input/index.js +17 -0
  114. package/dist/common/interactive/date-input/index.js.map +1 -0
  115. package/dist/common/interactive/date-input/index.mjs +4 -0
  116. package/dist/common/interactive/date-input/index.mjs.map +1 -0
  117. package/dist/common/interactive/date-input/types.js +4 -0
  118. package/dist/common/interactive/date-input/types.js.map +1 -0
  119. package/dist/common/interactive/date-input/types.mjs +3 -0
  120. package/dist/common/interactive/date-input/types.mjs.map +1 -0
  121. package/dist/common/interactive/date-input/use-typed-date.js +478 -0
  122. package/dist/common/interactive/date-input/use-typed-date.js.map +1 -0
  123. package/dist/common/interactive/date-input/use-typed-date.mjs +476 -0
  124. package/dist/common/interactive/date-input/use-typed-date.mjs.map +1 -0
  125. package/dist/common/interactive/date-input/utils.js +34 -0
  126. package/dist/common/interactive/date-input/utils.js.map +1 -0
  127. package/dist/common/interactive/date-input/utils.mjs +29 -0
  128. package/dist/common/interactive/date-input/utils.mjs.map +1 -0
  129. package/dist/common/interactive/date-picker.js +616 -0
  130. package/dist/common/interactive/date-picker.js.map +1 -0
  131. package/dist/common/interactive/date-picker.mjs +594 -0
  132. package/dist/common/interactive/date-picker.mjs.map +1 -0
  133. package/dist/common/interactive/date-range-input/date-range-input.js +82 -0
  134. package/dist/common/interactive/date-range-input/date-range-input.js.map +1 -0
  135. package/dist/common/interactive/date-range-input/date-range-input.mjs +76 -0
  136. package/dist/common/interactive/date-range-input/date-range-input.mjs.map +1 -0
  137. package/dist/common/interactive/date-range-input/index.js +12 -0
  138. package/dist/common/interactive/date-range-input/index.js.map +1 -0
  139. package/dist/common/interactive/date-range-input/index.mjs +3 -0
  140. package/dist/common/interactive/date-range-input/index.mjs.map +1 -0
  141. package/dist/common/interactive/date-range-input/types.js +4 -0
  142. package/dist/common/interactive/date-range-input/types.js.map +1 -0
  143. package/dist/common/interactive/date-range-input/types.mjs +3 -0
  144. package/dist/common/interactive/date-range-input/types.mjs.map +1 -0
  145. package/dist/common/interactive/date-range-input/use-typed-date-range.js +602 -0
  146. package/dist/common/interactive/date-range-input/use-typed-date-range.js.map +1 -0
  147. package/dist/common/interactive/date-range-input/use-typed-date-range.mjs +600 -0
  148. package/dist/common/interactive/date-range-input/use-typed-date-range.mjs.map +1 -0
  149. package/dist/common/interactive/date-time-picker.js +215 -0
  150. package/dist/common/interactive/date-time-picker.js.map +1 -0
  151. package/dist/common/interactive/date-time-picker.mjs +213 -0
  152. package/dist/common/interactive/date-time-picker.mjs.map +1 -0
  153. package/dist/common/interactive/dialog-wrapper.js +124 -0
  154. package/dist/common/interactive/dialog-wrapper.js.map +1 -0
  155. package/dist/common/interactive/dialog-wrapper.mjs +102 -0
  156. package/dist/common/interactive/dialog-wrapper.mjs.map +1 -0
  157. package/dist/common/interactive/filter.js +287 -0
  158. package/dist/common/interactive/filter.js.map +1 -0
  159. package/dist/common/interactive/filter.mjs +280 -0
  160. package/dist/common/interactive/filter.mjs.map +1 -0
  161. package/dist/common/interactive/index.js +235 -0
  162. package/dist/common/interactive/index.js.map +1 -0
  163. package/dist/common/interactive/index.mjs +24 -0
  164. package/dist/common/interactive/index.mjs.map +1 -0
  165. package/dist/common/interactive/list.js +160 -0
  166. package/dist/common/interactive/list.js.map +1 -0
  167. package/dist/common/interactive/list.mjs +134 -0
  168. package/dist/common/interactive/list.mjs.map +1 -0
  169. package/dist/common/interactive/otp-dialog/index.js +35 -0
  170. package/dist/common/interactive/otp-dialog/index.js.map +1 -0
  171. package/dist/common/interactive/otp-dialog/index.mjs +6 -0
  172. package/dist/common/interactive/otp-dialog/index.mjs.map +1 -0
  173. package/dist/common/interactive/otp-dialog/otp-dialog.js +325 -0
  174. package/dist/common/interactive/otp-dialog/otp-dialog.js.map +1 -0
  175. package/dist/common/interactive/otp-dialog/otp-dialog.mjs +303 -0
  176. package/dist/common/interactive/otp-dialog/otp-dialog.mjs.map +1 -0
  177. package/dist/common/interactive/otp-dialog/reducer.js +40 -0
  178. package/dist/common/interactive/otp-dialog/reducer.js.map +1 -0
  179. package/dist/common/interactive/otp-dialog/reducer.mjs +37 -0
  180. package/dist/common/interactive/otp-dialog/reducer.mjs.map +1 -0
  181. package/dist/common/interactive/otp-dialog/types.js +15 -0
  182. package/dist/common/interactive/otp-dialog/types.js.map +1 -0
  183. package/dist/common/interactive/otp-dialog/types.mjs +13 -0
  184. package/dist/common/interactive/otp-dialog/types.mjs.map +1 -0
  185. package/dist/common/interactive/otp-dialog/utils.js +24 -0
  186. package/dist/common/interactive/otp-dialog/utils.js.map +1 -0
  187. package/dist/common/interactive/otp-dialog/utils.mjs +21 -0
  188. package/dist/common/interactive/otp-dialog/utils.mjs.map +1 -0
  189. package/dist/common/interactive/pagination/PaginationSkeleton.js +51 -0
  190. package/dist/common/interactive/pagination/PaginationSkeleton.js.map +1 -0
  191. package/dist/common/interactive/pagination/PaginationSkeleton.mjs +49 -0
  192. package/dist/common/interactive/pagination/PaginationSkeleton.mjs.map +1 -0
  193. package/dist/common/interactive/pagination/index.js +235 -0
  194. package/dist/common/interactive/pagination/index.js.map +1 -0
  195. package/dist/common/interactive/pagination/index.mjs +223 -0
  196. package/dist/common/interactive/pagination/index.mjs.map +1 -0
  197. package/dist/common/interactive/pagination/usePagination.js +28 -0
  198. package/dist/common/interactive/pagination/usePagination.js.map +1 -0
  199. package/dist/common/interactive/pagination/usePagination.mjs +25 -0
  200. package/dist/common/interactive/pagination/usePagination.mjs.map +1 -0
  201. package/dist/common/interactive/popover-wrapper.js +138 -0
  202. package/dist/common/interactive/popover-wrapper.js.map +1 -0
  203. package/dist/common/interactive/popover-wrapper.mjs +116 -0
  204. package/dist/common/interactive/popover-wrapper.mjs.map +1 -0
  205. package/dist/common/interactive/pressable.js +84 -0
  206. package/dist/common/interactive/pressable.js.map +1 -0
  207. package/dist/common/interactive/pressable.mjs +62 -0
  208. package/dist/common/interactive/pressable.mjs.map +1 -0
  209. package/dist/common/interactive/select/context.js +38 -0
  210. package/dist/common/interactive/select/context.js.map +1 -0
  211. package/dist/common/interactive/select/context.mjs +14 -0
  212. package/dist/common/interactive/select/context.mjs.map +1 -0
  213. package/dist/common/interactive/select/index.js +123 -0
  214. package/dist/common/interactive/select/index.js.map +1 -0
  215. package/dist/common/interactive/select/index.mjs +18 -0
  216. package/dist/common/interactive/select/index.mjs.map +1 -0
  217. package/dist/common/interactive/select/select-body.js +89 -0
  218. package/dist/common/interactive/select/select-body.js.map +1 -0
  219. package/dist/common/interactive/select/select-body.mjs +67 -0
  220. package/dist/common/interactive/select/select-body.mjs.map +1 -0
  221. package/dist/common/interactive/select/select-close.js +38 -0
  222. package/dist/common/interactive/select/select-close.js.map +1 -0
  223. package/dist/common/interactive/select/select-close.mjs +16 -0
  224. package/dist/common/interactive/select/select-close.mjs.map +1 -0
  225. package/dist/common/interactive/select/select-content-auto-layout.js +221 -0
  226. package/dist/common/interactive/select/select-content-auto-layout.js.map +1 -0
  227. package/dist/common/interactive/select/select-content-auto-layout.mjs +199 -0
  228. package/dist/common/interactive/select/select-content-auto-layout.mjs.map +1 -0
  229. package/dist/common/interactive/select/select-content-group-auto-layout.js +411 -0
  230. package/dist/common/interactive/select/select-content-group-auto-layout.js.map +1 -0
  231. package/dist/common/interactive/select/select-content-group-auto-layout.mjs +389 -0
  232. package/dist/common/interactive/select/select-content-group-auto-layout.mjs.map +1 -0
  233. package/dist/common/interactive/select/select-content.js +187 -0
  234. package/dist/common/interactive/select/select-content.js.map +1 -0
  235. package/dist/common/interactive/select/select-content.mjs +165 -0
  236. package/dist/common/interactive/select/select-content.mjs.map +1 -0
  237. package/dist/common/interactive/select/select-footer.js +82 -0
  238. package/dist/common/interactive/select/select-footer.js.map +1 -0
  239. package/dist/common/interactive/select/select-footer.mjs +60 -0
  240. package/dist/common/interactive/select/select-footer.mjs.map +1 -0
  241. package/dist/common/interactive/select/select-item.js +214 -0
  242. package/dist/common/interactive/select/select-item.js.map +1 -0
  243. package/dist/common/interactive/select/select-item.mjs +191 -0
  244. package/dist/common/interactive/select/select-item.mjs.map +1 -0
  245. package/dist/common/interactive/select/select-layout.js +66 -0
  246. package/dist/common/interactive/select/select-layout.js.map +1 -0
  247. package/dist/common/interactive/select/select-layout.mjs +41 -0
  248. package/dist/common/interactive/select/select-layout.mjs.map +1 -0
  249. package/dist/common/interactive/select/select-search.js +55 -0
  250. package/dist/common/interactive/select/select-search.js.map +1 -0
  251. package/dist/common/interactive/select/select-search.mjs +33 -0
  252. package/dist/common/interactive/select/select-search.mjs.map +1 -0
  253. package/dist/common/interactive/select/select-states.js +57 -0
  254. package/dist/common/interactive/select/select-states.js.map +1 -0
  255. package/dist/common/interactive/select/select-states.mjs +34 -0
  256. package/dist/common/interactive/select/select-states.mjs.map +1 -0
  257. package/dist/common/interactive/select/select-trigger.js +310 -0
  258. package/dist/common/interactive/select/select-trigger.js.map +1 -0
  259. package/dist/common/interactive/select/select-trigger.mjs +286 -0
  260. package/dist/common/interactive/select/select-trigger.mjs.map +1 -0
  261. package/dist/common/interactive/select/select-value.js +52 -0
  262. package/dist/common/interactive/select/select-value.js.map +1 -0
  263. package/dist/common/interactive/select/select-value.mjs +30 -0
  264. package/dist/common/interactive/select/select-value.mjs.map +1 -0
  265. package/dist/common/interactive/select/select.js +184 -0
  266. package/dist/common/interactive/select/select.js.map +1 -0
  267. package/dist/common/interactive/select/select.mjs +162 -0
  268. package/dist/common/interactive/select/select.mjs.map +1 -0
  269. package/dist/common/interactive/select/types.js +4 -0
  270. package/dist/common/interactive/select/types.js.map +1 -0
  271. package/dist/common/interactive/select/types.mjs +3 -0
  272. package/dist/common/interactive/select/types.mjs.map +1 -0
  273. package/dist/common/interactive/select/utils.js +31 -0
  274. package/dist/common/interactive/select/utils.js.map +1 -0
  275. package/dist/common/interactive/select/utils.mjs +28 -0
  276. package/dist/common/interactive/select/utils.mjs.map +1 -0
  277. package/dist/common/interactive/select/variants.js +27 -0
  278. package/dist/common/interactive/select/variants.js.map +1 -0
  279. package/dist/common/interactive/select/variants.mjs +25 -0
  280. package/dist/common/interactive/select/variants.mjs.map +1 -0
  281. package/dist/common/interactive/select-chip.js +76 -0
  282. package/dist/common/interactive/select-chip.js.map +1 -0
  283. package/dist/common/interactive/select-chip.mjs +74 -0
  284. package/dist/common/interactive/select-chip.mjs.map +1 -0
  285. package/dist/common/interactive/select-level.js +236 -0
  286. package/dist/common/interactive/select-level.js.map +1 -0
  287. package/dist/common/interactive/select-level.mjs +230 -0
  288. package/dist/common/interactive/select-level.mjs.map +1 -0
  289. package/dist/common/interactive/select-range.js +211 -0
  290. package/dist/common/interactive/select-range.js.map +1 -0
  291. package/dist/common/interactive/select-range.mjs +209 -0
  292. package/dist/common/interactive/select-range.mjs.map +1 -0
  293. package/dist/common/interactive/select-with-api.js +767 -0
  294. package/dist/common/interactive/select-with-api.js.map +1 -0
  295. package/dist/common/interactive/select-with-api.mjs +758 -0
  296. package/dist/common/interactive/select-with-api.mjs.map +1 -0
  297. package/dist/common/interactive/select.js +15 -0
  298. package/dist/common/interactive/select.js.map +1 -0
  299. package/dist/common/interactive/select.mjs +4 -0
  300. package/dist/common/interactive/select.mjs.map +1 -0
  301. package/dist/common/interactive/sheet-wrapper.js +105 -0
  302. package/dist/common/interactive/sheet-wrapper.js.map +1 -0
  303. package/dist/common/interactive/sheet-wrapper.mjs +83 -0
  304. package/dist/common/interactive/sheet-wrapper.mjs.map +1 -0
  305. package/dist/common/interactive/table/enhanced-table.js +390 -0
  306. package/dist/common/interactive/table/enhanced-table.js.map +1 -0
  307. package/dist/common/interactive/table/enhanced-table.mjs +388 -0
  308. package/dist/common/interactive/table/enhanced-table.mjs.map +1 -0
  309. package/dist/common/interactive/table/index.js +83 -0
  310. package/dist/common/interactive/table/index.js.map +1 -0
  311. package/dist/common/interactive/table/index.mjs +68 -0
  312. package/dist/common/interactive/table/index.mjs.map +1 -0
  313. package/dist/common/interactive/table/table-pagination.js +12 -0
  314. package/dist/common/interactive/table/table-pagination.js.map +1 -0
  315. package/dist/common/interactive/table/table-pagination.mjs +10 -0
  316. package/dist/common/interactive/table/table-pagination.mjs.map +1 -0
  317. package/dist/common/interactive/table/types.js +4 -0
  318. package/dist/common/interactive/table/types.js.map +1 -0
  319. package/dist/common/interactive/table/types.mjs +3 -0
  320. package/dist/common/interactive/table/types.mjs.map +1 -0
  321. package/dist/common/interactive/time-picker.js +313 -0
  322. package/dist/common/interactive/time-picker.js.map +1 -0
  323. package/dist/common/interactive/time-picker.mjs +307 -0
  324. package/dist/common/interactive/time-picker.mjs.map +1 -0
  325. package/dist/common/interactive/types.js +4 -0
  326. package/dist/common/interactive/types.js.map +1 -0
  327. package/dist/common/interactive/types.mjs +3 -0
  328. package/dist/common/interactive/types.mjs.map +1 -0
  329. package/dist/common/pages/page-404.js +16 -0
  330. package/dist/common/pages/page-404.js.map +1 -0
  331. package/dist/common/pages/page-404.mjs +11 -0
  332. package/dist/common/pages/page-404.mjs.map +1 -0
  333. package/dist/common/pages/page-500.js +30 -0
  334. package/dist/common/pages/page-500.js.map +1 -0
  335. package/dist/common/pages/page-500.mjs +25 -0
  336. package/dist/common/pages/page-500.mjs.map +1 -0
  337. package/dist/components/accordion.js +65 -0
  338. package/dist/components/accordion.js.map +1 -0
  339. package/dist/components/accordion.mjs +39 -0
  340. package/dist/components/accordion.mjs.map +1 -0
  341. package/dist/components/alert-dialog.js +231 -0
  342. package/dist/components/alert-dialog.js.map +1 -0
  343. package/dist/components/alert-dialog.mjs +197 -0
  344. package/dist/components/alert-dialog.mjs.map +1 -0
  345. package/dist/components/alert.js +97 -0
  346. package/dist/components/alert.js.map +1 -0
  347. package/dist/components/alert.mjs +72 -0
  348. package/dist/components/alert.mjs.map +1 -0
  349. package/dist/components/aspect-ratio.js +29 -0
  350. package/dist/components/aspect-ratio.js.map +1 -0
  351. package/dist/components/aspect-ratio.mjs +7 -0
  352. package/dist/components/aspect-ratio.mjs.map +1 -0
  353. package/dist/components/avatar.js +64 -0
  354. package/dist/components/avatar.js.map +1 -0
  355. package/dist/components/avatar.mjs +39 -0
  356. package/dist/components/avatar.mjs.map +1 -0
  357. package/dist/components/badge.js +72 -0
  358. package/dist/components/badge.js.map +1 -0
  359. package/dist/components/badge.mjs +69 -0
  360. package/dist/components/badge.mjs.map +1 -0
  361. package/dist/components/breadcrumb.js +109 -0
  362. package/dist/components/breadcrumb.js.map +1 -0
  363. package/dist/components/breadcrumb.mjs +81 -0
  364. package/dist/components/breadcrumb.mjs.map +1 -0
  365. package/dist/components/button.js +250 -0
  366. package/dist/components/button.js.map +1 -0
  367. package/dist/components/button.mjs +226 -0
  368. package/dist/components/button.mjs.map +1 -0
  369. package/dist/components/calendar.js +681 -0
  370. package/dist/components/calendar.js.map +1 -0
  371. package/dist/components/calendar.mjs +659 -0
  372. package/dist/components/calendar.mjs.map +1 -0
  373. package/dist/components/card.js +98 -0
  374. package/dist/components/card.js.map +1 -0
  375. package/dist/components/card.mjs +71 -0
  376. package/dist/components/card.mjs.map +1 -0
  377. package/dist/components/carousel.js +237 -0
  378. package/dist/components/carousel.js.map +1 -0
  379. package/dist/components/carousel.mjs +208 -0
  380. package/dist/components/carousel.mjs.map +1 -0
  381. package/dist/components/chart.js +252 -0
  382. package/dist/components/chart.js.map +1 -0
  383. package/dist/components/chart.mjs +224 -0
  384. package/dist/components/chart.mjs.map +1 -0
  385. package/dist/components/checkbox.js +97 -0
  386. package/dist/components/checkbox.js.map +1 -0
  387. package/dist/components/checkbox.mjs +74 -0
  388. package/dist/components/checkbox.mjs.map +1 -0
  389. package/dist/components/chip.js +88 -0
  390. package/dist/components/chip.js.map +1 -0
  391. package/dist/components/chip.mjs +82 -0
  392. package/dist/components/chip.mjs.map +1 -0
  393. package/dist/components/collapsible.js +33 -0
  394. package/dist/components/collapsible.js.map +1 -0
  395. package/dist/components/collapsible.mjs +9 -0
  396. package/dist/components/collapsible.mjs.map +1 -0
  397. package/dist/components/command.js +125 -0
  398. package/dist/components/command.js.map +1 -0
  399. package/dist/components/command.mjs +95 -0
  400. package/dist/components/command.mjs.map +1 -0
  401. package/dist/components/context-menu.js +168 -0
  402. package/dist/components/context-menu.js.map +1 -0
  403. package/dist/components/context-menu.mjs +131 -0
  404. package/dist/components/context-menu.mjs.map +1 -0
  405. package/dist/components/dialog.js +192 -0
  406. package/dist/components/dialog.js.map +1 -0
  407. package/dist/components/dialog.mjs +159 -0
  408. package/dist/components/dialog.mjs.map +1 -0
  409. package/dist/components/drawer.js +98 -0
  410. package/dist/components/drawer.js.map +1 -0
  411. package/dist/components/drawer.mjs +67 -0
  412. package/dist/components/drawer.mjs.map +1 -0
  413. package/dist/components/dropdown-menu.js +163 -0
  414. package/dist/components/dropdown-menu.js.map +1 -0
  415. package/dist/components/dropdown-menu.mjs +126 -0
  416. package/dist/components/dropdown-menu.mjs.map +1 -0
  417. package/dist/components/form.js +123 -0
  418. package/dist/components/form.js.map +1 -0
  419. package/dist/components/form.mjs +94 -0
  420. package/dist/components/form.mjs.map +1 -0
  421. package/dist/components/hover-card.js +50 -0
  422. package/dist/components/hover-card.js.map +1 -0
  423. package/dist/components/hover-card.mjs +25 -0
  424. package/dist/components/hover-card.mjs.map +1 -0
  425. package/dist/components/input-otp.js +84 -0
  426. package/dist/components/input-otp.js.map +1 -0
  427. package/dist/components/input-otp.mjs +59 -0
  428. package/dist/components/input-otp.mjs.map +1 -0
  429. package/dist/components/input.js +858 -0
  430. package/dist/components/input.js.map +1 -0
  431. package/dist/components/input.mjs +831 -0
  432. package/dist/components/input.mjs.map +1 -0
  433. package/dist/components/label.js +38 -0
  434. package/dist/components/label.js.map +1 -0
  435. package/dist/components/label.mjs +15 -0
  436. package/dist/components/label.mjs.map +1 -0
  437. package/dist/components/lottie.js +59 -0
  438. package/dist/components/lottie.js.map +1 -0
  439. package/dist/components/lottie.mjs +49 -0
  440. package/dist/components/lottie.mjs.map +1 -0
  441. package/dist/components/menubar.js +195 -0
  442. package/dist/components/menubar.js.map +1 -0
  443. package/dist/components/menubar.mjs +157 -0
  444. package/dist/components/menubar.mjs.map +1 -0
  445. package/dist/components/navigation-menu.js +126 -0
  446. package/dist/components/navigation-menu.js.map +1 -0
  447. package/dist/components/navigation-menu.mjs +95 -0
  448. package/dist/components/navigation-menu.mjs.map +1 -0
  449. package/dist/components/pagination.js +112 -0
  450. package/dist/components/pagination.js.map +1 -0
  451. package/dist/components/pagination.mjs +84 -0
  452. package/dist/components/pagination.mjs.map +1 -0
  453. package/dist/components/popover.js +63 -0
  454. package/dist/components/popover.js.map +1 -0
  455. package/dist/components/popover.mjs +38 -0
  456. package/dist/components/popover.mjs.map +1 -0
  457. package/dist/components/progress.js +50 -0
  458. package/dist/components/progress.js.map +1 -0
  459. package/dist/components/progress.mjs +27 -0
  460. package/dist/components/progress.mjs.map +1 -0
  461. package/dist/components/radio-group.js +91 -0
  462. package/dist/components/radio-group.js.map +1 -0
  463. package/dist/components/radio-group.mjs +67 -0
  464. package/dist/components/radio-group.mjs.map +1 -0
  465. package/dist/components/resizable.js +59 -0
  466. package/dist/components/resizable.js.map +1 -0
  467. package/dist/components/resizable.mjs +35 -0
  468. package/dist/components/resizable.mjs.map +1 -0
  469. package/dist/components/responsive-popover.js +74 -0
  470. package/dist/components/responsive-popover.js.map +1 -0
  471. package/dist/components/responsive-popover.mjs +50 -0
  472. package/dist/components/responsive-popover.mjs.map +1 -0
  473. package/dist/components/scroll-area.js +63 -0
  474. package/dist/components/scroll-area.js.map +1 -0
  475. package/dist/components/scroll-area.mjs +39 -0
  476. package/dist/components/scroll-area.mjs.map +1 -0
  477. package/dist/components/separator.js +47 -0
  478. package/dist/components/separator.js.map +1 -0
  479. package/dist/components/separator.mjs +24 -0
  480. package/dist/components/separator.mjs.map +1 -0
  481. package/dist/components/sheet.js +239 -0
  482. package/dist/components/sheet.js.map +1 -0
  483. package/dist/components/sheet.mjs +206 -0
  484. package/dist/components/sheet.mjs.map +1 -0
  485. package/dist/components/sidebar.js +888 -0
  486. package/dist/components/sidebar.js.map +1 -0
  487. package/dist/components/sidebar.mjs +842 -0
  488. package/dist/components/sidebar.mjs.map +1 -0
  489. package/dist/components/skeleton.js +153 -0
  490. package/dist/components/skeleton.js.map +1 -0
  491. package/dist/components/skeleton.mjs +127 -0
  492. package/dist/components/skeleton.mjs.map +1 -0
  493. package/dist/components/slider.js +45 -0
  494. package/dist/components/slider.js.map +1 -0
  495. package/dist/components/slider.mjs +22 -0
  496. package/dist/components/slider.mjs.map +1 -0
  497. package/dist/components/sonner.js +76 -0
  498. package/dist/components/sonner.js.map +1 -0
  499. package/dist/components/sonner.mjs +71 -0
  500. package/dist/components/sonner.mjs.map +1 -0
  501. package/dist/components/spinner.js +59 -0
  502. package/dist/components/spinner.js.map +1 -0
  503. package/dist/components/spinner.mjs +36 -0
  504. package/dist/components/spinner.mjs.map +1 -0
  505. package/dist/components/stepper.js +726 -0
  506. package/dist/components/stepper.js.map +1 -0
  507. package/dist/components/stepper.mjs +702 -0
  508. package/dist/components/stepper.mjs.map +1 -0
  509. package/dist/components/switch.js +85 -0
  510. package/dist/components/switch.js.map +1 -0
  511. package/dist/components/switch.mjs +62 -0
  512. package/dist/components/switch.mjs.map +1 -0
  513. package/dist/components/table.js +91 -0
  514. package/dist/components/table.js.map +1 -0
  515. package/dist/components/table.mjs +62 -0
  516. package/dist/components/table.mjs.map +1 -0
  517. package/dist/components/tabs.js +287 -0
  518. package/dist/components/tabs.js.map +1 -0
  519. package/dist/components/tabs.mjs +261 -0
  520. package/dist/components/tabs.mjs.map +1 -0
  521. package/dist/components/textarea.js +200 -0
  522. package/dist/components/textarea.js.map +1 -0
  523. package/dist/components/textarea.mjs +174 -0
  524. package/dist/components/textarea.mjs.map +1 -0
  525. package/dist/components/toggle-group.js +67 -0
  526. package/dist/components/toggle-group.js.map +1 -0
  527. package/dist/components/toggle-group.mjs +43 -0
  528. package/dist/components/toggle-group.mjs.map +1 -0
  529. package/dist/components/toggle.js +63 -0
  530. package/dist/components/toggle.js.map +1 -0
  531. package/dist/components/toggle.mjs +39 -0
  532. package/dist/components/toggle.mjs.map +1 -0
  533. package/dist/components/tooltip.js +172 -0
  534. package/dist/components/tooltip.js.map +1 -0
  535. package/dist/components/tooltip.mjs +145 -0
  536. package/dist/components/tooltip.mjs.map +1 -0
  537. package/dist/hooks/index.js +27 -0
  538. package/dist/hooks/index.js.map +1 -0
  539. package/dist/hooks/index.mjs +6 -0
  540. package/dist/hooks/index.mjs.map +1 -0
  541. package/dist/hooks/useCopyToClipboard.js +59 -0
  542. package/dist/hooks/useCopyToClipboard.js.map +1 -0
  543. package/dist/hooks/useCopyToClipboard.mjs +57 -0
  544. package/dist/hooks/useCopyToClipboard.mjs.map +1 -0
  545. package/dist/hooks/useDevice.js +20 -0
  546. package/dist/hooks/useDevice.js.map +1 -0
  547. package/dist/hooks/useDevice.mjs +14 -0
  548. package/dist/hooks/useDevice.mjs.map +1 -0
  549. package/dist/hooks/useDialogTracking.js +113 -0
  550. package/dist/hooks/useDialogTracking.js.map +1 -0
  551. package/dist/hooks/useDialogTracking.mjs +91 -0
  552. package/dist/hooks/useDialogTracking.mjs.map +1 -0
  553. package/dist/hooks/useIsMounted.js +15 -0
  554. package/dist/hooks/useIsMounted.js.map +1 -0
  555. package/dist/hooks/useIsMounted.mjs +13 -0
  556. package/dist/hooks/useIsMounted.mjs.map +1 -0
  557. package/dist/hooks/usePathname.js +85 -0
  558. package/dist/hooks/usePathname.js.map +1 -0
  559. package/dist/hooks/usePathname.mjs +83 -0
  560. package/dist/hooks/usePathname.mjs.map +1 -0
  561. package/dist/icons.js +14 -0
  562. package/dist/icons.js.map +1 -0
  563. package/dist/icons.mjs +3 -0
  564. package/dist/icons.mjs.map +1 -0
  565. package/dist/index.d.ts +4 -0
  566. package/dist/index.d.ts.map +1 -1
  567. package/dist/index.js +403 -8151
  568. package/dist/index.js.map +1 -1
  569. package/dist/index.mjs +62 -7844
  570. package/dist/index.mjs.map +1 -1
  571. package/dist/lib/formatCurrency.js +187 -0
  572. package/dist/lib/formatCurrency.js.map +1 -0
  573. package/dist/lib/formatCurrency.mjs +185 -0
  574. package/dist/lib/formatCurrency.mjs.map +1 -0
  575. package/dist/lib/helpers.js +171 -0
  576. package/dist/lib/helpers.js.map +1 -0
  577. package/dist/lib/helpers.mjs +157 -0
  578. package/dist/lib/helpers.mjs.map +1 -0
  579. package/dist/lib/index.js +33 -0
  580. package/dist/lib/index.js.map +1 -0
  581. package/dist/lib/index.mjs +6 -0
  582. package/dist/lib/index.mjs.map +1 -0
  583. package/dist/lib/types.js +11 -0
  584. package/dist/lib/types.js.map +1 -0
  585. package/dist/lib/types.mjs +9 -0
  586. package/dist/lib/types.mjs.map +1 -0
  587. package/dist/lib/utils.js +24 -0
  588. package/dist/lib/utils.js.map +1 -0
  589. package/dist/lib/utils.mjs +19 -0
  590. package/dist/lib/utils.mjs.map +1 -0
  591. package/dist/providers/DeviceSizeWatcher/index.js +72 -0
  592. package/dist/providers/DeviceSizeWatcher/index.js.map +1 -0
  593. package/dist/providers/DeviceSizeWatcher/index.mjs +47 -0
  594. package/dist/providers/DeviceSizeWatcher/index.mjs.map +1 -0
  595. package/dist/providers/DeviceSizeWatcher/useDeviceSizeStore.js +22 -0
  596. package/dist/providers/DeviceSizeWatcher/useDeviceSizeStore.js.map +1 -0
  597. package/dist/providers/DeviceSizeWatcher/useDeviceSizeStore.mjs +20 -0
  598. package/dist/providers/DeviceSizeWatcher/useDeviceSizeStore.mjs.map +1 -0
  599. package/dist/providers/UISystemProvider.js +197 -0
  600. package/dist/providers/UISystemProvider.js.map +1 -0
  601. package/dist/providers/UISystemProvider.mjs +188 -0
  602. package/dist/providers/UISystemProvider.mjs.map +1 -0
  603. package/dist/providers/index.js +24 -0
  604. package/dist/providers/index.js.map +1 -0
  605. package/dist/providers/index.mjs +3 -0
  606. package/dist/providers/index.mjs.map +1 -0
  607. package/dist/theme.js +333 -0
  608. package/dist/theme.js.map +1 -0
  609. package/dist/theme.mjs +327 -0
  610. package/dist/theme.mjs.map +1 -0
  611. package/package.json +1 -1
  612. package/dist/index.css +0 -43
  613. package/dist/index.css.map +0 -1
@@ -0,0 +1,118 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useSidebar } from '@/components/sidebar';
3
+ import { useDevice } from '@/hooks/useDevice';
4
+ import { cn } from '@/lib/utils';
5
+ import * as React from 'react';
6
+ import { SheetWrapper } from '../../interactive/sheet-wrapper';
7
+
8
+ function SidebarSheet({
9
+ open,
10
+ onClose,
11
+ title,
12
+ headerClassName,
13
+ childrenClassName,
14
+ contentClassName,
15
+ children,
16
+ ...props
17
+ }) {
18
+ const { isDesktop } = useDevice();
19
+ const { config, customWidth, state, isHovered } = useSidebar();
20
+ const sidebarWidth = React.useMemo(() => {
21
+ if (!isDesktop) return 0;
22
+ if (state === "collapsed" && isHovered) {
23
+ const width2 = config.width;
24
+ return width2.endsWith("rem") ? parseFloat(width2) * 16 : parseFloat(width2);
25
+ }
26
+ if (state === "collapsed") {
27
+ const iconWidth = config.widthIcon;
28
+ return iconWidth.endsWith("rem") ? parseFloat(iconWidth) * 16 : parseFloat(iconWidth);
29
+ }
30
+ if (customWidth) {
31
+ return customWidth;
32
+ }
33
+ const width = config.width;
34
+ return width.endsWith("rem") ? parseFloat(width) * 16 : parseFloat(width);
35
+ }, [isDesktop, state, config, customWidth, isHovered]);
36
+ React.useEffect(() => {
37
+ if (!isDesktop || !open) return;
38
+ const handleClickOutside = (event) => {
39
+ const target = event.target;
40
+ if (target.closest("[data-notification-trigger]")) {
41
+ return;
42
+ }
43
+ if (target.closest('[role="dialog"]')) {
44
+ return;
45
+ }
46
+ if (target.closest('[data-sidebar="inset"]')) {
47
+ onClose();
48
+ return;
49
+ }
50
+ if (target.closest("[data-sidebar] a")) {
51
+ return;
52
+ }
53
+ if (target.closest("[data-sidebar]")) {
54
+ return;
55
+ }
56
+ onClose();
57
+ };
58
+ const timeoutId = setTimeout(() => {
59
+ document.addEventListener("mousedown", handleClickOutside, true);
60
+ }, 100);
61
+ return () => {
62
+ clearTimeout(timeoutId);
63
+ document.removeEventListener("mousedown", handleClickOutside, true);
64
+ };
65
+ }, [isDesktop, open, onClose]);
66
+ const handleInteractOutside = React.useCallback((event) => {
67
+ const target = event.target;
68
+ if (target.closest("[data-notification-trigger]")) {
69
+ event.preventDefault();
70
+ return;
71
+ }
72
+ if (target.closest('[data-sidebar="inset"]')) {
73
+ return;
74
+ }
75
+ if (target.closest("[data-sidebar] a")) {
76
+ event.preventDefault();
77
+ return;
78
+ }
79
+ }, []);
80
+ return /* @__PURE__ */ jsx(
81
+ SheetWrapper,
82
+ {
83
+ open,
84
+ onOpenChange: (isOpen) => {
85
+ if (!isOpen) {
86
+ onClose();
87
+ }
88
+ },
89
+ modal: !isDesktop,
90
+ side: !isDesktop ? "bottom" : "left",
91
+ sideOffset: isDesktop ? sidebarWidth : void 0,
92
+ showHeader: !!title,
93
+ title,
94
+ headerClassName,
95
+ childrenClassName,
96
+ contentClassName: cn(
97
+ "p-0 gap-0",
98
+ // Mobile styles - with backdrop overlay, full screen height
99
+ !isDesktop && `h-[100dvh] !max-h-[100dvh]`,
100
+ // Desktop styles - positioned next to sidebar, no backdrop
101
+ isDesktop && `!z-[35] !w-[390px]`,
102
+ contentClassName
103
+ ),
104
+ onOpenAutoFocus: (e) => {
105
+ if (!isDesktop) {
106
+ e.preventDefault();
107
+ }
108
+ },
109
+ onInteractOutside: handleInteractOutside,
110
+ ...props,
111
+ children
112
+ }
113
+ );
114
+ }
115
+
116
+ export { SidebarSheet };
117
+ //# sourceMappingURL=sidebar-sheet.mjs.map
118
+ //# sourceMappingURL=sidebar-sheet.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/common/display/sidebar/sidebar-sheet.tsx"],"names":["width"],"mappings":"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","file":"sidebar-sheet.mjs","sourcesContent":["'use client';\n\nimport { useSidebar } from '@/components/sidebar';\nimport { useDevice } from '@/hooks/useDevice';\nimport { cn } from '@/lib/utils';\nimport * as React from 'react';\nimport { SheetWrapper, SheetWrapperProps } from '../../interactive/sheet-wrapper';\n\ninterface SidebarSheetProps extends Omit<SheetWrapperProps, 'side' | 'sideOffset' | 'modal'> {\n /**\n * Whether the sheet is open\n */\n open: boolean;\n /**\n * Callback when the sheet should close\n */\n onClose: () => void;\n /**\n * The title of the sheet header\n */\n title?: string;\n /**\n * Custom header class name\n */\n headerClassName?: string;\n /**\n * Custom children container class name\n */\n childrenClassName?: string;\n /**\n * Custom content class name\n */\n contentClassName?: string;\n /**\n * Children content\n */\n children?: React.ReactNode;\n}\n\n/**\n * A reusable sheet component that positions itself next to the sidebar on desktop\n * and slides from bottom on mobile.\n *\n * Features:\n * - Desktop: Slides from left, positioned next to sidebar (no backdrop)\n * - Mobile: Slides from bottom (with backdrop overlay)\n * - Only closes when clicking to the RIGHT of the sheet on desktop\n * - Clicking on sidebar or sheet itself doesn't close it\n * - Clicking on notification trigger button toggles the sheet\n */\nexport function SidebarSheet({\n open,\n onClose,\n title,\n headerClassName,\n childrenClassName,\n contentClassName,\n children,\n ...props\n}: SidebarSheetProps) {\n const { isDesktop } = useDevice();\n const { config, customWidth, state, isHovered } = useSidebar();\n\n // Calculate actual sidebar width based on state and hover\n const sidebarWidth = React.useMemo(() => {\n if (!isDesktop) return 0;\n\n // When sidebar is collapsed but hovering, use expanded width\n if (state === 'collapsed' && isHovered) {\n const width = config.width;\n return width.endsWith('rem') ? parseFloat(width) * 16 : parseFloat(width);\n }\n\n // When sidebar is collapsed (not hovering), use icon width\n if (state === 'collapsed') {\n const iconWidth = config.widthIcon;\n return iconWidth.endsWith('rem') ? parseFloat(iconWidth) * 16 : parseFloat(iconWidth);\n }\n\n // When expanded, use custom width if available, otherwise use config width\n if (customWidth) {\n return customWidth;\n }\n\n const width = config.width;\n return width.endsWith('rem') ? parseFloat(width) * 16 : parseFloat(width);\n }, [isDesktop, state, config, customWidth, isHovered]);\n\n // Handle click outside on desktop (since modal=false doesn't trigger onInteractOutside)\n React.useEffect(() => {\n if (!isDesktop || !open) return;\n\n const handleClickOutside = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n\n // Check if clicking on notification trigger\n if (target.closest('[data-notification-trigger]')) {\n return; // Let the toggle handler deal with it\n }\n\n // Check if clicking inside the sheet\n if (target.closest('[role=\"dialog\"]')) {\n return; // Don't close when clicking inside sheet\n }\n\n // Check if clicking on SidebarContent (data-sidebar=\"inset\") - CLOSE the sheet\n if (target.closest('[data-sidebar=\"inset\"]')) {\n onClose();\n return;\n }\n\n // Check if clicking on sidebar navigation links - ALLOW navigation, pathname change will close sheet\n if (target.closest('[data-sidebar] a')) {\n return; // Allow navigation to proceed\n }\n\n // Check if clicking on other sidebar elements (trigger, rail, etc)\n if (target.closest('[data-sidebar]')) {\n return; // Don't close for other sidebar interactions\n }\n\n // Click outside (to the right of sheet) - close it\n onClose();\n };\n\n // Use capture phase to intercept clicks before they bubble\n // Add small delay to avoid immediate closing when opening\n const timeoutId = setTimeout(() => {\n document.addEventListener('mousedown', handleClickOutside, true);\n }, 100);\n\n return () => {\n clearTimeout(timeoutId);\n document.removeEventListener('mousedown', handleClickOutside, true);\n };\n }, [isDesktop, open, onClose]);\n\n // Custom onInteractOutside handler for mobile (modal=true)\n // This only works on mobile where modal=true\n const handleInteractOutside = React.useCallback((event: Event) => {\n const target = event.target as HTMLElement;\n\n // Check if clicking on the notification trigger button\n if (target.closest('[data-notification-trigger]')) {\n event.preventDefault();\n return;\n }\n\n // Check if clicking on SidebarContent (data-sidebar=\"inset\") - allow close\n if (target.closest('[data-sidebar=\"inset\"]')) {\n // Let default behavior close the sheet\n return;\n }\n\n // Check if clicking on sidebar navigation links - ALLOW navigation, pathname change will close sheet\n if (target.closest('[data-sidebar] a')) {\n event.preventDefault();\n return; // Allow navigation, pathname change will close sheet\n }\n\n // For mobile, let default behavior close the sheet for other clicks\n }, []);\n\n return (\n <SheetWrapper\n open={open}\n onOpenChange={(isOpen) => {\n if (!isOpen) {\n // Call onClose for both mobile and desktop\n // This handles the close button (X) click properly\n onClose();\n }\n }}\n modal={!isDesktop}\n side={!isDesktop ? 'bottom' : 'left'}\n sideOffset={isDesktop ? sidebarWidth : undefined}\n showHeader={!!title}\n title={title}\n headerClassName={headerClassName}\n childrenClassName={childrenClassName}\n contentClassName={cn(\n 'p-0 gap-0',\n // Mobile styles - with backdrop overlay, full screen height\n !isDesktop && `h-[100dvh] !max-h-[100dvh]`,\n // Desktop styles - positioned next to sidebar, no backdrop\n isDesktop && `!z-[35] !w-[390px]`,\n contentClassName,\n )}\n onOpenAutoFocus={(e) => {\n // Prevent auto-focus on desktop to avoid closing sidebar\n if (!isDesktop) {\n e.preventDefault();\n }\n }}\n onInteractOutside={handleInteractOutside}\n {...props}\n >\n {children}\n </SheetWrapper>\n );\n}\n\nexport type { SidebarSheetProps };\n"]}
@@ -0,0 +1,4 @@
1
+ 'use strict';
2
+
3
+ //# sourceMappingURL=types.js.map
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"types.js"}
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=types.mjs.map
3
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"types.mjs"}
@@ -0,0 +1,97 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var Image = require('../../assets/Image');
7
+ var button = require('../../components/button');
8
+ var utils = require('../../lib/utils');
9
+ var React = require('react');
10
+
11
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
+
13
+ var React__default = /*#__PURE__*/_interopDefault(React);
14
+
15
+ const StatusState = ({
16
+ type,
17
+ title,
18
+ subTitle,
19
+ buttonAction,
20
+ assetsComponent,
21
+ wrapperClassName,
22
+ titleClassName,
23
+ subTitleClassName
24
+ }) => {
25
+ const states = {
26
+ systemError: {
27
+ title: "L\u1ED7i h\u1EC7 th\u1ED1ng",
28
+ subTitle: "Vui l\xF2ng th\u1EED l\u1EA1i sau b\u1EA1n nh\xE9",
29
+ icon: Image.EmptyUnknownErrorImage192,
30
+ buttonAction: /* @__PURE__ */ jsxRuntime.jsx(button.Button, { onClick: () => window.location.reload(), className: "mt-3 w-[200px]", children: "T\u1EA3i l\u1EA1i trang" })
31
+ },
32
+ notFound: {
33
+ title: "Kh\xF4ng t\xECm th\u1EA5y th\xF4ng tin",
34
+ subTitle: "Nh\u01B0ng v\u1EABn c\xF2n r\u1EA5t nhi\u1EC1u \u0111i\u1EC1u th\xFA v\u1ECB \u0111ang ch\u1EDD b\u1EA1n kh\xE1m ph\xE1",
35
+ icon: Image.Empty404NotfoundImage192,
36
+ buttonAction: /* @__PURE__ */ jsxRuntime.jsx(button.Button, { onClick: () => window.location.href = "/", className: "mt-3 w-[200px]", children: "V\u1EC1 trang ch\u1EE7" })
37
+ },
38
+ networkError: {
39
+ title: "M\u1EA5t k\u1EBFt n\u1ED1i m\u1EA1ng",
40
+ subTitle: "B\u1EA1n vui l\xF2ng ki\u1EC3m tra m\u1EA1ng v\xE0 t\u1EA3i l\u1EA1i trang",
41
+ icon: Image.EmptyUnknownErrorImage192,
42
+ buttonAction: /* @__PURE__ */ jsxRuntime.jsx(button.Button, { onClick: () => window.location.reload(), className: "mt-3 w-[200px]", children: "T\u1EA3i l\u1EA1i trang" })
43
+ },
44
+ noData: {
45
+ title: "Ch\u01B0a c\xF3 d\u1EEF li\u1EC7u",
46
+ subTitle: "Hi\u1EC7n t\u1EA1i ch\u01B0a c\xF3 th\xF4ng tin n\xE0o \u0111\u1EC3 hi\u1EC3n th\u1ECB",
47
+ icon: Image.EmptyNothingOtherImage192,
48
+ buttonAction: /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {})
49
+ },
50
+ maintenance: {
51
+ title: "\u0110ang b\u1EA3o tr\xEC",
52
+ subTitle: "H\u1EC7 th\u1ED1ng \u0111ang \u0111\u01B0\u1EE3c n\xE2ng c\u1EA5p, vui l\xF2ng quay l\u1EA1i sau",
53
+ icon: Image.EmptyMaintenanceImage192,
54
+ buttonAction: /* @__PURE__ */ jsxRuntime.jsx(button.Button, { onClick: () => window.location.href = "/", className: "mt-3 w-[200px]", children: "V\u1EC1 trang ch\u1EE7" })
55
+ },
56
+ comingSoon: {
57
+ title: "S\u1EAFp ra m\u1EAFt",
58
+ subTitle: "T\xEDnh n\u0103ng n\xE0y s\u1EBD s\u1EDBm \u0111\u01B0\u1EE3c c\u1EADp nh\u1EADt",
59
+ icon: Image.EmptyComingSoonImage192,
60
+ buttonAction: /* @__PURE__ */ jsxRuntime.jsx(button.Button, { onClick: () => window.location.href = "/", className: "mt-3 w-[200px]", children: "V\u1EC1 trang ch\u1EE7" })
61
+ }
62
+ };
63
+ const presetState = type ? states[type] : null;
64
+ const displayTitle = title ?? presetState?.title;
65
+ const displaySubTitle = subTitle ?? presetState?.subTitle;
66
+ const displayAssetsComponent = assetsComponent ?? presetState?.icon;
67
+ const displayButtonAction = buttonAction ?? presetState?.buttonAction;
68
+ const renderAssetsComponent = () => {
69
+ if (!displayAssetsComponent) return null;
70
+ if (React__default.default.isValidElement(displayAssetsComponent)) {
71
+ return displayAssetsComponent;
72
+ }
73
+ const Component = displayAssetsComponent;
74
+ return /* @__PURE__ */ jsxRuntime.jsx(Component, { className: "h-full w-full" });
75
+ };
76
+ return /* @__PURE__ */ jsxRuntime.jsxs(
77
+ "div",
78
+ {
79
+ className: utils.cn(
80
+ "flex h-full w-full flex-col items-center justify-center gap-2",
81
+ wrapperClassName
82
+ ),
83
+ children: [
84
+ displayAssetsComponent && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-[150px] w-[150px] items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: renderAssetsComponent() }) }),
85
+ displayTitle && /* @__PURE__ */ jsxRuntime.jsx("div", { className: utils.cn("text-ink-500s mt-1 text-center text-lg font-medium", titleClassName), children: displayTitle }),
86
+ displaySubTitle && /* @__PURE__ */ jsxRuntime.jsx("div", { className: utils.cn("text-ink-400s text-center text-sm font-medium", subTitleClassName), children: displaySubTitle }),
87
+ displayButtonAction && /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: displayButtonAction })
88
+ ]
89
+ }
90
+ );
91
+ };
92
+ var status_state_default = StatusState;
93
+
94
+ exports.StatusState = StatusState;
95
+ exports.default = status_state_default;
96
+ //# sourceMappingURL=status-state.js.map
97
+ //# sourceMappingURL=status-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/common/display/status-state.tsx"],"names":["EmptyUnknownErrorImage192","jsx","Button","Empty404NotfoundImage192","EmptyNothingOtherImage192","Fragment","EmptyMaintenanceImage192","EmptyComingSoonImage192","React","jsxs","cn"],"mappings":"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","file":"status-state.js","sourcesContent":["import {\n Empty404NotfoundImage192,\n EmptyComingSoonImage192,\n EmptyMaintenanceImage192,\n EmptyNothingOtherImage192,\n EmptyUnknownErrorImage192,\n} from '../../assets/Image';\nimport { Button } from '../../components/button';\nimport { cn } from '../../lib/utils';\nimport React, { ComponentType, SVGProps } from 'react';\n\nexport type StatusStateType =\n | 'systemError'\n | 'notFound'\n | 'networkError'\n | 'noData'\n | 'maintenance'\n | 'comingSoon';\n\nexport interface IStatusState {\n // Preset state type - if provided, will use predefined values\n type?: StatusStateType;\n // Custom props - will override preset values if provided\n title?: string | React.ReactNode;\n subTitle?: string | React.ReactNode;\n buttonAction?: React.ReactNode;\n assetsComponent?: React.ComponentType<React.SVGProps<SVGSVGElement>> | React.ReactNode;\n wrapperClassName?: string;\n titleClassName?: string;\n subTitleClassName?: string;\n}\n\nconst StatusState = ({\n type,\n title,\n subTitle,\n buttonAction,\n assetsComponent,\n wrapperClassName,\n titleClassName,\n subTitleClassName,\n}: IStatusState) => {\n const states = {\n systemError: {\n title: 'Lỗi hệ thống',\n subTitle: 'Vui lòng thử lại sau bạn nhé',\n icon: EmptyUnknownErrorImage192,\n buttonAction: (\n <Button onClick={() => window.location.reload()} className=\"mt-3 w-[200px]\">\n Tải lại trang\n </Button>\n ),\n },\n notFound: {\n title: 'Không tìm thấy thông tin',\n subTitle: 'Nhưng vẫn còn rất nhiều điều thú vị đang chờ bạn khám phá',\n icon: Empty404NotfoundImage192,\n buttonAction: (\n <Button onClick={() => (window.location.href = '/')} className=\"mt-3 w-[200px]\">\n Về trang chủ\n </Button>\n ),\n },\n networkError: {\n title: 'Mất kết nối mạng',\n subTitle: 'Bạn vui lòng kiểm tra mạng và tải lại trang',\n icon: EmptyUnknownErrorImage192,\n buttonAction: (\n <Button onClick={() => window.location.reload()} className=\"mt-3 w-[200px]\">\n Tải lại trang\n </Button>\n ),\n },\n noData: {\n title: 'Chưa có dữ liệu',\n subTitle: 'Hiện tại chưa có thông tin nào để hiển thị',\n icon: EmptyNothingOtherImage192,\n buttonAction: <></>,\n },\n maintenance: {\n title: 'Đang bảo trì',\n subTitle: 'Hệ thống đang được nâng cấp, vui lòng quay lại sau',\n icon: EmptyMaintenanceImage192,\n buttonAction: (\n <Button onClick={() => (window.location.href = '/')} className=\"mt-3 w-[200px]\">\n Về trang chủ\n </Button>\n ),\n },\n comingSoon: {\n title: 'Sắp ra mắt',\n subTitle: 'Tính năng này sẽ sớm được cập nhật',\n icon: EmptyComingSoonImage192,\n buttonAction: (\n <Button onClick={() => (window.location.href = '/')} className=\"mt-3 w-[200px]\">\n Về trang chủ\n </Button>\n ),\n },\n };\n\n // Get preset state if type is provided\n const presetState = type ? states[type] : null;\n\n // Use preset values as fallback, allow props to override\n const displayTitle = title ?? presetState?.title;\n const displaySubTitle = subTitle ?? presetState?.subTitle;\n const displayAssetsComponent = assetsComponent ?? presetState?.icon;\n const displayButtonAction = buttonAction ?? presetState?.buttonAction;\n\n // Helper function to render the assets component\n const renderAssetsComponent = () => {\n if (!displayAssetsComponent) return null;\n\n // ✅ Nếu là React element (JSX đã tạo sẵn), render trực tiếp\n if (React.isValidElement(displayAssetsComponent)) {\n return displayAssetsComponent;\n }\n\n // ✅ Nếu là component (chưa render), gọi như component\n const Component = displayAssetsComponent as ComponentType<SVGProps<SVGSVGElement>>;\n return <Component className=\"h-full w-full\" />;\n };\n\n return (\n <div\n className={cn(\n 'flex h-full w-full flex-col items-center justify-center gap-2',\n wrapperClassName,\n )}\n >\n {displayAssetsComponent && (\n <div className=\"flex h-[150px] w-[150px] items-center justify-center\">\n <>{renderAssetsComponent()}</>\n </div>\n )}\n {displayTitle && (\n <div className={cn('text-ink-500s mt-1 text-center text-lg font-medium', titleClassName)}>\n {displayTitle}\n </div>\n )}\n {displaySubTitle && (\n <div className={cn('text-ink-400s text-center text-sm font-medium', subTitleClassName)}>\n {displaySubTitle}\n </div>\n )}\n {displayButtonAction && <>{displayButtonAction}</>}\n </div>\n );\n};\n\nexport { StatusState };\nexport default StatusState;\n"]}
@@ -0,0 +1,88 @@
1
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
+ import { EmptyComingSoonImage192, EmptyMaintenanceImage192, EmptyNothingOtherImage192, EmptyUnknownErrorImage192, Empty404NotfoundImage192 } from '../../assets/Image';
3
+ import { Button } from '../../components/button';
4
+ import { cn } from '../../lib/utils';
5
+ import React from 'react';
6
+
7
+ const StatusState = ({
8
+ type,
9
+ title,
10
+ subTitle,
11
+ buttonAction,
12
+ assetsComponent,
13
+ wrapperClassName,
14
+ titleClassName,
15
+ subTitleClassName
16
+ }) => {
17
+ const states = {
18
+ systemError: {
19
+ title: "L\u1ED7i h\u1EC7 th\u1ED1ng",
20
+ subTitle: "Vui l\xF2ng th\u1EED l\u1EA1i sau b\u1EA1n nh\xE9",
21
+ icon: EmptyUnknownErrorImage192,
22
+ buttonAction: /* @__PURE__ */ jsx(Button, { onClick: () => window.location.reload(), className: "mt-3 w-[200px]", children: "T\u1EA3i l\u1EA1i trang" })
23
+ },
24
+ notFound: {
25
+ title: "Kh\xF4ng t\xECm th\u1EA5y th\xF4ng tin",
26
+ subTitle: "Nh\u01B0ng v\u1EABn c\xF2n r\u1EA5t nhi\u1EC1u \u0111i\u1EC1u th\xFA v\u1ECB \u0111ang ch\u1EDD b\u1EA1n kh\xE1m ph\xE1",
27
+ icon: Empty404NotfoundImage192,
28
+ buttonAction: /* @__PURE__ */ jsx(Button, { onClick: () => window.location.href = "/", className: "mt-3 w-[200px]", children: "V\u1EC1 trang ch\u1EE7" })
29
+ },
30
+ networkError: {
31
+ title: "M\u1EA5t k\u1EBFt n\u1ED1i m\u1EA1ng",
32
+ subTitle: "B\u1EA1n vui l\xF2ng ki\u1EC3m tra m\u1EA1ng v\xE0 t\u1EA3i l\u1EA1i trang",
33
+ icon: EmptyUnknownErrorImage192,
34
+ buttonAction: /* @__PURE__ */ jsx(Button, { onClick: () => window.location.reload(), className: "mt-3 w-[200px]", children: "T\u1EA3i l\u1EA1i trang" })
35
+ },
36
+ noData: {
37
+ title: "Ch\u01B0a c\xF3 d\u1EEF li\u1EC7u",
38
+ subTitle: "Hi\u1EC7n t\u1EA1i ch\u01B0a c\xF3 th\xF4ng tin n\xE0o \u0111\u1EC3 hi\u1EC3n th\u1ECB",
39
+ icon: EmptyNothingOtherImage192,
40
+ buttonAction: /* @__PURE__ */ jsx(Fragment, {})
41
+ },
42
+ maintenance: {
43
+ title: "\u0110ang b\u1EA3o tr\xEC",
44
+ subTitle: "H\u1EC7 th\u1ED1ng \u0111ang \u0111\u01B0\u1EE3c n\xE2ng c\u1EA5p, vui l\xF2ng quay l\u1EA1i sau",
45
+ icon: EmptyMaintenanceImage192,
46
+ buttonAction: /* @__PURE__ */ jsx(Button, { onClick: () => window.location.href = "/", className: "mt-3 w-[200px]", children: "V\u1EC1 trang ch\u1EE7" })
47
+ },
48
+ comingSoon: {
49
+ title: "S\u1EAFp ra m\u1EAFt",
50
+ subTitle: "T\xEDnh n\u0103ng n\xE0y s\u1EBD s\u1EDBm \u0111\u01B0\u1EE3c c\u1EADp nh\u1EADt",
51
+ icon: EmptyComingSoonImage192,
52
+ buttonAction: /* @__PURE__ */ jsx(Button, { onClick: () => window.location.href = "/", className: "mt-3 w-[200px]", children: "V\u1EC1 trang ch\u1EE7" })
53
+ }
54
+ };
55
+ const presetState = type ? states[type] : null;
56
+ const displayTitle = title ?? presetState?.title;
57
+ const displaySubTitle = subTitle ?? presetState?.subTitle;
58
+ const displayAssetsComponent = assetsComponent ?? presetState?.icon;
59
+ const displayButtonAction = buttonAction ?? presetState?.buttonAction;
60
+ const renderAssetsComponent = () => {
61
+ if (!displayAssetsComponent) return null;
62
+ if (React.isValidElement(displayAssetsComponent)) {
63
+ return displayAssetsComponent;
64
+ }
65
+ const Component = displayAssetsComponent;
66
+ return /* @__PURE__ */ jsx(Component, { className: "h-full w-full" });
67
+ };
68
+ return /* @__PURE__ */ jsxs(
69
+ "div",
70
+ {
71
+ className: cn(
72
+ "flex h-full w-full flex-col items-center justify-center gap-2",
73
+ wrapperClassName
74
+ ),
75
+ children: [
76
+ displayAssetsComponent && /* @__PURE__ */ jsx("div", { className: "flex h-[150px] w-[150px] items-center justify-center", children: /* @__PURE__ */ jsx(Fragment, { children: renderAssetsComponent() }) }),
77
+ displayTitle && /* @__PURE__ */ jsx("div", { className: cn("text-ink-500s mt-1 text-center text-lg font-medium", titleClassName), children: displayTitle }),
78
+ displaySubTitle && /* @__PURE__ */ jsx("div", { className: cn("text-ink-400s text-center text-sm font-medium", subTitleClassName), children: displaySubTitle }),
79
+ displayButtonAction && /* @__PURE__ */ jsx(Fragment, { children: displayButtonAction })
80
+ ]
81
+ }
82
+ );
83
+ };
84
+ var status_state_default = StatusState;
85
+
86
+ export { StatusState, status_state_default as default };
87
+ //# sourceMappingURL=status-state.mjs.map
88
+ //# sourceMappingURL=status-state.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/common/display/status-state.tsx"],"names":[],"mappings":"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","file":"status-state.mjs","sourcesContent":["import {\n Empty404NotfoundImage192,\n EmptyComingSoonImage192,\n EmptyMaintenanceImage192,\n EmptyNothingOtherImage192,\n EmptyUnknownErrorImage192,\n} from '../../assets/Image';\nimport { Button } from '../../components/button';\nimport { cn } from '../../lib/utils';\nimport React, { ComponentType, SVGProps } from 'react';\n\nexport type StatusStateType =\n | 'systemError'\n | 'notFound'\n | 'networkError'\n | 'noData'\n | 'maintenance'\n | 'comingSoon';\n\nexport interface IStatusState {\n // Preset state type - if provided, will use predefined values\n type?: StatusStateType;\n // Custom props - will override preset values if provided\n title?: string | React.ReactNode;\n subTitle?: string | React.ReactNode;\n buttonAction?: React.ReactNode;\n assetsComponent?: React.ComponentType<React.SVGProps<SVGSVGElement>> | React.ReactNode;\n wrapperClassName?: string;\n titleClassName?: string;\n subTitleClassName?: string;\n}\n\nconst StatusState = ({\n type,\n title,\n subTitle,\n buttonAction,\n assetsComponent,\n wrapperClassName,\n titleClassName,\n subTitleClassName,\n}: IStatusState) => {\n const states = {\n systemError: {\n title: 'Lỗi hệ thống',\n subTitle: 'Vui lòng thử lại sau bạn nhé',\n icon: EmptyUnknownErrorImage192,\n buttonAction: (\n <Button onClick={() => window.location.reload()} className=\"mt-3 w-[200px]\">\n Tải lại trang\n </Button>\n ),\n },\n notFound: {\n title: 'Không tìm thấy thông tin',\n subTitle: 'Nhưng vẫn còn rất nhiều điều thú vị đang chờ bạn khám phá',\n icon: Empty404NotfoundImage192,\n buttonAction: (\n <Button onClick={() => (window.location.href = '/')} className=\"mt-3 w-[200px]\">\n Về trang chủ\n </Button>\n ),\n },\n networkError: {\n title: 'Mất kết nối mạng',\n subTitle: 'Bạn vui lòng kiểm tra mạng và tải lại trang',\n icon: EmptyUnknownErrorImage192,\n buttonAction: (\n <Button onClick={() => window.location.reload()} className=\"mt-3 w-[200px]\">\n Tải lại trang\n </Button>\n ),\n },\n noData: {\n title: 'Chưa có dữ liệu',\n subTitle: 'Hiện tại chưa có thông tin nào để hiển thị',\n icon: EmptyNothingOtherImage192,\n buttonAction: <></>,\n },\n maintenance: {\n title: 'Đang bảo trì',\n subTitle: 'Hệ thống đang được nâng cấp, vui lòng quay lại sau',\n icon: EmptyMaintenanceImage192,\n buttonAction: (\n <Button onClick={() => (window.location.href = '/')} className=\"mt-3 w-[200px]\">\n Về trang chủ\n </Button>\n ),\n },\n comingSoon: {\n title: 'Sắp ra mắt',\n subTitle: 'Tính năng này sẽ sớm được cập nhật',\n icon: EmptyComingSoonImage192,\n buttonAction: (\n <Button onClick={() => (window.location.href = '/')} className=\"mt-3 w-[200px]\">\n Về trang chủ\n </Button>\n ),\n },\n };\n\n // Get preset state if type is provided\n const presetState = type ? states[type] : null;\n\n // Use preset values as fallback, allow props to override\n const displayTitle = title ?? presetState?.title;\n const displaySubTitle = subTitle ?? presetState?.subTitle;\n const displayAssetsComponent = assetsComponent ?? presetState?.icon;\n const displayButtonAction = buttonAction ?? presetState?.buttonAction;\n\n // Helper function to render the assets component\n const renderAssetsComponent = () => {\n if (!displayAssetsComponent) return null;\n\n // ✅ Nếu là React element (JSX đã tạo sẵn), render trực tiếp\n if (React.isValidElement(displayAssetsComponent)) {\n return displayAssetsComponent;\n }\n\n // ✅ Nếu là component (chưa render), gọi như component\n const Component = displayAssetsComponent as ComponentType<SVGProps<SVGSVGElement>>;\n return <Component className=\"h-full w-full\" />;\n };\n\n return (\n <div\n className={cn(\n 'flex h-full w-full flex-col items-center justify-center gap-2',\n wrapperClassName,\n )}\n >\n {displayAssetsComponent && (\n <div className=\"flex h-[150px] w-[150px] items-center justify-center\">\n <>{renderAssetsComponent()}</>\n </div>\n )}\n {displayTitle && (\n <div className={cn('text-ink-500s mt-1 text-center text-lg font-medium', titleClassName)}>\n {displayTitle}\n </div>\n )}\n {displaySubTitle && (\n <div className={cn('text-ink-400s text-center text-sm font-medium', subTitleClassName)}>\n {displaySubTitle}\n </div>\n )}\n {displayButtonAction && <>{displayButtonAction}</>}\n </div>\n );\n};\n\nexport { StatusState };\nexport default StatusState;\n"]}
@@ -0,0 +1,101 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var utils = require('@/lib/utils');
5
+ var React = require('react');
6
+ var reactHookForm = require('react-hook-form');
7
+ var form = require('../../components/form');
8
+
9
+ function _interopNamespace(e) {
10
+ if (e && e.__esModule) return e;
11
+ var n = Object.create(null);
12
+ if (e) {
13
+ Object.keys(e).forEach(function (k) {
14
+ if (k !== 'default') {
15
+ var d = Object.getOwnPropertyDescriptor(e, k);
16
+ Object.defineProperty(n, k, d.get ? d : {
17
+ enumerable: true,
18
+ get: function () { return e[k]; }
19
+ });
20
+ }
21
+ });
22
+ }
23
+ n.default = e;
24
+ return Object.freeze(n);
25
+ }
26
+
27
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
28
+
29
+ function AutoFormRoot({ form: form$1, onSubmit, children, className, ...formProps }) {
30
+ return /* @__PURE__ */ jsxRuntime.jsx(reactHookForm.FormProvider, { ...form$1, children: /* @__PURE__ */ jsxRuntime.jsx(form.Form, { ...form$1, children: /* @__PURE__ */ jsxRuntime.jsx(
31
+ "form",
32
+ {
33
+ onSubmit: (e) => {
34
+ e.stopPropagation();
35
+ form$1.handleSubmit(onSubmit)(e);
36
+ },
37
+ className: utils.cn("space-y-4", className),
38
+ ...formProps,
39
+ children
40
+ }
41
+ ) }) });
42
+ }
43
+ const getFieldError = (formState, name) => {
44
+ if (name.includes(".")) {
45
+ const paths = name.split(".");
46
+ let current = formState.errors;
47
+ for (let i = 0; i < paths.length - 1; i++) {
48
+ const path = paths[i];
49
+ if (!current || !current[path]) return void 0;
50
+ current = current[path];
51
+ }
52
+ const lastPath = paths[paths.length - 1];
53
+ if (!current || !current[lastPath]) return void 0;
54
+ return current[lastPath].message || current[lastPath].root?.message;
55
+ }
56
+ return formState.errors[name]?.message || formState.errors[name]?.root?.message;
57
+ };
58
+ const AutoFormField = ({
59
+ name,
60
+ label,
61
+ description,
62
+ children,
63
+ className,
64
+ disabled,
65
+ noShowError,
66
+ hidden,
67
+ ...props
68
+ }) => {
69
+ const { control, formState } = reactHookForm.useFormContext();
70
+ if (hidden) return;
71
+ return /* @__PURE__ */ jsxRuntime.jsx(
72
+ form.FormField,
73
+ {
74
+ control,
75
+ name,
76
+ render: ({ field }) => {
77
+ const errorMessage = getFieldError(formState, name);
78
+ return /* @__PURE__ */ jsxRuntime.jsxs(form.FormItem, { className, children: [
79
+ label && /* @__PURE__ */ jsxRuntime.jsx(form.FormLabel, { className: "!text-t14m", children: label }),
80
+ /* @__PURE__ */ jsxRuntime.jsx(form.FormControl, { children: typeof children === "function" ? children({ ...field, isError: !!errorMessage, errorMessage }) : React__namespace.cloneElement(children, {
81
+ ...field,
82
+ isError: !!errorMessage && !noShowError,
83
+ errorMessage
84
+ }) }),
85
+ description && (!errorMessage || noShowError) && /* @__PURE__ */ jsxRuntime.jsx(form.FormDescription, { children: description }),
86
+ !noShowError && /* @__PURE__ */ jsxRuntime.jsx(form.FormMessage, {})
87
+ ] });
88
+ },
89
+ disabled,
90
+ ...props
91
+ }
92
+ );
93
+ };
94
+ const AutoForm = Object.assign(AutoFormRoot, {
95
+ Field: AutoFormField
96
+ });
97
+
98
+ exports.AutoForm = AutoForm;
99
+ exports.getFieldError = getFieldError;
100
+ //# sourceMappingURL=auto-form.js.map
101
+ //# sourceMappingURL=auto-form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/common/forms/auto-form.tsx"],"names":["form","FormProvider","jsx","Form","cn","useFormContext","FormField","jsxs","FormItem","FormLabel","FormControl","React","FormDescription","FormMessage"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCA,SAAS,YAAA,CAAa,QAAEA,MAAA,EAAM,QAAA,EAAU,UAAU,SAAA,EAAW,GAAG,WAAU,EAAQ;AAChF,EAAA,sCACGC,0BAAA,EAAA,EAAc,GAAGD,QAChB,QAAA,kBAAAE,cAAA,CAACC,SAAA,EAAA,EAAM,GAAGH,MAAA,EACR,QAAA,kBAAAE,cAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,QAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,QAAAF,MAAA,CAAK,YAAA,CAAa,QAAQ,CAAA,CAAE,CAAC,CAAA;AAAA,MAC/B,CAAA;AAAA,MACA,SAAA,EAAWI,QAAA,CAAG,WAAA,EAAa,SAAS,CAAA;AAAA,MACnC,GAAG,SAAA;AAAA,MAEH;AAAA;AAAA,KAEL,CAAA,EACF,CAAA;AAEJ;AAGO,MAAM,aAAA,GAAgB,CAAC,SAAA,EAAgB,IAAA,KAAiB;AAE7D,EAAA,IAAI,IAAA,CAAK,QAAA,CAAS,GAAG,CAAA,EAAG;AACtB,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAC5B,IAAA,IAAI,UAAU,SAAA,CAAU,MAAA;AAGxB,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,MAAA,GAAS,GAAG,CAAA,EAAA,EAAK;AACzC,MAAA,MAAM,IAAA,GAAe,MAAM,CAAC,CAAA;AAC5B,MAAA,IAAI,CAAC,OAAA,IAAW,CAAC,OAAA,CAAQ,IAAI,GAAG,OAAO,MAAA;AACvC,MAAA,OAAA,GAAU,QAAQ,IAAI,CAAA;AAAA,IACxB;AAGA,IAAA,MAAM,QAAA,GAAmB,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA;AAC/C,IAAA,IAAI,CAAC,OAAA,IAAW,CAAC,OAAA,CAAQ,QAAQ,GAAG,OAAO,MAAA;AAG3C,IAAA,OAAO,QAAQ,QAAQ,CAAA,CAAE,WAAW,OAAA,CAAQ,QAAQ,EAAE,IAAA,EAAM,OAAA;AAAA,EAC9D;AAGA,EAAA,OAAO,SAAA,CAAU,OAAO,IAAI,CAAA,EAAG,WAAW,SAAA,CAAU,MAAA,CAAO,IAAI,CAAA,EAAG,IAAA,EAAM,OAAA;AAC1E;AAEA,MAAM,gBAAgB,CAAC;AAAA,EACrB,IAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA0B;AAExB,EAAA,MAAM,EAAE,OAAA,EAAS,SAAA,EAAU,GAAIC,4BAAA,EAAe;AAE9C,EAAA,IAAI,MAAA,EAAQ;AAEZ,EAAA,uBACEH,cAAA;AAAA,IAACI,cAAA;AAAA,IAAA;AAAA,MACC,OAAA;AAAA,MACA,IAAA;AAAA,MACA,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAM,KAAM;AACrB,QAAA,MAAM,YAAA,GAAe,aAAA,CAAc,SAAA,EAAW,IAAI,CAAA;AAElD,QAAA,uBACEC,eAAA,CAACC,iBAAS,SAAA,EACP,QAAA,EAAA;AAAA,UAAA,KAAA,oBAASN,cAAA,CAACO,cAAA,EAAA,EAAU,SAAA,EAAU,YAAA,EAAc,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,yCAClDC,gBAAA,EAAA,EACE,QAAA,EAAA,OAAO,aAAa,UAAA,GACjB,QAAA,CAAS,EAAE,GAAG,KAAA,EAAO,OAAA,EAAS,CAAC,CAAC,YAAA,EAAc,YAAA,EAAc,CAAA,GAC5DC,gBAAA,CAAM,aAAa,QAAA,EAAgC;AAAA,YACnD,GAAG,KAAA;AAAA,YACH,OAAA,EAAS,CAAC,CAAC,YAAA,IAAgB,CAAC,WAAA;AAAA,YAC5B;AAAA,WACD,CAAA,EACL,CAAA;AAAA,UACC,gBAAgB,CAAC,YAAA,IAAgB,WAAA,CAAA,oBAChCT,cAAA,CAACU,wBAAiB,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,UAE/B,CAAC,WAAA,oBAAeV,cAAA,CAACW,gBAAA,EAAA,EAAY;AAAA,SAAA,EAChC,CAAA;AAAA,MAEJ,CAAA;AAAA,MACA,QAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAA;AAGO,MAAM,QAAA,GAAW,MAAA,CAAO,MAAA,CAAO,YAAA,EAAc;AAAA,EAClD,KAAA,EAAO;AACT,CAAC","file":"auto-form.js","sourcesContent":["import { cn } from '@/lib/utils';\nimport * as React from 'react';\nimport { FormProvider, SubmitHandler, useFormContext } from 'react-hook-form';\nimport {\n Form,\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from '../../components/form';\n\n// --- Định nghĩa Type cho Props ---\n\n// Props cho component AutoForm chính\ninterface AutoFormProps extends Omit<React.ComponentProps<'form'>, 'onSubmit'> {\n form: any; // Type form as UseFormReturn with schema type\n onSubmit: SubmitHandler<any>;\n children: React.ReactNode;\n}\n\n// Props cho component AutoForm.Field\ninterface AutoFormFieldProps extends Omit<React.ComponentProps<'div'>, 'children'> {\n name: string; // Bắt buộc phải có name để liên kết với schema\n label?: string;\n description?: string;\n children: React.ReactNode | ((field: any) => React.ReactNode);\n disabled?: boolean;\n noShowError?: boolean;\n hidden?: boolean;\n}\n\n// --- Component AutoForm chính ---\n\nfunction AutoFormRoot({ form, onSubmit, children, className, ...formProps }: any) {\n return (\n <FormProvider {...form}>\n <Form {...form}>\n <form\n onSubmit={(e) => {\n e.stopPropagation();\n form.handleSubmit(onSubmit)(e);\n }}\n className={cn('space-y-4', className)}\n {...formProps}\n >\n {children}\n </form>\n </Form>\n </FormProvider>\n );\n}\n\n// --- Component AutoForm.Field ---\nexport const getFieldError = (formState: any, name: string) => {\n // Nếu name là một đường dẫn lồng nhau (có dấu chấm)\n if (name.includes('.')) {\n const paths = name.split('.');\n let current = formState.errors;\n\n // Duyệt qua các phần của đường dẫn, trừ phần cuối cùng\n for (let i = 0; i < paths.length - 1; i++) {\n const path: string = paths[i] as string;\n if (!current || !current[path]) return undefined;\n current = current[path] as Record<string, any>;\n }\n\n // Lấy thông báo lỗi từ phần cuối cùng\n const lastPath: string = paths[paths.length - 1] as string;\n if (!current || !current[lastPath]) return undefined;\n\n // Trả về thông báo lỗi\n return current[lastPath].message || current[lastPath].root?.message;\n }\n\n // Trường hợp name đơn giản\n return formState.errors[name]?.message || formState.errors[name]?.root?.message;\n};\n\nconst AutoFormField = ({\n name,\n label,\n description,\n children,\n className,\n disabled,\n noShowError,\n hidden,\n ...props\n}: AutoFormFieldProps) => {\n // Lấy context từ FormProvider\n const { control, formState } = useFormContext();\n\n if (hidden) return;\n\n return (\n <FormField\n control={control}\n name={name}\n render={({ field }) => {\n const errorMessage = getFieldError(formState, name);\n\n return (\n <FormItem className={className}>\n {label && <FormLabel className=\"!text-t14m\">{label}</FormLabel>}\n <FormControl>\n {typeof children === 'function'\n ? children({ ...field, isError: !!errorMessage, errorMessage })\n : React.cloneElement(children as React.ReactElement, {\n ...field,\n isError: !!errorMessage && !noShowError,\n errorMessage,\n })}\n </FormControl>\n {description && (!errorMessage || noShowError) && (\n <FormDescription>{description}</FormDescription>\n )}\n {!noShowError && <FormMessage />}\n </FormItem>\n );\n }}\n disabled={disabled}\n {...props}\n />\n );\n};\n\n// --- Gán Field vào Root component để tạo thành Compound Component ---\nexport const AutoForm = Object.assign(AutoFormRoot, {\n Field: AutoFormField,\n});\n"]}
@@ -0,0 +1,78 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { cn } from '@/lib/utils';
3
+ import * as React from 'react';
4
+ import { FormProvider, useFormContext } from 'react-hook-form';
5
+ import { Form, FormField, FormItem, FormLabel, FormControl, FormDescription, FormMessage } from '../../components/form';
6
+
7
+ function AutoFormRoot({ form, onSubmit, children, className, ...formProps }) {
8
+ return /* @__PURE__ */ jsx(FormProvider, { ...form, children: /* @__PURE__ */ jsx(Form, { ...form, children: /* @__PURE__ */ jsx(
9
+ "form",
10
+ {
11
+ onSubmit: (e) => {
12
+ e.stopPropagation();
13
+ form.handleSubmit(onSubmit)(e);
14
+ },
15
+ className: cn("space-y-4", className),
16
+ ...formProps,
17
+ children
18
+ }
19
+ ) }) });
20
+ }
21
+ const getFieldError = (formState, name) => {
22
+ if (name.includes(".")) {
23
+ const paths = name.split(".");
24
+ let current = formState.errors;
25
+ for (let i = 0; i < paths.length - 1; i++) {
26
+ const path = paths[i];
27
+ if (!current || !current[path]) return void 0;
28
+ current = current[path];
29
+ }
30
+ const lastPath = paths[paths.length - 1];
31
+ if (!current || !current[lastPath]) return void 0;
32
+ return current[lastPath].message || current[lastPath].root?.message;
33
+ }
34
+ return formState.errors[name]?.message || formState.errors[name]?.root?.message;
35
+ };
36
+ const AutoFormField = ({
37
+ name,
38
+ label,
39
+ description,
40
+ children,
41
+ className,
42
+ disabled,
43
+ noShowError,
44
+ hidden,
45
+ ...props
46
+ }) => {
47
+ const { control, formState } = useFormContext();
48
+ if (hidden) return;
49
+ return /* @__PURE__ */ jsx(
50
+ FormField,
51
+ {
52
+ control,
53
+ name,
54
+ render: ({ field }) => {
55
+ const errorMessage = getFieldError(formState, name);
56
+ return /* @__PURE__ */ jsxs(FormItem, { className, children: [
57
+ label && /* @__PURE__ */ jsx(FormLabel, { className: "!text-t14m", children: label }),
58
+ /* @__PURE__ */ jsx(FormControl, { children: typeof children === "function" ? children({ ...field, isError: !!errorMessage, errorMessage }) : React.cloneElement(children, {
59
+ ...field,
60
+ isError: !!errorMessage && !noShowError,
61
+ errorMessage
62
+ }) }),
63
+ description && (!errorMessage || noShowError) && /* @__PURE__ */ jsx(FormDescription, { children: description }),
64
+ !noShowError && /* @__PURE__ */ jsx(FormMessage, {})
65
+ ] });
66
+ },
67
+ disabled,
68
+ ...props
69
+ }
70
+ );
71
+ };
72
+ const AutoForm = Object.assign(AutoFormRoot, {
73
+ Field: AutoFormField
74
+ });
75
+
76
+ export { AutoForm, getFieldError };
77
+ //# sourceMappingURL=auto-form.mjs.map
78
+ //# sourceMappingURL=auto-form.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/common/forms/auto-form.tsx"],"names":[],"mappings":"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","file":"auto-form.mjs","sourcesContent":["import { cn } from '@/lib/utils';\nimport * as React from 'react';\nimport { FormProvider, SubmitHandler, useFormContext } from 'react-hook-form';\nimport {\n Form,\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from '../../components/form';\n\n// --- Định nghĩa Type cho Props ---\n\n// Props cho component AutoForm chính\ninterface AutoFormProps extends Omit<React.ComponentProps<'form'>, 'onSubmit'> {\n form: any; // Type form as UseFormReturn with schema type\n onSubmit: SubmitHandler<any>;\n children: React.ReactNode;\n}\n\n// Props cho component AutoForm.Field\ninterface AutoFormFieldProps extends Omit<React.ComponentProps<'div'>, 'children'> {\n name: string; // Bắt buộc phải có name để liên kết với schema\n label?: string;\n description?: string;\n children: React.ReactNode | ((field: any) => React.ReactNode);\n disabled?: boolean;\n noShowError?: boolean;\n hidden?: boolean;\n}\n\n// --- Component AutoForm chính ---\n\nfunction AutoFormRoot({ form, onSubmit, children, className, ...formProps }: any) {\n return (\n <FormProvider {...form}>\n <Form {...form}>\n <form\n onSubmit={(e) => {\n e.stopPropagation();\n form.handleSubmit(onSubmit)(e);\n }}\n className={cn('space-y-4', className)}\n {...formProps}\n >\n {children}\n </form>\n </Form>\n </FormProvider>\n );\n}\n\n// --- Component AutoForm.Field ---\nexport const getFieldError = (formState: any, name: string) => {\n // Nếu name là một đường dẫn lồng nhau (có dấu chấm)\n if (name.includes('.')) {\n const paths = name.split('.');\n let current = formState.errors;\n\n // Duyệt qua các phần của đường dẫn, trừ phần cuối cùng\n for (let i = 0; i < paths.length - 1; i++) {\n const path: string = paths[i] as string;\n if (!current || !current[path]) return undefined;\n current = current[path] as Record<string, any>;\n }\n\n // Lấy thông báo lỗi từ phần cuối cùng\n const lastPath: string = paths[paths.length - 1] as string;\n if (!current || !current[lastPath]) return undefined;\n\n // Trả về thông báo lỗi\n return current[lastPath].message || current[lastPath].root?.message;\n }\n\n // Trường hợp name đơn giản\n return formState.errors[name]?.message || formState.errors[name]?.root?.message;\n};\n\nconst AutoFormField = ({\n name,\n label,\n description,\n children,\n className,\n disabled,\n noShowError,\n hidden,\n ...props\n}: AutoFormFieldProps) => {\n // Lấy context từ FormProvider\n const { control, formState } = useFormContext();\n\n if (hidden) return;\n\n return (\n <FormField\n control={control}\n name={name}\n render={({ field }) => {\n const errorMessage = getFieldError(formState, name);\n\n return (\n <FormItem className={className}>\n {label && <FormLabel className=\"!text-t14m\">{label}</FormLabel>}\n <FormControl>\n {typeof children === 'function'\n ? children({ ...field, isError: !!errorMessage, errorMessage })\n : React.cloneElement(children as React.ReactElement, {\n ...field,\n isError: !!errorMessage && !noShowError,\n errorMessage,\n })}\n </FormControl>\n {description && (!errorMessage || noShowError) && (\n <FormDescription>{description}</FormDescription>\n )}\n {!noShowError && <FormMessage />}\n </FormItem>\n );\n }}\n disabled={disabled}\n {...props}\n />\n );\n};\n\n// --- Gán Field vào Root component để tạo thành Compound Component ---\nexport const AutoForm = Object.assign(AutoFormRoot, {\n Field: AutoFormField,\n});\n"]}