@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,6 +1,6 @@
1
1
  "use client";
2
2
  import * as React from 'react';
3
- import { useState } from 'react';
3
+ import { useState, 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';
@@ -535,14 +535,14 @@ function processSvgForCurrentColor(svg) {
535
535
  }
536
536
  function BannerGdprRights({
537
537
  icon,
538
- iconName = "mynaui/globe",
538
+ iconName,
539
539
  title,
540
540
  description,
541
541
  actions,
542
542
  actionsSlot,
543
543
  onDismiss,
544
544
  dismissIcon,
545
- dismissAriaLabel = "Dismiss banner",
545
+ dismissAriaLabel,
546
546
  className,
547
547
  containerClassName,
548
548
  contentClassName,
@@ -553,12 +553,14 @@ function BannerGdprRights({
553
553
  dismissButtonClassName
554
554
  }) {
555
555
  const [isVisible, setIsVisible] = useState(true);
556
- const handleDismiss = () => {
556
+ const dismissLabel = dismissAriaLabel ?? "Dismiss banner";
557
+ const handleDismiss = useCallback(() => {
557
558
  setIsVisible(false);
558
559
  onDismiss?.();
559
- };
560
- const renderIcon = () => {
560
+ }, [onDismiss]);
561
+ const iconContent = useMemo(() => {
561
562
  if (icon) return icon;
563
+ if (!iconName) return null;
562
564
  return /* @__PURE__ */ jsx(
563
565
  DynamicIcon,
564
566
  {
@@ -567,12 +569,19 @@ function BannerGdprRights({
567
569
  className: cn("text-muted-foreground mt-0.5 shrink-0", iconClassName)
568
570
  }
569
571
  );
570
- };
571
- const renderActions = () => {
572
+ }, [icon, iconName, iconClassName]);
573
+ const actionsContent = useMemo(() => {
572
574
  if (actionsSlot) return actionsSlot;
573
575
  if (!actions || actions.length === 0) return null;
574
576
  return actions.map((action, index) => {
575
- const { label, icon: actionIcon, iconAfter, children, className: actionClassName, ...pressableProps } = action;
577
+ const {
578
+ label,
579
+ icon: actionIcon,
580
+ iconAfter,
581
+ children,
582
+ className: actionClassName,
583
+ ...pressableProps
584
+ } = action;
576
585
  return /* @__PURE__ */ jsx(
577
586
  Pressable,
578
587
  {
@@ -587,11 +596,22 @@ function BannerGdprRights({
587
596
  index
588
597
  );
589
598
  });
590
- };
591
- const renderDismissIcon = () => {
599
+ }, [actions, actionsSlot]);
600
+ const dismissIconContent = useMemo(() => {
592
601
  if (dismissIcon) return dismissIcon;
593
602
  return /* @__PURE__ */ jsx(DynamicIcon, { name: "mynaui/x", size: 16 });
594
- };
603
+ }, [dismissIcon]);
604
+ const titleContent = useMemo(() => {
605
+ if (!title) return null;
606
+ return typeof title === "string" ? /* @__PURE__ */ jsx("h3", { className: cn("font-semibold text-sm", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: titleClassName, children: title });
607
+ }, [title, titleClassName]);
608
+ const descriptionContent = useMemo(() => {
609
+ if (!description && !actionsContent) return null;
610
+ return /* @__PURE__ */ jsxs("p", { className: cn("text-sm text-muted-foreground mt-1", descriptionClassName), children: [
611
+ description,
612
+ actionsContent && /* @__PURE__ */ jsx("span", { className: actionsClassName, children: actionsContent })
613
+ ] });
614
+ }, [description, actionsContent, descriptionClassName, actionsClassName]);
595
615
  if (!isVisible) {
596
616
  return null;
597
617
  }
@@ -604,13 +624,10 @@ function BannerGdprRights({
604
624
  ),
605
625
  children: /* @__PURE__ */ jsxs("div", { className: cn("flex items-start justify-between gap-4 max-w-7xl mx-auto px-4 py-4", containerClassName), children: [
606
626
  /* @__PURE__ */ jsxs("div", { className: cn("flex items-start gap-3", contentClassName), children: [
607
- renderIcon(),
627
+ iconContent,
608
628
  /* @__PURE__ */ jsxs("div", { children: [
609
- title && (typeof title === "string" ? /* @__PURE__ */ jsx("h3", { className: cn("font-semibold text-sm", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: titleClassName, children: title })),
610
- /* @__PURE__ */ jsxs("p", { className: cn("text-sm text-muted-foreground mt-1", descriptionClassName), children: [
611
- description,
612
- (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("span", { className: actionsClassName, children: renderActions() })
613
- ] })
629
+ titleContent,
630
+ descriptionContent
614
631
  ] })
615
632
  ] }),
616
633
  /* @__PURE__ */ jsxs(
@@ -622,8 +639,8 @@ function BannerGdprRights({
622
639
  asButton: true,
623
640
  className: cn("size-8", dismissButtonClassName),
624
641
  children: [
625
- renderDismissIcon(),
626
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: dismissAriaLabel })
642
+ dismissIconContent,
643
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: dismissLabel })
627
644
  ]
628
645
  }
629
646
  )
@@ -556,14 +556,14 @@ function processSvgForCurrentColor(svg) {
556
556
  }
557
557
  function BannerPrivacyNotice({
558
558
  icon,
559
- iconName = "mynaui/shield",
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 BannerPrivacyNotice({
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 BannerPrivacyNotice({
588
590
  className: cn("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,19 @@ function BannerPrivacyNotice({
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) return null;
631
+ return typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm text-muted-foreground mt-1", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-sm text-muted-foreground mt-1", descriptionClassName), children: description });
632
+ }, [description, descriptionClassName]);
616
633
  if (!isVisible) {
617
634
  return null;
618
635
  }
@@ -625,11 +642,11 @@ function BannerPrivacyNotice({
625
642
  ),
626
643
  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
644
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-start gap-4", contentClassName), children: [
628
- renderIcon(),
645
+ iconContent,
629
646
  /* @__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
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm text-muted-foreground mt-1", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-sm text-muted-foreground mt-1", descriptionClassName), children: description })),
632
- (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: actionsClassName, children: renderActions() })
647
+ titleContent,
648
+ descriptionContent,
649
+ (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: actionsClassName, children: actionsContent })
633
650
  ] })
634
651
  ] }),
635
652
  /* @__PURE__ */ jsxRuntime.jsxs(
@@ -641,8 +658,8 @@ function BannerPrivacyNotice({
641
658
  asButton: true,
642
659
  className: cn("size-8", dismissButtonClassName),
643
660
  children: [
644
- renderDismissIcon(),
645
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: dismissAriaLabel })
661
+ dismissIconContent,
662
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: dismissLabel })
646
663
  ]
647
664
  }
648
665
  )
@@ -15,7 +15,6 @@ interface BannerPrivacyNoticeProps {
15
15
  icon?: React.ReactNode;
16
16
  /**
17
17
  * Icon name for DynamicIcon (used if icon prop is not provided)
18
- * @default "mynaui/shield"
19
18
  */
20
19
  iconName?: string;
21
20
  /**
@@ -44,7 +43,6 @@ interface BannerPrivacyNoticeProps {
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
  /**
@@ -15,7 +15,6 @@ interface BannerPrivacyNoticeProps {
15
15
  icon?: React.ReactNode;
16
16
  /**
17
17
  * Icon name for DynamicIcon (used if icon prop is not provided)
18
- * @default "mynaui/shield"
19
18
  */
20
19
  iconName?: string;
21
20
  /**
@@ -44,7 +43,6 @@ interface BannerPrivacyNoticeProps {
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
  /**
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import * as React from 'react';
3
- import { useState } from 'react';
3
+ import { useState, 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';
@@ -535,14 +535,14 @@ function processSvgForCurrentColor(svg) {
535
535
  }
536
536
  function BannerPrivacyNotice({
537
537
  icon,
538
- iconName = "mynaui/shield",
538
+ iconName,
539
539
  title,
540
540
  description,
541
541
  actions,
542
542
  actionsSlot,
543
543
  onDismiss,
544
544
  dismissIcon,
545
- dismissAriaLabel = "Dismiss banner",
545
+ dismissAriaLabel,
546
546
  className,
547
547
  containerClassName,
548
548
  contentClassName,
@@ -553,12 +553,14 @@ function BannerPrivacyNotice({
553
553
  dismissButtonClassName
554
554
  }) {
555
555
  const [isVisible, setIsVisible] = useState(true);
556
- const handleDismiss = () => {
556
+ const dismissLabel = dismissAriaLabel ?? "Dismiss banner";
557
+ const handleDismiss = useCallback(() => {
557
558
  setIsVisible(false);
558
559
  onDismiss?.();
559
- };
560
- const renderIcon = () => {
560
+ }, [onDismiss]);
561
+ const iconContent = useMemo(() => {
561
562
  if (icon) return icon;
563
+ if (!iconName) return null;
562
564
  return /* @__PURE__ */ jsx(
563
565
  DynamicIcon,
564
566
  {
@@ -567,12 +569,19 @@ function BannerPrivacyNotice({
567
569
  className: cn("mt-0.5 shrink-0", iconClassName)
568
570
  }
569
571
  );
570
- };
571
- const renderActions = () => {
572
+ }, [icon, iconName, iconClassName]);
573
+ const actionsContent = useMemo(() => {
572
574
  if (actionsSlot) return actionsSlot;
573
575
  if (!actions || actions.length === 0) return null;
574
576
  return actions.map((action, index) => {
575
- const { label, icon: actionIcon, iconAfter, children, className: actionClassName, ...pressableProps } = action;
577
+ const {
578
+ label,
579
+ icon: actionIcon,
580
+ iconAfter,
581
+ children,
582
+ className: actionClassName,
583
+ ...pressableProps
584
+ } = action;
576
585
  return /* @__PURE__ */ jsx(
577
586
  Pressable,
578
587
  {
@@ -587,11 +596,19 @@ function BannerPrivacyNotice({
587
596
  index
588
597
  );
589
598
  });
590
- };
591
- const renderDismissIcon = () => {
599
+ }, [actions, actionsSlot]);
600
+ const dismissIconContent = useMemo(() => {
592
601
  if (dismissIcon) return dismissIcon;
593
602
  return /* @__PURE__ */ jsx(DynamicIcon, { name: "mynaui/x", size: 16 });
594
- };
603
+ }, [dismissIcon]);
604
+ const titleContent = useMemo(() => {
605
+ if (!title) return null;
606
+ return typeof title === "string" ? /* @__PURE__ */ jsx("h3", { className: cn("font-semibold text-sm", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: titleClassName, children: title });
607
+ }, [title, titleClassName]);
608
+ const descriptionContent = useMemo(() => {
609
+ if (!description) return null;
610
+ return typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm text-muted-foreground mt-1", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("text-sm text-muted-foreground mt-1", descriptionClassName), children: description });
611
+ }, [description, descriptionClassName]);
595
612
  if (!isVisible) {
596
613
  return null;
597
614
  }
@@ -604,11 +621,11 @@ function BannerPrivacyNotice({
604
621
  ),
605
622
  children: /* @__PURE__ */ jsxs("div", { className: cn("flex items-start justify-between gap-4 max-w-7xl mx-auto px-4 py-4", containerClassName), children: [
606
623
  /* @__PURE__ */ jsxs("div", { className: cn("flex items-start gap-4", contentClassName), children: [
607
- renderIcon(),
624
+ iconContent,
608
625
  /* @__PURE__ */ jsxs("div", { children: [
609
- title && (typeof title === "string" ? /* @__PURE__ */ jsx("h3", { className: cn("font-semibold text-sm", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: titleClassName, children: title })),
610
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm text-muted-foreground mt-1", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("text-sm text-muted-foreground mt-1", descriptionClassName), children: description })),
611
- (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("div", { className: actionsClassName, children: renderActions() })
626
+ titleContent,
627
+ descriptionContent,
628
+ (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("div", { className: actionsClassName, children: actionsContent })
612
629
  ] })
613
630
  ] }),
614
631
  /* @__PURE__ */ jsxs(
@@ -620,8 +637,8 @@ function BannerPrivacyNotice({
620
637
  asButton: true,
621
638
  className: cn("size-8", dismissButtonClassName),
622
639
  children: [
623
- renderDismissIcon(),
624
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: dismissAriaLabel })
640
+ dismissIconContent,
641
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: dismissLabel })
625
642
  ]
626
643
  }
627
644
  )
@@ -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-promo-cta.tsx
31
31
  function cn(...inputs) {
32
32
  return tailwindMerge.twMerge(clsx.clsx(inputs));
33
33
  }
@@ -451,7 +451,7 @@ var Pressable = React__namespace.forwardRef(
451
451
  Pressable.displayName = "Pressable";
452
452
  function BannerPromoCta({
453
453
  message,
454
- discount = "Up to 50% off",
454
+ discount,
455
455
  separator,
456
456
  actions,
457
457
  actionsSlot,
@@ -463,11 +463,18 @@ function BannerPromoCta({
463
463
  discountClassName,
464
464
  actionsClassName
465
465
  }) {
466
- const renderActions = () => {
466
+ const actionsContent = React.useMemo(() => {
467
467
  if (actionsSlot) return actionsSlot;
468
468
  if (!actions || actions.length === 0) return null;
469
469
  return actions.map((action, index) => {
470
- const { label, icon: actionIcon, iconAfter, children, className: actionClassName, ...pressableProps } = action;
470
+ const {
471
+ label,
472
+ icon: actionIcon,
473
+ iconAfter,
474
+ children,
475
+ className: actionClassName,
476
+ ...pressableProps
477
+ } = action;
471
478
  return /* @__PURE__ */ jsxRuntime.jsx(
472
479
  Pressable,
473
480
  {
@@ -482,20 +489,28 @@ function BannerPromoCta({
482
489
  index
483
490
  );
484
491
  });
485
- };
486
- const renderSeparator = () => {
492
+ }, [actions, actionsSlot]);
493
+ const separatorContent = React.useMemo(() => {
487
494
  if (separator) return separator;
488
495
  return /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("hidden sm:inline", separatorClassName), children: "\xB7" });
489
- };
496
+ }, [separator, separatorClassName]);
497
+ const messageContent = React.useMemo(() => {
498
+ if (!message) return null;
499
+ return typeof message === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-semibold", messageClassName), children: message }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: messageClassName, children: message });
500
+ }, [message, messageClassName]);
501
+ const discountContent = React.useMemo(() => {
502
+ if (!discount) return null;
503
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { className: discountClassName, children: discount });
504
+ }, [discount, discountClassName]);
490
505
  return /* @__PURE__ */ jsxRuntime.jsx(
491
506
  "div",
492
507
  {
493
508
  className: cn("w-full bg-primary text-primary-foreground", className),
494
509
  children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("container py-2.5", containerClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-wrap items-center justify-center gap-x-4 gap-y-1 text-center text-sm", contentClassName), children: [
495
- message && (typeof message === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-semibold", messageClassName), children: message }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: messageClassName, children: message })),
496
- renderSeparator(),
497
- discount && (typeof discount === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: discountClassName, children: discount }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: discountClassName, children: discount })),
498
- (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("span", { className: actionsClassName, children: renderActions() })
510
+ messageContent,
511
+ messageContent && discountContent && separatorContent,
512
+ discountContent,
513
+ (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("span", { className: actionsClassName, children: actionsContent })
499
514
  ] }) })
500
515
  }
501
516
  );
@@ -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-promo-cta.tsx
9
10
  function cn(...inputs) {
10
11
  return twMerge(clsx(inputs));
11
12
  }
@@ -429,7 +430,7 @@ var Pressable = React.forwardRef(
429
430
  Pressable.displayName = "Pressable";
430
431
  function BannerPromoCta({
431
432
  message,
432
- discount = "Up to 50% off",
433
+ discount,
433
434
  separator,
434
435
  actions,
435
436
  actionsSlot,
@@ -441,11 +442,18 @@ function BannerPromoCta({
441
442
  discountClassName,
442
443
  actionsClassName
443
444
  }) {
444
- const renderActions = () => {
445
+ const actionsContent = useMemo(() => {
445
446
  if (actionsSlot) return actionsSlot;
446
447
  if (!actions || actions.length === 0) return null;
447
448
  return actions.map((action, index) => {
448
- const { label, icon: actionIcon, iconAfter, children, className: actionClassName, ...pressableProps } = action;
449
+ const {
450
+ label,
451
+ icon: actionIcon,
452
+ iconAfter,
453
+ children,
454
+ className: actionClassName,
455
+ ...pressableProps
456
+ } = action;
449
457
  return /* @__PURE__ */ jsx(
450
458
  Pressable,
451
459
  {
@@ -460,20 +468,28 @@ function BannerPromoCta({
460
468
  index
461
469
  );
462
470
  });
463
- };
464
- const renderSeparator = () => {
471
+ }, [actions, actionsSlot]);
472
+ const separatorContent = useMemo(() => {
465
473
  if (separator) return separator;
466
474
  return /* @__PURE__ */ jsx("span", { className: cn("hidden sm:inline", separatorClassName), children: "\xB7" });
467
- };
475
+ }, [separator, separatorClassName]);
476
+ const messageContent = useMemo(() => {
477
+ if (!message) return null;
478
+ return typeof message === "string" ? /* @__PURE__ */ jsx("span", { className: cn("font-semibold", messageClassName), children: message }) : /* @__PURE__ */ jsx("span", { className: messageClassName, children: message });
479
+ }, [message, messageClassName]);
480
+ const discountContent = useMemo(() => {
481
+ if (!discount) return null;
482
+ return /* @__PURE__ */ jsx("span", { className: discountClassName, children: discount });
483
+ }, [discount, discountClassName]);
468
484
  return /* @__PURE__ */ jsx(
469
485
  "div",
470
486
  {
471
487
  className: cn("w-full bg-primary text-primary-foreground", className),
472
488
  children: /* @__PURE__ */ jsx("div", { className: cn("container py-2.5", containerClassName), children: /* @__PURE__ */ jsxs("div", { className: cn("flex flex-wrap items-center justify-center gap-x-4 gap-y-1 text-center text-sm", contentClassName), children: [
473
- message && (typeof message === "string" ? /* @__PURE__ */ jsx("span", { className: cn("font-semibold", messageClassName), children: message }) : /* @__PURE__ */ jsx("span", { className: messageClassName, children: message })),
474
- renderSeparator(),
475
- discount && (typeof discount === "string" ? /* @__PURE__ */ jsx("span", { className: discountClassName, children: discount }) : /* @__PURE__ */ jsx("span", { className: discountClassName, children: discount })),
476
- (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("span", { className: actionsClassName, children: renderActions() })
489
+ messageContent,
490
+ messageContent && discountContent && separatorContent,
491
+ discountContent,
492
+ (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("span", { className: actionsClassName, children: actionsContent })
477
493
  ] }) })
478
494
  }
479
495
  );
@@ -556,13 +556,13 @@ function processSvgForCurrentColor(svg) {
556
556
  }
557
557
  function BannerSocialFollow({
558
558
  icon,
559
- iconName = "mynaui/users",
559
+ iconName,
560
560
  message,
561
561
  actions,
562
562
  actionsSlot,
563
563
  onDismiss,
564
564
  dismissIcon,
565
- dismissAriaLabel = "Dismiss banner",
565
+ dismissAriaLabel,
566
566
  className,
567
567
  containerClassName,
568
568
  iconClassName,
@@ -571,19 +571,35 @@ function BannerSocialFollow({
571
571
  dismissButtonClassName
572
572
  }) {
573
573
  const [isVisible, setIsVisible] = React.useState(true);
574
- const handleDismiss = () => {
574
+ const dismissLabel = dismissAriaLabel ?? "Dismiss banner";
575
+ const handleDismiss = React.useCallback(() => {
575
576
  setIsVisible(false);
576
577
  onDismiss?.();
577
- };
578
- const renderIcon = () => {
578
+ }, [onDismiss]);
579
+ const iconContent = React.useMemo(() => {
579
580
  if (icon) return icon;
580
- return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: iconName, size: 20, className: cn("shrink-0", iconClassName) });
581
- };
582
- const renderActions = () => {
581
+ if (!iconName) return null;
582
+ return /* @__PURE__ */ jsxRuntime.jsx(
583
+ DynamicIcon,
584
+ {
585
+ name: iconName,
586
+ size: 20,
587
+ className: cn("shrink-0", iconClassName)
588
+ }
589
+ );
590
+ }, [icon, iconName, iconClassName]);
591
+ const actionsContent = React.useMemo(() => {
583
592
  if (actionsSlot) return actionsSlot;
584
593
  if (!actions || actions.length === 0) return null;
585
594
  return actions.map((action, index) => {
586
- const { label, icon: actionIcon, iconAfter, children, className: actionClassName, ...pressableProps } = action;
595
+ const {
596
+ label,
597
+ icon: actionIcon,
598
+ iconAfter,
599
+ children,
600
+ className: actionClassName,
601
+ ...pressableProps
602
+ } = action;
587
603
  return /* @__PURE__ */ jsxRuntime.jsx(
588
604
  Pressable,
589
605
  {
@@ -599,11 +615,15 @@ function BannerSocialFollow({
599
615
  index
600
616
  );
601
617
  });
602
- };
603
- const renderDismissIcon = () => {
618
+ }, [actions, actionsSlot]);
619
+ const dismissIconContent = React.useMemo(() => {
604
620
  if (dismissIcon) return dismissIcon;
605
621
  return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "mynaui/x", size: 16 });
606
- };
622
+ }, [dismissIcon]);
623
+ const messageContent = React.useMemo(() => {
624
+ if (!message) return null;
625
+ return typeof message === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-medium", messageClassName), children: message }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: messageClassName, children: message });
626
+ }, [message, messageClassName]);
607
627
  if (!isVisible) {
608
628
  return null;
609
629
  }
@@ -615,9 +635,9 @@ function BannerSocialFollow({
615
635
  className
616
636
  ),
617
637
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("max-w-7xl mx-auto px-3 py-3 flex items-center justify-center text-left md:text-center gap-2", containerClassName), children: [
618
- renderIcon(),
619
- message && (typeof message === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-medium", messageClassName), children: message }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: messageClassName, children: message })),
620
- (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("span", { className: actionsClassName, children: renderActions() }),
638
+ iconContent,
639
+ messageContent,
640
+ (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("span", { className: actionsClassName, children: actionsContent }),
621
641
  /* @__PURE__ */ jsxRuntime.jsxs(
622
642
  Pressable,
623
643
  {
@@ -627,8 +647,8 @@ function BannerSocialFollow({
627
647
  asButton: true,
628
648
  className: cn("size-8", dismissButtonClassName),
629
649
  children: [
630
- renderDismissIcon(),
631
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: dismissAriaLabel })
650
+ dismissIconContent,
651
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: dismissLabel })
632
652
  ]
633
653
  }
634
654
  )
@@ -15,7 +15,6 @@ interface BannerSocialFollowProps {
15
15
  icon?: React.ReactNode;
16
16
  /**
17
17
  * Icon name for DynamicIcon (used if icon prop is not provided)
18
- * @default "mynaui/users"
19
18
  */
20
19
  iconName?: string;
21
20
  /**
@@ -40,7 +39,6 @@ interface BannerSocialFollowProps {
40
39
  dismissIcon?: React.ReactNode;
41
40
  /**
42
41
  * ARIA label for dismiss button
43
- * @default "Dismiss banner"
44
42
  */
45
43
  dismissAriaLabel?: string;
46
44
  /**