@opensite/ui 0.5.3 → 0.5.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 (585) hide show
  1. package/dist/about-company-profile.cjs +11 -11
  2. package/dist/about-company-profile.js +12 -11
  3. package/dist/about-developer-profile.cjs +11 -11
  4. package/dist/about-developer-profile.js +12 -11
  5. package/dist/about-developer-story.cjs +11 -11
  6. package/dist/about-developer-story.js +12 -11
  7. package/dist/about-interactive-tabs.cjs +10 -5
  8. package/dist/about-interactive-tabs.js +12 -6
  9. package/dist/about-location-info-hero.cjs +14 -14
  10. package/dist/about-location-info-hero.js +15 -15
  11. package/dist/about-minimal-story.cjs +5 -4
  12. package/dist/about-minimal-story.js +6 -5
  13. package/dist/about-mission-dual-image.cjs +5 -5
  14. package/dist/about-mission-dual-image.js +6 -5
  15. package/dist/about-mission-features.cjs +5 -4
  16. package/dist/about-mission-features.js +6 -5
  17. package/dist/about-network-spotlight.cjs +12 -134
  18. package/dist/about-network-spotlight.js +13 -135
  19. package/dist/about-startup-team.cjs +10 -12
  20. package/dist/about-startup-team.js +11 -12
  21. package/dist/about-stats-showcase.cjs +17 -16
  22. package/dist/about-stats-showcase.js +17 -16
  23. package/dist/about-stats-sidebar.cjs +8 -7
  24. package/dist/about-stats-sidebar.js +8 -7
  25. package/dist/about-story-expertise.cjs +17 -139
  26. package/dist/about-story-expertise.js +18 -140
  27. package/dist/about-story-gallery.cjs +6 -9
  28. package/dist/about-story-gallery.js +6 -9
  29. package/dist/about-story-hero.cjs +6 -9
  30. package/dist/about-story-hero.js +7 -10
  31. package/dist/about-streamline-team.cjs +10 -10
  32. package/dist/about-streamline-team.js +11 -10
  33. package/dist/about-vision-gallery.cjs +33 -40
  34. package/dist/about-vision-gallery.d.cts +44 -24
  35. package/dist/about-vision-gallery.d.ts +44 -24
  36. package/dist/about-vision-gallery.js +34 -40
  37. package/dist/alternating-blocks.cjs +5 -5
  38. package/dist/alternating-blocks.js +5 -5
  39. package/dist/article-breadcrumb-social.cjs +35 -41
  40. package/dist/article-breadcrumb-social.d.cts +0 -2
  41. package/dist/article-breadcrumb-social.d.ts +0 -2
  42. package/dist/article-breadcrumb-social.js +35 -41
  43. package/dist/article-chapters-author.cjs +80 -80
  44. package/dist/article-chapters-author.js +79 -79
  45. package/dist/article-compact-toc.cjs +31 -30
  46. package/dist/article-compact-toc.js +30 -29
  47. package/dist/article-hero-prose.cjs +9 -9
  48. package/dist/article-hero-prose.d.cts +5 -5
  49. package/dist/article-hero-prose.d.ts +5 -5
  50. package/dist/article-hero-prose.js +9 -9
  51. package/dist/article-sidebar-sticky.cjs +12 -11
  52. package/dist/article-sidebar-sticky.js +12 -11
  53. package/dist/article-split-animated.cjs +23 -142
  54. package/dist/article-split-animated.js +23 -142
  55. package/dist/article-toc-sidebar.cjs +31 -31
  56. package/dist/article-toc-sidebar.js +30 -30
  57. package/dist/banner-announcement-dismissible.cjs +37 -17
  58. package/dist/banner-announcement-dismissible.d.cts +0 -2
  59. package/dist/banner-announcement-dismissible.d.ts +0 -2
  60. package/dist/banner-announcement-dismissible.js +38 -18
  61. package/dist/banner-countdown-sale.cjs +19 -11
  62. package/dist/banner-countdown-sale.d.cts +0 -1
  63. package/dist/banner-countdown-sale.d.ts +0 -1
  64. package/dist/banner-countdown-sale.js +21 -13
  65. package/dist/banner-delivery-countdown.cjs +29 -24
  66. package/dist/banner-delivery-countdown.d.cts +0 -2
  67. package/dist/banner-delivery-countdown.d.ts +0 -2
  68. package/dist/banner-delivery-countdown.js +30 -25
  69. package/dist/banner-event-promo.cjs +28 -13
  70. package/dist/banner-event-promo.js +29 -13
  71. package/dist/banner-floating-offer.cjs +42 -24
  72. package/dist/banner-floating-offer.d.cts +0 -3
  73. package/dist/banner-floating-offer.d.ts +0 -3
  74. package/dist/banner-floating-offer.js +43 -25
  75. package/dist/banner-gdpr-rights.cjs +36 -19
  76. package/dist/banner-gdpr-rights.d.cts +3 -5
  77. package/dist/banner-gdpr-rights.d.ts +3 -5
  78. package/dist/banner-gdpr-rights.js +37 -20
  79. package/dist/banner-privacy-notice.cjs +34 -17
  80. package/dist/banner-privacy-notice.d.cts +0 -2
  81. package/dist/banner-privacy-notice.d.ts +0 -2
  82. package/dist/banner-privacy-notice.js +35 -18
  83. package/dist/banner-promo-cta.cjs +27 -12
  84. package/dist/banner-promo-cta.js +28 -12
  85. package/dist/banner-social-follow.cjs +37 -17
  86. package/dist/banner-social-follow.d.cts +0 -2
  87. package/dist/banner-social-follow.d.ts +0 -2
  88. package/dist/banner-social-follow.js +38 -18
  89. package/dist/banner-survey-incentive.cjs +34 -17
  90. package/dist/banner-survey-incentive.d.cts +0 -2
  91. package/dist/banner-survey-incentive.d.ts +0 -2
  92. package/dist/banner-survey-incentive.js +35 -18
  93. package/dist/blog-cards-read-time.cjs +408 -24
  94. package/dist/blog-cards-read-time.d.cts +20 -1
  95. package/dist/blog-cards-read-time.d.ts +20 -1
  96. package/dist/blog-cards-read-time.js +409 -24
  97. package/dist/blog-cards-tagline-cta.cjs +406 -19
  98. package/dist/blog-cards-tagline-cta.d.cts +20 -1
  99. package/dist/blog-cards-tagline-cta.d.ts +20 -1
  100. package/dist/blog-cards-tagline-cta.js +407 -19
  101. package/dist/blog-category-overlay.cjs +407 -20
  102. package/dist/blog-category-overlay.d.cts +27 -8
  103. package/dist/blog-category-overlay.d.ts +27 -8
  104. package/dist/blog-category-overlay.js +408 -20
  105. package/dist/blog-featured-popular.cjs +406 -19
  106. package/dist/blog-featured-popular.d.cts +20 -1
  107. package/dist/blog-featured-popular.d.ts +20 -1
  108. package/dist/blog-featured-popular.js +407 -19
  109. package/dist/blog-filtered-results.cjs +457 -71
  110. package/dist/blog-filtered-results.d.cts +38 -19
  111. package/dist/blog-filtered-results.d.ts +38 -19
  112. package/dist/blog-filtered-results.js +455 -69
  113. package/dist/blog-grid-author-cards.cjs +408 -20
  114. package/dist/blog-grid-author-cards.d.cts +28 -9
  115. package/dist/blog-grid-author-cards.d.ts +28 -9
  116. package/dist/blog-grid-author-cards.js +409 -20
  117. package/dist/blog-grid-nine-posts.cjs +403 -16
  118. package/dist/blog-grid-nine-posts.d.cts +24 -5
  119. package/dist/blog-grid-nine-posts.d.ts +24 -5
  120. package/dist/blog-grid-nine-posts.js +404 -16
  121. package/dist/blog-horizontal-cards.cjs +407 -20
  122. package/dist/blog-horizontal-cards.d.cts +21 -2
  123. package/dist/blog-horizontal-cards.d.ts +21 -2
  124. package/dist/blog-horizontal-cards.js +408 -20
  125. package/dist/blog-horizontal-timeline.cjs +401 -14
  126. package/dist/blog-horizontal-timeline.d.cts +28 -9
  127. package/dist/blog-horizontal-timeline.d.ts +28 -9
  128. package/dist/blog-horizontal-timeline.js +402 -14
  129. package/dist/blog-masonry-featured.cjs +405 -18
  130. package/dist/blog-masonry-featured.d.cts +28 -9
  131. package/dist/blog-masonry-featured.d.ts +28 -9
  132. package/dist/blog-masonry-featured.js +406 -18
  133. package/dist/blog-related-articles.cjs +401 -14
  134. package/dist/blog-related-articles.d.cts +20 -1
  135. package/dist/blog-related-articles.d.ts +20 -1
  136. package/dist/blog-related-articles.js +402 -14
  137. package/dist/blog-tech-insights.cjs +410 -23
  138. package/dist/blog-tech-insights.d.cts +31 -12
  139. package/dist/blog-tech-insights.d.ts +31 -12
  140. package/dist/blog-tech-insights.js +411 -23
  141. package/dist/case-studies-featured-border.cjs +423 -14
  142. package/dist/case-studies-featured-border.d.cts +20 -1
  143. package/dist/case-studies-featured-border.d.ts +20 -1
  144. package/dist/case-studies-featured-border.js +424 -14
  145. package/dist/case-studies-image-grid.cjs +404 -7
  146. package/dist/case-studies-image-grid.d.cts +20 -1
  147. package/dist/case-studies-image-grid.d.ts +20 -1
  148. package/dist/case-studies-image-grid.js +405 -7
  149. package/dist/case-studies-stats-card.cjs +416 -29
  150. package/dist/case-studies-stats-card.d.cts +20 -1
  151. package/dist/case-studies-stats-card.d.ts +20 -1
  152. package/dist/case-studies-stats-card.js +417 -29
  153. package/dist/case-studies-testimonial-stats.cjs +409 -10
  154. package/dist/case-studies-testimonial-stats.d.cts +20 -1
  155. package/dist/case-studies-testimonial-stats.d.ts +20 -1
  156. package/dist/case-studies-testimonial-stats.js +409 -10
  157. package/dist/case-study-prose-sidebar.cjs +414 -23
  158. package/dist/case-study-prose-sidebar.d.cts +34 -15
  159. package/dist/case-study-prose-sidebar.d.ts +34 -15
  160. package/dist/case-study-prose-sidebar.js +415 -23
  161. package/dist/case-study-stats-metrics.cjs +443 -43
  162. package/dist/case-study-stats-metrics.d.cts +39 -20
  163. package/dist/case-study-stats-metrics.d.ts +39 -20
  164. package/dist/case-study-stats-metrics.js +444 -43
  165. package/dist/case-study-toc-social-sidebar.cjs +436 -46
  166. package/dist/case-study-toc-social-sidebar.d.cts +36 -17
  167. package/dist/case-study-toc-social-sidebar.d.ts +36 -17
  168. package/dist/case-study-toc-social-sidebar.js +437 -47
  169. package/dist/comparison-ai-models.cjs +498 -77
  170. package/dist/comparison-ai-models.d.cts +25 -7
  171. package/dist/comparison-ai-models.d.ts +25 -7
  172. package/dist/comparison-ai-models.js +497 -76
  173. package/dist/comparison-feature-cards.cjs +492 -80
  174. package/dist/comparison-feature-cards.d.cts +25 -6
  175. package/dist/comparison-feature-cards.d.ts +25 -6
  176. package/dist/comparison-feature-cards.js +492 -79
  177. package/dist/comparison-feature-grid.cjs +475 -47
  178. package/dist/comparison-feature-grid.d.cts +24 -1
  179. package/dist/comparison-feature-grid.d.ts +24 -1
  180. package/dist/comparison-feature-grid.js +476 -47
  181. package/dist/comparison-grid-badges.cjs +422 -25
  182. package/dist/comparison-grid-badges.d.cts +26 -3
  183. package/dist/comparison-grid-badges.d.ts +26 -3
  184. package/dist/comparison-grid-badges.js +423 -25
  185. package/dist/comparison-image-cards.cjs +450 -36
  186. package/dist/comparison-image-cards.d.cts +23 -4
  187. package/dist/comparison-image-cards.d.ts +23 -4
  188. package/dist/comparison-image-cards.js +451 -36
  189. package/dist/comparison-legacy-modern.cjs +442 -41
  190. package/dist/comparison-legacy-modern.d.cts +29 -6
  191. package/dist/comparison-legacy-modern.d.ts +29 -6
  192. package/dist/comparison-legacy-modern.js +443 -41
  193. package/dist/comparison-metrics-rows.cjs +478 -47
  194. package/dist/comparison-metrics-rows.d.cts +20 -1
  195. package/dist/comparison-metrics-rows.d.ts +20 -1
  196. package/dist/comparison-metrics-rows.js +479 -47
  197. package/dist/comparison-table-tabs.cjs +423 -13
  198. package/dist/comparison-table-tabs.d.cts +25 -2
  199. package/dist/comparison-table-tabs.d.ts +25 -2
  200. package/dist/comparison-table-tabs.js +424 -14
  201. package/dist/comparison-table-tooltips.cjs +443 -37
  202. package/dist/comparison-table-tooltips.d.cts +24 -1
  203. package/dist/comparison-table-tooltips.d.ts +24 -1
  204. package/dist/comparison-table-tooltips.js +443 -37
  205. package/dist/comparison-table-two-column.cjs +463 -53
  206. package/dist/comparison-table-two-column.d.cts +24 -6
  207. package/dist/comparison-table-two-column.d.ts +24 -6
  208. package/dist/comparison-table-two-column.js +464 -53
  209. package/dist/components.cjs +8 -8
  210. package/dist/components.js +9 -9
  211. package/dist/contact-callback.cjs +577 -190
  212. package/dist/contact-callback.d.cts +35 -1
  213. package/dist/contact-callback.d.ts +35 -1
  214. package/dist/contact-callback.js +578 -190
  215. package/dist/contact-card.cjs +502 -115
  216. package/dist/contact-card.d.cts +20 -1
  217. package/dist/contact-card.d.ts +20 -1
  218. package/dist/contact-card.js +503 -115
  219. package/dist/contact-careers.cjs +628 -241
  220. package/dist/contact-careers.d.cts +20 -2
  221. package/dist/contact-careers.d.ts +20 -2
  222. package/dist/contact-careers.js +629 -242
  223. package/dist/contact-catering.cjs +664 -277
  224. package/dist/contact-catering.d.cts +20 -1
  225. package/dist/contact-catering.d.ts +20 -1
  226. package/dist/contact-catering.js +665 -277
  227. package/dist/contact-consultation.cjs +567 -180
  228. package/dist/contact-consultation.d.cts +20 -2
  229. package/dist/contact-consultation.d.ts +20 -2
  230. package/dist/contact-consultation.js +568 -180
  231. package/dist/contact-dark.cjs +486 -99
  232. package/dist/contact-dark.d.cts +20 -2
  233. package/dist/contact-dark.d.ts +20 -2
  234. package/dist/contact-dark.js +487 -99
  235. package/dist/contact-demo.cjs +558 -171
  236. package/dist/contact-demo.d.cts +20 -2
  237. package/dist/contact-demo.d.ts +20 -2
  238. package/dist/contact-demo.js +559 -171
  239. package/dist/contact-emergency.cjs +571 -184
  240. package/dist/contact-emergency.d.cts +20 -2
  241. package/dist/contact-emergency.d.ts +20 -2
  242. package/dist/contact-emergency.js +572 -184
  243. package/dist/contact-event.cjs +489 -102
  244. package/dist/contact-event.d.cts +20 -2
  245. package/dist/contact-event.d.ts +20 -2
  246. package/dist/contact-event.js +490 -102
  247. package/dist/contact-faq.cjs +478 -91
  248. package/dist/contact-faq.d.cts +20 -2
  249. package/dist/contact-faq.d.ts +20 -2
  250. package/dist/contact-faq.js +479 -91
  251. package/dist/contact-feedback.cjs +450 -63
  252. package/dist/contact-feedback.d.cts +20 -2
  253. package/dist/contact-feedback.d.ts +20 -2
  254. package/dist/contact-feedback.js +451 -63
  255. package/dist/contact-fitness.cjs +489 -102
  256. package/dist/contact-fitness.d.cts +20 -2
  257. package/dist/contact-fitness.d.ts +20 -2
  258. package/dist/contact-fitness.js +490 -102
  259. package/dist/contact-floating-banner.cjs +5 -5
  260. package/dist/contact-floating-banner.js +5 -5
  261. package/dist/contact-guest.cjs +489 -102
  262. package/dist/contact-guest.d.cts +20 -2
  263. package/dist/contact-guest.d.ts +20 -2
  264. package/dist/contact-guest.js +490 -102
  265. package/dist/contact-image.cjs +489 -102
  266. package/dist/contact-image.d.cts +20 -2
  267. package/dist/contact-image.d.ts +20 -2
  268. package/dist/contact-image.js +490 -102
  269. package/dist/contact-insurance.cjs +489 -102
  270. package/dist/contact-insurance.d.cts +20 -2
  271. package/dist/contact-insurance.d.ts +20 -2
  272. package/dist/contact-insurance.js +490 -102
  273. package/dist/contact-interview.cjs +489 -102
  274. package/dist/contact-interview.d.cts +20 -2
  275. package/dist/contact-interview.d.ts +20 -2
  276. package/dist/contact-interview.js +490 -102
  277. package/dist/contact-locations.cjs +489 -102
  278. package/dist/contact-locations.d.cts +20 -2
  279. package/dist/contact-locations.d.ts +20 -2
  280. package/dist/contact-locations.js +490 -102
  281. package/dist/contact-maintenance.cjs +489 -102
  282. package/dist/contact-maintenance.d.cts +20 -2
  283. package/dist/contact-maintenance.d.ts +20 -2
  284. package/dist/contact-maintenance.js +490 -102
  285. package/dist/contact-map.cjs +489 -102
  286. package/dist/contact-map.d.cts +20 -2
  287. package/dist/contact-map.d.ts +20 -2
  288. package/dist/contact-map.js +490 -102
  289. package/dist/contact-minimal.cjs +466 -79
  290. package/dist/contact-minimal.d.cts +32 -1
  291. package/dist/contact-minimal.d.ts +32 -1
  292. package/dist/contact-minimal.js +467 -79
  293. package/dist/contact-moving.cjs +489 -102
  294. package/dist/contact-moving.d.cts +20 -2
  295. package/dist/contact-moving.d.ts +20 -2
  296. package/dist/contact-moving.js +490 -102
  297. package/dist/contact-multistep.cjs +489 -102
  298. package/dist/contact-multistep.d.cts +20 -2
  299. package/dist/contact-multistep.d.ts +20 -2
  300. package/dist/contact-multistep.js +490 -102
  301. package/dist/contact-partnership.cjs +489 -102
  302. package/dist/contact-partnership.d.cts +20 -2
  303. package/dist/contact-partnership.d.ts +20 -2
  304. package/dist/contact-partnership.js +490 -102
  305. package/dist/contact-photography.cjs +489 -102
  306. package/dist/contact-photography.d.cts +20 -2
  307. package/dist/contact-photography.d.ts +20 -2
  308. package/dist/contact-photography.js +490 -102
  309. package/dist/contact-press.cjs +489 -102
  310. package/dist/contact-press.d.cts +20 -2
  311. package/dist/contact-press.d.ts +20 -2
  312. package/dist/contact-press.js +490 -102
  313. package/dist/contact-quote.cjs +489 -102
  314. package/dist/contact-quote.d.cts +20 -2
  315. package/dist/contact-quote.d.ts +20 -2
  316. package/dist/contact-quote.js +490 -102
  317. package/dist/contact-referral.cjs +489 -102
  318. package/dist/contact-referral.d.cts +20 -2
  319. package/dist/contact-referral.d.ts +20 -2
  320. package/dist/contact-referral.js +490 -102
  321. package/dist/contact-report.cjs +489 -102
  322. package/dist/contact-report.d.cts +20 -2
  323. package/dist/contact-report.d.ts +20 -2
  324. package/dist/contact-report.js +490 -102
  325. package/dist/contact-reservation.cjs +489 -102
  326. package/dist/contact-reservation.d.cts +20 -2
  327. package/dist/contact-reservation.d.ts +20 -2
  328. package/dist/contact-reservation.js +490 -102
  329. package/dist/contact-retreat.cjs +489 -102
  330. package/dist/contact-retreat.d.cts +20 -2
  331. package/dist/contact-retreat.d.ts +20 -2
  332. package/dist/contact-retreat.js +490 -102
  333. package/dist/contact-rsvp.cjs +489 -102
  334. package/dist/contact-rsvp.d.cts +20 -2
  335. package/dist/contact-rsvp.d.ts +20 -2
  336. package/dist/contact-rsvp.js +490 -102
  337. package/dist/contact-sales.cjs +489 -102
  338. package/dist/contact-sales.d.cts +20 -1
  339. package/dist/contact-sales.d.ts +20 -1
  340. package/dist/contact-sales.js +490 -102
  341. package/dist/contact-schedule.cjs +489 -102
  342. package/dist/contact-schedule.d.cts +20 -2
  343. package/dist/contact-schedule.d.ts +20 -2
  344. package/dist/contact-schedule.js +490 -102
  345. package/dist/contact-sponsorship.cjs +489 -102
  346. package/dist/contact-sponsorship.d.cts +20 -2
  347. package/dist/contact-sponsorship.d.ts +20 -2
  348. package/dist/contact-sponsorship.js +490 -102
  349. package/dist/contact-support.cjs +463 -76
  350. package/dist/contact-support.d.cts +20 -2
  351. package/dist/contact-support.d.ts +20 -2
  352. package/dist/contact-support.js +464 -76
  353. package/dist/contact-tenant.cjs +489 -102
  354. package/dist/contact-tenant.d.cts +20 -2
  355. package/dist/contact-tenant.d.ts +20 -2
  356. package/dist/contact-tenant.js +490 -102
  357. package/dist/contact-vendor.cjs +489 -102
  358. package/dist/contact-vendor.d.cts +20 -2
  359. package/dist/contact-vendor.d.ts +20 -2
  360. package/dist/contact-vendor.js +490 -102
  361. package/dist/contact-volunteer.cjs +489 -102
  362. package/dist/contact-volunteer.d.cts +20 -2
  363. package/dist/contact-volunteer.d.ts +20 -2
  364. package/dist/contact-volunteer.js +490 -102
  365. package/dist/contact-warranty.cjs +489 -102
  366. package/dist/contact-warranty.d.cts +20 -2
  367. package/dist/contact-warranty.d.ts +20 -2
  368. package/dist/contact-warranty.js +490 -102
  369. package/dist/contact-wedding.cjs +489 -102
  370. package/dist/contact-wedding.d.cts +20 -2
  371. package/dist/contact-wedding.d.ts +20 -2
  372. package/dist/contact-wedding.js +490 -102
  373. package/dist/cta-accent-background.cjs +11 -11
  374. package/dist/cta-accent-background.js +12 -12
  375. package/dist/cta-app-download-newsletter.cjs +16 -135
  376. package/dist/cta-app-download-newsletter.js +17 -136
  377. package/dist/cta-background-icon-badge.cjs +12 -131
  378. package/dist/cta-background-icon-badge.js +13 -132
  379. package/dist/cta-case-study-testimonial.cjs +31 -154
  380. package/dist/cta-case-study-testimonial.js +32 -155
  381. package/dist/cta-documentation-links.cjs +15 -15
  382. package/dist/cta-documentation-links.js +16 -16
  383. package/dist/cta-enterprise-dark-features.cjs +21 -21
  384. package/dist/cta-enterprise-dark-features.js +22 -22
  385. package/dist/cta-enterprise-split.cjs +14 -14
  386. package/dist/cta-enterprise-split.js +15 -15
  387. package/dist/cta-feature-cards-grid.cjs +16 -16
  388. package/dist/cta-feature-cards-grid.js +17 -17
  389. package/dist/cta-feature-checklist.cjs +14 -14
  390. package/dist/cta-feature-checklist.js +15 -15
  391. package/dist/cta-feature-list.cjs +16 -135
  392. package/dist/cta-feature-list.js +17 -136
  393. package/dist/cta-fullwidth-background.cjs +14 -133
  394. package/dist/cta-fullwidth-background.js +15 -134
  395. package/dist/cta-gradient-logos-floating.cjs +17 -17
  396. package/dist/cta-gradient-logos-floating.js +18 -18
  397. package/dist/cta-gradient-stats-hero.cjs +16 -16
  398. package/dist/cta-gradient-stats-hero.js +17 -17
  399. package/dist/cta-hero-feature-cards.cjs +36 -136
  400. package/dist/cta-hero-feature-cards.js +37 -137
  401. package/dist/cta-image-overlay-arrow.cjs +12 -131
  402. package/dist/cta-image-overlay-arrow.js +13 -132
  403. package/dist/cta-image-overlay-centered.cjs +12 -131
  404. package/dist/cta-image-overlay-centered.js +13 -132
  405. package/dist/cta-minimal-separator.cjs +8 -8
  406. package/dist/cta-minimal-separator.js +9 -9
  407. package/dist/cta-newsletter-features.cjs +14 -14
  408. package/dist/cta-newsletter-features.js +15 -15
  409. package/dist/cta-pattern-background.cjs +11 -11
  410. package/dist/cta-pattern-background.js +12 -12
  411. package/dist/cta-platform-demo.cjs +16 -139
  412. package/dist/cta-platform-demo.js +17 -140
  413. package/dist/cta-simple-centered.cjs +11 -11
  414. package/dist/cta-simple-centered.js +12 -12
  415. package/dist/cta-split-gradient-image.cjs +14 -133
  416. package/dist/cta-split-gradient-image.js +15 -134
  417. package/dist/cta-split-image-logos.cjs +17 -136
  418. package/dist/cta-split-image-logos.js +18 -137
  419. package/dist/cta-split-image.cjs +60 -174
  420. package/dist/cta-split-image.js +61 -175
  421. package/dist/cta-stacked-cards.cjs +11 -11
  422. package/dist/cta-stacked-cards.js +12 -12
  423. package/dist/cta-video-background-hero.cjs +16 -100
  424. package/dist/cta-video-background-hero.js +17 -101
  425. package/dist/cta-workflow-tabs.cjs +18 -137
  426. package/dist/cta-workflow-tabs.js +19 -138
  427. package/dist/hero-ad-campaign-expert.cjs +2 -2
  428. package/dist/hero-ad-campaign-expert.js +2 -2
  429. package/dist/hero-adaptable-product-grid.cjs +2 -2
  430. package/dist/hero-adaptable-product-grid.js +2 -2
  431. package/dist/hero-agency-animated-images.cjs +2 -2
  432. package/dist/hero-agency-animated-images.js +2 -2
  433. package/dist/hero-ai-powered-carousel.cjs +2 -2
  434. package/dist/hero-ai-powered-carousel.js +2 -2
  435. package/dist/hero-announcement-badge.cjs +2 -2
  436. package/dist/hero-announcement-badge.js +2 -2
  437. package/dist/hero-architecture-fullscreen.cjs +2 -2
  438. package/dist/hero-architecture-fullscreen.js +2 -2
  439. package/dist/hero-badge-image-split.cjs +2 -2
  440. package/dist/hero-badge-image-split.js +2 -2
  441. package/dist/hero-badge-shadow-overlay.cjs +2 -2
  442. package/dist/hero-badge-shadow-overlay.js +2 -2
  443. package/dist/hero-billing-platform-logos.cjs +2 -2
  444. package/dist/hero-billing-platform-logos.js +2 -2
  445. package/dist/hero-business-carousel-dots.cjs +2 -2
  446. package/dist/hero-business-carousel-dots.js +2 -2
  447. package/dist/hero-business-operations-mosaic.cjs +2 -2
  448. package/dist/hero-business-operations-mosaic.js +2 -2
  449. package/dist/hero-centered-gradient-cta.cjs +2 -2
  450. package/dist/hero-centered-gradient-cta.js +2 -2
  451. package/dist/hero-centered-image-grid.cjs +2 -2
  452. package/dist/hero-centered-image-grid.js +2 -2
  453. package/dist/hero-centered-screenshot.cjs +2 -2
  454. package/dist/hero-centered-screenshot.js +2 -2
  455. package/dist/hero-coming-soon-countdown.cjs +2 -2
  456. package/dist/hero-coming-soon-countdown.js +2 -2
  457. package/dist/hero-community-survey-cta.cjs +2 -2
  458. package/dist/hero-community-survey-cta.js +2 -2
  459. package/dist/hero-conversation-intelligence.cjs +2 -2
  460. package/dist/hero-conversation-intelligence.js +2 -2
  461. package/dist/hero-conversion-video-play.cjs +2 -2
  462. package/dist/hero-conversion-video-play.js +2 -2
  463. package/dist/hero-creative-studio-stacked.cjs +2 -2
  464. package/dist/hero-creative-studio-stacked.js +2 -2
  465. package/dist/hero-crm-streamlined.cjs +2 -2
  466. package/dist/hero-crm-streamlined.js +2 -2
  467. package/dist/hero-customer-support-layered.cjs +2 -2
  468. package/dist/hero-customer-support-layered.js +2 -2
  469. package/dist/hero-dashed-border-features.cjs +2 -2
  470. package/dist/hero-dashed-border-features.js +2 -2
  471. package/dist/hero-design-carousel-portfolio.cjs +2 -2
  472. package/dist/hero-design-carousel-portfolio.js +2 -2
  473. package/dist/hero-design-showcase-logos.cjs +2 -2
  474. package/dist/hero-design-showcase-logos.js +2 -2
  475. package/dist/hero-design-system-3d.cjs +2 -2
  476. package/dist/hero-design-system-3d.js +2 -2
  477. package/dist/hero-developer-tools-code.cjs +2 -2
  478. package/dist/hero-developer-tools-code.js +2 -2
  479. package/dist/hero-digital-agency-fullscreen.cjs +2 -2
  480. package/dist/hero-digital-agency-fullscreen.js +2 -2
  481. package/dist/hero-ecommerce-product-showcase.cjs +2 -2
  482. package/dist/hero-ecommerce-product-showcase.js +2 -2
  483. package/dist/hero-enterprise-security.cjs +2 -2
  484. package/dist/hero-enterprise-security.js +2 -2
  485. package/dist/hero-event-registration.cjs +2 -2
  486. package/dist/hero-event-registration.js +2 -2
  487. package/dist/hero-feature-cards-grid.cjs +2 -2
  488. package/dist/hero-feature-cards-grid.js +2 -2
  489. package/dist/hero-fullscreen-background-image.cjs +2 -2
  490. package/dist/hero-fullscreen-background-image.js +2 -2
  491. package/dist/hero-fullscreen-logo-cta.cjs +2 -2
  492. package/dist/hero-fullscreen-logo-cta.js +2 -2
  493. package/dist/hero-gradient-avatars-rating.cjs +2 -2
  494. package/dist/hero-gradient-avatars-rating.js +2 -2
  495. package/dist/hero-gradient-client-focused.cjs +2 -2
  496. package/dist/hero-gradient-client-focused.js +2 -2
  497. package/dist/hero-grid-pattern-efficiency.cjs +2 -2
  498. package/dist/hero-grid-pattern-efficiency.js +2 -2
  499. package/dist/hero-grid-pattern-solutions.cjs +2 -2
  500. package/dist/hero-grid-pattern-solutions.js +2 -2
  501. package/dist/hero-hiring-animated-text.cjs +2 -2
  502. package/dist/hero-hiring-animated-text.js +2 -2
  503. package/dist/hero-image-left-content.cjs +2 -2
  504. package/dist/hero-image-left-content.js +2 -2
  505. package/dist/hero-image-slider.cjs +2 -2
  506. package/dist/hero-image-slider.js +2 -2
  507. package/dist/hero-innovation-image-grid.cjs +2 -2
  508. package/dist/hero-innovation-image-grid.js +2 -2
  509. package/dist/hero-logo-centered-screenshot.cjs +2 -2
  510. package/dist/hero-logo-centered-screenshot.js +2 -2
  511. package/dist/hero-marketplace-scattered-images.cjs +2 -2
  512. package/dist/hero-marketplace-scattered-images.js +2 -2
  513. package/dist/hero-mental-health-team.cjs +2 -2
  514. package/dist/hero-mental-health-team.js +2 -2
  515. package/dist/hero-mentorship-video-split.cjs +2 -2
  516. package/dist/hero-mentorship-video-split.js +2 -2
  517. package/dist/hero-minimal-centered-dark.cjs +2 -2
  518. package/dist/hero-minimal-centered-dark.js +2 -2
  519. package/dist/hero-mobile-app-download.cjs +2 -2
  520. package/dist/hero-mobile-app-download.js +2 -2
  521. package/dist/hero-newsletter-minimal.cjs +2 -2
  522. package/dist/hero-newsletter-minimal.js +2 -2
  523. package/dist/hero-pattern-badge-logos.cjs +2 -2
  524. package/dist/hero-pattern-badge-logos.js +2 -2
  525. package/dist/hero-pattern-logo-tech-stack.cjs +2 -2
  526. package/dist/hero-pattern-logo-tech-stack.js +2 -2
  527. package/dist/hero-platform-features-grid.cjs +2 -2
  528. package/dist/hero-platform-features-grid.js +2 -2
  529. package/dist/hero-portfolio-creative.cjs +2 -2
  530. package/dist/hero-portfolio-creative.js +2 -2
  531. package/dist/hero-premium-split-avatars.cjs +2 -2
  532. package/dist/hero-premium-split-avatars.js +2 -2
  533. package/dist/hero-presentation-platform-video.cjs +2 -2
  534. package/dist/hero-presentation-platform-video.js +2 -2
  535. package/dist/hero-pricing-comparison.cjs +2 -2
  536. package/dist/hero-pricing-comparison.js +2 -2
  537. package/dist/hero-product-showcase-floating.cjs +2 -2
  538. package/dist/hero-product-showcase-floating.js +2 -2
  539. package/dist/hero-productivity-launcher-video.cjs +2 -2
  540. package/dist/hero-productivity-launcher-video.js +2 -2
  541. package/dist/hero-saas-dashboard-preview.cjs +2 -2
  542. package/dist/hero-saas-dashboard-preview.js +2 -2
  543. package/dist/hero-shared-inbox-layered.cjs +2 -2
  544. package/dist/hero-shared-inbox-layered.js +2 -2
  545. package/dist/hero-simple-centered-image.cjs +2 -2
  546. package/dist/hero-simple-centered-image.js +2 -2
  547. package/dist/hero-software-growth-video-dialog.cjs +2 -2
  548. package/dist/hero-software-growth-video-dialog.js +2 -2
  549. package/dist/hero-spiral-pattern-cards.cjs +2 -2
  550. package/dist/hero-spiral-pattern-cards.js +2 -2
  551. package/dist/hero-split-geometric-shapes.cjs +2 -2
  552. package/dist/hero-split-geometric-shapes.js +2 -2
  553. package/dist/hero-split-icon-cards.cjs +1 -1
  554. package/dist/hero-split-icon-cards.js +1 -1
  555. package/dist/hero-split-image-newsletter.cjs +2 -2
  556. package/dist/hero-split-image-newsletter.js +2 -2
  557. package/dist/hero-split-spiral-shapes.cjs +2 -2
  558. package/dist/hero-split-spiral-shapes.js +2 -2
  559. package/dist/hero-startup-launch-cta.cjs +2 -2
  560. package/dist/hero-startup-launch-cta.js +2 -2
  561. package/dist/hero-stats-social-proof.cjs +2 -2
  562. package/dist/hero-stats-social-proof.js +2 -2
  563. package/dist/hero-task-timer-animated.cjs +2 -2
  564. package/dist/hero-task-timer-animated.js +2 -2
  565. package/dist/hero-tech-carousel.cjs +2 -2
  566. package/dist/hero-tech-carousel.js +2 -2
  567. package/dist/hero-therapy-testimonial-grid.cjs +2 -2
  568. package/dist/hero-therapy-testimonial-grid.js +2 -2
  569. package/dist/hero-ui-library-showcase.cjs +2 -2
  570. package/dist/hero-ui-library-showcase.js +2 -2
  571. package/dist/hero-video-background-dark.cjs +2 -2
  572. package/dist/hero-video-background-dark.js +2 -2
  573. package/dist/hero-video-dialog-gradient.cjs +2 -2
  574. package/dist/hero-video-dialog-gradient.js +2 -2
  575. package/dist/hero-video-overlay-stars.cjs +2 -2
  576. package/dist/hero-video-overlay-stars.js +2 -2
  577. package/dist/hero-welcome-asymmetric-images.cjs +2 -2
  578. package/dist/hero-welcome-asymmetric-images.js +2 -2
  579. package/dist/index.cjs +8 -8
  580. package/dist/index.js +9 -9
  581. package/dist/media-hover-ctas.cjs +7 -7
  582. package/dist/media-hover-ctas.js +7 -7
  583. package/dist/registry.cjs +10071 -8111
  584. package/dist/registry.js +10033 -8073
  585. package/package.json +2 -2
@@ -1,9 +1,9 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
+ var React = require('react');
4
5
  var clsx = require('clsx');
5
6
  var tailwindMerge = require('tailwind-merge');
6
- var React = require('react');
7
7
  var classVarianceAuthority = require('class-variance-authority');
8
8
  var jsxRuntime = require('react/jsx-runtime');
9
9
 
@@ -27,7 +27,7 @@ function _interopNamespace(e) {
27
27
 
28
28
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
29
29
 
30
- // lib/utils.ts
30
+ // components/blocks/banner/banner-event-promo.tsx
31
31
  function cn(...inputs) {
32
32
  return tailwindMerge.twMerge(clsx.clsx(inputs));
33
33
  }
@@ -450,8 +450,8 @@ var Pressable = React__namespace.forwardRef(
450
450
  );
451
451
  Pressable.displayName = "Pressable";
452
452
  function BannerEventPromo({
453
- eventName = "GeneriCon 2024",
454
- eventDetails = "Join us in Denver from June 7 - 9 to see what's coming next.",
453
+ eventName,
454
+ eventDetails,
455
455
  separator,
456
456
  actions,
457
457
  actionsSlot,
@@ -464,11 +464,18 @@ function BannerEventPromo({
464
464
  eventDetailsClassName,
465
465
  actionsClassName
466
466
  }) {
467
- const renderActions = () => {
467
+ const actionsContent = React.useMemo(() => {
468
468
  if (actionsSlot) return actionsSlot;
469
469
  if (!actions || actions.length === 0) return null;
470
470
  return actions.map((action, index) => {
471
- const { label, icon: actionIcon, iconAfter, children, className: actionClassName, ...pressableProps } = action;
471
+ const {
472
+ label,
473
+ icon: actionIcon,
474
+ iconAfter,
475
+ children,
476
+ className: actionClassName,
477
+ ...pressableProps
478
+ } = action;
472
479
  return /* @__PURE__ */ jsxRuntime.jsx(
473
480
  Pressable,
474
481
  {
@@ -484,8 +491,8 @@ function BannerEventPromo({
484
491
  index
485
492
  );
486
493
  });
487
- };
488
- const renderSeparator = () => {
494
+ }, [actions, actionsSlot]);
495
+ const separatorContent = React.useMemo(() => {
489
496
  if (separator) return separator;
490
497
  return /* @__PURE__ */ jsxRuntime.jsx(
491
498
  "svg",
@@ -496,14 +503,22 @@ function BannerEventPromo({
496
503
  children: /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: 1, cy: 1, r: 1 })
497
504
  }
498
505
  );
499
- };
506
+ }, [separator, separatorClassName]);
507
+ const eventNameContent = React.useMemo(() => {
508
+ if (!eventName) return null;
509
+ return typeof eventName === "string" ? /* @__PURE__ */ jsxRuntime.jsx("strong", { className: cn("font-semibold", eventNameClassName), children: eventName }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: eventNameClassName, children: eventName });
510
+ }, [eventName, eventNameClassName]);
511
+ const eventDetailsContent = React.useMemo(() => {
512
+ if (!eventDetails) return null;
513
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { className: eventDetailsClassName, children: eventDetails });
514
+ }, [eventDetails, eventDetailsClassName]);
500
515
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("bg-primary text-primary-foreground", className), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("container mx-auto px-4 md:px-6 2xl:max-w-[1400px]", containerClassName), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center justify-between gap-x-6 p-4", contentClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-wrap justify-between w-full items-center gap-x-4 gap-y-2", textClassName), children: [
501
516
  /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm leading-6", children: [
502
- eventName && (typeof eventName === "string" ? /* @__PURE__ */ jsxRuntime.jsx("strong", { className: cn("font-semibold", eventNameClassName), children: eventName }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: eventNameClassName, children: eventName })),
503
- renderSeparator(),
504
- eventDetails && (typeof eventDetails === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: eventDetailsClassName, children: eventDetails }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: eventDetailsClassName, children: eventDetails }))
517
+ eventNameContent,
518
+ eventNameContent && eventDetailsContent && separatorContent,
519
+ eventDetailsContent
505
520
  ] }),
506
- (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: actionsClassName, children: renderActions() })
521
+ (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: actionsClassName, children: actionsContent })
507
522
  ] }) }) }) });
508
523
  }
509
524
 
@@ -1,11 +1,12 @@
1
1
  "use client";
2
+ import * as React from 'react';
3
+ import { useMemo } from 'react';
2
4
  import { clsx } from 'clsx';
3
5
  import { twMerge } from 'tailwind-merge';
4
- import * as React from 'react';
5
6
  import { cva } from 'class-variance-authority';
6
7
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
7
8
 
8
- // lib/utils.ts
9
+ // components/blocks/banner/banner-event-promo.tsx
9
10
  function cn(...inputs) {
10
11
  return twMerge(clsx(inputs));
11
12
  }
@@ -428,8 +429,8 @@ var Pressable = React.forwardRef(
428
429
  );
429
430
  Pressable.displayName = "Pressable";
430
431
  function BannerEventPromo({
431
- eventName = "GeneriCon 2024",
432
- eventDetails = "Join us in Denver from June 7 - 9 to see what's coming next.",
432
+ eventName,
433
+ eventDetails,
433
434
  separator,
434
435
  actions,
435
436
  actionsSlot,
@@ -442,11 +443,18 @@ function BannerEventPromo({
442
443
  eventDetailsClassName,
443
444
  actionsClassName
444
445
  }) {
445
- const renderActions = () => {
446
+ const actionsContent = useMemo(() => {
446
447
  if (actionsSlot) return actionsSlot;
447
448
  if (!actions || actions.length === 0) return null;
448
449
  return actions.map((action, index) => {
449
- const { label, icon: actionIcon, iconAfter, children, className: actionClassName, ...pressableProps } = action;
450
+ const {
451
+ label,
452
+ icon: actionIcon,
453
+ iconAfter,
454
+ children,
455
+ className: actionClassName,
456
+ ...pressableProps
457
+ } = action;
450
458
  return /* @__PURE__ */ jsx(
451
459
  Pressable,
452
460
  {
@@ -462,8 +470,8 @@ function BannerEventPromo({
462
470
  index
463
471
  );
464
472
  });
465
- };
466
- const renderSeparator = () => {
473
+ }, [actions, actionsSlot]);
474
+ const separatorContent = useMemo(() => {
467
475
  if (separator) return separator;
468
476
  return /* @__PURE__ */ jsx(
469
477
  "svg",
@@ -474,14 +482,22 @@ function BannerEventPromo({
474
482
  children: /* @__PURE__ */ jsx("circle", { cx: 1, cy: 1, r: 1 })
475
483
  }
476
484
  );
477
- };
485
+ }, [separator, separatorClassName]);
486
+ const eventNameContent = useMemo(() => {
487
+ if (!eventName) return null;
488
+ return typeof eventName === "string" ? /* @__PURE__ */ jsx("strong", { className: cn("font-semibold", eventNameClassName), children: eventName }) : /* @__PURE__ */ jsx("span", { className: eventNameClassName, children: eventName });
489
+ }, [eventName, eventNameClassName]);
490
+ const eventDetailsContent = useMemo(() => {
491
+ if (!eventDetails) return null;
492
+ return /* @__PURE__ */ jsx("span", { className: eventDetailsClassName, children: eventDetails });
493
+ }, [eventDetails, eventDetailsClassName]);
478
494
  return /* @__PURE__ */ jsx("div", { className: cn("bg-primary text-primary-foreground", className), children: /* @__PURE__ */ jsx("div", { className: cn("container mx-auto px-4 md:px-6 2xl:max-w-[1400px]", containerClassName), children: /* @__PURE__ */ jsx("div", { className: cn("flex items-center justify-between gap-x-6 p-4", contentClassName), children: /* @__PURE__ */ jsxs("div", { className: cn("flex flex-wrap justify-between w-full items-center gap-x-4 gap-y-2", textClassName), children: [
479
495
  /* @__PURE__ */ jsxs("p", { className: "text-sm leading-6", children: [
480
- eventName && (typeof eventName === "string" ? /* @__PURE__ */ jsx("strong", { className: cn("font-semibold", eventNameClassName), children: eventName }) : /* @__PURE__ */ jsx("span", { className: eventNameClassName, children: eventName })),
481
- renderSeparator(),
482
- eventDetails && (typeof eventDetails === "string" ? /* @__PURE__ */ jsx("span", { className: eventDetailsClassName, children: eventDetails }) : /* @__PURE__ */ jsx("span", { className: eventDetailsClassName, children: eventDetails }))
496
+ eventNameContent,
497
+ eventNameContent && eventDetailsContent && separatorContent,
498
+ eventDetailsContent
483
499
  ] }),
484
- (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("div", { className: actionsClassName, children: renderActions() })
500
+ (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("div", { className: actionsClassName, children: actionsContent })
485
501
  ] }) }) }) });
486
502
  }
487
503
 
@@ -555,17 +555,17 @@ function processSvgForCurrentColor(svg) {
555
555
  return processed;
556
556
  }
557
557
  function BannerFloatingOffer({
558
- offerTitle = "Limited time offer",
559
- offerDescription = "Get 50% off for your first month",
558
+ offerTitle,
559
+ offerDescription,
560
560
  separator,
561
561
  actions,
562
562
  actionsSlot,
563
563
  open,
564
- defaultOpen = true,
564
+ defaultOpen,
565
565
  onOpenChange,
566
- dismissible = false,
566
+ dismissible,
567
567
  dismissIcon,
568
- dismissAriaLabel = "Dismiss banner",
568
+ dismissAriaLabel,
569
569
  className,
570
570
  containerClassName,
571
571
  textClassName,
@@ -576,24 +576,34 @@ function BannerFloatingOffer({
576
576
  dismissButtonClassName
577
577
  }) {
578
578
  const isControlled = open !== void 0;
579
- const [internalOpen, setInternalOpen] = React.useState(defaultOpen);
579
+ const initialOpen = defaultOpen ?? true;
580
+ const [internalOpen, setInternalOpen] = React.useState(initialOpen);
580
581
  const isVisible = isControlled ? open : internalOpen;
582
+ const dismissLabel = dismissAriaLabel ?? "Dismiss banner";
583
+ const isDismissible = dismissible ?? false;
581
584
  React.useEffect(() => {
582
585
  if (!isControlled && defaultOpen !== internalOpen) {
583
- setInternalOpen(defaultOpen);
586
+ setInternalOpen(initialOpen);
584
587
  }
585
- }, [defaultOpen, isControlled, internalOpen]);
586
- const handleDismiss = () => {
588
+ }, [defaultOpen, initialOpen, isControlled, internalOpen]);
589
+ const handleDismiss = React.useCallback(() => {
587
590
  if (!isControlled) {
588
591
  setInternalOpen(false);
589
592
  }
590
593
  onOpenChange?.(false);
591
- };
592
- const renderActions = () => {
594
+ }, [isControlled, onOpenChange]);
595
+ const actionsContent = React.useMemo(() => {
593
596
  if (actionsSlot) return actionsSlot;
594
597
  if (!actions || actions.length === 0) return null;
595
598
  return actions.map((action, index) => {
596
- const { label, icon: actionIcon, iconAfter, children, className: actionClassName, ...pressableProps } = action;
599
+ const {
600
+ label,
601
+ icon: actionIcon,
602
+ iconAfter,
603
+ children,
604
+ className: actionClassName,
605
+ ...pressableProps
606
+ } = action;
597
607
  return /* @__PURE__ */ jsxRuntime.jsx(
598
608
  Pressable,
599
609
  {
@@ -609,8 +619,8 @@ function BannerFloatingOffer({
609
619
  index
610
620
  );
611
621
  });
612
- };
613
- const renderSeparator = () => {
622
+ }, [actions, actionsSlot]);
623
+ const separatorContent = React.useMemo(() => {
614
624
  if (separator) return separator;
615
625
  return /* @__PURE__ */ jsxRuntime.jsx(
616
626
  "svg",
@@ -621,11 +631,19 @@ function BannerFloatingOffer({
621
631
  children: /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: 1, cy: 1, r: 1 })
622
632
  }
623
633
  );
624
- };
625
- const renderDismissIcon = () => {
634
+ }, [separator, separatorClassName]);
635
+ const dismissIconContent = React.useMemo(() => {
626
636
  if (dismissIcon) return dismissIcon;
627
637
  return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "mynaui/x", size: 16 });
628
- };
638
+ }, [dismissIcon]);
639
+ const offerTitleContent = React.useMemo(() => {
640
+ if (!offerTitle) return null;
641
+ return typeof offerTitle === "string" ? /* @__PURE__ */ jsxRuntime.jsx("strong", { className: cn("font-semibold", offerTitleClassName), children: offerTitle }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: offerTitleClassName, children: offerTitle });
642
+ }, [offerTitle, offerTitleClassName]);
643
+ const offerDescriptionContent = React.useMemo(() => {
644
+ if (!offerDescription) return null;
645
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { className: offerDescriptionClassName, children: offerDescription });
646
+ }, [offerDescription, offerDescriptionClassName]);
629
647
  if (!isVisible) {
630
648
  return null;
631
649
  }
@@ -638,13 +656,13 @@ function BannerFloatingOffer({
638
656
  ),
639
657
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("pointer-events-auto flex items-center justify-between gap-x-6 bg-primary px-6 py-2.5 sm:rounded-xl sm:py-3 sm:pl-4 sm:pr-3.5", containerClassName), children: [
640
658
  /* @__PURE__ */ jsxRuntime.jsxs("p", { className: cn("text-sm leading-6 text-primary-foreground", textClassName), children: [
641
- offerTitle && (typeof offerTitle === "string" ? /* @__PURE__ */ jsxRuntime.jsx("strong", { className: cn("font-semibold", offerTitleClassName), children: offerTitle }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: offerTitleClassName, children: offerTitle })),
642
- renderSeparator(),
643
- offerDescription && (typeof offerDescription === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: offerDescriptionClassName, children: offerDescription }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: offerDescriptionClassName, children: offerDescription }))
659
+ offerTitleContent,
660
+ offerTitleContent && offerDescriptionContent && separatorContent,
661
+ offerDescriptionContent
644
662
  ] }),
645
663
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-2", actionsClassName), children: [
646
- renderActions(),
647
- dismissible && /* @__PURE__ */ jsxRuntime.jsxs(
664
+ actionsContent,
665
+ isDismissible && /* @__PURE__ */ jsxRuntime.jsxs(
648
666
  Pressable,
649
667
  {
650
668
  onClick: handleDismiss,
@@ -653,8 +671,8 @@ function BannerFloatingOffer({
653
671
  asButton: true,
654
672
  className: cn("size-8 text-primary-foreground hover:text-primary-foreground/80", dismissButtonClassName),
655
673
  children: [
656
- renderDismissIcon(),
657
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: dismissAriaLabel })
674
+ dismissIconContent,
675
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: dismissLabel })
658
676
  ]
659
677
  }
660
678
  )
@@ -35,7 +35,6 @@ interface BannerFloatingOfferProps {
35
35
  open?: boolean;
36
36
  /**
37
37
  * Default visibility state for uncontrolled mode
38
- * @default true
39
38
  */
40
39
  defaultOpen?: boolean;
41
40
  /**
@@ -44,7 +43,6 @@ interface BannerFloatingOfferProps {
44
43
  onOpenChange?: (open: boolean) => void;
45
44
  /**
46
45
  * Whether the banner can be dismissed
47
- * @default false
48
46
  */
49
47
  dismissible?: boolean;
50
48
  /**
@@ -53,7 +51,6 @@ interface BannerFloatingOfferProps {
53
51
  dismissIcon?: React.ReactNode;
54
52
  /**
55
53
  * ARIA label for dismiss button
56
- * @default "Dismiss banner"
57
54
  */
58
55
  dismissAriaLabel?: string;
59
56
  /**
@@ -35,7 +35,6 @@ interface BannerFloatingOfferProps {
35
35
  open?: boolean;
36
36
  /**
37
37
  * Default visibility state for uncontrolled mode
38
- * @default true
39
38
  */
40
39
  defaultOpen?: boolean;
41
40
  /**
@@ -44,7 +43,6 @@ interface BannerFloatingOfferProps {
44
43
  onOpenChange?: (open: boolean) => void;
45
44
  /**
46
45
  * Whether the banner can be dismissed
47
- * @default false
48
46
  */
49
47
  dismissible?: boolean;
50
48
  /**
@@ -53,7 +51,6 @@ interface BannerFloatingOfferProps {
53
51
  dismissIcon?: React.ReactNode;
54
52
  /**
55
53
  * ARIA label for dismiss button
56
- * @default "Dismiss banner"
57
54
  */
58
55
  dismissAriaLabel?: string;
59
56
  /**
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import * as React from 'react';
3
- import { useState, useEffect } from 'react';
3
+ import { useState, useEffect, useCallback, useMemo } from 'react';
4
4
  import { clsx } from 'clsx';
5
5
  import { twMerge } from 'tailwind-merge';
6
6
  import { cva } from 'class-variance-authority';
@@ -534,17 +534,17 @@ function processSvgForCurrentColor(svg) {
534
534
  return processed;
535
535
  }
536
536
  function BannerFloatingOffer({
537
- offerTitle = "Limited time offer",
538
- offerDescription = "Get 50% off for your first month",
537
+ offerTitle,
538
+ offerDescription,
539
539
  separator,
540
540
  actions,
541
541
  actionsSlot,
542
542
  open,
543
- defaultOpen = true,
543
+ defaultOpen,
544
544
  onOpenChange,
545
- dismissible = false,
545
+ dismissible,
546
546
  dismissIcon,
547
- dismissAriaLabel = "Dismiss banner",
547
+ dismissAriaLabel,
548
548
  className,
549
549
  containerClassName,
550
550
  textClassName,
@@ -555,24 +555,34 @@ function BannerFloatingOffer({
555
555
  dismissButtonClassName
556
556
  }) {
557
557
  const isControlled = open !== void 0;
558
- const [internalOpen, setInternalOpen] = useState(defaultOpen);
558
+ const initialOpen = defaultOpen ?? true;
559
+ const [internalOpen, setInternalOpen] = useState(initialOpen);
559
560
  const isVisible = isControlled ? open : internalOpen;
561
+ const dismissLabel = dismissAriaLabel ?? "Dismiss banner";
562
+ const isDismissible = dismissible ?? false;
560
563
  useEffect(() => {
561
564
  if (!isControlled && defaultOpen !== internalOpen) {
562
- setInternalOpen(defaultOpen);
565
+ setInternalOpen(initialOpen);
563
566
  }
564
- }, [defaultOpen, isControlled, internalOpen]);
565
- const handleDismiss = () => {
567
+ }, [defaultOpen, initialOpen, isControlled, internalOpen]);
568
+ const handleDismiss = useCallback(() => {
566
569
  if (!isControlled) {
567
570
  setInternalOpen(false);
568
571
  }
569
572
  onOpenChange?.(false);
570
- };
571
- const renderActions = () => {
573
+ }, [isControlled, onOpenChange]);
574
+ const actionsContent = useMemo(() => {
572
575
  if (actionsSlot) return actionsSlot;
573
576
  if (!actions || actions.length === 0) return null;
574
577
  return actions.map((action, index) => {
575
- const { label, icon: actionIcon, iconAfter, children, className: actionClassName, ...pressableProps } = action;
578
+ const {
579
+ label,
580
+ icon: actionIcon,
581
+ iconAfter,
582
+ children,
583
+ className: actionClassName,
584
+ ...pressableProps
585
+ } = action;
576
586
  return /* @__PURE__ */ jsx(
577
587
  Pressable,
578
588
  {
@@ -588,8 +598,8 @@ function BannerFloatingOffer({
588
598
  index
589
599
  );
590
600
  });
591
- };
592
- const renderSeparator = () => {
601
+ }, [actions, actionsSlot]);
602
+ const separatorContent = useMemo(() => {
593
603
  if (separator) return separator;
594
604
  return /* @__PURE__ */ jsx(
595
605
  "svg",
@@ -600,11 +610,19 @@ function BannerFloatingOffer({
600
610
  children: /* @__PURE__ */ jsx("circle", { cx: 1, cy: 1, r: 1 })
601
611
  }
602
612
  );
603
- };
604
- const renderDismissIcon = () => {
613
+ }, [separator, separatorClassName]);
614
+ const dismissIconContent = useMemo(() => {
605
615
  if (dismissIcon) return dismissIcon;
606
616
  return /* @__PURE__ */ jsx(DynamicIcon, { name: "mynaui/x", size: 16 });
607
- };
617
+ }, [dismissIcon]);
618
+ const offerTitleContent = useMemo(() => {
619
+ if (!offerTitle) return null;
620
+ return typeof offerTitle === "string" ? /* @__PURE__ */ jsx("strong", { className: cn("font-semibold", offerTitleClassName), children: offerTitle }) : /* @__PURE__ */ jsx("span", { className: offerTitleClassName, children: offerTitle });
621
+ }, [offerTitle, offerTitleClassName]);
622
+ const offerDescriptionContent = useMemo(() => {
623
+ if (!offerDescription) return null;
624
+ return /* @__PURE__ */ jsx("span", { className: offerDescriptionClassName, children: offerDescription });
625
+ }, [offerDescription, offerDescriptionClassName]);
608
626
  if (!isVisible) {
609
627
  return null;
610
628
  }
@@ -617,13 +635,13 @@ function BannerFloatingOffer({
617
635
  ),
618
636
  children: /* @__PURE__ */ jsxs("div", { className: cn("pointer-events-auto flex items-center justify-between gap-x-6 bg-primary px-6 py-2.5 sm:rounded-xl sm:py-3 sm:pl-4 sm:pr-3.5", containerClassName), children: [
619
637
  /* @__PURE__ */ jsxs("p", { className: cn("text-sm leading-6 text-primary-foreground", textClassName), children: [
620
- offerTitle && (typeof offerTitle === "string" ? /* @__PURE__ */ jsx("strong", { className: cn("font-semibold", offerTitleClassName), children: offerTitle }) : /* @__PURE__ */ jsx("span", { className: offerTitleClassName, children: offerTitle })),
621
- renderSeparator(),
622
- offerDescription && (typeof offerDescription === "string" ? /* @__PURE__ */ jsx("span", { className: offerDescriptionClassName, children: offerDescription }) : /* @__PURE__ */ jsx("span", { className: offerDescriptionClassName, children: offerDescription }))
638
+ offerTitleContent,
639
+ offerTitleContent && offerDescriptionContent && separatorContent,
640
+ offerDescriptionContent
623
641
  ] }),
624
642
  /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2", actionsClassName), children: [
625
- renderActions(),
626
- dismissible && /* @__PURE__ */ jsxs(
643
+ actionsContent,
644
+ isDismissible && /* @__PURE__ */ jsxs(
627
645
  Pressable,
628
646
  {
629
647
  onClick: handleDismiss,
@@ -632,8 +650,8 @@ function BannerFloatingOffer({
632
650
  asButton: true,
633
651
  className: cn("size-8 text-primary-foreground hover:text-primary-foreground/80", dismissButtonClassName),
634
652
  children: [
635
- renderDismissIcon(),
636
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: dismissAriaLabel })
653
+ dismissIconContent,
654
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: dismissLabel })
637
655
  ]
638
656
  }
639
657
  )
@@ -556,14 +556,14 @@ function processSvgForCurrentColor(svg) {
556
556
  }
557
557
  function BannerGdprRights({
558
558
  icon,
559
- iconName = "mynaui/globe",
559
+ iconName,
560
560
  title,
561
561
  description,
562
562
  actions,
563
563
  actionsSlot,
564
564
  onDismiss,
565
565
  dismissIcon,
566
- dismissAriaLabel = "Dismiss banner",
566
+ dismissAriaLabel,
567
567
  className,
568
568
  containerClassName,
569
569
  contentClassName,
@@ -574,12 +574,14 @@ function BannerGdprRights({
574
574
  dismissButtonClassName
575
575
  }) {
576
576
  const [isVisible, setIsVisible] = React.useState(true);
577
- const handleDismiss = () => {
577
+ const dismissLabel = dismissAriaLabel ?? "Dismiss banner";
578
+ const handleDismiss = React.useCallback(() => {
578
579
  setIsVisible(false);
579
580
  onDismiss?.();
580
- };
581
- const renderIcon = () => {
581
+ }, [onDismiss]);
582
+ const iconContent = React.useMemo(() => {
582
583
  if (icon) return icon;
584
+ if (!iconName) return null;
583
585
  return /* @__PURE__ */ jsxRuntime.jsx(
584
586
  DynamicIcon,
585
587
  {
@@ -588,12 +590,19 @@ function BannerGdprRights({
588
590
  className: cn("text-muted-foreground mt-0.5 shrink-0", iconClassName)
589
591
  }
590
592
  );
591
- };
592
- const renderActions = () => {
593
+ }, [icon, iconName, iconClassName]);
594
+ const actionsContent = React.useMemo(() => {
593
595
  if (actionsSlot) return actionsSlot;
594
596
  if (!actions || actions.length === 0) return null;
595
597
  return actions.map((action, index) => {
596
- const { label, icon: actionIcon, iconAfter, children, className: actionClassName, ...pressableProps } = action;
598
+ const {
599
+ label,
600
+ icon: actionIcon,
601
+ iconAfter,
602
+ children,
603
+ className: actionClassName,
604
+ ...pressableProps
605
+ } = action;
597
606
  return /* @__PURE__ */ jsxRuntime.jsx(
598
607
  Pressable,
599
608
  {
@@ -608,11 +617,22 @@ function BannerGdprRights({
608
617
  index
609
618
  );
610
619
  });
611
- };
612
- const renderDismissIcon = () => {
620
+ }, [actions, actionsSlot]);
621
+ const dismissIconContent = React.useMemo(() => {
613
622
  if (dismissIcon) return dismissIcon;
614
623
  return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "mynaui/x", size: 16 });
615
- };
624
+ }, [dismissIcon]);
625
+ const titleContent = React.useMemo(() => {
626
+ if (!title) return null;
627
+ return typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("font-semibold text-sm", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: title });
628
+ }, [title, titleClassName]);
629
+ const descriptionContent = React.useMemo(() => {
630
+ if (!description && !actionsContent) return null;
631
+ return /* @__PURE__ */ jsxRuntime.jsxs("p", { className: cn("text-sm text-muted-foreground mt-1", descriptionClassName), children: [
632
+ description,
633
+ actionsContent && /* @__PURE__ */ jsxRuntime.jsx("span", { className: actionsClassName, children: actionsContent })
634
+ ] });
635
+ }, [description, actionsContent, descriptionClassName, actionsClassName]);
616
636
  if (!isVisible) {
617
637
  return null;
618
638
  }
@@ -625,13 +645,10 @@ function BannerGdprRights({
625
645
  ),
626
646
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-start justify-between gap-4 max-w-7xl mx-auto px-4 py-4", containerClassName), children: [
627
647
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-start gap-3", contentClassName), children: [
628
- renderIcon(),
648
+ iconContent,
629
649
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
630
- title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("font-semibold text-sm", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: title })),
631
- /* @__PURE__ */ jsxRuntime.jsxs("p", { className: cn("text-sm text-muted-foreground mt-1", descriptionClassName), children: [
632
- description,
633
- (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("span", { className: actionsClassName, children: renderActions() })
634
- ] })
650
+ titleContent,
651
+ descriptionContent
635
652
  ] })
636
653
  ] }),
637
654
  /* @__PURE__ */ jsxRuntime.jsxs(
@@ -643,8 +660,8 @@ function BannerGdprRights({
643
660
  asButton: true,
644
661
  className: cn("size-8", dismissButtonClassName),
645
662
  children: [
646
- renderDismissIcon(),
647
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: dismissAriaLabel })
663
+ dismissIconContent,
664
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: dismissLabel })
648
665
  ]
649
666
  }
650
667
  )
@@ -15,7 +15,6 @@ interface BannerGdprRightsProps {
15
15
  icon?: React.ReactNode;
16
16
  /**
17
17
  * Icon name for DynamicIcon (used if icon prop is not provided)
18
- * @default "mynaui/globe"
19
18
  */
20
19
  iconName?: string;
21
20
  /**
@@ -44,7 +43,6 @@ interface BannerGdprRightsProps {
44
43
  dismissIcon?: React.ReactNode;
45
44
  /**
46
45
  * ARIA label for dismiss button
47
- * @default "Dismiss banner"
48
46
  */
49
47
  dismissAriaLabel?: string;
50
48
  /**
@@ -81,11 +79,11 @@ interface BannerGdprRightsProps {
81
79
  dismissButtonClassName?: string;
82
80
  }
83
81
  /**
84
- * BannerGdprRights - A bottom-positioned GDPR privacy rights notice.
82
+ * BannerGdprRights - A bottom-positioned privacy rights notice.
85
83
  *
86
- * Features a fixed bottom position with globe icon, title, description, and manage data link.
84
+ * Features a fixed bottom position with icon, title, description, and optional action link.
87
85
  * Includes a dismiss button to close the banner. The banner is positioned at the bottom
88
- * of the viewport with a border-top styling. Ideal for GDPR compliance, data privacy notices,
86
+ * of the viewport with a border-top styling. Ideal for privacy notices, data policy updates,
89
87
  * and user rights information.
90
88
  *
91
89
  * @example
@@ -15,7 +15,6 @@ interface BannerGdprRightsProps {
15
15
  icon?: React.ReactNode;
16
16
  /**
17
17
  * Icon name for DynamicIcon (used if icon prop is not provided)
18
- * @default "mynaui/globe"
19
18
  */
20
19
  iconName?: string;
21
20
  /**
@@ -44,7 +43,6 @@ interface BannerGdprRightsProps {
44
43
  dismissIcon?: React.ReactNode;
45
44
  /**
46
45
  * ARIA label for dismiss button
47
- * @default "Dismiss banner"
48
46
  */
49
47
  dismissAriaLabel?: string;
50
48
  /**
@@ -81,11 +79,11 @@ interface BannerGdprRightsProps {
81
79
  dismissButtonClassName?: string;
82
80
  }
83
81
  /**
84
- * BannerGdprRights - A bottom-positioned GDPR privacy rights notice.
82
+ * BannerGdprRights - A bottom-positioned privacy rights notice.
85
83
  *
86
- * Features a fixed bottom position with globe icon, title, description, and manage data link.
84
+ * Features a fixed bottom position with icon, title, description, and optional action link.
87
85
  * Includes a dismiss button to close the banner. The banner is positioned at the bottom
88
- * of the viewport with a border-top styling. Ideal for GDPR compliance, data privacy notices,
86
+ * of the viewport with a border-top styling. Ideal for privacy notices, data policy updates,
89
87
  * and user rights information.
90
88
  *
91
89
  * @example