@windrun-huaiin/third-ui 3.2.2 → 3.3.1
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/clerk/index.js +1 -1
- package/dist/clerk/index.js.map +1 -1
- package/dist/clerk/index.mjs.map +1 -1
- package/dist/fuma/index.d.mts +1 -23
- package/dist/fuma/index.d.ts +1 -23
- package/dist/fuma/index.js +157 -319
- package/dist/fuma/index.js.map +1 -1
- package/dist/fuma/index.mjs +136 -296
- package/dist/fuma/index.mjs.map +1 -1
- package/dist/fuma/mdx/index.d.mts +23 -1
- package/dist/fuma/mdx/index.d.ts +23 -1
- package/dist/fuma/mdx/index.js +162 -1
- package/dist/fuma/mdx/index.js.map +1 -1
- package/dist/fuma/mdx/index.mjs +159 -0
- package/dist/fuma/mdx/index.mjs.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +49 -210
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +35 -194
- package/dist/index.mjs.map +1 -1
- package/dist/lib/index.js +0 -1
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/index.mjs +0 -1
- package/dist/lib/index.mjs.map +1 -1
- package/dist/main/index.js +3 -2
- package/dist/main/index.js.map +1 -1
- package/dist/main/index.mjs +2 -1
- package/dist/main/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/clerk/clerk-organization.tsx +2 -0
- package/src/clerk/index.ts +1 -0
- package/src/fuma/index.ts +2 -4
- package/src/fuma/mdx/index.ts +5 -1
- package/src/fuma/mdx/toc-base.tsx +1 -0
- package/src/lib/index.ts +2 -0
- package/src/main/ads-alert-dialog.tsx +2 -0
- package/src/main/faq.tsx +2 -1
- package/src/main/index.ts +2 -0
- package/src/main/nprogress-bar.tsx +2 -1
- /package/src/fuma/{fuma-banner-suit.tsx → mdx/fuma-banner-suit.tsx} +0 -0
- /package/src/fuma/{fuma-github-info.tsx → mdx/fuma-github-info.tsx} +0 -0
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use client";
|
|
2
1
|
var __defProp = Object.defineProperty;
|
|
3
2
|
var __defProps = Object.defineProperties;
|
|
4
3
|
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
@@ -2162,6 +2161,7 @@ var wrappedBuiltinIconsPart = tempWrappedBuiltinIcons;
|
|
|
2162
2161
|
var globalLucideIcons = __spreadValues(__spreadValues({}, styledLimitedIconsPart), wrappedBuiltinIconsPart);
|
|
2163
2162
|
var DEFAULT_FALLBACK_ICON = "BTC";
|
|
2164
2163
|
function getGlobalIcon(iconKey, createElement3) {
|
|
2164
|
+
var _a;
|
|
2165
2165
|
if (!iconKey) {
|
|
2166
2166
|
if (createElement3) {
|
|
2167
2167
|
return void 0;
|
|
@@ -2170,7 +2170,7 @@ function getGlobalIcon(iconKey, createElement3) {
|
|
|
2170
2170
|
}
|
|
2171
2171
|
const Icon2 = globalLucideIcons[iconKey];
|
|
2172
2172
|
if (!Icon2) {
|
|
2173
|
-
if (process.env.NODE_ENV !== "production") {
|
|
2173
|
+
if (typeof process !== "undefined" && ((_a = process.env) == null ? void 0 : _a.NODE_ENV) !== "production") {
|
|
2174
2174
|
console.warn(
|
|
2175
2175
|
`[global-icon] iconKey "${iconKey}" is not defined in globalIcons, will use default "${String(DEFAULT_FALLBACK_ICON)}" icon, please check!`
|
|
2176
2176
|
);
|
|
@@ -2973,21 +2973,12 @@ function NProgressBar() {
|
|
|
2973
2973
|
return null;
|
|
2974
2974
|
}
|
|
2975
2975
|
|
|
2976
|
-
// src/fuma/fuma-banner-suit.tsx
|
|
2977
|
-
import { Banner } from "fumadocs-ui/components/banner";
|
|
2978
|
-
import { useTranslations as useTranslations10 } from "next-intl";
|
|
2979
|
-
import { jsx as jsx47 } from "react/jsx-runtime";
|
|
2980
|
-
function FumaBannerSuit({ showText }) {
|
|
2981
|
-
const t = useTranslations10("home");
|
|
2982
|
-
return showText ? /* @__PURE__ */ jsx47(Banner, { variant: "rainbow", changeLayout: true, children: /* @__PURE__ */ jsx47("p", { className: "text-xl", children: t("banner") }) }) : /* @__PURE__ */ jsx47(Banner, { variant: "normal", changeLayout: true, className: "bg-white dark:bg-[rgb(10,10,10)]" });
|
|
2983
|
-
}
|
|
2984
|
-
|
|
2985
2976
|
// src/fuma/fuma-page-genarator.tsx
|
|
2986
2977
|
import { DocsBody, DocsDescription, DocsPage, DocsTitle } from "fumadocs-ui/page";
|
|
2987
2978
|
|
|
2988
2979
|
// ../base-ui/src/lib/icon-context.tsx
|
|
2989
2980
|
import { createContext, useContext } from "react";
|
|
2990
|
-
import { jsx as
|
|
2981
|
+
import { jsx as jsx47 } from "react/jsx-runtime";
|
|
2991
2982
|
var IconConfigContext = createContext(null);
|
|
2992
2983
|
function useIconConfig() {
|
|
2993
2984
|
const config = useContext(IconConfigContext);
|
|
@@ -3008,7 +2999,7 @@ function useIconConfigSafe(iconKey) {
|
|
|
3008
2999
|
}
|
|
3009
3000
|
|
|
3010
3001
|
// ../base-ui/src/lib/site-icon.tsx
|
|
3011
|
-
import { jsx as
|
|
3002
|
+
import { jsx as jsx48 } from "react/jsx-runtime";
|
|
3012
3003
|
function SiteIcon(_a) {
|
|
3013
3004
|
var _b = _a, {
|
|
3014
3005
|
size = 24,
|
|
@@ -3026,24 +3017,24 @@ function SiteIcon(_a) {
|
|
|
3026
3017
|
if (typeof configuredIcon === "string") {
|
|
3027
3018
|
if (configuredIcon === "") {
|
|
3028
3019
|
const DefaultIcon = globalLucideIcons["Download"];
|
|
3029
|
-
return /* @__PURE__ */
|
|
3020
|
+
return /* @__PURE__ */ jsx48(DefaultIcon, __spreadValues({ size, className: cn(themeIconColor, className) }, props));
|
|
3030
3021
|
}
|
|
3031
3022
|
const IconComponent = globalLucideIcons[configuredIcon];
|
|
3032
3023
|
if (!IconComponent) {
|
|
3033
3024
|
throw new Error(`[SiteIcon] Icon key "${configuredIcon}" not found in globalLucideIcons.`);
|
|
3034
3025
|
}
|
|
3035
|
-
return /* @__PURE__ */
|
|
3026
|
+
return /* @__PURE__ */ jsx48(IconComponent, __spreadValues({ size, className: cn(themeIconColor, className) }, props));
|
|
3036
3027
|
} else {
|
|
3037
3028
|
const CustomIcon = configuredIcon;
|
|
3038
3029
|
const hasColorClass = className && /text-\w+/.test(className);
|
|
3039
3030
|
const finalClassName = hasColorClass ? className : cn(themeIconColor, className);
|
|
3040
|
-
return /* @__PURE__ */
|
|
3031
|
+
return /* @__PURE__ */ jsx48(CustomIcon, __spreadValues({ size, className: finalClassName }, props));
|
|
3041
3032
|
}
|
|
3042
3033
|
}
|
|
3043
3034
|
|
|
3044
3035
|
// ../base-ui/src/components/404-page.tsx
|
|
3045
3036
|
import { useEffect as useEffect3, useState as useState3 } from "react";
|
|
3046
|
-
import { jsx as
|
|
3037
|
+
import { jsx as jsx49, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
3047
3038
|
function NotFoundPage() {
|
|
3048
3039
|
const [glitchText, setGlitchText] = useState3("404");
|
|
3049
3040
|
useEffect3(() => {
|
|
@@ -3064,7 +3055,7 @@ function NotFoundPage() {
|
|
|
3064
3055
|
return /* @__PURE__ */ jsxs20("div", { className: "flex flex-col items-center justify-center min-h-[75vh] w-full px-4 py-8", children: [
|
|
3065
3056
|
/* @__PURE__ */ jsxs20("div", { className: "text-center space-y-8 max-w-2xl", children: [
|
|
3066
3057
|
/* @__PURE__ */ jsxs20("div", { className: "relative flex justify-center", children: [
|
|
3067
|
-
/* @__PURE__ */
|
|
3058
|
+
/* @__PURE__ */ jsx49(
|
|
3068
3059
|
"h1",
|
|
3069
3060
|
{
|
|
3070
3061
|
className: "text-8xl md:text-9xl font-bold bg-gradient-to-r from-purple-600 via-pink-500 to-purple-700 bg-clip-text text-transparent select-none",
|
|
@@ -3076,26 +3067,26 @@ function NotFoundPage() {
|
|
|
3076
3067
|
children: glitchText
|
|
3077
3068
|
}
|
|
3078
3069
|
),
|
|
3079
|
-
/* @__PURE__ */
|
|
3070
|
+
/* @__PURE__ */ jsx49("div", { className: "absolute inset-0 pointer-events-none", children: /* @__PURE__ */ jsx49("div", { className: "h-full w-full bg-gradient-to-b from-transparent via-purple-500/10 to-transparent animate-pulse" }) })
|
|
3080
3071
|
] }),
|
|
3081
3072
|
/* @__PURE__ */ jsxs20("div", { className: "space-y-4", children: [
|
|
3082
|
-
/* @__PURE__ */
|
|
3083
|
-
/* @__PURE__ */
|
|
3073
|
+
/* @__PURE__ */ jsx49("h2", { className: "text-2xl md:text-3xl font-semibold text-foreground", children: "Page Not Found" }),
|
|
3074
|
+
/* @__PURE__ */ jsx49("p", { className: "text-lg text-muted-foreground max-w-md mx-auto leading-relaxed", children: "The page you're looking for doesn't exist" })
|
|
3084
3075
|
] }),
|
|
3085
3076
|
/* @__PURE__ */ jsxs20("div", { className: "flex justify-center items-center gap-8 pt-8 opacity-60", children: [
|
|
3086
3077
|
/* @__PURE__ */ jsxs20("div", { className: "flex items-center gap-2 text-sm text-muted-foreground", children: [
|
|
3087
|
-
/* @__PURE__ */
|
|
3088
|
-
/* @__PURE__ */
|
|
3078
|
+
/* @__PURE__ */ jsx49(SiteIcon, {}),
|
|
3079
|
+
/* @__PURE__ */ jsx49("span", { children: "Woops!" })
|
|
3089
3080
|
] }),
|
|
3090
|
-
/* @__PURE__ */
|
|
3081
|
+
/* @__PURE__ */ jsx49("div", { className: "w-1 h-1 bg-purple-500 rounded-full animate-ping" }),
|
|
3091
3082
|
/* @__PURE__ */ jsxs20("div", { className: "flex items-center gap-2 text-sm text-muted-foreground", children: [
|
|
3092
|
-
/* @__PURE__ */
|
|
3093
|
-
/* @__PURE__ */
|
|
3083
|
+
/* @__PURE__ */ jsx49(NotFoundIcon, {}),
|
|
3084
|
+
/* @__PURE__ */ jsx49("span", { children: "Error Code: 404" })
|
|
3094
3085
|
] })
|
|
3095
3086
|
] })
|
|
3096
3087
|
] }),
|
|
3097
3088
|
/* @__PURE__ */ jsxs20("div", { className: "fixed inset-0 pointer-events-none overflow-hidden -z-10", children: [
|
|
3098
|
-
/* @__PURE__ */
|
|
3089
|
+
/* @__PURE__ */ jsx49(
|
|
3099
3090
|
"div",
|
|
3100
3091
|
{
|
|
3101
3092
|
className: "absolute inset-0 opacity-[0.02] dark:opacity-[0.05]",
|
|
@@ -3108,7 +3099,7 @@ function NotFoundPage() {
|
|
|
3108
3099
|
}
|
|
3109
3100
|
}
|
|
3110
3101
|
),
|
|
3111
|
-
Array.from({ length: 6 }).map((_, i) => /* @__PURE__ */
|
|
3102
|
+
Array.from({ length: 6 }).map((_, i) => /* @__PURE__ */ jsx49(
|
|
3112
3103
|
"div",
|
|
3113
3104
|
{
|
|
3114
3105
|
className: "absolute w-2 h-2 bg-purple-500/20 rounded-full animate-bounce",
|
|
@@ -3130,7 +3121,7 @@ import { useState as useState4 } from "react";
|
|
|
3130
3121
|
import { useParams } from "next/navigation";
|
|
3131
3122
|
import { useCopyButton } from "fumadocs-ui/utils/use-copy-button";
|
|
3132
3123
|
import Link4 from "fumadocs-core/link";
|
|
3133
|
-
import { Fragment as Fragment4, jsx as
|
|
3124
|
+
import { Fragment as Fragment4, jsx as jsx50, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
3134
3125
|
var cache = /* @__PURE__ */ new Map();
|
|
3135
3126
|
function LLMCopyButton({ llmApiUrl } = {}) {
|
|
3136
3127
|
const [isLoading, setLoading] = useState4(false);
|
|
@@ -3159,7 +3150,7 @@ function LLMCopyButton({ llmApiUrl } = {}) {
|
|
|
3159
3150
|
setLoading(false);
|
|
3160
3151
|
}
|
|
3161
3152
|
}));
|
|
3162
|
-
return /* @__PURE__ */
|
|
3153
|
+
return /* @__PURE__ */ jsx50(
|
|
3163
3154
|
Button,
|
|
3164
3155
|
{
|
|
3165
3156
|
variant: "ghost",
|
|
@@ -3168,10 +3159,10 @@ function LLMCopyButton({ llmApiUrl } = {}) {
|
|
|
3168
3159
|
className: "justify-start px-0 text-stone-600 hover:text-stone-500 dark:text-stone-400 dark:hover:text-stone-300",
|
|
3169
3160
|
onClick,
|
|
3170
3161
|
children: checked ? /* @__PURE__ */ jsxs21(Fragment4, { children: [
|
|
3171
|
-
/* @__PURE__ */
|
|
3162
|
+
/* @__PURE__ */ jsx50(globalLucideIcons.Check, {}),
|
|
3172
3163
|
"Copied!"
|
|
3173
3164
|
] }) : /* @__PURE__ */ jsxs21(Fragment4, { children: [
|
|
3174
|
-
/* @__PURE__ */
|
|
3165
|
+
/* @__PURE__ */ jsx50(globalLucideIcons.Markdown, {}),
|
|
3175
3166
|
"Copy page as Markdown"
|
|
3176
3167
|
] })
|
|
3177
3168
|
}
|
|
@@ -3184,7 +3175,7 @@ function EditOnGitHub({ url }) {
|
|
|
3184
3175
|
className: "flex items-center gap-x-2 text-stone-600 hover:text-stone-500 dark:text-stone-400 dark:hover:text-stone-300 text-sm",
|
|
3185
3176
|
href: url,
|
|
3186
3177
|
children: [
|
|
3187
|
-
/* @__PURE__ */
|
|
3178
|
+
/* @__PURE__ */ jsx50(globalLucideIcons.GitHub, {}),
|
|
3188
3179
|
"Edit this page on GitHub"
|
|
3189
3180
|
]
|
|
3190
3181
|
}
|
|
@@ -3192,25 +3183,25 @@ function EditOnGitHub({ url }) {
|
|
|
3192
3183
|
}
|
|
3193
3184
|
function LastUpdatedDate({ date }) {
|
|
3194
3185
|
return /* @__PURE__ */ jsxs21("div", { className: "flex items-center gap-x-2 text-stone-600 dark:text-stone-400 text-sm", children: [
|
|
3195
|
-
/* @__PURE__ */
|
|
3186
|
+
/* @__PURE__ */ jsx50(globalLucideIcons.LastUpdated, {}),
|
|
3196
3187
|
"Lastest on ",
|
|
3197
3188
|
date ? date : "Ages ago"
|
|
3198
3189
|
] });
|
|
3199
3190
|
}
|
|
3200
3191
|
|
|
3201
3192
|
// src/fuma/mdx/toc.tsx
|
|
3202
|
-
import { jsx as
|
|
3193
|
+
import { jsx as jsx51, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
3203
3194
|
function TocFooter({ lastModified, showCopy, editPath, githubBaseUrl }) {
|
|
3204
3195
|
const showEdit = githubBaseUrl && editPath;
|
|
3205
3196
|
return /* @__PURE__ */ jsxs22("div", { className: "flex flex-col gap-y-2 items-start m-4", children: [
|
|
3206
|
-
/* @__PURE__ */
|
|
3207
|
-
showCopy && /* @__PURE__ */
|
|
3208
|
-
showEdit && /* @__PURE__ */
|
|
3197
|
+
/* @__PURE__ */ jsx51(LastUpdatedDate, { date: lastModified }),
|
|
3198
|
+
showCopy && /* @__PURE__ */ jsx51(LLMCopyButton, {}),
|
|
3199
|
+
showEdit && /* @__PURE__ */ jsx51(EditOnGitHub, { url: `${githubBaseUrl}${editPath}` })
|
|
3209
3200
|
] });
|
|
3210
3201
|
}
|
|
3211
3202
|
|
|
3212
3203
|
// src/fuma/fuma-page-genarator.tsx
|
|
3213
|
-
import { jsx as
|
|
3204
|
+
import { jsx as jsx52, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
3214
3205
|
function createFumaPage({
|
|
3215
3206
|
mdxContentSource,
|
|
3216
3207
|
getMDXComponents,
|
|
@@ -3223,10 +3214,10 @@ function createFumaPage({
|
|
|
3223
3214
|
const { slug, locale } = yield params;
|
|
3224
3215
|
const page = mdxContentSource.getPage(slug, locale);
|
|
3225
3216
|
if (!page) {
|
|
3226
|
-
return /* @__PURE__ */
|
|
3217
|
+
return /* @__PURE__ */ jsx52(NotFoundPage, {});
|
|
3227
3218
|
}
|
|
3228
3219
|
const path = githubBaseUrl ? `${mdxSourceDir}/${page.file.path}` : void 0;
|
|
3229
|
-
const tocFooterElement = /* @__PURE__ */
|
|
3220
|
+
const tocFooterElement = /* @__PURE__ */ jsx52(
|
|
3230
3221
|
TocFooter,
|
|
3231
3222
|
{
|
|
3232
3223
|
lastModified: page.data.date,
|
|
@@ -3245,9 +3236,9 @@ function createFumaPage({
|
|
|
3245
3236
|
full: page.data.full,
|
|
3246
3237
|
article: { className: "max-sm:pb-16" },
|
|
3247
3238
|
children: [
|
|
3248
|
-
/* @__PURE__ */
|
|
3249
|
-
/* @__PURE__ */
|
|
3250
|
-
/* @__PURE__ */
|
|
3239
|
+
/* @__PURE__ */ jsx52(DocsTitle, { children: page.data.title }),
|
|
3240
|
+
/* @__PURE__ */ jsx52(DocsDescription, { className: "mb-2", children: page.data.description }),
|
|
3241
|
+
/* @__PURE__ */ jsx52(DocsBody, { className: "text-fd-foreground/80", children: /* @__PURE__ */ jsx52(MDX, { components: getMDXComponents() }) })
|
|
3251
3242
|
]
|
|
3252
3243
|
}
|
|
3253
3244
|
);
|
|
@@ -3278,154 +3269,6 @@ function createFumaPage({
|
|
|
3278
3269
|
generateMetadata
|
|
3279
3270
|
};
|
|
3280
3271
|
}
|
|
3281
|
-
|
|
3282
|
-
// src/fuma/fuma-github-info.tsx
|
|
3283
|
-
import { useEffect as useEffect4, useState as useState5 } from "react";
|
|
3284
|
-
import { jsx as jsx54, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
3285
|
-
function GitHubInfoSkeleton({ owner, repo, className }) {
|
|
3286
|
-
return /* @__PURE__ */ jsxs24("div", { className: `flex flex-col gap-1.5 p-2 rounded-lg text-sm text-fd-foreground/80 lg:flex-row lg:items-center animate-pulse ${className}`, children: [
|
|
3287
|
-
/* @__PURE__ */ jsxs24("div", { className: "flex items-center gap-2", children: [
|
|
3288
|
-
/* @__PURE__ */ jsx54("div", { className: "size-3.5 bg-fd-muted rounded" }),
|
|
3289
|
-
/* @__PURE__ */ jsx54("div", { className: "h-4 bg-fd-muted rounded w-20" })
|
|
3290
|
-
] }),
|
|
3291
|
-
/* @__PURE__ */ jsx54("div", { className: "h-3 bg-fd-muted rounded w-8" })
|
|
3292
|
-
] });
|
|
3293
|
-
}
|
|
3294
|
-
function GitHubInfoFallback({ owner, repo, className }) {
|
|
3295
|
-
return /* @__PURE__ */ jsxs24(
|
|
3296
|
-
"a",
|
|
3297
|
-
{
|
|
3298
|
-
href: `https://github.com/${owner}/${repo}`,
|
|
3299
|
-
rel: "noreferrer noopener",
|
|
3300
|
-
target: "_blank",
|
|
3301
|
-
className: `flex flex-col gap-1.5 p-2 rounded-lg text-sm text-fd-foreground/80 transition-colors lg:flex-row lg:items-center hover:text-fd-accent-foreground hover:bg-fd-accent ${className}`,
|
|
3302
|
-
children: [
|
|
3303
|
-
/* @__PURE__ */ jsxs24("p", { className: "flex items-center gap-2 truncate", children: [
|
|
3304
|
-
/* @__PURE__ */ jsxs24("svg", { fill: "currentColor", viewBox: "0 0 24 24", className: "size-3.5", children: [
|
|
3305
|
-
/* @__PURE__ */ jsx54("title", { children: "GitHub" }),
|
|
3306
|
-
/* @__PURE__ */ jsx54("path", { d: "M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12" })
|
|
3307
|
-
] }),
|
|
3308
|
-
owner,
|
|
3309
|
-
"/",
|
|
3310
|
-
repo
|
|
3311
|
-
] }),
|
|
3312
|
-
/* @__PURE__ */ jsxs24("p", { className: "flex text-xs items-center gap-1 text-fd-muted-foreground", children: [
|
|
3313
|
-
/* @__PURE__ */ jsx54(globalLucideIcons.ExternalLink, { className: "size-3" }),
|
|
3314
|
-
"GitHub"
|
|
3315
|
-
] })
|
|
3316
|
-
]
|
|
3317
|
-
}
|
|
3318
|
-
);
|
|
3319
|
-
}
|
|
3320
|
-
function GitHubInfoSuccess({
|
|
3321
|
-
owner,
|
|
3322
|
-
repo,
|
|
3323
|
-
stars,
|
|
3324
|
-
className
|
|
3325
|
-
}) {
|
|
3326
|
-
const humanizedStars = humanizeNumber(stars);
|
|
3327
|
-
return /* @__PURE__ */ jsxs24(
|
|
3328
|
-
"a",
|
|
3329
|
-
{
|
|
3330
|
-
href: `https://github.com/${owner}/${repo}`,
|
|
3331
|
-
rel: "noreferrer noopener",
|
|
3332
|
-
target: "_blank",
|
|
3333
|
-
className: `flex flex-col gap-1.5 p-2 rounded-lg text-sm text-fd-foreground/80 transition-colors lg:flex-row lg:items-center hover:text-fd-accent-foreground hover:bg-fd-accent ${className}`,
|
|
3334
|
-
children: [
|
|
3335
|
-
/* @__PURE__ */ jsxs24("p", { className: "flex items-center gap-2 truncate", children: [
|
|
3336
|
-
/* @__PURE__ */ jsxs24("svg", { fill: "currentColor", viewBox: "0 0 24 24", className: "size-3.5", children: [
|
|
3337
|
-
/* @__PURE__ */ jsx54("title", { children: "GitHub" }),
|
|
3338
|
-
/* @__PURE__ */ jsx54("path", { d: "M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12" })
|
|
3339
|
-
] }),
|
|
3340
|
-
owner,
|
|
3341
|
-
"/",
|
|
3342
|
-
repo
|
|
3343
|
-
] }),
|
|
3344
|
-
/* @__PURE__ */ jsxs24("p", { className: "flex text-xs items-center gap-1 text-fd-muted-foreground", children: [
|
|
3345
|
-
/* @__PURE__ */ jsx54(globalLucideIcons.Star, { className: "size-3" }),
|
|
3346
|
-
humanizedStars
|
|
3347
|
-
] })
|
|
3348
|
-
]
|
|
3349
|
-
}
|
|
3350
|
-
);
|
|
3351
|
-
}
|
|
3352
|
-
function humanizeNumber(num) {
|
|
3353
|
-
if (num < 1e3) {
|
|
3354
|
-
return num.toString();
|
|
3355
|
-
}
|
|
3356
|
-
if (num < 1e5) {
|
|
3357
|
-
const value = (num / 1e3).toFixed(1);
|
|
3358
|
-
const formattedValue = value.endsWith(".0") ? value.slice(0, -2) : value;
|
|
3359
|
-
return `${formattedValue}K`;
|
|
3360
|
-
}
|
|
3361
|
-
if (num < 1e6) {
|
|
3362
|
-
return `${Math.floor(num / 1e3)}K`;
|
|
3363
|
-
}
|
|
3364
|
-
return num.toString();
|
|
3365
|
-
}
|
|
3366
|
-
function FumaGithubInfo({ owner, repo, token, className }) {
|
|
3367
|
-
const [data, setData] = useState5(null);
|
|
3368
|
-
const [loading, setLoading] = useState5(true);
|
|
3369
|
-
const [error, setError] = useState5(null);
|
|
3370
|
-
useEffect4(() => {
|
|
3371
|
-
const fetchRepoData = () => __async(null, null, function* () {
|
|
3372
|
-
try {
|
|
3373
|
-
setLoading(true);
|
|
3374
|
-
setError(null);
|
|
3375
|
-
const controller = new AbortController();
|
|
3376
|
-
const timeoutId = setTimeout(() => controller.abort(), 5e3);
|
|
3377
|
-
const headers = new Headers({
|
|
3378
|
-
"Accept": "application/vnd.github.v3+json"
|
|
3379
|
-
});
|
|
3380
|
-
if (token) {
|
|
3381
|
-
headers.set("Authorization", `Bearer ${token}`);
|
|
3382
|
-
}
|
|
3383
|
-
const response = yield fetch(`https://api.github.com/repos/${owner}/${repo}`, {
|
|
3384
|
-
signal: controller.signal,
|
|
3385
|
-
headers
|
|
3386
|
-
});
|
|
3387
|
-
clearTimeout(timeoutId);
|
|
3388
|
-
if (!response.ok) {
|
|
3389
|
-
throw new Error(`GitHub API response error: ${response.status}`);
|
|
3390
|
-
}
|
|
3391
|
-
const repoData = yield response.json();
|
|
3392
|
-
setData({
|
|
3393
|
-
stargazers_count: repoData.stargazers_count,
|
|
3394
|
-
forks_count: repoData.forks_count
|
|
3395
|
-
});
|
|
3396
|
-
} catch (err) {
|
|
3397
|
-
console.warn("GitHub API call failed:", err);
|
|
3398
|
-
if (err instanceof Error) {
|
|
3399
|
-
if (err.name === "AbortError") {
|
|
3400
|
-
setError("Request timeout");
|
|
3401
|
-
} else {
|
|
3402
|
-
setError("Failed to get repository information");
|
|
3403
|
-
}
|
|
3404
|
-
} else {
|
|
3405
|
-
setError("Unknown error");
|
|
3406
|
-
}
|
|
3407
|
-
} finally {
|
|
3408
|
-
setLoading(false);
|
|
3409
|
-
}
|
|
3410
|
-
});
|
|
3411
|
-
fetchRepoData();
|
|
3412
|
-
}, [owner, repo, token]);
|
|
3413
|
-
if (loading) {
|
|
3414
|
-
return /* @__PURE__ */ jsx54(GitHubInfoSkeleton, { owner, repo, className });
|
|
3415
|
-
}
|
|
3416
|
-
if (error || !data) {
|
|
3417
|
-
return /* @__PURE__ */ jsx54(GitHubInfoFallback, { owner, repo, className });
|
|
3418
|
-
}
|
|
3419
|
-
return /* @__PURE__ */ jsx54(
|
|
3420
|
-
GitHubInfoSuccess,
|
|
3421
|
-
{
|
|
3422
|
-
owner,
|
|
3423
|
-
repo,
|
|
3424
|
-
stars: data.stargazers_count,
|
|
3425
|
-
className
|
|
3426
|
-
}
|
|
3427
|
-
);
|
|
3428
|
-
}
|
|
3429
3272
|
export {
|
|
3430
3273
|
CTA,
|
|
3431
3274
|
ClerkProviderClient,
|
|
@@ -3433,8 +3276,6 @@ export {
|
|
|
3433
3276
|
FAQ,
|
|
3434
3277
|
Features,
|
|
3435
3278
|
Footer,
|
|
3436
|
-
FumaBannerSuit,
|
|
3437
|
-
FumaGithubInfo,
|
|
3438
3279
|
Gallery,
|
|
3439
3280
|
GoToTop,
|
|
3440
3281
|
Loading,
|