@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
package/CHANGELOG.md ADDED
@@ -0,0 +1,35 @@
1
+ # [0.2.0](https://github.com/imsaroj/automatic-octo-fiesta/compare/v0.1.0...v0.2.0) (2026-07-09)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * publish under [@iamsaroj](https://github.com/iamsaroj) scope — npm username is iamsaroj, not imsaroj ([b9961d4](https://github.com/imsaroj/automatic-octo-fiesta/commit/b9961d4309f6a93a371252470c5a069fd011c5a6))
7
+
8
+
9
+ ### Features
10
+
11
+ * grid action button added ([1260b5e](https://github.com/imsaroj/automatic-octo-fiesta/commit/1260b5eeb918e520e27ced9d1de5ea7215c51350))
12
+ * overlay with async button ([a09f238](https://github.com/imsaroj/automatic-octo-fiesta/commit/a09f238c49e7798a42e58fd68900f83d191484a1))
13
+ * publish @imsaroj/smart-ui to npm via semantic-release ([7944881](https://github.com/imsaroj/automatic-octo-fiesta/commit/7944881796d1b0e3a09a79bbdc9589079e3ff78d))
14
+
15
+
16
+ ### Reverts
17
+
18
+ * undo v0.2.0 release commit — tag deleted, npm publish never happened ([558584e](https://github.com/imsaroj/automatic-octo-fiesta/commit/558584ee030e5efe8548a0af31e222e33b484497))
19
+
20
+ # @iamsaroj/smart-ui
21
+
22
+ ## 0.1.0
23
+
24
+ ### Minor Changes
25
+
26
+ - First tracked release (0.1.0). Establishes the public surface of the source-only
27
+ component library:
28
+ - **Domain engines** — form engine (TanStack Form + Zod), data grid (`SmartGrid`
29
+ / `SmartServerGrid` on AG Grid, Spring `Page<T>` contract), search engine,
30
+ tree, transfer list, calendar (views + recurrence + booking), and the Lexical
31
+ rich-text editor (with the `sanitizeEditorHtml` / `SafeEditorHtml` contract).
32
+ - **Smart wrappers** — flat-props wrappers over shadcn/Base UI primitives, the
33
+ action-button preset system, and the `SmartPage` slot layout system.
34
+ - **Security & a11y baselines** — export formula-injection guard, editor HTML
35
+ sanitization, and axe-clean components (unit + E2E).
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Saroj (imsaroj)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,49 @@
1
+ # @iamsaroj/smart-ui
2
+
3
+ Config-driven React 19 component library: `Smart*` shadcn/ui wrappers, a declarative form engine
4
+ (TanStack Form + Zod v4), a search/filter bar, AG Grid data grids (client + server row models),
5
+ tree / transfer-list / calendar engines, and a Lexical rich-text editor.
6
+
7
+ Source, demos, and full docs: <https://github.com/imsaroj/automatic-octo-fiesta>
8
+
9
+ ## Install
10
+
11
+ ```bash
12
+ pnpm add @iamsaroj/smart-ui react react-dom
13
+ ```
14
+
15
+ Requires **React 19** (peer dependency) and **Tailwind CSS v4** in the consuming app.
16
+
17
+ ## Setup
18
+
19
+ Import the stylesheet once at your app entry, and tell Tailwind to scan the package for classes:
20
+
21
+ ```css
22
+ /* your app's global CSS */
23
+ @import "tailwindcss";
24
+ @import "@iamsaroj/smart-ui/globals.css";
25
+ @source "../node_modules/@iamsaroj/smart-ui";
26
+ ```
27
+
28
+ (Adjust the `@source` path so it points at the installed package from your CSS file's location.)
29
+
30
+ ## Usage
31
+
32
+ Import via the export subpaths — internal files are not individually importable:
33
+
34
+ ```tsx
35
+ import { Button } from "@iamsaroj/smart-ui/components/button"
36
+ import { SmartCard } from "@iamsaroj/smart-ui/smart-components/smart-card"
37
+ import { SmartForm } from "@iamsaroj/smart-ui/form-engine"
38
+ import { SmartGrid, SmartServerGrid } from "@iamsaroj/smart-ui/data-grid"
39
+ import { SmartTree } from "@iamsaroj/smart-ui/tree-engine"
40
+ import { SmartCalendar } from "@iamsaroj/smart-ui/calendar-engine"
41
+ import { SmartTextEditor } from "@iamsaroj/smart-ui/lexical-text-editor"
42
+ ```
43
+
44
+ See the [docs folder](https://github.com/imsaroj/automatic-octo-fiesta/tree/main/docs) for a guide
45
+ per entrypoint and the `apps/web` playground for working recipes.
46
+
47
+ ## License
48
+
49
+ MIT
@@ -0,0 +1,8 @@
1
+ import type { CalendarViewProps } from "./shared";
2
+ /**
3
+ * Agenda / schedule view: a flat, scrollable list of upcoming days (30-day
4
+ * window from the anchor date), each with its events in chronological order.
5
+ * Empty days are omitted.
6
+ */
7
+ export declare function AgendaView<T>(props: CalendarViewProps<T>): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=agenda-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agenda-view.d.ts","sourceRoot":"","sources":["../../src/calendar-engine/agenda-view.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAIjD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,2CAuGxD"}
@@ -0,0 +1,26 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { format, isSameDay } from "date-fns";
4
+ import { cn } from "@iamsaroj/smart-ui/lib/utils";
5
+ import { eventColorClasses } from "./event-color";
6
+ import { formatEventTime, groupEventsByDay, viewRange } from "./calendar-utils";
7
+ /**
8
+ * Agenda / schedule view: a flat, scrollable list of upcoming days (30-day
9
+ * window from the anchor date), each with its events in chronological order.
10
+ * Empty days are omitted.
11
+ */
12
+ export function AgendaView(props) {
13
+ const { date, events, weekStartsOn, now, defaultDurationMinutes, onEventClick, renderEvent, } = props;
14
+ const groups = React.useMemo(() => {
15
+ const range = viewRange(date, "agenda", weekStartsOn);
16
+ return groupEventsByDay(events, range);
17
+ }, [date, events, weekStartsOn]);
18
+ if (groups.length === 0) {
19
+ return (_jsx("div", { className: "flex min-h-0 flex-1 items-center justify-center p-10 text-sm text-muted-foreground", children: "No events in this period." }));
20
+ }
21
+ return (_jsx("div", { className: "min-h-0 flex-1 overflow-y-auto", children: _jsx("div", { className: "divide-y divide-border", children: groups.map(({ day, events: dayEvents }) => {
22
+ const isToday = isSameDay(day, now);
23
+ return (_jsxs("div", { className: "flex gap-4 px-4 py-3", children: [_jsxs("div", { className: "w-20 shrink-0 pt-1", children: [_jsx("div", { className: cn("text-xs font-medium uppercase", isToday ? "text-primary" : "text-muted-foreground"), children: format(day, "EEE") }), _jsx("div", { className: cn("text-2xl font-semibold tabular-nums", isToday && "text-primary"), children: format(day, "d") }), _jsx("div", { className: "text-xs text-muted-foreground", children: format(day, "MMM") })] }), _jsx("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: dayEvents.map((event) => renderEvent ? (_jsx(React.Fragment, { children: renderEvent(event) }, event.id)) : (_jsxs("button", { type: "button", disabled: event.disabled, onClick: (e) => onEventClick?.(event, e), className: cn("flex items-center gap-3 rounded-md border border-transparent px-2 py-1.5 text-left transition-colors hover:border-border hover:bg-accent/40", "focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none", event.disabled && "cursor-not-allowed opacity-50"), children: [_jsx("span", { className: cn("mt-0.5 size-2.5 shrink-0 rounded-full", eventColorClasses(event.color).dot), "aria-hidden": true }), _jsx("span", { className: "w-28 shrink-0 text-xs text-muted-foreground tabular-nums", children: formatEventTime(event, defaultDurationMinutes) }), _jsxs("span", { className: "min-w-0 flex-1", children: [_jsx("span", { className: "block truncate text-sm font-medium", children: event.title }), event.location && (_jsx("span", { className: "block truncate text-xs text-muted-foreground", children: event.location }))] })] }, event.id))) })] }, day.toISOString()));
24
+ }) }) }));
25
+ }
26
+ //# sourceMappingURL=agenda-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agenda-view.js","sourceRoot":"","sources":["../../src/calendar-engine/agenda-view.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { AvailabilityWindow, CalendarEvent, FreeSlot } from "./types";
2
+ /** Availability windows that apply to a given weekday. */
3
+ export declare function windowsForDay(windows: AvailabilityWindow[], day: Date): AvailabilityWindow[];
4
+ /**
5
+ * Generate the bookable slots for a single day: walk each availability window in
6
+ * `slotMinutes` steps, and keep a slot only if its remaining capacity (after
7
+ * subtracting overlapping events) is at least 1. Past slots are dropped when
8
+ * `now` is supplied.
9
+ *
10
+ * Pure and range-free — the calendar calls it per visible day.
11
+ */
12
+ export declare function generateFreeSlots<T>(day: Date, windows: AvailabilityWindow[], events: CalendarEvent<T>[], slotMinutes: number, slotCapacity?: number, now?: Date): FreeSlot[];
13
+ //# sourceMappingURL=booking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"booking.d.ts","sourceRoot":"","sources":["../../src/calendar-engine/booking.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,QAAQ,EAET,MAAM,SAAS,CAAA;AAGhB,0DAA0D;AAC1D,wBAAgB,aAAa,CAC3B,OAAO,EAAE,kBAAkB,EAAE,EAC7B,GAAG,EAAE,IAAI,GACR,kBAAkB,EAAE,CAGtB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,GAAG,EAAE,IAAI,EACT,OAAO,EAAE,kBAAkB,EAAE,EAC7B,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,EAC1B,WAAW,EAAE,MAAM,EACnB,YAAY,SAAI,EAChB,GAAG,CAAC,EAAE,IAAI,GACT,QAAQ,EAAE,CA6BZ"}
@@ -0,0 +1,45 @@
1
+ import { addMinutes, startOfDay } from "date-fns";
2
+ import { eventEnd } from "./calendar-utils";
3
+ /** Availability windows that apply to a given weekday. */
4
+ export function windowsForDay(windows, day) {
5
+ const wd = day.getDay();
6
+ return windows.filter((w) => w.weekday === wd);
7
+ }
8
+ /**
9
+ * Generate the bookable slots for a single day: walk each availability window in
10
+ * `slotMinutes` steps, and keep a slot only if its remaining capacity (after
11
+ * subtracting overlapping events) is at least 1. Past slots are dropped when
12
+ * `now` is supplied.
13
+ *
14
+ * Pure and range-free — the calendar calls it per visible day.
15
+ */
16
+ export function generateFreeSlots(day, windows, events, slotMinutes, slotCapacity = 1, now) {
17
+ const base = startOfDay(day);
18
+ const dayWindows = windowsForDay(windows, day);
19
+ if (dayWindows.length === 0)
20
+ return [];
21
+ const slots = [];
22
+ for (const win of dayWindows) {
23
+ for (let m = win.startMinutes; m + slotMinutes <= win.endMinutes; m += slotMinutes) {
24
+ const start = addMinutes(base, m);
25
+ const end = addMinutes(start, slotMinutes);
26
+ if (now && start < now)
27
+ continue;
28
+ // Count events that overlap this slot (any intersection).
29
+ let taken = 0;
30
+ for (const e of events) {
31
+ if (e.allDay)
32
+ continue;
33
+ const es = e.start;
34
+ const ee = eventEnd(e);
35
+ if (es < end && ee > start)
36
+ taken++;
37
+ }
38
+ const capacity = slotCapacity - taken;
39
+ if (capacity >= 1)
40
+ slots.push({ start, end, capacity });
41
+ }
42
+ }
43
+ return slots;
44
+ }
45
+ //# sourceMappingURL=booking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"booking.js","sourceRoot":"","sources":["../../src/calendar-engine/booking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAOjD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,0DAA0D;AAC1D,MAAM,UAAU,aAAa,CAC3B,OAA6B,EAC7B,GAAS;IAET,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAa,CAAA;IAClC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC,CAAA;AAChD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAS,EACT,OAA6B,EAC7B,MAA0B,EAC1B,WAAmB,EACnB,YAAY,GAAG,CAAC,EAChB,GAAU;IAEV,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IAC5B,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IAC9C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAEtC,MAAM,KAAK,GAAe,EAAE,CAAA;IAC5B,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,KACE,IAAI,CAAC,GAAG,GAAG,CAAC,YAAY,EACxB,CAAC,GAAG,WAAW,IAAI,GAAG,CAAC,UAAU,EACjC,CAAC,IAAI,WAAW,EAChB,CAAC;YACD,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;YACjC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;YAC1C,IAAI,GAAG,IAAI,KAAK,GAAG,GAAG;gBAAE,SAAQ;YAEhC,0DAA0D;YAC1D,IAAI,KAAK,GAAG,CAAC,CAAA;YACb,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,IAAI,CAAC,CAAC,MAAM;oBAAE,SAAQ;gBACtB,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAA;gBAClB,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;gBACtB,IAAI,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,KAAK;oBAAE,KAAK,EAAE,CAAA;YACrC,CAAC;YACD,MAAM,QAAQ,GAAG,YAAY,GAAG,KAAK,CAAA;YACrC,IAAI,QAAQ,IAAI,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAA;QACzD,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
@@ -0,0 +1,74 @@
1
+ import type { CalendarEvent, CalendarView, Weekday } from "./types";
2
+ /** Inclusive `[start, end]` day range covered by a view anchored at `date`. */
3
+ export interface DateRange {
4
+ start: Date;
5
+ end: Date;
6
+ }
7
+ /**
8
+ * The 6×7 grid of days shown in the month view: the weeks spanning the month,
9
+ * padded to complete weeks so leading/trailing days of adjacent months fill the
10
+ * grid. Always 6 rows so the grid height doesn't jump between months.
11
+ */
12
+ export declare function buildMonthGrid(date: Date, weekStartsOn: Weekday): Date[][];
13
+ /** The 7 days of the week containing `date`. */
14
+ export declare function buildWeekDays(date: Date, weekStartsOn: Weekday): Date[];
15
+ /** The visible day range for a view (used to filter events cheaply). */
16
+ export declare function viewRange(date: Date, view: CalendarView, weekStartsOn: Weekday): DateRange;
17
+ /** Advance/rewind the anchor date by one page of `view`. `dir` is +1 or -1. */
18
+ export declare function stepDate(date: Date, view: CalendarView, dir: 1 | -1): Date;
19
+ /** Resolved end for an event, applying a default duration when `end` is absent. */
20
+ export declare function eventEnd(event: CalendarEvent, defaultDurationMinutes?: number): Date;
21
+ /** Whether an event covers more than one calendar day. */
22
+ export declare function isMultiDay(event: CalendarEvent): boolean;
23
+ /** Chronological sort: earlier start first, longer event first on ties. */
24
+ export declare function sortEvents<T>(events: CalendarEvent<T>[]): CalendarEvent<T>[];
25
+ /**
26
+ * Events that intersect a given day, in sorted order. Handles multi-day and
27
+ * all-day events (they appear on every day they span).
28
+ */
29
+ export declare function eventsForDay<T>(events: CalendarEvent<T>[], day: Date): CalendarEvent<T>[];
30
+ /** Split events for a day into all-day/multi-day banners vs timed blocks. */
31
+ export declare function partitionDayEvents<T>(events: CalendarEvent<T>[]): {
32
+ allDay: CalendarEvent<T>[];
33
+ timed: CalendarEvent<T>[];
34
+ };
35
+ /** Minutes since midnight for a date. */
36
+ export declare function minutesSinceMidnight(date: Date): number;
37
+ /**
38
+ * A timed event positioned within a day column. `top`/`height` are percentages
39
+ * of the visible `[minHour, maxHour)` window; `left`/`width` are percentages of
40
+ * the column, computed by packing overlapping events into side-by-side lanes.
41
+ */
42
+ export interface PositionedEvent<T = unknown> {
43
+ event: CalendarEvent<T>;
44
+ top: number;
45
+ height: number;
46
+ left: number;
47
+ width: number;
48
+ /** Lane index within its overlap cluster (for stable keys / z-order). */
49
+ lane: number;
50
+ lanes: number;
51
+ }
52
+ /**
53
+ * Lay out a day's timed events into non-overlapping lanes and convert their
54
+ * times into top/height/left/width percentages for the given hour window.
55
+ *
56
+ * Overlapping events (by clock time) are grouped into a cluster and split into
57
+ * as many lanes as the max concurrency of that cluster, so simultaneous events
58
+ * sit side by side and never visually collide.
59
+ */
60
+ export declare function layoutDayEvents<T>(events: CalendarEvent<T>[], day: Date, minHour: number, maxHour: number, defaultDurationMinutes?: number): PositionedEvent<T>[];
61
+ /** The hour labels (integers) for a `[minHour, maxHour]` window. */
62
+ export declare function hourLabels(minHour: number, maxHour: number): number[];
63
+ /** Title-bar label for the current view, e.g. "July 2026" or "Jul 7 – 13, 2026". */
64
+ export declare function viewTitle(date: Date, view: CalendarView, weekStartsOn: Weekday): string;
65
+ /** Compact time range label, e.g. "9:00 – 10:30 AM". */
66
+ export declare function formatEventTime(event: CalendarEvent, defaultDurationMinutes?: number): string;
67
+ /** Group events by day (YYYY-MM-DD key), sorted, for the agenda view. */
68
+ export declare function groupEventsByDay<T>(events: CalendarEvent<T>[], range: DateRange): {
69
+ day: Date;
70
+ events: CalendarEvent<T>[];
71
+ }[];
72
+ /** Whether a date falls inside an inclusive range. */
73
+ export declare function isInRange(date: Date, range: DateRange): boolean;
74
+ //# sourceMappingURL=calendar-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar-utils.d.ts","sourceRoot":"","sources":["../../src/calendar-engine/calendar-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,221 @@
1
+ import { addDays, addMinutes, addMonths, addWeeks, differenceInCalendarDays, differenceInMinutes, eachDayOfInterval, endOfDay, format, isSameDay, isSameMonth, isWithinInterval, startOfDay, startOfMonth, startOfWeek, } from "date-fns";
2
+ /**
3
+ * The 6×7 grid of days shown in the month view: the weeks spanning the month,
4
+ * padded to complete weeks so leading/trailing days of adjacent months fill the
5
+ * grid. Always 6 rows so the grid height doesn't jump between months.
6
+ */
7
+ export function buildMonthGrid(date, weekStartsOn) {
8
+ const gridStart = startOfWeek(startOfMonth(date), { weekStartsOn });
9
+ const weeks = [];
10
+ let cursor = gridStart;
11
+ for (let w = 0; w < 6; w++) {
12
+ const week = [];
13
+ for (let d = 0; d < 7; d++) {
14
+ week.push(cursor);
15
+ cursor = addDays(cursor, 1);
16
+ }
17
+ weeks.push(week);
18
+ }
19
+ return weeks;
20
+ }
21
+ /** The 7 days of the week containing `date`. */
22
+ export function buildWeekDays(date, weekStartsOn) {
23
+ const start = startOfWeek(date, { weekStartsOn });
24
+ return Array.from({ length: 7 }, (_, i) => addDays(start, i));
25
+ }
26
+ /** The visible day range for a view (used to filter events cheaply). */
27
+ export function viewRange(date, view, weekStartsOn) {
28
+ switch (view) {
29
+ case "month": {
30
+ const grid = buildMonthGrid(date, weekStartsOn);
31
+ return { start: grid[0][0], end: endOfDay(grid[5][6]) };
32
+ }
33
+ case "week": {
34
+ const days = buildWeekDays(date, weekStartsOn);
35
+ return { start: startOfDay(days[0]), end: endOfDay(days[6]) };
36
+ }
37
+ case "day":
38
+ return { start: startOfDay(date), end: endOfDay(date) };
39
+ case "agenda":
40
+ return { start: startOfDay(date), end: endOfDay(addDays(date, 30)) };
41
+ }
42
+ }
43
+ /** Advance/rewind the anchor date by one page of `view`. `dir` is +1 or -1. */
44
+ export function stepDate(date, view, dir) {
45
+ switch (view) {
46
+ case "month":
47
+ return addMonths(date, dir);
48
+ case "week":
49
+ return addWeeks(date, dir);
50
+ case "day":
51
+ return addDays(date, dir);
52
+ case "agenda":
53
+ return addDays(date, dir * 30);
54
+ }
55
+ }
56
+ // ── Event helpers ────────────────────────────────────────────────────────────
57
+ /** Resolved end for an event, applying a default duration when `end` is absent. */
58
+ export function eventEnd(event, defaultDurationMinutes = 60) {
59
+ if (event.end && event.end > event.start)
60
+ return event.end;
61
+ return addMinutes(event.start, defaultDurationMinutes);
62
+ }
63
+ /** Whether an event covers more than one calendar day. */
64
+ export function isMultiDay(event) {
65
+ if (event.allDay)
66
+ return differenceInCalendarDays(eventEnd(event, 0), event.start) >= 1;
67
+ return !isSameDay(event.start, eventEnd(event));
68
+ }
69
+ /** Chronological sort: earlier start first, longer event first on ties. */
70
+ export function sortEvents(events) {
71
+ return [...events].sort((a, b) => {
72
+ const s = a.start.getTime() - b.start.getTime();
73
+ if (s !== 0)
74
+ return s;
75
+ return eventEnd(b).getTime() - eventEnd(a).getTime();
76
+ });
77
+ }
78
+ /**
79
+ * Events that intersect a given day, in sorted order. Handles multi-day and
80
+ * all-day events (they appear on every day they span).
81
+ */
82
+ export function eventsForDay(events, day) {
83
+ const dayStart = startOfDay(day);
84
+ const dayEnd = endOfDay(day);
85
+ return sortEvents(events.filter((e) => {
86
+ const start = e.start;
87
+ const end = eventEnd(e);
88
+ // Overlap test: event starts before day ends AND ends after day starts.
89
+ return start <= dayEnd && end >= dayStart;
90
+ }));
91
+ }
92
+ /** Split events for a day into all-day/multi-day banners vs timed blocks. */
93
+ export function partitionDayEvents(events) {
94
+ const allDay = [];
95
+ const timed = [];
96
+ for (const e of events) {
97
+ if (e.allDay || isMultiDay(e))
98
+ allDay.push(e);
99
+ else
100
+ timed.push(e);
101
+ }
102
+ return { allDay, timed };
103
+ }
104
+ // ── Time-grid geometry ───────────────────────────────────────────────────────
105
+ /** Minutes since midnight for a date. */
106
+ export function minutesSinceMidnight(date) {
107
+ return date.getHours() * 60 + date.getMinutes();
108
+ }
109
+ /**
110
+ * Lay out a day's timed events into non-overlapping lanes and convert their
111
+ * times into top/height/left/width percentages for the given hour window.
112
+ *
113
+ * Overlapping events (by clock time) are grouped into a cluster and split into
114
+ * as many lanes as the max concurrency of that cluster, so simultaneous events
115
+ * sit side by side and never visually collide.
116
+ */
117
+ export function layoutDayEvents(events, day, minHour, maxHour, defaultDurationMinutes = 60) {
118
+ const dayStart = startOfDay(day);
119
+ const windowStart = minHour * 60;
120
+ const windowEnd = maxHour * 60;
121
+ const windowSpan = Math.max(1, windowEnd - windowStart);
122
+ const spans = sortEvents(events).map((event) => {
123
+ const rawStart = differenceInMinutes(event.start, dayStart);
124
+ const rawEnd = differenceInMinutes(eventEnd(event, defaultDurationMinutes), dayStart);
125
+ const startMin = Math.max(windowStart, Math.min(rawStart, windowEnd));
126
+ // Keep a minimum visible height of 15 minutes.
127
+ const endMin = Math.max(startMin + 15, Math.min(rawEnd, windowEnd));
128
+ return { event, startMin, endMin };
129
+ });
130
+ // Group into clusters of transitively-overlapping spans.
131
+ const positioned = [];
132
+ let cluster = [];
133
+ let clusterEnd = -Infinity;
134
+ const flush = () => {
135
+ if (cluster.length === 0)
136
+ return;
137
+ // Greedy lane assignment within the cluster.
138
+ const laneEnds = [];
139
+ const laneOf = new Map();
140
+ for (const span of cluster) {
141
+ let lane = laneEnds.findIndex((end) => end <= span.startMin);
142
+ if (lane === -1) {
143
+ lane = laneEnds.length;
144
+ laneEnds.push(span.endMin);
145
+ }
146
+ else {
147
+ laneEnds[lane] = span.endMin;
148
+ }
149
+ laneOf.set(span, lane);
150
+ }
151
+ const lanes = laneEnds.length;
152
+ for (const span of cluster) {
153
+ const lane = laneOf.get(span);
154
+ positioned.push({
155
+ event: span.event,
156
+ top: ((span.startMin - windowStart) / windowSpan) * 100,
157
+ height: ((span.endMin - span.startMin) / windowSpan) * 100,
158
+ left: (lane / lanes) * 100,
159
+ width: (1 / lanes) * 100,
160
+ lane,
161
+ lanes,
162
+ });
163
+ }
164
+ cluster = [];
165
+ clusterEnd = -Infinity;
166
+ };
167
+ for (const span of spans) {
168
+ if (cluster.length > 0 && span.startMin >= clusterEnd)
169
+ flush();
170
+ cluster.push(span);
171
+ clusterEnd = Math.max(clusterEnd, span.endMin);
172
+ }
173
+ flush();
174
+ return positioned;
175
+ }
176
+ /** The hour labels (integers) for a `[minHour, maxHour]` window. */
177
+ export function hourLabels(minHour, maxHour) {
178
+ const out = [];
179
+ for (let h = minHour; h <= maxHour; h++)
180
+ out.push(h);
181
+ return out;
182
+ }
183
+ // ── Formatting ───────────────────────────────────────────────────────────────
184
+ /** Title-bar label for the current view, e.g. "July 2026" or "Jul 7 – 13, 2026". */
185
+ export function viewTitle(date, view, weekStartsOn) {
186
+ switch (view) {
187
+ case "month":
188
+ return format(date, "MMMM yyyy");
189
+ case "day":
190
+ return format(date, "EEEE, MMMM d, yyyy");
191
+ case "agenda":
192
+ return `${format(date, "MMM d")} – ${format(addDays(date, 30), "MMM d, yyyy")}`;
193
+ case "week": {
194
+ const days = buildWeekDays(date, weekStartsOn);
195
+ const a = days[0];
196
+ const b = days[6];
197
+ if (isSameMonth(a, b))
198
+ return `${format(a, "MMM d")} – ${format(b, "d, yyyy")}`;
199
+ return `${format(a, "MMM d")} – ${format(b, "MMM d, yyyy")}`;
200
+ }
201
+ }
202
+ }
203
+ /** Compact time range label, e.g. "9:00 – 10:30 AM". */
204
+ export function formatEventTime(event, defaultDurationMinutes = 60) {
205
+ if (event.allDay)
206
+ return "All day";
207
+ const end = eventEnd(event, defaultDurationMinutes);
208
+ return `${format(event.start, "h:mm a")} – ${format(end, "h:mm a")}`;
209
+ }
210
+ /** Group events by day (YYYY-MM-DD key), sorted, for the agenda view. */
211
+ export function groupEventsByDay(events, range) {
212
+ const days = eachDayOfInterval({ start: range.start, end: range.end });
213
+ return days
214
+ .map((day) => ({ day, events: eventsForDay(events, day) }))
215
+ .filter((g) => g.events.length > 0);
216
+ }
217
+ /** Whether a date falls inside an inclusive range. */
218
+ export function isInRange(date, range) {
219
+ return isWithinInterval(date, { start: range.start, end: range.end });
220
+ }
221
+ //# sourceMappingURL=calendar-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar-utils.js","sourceRoot":"","sources":["../../src/calendar-engine/calendar-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import * as React from "react";
2
+ import type { AvailabilityWindow, CalendarEvent, CalendarSize, CalendarSlot, CalendarView, EventChangeMeta, FreeSlot, SmartCalendarHandle, TimeRange, Weekday } from "./types";
3
+ export interface SmartCalendarProps<T = unknown> {
4
+ /** The events / bookings to render. */
5
+ events?: CalendarEvent<T>[];
6
+ /** Controlled anchor date. */
7
+ date?: Date;
8
+ /** Uncontrolled initial anchor date. @default today */
9
+ defaultDate?: Date;
10
+ onDateChange?: (date: Date) => void;
11
+ /** Controlled active view. */
12
+ view?: CalendarView;
13
+ /** Uncontrolled initial view. @default "month" */
14
+ defaultView?: CalendarView;
15
+ onViewChange?: (view: CalendarView) => void;
16
+ /** Which views to offer in the toolbar switcher. @default all four */
17
+ views?: CalendarView[];
18
+ size?: CalendarSize;
19
+ /** 0 = Sunday … 1 = Monday. @default 0 */
20
+ weekStartsOn?: Weekday;
21
+ /** First visible hour in time-grid views (0–23). @default 0 */
22
+ minHour?: number;
23
+ /** Last visible hour in time-grid views (1–24). @default 24 */
24
+ maxHour?: number;
25
+ /** Slot granularity + click-to-create duration, in minutes. @default 30 */
26
+ slotMinutes?: number;
27
+ /** Fallback duration for events without an `end`. @default 60 */
28
+ defaultDurationMinutes?: number;
29
+ /** Shade a business-hours window in time-grid views. */
30
+ businessHours?: TimeRange;
31
+ /** Max event pills per month cell before "+N more". @default 3 */
32
+ maxEventsPerDay?: number;
33
+ /** Enable drag-to-move + edge-resize (per event, gated by `event.editable`). */
34
+ editable?: boolean;
35
+ /** Fires after a completed move or resize gesture. */
36
+ onEventChange?: (meta: EventChangeMeta<T>) => void;
37
+ /** Weekly bookable windows; renders free-slot chips in time-grid views. */
38
+ availability?: AvailabilityWindow[];
39
+ /** Concurrent bookings allowed per slot. @default 1 */
40
+ slotCapacity?: number;
41
+ /** Fires when a bookable free slot is chosen. */
42
+ onSlotBook?: (slot: FreeSlot) => void;
43
+ onEventClick?: (event: CalendarEvent<T>, e: React.MouseEvent) => void;
44
+ onSlotSelect?: (slot: CalendarSlot) => void;
45
+ /** Override event rendering across every view. */
46
+ renderEvent?: (event: CalendarEvent<T>) => React.ReactNode;
47
+ /** Hide the built-in toolbar (title, nav, view switcher). */
48
+ hideToolbar?: boolean;
49
+ /** Extra toolbar content, rendered on the right of the view switcher. */
50
+ toolbarExtra?: React.ReactNode;
51
+ className?: string;
52
+ ref?: React.Ref<SmartCalendarHandle>;
53
+ }
54
+ /**
55
+ * `SmartCalendar` — a declarative calendar & booking surface with month, week,
56
+ * day, and agenda views. Date, view, and events are each independently
57
+ * controllable or uncontrolled; navigation, view switching, slot selection, and
58
+ * event activation are exposed through callbacks and an imperative
59
+ * `SmartCalendarHandle`.
60
+ */
61
+ export declare function SmartCalendar<T = unknown>({ events, date, defaultDate, onDateChange, view, defaultView, onViewChange, views, size, weekStartsOn, minHour, maxHour, slotMinutes, defaultDurationMinutes, businessHours, maxEventsPerDay, editable, onEventChange, availability, slotCapacity, onSlotBook, onEventClick, onSlotSelect, renderEvent, hideToolbar, toolbarExtra, className, ref, }: SmartCalendarProps<T>): import("react/jsx-runtime").JSX.Element;
62
+ //# sourceMappingURL=calendar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../src/calendar-engine/calendar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,mBAAmB,EACnB,SAAS,EACT,OAAO,EACR,MAAM,SAAS,CAAA;AAgBhB,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,OAAO;IAC7C,uCAAuC;IACvC,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAA;IAG3B,8BAA8B;IAC9B,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,uDAAuD;IACvD,WAAW,CAAC,EAAE,IAAI,CAAA;IAClB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAGnC,8BAA8B;IAC9B,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,kDAAkD;IAClD,WAAW,CAAC,EAAE,YAAY,CAAA;IAC1B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAA;IAC3C,sEAAsE;IACtE,KAAK,CAAC,EAAE,YAAY,EAAE,CAAA;IAGtB,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iEAAiE;IACjE,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,wDAAwD;IACxD,aAAa,CAAC,EAAE,SAAS,CAAA;IACzB,kEAAkE;IAClE,eAAe,CAAC,EAAE,MAAM,CAAA;IAGxB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,sDAAsD;IACtD,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IAGlD,2EAA2E;IAC3E,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAA;IACnC,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iDAAiD;IACjD,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAA;IAGrC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAA;IACrE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAA;IAG3C,kDAAkD;IAClD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAA;IAC1D,6DAA6D;IAC7D,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,yEAAyE;IACzE,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAE9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;CACrC;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,GAAG,OAAO,EAAE,EACzC,MAAW,EACX,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,IAAI,EACJ,WAAqB,EACrB,YAAY,EACZ,KAA0C,EAC1C,IAAW,EACX,YAAgB,EAChB,OAAW,EACX,OAAY,EACZ,WAAgB,EAChB,sBAA2B,EAC3B,aAAa,EACb,eAAmB,EACnB,QAAgB,EAChB,aAAa,EACb,YAAY,EACZ,YAAgB,EAChB,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,EACX,YAAY,EACZ,SAAS,EACT,GAAG,GACJ,EAAE,kBAAkB,CAAC,CAAC,CAAC,2CA+IvB"}