stackable-components 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/README.md +295 -0
  2. package/dist/components/ArticleDetailsPage/ArticleDetails.d.ts +10 -0
  3. package/dist/components/ArticleDetailsPage/index.d.ts +1 -0
  4. package/dist/components/ArticleListingPage/ArticleListing.d.ts +26 -0
  5. package/dist/components/ArticleListingPage/index.d.ts +1 -0
  6. package/dist/components/Auth/AuthSplitScreen.d.ts +73 -0
  7. package/dist/components/Auth/index.d.ts +2 -0
  8. package/dist/components/Awards/AwardsSection.d.ts +53 -0
  9. package/dist/components/Awards/index.d.ts +2 -0
  10. package/dist/components/Banner/Banner.d.ts +32 -0
  11. package/dist/components/Banner/BannerCallout.d.ts +19 -0
  12. package/dist/components/Banner/BannerFullWidth.d.ts +22 -0
  13. package/dist/components/Banner/BannerLight.d.ts +31 -0
  14. package/dist/components/Banner/CommunityBanner.d.ts +33 -0
  15. package/dist/components/Banner/CookieConsentBanner.d.ts +40 -0
  16. package/dist/components/Banner/CountdownBanner.d.ts +27 -0
  17. package/dist/components/Banner/PromoBanner.d.ts +50 -0
  18. package/dist/components/Banner/index.d.ts +14 -0
  19. package/dist/components/Button/PrimaryButton.d.ts +32 -0
  20. package/dist/components/Button/ToggleSwitch.d.ts +24 -0
  21. package/dist/components/Button/index.d.ts +3 -0
  22. package/dist/components/Cards/CardAccordion.d.ts +38 -0
  23. package/dist/components/Cards/FeatureCard.d.ts +11 -0
  24. package/dist/components/Cards/FlipCard.d.ts +37 -0
  25. package/dist/components/Cards/ProfileCard.d.ts +39 -0
  26. package/dist/components/Cards/ResourceCard.d.ts +29 -0
  27. package/dist/components/Cards/index.d.ts +9 -0
  28. package/dist/components/Carousels/CircleImageCarousel.d.ts +19 -0
  29. package/dist/components/Carousels/GalleryCarousel.d.ts +75 -0
  30. package/dist/components/Carousels/ImageVideoCarousel.d.ts +24 -0
  31. package/dist/components/Carousels/VerticalProductCarousel.d.ts +40 -0
  32. package/dist/components/Carousels/index.d.ts +7 -0
  33. package/dist/components/EmptyState/EmptyState.d.ts +21 -0
  34. package/dist/components/EmptyState/index.d.ts +2 -0
  35. package/dist/components/FAQ/FAQ.d.ts +23 -0
  36. package/dist/components/FAQ/FaqCategorized.d.ts +35 -0
  37. package/dist/components/FAQ/index.d.ts +4 -0
  38. package/dist/components/FeatureBenefit/FeatureBenefit.d.ts +20 -0
  39. package/dist/components/FeatureBenefit/FeatureBenefitDark.d.ts +18 -0
  40. package/dist/components/FeatureBenefit/FeatureBenefitRenderer.d.ts +26 -0
  41. package/dist/components/FeatureBenefit/FeatureBenefitStrip.d.ts +15 -0
  42. package/dist/components/FeatureBenefit/FeatureBenefitWithImage.d.ts +27 -0
  43. package/dist/components/FeatureBenefit/StandardBenefit.d.ts +29 -0
  44. package/dist/components/FeatureBenefit/index.d.ts +12 -0
  45. package/dist/components/FeatureComparison/FeatureComparisonCards.d.ts +27 -0
  46. package/dist/components/FeatureComparison/FeatureComparisonTable.d.ts +35 -0
  47. package/dist/components/FeatureComparison/FeatureComparisonVs.d.ts +35 -0
  48. package/dist/components/FeatureComparison/index.d.ts +6 -0
  49. package/dist/components/FeatureShowcase/StickyCardStack.d.ts +36 -0
  50. package/dist/components/FeatureShowcase/StickyScrollFeature.d.ts +27 -0
  51. package/dist/components/FeatureShowcase/index.d.ts +2 -0
  52. package/dist/components/Footers/FooterMultiColumn.d.ts +23 -0
  53. package/dist/components/Footers/FooterSimple.d.ts +18 -0
  54. package/dist/components/Footers/index.d.ts +2 -0
  55. package/dist/components/Forms/ContactForm.d.ts +8 -0
  56. package/dist/components/Forms/ContactFormSplit.d.ts +53 -0
  57. package/dist/components/Forms/NewsletterSignup.d.ts +35 -0
  58. package/dist/components/Forms/index.d.ts +4 -0
  59. package/dist/components/Grids/BentoGrid.d.ts +34 -0
  60. package/dist/components/Grids/CategoryGrid.d.ts +53 -0
  61. package/dist/components/Grids/FlipCardGrid.d.ts +64 -0
  62. package/dist/components/Grids/HexTileGrid.d.ts +39 -0
  63. package/dist/components/Grids/IndexSection.d.ts +37 -0
  64. package/dist/components/Grids/index.d.ts +10 -0
  65. package/dist/components/HeroBanners/HeroBanner.d.ts +35 -0
  66. package/dist/components/HeroBanners/HeroBannerClassic.d.ts +79 -0
  67. package/dist/components/HeroBanners/SplitHeroBanner.d.ts +29 -0
  68. package/dist/components/HeroBanners/SpotlightHero.d.ts +30 -0
  69. package/dist/components/HeroBanners/VideoDemoHero.d.ts +33 -0
  70. package/dist/components/HeroBanners/index.d.ts +8 -0
  71. package/dist/components/ImageGrid/ImageGrid.d.ts +25 -0
  72. package/dist/components/ImageGrid/ImageGridDynamic.d.ts +18 -0
  73. package/dist/components/ImageGrid/index.d.ts +2 -0
  74. package/dist/components/LogoCloud/LogoCloud.d.ts +33 -0
  75. package/dist/components/LogoCloud/index.d.ts +2 -0
  76. package/dist/components/Navigation/BreadcrumbNavigation.d.ts +34 -0
  77. package/dist/components/Navigation/ExtendedNavigation.d.ts +31 -0
  78. package/dist/components/Navigation/FloatingDock.d.ts +45 -0
  79. package/dist/components/Navigation/NavigationBar.d.ts +13 -0
  80. package/dist/components/Navigation/Sidebar.d.ts +29 -0
  81. package/dist/components/Navigation/index.d.ts +8 -0
  82. package/dist/components/PDP/ProductDetails.d.ts +43 -0
  83. package/dist/components/PDP/index.d.ts +1 -0
  84. package/dist/components/PLP/ProductListing.d.ts +15 -0
  85. package/dist/components/PLP/index.d.ts +1 -0
  86. package/dist/components/Pricing/Pricing.d.ts +48 -0
  87. package/dist/components/Pricing/PricingSpreadCard.d.ts +32 -0
  88. package/dist/components/Pricing/index.d.ts +4 -0
  89. package/dist/components/Process/ProcessStep.d.ts +51 -0
  90. package/dist/components/Process/index.d.ts +2 -0
  91. package/dist/components/ProductCard/DarkCard.d.ts +31 -0
  92. package/dist/components/ProductCard/LargeCard.d.ts +11 -0
  93. package/dist/components/ProductCard/ProductBanner.d.ts +28 -0
  94. package/dist/components/ProductCard/index.d.ts +61 -0
  95. package/dist/components/SectionIntroduction/SectionIntroduction.d.ts +27 -0
  96. package/dist/components/SectionIntroduction/SectionIntroductionTwoColumn.d.ts +18 -0
  97. package/dist/components/SectionIntroduction/index.d.ts +4 -0
  98. package/dist/components/Sidebar/Sidebar.d.ts +26 -0
  99. package/dist/components/Sidebar/index.d.ts +2 -0
  100. package/dist/components/Sliders/ProductSlider.d.ts +23 -0
  101. package/dist/components/Sliders/index.d.ts +2 -0
  102. package/dist/components/Social/SocialLinks.d.ts +36 -0
  103. package/dist/components/Social/SocialPostEmbed.d.ts +34 -0
  104. package/dist/components/Social/index.d.ts +4 -0
  105. package/dist/components/Statistics/StatCounterRow.d.ts +34 -0
  106. package/dist/components/Statistics/index.d.ts +2 -0
  107. package/dist/components/Tabs/Tabs.d.ts +35 -0
  108. package/dist/components/Tabs/index.d.ts +2 -0
  109. package/dist/components/Team/TeamBanner.d.ts +32 -0
  110. package/dist/components/Team/index.d.ts +2 -0
  111. package/dist/components/Testimonial/CardStack.d.ts +31 -0
  112. package/dist/components/Testimonial/RatingSummary.d.ts +20 -0
  113. package/dist/components/Testimonial/Reviews.d.ts +55 -0
  114. package/dist/components/Testimonial/Testimonial.d.ts +29 -0
  115. package/dist/components/Testimonial/index.d.ts +8 -0
  116. package/dist/components/TextCTASection/JustifiedTextCTA.d.ts +11 -0
  117. package/dist/components/TextCTASection/TextCTA.d.ts +25 -0
  118. package/dist/components/TextCTASection/index.d.ts +1 -0
  119. package/dist/components/Timeline/TimelineColumn.d.ts +23 -0
  120. package/dist/components/Timeline/TimelineHorizontal.d.ts +28 -0
  121. package/dist/components/Timeline/TimelineYearBlocks.d.ts +55 -0
  122. package/dist/components/Timeline/VerticalTimeline.d.ts +21 -0
  123. package/dist/components/Timeline/index.d.ts +8 -0
  124. package/dist/components/Typography/Typography.d.ts +14 -0
  125. package/dist/components/Typography/index.d.ts +2 -0
  126. package/dist/components/VideoSection/VideoSection.d.ts +38 -0
  127. package/dist/components/VideoSection/index.d.ts +2 -0
  128. package/dist/index.d.ts +153 -0
  129. package/dist/index.esm.js +14074 -0
  130. package/dist/index.esm.js.map +1 -0
  131. package/dist/index.js +14168 -0
  132. package/dist/index.js.map +1 -0
  133. package/dist/styles.css +5901 -0
  134. package/dist/theme/ThemeProvider.d.ts +13 -0
  135. package/dist/theme/index.d.ts +2 -0
  136. package/dist/theme/themeConfig.d.ts +8 -0
  137. package/dist/types.d.ts +60 -0
  138. package/dist/utils/index.d.ts +10 -0
  139. package/package.json +62 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../src/theme/themeConfig.ts","../src/theme/ThemeProvider.tsx","../src/utils/index.ts","../src/components/Typography/Typography.tsx","../src/components/Auth/AuthSplitScreen.tsx","../src/components/Awards/AwardsSection.tsx","../src/components/Banner/Banner.tsx","../src/components/Banner/BannerLight.tsx","../src/components/Banner/BannerCallout.tsx","../src/components/Banner/CommunityBanner.tsx","../src/components/Banner/CountdownBanner.tsx","../src/components/Banner/CookieConsentBanner.tsx","../src/components/Banner/PromoBanner.tsx","../src/components/HeroBanners/HeroBanner.tsx","../src/components/HeroBanners/SplitHeroBanner.tsx","../src/components/HeroBanners/HeroBannerClassic.tsx","../src/components/HeroBanners/SpotlightHero.tsx","../src/components/HeroBanners/VideoDemoHero.tsx","../src/components/Sliders/ProductSlider.tsx","../src/components/Carousels/ImageVideoCarousel.tsx","../src/components/Carousels/CircleImageCarousel.tsx","../src/components/Carousels/VerticalProductCarousel.tsx","../src/components/Carousels/GalleryCarousel.tsx","../../node_modules/tslib/tslib.es6.js","../src/components/ProductCard/DarkCard.tsx","../src/components/ProductCard/LargeCard.tsx","../src/components/ProductCard/ProductBanner.tsx","../src/components/ProductCard/index.tsx","../src/components/PLP/ProductListing.tsx","../../node_modules/next/node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../../node_modules/next/dist/shared/lib/utils/warn-once.js","../../node_modules/next/dist/shared/lib/image-blur-svg.js","../../node_modules/next/dist/shared/lib/image-config.js","../../node_modules/next/dist/shared/lib/get-img-props.js","../../node_modules/next/node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs","../../node_modules/next/dist/shared/lib/side-effect.js","../../node_modules/next/dist/shared/lib/amp-context.shared-runtime.js","../../node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.js","../../node_modules/next/dist/shared/lib/amp-mode.js","../../node_modules/next/dist/shared/lib/head.js","../../node_modules/next/dist/shared/lib/image-config-context.shared-runtime.js","../../node_modules/next/dist/shared/lib/router-context.shared-runtime.js","../../node_modules/next/dist/compiled/picomatch/index.js","../../node_modules/next/dist/shared/lib/match-local-pattern.js","../../node_modules/next/dist/shared/lib/match-remote-pattern.js","../../node_modules/next/dist/shared/lib/image-loader.js","../../node_modules/next/dist/client/use-merged-ref.js","../../node_modules/next/dist/client/image-component.js","../../node_modules/next/dist/shared/lib/image-external.js","../../node_modules/next/image.js","../src/components/Cards/FeatureCard.tsx","../src/components/Cards/ResourceCard.tsx","../src/components/Cards/ProfileCard.tsx","../src/components/Cards/FlipCard.tsx","../src/components/Cards/CardAccordion.tsx","../src/components/Grids/BentoGrid.tsx","../src/components/Grids/IndexSection.tsx","../src/components/Grids/HexTileGrid.tsx","../src/components/Grids/CategoryGrid.tsx","../src/components/Grids/FlipCardGrid.tsx","../src/components/ImageGrid/ImageGrid.tsx","../src/components/ImageGrid/ImageGridDynamic.tsx","../src/components/Testimonial/Testimonial.tsx","../src/components/Testimonial/RatingSummary.tsx","../src/components/Testimonial/CardStack.tsx","../src/components/Testimonial/Reviews.tsx","../src/components/LogoCloud/LogoCloud.tsx","../src/components/FAQ/FAQ.tsx","../src/components/FAQ/FaqCategorized.tsx","../src/components/EmptyState/EmptyState.tsx","../src/components/Pricing/Pricing.tsx","../src/components/Pricing/PricingSpreadCard.tsx","../src/components/Statistics/StatCounterRow.tsx","../src/components/Forms/ContactForm.tsx","../src/components/Forms/NewsletterSignup.tsx","../src/components/Forms/ContactFormSplit.tsx","../src/components/Navigation/NavigationBar.tsx","../src/components/Navigation/ExtendedNavigation.tsx","../src/components/Navigation/BreadcrumbNavigation.tsx","../src/components/Navigation/Sidebar.tsx","../src/components/Navigation/FloatingDock.tsx","../src/components/Footers/FooterSimple.tsx","../src/components/Footers/FooterMultiColumn.tsx","../src/components/TextCTASection/TextCTA.tsx","../src/components/TextCTASection/JustifiedTextCTA.tsx","../src/components/Button/PrimaryButton.tsx","../src/components/Button/ToggleSwitch.tsx","../src/components/PDP/ProductDetails.tsx","../src/components/ArticleDetailsPage/ArticleDetails.tsx","../node_modules/date-fns/constants.js","../node_modules/date-fns/constructFrom.js","../node_modules/date-fns/toDate.js","../node_modules/date-fns/_lib/defaultOptions.js","../node_modules/date-fns/startOfWeek.js","../node_modules/date-fns/startOfISOWeek.js","../node_modules/date-fns/getISOWeekYear.js","../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js","../node_modules/date-fns/_lib/normalizeDates.js","../node_modules/date-fns/startOfDay.js","../node_modules/date-fns/differenceInCalendarDays.js","../node_modules/date-fns/startOfISOWeekYear.js","../node_modules/date-fns/isDate.js","../node_modules/date-fns/isValid.js","../node_modules/date-fns/startOfYear.js","../node_modules/date-fns/locale/en-US/_lib/formatDistance.js","../node_modules/date-fns/locale/_lib/buildFormatLongFn.js","../node_modules/date-fns/locale/en-US/_lib/formatLong.js","../node_modules/date-fns/locale/en-US/_lib/formatRelative.js","../node_modules/date-fns/locale/_lib/buildLocalizeFn.js","../node_modules/date-fns/locale/en-US/_lib/localize.js","../node_modules/date-fns/locale/_lib/buildMatchFn.js","../node_modules/date-fns/locale/_lib/buildMatchPatternFn.js","../node_modules/date-fns/locale/en-US/_lib/match.js","../node_modules/date-fns/locale/en-US.js","../node_modules/date-fns/getDayOfYear.js","../node_modules/date-fns/getISOWeek.js","../node_modules/date-fns/getWeekYear.js","../node_modules/date-fns/startOfWeekYear.js","../node_modules/date-fns/getWeek.js","../node_modules/date-fns/_lib/addLeadingZeros.js","../node_modules/date-fns/_lib/format/lightFormatters.js","../node_modules/date-fns/_lib/format/formatters.js","../node_modules/date-fns/_lib/format/longFormatters.js","../node_modules/date-fns/_lib/protectedTokens.js","../node_modules/date-fns/format.js","../node_modules/date-fns/parseISO.js","../src/components/ArticleListingPage/ArticleListing.tsx","../src/components/Tabs/Tabs.tsx","../src/components/SectionIntroduction/SectionIntroduction.tsx","../src/components/SectionIntroduction/SectionIntroductionTwoColumn.tsx","../src/components/VideoSection/VideoSection.tsx","../src/components/FeatureBenefit/FeatureBenefitStrip.tsx","../src/components/FeatureBenefit/FeatureBenefit.tsx","../src/components/FeatureBenefit/FeatureBenefitDark.tsx","../src/components/FeatureBenefit/FeatureBenefitWithImage.tsx","../src/components/FeatureBenefit/FeatureBenefitRenderer.tsx","../src/components/FeatureBenefit/StandardBenefit.tsx","../src/components/FeatureShowcase/StickyScrollFeature.tsx","../src/components/Timeline/VerticalTimeline.tsx","../src/components/Timeline/TimelineHorizontal.tsx","../src/components/Timeline/TimelineColumn.tsx","../src/components/Timeline/TimelineYearBlocks.tsx","../src/components/FeatureComparison/FeatureComparisonTable.tsx","../src/components/FeatureComparison/FeatureComparisonVs.tsx","../src/components/FeatureComparison/FeatureComparisonCards.tsx","../src/components/Team/TeamBanner.tsx","../src/components/Social/SocialPostEmbed.tsx","../src/components/Social/SocialLinks.tsx","../src/components/Process/ProcessStep.tsx"],"sourcesContent":["import type { StackablesTheme } from '../types';\n\n/**\n * Maps theme object keys to CSS variable names.\n * Used by ThemeProvider to inject design tokens.\n */\nexport const THEME_VAR_MAP: Record<keyof StackablesTheme, string> = {\n primary: '--stackables-primary',\n primaryHover: '--stackables-primary-hover',\n primaryForeground: '--stackables-primary-foreground',\n containerWidth: '--stackables-container-width',\n fontFamily: '--stackables-font-family',\n fontSizeBtn: '--stackables-font-size-btn',\n fontWeightBtn: '--stackables-font-weight-btn',\n fontWeightOutline: '--stackables-font-weight-outline',\n btnPaddingY: '--stackables-btn-padding-y',\n btnPaddingX: '--stackables-btn-padding-x',\n btnBorderRadius: '--stackables-btn-border-radius',\n btnFocusRing: '--stackables-btn-focus-ring',\n linkBtnLineHeight: '--stackables-link-btn-line-height',\n linkBtnArrowSize: '--stackables-link-btn-arrow-size',\n linkBtnArrowSpacing: '--stackables-link-btn-arrow-spacing',\n};\n\n/** Default theme values (match styles.css :root) */\nexport const defaultTheme: StackablesTheme = {\n primary: '#715cdd',\n primaryHover: 'rgba(113, 92, 228, 0.7)',\n primaryForeground: '#fff',\n containerWidth: '1440px',\n fontFamily: '\"Inter\", sans-serif',\n fontSizeBtn: '14px',\n fontWeightBtn: '700',\n fontWeightOutline: '400',\n btnPaddingY: '12px',\n btnPaddingX: '28px',\n btnBorderRadius: '2px',\n btnFocusRing: 'rgba(13, 110, 253, 0.25)',\n linkBtnLineHeight: '22px',\n linkBtnArrowSize: '26px',\n linkBtnArrowSpacing: '5px',\n};\n","import React from 'react';\nimport type { StackablesTheme } from '../types';\nimport { THEME_VAR_MAP, defaultTheme } from './themeConfig';\n\nexport interface ThemeProviderProps {\n theme?: StackablesTheme;\n className?: string;\n children: React.ReactNode;\n}\n\nfunction buildThemeStyles(theme: StackablesTheme | undefined): React.CSSProperties {\n if (!theme || typeof theme !== 'object') return {};\n const vars: Record<string, string> = {};\n for (const [key, cssVar] of Object.entries(THEME_VAR_MAP)) {\n const val = theme[key as keyof StackablesTheme];\n if (val != null) {\n vars[cssVar] = val;\n }\n }\n return vars as React.CSSProperties;\n}\n\nexport function ThemeProvider({ theme, className, children }: ThemeProviderProps) {\n const style = buildThemeStyles(theme);\n const hasVars = Object.keys(style).length > 0;\n\n return (\n <div\n className={className}\n style={hasVars ? style : undefined}\n >\n {children}\n </div>\n );\n}\n\nThemeProvider.defaultTheme = defaultTheme;\nThemeProvider.THEME_VAR_MAP = THEME_VAR_MAP;\n\nexport default ThemeProvider;\n","import type { StackableColorValue } from '../types';\n\n/**\n * Normalize Contentstack custom-field color JSON (color picker extension) or a plain CSS color string.\n * Extensions typically persist `{ hex: \"#RRGGBB\" }`; delivery may also expose a string.\n */\nexport function resolveStackableColor(value: StackableColorValue): string {\n if (value == null || value === '') return ''\n if (typeof value === 'string') {\n return value.trim()\n }\n if (typeof value === 'object') {\n const raw =\n value.hex ??\n value.color ??\n value.value ??\n value.background ??\n value.backgroundColor\n if (raw != null && String(raw).trim()) return String(raw).trim()\n }\n return ''\n}\n\n/** True when a color field resolves to a usable CSS color (filled button / swatch). */\nexport function hasStackableColorFill(value: StackableColorValue): boolean {\n return Boolean(resolveStackableColor(value))\n}\n\n/** For dynamic hex + opacity: Tailwind cannot generate `text-[${hex}]/50` at build time (JIT only sees static strings). */\nexport function hexToRgba(hex: string, alpha: number): string {\n if (!hex || typeof hex !== 'string') return `rgba(33, 33, 33, ${alpha})`\n let h = hex.trim().replace('#', '')\n if (h.length === 3) h = h.split('').map(c => c + c).join('')\n if (h.length !== 6) return `rgba(33, 33, 33, ${alpha})`\n const n = parseInt(h, 16)\n const r = (n >> 16) & 255\n const g = (n >> 8) & 255\n const b = n & 255\n return `rgba(${r}, ${g}, ${b}, ${alpha})`\n}\n","import React from 'react';\n\nexport interface TypographyFont {\n family?: string;\n size?: number;\n}\n\nexport interface TypographyProps {\n heading_font?: TypographyFont;\n paragraph_font?: TypographyFont;\n button_font?: TypographyFont;\n link_font?: TypographyFont;\n className?: string;\n}\n\ninterface FontCardProps {\n label: string;\n font: TypographyFont;\n preview: React.ReactNode;\n accent: string;\n}\n\nfunction FontCard({ label, font, preview, accent }: FontCardProps) {\n const family = font?.family || 'sans-serif';\n const size = font?.size || 16;\n\n return (\n <div style={{\n background: '#fff',\n border: '1px solid #e5e7eb',\n borderRadius: 12,\n padding: '24px 24px 20px',\n display: 'flex',\n flexDirection: 'column',\n gap: 16,\n }}>\n {/* Header */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 10 }}>\n <div style={{\n width: 32, height: 32, borderRadius: 8,\n background: accent, display: 'flex', alignItems: 'center', justifyContent: 'center',\n fontSize: 14, fontWeight: 700, color: '#fff',\n }}>\n Aa\n </div>\n <span style={{ fontSize: 13, fontWeight: 600, color: '#111827' }}>{label}</span>\n </div>\n\n {/* Preview */}\n <div style={{\n background: '#f9fafb',\n borderRadius: 8,\n padding: '16px 18px',\n minHeight: 80,\n display: 'flex',\n alignItems: 'center',\n }}>\n <div style={{ fontFamily: family, fontSize: size, color: '#111827', lineHeight: 1.4 }}>\n {preview}\n </div>\n </div>\n\n {/* Meta */}\n <div style={{ display: 'flex', gap: 8 }}>\n <span style={{\n fontSize: 11, color: '#6b7280', background: '#f3f4f6',\n borderRadius: 6, padding: '3px 8px', fontFamily: 'monospace',\n }}>\n {family}\n </span>\n <span style={{\n fontSize: 11, color: '#6b7280', background: '#f3f4f6',\n borderRadius: 6, padding: '3px 8px', fontFamily: 'monospace',\n }}>\n {size}px\n </span>\n </div>\n </div>\n );\n}\n\nexport function Typography({\n heading_font = { family: 'Inter, sans-serif', size: 32 },\n paragraph_font = { family: 'Inter, sans-serif', size: 16 },\n button_font = { family: 'Inter, sans-serif', size: 14 },\n link_font = { family: 'Inter, sans-serif', size: 14 },\n className,\n}: TypographyProps) {\n return (\n <div\n className={className}\n style={{ background: '#f8fafc', borderRadius: 16, padding: 24 }}\n >\n <div style={{ marginBottom: 20 }}>\n <h3 style={{ margin: 0, fontSize: 16, fontWeight: 700, color: '#111827' }}>Typography</h3>\n <p style={{ margin: '4px 0 0', fontSize: 13, color: '#6b7280' }}>\n Global font settings — applied across all components in your project.\n </p>\n </div>\n\n <div style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 16 }}>\n <FontCard\n label=\"Heading Font\"\n font={heading_font}\n accent=\"#6366f1\"\n preview={\n <span>The quick brown fox<br />jumps over the lazy dog</span>\n }\n />\n <FontCard\n label=\"Paragraph Font\"\n font={paragraph_font}\n accent=\"#0ea5e9\"\n preview={\n <span>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n Sed do eiusmod tempor incididunt ut labore.\n </span>\n }\n />\n <FontCard\n label=\"Button Font\"\n font={button_font}\n accent=\"#f59e0b\"\n preview={\n <span style={{\n display: 'inline-block',\n background: '#111827',\n color: '#fff',\n padding: '10px 20px',\n borderRadius: 6,\n letterSpacing: '0.05em',\n textTransform: 'uppercase',\n }}>\n Get Started\n </span>\n }\n />\n <FontCard\n label=\"Link Font\"\n font={link_font}\n accent=\"#10b981\"\n preview={\n <span>\n <span style={{ color: '#6366f1', textDecoration: 'underline', cursor: 'pointer' }}>\n Learn more about our services\n </span>\n {' '}→\n </span>\n }\n />\n </div>\n </div>\n );\n}\n\nexport default Typography;\n","/* eslint-disable @next/next/no-img-element */\nimport React from 'react';\nimport { resolveStackableColor, hexToRgba } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface AuthSplitScreenLink {\n title?: string;\n href?: string;\n}\n\nexport interface AuthSplitScreenSocialProvider {\n /** Preset provider — ships a real brand mark. Ignored when `icon_image` is set. */\n provider?: 'google' | 'facebook' | 'apple' | 'github' | 'microsoft' | string;\n /** Uploaded asset URL, or a Contentstack asset object — overrides the preset mark. */\n icon_image?: string | { url?: string };\n}\n\nexport interface AuthSplitScreenBadge {\n label?: string;\n}\n\nexport interface AuthSplitScreenLogo {\n logo_image?: string | { url?: string };\n logo_text?: string;\n}\n\nexport interface AuthSplitScreenTestimonial {\n content?: string;\n name?: string;\n /** Rendered after the name, e.g. \"Head of Product\". `company` is bolded within it if both are set. */\n designation?: string;\n company?: string;\n}\n\nexport interface AuthSplitScreenSubmitData {\n mode: 'sign_in' | 'sign_up';\n email: string;\n password: string;\n}\n\nexport interface AuthSplitScreenProps {\n mode?: 'sign_in' | 'sign_up' | string;\n logo?: AuthSplitScreenLogo;\n heading?: string;\n subheading?: string;\n email_label?: string;\n email_placeholder?: string;\n password_label?: string;\n password_placeholder?: string;\n submit_button_text?: string;\n divider_text?: string;\n social_providers?: AuthSplitScreenSocialProvider[];\n /** Shown before `footer_link`, e.g. \"Already have an account?\" */\n footer_prompt?: string;\n /** The toggle link between sign-in and sign-up — title + destination URL. */\n footer_link?: AuthSplitScreenLink;\n image?: string | { url?: string };\n image_alt?: string;\n /** Small pills over the image, e.g. \"Product Company\". */\n badges?: AuthSplitScreenBadge[];\n testimonial?: AuthSplitScreenTestimonial;\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n button_color?: StackableColorValue;\n button_text_color?: StackableColorValue;\n accent_color?: StackableColorValue;\n /** Fires on submit instead of a real network call — this component has no\n * backend of its own. Wire it to whatever auth the host app actually uses. */\n onSubmit?: (data: AuthSplitScreenSubmitData) => void;\n /** Fires when a social button is clicked, with the same `provider` key set on\n * that entry (or `'custom'` for an `icon_image` override with none set). */\n onSocialSignIn?: (provider: string) => void;\n className?: string;\n}\n\nconst MODE_COPY: Record<string, { heading: string; submit: string; prompt: string; linkTitle: string }> = {\n sign_in: { heading: 'Welcome back!', submit: 'Sign in', prompt: 'Don’t have an account?', linkTitle: 'Sign up' },\n sign_up: { heading: 'Create an account', submit: 'Create account', prompt: 'Already have an account?', linkTitle: 'Sign in' },\n};\n\nconst DEFAULT_BADGES: AuthSplitScreenBadge[] = [{ label: 'Product Company' }, { label: 'Cloud Management' }];\n\nconst DEFAULT_TESTIMONIAL: AuthSplitScreenTestimonial = {\n content: 'Stackables have completely changed how we work. What used to take hours every week is now fully automated.',\n name: 'Gina Clinton',\n designation: 'Head of Product',\n company: 'Acme Inc.',\n};\n\nconst DEFAULT_SOCIAL_PROVIDERS: AuthSplitScreenSocialProvider[] = [\n { provider: 'google' },\n { provider: 'facebook' },\n { provider: 'apple' },\n];\n\nfunction GoogleMark() {\n return (\n <svg viewBox=\"0 0 24 24\" className=\"h-4 w-4\" aria-hidden=\"true\">\n <path fill=\"#4285F4\" d=\"M23.52 12.27c0-.85-.08-1.67-.22-2.45H12v4.64h6.47a5.53 5.53 0 0 1-2.4 3.63v3h3.87c2.27-2.09 3.58-5.17 3.58-8.82z\" />\n <path fill=\"#34A853\" d=\"M12 24c3.24 0 5.95-1.07 7.94-2.91l-3.87-3c-1.08.72-2.45 1.15-4.07 1.15-3.13 0-5.78-2.11-6.73-4.96H1.27v3.11A12 12 0 0 0 12 24z\" />\n <path fill=\"#FBBC05\" d=\"M5.27 14.28A7.2 7.2 0 0 1 4.89 12c0-.79.14-1.56.38-2.28V6.61H1.27A12 12 0 0 0 0 12c0 1.94.47 3.77 1.27 5.39l4-3.11z\" />\n <path fill=\"#EA4335\" d=\"M12 4.75c1.77 0 3.35.61 4.6 1.8l3.42-3.42C17.95 1.19 15.24 0 12 0 7.31 0 3.26 2.69 1.27 6.61l4 3.11C6.22 6.86 8.87 4.75 12 4.75z\" />\n </svg>\n );\n}\n\nfunction FacebookMark() {\n return (\n <svg viewBox=\"0 0 24 24\" className=\"h-4 w-4\" fill=\"#1877F2\" aria-hidden=\"true\">\n <path d=\"M24 12.07C24 5.4 18.63 0 12 0S0 5.4 0 12.07C0 18.1 4.39 23.1 10.13 24v-8.44H7.08v-3.49h3.05V9.41c0-3.02 1.79-4.7 4.53-4.7 1.31 0 2.68.24 2.68.24v2.97h-1.51c-1.49 0-1.95.93-1.95 1.89v2.26h3.32l-.53 3.49h-2.79V24C19.61 23.1 24 18.1 24 12.07z\" />\n </svg>\n );\n}\n\nfunction AppleMark({ color }: { color: string }) {\n return (\n <svg viewBox=\"0 0 24 24\" className=\"h-4 w-4\" fill={color} aria-hidden=\"true\">\n <path d=\"M16.36 1.43c0 1.14-.42 2.2-1.24 3.05-.95.98-2.24 1.55-3.44 1.44-.14-1.11.42-2.28 1.2-3.06.85-.86 2.33-1.5 3.48-1.43zm3.5 16.42c-.5 1.14-.73 1.65-1.37 2.65-.9 1.4-2.16 3.14-3.73 3.15-1.4.02-1.76-.91-3.66-.9-1.9.01-2.3.92-3.7.9-1.57-.02-2.76-1.59-3.66-2.99-2.5-3.87-2.77-8.42-1.22-10.84 1.1-1.72 2.83-2.73 4.46-2.73 1.66 0 2.7.91 4.07.91 1.33 0 2.13-.92 4.05-.92 1.45 0 2.99.79 4.08 2.16-3.59 1.97-3.01 7.08.68 8.61z\" />\n </svg>\n );\n}\n\nfunction GithubMark({ color }: { color: string }) {\n return (\n <svg viewBox=\"0 0 24 24\" className=\"h-4 w-4\" fill={color} aria-hidden=\"true\">\n <path d=\"M12 .3a12 12 0 0 0-3.79 23.39c.6.11.82-.26.82-.58v-2.02c-3.34.73-4.04-1.61-4.04-1.61-.55-1.39-1.34-1.76-1.34-1.76-1.09-.75.08-.73.08-.73 1.21.08 1.84 1.24 1.84 1.24 1.07 1.84 2.81 1.3 3.5 1 .11-.78.42-1.31.76-1.61-2.67-.3-5.47-1.33-5.47-5.93 0-1.31.47-2.38 1.24-3.22-.12-.3-.54-1.53.12-3.18 0 0 1.01-.32 3.3 1.23a11.5 11.5 0 0 1 6 0c2.29-1.55 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.77.84 1.24 1.91 1.24 3.22 0 4.61-2.81 5.63-5.49 5.92.43.37.81 1.1.81 2.22v3.29c0 .32.22.7.83.58A12 12 0 0 0 12 .3z\" />\n </svg>\n );\n}\n\nfunction MicrosoftMark() {\n return (\n <svg viewBox=\"0 0 24 24\" className=\"h-4 w-4\" aria-hidden=\"true\">\n <rect x=\"1\" y=\"1\" width=\"10\" height=\"10\" fill=\"#F25022\" />\n <rect x=\"13\" y=\"1\" width=\"10\" height=\"10\" fill=\"#7FBA00\" />\n <rect x=\"1\" y=\"13\" width=\"10\" height=\"10\" fill=\"#00A4EF\" />\n <rect x=\"13\" y=\"13\" width=\"10\" height=\"10\" fill=\"#FFB900\" />\n </svg>\n );\n}\n\nconst PROVIDER_LABELS: Record<string, string> = {\n google: 'Google',\n facebook: 'Facebook',\n apple: 'Apple',\n github: 'GitHub',\n microsoft: 'Microsoft',\n};\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveAsset(asset: string | { url?: string } | undefined): string {\n if (!asset) return '';\n if (typeof asset === 'string') return asset.trim();\n return typeof asset.url === 'string' ? asset.url.trim() : '';\n}\n\nexport function AuthSplitScreen({\n mode = 'sign_in',\n logo,\n heading,\n subheading = 'We empower developers and technical teams to create, simulate, and manage AI-driven workflows visually',\n email_label = 'Email',\n email_placeholder = 'youremail@yourdomain.com',\n password_label = 'Password',\n password_placeholder = 'Create a password',\n submit_button_text,\n divider_text = 'or',\n social_providers = DEFAULT_SOCIAL_PROVIDERS,\n footer_prompt,\n footer_link,\n image = 'https://images.unsplash.com/photo-1487017159836-4e23ece2e4cf?w=1200&fit=crop',\n image_alt = '',\n badges = DEFAULT_BADGES,\n testimonial = DEFAULT_TESTIMONIAL,\n background_color,\n text_color,\n button_color,\n button_text_color,\n accent_color,\n onSubmit,\n onSocialSignIn,\n className = '',\n}: AuthSplitScreenProps) {\n const copy = MODE_COPY[mode] ?? MODE_COPY.sign_in;\n const resolvedHeading = heading || copy.heading;\n const resolvedSubmitText = submit_button_text || copy.submit;\n const resolvedFooterPrompt = footer_prompt || copy.prompt;\n const resolvedFooterLinkTitle = footer_link?.title || copy.linkTitle;\n\n const resolvedBg = resolveStackableColor(background_color) || '#0a0a0a';\n const resolvedText = resolveStackableColor(text_color) || '#fafafa';\n const resolvedButtonBg = resolveStackableColor(button_color) || '#27272a';\n const resolvedButtonText = resolveStackableColor(button_text_color) || '#fafafa';\n const resolvedAccent = resolveStackableColor(accent_color) || '#f97316';\n\n const mutedTextStyle: React.CSSProperties = { color: hexToRgba(resolvedText, 0.6) };\n const inputBg = hexToRgba(resolvedText, 0.06);\n const inputBorder = hexToRgba(resolvedText, 0.14);\n\n const logoSrc = resolveAsset(logo?.logo_image);\n const logoText = logo?.logo_text || '';\n const imageSrc = resolveAsset(image);\n const visibleBadges = (badges ?? []).filter((b) => b?.label?.trim());\n const visibleProviders = (social_providers ?? []).filter((p) => p?.provider || resolveAsset(p?.icon_image));\n const hasTestimonial = Boolean(testimonial?.content?.trim());\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n if (!onSubmit) return;\n const form = new FormData(e.currentTarget);\n onSubmit({\n mode: (mode === 'sign_up' ? 'sign_up' : 'sign_in') as 'sign_in' | 'sign_up',\n email: String(form.get('email') ?? ''),\n password: String(form.get('password') ?? ''),\n });\n };\n\n const renderProviderMark = (provider: AuthSplitScreenSocialProvider) => {\n const uploadedSrc = resolveAsset(provider.icon_image);\n if (uploadedSrc) {\n return <img src={uploadedSrc} alt=\"\" className=\"h-4 w-4 object-contain\" />;\n }\n switch (provider.provider) {\n case 'google':\n return <GoogleMark />;\n case 'facebook':\n return <FacebookMark />;\n case 'apple':\n return <AppleMark color={resolvedText} />;\n case 'github':\n return <GithubMark color={resolvedText} />;\n case 'microsoft':\n return <MicrosoftMark />;\n default:\n return null;\n }\n };\n\n return (\n <section\n className={`grid grid-cols-1 md:grid-cols-2 ${className}`.trim()}\n style={{ backgroundColor: resolvedBg, color: resolvedText }}\n >\n {/* Form column */}\n <div className=\"flex items-center justify-center px-6 py-16 sm:px-12 lg:px-20\">\n <div className=\"w-full max-w-sm\">\n {(logoSrc || logoText) && (\n <div className=\"mb-8 flex items-center gap-2\">\n {logoSrc ? (\n <img src={logoSrc} alt=\"\" className=\"h-8 w-auto object-contain\" />\n ) : (\n <span className=\"text-lg font-extrabold tracking-tight\">{logoText}</span>\n )}\n </div>\n )}\n\n {resolvedHeading && <h1 className=\"text-3xl font-bold tracking-tight sm:text-4xl\">{resolvedHeading}</h1>}\n {subheading && (\n <p className=\"mt-3 text-sm leading-relaxed\" style={mutedTextStyle}>\n {subheading}\n </p>\n )}\n\n <form className=\"mt-8 flex flex-col gap-5\" onSubmit={handleSubmit}>\n <div className=\"flex flex-col gap-2\">\n {email_label && <label htmlFor=\"asx-email\" className=\"text-sm font-medium\">{email_label}</label>}\n <input\n id=\"asx-email\"\n name=\"email\"\n type=\"email\"\n autoComplete=\"email\"\n placeholder={email_placeholder}\n className=\"rounded-lg border px-4 py-2.5 text-sm outline-none transition-colors focus:ring-2\"\n style={{\n backgroundColor: inputBg,\n borderColor: inputBorder,\n color: resolvedText,\n }}\n />\n </div>\n\n <div className=\"flex flex-col gap-2\">\n {password_label && <label htmlFor=\"asx-password\" className=\"text-sm font-medium\">{password_label}</label>}\n <input\n id=\"asx-password\"\n name=\"password\"\n type=\"password\"\n autoComplete={mode === 'sign_up' ? 'new-password' : 'current-password'}\n placeholder={password_placeholder}\n className=\"rounded-lg border px-4 py-2.5 text-sm outline-none transition-colors focus:ring-2\"\n style={{\n backgroundColor: inputBg,\n borderColor: inputBorder,\n color: resolvedText,\n }}\n />\n </div>\n\n <button\n type=\"submit\"\n className=\"mt-1 rounded-lg px-4 py-2.5 text-sm font-semibold transition-transform duration-150 hover:scale-[1.01] active:scale-95\"\n style={{ backgroundColor: resolvedButtonBg, color: resolvedButtonText }}\n >\n {resolvedSubmitText}\n </button>\n </form>\n\n {visibleProviders.length > 0 && (\n <>\n {divider_text && (\n <div className=\"my-6 flex items-center gap-3\">\n <span className=\"h-px flex-1\" style={{ backgroundColor: inputBorder }} />\n <span className=\"text-xs\" style={mutedTextStyle}>{divider_text}</span>\n <span className=\"h-px flex-1\" style={{ backgroundColor: inputBorder }} />\n </div>\n )}\n <div className=\"flex gap-3\">\n {visibleProviders.map((p, i) => {\n const label = PROVIDER_LABELS[p.provider as string] || 'account';\n return (\n <button\n key={i}\n type=\"button\"\n aria-label={`Continue with ${label}`}\n onClick={() => onSocialSignIn?.(p.provider || 'custom')}\n className=\"flex flex-1 items-center justify-center rounded-lg border py-2.5 transition-colors hover:brightness-125\"\n style={{ backgroundColor: inputBg, borderColor: inputBorder }}\n >\n {renderProviderMark(p)}\n </button>\n );\n })}\n </div>\n </>\n )}\n\n {(resolvedFooterPrompt || footer_link?.href) && (\n <p className=\"mt-8 text-center text-sm\" style={mutedTextStyle}>\n {resolvedFooterPrompt}{' '}\n {footer_link?.href && (\n <a href={footer_link.href} className=\"font-semibold no-underline hover:underline\" style={{ color: resolvedAccent }}>\n {resolvedFooterLinkTitle}\n </a>\n )}\n </p>\n )}\n </div>\n </div>\n\n {/* Image column — hidden on narrow screens, the form alone is a complete page there. */}\n <div className=\"relative hidden overflow-hidden md:block\">\n {imageSrc && (\n // eslint-disable-next-line @next/next/no-img-element\n <img src={imageSrc} alt={image_alt} className=\"absolute inset-0 h-full w-full object-cover\" />\n )}\n <div className=\"absolute inset-0 bg-gradient-to-t from-black/80 via-black/10 to-black/30\" />\n\n {visibleBadges.length > 0 && (\n <div className=\"absolute left-6 top-6 flex flex-wrap gap-2 sm:left-10 sm:top-10\">\n {visibleBadges.map((badge, i) => (\n <span\n key={i}\n className=\"rounded-full px-3 py-1 text-xs font-medium text-white backdrop-blur-md\"\n style={{ backgroundColor: 'rgba(255,255,255,0.12)' }}\n >\n {badge.label}\n </span>\n ))}\n </div>\n )}\n\n {hasTestimonial && (\n <div\n className=\"absolute bottom-6 left-6 right-6 rounded-2xl p-6 backdrop-blur-md sm:bottom-10 sm:left-10 sm:right-10\"\n style={{ backgroundColor: 'rgba(10,10,15,0.55)' }}\n >\n <p className=\"text-base leading-relaxed text-white sm:text-lg\">{testimonial!.content}</p>\n {(testimonial!.name || testimonial!.designation) && (\n <div className=\"mt-4\">\n {testimonial!.name && <p className=\"text-sm font-semibold text-white\">{testimonial!.name}</p>}\n {testimonial!.designation && (\n <p className=\"text-sm text-white/60\">\n {testimonial!.designation}\n {testimonial!.company && <>, <span className=\"font-semibold text-white/80\">{testimonial!.company}</span></>}\n </p>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n </section>\n );\n}\n\nexport default AuthSplitScreen;\n","/* eslint-disable @next/next/no-img-element */\nimport React, { useEffect, useRef, useState } from 'react';\nimport { resolveStackableColor, hexToRgba } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\n/** Native Contentstack link field: `{ title, href }`. */\nexport interface AwardsSectionLink {\n title?: string;\n href?: string;\n}\n\nexport interface AwardsSectionItem {\n /** Small line above the award name, e.g. `Digital Marketing`. */\n category?: string;\n /** The award itself, e.g. `Digital Impact Award`. */\n title?: string;\n /**\n * Shown in the accent colour after the name. Free text, never parsed — `2022`,\n * `FY24` and `Q1 2025` all render as given.\n */\n year?: string;\n link?: AwardsSectionLink;\n}\n\nexport interface AwardsSectionProps {\n eyebrow_text?: string;\n /**\n * Small mark beside the eyebrow. Asset URL or a Contentstack asset object.\n * Without one, a built-in dot cluster is drawn in the accent colour.\n */\n eyebrow_icon?: string | { url?: string };\n heading?: string;\n awards?: AwardsSectionItem[];\n /**\n * Large decorative emblem beside the list — a crest, wreath or medal. Without\n * one, a ringed star is drawn instead.\n */\n emblem_image?: string | { url?: string };\n emblem_alt?: string;\n emblem_position?: 'Left' | 'Right' | string;\n /** Hairline between award rows. */\n show_dividers?: boolean;\n /** Circular arrow button on each row that has a link. */\n show_row_arrows?: boolean;\n /** Diagonal hatching along the top and bottom edges. */\n show_hatch?: boolean;\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n /** The year, the eyebrow mark, and the emblem's tint. */\n accent_color?: StackableColorValue;\n className?: string;\n}\n\nconst DEFAULT_BG = '#2c3d2e';\nconst DEFAULT_TEXT = '#ffffff';\nconst DEFAULT_ACCENT = '#a3e635';\n\n/** Height of the hatched band at each edge. */\nconst HATCH_BAND_PX = 46;\n\n/**\n * Below this the emblem is dropped and the list takes the full width. The\n * emblem is decorative, and at narrow widths it would push the awards — the\n * actual content — below the fold.\n */\nconst STACK_BELOW_PX = 820;\n\nfunction resolveImage(image: string | { url?: string } | undefined): string {\n if (!image) return '';\n if (typeof image === 'string') return image.trim();\n return typeof image.url === 'string' ? image.url.trim() : '';\n}\n\nexport function AwardsSection({\n eyebrow_text = '',\n eyebrow_icon,\n heading = '',\n awards = [],\n emblem_image,\n emblem_alt = '',\n emblem_position = 'Left',\n show_dividers = true,\n show_row_arrows = true,\n show_hatch = true,\n background_color,\n text_color,\n accent_color,\n className = '',\n}: AwardsSectionProps) {\n const bodyRef = useRef<HTMLDivElement>(null);\n const [bodyWidth, setBodyWidth] = useState(0);\n\n // Measured rather than a CSS media query, so it tracks the component's own box\n // — the storybook preview simulates width with a fixed-px wrapper that media\n // queries can't see. Same approach as BentoGrid and HexTileGrid.\n useEffect(() => {\n const el = bodyRef.current;\n if (!el) return;\n const ro = new ResizeObserver(([entry]) => setBodyWidth(entry.contentRect.width));\n ro.observe(el);\n return () => ro.disconnect();\n }, []);\n\n const bg = resolveStackableColor(background_color) || DEFAULT_BG;\n const text = resolveStackableColor(text_color) || DEFAULT_TEXT;\n const accent = resolveStackableColor(accent_color) || DEFAULT_ACCENT;\n\n const visible = (awards ?? []).filter(\n (a) => Boolean(a?.title?.trim()) || Boolean(a?.category?.trim()),\n );\n\n // Before the first measurement, render the full layout so the server-rendered\n // markup matches what a wide container settles on.\n const stacked = bodyWidth > 0 && bodyWidth < STACK_BELOW_PX;\n const emblemSrc = resolveImage(emblem_image);\n const iconSrc = resolveImage(eyebrow_icon);\n const emblemFirst = emblem_position !== 'Right';\n\n const hatch = `repeating-linear-gradient(115deg, ${hexToRgba(text, 0.07)} 0 2px, transparent 2px 15px)`;\n\n const emblem = (\n <div className=\"flex flex-1 items-center justify-center\">\n {emblemSrc ? (\n <img\n src={emblemSrc}\n alt={emblem_alt}\n className=\"h-auto w-full max-w-[26rem] object-contain\"\n style={{ opacity: 0.55 }}\n loading=\"lazy\"\n />\n ) : (\n // Stands in for a crest so the panel isn't lopsided before artwork is\n // uploaded. Decorative, so it is hidden from assistive tech.\n <span\n aria-hidden\n className=\"flex items-center justify-center rounded-full\"\n style={{\n width: 'min(22rem, 100%)',\n aspectRatio: '1',\n border: `2px solid ${hexToRgba(accent, 0.22)}`,\n color: hexToRgba(accent, 0.22),\n fontSize: 'clamp(5rem, 12vw, 9rem)',\n lineHeight: 1,\n }}\n >\n &#9733;\n </span>\n )}\n </div>\n );\n\n const list = (\n <div className=\"flex-1\">\n {visible.length === 0 ? (\n <p className=\"text-sm\" style={{ color: hexToRgba(text, 0.6) }}>\n No awards added yet.\n </p>\n ) : (\n <ul className=\"m-0 list-none p-0\">\n {visible.map((item, i) => {\n const href = item.link?.href?.trim();\n const row = (\n <div className=\"flex items-end gap-4 py-5\">\n <span className=\"min-w-0 flex-1\">\n {item.category && (\n <span className=\"block text-[15px] leading-snug\" style={{ color: hexToRgba(text, 0.72) }}>\n {item.category}\n </span>\n )}\n {/* The name and year share a baseline, with the year set\n smaller — hence baseline alignment rather than centre. */}\n <span className=\"mt-1.5 flex flex-wrap items-baseline gap-x-3\">\n {item.title && (\n <span className=\"text-xl font-bold tracking-tight sm:text-[1.4rem]\" style={{ color: text }}>\n {item.title}\n </span>\n )}\n {item.year && (\n <span className=\"text-[13px] font-medium\" style={{ color: accent }}>\n / {item.year}\n </span>\n )}\n </span>\n </span>\n\n {show_row_arrows && href && (\n <span\n className=\"flex size-11 shrink-0 items-center justify-center rounded-full text-lg transition-opacity duration-200 group-hover:opacity-80\"\n style={{ backgroundColor: hexToRgba(text, 0.12), color: text }}\n >\n <span aria-hidden>&#8599;</span>\n </span>\n )}\n </div>\n );\n\n return (\n <li\n key={`${item.title}-${i}`}\n style={\n show_dividers && i > 0\n ? { borderTop: `1px solid ${hexToRgba(text, 0.16)}` }\n : undefined\n }\n >\n {href ? (\n <a\n href={href}\n title={item.link?.title || item.title}\n className=\"group block no-underline\"\n >\n {row}\n </a>\n ) : (\n row\n )}\n </li>\n );\n })}\n </ul>\n )}\n </div>\n );\n\n return (\n <section className={`relative ${className}`.trim()} style={{ backgroundColor: bg }}>\n {show_hatch && (\n <>\n <span\n aria-hidden\n className=\"pointer-events-none absolute inset-x-0 top-0\"\n style={{ height: HATCH_BAND_PX, backgroundImage: hatch }}\n />\n <span\n aria-hidden\n className=\"pointer-events-none absolute inset-x-0 bottom-0\"\n style={{ height: HATCH_BAND_PX, backgroundImage: hatch }}\n />\n </>\n )}\n\n <div className=\"component-container relative mx-auto px-6 py-16 lg:py-24\">\n {/* ── Eyebrow ────────────────────────────────────────────────────── */}\n {eyebrow_text && (\n <div className=\"mb-6 flex items-center gap-3\">\n {iconSrc ? (\n <img src={iconSrc} alt=\"\" className=\"size-6 shrink-0 object-contain\" />\n ) : (\n // Three overlapping dots, echoing a compact logo mark.\n <span aria-hidden className=\"flex shrink-0 items-center\">\n <span className=\"block size-4 rounded-full\" style={{ backgroundColor: accent }} />\n <span\n className=\"-ml-1.5 block size-4 rounded-full\"\n style={{ backgroundColor: hexToRgba(text, 0.92) }}\n />\n <span\n className=\"-ml-1.5 block size-4 rounded-full\"\n style={{ backgroundColor: hexToRgba(text, 0.55) }}\n />\n </span>\n )}\n <span className=\"text-[15px] font-medium\" style={{ color: text }}>\n {eyebrow_text}\n </span>\n </div>\n )}\n\n {heading && (\n <h2\n className=\"m-0 max-w-xl text-3xl font-bold leading-[1.12] tracking-tight sm:text-4xl lg:text-[2.9rem]\"\n style={{ color: text }}\n >\n {heading}\n </h2>\n )}\n\n {/* ── Emblem and list ────────────────────────────────────────────── */}\n <div\n ref={bodyRef}\n className={`mt-12 flex w-full ${stacked ? 'flex-col' : emblemFirst ? 'flex-row' : 'flex-row-reverse'} items-center gap-10`}\n >\n {/* Dropped rather than shrunk when stacked: it is decorative, and it\n would otherwise push the awards themselves off the screen. */}\n {!stacked && emblem}\n {list}\n </div>\n </div>\n </section>\n );\n}\n\nexport default AwardsSection;\n","import React from 'react';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface BannerReference {\n title?: string;\n summary?: string;\n}\n\nexport interface BannerCtaButton {\n text?: string;\n link?: string;\n}\n\nexport interface BannerProps {\n label?: string;\n heading?: string;\n description?: string;\n cta_button?: BannerCtaButton;\n cta_secondary?: BannerCtaButton;\n image?: string | { url?: string };\n /** When set, image renders as full-width background with this overlay darkness */\n overlay?: 'light' | 'medium' | 'dark' | string;\n /** Full-width alignment of the content block — only active when overlay is set */\n text_alignment?: 'left' | 'center' | 'right' | string;\n text_color?: StackableColorValue;\n button_color?: StackableColorValue;\n button_text_color?: StackableColorValue;\n /** Resolved Contentstack reference entry */\n reference?: BannerReference;\n className?: string;\n}\n\nconst overlayOpacity: Record<string, string> = {\n light: 'rgba(0,0,0,0.35)',\n medium: 'rgba(0,0,0,0.55)',\n dark: 'rgba(0,0,0,0.72)',\n};\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveImage(image?: string | { url?: string }): string {\n if (!image) return '';\n if (typeof image === 'string') return image.trim();\n return typeof image.url === 'string' ? image.url.trim() : '';\n}\n\nexport function Banner({\n label = 'Red Panda Service',\n heading = 'Uptime You Can Count On.',\n description = 'Expert technicians. Genuine parts. Smart support—when and where you need it.',\n cta_button = { text: 'Explore Service', link: '#' },\n cta_secondary,\n image = '',\n overlay,\n text_alignment = 'left',\n text_color,\n button_color,\n button_text_color,\n reference,\n className,\n}: BannerProps) {\n const imageSrc = resolveImage(image);\n const hasImage = Boolean(imageSrc);\n const hasOverlay = Boolean(overlay);\n const align = (text_alignment ?? 'left').toLowerCase();\n const isCentered = align === 'center';\n const isRight = align === 'right';\n const overlayColor = overlayOpacity[overlay?.toLowerCase() ?? ''] ?? overlayOpacity.medium;\n const resolvedTextColor = resolveStackableColor(text_color as StackableColorValue);\n const resolvedButtonColor = resolveStackableColor(button_color as StackableColorValue);\n const resolvedButtonTextColor = resolveStackableColor(button_text_color as StackableColorValue);\n\n // ── Full-width background mode (overlay is set) ─────────────────────────────\n if (hasOverlay) {\n return (\n <div\n className={`relative overflow-hidden rounded-xl min-h-[300px] flex items-center ${className ?? ''}`.trim()}\n style={{ backgroundColor: '#1c1c1c' }}\n >\n {hasImage && (\n <img\n src={imageSrc}\n alt=\"\"\n aria-hidden=\"true\"\n style={{ position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: 'cover', objectPosition: 'center' }}\n />\n )}\n <div style={{ position: 'absolute', inset: 0, backgroundColor: hasImage ? overlayColor : 'rgba(0,0,0,0.6)' }} />\n\n <div\n style={{\n position: 'relative',\n zIndex: 10,\n display: 'flex',\n flexDirection: 'column',\n gap: 20,\n padding: '56px 48px',\n maxWidth: isCentered ? 680 : 560,\n margin: isCentered ? '0 auto' : isRight ? '0 0 0 auto' : undefined,\n textAlign: isCentered ? 'center' : isRight ? 'right' : 'left',\n alignItems: isCentered ? 'center' : isRight ? 'flex-end' : 'flex-start',\n width: '100%',\n }}\n >\n {label && (\n <span style={{ color: resolvedTextColor || '#e8341a', fontSize: 11, fontWeight: 700, letterSpacing: '0.18em', textTransform: 'uppercase' }}>\n {label}\n </span>\n )}\n {heading && (\n <h2 style={{ color: resolvedTextColor || '#ffffff', fontSize: '2.5rem', fontWeight: 900, lineHeight: 1.05, textTransform: 'uppercase', margin: 0 }}>\n {heading}\n </h2>\n )}\n {description && (\n <p style={{ color: resolvedTextColor || '#d1d5db', fontSize: 15, lineHeight: 1.65, margin: 0, maxWidth: 480 }}>\n {description}\n </p>\n )}\n {reference && (reference.title || reference.summary) && (\n <div style={{ borderLeft: isRight ? 'none' : '2px solid #e8341a', borderRight: isRight ? '2px solid #e8341a' : 'none', paddingLeft: isRight ? 0 : 10, paddingRight: isRight ? 10 : 0, fontSize: 12, color: '#9ca3af' }}>\n {reference.title && <p style={{ color: '#e5e7eb', fontWeight: 600, margin: '0 0 2px' }}>{reference.title}</p>}\n {reference.summary && <p style={{ margin: 0 }}>{reference.summary}</p>}\n </div>\n )}\n {(cta_button?.link || cta_secondary?.link) && (\n <div style={{ display: 'flex', gap: 12, flexWrap: 'wrap', marginTop: 4 }}>\n {cta_button?.link && (\n <a\n href={cta_button.link}\n style={{\n display: 'inline-flex', alignItems: 'center', gap: 8,\n backgroundColor: resolvedButtonColor || '#e8341a', color: resolvedButtonTextColor || '#ffffff',\n fontSize: 11, fontWeight: 700, letterSpacing: '0.15em', textTransform: 'uppercase',\n padding: '13px 22px', borderRadius: 4, textDecoration: 'none',\n }}\n >\n {cta_button.text || 'Learn More'}\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\" />\n </svg>\n </a>\n )}\n {cta_secondary?.link && (\n <a\n href={cta_secondary.link}\n style={{\n display: 'inline-flex', alignItems: 'center', gap: 8,\n backgroundColor: 'transparent', color: resolvedButtonTextColor || '#ffffff',\n fontSize: 11, fontWeight: 700, letterSpacing: '0.15em', textTransform: 'uppercase',\n padding: '13px 22px', borderRadius: 4, textDecoration: 'none',\n border: '1.5px solid rgba(255,255,255,0.5)',\n }}\n >\n {cta_secondary.text || 'Learn More'}\n </a>\n )}\n </div>\n )}\n </div>\n </div>\n );\n }\n\n // ── Split mode (no overlay — text left, image right) ────────────────────────\n return (\n <div\n className={`relative overflow-hidden rounded-xl flex flex-col md:flex-row min-h-[240px] ${className ?? ''}`.trim()}\n style={{ backgroundColor: '#1c1c1c' }}\n >\n {/* Left content */}\n <div className=\"flex flex-col justify-center gap-4 px-8 py-10 z-10\" style={{ width: '55%' }}>\n {label && (\n <span style={{ color: resolvedTextColor || '#e8341a', fontSize: 11, fontWeight: 700, letterSpacing: '0.18em', textTransform: 'uppercase' }}>\n {label}\n </span>\n )}\n {heading && (\n <h2 style={{ color: resolvedTextColor || '#ffffff', fontSize: '2.1rem', fontWeight: 900, lineHeight: 1.1, textTransform: 'uppercase', margin: 0 }}>\n {heading}\n </h2>\n )}\n {description && (\n <p style={{ color: resolvedTextColor || '#d1d5db', fontSize: 14, lineHeight: 1.6, maxWidth: 300, margin: 0 }}>\n {description}\n </p>\n )}\n {reference && (reference.title || reference.summary) && (\n <div style={{ borderLeft: '2px solid #e8341a', paddingLeft: 10, fontSize: 12, color: '#9ca3af' }}>\n {reference.title && <p style={{ color: '#e5e7eb', fontWeight: 600, margin: '0 0 2px' }}>{reference.title}</p>}\n {reference.summary && <p style={{ margin: 0 }}>{reference.summary}</p>}\n </div>\n )}\n {(cta_button?.link || cta_secondary?.link) && (\n <div style={{ marginTop: 4, display: 'flex', flexWrap: 'wrap', gap: 10 }}>\n {cta_button?.link && (\n <a\n href={cta_button.link}\n style={{\n display: 'inline-flex', alignItems: 'center', gap: 8,\n backgroundColor: resolvedButtonColor || '#e8341a', color: resolvedButtonTextColor || '#ffffff',\n fontSize: 11, fontWeight: 700, letterSpacing: '0.15em', textTransform: 'uppercase',\n padding: '12px 20px', borderRadius: 4, textDecoration: 'none',\n }}\n >\n {cta_button.text || 'Learn More'}\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\" />\n </svg>\n </a>\n )}\n {cta_secondary?.link && (\n <a\n href={cta_secondary.link}\n style={{\n display: 'inline-flex', alignItems: 'center', gap: 8,\n backgroundColor: 'transparent', color: resolvedButtonTextColor || '#ffffff',\n fontSize: 11, fontWeight: 700, letterSpacing: '0.15em', textTransform: 'uppercase',\n padding: '12px 20px', borderRadius: 4, textDecoration: 'none',\n border: '1.5px solid rgba(255,255,255,0.4)',\n }}\n >\n {cta_secondary.text || 'Learn More'}\n </a>\n )}\n </div>\n )}\n </div>\n\n {/* Right image */}\n <div style={{ position: 'relative', flex: 1, minHeight: 200 }}>\n {hasImage ? (\n <>\n <img\n src={imageSrc}\n alt={heading || 'Banner'}\n style={{ position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: 'cover', objectPosition: 'center' }}\n />\n <div style={{ position: 'absolute', inset: 0, background: 'linear-gradient(to right, #1c1c1c 0%, rgba(28,28,28,0.25) 35%, transparent 65%)' }} />\n </>\n ) : (\n <div style={{ width: '100%', height: '100%', minHeight: 200, backgroundColor: '#374151', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>\n <span style={{ color: '#6b7280', fontSize: 14 }}>Image Placeholder</span>\n </div>\n )}\n </div>\n </div>\n );\n}\n\nexport default Banner;\n","import React from 'react';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface BannerLightReference {\n title?: string;\n summary?: string;\n}\n\nexport interface BannerLightCtaButton {\n text?: string;\n link?: string;\n}\n\nexport interface BannerLightProps {\n label?: string;\n heading?: string;\n description?: string;\n cta_button?: BannerLightCtaButton;\n image?: string | { url?: string };\n /** Resolved Contentstack reference entry */\n reference?: BannerLightReference;\n /** Which side the image sits on */\n image_position?: 'left' | 'right' | string;\n /** Alignment of text within the content block */\n text_alignment?: 'left' | 'center' | 'right' | string;\n text_color?: StackableColorValue;\n button_color?: StackableColorValue;\n button_text_color?: StackableColorValue;\n className?: string;\n}\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveImage(image?: string | { url?: string }): string {\n if (!image) return '';\n if (typeof image === 'string') return image.trim();\n return typeof image.url === 'string' ? image.url.trim() : '';\n}\n\nexport function BannerLight({\n label = 'Red Panda Service',\n heading = 'Precision Engineering. Trusted Results.',\n description = 'From planned maintenance to emergency repairs, our certified team delivers every time.',\n cta_button = { text: 'Get a Quote', link: '#' },\n image = '',\n reference,\n image_position = 'left',\n text_alignment = 'left',\n text_color,\n button_color,\n button_text_color,\n className,\n}: BannerLightProps) {\n const imageSrc = resolveImage(image);\n const hasImage = Boolean(imageSrc);\n const isLeft = image_position?.toLowerCase() === 'left';\n const align = (text_alignment ?? 'left').toLowerCase() as 'left' | 'center' | 'right';\n const resolvedTextColor = resolveStackableColor(text_color as StackableColorValue);\n const resolvedButtonColor = resolveStackableColor(button_color as StackableColorValue);\n const resolvedButtonTextColor = resolveStackableColor(button_text_color as StackableColorValue);\n\n const imageBlock = (\n <div style={{ position: 'relative', flex: 1, minHeight: 220 }}>\n {hasImage ? (\n <img\n src={imageSrc}\n alt={heading || 'Banner'}\n style={{ position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: 'cover', objectPosition: 'center', borderRadius: isLeft ? '12px 0 0 12px' : '0 12px 12px 0' }}\n />\n ) : (\n <div style={{ width: '100%', height: '100%', minHeight: 220, backgroundColor: '#e5e7eb', display: 'flex', alignItems: 'center', justifyContent: 'center', borderRadius: isLeft ? '12px 0 0 12px' : '0 12px 12px 0' }}>\n <span style={{ color: '#9ca3af', fontSize: 14 }}>Image Placeholder</span>\n </div>\n )}\n </div>\n );\n\n const contentBlock = (\n <div\n style={{\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n gap: 16,\n padding: '40px 40px',\n textAlign: align,\n alignItems: align === 'center' ? 'center' : align === 'right' ? 'flex-end' : 'flex-start',\n }}\n >\n {label && (\n <span style={{ color: resolvedTextColor || '#e8341a', fontSize: 11, fontWeight: 700, letterSpacing: '0.18em', textTransform: 'uppercase' }}>\n {label}\n </span>\n )}\n {heading && (\n <h2 style={{ color: resolvedTextColor || '#111827', fontSize: '2rem', fontWeight: 900, lineHeight: 1.15, textTransform: 'uppercase', margin: 0 }}>\n {heading}\n </h2>\n )}\n {description && (\n <p style={{ color: resolvedTextColor || '#4b5563', fontSize: 14, lineHeight: 1.6, maxWidth: 320, margin: 0 }}>\n {description}\n </p>\n )}\n {reference && (reference.title || reference.summary) && (\n <div style={{ borderLeft: '2px solid #e8341a', paddingLeft: 10, fontSize: 12, color: '#6b7280' }}>\n {reference.title && (\n <p style={{ color: '#111827', fontWeight: 600, margin: '0 0 2px' }}>{reference.title}</p>\n )}\n {reference.summary && <p style={{ margin: 0 }}>{reference.summary}</p>}\n </div>\n )}\n {cta_button?.link && (\n <div style={{ marginTop: 4 }}>\n <a\n href={cta_button.link}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 8,\n backgroundColor: resolvedButtonColor || '#111827',\n color: resolvedButtonTextColor || '#ffffff',\n fontSize: 11,\n fontWeight: 700,\n letterSpacing: '0.15em',\n textTransform: 'uppercase',\n padding: '12px 20px',\n borderRadius: 4,\n textDecoration: 'none',\n }}\n >\n {cta_button.text || 'Learn More'}\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\" />\n </svg>\n </a>\n </div>\n )}\n </div>\n );\n\n return (\n <div\n className={`relative overflow-hidden rounded-xl flex flex-row min-h-[240px] ${className ?? ''}`.trim()}\n style={{ backgroundColor: '#ffffff', border: '1px solid #e5e7eb' }}\n >\n {isLeft ? (\n <>\n {imageBlock}\n {contentBlock}\n </>\n ) : (\n <>\n {contentBlock}\n {imageBlock}\n </>\n )}\n </div>\n );\n}\n\nexport default BannerLight;\n","import React, { useState } from 'react';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface BannerCalloutCtaButton {\n text?: string;\n link?: string;\n}\n\nexport interface BannerCalloutProps {\n heading?: string;\n description?: string;\n cta_button?: BannerCalloutCtaButton;\n dismissible?: boolean;\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n button_color?: StackableColorValue;\n button_text_color?: StackableColorValue;\n className?: string;\n}\n\nexport function BannerCallout({\n heading = 'Help slow the spread of COVID-19, with one step on your phone',\n description = '',\n cta_button = { text: 'Load more', link: '#' },\n dismissible = true,\n background_color,\n text_color,\n button_color,\n button_text_color,\n className,\n}: BannerCalloutProps) {\n const [visible, setVisible] = useState(true);\n\n const resolvedBackgroundColor = resolveStackableColor(background_color as StackableColorValue);\n const resolvedTextColor = resolveStackableColor(text_color as StackableColorValue);\n const resolvedButtonColor = resolveStackableColor(button_color as StackableColorValue);\n const resolvedButtonTextColor = resolveStackableColor(button_text_color as StackableColorValue);\n\n if (!visible) return null;\n\n return (\n <div\n className={`relative flex items-center justify-center gap-4 flex-wrap ${className ?? ''}`.trim()}\n style={{\n backgroundColor: resolvedBackgroundColor || '#ffffff',\n color: resolvedTextColor || '#111827',\n padding: '14px 56px',\n minHeight: 56,\n }}\n >\n <div className=\"flex items-center gap-3 flex-wrap justify-center\" style={{ textAlign: 'center' }}>\n {heading && (\n <span style={{ fontSize: 14, fontWeight: 500, color: resolvedTextColor || '#111827' }}>\n {heading}\n </span>\n )}\n {description && (\n <span style={{ fontSize: 14, fontWeight: 400, opacity: 0.75, color: resolvedTextColor || '#111827' }}>\n {description}\n </span>\n )}\n {cta_button?.link && (\n <a\n href={cta_button.link}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n backgroundColor: resolvedButtonColor || '#7a1f2b',\n color: resolvedButtonTextColor || '#ffffff',\n fontSize: 13,\n fontWeight: 600,\n padding: '8px 18px',\n borderRadius: 999,\n textDecoration: 'none',\n whiteSpace: 'nowrap',\n }}\n >\n {cta_button.text || 'Load more'}\n </a>\n )}\n </div>\n\n {dismissible && (\n <button\n type=\"button\"\n onClick={() => setVisible(false)}\n aria-label=\"Dismiss banner\"\n style={{\n position: 'absolute',\n right: 20,\n top: '50%',\n transform: 'translateY(-50%)',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 24,\n height: 24,\n background: 'transparent',\n border: 'none',\n cursor: 'pointer',\n color: resolvedTextColor || '#111827',\n }}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n )}\n </div>\n );\n}\n\nexport default BannerCallout;\n","/* eslint-disable @next/next/no-img-element */\nimport React from 'react';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface CommunityBannerAvatar {\n /** Asset URL, or a Contentstack asset object — both are accepted. */\n image?: string | { url?: string };\n image_alt?: string;\n}\n\nexport interface CommunityBannerCtaButton {\n title?: string;\n url?: string;\n open_in_new_tab?: boolean;\n}\n\nexport interface CommunityBannerProps {\n logo?: string | { url?: string };\n logo_text?: string;\n avatars?: CommunityBannerAvatar[];\n avatar_size?: 'Small' | 'Medium' | 'Large' | string;\n heading?: string;\n description?: string;\n heading_alignment?: 'left' | 'center' | 'right' | string;\n cta_button?: CommunityBannerCtaButton;\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n button_color?: StackableColorValue;\n button_text_color?: StackableColorValue;\n className?: string;\n}\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveImage(image: CommunityBannerAvatar['image']): string {\n if (!image) return '';\n if (typeof image === 'string') return image.trim();\n return typeof image.url === 'string' ? image.url.trim() : '';\n}\n\n/** Keeps the outermost ring inside the square rather than clipped by it. */\nconst SPREAD = 0.9;\n\n/** Diameter of the single centre avatar, as a percent of the cluster's width. */\nconst CENTRE_SIZE = 7;\n\n/**\n * The cluster's fixed shape: one centre avatar, then three concentric rings.\n * `count` is how many avatars sit on that ring, `size` their diameter as a\n * percent of the cluster's width. Ring 2 carries the same seven avatars as\n * ring 1 but noticeably larger, matching the reference.\n *\n * Avatars fill the rings in order, inside out. Any surplus beyond 30 is spread\n * evenly around an extra outer ring rather than dropped.\n */\nconst RING_SPEC: ReadonlyArray<{ count: number; size: number }> = [\n { count: 7, size: 9 },\n { count: 7, size: 13.5 },\n { count: 15, size: 12 },\n];\n\nconst CLUSTER_MAX_WIDTH: Record<string, string> = {\n Small: '380px',\n Medium: '520px',\n Large: '660px',\n};\n\nconst ALIGNMENTS: Record<string, string> = {\n left: 'text-left items-start',\n center: 'text-center items-center',\n right: 'text-right items-end',\n};\n\ninterface Placement {\n left: number;\n top: number;\n size: number;\n}\n\n/**\n * Places avatars on a fixed structure: one in the centre, then three concentric\n * rings of 7, 7 and 15. Each ring's avatars share a size and an even angular\n * step, and alternate rings are rotated half a step so avatars sit in the gaps\n * of the ring inside them — which is what makes the cluster read as symmetric\n * rather than scattered.\n *\n * Editors position nothing. Fewer than 30 avatars simply leaves outer rings\n * partly filled; more than 30 gets an extra ring outside the third.\n */\nfunction layout(count: number): Placement[] {\n if (count <= 0) return [];\n\n const out: Placement[] = [{ left: 50, top: 50, size: CENTRE_SIZE }];\n let remaining = count - 1;\n\n const rings = RING_SPEC.length;\n\n RING_SPEC.forEach((ring, idx) => {\n if (remaining <= 0) return;\n const onThisRing = Math.min(ring.count, remaining);\n remaining -= onThisRing;\n\n const radius = 50 * SPREAD * ((idx + 1) / rings);\n // Half-step rotation on alternate rings; -90° so a ring always starts at the top.\n const offset = (idx % 2) * (Math.PI / ring.count) - Math.PI / 2;\n\n for (let k = 0; k < onThisRing; k += 1) {\n const angle = (k / ring.count) * Math.PI * 2 + offset;\n out.push({\n left: 50 + radius * Math.cos(angle),\n top: 50 + radius * Math.sin(angle),\n size: ring.size,\n });\n }\n });\n\n // Surplus avatars get their own ring just outside the last one.\n if (remaining > 0) {\n const radius = 50 * SPREAD * 1.22;\n for (let k = 0; k < remaining; k += 1) {\n const angle = (k / remaining) * Math.PI * 2 - Math.PI / 2;\n out.push({\n left: 50 + radius * Math.cos(angle),\n top: 50 + radius * Math.sin(angle),\n size: RING_SPEC[rings - 1].size,\n });\n }\n }\n\n return out;\n}\n\nexport function CommunityBanner({\n logo,\n logo_text = '',\n avatars = [],\n avatar_size = 'Medium',\n heading = 'Join Our Community of Learners!',\n description = '',\n heading_alignment = 'center',\n cta_button,\n background_color,\n text_color,\n button_color,\n button_text_color,\n className = '',\n}: CommunityBannerProps) {\n\n const resolvedBg = resolveStackableColor(background_color);\n const resolvedText = resolveStackableColor(text_color);\n const btnBg = resolveStackableColor(button_color) || '#18181b';\n const btnFg = resolveStackableColor(button_text_color) || '#ffffff';\n\n const sectionBg = 'bg-white';\n const headingColor = 'text-neutral-900';\n const bodyColor = 'text-neutral-600';\n const logoColor = 'text-neutral-800';\n const ringColor = 'ring-black/5';\n\n const sectionStyle = resolvedBg ? { backgroundColor: resolvedBg } : undefined;\n const textStyle: React.CSSProperties | undefined = resolvedText ? { color: resolvedText } : undefined;\n\n const alignClass = ALIGNMENTS[heading_alignment] ?? ALIGNMENTS.center;\n const clusterWidth = CLUSTER_MAX_WIDTH[avatar_size] ?? CLUSTER_MAX_WIDTH.Medium;\n\n const visibleAvatars = (avatars ?? []).filter((a) => Boolean(resolveImage(a?.image)));\n const positions = layout(visibleAvatars.length);\n const logoSrc = resolveImage(logo);\n\n return (\n <section className={`${sectionBg} ${className}`.trim()} style={sectionStyle}>\n <div className=\"component-container mx-auto px-6 py-14 lg:py-20\">\n {/* ── Logo ───────────────────────────────────────────────────────── */}\n {(logoSrc || logo_text) && (\n <div className=\"mb-10 flex items-center gap-3\">\n {logoSrc && <img src={logoSrc} alt={logo_text || 'Logo'} className=\"h-9 w-9 object-contain\" />}\n {logo_text && (\n <span className={`whitespace-pre-line text-sm font-medium leading-tight ${logoColor}`}>\n {logo_text}\n </span>\n )}\n </div>\n )}\n\n {/* ── Avatar cluster ─────────────────────────────────────────────── */}\n {visibleAvatars.length > 0 && (\n <div className=\"mx-auto w-full\" style={{ maxWidth: clusterWidth }}>\n <div className=\"relative w-full\" style={{ aspectRatio: '1 / 1' }}>\n {visibleAvatars.map((avatar, i) => {\n const pos = positions[i];\n return (\n <div\n key={i}\n className={`absolute overflow-hidden rounded-full ring-1 ${ringColor} transition-transform duration-200 hover:z-10 hover:scale-110`}\n style={{\n left: `${pos.left}%`,\n top: `${pos.top}%`,\n width: `${pos.size}%`,\n aspectRatio: '1 / 1',\n transform: 'translate(-50%, -50%)',\n }}\n >\n <img\n src={resolveImage(avatar.image)}\n alt={avatar.image_alt || ''}\n className=\"h-full w-full object-cover\"\n loading=\"lazy\"\n />\n </div>\n );\n })}\n </div>\n </div>\n )}\n\n {/* ── Copy + CTA ─────────────────────────────────────────────────── */}\n <div className={`mt-12 flex flex-col ${alignClass}`}>\n {heading && (\n <h2\n className={`text-3xl font-semibold tracking-tight sm:text-4xl ${headingColor}`}\n style={textStyle}\n >\n {heading}\n </h2>\n )}\n\n {description && (\n <p className={`mt-4 max-w-xl text-sm leading-relaxed ${bodyColor}`}>{description}</p>\n )}\n\n {cta_button?.title && (\n <a\n href={cta_button.url || '#'}\n target={cta_button.open_in_new_tab ? '_blank' : undefined}\n rel={cta_button.open_in_new_tab ? 'noopener noreferrer' : undefined}\n className=\"mt-8 inline-block rounded-lg px-6 py-3 text-sm font-semibold transition-transform duration-150 hover:scale-[1.03] active:scale-95\"\n style={{ backgroundColor: btnBg, color: btnFg }}\n >\n {cta_button.title}\n </a>\n )}\n </div>\n </div>\n </section>\n );\n}\n\nexport default CommunityBanner;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { resolveStackableColor, hexToRgba } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface CountdownBannerCtaButton {\n title?: string;\n href?: string;\n}\n\nexport interface CountdownBannerProps {\n heading?: string;\n description?: string;\n /** ISO datetime the countdown ticks down to. */\n target_date_time?: string;\n cta_button?: CountdownBannerCtaButton;\n expiry_behavior?: 'hide' | 'show_message' | string;\n /** Shown in place of `description` once `target_date_time` has passed, when `expiry_behavior` is `show_message`. */\n expiry_message?: string;\n /** Shows a manual close (X) button that hides the banner for the rest of the session. */\n dismissible?: boolean;\n /** Flips each number tile when its value ticks over. Off for anyone with `prefers-reduced-motion`. */\n animate_flip?: boolean;\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n button_color?: StackableColorValue;\n button_text_color?: StackableColorValue;\n className?: string;\n}\n\ninterface Remaining {\n days: number;\n hours: number;\n minutes: number;\n seconds: number;\n expired: boolean;\n}\n\nfunction getRemaining(targetIso?: string): Remaining {\n const targetMs = targetIso ? new Date(targetIso).getTime() : NaN;\n const diff = Number.isFinite(targetMs) ? targetMs - Date.now() : 0;\n const expired = diff <= 0;\n const totalSeconds = Math.floor(Math.max(0, diff) / 1000);\n return {\n days: Math.floor(totalSeconds / 86400),\n hours: Math.floor((totalSeconds % 86400) / 3600),\n minutes: Math.floor((totalSeconds % 3600) / 60),\n seconds: totalSeconds % 60,\n expired,\n };\n}\n\nconst UNITS: ReadonlyArray<{ key: 'days' | 'hours' | 'minutes' | 'seconds'; label: string }> = [\n { key: 'days', label: 'Days' },\n { key: 'hours', label: 'Hours' },\n { key: 'minutes', label: 'Minutes' },\n { key: 'seconds', label: 'Seconds' },\n];\n\n/** Must match the literal `duration-[...]` arbitrary-value classes below — Tailwind's\n * JIT scanner needs the class written out verbatim, so it can't be interpolated. */\nconst FLIP_DURATION_MS = 400;\n\nfunction prefersReducedMotion(): boolean {\n return typeof window !== 'undefined' && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n}\n\nconst DIGIT_CARD_CLASSES =\n 'flex h-8 w-6 items-center justify-center overflow-hidden rounded-md sm:rounded-lg ' +\n 'bg-[linear-gradient(180deg,#2c2c30_0%,#17171a_55%,#0a0a0b_100%)] ' +\n 'shadow-[0_1px_2px_rgba(0,0,0,0.4),inset_0_1px_0_rgba(255,255,255,0.08)] sm:h-12 sm:w-9 lg:h-14 lg:w-10';\n\nconst DIGIT_VALUE_CLASSES = 'text-base font-extrabold leading-none tabular-nums text-white sm:text-2xl lg:text-3xl';\n\n/** The mechanical center seam + two rivet dots, built entirely from pseudo-element variants. */\nconst DIGIT_HINGE_CLASSES =\n 'pointer-events-none absolute inset-x-0 top-1/2 h-px -translate-y-px bg-black/60 ' +\n \"before:content-[''] before:absolute before:left-[18%] before:top-1/2 before:h-[3px] before:w-[3px] before:-translate-y-1/2 before:rounded-full before:bg-white/20 \" +\n \"after:content-[''] after:absolute after:right-[18%] after:top-1/2 after:h-[3px] after:w-[3px] after:-translate-y-1/2 after:rounded-full after:bg-white/20\";\n\nconst FACE_TRANSITION_CLASSES = '[backface-visibility:hidden] origin-center transition-transform duration-[400ms] ease-[cubic-bezier(0.4,0,0.2,1)]';\n\n/** Only the number + hinge markup, shared by the flat render and both flip faces. */\nfunction digitFace(value: string, showHinge: boolean) {\n return (\n <>\n <span className={DIGIT_VALUE_CLASSES}>{value}</span>\n {showHinge && <span className={DIGIT_HINGE_CLASSES} aria-hidden=\"true\" />}\n </>\n );\n}\n\n/** A single glossy black split-flap digit tile, with a mechanical center hinge seam.\n * Flips on its own whenever `value` changes — so on a two-digit unit, only the digit\n * that actually ticked over animates, matching how a real split-flap counter behaves.\n * The rotation is driven by a plain CSS `transition` (toggled via state) rather than a\n * named `@keyframes` animation, so the whole effect stays in Tailwind utility classes —\n * no separate stylesheet entry needed. */\nfunction FlipDigitTile({ value, animate }: { value: string; animate: boolean }) {\n const [settledValue, setSettledValue] = useState(value);\n const [flipping, setFlipping] = useState(false);\n const [active, setActive] = useState(false);\n const lastValueRef = useRef(value);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const rafRef = useRef<number | null>(null);\n\n useEffect(() => {\n if (value === lastValueRef.current) return;\n lastValueRef.current = value;\n\n if (!animate || prefersReducedMotion()) {\n setSettledValue(value);\n return;\n }\n\n setActive(false);\n setFlipping(true);\n // Two rAFs: the first commits the \"rest\" transform to the DOM, the second flips to\n // \"active\" on the following frame — the transition needs a committed starting value\n // to animate from, or setting both in one render would just jump straight to the end.\n rafRef.current = requestAnimationFrame(() => {\n rafRef.current = requestAnimationFrame(() => setActive(true));\n });\n\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => {\n setSettledValue(value);\n setFlipping(false);\n setActive(false);\n timeoutRef.current = null;\n }, FLIP_DURATION_MS);\n }, [value, animate]);\n\n useEffect(() => () => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n if (rafRef.current) cancelAnimationFrame(rafRef.current);\n }, []);\n\n if (!flipping) {\n return <div className={`relative ${DIGIT_CARD_CLASSES}`}>{digitFace(value, animate)}</div>;\n }\n\n return (\n <div className=\"relative inline-block [perspective:240px]\">\n <div\n className={`relative ${DIGIT_CARD_CLASSES} ${FACE_TRANSITION_CLASSES} ${active ? '[transform:rotateX(-90deg)]' : '[transform:rotateX(0deg)]'}`}\n aria-hidden=\"true\"\n >\n {digitFace(settledValue, true)}\n </div>\n <div\n className={`absolute inset-0 ${DIGIT_CARD_CLASSES} ${FACE_TRANSITION_CLASSES} ${active ? '[transform:rotateX(0deg)]' : '[transform:rotateX(90deg)]'}`}\n aria-hidden=\"true\"\n >\n {digitFace(value, true)}\n </div>\n <span className=\"sr-only\">{value}</span>\n </div>\n );\n}\n\nexport function CountdownBanner({\n heading = 'Don’t Miss Out — Offer Ends Soon',\n description = 'Save big before the countdown hits zero.',\n target_date_time = new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString(),\n cta_button = { title: 'Grab the Deal', href: '#' },\n expiry_behavior = 'hide',\n expiry_message = 'This deal has ended — stay tuned for what’s next.',\n dismissible = true,\n animate_flip = true,\n background_color,\n text_color,\n button_color,\n button_text_color,\n className = '',\n}: CountdownBannerProps) {\n // Computed post-mount only: `target_date_time` is relative to \"now\", so the\n // server-rendered and first-client-render values would otherwise mismatch.\n const [remaining, setRemaining] = useState<Remaining | null>(null);\n const [dismissed, setDismissed] = useState(false);\n\n useEffect(() => {\n setRemaining(getRemaining(target_date_time));\n const id = setInterval(() => setRemaining(getRemaining(target_date_time)), 1000);\n return () => clearInterval(id);\n }, [target_date_time]);\n\n const sectionThemeClasses = 'bg-neutral-950 text-white';\n const descriptionThemeClasses = 'text-neutral-400';\n const unitLabelThemeClasses = 'text-neutral-400';\n\n const resolvedBg = resolveStackableColor(background_color);\n const resolvedText = resolveStackableColor(text_color);\n const btnBg = resolveStackableColor(button_color) || '#ffffff';\n const btnFg = resolveStackableColor(button_text_color) || '#18181b';\n\n const sectionStyle = resolvedBg ? { backgroundColor: resolvedBg } : undefined;\n const textStyle: React.CSSProperties | undefined = resolvedText ? { color: resolvedText } : undefined;\n // The description/expiry message and the unit labels (Days/Hours/…) each carry their\n // own theme-based text-color class, which wins over a color merely inherited from an\n // ancestor — so a custom text_color has to be applied directly on those elements too,\n // not just on the heading and dismiss button that already set it inline.\n const mutedTextStyle: React.CSSProperties | undefined = resolvedText ? { color: hexToRgba(resolvedText, 0.65) } : undefined;\n\n const hasExpired = Boolean(remaining?.expired);\n if (dismissed) return null;\n if (hasExpired && expiry_behavior === 'hide') return null;\n\n return (\n <section className={`relative ${sectionThemeClasses} ${className}`.trim()} style={sectionStyle}>\n {dismissible && (\n <button\n type=\"button\"\n onClick={() => setDismissed(true)}\n aria-label=\"Dismiss banner\"\n className=\"hover:cursor-pointer hover:text-red-400 absolute right-3 top-3 inline-flex h-7 w-7 items-center justify-center rounded-full opacity-60 transition-opacity hover:opacity-100\"\n style={textStyle}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n )}\n <div className=\"component-container mx-auto px-6 py-6 sm:py-10 lg:py-14\">\n <div className=\"flex flex-col items-center gap-4 text-center sm:flex-row sm:justify-between sm:gap-6 sm:text-left\">\n <div className=\"max-w-lg pr-8 sm:pr-0\">\n {heading && (\n <h2 className=\"text-2xl font-semibold tracking-tight sm:text-3xl\" style={textStyle}>\n {heading}\n </h2>\n )}\n {(description || (hasExpired && expiry_message)) && (\n <p className={`mt-2 text-sm leading-relaxed ${descriptionThemeClasses}`} style={mutedTextStyle}>\n {hasExpired ? expiry_message : description}\n </p>\n )}\n </div>\n\n {!hasExpired && (\n <div className=\"flex items-start gap-2 sm:gap-4\">\n {UNITS.map(({ key, label }) => {\n const digits = remaining ? String(remaining[key]).padStart(2, '0').split('') : ['-', '-'];\n return (\n <div key={key} className=\"flex flex-col items-center gap-1 sm:gap-1.5\">\n <div className=\"flex gap-0.5 sm:gap-1\">\n {digits.map((digit, i) =>\n remaining ? (\n <FlipDigitTile key={i} value={digit} animate={animate_flip} />\n ) : (\n <div key={i} className={`relative ${DIGIT_CARD_CLASSES}`}>\n {digitFace(digit, animate_flip)}\n </div>\n ),\n )}\n </div>\n <span className={`text-[9px] font-medium uppercase tracking-wide sm:text-[10px] ${unitLabelThemeClasses}`} style={mutedTextStyle}>\n {label}\n </span>\n </div>\n );\n })}\n </div>\n )}\n\n {cta_button?.href && (\n <a\n href={cta_button.href}\n className=\"inline-flex shrink-0 items-center justify-center rounded-lg px-6 py-3 text-sm font-semibold transition-transform duration-150 hover:scale-[1.03] active:scale-95\"\n style={{ backgroundColor: btnBg, color: btnFg }}\n >\n {cta_button.title || 'Claim Offer'}\n </a>\n )}\n </div>\n </div>\n </section>\n );\n}\n\nexport default CountdownBanner;\n","import React, { useEffect, useState } from 'react';\nimport { CheckIcon, XMarkIcon, ChevronDownIcon, ChevronUpIcon, ArrowRightIcon } from '@heroicons/react/24/outline';\nimport { resolveStackableColor, hexToRgba } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface CookieConsentBannerLink {\n title?: string;\n href?: string;\n}\n\nexport interface CookieConsentCategory {\n /** Storage key — stable across edits, e.g. \"analytics\". Defaults to a slug of `category_title`. */\n key?: string;\n category_title?: string;\n description?: string;\n /** Always on, toggle locked — for strictly necessary cookies. */\n required?: boolean;\n}\n\nexport interface CookieConsentBannerProps {\n heading?: string;\n message?: string;\n policy_link?: CookieConsentBannerLink;\n /** Per-category opt-in toggles. Leave empty for a plain Yes/No card with no \"Customise\" step. */\n categories?: CookieConsentCategory[];\n accept_button_text?: string;\n reject_button_text?: string;\n customise_link_text?: string;\n preferences_heading?: string;\n save_button_text?: string;\n expand_details_text?: string;\n hide_details_text?: string;\n position?: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right' | string;\n /** Uploaded asset URL, or a Contentstack asset object — overrides the built-in cookie icon. */\n icon_image?: string | { url?: string };\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n button_color?: StackableColorValue;\n button_text_color?: StackableColorValue;\n className?: string;\n}\n\n/** One set of choices, remembered for good — re-prompting on every visit defeats the point. */\nconst STORAGE_KEY = 'stackables_cookie_consent';\n\nfunction slugify(title: string): string {\n return title.trim().toLowerCase().replace(/[^a-z0-9]+/g, '_').replace(/^_|_$/g, '');\n}\n\nfunction categoryKey(category: CookieConsentCategory, index: number): string {\n return category.key?.trim() || (category.category_title ? slugify(category.category_title) : `category_${index}`);\n}\n\nfunction buildPrefsMap(categories: CookieConsentCategory[], value: (c: CookieConsentCategory) => boolean): Record<string, boolean> {\n return (categories ?? []).reduce<Record<string, boolean>>((acc, c, i) => {\n acc[categoryKey(c, i)] = value(c);\n return acc;\n }, {});\n}\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveIconImage(icon: CookieConsentBannerProps['icon_image']): string {\n if (!icon) return '';\n if (typeof icon === 'string') return icon.trim();\n return typeof icon.url === 'string' ? icon.url.trim() : '';\n}\n\ninterface ToggleSwitchProps {\n checked: boolean;\n disabled?: boolean;\n onChange: (next: boolean) => void;\n accentColor: string;\n offColor: string;\n}\n\nfunction ToggleSwitch({ checked, disabled, onChange, accentColor, offColor }: ToggleSwitchProps) {\n return (\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n disabled={disabled}\n onClick={() => !disabled && onChange(!checked)}\n className={`relative inline-flex h-6 w-11 shrink-0 items-center rounded-full p-0.5 transition-colors ${\n disabled ? 'cursor-not-allowed' : 'cursor-pointer'\n }`}\n style={{ backgroundColor: checked ? accentColor : offColor }}\n >\n <span\n className={`flex h-5 w-5 items-center justify-center rounded-full bg-white shadow transition-transform ${\n checked ? 'translate-x-5' : 'translate-x-0'\n }`}\n >\n {checked ? (\n <CheckIcon className=\"h-3 w-3\" style={{ color: accentColor }} />\n ) : (\n <XMarkIcon className=\"h-3 w-3\" style={{ color: offColor }} />\n )}\n </span>\n </button>\n );\n}\n\nexport function CookieConsentBanner({\n heading = 'Can we use cookies?',\n message = \"We use cookies to learn where you struggle when you're navigating our website and fix these issues for your future visits.\",\n policy_link,\n categories = [\n { key: 'necessary', category_title: 'Necessary', required: true, description: 'These cookies are required to use certain features of our website, such as remembering that you accepted this policy.' },\n { key: 'analytics', category_title: 'Analytics & performance', description: 'These cookies let us track how visitors use our site, so we can find and fix the things that trip people up.' },\n { key: 'marketing', category_title: 'Marketing', description: 'These cookies track the results of paid campaigns and personalize the ads you see elsewhere on the web.' },\n ],\n accept_button_text = 'Yes',\n reject_button_text = 'No',\n customise_link_text = 'Customise',\n preferences_heading = 'Customise your preferences',\n save_button_text = 'Save preferences',\n expand_details_text = 'Expand details',\n hide_details_text = 'Hide details',\n position = 'bottom-left',\n icon_image,\n background_color,\n text_color,\n button_color,\n button_text_color,\n className = '',\n}: CookieConsentBannerProps) {\n // Starts hidden on every render (including the server's) so there's nothing to\n // mismatch during hydration — it only appears once the effect below confirms,\n // client-side, that this visitor hasn't already answered.\n const [visible, setVisible] = useState(false);\n const [view, setView] = useState<'initial' | 'customise'>('initial');\n const [detailsExpanded, setDetailsExpanded] = useState(false);\n const [prefs, setPrefs] = useState<Record<string, boolean>>(() =>\n buildPrefsMap(categories, (c) => Boolean(c.required)),\n );\n\n useEffect(() => {\n try {\n if (!window.localStorage.getItem(STORAGE_KEY)) setVisible(true);\n } catch {\n // Storage blocked (private mode, disabled cookies) — show the banner anyway.\n setVisible(true);\n }\n }, []);\n\n const persist = (value: Record<string, boolean> | 'accepted' | 'rejected') => {\n try {\n window.localStorage.setItem(STORAGE_KEY, JSON.stringify(value));\n } catch {\n // Nothing to persist to — the banner will simply reappear next visit.\n }\n setVisible(false);\n };\n\n const acceptAll = () => persist(buildPrefsMap(categories, () => true));\n\n const rejectAll = () => persist(buildPrefsMap(categories, (c) => Boolean(c.required)));\n\n const savePreferences = () => persist(prefs);\n\n const cardThemeClasses = 'bg-white text-neutral-900';\n const bodyThemeClasses = 'text-neutral-600';\n const linkThemeClasses = 'text-neutral-900 hover:text-black';\n const rowBorderClasses = 'border-neutral-100';\n\n const resolvedBg = resolveStackableColor(background_color);\n const resolvedText = resolveStackableColor(text_color);\n const resolvedButtonBg = resolveStackableColor(button_color);\n const resolvedButtonText = resolveStackableColor(button_text_color);\n\n const accentColor = resolvedButtonBg || '#7c3aed';\n const accentTextColor = resolvedButtonText || '#ffffff';\n const neutralColor = '#18181b';\n\n const cardStyle: React.CSSProperties | undefined = resolvedBg ? { backgroundColor: resolvedBg } : undefined;\n const textStyle: React.CSSProperties | undefined = resolvedText ? { color: resolvedText } : undefined;\n // Applied on the outer card so unclassed descendants (e.g. the category title)\n // inherit it; elements below with their own theme text-color class still need\n // the same style applied directly, since that class would otherwise win over\n // whatever color they merely inherited from this ancestor.\n const containerStyle: React.CSSProperties | undefined = { ...cardStyle, ...textStyle };\n const mutedTextStyle: React.CSSProperties | undefined = resolvedText ? { color: hexToRgba(resolvedText, 0.65) } : undefined;\n const iconSrc = resolveIconImage(icon_image);\n\n const cornerClasses: Record<string, string> = {\n 'bottom-left': 'bottom-4 left-4 sm:bottom-6 sm:left-6',\n 'bottom-right': 'bottom-4 right-4 sm:bottom-6 sm:right-6',\n 'top-left': 'top-4 left-4 sm:top-6 sm:left-6',\n 'top-right': 'top-4 right-4 sm:top-6 sm:right-6',\n };\n\n if (!visible) return null;\n\n return (\n <div\n role=\"region\"\n aria-label=\"Cookie consent\"\n className={`fixed z-50 w-[calc(100%-2rem)] max-w-sm rounded-2xl p-6 shadow-2xl ${cornerClasses[position] ?? cornerClasses['bottom-left']} ${cardThemeClasses} ${className}`.trim()}\n style={containerStyle}\n >\n {view === 'initial' ? (\n <>\n {iconSrc && (\n <div className=\"mb-3 flex justify-center\">\n <img src={iconSrc} alt=\"\" className=\"h-10 w-10 object-contain\" />\n </div>\n )}\n {heading && (\n <h2 className=\"text-center text-lg font-bold leading-snug\" style={textStyle}>\n {heading}\n </h2>\n )}\n {message && (\n <p className={`mt-3 text-center text-sm leading-relaxed ${bodyThemeClasses}`} style={mutedTextStyle}>\n {message}{' '}\n {policy_link?.title && (\n <a\n href={policy_link.href || '#'}\n className={`font-medium underline underline-offset-2 transition-colors ${linkThemeClasses}`}\n style={textStyle}\n >\n {policy_link.title}\n </a>\n )}\n </p>\n )}\n\n <div className=\"mt-5 flex items-center justify-center gap-3\">\n <button\n type=\"button\"\n onClick={acceptAll}\n className=\"inline-flex items-center gap-1.5 rounded-full px-5 py-2.5 text-sm font-semibold transition-transform duration-150 hover:scale-[1.03] active:scale-95\"\n style={{ backgroundColor: accentColor, color: accentTextColor }}\n >\n {accept_button_text}\n <CheckIcon className=\"h-4 w-4\" />\n </button>\n {reject_button_text && (\n <button\n type=\"button\"\n onClick={rejectAll}\n className=\"inline-flex items-center gap-1.5 rounded-full px-5 py-2.5 text-sm font-semibold text-white transition-transform duration-150 hover:scale-[1.03] active:scale-95\"\n style={{ backgroundColor: neutralColor }}\n >\n {reject_button_text}\n <XMarkIcon className=\"h-4 w-4\" />\n </button>\n )}\n </div>\n\n {(categories?.length ?? 0) > 0 && customise_link_text && (\n <button\n type=\"button\"\n onClick={() => setView('customise')}\n className={`mt-4 flex w-full items-center justify-center gap-1 text-sm font-semibold transition-colors ${linkThemeClasses}`}\n style={textStyle}\n >\n {customise_link_text}\n <ArrowRightIcon className=\"h-3.5 w-3.5\" />\n </button>\n )}\n </>\n ) : (\n <>\n {preferences_heading && (\n <h2 className=\"text-center text-lg font-bold leading-snug\" style={textStyle}>\n {preferences_heading}\n </h2>\n )}\n\n <div className=\"mt-4 divide-y divide-current/5\">\n {categories?.map((category, index) => {\n const key = categoryKey(category, index);\n return (\n <div key={key} className={`py-3 first:pt-0 last:pb-0 ${index > 0 ? `border-t ${rowBorderClasses}` : ''}`}>\n <div className=\"flex items-center justify-between gap-4\">\n <span className=\"text-sm font-semibold\">{category.category_title}</span>\n <ToggleSwitch\n checked={Boolean(prefs[key])}\n disabled={category.required}\n onChange={(next) => setPrefs((prev) => ({ ...prev, [key]: next }))}\n accentColor={accentColor}\n offColor={neutralColor}\n />\n </div>\n {detailsExpanded && category.description && (\n <p className={`mt-2 text-sm leading-relaxed ${bodyThemeClasses}`} style={mutedTextStyle}>{category.description}</p>\n )}\n </div>\n );\n })}\n </div>\n\n <button\n type=\"button\"\n onClick={savePreferences}\n className=\"mt-5 inline-flex w-full items-center justify-center gap-1.5 rounded-full px-5 py-2.5 text-sm font-semibold transition-transform duration-150 hover:scale-[1.02] active:scale-95\"\n style={{ backgroundColor: accentColor, color: accentTextColor }}\n >\n {save_button_text}\n <CheckIcon className=\"h-4 w-4\" />\n </button>\n\n <button\n type=\"button\"\n onClick={() => setDetailsExpanded((v) => !v)}\n className={`mt-3 flex w-full items-center justify-center gap-1 text-sm font-semibold transition-colors ${linkThemeClasses}`}\n style={textStyle}\n >\n {detailsExpanded ? hide_details_text : expand_details_text}\n {detailsExpanded ? <ChevronUpIcon className=\"h-3.5 w-3.5\" /> : <ChevronDownIcon className=\"h-3.5 w-3.5\" />}\n </button>\n </>\n )}\n </div>\n );\n}\n\nexport default CookieConsentBanner;\n","/* eslint-disable @next/next/no-img-element */\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { resolveStackableColor, hexToRgba } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\n/** Native Contentstack link field: `{ title, href }`. */\nexport interface PromoBannerLink {\n title?: string;\n href?: string;\n}\n\nexport interface PromoBannerSlide {\n /** Small uppercase line above the heading, e.g. `NEW ARRIVAL`. */\n eyebrow_text?: string;\n heading?: string;\n /** Supporting copy. Line breaks are kept. */\n description?: string;\n /** Text for the arrow link. Falls back to the link's own title. */\n cta_label?: string;\n cta_link?: PromoBannerLink;\n /**\n * Asset URL or a Contentstack asset object — both are accepted, since a file\n * field arrives as a URL from the catalog but as `{ url, … }` from the\n * Delivery API.\n */\n image?: string | { url?: string };\n image_alt?: string;\n /** Panel colour for this slide. Empty falls back to the rotating palette. */\n background_color?: StackableColorValue;\n}\n\nexport interface PromoBannerProps {\n slides?: PromoBannerSlide[];\n /** Small glyph before the eyebrow text. */\n show_eyebrow_icon?: boolean;\n /** Which side the image panel sits on. */\n media_position?: 'Right' | 'Left' | string;\n /** Strip height. These are deliberately short — this is a banner, not a hero. */\n banner_height?: 'Short' | 'Medium' | 'Tall' | string;\n corner_style?: 'Rounded' | 'Square' | string;\n show_arrows?: boolean;\n show_dots?: boolean;\n /** Advances on a timer. Ignored when the visitor prefers reduced motion. */\n autoplay?: boolean;\n autoplay_seconds?: number;\n /** The area behind the card. */\n background_color?: StackableColorValue;\n /** Copy on the panel, and the arrow controls. */\n text_color?: StackableColorValue;\n className?: string;\n}\n\nconst DEFAULT_BG = '#ffffff';\nconst DEFAULT_TEXT = '#ffffff';\n\n/**\n * Applied in order, then repeated, whenever a slide sets no colour of its own —\n * so a newly added slide looks deliberate rather than unstyled. Repeater colour\n * fields carry no registered default, which is what lets this apply.\n */\nconst DEFAULT_PANELS: ReadonlyArray<string> = [\n '#4a5240', // olive\n '#5b4636', // clay\n '#2f3e4d', // slate\n];\n\n/** Card height at full width. A promo strip stays short on purpose. */\nconst HEIGHTS: Record<string, number> = { Short: 178, Medium: 220, Tall: 280 };\n\n/** Share of the card's width taken by the image panel. */\nconst MEDIA_FRACTION = 0.58;\n\n/**\n * Below this the split is abandoned and both parts run full width, stacked. A 40%\n * copy column cannot hold a heading and two lines of body text on a phone.\n * Stacking order still follows `media_position`, so that control keeps meaning at\n * every width: `Right` leads with the copy, `Left` leads with the image.\n */\nconst STACK_BELOW_PX = 680;\n\n/** Aspect of the image once stacked, so the banner keeps strip-like proportions. */\nconst STACKED_MEDIA_ASPECT = 16 / 9;\n\nfunction resolveImage(image: PromoBannerSlide['image']): string {\n if (!image) return '';\n if (typeof image === 'string') return image.trim();\n return typeof image.url === 'string' ? image.url.trim() : '';\n}\n\nexport function PromoBanner({\n slides = [],\n show_eyebrow_icon = true,\n media_position = 'Right',\n banner_height = 'Short',\n corner_style = 'Rounded',\n show_arrows = true,\n show_dots = false,\n autoplay = false,\n autoplay_seconds = 6,\n background_color,\n text_color,\n className = '',\n}: PromoBannerProps) {\n const cardRef = useRef<HTMLDivElement>(null);\n const [cardWidth, setCardWidth] = useState(0);\n const [active, setActive] = useState(0);\n\n // Measured rather than a CSS media query, so it tracks the component's own box\n // — the storybook preview simulates width with a fixed-px wrapper that media\n // queries can't see. Same approach as BentoGrid and HexTileGrid.\n useEffect(() => {\n const el = cardRef.current;\n if (!el) return;\n const ro = new ResizeObserver(([entry]) => setCardWidth(entry.contentRect.width));\n ro.observe(el);\n return () => ro.disconnect();\n }, []);\n\n const bg = resolveStackableColor(background_color) || DEFAULT_BG;\n const text = resolveStackableColor(text_color) || DEFAULT_TEXT;\n\n const visible = (slides ?? []).filter(\n (s) =>\n Boolean(s?.heading?.trim()) ||\n Boolean(s?.eyebrow_text?.trim()) ||\n Boolean(resolveImage(s?.image)),\n );\n const total = visible.length;\n\n // Clamped so removing slides in the CMS can't leave the index out of range.\n const index = total > 0 ? Math.min(active, total - 1) : 0;\n\n const go = useCallback(\n (delta: number) => {\n if (total < 2) return;\n setActive((i) => (((i + delta) % total) + total) % total);\n },\n [total],\n );\n\n // Autoplay, held back when the visitor has asked for less motion.\n useEffect(() => {\n if (!autoplay || total < 2) return;\n const reduced =\n typeof window !== 'undefined' &&\n typeof window.matchMedia === 'function' &&\n window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n if (reduced) return;\n const seconds = Math.max(2, Number(autoplay_seconds) || 6);\n const t = window.setInterval(() => setActive((i) => (i + 1) % total), seconds * 1000);\n return () => window.clearInterval(t);\n }, [autoplay, autoplay_seconds, total]);\n\n const stacked = cardWidth > 0 && cardWidth < STACK_BELOW_PX;\n const height = HEIGHTS[banner_height] ?? HEIGHTS.Short;\n const rounded = corner_style !== 'Square';\n const mediaFirst = media_position === 'Left';\n\n if (total === 0) {\n return (\n <section className={className} style={{ backgroundColor: bg }}>\n <div className=\"component-container mx-auto px-6 py-10\">\n <p className=\"text-sm\" style={{ color: hexToRgba('#111827', 0.6) }}>\n No promo slides added yet.\n </p>\n </div>\n </section>\n );\n }\n\n // The controls sit over whatever photography the slide carries, so they get a\n // surface tinted from the active panel rather than relying on the image being\n // dark. A bare translucent border vanishes over pale imagery.\n const activePanel =\n resolveStackableColor(visible[index]?.background_color) ||\n DEFAULT_PANELS[index % DEFAULT_PANELS.length];\n const controlStyle: React.CSSProperties = {\n backgroundColor: hexToRgba(activePanel, 0.72),\n borderColor: hexToRgba(text, 0.5),\n color: text,\n backdropFilter: 'blur(2px)',\n };\n\n return (\n <section className={className} style={{ backgroundColor: bg }}>\n <div className=\"component-container mx-auto px-6 py-8 lg:py-12\">\n <div\n ref={cardRef}\n className={`relative w-full overflow-hidden ${rounded ? 'rounded-2xl' : ''}`}\n // Stacked, the height comes from the content instead — a fixed strip\n // height would crush the copy once it sits under the image.\n style={{ height: stacked ? undefined : `${height}px` }}\n >\n {visible.map((slide, i) => {\n const panel = resolveStackableColor(slide.background_color) || DEFAULT_PANELS[i % DEFAULT_PANELS.length];\n const src = resolveImage(slide.image);\n const href = slide.cta_link?.href?.trim();\n const ctaLabel = slide.cta_label?.trim() || slide.cta_link?.title?.trim() || '';\n const isActive = i === index;\n\n const copy = (\n <div\n className=\"flex min-w-0 flex-col justify-center\"\n style={{\n flex: stacked ? undefined : `0 0 ${((1 - MEDIA_FRACTION) * 100).toFixed(2)}%`,\n padding: stacked ? '1.5rem' : '1.75rem 2rem',\n }}\n >\n {slide.eyebrow_text && (\n <span\n className=\"mb-2.5 flex items-center gap-1.5 text-[10px] font-semibold uppercase leading-none tracking-[0.18em]\"\n style={{ color: hexToRgba(text, 0.85) }}\n >\n {show_eyebrow_icon && <span aria-hidden>&#10022;</span>}\n {slide.eyebrow_text}\n </span>\n )}\n\n {slide.heading && (\n <h2\n className=\"m-0 text-xl font-medium leading-tight tracking-tight sm:text-2xl\"\n style={{ color: text }}\n >\n {slide.heading}\n </h2>\n )}\n\n {slide.description && (\n <p\n className=\"m-0 mt-2 max-w-sm whitespace-pre-line text-[13px] leading-relaxed\"\n style={{ color: hexToRgba(text, 0.78) }}\n >\n {slide.description}\n </p>\n )}\n\n {ctaLabel && (\n <span className=\"mt-4 inline-flex\">\n {href ? (\n <a\n href={href}\n className=\"inline-flex items-center gap-2 border-b pb-1 text-[13px] font-medium transition-opacity duration-200 hover:opacity-80\"\n style={{ color: text, borderColor: hexToRgba(text, 0.55) }}\n // Slides that are not showing must stay out of the tab\n // order, or keyboard focus lands on an invisible link.\n tabIndex={isActive ? 0 : -1}\n aria-hidden={!isActive}\n >\n {ctaLabel}\n <span aria-hidden>&#8594;</span>\n </a>\n ) : (\n <span\n className=\"inline-flex items-center gap-2 border-b pb-1 text-[13px] font-medium\"\n style={{ color: text, borderColor: hexToRgba(text, 0.55) }}\n >\n {ctaLabel}\n <span aria-hidden>&#8594;</span>\n </span>\n )}\n </span>\n )}\n </div>\n );\n\n const media = (\n <div\n className=\"relative shrink-0 overflow-hidden\"\n style={\n stacked\n ? { width: '100%', aspectRatio: String(STACKED_MEDIA_ASPECT) }\n : { flex: `0 0 ${(MEDIA_FRACTION * 100).toFixed(2)}%`, height: '100%' }\n }\n >\n {src ? (\n <img\n src={src}\n alt={slide.image_alt || slide.heading || ''}\n className=\"h-full w-full object-cover\"\n loading={i === 0 ? undefined : 'lazy'}\n />\n ) : (\n <span aria-hidden className=\"block h-full w-full\" style={{ backgroundColor: hexToRgba(text, 0.12) }} />\n )}\n </div>\n );\n\n return (\n <div\n key={i}\n // All slides stay mounted and crossfade. Rendering only the\n // active one makes each change a mount, which pops rather than\n // transitions — the fault Gallery Carousel had to fix.\n className={`${stacked ? 'relative' : 'absolute inset-0'} flex ${\n stacked\n ? mediaFirst\n ? 'flex-col-reverse'\n : 'flex-col'\n : mediaFirst\n ? 'flex-row-reverse'\n : 'flex-row'\n } transition-opacity duration-500`}\n style={{\n backgroundColor: panel,\n opacity: isActive ? 1 : 0,\n pointerEvents: isActive ? undefined : 'none',\n // Stacked slides are in flow, so the inactive ones have to be\n // pulled out of it rather than merely faded.\n display: stacked && !isActive ? 'none' : undefined,\n }}\n aria-hidden={!isActive}\n >\n {copy}\n {media}\n </div>\n );\n })}\n\n {/* ── Controls ─────────────────────────────────────────────────── */}\n {show_arrows && total > 1 && (\n <div className=\"absolute top-4 right-4 z-10 flex items-center gap-2\">\n {([-1, 1] as const).map((delta) => (\n <button\n key={delta}\n type=\"button\"\n onClick={() => go(delta)}\n aria-label={delta < 0 ? 'Previous slide' : 'Next slide'}\n className=\"flex size-8 items-center justify-center rounded-full border text-xs leading-none transition-opacity duration-200 hover:opacity-70\"\n style={controlStyle}\n >\n <span aria-hidden>{delta < 0 ? '‹' : '›'}</span>\n </button>\n ))}\n </div>\n )}\n\n {show_dots && total > 1 && (\n // Given the same tinted surface as the arrows: bare dots at\n // bottom-centre land over the image panel, where white on pale\n // photography is invisible.\n <div\n className=\"absolute bottom-4 right-4 z-10 flex items-center gap-1.5 rounded-full border px-2.5 py-1.5\"\n style={controlStyle}\n >\n {visible.map((_, i) => (\n <button\n key={i}\n type=\"button\"\n onClick={() => setActive(i)}\n aria-label={`Go to slide ${i + 1}`}\n aria-current={i === index}\n className=\"size-1.5 rounded-full transition-opacity duration-200\"\n style={{ backgroundColor: text, opacity: i === index ? 1 : 0.45 }}\n />\n ))}\n </div>\n )}\n </div>\n </div>\n </section>\n );\n}\n\nexport default PromoBanner;\n","import React, { useState, useEffect, useCallback } from 'react';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface HeroBannerCtaButton {\n text?: string;\n link?: string;\n}\n\nexport interface HeroBannerCarouselImage {\n image?: string | { url?: string };\n}\n\nexport interface HeroBannerProps {\n heading?: string;\n subheading?: string;\n cta_button?: HeroBannerCtaButton;\n background_video?: string | { url?: string };\n background_image?: string | { url?: string };\n enable_carousel?: boolean;\n carousel_images?: HeroBannerCarouselImage[];\n text_alignment?: 'left' | 'center' | 'right' | string;\n banner_height?: 'Screen' | 'Auto' | string;\n banner_width?: 'Screen' | string;\n gradient?: 'Black' | string;\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n button_color?: StackableColorValue;\n button_text_color?: StackableColorValue;\n className?: string;\n}\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveMediaUrl(media?: string | { url?: string }): string {\n if (!media) return '';\n if (typeof media === 'string') return media.trim();\n return typeof media.url === 'string' ? media.url.trim() : '';\n}\n\nexport function HeroBanner({\n heading = 'Welcome to Your Site',\n subheading = 'Discover amazing products and services',\n cta_button = { text: 'Get Started', link: '/test' },\n background_video,\n background_image,\n enable_carousel = false,\n carousel_images = [],\n text_alignment,\n banner_height,\n banner_width,\n gradient,\n background_color,\n text_color,\n button_color,\n button_text_color,\n className,\n}: HeroBannerProps) {\n const [activeSlide, setActiveSlide] = useState(0);\n\n const videoUrl = resolveMediaUrl(background_video);\n const imageUrl = resolveMediaUrl(background_image);\n const slides = (carousel_images ?? [])\n .map(ci => resolveMediaUrl(ci?.image))\n .filter(Boolean)\n .map(image => ({ image }));\n const isCarousel = enable_carousel && slides.length > 1;\n const totalSlides = slides.length;\n\n const goNext = useCallback(() => setActiveSlide(i => (i + 1) % totalSlides), [totalSlides]);\n const goPrev = useCallback(() => setActiveSlide(i => (i - 1 + totalSlides) % totalSlides), [totalSlides]);\n\n // Auto-advance\n useEffect(() => {\n if (!isCarousel) return;\n const timer = setInterval(goNext, 5000);\n return () => clearInterval(timer);\n }, [isCarousel, goNext]);\n\n // Reset slide when carousel images change\n useEffect(() => { setActiveSlide(0); }, [totalSlides]);\n\n const alignmentClasses: Record<string, string> = {\n Left: 'text-left',\n Center: 'text-center mx-auto',\n Right: 'text-right',\n };\n const alignClass = (text_alignment && alignmentClasses[text_alignment]) || 'text-left';\n const heightClass = banner_height === 'Screen' ? 'h-screen' : 'h-auto';\n const widthClass = banner_width === 'Screen' ? 'w-full' : 'container';\n\n const hasVideo = Boolean(videoUrl);\n const hasImage = Boolean(imageUrl);\n const hasSlides = slides.length > 0;\n\n const isBlackGradient = gradient === 'Black';\n const gradientClass =\n !hasVideo && !hasImage && !hasSlides\n ? isBlackGradient\n ? 'bg-gradient-to-r from-black to-transparent'\n : 'bg-gradient-to-r from-white to-transparent'\n : '';\n\n const overlayGradientClass = isBlackGradient\n ? 'bg-gradient-to-r from-black/80 via-black/35 to-transparent'\n : 'bg-gradient-to-r from-white/80 via-white/35 to-transparent';\n\n const resolvedBg = resolveStackableColor(background_color as StackableColorValue);\n const resolvedTextColor = resolveStackableColor(text_color as StackableColorValue);\n const resolvedButtonColor = resolveStackableColor(button_color as StackableColorValue);\n const resolvedButtonTextColor = resolveStackableColor(button_text_color as StackableColorValue);\n\n const sectionStyle: React.CSSProperties = {\n minHeight: '600px',\n ...(!hasVideo && hasImage && !hasSlides ? {\n backgroundImage: `url(${imageUrl})`,\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n backgroundRepeat: 'no-repeat',\n } : {}),\n ...(resolvedBg && !hasVideo && !hasImage && !hasSlides ? { backgroundColor: resolvedBg } : {}),\n };\n\n const textColorStyle: React.CSSProperties | undefined = resolvedTextColor ? { color: resolvedTextColor } : undefined;\n\n return (\n <section\n className={`${heightClass} ${widthClass} ${gradientClass} flex items-center relative text-white overflow-hidden ${className ?? ''}`.trim()}\n style={sectionStyle}\n >\n {/* ── Carousel background slides ──────────────────────────────── */}\n {hasSlides && slides.map((slide, idx) => (\n <div\n key={idx}\n className=\"absolute inset-0 transition-opacity duration-700\"\n style={{\n backgroundImage: `url(${slide.image})`,\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n opacity: idx === activeSlide ? 1 : 0,\n zIndex: 0,\n }}\n />\n ))}\n\n {/* ── Video background ────────────────────────────────────────── */}\n {hasVideo && (\n <video\n key={videoUrl}\n autoPlay\n loop\n muted\n playsInline\n className=\"absolute inset-0 w-full h-full object-cover z-0\"\n >\n <source src={videoUrl} type=\"video/mp4\" />\n </video>\n )}\n\n {/* ── Gradient overlay ────────────────────────────────────────── */}\n {(hasVideo || hasImage || hasSlides) && (\n <div\n className={`absolute inset-0 z-[1] pointer-events-none ${overlayGradientClass}`}\n aria-hidden\n />\n )}\n\n {/* ── Content ─────────────────────────────────────────────────── */}\n <div\n className={`component-container px-6 py-4 relative z-10 ${alignClass} ${\n isBlackGradient ? 'text-white' : 'text-gray-900'\n }`}\n >\n <h1 className=\"text-5xl font-bold mb-4\" style={textColorStyle}>{heading}</h1>\n {subheading && <p className=\"text-xl mb-8\" style={textColorStyle}>{subheading}</p>}\n {cta_button?.link && (\n <a\n href={cta_button.link}\n rel=\"noopener noreferrer\"\n className=\"btn primary-btn\"\n style={{\n ...(resolvedButtonColor ? { backgroundColor: resolvedButtonColor, borderColor: resolvedButtonColor } : {}),\n ...(resolvedButtonTextColor ? { color: resolvedButtonTextColor } : {}),\n }}\n >\n {cta_button.text}\n </a>\n )}\n </div>\n\n {/* ── Carousel controls ───────────────────────────────────────── */}\n {isCarousel && (\n <>\n {/* Prev / Next arrows */}\n <button\n type=\"button\"\n onClick={goPrev}\n aria-label=\"Previous slide\"\n className=\"absolute left-4 top-1/2 -translate-y-1/2 z-20 flex items-center justify-center w-10 h-10 rounded-full bg-black/30 hover:bg-black/55 text-white transition-colors\"\n >\n &#8592;\n </button>\n <button\n type=\"button\"\n onClick={goNext}\n aria-label=\"Next slide\"\n className=\"absolute right-4 top-1/2 -translate-y-1/2 z-20 flex items-center justify-center w-10 h-10 rounded-full bg-black/30 hover:bg-black/55 text-white transition-colors\"\n >\n &#8594;\n </button>\n\n {/* Dot indicators */}\n <div className=\"absolute bottom-5 left-1/2 -translate-x-1/2 z-20 flex items-center gap-2\">\n {slides.map((_, idx) => (\n <button\n key={idx}\n type=\"button\"\n onClick={() => setActiveSlide(idx)}\n aria-label={`Go to slide ${idx + 1}`}\n className={`h-2 rounded-full transition-all duration-300 ${\n idx === activeSlide ? 'w-6 bg-white' : 'w-2 bg-white/50 hover:bg-white/75'\n }`}\n />\n ))}\n </div>\n </>\n )}\n </section>\n );\n}\n\nexport default HeroBanner;\n","import React from 'react';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface SplitHeroBannerCtaButton {\n text?: string;\n link?: string;\n}\n\nexport interface SplitHeroBannerVideoOptions {\n video?: string | { url?: string };\n video_controls?: string;\n style?: string;\n in_loop?: boolean;\n}\n\nexport interface SplitHeroBannerProps {\n heading?: string;\n description?: string;\n cta_button?: SplitHeroBannerCtaButton;\n video_options?: SplitHeroBannerVideoOptions;\n image?: string | { url?: string };\n media_position?: 'left' | 'right' | string;\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n className?: string;\n}\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveMediaUrl(media?: string | { url?: string }): string {\n if (!media) return '';\n if (typeof media === 'string') return media.trim();\n return typeof media.url === 'string' ? media.url.trim() : '';\n}\n\nexport function SplitHeroBanner({\n heading = 'Split Hero Banner',\n description = 'This is a hero section with content on one side and an image placeholder on the other.',\n cta_button = { text: 'Learn More', link: '/test' },\n video_options: videoOptions,\n image = '',\n media_position: mediaPosition = 'right',\n background_color,\n text_color,\n className,\n}: SplitHeroBannerProps) {\n const videoUrl = resolveMediaUrl(videoOptions?.video)\n const imageUrl = resolveMediaUrl(image)\n const hasVideo = Boolean(videoUrl)\n const hasImage = Boolean(imageUrl)\n const isMediaLeft = mediaPosition?.toLowerCase() === 'left'\n\n const bgColor = resolveStackableColor(background_color);\n const txtColor = resolveStackableColor(text_color);\n const descColor = txtColor || '#4b5563'; // fallback matches text-gray-600\n\n const contentSection = (\n <div>\n <h1 className=\"text-4xl font-bold mb-4\" style={txtColor ? { color: txtColor } : undefined}>\n {heading}\n </h1>\n {description && (\n <p className=\"mb-6\" style={{ color: descColor }}>{description}</p>\n )}\n {cta_button?.link && (\n <a href={cta_button.link} rel=\"noopener noreferrer\" className=\"btn primary-btn\">\n {cta_button.text || 'Learn More'}\n </a>\n )}\n </div>\n )\n\n const imageSection = (\n <div className=\"h-64 flex items-center justify-center overflow-hidden relative\">\n {hasVideo ? (\n <video\n className=\"w-full h-full object-cover\"\n autoPlay={videoOptions?.video_controls === 'Autoplay'}\n controls={videoOptions?.style === 'Normal' && videoOptions?.video_controls === 'Show Controls'}\n muted={videoOptions?.video_controls === 'Autoplay'}\n loop={\n (videoOptions?.video_controls === 'Autoplay' || videoOptions?.video_controls === 'Show Controls')\n ? videoOptions?.in_loop\n : false\n }\n playsInline\n src={videoUrl}\n />\n ) : hasImage ? (\n <img\n src={imageUrl}\n alt={heading || 'Hero banner'}\n className=\"w-full h-full object-cover\"\n />\n ) : (\n <div className=\"bg-gray-300 w-full h-full flex items-center justify-center\">\n <span className=\"text-gray-600\">Image Placeholder</span>\n </div>\n )}\n </div>\n )\n\n return (\n <div\n className={`component-container mx-auto px-6 py-4 ${className ?? ''}`.trim()}\n style={bgColor ? { backgroundColor: bgColor } : undefined}\n >\n <div className=\"grid grid-cols-2 gap-8 items-center py-16\">\n {isMediaLeft ? (\n <>\n {imageSection}\n {contentSection}\n </>\n ) : (\n <>\n {contentSection}\n {imageSection}\n </>\n )}\n </div>\n </div>\n )\n}\n\nexport default SplitHeroBanner\n","/* eslint-disable @next/next/no-img-element */\nimport React, { useEffect, useState } from 'react';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\n/** Native Contentstack link field: `{ title, href }`. */\nexport interface HeroBannerClassicLink {\n title?: string;\n href?: string;\n}\n\n/**\n * One line of the headline. `text` renders in the body colour, `accent_text`\n * follows it in the accent colour — which is what lets a single repeater cover\n * a fully accented second line, a trailing accented full stop, or neither.\n */\nexport interface HeroBannerClassicHeadingLine {\n text?: string;\n accent_text?: string;\n}\n\nexport interface HeroBannerClassicAvatar {\n /** Asset URL, or a Contentstack asset object — both are accepted. */\n image?: string | { url?: string };\n image_alt?: string;\n}\n\n/** One rotation of a `Statement` footer item. */\nexport interface HeroBannerClassicStatementEntry {\n text?: string;\n /** Small line under the statement — a route, a date, an attribution. */\n meta?: string;\n}\n\n/**\n * Heterogeneous footer cell, discriminated by `type`. Fields not relevant to a\n * type are simply ignored, the same arrangement `BentoGrid`'s cells use.\n */\nexport interface HeroBannerClassicFooterItem {\n type?: 'Stat' | 'Social Proof' | 'Statement' | 'Promo' | string;\n /** `Stat` figure, or the `Social Proof` count. */\n value?: string;\n label?: string;\n description?: string;\n /** Asset URL, or a Contentstack asset object. */\n icon?: string | { url?: string };\n link?: HeroBannerClassicLink;\n /** Floods the card in the accent colour — the highlighted promo cell. */\n emphasis?: boolean;\n /** `Statement` only. More than one adds prev/next controls. */\n entries?: HeroBannerClassicStatementEntry[];\n}\n\nexport interface HeroBannerClassicProps {\n eyebrow_text?: string;\n heading_lines?: HeroBannerClassicHeadingLine[];\n heading_font?: 'Sans' | 'Serif' | string;\n description?: string;\n primary_cta?: HeroBannerClassicLink;\n primary_cta_icon?: 'None' | 'Arrow' | 'Play' | string;\n secondary_cta?: HeroBannerClassicLink;\n secondary_cta_icon?: 'None' | 'Arrow' | 'Play' | string;\n image?: string | { url?: string };\n image_alt?: string;\n media_position?: 'left' | 'right' | string;\n /** Overlay on the media. Rendered only when `badge_value` is filled. */\n badge_label?: string;\n badge_value?: string;\n badge_caption?: string;\n /** Shared by the inline social proof and by a `Social Proof` footer cell. */\n avatars?: HeroBannerClassicAvatar[];\n /** `Inline` sits under the CTAs; `Cards` spans the full width below. */\n footer_layout?: 'None' | 'Inline' | 'Cards' | string;\n footer_items?: HeroBannerClassicFooterItem[];\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n accent_color?: StackableColorValue;\n className?: string;\n}\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveImage(image: HeroBannerClassicAvatar['image']): string {\n if (!image) return '';\n if (typeof image === 'string') return image.trim();\n return typeof image.url === 'string' ? image.url.trim() : '';\n}\n\n/** Matches `TeamBanner`'s stack, so the two read as one family. */\nconst SERIF_STACK = 'var(--stackables-font-serif, \"Playfair Display\", Georgia, \"Times New Roman\", serif)';\n\nconst AVATAR_STACK_LIMIT = 4;\n\nfunction ArrowIcon({ className = '' }: { className?: string }) {\n return (\n <svg viewBox=\"0 0 20 20\" fill=\"none\" aria-hidden className={`size-4 shrink-0 ${className}`}>\n <path d=\"M4 10h11M11 5l5 5-5 5\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n}\n\nfunction PlayIcon({ className = '' }: { className?: string }) {\n return (\n <svg viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden className={`size-4 shrink-0 ${className}`}>\n <path d=\"M7 4.5v11l9-5.5-9-5.5Z\" />\n </svg>\n );\n}\n\nfunction CtaIcon({ kind }: { kind: string }) {\n if (kind === 'Arrow') return <ArrowIcon />;\n if (kind === 'Play') return <PlayIcon />;\n return null;\n}\n\nexport function HeroBannerClassic({\n eyebrow_text = '',\n heading_lines = [],\n heading_font = 'Sans',\n description = '',\n primary_cta,\n primary_cta_icon = 'Arrow',\n secondary_cta,\n secondary_cta_icon = 'None',\n image,\n image_alt = '',\n media_position = 'right',\n badge_label = '',\n badge_value = '',\n badge_caption = '',\n avatars = [],\n footer_layout = 'Inline',\n footer_items = [],\n background_color,\n text_color,\n accent_color,\n className = '',\n}: HeroBannerClassicProps) {\n const resolvedBg = resolveStackableColor(background_color);\n const resolvedText = resolveStackableColor(text_color);\n const resolvedAccent = resolveStackableColor(accent_color);\n\n\n const sectionClasses = 'bg-neutral-950';\n\n const headingClasses = 'text-white';\n\n const bodyClasses = 'text-neutral-300';\n\n const eyebrowClasses = 'text-neutral-200';\n\n const cardClasses = 'bg-white/[0.06] border-white/10';\n\n const outlineBtnClasses = 'border-white/35 text-white hover:bg-white/10';\n\n const avatarRingClasses = 'ring-neutral-950';\n\n // The badge sits on photography, so it stays dark-on-accent and leans on the\n // accent fill for contrast rather than on the surrounding surface.\n const accent = resolvedAccent || '#d4ff3f';\n\n const headingStyle: React.CSSProperties = {\n ...(heading_font === 'Serif' ? { fontFamily: SERIF_STACK } : {}),\n fontSize: 'clamp(2.25rem, 6.5vw, 5rem)',\n lineHeight: 1.02,\n letterSpacing: heading_font === 'Serif' ? '-0.01em' : '-0.02em',\n ...(resolvedText ? { color: resolvedText } : {}),\n };\n\n const src = resolveImage(image);\n const mediaFirst = media_position === 'left';\n const lines = (heading_lines ?? []).filter((l) => Boolean(l?.text?.trim()) || Boolean(l?.accent_text?.trim()));\n const shownAvatars = (avatars ?? []).filter((a) => Boolean(resolveImage(a?.image)));\n const items = (footer_items ?? []).filter(\n (i) => Boolean(i?.value?.trim()) || Boolean(i?.label?.trim()) || Boolean(i?.description?.trim()) || (i?.entries ?? []).length > 0,\n );\n const showFooter = footer_layout !== 'None' && items.length > 0;\n\n const avatarStack = shownAvatars.length > 0 && (\n <span className=\"flex items-center\">\n {shownAvatars.slice(0, AVATAR_STACK_LIMIT).map((a, i) => (\n <img\n key={i}\n src={resolveImage(a.image)}\n alt={a.image_alt || ''}\n className={`-ml-2 size-9 shrink-0 rounded-full object-cover ring-2 first:ml-0 ${avatarRingClasses}`}\n loading=\"lazy\"\n />\n ))}\n {shownAvatars.length > AVATAR_STACK_LIMIT && (\n <span\n className=\"-ml-2 grid size-9 shrink-0 place-items-center rounded-full text-xs font-semibold text-neutral-900 ring-2\"\n style={{ backgroundColor: accent }}\n >\n +\n </span>\n )}\n </span>\n );\n\n const ctaButton = (\n link: HeroBannerClassicLink | undefined,\n icon: string,\n variant: 'primary' | 'secondary',\n ) => {\n const label = link?.title?.trim();\n if (!label) return null;\n const common = 'inline-flex items-center gap-2.5 rounded-full px-6 py-3 text-sm font-semibold tracking-wide transition-colors duration-200';\n return (\n <a\n href={link?.href?.trim() || '#'}\n className={\n variant === 'primary'\n ? `${common} text-neutral-900 hover:opacity-90`\n : `${common} border ${outlineBtnClasses}`\n }\n style={variant === 'primary' ? { backgroundColor: accent } : undefined}\n >\n {label}\n <CtaIcon kind={icon} />\n </a>\n );\n };\n\n return (\n <section\n className={`${sectionClasses} ${className}`.trim()}\n style={resolvedBg ? { backgroundColor: resolvedBg } : undefined}\n >\n <div className=\"component-container mx-auto px-6 py-14 lg:py-20\">\n {/* ── Copy + media ───────────────────────────────────────────────── */}\n <div className={`flex flex-wrap items-center gap-x-10 gap-y-10 ${mediaFirst ? 'flex-row-reverse' : ''}`}>\n <div className=\"min-w-[19rem] flex-1\">\n {eyebrow_text && (\n <div className=\"mb-6 flex items-center gap-3\">\n <span aria-hidden className=\"block h-[3px] w-8 shrink-0\" style={{ backgroundColor: accent }} />\n <p className={`text-xs font-semibold uppercase tracking-[0.22em] ${eyebrowClasses}`}>\n {eyebrow_text}\n </p>\n </div>\n )}\n\n {lines.length > 0 && (\n <h1 className={`font-extrabold ${headingClasses}`} style={headingStyle}>\n {lines.map((line, i) => (\n <span key={i} className=\"block\">\n {line.text}\n {line.accent_text && (\n // No separating space when the accent is punctuation — a\n // space lets a trailing full stop wrap onto its own line\n // once the preceding words fill the measure.\n <span style={{ color: accent }}>\n {line.text && !/^[.,;:!?…]/.test(line.accent_text.trim()) ? ' ' : ''}\n {line.accent_text}\n </span>\n )}\n </span>\n ))}\n </h1>\n )}\n\n {description && (\n <p className={`mt-6 max-w-md whitespace-pre-line text-[15px] leading-relaxed ${bodyClasses}`}>\n {description}\n </p>\n )}\n\n {(primary_cta?.title || secondary_cta?.title) && (\n <div className=\"mt-8 flex flex-wrap items-center gap-4\">\n {ctaButton(primary_cta, primary_cta_icon, 'primary')}\n {ctaButton(secondary_cta, secondary_cta_icon, 'secondary')}\n </div>\n )}\n\n {/* Inline footer lives in the copy column, under the buttons. */}\n {showFooter && footer_layout === 'Inline' && (\n <div className=\"mt-12 flex flex-wrap items-center gap-x-10 gap-y-6\">\n {items.map((item, i) => (\n <InlineFooterItem\n key={i}\n item={item}\n accent={accent}\n avatarStack={avatarStack}\n headingClass={headingClasses}\n bodyClass={bodyClasses}\n />\n ))}\n </div>\n )}\n </div>\n\n {/* ── Media ────────────────────────────────────────────────────── */}\n <div className=\"relative min-w-[19rem] flex-1\">\n <div className=\"relative w-full overflow-hidden rounded-2xl\" style={{ aspectRatio: '4 / 3' }}>\n {src ? (\n <img src={src} alt={image_alt} className=\"absolute inset-0 h-full w-full object-cover\" loading=\"lazy\" />\n ) : (\n <span aria-hidden className=\"absolute inset-0 bg-neutral-200 dark:bg-neutral-800\" />\n )}\n </div>\n\n {badge_value && (\n <div\n className=\"absolute right-4 top-4 max-w-[11rem] rounded-xl px-4 py-3 text-center text-neutral-900 shadow-lg\"\n style={{ backgroundColor: accent }}\n >\n {badge_label && (\n <p className=\"text-[10px] font-semibold uppercase tracking-[0.18em] opacity-80\">{badge_label}</p>\n )}\n <p className=\"text-2xl font-extrabold leading-tight\">{badge_value}</p>\n {badge_caption && <p className=\"mt-0.5 text-[10px] uppercase tracking-wide opacity-80\">{badge_caption}</p>}\n </div>\n )}\n </div>\n </div>\n\n {/* ── Card footer spans the full width below both columns ────────── */}\n {showFooter && footer_layout === 'Cards' && (\n <div className=\"mt-12 flex flex-wrap gap-4\">\n {items.map((item, i) => (\n <CardFooterItem\n key={i}\n item={item}\n accent={accent}\n avatarStack={avatarStack}\n cardClass={cardClasses}\n headingClass={headingClasses}\n bodyClass={bodyClasses}\n />\n ))}\n </div>\n )}\n </div>\n </section>\n );\n}\n\n// ─── Footer cells ─────────────────────────────────────────────────────────────\n\ninterface CellProps {\n item: HeroBannerClassicFooterItem;\n accent: string;\n avatarStack: React.ReactNode;\n headingClass: string;\n bodyClass: string;\n}\n\nfunction InlineFooterItem({ item, accent, avatarStack, headingClass, bodyClass }: CellProps) {\n const iconSrc = resolveImage(item.icon);\n\n if (item.type === 'Social Proof') {\n return (\n <div className=\"flex items-center gap-4\">\n {avatarStack}\n <div>\n {item.value && (\n <p className={`text-base font-semibold ${headingClass}`}>\n <span style={{ color: accent }}>{item.value}</span> {item.label}\n </p>\n )}\n {!item.value && item.label && <p className={`text-sm ${bodyClass}`}>{item.label}</p>}\n </div>\n </div>\n );\n }\n\n // Stat is the inline default — a figure with a small label above it.\n return (\n <div className=\"flex items-center gap-3\">\n {iconSrc && <img src={iconSrc} alt=\"\" className=\"size-6 shrink-0 object-contain\" loading=\"lazy\" />}\n <div>\n {item.label && (\n <p className={`text-[10px] font-semibold uppercase tracking-[0.18em] ${bodyClass}`}>{item.label}</p>\n )}\n {item.value && <p className={`text-2xl font-bold leading-tight ${headingClass}`}>{item.value}</p>}\n </div>\n </div>\n );\n}\n\nfunction CardFooterItem({\n item,\n accent,\n avatarStack,\n cardClass,\n headingClass,\n bodyClass,\n}: CellProps & { cardClass: string }) {\n const [index, setIndex] = useState(0);\n const entries = (item.entries ?? []).filter((e) => Boolean(e?.text?.trim()));\n const iconSrc = resolveImage(item.icon);\n\n // Editors add and remove entries live in the controls panel; keep the index\n // inside the array rather than letting it point past the end.\n useEffect(() => { setIndex(0); }, [entries.length]);\n\n const base = `min-w-[16rem] flex-1 rounded-2xl border p-6 ${cardClass}`;\n\n if (item.type === 'Promo') {\n const href = item.link?.href?.trim();\n const inner = (\n <>\n <div className=\"flex items-start justify-between gap-4\">\n {iconSrc ? (\n <img src={iconSrc} alt=\"\" className=\"size-8 shrink-0 object-contain\" loading=\"lazy\" />\n ) : (\n <span />\n )}\n {href && (\n <span className=\"grid size-9 shrink-0 place-items-center rounded-full bg-neutral-900 text-white\">\n <ArrowIcon className=\"-rotate-45\" />\n </span>\n )}\n </div>\n {item.value && <p className=\"mt-6 text-xl font-bold leading-snug\">{item.value}</p>}\n {item.description && <p className=\"mt-2 whitespace-pre-line text-sm opacity-80\">{item.description}</p>}\n </>\n );\n const promoClass = item.emphasis\n ? 'min-w-[16rem] flex-1 rounded-2xl p-6 text-neutral-900'\n : `${base} ${headingClass}`;\n const promoStyle = item.emphasis ? { backgroundColor: accent } : undefined;\n return href ? (\n <a href={href} className={`${promoClass} block transition-opacity duration-200 hover:opacity-95`} style={promoStyle}>\n {inner}\n </a>\n ) : (\n <div className={promoClass} style={promoStyle}>{inner}</div>\n );\n }\n\n if (item.type === 'Statement') {\n const current = entries[index];\n return (\n <div className={base}>\n <div className=\"flex items-start gap-4\">\n {entries.length > 1 && (\n <button\n type=\"button\"\n onClick={() => setIndex((i) => (i - 1 + entries.length) % entries.length)}\n aria-label=\"Previous statement\"\n className={`mt-1 grid size-8 shrink-0 place-items-center rounded-full border ${cardClass} ${headingClass}`}\n >\n <ArrowIcon className=\"rotate-180\" />\n </button>\n )}\n <p className={`flex-1 text-sm leading-relaxed ${headingClass}`}>{current?.text ?? item.description}</p>\n {entries.length > 1 && (\n <button\n type=\"button\"\n onClick={() => setIndex((i) => (i + 1) % entries.length)}\n aria-label=\"Next statement\"\n className={`mt-1 grid size-8 shrink-0 place-items-center rounded-full border ${cardClass} ${headingClass}`}\n >\n <ArrowIcon />\n </button>\n )}\n </div>\n {current?.meta && <p className={`mt-6 text-xs ${bodyClass}`}>{current.meta}</p>}\n </div>\n );\n }\n\n if (item.type === 'Social Proof') {\n return (\n <div className={base}>\n <div className=\"flex items-center gap-4\">\n {avatarStack}\n <div>\n {item.value && <p className={`text-2xl font-bold leading-tight ${headingClass}`}>{item.value}</p>}\n {item.label && <p className={`text-sm ${bodyClass}`}>{item.label}</p>}\n </div>\n </div>\n {item.description && (\n <p className={`mt-5 whitespace-pre-line text-sm leading-relaxed ${bodyClass}`}>{item.description}</p>\n )}\n </div>\n );\n }\n\n // Stat\n return (\n <div className={base}>\n {iconSrc && <img src={iconSrc} alt=\"\" className=\"mb-3 size-7 object-contain\" loading=\"lazy\" />}\n {item.label && <p className={`text-[10px] font-semibold uppercase tracking-[0.18em] ${bodyClass}`}>{item.label}</p>}\n {item.value && <p className={`mt-1 text-3xl font-bold leading-tight ${headingClass}`}>{item.value}</p>}\n {item.description && <p className={`mt-2 text-sm ${bodyClass}`}>{item.description}</p>}\n </div>\n );\n}\n\nexport default HeroBannerClassic;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { resolveStackableColor, hexToRgba } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface SpotlightHeroCtaLink {\n title?: string;\n href?: string;\n}\n\nexport interface SpotlightHeroCtaItem {\n link?: SpotlightHeroCtaLink;\n type?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'link' | string;\n}\n\n/** Deliberately one look, always dark — a spotlight only reads as a spotlight\n * against near-black. There's no light-mode version of this design, so unlike\n * most components in this library there's no `theme` prop here. */\nexport interface SpotlightHeroProps {\n heading?: string;\n subheading?: string;\n description?: string;\n /** Repeatable — each entry picks its own visual weight via `type`. */\n cta?: SpotlightHeroCtaItem[];\n /** Where the light fixture sits — the beam always angles down toward the\n * content, which never moves. Only the source (and its angle) changes. */\n spotlight_position?: 'left-top' | 'center-top' | 'right-top' | string;\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n /** The spotlight's own color — also tints the CTA outline and the heading's glow. */\n accent_color?: StackableColorValue;\n className?: string;\n}\n\n/** Horizontal position of the fixture at the top edge. */\nconst APEX_PCT: Record<string, number> = { 'left-top': 16, 'center-top': 50, 'right-top': 84 };\n\n/** Fires once the section first enters the viewport — a spotlight that's already\n * lit before anyone scrolls to it reads as static artwork, not a stage cue. */\nfunction useRevealOnce() {\n const ref = useRef<HTMLElement | null>(null);\n const [visible, setVisible] = useState(false);\n\n useEffect(() => {\n const el = ref.current;\n if (!el) return;\n if (typeof window !== 'undefined' && window.matchMedia?.('(prefers-reduced-motion: reduce)').matches) {\n setVisible(true);\n return;\n }\n const observer = new IntersectionObserver(\n (entries) => {\n if (entries[0]?.isIntersecting) {\n setVisible(true);\n observer.disconnect();\n }\n },\n { threshold: 0.25 }\n );\n observer.observe(el);\n return () => observer.disconnect();\n }, []);\n\n return { ref, visible };\n}\n\nexport function SpotlightHero({\n heading = 'Stackables',\n subheading = 'Every component, ready for its moment.',\n description = 'Browse, preview, and drop production-ready sections into your next project — from hero banners to pricing cards, all built for Contentstack.',\n cta = [\n { link: { title: 'Browse Components', href: '#' }, type: 'primary' },\n { link: { title: 'View Live Demo', href: '#' }, type: 'secondary' },\n ],\n spotlight_position = 'center-top',\n background_color,\n text_color,\n accent_color,\n className = '',\n}: SpotlightHeroProps) {\n const { ref, visible } = useRevealOnce();\n\n const resolvedBg = resolveStackableColor(background_color);\n const resolvedText = resolveStackableColor(text_color);\n // Tuned for a near-black background specifically — this fixed design never\n // renders on a light canvas, so there's no lighter/darker pair to pick between.\n const resolvedAccent = resolveStackableColor(accent_color) || '#ff4d4d';\n\n const pos = APEX_PCT[spotlight_position as string] !== undefined ? (spotlight_position as string) : 'center-top';\n const apex = APEX_PCT[pos];\n // Content always lands at dead center — a straight-line interpolation from the\n // fixture (apex%, -2%) to the stage (50%, 46%) naturally resolves to x=50 at\n // t=1 no matter where the fixture sits, so the landing point never has to be\n // special-cased. Four overlapping, unskewed glows along that path (rather than\n // one rotated shape) read as a single continuous beam without a hard edge:\n // a rotated ellipse's own far boundary can sweep into view as a near-straight\n // line right where it crosses a corner, and too few waypoints leaves a visible\n // dim gap between them.\n // A real spotlight cone is narrow at the fixture and flares out as it travels —\n // each waypoint's own size grows with `t`, from 60% of the base size at the\n // source up to full size at the landing spot. Nine closely-spaced steps (not\n // four) keep consecutive glows overlapping generously even at the narrow end,\n // where sparser steps left a visibly thinner waist.\n const BEAM_STEPS = [0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1];\n const BEAM_BASE_WIDTH = 38;\n const BEAM_BASE_HEIGHT = 50;\n const beamWaypoints = BEAM_STEPS.map((t) => {\n const growth = 0.6 + 0.4 * t;\n return {\n x: apex + (50 - apex) * t,\n y: -2 + (46 - -2) * t,\n width: BEAM_BASE_WIDTH * growth,\n height: BEAM_BASE_HEIGHT * growth,\n };\n });\n\n // A pure radial-gradient falloff (no clip-path, no hard-edged shape of any\n // kind) is what lets this dissolve into whatever comes before or after it.\n const beamAlpha = 0.2;\n\n const sectionStyle: React.CSSProperties = { backgroundColor: resolvedBg || '#080b14' };\n const textStyle: React.CSSProperties | undefined = resolvedText ? { color: resolvedText } : undefined;\n const mutedTextStyle: React.CSSProperties | undefined = resolvedText ? { color: hexToRgba(resolvedText, 0.72) } : undefined;\n const fadedTextStyle: React.CSSProperties | undefined = resolvedText ? { color: hexToRgba(resolvedText, 0.5) } : undefined;\n\n // The beam \"switches on\": each glow fades and settles from a slightly smaller\n // footprint, pivoting from its own anchor point.\n const beamRevealStyle = (atPct: number): React.CSSProperties => ({\n opacity: visible ? 1 : 0,\n transform: `scale(${visible ? 1 : 0.92})`,\n transformOrigin: `${atPct}% 0%`,\n transition: 'opacity 1200ms ease-out, transform 1200ms ease-out',\n });\n\n const copyRevealStyle = (delayMs: number): React.CSSProperties => ({\n opacity: visible ? 1 : 0,\n transform: visible ? 'translateY(0)' : 'translateY(14px)',\n transition: `opacity 700ms ease-out ${delayMs}ms, transform 700ms ease-out ${delayMs}ms`,\n });\n\n const ctaBaseClasses = 'inline-flex w-full items-center justify-center gap-1.5 rounded-full px-7 py-3 text-sm font-semibold transition-colors sm:w-auto';\n const secondaryCtaClasses = 'text-neutral-300 ring-1 ring-white/15 hover:bg-white/5';\n const ghostCtaClasses = 'text-neutral-300 hover:bg-white/5';\n\n const renderCtaItem = (item: SpotlightHeroCtaItem, key: number) => {\n const link = item?.link;\n if (!link?.title) return null;\n const type = item?.type || 'primary';\n const href = link.href || '#';\n\n if (type === 'link') {\n return (\n <a key={key} href={href} className=\"inline-flex items-center gap-1.5 text-sm font-semibold underline-offset-4 hover:underline\" style={{ color: resolvedAccent }}>\n {link.title}\n <span aria-hidden=\"true\">&rarr;</span>\n </a>\n );\n }\n\n if (type === 'outline') {\n return (\n <a\n key={key}\n href={href}\n className={ctaBaseClasses}\n style={{ color: resolvedAccent, border: `1px solid ${hexToRgba(resolvedAccent, 0.6)}`, backgroundColor: hexToRgba(resolvedAccent, 0.06) }}\n >\n {link.title}\n <span aria-hidden=\"true\">&rarr;</span>\n </a>\n );\n }\n\n if (type === 'ghost') {\n return (\n <a key={key} href={href} className={`${ctaBaseClasses} ${ghostCtaClasses}`}>\n {link.title}\n </a>\n );\n }\n\n if (type === 'secondary') {\n return (\n <a key={key} href={href} className={`${ctaBaseClasses} ${secondaryCtaClasses}`}>\n {link.title}\n </a>\n );\n }\n\n // primary — the default and the fallback for any unrecognized type\n return (\n <a\n key={key}\n href={href}\n className={`${ctaBaseClasses} text-white hover:opacity-90`}\n style={{ backgroundColor: resolvedAccent, boxShadow: `0 0 24px ${hexToRgba(resolvedAccent, 0.35)}` }}\n >\n {link.title}\n <span aria-hidden=\"true\">&rarr;</span>\n </a>\n );\n };\n\n return (\n <section\n ref={ref as React.RefObject<HTMLElement>}\n className={`relative flex min-h-screen w-full items-center overflow-hidden ${className}`.trim()}\n style={sectionStyle}\n >\n {/* Beam — four overlapping glows walking from the fixture down to the\n fixed, centered landing spot. Generously sized so each overlaps the\n next; no gap in intensity along the path. */}\n {beamWaypoints.map(({ x, y, width, height }, i) => (\n <div\n key={i}\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-0\"\n style={{\n background: `radial-gradient(ellipse ${width}% ${height}% at ${x}% ${y}%, ${hexToRgba(resolvedAccent, beamAlpha * 0.4)} 0%, transparent 68%)`,\n ...beamRevealStyle(x),\n }}\n />\n ))}\n\n <div className=\"component-container relative z-10 mx-auto px-6 py-24 sm:py-32\">\n <div className=\"mx-auto flex max-w-2xl flex-col items-center gap-5 text-center\">\n {heading && (\n <h1\n className=\"text-4xl font-extrabold leading-[1.08] tracking-[-0.02em] text-white sm:text-6xl\"\n style={{ ...textStyle, ...copyRevealStyle(300) }}\n >\n {heading}\n </h1>\n )}\n\n {subheading && (\n <p className=\"text-lg font-medium leading-snug text-neutral-200 sm:text-xl\" style={{ ...mutedTextStyle, ...copyRevealStyle(420) }}>\n {subheading}\n </p>\n )}\n\n {description && (\n <p className=\"text-sm leading-relaxed text-neutral-400 sm:text-base\" style={{ ...fadedTextStyle, ...copyRevealStyle(520) }}>\n {description}\n </p>\n )}\n\n {cta?.some((item) => item?.link?.title) && (\n <div className=\"mt-2 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-center\" style={copyRevealStyle(620)}>\n {cta.map((item, i) => renderCtaItem(item, i))}\n </div>\n )}\n </div>\n </div>\n </section>\n );\n}\n\nexport default SpotlightHero;\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { resolveStackableColor, hexToRgba } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport type VideoDemoHeroAnimationStyle =\n | 'from-center'\n | 'from-bottom'\n | 'from-top'\n | 'from-left'\n | 'from-right'\n | string;\n\nexport interface VideoDemoHeroLink {\n title?: string;\n href?: string;\n}\n\nexport interface VideoDemoHeroThumbnail {\n image?: string | { url?: string };\n alt_text?: string;\n}\n\nexport interface VideoDemoHeroProps {\n eyebrow_text?: string;\n heading?: string;\n subheading?: string;\n /** A YouTube, Vimeo or Loom link (a normal watch/share link is fine, it's rewritten to\n * the embeddable form automatically), any other embeddable player URL, or a direct\n * .mp4/.webm/.ogg file — detected by extension and played in a native `<video>` tag\n * instead of an iframe. Only `.href` is used; the link's own title isn't rendered. */\n video_url?: VideoDemoHeroLink;\n thumbnail?: VideoDemoHeroThumbnail;\n /** How the player enters — and leaves back out the same way. */\n animation_style?: VideoDemoHeroAnimationStyle;\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n /** The play button's glow and gradient. */\n accent_color?: StackableColorValue;\n className?: string;\n}\n\n/** How long the open/close transition runs — the dialog stays mounted this long\n * after closing starts, so the exit transform has time to actually play. */\nconst DIALOG_MS = 300;\nconst EASE = 'cubic-bezier(0.22,1,0.36,1)';\n\n/** The \"hidden\" transform for each style — used both to enter from and to exit\n * back out to, so the player leaves the same way it arrived. */\nconst TRANSFORM: Record<string, string> = {\n 'from-bottom': 'translateY(100%)',\n 'from-top': 'translateY(-100%)',\n 'from-left': 'translateX(-100%)',\n 'from-right': 'translateX(100%)',\n 'from-center': 'scale(0.5)',\n};\n\nfunction prefersReducedMotion(): boolean {\n return typeof window !== 'undefined' && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n}\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveAsset(asset: string | { url?: string } | undefined): string {\n if (!asset) return '';\n if (typeof asset === 'string') return asset.trim();\n return typeof asset.url === 'string' ? asset.url.trim() : '';\n}\n\n/** An editor pasting the page they're actually looking at — a normal YouTube/Vimeo/Loom\n * watch or share link — is the expected mistake, not the exception. Rewrites the common\n * ones into their embeddable form; anything already embeddable, or from a provider this\n * doesn't recognise, passes through unchanged rather than being \"fixed\" into something broken. */\nfunction toEmbeddableVideoUrl(raw: string): string {\n const trimmed = raw.trim();\n if (!trimmed) return '';\n\n let url: URL;\n try {\n url = new URL(trimmed);\n } catch {\n return trimmed;\n }\n const host = url.hostname.replace(/^www\\./, '');\n\n if (host === 'youtu.be') {\n const id = url.pathname.slice(1);\n if (id) return `https://www.youtube.com/embed/${id}`;\n }\n if (host === 'youtube.com' || host === 'm.youtube.com') {\n if (url.pathname === '/watch') {\n const id = url.searchParams.get('v');\n if (id) return `https://www.youtube.com/embed/${id}`;\n }\n const shorts = url.pathname.match(/^\\/shorts\\/([^/]+)/);\n if (shorts) return `https://www.youtube.com/embed/${shorts[1]}`;\n const live = url.pathname.match(/^\\/live\\/([^/]+)/);\n if (live) return `https://www.youtube.com/embed/${live[1]}`;\n }\n if (host === 'vimeo.com') {\n const id = url.pathname.match(/^\\/(\\d+)/)?.[1];\n if (id) return `https://player.vimeo.com/video/${id}`;\n }\n if (host === 'loom.com') {\n const id = url.pathname.match(/^\\/share\\/([a-zA-Z0-9]+)/)?.[1];\n if (id) return `https://www.loom.com/embed/${id}`;\n }\n\n return trimmed;\n}\n\n/** The three containers a native `<video>` tag actually plays across browsers —\n * anything else (a share link, an unrecognised host) is assumed to need an iframe. */\nconst DIRECT_VIDEO_EXTENSIONS = ['mp4', 'webm', 'ogg'];\n\nfunction isDirectVideoFile(url: string): boolean {\n try {\n const ext = new URL(url).pathname.split('.').pop()?.toLowerCase();\n return !!ext && DIRECT_VIDEO_EXTENSIONS.includes(ext);\n } catch {\n return false;\n }\n}\n\nfunction PlayIcon({ className }: { className?: string }) {\n return (\n <svg viewBox=\"0 0 24 24\" className={className} fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M8 5.14v13.72c0 .84.93 1.35 1.64.91l10.68-6.86a1.07 1.07 0 0 0 0-1.82L9.64 4.23A1.07 1.07 0 0 0 8 5.14z\" />\n </svg>\n );\n}\n\nfunction CloseIcon({ className }: { className?: string }) {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n className={className}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M6 6l12 12M18 6L6 18\" />\n </svg>\n );\n}\n\nfunction AlertIcon({ className }: { className?: string }) {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n className={className}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M12 9v4M12 16.5h.01\" />\n <path d=\"M10.29 3.86 1.82 18a1.5 1.5 0 0 0 1.3 2.25h17.76a1.5 1.5 0 0 0 1.3-2.25L13.71 3.86a1.5 1.5 0 0 0-2.42 0Z\" />\n </svg>\n );\n}\n\nexport function VideoDemoHero({\n eyebrow_text = '',\n heading = '',\n subheading = '',\n video_url,\n thumbnail,\n animation_style = 'from-center',\n background_color,\n text_color,\n accent_color,\n className = '',\n}: VideoDemoHeroProps) {\n const [open, setOpen] = useState(false);\n const [shown, setShown] = useState(false);\n const [closing, setClosing] = useState(false);\n const [reduceMotion, setReduceMotion] = useState(false);\n // Only the direct-file `<video>` tag can reliably tell us playback failed (a bad host,\n // a blocked/broken link, an unsupported format) — a cross-origin iframe stays silent\n // even when the destination refuses to be framed, so there's nothing to catch there.\n const [playbackFailed, setPlaybackFailed] = useState(false);\n\n useEffect(() => setReduceMotion(prefersReducedMotion()), []);\n\n const thumbnailSrc = resolveAsset(thumbnail?.image);\n const thumbnailAlt = thumbnail?.alt_text || 'Video thumbnail';\n const videoUrl = toEmbeddableVideoUrl(video_url?.href || '');\n const isDirectFile = isDirectVideoFile(videoUrl);\n\n const openDialog = useCallback(() => {\n setClosing(false);\n setPlaybackFailed(false);\n setOpen(true);\n }, []);\n\n const closeDialog = useCallback(() => {\n setClosing(true);\n setShown(false);\n }, []);\n\n // Two frames after mount, flip to the \"shown\" transform so the browser has a\n // chance to paint the initial (hidden) one first — collapsing this into one\n // frame sometimes skips the transition entirely.\n useEffect(() => {\n if (!open) return;\n let raf2 = 0;\n const raf1 = requestAnimationFrame(() => {\n raf2 = requestAnimationFrame(() => setShown(true));\n });\n return () => {\n cancelAnimationFrame(raf1);\n cancelAnimationFrame(raf2);\n };\n }, [open]);\n\n // Keeps the dialog mounted long enough for the exit transform to actually play.\n useEffect(() => {\n if (!closing) return;\n const t = setTimeout(() => {\n setOpen(false);\n setClosing(false);\n }, DIALOG_MS);\n return () => clearTimeout(t);\n }, [closing]);\n\n useEffect(() => {\n if (!open) return;\n const previousOverflow = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') closeDialog();\n };\n window.addEventListener('keydown', onKeyDown);\n return () => {\n document.body.style.overflow = previousOverflow;\n window.removeEventListener('keydown', onKeyDown);\n };\n }, [open, closeDialog]);\n\n const resolvedBg = resolveStackableColor(background_color) || '#f8fafc';\n const resolvedText = resolveStackableColor(text_color) || '#0f172a';\n const resolvedAccent = resolveStackableColor(accent_color) || '#4f46e5';\n\n const style = animation_style in TRANSFORM ? animation_style : 'from-center';\n const panelTransform = shown && !closing ? 'none' : TRANSFORM[style];\n const panelOpacity = shown && !closing ? 1 : 0;\n const panelTransition = reduceMotion\n ? 'none'\n : `transform ${DIALOG_MS}ms ${EASE}, opacity ${DIALOG_MS}ms ${EASE}`;\n\n return (\n <section className={`${className}`.trim()} style={{ backgroundColor: resolvedBg }}>\n <div className=\"component-container mx-auto px-6 py-16 text-center sm:py-24\">\n {(eyebrow_text || heading || subheading) && (\n <div className=\"mx-auto mb-10 max-w-2xl\">\n {eyebrow_text && (\n <p className=\"text-sm font-bold uppercase tracking-[0.2em]\" style={{ color: resolvedAccent }}>\n {eyebrow_text}\n </p>\n )}\n {heading && (\n <h1 className=\"mt-4 text-3xl font-bold tracking-tight sm:text-5xl\" style={{ color: resolvedText }}>\n {heading}\n </h1>\n )}\n {subheading && (\n <p className=\"mt-4 text-base leading-relaxed sm:text-lg\" style={{ color: hexToRgba(resolvedText, 0.65) }}>\n {subheading}\n </p>\n )}\n </div>\n )}\n\n <div className=\"relative mx-auto max-w-4xl\">\n <button\n type=\"button\"\n aria-label=\"Play video\"\n onClick={openDialog}\n className=\"group relative block w-full cursor-pointer border-0 bg-transparent p-0\"\n >\n {thumbnailSrc ? (\n <img\n src={thumbnailSrc}\n alt={thumbnailAlt}\n className=\"w-full rounded-2xl border shadow-xl transition-all duration-200 ease-out group-hover:brightness-[0.85]\"\n style={{ borderColor: hexToRgba(resolvedText, 0.1), aspectRatio: '16 / 9', objectFit: 'cover' }}\n />\n ) : (\n <div\n className=\"flex w-full items-center justify-center rounded-2xl border shadow-xl transition-all duration-200 ease-out group-hover:brightness-[0.85]\"\n style={{\n aspectRatio: '16 / 9',\n backgroundColor: hexToRgba(resolvedText, 0.04),\n borderColor: hexToRgba(resolvedText, 0.1),\n }}\n />\n )}\n <div className=\"absolute inset-0 flex scale-[0.9] items-center justify-center transition-all duration-200 ease-out group-hover:scale-100\">\n <div\n className=\"flex h-24 w-24 items-center justify-center rounded-full backdrop-blur-md sm:h-28 sm:w-28\"\n style={{ backgroundColor: hexToRgba(resolvedAccent, 0.15) }}\n >\n <div\n className=\"flex h-16 w-16 scale-100 items-center justify-center rounded-full shadow-md transition-all duration-200 ease-out group-hover:scale-[1.15] sm:h-20 sm:w-20\"\n style={{ backgroundColor: resolvedAccent }}\n >\n <PlayIcon className=\"h-7 w-7 translate-x-0.5 text-white sm:h-8 sm:w-8\" />\n </div>\n </div>\n </div>\n </button>\n </div>\n </div>\n\n {open && videoUrl && (\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Video player\"\n className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/60 p-4 backdrop-blur-md\"\n style={{ opacity: shown && !closing ? 1 : 0, transition: panelTransition }}\n onClick={closeDialog}\n >\n <div\n className=\"relative aspect-video w-full max-w-4xl\"\n style={{ transform: panelTransform, opacity: panelOpacity, transition: panelTransition }}\n onClick={(e) => e.stopPropagation()}\n >\n <button\n type=\"button\"\n onClick={closeDialog}\n aria-label=\"Close video\"\n className=\"absolute -right-3 -top-3 z-10 flex h-9 w-9 cursor-pointer items-center justify-center rounded-full bg-neutral-900/80 text-white ring-1 ring-white/20 backdrop-blur-md\"\n >\n <CloseIcon className=\"h-4 w-4\" />\n </button>\n <div className=\"relative isolate size-full overflow-hidden rounded-2xl border-2 border-white/90 bg-black\">\n {playbackFailed ? (\n <div className=\"flex h-full w-full flex-col items-center justify-center gap-3 px-6 text-center\">\n <AlertIcon className=\"h-8 w-8 text-white/70\" />\n <p className=\"text-sm font-semibold text-white\">This video couldn&apos;t be played</p>\n <p className=\"max-w-xs text-xs text-white/60\">\n The link may be broken, blocked by its source, or in a format your browser doesn&apos;t support.\n </p>\n </div>\n ) : isDirectFile ? (\n <video\n src={videoUrl}\n controls\n autoPlay\n playsInline\n onError={() => setPlaybackFailed(true)}\n className=\"h-full w-full rounded-2xl\"\n >\n <track kind=\"captions\" />\n </video>\n ) : (\n <iframe\n src={videoUrl}\n title=\"Video player\"\n className=\"h-full w-full rounded-2xl\"\n allowFullScreen\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n />\n )}\n </div>\n </div>\n </div>\n )}\n </section>\n );\n}\n\nexport default VideoDemoHero;\n","import React, { useRef, useState } from 'react';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface ProductSliderCtaButton {\n text?: string;\n link?: string;\n}\n\nexport interface ProductSliderSlide {\n background_image?: string;\n eyebrow_text?: string;\n heading?: string;\n subheading?: string;\n content_position?: 'left' | 'right' | string;\n cta_button?: ProductSliderCtaButton;\n text_color?: StackableColorValue;\n button_color?: StackableColorValue;\n button_text_color?: StackableColorValue;\n}\n\nexport interface ProductSliderProps {\n slides?: ProductSliderSlide[];\n className?: string;\n}\n\nconst defaultSlides: ProductSliderSlide[] = [\n {\n background_image: 'https://images.unsplash.com/photo-1543163521-1bf539c55dd2?w=1600&h=900&fit=crop',\n eyebrow_text: 'Daytime Ready',\n heading: 'Spring',\n subheading: 'Bright, comfortable style for brunch, meetings, and everything in between.',\n content_position: 'right',\n cta_button: { text: 'Shop Day', link: '#' },\n },\n {\n background_image: 'https://images.unsplash.com/photo-1520639888713-7851133b1ed0?w=1600&h=900&fit=crop',\n eyebrow_text: 'Evening Ready',\n heading: 'Noir',\n subheading: 'Sleek, striking pieces built for nights out and everything after.',\n content_position: 'left',\n cta_button: { text: 'Shop Night', link: '#' },\n },\n];\n\nconst SNAP_TRANSITION = 'clip-path 550ms cubic-bezier(0.65, 0, 0.35, 1), left 550ms cubic-bezier(0.65, 0, 0.35, 1)';\n\nfunction SlideContent({ slide, visible }: { slide?: ProductSliderSlide; visible: boolean }) {\n const txtColor = resolveStackableColor(slide?.text_color);\n const btnColor = resolveStackableColor(slide?.button_color);\n const btnTextColor = resolveStackableColor(slide?.button_text_color);\n const isLeft = (slide?.content_position ?? 'right').toLowerCase() === 'left';\n\n return (\n <div className={`absolute inset-0 flex items-center ${isLeft ? 'justify-start' : 'justify-end'} px-8 md:px-16 pointer-events-none`}>\n <div\n className={`max-w-md transition-all duration-300 ease-out ${\n visible ? 'opacity-100 translate-y-0' : 'opacity-0 translate-y-3'\n }`}\n style={txtColor ? { color: txtColor } : undefined}\n >\n {slide?.eyebrow_text && (\n <p className=\"text-xs md:text-sm font-semibold tracking-[0.2em] uppercase mb-3 opacity-60\">\n {slide.eyebrow_text}\n </p>\n )}\n {slide?.heading && (\n <h2 className=\"text-4xl md:text-6xl font-extrabold uppercase mb-4 leading-tight\">\n {slide.heading}\n </h2>\n )}\n {slide?.subheading && <p className=\"text-base md:text-lg mb-6 opacity-80\">{slide.subheading}</p>}\n {slide?.cta_button?.text && (\n <a\n href={slide.cta_button.link || '#'}\n className=\"inline-block px-6 py-3 rounded-md font-semibold btn primary-btn pointer-events-auto\"\n style={{\n ...(btnColor ? { backgroundColor: btnColor, borderColor: btnColor } : {}),\n ...(btnTextColor ? { color: btnTextColor } : {}),\n }}\n >\n {slide.cta_button.text}\n </a>\n )}\n </div>\n </div>\n );\n}\n\n/** Single slide (or no slider content authored yet) — renders as a static banner, no drag handle. */\nfunction StaticBanner({ slide, className }: { slide?: ProductSliderSlide; className?: string }) {\n return (\n <div className={`relative w-full overflow-hidden ${className ?? ''}`.trim()} style={{ minHeight: 560 }}>\n <div className=\"absolute inset-0 bg-gray-100\">\n {slide?.background_image && (\n <img\n src={slide.background_image}\n alt={slide.heading || 'Banner'}\n className=\"absolute inset-0 w-full h-full object-cover\"\n draggable={false}\n />\n )}\n <SlideContent slide={slide} visible />\n </div>\n </div>\n );\n}\n\nexport function ProductSlider({ slides = defaultSlides, className }: ProductSliderProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const handlePosRef = useRef(50);\n const draggedRef = useRef(false);\n\n const [handlePos, setHandlePos] = useState(50);\n const [isDragging, setIsDragging] = useState(false);\n\n const filledSlides = (slides ?? []).filter(s => Boolean(s?.background_image?.trim() || s?.heading?.trim()));\n\n const updateFromClientX = (clientX: number) => {\n const rect = containerRef.current?.getBoundingClientRect();\n if (!rect) return;\n const pct = Math.max(0, Math.min(100, ((clientX - rect.left) / rect.width) * 100));\n if (Math.abs(pct - handlePosRef.current) > 0.2) draggedRef.current = true;\n handlePosRef.current = pct;\n setHandlePos(pct);\n };\n\n const handlePointerDown = (e: React.PointerEvent) => {\n e.preventDefault();\n (e.currentTarget as Element).setPointerCapture(e.pointerId);\n draggedRef.current = false;\n setIsDragging(true);\n };\n\n const handlePointerMove = (e: React.PointerEvent) => {\n if (!isDragging) return;\n updateFromClientX(e.clientX);\n };\n\n const handlePointerUp = () => {\n setIsDragging(false);\n const current = handlePosRef.current;\n const target = draggedRef.current\n ? (current < 50 ? 0 : 100) // dragged: snap to whichever slide is nearer\n : (current > 0 ? 0 : 100); // plain click: toggle to the other slide\n handlePosRef.current = target;\n setHandlePos(target);\n };\n\n // A slider only makes sense with 2 slides to compare; fall back to a plain banner otherwise.\n if (filledSlides.length < 2) {\n return <StaticBanner slide={filledSlides[0]} className={className} />;\n }\n\n const [slide_one, slide_two] = filledSlides;\n const slide1Visible = handlePos >= 50;\n const slide2Visible = handlePos < 50;\n\n const transitionStyle = isDragging ? undefined : SNAP_TRANSITION;\n\n return (\n <div ref={containerRef} className={`relative w-full overflow-hidden select-none ${className ?? ''}`.trim()} style={{ minHeight: 560 }}>\n {/* Slide one — base layer, always fully rendered */}\n <div className=\"absolute inset-0 bg-gray-100\">\n {slide_one?.background_image && (\n <img\n src={slide_one.background_image}\n alt={slide_one.heading || 'Slide 1'}\n className=\"absolute inset-0 w-full h-full object-cover\"\n draggable={false}\n />\n )}\n <SlideContent slide={slide_one} visible={slide1Visible} />\n </div>\n\n {/* Slide two — wipe-reveal layer on top, clipped from the handle position */}\n <div\n className=\"absolute inset-0 bg-gray-100\"\n style={{\n clipPath: `inset(0 0 0 ${handlePos}%)`,\n transition: transitionStyle,\n }}\n >\n {slide_two?.background_image && (\n <img\n src={slide_two.background_image}\n alt={slide_two.heading || 'Slide 2'}\n className=\"absolute inset-0 w-full h-full object-cover\"\n draggable={false}\n />\n )}\n <SlideContent slide={slide_two} visible={slide2Visible} />\n </div>\n\n {/* Single centered drag handle */}\n <div\n className=\"absolute top-1/2 z-20\"\n style={{\n left: `${handlePos}%`,\n transform: 'translate(-50%, -50%)',\n transition: transitionStyle,\n }}\n >\n <button\n type=\"button\"\n aria-label=\"Drag to compare slides, or click to switch\"\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n onPointerCancel={handlePointerUp}\n className=\"flex items-center justify-center w-12 h-12 rounded-full bg-gray-900 text-white shadow-lg cursor-grab active:cursor-grabbing hover:bg-black transition-colors touch-none\"\n >\n <svg width=\"20\" height=\"14\" viewBox=\"0 0 20 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 2L2 7L7 12\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M13 2L18 7L13 12\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n </div>\n </div>\n );\n}\n\nexport default ProductSlider;\n","import React, { useState, useEffect, useCallback } from 'react';\n\nexport interface CarouselSlideImage {\n url?: string;\n title?: string;\n}\n\nexport interface CarouselSlideVideo {\n url?: string;\n}\n\nexport interface CarouselSlide {\n image?: CarouselSlideImage;\n video?: CarouselSlideVideo;\n caption?: string;\n}\n\nexport interface ImageVideoCarouselProps {\n className?: string;\n title?: string;\n slides?: CarouselSlide[];\n autoplay?: boolean;\n interval?: number;\n muted?: boolean;\n loop?: boolean;\n}\n\nexport function ImageVideoCarousel({\n className,\n title,\n slides,\n autoplay,\n interval = 4000,\n muted = true,\n loop = false,\n}: ImageVideoCarouselProps) {\n const count = slides?.length ?? 0;\n const [current, setCurrent] = useState(0);\n\n const prev = useCallback(() => setCurrent(c => (c - 1 + count) % count), [count]);\n const next = useCallback(() => setCurrent(c => (c + 1) % count), [count]);\n\n useEffect(() => {\n if (!autoplay) return;\n const timer = setInterval(next, interval);\n return () => clearInterval(timer);\n }, [autoplay, interval, next]);\n\n return (\n <div className={`component-container mx-auto px-6 py-8 ${className ?? ''}`.trim()}>\n {title && (\n <h2 className=\"image-carousel-title text-2xl font-bold text-gray-900 mb-4 text-center\">{title}</h2>\n )}\n\n <div className=\"relative rounded-lg overflow-hidden\">\n <div\n className=\"flex transition-transform duration-500 ease-in-out image-carousel-slides\"\n style={{ transform: `translateX(-${current * 100}%)` }}\n >\n {slides?.map((slide, i) => (\n <div\n key={i}\n className=\"relative min-w-full h-96 bg-gray-200 flex items-center justify-center flex-shrink-0\"\n >\n {slide?.video?.url ? (\n <video\n autoPlay\n muted={muted}\n loop={loop}\n playsInline\n className=\"absolute inset-0 w-full h-full object-cover\"\n >\n <source src={slide.video.url} />\n </video>\n ) : slide?.image?.url ? (\n <img\n src={slide.image.url}\n alt={slide.image.title ?? `Slide ${i + 1}`}\n className=\"w-full h-full object-cover slide-image\"\n />\n ) : (\n <span className=\"slide-caption text-gray-600 text-xl select-none\">\n {slide?.caption ?? `Slide ${i + 1}`}\n </span>\n )}\n {slide?.caption && (\n <div className=\"absolute inset-x-0 bottom-0 bg-gradient-to-t from-black/60 to-transparent px-6 py-8\">\n <p className=\"slide-caption text-white text-2xl font-semibold drop-shadow\">\n {slide.caption}\n </p>\n </div>\n )}\n </div>\n ))}\n </div>\n\n <button\n onClick={prev}\n aria-label=\"Previous slide\"\n className=\"absolute left-4 top-1/2 -translate-y-1/2 bg-white/80 hover:bg-white text-gray-800 p-2 rounded-full shadow transition-colors duration-200 cursor-pointer\"\n >\n ←\n </button>\n\n <button\n onClick={next}\n aria-label=\"Next slide\"\n className=\"absolute right-4 top-1/2 -translate-y-1/2 bg-white/80 hover:bg-white text-gray-800 p-2 rounded-full shadow transition-colors duration-200 cursor-pointer\"\n >\n →\n </button>\n\n <div className=\"absolute bottom-4 left-1/2 -translate-x-1/2 flex gap-2\">\n {slides?.map((_, i) => (\n <button\n key={i}\n onClick={() => setCurrent(i)}\n aria-label={`Go to slide ${i + 1}`}\n className={`w-3 h-3 rounded-full transition-colors duration-200 cursor-pointer ${\n i === current ? 'bg-blue-600' : 'bg-gray-400 hover:bg-gray-600'\n }`}\n />\n ))}\n </div>\n </div>\n </div>\n );\n}\n\nexport default ImageVideoCarousel;\n","import React, { useRef, useState, useCallback, useEffect } from 'react';\n\nexport interface CircleCarouselItem {\n // Accepts either a CMS object { url, title } or a plain URL string from the controls panel file upload\n image?: { url?: string; title?: string } | string;\n title?: string;\n link?: string;\n}\n\nfunction resolveImageUrl(image: CircleCarouselItem['image']): string | undefined {\n if (!image) return undefined;\n if (typeof image === 'string') return image || undefined;\n return image.url || undefined;\n}\n\nfunction resolveImageAlt(image: CircleCarouselItem['image'], fallback: string): string {\n if (!image || typeof image === 'string') return fallback;\n return image.title ?? fallback;\n}\n\nexport interface CircleImageCarouselProps {\n className?: string;\n heading?: string;\n subheading?: string;\n heading_alignment?: 'left' | 'center' | 'right';\n navigation?: 'arrows' | 'scrollbar' | 'dots';\n items?: CircleCarouselItem[];\n}\n\nexport function CircleImageCarousel({\n className,\n heading,\n subheading,\n heading_alignment = 'left',\n navigation = 'arrows',\n items = [],\n}: CircleImageCarouselProps) {\n const trackRef = useRef<HTMLDivElement>(null);\n const [atStart, setAtStart] = useState(true);\n const [atEnd, setAtEnd] = useState(false);\n const [currentDot, setCurrentDot] = useState(0);\n const [visibleCount, setVisibleCount] = useState(1);\n\n const ITEM_WIDTH = 176; // w-36 (144px) + gap-4 (16px) + border rounding buffer\n\n const syncScrollState = useCallback(() => {\n const track = trackRef.current;\n if (!track) return;\n const { scrollLeft, clientWidth, scrollWidth } = track;\n setAtStart(scrollLeft <= 0);\n setAtEnd(scrollLeft + clientWidth >= scrollWidth - 1);\n const vc = Math.max(1, Math.floor(clientWidth / ITEM_WIDTH));\n setVisibleCount(vc);\n setCurrentDot(Math.round(scrollLeft / (vc * ITEM_WIDTH)));\n }, []);\n\n useEffect(() => {\n const track = trackRef.current;\n if (!track) return;\n syncScrollState();\n const ro = new ResizeObserver(syncScrollState);\n ro.observe(track);\n return () => ro.disconnect();\n }, [syncScrollState, items?.length]);\n\n const scrollBy = useCallback((direction: 'prev' | 'next') => {\n const track = trackRef.current;\n if (!track) return;\n const delta = direction === 'next' ? ITEM_WIDTH * 2 : -(ITEM_WIDTH * 2);\n track.scrollBy({ left: delta, behavior: 'smooth' });\n }, []);\n\n const scrollToDot = useCallback((index: number) => {\n const track = trackRef.current;\n if (!track) return;\n track.scrollTo({ left: index * visibleCount * ITEM_WIDTH, behavior: 'smooth' });\n setCurrentDot(index);\n }, [visibleCount]);\n\n const dotCount = items?.length ? Math.ceil(items.length / visibleCount) : 0;\n\n const alignClass = {\n left: 'text-left items-start',\n center: 'text-center items-center',\n right: 'text-right items-end',\n }[heading_alignment];\n\n return (\n <div className={`component-container w-full px-6 py-8 ${className ?? ''}`.trim()}>\n {/* Header */}\n {(heading || subheading) && (\n <div className={`flex flex-col mb-6 ${alignClass}`}>\n {heading && (\n <h2 className=\"circle-carousel-heading text-2xl font-bold text-gray-900 leading-tight\">\n {heading}\n </h2>\n )}\n {subheading && (\n <p className=\"circle-carousel-subheading text-base text-gray-500 mt-1\">\n {subheading}\n </p>\n )}\n </div>\n )}\n\n {/* Carousel wrapper */}\n <div className=\"relative\">\n {/* Arrow nav — left */}\n {navigation === 'arrows' && !atStart && (\n <button\n onClick={() => scrollBy('prev')}\n aria-label=\"Scroll left\"\n className=\"absolute left-0 top-1/2 -translate-y-6 z-10 bg-white border border-gray-200 shadow-md hover:shadow-lg text-gray-700 w-9 h-9 rounded-full flex items-center justify-center transition-shadow -translate-x-3 cursor-pointer\"\n >\n ‹\n </button>\n )}\n\n {/* Scrollable track */}\n <div\n ref={trackRef}\n onScroll={syncScrollState}\n className={`flex gap-4 overflow-x-auto scroll-smooth ${\n navigation === 'scrollbar'\n ? 'pb-3 scrollbar-thin scrollbar-thumb-gray-300 scrollbar-track-gray-100'\n : 'scrollbar-hide'\n }`}\n style={{ scrollbarWidth: navigation === 'scrollbar' ? 'thin' : 'none' }}\n >\n {items?.map((item, i) => (\n <a\n key={i}\n href={item.link || undefined}\n className=\"flex flex-col items-center flex-shrink-0 w-36 gap-3 group cursor-pointer\"\n onClick={item.link ? undefined : (e) => e.preventDefault()}\n >\n {/* Circle image */}\n <div className=\"w-36 h-36 rounded-full overflow-hidden bg-sky-100 flex items-center justify-center ring-2 ring-transparent group-hover:ring-sky-300 transition-all duration-200\">\n {resolveImageUrl(item.image) ? (\n <img\n src={resolveImageUrl(item.image)}\n alt={resolveImageAlt(item.image, item.title ?? `Item ${i + 1}`)}\n className=\"w-full h-full object-cover\"\n />\n ) : (\n <span className=\"text-4xl text-sky-400 select-none\">\n {item.title?.[0]?.toUpperCase() ?? '?'}\n </span>\n )}\n </div>\n {/* Title */}\n {item.title && (\n <span className=\"circle-carousel-item-title text-sm text-gray-700 text-center font-medium leading-snug\">\n {item.title}\n </span>\n )}\n </a>\n ))}\n </div>\n\n {/* Arrow nav — right */}\n {navigation === 'arrows' && !atEnd && (\n <button\n onClick={() => scrollBy('next')}\n aria-label=\"Scroll right\"\n className=\"absolute right-0 top-1/2 -translate-y-6 z-10 bg-white border border-gray-200 shadow-md hover:shadow-lg text-gray-700 w-9 h-9 rounded-full flex items-center justify-center transition-shadow translate-x-3 cursor-pointer\"\n >\n ›\n </button>\n )}\n </div>\n\n {/* Dot nav */}\n {navigation === 'dots' && dotCount > 1 && (\n <div className=\"flex justify-center gap-2 mt-4\">\n {Array.from({ length: dotCount }).map((_, i) => (\n <button\n key={i}\n onClick={() => scrollToDot(i)}\n aria-label={`Go to group ${i + 1}`}\n className={`w-2.5 h-2.5 rounded-full transition-colors duration-200 cursor-pointer ${\n i === currentDot ? 'bg-gray-800' : 'bg-gray-300 hover:bg-gray-500'\n }`}\n />\n ))}\n </div>\n )}\n </div>\n );\n}\n\nexport default CircleImageCarousel;\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface VerticalCarouselProductColor {\n label?: string;\n hex?: string;\n}\n\nexport interface VerticalCarouselProductItem {\n product_name?: string;\n /** Asset URL, or a Contentstack asset object — both are accepted. */\n product_image?: string | { url?: string };\n price?: number;\n colors?: VerticalCarouselProductColor[];\n href?: string;\n}\n\nexport interface VerticalProductCarouselCtaButton {\n text?: string;\n link?: string;\n}\n\nexport interface VerticalProductCarouselProps {\n eyebrow?: string;\n heading?: string;\n description?: string;\n cta_button?: VerticalProductCarouselCtaButton;\n text_alignment?: 'Left' | 'Center' | 'Right' | string;\n text_color?: StackableColorValue;\n /** Asset URL, or a Contentstack asset object — both are accepted. */\n background_image?: string | { url?: string };\n background_color?: StackableColorValue;\n carousel_position?: 'Left' | 'Right' | string;\n item_shape?: 'Rectangle' | 'Square' | 'Circle' | string;\n visible_items?: number;\n products?: VerticalCarouselProductItem[];\n className?: string;\n}\n\n// Total card height per shape. The image area is a flex-1 region that fills\n// whatever space is left above the details block, so the details (name/price/\n// colors) always render in full — they never get clipped by a fixed-height\n// image regardless of aspect ratio.\nconst ITEM_HEIGHTS: Record<string, number> = {\n Rectangle: 340,\n Square: 280,\n Circle: 180,\n};\nconst CARD_GAP = 16;\nconst CARD_WIDTH = 240;\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveImage(image?: string | { url?: string }): string {\n if (!image) return '';\n if (typeof image === 'string') return image.trim();\n return typeof image.url === 'string' ? image.url.trim() : '';\n}\n\nexport function VerticalProductCarousel({\n eyebrow = 'Now Trending',\n heading = 'Powerful Pastels',\n description = 'Explore trending brands and fresh arrivals.',\n cta_button = { text: 'Shop Now', link: '#' },\n text_alignment = 'Left',\n text_color,\n background_image = '',\n background_color,\n carousel_position = 'Right',\n item_shape = 'Rectangle',\n visible_items = 3,\n products = [],\n className,\n}: VerticalProductCarouselProps) {\n const trackRef = useRef<HTMLDivElement>(null);\n const [atStart, setAtStart] = useState(true);\n const [atEnd, setAtEnd] = useState(false);\n\n const itemHeight = ITEM_HEIGHTS[item_shape] ?? ITEM_HEIGHTS.Rectangle;\n const visibleCount = Math.max(1, visible_items);\n const viewportHeight = itemHeight * visibleCount + CARD_GAP * (visibleCount - 1);\n const isCircle = item_shape === 'Circle';\n // A card is only worth showing once it has an image; the details block\n // (name/price/colors) only renders once the card actually links somewhere.\n const visibleProducts = (products ?? []).filter(p => Boolean(resolveImage(p.product_image)));\n\n const syncScrollState = useCallback(() => {\n const track = trackRef.current;\n if (!track) return;\n const { scrollTop, clientHeight, scrollHeight } = track;\n setAtStart(scrollTop <= 0);\n setAtEnd(scrollTop + clientHeight >= scrollHeight - 1);\n }, []);\n\n useEffect(() => {\n syncScrollState();\n }, [syncScrollState, visibleProducts.length, visibleCount]);\n\n const scrollBy = useCallback((direction: 'up' | 'down') => {\n const track = trackRef.current;\n if (!track) return;\n const delta = itemHeight + CARD_GAP;\n track.scrollBy({ top: direction === 'down' ? delta : -delta, behavior: 'smooth' });\n }, [itemHeight]);\n\n const alignClasses: Record<string, string> = {\n Left: 'items-start text-left',\n Center: 'items-center text-center',\n Right: 'items-end text-right',\n };\n const alignClass = alignClasses[text_alignment as string] ?? alignClasses.Left;\n\n const isCarouselLeft = (carousel_position || 'Right') === 'Left';\n const backgroundImageUrl = resolveImage(background_image);\n const hasImage = Boolean(backgroundImageUrl);\n const resolvedBg = resolveStackableColor(background_color as StackableColorValue);\n const resolvedTextColor = resolveStackableColor(text_color as StackableColorValue);\n\n const sectionStyle: React.CSSProperties = {\n minHeight: 560,\n ...(hasImage\n ? {\n backgroundImage: `url(${backgroundImageUrl})`,\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n backgroundRepeat: 'no-repeat',\n }\n : {}),\n ...(resolvedBg && !hasImage ? { backgroundColor: resolvedBg } : {}),\n };\n\n const textColorStyle: React.CSSProperties | undefined = resolvedTextColor\n ? { color: resolvedTextColor }\n : hasImage\n ? { color: '#ffffff' }\n : undefined;\n\n return (\n <section\n className={`component-container relative w-full overflow-hidden flex flex-col md:flex-row ${className ?? ''}`.trim()}\n style={sectionStyle}\n >\n {hasImage && (\n <div\n className=\"absolute inset-0 bg-gradient-to-t from-black/60 via-black/10 to-transparent pointer-events-none\"\n aria-hidden\n />\n )}\n\n {/* Text panel */}\n <div\n className={`relative z-10 flex-1 flex flex-col justify-end p-8 md:p-12 gap-3 ${alignClass} ${\n isCarouselLeft ? 'order-2' : 'order-1'\n }`}\n >\n {eyebrow && (\n <span className=\"text-sm font-semibold tracking-wide uppercase\" style={textColorStyle}>\n {eyebrow}\n </span>\n )}\n {heading && (\n <h2 className=\"text-4xl md:text-5xl font-bold leading-tight\" style={textColorStyle}>\n {heading}\n </h2>\n )}\n {description && (\n <p className=\"max-w-md text-base\" style={textColorStyle}>\n {description}\n </p>\n )}\n {cta_button?.text && (\n <a href={cta_button.link || '#'} className=\"btn primary-btn mt-2 inline-flex w-fit\">\n {cta_button.text}\n </a>\n )}\n </div>\n\n {/* Vertical product carousel panel */}\n {visibleProducts.length > 0 && (\n <div\n className={`relative z-10 w-full md:w-[280px] shrink-0 p-4 flex ${\n isCarouselLeft ? 'order-1 justify-start' : 'order-2 justify-end'\n }`}\n >\n <div className=\"relative\" style={{ height: viewportHeight }}>\n <div\n ref={trackRef}\n onScroll={syncScrollState}\n className=\"scrollbar-hide flex h-full flex-col gap-4 overflow-y-auto scroll-smooth\"\n style={{ width: CARD_WIDTH, scrollbarWidth: 'none' }}\n >\n {visibleProducts.map((p, i) => {\n const hasLink = Boolean(p.href?.trim());\n const Wrapper = hasLink ? 'a' : 'div';\n const productImageUrl = resolveImage(p.product_image);\n return (\n <Wrapper\n key={i}\n {...(hasLink ? { href: p.href } : {})}\n className=\"flex flex-col shrink-0 overflow-hidden rounded-xl bg-white shadow-lg\"\n style={{ height: itemHeight }}\n >\n {/* Image area — flexes to fill whatever space is left above\n the details block, so it never pushes details out of view */}\n <div className=\"relative w-full min-h-0 flex-1 flex items-center justify-center bg-gray-100\">\n {isCircle ? (\n <div className=\"h-16 w-16 rounded-full overflow-hidden bg-gray-200 flex items-center justify-center shrink-0\">\n <img src={productImageUrl} alt={p.product_name || ''} className=\"h-full w-full object-cover\" />\n </div>\n ) : (\n <img\n src={productImageUrl}\n alt={p.product_name || ''}\n className=\"h-full w-full object-cover\"\n />\n )}\n </div>\n\n {/* Details area only shows once the card links somewhere —\n light background so it's always legible against the card,\n distinct from the image above */}\n {hasLink && (\n <div className=\"shrink-0 bg-gray-50 border-t border-gray-100 px-3 pb-3 pt-2\">\n {(p.colors?.length ?? 0) > 0 && (\n <div className=\"mb-1.5 flex gap-1.5\">\n {p.colors!.slice(0, 5).map((c, ci) => (\n <span\n key={ci}\n className=\"h-3.5 w-3.5 rounded-full border border-gray-200\"\n style={{ backgroundColor: c.hex || '#e5e7eb' }}\n title={c.label}\n />\n ))}\n </div>\n )}\n {p.product_name && (\n <p className=\"line-clamp-2 text-sm font-semibold leading-snug text-gray-900\">\n {p.product_name}\n </p>\n )}\n {p.price != null && (\n <p className=\"mt-0.5 text-sm font-bold text-gray-800\">${Number(p.price).toFixed(2)}</p>\n )}\n </div>\n )}\n </Wrapper>\n );\n })}\n </div>\n\n {/* Up / down navigation */}\n <div className=\"absolute right-3 top-1/2 z-20 flex -translate-y-1/2 flex-col gap-2\">\n {!atStart && (\n <button\n type=\"button\"\n onClick={() => scrollBy('up')}\n aria-label=\"Scroll up\"\n className=\"flex h-9 w-9 cursor-pointer items-center justify-center rounded-full bg-black text-white shadow-md hover:opacity-90\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M5 15l7-7 7 7\" />\n </svg>\n </button>\n )}\n {!atEnd && (\n <button\n type=\"button\"\n onClick={() => scrollBy('down')}\n aria-label=\"Scroll down\"\n className=\"flex h-9 w-9 cursor-pointer items-center justify-center rounded-full bg-black text-white shadow-md hover:opacity-90\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n </button>\n )}\n </div>\n </div>\n </div>\n )}\n </section>\n );\n}\n\nexport default VerticalProductCarousel;\n","/* eslint-disable @next/next/no-img-element */\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\n/** Native Contentstack link field: `{ title, href }`. */\nexport interface GalleryCarouselLink {\n title?: string;\n href?: string;\n}\n\nexport interface GalleryCarouselSlide {\n /** Asset URL, or a Contentstack asset object — both are accepted. */\n image?: string | { url?: string };\n image_alt?: string;\n /**\n * Headline over the slide. Named `slide_title` rather than `title` because a\n * group subfield with that uid collides with the content type's mandatory\n * Title field on import; props map 1:1 onto field uids.\n */\n slide_title?: string;\n /** Supporting line under the title. */\n caption?: string;\n /** Small line under the caption — a place, a date, a credit. */\n meta?: string;\n /**\n * Groups the slide under a filter chip. Chips are built from the distinct\n * values found here, so a chip can never point at an empty set.\n */\n category?: string;\n /** Present means the slide is a video: it shows a play badge and plays in place.\n * Asset URL, or a Contentstack asset object — both are accepted. */\n video_url?: string | { url?: string };\n link?: GalleryCarouselLink;\n}\n\nexport interface GalleryCarouselProps {\n eyebrow_text?: string;\n heading?: string;\n subheading?: string;\n heading_alignment?: 'left' | 'center' | 'right' | string;\n heading_font?: 'Sans' | 'Serif' | 'Display' | string;\n /** Face for the text overlaid on each slide. */\n caption_font?: 'Sans' | 'Serif' | 'Display' | string;\n /** Shows each slide's category as a pill in its top corner. */\n show_category_badge?: boolean;\n slides?: GalleryCarouselSlide[];\n /** Slides either side of the focused one. 2 gives the five-across look. */\n visible_neighbours?: number;\n /** How much each step away from centre shrinks a slide, as a percentage. */\n scale_falloff?: number;\n slide_aspect_ratio?: 'Portrait' | 'Square' | 'Landscape' | string;\n show_filters?: boolean;\n /** Chip shown first, before the derived category chips. */\n all_filter_label?: string;\n /** Optional link at the end of the chip row. */\n view_more?: GalleryCarouselLink;\n /**\n * `Continuous` drifts without stopping. `Stepped` advances a slide at a time\n * on a timer. `Manual` moves only when a visitor asks.\n */\n motion?: 'Continuous' | 'Stepped' | 'Manual' | string;\n /** Seconds per slide of travel. Lower is faster. */\n pace_seconds?: number;\n pause_on_hover?: boolean;\n /** Prev/next controls. Hidden while drifting, since they would fight it. */\n show_arrows?: boolean;\n video_muted?: boolean;\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n /** Active chip fill, and the play badge. */\n accent_color?: StackableColorValue;\n className?: string;\n}\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveImage(media?: string | { url?: string }): string {\n if (!media) return '';\n if (typeof media === 'string') return media.trim();\n return typeof media.url === 'string' ? media.url.trim() : '';\n}\n\nconst ALIGNMENTS: Record<string, string> = {\n left: 'text-left items-start',\n center: 'text-center items-center',\n right: 'text-right items-end',\n};\n\nconst ASPECT_RATIOS: Record<string, number> = {\n Portrait: 3 / 4,\n Square: 1,\n Landscape: 4 / 3,\n};\n\n/**\n * Both stacks are already loaded by the library stylesheet and overridable by\n * the host, matching `TeamBanner` (serif) and `IndexSection` (display), so\n * offering them costs no new webfont request.\n */\nconst HEADING_FONTS: Record<string, string | undefined> = {\n Sans: undefined,\n Serif: 'var(--stackables-font-serif, \"Playfair Display\", Georgia, \"Times New Roman\", serif)',\n Display: 'var(--stackables-font-display, \"Orbitron\", \"Arial Narrow\", sans-serif)',\n};\n\n/** Focused slide width as a share of the container, before neighbours are placed. */\nconst FOCUS_WIDTH_RATIO = 0.33;\nconst MIN_FOCUS_WIDTH = 220;\nconst MAX_FOCUS_WIDTH = 420;\n\n/** Horizontal step between slide centres, as a share of the focused slide's width. */\nconst STEP_RATIO = 0.72;\n\n/** Below this the coverflow is abandoned for a single slide at a time. */\nconst SINGLE_BELOW_PX = 520;\n\n/** Smallest a slide may shrink to, however far from centre it drifts. */\nconst MIN_SCALE = 0.4;\n\n/** How quickly a stepped or manual move eases toward its target. */\nconst EASE_PER_SECOND = 7;\n\n/**\n * Eases 0..1 with zero slope at both ends. A slide's scale used to be a plain\n * linear function of its distance from centre, which peaks at a corner: it grew\n * at a constant rate, hit full size, and reversed instantly. That reads as a pop\n * at the apex however smooth the motion underneath is. This flattens the curve\n * at both the centre and the window edge.\n */\nfunction easeInOut(t: number): number {\n return (1 - Math.cos(Math.PI * Math.min(1, Math.max(0, t)))) / 2;\n}\n\nfunction PlayBadge({ accent }: { accent: string }) {\n return (\n <span\n aria-hidden\n className=\"pointer-events-none absolute bottom-4 right-4 grid size-10 place-items-center rounded-full text-neutral-900 shadow-lg\"\n style={{ backgroundColor: accent }}\n >\n <svg viewBox=\"0 0 20 20\" fill=\"currentColor\" className=\"size-4\">\n <path d=\"M7 4.5v11l9-5.5-9-5.5Z\" />\n </svg>\n </span>\n );\n}\n\nfunction ArrowIcon({ flip = false }: { flip?: boolean }) {\n return (\n <svg viewBox=\"0 0 20 20\" fill=\"none\" aria-hidden className={`size-4 ${flip ? 'rotate-180' : ''}`}>\n <path\n d=\"M4 10h11M11 5l5 5-5 5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nexport function GalleryCarousel({\n eyebrow_text = '',\n heading = '',\n subheading = '',\n heading_alignment = 'center',\n heading_font = 'Sans',\n caption_font = 'Serif',\n show_category_badge = true,\n slides = [],\n visible_neighbours = 2,\n scale_falloff = 14,\n slide_aspect_ratio = 'Portrait',\n show_filters = true,\n all_filter_label = 'All',\n view_more,\n motion = 'Continuous',\n pace_seconds = 3.5,\n pause_on_hover = true,\n show_arrows = true,\n video_muted = true,\n background_color,\n text_color,\n accent_color,\n className = '',\n}: GalleryCarouselProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const slideRefs = useRef<Array<HTMLDivElement | null>>([]);\n const [containerWidth, setContainerWidth] = useState(0);\n const [activeFilter, setActiveFilter] = useState('');\n const [nearest, setNearest] = useState(0);\n const [playingIndex, setPlayingIndex] = useState<number | null>(null);\n const [hovering, setHovering] = useState(false);\n const [reducedMotion, setReducedMotion] = useState(false);\n\n /**\n * Fractional carousel position, in slides. Deliberately a ref, not state: it\n * changes every frame, and re-rendering the tree at 60fps to move six boxes\n * would be wasteful. The frame loop writes transforms straight to the DOM.\n */\n const posRef = useRef(0);\n const targetRef = useRef(0);\n\n // Measured rather than a CSS media query, so it tracks the component's own\n // box — the storybook preview fakes width with a fixed-px wrapper that media\n // queries can't see. Same approach as BentoGrid.\n useEffect(() => {\n const el = containerRef.current;\n if (!el) return;\n const ro = new ResizeObserver(([entry]) => setContainerWidth(entry.contentRect.width));\n ro.observe(el);\n return () => ro.disconnect();\n }, []);\n\n // Never-ending drift is exactly what this setting exists to stop.\n useEffect(() => {\n if (typeof window === 'undefined' || !window.matchMedia) return;\n const mq = window.matchMedia('(prefers-reduced-motion: reduce)');\n setReducedMotion(mq.matches);\n const onChange = (e: MediaQueryListEvent) => setReducedMotion(e.matches);\n mq.addEventListener?.('change', onChange);\n return () => mq.removeEventListener?.('change', onChange);\n }, []);\n\n const resolvedBg = resolveStackableColor(background_color);\n const resolvedText = resolveStackableColor(text_color);\n const resolvedAccent = resolveStackableColor(accent_color);\n const accent = resolvedAccent || '#1e1b4b';\n\n const sectionClasses = 'bg-white';\n\n const headingClasses = 'text-neutral-900';\n\n const bodyClasses = 'text-neutral-600';\n\n const chipClasses = 'border-neutral-300 text-neutral-700 hover:bg-neutral-100';\n\n const withMedia = useMemo(\n () => (slides ?? []).filter((s) => Boolean(resolveImage(s?.image)) || Boolean(resolveImage(s?.video_url))),\n [slides],\n );\n\n // Chips come from the slides themselves, in first-seen order, so there is no\n // second list to keep in sync and no chip that filters to nothing.\n const categories = useMemo(() => {\n const seen: string[] = [];\n withMedia.forEach((s) => {\n const c = s.category?.trim();\n if (c && !seen.includes(c)) seen.push(c);\n });\n return seen;\n }, [withMedia]);\n\n const visible = useMemo(\n () => (activeFilter ? withMedia.filter((s) => s.category?.trim() === activeFilter) : withMedia),\n [withMedia, activeFilter],\n );\n\n const total = visible.length;\n\n const single = containerWidth > 0 && containerWidth < SINGLE_BELOW_PX;\n const neighbours = single ? 0 : Math.max(0, Math.min(4, Math.round(visible_neighbours) || 2));\n const falloff = Math.max(0, Math.min(40, scale_falloff)) / 100;\n\n // One slot beyond the visible window stays mounted, so a slide entering the\n // frame is already there to be moved rather than appearing at its\n // destination — which is what made the earlier stepped motion look uneven.\n const windowSize = neighbours + 1;\n\n /**\n * Wrapping takes the shortest way round, so a slide's offset flips sign on the\n * far side of the loop. That flip is a jump, hidden only when it happens\n * outside the rendered window — which needs enough slides. Below this the\n * track runs linearly and stops at both ends.\n */\n const canLoop = total >= 2 * windowSize + 1;\n\n // Drifting needs neighbours to drift past. With one slide visible the card\n // would sit permanently mid-transit and off-centre, so narrow widths step\n // instead — cards settle centred, which is what a single-slide view needs.\n const drifting = motion === 'Continuous' && canLoop && !reducedMotion && !single;\n // Continuous falls back to stepping when it can't loop safely or the visitor\n // asked for less motion, rather than sitting still.\n const stepping = motion === 'Stepped' || (motion === 'Continuous' && !drifting);\n\n const focusWidth = single\n ? Math.min(containerWidth, MAX_FOCUS_WIDTH)\n : Math.max(MIN_FOCUS_WIDTH, Math.min(MAX_FOCUS_WIDTH, containerWidth * FOCUS_WIDTH_RATIO));\n const ratio = ASPECT_RATIOS[slide_aspect_ratio] ?? ASPECT_RATIOS.Portrait;\n const focusHeight = focusWidth / ratio;\n const step = focusWidth * STEP_RATIO;\n\n /** Signed offset of slide `i` from a position, wrapped when looping. */\n const offsetOf = useCallback(\n (i: number, pos: number) => {\n let offset = i - pos;\n if (canLoop) {\n if (offset > total / 2) offset -= total;\n if (offset < -total / 2) offset += total;\n }\n return offset;\n },\n [canLoop, total],\n );\n\n /**\n * Writes every slide's transform for a given position and returns the index\n * nearest the centre. Called from the frame loop, so it touches the DOM\n * directly instead of going through React.\n */\n const paint = useCallback(\n (pos: number) => {\n let closest = 0;\n let closestDistance = Infinity;\n for (let i = 0; i < total; i += 1) {\n const el = slideRefs.current[i];\n if (!el) continue;\n const offset = offsetOf(i, pos);\n const distance = Math.abs(offset);\n if (distance < closestDistance) {\n closestDistance = distance;\n closest = i;\n }\n if (distance > windowSize) {\n el.style.opacity = '0';\n el.style.pointerEvents = 'none';\n continue;\n }\n // `scale_falloff` still sets how small a slide gets at the window edge;\n // the curve between there and the centre is eased rather than straight.\n const edgeScale = Math.max(MIN_SCALE, 1 - windowSize * falloff);\n const scale = 1 - (1 - edgeScale) * easeInOut(distance / windowSize);\n // Fades across the outermost slot, so a slide arrives and leaves softly\n // instead of blinking on at the window edge.\n const fade = Math.max(0, Math.min(1, windowSize - distance));\n el.style.transform = `translateX(-50%) translateX(${offset * step}px) scale(${scale})`;\n el.style.zIndex = String(Math.round((windowSize - distance) * 10));\n el.style.opacity = String(fade);\n el.style.pointerEvents = fade > 0.6 ? 'auto' : 'none';\n // Proximity to centre, for anything that should fade with focus rather\n // than snap when the nearest slide changes.\n el.style.setProperty('--focus', String(Math.max(0, 1 - distance * 1.6)));\n }\n return closest;\n },\n [total, offsetOf, windowSize, falloff, step],\n );\n\n // A filter change can leave the position pointing past the end of the new set.\n useEffect(() => {\n posRef.current = 0;\n targetRef.current = 0;\n setNearest(0);\n setPlayingIndex(null);\n }, [activeFilter, total]);\n\n const paused = (pause_on_hover && hovering) || playingIndex !== null;\n\n /**\n * One frame loop drives all three motion modes: continuous adds to the\n * position every frame, stepped and manual ease it toward an integer target.\n * Sharing the loop is what keeps the two from ever fighting each other.\n */\n useEffect(() => {\n if (total === 0 || focusWidth === 0) return;\n const pace = Math.max(0.4, pace_seconds || 3.5);\n let frame = 0;\n let last = 0;\n\n const tick = (now: number) => {\n // Clamped so a backgrounded tab returning after 10s doesn't jump the\n // whole track in a single frame.\n const dt = last ? Math.min(0.05, (now - last) / 1000) : 0;\n last = now;\n\n if (drifting && !paused) {\n posRef.current += dt / pace;\n if (posRef.current >= total) posRef.current -= total;\n // Keep the target level with the drift, so pausing holds position\n // instead of easing back to wherever the target was last left.\n targetRef.current = posRef.current;\n } else {\n const delta = targetRef.current - posRef.current;\n if (Math.abs(delta) > 0.001) posRef.current += delta * Math.min(1, dt * EASE_PER_SECOND);\n else posRef.current = targetRef.current;\n }\n\n const closest = paint(posRef.current);\n setNearest((prev) => (prev === closest ? prev : closest));\n frame = requestAnimationFrame(tick);\n };\n\n frame = requestAnimationFrame(tick);\n return () => cancelAnimationFrame(frame);\n }, [total, focusWidth, drifting, paused, pace_seconds, paint]);\n\n // Stepped mode only nudges the target; the frame loop does the easing.\n useEffect(() => {\n if (!stepping || paused || total < 2) return;\n const ms = Math.max(400, (pace_seconds || 3.5) * 1000);\n const timer = setInterval(() => {\n if (canLoop) {\n targetRef.current += 1;\n if (targetRef.current >= total) {\n targetRef.current -= total;\n posRef.current -= total;\n }\n } else {\n targetRef.current = Math.min(total - 1, Math.round(targetRef.current) + 1);\n }\n }, ms);\n return () => clearInterval(timer);\n }, [stepping, paused, total, pace_seconds, canLoop]);\n\n const go = (delta: number) => {\n const next = Math.round(targetRef.current) + delta;\n targetRef.current = canLoop ? next : Math.max(0, Math.min(total - 1, next));\n setPlayingIndex(null);\n };\n\n const alignClass = ALIGNMENTS[heading_alignment] ?? ALIGNMENTS.center;\n const showArrows = show_arrows && !drifting && total > 1;\n\n return (\n <section\n className={`${sectionClasses} ${className}`.trim()}\n style={resolvedBg ? { backgroundColor: resolvedBg } : undefined}\n >\n <div className=\"component-container mx-auto px-6 py-14 lg:py-20\">\n {/* ── Heading ────────────────────────────────────────────────────── */}\n {(eyebrow_text || heading || subheading) && (\n <div className={`flex flex-col ${alignClass} mb-8`}>\n {eyebrow_text && (\n <p className=\"mb-3 text-xs font-semibold uppercase tracking-[0.2em]\" style={{ color: accent }}>\n {eyebrow_text}\n </p>\n )}\n {heading && (\n <h2\n className={`text-3xl font-bold tracking-tight sm:text-4xl ${headingClasses}`}\n style={{\n ...(HEADING_FONTS[heading_font] ? { fontFamily: HEADING_FONTS[heading_font] } : {}),\n ...(resolvedText ? { color: resolvedText } : {}),\n }}\n >\n {heading}\n </h2>\n )}\n {subheading && (\n <p className={`mt-3 max-w-md whitespace-pre-line text-sm leading-relaxed ${bodyClasses}`}>\n {subheading}\n </p>\n )}\n </div>\n )}\n\n {/* ── Filter chips ───────────────────────────────────────────────── */}\n {show_filters && categories.length > 0 && (\n <div className=\"mb-10 flex flex-wrap items-center justify-center gap-2.5\">\n {['', ...categories].map((c) => (\n <button\n key={c || '__all'}\n type=\"button\"\n onClick={() => setActiveFilter(c)}\n aria-pressed={activeFilter === c}\n className={`rounded-full border px-5 py-2 text-sm transition-colors duration-200 ${\n activeFilter === c ? 'text-white' : chipClasses\n }`}\n style={activeFilter === c ? { backgroundColor: accent, borderColor: accent } : undefined}\n >\n {c || all_filter_label}\n </button>\n ))}\n {view_more?.title && (\n <a\n href={view_more.href?.trim() || '#'}\n className={`inline-flex items-center gap-2 rounded-full border px-5 py-2 text-sm font-medium transition-colors duration-200 ${chipClasses}`}\n >\n {view_more.title}\n <ArrowIcon />\n </a>\n )}\n </div>\n )}\n\n {/* ── Track ──────────────────────────────────────────────────────── */}\n <div ref={containerRef} className=\"w-full\">\n {total === 0 ? (\n <p className={`text-sm ${bodyClasses}`}>No slides added yet.</p>\n ) : (\n focusWidth > 0 && (\n <div\n className=\"relative w-full overflow-hidden\"\n style={{ height: `${focusHeight}px` }}\n onMouseEnter={() => setHovering(true)}\n onMouseLeave={() => setHovering(false)}\n onFocusCapture={() => setHovering(true)}\n onBlurCapture={() => setHovering(false)}\n >\n {visible.map((slide, i) => {\n const src = resolveImage(slide.image);\n const videoSrc = resolveImage(slide.video_url);\n const isNearest = i === nearest;\n const isPlaying = playingIndex === i;\n const href = slide.link?.href?.trim();\n const hasVideo = Boolean(videoSrc);\n\n return (\n <div\n key={i}\n ref={(el) => {\n slideRefs.current[i] = el;\n }}\n className=\"absolute left-1/2 top-0 overflow-hidden rounded-2xl shadow-2xl shadow-black/25\"\n style={{\n width: `${focusWidth}px`,\n height: `${focusHeight}px`,\n // The frame loop owns transform, opacity, z-index and\n // pointer-events from here on. Starting invisible keeps\n // the first paint from flashing every slide at centre.\n transform: 'translateX(-50%) scale(0.4)',\n opacity: 0,\n willChange: 'transform, opacity',\n }}\n >\n {isPlaying && hasVideo ? (\n <video\n className=\"absolute inset-0 h-full w-full object-cover\"\n src={videoSrc}\n autoPlay\n muted={video_muted}\n playsInline\n controls\n onEnded={() => setPlayingIndex(null)}\n />\n ) : (\n <>\n {src ? (\n <img\n src={src}\n alt={slide.image_alt || slide.slide_title || slide.caption || ''}\n className=\"absolute inset-0 h-full w-full object-cover\"\n loading=\"lazy\"\n />\n ) : (\n <span aria-hidden className=\"absolute inset-0 bg-neutral-200 dark:bg-neutral-800\" />\n )}\n\n {hasVideo && <PlayBadge accent={accent} />}\n\n {show_category_badge && slide.category?.trim() && (\n <span\n className=\"pointer-events-none absolute left-4 top-4 rounded-full px-3 py-1 text-[10px] font-semibold uppercase tracking-[0.16em] text-white backdrop-blur-sm\"\n style={{ backgroundColor: 'rgba(0,0,0,0.45)', opacity: 'var(--focus, 0)' }}\n >\n {slide.category}\n </span>\n )}\n\n {(slide.slide_title || slide.caption || slide.meta) && (\n <span\n // Capped and clipped: authored copy can run to\n // several lines, and without a ceiling a long\n // caption grows past the top of its own card.\n className=\"pointer-events-none absolute inset-x-0 bottom-0 block max-h-[72%] overflow-hidden bg-gradient-to-t from-black/85 via-black/45 to-transparent px-5 pb-5 pt-16 text-white\"\n // Opacity is driven by the same frame loop as the\n // transform, so the whole overlay fades with\n // distance instead of snapping when the nearest\n // slide changes.\n style={{\n opacity: 'var(--focus, 0)',\n ...(HEADING_FONTS[caption_font] ? { fontFamily: HEADING_FONTS[caption_font] } : {}),\n }}\n >\n {slide.slide_title && (\n <span className=\"block whitespace-pre-line text-xl font-semibold leading-tight\">{slide.slide_title}</span>\n )}\n {slide.caption && (\n <span className=\"mt-1.5 block whitespace-pre-line text-[15px] leading-snug text-white/85\">\n {slide.caption}\n </span>\n )}\n {slide.meta && (\n <span className=\"mt-2.5 block whitespace-pre-line text-[10px] uppercase tracking-[0.16em] text-white/70\">\n {slide.meta}\n </span>\n )}\n </span>\n )}\n\n {/* A real control rather than a clickable div, so\n keyboard and screen-reader users get a target. */}\n {(hasVideo || href) && (\n <a\n href={hasVideo ? undefined : href}\n role={hasVideo ? 'button' : undefined}\n tabIndex={0}\n onClick={\n hasVideo\n ? (e) => {\n e.preventDefault();\n setPlayingIndex(i);\n }\n : undefined\n }\n aria-label={\n hasVideo\n ? `Play ${slide.slide_title || slide.caption || 'video'}`\n : slide.link?.title || slide.slide_title || slide.caption || `Slide ${i + 1}`\n }\n aria-current={isNearest ? 'true' : undefined}\n className=\"absolute inset-0 block h-full w-full cursor-pointer\"\n />\n )}\n </>\n )}\n </div>\n );\n })}\n </div>\n )\n )}\n </div>\n\n {/* ── Arrows ─────────────────────────────────────────────────────── */}\n {showArrows && (\n <div className=\"mt-10 flex items-center justify-center gap-3\">\n <button\n type=\"button\"\n onClick={() => go(-1)}\n aria-label=\"Previous slide\"\n className={`grid size-11 place-items-center rounded-full border transition-colors duration-200 ${chipClasses}`}\n >\n <ArrowIcon flip />\n </button>\n <button\n type=\"button\"\n onClick={() => go(1)}\n aria-label=\"Next slide\"\n className={`grid size-11 place-items-center rounded-full border transition-colors duration-200 ${chipClasses}`}\n >\n <ArrowIcon />\n </button>\n </div>\n )}\n </div>\n </section>\n );\n}\n\nexport default GalleryCarousel;\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","/* eslint-disable @next/next/no-img-element */\nimport React, { useEffect, useState } from 'react';\nimport { HeartIcon, ShoppingBagIcon } from '@heroicons/react/24/outline';\nimport { HeartIcon as HeartIconSolid, CheckIcon } from '@heroicons/react/24/solid';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\n/** Internal — reached through `ProductCard` with `card_style: 'Dark'`. */\nexport interface ProductCardDarkProps {\n product_name?: string;\n brand?: string;\n /** Asset URL, or a Contentstack asset object — both are accepted. */\n product_image?: string | { url?: string };\n image_alt?: string;\n price?: number;\n currency?: string;\n /** `59$` (suffix, as in the reference) vs `$59` (prefix). */\n currency_position?: 'prefix' | 'suffix' | string;\n href?: string;\n /** Accessible label for the add-to-cart button. */\n cta_label?: string;\n image_aspect_ratio?: 'Square' | 'Landscape' | 'Portrait' | string;\n /** `Contain` suits cut-out product shots; `Cover` suits lifestyle photography. */\n image_fit?: 'Contain' | 'Cover' | string;\n show_wishlist?: boolean;\n show_cart_button?: boolean;\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n /** Heart fill once wishlisted. */\n accent_color?: StackableColorValue;\n className?: string;\n}\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveImage(image: ProductCardDarkProps['product_image']): string {\n if (!image) return '';\n if (typeof image === 'string') return image.trim();\n return typeof image.url === 'string' ? image.url.trim() : '';\n}\n\nconst ASPECT_RATIOS: Record<string, string> = {\n Square: '1 / 1',\n Landscape: '4 / 3',\n Portrait: '3 / 4',\n};\n\n/** How long the cart button stays in its confirmed state. */\nconst ADDED_RESET_MS = 1600;\n\nfunction formatPrice(price: number, currency: string, position: string) {\n const amount = Number.isFinite(price)\n ? price % 1 === 0\n ? String(price)\n : price.toFixed(2)\n : '0';\n return position === 'prefix' ? `${currency}${amount}` : `${amount}${currency}`;\n}\n\nexport function ProductCardDark({\n product_name = 'Air Force 1 Low Supreme',\n brand = 'Nike',\n product_image,\n image_alt,\n price = 59,\n currency = '$',\n currency_position = 'suffix',\n href = '#',\n cta_label = 'Add to cart',\n image_aspect_ratio = 'Landscape',\n image_fit = 'Contain',\n show_wishlist = true,\n show_cart_button = true,\n background_color,\n text_color,\n accent_color,\n className = '',\n}: ProductCardDarkProps) {\n const [saved, setSaved] = useState(false);\n const [added, setAdded] = useState(false);\n\n // Keep the confirmed state transient, and don't leak the timer on unmount.\n useEffect(() => {\n if (!added) return;\n const timer = setTimeout(() => setAdded(false), ADDED_RESET_MS);\n return () => clearTimeout(timer);\n }, [added]);\n\n const src = resolveImage(product_image);\n const aspect = ASPECT_RATIOS[image_aspect_ratio] ?? ASPECT_RATIOS.Landscape;\n\n const resolvedBg = resolveStackableColor(background_color);\n const resolvedText = resolveStackableColor(text_color);\n const accent = resolveStackableColor(accent_color) || '#ff3b30';\n\n const cardBg = 'bg-[#1c1c1e]';\n const cardRing = '';\n const titleColor = 'text-white';\n const brandColor = 'text-neutral-400';\n const iconBtnBg = 'bg-black/55 hover:bg-black/70';\n const iconBtnFg = 'text-white';\n const cartBg = 'bg-white text-neutral-900';\n\n const cardStyle = resolvedBg ? { backgroundColor: resolvedBg } : undefined;\n const textStyle: React.CSSProperties | undefined = resolvedText ? { color: resolvedText } : undefined;\n\n return (\n // Light wrapper only — matching the sibling ProductCard, so several of these\n // drop into a grid without each one claiming the full container width.\n <section className={`flex items-center justify-center px-1 py-4 ${className}`.trim()}>\n <div\n className={`w-full max-w-[320px] rounded-[28px] p-3.5 shadow-xl shadow-black/10 ${cardBg} ${cardRing}`.trim()}\n style={cardStyle}\n >\n {/* ── Image well ─────────────────────────────────────────────────── */}\n <div\n className=\"relative w-full overflow-hidden rounded-[20px] bg-[#ebebed]\"\n style={{ aspectRatio: aspect }}\n >\n {src ? (\n <img\n src={src}\n alt={image_alt || product_name || 'Product'}\n className={`absolute inset-0 h-full w-full ${\n image_fit === 'Cover' ? 'object-cover' : 'object-contain p-3'\n }`}\n loading=\"lazy\"\n />\n ) : (\n <div className=\"absolute inset-0 grid place-items-center text-xs text-neutral-400\">\n No image\n </div>\n )}\n\n {show_wishlist && (\n <button\n type=\"button\"\n onClick={() => setSaved((v) => !v)}\n aria-pressed={saved}\n aria-label={saved ? 'Remove from wishlist' : 'Add to wishlist'}\n className={`absolute right-3 top-3 grid h-9 w-9 place-items-center rounded-full backdrop-blur transition-transform duration-150 active:scale-90 ${iconBtnBg} ${iconBtnFg}`}\n >\n {saved ? (\n <HeartIconSolid className=\"h-[18px] w-[18px]\" style={{ color: accent }} />\n ) : (\n <HeartIcon className=\"h-[18px] w-[18px]\" strokeWidth={2} />\n )}\n </button>\n )}\n </div>\n\n {/* ── Name + brand ───────────────────────────────────────────────── */}\n <div className=\"px-2 pt-4\">\n {product_name && (\n <a\n href={href || '#'}\n className={`block truncate text-[17px] font-medium leading-snug hover:underline ${titleColor}`}\n style={textStyle}\n title={product_name}\n >\n {product_name}\n </a>\n )}\n {brand && <p className={`mt-0.5 text-[13px] ${brandColor}`}>{brand}</p>}\n </div>\n\n {/* ── Price + cart ───────────────────────────────────────────────── */}\n <div className=\"flex items-center justify-between gap-3 px-2 pb-1 pt-5\">\n <p className={`text-[30px] font-bold leading-none ${titleColor}`} style={textStyle}>\n {formatPrice(Number(price), currency, currency_position)}\n </p>\n\n {show_cart_button && (\n <button\n type=\"button\"\n onClick={() => setAdded(true)}\n aria-label={added ? 'Added to cart' : cta_label}\n className={`grid h-14 w-14 shrink-0 place-items-center rounded-full transition-transform duration-150 hover:scale-105 active:scale-90 ${cartBg}`}\n >\n {added ? (\n <CheckIcon className=\"h-6 w-6\" />\n ) : (\n <ShoppingBagIcon className=\"h-6 w-6\" strokeWidth={1.8} />\n )}\n </button>\n )}\n </div>\n </div>\n </section>\n );\n}\n\nexport default ProductCardDark;\n","import React from 'react';\n\nexport interface ProductCardLargeProps {\n product_name?: string;\n product_image?: string;\n price?: number;\n href?: string;\n cta_label?: string;\n className?: string;\n}\n\nexport function ProductCardLarge({\n product_name: productName,\n product_image: productImage,\n price = 99.99,\n href = '#',\n cta_label = 'Add to Cart',\n className,\n}: ProductCardLargeProps) {\n return (\n <section className={`${className ?? ''}`.trim()}>\n <div className=\"component-container mx-auto px-6 py-16 flex items-center justify-center\">\n <div className=\"max-w-[420px] w-full shadow-[0_4px_24px_rgba(0,0,0,0.08)]\">\n <div>\n <a href={href} className=\"bg-[#f3f4f6]\" tabIndex={-1} aria-hidden=\"true\">\n {productImage ? (\n <img\n src={productImage}\n alt={productName}\n className=\"w-full h-full object-cover aspect-[2/3] hover:opacity-75 transition-opacity duration-150\"\n />\n ) : (\n <div className=\"flex items-center justify-center min-h-[260px]\">\n <span className=\"text-6xl opacity-30\">🛍</span>\n </div>\n )}\n </a>\n </div>\n\n <div className=\"flex flex-col gap-2 p-5\">\n {productName && <h3>{productName}</h3>}\n\n <div className=\"text-xl font-bold text-gray-700\">\n ${typeof price === 'number' ? price.toFixed() : price}\n </div>\n\n <a\n href={href}\n className=\"block w-full mt-3 px-6 py-3 text-base font-semibold text-center text-white bg-[var(--stackables-primary)] border-none rounded-md cursor-pointer transition-[filter] duration-150 hover:brightness-88 disabled:bg-[#9ca3af] disabled:cursor-not-allowed disabled:pointer-events-none\"\n aria-disabled={undefined}\n >\n {cta_label}\n </a>\n </div>\n </div>\n </div>\n </section>\n )\n}\n\nexport default ProductCardLarge\n","/* eslint-disable @next/next/no-img-element */\nimport React from 'react';\n\nexport interface ProductBannerItem {\n image?: string;\n name?: string;\n subtext?: string;\n price?: number | string;\n original_price?: number | string;\n discount_label?: string;\n price_note?: string;\n unit_price?: string;\n unit_note?: string;\n href?: string;\n}\n\nexport interface ProductBannerProps {\n badge_label?: string;\n heading?: string;\n description?: string;\n banner_image?: string;\n banner_link?: string;\n shop_all_label?: string;\n shop_all_link?: string;\n products?: ProductBannerItem[];\n /** Which side the banner image sits on relative to the product row */\n banner_position?: 'left' | 'right' | string;\n className?: string;\n}\n\nfunction formatPrice(value?: number | string): string | undefined {\n if (value == null || value === '') return undefined;\n const num = typeof value === 'number' ? value : Number(value);\n return Number.isNaN(num) ? String(value) : num.toFixed(2);\n}\n\nfunction ProductBannerTile({ product }: { product: ProductBannerItem }) {\n if (!product) return null;\n const {\n image,\n name,\n subtext,\n price,\n original_price,\n discount_label,\n price_note,\n unit_price,\n unit_note,\n href = '#',\n } = product;\n\n const formattedPrice = formatPrice(price);\n const formattedOriginal = formatPrice(original_price);\n const [whole, cents] = (formattedPrice ?? '').split('.');\n\n return (\n <div className=\"relative flex-shrink-0 w-[190px]\">\n <div className=\"relative\">\n <a href={href} className=\"block bg-[#f3f4f6] rounded-md overflow-hidden aspect-square\" tabIndex={-1} aria-hidden=\"true\">\n {image ? (\n <img src={image} alt={name || 'Product'} className=\"w-full h-full object-cover\" />\n ) : (\n <div className=\"flex items-center justify-center w-full h-full\">\n <span className=\"text-5xl opacity-30\">🛍</span>\n </div>\n )}\n </a>\n <button\n type=\"button\"\n className=\"absolute top-2 right-2 flex items-center gap-1 bg-[#0a1c47] text-white text-xs font-semibold pl-2 pr-3 py-1.5 rounded-full shadow cursor-pointer\"\n >\n <span className=\"text-sm leading-none\">+</span> Add\n </button>\n </div>\n\n <div className=\"mt-3 flex items-start gap-2\">\n {formattedPrice && (\n <span className=\"bg-[#cc0000] text-white rounded px-2 py-1 leading-none whitespace-nowrap\">\n <span className=\"text-base font-extrabold align-top\">${whole}</span>\n {cents && <span className=\"text-[10px] font-extrabold align-top\">{cents}</span>}\n </span>\n )}\n <div className=\"flex flex-col\">\n {price_note && <span className=\"text-[11px] text-gray-500 leading-tight\">{price_note}</span>}\n {formattedOriginal && (\n <span className=\"text-[13px] text-gray-400 line-through leading-tight\">${formattedOriginal}</span>\n )}\n </div>\n </div>\n\n {discount_label && <p className=\"mt-1 text-xs font-bold text-[#1a2f6b]\">{discount_label}</p>}\n {name && <p className=\"mt-1 text-sm text-gray-900 leading-snug\">{name}</p>}\n {unit_price && <p className=\"mt-1 text-sm text-gray-900\">{unit_price}</p>}\n {unit_note && <p className=\"text-xs text-gray-500\">{unit_note}</p>}\n {subtext && <p className=\"text-xs text-gray-500\">{subtext}</p>}\n </div>\n );\n}\n\nexport function ProductBanner({\n badge_label = 'Price Drops',\n heading = 'Great cuts. Bold savings.',\n description = 'Shop fresh meat & seafood Price Drops.',\n banner_image,\n banner_link = '#',\n shop_all_label = 'Shop All',\n shop_all_link = '#',\n products = [],\n banner_position = 'left',\n className,\n}: ProductBannerProps) {\n const isBannerLeft = (banner_position ?? 'left').toLowerCase() !== 'right';\n\n const bannerTile = (\n <a\n href={banner_link}\n className=\"relative flex-shrink-0 w-[300px] rounded-lg overflow-hidden bg-[#e5e7eb] block\"\n >\n {banner_image ? (\n <img src={banner_image} alt={heading || 'Banner'} className=\"w-full h-full object-cover\" />\n ) : (\n <div className=\"flex items-center justify-center w-full h-full min-h-[280px]\">\n <span className=\"text-6xl opacity-30\">🖼</span>\n </div>\n )}\n {badge_label && (\n <span className=\"absolute top-4 left-4 bg-white text-[#cc0000] font-extrabold text-sm leading-tight px-3 py-2 uppercase shadow-sm\">\n {badge_label}\n </span>\n )}\n </a>\n );\n\n const productsRow = (\n <div className=\"flex gap-6 overflow-x-auto pb-2 flex-1 min-w-0\">\n {products?.map((product, i) => (\n <ProductBannerTile key={i} product={product} />\n ))}\n </div>\n );\n\n return (\n <section className={`w-full rounded-2xl border border-gray-100 shadow-[0_4px_24px_rgba(0,0,0,0.06)] p-6 ${className ?? ''}`.trim()}>\n <div className=\"flex items-start justify-between gap-4 mb-5\">\n <div>\n {heading && <h2 className=\"text-xl font-extrabold text-gray-900\">{heading}</h2>}\n {description && <p className=\"text-sm text-gray-500 mt-1\">{description}</p>}\n </div>\n {shop_all_label && (\n <a\n href={shop_all_link}\n className=\"flex items-center gap-1 text-sm font-semibold text-gray-900 whitespace-nowrap hover:underline\"\n >\n {shop_all_label} <span aria-hidden=\"true\">→</span>\n </a>\n )}\n </div>\n\n <div className=\"flex gap-6 items-stretch\">\n {isBannerLeft ? (\n <>\n {bannerTile}\n {productsRow}\n </>\n ) : (\n <>\n {productsRow}\n {bannerTile}\n </>\n )}\n </div>\n </section>\n );\n}\n\nexport default ProductBanner;\n","/* eslint-disable @next/next/no-img-element */\nimport React, { useState } from 'react';\nimport { ProductCardDark as DarkLayout } from './DarkCard';\nimport type { StackableColorValue } from '../../types';\n\nexport interface ProductColorOption {\n label?: string;\n hex?: string;\n}\n\nexport interface ProductSizeOption {\n label?: string;\n}\n\nexport interface ProductCardProps {\n /**\n * Which layout to render. `Regular` is the original light card with colour and\n * size pickers; `Dark` is the rounded dark card with a wishlist heart and a\n * circular cart button. Fields belonging to the other style are ignored.\n */\n card_style?: 'Regular' | 'Dark' | string;\n\n product_name?: string;\n /** Asset URL, or a Contentstack asset object — both are accepted. */\n product_image?: string | { url?: string };\n /** Falls back to the product name when empty. */\n image_alt?: string;\n price?: number;\n href?: string;\n cta_label?: string;\n\n /** Regular only — `Large` widens the card. */\n card_size?: string;\n /** Regular only. */\n colors?: ProductColorOption[];\n /** Regular only. */\n sizes?: ProductSizeOption[];\n\n /** Dark only. */\n brand?: string;\n /** Dark only. */\n currency?: string;\n /** Dark only. */\n currency_position?: 'prefix' | 'suffix' | string;\n /** Dark only. */\n image_aspect_ratio?: 'Square' | 'Landscape' | 'Portrait' | string;\n /** Dark only. */\n image_fit?: 'Contain' | 'Cover' | string;\n /** Dark only. */\n show_wishlist?: boolean;\n /** Dark only. */\n show_cart_button?: boolean;\n /** Dark only. */\n background_color?: StackableColorValue;\n /** Dark only. */\n text_color?: StackableColorValue;\n /** Dark only. */\n accent_color?: StackableColorValue;\n\n className?: string;\n}\n\nexport { ProductCardLarge } from './LargeCard';\nexport type { ProductCardLargeProps } from './LargeCard';\n\nexport { ProductBanner } from './ProductBanner';\nexport type { ProductBannerProps, ProductBannerItem } from './ProductBanner';\n\nexport function ProductCard({\n card_style = 'Regular',\n product_name: productName = 'Classic Leather Sneaker',\n product_image: productImage,\n image_alt,\n card_size: cardSize,\n price = 99.99,\n colors = [],\n sizes = [],\n href = '#',\n cta_label = 'Add to Cart',\n className,\n ...darkOnly\n}: ProductCardProps) {\n const [activeColor, setActiveColor] = useState(0);\n const [activeSize, setActiveSize] = useState<number | null>(null);\n\n // One catalog entry, two layouts. The dark card is a different enough\n // composition that it keeps its own renderer instead of being threaded\n // through this one as a pile of conditionals.\n if (card_style === 'Dark') {\n return (\n <DarkLayout\n product_name={productName}\n product_image={productImage}\n image_alt={image_alt}\n price={price}\n href={href}\n cta_label={cta_label}\n className={className}\n {...darkOnly}\n />\n );\n }\n\n // Regular accepts the asset-object shape too, so both layouts take the same payload.\n const imageSrc = typeof productImage === 'string' ? productImage : productImage?.url ?? '';\n\n return (\n <section className={`px-1 py-4 flex items-center justify-center ${className ?? ''}`.trim()}>\n <div className={`${cardSize === 'Large' ? 'max-w-[440px]' : 'max-w-[370px]'} w-full shadow-[0_4px_24px_rgba(0,0,0,0.08)]`}>\n <div>\n <a href={href} className=\"bg-[#f3f4f6]\" tabIndex={-1} aria-hidden=\"true\">\n {imageSrc ? (\n <img\n src={imageSrc}\n alt={image_alt || productName}\n className=\"product-card-regular-image w-full h-full object-cover aspect-square hover:opacity-75 transition-opacity duration-150\"\n />\n ) : (\n <div className=\"flex items-center justify-center min-h-[260px]\">\n <span className=\"text-6xl opacity-30\">🛍</span>\n </div>\n )}\n </a>\n </div>\n\n <div className=\"flex flex-col gap-2 p-5\">\n {productName && <h3 className=\"product-name\">{productName}</h3>}\n\n {price != null && (\n <div className=\"product-price text-xl font-bold text-gray-700\">\n ${typeof price === 'number' ? price.toFixed(2) : price}\n </div>\n )}\n\n {(colors?.length ?? 0) > 0 && (\n <div className=\"flex flex-col gap-2\">\n <p className=\"color-options-label text-sm font-semibold text-gray-600\">\n Color: <span className=\"color-options-value text-gray-500 font-normal\">{colors[activeColor]?.label}</span>\n </p>\n <div className=\"flex flex-wrap gap-2\">\n {colors.map((c, i) => (\n <button\n key={i}\n type=\"button\"\n onClick={() => setActiveColor(i)}\n aria-label={c?.label || `Color ${i + 1}`}\n title={c?.label}\n className={`color-options-item h-7 w-7 shrink-0 rounded-full border-2 transition focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 ${\n i === activeColor\n ? 'border-gray-500 ring-2 ring-gray-300 ring-offset-2'\n : 'border-gray-200 hover:border-gray-400'\n }`}\n style={{ backgroundColor: c?.hex || '#e5e7eb' }}\n />\n ))}\n </div>\n </div>\n )}\n\n {(sizes?.length ?? 0) > 0 && (\n <div className=\"flex flex-col gap-2\">\n <p className=\"size-options-label text-sm font-semibold text-gray-600\">Size</p>\n <div className=\"flex gap-2 flex-wrap\">\n {sizes.map((s, i) => (\n <button\n key={i}\n className={`size-options-item min-w-[40px] py-1 px-2 text-sm font-semibold border border-gray-300 rounded-md cursor-pointer bg-transparent transition-[border-color,background,color] duration-150 hover:border-[var(--stackables-primary)] hover:text-[var(--stackables-primary)] ${i === activeSize ? '!bg-[var(--stackables-primary)] !border-[var(--stackables-primary)] text-white hover:text-white' : ''}`}\n onClick={() => setActiveSize(i)}\n >\n {s?.label}\n </button>\n ))}\n </div>\n </div>\n )}\n\n <a\n href={href}\n className=\"cta-button block w-full mt-3 px-6 py-3 text-base font-semibold text-center text-white bg-[var(--stackables-primary)] border-none rounded-md cursor-pointer transition-[filter] duration-150 hover:brightness-88 disabled:bg-[#9ca3af] disabled:cursor-not-allowed disabled:pointer-events-none\"\n >\n {cta_label}\n </a>\n </div>\n </div>\n </section>\n )\n}\n\nexport { ProductCard as ProductCardRegular };\nexport default ProductCard\n","import React, { useState, useCallback } from 'react';\nimport { ProductCard } from '../ProductCard';\n\nconst GRID_COL_CLASSES: Record<number, string> = {\n 1: 'md:grid-cols-1 lg:grid-cols-1',\n 2: 'md:grid-cols-2 lg:grid-cols-2',\n 3: 'md:grid-cols-3 lg:grid-cols-3',\n 4: 'md:grid-cols-4 lg:grid-cols-4',\n 5: 'md:grid-cols-5 lg:grid-cols-5',\n 6: 'md:grid-cols-6 lg:grid-cols-6',\n};\n\nfunction gridColClass(columns: number | undefined): string {\n const n = Number(columns);\n const key = Number.isFinite(n) ? Math.min(Math.max(Math.round(n), 1), 6) : 3;\n return GRID_COL_CLASSES[key] ?? GRID_COL_CLASSES[3];\n}\n\nconst CAROUSEL_CARD_WIDTH: Record<number, string> = {\n 1: 'w-full flex-shrink-0',\n 2: 'w-1/2 flex-shrink-0',\n 3: 'w-1/3 flex-shrink-0 relative',\n 4: 'w-1/4 flex-shrink-0',\n 5: 'w-1/5 flex-shrink-0',\n 6: 'w-1/6 flex-shrink-0',\n};\n\nfunction carouselCardWidthClass(visibleCount: number): string {\n const n = Number(visibleCount);\n const key = Number.isFinite(n) ? Math.min(Math.max(Math.round(n), 1), 6) : 4;\n return CAROUSEL_CARD_WIDTH[key] ?? CAROUSEL_CARD_WIDTH[4];\n}\n\nexport interface ProductGridItem {\n id?: string | number;\n uid?: string;\n [key: string]: unknown;\n}\n\nexport interface ProductGridProps {\n products?: ProductGridItem[];\n image_size?: string;\n list_type?: 'Grid' | 'Carousel' | string;\n columns?: number;\n className?: string;\n}\n\nexport function ProductListing({\n products = [],\n image_size,\n list_type,\n columns,\n className,\n}: ProductGridProps) {\n const count = products?.length ?? 0;\n const visibleCount = columns ?? 4;\n const maxIndex = Math.max(0, count - visibleCount);\n\n const [current, setCurrent] = useState(0);\n\n const prev = useCallback(() => setCurrent(c => Math.max(0, c - 1)), []);\n const next = useCallback(() => setCurrent(c => Math.min(maxIndex, c + 1)), [maxIndex]);\n\n const cardWidthClass = carouselCardWidthClass(visibleCount);\n const slideStepPct = 100 / visibleCount;\n\n return (\n <div className={`component-container mx-auto px-6 py-8 ${className ?? ''}`.trim()}>\n <div className=\"relative overflow-hidden\">\n <div\n className={`${list_type === 'Carousel' ? 'flex transition-transform duration-500 ease-in-out' : `grid grid-cols-1 gap-6 ${gridColClass(columns)}`}`}\n style={{\n transform: list_type === 'Carousel' ? `translateX(-${current * slideStepPct}%)` : undefined,\n }}\n >\n {products?.length > 0 && products?.map((product) =>\n \n <ProductCard\n key={String(product?.id ?? product?.uid)}\n {...(product as any)}\n className={list_type === 'Carousel' ? cardWidthClass : ''}\n />\n \n )}\n </div>\n\n {list_type === 'Carousel' && current > 0 && (\n <button\n onClick={prev}\n aria-label=\"Previous slide\"\n className=\"absolute left-0 top-1/2 -translate-y-1/2 bg-white/80 hover:bg-white text-gray-800 p-2 rounded-full shadow transition-colors duration-200 cursor-pointer\"\n >\n ←\n </button>\n )}\n\n {list_type === 'Carousel' && current < maxIndex && (\n <button\n onClick={next}\n aria-label=\"Next slide\"\n className=\"absolute right-0 top-1/2 -translate-y-1/2 bg-white/80 hover:bg-white text-gray-800 p-2 rounded-full shadow transition-colors duration-200 cursor-pointer\"\n >\n →\n </button>\n )}\n </div>\n </div>\n );\n}\n\nexport default ProductListing;\n","\"use strict\";\n\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\nexports._ = _interop_require_default;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"warnOnce\", {\n enumerable: true,\n get: function() {\n return warnOnce;\n }\n});\nlet warnOnce = (_)=>{};\nif (process.env.NODE_ENV !== 'production') {\n const warnings = new Set();\n warnOnce = (msg)=>{\n if (!warnings.has(msg)) {\n console.warn(msg);\n }\n warnings.add(msg);\n };\n}\n\n//# sourceMappingURL=warn-once.js.map","/**\n * A shared function, used on both client and server, to generate a SVG blur placeholder.\n */ \"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"getImageBlurSvg\", {\n enumerable: true,\n get: function() {\n return getImageBlurSvg;\n }\n});\nfunction getImageBlurSvg(param) {\n let { widthInt, heightInt, blurWidth, blurHeight, blurDataURL, objectFit } = param;\n const std = 20;\n const svgWidth = blurWidth ? blurWidth * 40 : widthInt;\n const svgHeight = blurHeight ? blurHeight * 40 : heightInt;\n const viewBox = svgWidth && svgHeight ? \"viewBox='0 0 \" + svgWidth + \" \" + svgHeight + \"'\" : '';\n const preserveAspectRatio = viewBox ? 'none' : objectFit === 'contain' ? 'xMidYMid' : objectFit === 'cover' ? 'xMidYMid slice' : 'none';\n return \"%3Csvg xmlns='http://www.w3.org/2000/svg' \" + viewBox + \"%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='\" + std + \"'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='\" + std + \"'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='\" + preserveAspectRatio + \"' style='filter: url(%23b);' href='\" + blurDataURL + \"'/%3E%3C/svg%3E\";\n}\n\n//# sourceMappingURL=image-blur-svg.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n VALID_LOADERS: null,\n imageConfigDefault: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n VALID_LOADERS: function() {\n return VALID_LOADERS;\n },\n imageConfigDefault: function() {\n return imageConfigDefault;\n }\n});\nconst VALID_LOADERS = [\n 'default',\n 'imgix',\n 'cloudinary',\n 'akamai',\n 'custom'\n];\nconst imageConfigDefault = {\n deviceSizes: [\n 640,\n 750,\n 828,\n 1080,\n 1200,\n 1920,\n 2048,\n 3840\n ],\n imageSizes: [\n 16,\n 32,\n 48,\n 64,\n 96,\n 128,\n 256,\n 384\n ],\n path: '/_next/image',\n loader: 'default',\n loaderFile: '',\n domains: [],\n disableStaticImages: false,\n minimumCacheTTL: 60,\n formats: [\n 'image/webp'\n ],\n dangerouslyAllowSVG: false,\n contentSecurityPolicy: \"script-src 'none'; frame-src 'none'; sandbox;\",\n contentDispositionType: 'attachment',\n localPatterns: undefined,\n remotePatterns: [],\n qualities: undefined,\n unoptimized: false\n};\n\n//# sourceMappingURL=image-config.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"getImgProps\", {\n enumerable: true,\n get: function() {\n return getImgProps;\n }\n});\nconst _warnonce = require(\"./utils/warn-once\");\nconst _imageblursvg = require(\"./image-blur-svg\");\nconst _imageconfig = require(\"./image-config\");\nconst VALID_LOADING_VALUES = [\n 'lazy',\n 'eager',\n undefined\n];\n// Object-fit values that are not valid background-size values\nconst INVALID_BACKGROUND_SIZE_VALUES = [\n '-moz-initial',\n 'fill',\n 'none',\n 'scale-down',\n undefined\n];\nfunction isStaticRequire(src) {\n return src.default !== undefined;\n}\nfunction isStaticImageData(src) {\n return src.src !== undefined;\n}\nfunction isStaticImport(src) {\n return !!src && typeof src === 'object' && (isStaticRequire(src) || isStaticImageData(src));\n}\nconst allImgs = new Map();\nlet perfObserver;\nfunction getInt(x) {\n if (typeof x === 'undefined') {\n return x;\n }\n if (typeof x === 'number') {\n return Number.isFinite(x) ? x : NaN;\n }\n if (typeof x === 'string' && /^[0-9]+$/.test(x)) {\n return parseInt(x, 10);\n }\n return NaN;\n}\nfunction getWidths(param, width, sizes) {\n let { deviceSizes, allSizes } = param;\n if (sizes) {\n // Find all the \"vw\" percent sizes used in the sizes prop\n const viewportWidthRe = /(^|\\s)(1?\\d?\\d)vw/g;\n const percentSizes = [];\n for(let match; match = viewportWidthRe.exec(sizes); match){\n percentSizes.push(parseInt(match[2]));\n }\n if (percentSizes.length) {\n const smallestRatio = Math.min(...percentSizes) * 0.01;\n return {\n widths: allSizes.filter((s)=>s >= deviceSizes[0] * smallestRatio),\n kind: 'w'\n };\n }\n return {\n widths: allSizes,\n kind: 'w'\n };\n }\n if (typeof width !== 'number') {\n return {\n widths: deviceSizes,\n kind: 'w'\n };\n }\n const widths = [\n ...new Set(// > This means that most OLED screens that say they are 3x resolution,\n // > are actually 3x in the green color, but only 1.5x in the red and\n // > blue colors. Showing a 3x resolution image in the app vs a 2x\n // > resolution image will be visually the same, though the 3x image\n // > takes significantly more data. Even true 3x resolution screens are\n // > wasteful as the human eye cannot see that level of detail without\n // > something like a magnifying glass.\n // https://blog.twitter.com/engineering/en_us/topics/infrastructure/2019/capping-image-fidelity-on-ultra-high-resolution-devices.html\n [\n width,\n width * 2 /*, width * 3*/ \n ].map((w)=>allSizes.find((p)=>p >= w) || allSizes[allSizes.length - 1]))\n ];\n return {\n widths,\n kind: 'x'\n };\n}\nfunction generateImgAttrs(param) {\n let { config, src, unoptimized, width, quality, sizes, loader } = param;\n if (unoptimized) {\n return {\n src,\n srcSet: undefined,\n sizes: undefined\n };\n }\n const { widths, kind } = getWidths(config, width, sizes);\n const last = widths.length - 1;\n return {\n sizes: !sizes && kind === 'w' ? '100vw' : sizes,\n srcSet: widths.map((w, i)=>loader({\n config,\n src,\n quality,\n width: w\n }) + \" \" + (kind === 'w' ? w : i + 1) + kind).join(', '),\n // It's intended to keep `src` the last attribute because React updates\n // attributes in order. If we keep `src` the first one, Safari will\n // immediately start to fetch `src`, before `sizes` and `srcSet` are even\n // updated by React. That causes multiple unnecessary requests if `srcSet`\n // and `sizes` are defined.\n // This bug cannot be reproduced in Chrome or Firefox.\n src: loader({\n config,\n src,\n quality,\n width: widths[last]\n })\n };\n}\nfunction getImgProps(param, _state) {\n let { src, sizes, unoptimized = false, priority = false, loading, className, quality, width, height, fill = false, style, overrideSrc, onLoad, onLoadingComplete, placeholder = 'empty', blurDataURL, fetchPriority, decoding = 'async', layout, objectFit, objectPosition, lazyBoundary, lazyRoot, ...rest } = param;\n const { imgConf, showAltText, blurComplete, defaultLoader } = _state;\n let config;\n let c = imgConf || _imageconfig.imageConfigDefault;\n if ('allSizes' in c) {\n config = c;\n } else {\n var _c_qualities;\n const allSizes = [\n ...c.deviceSizes,\n ...c.imageSizes\n ].sort((a, b)=>a - b);\n const deviceSizes = c.deviceSizes.sort((a, b)=>a - b);\n const qualities = (_c_qualities = c.qualities) == null ? void 0 : _c_qualities.sort((a, b)=>a - b);\n config = {\n ...c,\n allSizes,\n deviceSizes,\n qualities\n };\n }\n if (typeof defaultLoader === 'undefined') {\n throw Object.defineProperty(new Error('images.loaderFile detected but the file is missing default export.\\nRead more: https://nextjs.org/docs/messages/invalid-images-config'), \"__NEXT_ERROR_CODE\", {\n value: \"E163\",\n enumerable: false,\n configurable: true\n });\n }\n let loader = rest.loader || defaultLoader;\n // Remove property so it's not spread on <img> element\n delete rest.loader;\n delete rest.srcSet;\n // This special value indicates that the user\n // didn't define a \"loader\" prop or \"loader\" config.\n const isDefaultLoader = '__next_img_default' in loader;\n if (isDefaultLoader) {\n if (config.loader === 'custom') {\n throw Object.defineProperty(new Error('Image with src \"' + src + '\" is missing \"loader\" prop.' + \"\\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader\"), \"__NEXT_ERROR_CODE\", {\n value: \"E252\",\n enumerable: false,\n configurable: true\n });\n }\n } else {\n // The user defined a \"loader\" prop or config.\n // Since the config object is internal only, we\n // must not pass it to the user-defined \"loader\".\n const customImageLoader = loader;\n loader = (obj)=>{\n const { config: _, ...opts } = obj;\n return customImageLoader(opts);\n };\n }\n if (layout) {\n if (layout === 'fill') {\n fill = true;\n }\n const layoutToStyle = {\n intrinsic: {\n maxWidth: '100%',\n height: 'auto'\n },\n responsive: {\n width: '100%',\n height: 'auto'\n }\n };\n const layoutToSizes = {\n responsive: '100vw',\n fill: '100vw'\n };\n const layoutStyle = layoutToStyle[layout];\n if (layoutStyle) {\n style = {\n ...style,\n ...layoutStyle\n };\n }\n const layoutSizes = layoutToSizes[layout];\n if (layoutSizes && !sizes) {\n sizes = layoutSizes;\n }\n }\n let staticSrc = '';\n let widthInt = getInt(width);\n let heightInt = getInt(height);\n let blurWidth;\n let blurHeight;\n if (isStaticImport(src)) {\n const staticImageData = isStaticRequire(src) ? src.default : src;\n if (!staticImageData.src) {\n throw Object.defineProperty(new Error(\"An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received \" + JSON.stringify(staticImageData)), \"__NEXT_ERROR_CODE\", {\n value: \"E460\",\n enumerable: false,\n configurable: true\n });\n }\n if (!staticImageData.height || !staticImageData.width) {\n throw Object.defineProperty(new Error(\"An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received \" + JSON.stringify(staticImageData)), \"__NEXT_ERROR_CODE\", {\n value: \"E48\",\n enumerable: false,\n configurable: true\n });\n }\n blurWidth = staticImageData.blurWidth;\n blurHeight = staticImageData.blurHeight;\n blurDataURL = blurDataURL || staticImageData.blurDataURL;\n staticSrc = staticImageData.src;\n if (!fill) {\n if (!widthInt && !heightInt) {\n widthInt = staticImageData.width;\n heightInt = staticImageData.height;\n } else if (widthInt && !heightInt) {\n const ratio = widthInt / staticImageData.width;\n heightInt = Math.round(staticImageData.height * ratio);\n } else if (!widthInt && heightInt) {\n const ratio = heightInt / staticImageData.height;\n widthInt = Math.round(staticImageData.width * ratio);\n }\n }\n }\n src = typeof src === 'string' ? src : staticSrc;\n let isLazy = !priority && (loading === 'lazy' || typeof loading === 'undefined');\n if (!src || src.startsWith('data:') || src.startsWith('blob:')) {\n // https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs\n unoptimized = true;\n isLazy = false;\n }\n if (config.unoptimized) {\n unoptimized = true;\n }\n if (isDefaultLoader && !config.dangerouslyAllowSVG && src.split('?', 1)[0].endsWith('.svg')) {\n // Special case to make svg serve as-is to avoid proxying\n // through the built-in Image Optimization API.\n unoptimized = true;\n }\n const qualityInt = getInt(quality);\n if (process.env.NODE_ENV !== 'production') {\n var _config_localPatterns;\n if (config.output === 'export' && isDefaultLoader && !unoptimized) {\n throw Object.defineProperty(new Error(\"Image Optimization using the default loader is not compatible with `{ output: 'export' }`.\\n Possible solutions:\\n - Remove `{ output: 'export' }` and run \\\"next start\\\" to run server mode including the Image Optimization API.\\n - Configure `{ images: { unoptimized: true } }` in `next.config.js` to disable the Image Optimization API.\\n Read more: https://nextjs.org/docs/messages/export-image-api\"), \"__NEXT_ERROR_CODE\", {\n value: \"E500\",\n enumerable: false,\n configurable: true\n });\n }\n if (!src) {\n // React doesn't show the stack trace and there's\n // no `src` to help identify which image, so we\n // instead console.error(ref) during mount.\n unoptimized = true;\n } else {\n if (fill) {\n if (width) {\n throw Object.defineProperty(new Error('Image with src \"' + src + '\" has both \"width\" and \"fill\" properties. Only one should be used.'), \"__NEXT_ERROR_CODE\", {\n value: \"E96\",\n enumerable: false,\n configurable: true\n });\n }\n if (height) {\n throw Object.defineProperty(new Error('Image with src \"' + src + '\" has both \"height\" and \"fill\" properties. Only one should be used.'), \"__NEXT_ERROR_CODE\", {\n value: \"E115\",\n enumerable: false,\n configurable: true\n });\n }\n if ((style == null ? void 0 : style.position) && style.position !== 'absolute') {\n throw Object.defineProperty(new Error('Image with src \"' + src + '\" has both \"fill\" and \"style.position\" properties. Images with \"fill\" always use position absolute - it cannot be modified.'), \"__NEXT_ERROR_CODE\", {\n value: \"E216\",\n enumerable: false,\n configurable: true\n });\n }\n if ((style == null ? void 0 : style.width) && style.width !== '100%') {\n throw Object.defineProperty(new Error('Image with src \"' + src + '\" has both \"fill\" and \"style.width\" properties. Images with \"fill\" always use width 100% - it cannot be modified.'), \"__NEXT_ERROR_CODE\", {\n value: \"E73\",\n enumerable: false,\n configurable: true\n });\n }\n if ((style == null ? void 0 : style.height) && style.height !== '100%') {\n throw Object.defineProperty(new Error('Image with src \"' + src + '\" has both \"fill\" and \"style.height\" properties. Images with \"fill\" always use height 100% - it cannot be modified.'), \"__NEXT_ERROR_CODE\", {\n value: \"E404\",\n enumerable: false,\n configurable: true\n });\n }\n } else {\n if (typeof widthInt === 'undefined') {\n throw Object.defineProperty(new Error('Image with src \"' + src + '\" is missing required \"width\" property.'), \"__NEXT_ERROR_CODE\", {\n value: \"E451\",\n enumerable: false,\n configurable: true\n });\n } else if (isNaN(widthInt)) {\n throw Object.defineProperty(new Error('Image with src \"' + src + '\" has invalid \"width\" property. Expected a numeric value in pixels but received \"' + width + '\".'), \"__NEXT_ERROR_CODE\", {\n value: \"E66\",\n enumerable: false,\n configurable: true\n });\n }\n if (typeof heightInt === 'undefined') {\n throw Object.defineProperty(new Error('Image with src \"' + src + '\" is missing required \"height\" property.'), \"__NEXT_ERROR_CODE\", {\n value: \"E397\",\n enumerable: false,\n configurable: true\n });\n } else if (isNaN(heightInt)) {\n throw Object.defineProperty(new Error('Image with src \"' + src + '\" has invalid \"height\" property. Expected a numeric value in pixels but received \"' + height + '\".'), \"__NEXT_ERROR_CODE\", {\n value: \"E444\",\n enumerable: false,\n configurable: true\n });\n }\n // eslint-disable-next-line no-control-regex\n if (/^[\\x00-\\x20]/.test(src)) {\n throw Object.defineProperty(new Error('Image with src \"' + src + '\" cannot start with a space or control character. Use src.trimStart() to remove it or encodeURIComponent(src) to keep it.'), \"__NEXT_ERROR_CODE\", {\n value: \"E176\",\n enumerable: false,\n configurable: true\n });\n }\n // eslint-disable-next-line no-control-regex\n if (/[\\x00-\\x20]$/.test(src)) {\n throw Object.defineProperty(new Error('Image with src \"' + src + '\" cannot end with a space or control character. Use src.trimEnd() to remove it or encodeURIComponent(src) to keep it.'), \"__NEXT_ERROR_CODE\", {\n value: \"E21\",\n enumerable: false,\n configurable: true\n });\n }\n }\n }\n if (!VALID_LOADING_VALUES.includes(loading)) {\n throw Object.defineProperty(new Error('Image with src \"' + src + '\" has invalid \"loading\" property. Provided \"' + loading + '\" should be one of ' + VALID_LOADING_VALUES.map(String).join(',') + \".\"), \"__NEXT_ERROR_CODE\", {\n value: \"E357\",\n enumerable: false,\n configurable: true\n });\n }\n if (priority && loading === 'lazy') {\n throw Object.defineProperty(new Error('Image with src \"' + src + '\" has both \"priority\" and \"loading=\\'lazy\\'\" properties. Only one should be used.'), \"__NEXT_ERROR_CODE\", {\n value: \"E218\",\n enumerable: false,\n configurable: true\n });\n }\n if (placeholder !== 'empty' && placeholder !== 'blur' && !placeholder.startsWith('data:image/')) {\n throw Object.defineProperty(new Error('Image with src \"' + src + '\" has invalid \"placeholder\" property \"' + placeholder + '\".'), \"__NEXT_ERROR_CODE\", {\n value: \"E431\",\n enumerable: false,\n configurable: true\n });\n }\n if (placeholder !== 'empty') {\n if (widthInt && heightInt && widthInt * heightInt < 1600) {\n (0, _warnonce.warnOnce)('Image with src \"' + src + '\" is smaller than 40x40. Consider removing the \"placeholder\" property to improve performance.');\n }\n }\n if (qualityInt && qualityInt !== 75 && !config.qualities) {\n (0, _warnonce.warnOnce)('Image with src \"' + src + '\" is using quality \"' + qualityInt + '\" which is not configured in images.qualities. This config will be required starting in Next.js 16.' + \"\\nRead more: https://nextjs.org/docs/messages/next-image-unconfigured-qualities\");\n }\n if (src.startsWith('/') && src.includes('?') && (!(config == null ? void 0 : (_config_localPatterns = config.localPatterns) == null ? void 0 : _config_localPatterns.length) || config.localPatterns.length === 1 && config.localPatterns[0].pathname === '/_next/static/media/**')) {\n (0, _warnonce.warnOnce)('Image with src \"' + src + '\" is using a query string which is not configured in images.localPatterns. This config will be required starting in Next.js 16.' + \"\\nRead more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns\");\n }\n if (placeholder === 'blur' && !blurDataURL) {\n const VALID_BLUR_EXT = [\n 'jpeg',\n 'png',\n 'webp',\n 'avif'\n ] // should match next-image-loader\n ;\n throw Object.defineProperty(new Error('Image with src \"' + src + '\" has \"placeholder=\\'blur\\'\" property but is missing the \"blurDataURL\" property.\\n Possible solutions:\\n - Add a \"blurDataURL\" property, the contents should be a small Data URL to represent the image\\n - Change the \"src\" property to a static import with one of the supported file types: ' + VALID_BLUR_EXT.join(',') + ' (animated images not supported)\\n - Remove the \"placeholder\" property, effectively no blur effect\\n Read more: https://nextjs.org/docs/messages/placeholder-blur-data-url'), \"__NEXT_ERROR_CODE\", {\n value: \"E371\",\n enumerable: false,\n configurable: true\n });\n }\n if ('ref' in rest) {\n (0, _warnonce.warnOnce)('Image with src \"' + src + '\" is using unsupported \"ref\" property. Consider using the \"onLoad\" property instead.');\n }\n if (!unoptimized && !isDefaultLoader) {\n const urlStr = loader({\n config,\n src,\n width: widthInt || 400,\n quality: qualityInt || 75\n });\n let url;\n try {\n url = new URL(urlStr);\n } catch (err) {}\n if (urlStr === src || url && url.pathname === src && !url.search) {\n (0, _warnonce.warnOnce)('Image with src \"' + src + '\" has a \"loader\" property that does not implement width. Please implement it or use the \"unoptimized\" property instead.' + \"\\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader-width\");\n }\n }\n if (onLoadingComplete) {\n (0, _warnonce.warnOnce)('Image with src \"' + src + '\" is using deprecated \"onLoadingComplete\" property. Please use the \"onLoad\" property instead.');\n }\n for (const [legacyKey, legacyValue] of Object.entries({\n layout,\n objectFit,\n objectPosition,\n lazyBoundary,\n lazyRoot\n })){\n if (legacyValue) {\n (0, _warnonce.warnOnce)('Image with src \"' + src + '\" has legacy prop \"' + legacyKey + '\". Did you forget to run the codemod?' + \"\\nRead more: https://nextjs.org/docs/messages/next-image-upgrade-to-13\");\n }\n }\n if (typeof window !== 'undefined' && !perfObserver && window.PerformanceObserver) {\n perfObserver = new PerformanceObserver((entryList)=>{\n for (const entry of entryList.getEntries()){\n var _entry_element;\n // @ts-ignore - missing \"LargestContentfulPaint\" class with \"element\" prop\n const imgSrc = (entry == null ? void 0 : (_entry_element = entry.element) == null ? void 0 : _entry_element.src) || '';\n const lcpImage = allImgs.get(imgSrc);\n if (lcpImage && !lcpImage.priority && lcpImage.placeholder === 'empty' && !lcpImage.src.startsWith('data:') && !lcpImage.src.startsWith('blob:')) {\n // https://web.dev/lcp/#measure-lcp-in-javascript\n (0, _warnonce.warnOnce)('Image with src \"' + lcpImage.src + '\" was detected as the Largest Contentful Paint (LCP). Please add the \"priority\" property if this image is above the fold.' + \"\\nRead more: https://nextjs.org/docs/api-reference/next/image#priority\");\n }\n }\n });\n try {\n perfObserver.observe({\n type: 'largest-contentful-paint',\n buffered: true\n });\n } catch (err) {\n // Log error but don't crash the app\n console.error(err);\n }\n }\n }\n const imgStyle = Object.assign(fill ? {\n position: 'absolute',\n height: '100%',\n width: '100%',\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n objectFit,\n objectPosition\n } : {}, showAltText ? {} : {\n color: 'transparent'\n }, style);\n const backgroundImage = !blurComplete && placeholder !== 'empty' ? placeholder === 'blur' ? 'url(\"data:image/svg+xml;charset=utf-8,' + (0, _imageblursvg.getImageBlurSvg)({\n widthInt,\n heightInt,\n blurWidth,\n blurHeight,\n blurDataURL: blurDataURL || '',\n objectFit: imgStyle.objectFit\n }) + '\")' : 'url(\"' + placeholder + '\")' // assume `data:image/`\n : null;\n const backgroundSize = !INVALID_BACKGROUND_SIZE_VALUES.includes(imgStyle.objectFit) ? imgStyle.objectFit : imgStyle.objectFit === 'fill' ? '100% 100%' // the background-size equivalent of `fill`\n : 'cover';\n let placeholderStyle = backgroundImage ? {\n backgroundSize,\n backgroundPosition: imgStyle.objectPosition || '50% 50%',\n backgroundRepeat: 'no-repeat',\n backgroundImage\n } : {};\n if (process.env.NODE_ENV === 'development') {\n if (placeholderStyle.backgroundImage && placeholder === 'blur' && (blurDataURL == null ? void 0 : blurDataURL.startsWith('/'))) {\n // During `next dev`, we don't want to generate blur placeholders with webpack\n // because it can delay starting the dev server. Instead, `next-image-loader.js`\n // will inline a special url to lazily generate the blur placeholder at request time.\n placeholderStyle.backgroundImage = 'url(\"' + blurDataURL + '\")';\n }\n }\n const imgAttributes = generateImgAttrs({\n config,\n src,\n unoptimized,\n width: widthInt,\n quality: qualityInt,\n sizes,\n loader\n });\n if (process.env.NODE_ENV !== 'production') {\n if (typeof window !== 'undefined') {\n let fullUrl;\n try {\n fullUrl = new URL(imgAttributes.src);\n } catch (e) {\n fullUrl = new URL(imgAttributes.src, window.location.href);\n }\n allImgs.set(fullUrl.href, {\n src,\n priority,\n placeholder\n });\n }\n }\n const props = {\n ...rest,\n loading: isLazy ? 'lazy' : loading,\n fetchPriority,\n width: widthInt,\n height: heightInt,\n decoding,\n className,\n style: {\n ...imgStyle,\n ...placeholderStyle\n },\n sizes: imgAttributes.sizes,\n srcSet: imgAttributes.srcSet,\n src: overrideSrc || imgAttributes.src\n };\n const meta = {\n unoptimized,\n priority,\n placeholder,\n fill\n };\n return {\n props,\n meta\n };\n}\n\n//# sourceMappingURL=get-img-props.js.map","\"use strict\";\n\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) return obj;\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") return { default: obj };\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) return cache.get(obj);\n\n var newObj = { __proto__: null };\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) Object.defineProperty(newObj, key, desc);\n else newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n\n if (cache) cache.set(obj, newObj);\n\n return newObj;\n}\nexports._ = _interop_require_wildcard;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return SideEffect;\n }\n});\nconst _react = require(\"react\");\nconst isServer = typeof window === 'undefined';\nconst useClientOnlyLayoutEffect = isServer ? ()=>{} : _react.useLayoutEffect;\nconst useClientOnlyEffect = isServer ? ()=>{} : _react.useEffect;\nfunction SideEffect(props) {\n const { headManager, reduceComponentsToState } = props;\n function emitChange() {\n if (headManager && headManager.mountedInstances) {\n const headElements = _react.Children.toArray(Array.from(headManager.mountedInstances).filter(Boolean));\n headManager.updateHead(reduceComponentsToState(headElements, props));\n }\n }\n if (isServer) {\n var _headManager_mountedInstances;\n headManager == null ? void 0 : (_headManager_mountedInstances = headManager.mountedInstances) == null ? void 0 : _headManager_mountedInstances.add(props.children);\n emitChange();\n }\n useClientOnlyLayoutEffect(()=>{\n var _headManager_mountedInstances;\n headManager == null ? void 0 : (_headManager_mountedInstances = headManager.mountedInstances) == null ? void 0 : _headManager_mountedInstances.add(props.children);\n return ()=>{\n var _headManager_mountedInstances;\n headManager == null ? void 0 : (_headManager_mountedInstances = headManager.mountedInstances) == null ? void 0 : _headManager_mountedInstances.delete(props.children);\n };\n });\n // We need to call `updateHead` method whenever the `SideEffect` is trigger in all\n // life-cycles: mount, update, unmount. However, if there are multiple `SideEffect`s\n // being rendered, we only trigger the method from the last one.\n // This is ensured by keeping the last unflushed `updateHead` in the `_pendingUpdate`\n // singleton in the layout effect pass, and actually trigger it in the effect pass.\n useClientOnlyLayoutEffect(()=>{\n if (headManager) {\n headManager._pendingUpdate = emitChange;\n }\n return ()=>{\n if (headManager) {\n headManager._pendingUpdate = emitChange;\n }\n };\n });\n useClientOnlyEffect(()=>{\n if (headManager && headManager._pendingUpdate) {\n headManager._pendingUpdate();\n headManager._pendingUpdate = null;\n }\n return ()=>{\n if (headManager && headManager._pendingUpdate) {\n headManager._pendingUpdate();\n headManager._pendingUpdate = null;\n }\n };\n });\n return null;\n}\n\n//# sourceMappingURL=side-effect.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"AmpStateContext\", {\n enumerable: true,\n get: function() {\n return AmpStateContext;\n }\n});\nconst _interop_require_default = require(\"@swc/helpers/_/_interop_require_default\");\nconst _react = /*#__PURE__*/ _interop_require_default._(require(\"react\"));\nconst AmpStateContext = _react.default.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n AmpStateContext.displayName = 'AmpStateContext';\n}\n\n//# sourceMappingURL=amp-context.shared-runtime.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"HeadManagerContext\", {\n enumerable: true,\n get: function() {\n return HeadManagerContext;\n }\n});\nconst _interop_require_default = require(\"@swc/helpers/_/_interop_require_default\");\nconst _react = /*#__PURE__*/ _interop_require_default._(require(\"react\"));\nconst HeadManagerContext = _react.default.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n HeadManagerContext.displayName = 'HeadManagerContext';\n}\n\n//# sourceMappingURL=head-manager-context.shared-runtime.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"isInAmpMode\", {\n enumerable: true,\n get: function() {\n return isInAmpMode;\n }\n});\nfunction isInAmpMode(param) {\n let { ampFirst = false, hybrid = false, hasQuery = false } = param === void 0 ? {} : param;\n return ampFirst || hybrid && hasQuery;\n}\n\n//# sourceMappingURL=amp-mode.js.map","'use client';\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n default: null,\n defaultHead: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n default: function() {\n return _default;\n },\n defaultHead: function() {\n return defaultHead;\n }\n});\nconst _interop_require_default = require(\"@swc/helpers/_/_interop_require_default\");\nconst _interop_require_wildcard = require(\"@swc/helpers/_/_interop_require_wildcard\");\nconst _jsxruntime = require(\"react/jsx-runtime\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(require(\"react\"));\nconst _sideeffect = /*#__PURE__*/ _interop_require_default._(require(\"./side-effect\"));\nconst _ampcontextsharedruntime = require(\"./amp-context.shared-runtime\");\nconst _headmanagercontextsharedruntime = require(\"./head-manager-context.shared-runtime\");\nconst _ampmode = require(\"./amp-mode\");\nconst _warnonce = require(\"./utils/warn-once\");\nfunction defaultHead(inAmpMode) {\n if (inAmpMode === void 0) inAmpMode = false;\n const head = [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n charSet: \"utf-8\"\n }, \"charset\")\n ];\n if (!inAmpMode) {\n head.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"viewport\",\n content: \"width=device-width\"\n }, \"viewport\"));\n }\n return head;\n}\nfunction onlyReactElement(list, child) {\n // React children can be \"string\" or \"number\" in this case we ignore them for backwards compat\n if (typeof child === 'string' || typeof child === 'number') {\n return list;\n }\n // Adds support for React.Fragment\n if (child.type === _react.default.Fragment) {\n return list.concat(// @ts-expect-error @types/react does not remove fragments but this could also return ReactPortal[]\n _react.default.Children.toArray(child.props.children).reduce(// @ts-expect-error @types/react does not remove fragments but this could also return ReactPortal[]\n (fragmentList, fragmentChild)=>{\n if (typeof fragmentChild === 'string' || typeof fragmentChild === 'number') {\n return fragmentList;\n }\n return fragmentList.concat(fragmentChild);\n }, []));\n }\n return list.concat(child);\n}\nconst METATYPES = [\n 'name',\n 'httpEquiv',\n 'charSet',\n 'itemProp'\n];\n/*\n returns a function for filtering head child elements\n which shouldn't be duplicated, like <title/>\n Also adds support for deduplicated `key` properties\n*/ function unique() {\n const keys = new Set();\n const tags = new Set();\n const metaTypes = new Set();\n const metaCategories = {};\n return (h)=>{\n let isUnique = true;\n let hasKey = false;\n if (h.key && typeof h.key !== 'number' && h.key.indexOf('$') > 0) {\n hasKey = true;\n const key = h.key.slice(h.key.indexOf('$') + 1);\n if (keys.has(key)) {\n isUnique = false;\n } else {\n keys.add(key);\n }\n }\n // eslint-disable-next-line default-case\n switch(h.type){\n case 'title':\n case 'base':\n if (tags.has(h.type)) {\n isUnique = false;\n } else {\n tags.add(h.type);\n }\n break;\n case 'meta':\n for(let i = 0, len = METATYPES.length; i < len; i++){\n const metatype = METATYPES[i];\n if (!h.props.hasOwnProperty(metatype)) continue;\n if (metatype === 'charSet') {\n if (metaTypes.has(metatype)) {\n isUnique = false;\n } else {\n metaTypes.add(metatype);\n }\n } else {\n const category = h.props[metatype];\n const categories = metaCategories[metatype] || new Set();\n if ((metatype !== 'name' || !hasKey) && categories.has(category)) {\n isUnique = false;\n } else {\n categories.add(category);\n metaCategories[metatype] = categories;\n }\n }\n }\n break;\n }\n return isUnique;\n };\n}\n/**\n *\n * @param headChildrenElements List of children of <Head>\n */ function reduceComponents(headChildrenElements, props) {\n const { inAmpMode } = props;\n return headChildrenElements.reduce(onlyReactElement, []).reverse().concat(defaultHead(inAmpMode).reverse()).filter(unique()).reverse().map((c, i)=>{\n const key = c.key || i;\n if (process.env.NODE_ENV === 'development') {\n // omit JSON-LD structured data snippets from the warning\n if (c.type === 'script' && c.props['type'] !== 'application/ld+json') {\n const srcMessage = c.props['src'] ? '<script> tag with src=\"' + c.props['src'] + '\"' : \"inline <script>\";\n (0, _warnonce.warnOnce)(\"Do not add <script> tags using next/head (see \" + srcMessage + \"). Use next/script instead. \\nSee more info here: https://nextjs.org/docs/messages/no-script-tags-in-head-component\");\n } else if (c.type === 'link' && c.props['rel'] === 'stylesheet') {\n (0, _warnonce.warnOnce)('Do not add stylesheets using next/head (see <link rel=\"stylesheet\"> tag with href=\"' + c.props['href'] + '\"). Use Document instead. \\nSee more info here: https://nextjs.org/docs/messages/no-stylesheets-in-head-component');\n }\n }\n return /*#__PURE__*/ _react.default.cloneElement(c, {\n key\n });\n });\n}\n/**\n * This component injects elements to `<head>` of your page.\n * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once.\n */ function Head(param) {\n let { children } = param;\n const ampState = (0, _react.useContext)(_ampcontextsharedruntime.AmpStateContext);\n const headManager = (0, _react.useContext)(_headmanagercontextsharedruntime.HeadManagerContext);\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_sideeffect.default, {\n reduceComponentsToState: reduceComponents,\n headManager: headManager,\n inAmpMode: (0, _ampmode.isInAmpMode)(ampState),\n children: children\n });\n}\nconst _default = Head;\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=head.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"ImageConfigContext\", {\n enumerable: true,\n get: function() {\n return ImageConfigContext;\n }\n});\nconst _interop_require_default = require(\"@swc/helpers/_/_interop_require_default\");\nconst _react = /*#__PURE__*/ _interop_require_default._(require(\"react\"));\nconst _imageconfig = require(\"./image-config\");\nconst ImageConfigContext = _react.default.createContext(_imageconfig.imageConfigDefault);\nif (process.env.NODE_ENV !== 'production') {\n ImageConfigContext.displayName = 'ImageConfigContext';\n}\n\n//# sourceMappingURL=image-config-context.shared-runtime.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"RouterContext\", {\n enumerable: true,\n get: function() {\n return RouterContext;\n }\n});\nconst _interop_require_default = require(\"@swc/helpers/_/_interop_require_default\");\nconst _react = /*#__PURE__*/ _interop_require_default._(require(\"react\"));\nconst RouterContext = _react.default.createContext(null);\nif (process.env.NODE_ENV !== 'production') {\n RouterContext.displayName = 'RouterContext';\n}\n\n//# sourceMappingURL=router-context.shared-runtime.js.map","(()=>{\"use strict\";var t={170:(t,e,u)=>{const n=u(510);const isWindows=()=>{if(typeof navigator!==\"undefined\"&&navigator.platform){const t=navigator.platform.toLowerCase();return t===\"win32\"||t===\"windows\"}if(typeof process!==\"undefined\"&&process.platform){return process.platform===\"win32\"}return false};function picomatch(t,e,u=false){if(e&&(e.windows===null||e.windows===undefined)){e={...e,windows:isWindows()}}return n(t,e,u)}Object.assign(picomatch,n);t.exports=picomatch},154:t=>{const e=\"\\\\\\\\/\";const u=`[^${e}]`;const n=\"\\\\.\";const o=\"\\\\+\";const s=\"\\\\?\";const r=\"\\\\/\";const a=\"(?=.)\";const i=\"[^/]\";const c=`(?:${r}|$)`;const p=`(?:^|${r})`;const l=`${n}{1,2}${c}`;const f=`(?!${n})`;const A=`(?!${p}${l})`;const _=`(?!${n}{0,1}${c})`;const R=`(?!${l})`;const E=`[^.${r}]`;const h=`${i}*?`;const g=\"/\";const b={DOT_LITERAL:n,PLUS_LITERAL:o,QMARK_LITERAL:s,SLASH_LITERAL:r,ONE_CHAR:a,QMARK:i,END_ANCHOR:c,DOTS_SLASH:l,NO_DOT:f,NO_DOTS:A,NO_DOT_SLASH:_,NO_DOTS_SLASH:R,QMARK_NO_DOT:E,STAR:h,START_ANCHOR:p,SEP:g};const C={...b,SLASH_LITERAL:`[${e}]`,QMARK:u,STAR:`${u}*?`,DOTS_SLASH:`${n}{1,2}(?:[${e}]|$)`,NO_DOT:`(?!${n})`,NO_DOTS:`(?!(?:^|[${e}])${n}{1,2}(?:[${e}]|$))`,NO_DOT_SLASH:`(?!${n}{0,1}(?:[${e}]|$))`,NO_DOTS_SLASH:`(?!${n}{1,2}(?:[${e}]|$))`,QMARK_NO_DOT:`[^.${e}]`,START_ANCHOR:`(?:^|[${e}])`,END_ANCHOR:`(?:[${e}]|$)`,SEP:\"\\\\\"};const y={alnum:\"a-zA-Z0-9\",alpha:\"a-zA-Z\",ascii:\"\\\\x00-\\\\x7F\",blank:\" \\\\t\",cntrl:\"\\\\x00-\\\\x1F\\\\x7F\",digit:\"0-9\",graph:\"\\\\x21-\\\\x7E\",lower:\"a-z\",print:\"\\\\x20-\\\\x7E \",punct:\"\\\\-!\\\"#$%&'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~\",space:\" \\\\t\\\\r\\\\n\\\\v\\\\f\",upper:\"A-Z\",word:\"A-Za-z0-9_\",xdigit:\"A-Fa-f0-9\"};t.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:y,REGEX_BACKSLASH:/\\\\(?![*+?^${}(|)[\\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\\].,$*+?^{}()|\\\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\\\?)((\\W)(\\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,REPLACEMENTS:{\"***\":\"*\",\"**/**\":\"**\",\"**/**/**\":\"**\"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,extglobChars(t){return{\"!\":{type:\"negate\",open:\"(?:(?!(?:\",close:`))${t.STAR})`},\"?\":{type:\"qmark\",open:\"(?:\",close:\")?\"},\"+\":{type:\"plus\",open:\"(?:\",close:\")+\"},\"*\":{type:\"star\",open:\"(?:\",close:\")*\"},\"@\":{type:\"at\",open:\"(?:\",close:\")\"}}},globChars(t){return t===true?C:b}}},697:(t,e,u)=>{const n=u(154);const o=u(96);const{MAX_LENGTH:s,POSIX_REGEX_SOURCE:r,REGEX_NON_SPECIAL_CHARS:a,REGEX_SPECIAL_CHARS_BACKREF:i,REPLACEMENTS:c}=n;const expandRange=(t,e)=>{if(typeof e.expandRange===\"function\"){return e.expandRange(...t,e)}t.sort();const u=`[${t.join(\"-\")}]`;try{new RegExp(u)}catch(e){return t.map((t=>o.escapeRegex(t))).join(\"..\")}return u};const syntaxError=(t,e)=>`Missing ${t}: \"${e}\" - use \"\\\\\\\\${e}\" to match literal characters`;const parse=(t,e)=>{if(typeof t!==\"string\"){throw new TypeError(\"Expected a string\")}t=c[t]||t;const u={...e};const p=typeof u.maxLength===\"number\"?Math.min(s,u.maxLength):s;let l=t.length;if(l>p){throw new SyntaxError(`Input length: ${l}, exceeds maximum allowed length: ${p}`)}const f={type:\"bos\",value:\"\",output:u.prepend||\"\"};const A=[f];const _=u.capture?\"\":\"?:\";const R=n.globChars(u.windows);const E=n.extglobChars(R);const{DOT_LITERAL:h,PLUS_LITERAL:g,SLASH_LITERAL:b,ONE_CHAR:C,DOTS_SLASH:y,NO_DOT:$,NO_DOT_SLASH:x,NO_DOTS_SLASH:S,QMARK:H,QMARK_NO_DOT:v,STAR:d,START_ANCHOR:L}=R;const globstar=t=>`(${_}(?:(?!${L}${t.dot?y:h}).)*?)`;const T=u.dot?\"\":$;const O=u.dot?H:v;let k=u.bash===true?globstar(u):d;if(u.capture){k=`(${k})`}if(typeof u.noext===\"boolean\"){u.noextglob=u.noext}const m={input:t,index:-1,start:0,dot:u.dot===true,consumed:\"\",output:\"\",prefix:\"\",backtrack:false,negated:false,brackets:0,braces:0,parens:0,quotes:0,globstar:false,tokens:A};t=o.removePrefix(t,m);l=t.length;const w=[];const N=[];const I=[];let B=f;let G;const eos=()=>m.index===l-1;const D=m.peek=(e=1)=>t[m.index+e];const M=m.advance=()=>t[++m.index]||\"\";const remaining=()=>t.slice(m.index+1);const consume=(t=\"\",e=0)=>{m.consumed+=t;m.index+=e};const append=t=>{m.output+=t.output!=null?t.output:t.value;consume(t.value)};const negate=()=>{let t=1;while(D()===\"!\"&&(D(2)!==\"(\"||D(3)===\"?\")){M();m.start++;t++}if(t%2===0){return false}m.negated=true;m.start++;return true};const increment=t=>{m[t]++;I.push(t)};const decrement=t=>{m[t]--;I.pop()};const push=t=>{if(B.type===\"globstar\"){const e=m.braces>0&&(t.type===\"comma\"||t.type===\"brace\");const u=t.extglob===true||w.length&&(t.type===\"pipe\"||t.type===\"paren\");if(t.type!==\"slash\"&&t.type!==\"paren\"&&!e&&!u){m.output=m.output.slice(0,-B.output.length);B.type=\"star\";B.value=\"*\";B.output=k;m.output+=B.output}}if(w.length&&t.type!==\"paren\"){w[w.length-1].inner+=t.value}if(t.value||t.output)append(t);if(B&&B.type===\"text\"&&t.type===\"text\"){B.output=(B.output||B.value)+t.value;B.value+=t.value;return}t.prev=B;A.push(t);B=t};const extglobOpen=(t,e)=>{const n={...E[e],conditions:1,inner:\"\"};n.prev=B;n.parens=m.parens;n.output=m.output;const o=(u.capture?\"(\":\"\")+n.open;increment(\"parens\");push({type:t,value:e,output:m.output?\"\":C});push({type:\"paren\",extglob:true,value:M(),output:o});w.push(n)};const extglobClose=t=>{let n=t.close+(u.capture?\")\":\"\");let o;if(t.type===\"negate\"){let s=k;if(t.inner&&t.inner.length>1&&t.inner.includes(\"/\")){s=globstar(u)}if(s!==k||eos()||/^\\)+$/.test(remaining())){n=t.close=`)$))${s}`}if(t.inner.includes(\"*\")&&(o=remaining())&&/^\\.[^\\\\/.]+$/.test(o)){const u=parse(o,{...e,fastpaths:false}).output;n=t.close=`)${u})${s})`}if(t.prev.type===\"bos\"){m.negatedExtglob=true}}push({type:\"paren\",extglob:true,value:G,output:n});decrement(\"parens\")};if(u.fastpaths!==false&&!/(^[*!]|[/()[\\]{}\"])/.test(t)){let n=false;let s=t.replace(i,((t,e,u,o,s,r)=>{if(o===\"\\\\\"){n=true;return t}if(o===\"?\"){if(e){return e+o+(s?H.repeat(s.length):\"\")}if(r===0){return O+(s?H.repeat(s.length):\"\")}return H.repeat(u.length)}if(o===\".\"){return h.repeat(u.length)}if(o===\"*\"){if(e){return e+o+(s?k:\"\")}return k}return e?t:`\\\\${t}`}));if(n===true){if(u.unescape===true){s=s.replace(/\\\\/g,\"\")}else{s=s.replace(/\\\\+/g,(t=>t.length%2===0?\"\\\\\\\\\":t?\"\\\\\":\"\"))}}if(s===t&&u.contains===true){m.output=t;return m}m.output=o.wrapOutput(s,m,e);return m}while(!eos()){G=M();if(G===\"\\0\"){continue}if(G===\"\\\\\"){const t=D();if(t===\"/\"&&u.bash!==true){continue}if(t===\".\"||t===\";\"){continue}if(!t){G+=\"\\\\\";push({type:\"text\",value:G});continue}const e=/^\\\\+/.exec(remaining());let n=0;if(e&&e[0].length>2){n=e[0].length;m.index+=n;if(n%2!==0){G+=\"\\\\\"}}if(u.unescape===true){G=M()}else{G+=M()}if(m.brackets===0){push({type:\"text\",value:G});continue}}if(m.brackets>0&&(G!==\"]\"||B.value===\"[\"||B.value===\"[^\")){if(u.posix!==false&&G===\":\"){const t=B.value.slice(1);if(t.includes(\"[\")){B.posix=true;if(t.includes(\":\")){const t=B.value.lastIndexOf(\"[\");const e=B.value.slice(0,t);const u=B.value.slice(t+2);const n=r[u];if(n){B.value=e+n;m.backtrack=true;M();if(!f.output&&A.indexOf(B)===1){f.output=C}continue}}}}if(G===\"[\"&&D()!==\":\"||G===\"-\"&&D()===\"]\"){G=`\\\\${G}`}if(G===\"]\"&&(B.value===\"[\"||B.value===\"[^\")){G=`\\\\${G}`}if(u.posix===true&&G===\"!\"&&B.value===\"[\"){G=\"^\"}B.value+=G;append({value:G});continue}if(m.quotes===1&&G!=='\"'){G=o.escapeRegex(G);B.value+=G;append({value:G});continue}if(G==='\"'){m.quotes=m.quotes===1?0:1;if(u.keepQuotes===true){push({type:\"text\",value:G})}continue}if(G===\"(\"){increment(\"parens\");push({type:\"paren\",value:G});continue}if(G===\")\"){if(m.parens===0&&u.strictBrackets===true){throw new SyntaxError(syntaxError(\"opening\",\"(\"))}const t=w[w.length-1];if(t&&m.parens===t.parens+1){extglobClose(w.pop());continue}push({type:\"paren\",value:G,output:m.parens?\")\":\"\\\\)\"});decrement(\"parens\");continue}if(G===\"[\"){if(u.nobracket===true||!remaining().includes(\"]\")){if(u.nobracket!==true&&u.strictBrackets===true){throw new SyntaxError(syntaxError(\"closing\",\"]\"))}G=`\\\\${G}`}else{increment(\"brackets\")}push({type:\"bracket\",value:G});continue}if(G===\"]\"){if(u.nobracket===true||B&&B.type===\"bracket\"&&B.value.length===1){push({type:\"text\",value:G,output:`\\\\${G}`});continue}if(m.brackets===0){if(u.strictBrackets===true){throw new SyntaxError(syntaxError(\"opening\",\"[\"))}push({type:\"text\",value:G,output:`\\\\${G}`});continue}decrement(\"brackets\");const t=B.value.slice(1);if(B.posix!==true&&t[0]===\"^\"&&!t.includes(\"/\")){G=`/${G}`}B.value+=G;append({value:G});if(u.literalBrackets===false||o.hasRegexChars(t)){continue}const e=o.escapeRegex(B.value);m.output=m.output.slice(0,-B.value.length);if(u.literalBrackets===true){m.output+=e;B.value=e;continue}B.value=`(${_}${e}|${B.value})`;m.output+=B.value;continue}if(G===\"{\"&&u.nobrace!==true){increment(\"braces\");const t={type:\"brace\",value:G,output:\"(\",outputIndex:m.output.length,tokensIndex:m.tokens.length};N.push(t);push(t);continue}if(G===\"}\"){const t=N[N.length-1];if(u.nobrace===true||!t){push({type:\"text\",value:G,output:G});continue}let e=\")\";if(t.dots===true){const t=A.slice();const n=[];for(let e=t.length-1;e>=0;e--){A.pop();if(t[e].type===\"brace\"){break}if(t[e].type!==\"dots\"){n.unshift(t[e].value)}}e=expandRange(n,u);m.backtrack=true}if(t.comma!==true&&t.dots!==true){const u=m.output.slice(0,t.outputIndex);const n=m.tokens.slice(t.tokensIndex);t.value=t.output=\"\\\\{\";G=e=\"\\\\}\";m.output=u;for(const t of n){m.output+=t.output||t.value}}push({type:\"brace\",value:G,output:e});decrement(\"braces\");N.pop();continue}if(G===\"|\"){if(w.length>0){w[w.length-1].conditions++}push({type:\"text\",value:G});continue}if(G===\",\"){let t=G;const e=N[N.length-1];if(e&&I[I.length-1]===\"braces\"){e.comma=true;t=\"|\"}push({type:\"comma\",value:G,output:t});continue}if(G===\"/\"){if(B.type===\"dot\"&&m.index===m.start+1){m.start=m.index+1;m.consumed=\"\";m.output=\"\";A.pop();B=f;continue}push({type:\"slash\",value:G,output:b});continue}if(G===\".\"){if(m.braces>0&&B.type===\"dot\"){if(B.value===\".\")B.output=h;const t=N[N.length-1];B.type=\"dots\";B.output+=G;B.value+=G;t.dots=true;continue}if(m.braces+m.parens===0&&B.type!==\"bos\"&&B.type!==\"slash\"){push({type:\"text\",value:G,output:h});continue}push({type:\"dot\",value:G,output:h});continue}if(G===\"?\"){const t=B&&B.value===\"(\";if(!t&&u.noextglob!==true&&D()===\"(\"&&D(2)!==\"?\"){extglobOpen(\"qmark\",G);continue}if(B&&B.type===\"paren\"){const t=D();let e=G;if(B.value===\"(\"&&!/[!=<:]/.test(t)||t===\"<\"&&!/<([!=]|\\w+>)/.test(remaining())){e=`\\\\${G}`}push({type:\"text\",value:G,output:e});continue}if(u.dot!==true&&(B.type===\"slash\"||B.type===\"bos\")){push({type:\"qmark\",value:G,output:v});continue}push({type:\"qmark\",value:G,output:H});continue}if(G===\"!\"){if(u.noextglob!==true&&D()===\"(\"){if(D(2)!==\"?\"||!/[!=<:]/.test(D(3))){extglobOpen(\"negate\",G);continue}}if(u.nonegate!==true&&m.index===0){negate();continue}}if(G===\"+\"){if(u.noextglob!==true&&D()===\"(\"&&D(2)!==\"?\"){extglobOpen(\"plus\",G);continue}if(B&&B.value===\"(\"||u.regex===false){push({type:\"plus\",value:G,output:g});continue}if(B&&(B.type===\"bracket\"||B.type===\"paren\"||B.type===\"brace\")||m.parens>0){push({type:\"plus\",value:G});continue}push({type:\"plus\",value:g});continue}if(G===\"@\"){if(u.noextglob!==true&&D()===\"(\"&&D(2)!==\"?\"){push({type:\"at\",extglob:true,value:G,output:\"\"});continue}push({type:\"text\",value:G});continue}if(G!==\"*\"){if(G===\"$\"||G===\"^\"){G=`\\\\${G}`}const t=a.exec(remaining());if(t){G+=t[0];m.index+=t[0].length}push({type:\"text\",value:G});continue}if(B&&(B.type===\"globstar\"||B.star===true)){B.type=\"star\";B.star=true;B.value+=G;B.output=k;m.backtrack=true;m.globstar=true;consume(G);continue}let e=remaining();if(u.noextglob!==true&&/^\\([^?]/.test(e)){extglobOpen(\"star\",G);continue}if(B.type===\"star\"){if(u.noglobstar===true){consume(G);continue}const n=B.prev;const o=n.prev;const s=n.type===\"slash\"||n.type===\"bos\";const r=o&&(o.type===\"star\"||o.type===\"globstar\");if(u.bash===true&&(!s||e[0]&&e[0]!==\"/\")){push({type:\"star\",value:G,output:\"\"});continue}const a=m.braces>0&&(n.type===\"comma\"||n.type===\"brace\");const i=w.length&&(n.type===\"pipe\"||n.type===\"paren\");if(!s&&n.type!==\"paren\"&&!a&&!i){push({type:\"star\",value:G,output:\"\"});continue}while(e.slice(0,3)===\"/**\"){const u=t[m.index+4];if(u&&u!==\"/\"){break}e=e.slice(3);consume(\"/**\",3)}if(n.type===\"bos\"&&eos()){B.type=\"globstar\";B.value+=G;B.output=globstar(u);m.output=B.output;m.globstar=true;consume(G);continue}if(n.type===\"slash\"&&n.prev.type!==\"bos\"&&!r&&eos()){m.output=m.output.slice(0,-(n.output+B.output).length);n.output=`(?:${n.output}`;B.type=\"globstar\";B.output=globstar(u)+(u.strictSlashes?\")\":\"|$)\");B.value+=G;m.globstar=true;m.output+=n.output+B.output;consume(G);continue}if(n.type===\"slash\"&&n.prev.type!==\"bos\"&&e[0]===\"/\"){const t=e[1]!==void 0?\"|$\":\"\";m.output=m.output.slice(0,-(n.output+B.output).length);n.output=`(?:${n.output}`;B.type=\"globstar\";B.output=`${globstar(u)}${b}|${b}${t})`;B.value+=G;m.output+=n.output+B.output;m.globstar=true;consume(G+M());push({type:\"slash\",value:\"/\",output:\"\"});continue}if(n.type===\"bos\"&&e[0]===\"/\"){B.type=\"globstar\";B.value+=G;B.output=`(?:^|${b}|${globstar(u)}${b})`;m.output=B.output;m.globstar=true;consume(G+M());push({type:\"slash\",value:\"/\",output:\"\"});continue}m.output=m.output.slice(0,-B.output.length);B.type=\"globstar\";B.output=globstar(u);B.value+=G;m.output+=B.output;m.globstar=true;consume(G);continue}const n={type:\"star\",value:G,output:k};if(u.bash===true){n.output=\".*?\";if(B.type===\"bos\"||B.type===\"slash\"){n.output=T+n.output}push(n);continue}if(B&&(B.type===\"bracket\"||B.type===\"paren\")&&u.regex===true){n.output=G;push(n);continue}if(m.index===m.start||B.type===\"slash\"||B.type===\"dot\"){if(B.type===\"dot\"){m.output+=x;B.output+=x}else if(u.dot===true){m.output+=S;B.output+=S}else{m.output+=T;B.output+=T}if(D()!==\"*\"){m.output+=C;B.output+=C}}push(n)}while(m.brackets>0){if(u.strictBrackets===true)throw new SyntaxError(syntaxError(\"closing\",\"]\"));m.output=o.escapeLast(m.output,\"[\");decrement(\"brackets\")}while(m.parens>0){if(u.strictBrackets===true)throw new SyntaxError(syntaxError(\"closing\",\")\"));m.output=o.escapeLast(m.output,\"(\");decrement(\"parens\")}while(m.braces>0){if(u.strictBrackets===true)throw new SyntaxError(syntaxError(\"closing\",\"}\"));m.output=o.escapeLast(m.output,\"{\");decrement(\"braces\")}if(u.strictSlashes!==true&&(B.type===\"star\"||B.type===\"bracket\")){push({type:\"maybe_slash\",value:\"\",output:`${b}?`})}if(m.backtrack===true){m.output=\"\";for(const t of m.tokens){m.output+=t.output!=null?t.output:t.value;if(t.suffix){m.output+=t.suffix}}}return m};parse.fastpaths=(t,e)=>{const u={...e};const r=typeof u.maxLength===\"number\"?Math.min(s,u.maxLength):s;const a=t.length;if(a>r){throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${r}`)}t=c[t]||t;const{DOT_LITERAL:i,SLASH_LITERAL:p,ONE_CHAR:l,DOTS_SLASH:f,NO_DOT:A,NO_DOTS:_,NO_DOTS_SLASH:R,STAR:E,START_ANCHOR:h}=n.globChars(u.windows);const g=u.dot?_:A;const b=u.dot?R:A;const C=u.capture?\"\":\"?:\";const y={negated:false,prefix:\"\"};let $=u.bash===true?\".*?\":E;if(u.capture){$=`(${$})`}const globstar=t=>{if(t.noglobstar===true)return $;return`(${C}(?:(?!${h}${t.dot?f:i}).)*?)`};const create=t=>{switch(t){case\"*\":return`${g}${l}${$}`;case\".*\":return`${i}${l}${$}`;case\"*.*\":return`${g}${$}${i}${l}${$}`;case\"*/*\":return`${g}${$}${p}${l}${b}${$}`;case\"**\":return g+globstar(u);case\"**/*\":return`(?:${g}${globstar(u)}${p})?${b}${l}${$}`;case\"**/*.*\":return`(?:${g}${globstar(u)}${p})?${b}${$}${i}${l}${$}`;case\"**/.*\":return`(?:${g}${globstar(u)}${p})?${i}${l}${$}`;default:{const e=/^(.*?)\\.(\\w+)$/.exec(t);if(!e)return;const u=create(e[1]);if(!u)return;return u+i+e[2]}}};const x=o.removePrefix(t,y);let S=create(x);if(S&&u.strictSlashes!==true){S+=`${p}?`}return S};t.exports=parse},510:(t,e,u)=>{const n=u(716);const o=u(697);const s=u(96);const r=u(154);const isObject=t=>t&&typeof t===\"object\"&&!Array.isArray(t);const picomatch=(t,e,u=false)=>{if(Array.isArray(t)){const n=t.map((t=>picomatch(t,e,u)));const arrayMatcher=t=>{for(const e of n){const u=e(t);if(u)return u}return false};return arrayMatcher}const n=isObject(t)&&t.tokens&&t.input;if(t===\"\"||typeof t!==\"string\"&&!n){throw new TypeError(\"Expected pattern to be a non-empty string\")}const o=e||{};const s=o.windows;const r=n?picomatch.compileRe(t,e):picomatch.makeRe(t,e,false,true);const a=r.state;delete r.state;let isIgnored=()=>false;if(o.ignore){const t={...e,ignore:null,onMatch:null,onResult:null};isIgnored=picomatch(o.ignore,t,u)}const matcher=(u,n=false)=>{const{isMatch:i,match:c,output:p}=picomatch.test(u,r,e,{glob:t,posix:s});const l={glob:t,state:a,regex:r,posix:s,input:u,output:p,match:c,isMatch:i};if(typeof o.onResult===\"function\"){o.onResult(l)}if(i===false){l.isMatch=false;return n?l:false}if(isIgnored(u)){if(typeof o.onIgnore===\"function\"){o.onIgnore(l)}l.isMatch=false;return n?l:false}if(typeof o.onMatch===\"function\"){o.onMatch(l)}return n?l:true};if(u){matcher.state=a}return matcher};picomatch.test=(t,e,u,{glob:n,posix:o}={})=>{if(typeof t!==\"string\"){throw new TypeError(\"Expected input to be a string\")}if(t===\"\"){return{isMatch:false,output:\"\"}}const r=u||{};const a=r.format||(o?s.toPosixSlashes:null);let i=t===n;let c=i&&a?a(t):t;if(i===false){c=a?a(t):t;i=c===n}if(i===false||r.capture===true){if(r.matchBase===true||r.basename===true){i=picomatch.matchBase(t,e,u,o)}else{i=e.exec(c)}}return{isMatch:Boolean(i),match:i,output:c}};picomatch.matchBase=(t,e,u)=>{const n=e instanceof RegExp?e:picomatch.makeRe(e,u);return n.test(s.basename(t))};picomatch.isMatch=(t,e,u)=>picomatch(e,u)(t);picomatch.parse=(t,e)=>{if(Array.isArray(t))return t.map((t=>picomatch.parse(t,e)));return o(t,{...e,fastpaths:false})};picomatch.scan=(t,e)=>n(t,e);picomatch.compileRe=(t,e,u=false,n=false)=>{if(u===true){return t.output}const o=e||{};const s=o.contains?\"\":\"^\";const r=o.contains?\"\":\"$\";let a=`${s}(?:${t.output})${r}`;if(t&&t.negated===true){a=`^(?!${a}).*$`}const i=picomatch.toRegex(a,e);if(n===true){i.state=t}return i};picomatch.makeRe=(t,e={},u=false,n=false)=>{if(!t||typeof t!==\"string\"){throw new TypeError(\"Expected a non-empty string\")}let s={negated:false,fastpaths:true};if(e.fastpaths!==false&&(t[0]===\".\"||t[0]===\"*\")){s.output=o.fastpaths(t,e)}if(!s.output){s=o(t,e)}return picomatch.compileRe(s,e,u,n)};picomatch.toRegex=(t,e)=>{try{const u=e||{};return new RegExp(t,u.flags||(u.nocase?\"i\":\"\"))}catch(t){if(e&&e.debug===true)throw t;return/$^/}};picomatch.constants=r;t.exports=picomatch},716:(t,e,u)=>{const n=u(96);const{CHAR_ASTERISK:o,CHAR_AT:s,CHAR_BACKWARD_SLASH:r,CHAR_COMMA:a,CHAR_DOT:i,CHAR_EXCLAMATION_MARK:c,CHAR_FORWARD_SLASH:p,CHAR_LEFT_CURLY_BRACE:l,CHAR_LEFT_PARENTHESES:f,CHAR_LEFT_SQUARE_BRACKET:A,CHAR_PLUS:_,CHAR_QUESTION_MARK:R,CHAR_RIGHT_CURLY_BRACE:E,CHAR_RIGHT_PARENTHESES:h,CHAR_RIGHT_SQUARE_BRACKET:g}=u(154);const isPathSeparator=t=>t===p||t===r;const depth=t=>{if(t.isPrefix!==true){t.depth=t.isGlobstar?Infinity:1}};const scan=(t,e)=>{const u=e||{};const b=t.length-1;const C=u.parts===true||u.scanToEnd===true;const y=[];const $=[];const x=[];let S=t;let H=-1;let v=0;let d=0;let L=false;let T=false;let O=false;let k=false;let m=false;let w=false;let N=false;let I=false;let B=false;let G=false;let D=0;let M;let P;let K={value:\"\",depth:0,isGlob:false};const eos=()=>H>=b;const peek=()=>S.charCodeAt(H+1);const advance=()=>{M=P;return S.charCodeAt(++H)};while(H<b){P=advance();let t;if(P===r){N=K.backslashes=true;P=advance();if(P===l){w=true}continue}if(w===true||P===l){D++;while(eos()!==true&&(P=advance())){if(P===r){N=K.backslashes=true;advance();continue}if(P===l){D++;continue}if(w!==true&&P===i&&(P=advance())===i){L=K.isBrace=true;O=K.isGlob=true;G=true;if(C===true){continue}break}if(w!==true&&P===a){L=K.isBrace=true;O=K.isGlob=true;G=true;if(C===true){continue}break}if(P===E){D--;if(D===0){w=false;L=K.isBrace=true;G=true;break}}}if(C===true){continue}break}if(P===p){y.push(H);$.push(K);K={value:\"\",depth:0,isGlob:false};if(G===true)continue;if(M===i&&H===v+1){v+=2;continue}d=H+1;continue}if(u.noext!==true){const t=P===_||P===s||P===o||P===R||P===c;if(t===true&&peek()===f){O=K.isGlob=true;k=K.isExtglob=true;G=true;if(P===c&&H===v){B=true}if(C===true){while(eos()!==true&&(P=advance())){if(P===r){N=K.backslashes=true;P=advance();continue}if(P===h){O=K.isGlob=true;G=true;break}}continue}break}}if(P===o){if(M===o)m=K.isGlobstar=true;O=K.isGlob=true;G=true;if(C===true){continue}break}if(P===R){O=K.isGlob=true;G=true;if(C===true){continue}break}if(P===A){while(eos()!==true&&(t=advance())){if(t===r){N=K.backslashes=true;advance();continue}if(t===g){T=K.isBracket=true;O=K.isGlob=true;G=true;break}}if(C===true){continue}break}if(u.nonegate!==true&&P===c&&H===v){I=K.negated=true;v++;continue}if(u.noparen!==true&&P===f){O=K.isGlob=true;if(C===true){while(eos()!==true&&(P=advance())){if(P===f){N=K.backslashes=true;P=advance();continue}if(P===h){G=true;break}}continue}break}if(O===true){G=true;if(C===true){continue}break}}if(u.noext===true){k=false;O=false}let U=S;let X=\"\";let F=\"\";if(v>0){X=S.slice(0,v);S=S.slice(v);d-=v}if(U&&O===true&&d>0){U=S.slice(0,d);F=S.slice(d)}else if(O===true){U=\"\";F=S}else{U=S}if(U&&U!==\"\"&&U!==\"/\"&&U!==S){if(isPathSeparator(U.charCodeAt(U.length-1))){U=U.slice(0,-1)}}if(u.unescape===true){if(F)F=n.removeBackslashes(F);if(U&&N===true){U=n.removeBackslashes(U)}}const Q={prefix:X,input:t,start:v,base:U,glob:F,isBrace:L,isBracket:T,isGlob:O,isExtglob:k,isGlobstar:m,negated:I,negatedExtglob:B};if(u.tokens===true){Q.maxDepth=0;if(!isPathSeparator(P)){$.push(K)}Q.tokens=$}if(u.parts===true||u.tokens===true){let e;for(let n=0;n<y.length;n++){const o=e?e+1:v;const s=y[n];const r=t.slice(o,s);if(u.tokens){if(n===0&&v!==0){$[n].isPrefix=true;$[n].value=X}else{$[n].value=r}depth($[n]);Q.maxDepth+=$[n].depth}if(n!==0||r!==\"\"){x.push(r)}e=s}if(e&&e+1<t.length){const n=t.slice(e+1);x.push(n);if(u.tokens){$[$.length-1].value=n;depth($[$.length-1]);Q.maxDepth+=$[$.length-1].depth}}Q.slashes=y;Q.parts=x}return Q};t.exports=scan},96:(t,e,u)=>{const{REGEX_BACKSLASH:n,REGEX_REMOVE_BACKSLASH:o,REGEX_SPECIAL_CHARS:s,REGEX_SPECIAL_CHARS_GLOBAL:r}=u(154);e.isObject=t=>t!==null&&typeof t===\"object\"&&!Array.isArray(t);e.hasRegexChars=t=>s.test(t);e.isRegexChar=t=>t.length===1&&e.hasRegexChars(t);e.escapeRegex=t=>t.replace(r,\"\\\\$1\");e.toPosixSlashes=t=>t.replace(n,\"/\");e.removeBackslashes=t=>t.replace(o,(t=>t===\"\\\\\"?\"\":t));e.escapeLast=(t,u,n)=>{const o=t.lastIndexOf(u,n);if(o===-1)return t;if(t[o-1]===\"\\\\\")return e.escapeLast(t,u,o-1);return`${t.slice(0,o)}\\\\${t.slice(o)}`};e.removePrefix=(t,e={})=>{let u=t;if(u.startsWith(\"./\")){u=u.slice(2);e.prefix=\"./\"}return u};e.wrapOutput=(t,e={},u={})=>{const n=u.contains?\"\":\"^\";const o=u.contains?\"\":\"$\";let s=`${n}(?:${t})${o}`;if(e.negated===true){s=`(?:^(?!${s}).*$)`}return s};e.basename=(t,{windows:e}={})=>{const u=t.split(e?/[\\\\/]/:\"/\");const n=u[u.length-1];if(n===\"\"){return u[u.length-2]}return n}}};var e={};function __nccwpck_require__(u){var n=e[u];if(n!==undefined){return n.exports}var o=e[u]={exports:{}};var s=true;try{t[u](o,o.exports,__nccwpck_require__);s=false}finally{if(s)delete e[u]}return o.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var u=__nccwpck_require__(170);module.exports=u})();","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n hasLocalMatch: null,\n matchLocalPattern: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n hasLocalMatch: function() {\n return hasLocalMatch;\n },\n matchLocalPattern: function() {\n return matchLocalPattern;\n }\n});\nconst _picomatch = require(\"next/dist/compiled/picomatch\");\nfunction matchLocalPattern(pattern, url) {\n if (pattern.search !== undefined) {\n if (pattern.search !== url.search) {\n return false;\n }\n }\n var _pattern_pathname;\n if (!(0, _picomatch.makeRe)((_pattern_pathname = pattern.pathname) != null ? _pattern_pathname : '**', {\n dot: true\n }).test(url.pathname)) {\n return false;\n }\n return true;\n}\nfunction hasLocalMatch(localPatterns, urlPathAndQuery) {\n if (!localPatterns) {\n // if the user didn't define \"localPatterns\", we allow all local images\n return true;\n }\n const url = new URL(urlPathAndQuery, 'http://n');\n return localPatterns.some((p)=>matchLocalPattern(p, url));\n}\n\n//# sourceMappingURL=match-local-pattern.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n hasRemoteMatch: null,\n matchRemotePattern: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n hasRemoteMatch: function() {\n return hasRemoteMatch;\n },\n matchRemotePattern: function() {\n return matchRemotePattern;\n }\n});\nconst _picomatch = require(\"next/dist/compiled/picomatch\");\nfunction matchRemotePattern(pattern, url) {\n if (pattern.protocol !== undefined) {\n if (pattern.protocol.replace(/:$/, '') !== url.protocol.replace(/:$/, '')) {\n return false;\n }\n }\n if (pattern.port !== undefined) {\n if (pattern.port !== url.port) {\n return false;\n }\n }\n if (pattern.hostname === undefined) {\n throw Object.defineProperty(new Error(\"Pattern should define hostname but found\\n\" + JSON.stringify(pattern)), \"__NEXT_ERROR_CODE\", {\n value: \"E410\",\n enumerable: false,\n configurable: true\n });\n } else {\n if (!(0, _picomatch.makeRe)(pattern.hostname).test(url.hostname)) {\n return false;\n }\n }\n if (pattern.search !== undefined) {\n if (pattern.search !== url.search) {\n return false;\n }\n }\n var _pattern_pathname;\n // Should be the same as writeImagesManifest()\n if (!(0, _picomatch.makeRe)((_pattern_pathname = pattern.pathname) != null ? _pattern_pathname : '**', {\n dot: true\n }).test(url.pathname)) {\n return false;\n }\n return true;\n}\nfunction hasRemoteMatch(domains, remotePatterns, url) {\n return domains.some((domain)=>url.hostname === domain) || remotePatterns.some((p)=>matchRemotePattern(p, url));\n}\n\n//# sourceMappingURL=match-remote-pattern.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst DEFAULT_Q = 75;\nfunction defaultLoader(param) {\n let { config, src, width, quality } = param;\n var _config_qualities;\n if (process.env.NODE_ENV !== 'production') {\n const missingValues = [];\n // these should always be provided but make sure they are\n if (!src) missingValues.push('src');\n if (!width) missingValues.push('width');\n if (missingValues.length > 0) {\n throw Object.defineProperty(new Error(\"Next Image Optimization requires \" + missingValues.join(', ') + \" to be provided. Make sure you pass them as props to the `next/image` component. Received: \" + JSON.stringify({\n src,\n width,\n quality\n })), \"__NEXT_ERROR_CODE\", {\n value: \"E188\",\n enumerable: false,\n configurable: true\n });\n }\n if (src.startsWith('//')) {\n throw Object.defineProperty(new Error('Failed to parse src \"' + src + '\" on `next/image`, protocol-relative URL (//) must be changed to an absolute URL (http:// or https://)'), \"__NEXT_ERROR_CODE\", {\n value: \"E360\",\n enumerable: false,\n configurable: true\n });\n }\n if (src.startsWith('/') && config.localPatterns) {\n if (process.env.NODE_ENV !== 'test' && // micromatch isn't compatible with edge runtime\n process.env.NEXT_RUNTIME !== 'edge') {\n // We use dynamic require because this should only error in development\n const { hasLocalMatch } = require('./match-local-pattern');\n if (!hasLocalMatch(config.localPatterns, src)) {\n throw Object.defineProperty(new Error(\"Invalid src prop (\" + src + \") on `next/image` does not match `images.localPatterns` configured in your `next.config.js`\\n\" + \"See more info: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns\"), \"__NEXT_ERROR_CODE\", {\n value: \"E426\",\n enumerable: false,\n configurable: true\n });\n }\n }\n }\n if (!src.startsWith('/') && (config.domains || config.remotePatterns)) {\n let parsedSrc;\n try {\n parsedSrc = new URL(src);\n } catch (err) {\n console.error(err);\n throw Object.defineProperty(new Error('Failed to parse src \"' + src + '\" on `next/image`, if using relative image it must start with a leading slash \"/\" or be an absolute URL (http:// or https://)'), \"__NEXT_ERROR_CODE\", {\n value: \"E63\",\n enumerable: false,\n configurable: true\n });\n }\n if (process.env.NODE_ENV !== 'test' && // micromatch isn't compatible with edge runtime\n process.env.NEXT_RUNTIME !== 'edge') {\n // We use dynamic require because this should only error in development\n const { hasRemoteMatch } = require('./match-remote-pattern');\n if (!hasRemoteMatch(config.domains, config.remotePatterns, parsedSrc)) {\n throw Object.defineProperty(new Error(\"Invalid src prop (\" + src + ') on `next/image`, hostname \"' + parsedSrc.hostname + '\" is not configured under images in your `next.config.js`\\n' + \"See more info: https://nextjs.org/docs/messages/next-image-unconfigured-host\"), \"__NEXT_ERROR_CODE\", {\n value: \"E231\",\n enumerable: false,\n configurable: true\n });\n }\n }\n }\n if (quality && config.qualities && !config.qualities.includes(quality)) {\n throw Object.defineProperty(new Error(\"Invalid quality prop (\" + quality + \") on `next/image` does not match `images.qualities` configured in your `next.config.js`\\n\" + \"See more info: https://nextjs.org/docs/messages/next-image-unconfigured-qualities\"), \"__NEXT_ERROR_CODE\", {\n value: \"E623\",\n enumerable: false,\n configurable: true\n });\n }\n }\n const q = quality || ((_config_qualities = config.qualities) == null ? void 0 : _config_qualities.reduce((prev, cur)=>Math.abs(cur - DEFAULT_Q) < Math.abs(prev - DEFAULT_Q) ? cur : prev)) || DEFAULT_Q;\n return config.path + \"?url=\" + encodeURIComponent(src) + \"&w=\" + width + \"&q=\" + q + (src.startsWith('/_next/static/media/') && process.env.NEXT_DEPLOYMENT_ID ? \"&dpl=\" + process.env.NEXT_DEPLOYMENT_ID : '');\n}\n// We use this to determine if the import is the default loader\n// or a custom loader defined by the user in next.config.js\ndefaultLoader.__next_img_default = true;\nconst _default = defaultLoader;\n\n//# sourceMappingURL=image-loader.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"useMergedRef\", {\n enumerable: true,\n get: function() {\n return useMergedRef;\n }\n});\nconst _react = require(\"react\");\nfunction useMergedRef(refA, refB) {\n const cleanupA = (0, _react.useRef)(null);\n const cleanupB = (0, _react.useRef)(null);\n // NOTE: In theory, we could skip the wrapping if only one of the refs is non-null.\n // (this happens often if the user doesn't pass a ref to Link/Form/Image)\n // But this can cause us to leak a cleanup-ref into user code (e.g. via `<Link legacyBehavior>`),\n // and the user might pass that ref into ref-merging library that doesn't support cleanup refs\n // (because it hasn't been updated for React 19)\n // which can then cause things to blow up, because a cleanup-returning ref gets called with `null`.\n // So in practice, it's safer to be defensive and always wrap the ref, even on React 19.\n return (0, _react.useCallback)((current)=>{\n if (current === null) {\n const cleanupFnA = cleanupA.current;\n if (cleanupFnA) {\n cleanupA.current = null;\n cleanupFnA();\n }\n const cleanupFnB = cleanupB.current;\n if (cleanupFnB) {\n cleanupB.current = null;\n cleanupFnB();\n }\n } else {\n if (refA) {\n cleanupA.current = applyRef(refA, current);\n }\n if (refB) {\n cleanupB.current = applyRef(refB, current);\n }\n }\n }, [\n refA,\n refB\n ]);\n}\nfunction applyRef(refA, current) {\n if (typeof refA === 'function') {\n const cleanup = refA(current);\n if (typeof cleanup === 'function') {\n return cleanup;\n } else {\n return ()=>refA(null);\n }\n } else {\n refA.current = current;\n return ()=>{\n refA.current = null;\n };\n }\n}\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=use-merged-ref.js.map","'use client';\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"Image\", {\n enumerable: true,\n get: function() {\n return Image;\n }\n});\nconst _interop_require_default = require(\"@swc/helpers/_/_interop_require_default\");\nconst _interop_require_wildcard = require(\"@swc/helpers/_/_interop_require_wildcard\");\nconst _jsxruntime = require(\"react/jsx-runtime\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(require(\"react\"));\nconst _reactdom = /*#__PURE__*/ _interop_require_default._(require(\"react-dom\"));\nconst _head = /*#__PURE__*/ _interop_require_default._(require(\"../shared/lib/head\"));\nconst _getimgprops = require(\"../shared/lib/get-img-props\");\nconst _imageconfig = require(\"../shared/lib/image-config\");\nconst _imageconfigcontextsharedruntime = require(\"../shared/lib/image-config-context.shared-runtime\");\nconst _warnonce = require(\"../shared/lib/utils/warn-once\");\nconst _routercontextsharedruntime = require(\"../shared/lib/router-context.shared-runtime\");\nconst _imageloader = /*#__PURE__*/ _interop_require_default._(require(\"next/dist/shared/lib/image-loader\"));\nconst _usemergedref = require(\"./use-merged-ref\");\n// This is replaced by webpack define plugin\nconst configEnv = process.env.__NEXT_IMAGE_OPTS;\nif (typeof window === 'undefined') {\n ;\n globalThis.__NEXT_IMAGE_IMPORTED = true;\n}\n// See https://stackoverflow.com/q/39777833/266535 for why we use this ref\n// handler instead of the img's onLoad attribute.\nfunction handleLoading(img, placeholder, onLoadRef, onLoadingCompleteRef, setBlurComplete, unoptimized, sizesInput) {\n const src = img == null ? void 0 : img.src;\n if (!img || img['data-loaded-src'] === src) {\n return;\n }\n img['data-loaded-src'] = src;\n const p = 'decode' in img ? img.decode() : Promise.resolve();\n p.catch(()=>{}).then(()=>{\n if (!img.parentElement || !img.isConnected) {\n // Exit early in case of race condition:\n // - onload() is called\n // - decode() is called but incomplete\n // - unmount is called\n // - decode() completes\n return;\n }\n if (placeholder !== 'empty') {\n setBlurComplete(true);\n }\n if (onLoadRef == null ? void 0 : onLoadRef.current) {\n // Since we don't have the SyntheticEvent here,\n // we must create one with the same shape.\n // See https://reactjs.org/docs/events.html\n const event = new Event('load');\n Object.defineProperty(event, 'target', {\n writable: false,\n value: img\n });\n let prevented = false;\n let stopped = false;\n onLoadRef.current({\n ...event,\n nativeEvent: event,\n currentTarget: img,\n target: img,\n isDefaultPrevented: ()=>prevented,\n isPropagationStopped: ()=>stopped,\n persist: ()=>{},\n preventDefault: ()=>{\n prevented = true;\n event.preventDefault();\n },\n stopPropagation: ()=>{\n stopped = true;\n event.stopPropagation();\n }\n });\n }\n if (onLoadingCompleteRef == null ? void 0 : onLoadingCompleteRef.current) {\n onLoadingCompleteRef.current(img);\n }\n if (process.env.NODE_ENV !== 'production') {\n const origSrc = new URL(src, 'http://n').searchParams.get('url') || src;\n if (img.getAttribute('data-nimg') === 'fill') {\n if (!unoptimized && (!sizesInput || sizesInput === '100vw')) {\n let widthViewportRatio = img.getBoundingClientRect().width / window.innerWidth;\n if (widthViewportRatio < 0.6) {\n if (sizesInput === '100vw') {\n (0, _warnonce.warnOnce)('Image with src \"' + origSrc + '\" has \"fill\" prop and \"sizes\" prop of \"100vw\", but image is not rendered at full viewport width. Please adjust \"sizes\" to improve page performance. Read more: https://nextjs.org/docs/api-reference/next/image#sizes');\n } else {\n (0, _warnonce.warnOnce)('Image with src \"' + origSrc + '\" has \"fill\" but is missing \"sizes\" prop. Please add it to improve page performance. Read more: https://nextjs.org/docs/api-reference/next/image#sizes');\n }\n }\n }\n if (img.parentElement) {\n const { position } = window.getComputedStyle(img.parentElement);\n const valid = [\n 'absolute',\n 'fixed',\n 'relative'\n ];\n if (!valid.includes(position)) {\n (0, _warnonce.warnOnce)('Image with src \"' + origSrc + '\" has \"fill\" and parent element with invalid \"position\". Provided \"' + position + '\" should be one of ' + valid.map(String).join(',') + \".\");\n }\n }\n if (img.height === 0) {\n (0, _warnonce.warnOnce)('Image with src \"' + origSrc + '\" has \"fill\" and a height value of 0. This is likely because the parent element of the image has not been styled to have a set height.');\n }\n }\n const heightModified = img.height.toString() !== img.getAttribute('height');\n const widthModified = img.width.toString() !== img.getAttribute('width');\n if (heightModified && !widthModified || !heightModified && widthModified) {\n (0, _warnonce.warnOnce)('Image with src \"' + origSrc + '\" has either width or height modified, but not the other. If you use CSS to change the size of your image, also include the styles \\'width: \"auto\"\\' or \\'height: \"auto\"\\' to maintain the aspect ratio.');\n }\n }\n });\n}\nfunction getDynamicProps(fetchPriority) {\n if (Boolean(_react.use)) {\n // In React 19.0.0 or newer, we must use camelCase\n // prop to avoid \"Warning: Invalid DOM property\".\n // See https://github.com/facebook/react/pull/25927\n return {\n fetchPriority\n };\n }\n // In React 18.2.0 or older, we must use lowercase prop\n // to avoid \"Warning: Invalid DOM property\".\n return {\n fetchpriority: fetchPriority\n };\n}\nconst ImageElement = /*#__PURE__*/ (0, _react.forwardRef)((param, forwardedRef)=>{\n let { src, srcSet, sizes, height, width, decoding, className, style, fetchPriority, placeholder, loading, unoptimized, fill, onLoadRef, onLoadingCompleteRef, setBlurComplete, setShowAltText, sizesInput, onLoad, onError, ...rest } = param;\n const ownRef = (0, _react.useCallback)((img)=>{\n if (!img) {\n return;\n }\n if (onError) {\n // If the image has an error before react hydrates, then the error is lost.\n // The workaround is to wait until the image is mounted which is after hydration,\n // then we set the src again to trigger the error handler (if there was an error).\n // eslint-disable-next-line no-self-assign\n img.src = img.src;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (!src) {\n console.error('Image is missing required \"src\" property:', img);\n }\n if (img.getAttribute('alt') === null) {\n console.error('Image is missing required \"alt\" property. Please add Alternative Text to describe the image for screen readers and search engines.');\n }\n }\n if (img.complete) {\n handleLoading(img, placeholder, onLoadRef, onLoadingCompleteRef, setBlurComplete, unoptimized, sizesInput);\n }\n }, [\n src,\n placeholder,\n onLoadRef,\n onLoadingCompleteRef,\n setBlurComplete,\n onError,\n unoptimized,\n sizesInput\n ]);\n const ref = (0, _usemergedref.useMergedRef)(forwardedRef, ownRef);\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(\"img\", {\n ...rest,\n ...getDynamicProps(fetchPriority),\n // It's intended to keep `loading` before `src` because React updates\n // props in order which causes Safari/Firefox to not lazy load properly.\n // See https://github.com/facebook/react/issues/25883\n loading: loading,\n width: width,\n height: height,\n decoding: decoding,\n \"data-nimg\": fill ? 'fill' : '1',\n className: className,\n style: style,\n // It's intended to keep `src` the last attribute because React updates\n // attributes in order. If we keep `src` the first one, Safari will\n // immediately start to fetch `src`, before `sizes` and `srcSet` are even\n // updated by React. That causes multiple unnecessary requests if `srcSet`\n // and `sizes` are defined.\n // This bug cannot be reproduced in Chrome or Firefox.\n sizes: sizes,\n srcSet: srcSet,\n src: src,\n ref: ref,\n onLoad: (event)=>{\n const img = event.currentTarget;\n handleLoading(img, placeholder, onLoadRef, onLoadingCompleteRef, setBlurComplete, unoptimized, sizesInput);\n },\n onError: (event)=>{\n // if the real image fails to load, this will ensure \"alt\" is visible\n setShowAltText(true);\n if (placeholder !== 'empty') {\n // If the real image fails to load, this will still remove the placeholder.\n setBlurComplete(true);\n }\n if (onError) {\n onError(event);\n }\n }\n });\n});\nfunction ImagePreload(param) {\n let { isAppRouter, imgAttributes } = param;\n const opts = {\n as: 'image',\n imageSrcSet: imgAttributes.srcSet,\n imageSizes: imgAttributes.sizes,\n crossOrigin: imgAttributes.crossOrigin,\n referrerPolicy: imgAttributes.referrerPolicy,\n ...getDynamicProps(imgAttributes.fetchPriority)\n };\n if (isAppRouter && _reactdom.default.preload) {\n _reactdom.default.preload(imgAttributes.src, opts);\n return null;\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_head.default, {\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n rel: \"preload\",\n // Note how we omit the `href` attribute, as it would only be relevant\n // for browsers that do not support `imagesrcset`, and in those cases\n // it would cause the incorrect image to be preloaded.\n //\n // https://html.spec.whatwg.org/multipage/semantics.html#attr-link-imagesrcset\n href: imgAttributes.srcSet ? undefined : imgAttributes.src,\n ...opts\n }, '__nimg-' + imgAttributes.src + imgAttributes.srcSet + imgAttributes.sizes)\n });\n}\nconst Image = /*#__PURE__*/ (0, _react.forwardRef)((props, forwardedRef)=>{\n const pagesRouter = (0, _react.useContext)(_routercontextsharedruntime.RouterContext);\n // We're in the app directory if there is no pages router.\n const isAppRouter = !pagesRouter;\n const configContext = (0, _react.useContext)(_imageconfigcontextsharedruntime.ImageConfigContext);\n const config = (0, _react.useMemo)(()=>{\n var _c_qualities;\n const c = configEnv || configContext || _imageconfig.imageConfigDefault;\n const allSizes = [\n ...c.deviceSizes,\n ...c.imageSizes\n ].sort((a, b)=>a - b);\n const deviceSizes = c.deviceSizes.sort((a, b)=>a - b);\n const qualities = (_c_qualities = c.qualities) == null ? void 0 : _c_qualities.sort((a, b)=>a - b);\n return {\n ...c,\n allSizes,\n deviceSizes,\n qualities\n };\n }, [\n configContext\n ]);\n const { onLoad, onLoadingComplete } = props;\n const onLoadRef = (0, _react.useRef)(onLoad);\n (0, _react.useEffect)(()=>{\n onLoadRef.current = onLoad;\n }, [\n onLoad\n ]);\n const onLoadingCompleteRef = (0, _react.useRef)(onLoadingComplete);\n (0, _react.useEffect)(()=>{\n onLoadingCompleteRef.current = onLoadingComplete;\n }, [\n onLoadingComplete\n ]);\n const [blurComplete, setBlurComplete] = (0, _react.useState)(false);\n const [showAltText, setShowAltText] = (0, _react.useState)(false);\n const { props: imgAttributes, meta: imgMeta } = (0, _getimgprops.getImgProps)(props, {\n defaultLoader: _imageloader.default,\n imgConf: config,\n blurComplete,\n showAltText\n });\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(ImageElement, {\n ...imgAttributes,\n unoptimized: imgMeta.unoptimized,\n placeholder: imgMeta.placeholder,\n fill: imgMeta.fill,\n onLoadRef: onLoadRef,\n onLoadingCompleteRef: onLoadingCompleteRef,\n setBlurComplete: setBlurComplete,\n setShowAltText: setShowAltText,\n sizesInput: props.sizes,\n ref: forwardedRef\n }),\n imgMeta.priority ? /*#__PURE__*/ (0, _jsxruntime.jsx)(ImagePreload, {\n isAppRouter: isAppRouter,\n imgAttributes: imgAttributes\n }) : null\n ]\n });\n});\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=image-component.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n default: null,\n getImageProps: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n default: function() {\n return _default;\n },\n getImageProps: function() {\n return getImageProps;\n }\n});\nconst _interop_require_default = require(\"@swc/helpers/_/_interop_require_default\");\nconst _getimgprops = require(\"./get-img-props\");\nconst _imagecomponent = require(\"../../client/image-component\");\nconst _imageloader = /*#__PURE__*/ _interop_require_default._(require(\"next/dist/shared/lib/image-loader\"));\nfunction getImageProps(imgProps) {\n const { props } = (0, _getimgprops.getImgProps)(imgProps, {\n defaultLoader: _imageloader.default,\n // This is replaced by webpack define plugin\n imgConf: process.env.__NEXT_IMAGE_OPTS\n });\n // Normally we don't care about undefined props because we pass to JSX,\n // but this exported function could be used by the end user for anything\n // so we delete undefined props to clean it up a little.\n for (const [key, value] of Object.entries(props)){\n if (value === undefined) {\n delete props[key];\n }\n }\n return {\n props\n };\n}\nconst _default = _imagecomponent.Image;\n\n//# sourceMappingURL=image-external.js.map","module.exports = require('./dist/shared/lib/image-external')\n","import React from 'react';\nimport Image from 'next/image';\n\nexport interface FeatureCardProps {\n title?: string;\n description?: string;\n icon?: string;\n image_aspect_ratio?: '1:1' | '4:3' | '16:9' | '3:2' | '21:9' | string;\n text_alignment?: 'left' | 'center' | 'right' | string;\n className?: string;\n}\n\nexport function FeatureCard({\n title,\n description,\n icon,\n image_aspect_ratio,\n text_alignment,\n className,\n}: FeatureCardProps) {\n const alignmentClasses: Record<string, string> = {\n left: 'text-left',\n center: 'text-center mx-auto',\n right: 'text-right',\n }\n const alignClass = (text_alignment && alignmentClasses[text_alignment]) || 'text-center'\n\n const aspectRatioClasses: Record<string, string> = {\n '1:1': 'aspect-square',\n '4:3': 'aspect-[4/3]',\n '16:9': 'aspect-video',\n '3:2': 'aspect-[3/2]',\n '21:9': 'aspect-[21/9]',\n }\n const aspectClass = (image_aspect_ratio && aspectRatioClasses[image_aspect_ratio]) || 'aspect-[3/2]'\n\n return (\n <div className={`component-container mx-auto px-6 py-8 ${className ?? ''}`.trim()}>\n <div className={`max-w-md mx-auto bg-white rounded-lg shadow-lg p-8 ${alignClass}`}>\n {icon && (\n <div className={`feature-card-icon ${aspectClass} ${text_alignment === 'left' ? 'mx-0' : 'mx-auto'} relative`}>\n <Image src={icon} alt={title ?? ''} fill className=\"object-cover\" sizes=\"100vw\" />\n </div>\n )}\n {title && <h3 className=\"feature-card-title text-xl font-semibold mt-4\">{title}</h3>}\n {description && (\n <p className=\"feature-card-description text-gray-600 mt-3\">\n {description}\n </p>\n )}\n </div>\n </div>\n );\n}\n\nexport default FeatureCard;\n","import React from 'react';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport interface ResourceCardItem {\n /** Asset URL, or a Contentstack asset object — both are accepted. */\n image?: string | { url?: string };\n tag?: string;\n title?: string;\n description?: string;\n url?: string;\n card_background_color?: StackableColorValue;\n card_text_color?: StackableColorValue;\n}\n\nexport interface ResourceCardSectionProps {\n heading?: string;\n subheading?: string;\n heading_alignment?: 'left' | 'center' | 'right' | string;\n item_alignment?: 'left' | 'center' | 'right' | string;\n cards_per_row?: 1 | 2 | 3 | number | string;\n view_all_label?: string;\n view_all_url?: string;\n background_color?: StackableColorValue;\n heading_text_color?: StackableColorValue;\n items?: ResourceCardItem[];\n className?: string;\n}\n\n// ─── Default content ──────────────────────────────────────────────────────────\n\nconst DEFAULT_ITEMS: ResourceCardItem[] = [\n {\n tag: 'Report',\n title: 'The Forrester Wave™: Digital Experience Platforms, Q4 2025',\n },\n {\n tag: 'Report',\n title: 'How personal is too personal when it comes to digital experiences?',\n },\n {\n tag: 'Report',\n title: 'First-party data activation guide for marketers',\n },\n];\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveImage(image?: string | { url?: string }): string {\n if (!image) return '';\n if (typeof image === 'string') return image.trim();\n return typeof image.url === 'string' ? image.url.trim() : '';\n}\n\nfunction resolveItems(items?: ResourceCardItem[]): ResourceCardItem[] {\n const filled = (items ?? []).filter(\n i => i.title?.trim() || i.tag?.trim() || resolveImage(i.image)\n );\n return filled.length ? filled : DEFAULT_ITEMS;\n}\n\n// ─── Chevron arrow SVGs ───────────────────────────────────────────────────────\n\nconst ChevronLeft = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n);\n\nconst ChevronRight = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n);\n\n// ─── ResourceCard ─────────────────────────────────────────────────────────────\n\nexport function ResourceCard({\n heading,\n subheading,\n heading_alignment = 'left',\n item_alignment = 'left',\n cards_per_row,\n view_all_label,\n view_all_url,\n background_color,\n heading_text_color,\n items: itemsProp,\n className,\n}: ResourceCardSectionProps) {\n const items = resolveItems(itemsProp);\n\n const bgColor = resolveStackableColor(background_color) || '#1a1a2e';\n const headingColor = resolveStackableColor(heading_text_color) || '#ffffff';\n\n const maxCols = Math.min(Math.max(Number(cards_per_row) || 3, 1), 3);\n const colCount = Math.min(items.length, maxCols);\n const isSingle = colCount === 1;\n\n const hAlign = (heading_alignment as React.CSSProperties['textAlign']) || 'left';\n\n const gridStyle: React.CSSProperties = isSingle\n ? { display: 'flex', justifyContent: 'center' }\n : {\n display: 'grid',\n gridTemplateColumns: `repeat(${colCount}, 1fr)`,\n gap: 24,\n };\n\n return (\n <div\n className={className}\n style={{ backgroundColor: bgColor, padding: '52px 40px' }}\n >\n <div style={{ maxWidth: 1200, margin: '0 auto' }}>\n\n {/* Section header */}\n {(heading || subheading) && (\n <div style={{ textAlign: hAlign, marginBottom: 36 }}>\n {heading && (\n <h2 style={{\n fontSize: 32,\n fontWeight: 700,\n color: headingColor,\n margin: '0 0 10px',\n lineHeight: 1.2,\n letterSpacing: '-0.01em',\n }}>\n {heading}\n </h2>\n )}\n {subheading && (\n <p style={{\n fontSize: 16,\n color: headingColor,\n opacity: 0.75,\n margin: 0,\n lineHeight: 1.6,\n maxWidth: hAlign === 'center' ? 600 : undefined,\n marginLeft: hAlign === 'center' ? 'auto' : undefined,\n marginRight: hAlign === 'center' ? 'auto' : undefined,\n }}>\n {subheading}\n </p>\n )}\n </div>\n )}\n\n {/* Cards grid */}\n <div style={gridStyle}>\n {items.map((item, i) => (\n <ResourceCardTile\n key={i}\n item={item}\n isSingle={isSingle}\n itemAlignment={item_alignment as string}\n />\n ))}\n </div>\n\n {/* Footer: view all + arrows */}\n {(view_all_label || view_all_url) && (\n <div style={{\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'center',\n gap: 8,\n marginTop: 32,\n }}>\n <a\n href={view_all_url || '#'}\n style={{\n color: headingColor,\n fontSize: 14,\n fontWeight: 500,\n textDecoration: 'none',\n opacity: 0.9,\n marginRight: 8,\n }}\n >\n {view_all_label || 'View all resources'}\n </a>\n <NavArrowButton aria-label=\"Previous\">\n <ChevronLeft />\n </NavArrowButton>\n <NavArrowButton aria-label=\"Next\">\n <ChevronRight />\n </NavArrowButton>\n </div>\n )}\n\n </div>\n </div>\n );\n}\n\n// ─── Nav arrow button ─────────────────────────────────────────────────────────\n\nfunction NavArrowButton({\n children,\n 'aria-label': ariaLabel,\n}: {\n children: React.ReactNode;\n 'aria-label': string;\n}) {\n return (\n <button\n aria-label={ariaLabel}\n style={{\n width: 36,\n height: 36,\n borderRadius: '50%',\n border: '1px solid rgba(255,255,255,0.3)',\n background: 'rgba(255,255,255,0.08)',\n color: '#fff',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n padding: 0,\n transition: 'background 0.15s',\n }}\n onMouseEnter={e => {\n (e.currentTarget as HTMLButtonElement).style.background = 'rgba(255,255,255,0.18)';\n }}\n onMouseLeave={e => {\n (e.currentTarget as HTMLButtonElement).style.background = 'rgba(255,255,255,0.08)';\n }}\n >\n {children}\n </button>\n );\n}\n\n// ─── Individual card tile ─────────────────────────────────────────────────────\n\nfunction ResourceCardTile({\n item,\n isSingle,\n itemAlignment,\n}: {\n item: ResourceCardItem;\n isSingle: boolean;\n itemAlignment: string;\n}) {\n const cardBg = resolveStackableColor(item.card_background_color) || 'transparent';\n const cardText = resolveStackableColor(item.card_text_color) || '#ffffff';\n const imageUrl = resolveImage(item.image);\n\n const textAlign = (itemAlignment || 'left') as React.CSSProperties['textAlign'];\n\n // For flex alignment of inline elements (tag badge) when center/right\n const flexJustify: React.CSSProperties['justifyContent'] =\n itemAlignment === 'center' ? 'center' :\n itemAlignment === 'right' ? 'flex-end' : 'flex-start';\n\n const cardStyle: React.CSSProperties = {\n overflow: 'hidden',\n borderRadius: 8,\n cursor: item.url ? 'pointer' : 'default',\n ...(isSingle ? { width: 380, maxWidth: '100%' } : {}),\n };\n\n const imageStyle: React.CSSProperties = {\n width: '100%',\n aspectRatio: isSingle ? '1 / 1' : '16 / 9',\n objectFit: 'cover',\n display: 'block',\n backgroundColor: '#2d2d4e',\n };\n\n const placeholderStyle: React.CSSProperties = {\n ...imageStyle,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: 'linear-gradient(135deg, #4a3f8f 0%, #2d2d4e 100%)',\n };\n\n const inner = (\n <div style={cardStyle}>\n {/* Thumbnail */}\n {imageUrl ? (\n <img src={imageUrl} alt={item.title ?? ''} style={imageStyle} />\n ) : (\n <div style={placeholderStyle}>\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"rgba(255,255,255,0.2)\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"/>\n <circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\"/>\n <polyline points=\"21 15 16 10 5 21\"/>\n </svg>\n </div>\n )}\n\n {/* Text area */}\n <div style={{\n padding: '16px 16px 20px',\n backgroundColor: cardBg,\n textAlign,\n }}>\n {/* Tag */}\n {item.tag && (\n <div style={{ display: 'flex', justifyContent: flexJustify, marginBottom: 10 }}>\n <span style={{\n display: 'inline-block',\n fontSize: 11,\n fontWeight: 500,\n letterSpacing: '0.04em',\n padding: '3px 10px',\n borderRadius: 4,\n color: cardText,\n border: `1px solid ${cardText}40`,\n }}>\n {item.tag}\n </span>\n </div>\n )}\n\n {/* Title */}\n {item.title && (\n <p style={{\n margin: '0 0 8px',\n fontSize: 15,\n fontWeight: 600,\n color: cardText,\n lineHeight: 1.45,\n }}>\n {item.title}\n </p>\n )}\n\n {/* Description */}\n {item.description && (\n <p style={{\n margin: 0,\n fontSize: 13,\n color: cardText,\n opacity: 0.75,\n lineHeight: 1.6,\n }}>\n {item.description}\n </p>\n )}\n </div>\n </div>\n );\n\n if (item.url) {\n return (\n <a href={item.url} style={{ textDecoration: 'none', display: 'block' }}>\n {inner}\n </a>\n );\n }\n\n return inner;\n}\n\nexport default ResourceCard;\n","/* eslint-disable @next/next/no-img-element */\nimport React, { useEffect, useState } from 'react';\nimport {\n UserIcon,\n UsersIcon,\n ComputerDesktopIcon,\n BriefcaseIcon,\n StarIcon,\n HeartIcon,\n EyeIcon,\n ChatBubbleLeftIcon,\n MapPinIcon,\n} from '@heroicons/react/24/outline';\nimport { CheckIcon } from '@heroicons/react/24/solid';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\n/** Curated icon set — keeps stats consistent without editors uploading SVGs. */\nconst STAT_ICONS: Record<string, React.ComponentType<{ className?: string }>> = {\n User: UserIcon,\n Users: UsersIcon,\n Laptop: ComputerDesktopIcon,\n Briefcase: BriefcaseIcon,\n Star: StarIcon,\n Heart: HeartIcon,\n Eye: EyeIcon,\n Chat: ChatBubbleLeftIcon,\n Location: MapPinIcon,\n};\n\nexport interface ProfileCardStat {\n icon?: keyof typeof STAT_ICONS | string;\n value?: string;\n}\n\nexport interface ProfileCardProps {\n name?: string;\n verified?: boolean;\n bio?: string;\n /** Asset URL, or a Contentstack asset object — both are accepted. */\n profile_image?: string | { url?: string };\n image_alt?: string;\n image_aspect_ratio?: 'Square' | 'Portrait' | 'Landscape' | string;\n image_fit?: 'Cover' | 'Contain' | string;\n /** Fades the photo into the card body instead of a hard edge. */\n image_fade?: boolean;\n /** Where the name links to. */\n href?: string;\n stats?: ProfileCardStat[];\n cta_label?: string;\n /** Label once the follow button is toggled on. */\n cta_label_active?: string;\n cta_url?: string;\n button_style?: 'Light' | 'Dark' | string;\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n /** Verified badge fill. */\n accent_color?: StackableColorValue;\n className?: string;\n}\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveImage(image: ProfileCardProps['profile_image']): string {\n if (!image) return '';\n if (typeof image === 'string') return image.trim();\n return typeof image.url === 'string' ? image.url.trim() : '';\n}\n\nconst ASPECT_RATIOS: Record<string, string> = {\n Square: '1 / 1',\n Portrait: '4 / 5',\n Landscape: '4 / 3',\n};\n\nexport function ProfileCard({\n name = 'Ali Akram',\n verified = true,\n bio = 'Focused on clarity, simplicity, and smooth user flow.',\n profile_image,\n image_alt,\n image_aspect_ratio = 'Square',\n image_fit = 'Cover',\n image_fade = true,\n href = '#',\n stats = [\n { icon: 'User', value: '352' },\n { icon: 'Laptop', value: '+150' },\n ],\n cta_label = 'Follow +',\n cta_label_active = 'Following',\n cta_url = '#',\n button_style = 'Light',\n background_color,\n text_color,\n accent_color,\n className = '',\n}: ProfileCardProps) {\n const [following, setFollowing] = useState(false);\n\n // Editors can flip the label in the controls panel and expect the button to follow.\n useEffect(() => { setFollowing(false); }, [cta_label, cta_label_active]);\n\n const src = resolveImage(profile_image);\n const aspect = ASPECT_RATIOS[image_aspect_ratio] ?? ASPECT_RATIOS.Square;\n\n const resolvedBg = resolveStackableColor(background_color);\n const resolvedText = resolveStackableColor(text_color);\n const accent = resolveStackableColor(accent_color) || '#22c55e';\n\n const cardBg = 'bg-[#2b2b2d]';\n const cardRing = '';\n const nameColor = 'text-white';\n const bioColor = 'text-neutral-400';\n const statColor = 'text-neutral-300';\n\n // Light = solid pale pill (mock, left card). Dark = muted pill with a hairline (right card).\n const btnLight = 'bg-neutral-100 text-neutral-900 hover:bg-white';\n const btnDark = 'bg-[#3a3a3d] text-neutral-100 ring-1 ring-white/15 hover:bg-[#454549]';\n const btnClass = button_style === 'Dark' ? btnDark : btnLight;\n\n const cardStyle = resolvedBg ? { backgroundColor: resolvedBg } : undefined;\n const textStyle: React.CSSProperties | undefined = resolvedText ? { color: resolvedText } : undefined;\n\n const visibleStats = (stats ?? []).filter((s) => Boolean(s?.value?.trim()));\n\n return (\n <section className={`flex items-center justify-center px-1 py-4 ${className}`.trim()}>\n <div\n className={`w-full max-w-[300px] overflow-hidden rounded-[24px] shadow-2xl shadow-black/25 ${cardBg} ${cardRing}`.trim()}\n style={cardStyle}\n >\n {/* ── Photo ──────────────────────────────────────────────────────── */}\n <div className=\"relative w-full\" style={{ aspectRatio: aspect }}>\n {src ? (\n <img\n src={src}\n alt={image_alt || name || 'Profile'}\n className={`absolute inset-0 h-full w-full ${\n image_fit === 'Contain' ? 'object-contain' : 'object-cover'\n }`}\n loading=\"lazy\"\n />\n ) : (\n <div\n className={`absolute inset-0 grid place-items-center text-xs ${\n 'bg-[#3a3a3d] text-neutral-500'\n }`}\n >\n No image\n </div>\n )}\n\n {image_fade && (\n <div\n aria-hidden\n className=\"absolute inset-x-0 bottom-0 h-1/3\"\n style={{\n backgroundImage: `linear-gradient(to top, ${\n resolvedBg || '#2b2b2d'\n } 0%, transparent 100%)`,\n }}\n />\n )}\n </div>\n\n {/* ── Body ───────────────────────────────────────────────────────── */}\n <div className=\"px-5 pb-5 pt-1\">\n <div className=\"flex items-center gap-2\">\n {name && (\n <a\n href={href || '#'}\n className={`truncate text-[21px] font-bold leading-tight hover:underline ${nameColor}`}\n style={textStyle}\n title={name}\n >\n {name}\n </a>\n )}\n {verified && (\n <span\n className=\"grid h-[18px] w-[18px] shrink-0 place-items-center rounded-full\"\n style={{ backgroundColor: accent }}\n title=\"Verified\"\n aria-label=\"Verified\"\n role=\"img\"\n >\n <CheckIcon className=\"h-3 w-3 text-white\" strokeWidth={3} />\n </span>\n )}\n </div>\n\n {bio && <p className={`mt-2 text-[13px] leading-snug ${bioColor}`}>{bio}</p>}\n\n <div className=\"mt-5 flex items-center gap-4\">\n {visibleStats.map((stat, i) => {\n const Icon = STAT_ICONS[stat.icon as string] ?? UserIcon;\n return (\n <span key={`${stat.icon}-${i}`} className={`flex items-center gap-1.5 text-[13px] ${statColor}`}>\n <Icon className=\"h-[15px] w-[15px]\" />\n {stat.value}\n </span>\n );\n })}\n\n {cta_label && (\n <a\n href={cta_url || '#'}\n onClick={(e) => { e.preventDefault(); setFollowing((v) => !v); }}\n role=\"button\"\n aria-pressed={following}\n className={`ml-auto shrink-0 rounded-full px-4 py-2 text-[13px] font-medium transition-transform duration-150 active:scale-95 ${btnClass}`}\n >\n {following ? cta_label_active || cta_label : cta_label}\n </a>\n )}\n </div>\n </div>\n </div>\n </section>\n );\n}\n\nexport default ProfileCard;\n","import React, { useEffect, useState } from 'react';\nimport { resolveStackableColor, hexToRgba } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface FlipCardLink {\n title?: string;\n href?: string;\n}\n\nexport interface FlipCardImage {\n file?: string | { url?: string };\n alt_text?: string;\n}\n\nexport interface FlipCardProps {\n /** Shown on the front. */\n image?: FlipCardImage;\n /** Shown on both the front and the back — a name, a feature title, a plan name,\n * whatever this card is actually about. */\n heading?: string;\n /** Shown on the front only, under Heading — a role, a tag, a short label. */\n subheading?: string;\n /** Shown on the back only, once flipped — a bio, an explanation, more detail. */\n description?: string;\n /** Shown on the back only, once flipped. */\n link?: FlipCardLink;\n /** `hover` flips on mouse-over (click/keyboard still work as a touch fallback);\n * `click` only flips on click/Enter/Space. */\n flip_trigger?: 'hover' | 'click' | string;\n /** Used on both the front and the back, so the flip reads as one object turning\n * over rather than two differently-coloured cards. */\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n /** The flip icon and the back-card link. */\n accent_color?: StackableColorValue;\n className?: string;\n}\n\nfunction prefersReducedMotion(): boolean {\n return typeof window !== 'undefined' && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n}\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveAsset(asset: string | { url?: string } | undefined): string {\n if (!asset) return '';\n if (typeof asset === 'string') return asset.trim();\n return typeof asset.url === 'string' ? asset.url.trim() : '';\n}\n\nfunction FlipIcon({ className }: { className?: string }) {\n return (\n <svg viewBox=\"0 0 24 24\" className={className} fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M17 2.1 21 6l-4 3.9M3 12v-2a4 4 0 0 1 4-4h14M7 21.9 3 18l4-3.9M21 12v2a4 4 0 0 1-4 4H3\" />\n </svg>\n );\n}\n\nfunction LinkIcon({ className }: { className?: string }) {\n return (\n <svg viewBox=\"0 0 24 24\" className={className} fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M7 17 17 7M8 7h9v9\" />\n </svg>\n );\n}\n\nfunction FlipHint({ accent }: { accent: string }) {\n return (\n <div\n className=\"flex h-8 w-8 shrink-0 items-center justify-center rounded-full\"\n style={{ backgroundColor: hexToRgba(accent, 0.12), color: accent }}\n >\n <FlipIcon className=\"h-4 w-4\" />\n </div>\n );\n}\n\nexport function FlipCard({\n image,\n heading = '',\n subheading = '',\n description = '',\n link,\n flip_trigger = 'hover',\n background_color,\n text_color,\n accent_color,\n className = '',\n}: FlipCardProps) {\n const [flipped, setFlipped] = useState(false);\n const [reduceMotion, setReduceMotion] = useState(false);\n useEffect(() => setReduceMotion(prefersReducedMotion()), []);\n\n const isHoverMode = flip_trigger === 'hover';\n const imageSrc = resolveAsset(image?.file);\n const imageAlt = image?.alt_text || '';\n\n const resolvedCard = resolveStackableColor(background_color) || '#ffffff';\n const resolvedText = resolveStackableColor(text_color) || '#0f172a';\n const resolvedAccent = resolveStackableColor(accent_color) || '#6366f1';\n\n if (!heading && !subheading && !imageSrc) return null;\n\n return (\n <section className={`flex items-center justify-center px-1 py-4 ${className}`.trim()}>\n <div\n // A fixed width rather than `w-full` — every child here is `absolute`, so the\n // card has no intrinsic size of its own, and `w-full` inside a shrink-to-fit\n // flex/centering wrapper (no definite width to be a percentage of) collapses\n // to 0 instead of 100%. A concrete px value sidesteps that regardless of what\n // context the card gets dropped into.\n className=\"relative aspect-[3/4] w-[280px] max-w-full\"\n style={{ perspective: '1200px' }}\n onMouseEnter={isHoverMode ? () => setFlipped(true) : undefined}\n onMouseLeave={isHoverMode ? () => setFlipped(false) : undefined}\n >\n <button\n type=\"button\"\n aria-pressed={flipped}\n aria-label={`${flipped ? 'Show front of' : 'Show more about'} ${heading || 'this card'}`}\n onClick={() => setFlipped((f) => !f)}\n className=\"relative block h-full w-full cursor-pointer border-0 bg-transparent p-0 text-left\"\n style={{\n transformStyle: 'preserve-3d',\n transform: flipped ? 'rotateY(180deg)' : 'none',\n transition: reduceMotion ? 'none' : 'transform 0.6s cubic-bezier(0.4,0.2,0.2,1)',\n }}\n >\n {/* Front */}\n <div\n className=\"absolute inset-0 flex flex-col overflow-hidden rounded-[24px] shadow-2xl shadow-black/20 ring-1 ring-black/5\"\n style={{ backgroundColor: resolvedCard, backfaceVisibility: 'hidden' }}\n >\n {imageSrc ? (\n <div className=\"relative flex-1 overflow-hidden\">\n <img src={imageSrc} alt={imageAlt || heading || ''} className=\"h-full w-full object-cover\" />\n </div>\n ) : (\n <div className=\"flex-1\" />\n )}\n <div className=\"flex items-end justify-between gap-3 p-4\">\n <div className=\"min-w-0\">\n {heading && (\n <p className=\"truncate text-base font-bold\" style={{ color: resolvedText }}>\n {heading}\n </p>\n )}\n {subheading && (\n <p className=\"mt-0.5 truncate text-sm\" style={{ color: hexToRgba(resolvedText, 0.6) }}>\n {subheading}\n </p>\n )}\n </div>\n <FlipHint accent={resolvedAccent} />\n </div>\n </div>\n\n {/* Back — same background_color/text_color as the front, so the flip reads\n as one card turning over rather than two differently-styled surfaces. */}\n <div\n className=\"absolute inset-0 flex flex-col justify-between overflow-hidden rounded-[24px] p-5 shadow-2xl shadow-black/20 ring-1 ring-black/5\"\n style={{\n backgroundColor: resolvedCard,\n backfaceVisibility: 'hidden',\n transform: 'rotateY(180deg)',\n }}\n >\n <div>\n {heading && (\n <p className=\"text-base font-bold\" style={{ color: resolvedText }}>\n {heading}\n </p>\n )}\n {description && (\n <p className=\"mt-2 text-sm leading-relaxed\" style={{ color: hexToRgba(resolvedText, 0.7) }}>\n {description}\n </p>\n )}\n </div>\n <div className=\"flex items-end justify-between gap-3\">\n {link?.href && link?.title ? (\n <span className=\"inline-flex items-center gap-1.5 text-sm font-semibold\" style={{ color: resolvedAccent }}>\n {link.title}\n <LinkIcon className=\"h-3.5 w-3.5\" />\n </span>\n ) : (\n <span />\n )}\n <FlipHint accent={resolvedAccent} />\n </div>\n </div>\n </button>\n </div>\n </section>\n );\n}\n\nexport default FlipCard;\n","import React, { useEffect, useState } from 'react';\nimport { resolveStackableColor, hexToRgba } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface CardAccordionLink {\n title?: string;\n href?: string;\n}\n\nexport interface CardAccordionItem {\n /** Top-left pill, e.g. \"Skincare\". */\n tag?: string;\n /** Shown only while this card is the expanded one. */\n image?: string | { url?: string };\n image_alt?: string;\n /** Body copy, shown only while this card is the expanded one. */\n heading?: string;\n /** Bottom-left label — always visible, expanded or collapsed. */\n caption?: string;\n /** The arrow button's destination; `title` becomes its accessible label. */\n link?: CardAccordionLink;\n /** Collapsed-state surface colour for this card. Ignored while expanded, where\n * the image takes over (or, with no image, this colour shows through instead). */\n card_color?: StackableColorValue;\n text_color?: StackableColorValue;\n}\n\nexport interface CardAccordionProps {\n heading?: string;\n description?: string;\n /** Up to three — a fourth would leave collapsed panels too narrow to read. */\n items?: CardAccordionItem[];\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n /** The arrow button's icon and background tint. */\n accent_color?: StackableColorValue;\n className?: string;\n}\n\nconst MAX_ITEMS = 3;\n/** Cycled when an item doesn't set its own card_color/text_color. */\nconst DEFAULT_PALETTE = [\n { card: '#eab308', text: '#171717' },\n { card: '#71717a', text: '#ffffff' },\n { card: '#18181b', text: '#ffffff' },\n];\n\nfunction prefersReducedMotion(): boolean {\n return typeof window !== 'undefined' && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n}\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveAsset(asset: string | { url?: string } | undefined): string {\n if (!asset) return '';\n if (typeof asset === 'string') return asset.trim();\n return typeof asset.url === 'string' ? asset.url.trim() : '';\n}\n\nfunction ArrowIcon({ className }: { className?: string }) {\n return (\n <svg viewBox=\"0 0 24 24\" className={className} fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M7 17 17 7M8 7h9v9\" />\n </svg>\n );\n}\n\nexport function CardAccordion({\n heading = '',\n description = '',\n items = [],\n background_color,\n text_color,\n accent_color,\n className = '',\n}: CardAccordionProps) {\n const [activeIndex, setActiveIndex] = useState(0);\n const [reduceMotion, setReduceMotion] = useState(false);\n useEffect(() => setReduceMotion(prefersReducedMotion()), []);\n\n const visibleItems = (items ?? [])\n .filter((item) => item?.heading?.trim() || item?.tag?.trim() || item?.caption?.trim())\n .slice(0, MAX_ITEMS);\n\n const resolvedBg = resolveStackableColor(background_color) || '#0a0a0a';\n const resolvedText = resolveStackableColor(text_color) || '#f5f5f5';\n const resolvedAccent = resolveStackableColor(accent_color) || '#f5f5f5';\n\n const safeActive = Math.min(activeIndex, visibleItems.length - 1);\n\n if (visibleItems.length === 0) return null;\n\n return (\n <section className={`${className}`.trim()} style={{ backgroundColor: resolvedBg }}>\n <div className=\"component-container mx-auto px-6 py-16 sm:py-24\">\n {(heading || description) && (\n <div className=\"mb-10 grid grid-cols-1 gap-6 sm:grid-cols-2 sm:items-end lg:mb-14\">\n {heading && (\n <h2 className=\"text-3xl font-bold tracking-tight sm:text-4xl\" style={{ color: resolvedText }}>\n {heading}\n </h2>\n )}\n {description && (\n <p className=\"text-sm leading-relaxed sm:text-base\" style={{ color: hexToRgba(resolvedText, 0.65) }}>\n {description}\n </p>\n )}\n </div>\n )}\n\n <div\n className=\"flex h-[560px] flex-col gap-3 sm:h-[440px] sm:flex-row\"\n onMouseLeave={() => setActiveIndex(0)}\n >\n {visibleItems.map((item, i) => {\n const isActive = i === safeActive;\n const palette = DEFAULT_PALETTE[i % DEFAULT_PALETTE.length];\n const cardColor = resolveStackableColor(item.card_color) || palette.card;\n const cardText = resolveStackableColor(item.text_color) || palette.text;\n const imageSrc = resolveAsset(item.image);\n const showImage = isActive && imageSrc;\n\n return (\n <div\n key={i}\n role=\"button\"\n tabIndex={0}\n aria-pressed={isActive}\n aria-label={`Expand ${item.tag || item.caption || `card ${i + 1}`}`}\n onMouseEnter={() => setActiveIndex(i)}\n onClick={() => setActiveIndex(i)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n setActiveIndex(i);\n }\n }}\n className=\"relative cursor-pointer overflow-hidden rounded-2xl\"\n style={{\n flexGrow: isActive ? 3 : 1,\n flexShrink: 1,\n flexBasis: 0,\n minHeight: 0,\n minWidth: 0,\n backgroundColor: showImage ? undefined : cardColor,\n transition: reduceMotion ? 'none' : 'flex-grow 0.5s cubic-bezier(0.22,1,0.36,1)',\n }}\n >\n {showImage && (\n <>\n <img\n src={imageSrc}\n alt={item.image_alt || item.heading || ''}\n className=\"absolute inset-0 h-full w-full object-cover\"\n />\n <div\n aria-hidden=\"true\"\n className=\"absolute inset-0\"\n style={{ background: 'linear-gradient(to top, rgba(0,0,0,0.75) 0%, rgba(0,0,0,0.1) 55%, transparent 75%)' }}\n />\n </>\n )}\n\n <div className=\"relative flex h-full flex-col justify-between p-5\">\n {item.tag && (\n <span\n className=\"inline-flex w-fit items-center rounded-full px-3 py-1 text-[11px] font-semibold uppercase tracking-wide\"\n style={{\n backgroundColor: hexToRgba(showImage ? '#ffffff' : cardText, showImage ? 0.9 : 0.14),\n color: showImage ? '#111111' : cardText,\n }}\n >\n {item.tag}\n </span>\n )}\n\n {!isActive && (\n <span\n className=\"flex flex-1 items-center justify-center text-6xl font-bold sm:text-7xl\"\n style={{ color: hexToRgba(cardText, 0.9) }}\n aria-hidden=\"true\"\n >\n {i + 1}\n </span>\n )}\n\n {isActive && item.heading && (\n <p\n className=\"max-w-sm text-base font-medium leading-snug sm:text-lg\"\n style={{ color: showImage ? '#ffffff' : cardText }}\n >\n {item.heading}\n </p>\n )}\n\n <div className=\"flex items-end justify-between gap-3\">\n {item.caption ? (\n <span\n className=\"truncate text-[11px] font-semibold uppercase tracking-wide\"\n style={{ color: hexToRgba(showImage ? '#ffffff' : cardText, 0.75) }}\n >\n {item.caption}\n </span>\n ) : (\n <span />\n )}\n {item.link?.href && (\n <a\n href={item.link.href}\n aria-label={item.link.title || item.tag || 'View more'}\n onClick={(e) => e.stopPropagation()}\n className=\"flex h-9 w-9 shrink-0 items-center justify-center rounded-full transition-transform hover:scale-105\"\n style={{ backgroundColor: resolvedAccent, color: resolvedBg }}\n >\n <ArrowIcon className=\"h-4 w-4\" />\n </a>\n )}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </section>\n );\n}\n\nexport default CardAccordion;\n","import React, { useEffect, useRef, useState } from 'react';\nimport {\n ComputerDesktopIcon,\n DevicePhoneMobileIcon,\n DeviceTabletIcon,\n ArrowPathIcon,\n CloudIcon,\n CheckCircleIcon,\n StarIcon,\n BoltIcon,\n ShieldCheckIcon,\n ChartBarIcon,\n RocketLaunchIcon,\n GlobeAltIcon,\n LockClosedIcon,\n HeartIcon,\n Cog6ToothIcon,\n SparklesIcon,\n BellIcon,\n UserGroupIcon,\n} from '@heroicons/react/24/outline';\nimport { resolveStackableColor, hexToRgba } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface BentoCellLink {\n title?: string;\n href?: string;\n}\n\nexport interface BentoCell {\n type?: 'text' | 'image' | 'stat' | string;\n size?: 'small' | 'medium' | 'wide' | 'tall' | 'large' | string;\n heading?: string;\n description?: string;\n /** Recognized icon keyword (see ICON_MAP), an image URL, or a Contentstack asset object. */\n image?: string | { url?: string };\n badge_text?: string;\n stat_value?: string;\n stat_label?: string;\n content_align?: 'left' | 'center' | string;\n background_color?: StackableColorValue;\n links?: BentoCellLink[];\n}\n\nexport interface BentoGridProps {\n eyebrow_text?: string;\n heading?: string;\n subheading?: string;\n cells?: BentoCell[];\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n accent_color?: StackableColorValue;\n className?: string;\n}\n\n// Recognized `image` keys, resolved to a bundled vector icon. Any other non-empty\n// string (or asset object) is treated as an image URL and rendered with <img>.\nconst ICON_MAP: Record<string, React.ComponentType<React.SVGProps<SVGSVGElement>>> = {\n laptop: ComputerDesktopIcon,\n desktop: ComputerDesktopIcon,\n computer: ComputerDesktopIcon,\n mobile: DevicePhoneMobileIcon,\n phone: DevicePhoneMobileIcon,\n tablet: DeviceTabletIcon,\n sync: ArrowPathIcon,\n refresh: ArrowPathIcon,\n cloud: CloudIcon,\n check: CheckCircleIcon,\n star: StarIcon,\n bolt: BoltIcon,\n speed: BoltIcon,\n shield: ShieldCheckIcon,\n security: ShieldCheckIcon,\n chart: ChartBarIcon,\n analytics: ChartBarIcon,\n rocket: RocketLaunchIcon,\n launch: RocketLaunchIcon,\n globe: GlobeAltIcon,\n lock: LockClosedIcon,\n heart: HeartIcon,\n gear: Cog6ToothIcon,\n settings: Cog6ToothIcon,\n sparkles: SparklesIcon,\n ai: SparklesIcon,\n bell: BellIcon,\n notifications: BellIcon,\n team: UserGroupIcon,\n users: UserGroupIcon,\n};\n\n// Column span/row span per size, expressed against a 4-column desktop grid.\nconst SIZE_SPANS: Record<string, { col: number; row: number }> = {\n small: { col: 1, row: 1 },\n medium: { col: 2, row: 1 },\n wide: { col: 4, row: 1 },\n tall: { col: 1, row: 2 },\n large: { col: 2, row: 2 },\n};\n\n// Below these measured container widths the grid drops to 2, then 1, columns.\n// Measured via ResizeObserver (not CSS media queries) so it responds to the\n// component's actual box, not the browser viewport — the storybook preview\n// simulates width with a fixed-px wrapper, which media queries can't see.\nconst TABLET_BREAKPOINT = 1024;\nconst MOBILE_BREAKPOINT = 640;\n\nconst DEFAULT_CELLS: BentoCell[] = [\n {\n type: 'text',\n size: 'large',\n image: 'laptop',\n heading: 'Desktop builds in minutes',\n description: 'Ship faster with instant previews and seamless deployment pipelines.',\n content_align: 'center',\n },\n {\n type: 'text',\n size: 'small',\n badge_text: 'Waiting',\n heading: 'Everything in sync',\n description: 'Real-time sync across devices.',\n content_align: 'left',\n },\n {\n type: 'text',\n size: 'small',\n image: 'mobile',\n heading: 'Mobile compatible, everywhere',\n description: 'Responsive by default. Works on every device.',\n content_align: 'center',\n },\n {\n type: 'text',\n size: 'large',\n image: 'tablet',\n heading: 'Tablet ready, always',\n description: 'Optimized layouts for tablets and large screens out of the box.',\n content_align: 'center',\n },\n];\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveImageUrl(image: BentoCell['image']): string {\n if (!image) return '';\n if (typeof image === 'string') return image.trim();\n return typeof image.url === 'string' ? image.url.trim() : '';\n}\n\nfunction resolveIcon(image: BentoCell['image']) {\n if (typeof image !== 'string') return null;\n return ICON_MAP[image.trim().toLowerCase()] ?? null;\n}\n\nexport function BentoGrid({\n eyebrow_text = '',\n heading = '',\n subheading = '',\n cells = DEFAULT_CELLS,\n background_color,\n text_color,\n accent_color,\n className = '',\n}: BentoGridProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const [containerWidth, setContainerWidth] = useState(0);\n\n useEffect(() => {\n const el = containerRef.current;\n if (!el) return;\n const ro = new ResizeObserver(([entry]) => setContainerWidth(entry.contentRect.width));\n ro.observe(el);\n return () => ro.disconnect();\n }, []);\n\n const columns = containerWidth === 0 ? 4 : containerWidth < MOBILE_BREAKPOINT ? 1 : containerWidth < TABLET_BREAKPOINT ? 2 : 4;\n\n const sectionThemeClasses = 'bg-white';\n const headingColorClasses = 'text-gray-900';\n const subColorClasses = 'text-gray-600';\n const cardThemeClasses = 'bg-gray-50 border border-gray-200';\n const cardHeadingClasses = 'text-gray-900';\n const cardDescClasses = 'text-gray-600';\n const iconClasses = 'text-gray-400';\n const badgeClasses = 'bg-white border border-gray-200 text-gray-600 shadow-sm';\n\n const resolvedBg = resolveStackableColor(background_color);\n const resolvedText = resolveStackableColor(text_color);\n const resolvedAccent = resolveStackableColor(accent_color) || '#BA68C8';\n const sectionStyle = resolvedBg ? { backgroundColor: resolvedBg } : undefined;\n const textStyle: React.CSSProperties | undefined = resolvedText ? { color: resolvedText } : undefined;\n // The subheading and every cell's heading/description/stat label each carry their\n // own theme-based text-color class, which wins over a color merely inherited from\n // an ancestor — so a custom text_color has to be applied directly on those\n // elements too, not just on the section heading that already sets it inline.\n const mutedTextStyle: React.CSSProperties | undefined = resolvedText ? { color: hexToRgba(resolvedText, 0.65) } : undefined;\n\n const visibleCells = (cells ?? []).filter((c) => Boolean(c?.heading?.trim()) || Boolean(c?.stat_value?.trim()));\n\n return (\n <section className={`${sectionThemeClasses} ${className}`.trim()} style={sectionStyle}>\n <div className=\"component-container mx-auto px-6 py-16 lg:py-24\">\n {(eyebrow_text || heading || subheading) && (\n <div className=\"mx-auto mb-12 max-w-2xl text-center lg:mb-16\">\n {eyebrow_text && (\n <span\n className=\"text-[11px] font-medium uppercase tracking-[0.25em]\"\n style={{ color: resolvedAccent }}\n >\n {eyebrow_text}\n </span>\n )}\n {heading && (\n <h2 className={`mt-3 text-3xl font-bold tracking-tight sm:text-4xl ${headingColorClasses}`} style={textStyle}>\n {heading}\n </h2>\n )}\n {subheading && <p className={`mt-4 text-base leading-relaxed ${subColorClasses}`} style={mutedTextStyle}>{subheading}</p>}\n </div>\n )}\n\n <div\n ref={containerRef}\n className=\"grid gap-5\"\n style={{ gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))`, gridAutoRows: 'minmax(220px, auto)', gridAutoFlow: 'dense' }}\n >\n {visibleCells.length === 0 ? (\n <p className={`text-sm ${subColorClasses}`} style={mutedTextStyle}>No cells added yet.</p>\n ) : (\n visibleCells.map((cell, i) => {\n const spans = SIZE_SPANS[cell.size ?? 'medium'] ?? SIZE_SPANS.medium;\n const colSpan = Math.min(spans.col, columns);\n const align = cell.content_align === 'left' ? 'items-start text-left' : 'items-center text-center';\n const Icon = resolveIcon(cell.image);\n const imageSrc = !Icon ? resolveImageUrl(cell.image) : '';\n const hasVisual = Boolean(Icon || imageSrc);\n const cellBg = resolveStackableColor(cell.background_color);\n const visibleLinks = (cell.links ?? []).filter((l) => Boolean(l?.href));\n\n return (\n <div\n key={i}\n className={`flex flex-col rounded-3xl p-8 ${cellBg ? '' : cardThemeClasses}`}\n style={{\n gridColumn: `span ${colSpan}`,\n gridRow: `span ${spans.row}`,\n backgroundColor: cellBg || undefined,\n }}\n >\n {cell.badge_text && (\n <span\n className={`inline-flex w-fit items-center gap-2 rounded-full px-4 py-1.5 text-sm ${badgeClasses} ${\n cell.content_align === 'left' ? 'self-start' : 'self-center'\n }`}\n >\n <span className=\"h-2 w-2 rounded-full bg-current opacity-60\" aria-hidden />\n {cell.badge_text}\n </span>\n )}\n\n {cell.type === 'stat' ? (\n <div className={`flex flex-1 flex-col justify-center gap-2 ${align}`}>\n <p className={`text-4xl font-bold sm:text-5xl ${cardHeadingClasses}`} style={{ color: resolvedAccent }}>\n {cell.stat_value || '0'}\n </p>\n {cell.stat_label && <p className={`text-sm font-medium ${cardDescClasses}`} style={mutedTextStyle}>{cell.stat_label}</p>}\n {cell.description && <p className={`text-sm ${cardDescClasses}`} style={mutedTextStyle}>{cell.description}</p>}\n </div>\n ) : (\n <div className={`flex flex-1 flex-col gap-4 ${align} ${hasVisual ? 'justify-center' : 'justify-end'}`}>\n {Icon && <Icon className={`h-10 w-10 sm:h-12 sm:w-12 ${iconClasses}`} />}\n {!Icon && imageSrc && (\n <img\n src={imageSrc}\n alt={cell.heading || ''}\n className={\n cell.type === 'image'\n ? 'h-36 w-full rounded-2xl object-cover sm:h-44'\n : 'h-10 w-10 object-contain sm:h-12 sm:w-12'\n }\n />\n )}\n {cell.heading && <h3 className={`text-xl font-semibold ${cardHeadingClasses}`} style={textStyle}>{cell.heading}</h3>}\n {cell.description && <p className={`text-sm leading-relaxed ${cardDescClasses}`} style={mutedTextStyle}>{cell.description}</p>}\n {visibleLinks.length > 0 && (\n <div className={`flex flex-wrap gap-4 ${cell.content_align === 'left' ? 'justify-start' : 'justify-center'}`}>\n {visibleLinks.map((linkItem, li) => (\n <a\n key={li}\n href={linkItem.href}\n className=\"text-sm font-semibold no-underline hover:underline\"\n style={{ color: resolvedAccent }}\n >\n {linkItem.title || linkItem.href}\n </a>\n ))}\n </div>\n )}\n </div>\n )}\n </div>\n );\n })\n )}\n </div>\n </div>\n </section>\n );\n}\n\nexport default BentoGrid;\n","/* eslint-disable @next/next/no-img-element */\nimport React from 'react';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\n/** Native Contentstack link field: `{ title, href }`. */\nexport interface IndexSectionLink {\n title?: string;\n href?: string;\n}\n\nexport interface IndexSectionItem {\n /** Shown large behind/above the image. Falls back to the row's position, zero-padded. */\n number?: string;\n title?: string;\n /** Small line under the title — a page range, date, or category. */\n caption?: string;\n /** Asset URL, or a Contentstack asset object — both are accepted. */\n image?: string | { url?: string };\n image_alt?: string;\n link?: IndexSectionLink;\n}\n\nexport interface IndexSectionProps {\n heading?: string;\n heading_alignment?: 'left' | 'center' | 'right' | string;\n items?: IndexSectionItem[];\n /** Panels per row at wide widths; wraps below that. */\n columns?: number;\n image_aspect_ratio?: 'Portrait' | 'Square' | 'Landscape' | string;\n /** Small centred credit line under the row. */\n footer_text?: string;\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n /** Colour of the large index numerals. */\n accent_color?: StackableColorValue;\n className?: string;\n}\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveImage(image: IndexSectionItem['image']): string {\n if (!image) return '';\n if (typeof image === 'string') return image.trim();\n return typeof image.url === 'string' ? image.url.trim() : '';\n}\n\nconst ASPECT_RATIOS: Record<string, string> = {\n Portrait: '1 / 2',\n Square: '1 / 1',\n Landscape: '4 / 3',\n};\n\nconst ALIGNMENTS: Record<string, string> = {\n left: 'text-left items-start',\n center: 'text-center items-center',\n right: 'text-right items-end',\n};\n\nconst GAP_PX = 8;\n\n/**\n * Oversized numerals and the section title share a display face. Orbitron is\n * already loaded by the library stylesheet; a host can override the whole stack\n * via `--stackables-font-display`. Same shape as `StatCounterRow`'s stat font.\n */\nconst DISPLAY_FONT = 'var(--stackables-font-display, \"Orbitron\", \"Arial Narrow\", sans-serif)';\n\nexport function IndexSection({\n heading = 'Summary',\n heading_alignment = 'center',\n items = [],\n columns = 5,\n image_aspect_ratio = 'Portrait',\n footer_text = '',\n background_color,\n text_color,\n accent_color,\n className = '',\n}: IndexSectionProps) {\n const resolvedBg = resolveStackableColor(background_color);\n const resolvedText = resolveStackableColor(text_color);\n const resolvedAccent = resolveStackableColor(accent_color);\n\n const sectionClasses = 'bg-gray-100';\n\n const headingClasses = 'text-gray-900';\n\n const panelClasses = 'bg-gray-200';\n\n // Numerals sit on top of the photo, so the scrim below them is what\n // guarantees contrast rather than the surrounding surface.\n const numberClasses = 'text-white/85';\n\n const titleClasses = 'text-gray-900';\n\n // One shade stronger than looks \"right\" by eye: at 11px the lighter greys\n // (neutral-500 / gray-500) measure 4.18 and 4.39 against these backgrounds,\n // both under the 4.5 WCAG AA threshold. These land at 7.85 and 6.87.\n const captionClasses = 'text-gray-600';\n\n const ruleClasses = 'bg-gray-400';\n\n const alignClass = ALIGNMENTS[heading_alignment] ?? ALIGNMENTS.center;\n const aspect = ASPECT_RATIOS[image_aspect_ratio] ?? ASPECT_RATIOS.Portrait;\n\n // Clamped so bad content can't produce 0 or 40 panels per row.\n const safeColumns = Math.max(1, Math.min(8, Math.round(columns) || 5));\n // flex-basis + wrap keeps this responsive without viewport breakpoints: panels\n // hold their share at wide widths and wrap once minWidth can't be satisfied.\n const basis = `calc((100% - ${(safeColumns - 1) * GAP_PX}px) / ${safeColumns})`;\n\n const visibleItems = (items ?? []).filter(\n (i) => Boolean(resolveImage(i?.image)) || Boolean(i?.title?.trim()) || Boolean(i?.number?.trim()),\n );\n\n return (\n <section\n className={`${sectionClasses} ${className}`.trim()}\n style={resolvedBg ? { backgroundColor: resolvedBg } : undefined}\n >\n <div className=\"component-container mx-auto px-6 py-14 lg:py-20\">\n {/* ── Heading ────────────────────────────────────────────────────── */}\n {heading && (\n <div className={`flex flex-col ${alignClass} mb-12 lg:mb-16`}>\n <h2\n className={`font-bold uppercase leading-none tracking-[0.08em] ${headingClasses}`}\n style={{\n fontFamily: DISPLAY_FONT,\n fontSize: 'clamp(2rem, 6.5vw, 4.5rem)',\n ...(resolvedText ? { color: resolvedText } : {}),\n }}\n >\n {heading}\n </h2>\n </div>\n )}\n\n {/* ── Index panels ───────────────────────────────────────────────── */}\n {visibleItems.length === 0 ? (\n <p className={`text-sm ${captionClasses}`}>No index items added yet.</p>\n ) : (\n <ul className=\"flex list-none flex-wrap justify-center p-0\" style={{ gap: `${GAP_PX}px` }}>\n {visibleItems.map((item, i) => {\n const src = resolveImage(item.image);\n const numeral = item.number?.trim() || String(i + 1).padStart(2, '0');\n const href = item.link?.href?.trim();\n\n const panel = (\n <>\n <div\n className={`relative w-full overflow-hidden ${panelClasses}`}\n style={{ aspectRatio: aspect }}\n >\n {src && (\n <img\n src={src}\n alt={item.image_alt || item.title || ''}\n className=\"absolute inset-0 h-full w-full object-cover\"\n loading=\"lazy\"\n />\n )}\n\n {/* Keeps the numeral legible whatever the photo underneath is doing. */}\n <div\n aria-hidden\n className=\"absolute inset-x-0 top-0 h-1/3\"\n style={{\n backgroundImage:\n 'linear-gradient(to bottom, rgba(0,0,0,0.55) 0%, rgba(0,0,0,0.15) 60%, rgba(0,0,0,0) 100%)',\n }}\n />\n\n <span\n aria-hidden\n className={`absolute left-[6%] top-[3%] leading-none ${\n resolvedAccent ? '' : numberClasses\n }`}\n style={{\n fontFamily: DISPLAY_FONT,\n fontWeight: 500,\n letterSpacing: '0.02em',\n fontSize: 'clamp(1.75rem, 4.5vw, 3.5rem)',\n ...(resolvedAccent ? { color: resolvedAccent } : {}),\n }}\n >\n {numeral}\n </span>\n </div>\n\n <div className=\"mt-5 flex flex-col items-center gap-2\">\n {item.title && (\n <p\n className={`text-[13px] font-medium uppercase tracking-[0.18em] ${titleClasses}`}\n style={resolvedText ? { color: resolvedText } : undefined}\n >\n {item.title}\n </p>\n )}\n\n {item.caption && (\n <div className=\"flex w-full items-center justify-center gap-2\">\n <span aria-hidden className={`h-px flex-1 max-w-6 ${ruleClasses}`} />\n <span className={`text-[11px] tracking-wide ${captionClasses}`}>{item.caption}</span>\n <span aria-hidden className={`h-px flex-1 max-w-6 ${ruleClasses}`} />\n </div>\n )}\n </div>\n </>\n );\n\n return (\n <li\n key={`${numeral}-${i}`}\n className=\"min-w-[130px] flex-auto\"\n style={{ flexBasis: basis }}\n >\n {href ? (\n <a\n href={href}\n className=\"block transition-opacity duration-200 hover:opacity-80\"\n title={item.link?.title || item.title}\n >\n {panel}\n </a>\n ) : (\n panel\n )}\n </li>\n );\n })}\n </ul>\n )}\n\n {/* ── Footer credit ──────────────────────────────────────────────── */}\n {footer_text && (\n <p className={`mt-14 whitespace-pre-line text-center text-[11px] tracking-wide ${captionClasses}`}>\n {footer_text}\n </p>\n )}\n </div>\n </section>\n );\n}\n\nexport default IndexSection;\n","/* eslint-disable @next/next/no-img-element */\nimport React, { useEffect, useRef, useState } from 'react';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\n/** Native Contentstack link field: `{ title, href }`. */\nexport interface HexTileGridLink {\n title?: string;\n href?: string;\n}\n\nexport interface HexTileGridTile {\n /** Caption over the image, e.g. `ATHLETES`. */\n label?: string;\n /** Asset URL, or a Contentstack asset object — both are accepted. */\n image?: string | { url?: string };\n image_alt?: string;\n /** `title` becomes the button text; falls back to the section's CTA label. */\n link?: HexTileGridLink;\n}\n\nexport interface HexTileGridProps {\n heading?: string;\n subheading?: string;\n heading_alignment?: 'left' | 'center' | 'right' | string;\n tiles?: HexTileGridTile[];\n /** Tiles in a full row. Short rows hold one fewer, which is what interlocks them. */\n columns?: number;\n tile_size?: 'Small' | 'Medium' | 'Large' | string;\n /** The reference art is heavily desaturated; `Muted` reproduces that. */\n image_treatment?: 'None' | 'Muted' | 'Grayscale' | string;\n show_cta?: boolean;\n /** Used when a tile's link has no title of its own. */\n cta_label?: string;\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n /** Tile label and the CTA outline. */\n accent_color?: StackableColorValue;\n className?: string;\n}\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveImage(image: HexTileGridTile['image']): string {\n if (!image) return '';\n if (typeof image === 'string') return image.trim();\n return typeof image.url === 'string' ? image.url.trim() : '';\n}\n\nconst ALIGNMENTS: Record<string, string> = {\n left: 'text-left items-start',\n center: 'text-center items-center',\n right: 'text-right items-end',\n};\n\n/**\n * Pointy-top hexagon: a vertex at the top and bottom, flat vertical sides left\n * and right. This is the orientation that tessellates into horizontal rows —\n * neighbours in a row meet along their vertical sides, and the next row's peak\n * rises into the notch between them.\n */\nconst HEX_CLIP = 'polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%)';\n\n/**\n * A regular pointy-top hexagon needs height = width·2/√3, so it stands taller\n * than it is wide. Pairing this ratio with a flat-top polygon (or vice versa) is\n * what makes tiles overlap instead of nesting.\n */\nconst HEX_ASPECT = 2 / Math.sqrt(3);\n\n/**\n * Rows advance by three quarters of a tile's height — the geometric spacing for\n * pointy-top hexagons. Their bounding boxes overlap by a quarter, but the\n * clipped shapes only ever touch.\n */\nconst ROW_ADVANCE = 0.75;\n\n/** Minimum comfortable tile width per size — this is what decides when to drop a column. */\nconst MIN_TILE_WIDTH: Record<string, number> = { Small: 150, Medium: 190, Large: 240 };\n\n/**\n * Target tile width per size. Tiles are capped at this rather than stretched to\n * fill the container, so `tile_size` actually controls scale and a wide\n * container gets a centred honeycomb instead of six enormous hexagons.\n */\nconst TARGET_TILE_WIDTH: Record<string, number> = { Small: 190, Medium: 250, Large: 330 };\n\n/** Below this the honeycomb is abandoned for a single stacked column. */\nconst STACK_BELOW_PX = 330;\n\nconst IMAGE_FILTERS: Record<string, string> = {\n None: 'none',\n Muted: 'saturate(0.3) contrast(0.95) brightness(1.06)',\n Grayscale: 'grayscale(1) contrast(1.02)',\n};\n\nconst GAP_PX = 6;\n\n/**\n * Splits tiles into alternating full and short rows. The short rows hold one\n * fewer tile and are centred, which offsets them by exactly half a tile — so\n * no explicit horizontal offset is needed anywhere.\n */\nfunction buildRows<T>(tiles: T[], columns: number): T[][] {\n if (columns < 2) return tiles.map((t) => [t]);\n const rows: T[][] = [];\n let i = 0;\n let full = true;\n while (i < tiles.length) {\n const take = full ? columns : columns - 1;\n rows.push(tiles.slice(i, i + take));\n i += take;\n full = !full;\n }\n return rows;\n}\n\nexport function HexTileGrid({\n heading = '',\n subheading = '',\n heading_alignment = 'center',\n tiles = [],\n columns = 3,\n tile_size = 'Medium',\n image_treatment = 'Muted',\n show_cta = true,\n cta_label = 'Learn more',\n background_color,\n text_color,\n accent_color,\n className = '',\n}: HexTileGridProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const [containerWidth, setContainerWidth] = useState(0);\n\n // Measured rather than a CSS media query, so it tracks the component's own\n // box — the storybook preview fakes width with a fixed-px wrapper that media\n // queries can't see. Same approach as BentoGrid.\n useEffect(() => {\n const el = containerRef.current;\n if (!el) return;\n const ro = new ResizeObserver(([entry]) => setContainerWidth(entry.contentRect.width));\n ro.observe(el);\n return () => ro.disconnect();\n }, []);\n\n const resolvedBg = resolveStackableColor(background_color);\n const resolvedText = resolveStackableColor(text_color);\n const resolvedAccent = resolveStackableColor(accent_color);\n\n const sectionClasses = 'bg-stone-100';\n\n const headingClasses = 'text-stone-900';\n\n const subheadingClasses = 'text-stone-600';\n\n const emptyClasses = subheadingClasses;\n\n // Tile text sits on photography, so it stays light and leans on the scrim for\n // contrast rather than on the surrounding surface.\n const tileTextClass = 'text-white';\n\n const alignClass = ALIGNMENTS[heading_alignment] ?? ALIGNMENTS.center;\n const filter = IMAGE_FILTERS[image_treatment] ?? IMAGE_FILTERS.Muted;\n const minTile = MIN_TILE_WIDTH[tile_size] ?? MIN_TILE_WIDTH.Medium;\n const targetTile = TARGET_TILE_WIDTH[tile_size] ?? TARGET_TILE_WIDTH.Medium;\n\n const visibleTiles = (tiles ?? []).filter(\n (t) => Boolean(resolveImage(t?.image)) || Boolean(t?.label?.trim()),\n );\n\n const safeColumns = Math.max(1, Math.min(8, Math.round(columns) || 3));\n\n // Before the first measurement, render at the authored column count so the\n // server-rendered markup matches what a wide container will settle on.\n const stacked = containerWidth > 0 && containerWidth < STACK_BELOW_PX;\n const fitColumns =\n containerWidth === 0\n ? safeColumns\n : Math.max(1, Math.min(safeColumns, Math.floor((containerWidth + GAP_PX) / (minTile + GAP_PX))));\n const effectiveColumns = stacked ? 1 : fitColumns;\n\n // Capped at the target, so the honeycomb sits centred in a wide container\n // rather than inflating to fill it.\n const availablePerTile =\n effectiveColumns < 2\n ? containerWidth\n : (containerWidth - (effectiveColumns - 1) * GAP_PX) / effectiveColumns;\n const tileWidth = containerWidth === 0 ? 0 : Math.min(targetTile, availablePerTile);\n const tileHeight = tileWidth * HEX_ASPECT;\n\n const rows = buildRows(visibleTiles, effectiveColumns);\n\n return (\n <section\n className={`${sectionClasses} ${className}`.trim()}\n style={resolvedBg ? { backgroundColor: resolvedBg } : undefined}\n >\n <div className=\"component-container mx-auto px-6 py-14 lg:py-20\">\n {/* ── Section heading ────────────────────────────────────────────── */}\n {(heading || subheading) && (\n <div className={`flex flex-col ${alignClass} mb-12`}>\n {heading && (\n <h2\n className={`text-3xl font-semibold tracking-tight sm:text-4xl ${headingClasses}`}\n style={resolvedText ? { color: resolvedText } : undefined}\n >\n {heading}\n </h2>\n )}\n {subheading && (\n <p className={`mt-4 max-w-2xl text-sm leading-relaxed ${subheadingClasses}`}>{subheading}</p>\n )}\n </div>\n )}\n\n {/* ── Honeycomb ──────────────────────────────────────────────────── */}\n <div ref={containerRef} className=\"w-full\">\n {visibleTiles.length === 0 ? (\n <p className={`text-sm ${emptyClasses}`}>No tiles added yet.</p>\n ) : (\n // Nothing is measured on the very first paint, so hold the rows back\n // for one frame rather than flashing them at zero width.\n tileWidth > 0 && (\n <div className=\"flex flex-col items-center\">\n {rows.map((row, rowIndex) => (\n <div\n key={rowIndex}\n className=\"flex justify-center\"\n style={{\n gap: `${GAP_PX}px`,\n // Pull each row up into the notches of the one above it.\n // Stacked mode keeps normal spacing — overlapping a single\n // column would just clip the tiles into each other.\n // The GAP_PX added back leaves a visible seam, so the\n // shapes nest without their edges ever touching.\n marginTop:\n rowIndex === 0\n ? 0\n : effectiveColumns < 2\n ? GAP_PX\n : -tileHeight * (1 - ROW_ADVANCE) + GAP_PX,\n }}\n >\n {row.map((tile, i) => {\n const src = resolveImage(tile.image);\n const href = tile.link?.href?.trim();\n const buttonText = tile.link?.title?.trim() || cta_label;\n const label = tile.label?.trim();\n\n const inner = (\n <>\n {src ? (\n <img\n src={src}\n alt={tile.image_alt || label || ''}\n className=\"absolute inset-0 h-full w-full object-cover\"\n style={{ filter }}\n loading=\"lazy\"\n />\n ) : (\n <span aria-hidden className=\"absolute inset-0 bg-stone-300 dark:bg-neutral-800\" />\n )}\n\n {/* Legibility for the label, whatever the photo does. */}\n <span\n aria-hidden\n className=\"absolute inset-0\"\n style={{\n backgroundImage:\n 'linear-gradient(to bottom, rgba(0,0,0,0.10) 0%, rgba(0,0,0,0.34) 45%, rgba(0,0,0,0.44) 100%)',\n }}\n />\n\n {/* Clipped corners eat anything near the edges, so the\n content stays within the middle band. */}\n <span className=\"absolute inset-x-[18%] inset-y-[26%] flex flex-col items-center justify-center gap-3 text-center\">\n {label && (\n <span\n className={`text-[13px] font-medium uppercase leading-tight tracking-[0.22em] sm:text-sm ${tileTextClass}`}\n style={resolvedAccent ? { color: resolvedAccent } : undefined}\n >\n {label}\n </span>\n )}\n {show_cta && buttonText && (\n <span\n className={`border px-3 py-1.5 text-[10px] uppercase tracking-[0.18em] transition-colors duration-200 group-hover:bg-white/15 sm:text-[11px] ${tileTextClass}`}\n style={{\n borderColor: resolvedAccent || 'rgba(255,255,255,0.75)',\n ...(resolvedAccent ? { color: resolvedAccent } : {}),\n }}\n >\n {buttonText}\n </span>\n )}\n </span>\n </>\n );\n\n const shape: React.CSSProperties = {\n width: `${tileWidth}px`,\n height: `${tileHeight}px`,\n clipPath: HEX_CLIP,\n WebkitClipPath: HEX_CLIP,\n };\n\n return href ? (\n <a\n key={`${label}-${i}`}\n href={href}\n title={tile.link?.title || label}\n className=\"group relative block shrink-0 overflow-hidden transition-opacity duration-200 hover:opacity-95\"\n style={shape}\n >\n {inner}\n </a>\n ) : (\n <div\n key={`${label}-${i}`}\n className=\"group relative shrink-0 overflow-hidden\"\n style={shape}\n >\n {inner}\n </div>\n );\n })}\n </div>\n ))}\n </div>\n )\n )}\n </div>\n </div>\n </section>\n );\n}\n\nexport default HexTileGrid;\n","/* eslint-disable @next/next/no-img-element */\nimport React, { useEffect, useRef, useState } from 'react';\nimport { resolveStackableColor, hexToRgba } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\n/** Native Contentstack link field: `{ title, href }`. */\nexport interface CategoryGridLink {\n title?: string;\n href?: string;\n}\n\nexport interface CategoryGridItem {\n title?: string;\n /** Supporting copy under the title. Line breaks are kept. */\n description?: string;\n /** Text for the arrow link. Falls back to the section's shared label. */\n link_label?: string;\n link?: CategoryGridLink;\n /**\n * The product cut-out. Asset URL or a Contentstack asset object — both are\n * accepted, since a file field arrives as a URL from the catalog but as\n * `{ url, … }` from the Delivery API. Artwork on a transparent or matching\n * background sits best against the card.\n */\n image?: string | { url?: string };\n image_alt?: string;\n /** Card colour for this entry. Empty falls back to the shared card colour. */\n background_color?: StackableColorValue;\n}\n\nexport interface CategoryGridProps {\n heading?: string;\n subheading?: string;\n heading_alignment?: 'left' | 'center' | 'right' | string;\n categories?: CategoryGridItem[];\n /**\n * How each pair of cards divides the row. `Alternating` puts the wide card on\n * the left, then the right, and so on.\n */\n layout?: 'Alternating' | 'Wide Left' | 'Wide Right' | 'Equal' | string;\n /** How lopsided the wide/narrow split is. Ignored when layout is `Equal`. */\n emphasis?: 'Subtle' | 'Medium' | 'Strong' | string;\n card_height?: 'Short' | 'Medium' | 'Tall' | string;\n /** Which top corner the artwork sits in. */\n image_position?: 'Right' | 'Left' | string;\n image_size?: 'Small' | 'Medium' | 'Large' | string;\n corner_style?: 'Rounded' | 'Square' | string;\n /** Used by any entry that sets no label of its own. */\n link_label?: string;\n background_color?: StackableColorValue;\n card_color?: StackableColorValue;\n text_color?: StackableColorValue;\n className?: string;\n}\n\nconst DEFAULT_BG = '#ffffff';\nconst DEFAULT_CARD = '#f4f4f5';\nconst DEFAULT_TEXT = '#111827';\n\nconst ALIGNMENTS: Record<string, string> = {\n left: 'text-left items-start',\n center: 'text-center items-center',\n right: 'text-right items-end',\n};\n\n/** Share of the row taken by the wide card. */\nconst EMPHASIS: Record<string, number> = { Subtle: 0.56, Medium: 0.62, Strong: 0.68 };\n\nconst CARD_HEIGHTS: Record<string, number> = { Short: 240, Medium: 292, Tall: 344 };\n\n/** Artwork width, as a share of its card. */\nconst IMAGE_SIZES: Record<string, number> = { Small: 0.38, Medium: 0.48, Large: 0.58 };\n\n/*\n * Artwork used to be able to rise above the card's top edge; that option was\n * removed. Once the cards stack, the neighbour is the card directly above, so\n * lifting the artwork lands it on top of that card and the images fuse into one\n * continuous strip down the page. It is only safe while paired and only with\n * transparent cut-outs, neither of which the content model can guarantee, so\n * artwork is now always clipped inside its own card.\n */\n\nconst GRID_GAP_PX = 24;\n\n/** Padding inside a card, per side. */\nconst CARD_PADDING_PX = 30;\n\n/**\n * Narrowest the copy column may get before it stops working. Pairing is\n * abandoned below this and every card runs full width.\n *\n * Derived from the narrow card rather than from the container, because the\n * narrow card is what fails first: at a 720px container its copy column came out\n * at roughly 80px, which wrapped the description to five lines and broke\n * \"Explore category\" across two. Computing it also means the threshold follows\n * `emphasis` and `image_size` instead of ignoring them.\n */\nconst MIN_COPY_PX = 130;\n\nfunction resolveImage(image: CategoryGridItem['image']): string {\n if (!image) return '';\n if (typeof image === 'string') return image.trim();\n return typeof image.url === 'string' ? image.url.trim() : '';\n}\n\n/** Cards are laid out two to a row, so they pair up before any widths are decided. */\nfunction toPairs<T>(items: T[]): T[][] {\n const rows: T[][] = [];\n for (let i = 0; i < items.length; i += 2) rows.push(items.slice(i, i + 2));\n return rows;\n}\n\nexport function CategoryGrid({\n heading = '',\n subheading = '',\n heading_alignment = 'center',\n categories = [],\n layout = 'Alternating',\n emphasis = 'Medium',\n card_height = 'Medium',\n image_position = 'Right',\n image_size = 'Medium',\n corner_style = 'Rounded',\n link_label = 'Explore category',\n background_color,\n card_color,\n text_color,\n className = '',\n}: CategoryGridProps) {\n const gridRef = useRef<HTMLDivElement>(null);\n const [gridWidth, setGridWidth] = useState(0);\n\n // Measured rather than a CSS media query, so it tracks the component's own box\n // — the storybook preview simulates width with a fixed-px wrapper that media\n // queries can't see. Same approach as BentoGrid and HexTileGrid.\n useEffect(() => {\n const el = gridRef.current;\n if (!el) return;\n const ro = new ResizeObserver(([entry]) => setGridWidth(entry.contentRect.width));\n ro.observe(el);\n return () => ro.disconnect();\n }, []);\n\n const bg = resolveStackableColor(background_color) || DEFAULT_BG;\n const cardBase = resolveStackableColor(card_color) || DEFAULT_CARD;\n const text = resolveStackableColor(text_color) || DEFAULT_TEXT;\n\n const alignClass = ALIGNMENTS[heading_alignment] ?? ALIGNMENTS.center;\n const wideShare = EMPHASIS[emphasis] ?? EMPHASIS.Medium;\n const height = CARD_HEIGHTS[card_height] ?? CARD_HEIGHTS.Medium;\n const imageShare = IMAGE_SIZES[image_size] ?? IMAGE_SIZES.Medium;\n const rounded = corner_style !== 'Square';\n const imageLeft = image_position === 'Left';\n\n const visible = (categories ?? []).filter(\n (c) => Boolean(c?.title?.trim()) || Boolean(c?.description?.trim()) || Boolean(resolveImage(c?.image)),\n );\n\n // Before the first measurement, render paired so the server-rendered markup\n // matches what a wide container settles on.\n const narrowShare = layout === 'Equal' ? 0.5 : 1 - wideShare;\n const narrowCardPx = (gridWidth - GRID_GAP_PX) * narrowShare;\n const narrowCopyPx = narrowCardPx * (1 - imageShare) - CARD_PADDING_PX * 2;\n const stacked = gridWidth > 0 && narrowCopyPx < MIN_COPY_PX;\n const rows = toPairs(visible);\n\n return (\n <section className={className} style={{ backgroundColor: bg }}>\n <div className=\"component-container mx-auto px-6 py-14 lg:py-20\">\n {/* ── Section heading ────────────────────────────────────────────── */}\n {(heading || subheading) && (\n <div className={`mb-12 flex flex-col ${alignClass}`}>\n {heading && (\n <h2 className=\"m-0 text-3xl font-semibold tracking-tight sm:text-4xl\" style={{ color: text }}>\n {heading}\n </h2>\n )}\n {subheading && (\n <p\n className=\"mt-4 max-w-2xl text-sm leading-relaxed\"\n style={{ color: hexToRgba(text, 0.7) }}\n >\n {subheading}\n </p>\n )}\n </div>\n )}\n\n {/* ── Cards ──────────────────────────────────────────────────────── */}\n <div ref={gridRef} className=\"w-full\">\n {visible.length === 0 ? (\n <p className=\"text-sm\" style={{ color: hexToRgba(text, 0.6) }}>\n No categories added yet.\n </p>\n ) : (\n <div className=\"flex flex-col\" style={{ gap: `${GRID_GAP_PX}px` }}>\n {rows.map((row, ri) => {\n // Which card in this row is the wide one.\n const wideIndex =\n layout === 'Equal' ? -1\n : layout === 'Wide Left' ? 0\n : layout === 'Wide Right' ? 1\n : ri % 2 === 0 ? 0\n : 1;\n\n return (\n <div\n key={ri}\n className={`flex ${stacked ? 'flex-col' : 'flex-row'}`}\n style={{ gap: `${GRID_GAP_PX}px` }}\n >\n {row.map((item, ci) => {\n const src = resolveImage(item.image);\n const href = item.link?.href?.trim();\n const label = item.link_label?.trim() || item.link?.title?.trim() || link_label;\n const panel = resolveStackableColor(item.background_color) || cardBase;\n\n // A lone card on the final row takes the row to itself\n // rather than leaving a hole beside it.\n const alone = row.length === 1;\n const share =\n stacked || alone || wideIndex < 0\n ? undefined\n : ci === wideIndex\n ? wideShare\n : 1 - wideShare;\n\n const inner = (\n <>\n {src && (\n <img\n src={src}\n alt={item.image_alt || item.title || ''}\n // Behind the copy, anchored to a top corner, and\n // contained so mixed aspect ratios all sit inside\n // the same box.\n className=\"pointer-events-none absolute object-contain\"\n style={{\n top: 0,\n [imageLeft ? 'left' : 'right']: 0,\n width: `${(imageShare * 100).toFixed(1)}%`,\n height: '100%',\n objectPosition: imageLeft ? 'left top' : 'right top',\n // Matched to the card. Artwork on a transparent\n // ground ignores this; a photograph with its own\n // background would otherwise sit on the card as a\n // hard-edged rectangle.\n borderRadius: rounded ? 14 : 0,\n zIndex: 0,\n }}\n loading=\"lazy\"\n />\n )}\n\n {/* Copy sits at the bottom, and is kept clear of the\n artwork's column so the two never collide. */}\n <div\n className=\"relative flex flex-1 flex-col justify-end p-7 sm:p-8\"\n style={{\n zIndex: 1,\n // Reserves the artwork's full column rather than a\n // fraction of it. With only a partial reserve the\n // two boxes overlap, and although object-contain\n // keeps these assets hugging the top, a tall\n // portrait asset would fill the box and sit behind\n // the text.\n [imageLeft ? 'marginLeft' : 'marginRight']: src\n ? `${(imageShare * 100).toFixed(1)}%`\n : 0,\n }}\n >\n {item.title && (\n <h3\n className=\"m-0 text-2xl font-normal leading-tight tracking-tight sm:text-[1.75rem]\"\n style={{ color: text }}\n >\n {item.title}\n </h3>\n )}\n\n {item.description && (\n <p\n className=\"m-0 mt-3 max-w-[18rem] whitespace-pre-line text-[13px] leading-relaxed\"\n style={{ color: hexToRgba(text, 0.62) }}\n >\n {item.description}\n </p>\n )}\n\n {label && (\n <span\n className=\"mt-6 inline-flex w-fit items-center gap-2 border-b pb-1.5 text-[13px]\"\n style={{ color: text, borderColor: hexToRgba(text, 0.35) }}\n >\n {label}\n <span aria-hidden>&#8594;</span>\n </span>\n )}\n </div>\n </>\n );\n\n const shell: React.CSSProperties = {\n backgroundColor: panel,\n display: 'flex',\n flexDirection: 'column',\n minHeight: `${height}px`,\n borderRadius: rounded ? 14 : 0,\n flex: share === undefined ? '1 1 0%' : `0 0 calc(${(share * 100).toFixed(2)}% - ${(GRID_GAP_PX / 2).toFixed(0)}px)`,\n overflow: 'hidden',\n };\n\n return href ? (\n <a\n key={ci}\n href={href}\n title={item.link?.title || item.title}\n className=\"relative block transition-opacity duration-200 hover:opacity-90\"\n style={shell}\n >\n {inner}\n </a>\n ) : (\n <div key={ci} className=\"relative\" style={shell}>\n {inner}\n </div>\n );\n })}\n </div>\n );\n })}\n </div>\n )}\n </div>\n </div>\n </section>\n );\n}\n\nexport default CategoryGrid;\n","import React, { useEffect, useState } from 'react';\nimport { resolveStackableColor, hexToRgba } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface FlipCardGridLink {\n title?: string;\n href?: string;\n}\n\nexport interface FlipCardGridItem {\n /** Top-left pill, on both faces. */\n tag?: string;\n /** Shown centered on the front instead of the card's position in the list —\n * leave blank to fall back to that position (1, 2, 3, ...). Ignored once\n * `front_image` is set. */\n number_label?: string;\n /** Optional logo/artwork shown centered on the front instead of the number —\n * upload a high-quality PNG, ideally with a transparent background. */\n front_image?: string | { url?: string };\n front_image_alt?: string;\n /** Body copy, shown only on the back once flipped. Clamped to three lines. */\n description?: string;\n /** Exact substring of `description` to underline. */\n underline_text?: string;\n /** Shown only on the back, in the lower 70% of the card. */\n image?: string | { url?: string };\n image_alt?: string;\n /** Bottom-left label — shown on both faces. */\n caption?: string;\n /** The arrow button's destination; `title` becomes its accessible label. */\n link?: FlipCardGridLink;\n /** The front face's surface colour — falls back to FRONT_PALETTE, cycled by\n * the item's position, when not set. */\n front_color?: StackableColorValue;\n /** The back face's surface colour. */\n card_color?: StackableColorValue;\n text_color?: StackableColorValue;\n}\n\nexport interface FlipCardGridProps {\n heading?: string;\n description?: string;\n /** Exact substring of `description` to underline. */\n description_underline_text?: string;\n /** Each card flips independently — unlike `CardAccordion`, hovering one never\n * affects the others' size or position. On touch (no real hover), opening one\n * card automatically closes whichever was already open. */\n items?: FlipCardGridItem[];\n /** `hover` flips on mouse-over on devices that actually support hover (click/\n * keyboard/touch always work too); `click` only flips on click/Enter/Space. */\n flip_trigger?: 'hover' | 'click' | string;\n background_color?: StackableColorValue;\n /** The front face's number and tag outline. */\n text_color?: StackableColorValue;\n /** Decorative background grid — columns 1-4. */\n grid_left_color?: StackableColorValue;\n /** Decorative background grid — columns 5-8. */\n grid_right_color?: StackableColorValue;\n /** Decorative background grid — the line colour, shared by every cell. */\n grid_line_color?: StackableColorValue;\n className?: string;\n}\n\n/** The front face is a plain placeholder by design — cycled rather than themed\n * per item, so the \"real\" colour only appears once a card is flipped. */\nconst FRONT_PALETTE = ['#404040', '#6b6b6b', '#171717'];\n/** Cycled when an item doesn't set its own card_color/text_color for the back. */\nconst BACK_PALETTE = [\n { card: '#eab308', text: '#171717' },\n { card: '#71717a', text: '#ffffff' },\n { card: '#18181b', text: '#ffffff' },\n];\n/** Every card is this tall regardless of how wide a row lets it grow — a fixed\n * height (not an aspect ratio) is what lets the tablet-only full-width card\n * below stay the same height as a normal two-up row instead of stretching\n * taller along with its width. */\nconst CARD_HEIGHT_CLASS = 'h-[552px] sm:h-[576px] lg:h-[528px]';\n/** How many cards fit a row at each breakpoint — drives both how items are\n * chunked into rows and each card's width: 4 cards lay out 3-then-1, 5 lay out\n * 3-then-2, 6 lay out 3-then-3, and so on. A short desktop/mobile row keeps\n * normal-sized cards and centers itself; a lone card at the tablet step is the\n * one deliberate exception — see getCardWidth. */\nconst COLUMNS_BY_BREAKPOINT = { base: 1, sm: 2, lg: 3 } as const;\nconst GAP_REM = 1; // matches gap-4\n\n/** A lone trailing card at the two-column tablet step spans the full row\n * instead of sitting at half-width — every other short row (desktop's 1 or 2\n * leftover, or a lone card on mobile where it's the only column anyway) just\n * keeps its normal per-column width and centers within the row. */\nfunction getCardWidth(columns: number, rowLength: number): string {\n if (columns === 2 && rowLength === 1) return '100%';\n const gapTotal = (columns - 1) * GAP_REM;\n return `calc((100% - ${gapTotal}rem) / ${columns})`;\n}\n\n/** Column count and the left/right split are fractions of the container width\n * (fluid), while each row stays a fixed pixel height — the pattern simply\n * repeats for as many rows as the section's content ends up tall, instead of\n * stopping at a fixed row count and leaving the rest of the background bare. */\nconst BG_GRID_COLS = 6;\nconst BG_GRID_SPLIT_COL = 4;\nconst BG_GRID_ROW_HEIGHT_PX = 112.5;\n\nfunction prefersReducedMotion(): boolean {\n return typeof window !== 'undefined' && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n}\n\n/** Touch devices report a synthetic hover on first tap, which — combined with a\n * click handler needed for keyboard/touch anyway — makes a single tap look like\n * it does nothing (hover opens it, the click that follows immediately closes it\n * again). Only wiring real mouse-hover handlers when the device genuinely\n * supports hover avoids that double-fire entirely. */\nfunction supportsRealHover(): boolean {\n return typeof window !== 'undefined' && window.matchMedia('(hover: hover) and (pointer: fine)').matches;\n}\n\n/** Tracks how many cards fit a row at the current breakpoint, so items can be\n * chunked into actual row groups (needed to center a short row — a single flex\n * container with wrapping can't do that independently per row). Re-chunks\n * automatically as the viewport crosses a breakpoint. */\nfunction useColumns(): number {\n const [columns, setColumns] = useState<number>(COLUMNS_BY_BREAKPOINT.lg);\n useEffect(() => {\n const mqLg = window.matchMedia('(min-width: 1024px)');\n const mqSm = window.matchMedia('(min-width: 640px)');\n const update = () => setColumns(mqLg.matches ? COLUMNS_BY_BREAKPOINT.lg : mqSm.matches ? COLUMNS_BY_BREAKPOINT.sm : COLUMNS_BY_BREAKPOINT.base);\n update();\n mqLg.addEventListener('change', update);\n mqSm.addEventListener('change', update);\n return () => {\n mqLg.removeEventListener('change', update);\n mqSm.removeEventListener('change', update);\n };\n }, []);\n return columns;\n}\n\nfunction chunk<T>(items: T[], size: number): T[][] {\n const rows: T[][] = [];\n for (let i = 0; i < items.length; i += size) rows.push(items.slice(i, i + size));\n return rows;\n}\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveAsset(asset: string | { url?: string } | undefined): string {\n if (!asset) return '';\n if (typeof asset === 'string') return asset.trim();\n return typeof asset.url === 'string' ? asset.url.trim() : '';\n}\n\n/** Splits `text` on the first occurrence of `needle` and underlines that slice. */\nfunction renderWithUnderline(text: string, needle: string | undefined) {\n const n = needle?.trim();\n if (!n) return text;\n const index = text.indexOf(n);\n if (index === -1) return text;\n return (\n <>\n {text.slice(0, index)}\n <span className=\"underline underline-offset-2\">{n}</span>\n {text.slice(index + n.length)}\n </>\n );\n}\n\nfunction ArrowIcon({ className }: { className?: string }) {\n return (\n <svg viewBox=\"0 0 24 24\" className={className} fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M7 17 17 7M8 7h9v9\" />\n </svg>\n );\n}\n\n/** A subtle dual-tone grid behind the section — column count and the left/right\n * split are CSS percentages, rows are a repeating fixed-height pattern, so the\n * whole thing stretches to cover exactly however tall the section's content\n * (and its own `inset-0` parent) ends up. Never intercepts clicks or affects\n * layout. */\nfunction BackgroundGrid({ leftColor, rightColor, lineColor }: { leftColor: string; rightColor: string; lineColor: string }) {\n const colWidthPct = 100 / BG_GRID_COLS;\n const splitPct = (BG_GRID_SPLIT_COL / BG_GRID_COLS) * 100;\n return (\n <div\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-0 border-l border-t\"\n style={{\n borderColor: lineColor,\n backgroundImage: [\n `repeating-linear-gradient(to bottom, ${lineColor} 0, ${lineColor} 1px, transparent 1px, transparent ${BG_GRID_ROW_HEIGHT_PX}px)`,\n `repeating-linear-gradient(to right, ${lineColor} 0, ${lineColor} 1px, transparent 1px, transparent ${colWidthPct}%)`,\n `linear-gradient(to right, ${leftColor} ${splitPct}%, ${rightColor} ${splitPct}%)`,\n ].join(', '),\n }}\n />\n );\n}\n\ninterface CardProps {\n item: FlipCardGridItem;\n index: number;\n flipped: boolean;\n isHoverMode: boolean;\n onEnter: () => void;\n onLeave: () => void;\n onToggle: () => void;\n frontText: string;\n reduceMotion: boolean;\n /** Fixed width for the current row's column count — never stretches. */\n width: string;\n}\n\nfunction Card({ item, index, flipped, isHoverMode, onEnter, onLeave, onToggle, frontText, reduceMotion, width }: CardProps) {\n const palette = BACK_PALETTE[index % BACK_PALETTE.length];\n const frontColor = resolveStackableColor(item.front_color) || FRONT_PALETTE[index % FRONT_PALETTE.length];\n const backColor = resolveStackableColor(item.card_color) || palette.card;\n const backText = resolveStackableColor(item.text_color) || palette.text;\n const imageSrc = resolveAsset(item.image);\n const frontImageSrc = resolveAsset(item.front_image);\n\n return (\n <div\n className={`relative shrink-0 ${CARD_HEIGHT_CLASS}`}\n style={{ perspective: '1200px', width }}\n onMouseEnter={isHoverMode ? onEnter : undefined}\n onMouseLeave={isHoverMode ? onLeave : undefined}\n >\n <button\n type=\"button\"\n aria-pressed={flipped}\n aria-label={`${flipped ? 'Show number for' : 'Show more about'} ${item.tag || `card ${index + 1}`}`}\n onClick={onToggle}\n onTouchStart={() => {}}\n className=\"relative block h-full w-full cursor-pointer border-0 bg-transparent p-0 text-left\"\n style={{\n transformStyle: 'preserve-3d',\n transform: flipped ? 'rotateY(180deg)' : 'none',\n transition: reduceMotion ? 'none' : 'transform 0.5s cubic-bezier(0.4,0.2,0.2,1)',\n }}\n >\n {/* Front — a plain numbered placeholder. Border is a faint tint of the\n front text colour, so it stays visible against any front_color. */}\n <div\n className=\"absolute inset-0 flex flex-col justify-between overflow-hidden rounded-3xl border p-5\"\n style={{ backgroundColor: frontColor, borderColor: hexToRgba(frontText, 0.18), backfaceVisibility: 'hidden' }}\n >\n {item.tag && (\n <span\n className=\"inline-flex w-fit max-w-full items-center truncate rounded-full px-3 py-1 text-sm font-semibold uppercase tracking-wide ring-1 sm:text-xl\"\n style={{ color: frontText, borderColor: hexToRgba(frontText, 0.4) }}\n >\n {item.tag}\n </span>\n )}\n {frontImageSrc ? (\n <div className=\"flex flex-1 items-center justify-center overflow-hidden py-4\">\n <img\n src={frontImageSrc}\n alt={item.front_image_alt || item.tag || ''}\n className=\"max-h-full max-w-[80%] object-contain\"\n />\n </div>\n ) : (\n <span\n className=\"flex flex-1 items-center justify-center truncate px-2 text-[8rem] font-bold sm:text-[9rem] lg:text-[10rem]\"\n style={{ color: hexToRgba(backColor, 0.9) }}\n aria-hidden=\"true\"\n >\n {item.number_label || index + 1}\n </span>\n )}\n <div className=\"flex items-end justify-between gap-3\">\n {item.caption ? (\n <span className=\"truncate text-[11px] font-semibold uppercase tracking-wide\" style={{ color: hexToRgba(frontText, 0.75) }}>\n {item.caption}\n </span>\n ) : (\n <span />\n )}\n {item.link?.href && (\n <span\n className=\"flex h-9 w-9 shrink-0 items-center justify-center rounded-full ring-1\"\n style={{ color: frontText, borderColor: hexToRgba(frontText, 0.4) }}\n >\n <ArrowIcon className=\"h-4 w-4\" />\n </span>\n )}\n </div>\n </div>\n\n {/* Back — the card's real content: tag, body copy, and a photo filling the\n lower 70%. Border is a faint tint of the back text colour, matching\n the front face's treatment. */}\n <div\n className=\"absolute inset-0 flex flex-col overflow-hidden rounded-3xl border\"\n style={{ backgroundColor: backColor, borderColor: hexToRgba(backText, 0.18), backfaceVisibility: 'hidden', transform: 'rotateY(180deg)' }}\n >\n <div className=\"flex flex-1 flex-col gap-3 overflow-hidden p-5\">\n {item.tag && (\n <span\n className=\"inline-flex w-fit max-w-full items-center truncate rounded-full px-3 py-1 text-sm font-semibold uppercase tracking-wide sm:text-xl\"\n style={{ backgroundColor: hexToRgba(backText, 0.14), color: backText }}\n >\n {item.tag}\n </span>\n )}\n {item.description && (\n <p className=\"line-clamp-3 text-sm font-medium leading-snug sm:text-base\" style={{ color: backText }}>\n {renderWithUnderline(item.description, item.underline_text)}\n </p>\n )}\n </div>\n\n {imageSrc && (\n <div className=\"relative shrink-0 overflow-hidden h-[70%]\" >\n <img src={imageSrc} alt={item.image_alt || item.tag || ''} className=\"h-full w-full object-cover rounded-t-3xl\" />\n <div className=\"absolute inset-x-0 bottom-0 z-10 flex items-end justify-between gap-3 p-5 pt-3\">\n {item.caption ? (\n <span className=\"truncate text-[11px] font-semibold uppercase tracking-wide\" style={{ color: hexToRgba(backText, 0.8) }}>\n {item.caption}\n </span>\n ) : (\n <span />\n )}\n {item.link?.href && (\n <a\n href={item.link.href}\n aria-label={item.link.title || item.tag || 'View more'}\n onClick={(e) => e.stopPropagation()}\n className=\"flex h-9 w-9 shrink-0 cursor-pointer items-center justify-center rounded-full transition-transform hover:scale-105\"\n style={{ backgroundColor: backColor, color: backText }}\n >\n <ArrowIcon className=\"h-4 w-4\" />\n </a>\n )}\n </div>\n </div>\n )}\n </div>\n </button>\n </div>\n );\n}\n\nexport function FlipCardGrid({\n heading = '',\n description = '',\n description_underline_text = '',\n items = [],\n flip_trigger = 'hover',\n background_color,\n text_color,\n grid_left_color,\n grid_right_color,\n grid_line_color,\n className = '',\n}: FlipCardGridProps) {\n const [reduceMotion, setReduceMotion] = useState(false);\n const [canHover, setCanHover] = useState(false);\n const columns = useColumns();\n // Only one card is ever flipped at once — on real hover that's already true by\n // physical necessity (one mouse, one pointer), and on touch/click it means\n // opening a new card automatically closes whichever was open instead of\n // requiring a second tap.\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n\n useEffect(() => {\n setReduceMotion(prefersReducedMotion());\n setCanHover(supportsRealHover());\n }, []);\n\n const visibleItems = (items ?? []).filter((item) => item?.tag?.trim() || item?.description?.trim() || item?.caption?.trim());\n\n const resolvedBg = resolveStackableColor(background_color) || '#0a0a0a';\n const resolvedText = resolveStackableColor(text_color) || '#f5f5f5';\n const resolvedGridLeft = resolveStackableColor(grid_left_color) || '#141414';\n const resolvedGridRight = resolveStackableColor(grid_right_color) || '#0a0a0a';\n const resolvedGridLine = resolveStackableColor(grid_line_color) || '#262626';\n\n const isHoverMode = flip_trigger === 'hover' && canHover;\n\n if (visibleItems.length === 0) return null;\n\n return (\n <section className={`relative min-h-screen overflow-hidden ${className}`.trim()} style={{ backgroundColor: resolvedBg }}>\n <BackgroundGrid leftColor={resolvedGridLeft} rightColor={resolvedGridRight} lineColor={resolvedGridLine} />\n\n <div className=\"component-container relative z-10 mx-auto px-6 py-16 sm:py-24\">\n {(heading || description) && (\n <div className=\"mb-10 grid grid-cols-1 gap-6 sm:grid-cols-2 sm:items-end lg:mb-14\">\n {heading && (\n <h2 className=\"text3xl font-bold tracking-tight sm:text-5xl\" style={{ color: resolvedText }}>\n {heading}\n </h2>\n )}\n {description && (\n <p className=\"text-sm leading-relaxed sm:text-base\" style={{ color: hexToRgba(resolvedText, 0.65) }}>\n {renderWithUnderline(description, description_underline_text)}\n </p>\n )}\n </div>\n )}\n\n <div className=\"flex flex-col gap-4\">\n {chunk(visibleItems, columns).map((row, rowIndex) => (\n <div key={rowIndex} className=\"flex w-full justify-center gap-4\">\n {row.map((item, j) => {\n const i = rowIndex * columns + j;\n return (\n <Card\n key={i}\n item={item}\n index={i}\n flipped={activeIndex === i}\n isHoverMode={isHoverMode}\n onEnter={() => setActiveIndex(i)}\n onLeave={() => setActiveIndex((prev) => (prev === i ? null : prev))}\n onToggle={() => setActiveIndex((prev) => (prev === i ? null : i))}\n frontText={resolvedText}\n reduceMotion={reduceMotion}\n width={getCardWidth(columns, row.length)}\n />\n );\n })}\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n}\n\nexport default FlipCardGrid;\n","import React, { useState, useEffect, useCallback } from 'react';\n\nexport interface ImageGridItem {\n image?: string;\n alt?: string;\n title?: string;\n caption?: string;\n href?: string;\n colSpan?: number;\n rowSpan?: number;\n}\n\ninterface LightboxProps {\n images: ImageGridItem[];\n activeIndex: number;\n onClose: () => void;\n}\n\nfunction Lightbox({ images, activeIndex, onClose }: LightboxProps) {\n const [current, setCurrent] = useState(activeIndex)\n const count = images.length\n\n const prev = useCallback(() => setCurrent(i => (i - 1 + count) % count), [count])\n const next = useCallback(() => setCurrent(i => (i + 1) % count), [count])\n\n useEffect(() => {\n const onKey = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose()\n if (e.key === 'ArrowLeft') prev()\n if (e.key === 'ArrowRight') next()\n }\n document.addEventListener('keydown', onKey)\n document.body.style.overflow = 'hidden'\n return () => {\n document.removeEventListener('keydown', onKey)\n document.body.style.overflow = ''\n }\n }, [onClose, prev, next])\n\n const img = images[current]\n\n return (\n <div\n className=\"img-grid-lightbox__backdrop\"\n onClick={onClose}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Image lightbox\"\n >\n <div className=\"img-grid-lightbox__panel\" onClick={e => e.stopPropagation()}>\n <button className=\"img-grid-lightbox__close\" onClick={onClose} aria-label=\"Close lightbox\">✕</button>\n <div className=\"img-grid-lightbox__img-wrap\">\n <img src={img?.image} alt={img?.alt || `Image ${current + 1}`} className=\"img-grid-lightbox__img\" />\n </div>\n {(img?.title || img?.caption) && (\n <div className=\"img-grid-lightbox__caption\">\n {img?.title && <p className=\"img-grid-lightbox__title\">{img.title}</p>}\n {img?.caption && <p className=\"img-grid-lightbox__caption-text\">{img.caption}</p>}\n </div>\n )}\n <p className=\"img-grid-lightbox__counter\">{current + 1} / {count}</p>\n </div>\n\n {count > 1 && (\n <>\n <button\n className=\"img-grid-lightbox__nav img-grid-lightbox__nav--prev\"\n onClick={e => { e.stopPropagation(); prev() }}\n aria-label=\"Previous image\"\n >‹</button>\n <button\n className=\"img-grid-lightbox__nav img-grid-lightbox__nav--next\"\n onClick={e => { e.stopPropagation(); next() }}\n aria-label=\"Next image\"\n >›</button>\n </>\n )}\n </div>\n )\n}\n\nexport interface ImageGridProps {\n heading?: string;\n subheading?: string;\n theme?: 'light' | 'dark' | string;\n text_alignment?: 'left' | 'center' | 'right' | string;\n columns?: number;\n gap?: 'sm' | 'md' | 'lg' | string;\n aspect_ratio?: 'square' | '4:3' | '16:9' | 'auto' | string;\n hover_effect?: 'none' | 'zoom' | 'overlay' | string;\n lightbox?: boolean;\n images?: ImageGridItem[];\n className?: string;\n}\n\nexport function ImageGrid({\n heading = '',\n subheading = '',\n theme = 'light',\n text_alignment = 'center',\n columns = 3,\n gap = 'md',\n aspect_ratio = 'square',\n hover_effect = 'zoom',\n lightbox = true,\n images = [],\n className,\n}: ImageGridProps) {\n const [lightboxIndex, setLightboxIndex] = useState<number | null>(null)\n\n const isDark = theme === 'dark'\n const sectionBg = isDark ? 'bg-gray-900' : 'bg-white'\n const headingColor = isDark ? 'text-white' : 'text-gray-900'\n const subheadingColor = isDark ? 'text-gray-300' : 'text-gray-600'\n const captionColor = isDark ? 'text-gray-400' : 'text-gray-500'\n\n const alignClass: Record<string, string> = {\n left: 'text-left items-start',\n center: 'text-center items-center',\n right: 'text-right items-end',\n }\n const textAlignClass = alignClass[text_alignment] ?? 'text-center items-center'\n\n const aspectClass: Record<string, string> = {\n 'square': 'img-grid__aspect--square',\n '4:3': 'img-grid__aspect--4-3',\n '16:9': 'img-grid__aspect--16-9',\n 'auto': 'img-grid__aspect--auto',\n }\n const aspectCls = aspectClass[aspect_ratio] ?? 'img-grid__aspect--square'\n\n const gapClass: Record<string, string> = { sm: 'img-grid__gap--sm', md: 'img-grid__gap--md', lg: 'img-grid__gap--lg' }\n const gapCls = gapClass[gap] ?? 'img-grid__gap--md'\n\n const hoverClass: Record<string, string> = { zoom: 'img-grid__cell--zoom', overlay: 'img-grid__cell--overlay', none: '' }\n const hoverCls = hoverClass[hover_effect] ?? ''\n\n const openLightbox = (index: number) => {\n if (lightbox) setLightboxIndex(index)\n }\n\n return (\n <section className={`${sectionBg} ${className ?? ''}`.trim()}>\n <div className={`component-container mx-auto px-6 py-16 flex flex-col ${textAlignClass}`}>\n {heading && <h2 className={`text-4xl font-bold mb-4 ${headingColor}`}>{heading}</h2>}\n {subheading && <p className={`text-xl mb-10 max-w-2xl ${subheadingColor}`}>{subheading}</p>}\n\n <div className={`img-grid ${gapCls}`} style={{ gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))` }}>\n {images?.map((item, i) => {\n const cs = item?.colSpan ?? 1\n const rs = item?.rowSpan ?? 1\n const spanStyle: React.CSSProperties = {\n ...(cs > 1 ? { gridColumn: `span ${cs}` } : {}),\n ...(rs > 1 ? { gridRow: `span ${rs}` } : {}),\n }\n const isSpanned = rs > 1\n const inner = (\n <div className={`img-grid__cell ${hoverCls}${isSpanned ? ' img-grid__cell--spanned' : ''}`}>\n <div className={`img-grid__frame ${isSpanned ? 'img-grid__aspect--auto' : aspectCls}`}>\n {item?.image ? (\n <img src={item.image} alt={item?.alt || `Image ${i + 1}`} className=\"img-grid__img\" loading=\"lazy\" />\n ) : (\n <div className=\"img-grid__placeholder\">\n <span className=\"img-grid__placeholder-icon\">🖼</span>\n </div>\n )}\n\n {hover_effect === 'overlay' && (item?.title || item?.caption) && (\n <div className=\"img-grid__overlay\">\n {item?.title && <p className=\"img-grid__overlay-title\">{item.title}</p>}\n {item?.caption && <p className=\"img-grid__overlay-caption\">{item.caption}</p>}\n </div>\n )}\n\n {lightbox && <div className=\"img-grid__lightbox-hint\" aria-hidden=\"true\">⤢</div>}\n </div>\n\n {hover_effect !== 'overlay' && item?.caption && (\n <p className={`img-grid__caption ${captionColor}`}>{item.caption}</p>\n )}\n </div>\n )\n\n if (item?.href && !lightbox) {\n return (\n <a key={i} href={item.href} target=\"_blank\" rel=\"noopener noreferrer\" className=\"img-grid__link\" style={spanStyle}>\n {inner}\n </a>\n )\n }\n\n return (\n <div\n key={i}\n style={spanStyle}\n className={lightbox ? 'img-grid__link' : undefined}\n onClick={() => openLightbox(i)}\n role={lightbox ? 'button' : undefined}\n tabIndex={lightbox ? 0 : undefined}\n onKeyDown={lightbox ? e => e.key === 'Enter' && openLightbox(i) : undefined}\n aria-label={lightbox ? `Open image ${i + 1}` : undefined}\n >\n {inner}\n </div>\n )\n })}\n </div>\n\n {(!images || images.length === 0) && (\n <div className={`img-grid__empty ${isDark ? 'text-gray-500' : 'text-gray-400'}`}>\n No images added yet\n </div>\n )}\n </div>\n\n {lightboxIndex !== null && (\n <Lightbox images={images} activeIndex={lightboxIndex} onClose={() => setLightboxIndex(null)} />\n )}\n </section>\n )\n}\n\nexport default ImageGrid\n","import React from 'react';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface DynamicGridImage {\n image?: string;\n alt?: string;\n title?: string;\n}\n\nexport interface ImageGridDynamicProps {\n heading?: string;\n subheading?: string;\n heading_alignment?: 'left' | 'center' | 'right' | string;\n background_color?: StackableColorValue;\n gap?: 'none' | 'sm' | 'md' | 'lg' | string;\n images?: DynamicGridImage[];\n className?: string;\n}\n\nexport function ImageGridDynamic({\n heading = '',\n subheading = '',\n heading_alignment = 'center',\n background_color,\n gap = 'sm',\n images = [],\n className,\n}: ImageGridDynamicProps) {\n const count = images?.length ?? 0;\n const resolvedBg = resolveStackableColor(background_color);\n const sectionBg = resolvedBg ? '' : 'bg-white';\n const headingColor = 'text-gray-900';\n const subheadingColor = 'text-gray-600';\n\n const alignClass: Record<string, string> = {\n left: 'text-left items-start',\n center: 'text-center items-center',\n right: 'text-right items-end',\n };\n const headerAlignCls = alignClass[heading_alignment] ?? 'text-center items-center';\n\n const gapMap: Record<string, string> = {\n none: 'dyn-grid__gap--none',\n sm: 'dyn-grid__gap--sm',\n md: 'dyn-grid__gap--md',\n lg: 'dyn-grid__gap--lg',\n };\n const gapCls = gapMap[gap] ?? 'dyn-grid__gap--sm';\n\n // Clamp to 4 for known layouts; 5+ falls back to generic grid\n const layoutCount = Math.min(count, 4);\n const countCls = count > 0 ? `dyn-grid--${count > 4 ? 'many' : layoutCount}` : '';\n\n return (\n <section\n className={`${sectionBg} ${className ?? ''}`.trim()}\n style={resolvedBg ? { backgroundColor: resolvedBg } : undefined}\n >\n <div className={`component-container mx-auto px-6 py-16 flex flex-col ${headerAlignCls}`}>\n {heading && (\n <h2 className={`text-4xl font-bold mb-4 ${headingColor}`}>{heading}</h2>\n )}\n {subheading && (\n <p className={`text-xl mb-10 max-w-2xl ${subheadingColor}`}>{subheading}</p>\n )}\n\n {count > 0 ? (\n <div className={`dyn-grid ${countCls} ${gapCls}`}>\n {images.map((item, i) => (\n <div key={i} className=\"dyn-grid__cell\">\n <div className=\"dyn-grid__frame\">\n {item?.image ? (\n <img\n src={item.image}\n alt={item.alt || `Image ${i + 1}`}\n className=\"dyn-grid__img\"\n loading=\"lazy\"\n />\n ) : (\n <div className=\"dyn-grid__placeholder\">\n <span>🖼</span>\n </div>\n )}\n {item?.title && (\n <div className=\"dyn-grid__label\">\n <span className=\"dyn-grid__label-text\">{item.title}</span>\n </div>\n )}\n </div>\n </div>\n ))}\n </div>\n ) : (\n <div className={`img-grid__empty ${'text-gray-400'}`}>\n No images added yet\n </div>\n )}\n </div>\n </section>\n );\n}\n\nexport default ImageGridDynamic;\n","import React, { useState } from 'react';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface TestimonialItem {\n quote?: string;\n author_name?: string;\n author_title?: string;\n author_image?: string;\n author_image_alt?: string;\n logo?: string;\n logo_alt?: string;\n rating?: number;\n}\n\nexport interface TestimonialProps {\n heading?: string;\n subheading?: string;\n layout?: 'centered' | 'side-image' | 'side-image-overlap' | 'review-card' | string;\n image_position?: 'left' | 'right' | string;\n show_stars?: boolean;\n show_logo?: boolean;\n show_quote_mark?: boolean;\n avatar_size?: 'none' | 'sm' | 'md' | 'lg' | string;\n name_format?: 'inline' | 'stacked' | string;\n testimonials?: TestimonialItem[];\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n className?: string;\n}\n\nfunction Stars({ count }: { count: number }) {\n const filled = Math.round(Math.max(0, Math.min(5, count)));\n return (\n <div className=\"flex gap-1 mb-5\" aria-label={`${filled} out of 5 stars`}>\n {Array.from({ length: 5 }, (_, i) => (\n <svg\n key={i}\n viewBox=\"0 0 20 20\"\n className={`w-5 h-5 ${i < filled ? 'fill-[#715cdd]' : 'fill-gray-200'}`}\n aria-hidden=\"true\"\n >\n <path d=\"M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z\" />\n </svg>\n ))}\n </div>\n );\n}\n\nconst AVATAR_SIZE: Record<string, string> = {\n sm: 'w-10 h-10',\n md: 'w-14 h-14',\n lg: 'w-20 h-20',\n};\n\nfunction AvatarImg({ src, alt, size }: { src?: string; alt?: string; size: string }) {\n const cls = AVATAR_SIZE[size] ?? AVATAR_SIZE.sm;\n if (src) {\n return <img src={src} alt={alt || 'Author'} className={`${cls} rounded-full object-cover flex-shrink-0`} />;\n }\n return (\n <div className={`${cls} rounded-full bg-gray-200 flex items-center justify-center flex-shrink-0`}>\n <svg className=\"w-5 h-5 text-gray-400\" fill=\"currentColor\" viewBox=\"0 0 20 20\" aria-hidden=\"true\">\n <path d=\"M10 10a4 4 0 100-8 4 4 0 000 8zm-7 8a7 7 0 0114 0H3z\" />\n </svg>\n </div>\n );\n}\n\nfunction NavButtons({\n index,\n count,\n onPrev,\n onNext,\n}: {\n index: number;\n count: number;\n onPrev: () => void;\n onNext: () => void;\n}) {\n if (count < 2) return null;\n const btnCls =\n 'w-9 h-9 rounded-full border flex items-center justify-center transition-colors text-lg leading-none ' +\n 'border-gray-300 text-gray-500 hover:bg-gray-50';\n return (\n <div className=\"flex items-center gap-3 mt-6\">\n <button onClick={onPrev} className={btnCls} aria-label=\"Previous testimonial\">‹</button>\n <span className=\"text-sm tabular-nums text-gray-400\">{index + 1} / {count}</span>\n <button onClick={onNext} className={btnCls} aria-label=\"Next testimonial\">›</button>\n </div>\n );\n}\n\nexport function Testimonial({\n heading = '',\n subheading = '',\n layout = 'centered',\n image_position = 'left',\n show_stars = false,\n show_logo = false,\n show_quote_mark = true,\n avatar_size = 'sm',\n name_format = 'inline',\n testimonials = [],\n background_color,\n text_color,\n className = '',\n}: TestimonialProps) {\n const [index, setIndex] = useState(0);\n const count = testimonials?.length;\n const item: TestimonialItem = testimonials?.[Math.min(index, Math.max(0, count - 1))] ?? {};\n\n const resolvedBg = resolveStackableColor(background_color as StackableColorValue);\n const resolvedTextColor = resolveStackableColor(text_color as StackableColorValue);\n const sectionStyle: React.CSSProperties | undefined = resolvedBg ? { backgroundColor: resolvedBg } : undefined;\n const textColorStyle: React.CSSProperties | undefined = resolvedTextColor ? { color: resolvedTextColor } : undefined;\n const sectionBg = 'bg-white';\n const headingColor = 'text-gray-900';\n const subheadingColor = 'text-gray-600';\n const quoteColor = 'text-gray-900';\n const nameColor = 'text-gray-900';\n const titleColor = 'text-gray-500';\n const quoteMark = 'text-gray-900/[0.06]';\n\n const prev = () => setIndex(i => (i - 1 + count) % count);\n const next = () => setIndex(i => (i + 1) % count);\n\n const SectionHeader = () => (heading || subheading) ? (\n <div className=\"mb-10\">\n {heading && <h2 className={`text-3xl font-bold mb-3 ${headingColor}`} style={textColorStyle}>{heading}</h2>}\n {subheading && <p className={`text-lg ${subheadingColor}`} style={textColorStyle}>{subheading}</p>}\n </div>\n ) : null;\n\n // Author block with avatar + inline or stacked name/title\n const AuthorBlock = ({ forceStacked = false, forceNoAvatar = false }: { forceStacked?: boolean; forceNoAvatar?: boolean }) => {\n const stacked = forceStacked || name_format === 'stacked';\n const showAvatar = !forceNoAvatar && avatar_size !== 'none';\n return (\n <div className={`flex ${stacked ? 'items-start' : 'items-center'} gap-3 mt-6`}>\n {showAvatar && (\n <AvatarImg src={item.author_image} alt={item.author_image_alt} size={avatar_size as string} />\n )}\n {stacked ? (\n <div className=\"flex flex-col gap-0.5\">\n {item.author_name && <p className={`font-semibold text-sm ${nameColor}`} style={textColorStyle}>{item.author_name}</p>}\n {item.author_title && <p className={`text-sm ${titleColor}`}>{item.author_title}</p>}\n </div>\n ) : (\n <p className={`text-sm ${nameColor}`} style={textColorStyle}>\n {item.author_name && <span className=\"font-semibold\">{item.author_name}</span>}\n {item.author_name && item.author_title && <span className={titleColor}> · </span>}\n {item.author_title && <span className={titleColor}>{item.author_title}</span>}\n </p>\n )}\n </div>\n );\n };\n\n // ── CENTERED ──────────────────────────────────────────────────────────────\n const renderCentered = () => (\n <section className={`${sectionBg} ${className}`.trim()} style={sectionStyle}>\n <div className=\"component-container mx-auto px-6 py-16 flex flex-col items-center text-center\">\n <SectionHeader />\n {show_logo && item.logo && (\n <img src={item.logo} alt={item.logo_alt || 'Brand logo'} className=\"h-10 mb-8 object-contain\" />\n )}\n {show_stars && <Stars count={item.rating ?? 5} />}\n <blockquote className=\"relative max-w-2xl w-full\">\n {show_quote_mark && (\n <span\n className={`absolute -top-6 left-1/2 -translate-x-1/2 text-[7rem] leading-none font-serif select-none pointer-events-none ${quoteMark}`}\n aria-hidden=\"true\"\n >&ldquo;</span>\n )}\n <p className={`text-2xl font-light leading-relaxed italic relative z-10 line-clamp-2 ${quoteColor}`} style={textColorStyle}>\n {item.quote ? `\"${item.quote}\"` : '\"Your quote goes here…\"'}\n </p>\n </blockquote>\n <div className=\"flex flex-col items-center\">\n <AuthorBlock />\n <NavButtons index={index} count={count} onPrev={prev} onNext={next} />\n </div>\n </div>\n </section>\n );\n\n // ── SIDE IMAGE ────────────────────────────────────────────────────────────\n const renderSideImage = () => {\n const imageLeft = image_position !== 'right';\n const ImagePane = () => (\n <div className=\"relative w-full\">\n {item.author_image ? (\n <img\n src={item.author_image}\n alt={item.author_image_alt || item.author_name || 'Testimonial'}\n className=\"w-full object-cover rounded-2xl shadow-lg\"\n style={{ maxHeight: '480px', minHeight: '300px' }}\n />\n ) : (\n <div className=\"w-full rounded-2xl bg-gray-200 flex items-center justify-center\" style={{ minHeight: '360px' }}>\n <svg className=\"w-16 h-16 text-gray-300\" fill=\"currentColor\" viewBox=\"0 0 20 20\" aria-hidden=\"true\">\n <path d=\"M10 10a4 4 0 100-8 4 4 0 000 8zm-7 8a7 7 0 0114 0H3z\" />\n </svg>\n </div>\n )}\n </div>\n );\n\n const ContentPane = () => (\n <div className=\"flex flex-col justify-center\">\n {show_logo && item.logo && (\n <img src={item.logo} alt={item.logo_alt || ''} className=\"h-8 mb-6 object-contain self-start\" />\n )}\n {show_stars && <Stars count={item.rating ?? 5} />}\n <blockquote className=\"relative\">\n {show_quote_mark && (\n <span\n className={`absolute -top-8 -left-4 text-[8rem] leading-none font-serif select-none pointer-events-none ${quoteMark}`}\n aria-hidden=\"true\"\n >&ldquo;</span>\n )}\n <p className={`text-xl md:text-2xl font-light leading-relaxed relative z-10 line-clamp-2 ${quoteColor}`} style={textColorStyle}>\n {item.quote || 'Your quote goes here…'}\n </p>\n </blockquote>\n <AuthorBlock forceStacked forceNoAvatar />\n <NavButtons index={index} count={count} onPrev={prev} onNext={next} />\n </div>\n );\n\n return (\n <section className={`${sectionBg} ${className}`.trim()} style={sectionStyle}>\n <div className=\"component-container mx-auto px-6 py-16\">\n <SectionHeader />\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-10 md:gap-14 items-center\">\n {imageLeft ? <><ImagePane /><ContentPane /></> : <><ContentPane /><ImagePane /></>}\n </div>\n </div>\n </section>\n );\n };\n\n // ── SIDE IMAGE OVERLAP ────────────────────────────────────────────────────\n const renderSideImageOverlap = () => {\n const imageLeft = image_position !== 'right';\n\n const ImagePane = ({ extraCls }: { extraCls: string }) => (\n <div className={`relative z-10 ${extraCls}`}>\n {item.author_image ? (\n <img\n src={item.author_image}\n alt={item.author_image_alt || item.author_name || 'Testimonial'}\n className=\"w-full object-cover rounded-2xl shadow-2xl\"\n style={{ maxHeight: '540px', minHeight: '360px' }}\n />\n ) : (\n <div className=\"w-full rounded-2xl bg-gray-300 flex items-center justify-center shadow-2xl\" style={{ minHeight: '360px' }}>\n <svg className=\"w-16 h-16 text-gray-400\" fill=\"currentColor\" viewBox=\"0 0 20 20\" aria-hidden=\"true\">\n <path d=\"M10 10a4 4 0 100-8 4 4 0 000 8zm-7 8a7 7 0 0114 0H3z\" />\n </svg>\n </div>\n )}\n </div>\n );\n\n const ContentPane = ({ extraCls }: { extraCls: string }) => (\n <div className={`bg-gray-900 flex flex-col justify-center py-14 rounded-2xl ${extraCls}`}>\n {show_logo && item.logo && (\n <img src={item.logo} alt={item.logo_alt || ''} className=\"h-8 mb-6 object-contain self-start\" />\n )}\n {show_stars && <Stars count={item.rating ?? 5} />}\n <blockquote className=\"relative\">\n {show_quote_mark && (\n <span className=\"absolute -top-8 -left-4 text-[8rem] leading-none font-serif select-none pointer-events-none text-white/10\" aria-hidden=\"true\">&ldquo;</span>\n )}\n <p className=\"text-xl md:text-2xl font-light leading-relaxed relative z-10 line-clamp-2 text-white\" style={textColorStyle}>\n {item.quote || 'Your quote goes here…'}\n </p>\n </blockquote>\n <div className=\"mt-6 flex flex-col gap-0.5\">\n {item.author_name && <p className=\"font-semibold text-sm text-white\" style={textColorStyle}>{item.author_name}</p>}\n {item.author_title && <p className=\"text-sm text-gray-400\">{item.author_title}</p>}\n </div>\n {count > 1 && (\n <div className=\"flex items-center gap-3 mt-6\">\n <button onClick={prev} className=\"w-9 h-9 rounded-full border border-gray-600 text-gray-300 hover:bg-gray-700 flex items-center justify-center text-lg\" aria-label=\"Previous testimonial\">‹</button>\n <span className=\"text-sm text-gray-400 tabular-nums\">{index + 1} / {count}</span>\n <button onClick={next} className=\"w-9 h-9 rounded-full border border-gray-600 text-gray-300 hover:bg-gray-700 flex items-center justify-center text-lg\" aria-label=\"Next testimonial\">›</button>\n </div>\n )}\n </div>\n );\n\n return (\n <section className={`${'bg-white'} ${className}`.trim()} style={sectionStyle}>\n <div className=\"component-container mx-auto px-6 py-8\">\n {(heading || subheading) && (\n <div className=\"mb-10\">\n {heading && <h2 className={`text-3xl font-bold mb-3 ${headingColor}`}>{heading}</h2>}\n {subheading && <p className={`text-lg ${subheadingColor}`}>{subheading}</p>}\n </div>\n )}\n <div className=\"grid grid-cols-1 md:grid-cols-5 items-center\">\n {imageLeft ? (\n <>\n <div className=\"md:col-span-2 md:pr-0\">\n <ImagePane extraCls=\"md:-mr-8\" />\n </div>\n <div className=\"md:col-span-3\">\n <ContentPane extraCls=\"pl-16 pr-12\" />\n </div>\n </>\n ) : (\n <>\n <div className=\"md:col-span-3\">\n <ContentPane extraCls=\"pr-16 pl-12\" />\n </div>\n <div className=\"md:col-span-2 md:pl-0\">\n <ImagePane extraCls=\"md:-ml-8\" />\n </div>\n </>\n )}\n </div>\n </div>\n </section>\n );\n };\n\n // ── REVIEW CARD ───────────────────────────────────────────────────────────\n const renderReviewCard = () => (\n <section className={`${sectionBg} ${className}`.trim()} style={sectionStyle}>\n <div className=\"component-container mx-auto px-6 py-16\">\n <SectionHeader />\n <div className={`max-w-2xl mx-auto ${'bg-white border border-gray-100 shadow-sm'} rounded-2xl p-8 md:p-10`}>\n {show_logo && item.logo && (\n <img src={item.logo} alt={item.logo_alt || ''} className=\"h-8 mb-6 object-contain\" />\n )}\n {show_stars && <Stars count={item.rating ?? 5} />}\n <blockquote className=\"relative\">\n {show_quote_mark && (\n <span\n className={`absolute -top-6 -left-2 text-[7rem] leading-none font-serif select-none pointer-events-none ${quoteMark}`}\n aria-hidden=\"true\"\n >&ldquo;</span>\n )}\n <p className={`text-lg md:text-xl leading-relaxed relative z-10 line-clamp-2 ${quoteColor}`} style={textColorStyle}>\n {item.quote ? `\"${item.quote}\"` : '\"Your quote goes here…\"'}\n </p>\n </blockquote>\n <AuthorBlock />\n <NavButtons index={index} count={count} onPrev={prev} onNext={next} />\n </div>\n </div>\n </section>\n );\n\n // ── EMPTY STATE ───────────────────────────────────────────────────────────\n if (!count) {\n return (\n <section className={`${sectionBg} ${className}`.trim()} style={sectionStyle}>\n <div className=\"component-container mx-auto px-6 py-16 text-center\">\n <p className={'text-gray-400'}>No testimonials added yet.</p>\n </div>\n </section>\n );\n }\n\n if (layout === 'side-image') return renderSideImage();\n if (layout === 'side-image-overlap') return renderSideImageOverlap();\n if (layout === 'review-card') return renderReviewCard();\n return renderCentered();\n}\n\nexport default Testimonial;\n","import React from 'react';\nimport { resolveStackableColor, hexToRgba } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface RatingSummaryLink {\n title?: string;\n href?: string;\n}\n\nexport interface RatingSummaryProps {\n rating?: number;\n max_rating?: number;\n review_count?: number;\n source_name?: string;\n link?: RatingSummaryLink;\n alignment?: 'left' | 'center' | 'right' | string;\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n star_color?: StackableColorValue;\n className?: string;\n}\n\nconst STAR_PATH =\n 'M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z';\n\nfunction Star({ fill, color, emptyClassName }: { fill: number; color: string; emptyClassName: string }) {\n const clamped = Math.max(0, Math.min(1, fill));\n return (\n <span className=\"relative inline-block h-5 w-5\">\n <svg viewBox=\"0 0 20 20\" className={`h-5 w-5 ${emptyClassName}`} aria-hidden=\"true\">\n <path d={STAR_PATH} />\n </svg>\n {clamped > 0 && (\n <span className=\"absolute inset-0 overflow-hidden\" style={{ width: `${clamped * 100}%` }}>\n <svg viewBox=\"0 0 20 20\" className=\"h-5 w-5\" style={{ fill: color }} aria-hidden=\"true\">\n <path d={STAR_PATH} />\n </svg>\n </span>\n )}\n </span>\n );\n}\n\nfunction StarRow({\n rating,\n maxRating,\n color,\n emptyClassName,\n}: {\n rating: number;\n maxRating: number;\n color: string;\n emptyClassName: string;\n}) {\n return (\n <div className=\"flex gap-0.5\" role=\"img\" aria-label={`${rating} out of ${maxRating} stars`}>\n {Array.from({ length: maxRating }, (_, i) => (\n <Star key={i} fill={rating - i} color={color} emptyClassName={emptyClassName} />\n ))}\n </div>\n );\n}\n\nconst JUSTIFY: Record<string, string> = {\n left: 'justify-start',\n center: 'justify-center',\n right: 'justify-end',\n};\n\nexport function RatingSummary({\n rating = 4.8,\n max_rating = 5,\n review_count = 2400,\n source_name = '',\n link,\n alignment = 'left',\n background_color,\n text_color,\n star_color,\n className = '',\n}: RatingSummaryProps) {\n const sectionThemeClasses = 'bg-white';\n const numberThemeClasses = 'text-neutral-900';\n const mutedThemeClasses = 'text-neutral-500';\n const linkThemeClasses = 'text-neutral-900 hover:text-neutral-600';\n const emptyStarThemeClasses = 'fill-neutral-200';\n\n const resolvedBg = resolveStackableColor(background_color);\n const resolvedText = resolveStackableColor(text_color);\n const resolvedStarColor = resolveStackableColor(star_color) || '#f59e0b';\n\n const sectionStyle = resolvedBg ? { backgroundColor: resolvedBg } : undefined;\n const textStyle: React.CSSProperties | undefined = resolvedText ? { color: resolvedText } : undefined;\n // The review-count text and the link each carry their own theme-based text-color\n // class, which wins over a color merely inherited from an ancestor — so a custom\n // text_color has to be applied directly on those elements too, not just on the\n // rating number that already sets it inline.\n const mutedTextStyle: React.CSSProperties | undefined = resolvedText ? { color: hexToRgba(resolvedText, 0.65) } : undefined;\n\n const justifyClass = JUSTIFY[alignment] ?? JUSTIFY.left;\n const clampedRating = Math.max(0, Math.min(max_rating, rating));\n const hasLink = Boolean(link?.href && link?.title);\n\n const reviewText = [\n review_count != null ? `${review_count.toLocaleString()} review${review_count === 1 ? '' : 's'}` : '',\n source_name ? `on ${source_name}` : '',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <section className={`${sectionThemeClasses} ${className}`.trim()} style={sectionStyle}>\n <div className={`component-container mx-auto flex px-6 py-8 ${justifyClass}`}>\n <div className=\"inline-flex flex-wrap items-center gap-3\">\n <StarRow\n rating={clampedRating}\n maxRating={max_rating}\n color={resolvedStarColor}\n emptyClassName={emptyStarThemeClasses}\n />\n <span className={`text-lg font-bold ${numberThemeClasses}`} style={textStyle}>\n {clampedRating.toFixed(1)}\n </span>\n {reviewText && <span className={`text-sm ${mutedThemeClasses}`} style={mutedTextStyle}>{reviewText}</span>}\n {hasLink && (\n <a href={link!.href} className={`text-sm font-semibold underline underline-offset-2 ${linkThemeClasses}`} style={textStyle}>\n {link!.title}\n </a>\n )}\n </div>\n </div>\n </section>\n );\n}\n\nexport default RatingSummary;\n","/* eslint-disable @next/next/no-img-element */\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { resolveStackableColor, hexToRgba } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface CardStackItem {\n content?: string;\n /** Exact substring of `content` to highlight in the accent colour. */\n highlight_text?: string;\n name?: string;\n designation?: string;\n /** Uploaded asset URL, or a Contentstack asset object. Optional. */\n avatar?: string | { url?: string };\n}\n\nexport interface CardStackProps {\n eyebrow_text?: string;\n heading?: string;\n items?: CardStackItem[];\n /** `auto` cycles on a timer (pausing while hovered); `drag` waits for the\n * visitor to throw the front card aside. Either way the front card goes to\n * the back of the stack and the one behind it takes its place. */\n interaction_mode?: 'auto' | 'drag' | string;\n /** Seconds between cycles in `auto` mode. */\n auto_interval?: number;\n background_color?: StackableColorValue;\n card_color?: StackableColorValue;\n text_color?: StackableColorValue;\n accent_color?: StackableColorValue;\n className?: string;\n}\n\n/** How far each card behind the front one peeks out above it. */\nconst CARD_OFFSET = 12;\n/** How much each card behind shrinks, so the stack reads as depth. */\nconst SCALE_STEP = 0.05;\n/** Cards deeper than this are kept mounted but hidden — three visible edges is\n * the look; ten stacked edges is a mess. */\nconst MAX_VISIBLE_DEPTH = 3;\n/** Horizontal travel before a release counts as \"throw it away\" rather than \"put it back\". */\nconst DRAG_THRESHOLD = 90;\n/** Must match the CSS transition below — this is how long the flung card is given\n * to clear the frame before it's quietly repositioned at the back. */\nconst FLY_OUT_MS = 320;\nconst EASE = 'cubic-bezier(0.22,1,0.36,1)';\n\nconst DEFAULT_ITEMS: CardStackItem[] = [\n {\n content: 'Every component ships with its content model already mapped, so there is nothing to wire up by hand.',\n highlight_text: 'nothing to wire up by hand',\n name: 'Krishna Gupta',\n designation: 'Associate Software Engineer',\n },\n {\n content: 'I can preview a section at every breakpoint before a single entry exists in the stack.',\n highlight_text: 'before a single entry exists',\n name: 'Dhruv Singh',\n designation: 'Associate Software Engineer',\n },\n {\n content: 'Our editors configure colours, layouts and CTAs themselves now — no tickets, no waiting on a deploy.',\n highlight_text: 'no tickets, no waiting on a deploy',\n name: 'Chinmayee Mestry',\n designation: 'Software Engineer II',\n },\n {\n content: 'Exporting the schema straight into Contentstack turned a two-day setup into about ten minutes.',\n highlight_text: 'a two-day setup into about ten minutes',\n name: 'Sayali Joshi',\n designation: 'Senior Software Engineer I',\n },\n {\n content: 'The prop names match the field names exactly, so there is no mapping layer to keep in sync.',\n highlight_text: 'no mapping layer to keep in sync',\n name: 'Lena Hoffmann',\n designation: 'Frontend Lead, Werkstatt Digital',\n },\n {\n content: 'We assembled a full campaign page from the catalogue in an afternoon instead of a sprint.',\n highlight_text: 'an afternoon instead of a sprint',\n name: 'Tomás Ferreira',\n designation: 'Digital Producer, Norte Studio',\n },\n {\n content: 'Every section is responsive out of the box, so nothing breaks when marketing swaps the copy.',\n highlight_text: 'responsive out of the box',\n name: 'Rachel Whitfield',\n designation: 'Director of Web Platform, Meridian Health',\n },\n];\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveAvatar(avatar: CardStackItem['avatar']): string {\n if (!avatar) return '';\n if (typeof avatar === 'string') return avatar.trim();\n return typeof avatar.url === 'string' ? avatar.url.trim() : '';\n}\n\nfunction prefersReducedMotion(): boolean {\n return typeof window !== 'undefined' && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n}\n\n/** Renders nothing once its image fails to load — a dead or hotlink-blocked\n * `avatar` URL would otherwise show the browser's broken-image icon forever,\n * where falling back to no photo (name + designation alone) reads as intentional\n * instead of broken. `key={src}` on the caller resets this if the URL changes. */\nfunction Avatar({ src, className }: { src: string; className: string }) {\n const [failed, setFailed] = useState(false);\n if (failed) return null;\n return <img src={src} alt=\"\" className={className} onError={() => setFailed(true)} />;\n}\n\n/** Splits `text` on the first occurrence of `highlight` and tints that slice. */\nfunction renderWithHighlight(text: string, highlight: string | undefined, accent: string) {\n const needle = highlight?.trim();\n if (!needle) return text;\n const index = text.indexOf(needle);\n if (index === -1) return text;\n return (\n <>\n {text.slice(0, index)}\n <span\n className=\"rounded font-medium\"\n style={{\n backgroundColor: hexToRgba(accent, 0.14),\n color: accent,\n // The padded look comes from a spread shadow rather than real padding:\n // padding would push whatever follows the highlight away from it, which\n // reads as a stray gap before a comma or full stop. `clone` so each line\n // of a wrapped highlight gets its own rounded box.\n boxShadow: `0 0 0 3px ${hexToRgba(accent, 0.14)}`,\n boxDecorationBreak: 'clone',\n WebkitBoxDecorationBreak: 'clone',\n }}\n >\n {needle}\n </span>\n {text.slice(index + needle.length)}\n </>\n );\n}\n\nexport function CardStack({\n eyebrow_text = '',\n heading = '',\n items = DEFAULT_ITEMS,\n interaction_mode = 'auto',\n auto_interval = 5,\n background_color,\n card_color,\n text_color,\n accent_color,\n className = '',\n}: CardStackProps) {\n const visibleItems = (items ?? []).filter((item) => item?.content?.trim() || item?.name?.trim());\n const count = visibleItems.length;\n\n // `order[0]` is the front card. Cycling rotates this rather than reordering the\n // items themselves, so each card keeps a stable React key and CSS can animate it\n // from wherever it was to wherever it now belongs.\n const [order, setOrder] = useState<number[]>(() => visibleItems.map((_, i) => i));\n const [flyingId, setFlyingId] = useState<number | null>(null);\n const [paused, setPaused] = useState(false);\n // Once a visitor manually steps through with the arrows, the timer stops for good\n // rather than resuming when the mouse next leaves — a manual click means they're\n // driving now, and a card jumping out from under them mid-read would undo that.\n const [autoStopped, setAutoStopped] = useState(false);\n // Read after mount rather than during render — `matchMedia` doesn't exist on the\n // server, and branching on it inline would desync the first client render.\n const [reduceMotion, setReduceMotion] = useState(false);\n // The drag deliberately runs on refs and CSS custom properties rather than\n // state. Gating on a state flag drops every pointermove that fires before the\n // flag flushes, which is felt as the card refusing to budge for the first few\n // pixels; and a setState per pointermove re-renders the whole stack at pointer\n // frequency. A ref reacts on the very first move, and writing `--drag-x`\n // straight to the node moves the card with no React work at all.\n const draggingRef = useRef(false);\n const dragStartRef = useRef(0);\n const dragXRef = useRef(0);\n const timersRef = useRef<ReturnType<typeof setTimeout>[]>([]);\n\n const isDragMode = interaction_mode === 'drag';\n\n // Cards show in the order the editor arranged them. Rebuilt when the count\n // changes (an editor adding or removing one), otherwise stale indices would\n // point at items that are gone.\n useEffect(() => {\n setOrder(Array.from({ length: count }, (_, i) => i));\n }, [count]);\n\n useEffect(() => setReduceMotion(prefersReducedMotion()), []);\n\n useEffect(() => () => timersRef.current.forEach(clearTimeout), []);\n\n const rotate = useCallback(() => {\n setOrder((prev) => (prev.length < 2 ? prev : [...prev.slice(1), prev[0]]));\n }, []);\n\n /** The reverse of `rotate` — pulls the back card to the front, for the \"previous\" control. */\n const rotateBack = useCallback(() => {\n setOrder((prev) => (prev.length < 2 ? prev : [prev[prev.length - 1], ...prev.slice(0, -1)]));\n }, []);\n\n // Auto mode: advance on a timer, pausing while hovered so a visitor mid-sentence\n // doesn't have the card pulled out from under them.\n useEffect(() => {\n if (isDragMode || count < 2 || paused || autoStopped) return;\n const seconds = Number(auto_interval) > 0 ? Number(auto_interval) : 5;\n const id = setInterval(rotate, seconds * 1000);\n return () => clearInterval(id);\n }, [isDragMode, count, paused, autoStopped, auto_interval, rotate]);\n\n /** Drag offset lives in custom properties the render never writes, so direct\n * updates here can't be clobbered by (or fight with) a React re-render. */\n const setDragVars = (el: HTMLElement, dx: number) => {\n el.style.setProperty('--drag-x', `${dx}px`);\n el.style.setProperty('--drag-rotate', `${dx / 22}deg`);\n };\n\n const onPointerDown = (e: React.PointerEvent<HTMLDivElement>) => {\n if (!isDragMode || count < 2 || flyingId !== null) return;\n draggingRef.current = true;\n dragStartRef.current = e.clientX;\n dragXRef.current = 0;\n // Zero the transition so the card tracks the pointer exactly.\n e.currentTarget.style.setProperty('--drag-duration', '0s');\n e.currentTarget.setPointerCapture(e.pointerId);\n };\n\n const onPointerMove = (e: React.PointerEvent<HTMLDivElement>) => {\n if (!draggingRef.current) return;\n const dx = e.clientX - dragStartRef.current;\n dragXRef.current = dx;\n setDragVars(e.currentTarget, dx);\n };\n\n const onPointerUp = (e: React.PointerEvent<HTMLDivElement>) => {\n if (!draggingRef.current) return;\n draggingRef.current = false;\n\n const el = e.currentTarget;\n el.releasePointerCapture(e.pointerId);\n el.style.removeProperty('--drag-duration');\n\n const dx = dragXRef.current;\n dragXRef.current = 0;\n\n if (Math.abs(dx) <= DRAG_THRESHOLD) {\n setDragVars(el, 0);\n return;\n }\n\n const direction = dx > 0 ? 1 : -1;\n setDragVars(el, direction * window.innerWidth);\n setFlyingId(order[0]);\n\n const t = setTimeout(() => {\n // Drop the flung card onto the back of the stack with its transition off for\n // one frame, or it would visibly sail back in from off-screen.\n el.style.setProperty('--drag-duration', '0s');\n setDragVars(el, 0);\n setFlyingId(null);\n rotate();\n requestAnimationFrame(() => el.style.removeProperty('--drag-duration'));\n }, FLY_OUT_MS);\n timersRef.current.push(t);\n };\n\n const resolvedBg = resolveStackableColor(background_color);\n const resolvedCard = resolveStackableColor(card_color) || '#ffffff';\n const resolvedText = resolveStackableColor(text_color) || '#171717';\n const resolvedAccent = resolveStackableColor(accent_color) || '#10b981';\n\n if (count === 0) return null;\n\n return (\n <section\n className={`bg-neutral-50 ${className}`.trim()}\n style={resolvedBg ? { backgroundColor: resolvedBg } : undefined}\n >\n <div className=\"component-container mx-auto px-6 py-16 sm:py-24\">\n {(eyebrow_text || heading) && (\n <div className=\"mx-auto mb-14 max-w-2xl text-center\">\n {eyebrow_text && (\n <p className=\"text-sm font-bold uppercase tracking-[0.2em]\" style={{ color: resolvedAccent }}>\n {eyebrow_text}\n </p>\n )}\n {heading && (\n <h2 className=\"mt-4 text-3xl font-bold tracking-tight sm:text-4xl\" style={{ color: resolvedText }}>\n {heading}\n </h2>\n )}\n </div>\n )}\n\n <div\n className=\"relative mx-auto h-64 w-full max-w-md sm:h-60\"\n onMouseEnter={() => setPaused(true)}\n onMouseLeave={() => setPaused(false)}\n >\n {order.map((itemId, depth) => {\n const item = visibleItems[itemId];\n if (!item) return null;\n\n const isFront = depth === 0;\n const isFlying = flyingId === itemId;\n const avatarSrc = resolveAvatar(item.avatar);\n\n // Deliberately a constant string per depth: the drag lives entirely in\n // `--drag-x` / `--drag-rotate`, so React re-rendering mid-drag produces\n // an identical transform and never stomps on the values being written\n // to the node by the pointer handlers.\n const transform =\n `translateX(var(--drag-x, 0px)) rotate(var(--drag-rotate, 0deg)) ` +\n `translateY(-${depth * CARD_OFFSET}px) scale(${1 - depth * SCALE_STEP})`;\n\n return (\n <figure\n key={itemId}\n // Only the front card is exposed: all of them are in the DOM at\n // once, so without this a screen reader reads every testimonial\n // as one run-on passage even though just one is visible.\n aria-hidden={isFront ? undefined : true}\n onPointerDown={isFront ? onPointerDown : undefined}\n onPointerMove={isFront ? onPointerMove : undefined}\n onPointerUp={isFront ? onPointerUp : undefined}\n onPointerCancel={isFront ? onPointerUp : undefined}\n className={`absolute inset-0 m-0 flex touch-pan-y select-none flex-col justify-between rounded-2xl p-6 shadow-xl ring-1 ring-black/5 sm:p-7 ${\n isDragMode && isFront ? 'cursor-grab active:cursor-grabbing' : ''\n }`}\n style={{\n backgroundColor: resolvedCard,\n color: resolvedText,\n transform,\n transformOrigin: 'top center',\n zIndex: count - depth,\n opacity: isFlying ? 0 : depth >= MAX_VISIBLE_DEPTH ? 0 : 1,\n // Duration comes from a custom property so the pointer handlers\n // can zero it (and restore it) without React and the DOM\n // disagreeing about what this inline style should be.\n transition: reduceMotion\n ? 'none'\n : `transform var(--drag-duration, ${FLY_OUT_MS}ms) ${EASE}, opacity var(--drag-duration, ${FLY_OUT_MS}ms) ${EASE}`,\n willChange: 'transform',\n }}\n >\n {item.content && (\n <blockquote className=\"m-0 text-base leading-relaxed sm:text-lg\">\n {renderWithHighlight(item.content, item.highlight_text, resolvedAccent)}\n </blockquote>\n )}\n\n <figcaption className=\"flex items-center gap-3\">\n {avatarSrc && (\n <Avatar\n key={avatarSrc}\n src={avatarSrc}\n className=\"h-10 w-10 shrink-0 rounded-full object-cover\"\n />\n )}\n <div className=\"min-w-0\">\n {item.name && <p className=\"truncate text-sm font-bold\">{item.name}</p>}\n {item.designation && (\n <p className=\"truncate text-sm\" style={{ color: hexToRgba(resolvedText, 0.6) }}>\n {item.designation}\n </p>\n )}\n </div>\n </figcaption>\n </figure>\n );\n })}\n </div>\n\n {isDragMode && count > 1 && (\n <div className=\"mt-8 flex flex-col items-center gap-3\">\n {/* Dragging is mouse-only, so without this there is no way to reach the\n remaining cards by keyboard. Hidden until focused, which keeps the\n design as-is for pointer users while still being reachable by Tab. */}\n <button\n type=\"button\"\n onClick={rotate}\n className=\"sr-only rounded-full px-4 py-2 text-sm font-semibold ring-2 focus:not-sr-only focus:relative\"\n style={{ color: resolvedAccent }}\n >\n Show next card\n </button>\n <p className=\"text-center text-xs\" style={{ color: hexToRgba(resolvedText, 0.5) }}>\n Drag a card aside to see the next one\n </p>\n </div>\n )}\n\n {!isDragMode && count > 1 && (\n <div className=\"mt-8 flex items-center justify-center gap-3\">\n {/* Lets a visitor jump ahead of (or back from) the timer instead of only waiting it out. */}\n <button\n type=\"button\"\n onClick={() => {\n setAutoStopped(true);\n rotateBack();\n }}\n aria-label=\"Show previous testimonial\"\n className=\"flex h-10 w-10 cursor-pointer items-center justify-center rounded-full shadow-md ring-1 ring-black/5 transition hover:scale-105\"\n style={{ backgroundColor: resolvedCard, color: resolvedAccent }}\n >\n <svg\n viewBox=\"0 0 24 24\"\n className=\"h-5 w-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M15 18l-6-6 6-6\" />\n </svg>\n </button>\n <button\n type=\"button\"\n onClick={() => {\n setAutoStopped(true);\n rotate();\n }}\n aria-label=\"Show next testimonial\"\n className=\"flex h-10 w-10 cursor-pointer items-center justify-center rounded-full shadow-md ring-1 ring-black/5 transition hover:scale-105\"\n style={{ backgroundColor: resolvedCard, color: resolvedAccent }}\n >\n <svg\n viewBox=\"0 0 24 24\"\n className=\"h-5 w-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M9 18l6-6-6-6\" />\n </svg>\n </button>\n </div>\n )}\n </div>\n </section>\n );\n}\n\nexport default CardStack;\n","/* eslint-disable @next/next/no-img-element */\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { resolveStackableColor, hexToRgba } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\n/** Native Contentstack link field: `{ title, href }`. */\nexport interface ReviewsLink {\n title?: string;\n href?: string;\n}\n\nexport interface ReviewsItem {\n /** The testimonial itself. Line breaks are kept. */\n quote?: string;\n author_name?: string;\n /** Role and company, e.g. `VP of Finance — Billy`. */\n author_role?: string;\n /**\n * Asset URL or a Contentstack asset object — both are accepted, since a file\n * field arrives as a URL from the catalog but as `{ url, … }` from the\n * Delivery API.\n */\n avatar?: string | { url?: string };\n avatar_alt?: string;\n}\n\nexport interface ReviewsProps {\n eyebrow_text?: string;\n heading?: string;\n heading_alignment?: 'left' | 'center' | 'right' | string;\n testimonials?: ReviewsItem[];\n /** Columns of cards. Reduced automatically when they would get too narrow. */\n columns?: number;\n /** Height of the scrolling area. */\n wall_height?: 'Short' | 'Medium' | 'Tall' | string;\n /** Seconds for one full loop. Higher is slower. */\n scroll_seconds?: number;\n /** Neighbouring columns travel in opposite directions. */\n alternate_direction?: boolean;\n pause_on_hover?: boolean;\n /** The rounded outer container. */\n show_frame?: boolean;\n /** Fades the cards out at the top and bottom edges. */\n show_fade?: boolean;\n /** Small line inside the floating footer pill. */\n footer_note?: string;\n /** Button inside the footer pill. The pill is hidden when both are empty. */\n footer_cta?: ReviewsLink;\n background_color?: StackableColorValue;\n /** The cards themselves. */\n card_color?: StackableColorValue;\n text_color?: StackableColorValue;\n button_color?: StackableColorValue;\n button_text_color?: StackableColorValue;\n className?: string;\n}\n\nconst DEFAULT_BG = '#faf9f7';\nconst DEFAULT_CARD = '#ffffff';\nconst DEFAULT_TEXT = '#111827';\nconst DEFAULT_BUTTON = '#111827';\nconst DEFAULT_BUTTON_TEXT = '#ffffff';\n\nconst ALIGNMENTS: Record<string, string> = {\n left: 'text-left items-start',\n center: 'text-center items-center',\n right: 'text-right items-end',\n};\n\nconst WALL_HEIGHTS: Record<string, number> = { Short: 420, Medium: 540, Tall: 680 };\n\n/** Narrowest a column may get before quotes become unreadable. */\nconst MIN_COLUMN_PX = 240;\nconst COLUMN_GAP_PX = 16;\n\n/**\n * Vertical space under each card. This is a margin rather than a flex `gap` on\n * purpose: the loop translates the track by exactly -50%, which only lands\n * seamlessly if one copy's height is exactly half the track. With `gap`, the\n * seam between the two copies adds one extra gap that half the track does not\n * account for, and the loop jumps by half a gap on every cycle.\n */\nconst CARD_GAP_PX = 16;\n\n/** Namespaced so the keyframes cannot collide with another component's. */\nconst ANIM = 'stackables-reviews-scroll';\n\nfunction resolveImage(image: ReviewsItem['avatar']): string {\n if (!image) return '';\n if (typeof image === 'string') return image.trim();\n return typeof image.url === 'string' ? image.url.trim() : '';\n}\n\n/** Round-robin, so columns stay balanced however many testimonials there are. */\nfunction toColumns<T>(items: T[], count: number): T[][] {\n const cols: T[][] = Array.from({ length: count }, () => []);\n items.forEach((item, i) => cols[i % count].push(item));\n return cols;\n}\n\nexport function Reviews({\n eyebrow_text = '',\n heading = '',\n heading_alignment = 'center',\n testimonials = [],\n columns = 3,\n wall_height = 'Medium',\n scroll_seconds = 40,\n alternate_direction = true,\n pause_on_hover = true,\n show_frame = true,\n show_fade = true,\n footer_note = '',\n footer_cta,\n background_color,\n card_color,\n text_color,\n button_color,\n button_text_color,\n className = '',\n}: ReviewsProps) {\n const wallRef = useRef<HTMLDivElement>(null);\n const [wallWidth, setWallWidth] = useState(0);\n const [hovered, setHovered] = useState(false);\n const [reduced, setReduced] = useState(false);\n\n // Measured rather than a CSS media query, so it tracks the component's own box\n // — the storybook preview simulates width with a fixed-px wrapper that media\n // queries can't see. Same approach as BentoGrid and HexTileGrid.\n useEffect(() => {\n const el = wallRef.current;\n if (!el) return;\n const ro = new ResizeObserver(([entry]) => setWallWidth(entry.contentRect.width));\n ro.observe(el);\n return () => ro.disconnect();\n }, []);\n\n // Continuous motion is exactly what a reduced-motion preference is about, so\n // the wall becomes a plain static column set for those visitors.\n useEffect(() => {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return;\n const mq = window.matchMedia('(prefers-reduced-motion: reduce)');\n setReduced(mq.matches);\n const onChange = (e: MediaQueryListEvent) => setReduced(e.matches);\n mq.addEventListener?.('change', onChange);\n return () => mq.removeEventListener?.('change', onChange);\n }, []);\n\n const bg = resolveStackableColor(background_color) || DEFAULT_BG;\n const card = resolveStackableColor(card_color) || DEFAULT_CARD;\n const text = resolveStackableColor(text_color) || DEFAULT_TEXT;\n const button = resolveStackableColor(button_color) || DEFAULT_BUTTON;\n const buttonText = resolveStackableColor(button_text_color) || DEFAULT_BUTTON_TEXT;\n\n const alignClass = ALIGNMENTS[heading_alignment] ?? ALIGNMENTS.center;\n const height = WALL_HEIGHTS[wall_height] ?? WALL_HEIGHTS.Medium;\n\n const visible = useMemo(\n () => (testimonials ?? []).filter((t) => Boolean(t?.quote?.trim()) || Boolean(t?.author_name?.trim())),\n [testimonials],\n );\n\n const safeColumns = Math.max(1, Math.min(4, Math.round(columns) || 3));\n // Before the first measurement, render at the authored count so the\n // server-rendered markup matches what a wide container settles on.\n const fitColumns =\n wallWidth === 0\n ? safeColumns\n : Math.max(\n 1,\n Math.min(safeColumns, Math.floor((wallWidth + COLUMN_GAP_PX) / (MIN_COLUMN_PX + COLUMN_GAP_PX))),\n );\n\n const cols = useMemo(() => toColumns(visible, fitColumns), [visible, fitColumns]);\n\n const seconds = Math.max(8, Number(scroll_seconds) || 40);\n const ctaLabel = footer_cta?.title?.trim() ?? '';\n const ctaHref = footer_cta?.href?.trim() ?? '';\n const hasFooter = Boolean(footer_note?.trim() || ctaLabel);\n\n const frameStyle: React.CSSProperties = show_frame\n ? {\n border: `1px solid ${hexToRgba(text, 0.1)}`,\n borderRadius: 24,\n padding: '2.5rem 1.5rem 3rem',\n }\n : {};\n\n const fade = show_fade\n ? 'linear-gradient(to bottom, transparent 0%, #000 11%, #000 89%, transparent 100%)'\n : undefined;\n\n const renderCard = (item: ReviewsItem, key: string, duplicate = false) => {\n const src = resolveImage(item.avatar);\n const initial = item.author_name?.trim()?.[0]?.toUpperCase() ?? '';\n return (\n <div\n key={key}\n // The second copy exists only to make the loop seamless, so it is hidden\n // from assistive tech and from the tab order.\n aria-hidden={duplicate || undefined}\n style={{\n backgroundColor: card,\n flexShrink: 0,\n border: `1px solid ${hexToRgba(text, 0.09)}`,\n borderRadius: 12,\n marginBottom: `${CARD_GAP_PX}px`,\n }}\n >\n {(item.author_name || item.author_role || src) && (\n <div\n className=\"flex items-center gap-2.5 px-4 py-3\"\n style={{ borderBottom: `1px solid ${hexToRgba(text, 0.07)}` }}\n >\n {src ? (\n <img\n src={src}\n alt={item.avatar_alt || item.author_name || ''}\n className=\"size-8 shrink-0 rounded-full object-cover\"\n loading=\"lazy\"\n />\n ) : (\n initial && (\n <span\n aria-hidden\n className=\"flex size-8 shrink-0 items-center justify-center rounded-full text-xs font-semibold\"\n style={{ backgroundColor: hexToRgba(text, 0.08), color: hexToRgba(text, 0.65) }}\n >\n {initial}\n </span>\n )\n )}\n <span className=\"min-w-0\">\n {item.author_name && (\n <span className=\"block truncate text-[13px] font-medium\" style={{ color: text }}>\n {item.author_name}\n </span>\n )}\n {item.author_role && (\n <span className=\"block truncate text-[11px]\" style={{ color: hexToRgba(text, 0.55) }}>\n {item.author_role}\n </span>\n )}\n </span>\n </div>\n )}\n\n {item.quote && (\n <p\n className=\"m-0 whitespace-pre-line px-4 py-3.5 text-[13px] leading-relaxed\"\n style={{ color: hexToRgba(text, 0.78) }}\n >\n {item.quote}\n </p>\n )}\n </div>\n );\n };\n\n return (\n <section className={className} style={{ backgroundColor: bg }}>\n {/* Namespaced keyframes, kept with the component rather than added to the\n shared stylesheet so this stays a single self-contained file. */}\n <style>{`@keyframes ${ANIM}{from{transform:translateY(0)}to{transform:translateY(-50%)}}`}</style>\n\n <div className=\"component-container mx-auto px-6 py-14 lg:py-20\">\n <div style={frameStyle}>\n {/* ── Heading ──────────────────────────────────────────────────── */}\n {(eyebrow_text || heading) && (\n <div className={`mb-10 flex flex-col ${alignClass}`}>\n {eyebrow_text && (\n <span\n className=\"mb-3 text-[11px] tracking-[0.18em]\"\n style={{ color: hexToRgba(text, 0.5), fontFamily: 'ui-monospace, SFMono-Regular, Menlo, monospace' }}\n >\n {eyebrow_text}\n </span>\n )}\n {heading && (\n <h2\n className=\"m-0 text-3xl font-bold tracking-tight sm:text-4xl\"\n style={{ color: text }}\n >\n {heading}\n </h2>\n )}\n </div>\n )}\n\n {/* ── The wall ─────────────────────────────────────────────────── */}\n <div className=\"relative\">\n <div\n ref={wallRef}\n className=\"w-full overflow-hidden\"\n style={{\n height: `${height}px`,\n maskImage: fade,\n WebkitMaskImage: fade,\n }}\n onMouseEnter={pause_on_hover ? () => setHovered(true) : undefined}\n onMouseLeave={pause_on_hover ? () => setHovered(false) : undefined}\n >\n {visible.length === 0 ? (\n <p className=\"text-sm\" style={{ color: hexToRgba(text, 0.6) }}>\n No testimonials added yet.\n </p>\n ) : (\n <div\n className=\"grid h-full\"\n style={{\n gridTemplateColumns: `repeat(${fitColumns}, minmax(0, 1fr))`,\n columnGap: `${COLUMN_GAP_PX}px`,\n }}\n >\n {cols.map((column, ci) => {\n const down = alternate_direction && ci % 2 === 1;\n // Columns are given slightly different durations so they\n // don't march in lockstep, which reads as one solid block.\n const duration = seconds * (1 + ci * 0.12);\n return (\n <div key={ci} className=\"overflow-hidden\">\n <div\n // A flex column, so the cards' bottom margins cannot\n // collapse. In a block container the last margin of one\n // copy can collapse away, and then half the track is no\n // longer exactly one copy — the loop jumps every cycle.\n style={{\n display: 'flex',\n flexDirection: 'column',\n ...(reduced\n ? {}\n : {\n animation: `${ANIM} ${duration.toFixed(2)}s linear infinite`,\n animationDirection: down ? 'reverse' : 'normal',\n animationPlayState: hovered ? 'paused' : 'running',\n willChange: 'transform',\n }),\n }}\n >\n {/* Rendered twice, as flat siblings, so -50% lands the\n second copy exactly where the first began. */}\n {column.map((item, i) => renderCard(item, `a-${i}`))}\n {!reduced && column.map((item, i) => renderCard(item, `b-${i}`, true))}\n </div>\n </div>\n );\n })}\n </div>\n )}\n </div>\n\n {/* ── Floating footer pill ───────────────────────────────────── */}\n {hasFooter && visible.length > 0 && (\n <div className=\"pointer-events-none absolute inset-x-0 bottom-4 flex justify-center\">\n <div\n className=\"pointer-events-auto flex items-center gap-3 rounded-full py-1.5 pr-1.5 pl-5\"\n style={{\n backgroundColor: card,\n border: `1px solid ${hexToRgba(text, 0.09)}`,\n boxShadow: `0 4px 20px ${hexToRgba(text, 0.1)}`,\n }}\n >\n {footer_note && (\n <span className=\"text-[13px]\" style={{ color: hexToRgba(text, 0.7) }}>\n {footer_note}\n </span>\n )}\n {ctaLabel &&\n (ctaHref ? (\n <a\n href={ctaHref}\n className=\"rounded-full px-4 py-2 text-[13px] font-medium transition-opacity duration-200 hover:opacity-85\"\n style={{ backgroundColor: button, color: buttonText }}\n >\n {ctaLabel}\n </a>\n ) : (\n <span\n className=\"rounded-full px-4 py-2 text-[13px] font-medium\"\n style={{ backgroundColor: button, color: buttonText }}\n >\n {ctaLabel}\n </span>\n ))}\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n </section>\n );\n}\n\nexport default Reviews;\n","import React from 'react';\nimport { hexToRgba, resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport type LogoCloudScrollMode = 'static' | 'auto';\nexport type LogoCloudDirection = 'horizontal' | 'grid';\nexport type LogoCloudLogoStyle = 'plain' | 'card';\n\nexport interface LogoCloudLogo {\n /** Asset URL, or a Contentstack asset object — both are accepted. */\n image?: string | { url?: string };\n name?: string;\n url?: string;\n}\n\nexport interface LogoCloudProps {\n className?: string;\n eyebrow_text?: string;\n heading?: string;\n subheading?: string;\n logos?: LogoCloudLogo[];\n /** 'static' renders a plain list, 'auto' scrolls continuously on a timer */\n scroll_mode?: LogoCloudScrollMode | string;\n /** Layout: 'horizontal' is a single row (can auto-scroll), 'grid' wraps logos into a fixed-column grid */\n direction?: LogoCloudDirection | string;\n logo_style?: LogoCloudLogoStyle | string;\n /** Seconds for one full auto-scroll loop (only used when scroll_mode is 'auto') */\n scroll_speed?: number;\n /** Number of columns per row when direction is 'grid' */\n grid_columns?: number;\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n}\n\nconst DEFAULT_LOGOS: LogoCloudLogo[] = [\n { name: 'Amazon' },\n { name: 'Microsoft' },\n { name: 'Notion' },\n { name: 'Monzo' },\n { name: 'Atlassian' },\n { name: 'Webex' },\n { name: 'New Relic' },\n { name: 'Udemy' },\n];\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveImage(image?: string | { url?: string }): string {\n if (!image) return '';\n if (typeof image === 'string') return image.trim();\n return typeof image.url === 'string' ? image.url.trim() : '';\n}\n\nfunction resolveLogos(logos?: LogoCloudLogo[]): LogoCloudLogo[] {\n const filled = (logos ?? []).filter((l) => Boolean(resolveImage(l?.image)) || l?.name?.trim());\n return filled.length ? filled : DEFAULT_LOGOS;\n}\n\nexport function LogoCloud({\n className,\n eyebrow_text: eyebrowText,\n heading,\n subheading,\n logos: logosProp,\n scroll_mode = 'static',\n direction = 'horizontal',\n logo_style = 'plain',\n scroll_speed = 24,\n grid_columns = 6,\n background_color,\n text_color,\n}: LogoCloudProps) {\n const logos = resolveLogos(logosProp);\n const bgColor = resolveStackableColor(background_color) || '#ffffff';\n const textHex = resolveStackableColor(text_color) || '#111827';\n\n const isGrid = (direction as string) === 'grid';\n const isAuto = !isGrid && (scroll_mode as string) === 'auto';\n const isCard = (logo_style as string) === 'card';\n const duration = Math.max(4, Number(scroll_speed) || 24);\n const columns = Math.max(1, Number(grid_columns) || 6);\n\n const viewportClass = isAuto ? 'logo-cloud__viewport--auto-x' : '';\n\n const trackClass = [\n 'logo-cloud__track',\n isGrid ? 'logo-cloud__track--grid' : 'logo-cloud__track--row',\n !isGrid && !isAuto ? 'logo-cloud__track--wrap' : '',\n isAuto ? 'logo-cloud__track--scroll-x' : '',\n ].filter(Boolean).join(' ');\n\n const trackStyle: React.CSSProperties = isAuto\n ? { animationDuration: `${duration}s` }\n : isGrid\n ? ({ '--logo-cloud-grid-columns': columns } as React.CSSProperties)\n : {};\n\n function renderLogo(logo: LogoCloudLogo, idx: number) {\n const imageSrc = resolveImage(logo.image);\n const content = imageSrc ? (\n <img src={imageSrc} alt={logo.name || `Logo ${idx + 1}`} className=\"logo-cloud__img\" />\n ) : (\n <span className=\"logo-cloud__placeholder-text\" style={{ color: hexToRgba(textHex, 0.75) }}>\n {logo.name || `Logo ${idx + 1}`}\n </span>\n );\n const wrapped = isCard ? <div className=\"logo-cloud__card\">{content}</div> : content;\n\n return logo.url?.trim() ? (\n <a\n key={idx}\n href={logo.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"logo-cloud__link\"\n >\n {wrapped}\n </a>\n ) : (\n <div key={idx} className=\"logo-cloud__item\">\n {wrapped}\n </div>\n );\n }\n\n return (\n <section className={`relative w-full ${className ?? ''}`.trim()} style={{ backgroundColor: bgColor }}>\n <div className=\"component-container mx-auto px-6 py-16 flex flex-col items-center gap-4 text-center\">\n\n {eyebrowText && (\n <div className=\"flex items-center justify-center gap-3\">\n <span className=\"block h-px w-8 flex-shrink-0\" style={{ backgroundColor: hexToRgba(textHex, 0.3) }} />\n <span\n className=\"text-xs font-semibold uppercase tracking-[0.15em]\"\n style={{ color: hexToRgba(textHex, 0.55) }}\n >\n {eyebrowText}\n </span>\n <span className=\"block h-px w-8 flex-shrink-0\" style={{ backgroundColor: hexToRgba(textHex, 0.3) }} />\n </div>\n )}\n\n {heading && (\n <h2 className=\"text-3xl font-bold leading-tight max-w-2xl\" style={{ color: textHex }}>\n {heading}\n </h2>\n )}\n\n {subheading && (\n <p className=\"text-base max-w-xl\" style={{ color: hexToRgba(textHex, 0.65) }}>\n {subheading}\n </p>\n )}\n\n <div className={`logo-cloud__viewport ${viewportClass}`.trim()}>\n <div className={trackClass} style={trackStyle}>\n {logos.map((logo, i) => renderLogo(logo, i))}\n {isAuto && logos.map((logo, i) => renderLogo(logo, logos.length + i))}\n </div>\n </div>\n\n </div>\n </section>\n );\n}\n\nexport default LogoCloud;\n","import React, { useState } from 'react';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface FaqItem {\n question?: string;\n answer?: string;\n}\n\nexport interface FaqProps {\n heading?: string;\n subheading?: string;\n heading_alignment?: 'left' | 'center' | string;\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n layout?: 'offset' | 'list' | 'grid' | string;\n style?: 'plain' | 'accordion' | string;\n columns?: number;\n support_text?: string;\n support_link_label?: string;\n support_link_url?: string;\n faqs?: FaqItem[];\n className?: string;\n}\n\nfunction ChevronIcon({ open }: { open: boolean }) {\n return (\n <svg\n className={`w-5 h-5 flex-shrink-0 transition-transform duration-200 ${open ? 'rotate-180' : ''}`}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n );\n}\n\nexport function FAQ({\n heading = '',\n subheading = '',\n heading_alignment = 'left',\n background_color,\n text_color,\n layout = 'offset',\n style = 'plain',\n columns = 2,\n support_text = '',\n support_link_label = '',\n support_link_url = '#',\n faqs = [],\n className = '',\n}: FaqProps) {\n const [openItems, setOpenItems] = useState<Record<number, boolean>>({});\n const isAccordion = style === 'accordion';\n\n const resolvedBg = resolveStackableColor(background_color as StackableColorValue);\n const resolvedTextColor = resolveStackableColor(text_color as StackableColorValue);\n const sectionBg = 'bg-gray-900';\n const sectionStyle = resolvedBg ? { backgroundColor: resolvedBg } : undefined;\n const textColorStyle: React.CSSProperties | undefined = resolvedTextColor ? { color: resolvedTextColor } : undefined;\n const headingColor = 'text-white';\n const subColor = 'text-gray-400';\n const questionColor = 'text-white';\n const answerColor = 'text-gray-300';\n const dividerColor = 'border-gray-700';\n const chevronColor = 'text-gray-400';\n const hoverBg = 'hover:bg-gray-800';\n\n const toggleItem = (i: number) =>\n setOpenItems(prev => ({ ...prev, [i]: !prev[i] }));\n\n const isEmpty = !faqs || faqs.length === 0;\n const safeCols = Math.max(2, Math.min(3, columns || 2));\n\n // ── Single FAQ item ──────────────────────────────────────────────────────\n const FaqEntry = ({ item, index, showDivider = false }: { item: FaqItem; index: number; showDivider?: boolean }) => {\n const isOpen = openItems[index] ?? false;\n\n if (isAccordion) {\n return (\n <div className={`${showDivider ? `border-b ${dividerColor}` : ''}`}>\n <button\n onClick={() => toggleItem(index)}\n className={`w-full flex items-center justify-between gap-4 py-5 text-left ${hoverBg} transition-colors px-1 -mx-1 rounded`}\n aria-expanded={isOpen}\n >\n <span className={`font-semibold text-base ${questionColor}`} style={textColorStyle}>\n {item.question || 'Question goes here'}\n </span>\n <span className={chevronColor}>\n <ChevronIcon open={isOpen} />\n </span>\n </button>\n {isOpen && (\n <p className={`pb-5 text-sm leading-relaxed ${answerColor}`}>\n {item.answer || 'Answer goes here.'}\n </p>\n )}\n </div>\n );\n }\n\n // plain\n return (\n <div className={`${showDivider ? `border-b ${dividerColor}` : ''} py-5`}>\n <p className={`font-semibold text-base mb-2 ${questionColor}`} style={textColorStyle}>\n {item.question || 'Question goes here'}\n </p>\n <p className={`text-sm leading-relaxed ${answerColor}`}>\n {item.answer || 'Answer goes here.'}\n </p>\n </div>\n );\n };\n\n // ── Support text helper (used in offset layout) ───────────────────────────\n const SupportText = () => {\n if (!support_text) return null;\n const parts = support_link_label\n ? support_text.split(support_link_label)\n : [support_text];\n return (\n <p className={`text-sm leading-relaxed mt-4 ${subColor}`}>\n {parts[0]}\n {support_link_label && (\n <a\n href={support_link_url || '#'}\n className=\"font-medium text-[#715cdd] hover:underline\"\n >\n {support_link_label}\n </a>\n )}\n {parts[1]}\n </p>\n );\n };\n\n // ── OFFSET LAYOUT ─────────────────────────────────────────────────────────\n // Left 1/3: heading + support text | Right 2/3: Q&A list\n const renderOffset = () => (\n <section className={`${sectionBg} ${className}`.trim()} style={sectionStyle}>\n <div className=\"component-container mx-auto px-6 py-16\">\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-12 lg:gap-16\">\n {/* Left panel */}\n <div className=\"lg:col-span-1\">\n {heading && (\n <h2 className={`text-3xl font-bold tracking-tight ${headingColor}`} style={textColorStyle}>{heading}</h2>\n )}\n {subheading && (\n <p className={`mt-4 text-sm leading-relaxed ${subColor}`}>{subheading}</p>\n )}\n <SupportText />\n </div>\n\n {/* Right panel */}\n <div className=\"lg:col-span-2\">\n {isEmpty ? (\n <p className={subColor}>No FAQs added yet.</p>\n ) : (\n <dl className={`divide-y ${dividerColor}`}>\n {faqs.map((item, i) => (\n <FaqEntry key={i} item={item} index={i} />\n ))}\n </dl>\n )}\n </div>\n </div>\n </div>\n </section>\n );\n\n // ── LIST LAYOUT ───────────────────────────────────────────────────────────\n // Full-width heading, then each FAQ is a side-by-side row: Q left | A right\n const renderList = () => (\n <section className={`${sectionBg} ${className}`.trim()} style={sectionStyle}>\n <div className=\"component-container mx-auto px-6 py-16\">\n {/* Heading block */}\n {(heading || subheading) && (\n <div className={`mb-10 ${heading_alignment === 'center' ? 'text-center' : ''}`}>\n {heading && (\n <h2 className={`text-3xl font-bold tracking-tight ${headingColor}`} style={textColorStyle}>{heading}</h2>\n )}\n {subheading && (\n <p className={`mt-4 max-w-2xl text-sm leading-relaxed ${subColor} ${heading_alignment === 'center' ? 'mx-auto' : ''}`}>\n {subheading}\n </p>\n )}\n <SupportText />\n </div>\n )}\n\n {/* FAQ rows */}\n {isEmpty ? (\n <p className={subColor}>No FAQs added yet.</p>\n ) : isAccordion ? (\n <dl className={`divide-y ${dividerColor} border-t ${dividerColor}`}>\n {faqs.map((item, i) => (\n <FaqEntry key={i} item={item} index={i} />\n ))}\n </dl>\n ) : (\n <dl className={`divide-y ${dividerColor} border-t ${dividerColor}`}>\n {faqs.map((item, i) => (\n <div key={i} className=\"grid grid-cols-1 md:grid-cols-2 gap-6 py-6\">\n <dt className={`font-semibold text-base ${questionColor}`} style={textColorStyle}>\n {item.question || 'Question goes here'}\n </dt>\n <dd className={`text-sm leading-relaxed ${answerColor}`}>\n {item.answer || 'Answer goes here.'}\n </dd>\n </div>\n ))}\n </dl>\n )}\n </div>\n </section>\n );\n\n // ── GRID LAYOUT ───────────────────────────────────────────────────────────\n // Heading centered or left, then Q&A items in N-column grid\n const renderGrid = () => {\n const gridCols = safeCols === 3\n ? 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3'\n : 'grid-cols-1 md:grid-cols-2';\n\n return (\n <section className={`${sectionBg} ${className}`.trim()} style={sectionStyle}>\n <div className=\"component-container mx-auto px-6 py-16\">\n {/* Heading block */}\n {(heading || subheading) && (\n <div className={`mb-12 ${heading_alignment === 'center' ? 'text-center' : ''}`}>\n {heading && (\n <h2 className={`text-3xl font-bold tracking-tight ${headingColor}`} style={textColorStyle}>{heading}</h2>\n )}\n {subheading && (\n <p className={`mt-4 max-w-2xl text-sm leading-relaxed ${subColor} ${heading_alignment === 'center' ? 'mx-auto' : ''}`}>\n {subheading}\n </p>\n )}\n <SupportText />\n </div>\n )}\n\n {/* FAQ grid */}\n {isEmpty ? (\n <p className={`${subColor} ${heading_alignment === 'center' ? 'text-center' : ''}`}>\n No FAQs added yet.\n </p>\n ) : isAccordion ? (\n <dl className={`divide-y ${dividerColor} border-t ${dividerColor}`}>\n {faqs.map((item, i) => (\n <FaqEntry key={i} item={item} index={i} />\n ))}\n </dl>\n ) : (\n <dl className={`grid ${gridCols} gap-x-8 gap-y-10`}>\n {faqs.map((item, i) => (\n <div key={i}>\n <dt className={`font-semibold text-base mb-2 ${questionColor}`} style={textColorStyle}>\n {item.question || 'Question goes here'}\n </dt>\n <dd className={`text-sm leading-relaxed ${answerColor}`}>\n {item.answer || 'Answer goes here.'}\n </dd>\n </div>\n ))}\n </dl>\n )}\n </div>\n </section>\n );\n };\n\n if (layout === 'list') return renderList();\n if (layout === 'grid') return renderGrid();\n return renderOffset();\n}\n\nexport default FAQ;\n","import React, { useState } from 'react';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface FaqCategorizedItem {\n question?: string;\n answer?: string;\n /** Rendered as a link inside the answer — inline if this exact text appears in `answer`, appended after it otherwise. */\n link_label?: string;\n link_url?: string;\n}\n\nexport interface FaqCategorizedCategory {\n name?: string;\n /** Uploaded asset URL, or a Contentstack asset object. Shown beside every question in this\n * category, and on the category's own filter pill. Nothing renders when it's empty.\n * Alt text comes from `name` — no separate field for editors to fill. */\n icon?: string | { url?: string };\n items?: FaqCategorizedItem[];\n}\n\nexport interface FaqCategorizedProps {\n heading?: string;\n subheading?: string;\n /** Rendered as a link inside the subheading, same inline-or-appended behavior as an item's link. */\n support_link_label?: string;\n support_link_url?: string;\n theme?: 'light' | 'dark' | 'auto' | string;\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n /** Active category pill, item icon borders, and inline links. */\n accent_color?: StackableColorValue;\n categories?: FaqCategorizedCategory[];\n className?: string;\n}\n\n/** Sentinel for the always-present \"All\" pill, which keeps real category indexes unshifted. */\nconst ALL_CATEGORIES = -1;\nconst ALL_LABEL = 'All';\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveIcon(icon: FaqCategorizedCategory['icon']): string {\n if (!icon) return '';\n if (typeof icon === 'string') return icon.trim();\n return typeof icon.url === 'string' ? icon.url.trim() : '';\n}\n\nfunction ChevronIcon({ open }: { open: boolean }) {\n return (\n <svg\n className={`h-5 w-5 flex-shrink-0 transition-transform duration-200 ${open ? 'rotate-180' : ''}`}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n );\n}\n\n/** Splits `text` on `linkLabel` and renders that exact substring as a link; appends it as a\n * standalone link when it isn't found verbatim (e.g. editor changed the label but not the copy). */\nfunction TextWithInlineLink({\n text,\n linkLabel,\n linkUrl,\n linkClassName,\n}: {\n text?: string;\n linkLabel?: string;\n linkUrl?: string;\n linkClassName: string;\n}) {\n if (!text) return null;\n if (!linkLabel) return <>{text}</>;\n\n const index = text.indexOf(linkLabel);\n if (index === -1) {\n return (\n <>\n {text}{' '}\n <a href={linkUrl || '#'} className={linkClassName}>\n {linkLabel}\n </a>\n </>\n );\n }\n\n const before = text.slice(0, index);\n const after = text.slice(index + linkLabel.length);\n return (\n <>\n {before}\n <a href={linkUrl || '#'} className={linkClassName}>\n {linkLabel}\n </a>\n {after}\n </>\n );\n}\n\nconst DEFAULT_CATEGORIES: FaqCategorizedCategory[] = [\n {\n name: 'General',\n items: [\n { question: 'Is there a free trial available?', answer: \"Yes, you can try us for free for 30 days. If you want, we'll provide you with a free 30-minute onboarding call to get you up and running.\" },\n { question: 'Can I change my plan later?', answer: 'Yes, you can upgrade or downgrade your plan at any time from your account settings.' },\n { question: 'What is your cancellation policy?', answer: \"We understand that things change. You can cancel your plan at any time, no questions asked.\" },\n ],\n },\n {\n name: 'Pricing',\n items: [\n { question: 'How does billing work?', answer: \"We bill monthly or annually, depending on the plan you choose. You'll receive an invoice by email each cycle.\" },\n { question: 'Can other info be added to an invoice?', answer: 'Yes, you can add your billing address, VAT number, and PO number in your account settings.' },\n ],\n },\n {\n name: 'Dashboard',\n items: [\n { question: 'How do I change my account email?', answer: 'Go to Account Settings and update your email address — we\\'ll send a confirmation link to verify it.' },\n ],\n },\n {\n name: 'API',\n items: [\n { question: 'How does support work?', answer: 'Our support team is available around the clock to answer any questions you have.' },\n ],\n },\n];\n\nexport function FaqCategorized({\n heading = 'Frequently asked questions',\n subheading = 'These are the most commonly asked questions. Can\\'t find what you\\'re looking for?',\n support_link_label = 'Chat to our friendly team!',\n support_link_url = '#',\n theme = 'light',\n background_color,\n text_color,\n accent_color,\n categories = DEFAULT_CATEGORIES,\n className = '',\n}: FaqCategorizedProps) {\n const visibleCategories = (categories ?? []).filter((c) => c?.name?.trim() || (c?.items?.length ?? 0) > 0);\n\n // Stable across renders and unique per instance, so two FAQs on one page don't collide ids.\n const instanceId = React.useId().replace(/:/g, '');\n const [activeCategory, setActiveCategory] = useState(ALL_CATEGORIES);\n const [openItems, setOpenItems] = useState<Record<number, boolean>>({ 0: true });\n\n const selectCategory = (index: number) => {\n setActiveCategory(index);\n setOpenItems({ 0: true });\n };\n\n const toggleItem = (index: number) => setOpenItems((prev) => ({ ...prev, [index]: !prev[index] }));\n\n const isDark = theme === 'dark';\n const sectionThemeClasses =\n theme === 'dark' ? 'bg-neutral-950'\n : theme === 'light' ? 'bg-white'\n : 'bg-white dark:bg-neutral-950';\n\n const headingColor = isDark ? 'text-white' : 'text-neutral-900';\n const subColor = isDark ? 'text-neutral-400' : 'text-neutral-600';\n const questionColor = isDark ? 'text-white' : 'text-neutral-900';\n const answerColor = isDark ? 'text-neutral-400' : 'text-neutral-600';\n const dividerColor = isDark ? 'divide-neutral-800' : 'divide-neutral-200';\n const iconBoxClasses = isDark ? 'border-neutral-700 text-neutral-400' : 'border-neutral-200 text-neutral-400';\n const pillIdleClasses = isDark\n ? 'border-neutral-700 text-neutral-300 hover:bg-white/10 hover:border-neutral-500'\n : 'border-neutral-300 text-neutral-700 hover:bg-neutral-100 hover:border-neutral-400';\n // Shared interaction affordances: pointer cursor, lift on hover, press feedback, and a\n // visible keyboard focus ring (focus-visible only, so mouse users don't see it).\n const pillInteractionClasses =\n 'cursor-pointer select-none transition-all duration-200 hover:-translate-y-0.5 active:translate-y-0 active:scale-95 ' +\n 'focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 ' +\n (isDark ? 'focus-visible:ring-white/60 focus-visible:ring-offset-neutral-950' : 'focus-visible:ring-neutral-900/40 focus-visible:ring-offset-white');\n const rowInteractionClasses =\n 'group cursor-pointer rounded-lg transition-colors duration-200 focus:outline-none focus-visible:ring-2 ' +\n (isDark ? 'focus-visible:ring-white/60' : 'focus-visible:ring-neutral-900/40');\n const rowHoverBg = isDark ? 'hover:bg-white/5' : 'hover:bg-neutral-50';\n\n const resolvedBg = resolveStackableColor(background_color);\n const resolvedText = resolveStackableColor(text_color);\n const accent = resolveStackableColor(accent_color) || (isDark ? '#ffffff' : '#18181b');\n const accentText = isDark ? '#18181b' : '#ffffff';\n\n const sectionStyle = resolvedBg ? { backgroundColor: resolvedBg } : undefined;\n const textStyle: React.CSSProperties | undefined = resolvedText ? { color: resolvedText } : undefined;\n\n if (visibleCategories.length === 0) return null;\n\n // \"All\" is index -1 so category indexes stay stable regardless of whether the pill is shown.\n // Each entry carries its own category's icon, since All mixes items from several categories.\n const currentItems: Array<{ item: FaqCategorizedItem; iconSrc: string; iconAlt: string }> =\n activeCategory === ALL_CATEGORIES\n ? visibleCategories.reduce<Array<{ item: FaqCategorizedItem; iconSrc: string; iconAlt: string }>>((acc, category) => {\n const iconSrc = resolveIcon(category.icon);\n const iconAlt = (category.name ?? '').trim();\n (category.items ?? []).forEach((item) => acc.push({ item, iconSrc, iconAlt }));\n return acc;\n }, [])\n : (visibleCategories[activeCategory]?.items ?? []).map((item) => ({\n item,\n iconSrc: resolveIcon(visibleCategories[activeCategory]?.icon),\n iconAlt: (visibleCategories[activeCategory]?.name ?? '').trim(),\n }));\n\n return (\n <section className={`${sectionThemeClasses} ${className}`.trim()} style={sectionStyle}>\n <div className=\"component-container mx-auto px-6 py-16 lg:py-20\">\n <div className=\"mx-auto max-w-2xl text-center\">\n {heading && (\n <h2 className={`text-3xl font-bold tracking-tight sm:text-4xl ${headingColor}`} style={textStyle}>\n {heading}\n </h2>\n )}\n {subheading && (\n <p className={`mt-4 text-sm leading-relaxed ${subColor}`}>\n <TextWithInlineLink\n text={subheading}\n linkLabel={support_link_label}\n linkUrl={support_link_url}\n linkClassName=\"font-medium underline underline-offset-2\"\n />\n </p>\n )}\n </div>\n\n {visibleCategories.length > 1 && (\n <div className=\"mt-8 flex flex-wrap items-center justify-center gap-2\">\n <button\n type=\"button\"\n onClick={() => selectCategory(ALL_CATEGORIES)}\n aria-pressed={activeCategory === ALL_CATEGORIES}\n className={`inline-flex items-center gap-2 rounded-full border px-4 py-2 text-sm font-semibold ${pillInteractionClasses} ${\n activeCategory === ALL_CATEGORIES ? '' : pillIdleClasses\n }`}\n style={\n activeCategory === ALL_CATEGORIES\n ? { backgroundColor: accent, borderColor: accent, color: accentText }\n : undefined\n }\n >\n {ALL_LABEL}\n </button>\n {visibleCategories.map((category, index) => {\n const isActive = index === activeCategory;\n const pillIconSrc = resolveIcon(category.icon);\n return (\n <button\n key={`${category.name ?? 'category'}-${index}`}\n type=\"button\"\n onClick={() => selectCategory(index)}\n aria-pressed={isActive}\n className={`inline-flex items-center gap-2 rounded-full border px-4 py-2 text-sm font-semibold ${pillInteractionClasses} ${\n isActive ? '' : pillIdleClasses\n }`}\n style={isActive ? { backgroundColor: accent, borderColor: accent, color: accentText } : undefined}\n >\n {/* The pill's own text already names the category, so the icon is decorative here\n regardless of icon_alt — repeating it would just double-announce. */}\n {pillIconSrc && (\n <img src={pillIconSrc} alt=\"\" aria-hidden=\"true\" loading=\"lazy\" decoding=\"async\" className=\"h-4 w-4 shrink-0 object-contain\" />\n )}\n {category.name || `Category ${index + 1}`}\n </button>\n );\n })}\n </div>\n )}\n\n <div className=\"mx-auto mt-10 max-w-2xl\">\n <dl className={`divide-y ${dividerColor}`}>\n {currentItems.map(({ item, iconSrc, iconAlt }, index) => {\n const isOpen = openItems[index] ?? false;\n const panelId = `${instanceId}-answer-${index}`;\n const buttonId = `${instanceId}-question-${index}`;\n return (\n <div key={index} className=\"py-5\">\n <dt>\n <button\n id={buttonId}\n type=\"button\"\n onClick={() => toggleItem(index)}\n className={`flex w-full items-start gap-4 p-1 text-left ${rowInteractionClasses} ${rowHoverBg}`}\n aria-expanded={isOpen}\n aria-controls={panelId}\n >\n {iconSrc && (\n <img\n src={iconSrc}\n alt={iconAlt}\n aria-hidden={iconAlt ? undefined : true}\n loading=\"lazy\"\n decoding=\"async\"\n className={`h-10 w-10 shrink-0 rounded-lg border object-contain p-2 transition-transform duration-200 group-hover:scale-105 ${iconBoxClasses}`}\n />\n )}\n <span className={`flex-1 pt-2 font-semibold ${questionColor}`} style={textStyle}>\n {item.question || 'Question goes here'}\n </span>\n <span className={`mt-2 transition-colors duration-200 ${subColor} group-hover:opacity-70`}>\n <ChevronIcon open={isOpen} />\n </span>\n </button>\n </dt>\n <dd\n id={panelId}\n role=\"region\"\n aria-labelledby={buttonId}\n hidden={!isOpen}\n className={`mt-3 text-sm leading-relaxed ${answerColor} ${iconSrc ? 'pl-15' : 'pl-1'}`}\n >\n <TextWithInlineLink\n text={item.answer || 'Answer goes here.'}\n linkLabel={item.link_label}\n linkUrl={item.link_url}\n linkClassName={`font-medium underline underline-offset-2 transition-opacity duration-200 hover:opacity-70 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 rounded ${isDark ? 'focus-visible:ring-white/60 focus-visible:ring-offset-neutral-950' : 'focus-visible:ring-neutral-900/40 focus-visible:ring-offset-white'}`}\n />\n </dd>\n </div>\n );\n })}\n </dl>\n </div>\n </div>\n </section>\n );\n}\n\nexport default FaqCategorized;\n","import React from 'react';\nimport {\n ExclamationTriangleIcon,\n MagnifyingGlassIcon,\n ShoppingCartIcon,\n InboxIcon,\n} from '@heroicons/react/24/outline';\nimport { resolveStackableColor, hexToRgba } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface EmptyStateLink {\n title?: string;\n href?: string;\n}\n\nexport interface EmptyStateProps {\n state_type?: '404' | 'no_results' | 'empty_cart' | 'generic' | string;\n heading?: string;\n description?: string;\n illustration?: string;\n primary_cta?: EmptyStateLink;\n secondary_cta?: EmptyStateLink;\n suggested_links?: EmptyStateLink[];\n alignment?: 'left' | 'center' | 'right' | string;\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n className?: string;\n}\n\nconst ALIGN_ITEMS: Record<string, string> = {\n left: 'items-start',\n center: 'items-center',\n right: 'items-end',\n};\n\nconst TEXT_ALIGN: Record<string, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n};\n\n// Copy shown when `heading`/`description` aren't explicitly set, chosen by `state_type`.\nconst STATE_TYPE_DEFAULTS: Record<string, { heading: string; description: string }> = {\n '404': {\n heading: 'Page not found',\n description: \"The page you're looking for doesn't exist or may have been moved.\",\n },\n no_results: {\n heading: 'No results found',\n description: 'Try adjusting your search or filters to find what you’re looking for.',\n },\n empty_cart: {\n heading: 'Your cart is empty',\n description: 'Looks like you haven’t added anything to your cart yet.',\n },\n generic: {\n heading: 'Nothing to show here',\n description: '',\n },\n};\n\n// Icon shown in the illustration slot when no `illustration` image is provided.\nconst STATE_TYPE_ICONS: Record<string, React.ComponentType<React.SVGProps<SVGSVGElement>>> = {\n '404': ExclamationTriangleIcon,\n no_results: MagnifyingGlassIcon,\n empty_cart: ShoppingCartIcon,\n generic: InboxIcon,\n};\n\nexport function EmptyState({\n state_type = '404',\n heading,\n description,\n illustration = '',\n primary_cta,\n secondary_cta,\n suggested_links = [],\n alignment = 'center',\n background_color,\n text_color,\n className = '',\n}: EmptyStateProps) {\n const stateDefaults = STATE_TYPE_DEFAULTS[state_type] ?? STATE_TYPE_DEFAULTS['404'];\n const resolvedHeading = heading ?? stateDefaults.heading;\n const resolvedDescription = description ?? stateDefaults.description;\n const StateIcon = STATE_TYPE_ICONS[state_type] ?? STATE_TYPE_ICONS.generic;\n const sectionThemeClasses = 'bg-white';\n const headingThemeClasses = 'text-gray-900';\n const descriptionThemeClasses = 'text-gray-600';\n const linkThemeClasses = 'border-gray-200 text-gray-700 hover:border-gray-300 hover:text-gray-900';\n const iconBadgeThemeClasses = 'bg-gray-100 text-gray-400';\n\n const resolvedBg = resolveStackableColor(background_color);\n const resolvedTextColor = resolveStackableColor(text_color);\n const sectionStyle = resolvedBg ? { backgroundColor: resolvedBg } : undefined;\n const textColorStyle: React.CSSProperties | undefined = resolvedTextColor\n ? { color: resolvedTextColor }\n : undefined;\n // The description and the suggested links each carry their own theme-based\n // text-color class, which wins over a color merely inherited from an ancestor —\n // so a custom text_color has to be applied directly on those elements too, not\n // just on the heading that already sets it inline. The secondary CTA reuses the\n // heading's own class/style since its border is `border-current`, tracking\n // whatever color its text resolves to.\n const mutedTextColorStyle: React.CSSProperties | undefined = resolvedTextColor\n ? { color: hexToRgba(resolvedTextColor, 0.65) }\n : undefined;\n\n const alignItemsClass = ALIGN_ITEMS[alignment] ?? ALIGN_ITEMS.center;\n const textAlignClass = TEXT_ALIGN[alignment] ?? TEXT_ALIGN.center;\n\n const hasPrimaryCta = Boolean(primary_cta?.href);\n const hasSecondaryCta = Boolean(secondary_cta?.href);\n const visibleSuggestedLinks = (suggested_links ?? []).filter((link) => link?.href);\n\n return (\n <section className={`${sectionThemeClasses} ${className}`.trim()} style={sectionStyle}>\n <div className=\"component-container mx-auto px-6 py-24\">\n <div className={`flex flex-col ${alignItemsClass} ${textAlignClass} max-w-xl mx-auto`}>\n {illustration ? (\n <img\n src={illustration}\n alt=\"\"\n className=\"w-full max-w-xs mb-8 rounded-2xl select-none\"\n aria-hidden=\"true\"\n />\n ) : (\n <span\n className={`mb-6 inline-flex h-16 w-16 items-center justify-center rounded-full ${iconBadgeThemeClasses}`}\n aria-hidden=\"true\"\n >\n <StateIcon className=\"h-8 w-8\" />\n </span>\n )}\n\n <h1\n className={`text-balance text-3xl sm:text-4xl font-bold tracking-tight ${headingThemeClasses}`}\n style={textColorStyle}\n >\n {resolvedHeading}\n </h1>\n\n {resolvedDescription && (\n <p className={`mt-4 text-base leading-relaxed ${descriptionThemeClasses}`} style={mutedTextColorStyle}>\n {resolvedDescription}\n </p>\n )}\n\n {(hasPrimaryCta || hasSecondaryCta) && (\n <div\n className={`mt-8 flex flex-wrap gap-3 ${\n alignment === 'left' ? 'justify-start' : alignment === 'right' ? 'justify-end' : 'justify-center'\n }`}\n >\n {hasPrimaryCta && (\n <a\n href={primary_cta!.href}\n className=\"inline-flex items-center justify-center rounded-md bg-[#BA68C8] px-6 py-3 text-sm font-semibold text-white no-underline shadow-sm transition-colors hover:bg-[#9e58aa] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#BA68C8] focus-visible:ring-offset-2\"\n >\n {primary_cta!.title || 'Back to Home'}\n </a>\n )}\n {hasSecondaryCta && (\n <a\n href={secondary_cta!.href}\n className={`inline-flex items-center justify-center rounded-md border border-current px-6 py-3 text-sm font-semibold no-underline transition-colors hover:bg-black/5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-current focus-visible:ring-offset-2 dark:hover:bg-white/10 ${headingThemeClasses}`}\n style={textColorStyle}\n >\n {secondary_cta!.title || 'Contact Support'}\n </a>\n )}\n </div>\n )}\n\n {visibleSuggestedLinks.length > 0 && (\n <ul\n className={`mt-10 flex flex-wrap gap-2 text-sm ${\n alignment === 'left' ? 'justify-start' : alignment === 'right' ? 'justify-end' : 'justify-center'\n }`}\n >\n {visibleSuggestedLinks.map((link, i) => (\n <li key={i}>\n <a\n href={link.href}\n className={`inline-flex items-center rounded-full border px-4 py-1.5 font-medium no-underline transition-colors ${linkThemeClasses}`}\n style={mutedTextColorStyle}\n >\n {link.title || link.href}\n </a>\n </li>\n ))}\n </ul>\n )}\n </div>\n </div>\n </section>\n );\n}\n\nexport default EmptyState;\n","import React, { useState } from 'react';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface PricingFeature {\n text?: string;\n}\n\nexport interface PricingLogo {\n image?: string;\n alt?: string;\n}\n\nexport interface PricingTier {\n name?: string;\n description?: string;\n price_monthly?: string;\n price_annually?: string;\n price_suffix?: string;\n price_annual_note?: string;\n currency?: string;\n custom_price_text?: string;\n feature_section_label?: string;\n features?: PricingFeature[];\n cta_label?: string;\n cta_url?: string;\n is_featured?: boolean;\n featured_label?: string;\n display_as_row?: boolean;\n}\n\nexport interface PricingProps {\n eyebrow?: string;\n heading?: string;\n description?: string;\n theme?: 'light' | 'dark' | string;\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n button_color?: StackableColorValue;\n button_text_color?: StackableColorValue;\n heading_alignment?: 'left' | 'center' | string;\n emphasized_tier?: number;\n emphasis_style?: 'dark-card' | 'outline' | 'none' | string;\n feature_icon?: 'check' | 'plus' | 'circle-check' | string;\n cta_position?: 'above_features' | 'below_features' | string;\n show_billing_toggle?: boolean;\n show_logo_bar?: boolean;\n logos?: PricingLogo[];\n tiers?: PricingTier[];\n className?: string;\n}\n\n// ── Icons ─────────────────────────────────────────────────────────────────────\n\nfunction CheckIcon({ dark }: { dark: boolean }) {\n return (\n <svg className={`w-5 h-5 flex-shrink-0 ${dark ? 'text-indigo-400' : 'text-[#715cdd]'}`} fill=\"none\" stroke=\"currentColor\" strokeWidth={2} viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M5 13l4 4L19 7\" />\n </svg>\n );\n}\n\nfunction CircleCheckIcon({ dark }: { dark: boolean }) {\n return (\n <span className={`w-5 h-5 rounded-full flex-shrink-0 flex items-center justify-center ${dark ? 'bg-gray-700' : 'bg-indigo-50'}`}>\n <svg className=\"w-3 h-3 text-[#715cdd]\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2.5} viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M5 13l4 4L19 7\" />\n </svg>\n </span>\n );\n}\n\nfunction PlusIcon({ dark }: { dark: boolean }) {\n return (\n <span className={`w-5 h-5 flex-shrink-0 flex items-center justify-center text-sm font-bold ${dark ? 'text-gray-500' : 'text-gray-400'}`} aria-hidden=\"true\">+</span>\n );\n}\n\n// ── Billing toggle ─────────────────────────────────────────────────────────────\n\nfunction BillingToggle({ value, onChange }: { value: 'monthly' | 'annually'; onChange: (v: 'monthly' | 'annually') => void }) {\n return (\n <div className=\"inline-flex items-center rounded-full bg-gray-100 p-1 gap-1\">\n {(['monthly', 'annually'] as const).map(period => (\n <button\n key={period}\n onClick={() => onChange(period)}\n className={`px-4 py-1.5 rounded-full text-sm font-medium transition-colors capitalize ${\n value === period ? 'bg-[#715cdd] text-white shadow-sm' : 'text-gray-600 hover:text-gray-900'\n }`}\n >\n {period.charAt(0).toUpperCase() + period.slice(1)}\n </button>\n ))}\n </div>\n );\n}\n\n// ── Main component ─────────────────────────────────────────────────────────────\n\nexport function Pricing({\n eyebrow = '',\n heading = '',\n description = '',\n theme = 'light',\n background_color,\n text_color,\n button_color,\n button_text_color,\n heading_alignment = 'center',\n emphasized_tier = -1,\n emphasis_style = 'dark-card',\n feature_icon = 'check',\n cta_position = 'below_features',\n show_billing_toggle = false,\n show_logo_bar = false,\n logos = [],\n tiers = [],\n className = '',\n}: PricingProps) {\n const [billing, setBilling] = useState<'monthly' | 'annually'>('monthly');\n const resolvedBg = resolveStackableColor(background_color as StackableColorValue);\n const resolvedTextColor = resolveStackableColor(text_color as StackableColorValue);\n const resolvedButtonColor = resolveStackableColor(button_color as StackableColorValue);\n const resolvedButtonTextColor = resolveStackableColor(button_text_color as StackableColorValue);\n\n const isDark = theme === 'dark';\n const isCentered = heading_alignment === 'center';\n\n const sectionBg = isDark ? 'bg-gray-900' : 'bg-white';\n const headingColor = isDark ? 'text-white' : 'text-gray-900';\n const descColor = isDark ? 'text-gray-400' : 'text-gray-600';\n const textColorStyle: React.CSSProperties | undefined = resolvedTextColor ? { color: resolvedTextColor } : undefined;\n\n // Split tiers into card tiers and extra row tiers\n const cardEntries = (tiers ?? []).map((t, i) => ({ tier: t, index: i })).filter(e => !e.tier.display_as_row);\n const rowEntries = (tiers ?? []).map((t, i) => ({ tier: t, index: i })).filter(e => e.tier.display_as_row);\n\n const gridColsMap: Record<number, string> = {\n 1: 'grid-cols-1 max-w-sm mx-auto',\n 2: 'grid-cols-1 md:grid-cols-2 max-w-3xl mx-auto',\n 3: 'grid-cols-1 md:grid-cols-3',\n 4: 'grid-cols-1 md:grid-cols-2 xl:grid-cols-4',\n };\n const gridCls = gridColsMap[Math.min(cardEntries.length, 4)] || 'grid-cols-1 md:grid-cols-3';\n\n const getPrice = (tier: PricingTier) =>\n billing === 'annually' && tier.price_annually ? tier.price_annually : tier.price_monthly ?? '';\n\n const FeatureIcon = ({ dark }: { dark: boolean }) => {\n if (feature_icon === 'circle-check') return <CircleCheckIcon dark={dark} />;\n if (feature_icon === 'plus') return <PlusIcon dark={dark} />;\n return <CheckIcon dark={dark} />;\n };\n\n const renderCard = (tier: PricingTier, originalIdx: number) => {\n const isEmphasized = emphasized_tier === originalIdx;\n const isDarkCard = isEmphasized && emphasis_style === 'dark-card';\n const isOutlineCard = isEmphasized && emphasis_style === 'outline';\n\n // Card wrapper styles\n let cardCls = 'flex flex-col rounded-2xl p-8 ';\n const darkCardStyle: React.CSSProperties = isDarkCard && resolvedBg ? { backgroundColor: resolvedBg } : {};\n if (isDarkCard) {\n cardCls += `${resolvedBg ? '' : 'bg-gray-900 '}shadow-2xl relative z-10 -mt-4 `;\n } else if (isOutlineCard) {\n cardCls += `${isDark ? 'bg-gray-800' : 'bg-white'} border-2 border-[#715cdd] shadow-md relative z-10 `;\n } else {\n cardCls += `${isDark ? 'bg-gray-800 border-gray-700' : 'bg-white border-gray-200'} border shadow-sm `;\n }\n\n const textMain = isDarkCard ? 'text-white' : (isDark ? 'text-white' : 'text-gray-900');\n const textSub = isDarkCard ? 'text-gray-400' : (isDark ? 'text-gray-400' : 'text-gray-600');\n const textFeature= isDarkCard ? 'text-gray-300' : (isDark ? 'text-gray-300' : 'text-gray-600');\n const divider = isDarkCard ? 'border-gray-700': (isDark ? 'border-gray-700': 'border-gray-200');\n const nameColor = 'text-[#715cdd]';\n\n const price = getPrice(tier);\n\n const ctaFilled = 'block w-full py-2.5 px-4 rounded-lg text-center text-sm font-semibold bg-[#715cdd] text-white hover:bg-[#6050c0] transition-colors';\n const ctaOutline = `block w-full py-2.5 px-4 rounded-lg text-center text-sm font-semibold border transition-colors ${\n isDarkCard\n ? 'border-gray-600 text-white hover:bg-gray-800'\n : isDark\n ? 'border-gray-600 text-gray-300 hover:bg-gray-700'\n : 'border-gray-300 text-[#715cdd] hover:bg-gray-50'\n }`;\n\n const CtaButton = () => tier.cta_label ? (\n <a\n href={tier.cta_url || '#'}\n className={isEmphasized ? ctaFilled : ctaOutline}\n style={{\n ...(resolvedButtonColor ? { backgroundColor: resolvedButtonColor, borderColor: resolvedButtonColor } : {}),\n ...(resolvedButtonTextColor ? { color: resolvedButtonTextColor } : {}),\n }}\n >\n {tier.cta_label}\n </a>\n ) : null;\n\n const FeatureList = () => (tier.features && tier.features.length > 0) ? (\n <ul className=\"space-y-3\">\n {tier.feature_section_label && (\n <p className={`text-sm font-medium mb-4 ${textSub}`}>{tier.feature_section_label}</p>\n )}\n {tier.features.map((f, fi) => (\n <li key={fi} className={`flex items-start gap-3 text-sm ${textFeature}`}>\n <FeatureIcon dark={isDarkCard} />\n <span>{(f as PricingFeature)?.text ?? String(f)}</span>\n </li>\n ))}\n </ul>\n ) : null;\n\n return (\n <div key={originalIdx} className={cardCls} style={darkCardStyle}>\n {/* Name + badge */}\n <div className=\"flex items-center justify-between mb-2\">\n <span className={`text-sm font-semibold ${nameColor}`}>{tier.name || 'Plan'}</span>\n {tier.is_featured && (\n <span className=\"px-2.5 py-0.5 rounded-full text-xs font-medium bg-[#715cdd]/10 text-[#715cdd]\">\n {tier.featured_label || 'Most popular'}\n </span>\n )}\n </div>\n\n {/* Description */}\n {tier.description && (\n <p className={`text-sm mb-5 ${textSub}`}>{tier.description}</p>\n )}\n\n {/* Price */}\n <div className=\"mb-5\">\n {tier.custom_price_text ? (\n <p className={`text-4xl font-bold ${textMain}`}>{tier.custom_price_text}</p>\n ) : price ? (\n <>\n <div className=\"flex items-baseline gap-0.5\">\n {(tier.currency ?? '$') && (\n <span className={`text-sm font-medium ${textSub}`}>{tier.currency ?? '$'}</span>\n )}\n <span className={`text-4xl font-bold tracking-tight ${textMain}`}>{price}</span>\n {tier.price_suffix && (\n <span className={`text-sm ${textSub}`}>{tier.price_suffix ?? '/month'}</span>\n )}\n </div>\n {tier.price_annual_note && (\n <p className={`text-xs mt-1 ${textSub}`}>{tier.price_annual_note}</p>\n )}\n </>\n ) : null}\n </div>\n\n {/* CTA above features */}\n {cta_position === 'above_features' && (\n <div className=\"mb-6\"><CtaButton /></div>\n )}\n\n {/* Divider before features */}\n {tier.features && tier.features.length > 0 && (\n <div className={`border-t ${divider} my-4`} />\n )}\n\n {/* Features */}\n <div className=\"flex-1\"><FeatureList /></div>\n\n {/* CTA below features */}\n {cta_position !== 'above_features' && (\n <div className=\"mt-8\"><CtaButton /></div>\n )}\n </div>\n );\n };\n\n // Horizontal row tier (e.g. \"Discounted\" plan)\n const renderRowTier = (tier: PricingTier, originalIdx: number) => {\n const isEmphasized = emphasized_tier === originalIdx;\n const rowBorder = isDark ? 'border-gray-700' : 'border-gray-200';\n const nameColor = 'text-[#715cdd]';\n const textSub = isDark ? 'text-gray-400' : 'text-gray-500';\n return (\n <div key={originalIdx} className={`flex flex-col sm:flex-row sm:items-center justify-between gap-4 py-6 border-t ${rowBorder}`}>\n <div>\n <span className={`text-sm font-semibold ${nameColor} block mb-1`}>{tier.name}</span>\n {tier.description && <p className={`text-sm ${textSub}`}>{tier.description}</p>}\n </div>\n {tier.cta_label && (\n <a\n href={tier.cta_url || '#'}\n className={`text-sm font-semibold whitespace-nowrap ${isEmphasized ? 'text-[#715cdd] hover:text-[#6050c0]' : (isDark ? 'text-gray-300 hover:text-white' : 'text-[#715cdd] hover:text-[#6050c0]')}`}\n >\n {tier.cta_label} →\n </a>\n )}\n </div>\n );\n };\n\n const isEmpty = (tiers?.length ?? 0) === 0;\n\n return (\n <section className={`${sectionBg} ${className}`.trim()}>\n <div className=\"component-container mx-auto px-6 py-16\">\n\n {/* Header */}\n {(eyebrow || heading || description) && (\n <div className={`mb-12 ${isCentered ? 'text-center' : ''}`}>\n {eyebrow && (\n <p className=\"text-sm font-semibold text-[#715cdd] mb-3\">{eyebrow}</p>\n )}\n {heading && (\n <h2 className={`text-4xl font-bold tracking-tight ${headingColor}`} style={textColorStyle}>{heading}</h2>\n )}\n {description && (\n <p className={`mt-4 max-w-2xl text-base ${descColor} ${isCentered ? 'mx-auto' : ''}`} style={textColorStyle}>\n {description}\n </p>\n )}\n </div>\n )}\n\n {/* Billing toggle */}\n {show_billing_toggle && (\n <div className={`mb-10 flex ${isCentered ? 'justify-center' : ''}`}>\n <BillingToggle value={billing} onChange={setBilling} />\n </div>\n )}\n\n {/* Cards grid */}\n {isEmpty ? (\n <p className={`${descColor} ${isCentered ? 'text-center' : ''}`}>No pricing tiers added yet.</p>\n ) : (\n <div className={`grid ${gridCls} gap-6 ${cardEntries.some((_, i) => emphasized_tier === i) ? 'items-start' : 'items-stretch'}`}>\n {cardEntries.map(({ tier, index }) => (\n <React.Fragment key={index}>{renderCard(tier, index)}</React.Fragment>\n ))}\n </div>\n )}\n\n {/* Row tiers (extra/discounted) */}\n {rowEntries.length > 0 && (\n <div className=\"mt-8 max-w-3xl mx-auto\">\n {rowEntries.map(({ tier, index }) => (\n <React.Fragment key={index}>{renderRowTier(tier, index)}</React.Fragment>\n ))}\n </div>\n )}\n\n {/* Logo bar */}\n {show_logo_bar && (logos?.length ?? 0) > 0 && (\n <div className={`mt-16 pt-10 border-t ${isDark ? 'border-gray-700' : 'border-gray-200'}`}>\n <div className=\"flex flex-wrap items-center justify-center gap-8 md:gap-12 opacity-70\">\n {logos.map((logo, i) =>\n logo.image ? (\n <img key={i} src={logo.image} alt={logo.alt || ''} className=\"h-8 object-contain grayscale\" />\n ) : (\n <span key={i} className={`text-sm font-semibold ${isDark ? 'text-gray-500' : 'text-gray-400'}`}>{logo.alt || `Logo ${i + 1}`}</span>\n )\n )}\n </div>\n </div>\n )}\n\n </div>\n </section>\n );\n}\n\nexport default Pricing;\n","import React from 'react';\nimport { resolveStackableColor, hexToRgba } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface PricingSpreadCardFeature {\n text?: string;\n}\n\nexport interface PricingSpreadCardCta {\n title?: string;\n href?: string;\n}\n\nexport interface PricingSpreadCardProps {\n badge_left_text?: string;\n heading?: string;\n description?: string;\n features_heading?: string;\n features?: PricingSpreadCardFeature[];\n badge_right_text?: string;\n currency?: string;\n price?: string;\n price_suffix?: string;\n cta?: PricingSpreadCardCta;\n caption?: string;\n /** Asset URL, or a Contentstack asset object. Falls back to a built-in decorative illustration when unset. */\n illustration?: string | { url?: string };\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n accent_color?: StackableColorValue;\n className?: string;\n}\n\nfunction resolveMedia(media: PricingSpreadCardProps['illustration']): string {\n if (!media) return '';\n if (typeof media === 'string') return media.trim();\n return typeof media.url === 'string' ? media.url.trim() : '';\n}\n\n/** Ordered to fill the two-column checklist top-to-bottom, left column first. */\nconst DEFAULT_FEATURES: PricingSpreadCardFeature[] = [\n { text: 'Advanced Security' },\n { text: 'All Full Access' },\n { text: 'Priority Support' },\n { text: 'Team Collaboration' },\n { text: 'Custom Integrations' },\n { text: 'Unlimited Storage' },\n];\n\nfunction CheckBadge() {\n return (\n <span className=\"mt-[0.15rem] flex h-[0.95rem] w-[0.95rem] flex-shrink-0 items-center justify-center rounded-full bg-[#22c55e]\">\n <svg width=\"9\" height=\"9\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#ffffff\" strokeWidth={3.5} strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n </span>\n );\n}\n\n/** Small mark that sits ahead of the left badge label. */\nfunction BadgeMark() {\n return (\n <svg width=\"11\" height=\"11\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <rect x=\"3\" y=\"8\" width=\"18\" height=\"13\" rx=\"2\" />\n <path d=\"M3 12h18\" />\n <path d=\"M12 8V3\" />\n <path d=\"M8.5 3h7\" />\n </svg>\n );\n}\n\n/** Flying-cash motif — stands in until a real illustration asset is supplied. */\nfunction DefaultIllustration() {\n return (\n <svg viewBox=\"0 0 100 84\" fill=\"none\" aria-hidden=\"true\" className=\"h-full w-auto\">\n <path d=\"M22 30 C10 20, 4 24, 4 32 C10 30, 16 33, 19 38 Z\" fill=\"#e5e7eb\" stroke=\"#9ca3af\" strokeWidth=\"1.4\" strokeLinejoin=\"round\" />\n <path d=\"M78 54 C90 44, 96 48, 96 56 C90 54, 84 57, 81 62 Z\" fill=\"#e5e7eb\" stroke=\"#9ca3af\" strokeWidth=\"1.4\" strokeLinejoin=\"round\" />\n <g transform=\"rotate(-18 50 42)\">\n <rect x=\"20\" y=\"30\" width=\"60\" height=\"30\" rx=\"2\" fill=\"#4d9e4a\" />\n <rect x=\"20\" y=\"26\" width=\"60\" height=\"30\" rx=\"2\" fill=\"#79c268\" />\n <rect x=\"25\" y=\"30\" width=\"50\" height=\"22\" rx=\"1.5\" fill=\"none\" stroke=\"#5fa851\" strokeWidth=\"1.2\" />\n <circle cx=\"50\" cy=\"41\" r=\"8\" fill=\"#5fa851\" />\n <text x=\"50\" y=\"46\" fontSize=\"12\" fontWeight=\"700\" fill=\"#3f8a3c\" textAnchor=\"middle\">$</text>\n </g>\n </svg>\n );\n}\n\nexport function PricingSpreadCard({\n badge_left_text = 'Create what you imagined',\n heading = 'Best Value For Your Budget',\n description = 'This block comes at very affordable prices compared to the features it provides in return, but the Core or Lite version will always be Free Forever!!!',\n features_heading = \"What's Included\",\n features,\n badge_right_text = '💸 Pay once, own it forever',\n currency = '$',\n price = '34',\n price_suffix = '.00 USD',\n cta = { title: 'Get Access', href: '#' },\n caption = 'Full-featured page builder to create super fast and truly amazing website',\n illustration,\n background_color,\n text_color,\n accent_color,\n className = '',\n}: PricingSpreadCardProps) {\n const resolvedFeatures = features?.length ? features : DEFAULT_FEATURES;\n const resolvedBg = resolveStackableColor(background_color);\n const resolvedText = resolveStackableColor(text_color);\n const resolvedAccent = resolveStackableColor(accent_color) || '#4f5bd5';\n const illustrationSrc = resolveMedia(illustration);\n\n const cardStyle: React.CSSProperties | undefined = resolvedBg ? { backgroundColor: resolvedBg } : undefined;\n const textStyle: React.CSSProperties | undefined = resolvedText ? { color: resolvedText } : undefined;\n const mutedTextStyle: React.CSSProperties | undefined = resolvedText ? { color: hexToRgba(resolvedText, 0.62) } : undefined;\n\n const badgeClasses = 'inline-flex w-fit items-center gap-1.5 rounded-full px-2.5 py-[0.3rem] text-[0.7rem] font-medium bg-neutral-100 text-neutral-700 ring-1 ring-neutral-200';\n\n return (\n <section className={`bg-neutral-50 ${className}`.trim()}>\n <div className=\"component-container mx-auto px-6 py-14 sm:py-20\">\n <div className=\"relative mx-auto max-w-3xl\">\n {/* Illustration — straddles the top-right corner of the right panel */}\n <div className=\"absolute -top-10 -right-2 z-30 h-[5.5rem] sm:-top-14 sm:-right-6 sm:h-[8rem]\">\n {illustrationSrc ? (\n // eslint-disable-next-line @next/next/no-img-element\n <img src={illustrationSrc} alt=\"\" className=\"h-full w-auto\" aria-hidden=\"true\" />\n ) : (\n <DefaultIllustration />\n )}\n </div>\n\n <div className=\"relative z-10 flex flex-col gap-5 md:flex-row md:items-stretch md:gap-6\">\n {/* Left panel */}\n <div\n className=\"flex w-full flex-col rounded-3xl bg-white px-6 py-7 ring-1 ring-neutral-200 md:flex-[1.42]\"\n style={cardStyle}\n >\n {badge_left_text && (\n <span className={badgeClasses}>\n <BadgeMark />\n {badge_left_text}\n </span>\n )}\n\n {heading && (\n <h2\n className=\"mt-4 max-w-[15ch] text-[1.85rem] font-extrabold leading-[1.08] tracking-[-0.025em] text-neutral-900 sm:text-[2.3rem]\"\n style={textStyle}\n >\n {heading}\n </h2>\n )}\n\n {description && (\n <p className=\"mt-3 text-[0.72rem] leading-[1.55] text-neutral-600\" style={mutedTextStyle}>\n {description}\n </p>\n )}\n\n {resolvedFeatures.length > 0 && (\n <>\n {features_heading && (\n <p className=\"mt-5 text-[1.05rem] font-extrabold tracking-[-0.01em] text-neutral-900\" style={textStyle}>\n {features_heading}\n </p>\n )}\n <ul className=\"mt-3 gap-x-6 sm:columns-2\">\n {resolvedFeatures.map((f, i) => (\n <li\n key={i}\n className=\"mb-[0.55rem] flex break-inside-avoid items-start gap-2 text-[0.78rem] leading-snug text-neutral-700\"\n >\n <CheckBadge />\n <span>{f?.text}</span>\n </li>\n ))}\n </ul>\n </>\n )}\n </div>\n\n {/* Right panel */}\n <div\n className=\"flex w-full flex-col items-center justify-center rounded-3xl bg-white px-6 py-7 text-center ring-1 ring-neutral-200 md:flex-1\"\n style={cardStyle}\n >\n {badge_right_text && <span className={badgeClasses}>{badge_right_text}</span>}\n\n {price && (\n <div className=\"mt-4 flex items-baseline\">\n <span\n className=\"text-[2.4rem] font-extrabold leading-none tracking-[-0.03em] text-neutral-900\"\n style={textStyle}\n >\n {currency}\n {price}\n </span>\n {price_suffix && (\n <span className=\"text-[1.45rem] font-extrabold leading-none tracking-[-0.02em] text-neutral-400\">\n {price_suffix}\n </span>\n )}\n </div>\n )}\n\n {cta?.title && (\n <a\n href={cta.href || '#'}\n className=\"mt-5 inline-flex w-full items-center justify-center gap-1.5 rounded-[0.7rem] px-6 py-[0.7rem] text-[0.82rem] font-semibold text-white transition-opacity hover:opacity-90\"\n style={{ backgroundColor: resolvedAccent }}\n >\n {cta.title}\n <span aria-hidden=\"true\">&rarr;</span>\n </a>\n )}\n\n {caption && (\n <p className=\"mt-4 max-w-[19rem] text-[0.7rem] leading-[1.45] text-neutral-500\">{caption}</p>\n )}\n </div>\n </div>\n </div>\n </div>\n </section>\n );\n}\n\nexport default PricingSpreadCard;\n","/* eslint-disable @next/next/no-img-element */\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport {\n UsersIcon,\n ClockIcon,\n StarIcon,\n GlobeAltIcon,\n ChartBarIcon,\n ShieldCheckIcon,\n TrophyIcon,\n HeartIcon,\n BuildingOfficeIcon,\n RocketLaunchIcon,\n} from '@heroicons/react/24/outline';\nimport { resolveStackableColor, hexToRgba } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\n/** Curated preset — editors pick one of these, or override with `icon_image`. */\nconst STAT_ICONS: Record<string, React.ComponentType<{ className?: string; style?: React.CSSProperties }>> = {\n Users: UsersIcon,\n Clock: ClockIcon,\n Star: StarIcon,\n Globe: GlobeAltIcon,\n Chart: ChartBarIcon,\n Shield: ShieldCheckIcon,\n Trophy: TrophyIcon,\n Heart: HeartIcon,\n Building: BuildingOfficeIcon,\n Rocket: RocketLaunchIcon,\n};\n\n/** Blocky, technical display face for the stat values — override via --stackables-font-stat. */\nconst STAT_FONT_STACK = 'var(--stackables-font-stat, \"Orbitron\", \"Arial Narrow\", sans-serif)';\n\nconst COUNT_UP_DURATION_MS = 1800;\n\nexport interface StatCounterItem {\n /** Preset icon key from STAT_ICONS. Ignored when `icon_image` is set. */\n icon?: keyof typeof STAT_ICONS | string;\n /** Uploaded asset URL, or a Contentstack asset object — takes precedence over `icon`. */\n icon_image?: string | { url?: string };\n icon_alt?: string;\n value?: string;\n label?: string;\n}\n\nexport interface StatCounterRowProps {\n eyebrow_text?: string;\n heading?: string;\n subheading?: string;\n stats?: StatCounterItem[];\n show_dividers?: boolean;\n /** Counts each stat's numeric value up from 0 when it scrolls into view. */\n animate_numbers?: boolean;\n /** Tints the preset icon set. Uploaded `icon_image`s render as-is and ignore this. */\n icon_color?: StackableColorValue;\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n className?: string;\n}\n\n/** Above this count a single row gets cramped on every breakpoint, so the layout\n * switches from inline dividers to a wrapping grid with a per-cell rule instead —\n * shared \"divide\" borders break visually once items wrap onto more than one row. */\nconst SINGLE_ROW_MAX = 6;\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveIconImage(icon: StatCounterItem['icon_image']): string {\n if (!icon) return '';\n if (typeof icon === 'string') return icon.trim();\n return typeof icon.url === 'string' ? icon.url.trim() : '';\n}\n\ninterface ParsedStatValue {\n prefix: string;\n target: number;\n decimals: number;\n suffix: string;\n}\n\n/** Pulls the first number out of an editor-authored string like \"7K+\" or \"99.9%\" so it can be\n * counted up while the surrounding prefix/suffix text (\"K+\", \"%\", \" YRS\"...) stays static. */\nfunction parseStatValue(raw: string): ParsedStatValue | null {\n const match = raw.match(/\\d[\\d,]*(\\.\\d+)?/);\n if (!match || match.index === undefined) return null;\n const numText = match[0];\n const target = parseFloat(numText.replace(/,/g, ''));\n if (Number.isNaN(target)) return null;\n return {\n prefix: raw.slice(0, match.index),\n target,\n decimals: match[1] ? match[1].length - 1 : 0,\n suffix: raw.slice(match.index + numText.length),\n };\n}\n\nfunction formatStatValue(parsed: ParsedStatValue, current: number): string {\n return `${parsed.prefix}${current.toFixed(parsed.decimals)}${parsed.suffix}`;\n}\n\n/** Counts a single stat's number up from 0 once it scrolls into view; renders the plain\n * value immediately when animation is off, unparsable, or `prefers-reduced-motion` is set. */\nfunction AnimatedStatValue({\n value,\n animate,\n className,\n style,\n}: {\n value: string;\n animate: boolean;\n className: string;\n style?: React.CSSProperties;\n}) {\n const parsed = useMemo(() => (animate ? parseStatValue(value) : null), [value, animate]);\n const [display, setDisplay] = useState(value);\n const ref = useRef<HTMLSpanElement>(null);\n\n useEffect(() => {\n if (!parsed || (typeof window !== 'undefined' && window.matchMedia('(prefers-reduced-motion: reduce)').matches)) {\n setDisplay(value);\n return;\n }\n\n setDisplay(formatStatValue(parsed, 0));\n const node = ref.current;\n if (!node) return;\n\n let frame = 0;\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (!entry.isIntersecting) return;\n observer.disconnect();\n\n const start = performance.now();\n const tick = (now: number) => {\n const progress = Math.min(1, (now - start) / COUNT_UP_DURATION_MS);\n const eased = 1 - Math.pow(1 - progress, 3);\n setDisplay(formatStatValue(parsed, parsed.target * eased));\n if (progress < 1) frame = requestAnimationFrame(tick);\n };\n frame = requestAnimationFrame(tick);\n },\n { threshold: 0.4 },\n );\n observer.observe(node);\n\n return () => {\n observer.disconnect();\n if (frame) cancelAnimationFrame(frame);\n };\n }, [value, parsed]);\n\n return (\n <span ref={ref} className={className} style={style}>\n {display}\n </span>\n );\n}\n\nconst DEFAULT_STATS: StatCounterItem[] = [\n { icon: 'Users', value: '10K+', label: 'Customers' },\n { icon: 'Clock', value: '99.9%', label: 'Uptime' },\n { icon: 'Star', value: '4.9', label: 'Average rating' },\n { icon: 'Globe', value: '40+', label: 'Countries' },\n];\n\nexport function StatCounterRow({\n eyebrow_text = '',\n heading = '',\n subheading = '',\n stats = DEFAULT_STATS,\n show_dividers = true,\n animate_numbers = true,\n icon_color,\n background_color,\n text_color,\n className = '',\n}: StatCounterRowProps) {\n const sectionThemeClasses = 'bg-white';\n const eyebrowThemeClasses = 'text-gray-400';\n const headingThemeClasses = 'text-gray-900';\n const subheadingThemeClasses = 'text-gray-600';\n const valueThemeClasses = 'text-gray-900';\n const labelThemeClasses = 'text-gray-600';\n const dividerThemeClasses = 'divide-gray-200';\n const cellBorderThemeClasses = 'border-gray-200';\n const iconThemeClasses = 'text-gray-700';\n\n const resolvedBg = resolveStackableColor(background_color);\n const resolvedText = resolveStackableColor(text_color);\n const resolvedIconColor = resolveStackableColor(icon_color);\n\n const sectionStyle = resolvedBg ? { backgroundColor: resolvedBg } : undefined;\n const textStyle: React.CSSProperties | undefined = resolvedText ? { color: resolvedText } : undefined;\n const valueStyle: React.CSSProperties = { fontFamily: STAT_FONT_STACK, letterSpacing: '0.02em', ...textStyle };\n const iconStyle: React.CSSProperties | undefined = resolvedIconColor ? { color: resolvedIconColor } : undefined;\n // The eyebrow, subheading, and per-stat label each carry their own theme-based\n // text-color class, which wins over a color merely inherited from an ancestor —\n // so a custom text_color has to be applied directly on those elements too, not\n // just on the heading and stat value that already set it inline.\n const mutedTextStyle: React.CSSProperties | undefined = resolvedText ? { color: hexToRgba(resolvedText, 0.65) } : undefined;\n\n const visibleStats = (stats ?? []).filter((s) => Boolean(s?.value?.trim()));\n const useGrid = visibleStats.length > SINGLE_ROW_MAX;\n\n return (\n <section className={`${sectionThemeClasses} ${className}`.trim()} style={sectionStyle}>\n <div className=\"component-container mx-auto px-6 py-16 lg:py-20\">\n {(eyebrow_text || heading || subheading) && (\n <div className=\"flex flex-col items-center text-center mb-12 lg:mb-16\">\n {eyebrow_text && (\n <span className={`text-xs font-semibold uppercase tracking-[0.15em] ${eyebrowThemeClasses}`} style={mutedTextStyle}>\n {eyebrow_text}\n </span>\n )}\n {heading && (\n <h2\n className={`mt-3 text-3xl sm:text-4xl font-bold tracking-tight max-w-2xl ${headingThemeClasses}`}\n style={textStyle}\n >\n {heading}\n </h2>\n )}\n {subheading && (\n <p className={`mt-4 text-base max-w-xl ${subheadingThemeClasses}`} style={mutedTextStyle}>{subheading}</p>\n )}\n </div>\n )}\n\n {visibleStats.length > 0 && (\n <div\n className={\n useGrid\n ? 'grid gap-x-6 gap-y-10 sm:gap-x-10'\n : `flex flex-col divide-y sm:flex-row sm:divide-y-0 ${\n show_dividers ? `divide-x-0 sm:divide-x ${dividerThemeClasses}` : ''\n }`\n }\n style={useGrid ? { gridTemplateColumns: 'repeat(auto-fit, minmax(140px, 1fr))' } : undefined}\n >\n {visibleStats.map((stat, i) => {\n // An uploaded image always wins over the preset — editors reach for\n // the preset first, then override per-stat without touching code.\n const uploadedIconSrc = resolveIconImage(stat.icon_image);\n const PresetIcon = !uploadedIconSrc && stat.icon ? STAT_ICONS[stat.icon as string] : undefined;\n\n return (\n <div\n key={`${stat.label ?? 'stat'}-${i}`}\n className={\n useGrid\n ? `flex flex-col items-center gap-2 text-center ${\n show_dividers ? `border-b pb-6 ${cellBorderThemeClasses}` : ''\n }`\n : 'flex flex-1 flex-col items-center gap-2 py-6 sm:py-0 text-center'\n }\n >\n {/* Fixed-height slot, rendered even when empty, so stats without an icon\n don't sit higher than their neighbors that have one. */}\n <div className=\"flex h-8 w-8 items-center justify-center\">\n {uploadedIconSrc ? (\n <img\n src={uploadedIconSrc}\n alt={stat.icon_alt || stat.label || ''}\n className=\"h-8 w-8 object-contain\"\n loading=\"lazy\"\n />\n ) : (\n PresetIcon && <PresetIcon className={`h-8 w-8 ${iconThemeClasses}`} style={iconStyle} />\n )}\n </div>\n <AnimatedStatValue\n value={stat.value ?? ''}\n animate={animate_numbers}\n className={`text-3xl sm:text-4xl font-bold ${valueThemeClasses}`}\n style={valueStyle}\n />\n {stat.label && (\n <span className={`text-sm ${labelThemeClasses}`} style={mutedTextStyle}>{stat.label}</span>\n )}\n </div>\n );\n })}\n </div>\n )}\n </div>\n </section>\n );\n}\n\nexport default StatCounterRow;\n","import React from 'react';\n\nexport interface ContactFormProps {\n form_title?: string;\n submit_button_text?: string;\n className?: string;\n}\n\nexport function ContactForm({\n form_title = 'Contact Us',\n submit_button_text = 'Send Message',\n className,\n}: ContactFormProps) {\n return (\n <div className={`component-container mx-auto px-6 py-8 ${className ?? ''}`.trim()}>\n <div className=\"max-w-md mx-auto bg-white rounded-lg shadow-lg p-8\">\n <h2 className=\"text-2xl font-bold mb-6\">{form_title}</h2>\n <form className=\"space-y-4\">\n <div>\n <label className=\"block text-sm font-medium mb-1\">Name</label>\n <input\n type=\"text\"\n className=\"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n placeholder=\"Your name\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Email</label>\n <input\n type=\"email\"\n className=\"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n placeholder=\"your@email.com\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Message</label>\n <textarea\n className=\"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n rows={4}\n placeholder=\"Your message\"\n />\n </div>\n <button\n type=\"submit\"\n className=\"w-full bg-blue-600 text-white py-2 rounded-lg hover:bg-blue-700 transition font-semibold\"\n >\n {submit_button_text}\n </button>\n </form>\n </div>\n </div>\n );\n}\n\nexport default ContactForm;\n","/* eslint-disable @next/next/no-img-element */\nimport React, { useState } from 'react';\nimport { resolveStackableColor, hexToRgba } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface NewsletterSignupLink {\n title?: string;\n href?: string;\n}\n\nexport interface NewsletterSignupProps {\n logo?: string | { url?: string };\n logo_text?: string;\n heading?: string;\n description?: string;\n /** Substring of `description` rendered bold + underlined, e.g. \"25% Off\". */\n highlight_text?: string;\n email_placeholder?: string;\n button_text?: string;\n disclaimer_prefix?: string;\n privacy_policy_link?: NewsletterSignupLink;\n terms_link?: NewsletterSignupLink;\n image?: string | { url?: string };\n image_alt?: string;\n image_caption?: string;\n image_position?: 'left' | 'right' | string;\n dismissible?: boolean;\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n button_color?: StackableColorValue;\n button_text_color?: StackableColorValue;\n className?: string;\n}\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveImage(image?: string | { url?: string }): string {\n if (!image) return '';\n if (typeof image === 'string') return image.trim();\n return typeof image.url === 'string' ? image.url.trim() : '';\n}\n\n/** Splits `text` on the first occurrence of `highlight` and bolds+underlines that slice. */\nfunction renderWithHighlight(text: string, highlight?: string) {\n const needle = highlight?.trim();\n if (!needle) return text;\n const index = text.indexOf(needle);\n if (index === -1) return text;\n return (\n <>\n {text.slice(0, index)}\n <strong className=\"underline\">{needle}</strong>\n {text.slice(index + needle.length)}\n </>\n );\n}\n\nexport function NewsletterSignup({\n logo,\n logo_text = '',\n heading = 'Join the club',\n description = 'Subscribe and Get an Extra 25% Off on your first purchase.',\n highlight_text = '25% Off',\n email_placeholder = 'Email address',\n button_text = 'Subscribe',\n disclaimer_prefix = 'By signing up, you agree to',\n privacy_policy_link = { title: 'Privacy Policy', href: '#' },\n terms_link = { title: 'Terms of Use', href: '#' },\n image,\n image_alt = '',\n image_caption = '',\n image_position = 'right',\n dismissible = true,\n background_color,\n text_color,\n button_color,\n button_text_color,\n className = '',\n}: NewsletterSignupProps) {\n const [visible, setVisible] = useState(true);\n const [email, setEmail] = useState('');\n\n const sectionThemeClasses = 'bg-white text-neutral-900';\n const headingThemeClasses = 'text-neutral-900';\n const bodyThemeClasses = 'text-neutral-600';\n const disclaimerThemeClasses = 'text-neutral-500';\n const inputThemeClasses = 'border-neutral-300 bg-white text-neutral-900 placeholder:text-neutral-400';\n const linkThemeClasses = 'text-neutral-700';\n const closeButtonThemeClasses = 'bg-white text-neutral-900 hover:bg-neutral-100';\n\n const resolvedBg = resolveStackableColor(background_color);\n const resolvedText = resolveStackableColor(text_color);\n const btnBg = resolveStackableColor(button_color) || '#18181b';\n const btnFg = resolveStackableColor(button_text_color) || '#ffffff';\n\n const sectionStyle = resolvedBg ? { backgroundColor: resolvedBg } : undefined;\n const textStyle: React.CSSProperties | undefined = resolvedText ? { color: resolvedText } : undefined;\n // The logo wordmark, description, disclaimer, and privacy/terms links each carry\n // their own theme-based text-color class, which wins over a color merely inherited\n // from an ancestor — so a custom text_color has to be applied directly on those\n // elements too, not just on the heading that already sets it inline.\n const mutedTextStyle: React.CSSProperties | undefined = resolvedText ? { color: hexToRgba(resolvedText, 0.65) } : undefined;\n\n const imageSrc = resolveImage(image);\n const logoSrc = resolveImage(logo);\n const hasPrivacyLink = Boolean(privacy_policy_link?.href && privacy_policy_link?.title);\n const hasTermsLink = Boolean(terms_link?.href && terms_link?.title);\n const isImageLeft = image_position === 'left';\n\n if (!visible) return null;\n\n const contentPanel = (\n <div className=\"flex flex-col justify-center gap-5 p-8 sm:p-10\">\n {(logoSrc || logo_text) && (\n <div className=\"flex items-center gap-2\">\n {logoSrc ? (\n <img src={logoSrc} alt={logo_text || 'Logo'} className=\"h-8 w-auto object-contain\" />\n ) : (\n <span className={`text-xl font-extrabold tracking-tight ${headingThemeClasses}`} style={textStyle}>{logo_text}</span>\n )}\n </div>\n )}\n\n {heading && (\n <h2 className={`text-3xl font-bold tracking-tight sm:text-4xl ${headingThemeClasses}`} style={textStyle}>\n {heading}\n </h2>\n )}\n\n {description && (\n <p className={`text-base leading-relaxed ${bodyThemeClasses}`} style={mutedTextStyle}>\n {renderWithHighlight(description, highlight_text)}\n </p>\n )}\n\n <form className=\"mt-1 flex flex-col gap-3\" onSubmit={(e) => e.preventDefault()}>\n <input\n type=\"email\"\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n placeholder={email_placeholder}\n className={`w-full rounded-full border px-5 py-3 text-sm outline-none transition-colors focus:ring-2 focus:ring-offset-1 ${inputThemeClasses}`}\n />\n <button\n type=\"submit\"\n className=\"w-full rounded-full px-5 py-3 text-sm font-semibold transition-transform duration-150 hover:scale-[1.01] active:scale-95\"\n style={{ backgroundColor: btnBg, color: btnFg }}\n >\n {button_text}\n </button>\n </form>\n\n {(disclaimer_prefix || hasPrivacyLink || hasTermsLink) && (\n <p className={`text-xs leading-relaxed ${disclaimerThemeClasses}`} style={mutedTextStyle}>\n {disclaimer_prefix}{' '}\n {hasPrivacyLink && (\n <a href={privacy_policy_link!.href} className={`underline underline-offset-2 ${linkThemeClasses}`} style={mutedTextStyle}>\n {privacy_policy_link!.title}\n </a>\n )}\n {hasPrivacyLink && hasTermsLink && ' and '}\n {hasTermsLink && (\n <a href={terms_link!.href} className={`underline underline-offset-2 ${linkThemeClasses}`} style={mutedTextStyle}>\n {terms_link!.title}\n </a>\n )}\n {(hasPrivacyLink || hasTermsLink) && '.'}\n </p>\n )}\n </div>\n );\n\n const imagePanel = (\n <div className=\"relative min-h-[220px] w-full overflow-hidden bg-neutral-200 md:min-h-0\">\n {imageSrc ? (\n <img src={imageSrc} alt={image_alt || heading || 'Newsletter'} className=\"h-full w-full object-cover\" />\n ) : (\n <div className=\"flex h-full w-full items-center justify-center text-sm text-neutral-500\">Image Placeholder</div>\n )}\n {image_caption && (\n <span className=\"absolute bottom-4 left-4 right-4 text-lg font-semibold leading-snug text-white drop-shadow-sm sm:text-xl\">\n {image_caption}\n </span>\n )}\n </div>\n );\n\n return (\n <section className={`${sectionThemeClasses} ${className}`.trim()} style={sectionStyle}>\n <div className=\"component-container mx-auto px-6 py-14\">\n <div className=\"relative mx-auto grid w-full max-w-3xl grid-cols-1 overflow-hidden rounded-3xl shadow-xl md:grid-cols-2\">\n {isImageLeft ? (\n <>\n {imagePanel}\n {contentPanel}\n </>\n ) : (\n <>\n {contentPanel}\n {imagePanel}\n </>\n )}\n\n {/* ── Close button ─────────────────────────────────────────────── */}\n {dismissible && (\n <button\n type=\"button\"\n onClick={() => setVisible(false)}\n aria-label=\"Close\"\n className={`absolute right-4 top-4 flex h-8 w-8 items-center justify-center rounded-full shadow-md transition-colors ${closeButtonThemeClasses}`}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n )}\n </div>\n </div>\n </section>\n );\n}\n\nexport default NewsletterSignup;\n","/* eslint-disable @next/next/no-img-element */\nimport React, { useState } from 'react';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\n/** Native Contentstack link field: `{ title, href }`. */\nexport interface ContactFormSplitLink {\n title?: string;\n href?: string;\n}\n\nexport interface ContactFormSplitField {\n label?: string;\n /** Used as the input's `name`/`id`; falls back to a slug of the label. */\n field_name?: string;\n type?: 'text' | 'email' | 'tel' | 'textarea' | string;\n /** `Half` sits two-per-row on wide panels; `Full` always spans. */\n width?: 'Half' | 'Full' | string;\n placeholder?: string;\n required?: boolean;\n}\n\nexport interface ContactFormSplitProps {\n logo?: string | { url?: string };\n logo_text?: string;\n\n panel_heading?: string;\n panel_subheading?: string;\n panel_description?: string;\n panel_cta?: ContactFormSplitLink;\n panel_image?: string | { url?: string };\n panel_image_alt?: string;\n /** Decorative chevron under the panel heading, as in the reference. */\n show_scroll_indicator?: boolean;\n\n form_heading?: string;\n form_description?: string;\n fields?: ContactFormSplitField[];\n submit_label?: string;\n /** Shown in place of the form once submitted. */\n success_message?: string;\n\n /** Which side the form sits on. */\n form_position?: 'left' | 'right' | string;\n /** Shows a ✕ in the form panel's top corner. */\n dismissible?: boolean;\n\n /** Promo panel background. */\n background_color?: StackableColorValue;\n /** Form panel flood, and the promo CTA fill. */\n accent_color?: StackableColorValue;\n text_color?: StackableColorValue;\n button_color?: StackableColorValue;\n button_text_color?: StackableColorValue;\n className?: string;\n}\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveImage(image: ContactFormSplitProps['panel_image']): string {\n if (!image) return '';\n if (typeof image === 'string') return image.trim();\n return typeof image.url === 'string' ? image.url.trim() : '';\n}\n\n/**\n * Display face for the wordmark and headings. Orbitron is already loaded by the\n * library stylesheet; a host can override the whole stack via\n * `--stackables-font-display`. Body copy, labels and buttons stay on the body\n * font — Orbitron is too wide to read well at small sizes.\n */\nconst DISPLAY_FONT = 'var(--stackables-font-display, \"Orbitron\", \"Arial Narrow\", sans-serif)';\n\nconst slug = (s: string) => s.toLowerCase().replace(/[^a-z0-9]+/g, '_').replace(/^_|_$/g, '');\n\nfunction ChevronDown({ className }: { className?: string }) {\n return (\n <svg className={className} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={1.5} aria-hidden>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n );\n}\n\nfunction CloseIcon({ className }: { className?: string }) {\n return (\n <svg className={className} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2.5} aria-hidden>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M6 6l12 12M18 6L6 18\" />\n </svg>\n );\n}\n\nexport function ContactFormSplit({\n logo,\n logo_text = '',\n panel_heading = 'The Power',\n panel_subheading = '',\n panel_description = '',\n panel_cta,\n panel_image,\n panel_image_alt,\n show_scroll_indicator = true,\n form_heading = 'Contact us',\n form_description = '',\n fields = [],\n submit_label = 'Submit',\n success_message = '',\n form_position = 'right',\n dismissible = false,\n background_color,\n accent_color,\n text_color,\n button_color,\n button_text_color,\n className = '',\n}: ContactFormSplitProps) {\n const [submitted, setSubmitted] = useState(false);\n const [dismissed, setDismissed] = useState(false);\n\n const resolvedPanelBg = resolveStackableColor(background_color);\n const resolvedAccent = resolveStackableColor(accent_color);\n const resolvedText = resolveStackableColor(text_color);\n const resolvedBtnBg = resolveStackableColor(button_color);\n const resolvedBtnFg = resolveStackableColor(button_text_color);\n\n const panelClasses = 'bg-neutral-300';\n\n const panelHeadingClasses = 'text-white';\n\n const logoClasses = 'text-neutral-900';\n\n const panelBodyClasses = 'text-neutral-800';\n\n const formPanelClasses = 'bg-lime-300';\n\n const formTextClasses = 'text-neutral-900';\n\n const formBodyClasses = 'text-neutral-700';\n\n const inputClasses = 'bg-white text-neutral-900 placeholder:text-neutral-400';\n\n const submitClasses = 'bg-neutral-900 text-white';\n\n const panelSrc = resolveImage(panel_image);\n const logoSrc = resolveImage(logo);\n const formFirst = form_position === 'left';\n\n const visibleFields = (fields ?? []).filter((f) => Boolean(f?.label?.trim()) || Boolean(f?.field_name?.trim()));\n\n if (dismissed) return null;\n\n const promoPanel = (\n <div\n className={`relative flex min-h-[26rem] min-w-[300px] flex-1 flex-col justify-between overflow-hidden ${panelClasses}`}\n style={resolvedPanelBg ? { backgroundColor: resolvedPanelBg } : undefined}\n >\n {panelSrc && (\n <img\n src={panelSrc}\n alt={panel_image_alt || ''}\n className=\"pointer-events-none absolute inset-y-0 right-0 h-full w-full object-cover object-right\"\n loading=\"lazy\"\n />\n )}\n\n <div className=\"relative px-8 pt-8 sm:px-10 sm:pt-10\">\n {(logoSrc || logo_text) && (\n <div className=\"flex items-center gap-2\">\n {logoSrc && <img src={logoSrc} alt={logo_text || 'Logo'} className=\"h-6 w-auto object-contain\" />}\n {logo_text && (\n <span\n className={`text-lg font-medium tracking-tight ${resolvedAccent ? '' : logoClasses}`}\n style={{ fontFamily: DISPLAY_FONT, ...(resolvedAccent ? { color: resolvedAccent } : {}) }}\n >\n {logo_text}\n </span>\n )}\n </div>\n )}\n </div>\n\n <div className=\"relative px-8 pb-10 sm:px-10 sm:pb-12\">\n {panel_heading && (\n <h2\n className={`max-w-[9em] font-light leading-[0.95] tracking-tight ${panelHeadingClasses}`}\n style={{ fontFamily: DISPLAY_FONT, fontSize: 'clamp(2.5rem, 7vw, 5rem)' }}\n >\n {panel_heading}\n </h2>\n )}\n\n {show_scroll_indicator && (\n <ChevronDown className={`mt-6 h-7 w-7 ${panelHeadingClasses}`} />\n )}\n\n {panel_subheading && (\n <p\n className={`mt-10 max-w-[14em] text-2xl font-medium leading-tight sm:text-3xl ${panelBodyClasses}`}\n style={{ fontFamily: DISPLAY_FONT, ...(resolvedText ? { color: resolvedText } : {}) }}\n >\n {panel_subheading}\n </p>\n )}\n\n {panel_description && (\n <p className={`mt-3 max-w-[26em] text-sm leading-relaxed ${panelBodyClasses}`}>\n {panel_description}\n </p>\n )}\n\n {panel_cta?.title && (\n <a\n href={panel_cta.href || '#'}\n className=\"mt-6 inline-block px-7 py-3 text-sm font-medium text-neutral-900 transition-transform duration-150 hover:scale-[1.02] active:scale-95\"\n style={{ backgroundColor: resolvedAccent || '#d9f99d' }}\n >\n {panel_cta.title}\n </a>\n )}\n </div>\n </div>\n );\n\n const formPanel = (\n <div\n className={`relative min-w-[300px] flex-1 px-8 py-10 sm:px-10 sm:py-12 ${formPanelClasses}`}\n style={resolvedAccent ? { backgroundColor: resolvedAccent } : undefined}\n >\n {dismissible && (\n <button\n type=\"button\"\n onClick={() => setDismissed(true)}\n aria-label=\"Close\"\n className={`absolute right-6 top-6 transition-transform duration-150 hover:scale-110 active:scale-95 ${formTextClasses}`}\n >\n <CloseIcon className=\"h-6 w-6\" />\n </button>\n )}\n\n {form_heading && (\n <h2\n className={`text-3xl font-semibold tracking-tight sm:text-4xl ${formTextClasses}`}\n style={{ fontFamily: DISPLAY_FONT, ...(resolvedText ? { color: resolvedText } : {}) }}\n >\n {form_heading}\n </h2>\n )}\n\n {form_description && (\n <p className={`mt-3 max-w-[40em] text-sm leading-relaxed ${formBodyClasses}`}>{form_description}</p>\n )}\n\n {submitted && success_message ? (\n <p className={`mt-8 text-sm font-medium ${formTextClasses}`} role=\"status\">\n {success_message}\n </p>\n ) : (\n <form\n className=\"mt-8 flex flex-wrap gap-x-5 gap-y-4\"\n onSubmit={(e) => {\n e.preventDefault();\n if (success_message) setSubmitted(true);\n }}\n >\n {visibleFields.map((field, i) => {\n const name = field.field_name?.trim() || slug(field.label || `field_${i + 1}`);\n const isTextarea = field.type === 'textarea';\n const full = isTextarea || field.width === 'Full';\n const id = `${name}-${i}`;\n\n return (\n <div\n key={id}\n className=\"flex flex-col gap-1.5\"\n style={{ flexBasis: full ? '100%' : 'calc(50% - 0.625rem)', flexGrow: 1, minWidth: '180px' }}\n >\n {field.label && (\n <label htmlFor={id} className={`text-sm ${formBodyClasses}`}>\n {field.label}\n {field.required && <span aria-hidden> *</span>}\n </label>\n )}\n {isTextarea ? (\n <textarea\n id={id}\n name={name}\n rows={5}\n required={field.required}\n placeholder={field.placeholder}\n className={`w-full resize-y px-3 py-2 text-sm outline-none ring-offset-2 focus-visible:ring-2 ${inputClasses}`}\n />\n ) : (\n <input\n id={id}\n name={name}\n type={field.type === 'email' || field.type === 'tel' ? field.type : 'text'}\n required={field.required}\n placeholder={field.placeholder}\n className={`w-full px-3 py-2 text-sm outline-none ring-offset-2 focus-visible:ring-2 ${inputClasses}`}\n />\n )}\n </div>\n );\n })}\n\n <div className=\"flex w-full justify-end\">\n <button\n type=\"submit\"\n className={`px-10 py-3 text-sm font-medium transition-transform duration-150 hover:scale-[1.02] active:scale-95 ${\n resolvedBtnBg ? '' : submitClasses\n }`}\n style={{\n ...(resolvedBtnBg ? { backgroundColor: resolvedBtnBg } : {}),\n ...(resolvedBtnFg ? { color: resolvedBtnFg } : {}),\n }}\n >\n {submit_label}\n </button>\n </div>\n </form>\n )}\n </div>\n );\n\n return (\n <section className={className}>\n {/* flex-wrap + min-width stacks the panels on narrow containers with no viewport breakpoint */}\n <div className=\"flex flex-wrap items-stretch\">\n {formFirst ? formPanel : promoPanel}\n {formFirst ? promoPanel : formPanel}\n </div>\n </section>\n );\n}\n\nexport default ContactFormSplit;\n","import React from 'react';\n\nexport interface NavMenuItem {\n label?: string;\n link?: string;\n}\n\nexport interface NavigationBarProps {\n logo?: string;\n className?: string;\n menu_items?: NavMenuItem[];\n nav_alignment?: 'left' | 'right' | 'centered-logo' | string;\n}\n\nexport function NavigationBar({\n logo = 'https://images.unsplash.com/photo-1599305445671-ac291c95aaa9?w=200&h=50&fit=crop',\n className,\n menu_items = [\n { label: 'Home', link: '#' },\n { label: 'Products', link: '#' },\n { label: 'About', link: '#' },\n { label: 'Contact', link: '#' },\n ],\n nav_alignment = 'right',\n}: NavigationBarProps) {\n return (\n <nav className={`nav-bg shadow-md ${className ?? ''}`.trim()}>\n <div className=\"component-container mx-auto px-6 py-4\">\n {nav_alignment === 'centered-logo' ? (\n <div className=\"grid grid-cols-3 items-center\">\n <div className=\"flex justify-start space-x-8\">\n {menu_items?.length > 0 && menu_items.map((item) => (\n (item?.label && item?.link) ? (\n <a key={item.label} href={item.link} className=\"text-gray-700 hover:text-[#715cdd] transition\">\n {item.label}\n </a>\n ) : item?.label ? (\n <span key={item.label} className=\"text-gray-700 hover:text-[#715cdd] transition\">\n {item.label}\n </span>\n ) : null\n ))}\n </div>\n <div className=\"flex justify-center\">\n <div className=\"text-2xl font-bold text-blue-600\">\n {logo ? <img src={logo} alt=\"Logo\" className=\"h-8\" /> : ''}\n </div>\n </div>\n </div>\n ) : (\n <div className={`flex items-center ${nav_alignment === 'left' ? 'justify-start' : 'justify-between'} space-x-8`}>\n <div className=\"text-2xl font-bold text-blue-600\">\n {logo ? <img src={logo} alt=\"Logo\" className=\"h-8\" /> : ''}\n </div>\n <div className=\"hidden md:flex space-x-8\">\n {menu_items?.length > 0 && menu_items.map((item) => (\n (item?.label && item?.link) ? (\n <a key={item.label} href={item.link} className=\"text-gray-700 hover:text-[#715cdd] transition\">\n {item.label}\n </a>\n ) : item?.label ? (\n <span key={item.label} className=\"text-gray-700 hover:text-[#715cdd] transition\">\n {item.label}\n </span>\n ) : null\n ))}\n </div>\n <button className=\"md:hidden text-gray-700\">☰</button>\n </div>\n )}\n </div>\n </nav>\n );\n}\n\nexport default NavigationBar;\n","import React, { useState, useRef, useEffect } from 'react';\nimport { ChevronDownIcon } from '@heroicons/react/24/outline';\n\nexport interface ExtendedNavLink {\n title?: string;\n href?: string;\n}\n\nexport interface ExtendedNavColumn {\n column_heading?: string;\n link?: ExtendedNavLink[];\n}\n\nexport interface MenuBanner {\n heading?: string;\n description?: string;\n image?: string | { url?: string };\n link?: string;\n}\n\nexport interface ExtendedNavMenuItem {\n label?: string;\n link?: string;\n extended_nav?: ExtendedNavColumn[];\n menu_banner?: MenuBanner;\n}\n\nexport interface ExtendedNavigationProps {\n logo?: string;\n className?: string;\n menu_items?: ExtendedNavMenuItem[];\n nav_alignment?: 'left' | 'right' | 'centered-logo' | string;\n}\n\nexport function ExtendedNavigation({\n logo = 'https://images.unsplash.com/photo-1599305445671-ac291c95aaa9?w=200&h=50&fit=crop',\n className,\n menu_items = [],\n nav_alignment = 'right',\n}: ExtendedNavigationProps) {\n const [activeDropdown, setActiveDropdown] = useState<number | null>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n const navRef = useRef<HTMLElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (window.location.href.includes('stackables') || window.location.href.includes('localhost')) return;\n if (navRef.current && !navRef.current.contains(event.target as Node)) {\n setActiveDropdown(null);\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, []);\n\n const handleChevronClick = (index: number, event: React.MouseEvent) => {\n event.preventDefault();\n const menuItem = menu_items?.[index];\n if (menuItem?.extended_nav || menuItem?.menu_banner) {\n setActiveDropdown(activeDropdown === index ? null : index);\n }\n };\n\n const activeItem = activeDropdown !== null ? menu_items?.[activeDropdown] : null;\n const bannerImageSrc = activeItem?.menu_banner?.image\n ? typeof activeItem.menu_banner.image === 'string'\n ? activeItem.menu_banner.image\n : activeItem.menu_banner.image.url\n : undefined;\n\n return (\n <nav ref={navRef} className={`nav-bg shadow-md relative ${className ?? ''}`.trim()}>\n <div className=\"component-container mx-auto px-6 py-4\">\n {nav_alignment === 'centered-logo' ? (\n <div className=\"grid grid-cols-3 items-center\">\n <div className=\"flex justify-start space-x-8\">\n {menu_items?.map((item, index) => {\n const hasExtendedNav = (item?.extended_nav?.length ?? 0) > 0;\n return (\n <div key={item.label || index} className=\"relative flex items-center\">\n {item?.link ? (\n <a href={item.link} className={`transition cursor-pointer ${activeDropdown === index ? 'text-[#715cdd]' : 'text-gray-700 hover:text-[#715cdd]'}`}>\n {item.label}\n </a>\n ) : (\n <span className={`transition ${activeDropdown === index ? 'text-[#715cdd]' : 'text-gray-700 hover:text-[#715cdd]'}`}>\n {item.label}\n </span>\n )}\n {hasExtendedNav && (\n <ChevronDownIcon\n onClick={(e) => handleChevronClick(index, e)}\n className={`ml-1 w-4 h-4 transform transition-transform ${activeDropdown === index ? 'rotate-180 text-[#715cdd]' : 'text-gray-400 hover:text-[#715cdd]'}`}\n />\n )}\n </div>\n );\n })}\n </div>\n <div className=\"flex justify-center\">\n <div className=\"text-2xl font-bold text-[#715cdd]\">\n {logo && <img src={logo} alt=\"Logo\" className=\"h-8\" />}\n </div>\n </div>\n </div>\n ) : (\n <div className={`flex items-center ${nav_alignment === 'left' ? 'justify-start' : 'justify-between'} space-x-8`}>\n <div className=\"text-2xl font-bold text-[#715cdd]\">\n {logo && <img src={logo} alt=\"Logo\" className=\"h-8\" />}\n </div>\n <div className=\"hidden md:flex space-x-8\">\n {menu_items?.map((item, index) => {\n const hasExtendedNav = (item?.extended_nav?.length ?? 0) > 0;\n return (\n <div key={item.label || index} className=\"relative flex items-center\">\n {item?.link ? (\n <a href={item.link} className={`transition cursor-pointer ${activeDropdown === index ? 'text-[#715cdd]' : 'text-gray-700 hover:text-[#715cdd]'}`}>\n {item.label}\n </a>\n ) : (\n <span className={`transition ${activeDropdown === index ? 'text-[#715cdd]' : 'text-gray-700 hover:text-[#715cdd]'}`}>\n {item.label}\n </span>\n )}\n {hasExtendedNav && (\n <ChevronDownIcon\n onClick={(e) => handleChevronClick(index, e)}\n className={`ml-1 w-4 h-4 transform transition-transform ${activeDropdown === index ? 'rotate-180 text-[#715cdd]' : 'text-gray-400 hover:text-[#715cdd]'}`}\n />\n )}\n </div>\n );\n })}\n </div>\n <button className=\"md:hidden text-gray-700\">☰</button>\n </div>\n )}\n </div>\n\n {activeDropdown !== null && activeItem && (\n <div\n ref={dropdownRef}\n className=\"absolute top-full left-0 w-full bg-white shadow-lg border-t z-50\"\n >\n <div className=\"component-container mx-auto px-6 py-8\">\n <div className=\"grid grid-cols-12 gap-8\">\n {activeItem.extended_nav && (\n <div className=\"col-span-8\">\n <div className=\"grid grid-cols-3 gap-6\">\n {activeItem.extended_nav.map((column, colIndex) => (\n <div key={colIndex} className=\"space-y-4\">\n {column.column_heading && (\n <h3 className=\"font-semibold text-gray-900\">{column.column_heading}</h3>\n )}\n {column.link && (\n <div className=\"space-y-2\">\n {column.link.map((linkItem, linkIndex) => (\n <a\n key={linkIndex}\n href={linkItem.href}\n className=\"block text-sm text-gray-600 hover:text-[#715cdd] transition\"\n >\n {linkItem.title}\n </a>\n ))}\n </div>\n )}\n </div>\n ))}\n </div>\n </div>\n )}\n\n {activeItem.menu_banner && (\n <div className=\"col-span-4\">\n <a className=\"h-full\" href={activeItem.menu_banner.link || '#'}>\n {bannerImageSrc && (\n <img\n src={bannerImageSrc}\n alt={activeItem.menu_banner.heading}\n className=\"w-full h-48 object-cover rounded-lg mb-4\"\n />\n )}\n {activeItem.menu_banner.heading && (\n <h3 className=\"text-lg font-semibold text-gray-900 mb-2\">\n {activeItem.menu_banner.heading}\n </h3>\n )}\n {activeItem.menu_banner.description && (\n <p className=\"text-sm text-gray-600 mb-4\">\n {activeItem.menu_banner.description}\n </p>\n )}\n </a>\n </div>\n )}\n </div>\n </div>\n </div>\n )}\n </nav>\n );\n}\n\nexport default ExtendedNavigation;\n","import React, { useState } from 'react';\nimport {\n HomeIcon,\n FolderIcon,\n DocumentIcon,\n TagIcon,\n Squares2X2Icon,\n Cog6ToothIcon,\n UserIcon,\n ShoppingBagIcon,\n GlobeAltIcon,\n StarIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from '@heroicons/react/24/outline';\nimport { resolveStackableColor, hexToRgba } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\n/** Curated preset — editors pick one of these, or override with `icon_image`. */\nconst CRUMB_ICONS: Record<string, React.ComponentType<{ className?: string }>> = {\n Home: HomeIcon,\n Folder: FolderIcon,\n Document: DocumentIcon,\n Tag: TagIcon,\n Category: Squares2X2Icon,\n Settings: Cog6ToothIcon,\n User: UserIcon,\n ShoppingBag: ShoppingBagIcon,\n Globe: GlobeAltIcon,\n Star: StarIcon,\n};\n\nexport interface BreadcrumbItem {\n title?: string;\n url?: string;\n /** Preset icon key from the curated set, or `\"None\"` — the default — for no icon.\n * Ignored when `icon_image` is set. */\n icon?: keyof typeof CRUMB_ICONS | 'None' | string;\n /** Uploaded asset URL, or a Contentstack asset object — takes precedence over `icon`. */\n icon_image?: string | { url?: string };\n}\n\nexport interface BreadcrumbNavigationProps {\n items?: BreadcrumbItem[];\n separator_style?: 'slash' | 'chevron' | 'arrow' | string;\n /** Collapses a trail longer than this into first item → \"…\" → last two items,\n * clicking \"…\" reveals the full trail. 0 disables collapsing entirely. On narrow\n * screens this collapses further regardless (down to 3), unless set to 0. */\n max_items?: number;\n /** Shows a pill-shaped prev/next pair to the left of the trail, stepping through\n * the browser's own session history — the same back/forward the browser chrome\n * already offers, just skinned to match the component. No CMS link config needed. */\n show_prev_next?: boolean;\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n className?: string;\n}\n\nconst DEFAULT_ITEMS: BreadcrumbItem[] = [\n { title: 'Home', url: '#', icon: 'Home' },\n { title: 'Blog', url: '#' },\n { title: 'Marketing', url: '#' },\n { title: 'Content Strategy', url: '#' },\n { title: 'How to Build a Component Library' },\n];\n\nconst SEPARATORS: Record<string, string> = {\n slash: '/',\n chevron: '›',\n arrow: '→',\n};\n\nfunction Separator({\n style,\n className,\n colorStyle,\n}: {\n style: string;\n className: string;\n colorStyle?: React.CSSProperties;\n}) {\n return (\n <span className={`select-none ${className}`} style={colorStyle} aria-hidden=\"true\">\n {SEPARATORS[style] ?? SEPARATORS.chevron}\n </span>\n );\n}\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveIconImage(icon: BreadcrumbItem['icon_image']): string {\n if (!icon) return '';\n if (typeof icon === 'string') return icon.trim();\n return typeof icon.url === 'string' ? icon.url.trim() : '';\n}\n\nfunction CrumbIcon({ item, className }: { item: BreadcrumbItem; className: string }) {\n const uploadedSrc = resolveIconImage(item.icon_image);\n if (uploadedSrc) return <img src={uploadedSrc} alt=\"\" className={`${className} object-contain`} />;\n const PresetIcon = item.icon && item.icon !== 'None' ? CRUMB_ICONS[item.icon as string] : undefined;\n if (PresetIcon) return <PresetIcon className={className} />;\n return null;\n}\n\ntype TrailEntry = BreadcrumbItem | { ellipsis: true };\n\n/** Collapses a long trail down to its first item, an ellipsis, and its last two —\n * the shape most breadcrumb UIs use (Home › … › Parent › Current). `maxItems <= 0`\n * or a trail already at or under the limit is returned untouched. */\nfunction getCollapsedTrail(items: BreadcrumbItem[], maxItems: number): TrailEntry[] {\n if (maxItems <= 0 || items.length <= maxItems) return items;\n return [items[0], { ellipsis: true }, ...items.slice(-2)];\n}\n\ninterface TrailStyles {\n separatorStyle: string;\n linkClass: string;\n currentClass: string;\n separatorClass: string;\n linkColorStyle?: React.CSSProperties;\n currentColorStyle?: React.CSSProperties;\n separatorColorStyle?: React.CSSProperties;\n}\n\nfunction BreadcrumbTrail({\n items,\n maxItems,\n expanded,\n onExpand,\n styles,\n}: {\n items: BreadcrumbItem[];\n maxItems: number;\n expanded: boolean;\n onExpand: () => void;\n styles: TrailStyles;\n}) {\n const trail = expanded ? items : getCollapsedTrail(items, maxItems);\n\n return (\n <>\n {trail.map((entry, index) => {\n const isLastEntry = index === trail.length - 1;\n\n if ('ellipsis' in entry) {\n return (\n <li key=\"ellipsis\" className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={onExpand}\n className={`rounded px-1 transition-colors ${styles.linkClass}`}\n style={styles.linkColorStyle}\n aria-label=\"Show all breadcrumb items\"\n >\n …\n </button>\n <Separator style={styles.separatorStyle} className={styles.separatorClass} colorStyle={styles.separatorColorStyle} />\n </li>\n );\n }\n\n const iconClass = 'h-4 w-4 shrink-0 self-center';\n // The current page (last entry) wraps onto its own line on narrow screens rather\n // than sharing one with siblings, so it can afford a much looser cap — a fixed\n // 8rem here would clip it against empty space it isn't actually competing for.\n const titleClass = isLastEntry\n ? 'block max-w-[70vw] truncate leading-4 sm:max-w-[24rem]'\n : 'block max-w-[8rem] truncate leading-4 sm:max-w-[16rem]';\n const content = (\n <span className=\"inline-flex min-w-0 items-center gap-1.5 leading-none\">\n <CrumbIcon item={entry} className={iconClass} />\n {entry.title && <span className={titleClass}>{entry.title}</span>}\n </span>\n );\n\n return (\n <li key={index} className=\"flex min-w-0 items-center gap-2\">\n {isLastEntry || !entry.url ? (\n <span\n className={`inline-flex min-w-0 items-center font-medium ${styles.currentClass}`}\n style={styles.currentColorStyle}\n aria-current={isLastEntry ? 'page' : undefined}\n >\n {content}\n </span>\n ) : (\n <a\n href={entry.url}\n className={`group relative inline-flex min-w-0 items-center transition-colors ${styles.linkClass}`}\n style={styles.linkColorStyle}\n >\n {content}\n <span className=\"absolute inset-x-0 -bottom-0.5 h-px scale-x-0 bg-current transition-transform duration-200 group-hover:scale-x-100\" />\n </a>\n )}\n {!isLastEntry && <Separator style={styles.separatorStyle} className={styles.separatorClass} colorStyle={styles.separatorColorStyle} />}\n </li>\n );\n })}\n </>\n );\n}\n\n/** Steps through the browser's own session history — same as its native back/forward\n * buttons, just skinned to match the component. There's no reliable way to introspect\n * whether either direction actually has anywhere to go, so both stay clickable and,\n * like the browser chrome itself, simply no-op at the ends of the stack. */\nfunction PrevNextPill({\n pillClasses,\n buttonClasses,\n dividerClasses,\n iconColorStyle,\n}: {\n pillClasses: string;\n buttonClasses: string;\n dividerClasses: string;\n iconColorStyle?: React.CSSProperties;\n}) {\n return (\n <div className={`inline-flex shrink-0 items-center overflow-hidden rounded-full border ${pillClasses}`}>\n <button\n type=\"button\"\n onClick={() => window.history.back()}\n aria-label=\"Go back\"\n className={`hover:cursor-pointer flex h-7 w-7 items-center justify-center transition-colors ${buttonClasses}`}\n style={iconColorStyle}\n >\n <ChevronLeftIcon className=\"h-4 w-4\" />\n </button>\n <span className={`h-4 w-px ${dividerClasses}`} aria-hidden=\"true\" />\n <button\n type=\"button\"\n onClick={() => window.history.forward()}\n aria-label=\"Go forward\"\n className={`hover:cursor-pointer flex h-7 w-7 items-center justify-center transition-colors ${buttonClasses}`}\n style={iconColorStyle}\n >\n <ChevronRightIcon className=\"h-4 w-4\" />\n </button>\n </div>\n );\n}\n\nexport function BreadcrumbNavigation({\n items,\n separator_style = 'chevron',\n max_items = 4,\n show_prev_next = false,\n background_color,\n text_color,\n className = '',\n}: BreadcrumbNavigationProps) {\n const [expanded, setExpanded] = useState(false);\n const resolvedItems = (items?.length ? items : DEFAULT_ITEMS).filter(\n (item) => item?.title?.trim() || item?.icon || item?.icon_image,\n );\n\n const sectionThemeClasses = 'bg-white';\n const linkThemeClasses = 'text-neutral-500 hover:text-neutral-900';\n const currentThemeClasses = 'text-neutral-900';\n const separatorThemeClasses = 'text-neutral-300';\n const pillThemeClasses = 'border-neutral-200';\n const pillButtonThemeClasses = 'text-neutral-600 hover:bg-neutral-100 hover:text-neutral-900';\n const pillDividerThemeClasses = 'bg-neutral-200';\n\n const resolvedBg = resolveStackableColor(background_color);\n const resolvedText = resolveStackableColor(text_color);\n const sectionStyle = resolvedBg ? { backgroundColor: resolvedBg } : undefined;\n // Every visible crumb (link, current page, separator, ellipsis) carries its own\n // theme-based text-color class, which wins over a color merely inherited from an\n // ancestor — so a custom text_color has to be set directly on each of those\n // elements, not just on the trail's wrapping <ol>.\n const currentColorStyle: React.CSSProperties | undefined = resolvedText ? { color: resolvedText } : undefined;\n const linkColorStyle: React.CSSProperties | undefined = resolvedText ? { color: hexToRgba(resolvedText, 0.65) } : undefined;\n const separatorColorStyle: React.CSSProperties | undefined = resolvedText ? { color: hexToRgba(resolvedText, 0.35) } : undefined;\n\n if (resolvedItems.length === 0) return null;\n\n const trailStyles: TrailStyles = {\n separatorStyle: separator_style,\n linkClass: linkThemeClasses,\n currentClass: currentThemeClasses,\n separatorClass: separatorThemeClasses,\n linkColorStyle,\n currentColorStyle,\n separatorColorStyle,\n };\n\n // A trail left uncollapsed on desktop (`max_items` wide) would otherwise force a\n // second wrapped line on a phone — collapsing further there keeps it to one line,\n // unless the editor explicitly turned collapsing off entirely (`max_items <= 0`).\n const mobileMaxItems = max_items > 0 ? Math.min(max_items, 3) : 0;\n const expand = () => setExpanded(true);\n\n return (\n <section className={`${sectionThemeClasses} ${className}`.trim()} style={sectionStyle}>\n <div className=\"component-container mx-auto px-4 py-3 sm:px-6\">\n <nav aria-label=\"Breadcrumb\" className=\"flex items-center gap-3\">\n {show_prev_next && (\n <PrevNextPill\n pillClasses={pillThemeClasses}\n buttonClasses={pillButtonThemeClasses}\n dividerClasses={pillDividerThemeClasses}\n iconColorStyle={linkColorStyle}\n />\n )}\n <ol className=\"flex min-w-0 flex-wrap items-center gap-2 text-sm sm:hidden\">\n <BreadcrumbTrail items={resolvedItems} maxItems={mobileMaxItems} expanded={expanded} onExpand={expand} styles={trailStyles} />\n </ol>\n <ol className=\"hidden min-w-0 flex-wrap items-center gap-2 text-sm sm:flex\">\n <BreadcrumbTrail items={resolvedItems} maxItems={max_items} expanded={expanded} onExpand={expand} styles={trailStyles} />\n </ol>\n </nav>\n </div>\n </section>\n );\n}\n\nexport default BreadcrumbNavigation;\n","import React, { useEffect, useRef, useState } from 'react';\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n Bars3Icon,\n XMarkIcon,\n HomeIcon,\n DocumentTextIcon,\n QueueListIcon,\n PhotoIcon,\n GlobeAltIcon,\n ArrowPathIcon,\n TagIcon,\n ShieldCheckIcon,\n ShoppingBagIcon,\n Cog6ToothIcon,\n} from '@heroicons/react/24/outline';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface SidebarLink {\n text?: string;\n link?: string;\n}\n\nexport interface SidebarItem {\n link?: SidebarLink;\n /** Recognized icon keyword (see ICON_MAP), an image URL, or a Contentstack asset object. */\n icon?: string | { url?: string };\n}\n\nexport interface SidebarProps {\n title?: string;\n subtitle?: string;\n logo?: string;\n items?: SidebarItem[];\n cta_button?: SidebarLink;\n collapsible?: boolean;\n default_open?: boolean;\n position?: 'left' | 'right' | string;\n width?: 'narrow' | 'medium' | 'wide' | string;\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n className?: string;\n}\n\nconst WIDTH_CLASSES: Record<string, string> = {\n narrow: 'w-56',\n medium: 'w-64',\n wide: 'w-80',\n};\n\n// Below this measured container width the sidebar becomes a hamburger-triggered\n// drawer instead of an inline column. Measured via ResizeObserver (not CSS media\n// queries) so it responds to the component's actual box, not the browser viewport.\nconst MOBILE_BREAKPOINT = 768;\n\n// Recognized `icon` keys, resolved to a bundled vector icon. Any other non-empty\n// string is treated as an image URL and rendered with <img>.\nconst ICON_MAP: Record<string, React.ComponentType<React.SVGProps<SVGSVGElement>>> = {\n home: HomeIcon,\n dashboard: HomeIcon,\n 'document-text': DocumentTextIcon,\n content: DocumentTextIcon,\n 'queue-list': QueueListIcon,\n entries: QueueListIcon,\n photo: PhotoIcon,\n assets: PhotoIcon,\n 'globe-alt': GlobeAltIcon,\n environments: GlobeAltIcon,\n 'arrow-path': ArrowPathIcon,\n workflows: ArrowPathIcon,\n tag: TagIcon,\n releases: TagIcon,\n 'shield-check': ShieldCheckIcon,\n roles: ShieldCheckIcon,\n 'shopping-bag': ShoppingBagIcon,\n marketplace: ShoppingBagIcon,\n cog: Cog6ToothIcon,\n settings: Cog6ToothIcon,\n};\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveIconUrl(icon?: string | { url?: string }): string {\n if (!icon) return '';\n if (typeof icon === 'string') return icon.trim();\n return typeof icon.url === 'string' ? icon.url.trim() : '';\n}\n\nfunction ItemIcon({ icon }: { icon?: string | { url?: string } }) {\n if (!icon) return null;\n const Icon = typeof icon === 'string' ? ICON_MAP[icon.toLowerCase()] : undefined;\n if (Icon) return <Icon className=\"h-5 w-5 flex-shrink-0\" />;\n const iconUrl = resolveIconUrl(icon);\n if (!iconUrl) return null;\n return <img src={iconUrl} alt=\"\" className=\"h-5 w-5 flex-shrink-0 object-contain\" />;\n}\n\nexport function Sidebar({\n title = '',\n subtitle = '',\n logo = '',\n items = [],\n cta_button,\n collapsible = true,\n default_open = true,\n position = 'left',\n width = 'medium',\n background_color,\n text_color,\n className = '',\n}: SidebarProps) {\n const [open, setOpen] = useState(default_open);\n const [mobileOpen, setMobileOpen] = useState(false);\n const [containerWidth, setContainerWidth] = useState(0);\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n setOpen(default_open);\n }, [default_open]);\n\n useEffect(() => {\n const el = containerRef.current;\n if (!el) return;\n const ro = new ResizeObserver(([entry]) => setContainerWidth(entry.contentRect.width));\n ro.observe(el);\n return () => ro.disconnect();\n }, []);\n\n const isMobile = containerWidth > 0 && containerWidth < MOBILE_BREAKPOINT;\n const isRight = position === 'right';\n const isOpen = collapsible ? open : true;\n\n const resolvedBg = resolveStackableColor(background_color as StackableColorValue);\n const resolvedTextColor = resolveStackableColor(text_color as StackableColorValue);\n const asideStyle = resolvedBg ? { backgroundColor: resolvedBg } : undefined;\n const textStyle: React.CSSProperties | undefined = resolvedTextColor ? { color: resolvedTextColor } : undefined;\n\n const widthClass = isOpen ? (WIDTH_CLASSES[width] || WIDTH_CLASSES.medium) : 'w-16';\n const borderSide = isRight ? 'border-l' : 'border-r';\n const ToggleIcon = isRight\n ? (isOpen ? ChevronRightIcon : ChevronLeftIcon)\n : (isOpen ? ChevronLeftIcon : ChevronRightIcon);\n\n const renderNav = (expanded: boolean) => (\n <>\n <nav className=\"flex-1 overflow-y-auto px-2 py-2 space-y-1\">\n {items?.map((item, i) => (\n <a\n key={i}\n href={item.link?.link || '#'}\n title={!expanded ? item.link?.text : undefined}\n className={`flex items-center gap-3 rounded px-2.5 py-2 text-sm text-gray-700 hover:bg-gray-100 hover:text-[#715cdd] transition-colors ${expanded ? '' : 'justify-center'}`}\n style={textStyle}\n >\n <ItemIcon icon={item.icon} />\n {expanded && <span className=\"truncate\">{item.link?.text || 'Menu item'}</span>}\n </a>\n ))}\n </nav>\n\n {cta_button?.text && (\n <div className=\"px-3 py-4 border-t border-gray-200\">\n <a\n href={cta_button.link || '#'}\n className={`flex items-center justify-center rounded-md bg-[#715cdd] px-3 py-2 text-sm font-medium text-white hover:bg-[#5f4bc7] transition-colors ${expanded ? '' : 'px-0'}`}\n title={!expanded ? cta_button.text : undefined}\n >\n {expanded ? cta_button.text : cta_button.text.charAt(0)}\n </a>\n </div>\n )}\n </>\n );\n\n if (isMobile) {\n return (\n <div ref={containerRef} className=\"relative w-full h-full overflow-hidden\">\n <div\n className=\"flex items-center justify-between gap-3 px-4 py-3 border-b border-gray-200 bg-white\"\n style={asideStyle}\n >\n <div className=\"flex items-center gap-2 min-w-0\">\n {logo && <img src={logo} alt={title || 'Logo'} className=\"h-7 w-7 flex-shrink-0 object-contain\" />}\n {title && (\n <span className=\"font-semibold text-sm text-gray-900 truncate\" style={textStyle}>\n {title}\n </span>\n )}\n </div>\n <button\n type=\"button\"\n onClick={() => setMobileOpen(true)}\n aria-label=\"Open menu\"\n aria-expanded={mobileOpen}\n className=\"flex-shrink-0 p-1.5 rounded hover:bg-gray-100 text-gray-500 transition-colors\"\n >\n <Bars3Icon className=\"w-5 h-5\" />\n </button>\n </div>\n\n {mobileOpen && (\n <>\n <div\n className=\"absolute inset-0 bg-black/40 z-40\"\n onClick={() => setMobileOpen(false)}\n aria-hidden=\"true\"\n />\n <aside\n className={`absolute top-0 ${isRight ? 'right-0' : 'left-0'} h-full flex flex-col bg-white z-50 shadow-xl ${WIDTH_CLASSES[width] || WIDTH_CLASSES.medium} ${className}`.trim()}\n style={asideStyle}\n >\n <div className=\"flex items-center justify-between gap-3 px-4 py-5\">\n <div className=\"flex items-center gap-3 min-w-0\">\n {logo && <img src={logo} alt={title || 'Logo'} className=\"h-8 w-8 flex-shrink-0 object-contain\" />}\n <div className=\"min-w-0\">\n {title && (\n <p className=\"font-semibold text-sm text-gray-900 truncate\" style={textStyle}>\n {title}\n </p>\n )}\n {subtitle && <p className=\"text-xs text-gray-500 truncate\">{subtitle}</p>}\n </div>\n </div>\n <button\n type=\"button\"\n onClick={() => setMobileOpen(false)}\n aria-label=\"Close menu\"\n className=\"flex-shrink-0 p-1.5 rounded hover:bg-gray-100 text-gray-500 transition-colors\"\n >\n <XMarkIcon className=\"w-4 h-4\" />\n </button>\n </div>\n {renderNav(true)}\n </aside>\n </>\n )}\n </div>\n );\n }\n\n return (\n <div ref={containerRef} className=\"w-full h-full\">\n <aside\n className={`flex flex-col h-full bg-white ${borderSide} border-gray-200 transition-all duration-200 ${widthClass} ${className}`.trim()}\n style={asideStyle}\n >\n {isOpen ? (\n <div className=\"flex items-center justify-between gap-3 px-4 py-5\">\n <div className=\"flex items-center gap-3 min-w-0\">\n {logo && <img src={logo} alt={title || 'Logo'} className=\"h-8 w-8 flex-shrink-0 object-contain\" />}\n <div className=\"min-w-0\">\n {title && (\n <p className=\"font-semibold text-sm text-gray-900 truncate\" style={textStyle}>\n {title}\n </p>\n )}\n {subtitle && (\n <p className=\"text-xs text-gray-500 truncate\">{subtitle}</p>\n )}\n </div>\n </div>\n {collapsible && (\n <button\n type=\"button\"\n onClick={() => setOpen((prev) => !prev)}\n aria-label=\"Collapse sidebar\"\n aria-expanded={true}\n className=\"flex-shrink-0 p-1.5 rounded hover:bg-gray-100 text-gray-500 transition-colors\"\n >\n <ToggleIcon className=\"w-4 h-4\" />\n </button>\n )}\n </div>\n ) : (\n <div className=\"flex flex-col items-center px-2 py-4\">\n {logo ? (\n <button\n type=\"button\"\n onClick={() => setOpen((prev) => !prev)}\n aria-label=\"Expand sidebar\"\n aria-expanded={false}\n className=\"group relative h-8 w-8 flex-shrink-0\"\n >\n <img\n src={logo}\n alt={title || 'Logo'}\n className=\"absolute inset-0 h-8 w-8 object-contain transition-opacity group-hover:opacity-0\"\n />\n <span className=\"absolute inset-0 flex items-center justify-center rounded bg-gray-100 text-gray-500 opacity-0 transition-opacity group-hover:opacity-100\">\n <ToggleIcon className=\"w-4 h-4\" />\n </span>\n </button>\n ) : (\n <button\n type=\"button\"\n onClick={() => setOpen((prev) => !prev)}\n aria-label=\"Expand sidebar\"\n aria-expanded={false}\n className=\"flex-shrink-0 p-1.5 rounded hover:bg-gray-100 text-gray-500 transition-colors\"\n >\n <ToggleIcon className=\"w-4 h-4\" />\n </button>\n )}\n </div>\n )}\n\n {renderNav(isOpen)}\n </aside>\n </div>\n );\n}\n\nexport default Sidebar;\n","import React, { useEffect, useRef, useState } from 'react';\nimport {\n HomeIcon,\n Squares2X2Icon,\n BookOpenIcon,\n CodeBracketIcon,\n GlobeAltIcon,\n EnvelopeIcon,\n UserIcon,\n Cog6ToothIcon,\n MagnifyingGlassIcon,\n ChatBubbleLeftRightIcon,\n HeartIcon,\n ShoppingBagIcon,\n} from '@heroicons/react/24/outline';\nimport { resolveStackableColor, hexToRgba } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\n/** Curated preset — editors pick one of these, or override with `icon_image`. */\nconst DOCK_ICONS: Record<string, React.ComponentType<{ className?: string; style?: React.CSSProperties }>> = {\n Home: HomeIcon,\n Products: Squares2X2Icon,\n Docs: BookOpenIcon,\n Code: CodeBracketIcon,\n Globe: GlobeAltIcon,\n Mail: EnvelopeIcon,\n User: UserIcon,\n Settings: Cog6ToothIcon,\n Search: MagnifyingGlassIcon,\n Chat: ChatBubbleLeftRightIcon,\n Heart: HeartIcon,\n Shop: ShoppingBagIcon,\n};\n\nexport interface FloatingDockLink {\n title?: string;\n href?: string;\n}\n\nexport interface FloatingDockItem {\n link?: FloatingDockLink;\n /** Preset icon key from the curated set. Ignored when `icon_image` is set;\n * falls back to the link title's first letter when neither is provided. */\n icon?: keyof typeof DOCK_ICONS | string;\n /** Uploaded asset URL, or a Contentstack asset object — takes precedence over `icon`. */\n icon_image?: string | { url?: string };\n}\n\nexport interface FloatingDockProps {\n items?: FloatingDockItem[];\n /** Which edge of the bottom the dock hugs. Empty falls back to centered. */\n position?: 'left' | 'center' | 'right' | string;\n /** Pins the dock to the bottom of the viewport, which is what an editor dropping\n * it onto a page expects. Set false to emit no positioning or z-index at all —\n * the dock then renders in normal flow and the host decides placement, stacking,\n * offsets and any overflow handling by wrapping it (shrink-to-fit sizing is also\n * skipped, see below). Code-only (like `className`); not a CMS field, since\n * `position` is the only placement choice editors make. */\n fixed_position?: boolean;\n /** Magnifies icons near the cursor, macOS-dock style. Off for anyone with\n * `prefers-reduced-motion` regardless. Tooltips show either way. */\n animate_magnify?: boolean;\n /** The dock pill's own background. */\n background_color?: StackableColorValue;\n /** Each icon's resting chip background, sitting one shade lifted off `background_color`. */\n accent_color?: StackableColorValue;\n /** Icon glyph color. */\n icon_color?: StackableColorValue;\n className?: string;\n}\n\nconst DEFAULT_ITEMS: FloatingDockItem[] = [\n { link: { title: 'Home', href: '#' }, icon: 'Home' },\n { link: { title: 'Products', href: '#' }, icon: 'Products' },\n { link: { title: 'Docs', href: '#' }, icon: 'Docs' },\n { link: { title: 'Code', href: '#' }, icon: 'Code' },\n { link: { title: 'Community', href: '#' }, icon: 'Chat' },\n { link: { title: 'Contact', href: '#' }, icon: 'Mail' },\n];\n\nconst POSITION_CLASSES: Record<string, string> = {\n left: 'left-4 sm:left-6',\n center: 'left-1/2 -translate-x-1/2',\n right: 'right-4 sm:right-6',\n};\n\n/** `position` still means something unpinned — it aligns the dock in its container. */\nconst ALIGN_CLASSES: Record<string, string> = {\n left: 'mr-auto',\n center: 'mx-auto',\n right: 'ml-auto',\n};\n\nconst ICON_REST = 40;\nconst ICON_MAX = 80;\nconst ICON_GAP = 16;\nconst DOCK_PADDING_X = 16;\nconst DOCK_PADDING_BOTTOM = 12;\n// Shorter than a fully magnified icon on purpose: the growing icon overflows the\n// pill's top edge and rises out of the bar, which is the whole look.\nconst DOCK_HEIGHT = 64;\n\n// How far (px) either side of the cursor the magnification reaches. Icons scale\n// linearly from ICON_MAX at the cursor down to ICON_REST at the edge of that range.\nconst MAGNIFY_RADIUS = 150;\n\n/** Breathing room left either side of the dock when it has to shrink to fit. */\nconst VIEWPORT_MARGIN = 32;\n\n// Sizes are driven by a spring on rAF rather than a CSS transition. A transition\n// restarts from its current value on every mousemove, and at ~120 events/sec it\n// never gets to play out — the icons end up tracking the pointer almost 1:1, which\n// reads as twitchy. A spring instead keeps velocity between frames and eases toward\n// a target that's allowed to keep moving, so fast cursor sweeps trail smoothly.\n// Damping ratio here is ~1.0 (critically damped): no bounce, just a soft settle.\nconst SPRING_STIFFNESS = 130;\nconst SPRING_DAMPING = 23;\nconst SPRING_MASS = 1;\n/** Below this (px and px/s) a size is snapped to its target and the loop can stop. */\nconst SETTLE_EPSILON = 0.1;\n/** Guards the integrator against a huge dt after the tab is backgrounded. */\nconst MAX_FRAME_SECONDS = 1 / 30;\n\nfunction prefersReducedMotion(): boolean {\n return typeof window !== 'undefined' && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n}\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveIconImage(icon: FloatingDockItem['icon_image']): string {\n if (!icon) return '';\n if (typeof icon === 'string') return icon.trim();\n return typeof icon.url === 'string' ? icon.url.trim() : '';\n}\n\nexport function FloatingDock({\n items = DEFAULT_ITEMS,\n position = 'center',\n fixed_position = true,\n animate_magnify = true,\n background_color,\n icon_color,\n accent_color,\n className = '',\n}: FloatingDockProps) {\n const wrapperRef = useRef<HTMLDivElement>(null);\n const itemRefs = useRef<(HTMLAnchorElement | null)[]>([]);\n const [hoveredIndex, setHoveredIndex] = useState<number | null>(null);\n // <1 once the resting row can't fit the available width — every dimension is\n // multiplied by it, so a crowded dock shrinks proportionally the way the macOS\n // dock does rather than running off the side of a phone.\n const [fit, setFit] = useState(1);\n\n // Spring state lives in refs and is written straight to the DOM as a\n // `--dock-size` custom property, so the animation never re-renders React. Width,\n // height and the glyph all derive from that one property.\n const targetsRef = useRef<number[]>([]);\n const valuesRef = useRef<number[]>([]);\n const velocitiesRef = useRef<number[]>([]);\n const frameRef = useRef<number | null>(null);\n const lastTimeRef = useRef(0);\n\n const resolvedBgHex = resolveStackableColor(background_color) || '#ffffff';\n const resolvedChipHex = resolveStackableColor(accent_color) || '#f5f5f5';\n const resolvedIconColor = resolveStackableColor(icon_color) || '#404040';\n\n const visibleItems = (items ?? []).filter((item) => item?.link?.href);\n const itemCount = visibleItems.length;\n\n const iconRest = ICON_REST * fit;\n const iconMax = ICON_MAX * fit;\n const magnifyRadius = MAGNIFY_RADIUS * fit;\n // The rAF loop below re-schedules its own closure, so it would otherwise keep\n // reading whatever `iconRest` was when the loop started.\n const restSizeRef = useRef(iconRest);\n restSizeRef.current = iconRest;\n\n useEffect(() => {\n const el = wrapperRef.current;\n if (!el || itemCount === 0) return;\n\n // Auto-fit only means something when the container's width is decided\n // independently of the dock. Unpinned, the host owns layout and commonly wraps\n // the dock in something shrink-to-fit (an absolutely positioned box, a flex\n // item) — measuring that would feed the dock's own width back into its\n // available width and collapse it to nothing. So shrinking is a pinned-only\n // behaviour; unpinned, the dock keeps its natural size and the host handles\n // any overflow, which is the point of opting out.\n if (!fixed_position) {\n setFit(1);\n return;\n }\n\n // Pinned, the dock sizes against the viewport — unless a transformed ancestor\n // (the gallery's scaled preview, say) becomes its containing block, which\n // `offsetParent` reports for exactly that case.\n const containerOf = (): HTMLElement =>\n (el.offsetParent as HTMLElement | null) ?? document.documentElement;\n\n const measure = () => {\n const available = containerOf().clientWidth - VIEWPORT_MARGIN;\n const natural = itemCount * ICON_REST + (itemCount - 1) * ICON_GAP + DOCK_PADDING_X * 2;\n setFit(Math.min(1, available / natural));\n };\n\n measure();\n const ro = new ResizeObserver(measure);\n ro.observe(containerOf());\n return () => ro.disconnect();\n }, [itemCount, fixed_position]);\n\n const step = (now: number) => {\n const dt = Math.min((now - (lastTimeRef.current || now)) / 1000, MAX_FRAME_SECONDS);\n lastTimeRef.current = now;\n\n const targets = targetsRef.current;\n const values = valuesRef.current;\n const velocities = velocitiesRef.current;\n let moving = false;\n\n for (let i = 0; i < values.length; i += 1) {\n const target = targets[i] ?? restSizeRef.current;\n const acceleration =\n (SPRING_STIFFNESS * (target - values[i]) - SPRING_DAMPING * velocities[i]) / SPRING_MASS;\n velocities[i] += acceleration * dt;\n values[i] += velocities[i] * dt;\n\n if (Math.abs(target - values[i]) > SETTLE_EPSILON || Math.abs(velocities[i]) > SETTLE_EPSILON) {\n moving = true;\n } else {\n values[i] = target;\n velocities[i] = 0;\n }\n\n itemRefs.current[i]?.style.setProperty('--dock-size', `${values[i]}px`);\n }\n\n if (moving) {\n frameRef.current = requestAnimationFrame(step);\n } else {\n frameRef.current = null;\n lastTimeRef.current = 0;\n }\n };\n\n const startLoop = () => {\n if (frameRef.current == null) {\n lastTimeRef.current = 0;\n frameRef.current = requestAnimationFrame(step);\n }\n };\n\n const syncArrayLengths = () => {\n const { current: values } = valuesRef;\n while (values.length < itemCount) {\n values.push(restSizeRef.current);\n velocitiesRef.current.push(0);\n targetsRef.current.push(restSizeRef.current);\n }\n values.length = itemCount;\n velocitiesRef.current.length = itemCount;\n targetsRef.current.length = itemCount;\n };\n\n useEffect(() => () => {\n if (frameRef.current != null) cancelAnimationFrame(frameRef.current);\n }, []);\n\n // Toggling magnification off in the CMS while an icon happens to be enlarged\n // would otherwise leave it stuck at that size — ease everything back to rest.\n useEffect(() => {\n if (animate_magnify) return;\n syncArrayLengths();\n targetsRef.current.fill(restSizeRef.current);\n startLoop();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [animate_magnify]);\n\n // A resize changes what \"rest\" means, and the sizes already written to the DOM are\n // in the old scale — snap (don't animate) everything onto the new one.\n useEffect(() => {\n syncArrayLengths();\n targetsRef.current.fill(iconRest);\n valuesRef.current.fill(iconRest);\n velocitiesRef.current.fill(0);\n itemRefs.current.forEach((el) => el?.style.setProperty('--dock-size', `${iconRest}px`));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [iconRest, itemCount]);\n\n // Each icon's live rect is measured rather than derived from its index, because\n // magnifying one icon reflows every icon after it — an index-based resting\n // position would drift out from under the cursor as soon as anything grew.\n const handleMouseMove = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!animate_magnify || prefersReducedMotion()) return;\n const { clientX } = e;\n syncArrayLengths();\n\n for (let i = 0; i < itemCount; i += 1) {\n const el = itemRefs.current[i];\n if (!el) continue;\n const rect = el.getBoundingClientRect();\n const distance = Math.abs(clientX - (rect.left + rect.width / 2));\n const pull = Math.max(0, 1 - distance / magnifyRadius);\n targetsRef.current[i] = iconRest + (iconMax - iconRest) * pull;\n }\n startLoop();\n };\n\n const handleMouseLeave = () => {\n syncArrayLengths();\n targetsRef.current.fill(iconRest);\n setHoveredIndex(null);\n startLoop();\n };\n\n if (visibleItems.length === 0) return null;\n\n return (\n <div\n ref={wrapperRef}\n className={`w-fit ${\n fixed_position\n ? `fixed bottom-4 z-40 sm:bottom-6 ${POSITION_CLASSES[position] ?? POSITION_CLASSES.center}`\n : ALIGN_CLASSES[position] ?? ALIGN_CLASSES.center\n } ${className}`.trim()}\n >\n <div\n onMouseMove={handleMouseMove}\n onMouseLeave={handleMouseLeave}\n className=\"flex items-end rounded-2xl shadow-xl ring-1 ring-black/5\"\n style={{\n height: DOCK_HEIGHT * fit,\n gap: ICON_GAP * fit,\n backgroundColor: hexToRgba(resolvedBgHex, 0.96),\n paddingLeft: DOCK_PADDING_X * fit,\n paddingRight: DOCK_PADDING_X * fit,\n paddingBottom: DOCK_PADDING_BOTTOM * fit,\n }}\n >\n {visibleItems.map((item, index) => {\n // Never written from React — the rAF loop owns `--dock-size`, so a\n // re-render (e.g. the tooltip's hover state) can't reset it mid-flight.\n // The glyph stays exactly half its chip, at rest and fully magnified.\n const chipSize = `var(--dock-size, ${iconRest}px)`;\n const glyphSize = `calc(${chipSize} / 2)`;\n\n const uploadedIconSrc = resolveIconImage(item.icon_image);\n const PresetIcon = !uploadedIconSrc && item.icon ? DOCK_ICONS[item.icon as string] : undefined;\n const isActive = hoveredIndex === index;\n const title = item.link?.title || '';\n\n return (\n <a\n key={index}\n ref={(el) => {\n itemRefs.current[index] = el;\n }}\n href={item.link!.href}\n aria-label={title || 'Link'}\n onMouseEnter={() => setHoveredIndex(index)}\n onMouseLeave={() => setHoveredIndex(null)}\n className=\"relative flex shrink-0 items-center justify-center rounded-full\"\n style={{\n width: chipSize,\n height: chipSize,\n backgroundColor: resolvedChipHex,\n color: resolvedIconColor,\n }}\n >\n {title && (\n <span\n className=\"pointer-events-none absolute bottom-full left-1/2 mb-2 whitespace-nowrap rounded-md bg-neutral-950 px-2 py-1 text-xs font-medium text-white shadow-md ring-1 ring-white/10 transition-all duration-150\"\n style={{\n opacity: isActive ? 1 : 0,\n transform: `translateX(-50%) translateY(${isActive ? 0 : 4}px)`,\n }}\n >\n {title}\n </span>\n )}\n {uploadedIconSrc ? (\n // eslint-disable-next-line @next/next/no-img-element\n <img\n src={uploadedIconSrc}\n alt={title}\n className=\"rounded-full object-cover\"\n style={{ width: glyphSize, height: glyphSize }}\n />\n ) : PresetIcon ? (\n <PresetIcon style={{ width: glyphSize, height: glyphSize }} />\n ) : (\n <span className=\"font-bold\" style={{ fontSize: `calc(${chipSize} * 0.3)` }}>\n {(title || '?').trim().charAt(0).toUpperCase()}\n </span>\n )}\n </a>\n );\n })}\n </div>\n </div>\n );\n}\n\nexport default FloatingDock;\n","import React from 'react';\nimport { FaFacebook, FaInstagram, FaTwitter, FaGithub, FaYoutube } from 'react-icons/fa';\nimport type { IconType } from 'react-icons';\n\nconst socialIconMap: Record<string, IconType> = {\n facebook: FaFacebook,\n instagram: FaInstagram,\n twitter: FaTwitter,\n github: FaGithub,\n youtube: FaYoutube,\n};\n\nexport interface FooterLink {\n label?: string;\n url?: string;\n}\n\nexport interface FooterSocialLink {\n platform: string;\n url?: string;\n icon?: string;\n}\n\nexport interface FooterSimpleProps {\n className?: string;\n links?: FooterLink[];\n social_links?: FooterSocialLink[];\n copyright_text?: string;\n}\n\nexport function FooterSimple({\n className,\n links = [\n { label: 'About', url: '/about' },\n { label: 'Blog', url: '/blog' },\n { label: 'Jobs', url: '/jobs' },\n { label: 'Accessibility', url: '/accessibility' },\n { label: 'Partners', url: 'partners' },\n ],\n social_links = [\n { platform: 'facebook', url: '/facebook' },\n { platform: 'instagram', url: '/instagram' },\n { platform: 'twitter', url: '/twitter' },\n { platform: 'youtube', url: '/youtube' },\n ],\n copyright_text = '© 2024 Your Company, Inc. All rights reserved.',\n}: FooterSimpleProps) {\n return (\n <footer className={`bg-slate-900 text-white py-8 sm:py-10 md:py-12 ${className ?? ''}`.trim()}>\n <div className=\"component-container mx-auto px-4 sm:px-6\">\n <div className=\"flex flex-col items-center space-y-6 sm:space-y-8\">\n\n <nav className=\"flex flex-wrap justify-center gap-x-4 gap-y-3 sm:gap-x-6 md:gap-x-8\">\n {links?.map((link, index) => (\n <a\n key={index}\n href={link?.url}\n className=\"text-gray-300 hover:text-white transition-colors text-sm sm:text-base flex items-center gap-1 group\"\n >\n {link?.label}\n </a>\n ))}\n </nav>\n\n <div className=\"flex flex-wrap justify-center gap-3 sm:gap-4 md:gap-6\">\n {social_links?.map((social, index) => {\n const IconComponent = socialIconMap[social?.platform.toLowerCase()];\n return (\n <a\n key={index}\n href={social?.url}\n className=\"text-gray-400 hover:text-white transition-colors shrink-0\"\n aria-label={social?.platform}\n >\n {IconComponent ? (\n <IconComponent className=\"w-5 h-5 sm:w-6 sm:h-6 md:w-7 md:h-7\" />\n ) : (\n <span className=\"text-xl sm:text-2xl\">{social?.icon || social?.platform}</span>\n )}\n </a>\n );\n })}\n </div>\n\n <div className=\"text-center text-gray-400 text-xs sm:text-sm px-4\">\n <p>{copyright_text}</p>\n </div>\n </div>\n </div>\n </footer>\n );\n}\n\nexport default FooterSimple;\n","import React from 'react';\nimport { FaFacebook, FaInstagram, FaTwitter, FaGithub, FaYoutube, FaLinkedin } from 'react-icons/fa';\nimport { FaXTwitter } from 'react-icons/fa6';\nimport type { IconType } from 'react-icons';\n\nconst socialIconMap: Record<string, IconType> = {\n facebook: FaFacebook,\n instagram: FaInstagram,\n twitter: FaTwitter,\n x: FaXTwitter,\n github: FaGithub,\n youtube: FaYoutube,\n linkedin: FaLinkedin,\n};\n\nconst alignmentClasses: Record<string, string> = {\n left: 'justify-start text-left',\n center: 'justify-center text-center',\n right: 'justify-end text-right',\n};\n\nexport interface FooterColumnLink {\n label: string;\n url?: string;\n}\n\nexport interface FooterColumn {\n title: string;\n links: FooterColumnLink[];\n}\n\nexport interface FooterMultiColumnSocialLink {\n name: string;\n url?: string;\n}\n\nexport interface FooterMultiColumnProps {\n logo?: string | null;\n columns?: FooterColumn[];\n social_links?: FooterMultiColumnSocialLink[];\n copyright_text?: string;\n bottom_section_alignment?: 'left' | 'center' | 'right' | string;\n className?: string;\n}\n\nconst defaultColumns: FooterColumn[] = [\n {\n title: 'Solutions',\n links: [\n { label: 'Marketing', url: '#' },\n { label: 'Analytics', url: '#' },\n { label: 'Automation', url: '#' },\n { label: 'Commerce', url: '#' },\n { label: 'Insights', url: '#' },\n ],\n },\n {\n title: 'Support',\n links: [\n { label: 'Submit ticket', url: '#' },\n { label: 'Documentation', url: '#' },\n { label: 'Guides', url: '#' },\n ],\n },\n {\n title: 'Company',\n links: [\n { label: 'About', url: '#' },\n { label: 'Blog', url: '#' },\n { label: 'Jobs', url: '#' },\n { label: 'Press', url: '#' },\n ],\n },\n {\n title: 'Legal',\n links: [\n { label: 'Terms of service', url: '#' },\n { label: 'Privacy policy', url: '#' },\n { label: 'License', url: '#' },\n ],\n },\n];\n\nconst defaultSocialLinks: FooterMultiColumnSocialLink[] = [\n { name: 'Facebook', url: '#' },\n { name: 'Instagram', url: '#' },\n { name: 'X', url: '#' },\n { name: 'GitHub', url: '#' },\n { name: 'YouTube', url: '#' },\n];\n\nexport function FooterMultiColumn({\n logo = null,\n columns = defaultColumns,\n social_links = defaultSocialLinks,\n copyright_text = '© 2024 Your Company, Inc. All rights reserved.',\n bottom_section_alignment = 'left',\n className,\n}: FooterMultiColumnProps) {\n return (\n <footer className={`bg-[#0f172a] text-white ${className ?? ''}`.trim()}>\n <div className=\"component-container mx-auto px-6 py-12 lg:py-16\">\n <div className=\"grid grid-cols-1 lg:grid-cols-6 gap-8 lg:gap-12\">\n <div className=\"lg:col-span-2\">\n <div className=\"mb-6\">\n {logo ? (\n <img src={logo} alt=\"Logo\" className=\"h-10 w-auto\" />\n ) : ''}\n </div>\n </div>\n\n {columns && columns.map((column, colIndex) => (\n <div key={colIndex}>\n <h3 className=\"text-sm font-semibold text-white mb-4\">{column.title}</h3>\n <ul className=\"space-y-3\">\n {column.links && column.links.map((link, linkIndex) => (\n <li key={linkIndex}>\n <a\n href={link.url || '#'}\n className=\"text-sm text-gray-400 hover:text-white transition-colors duration-200\"\n >\n {link.label}\n </a>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n\n <div className=\"mt-12 pt-8 border-t border-gray-800\">\n {social_links && social_links.length > 0 && (\n <div className={`flex space-x-5 mb-6 ${alignmentClasses[bottom_section_alignment] || alignmentClasses.left}`}>\n {social_links.map((social, index) => {\n const IconComponent = socialIconMap[social?.name?.toLowerCase()];\n return (\n <a\n key={index}\n href={social.url || '#'}\n className=\"text-gray-400 hover:text-white transition-colors duration-200\"\n aria-label={social.name}\n >\n {IconComponent ? (\n <IconComponent className=\"w-5 h-5\" />\n ) : (\n <span className=\"text-xl\">{social?.name}</span>\n )}\n </a>\n );\n })}\n </div>\n )}\n\n <p className={`text-sm text-gray-400 ${alignmentClasses[bottom_section_alignment] || alignmentClasses.left}`}>\n {copyright_text}\n </p>\n </div>\n </div>\n </footer>\n );\n}\n\nexport default FooterMultiColumn;\n","import React from 'react';\nimport { hexToRgba } from '../../utils';\n\nexport interface CtaItem {\n title?: string;\n url?: string;\n background_color?: string;\n text_color?: string;\n open_in_new_tab?: boolean;\n}\n\nexport interface ColorValue {\n hex?: string;\n}\n\nexport interface TextCTAProps {\n className?: string;\n cta?: CtaItem[];\n description?: string;\n eyebrow_text?: string;\n heading?: string;\n subheading?: string;\n background_color?: ColorValue;\n text_color?: ColorValue;\n alignment?: 'Left' | 'Center' | 'Right' | string;\n layout?: 'Column' | 'Row' | string;\n}\n\nexport function TextCTA({\n className,\n cta,\n description = 'No contracts. No lock-in. Start for free and scale as you grow.',\n eyebrow_text: eyebrowText = 'Get started',\n heading = 'Ready to Get Started?',\n subheading = 'Join thousands of teams already building with Stackables.',\n background_color: backgroundColor,\n text_color: textColor = { hex: '#212121' },\n alignment,\n layout,\n}: TextCTAProps) {\n const getLayout = (): string => {\n switch (layout) {\n case 'Column': return 'flex-col'\n case 'Row': return 'items-center justify-between'\n default: return 'flex-col'\n }\n }\n\n const getAlignment = (): string => {\n switch (alignment) {\n case 'Left': return 'text-left'\n case 'Center': return 'items-center text-center'\n case 'Right':\n default: return 'items-end text-right'\n }\n }\n\n return (\n <section className={`relative ${className ?? ''}`.trim()}>\n <div\n className={`component-container relative z-[1] mx-auto px-6 py-24 flex ${getLayout()} ${getAlignment()}`}\n style={{ backgroundColor: backgroundColor?.hex }}\n >\n <div>\n {eyebrowText && (\n <p className=\"text-sm font-bold\" style={{ color: hexToRgba(textColor?.hex ?? '', 0.5) }}>\n {eyebrowText}\n </p>\n )}\n {heading && (\n <h2 className={`text-4xl font-bold ${eyebrowText ? 'mt-2' : ''}`} style={{ color: textColor?.hex }}>\n {heading}\n </h2>\n )}\n {subheading && (\n <p className={`text-xl max-w-2xl ${subheading ? 'mt-4' : ''}`} style={{ color: hexToRgba(textColor?.hex ?? '', 0.5) }}>\n {subheading}\n </p>\n )}\n {description && (\n <p className={`text-base ${description ? 'mt-4' : ''}`} style={{ color: textColor?.hex }}>\n {description}\n </p>\n )}\n </div>\n\n {Array.isArray(cta) && cta.length > 0 && (\n <div className=\"flex gap-6 mt-6\">\n {cta.map((item, index) => {\n const hasFill = Boolean(item?.background_color && String(item.background_color).trim())\n return (\n <a\n key={String(index)}\n href={item?.url ?? '#'}\n target={item?.open_in_new_tab ? '_blank' : '_self'}\n rel={item?.open_in_new_tab ? 'noopener noreferrer' : undefined}\n className={\n hasFill\n ? 'inline-flex items-center justify-center px-4 py-3 rounded-md font-semibold text-sm no-underline bg-[color:var(--cta-bg)] text-[color:var(--cta-fg)] transition-[background-color] duration-150 ease-out hover:brightness-95'\n : 'group inline-flex items-center gap-1 py-3 rounded-md font-semibold text-sm no-underline transition-colors duration-200 ease-out'\n }\n style={\n hasFill\n ? { '--cta-bg': item.background_color, '--cta-fg': item?.text_color || '#ffffff' } as React.CSSProperties\n : { color: item?.text_color }\n }\n >\n {item?.title}\n {!hasFill && (\n <span aria-hidden=\"true\" className=\"inline-block transition-transform duration-200 ease-out will-change-transform group-hover:translate-x-1\">\n &rarr;\n </span>\n )}\n </a>\n )\n })}\n </div>\n )}\n </div>\n </section>\n )\n}\n\nexport default TextCTA\n","import React from 'react';\nimport type { CtaItem } from './TextCTA';\n\nexport interface JustifiedTextCTAProps {\n className?: string;\n cta?: CtaItem[];\n description?: string;\n heading?: string;\n text_color?: string;\n}\n\nexport function JustifiedTextCTA({\n className,\n cta,\n description,\n heading,\n text_color: textColor,\n}: JustifiedTextCTAProps) {\n return (\n <section className={`relative ${className ?? ''}`.trim()}>\n <div className=\"component-container relative z-[1] mx-auto px-6 py-24 flex items-center justify-between\">\n <div>\n {heading && (\n <h2 className=\"text-4xl font-bold\" style={{ color: textColor }}>\n {heading}\n </h2>\n )}\n {description && (\n <p className={`text-base ${description ? 'mt-4' : ''}`} style={{ color: textColor }}>\n {description}\n </p>\n )}\n </div>\n\n {Array.isArray(cta) && cta.length > 0 && (\n <div className=\"flex gap-6\">\n {cta.map((item, index) => {\n const hasFill = Boolean(item?.background_color && String(item.background_color).trim())\n return (\n <a\n key={String(index)}\n href={item?.url ?? '#'}\n target={item?.open_in_new_tab ? '_blank' : '_self'}\n rel={item?.open_in_new_tab ? 'noopener noreferrer' : undefined}\n className={\n hasFill\n ? 'inline-flex items-center justify-center px-4 py-3 rounded-md font-semibold text-sm no-underline bg-[color:var(--cta-bg)] text-[color:var(--cta-fg)] transition-[background-color] duration-150 ease-out hover:brightness-95'\n : 'group inline-flex items-center gap-1 py-3 rounded-md font-semibold text-sm no-underline transition-colors duration-200 ease-out'\n }\n style={\n hasFill\n ? { '--cta-bg': item.background_color, '--cta-fg': item?.text_color || '#ffffff' } as React.CSSProperties\n : { color: item?.text_color }\n }\n >\n {item?.title}\n {!hasFill && (\n <span aria-hidden=\"true\" className=\"inline-block transition-transform duration-200 ease-out will-change-transform group-hover:translate-x-1\">\n &rarr;\n </span>\n )}\n </a>\n )\n })}\n </div>\n )}\n </div>\n </section>\n )\n}\n\nexport default JustifiedTextCTA\n","import React from 'react';\nimport type { StackableColorValue } from '../../types';\nimport { resolveStackableColor, hexToRgba } from '../../utils';\n\nexport interface PrimaryButtonProps {\n title?: string;\n url?: string;\n open_in_new_tab?: boolean;\n disable_?: boolean;\n /**\n * `Rounded` is a filled pill, `Box` an outlined rectangle, `Link` plain text.\n * All three take their colour from the same two fields, so a brand only has\n * to be set once.\n */\n variant?: 'Rounded' | 'Box' | 'Link' | string;\n enable_icon_?: boolean;\n icon_alignment?: 'left' | 'right' | string;\n /**\n * The brand colour: the fill on `Rounded`, the border and text on `Box`, the\n * text on `Link`. Defaults to `DEFAULT_BRAND` so the button is never unstyled.\n */\n background_color?: StackableColorValue;\n /** Label colour on `Rounded`. Ignored by `Box` and `Link`, which use the brand. */\n text_color?: StackableColorValue;\n className?: string;\n /**\n * @deprecated Accepted and ignored. There is one button size now; this only\n * remains so existing call sites keep compiling. It is not in the content\n * model, so no editor can reach it.\n */\n size?: string;\n}\n\n/**\n * Colour defaults live here rather than coming from a light/dark theme prop.\n * Branding differs per customer, so the colour fields are the only control —\n * but they always resolve to something, so a button with nothing filled in\n * still looks deliberate.\n */\nconst DEFAULT_BRAND = '#2563eb';\nconst DEFAULT_LABEL = '#ffffff';\n\n/**\n * One fixed size. A demo-site button does not need three, and a single scale\n * keeps buttons consistent wherever they are dropped in.\n */\nconst PADDING = 'px-6 py-3 text-base gap-2.5';\nconst BADGE = 'size-9';\nconst BADGE_CHEVRON = 'size-3.5';\n\nfunction ChevronIcon({ className = '' }: { className?: string }) {\n return (\n <svg viewBox=\"0 0 20 20\" fill=\"none\" aria-hidden className={className}>\n <path\n d=\"M7.5 5l5 5-5 5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nexport function PrimaryButton({\n title = 'Get started',\n url = '#',\n open_in_new_tab = false,\n disable_ = false,\n variant = 'Rounded',\n enable_icon_ = false,\n icon_alignment = 'right',\n background_color,\n text_color,\n className = '',\n}: PrimaryButtonProps) {\n const brand = resolveStackableColor(background_color) || DEFAULT_BRAND;\n const label = resolveStackableColor(text_color) || DEFAULT_LABEL;\n\n\n const isBox = variant === 'Box';\n const isLink = variant === 'Link';\n const showIcon = Boolean(enable_icon_);\n const iconOnRight = icon_alignment !== 'left';\n\n // One hover behaviour for all three variants: the whole control lightens\n // slightly and the icon nudges along. Deliberately the only animation —\n // these are demo-site buttons, not a motion showcase.\n const hover = disable_ ? '' : 'hover:opacity-85';\n\n const shape = isLink\n ? 'underline underline-offset-4'\n : isBox\n ? 'rounded-lg border'\n : 'rounded-full';\n\n const paint: React.CSSProperties = isLink\n ? { color: brand }\n : isBox\n ? { color: brand, borderColor: brand, backgroundColor: 'transparent' }\n : { color: label, backgroundColor: brand };\n\n // The badge is the only icon treatment now — a bare chevron was the other\n // option and it read as an afterthought next to the filled pill. On `Link`\n // there is no surface to sit on, so it stays a plain chevron there.\n const icon = showIcon ? (\n isLink ? (\n <ChevronIcon\n className={`size-4 shrink-0 transition-transform duration-200 ${\n disable_ ? '' : iconOnRight ? 'group-hover:translate-x-0.5' : 'group-hover:-translate-x-0.5'\n }`}\n />\n ) : (\n <span\n aria-hidden\n className={`grid ${BADGE} shrink-0 place-items-center rounded-full transition-transform duration-200 ${\n disable_ ? '' : iconOnRight ? 'group-hover:translate-x-0.5' : 'group-hover:-translate-x-0.5'\n }`}\n // On a filled button the badge inverts; on an outlined one it picks up\n // the brand at low opacity so it reads as part of the same object.\n style={isBox ? { backgroundColor: hexToRgba(brand, 0.12), color: brand } : { backgroundColor: label, color: brand }}\n >\n <ChevronIcon className={BADGE_CHEVRON} />\n </span>\n )\n ) : null;\n\n return (\n <a\n href={disable_ ? undefined : url}\n target={open_in_new_tab && !disable_ ? '_blank' : undefined}\n rel={open_in_new_tab && !disable_ ? 'noopener noreferrer' : undefined}\n aria-disabled={disable_ || undefined}\n className={`group inline-flex items-center justify-center font-semibold transition-opacity duration-200 ${\n isLink ? 'gap-2' : PADDING\n } ${shape} ${hover} ${\n disable_ ? 'cursor-not-allowed opacity-50' : 'cursor-pointer'\n } ${className}`.trim()}\n style={paint}\n >\n {showIcon && !iconOnRight && icon}\n {title}\n {showIcon && iconOnRight && icon}\n </a>\n );\n}\n\nexport default PrimaryButton;\n","import React, { useEffect, useState } from 'react';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface ToggleSwitchProps {\n on_label?: string;\n off_label?: string;\n /** Initial state; editors can preview either side from the controls panel. */\n default_on?: boolean;\n /**\n * `Knob` slides a pill-shaped handle between the two labels.\n * `Label` keeps a plain pill that just shows the current state.\n */\n variant?: 'Knob' | 'Label' | string;\n /** Accessible name, since the visible labels are the two states. */\n aria_label?: string;\n /** Track fill. Defaults to `DEFAULT_TRACK` so the switch is never unstyled. */\n background_color?: StackableColorValue;\n /** Colour of the label sitting on the track. */\n text_color?: StackableColorValue;\n /** Knob fill. The knob's own label is derived from this, so it stays legible. */\n accent_color?: StackableColorValue;\n className?: string;\n}\n\n/**\n * Colour defaults live here rather than coming from a light/dark theme prop.\n * Branding differs per customer, so the colour fields are the only control —\n * but they always resolve to something.\n */\nconst DEFAULT_TRACK = '#111827';\nconst DEFAULT_TRACK_LABEL = '#9ca3af';\nconst DEFAULT_KNOB = '#ffffff';\n\n/**\n * One fixed size, matching the button. Three scales was a control nobody\n * setting up a demo site needed to think about.\n */\nconst TRACK = 'h-14 min-w-[13rem]';\nconst LABEL = 'text-base';\nconst PAD = 'p-1.5';\n/** Inset of the knob within the track — half of PAD on each side. */\nconst KNOB_INSET = '0.375rem';\n\n/**\n * Picks black or white for text sitting on `hex`, by relative luminance. The\n * knob is editor-coloured, so its label can't be a fixed value — a white label\n * on a white knob would simply vanish. Deriving it keeps one field instead of\n * asking for a fourth colour.\n */\nfunction readableOn(hex: string): string {\n const h = (hex || '').trim().replace('#', '');\n const full = h.length === 3 ? h.split('').map((c) => c + c).join('') : h;\n if (full.length !== 6) return '#111827';\n const n = parseInt(full, 16);\n const [r, g, b] = [(n >> 16) & 255, (n >> 8) & 255, n & 255].map((v) => {\n const s = v / 255;\n return s <= 0.03928 ? s / 12.92 : Math.pow((s + 0.055) / 1.055, 2.4);\n });\n const luminance = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n return luminance > 0.4 ? '#111827' : '#ffffff';\n}\n\nexport function ToggleSwitch({\n on_label = 'ON',\n off_label = 'OFF',\n default_on = true,\n variant = 'Knob',\n aria_label = 'Toggle',\n background_color,\n text_color,\n accent_color,\n className = '',\n}: ToggleSwitchProps) {\n const [on, setOn] = useState(Boolean(default_on));\n\n // Editors flip the prop in the controls panel and expect the switch to follow.\n useEffect(() => {\n setOn(Boolean(default_on));\n }, [default_on]);\n\n const track = resolveStackableColor(background_color) || DEFAULT_TRACK;\n const trackLabel = resolveStackableColor(text_color) || DEFAULT_TRACK_LABEL;\n const knob = resolveStackableColor(accent_color) || DEFAULT_KNOB;\n const knobLabel = readableOn(knob);\n\n const isKnob = variant !== 'Label';\n\n return (\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={on}\n aria-label={aria_label}\n onClick={() => setOn((v) => !v)}\n className={`relative inline-flex ${TRACK} ${PAD} cursor-pointer items-center rounded-full transition-colors duration-200 ${className}`.trim()}\n style={{ backgroundColor: track }}\n >\n {isKnob ? (\n <>\n {/* Both labels sit in the track; the knob slides over one of them. */}\n <span className=\"relative z-10 grid w-full grid-cols-2 items-center\">\n <span\n className={`text-center font-semibold ${LABEL}`}\n style={{ color: on ? knobLabel : trackLabel }}\n >\n {on_label}\n </span>\n <span\n className={`text-center font-semibold ${LABEL}`}\n style={{ color: on ? trackLabel : knobLabel }}\n >\n {off_label}\n </span>\n </span>\n\n <span\n aria-hidden\n className=\"absolute top-1/2 w-1/2 rounded-full shadow-sm\"\n style={{\n backgroundColor: knob,\n height: `calc(100% - ${KNOB_INSET} * 2)`,\n left: KNOB_INSET,\n width: `calc(50% - ${KNOB_INSET})`,\n transform: `translateY(-50%) translateX(${on ? '0%' : '100%'})`,\n transition: 'transform 320ms cubic-bezier(0.34, 1.4, 0.64, 1)',\n }}\n />\n </>\n ) : (\n <span\n className={`w-full px-4 text-center font-semibold ${LABEL}`}\n style={{ color: trackLabel }}\n >\n {on ? on_label : off_label}\n </span>\n )}\n </button>\n );\n}\n\nexport default ToggleSwitch;\n","import React, { useState, useCallback, useMemo, useEffect } from 'react';\nimport { PrimaryButton } from '../Button';\nimport type { StackableColorValue } from '../../types';\nimport { resolveStackableColor } from '../../utils';\n\ntype ImageSource = string | { url?: string; asset?: { url?: string }; file?: { url?: string } } | null | undefined;\n\nfunction resolveImageUrl(item: ImageSource): string {\n if (item == null || item === '') return ''\n if (typeof item === 'string') return item.trim()\n if (typeof item === 'object') {\n const u = item.url ?? item.asset?.url ?? item.file?.url\n if (u != null && String(u).trim()) return String(u).trim()\n }\n return ''\n}\n\nfunction normalizeProductImageUrls(\n productImages: ImageSource | ImageSource[],\n productImage: ImageSource,\n): string[] {\n const out: string[] = []\n if (Array.isArray(productImages)) {\n for (const item of productImages) {\n const u = resolveImageUrl(item)\n if (u) out.push(u)\n }\n } else if (productImages != null) {\n const u = resolveImageUrl(productImages)\n if (u) out.push(u)\n }\n if (out.length === 0 && productImage != null) {\n const u = resolveImageUrl(productImage)\n if (u) out.push(u)\n }\n return out\n}\n\nfunction AccordionToggleIcon({ open }: { open: boolean }) {\n return (\n <span className=\"inline-flex h-5 w-5 shrink-0 items-center justify-center text-gray-500\" aria-hidden>\n {open ? (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" className=\"h-5 w-5\">\n <path fillRule=\"evenodd\" d=\"M4 10a.75.75 0 01.75-.75h10.5a.75.75 0 010 1.5H4.75A.75.75 0 014 10z\" clipRule=\"evenodd\" />\n </svg>\n ) : (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" className=\"h-5 w-5\">\n <path d=\"M10.75 4.75a.75.75 0 00-1.5 0v4.5h-4.5a.75.75 0 000 1.5h4.5v4.5a.75.75 0 001.5 0v-4.5h4.5a.75.75 0 000-1.5h-4.5v-4.5z\" />\n </svg>\n )}\n </span>\n )\n}\n\ninterface StarRatingProps {\n rating?: number;\n count?: number | null;\n starColor?: StackableColorValue;\n className?: string;\n}\n\nfunction StarRating({ rating = 0, count, starColor, className }: StarRatingProps) {\n const n = Number(rating)\n const clamped = Math.min(5, Math.max(0, Number.isFinite(n) ? n : 0))\n const fillColor = resolveStackableColor(starColor) || '#f59e0b'\n const emptyColor = '#d1d5db'\n\n return (\n <div className={`flex items-center gap-1 ${className ?? ''}`} aria-label={`${clamped} out of 5 stars`}>\n {Array.from({ length: 5 }, (_, i) => {\n const fill = i < Math.floor(clamped) ? 'full' : i < clamped ? 'half' : 'empty'\n const color = fill === 'empty' ? emptyColor : fillColor\n return (\n <span key={i} className=\"text-[16px]\" style={{ color, opacity: fill === 'half' ? 0.65 : 1 }} aria-hidden=\"true\">\n {fill === 'half' ? '⯨' : '★'}\n </span>\n )\n })}\n {count !== undefined && count !== null && (\n <span className=\"text-[12px] text-[#6b7280] ml-1\">({count?.toLocaleString()})</span>\n )}\n </div>\n )\n}\n\nexport interface ProductColorOption {\n label?: string;\n hex?: string;\n}\n\nexport interface AdditionalDetail {\n title?: string;\n list?: string[];\n _metadata?: { uid?: string };\n}\n\nexport interface ProductCtaButton {\n title?: string;\n url?: string;\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n open_in_new_tab?: boolean;\n}\n\nexport interface ProductDetailsProps {\n product_name?: string;\n price?: number | string;\n description?: string;\n rating?: number;\n review_count?: number;\n color?: ProductColorOption | ProductColorOption[];\n product_images?: ImageSource | ImageSource[];\n product_image?: ImageSource;\n additional_details?: AdditionalDetail[];\n cta?: ProductCtaButton;\n}\n\nexport function ProductDetails({\n product_name: productName,\n price,\n description,\n rating,\n review_count: reviewCount,\n color,\n product_images: productImages,\n product_image: productImage,\n additional_details: additionalDetails,\n cta,\n}: ProductDetailsProps) {\n const colorItems = Array.isArray(color) ? color : color != null ? [color] : []\n const [activeColorIndex, setActiveColorIndex] = useState(0)\n const [openIndex, setOpenIndex] = useState(0)\n\n const imageUrls = useMemo(\n () => normalizeProductImageUrls(productImages, productImage),\n [productImages, productImage],\n )\n const [activeImageIndex, setActiveImageIndex] = useState(0)\n\n useEffect(() => {\n setActiveImageIndex(i => Math.min(Math.max(0, i), Math.max(0, imageUrls.length - 1)))\n }, [imageUrls])\n\n const onGalleryKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (imageUrls.length < 2) return\n if (e.key === 'ArrowRight') { e.preventDefault(); setActiveImageIndex(i => (i + 1) % imageUrls.length) }\n else if (e.key === 'ArrowLeft') { e.preventDefault(); setActiveImageIndex(i => (i - 1 + imageUrls.length) % imageUrls.length) }\n else if (e.key === 'Home') { e.preventDefault(); setActiveImageIndex(0) }\n else if (e.key === 'End') { e.preventDefault(); setActiveImageIndex(imageUrls.length - 1) }\n },\n [imageUrls.length],\n )\n\n const toggleSection = useCallback((index: number) => {\n setOpenIndex(prev => (prev === index ? -1 : index))\n }, [])\n\n const mainAlt =\n productName && imageUrls.length > 1\n ? `${productName} — ${activeImageIndex + 1} of ${imageUrls.length}`\n : productName || 'Product'\n\n return (\n <section className=\"component-container mx-auto px-6 py-16\">\n <div className=\"flex flex-col lg:flex-row gap-8\">\n {imageUrls.length > 0 && (\n <div className=\"flex w-full lg:w-1/2 flex-col gap-6\">\n <div\n id={imageUrls.length > 1 ? 'product-image-panel' : undefined}\n role={imageUrls.length > 1 ? 'tabpanel' : undefined}\n aria-labelledby={imageUrls.length > 1 ? `product-image-tab-${activeImageIndex}` : undefined}\n className=\"product-image-large aspect-square w-[80%] mx-auto overflow-hidden rounded-xl bg-neutral-100 ring-1 ring-neutral-200/80\"\n >\n {/* eslint-disable-next-line @next/next/no-img-element */}\n <img src={imageUrls[activeImageIndex]} alt={mainAlt} className=\"h-full w-full object-cover\" />\n </div>\n\n {imageUrls.length > 1 && (\n <div\n role=\"tablist\"\n aria-label=\"Product photos\"\n className=\"product-image-gallery flex gap-6 justify-between overflow-x-auto pb-1 pt-0.5 [scrollbar-width:thin]\"\n onKeyDown={onGalleryKeyDown}\n >\n {imageUrls.map((url, i) => {\n const selected = i === activeImageIndex\n const tabId = `product-image-tab-${i}`\n return (\n <button\n key={`${url}-${i}`}\n type=\"button\"\n role=\"tab\"\n id={tabId}\n aria-selected={selected}\n aria-controls=\"product-image-panel\"\n tabIndex={selected ? 0 : -1}\n onClick={() => setActiveImageIndex(i)}\n className={`product-image-gallery-item relative h-24 w-32 shrink-0 overflow-hidden rounded-lg transition focus:outline-none focus:ring-2 focus:ring-blue-500 focus-visible:ring-offset-2 ${\n selected ? 'ring-neutral-900' : 'ring-transparent opacity-80 hover:opacity-100 hover:ring-neutral-300'\n }`}\n >\n {/* eslint-disable-next-line @next/next/no-img-element */}\n <img src={url} alt=\"\" className=\"h-full w-full object-cover\" draggable={false} />\n <span className=\"sr-only\">View image {i + 1} of {imageUrls.length}</span>\n </button>\n )\n })}\n </div>\n )}\n </div>\n )}\n\n <div className={`flex w-full min-w-0 flex-col gap-3 ${imageUrls.length > 0 ? 'lg:w-1/2' : 'lg:w-full'}`}>\n {productName && <h1 className=\"product-name text-2xl font-bold\">{productName}</h1>}\n {price != null && (\n <div className=\"product-price text-xl font-bold text-gray-700\">\n ${typeof price === 'number' ? price.toFixed(2) : price}\n </div>\n )}\n\n {((rating ?? 0) > 0 || (reviewCount ?? 0) > 0) && (\n <StarRating rating={rating} count={reviewCount} starColor={cta?.background_color} className=\"product-rating\" />\n )}\n\n {description && <p>{description}</p>}\n\n {colorItems.length > 0 && (\n <div className=\"product-color-options flex flex-col gap-2\">\n <p className=\"product-color-options-label text-sm text-gray-600\">Color:</p>\n <div className=\"flex flex-wrap gap-2\" role=\"listbox\" aria-label=\"Color options\">\n {colorItems.map((c, i) => {\n const hex = resolveStackableColor(c)\n const active = i === activeColorIndex\n return (\n <button\n key={i}\n type=\"button\"\n role=\"option\"\n aria-selected={active}\n className={`product-color-options-item h-8 w-8 shrink-0 rounded-full border-2 transition focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 ${active ? 'border-gray-500 ring-2 ring-gray-300 ring-offset-2' : 'border-gray-200 hover:border-gray-400'}`}\n style={{ backgroundColor: hex || '#e5e7eb' }}\n onClick={() => setActiveColorIndex(i)}\n aria-label={c?.label || hex || `Color ${i + 1}`}\n title={c?.label || hex}\n />\n )\n })}\n </div>\n </div>\n )}\n\n {cta?.url && (\n <PrimaryButton\n title={cta.title ?? 'Add to bag'}\n url={cta.url}\n background_color={cta.background_color}\n text_color={cta.text_color ?? 'white'}\n open_in_new_tab={cta.open_in_new_tab ?? false}\n size=\"lg\"\n />\n )}\n\n {Array.isArray(additionalDetails) && additionalDetails.length > 0 && (\n <div\n className=\"product-additional-details mt-2 divide-y divide-gray-200 rounded-lg border-b border-t border-gray-200\"\n role=\"region\"\n aria-label=\"Additional product information\"\n >\n {additionalDetails.map((detail, index) => {\n const open = openIndex === index\n const panelId = `additional-detail-panel-${index}`\n const headerId = `additional-detail-header-${index}`\n return (\n <div key={detail?._metadata?.uid ?? `${detail?.title ?? 'section'}-${index}`}>\n <button\n type=\"button\"\n id={headerId}\n className={`product-additional-details-header flex w-full items-center justify-between gap-3 py-6 text-left text-base font-semibold transition-colors duration-200 cursor-pointer ${open ? 'text-gray-900' : 'text-gray-600'}`}\n onClick={() => toggleSection(index)}\n aria-expanded={open}\n aria-controls={panelId}\n >\n <span>{detail?.title}</span>\n <AccordionToggleIcon open={open} />\n </button>\n <div\n id={panelId}\n role=\"region\"\n aria-labelledby={headerId}\n aria-hidden={!open}\n className={`product-additional-details-panel grid overflow-hidden transition-[grid-template-rows] duration-300 ease-in-out ${open ? '[grid-template-rows:1fr]' : '[grid-template-rows:0fr]'}`}\n >\n <div className=\"min-h-0 overflow-hidden\">\n {detail?.list && (\n <ul className=\"list-disc space-y-1 px-4 pb-4 pl-6 text-gray-700\">\n {detail.list.map((item, itemIndex) => (\n <li key={`${item}-${itemIndex}`} className=\"pl-2 mb-2 marker:text-gray-400\">{item}</li>\n ))}\n </ul>\n )}\n </div>\n </div>\n </div>\n )\n })}\n </div>\n )}\n </div>\n </div>\n </section>\n )\n}\n\nexport default ProductDetails\n","import React from 'react';\nimport Image from 'next/image';\n\nexport interface ArticleDetailsProps {\n article_title: string;\n eyebrow_text: string;\n subheading: string;\n summary: string;\n image: string;\n}\n\nexport function ArticleDetails({\n article_title: articleTitle,\n eyebrow_text: eyebrowText,\n subheading,\n summary,\n image,\n }: ArticleDetailsProps) {\n return (\n <div className={`p-4`}>\n {eyebrowText && <p className='text-sm font-bold text-gray-500'>{eyebrowText}</p>}\n\n {articleTitle && <h1 className=\"text-2xl font-bold mt-3\">{articleTitle}</h1>}\n\n {subheading && <p className=\"text-lg font-light mt-3\">{subheading}</p>}\n \n {image && <Image src={image} alt={articleTitle} width={800} height={600} className='mt-3' />}\n\n {summary && <p className='mt-4'>{summary}</p>}\n </div>\n );\n}\n\nexport default ArticleDetails;","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n","import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date>(date: DateType): DateType {\n * return constructFrom(\n * date, // Use constructor from the given date\n * date.getTime() // Use the date value to create a new date\n * );\n * }\n */\nexport function constructFrom(date, value) {\n if (typeof date === \"function\") return date(value);\n\n if (date && typeof date === \"object\" && constructFromSymbol in date)\n return date[constructFromSymbol](value);\n\n if (date instanceof Date) return new date.constructor(value);\n\n return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n // [TODO] Get rid of `toDate` or `constructFrom`?\n return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date, options?.in);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n","import { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfISOWeek} function options.\n */\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date, options) {\n return startOfWeek(date, { ...options, weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeekYear} function options.\n */\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const fourthOfJanuaryOfNextYear = constructFrom(_date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n const fourthOfJanuaryOfThisYear = constructFrom(_date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n","import { toDate } from \"../toDate.js\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n const normalize = constructFrom.bind(\n null,\n context || dates.find((date) => typeof date === \"object\"),\n );\n return dates.map(normalize);\n}\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\n */\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInDay } from \"./constants.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link differenceInCalendarDays} function options.\n */\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - The options object\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const laterStartOfDay = startOfDay(laterDate_);\n const earlierStartOfDay = startOfDay(earlierDate_);\n\n const laterTimestamp =\n +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);\n const earlierTimestamp =\n +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { getISOWeekYear } from \"./getISOWeekYear.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\n\n/**\n * The {@link startOfISOWeekYear} function options.\n */\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date, options) {\n const year = getISOWeekYear(date, options);\n const fourthOfJanuary = constructFrom(options?.in || date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { isDate } from \"./isDate.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertible into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n return !((!isDate(date) && typeof date !== \"number\") || isNaN(+toDate(date)));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfYear} function options.\n */\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date, options) {\n const date_ = toDate(date, options?.in);\n date_.setFullYear(date_.getFullYear(), 0, 1);\n date_.setHours(0, 0, 0, 0);\n return date_;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // [TODO] -- I challenge you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // [TODO] -- I challenge you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // [TODO] I challenge you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./en-US/_lib/formatDistance.js\";\nimport { formatLong } from \"./en-US/_lib/formatLong.js\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.js\";\nimport { localize } from \"./en-US/_lib/localize.js\";\nimport { match } from \"./en-US/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","import { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\nimport { startOfYear } from \"./startOfYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDayOfYear} function options.\n */\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date, options) {\n const _date = toDate(date, options?.in);\n const diff = differenceInCalendarDays(_date, startOfYear(_date));\n const dayOfYear = diff + 1;\n return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeek} function options.\n */\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const firstWeekOfNextYear = constructFrom(options?.in || date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n const firstWeekOfThisYear = constructFrom(options?.in || date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (+_date >= +startOfNextYear) {\n return year + 1;\n } else if (+_date >= +startOfThisYear) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { getWeekYear } from \"./getWeekYear.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const year = getWeekYear(date, options);\n const firstWeek = constructFrom(options?.in || date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = startOfWeek(firstWeek, options);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { startOfWeekYear } from \"./startOfWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\nexport function getWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n","export function addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.js\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n // Year\n y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n },\n\n // Month\n M(date, token) {\n const month = date.getMonth();\n return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n\n // Day of the month\n d(date, token) {\n return addLeadingZeros(date.getDate(), token.length);\n },\n\n // AM or PM\n a(date, token) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaa\":\n return dayPeriodEnumValue;\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n\n // Hour [1-12]\n h(date, token) {\n return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n },\n\n // Hour [0-23]\n H(date, token) {\n return addLeadingZeros(date.getHours(), token.length);\n },\n\n // Minute\n m(date, token) {\n return addLeadingZeros(date.getMinutes(), token.length);\n },\n\n // Second\n s(date, token) {\n return addLeadingZeros(date.getSeconds(), token.length);\n },\n\n // Fraction of second\n S(date, token) {\n const numberOfDigits = token.length;\n const milliseconds = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds * Math.pow(10, numberOfDigits - 3),\n );\n return addLeadingZeros(fractionalSeconds, token.length);\n },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.js\";\nimport { getISOWeek } from \"../../getISOWeek.js\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.js\";\nimport { getWeek } from \"../../getWeek.js\";\nimport { getWeekYear } from \"../../getWeekYear.js\";\n\nimport { addLeadingZeros } from \"../addLeadingZeros.js\";\nimport { lightFormatters } from \"./lightFormatters.js\";\n\nconst dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n // Era\n G: function (date, token, localize) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, { width: \"wide\" });\n }\n },\n\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, { unit: \"year\" });\n }\n\n return lightFormatters.y(date, token);\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n const signedWeekYear = getWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === \"Yo\") {\n return localize.ordinalNumber(weekYear, { unit: \"year\" });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n\n // ISO week-numbering year\n R: function (date, token) {\n const isoWeekYear = getISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n const year = date.getFullYear();\n return addLeadingZeros(year, token.length);\n },\n\n // Quarter\n Q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // Month\n M: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n case \"M\":\n case \"MM\":\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n const week = getWeek(date, options);\n\n if (token === \"wo\") {\n return localize.ordinalNumber(week, { unit: \"week\" });\n }\n\n return addLeadingZeros(week, token.length);\n },\n\n // ISO week of year\n I: function (date, token, localize) {\n const isoWeek = getISOWeek(date);\n\n if (token === \"Io\") {\n return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n\n // Day of the month\n d: function (date, token, localize) {\n if (token === \"do\") {\n return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n\n return lightFormatters.d(date, token);\n },\n\n // Day of year\n D: function (date, token, localize) {\n const dayOfYear = getDayOfYear(date);\n\n if (token === \"Do\") {\n return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n\n // Day of week\n E: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\",\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // ISO day of week\n i: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n const hours = date.getHours();\n const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"aaa\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n }\n\n switch (token) {\n case \"b\":\n case \"bb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"bbb\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === \"ho\") {\n let hours = date.getHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return lightFormatters.h(date, token);\n },\n\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === \"Ho\") {\n return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n\n return lightFormatters.H(date, token);\n },\n\n // Hour [0-11]\n K: function (date, token, localize) {\n const hours = date.getHours() % 12;\n\n if (token === \"Ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Hour [1-24]\n k: function (date, token, localize) {\n let hours = date.getHours();\n if (hours === 0) hours = 24;\n\n if (token === \"ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Minute\n m: function (date, token, localize) {\n if (token === \"mo\") {\n return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n\n return lightFormatters.m(date, token);\n },\n\n // Second\n s: function (date, token, localize) {\n if (token === \"so\") {\n return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n\n return lightFormatters.s(date, token);\n },\n\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n\n switch (token) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Seconds timestamp\n t: function (date, token, _localize) {\n const timestamp = Math.trunc(+date / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n\n // Milliseconds timestamp\n T: function (date, token, _localize) {\n return addLeadingZeros(+date, token.length);\n },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = Math.trunc(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? \"-\" : \"+\";\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n const minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n","const dateLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"P\":\n return formatLong.date({ width: \"short\" });\n case \"PP\":\n return formatLong.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong.date({ width: \"full\" });\n }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"p\":\n return formatLong.time({ width: \"short\" });\n case \"pp\":\n return formatLong.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong.time({ width: \"full\" });\n }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n let dateTimeFormat;\n\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n break;\n }\n\n return dateTimeFormat\n .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter,\n};\n","const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n const _message = message(token, format, input);\n console.warn(_message);\n if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n","import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { formatters } from \"./_lib/format/formatters.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { isValid } from \"./isValid.js\";\nimport { toDate } from \"./toDate.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const originalDate = toDate(date, options?.in);\n\n if (!isValid(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let parts = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp)\n .map((substring) => {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString(substring) };\n }\n\n if (formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n return { isToken: false, value: substring };\n });\n\n // invoke localize preprocessor (only for french locales at the moment)\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n return parts\n .map((part) => {\n if (!part.isToken) return part.value;\n\n const token = part.value;\n\n if (\n (!options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)) ||\n (!options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token))\n ) {\n warnOrThrowProtectedError(token, formatStr, String(date));\n }\n\n const formatter = formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n })\n .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n const matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n","import {\n millisecondsInHour,\n millisecondsInMinute,\n} from \"./constants.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link parseISO} function options.\n */\n\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n * @param options - An object with options\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport function parseISO(argument, options) {\n const invalidDate = () => constructFrom(options?.in, NaN);\n\n const additionalDigits = options?.additionalDigits ?? 2;\n const dateStrings = splitDateString(argument);\n\n let date;\n if (dateStrings.date) {\n const parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n\n if (!date || isNaN(+date)) return invalidDate();\n\n const timestamp = +date;\n let time = 0;\n let offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) return invalidDate();\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) return invalidDate();\n } else {\n const tmpDate = new Date(timestamp + time);\n const result = toDate(0, options?.in);\n result.setFullYear(\n tmpDate.getUTCFullYear(),\n tmpDate.getUTCMonth(),\n tmpDate.getUTCDate(),\n );\n result.setHours(\n tmpDate.getUTCHours(),\n tmpDate.getUTCMinutes(),\n tmpDate.getUTCSeconds(),\n tmpDate.getUTCMilliseconds(),\n );\n return result;\n }\n\n return toDate(timestamp + time + offset, options?.in);\n}\n\nconst patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/,\n};\n\nconst dateRegex =\n /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nconst timeRegex =\n /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nconst timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\n\nfunction splitDateString(dateString) {\n const dateStrings = {};\n const array = dateString.split(patterns.dateTimeDelimiter);\n let timeString;\n\n // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n if (array.length > 2) {\n return dateStrings;\n }\n\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(\n dateStrings.date.length,\n dateString.length,\n );\n }\n }\n\n if (timeString) {\n const token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], \"\");\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings;\n}\n\nfunction parseYear(dateString, additionalDigits) {\n const regex = new RegExp(\n \"^(?:(\\\\d{4}|[+-]\\\\d{\" +\n (4 + additionalDigits) +\n \"})|(\\\\d{2}|[+-]\\\\d{\" +\n (2 + additionalDigits) +\n \"})$)\",\n );\n\n const captures = dateString.match(regex);\n // Invalid ISO-formatted year\n if (!captures) return { year: NaN, restDateString: \"\" };\n\n const year = captures[1] ? parseInt(captures[1]) : null;\n const century = captures[2] ? parseInt(captures[2]) : null;\n\n // either year or century is null, not both\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length),\n };\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n\n const captures = dateString.match(dateRegex);\n // Invalid ISO-formatted string\n if (!captures) return new Date(NaN);\n\n const isWeekDate = !!captures[4];\n const dayOfYear = parseDateUnit(captures[1]);\n const month = parseDateUnit(captures[2]) - 1;\n const day = parseDateUnit(captures[3]);\n const week = parseDateUnit(captures[4]);\n const dayOfWeek = parseDateUnit(captures[5]) - 1;\n\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n const date = new Date(0);\n if (\n !validateDate(year, month, day) ||\n !validateDayOfYearDate(year, dayOfYear)\n ) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\n\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\n\nfunction parseTime(timeString) {\n const captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n const hours = parseTimeUnit(captures[1]);\n const minutes = parseTimeUnit(captures[2]);\n const seconds = parseTimeUnit(captures[3]);\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n\n return (\n hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000\n );\n}\n\nfunction parseTimeUnit(value) {\n return (value && parseFloat(value.replace(\",\", \".\"))) || 0;\n}\n\nfunction parseTimezone(timezoneString) {\n if (timezoneString === \"Z\") return 0;\n\n const captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n\n const sign = captures[1] === \"+\" ? -1 : 1;\n const hours = parseInt(captures[2]);\n const minutes = (captures[3] && parseInt(captures[3])) || 0;\n\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n const date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n const fourthOfJanuaryDay = date.getUTCDay() || 7;\n const diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nconst daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\n\nfunction validateDate(year, month, date) {\n return (\n month >= 0 &&\n month <= 11 &&\n date >= 1 &&\n date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28))\n );\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\n\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\n\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n\n return (\n seconds >= 0 &&\n seconds < 60 &&\n minutes >= 0 &&\n minutes < 60 &&\n hours >= 0 &&\n hours < 25\n );\n}\n\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}\n\n// Fallback for modularized imports:\nexport default parseISO;\n","import React, { useCallback, useState } from 'react';\nimport Image from 'next/image';\nimport {format, parseISO} from \"date-fns\";\n\n\nexport interface ArticleItem {\n uid?: string;\n category?: string;\n title?: string;\n article_title?: string;\n eyebrow_text?: string;\n summary?: string;\n image?: { url?: string; title?: string } | string;\n author_details?: {\n author_name?: string;\n author_image?: string;\n company_designation?: string;\n };\n}\n\nexport interface ArticleListingProps {\n article?: ArticleItem[];\n list_type?: 'Grid' | 'Carousel' | string;\n columns?: 1 | 2 | 3 | 4 | number;\n className?: string;\n}\n\nconst CAROUSEL_CARD_WIDTH: Record<number, string> = {\n 1: 'w-full flex-shrink-0',\n 2: 'w-1/2 flex-shrink-0',\n 3: 'w-1/3 flex-shrink-0 relative',\n 4: 'w-1/4 flex-shrink-0',\n 5: 'w-1/5 flex-shrink-0',\n 6: 'w-1/6 flex-shrink-0',\n};\n\nfunction carouselCardWidthClass(visibleCount: number): string {\n const n = Number(visibleCount);\n const key = Number.isFinite(n) ? Math.min(Math.max(Math.round(n), 1), 6) : 4;\n return CAROUSEL_CARD_WIDTH[key] ?? CAROUSEL_CARD_WIDTH[4];\n}\n\nconst GRID_COL_CLASSES: Record<number, string> = {\n 1: 'md:grid-cols-1 xl:grid-cols-1',\n 2: 'md:grid-cols-2 xl:grid-cols-2',\n 3: 'md:grid-cols-2 lg:grid-cols-4 xl:grid-cols-3',\n 4: 'md:grid-cols-2 lg:grid-cols-4',\n 5: 'md:grid-cols-2 lg:grid-cols-4 lg:grid-cols-5',\n 6: 'md:grid-cols-2 lg:grid-cols-4 xl:grid-cols-6',\n};\n\nfunction gridColClass(columns: number | undefined): string {\n const n = Number(columns);\n const key = Number.isFinite(n) ? Math.min(Math.max(Math.round(n), 1), 6) : 3;\n return GRID_COL_CLASSES[key] ?? GRID_COL_CLASSES[3];\n}\n\nexport function ArticleListing({\n article,\n list_type: listType,\n columns,\n}: ArticleListingProps) {\n const count = article?.length ?? 0;\n const visibleCount = columns ?? 4;\n const maxIndex = Math.max(0, count - visibleCount);\n \n const [current, setCurrent] = useState(0);\n \n const prev = useCallback(() => setCurrent(c => Math.max(0, c - 1)), []);\n const next = useCallback(() => setCurrent(c => Math.min(maxIndex, c + 1)), [maxIndex]);\n \n const cardWidthClass = carouselCardWidthClass(visibleCount);\n const slideStepPct = 100 / visibleCount;\n return (\n <div className={`component-container mx-auto px-6 py-8`.trim()}>\n <div className=\"relative overflow-hidden\">\n <div\n className={`${listType === 'Carousel' ? 'flex transition-transform duration-500 ease-in-out' : `grid grid-cols-1 gap-6 ${gridColClass(columns)}`}`}\n style={{\n transform: listType === 'Carousel' ? `translateX(-${current * slideStepPct}%)` : undefined,\n }}\n >\n {article && article.length > 0 && article.map((article: ArticleItem, index: number) => {\n const imageSrc = typeof article.image === 'string' ? article.image : article.image?.url;\n return (\n <div key={index.toString()} className={`${listType === 'Carousel' ? cardWidthClass : ''} p-4 bg-white rounded-lg cursor-pointer`.trim()}>\n {imageSrc && (\n <Image\n src={imageSrc}\n alt={article?.title ?? 'Article Image'}\n width={800}\n height={600}\n className='mt-3 rounded-2xl inset-0 object-cover inset-ring inset-ring-gray-900/10'\n />\n )}\n\n <div className='flex items-center justify-between gap-x-4 text-xs mt-4'>\n <time className='text-gray-500'> {format(parseISO(format(new Date(), \"yyyy-MM-dd\")), \"MMM d, yyyy\")}\n </time>\n\n <div className='bg-gray-200 text-gray-800 px-3 py-1 rounded-full text-xs font-medium'>\n {article?.category}\n </div>\n\n </div>\n <div>\n {article?.article_title && <h5 className=\"font-semibold mt-3\">{article.article_title}</h5>}\n\n {article?.summary && <p className='mt-3 text-sm/6 text-gray-500 line-clamp-3'>{article.summary}</p>}\n </div>\n\n {article?.author_details?.author_name && (\n <div className='flex mt-3'>\n <Image\n src={article?.author_details?.author_image ?? '/default-avatar.png'}\n alt={article.author_details.author_name}\n width={40}\n height={40}\n className='rounded-full mt-4'\n />\n <div>\n <p className='ml-3 mt-4 text-sm font-medium text-gray-900'>{article.author_details.author_name}</p>\n {article?.author_details?.company_designation && (\n <p className='ml-3 text-xs text-gray-500'>{article.author_details.company_designation}</p>\n )}\n </div>\n </div>\n )}\n </div>\n );\n })}\n </div>\n\n {listType === 'Carousel' && current > 0 && (\n <button\n onClick={prev}\n aria-label=\"Previous slide\"\n className=\"absolute left-0 top-1/2 -translate-y-1/2 bg-white/80 hover:bg-white text-gray-800 p-2 rounded-full shadow transition-colors duration-200 cursor-pointer\"\n >\n ←\n </button>\n )}\n\n {listType === 'Carousel' && current < maxIndex && (\n <button\n onClick={next}\n aria-label=\"Next slide\"\n className=\"absolute right-0 top-1/2 -translate-y-1/2 bg-white/80 hover:bg-white text-gray-800 p-2 rounded-full shadow transition-colors duration-200 cursor-pointer\"\n >\n →\n </button>\n )}\n </div>\n </div>\n );\n}\n\nexport default ArticleListing;","import React, { useState } from 'react';\nimport type { StackableColorValue } from '../../types';\nimport { resolveStackableColor } from '../../utils';\n\nexport interface TabItem {\n label?: string;\n /** Emoji/glyph, an icon URL, or a Contentstack asset object. */\n icon?: string | { url?: string };\n heading?: string;\n body?: string;\n image?: string;\n cta_label?: string;\n cta_url?: string;\n}\n\nexport interface TabsProps {\n tabs?: TabItem[];\n layout?: 'editorial' | 'icon-underline' | 'pill' | 'vertical' | 'card-carousel' | 'underline-split' | 'dark' | string;\n default_tab?: number;\n className?: string;\n // Heading block\n section_heading?: string;\n section_sub_heading?: string;\n text_color?: StackableColorValue;\n heading_alignment?: 'left' | 'center' | 'right';\n // Tab bar position (applies to all horizontal layouts)\n label_position?: 'top' | 'bottom';\n // Image position (editorial, underline-split, vertical)\n image_position?: 'left' | 'right';\n // Tab button style (applies to ALL horizontal layouts)\n pill_style?: 'plain' | 'pill';\n pill_bg_color?: StackableColorValue;\n // Dark header (applies to ALL horizontal layouts)\n dark_header_enabled?: boolean;\n header_bg_color?: StackableColorValue;\n // Card Carousel\n carousel_enabled?: boolean;\n // Vertical sidebar\n tab_label_position?: 'left' | 'right';\n tab_bg_color?: StackableColorValue;\n}\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveIconValue(icon?: string | { url?: string }): string {\n if (!icon) return '';\n if (typeof icon === 'string') return icon.trim();\n return typeof icon.url === 'string' ? icon.url.trim() : '';\n}\n\nfunction TabIcon({ icon, size = 'md' }: { icon?: string | { url?: string }; size?: 'sm' | 'md' }) {\n const resolved = resolveIconValue(icon);\n if (!resolved) return null;\n if (resolved.startsWith('http') || resolved.startsWith('/')) {\n return (\n <img\n src={resolved}\n alt=\"\"\n className={`${size === 'sm' ? 'w-4 h-4' : 'w-5 h-5'} object-contain flex-shrink-0`}\n />\n );\n }\n return <span className={`${size === 'sm' ? 'text-sm' : 'text-lg'} leading-none`}>{resolved}</span>;\n}\n\nconst FALLBACK_IMAGE = 'https://images.unsplash.com/photo-1507525428034-b723cf961d3e?w=800&fit=crop';\n\nexport function Tabs({\n tabs = [],\n layout = 'editorial',\n default_tab = 0,\n className = '',\n section_heading,\n section_sub_heading,\n text_color,\n heading_alignment = 'left',\n label_position = 'bottom',\n image_position = 'left',\n pill_style = 'plain',\n pill_bg_color,\n dark_header_enabled = false,\n header_bg_color,\n carousel_enabled = true,\n tab_label_position = 'left',\n tab_bg_color,\n}: TabsProps) {\n const [active, setActive] = useState(\n Math.min(Math.max(0, default_tab), Math.max(0, tabs?.length - 1)),\n );\n\n const hasTabs = tabs?.length > 0;\n const tab = hasTabs ? (tabs?.[active] ?? tabs?.[0]) : null;\n const img = tab?.image || FALLBACK_IMAGE;\n\n const textCss = resolveStackableColor(text_color);\n const textStyle: React.CSSProperties = textCss ? { color: textCss } : {};\n\n const alignClass =\n heading_alignment === 'center' ? 'text-center' :\n heading_alignment === 'right' ? 'text-right' :\n 'text-left';\n\n // ── Heading block ─────────────────────────────────────────────────────────\n const renderHeadingBlock = () => {\n if (!section_heading && !section_sub_heading) return null;\n return (\n <div className={`px-6 pt-6 pb-4 ${alignClass}`}>\n {section_heading && (\n <h2 className=\"text-2xl font-bold text-gray-900 mb-1\" style={textStyle}>\n {section_heading}\n </h2>\n )}\n {section_sub_heading && (\n <p className=\"text-base text-gray-500\" style={textStyle}>\n {section_sub_heading}\n </p>\n )}\n </div>\n );\n };\n\n // ── Shared tab button builder ──────────────────────────────────────────────\n // Builds individual <button> elements for any horizontal layout.\n // pill_style and dark_header_enabled drive button appearance universally.\n const buildTabButtons = () => {\n const isDark = dark_header_enabled === true;\n const isPill = pill_style === 'pill';\n const activePillBg = resolveStackableColor(pill_bg_color) || '#1e3a6e';\n const isIconLayout = layout === 'icon-underline';\n\n return tabs?.map((t, i) => {\n if (isPill) {\n return (\n <button\n key={i}\n onClick={() => setActive(i)}\n className={`flex items-center gap-2 px-4 py-2 rounded-full text-sm font-medium transition-colors border ${\n i === active\n ? 'text-white border-transparent'\n : isDark\n ? 'border-transparent text-blue-200 hover:text-white'\n : 'bg-white text-gray-600 border-gray-300 hover:border-gray-400 hover:text-gray-800'\n }`}\n style={i === active ? { backgroundColor: activePillBg } : {}}\n >\n {isIconLayout && t.icon && <TabIcon icon={t.icon} size=\"sm\" />}\n <span>{t.label || `Tab ${i + 1}`}</span>\n </button>\n );\n }\n\n // Plain underline style\n if (isIconLayout) {\n return (\n <button\n key={i}\n onClick={() => setActive(i)}\n className={`flex flex-col items-center gap-1 px-6 py-3 text-xs font-medium transition-colors ${\n i === active\n ? isDark\n ? 'text-white border-b-2 border-white -mb-px'\n : 'text-blue-600 border-b-2 border-blue-600 -mb-px'\n : isDark\n ? 'text-blue-200 hover:text-white'\n : 'text-gray-400 hover:text-gray-600'\n }`}\n >\n <TabIcon icon={t.icon} />\n <span>{t.label || `Tab ${i + 1}`}</span>\n </button>\n );\n }\n\n return (\n <button\n key={i}\n onClick={() => setActive(i)}\n className={`px-5 py-3 text-sm font-medium transition-colors ${\n i === active\n ? isDark\n ? 'text-white border-b-2 border-white -mb-px'\n : 'text-blue-600 border-b-2 border-blue-600 -mb-px'\n : isDark\n ? 'text-blue-200 hover:text-white'\n : 'text-gray-500 hover:text-gray-700'\n }`}\n >\n {t.label || `Tab ${i + 1}`}\n </button>\n );\n });\n };\n\n // ── Shared tab nav wrapper ────────────────────────────────────────────────\n // Wraps tab buttons in the appropriate outer container.\n // dark_header_enabled / header_bg_color control the background universally.\n // Editorial layout gets a full-width (non-container) centered bar by default.\n const renderTabNav = (atTop: boolean) => {\n const isDark = dark_header_enabled === true;\n const headerBg = resolveStackableColor(header_bg_color) || '#1e3a6e';\n const isPill = pill_style === 'pill';\n const isEditorial = layout === 'editorial';\n\n const buttons = buildTabButtons();\n\n // Pill buttons row — gap-based, no border\n if (isPill) {\n if (isDark) {\n return (\n <div style={{ backgroundColor: headerBg }}>\n <div className=\"component-container mx-auto px-6 py-3\">\n <div className=\"flex gap-2 flex-wrap\">{buttons}</div>\n </div>\n </div>\n );\n }\n return (\n <div className=\"bg-white py-3 px-6\">\n <div className=\"flex gap-2 flex-wrap\">{buttons}</div>\n </div>\n );\n }\n\n // Plain underline buttons\n if (isDark) {\n return (\n <div style={{ backgroundColor: headerBg }}>\n <div className=\"component-container mx-auto px-6\">\n <div className=\"flex\">{buttons}</div>\n </div>\n </div>\n );\n }\n\n // Light plain — editorial gets full-width centered bar\n if (isEditorial) {\n return (\n <div className={`bg-white ${atTop ? 'border-b' : 'border-t'} border-gray-200`}>\n <div className=\"flex justify-center gap-10 py-4\">{buttons}</div>\n </div>\n );\n }\n\n // All other layouts: contained, left-aligned underline bar\n return (\n <div className={`${atTop ? 'border-b' : 'border-t'} border-gray-200`}>\n <div className=\"component-container mx-auto px-6\">\n <div className=\"flex\">{buttons}</div>\n </div>\n </div>\n );\n };\n\n // ── Content area renderers ─────────────────────────────────────────────────\n // Each renders ONLY the content pane — no tab nav, no heading block.\n\n const renderEditorialContent = () => {\n const imgOnRight = image_position === 'right';\n return (\n <div className={`flex min-h-[380px] ${imgOnRight ? 'flex-row-reverse' : ''}`}>\n <div className=\"relative w-1/2\">\n <img\n src={img}\n alt={tab?.heading || ''}\n style={{ position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: 'cover' }}\n />\n </div>\n <div className=\"w-1/2 bg-[#e8f1f8] flex items-center\">\n <div className=\"px-12 py-10\">\n {tab?.heading && (\n <h2 className=\"text-2xl uppercase tracking-[0.2em] font-light text-gray-800 mb-5\">\n {tab.heading}\n </h2>\n )}\n {tab?.body && (\n <p className=\"text-sm text-gray-600 leading-relaxed max-w-sm\">{tab.body}</p>\n )}\n </div>\n </div>\n </div>\n );\n };\n\n const renderIconUnderlineContent = () => (\n <div className=\"component-container mx-auto px-6 py-5\">\n <div className=\"flex gap-5\">\n <div className=\"w-2/5 flex-shrink-0 relative h-44 rounded overflow-hidden\">\n <img\n src={img}\n alt={tab?.heading || ''}\n style={{ position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: 'cover' }}\n />\n </div>\n <div className=\"flex-1 min-w-0\">\n {tab?.heading && (\n <h3 className=\"text-lg font-semibold text-gray-900 mb-2\">{tab.heading}</h3>\n )}\n {tab?.body && (\n <p className=\"text-sm text-gray-600 leading-relaxed\">{tab.body}</p>\n )}\n </div>\n </div>\n </div>\n );\n\n const renderPillContent = () => (\n <div className=\"component-container mx-auto px-6 py-5\">\n <div className=\"flex gap-5\">\n <div className=\"w-2/5 flex-shrink-0 relative h-48 rounded overflow-hidden\">\n <img\n src={img}\n alt={tab?.heading || ''}\n style={{ position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: 'cover' }}\n />\n </div>\n <div className=\"flex-1 min-w-0\">\n {tab?.heading && (\n <h3 className=\"text-xl font-bold text-gray-900 mb-2\">{tab.heading}</h3>\n )}\n {tab?.body && (\n <p className=\"text-sm text-gray-600 leading-relaxed mb-4\">{tab.body}</p>\n )}\n {tab?.cta_label && (\n <a\n href={tab.cta_url || '#'}\n className=\"inline-block px-5 py-2 bg-[#1e3a6e] text-white text-sm font-medium rounded\"\n >\n {tab.cta_label}\n </a>\n )}\n </div>\n </div>\n </div>\n );\n\n const renderCardCarouselContent = () => {\n const showCarousel = carousel_enabled !== false;\n if (!showCarousel) {\n return (\n <div className=\"component-container mx-auto px-6 py-5\">\n <div className=\"flex gap-5\">\n <div className=\"w-2/5 flex-shrink-0 relative h-48 rounded overflow-hidden\">\n <img\n src={img}\n alt={tab?.heading || ''}\n style={{ position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: 'cover' }}\n />\n </div>\n <div className=\"flex-1 min-w-0\">\n {tab?.heading && <h3 className=\"font-bold text-gray-900 mb-2\">{tab.heading}</h3>}\n {tab?.body && <p className=\"text-sm text-gray-600 leading-relaxed\">{tab.body}</p>}\n </div>\n </div>\n </div>\n );\n }\n return (\n <div className=\"component-container mx-auto px-6\">\n <div className=\"relative flex items-center gap-5 py-5 pr-12\">\n <div\n className=\"w-16 h-16 flex-shrink-0 rounded-full overflow-hidden border-2 border-white shadow-md\"\n style={{ backgroundImage: `url(${img})`, backgroundSize: 'cover', backgroundPosition: 'center' }}\n />\n <div className=\"flex-1 min-w-0\">\n {tab?.heading && <h3 className=\"font-bold text-gray-900 mb-1\">{tab.heading}</h3>}\n {tab?.body && <p className=\"text-sm text-gray-600 leading-relaxed\">{tab.body}</p>}\n </div>\n <button\n onClick={() => setActive((active + 1) % tabs?.length)}\n aria-label=\"Next\"\n className=\"absolute right-0 top-1/2 -translate-y-1/2 w-9 h-9 flex-shrink-0 rounded-full border border-gray-300 flex items-center justify-center hover:bg-gray-50 transition-colors\"\n >\n <svg className=\"w-4 h-4 text-gray-500\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9 5l7 7-7 7\" />\n </svg>\n </button>\n </div>\n <div className=\"flex gap-2 pb-2\">\n {tabs?.map((_, i) => (\n <button\n key={i}\n onClick={() => setActive(i)}\n aria-label={`Go to tab ${i + 1}`}\n className={`h-1.5 rounded-full transition-all ${i === active ? 'w-6 bg-[#1e3a6e]' : 'w-4 bg-gray-300'}`}\n />\n ))}\n </div>\n </div>\n );\n };\n\n const renderUnderlineSplitContent = () => {\n const imgOnRight = image_position === 'right';\n return (\n <div className=\"component-container mx-auto px-6 py-5\">\n <div className={`flex overflow-hidden rounded shadow-sm bg-white ${imgOnRight ? 'flex-row-reverse' : ''}`}>\n <div className=\"w-1/2 flex-shrink-0 relative h-52\">\n <img\n src={img}\n alt={tab?.heading || ''}\n style={{ position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: 'cover' }}\n />\n </div>\n <div className=\"flex-1 p-5 min-w-0\">\n {tab?.heading && (\n <h3 className=\"text-xl font-bold text-gray-900 mb-2\">{tab.heading}</h3>\n )}\n {tab?.body && (\n <p className=\"text-sm text-gray-600 leading-relaxed mb-4\">{tab.body}</p>\n )}\n {tab?.cta_label && (\n <a\n href={tab.cta_url || '#'}\n className=\"text-blue-600 text-sm font-medium hover:underline inline-flex items-center gap-1\"\n >\n {tab.cta_label} <span aria-hidden=\"true\">→</span>\n </a>\n )}\n </div>\n </div>\n </div>\n );\n };\n\n const renderDarkContent = () => (\n <div className=\"bg-white\">\n <div className=\"component-container mx-auto px-6 py-8\">\n <div className=\"flex gap-8\">\n <div className=\"flex-1 min-w-0\">\n {tab?.heading && (\n <h3 className=\"text-2xl font-bold text-gray-900 mb-3\">{tab.heading}</h3>\n )}\n {tab?.body && (\n <p className=\"text-sm text-gray-600 leading-relaxed\">{tab.body}</p>\n )}\n </div>\n <div className=\"w-2/5 flex-shrink-0 relative h-48 rounded overflow-hidden\">\n <img\n src={img}\n alt={tab?.heading || ''}\n style={{ position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: 'cover' }}\n />\n </div>\n </div>\n </div>\n </div>\n );\n\n // ── Horizontal layout orchestrator ────────────────────────────────────────\n // Combines heading block + shared tab nav (at top or bottom) + content area.\n const renderHorizontal = () => {\n const labelsAtTop = label_position === 'top';\n\n const contentArea = (() => {\n if (layout === 'icon-underline') return renderIconUnderlineContent();\n if (layout === 'pill') return renderPillContent();\n if (layout === 'card-carousel') return renderCardCarouselContent();\n if (layout === 'underline-split') return renderUnderlineSplitContent();\n if (layout === 'dark') return renderDarkContent();\n return renderEditorialContent();\n })();\n\n const sectionBg = layout === 'underline-split' ? 'bg-gray-50' : 'bg-white';\n\n return (\n <section className={`${sectionBg} overflow-hidden ${className}`.trim()}>\n {renderHeadingBlock()}\n {labelsAtTop && renderTabNav(true)}\n {hasTabs ? contentArea : (\n <div className=\"component-container mx-auto px-6 py-16 text-center text-gray-400 text-sm\">\n No tabs added yet.\n </div>\n )}\n {!labelsAtTop && renderTabNav(false)}\n </section>\n );\n };\n\n // ── VERTICAL ──────────────────────────────────────────────────────────────\n // Keeps its own sidebar nav — pill_style / dark_header_enabled drive the\n // active tab styling just as for horizontal layouts.\n const renderVertical = () => {\n const tabsOnRight = tab_label_position === 'right';\n const imgOnRight = image_position === 'right';\n const isDark = dark_header_enabled === true;\n const isPill = pill_style === 'pill';\n const activeBg =\n resolveStackableColor(tab_bg_color) ||\n resolveStackableColor(pill_bg_color) ||\n '#1e3a6e';\n\n return (\n <section className={`bg-white ${className}`.trim()}>\n <div className=\"component-container mx-auto px-6 py-6\">\n {renderHeadingBlock()}\n {!hasTabs ? (\n <p className=\"text-gray-400 text-sm\">No tabs added yet.</p>\n ) : (\n <div className={`flex gap-4 ${tabsOnRight ? 'flex-row-reverse' : ''}`}>\n <div className=\"w-36 flex-shrink-0 flex flex-col gap-0.5\">\n {tabs?.map((t, i) => (\n <button\n key={i}\n onClick={() => setActive(i)}\n className={`flex items-center gap-2 w-full px-3 py-3 rounded text-sm font-medium text-left transition-colors ${\n isPill\n ? i === active ? 'text-white' : 'text-gray-600 hover:bg-gray-100'\n : i === active\n ? isDark ? 'text-white' : 'bg-[#1e3a6e] text-white'\n : 'text-gray-600 hover:bg-gray-100'\n }`}\n style={i === active ? { backgroundColor: activeBg } : {}}\n >\n {t.icon && <TabIcon icon={t.icon} size=\"sm\" />}\n <span>{t.label || `Tab ${i + 1}`}</span>\n </button>\n ))}\n </div>\n <div className={`flex-1 flex gap-4 min-w-0 ${imgOnRight ? 'flex-row-reverse' : ''}`}>\n <div className=\"flex-1 relative h-52 rounded overflow-hidden\">\n <img\n src={img}\n alt={tab?.heading || ''}\n style={{ position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: 'cover' }}\n />\n </div>\n <div className=\"flex-1 min-w-0\">\n {tab?.heading && (\n <h3 className=\"text-lg font-bold text-gray-900 mb-2\">{tab.heading}</h3>\n )}\n {tab?.body && (\n <p className=\"text-sm text-gray-600 leading-relaxed\">{tab.body}</p>\n )}\n </div>\n </div>\n </div>\n )}\n </div>\n </section>\n );\n };\n\n // ── Layout dispatch ────────────────────────────────────────────────────────\n if (layout === 'vertical') return renderVertical();\n return renderHorizontal();\n}\n\nexport default Tabs;\n","import React from 'react';\nimport { hexToRgba, resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface SectionIntroductionCtaButton {\n title?: string;\n url?: string;\n open_in_new_tab?: boolean;\n apply_border?: boolean;\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n}\n\nexport interface SectionIntroductionColorValue {\n hex?: string;\n}\n\nexport interface SectionIntroductionProps {\n className?: string;\n eyebrow_text?: string;\n heading?: string;\n subheading?: string;\n description?: string;\n cta_button?: SectionIntroductionCtaButton;\n secondary_cta_button?: SectionIntroductionCtaButton;\n alignment?: 'Left' | 'Center' | 'Right' | string;\n background_color?: SectionIntroductionColorValue;\n text_color?: SectionIntroductionColorValue;\n}\n\nexport function SectionIntroduction({\n className,\n eyebrow_text: eyebrowText = 'Our Story',\n heading = 'Introducing a Better Way to Build',\n subheading = 'Designed for teams who move fast and need reliable, scalable components.',\n description = 'Every component is crafted with care — fully customizable, accessible by default, and ready to drop into any Contentstack project.',\n cta_button: ctaButton,\n secondary_cta_button: secondaryCtaButton,\n alignment = 'Center',\n background_color: backgroundColor,\n text_color: textColor = { hex: '#111827' },\n}: SectionIntroductionProps) {\n const textHex = textColor?.hex ?? '#111827';\n const sectionBg = backgroundColor?.hex ?? '#ffffff';\n\n const getAlignment = (): string => {\n switch (alignment) {\n case 'Left': return 'items-start text-left';\n case 'Right': return 'items-end text-right';\n case 'Center':\n default: return 'items-center text-center';\n }\n };\n\n const getEyebrowLayout = (): string => {\n switch (alignment) {\n case 'Left': return 'justify-start';\n case 'Right': return 'justify-end';\n case 'Center':\n default: return 'justify-center';\n }\n };\n\n const hasCta = Boolean(ctaButton?.title);\n const hasSecondaryCta = Boolean(secondaryCtaButton?.title);\n\n return (\n <section\n className={`relative w-full ${className ?? ''}`.trim()}\n style={{ backgroundColor: backgroundColor?.hex }}\n >\n <div className={`component-container mx-auto px-6 py-20 flex flex-col gap-6 ${getAlignment()}`}>\n\n {/* Eyebrow with decorative lines */}\n {eyebrowText && (\n <div className={`flex items-center gap-3 ${getEyebrowLayout()}`}>\n <span\n className=\"block h-px w-8 flex-shrink-0\"\n style={{ backgroundColor: hexToRgba(textHex, 0.3) }}\n />\n <span\n className=\"text-xs font-semibold uppercase tracking-[0.15em]\"\n style={{ color: hexToRgba(textHex, 0.55) }}\n >\n {eyebrowText}\n </span>\n <span\n className=\"block h-px w-8 flex-shrink-0\"\n style={{ backgroundColor: hexToRgba(textHex, 0.3) }}\n />\n </div>\n )}\n\n {/* Heading */}\n {heading && (\n <h2\n className=\"text-4xl font-bold leading-tight max-w-3xl\"\n style={{ color: textHex }}\n >\n {heading}\n </h2>\n )}\n\n {/* Subheading */}\n {subheading && (\n <p\n className=\"text-xl font-medium max-w-2xl\"\n style={{ color: hexToRgba(textHex, 0.65) }}\n >\n {subheading}\n </p>\n )}\n\n {/* Description (supports HTML from JSON RTE) */}\n {description && (\n <div\n className=\"text-base leading-relaxed max-w-2xl prose-a:underline\"\n style={{ color: hexToRgba(textHex, 0.7) }}\n dangerouslySetInnerHTML={{ __html: description }}\n />\n )}\n\n {/* CTA buttons row */}\n {(hasCta || hasSecondaryCta) && (\n <div className=\"flex flex-wrap items-center gap-3 mt-2\">\n {hasCta && (\n <CtaButton\n btn={ctaButton!}\n sectionBg={sectionBg}\n textHex={textHex}\n />\n )}\n {hasSecondaryCta && (\n <CtaButton\n btn={secondaryCtaButton!}\n sectionBg={sectionBg}\n textHex={textHex}\n />\n )}\n </div>\n )}\n\n </div>\n </section>\n );\n}\n\n// ─── CTA button ───────────────────────────────────────────────────────────────\n\nfunction CtaButton({\n btn,\n sectionBg,\n textHex,\n}: {\n btn: SectionIntroductionCtaButton;\n sectionBg: string;\n textHex: string;\n}) {\n const resolvedBg = resolveStackableColor(btn.background_color);\n const resolvedText = resolveStackableColor(btn.text_color);\n\n // apply_border defaults to true when undefined so the initial state is a solid button\n const applyBorder = btn.apply_border !== false;\n\n if (applyBorder) {\n const bg = resolvedBg || textHex;\n const text = resolvedText || sectionBg;\n return (\n <a\n href={btn.url ?? '#'}\n target={btn.open_in_new_tab ? '_blank' : '_self'}\n rel={btn.open_in_new_tab ? 'noopener noreferrer' : undefined}\n className=\"inline-flex items-center gap-2 px-6 py-3 rounded-lg text-sm font-semibold transition-opacity hover:opacity-85 no-underline\"\n style={{\n backgroundColor: bg,\n color: text,\n border: `1.5px solid ${bg}`,\n }}\n >\n {btn.title}\n <span aria-hidden=\"true\">&rarr;</span>\n </a>\n );\n }\n\n // Text CTA style — no background, no border\n const text = resolvedText || textHex;\n return (\n <a\n href={btn.url ?? '#'}\n target={btn.open_in_new_tab ? '_blank' : '_self'}\n rel={btn.open_in_new_tab ? 'noopener noreferrer' : undefined}\n className=\"inline-flex items-center gap-1 text-sm font-semibold transition-opacity hover:opacity-70 no-underline\"\n style={{ color: text }}\n >\n {btn.title}\n <span aria-hidden=\"true\">&rarr;</span>\n </a>\n );\n}\n\nexport default SectionIntroduction;\n","import React from 'react';\nimport { hexToRgba } from '../../utils';\n\nexport interface SectionIntroductionTwoColumnColorValue {\n hex?: string;\n}\n\nexport interface SectionIntroductionTwoColumnProps {\n className?: string;\n step_number?: string;\n eyebrow_text?: string;\n heading?: string;\n left_description?: string;\n right_description?: string;\n left_background_image?: string;\n right_background_image?: string;\n background_color?: SectionIntroductionTwoColumnColorValue;\n text_color?: SectionIntroductionTwoColumnColorValue;\n}\n\nexport function SectionIntroductionTwoColumn({\n className,\n step_number = '01 /',\n eyebrow_text: eyebrowText = 'About',\n heading = 'We believe in forward-thinking design',\n left_description: leftDescription = 'We love being an integral part of the creative process, and rising to the challenge of making complex software approachable to the masses. <a href=\"#\">With all of our work, we hope to empower users</a> and simplify their everyday lives.',\n right_description: rightDescription = '<p>We believe that forward-thinking design can be a driving force behind technological progress. In the various projects we were a part of, our team have worked to advance user experience.</p><p>The only constant in this world is change, and that\\'s especially evident in the way we design and the way we build.</p>',\n left_background_image: leftBgImage,\n right_background_image: rightBgImage,\n background_color: backgroundColor,\n text_color: textColor = { hex: '#111827' },\n}: SectionIntroductionTwoColumnProps) {\n const textHex = textColor?.hex ?? '#111827';\n const sectionBg = backgroundColor?.hex ?? '#ffffff';\n\n // When a column has a bg image, text switches to white for readability\n const leftTextHex = leftBgImage ? '#ffffff' : textHex;\n const rightTextHex = rightBgImage ? '#ffffff' : textHex;\n\n const colBase = 'relative flex flex-col overflow-hidden rounded-xl';\n\n const bgImageStyle = (url?: string): React.CSSProperties =>\n url\n ? {\n backgroundImage: `url(${url})`,\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n }\n : {};\n\n return (\n <section\n className={`relative w-full ${className ?? ''}`.trim()}\n style={{ backgroundColor: sectionBg }}\n >\n <div className=\"component-container mx-auto px-8 py-20 grid grid-cols-2 gap-6\">\n\n {/* ── Left column ──────────────────────────────────────────── */}\n <div\n className={colBase}\n style={bgImageStyle(leftBgImage)}\n >\n {/* Dark overlay when image is present */}\n {leftBgImage && (\n <div className=\"absolute inset-0 bg-black/40 rounded-xl\" />\n )}\n\n <div\n className={`relative z-10 flex flex-col justify-between gap-16 ${leftBgImage ? 'p-10 min-h-[420px]' : 'py-4'}`}\n >\n {/* Step number */}\n {step_number && (\n <span\n className=\"text-6xl font-light tracking-tight\"\n style={{ color: leftBgImage ? '#ffffff' : textHex }}\n >\n {step_number}\n </span>\n )}\n\n {/* Left body text */}\n {leftDescription && (\n <div\n className=\"text-base leading-relaxed [&_a]:underline [&_a]:underline-offset-2\"\n style={{ color: hexToRgba(leftTextHex, leftBgImage ? 0.9 : 0.75) }}\n dangerouslySetInnerHTML={{ __html: leftDescription }}\n />\n )}\n </div>\n </div>\n\n {/* ── Right column ─────────────────────────────────────────── */}\n <div\n className={colBase}\n style={bgImageStyle(rightBgImage)}\n >\n {/* Dark overlay when image is present */}\n {rightBgImage && (\n <div className=\"absolute inset-0 bg-black/40 rounded-xl\" />\n )}\n\n <div\n className={`relative z-10 flex flex-col gap-6 ${rightBgImage ? 'p-10 min-h-[420px] justify-end' : 'py-4'}`}\n >\n {/* Eyebrow */}\n {eyebrowText && (\n <span\n className=\"text-sm font-bold uppercase tracking-[0.12em]\"\n style={{ color: hexToRgba(rightTextHex, rightBgImage ? 0.8 : 0.5) }}\n >\n {eyebrowText}\n </span>\n )}\n\n {/* Heading */}\n {heading && (\n <h2\n className=\"text-5xl font-light leading-[1.15] tracking-tight\"\n style={{ color: rightBgImage ? '#ffffff' : textHex }}\n >\n {heading}\n </h2>\n )}\n\n {/* Divider — hidden when image bg is set to keep it clean */}\n {!rightBgImage && (\n <hr style={{ borderColor: hexToRgba(textHex, 0.12) }} />\n )}\n\n {/* Right body text */}\n {rightDescription && (\n <div\n className=\"text-base leading-relaxed space-y-4 [&_a]:underline [&_a]:underline-offset-2\"\n style={{ color: hexToRgba(rightTextHex, rightBgImage ? 0.85 : 0.7) }}\n dangerouslySetInnerHTML={{ __html: rightDescription }}\n />\n )}\n </div>\n </div>\n\n </div>\n </section>\n );\n}\n\nexport default SectionIntroductionTwoColumn;\n","import React, { useState } from 'react';\nimport { hexToRgba, resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface VideoSectionCtaButton {\n title?: string;\n url?: string;\n open_in_new_tab?: boolean;\n apply_border?: boolean;\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n}\n\nexport interface VideoSectionPoster {\n url?: string;\n title?: string;\n}\n\nexport interface VideoSectionVideo {\n url?: string;\n poster?: VideoSectionPoster;\n autoplay?: boolean;\n muted?: boolean;\n loop?: boolean;\n controls?: boolean;\n}\n\nexport interface VideoSectionColorValue {\n hex?: string;\n}\n\nexport interface VideoSectionProps {\n className?: string;\n eyebrow_text?: string;\n heading?: string;\n subheading?: string;\n video?: VideoSectionVideo;\n cta_button?: VideoSectionCtaButton;\n alignment?: 'Left' | 'Center' | 'Right' | string;\n background_color?: VideoSectionColorValue;\n text_color?: VideoSectionColorValue;\n}\n\nexport function VideoSection({\n className,\n eyebrow_text: eyebrowText = 'See It In Action',\n heading = 'Watch How It Works',\n subheading = 'A quick walkthrough of what you can build in minutes.',\n video,\n cta_button: ctaButton,\n alignment = 'Center',\n background_color: backgroundColor,\n text_color: textColor = { hex: '#111827' },\n}: VideoSectionProps) {\n const [isPlaying, setIsPlaying] = useState(false);\n\n const textHex = textColor?.hex ?? '#111827';\n const sectionBg = backgroundColor?.hex ?? '#ffffff';\n const hasCta = Boolean(ctaButton?.title);\n\n const getAlignment = (): string => {\n switch (alignment) {\n case 'Left': return 'items-start text-left';\n case 'Right': return 'items-end text-right';\n case 'Center':\n default: return 'items-center text-center';\n }\n };\n\n const getEyebrowLayout = (): string => {\n switch (alignment) {\n case 'Left': return 'justify-start';\n case 'Right': return 'justify-end';\n case 'Center':\n default: return 'justify-center';\n }\n };\n\n return (\n <section\n className={`relative w-full ${className ?? ''}`.trim()}\n style={{ backgroundColor: backgroundColor?.hex }}\n >\n <div className={`component-container mx-auto px-6 py-20 flex flex-col gap-6 ${getAlignment()}`}>\n\n {/* Eyebrow with decorative lines */}\n {eyebrowText && (\n <div className={`flex items-center gap-3 ${getEyebrowLayout()}`}>\n <span\n className=\"block h-px w-8 flex-shrink-0\"\n style={{ backgroundColor: hexToRgba(textHex, 0.3) }}\n />\n <span\n className=\"text-xs font-semibold uppercase tracking-[0.15em]\"\n style={{ color: hexToRgba(textHex, 0.55) }}\n >\n {eyebrowText}\n </span>\n <span\n className=\"block h-px w-8 flex-shrink-0\"\n style={{ backgroundColor: hexToRgba(textHex, 0.3) }}\n />\n </div>\n )}\n\n {/* Heading */}\n {heading && (\n <h2\n className=\"text-4xl font-bold leading-tight max-w-3xl\"\n style={{ color: textHex }}\n >\n {heading}\n </h2>\n )}\n\n {/* Subheading */}\n {subheading && (\n <p\n className=\"text-xl font-medium max-w-2xl\"\n style={{ color: hexToRgba(textHex, 0.65) }}\n >\n {subheading}\n </p>\n )}\n\n {/* Video */}\n {video?.url && (\n <div className=\"relative w-full max-w-4xl rounded-xl overflow-hidden mt-4 bg-black/5 aspect-video\">\n {isPlaying ? (\n <video\n src={video.url}\n poster={video.poster?.url}\n autoPlay\n muted={video.muted}\n loop={video.loop}\n controls={video.controls !== false}\n playsInline\n className=\"absolute inset-0 w-full h-full object-cover\"\n />\n ) : (\n <button\n type=\"button\"\n onClick={() => setIsPlaying(true)}\n aria-label=\"Play video\"\n className=\"absolute inset-0 w-full h-full cursor-pointer group\"\n >\n {video.poster?.url && (\n <img\n src={video.poster.url}\n alt={video.poster.title ?? heading ?? 'Video thumbnail'}\n className=\"absolute inset-0 w-full h-full object-cover\"\n />\n )}\n <span className=\"absolute inset-0 flex items-center justify-center\">\n <span className=\"flex items-center justify-center w-16 h-16 rounded-full bg-white shadow-lg transition-transform duration-200 group-hover:scale-105\">\n <svg viewBox=\"0 0 24 24\" className=\"w-6 h-6 ml-1\" fill=\"#111827\" aria-hidden=\"true\">\n <path d=\"M8 5v14l11-7z\" />\n </svg>\n </span>\n </span>\n </button>\n )}\n </div>\n )}\n\n {/* CTA button */}\n {hasCta && (\n <div className=\"mt-2\">\n <CtaButton btn={ctaButton!} sectionBg={sectionBg} textHex={textHex} />\n </div>\n )}\n\n </div>\n </section>\n );\n}\n\n// ─── CTA button ───────────────────────────────────────────────────────────────\n\nfunction CtaButton({\n btn,\n sectionBg,\n textHex,\n}: {\n btn: VideoSectionCtaButton;\n sectionBg: string;\n textHex: string;\n}) {\n const resolvedBg = resolveStackableColor(btn.background_color);\n const resolvedText = resolveStackableColor(btn.text_color);\n\n // apply_border defaults to true when undefined so the initial state is a solid button\n const applyBorder = btn.apply_border !== false;\n\n if (applyBorder) {\n const bg = resolvedBg || textHex;\n const text = resolvedText || sectionBg;\n return (\n <a\n href={btn.url ?? '#'}\n target={btn.open_in_new_tab ? '_blank' : '_self'}\n rel={btn.open_in_new_tab ? 'noopener noreferrer' : undefined}\n className=\"inline-flex items-center gap-2 px-6 py-3 rounded-full text-sm font-semibold transition-opacity hover:opacity-85 no-underline\"\n style={{\n backgroundColor: bg,\n color: text,\n border: `1.5px solid ${bg}`,\n }}\n >\n {btn.title}\n </a>\n );\n }\n\n // Text CTA style — no background, no border\n const text = resolvedText || textHex;\n return (\n <a\n href={btn.url ?? '#'}\n target={btn.open_in_new_tab ? '_blank' : '_self'}\n rel={btn.open_in_new_tab ? 'noopener noreferrer' : undefined}\n className=\"inline-flex items-center gap-1 text-sm font-semibold transition-opacity hover:opacity-70 no-underline\"\n style={{ color: text }}\n >\n {btn.title}\n <span aria-hidden=\"true\">&rarr;</span>\n </a>\n );\n}\n\nexport default VideoSection;\n","import React from 'react';\n\nexport interface FeatureBenefitStripItem {\n title?: string;\n description?: string;\n icon?: string;\n}\n\nexport interface FeatureBenefitStripProps {\n items?: FeatureBenefitStripItem[];\n icon_color?: string;\n divider_color?: string;\n background_color?: string;\n className?: string;\n}\n\nconst DEFAULT_STRIP_ITEMS: FeatureBenefitStripItem[] = [\n { title: 'Built to Perform', description: 'Rugged equipment engineered for the toughest conditions.' },\n { title: 'Backed by Experts', description: 'Global support from real people who understand your work.' },\n { title: 'Smarter Solutions', description: 'Technology that works as hard as you do.' },\n { title: 'Built Responsibly', description: 'Sustainable performance for a stronger tomorrow.' },\n];\n\nfunction StripIcon({ index, color, size = 36 }: { index: number; color: string; size?: number }) {\n const stroke = { stroke: color, strokeWidth: '1.5', strokeLinecap: 'round' as const, strokeLinejoin: 'round' as const, fill: 'none' };\n const icons = [\n <svg key=\"shield\" width={size} height={size} viewBox=\"0 0 24 24\" {...stroke}>\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"/>\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\"/><line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\"/>\n </svg>,\n <svg key=\"gear\" width={size} height={size} viewBox=\"0 0 24 24\" {...stroke}>\n <circle cx=\"12\" cy=\"12\" r=\"3\"/>\n <path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z\"/>\n </svg>,\n <svg key=\"chart\" width={size} height={size} viewBox=\"0 0 24 24\" {...stroke}>\n <rect x=\"2\" y=\"14\" width=\"4\" height=\"7\"/><rect x=\"9\" y=\"9\" width=\"4\" height=\"12\"/><rect x=\"16\" y=\"4\" width=\"4\" height=\"17\"/>\n <polyline points=\"2 6 9 1 14 6 22 2\"/>\n </svg>,\n <svg key=\"leaf\" width={size} height={size} viewBox=\"0 0 24 24\" {...stroke}>\n <path d=\"M2 22l14-14\"/>\n <path d=\"M18.5 4.5C16 2 12 2 9 5c-2.5 2.5-3 6-3 9 0 0 3.5 0 6-1.5 2.5-1.5 5-4.5 5-8.5 0 0-1.5 0-3 1\"/>\n </svg>,\n ];\n return icons[index % icons.length];\n}\n\nexport function FeatureBenefitStrip({\n items = DEFAULT_STRIP_ITEMS,\n icon_color = '#e8341a',\n divider_color = '#e5e7eb',\n background_color = '#ffffff',\n className,\n}: FeatureBenefitStripProps) {\n const resolvedItems = items?.length ? items : DEFAULT_STRIP_ITEMS;\n\n return (\n <div\n className={`w-full ${className ?? ''}`.trim()}\n style={{\n backgroundColor: background_color,\n borderTop: `1px solid ${divider_color}`,\n borderBottom: `1px solid ${divider_color}`,\n }}\n >\n <div style={{ display: 'flex', flexWrap: 'wrap', maxWidth: 1200, margin: '0 auto', padding: '0 16px' }}>\n {resolvedItems.map((item, idx) => (\n <div\n key={idx}\n style={{\n flex: '1 1 0',\n display: 'flex',\n alignItems: 'flex-start',\n gap: 16,\n padding: '28px 32px',\n borderRight: idx < resolvedItems.length - 1 ? `1px solid ${divider_color}` : 'none',\n minWidth: 180,\n }}\n >\n <div style={{ flexShrink: 0, marginTop: 2 }}>\n {item.icon ? (\n <img src={item.icon} alt={item.title} style={{ width: 36, height: 36, objectFit: 'contain' }} />\n ) : (\n <StripIcon index={idx} color={icon_color} />\n )}\n </div>\n <div>\n {item.title && (\n <div style={{ fontWeight: 700, fontSize: 13, color: '#111827', letterSpacing: '0.05em', marginBottom: 6, textTransform: 'uppercase' }}>\n {item.title}\n </div>\n )}\n {item.description && (\n <div style={{ fontSize: 13, color: '#6b7280', lineHeight: 1.55 }}>\n {item.description}\n </div>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n\nexport default FeatureBenefitStrip;\n","import React from 'react';\n\nexport interface FeatureBenefitItem {\n title?: string;\n description?: string;\n icon?: string;\n}\n\nexport interface FeatureBenefitProps {\n eyebrow?: string;\n heading?: string;\n subheading?: string;\n items?: FeatureBenefitItem[];\n columns?: 2 | 3 | 4 | string | number;\n icon_style?: 'plain' | 'circle' | 'square' | string;\n icon_color?: string;\n card_style?: 'none' | 'bordered' | 'elevated' | string;\n background_color?: string;\n className?: string;\n}\n\nconst DEFAULT_ITEMS: FeatureBenefitItem[] = [\n { title: 'Quality First', description: 'We never compromise on quality and safety.' },\n { title: 'Customer Focused', description: 'Your success is our mission every day.' },\n { title: 'Innovative Approach', description: 'Continuous improvement through smart ideas.' },\n { title: 'Global Reach', description: 'Trusted by customers around the world.' },\n];\n\nconst PALETTE = ['#7C3AED', '#2563EB', '#EA580C', '#16A34A'];\n\nfunction BenefitIcon({ index, color, iconStyle, size = 28 }: { index: number; color: string; iconStyle: string; size?: number }) {\n const stroke = { stroke: iconStyle === 'circle' || iconStyle === 'square' ? '#ffffff' : color, strokeWidth: '1.8', strokeLinecap: 'round' as const, strokeLinejoin: 'round' as const, fill: 'none' };\n const icons = [\n <svg key=\"shield\" width={size} height={size} viewBox=\"0 0 24 24\" {...stroke}>\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"/>\n <polyline points=\"9 12 11 14 15 10\"/>\n </svg>,\n <svg key=\"users\" width={size} height={size} viewBox=\"0 0 24 24\" {...stroke}>\n <path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"/>\n <circle cx=\"9\" cy=\"7\" r=\"4\"/>\n <path d=\"M23 21v-2a4 4 0 0 0-3-3.87\"/>\n <path d=\"M16 3.13a4 4 0 0 1 0 7.75\"/>\n </svg>,\n <svg key=\"bulb\" width={size} height={size} viewBox=\"0 0 24 24\" {...stroke}>\n <line x1=\"9\" y1=\"18\" x2=\"15\" y2=\"18\"/><line x1=\"10\" y1=\"22\" x2=\"14\" y2=\"22\"/>\n <path d=\"M12 2a7 7 0 0 1 7 7c0 2.38-1.19 4.47-3 5.74V17H8v-2.26C6.19 13.47 5 11.38 5 9a7 7 0 0 1 7-7z\"/>\n </svg>,\n <svg key=\"globe\" width={size} height={size} viewBox=\"0 0 24 24\" {...stroke}>\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n <line x1=\"2\" y1=\"12\" x2=\"22\" y2=\"12\"/>\n <path d=\"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z\"/>\n </svg>,\n ];\n return icons[index % icons.length];\n}\n\nexport function FeatureBenefit({\n eyebrow = 'WHY CHOOSE US',\n heading = 'Benefits that make a difference',\n subheading = '',\n items = DEFAULT_ITEMS,\n columns = 4,\n icon_style = 'plain',\n icon_color = '#e8341a',\n card_style = 'none',\n background_color = '#ffffff',\n className,\n}: FeatureBenefitProps) {\n const resolvedItems = items?.length ? items : DEFAULT_ITEMS;\n const cols = Number(columns) || 4;\n\n const gridStyle: React.CSSProperties = {\n display: 'grid',\n gridTemplateColumns: `repeat(${cols}, 1fr)`,\n gap: card_style === 'none' ? 32 : 16,\n marginTop: 40,\n };\n\n const getIconBg = (idx: number) => {\n const base = icon_color && icon_color !== '#e8341a' ? icon_color : PALETTE[idx % PALETTE.length];\n if (icon_style === 'circle') return { borderRadius: '50%', backgroundColor: base, padding: 12, display: 'inline-flex', alignItems: 'center', justifyContent: 'center' };\n if (icon_style === 'square') return { borderRadius: 10, backgroundColor: base, padding: 12, display: 'inline-flex', alignItems: 'center', justifyContent: 'center' };\n return { display: 'inline-flex', alignItems: 'center', justifyContent: 'center' };\n };\n\n const getCardStyle = (): React.CSSProperties => {\n if (card_style === 'bordered') return { border: '1px solid #e5e7eb', borderRadius: 12, padding: '28px 24px', backgroundColor: '#ffffff' };\n if (card_style === 'elevated') return { borderRadius: 12, padding: '28px 24px', backgroundColor: '#ffffff', boxShadow: '0 1px 4px rgba(0,0,0,0.08), 0 4px 16px rgba(0,0,0,0.06)' };\n return { padding: '4px 0' };\n };\n\n const resolvedIconColor = (idx: number) =>\n icon_style === 'circle' || icon_style === 'square'\n ? '#ffffff'\n : icon_color || PALETTE[idx % PALETTE.length];\n\n return (\n <div\n className={`w-full ${className ?? ''}`.trim()}\n style={{ backgroundColor: background_color, padding: '64px 24px' }}\n >\n <div style={{ maxWidth: 1200, margin: '0 auto' }}>\n {(eyebrow || heading || subheading) && (\n <div style={{ textAlign: 'center', marginBottom: 8 }}>\n {eyebrow && (\n <div style={{ color: '#e8341a', fontSize: 11, fontWeight: 700, letterSpacing: '0.18em', textTransform: 'uppercase', marginBottom: 12 }}>\n {eyebrow}\n </div>\n )}\n {heading && (\n <h2 style={{ color: '#111827', fontSize: '1.875rem', fontWeight: 800, lineHeight: 1.2, margin: '0 0 12px' }}>\n {heading}\n </h2>\n )}\n {subheading && (\n <p style={{ color: '#6b7280', fontSize: 15, lineHeight: 1.6, maxWidth: 560, margin: '0 auto' }}>\n {subheading}\n </p>\n )}\n </div>\n )}\n\n <div style={gridStyle}>\n {resolvedItems.map((item, idx) => (\n <div key={idx} style={getCardStyle()}>\n <div style={{ marginBottom: 16 }}>\n <div style={getIconBg(idx)}>\n {item.icon ? (\n <img\n src={item.icon}\n alt={item.title}\n style={{ width: 28, height: 28, objectFit: 'contain', display: 'block' }}\n />\n ) : (\n <BenefitIcon index={idx} color={resolvedIconColor(idx)} iconStyle={icon_style} />\n )}\n </div>\n </div>\n {item.title && (\n <div style={{ fontWeight: 700, fontSize: 15, color: '#111827', marginBottom: 8 }}>\n {item.title}\n </div>\n )}\n {item.description && (\n <div style={{ fontSize: 13.5, color: '#6b7280', lineHeight: 1.6 }}>\n {item.description}\n </div>\n )}\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n}\n\nexport default FeatureBenefit;\n","import React from 'react';\n\nexport interface FeatureBenefitDarkItem {\n title?: string;\n description?: string;\n icon?: string;\n}\n\nexport interface FeatureBenefitDarkProps {\n heading?: string;\n subheading?: string;\n items?: FeatureBenefitDarkItem[];\n columns?: 2 | 3 | 4 | string | number;\n background_color?: string;\n icon_color?: string;\n icon_style?: 'plain' | 'circle' | 'square' | string;\n className?: string;\n}\n\nconst DEFAULT_DARK_ITEMS: FeatureBenefitDarkItem[] = [\n { title: 'Enterprise Ready', description: 'Secure, scalable, and built for enterprise environments.' },\n { title: 'Cloud Optimized', description: 'Designed to run seamlessly in the cloud.' },\n { title: 'Secure by Design', description: 'Security built in at every layer of our platform.' },\n { title: 'Data Driven', description: 'Make better decisions with real-time insights.' },\n];\n\nfunction DarkIcon({ index, color, iconStyle, size = 32 }: { index: number; color: string; iconStyle: string; size?: number }) {\n const stroke = { stroke: iconStyle === 'circle' || iconStyle === 'square' ? '#ffffff' : color, strokeWidth: '1.5', strokeLinecap: 'round' as const, strokeLinejoin: 'round' as const, fill: 'none' };\n const icons = [\n <svg key=\"shield-check\" width={size} height={size} viewBox=\"0 0 24 24\" {...stroke}>\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"/>\n <polyline points=\"9 12 11 14 15 10\"/>\n </svg>,\n <svg key=\"cloud\" width={size} height={size} viewBox=\"0 0 24 24\" {...stroke}>\n <path d=\"M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z\"/>\n </svg>,\n <svg key=\"lock\" width={size} height={size} viewBox=\"0 0 24 24\" {...stroke}>\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\"/>\n <path d=\"M7 11V7a5 5 0 0 1 10 0v4\"/>\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill={iconStyle === 'circle' || iconStyle === 'square' ? '#ffffff' : color}/>\n </svg>,\n <svg key=\"people\" width={size} height={size} viewBox=\"0 0 24 24\" {...stroke}>\n <line x1=\"8\" y1=\"6\" x2=\"8\" y2=\"6\"/><line x1=\"12\" y1=\"6\" x2=\"12\" y2=\"6\"/><line x1=\"16\" y1=\"6\" x2=\"16\" y2=\"6\"/>\n <path d=\"M20 2H4a2 2 0 0 0-2 2v18l4-4h14a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z\"/>\n <line x1=\"8\" y1=\"10\" x2=\"16\" y2=\"10\"/><line x1=\"8\" y1=\"14\" x2=\"14\" y2=\"14\"/>\n </svg>,\n ];\n return icons[index % icons.length];\n}\n\nexport function FeatureBenefitDark({\n heading = '',\n subheading = '',\n items = DEFAULT_DARK_ITEMS,\n columns = 4,\n background_color = '#0f1f3d',\n icon_color = '#60a5fa',\n icon_style = 'plain',\n className,\n}: FeatureBenefitDarkProps) {\n const resolvedItems = items?.length ? items : DEFAULT_DARK_ITEMS;\n const cols = Number(columns) || 4;\n\n const getIconWrapStyle = (): React.CSSProperties => {\n if (icon_style === 'circle') return { width: 56, height: 56, borderRadius: '50%', backgroundColor: 'rgba(96,165,250,0.15)', display: 'flex', alignItems: 'center', justifyContent: 'center', marginBottom: 20 };\n if (icon_style === 'square') return { width: 56, height: 56, borderRadius: 10, backgroundColor: 'rgba(96,165,250,0.15)', display: 'flex', alignItems: 'center', justifyContent: 'center', marginBottom: 20 };\n return { marginBottom: 20 };\n };\n\n return (\n <div\n className={`w-full ${className ?? ''}`.trim()}\n style={{ backgroundColor: background_color, padding: '64px 24px' }}\n >\n <div style={{ maxWidth: 1200, margin: '0 auto' }}>\n {(heading || subheading) && (\n <div style={{ textAlign: 'center', marginBottom: 48 }}>\n {heading && (\n <h2 style={{ color: '#ffffff', fontSize: '1.875rem', fontWeight: 800, lineHeight: 1.2, margin: '0 0 12px' }}>\n {heading}\n </h2>\n )}\n {subheading && (\n <p style={{ color: '#93c5fd', fontSize: 15, lineHeight: 1.6, maxWidth: 560, margin: '0 auto' }}>\n {subheading}\n </p>\n )}\n </div>\n )}\n\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: `repeat(${cols}, 1fr)`,\n gap: 32,\n }}\n >\n {resolvedItems.map((item, idx) => (\n <div key={idx} style={{ textAlign: 'center', padding: '8px 16px' }}>\n <div style={{ display: 'flex', justifyContent: 'center' }}>\n <div style={getIconWrapStyle()}>\n {item.icon ? (\n <img\n src={item.icon}\n alt={item.title}\n style={{ width: 32, height: 32, objectFit: 'contain', display: 'block' }}\n />\n ) : (\n <DarkIcon index={idx} color={icon_color} iconStyle={icon_style} />\n )}\n </div>\n </div>\n {item.title && (\n <div style={{ fontWeight: 700, fontSize: 15, color: '#ffffff', marginBottom: 10 }}>\n {item.title}\n </div>\n )}\n {item.description && (\n <div style={{ fontSize: 13.5, color: '#93c5fd', lineHeight: 1.65 }}>\n {item.description}\n </div>\n )}\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n}\n\nexport default FeatureBenefitDark;\n","import React from 'react';\nimport Image from 'next/image';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport type BenefitWithImageIconPos = 'left' | 'top' | 'center' | 'right';\nexport type BenefitWithImageAlign = 'left' | 'center' | 'right';\n\nexport interface FeatureBenefitWithImageItem {\n title?: string;\n description?: string;\n icon?: string;\n}\n\nexport interface FeatureBenefitWithImageProps {\n eyebrow?: string;\n heading?: string;\n subheading?: string;\n heading_alignment?: BenefitWithImageAlign | string;\n image?: string;\n /** left: [img|heading|grid] right: [heading|grid|img] center: [heading|img|grid] */\n image_position?: 'left' | 'right' | 'center' | string;\n /** Icon position within each benefit item */\n item_icon_position?: BenefitWithImageIconPos | string;\n items?: FeatureBenefitWithImageItem[];\n icon_color?: StackableColorValue | string;\n background_color?: StackableColorValue | string;\n text_color?: StackableColorValue;\n className?: string;\n}\n\n// ─── Default content ──────────────────────────────────────────────────────────\n\nconst DEFAULT_IMAGE_ITEMS: FeatureBenefitWithImageItem[] = [\n { title: 'Safe & Reliable', description: 'Built to the highest safety standards.' },\n { title: 'People Focused', description: 'Respecting people and communities we serve.' },\n { title: 'Operational Excellence', description: 'Consistent performance with continuous improvement.' },\n { title: 'Environmental Care', description: 'Committed to reducing impact and protecting our planet.' },\n];\n\n// ─── SVG icons ────────────────────────────────────────────────────────────────\n\nfunction ImageItemIcon({ index, color, size = 22 }: { index: number; color: string; size?: number }) {\n const s = { stroke: color, strokeWidth: '1.8', strokeLinecap: 'round' as const, strokeLinejoin: 'round' as const, fill: 'none' };\n const icons = [\n <svg key=\"shield\" width={size} height={size} viewBox=\"0 0 24 24\" {...s}>\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"/>\n <polyline points=\"9 12 11 14 15 10\"/>\n </svg>,\n <svg key=\"users\" width={size} height={size} viewBox=\"0 0 24 24\" {...s}>\n <path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"/>\n <circle cx=\"9\" cy=\"7\" r=\"4\"/>\n <path d=\"M23 21v-2a4 4 0 0 0-3-3.87\"/>\n <path d=\"M16 3.13a4 4 0 0 1 0 7.75\"/>\n </svg>,\n <svg key=\"chart\" width={size} height={size} viewBox=\"0 0 24 24\" {...s}>\n <rect x=\"2\" y=\"14\" width=\"4\" height=\"7\"/>\n <rect x=\"9\" y=\"9\" width=\"4\" height=\"12\"/>\n <rect x=\"16\" y=\"4\" width=\"4\" height=\"17\"/>\n <polyline points=\"2 6 9 1 14 6 22 2\"/>\n </svg>,\n <svg key=\"leaf\" width={size} height={size} viewBox=\"0 0 24 24\" {...s}>\n <path d=\"M2 22l14-14\"/>\n <path d=\"M18.5 4.5C16 2 12 2 9 5c-2.5 2.5-3 6-3 9 0 0 3.5 0 6-1.5 2.5-1.5 5-4.5 5-8.5 0 0-1.5 0-3 1\"/>\n </svg>,\n ];\n return icons[index % icons.length];\n}\n\n// ─── Color helper — accepts StackableColorValue object or plain hex string ────\n\nfunction resolveColor(val: StackableColorValue | string | undefined, fallback: string): string {\n if (!val) return fallback;\n if (typeof val === 'string') return val;\n return resolveStackableColor(val as StackableColorValue) || fallback;\n}\n\n// ─── Per-item renderer ────────────────────────────────────────────────────────\n\nfunction renderItem(\n item: FeatureBenefitWithImageItem,\n idx: number,\n accentColor: string,\n iconPos: BenefitWithImageIconPos,\n textClr: string,\n) {\n const iconEl = item.icon ? (\n <Image\n src={item.icon}\n alt={item.title || ''}\n width={22}\n height={22}\n style={{ objectFit: 'contain' }}\n />\n ) : (\n <ImageItemIcon index={idx} color={accentColor} />\n );\n\n if (iconPos === 'top') {\n return (\n <div key={idx} style={{ display: 'flex', flexDirection: 'column', gap: 4 }}>\n <div style={{ marginBottom: 6 }}>{iconEl}</div>\n {item.title && <div style={{ fontWeight: 700, fontSize: 13.5, color: textClr, marginBottom: 3 }}>{item.title}</div>}\n {item.description && <div style={{ fontSize: 13, color: textClr, lineHeight: 1.55, opacity: 0.65 }}>{item.description}</div>}\n </div>\n );\n }\n\n if (iconPos === 'center') {\n return (\n <div key={idx} style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', textAlign: 'center', gap: 4 }}>\n <div style={{ marginBottom: 6 }}>{iconEl}</div>\n {item.title && <div style={{ fontWeight: 700, fontSize: 13.5, color: textClr, marginBottom: 3 }}>{item.title}</div>}\n {item.description && <div style={{ fontSize: 13, color: textClr, lineHeight: 1.55, opacity: 0.65 }}>{item.description}</div>}\n </div>\n );\n }\n\n // 'left' (default) or 'right'\n const isRight = iconPos === 'right';\n return (\n <div key={idx} style={{ display: 'flex', flexDirection: 'column', gap: 6 }}>\n <div style={{ display: 'flex', alignItems: 'center', gap: 8, flexDirection: isRight ? 'row-reverse' : 'row', marginBottom: 4 }}>\n <div style={{ flexShrink: 0 }}>{iconEl}</div>\n {item.title && <div style={{ fontWeight: 700, fontSize: 13.5, color: textClr }}>{item.title}</div>}\n </div>\n {item.description && <div style={{ fontSize: 13, color: textClr, lineHeight: 1.55, opacity: 0.65 }}>{item.description}</div>}\n </div>\n );\n}\n\n// ─── FeatureBenefitWithImage ──────────────────────────────────────────────────\n\nexport function FeatureBenefitWithImage({\n eyebrow = 'OUR PROMISE',\n heading = 'Powering progress responsibly',\n subheading,\n heading_alignment = 'left',\n image = '',\n image_position = 'left',\n item_icon_position = 'left',\n items = DEFAULT_IMAGE_ITEMS,\n icon_color = '#16a34a',\n background_color = '#ffffff',\n text_color,\n className,\n}: FeatureBenefitWithImageProps) {\n const resolvedItems = items?.length ? items : DEFAULT_IMAGE_ITEMS;\n const hasImage = Boolean(image?.trim());\n\n const bgColor = resolveColor(background_color, '#ffffff');\n const accentColor = resolveColor(icon_color, '#16a34a');\n const textClr = resolveColor(text_color, '#111827');\n\n const imgPos = (image_position as string)?.toLowerCase();\n const iconPos = ((item_icon_position as string)?.toLowerCase() || 'left') as BenefitWithImageIconPos;\n const hAlign = ((heading_alignment as string)?.toLowerCase() || 'left') as React.CSSProperties['textAlign'];\n\n // ── Image block ─────────────────────────────────────────────────────────────\n\n const imageBlock = (\n <div\n key=\"image\"\n style={{\n flex: '0 0 28%',\n minHeight: 300,\n position: 'relative',\n borderRadius: 14,\n overflow: 'hidden',\n alignSelf: 'stretch',\n }}\n >\n {hasImage ? (\n <Image\n src={image}\n alt={heading || 'Feature'}\n fill\n style={{ objectFit: 'cover', objectPosition: 'center' }}\n />\n ) : (\n <div style={{ width: '100%', height: '100%', minHeight: 300, backgroundColor: '#e5e7eb', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#9ca3af\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"/>\n <circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\"/>\n <polyline points=\"21 15 16 10 5 21\"/>\n </svg>\n </div>\n )}\n </div>\n );\n\n // ── Heading block ────────────────────────────────────────────────────────────\n\n const headingBlock = (\n <div key=\"heading\" style={{\n flex: '0 0 22%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n padding: '0 40px',\n textAlign: hAlign,\n }}>\n {eyebrow && (\n <div style={{ color: accentColor, fontSize: 11, fontWeight: 700, letterSpacing: '0.18em', textTransform: 'uppercase', marginBottom: 14 }}>\n {eyebrow}\n </div>\n )}\n {heading && (\n <h2 style={{ color: textClr, fontSize: '1.6rem', fontWeight: 800, lineHeight: 1.25, margin: '0 0 12px' }}>\n {heading}\n </h2>\n )}\n {subheading && (\n <p style={{ color: textClr, fontSize: 14, lineHeight: 1.6, margin: 0, opacity: 0.7 }}>\n {subheading}\n </p>\n )}\n </div>\n );\n\n // ── Grid block ───────────────────────────────────────────────────────────────\n\n const gridBlock = (\n <div key=\"grid\" style={{ flex: 1, display: 'flex', flexDirection: 'column', justifyContent: 'center', padding: '0 32px' }}>\n <div style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: '20px 32px' }}>\n {resolvedItems.map((item, idx) => renderItem(item, idx, accentColor, iconPos, textClr))}\n </div>\n </div>\n );\n\n // ── Column order based on image_position ─────────────────────────────────────\n // left: [img | heading | grid]\n // right: [heading | grid | img]\n // center: [heading | img | grid]\n let columns: React.ReactNode[];\n if (imgPos === 'center') {\n columns = [headingBlock, imageBlock, gridBlock];\n } else if (imgPos === 'right') {\n columns = [headingBlock, gridBlock, imageBlock];\n } else {\n columns = [imageBlock, headingBlock, gridBlock];\n }\n\n return (\n <div className={`${className ?? ''}`.trim()} style={{ backgroundColor: bgColor, padding: '48px 32px' }}>\n <div style={{ maxWidth: 1200, margin: '0 auto', display: 'flex', alignItems: 'stretch', gap: 0 }}>\n {columns}\n </div>\n </div>\n );\n}\n\nexport default FeatureBenefitWithImage;\n","import React from 'react';\n\n// ─── Types ───────────────────────────────────────────────────────────────────\n\nexport type FeatureBenefitVariant =\n | 'strip' // Image 1: icon-LEFT + text-RIGHT, red stroke, vertical dividers\n | 'cards' // Image 2: white bordered cards, colored icon bg squares, NO header\n | 'grid' // Image 3: eyebrow+heading header, icon-ABOVE-text, red, dividers\n | 'dark' // Image 4: dark navy bg, blue stroke icons, vertical dividers\n | 'circle' // Image 5: lavender bg, large circle icon containers, purple fill\n | 'image' // Image 6: photo + heading + 2×2 benefits grid\n | 'outline' // Image 7: large monochrome outline icons ABOVE text, dividers\n | 'colored'; // Image 8: gradient colored square icon containers ABOVE text\n\nexport interface FeatureBenefitFeature {\n title?: string;\n description?: string;\n /** Asset URL, or a Contentstack asset object — both are accepted. */\n icon?: string | { url?: string };\n}\n\nexport interface FeatureBenefitRendererProps {\n variant?: FeatureBenefitVariant | string;\n eyebrow?: string;\n heading?: string;\n subheading?: string;\n features?: FeatureBenefitFeature[];\n /** Asset URL, or a Contentstack asset object — both are accepted. */\n image?: string | { url?: string };\n icon_color?: string;\n background?: string;\n className?: string;\n}\n\n// ─── Default Content ─────────────────────────────────────────────────────────\n\nconst STRIP_DEFAULTS: FeatureBenefitFeature[] = [\n { title: 'Built to Perform', description: 'Rugged equipment engineered for the toughest conditions.' },\n { title: 'Backed by Experts', description: 'Global support from real people who understand your work.' },\n { title: 'Smarter Solutions', description: 'Technology that works as hard as you do.' },\n { title: 'Built Responsibly', description: 'Sustainable performance for a stronger tomorrow.' },\n];\n\nconst CARDS_DEFAULTS: FeatureBenefitFeature[] = [\n { title: 'Reliable & Durable', description: 'Built with premium materials for long-lasting use.' },\n { title: 'Expert Support', description: 'Our team is here to help you every step of the way.' },\n { title: 'High Performance', description: 'Optimized for speed, efficiency, and maximum output.' },\n { title: 'Sustainable Choice', description: 'Environmentally conscious and future-ready.' },\n];\n\nconst GRID_DEFAULTS: FeatureBenefitFeature[] = [\n { title: 'Quality First', description: 'We never compromise on quality and safety.' },\n { title: 'Customer Focused', description: 'Your success is our mission every day.' },\n { title: 'Innovative Approach', description: 'Continuous improvement through smart ideas.' },\n { title: 'Global Reach', description: 'Trusted by customers around the world.' },\n];\n\nconst DARK_DEFAULTS: FeatureBenefitFeature[] = [\n { title: 'Enterprise Ready', description: 'Secure, scalable, and built for enterprise environments.' },\n { title: 'Cloud Optimized', description: 'Designed to run seamlessly in the cloud.' },\n { title: 'Secure by Design', description: 'Security built in at every layer of our platform.' },\n { title: 'Data Driven', description: 'Make better decisions with real-time insights.' },\n];\n\nconst CIRCLE_DEFAULTS: FeatureBenefitFeature[] = [\n { title: 'Premium Quality', description: 'Top-grade materials and rigorous testing ensure the best.' },\n { title: 'Trusted by Many', description: 'Thousands of customers trust us to get the job done right.' },\n { title: 'Fast & Efficient', description: 'Engineered for speed and productivity in every use.' },\n { title: 'Better for Planet', description: 'Sustainable practices for a cleaner, greener future.' },\n];\n\nconst IMAGE_DEFAULTS: FeatureBenefitFeature[] = [\n { title: 'Safe & Reliable', description: 'Built to the highest safety standards.' },\n { title: 'People Focused', description: 'Respecting people and communities we serve.' },\n { title: 'Operational Excellence', description: 'Consistent performance with continuous improvement.' },\n { title: 'Environmental Care', description: 'Committed to reducing impact and protecting our planet.' },\n];\n\nconst OUTLINE_DEFAULTS: FeatureBenefitFeature[] = [\n { title: 'Strong & Durable', description: 'Built tough to withstand the harshest conditions.' },\n { title: '24/7 Support', description: 'Always here when you need us, anytime.' },\n { title: 'Smart Engineering', description: 'Innovative solutions designed for real-world challenges.' },\n { title: 'Worldwide Service', description: 'Global presence with local expertise you can count on.' },\n];\n\nconst COLORED_DEFAULTS: FeatureBenefitFeature[] = [\n { title: 'Dependable Quality', description: 'Every product is tested for performance and durability.' },\n { title: 'Customer First', description: 'We listen, we care, and we deliver real results.' },\n { title: 'Smarter Technology', description: 'Advanced technology to help you stay ahead.' },\n { title: 'Sustainable Future', description: 'Building a better tomorrow through responsible choices.' },\n];\n\n// ─── Resolve features (ignore blank items from empty Controls instances) ─────\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveIcon(icon?: string | { url?: string }): string {\n if (!icon) return '';\n if (typeof icon === 'string') return icon.trim();\n return typeof icon.url === 'string' ? icon.url.trim() : '';\n}\n\nfunction resolveFeatures(\n features: FeatureBenefitFeature[] | undefined,\n defaults: FeatureBenefitFeature[],\n): FeatureBenefitFeature[] {\n const filled = (features ?? []).filter(\n f => f.title?.trim() || f.description?.trim() || resolveIcon(f.icon),\n );\n return filled.length ? filled : defaults;\n}\n\n// ─── Stroke-based SVG Icons (outline style) ───────────────────────────────────\n\ntype IP = { size?: number; color?: string };\nconst S = (c: string) => ({ stroke: c, strokeWidth: 1.75, fill: 'none', strokeLinecap: 'round' as const, strokeLinejoin: 'round' as const });\n\n// Shield with X\nconst IcoShieldX = ({ size = 40, color = '#e8341a' }: IP) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" {...S(color)}>\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"/>\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\"/><line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\"/>\n </svg>\n);\n\n// Gear / cog\nconst IcoCog = ({ size = 40, color = '#e8341a' }: IP) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" {...S(color)}>\n <circle cx=\"12\" cy=\"12\" r=\"3\"/>\n <path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z\"/>\n </svg>\n);\n\n// Bar chart with trending line\nconst IcoBarTrend = ({ size = 40, color = '#e8341a' }: IP) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" {...S(color)}>\n <rect x=\"2\" y=\"14\" width=\"4\" height=\"7\" rx=\"0.5\"/>\n <rect x=\"9\" y=\"9\" width=\"4\" height=\"12\" rx=\"0.5\"/>\n <rect x=\"16\" y=\"4\" width=\"4\" height=\"17\" rx=\"0.5\"/>\n <polyline points=\"2 7 9 2 14 7 22 2\"/>\n <polyline points=\"19 2 22 2 22 5\"/>\n </svg>\n);\n\n// Leaf\nconst IcoLeaf = ({ size = 40, color = '#e8341a' }: IP) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" {...S(color)}>\n <path d=\"M2 22l13-13\"/>\n <path d=\"M19 5C17 2.5 12 2 9 5S6 13 6 16c0 0 4.5 0 7-2 2.5-2 5-5 5-9 0 0-1.5 0-3 1\"/>\n </svg>\n);\n\n// Shield with checkmark\nconst IcoShieldCheck = ({ size = 40, color = '#e8341a' }: IP) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" {...S(color)}>\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"/>\n <polyline points=\"9 12 11 14 15 10\"/>\n </svg>\n);\n\n// Users / people\nconst IcoUsers = ({ size = 40, color = '#e8341a' }: IP) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" {...S(color)}>\n <path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"/>\n <circle cx=\"9\" cy=\"7\" r=\"4\"/>\n <path d=\"M23 21v-2a4 4 0 0 0-3-3.87\"/>\n <path d=\"M16 3.13a4 4 0 0 1 0 7.75\"/>\n </svg>\n);\n\n// Lightbulb\nconst IcoBulb = ({ size = 40, color = '#e8341a' }: IP) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" {...S(color)}>\n <line x1=\"9\" y1=\"18\" x2=\"15\" y2=\"18\"/>\n <line x1=\"10\" y1=\"22\" x2=\"14\" y2=\"22\"/>\n <path d=\"M12 2a7 7 0 0 1 7 7c0 2.38-1.19 4.47-3 5.74V17H8v-2.26C6.19 13.47 5 11.38 5 9a7 7 0 0 1 7-7z\"/>\n </svg>\n);\n\n// Globe\nconst IcoGlobe = ({ size = 40, color = '#e8341a' }: IP) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" {...S(color)}>\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n <line x1=\"2\" y1=\"12\" x2=\"22\" y2=\"12\"/>\n <path d=\"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z\"/>\n </svg>\n);\n\n// Cloud\nconst IcoCloud = ({ size = 40, color = '#60a5fa' }: IP) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" {...S(color)}>\n <path d=\"M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z\"/>\n </svg>\n);\n\n// Lock / padlock\nconst IcoLock = ({ size = 40, color = '#60a5fa' }: IP) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" {...S(color)}>\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\"/>\n <path d=\"M7 11V7a5 5 0 0 1 10 0v4\"/>\n </svg>\n);\n\n// Sliders\nconst IcoSliders = ({ size = 40, color = '#60a5fa' }: IP) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" {...S(color)}>\n <line x1=\"4\" y1=\"21\" x2=\"4\" y2=\"14\"/><line x1=\"4\" y1=\"10\" x2=\"4\" y2=\"3\"/>\n <line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"12\"/><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"3\"/>\n <line x1=\"20\" y1=\"21\" x2=\"20\" y2=\"16\"/><line x1=\"20\" y1=\"12\" x2=\"20\" y2=\"3\"/>\n <line x1=\"1\" y1=\"14\" x2=\"7\" y2=\"14\"/><line x1=\"9\" y1=\"8\" x2=\"15\" y2=\"8\"/>\n <line x1=\"17\" y1=\"16\" x2=\"23\" y2=\"16\"/>\n </svg>\n);\n\n// Headset\nconst IcoHeadset = ({ size = 40, color = '#1e293b' }: IP) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" {...S(color)}>\n <path d=\"M3 18v-6a9 9 0 0 1 18 0v6\"/>\n <path d=\"M21 19a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3z\"/>\n <path d=\"M3 19a2 2 0 0 0 2 2h1a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2H3z\"/>\n </svg>\n);\n\n// ─── Filled SVG Icons (for circle variant) ───────────────────────────────────\n\n// Diamond gem\nconst IcoDiamondFill = ({ size = 36, color = '#7c3aed' }: IP) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\">\n <polygon points=\"12,2 22,9.5 12,22 2,9.5\" fill={color}/>\n <line x1=\"2\" y1=\"9.5\" x2=\"22\" y2=\"9.5\" stroke=\"rgba(255,255,255,0.25)\" strokeWidth=\"1\"/>\n <line x1=\"6.5\" y1=\"2\" x2=\"2\" y2=\"9.5\" stroke=\"rgba(255,255,255,0.15)\" strokeWidth=\"0.5\"/>\n <line x1=\"17.5\" y1=\"2\" x2=\"22\" y2=\"9.5\" stroke=\"rgba(255,255,255,0.15)\" strokeWidth=\"0.5\"/>\n </svg>\n);\n\n// Two people filled\nconst IcoUsersFill = ({ size = 36, color = '#7c3aed' }: IP) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\">\n <circle cx=\"9\" cy=\"7\" r=\"4\" fill={color}/>\n <path d=\"M1 20v-1a8 8 0 0 1 16 0v1H1z\" fill={color}/>\n <circle cx=\"17.5\" cy=\"8\" r=\"3\" fill={color} opacity=\"0.55\"/>\n <path d=\"M14 20v-1a6 6 0 0 1 9 0v1\" fill={color} opacity=\"0.55\"/>\n </svg>\n);\n\n// Rocket filled\nconst IcoRocketFill = ({ size = 36, color = '#7c3aed' }: IP) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\">\n <path d=\"M12 2C9 2 5.5 7.5 5.5 13H9l1.5 5h3L15 13h3.5C18.5 7.5 15 2 12 2z\" fill={color}/>\n <circle cx=\"12\" cy=\"9.5\" r=\"2\" fill=\"rgba(255,255,255,0.35)\"/>\n <path d=\"M9 13l-2.5 6H9l1.5-1\" fill={color} opacity=\"0.65\"/>\n <path d=\"M15 13l2.5 6H15l-1.5-1\" fill={color} opacity=\"0.65\"/>\n </svg>\n);\n\n// Heart filled\nconst IcoHeartFill = ({ size = 36, color = '#7c3aed' }: IP) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\">\n <path d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\" fill={color}/>\n </svg>\n);\n\n// ─── Colored variant icons (white icons for colored bg containers) ────────────\n\nconst IcoShieldCheckWhite = ({ size = 30 }: { size?: number }) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"/>\n <polyline points=\"9 12 11 14 15 10\"/>\n </svg>\n);\nconst IcoUsersWhite = ({ size = 30 }: { size?: number }) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"/>\n <circle cx=\"9\" cy=\"7\" r=\"4\"/>\n <path d=\"M23 21v-2a4 4 0 0 0-3-3.87\"/>\n <path d=\"M16 3.13a4 4 0 0 1 0 7.75\"/>\n </svg>\n);\nconst IcoZapWhite = ({ size = 30 }: { size?: number }) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"white\" stroke=\"none\">\n <polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"/>\n </svg>\n);\nconst IcoLeafWhite = ({ size = 30 }: { size?: number }) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M2 22l13-13\"/>\n <path d=\"M19 5C17 2.5 12 2 9 5S6 13 6 16c0 0 4.5 0 7-2 2.5-2 5-5 5-9 0 0-1.5 0-3 1\"/>\n </svg>\n);\n\n// ─── Icon sets per variant ────────────────────────────────────────────────────\n\nconst STRIP_ICONS = [IcoShieldX, IcoCog, IcoBarTrend, IcoLeaf];\nconst CARDS_ICONS = [IcoShieldCheck, IcoHeadset, IcoCog, IcoGlobe];\nconst GRID_ICONS = [IcoShieldCheck, IcoUsers, IcoBulb, IcoGlobe];\nconst DARK_ICONS = [IcoShieldCheck, IcoCloud, IcoLock, IcoSliders];\nconst CIRCLE_ICONS = [IcoDiamondFill, IcoUsersFill, IcoRocketFill, IcoHeartFill];\nconst IMAGE_ICONS = [IcoShieldCheck, IcoUsers, IcoBarTrend, IcoLeaf];\nconst OUTLINE_ICONS = [IcoShieldCheck, IcoHeadset, IcoCog, IcoGlobe];\nconst COLORED_ICONS_WHITE = [IcoShieldCheckWhite, IcoUsersWhite, IcoZapWhite, IcoLeafWhite];\n\n// Cards variant: light-tint bg + matching icon color per slot\nconst CARDS_THEMES = [\n { bg: '#fef2f2', iconColor: '#ef4444' },\n { bg: '#eff6ff', iconColor: '#3b82f6' },\n { bg: '#fffbeb', iconColor: '#f59e0b' },\n { bg: '#f0fdf4', iconColor: '#22c55e' },\n];\n\n// Colored variant: gradient backgrounds\nconst COLORED_THEMES = [\n { gradient: 'linear-gradient(135deg,#7c3aed 0%,#8b5cf6 100%)' },\n { gradient: 'linear-gradient(135deg,#1d4ed8 0%,#3b82f6 100%)' },\n { gradient: 'linear-gradient(135deg,#ea580c 0%,#f97316 100%)' },\n { gradient: 'linear-gradient(135deg,#16a34a 0%,#22c55e 100%)' },\n];\n\n// ─── Shared: render icon or uploaded image ────────────────────────────────────\n\nfunction FeatureIcon({ item, idx, icons, color, size }: {\n item: FeatureBenefitFeature; idx: number;\n icons: React.ComponentType<IP>[];\n color?: string; size?: number;\n}) {\n const Icon = icons[idx % icons.length];\n const iconSrc = resolveIcon(item.icon);\n return iconSrc\n ? <img src={iconSrc} alt={item.title} style={{ width: size ?? 40, height: size ?? 40, objectFit: 'contain' }}/>\n : <Icon size={size} color={color}/>;\n}\n\n// ─── VARIANT 1: Strip ────────────────────────────────────────────────────────\n// Image 1: icon-left + text-right, red stroke, vertical dividers\n\nfunction StripVariant({ features, icon_color = '#e8341a', className }: FeatureBenefitRendererProps) {\n const items = resolveFeatures(features, STRIP_DEFAULTS);\n return (\n <div className={`${className ?? ''}`.trim()} style={{ backgroundColor: '#fff', borderTop: '1px solid #e5e7eb', borderBottom: '1px solid #e5e7eb' }}>\n <div style={{ display: 'flex', maxWidth: 1200, margin: '0 auto' }}>\n {items.map((item, i) => (\n <div key={i} style={{\n flex: 1, display: 'flex', alignItems: 'flex-start', gap: 18,\n padding: '36px 28px',\n borderRight: i < items.length - 1 ? '1px solid #e5e7eb' : 'none',\n }}>\n <div style={{ flexShrink: 0, marginTop: 2 }}>\n <FeatureIcon item={item} idx={i} icons={STRIP_ICONS} color={icon_color} size={42}/>\n </div>\n <div>\n <div style={{ fontWeight: 700, fontSize: 14, color: '#111827', marginBottom: 6, lineHeight: 1.3 }}>\n {item.title}\n </div>\n <div style={{ fontSize: 13, color: '#6b7280', lineHeight: 1.6 }}>\n {item.description}\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n\n// ─── VARIANT 2: Cards ────────────────────────────────────────────────────────\n// Image 2: white bordered cards, colored icon bg squares, NO section header\n\nfunction CardsVariant({ features, className }: FeatureBenefitRendererProps) {\n const items = resolveFeatures(features, CARDS_DEFAULTS);\n return (\n <div className={`${className ?? ''}`.trim()} style={{ backgroundColor: '#f8fafc', padding: '48px 32px' }}>\n <div style={{ display: 'grid', gridTemplateColumns: `repeat(${items.length}, 1fr)`, gap: 16, maxWidth: 1140, margin: '0 auto' }}>\n {items.map((item, i) => {\n const theme = CARDS_THEMES[i % CARDS_THEMES.length];\n const Icon = CARDS_ICONS[i % CARDS_ICONS.length];\n const iconSrc = resolveIcon(item.icon);\n return (\n <div key={i} style={{\n backgroundColor: '#fff', borderRadius: 14,\n border: '1px solid #e5e7eb', padding: '28px 22px',\n display: 'flex', flexDirection: 'column',\n }}>\n <div style={{\n width: 52, height: 52, borderRadius: 12,\n backgroundColor: theme.bg, display: 'flex',\n alignItems: 'center', justifyContent: 'center', marginBottom: 20,\n border: `1px solid ${theme.iconColor}18`,\n }}>\n {iconSrc\n ? <img src={iconSrc} alt=\"\" style={{ width: 26, height: 26, objectFit: 'contain' }}/>\n : <Icon size={26} color={theme.iconColor}/>\n }\n </div>\n <div style={{ fontWeight: 700, fontSize: 15, color: '#111827', marginBottom: 10, lineHeight: 1.35 }}>\n {item.title}\n </div>\n <div style={{ fontSize: 13, color: '#6b7280', lineHeight: 1.65 }}>\n {item.description}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\n// ─── VARIANT 3: Grid with header ─────────────────────────────────────────────\n// Image 3: eyebrow + heading, icon-ABOVE-text, red icons, vertical dividers\n\nfunction GridVariant({ features, eyebrow = 'WHY CHOOSE US', heading = 'Benefits that make a difference', icon_color = '#e8341a', className }: FeatureBenefitRendererProps) {\n const items = resolveFeatures(features, GRID_DEFAULTS);\n return (\n <div className={`${className ?? ''}`.trim()} style={{ backgroundColor: '#f8f9fb', padding: '56px 32px' }}>\n <div style={{ maxWidth: 1140, margin: '0 auto' }}>\n {(eyebrow || heading) && (\n <div style={{ textAlign: 'center', marginBottom: 48 }}>\n {eyebrow && (\n <div style={{ fontSize: 11, fontWeight: 700, letterSpacing: '0.18em', textTransform: 'uppercase', color: icon_color, marginBottom: 12 }}>\n {eyebrow}\n </div>\n )}\n {heading && (\n <h2 style={{ fontSize: 30, fontWeight: 800, color: '#111827', lineHeight: 1.25, margin: 0, letterSpacing: '-0.01em' }}>\n {heading}\n </h2>\n )}\n </div>\n )}\n <div style={{ display: 'flex' }}>\n {items.map((item, i) => {\n const iconSrc = resolveIcon(item.icon);\n return (\n <div key={i} style={{\n flex: 1,\n padding: '32px 28px',\n borderRight: i < items.length - 1 ? '1px solid #e5e7eb' : 'none',\n }}>\n <div style={{ marginBottom: 18 }}>\n {iconSrc\n ? <img src={iconSrc} alt=\"\" style={{ width: 44, height: 44, objectFit: 'contain' }}/>\n : <FeatureIcon item={item} idx={i} icons={GRID_ICONS} color={icon_color} size={44}/>\n }\n </div>\n <div style={{ fontWeight: 700, fontSize: 15, color: '#111827', marginBottom: 8, lineHeight: 1.35 }}>\n {item.title}\n </div>\n <div style={{ fontSize: 13, color: '#6b7280', lineHeight: 1.65 }}>\n {item.description}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n );\n}\n\n// ─── VARIANT 4: Dark ─────────────────────────────────────────────────────────\n// Image 4: true dark navy bg, blue stroke icons, vertical dividers\n\nfunction DarkVariant({ features, eyebrow, heading, icon_color = '#60a5fa', className }: FeatureBenefitRendererProps) {\n const items = resolveFeatures(features, DARK_DEFAULTS);\n const DARK_BG = '#0b1628';\n const DIVIDER = 'rgba(255,255,255,0.08)';\n return (\n <div className={`${className ?? ''}`.trim()} style={{ backgroundColor: DARK_BG, padding: '56px 32px' }}>\n <div style={{ maxWidth: 1140, margin: '0 auto' }}>\n {(eyebrow || heading) && (\n <div style={{ textAlign: 'center', marginBottom: 48 }}>\n {eyebrow && <div style={{ fontSize: 11, fontWeight: 700, letterSpacing: '0.18em', textTransform: 'uppercase', color: icon_color, marginBottom: 12 }}>{eyebrow}</div>}\n {heading && <h2 style={{ fontSize: 28, fontWeight: 800, color: '#fff', lineHeight: 1.3, margin: 0 }}>{heading}</h2>}\n </div>\n )}\n <div style={{ display: 'flex' }}>\n {items.map((item, i) => {\n const iconSrc = resolveIcon(item.icon);\n return (\n <div key={i} style={{\n flex: 1,\n padding: '36px 28px',\n borderRight: i < items.length - 1 ? `1px solid ${DIVIDER}` : 'none',\n }}>\n <div style={{ marginBottom: 20 }}>\n {iconSrc\n ? <img src={iconSrc} alt=\"\" style={{ width: 44, height: 44, objectFit: 'contain', filter: 'brightness(0) invert(1)' }}/>\n : <FeatureIcon item={item} idx={i} icons={DARK_ICONS} color={icon_color} size={44}/>\n }\n </div>\n <div style={{ fontWeight: 700, fontSize: 15, color: '#f0f6ff', marginBottom: 10, lineHeight: 1.35 }}>\n {item.title}\n </div>\n <div style={{ fontSize: 13, color: '#4a6a8a', lineHeight: 1.65 }}>\n {item.description}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n );\n}\n\n// ─── VARIANT 5: Circle ───────────────────────────────────────────────────────\n// Image 5: lavender bg, large circle containers, purple filled icons, dividers\n\nfunction CircleVariant({ features, className }: FeatureBenefitRendererProps) {\n const items = resolveFeatures(features, CIRCLE_DEFAULTS);\n const LAVENDER_BG = '#f0ebff';\n const CIRCLE_BG = '#e4d9fb';\n const ICON_COLOR = '#7c3aed';\n const DIVIDER = 'rgba(124,58,237,0.12)';\n\n return (\n <div className={`${className ?? ''}`.trim()} style={{ backgroundColor: LAVENDER_BG, padding: '52px 32px' }}>\n <div style={{ display: 'flex', maxWidth: 1140, margin: '0 auto' }}>\n {items.map((item, i) => {\n const iconSrc = resolveIcon(item.icon);\n return (\n <div key={i} style={{\n flex: 1,\n display: 'flex', flexDirection: 'column', alignItems: 'center', textAlign: 'center',\n padding: '32px 20px',\n borderRight: i < items.length - 1 ? `1px solid ${DIVIDER}` : 'none',\n }}>\n <div style={{\n width: 88, height: 88, borderRadius: '50%',\n backgroundColor: CIRCLE_BG,\n display: 'flex', alignItems: 'center', justifyContent: 'center',\n marginBottom: 24,\n }}>\n {iconSrc\n ? <img src={iconSrc} alt=\"\" style={{ width: 40, height: 40, objectFit: 'contain' }}/>\n : <FeatureIcon item={item} idx={i} icons={CIRCLE_ICONS} color={ICON_COLOR} size={38}/>\n }\n </div>\n <div style={{ fontWeight: 700, fontSize: 15, color: '#111827', marginBottom: 10, lineHeight: 1.35 }}>\n {item.title}\n </div>\n <div style={{ fontSize: 13, color: '#6b7280', lineHeight: 1.65 }}>\n {item.description}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\n// ─── VARIANT 6: Image + Benefits ─────────────────────────────────────────────\n// Image 6: photo LEFT, eyebrow+heading CENTER, 2×2 grid RIGHT\n\nfunction ImageVariant({ features, eyebrow = 'OUR PROMISE', heading = 'Powering progress responsibly', image, icon_color = '#16a34a', className }: FeatureBenefitRendererProps) {\n const items = resolveFeatures(features, IMAGE_DEFAULTS);\n const imageSrc = resolveIcon(image);\n const hasImage = Boolean(imageSrc);\n\n return (\n <div className={`${className ?? ''}`.trim()} style={{ backgroundColor: '#f8fafc', padding: '40px 32px' }}>\n <div style={{ maxWidth: 1140, margin: '0 auto', display: 'flex', alignItems: 'center', gap: 36 }}>\n\n {/* Photo */}\n <div style={{ flexShrink: 0, width: 300, height: 320, borderRadius: 16, overflow: 'hidden', position: 'relative' }}>\n {hasImage ? (\n <img src={imageSrc} alt={heading} style={{ width: '100%', height: '100%', objectFit: 'cover' }}/>\n ) : (\n <div style={{\n width: '100%', height: '100%',\n background: 'linear-gradient(160deg,#0f4c35 0%,#1a7a45 35%,#2d9e5e 60%,#3db870 80%,#5ccf8a 100%)',\n display: 'flex', flexDirection: 'column', justifyContent: 'flex-end', padding: 20,\n position: 'relative', overflow: 'hidden',\n }}>\n {/* Sky gradient overlay */}\n <div style={{ position: 'absolute', top: 0, left: 0, right: 0, height: '40%', background: 'linear-gradient(180deg,#87ceeb88 0%,transparent 100%)' }}/>\n {/* Decorative turbine silhouettes */}\n <svg viewBox=\"0 0 300 320\" style={{ position: 'absolute', inset: 0, width: '100%', height: '100%', opacity: 0.2 }}>\n <line x1=\"80\" x2=\"80\" y1=\"320\" y2=\"100\" stroke=\"white\" strokeWidth=\"5\"/>\n <line x1=\"80\" x2=\"50\" y1=\"100\" y2=\"65\" stroke=\"white\" strokeWidth=\"3\"/>\n <line x1=\"80\" x2=\"110\" y1=\"100\" y2=\"65\" stroke=\"white\" strokeWidth=\"3\"/>\n <line x1=\"80\" x2=\"55\" y1=\"100\" y2=\"140\" stroke=\"white\" strokeWidth=\"3\"/>\n <line x1=\"200\" x2=\"200\" y1=\"320\" y2=\"120\" stroke=\"white\" strokeWidth=\"5\"/>\n <line x1=\"200\" x2=\"170\" y1=\"120\" y2=\"85\" stroke=\"white\" strokeWidth=\"3\"/>\n <line x1=\"200\" x2=\"230\" y1=\"120\" y2=\"85\" stroke=\"white\" strokeWidth=\"3\"/>\n <line x1=\"200\" x2=\"175\" y1=\"120\" y2=\"160\" stroke=\"white\" strokeWidth=\"3\"/>\n </svg>\n </div>\n )}\n </div>\n\n {/* Heading section */}\n <div style={{ flexShrink: 0, width: 220 }}>\n {eyebrow && (\n <div style={{ fontSize: 11, fontWeight: 700, letterSpacing: '0.18em', textTransform: 'uppercase', color: icon_color, marginBottom: 14 }}>\n {eyebrow}\n </div>\n )}\n {heading && (\n <h2 style={{ fontSize: 26, fontWeight: 800, color: '#111827', lineHeight: 1.25, margin: 0, letterSpacing: '-0.01em' }}>\n {heading}\n </h2>\n )}\n </div>\n\n {/* 2×2 benefits grid */}\n <div style={{ flex: 1, display: 'grid', gridTemplateColumns: '1fr 1fr', gap: '18px 28px' }}>\n {items.map((item, i) => {\n const Icon = IMAGE_ICONS[i % IMAGE_ICONS.length];\n const iconSrc = resolveIcon(item.icon);\n return (\n <div key={i}>\n <div style={{ display: 'flex', alignItems: 'center', gap: 10, marginBottom: 5 }}>\n <div style={{ flexShrink: 0 }}>\n {iconSrc ? <img src={iconSrc} alt=\"\" style={{ width: 20, height: 20, objectFit: 'contain' }}/> : <Icon size={20} color={icon_color}/>}\n </div>\n <span style={{ fontWeight: 700, fontSize: 13.5, color: '#111827' }}>{item.title}</span>\n </div>\n <div style={{ fontSize: 12.5, color: '#6b7280', lineHeight: 1.6, paddingLeft: 30 }}>\n {item.description}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n );\n}\n\n// ─── VARIANT 7: Outline ───────────────────────────────────────────────────────\n// Image 7: large monochrome outline icons ABOVE text, dividers, white bg\n\nfunction OutlineVariant({ features, className }: FeatureBenefitRendererProps) {\n const items = resolveFeatures(features, OUTLINE_DEFAULTS);\n const ICON_COLOR = '#1e293b';\n return (\n <div className={`${className ?? ''}`.trim()} style={{ backgroundColor: '#fff', borderTop: '1px solid #e5e7eb', borderBottom: '1px solid #e5e7eb' }}>\n <div style={{ display: 'flex', maxWidth: 1140, margin: '0 auto' }}>\n {items.map((item, i) => {\n const iconSrc = resolveIcon(item.icon);\n return (\n <div key={i} style={{\n flex: 1,\n display: 'flex', flexDirection: 'column',\n padding: '40px 28px',\n borderRight: i < items.length - 1 ? '1px solid #e5e7eb' : 'none',\n }}>\n <div style={{ marginBottom: 22 }}>\n {iconSrc\n ? <img src={iconSrc} alt=\"\" style={{ width: 56, height: 56, objectFit: 'contain' }}/>\n : <FeatureIcon item={item} idx={i} icons={OUTLINE_ICONS} color={ICON_COLOR} size={56}/>\n }\n </div>\n <div style={{ fontWeight: 700, fontSize: 15, color: '#111827', marginBottom: 8, lineHeight: 1.35 }}>\n {item.title}\n </div>\n <div style={{ fontSize: 13, color: '#6b7280', lineHeight: 1.65 }}>\n {item.description}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\n// ─── VARIANT 8: Colored ───────────────────────────────────────────────────────\n// Image 8: gradient colored square icon containers ABOVE text, dividers\n\nfunction ColoredVariant({ features, className }: FeatureBenefitRendererProps) {\n const items = resolveFeatures(features, COLORED_DEFAULTS);\n return (\n <div className={`${className ?? ''}`.trim()} style={{ backgroundColor: '#f5f5f7', borderTop: '1px solid #e5e7eb', borderBottom: '1px solid #e5e7eb' }}>\n <div style={{ display: 'flex', maxWidth: 1140, margin: '0 auto' }}>\n {items.map((item, i) => {\n const theme = COLORED_THEMES[i % COLORED_THEMES.length];\n const IconWhite = COLORED_ICONS_WHITE[i % COLORED_ICONS_WHITE.length];\n const iconSrc = resolveIcon(item.icon);\n return (\n <div key={i} style={{\n flex: 1,\n display: 'flex', flexDirection: 'column',\n padding: '40px 28px',\n borderRight: i < items.length - 1 ? '1px solid #e0e0e0' : 'none',\n }}>\n <div style={{\n width: 68, height: 68, borderRadius: 18,\n background: theme.gradient,\n display: 'flex', alignItems: 'center', justifyContent: 'center',\n marginBottom: 22,\n boxShadow: '0 4px 14px rgba(0,0,0,0.12)',\n }}>\n {iconSrc\n ? <img src={iconSrc} alt=\"\" style={{ width: 30, height: 30, objectFit: 'contain', filter: 'brightness(0) invert(1)' }}/>\n : <IconWhite size={30}/>\n }\n </div>\n <div style={{ fontWeight: 700, fontSize: 15, color: '#111827', marginBottom: 8, lineHeight: 1.35 }}>\n {item.title}\n </div>\n <div style={{ fontSize: 13, color: '#6b7280', lineHeight: 1.65 }}>\n {item.description}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\n// ─── FeatureBenefitRenderer ───────────────────────────────────────────────────\n\nexport function FeatureBenefitRenderer({\n variant = 'strip',\n className,\n ...props\n}: FeatureBenefitRendererProps) {\n switch (variant) {\n case 'cards': return <CardsVariant {...props} className={className}/>;\n case 'grid': return <GridVariant {...props} className={className}/>;\n case 'dark': return <DarkVariant {...props} className={className}/>;\n case 'circle': return <CircleVariant {...props} className={className}/>;\n case 'image': return <ImageVariant {...props} className={className}/>;\n case 'outline': return <OutlineVariant {...props} className={className}/>;\n case 'colored': return <ColoredVariant {...props} className={className}/>;\n default: return <StripVariant {...props} className={className}/>;\n }\n}\n\nexport default FeatureBenefitRenderer;\n","import React from 'react';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport type StandardBenefitIconPos = 'left' | 'right' | 'top' | 'center';\nexport type StandardBenefitLayout = 'plain' | 'card';\nexport type StandardBenefitAlign = 'left' | 'center' | 'right';\n\nexport interface StandardBenefitItem {\n title?: string;\n description?: string;\n /** Asset URL, or a Contentstack asset object — both are accepted. */\n icon?: string | { url?: string };\n}\n\nexport interface StandardBenefitProps {\n heading?: string;\n subheading?: string;\n heading_alignment?: StandardBenefitAlign | string;\n icon_position?: StandardBenefitIconPos | string;\n /** Alignment of icon + text within each item column (applies when icon_position is top or center) */\n item_alignment?: StandardBenefitAlign | string;\n layout?: StandardBenefitLayout | string;\n background_color?: StackableColorValue;\n icon_color?: StackableColorValue;\n text_color?: StackableColorValue;\n items?: StandardBenefitItem[];\n className?: string;\n}\n\n// ─── Default content ──────────────────────────────────────────────────────────\n\nconst DEFAULT_ITEMS: StandardBenefitItem[] = [\n { title: 'Quality First', description: 'We never compromise on quality and safety.' },\n { title: 'Customer Focused', description: 'Your success is our mission every day.' },\n { title: 'Innovative Approach', description: 'Continuous improvement through smart ideas.' },\n { title: 'Global Reach', description: 'Trusted by customers around the world.' },\n];\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveIcon(icon?: string | { url?: string }): string {\n if (!icon) return '';\n if (typeof icon === 'string') return icon.trim();\n return typeof icon.url === 'string' ? icon.url.trim() : '';\n}\n\nfunction resolveItems(items?: StandardBenefitItem[]): StandardBenefitItem[] {\n const filled = (items ?? []).filter(i => i.title?.trim() || i.description?.trim() || resolveIcon(i.icon));\n return filled.length ? filled : DEFAULT_ITEMS;\n}\n\n// ─── SVG icons ────────────────────────────────────────────────────────────────\n\ntype IP = { size?: number; color?: string };\nconst S = (c: string) => ({\n stroke: c, strokeWidth: 1.75, fill: 'none',\n strokeLinecap: 'round' as const, strokeLinejoin: 'round' as const,\n});\n\nconst IcoShieldCheck = ({ size = 40, color = '#e8341a' }: IP) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" {...S(color)}>\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"/>\n <polyline points=\"9 12 11 14 15 10\"/>\n </svg>\n);\nconst IcoUsers = ({ size = 40, color = '#e8341a' }: IP) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" {...S(color)}>\n <path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"/>\n <circle cx=\"9\" cy=\"7\" r=\"4\"/>\n <path d=\"M23 21v-2a4 4 0 0 0-3-3.87\"/>\n <path d=\"M16 3.13a4 4 0 0 1 0 7.75\"/>\n </svg>\n);\nconst IcoBulb = ({ size = 40, color = '#e8341a' }: IP) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" {...S(color)}>\n <line x1=\"9\" y1=\"18\" x2=\"15\" y2=\"18\"/><line x1=\"10\" y1=\"22\" x2=\"14\" y2=\"22\"/>\n <path d=\"M12 2a7 7 0 0 1 7 7c0 2.38-1.19 4.47-3 5.74V17H8v-2.26C6.19 13.47 5 11.38 5 9a7 7 0 0 1 7-7z\"/>\n </svg>\n);\nconst IcoGlobe = ({ size = 40, color = '#e8341a' }: IP) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" {...S(color)}>\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n <line x1=\"2\" y1=\"12\" x2=\"22\" y2=\"12\"/>\n <path d=\"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z\"/>\n </svg>\n);\n\nconst ICONS = [IcoShieldCheck, IcoUsers, IcoBulb, IcoGlobe];\n\nfunction ItemIcon({ item, idx, color, size }: { item: StandardBenefitItem; idx: number; color: string; size: number }) {\n const Icon = ICONS[idx % ICONS.length];\n const iconSrc = resolveIcon(item.icon);\n return iconSrc\n ? <img src={iconSrc} alt={item.title} style={{ width: size, height: size, objectFit: 'contain' }}/>\n : <Icon size={size} color={color}/>;\n}\n\n// ─── StandardBenefit ──────────────────────────────────────────────────────────\n\nexport function StandardBenefit({\n heading,\n subheading,\n heading_alignment = 'center',\n icon_position = 'center',\n item_alignment,\n layout = 'plain',\n background_color,\n icon_color,\n text_color,\n items: itemsProp,\n className,\n}: StandardBenefitProps) {\n const items = resolveItems(itemsProp);\n const bgColor = resolveStackableColor(background_color) || '#f8f9fb';\n const iconColor = resolveStackableColor(icon_color) || '#e8341a';\n const textColor = resolveStackableColor(text_color);\n const titleColor = textColor || '#111827';\n const bodyColor = textColor || '#6b7280';\n\n const pos = (icon_position as string)?.toLowerCase() as StandardBenefitIconPos;\n const isCard = (layout as string) === 'card';\n\n // When icon is left or right, items are laid out in a row (icon + text side by side)\n const isRow = pos === 'left' || pos === 'right';\n\n const hAlign = ((heading_alignment as string) || 'center') as React.CSSProperties['textAlign'];\n\n // item_alignment controls icon+text alignment within each column item.\n // For left/right icon positions the row direction makes it irrelevant.\n // Default: 'center' when icon_position is 'center', otherwise 'left'.\n const resolvedItemAlign = (\n (item_alignment as string) ||\n (pos === 'center' ? 'center' : 'left')\n ) as StandardBenefitAlign;\n\n const flexAlign: React.CSSProperties['alignItems'] =\n resolvedItemAlign === 'center' ? 'center' :\n resolvedItemAlign === 'right' ? 'flex-end' : 'flex-start';\n\n const itemTextAlign = resolvedItemAlign as React.CSSProperties['textAlign'];\n\n // Icon size: smaller for row mode, bigger for column modes\n const iconSize = isRow ? 38 : 44;\n\n // ── per-item style builders ───────────────────────────────────────────────\n\n function itemWrapStyle(i: number, last: boolean): React.CSSProperties {\n const base: React.CSSProperties = {\n flex: 1,\n display: 'flex',\n flexDirection: isRow ? 'row' : 'column',\n alignItems: isRow ? 'flex-start' : flexAlign,\n textAlign: isRow ? 'left' : itemTextAlign,\n gap: isRow ? 16 : 0,\n };\n if (isCard) {\n return {\n ...base,\n backgroundColor: '#fff',\n borderRadius: 14,\n border: '1px solid #e5e7eb',\n padding: '28px 22px',\n boxShadow: '0 1px 4px rgba(0,0,0,0.05)',\n };\n }\n return {\n ...base,\n padding: '32px 28px',\n borderRight: !last ? '1px solid #e5e7eb' : 'none',\n };\n }\n\n function iconWrapStyle(): React.CSSProperties {\n if (isRow) {\n return { flexShrink: 0, marginTop: 2 };\n }\n return { marginBottom: 20 };\n }\n\n // For icon_position='right': icon goes after text, so flip the order\n function renderItem(item: StandardBenefitItem, i: number, last: boolean) {\n const iconNode = (\n <div style={iconWrapStyle()}>\n <ItemIcon item={item} idx={i} color={iconColor} size={iconSize}/>\n </div>\n );\n const textNode = (\n <div>\n <div style={{ fontWeight: 700, fontSize: 15, color: titleColor, marginBottom: 8, lineHeight: 1.35 }}>\n {item.title}\n </div>\n <div style={{ fontSize: 13, color: bodyColor, lineHeight: 1.65 }}>\n {item.description}\n </div>\n </div>\n );\n\n return (\n <div key={i} style={itemWrapStyle(i, last)}>\n {pos === 'right' ? <>{textNode}{iconNode}</> : <>{iconNode}{textNode}</>}\n </div>\n );\n }\n\n // ── grid vs flex container ────────────────────────────────────────────────\n\n const containerStyle: React.CSSProperties = isCard\n ? { display: 'grid', gridTemplateColumns: `repeat(${items.length}, 1fr)`, gap: 16 }\n : { display: 'flex' };\n\n return (\n <div className={className} style={{ backgroundColor: bgColor, padding: '52px 32px' }}>\n <div style={{ maxWidth: 1140, margin: '0 auto' }}>\n\n {/* Section header */}\n {(heading || subheading) && (\n <div style={{ textAlign: hAlign, marginBottom: 44 }}>\n {heading && (\n <h2 style={{ fontSize: 30, fontWeight: 800, color: titleColor, lineHeight: 1.25, margin: '0 0 12px', letterSpacing: '-0.01em' }}>\n {heading}\n </h2>\n )}\n {subheading && (\n <p style={{\n fontSize: 16, color: bodyColor, lineHeight: 1.6, margin: 0,\n maxWidth: hAlign === 'center' ? 600 : undefined,\n marginLeft: hAlign === 'center' ? 'auto' : undefined,\n marginRight: hAlign === 'center' ? 'auto' : undefined,\n }}>\n {subheading}\n </p>\n )}\n </div>\n )}\n\n {/* Items */}\n <div style={containerStyle}>\n {items.map((item, i) => renderItem(item, i, i === items.length - 1))}\n </div>\n\n </div>\n </div>\n );\n}\n\nexport default StandardBenefit;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { resolveStackableColor, hexToRgba } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\n/** Shared easing for every transition in this component — a gentle \"ease-out-expo\"\n * feel reads as far smoother than the default linear/ease curves for a crossfade\n * this slow-moving. */\nconst EASE = 'cubic-bezier(0.22,1,0.36,1)';\n\n/** Orbitron is already loaded by the library stylesheet (same face used by\n * StatCounterRow / IndexSection for oversized numerals); a host can override the\n * whole stack via `--stackables-font-display`. */\nconst NUMBER_FONT = 'var(--stackables-font-display, \"Orbitron\", \"Arial Narrow\", sans-serif)';\n\nexport interface StickyScrollFeatureItem {\n title?: string;\n description?: string;\n badge_text?: string;\n /** Asset URL, or a Contentstack asset object — both are accepted. Image or video; detected from the file itself. */\n media?: string | { url?: string; content_type?: string };\n media_alt?: string;\n}\n\nexport interface StickyScrollFeatureProps {\n eyebrow_text?: string;\n heading?: string;\n subheading?: string;\n /** Which side the pinned media panel sits on; text sections always sit opposite it. */\n media_position?: 'left' | 'right' | string;\n items?: StickyScrollFeatureItem[];\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n accent_color?: StackableColorValue;\n className?: string;\n}\n\nconst DEFAULT_ITEMS: StickyScrollFeatureItem[] = [\n {\n badge_text: '01',\n title: 'Real-time collaboration',\n description: 'Every keystroke syncs instantly across your team, with live cursors, inline comments, and full version history built into the page — no more \"final_v3_ACTUAL.docx\".',\n media: 'https://images.unsplash.com/photo-1522071820081-009f0129c71c?w=1000&fit=crop',\n media_alt: 'Team collaborating around laptops at a shared desk',\n },\n {\n badge_text: '02',\n title: 'Analytics that answer questions',\n description: 'Track engagement, conversion, and drop-off across every page without wiring up a separate BI tool — dashboards update live as the data comes in.',\n media: 'https://images.unsplash.com/photo-1551288049-bebda4e38f71?w=1000&fit=crop',\n media_alt: 'Analytics dashboard showing traffic and conversion charts',\n },\n {\n badge_text: '03',\n title: 'Enterprise-grade security',\n description: 'SSO, SCIM provisioning, and granular role-based permissions come standard, plus a full audit log for every change — so compliance reviews take minutes, not weeks.',\n media: 'https://images.unsplash.com/photo-1550751827-4bd374c3f58b?w=1000&fit=crop',\n media_alt: 'Close-up of an illuminated circuit board',\n },\n {\n badge_text: '04',\n title: 'Seamless integrations',\n description: 'Connect Slack, Linear, Figma, and 40+ other tools your team already uses in a few clicks — no Zapier, no custom scripts, just pick a workflow and go.',\n media: 'https://images.unsplash.com/photo-1460925895917-afdab827c52f?w=1000&fit=crop',\n media_alt: 'Laptop on a desk displaying a product dashboard',\n },\n];\n\nconst VIDEO_EXTENSIONS = /\\.(mp4|webm|ogg|mov|m4v)(\\?|#|$)/i;\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveMedia(media: StickyScrollFeatureItem['media']): string {\n if (!media) return '';\n if (typeof media === 'string') return media.trim();\n return typeof media.url === 'string' ? media.url.trim() : '';\n}\n\n/** One `media` field covers both — video vs. image is sniffed from the asset's\n * own content type (when the Delivery API provides it) or its file extension,\n * so editors just drop a file in rather than also flipping a type switch. */\nfunction isVideoMedia(media: StickyScrollFeatureItem['media'], src: string): boolean {\n if (media && typeof media === 'object' && typeof media.content_type === 'string') {\n return media.content_type.startsWith('video/');\n }\n return VIDEO_EXTENSIONS.test(src);\n}\n\nfunction PlaceholderFrame() {\n return (\n <div className=\"flex h-full w-full items-center justify-center bg-neutral-200 dark:bg-neutral-800\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"text-neutral-400\">\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" />\n <circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\" />\n <polyline points=\"21 15 16 10 5 21\" />\n </svg>\n </div>\n );\n}\n\nexport function StickyScrollFeature({\n eyebrow_text = 'HOW IT WORKS',\n heading = 'Built for how your team actually works',\n subheading = '',\n media_position = 'right',\n items = DEFAULT_ITEMS,\n background_color,\n text_color,\n accent_color,\n className = '',\n}: StickyScrollFeatureProps) {\n const resolvedItems = items?.length ? items : DEFAULT_ITEMS;\n const [activeIndex, setActiveIndex] = useState(0);\n const itemRefs = useRef<(HTMLDivElement | null)[]>([]);\n const observerRef = useRef<IntersectionObserver | null>(null);\n\n // One observer instance, created lazily and kept for the component's lifetime.\n // Attaching happens in the item ref callback below (not in a mount-only effect):\n // an effect that observes `itemRefs.current` once would keep watching stale,\n // detached nodes forever if this text column is ever unmounted and remounted\n // (e.g. toggling `media_position` reorders it against `mediaPanel`, which React\n // treats as swapping element types at that position) — scroll-driven updates,\n // description reveal included, would silently freeze from that point on.\n const getObserver = () => {\n if (!observerRef.current) {\n observerRef.current = new IntersectionObserver(\n () => {\n // Each section is much taller than the thin centre band this observer\n // watches, so at a shared boundary BOTH neighbours can be intersecting\n // it at once. Trusting whichever entry the browser happened to list\n // last picked the higher index every time regardless of scroll\n // direction — harmless scrolling down (that's the direction you're\n // headed anyway) but stuck scrolling up, most visibly on the very\n // first item, which has the widest such overlap window. Recomputing\n // fresh from all refs and picking whichever centre is nearest the\n // viewport's centre line is direction-independent by construction.\n const viewportCentre = window.innerHeight / 2;\n const bandTop = window.innerHeight * 0.45;\n const bandBottom = window.innerHeight * 0.55;\n let bestIdx: number | null = null;\n let bestDist = Infinity;\n itemRefs.current.forEach((el, idx) => {\n if (!el) return;\n const rect = el.getBoundingClientRect();\n if (rect.bottom <= bandTop || rect.top >= bandBottom) return;\n const dist = Math.abs((rect.top + rect.bottom) / 2 - viewportCentre);\n if (dist < bestDist) {\n bestDist = dist;\n bestIdx = idx;\n }\n });\n if (bestIdx !== null) setActiveIndex(bestIdx);\n },\n // Each text section toggles \"active\" as it crosses a line through the\n // vertical centre of the viewport — the standard sticky-scroll technique.\n { rootMargin: '-45% 0px -45% 0px', threshold: 0 }\n );\n }\n return observerRef.current;\n };\n\n useEffect(() => () => observerRef.current?.disconnect(), []);\n\n const setItemRef = (index: number) => (el: HTMLDivElement | null) => {\n const observer = getObserver();\n const prev = itemRefs.current[index];\n if (prev && prev !== el) observer.unobserve(prev);\n itemRefs.current[index] = el;\n if (el) observer.observe(el);\n };\n\n const sectionThemeClasses = 'bg-white';\n const headingThemeClasses = 'text-neutral-900';\n const subheadingThemeClasses = 'text-neutral-600';\n const descriptionThemeClasses = 'text-neutral-600';\n\n // The number sits as a ghosted, barely-there numeral until its section is active,\n // then settles into a bold, accent-coloured display face — a common \"washed out\n // until it's your turn\" treatment for oversized section numbers.\n const numberInactiveClasses = 'text-neutral-200';\n const titleInactiveClasses = 'text-neutral-400';\n\n const resolvedBg = resolveStackableColor(background_color);\n const resolvedText = resolveStackableColor(text_color);\n const resolvedAccent = resolveStackableColor(accent_color) || '#7c3aed';\n\n const sectionStyle = resolvedBg ? { backgroundColor: resolvedBg } : undefined;\n // A custom text_color only makes sense against a custom background, so it has to\n // cover every text element here, not just the heading — otherwise the eyebrow,\n // subheading and descriptions are stuck on light-theme gray and can go unreadable\n // (down to \"just a coloured line\" in the extreme) against a dark custom bg.\n const textStyle: React.CSSProperties | undefined = resolvedText ? { color: resolvedText } : undefined;\n const mutedTextStyle: React.CSSProperties | undefined = resolvedText ? { color: hexToRgba(resolvedText, 0.72) } : undefined;\n const eyebrowStyle: React.CSSProperties | undefined = resolvedText ? { color: hexToRgba(resolvedText, 0.55) } : undefined;\n const inactiveTitleStyle: React.CSSProperties | undefined = resolvedText ? { color: hexToRgba(resolvedText, 0.4) } : undefined;\n\n const mediaOnRight = (media_position as string)?.toLowerCase() !== 'left';\n\n const renderMedia = (item: StickyScrollFeatureItem, index: number, active: boolean, animated: boolean) => {\n const src = resolveMedia(item.media);\n const isVideo = isVideoMedia(item.media, src);\n // A straight opacity crossfade — no transform. Animating scale on a large raster\n // image at the same time forces the browser to keep re-rasterizing it through\n // the transition instead of just compositing an opacity change, which is what\n // read as janky rather than a clean fade between images.\n const layerClasses = animated\n ? `absolute inset-0 transition-opacity ease-in-out ${active ? 'opacity-100' : 'opacity-0'}`\n : 'absolute inset-0 opacity-100';\n return (\n <div\n key={index}\n className={layerClasses}\n style={animated ? { transitionDuration: '900ms', willChange: 'opacity' } : undefined}\n >\n {src ? (\n isVideo ? (\n <video src={src} className=\"h-full w-full object-cover\" autoPlay muted loop playsInline />\n ) : (\n // eslint-disable-next-line @next/next/no-img-element\n <img src={src} alt={item.media_alt || item.title || ''} className=\"h-full w-full object-cover\" loading=\"eager\" decoding=\"async\" />\n )\n ) : (\n <PlaceholderFrame />\n )}\n </div>\n );\n };\n\n // Sticky containment is resolved BEFORE transforms are applied, so a\n // `top-1/2 -translate-y-1/2` trick can render outside this component's own\n // section near the edges of the sticky range (confirmed: it bled ~18px into\n // whatever content sits right before this component on the page). The\n // transform-free fix is the one Aceternity/shadcn-style sticky sections use:\n // an outer spacer that stretches to the full column height, plus a `sticky\n // top-0 h-screen` inner frame that centers its content with flexbox — never a\n // paint-only transform — so it's physically incapable of leaving its own box.\n const mediaPanel = (\n <div className=\"relative hidden self-stretch md:block md:flex-1\">\n <div className=\"sticky top-0 flex h-screen items-center\">\n <div className=\"relative h-[70vh] max-h-[560px] w-full overflow-hidden rounded-xl shadow-xl ring-1 ring-black/5\">\n {resolvedItems.map((item, index) => renderMedia(item, index, index === activeIndex, true))}\n </div>\n </div>\n </div>\n );\n\n const textColumn = (\n <div className=\"flex w-full flex-col md:flex-1\">\n {resolvedItems.map((item, index) => {\n const active = index === activeIndex;\n return (\n <div\n key={index}\n ref={setItemRef(index)}\n data-index={index}\n className=\"flex flex-col gap-4 py-10 first:pt-0 md:min-h-[70vh] md:justify-center md:py-0\"\n >\n {/* Media inline on mobile — the sticky panel above is hidden below md. */}\n <div className=\"relative mb-1 h-56 w-full overflow-hidden rounded-xl shadow-md md:hidden\">\n {renderMedia(item, index, true, false)}\n </div>\n\n {item.badge_text && (\n <span\n className={`block text-5xl font-black leading-none transition-all duration-700 sm:text-6xl ${active ? '' : numberInactiveClasses}`}\n style={{\n fontFamily: NUMBER_FONT,\n transitionTimingFunction: EASE,\n transform: active ? 'translateY(0)' : 'translateY(6px)',\n ...(active\n ? { color: resolvedAccent }\n : resolvedText\n ? { color: hexToRgba(resolvedText, 0.18) }\n : undefined),\n }}\n >\n {item.badge_text}\n </span>\n )}\n {item.title && (\n <h3\n className={`text-3xl font-bold leading-[1.1] tracking-tight transition-colors duration-700 sm:text-4xl md:text-[2.75rem] ${active ? headingThemeClasses : titleInactiveClasses}`}\n style={{ transitionTimingFunction: EASE, ...(active ? textStyle : inactiveTitleStyle) }}\n >\n {item.title}\n </h3>\n )}\n {item.description && (\n // The grid-rows(0fr -> 1fr) trick, not max-height: max-height must guess a\n // cap and eases unevenly against real content height, which is what read as\n // not-smooth. A grid track animates exactly to content size at a constant rate.\n <div\n className=\"grid overflow-hidden transition-[grid-template-rows] duration-700\"\n style={{ transitionTimingFunction: EASE, gridTemplateRows: active ? '1fr' : '0fr' }}\n >\n <div className=\"min-h-0 overflow-hidden\">\n <p className={`max-w-xl text-lg leading-relaxed sm:text-xl ${descriptionThemeClasses}`} style={mutedTextStyle}>\n {item.description}\n </p>\n </div>\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n\n return (\n <section className={`${sectionThemeClasses} ${className}`.trim()} style={sectionStyle}>\n <div className=\"component-container mx-auto px-6 py-16 sm:py-24\">\n {(eyebrow_text || heading || subheading) && (\n <div className=\"mx-auto mb-16 max-w-3xl text-center\">\n {eyebrow_text && (\n <p\n className=\"text-sm font-bold uppercase tracking-[0.2em]\"\n style={eyebrowStyle ?? { color: resolvedAccent }}\n >\n {eyebrow_text}\n </p>\n )}\n {heading && (\n // Deliberately bigger than the per-item titles below (md:text-[2.75rem]) —\n // this is the section's own headline and should read as the most\n // important text on the page, not tie with the items it introduces.\n <h2 className={`mt-4 text-4xl font-bold tracking-tighter md:text-5xl ${headingThemeClasses}`} style={textStyle}>\n {heading}\n </h2>\n )}\n {subheading && (\n <p className={`mx-auto mt-5 max-w-xl text-lg leading-relaxed ${subheadingThemeClasses}`} style={mutedTextStyle}>\n {subheading}\n </p>\n )}\n </div>\n )}\n\n <div className=\"flex flex-col gap-10 md:flex-row md:gap-16\">\n {mediaOnRight ? (\n <>\n {textColumn}\n {mediaPanel}\n </>\n ) : (\n <>\n {mediaPanel}\n {textColumn}\n </>\n )}\n </div>\n </div>\n </section>\n );\n}\n\nexport default StickyScrollFeature;\n","import React from 'react';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport type VerticalTimelineAlign = 'left' | 'center' | 'right';\n\nexport interface VerticalTimelineItem {\n date?: string;\n title?: string;\n description?: string;\n}\n\nexport interface VerticalTimelineProps {\n heading?: string;\n subheading?: string;\n heading_alignment?: VerticalTimelineAlign | string;\n background_color?: StackableColorValue;\n accent_color?: StackableColorValue;\n card_background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n items?: VerticalTimelineItem[];\n className?: string;\n}\n\n// ─── Default content ──────────────────────────────────────────────────────────\n\nconst DEFAULT_ITEMS: VerticalTimelineItem[] = [\n { date: 'January 2002', title: 'Company Started', description: 'Lorem ipsum dolor sit amet consectetur adipisicing elit, veniam libero facilis minus reprehenderit.' },\n { date: 'February 2006', title: 'Website Launched', description: 'Lorem ipsum dolor sit amet consectetur adipisicing elit, veniam libero facilis minus reprehenderit.' },\n { date: 'March 2016', title: 'Made 100+ Themes', description: 'Lorem ipsum dolor sit amet consectetur adipisicing elit, veniam libero facilis minus reprehenderit.' },\n { date: 'April 2021', title: 'Launch Project', description: 'Lorem ipsum dolor sit amet consectetur adipisicing elit, veniam libero facilis minus reprehenderit.' },\n];\n\nfunction resolveItems(items?: VerticalTimelineItem[]): VerticalTimelineItem[] {\n const filled = (items ?? []).filter(i => i.date?.trim() || i.title?.trim() || i.description?.trim());\n return filled.length ? filled : DEFAULT_ITEMS;\n}\n\n// ─── VerticalTimeline ─────────────────────────────────────────────────────────\n\nexport function VerticalTimeline({\n heading,\n subheading,\n heading_alignment = 'center',\n background_color,\n accent_color,\n card_background_color,\n text_color,\n items: itemsProp,\n className,\n}: VerticalTimelineProps) {\n const items = resolveItems(itemsProp);\n\n const bgColor = resolveStackableColor(background_color) || '#f3f4f6';\n const accentClr = resolveStackableColor(accent_color) || '#2563eb';\n const cardBg = resolveStackableColor(card_background_color) || '#ffffff';\n const textClr = resolveStackableColor(text_color);\n const titleColor = textClr || '#111827';\n const bodyColor = textClr || '#6b7280';\n\n const hAlign = ((heading_alignment as string) || 'center') as React.CSSProperties['textAlign'];\n\n return (\n <div className={className} style={{ backgroundColor: bgColor, padding: '56px 32px' }}>\n <div style={{ maxWidth: 760, margin: '0 auto' }}>\n\n {/* Section header */}\n {(heading || subheading) && (\n <div style={{ textAlign: hAlign, marginBottom: 44 }}>\n {heading && (\n <h2 style={{ fontSize: 34, fontWeight: 800, color: titleColor, lineHeight: 1.2, margin: '0 0 14px', letterSpacing: '-0.01em' }}>\n {heading}\n </h2>\n )}\n {subheading && (\n <p style={{\n fontSize: 15, color: bodyColor, lineHeight: 1.6, margin: 0,\n maxWidth: hAlign === 'center' ? 520 : undefined,\n marginLeft: hAlign === 'center' ? 'auto' : undefined,\n marginRight: hAlign === 'center' ? 'auto' : undefined,\n }}>\n {subheading}\n </p>\n )}\n </div>\n )}\n\n {/* Timeline */}\n <div style={{ position: 'relative' }}>\n {/* vertical line */}\n <div style={{ position: 'absolute', left: 7, top: 8, bottom: 8, width: 2, backgroundColor: accentClr, opacity: 0.25 }} />\n\n {items.map((item, i) => (\n <div key={i} style={{ position: 'relative', paddingLeft: 40, marginBottom: i === items.length - 1 ? 0 : 28 }}>\n {/* dot */}\n <div style={{\n position: 'absolute', left: 0, top: 8,\n width: 16, height: 16, borderRadius: '50%',\n backgroundColor: accentClr,\n boxShadow: `0 0 0 4px ${bgColor}`,\n }} />\n\n {item.date && (\n <span style={{\n display: 'inline-block',\n backgroundColor: accentClr,\n color: '#ffffff',\n fontSize: 12,\n fontWeight: 700,\n padding: '6px 16px',\n borderRadius: 999,\n marginBottom: 12,\n }}>\n {item.date}\n </span>\n )}\n\n {(item.title || item.description) && (\n <div style={{\n backgroundColor: cardBg,\n borderRadius: 14,\n padding: '20px 24px',\n boxShadow: '0 1px 6px rgba(0,0,0,0.06)',\n }}>\n {item.title && (\n <div style={{ fontWeight: 700, fontSize: 16, color: titleColor, marginBottom: 8 }}>\n {item.title}\n </div>\n )}\n {item.description && (\n <div style={{ fontSize: 14, color: bodyColor, lineHeight: 1.65 }}>\n {item.description}\n </div>\n )}\n </div>\n )}\n </div>\n ))}\n </div>\n\n </div>\n </div>\n );\n}\n\nexport default VerticalTimeline;\n","import React from 'react';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport type TimelineHorizontalAlign = 'left' | 'center' | 'right';\nexport type TimelineHorizontalBarPos = 'top' | 'bottom';\n\nexport interface TimelineHorizontalItem {\n year?: string;\n title?: string;\n description?: string;\n /** Optional image shown between the title and description. Asset URL, or a Contentstack asset object. */\n image?: string | { url?: string };\n}\n\nexport interface TimelineHorizontalProps {\n eyebrow_text?: string;\n heading?: string;\n subheading?: string;\n heading_alignment?: TimelineHorizontalAlign | string;\n /** Where the connecting bar (line + dots) sits relative to the item content */\n bar_position?: TimelineHorizontalBarPos | string;\n background_color?: StackableColorValue;\n accent_color?: StackableColorValue;\n text_color?: StackableColorValue;\n items?: TimelineHorizontalItem[];\n className?: string;\n}\n\n// ─── Default content ──────────────────────────────────────────────────────────\n\nconst DEFAULT_ITEMS: TimelineHorizontalItem[] = [\n { year: '2017', title: 'Building The Foundation', description: 'Laid the foundation of our company, establishing our core values, assembling a dedicated team.' },\n { year: '2018', title: 'Innovating & Evolving', description: 'Introduced groundbreaking products and services that addressed our clients’ evolving needs.' },\n { year: '2019', title: 'Expanding Horizons', description: 'Expanded our horizons by collaborating with industry leaders & strategic partnerships enriched.' },\n { year: '2020', title: 'Achieving Excellence', description: 'Celebrated the fruits of our labor and the dedication of our team. With exceptional results got recognised.' },\n];\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveImage(image?: TimelineHorizontalItem['image']): string {\n if (!image) return '';\n if (typeof image === 'string') return image.trim();\n return typeof image.url === 'string' ? image.url.trim() : '';\n}\n\nfunction resolveItems(items?: TimelineHorizontalItem[]): TimelineHorizontalItem[] {\n const filled = (items ?? []).filter(i => i.year?.trim() || i.title?.trim() || i.description?.trim() || resolveImage(i.image));\n return filled.length ? filled : DEFAULT_ITEMS;\n}\n\n// ─── TimelineHorizontal ───────────────────────────────────────────────────────\n\nexport function TimelineHorizontal({\n eyebrow_text,\n heading,\n subheading,\n heading_alignment = 'left',\n bar_position = 'bottom',\n background_color,\n accent_color,\n text_color,\n items: itemsProp,\n className,\n}: TimelineHorizontalProps) {\n const items = resolveItems(itemsProp);\n\n const bgColor = resolveStackableColor(background_color) || '#ffffff';\n const accentClr = resolveStackableColor(accent_color) || '#4f46e5';\n const textClr = resolveStackableColor(text_color);\n const titleColor = textClr || '#111827';\n const bodyColor = textClr || '#6b7280';\n\n const hAlign = ((heading_alignment as string) || 'left') as React.CSSProperties['textAlign'];\n const isBarTop = (bar_position as string) === 'top';\n\n const bar = (\n <div style={{ display: 'flex', alignItems: 'center' }}>\n {items.map((_, i) => (\n <div key={i} style={{ flex: 1, display: 'flex', alignItems: 'center' }}>\n <div style={{ flex: 1, height: 2, backgroundColor: i === 0 ? 'transparent' : accentClr }} />\n <div style={{\n flexShrink: 0,\n width: 14, height: 14, borderRadius: '50%',\n border: `2px solid ${accentClr}`,\n backgroundColor: bgColor,\n }} />\n <div style={{ flex: 1, height: 2, backgroundColor: i === items.length - 1 ? 'transparent' : accentClr }} />\n </div>\n ))}\n </div>\n );\n\n const content = (\n <div style={{ display: 'flex' }}>\n {items.map((item, i) => {\n const imageSrc = resolveImage(item.image);\n return (\n <div key={i} style={{ flex: 1, padding: '0 16px', textAlign: 'center' }}>\n {item.year && (\n <div style={{ fontSize: 20, fontWeight: 800, color: accentClr, marginBottom: 10 }}>\n {item.year}\n </div>\n )}\n {item.title && (\n <div style={{ fontSize: 15, fontWeight: 700, color: titleColor, marginBottom: 10, lineHeight: 1.35 }}>\n {item.title}\n </div>\n )}\n {imageSrc && (\n <div style={{ borderRadius: 10, overflow: 'hidden', marginBottom: 12, aspectRatio: '4 / 3' }}>\n <img src={imageSrc} alt={item.title || item.year || ''} style={{ width: '100%', height: '100%', objectFit: 'cover', display: 'block' }} />\n </div>\n )}\n {item.description && (\n <div style={{ fontSize: 13, color: bodyColor, lineHeight: 1.6 }}>\n {item.description}\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n\n return (\n <div className={className} style={{ backgroundColor: bgColor, padding: '56px 32px' }}>\n <div style={{ maxWidth: 1200, margin: '0 auto' }}>\n\n {/* Section header */}\n {(eyebrow_text || heading || subheading) && (\n <div style={{ textAlign: hAlign, marginBottom: 48 }}>\n {eyebrow_text && (\n <div style={{ color: accentClr, fontSize: 12, fontWeight: 700, letterSpacing: '0.14em', textTransform: 'uppercase', marginBottom: 12 }}>\n {eyebrow_text}\n </div>\n )}\n {heading && (\n <h2 style={{ fontSize: 32, fontWeight: 800, color: titleColor, lineHeight: 1.25, margin: '0 0 12px', letterSpacing: '-0.01em' }}>\n {heading}\n </h2>\n )}\n {subheading && (\n <p style={{\n fontSize: 15, color: bodyColor, lineHeight: 1.6, margin: 0,\n maxWidth: hAlign === 'center' ? 620 : undefined,\n marginLeft: hAlign === 'center' ? 'auto' : undefined,\n marginRight: hAlign === 'center' ? 'auto' : undefined,\n }}>\n {subheading}\n </p>\n )}\n </div>\n )}\n\n {/* Timeline bar + content */}\n {isBarTop ? (\n <>\n {bar}\n <div style={{ height: 24 }} />\n {content}\n </>\n ) : (\n <>\n {content}\n <div style={{ height: 24 }} />\n {bar}\n </>\n )}\n\n </div>\n </div>\n );\n}\n\nexport default TimelineHorizontal;\n","import React from 'react';\nimport { resolveStackableColor, hexToRgba } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport interface TimelineColumnItem {\n year?: string;\n title?: string;\n description?: string;\n /** Optional supporting image shown inside the card. Asset URL, or a Contentstack asset object. */\n image?: string | { url?: string };\n}\n\nexport interface TimelineColumnProps {\n heading?: string;\n subheading?: string;\n background_color?: StackableColorValue;\n accent_color?: StackableColorValue;\n card_background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n items?: TimelineColumnItem[];\n className?: string;\n}\n\n// ─── Default content ──────────────────────────────────────────────────────────\n\nconst DEFAULT_ITEMS: TimelineColumnItem[] = [\n { year: '2021', title: 'The Initial Spark', description: 'The concept was born not in a boardroom, but from a simple observation. We sketched the initial architecture on a napkin, focusing on a core user problem often overlooked by incumbents.' },\n { year: '2022', title: 'Code & Conviction', description: 'With a lean team, we built the Alpha version. This phase was about rapid iteration and validating our core assumptions with a small, private group of beta testers whose feedback was invaluable.' },\n { year: '2023', title: 'Finding Our Voice', description: 'We secured seed funding, allowing us to refine the product and brand identity. This was a turning point, shifting our focus from pure functionality to a holistic user experience.' },\n];\n\nfunction resolveItems(items?: TimelineColumnItem[]): TimelineColumnItem[] {\n const filled = (items ?? []).filter(i => i.year?.trim() || i.title?.trim() || i.description?.trim());\n return filled.length ? filled : DEFAULT_ITEMS;\n}\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveImage(image?: TimelineColumnItem['image']): string {\n if (!image) return '';\n if (typeof image === 'string') return image.trim();\n return typeof image.url === 'string' ? image.url.trim() : '';\n}\n\n// ─── TimelineColumn ───────────────────────────────────────────────────────────\n\nexport function TimelineColumn({\n heading,\n subheading,\n background_color,\n accent_color,\n card_background_color,\n text_color,\n items: itemsProp,\n className,\n}: TimelineColumnProps) {\n const items = resolveItems(itemsProp);\n\n const bgColor = resolveStackableColor(background_color) || '#0a0a0a';\n const accentClr = resolveStackableColor(accent_color) || '#ffffff';\n const cardBg = resolveStackableColor(card_background_color) || 'rgba(255,255,255,0.04)';\n const textClr = resolveStackableColor(text_color);\n const titleColor = textClr || '#f5f5f5';\n const bodyColor = textClr || '#9ca3af';\n const yearColor = textClr || '#d1d5db';\n\n return (\n <div className={className} style={{ backgroundColor: bgColor, padding: '56px 32px' }}>\n <div style={{ maxWidth: 900, margin: '0 auto' }}>\n\n {(heading || subheading) && (\n <div style={{ textAlign: 'center', marginBottom: 48 }}>\n {heading && (\n <h2 style={{ fontSize: 30, fontWeight: 800, color: titleColor, lineHeight: 1.25, margin: '0 0 12px', letterSpacing: '-0.01em' }}>\n {heading}\n </h2>\n )}\n {subheading && (\n <p style={{ fontSize: 15, color: bodyColor, lineHeight: 1.6, margin: '0 auto', maxWidth: 560 }}>\n {subheading}\n </p>\n )}\n </div>\n )}\n\n <div style={{ position: 'relative' }}>\n {/* center line */}\n <div style={{ position: 'absolute', left: '50%', top: 0, bottom: 0, width: 1, backgroundColor: accentClr, opacity: 0.25, transform: 'translateX(-50%)' }} />\n\n {items.map((item, i) => {\n const onRight = i % 2 === 0;\n const imageSrc = resolveImage(item.image);\n const card = (item.title || item.description || imageSrc) && (\n <div style={{\n backgroundColor: cardBg,\n border: `1px solid ${hexToRgba(accentClr, 0.12)}`,\n borderRadius: 12,\n padding: '22px 24px',\n }}>\n {item.year && (\n <div style={{ fontSize: 13, fontWeight: 700, color: yearColor, opacity: 0.7, marginBottom: 6 }}>\n {item.year}\n </div>\n )}\n {item.title && (\n <div style={{ fontSize: 18, fontWeight: 700, color: titleColor, marginBottom: 10 }}>\n {item.title}\n </div>\n )}\n {imageSrc && (\n <div style={{ borderRadius: 8, overflow: 'hidden', marginBottom: 12 }}>\n <img src={imageSrc} alt={item.title || ''} style={{ width: '100%', display: 'block', objectFit: 'cover' }} />\n </div>\n )}\n {item.description && (\n <div style={{ fontSize: 14, color: bodyColor, lineHeight: 1.7 }}>\n {item.description}\n </div>\n )}\n </div>\n );\n\n return (\n <div key={i} style={{ position: 'relative', display: 'flex', marginBottom: i === items.length - 1 ? 0 : 40 }}>\n <div style={{ flex: 1, paddingRight: 40 }}>{!onRight && card}</div>\n\n <div style={{\n position: 'absolute', left: '50%', top: 4,\n width: 12, height: 12, borderRadius: '50%',\n backgroundColor: accentClr,\n transform: 'translateX(-50%)',\n }} />\n\n <div style={{ flex: 1, paddingLeft: 40 }}>{onRight && card}</div>\n </div>\n );\n })}\n </div>\n\n </div>\n </div>\n );\n}\n\nexport default TimelineColumn;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { resolveStackableColor, hexToRgba } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\n/** Native Contentstack link field: `{ title, href }`. */\nexport interface TimelineYearBlocksLink {\n title?: string;\n href?: string;\n}\n\nexport interface TimelineYearBlocksEntry {\n /**\n * The badge notched into the panel's left edge. Free text straight from the\n * CMS — `A`, `01`, `IV` all render. Never parsed and never used for ordering,\n * so entries can be labelled however the content calls for.\n */\n marker?: string;\n /**\n * The oversized display text inside the panel. Usually a year, which is why\n * it splits across two lines, but any short string works.\n */\n year?: string;\n /** Small uppercase line under the year, inside the panel. */\n caption?: string;\n description?: string;\n /** Text for the tab at the right end of the rule. */\n tag_label?: string;\n /** Makes the panel and the tab clickable. */\n link?: TimelineYearBlocksLink;\n /** Top-left of the panel gradient. Empty falls back to the rotating palette. */\n gradient_from?: StackableColorValue;\n /** Bottom-right of the panel gradient. Empty falls back to the rotating palette. */\n gradient_to?: StackableColorValue;\n}\n\nexport interface TimelineYearBlocksProps {\n heading?: string;\n subheading?: string;\n heading_alignment?: 'left' | 'center' | 'right' | string;\n entries?: TimelineYearBlocksEntry[];\n /** Vertical line down the left with a terminal dot at each end. */\n show_rail?: boolean;\n /**\n * Breaks the year across two lines, as in `19` over `90`. Only applied when\n * the text can be halved cleanly; anything else stays on one line.\n */\n split_year?: boolean;\n /** The small tab at the right end of each entry's rule. */\n show_tag?: boolean;\n panel_size?: 'Small' | 'Medium' | 'Large' | string;\n background_color?: StackableColorValue;\n /** Body copy, heading, rail and badge letter. */\n text_color?: StackableColorValue;\n /** Everything sitting on the gradient panel. */\n panel_text_color?: StackableColorValue;\n className?: string;\n}\n\nconst DEFAULT_BG = '#f4f4f5';\nconst DEFAULT_TEXT = '#1f2937';\nconst DEFAULT_PANEL_TEXT = '#ffffff';\n\n/**\n * Used in order, then repeated, whenever an entry sets no colours of its own —\n * so a freshly added entry looks deliberate instead of unstyled. Repeater colour\n * fields carry no registered default (matching every other one in the catalog),\n * which is what lets this fallback apply.\n */\nconst DEFAULT_GRADIENTS: ReadonlyArray<readonly [string, string]> = [\n ['#e0446a', '#8e3d8f'], // rose to purple\n ['#ffd152', '#f7913d'], // yellow to orange\n ['#3f63c4', '#35aeae'], // blue to teal\n];\n\nconst ALIGNMENTS: Record<string, string> = {\n left: 'text-left items-start',\n center: 'text-center items-center',\n right: 'text-right items-end',\n};\n\n/** Panel width, and the year's clamp, per size. */\nconst PANEL_SIZES: Record<string, { width: number; year: string }> = {\n Small: { width: 168, year: 'clamp(2.25rem, 5vw, 3rem)' },\n Medium: { width: 212, year: 'clamp(2.75rem, 6vw, 3.75rem)' },\n Large: { width: 268, year: 'clamp(3.25rem, 7vw, 4.75rem)' },\n};\n\n/** Readable measure for the body copy, so it never stretches across a wide row. */\nconst COPY_MEASURE = '34rem';\n\n/** Rail geometry, in px from the container's left edge. */\nconst RAIL_X = 18;\nconst RAIL_COLUMN = 88;\nconst BADGE = 42;\nconst DOT = 9;\n\n/**\n * Below this the rail is dropped and each entry becomes a full-width panel with\n * its copy underneath — a fixed rail column plus a fixed panel plus body copy\n * cannot share a narrow row without the copy becoming unreadable.\n */\nconst STACK_BELOW_PX = 760;\n\n/**\n * `1990` reads as `19` over `90` in the reference. Only split when the text\n * halves cleanly, so `Q1`, `2020s` and `Spring` stay on one line rather than\n * breaking somewhere arbitrary.\n */\nfunction splitYear(raw: string): [string, string] | null {\n const t = raw.trim();\n if (t.length < 4 || t.length % 2 !== 0 || /\\s/.test(t)) return null;\n const half = t.length / 2;\n return [t.slice(0, half), t.slice(half)];\n}\n\nexport function TimelineYearBlocks({\n heading = '',\n subheading = '',\n heading_alignment = 'center',\n entries = [],\n show_rail = true,\n split_year = true,\n show_tag = true,\n panel_size = 'Medium',\n background_color,\n text_color,\n panel_text_color,\n className = '',\n}: TimelineYearBlocksProps) {\n const bodyRef = useRef<HTMLDivElement>(null);\n const [bodyWidth, setBodyWidth] = useState(0);\n\n // Measured rather than a CSS media query, so it tracks the component's own box\n // — the storybook preview simulates width with a fixed-px wrapper that media\n // queries can't see. Same approach as BentoGrid and HexTileGrid.\n useEffect(() => {\n const el = bodyRef.current;\n if (!el) return;\n const ro = new ResizeObserver(([entry]) => setBodyWidth(entry.contentRect.width));\n ro.observe(el);\n return () => ro.disconnect();\n }, []);\n\n const bg = resolveStackableColor(background_color) || DEFAULT_BG;\n const text = resolveStackableColor(text_color) || DEFAULT_TEXT;\n const panelText = resolveStackableColor(panel_text_color) || DEFAULT_PANEL_TEXT;\n\n const alignClass = ALIGNMENTS[heading_alignment] ?? ALIGNMENTS.center;\n const size = PANEL_SIZES[panel_size] ?? PANEL_SIZES.Medium;\n\n const visible = (entries ?? []).filter(\n (e) =>\n Boolean(e?.marker?.trim()) ||\n Boolean(e?.year?.trim()) ||\n Boolean(e?.description?.trim()),\n );\n\n // Before the first measurement, render the full layout so the server-rendered\n // markup matches what a wide container settles on.\n const stacked = bodyWidth > 0 && bodyWidth < STACK_BELOW_PX;\n const railOn = show_rail && !stacked;\n // With the rail on, the panel is inset far enough to leave room for it. Without\n // it, the panel still needs half a badge of clearance — the badge straddles the\n // panel's left edge, so a flush panel pushes it against the section padding.\n const railInset = railOn ? RAIL_COLUMN : BADGE / 2;\n\n return (\n <section className={className} style={{ backgroundColor: bg }}>\n <div className=\"component-container mx-auto px-6 py-14 lg:py-20\">\n {/* ── Section heading ────────────────────────────────────────────── */}\n {(heading || subheading) && (\n <div className={`mb-12 flex flex-col ${alignClass}`}>\n {heading && (\n <h2\n className=\"text-3xl font-semibold tracking-tight sm:text-4xl\"\n style={{ color: text }}\n >\n {heading}\n </h2>\n )}\n {subheading && (\n <p\n className=\"mt-4 max-w-2xl text-sm leading-relaxed\"\n style={{ color: hexToRgba(text, 0.7) }}\n >\n {subheading}\n </p>\n )}\n </div>\n )}\n\n {/* ── Entries ────────────────────────────────────────────────────── */}\n <div ref={bodyRef} className=\"relative w-full\">\n {visible.length === 0 ? (\n <p className=\"text-sm\" style={{ color: hexToRgba(text, 0.6) }}>\n No timeline entries added yet.\n </p>\n ) : (\n <>\n {/* The rail spans the whole set, with a terminal dot at each end.\n Absolutely positioned so it can't affect the rows' own height. */}\n {railOn && (\n <>\n <span\n aria-hidden\n className=\"absolute top-0 bottom-0\"\n style={{ left: RAIL_X, width: 1, backgroundColor: hexToRgba(text, 0.75) }}\n />\n {[0, 1].map((end) => (\n <span\n key={end}\n aria-hidden\n className=\"absolute rounded-full\"\n style={{\n left: RAIL_X,\n [end === 0 ? 'top' : 'bottom']: 0,\n width: DOT,\n height: DOT,\n marginLeft: -(DOT - 1) / 2,\n marginTop: end === 0 ? -DOT / 2 : undefined,\n marginBottom: end === 1 ? -DOT / 2 : undefined,\n backgroundColor: text,\n }}\n />\n ))}\n </>\n )}\n\n <ol className=\"m-0 list-none p-0\">\n {visible.map((entry, i) => {\n const fallback = DEFAULT_GRADIENTS[i % DEFAULT_GRADIENTS.length];\n const from = resolveStackableColor(entry.gradient_from) || fallback[0];\n const to = resolveStackableColor(entry.gradient_to) || fallback[1];\n const href = entry.link?.href?.trim();\n const year = entry.year?.trim() ?? '';\n const halves = split_year ? splitYear(year) : null;\n const marker = entry.marker?.trim();\n\n const panel = (\n <div\n className=\"relative flex shrink-0 flex-col justify-end overflow-visible\"\n style={{\n width: stacked ? '100%' : `${size.width}px`,\n minHeight: '9.5rem',\n padding: '1.5rem 1.5rem 1.25rem',\n backgroundImage: `linear-gradient(135deg, ${from} 0%, ${to} 100%)`,\n }}\n >\n {/* The badge is punched out of the panel's left edge in the\n background colour, so it reads as a notch rather than a\n chip sitting on top. */}\n {marker && (\n <span\n className=\"absolute flex items-center justify-center text-lg font-bold\"\n style={{\n left: 0,\n top: '50%',\n width: BADGE,\n height: BADGE,\n transform: 'translate(-50%, -50%)',\n backgroundColor: bg,\n color: text,\n }}\n >\n {marker}\n </span>\n )}\n\n {/* Year and caption are right-aligned against a hairline,\n which is where the horizontal rule meets the panel. */}\n <div\n className=\"ml-auto flex flex-col items-end pr-3.5\"\n style={{ borderRight: `1px solid ${hexToRgba(panelText, 0.55)}` }}\n >\n {year && (\n <span\n className=\"block text-right font-medium\"\n style={{\n color: panelText,\n fontSize: size.year,\n lineHeight: 0.86,\n letterSpacing: '-0.02em',\n }}\n >\n {halves ? (\n <>\n <span className=\"block\">{halves[0]}</span>\n <span className=\"block\">{halves[1]}</span>\n </>\n ) : (\n year\n )}\n </span>\n )}\n {entry.caption && (\n <span\n className=\"mt-3 block text-[10px] font-semibold uppercase leading-none tracking-[0.2em]\"\n style={{ color: hexToRgba(panelText, 0.9) }}\n >\n {entry.caption}\n </span>\n )}\n </div>\n </div>\n );\n\n const copy = (\n <div\n className={`relative flex min-w-0 flex-1 flex-col justify-center ${\n stacked ? 'pt-6' : 'pl-8'\n }`}\n style={{ paddingBottom: '2.25rem' }}\n >\n {/* The measure is capped: across a wide container an\n uncapped paragraph becomes one stretched line, which\n reads badly and loses the block-of-copy shape. */}\n {entry.description && (\n <p\n className=\"m-0 text-[13px] leading-relaxed\"\n style={{ color: hexToRgba(text, 0.82), maxWidth: COPY_MEASURE }}\n >\n {entry.description}\n </p>\n )}\n\n {/* The rule runs under the copy from a dot at the panel's\n edge out to the tab, which straddles its right end. */}\n <span\n aria-hidden\n className=\"absolute right-0 bottom-4 left-0\"\n style={{ height: 1, backgroundColor: hexToRgba(text, 0.45) }}\n />\n <span\n aria-hidden\n className=\"absolute rounded-full\"\n style={{\n left: 0,\n bottom: '1rem',\n width: 7,\n height: 7,\n marginLeft: -3,\n marginBottom: -3,\n backgroundColor: text,\n }}\n />\n\n {show_tag && entry.tag_label?.trim() && (\n <span\n className=\"absolute right-0 px-3.5 py-1.5 text-[9px] font-semibold uppercase leading-none tracking-[0.2em]\"\n style={{\n bottom: '1rem',\n transform: 'translateY(50%)',\n color: panelText,\n backgroundImage: `linear-gradient(135deg, ${from} 0%, ${to} 100%)`,\n }}\n >\n {entry.tag_label}\n </span>\n )}\n </div>\n );\n\n const row = (\n <div className={`flex ${stacked ? 'flex-col' : 'flex-row items-stretch'}`}>\n {panel}\n {copy}\n </div>\n );\n\n return (\n <li key={`${marker}-${year}-${i}`} className={i > 0 ? 'mt-8' : ''}>\n <div className=\"relative\" style={{ paddingLeft: railInset }}>\n {/* Stub from the rail across to the badge. */}\n {railOn && (\n <span\n aria-hidden\n className=\"absolute\"\n style={{\n left: RAIL_X,\n top: '50%',\n width: RAIL_COLUMN - RAIL_X - BADGE / 2,\n height: 1,\n backgroundColor: hexToRgba(text, 0.75),\n }}\n />\n )}\n {href ? (\n <a\n href={href}\n title={entry.link?.title || year || marker}\n className=\"block transition-opacity duration-200 hover:opacity-90\"\n >\n {row}\n </a>\n ) : (\n row\n )}\n </div>\n </li>\n );\n })}\n </ol>\n </>\n )}\n </div>\n </div>\n </section>\n );\n}\n\nexport default TimelineYearBlocks;\n","import React, { useState } from 'react';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface FeatureComparisonPlan {\n name?: string;\n price_monthly?: string;\n price_annually?: string;\n price_suffix?: string;\n cta_label?: string;\n cta_url?: string;\n is_featured?: boolean;\n featured_label?: string;\n}\n\nexport interface FeatureComparisonRow {\n label?: string;\n tooltip?: string;\n /** One value per plan, in plan order. \"yes\"/\"true\" and \"no\"/\"false\" render as check/cross icons; anything else renders as text (e.g. \"100 uses\", \"Unlimited\"). */\n values?: string[];\n}\n\nexport interface FeatureComparisonGroup {\n group_name?: string;\n rows?: FeatureComparisonRow[];\n}\n\nexport interface FeatureComparisonTableProps {\n eyebrow?: string;\n heading?: string;\n description?: string;\n show_billing_toggle?: boolean;\n background_color?: StackableColorValue;\n accent_color?: StackableColorValue;\n plans?: FeatureComparisonPlan[];\n groups?: FeatureComparisonGroup[];\n className?: string;\n}\n\nconst DEFAULT_PLANS: FeatureComparisonPlan[] = [\n { name: 'Free', price_monthly: '0', price_suffix: '/mo' },\n { name: 'Pro', price_monthly: '25', price_suffix: '/mo', is_featured: true, featured_label: 'Most popular', cta_label: 'Start free trial' },\n { name: 'Business', price_monthly: '55', price_suffix: '/mo' },\n];\n\nconst DEFAULT_GROUPS: FeatureComparisonGroup[] = [\n {\n group_name: 'Core Features',\n rows: [\n { label: 'Task List', values: ['yes', 'yes', 'yes'] },\n { label: 'Timeline View', values: ['100 uses', '150 uses', 'Unlimited'] },\n { label: 'Analytics', values: ['100 uses', 'Unlimited', 'Unlimited'] },\n { label: 'File Storage', values: ['100 MB', 'Unlimited', 'Unlimited'] },\n ],\n },\n {\n group_name: 'Essentials',\n rows: [\n { label: 'Custom Fields', values: ['100 uses', 'Unlimited', 'Unlimited'] },\n { label: 'Integrations', values: ['no', 'yes', 'yes'] },\n ],\n },\n];\n\nfunction isYes(v?: string) {\n const s = (v ?? '').trim().toLowerCase();\n return s === 'yes' || s === 'true';\n}\nfunction isNo(v?: string) {\n const s = (v ?? '').trim().toLowerCase();\n return s === 'no' || s === 'false';\n}\n\nfunction CheckIcon({ color }: { color: string }) {\n return (\n <span className=\"inline-flex w-5 h-5 rounded-full items-center justify-center\" style={{ backgroundColor: `${color}1a` }}>\n <svg width={12} height={12} viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth={3} strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n </span>\n );\n}\nfunction CrossIcon() {\n return (\n <span className=\"inline-flex w-5 h-5 rounded-full items-center justify-center bg-gray-100\">\n <svg width={10} height={10} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#9ca3af\" strokeWidth={3} strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" /><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </span>\n );\n}\n\nexport function FeatureComparisonTable({\n eyebrow,\n heading = 'What you get with each plan',\n description,\n show_billing_toggle = false,\n background_color,\n accent_color,\n plans: plansProp,\n groups: groupsProp,\n className,\n}: FeatureComparisonTableProps) {\n const [billing, setBilling] = useState<'monthly' | 'annually'>('monthly');\n const plans = plansProp?.length ? plansProp : DEFAULT_PLANS;\n const groups = groupsProp?.length ? groupsProp : DEFAULT_GROUPS;\n\n const bgColor = resolveStackableColor(background_color) || '#ffffff';\n const accent = resolveStackableColor(accent_color) || '#16a34a';\n\n const getPrice = (plan: FeatureComparisonPlan) =>\n billing === 'annually' && plan.price_annually ? plan.price_annually : plan.price_monthly;\n\n return (\n <section className={className} style={{ backgroundColor: bgColor }}>\n <div className=\"component-container mx-auto px-6 py-16\">\n {(eyebrow || heading || description) && (\n <div className=\"text-center mb-10 max-w-2xl mx-auto\">\n {eyebrow && <p className=\"text-sm font-semibold uppercase tracking-wide mb-3\" style={{ color: accent }}>{eyebrow}</p>}\n {heading && <h2 className=\"text-3xl md:text-4xl font-bold tracking-tight text-gray-900\">{heading}</h2>}\n {description && <p className=\"mt-4 text-base text-gray-600\">{description}</p>}\n </div>\n )}\n\n {show_billing_toggle && (\n <div className=\"flex justify-center mb-10\">\n <div className=\"inline-flex items-center rounded-full bg-gray-100 p-1 gap-1\">\n {(['monthly', 'annually'] as const).map((period) => (\n <button\n key={period}\n onClick={() => setBilling(period)}\n className={`px-4 py-1.5 rounded-full text-sm font-medium capitalize transition-colors ${\n billing === period ? 'text-white shadow-sm' : 'text-gray-600 hover:text-gray-900'\n }`}\n style={billing === period ? { backgroundColor: accent } : undefined}\n >\n {period}\n </button>\n ))}\n </div>\n </div>\n )}\n\n <div className=\"rounded-2xl border border-gray-200 overflow-hidden\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full border-collapse min-w-[640px]\">\n <thead>\n <tr>\n <th className=\"w-1/3\" />\n {plans.map((plan, i) => (\n <th key={i} className=\"p-6 text-left align-top relative\" style={plan.is_featured ? { backgroundColor: `${accent}0d` } : undefined}>\n {plan.is_featured && (\n <span className=\"inline-block text-xs font-semibold px-2.5 py-0.5 rounded-full text-white mb-2\" style={{ backgroundColor: accent }}>\n {plan.featured_label || 'Most popular'}\n </span>\n )}\n <div className=\"text-base font-bold text-gray-900\">{plan.name}</div>\n {getPrice(plan) && (\n <div className=\"mt-1 flex items-baseline gap-1\">\n <span className=\"text-2xl font-bold text-gray-900\">${getPrice(plan)}</span>\n {plan.price_suffix && <span className=\"text-sm text-gray-500\">{plan.price_suffix}</span>}\n </div>\n )}\n {plan.cta_label && (\n <a\n href={plan.cta_url || '#'}\n className={`mt-4 inline-block text-sm font-semibold px-4 py-2 rounded-lg transition-colors ${\n plan.is_featured ? 'text-white' : 'border border-gray-300 text-gray-700 hover:bg-gray-50'\n }`}\n style={plan.is_featured ? { backgroundColor: accent } : undefined}\n >\n {plan.cta_label}\n </a>\n )}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {groups.map((group, gi) => (\n <React.Fragment key={gi}>\n {group.group_name && (\n <tr>\n <td colSpan={plans.length + 1} className=\"px-6 pt-8 pb-3 bg-gray-50 border-t border-b border-gray-200\">\n <span className=\"text-sm font-bold text-gray-900\">{group.group_name}</span>\n </td>\n </tr>\n )}\n {(group.rows ?? []).map((row, ri) => (\n <tr key={ri} className={ri % 2 === 1 ? 'bg-gray-50/60' : undefined}>\n <td className=\"px-6 py-3.5 text-sm text-gray-700\">\n {row.label}\n {row.tooltip && <span className=\"ml-1.5 text-gray-400\" title={row.tooltip}>ⓘ</span>}\n </td>\n {plans.map((_, pi) => {\n const v = row.values?.[pi];\n return (\n <td key={pi} className=\"px-6 py-3.5\" style={plans[pi].is_featured ? { backgroundColor: `${accent}0d` } : undefined}>\n {isYes(v) ? (\n <CheckIcon color={accent} />\n ) : isNo(v) ? (\n <CrossIcon />\n ) : v ? (\n <span className=\"text-sm text-gray-700\">{v}</span>\n ) : (\n <span className=\"text-sm text-gray-300\">—</span>\n )}\n </td>\n );\n })}\n </tr>\n ))}\n </React.Fragment>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n </div>\n </section>\n );\n}\n\nexport default FeatureComparisonTable;\n","import React from 'react';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface FeatureComparisonVsColumn {\n name?: string;\n tagline?: string;\n logo?: string;\n highlighted?: boolean;\n}\n\nexport interface FeatureComparisonVsCell {\n /** \"yes\" | \"no\" — anything else falls back to \"yes\" when text is present, \"no\" otherwise. */\n status?: string;\n text?: string;\n}\n\nexport interface FeatureComparisonVsRow {\n label?: string;\n icon?: string;\n badge?: string;\n ours?: FeatureComparisonVsCell;\n competitor?: FeatureComparisonVsCell;\n}\n\nexport interface FeatureComparisonVsProps {\n eyebrow?: string;\n heading?: string;\n description?: string;\n ours?: FeatureComparisonVsColumn;\n competitor?: FeatureComparisonVsColumn;\n rows?: FeatureComparisonVsRow[];\n cta_label?: string;\n cta_url?: string;\n background_color?: StackableColorValue;\n accent_color?: StackableColorValue;\n className?: string;\n}\n\nconst DEFAULT_OURS: FeatureComparisonVsColumn = { name: 'Acme', tagline: 'Built with customer needs in mind', highlighted: true };\nconst DEFAULT_COMPETITOR: FeatureComparisonVsColumn = { name: 'Biz', tagline: 'A popular alternative solution' };\n\nconst DEFAULT_ROWS: FeatureComparisonVsRow[] = [\n { label: 'Team Overview', ours: { status: 'yes', text: 'Comprehensive dashboard' }, competitor: { status: 'no', text: 'Basic overview only' } },\n { label: 'Custom Branding', ours: { status: 'yes', text: 'Full customization' }, competitor: { status: 'yes', text: 'Limited options' } },\n { label: 'API Access', ours: { status: 'yes', text: 'Robust API' }, competitor: { status: 'no', text: 'No API available' } },\n { label: 'Advanced Analytics', badge: 'Soon', ours: { status: 'no', text: 'Coming soon' }, competitor: { status: 'yes', text: 'Basic reporting' } },\n { label: 'Customer Support', ours: { status: 'yes', text: '24/7 dedicated team' }, competitor: { status: 'no', text: 'Email support only' } },\n];\n\nfunction isYes(status?: string) {\n return (status ?? '').trim().toLowerCase() === 'yes';\n}\n\nfunction StatusIcon({ yes, accent }: { yes: boolean; accent: string }) {\n return yes ? (\n <svg width={20} height={20} viewBox=\"0 0 24 24\" fill=\"none\" stroke={accent} strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"8 12 11 15 16 9\" />\n </svg>\n ) : (\n <svg width={20} height={20} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#d1455b\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"9\" y1=\"12\" x2=\"15\" y2=\"12\" />\n </svg>\n );\n}\n\nexport function FeatureComparisonVs({\n eyebrow = 'Comparison',\n heading = 'See how we stack up against the competition',\n description,\n ours: oursProp,\n competitor: competitorProp,\n rows: rowsProp,\n cta_label,\n cta_url,\n background_color,\n accent_color,\n className,\n}: FeatureComparisonVsProps) {\n const ours = oursProp?.name ? oursProp : DEFAULT_OURS;\n const competitor = competitorProp?.name ? competitorProp : DEFAULT_COMPETITOR;\n const rows = rowsProp?.length ? rowsProp : DEFAULT_ROWS;\n\n const bgColor = resolveStackableColor(background_color) || '#ffffff';\n const accent = resolveStackableColor(accent_color) || '#16a34a';\n\n return (\n <section className={className} style={{ backgroundColor: bgColor }}>\n <div className=\"component-container mx-auto px-6 py-16\">\n <div className=\"text-center mb-12 max-w-xl mx-auto\">\n {eyebrow && <p className=\"text-xs font-semibold uppercase tracking-wide text-gray-400 mb-3\">{eyebrow}</p>}\n {heading && <h2 className=\"text-3xl md:text-4xl font-bold tracking-tight text-gray-900\">{heading}</h2>}\n {description && <p className=\"mt-4 text-base text-gray-600\">{description}</p>}\n </div>\n\n <div className=\"max-w-3xl mx-auto rounded-2xl border border-gray-200 overflow-hidden\">\n <div className=\"grid grid-cols-2\">\n <div className={`p-6 text-center ${ours.highlighted ? '' : ''}`} style={ours.highlighted ? { backgroundColor: '#f7f7f8' } : undefined}>\n {ours.logo ? (\n <img src={ours.logo} alt={ours.name} className=\"h-8 mx-auto mb-3 object-contain\" />\n ) : (\n <div className=\"w-8 h-8 mx-auto mb-3 rounded-lg\" style={{ backgroundColor: accent }} />\n )}\n <div className=\"font-bold text-gray-900\">{ours.name}</div>\n {ours.tagline && <div className=\"text-xs text-gray-500 mt-1\">{ours.tagline}</div>}\n </div>\n <div className=\"p-6 text-center border-l border-gray-200\">\n {competitor.logo ? (\n <img src={competitor.logo} alt={competitor.name} className=\"h-8 mx-auto mb-3 object-contain\" />\n ) : (\n <div className=\"w-8 h-8 mx-auto mb-3 rounded-lg bg-gray-300\" />\n )}\n <div className=\"font-bold text-gray-900\">{competitor.name}</div>\n {competitor.tagline && <div className=\"text-xs text-gray-500 mt-1\">{competitor.tagline}</div>}\n </div>\n </div>\n\n <div>\n {rows.map((row, i) => (\n <div key={i} className=\"grid grid-cols-[1fr_auto_auto] items-center gap-4 px-6 py-5 border-t border-gray-100\">\n <div className=\"flex items-center gap-2 text-sm font-medium text-gray-800\">\n {row.icon && <img src={row.icon} alt=\"\" className=\"w-4 h-4 object-contain\" />}\n {row.label}\n {row.badge && (\n <span className=\"text-[10px] font-semibold uppercase tracking-wide px-2 py-0.5 rounded-full bg-amber-100 text-amber-700\">\n {row.badge}\n </span>\n )}\n </div>\n <div className=\"flex flex-col items-center gap-1 min-w-[120px]\" style={ours.highlighted ? { backgroundColor: '#f7f7f8', margin: '-8px 0', padding: '8px 0', borderRadius: 8 } : undefined}>\n <StatusIcon yes={isYes(row.ours?.status)} accent={accent} />\n {row.ours?.text && <span className=\"text-xs text-gray-500 text-center\">{row.ours.text}</span>}\n </div>\n <div className=\"flex flex-col items-center gap-1 min-w-[120px]\">\n <StatusIcon yes={isYes(row.competitor?.status)} accent={accent} />\n {row.competitor?.text && <span className=\"text-xs text-gray-500 text-center\">{row.competitor.text}</span>}\n </div>\n </div>\n ))}\n\n {cta_label && (\n <div className=\"px-6 py-6 border-t border-gray-100 flex justify-center\">\n <a\n href={cta_url || '#'}\n className=\"inline-block text-sm font-semibold px-6 py-2.5 rounded-lg text-white\"\n style={{ backgroundColor: '#111827' }}\n >\n {cta_label}\n </a>\n </div>\n )}\n </div>\n </div>\n </div>\n </section>\n );\n}\n\nexport default FeatureComparisonVs;\n","import React, { useState } from 'react';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface FeatureComparisonProduct {\n name?: string;\n price?: string;\n image?: string;\n tag?: string;\n badge?: string;\n specs?: string[];\n score?: number;\n}\n\nexport interface FeatureComparisonCategory {\n label?: string;\n /** One value per product, in product order. */\n values?: string[];\n}\n\nexport interface FeatureComparisonCardsProps {\n heading?: string;\n description?: string;\n products?: FeatureComparisonProduct[];\n categories?: FeatureComparisonCategory[];\n background_color?: StackableColorValue;\n accent_color?: StackableColorValue;\n className?: string;\n}\n\nconst DEFAULT_PRODUCTS: FeatureComparisonProduct[] = [\n { name: 'Sony A7C II', price: '$2,199', image: 'https://images.unsplash.com/photo-1516035069371-29a1b244cc32?w=600&h=450&fit=crop', tag: 'Full-Frame', specs: ['33MP Full-Frame', '4K/60p Video', '7.0EV IBIS'], score: 78 },\n { name: 'Fujifilm X-T5', price: '$1,699', image: 'https://images.unsplash.com/photo-1516724562728-afc824a36e84?w=600&h=450&fit=crop', tag: 'APS-C', badge: 'Best Overall', specs: ['40MP APS-C', '6.2K/30p Video', '7.0EV IBIS'], score: 92 },\n { name: 'Canon EOS R8', price: '$1,299*', image: 'https://images.unsplash.com/photo-1502920917128-1aa500764cbd?w=600&h=450&fit=crop', tag: 'Full-Frame', specs: ['24.2MP Full-Frame', '4K/60p Video', 'No IBIS'], score: 70 },\n];\n\nconst DEFAULT_CATEGORIES: FeatureComparisonCategory[] = [\n { label: 'Portability', values: ['Compact, 514g', 'Very compact, 557g', 'Compact, 461g'] },\n { label: 'Battery Life', values: ['530 shots', '580 shots', '290 shots'] },\n { label: 'Stabilization', values: ['5-axis IBIS', '5-axis IBIS', 'Lens-based only'] },\n { label: '4K Video', values: ['4K/60p', '6.2K/30p, 4K/60p', '4K/60p'] },\n { label: 'Low-Light', values: ['ISO 100–51200', 'ISO 125–12800', 'ISO 100–102400'] },\n { label: 'Ease of Use', values: ['Beginner friendly', 'Enthusiast controls', 'Beginner friendly'] },\n { label: 'Value', values: ['Good', 'Best value', 'Great value'] },\n];\n\nfunction ScoreBar({ value, color }: { value: number; color: string }) {\n return (\n <div className=\"h-1.5 w-full rounded-full bg-gray-100 overflow-hidden\">\n <div className=\"h-full rounded-full\" style={{ width: `${Math.max(0, Math.min(100, value))}%`, backgroundColor: color }} />\n </div>\n );\n}\n\nexport function FeatureComparisonCards({\n heading = 'Detailed Comparison',\n description,\n products: productsProp,\n categories: categoriesProp,\n background_color,\n accent_color,\n className,\n}: FeatureComparisonCardsProps) {\n const products = productsProp?.length ? productsProp : DEFAULT_PRODUCTS;\n const categories = categoriesProp?.length ? categoriesProp : DEFAULT_CATEGORIES;\n const [activeTab, setActiveTab] = useState(0);\n\n const bgColor = resolveStackableColor(background_color) || '#ffffff';\n const accent = resolveStackableColor(accent_color) || '#4f46e5';\n\n const bestIdx = products.reduce((best, p, i) => ((p.score ?? 0) > (products[best]?.score ?? 0) ? i : best), 0);\n const active = categories[activeTab];\n\n return (\n <section className={className} style={{ backgroundColor: bgColor }}>\n <div className=\"component-container mx-auto px-6 py-16\">\n <div className=\"rounded-2xl overflow-hidden mb-14\" style={{ background: `linear-gradient(90deg, ${accent}, ${accent}cc)` }}>\n <div className=\"grid grid-cols-1 sm:grid-cols-3 gap-px bg-white/20 p-px\">\n {products.map((product, i) => {\n const isBest = i === bestIdx && product.badge;\n return (\n <div key={i} className=\"bg-white flex flex-col\">\n <div className=\"relative bg-gray-50\">\n {product.image ? (\n <img src={product.image} alt={product.name} className=\"w-full h-40 object-cover\" />\n ) : (\n <div className=\"w-full h-40 flex items-center justify-center text-gray-300 text-xs\">No image</div>\n )}\n {product.tag && (\n <span className=\"absolute top-3 left-3 text-[10px] font-semibold uppercase tracking-wide px-2 py-1 rounded bg-black/70 text-white\">\n {product.tag}\n </span>\n )}\n {isBest && (\n <span\n className=\"absolute top-3 right-3 text-[10px] font-semibold px-2.5 py-1 rounded-full text-white\"\n style={{ backgroundColor: accent }}\n >\n {product.badge}\n </span>\n )}\n </div>\n <div className=\"p-5 flex-1 flex flex-col\">\n <div className=\"font-bold text-gray-900\">{product.name}</div>\n {product.price && <div className=\"mt-1 font-semibold\" style={{ color: accent }}>{product.price}</div>}\n <ul className=\"mt-3 space-y-1.5 flex-1\">\n {(product.specs ?? []).map((spec, si) => (\n <li key={si} className=\"text-xs text-gray-500\">{spec}</li>\n ))}\n </ul>\n {typeof product.score === 'number' && (\n <div className=\"mt-4\">\n <div className=\"text-[11px] text-gray-400 mb-1.5\">Overall Score</div>\n <ScoreBar value={product.score} color={accent} />\n </div>\n )}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n\n <div className=\"text-center mb-8\">\n {heading && <h3 className=\"text-2xl font-bold text-gray-900\">{heading}</h3>}\n {description && <p className=\"mt-3 text-sm text-gray-600 max-w-xl mx-auto\">{description}</p>}\n </div>\n\n <div className=\"flex flex-wrap justify-center gap-2 mb-8\">\n {categories.map((cat, i) => (\n <button\n key={i}\n onClick={() => setActiveTab(i)}\n className={`text-sm font-medium px-4 py-2 rounded-full border transition-colors ${\n activeTab === i ? 'text-white border-transparent' : 'text-gray-600 border-gray-200 hover:bg-gray-50'\n }`}\n style={activeTab === i ? { backgroundColor: accent } : undefined}\n >\n {cat.label}\n </button>\n ))}\n </div>\n\n {active && (\n <div className=\"rounded-2xl border border-gray-200 overflow-hidden max-w-3xl mx-auto\">\n <div className={`grid`} style={{ gridTemplateColumns: `repeat(${products.length}, 1fr)` }}>\n {products.map((product, i) => (\n <div key={i} className={`p-6 text-center ${i > 0 ? 'border-l border-gray-100' : ''} ${i === bestIdx ? '' : ''}`} style={i === bestIdx ? { backgroundColor: `${accent}0d` } : undefined}>\n <div className=\"text-xs font-semibold text-gray-400 mb-2\">{product.name}</div>\n <div className=\"text-sm font-medium text-gray-800\">{active.values?.[i] ?? '—'}</div>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n </section>\n );\n}\n\nexport default FeatureComparisonCards;\n","/* eslint-disable @next/next/no-img-element */\nimport React from 'react';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport interface TeamBannerMember {\n /** Asset URL, or a Contentstack asset object — both are accepted. */\n image?: string | { url?: string };\n image_alt?: string;\n name?: string;\n designation?: string;\n /** Draws the accent-coloured border, like the featured centre card. */\n highlight?: boolean;\n}\n\nexport interface TeamBannerProps {\n eyebrow_text?: string;\n heading?: string;\n subheading?: string;\n heading_alignment?: 'left' | 'center' | 'right' | string;\n /** Cards per row on wide screens; wraps naturally below that. */\n columns?: number;\n /** Zig-zag the cards vertically (odd cards pushed down). */\n staggered?: boolean;\n card_aspect?: 'Portrait Tall' | 'Portrait' | 'Square' | string;\n members?: TeamBannerMember[];\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n /** Eyebrow, designation and the featured card's border. */\n accent_color?: StackableColorValue;\n className?: string;\n}\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveImage(image: TeamBannerMember['image']): string {\n if (!image) return '';\n if (typeof image === 'string') return image.trim();\n return typeof image.url === 'string' ? image.url.trim() : '';\n}\n\nconst ASPECT_RATIOS: Record<string, string> = {\n 'Portrait Tall': '10 / 21',\n Portrait: '3 / 4',\n Square: '1 / 1',\n};\n\nconst ALIGNMENTS: Record<string, string> = {\n left: 'text-left items-start',\n center: 'text-center items-center',\n right: 'text-right items-end',\n};\n\nconst SERIF_STACK = 'var(--stackables-font-serif, \"Playfair Display\", Georgia, \"Times New Roman\", serif)';\n\nconst CARD_GAP_PX = 10;\nconst STAGGER_REM = 2.5;\n\nexport function TeamBanner({\n eyebrow_text = '',\n heading = '',\n subheading = '',\n heading_alignment = 'center',\n columns = 5,\n staggered = true,\n card_aspect = 'Portrait Tall',\n members = [],\n background_color,\n text_color,\n accent_color,\n className = '',\n}: TeamBannerProps) {\n\n const resolvedBg = resolveStackableColor(background_color);\n const resolvedText = resolveStackableColor(text_color);\n const accent = resolveStackableColor(accent_color) || '#c9a55c';\n\n const sectionBg = 'bg-neutral-950';\n const headingColor = 'text-white';\n const subColor = 'text-neutral-400';\n\n const sectionStyle = resolvedBg ? { backgroundColor: resolvedBg } : undefined;\n const textStyle: React.CSSProperties | undefined = resolvedText ? { color: resolvedText } : undefined;\n\n const alignClass = ALIGNMENTS[heading_alignment] ?? ALIGNMENTS.center;\n const aspect = ASPECT_RATIOS[card_aspect] ?? ASPECT_RATIOS['Portrait Tall'];\n\n // Clamped so bad content can't produce 0 or 40 columns.\n const safeColumns = Math.max(1, Math.min(6, Math.round(columns) || 5));\n // flex-basis + wrap gives responsiveness without media queries: cards hold\n // their share on wide screens and wrap once minWidth can't be satisfied.\n const cardBasis = `calc((100% - ${(safeColumns - 1) * CARD_GAP_PX}px) / ${safeColumns})`;\n\n const visibleMembers = (members ?? []).filter(\n (m) => Boolean(resolveImage(m?.image)) || Boolean(m?.name?.trim()),\n );\n\n return (\n <section className={`${sectionBg} ${className}`.trim()} style={sectionStyle}>\n <div className=\"component-container mx-auto px-6 py-16 lg:py-24\">\n {/* ── Heading block ─────────────────────────────────────────────── */}\n {(eyebrow_text || heading || subheading) && (\n <div className={`flex flex-col ${alignClass} mb-14 lg:mb-20`}>\n {eyebrow_text && (\n <div className=\"flex items-center gap-3\">\n <span aria-hidden className=\"h-px w-10\" style={{ backgroundColor: accent }} />\n <span\n className=\"text-[11px] font-medium uppercase tracking-[0.25em]\"\n style={{ color: accent }}\n >\n {eyebrow_text}\n </span>\n <span aria-hidden className=\"h-px w-10\" style={{ backgroundColor: accent }} />\n </div>\n )}\n\n {heading && (\n <h2\n className={`mt-5 text-3xl italic uppercase tracking-[0.06em] sm:text-4xl lg:text-5xl ${headingColor}`}\n style={{ fontFamily: SERIF_STACK, ...textStyle }}\n >\n {heading}\n </h2>\n )}\n\n {subheading && (\n <p className={`mt-4 max-w-2xl text-sm leading-relaxed ${subColor}`}>{subheading}</p>\n )}\n </div>\n )}\n\n {/* ── Cards ─────────────────────────────────────────────────────── */}\n {visibleMembers.length === 0 ? (\n <p className={`text-sm ${subColor}`}>No team members added yet.</p>\n ) : (\n <ul\n className=\"flex list-none flex-wrap justify-center p-0\"\n style={{ gap: `${CARD_GAP_PX}px` }}\n >\n {visibleMembers.map((member, i) => {\n const src = resolveImage(member.image);\n const isOffset = staggered && i % 2 === 1;\n\n return (\n <li\n key={`${member.name ?? 'member'}-${i}`}\n className=\"relative min-w-[180px] flex-auto overflow-hidden\"\n style={{\n flexBasis: cardBasis,\n aspectRatio: aspect,\n marginTop: isOffset ? `${STAGGER_REM}rem` : undefined,\n marginBottom: isOffset ? undefined : `${STAGGER_REM}rem`,\n border: member.highlight ? `1px solid ${accent}` : '1px solid transparent',\n }}\n >\n {src ? (\n <img\n src={src}\n alt={member.image_alt || member.name || 'Team member'}\n className=\"absolute inset-0 h-full w-full object-cover\"\n loading=\"lazy\"\n />\n ) : (\n <div className=\"absolute inset-0 bg-neutral-800\" aria-hidden />\n )}\n\n {/* Bottom scrim so the name stays legible over any photo */}\n <div\n aria-hidden\n className=\"absolute inset-0\"\n style={{\n backgroundImage:\n 'linear-gradient(to top, rgba(0,0,0,0.88) 0%, rgba(0,0,0,0.55) 22%, rgba(0,0,0,0) 55%)',\n }}\n />\n\n <div className=\"absolute inset-x-0 bottom-0 px-5 pb-6\">\n <span aria-hidden className=\"mb-3 block h-px w-6\" style={{ backgroundColor: accent }} />\n {member.name && (\n <p\n className=\"text-lg italic leading-tight text-white\"\n style={{ fontFamily: SERIF_STACK }}\n >\n {member.name}\n </p>\n )}\n {member.designation && (\n <p\n className=\"mt-1.5 text-[10px] font-medium uppercase tracking-[0.18em]\"\n style={{ color: accent }}\n >\n {member.designation}\n </p>\n )}\n </div>\n </li>\n );\n })}\n </ul>\n )}\n </div>\n </section>\n );\n}\n\nexport default TeamBanner;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { resolveStackableColor, hexToRgba } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\nexport type SocialPostPlatform = 'x' | 'instagram' | 'tiktok';\n\nexport interface SocialPostEmbedProps {\n /** Public post URL — platform is detected from the domain (x.com/twitter.com,\n * instagram.com, or tiktok.com), so there's no separate platform field to keep in\n * sync. LinkedIn/Facebook aren't supported — they don't offer a \"just paste a\n * public post URL\" embed without extra setup (LinkedIn requires their own generated\n * embed HTML, Facebook now requires an App ID). Works for any post type a platform's\n * own widget renders — image, video, GIF, poll — since that's the platform's embed\n * script rendering whatever the post actually contains, not something this component\n * special-cases. */\n post_url?: string;\n /** Optional supplementary caption shown below the embed. */\n caption?: string;\n /** Position of the embed within its container. */\n alignment?: 'left' | 'center' | 'right' | string;\n /** X only — when the linked post is itself a reply, hides the parent tweet X\n * would otherwise show above it, so the embed focuses on just this one post\n * (maps to X's own `data-conversation=\"none\"` embed attribute). Has no visible\n * effect on a post that isn't a reply. */\n hide_parent_context?: boolean;\n /** Instagram only — shows the post's own caption text under the embed, distinct\n * from the custom `caption` field above (maps to Instagram's own\n * `data-instgrm-captioned` embed attribute). Ignored for a profile link, since\n * that attribute is documented for posts only and breaks Instagram's embed\n * widget when applied to a profile URL. */\n show_native_caption?: boolean;\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n className?: string;\n}\n\ninterface PlatformConfig {\n label: string;\n scriptSrc: string;\n /** Re-scans the DOM for not-yet-processed embeds. Needed because a script that's\n * already loaded (e.g. a second embed on the same page) won't automatically pick\n * up a blockquote React mounts afterwards — each platform exposes its own hook. */\n process: () => void;\n}\n\nconst PLATFORM_CONFIG: Record<SocialPostPlatform, PlatformConfig> = {\n x: {\n label: 'X',\n scriptSrc: 'https://platform.twitter.com/widgets.js',\n process: () => (window as any).twttr?.widgets?.load(),\n },\n instagram: {\n label: 'Instagram',\n scriptSrc: 'https://www.instagram.com/embed.js',\n process: () => (window as any).instgrm?.Embeds?.process(),\n },\n tiktok: {\n label: 'TikTok',\n scriptSrc: 'https://www.tiktok.com/embed.js',\n // TikTok's script scans for `.tiktok-embed` blockquotes itself on load and\n // observes the DOM for more — it has no public manual re-process hook.\n process: () => {},\n },\n};\n\nconst PLATFORM_ICON_PATH: Record<SocialPostPlatform, string> = {\n x: 'M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z',\n instagram:\n 'M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z',\n tiktok:\n 'M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.43 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z',\n};\n\nfunction PlatformIcon({ platform, className }: { platform: SocialPostPlatform; className?: string }) {\n return (\n <svg viewBox=\"0 0 24 24\" className={className} fill=\"currentColor\" aria-hidden=\"true\">\n <path d={PLATFORM_ICON_PATH[platform]} />\n </svg>\n );\n}\n\n/** Loaded once per `src` for the whole page — these widget scripts scan the entire\n * document, so re-injecting one for every embed instance would be wasteful and can\n * cause them to double-process existing embeds. */\nconst scriptPromises = new Map<string, Promise<void>>();\n\nfunction loadScript(src: string): Promise<void> {\n const cached = scriptPromises.get(src);\n if (cached) return cached;\n\n const promise = new Promise<void>((resolve, reject) => {\n const existing = document.querySelector<HTMLScriptElement>(`script[src=\"${src}\"]`);\n if (existing) {\n resolve();\n return;\n }\n const script = document.createElement('script');\n script.src = src;\n script.async = true;\n script.onload = () => resolve();\n script.onerror = () => reject(new Error(`Failed to load ${src}`));\n document.body.appendChild(script);\n });\n\n scriptPromises.set(src, promise);\n return promise;\n}\n\n/** Reads the platform straight off the URL's domain — an unrecognized/malformed\n * URL returns null rather than guessing, so the fallback can say so explicitly. */\nfunction detectPlatform(url?: string): SocialPostPlatform | null {\n if (!url?.trim()) return null;\n let host: string;\n try {\n host = new URL(url.trim()).hostname.toLowerCase().replace(/^www\\./, '');\n } catch {\n return null;\n }\n if (host === 'twitter.com' || host === 'x.com') return 'x';\n if (host === 'instagram.com') return 'instagram';\n if (host === 'tiktok.com') return 'tiktok';\n return null;\n}\n\nconst INSTAGRAM_RESERVED_PATHS = new Set([\n 'p', 'reel', 'reels', 'tv', 'explore', 'accounts', 'direct', 'stories', 'about', 'developer',\n]);\n\n/** Instagram's public embed.js only documents post/reel/tv permalinks — a profile\n * URL (instagram.com/{username}/) isn't an officially supported input for it, and\n * in practice the widget's handling of that case is inconsistent. Detecting a\n * profile link here lets it get its own deliberate, reliable treatment instead of\n * being forced through the post-embed widget and hoping for the best. */\nfunction getInstagramProfileHandle(url: string): string | null {\n let path: string;\n try {\n path = new URL(url).pathname;\n } catch {\n return null;\n }\n const segments = path.split('/').filter(Boolean);\n if (segments.length !== 1) return null;\n const handle = segments[0].toLowerCase();\n if (INSTAGRAM_RESERVED_PATHS.has(handle)) return null;\n return segments[0];\n}\n\nconst INSTAGRAM_POST_PATH_TYPES = new Set(['p', 'reel', 'tv']);\n\n/** Instagram accepts both `instagram.com/p/{shortcode}/` and the username-prefixed\n * `instagram.com/{username}/p/{shortcode}/` as a post's permalink — copying a link\n * from within someone's profile grid gives you the second form. But embed.js builds\n * its iframe src by appending `/embed/` directly onto whatever permalink it's given,\n * and the username-prefixed variant's `/embed/` route responds with\n * `X-Frame-Options: DENY`, so the browser refuses to display it — the post silently\n * never loads. Stripping any username prefix down to the bare `/p|reel|tv/{shortcode}/`\n * form avoids that route entirely. */\nfunction normalizeInstagramPostUrl(url: string): string {\n let parsed: URL;\n try {\n parsed = new URL(url);\n } catch {\n return url;\n }\n const segments = parsed.pathname.split('/').filter(Boolean);\n const typeIndex = segments.findIndex((s) => INSTAGRAM_POST_PATH_TYPES.has(s.toLowerCase()));\n if (typeIndex === -1 || !segments[typeIndex + 1]) return url;\n return `https://www.instagram.com/${segments[typeIndex]}/${segments[typeIndex + 1]}/`;\n}\n\nexport function SocialPostEmbed({\n post_url = 'https://twitter.com/jack/status/20',\n caption,\n alignment = 'center',\n hide_parent_context = false,\n show_native_caption = false,\n background_color,\n text_color,\n className = '',\n}: SocialPostEmbedProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n // 'loading' shows a platform-branded skeleton instead of blank space while the\n // widget script fetches and renders the post. Blocked ad-blockers, network\n // failures, an unrecognized URL, or a platform's script simply never shipping\n // the iframe all land on 'failed', which shows the same link-card treatment.\n const [status, setStatus] = useState<'loading' | 'ready' | 'failed'>('loading');\n const resolvedPlatform = detectPlatform(post_url);\n const config = resolvedPlatform ? PLATFORM_CONFIG[resolvedPlatform] : null;\n const hasUrl = Boolean(post_url?.trim());\n const instagramHandle =\n resolvedPlatform === 'instagram' && post_url ? getInstagramProfileHandle(post_url) : null;\n const instagramEmbedPermalink =\n resolvedPlatform === 'instagram' && post_url && !instagramHandle\n ? normalizeInstagramPostUrl(post_url)\n : post_url;\n\n useEffect(() => {\n if (!hasUrl || !config) {\n setStatus('failed');\n return;\n }\n let cancelled = false;\n let pollId: ReturnType<typeof setInterval> | null = null;\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n setStatus('loading');\n\n const isRendered = () => {\n const iframe = containerRef.current?.querySelector('iframe');\n return Boolean(iframe && iframe.getBoundingClientRect().height > 20);\n };\n\n loadScript(config.scriptSrc)\n .then(() => {\n if (cancelled) return;\n // Let React commit the blockquote markup before the widget script scans for it.\n requestAnimationFrame(() => config.process());\n // Polls for success so the skeleton clears the moment the embed is actually\n // ready, rather than always waiting out the full timeout below.\n pollId = setInterval(() => {\n if (cancelled) return;\n if (isRendered()) {\n setStatus('ready');\n if (pollId) clearInterval(pollId);\n if (timeoutId) clearTimeout(timeoutId);\n }\n }, 250);\n // Some ad-/tracker-blockers let this request succeed but return a no-op script,\n // so `process()` silently does nothing and no iframe ever replaces the\n // blockquote — a plain onerror handler can't catch that, so fall back on a timeout.\n // Checking for more than a sliver of height also catches the case where the\n // platform *did* create an iframe but its own embed code errored internally\n // and left it collapsed (seen with Instagram in some environments). TikTok's\n // iframe in particular can take a couple of seconds to resize itself via\n // postMessage, so this is checked well after that, not right at the edge of it.\n timeoutId = setTimeout(() => {\n if (cancelled) return;\n setStatus(isRendered() ? 'ready' : 'failed');\n if (pollId) clearInterval(pollId);\n }, 5000);\n })\n .catch(() => {\n if (!cancelled) setStatus('failed');\n });\n\n return () => {\n cancelled = true;\n if (pollId) clearInterval(pollId);\n if (timeoutId) clearTimeout(timeoutId);\n };\n }, [resolvedPlatform, post_url, hasUrl, config, hide_parent_context, show_native_caption, instagramHandle]);\n\n const sectionThemeClasses = 'bg-white text-neutral-900';\n const captionThemeClasses = 'text-neutral-600';\n const fallbackCardThemeClasses = 'border-neutral-200 bg-neutral-50';\n const fallbackHeadingThemeClasses = 'text-neutral-900';\n const fallbackSubtextThemeClasses = 'text-neutral-500';\n const fallbackButtonThemeClasses = 'bg-neutral-900 text-white hover:bg-neutral-800';\n const skeletonThemeClasses = 'border-neutral-200 bg-neutral-50 text-neutral-300';\n\n const alignmentWrapperClasses =\n alignment === 'left' ? 'mr-auto ml-0'\n : alignment === 'right' ? 'ml-auto mr-0'\n : 'mx-auto';\n\n const alignmentJustifyClasses =\n alignment === 'left' ? 'justify-start'\n : alignment === 'right' ? 'justify-end'\n : 'justify-center';\n\n const fallbackCopy = !hasUrl\n ? {\n heading: 'No post linked yet',\n subtext: 'Add a public X, Instagram, or TikTok post URL to embed it here.',\n }\n : !config\n ? {\n heading: 'Unsupported link',\n subtext: 'This URL isn’t a supported X, Instagram, or TikTok post link.',\n }\n : {\n heading: 'Couldn’t load this post',\n subtext: `This ${config.label} post may have been removed, made private, or blocked by your browser.`,\n };\n\n const resolvedBg = resolveStackableColor(background_color);\n const resolvedText = resolveStackableColor(text_color);\n const sectionStyle = resolvedBg ? { backgroundColor: resolvedBg } : undefined;\n // The fallback heading/subtext and the caption each carry their own theme-based\n // text-color class, which wins over a color merely inherited from an ancestor —\n // so a custom text_color has to be applied directly on those elements.\n const headingStyle: React.CSSProperties | undefined = resolvedText ? { color: resolvedText } : undefined;\n const mutedTextStyle: React.CSSProperties | undefined = resolvedText ? { color: hexToRgba(resolvedText, 0.65) } : undefined;\n\n const showFallback = status === 'failed';\n const isLoading = status === 'loading';\n\n return (\n <section className={`${sectionThemeClasses} ${className}`.trim()} style={sectionStyle}>\n <div className=\"component-container mx-auto px-6 py-10 sm:py-14\">\n <div className={`max-w-[550px] ${alignmentWrapperClasses}`}>\n {!showFallback && config && (\n <div className=\"relative\">\n {isLoading && (\n <div\n className={`absolute inset-0 flex min-h-[300px] animate-pulse items-center justify-center rounded-2xl border ${skeletonThemeClasses}`}\n aria-hidden=\"true\"\n >\n <PlatformIcon platform={resolvedPlatform!} className=\"h-10 w-10\" />\n </div>\n )}\n <div\n ref={containerRef}\n key={`${resolvedPlatform}-${post_url}-${hide_parent_context}-${show_native_caption}`}\n className={`flex ${alignmentJustifyClasses} ${isLoading ? 'invisible' : ''}`}\n style={isLoading ? { minHeight: 300 } : undefined}\n >\n {resolvedPlatform === 'x' && (\n <blockquote\n className=\"twitter-tweet\"\n data-conversation={hide_parent_context ? 'none' : undefined}\n >\n <a href={post_url}>{post_url}</a>\n </blockquote>\n )}\n {resolvedPlatform === 'instagram' && (\n <blockquote\n className=\"instagram-media\"\n data-instgrm-permalink={instagramEmbedPermalink}\n data-instgrm-version=\"14\"\n {...(show_native_caption && !instagramHandle ? { 'data-instgrm-captioned': '' } : {})}\n style={{ width: '100%' }}\n />\n )}\n {resolvedPlatform === 'tiktok' && (\n <blockquote className=\"tiktok-embed\" cite={post_url} style={{ maxWidth: '100%' }}>\n <a href={post_url}>{post_url}</a>\n </blockquote>\n )}\n </div>\n </div>\n )}\n\n {showFallback && (\n <div className={`flex flex-col items-center gap-4 rounded-2xl border px-8 py-10 text-center ${fallbackCardThemeClasses}`}>\n <img\n src=\"https://wtxrbukgejhzplfwzamn.supabase.co/storage/v1/object/public/stackables-component-images/misc/1787051522598-gemini-svg.svg\"\n alt=\"\"\n aria-hidden=\"true\"\n className=\"h-20 w-auto select-none\"\n />\n <div className=\"flex flex-col gap-1\">\n <p className={`text-sm font-semibold ${fallbackHeadingThemeClasses}`} style={headingStyle}>{fallbackCopy.heading}</p>\n <p className={`text-sm leading-relaxed ${fallbackSubtextThemeClasses}`} style={mutedTextStyle}>{fallbackCopy.subtext}</p>\n </div>\n {hasUrl && (\n <a\n href={post_url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={`inline-flex items-center justify-center rounded-lg px-5 py-2.5 text-sm font-semibold no-underline shadow-sm transition-colors ${fallbackButtonThemeClasses}`}\n >\n View post{config ? ` on ${config.label}` : ''} →\n </a>\n )}\n </div>\n )}\n\n {caption && <p className={`mt-3 text-center text-sm leading-relaxed ${captionThemeClasses}`} style={mutedTextStyle}>{caption}</p>}\n </div>\n </div>\n </section>\n );\n}\n\nexport default SocialPostEmbed;\n","import React, { useEffect, useRef, useState } from 'react';\nimport {\n FaInstagram,\n FaFacebook,\n FaXTwitter,\n FaYoutube,\n FaDiscord,\n FaMedium,\n FaReddit,\n FaLinkedin,\n FaTiktok,\n FaGithub,\n FaWhatsapp,\n FaThreads,\n FaPinterest,\n FaTelegram,\n FaTwitch,\n FaSpotify,\n FaSlack,\n FaMastodon,\n FaBluesky,\n FaSnapchat,\n} from 'react-icons/fa6';\nimport { UserGroupIcon } from '@heroicons/react/24/solid';\nimport type { IconType } from 'react-icons';\nimport { resolveStackableColor, hexToRgba } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\n/**\n * Curated platform list. `react-icons` is already a peer dependency and is used\n * by both footers, so the brand marks cost no new package.\n *\n * Each entry carries the platform's own official colour, which is what the card\n * tint and icon default to. Editors override it per row with `brand_color` when\n * their branding calls for something else.\n */\nconst PLATFORMS: Record<string, { icon: IconType; colour: string; label: string }> = {\n Instagram: { icon: FaInstagram, colour: '#e4405f', label: 'Follow us on Instagram' },\n Facebook: { icon: FaFacebook, colour: '#1877f2', label: 'Follow us on Facebook' },\n X: { icon: FaXTwitter, colour: '#000000', label: 'Stay up to date on X' },\n YouTube: { icon: FaYoutube, colour: '#ff0000', label: 'Watch our latest videos' },\n Discord: { icon: FaDiscord, colour: '#5865f2', label: 'Join the Discord' },\n Medium: { icon: FaMedium, colour: '#000000', label: 'Read us on Medium' },\n Reddit: { icon: FaReddit, colour: '#ff4500', label: 'Join the community on Reddit' },\n LinkedIn: { icon: FaLinkedin, colour: '#0a66c2', label: 'Connect on LinkedIn' },\n TikTok: { icon: FaTiktok, colour: '#000000', label: 'Follow us on TikTok' },\n GitHub: { icon: FaGithub, colour: '#181717', label: 'Browse our code on GitHub' },\n WhatsApp: { icon: FaWhatsapp, colour: '#25d366', label: 'Message us on WhatsApp' },\n Threads: { icon: FaThreads, colour: '#000000', label: 'Follow us on Threads' },\n Pinterest: { icon: FaPinterest, colour: '#bd081c', label: 'Save us on Pinterest' },\n Telegram: { icon: FaTelegram, colour: '#26a5e4', label: 'Join us on Telegram' },\n Twitch: { icon: FaTwitch, colour: '#9146ff', label: 'Catch our streams on Twitch' },\n Spotify: { icon: FaSpotify, colour: '#1db954', label: 'Listen on Spotify' },\n Slack: { icon: FaSlack, colour: '#4a154b', label: 'Join our Slack' },\n Mastodon: { icon: FaMastodon, colour: '#6364ff', label: 'Follow us on Mastodon' },\n Bluesky: { icon: FaBluesky, colour: '#0285ff', label: 'Follow us on Bluesky' },\n Snapchat: { icon: FaSnapchat, colour: '#fffc00', label: 'Add us on Snapchat' },\n};\n\nexport interface SocialLinksItem {\n /** One of the curated platforms; decides the brand mark and its default colour. */\n platform?: string;\n /** Account name. Falls back to the section-level handle, so it's set once by default. */\n handle?: string;\n /** Line under the handle. Falls back to the platform's own wording. */\n label?: string;\n url?: string;\n /** Overrides the platform's official colour for this card only. */\n brand_color?: StackableColorValue;\n}\n\nexport interface SocialLinksProps {\n heading?: string;\n /** Small group glyph beside the heading. */\n show_heading_icon?: boolean;\n /** Used by every card that doesn't set its own handle. */\n handle?: string;\n /** Cards per row. They stay equal width, so the grid keeps square edges. */\n columns?: number;\n /**\n * `Brand tint` washes each card in its platform colour. `Neutral` makes every\n * card identical and leaves only the mark coloured. `Outline` is a hairline\n * border with no fill.\n */\n card_style?: 'Brand tint' | 'Neutral' | 'Outline' | string;\n /** Colours the mark with its brand colour. Off renders every mark in the text colour. */\n colour_icons?: boolean;\n links?: SocialLinksItem[];\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n className?: string;\n}\n\nconst DEFAULT_BG = '#ffffff';\nconst DEFAULT_TEXT = '#111827';\n\n/** Equal-width tracks, so cards never size to their content. */\nconst GRID_GAP_PX = 12;\n\n/**\n * Narrowest a card may get before its handle and label start truncating. The\n * authored column count is reduced to respect this: at 390px two columns left\n * 141px per card, which rendered \"DevBlogg\" as \"DevBl…\" and a three-column row\n * as single letters.\n */\nconst MIN_CARD_PX = 190;\n\nexport function SocialLinks({\n heading = 'Follow Us',\n show_heading_icon = true,\n handle = '',\n columns = 2,\n card_style = 'Brand tint',\n colour_icons = true,\n links = [],\n background_color,\n text_color,\n className = '',\n}: SocialLinksProps) {\n const gridRef = useRef<HTMLDivElement>(null);\n const [gridWidth, setGridWidth] = useState(0);\n\n // Measured rather than a CSS media query, so it tracks the component's own box\n // — the storybook preview simulates width with a fixed-px wrapper that media\n // queries can't see. Same approach as BentoGrid.\n useEffect(() => {\n const el = gridRef.current;\n if (!el) return;\n const ro = new ResizeObserver(([entry]) => setGridWidth(entry.contentRect.width));\n ro.observe(el);\n return () => ro.disconnect();\n }, []);\n\n const bg = resolveStackableColor(background_color) || DEFAULT_BG;\n const text = resolveStackableColor(text_color) || DEFAULT_TEXT;\n\n const visible = (links ?? []).filter(\n (l) => Boolean(l?.platform?.trim()) || Boolean(l?.handle?.trim()) || Boolean(l?.url?.trim()),\n );\n\n // Clamped so bad content can't produce a single 12-wide row or zero columns.\n const safeColumns = Math.max(1, Math.min(4, Math.round(columns) || 2));\n // Before the first measurement, render at the authored count so the\n // server-rendered markup matches what a wide container settles on.\n const fitColumns =\n gridWidth === 0\n ? safeColumns\n : Math.max(1, Math.min(safeColumns, Math.floor((gridWidth + GRID_GAP_PX) / (MIN_CARD_PX + GRID_GAP_PX))));\n\n return (\n <section className={className} style={{ backgroundColor: bg }}>\n <div className=\"component-container mx-auto px-6 py-14 lg:py-20\">\n <div\n className=\"mx-auto max-w-3xl rounded-3xl p-6 sm:p-8\"\n style={{ backgroundColor: bg, boxShadow: `0 1px 3px ${hexToRgba(text, 0.08)}, 0 8px 32px ${hexToRgba(text, 0.06)}` }}\n >\n {heading && (\n <div className=\"mb-6 flex items-center gap-2.5\">\n {show_heading_icon && (\n <UserGroupIcon aria-hidden className=\"size-6 shrink-0\" style={{ color: text }} />\n )}\n <h2 className=\"text-2xl font-bold tracking-tight\" style={{ color: text }}>\n {heading}\n </h2>\n </div>\n )}\n\n <div ref={gridRef} className=\"w-full\">\n {visible.length === 0 ? (\n <p className=\"text-sm\" style={{ color: hexToRgba(text, 0.6) }}>\n No social links added yet.\n </p>\n ) : (\n // A grid rather than flex-wrap: every card takes an equal track, so\n // rows align on both edges instead of ending ragged at content width.\n <ul\n className=\"m-0 grid list-none p-0\"\n style={{\n gridTemplateColumns: `repeat(${fitColumns}, minmax(0, 1fr))`,\n gap: `${GRID_GAP_PX}px`,\n }}\n >\n {visible.map((item, i) => {\n const preset = PLATFORMS[item.platform ?? ''] ?? undefined;\n const Icon = preset?.icon;\n const brand = resolveStackableColor(item.brand_color) || preset?.colour || text;\n const name = item.handle?.trim() || handle;\n const line = item.label?.trim() || preset?.label || '';\n const href = item.url?.trim();\n\n const tinted = card_style === 'Brand tint';\n const outlined = card_style === 'Outline';\n\n const cardStyle: React.CSSProperties = tinted\n ? { backgroundColor: hexToRgba(brand, 0.1) }\n : outlined\n ? { border: `1px solid ${hexToRgba(text, 0.14)}` }\n : { backgroundColor: hexToRgba(text, 0.05) };\n\n const body = (\n <>\n {Icon && (\n <Icon\n aria-hidden\n className=\"size-8 shrink-0\"\n style={{ color: colour_icons ? brand : text }}\n />\n )}\n <span className=\"min-w-0\">\n {name && (\n <span className=\"block truncate text-base font-semibold\" style={{ color: text }}>\n {name}\n </span>\n )}\n {line && (\n <span className=\"block truncate text-sm\" style={{ color: hexToRgba(text, 0.7) }}>\n {line}\n </span>\n )}\n </span>\n </>\n );\n\n // Fixed height keeps every card identical whether or not it has a\n // second line, which is what the equal tracks alone can't promise.\n const shell =\n 'flex h-full min-h-[4.5rem] w-full items-center gap-3.5 rounded-2xl px-4 py-3 transition-opacity duration-200';\n\n return (\n <li key={`${item.platform}-${i}`} className=\"min-w-0\">\n {href ? (\n <a\n href={href}\n className={`${shell} hover:opacity-85`}\n style={cardStyle}\n aria-label={`${name || item.platform} — ${line || item.platform}`}\n >\n {body}\n </a>\n ) : (\n <div className={shell} style={cardStyle}>\n {body}\n </div>\n )}\n </li>\n );\n })}\n </ul>\n )}\n </div>\n </div>\n </div>\n </section>\n );\n}\n\nexport default SocialLinks;\n","import React from 'react';\nimport { resolveStackableColor } from '../../utils';\nimport type { StackableColorValue } from '../../types';\n\n/** Native Contentstack link field: `{ title, href }`. */\nexport interface ProcessStepLink {\n title?: string;\n href?: string;\n}\n\nexport interface ProcessStepItem {\n /**\n * The oversized glyph. Free text straight from the CMS — `01`, `A`, `IV`,\n * `§` all render. Never parsed as a number and never used for ordering, so\n * editors are free to label steps however the content calls for.\n */\n label?: string;\n /**\n * Named `step_title` rather than `title`: a group subfield with the uid\n * `title` collides with the content type's mandatory Title field on import.\n * Props map 1:1 onto field uids, so the prop carries the same name.\n */\n step_title?: string;\n description?: string;\n /**\n * Clipped inside the glyph rather than shown as a picture. Asset URL or a\n * Contentstack asset object — both are accepted.\n */\n image?: string | { url?: string };\n image_alt?: string;\n link?: ProcessStepLink;\n}\n\nexport interface ProcessStepProps {\n heading?: string;\n subheading?: string;\n heading_alignment?: 'left' | 'center' | 'right' | string;\n steps?: ProcessStepItem[];\n /** `Alternating` mirrors every second row, as in a zig-zag. */\n layout?: 'Alternating' | 'Text Left' | 'Text Right' | string;\n /** Hairline rule between rows. */\n show_dividers?: boolean;\n /** Short accent bar under each step title. */\n show_accent_rule?: boolean;\n glyph_scale?: 'Small' | 'Medium' | 'Large' | string;\n background_color?: StackableColorValue;\n text_color?: StackableColorValue;\n /** Accent bar, and the glyph itself when a step has no image. */\n accent_color?: StackableColorValue;\n className?: string;\n}\n\n/** File fields arrive as a URL string from the catalog, as an asset object from the Delivery API. */\nfunction resolveImage(image: ProcessStepItem['image']): string {\n if (!image) return '';\n if (typeof image === 'string') return image.trim();\n return typeof image.url === 'string' ? image.url.trim() : '';\n}\n\nconst ALIGNMENTS: Record<string, string> = {\n left: 'text-left items-start',\n center: 'text-center items-center',\n right: 'text-right items-end',\n};\n\n/**\n * Section heading — the library stylesheet already loads Orbitron, and a host\n * can override the stack via `--stackables-font-display`.\n */\nconst DISPLAY_FONT = 'var(--stackables-font-display, \"Orbitron\", \"Arial Narrow\", sans-serif)';\n\n/**\n * The glyph needs a different face from the heading. Orbitron's zero carries a\n * diagonal slash and its `1` is angular — fine for a heading, wrong for a\n * numeral this size. A heavy grotesque has plain geometric figures and wide\n * strokes, which also show more of the clipped image. Deliberately not a\n * webfont: no new network request, and `--stackables-font-glyph` lets a host\n * swap in whatever their brand uses.\n */\nconst GLYPH_FONT = 'var(--stackables-font-glyph, \"Arial Black\", \"Helvetica Neue\", Helvetica, Arial, sans-serif)';\n\nconst GLYPH_SCALES: Record<string, number> = { Small: 0.72, Medium: 1, Large: 1.32 };\n\n/**\n * `[min-rem, preferred-vw, max-rem]` per label length. A three- or\n * four-character label has to start smaller or it outgrows its half of the row,\n * so the ramp is picked from the label itself rather than fixed.\n */\nconst GLYPH_RAMP: ReadonlyArray<readonly [number, number, number]> = [\n [5, 19, 13.5], // 1–2 characters — the common case\n [4, 14.5, 10], // 3\n [3, 10.5, 7], // 4 or more\n];\n\nfunction glyphFontSize(label: string, scale: number): string {\n const ramp = GLYPH_RAMP[Math.min(Math.max(label.length - 2, 0), GLYPH_RAMP.length - 1)];\n const [min, vw, max] = ramp;\n return `clamp(${(min * scale).toFixed(2)}rem, ${(vw * scale).toFixed(1)}vw, ${(max * scale).toFixed(2)}rem)`;\n}\n\nexport function ProcessStep({\n heading = '',\n subheading = '',\n heading_alignment = 'center',\n steps = [],\n layout = 'Alternating',\n show_dividers = true,\n show_accent_rule = true,\n glyph_scale = 'Medium',\n background_color,\n text_color,\n accent_color,\n className = '',\n}: ProcessStepProps) {\n const resolvedBg = resolveStackableColor(background_color);\n const resolvedText = resolveStackableColor(text_color);\n const resolvedAccent = resolveStackableColor(accent_color);\n\n const sectionClasses = 'bg-white';\n\n const headingClasses = 'text-gray-900';\n\n const subheadingClasses = 'text-gray-600';\n\n const titleClasses = headingClasses;\n\n // Body copy in the mock is deliberately light, but light grey on white fails\n // AA at this size — gray-500 measures 4.02. These land at 5.74 and 6.98.\n const bodyClasses = 'text-gray-600';\n\n const dividerClasses = 'bg-gray-200';\n\n // Only reached when a step has no image, so the glyph still has presence.\n const glyphFallbackClasses = 'text-gray-200';\n\n const accentRuleClasses = 'bg-amber-400';\n\n const alignClass = ALIGNMENTS[heading_alignment] ?? ALIGNMENTS.center;\n const scale = GLYPH_SCALES[glyph_scale] ?? GLYPH_SCALES.Medium;\n\n const visibleSteps = (steps ?? []).filter(\n (s) => Boolean(s?.label?.trim()) || Boolean(s?.step_title?.trim()) || Boolean(s?.description?.trim()),\n );\n\n return (\n <section\n className={`${sectionClasses} ${className}`.trim()}\n style={resolvedBg ? { backgroundColor: resolvedBg } : undefined}\n >\n <div className=\"component-container mx-auto px-6 py-14 lg:py-20\">\n {/* ── Section heading ────────────────────────────────────────────── */}\n {(heading || subheading) && (\n <div className={`flex flex-col ${alignClass} mb-12 lg:mb-16`}>\n {heading && (\n <h2\n className={`font-bold uppercase leading-none tracking-[0.06em] ${headingClasses}`}\n style={{\n fontFamily: DISPLAY_FONT,\n fontSize: 'clamp(1.75rem, 5vw, 3.25rem)',\n ...(resolvedText ? { color: resolvedText } : {}),\n }}\n >\n {heading}\n </h2>\n )}\n {subheading && (\n <p className={`mt-4 max-w-2xl text-sm leading-relaxed ${subheadingClasses}`}>{subheading}</p>\n )}\n </div>\n )}\n\n {/* ── Steps ──────────────────────────────────────────────────────── */}\n {visibleSteps.length === 0 ? (\n <p className={`text-sm ${bodyClasses}`}>No steps added yet.</p>\n ) : (\n <ol className=\"m-0 list-none p-0\">\n {visibleSteps.map((step, i) => {\n const src = resolveImage(step.image);\n const label = step.label?.trim() ?? '';\n const href = step.link?.href?.trim();\n\n // `Alternating` mirrors odd rows; the two fixed layouts don't.\n const glyphFirst =\n layout === 'Text Right' ? true\n : layout === 'Text Left' ? false\n : i % 2 === 1;\n\n const glyph = label && (\n <div\n className=\"flex w-full items-center justify-center\"\n // A row of pure type has no intrinsic height floor, so give it\n // one — otherwise short labels collapse next to tall copy.\n style={{ minHeight: `${(9 * scale).toFixed(1)}rem` }}\n >\n <span\n className={`block select-none ${src ? '' : glyphFallbackClasses}`}\n style={{\n fontFamily: GLYPH_FONT,\n fontWeight: 900,\n fontSize: glyphFontSize(label, scale),\n lineHeight: 0.82,\n letterSpacing: '-0.01em',\n // The photo fills the glyph rather than sitting behind it.\n // Both the prefixed and unprefixed properties are needed:\n // WebKit honours only `-webkit-`, and the fill colour has\n // to be cleared separately or it paints over the image.\n ...(src\n ? {\n backgroundImage: `url(\"${src}\")`,\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n backgroundRepeat: 'no-repeat',\n WebkitBackgroundClip: 'text',\n backgroundClip: 'text',\n WebkitTextFillColor: 'transparent',\n color: 'transparent',\n }\n : resolvedAccent\n ? { color: resolvedAccent }\n : {}),\n }}\n // The image is decorative — the glyph's own text carries the\n // meaning — but an alt still helps when one is authored.\n aria-label={src && step.image_alt ? step.image_alt : undefined}\n role={src && step.image_alt ? 'img' : undefined}\n >\n {label}\n </span>\n </div>\n );\n\n const copy = (\n <div className=\"flex w-full flex-col justify-center px-2 py-6\">\n {step.step_title && (\n <h3\n className={`text-2xl font-semibold leading-tight sm:text-3xl ${titleClasses}`}\n style={resolvedText ? { color: resolvedText } : undefined}\n >\n {href ? (\n <a href={href} className=\"hover:underline\" title={step.link?.title || step.step_title}>\n {step.step_title}\n </a>\n ) : (\n step.step_title\n )}\n </h3>\n )}\n\n {show_accent_rule && step.step_title && (\n <span\n aria-hidden\n className={`mt-4 block h-[3px] w-10 ${resolvedAccent ? '' : accentRuleClasses}`}\n style={resolvedAccent ? { backgroundColor: resolvedAccent } : undefined}\n />\n )}\n\n {step.description && (\n <p className={`mt-4 max-w-md text-[13px] leading-relaxed ${bodyClasses}`}>\n {step.description}\n </p>\n )}\n </div>\n );\n\n return (\n <li key={`${label}-${i}`}>\n {show_dividers && i > 0 && <span aria-hidden className={`block h-px w-full ${dividerClasses}`} />}\n\n {/* flex-wrap keeps this responsive with no viewport\n breakpoints: the halves share the row until minWidth can\n no longer be met, then stack. Verified at 390px: because\n wrapping in `row-reverse` still fills top-to-bottom, every\n stacked row reads copy-then-glyph regardless of mirroring,\n so narrow screens stay consistent. */}\n <div\n className={`flex flex-wrap items-center gap-x-8 py-4 ${glyphFirst ? 'flex-row-reverse' : ''}`}\n >\n <div className=\"min-w-[17rem] flex-1\">{copy}</div>\n <div className=\"min-w-[17rem] flex-1\">{glyph}</div>\n </div>\n </li>\n );\n })}\n </ol>\n )}\n </div>\n </section>\n );\n}\n\nexport default ProcessStep;\n"],"names":["resolveAsset","DEFAULT_BG","DEFAULT_TEXT","STACK_BELOW_PX","resolveImage","ALIGNMENTS","prefersReducedMotion","resolveIconImage","ToggleSwitch","CheckIcon","resolveMediaUrl","SERIF_STACK","ArrowIcon","PlayIcon","EASE","CloseIcon","resolveImageUrl","ASPECT_RATIOS","formatPrice","HeartIconSolid","HeartIcon","DarkLayout","GRID_COL_CLASSES","gridColClass","CAROUSEL_CARD_WIDTH","carouselCardWidthClass","_interop_require_default_1","exports","require$$0","require$$1","require$$2","_interop_require_wildcard_1","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","picomatchModule","require$$9","require$$10","require$$11","require$$12","DEFAULT_ITEMS","resolveItems","STAT_ICONS","ICON_MAP","MOBILE_BREAKPOINT","resolveIcon","GAP_PX","DISPLAY_FONT","DEFAULT_CARD","GRID_GAP_PX","renderWithHighlight","CARD_GAP_PX","ChevronIcon","DEFAULT_CATEGORIES","resolveMedia","ItemIcon","socialIconMap","BADGE","defaultLocale","CtaButton","S","IcoShieldCheck","IcoUsers","IcoBulb","IcoGlobe","isYes","FaInstagram","FaFacebook","FaYoutube","FaLinkedin","FaGithub","UserGroupIcon"],"mappings":"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AAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,C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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,sBAAsB;AAC5B,EAAE,uDAAuD;;AAEzD;AACA;AACA,MAAM,0BAA0B,GAAG,mCAAmC;;AAEtE,MAAM,mBAAmB,GAAG,cAAc;AAC1C,MAAM,iBAAiB,GAAG,KAAK;AAC/B,MAAM,6BAA6B,GAAG,UAAU;;AAIhD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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","x_google_ignoreList":[23,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125]}