@windrun-huaiin/third-ui 11.0.7 → 11.0.9

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,6 +1,10 @@
1
1
  import type { CSSProperties, ReactNode } from 'react';
2
2
  import { type HomeLayoutProps } from 'fumadocs-ui/layouts/home';
3
+ import { type LinkItemType } from 'fumadocs-ui/layouts/docs';
3
4
  import { type DesktopAction, type MobileBarAction, type MobileMenuAction } from './custom-header';
5
+ export type ExtendedLinkItem = LinkItemType & {
6
+ mobilePinned?: boolean;
7
+ };
4
8
  export interface CustomHomeLayoutProps {
5
9
  locale: string;
6
10
  options: HomeLayoutProps;
@@ -76,3 +80,7 @@ export interface HeaderActionOrders {
76
80
  mobileMenu?: MobileMenuAction[];
77
81
  }
78
82
  export declare function CustomHomeLayout({ locale, options, children, showBanner, bannerHeight, headerHeight, headerPaddingTop, navbarClassName, banner, footer, goToTop, showFooter, showGoToTop, style, floatingNav, actionOrders, }: CustomHomeLayoutProps): import("react/jsx-runtime").JSX.Element;
83
+ export declare function HomeTitle({ children, className, }: {
84
+ children: ReactNode;
85
+ className?: string;
86
+ }): import("react/jsx-runtime").JSX.Element;
@@ -19,5 +19,9 @@ function CustomHomeLayout({ locale, options, children, showBanner = false, banne
19
19
  const header = (jsxRuntime.jsx(customHeader.CustomHomeHeader, Object.assign({}, homeLayoutProps, { nav: navOptions, bannerHeight: resolvedBannerHeight, headerHeight: headerHeight, navbarClassName: navbarClassName, floating: floatingNav, desktopActionsOrder: actionOrders === null || actionOrders === void 0 ? void 0 : actionOrders.desktop, mobileBarActionsOrder: actionOrders === null || actionOrders === void 0 ? void 0 : actionOrders.mobileBar, mobileMenuActionsOrder: actionOrders === null || actionOrders === void 0 ? void 0 : actionOrders.mobileMenu })));
20
20
  return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [banner !== null && banner !== void 0 ? banner : (jsxRuntime.jsx(fumaBannerSuit.FumaBannerSuit, { locale: locale, showBanner: showBanner, floating: floatingNav })), jsxRuntime.jsxs(home.HomeLayout, Object.assign({}, homeLayoutProps, { nav: Object.assign(Object.assign({}, navOptions), { component: header }), className: 'bg-neutral-100 dark:bg-neutral-900', style: layoutStyle, children: [children, showFooter ? footer$1 !== null && footer$1 !== void 0 ? footer$1 : jsxRuntime.jsx(footer.Footer, { locale: locale }) : null, showGoToTop ? goToTop$1 !== null && goToTop$1 !== void 0 ? goToTop$1 : jsxRuntime.jsx(goToTop.GoToTop, {}) : null] }))] }));
21
21
  }
22
+ function HomeTitle({ children, className, }) {
23
+ return (jsxRuntime.jsx("span", { className: `font-medium in-[.uwu]:hidden in-[header]:text-[15px] ${className !== null && className !== void 0 ? className : ''}`, children: children }));
24
+ }
22
25
 
23
26
  exports.CustomHomeLayout = CustomHomeLayout;
27
+ exports.HomeTitle = HomeTitle;
@@ -17,5 +17,8 @@ function CustomHomeLayout({ locale, options, children, showBanner = false, banne
17
17
  const header = (jsx(CustomHomeHeader, Object.assign({}, homeLayoutProps, { nav: navOptions, bannerHeight: resolvedBannerHeight, headerHeight: headerHeight, navbarClassName: navbarClassName, floating: floatingNav, desktopActionsOrder: actionOrders === null || actionOrders === void 0 ? void 0 : actionOrders.desktop, mobileBarActionsOrder: actionOrders === null || actionOrders === void 0 ? void 0 : actionOrders.mobileBar, mobileMenuActionsOrder: actionOrders === null || actionOrders === void 0 ? void 0 : actionOrders.mobileMenu })));
18
18
  return (jsxs(Fragment, { children: [banner !== null && banner !== void 0 ? banner : (jsx(FumaBannerSuit, { locale: locale, showBanner: showBanner, floating: floatingNav })), jsxs(HomeLayout, Object.assign({}, homeLayoutProps, { nav: Object.assign(Object.assign({}, navOptions), { component: header }), className: 'bg-neutral-100 dark:bg-neutral-900', style: layoutStyle, children: [children, showFooter ? footer !== null && footer !== void 0 ? footer : jsx(Footer, { locale: locale }) : null, showGoToTop ? goToTop !== null && goToTop !== void 0 ? goToTop : jsx(GoToTop, {}) : null] }))] }));
19
19
  }
20
+ function HomeTitle({ children, className, }) {
21
+ return (jsx("span", { className: `font-medium in-[.uwu]:hidden in-[header]:text-[15px] ${className !== null && className !== void 0 ? className : ''}`, children: children }));
22
+ }
20
23
 
21
- export { CustomHomeLayout };
24
+ export { CustomHomeLayout, HomeTitle };
@@ -7,3 +7,4 @@ var customHomeLayout = require('./custom-home-layout.js');
7
7
 
8
8
  exports.CustomHomeHeader = customHeader.CustomHomeHeader;
9
9
  exports.CustomHomeLayout = customHomeLayout.CustomHomeLayout;
10
+ exports.HomeTitle = customHomeLayout.HomeTitle;
@@ -1,2 +1,2 @@
1
1
  export { CustomHomeHeader } from './custom-header.mjs';
2
- export { CustomHomeLayout } from './custom-home-layout.mjs';
2
+ export { CustomHomeLayout, HomeTitle } from './custom-home-layout.mjs';
@@ -3,7 +3,6 @@
3
3
 
4
4
  var tslib_es6 = require('../../node_modules/.pnpm/@rollup_plugin-typescript@12.1.4_rollup@4.46.2_tslib@2.8.1_typescript@5.9.3/node_modules/tslib/tslib.es6.js');
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
- var ui = require('@windrun-huaiin/base-ui/ui');
7
6
  var utils = require('@windrun-huaiin/lib/utils');
8
7
  var server = require('@windrun-huaiin/base-ui/components/server');
9
8
  var Link = require('next/link');
@@ -76,12 +75,15 @@ function GradientButton({ title, icon, align = 'left', disabled = false, classNa
76
75
  : align === 'center'
77
76
  ? 'justify-center'
78
77
  : 'justify-start';
79
- const buttonClassName = utils.cn('bg-linear-to-r from-purple-400 to-pink-500 hover:from-purple-500 hover:to-pink-600 dark:from-purple-500 dark:to-pink-600 dark:hover:from-purple-600 dark:hover:to-pink-700 text-white text-base font-bold shadow-lg hover:shadow-xl transition-all duration-300 rounded-full', alignmentClass, isDisabled && 'opacity-50 cursor-not-allowed', className);
78
+ // Base styles extracted from Button component + size="lg" (h-11 px-8)
79
+ // Removed [&_svg] constraints
80
+ const baseButtonStyles = "inline-flex items-center gap-2 whitespace-nowrap h-11 px-8 ring-offset-background focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50";
81
+ const buttonClassName = utils.cn(baseButtonStyles, 'bg-linear-to-r from-purple-400 to-pink-500 hover:from-purple-500 hover:to-pink-600 dark:from-purple-500 dark:to-pink-600 dark:hover:from-purple-600 dark:hover:to-pink-700 text-white text-base font-bold shadow-lg hover:shadow-xl transition-all duration-300 rounded-full', alignmentClass, isDisabled && 'opacity-50 cursor-not-allowed', className);
80
82
  return (jsxRuntime.jsx("div", { className: `flex flex-row gap-3 ${getAlignmentClass()}`, children: onClick ? (
81
83
  // for click
82
- jsxRuntime.jsx(ui.Button, { size: "lg", className: buttonClassName, onClick: handleClick, disabled: isDisabled, children: buttonContent })) : (
84
+ jsxRuntime.jsx("button", { type: "button", className: buttonClassName, onClick: handleClick, disabled: isDisabled, children: buttonContent })) : (
83
85
  // for Link
84
- jsxRuntime.jsx(ui.Button, { asChild: true, size: "lg", className: buttonClassName, disabled: isDisabled, children: jsxRuntime.jsx(Link, Object.assign({ href: href || "#", className: "no-underline hover:no-underline" }, (openInNewTab ? { target: "_blank", rel: "noopener noreferrer" } : {}), { onClick: isDisabled ? (e) => e.preventDefault() : undefined, children: buttonContent })) })) }));
86
+ jsxRuntime.jsx(Link, Object.assign({ href: href || "#", className: utils.cn(buttonClassName, "no-underline hover:no-underline") }, (openInNewTab ? { target: "_blank", rel: "noopener noreferrer" } : {}), { onClick: isDisabled ? (e) => e.preventDefault() : undefined, "aria-disabled": isDisabled, children: buttonContent }))) }));
85
87
  }
86
88
 
87
89
  exports.GradientButton = GradientButton;
@@ -1,7 +1,6 @@
1
1
  "use client";
2
2
  import { __awaiter } from '../../node_modules/.pnpm/@rollup_plugin-typescript@12.1.4_rollup@4.46.2_tslib@2.8.1_typescript@5.9.3/node_modules/tslib/tslib.es6.mjs';
3
3
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
4
- import { Button } from '@windrun-huaiin/base-ui/ui';
5
4
  import { cn } from '@windrun-huaiin/lib/utils';
6
5
  import { globalLucideIcons } from '@windrun-huaiin/base-ui/components/server';
7
6
  import Link from 'next/link';
@@ -74,12 +73,15 @@ function GradientButton({ title, icon, align = 'left', disabled = false, classNa
74
73
  : align === 'center'
75
74
  ? 'justify-center'
76
75
  : 'justify-start';
77
- const buttonClassName = cn('bg-linear-to-r from-purple-400 to-pink-500 hover:from-purple-500 hover:to-pink-600 dark:from-purple-500 dark:to-pink-600 dark:hover:from-purple-600 dark:hover:to-pink-700 text-white text-base font-bold shadow-lg hover:shadow-xl transition-all duration-300 rounded-full', alignmentClass, isDisabled && 'opacity-50 cursor-not-allowed', className);
76
+ // Base styles extracted from Button component + size="lg" (h-11 px-8)
77
+ // Removed [&_svg] constraints
78
+ const baseButtonStyles = "inline-flex items-center gap-2 whitespace-nowrap h-11 px-8 ring-offset-background focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50";
79
+ const buttonClassName = cn(baseButtonStyles, 'bg-linear-to-r from-purple-400 to-pink-500 hover:from-purple-500 hover:to-pink-600 dark:from-purple-500 dark:to-pink-600 dark:hover:from-purple-600 dark:hover:to-pink-700 text-white text-base font-bold shadow-lg hover:shadow-xl transition-all duration-300 rounded-full', alignmentClass, isDisabled && 'opacity-50 cursor-not-allowed', className);
78
80
  return (jsx("div", { className: `flex flex-row gap-3 ${getAlignmentClass()}`, children: onClick ? (
79
81
  // for click
80
- jsx(Button, { size: "lg", className: buttonClassName, onClick: handleClick, disabled: isDisabled, children: buttonContent })) : (
82
+ jsx("button", { type: "button", className: buttonClassName, onClick: handleClick, disabled: isDisabled, children: buttonContent })) : (
81
83
  // for Link
82
- jsx(Button, { asChild: true, size: "lg", className: buttonClassName, disabled: isDisabled, children: jsx(Link, Object.assign({ href: href || "#", className: "no-underline hover:no-underline" }, (openInNewTab ? { target: "_blank", rel: "noopener noreferrer" } : {}), { onClick: isDisabled ? (e) => e.preventDefault() : undefined, children: buttonContent })) })) }));
84
+ jsx(Link, Object.assign({ href: href || "#", className: cn(buttonClassName, "no-underline hover:no-underline") }, (openInNewTab ? { target: "_blank", rel: "noopener noreferrer" } : {}), { onClick: isDisabled ? (e) => e.preventDefault() : undefined, "aria-disabled": isDisabled, children: buttonContent }))) }));
83
85
  }
84
86
 
85
87
  export { GradientButton };
@@ -17,7 +17,7 @@ function Footer(_a) {
17
17
  company: tFooter('company'),
18
18
  copyright: tFooter('copyright', { year: new Date().getFullYear(), name: tFooter('company') })
19
19
  };
20
- return (jsxRuntime.jsx("div", { className: "mb-10 w-full mx-auto border-t-purple-700/80 border-t", children: jsxRuntime.jsx("footer", { children: jsxRuntime.jsxs("div", { className: "w-full flex flex-col items-center justify-center px-4 py-8 space-y-3", children: [jsxRuntime.jsxs("div", { className: "flex items-center justify-center space-x-6 text-xs", children: [jsxRuntime.jsxs(Link, { href: `/${locale}/legal/terms`, className: "flex items-center space-x-1 hover:underline", children: [jsxRuntime.jsx(server$1.globalLucideIcons.ReceiptText, { className: "h-3.5 w-3.5" }), jsxRuntime.jsx("span", { children: data.terms })] }), jsxRuntime.jsxs(Link, { href: `/${locale}/legal/privacy`, className: "flex items-center space-x-1 hover:underline", children: [jsxRuntime.jsx(server$1.globalLucideIcons.ShieldUser, { className: "h-3.5 w-3.5" }), jsxRuntime.jsx("span", { children: data.privacy })] }), jsxRuntime.jsxs("div", { className: "relative group", children: [jsxRuntime.jsx("div", { className: "absolute left-2/3 -translate-x-1/4 bottom-full mb-1 hidden group-hover:block bg-zinc-600 text-white text-xs rounded px-3 py-1 whitespace-nowrap z-10 shadow-lg", children: data.email }), jsxRuntime.jsxs("a", { href: `mailto:${data.email}`, className: "flex items-center space-x-1 underline cursor-pointer px-2", children: [jsxRuntime.jsx(server$1.globalLucideIcons.Mail, { className: "h-3.5 w-3.5" }), jsxRuntime.jsx("span", { children: data.contactUs })] })] })] }), jsxRuntime.jsx("div", { className: "text-xs text-center", children: jsxRuntime.jsx("span", { children: data.copyright }) })] }) }) }));
20
+ return (jsxRuntime.jsx("div", { className: "mb-10 w-full mx-auto border-t-purple-700/80 border-t", children: jsxRuntime.jsx("footer", { children: jsxRuntime.jsxs("div", { className: "w-full flex flex-col items-center justify-center px-4 py-8 space-y-3", children: [jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center justify-center gap-x-2 gap-y-2 text-xs sm:gap-x-6", children: [jsxRuntime.jsxs(Link, { href: `/${locale}/legal/terms`, className: "flex items-center space-x-1 hover:underline", children: [jsxRuntime.jsx(server$1.globalLucideIcons.ReceiptText, { className: "h-3.5 w-3.5" }), jsxRuntime.jsx("span", { children: data.terms })] }), jsxRuntime.jsxs(Link, { href: `/${locale}/legal/privacy`, className: "flex items-center space-x-1 hover:underline", children: [jsxRuntime.jsx(server$1.globalLucideIcons.ShieldUser, { className: "h-3.5 w-3.5" }), jsxRuntime.jsx("span", { children: data.privacy })] }), jsxRuntime.jsxs("div", { className: "relative group", children: [jsxRuntime.jsx("div", { className: "absolute left-2/3 -translate-x-1/4 bottom-full mb-1 hidden group-hover:block bg-zinc-600 text-white text-xs rounded px-3 py-1 whitespace-nowrap z-10 shadow-lg", children: data.email }), jsxRuntime.jsxs("a", { href: `mailto:${data.email}`, className: "flex items-center space-x-1 underline cursor-pointer px-2", children: [jsxRuntime.jsx(server$1.globalLucideIcons.Mail, { className: "h-3.5 w-3.5" }), jsxRuntime.jsx("span", { children: data.contactUs })] })] })] }), jsxRuntime.jsx("div", { className: "text-xs text-center", children: jsxRuntime.jsx("span", { children: data.copyright }) })] }) }) }));
21
21
  });
22
22
  }
23
23
 
@@ -15,7 +15,7 @@ function Footer(_a) {
15
15
  company: tFooter('company'),
16
16
  copyright: tFooter('copyright', { year: new Date().getFullYear(), name: tFooter('company') })
17
17
  };
18
- return (jsx("div", { className: "mb-10 w-full mx-auto border-t-purple-700/80 border-t", children: jsx("footer", { children: jsxs("div", { className: "w-full flex flex-col items-center justify-center px-4 py-8 space-y-3", children: [jsxs("div", { className: "flex items-center justify-center space-x-6 text-xs", children: [jsxs(Link, { href: `/${locale}/legal/terms`, className: "flex items-center space-x-1 hover:underline", children: [jsx(globalLucideIcons.ReceiptText, { className: "h-3.5 w-3.5" }), jsx("span", { children: data.terms })] }), jsxs(Link, { href: `/${locale}/legal/privacy`, className: "flex items-center space-x-1 hover:underline", children: [jsx(globalLucideIcons.ShieldUser, { className: "h-3.5 w-3.5" }), jsx("span", { children: data.privacy })] }), jsxs("div", { className: "relative group", children: [jsx("div", { className: "absolute left-2/3 -translate-x-1/4 bottom-full mb-1 hidden group-hover:block bg-zinc-600 text-white text-xs rounded px-3 py-1 whitespace-nowrap z-10 shadow-lg", children: data.email }), jsxs("a", { href: `mailto:${data.email}`, className: "flex items-center space-x-1 underline cursor-pointer px-2", children: [jsx(globalLucideIcons.Mail, { className: "h-3.5 w-3.5" }), jsx("span", { children: data.contactUs })] })] })] }), jsx("div", { className: "text-xs text-center", children: jsx("span", { children: data.copyright }) })] }) }) }));
18
+ return (jsx("div", { className: "mb-10 w-full mx-auto border-t-purple-700/80 border-t", children: jsx("footer", { children: jsxs("div", { className: "w-full flex flex-col items-center justify-center px-4 py-8 space-y-3", children: [jsxs("div", { className: "flex flex-wrap items-center justify-center gap-x-2 gap-y-2 text-xs sm:gap-x-6", children: [jsxs(Link, { href: `/${locale}/legal/terms`, className: "flex items-center space-x-1 hover:underline", children: [jsx(globalLucideIcons.ReceiptText, { className: "h-3.5 w-3.5" }), jsx("span", { children: data.terms })] }), jsxs(Link, { href: `/${locale}/legal/privacy`, className: "flex items-center space-x-1 hover:underline", children: [jsx(globalLucideIcons.ShieldUser, { className: "h-3.5 w-3.5" }), jsx("span", { children: data.privacy })] }), jsxs("div", { className: "relative group", children: [jsx("div", { className: "absolute left-2/3 -translate-x-1/4 bottom-full mb-1 hidden group-hover:block bg-zinc-600 text-white text-xs rounded px-3 py-1 whitespace-nowrap z-10 shadow-lg", children: data.email }), jsxs("a", { href: `mailto:${data.email}`, className: "flex items-center space-x-1 underline cursor-pointer px-2", children: [jsx(globalLucideIcons.Mail, { className: "h-3.5 w-3.5" }), jsx("span", { children: data.contactUs })] })] })] }), jsx("div", { className: "text-xs text-center", children: jsx("span", { children: data.copyright }) })] }) }) }));
19
19
  });
20
20
  }
21
21
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@windrun-huaiin/third-ui",
3
- "version": "11.0.7",
3
+ "version": "11.0.9",
4
4
  "description": "Third-party integrated UI components for windrun-huaiin projects",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -1,5 +1,6 @@
1
1
  import type { CSSProperties, ReactNode } from 'react';
2
2
  import { HomeLayout, type HomeLayoutProps } from 'fumadocs-ui/layouts/home';
3
+ import { type LinkItemType } from 'fumadocs-ui/layouts/docs';
3
4
  import { FumaBannerSuit } from '@third-ui/fuma/fuma-banner-suit';
4
5
  import { Footer } from '@third-ui/main/footer';
5
6
  import { GoToTop } from '@third-ui/main/go-to-top';
@@ -11,6 +12,8 @@ import {
11
12
  type MobileMenuAction,
12
13
  } from './custom-header';
13
14
 
15
+ export type ExtendedLinkItem = LinkItemType & { mobilePinned?: boolean };
16
+
14
17
  // - bannerHeight/headerHeight 换成你项目期望的 rem 值即可(如果没有 Banner 就把 bannerHeight 设成 0)。
15
18
  // - layoutStyle 同时把变量传给 HomeLayout 的 main 元素,这样内容整体会往下错开,不需要 has-banner/no-banner class。
16
19
  // - CustomHomeHeader 直接接受 HomeLayout 的各类 props(links、nav、searchToggle、themeSwitch、i18n 等),内部会复用 Fumadocs 原本的导航功能。
@@ -164,3 +167,19 @@ export function CustomHomeLayout({
164
167
  </>
165
168
  );
166
169
  }
170
+
171
+ export function HomeTitle({
172
+ children,
173
+ className,
174
+ }: {
175
+ children: ReactNode;
176
+ className?: string;
177
+ }) {
178
+ return (
179
+ <span
180
+ className={`font-medium in-[.uwu]:hidden in-[header]:text-[15px] ${className ?? ''}`}
181
+ >
182
+ {children}
183
+ </span>
184
+ );
185
+ }
@@ -1,6 +1,5 @@
1
1
  'use client';
2
2
 
3
- import { Button } from "@windrun-huaiin/base-ui/ui";
4
3
  import { cn } from '@windrun-huaiin/lib/utils';
5
4
  import { globalLucideIcons as icons } from "@windrun-huaiin/base-ui/components/server";
6
5
  import Link from "next/link";
@@ -128,7 +127,12 @@ export function GradientButton({
128
127
  ? 'justify-center'
129
128
  : 'justify-start';
130
129
 
130
+ // Base styles extracted from Button component + size="lg" (h-11 px-8)
131
+ // Removed [&_svg] constraints
132
+ const baseButtonStyles = "inline-flex items-center gap-2 whitespace-nowrap h-11 px-8 ring-offset-background focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50";
133
+
131
134
  const buttonClassName = cn(
135
+ baseButtonStyles,
132
136
  'bg-linear-to-r from-purple-400 to-pink-500 hover:from-purple-500 hover:to-pink-600 dark:from-purple-500 dark:to-pink-600 dark:hover:from-purple-600 dark:hover:to-pink-700 text-white text-base font-bold shadow-lg hover:shadow-xl transition-all duration-300 rounded-full',
133
137
  alignmentClass,
134
138
  isDisabled && 'opacity-50 cursor-not-allowed',
@@ -139,31 +143,25 @@ export function GradientButton({
139
143
  <div className={`flex flex-row gap-3 ${getAlignmentClass()}`}>
140
144
  {onClick ? (
141
145
  // for click
142
- <Button
143
- size="lg"
146
+ <button
147
+ type="button"
144
148
  className={buttonClassName}
145
149
  onClick={handleClick}
146
150
  disabled={isDisabled}
147
151
  >
148
152
  {buttonContent}
149
- </Button>
153
+ </button>
150
154
  ) : (
151
155
  // for Link
152
- <Button
153
- asChild
154
- size="lg"
155
- className={buttonClassName}
156
- disabled={isDisabled}
156
+ <Link
157
+ href={href || "#"}
158
+ className={cn(buttonClassName, "no-underline hover:no-underline")}
159
+ {...(openInNewTab ? { target: "_blank", rel: "noopener noreferrer" } : {})}
160
+ onClick={isDisabled ? (e) => e.preventDefault() : undefined}
161
+ aria-disabled={isDisabled}
157
162
  >
158
- <Link
159
- href={href || "#"}
160
- className="no-underline hover:no-underline"
161
- {...(openInNewTab ? { target: "_blank", rel: "noopener noreferrer" } : {})}
162
- onClick={isDisabled ? (e) => e.preventDefault() : undefined}
163
- >
164
- {buttonContent}
165
- </Link>
166
- </Button>
163
+ {buttonContent}
164
+ </Link>
167
165
  )}
168
166
  </div>
169
167
  );
@@ -27,7 +27,7 @@ export async function Footer({ locale }: { locale: string }) {
27
27
  <div className="mb-10 w-full mx-auto border-t-purple-700/80 border-t">
28
28
  <footer>
29
29
  <div className="w-full flex flex-col items-center justify-center px-4 py-8 space-y-3">
30
- <div className="flex items-center justify-center space-x-6 text-xs">
30
+ <div className="flex flex-wrap items-center justify-center gap-x-2 gap-y-2 text-xs sm:gap-x-6">
31
31
  <Link href={`/${locale}/legal/terms`} className="flex items-center space-x-1 hover:underline">
32
32
  <icons.ReceiptText className="h-3.5 w-3.5"/>
33
33
  <span>{data.terms}</span>