@iamsaroj/smart-ui 0.2.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 (853) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/LICENSE +21 -0
  3. package/README.md +49 -0
  4. package/dist/calendar-engine/agenda-view.d.ts +8 -0
  5. package/dist/calendar-engine/agenda-view.d.ts.map +1 -0
  6. package/dist/calendar-engine/agenda-view.js +26 -0
  7. package/dist/calendar-engine/agenda-view.js.map +1 -0
  8. package/dist/calendar-engine/booking.d.ts +13 -0
  9. package/dist/calendar-engine/booking.d.ts.map +1 -0
  10. package/dist/calendar-engine/booking.js +45 -0
  11. package/dist/calendar-engine/booking.js.map +1 -0
  12. package/dist/calendar-engine/calendar-utils.d.ts +74 -0
  13. package/dist/calendar-engine/calendar-utils.d.ts.map +1 -0
  14. package/dist/calendar-engine/calendar-utils.js +221 -0
  15. package/dist/calendar-engine/calendar-utils.js.map +1 -0
  16. package/dist/calendar-engine/calendar.d.ts +62 -0
  17. package/dist/calendar-engine/calendar.d.ts.map +1 -0
  18. package/dist/calendar-engine/calendar.js +81 -0
  19. package/dist/calendar-engine/calendar.js.map +1 -0
  20. package/dist/calendar-engine/event-color.d.ts +20 -0
  21. package/dist/calendar-engine/event-color.d.ts.map +1 -0
  22. package/dist/calendar-engine/event-color.js +59 -0
  23. package/dist/calendar-engine/event-color.js.map +1 -0
  24. package/dist/calendar-engine/index.d.ts +11 -0
  25. package/dist/calendar-engine/index.d.ts.map +1 -0
  26. package/dist/calendar-engine/index.js +6 -0
  27. package/dist/calendar-engine/index.js.map +1 -0
  28. package/dist/calendar-engine/month-view.d.ts +10 -0
  29. package/dist/calendar-engine/month-view.d.ts.map +1 -0
  30. package/dist/calendar-engine/month-view.js +72 -0
  31. package/dist/calendar-engine/month-view.js.map +1 -0
  32. package/dist/calendar-engine/recurrence.d.ts +47 -0
  33. package/dist/calendar-engine/recurrence.d.ts.map +1 -0
  34. package/dist/calendar-engine/recurrence.js +209 -0
  35. package/dist/calendar-engine/recurrence.js.map +1 -0
  36. package/dist/calendar-engine/shared.d.ts +72 -0
  37. package/dist/calendar-engine/shared.d.ts.map +1 -0
  38. package/dist/calendar-engine/shared.js +34 -0
  39. package/dist/calendar-engine/shared.js.map +1 -0
  40. package/dist/calendar-engine/time-grid-view.d.ts +13 -0
  41. package/dist/calendar-engine/time-grid-view.d.ts.map +1 -0
  42. package/dist/calendar-engine/time-grid-view.js +203 -0
  43. package/dist/calendar-engine/time-grid-view.js.map +1 -0
  44. package/dist/calendar-engine/types.d.ts +138 -0
  45. package/dist/calendar-engine/types.d.ts.map +1 -0
  46. package/dist/calendar-engine/types.js +2 -0
  47. package/dist/calendar-engine/types.js.map +1 -0
  48. package/dist/calendar-engine/use-calendar.d.ts +7 -0
  49. package/dist/calendar-engine/use-calendar.d.ts.map +1 -0
  50. package/dist/calendar-engine/use-calendar.js +25 -0
  51. package/dist/calendar-engine/use-calendar.js.map +1 -0
  52. package/dist/components/accordion.d.ts +7 -0
  53. package/dist/components/accordion.d.ts.map +1 -0
  54. package/dist/components/accordion.js +10 -0
  55. package/dist/components/accordion.js.map +1 -0
  56. package/dist/components/alert-dialog.d.ts +19 -0
  57. package/dist/components/alert-dialog.d.ts.map +1 -0
  58. package/dist/components/alert-dialog.js +18 -0
  59. package/dist/components/alert-dialog.js.map +1 -0
  60. package/dist/components/alert.d.ts +11 -0
  61. package/dist/components/alert.d.ts.map +1 -0
  62. package/dist/components/alert.js +20 -0
  63. package/dist/components/alert.js.map +1 -0
  64. package/dist/components/aspect-ratio.d.ts +5 -0
  65. package/dist/components/aspect-ratio.d.ts.map +1 -0
  66. package/dist/components/aspect-ratio.js +7 -0
  67. package/dist/components/aspect-ratio.js.map +1 -0
  68. package/dist/components/avatar.d.ts +12 -0
  69. package/dist/components/avatar.d.ts.map +1 -0
  70. package/dist/components/avatar.js +11 -0
  71. package/dist/components/avatar.js.map +1 -0
  72. package/dist/components/badge.d.ts +8 -0
  73. package/dist/components/badge.d.ts.map +1 -0
  74. package/dist/components/badge.js +33 -0
  75. package/dist/components/badge.js.map +1 -0
  76. package/dist/components/breadcrumb.d.ts +11 -0
  77. package/dist/components/breadcrumb.d.ts.map +1 -0
  78. package/dist/components/breadcrumb.js +23 -0
  79. package/dist/components/breadcrumb.js.map +1 -0
  80. package/dist/components/button.d.ts +9 -0
  81. package/dist/components/button.d.ts.map +1 -0
  82. package/dist/components/button.js +34 -0
  83. package/dist/components/button.js.map +1 -0
  84. package/dist/components/calendar.d.ts +11 -0
  85. package/dist/components/calendar.d.ts.map +1 -0
  86. package/dist/components/calendar.js +77 -0
  87. package/dist/components/calendar.js.map +1 -0
  88. package/dist/components/card.d.ts +12 -0
  89. package/dist/components/card.d.ts.map +1 -0
  90. package/dist/components/card.js +11 -0
  91. package/dist/components/card.js.map +1 -0
  92. package/dist/components/carousel.d.ts +29 -0
  93. package/dist/components/carousel.d.ts.map +1 -0
  94. package/dist/components/carousel.js +94 -0
  95. package/dist/components/carousel.js.map +1 -0
  96. package/dist/components/chart.d.ts +45 -0
  97. package/dist/components/chart.d.ts.map +1 -0
  98. package/dist/components/chart.js +133 -0
  99. package/dist/components/chart.js.map +1 -0
  100. package/dist/components/checkbox.d.ts +4 -0
  101. package/dist/components/checkbox.d.ts.map +1 -0
  102. package/dist/components/checkbox.js +8 -0
  103. package/dist/components/checkbox.js.map +1 -0
  104. package/dist/components/collapsible.d.ts +6 -0
  105. package/dist/components/collapsible.d.ts.map +1 -0
  106. package/dist/components/collapsible.js +7 -0
  107. package/dist/components/collapsible.js.map +1 -0
  108. package/dist/components/combobox.d.ts +35 -0
  109. package/dist/components/combobox.d.ts.map +1 -0
  110. package/dist/components/combobox.js +45 -0
  111. package/dist/components/combobox.js.map +1 -0
  112. package/dist/components/command.d.ts +20 -0
  113. package/dist/components/command.d.ts.map +1 -0
  114. package/dist/components/command.js +18 -0
  115. package/dist/components/command.js.map +1 -0
  116. package/dist/components/context-menu.d.ts +30 -0
  117. package/dist/components/context-menu.d.ts.map +1 -0
  118. package/dist/components/context-menu.js +22 -0
  119. package/dist/components/context-menu.js.map +1 -0
  120. package/dist/components/data-table.d.ts +12 -0
  121. package/dist/components/data-table.d.ts.map +1 -0
  122. package/dist/components/data-table.js +44 -0
  123. package/dist/components/data-table.js.map +1 -0
  124. package/dist/components/date-picker.d.ts +33 -0
  125. package/dist/components/date-picker.d.ts.map +1 -0
  126. package/dist/components/date-picker.js +29 -0
  127. package/dist/components/date-picker.js.map +1 -0
  128. package/dist/components/dialog.d.ts +18 -0
  129. package/dist/components/dialog.d.ts.map +1 -0
  130. package/dist/components/dialog.js +18 -0
  131. package/dist/components/dialog.js.map +1 -0
  132. package/dist/components/drawer.d.ts +14 -0
  133. package/dist/components/drawer.d.ts.map +1 -0
  134. package/dist/components/drawer.js +15 -0
  135. package/dist/components/drawer.js.map +1 -0
  136. package/dist/components/dropdown-menu.d.ts +30 -0
  137. package/dist/components/dropdown-menu.d.ts.map +1 -0
  138. package/dist/components/dropdown-menu.js +22 -0
  139. package/dist/components/dropdown-menu.js.map +1 -0
  140. package/dist/components/hover-card.d.ts +6 -0
  141. package/dist/components/hover-card.d.ts.map +1 -0
  142. package/dist/components/hover-card.js +8 -0
  143. package/dist/components/hover-card.js.map +1 -0
  144. package/dist/components/input-group.d.ts +19 -0
  145. package/dist/components/input-group.d.ts.map +1 -0
  146. package/dist/components/input-group.js +46 -0
  147. package/dist/components/input-group.js.map +1 -0
  148. package/dist/components/input-otp.d.ts +12 -0
  149. package/dist/components/input-otp.d.ts.map +1 -0
  150. package/dist/components/input-otp.js +16 -0
  151. package/dist/components/input-otp.js.map +1 -0
  152. package/dist/components/input.d.ts +4 -0
  153. package/dist/components/input.d.ts.map +1 -0
  154. package/dist/components/input.js +6 -0
  155. package/dist/components/input.js.map +1 -0
  156. package/dist/components/kbd.d.ts +5 -0
  157. package/dist/components/kbd.d.ts.map +1 -0
  158. package/dist/components/kbd.js +6 -0
  159. package/dist/components/kbd.js.map +1 -0
  160. package/dist/components/label.d.ts +4 -0
  161. package/dist/components/label.d.ts.map +1 -0
  162. package/dist/components/label.js +5 -0
  163. package/dist/components/label.js.map +1 -0
  164. package/dist/components/menubar.d.ts +30 -0
  165. package/dist/components/menubar.d.ts.map +1 -0
  166. package/dist/components/menubar.js +24 -0
  167. package/dist/components/menubar.js.map +1 -0
  168. package/dist/components/navigation-menu.d.ts +12 -0
  169. package/dist/components/navigation-menu.d.ts.map +1 -0
  170. package/dist/components/navigation-menu.js +18 -0
  171. package/dist/components/navigation-menu.js.map +1 -0
  172. package/dist/components/pagination.d.ts +18 -0
  173. package/dist/components/pagination.d.ts.map +1 -0
  174. package/dist/components/pagination.js +13 -0
  175. package/dist/components/pagination.js.map +1 -0
  176. package/dist/components/popover.d.ts +10 -0
  177. package/dist/components/popover.d.ts.map +1 -0
  178. package/dist/components/popover.js +12 -0
  179. package/dist/components/popover.js.map +1 -0
  180. package/dist/components/progress.d.ts +8 -0
  181. package/dist/components/progress.d.ts.map +1 -0
  182. package/dist/components/progress.js +10 -0
  183. package/dist/components/progress.js.map +1 -0
  184. package/dist/components/radio-group.d.ts +6 -0
  185. package/dist/components/radio-group.d.ts.map +1 -0
  186. package/dist/components/radio-group.js +9 -0
  187. package/dist/components/radio-group.js.map +1 -0
  188. package/dist/components/scroll-area.d.ts +5 -0
  189. package/dist/components/scroll-area.d.ts.map +1 -0
  190. package/dist/components/scroll-area.js +8 -0
  191. package/dist/components/scroll-area.js.map +1 -0
  192. package/dist/components/select.d.ts +16 -0
  193. package/dist/components/select.d.ts.map +1 -0
  194. package/dist/components/select.js +16 -0
  195. package/dist/components/select.js.map +1 -0
  196. package/dist/components/separator.d.ts +4 -0
  197. package/dist/components/separator.d.ts.map +1 -0
  198. package/dist/components/separator.js +6 -0
  199. package/dist/components/separator.js.map +1 -0
  200. package/dist/components/sheet.d.ts +15 -0
  201. package/dist/components/sheet.d.ts.map +1 -0
  202. package/dist/components/sheet.js +18 -0
  203. package/dist/components/sheet.js.map +1 -0
  204. package/dist/components/sidebar.d.ts +64 -0
  205. package/dist/components/sidebar.d.ts.map +1 -0
  206. package/dist/components/sidebar.js +224 -0
  207. package/dist/components/sidebar.js.map +1 -0
  208. package/dist/components/skeleton.d.ts +3 -0
  209. package/dist/components/skeleton.d.ts.map +1 -0
  210. package/dist/components/skeleton.js +5 -0
  211. package/dist/components/skeleton.js.map +1 -0
  212. package/dist/components/slider.d.ts +4 -0
  213. package/dist/components/slider.d.ts.map +1 -0
  214. package/dist/components/slider.js +13 -0
  215. package/dist/components/slider.js.map +1 -0
  216. package/dist/components/sonner.d.ts +4 -0
  217. package/dist/components/sonner.d.ts.map +1 -0
  218. package/dist/components/sonner.js +25 -0
  219. package/dist/components/sonner.js.map +1 -0
  220. package/dist/components/switch.d.ts +6 -0
  221. package/dist/components/switch.d.ts.map +1 -0
  222. package/dist/components/switch.js +7 -0
  223. package/dist/components/switch.js.map +1 -0
  224. package/dist/components/table.d.ts +11 -0
  225. package/dist/components/table.d.ts.map +1 -0
  226. package/dist/components/table.js +12 -0
  227. package/dist/components/table.js.map +1 -0
  228. package/dist/components/tabs.d.ts +11 -0
  229. package/dist/components/tabs.d.ts.map +1 -0
  230. package/dist/components/tabs.js +23 -0
  231. package/dist/components/tabs.js.map +1 -0
  232. package/dist/components/textarea.d.ts +4 -0
  233. package/dist/components/textarea.d.ts.map +1 -0
  234. package/dist/components/textarea.js +5 -0
  235. package/dist/components/textarea.js.map +1 -0
  236. package/dist/components/toggle-group.d.ts +11 -0
  237. package/dist/components/toggle-group.d.ts.map +1 -0
  238. package/dist/components/toggle-group.js +22 -0
  239. package/dist/components/toggle-group.js.map +1 -0
  240. package/dist/components/toggle.d.ts +9 -0
  241. package/dist/components/toggle.d.ts.map +1 -0
  242. package/dist/components/toggle.js +25 -0
  243. package/dist/components/toggle.js.map +1 -0
  244. package/dist/components/tooltip.d.ts +7 -0
  245. package/dist/components/tooltip.d.ts.map +1 -0
  246. package/dist/components/tooltip.js +10 -0
  247. package/dist/components/tooltip.js.map +1 -0
  248. package/dist/data-grid/action-column-cell.d.ts +41 -0
  249. package/dist/data-grid/action-column-cell.d.ts.map +1 -0
  250. package/dist/data-grid/action-column-cell.js +114 -0
  251. package/dist/data-grid/action-column-cell.js.map +1 -0
  252. package/dist/data-grid/action-column.d.ts +144 -0
  253. package/dist/data-grid/action-column.d.ts.map +1 -0
  254. package/dist/data-grid/action-column.js +156 -0
  255. package/dist/data-grid/action-column.js.map +1 -0
  256. package/dist/data-grid/create-page-fetcher.d.ts +57 -0
  257. package/dist/data-grid/create-page-fetcher.d.ts.map +1 -0
  258. package/dist/data-grid/create-page-fetcher.js +41 -0
  259. package/dist/data-grid/create-page-fetcher.js.map +1 -0
  260. package/dist/data-grid/data-grid.d.ts +65 -0
  261. package/dist/data-grid/data-grid.d.ts.map +1 -0
  262. package/dist/data-grid/data-grid.js +95 -0
  263. package/dist/data-grid/data-grid.js.map +1 -0
  264. package/dist/data-grid/empty-state.d.ts +13 -0
  265. package/dist/data-grid/empty-state.d.ts.map +1 -0
  266. package/dist/data-grid/empty-state.js +6 -0
  267. package/dist/data-grid/empty-state.js.map +1 -0
  268. package/dist/data-grid/formula-guard.d.ts +22 -0
  269. package/dist/data-grid/formula-guard.d.ts.map +1 -0
  270. package/dist/data-grid/formula-guard.js +28 -0
  271. package/dist/data-grid/formula-guard.js.map +1 -0
  272. package/dist/data-grid/grid-internals.d.ts +16 -0
  273. package/dist/data-grid/grid-internals.d.ts.map +1 -0
  274. package/dist/data-grid/grid-internals.js +73 -0
  275. package/dist/data-grid/grid-internals.js.map +1 -0
  276. package/dist/data-grid/grid-theme.d.ts +8 -0
  277. package/dist/data-grid/grid-theme.d.ts.map +1 -0
  278. package/dist/data-grid/grid-theme.js +23 -0
  279. package/dist/data-grid/grid-theme.js.map +1 -0
  280. package/dist/data-grid/grid-toolbar.d.ts +40 -0
  281. package/dist/data-grid/grid-toolbar.d.ts.map +1 -0
  282. package/dist/data-grid/grid-toolbar.js +13 -0
  283. package/dist/data-grid/grid-toolbar.js.map +1 -0
  284. package/dist/data-grid/index.d.ts +10 -0
  285. package/dist/data-grid/index.d.ts.map +1 -0
  286. package/dist/data-grid/index.js +9 -0
  287. package/dist/data-grid/index.js.map +1 -0
  288. package/dist/data-grid/pagination.d.ts +146 -0
  289. package/dist/data-grid/pagination.d.ts.map +1 -0
  290. package/dist/data-grid/pagination.js +128 -0
  291. package/dist/data-grid/pagination.js.map +1 -0
  292. package/dist/data-grid/server-data-grid.d.ts +109 -0
  293. package/dist/data-grid/server-data-grid.d.ts.map +1 -0
  294. package/dist/data-grid/server-data-grid.js +240 -0
  295. package/dist/data-grid/server-data-grid.js.map +1 -0
  296. package/dist/data-grid/server-grid-internals.d.ts +79 -0
  297. package/dist/data-grid/server-grid-internals.d.ts.map +1 -0
  298. package/dist/data-grid/server-grid-internals.js +137 -0
  299. package/dist/data-grid/server-grid-internals.js.map +1 -0
  300. package/dist/data-grid/use-action-column.d.ts +22 -0
  301. package/dist/data-grid/use-action-column.d.ts.map +1 -0
  302. package/dist/data-grid/use-action-column.js +63 -0
  303. package/dist/data-grid/use-action-column.js.map +1 -0
  304. package/dist/data-grid/use-server-grid-selection.d.ts +35 -0
  305. package/dist/data-grid/use-server-grid-selection.d.ts.map +1 -0
  306. package/dist/data-grid/use-server-grid-selection.js +81 -0
  307. package/dist/data-grid/use-server-grid-selection.js.map +1 -0
  308. package/dist/form-engine/base.d.ts +19 -0
  309. package/dist/form-engine/base.d.ts.map +1 -0
  310. package/dist/form-engine/base.js +2 -0
  311. package/dist/form-engine/base.js.map +1 -0
  312. package/dist/form-engine/field-registry.d.ts +285 -0
  313. package/dist/form-engine/field-registry.d.ts.map +1 -0
  314. package/dist/form-engine/field-registry.js +306 -0
  315. package/dist/form-engine/field-registry.js.map +1 -0
  316. package/dist/form-engine/field-types.d.ts +201 -0
  317. package/dist/form-engine/field-types.d.ts.map +1 -0
  318. package/dist/form-engine/field-types.js +14 -0
  319. package/dist/form-engine/field-types.js.map +1 -0
  320. package/dist/form-engine/index.d.ts +20 -0
  321. package/dist/form-engine/index.d.ts.map +1 -0
  322. package/dist/form-engine/index.js +21 -0
  323. package/dist/form-engine/index.js.map +1 -0
  324. package/dist/form-engine/smart-checkbox-field.d.ts +5 -0
  325. package/dist/form-engine/smart-checkbox-field.d.ts.map +1 -0
  326. package/dist/form-engine/smart-checkbox-field.js +9 -0
  327. package/dist/form-engine/smart-checkbox-field.js.map +1 -0
  328. package/dist/form-engine/smart-checkbox-group-field.d.ts +10 -0
  329. package/dist/form-engine/smart-checkbox-group-field.d.ts.map +1 -0
  330. package/dist/form-engine/smart-checkbox-group-field.js +5 -0
  331. package/dist/form-engine/smart-checkbox-group-field.js.map +1 -0
  332. package/dist/form-engine/smart-combobox-field.d.ts +11 -0
  333. package/dist/form-engine/smart-combobox-field.d.ts.map +1 -0
  334. package/dist/form-engine/smart-combobox-field.js +5 -0
  335. package/dist/form-engine/smart-combobox-field.js.map +1 -0
  336. package/dist/form-engine/smart-date-field.d.ts +8 -0
  337. package/dist/form-engine/smart-date-field.d.ts.map +1 -0
  338. package/dist/form-engine/smart-date-field.js +17 -0
  339. package/dist/form-engine/smart-date-field.js.map +1 -0
  340. package/dist/form-engine/smart-date-range-field.d.ts +15 -0
  341. package/dist/form-engine/smart-date-range-field.d.ts.map +1 -0
  342. package/dist/form-engine/smart-date-range-field.js +25 -0
  343. package/dist/form-engine/smart-date-range-field.js.map +1 -0
  344. package/dist/form-engine/smart-datetime-field.d.ts +12 -0
  345. package/dist/form-engine/smart-datetime-field.d.ts.map +1 -0
  346. package/dist/form-engine/smart-datetime-field.js +12 -0
  347. package/dist/form-engine/smart-datetime-field.js.map +1 -0
  348. package/dist/form-engine/smart-form-internals.d.ts +14 -0
  349. package/dist/form-engine/smart-form-internals.d.ts.map +1 -0
  350. package/dist/form-engine/smart-form-internals.js +64 -0
  351. package/dist/form-engine/smart-form-internals.js.map +1 -0
  352. package/dist/form-engine/smart-form.d.ts +55 -0
  353. package/dist/form-engine/smart-form.d.ts.map +1 -0
  354. package/dist/form-engine/smart-form.js +229 -0
  355. package/dist/form-engine/smart-form.js.map +1 -0
  356. package/dist/form-engine/smart-input-field.d.ts +9 -0
  357. package/dist/form-engine/smart-input-field.d.ts.map +1 -0
  358. package/dist/form-engine/smart-input-field.js +5 -0
  359. package/dist/form-engine/smart-input-field.js.map +1 -0
  360. package/dist/form-engine/smart-month-field.d.ts +8 -0
  361. package/dist/form-engine/smart-month-field.d.ts.map +1 -0
  362. package/dist/form-engine/smart-month-field.js +12 -0
  363. package/dist/form-engine/smart-month-field.js.map +1 -0
  364. package/dist/form-engine/smart-multi-select-field.d.ts +11 -0
  365. package/dist/form-engine/smart-multi-select-field.d.ts.map +1 -0
  366. package/dist/form-engine/smart-multi-select-field.js +5 -0
  367. package/dist/form-engine/smart-multi-select-field.js.map +1 -0
  368. package/dist/form-engine/smart-number-field.d.ts +22 -0
  369. package/dist/form-engine/smart-number-field.d.ts.map +1 -0
  370. package/dist/form-engine/smart-number-field.js +115 -0
  371. package/dist/form-engine/smart-number-field.js.map +1 -0
  372. package/dist/form-engine/smart-password-field.d.ts +7 -0
  373. package/dist/form-engine/smart-password-field.d.ts.map +1 -0
  374. package/dist/form-engine/smart-password-field.js +5 -0
  375. package/dist/form-engine/smart-password-field.js.map +1 -0
  376. package/dist/form-engine/smart-radio-group-field.d.ts +10 -0
  377. package/dist/form-engine/smart-radio-group-field.d.ts.map +1 -0
  378. package/dist/form-engine/smart-radio-group-field.js +5 -0
  379. package/dist/form-engine/smart-radio-group-field.js.map +1 -0
  380. package/dist/form-engine/smart-segmented-field.d.ts +9 -0
  381. package/dist/form-engine/smart-segmented-field.d.ts.map +1 -0
  382. package/dist/form-engine/smart-segmented-field.js +5 -0
  383. package/dist/form-engine/smart-segmented-field.js.map +1 -0
  384. package/dist/form-engine/smart-select-field.d.ts +10 -0
  385. package/dist/form-engine/smart-select-field.d.ts.map +1 -0
  386. package/dist/form-engine/smart-select-field.js +5 -0
  387. package/dist/form-engine/smart-select-field.js.map +1 -0
  388. package/dist/form-engine/smart-slug-field.d.ts +12 -0
  389. package/dist/form-engine/smart-slug-field.d.ts.map +1 -0
  390. package/dist/form-engine/smart-slug-field.js +14 -0
  391. package/dist/form-engine/smart-slug-field.js.map +1 -0
  392. package/dist/form-engine/smart-switch-field.d.ts +5 -0
  393. package/dist/form-engine/smart-switch-field.d.ts.map +1 -0
  394. package/dist/form-engine/smart-switch-field.js +9 -0
  395. package/dist/form-engine/smart-switch-field.js.map +1 -0
  396. package/dist/form-engine/smart-tel-field.d.ts +7 -0
  397. package/dist/form-engine/smart-tel-field.d.ts.map +1 -0
  398. package/dist/form-engine/smart-tel-field.js +6 -0
  399. package/dist/form-engine/smart-tel-field.js.map +1 -0
  400. package/dist/form-engine/smart-text-editor-field.d.ts +15 -0
  401. package/dist/form-engine/smart-text-editor-field.d.ts.map +1 -0
  402. package/dist/form-engine/smart-text-editor-field.js +5 -0
  403. package/dist/form-engine/smart-text-editor-field.js.map +1 -0
  404. package/dist/form-engine/smart-textarea-field.d.ts +8 -0
  405. package/dist/form-engine/smart-textarea-field.d.ts.map +1 -0
  406. package/dist/form-engine/smart-textarea-field.js +5 -0
  407. package/dist/form-engine/smart-textarea-field.js.map +1 -0
  408. package/dist/form-engine/smart-time-field.d.ts +10 -0
  409. package/dist/form-engine/smart-time-field.d.ts.map +1 -0
  410. package/dist/form-engine/smart-time-field.js +5 -0
  411. package/dist/form-engine/smart-time-field.js.map +1 -0
  412. package/dist/form-engine/smart-time-range-field.d.ts +13 -0
  413. package/dist/form-engine/smart-time-range-field.d.ts.map +1 -0
  414. package/dist/form-engine/smart-time-range-field.js +5 -0
  415. package/dist/form-engine/smart-time-range-field.js.map +1 -0
  416. package/dist/form-engine/smart-year-field.d.ts +8 -0
  417. package/dist/form-engine/smart-year-field.d.ts.map +1 -0
  418. package/dist/form-engine/smart-year-field.js +5 -0
  419. package/dist/form-engine/smart-year-field.js.map +1 -0
  420. package/dist/form-engine/smart-yesno-field.d.ts +12 -0
  421. package/dist/form-engine/smart-yesno-field.d.ts.map +1 -0
  422. package/dist/form-engine/smart-yesno-field.js +14 -0
  423. package/dist/form-engine/smart-yesno-field.js.map +1 -0
  424. package/dist/hooks/use-mobile.d.ts +2 -0
  425. package/dist/hooks/use-mobile.d.ts.map +1 -0
  426. package/dist/hooks/use-mobile.js +17 -0
  427. package/dist/hooks/use-mobile.js.map +1 -0
  428. package/dist/lexical-text-editor/SmartTextEditor.d.ts +61 -0
  429. package/dist/lexical-text-editor/SmartTextEditor.d.ts.map +1 -0
  430. package/dist/lexical-text-editor/SmartTextEditor.js +145 -0
  431. package/dist/lexical-text-editor/SmartTextEditor.js.map +1 -0
  432. package/dist/lexical-text-editor/editor-nodes.d.ts +3 -0
  433. package/dist/lexical-text-editor/editor-nodes.d.ts.map +1 -0
  434. package/dist/lexical-text-editor/editor-nodes.js +25 -0
  435. package/dist/lexical-text-editor/editor-nodes.js.map +1 -0
  436. package/dist/lexical-text-editor/editor-theme.d.ts +3 -0
  437. package/dist/lexical-text-editor/editor-theme.d.ts.map +1 -0
  438. package/dist/lexical-text-editor/editor-theme.js +78 -0
  439. package/dist/lexical-text-editor/editor-theme.js.map +1 -0
  440. package/dist/lexical-text-editor/index.d.ts +8 -0
  441. package/dist/lexical-text-editor/index.d.ts.map +1 -0
  442. package/dist/lexical-text-editor/index.js +6 -0
  443. package/dist/lexical-text-editor/index.js.map +1 -0
  444. package/dist/lexical-text-editor/nodes/image-node.d.ts +41 -0
  445. package/dist/lexical-text-editor/nodes/image-node.d.ts.map +1 -0
  446. package/dist/lexical-text-editor/nodes/image-node.js +89 -0
  447. package/dist/lexical-text-editor/nodes/image-node.js.map +1 -0
  448. package/dist/lexical-text-editor/nodes/page-break-node.d.ts +25 -0
  449. package/dist/lexical-text-editor/nodes/page-break-node.d.ts.map +1 -0
  450. package/dist/lexical-text-editor/nodes/page-break-node.js +84 -0
  451. package/dist/lexical-text-editor/nodes/page-break-node.js.map +1 -0
  452. package/dist/lexical-text-editor/plugins/auto-link-plugin.d.ts +3 -0
  453. package/dist/lexical-text-editor/plugins/auto-link-plugin.d.ts.map +1 -0
  454. package/dist/lexical-text-editor/plugins/auto-link-plugin.js +12 -0
  455. package/dist/lexical-text-editor/plugins/auto-link-plugin.js.map +1 -0
  456. package/dist/lexical-text-editor/plugins/code-highlight-plugin.d.ts +6 -0
  457. package/dist/lexical-text-editor/plugins/code-highlight-plugin.d.ts.map +1 -0
  458. package/dist/lexical-text-editor/plugins/code-highlight-plugin.js +14 -0
  459. package/dist/lexical-text-editor/plugins/code-highlight-plugin.js.map +1 -0
  460. package/dist/lexical-text-editor/plugins/toolbar/align-menu.d.ts +7 -0
  461. package/dist/lexical-text-editor/plugins/toolbar/align-menu.d.ts.map +1 -0
  462. package/dist/lexical-text-editor/plugins/toolbar/align-menu.js +8 -0
  463. package/dist/lexical-text-editor/plugins/toolbar/align-menu.js.map +1 -0
  464. package/dist/lexical-text-editor/plugins/toolbar/block-format-menu.d.ts +20 -0
  465. package/dist/lexical-text-editor/plugins/toolbar/block-format-menu.d.ts.map +1 -0
  466. package/dist/lexical-text-editor/plugins/toolbar/block-format-menu.js +78 -0
  467. package/dist/lexical-text-editor/plugins/toolbar/block-format-menu.js.map +1 -0
  468. package/dist/lexical-text-editor/plugins/toolbar/constants.d.ts +36 -0
  469. package/dist/lexical-text-editor/plugins/toolbar/constants.d.ts.map +1 -0
  470. package/dist/lexical-text-editor/plugins/toolbar/constants.js +67 -0
  471. package/dist/lexical-text-editor/plugins/toolbar/constants.js.map +1 -0
  472. package/dist/lexical-text-editor/plugins/toolbar/inline-marks.d.ts +14 -0
  473. package/dist/lexical-text-editor/plugins/toolbar/inline-marks.d.ts.map +1 -0
  474. package/dist/lexical-text-editor/plugins/toolbar/inline-marks.js +129 -0
  475. package/dist/lexical-text-editor/plugins/toolbar/inline-marks.js.map +1 -0
  476. package/dist/lexical-text-editor/plugins/toolbar/insert-menu.d.ts +8 -0
  477. package/dist/lexical-text-editor/plugins/toolbar/insert-menu.d.ts.map +1 -0
  478. package/dist/lexical-text-editor/plugins/toolbar/insert-menu.js +87 -0
  479. package/dist/lexical-text-editor/plugins/toolbar/insert-menu.js.map +1 -0
  480. package/dist/lexical-text-editor/plugins/toolbar/link-editor.d.ts +11 -0
  481. package/dist/lexical-text-editor/plugins/toolbar/link-editor.d.ts.map +1 -0
  482. package/dist/lexical-text-editor/plugins/toolbar/link-editor.js +51 -0
  483. package/dist/lexical-text-editor/plugins/toolbar/link-editor.js.map +1 -0
  484. package/dist/lexical-text-editor/plugins/toolbar/primitives.d.ts +39 -0
  485. package/dist/lexical-text-editor/plugins/toolbar/primitives.d.ts.map +1 -0
  486. package/dist/lexical-text-editor/plugins/toolbar/primitives.js +47 -0
  487. package/dist/lexical-text-editor/plugins/toolbar/primitives.js.map +1 -0
  488. package/dist/lexical-text-editor/plugins/toolbar/use-insert-commands.d.ts +9 -0
  489. package/dist/lexical-text-editor/plugins/toolbar/use-insert-commands.d.ts.map +1 -0
  490. package/dist/lexical-text-editor/plugins/toolbar/use-insert-commands.js +29 -0
  491. package/dist/lexical-text-editor/plugins/toolbar/use-insert-commands.js.map +1 -0
  492. package/dist/lexical-text-editor/plugins/toolbar/use-toolbar-state.d.ts +30 -0
  493. package/dist/lexical-text-editor/plugins/toolbar/use-toolbar-state.d.ts.map +1 -0
  494. package/dist/lexical-text-editor/plugins/toolbar/use-toolbar-state.js +128 -0
  495. package/dist/lexical-text-editor/plugins/toolbar/use-toolbar-state.js.map +1 -0
  496. package/dist/lexical-text-editor/plugins/toolbar-plugin.d.ts +8 -0
  497. package/dist/lexical-text-editor/plugins/toolbar-plugin.d.ts.map +1 -0
  498. package/dist/lexical-text-editor/plugins/toolbar-plugin.js +51 -0
  499. package/dist/lexical-text-editor/plugins/toolbar-plugin.js.map +1 -0
  500. package/dist/lexical-text-editor/sanitize.d.ts +24 -0
  501. package/dist/lexical-text-editor/sanitize.d.ts.map +1 -0
  502. package/dist/lexical-text-editor/sanitize.js +140 -0
  503. package/dist/lexical-text-editor/sanitize.js.map +1 -0
  504. package/dist/lib/format.d.ts +17 -0
  505. package/dist/lib/format.d.ts.map +1 -0
  506. package/dist/lib/format.js +40 -0
  507. package/dist/lib/format.js.map +1 -0
  508. package/dist/lib/leading-space.d.ts +28 -0
  509. package/dist/lib/leading-space.d.ts.map +1 -0
  510. package/dist/lib/leading-space.js +34 -0
  511. package/dist/lib/leading-space.js.map +1 -0
  512. package/dist/lib/utils.d.ts +3 -0
  513. package/dist/lib/utils.d.ts.map +1 -0
  514. package/dist/lib/utils.js +4 -0
  515. package/dist/lib/utils.js.map +1 -0
  516. package/dist/lib/xlsx.d.ts +80 -0
  517. package/dist/lib/xlsx.d.ts.map +1 -0
  518. package/dist/lib/xlsx.js +377 -0
  519. package/dist/lib/xlsx.js.map +1 -0
  520. package/dist/search-engine/build-query.d.ts +29 -0
  521. package/dist/search-engine/build-query.d.ts.map +1 -0
  522. package/dist/search-engine/build-query.js +51 -0
  523. package/dist/search-engine/build-query.js.map +1 -0
  524. package/dist/search-engine/index.d.ts +15 -0
  525. package/dist/search-engine/index.d.ts.map +1 -0
  526. package/dist/search-engine/index.js +13 -0
  527. package/dist/search-engine/index.js.map +1 -0
  528. package/dist/search-engine/smart-search-form.d.ts +92 -0
  529. package/dist/search-engine/smart-search-form.d.ts.map +1 -0
  530. package/dist/search-engine/smart-search-form.js +136 -0
  531. package/dist/search-engine/smart-search-form.js.map +1 -0
  532. package/dist/search-engine/types.d.ts +40 -0
  533. package/dist/search-engine/types.d.ts.map +1 -0
  534. package/dist/search-engine/types.js +11 -0
  535. package/dist/search-engine/types.js.map +1 -0
  536. package/dist/smart-components/buttons/action-button.d.ts +66 -0
  537. package/dist/smart-components/buttons/action-button.d.ts.map +1 -0
  538. package/dist/smart-components/buttons/action-button.js +79 -0
  539. package/dist/smart-components/buttons/action-button.js.map +1 -0
  540. package/dist/smart-components/buttons/action-buttons.d.ts +122 -0
  541. package/dist/smart-components/buttons/action-buttons.d.ts.map +1 -0
  542. package/dist/smart-components/buttons/action-buttons.js +42 -0
  543. package/dist/smart-components/buttons/action-buttons.js.map +1 -0
  544. package/dist/smart-components/buttons/action-config.d.ts +181 -0
  545. package/dist/smart-components/buttons/action-config.d.ts.map +1 -0
  546. package/dist/smart-components/buttons/action-config.js +128 -0
  547. package/dist/smart-components/buttons/action-config.js.map +1 -0
  548. package/dist/smart-components/buttons/index.d.ts +4 -0
  549. package/dist/smart-components/buttons/index.d.ts.map +1 -0
  550. package/dist/smart-components/buttons/index.js +7 -0
  551. package/dist/smart-components/buttons/index.js.map +1 -0
  552. package/dist/smart-components/loading-overlay.d.ts +16 -0
  553. package/dist/smart-components/loading-overlay.d.ts.map +1 -0
  554. package/dist/smart-components/loading-overlay.js +13 -0
  555. package/dist/smart-components/loading-overlay.js.map +1 -0
  556. package/dist/smart-components/page/index.d.ts +19 -0
  557. package/dist/smart-components/page/index.d.ts.map +1 -0
  558. package/dist/smart-components/page/index.js +33 -0
  559. package/dist/smart-components/page/index.js.map +1 -0
  560. package/dist/smart-components/page/layouts/page-states.d.ts +17 -0
  561. package/dist/smart-components/page/layouts/page-states.d.ts.map +1 -0
  562. package/dist/smart-components/page/layouts/page-states.js +12 -0
  563. package/dist/smart-components/page/layouts/page-states.js.map +1 -0
  564. package/dist/smart-components/page/layouts/slot-buckets.d.ts +21 -0
  565. package/dist/smart-components/page/layouts/slot-buckets.d.ts.map +1 -0
  566. package/dist/smart-components/page/layouts/slot-buckets.js +2 -0
  567. package/dist/smart-components/page/layouts/slot-buckets.js.map +1 -0
  568. package/dist/smart-components/page/layouts/split-layout.d.ts +13 -0
  569. package/dist/smart-components/page/layouts/split-layout.d.ts.map +1 -0
  570. package/dist/smart-components/page/layouts/split-layout.js +14 -0
  571. package/dist/smart-components/page/layouts/split-layout.js.map +1 -0
  572. package/dist/smart-components/page/layouts/standard-layout.d.ts +18 -0
  573. package/dist/smart-components/page/layouts/standard-layout.d.ts.map +1 -0
  574. package/dist/smart-components/page/layouts/standard-layout.js +61 -0
  575. package/dist/smart-components/page/layouts/standard-layout.js.map +1 -0
  576. package/dist/smart-components/page/page-context.d.ts +51 -0
  577. package/dist/smart-components/page/page-context.d.ts.map +1 -0
  578. package/dist/smart-components/page/page-context.js +21 -0
  579. package/dist/smart-components/page/page-context.js.map +1 -0
  580. package/dist/smart-components/page/slot.d.ts +19 -0
  581. package/dist/smart-components/page/slot.d.ts.map +1 -0
  582. package/dist/smart-components/page/slot.js +18 -0
  583. package/dist/smart-components/page/slot.js.map +1 -0
  584. package/dist/smart-components/page/smart-grid-area.d.ts +75 -0
  585. package/dist/smart-components/page/smart-grid-area.d.ts.map +1 -0
  586. package/dist/smart-components/page/smart-grid-area.js +61 -0
  587. package/dist/smart-components/page/smart-grid-area.js.map +1 -0
  588. package/dist/smart-components/page/smart-page-container.d.ts +66 -0
  589. package/dist/smart-components/page/smart-page-container.d.ts.map +1 -0
  590. package/dist/smart-components/page/smart-page-container.js +93 -0
  591. package/dist/smart-components/page/smart-page-container.js.map +1 -0
  592. package/dist/smart-components/page/smart-page-content.d.ts +70 -0
  593. package/dist/smart-components/page/smart-page-content.d.ts.map +1 -0
  594. package/dist/smart-components/page/smart-page-content.js +78 -0
  595. package/dist/smart-components/page/smart-page-content.js.map +1 -0
  596. package/dist/smart-components/page/smart-page-empty.d.ts +47 -0
  597. package/dist/smart-components/page/smart-page-empty.d.ts.map +1 -0
  598. package/dist/smart-components/page/smart-page-empty.js +37 -0
  599. package/dist/smart-components/page/smart-page-empty.js.map +1 -0
  600. package/dist/smart-components/page/smart-page-error.d.ts +59 -0
  601. package/dist/smart-components/page/smart-page-error.d.ts.map +1 -0
  602. package/dist/smart-components/page/smart-page-error.js +45 -0
  603. package/dist/smart-components/page/smart-page-error.js.map +1 -0
  604. package/dist/smart-components/page/smart-page-filters.d.ts +38 -0
  605. package/dist/smart-components/page/smart-page-filters.d.ts.map +1 -0
  606. package/dist/smart-components/page/smart-page-filters.js +33 -0
  607. package/dist/smart-components/page/smart-page-filters.js.map +1 -0
  608. package/dist/smart-components/page/smart-page-footer.d.ts +49 -0
  609. package/dist/smart-components/page/smart-page-footer.d.ts.map +1 -0
  610. package/dist/smart-components/page/smart-page-footer.js +49 -0
  611. package/dist/smart-components/page/smart-page-footer.js.map +1 -0
  612. package/dist/smart-components/page/smart-page-header.d.ts +145 -0
  613. package/dist/smart-components/page/smart-page-header.d.ts.map +1 -0
  614. package/dist/smart-components/page/smart-page-header.js +129 -0
  615. package/dist/smart-components/page/smart-page-header.js.map +1 -0
  616. package/dist/smart-components/page/smart-page-hero.d.ts +43 -0
  617. package/dist/smart-components/page/smart-page-hero.d.ts.map +1 -0
  618. package/dist/smart-components/page/smart-page-hero.js +42 -0
  619. package/dist/smart-components/page/smart-page-hero.js.map +1 -0
  620. package/dist/smart-components/page/smart-page-loading.d.ts +31 -0
  621. package/dist/smart-components/page/smart-page-loading.d.ts.map +1 -0
  622. package/dist/smart-components/page/smart-page-loading.js +29 -0
  623. package/dist/smart-components/page/smart-page-loading.js.map +1 -0
  624. package/dist/smart-components/page/smart-page-search.d.ts +39 -0
  625. package/dist/smart-components/page/smart-page-search.d.ts.map +1 -0
  626. package/dist/smart-components/page/smart-page-search.js +38 -0
  627. package/dist/smart-components/page/smart-page-search.js.map +1 -0
  628. package/dist/smart-components/page/smart-page-section.d.ts +55 -0
  629. package/dist/smart-components/page/smart-page-section.d.ts.map +1 -0
  630. package/dist/smart-components/page/smart-page-section.js +41 -0
  631. package/dist/smart-components/page/smart-page-section.js.map +1 -0
  632. package/dist/smart-components/page/smart-page-status-bar.d.ts +34 -0
  633. package/dist/smart-components/page/smart-page-status-bar.d.ts.map +1 -0
  634. package/dist/smart-components/page/smart-page-status-bar.js +33 -0
  635. package/dist/smart-components/page/smart-page-status-bar.js.map +1 -0
  636. package/dist/smart-components/page/smart-page-tabs.d.ts +93 -0
  637. package/dist/smart-components/page/smart-page-tabs.d.ts.map +1 -0
  638. package/dist/smart-components/page/smart-page-tabs.js +87 -0
  639. package/dist/smart-components/page/smart-page-tabs.js.map +1 -0
  640. package/dist/smart-components/page/smart-page.d.ts +141 -0
  641. package/dist/smart-components/page/smart-page.d.ts.map +1 -0
  642. package/dist/smart-components/page/smart-page.js +295 -0
  643. package/dist/smart-components/page/smart-page.js.map +1 -0
  644. package/dist/smart-components/page/smart-sidebar.d.ts +70 -0
  645. package/dist/smart-components/page/smart-sidebar.d.ts.map +1 -0
  646. package/dist/smart-components/page/smart-sidebar.js +54 -0
  647. package/dist/smart-components/page/smart-sidebar.js.map +1 -0
  648. package/dist/smart-components/page/smart-toolbar.d.ts +40 -0
  649. package/dist/smart-components/page/smart-toolbar.d.ts.map +1 -0
  650. package/dist/smart-components/page/smart-toolbar.js +39 -0
  651. package/dist/smart-components/page/smart-toolbar.js.map +1 -0
  652. package/dist/smart-components/search-input.d.ts +20 -0
  653. package/dist/smart-components/search-input.d.ts.map +1 -0
  654. package/dist/smart-components/search-input.js +12 -0
  655. package/dist/smart-components/search-input.js.map +1 -0
  656. package/dist/smart-components/smart-accordion.d.ts +53 -0
  657. package/dist/smart-components/smart-accordion.d.ts.map +1 -0
  658. package/dist/smart-components/smart-accordion.js +33 -0
  659. package/dist/smart-components/smart-accordion.js.map +1 -0
  660. package/dist/smart-components/smart-alert.d.ts +44 -0
  661. package/dist/smart-components/smart-alert.d.ts.map +1 -0
  662. package/dist/smart-components/smart-alert.js +27 -0
  663. package/dist/smart-components/smart-alert.js.map +1 -0
  664. package/dist/smart-components/smart-avatar.d.ts +3 -0
  665. package/dist/smart-components/smart-avatar.d.ts.map +1 -0
  666. package/dist/smart-components/smart-avatar.js +4 -0
  667. package/dist/smart-components/smart-avatar.js.map +1 -0
  668. package/dist/smart-components/smart-badge.d.ts +28 -0
  669. package/dist/smart-components/smart-badge.d.ts.map +1 -0
  670. package/dist/smart-components/smart-badge.js +24 -0
  671. package/dist/smart-components/smart-badge.js.map +1 -0
  672. package/dist/smart-components/smart-breadcrumb.d.ts +43 -0
  673. package/dist/smart-components/smart-breadcrumb.d.ts.map +1 -0
  674. package/dist/smart-components/smart-breadcrumb.js +37 -0
  675. package/dist/smart-components/smart-breadcrumb.js.map +1 -0
  676. package/dist/smart-components/smart-button.d.ts +22 -0
  677. package/dist/smart-components/smart-button.d.ts.map +1 -0
  678. package/dist/smart-components/smart-button.js +15 -0
  679. package/dist/smart-components/smart-button.js.map +1 -0
  680. package/dist/smart-components/smart-calendar.d.ts +78 -0
  681. package/dist/smart-components/smart-calendar.d.ts.map +1 -0
  682. package/dist/smart-components/smart-calendar.js +45 -0
  683. package/dist/smart-components/smart-calendar.js.map +1 -0
  684. package/dist/smart-components/smart-card.d.ts +55 -0
  685. package/dist/smart-components/smart-card.d.ts.map +1 -0
  686. package/dist/smart-components/smart-card.js +37 -0
  687. package/dist/smart-components/smart-card.js.map +1 -0
  688. package/dist/smart-components/smart-checkbox-group.d.ts +48 -0
  689. package/dist/smart-components/smart-checkbox-group.d.ts.map +1 -0
  690. package/dist/smart-components/smart-checkbox-group.js +48 -0
  691. package/dist/smart-components/smart-checkbox-group.js.map +1 -0
  692. package/dist/smart-components/smart-checkbox.d.ts +34 -0
  693. package/dist/smart-components/smart-checkbox.d.ts.map +1 -0
  694. package/dist/smart-components/smart-checkbox.js +34 -0
  695. package/dist/smart-components/smart-checkbox.js.map +1 -0
  696. package/dist/smart-components/smart-combobox.d.ts +36 -0
  697. package/dist/smart-components/smart-combobox.d.ts.map +1 -0
  698. package/dist/smart-components/smart-combobox.js +32 -0
  699. package/dist/smart-components/smart-combobox.js.map +1 -0
  700. package/dist/smart-components/smart-confirm-dialog.d.ts +63 -0
  701. package/dist/smart-components/smart-confirm-dialog.d.ts.map +1 -0
  702. package/dist/smart-components/smart-confirm-dialog.js +45 -0
  703. package/dist/smart-components/smart-confirm-dialog.js.map +1 -0
  704. package/dist/smart-components/smart-context-menu.d.ts +58 -0
  705. package/dist/smart-components/smart-context-menu.d.ts.map +1 -0
  706. package/dist/smart-components/smart-context-menu.js +38 -0
  707. package/dist/smart-components/smart-context-menu.js.map +1 -0
  708. package/dist/smart-components/smart-date-picker.d.ts +99 -0
  709. package/dist/smart-components/smart-date-picker.d.ts.map +1 -0
  710. package/dist/smart-components/smart-date-picker.js +78 -0
  711. package/dist/smart-components/smart-date-picker.js.map +1 -0
  712. package/dist/smart-components/smart-date-range-picker.d.ts +37 -0
  713. package/dist/smart-components/smart-date-range-picker.d.ts.map +1 -0
  714. package/dist/smart-components/smart-date-range-picker.js +38 -0
  715. package/dist/smart-components/smart-date-range-picker.js.map +1 -0
  716. package/dist/smart-components/smart-dialog.d.ts +75 -0
  717. package/dist/smart-components/smart-dialog.d.ts.map +1 -0
  718. package/dist/smart-components/smart-dialog.js +61 -0
  719. package/dist/smart-components/smart-dialog.js.map +1 -0
  720. package/dist/smart-components/smart-drawer.d.ts +48 -0
  721. package/dist/smart-components/smart-drawer.d.ts.map +1 -0
  722. package/dist/smart-components/smart-drawer.js +32 -0
  723. package/dist/smart-components/smart-drawer.js.map +1 -0
  724. package/dist/smart-components/smart-field.d.ts +47 -0
  725. package/dist/smart-components/smart-field.d.ts.map +1 -0
  726. package/dist/smart-components/smart-field.js +44 -0
  727. package/dist/smart-components/smart-field.js.map +1 -0
  728. package/dist/smart-components/smart-input-group.d.ts +60 -0
  729. package/dist/smart-components/smart-input-group.d.ts.map +1 -0
  730. package/dist/smart-components/smart-input-group.js +40 -0
  731. package/dist/smart-components/smart-input-group.js.map +1 -0
  732. package/dist/smart-components/smart-input.d.ts +46 -0
  733. package/dist/smart-components/smart-input.d.ts.map +1 -0
  734. package/dist/smart-components/smart-input.js +36 -0
  735. package/dist/smart-components/smart-input.js.map +1 -0
  736. package/dist/smart-components/smart-label.d.ts +22 -0
  737. package/dist/smart-components/smart-label.d.ts.map +1 -0
  738. package/dist/smart-components/smart-label.js +17 -0
  739. package/dist/smart-components/smart-label.js.map +1 -0
  740. package/dist/smart-components/smart-month-picker.d.ts +30 -0
  741. package/dist/smart-components/smart-month-picker.d.ts.map +1 -0
  742. package/dist/smart-components/smart-month-picker.js +53 -0
  743. package/dist/smart-components/smart-month-picker.js.map +1 -0
  744. package/dist/smart-components/smart-multi-select.d.ts +38 -0
  745. package/dist/smart-components/smart-multi-select.d.ts.map +1 -0
  746. package/dist/smart-components/smart-multi-select.js +56 -0
  747. package/dist/smart-components/smart-multi-select.js.map +1 -0
  748. package/dist/smart-components/smart-native-select.d.ts +45 -0
  749. package/dist/smart-components/smart-native-select.d.ts.map +1 -0
  750. package/dist/smart-components/smart-native-select.js +33 -0
  751. package/dist/smart-components/smart-native-select.js.map +1 -0
  752. package/dist/smart-components/smart-nav-sidebar.d.ts +47 -0
  753. package/dist/smart-components/smart-nav-sidebar.d.ts.map +1 -0
  754. package/dist/smart-components/smart-nav-sidebar.js +37 -0
  755. package/dist/smart-components/smart-nav-sidebar.js.map +1 -0
  756. package/dist/smart-components/smart-password-input.d.ts +31 -0
  757. package/dist/smart-components/smart-password-input.d.ts.map +1 -0
  758. package/dist/smart-components/smart-password-input.js +30 -0
  759. package/dist/smart-components/smart-password-input.js.map +1 -0
  760. package/dist/smart-components/smart-radio-group.d.ts +58 -0
  761. package/dist/smart-components/smart-radio-group.d.ts.map +1 -0
  762. package/dist/smart-components/smart-radio-group.js +49 -0
  763. package/dist/smart-components/smart-radio-group.js.map +1 -0
  764. package/dist/smart-components/smart-segmented.d.ts +33 -0
  765. package/dist/smart-components/smart-segmented.d.ts.map +1 -0
  766. package/dist/smart-components/smart-segmented.js +25 -0
  767. package/dist/smart-components/smart-segmented.js.map +1 -0
  768. package/dist/smart-components/smart-select.d.ts +71 -0
  769. package/dist/smart-components/smart-select.d.ts.map +1 -0
  770. package/dist/smart-components/smart-select.js +44 -0
  771. package/dist/smart-components/smart-select.js.map +1 -0
  772. package/dist/smart-components/smart-separator.d.ts +3 -0
  773. package/dist/smart-components/smart-separator.d.ts.map +1 -0
  774. package/dist/smart-components/smart-separator.js +4 -0
  775. package/dist/smart-components/smart-separator.js.map +1 -0
  776. package/dist/smart-components/smart-sheet.d.ts +79 -0
  777. package/dist/smart-components/smart-sheet.d.ts.map +1 -0
  778. package/dist/smart-components/smart-sheet.js +47 -0
  779. package/dist/smart-components/smart-sheet.js.map +1 -0
  780. package/dist/smart-components/smart-stat-card.d.ts +47 -0
  781. package/dist/smart-components/smart-stat-card.d.ts.map +1 -0
  782. package/dist/smart-components/smart-stat-card.js +35 -0
  783. package/dist/smart-components/smart-stat-card.js.map +1 -0
  784. package/dist/smart-components/smart-stepper.d.ts +24 -0
  785. package/dist/smart-components/smart-stepper.d.ts.map +1 -0
  786. package/dist/smart-components/smart-stepper.js +24 -0
  787. package/dist/smart-components/smart-stepper.js.map +1 -0
  788. package/dist/smart-components/smart-switch.d.ts +34 -0
  789. package/dist/smart-components/smart-switch.d.ts.map +1 -0
  790. package/dist/smart-components/smart-switch.js +34 -0
  791. package/dist/smart-components/smart-switch.js.map +1 -0
  792. package/dist/smart-components/smart-textarea.d.ts +38 -0
  793. package/dist/smart-components/smart-textarea.d.ts.map +1 -0
  794. package/dist/smart-components/smart-textarea.js +28 -0
  795. package/dist/smart-components/smart-textarea.js.map +1 -0
  796. package/dist/smart-components/smart-time-picker.d.ts +59 -0
  797. package/dist/smart-components/smart-time-picker.d.ts.map +1 -0
  798. package/dist/smart-components/smart-time-picker.js +129 -0
  799. package/dist/smart-components/smart-time-picker.js.map +1 -0
  800. package/dist/smart-components/smart-time-range-picker.d.ts +39 -0
  801. package/dist/smart-components/smart-time-range-picker.d.ts.map +1 -0
  802. package/dist/smart-components/smart-time-range-picker.js +26 -0
  803. package/dist/smart-components/smart-time-range-picker.js.map +1 -0
  804. package/dist/smart-components/smart-toaster.d.ts +10 -0
  805. package/dist/smart-components/smart-toaster.d.ts.map +1 -0
  806. package/dist/smart-components/smart-toaster.js +21 -0
  807. package/dist/smart-components/smart-toaster.js.map +1 -0
  808. package/dist/smart-components/smart-year-picker.d.ts +29 -0
  809. package/dist/smart-components/smart-year-picker.d.ts.map +1 -0
  810. package/dist/smart-components/smart-year-picker.js +43 -0
  811. package/dist/smart-components/smart-year-picker.js.map +1 -0
  812. package/dist/smart-components/spinner.d.ts +10 -0
  813. package/dist/smart-components/spinner.d.ts.map +1 -0
  814. package/dist/smart-components/spinner.js +5 -0
  815. package/dist/smart-components/spinner.js.map +1 -0
  816. package/dist/transfer-list-engine/index.d.ts +5 -0
  817. package/dist/transfer-list-engine/index.d.ts.map +1 -0
  818. package/dist/transfer-list-engine/index.js +3 -0
  819. package/dist/transfer-list-engine/index.js.map +1 -0
  820. package/dist/transfer-list-engine/transfer-list.d.ts +53 -0
  821. package/dist/transfer-list-engine/transfer-list.d.ts.map +1 -0
  822. package/dist/transfer-list-engine/transfer-list.js +190 -0
  823. package/dist/transfer-list-engine/transfer-list.js.map +1 -0
  824. package/dist/transfer-list-engine/transfer-utils.d.ts +30 -0
  825. package/dist/transfer-list-engine/transfer-utils.d.ts.map +1 -0
  826. package/dist/transfer-list-engine/transfer-utils.js +69 -0
  827. package/dist/transfer-list-engine/transfer-utils.js.map +1 -0
  828. package/dist/transfer-list-engine/types.d.ts +51 -0
  829. package/dist/transfer-list-engine/types.d.ts.map +1 -0
  830. package/dist/transfer-list-engine/types.js +2 -0
  831. package/dist/transfer-list-engine/types.js.map +1 -0
  832. package/dist/tree-engine/index.d.ts +6 -0
  833. package/dist/tree-engine/index.d.ts.map +1 -0
  834. package/dist/tree-engine/index.js +3 -0
  835. package/dist/tree-engine/index.js.map +1 -0
  836. package/dist/tree-engine/tree-utils.d.ts +84 -0
  837. package/dist/tree-engine/tree-utils.d.ts.map +1 -0
  838. package/dist/tree-engine/tree-utils.js +271 -0
  839. package/dist/tree-engine/tree-utils.js.map +1 -0
  840. package/dist/tree-engine/tree.d.ts +98 -0
  841. package/dist/tree-engine/tree.d.ts.map +1 -0
  842. package/dist/tree-engine/tree.js +430 -0
  843. package/dist/tree-engine/tree.js.map +1 -0
  844. package/dist/tree-engine/types.d.ts +85 -0
  845. package/dist/tree-engine/types.d.ts.map +1 -0
  846. package/dist/tree-engine/types.js +2 -0
  847. package/dist/tree-engine/types.js.map +1 -0
  848. package/dist/tree-engine/use-tree.d.ts +12 -0
  849. package/dist/tree-engine/use-tree.d.ts.map +1 -0
  850. package/dist/tree-engine/use-tree.js +34 -0
  851. package/dist/tree-engine/use-tree.js.map +1 -0
  852. package/package.json +158 -0
  853. package/src/styles/globals.css +161 -0
@@ -0,0 +1,146 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Wrap an item schema in the Spring Data `Page<T>` envelope, the response shape
4
+ * produced by a Spring `Page`/`Pageable` controller (and a common pagination
5
+ * contract generally):
6
+ *
7
+ * ```jsonc
8
+ * { "content": [...], "totalElements": 20, "totalPages": 4, "number": 0, "size": 5, ... }
9
+ * ```
10
+ *
11
+ * Validate a paged response with `pageSchema(itemSchema).parse(data)`, mirroring
12
+ * the `schema.parse` convention used by every other hook in this layer.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * const usersPageSchema = pageSchema(userRowSchema);
17
+ * const page = usersPageSchema.parse(await api.get("/users", { params }));
18
+ * ```
19
+ */
20
+ export declare const pageSchema: <TItem extends z.ZodTypeAny>(item: TItem) => z.ZodObject<{
21
+ content: z.ZodArray<TItem>;
22
+ totalElements: z.ZodNumber;
23
+ totalPages: z.ZodNumber;
24
+ number: z.ZodNumber;
25
+ size: z.ZodNumber;
26
+ first: z.ZodOptional<z.ZodBoolean>;
27
+ last: z.ZodOptional<z.ZodBoolean>;
28
+ numberOfElements: z.ZodOptional<z.ZodNumber>;
29
+ empty: z.ZodOptional<z.ZodBoolean>;
30
+ }, z.core.$strip>;
31
+ /**
32
+ * Convenience type mirroring what {@link pageSchema} parses into — the Spring
33
+ * Data `Page<T>` response envelope.
34
+ *
35
+ * (Named `SPageResponse` rather than `SPage` so it doesn't collide with the
36
+ * `SPage` page-layout component.)
37
+ */
38
+ export interface SPageResponse<TItem> {
39
+ content: TItem[];
40
+ totalElements: number;
41
+ totalPages: number;
42
+ number: number;
43
+ size: number;
44
+ first?: boolean;
45
+ last?: boolean;
46
+ numberOfElements?: number;
47
+ empty?: boolean;
48
+ }
49
+ /** A single sort instruction. */
50
+ export interface ServerSort {
51
+ field: string;
52
+ dir: "asc" | "desc";
53
+ }
54
+ /**
55
+ * A single normalized filter, distilled from AG Grid's heterogeneous filter
56
+ * model into a flat, transport-agnostic shape an app can serialize however its
57
+ * backend expects.
58
+ */
59
+ export interface ServerFilter {
60
+ /** Column field the filter applies to. */
61
+ field: string;
62
+ /** AG Grid filter family: `"text" | "number" | "date" | "set"`. */
63
+ filterType: string;
64
+ /** Operator, e.g. `"contains" | "equals" | "greaterThan" | "inRange" | "set"`. */
65
+ type: string;
66
+ /** Primary value (or the array of selected values for a set filter). */
67
+ value: unknown;
68
+ /** Upper bound for range operators (`inRange`). */
69
+ valueTo?: unknown;
70
+ }
71
+ /**
72
+ * What {@link SmartServerGrid}'s `fetchRows` receives — everything the server
73
+ * needs to return one block of rows, in a framework-agnostic form. Both the AG
74
+ * Grid block coordinates (`startRow`/`endRow`) and the page-oriented equivalents
75
+ * (`page`/`pageSize`) are provided so callers can use whichever their API speaks.
76
+ */
77
+ export interface ServerFetchParams {
78
+ /** Zero-based index of the first requested row (inclusive). */
79
+ startRow: number;
80
+ /** Index of the row after the last requested row (exclusive). */
81
+ endRow: number;
82
+ /** Zero-based page index — `floor(startRow / pageSize)`. */
83
+ page: number;
84
+ /** Rows per page/block — `endRow - startRow`. */
85
+ pageSize: number;
86
+ /** Active sort instructions, in priority order. */
87
+ sort: ServerSort[];
88
+ /** Active filters. */
89
+ filters: ServerFilter[];
90
+ }
91
+ /** What `fetchRows` resolves to: the block of rows plus the total row count. */
92
+ export interface ServerFetchResult<TRow> {
93
+ rows: TRow[];
94
+ /** Total rows on the server for the current filters (e.g. `Page.totalElements`). */
95
+ total: number;
96
+ }
97
+ /** Convert an AG Grid filter model into a flat list of {@link ServerFilter}. */
98
+ export declare const normalizeFilterModel: (filterModel: Record<string, unknown> | null | undefined) => ServerFilter[];
99
+ /**
100
+ * Translate one AG Grid Infinite-Row-Model `getRows` request into the
101
+ * normalized {@link ServerFetchParams} passed to a grid's `fetchRows`. Pure and
102
+ * framework-agnostic (AG Grid's `sortModel`/`filterModel` are accepted by
103
+ * structural shape, so this module never imports AG Grid).
104
+ */
105
+ export declare const buildServerFetchParams: (input: {
106
+ startRow: number;
107
+ endRow: number;
108
+ sortModel: ReadonlyArray<{
109
+ colId: string;
110
+ sort: "asc" | "desc";
111
+ }>;
112
+ filterModel?: Record<string, unknown> | null;
113
+ }) => ServerFetchParams;
114
+ /**
115
+ * Serialize sort instructions into Spring's `sort=field,dir` strings (one per
116
+ * sorted column, in priority order). The page (`page`/`size`) and filter dialect
117
+ * vary per backend, so those stay app-owned — only the unambiguous sort encoding
118
+ * is provided here.
119
+ *
120
+ * @example `toSpringSort([{ field: "mrr", dir: "desc" }])` → `["mrr,desc"]`
121
+ */
122
+ export declare const toSpringSort: (sort: ReadonlyArray<ServerSort>) => string[];
123
+ /**
124
+ * Serialize a single {@link ServerFilter} into the `<op>:<value>` value used by
125
+ * the Spring query dialect below:
126
+ *
127
+ * - `inRange` → `inRange:<from>:<to>`
128
+ * - set (array value) → `set:<a>,<b>,<c>`
129
+ * - everything else → `<op>:<value>`
130
+ */
131
+ export declare const encodeSpringFilter: (filter: ServerFilter) => string;
132
+ /**
133
+ * Serialize normalized {@link ServerFetchParams} into a Spring Data query string
134
+ * (without the leading `?`) — the encoder half of the query contract:
135
+ *
136
+ * - paging → `page=0&size=20`
137
+ * - sorting → `sort=name,asc&sort=mrr,desc` (repeatable, Spring style)
138
+ * - filters → `<field>=<op>:<value>`, e.g. `name=contains:ada`,
139
+ * `mrr=inRange:1000:2000`, `status=set:Active,Pending`
140
+ *
141
+ * This is the default `buildQuery` for {@link createPageFetcher}. The matching
142
+ * *decoder* stays server/app-side (backends parse however they like), so it is
143
+ * intentionally not shipped here.
144
+ */
145
+ export declare const buildSpringQuery: (params: ServerFetchParams) => string;
146
+ //# sourceMappingURL=pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/data-grid/pagination.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAMvB;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,UAAU,GAAI,KAAK,SAAS,CAAC,CAAC,UAAU,EAAE,MAAM,KAAK;;;;;;;;;;iBAoB9D,CAAA;AAEJ;;;;;;GAMG;AACH,MAAM,WAAW,aAAa,CAAC,KAAK;IAClC,OAAO,EAAE,KAAK,EAAE,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAMD,iCAAiC;AACjC,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,KAAK,GAAG,MAAM,CAAA;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAA;IACb,mEAAmE;IACnE,UAAU,EAAE,MAAM,CAAA;IAClB,kFAAkF;IAClF,IAAI,EAAE,MAAM,CAAA;IACZ,wEAAwE;IACxE,KAAK,EAAE,OAAO,CAAA;IACd,mDAAmD;IACnD,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAA;IAChB,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAA;IACd,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAA;IACZ,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAA;IAChB,mDAAmD;IACnD,IAAI,EAAE,UAAU,EAAE,CAAA;IAClB,sBAAsB;IACtB,OAAO,EAAE,YAAY,EAAE,CAAA;CACxB;AAED,gFAAgF;AAChF,MAAM,WAAW,iBAAiB,CAAC,IAAI;IACrC,IAAI,EAAE,IAAI,EAAE,CAAA;IACZ,oFAAoF;IACpF,KAAK,EAAE,MAAM,CAAA;CACd;AAuCD,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,GAC/B,aAAa,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,KACtD,YAAY,EAKd,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GAAI,OAAO;IAC5C,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,aAAa,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAAA;KAAE,CAAC,CAAA;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CAC7C,KAAG,iBAUH,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,aAAa,CAAC,UAAU,CAAC,KAAG,MAAM,EAC7B,CAAA;AAExC;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAAI,QAAQ,YAAY,KAAG,MAQzD,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB,GAAI,QAAQ,iBAAiB,KAAG,MAQ5D,CAAA"}
@@ -0,0 +1,128 @@
1
+ import { z } from "zod";
2
+ /* -------------------------------------------------------------------------- */
3
+ /* Spring Data `Page<T>` shape */
4
+ /* -------------------------------------------------------------------------- */
5
+ /**
6
+ * Wrap an item schema in the Spring Data `Page<T>` envelope, the response shape
7
+ * produced by a Spring `Page`/`Pageable` controller (and a common pagination
8
+ * contract generally):
9
+ *
10
+ * ```jsonc
11
+ * { "content": [...], "totalElements": 20, "totalPages": 4, "number": 0, "size": 5, ... }
12
+ * ```
13
+ *
14
+ * Validate a paged response with `pageSchema(itemSchema).parse(data)`, mirroring
15
+ * the `schema.parse` convention used by every other hook in this layer.
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * const usersPageSchema = pageSchema(userRowSchema);
20
+ * const page = usersPageSchema.parse(await api.get("/users", { params }));
21
+ * ```
22
+ */
23
+ export const pageSchema = (item) => z.object({
24
+ /** The rows for this page. */
25
+ content: z.array(item),
26
+ /** Total rows across every page (drives the infinite-scroll row count). */
27
+ totalElements: z.number(),
28
+ /** Total number of pages. */
29
+ totalPages: z.number(),
30
+ /** Zero-based index of the current page. */
31
+ number: z.number(),
32
+ /** Page size used for this response. */
33
+ size: z.number(),
34
+ /** Whether this is the first page. */
35
+ first: z.boolean().optional(),
36
+ /** Whether this is the last page. */
37
+ last: z.boolean().optional(),
38
+ /** Number of rows actually present in `content`. */
39
+ numberOfElements: z.number().optional(),
40
+ /** Whether the page is empty. */
41
+ empty: z.boolean().optional(),
42
+ });
43
+ const normalizeFilterItem = (field, raw) => {
44
+ // For combined conditions we take the first condition (a pragmatic v1 choice —
45
+ // most server contracts accept a single predicate per field).
46
+ const item = raw.condition1 ?? raw;
47
+ const isSet = Array.isArray(item.values);
48
+ return {
49
+ field,
50
+ filterType: item.filterType ?? (isSet ? "set" : "text"),
51
+ type: item.type ?? (isSet ? "set" : "contains"),
52
+ value: isSet ? item.values : (item.filter ?? item.dateFrom),
53
+ valueTo: item.filterTo ?? item.dateTo,
54
+ };
55
+ };
56
+ /** Convert an AG Grid filter model into a flat list of {@link ServerFilter}. */
57
+ export const normalizeFilterModel = (filterModel) => {
58
+ if (!filterModel)
59
+ return [];
60
+ return Object.entries(filterModel).map(([field, raw]) => normalizeFilterItem(field, (raw ?? {})));
61
+ };
62
+ /**
63
+ * Translate one AG Grid Infinite-Row-Model `getRows` request into the
64
+ * normalized {@link ServerFetchParams} passed to a grid's `fetchRows`. Pure and
65
+ * framework-agnostic (AG Grid's `sortModel`/`filterModel` are accepted by
66
+ * structural shape, so this module never imports AG Grid).
67
+ */
68
+ export const buildServerFetchParams = (input) => {
69
+ const pageSize = Math.max(input.endRow - input.startRow, 1);
70
+ return {
71
+ startRow: input.startRow,
72
+ endRow: input.endRow,
73
+ pageSize,
74
+ page: Math.floor(input.startRow / pageSize),
75
+ sort: input.sortModel.map((s) => ({ field: s.colId, dir: s.sort })),
76
+ filters: normalizeFilterModel(input.filterModel),
77
+ };
78
+ };
79
+ /**
80
+ * Serialize sort instructions into Spring's `sort=field,dir` strings (one per
81
+ * sorted column, in priority order). The page (`page`/`size`) and filter dialect
82
+ * vary per backend, so those stay app-owned — only the unambiguous sort encoding
83
+ * is provided here.
84
+ *
85
+ * @example `toSpringSort([{ field: "mrr", dir: "desc" }])` → `["mrr,desc"]`
86
+ */
87
+ export const toSpringSort = (sort) => sort.map((s) => `${s.field},${s.dir}`);
88
+ /**
89
+ * Serialize a single {@link ServerFilter} into the `<op>:<value>` value used by
90
+ * the Spring query dialect below:
91
+ *
92
+ * - `inRange` → `inRange:<from>:<to>`
93
+ * - set (array value) → `set:<a>,<b>,<c>`
94
+ * - everything else → `<op>:<value>`
95
+ */
96
+ export const encodeSpringFilter = (filter) => {
97
+ if (filter.type === "inRange") {
98
+ return `inRange:${String(filter.value)}:${String(filter.valueTo)}`;
99
+ }
100
+ if (Array.isArray(filter.value)) {
101
+ return `set:${filter.value.map(String).join(",")}`;
102
+ }
103
+ return `${filter.type}:${String(filter.value)}`;
104
+ };
105
+ /**
106
+ * Serialize normalized {@link ServerFetchParams} into a Spring Data query string
107
+ * (without the leading `?`) — the encoder half of the query contract:
108
+ *
109
+ * - paging → `page=0&size=20`
110
+ * - sorting → `sort=name,asc&sort=mrr,desc` (repeatable, Spring style)
111
+ * - filters → `<field>=<op>:<value>`, e.g. `name=contains:ada`,
112
+ * `mrr=inRange:1000:2000`, `status=set:Active,Pending`
113
+ *
114
+ * This is the default `buildQuery` for {@link createPageFetcher}. The matching
115
+ * *decoder* stays server/app-side (backends parse however they like), so it is
116
+ * intentionally not shipped here.
117
+ */
118
+ export const buildSpringQuery = (params) => {
119
+ const sp = new URLSearchParams();
120
+ sp.set("page", String(params.page));
121
+ sp.set("size", String(params.pageSize));
122
+ for (const sort of toSpringSort(params.sort))
123
+ sp.append("sort", sort);
124
+ for (const filter of params.filters)
125
+ sp.append(filter.field, encodeSpringFilter(filter));
126
+ return sp.toString();
127
+ };
128
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../src/data-grid/pagination.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ import { type ForwardedRef, type ReactElement, type ReactNode } from "react";
2
+ import { type ServerFetchParams, type ServerFetchResult, type ServerFilter } from "./pagination";
3
+ import { type DataGridColumn, type DataGridDensity } from "./grid-internals";
4
+ import { type ServerSelection } from "./use-server-grid-selection";
5
+ import type { GridActionColumnOptions } from "./action-column";
6
+ export type { ServerSelection };
7
+ /** Imperative handle exposed via `ref`. */
8
+ export interface SmartServerGridHandle<TRow> {
9
+ /** Re-fetch the loaded blocks from the server, keeping scroll position. */
10
+ refresh: () => void;
11
+ /** Purge every block and re-fetch from the first row. */
12
+ reload: () => void;
13
+ /** All selected row ids (including rows not currently loaded). */
14
+ getSelectedIds: () => string[];
15
+ /** Selected rows currently loaded in the grid cache. */
16
+ getSelectedRows: () => TRow[];
17
+ /** Clear the selection. */
18
+ clearSelection: () => void;
19
+ }
20
+ export interface SmartServerGridProps<TRow> {
21
+ /** Column definitions. */
22
+ columns: DataGridColumn<TRow>[];
23
+ /**
24
+ * Fetch one block of rows from the server. Receives normalized paging, sort
25
+ * and filter params plus an `AbortSignal`, and resolves to `{ rows, total }`.
26
+ * Rejecting (or throwing) surfaces the error overlay with a **Retry** button.
27
+ */
28
+ fetchRows: (params: ServerFetchParams, signal: AbortSignal) => Promise<ServerFetchResult<TRow>>;
29
+ /** Stable row id — required for selection and block reconciliation across pages. */
30
+ getRowId: (row: TRow) => string;
31
+ /**
32
+ * Config-driven Edit/Delete action column — pinned, permission-aware and
33
+ * row-aware, with per-row loading and optional delete confirmation. The
34
+ * column auto-hides when disabled or when every action is statically hidden.
35
+ */
36
+ actionColumn?: GridActionColumnOptions<TRow>;
37
+ /**
38
+ * External filters merged into every fetch — e.g. driven by a dedicated search
39
+ * form rather than the column headers. Changing this array (by identity)
40
+ * resets to page 1 and refetches; it stays out of the grid's own state, so
41
+ * typing in the form never hits the server until you swap the array in.
42
+ */
43
+ filters?: ServerFilter[];
44
+ /** Show the classic pager (`true`) or stream via infinite scroll (`false`). Default `true`. */
45
+ pagination?: boolean;
46
+ /** Rows per server block / page. Default `20`. */
47
+ pageSize?: number;
48
+ /** Page-size options shown in the pager selector. */
49
+ pageSizeOptions?: number[];
50
+ /** Row selection mode. Default `"none"`. */
51
+ selection?: "single" | "multiple" | "none";
52
+ /** Fired when selection changes — loaded selected rows plus every selected id. */
53
+ onSelectionChange?: (selection: ServerSelection<TRow>) => void;
54
+ /**
55
+ * Fired on row double-click with the full row object. Designed as the
56
+ * extension point for row-level actions (open a drawer, navigate, …).
57
+ */
58
+ onRowDoubleClick?: (row: TRow) => void;
59
+ /**
60
+ * Per-column header filters (text/number/set inputs + filter menu). Default
61
+ * `true`. Set `false` to remove all in-header filtering — sorting stays
62
+ * enabled — when filtering is driven by an external search form instead.
63
+ */
64
+ columnFilters?: boolean;
65
+ /** Floating filter row beneath the headers (only applies when `columnFilters`). Default `true`. */
66
+ floatingFilters?: boolean;
67
+ /**
68
+ * `localStorage` key. When set, the grid persists column order / size /
69
+ * visibility plus the active sort and filters, and restores them on reload.
70
+ */
71
+ persistStateKey?: string;
72
+ /** Title rendered in the toolbar. */
73
+ title?: ReactNode;
74
+ /** Extra toolbar content rendered on the right. */
75
+ toolbarActions?: ReactNode;
76
+ /** Manual refresh button. Default `true`. */
77
+ refreshable?: boolean;
78
+ /** Column visibility menu. Default `true`. */
79
+ columnSelector?: boolean;
80
+ /** Export-to-Excel (`.xlsx`) button — exports the loaded/displayed rows. Default `true`. */
81
+ exportExcel?: boolean;
82
+ /** Export file name (without extension); a timestamp + `.xlsx` are appended. Default `"export"`. */
83
+ exportFileName?: string;
84
+ /** Row density. Default `"normal"`. */
85
+ density?: DataGridDensity;
86
+ /**
87
+ * Fill the parent instead of using a fixed `height`. The grid becomes a
88
+ * flex column (`h-full`) whose body grows to consume the remaining space and
89
+ * resizes automatically with its container — use inside a
90
+ * `flex-1 min-h-0` parent for a full-viewport layout. Default `false`.
91
+ */
92
+ fill?: boolean;
93
+ /** Grid height when `fill` is `false`. Default `480`. */
94
+ height?: number | string;
95
+ /** Empty-state content shown when the server returns no rows. */
96
+ emptyState?: {
97
+ title?: string;
98
+ description?: string;
99
+ };
100
+ className?: string;
101
+ }
102
+ /**
103
+ * `forwardRef` erases generics, so re-assert the generic call signature. This is
104
+ * the standard "generic forwardRef" cast — runtime is unchanged.
105
+ */
106
+ export declare const SmartServerGrid: <TRow>(props: SmartServerGridProps<TRow> & {
107
+ ref?: ForwardedRef<SmartServerGridHandle<TRow>>;
108
+ }) => ReactElement;
109
+ //# sourceMappingURL=server-data-grid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-data-grid.d.ts","sourceRoot":"","sources":["../../src/data-grid/server-data-grid.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,240 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { forwardRef, useCallback, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState, } from "react";
3
+ import { AgGridReact } from "ag-grid-react";
4
+ import { FileSpreadsheet } from "lucide-react";
5
+ import { cn } from "@iamsaroj/smart-ui/lib/utils";
6
+ import { downloadXlsx, timestampForFilename } from "@iamsaroj/smart-ui/lib/xlsx";
7
+ import { GridToolbar } from "./grid-toolbar";
8
+ import { SmartLoadingOverlay } from "@iamsaroj/smart-ui/smart-components/loading-overlay";
9
+ import { SmartPageError } from "@iamsaroj/smart-ui/smart-components/page/smart-page-error";
10
+ import { dataGridTheme } from "./grid-theme";
11
+ import { ensureGridModules, NoRowsOverlay, resolveColumnId, resolveColumnLabel, rowHeightByDensity, } from "./grid-internals";
12
+ import { collectGridExport, createGridDatasource, debounce, readPersistedGridState, writePersistedGridState, } from "./server-grid-internals";
13
+ import { useServerGridSelection, } from "./use-server-grid-selection";
14
+ import { useGridActionColumn, withActionColumn } from "./use-action-column";
15
+ /**
16
+ * Server-driven data grid built on AG Grid Community's **Infinite Row Model**.
17
+ * One datasource powers both modes: with `pagination` it renders a classic
18
+ * pager, without it streams rows via infinite scroll. Sorting runs server-side
19
+ * (each change re-queries through `fetchRows`) and filtering is supplied through
20
+ * the `filters` prop (e.g. a search form) rather than column headers. It ships
21
+ * loading + error/retry states, manual refresh, column resize/reorder, a column
22
+ * visibility menu, Excel export, row double-click, cross-page selection, an
23
+ * optional full-viewport `fill` layout, and column-state persistence.
24
+ *
25
+ * @example
26
+ * ```tsx
27
+ * <SmartServerGrid
28
+ * columns={columns}
29
+ * getRowId={(u) => u.id}
30
+ * fetchRows={fetchUsersPage}
31
+ * filters={searchFilters} // from a search form
32
+ * columnFilters={false}
33
+ * pagination={false} // infinite scroll
34
+ * selection="multiple"
35
+ * fill
36
+ * />
37
+ * ```
38
+ */
39
+ const SmartServerGridInner = (props, ref) => {
40
+ const { columns, fetchRows, getRowId, actionColumn, filters, pagination = true, pageSize = 20, pageSizeOptions = [5, 10, 20, 50], selection = "none", onSelectionChange, onRowDoubleClick, columnFilters = true, floatingFilters = true, persistStateKey, title, toolbarActions, refreshable = true, columnSelector = true, exportExcel = true, exportFileName = "export", density = "normal", fill = false, height = 480, emptyState, className, } = props;
41
+ ensureGridModules();
42
+ // Latest props read by the (stable) datasource + grid callbacks, without
43
+ // re-creating them — recreating the datasource would reset the grid.
44
+ const gridApiRef = useRef(null);
45
+ const fetchRowsRef = useRef(fetchRows);
46
+ const getRowIdRef = useRef(getRowId);
47
+ const onRowDoubleClickRef = useRef(onRowDoubleClick);
48
+ const filtersRef = useRef(filters);
49
+ const persistKeyRef = useRef(persistStateKey);
50
+ useLayoutEffect(() => {
51
+ fetchRowsRef.current = fetchRows;
52
+ getRowIdRef.current = getRowId;
53
+ onRowDoubleClickRef.current = onRowDoubleClick;
54
+ filtersRef.current = filters;
55
+ persistKeyRef.current = persistStateKey;
56
+ });
57
+ const controllersRef = useRef(new Set());
58
+ const [initialLoading, setInitialLoading] = useState(true);
59
+ const [error, setError] = useState(null);
60
+ // In-flight block count drives the "loading more" bar shown while infinite
61
+ // scroll fetches subsequent pages (the overlay only covers the first load).
62
+ const inFlightRef = useRef(0);
63
+ const [loadingMore, setLoadingMore] = useState(false);
64
+ const [columnVisibility, setColumnVisibility] = useState(() => {
65
+ const initial = {};
66
+ columns.forEach((column, index) => {
67
+ initial[resolveColumnId(column, index)] = column.hide !== true;
68
+ });
69
+ return initial;
70
+ });
71
+ // Cross-page selection lives in a dedicated hook — the selected-id set is the
72
+ // source of truth, so a selection survives block reloads (see the hook).
73
+ const gridSelection = useServerGridSelection(gridApiRef, onSelectionChange);
74
+ const actionColumnDef = useGridActionColumn(actionColumn);
75
+ const effectiveColumns = useMemo(() => withActionColumn(columns, actionColumnDef), [columns, actionColumnDef]);
76
+ const saveState = useCallback(() => {
77
+ const api = gridApiRef.current;
78
+ const key = persistKeyRef.current;
79
+ if (!api || !key)
80
+ return;
81
+ writePersistedGridState(key, {
82
+ columnState: api.getColumnState(),
83
+ filterModel: api.getFilterModel(),
84
+ });
85
+ }, []);
86
+ const schedulePersistRef = useRef(null);
87
+ useEffect(() => {
88
+ schedulePersistRef.current = debounce(saveState, 300);
89
+ }, [saveState]);
90
+ const schedulePersist = useCallback(() => schedulePersistRef.current?.(), []);
91
+ const restoreState = useCallback((api) => {
92
+ const key = persistKeyRef.current;
93
+ if (!key)
94
+ return;
95
+ const parsed = readPersistedGridState(key);
96
+ if (!parsed)
97
+ return;
98
+ if (parsed.columnState)
99
+ api.applyColumnState({ state: parsed.columnState, applyOrder: true });
100
+ if (parsed.filterModel)
101
+ api.setFilterModel(parsed.filterModel);
102
+ }, []);
103
+ // External filters changed (Search / Reset) → reset to page 1 and refetch.
104
+ // Skip the mount run so the datasource's own first fetch isn't duplicated.
105
+ const didMountRef = useRef(false);
106
+ useEffect(() => {
107
+ if (!didMountRef.current) {
108
+ didMountRef.current = true;
109
+ return;
110
+ }
111
+ setError(null);
112
+ setInitialLoading(true);
113
+ gridApiRef.current?.purgeInfiniteCache();
114
+ }, [filters]);
115
+ const defaultColDef = useMemo(() => ({
116
+ sortable: true,
117
+ filter: columnFilters,
118
+ floatingFilter: columnFilters && floatingFilters,
119
+ resizable: true,
120
+ flex: 1,
121
+ minWidth: 120,
122
+ }), [columnFilters, floatingFilters]);
123
+ const rowSelection = useMemo(() => {
124
+ // No `headerCheckbox` in the infinite row model (AG Grid warning #129) — a
125
+ // "select all" can't span rows the client hasn't loaded. Per-row checkboxes
126
+ // plus our cross-page id tracking are what make sense here. `multiRow`
127
+ // defaults headerCheckbox to true, so it must be disabled explicitly.
128
+ if (selection === "multiple")
129
+ return { mode: "multiRow", checkboxes: true, headerCheckbox: false };
130
+ if (selection === "single")
131
+ return { mode: "singleRow", checkboxes: true };
132
+ return undefined;
133
+ }, [selection]);
134
+ const toggleableColumns = useMemo(() => columns.map((column, index) => {
135
+ const id = resolveColumnId(column, index);
136
+ return { id, label: resolveColumnLabel(column, id) };
137
+ }), [columns]);
138
+ const getRowIdCb = useCallback((params) => getRowIdRef.current(params.data), []);
139
+ const handleGridReady = useCallback((event) => {
140
+ gridApiRef.current = event.api;
141
+ // Restore sort/filter/columns BEFORE the first fetch so the first request
142
+ // already reflects the persisted state, then start the datasource.
143
+ restoreState(event.api);
144
+ // Created once per grid instantiation (gridReady fires once), so the
145
+ // datasource identity is stable for the grid's lifetime — a new one
146
+ // would purge the cache. It reads the latest `fetchRows` / `filters`
147
+ // through ref getters; the translation/abort/error flow lives in
148
+ // `createGridDatasource` (server-grid-internals), where it is unit-tested.
149
+ event.api.setGridOption("datasource", createGridDatasource({
150
+ getFetchRows: () => fetchRowsRef.current,
151
+ getExternalFilters: () => filtersRef.current,
152
+ controllers: controllersRef.current,
153
+ onFetchStart: () => {
154
+ inFlightRef.current += 1;
155
+ setLoadingMore(true);
156
+ },
157
+ onSuccess: () => setError(null),
158
+ onError: setError,
159
+ onSettled: () => {
160
+ setInitialLoading(false);
161
+ inFlightRef.current = Math.max(0, inFlightRef.current - 1);
162
+ if (inFlightRef.current === 0)
163
+ setLoadingMore(false);
164
+ },
165
+ }));
166
+ }, [restoreState]);
167
+ const handleRowDoubleClicked = useCallback((event) => {
168
+ if (event.data)
169
+ onRowDoubleClickRef.current?.(event.data);
170
+ }, []);
171
+ const handleRetry = useCallback(() => {
172
+ setError(null);
173
+ setInitialLoading(true);
174
+ gridApiRef.current?.purgeInfiniteCache();
175
+ }, []);
176
+ const handleRefresh = useCallback(() => {
177
+ setError(null);
178
+ gridApiRef.current?.refreshInfiniteCache();
179
+ }, []);
180
+ const handleToggleColumn = useCallback((id, visible) => {
181
+ setColumnVisibility((prev) => ({ ...prev, [id]: visible }));
182
+ gridApiRef.current?.setColumnsVisible([id], visible);
183
+ schedulePersist();
184
+ }, [schedulePersist]);
185
+ const handleExport = useCallback(() => {
186
+ const api = gridApiRef.current;
187
+ if (!api)
188
+ return;
189
+ // Export the displayed columns (respecting visibility + order) and the rows
190
+ // currently loaded in the cache, using each cell's *displayed* value.
191
+ const { headers, rows } = collectGridExport(api);
192
+ const sheetName = typeof title === "string" && title.length > 0 ? title : "Export";
193
+ downloadXlsx(`${exportFileName}-${timestampForFilename()}`, {
194
+ name: sheetName,
195
+ headers,
196
+ rows,
197
+ });
198
+ }, [exportFileName, title]);
199
+ useImperativeHandle(ref, () => ({
200
+ refresh: () => gridApiRef.current?.refreshInfiniteCache(),
201
+ reload: handleRetry,
202
+ getSelectedIds: gridSelection.getSelectedIds,
203
+ getSelectedRows: gridSelection.collectLoadedSelectedRows,
204
+ clearSelection: gridSelection.clearSelection,
205
+ }), [
206
+ handleRetry,
207
+ gridSelection.getSelectedIds,
208
+ gridSelection.collectLoadedSelectedRows,
209
+ gridSelection.clearSelection,
210
+ ]);
211
+ const showToolbar = title ||
212
+ refreshable ||
213
+ columnSelector ||
214
+ exportExcel ||
215
+ toolbarActions ||
216
+ selection !== "none";
217
+ return (_jsxs("div", { className: cn("flex flex-col gap-3", fill && "h-full min-h-0", className), style: fill ? { height: "100%" } : undefined, children: [showToolbar ? (_jsx(GridToolbar, { className: cn("shrink-0", fill && "px-4 pt-4"), title: title, leadingContent: selection !== "none" && gridSelection.selectedCount > 0 ? (_jsxs("span", { className: "text-sm text-muted-foreground", children: [gridSelection.selectedCount, " selected"] })) : null, toolbarActions: toolbarActions, onRefresh: refreshable ? handleRefresh : undefined, columns: columnSelector
218
+ ? toggleableColumns.map((column) => ({
219
+ ...column,
220
+ visible: columnVisibility[column.id] ?? true,
221
+ }))
222
+ : undefined, onToggleColumn: handleToggleColumn, onExport: exportExcel ? handleExport : undefined, exportIcon: _jsx(FileSpreadsheet, { className: "h-4 w-4" }) })) : null, _jsxs("div", { className: cn("relative w-full", fill && "min-h-0 flex-1"), style: fill ? undefined : { height }, children: [_jsx(AgGridReact, { className: "h-full w-full", theme: dataGridTheme, rowModelType: "infinite", cacheBlockSize: pageSize, columnDefs: effectiveColumns, defaultColDef: defaultColDef, suppressCellFocus: true, rowSelection: rowSelection, pagination: pagination,
223
+ // Page-size props only apply to the pager; passing them in infinite
224
+ // scroll mode trips AG Grid warning #94 when `pageSize` isn't one of
225
+ // the selector options (`cacheBlockSize` already carries the size).
226
+ paginationPageSize: pagination ? pageSize : undefined, paginationPageSizeSelector: pagination ? pageSizeOptions : undefined, rowHeight: rowHeightByDensity[density], getRowId: getRowIdCb, animateRows: true, noRowsOverlayComponent: NoRowsOverlay, noRowsOverlayComponentParams: {
227
+ title: emptyState?.title,
228
+ description: emptyState?.description,
229
+ }, onGridReady: handleGridReady, onModelUpdated: gridSelection.reapplySelection, onRowSelected: gridSelection.handleRowSelected, onRowDoubleClicked: handleRowDoubleClicked, onSortChanged: schedulePersist, onFilterChanged: schedulePersist, onColumnMoved: schedulePersist, onColumnResized: schedulePersist, onColumnVisible: schedulePersist, onColumnPinned: schedulePersist }), loadingMore && !initialLoading && !error ? (_jsx("div", { role: "status", "aria-live": "polite", "aria-label": "Loading more rows", className: "pointer-events-none absolute inset-x-0 top-0 z-40 h-0.5 overflow-hidden bg-primary/20", children: _jsx("div", { className: "h-full w-1/4 bg-primary", style: {
230
+ animation: "grid-indeterminate 1.1s ease-in-out infinite",
231
+ } }) })) : null, initialLoading && !error ? (_jsx(SmartLoadingOverlay, { loading: true, label: "Loading data\u2026" })) : null, error ? (_jsx(SmartPageError, { variant: "overlay", title: "Couldn\u2019t load data", description: error, onRetry: handleRetry, retryLabel: "Retry" })) : null] })] }));
232
+ };
233
+ const SmartServerGridForwarded = forwardRef(SmartServerGridInner);
234
+ SmartServerGridForwarded.displayName = "SmartServerGrid";
235
+ /**
236
+ * `forwardRef` erases generics, so re-assert the generic call signature. This is
237
+ * the standard "generic forwardRef" cast — runtime is unchanged.
238
+ */
239
+ export const SmartServerGrid = SmartServerGridForwarded;
240
+ //# sourceMappingURL=server-data-grid.js.map