@shohojdhara/atomix 0.3.3 → 0.3.5

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 (489) hide show
  1. package/README.md +46 -28
  2. package/dist/atomix.css +15 -9
  3. package/dist/atomix.css.map +1 -0
  4. package/dist/atomix.min.css +15108 -11
  5. package/dist/atomix.min.css.map +1 -0
  6. package/dist/charts.d.ts +1929 -0
  7. package/dist/charts.js +6482 -0
  8. package/dist/charts.js.map +1 -0
  9. package/dist/core.d.ts +1289 -0
  10. package/dist/core.js +3357 -0
  11. package/dist/core.js.map +1 -0
  12. package/dist/forms.d.ts +1085 -0
  13. package/dist/forms.js +2450 -0
  14. package/dist/forms.js.map +1 -0
  15. package/dist/heavy.d.ts +636 -0
  16. package/dist/heavy.js +4550 -0
  17. package/dist/heavy.js.map +1 -0
  18. package/dist/index.d.ts +5196 -4618
  19. package/dist/index.esm.js +4240 -2776
  20. package/dist/index.esm.js.map +1 -1
  21. package/dist/index.js +4057 -2571
  22. package/dist/index.js.map +1 -1
  23. package/dist/index.min.js +1 -1
  24. package/dist/index.min.js.map +1 -1
  25. package/dist/layout.d.ts +300 -0
  26. package/dist/layout.js +336 -0
  27. package/dist/layout.js.map +1 -0
  28. package/dist/theme.d.ts +1992 -0
  29. package/dist/theme.js +5348 -0
  30. package/dist/theme.js.map +1 -0
  31. package/package.json +63 -68
  32. package/scripts/atomix-cli.js +879 -15
  33. package/scripts/cli/__tests__/cli-commands.test.js +204 -0
  34. package/scripts/cli/__tests__/utils.test.js +201 -0
  35. package/scripts/cli/__tests__/vitest.config.js +26 -0
  36. package/scripts/cli/interactive-init.js +37 -45
  37. package/scripts/cli/theme-bridge.js +129 -0
  38. package/scripts/cli/token-manager.js +32 -7
  39. package/scripts/cli/utils.js +347 -0
  40. package/scripts/sync-theme-config.js +22 -22
  41. package/src/components/Accordion/Accordion.tsx +5 -54
  42. package/src/components/Accordion/index.ts +1 -1
  43. package/src/components/Avatar/Avatar.tsx +3 -3
  44. package/src/components/Badge/Badge.tsx +3 -3
  45. package/src/components/Breadcrumb/Breadcrumb.tsx +3 -3
  46. package/src/components/Button/Button.tsx +36 -1
  47. package/src/components/Card/ElevationCard.tsx +1 -1
  48. package/src/components/Chart/AnimatedChart.tsx +19 -17
  49. package/src/components/Chart/AreaChart.tsx +5 -1
  50. package/src/components/Chart/BarChart.tsx +1 -0
  51. package/src/components/Chart/BubbleChart.tsx +6 -5
  52. package/src/components/Chart/ChartToolbar.tsx +1 -0
  53. package/src/components/Chart/FunnelChart.tsx +1 -1
  54. package/src/components/Chart/RadarChart.tsx +19 -12
  55. package/src/components/Chart/ScatterChart.tsx +3 -3
  56. package/src/components/Chart/TreemapChart.tsx +2 -1
  57. package/src/components/Chart/WaterfallChart.tsx +0 -1
  58. package/src/components/Chart/types.ts +12 -2
  59. package/src/components/Chart/utils.ts +4 -3
  60. package/src/components/DataTable/DataTable.tsx +3 -3
  61. package/src/components/Dropdown/Dropdown.tsx +12 -9
  62. package/src/components/Footer/FooterSection.tsx +3 -3
  63. package/src/components/Form/Checkbox.tsx +3 -3
  64. package/src/components/Form/Input.tsx +4 -2
  65. package/src/components/Form/Radio.tsx +3 -3
  66. package/src/components/Form/Select.tsx +3 -3
  67. package/src/components/Form/Textarea.tsx +4 -2
  68. package/src/components/List/List.stories.tsx +3 -3
  69. package/src/components/List/List.tsx +3 -3
  70. package/src/components/List/ListGroup.tsx +3 -1
  71. package/src/components/Modal/Modal.tsx +3 -3
  72. package/src/components/Navigation/Menu/MegaMenu.tsx +9 -3
  73. package/src/components/Navigation/Menu/Menu.tsx +9 -3
  74. package/src/components/Pagination/Pagination.tsx +6 -5
  75. package/src/components/PhotoViewer/PhotoViewerImage.tsx +2 -2
  76. package/src/components/Popover/Popover.tsx +4 -4
  77. package/src/components/Progress/Progress.tsx +6 -2
  78. package/src/components/Rating/Rating.tsx +5 -2
  79. package/src/components/Slider/Slider.tsx +10 -9
  80. package/src/components/Spinner/Spinner.tsx +3 -3
  81. package/src/components/Tabs/Tabs.tsx +3 -3
  82. package/src/components/Tooltip/Tooltip.tsx +3 -3
  83. package/src/components/index.ts +5 -2
  84. package/src/layouts/MasonryGrid/MasonryGrid.tsx +2 -2
  85. package/src/lib/composables/useChartPerformance.ts +102 -78
  86. package/src/lib/composables/useChartScale.ts +10 -0
  87. package/src/lib/composables/useHero.ts +9 -2
  88. package/src/lib/composables/useHeroBackgroundSlider.ts +5 -3
  89. package/src/lib/composables/useSideMenu.ts +1 -0
  90. package/src/lib/composables/useVideoPlayer.ts +3 -2
  91. package/src/lib/config/index.ts +275 -0
  92. package/src/lib/config/loader.ts +147 -0
  93. package/src/lib/hooks/index.ts +0 -1
  94. package/src/lib/hooks/useComponentCustomization.ts +10 -14
  95. package/src/lib/hooks/usePerformanceMonitor.ts +149 -0
  96. package/src/lib/index.ts +1 -0
  97. package/src/lib/patterns/index.ts +2 -2
  98. package/src/lib/patterns/slots.tsx +2 -2
  99. package/src/lib/theme/composeTheme.ts +1 -6
  100. package/src/lib/theme/config/index.ts +1 -1
  101. package/src/lib/theme/config/loader.ts +75 -41
  102. package/src/lib/theme/config/types.ts +21 -7
  103. package/src/lib/theme/config/validator.ts +1 -1
  104. package/src/lib/theme/constants.ts +12 -2
  105. package/src/lib/theme/core/ThemeEngine.ts +8 -0
  106. package/src/lib/theme/core/ThemeValidator.ts +5 -2
  107. package/src/lib/theme/createTheme.ts +0 -1
  108. package/src/lib/theme/createThemeFromConfig.ts +132 -0
  109. package/src/lib/theme/devtools/CLI.ts +161 -76
  110. package/src/lib/theme/devtools/Comparator.tsx +343 -0
  111. package/src/lib/theme/devtools/IMPROVEMENTS.md +429 -0
  112. package/src/lib/theme/devtools/Inspector.tsx +22 -7
  113. package/src/lib/theme/devtools/LiveEditor.tsx +399 -0
  114. package/src/lib/theme/devtools/README.md +433 -0
  115. package/src/lib/theme/devtools/index.ts +12 -11
  116. package/src/lib/theme/generateCSSVariables.ts +80 -39
  117. package/src/lib/theme/i18n/rtl.ts +2 -1
  118. package/src/lib/theme/index.ts +18 -2
  119. package/src/lib/theme/runtime/ThemeApplicator.ts +28 -11
  120. package/src/lib/theme/runtime/ThemeErrorBoundary.tsx +3 -3
  121. package/src/lib/theme/runtime/ThemeManager.test.ts +17 -1
  122. package/src/lib/theme/runtime/ThemeManager.ts +11 -7
  123. package/src/lib/theme/types.ts +42 -43
  124. package/src/lib/theme-tools.ts +8 -68
  125. package/src/lib/types/components.ts +252 -109
  126. package/src/lib/types/partProps.ts +0 -16
  127. package/src/lib/utils/fontPreloader.ts +148 -0
  128. package/src/lib/utils/index.ts +11 -0
  129. package/src/lib/utils/memoryMonitor.ts +189 -0
  130. package/src/styles/01-settings/_settings.fonts.scss +2 -5
  131. package/src/styles/01-settings/_settings.navbar.scss +1 -1
  132. package/src/styles/03-generic/_generated-root.css +26 -0
  133. package/src/styles/06-components/_components.navbar.scss +6 -5
  134. package/src/themes/README.md +1 -2
  135. package/src/themes/themes.config.js +30 -181
  136. package/dist/themes/applemix.css +0 -16576
  137. package/dist/themes/applemix.css.map +0 -1
  138. package/dist/themes/applemix.min.css +0 -73
  139. package/dist/themes/boomdevs.css +0 -16007
  140. package/dist/themes/boomdevs.css.map +0 -1
  141. package/dist/themes/boomdevs.min.css +0 -406
  142. package/dist/themes/esrar.css +0 -18424
  143. package/dist/themes/esrar.css.map +0 -1
  144. package/dist/themes/esrar.min.css +0 -221
  145. package/dist/themes/flashtrade.css +0 -17596
  146. package/dist/themes/flashtrade.css.map +0 -1
  147. package/dist/themes/flashtrade.min.css +0 -196
  148. package/dist/themes/mashroom.css +0 -31082
  149. package/dist/themes/mashroom.css.map +0 -1
  150. package/dist/themes/mashroom.min.css +0 -450
  151. package/dist/themes/shaj-default.css +0 -17200
  152. package/dist/themes/shaj-default.css.map +0 -1
  153. package/dist/themes/shaj-default.min.css +0 -502
  154. package/scripts/build-themes.js +0 -208
  155. package/src/components/AtomixGlass/atomixGLass.old.tsx +0 -1263
  156. package/src/lib/theme/__tests__/ThemeBuilder.test.ts +0 -223
  157. package/src/lib/theme/builders/ThemeBuilder.ts +0 -372
  158. package/src/lib/theme/errors.test.ts +0 -207
  159. package/src/lib/theme/generators/CSSGenerator.ts +0 -311
  160. package/src/lib/theme/generators/ConfigGenerator.ts +0 -287
  161. package/src/lib/theme/generators/TypeGenerator.ts +0 -228
  162. package/src/lib/theme/generators/index.ts +0 -21
  163. package/src/lib/theme/monitoring/ThemeAnalytics.ts +0 -409
  164. package/src/lib/theme/monitoring/index.ts +0 -17
  165. package/src/lib/theme/overrides/ComponentOverrides.ts +0 -243
  166. package/src/lib/theme/overrides/index.ts +0 -15
  167. package/src/lib/theme/whitelabel/WhiteLabelManager.ts +0 -364
  168. package/src/lib/theme/whitelabel/index.ts +0 -13
  169. package/src/themes/THEME_CHECKLIST.md +0 -74
  170. package/src/themes/applemix/01-settings/_index.scss +0 -24
  171. package/src/themes/applemix/01-settings/_settings.animations.scss +0 -0
  172. package/src/themes/applemix/01-settings/_settings.background.scss +0 -6
  173. package/src/themes/applemix/01-settings/_settings.colors.scss +0 -75
  174. package/src/themes/applemix/01-settings/_settings.config.scss +0 -15
  175. package/src/themes/applemix/01-settings/_settings.typography.scss +0 -30
  176. package/src/themes/applemix/02-tools/_index.scss +0 -4
  177. package/src/themes/applemix/03-generic/_index.scss +0 -7
  178. package/src/themes/applemix/04-elements/_index.scss +0 -7
  179. package/src/themes/applemix/05-objects/_index.scss +0 -7
  180. package/src/themes/applemix/06-components/_index.scss +0 -15
  181. package/src/themes/applemix/99-utilities/_index.scss +0 -7
  182. package/src/themes/applemix/README.md +0 -378
  183. package/src/themes/applemix/index.scss +0 -33
  184. package/src/themes/boomdevs/01-settings/_index.scss +0 -38
  185. package/src/themes/boomdevs/01-settings/_settings.accordion.scss +0 -12
  186. package/src/themes/boomdevs/01-settings/_settings.animations.scss +0 -11
  187. package/src/themes/boomdevs/01-settings/_settings.avatar.scss +0 -9
  188. package/src/themes/boomdevs/01-settings/_settings.badge.scss +0 -11
  189. package/src/themes/boomdevs/01-settings/_settings.border-radius.scss +0 -16
  190. package/src/themes/boomdevs/01-settings/_settings.border.scss +0 -10
  191. package/src/themes/boomdevs/01-settings/_settings.box-shadow.scss +0 -14
  192. package/src/themes/boomdevs/01-settings/_settings.breadcrumb.scss +0 -13
  193. package/src/themes/boomdevs/01-settings/_settings.breakpoints.scss +0 -15
  194. package/src/themes/boomdevs/01-settings/_settings.button.scss +0 -9
  195. package/src/themes/boomdevs/01-settings/_settings.callout.scss +0 -9
  196. package/src/themes/boomdevs/01-settings/_settings.card.scss +0 -11
  197. package/src/themes/boomdevs/01-settings/_settings.checkbox.scss +0 -9
  198. package/src/themes/boomdevs/01-settings/_settings.colors.scss +0 -145
  199. package/src/themes/boomdevs/01-settings/_settings.dropdown.scss +0 -11
  200. package/src/themes/boomdevs/01-settings/_settings.grid.scss +0 -16
  201. package/src/themes/boomdevs/01-settings/_settings.input.scss +0 -14
  202. package/src/themes/boomdevs/01-settings/_settings.link.scss +0 -11
  203. package/src/themes/boomdevs/01-settings/_settings.list.scss +0 -10
  204. package/src/themes/boomdevs/01-settings/_settings.modal.scss +0 -16
  205. package/src/themes/boomdevs/01-settings/_settings.navbar.scss +0 -16
  206. package/src/themes/boomdevs/01-settings/_settings.pagination.scss +0 -13
  207. package/src/themes/boomdevs/01-settings/_settings.progress.scss +0 -11
  208. package/src/themes/boomdevs/01-settings/_settings.rating.scss +0 -10
  209. package/src/themes/boomdevs/01-settings/_settings.spacing.scss +0 -33
  210. package/src/themes/boomdevs/01-settings/_settings.spinner.scss +0 -11
  211. package/src/themes/boomdevs/01-settings/_settings.steps.scss +0 -12
  212. package/src/themes/boomdevs/01-settings/_settings.tabs.scss +0 -12
  213. package/src/themes/boomdevs/01-settings/_settings.todo.scss +0 -15
  214. package/src/themes/boomdevs/01-settings/_settings.toggle.scss +0 -14
  215. package/src/themes/boomdevs/01-settings/_settings.tooltip.scss +0 -13
  216. package/src/themes/boomdevs/01-settings/_settings.typography.scss +0 -58
  217. package/src/themes/boomdevs/01-settings/_settings.video-player.scss +0 -12
  218. package/src/themes/boomdevs/02-tools/_index.scss +0 -7
  219. package/src/themes/boomdevs/03-generic/_index.scss +0 -7
  220. package/src/themes/boomdevs/04-elements/_index.scss +0 -7
  221. package/src/themes/boomdevs/05-objects/_index.scss +0 -7
  222. package/src/themes/boomdevs/06-components/_components.button.scss +0 -11
  223. package/src/themes/boomdevs/06-components/_index.scss +0 -11
  224. package/src/themes/boomdevs/99-utilities/_index.scss +0 -7
  225. package/src/themes/boomdevs/index.scss +0 -26
  226. package/src/themes/esrar/01-settings/_index.scss +0 -15
  227. package/src/themes/esrar/01-settings/_settings.colors.scss +0 -91
  228. package/src/themes/esrar/02-tools/_index.scss +0 -8
  229. package/src/themes/esrar/02-tools/_tools.animations.scss +0 -342
  230. package/src/themes/esrar/06-components/_components.accordion.scss +0 -49
  231. package/src/themes/esrar/06-components/_components.avatar-group.scss +0 -14
  232. package/src/themes/esrar/06-components/_components.avatar.scss +0 -61
  233. package/src/themes/esrar/06-components/_components.badge.scss +0 -117
  234. package/src/themes/esrar/06-components/_components.breadcrumb.scss +0 -65
  235. package/src/themes/esrar/06-components/_components.btn-group.scss +0 -19
  236. package/src/themes/esrar/06-components/_components.button.scss +0 -224
  237. package/src/themes/esrar/06-components/_components.callout.scss +0 -51
  238. package/src/themes/esrar/06-components/_components.card.scss +0 -134
  239. package/src/themes/esrar/06-components/_components.chart.scss +0 -24
  240. package/src/themes/esrar/06-components/_components.checkbox-group.scss +0 -26
  241. package/src/themes/esrar/06-components/_components.checkbox.scss +0 -71
  242. package/src/themes/esrar/06-components/_components.color-mode-toggle.scss +0 -29
  243. package/src/themes/esrar/06-components/_components.countdown.scss +0 -67
  244. package/src/themes/esrar/06-components/_components.data-table.scss +0 -22
  245. package/src/themes/esrar/06-components/_components.datepicker.scss +0 -20
  246. package/src/themes/esrar/06-components/_components.dropdown.scss +0 -272
  247. package/src/themes/esrar/06-components/_components.edge-panel.scss +0 -10
  248. package/src/themes/esrar/06-components/_components.form-group.scss +0 -15
  249. package/src/themes/esrar/06-components/_components.form.scss +0 -66
  250. package/src/themes/esrar/06-components/_components.hero.scss +0 -251
  251. package/src/themes/esrar/06-components/_components.icon.scss +0 -33
  252. package/src/themes/esrar/06-components/_components.image-gallery.scss +0 -29
  253. package/src/themes/esrar/06-components/_components.input.scss +0 -91
  254. package/src/themes/esrar/06-components/_components.list-group.scss +0 -26
  255. package/src/themes/esrar/06-components/_components.modal.scss +0 -148
  256. package/src/themes/esrar/06-components/_components.notification.scss +0 -80
  257. package/src/themes/esrar/06-components/_components.pagination.scss +0 -84
  258. package/src/themes/esrar/06-components/_components.popover.scss +0 -10
  259. package/src/themes/esrar/06-components/_components.progress.scss +0 -64
  260. package/src/themes/esrar/06-components/_components.rating.scss +0 -26
  261. package/src/themes/esrar/06-components/_components.skeleton.scss +0 -15
  262. package/src/themes/esrar/06-components/_components.slider.scss +0 -90
  263. package/src/themes/esrar/06-components/_components.spinner.scss +0 -71
  264. package/src/themes/esrar/06-components/_components.steps.scss +0 -76
  265. package/src/themes/esrar/06-components/_components.tab.scss +0 -58
  266. package/src/themes/esrar/06-components/_components.tag.scss +0 -21
  267. package/src/themes/esrar/06-components/_components.timeline.scss +0 -19
  268. package/src/themes/esrar/06-components/_components.toast.scss +0 -91
  269. package/src/themes/esrar/06-components/_components.toggle.scss +0 -74
  270. package/src/themes/esrar/06-components/_components.tooltip.scss +0 -45
  271. package/src/themes/esrar/06-components/_components.upload.scss +0 -102
  272. package/src/themes/esrar/06-components/_index.scss +0 -42
  273. package/src/themes/esrar/index.scss +0 -30
  274. package/src/themes/flashtrade/01-settings/_index.scss +0 -19
  275. package/src/themes/flashtrade/01-settings/_settings.animations.scss +0 -11
  276. package/src/themes/flashtrade/01-settings/_settings.background.scss +0 -9
  277. package/src/themes/flashtrade/01-settings/_settings.colors.scss +0 -79
  278. package/src/themes/flashtrade/01-settings/_settings.config.scss +0 -16
  279. package/src/themes/flashtrade/01-settings/_settings.typography.scss +0 -35
  280. package/src/themes/flashtrade/02-tools/_index.scss +0 -8
  281. package/src/themes/flashtrade/03-generic/_index.scss +0 -8
  282. package/src/themes/flashtrade/04-elements/_index.scss +0 -12
  283. package/src/themes/flashtrade/05-objects/_index.scss +0 -8
  284. package/src/themes/flashtrade/06-components/_components.badge.scss +0 -156
  285. package/src/themes/flashtrade/06-components/_components.button.scss +0 -135
  286. package/src/themes/flashtrade/06-components/_components.card.scss +0 -214
  287. package/src/themes/flashtrade/06-components/_components.navbar.scss +0 -227
  288. package/src/themes/flashtrade/06-components/_index.scss +0 -13
  289. package/src/themes/flashtrade/99-utilities/_index.scss +0 -9
  290. package/src/themes/flashtrade/99-utilities/_utilities.trading.scss +0 -187
  291. package/src/themes/flashtrade/README.md +0 -386
  292. package/src/themes/flashtrade/demo.html +0 -272
  293. package/src/themes/flashtrade/index.scss +0 -36
  294. package/src/themes/mashroom/01-settings/_index.scss +0 -69
  295. package/src/themes/mashroom/01-settings/_settings.accordion.scss +0 -32
  296. package/src/themes/mashroom/01-settings/_settings.animations.scss +0 -26
  297. package/src/themes/mashroom/01-settings/_settings.avatar-group.scss +0 -22
  298. package/src/themes/mashroom/01-settings/_settings.avatar.scss +0 -57
  299. package/src/themes/mashroom/01-settings/_settings.badge.scss +0 -19
  300. package/src/themes/mashroom/01-settings/_settings.border-radius.scss +0 -24
  301. package/src/themes/mashroom/01-settings/_settings.border.scss +0 -14
  302. package/src/themes/mashroom/01-settings/_settings.box-shadow.scss +0 -40
  303. package/src/themes/mashroom/01-settings/_settings.breadcrumb.scss +0 -0
  304. package/src/themes/mashroom/01-settings/_settings.breakpoints.scss +0 -17
  305. package/src/themes/mashroom/01-settings/_settings.btn-group.scss +0 -5
  306. package/src/themes/mashroom/01-settings/_settings.button.scss +0 -50
  307. package/src/themes/mashroom/01-settings/_settings.callout.scss +0 -81
  308. package/src/themes/mashroom/01-settings/_settings.card.scss +0 -52
  309. package/src/themes/mashroom/01-settings/_settings.checkbox-group.scss +0 -5
  310. package/src/themes/mashroom/01-settings/_settings.checkbox.scss +0 -23
  311. package/src/themes/mashroom/01-settings/_settings.color-mode.scss +0 -7
  312. package/src/themes/mashroom/01-settings/_settings.colors.scss +0 -180
  313. package/src/themes/mashroom/01-settings/_settings.config.scss +0 -4
  314. package/src/themes/mashroom/01-settings/_settings.countdown.scss +0 -20
  315. package/src/themes/mashroom/01-settings/_settings.data-table.scss +0 -56
  316. package/src/themes/mashroom/01-settings/_settings.datepicker.scss +0 -45
  317. package/src/themes/mashroom/01-settings/_settings.design-tokens.scss +0 -3
  318. package/src/themes/mashroom/01-settings/_settings.dropdown.scss +0 -45
  319. package/src/themes/mashroom/01-settings/_settings.edge-panel.scss +0 -24
  320. package/src/themes/mashroom/01-settings/_settings.fonts.scss +0 -8
  321. package/src/themes/mashroom/01-settings/_settings.form-group.scss +0 -14
  322. package/src/themes/mashroom/01-settings/_settings.form.scss +0 -6
  323. package/src/themes/mashroom/01-settings/_settings.grid.scss +0 -23
  324. package/src/themes/mashroom/01-settings/_settings.hero.scss +0 -41
  325. package/src/themes/mashroom/01-settings/_settings.input.scss +0 -51
  326. package/src/themes/mashroom/01-settings/_settings.link.scss +0 -13
  327. package/src/themes/mashroom/01-settings/_settings.list-group.scss +0 -16
  328. package/src/themes/mashroom/01-settings/_settings.list.scss +0 -13
  329. package/src/themes/mashroom/01-settings/_settings.masonry-grid.scss +0 -23
  330. package/src/themes/mashroom/01-settings/_settings.menu.scss +0 -50
  331. package/src/themes/mashroom/01-settings/_settings.messages.scss +0 -98
  332. package/src/themes/mashroom/01-settings/_settings.modal.scss +0 -41
  333. package/src/themes/mashroom/01-settings/_settings.nav.scss +0 -20
  334. package/src/themes/mashroom/01-settings/_settings.navbar.scss +0 -54
  335. package/src/themes/mashroom/01-settings/_settings.pagination.scss +0 -30
  336. package/src/themes/mashroom/01-settings/_settings.photoviewer.scss +0 -45
  337. package/src/themes/mashroom/01-settings/_settings.popover.scss +0 -20
  338. package/src/themes/mashroom/01-settings/_settings.position.scss +0 -9
  339. package/src/themes/mashroom/01-settings/_settings.progress.scss +0 -17
  340. package/src/themes/mashroom/01-settings/_settings.rating.scss +0 -11
  341. package/src/themes/mashroom/01-settings/_settings.river.scss +0 -50
  342. package/src/themes/mashroom/01-settings/_settings.sectionintro.scss +0 -31
  343. package/src/themes/mashroom/01-settings/_settings.select.scss +0 -47
  344. package/src/themes/mashroom/01-settings/_settings.side-menu.scss +0 -79
  345. package/src/themes/mashroom/01-settings/_settings.skeleton.scss +0 -24
  346. package/src/themes/mashroom/01-settings/_settings.spacing.scss +0 -66
  347. package/src/themes/mashroom/01-settings/_settings.spinner.scss +0 -34
  348. package/src/themes/mashroom/01-settings/_settings.steps.scss +0 -33
  349. package/src/themes/mashroom/01-settings/_settings.tabs.scss +0 -33
  350. package/src/themes/mashroom/01-settings/_settings.testimonials.scss +0 -24
  351. package/src/themes/mashroom/01-settings/_settings.todo.scss +0 -52
  352. package/src/themes/mashroom/01-settings/_settings.toggle.scss +0 -49
  353. package/src/themes/mashroom/01-settings/_settings.tooltip.scss +0 -20
  354. package/src/themes/mashroom/01-settings/_settings.typography.scss +0 -95
  355. package/src/themes/mashroom/01-settings/_settings.upload.scss +0 -96
  356. package/src/themes/mashroom/01-settings/_settings.z-layers.scss +0 -19
  357. package/src/themes/mashroom/02-tools/_index.scss +0 -8
  358. package/src/themes/mashroom/02-tools/_tools.psychedelic-gradients.scss +0 -78
  359. package/src/themes/mashroom/02-tools/_tools.trippy-effects.scss +0 -114
  360. package/src/themes/mashroom/03-generic/_index.scss +0 -6
  361. package/src/themes/mashroom/04-elements/_index.scss +0 -6
  362. package/src/themes/mashroom/05-objects/_index.scss +0 -6
  363. package/src/themes/mashroom/06-components/_components.accordion.scss +0 -187
  364. package/src/themes/mashroom/06-components/_components.avatar-group.scss +0 -276
  365. package/src/themes/mashroom/06-components/_components.avatar.scss +0 -114
  366. package/src/themes/mashroom/06-components/_components.badge.scss +0 -152
  367. package/src/themes/mashroom/06-components/_components.breadcrumb.scss +0 -162
  368. package/src/themes/mashroom/06-components/_components.btn-group.scss +0 -404
  369. package/src/themes/mashroom/06-components/_components.button.scss +0 -160
  370. package/src/themes/mashroom/06-components/_components.callout.scss +0 -140
  371. package/src/themes/mashroom/06-components/_components.card.scss +0 -225
  372. package/src/themes/mashroom/06-components/_components.checkbox.scss +0 -186
  373. package/src/themes/mashroom/06-components/_components.color-mode-toggle.scss +0 -308
  374. package/src/themes/mashroom/06-components/_components.countdown.scss +0 -402
  375. package/src/themes/mashroom/06-components/_components.data-table.scss +0 -354
  376. package/src/themes/mashroom/06-components/_components.datepicker.scss +0 -349
  377. package/src/themes/mashroom/06-components/_components.dropdown.scss +0 -334
  378. package/src/themes/mashroom/06-components/_components.edge-panel.scss +0 -413
  379. package/src/themes/mashroom/06-components/_components.form-group.scss +0 -433
  380. package/src/themes/mashroom/06-components/_components.form.scss +0 -358
  381. package/src/themes/mashroom/06-components/_components.hero.scss +0 -151
  382. package/src/themes/mashroom/06-components/_components.input.scss +0 -147
  383. package/src/themes/mashroom/06-components/_components.list-group.scss +0 -456
  384. package/src/themes/mashroom/06-components/_components.list.scss +0 -145
  385. package/src/themes/mashroom/06-components/_components.menu.scss +0 -497
  386. package/src/themes/mashroom/06-components/_components.messages.scss +0 -277
  387. package/src/themes/mashroom/06-components/_components.modal.scss +0 -264
  388. package/src/themes/mashroom/06-components/_components.nav.scss +0 -181
  389. package/src/themes/mashroom/06-components/_components.navbar.scss +0 -538
  390. package/src/themes/mashroom/06-components/_components.pagination.scss +0 -400
  391. package/src/themes/mashroom/06-components/_components.photoviewer.scss +0 -498
  392. package/src/themes/mashroom/06-components/_components.popover.scss +0 -383
  393. package/src/themes/mashroom/06-components/_components.product-review.scss +0 -408
  394. package/src/themes/mashroom/06-components/_components.progress.scss +0 -249
  395. package/src/themes/mashroom/06-components/_components.rating.scss +0 -300
  396. package/src/themes/mashroom/06-components/_components.river.scss +0 -570
  397. package/src/themes/mashroom/06-components/_components.sectionintro.scss +0 -546
  398. package/src/themes/mashroom/06-components/_components.select.scss +0 -455
  399. package/src/themes/mashroom/06-components/_components.side-menu.scss +0 -635
  400. package/src/themes/mashroom/06-components/_components.skeleton.scss +0 -447
  401. package/src/themes/mashroom/06-components/_components.slider.scss +0 -414
  402. package/src/themes/mashroom/06-components/_components.spinner.scss +0 -198
  403. package/src/themes/mashroom/06-components/_components.steps.scss +0 -350
  404. package/src/themes/mashroom/06-components/_components.tabs.scss +0 -269
  405. package/src/themes/mashroom/06-components/_components.testimonials.scss +0 -561
  406. package/src/themes/mashroom/06-components/_components.toggle.scss +0 -231
  407. package/src/themes/mashroom/06-components/_components.tooltip.scss +0 -167
  408. package/src/themes/mashroom/06-components/_components.upload.scss +0 -537
  409. package/src/themes/mashroom/06-components/_components.video-player.scss +0 -560
  410. package/src/themes/mashroom/06-components/_index.scss +0 -55
  411. package/src/themes/mashroom/99-utilities/_index.scss +0 -6
  412. package/src/themes/mashroom/index.scss +0 -26
  413. package/src/themes/shaj-default/01-settings/_index.scss +0 -69
  414. package/src/themes/shaj-default/01-settings/_settings.accordion.scss +0 -38
  415. package/src/themes/shaj-default/01-settings/_settings.animations.scss +0 -32
  416. package/src/themes/shaj-default/01-settings/_settings.avatar-group.scss +0 -28
  417. package/src/themes/shaj-default/01-settings/_settings.avatar.scss +0 -63
  418. package/src/themes/shaj-default/01-settings/_settings.badge.scss +0 -25
  419. package/src/themes/shaj-default/01-settings/_settings.border-radius.scss +0 -24
  420. package/src/themes/shaj-default/01-settings/_settings.border.scss +0 -20
  421. package/src/themes/shaj-default/01-settings/_settings.box-shadow.scss +0 -46
  422. package/src/themes/shaj-default/01-settings/_settings.breadcrumb.scss +0 -0
  423. package/src/themes/shaj-default/01-settings/_settings.breakpoints.scss +0 -23
  424. package/src/themes/shaj-default/01-settings/_settings.btn-group.scss +0 -11
  425. package/src/themes/shaj-default/01-settings/_settings.button.scss +0 -56
  426. package/src/themes/shaj-default/01-settings/_settings.callout.scss +0 -87
  427. package/src/themes/shaj-default/01-settings/_settings.card.scss +0 -52
  428. package/src/themes/shaj-default/01-settings/_settings.checkbox-group.scss +0 -11
  429. package/src/themes/shaj-default/01-settings/_settings.checkbox.scss +0 -29
  430. package/src/themes/shaj-default/01-settings/_settings.color-mode.scss +0 -13
  431. package/src/themes/shaj-default/01-settings/_settings.colors.scss +0 -91
  432. package/src/themes/shaj-default/01-settings/_settings.config.scss +0 -4
  433. package/src/themes/shaj-default/01-settings/_settings.countdown.scss +0 -26
  434. package/src/themes/shaj-default/01-settings/_settings.data-table.scss +0 -62
  435. package/src/themes/shaj-default/01-settings/_settings.datepicker.scss +0 -51
  436. package/src/themes/shaj-default/01-settings/_settings.design-tokens.scss +0 -9
  437. package/src/themes/shaj-default/01-settings/_settings.dropdown.scss +0 -51
  438. package/src/themes/shaj-default/01-settings/_settings.edge-panel.scss +0 -30
  439. package/src/themes/shaj-default/01-settings/_settings.fonts.scss +0 -13
  440. package/src/themes/shaj-default/01-settings/_settings.form-group.scss +0 -20
  441. package/src/themes/shaj-default/01-settings/_settings.form.scss +0 -12
  442. package/src/themes/shaj-default/01-settings/_settings.grid.scss +0 -29
  443. package/src/themes/shaj-default/01-settings/_settings.hero.scss +0 -47
  444. package/src/themes/shaj-default/01-settings/_settings.input.scss +0 -57
  445. package/src/themes/shaj-default/01-settings/_settings.link.scss +0 -19
  446. package/src/themes/shaj-default/01-settings/_settings.list-group.scss +0 -22
  447. package/src/themes/shaj-default/01-settings/_settings.list.scss +0 -19
  448. package/src/themes/shaj-default/01-settings/_settings.masonry-grid.scss +0 -29
  449. package/src/themes/shaj-default/01-settings/_settings.menu.scss +0 -56
  450. package/src/themes/shaj-default/01-settings/_settings.messages.scss +0 -104
  451. package/src/themes/shaj-default/01-settings/_settings.modal.scss +0 -47
  452. package/src/themes/shaj-default/01-settings/_settings.nav.scss +0 -26
  453. package/src/themes/shaj-default/01-settings/_settings.navbar.scss +0 -60
  454. package/src/themes/shaj-default/01-settings/_settings.pagination.scss +0 -36
  455. package/src/themes/shaj-default/01-settings/_settings.photoviewer.scss +0 -51
  456. package/src/themes/shaj-default/01-settings/_settings.popover.scss +0 -26
  457. package/src/themes/shaj-default/01-settings/_settings.position.scss +0 -15
  458. package/src/themes/shaj-default/01-settings/_settings.progress.scss +0 -23
  459. package/src/themes/shaj-default/01-settings/_settings.rating.scss +0 -17
  460. package/src/themes/shaj-default/01-settings/_settings.river.scss +0 -56
  461. package/src/themes/shaj-default/01-settings/_settings.sectionintro.scss +0 -37
  462. package/src/themes/shaj-default/01-settings/_settings.select.scss +0 -53
  463. package/src/themes/shaj-default/01-settings/_settings.side-menu.scss +0 -85
  464. package/src/themes/shaj-default/01-settings/_settings.skeleton.scss +0 -30
  465. package/src/themes/shaj-default/01-settings/_settings.spacing.scss +0 -72
  466. package/src/themes/shaj-default/01-settings/_settings.spinner.scss +0 -24
  467. package/src/themes/shaj-default/01-settings/_settings.steps.scss +0 -39
  468. package/src/themes/shaj-default/01-settings/_settings.tabs.scss +0 -39
  469. package/src/themes/shaj-default/01-settings/_settings.testimonials.scss +0 -30
  470. package/src/themes/shaj-default/01-settings/_settings.todo.scss +0 -58
  471. package/src/themes/shaj-default/01-settings/_settings.toggle.scss +0 -55
  472. package/src/themes/shaj-default/01-settings/_settings.tooltip.scss +0 -26
  473. package/src/themes/shaj-default/01-settings/_settings.typography.scss +0 -101
  474. package/src/themes/shaj-default/01-settings/_settings.upload.scss +0 -102
  475. package/src/themes/shaj-default/01-settings/_settings.z-layers.scss +0 -25
  476. package/src/themes/shaj-default/02-tools/_index.scss +0 -0
  477. package/src/themes/shaj-default/03-generic/_generic.root.scss +0 -0
  478. package/src/themes/shaj-default/03-generic/_index.scss +0 -2
  479. package/src/themes/shaj-default/04-elements/_index.scss +0 -0
  480. package/src/themes/shaj-default/05-objects/_index.scss +0 -0
  481. package/src/themes/shaj-default/06-components/_components.button.scss +0 -55
  482. package/src/themes/shaj-default/06-components/_components.card.scss +0 -57
  483. package/src/themes/shaj-default/06-components/_components.input.scss +0 -58
  484. package/src/themes/shaj-default/06-components/_components.navbar.scss +0 -99
  485. package/src/themes/shaj-default/06-components/_components.tooltip.scss +0 -0
  486. package/src/themes/shaj-default/06-components/_index.scss +0 -13
  487. package/src/themes/shaj-default/99-utilities/_index.scss +0 -0
  488. package/src/themes/shaj-default/index.scss +0 -25
  489. package/theme.config.ts +0 -360
@@ -0,0 +1,300 @@
1
+ import React, { HTMLAttributes, ReactNode } from 'react';
2
+
3
+ interface GridProps extends HTMLAttributes<HTMLDivElement> {
4
+ /**
5
+ * The content to be rendered within the grid
6
+ */
7
+ children: ReactNode;
8
+ /**
9
+ * Additional CSS class names
10
+ */
11
+ className?: string;
12
+ /**
13
+ * Control the horizontal alignment of items
14
+ */
15
+ justifyContent?: 'start' | 'end' | 'center' | 'between' | 'around' | 'evenly';
16
+ /**
17
+ * Control the vertical alignment of items
18
+ */
19
+ alignItems?: 'start' | 'end' | 'center' | 'baseline' | 'stretch';
20
+ /**
21
+ * No gutters between columns
22
+ */
23
+ noGutters?: boolean;
24
+ /**
25
+ * Flex direction
26
+ */
27
+ direction?: 'row' | 'column' | 'row-reverse' | 'column-reverse';
28
+ /**
29
+ * Wrap behavior
30
+ */
31
+ wrap?: 'nowrap' | 'wrap' | 'wrap-reverse';
32
+ }
33
+ /**
34
+ * Grid component for creating responsive layouts.
35
+ * Uses the CSS grid system defined in _objects.grid.scss.
36
+ *
37
+ * @example
38
+ * ```tsx
39
+ * <Grid>
40
+ * <GridCol sm={6} md={4} lg={3}>Column content</GridCol>
41
+ * <GridCol sm={6} md={4} lg={3}>Column content</GridCol>
42
+ * <GridCol sm={6} md={4} lg={3}>Column content</GridCol>
43
+ * </Grid>
44
+ * ```
45
+ */
46
+ declare const Grid: React.ForwardRefExoticComponent<GridProps & React.RefAttributes<HTMLDivElement>>;
47
+
48
+ interface MasonryGridProps extends HTMLAttributes<HTMLDivElement> {
49
+ /**
50
+ * The content to be rendered within the masonry grid
51
+ */
52
+ children: ReactNode;
53
+ /**
54
+ * Additional CSS class names
55
+ */
56
+ className?: string;
57
+ /**
58
+ * Number of columns at extra small breakpoint (default)
59
+ */
60
+ xs?: number;
61
+ /**
62
+ * Number of columns at small breakpoint
63
+ */
64
+ sm?: number;
65
+ /**
66
+ * Number of columns at medium breakpoint
67
+ */
68
+ md?: number;
69
+ /**
70
+ * Number of columns at large breakpoint
71
+ */
72
+ lg?: number;
73
+ /**
74
+ * Number of columns at extra large breakpoint
75
+ */
76
+ xl?: number;
77
+ /**
78
+ * Number of columns at extra extra large breakpoint
79
+ */
80
+ xxl?: number;
81
+ /**
82
+ * Gap between items (in pixels)
83
+ */
84
+ gap?: number;
85
+ /**
86
+ * Whether to animate item transitions
87
+ */
88
+ animate?: boolean;
89
+ /**
90
+ * Whether to handle image loading to prevent layout shifts
91
+ * When true, items will be shown immediately and positions updated as images load
92
+ */
93
+ imagesLoaded?: boolean;
94
+ /**
95
+ * Callback fired when all images are loaded and layout is complete
96
+ */
97
+ onLayoutComplete?: () => void;
98
+ /**
99
+ * Callback fired each time an image loads and layout is updated
100
+ */
101
+ onImageLoad?: (loadedCount: number, totalCount: number) => void;
102
+ }
103
+ /**
104
+ * MasonryGrid component for creating a responsive masonry layout.
105
+ * Uses JavaScript to position items optimally based on available vertical space,
106
+ * similar to how a mason fits stones in a wall.
107
+ *
108
+ * @example
109
+ * ```tsx
110
+ * <MasonryGrid xs={1} sm={2} md={3} lg={4}>
111
+ * <MasonryGridItem>Item 1</MasonryGridItem>
112
+ * <MasonryGridItem>Item 2</MasonryGridItem>
113
+ * <MasonryGridItem>Item 3</MasonryGridItem>
114
+ * </MasonryGrid>
115
+ * ```
116
+ */
117
+ declare const MasonryGrid: React.ForwardRefExoticComponent<MasonryGridProps & React.RefAttributes<HTMLDivElement>>;
118
+
119
+ interface GridColProps extends HTMLAttributes<HTMLDivElement> {
120
+ /**
121
+ * The content to be rendered within the column
122
+ */
123
+ children: ReactNode;
124
+ /**
125
+ * Additional CSS class names
126
+ */
127
+ className?: string;
128
+ /**
129
+ * Number of columns to span at extra small breakpoint (default)
130
+ */
131
+ xs?: number | 'auto' | boolean;
132
+ /**
133
+ * Number of columns to span at small breakpoint
134
+ */
135
+ sm?: number | 'auto' | boolean;
136
+ /**
137
+ * Number of columns to span at medium breakpoint
138
+ */
139
+ md?: number | 'auto' | boolean;
140
+ /**
141
+ * Number of columns to span at large breakpoint
142
+ */
143
+ lg?: number | 'auto' | boolean;
144
+ /**
145
+ * Number of columns to span at extra large breakpoint
146
+ */
147
+ xl?: number | 'auto' | boolean;
148
+ /**
149
+ * Number of columns to span at extra extra large breakpoint
150
+ */
151
+ xxl?: number | 'auto' | boolean;
152
+ /**
153
+ * Offset at extra small breakpoint
154
+ */
155
+ offsetXs?: number;
156
+ /**
157
+ * Offset at small breakpoint
158
+ */
159
+ offsetSm?: number;
160
+ /**
161
+ * Offset at medium breakpoint
162
+ */
163
+ offsetMd?: number;
164
+ /**
165
+ * Offset at large breakpoint
166
+ */
167
+ offsetLg?: number;
168
+ /**
169
+ * Offset at extra large breakpoint
170
+ */
171
+ offsetXl?: number;
172
+ /**
173
+ * Offset at extra extra large breakpoint
174
+ */
175
+ offsetXxl?: number;
176
+ /**
177
+ * Flex grow property
178
+ */
179
+ grow?: boolean;
180
+ /**
181
+ * Flex shrink property
182
+ */
183
+ shrink?: boolean;
184
+ /**
185
+ * Flex basis property
186
+ */
187
+ basis?: string;
188
+ /**
189
+ * Alignment of the column
190
+ */
191
+ align?: 'start' | 'end' | 'center' | 'baseline' | 'stretch';
192
+ }
193
+ /**
194
+ * GridCol component for creating columns within a Grid.
195
+ * Uses the CSS grid column classes defined in _objects.grid.scss.
196
+ */
197
+ declare const GridCol: React.ForwardRefExoticComponent<GridColProps & React.RefAttributes<HTMLDivElement>>;
198
+
199
+ interface ContainerProps extends HTMLAttributes<HTMLDivElement> {
200
+ /**
201
+ * The content to be rendered within the container
202
+ */
203
+ children: ReactNode;
204
+ /**
205
+ * Additional CSS class names
206
+ */
207
+ className?: string;
208
+ /**
209
+ * Container type:
210
+ * - undefined: responsive container with max-width at each breakpoint
211
+ * - 'fluid': full width container
212
+ * - 'sm', 'md', 'lg', 'xl', 'xxl': responsive container with max-width at specified breakpoint
213
+ */
214
+ type?: 'fluid' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl';
215
+ }
216
+ /**
217
+ * Container component for creating responsive layouts.
218
+ * Uses the CSS container classes defined in _objects.container.scss.
219
+ *
220
+ * @example
221
+ * ```tsx
222
+ * <Container>
223
+ * Content with responsive max-width
224
+ * </Container>
225
+ *
226
+ * <Container type="fluid">
227
+ * Full width content
228
+ * </Container>
229
+ *
230
+ * <Container type="md">
231
+ * Content with max-width at md breakpoint
232
+ * </Container>
233
+ * ```
234
+ */
235
+ declare const Container: React.ForwardRefExoticComponent<ContainerProps & React.RefAttributes<HTMLDivElement>>;
236
+
237
+ interface RowProps extends HTMLAttributes<HTMLDivElement> {
238
+ /**
239
+ * The content to be rendered within the row
240
+ */
241
+ children: ReactNode;
242
+ /**
243
+ * Additional CSS class names
244
+ */
245
+ className?: string;
246
+ /**
247
+ * Control the horizontal alignment of items
248
+ */
249
+ justifyContent?: 'start' | 'end' | 'center' | 'between' | 'around' | 'evenly';
250
+ /**
251
+ * Control the vertical alignment of items
252
+ */
253
+ alignItems?: 'start' | 'end' | 'center' | 'baseline' | 'stretch';
254
+ /**
255
+ * No gutters between columns
256
+ */
257
+ noGutters?: boolean;
258
+ }
259
+ /**
260
+ * Row component for creating rows within a Grid or Container.
261
+ * Uses the CSS row classes defined in _objects.grid.scss.
262
+ *
263
+ * @example
264
+ * ```tsx
265
+ * <Container>
266
+ * <Row justifyContent="between" alignItems="center">
267
+ * <GridCol md={6}>Column content</GridCol>
268
+ * <GridCol md={6}>Column content</GridCol>
269
+ * </Row>
270
+ * </Container>
271
+ * ```
272
+ */
273
+ declare const Row: React.ForwardRefExoticComponent<RowProps & React.RefAttributes<HTMLDivElement>>;
274
+
275
+ interface MasonryGridItemProps extends HTMLAttributes<HTMLDivElement> {
276
+ /**
277
+ * The content to be rendered within the masonry grid item
278
+ */
279
+ children: ReactNode;
280
+ /**
281
+ * Additional CSS class names
282
+ */
283
+ className?: string;
284
+ }
285
+ /**
286
+ * MasonryGridItem component for creating items within a MasonryGrid.
287
+ * Each item will be positioned optimally by the parent MasonryGrid component.
288
+ *
289
+ * @example
290
+ * ```tsx
291
+ * <MasonryGrid>
292
+ * <MasonryGridItem>Item 1</MasonryGridItem>
293
+ * <MasonryGridItem>Item 2</MasonryGridItem>
294
+ * </MasonryGrid>
295
+ * ```
296
+ */
297
+ declare const MasonryGridItem: React.ForwardRefExoticComponent<MasonryGridItemProps & React.RefAttributes<HTMLDivElement>>;
298
+
299
+ export { Container, Grid, GridCol, MasonryGrid, MasonryGridItem, Row };
300
+ export type { ContainerProps, GridColProps, GridProps, MasonryGridItemProps, MasonryGridProps, RowProps };
package/dist/layout.js ADDED
@@ -0,0 +1,336 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+
3
+ import React, { forwardRef, useState, useRef, useEffect, useImperativeHandle, useCallback, Children, isValidElement } from "react";
4
+
5
+ /**
6
+ * Grid component for creating responsive layouts.
7
+ * Uses the CSS grid system defined in _objects.grid.scss.
8
+ *
9
+ * @example
10
+ * ```tsx
11
+ * <Grid>
12
+ * <GridCol sm={6} md={4} lg={3}>Column content</GridCol>
13
+ * <GridCol sm={6} md={4} lg={3}>Column content</GridCol>
14
+ * <GridCol sm={6} md={4} lg={3}>Column content</GridCol>
15
+ * </Grid>
16
+ * ```
17
+ */ const Grid = forwardRef((({children: children, className: className = "", justifyContent: justifyContent, alignItems: alignItems, noGutters: noGutters, direction: direction, wrap: wrap, ...props}, ref) => {
18
+ const classes = [ "o-grid" ];
19
+ return justifyContent && classes.push(`u-justify-content-${justifyContent}`), alignItems && classes.push(`u-align-items-${alignItems}`),
20
+ noGutters && classes.push("o-grid--no-gutters"), direction && classes.push(`u-flex-direction-${direction}`),
21
+ wrap && classes.push(`u-flex-wrap-${wrap}`), className && classes.push(className),
22
+ jsx("div", {
23
+ ref: ref,
24
+ className: classes.join(" "),
25
+ ...props,
26
+ children: children
27
+ });
28
+ }));
29
+
30
+ Grid.displayName = "Grid";
31
+
32
+ /**
33
+ * MasonryGrid component for creating a responsive masonry layout.
34
+ * Uses JavaScript to position items optimally based on available vertical space,
35
+ * similar to how a mason fits stones in a wall.
36
+ *
37
+ * @example
38
+ * ```tsx
39
+ * <MasonryGrid xs={1} sm={2} md={3} lg={4}>
40
+ * <MasonryGridItem>Item 1</MasonryGridItem>
41
+ * <MasonryGridItem>Item 2</MasonryGridItem>
42
+ * <MasonryGridItem>Item 3</MasonryGridItem>
43
+ * </MasonryGrid>
44
+ * ```
45
+ */
46
+ const MasonryGrid = forwardRef((({children: children, className: className = "", xs: xs = 1, sm: sm, md: md, lg: lg, xl: xl, xxl: xxl, gap: gap = 16, animate: animate = !0, imagesLoaded: imagesLoaded = !0, onLayoutComplete: onLayoutComplete, onImageLoad: onImageLoad, ...props}, ref) => {
47
+ // === REFS & STATE ===
48
+ const [columns, setColumns] = useState(xs), [positions, setPositions] = useState([]), [layoutComplete, setLayoutComplete] = useState(!1), [loadingImages, setLoadingImages] = useState(!1), containerRef = useRef(null), columnHeights = useRef([]), imagesLoadedCount = useRef(0), totalImagesCount = useRef(0), imageElements = useRef(new Map);
49
+ useEffect((() => {
50
+ setLoadingImages(!!imagesLoaded);
51
+ }), [ columns, imagesLoaded ]),
52
+ // Forward ref for parent components
53
+ useImperativeHandle(ref, (() => containerRef.current));
54
+ // === HANDLE RESPONSIVE COLUMNS ===
55
+ const getResponsiveColumns = useCallback((() => {
56
+ const width = window.innerWidth;
57
+ return width >= 1400 && void 0 !== xxl ? xxl : width >= 1200 && void 0 !== xl ? xl : width >= 992 && void 0 !== lg ? lg : width >= 768 && void 0 !== md ? md : width >= 576 && void 0 !== sm ? sm : xs;
58
+ }), [ xs, sm, md, lg, xl, xxl ]);
59
+ useEffect((() => {
60
+ const handleResize = () => setColumns(getResponsiveColumns());
61
+ return handleResize(), // Set on mount
62
+ window.addEventListener("resize", handleResize), () => window.removeEventListener("resize", handleResize);
63
+ }), [ getResponsiveColumns ]);
64
+ // === PREPARE ITEMS WITH REFS ===
65
+ const [items, setItems] = useState([]);
66
+ useEffect((() => {
67
+ const newItems = [];
68
+ Children.forEach(children, ((child, index) => {
69
+ isValidElement(child) && newItems.push({
70
+ id: child.key?.toString() || `masonry-item-${index}`,
71
+ element: child,
72
+ position: null,
73
+ ref: React.createRef()
74
+ });
75
+ })), setItems(newItems);
76
+ }), [ children ]);
77
+ // === TRACK & MANAGE IMAGES ===
78
+ const handleImageLoad = useCallback((img => {
79
+ if (!imageElements.current.get(img)) {
80
+ // Add loaded class for animation
81
+ if (imageElements.current.set(img, !0), imagesLoadedCount.current += 1, containerRef.current && imagesLoaded) {
82
+ const itemElement = img.closest(".o-masonry-grid > div");
83
+ itemElement && (itemElement.offsetHeight, itemElement.classList.add("o-masonry-grid__item-loaded"),
84
+ itemElement.classList.remove("o-masonry-grid__item-loading"));
85
+ }
86
+ // Ensure layout is recalculated after DOM paints the item image (prevents overlap on slow/late image loads)
87
+ requestAnimationFrame((() => {
88
+ requestAnimationFrame((() => {
89
+ calculateLayout();
90
+ }));
91
+ })), onImageLoad?.(imagesLoadedCount.current, totalImagesCount.current),
92
+ // If all images have loaded, update loading state and complete layout
93
+ imagesLoadedCount.current >= totalImagesCount.current && totalImagesCount.current > 0 && (setLayoutComplete(!0),
94
+ setLoadingImages(!1), // This ensures the loading class is removed *immediately* after images load
95
+ // Force a double requestAnimationFrame for final layout calculation after all images are loaded (guarantees DOM paint)
96
+ requestAnimationFrame((() => {
97
+ requestAnimationFrame((() => {
98
+ calculateLayout(),
99
+ // As a failsafe, if still present for some render lag, force another setLoadingImages(false)
100
+ setLoadingImages(!1);
101
+ }));
102
+ })), onLayoutComplete?.());
103
+ }
104
+ }), [ onImageLoad, onLayoutComplete, imagesLoaded ]), trackImages = useCallback((() => {
105
+ if (!imagesLoaded || !containerRef.current) return;
106
+ imageElements.current.clear(), imagesLoadedCount.current = 0;
107
+ const images = containerRef.current.querySelectorAll("img");
108
+ return totalImagesCount.current = images.length, 0 === images.length ? (setLayoutComplete(!0),
109
+ setLoadingImages(!1), void onLayoutComplete?.()) : (setLoadingImages(!0), images.forEach((img => {
110
+ const masonryImg = img, itemElement = img.closest(".o-masonry-grid > div");
111
+ if (itemElement && itemElement.classList.add("o-masonry-grid__item-loading"), img.complete) handleImageLoad(img); else {
112
+ const loadHandler = () => handleImageLoad(img);
113
+ img.addEventListener("load", loadHandler), img.addEventListener("error", loadHandler),
114
+ masonryImg._masonryLoadHandler = loadHandler;
115
+ }
116
+ })), () => {
117
+ images.forEach((img => {
118
+ const masonryImg = img;
119
+ masonryImg._masonryLoadHandler && (img.removeEventListener("load", masonryImg._masonryLoadHandler),
120
+ img.removeEventListener("error", masonryImg._masonryLoadHandler), delete masonryImg._masonryLoadHandler);
121
+ }));
122
+ });
123
+ }), [ imagesLoaded, handleImageLoad, onLayoutComplete ]), calculateLayout = useCallback((() => {
124
+ if (!containerRef.current || 0 === items.length) return;
125
+ const colWidth = (containerRef.current.offsetWidth - gap * (columns - 1)) / columns;
126
+ columnHeights.current = Array(columns).fill(0);
127
+ const newPositions = [];
128
+ items.forEach(((item, index) => {
129
+ if (item.ref.current) {
130
+ // Find the shortest column
131
+ const shortestCol = columnHeights.current.indexOf(Math.min(...columnHeights.current)), left = shortestCol * (colWidth + gap), top = columnHeights.current[shortestCol] ?? 0, height = item.ref.current.offsetHeight;
132
+ columnHeights.current[shortestCol] = top + height + gap, newPositions[index] = {
133
+ left: left,
134
+ top: top,
135
+ width: colWidth,
136
+ height: height
137
+ };
138
+ }
139
+ })), setPositions(newPositions);
140
+ }), [ items, columns, gap ]);
141
+ // === OBSERVE CONTAINER RESIZE ===
142
+ useEffect((() => {
143
+ if (!containerRef.current) return;
144
+ let animationFrame = null;
145
+ const observer = new ResizeObserver((() => {
146
+ animationFrame && cancelAnimationFrame(animationFrame), animationFrame = requestAnimationFrame((() => calculateLayout()));
147
+ }));
148
+ return observer.observe(containerRef.current), () => {
149
+ observer.disconnect(), animationFrame && cancelAnimationFrame(animationFrame);
150
+ };
151
+ }), [ calculateLayout ]),
152
+ // === LAYOUT EFFECT (REPLACES setTimeout) ===
153
+ React.useLayoutEffect((() => imagesLoaded ? trackImages() : (calculateLayout(),
154
+ setLayoutComplete(!0), void setLoadingImages(!1))
155
+ // Only reset layoutComplete when items or columns change
156
+ ), [ items, columns, calculateLayout, imagesLoaded, trackImages ]),
157
+ // === NEW: Add ResizeObservers to all grid items for bulletproof image+content measurement ===
158
+ React.useEffect((() => {
159
+ // Clean up old observers if items ever change
160
+ const observers = [];
161
+ return items.forEach((item => {
162
+ if (item.ref.current) {
163
+ const obs = new ResizeObserver((() => {
164
+ // Double rAF: ensures layout only runs after DOM/paint/async renders
165
+ requestAnimationFrame((() => {
166
+ requestAnimationFrame((() => {
167
+ calculateLayout();
168
+ }));
169
+ }));
170
+ }));
171
+ obs.observe(item.ref.current), observers.push(obs);
172
+ }
173
+ })), () => {
174
+ observers.forEach((obs => obs.disconnect()));
175
+ };
176
+ }), [ items, calculateLayout ]);
177
+ // Ensure loadingImages state resets when items/columns/imagesLoaded change
178
+ // === DETERMINE CONTAINER HEIGHT ===
179
+ const containerHeight = columnHeights.current.length > 0 ? Math.max(...columnHeights.current) : 0, classes = [ "o-masonry-grid", className, animate ? "o-masonry-grid--animate" : "", loadingImages ? "o-masonry-grid--loading-images" : "" ].filter(Boolean).join(" ");
180
+ // === DETERMINE CLASSES ===
181
+ // === RENDER ===
182
+ return jsx("div", {
183
+ ref: containerRef,
184
+ className: classes,
185
+ style: {
186
+ position: "relative",
187
+ width: "100%",
188
+ height: `${containerHeight}px`,
189
+ ...props.style
190
+ },
191
+ ...props,
192
+ children: items.map(((item, index) => {
193
+ const position = positions[index];
194
+ return jsx("div", position ? {
195
+ ref: item.ref,
196
+ className: "o-masonry-grid__item",
197
+ style: {
198
+ position: "absolute",
199
+ left: `${position.left}px`,
200
+ top: `${position.top}px`,
201
+ width: `${position.width}px`,
202
+ opacity: 1
203
+ },
204
+ children: item.element
205
+ } : {
206
+ ref: item.ref,
207
+ style: {
208
+ opacity: 0,
209
+ position: "absolute"
210
+ },
211
+ children: item.element
212
+ }, item.id);
213
+ }))
214
+ });
215
+ }));
216
+
217
+ MasonryGrid.displayName = "MasonryGrid";
218
+
219
+ /**
220
+ * GridCol component for creating columns within a Grid.
221
+ * Uses the CSS grid column classes defined in _objects.grid.scss.
222
+ */
223
+ const GridCol = forwardRef((({children: children, className: className = "", xs: xs, sm: sm, md: md, lg: lg, xl: xl, xxl: xxl, offsetXs: offsetXs, offsetSm: offsetSm, offsetMd: offsetMd, offsetLg: offsetLg, offsetXl: offsetXl, offsetXxl: offsetXxl, grow: grow, shrink: shrink, basis: basis, align: align, ...props}, ref) => {
224
+ // If no specific size is provided, use auto class
225
+ const classes = xs || sm || md || lg || xl || xxl ? [ "o-grid__col" ] : [ "o-grid__col", "o-grid__col--auto" ], processResponsiveProp = (value, breakpoint) => {
226
+ void 0 !== value && (
227
+ // Handle boolean values
228
+ !0 !== value ? !1 !== value && (
229
+ // Handle string/number values
230
+ "xs" === breakpoint ? "auto" === value ? classes.push("o-grid__col--auto") : classes.push(`o-grid__col--${value}`) : "auto" === value ? classes.push(`o-grid__col--${breakpoint}-auto`) : classes.push(`o-grid__col--${breakpoint}-${value}`)) : classes.push("xs" === breakpoint ? "o-grid__col--auto" : `o-grid__col--${breakpoint}-auto`));
231
+ };
232
+ // Add column size classes based on the exact SCSS pattern
233
+ return processResponsiveProp(xs, "xs"), processResponsiveProp(sm, "sm"), processResponsiveProp(md, "md"),
234
+ processResponsiveProp(lg, "lg"), processResponsiveProp(xl, "xl"), processResponsiveProp(xxl, "xxl"),
235
+ // Add offset classes based on the exact SCSS pattern
236
+ offsetXs && classes.push(`o-grid__offset--${offsetXs}`), offsetSm && classes.push(`o-grid__offset--sm-${offsetSm}`),
237
+ offsetMd && classes.push(`o-grid__offset--md-${offsetMd}`), offsetLg && classes.push(`o-grid__offset--lg-${offsetLg}`),
238
+ offsetXl && classes.push(`o-grid__offset--xl-${offsetXl}`), offsetXxl && classes.push(`o-grid__offset--xxl-${offsetXxl}`),
239
+ // Add flex properties
240
+ void 0 !== grow && classes.push(grow ? "u-flex-grow-1" : "u-flex-grow-0"), void 0 !== shrink && classes.push(shrink ? "u-flex-shrink-1" : "u-flex-shrink-0"),
241
+ basis && classes.push(`u-flex-basis-${basis}`), align && classes.push(`u-align-self-${align}`),
242
+ className && classes.push(className), jsx("div", {
243
+ ref: ref,
244
+ className: classes.join(" "),
245
+ ...props,
246
+ children: children
247
+ });
248
+ }));
249
+
250
+ GridCol.displayName = "GridCol";
251
+
252
+ /**
253
+ * Container component for creating responsive layouts.
254
+ * Uses the CSS container classes defined in _objects.container.scss.
255
+ *
256
+ * @example
257
+ * ```tsx
258
+ * <Container>
259
+ * Content with responsive max-width
260
+ * </Container>
261
+ *
262
+ * <Container type="fluid">
263
+ * Full width content
264
+ * </Container>
265
+ *
266
+ * <Container type="md">
267
+ * Content with max-width at md breakpoint
268
+ * </Container>
269
+ * ```
270
+ */
271
+ const Container = forwardRef((({children: children, className: className = "", type: type, ...props}, ref) => {
272
+ let containerClass = "o-container";
273
+ return type && (containerClass = `o-container-${type}`), jsx("div", {
274
+ ref: ref,
275
+ className: `${containerClass} ${className}`.trim(),
276
+ ...props,
277
+ children: children
278
+ });
279
+ }));
280
+
281
+ Container.displayName = "Container";
282
+
283
+ /**
284
+ * Row component for creating rows within a Grid or Container.
285
+ * Uses the CSS row classes defined in _objects.grid.scss.
286
+ *
287
+ * @example
288
+ * ```tsx
289
+ * <Container>
290
+ * <Row justifyContent="between" alignItems="center">
291
+ * <GridCol md={6}>Column content</GridCol>
292
+ * <GridCol md={6}>Column content</GridCol>
293
+ * </Row>
294
+ * </Container>
295
+ * ```
296
+ */
297
+ const Row = forwardRef((({children: children, className: className = "", justifyContent: justifyContent, alignItems: alignItems, noGutters: noGutters, ...props}, ref) => {
298
+ const classes = [ "o-grid" ];
299
+ return justifyContent && classes.push(`u-justify-content-${justifyContent}`), alignItems && classes.push(`u-align-items-${alignItems}`),
300
+ noGutters && classes.push("o-grid--no-gutters"), className && classes.push(className),
301
+ jsx("div", {
302
+ ref: ref,
303
+ className: classes.join(" "),
304
+ ...props,
305
+ children: children
306
+ });
307
+ }));
308
+
309
+ Row.displayName = "Row";
310
+
311
+ /**
312
+ * MasonryGridItem component for creating items within a MasonryGrid.
313
+ * Each item will be positioned optimally by the parent MasonryGrid component.
314
+ *
315
+ * @example
316
+ * ```tsx
317
+ * <MasonryGrid>
318
+ * <MasonryGridItem>Item 1</MasonryGridItem>
319
+ * <MasonryGridItem>Item 2</MasonryGridItem>
320
+ * </MasonryGrid>
321
+ * ```
322
+ */
323
+ const MasonryGridItem = forwardRef((({children: children, className: className = "", ...props}, ref) => {
324
+ const classes = [ "o-masonry-grid__item-inner" ];
325
+ return className && classes.push(className), jsx("div", {
326
+ ref: ref,
327
+ className: classes.join(" "),
328
+ ...props,
329
+ children: children
330
+ });
331
+ }));
332
+
333
+ MasonryGridItem.displayName = "MasonryGridItem";
334
+
335
+ export { Container, Grid, GridCol, MasonryGrid, MasonryGridItem, Row };
336
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sources":["../src/layouts/Grid/Grid.tsx","../src/layouts/MasonryGrid/MasonryGrid.tsx","../src/layouts/Grid/GridCol.tsx","../src/layouts/Grid/Container.tsx","../src/layouts/Grid/Row.tsx","../src/layouts/MasonryGrid/MasonryGridItem.tsx"],"sourcesContent":[null,null,null,null,null,null],"names":["Grid","forwardRef","children","className","justifyContent","alignItems","noGutters","direction","wrap","props","ref","classes","push","_jsx","join","displayName","MasonryGrid","xs","sm","md","lg","xl","xxl","gap","animate","imagesLoaded","onLayoutComplete","onImageLoad","columns","setColumns","useState","positions","setPositions","layoutComplete","setLayoutComplete","loadingImages","setLoadingImages","containerRef","useRef","columnHeights","imagesLoadedCount","totalImagesCount","imageElements","Map","useEffect","useImperativeHandle","current","getResponsiveColumns","useCallback","width","window","innerWidth","undefined","handleResize","addEventListener","removeEventListener","items","setItems","newItems","Children","forEach","child","index","isValidElement","id","key","toString","element","position","React","createRef","handleImageLoad","img","get","set","itemElement","closest","offsetHeight","classList","add","remove","requestAnimationFrame","calculateLayout","trackImages","clear","images","querySelectorAll","length","masonryImg","complete","loadHandler","_masonryLoadHandler","colWidth","offsetWidth","Array","fill","newPositions","item","shortestCol","indexOf","Math","min","left","top","height","animationFrame","observer","ResizeObserver","cancelAnimationFrame","observe","disconnect","useLayoutEffect","observers","obs","containerHeight","max","filter","Boolean","style","map","opacity","GridCol","offsetXs","offsetSm","offsetMd","offsetLg","offsetXl","offsetXxl","grow","shrink","basis","align","processResponsiveProp","value","breakpoint","Container","type","containerClass","trim","Row","MasonryGridItem"],"mappings":"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"}