@togo-framework/ui 0.1.2 → 0.1.4
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.d.ts +172 -1
- package/dist/index.js +389 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/public/togo-mark.svg +54 -0
- package/public/togo-storybook-logo.svg +54 -13
package/dist/index.js
CHANGED
|
@@ -15891,6 +15891,381 @@ function CodeShowcase({ tabs, className }) {
|
|
|
15891
15891
|
] });
|
|
15892
15892
|
}
|
|
15893
15893
|
CodeShowcase.displayName = "CodeShowcase";
|
|
15894
|
+
|
|
15895
|
+
// src/components/marketing/Glass.tsx
|
|
15896
|
+
import * as React29 from "react";
|
|
15897
|
+
import { jsx as jsx98, jsxs as jsxs86 } from "react/jsx-runtime";
|
|
15898
|
+
var DISPLAY2 = { fontFamily: '"Sora", var(--togo-font-body, ui-sans-serif, system-ui, sans-serif)' };
|
|
15899
|
+
function AuroraBackground({ className, intensity = 1, style, ...rest }) {
|
|
15900
|
+
return /* @__PURE__ */ jsxs86("div", { "aria-hidden": true, className: cn("pointer-events-none absolute inset-0 -z-10 overflow-hidden", className), style, ...rest, children: [
|
|
15901
|
+
/* @__PURE__ */ jsx98("style", { children: `
|
|
15902
|
+
@keyframes tg-aurora-a { 0%,100%{transform:translate3d(-6%,-4%,0) scale(1)} 50%{transform:translate3d(8%,6%,0) scale(1.15)} }
|
|
15903
|
+
@keyframes tg-aurora-b { 0%,100%{transform:translate3d(6%,8%,0) scale(1.1)} 50%{transform:translate3d(-8%,-6%,0) scale(.95)} }
|
|
15904
|
+
@keyframes tg-aurora-c { 0%,100%{transform:translate3d(0,0,0) scale(1.05)} 50%{transform:translate3d(-10%,4%,0) scale(1.2)} }
|
|
15905
|
+
.tg-orb{position:absolute;border-radius:9999px;filter:blur(70px);opacity:${0.5 * intensity};mix-blend-mode:screen}
|
|
15906
|
+
@media (prefers-reduced-motion: reduce){ .tg-orb{animation:none!important} }
|
|
15907
|
+
` }),
|
|
15908
|
+
/* @__PURE__ */ jsx98("div", { className: "tg-orb", style: { width: "46vw", height: "46vw", top: "-12%", left: "8%", background: "radial-gradient(circle, #1FC7DC, transparent 65%)", animation: "tg-aurora-a 22s ease-in-out infinite" } }),
|
|
15909
|
+
/* @__PURE__ */ jsx98("div", { className: "tg-orb", style: { width: "50vw", height: "50vw", top: "-18%", right: "2%", background: "radial-gradient(circle, #2D8CE6, transparent 65%)", animation: "tg-aurora-b 26s ease-in-out infinite" } }),
|
|
15910
|
+
/* @__PURE__ */ jsx98("div", { className: "tg-orb", style: { width: "42vw", height: "42vw", top: "20%", left: "30%", background: "radial-gradient(circle, #1659C8, transparent 68%)", animation: "tg-aurora-c 30s ease-in-out infinite" } }),
|
|
15911
|
+
/* @__PURE__ */ jsx98(
|
|
15912
|
+
"div",
|
|
15913
|
+
{
|
|
15914
|
+
className: "absolute inset-0 opacity-[0.35]",
|
|
15915
|
+
style: {
|
|
15916
|
+
backgroundImage: "linear-gradient(rgba(120,140,160,.10) 1px,transparent 1px),linear-gradient(90deg,rgba(120,140,160,.10) 1px,transparent 1px)",
|
|
15917
|
+
backgroundSize: "56px 56px",
|
|
15918
|
+
maskImage: "radial-gradient(900px 600px at 50% 0%, #000, transparent 80%)",
|
|
15919
|
+
WebkitMaskImage: "radial-gradient(900px 600px at 50% 0%, #000, transparent 80%)"
|
|
15920
|
+
}
|
|
15921
|
+
}
|
|
15922
|
+
)
|
|
15923
|
+
] });
|
|
15924
|
+
}
|
|
15925
|
+
AuroraBackground.displayName = "AuroraBackground";
|
|
15926
|
+
function GlassCard({ className, elevation = "raised", hover = false, children, ...rest }) {
|
|
15927
|
+
const shadow = elevation === "floating" ? "shadow-[0_30px_80px_-30px_rgba(0,0,0,.7)]" : elevation === "raised" ? "shadow-[0_16px_50px_-24px_rgba(0,0,0,.6)]" : "";
|
|
15928
|
+
return /* @__PURE__ */ jsx98(
|
|
15929
|
+
"div",
|
|
15930
|
+
{
|
|
15931
|
+
className: cn(
|
|
15932
|
+
"relative rounded-2xl border border-white/10 bg-white/[0.04] backdrop-blur-xl",
|
|
15933
|
+
"before:pointer-events-none before:absolute before:inset-0 before:rounded-2xl before:p-px",
|
|
15934
|
+
"before:[background:linear-gradient(140deg,rgba(255,255,255,.18),rgba(255,255,255,0)_40%)]",
|
|
15935
|
+
"before:[mask:linear-gradient(#000,#000)_content-box,linear-gradient(#000,#000)] before:[mask-composite:exclude]",
|
|
15936
|
+
shadow,
|
|
15937
|
+
hover && "transition-transform duration-300 hover:-translate-y-1",
|
|
15938
|
+
className
|
|
15939
|
+
),
|
|
15940
|
+
...rest,
|
|
15941
|
+
children
|
|
15942
|
+
}
|
|
15943
|
+
);
|
|
15944
|
+
}
|
|
15945
|
+
GlassCard.displayName = "GlassCard";
|
|
15946
|
+
function Reveal({ className, delayMs = 0, as: Tag = "div", children, style, ...rest }) {
|
|
15947
|
+
const ref = React29.useRef(null);
|
|
15948
|
+
const [state, setState] = React29.useState("static");
|
|
15949
|
+
React29.useEffect(() => {
|
|
15950
|
+
const el = ref.current;
|
|
15951
|
+
if (!el) return;
|
|
15952
|
+
const noMotion = typeof window !== "undefined" && (navigator.webdriver || window.matchMedia?.("(prefers-reduced-motion: reduce)").matches || !("IntersectionObserver" in window));
|
|
15953
|
+
if (noMotion) return;
|
|
15954
|
+
const rect = el.getBoundingClientRect();
|
|
15955
|
+
if (rect.top < window.innerHeight * 0.92 && rect.bottom > 0) {
|
|
15956
|
+
setState("shown");
|
|
15957
|
+
return;
|
|
15958
|
+
}
|
|
15959
|
+
setState("hidden");
|
|
15960
|
+
const io = new IntersectionObserver(
|
|
15961
|
+
(entries) => entries.forEach((e) => {
|
|
15962
|
+
if (e.isIntersecting) {
|
|
15963
|
+
setState("shown");
|
|
15964
|
+
io.disconnect();
|
|
15965
|
+
}
|
|
15966
|
+
}),
|
|
15967
|
+
{ threshold: 0.12, rootMargin: "0px 0px -8% 0px" }
|
|
15968
|
+
);
|
|
15969
|
+
io.observe(el);
|
|
15970
|
+
return () => io.disconnect();
|
|
15971
|
+
}, []);
|
|
15972
|
+
const motion = state === "static" ? "" : state === "hidden" ? "opacity-0 translate-y-5" : "opacity-100 translate-y-0";
|
|
15973
|
+
return /* @__PURE__ */ jsx98(
|
|
15974
|
+
Tag,
|
|
15975
|
+
{
|
|
15976
|
+
ref,
|
|
15977
|
+
style: { transitionDelay: `${delayMs}ms`, ...style },
|
|
15978
|
+
className: cn("transition-all duration-[700ms] ease-out will-change-[opacity,transform]", motion, className),
|
|
15979
|
+
...rest,
|
|
15980
|
+
children
|
|
15981
|
+
}
|
|
15982
|
+
);
|
|
15983
|
+
}
|
|
15984
|
+
Reveal.displayName = "Reveal";
|
|
15985
|
+
function MockupWindow({ className, title, children, ...rest }) {
|
|
15986
|
+
return /* @__PURE__ */ jsxs86(GlassCard, { elevation: "floating", className: cn("overflow-hidden", className), ...rest, children: [
|
|
15987
|
+
/* @__PURE__ */ jsxs86("div", { className: "flex items-center gap-2 px-4 py-3 border-b border-white/10 bg-white/[0.03]", children: [
|
|
15988
|
+
/* @__PURE__ */ jsx98("span", { className: "h-3 w-3 rounded-full bg-[#ff5f57]" }),
|
|
15989
|
+
/* @__PURE__ */ jsx98("span", { className: "h-3 w-3 rounded-full bg-[#febc2e]" }),
|
|
15990
|
+
/* @__PURE__ */ jsx98("span", { className: "h-3 w-3 rounded-full bg-[#28c840]" }),
|
|
15991
|
+
title ? /* @__PURE__ */ jsx98("span", { className: "ms-2 font-mono text-xs text-muted-foreground truncate", children: title }) : null
|
|
15992
|
+
] }),
|
|
15993
|
+
/* @__PURE__ */ jsx98("div", { className: "bg-[#080b0f]/80", children })
|
|
15994
|
+
] });
|
|
15995
|
+
}
|
|
15996
|
+
MockupWindow.displayName = "MockupWindow";
|
|
15997
|
+
function PillButton({ className, variant = "flow", size = "lg", children, ...rest }) {
|
|
15998
|
+
const sz = size === "lg" ? "h-[52px] px-7 text-base" : "h-11 px-5 text-sm";
|
|
15999
|
+
const look = variant === "flow" ? "text-white shadow-[0_12px_34px_-10px_rgba(22,89,200,.7)] hover:-translate-y-0.5" : "text-foreground border border-white/15 bg-white/[0.06] backdrop-blur-md hover:bg-white/[0.1]";
|
|
16000
|
+
return /* @__PURE__ */ jsx98(
|
|
16001
|
+
"a",
|
|
16002
|
+
{
|
|
16003
|
+
style: variant === "flow" ? { backgroundImage: "linear-gradient(110deg,#1FC7DC,#2D8CE6 50%,#1659C8)", ...DISPLAY2 } : DISPLAY2,
|
|
16004
|
+
className: cn("inline-flex items-center justify-center gap-2 rounded-full font-semibold transition-all duration-200", sz, look, className),
|
|
16005
|
+
...rest,
|
|
16006
|
+
children
|
|
16007
|
+
}
|
|
16008
|
+
);
|
|
16009
|
+
}
|
|
16010
|
+
PillButton.displayName = "PillButton";
|
|
16011
|
+
|
|
16012
|
+
// src/components/marketing/Marketplace.tsx
|
|
16013
|
+
import * as React30 from "react";
|
|
16014
|
+
import { Search as Search8, Star as Star2, Download as Download2 } from "lucide-react";
|
|
16015
|
+
import { jsx as jsx99, jsxs as jsxs87 } from "react/jsx-runtime";
|
|
16016
|
+
var DISPLAY3 = { fontFamily: '"Sora", var(--togo-font-body, ui-sans-serif, system-ui, sans-serif)' };
|
|
16017
|
+
function MarketplaceCard({
|
|
16018
|
+
name,
|
|
16019
|
+
href,
|
|
16020
|
+
category,
|
|
16021
|
+
categoryColor = "#2D8CE6",
|
|
16022
|
+
icon: Icon,
|
|
16023
|
+
description,
|
|
16024
|
+
author,
|
|
16025
|
+
stars,
|
|
16026
|
+
downloads,
|
|
16027
|
+
enabled,
|
|
16028
|
+
className
|
|
16029
|
+
}) {
|
|
16030
|
+
return /* @__PURE__ */ jsx99("a", { href, className: cn("group block h-full", className), children: /* @__PURE__ */ jsxs87(GlassCard, { hover: true, className: "overflow-hidden h-full flex flex-col p-0", children: [
|
|
16031
|
+
/* @__PURE__ */ jsxs87(
|
|
16032
|
+
"div",
|
|
16033
|
+
{
|
|
16034
|
+
className: "relative h-28 flex items-center justify-center overflow-hidden",
|
|
16035
|
+
style: { background: `radial-gradient(120% 140% at 0% 0%, ${categoryColor}55, transparent 62%), linear-gradient(135deg, ${categoryColor}26, #0b1016)` },
|
|
16036
|
+
children: [
|
|
16037
|
+
/* @__PURE__ */ jsx99("div", { className: "absolute inset-0 opacity-[0.14]", style: { backgroundImage: "radial-gradient(circle at 1px 1px, #fff 1px, transparent 0)", backgroundSize: "16px 16px" } }),
|
|
16038
|
+
Icon && /* @__PURE__ */ jsx99("div", { className: "relative grid place-items-center w-14 h-14 rounded-2xl bg-white/10 backdrop-blur-sm ring-1 ring-white/15 transition-transform duration-300 group-hover:scale-105", children: /* @__PURE__ */ jsx99(Icon, { size: 28, style: { color: "#fff" } }) }),
|
|
16039
|
+
enabled && /* @__PURE__ */ jsx99("span", { className: "absolute top-3 end-3 text-[10px] font-mono px-2 py-0.5 rounded-full bg-black/30 text-emerald-300 ring-1 ring-emerald-400/30", children: "enabled" })
|
|
16040
|
+
]
|
|
16041
|
+
}
|
|
16042
|
+
),
|
|
16043
|
+
/* @__PURE__ */ jsxs87("div", { className: "p-5 flex flex-col flex-1", children: [
|
|
16044
|
+
/* @__PURE__ */ jsxs87("div", { className: "flex items-center gap-2", children: [
|
|
16045
|
+
/* @__PURE__ */ jsx99("h3", { style: DISPLAY3, className: "text-[15px] font-bold truncate", children: name }),
|
|
16046
|
+
category && /* @__PURE__ */ jsx99("span", { className: "ms-auto shrink-0 text-[10px] font-mono uppercase tracking-wider px-2 py-0.5 rounded-full border border-white/12 text-muted-foreground", children: category })
|
|
16047
|
+
] }),
|
|
16048
|
+
/* @__PURE__ */ jsx99("p", { className: "text-[13px] text-muted-foreground mt-1.5 line-clamp-2 flex-1", children: description || "A togo-framework plugin." }),
|
|
16049
|
+
/* @__PURE__ */ jsxs87("div", { className: "flex items-center gap-3 mt-3 text-[11px] text-muted-foreground font-mono", children: [
|
|
16050
|
+
author && /* @__PURE__ */ jsx99("span", { className: "truncate", children: author }),
|
|
16051
|
+
/* @__PURE__ */ jsxs87("span", { className: "ms-auto flex items-center gap-3 shrink-0", children: [
|
|
16052
|
+
typeof stars === "number" && stars > 0 && /* @__PURE__ */ jsxs87("span", { className: "flex items-center gap-1", children: [
|
|
16053
|
+
/* @__PURE__ */ jsx99(Star2, { size: 11 }),
|
|
16054
|
+
" ",
|
|
16055
|
+
stars
|
|
16056
|
+
] }),
|
|
16057
|
+
typeof downloads === "number" && downloads > 0 && /* @__PURE__ */ jsxs87("span", { className: "flex items-center gap-1", children: [
|
|
16058
|
+
/* @__PURE__ */ jsx99(Download2, { size: 11 }),
|
|
16059
|
+
" ",
|
|
16060
|
+
downloads
|
|
16061
|
+
] })
|
|
16062
|
+
] })
|
|
16063
|
+
] })
|
|
16064
|
+
] })
|
|
16065
|
+
] }) });
|
|
16066
|
+
}
|
|
16067
|
+
MarketplaceCard.displayName = "MarketplaceCard";
|
|
16068
|
+
function StatsRow({ stats, className }) {
|
|
16069
|
+
return /* @__PURE__ */ jsx99("div", { className: cn("grid grid-cols-3 gap-3 sm:gap-4", className), children: stats.map((s, i) => /* @__PURE__ */ jsxs87("div", { className: "rounded-2xl border border-white/10 bg-white/[0.04] backdrop-blur-md px-4 sm:px-5 py-4 text-center", children: [
|
|
16070
|
+
/* @__PURE__ */ jsx99("div", { className: "text-[10px] font-mono uppercase tracking-[0.16em] text-muted-foreground/70", children: s.label }),
|
|
16071
|
+
/* @__PURE__ */ jsx99("div", { style: DISPLAY3, className: "text-2xl sm:text-3xl font-bold mt-1", children: s.value })
|
|
16072
|
+
] }, i)) });
|
|
16073
|
+
}
|
|
16074
|
+
StatsRow.displayName = "StatsRow";
|
|
16075
|
+
function FilterBar({ search, onSearch, chips, active, onChip, sort, searchPlaceholder = "Search plugins\u2026", className }) {
|
|
16076
|
+
return /* @__PURE__ */ jsxs87("div", { className: cn("flex flex-col gap-4", className), children: [
|
|
16077
|
+
/* @__PURE__ */ jsxs87("div", { className: "flex flex-col sm:flex-row gap-3 sm:items-center", children: [
|
|
16078
|
+
/* @__PURE__ */ jsxs87("div", { className: "relative flex-1 min-w-0", children: [
|
|
16079
|
+
/* @__PURE__ */ jsx99(Search8, { size: 15, className: "absolute start-3.5 top-1/2 -translate-y-1/2 text-muted-foreground pointer-events-none" }),
|
|
16080
|
+
/* @__PURE__ */ jsx99(
|
|
16081
|
+
"input",
|
|
16082
|
+
{
|
|
16083
|
+
value: search,
|
|
16084
|
+
onChange: (e) => onSearch(e.target.value),
|
|
16085
|
+
placeholder: searchPlaceholder,
|
|
16086
|
+
className: "w-full h-11 ps-10 pe-4 rounded-full border border-white/12 bg-white/[0.05] backdrop-blur-md text-sm outline-none focus:border-[color:rgba(31,199,220,.5)] transition-colors"
|
|
16087
|
+
}
|
|
16088
|
+
)
|
|
16089
|
+
] }),
|
|
16090
|
+
sort && /* @__PURE__ */ jsx99(
|
|
16091
|
+
"select",
|
|
16092
|
+
{
|
|
16093
|
+
value: sort.value,
|
|
16094
|
+
onChange: (e) => sort.onSort(e.target.value),
|
|
16095
|
+
className: "h-11 px-4 rounded-full border border-white/12 bg-white/[0.05] backdrop-blur-md text-sm outline-none cursor-pointer",
|
|
16096
|
+
children: sort.options.map((o) => /* @__PURE__ */ jsx99("option", { value: o.value, className: "bg-[#0b1016]", children: o.label }, o.value))
|
|
16097
|
+
}
|
|
16098
|
+
)
|
|
16099
|
+
] }),
|
|
16100
|
+
/* @__PURE__ */ jsx99("div", { className: "flex flex-wrap gap-2", children: chips.map((c) => {
|
|
16101
|
+
const on = active === c.value;
|
|
16102
|
+
return /* @__PURE__ */ jsxs87(
|
|
16103
|
+
"button",
|
|
16104
|
+
{
|
|
16105
|
+
onClick: () => onChip(c.value),
|
|
16106
|
+
className: cn(
|
|
16107
|
+
"font-mono text-[12px] px-3.5 py-1.5 rounded-full border transition-colors",
|
|
16108
|
+
on ? "border-[color:rgba(31,199,220,.5)] text-[#5CDDEC] bg-[color:rgba(31,199,220,.08)]" : "border-white/12 text-muted-foreground hover:text-foreground hover:bg-white/[0.05]"
|
|
16109
|
+
),
|
|
16110
|
+
children: [
|
|
16111
|
+
c.label,
|
|
16112
|
+
typeof c.count === "number" && /* @__PURE__ */ jsxs87("span", { className: "opacity-50", children: [
|
|
16113
|
+
" ",
|
|
16114
|
+
c.count
|
|
16115
|
+
] })
|
|
16116
|
+
]
|
|
16117
|
+
},
|
|
16118
|
+
c.value
|
|
16119
|
+
);
|
|
16120
|
+
}) })
|
|
16121
|
+
] });
|
|
16122
|
+
}
|
|
16123
|
+
FilterBar.displayName = "FilterBar";
|
|
16124
|
+
function Pager({ page, pages, onPage, className }) {
|
|
16125
|
+
if (pages <= 1) return null;
|
|
16126
|
+
const nums = Array.from({ length: pages }, (_, i) => i + 1).filter((n) => n === 1 || n === pages || Math.abs(n - page) <= 1);
|
|
16127
|
+
const btn = "min-w-9 h-9 px-2 rounded-full border text-sm font-mono transition-colors";
|
|
16128
|
+
return /* @__PURE__ */ jsxs87("div", { className: cn("flex items-center justify-center gap-1.5", className), children: [
|
|
16129
|
+
/* @__PURE__ */ jsx99("button", { disabled: page <= 1, onClick: () => onPage(page - 1), className: cn(btn, "border-white/12 text-muted-foreground hover:text-foreground disabled:opacity-30"), children: "\u2039" }),
|
|
16130
|
+
nums.map((n, i) => /* @__PURE__ */ jsxs87(React30.Fragment, { children: [
|
|
16131
|
+
i > 0 && n - nums[i - 1] > 1 && /* @__PURE__ */ jsx99("span", { className: "text-muted-foreground/50 px-1", children: "\u2026" }),
|
|
16132
|
+
/* @__PURE__ */ jsx99("button", { onClick: () => onPage(n), className: cn(btn, n === page ? "border-[color:rgba(31,199,220,.5)] text-[#5CDDEC] bg-[color:rgba(31,199,220,.08)]" : "border-white/12 text-muted-foreground hover:text-foreground"), children: n })
|
|
16133
|
+
] }, n)),
|
|
16134
|
+
/* @__PURE__ */ jsx99("button", { disabled: page >= pages, onClick: () => onPage(page + 1), className: cn(btn, "border-white/12 text-muted-foreground hover:text-foreground disabled:opacity-30"), children: "\u203A" })
|
|
16135
|
+
] });
|
|
16136
|
+
}
|
|
16137
|
+
Pager.displayName = "Pager";
|
|
16138
|
+
|
|
16139
|
+
// src/components/marketing/Docs.tsx
|
|
16140
|
+
import * as React31 from "react";
|
|
16141
|
+
import { Info as Info3, AlertTriangle as AlertTriangle5, Lightbulb as Lightbulb2, Search as Search9, ChevronRight as ChevronRight9 } from "lucide-react";
|
|
16142
|
+
import { Fragment as Fragment25, jsx as jsx100, jsxs as jsxs88 } from "react/jsx-runtime";
|
|
16143
|
+
var DISPLAY4 = { fontFamily: '"Sora", var(--togo-font-body, ui-sans-serif, system-ui, sans-serif)' };
|
|
16144
|
+
function Callout({ kind = "info", title, children, className }) {
|
|
16145
|
+
const { Icon, c } = {
|
|
16146
|
+
info: { Icon: Info3, c: "#2D8CE6" },
|
|
16147
|
+
warn: { Icon: AlertTriangle5, c: "#f5a623" },
|
|
16148
|
+
tip: { Icon: Lightbulb2, c: "#1FC7DC" },
|
|
16149
|
+
note: { Icon: Info3, c: "#8b97a3" }
|
|
16150
|
+
}[kind];
|
|
16151
|
+
return /* @__PURE__ */ jsxs88("div", { className: cn("rounded-xl border p-4 flex gap-3 my-4", className), style: { borderColor: `${c}40`, background: `${c}12` }, children: [
|
|
16152
|
+
/* @__PURE__ */ jsx100(Icon, { size: 18, style: { color: c }, className: "shrink-0 mt-0.5" }),
|
|
16153
|
+
/* @__PURE__ */ jsxs88("div", { className: "text-sm text-foreground/90 [&>p]:m-0 [&>p]:leading-relaxed", children: [
|
|
16154
|
+
title && /* @__PURE__ */ jsx100("div", { className: "font-semibold mb-1", style: DISPLAY4, children: title }),
|
|
16155
|
+
children
|
|
16156
|
+
] })
|
|
16157
|
+
] });
|
|
16158
|
+
}
|
|
16159
|
+
Callout.displayName = "Callout";
|
|
16160
|
+
function DocsSidebar({ groups, activeHref, className, onNavigate }) {
|
|
16161
|
+
return /* @__PURE__ */ jsx100("nav", { className: cn("text-sm", className), children: groups.map((g) => {
|
|
16162
|
+
const hasActive = g.items.some((i) => i.href === activeHref);
|
|
16163
|
+
return /* @__PURE__ */ jsx100(DocsGroup, { group: g, activeHref, defaultOpen: hasActive, onNavigate }, g.label);
|
|
16164
|
+
}) });
|
|
16165
|
+
}
|
|
16166
|
+
function DocsGroup({ group, activeHref, defaultOpen, onNavigate }) {
|
|
16167
|
+
const [open, setOpen] = React31.useState(defaultOpen);
|
|
16168
|
+
return /* @__PURE__ */ jsxs88("div", { className: "mb-1", children: [
|
|
16169
|
+
/* @__PURE__ */ jsxs88("button", { onClick: () => setOpen((o) => !o), className: "w-full flex items-center gap-1.5 px-2 py-1.5 text-[11px] font-mono uppercase tracking-[0.14em] text-muted-foreground/70 hover:text-foreground", children: [
|
|
16170
|
+
/* @__PURE__ */ jsx100(ChevronRight9, { size: 12, className: cn("transition-transform", open && "rotate-90") }),
|
|
16171
|
+
group.label
|
|
16172
|
+
] }),
|
|
16173
|
+
open && /* @__PURE__ */ jsx100("ul", { className: "mt-0.5 mb-2 ms-3 border-s border-white/10", children: group.items.map((i) => {
|
|
16174
|
+
const on = i.href === activeHref;
|
|
16175
|
+
return /* @__PURE__ */ jsx100("li", { children: /* @__PURE__ */ jsx100(
|
|
16176
|
+
"a",
|
|
16177
|
+
{
|
|
16178
|
+
href: i.href,
|
|
16179
|
+
onClick: onNavigate ? (e) => {
|
|
16180
|
+
e.preventDefault();
|
|
16181
|
+
onNavigate(i.href);
|
|
16182
|
+
} : void 0,
|
|
16183
|
+
className: cn("block ps-3 -ms-px border-s py-1.5 transition-colors", on ? "border-[#1FC7DC] text-[#5CDDEC]" : "border-transparent text-muted-foreground hover:text-foreground"),
|
|
16184
|
+
children: i.label
|
|
16185
|
+
}
|
|
16186
|
+
) }, i.href);
|
|
16187
|
+
}) })
|
|
16188
|
+
] });
|
|
16189
|
+
}
|
|
16190
|
+
DocsSidebar.displayName = "DocsSidebar";
|
|
16191
|
+
function DocsTOC({ items, className }) {
|
|
16192
|
+
const [active, setActive] = React31.useState("");
|
|
16193
|
+
React31.useEffect(() => {
|
|
16194
|
+
if (!items.length) return;
|
|
16195
|
+
const obs = new IntersectionObserver(
|
|
16196
|
+
(entries) => {
|
|
16197
|
+
const vis = entries.filter((e) => e.isIntersecting).sort((a, b) => a.boundingClientRect.top - b.boundingClientRect.top);
|
|
16198
|
+
if (vis[0]) setActive(vis[0].target.id);
|
|
16199
|
+
},
|
|
16200
|
+
{ rootMargin: "-80px 0px -70% 0px" }
|
|
16201
|
+
);
|
|
16202
|
+
items.forEach((i) => {
|
|
16203
|
+
const el = document.getElementById(i.id);
|
|
16204
|
+
if (el) obs.observe(el);
|
|
16205
|
+
});
|
|
16206
|
+
return () => obs.disconnect();
|
|
16207
|
+
}, [items]);
|
|
16208
|
+
if (!items.length) return null;
|
|
16209
|
+
return /* @__PURE__ */ jsxs88("nav", { className: cn("text-sm", className), children: [
|
|
16210
|
+
/* @__PURE__ */ jsx100("div", { className: "text-[10px] font-mono uppercase tracking-[0.16em] text-muted-foreground/60 mb-3", children: "On this page" }),
|
|
16211
|
+
/* @__PURE__ */ jsx100("ul", { className: "border-s border-white/10", children: items.map((i) => /* @__PURE__ */ jsx100("li", { style: { paddingInlineStart: `${(Math.max(1, i.level) - 1) * 12}px` }, children: /* @__PURE__ */ jsx100("a", { href: `#${i.id}`, className: cn("block ps-3 -ms-px border-s py-1 transition-colors", active === i.id ? "border-[#1FC7DC] text-[#5CDDEC]" : "border-transparent text-muted-foreground hover:text-foreground"), children: i.text }) }, i.id)) })
|
|
16212
|
+
] });
|
|
16213
|
+
}
|
|
16214
|
+
DocsTOC.displayName = "DocsTOC";
|
|
16215
|
+
function DocsLayout({ sidebar, toc, breadcrumb, topbar, children, className }) {
|
|
16216
|
+
return /* @__PURE__ */ jsxs88("div", { className: cn("mx-auto max-w-7xl px-4 sm:px-6", className), children: [
|
|
16217
|
+
topbar,
|
|
16218
|
+
/* @__PURE__ */ jsxs88("div", { className: "flex gap-8", children: [
|
|
16219
|
+
/* @__PURE__ */ jsx100("aside", { className: "hidden lg:block w-60 shrink-0 sticky top-20 self-start max-h-[calc(100vh-6rem)] overflow-y-auto py-8 pe-2", children: sidebar }),
|
|
16220
|
+
/* @__PURE__ */ jsxs88("main", { className: "min-w-0 flex-1 py-8 max-w-3xl", children: [
|
|
16221
|
+
breadcrumb && /* @__PURE__ */ jsx100("div", { className: "text-[12px] font-mono text-muted-foreground/70 mb-3", children: breadcrumb }),
|
|
16222
|
+
children
|
|
16223
|
+
] }),
|
|
16224
|
+
toc && /* @__PURE__ */ jsx100("aside", { className: "hidden xl:block w-56 shrink-0 sticky top-20 self-start max-h-[calc(100vh-6rem)] overflow-y-auto py-8", children: toc })
|
|
16225
|
+
] })
|
|
16226
|
+
] });
|
|
16227
|
+
}
|
|
16228
|
+
DocsLayout.displayName = "DocsLayout";
|
|
16229
|
+
function CommandPalette({ items, placeholder = "Search docs & plugins\u2026", className }) {
|
|
16230
|
+
const [open, setOpen] = React31.useState(false);
|
|
16231
|
+
const [q, setQ] = React31.useState("");
|
|
16232
|
+
React31.useEffect(() => {
|
|
16233
|
+
const h = (e) => {
|
|
16234
|
+
if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === "k") {
|
|
16235
|
+
e.preventDefault();
|
|
16236
|
+
setOpen((o) => !o);
|
|
16237
|
+
}
|
|
16238
|
+
if (e.key === "Escape") setOpen(false);
|
|
16239
|
+
};
|
|
16240
|
+
window.addEventListener("keydown", h);
|
|
16241
|
+
return () => window.removeEventListener("keydown", h);
|
|
16242
|
+
}, []);
|
|
16243
|
+
const results = q ? items.filter((i) => (i.label + " " + (i.sublabel || "")).toLowerCase().includes(q.toLowerCase())).slice(0, 40) : items.slice(0, 24);
|
|
16244
|
+
return /* @__PURE__ */ jsxs88(Fragment25, { children: [
|
|
16245
|
+
/* @__PURE__ */ jsxs88("button", { onClick: () => setOpen(true), className: cn("inline-flex items-center gap-2 h-9 px-3 rounded-full border border-white/12 bg-white/[0.05] text-sm text-muted-foreground hover:text-foreground transition-colors", className), children: [
|
|
16246
|
+
/* @__PURE__ */ jsx100(Search9, { size: 14 }),
|
|
16247
|
+
" ",
|
|
16248
|
+
/* @__PURE__ */ jsx100("span", { className: "hidden sm:inline", children: "Search" }),
|
|
16249
|
+
/* @__PURE__ */ jsx100("kbd", { className: "hidden sm:inline font-mono text-[10px] border border-white/15 rounded px-1 py-0.5", children: "\u2318K" })
|
|
16250
|
+
] }),
|
|
16251
|
+
open && /* @__PURE__ */ jsx100("div", { className: "fixed inset-0 z-[100] flex items-start justify-center pt-[12vh] bg-black/60 backdrop-blur-sm", onClick: () => setOpen(false), children: /* @__PURE__ */ jsxs88("div", { className: "w-full max-w-xl mx-4 rounded-2xl border border-white/12 bg-[#0b1016]/95 backdrop-blur-xl shadow-[0_30px_80px_-20px_rgba(0,0,0,.8)] overflow-hidden", onClick: (e) => e.stopPropagation(), children: [
|
|
16252
|
+
/* @__PURE__ */ jsxs88("div", { className: "flex items-center gap-3 px-4 border-b border-white/10", children: [
|
|
16253
|
+
/* @__PURE__ */ jsx100(Search9, { size: 16, className: "text-muted-foreground" }),
|
|
16254
|
+
/* @__PURE__ */ jsx100("input", { autoFocus: true, value: q, onChange: (e) => setQ(e.target.value), placeholder, className: "flex-1 h-12 bg-transparent outline-none text-sm" }),
|
|
16255
|
+
/* @__PURE__ */ jsx100("kbd", { className: "font-mono text-[10px] text-muted-foreground border border-white/15 rounded px-1", children: "esc" })
|
|
16256
|
+
] }),
|
|
16257
|
+
/* @__PURE__ */ jsxs88("ul", { className: "max-h-[50vh] overflow-auto p-2", children: [
|
|
16258
|
+
results.map((r, idx) => /* @__PURE__ */ jsx100("li", { children: /* @__PURE__ */ jsxs88("a", { href: r.href, className: "flex items-center gap-3 px-3 py-2.5 rounded-lg hover:bg-white/[0.06]", children: [
|
|
16259
|
+
/* @__PURE__ */ jsx100("span", { className: "text-sm truncate", children: r.label }),
|
|
16260
|
+
r.sublabel && /* @__PURE__ */ jsx100("span", { className: "text-xs text-muted-foreground truncate min-w-0", children: r.sublabel }),
|
|
16261
|
+
r.group && /* @__PURE__ */ jsx100("span", { className: "ms-auto shrink-0 text-[10px] font-mono uppercase text-muted-foreground/60", children: r.group })
|
|
16262
|
+
] }) }, idx)),
|
|
16263
|
+
!results.length && /* @__PURE__ */ jsx100("li", { className: "px-3 py-6 text-center text-sm text-muted-foreground", children: "No results." })
|
|
16264
|
+
] })
|
|
16265
|
+
] }) })
|
|
16266
|
+
] });
|
|
16267
|
+
}
|
|
16268
|
+
CommandPalette.displayName = "CommandPalette";
|
|
15894
16269
|
export {
|
|
15895
16270
|
Accordion,
|
|
15896
16271
|
AccordionContent,
|
|
@@ -15928,6 +16303,7 @@ export {
|
|
|
15928
16303
|
ArtifactTable,
|
|
15929
16304
|
ArtifactViewer_default as ArtifactViewer,
|
|
15930
16305
|
AspectRatio,
|
|
16306
|
+
AuroraBackground,
|
|
15931
16307
|
AuthCard_default as AuthCard,
|
|
15932
16308
|
AuthErrorAlert_default as AuthErrorAlert,
|
|
15933
16309
|
AuthFlow_default as AuthFlow,
|
|
@@ -15946,6 +16322,7 @@ export {
|
|
|
15946
16322
|
BreadcrumbSeparator,
|
|
15947
16323
|
Button,
|
|
15948
16324
|
Calendar,
|
|
16325
|
+
Callout,
|
|
15949
16326
|
Card,
|
|
15950
16327
|
CardContent,
|
|
15951
16328
|
CardDescription,
|
|
@@ -15980,6 +16357,7 @@ export {
|
|
|
15980
16357
|
CommandInputPrimitive,
|
|
15981
16358
|
CommandItem,
|
|
15982
16359
|
CommandList,
|
|
16360
|
+
CommandPalette,
|
|
15983
16361
|
CommandSeparator,
|
|
15984
16362
|
CommandShortcut,
|
|
15985
16363
|
ContextMenu,
|
|
@@ -16017,6 +16395,9 @@ export {
|
|
|
16017
16395
|
DialogTitle,
|
|
16018
16396
|
DialogTrigger,
|
|
16019
16397
|
DirectionalArrow,
|
|
16398
|
+
DocsLayout,
|
|
16399
|
+
DocsSidebar,
|
|
16400
|
+
DocsTOC,
|
|
16020
16401
|
Drawer,
|
|
16021
16402
|
DrawerClose,
|
|
16022
16403
|
DrawerContent,
|
|
@@ -16053,6 +16434,7 @@ export {
|
|
|
16053
16434
|
FeedbackButton,
|
|
16054
16435
|
FeedbackHub,
|
|
16055
16436
|
FeedbackWidget,
|
|
16437
|
+
FilterBar,
|
|
16056
16438
|
ForgotForm_default as ForgotForm,
|
|
16057
16439
|
Form,
|
|
16058
16440
|
FormControl,
|
|
@@ -16061,6 +16443,7 @@ export {
|
|
|
16061
16443
|
FormItem,
|
|
16062
16444
|
FormLabel,
|
|
16063
16445
|
FormMessage,
|
|
16446
|
+
GlassCard,
|
|
16064
16447
|
HoverCard,
|
|
16065
16448
|
HoverCardContent,
|
|
16066
16449
|
HoverCardTrigger,
|
|
@@ -16090,6 +16473,7 @@ export {
|
|
|
16090
16473
|
MarkdownEditor,
|
|
16091
16474
|
MarkdownRenderer,
|
|
16092
16475
|
MarkdownTable,
|
|
16476
|
+
MarketplaceCard,
|
|
16093
16477
|
Menubar,
|
|
16094
16478
|
MenubarCheckboxItem,
|
|
16095
16479
|
MenubarContent,
|
|
@@ -16107,6 +16491,7 @@ export {
|
|
|
16107
16491
|
MenubarSubTrigger,
|
|
16108
16492
|
MenubarTrigger,
|
|
16109
16493
|
MiniBarChart,
|
|
16494
|
+
MockupWindow,
|
|
16110
16495
|
MotorFeedbackLauncher,
|
|
16111
16496
|
NativeSelect,
|
|
16112
16497
|
NavigationMenu,
|
|
@@ -16122,6 +16507,7 @@ export {
|
|
|
16122
16507
|
OTPBoxGroup_default as OTPBoxGroup,
|
|
16123
16508
|
PIPELINE_STAGES,
|
|
16124
16509
|
PageHeader,
|
|
16510
|
+
Pager,
|
|
16125
16511
|
Pagination,
|
|
16126
16512
|
PaginationContent,
|
|
16127
16513
|
PaginationEllipsis,
|
|
@@ -16132,6 +16518,7 @@ export {
|
|
|
16132
16518
|
PasswordInput_default as PasswordInput,
|
|
16133
16519
|
PasswordLockScreen_default as PasswordLockScreen,
|
|
16134
16520
|
PasswordStrengthMeter_default as PasswordStrengthMeter,
|
|
16521
|
+
PillButton,
|
|
16135
16522
|
PluginAppearanceSection,
|
|
16136
16523
|
PluginCard,
|
|
16137
16524
|
PluginDetailLayout,
|
|
@@ -16151,6 +16538,7 @@ export {
|
|
|
16151
16538
|
ResizableHandle,
|
|
16152
16539
|
ResizablePanel,
|
|
16153
16540
|
ResizablePanelGroup,
|
|
16541
|
+
Reveal,
|
|
16154
16542
|
RouteProgress,
|
|
16155
16543
|
SENTRA_BRAND,
|
|
16156
16544
|
STEP_FIELD_REGISTRY,
|
|
@@ -16212,6 +16600,7 @@ export {
|
|
|
16212
16600
|
Slider,
|
|
16213
16601
|
SourceBadge,
|
|
16214
16602
|
StatCard,
|
|
16603
|
+
StatsRow,
|
|
16215
16604
|
StatusBadge,
|
|
16216
16605
|
StepOptionsDialog,
|
|
16217
16606
|
StreamingMessage_default as StreamingMessage,
|