@electroplix/components 0.5.0-alpha.10 → 0.5.0-alpha.12

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.
package/dist/index.esm.js CHANGED
@@ -354,7 +354,7 @@ function useBlogTheme() {
354
354
  return useElectroplixConfig().blog;
355
355
  }
356
356
 
357
- const _excluded$$ = ["name", "size", "color", "style"];
357
+ const _excluded$10 = ["name", "size", "color", "style"];
358
358
  /**
359
359
  * Render an inline SVG icon by name.
360
360
  *
@@ -370,7 +370,7 @@ function Icon(_ref) {
370
370
  color = 'currentColor',
371
371
  style
372
372
  } = _ref,
373
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$$);
373
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$10);
374
374
  const path = ICON_PATHS[name];
375
375
  if (!path) return null;
376
376
  return jsx("svg", _extends({
@@ -2297,7 +2297,7 @@ const maxLengthRule = max => ({
2297
2297
  message: `Must be at most ${max} characters`
2298
2298
  });
2299
2299
 
2300
- const _excluded$_ = ["as", "items", "orientation", "offset", "maxW", "px", "py", "radius", "gap", "bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "style", "className"];
2300
+ const _excluded$$ = ["as", "items", "orientation", "offset", "maxW", "px", "py", "radius", "gap", "bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "style", "className"];
2301
2301
  function AnchorLinks(_ref) {
2302
2302
  var _ref2, _ref3, _ref4, _ref5, _ref6, _items$0$targetId, _items$;
2303
2303
  let {
@@ -2318,7 +2318,7 @@ function AnchorLinks(_ref) {
2318
2318
  style = {},
2319
2319
  className = ''
2320
2320
  } = _ref,
2321
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$_);
2321
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$$);
2322
2322
  const t = useNavTheme();
2323
2323
  const radius = (_ref2 = radiusProp != null ? radiusProp : t.radius) != null ? _ref2 : 16;
2324
2324
  const bgColor = (_ref3 = bgColorProp != null ? bgColorProp : t.bgColor) != null ? _ref3 : '#ffffff';
@@ -2415,7 +2415,7 @@ function AnchorLinks(_ref) {
2415
2415
  }));
2416
2416
  }
2417
2417
 
2418
- const _excluded$Z = ["as", "items", "showHomeIcon", "maxW", "px", "py", "radius", "gap", "bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "style", "className"];
2418
+ const _excluded$_ = ["as", "items", "showHomeIcon", "maxW", "px", "py", "radius", "gap", "bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "style", "className"];
2419
2419
  function Breadcrumbs(_ref) {
2420
2420
  var _ref2, _ref3, _ref4, _ref5, _rest$separatorColor;
2421
2421
  let {
@@ -2435,7 +2435,7 @@ function Breadcrumbs(_ref) {
2435
2435
  style = {},
2436
2436
  className = ''
2437
2437
  } = _ref,
2438
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$Z);
2438
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$_);
2439
2439
  const t = useNavTheme();
2440
2440
  const bgColor = (_ref2 = bgColorProp != null ? bgColorProp : t.bgColor) != null ? _ref2 : '#ffffff';
2441
2441
  const textColor = (_ref3 = textColorProp != null ? textColorProp : t.textColor) != null ? _ref3 : '#09090b';
@@ -2531,7 +2531,7 @@ function Breadcrumbs(_ref) {
2531
2531
  }));
2532
2532
  }
2533
2533
 
2534
- const _excluded$Y = ["as", "languages", "current", "onChange", "px", "py", "radius", "bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "style", "className"];
2534
+ const _excluded$Z = ["as", "languages", "current", "onChange", "px", "py", "radius", "bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "style", "className"];
2535
2535
  function LanguageSelector(_ref) {
2536
2536
  var _ref2, _ref3, _ref4, _ref5, _languages$find;
2537
2537
  let {
@@ -2550,7 +2550,7 @@ function LanguageSelector(_ref) {
2550
2550
  style = {},
2551
2551
  className = ''
2552
2552
  } = _ref,
2553
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$Y);
2553
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$Z);
2554
2554
  const t = useNavTheme();
2555
2555
  const bgColor = (_ref2 = bgColorProp != null ? bgColorProp : t.bgColor) != null ? _ref2 : '#ffffff';
2556
2556
  const textColor = (_ref3 = textColorProp != null ? textColorProp : t.textColor) != null ? _ref3 : '#09090b';
@@ -2658,7 +2658,7 @@ function LanguageSelector(_ref) {
2658
2658
  }));
2659
2659
  }
2660
2660
 
2661
- const _excluded$X = ["as", "label", "sections", "maxW", "px", "py", "radius", "bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "style", "className"];
2661
+ const _excluded$Y = ["as", "label", "sections", "maxW", "px", "py", "radius", "bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "style", "className"];
2662
2662
  function MegaMenu(_ref) {
2663
2663
  var _ref2, _ref3, _ref4, _ref5;
2664
2664
  let {
@@ -2677,7 +2677,7 @@ function MegaMenu(_ref) {
2677
2677
  style = {},
2678
2678
  className = ''
2679
2679
  } = _ref,
2680
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$X);
2680
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$Y);
2681
2681
  const t = useNavTheme();
2682
2682
  (_ref2 = bgColorProp != null ? bgColorProp : t.bgColor) != null ? _ref2 : '#ffffff';
2683
2683
  const textColor = (_ref3 = textColorProp != null ? textColorProp : t.textColor) != null ? _ref3 : '#09090b';
@@ -2824,7 +2824,7 @@ function MegaMenu(_ref) {
2824
2824
  }));
2825
2825
  }
2826
2826
 
2827
- const _excluded$W = ["currentPage", "totalPages", "onPageChange", "maxVisible", "showFirstLast", "showPrevNext", "bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "fontSize", "radius", "gap", "className", "style"];
2827
+ const _excluded$X = ["currentPage", "totalPages", "onPageChange", "maxVisible", "showFirstLast", "showPrevNext", "bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "fontSize", "radius", "gap", "className", "style"];
2828
2828
  function Pagination(_ref) {
2829
2829
  var _ref2, _ref3, _ref4, _ref5;
2830
2830
  let {
@@ -2845,7 +2845,7 @@ function Pagination(_ref) {
2845
2845
  className,
2846
2846
  style
2847
2847
  } = _ref,
2848
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$W);
2848
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$X);
2849
2849
  const t = useNavTheme();
2850
2850
  const bgColor = (_ref2 = bgColorProp != null ? bgColorProp : t.bgColor) != null ? _ref2 : '#ffffff';
2851
2851
  const textColor = (_ref3 = textColorProp != null ? textColorProp : t.textColor) != null ? _ref3 : '#09090b';
@@ -2973,7 +2973,7 @@ function Pagination(_ref) {
2973
2973
  }));
2974
2974
  }
2975
2975
 
2976
- const _excluded$V = ["logoText", "links", "showSearch", "showCTA", "ctaText", "ctaHref", "sticky", "height", "padding", "bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "className", "style"];
2976
+ const _excluded$W = ["logoText", "links", "showSearch", "showCTA", "ctaText", "ctaHref", "sticky", "height", "padding", "bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "className", "style"];
2977
2977
  function PrimaryNav(_ref) {
2978
2978
  var _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9, _ref0;
2979
2979
  let {
@@ -2994,7 +2994,7 @@ function PrimaryNav(_ref) {
2994
2994
  className,
2995
2995
  style
2996
2996
  } = _ref,
2997
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$V);
2997
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$W);
2998
2998
  const t = useNavTheme();
2999
2999
  const showSearch = (_ref2 = showSearchProp != null ? showSearchProp : t.showSearch) != null ? _ref2 : false;
3000
3000
  const showCTA = (_ref3 = showCTAProp != null ? showCTAProp : t.showCTA) != null ? _ref3 : false;
@@ -3141,7 +3141,7 @@ function PrimaryNav(_ref) {
3141
3141
  }));
3142
3142
  }
3143
3143
 
3144
- const _excluded$U = ["items", "width", "padding", "gap", "radius", "bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "className", "style"];
3144
+ const _excluded$V = ["items", "width", "padding", "gap", "radius", "bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "className", "style"];
3145
3145
  function SidebarMenu(_ref) {
3146
3146
  var _ref2, _ref3, _ref4, _ref5;
3147
3147
  let {
@@ -3158,7 +3158,7 @@ function SidebarMenu(_ref) {
3158
3158
  className,
3159
3159
  style
3160
3160
  } = _ref,
3161
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$U);
3161
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$V);
3162
3162
  const t = useNavTheme();
3163
3163
  const bgColor = (_ref2 = bgColorProp != null ? bgColorProp : t.bgColor) != null ? _ref2 : '#ffffff';
3164
3164
  const textColor = (_ref3 = textColorProp != null ? textColorProp : t.textColor) != null ? _ref3 : '#09090b';
@@ -3289,7 +3289,7 @@ function SidebarMenu(_ref) {
3289
3289
  }));
3290
3290
  }
3291
3291
 
3292
- const _excluded$T = ["links", "width", "padding", "gap", "overlayColor", "position", "logoText", "bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "className", "style"];
3292
+ const _excluded$U = ["links", "width", "padding", "gap", "overlayColor", "position", "logoText", "bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "className", "style"];
3293
3293
  function SideDrawerNav(_ref) {
3294
3294
  var _ref2, _ref3, _ref4, _ref5;
3295
3295
  let {
@@ -3308,7 +3308,7 @@ function SideDrawerNav(_ref) {
3308
3308
  className,
3309
3309
  style
3310
3310
  } = _ref,
3311
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$T);
3311
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$U);
3312
3312
  const t = useNavTheme();
3313
3313
  const bgColor = (_ref2 = bgColorProp != null ? bgColorProp : t.bgColor) != null ? _ref2 : '#ffffff';
3314
3314
  const textColor = (_ref3 = textColorProp != null ? textColorProp : t.textColor) != null ? _ref3 : '#09090b';
@@ -3467,7 +3467,7 @@ function SideDrawerNav(_ref) {
3467
3467
  }));
3468
3468
  }
3469
3469
 
3470
- const _excluded$S = ["steps", "currentStep", "orientation", "showNumbers", "bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "className", "style"];
3470
+ const _excluded$T = ["steps", "currentStep", "orientation", "showNumbers", "bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "className", "style"];
3471
3471
  function Stepper(_ref) {
3472
3472
  var _ref2, _ref3, _ref4, _ref5;
3473
3473
  let {
@@ -3483,7 +3483,7 @@ function Stepper(_ref) {
3483
3483
  className,
3484
3484
  style
3485
3485
  } = _ref,
3486
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$S);
3486
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$T);
3487
3487
  const t = useNavTheme();
3488
3488
  const bgColor = (_ref2 = bgColorProp != null ? bgColorProp : t.bgColor) != null ? _ref2 : '#ffffff';
3489
3489
  const textColor = (_ref3 = textColorProp != null ? textColorProp : t.textColor) != null ? _ref3 : '#09090b';
@@ -3594,7 +3594,7 @@ function Stepper(_ref) {
3594
3594
  }));
3595
3595
  }
3596
3596
 
3597
- const _excluded$R = ["tabs", "defaultTab", "orientation", "showUnderline", "radius", "padding", "gap", "bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "className", "style"];
3597
+ const _excluded$S = ["tabs", "defaultTab", "orientation", "showUnderline", "radius", "padding", "gap", "bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "className", "style"];
3598
3598
  function Tabs(_ref) {
3599
3599
  var _ref2, _ref3, _ref4, _ref5, _ref6, _tabs$active;
3600
3600
  let {
@@ -3613,7 +3613,7 @@ function Tabs(_ref) {
3613
3613
  className,
3614
3614
  style
3615
3615
  } = _ref,
3616
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$R);
3616
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$S);
3617
3617
  const t = useNavTheme();
3618
3618
  const radius = (_ref2 = radiusProp != null ? radiusProp : t.radius) != null ? _ref2 : 14;
3619
3619
  const bgColor = (_ref3 = bgColorProp != null ? bgColorProp : t.bgColor) != null ? _ref3 : '#ffffff';
@@ -3734,7 +3734,7 @@ function Tabs(_ref) {
3734
3734
  }));
3735
3735
  }
3736
3736
 
3737
- const _excluded$Q = ["columns", "copyright", "socialLinks", "logo", "logoAlt", "tagline", "bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "children", "className", "style"];
3737
+ const _excluded$R = ["columns", "copyright", "socialLinks", "logo", "logoAlt", "tagline", "bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "children", "className", "style"];
3738
3738
  function Footer(_ref) {
3739
3739
  var _ref2, _ref3, _ref4, _ref5, _t$radius;
3740
3740
  let {
@@ -3753,7 +3753,7 @@ function Footer(_ref) {
3753
3753
  className,
3754
3754
  style
3755
3755
  } = _ref,
3756
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$Q);
3756
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$R);
3757
3757
  const t = useNavTheme();
3758
3758
  const bg = (_ref2 = bgColor != null ? bgColor : t.bgColor) != null ? _ref2 : '#ffffff';
3759
3759
  const fg = (_ref3 = textColor != null ? textColor : t.textColor) != null ? _ref3 : '#09090b';
@@ -3915,14 +3915,16 @@ function Footer(_ref) {
3915
3915
  }));
3916
3916
  }
3917
3917
 
3918
- const _excluded$P = ["as", "bgColor", "textColor", "fontFamily", "minH", "maxW", "px", "py", "radius", "gap", "style", "className", "children"];
3919
- const ui$z = {
3918
+ const _excluded$Q = ["as", "bgColor", "textColor", "fontFamily", "minH", "maxW", "px", "py", "radius", "gap", "style", "className", "children"];
3919
+ const ui$A = {
3920
3920
  white: '#ffffff',
3921
3921
  text: '#18181b',
3922
- border: '#e4e4e7'};
3922
+ border: '#e4e4e7'
3923
+ };
3923
3924
  function HeroShell(props) {
3924
3925
  var _t$minH, _t$maxW, _t$px, _t$py, _t$cardRadius, _t$gap, _ref, _ref2;
3925
3926
  const t = useHeroTheme();
3927
+ const isMobile = useMediaQuery('(max-width: 768px)');
3926
3928
  const {
3927
3929
  as: Tag = 'section',
3928
3930
  bgColor,
@@ -3938,9 +3940,11 @@ function HeroShell(props) {
3938
3940
  className = '',
3939
3941
  children
3940
3942
  } = props,
3941
- rest = _objectWithoutPropertiesLoose(props, _excluded$P);
3942
- const bg = (_ref = bgColor != null ? bgColor : t.bgColor) != null ? _ref : ui$z.white;
3943
- const fg = (_ref2 = textColor != null ? textColor : t.textColor) != null ? _ref2 : ui$z.text;
3943
+ rest = _objectWithoutPropertiesLoose(props, _excluded$Q);
3944
+ const bg = (_ref = bgColor != null ? bgColor : t.bgColor) != null ? _ref : ui$A.white;
3945
+ const fg = (_ref2 = textColor != null ? textColor : t.textColor) != null ? _ref2 : ui$A.text;
3946
+ const rPx = isMobile ? 16 : px;
3947
+ const pyPx = isMobile ? 32 : py;
3944
3948
  return jsxs(Tag, _extends({
3945
3949
  className: className
3946
3950
  }, rest, {
@@ -3951,10 +3955,10 @@ function HeroShell(props) {
3951
3955
  color: fg,
3952
3956
  fontFamily,
3953
3957
  minHeight: typeof minH === 'number' ? `${minH}px` : minH,
3954
- paddingInline: px,
3955
- paddingBlock: py,
3958
+ paddingInline: rPx,
3959
+ paddingBlock: pyPx,
3956
3960
  borderRadius: radius,
3957
- border: `1px solid ${ui$z.border}`,
3961
+ border: `1px solid ${ui$A.border}`,
3958
3962
  position: 'relative',
3959
3963
  overflow: 'hidden',
3960
3964
  boxShadow: '0 1px 2px rgba(9,9,11,0.04)'
@@ -3967,32 +3971,34 @@ function HeroShell(props) {
3967
3971
  background: 'linear-gradient(180deg, rgba(250,250,250,0.7), rgba(255,255,255,0))',
3968
3972
  pointerEvents: 'none'
3969
3973
  }
3970
- }), jsx("div", {
3971
- "aria-hidden": true,
3972
- style: {
3973
- position: 'absolute',
3974
- top: '12%',
3975
- left: '8%',
3976
- width: 240,
3977
- height: 240,
3978
- borderRadius: '999px',
3979
- background: 'rgba(9,9,11,0.035)',
3980
- filter: 'blur(70px)',
3981
- pointerEvents: 'none'
3982
- }
3983
- }), jsx("div", {
3984
- "aria-hidden": true,
3985
- style: {
3986
- position: 'absolute',
3987
- bottom: '10%',
3988
- right: '8%',
3989
- width: 220,
3990
- height: 220,
3991
- borderRadius: '999px',
3992
- background: 'rgba(9,9,11,0.03)',
3993
- filter: 'blur(70px)',
3994
- pointerEvents: 'none'
3995
- }
3974
+ }), !isMobile && jsxs(Fragment, {
3975
+ children: [jsx("div", {
3976
+ "aria-hidden": true,
3977
+ style: {
3978
+ position: 'absolute',
3979
+ top: '12%',
3980
+ left: '8%',
3981
+ width: 240,
3982
+ height: 240,
3983
+ borderRadius: '999px',
3984
+ background: 'rgba(9,9,11,0.035)',
3985
+ filter: 'blur(70px)',
3986
+ pointerEvents: 'none'
3987
+ }
3988
+ }), jsx("div", {
3989
+ "aria-hidden": true,
3990
+ style: {
3991
+ position: 'absolute',
3992
+ bottom: '10%',
3993
+ right: '8%',
3994
+ width: 220,
3995
+ height: 220,
3996
+ borderRadius: '999px',
3997
+ background: 'rgba(9,9,11,0.03)',
3998
+ filter: 'blur(70px)',
3999
+ pointerEvents: 'none'
4000
+ }
4001
+ })]
3996
4002
  }), jsx("div", {
3997
4003
  style: {
3998
4004
  width: '100%',
@@ -4007,16 +4013,18 @@ function HeroShell(props) {
4007
4013
  }));
4008
4014
  }
4009
4015
 
4010
- const _excluded$O = ["as", "title", "subtitle", "ctaLabel", "onCta", "titleSize", "subtitleSize", "align", "bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "minH", "maxW", "px", "py", "radius", "gap", "style", "className"];
4011
- const ui$y = {
4016
+ const _excluded$P = ["as", "title", "subtitle", "ctaLabel", "onCta", "titleSize", "subtitleSize", "align", "bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "minH", "maxW", "px", "py", "radius", "gap", "style", "className"];
4017
+ const ui$z = {
4012
4018
  white: '#ffffff',
4013
4019
  black: '#09090b',
4014
4020
  text: '#18181b',
4015
4021
  muted: '#71717a',
4016
- border: '#e4e4e7'};
4022
+ border: '#e4e4e7'
4023
+ };
4017
4024
  function StaticHero(props) {
4018
4025
  var _t$minH, _t$maxW, _t$px, _t$py, _t$cardRadius, _t$gap, _ref, _ref2, _ref3, _ref4, _ref5;
4019
4026
  const t = useHeroTheme();
4027
+ const isMobile = useMediaQuery('(max-width: 768px)');
4020
4028
  const {
4021
4029
  as: Tag = 'section',
4022
4030
  title = 'Build Something Amazing',
@@ -4040,11 +4048,15 @@ function StaticHero(props) {
4040
4048
  style = {},
4041
4049
  className = ''
4042
4050
  } = props,
4043
- rest = _objectWithoutPropertiesLoose(props, _excluded$O);
4044
- const bg = (_ref = bgColor != null ? bgColor : t.bgColor) != null ? _ref : ui$y.white;
4045
- const fg = (_ref2 = textColor != null ? textColor : t.textColor) != null ? _ref2 : ui$y.text;
4046
- const accent = (_ref3 = accentColor != null ? accentColor : t.accentColor) != null ? _ref3 : ui$y.black;
4047
- const border = (_ref4 = (_ref5 = borderColor != null ? borderColor : t.cardBorder) != null ? _ref5 : t.borderColor) != null ? _ref4 : ui$y.border;
4051
+ rest = _objectWithoutPropertiesLoose(props, _excluded$P);
4052
+ const bg = (_ref = bgColor != null ? bgColor : t.bgColor) != null ? _ref : ui$z.white;
4053
+ const fg = (_ref2 = textColor != null ? textColor : t.textColor) != null ? _ref2 : ui$z.text;
4054
+ const accent = (_ref3 = accentColor != null ? accentColor : t.accentColor) != null ? _ref3 : ui$z.black;
4055
+ const border = (_ref4 = (_ref5 = borderColor != null ? borderColor : t.cardBorder) != null ? _ref5 : t.borderColor) != null ? _ref4 : ui$z.border;
4056
+ const rPx = isMobile ? 16 : px;
4057
+ const pyPx = isMobile ? 32 : py;
4058
+ const titlePx = isMobile ? Math.max(28, Math.floor(titleSize * 0.6)) : titleSize;
4059
+ const subPx = isMobile ? Math.max(14, Math.floor(subtitleSize * 0.85)) : subtitleSize;
4048
4060
  return jsxs(Tag, _extends({
4049
4061
  className: className,
4050
4062
  style: _extends({
@@ -4054,7 +4066,7 @@ function StaticHero(props) {
4054
4066
  color: fg,
4055
4067
  fontFamily,
4056
4068
  minHeight: typeof minH === 'number' ? `${minH}px` : minH,
4057
- padding: `${py}px ${px}px`,
4069
+ padding: `${pyPx}px ${rPx}px`,
4058
4070
  borderRadius: radius,
4059
4071
  border: `1px solid ${border}`,
4060
4072
  position: 'relative',
@@ -4070,7 +4082,7 @@ function StaticHero(props) {
4070
4082
  background: 'linear-gradient(180deg, rgba(250,250,250,0.75), rgba(255,255,255,0))',
4071
4083
  pointerEvents: 'none'
4072
4084
  }
4073
- }), jsx("div", {
4085
+ }), !isMobile && jsx("div", {
4074
4086
  "aria-hidden": true,
4075
4087
  style: {
4076
4088
  position: 'absolute',
@@ -4104,9 +4116,9 @@ function StaticHero(props) {
4104
4116
  gap: 8,
4105
4117
  padding: '8px 16px',
4106
4118
  borderRadius: 999,
4107
- background: ui$y.white,
4119
+ background: ui$z.white,
4108
4120
  border: `1px solid ${border}`,
4109
- marginBottom: 24,
4121
+ marginBottom: isMobile ? 16 : 24,
4110
4122
  boxShadow: '0 1px 2px rgba(9,9,11,0.04)'
4111
4123
  },
4112
4124
  children: [jsx(Icon, {
@@ -4123,7 +4135,7 @@ function StaticHero(props) {
4123
4135
  })]
4124
4136
  }), title && jsx("h1", {
4125
4137
  style: {
4126
- fontSize: titleSize,
4138
+ fontSize: titlePx,
4127
4139
  lineHeight: 1.05,
4128
4140
  margin: 0,
4129
4141
  fontWeight: 800,
@@ -4133,10 +4145,10 @@ function StaticHero(props) {
4133
4145
  children: title
4134
4146
  }), subtitle && jsx("p", {
4135
4147
  style: {
4136
- fontSize: subtitleSize,
4137
- color: ui$y.muted,
4138
- marginTop: 20,
4139
- marginBottom: 32,
4148
+ fontSize: subPx,
4149
+ color: ui$z.muted,
4150
+ marginTop: isMobile ? 12 : 20,
4151
+ marginBottom: isMobile ? 24 : 32,
4140
4152
  maxWidth: 600,
4141
4153
  marginInline: align === 'center' ? 'auto' : undefined,
4142
4154
  marginLeft: align === 'right' ? 'auto' : undefined,
@@ -4146,22 +4158,23 @@ function StaticHero(props) {
4146
4158
  }), jsxs("div", {
4147
4159
  style: {
4148
4160
  display: 'flex',
4149
- gap: 16,
4150
- justifyContent: align === 'center' ? 'center' : align === 'right' ? 'flex-end' : 'flex-start',
4151
- flexWrap: 'wrap'
4161
+ flexWrap: 'wrap',
4162
+ gap: isMobile ? 12 : 16,
4163
+ justifyContent: align === 'center' ? 'center' : align === 'right' ? 'flex-end' : 'flex-start'
4152
4164
  },
4153
4165
  children: [ctaLabel && jsxs("button", {
4154
4166
  type: "button",
4155
4167
  onClick: onCta,
4168
+ "aria-label": ctaLabel,
4156
4169
  style: {
4157
- padding: '16px 28px',
4170
+ padding: `${isMobile ? 12 : 16}px ${isMobile ? 20 : 28}px`,
4158
4171
  borderRadius: 12,
4159
4172
  border: `1px solid ${accent}`,
4160
4173
  background: accent,
4161
- color: ui$y.white,
4174
+ color: ui$z.white,
4162
4175
  cursor: 'pointer',
4163
4176
  fontWeight: 700,
4164
- fontSize: 16,
4177
+ fontSize: isMobile ? 14 : 16,
4165
4178
  display: 'flex',
4166
4179
  alignItems: 'center',
4167
4180
  gap: 8,
@@ -4174,15 +4187,16 @@ function StaticHero(props) {
4174
4187
  })]
4175
4188
  }), jsx("button", {
4176
4189
  type: "button",
4190
+ "aria-label": "Learn more",
4177
4191
  style: {
4178
- padding: '16px 28px',
4192
+ padding: `${isMobile ? 12 : 16}px ${isMobile ? 20 : 28}px`,
4179
4193
  borderRadius: 12,
4180
4194
  border: `1px solid ${border}`,
4181
- background: ui$y.white,
4195
+ background: ui$z.white,
4182
4196
  color: fg,
4183
4197
  cursor: 'pointer',
4184
4198
  fontWeight: 600,
4185
- fontSize: 16,
4199
+ fontSize: isMobile ? 14 : 16,
4186
4200
  boxShadow: '0 1px 2px rgba(9,9,11,0.04)',
4187
4201
  transition: 'all 0.2s ease'
4188
4202
  },
@@ -4194,19 +4208,18 @@ function StaticHero(props) {
4194
4208
  }));
4195
4209
  }
4196
4210
 
4197
- const _excluded$N = ["as", "slides", "autoplay", "intervalMs", "titleSize", "subtitleSize", "bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "minH", "maxW", "px", "py", "radius", "gap", "style", "className"];
4198
- const ui$x = {
4211
+ const _excluded$O = ["as", "slides", "autoplay", "intervalMs", "titleSize", "subtitleSize", "bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "minH", "maxW", "px", "py", "radius", "gap", "style", "className"];
4212
+ const ui$y = {
4199
4213
  white: '#ffffff',
4200
- black: '#09090b',
4201
- text: '#18181b',
4202
4214
  muted: '#71717a',
4203
- border: '#e4e4e7',
4204
4215
  surface: '#fafafa',
4205
4216
  overlay: 'rgba(9,9,11,0.72)'
4206
4217
  };
4207
4218
  function CarouselHero(props) {
4208
4219
  var _t$minH, _t$maxW, _t$px, _t$py, _t$cardRadius, _t$gap, _ref, _ref2, _ref3, _ref4, _ref5;
4209
4220
  const t = useHeroTheme();
4221
+ const isMobile = useMediaQuery('(max-width: 768px)');
4222
+ const prefersReducedMotion = typeof window !== 'undefined' && window.matchMedia('(prefers-reduced-motion: reduce)').matches;
4210
4223
  const {
4211
4224
  as: Tag = 'section',
4212
4225
  slides: rawSlides,
@@ -4228,11 +4241,15 @@ function CarouselHero(props) {
4228
4241
  style = {},
4229
4242
  className = ''
4230
4243
  } = props,
4231
- rest = _objectWithoutPropertiesLoose(props, _excluded$N);
4232
- const bg = (_ref = bgColor != null ? bgColor : t.bgColor) != null ? _ref : ui$x.white;
4233
- const fg = (_ref2 = textColor != null ? textColor : t.textColor) != null ? _ref2 : ui$x.text;
4234
- const accent = (_ref3 = accentColor != null ? accentColor : t.accentColor) != null ? _ref3 : ui$x.black;
4235
- const border = (_ref4 = (_ref5 = borderColor != null ? borderColor : t.cardBorder) != null ? _ref5 : t.borderColor) != null ? _ref4 : ui$x.border;
4244
+ rest = _objectWithoutPropertiesLoose(props, _excluded$O);
4245
+ const bg = (_ref = bgColor != null ? bgColor : t.bgColor) != null ? _ref : '#ffffff';
4246
+ const fg = (_ref2 = textColor != null ? textColor : t.textColor) != null ? _ref2 : '#18181b';
4247
+ const accent = (_ref3 = accentColor != null ? accentColor : t.accentColor) != null ? _ref3 : '#09090b';
4248
+ const border = (_ref4 = (_ref5 = borderColor != null ? borderColor : t.cardBorder) != null ? _ref5 : t.borderColor) != null ? _ref4 : '#e4e4e7';
4249
+ const rPx = isMobile ? 16 : px;
4250
+ const pyPx = isMobile ? 32 : py;
4251
+ const titlePx = isMobile ? Math.max(24, Math.floor(titleSize * 0.65)) : titleSize;
4252
+ const subPx = isMobile ? Math.max(14, Math.floor(subtitleSize * 0.85)) : subtitleSize;
4236
4253
  const slides = Array.isArray(rawSlides) && rawSlides.length > 0 ? rawSlides : [{
4237
4254
  image: '',
4238
4255
  title: 'Welcome to Our Platform',
@@ -4247,22 +4264,37 @@ function CarouselHero(props) {
4247
4264
  subtitle: 'Beautiful and responsive'
4248
4265
  }];
4249
4266
  const [idx, setIdx] = useState(0);
4267
+ const touchStart = useRef(null);
4268
+ // Autoplay — paused on reduced motion
4250
4269
  useEffect(() => {
4251
- if (!autoplay || slides.length <= 1) return;
4252
- const id = setInterval(() => {
4253
- setIdx(i => (i + 1) % slides.length);
4254
- }, intervalMs);
4270
+ if (!autoplay || slides.length <= 1 || prefersReducedMotion) return;
4271
+ const id = setInterval(() => setIdx(i => (i + 1) % slides.length), intervalMs);
4255
4272
  return () => clearInterval(id);
4256
- }, [autoplay, slides.length, intervalMs]);
4273
+ }, [autoplay, slides.length, intervalMs, prefersReducedMotion]);
4274
+ const prev = useCallback(() => setIdx(i => (i - 1 + slides.length) % slides.length), [slides.length]);
4275
+ const next = useCallback(() => setIdx(i => (i + 1) % slides.length), [slides.length]);
4276
+ // Touch swipe
4277
+ const onTouchStart = useCallback(e => {
4278
+ touchStart.current = e.touches[0].clientX;
4279
+ }, []);
4280
+ const onTouchEnd = useCallback(e => {
4281
+ if (touchStart.current === null) return;
4282
+ const diff = touchStart.current - e.changedTouches[0].clientX;
4283
+ if (Math.abs(diff) > 50) {
4284
+ diff > 0 ? next() : prev();
4285
+ }
4286
+ touchStart.current = null;
4287
+ }, [next, prev]);
4257
4288
  const current = slides[idx] || {
4258
4289
  image: '',
4259
4290
  title: '',
4260
4291
  subtitle: ''
4261
4292
  };
4262
- const prev = () => setIdx(i => (i - 1 + slides.length) % slides.length);
4263
- const next = () => setIdx(i => (i + 1) % slides.length);
4264
4293
  return jsxs(Tag, _extends({
4265
4294
  className: className,
4295
+ role: "region",
4296
+ "aria-roledescription": "carousel",
4297
+ "aria-label": "Image carousel",
4266
4298
  style: _extends({
4267
4299
  display: 'grid',
4268
4300
  placeItems: 'center',
@@ -4270,7 +4302,7 @@ function CarouselHero(props) {
4270
4302
  color: fg,
4271
4303
  fontFamily,
4272
4304
  minHeight: typeof minH === 'number' ? `${minH}px` : minH,
4273
- padding: `${py}px ${px}px`,
4305
+ padding: `${pyPx}px ${rPx}px`,
4274
4306
  borderRadius: radius,
4275
4307
  border: `1px solid ${border}`,
4276
4308
  position: 'relative',
@@ -4295,24 +4327,29 @@ function CarouselHero(props) {
4295
4327
  zIndex: 1
4296
4328
  },
4297
4329
  children: [jsxs("div", {
4330
+ role: "group",
4331
+ "aria-roledescription": "slide",
4332
+ "aria-label": `Slide ${idx + 1} of ${slides.length}`,
4333
+ onTouchStart: onTouchStart,
4334
+ onTouchEnd: onTouchEnd,
4298
4335
  style: {
4299
4336
  position: 'relative',
4300
4337
  width: '100%',
4301
- height: 400,
4338
+ height: isMobile ? 240 : 400,
4302
4339
  borderRadius: 16,
4303
4340
  overflow: 'hidden',
4304
- background: ui$x.surface,
4341
+ background: ui$y.surface,
4305
4342
  border: `1px solid ${border}`,
4306
4343
  boxShadow: '0 1px 2px rgba(9,9,11,0.04)'
4307
4344
  },
4308
4345
  children: [current.image ? jsx("img", {
4309
4346
  src: current.image,
4310
- alt: current.title || `slide-${idx + 1}`,
4347
+ alt: current.title || `slide ${idx + 1}`,
4311
4348
  style: {
4312
4349
  width: '100%',
4313
4350
  height: '100%',
4314
4351
  objectFit: 'cover',
4315
- transition: 'opacity 0.5s ease'
4352
+ transition: prefersReducedMotion ? 'none' : 'opacity 0.5s ease'
4316
4353
  }
4317
4354
  }) : jsxs("div", {
4318
4355
  style: {
@@ -4322,29 +4359,30 @@ function CarouselHero(props) {
4322
4359
  flexDirection: 'column',
4323
4360
  alignItems: 'center',
4324
4361
  justifyContent: 'center',
4325
- background: ui$x.surface,
4326
- color: ui$x.muted
4362
+ background: ui$y.surface,
4363
+ color: ui$y.muted
4327
4364
  },
4328
4365
  children: [jsx(Icon, {
4329
4366
  name: "image",
4330
- size: 64,
4331
- color: ui$x.muted,
4367
+ size: isMobile ? 40 : 64,
4368
+ color: ui$y.muted,
4332
4369
  style: {
4333
4370
  opacity: 0.55
4334
4371
  }
4335
4372
  }), jsxs("span", {
4336
4373
  style: {
4337
4374
  marginTop: 12,
4338
- color: ui$x.muted,
4375
+ color: ui$y.muted,
4339
4376
  fontSize: 14,
4340
4377
  fontWeight: 500
4341
4378
  },
4342
4379
  children: ["Slide ", idx + 1]
4343
4380
  })]
4344
- }), slides.length > 1 && jsxs(Fragment, {
4381
+ }), slides.length > 1 && !isMobile && jsxs(Fragment, {
4345
4382
  children: [jsx("button", {
4346
4383
  type: "button",
4347
4384
  onClick: prev,
4385
+ "aria-label": "Previous slide",
4348
4386
  style: {
4349
4387
  position: 'absolute',
4350
4388
  left: 16,
@@ -4354,15 +4392,15 @@ function CarouselHero(props) {
4354
4392
  height: 44,
4355
4393
  borderRadius: '999px',
4356
4394
  border: '1px solid rgba(255,255,255,0.18)',
4357
- background: ui$x.overlay,
4358
- color: ui$x.white,
4395
+ background: ui$y.overlay,
4396
+ color: ui$y.white,
4359
4397
  cursor: 'pointer',
4360
4398
  display: 'flex',
4361
4399
  alignItems: 'center',
4362
4400
  justifyContent: 'center',
4363
4401
  backdropFilter: 'blur(10px)',
4364
4402
  boxShadow: '0 8px 24px rgba(9,9,11,0.16)',
4365
- transition: 'all 0.2s ease'
4403
+ transition: prefersReducedMotion ? 'none' : 'all 0.2s ease'
4366
4404
  },
4367
4405
  children: jsx(Icon, {
4368
4406
  name: "chevron-left",
@@ -4371,6 +4409,7 @@ function CarouselHero(props) {
4371
4409
  }), jsx("button", {
4372
4410
  type: "button",
4373
4411
  onClick: next,
4412
+ "aria-label": "Next slide",
4374
4413
  style: {
4375
4414
  position: 'absolute',
4376
4415
  right: 16,
@@ -4380,15 +4419,15 @@ function CarouselHero(props) {
4380
4419
  height: 44,
4381
4420
  borderRadius: '999px',
4382
4421
  border: '1px solid rgba(255,255,255,0.18)',
4383
- background: ui$x.overlay,
4384
- color: ui$x.white,
4422
+ background: ui$y.overlay,
4423
+ color: ui$y.white,
4385
4424
  cursor: 'pointer',
4386
4425
  display: 'flex',
4387
4426
  alignItems: 'center',
4388
4427
  justifyContent: 'center',
4389
4428
  backdropFilter: 'blur(10px)',
4390
4429
  boxShadow: '0 8px 24px rgba(9,9,11,0.16)',
4391
- transition: 'all 0.2s ease'
4430
+ transition: prefersReducedMotion ? 'none' : 'all 0.2s ease'
4392
4431
  },
4393
4432
  children: jsx(Icon, {
4394
4433
  name: "chevron-right",
@@ -4402,7 +4441,7 @@ function CarouselHero(props) {
4402
4441
  },
4403
4442
  children: [current.title && jsx("h2", {
4404
4443
  style: {
4405
- fontSize: titleSize,
4444
+ fontSize: titlePx,
4406
4445
  margin: 0,
4407
4446
  fontWeight: 700,
4408
4447
  color: fg,
@@ -4412,32 +4451,36 @@ function CarouselHero(props) {
4412
4451
  children: current.title
4413
4452
  }), current.subtitle && jsx("p", {
4414
4453
  style: {
4415
- fontSize: subtitleSize,
4416
- color: ui$x.muted,
4417
- marginTop: 12,
4454
+ fontSize: subPx,
4455
+ color: ui$y.muted,
4456
+ marginTop: isMobile ? 8 : 12,
4418
4457
  marginBottom: 0,
4419
4458
  lineHeight: 1.6
4420
4459
  },
4421
4460
  children: current.subtitle
4422
4461
  })]
4423
4462
  }), slides.length > 1 && jsx("div", {
4463
+ role: "tablist",
4464
+ "aria-label": "Slide navigation",
4424
4465
  style: {
4425
4466
  display: 'flex',
4426
- gap: 10,
4467
+ gap: isMobile ? 6 : 10,
4427
4468
  justifyContent: 'center'
4428
4469
  },
4429
4470
  children: slides.map((_, i) => jsx("button", {
4430
4471
  type: "button",
4431
- onClick: () => setIdx(i),
4472
+ role: "tab",
4473
+ "aria-selected": i === idx,
4432
4474
  "aria-label": `Go to slide ${i + 1}`,
4475
+ onClick: () => setIdx(i),
4433
4476
  style: {
4434
- width: i === idx ? 32 : 10,
4477
+ width: i === idx ? isMobile ? 24 : 32 : isMobile ? 8 : 10,
4435
4478
  height: 10,
4436
4479
  borderRadius: 999,
4437
4480
  border: `1px solid ${i === idx ? accent : border}`,
4438
- background: i === idx ? accent : ui$x.white,
4481
+ background: i === idx ? accent : ui$y.white,
4439
4482
  cursor: 'pointer',
4440
- transition: 'all 0.3s ease',
4483
+ transition: prefersReducedMotion ? 'none' : 'all 0.3s ease',
4441
4484
  boxShadow: i === idx ? '0 1px 2px rgba(9,9,11,0.12)' : '0 1px 2px rgba(9,9,11,0.04)'
4442
4485
  }
4443
4486
  }, i))
@@ -4446,16 +4489,17 @@ function CarouselHero(props) {
4446
4489
  }));
4447
4490
  }
4448
4491
 
4449
- const _excluded$M = ["as", "title", "subtitle", "bgImage", "overlay", "form", "buttonText", "onSubmit", "inputPlaceholder", "titleSize", "subtitleSize", "bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "minH", "maxW", "px", "py", "radius", "gap", "style", "className"];
4450
- const ui$w = {
4492
+ const _excluded$N = ["as", "title", "subtitle", "bgImage", "overlay", "form", "buttonText", "onSubmit", "inputPlaceholder", "titleSize", "subtitleSize", "bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "minH", "maxW", "px", "py", "radius", "gap", "style", "className"];
4493
+ const ui$x = {
4451
4494
  white: '#ffffff',
4452
- black: '#09090b',
4453
4495
  text: '#18181b',
4454
4496
  muted: '#71717a',
4455
- border: '#e4e4e7'};
4497
+ border: '#e4e4e7'
4498
+ };
4456
4499
  function CTAOverlayHero(props) {
4457
4500
  var _t$minH, _t$maxW, _t$px, _t$py, _t$cardRadius, _t$gap, _ref, _ref2, _ref3, _ref4, _ref5;
4458
4501
  const t = useHeroTheme();
4502
+ const isMobile = useMediaQuery('(max-width: 768px)');
4459
4503
  const {
4460
4504
  as: Tag = 'section',
4461
4505
  title = 'Transform Your Ideas Into Reality',
@@ -4482,13 +4526,17 @@ function CTAOverlayHero(props) {
4482
4526
  style = {},
4483
4527
  className = ''
4484
4528
  } = props,
4485
- rest = _objectWithoutPropertiesLoose(props, _excluded$M);
4486
- const bg = (_ref = bgColor != null ? bgColor : t.bgColor) != null ? _ref : ui$w.white;
4487
- const fg = (_ref2 = textColor != null ? textColor : t.textColor) != null ? _ref2 : ui$w.text;
4488
- const accent = (_ref3 = accentColor != null ? accentColor : t.accentColor) != null ? _ref3 : ui$w.black;
4489
- const border = (_ref4 = (_ref5 = borderColor != null ? borderColor : t.cardBorder) != null ? _ref5 : t.borderColor) != null ? _ref4 : ui$w.border;
4529
+ rest = _objectWithoutPropertiesLoose(props, _excluded$N);
4530
+ const bg = (_ref = bgColor != null ? bgColor : t.bgColor) != null ? _ref : '#ffffff';
4531
+ const fg = (_ref2 = textColor != null ? textColor : t.textColor) != null ? _ref2 : ui$x.text;
4532
+ const accent = (_ref3 = accentColor != null ? accentColor : t.accentColor) != null ? _ref3 : '#09090b';
4533
+ const border = (_ref4 = (_ref5 = borderColor != null ? borderColor : t.cardBorder) != null ? _ref5 : t.borderColor) != null ? _ref4 : ui$x.border;
4490
4534
  const [email, setEmail] = useState('');
4491
4535
  const [isHovered, setIsHovered] = useState(false);
4536
+ const rPx = isMobile ? 16 : px;
4537
+ const pyPx = isMobile ? 32 : py;
4538
+ const titlePx = isMobile ? Math.max(28, Math.floor(titleSize * 0.6)) : titleSize;
4539
+ const subPx = isMobile ? Math.max(14, Math.floor(subtitleSize * 0.85)) : subtitleSize;
4492
4540
  return jsxs(Tag, _extends({
4493
4541
  className: className,
4494
4542
  style: _extends({
@@ -4498,10 +4546,10 @@ function CTAOverlayHero(props) {
4498
4546
  backgroundImage: bgImage ? `url(${bgImage})` : undefined,
4499
4547
  backgroundSize: 'cover',
4500
4548
  backgroundPosition: 'center',
4501
- color: bgImage ? ui$w.white : fg,
4549
+ color: bgImage ? ui$x.white : fg,
4502
4550
  fontFamily,
4503
4551
  minHeight: typeof minH === 'number' ? `${minH}px` : minH,
4504
- padding: `${py}px ${px}px`,
4552
+ padding: `${pyPx}px ${rPx}px`,
4505
4553
  borderRadius: radius,
4506
4554
  border: `1px solid ${border}`,
4507
4555
  position: 'relative',
@@ -4517,8 +4565,9 @@ function CTAOverlayHero(props) {
4517
4565
  background: bgImage ? `rgba(9,9,11,${overlay})` : 'linear-gradient(180deg, rgba(250,250,250,0.85), rgba(255,255,255,0))',
4518
4566
  zIndex: 0
4519
4567
  }
4520
- }), !bgImage && jsxs(Fragment, {
4568
+ }), !bgImage && !isMobile && jsxs(Fragment, {
4521
4569
  children: [jsx("div", {
4570
+ "aria-hidden": true,
4522
4571
  style: {
4523
4572
  position: 'absolute',
4524
4573
  top: '12%',
@@ -4530,6 +4579,7 @@ function CTAOverlayHero(props) {
4530
4579
  pointerEvents: 'none'
4531
4580
  }
4532
4581
  }), jsx("div", {
4582
+ "aria-hidden": true,
4533
4583
  style: {
4534
4584
  position: 'absolute',
4535
4585
  bottom: '16%',
@@ -4554,19 +4604,19 @@ function CTAOverlayHero(props) {
4554
4604
  children: [jsxs("div", {
4555
4605
  children: [title && jsx("h2", {
4556
4606
  style: {
4557
- fontSize: titleSize,
4607
+ fontSize: titlePx,
4558
4608
  margin: 0,
4559
4609
  fontWeight: 800,
4560
4610
  lineHeight: 1.05,
4561
4611
  letterSpacing: '-0.05em',
4562
- color: bgImage ? ui$w.white : fg
4612
+ color: bgImage ? ui$x.white : fg
4563
4613
  },
4564
4614
  children: title
4565
4615
  }), subtitle && jsx("p", {
4566
4616
  style: {
4567
- fontSize: subtitleSize,
4568
- color: bgImage ? 'rgba(255,255,255,0.78)' : ui$w.muted,
4569
- marginTop: 20,
4617
+ fontSize: subPx,
4618
+ color: bgImage ? 'rgba(255,255,255,0.78)' : ui$x.muted,
4619
+ marginTop: isMobile ? 12 : 20,
4570
4620
  marginBottom: 0,
4571
4621
  maxWidth: 640,
4572
4622
  marginInline: 'auto',
@@ -4579,13 +4629,14 @@ function CTAOverlayHero(props) {
4579
4629
  e.preventDefault();
4580
4630
  onSubmit == null || onSubmit(Object.fromEntries(new FormData(e.currentTarget).entries()));
4581
4631
  },
4632
+ "aria-label": "Email signup",
4582
4633
  style: {
4583
4634
  marginTop: 8,
4584
4635
  display: 'inline-flex',
4585
4636
  gap: 6,
4586
4637
  alignItems: 'center',
4587
4638
  justifySelf: 'center',
4588
- background: bgImage ? 'rgba(255,255,255,0.12)' : ui$w.white,
4639
+ background: bgImage ? 'rgba(255,255,255,0.12)' : ui$x.white,
4589
4640
  padding: 6,
4590
4641
  borderRadius: 16,
4591
4642
  border: `1px solid ${bgImage ? 'rgba(255,255,255,0.18)' : border}`,
@@ -4606,7 +4657,7 @@ function CTAOverlayHero(props) {
4606
4657
  style: {
4607
4658
  position: 'absolute',
4608
4659
  left: 16,
4609
- color: bgImage ? 'rgba(255,255,255,0.7)' : ui$w.muted
4660
+ color: bgImage ? 'rgba(255,255,255,0.7)' : ui$x.muted
4610
4661
  }
4611
4662
  }), jsx("input", {
4612
4663
  name: "email",
@@ -4614,30 +4665,32 @@ function CTAOverlayHero(props) {
4614
4665
  value: email,
4615
4666
  onChange: e => setEmail(e.target.value),
4616
4667
  placeholder: inputPlaceholder,
4668
+ "aria-label": inputPlaceholder,
4617
4669
  style: {
4618
- padding: '16px 16px 16px 48px',
4670
+ padding: `${isMobile ? 14 : 16}px ${isMobile ? 14 : 16}px ${isMobile ? 14 : 16}px 48px`,
4619
4671
  border: 'none',
4620
4672
  outline: 'none',
4621
4673
  background: 'transparent',
4622
- color: bgImage ? ui$w.white : fg,
4623
- width: 280,
4624
- fontSize: 15,
4674
+ color: bgImage ? ui$x.white : fg,
4675
+ width: isMobile ? 200 : 280,
4676
+ fontSize: isMobile ? 14 : 15,
4625
4677
  boxSizing: 'border-box'
4626
4678
  }
4627
4679
  })]
4628
4680
  }), jsxs("button", {
4629
4681
  type: "submit",
4682
+ "aria-label": buttonText,
4630
4683
  onMouseEnter: () => setIsHovered(true),
4631
4684
  onMouseLeave: () => setIsHovered(false),
4632
4685
  style: {
4633
- padding: '16px 28px',
4686
+ padding: `${isMobile ? 12 : 16}px ${isMobile ? 20 : 28}px`,
4634
4687
  borderRadius: 12,
4635
4688
  border: `1px solid ${accent}`,
4636
4689
  background: accent,
4637
- color: ui$w.white,
4690
+ color: ui$x.white,
4638
4691
  cursor: 'pointer',
4639
4692
  fontWeight: 700,
4640
- fontSize: 15,
4693
+ fontSize: isMobile ? 14 : 15,
4641
4694
  display: 'flex',
4642
4695
  alignItems: 'center',
4643
4696
  gap: 8,
@@ -4654,21 +4707,22 @@ function CTAOverlayHero(props) {
4654
4707
  style: {
4655
4708
  marginTop: 8,
4656
4709
  display: 'flex',
4657
- gap: 16,
4710
+ gap: isMobile ? 12 : 16,
4658
4711
  justifyContent: 'center',
4659
4712
  flexWrap: 'wrap'
4660
4713
  },
4661
4714
  children: [jsxs("button", {
4662
4715
  type: "button",
4716
+ "aria-label": buttonText,
4663
4717
  style: {
4664
- padding: '16px 32px',
4718
+ padding: `${isMobile ? 12 : 16}px ${isMobile ? 24 : 32}px`,
4665
4719
  borderRadius: 12,
4666
4720
  border: `1px solid ${accent}`,
4667
4721
  background: accent,
4668
- color: ui$w.white,
4722
+ color: ui$x.white,
4669
4723
  cursor: 'pointer',
4670
4724
  fontWeight: 700,
4671
- fontSize: 16,
4725
+ fontSize: isMobile ? 14 : 16,
4672
4726
  display: 'flex',
4673
4727
  alignItems: 'center',
4674
4728
  gap: 8,
@@ -4680,15 +4734,16 @@ function CTAOverlayHero(props) {
4680
4734
  })]
4681
4735
  }), jsxs("button", {
4682
4736
  type: "button",
4737
+ "aria-label": "Watch demo",
4683
4738
  style: {
4684
- padding: '16px 32px',
4739
+ padding: `${isMobile ? 12 : 16}px ${isMobile ? 24 : 32}px`,
4685
4740
  borderRadius: 12,
4686
4741
  border: `1px solid ${bgImage ? 'rgba(255,255,255,0.22)' : border}`,
4687
- background: bgImage ? 'rgba(255,255,255,0.1)' : ui$w.white,
4688
- color: bgImage ? ui$w.white : fg,
4742
+ background: bgImage ? 'rgba(255,255,255,0.1)' : ui$x.white,
4743
+ color: bgImage ? ui$x.white : fg,
4689
4744
  cursor: 'pointer',
4690
4745
  fontWeight: 600,
4691
- fontSize: 16,
4746
+ fontSize: isMobile ? 14 : 16,
4692
4747
  display: 'flex',
4693
4748
  alignItems: 'center',
4694
4749
  gap: 8,
@@ -4706,10 +4761,10 @@ function CTAOverlayHero(props) {
4706
4761
  display: 'flex',
4707
4762
  alignItems: 'center',
4708
4763
  justifyContent: 'center',
4709
- gap: 24,
4764
+ gap: isMobile ? 16 : 24,
4710
4765
  flexWrap: 'wrap',
4711
- color: bgImage ? 'rgba(255,255,255,0.7)' : ui$w.muted,
4712
- fontSize: 13,
4766
+ color: bgImage ? 'rgba(255,255,255,0.7)' : ui$x.muted,
4767
+ fontSize: isMobile ? 12 : 13,
4713
4768
  fontWeight: 500
4714
4769
  },
4715
4770
  children: [jsx("span", {
@@ -4724,6 +4779,557 @@ function CTAOverlayHero(props) {
4724
4779
  }));
4725
4780
  }
4726
4781
 
4782
+ const _excluded$M = ["as", "eyebrow", "title", "titleAccent", "titleSuffix", "subtitle", "ctaLabel", "ctaHref", "ctaSecondaryLabel", "ctaSecondaryHref", "imageSrc", "imageAlt", "stats", "layout", "titleSize", "subtitleSize", "bgColor", "textColor", "accentColor", "fontFamily", "minH", "maxW", "px", "py", "radius", "gap", "style", "className", "children"];
4783
+ const ui$w = {
4784
+ white: '#ffffff',
4785
+ black: '#09090b',
4786
+ muted: '#71717a'
4787
+ };
4788
+ /* ── Shared sub-components ──────────────────────────────────────── */
4789
+ function HeroEyebrow({
4790
+ text,
4791
+ accent,
4792
+ fontFamily = 'sans-serif',
4793
+ center,
4794
+ isMobile
4795
+ }) {
4796
+ if (isMobile) {
4797
+ return jsx("span", {
4798
+ style: {
4799
+ color: accent,
4800
+ fontFamily,
4801
+ fontSize: 12,
4802
+ fontWeight: 600,
4803
+ letterSpacing: 6,
4804
+ textTransform: 'uppercase',
4805
+ display: 'block',
4806
+ marginBottom: 24
4807
+ },
4808
+ children: text
4809
+ });
4810
+ }
4811
+ return jsxs("div", {
4812
+ style: {
4813
+ display: 'flex',
4814
+ alignItems: 'center',
4815
+ gap: 12,
4816
+ marginBottom: 32,
4817
+ justifyContent: center ? 'center' : 'flex-start'
4818
+ },
4819
+ children: [jsx("div", {
4820
+ style: {
4821
+ width: 48,
4822
+ height: 1,
4823
+ background: accent
4824
+ }
4825
+ }), jsx("span", {
4826
+ style: {
4827
+ color: accent,
4828
+ fontFamily,
4829
+ fontSize: 12,
4830
+ fontWeight: 600,
4831
+ letterSpacing: 4
4832
+ },
4833
+ children: text
4834
+ }), jsx("div", {
4835
+ style: {
4836
+ width: 48,
4837
+ height: 1,
4838
+ background: accent
4839
+ }
4840
+ })]
4841
+ });
4842
+ }
4843
+ function HeroCTAs({
4844
+ ctaLabel,
4845
+ ctaHref,
4846
+ ctaSecondaryLabel,
4847
+ ctaSecondaryHref,
4848
+ accent,
4849
+ fg,
4850
+ fontFamily = 'sans-serif',
4851
+ radius,
4852
+ isMobile,
4853
+ center
4854
+ }) {
4855
+ if (!ctaLabel && !ctaSecondaryLabel) return null;
4856
+ return jsxs("div", {
4857
+ style: {
4858
+ display: 'flex',
4859
+ flexWrap: 'wrap',
4860
+ gap: 12,
4861
+ justifyContent: center ? 'center' : 'flex-start'
4862
+ },
4863
+ children: [ctaLabel && jsxs("a", {
4864
+ href: ctaHref,
4865
+ style: {
4866
+ display: 'inline-flex',
4867
+ alignItems: 'center',
4868
+ gap: 8,
4869
+ padding: `${isMobile ? 12 : 16}px ${isMobile ? 24 : 32}px`,
4870
+ background: accent,
4871
+ color: ui$w.white,
4872
+ fontFamily,
4873
+ fontWeight: 700,
4874
+ fontSize: isMobile ? 14 : 16,
4875
+ letterSpacing: 1,
4876
+ borderRadius: radius,
4877
+ textDecoration: 'none',
4878
+ transition: 'all 0.2s ease'
4879
+ },
4880
+ children: [ctaLabel, jsx(Icon, {
4881
+ name: "arrow-right",
4882
+ size: 18
4883
+ })]
4884
+ }), ctaSecondaryLabel && jsx("a", {
4885
+ href: ctaSecondaryHref,
4886
+ style: {
4887
+ display: 'inline-flex',
4888
+ alignItems: 'center',
4889
+ gap: 8,
4890
+ padding: `${isMobile ? 12 : 16}px ${isMobile ? 24 : 32}px`,
4891
+ border: '1px solid rgba(255,255,255,0.4)',
4892
+ color: fg,
4893
+ fontFamily,
4894
+ fontWeight: 600,
4895
+ fontSize: isMobile ? 14 : 16,
4896
+ letterSpacing: 1,
4897
+ borderRadius: radius,
4898
+ textDecoration: 'none',
4899
+ transition: 'all 0.2s ease'
4900
+ },
4901
+ children: ctaSecondaryLabel
4902
+ })]
4903
+ });
4904
+ }
4905
+ function HeroStats({
4906
+ stats,
4907
+ accent,
4908
+ fontFamily = 'sans-serif',
4909
+ isMobile,
4910
+ center
4911
+ }) {
4912
+ if (!stats || stats.length === 0) return null;
4913
+ return jsx("div", {
4914
+ style: {
4915
+ display: 'flex',
4916
+ flexWrap: 'wrap',
4917
+ gap: isMobile ? 24 : 32,
4918
+ marginTop: isMobile ? 40 : 48,
4919
+ justifyContent: center ? 'center' : 'flex-start'
4920
+ },
4921
+ children: stats.map(stat => jsxs("div", {
4922
+ children: [jsx("p", {
4923
+ style: {
4924
+ fontFamily,
4925
+ color: accent,
4926
+ fontSize: 24,
4927
+ fontWeight: 700,
4928
+ lineHeight: 1
4929
+ },
4930
+ children: stat.value
4931
+ }), jsx("p", {
4932
+ style: {
4933
+ color: 'rgba(255,255,255,0.5)',
4934
+ fontFamily,
4935
+ fontSize: 10,
4936
+ letterSpacing: 1.5,
4937
+ marginTop: 4
4938
+ },
4939
+ children: stat.label.toUpperCase()
4940
+ })]
4941
+ }, stat.label))
4942
+ });
4943
+ }
4944
+ /* ── Main component ────────────────────────────────────────────── */
4945
+ function ImageHero(props) {
4946
+ var _t$minH, _t$maxW, _t$px, _t$py, _t$cardRadius, _t$gap, _ref, _ref2, _ref3;
4947
+ const t = useHeroTheme();
4948
+ const isMobile = useMediaQuery('(max-width: 768px)');
4949
+ const {
4950
+ as: Tag = 'section',
4951
+ eyebrow = 'Welcome',
4952
+ title = 'Build Something Amazing',
4953
+ titleAccent,
4954
+ titleSuffix,
4955
+ subtitle,
4956
+ ctaLabel,
4957
+ ctaHref = '#',
4958
+ ctaSecondaryLabel,
4959
+ ctaSecondaryHref = '#',
4960
+ imageSrc,
4961
+ imageAlt = 'Hero image',
4962
+ stats,
4963
+ layout = 'split',
4964
+ titleSize = 48,
4965
+ subtitleSize = 18,
4966
+ bgColor,
4967
+ textColor,
4968
+ accentColor,
4969
+ fontFamily = t.fontFamily,
4970
+ minH = (_t$minH = t.minH) != null ? _t$minH : '100vh',
4971
+ maxW = (_t$maxW = t.maxW) != null ? _t$maxW : 1200,
4972
+ px = (_t$px = t.px) != null ? _t$px : 24,
4973
+ py = (_t$py = t.py) != null ? _t$py : 48,
4974
+ radius = (_t$cardRadius = t.cardRadius) != null ? _t$cardRadius : 0,
4975
+ gap = (_t$gap = t.gap) != null ? _t$gap : 24,
4976
+ style = {},
4977
+ className = '',
4978
+ children
4979
+ } = props,
4980
+ rest = _objectWithoutPropertiesLoose(props, _excluded$M);
4981
+ const bg = (_ref = bgColor != null ? bgColor : t.bgColor) != null ? _ref : ui$w.black;
4982
+ const fg = (_ref2 = textColor != null ? textColor : t.textColor) != null ? _ref2 : '#ffffff';
4983
+ const accent = (_ref3 = accentColor != null ? accentColor : t.accentColor) != null ? _ref3 : '#8B5CF6';
4984
+ const rPx = isMobile ? 16 : px;
4985
+ const pyPx = isMobile ? 80 : py;
4986
+ const subSize = isMobile ? Math.max(14, Math.floor(subtitleSize * 0.85)) : subtitleSize;
4987
+ const overlay = `linear-gradient(135deg, ${bg}f2 0%, ${bg}99 60%, ${accent}14 100%)`;
4988
+ const shared = {
4989
+ accent,
4990
+ fontFamily,
4991
+ isMobile,
4992
+ radius
4993
+ };
4994
+ // ── Minimal ──
4995
+ if (layout === 'minimal') {
4996
+ return jsxs(Tag, _extends({
4997
+ className: className,
4998
+ style: _extends({
4999
+ position: 'relative',
5000
+ minHeight: isMobile ? 'auto' : minH,
5001
+ display: 'flex',
5002
+ alignItems: 'center',
5003
+ overflow: 'hidden',
5004
+ background: bg
5005
+ }, style)
5006
+ }, rest, {
5007
+ children: [!isMobile && jsxs(Fragment, {
5008
+ children: [jsx("div", {
5009
+ "aria-hidden": true,
5010
+ style: {
5011
+ position: 'absolute',
5012
+ top: 80,
5013
+ right: 80,
5014
+ width: 160,
5015
+ height: 160,
5016
+ border: `2px solid ${accent}30`
5017
+ }
5018
+ }), jsx("div", {
5019
+ "aria-hidden": true,
5020
+ style: {
5021
+ position: 'absolute',
5022
+ bottom: 128,
5023
+ left: 64,
5024
+ width: 96,
5025
+ height: 256,
5026
+ background: `${accent}10`
5027
+ }
5028
+ }), jsx("div", {
5029
+ "aria-hidden": true,
5030
+ style: {
5031
+ position: 'absolute',
5032
+ top: '50%',
5033
+ right: '33%',
5034
+ width: 1,
5035
+ height: 160,
5036
+ background: accent
5037
+ }
5038
+ })]
5039
+ }), jsx("div", {
5040
+ style: {
5041
+ position: 'relative',
5042
+ zIndex: 1,
5043
+ width: '100%',
5044
+ maxWidth: maxW,
5045
+ margin: '0 auto',
5046
+ padding: `${pyPx}px ${rPx}px`
5047
+ },
5048
+ children: jsxs("div", {
5049
+ style: {
5050
+ maxWidth: 768
5051
+ },
5052
+ children: [jsx(HeroEyebrow, _extends({
5053
+ text: eyebrow
5054
+ }, shared)), jsxs("h1", {
5055
+ style: {
5056
+ fontFamily,
5057
+ color: fg,
5058
+ fontSize: 'clamp(2.2rem, 7vw, 5.5rem)',
5059
+ fontWeight: 400,
5060
+ lineHeight: 0.95,
5061
+ letterSpacing: -1,
5062
+ textTransform: 'uppercase',
5063
+ marginTop: 16,
5064
+ overflowWrap: 'break-word'
5065
+ },
5066
+ children: [title, titleAccent && jsxs(Fragment, {
5067
+ children: [jsx("br", {}), jsx("span", {
5068
+ style: {
5069
+ color: accent
5070
+ },
5071
+ children: titleAccent
5072
+ })]
5073
+ })]
5074
+ }), subtitle && jsx("p", {
5075
+ style: {
5076
+ color: ui$w.muted,
5077
+ fontFamily,
5078
+ fontSize: subSize,
5079
+ lineHeight: 1.8,
5080
+ maxWidth: 400,
5081
+ marginTop: isMobile ? 24 : 32,
5082
+ marginBottom: isMobile ? 32 : 40
5083
+ },
5084
+ children: subtitle
5085
+ }), jsx(HeroCTAs, _extends({
5086
+ ctaLabel: ctaLabel,
5087
+ ctaHref: ctaHref,
5088
+ ctaSecondaryLabel: ctaSecondaryLabel,
5089
+ ctaSecondaryHref: ctaSecondaryHref,
5090
+ fg: fg
5091
+ }, shared)), jsx(HeroStats, _extends({
5092
+ stats: stats
5093
+ }, shared))]
5094
+ })
5095
+ })]
5096
+ }));
5097
+ }
5098
+ // ── Centered ──
5099
+ if (layout === 'centered') {
5100
+ return jsxs(Tag, _extends({
5101
+ className: className,
5102
+ style: _extends({
5103
+ position: 'relative',
5104
+ minHeight: isMobile ? 'auto' : minH,
5105
+ display: 'flex',
5106
+ alignItems: 'center',
5107
+ justifyContent: 'center',
5108
+ overflow: 'hidden',
5109
+ background: bg
5110
+ }, style)
5111
+ }, rest, {
5112
+ children: [imageSrc && jsxs("div", {
5113
+ style: {
5114
+ position: 'absolute',
5115
+ inset: 0
5116
+ },
5117
+ children: [jsx("img", {
5118
+ src: imageSrc,
5119
+ alt: imageAlt,
5120
+ style: {
5121
+ width: '100%',
5122
+ height: '100%',
5123
+ objectFit: 'cover'
5124
+ }
5125
+ }), jsx("div", {
5126
+ "aria-hidden": true,
5127
+ style: {
5128
+ position: 'absolute',
5129
+ inset: 0,
5130
+ background: overlay
5131
+ }
5132
+ })]
5133
+ }), jsxs("div", {
5134
+ style: {
5135
+ position: 'relative',
5136
+ zIndex: 1,
5137
+ width: '100%',
5138
+ maxWidth: isMobile ? '100%' : 800,
5139
+ margin: '0 auto',
5140
+ padding: `${pyPx}px ${rPx}px`,
5141
+ textAlign: 'center'
5142
+ },
5143
+ children: [jsx(HeroEyebrow, _extends({
5144
+ text: eyebrow
5145
+ }, shared, {
5146
+ center: true
5147
+ })), jsxs("h1", {
5148
+ style: {
5149
+ fontFamily,
5150
+ color: fg,
5151
+ fontSize: `clamp(${isMobile ? '2rem' : '2.5rem'}, 6vw, 5.5rem)`,
5152
+ lineHeight: 1.05,
5153
+ letterSpacing: -1,
5154
+ margin: 0
5155
+ },
5156
+ children: [title, titleAccent && jsxs(Fragment, {
5157
+ children: [jsx("br", {}), jsx("em", {
5158
+ style: {
5159
+ color: accent,
5160
+ fontStyle: 'italic'
5161
+ },
5162
+ children: titleAccent
5163
+ })]
5164
+ }), titleSuffix && ` ${titleSuffix}`]
5165
+ }), subtitle && jsx("p", {
5166
+ style: {
5167
+ fontFamily,
5168
+ color: 'rgba(255,255,255,0.7)',
5169
+ fontSize: subSize,
5170
+ lineHeight: 1.7,
5171
+ maxWidth: 520,
5172
+ margin: '20px auto 32px'
5173
+ },
5174
+ children: subtitle
5175
+ }), jsx(HeroCTAs, _extends({
5176
+ ctaLabel: ctaLabel,
5177
+ ctaHref: ctaHref,
5178
+ ctaSecondaryLabel: ctaSecondaryLabel,
5179
+ ctaSecondaryHref: ctaSecondaryHref,
5180
+ fg: fg
5181
+ }, shared, {
5182
+ center: true
5183
+ })), jsx(HeroStats, _extends({
5184
+ stats: stats
5185
+ }, shared, {
5186
+ center: true
5187
+ }))]
5188
+ })]
5189
+ }));
5190
+ }
5191
+ // ── Split (default) ──
5192
+ return jsxs(Tag, _extends({
5193
+ className: className,
5194
+ style: _extends({
5195
+ position: 'relative',
5196
+ minHeight: isMobile ? 'auto' : minH,
5197
+ display: 'flex',
5198
+ alignItems: 'center',
5199
+ overflow: 'hidden',
5200
+ background: bg
5201
+ }, style)
5202
+ }, rest, {
5203
+ children: [imageSrc && jsxs("div", {
5204
+ style: {
5205
+ position: 'absolute',
5206
+ inset: 0
5207
+ },
5208
+ children: [jsx("img", {
5209
+ src: imageSrc,
5210
+ alt: imageAlt,
5211
+ style: {
5212
+ width: '100%',
5213
+ height: '100%',
5214
+ objectFit: 'cover'
5215
+ }
5216
+ }), jsx("div", {
5217
+ "aria-hidden": true,
5218
+ style: {
5219
+ position: 'absolute',
5220
+ inset: 0,
5221
+ background: overlay
5222
+ }
5223
+ })]
5224
+ }), !isMobile && jsxs(Fragment, {
5225
+ children: [jsx("div", {
5226
+ "aria-hidden": true,
5227
+ style: {
5228
+ position: 'absolute',
5229
+ left: 0,
5230
+ top: 0,
5231
+ height: '100%',
5232
+ width: 1,
5233
+ background: `linear-gradient(to bottom, transparent, ${accent}40, transparent)`
5234
+ }
5235
+ }), jsx("div", {
5236
+ "aria-hidden": true,
5237
+ style: {
5238
+ position: 'absolute',
5239
+ right: 0,
5240
+ top: 0,
5241
+ height: '100%',
5242
+ width: 1,
5243
+ background: `linear-gradient(to bottom, transparent, ${accent}40, transparent)`
5244
+ }
5245
+ })]
5246
+ }), jsxs("div", {
5247
+ style: {
5248
+ position: 'relative',
5249
+ zIndex: 1,
5250
+ width: '100%',
5251
+ maxWidth: maxW,
5252
+ margin: '0 auto',
5253
+ padding: `${pyPx}px ${rPx}px`,
5254
+ display: 'grid',
5255
+ gridTemplateColumns: isMobile ? '1fr' : '1fr 1fr',
5256
+ gap: isMobile ? 32 : gap,
5257
+ alignItems: 'center'
5258
+ },
5259
+ children: [jsxs("div", {
5260
+ children: [jsx(HeroEyebrow, _extends({
5261
+ text: eyebrow
5262
+ }, shared)), jsxs("h1", {
5263
+ style: {
5264
+ fontFamily,
5265
+ color: fg,
5266
+ fontSize: `clamp(${isMobile ? '2rem' : '3rem'}, 6vw, 5.5rem)`,
5267
+ lineHeight: 1.05,
5268
+ letterSpacing: -1,
5269
+ margin: 0
5270
+ },
5271
+ children: [title, titleAccent && jsxs(Fragment, {
5272
+ children: [jsx("br", {}), jsx("em", {
5273
+ style: {
5274
+ color: accent,
5275
+ fontStyle: 'italic'
5276
+ },
5277
+ children: titleAccent
5278
+ })]
5279
+ }), titleSuffix && ` ${titleSuffix}`]
5280
+ }), subtitle && jsx("p", {
5281
+ style: {
5282
+ fontFamily,
5283
+ color: 'rgba(255,255,255,0.7)',
5284
+ fontSize: subSize,
5285
+ lineHeight: 1.7,
5286
+ maxWidth: 480,
5287
+ marginTop: isMobile ? 20 : 24,
5288
+ marginBottom: isMobile ? 32 : 40
5289
+ },
5290
+ children: subtitle
5291
+ }), jsx(HeroCTAs, _extends({
5292
+ ctaLabel: ctaLabel,
5293
+ ctaHref: ctaHref,
5294
+ ctaSecondaryLabel: ctaSecondaryLabel,
5295
+ ctaSecondaryHref: ctaSecondaryHref,
5296
+ fg: fg
5297
+ }, shared)), jsx(HeroStats, _extends({
5298
+ stats: stats
5299
+ }, shared))]
5300
+ }), !isMobile && imageSrc && jsx("div", {
5301
+ style: {
5302
+ position: 'relative',
5303
+ height: 580,
5304
+ display: 'flex',
5305
+ justifyContent: 'flex-end'
5306
+ },
5307
+ children: jsx("div", {
5308
+ style: {
5309
+ position: 'absolute',
5310
+ right: 0,
5311
+ top: 0,
5312
+ width: 288,
5313
+ height: 384,
5314
+ overflow: 'hidden',
5315
+ borderRadius: radius || 12,
5316
+ boxShadow: `0 0 60px ${accent}20`
5317
+ },
5318
+ children: jsx("img", {
5319
+ src: imageSrc,
5320
+ alt: imageAlt,
5321
+ style: {
5322
+ width: '100%',
5323
+ height: '100%',
5324
+ objectFit: 'cover'
5325
+ }
5326
+ })
5327
+ })
5328
+ }), children]
5329
+ })]
5330
+ }));
5331
+ }
5332
+
4727
5333
  const _excluded$L = ["as", "title", "subtitle", "pattern", "intensity", "badge", "ctaLabel", "onCta", "stats", "titleSize", "subtitleSize", "bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "minH", "maxW", "px", "py", "radius", "gap", "style", "className"];
4728
5334
  function usePattern(kind, accent, intensity) {
4729
5335
  return useMemo(() => {
@@ -4734,13 +5340,7 @@ function usePattern(kind, accent, intensity) {
4734
5340
  return `linear-gradient(${accent}${Math.round(intensity * 16).toString(16).padStart(2, '0')} 1px, transparent 1px),
4735
5341
  linear-gradient(90deg, ${accent}${Math.round(intensity * 16).toString(16).padStart(2, '0')} 1px, transparent 1px)`;
4736
5342
  }
4737
- return `repeating-linear-gradient(
4738
- 45deg,
4739
- transparent,
4740
- transparent 10px,
4741
- ${accent}${Math.round(intensity * 14).toString(16).padStart(2, '0')} 10px,
4742
- ${accent}${Math.round(intensity * 14).toString(16).padStart(2, '0')} 11px
4743
- )`;
5343
+ return `repeating-linear-gradient(45deg, transparent, transparent 10px, ${accent}${Math.round(intensity * 14).toString(16).padStart(2, '0')} 10px, ${accent}${Math.round(intensity * 14).toString(16).padStart(2, '0')} 11px)`;
4744
5344
  }, [kind, accent, intensity]);
4745
5345
  }
4746
5346
  const defaultStats = [{
@@ -4755,13 +5355,14 @@ const defaultStats = [{
4755
5355
  }];
4756
5356
  const ui$v = {
4757
5357
  white: '#ffffff',
4758
- black: '#09090b',
4759
5358
  text: '#18181b',
4760
5359
  muted: '#71717a',
4761
- border: '#e4e4e7'};
5360
+ border: '#e4e4e7'
5361
+ };
4762
5362
  function PatternedHero(props) {
4763
5363
  var _t$minH, _t$maxW, _t$px, _t$py, _t$cardRadius, _t$gap, _ref, _ref2, _ref3, _ref4, _ref5;
4764
5364
  const t = useHeroTheme();
5365
+ const isMobile = useMediaQuery('(max-width: 768px)');
4765
5366
  const {
4766
5367
  as: Tag = 'section',
4767
5368
  title = 'Built for Modern Development',
@@ -4789,13 +5390,17 @@ function PatternedHero(props) {
4789
5390
  className = ''
4790
5391
  } = props,
4791
5392
  rest = _objectWithoutPropertiesLoose(props, _excluded$L);
4792
- const bg = (_ref = bgColor != null ? bgColor : t.bgColor) != null ? _ref : ui$v.white;
5393
+ const bg = (_ref = bgColor != null ? bgColor : t.bgColor) != null ? _ref : '#ffffff';
4793
5394
  const fg = (_ref2 = textColor != null ? textColor : t.textColor) != null ? _ref2 : ui$v.text;
4794
- const accent = (_ref3 = accentColor != null ? accentColor : t.accentColor) != null ? _ref3 : ui$v.black;
5395
+ const accent = (_ref3 = accentColor != null ? accentColor : t.accentColor) != null ? _ref3 : '#09090b';
4795
5396
  const border = (_ref4 = (_ref5 = borderColor != null ? borderColor : t.cardBorder) != null ? _ref5 : t.borderColor) != null ? _ref4 : ui$v.border;
4796
- const patternBg = usePattern(pattern, accent, intensity);
5397
+ const patternBg = usePattern(pattern, accent, isMobile ? intensity * 0.6 : intensity);
4797
5398
  const sz = pattern === 'dots' ? '20px 20px' : pattern === 'grid' ? '32px 32px' : undefined;
4798
5399
  const [hover, setHover] = useState(false);
5400
+ const rPx = isMobile ? 16 : px;
5401
+ const pyPx = isMobile ? 32 : py;
5402
+ const titlePx = isMobile ? Math.max(28, Math.floor(titleSize * 0.6)) : titleSize;
5403
+ const subPx = isMobile ? Math.max(14, Math.floor(subtitleSize * 0.85)) : subtitleSize;
4799
5404
  return jsxs(Tag, _extends({
4800
5405
  className: className,
4801
5406
  style: _extends({
@@ -4805,7 +5410,7 @@ function PatternedHero(props) {
4805
5410
  color: fg,
4806
5411
  fontFamily,
4807
5412
  minHeight: typeof minH === 'number' ? `${minH}px` : minH,
4808
- padding: `${py}px ${px}px`,
5413
+ padding: `${pyPx}px ${rPx}px`,
4809
5414
  borderRadius: radius,
4810
5415
  border: `1px solid ${border}`,
4811
5416
  position: 'relative',
@@ -4821,7 +5426,7 @@ function PatternedHero(props) {
4821
5426
  backgroundImage: patternBg,
4822
5427
  backgroundSize: sz,
4823
5428
  zIndex: 0,
4824
- opacity: 0.8
5429
+ opacity: isMobile ? 0.4 : 0.8
4825
5430
  }
4826
5431
  }), jsx("div", {
4827
5432
  "aria-hidden": true,
@@ -4831,7 +5436,7 @@ function PatternedHero(props) {
4831
5436
  background: 'linear-gradient(180deg, rgba(255,255,255,0.78), rgba(255,255,255,0))',
4832
5437
  zIndex: 0
4833
5438
  }
4834
- }), jsx("div", {
5439
+ }), !isMobile && jsx("div", {
4835
5440
  "aria-hidden": true,
4836
5441
  style: {
4837
5442
  position: 'absolute',
@@ -4864,7 +5469,7 @@ function PatternedHero(props) {
4864
5469
  color: fg,
4865
5470
  fontSize: 13,
4866
5471
  fontWeight: 600,
4867
- marginBottom: 24,
5472
+ marginBottom: isMobile ? 16 : 24,
4868
5473
  boxShadow: '0 1px 2px rgba(9,9,11,0.04)'
4869
5474
  },
4870
5475
  children: [jsx(Icon, {
@@ -4873,7 +5478,7 @@ function PatternedHero(props) {
4873
5478
  }), badge]
4874
5479
  }), title && jsx("h2", {
4875
5480
  style: {
4876
- fontSize: titleSize,
5481
+ fontSize: titlePx,
4877
5482
  margin: 0,
4878
5483
  fontWeight: 800,
4879
5484
  lineHeight: 1.05,
@@ -4883,9 +5488,9 @@ function PatternedHero(props) {
4883
5488
  children: title
4884
5489
  }), subtitle && jsx("p", {
4885
5490
  style: {
4886
- fontSize: subtitleSize,
5491
+ fontSize: subPx,
4887
5492
  color: ui$v.muted,
4888
- marginTop: 20,
5493
+ marginTop: isMobile ? 12 : 20,
4889
5494
  marginBottom: 0,
4890
5495
  maxWidth: 640,
4891
5496
  marginInline: 'auto',
@@ -4894,24 +5499,25 @@ function PatternedHero(props) {
4894
5499
  children: subtitle
4895
5500
  }), jsx("div", {
4896
5501
  style: {
4897
- marginTop: 32,
5502
+ marginTop: isMobile ? 24 : 32,
4898
5503
  display: 'flex',
4899
5504
  justifyContent: 'center'
4900
5505
  },
4901
5506
  children: jsxs("button", {
4902
5507
  type: "button",
4903
5508
  onClick: onCta,
5509
+ "aria-label": ctaLabel,
4904
5510
  onMouseEnter: () => setHover(true),
4905
5511
  onMouseLeave: () => setHover(false),
4906
5512
  style: {
4907
- padding: '16px 32px',
5513
+ padding: `${isMobile ? 12 : 16}px ${isMobile ? 24 : 32}px`,
4908
5514
  borderRadius: 12,
4909
5515
  border: `1px solid ${accent}`,
4910
5516
  background: accent,
4911
5517
  color: ui$v.white,
4912
5518
  cursor: 'pointer',
4913
5519
  fontWeight: 700,
4914
- fontSize: 16,
5520
+ fontSize: isMobile ? 14 : 16,
4915
5521
  display: 'flex',
4916
5522
  alignItems: 'center',
4917
5523
  gap: 8,
@@ -4926,10 +5532,10 @@ function PatternedHero(props) {
4926
5532
  })
4927
5533
  }), stats.length > 0 && jsx("div", {
4928
5534
  style: {
4929
- marginTop: 52,
5535
+ marginTop: isMobile ? 32 : 52,
4930
5536
  display: 'flex',
4931
5537
  justifyContent: 'center',
4932
- gap: 48,
5538
+ gap: isMobile ? 24 : 48,
4933
5539
  flexWrap: 'wrap'
4934
5540
  },
4935
5541
  children: stats.map((s, i) => jsxs("div", {
@@ -4938,7 +5544,7 @@ function PatternedHero(props) {
4938
5544
  },
4939
5545
  children: [jsx("div", {
4940
5546
  style: {
4941
- fontSize: 32,
5547
+ fontSize: isMobile ? 24 : 32,
4942
5548
  fontWeight: 800,
4943
5549
  color: fg,
4944
5550
  letterSpacing: '-0.03em'
@@ -4946,7 +5552,7 @@ function PatternedHero(props) {
4946
5552
  children: s.value
4947
5553
  }), jsx("div", {
4948
5554
  style: {
4949
- fontSize: 13,
5555
+ fontSize: isMobile ? 12 : 13,
4950
5556
  color: ui$v.muted,
4951
5557
  marginTop: 6,
4952
5558
  fontWeight: 500
@@ -4966,10 +5572,12 @@ const ui$u = {
4966
5572
  text: '#18181b',
4967
5573
  muted: '#71717a',
4968
5574
  border: '#e4e4e7',
4969
- surface: '#fafafa'};
5575
+ surface: '#fafafa'
5576
+ };
4970
5577
  function SplitHero(props) {
4971
5578
  var _t$minH, _t$maxW, _t$px, _t$py, _t$cardRadius, _t$gap, _ref, _ref2, _ref3, _ref4, _ref5;
4972
5579
  const t = useHeroTheme();
5580
+ const isMobile = useMediaQuery('(max-width: 768px)');
4973
5581
  const {
4974
5582
  as: Tag = 'section',
4975
5583
  title = 'Everything You Need to Succeed',
@@ -5004,6 +5612,10 @@ function SplitHero(props) {
5004
5612
  const accent = (_ref3 = accentColor != null ? accentColor : t.accentColor) != null ? _ref3 : ui$u.black;
5005
5613
  const border = (_ref4 = (_ref5 = borderColor != null ? borderColor : t.cardBorder) != null ? _ref5 : t.borderColor) != null ? _ref4 : ui$u.border;
5006
5614
  const [hover, setHover] = useState(false);
5615
+ const rPx = isMobile ? 16 : px;
5616
+ const pyPx = isMobile ? 32 : py;
5617
+ const titlePx = isMobile ? Math.max(24, Math.floor(titleSize * 0.65)) : titleSize;
5618
+ const subPx = isMobile ? Math.max(14, Math.floor(subtitleSize * 0.85)) : subtitleSize;
5007
5619
  return jsxs(Tag, _extends({
5008
5620
  className: className,
5009
5621
  style: _extends({
@@ -5013,7 +5625,7 @@ function SplitHero(props) {
5013
5625
  color: fg,
5014
5626
  fontFamily,
5015
5627
  minHeight: typeof minH === 'number' ? `${minH}px` : minH,
5016
- padding: `${py}px ${px}px`,
5628
+ padding: `${pyPx}px ${rPx}px`,
5017
5629
  borderRadius: radius,
5018
5630
  border: `1px solid ${border}`,
5019
5631
  position: 'relative',
@@ -5029,7 +5641,7 @@ function SplitHero(props) {
5029
5641
  background: 'linear-gradient(180deg, rgba(250,250,250,0.72), rgba(255,255,255,0))',
5030
5642
  pointerEvents: 'none'
5031
5643
  }
5032
- }), jsx("div", {
5644
+ }), !isMobile && jsx("div", {
5033
5645
  "aria-hidden": true,
5034
5646
  style: {
5035
5647
  position: 'absolute',
@@ -5047,8 +5659,8 @@ function SplitHero(props) {
5047
5659
  width: '100%',
5048
5660
  maxWidth: maxW,
5049
5661
  display: 'grid',
5050
- gridTemplateColumns: '1fr 1fr',
5051
- gap,
5662
+ gridTemplateColumns: isMobile ? '1fr' : '1fr 1fr',
5663
+ gap: isMobile ? 32 : gap,
5052
5664
  alignItems: 'center',
5053
5665
  direction: reverse ? 'rtl' : 'ltr',
5054
5666
  position: 'relative',
@@ -5070,7 +5682,7 @@ function SplitHero(props) {
5070
5682
  color: fg,
5071
5683
  fontSize: 13,
5072
5684
  fontWeight: 600,
5073
- marginBottom: 24,
5685
+ marginBottom: isMobile ? 16 : 24,
5074
5686
  boxShadow: '0 1px 2px rgba(9,9,11,0.04)'
5075
5687
  },
5076
5688
  children: [jsx(Icon, {
@@ -5079,7 +5691,7 @@ function SplitHero(props) {
5079
5691
  }), badge]
5080
5692
  }), title && jsx("h2", {
5081
5693
  style: {
5082
- fontSize: titleSize,
5694
+ fontSize: titlePx,
5083
5695
  margin: 0,
5084
5696
  fontWeight: 800,
5085
5697
  lineHeight: 1.08,
@@ -5089,9 +5701,9 @@ function SplitHero(props) {
5089
5701
  children: title
5090
5702
  }), subtitle && jsx("p", {
5091
5703
  style: {
5092
- fontSize: subtitleSize,
5704
+ fontSize: subPx,
5093
5705
  color: ui$u.muted,
5094
- marginTop: 18,
5706
+ marginTop: isMobile ? 12 : 18,
5095
5707
  marginBottom: 0,
5096
5708
  lineHeight: 1.7
5097
5709
  },
@@ -5100,7 +5712,7 @@ function SplitHero(props) {
5100
5712
  style: {
5101
5713
  listStyle: 'none',
5102
5714
  padding: 0,
5103
- margin: '28px 0 0',
5715
+ margin: `${isMobile ? 20 : 28}px 0 0`,
5104
5716
  display: 'flex',
5105
5717
  flexDirection: 'column',
5106
5718
  gap: 14
@@ -5110,7 +5722,7 @@ function SplitHero(props) {
5110
5722
  display: 'flex',
5111
5723
  alignItems: 'center',
5112
5724
  gap: 12,
5113
- fontSize: 15,
5725
+ fontSize: isMobile ? 14 : 15,
5114
5726
  color: fg,
5115
5727
  fontWeight: 500
5116
5728
  },
@@ -5136,22 +5748,23 @@ function SplitHero(props) {
5136
5748
  }, i))
5137
5749
  }), jsx("div", {
5138
5750
  style: {
5139
- marginTop: 36
5751
+ marginTop: isMobile ? 24 : 36
5140
5752
  },
5141
5753
  children: jsxs("button", {
5142
5754
  type: "button",
5143
5755
  onClick: onCta,
5756
+ "aria-label": ctaLabel,
5144
5757
  onMouseEnter: () => setHover(true),
5145
5758
  onMouseLeave: () => setHover(false),
5146
5759
  style: {
5147
- padding: '16px 32px',
5760
+ padding: `${isMobile ? 12 : 16}px ${isMobile ? 24 : 32}px`,
5148
5761
  borderRadius: 12,
5149
5762
  border: `1px solid ${accent}`,
5150
5763
  background: accent,
5151
5764
  color: ui$u.white,
5152
5765
  cursor: 'pointer',
5153
5766
  fontWeight: 700,
5154
- fontSize: 16,
5767
+ fontSize: isMobile ? 14 : 16,
5155
5768
  display: 'inline-flex',
5156
5769
  alignItems: 'center',
5157
5770
  gap: 8,
@@ -5165,7 +5778,7 @@ function SplitHero(props) {
5165
5778
  })]
5166
5779
  })
5167
5780
  })]
5168
- }), jsx("div", {
5781
+ }), !isMobile && jsx("div", {
5169
5782
  style: {
5170
5783
  direction: 'ltr'
5171
5784
  },
@@ -5230,6 +5843,7 @@ const ui$t = {
5230
5843
  function VideoHeaderHero(props) {
5231
5844
  var _t$minH, _t$maxW, _t$px, _t$py, _t$cardRadius, _ref, _ref2, _ref3, _ref4, _ref5;
5232
5845
  const t = useHeroTheme();
5846
+ const isMobile = useMediaQuery('(max-width: 768px)');
5233
5847
  const {
5234
5848
  as: Tag = 'section',
5235
5849
  videoSrc,
@@ -5261,8 +5875,13 @@ function VideoHeaderHero(props) {
5261
5875
  const fg = (_ref2 = textColor != null ? textColor : t.textColor) != null ? _ref2 : ui$t.white;
5262
5876
  const border = (_ref3 = (_ref4 = borderColor != null ? borderColor : t.cardBorder) != null ? _ref4 : t.borderColor) != null ? _ref3 : ui$t.border;
5263
5877
  const accent = (_ref5 = accentColor != null ? accentColor : t.accentColor) != null ? _ref5 : ui$t.white;
5878
+ const rPx = isMobile ? 16 : px;
5879
+ const pyPx = isMobile ? 32 : py;
5880
+ const titlePx = isMobile ? Math.max(28, Math.floor(titleSize * 0.65)) : titleSize;
5881
+ const subPx = isMobile ? Math.max(14, Math.floor(subtitleSize * 0.85)) : subtitleSize;
5264
5882
  return jsxs(Tag, _extends({
5265
5883
  className: className,
5884
+ "aria-label": title,
5266
5885
  style: _extends({
5267
5886
  display: 'grid',
5268
5887
  placeItems: 'center',
@@ -5270,7 +5889,7 @@ function VideoHeaderHero(props) {
5270
5889
  color: fg,
5271
5890
  fontFamily,
5272
5891
  minHeight: typeof minH === 'number' ? `${minH}px` : minH,
5273
- padding: `${py}px ${px}px`,
5892
+ padding: `${pyPx}px ${rPx}px`,
5274
5893
  borderRadius: radius,
5275
5894
  border: `1px solid ${border}`,
5276
5895
  position: 'relative',
@@ -5285,6 +5904,7 @@ function VideoHeaderHero(props) {
5285
5904
  loop: loop,
5286
5905
  controls: controls,
5287
5906
  poster: poster,
5907
+ "aria-hidden": "true",
5288
5908
  style: {
5289
5909
  position: 'absolute',
5290
5910
  inset: 0,
@@ -5301,17 +5921,11 @@ function VideoHeaderHero(props) {
5301
5921
  style: {
5302
5922
  position: 'absolute',
5303
5923
  inset: 0,
5304
- background: `
5305
- linear-gradient(
5306
- 180deg,
5307
- rgba(9,9,11,${overlay * 0.7}),
5308
- rgba(9,9,11,${overlay})
5309
- )
5310
- `,
5924
+ background: `linear-gradient(180deg, rgba(9,9,11,${overlay * 0.7}), rgba(9,9,11,${overlay}))`,
5311
5925
  backdropFilter: 'blur(1px)',
5312
5926
  zIndex: 1
5313
5927
  }
5314
- }), jsx("div", {
5928
+ }), !isMobile && jsx("div", {
5315
5929
  "aria-hidden": true,
5316
5930
  style: {
5317
5931
  position: 'absolute',
@@ -5336,7 +5950,7 @@ function VideoHeaderHero(props) {
5336
5950
  },
5337
5951
  children: [title && jsx("h2", {
5338
5952
  style: {
5339
- fontSize: titleSize,
5953
+ fontSize: titlePx,
5340
5954
  margin: 0,
5341
5955
  fontWeight: 800,
5342
5956
  lineHeight: 1.05,
@@ -5346,9 +5960,9 @@ function VideoHeaderHero(props) {
5346
5960
  children: title
5347
5961
  }), subtitle && jsx("p", {
5348
5962
  style: {
5349
- fontSize: subtitleSize,
5963
+ fontSize: subPx,
5350
5964
  color: ui$t.muted,
5351
- marginTop: 20,
5965
+ marginTop: isMobile ? 12 : 20,
5352
5966
  marginBottom: 0,
5353
5967
  maxWidth: 640,
5354
5968
  marginInline: 'auto',
@@ -5360,7 +5974,7 @@ function VideoHeaderHero(props) {
5360
5974
  width: 72,
5361
5975
  height: 1,
5362
5976
  background: `linear-gradient(90deg, transparent, ${accent}, transparent)`,
5363
- margin: '36px auto 0',
5977
+ margin: `${isMobile ? 24 : 36}px auto 0`,
5364
5978
  opacity: 0.6
5365
5979
  }
5366
5980
  })]
@@ -20662,4 +21276,4 @@ function CommentsSection(_ref0) {
20662
21276
  }));
20663
21277
  }
20664
21278
 
20665
- export { Accordion, AccountSettings, AddressAutocomplete, AnchorLinks, AnimatedBrandMark, AppInstallBanner, ArchiveList, ArticleRenderer, AudioEmbed, AuthForm, AuthorByline, AutoSuggest, AvatarProfile, Badge, BadgeGroup, BarChart, BlockShell, BlockquoteTestimonial, BlogBadge, BlogCard, BrandIconGrid, BrandingShell, Breadcrumbs, Button, PrimaryButton as ButtonAlias, ButtonGroup, CTAOverlayHero, CalendarGrid, CalloutBox, Captcha, CarouselHero, CartDrawer, CommentsBox, CommentsSection, ComparisonTable, ConfirmDialog, ContactForm, ContactSupportBlock, CookieConsent, CookieNotice, CountdownTimer, DataTable, DateTimePicker, DownloadBlock, DownloadButton, ElectroplixProvider, EmptyState, FAQAccordion, FacetFilters, FaviconUploader, FeatureGrid, FeatureHighlights, FileUploader, FloatingActionButton, FollowLike, Footer, FormDialog, FormShell, GenericList, GenericModal, HeadingSection, HeroShell, HowItWorks, ICON_NAMES, Icon, IconButton, IconGrid, ImageCropperUploader, ImageGallery, InlineCode, InlineCodeText, InputField, ItemCardGrid, LCTimeline, LanguageSelector, LeadMagnetGate, LightboxGallery, LineChart, LoadingButton, LoadingOverlay, LogoDisplay, LottieOrSVG, MapEmbed, MarketingHeroBlock, MasonryGrid, MediaShell, MegaMenu, MiniCartPanel, MultiFactorAuthInput, MultiStepWizard, NewsletterSignup, OnboardingWizard, OrderSummary, OverlayBase, Pagination, ParagraphBlock, PasswordReset, PatternedHero, PaymentButtons, PieChart, PolaroidImage, PricingTable, PrimaryButton, PrimaryNav, PrintButton, ProductCard, ProductDetail, ProductGrid, ProductTour, ProfileOverview, ProfileSettings, ProgressBar, PromoPopup, QuickAddButton, RSSFeed, RadioGroup, RatingStars, ReactionsBar, ReadingBar, RelatedPosts, ResponsiveVideo, ReviewsForm, RichMarkdown, RoleBadge, ScrollProgressBar, SearchEmptyState, SearchResultCard, SearchResults, SecondaryButton, SelectDropdown, ShareButton, SideDrawerNav, SidebarMenu, SiteSearchBar, SocialEmbed, SocialLoginButtons, SocialShareBar, SortableTable, Sparkline, SplitHero, StaticHero, StatsCounter, Stepper, SupportChat, Tabs, TagList, Taglines, TeamGrid, TertiaryButton, TestimonialsCarousel, TextAreaField, ThemeToggle, Timeline, ToastBanners, ToggleSwitch, Tooltip, TooltipHelp, TrustBadges, ValidationWrapper, VariantSelector, VideoHeaderHero, WelcomePopup, WishlistButton, baseBtn, baseButtonStyle, cn, defaultBlogTheme, defaultButtonTheme, defaultConfig, defaultContentTheme, defaultDataDisplayTheme, defaultEcommerceTheme, defaultFormsTheme, defaultHeroTheme, defaultListsCardsTheme, defaultMarketingTheme, defaultMediaTheme, defaultMiscTheme, defaultModalsTheme, defaultNavigationTheme, defaultOnboardingTheme, defaultSearchTheme, defaultSiteIdentityTheme, defaultSocialTheme, defaultUserAccountsTheme, defineConfig, emailRule, inputStyle, labelStyle, maxLengthRule, mergeTheme, minLengthRule, money, requiredRule, sx, timeAgo, truncate, useBlogTheme, useButtonTheme, useClickOutside, useContentTheme, useDataDisplayTheme, useDebounce, useEcommerceTheme, useElectroplixConfig, useFocusTrap, useFormsTheme, useHeroTheme, useListsCardsTheme, useMarketingTheme, useMediaQuery, useMediaTheme, useMiscTheme, useModalsTheme, useNavTheme, useOnboardingTheme, useSearchTheme, useSiteIdentityTheme, useSocialTheme, useUserAccountsTheme, validate };
21279
+ export { Accordion, AccountSettings, AddressAutocomplete, AnchorLinks, AnimatedBrandMark, AppInstallBanner, ArchiveList, ArticleRenderer, AudioEmbed, AuthForm, AuthorByline, AutoSuggest, AvatarProfile, Badge, BadgeGroup, BarChart, BlockShell, BlockquoteTestimonial, BlogBadge, BlogCard, BrandIconGrid, BrandingShell, Breadcrumbs, Button, PrimaryButton as ButtonAlias, ButtonGroup, CTAOverlayHero, CalendarGrid, CalloutBox, Captcha, CarouselHero, CartDrawer, CommentsBox, CommentsSection, ComparisonTable, ConfirmDialog, ContactForm, ContactSupportBlock, CookieConsent, CookieNotice, CountdownTimer, DataTable, DateTimePicker, DownloadBlock, DownloadButton, ElectroplixProvider, EmptyState, FAQAccordion, FacetFilters, FaviconUploader, FeatureGrid, FeatureHighlights, FileUploader, FloatingActionButton, FollowLike, Footer, FormDialog, FormShell, GenericList, GenericModal, HeadingSection, HeroShell, HowItWorks, ICON_NAMES, Icon, IconButton, IconGrid, ImageCropperUploader, ImageGallery, ImageHero, InlineCode, InlineCodeText, InputField, ItemCardGrid, LCTimeline, LanguageSelector, LeadMagnetGate, LightboxGallery, LineChart, LoadingButton, LoadingOverlay, LogoDisplay, LottieOrSVG, MapEmbed, MarketingHeroBlock, MasonryGrid, MediaShell, MegaMenu, MiniCartPanel, MultiFactorAuthInput, MultiStepWizard, NewsletterSignup, OnboardingWizard, OrderSummary, OverlayBase, Pagination, ParagraphBlock, PasswordReset, PatternedHero, PaymentButtons, PieChart, PolaroidImage, PricingTable, PrimaryButton, PrimaryNav, PrintButton, ProductCard, ProductDetail, ProductGrid, ProductTour, ProfileOverview, ProfileSettings, ProgressBar, PromoPopup, QuickAddButton, RSSFeed, RadioGroup, RatingStars, ReactionsBar, ReadingBar, RelatedPosts, ResponsiveVideo, ReviewsForm, RichMarkdown, RoleBadge, ScrollProgressBar, SearchEmptyState, SearchResultCard, SearchResults, SecondaryButton, SelectDropdown, ShareButton, SideDrawerNav, SidebarMenu, SiteSearchBar, SocialEmbed, SocialLoginButtons, SocialShareBar, SortableTable, Sparkline, SplitHero, StaticHero, StatsCounter, Stepper, SupportChat, Tabs, TagList, Taglines, TeamGrid, TertiaryButton, TestimonialsCarousel, TextAreaField, ThemeToggle, Timeline, ToastBanners, ToggleSwitch, Tooltip, TooltipHelp, TrustBadges, ValidationWrapper, VariantSelector, VideoHeaderHero, WelcomePopup, WishlistButton, baseBtn, baseButtonStyle, cn, defaultBlogTheme, defaultButtonTheme, defaultConfig, defaultContentTheme, defaultDataDisplayTheme, defaultEcommerceTheme, defaultFormsTheme, defaultHeroTheme, defaultListsCardsTheme, defaultMarketingTheme, defaultMediaTheme, defaultMiscTheme, defaultModalsTheme, defaultNavigationTheme, defaultOnboardingTheme, defaultSearchTheme, defaultSiteIdentityTheme, defaultSocialTheme, defaultUserAccountsTheme, defineConfig, emailRule, inputStyle, labelStyle, maxLengthRule, mergeTheme, minLengthRule, money, requiredRule, sx, timeAgo, truncate, useBlogTheme, useButtonTheme, useClickOutside, useContentTheme, useDataDisplayTheme, useDebounce, useEcommerceTheme, useElectroplixConfig, useFocusTrap, useFormsTheme, useHeroTheme, useListsCardsTheme, useMarketingTheme, useMediaQuery, useMediaTheme, useMiscTheme, useModalsTheme, useNavTheme, useOnboardingTheme, useSearchTheme, useSiteIdentityTheme, useSocialTheme, useUserAccountsTheme, validate };