@opensite/ui 1.6.3 → 1.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var React = require('react');
4
+ var React6 = require('react');
5
5
  var clsx = require('clsx');
6
6
  var tailwindMerge = require('tailwind-merge');
7
7
  var classVarianceAuthority = require('class-variance-authority');
@@ -28,7 +28,7 @@ function _interopNamespace(e) {
28
28
  return Object.freeze(n);
29
29
  }
30
30
 
31
- var React__namespace = /*#__PURE__*/_interopNamespace(React);
31
+ var React6__namespace = /*#__PURE__*/_interopNamespace(React6);
32
32
 
33
33
  // components/blocks/link-page/link-tree-block.tsx
34
34
  function cn(...inputs) {
@@ -109,7 +109,7 @@ function useNavigation({
109
109
  href,
110
110
  onClick
111
111
  } = {}) {
112
- const linkType = React__namespace.useMemo(() => {
112
+ const linkType = React6__namespace.useMemo(() => {
113
113
  if (!href || href.trim() === "") {
114
114
  return onClick ? "none" : "none";
115
115
  }
@@ -130,7 +130,7 @@ function useNavigation({
130
130
  return "internal";
131
131
  }
132
132
  }, [href, onClick]);
133
- const normalizedHref = React__namespace.useMemo(() => {
133
+ const normalizedHref = React6__namespace.useMemo(() => {
134
134
  if (!href || href.trim() === "") {
135
135
  return void 0;
136
136
  }
@@ -148,7 +148,7 @@ function useNavigation({
148
148
  return trimmed;
149
149
  }
150
150
  }, [href, linkType]);
151
- const target = React__namespace.useMemo(() => {
151
+ const target = React6__namespace.useMemo(() => {
152
152
  switch (linkType) {
153
153
  case "external":
154
154
  return "_blank";
@@ -161,7 +161,7 @@ function useNavigation({
161
161
  return void 0;
162
162
  }
163
163
  }, [linkType]);
164
- const rel = React__namespace.useMemo(() => {
164
+ const rel = React6__namespace.useMemo(() => {
165
165
  if (linkType === "external") {
166
166
  return "noopener noreferrer";
167
167
  }
@@ -170,7 +170,7 @@ function useNavigation({
170
170
  const isExternal = linkType === "external";
171
171
  const isInternal = linkType === "internal";
172
172
  const shouldUseRouter = isInternal && typeof normalizedHref === "string" && normalizedHref.startsWith("/");
173
- const handleClick = React__namespace.useCallback(
173
+ const handleClick = React6__namespace.useCallback(
174
174
  (event) => {
175
175
  if (onClick) {
176
176
  try {
@@ -354,7 +354,7 @@ var buttonVariants = classVarianceAuthority.cva(baseStyles, {
354
354
  size: "default"
355
355
  }
356
356
  });
357
- var Pressable = React__namespace.forwardRef(
357
+ var Pressable = React6__namespace.forwardRef(
358
358
  ({
359
359
  children,
360
360
  className,
@@ -460,10 +460,10 @@ function DynamicIcon({
460
460
  className,
461
461
  alt
462
462
  }) {
463
- const [svgContent, setSvgContent] = React__namespace.useState(null);
464
- const [isLoading, setIsLoading] = React__namespace.useState(true);
465
- const [error, setError] = React__namespace.useState(null);
466
- const { url, iconName } = React__namespace.useMemo(() => {
463
+ const [svgContent, setSvgContent] = React6__namespace.useState(null);
464
+ const [isLoading, setIsLoading] = React6__namespace.useState(true);
465
+ const [error, setError] = React6__namespace.useState(null);
466
+ const { url, iconName } = React6__namespace.useMemo(() => {
467
467
  const separator = name.includes("/") ? "/" : ":";
468
468
  const [prefix, iconName2] = name.split(separator);
469
469
  const baseUrl = `https://icons.opensite.ai/api/icon/${prefix}/${iconName2}?format=svg&width=${size}&height=${size}&key=au382bi7fsh96w9h9xlrnat2jglx`;
@@ -472,7 +472,7 @@ function DynamicIcon({
472
472
  iconName: iconName2
473
473
  };
474
474
  }, [name, size]);
475
- React__namespace.useEffect(() => {
475
+ React6__namespace.useEffect(() => {
476
476
  let isMounted = true;
477
477
  const fetchSvg = async () => {
478
478
  const cached = svgCache.get(url);
@@ -602,7 +602,7 @@ var maxWidthStyles = {
602
602
  "4xl": "max-w-[1536px]",
603
603
  full: "max-w-full"
604
604
  };
605
- var Container = React__namespace.default.forwardRef(
605
+ var Container = React6__namespace.default.forwardRef(
606
606
  ({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
607
607
  const Component = as;
608
608
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -907,7 +907,7 @@ var spacingStyles = {
907
907
  };
908
908
  var predefinedSpacings = ["none", "sm", "md", "lg", "xl"];
909
909
  var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
910
- var Section = React__namespace.default.forwardRef(
910
+ var Section = React6__namespace.default.forwardRef(
911
911
  ({
912
912
  id,
913
913
  title,
@@ -987,7 +987,6 @@ function LinkTreeBlock({
987
987
  footerAction,
988
988
  footerSlot,
989
989
  className,
990
- containerClassName,
991
990
  contentClassName,
992
991
  headerClassName,
993
992
  avatarClassName,
@@ -1014,20 +1013,20 @@ function LinkTreeBlock({
1014
1013
  socialLinkClassName,
1015
1014
  socialIconClassName,
1016
1015
  footerClassName,
1017
- background = "gray",
1018
- spacing,
1016
+ background,
1017
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
1018
+ spacing = "py-12 md:py-32",
1019
1019
  pattern,
1020
1020
  patternOpacity,
1021
1021
  patternClassName,
1022
1022
  backgroundPattern,
1023
- accentColor,
1024
1023
  optixFlowConfig
1025
1024
  }) {
1026
1025
  const resolvedBackground = background;
1027
1026
  const resolvedPattern = pattern ?? backgroundPattern;
1028
- const [lightboxOpen, setLightboxOpen] = React.useState(false);
1029
- const [lightboxIndex, setLightboxIndex] = React.useState(0);
1030
- const lightboxItems = React.useMemo(() => {
1027
+ const [lightboxOpen, setLightboxOpen] = React6__namespace.useState(false);
1028
+ const [lightboxIndex, setLightboxIndex] = React6__namespace.useState(0);
1029
+ const lightboxItems = React6__namespace.useMemo(() => {
1031
1030
  if (!mediaGallery || mediaGallery.length === 0) return [];
1032
1031
  return mediaGallery.slice(0, mediaGalleryLimit).map((item, index) => ({
1033
1032
  id: item.id ?? `media-${index}`,
@@ -1039,11 +1038,11 @@ function LinkTreeBlock({
1039
1038
  share: true
1040
1039
  }));
1041
1040
  }, [mediaGallery, mediaGalleryLimit]);
1042
- const handleMediaClick = React.useCallback((index) => {
1041
+ const handleMediaClick = React6__namespace.useCallback((index) => {
1043
1042
  setLightboxIndex(index);
1044
1043
  setLightboxOpen(true);
1045
1044
  }, []);
1046
- const handleLightboxClose = React.useCallback(() => {
1045
+ const handleLightboxClose = React6__namespace.useCallback(() => {
1047
1046
  setLightboxOpen(false);
1048
1047
  }, []);
1049
1048
  const resolveImage = (value, fallbackAlt) => {
@@ -1055,7 +1054,7 @@ function LinkTreeBlock({
1055
1054
  };
1056
1055
  const nameForAlt = typeof brandName === "string" ? brandName : "Brand avatar";
1057
1056
  const resolvedAvatar = resolveImage(brandAvatar || brandLogo, nameForAlt) || resolveImage(blockBrandedIconsAndPlaceholders.avatar1, nameForAlt);
1058
- const renderBrandHeader = React.useMemo(() => {
1057
+ const renderBrandHeader = React6__namespace.useMemo(() => {
1059
1058
  if (brandSlot) return brandSlot;
1060
1059
  return /* @__PURE__ */ jsxRuntime.jsxs(
1061
1060
  "div",
@@ -1142,7 +1141,7 @@ function LinkTreeBlock({
1142
1141
  brandTagline,
1143
1142
  taglineClassName
1144
1143
  ]);
1145
- const renderLinks = React.useMemo(() => {
1144
+ const renderLinks = React6__namespace.useMemo(() => {
1146
1145
  if (linksSlot) return linksSlot;
1147
1146
  if (!links || links.length === 0) return null;
1148
1147
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("space-y-3", linksClassName), children: links.map((link, index) => {
@@ -1174,7 +1173,7 @@ function LinkTreeBlock({
1174
1173
  className: cn(
1175
1174
  "group relative flex w-full items-center gap-3 rounded-xl px-4 py-3.5 transition-all duration-200",
1176
1175
  "hover:scale-[1.02] active:scale-[0.98]",
1177
- isFeatured ? "bg-primary text-primary-foreground shadow-lg hover:bg-primary/90" : "border border-border bg-card hover:bg-accent",
1176
+ isFeatured ? "bg-primary text-primary-foreground shadow-lg hover:bg-primary/90" : "border border-border bg-card text-card-foreground hover:bg-accent",
1178
1177
  linkClassName,
1179
1178
  isFeatured ? featuredLinkClassName : null,
1180
1179
  linkItemClassName
@@ -1191,7 +1190,7 @@ function LinkTreeBlock({
1191
1190
  className: cn(
1192
1191
  "group relative flex w-full items-center gap-3 rounded-xl px-4 py-3.5 transition-all duration-200",
1193
1192
  "hover:scale-[1.02] active:scale-[0.98]",
1194
- isFeatured ? "bg-primary text-primary-foreground shadow-lg hover:bg-primary/90" : "border border-border bg-card hover:bg-accent",
1193
+ isFeatured ? "bg-primary text-primary-foreground shadow-lg hover:bg-primary/90" : "border border-border bg-card text-card-foreground hover:bg-accent",
1195
1194
  linkClassName,
1196
1195
  isFeatured ? featuredLinkClassName : null,
1197
1196
  linkItemClassName
@@ -1259,7 +1258,7 @@ function LinkTreeBlock({
1259
1258
  linkBadgeClassName,
1260
1259
  linkChevronClassName
1261
1260
  ]);
1262
- const renderMediaGallery = React.useMemo(() => {
1261
+ const renderMediaGallery = React6__namespace.useMemo(() => {
1263
1262
  if (mediaGallerySlot) return mediaGallerySlot;
1264
1263
  if (!mediaGallery || mediaGallery.length === 0) return null;
1265
1264
  const items = mediaGallery.slice(0, mediaGalleryLimit);
@@ -1373,7 +1372,7 @@ function LinkTreeBlock({
1373
1372
  mediaGalleryOverlayClassName,
1374
1373
  mediaGalleryPlayIconClassName
1375
1374
  ]);
1376
- const renderSocialLinks = React.useMemo(() => {
1375
+ const renderSocialLinks = React6__namespace.useMemo(() => {
1377
1376
  if (socialLinksSlot) return socialLinksSlot;
1378
1377
  if (!socialLinks || socialLinks.length === 0) return null;
1379
1378
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -1419,7 +1418,7 @@ function LinkTreeBlock({
1419
1418
  socialIconClassName,
1420
1419
  socialLinkClassName
1421
1420
  ]);
1422
- const renderFooter = React.useMemo(() => {
1421
+ const renderFooter = React6__namespace.useMemo(() => {
1423
1422
  if (footerSlot) return footerSlot;
1424
1423
  if (!footerAction) return null;
1425
1424
  const resolvedFooterAction = footerAction;
@@ -1458,7 +1457,7 @@ function LinkTreeBlock({
1458
1457
  pattern: resolvedPattern,
1459
1458
  patternOpacity,
1460
1459
  patternClassName,
1461
- style: accentColor ? { "--accent-color": accentColor } : void 0,
1460
+ containerClassName,
1462
1461
  children: [
1463
1462
  /* @__PURE__ */ jsxRuntime.jsx(
1464
1463
  "div",
@@ -245,10 +245,6 @@ interface LinkTreeBlockProps {
245
245
  * Background pattern URL (legacy)
246
246
  */
247
247
  backgroundPattern?: PatternName | undefined;
248
- /**
249
- * Custom accent color CSS value (applied as --accent-color CSS variable)
250
- */
251
- accentColor?: string;
252
248
  /**
253
249
  * OptixFlow image optimization configuration
254
250
  */
@@ -290,6 +286,6 @@ interface LinkTreeBlockProps {
290
286
  * />
291
287
  * ```
292
288
  */
293
- declare function LinkTreeBlock({ brandName, brandTagline, brandLogo, brandAvatar, brandVerified, verifiedIcon, brandSlot, links, linksSlot, socialLinks, socialLinksSlot, mediaGallery, mediaGallerySlot, mediaGalleryTitle, mediaGalleryLimit, footerAction, footerSlot, className, containerClassName, contentClassName, headerClassName, avatarClassName, nameClassName, taglineClassName, verifiedBadgeClassName, verifiedIconClassName, linksClassName, linkClassName, featuredLinkClassName, linkIconClassName, linkLabelClassName, linkDescriptionClassName, linkBadgeClassName, linkChevronClassName, mediaGalleryClassName, mediaGalleryTitleClassName, mediaGalleryGridClassName, mediaGalleryItemClassName, mediaGalleryMediaClassName, mediaGalleryOverlayClassName, mediaGalleryPlayIconClassName, socialLinksClassName, socialLinkClassName, socialIconClassName, footerClassName, background, spacing, pattern, patternOpacity, patternClassName, backgroundPattern, accentColor, optixFlowConfig, }: LinkTreeBlockProps): React.JSX.Element;
289
+ declare function LinkTreeBlock({ brandName, brandTagline, brandLogo, brandAvatar, brandVerified, verifiedIcon, brandSlot, links, linksSlot, socialLinks, socialLinksSlot, mediaGallery, mediaGallerySlot, mediaGalleryTitle, mediaGalleryLimit, footerAction, footerSlot, className, contentClassName, headerClassName, avatarClassName, nameClassName, taglineClassName, verifiedBadgeClassName, verifiedIconClassName, linksClassName, linkClassName, featuredLinkClassName, linkIconClassName, linkLabelClassName, linkDescriptionClassName, linkBadgeClassName, linkChevronClassName, mediaGalleryClassName, mediaGalleryTitleClassName, mediaGalleryGridClassName, mediaGalleryItemClassName, mediaGalleryMediaClassName, mediaGalleryOverlayClassName, mediaGalleryPlayIconClassName, socialLinksClassName, socialLinkClassName, socialIconClassName, footerClassName, background, containerClassName, spacing, pattern, patternOpacity, patternClassName, backgroundPattern, optixFlowConfig, }: LinkTreeBlockProps): React.JSX.Element;
294
290
 
295
291
  export { LinkTreeBlock, type LinkTreeBlockProps, type LinkTreeLink, type MediaGalleryItem, type SocialLink };
@@ -245,10 +245,6 @@ interface LinkTreeBlockProps {
245
245
  * Background pattern URL (legacy)
246
246
  */
247
247
  backgroundPattern?: PatternName | undefined;
248
- /**
249
- * Custom accent color CSS value (applied as --accent-color CSS variable)
250
- */
251
- accentColor?: string;
252
248
  /**
253
249
  * OptixFlow image optimization configuration
254
250
  */
@@ -290,6 +286,6 @@ interface LinkTreeBlockProps {
290
286
  * />
291
287
  * ```
292
288
  */
293
- declare function LinkTreeBlock({ brandName, brandTagline, brandLogo, brandAvatar, brandVerified, verifiedIcon, brandSlot, links, linksSlot, socialLinks, socialLinksSlot, mediaGallery, mediaGallerySlot, mediaGalleryTitle, mediaGalleryLimit, footerAction, footerSlot, className, containerClassName, contentClassName, headerClassName, avatarClassName, nameClassName, taglineClassName, verifiedBadgeClassName, verifiedIconClassName, linksClassName, linkClassName, featuredLinkClassName, linkIconClassName, linkLabelClassName, linkDescriptionClassName, linkBadgeClassName, linkChevronClassName, mediaGalleryClassName, mediaGalleryTitleClassName, mediaGalleryGridClassName, mediaGalleryItemClassName, mediaGalleryMediaClassName, mediaGalleryOverlayClassName, mediaGalleryPlayIconClassName, socialLinksClassName, socialLinkClassName, socialIconClassName, footerClassName, background, spacing, pattern, patternOpacity, patternClassName, backgroundPattern, accentColor, optixFlowConfig, }: LinkTreeBlockProps): React.JSX.Element;
289
+ declare function LinkTreeBlock({ brandName, brandTagline, brandLogo, brandAvatar, brandVerified, verifiedIcon, brandSlot, links, linksSlot, socialLinks, socialLinksSlot, mediaGallery, mediaGallerySlot, mediaGalleryTitle, mediaGalleryLimit, footerAction, footerSlot, className, contentClassName, headerClassName, avatarClassName, nameClassName, taglineClassName, verifiedBadgeClassName, verifiedIconClassName, linksClassName, linkClassName, featuredLinkClassName, linkIconClassName, linkLabelClassName, linkDescriptionClassName, linkBadgeClassName, linkChevronClassName, mediaGalleryClassName, mediaGalleryTitleClassName, mediaGalleryGridClassName, mediaGalleryItemClassName, mediaGalleryMediaClassName, mediaGalleryOverlayClassName, mediaGalleryPlayIconClassName, socialLinksClassName, socialLinkClassName, socialIconClassName, footerClassName, background, containerClassName, spacing, pattern, patternOpacity, patternClassName, backgroundPattern, optixFlowConfig, }: LinkTreeBlockProps): React.JSX.Element;
294
290
 
295
291
  export { LinkTreeBlock, type LinkTreeBlockProps, type LinkTreeLink, type MediaGalleryItem, type SocialLink };
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import * as React from 'react';
3
- import React__default, { useState, useMemo, useCallback } from 'react';
2
+ import * as React6 from 'react';
3
+ import React6__default from 'react';
4
4
  import { clsx } from 'clsx';
5
5
  import { twMerge } from 'tailwind-merge';
6
6
  import { cva } from 'class-variance-authority';
@@ -88,7 +88,7 @@ function useNavigation({
88
88
  href,
89
89
  onClick
90
90
  } = {}) {
91
- const linkType = React.useMemo(() => {
91
+ const linkType = React6.useMemo(() => {
92
92
  if (!href || href.trim() === "") {
93
93
  return onClick ? "none" : "none";
94
94
  }
@@ -109,7 +109,7 @@ function useNavigation({
109
109
  return "internal";
110
110
  }
111
111
  }, [href, onClick]);
112
- const normalizedHref = React.useMemo(() => {
112
+ const normalizedHref = React6.useMemo(() => {
113
113
  if (!href || href.trim() === "") {
114
114
  return void 0;
115
115
  }
@@ -127,7 +127,7 @@ function useNavigation({
127
127
  return trimmed;
128
128
  }
129
129
  }, [href, linkType]);
130
- const target = React.useMemo(() => {
130
+ const target = React6.useMemo(() => {
131
131
  switch (linkType) {
132
132
  case "external":
133
133
  return "_blank";
@@ -140,7 +140,7 @@ function useNavigation({
140
140
  return void 0;
141
141
  }
142
142
  }, [linkType]);
143
- const rel = React.useMemo(() => {
143
+ const rel = React6.useMemo(() => {
144
144
  if (linkType === "external") {
145
145
  return "noopener noreferrer";
146
146
  }
@@ -149,7 +149,7 @@ function useNavigation({
149
149
  const isExternal = linkType === "external";
150
150
  const isInternal = linkType === "internal";
151
151
  const shouldUseRouter = isInternal && typeof normalizedHref === "string" && normalizedHref.startsWith("/");
152
- const handleClick = React.useCallback(
152
+ const handleClick = React6.useCallback(
153
153
  (event) => {
154
154
  if (onClick) {
155
155
  try {
@@ -333,7 +333,7 @@ var buttonVariants = cva(baseStyles, {
333
333
  size: "default"
334
334
  }
335
335
  });
336
- var Pressable = React.forwardRef(
336
+ var Pressable = React6.forwardRef(
337
337
  ({
338
338
  children,
339
339
  className,
@@ -439,10 +439,10 @@ function DynamicIcon({
439
439
  className,
440
440
  alt
441
441
  }) {
442
- const [svgContent, setSvgContent] = React.useState(null);
443
- const [isLoading, setIsLoading] = React.useState(true);
444
- const [error, setError] = React.useState(null);
445
- const { url, iconName } = React.useMemo(() => {
442
+ const [svgContent, setSvgContent] = React6.useState(null);
443
+ const [isLoading, setIsLoading] = React6.useState(true);
444
+ const [error, setError] = React6.useState(null);
445
+ const { url, iconName } = React6.useMemo(() => {
446
446
  const separator = name.includes("/") ? "/" : ":";
447
447
  const [prefix, iconName2] = name.split(separator);
448
448
  const baseUrl = `https://icons.opensite.ai/api/icon/${prefix}/${iconName2}?format=svg&width=${size}&height=${size}&key=au382bi7fsh96w9h9xlrnat2jglx`;
@@ -451,7 +451,7 @@ function DynamicIcon({
451
451
  iconName: iconName2
452
452
  };
453
453
  }, [name, size]);
454
- React.useEffect(() => {
454
+ React6.useEffect(() => {
455
455
  let isMounted = true;
456
456
  const fetchSvg = async () => {
457
457
  const cached = svgCache.get(url);
@@ -581,7 +581,7 @@ var maxWidthStyles = {
581
581
  "4xl": "max-w-[1536px]",
582
582
  full: "max-w-full"
583
583
  };
584
- var Container = React__default.forwardRef(
584
+ var Container = React6__default.forwardRef(
585
585
  ({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
586
586
  const Component = as;
587
587
  return /* @__PURE__ */ jsx(
@@ -886,7 +886,7 @@ var spacingStyles = {
886
886
  };
887
887
  var predefinedSpacings = ["none", "sm", "md", "lg", "xl"];
888
888
  var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
889
- var Section = React__default.forwardRef(
889
+ var Section = React6__default.forwardRef(
890
890
  ({
891
891
  id,
892
892
  title,
@@ -966,7 +966,6 @@ function LinkTreeBlock({
966
966
  footerAction,
967
967
  footerSlot,
968
968
  className,
969
- containerClassName,
970
969
  contentClassName,
971
970
  headerClassName,
972
971
  avatarClassName,
@@ -993,20 +992,20 @@ function LinkTreeBlock({
993
992
  socialLinkClassName,
994
993
  socialIconClassName,
995
994
  footerClassName,
996
- background = "gray",
997
- spacing,
995
+ background,
996
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
997
+ spacing = "py-12 md:py-32",
998
998
  pattern,
999
999
  patternOpacity,
1000
1000
  patternClassName,
1001
1001
  backgroundPattern,
1002
- accentColor,
1003
1002
  optixFlowConfig
1004
1003
  }) {
1005
1004
  const resolvedBackground = background;
1006
1005
  const resolvedPattern = pattern ?? backgroundPattern;
1007
- const [lightboxOpen, setLightboxOpen] = useState(false);
1008
- const [lightboxIndex, setLightboxIndex] = useState(0);
1009
- const lightboxItems = useMemo(() => {
1006
+ const [lightboxOpen, setLightboxOpen] = React6.useState(false);
1007
+ const [lightboxIndex, setLightboxIndex] = React6.useState(0);
1008
+ const lightboxItems = React6.useMemo(() => {
1010
1009
  if (!mediaGallery || mediaGallery.length === 0) return [];
1011
1010
  return mediaGallery.slice(0, mediaGalleryLimit).map((item, index) => ({
1012
1011
  id: item.id ?? `media-${index}`,
@@ -1018,11 +1017,11 @@ function LinkTreeBlock({
1018
1017
  share: true
1019
1018
  }));
1020
1019
  }, [mediaGallery, mediaGalleryLimit]);
1021
- const handleMediaClick = useCallback((index) => {
1020
+ const handleMediaClick = React6.useCallback((index) => {
1022
1021
  setLightboxIndex(index);
1023
1022
  setLightboxOpen(true);
1024
1023
  }, []);
1025
- const handleLightboxClose = useCallback(() => {
1024
+ const handleLightboxClose = React6.useCallback(() => {
1026
1025
  setLightboxOpen(false);
1027
1026
  }, []);
1028
1027
  const resolveImage = (value, fallbackAlt) => {
@@ -1034,7 +1033,7 @@ function LinkTreeBlock({
1034
1033
  };
1035
1034
  const nameForAlt = typeof brandName === "string" ? brandName : "Brand avatar";
1036
1035
  const resolvedAvatar = resolveImage(brandAvatar || brandLogo, nameForAlt) || resolveImage(blockBrandedIconsAndPlaceholders.avatar1, nameForAlt);
1037
- const renderBrandHeader = useMemo(() => {
1036
+ const renderBrandHeader = React6.useMemo(() => {
1038
1037
  if (brandSlot) return brandSlot;
1039
1038
  return /* @__PURE__ */ jsxs(
1040
1039
  "div",
@@ -1121,7 +1120,7 @@ function LinkTreeBlock({
1121
1120
  brandTagline,
1122
1121
  taglineClassName
1123
1122
  ]);
1124
- const renderLinks = useMemo(() => {
1123
+ const renderLinks = React6.useMemo(() => {
1125
1124
  if (linksSlot) return linksSlot;
1126
1125
  if (!links || links.length === 0) return null;
1127
1126
  return /* @__PURE__ */ jsx("div", { className: cn("space-y-3", linksClassName), children: links.map((link, index) => {
@@ -1153,7 +1152,7 @@ function LinkTreeBlock({
1153
1152
  className: cn(
1154
1153
  "group relative flex w-full items-center gap-3 rounded-xl px-4 py-3.5 transition-all duration-200",
1155
1154
  "hover:scale-[1.02] active:scale-[0.98]",
1156
- isFeatured ? "bg-primary text-primary-foreground shadow-lg hover:bg-primary/90" : "border border-border bg-card hover:bg-accent",
1155
+ isFeatured ? "bg-primary text-primary-foreground shadow-lg hover:bg-primary/90" : "border border-border bg-card text-card-foreground hover:bg-accent",
1157
1156
  linkClassName,
1158
1157
  isFeatured ? featuredLinkClassName : null,
1159
1158
  linkItemClassName
@@ -1170,7 +1169,7 @@ function LinkTreeBlock({
1170
1169
  className: cn(
1171
1170
  "group relative flex w-full items-center gap-3 rounded-xl px-4 py-3.5 transition-all duration-200",
1172
1171
  "hover:scale-[1.02] active:scale-[0.98]",
1173
- isFeatured ? "bg-primary text-primary-foreground shadow-lg hover:bg-primary/90" : "border border-border bg-card hover:bg-accent",
1172
+ isFeatured ? "bg-primary text-primary-foreground shadow-lg hover:bg-primary/90" : "border border-border bg-card text-card-foreground hover:bg-accent",
1174
1173
  linkClassName,
1175
1174
  isFeatured ? featuredLinkClassName : null,
1176
1175
  linkItemClassName
@@ -1238,7 +1237,7 @@ function LinkTreeBlock({
1238
1237
  linkBadgeClassName,
1239
1238
  linkChevronClassName
1240
1239
  ]);
1241
- const renderMediaGallery = useMemo(() => {
1240
+ const renderMediaGallery = React6.useMemo(() => {
1242
1241
  if (mediaGallerySlot) return mediaGallerySlot;
1243
1242
  if (!mediaGallery || mediaGallery.length === 0) return null;
1244
1243
  const items = mediaGallery.slice(0, mediaGalleryLimit);
@@ -1352,7 +1351,7 @@ function LinkTreeBlock({
1352
1351
  mediaGalleryOverlayClassName,
1353
1352
  mediaGalleryPlayIconClassName
1354
1353
  ]);
1355
- const renderSocialLinks = useMemo(() => {
1354
+ const renderSocialLinks = React6.useMemo(() => {
1356
1355
  if (socialLinksSlot) return socialLinksSlot;
1357
1356
  if (!socialLinks || socialLinks.length === 0) return null;
1358
1357
  return /* @__PURE__ */ jsx(
@@ -1398,7 +1397,7 @@ function LinkTreeBlock({
1398
1397
  socialIconClassName,
1399
1398
  socialLinkClassName
1400
1399
  ]);
1401
- const renderFooter = useMemo(() => {
1400
+ const renderFooter = React6.useMemo(() => {
1402
1401
  if (footerSlot) return footerSlot;
1403
1402
  if (!footerAction) return null;
1404
1403
  const resolvedFooterAction = footerAction;
@@ -1437,7 +1436,7 @@ function LinkTreeBlock({
1437
1436
  pattern: resolvedPattern,
1438
1437
  patternOpacity,
1439
1438
  patternClassName,
1440
- style: accentColor ? { "--accent-color": accentColor } : void 0,
1439
+ containerClassName,
1441
1440
  children: [
1442
1441
  /* @__PURE__ */ jsx(
1443
1442
  "div",