@sondor-technology/sondor-components 1.0.8 → 1.0.10

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 (437) hide show
  1. package/dist/components/accordion/accordion.constants.d.ts +5 -0
  2. package/dist/components/accordion/accordion.constants.d.ts.map +1 -0
  3. package/dist/components/accordion/accordion.constants.js +3 -0
  4. package/dist/components/accordion/accordion.constants.js.map +1 -0
  5. package/dist/components/accordion/accordion.d.ts +29 -0
  6. package/dist/components/accordion/accordion.d.ts.map +1 -0
  7. package/dist/components/accordion/accordion.js +226 -0
  8. package/dist/components/accordion/accordion.js.map +1 -0
  9. package/dist/components/alert/alert.constants.d.ts +2 -0
  10. package/dist/components/alert/alert.constants.d.ts.map +1 -1
  11. package/dist/components/alert/alert.d.ts +50 -2
  12. package/dist/components/alert/alert.d.ts.map +1 -1
  13. package/dist/components/alert/alert.js +285 -16
  14. package/dist/components/alert/alert.js.map +1 -1
  15. package/dist/components/avatar/avatar.d.ts +20 -0
  16. package/dist/components/avatar/avatar.d.ts.map +1 -0
  17. package/dist/components/avatar/avatar.js +100 -0
  18. package/dist/components/avatar/avatar.js.map +1 -0
  19. package/dist/components/back-to-top/back-to-top.d.ts +29 -0
  20. package/dist/components/back-to-top/back-to-top.d.ts.map +1 -0
  21. package/dist/components/back-to-top/back-to-top.js +149 -0
  22. package/dist/components/back-to-top/back-to-top.js.map +1 -0
  23. package/dist/components/bar-chart/bar-chart.d.ts +42 -0
  24. package/dist/components/bar-chart/bar-chart.d.ts.map +1 -0
  25. package/dist/components/bar-chart/bar-chart.js +298 -0
  26. package/dist/components/bar-chart/bar-chart.js.map +1 -0
  27. package/dist/components/breadcrumb/breadcrumb.js +2 -2
  28. package/dist/components/button/button.d.ts +1 -0
  29. package/dist/components/button/button.d.ts.map +1 -1
  30. package/dist/components/button/button.js +8 -8
  31. package/dist/components/button/button.js.map +1 -1
  32. package/dist/components/button-group/button-group.js +4 -4
  33. package/dist/components/calendar/calendar.d.ts.map +1 -1
  34. package/dist/components/calendar/calendar.js +21 -9
  35. package/dist/components/calendar/calendar.js.map +1 -1
  36. package/dist/components/chart/chart-base.d.ts +59 -0
  37. package/dist/components/chart/chart-base.d.ts.map +1 -0
  38. package/dist/components/chart/chart-base.js +261 -0
  39. package/dist/components/chart/chart-base.js.map +1 -0
  40. package/dist/components/chart/chart.utils.d.ts +27 -0
  41. package/dist/components/chart/chart.utils.d.ts.map +1 -0
  42. package/dist/components/chart/chart.utils.js +117 -0
  43. package/dist/components/chart/chart.utils.js.map +1 -0
  44. package/dist/components/code-block/code-block.d.ts +5 -0
  45. package/dist/components/code-block/code-block.d.ts.map +1 -1
  46. package/dist/components/code-block/code-block.js +34 -24
  47. package/dist/components/code-block/code-block.js.map +1 -1
  48. package/dist/components/consent/consent.d.ts +63 -0
  49. package/dist/components/consent/consent.d.ts.map +1 -0
  50. package/dist/components/consent/consent.js +327 -0
  51. package/dist/components/consent/consent.js.map +1 -0
  52. package/dist/components/consent/consent.utils.d.ts +36 -0
  53. package/dist/components/consent/consent.utils.d.ts.map +1 -0
  54. package/dist/components/consent/consent.utils.js +82 -0
  55. package/dist/components/consent/consent.utils.js.map +1 -0
  56. package/dist/components/contact/contact.d.ts +22 -0
  57. package/dist/components/contact/contact.d.ts.map +1 -0
  58. package/dist/components/contact/contact.js +83 -0
  59. package/dist/components/contact/contact.js.map +1 -0
  60. package/dist/components/container/container.d.ts +20 -0
  61. package/dist/components/container/container.d.ts.map +1 -0
  62. package/dist/components/container/container.js +68 -0
  63. package/dist/components/container/container.js.map +1 -0
  64. package/dist/components/content-card/content-card.js +4 -4
  65. package/dist/components/context-menu/context-menu.d.ts +89 -0
  66. package/dist/components/context-menu/context-menu.d.ts.map +1 -0
  67. package/dist/components/context-menu/context-menu.js +414 -0
  68. package/dist/components/context-menu/context-menu.js.map +1 -0
  69. package/dist/components/cron-builder/cron-builder.d.ts +5 -2
  70. package/dist/components/cron-builder/cron-builder.d.ts.map +1 -1
  71. package/dist/components/cron-builder/cron-builder.js +83 -15
  72. package/dist/components/cron-builder/cron-builder.js.map +1 -1
  73. package/dist/components/cta/cta.d.ts +20 -0
  74. package/dist/components/cta/cta.d.ts.map +1 -0
  75. package/dist/components/cta/cta.js +64 -0
  76. package/dist/components/cta/cta.js.map +1 -0
  77. package/dist/components/drawer/drawer.js +6 -6
  78. package/dist/components/faq/faq-item.d.ts +22 -0
  79. package/dist/components/faq/faq-item.d.ts.map +1 -0
  80. package/dist/components/faq/faq-item.js +117 -0
  81. package/dist/components/faq/faq-item.js.map +1 -0
  82. package/dist/components/faq/faq.d.ts +18 -0
  83. package/dist/components/faq/faq.d.ts.map +1 -0
  84. package/dist/components/faq/faq.js +38 -0
  85. package/dist/components/faq/faq.js.map +1 -0
  86. package/dist/components/feature-grid/feature-grid.d.ts +22 -0
  87. package/dist/components/feature-grid/feature-grid.d.ts.map +1 -0
  88. package/dist/components/feature-grid/feature-grid.js +55 -0
  89. package/dist/components/feature-grid/feature-grid.js.map +1 -0
  90. package/dist/components/feature-grid/feature.d.ts +18 -0
  91. package/dist/components/feature-grid/feature.d.ts.map +1 -0
  92. package/dist/components/feature-grid/feature.js +91 -0
  93. package/dist/components/feature-grid/feature.js.map +1 -0
  94. package/dist/components/field/field.js +2 -2
  95. package/dist/components/footer/footer.js +4 -4
  96. package/dist/components/form/form-reset.d.ts +7 -0
  97. package/dist/components/form/form-reset.d.ts.map +1 -0
  98. package/dist/components/form/form-reset.js +47 -0
  99. package/dist/components/form/form-reset.js.map +1 -0
  100. package/dist/components/form/form.d.ts +5 -0
  101. package/dist/components/form/form.d.ts.map +1 -1
  102. package/dist/components/form/form.js +17 -3
  103. package/dist/components/form/form.js.map +1 -1
  104. package/dist/components/grid/grid.d.ts +5 -0
  105. package/dist/components/grid/grid.d.ts.map +1 -1
  106. package/dist/components/grid/grid.js +86 -4
  107. package/dist/components/grid/grid.js.map +1 -1
  108. package/dist/components/heat-map/heat-map.d.ts +39 -0
  109. package/dist/components/heat-map/heat-map.d.ts.map +1 -0
  110. package/dist/components/heat-map/heat-map.js +306 -0
  111. package/dist/components/heat-map/heat-map.js.map +1 -0
  112. package/dist/components/hero/hero.d.ts +26 -0
  113. package/dist/components/hero/hero.d.ts.map +1 -0
  114. package/dist/components/hero/hero.js +132 -0
  115. package/dist/components/hero/hero.js.map +1 -0
  116. package/dist/components/icon/icon-paths.d.ts +84 -0
  117. package/dist/components/icon/icon-paths.d.ts.map +1 -1
  118. package/dist/components/icon/icon-paths.js +89 -0
  119. package/dist/components/icon/icon-paths.js.map +1 -1
  120. package/dist/components/icon/icon.d.ts +2 -0
  121. package/dist/components/icon/icon.d.ts.map +1 -1
  122. package/dist/components/icon/icon.js +10 -1
  123. package/dist/components/icon/icon.js.map +1 -1
  124. package/dist/components/image/image.d.ts +31 -0
  125. package/dist/components/image/image.d.ts.map +1 -0
  126. package/dist/components/image/image.js +179 -0
  127. package/dist/components/image/image.js.map +1 -0
  128. package/dist/components/input/input.js +4 -4
  129. package/dist/components/lazy/lazy.d.ts +34 -0
  130. package/dist/components/lazy/lazy.d.ts.map +1 -0
  131. package/dist/components/lazy/lazy.js +104 -0
  132. package/dist/components/lazy/lazy.js.map +1 -0
  133. package/dist/components/line-chart/line-chart.d.ts +37 -0
  134. package/dist/components/line-chart/line-chart.d.ts.map +1 -0
  135. package/dist/components/line-chart/line-chart.js +271 -0
  136. package/dist/components/line-chart/line-chart.js.map +1 -0
  137. package/dist/components/list/list-item.d.ts +45 -0
  138. package/dist/components/list/list-item.d.ts.map +1 -0
  139. package/dist/components/list/list-item.js +263 -0
  140. package/dist/components/list/list-item.js.map +1 -0
  141. package/dist/components/list/list.d.ts +50 -0
  142. package/dist/components/list/list.d.ts.map +1 -0
  143. package/dist/components/list/list.js +161 -0
  144. package/dist/components/list/list.js.map +1 -0
  145. package/dist/components/logo-cloud/logo-cloud.d.ts +19 -0
  146. package/dist/components/logo-cloud/logo-cloud.d.ts.map +1 -0
  147. package/dist/components/logo-cloud/logo-cloud.js +66 -0
  148. package/dist/components/logo-cloud/logo-cloud.js.map +1 -0
  149. package/dist/components/modal/modal.d.ts +12 -0
  150. package/dist/components/modal/modal.d.ts.map +1 -1
  151. package/dist/components/modal/modal.js +40 -11
  152. package/dist/components/modal/modal.js.map +1 -1
  153. package/dist/components/page-layout/page-layout.js +8 -8
  154. package/dist/components/pagination/pagination.d.ts +15 -0
  155. package/dist/components/pagination/pagination.d.ts.map +1 -0
  156. package/dist/components/pagination/pagination.js +126 -0
  157. package/dist/components/pagination/pagination.js.map +1 -0
  158. package/dist/components/pagination/pagination.utils.d.ts +3 -0
  159. package/dist/components/pagination/pagination.utils.d.ts.map +1 -0
  160. package/dist/components/pagination/pagination.utils.js +19 -0
  161. package/dist/components/pagination/pagination.utils.js.map +1 -0
  162. package/dist/components/pie-chart/pie-chart.d.ts +33 -0
  163. package/dist/components/pie-chart/pie-chart.d.ts.map +1 -0
  164. package/dist/components/pie-chart/pie-chart.js +233 -0
  165. package/dist/components/pie-chart/pie-chart.js.map +1 -0
  166. package/dist/components/pin-input/pin-input.js +4 -4
  167. package/dist/components/popover/popover.d.ts.map +1 -1
  168. package/dist/components/popover/popover.js +1 -3
  169. package/dist/components/popover/popover.js.map +1 -1
  170. package/dist/components/post-list/post-card.d.ts +16 -0
  171. package/dist/components/post-list/post-card.d.ts.map +1 -0
  172. package/dist/components/post-list/post-card.js +22 -0
  173. package/dist/components/post-list/post-card.js.map +1 -0
  174. package/dist/components/post-list/post-list.d.ts +17 -0
  175. package/dist/components/post-list/post-list.d.ts.map +1 -0
  176. package/dist/components/post-list/post-list.js +23 -0
  177. package/dist/components/post-list/post-list.js.map +1 -0
  178. package/dist/components/pricing/pricing-tier.d.ts +23 -0
  179. package/dist/components/pricing/pricing-tier.d.ts.map +1 -0
  180. package/dist/components/pricing/pricing-tier.js +144 -0
  181. package/dist/components/pricing/pricing-tier.js.map +1 -0
  182. package/dist/components/pricing/pricing.d.ts +18 -0
  183. package/dist/components/pricing/pricing.d.ts.map +1 -0
  184. package/dist/components/pricing/pricing.js +38 -0
  185. package/dist/components/pricing/pricing.js.map +1 -0
  186. package/dist/components/progress/progress.d.ts +17 -0
  187. package/dist/components/progress/progress.d.ts.map +1 -0
  188. package/dist/components/progress/progress.js +109 -0
  189. package/dist/components/progress/progress.js.map +1 -0
  190. package/dist/components/project-grid/project-card.d.ts +17 -0
  191. package/dist/components/project-grid/project-card.d.ts.map +1 -0
  192. package/dist/components/project-grid/project-card.js +23 -0
  193. package/dist/components/project-grid/project-card.js.map +1 -0
  194. package/dist/components/project-grid/project-grid.d.ts +17 -0
  195. package/dist/components/project-grid/project-grid.d.ts.map +1 -0
  196. package/dist/components/project-grid/project-grid.js +23 -0
  197. package/dist/components/project-grid/project-grid.js.map +1 -0
  198. package/dist/components/radio/radio.js +1 -1
  199. package/dist/components/reveal/reveal.constants.d.ts +10 -0
  200. package/dist/components/reveal/reveal.constants.d.ts.map +1 -0
  201. package/dist/components/reveal/reveal.constants.js +11 -0
  202. package/dist/components/reveal/reveal.constants.js.map +1 -0
  203. package/dist/components/reveal/reveal.d.ts +64 -0
  204. package/dist/components/reveal/reveal.d.ts.map +1 -0
  205. package/dist/components/reveal/reveal.js +352 -0
  206. package/dist/components/reveal/reveal.js.map +1 -0
  207. package/dist/components/scroll-progress/scroll-progress.d.ts +32 -0
  208. package/dist/components/scroll-progress/scroll-progress.d.ts.map +1 -0
  209. package/dist/components/scroll-progress/scroll-progress.js +120 -0
  210. package/dist/components/scroll-progress/scroll-progress.js.map +1 -0
  211. package/dist/components/section/card-row.d.ts +30 -0
  212. package/dist/components/section/card-row.d.ts.map +1 -0
  213. package/dist/components/section/card-row.js +174 -0
  214. package/dist/components/section/card-row.js.map +1 -0
  215. package/dist/components/section/card.d.ts +27 -0
  216. package/dist/components/section/card.d.ts.map +1 -0
  217. package/dist/components/section/card.js +205 -0
  218. package/dist/components/section/card.js.map +1 -0
  219. package/dist/components/section/row-item.d.ts +22 -0
  220. package/dist/components/section/row-item.d.ts.map +1 -0
  221. package/dist/components/section/row-item.js +53 -0
  222. package/dist/components/section/row-item.js.map +1 -0
  223. package/dist/components/section/section.d.ts +70 -0
  224. package/dist/components/section/section.d.ts.map +1 -0
  225. package/dist/components/section/section.js +240 -0
  226. package/dist/components/section/section.js.map +1 -0
  227. package/dist/components/select/select.js +3 -3
  228. package/dist/components/series-nav/series-nav.d.ts +29 -0
  229. package/dist/components/series-nav/series-nav.d.ts.map +1 -0
  230. package/dist/components/series-nav/series-nav.js +178 -0
  231. package/dist/components/series-nav/series-nav.js.map +1 -0
  232. package/dist/components/site-header/site-header.d.ts +51 -0
  233. package/dist/components/site-header/site-header.d.ts.map +1 -0
  234. package/dist/components/site-header/site-header.js +296 -0
  235. package/dist/components/site-header/site-header.js.map +1 -0
  236. package/dist/components/skeleton/skeleton.js +7 -7
  237. package/dist/components/sparkline/sparkline.d.ts +19 -0
  238. package/dist/components/sparkline/sparkline.d.ts.map +1 -0
  239. package/dist/components/sparkline/sparkline.js +99 -0
  240. package/dist/components/sparkline/sparkline.js.map +1 -0
  241. package/dist/components/spinner/spinner.d.ts +13 -0
  242. package/dist/components/spinner/spinner.d.ts.map +1 -0
  243. package/dist/components/spinner/spinner.js +65 -0
  244. package/dist/components/spinner/spinner.js.map +1 -0
  245. package/dist/components/split/split.d.ts +23 -0
  246. package/dist/components/split/split.d.ts.map +1 -0
  247. package/dist/components/split/split.js +104 -0
  248. package/dist/components/split/split.js.map +1 -0
  249. package/dist/components/stack/stack.d.ts +21 -0
  250. package/dist/components/stack/stack.d.ts.map +1 -0
  251. package/dist/components/stack/stack.js +102 -0
  252. package/dist/components/stack/stack.js.map +1 -0
  253. package/dist/components/stat-card/stat-card.d.ts +35 -0
  254. package/dist/components/stat-card/stat-card.d.ts.map +1 -0
  255. package/dist/components/stat-card/stat-card.js +199 -0
  256. package/dist/components/stat-card/stat-card.js.map +1 -0
  257. package/dist/components/stats/stat.d.ts +16 -0
  258. package/dist/components/stats/stat.d.ts.map +1 -0
  259. package/dist/components/stats/stat.js +51 -0
  260. package/dist/components/stats/stat.js.map +1 -0
  261. package/dist/components/stats/stats.d.ts +19 -0
  262. package/dist/components/stats/stats.d.ts.map +1 -0
  263. package/dist/components/stats/stats.js +45 -0
  264. package/dist/components/stats/stats.js.map +1 -0
  265. package/dist/components/switch/switch.js +2 -2
  266. package/dist/components/table/data-table.d.ts +115 -27
  267. package/dist/components/table/data-table.d.ts.map +1 -1
  268. package/dist/components/table/data-table.js +1012 -411
  269. package/dist/components/table/data-table.js.map +1 -1
  270. package/dist/components/table/data-table.utils.d.ts +81 -0
  271. package/dist/components/table/data-table.utils.d.ts.map +1 -0
  272. package/dist/components/table/data-table.utils.js +208 -0
  273. package/dist/components/table/data-table.utils.js.map +1 -0
  274. package/dist/components/table/table.d.ts +28 -0
  275. package/dist/components/table/table.d.ts.map +1 -1
  276. package/dist/components/table/table.js +161 -33
  277. package/dist/components/table/table.js.map +1 -1
  278. package/dist/components/team/person.d.ts +19 -0
  279. package/dist/components/team/person.d.ts.map +1 -0
  280. package/dist/components/team/person.js +123 -0
  281. package/dist/components/team/person.js.map +1 -0
  282. package/dist/components/team/team.d.ts +18 -0
  283. package/dist/components/team/team.d.ts.map +1 -0
  284. package/dist/components/team/team.js +36 -0
  285. package/dist/components/team/team.js.map +1 -0
  286. package/dist/components/testimonials/testimonial.d.ts +18 -0
  287. package/dist/components/testimonials/testimonial.d.ts.map +1 -0
  288. package/dist/components/testimonials/testimonial.js +115 -0
  289. package/dist/components/testimonials/testimonial.js.map +1 -0
  290. package/dist/components/testimonials/testimonials.d.ts +18 -0
  291. package/dist/components/testimonials/testimonials.d.ts.map +1 -0
  292. package/dist/components/testimonials/testimonials.js +36 -0
  293. package/dist/components/testimonials/testimonials.js.map +1 -0
  294. package/dist/components/textarea/textarea.js +3 -3
  295. package/dist/components/theme-toggle/theme-toggle.js +1 -1
  296. package/dist/components/time-picker/time-picker.d.ts.map +1 -1
  297. package/dist/components/time-picker/time-picker.js +13 -3
  298. package/dist/components/time-picker/time-picker.js.map +1 -1
  299. package/dist/components/timeline/timeline-item.d.ts +18 -0
  300. package/dist/components/timeline/timeline-item.d.ts.map +1 -0
  301. package/dist/components/timeline/timeline-item.js +102 -0
  302. package/dist/components/timeline/timeline-item.js.map +1 -0
  303. package/dist/components/timeline/timeline.d.ts +18 -0
  304. package/dist/components/timeline/timeline.d.ts.map +1 -0
  305. package/dist/components/timeline/timeline.js +30 -0
  306. package/dist/components/timeline/timeline.js.map +1 -0
  307. package/dist/components/toast/toast.d.ts +33 -0
  308. package/dist/components/toast/toast.d.ts.map +1 -0
  309. package/dist/components/toast/toast.js +147 -0
  310. package/dist/components/toast/toast.js.map +1 -0
  311. package/dist/components/toggle-group/toggle-button.d.ts +2 -0
  312. package/dist/components/toggle-group/toggle-button.d.ts.map +1 -1
  313. package/dist/components/toggle-group/toggle-button.js +12 -5
  314. package/dist/components/toggle-group/toggle-button.js.map +1 -1
  315. package/dist/components/toggle-group/toggle-group.d.ts +6 -0
  316. package/dist/components/toggle-group/toggle-group.d.ts.map +1 -1
  317. package/dist/components/toggle-group/toggle-group.js +141 -21
  318. package/dist/components/toggle-group/toggle-group.js.map +1 -1
  319. package/dist/components/tooltip/tooltip.js +21 -21
  320. package/dist/components/vertical-nav/vertical-nav-group.js +3 -3
  321. package/dist/components/vertical-nav/vertical-nav-item.js +4 -4
  322. package/dist/components/video-embed/video-embed.d.ts +37 -0
  323. package/dist/components/video-embed/video-embed.d.ts.map +1 -0
  324. package/dist/components/video-embed/video-embed.js +183 -0
  325. package/dist/components/video-embed/video-embed.js.map +1 -0
  326. package/dist/index.d.ts +107 -0
  327. package/dist/index.d.ts.map +1 -0
  328. package/dist/index.js +104 -0
  329. package/dist/index.js.map +1 -0
  330. package/dist/styles/index.css +205 -1
  331. package/dist/styles/reset.d.ts.map +1 -1
  332. package/dist/styles/reset.js +5 -0
  333. package/dist/styles/reset.js.map +1 -1
  334. package/package.json +214 -7
  335. package/src/components/accordion/accordion.constants.ts +5 -0
  336. package/src/components/accordion/accordion.ts +209 -0
  337. package/src/components/alert/alert.constants.ts +3 -0
  338. package/src/components/alert/alert.ts +284 -17
  339. package/src/components/avatar/avatar.ts +84 -0
  340. package/src/components/back-to-top/back-to-top.ts +140 -0
  341. package/src/components/bar-chart/bar-chart.ts +295 -0
  342. package/src/components/breadcrumb/breadcrumb.ts +2 -2
  343. package/src/components/button/button.ts +9 -8
  344. package/src/components/button-group/button-group.ts +4 -4
  345. package/src/components/calendar/calendar.ts +26 -9
  346. package/src/components/chart/chart-base.ts +275 -0
  347. package/src/components/chart/chart.utils.ts +140 -0
  348. package/src/components/code-block/code-block.ts +35 -24
  349. package/src/components/consent/consent.ts +312 -0
  350. package/src/components/consent/consent.utils.ts +110 -0
  351. package/src/components/contact/contact.ts +83 -0
  352. package/src/components/container/container.ts +60 -0
  353. package/src/components/content-card/content-card.ts +4 -4
  354. package/src/components/context-menu/context-menu.ts +426 -0
  355. package/src/components/cron-builder/cron-builder.ts +102 -22
  356. package/src/components/cta/cta.ts +64 -0
  357. package/src/components/drawer/drawer.ts +6 -6
  358. package/src/components/faq/faq-item.ts +110 -0
  359. package/src/components/faq/faq.ts +40 -0
  360. package/src/components/feature-grid/feature-grid.ts +52 -0
  361. package/src/components/feature-grid/feature.ts +84 -0
  362. package/src/components/field/field.ts +2 -2
  363. package/src/components/footer/footer.ts +4 -4
  364. package/src/components/form/form-reset.ts +45 -0
  365. package/src/components/form/form.ts +17 -3
  366. package/src/components/grid/grid.ts +73 -4
  367. package/src/components/heat-map/heat-map.ts +292 -0
  368. package/src/components/hero/hero.ts +132 -0
  369. package/src/components/icon/icon-paths.ts +92 -1
  370. package/src/components/icon/icon.ts +8 -1
  371. package/src/components/image/image.ts +165 -0
  372. package/src/components/input/input.ts +4 -4
  373. package/src/components/lazy/lazy.ts +94 -0
  374. package/src/components/line-chart/line-chart.ts +271 -0
  375. package/src/components/list/list-item.ts +225 -0
  376. package/src/components/list/list.ts +157 -0
  377. package/src/components/logo-cloud/logo-cloud.ts +65 -0
  378. package/src/components/modal/modal.ts +37 -11
  379. package/src/components/page-layout/page-layout.ts +8 -8
  380. package/src/components/pagination/pagination.ts +120 -0
  381. package/src/components/pagination/pagination.utils.ts +14 -0
  382. package/src/components/pie-chart/pie-chart.ts +230 -0
  383. package/src/components/pin-input/pin-input.ts +4 -4
  384. package/src/components/popover/popover.ts +1 -3
  385. package/src/components/post-list/post-card.ts +18 -0
  386. package/src/components/post-list/post-list.ts +19 -0
  387. package/src/components/pricing/pricing-tier.ts +132 -0
  388. package/src/components/pricing/pricing.ts +39 -0
  389. package/src/components/progress/progress.ts +95 -0
  390. package/src/components/project-grid/project-card.ts +19 -0
  391. package/src/components/project-grid/project-grid.ts +19 -0
  392. package/src/components/radio/radio.ts +1 -1
  393. package/src/components/reveal/reveal.constants.ts +20 -0
  394. package/src/components/reveal/reveal.ts +344 -0
  395. package/src/components/scroll-progress/scroll-progress.ts +119 -0
  396. package/src/components/section/card-row.ts +152 -0
  397. package/src/components/section/card.ts +197 -0
  398. package/src/components/section/row-item.ts +38 -0
  399. package/src/components/section/section.ts +232 -0
  400. package/src/components/select/select.ts +3 -3
  401. package/src/components/series-nav/series-nav.ts +164 -0
  402. package/src/components/site-header/site-header.ts +276 -0
  403. package/src/components/skeleton/skeleton.ts +7 -7
  404. package/src/components/sparkline/sparkline.ts +83 -0
  405. package/src/components/spinner/spinner.ts +55 -0
  406. package/src/components/split/split.ts +106 -0
  407. package/src/components/stack/stack.ts +88 -0
  408. package/src/components/stat-card/stat-card.ts +179 -0
  409. package/src/components/stats/stat.ts +49 -0
  410. package/src/components/stats/stats.ts +47 -0
  411. package/src/components/switch/switch.ts +2 -2
  412. package/src/components/table/data-table.ts +1015 -425
  413. package/src/components/table/data-table.utils.ts +276 -0
  414. package/src/components/table/table.ts +168 -38
  415. package/src/components/team/person.ts +113 -0
  416. package/src/components/team/team.ts +37 -0
  417. package/src/components/testimonials/testimonial.ts +108 -0
  418. package/src/components/testimonials/testimonials.ts +37 -0
  419. package/src/components/textarea/textarea.ts +3 -3
  420. package/src/components/theme-toggle/theme-toggle.ts +1 -1
  421. package/src/components/time-picker/time-picker.ts +17 -3
  422. package/src/components/timeline/timeline-item.ts +100 -0
  423. package/src/components/timeline/timeline.ts +31 -0
  424. package/src/components/toast/toast.ts +153 -0
  425. package/src/components/toggle-group/toggle-button.ts +9 -5
  426. package/src/components/toggle-group/toggle-group.ts +158 -42
  427. package/src/components/tooltip/tooltip.ts +21 -21
  428. package/src/components/vertical-nav/vertical-nav-group.ts +3 -3
  429. package/src/components/vertical-nav/vertical-nav-item.ts +4 -4
  430. package/src/components/video-embed/video-embed.ts +162 -0
  431. package/src/index.ts +108 -0
  432. package/src/styles/globals.css +63 -0
  433. package/src/styles/index.css +3 -1
  434. package/src/styles/prose.css +154 -0
  435. package/src/styles/reset.ts +5 -0
  436. package/src/styles/theme.css +53 -0
  437. package/src/styles/typography.css +1 -0
@@ -0,0 +1,64 @@
1
+ import {html, css} from "lit";
2
+ import {customElement, state} from "lit/decorators.js";
3
+ import {StSection} from "../section/section.js";
4
+
5
+ /**
6
+ * A closing call to action: one clear message and the buttons that act on it. Highlighted in the
7
+ * accent colour by default; set `tone` to change that.
8
+ *
9
+ * Slots: `eyebrow`, `title`, `lead`, `actions` (buttons) and the default slot for a short note
10
+ * under the buttons.
11
+ */
12
+ @customElement("st-cta")
13
+ export class StCta extends StSection {
14
+ @state() private _hasActions = false;
15
+
16
+ constructor() {
17
+ super();
18
+ this.tone = "accent";
19
+ this.width = "md";
20
+ }
21
+
22
+ static styles = [
23
+ ...StSection.styles,
24
+ css`
25
+ .header {
26
+ margin-bottom: var(--st-spacing-lg);
27
+ }
28
+
29
+ .actions {
30
+ display: flex;
31
+ flex-wrap: wrap;
32
+ gap: var(--st-spacing-md);
33
+ justify-content: center;
34
+ }
35
+
36
+ .note {
37
+ margin-top: var(--st-spacing-md);
38
+ text-align: center;
39
+ font-size: var(--st-font-size-sm);
40
+ }
41
+ `,
42
+ ];
43
+
44
+ render() {
45
+ return this.frame(
46
+ html`
47
+ <div class="actions" ?hidden=${!this._hasActions}>
48
+ <slot
49
+ name="actions"
50
+ @slotchange=${(e: Event) =>
51
+ (this._hasActions = (e.target as HTMLSlotElement).assignedNodes().length > 0)}
52
+ ></slot>
53
+ </div>
54
+ <div class="note"><slot></slot></div>
55
+ `,
56
+ );
57
+ }
58
+ }
59
+
60
+ declare global {
61
+ interface HTMLElementTagNameMap {
62
+ "st-cta": StCta;
63
+ }
64
+ }
@@ -37,7 +37,7 @@ export class StDrawer extends LitElement {
37
37
  left: 0;
38
38
  width: 100vw;
39
39
  height: 100vh;
40
- background-color: rgba(0, 0, 0, 0.5);
40
+ background-color: var(--st-color-overlay);
41
41
  backdrop-filter: blur(2px);
42
42
  z-index: 1000;
43
43
  display: flex;
@@ -62,7 +62,7 @@ export class StDrawer extends LitElement {
62
62
  bottom: 0;
63
63
  width: var(--st-drawer-width, 320px);
64
64
  max-width: 90vw;
65
- background-color: var(--st-color-surface, #ffffff);
65
+ background-color: var(--st-color-surface);
66
66
  display: flex;
67
67
  flex-direction: column;
68
68
  z-index: 1001;
@@ -79,7 +79,7 @@ export class StDrawer extends LitElement {
79
79
 
80
80
  :host([open]) .panel {
81
81
  visibility: visible;
82
- box-shadow: 0 4px 24px rgba(0, 0, 0, 0.15);
82
+ box-shadow: var(--st-shadow-drawer);
83
83
  }
84
84
 
85
85
  /* Slide from Left */
@@ -105,7 +105,7 @@ export class StDrawer extends LitElement {
105
105
  align-items: center;
106
106
  justify-content: space-between;
107
107
  padding: var(--st-spacing-md) var(--st-spacing-lg);
108
- border-bottom: 1px solid var(--st-color-border, #e2e8f0);
108
+ border-bottom: 1px solid var(--st-color-border);
109
109
  }
110
110
 
111
111
  .title {
@@ -125,12 +125,12 @@ export class StDrawer extends LitElement {
125
125
  display: flex;
126
126
  align-items: center;
127
127
  justify-content: center;
128
- border-radius: var(--st-radius-sm, 0.375rem);
128
+ border-radius: var(--st-radius-sm);
129
129
  }
130
130
 
131
131
  .close-btn:hover {
132
132
  color: var(--st-color-text);
133
- background-color: var(--st-color-surface-muted, #f1f5f9);
133
+ background-color: var(--st-color-surface-muted);
134
134
  }
135
135
 
136
136
  .close-btn svg {
@@ -0,0 +1,110 @@
1
+ import {html, css} from "lit";
2
+ import {customElement, property} from "lit/decorators.js";
3
+ import {resetStyles} from "../../styles/reset.js";
4
+ import {StRowItem} from "../section/row-item.js";
5
+ import "../icon/icon.js";
6
+
7
+ /**
8
+ * One question and answer inside `st-faq`. It is a native disclosure (`details`), so it works
9
+ * without JavaScript, is announced correctly by screen readers, and the answer stays in the page
10
+ * for search engines even while closed.
11
+ *
12
+ * Slots: `question` (a real heading such as `<h3>` is best) and the default slot for the answer.
13
+ */
14
+ @customElement("st-faq-item")
15
+ export class StFaqItem extends StRowItem {
16
+ /** Whether the answer is showing. */
17
+ @property({type: Boolean, reflect: true}) open = false;
18
+
19
+ static styles = [
20
+ resetStyles,
21
+ css`
22
+ :host {
23
+ display: block;
24
+ }
25
+
26
+ details {
27
+ border: 1px solid var(--st-color-border);
28
+ border-radius: var(--st-radius-md);
29
+ background: var(--st-row-card-bg, var(--st-color-surface));
30
+ }
31
+
32
+ summary {
33
+ display: flex;
34
+ align-items: center;
35
+ justify-content: space-between;
36
+ gap: var(--st-spacing-md);
37
+ padding: var(--st-spacing-md) var(--st-spacing-lg);
38
+ border-radius: var(--st-radius-md);
39
+ cursor: pointer;
40
+ list-style: none;
41
+ }
42
+
43
+ summary::-webkit-details-marker {
44
+ display: none;
45
+ }
46
+
47
+ summary:focus-visible {
48
+ outline: 2px solid var(--st-color-primary);
49
+ outline-offset: 2px;
50
+ }
51
+
52
+ summary st-icon {
53
+ flex-shrink: 0;
54
+ transition: transform 0.2s ease;
55
+ }
56
+
57
+ details[open] summary st-icon {
58
+ transform: rotate(180deg);
59
+ }
60
+
61
+ ::slotted([slot="question"]) {
62
+ margin: 0 !important;
63
+ font-size: var(--st-font-size-lg) !important;
64
+ }
65
+
66
+ /* Closed details already hide this natively; saying so keeps every browser consistent. */
67
+ details:not([open]) .answer {
68
+ display: none;
69
+ }
70
+
71
+ .answer {
72
+ padding: 0 var(--st-spacing-lg) var(--st-spacing-lg);
73
+ color: var(--st-color-text-muted);
74
+ }
75
+
76
+ .answer ::slotted(*) {
77
+ margin: 0 0 var(--st-spacing-sm);
78
+ }
79
+
80
+ @media (prefers-reduced-motion: reduce) {
81
+ summary st-icon {
82
+ transition: none;
83
+ }
84
+ }
85
+ `,
86
+ ];
87
+
88
+ private _onToggle = (e: Event) => {
89
+ const open = (e.target as HTMLDetailsElement).open;
90
+ if (open !== this.open) this.open = open;
91
+ };
92
+
93
+ render() {
94
+ return this.frame(html`
95
+ <details ?open=${this.open} @toggle=${this._onToggle}>
96
+ <summary>
97
+ <slot name="question"></slot>
98
+ <st-icon name="chevron-down" aria-hidden="true"></st-icon>
99
+ </summary>
100
+ <div class="answer"><slot></slot></div>
101
+ </details>
102
+ `);
103
+ }
104
+ }
105
+
106
+ declare global {
107
+ interface HTMLElementTagNameMap {
108
+ "st-faq-item": StFaqItem;
109
+ }
110
+ }
@@ -0,0 +1,40 @@
1
+ import {html, css} from "lit";
2
+ import {customElement} from "lit/decorators.js";
3
+ import {StSection} from "../section/section.js";
4
+ import "./faq-item.js";
5
+
6
+ /**
7
+ * Frequently asked questions: a header and a stack of `st-faq-item` disclosures.
8
+ *
9
+ * Slots: `eyebrow`, `title`, `lead` and the default slot for the `st-faq-item` items.
10
+ */
11
+ @customElement("st-faq")
12
+ export class StFaq extends StSection {
13
+ constructor() {
14
+ super();
15
+ this.width = "md";
16
+ }
17
+
18
+ static styles = [
19
+ ...StSection.styles,
20
+ css`
21
+ .items {
22
+ display: grid;
23
+ gap: var(--st-spacing-md);
24
+ }
25
+ `,
26
+ ];
27
+
28
+ render() {
29
+ return this.frame(
30
+ html`<div class="items"><slot @slotchange=${this._onItemsChange}></slot></div>`,
31
+ {animated: false},
32
+ );
33
+ }
34
+ }
35
+
36
+ declare global {
37
+ interface HTMLElementTagNameMap {
38
+ "st-faq": StFaq;
39
+ }
40
+ }
@@ -0,0 +1,52 @@
1
+ import {html, css, PropertyValues} from "lit";
2
+ import {customElement, property} from "lit/decorators.js";
3
+ import {StSection} from "../section/section.js";
4
+ import "./feature.js";
5
+
6
+ /**
7
+ * A row of features: a header and a grid of `st-feature` cards. The grid fits as many columns as
8
+ * the screen allows, up to `columns`, and each card animates in after the one before it.
9
+ *
10
+ * Slots: `eyebrow`, `title`, `lead` and the default slot for the `st-feature` items.
11
+ */
12
+ @customElement("st-feature-grid")
13
+ export class StFeatureGrid extends StSection {
14
+ /** The most columns to use on wide screens (fewer fit on narrow ones). */
15
+ @property({type: Number}) columns = 3;
16
+
17
+ static styles = [
18
+ ...StSection.styles,
19
+ css`
20
+ .items {
21
+ --_columns: 3;
22
+ --_gap: var(--st-spacing-lg);
23
+ display: grid;
24
+ gap: var(--_gap);
25
+ grid-template-columns: repeat(
26
+ auto-fit,
27
+ minmax(max(14rem, calc((100% - (var(--_columns) - 1) * var(--_gap)) / var(--_columns))), 1fr)
28
+ );
29
+ }
30
+ `,
31
+ ];
32
+
33
+ protected updated(changed: PropertyValues<this>) {
34
+ super.updated(changed);
35
+ this.renderRoot
36
+ .querySelector<HTMLElement>(".items")
37
+ ?.style.setProperty("--_columns", String(Math.max(1, this.columns)));
38
+ }
39
+
40
+ render() {
41
+ return this.frame(
42
+ html`<div class="items"><slot @slotchange=${this._onItemsChange}></slot></div>`,
43
+ {animated: false},
44
+ );
45
+ }
46
+ }
47
+
48
+ declare global {
49
+ interface HTMLElementTagNameMap {
50
+ "st-feature-grid": StFeatureGrid;
51
+ }
52
+ }
@@ -0,0 +1,84 @@
1
+ import {html, css} from "lit";
2
+ import {customElement, state} from "lit/decorators.js";
3
+ import {resetStyles} from "../../styles/reset.js";
4
+ import {StRowItem} from "../section/row-item.js";
5
+
6
+ /**
7
+ * One feature inside `st-feature-grid`: an icon, a title and a short description.
8
+ *
9
+ * Slots: `icon` (an `st-icon` or an inline svg), `title` (a real heading such as `<h3>`) and the
10
+ * default slot for the description.
11
+ */
12
+ @customElement("st-feature")
13
+ export class StFeature extends StRowItem {
14
+ @state() private _hasIcon = false;
15
+
16
+ static styles = [
17
+ resetStyles,
18
+ css`
19
+ :host {
20
+ display: block;
21
+ }
22
+
23
+ .card {
24
+ display: grid;
25
+ align-content: start;
26
+ gap: var(--st-spacing-sm);
27
+ height: 100%;
28
+ padding: var(--st-spacing-lg);
29
+ border: 1px solid var(--st-color-border);
30
+ border-radius: var(--st-radius-md);
31
+ background: var(--st-row-card-bg, var(--st-color-surface));
32
+ }
33
+
34
+ .icon {
35
+ display: inline-flex;
36
+ width: 2.75rem;
37
+ height: 2.75rem;
38
+ align-items: center;
39
+ justify-content: center;
40
+ border-radius: var(--st-radius-md);
41
+ background: var(--st-color-primary-bg);
42
+ color: var(--st-color-primary-text);
43
+ }
44
+
45
+ .icon[hidden] {
46
+ display: none;
47
+ }
48
+
49
+ ::slotted([slot="title"]) {
50
+ margin: 0 !important;
51
+ font-size: var(--st-font-size-xl) !important;
52
+ }
53
+
54
+ .body {
55
+ color: var(--st-color-text-muted);
56
+ }
57
+
58
+ .body ::slotted(*) {
59
+ margin: 0;
60
+ }
61
+ `,
62
+ ];
63
+
64
+ render() {
65
+ return this.frame(html`
66
+ <div class="card">
67
+ <div class="icon" ?hidden=${!this._hasIcon}>
68
+ <slot
69
+ name="icon"
70
+ @slotchange=${(e: Event) => (this._hasIcon = (e.target as HTMLSlotElement).assignedNodes().length > 0)}
71
+ ></slot>
72
+ </div>
73
+ <slot name="title"></slot>
74
+ <div class="body"><slot></slot></div>
75
+ </div>
76
+ `);
77
+ }
78
+ }
79
+
80
+ declare global {
81
+ interface HTMLElementTagNameMap {
82
+ "st-feature": StFeature;
83
+ }
84
+ }
@@ -10,9 +10,9 @@ export class StField extends LitElement {
10
10
  :host {
11
11
  display: flex;
12
12
  flex-direction: column;
13
- gap: var(--st-spacing-xs, 0.25rem);
13
+ gap: var(--st-spacing-xs);
14
14
  width: 100%;
15
- margin-bottom: var(--st-spacing-md, 1rem);
15
+ margin-bottom: var(--st-spacing-md);
16
16
  }
17
17
  `,
18
18
  ];
@@ -13,7 +13,7 @@ export class StFooter extends LitElement {
13
13
  display: block;
14
14
  border-top: 1px solid var(--st-color-border);
15
15
  background-color: var(--st-color-surface);
16
- padding: var(--st-spacing-lg, 2rem) 0;
16
+ padding: var(--st-spacing-lg) 0;
17
17
  margin-top: auto;
18
18
  }
19
19
 
@@ -22,17 +22,17 @@ export class StFooter extends LitElement {
22
22
  display: flex;
23
23
  flex-direction: column;
24
24
  align-items: center;
25
- gap: var(--st-spacing-md, 1rem);
25
+ gap: var(--st-spacing-md);
26
26
  max-width: 1200px;
27
27
  margin: 0 auto;
28
- padding: 0 var(--st-spacing-md, 1rem);
28
+ padding: 0 var(--st-spacing-md);
29
29
  color: var(--st-color-text-muted);
30
30
  font-size: 0.875rem;
31
31
  }
32
32
 
33
33
  .links {
34
34
  display: flex;
35
- gap: var(--st-spacing-md, 1rem);
35
+ gap: var(--st-spacing-md);
36
36
  flex-wrap: wrap;
37
37
  justify-content: center;
38
38
  }
@@ -0,0 +1,45 @@
1
+ type Resettable = HTMLElement & {
2
+ formResetCallback?: () => void;
3
+ reset?: () => void;
4
+ invalid?: boolean;
5
+ error?: unknown;
6
+ };
7
+
8
+ /** Clears a field's error state: resetting its value should not leave it looking wrong. */
9
+ function clearValidation(el: Resettable) {
10
+ if (typeof el.invalid === "boolean") el.invalid = false;
11
+ if (typeof el.error === "string") el.error = "";
12
+ }
13
+
14
+ /** Puts a plain HTML control back to the value written in the markup. */
15
+ function resetNative(el: Element) {
16
+ if (el instanceof HTMLInputElement) {
17
+ if (el.type === "checkbox" || el.type === "radio") el.checked = el.defaultChecked;
18
+ else if (el.type === "file") el.value = "";
19
+ else el.value = el.defaultValue;
20
+ } else if (el instanceof HTMLTextAreaElement) {
21
+ el.value = el.defaultValue;
22
+ } else if (el instanceof HTMLSelectElement) {
23
+ Array.from(el.options).forEach((option) => (option.selected = option.defaultSelected));
24
+ }
25
+ }
26
+
27
+ /**
28
+ * Returns every form and field inside `root` to its starting state: values go back to what the
29
+ * markup says, errors are cleared, and `st-form`s return to their first step. Works on Sondor
30
+ * fields, plain HTML controls and forms, so a modal or panel can be wiped before it is used again.
31
+ */
32
+ export function resetFormState(root: ParentNode): void {
33
+ for (const el of Array.from(root.querySelectorAll<Resettable>("*"))) {
34
+ if (el instanceof HTMLFormElement) {
35
+ el.reset();
36
+ } else if (el.localName === "st-form") {
37
+ el.reset?.();
38
+ } else if (typeof el.formResetCallback === "function") {
39
+ el.formResetCallback();
40
+ clearValidation(el);
41
+ } else {
42
+ resetNative(el);
43
+ }
44
+ }
45
+ }
@@ -1,7 +1,8 @@
1
- import {LitElement, html, css, PropertyValues} from "lit";
1
+ import {LitElement, html, css, PropertyValues, isServer} from "lit";
2
2
  import {customElement, property, state, query} from "lit/decorators.js";
3
3
  import {resetStyles} from "../../styles/reset.js";
4
4
  import type {StFormStep} from "./form-step.js";
5
+ import {resetFormState} from "./form-reset.js";
5
6
 
6
7
  export type FormLayout = "vertical" | "horizontal" | "inline";
7
8
 
@@ -20,6 +21,7 @@ export class StForm extends LitElement {
20
21
  private _modalSubmitBtn: HTMLElement | null = null;
21
22
 
22
23
  private get _steps(): StFormStep[] {
24
+ if (isServer) return []; // light DOM is not queryable while server rendering
23
25
  return Array.from(this.querySelectorAll("st-form-step"));
24
26
  }
25
27
 
@@ -137,7 +139,7 @@ export class StForm extends LitElement {
137
139
  .loading-overlay {
138
140
  position: absolute;
139
141
  inset: 0;
140
- background: rgba(var(--st-color-bg-rgb, 255, 255, 255), 0.7);
142
+ background: rgb(var(--st-color-bg-rgb) / 0.7);
141
143
  backdrop-filter: blur(2px);
142
144
  display: flex;
143
145
  align-items: center;
@@ -262,6 +264,18 @@ export class StForm extends LitElement {
262
264
  }
263
265
  }
264
266
 
267
+ /**
268
+ * Clears everything entered: fields return to their starting values, errors are cleared, the
269
+ * form goes back to its first step and stops loading.
270
+ */
271
+ reset() {
272
+ resetFormState(this);
273
+ this.error = "";
274
+ this.loading = false;
275
+ this._currentStepIndex = 0;
276
+ this._updateStepVisibility();
277
+ }
278
+
265
279
  private _handleSlotChange() {
266
280
  this._updateStepVisibility();
267
281
  this._updateModalFooter();
@@ -426,7 +440,7 @@ export class StForm extends LitElement {
426
440
  render() {
427
441
  const steps = this._steps;
428
442
  const hasSteps = steps.length > 0;
429
- const isInModal = !!this.closest("st-modal");
443
+ const isInModal = !isServer && !!this.closest("st-modal");
430
444
 
431
445
  return html`
432
446
  <div class="${hasSteps ? "has-steps" : ""}" aria-busy=${this.loading}>
@@ -4,17 +4,62 @@ import { resetStyles } from '../../styles/reset.js';
4
4
 
5
5
  @customElement('st-grid')
6
6
  export class StGrid extends LitElement {
7
- // Centralized gap control
8
7
  @property({ type: String }) gap = 'var(--st-spacing-md)';
9
8
 
9
+ // Responsive width properties for container control
10
+ @property({ type: String, attribute: 'xs-width' }) xsWidth = '100%';
11
+ @property({ type: String, attribute: 'sm-width' }) smWidth?: string;
12
+ @property({ type: String, attribute: 'md-width' }) mdWidth?: string;
13
+ @property({ type: String, attribute: 'lg-width' }) lgWidth?: string;
14
+ @property({ type: String, attribute: 'xl-width' }) xlWidth?: string;
15
+
10
16
  static styles = [
11
17
  resetStyles,
12
18
  css`
13
19
  :host {
14
20
  display: grid;
15
- grid-template-columns: 1fr; /* Stacks the rows vertically */
21
+ grid-template-columns: 1fr;
16
22
  gap: var(--grid-gap, var(--st-spacing-md));
17
- width: 100%;
23
+
24
+ /* Applies the responsive width and automatically centers it */
25
+ width: var(--_width, 100%);
26
+ margin: 0 auto;
27
+ }
28
+
29
+ /* Mobile First (xs) */
30
+ :host {
31
+ --_width: var(--grid-w-xs, 100%);
32
+ }
33
+
34
+ /* Small (sm: >= 640px) */
35
+ @media (min-width: 640px) {
36
+ :host {
37
+ --_width: var(--grid-w-sm, var(--grid-w-xs, 100%));
38
+ }
39
+ }
40
+
41
+ /* Medium (md: >= 768px) */
42
+ @media (min-width: 768px) {
43
+ :host {
44
+ --_width: var(--grid-w-md, var(--grid-w-sm, var(--grid-w-xs, 100%)));
45
+ }
46
+ }
47
+
48
+ /* Large (lg: >= 1024px) */
49
+ @media (min-width: 1024px) {
50
+ :host {
51
+ --_width: var(--grid-w-lg, var(--grid-w-md, var(--grid-w-sm, var(--grid-w-xs, 100%))));
52
+ }
53
+ }
54
+
55
+ /* Extra Large (xl: >= 1280px) */
56
+ @media (min-width: 1280px) {
57
+ :host {
58
+ --_width: var(
59
+ --grid-w-xl,
60
+ var(--grid-w-lg, var(--grid-w-md, var(--grid-w-sm, var(--grid-w-xs, 100%))))
61
+ );
62
+ }
18
63
  }
19
64
  `
20
65
  ];
@@ -22,10 +67,34 @@ export class StGrid extends LitElement {
22
67
  updated(changedProperties: PropertyValues<this>) {
23
68
  super.updated(changedProperties);
24
69
 
25
- // Performance optimization: Only touch the DOM if the gap property actually changed
26
70
  if (changedProperties.has('gap')) {
27
71
  this.style.setProperty('--grid-gap', this.gap);
28
72
  }
73
+
74
+ // Evaluate and apply responsive widths
75
+ if (changedProperties.has('xsWidth')) {
76
+ this.style.setProperty("--grid-w-xs", this.xsWidth);
77
+ }
78
+
79
+ if (changedProperties.has('smWidth')) {
80
+ if (this.smWidth) this.style.setProperty("--grid-w-sm", this.smWidth);
81
+ else this.style.removeProperty("--grid-w-sm");
82
+ }
83
+
84
+ if (changedProperties.has('mdWidth')) {
85
+ if (this.mdWidth) this.style.setProperty("--grid-w-md", this.mdWidth);
86
+ else this.style.removeProperty("--grid-w-md");
87
+ }
88
+
89
+ if (changedProperties.has('lgWidth')) {
90
+ if (this.lgWidth) this.style.setProperty("--grid-w-lg", this.lgWidth);
91
+ else this.style.removeProperty("--grid-w-lg");
92
+ }
93
+
94
+ if (changedProperties.has('xlWidth')) {
95
+ if (this.xlWidth) this.style.setProperty("--grid-w-xl", this.xlWidth);
96
+ else this.style.removeProperty("--grid-w-xl");
97
+ }
29
98
  }
30
99
 
31
100
  render() {