@togo-framework/ui 0.1.3 → 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 +132 -1
- package/dist/index.js +267 -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.d.ts
CHANGED
|
@@ -3957,4 +3957,135 @@ declare namespace PillButton {
|
|
|
3957
3957
|
var displayName: string;
|
|
3958
3958
|
}
|
|
3959
3959
|
|
|
3960
|
-
|
|
3960
|
+
interface MarketplaceCardProps {
|
|
3961
|
+
name: string;
|
|
3962
|
+
href: string;
|
|
3963
|
+
category?: string;
|
|
3964
|
+
/** Hex that drives the cover gradient + icon tint. */
|
|
3965
|
+
categoryColor?: string;
|
|
3966
|
+
icon?: LucideIcon;
|
|
3967
|
+
description?: string;
|
|
3968
|
+
/** Owner/org, e.g. "togo-framework". */
|
|
3969
|
+
author?: string;
|
|
3970
|
+
stars?: number;
|
|
3971
|
+
downloads?: number;
|
|
3972
|
+
enabled?: boolean;
|
|
3973
|
+
className?: string;
|
|
3974
|
+
}
|
|
3975
|
+
declare function MarketplaceCard({ name, href, category, categoryColor, icon: Icon, description, author, stars, downloads, enabled, className, }: MarketplaceCardProps): React$1.JSX.Element;
|
|
3976
|
+
declare namespace MarketplaceCard {
|
|
3977
|
+
var displayName: string;
|
|
3978
|
+
}
|
|
3979
|
+
interface StatTile {
|
|
3980
|
+
label: string;
|
|
3981
|
+
value: React$1.ReactNode;
|
|
3982
|
+
}
|
|
3983
|
+
declare function StatsRow({ stats, className }: {
|
|
3984
|
+
stats: StatTile[];
|
|
3985
|
+
className?: string;
|
|
3986
|
+
}): React$1.JSX.Element;
|
|
3987
|
+
declare namespace StatsRow {
|
|
3988
|
+
var displayName: string;
|
|
3989
|
+
}
|
|
3990
|
+
interface FilterChip {
|
|
3991
|
+
value: string;
|
|
3992
|
+
label: string;
|
|
3993
|
+
count?: number;
|
|
3994
|
+
}
|
|
3995
|
+
interface FilterBarProps {
|
|
3996
|
+
search: string;
|
|
3997
|
+
onSearch: (v: string) => void;
|
|
3998
|
+
chips: FilterChip[];
|
|
3999
|
+
active: string;
|
|
4000
|
+
onChip: (v: string) => void;
|
|
4001
|
+
sort?: {
|
|
4002
|
+
value: string;
|
|
4003
|
+
options: {
|
|
4004
|
+
value: string;
|
|
4005
|
+
label: string;
|
|
4006
|
+
}[];
|
|
4007
|
+
onSort: (v: string) => void;
|
|
4008
|
+
};
|
|
4009
|
+
searchPlaceholder?: string;
|
|
4010
|
+
className?: string;
|
|
4011
|
+
}
|
|
4012
|
+
declare function FilterBar({ search, onSearch, chips, active, onChip, sort, searchPlaceholder, className }: FilterBarProps): React$1.JSX.Element;
|
|
4013
|
+
declare namespace FilterBar {
|
|
4014
|
+
var displayName: string;
|
|
4015
|
+
}
|
|
4016
|
+
declare function Pager({ page, pages, onPage, className }: {
|
|
4017
|
+
page: number;
|
|
4018
|
+
pages: number;
|
|
4019
|
+
onPage: (p: number) => void;
|
|
4020
|
+
className?: string;
|
|
4021
|
+
}): React$1.JSX.Element | null;
|
|
4022
|
+
declare namespace Pager {
|
|
4023
|
+
var displayName: string;
|
|
4024
|
+
}
|
|
4025
|
+
|
|
4026
|
+
declare function Callout({ kind, title, children, className }: {
|
|
4027
|
+
kind?: "info" | "warn" | "tip" | "note";
|
|
4028
|
+
title?: string;
|
|
4029
|
+
children: React$1.ReactNode;
|
|
4030
|
+
className?: string;
|
|
4031
|
+
}): React$1.JSX.Element;
|
|
4032
|
+
declare namespace Callout {
|
|
4033
|
+
var displayName: string;
|
|
4034
|
+
}
|
|
4035
|
+
interface DocsNavItem {
|
|
4036
|
+
label: string;
|
|
4037
|
+
href: string;
|
|
4038
|
+
}
|
|
4039
|
+
interface DocsNavGroup {
|
|
4040
|
+
label: string;
|
|
4041
|
+
items: DocsNavItem[];
|
|
4042
|
+
}
|
|
4043
|
+
declare function DocsSidebar({ groups, activeHref, className, onNavigate }: {
|
|
4044
|
+
groups: DocsNavGroup[];
|
|
4045
|
+
activeHref?: string;
|
|
4046
|
+
className?: string;
|
|
4047
|
+
onNavigate?: (href: string) => void;
|
|
4048
|
+
}): React$1.JSX.Element;
|
|
4049
|
+
declare namespace DocsSidebar {
|
|
4050
|
+
var displayName: string;
|
|
4051
|
+
}
|
|
4052
|
+
interface TocItem {
|
|
4053
|
+
id: string;
|
|
4054
|
+
text: string;
|
|
4055
|
+
level: number;
|
|
4056
|
+
}
|
|
4057
|
+
declare function DocsTOC({ items, className }: {
|
|
4058
|
+
items: TocItem[];
|
|
4059
|
+
className?: string;
|
|
4060
|
+
}): React$1.JSX.Element | null;
|
|
4061
|
+
declare namespace DocsTOC {
|
|
4062
|
+
var displayName: string;
|
|
4063
|
+
}
|
|
4064
|
+
interface DocsLayoutProps {
|
|
4065
|
+
sidebar: React$1.ReactNode;
|
|
4066
|
+
toc?: React$1.ReactNode;
|
|
4067
|
+
breadcrumb?: React$1.ReactNode;
|
|
4068
|
+
topbar?: React$1.ReactNode;
|
|
4069
|
+
children: React$1.ReactNode;
|
|
4070
|
+
className?: string;
|
|
4071
|
+
}
|
|
4072
|
+
declare function DocsLayout({ sidebar, toc, breadcrumb, topbar, children, className }: DocsLayoutProps): React$1.JSX.Element;
|
|
4073
|
+
declare namespace DocsLayout {
|
|
4074
|
+
var displayName: string;
|
|
4075
|
+
}
|
|
4076
|
+
interface PaletteItem {
|
|
4077
|
+
label: string;
|
|
4078
|
+
sublabel?: string;
|
|
4079
|
+
href: string;
|
|
4080
|
+
group?: string;
|
|
4081
|
+
}
|
|
4082
|
+
declare function CommandPalette({ items, placeholder, className }: {
|
|
4083
|
+
items: PaletteItem[];
|
|
4084
|
+
placeholder?: string;
|
|
4085
|
+
className?: string;
|
|
4086
|
+
}): React$1.JSX.Element;
|
|
4087
|
+
declare namespace CommandPalette {
|
|
4088
|
+
var displayName: string;
|
|
4089
|
+
}
|
|
4090
|
+
|
|
4091
|
+
export { type A2UIActionItem, type A2UIActionsData, type A2UIArtifact$1 as A2UIArtifact, type A2UICardData, type A2UICardField, type A2UIChartData, type A2UIChartSeries, type A2UIClientCandidate, type A2UIClientCandidatesData, type A2UIClientDiffConfirmData, type A2UIClientDiffRow, type A2UIClientField, type A2UIClientFieldPickerData, type A2UIKind, type A2UIMarkdownData, type A2UIPersonaStarter, type A2UIPersonaStartersData, type A2UITableColumn, type A2UITableData, type ActivityBucket, AdminLayout, type AdminLayoutProps, type AdminSubNavItem, AgentSteps, type AlertMapItem, type AlertSeverity, type AppBrand, AppHeader, type AppHeaderProps, AppLayout, type AppLayoutProps, type AppNavGroup, type AppNavItem, AppPageShell, type AppPageShellProps, AppSidebar, type AppSidebarProps, type AppearanceMode, ArtifactActions, type ArtifactActionsProps, ArtifactCard, type ArtifactCardProps, ArtifactChart, type ArtifactChartProps, ArtifactClientCandidates, type ArtifactClientCandidatesProps, ArtifactClientDiffConfirm, type ArtifactClientDiffConfirmProps, ArtifactClientFieldPicker, type ArtifactClientFieldPickerProps, type ArtifactInteraction, ArtifactMarkdown, type ArtifactMarkdownProps, ArtifactPersonaStarters, type ArtifactPersonaStartersProps, ArtifactRenderer, type ArtifactRendererProps, ArtifactTable, type ArtifactTableProps, ArtifactViewer, AuroraBackground, type AuroraBackgroundProps, AuthCard, type AuthCardBrand, type AuthClient, AuthErrorAlert, AuthFlow, type AuthLayout, AuthStepHeader, type BarPoint, Callout, type CardFilter, CardGrid, type CardGridLabels, ChatThread, CodeBlock, CodeShowcase, type CodeShowcaseProps, type CodeShowcaseTab, ColorPicker, type ColorPickerProps, CommandPalette, ContextualSkeleton, type CopilotClient, type CopilotEvent, CopilotLauncher, CopilotProvider, type CopilotQuickAction, type CopilotRequest, CopilotSelectionTrigger, type CopilotSelectionTriggerProps, DEFAULT_LAYERS, DEFAULT_LEGEND_GROUPS, DEFAULT_REGION_PRESETS, DataState, type DataStateLabels, type DataStateProps, DataTable, type DataTableBulkAction, type DataTableColumnFilter, type DataTableColumnMeta, type DataTableDensity, type DataTableFilterType, type DataTableLanguage, type DataTableProps, type DataTableSelectOption, type DataTableServerCallbacks, type DataTableServerState, type DockPosition, DocsLayout, type DocsLayoutProps, type DocsNavGroup, type DocsNavItem, DocsSidebar, DocsTOC, DynamicIcon, DynamicSection, type DynamicSectionProps, EmptyState, type EmptyStateProps, EntityNetworkGraph, type EntityNetworkGraphProps, type ErrorFilter, ErrorTrackingPage, type ErrorTrackingPageProps, EventMapPanel, type EventMapPanelProps, Eyebrow, type EyebrowProps, FeatureCard, type FeatureCardProps, type FeedbackAttachment, FeedbackButton, type FeedbackButtonProps, FeedbackHub, type FeedbackHubProps, type FeedbackItem, type FeedbackKind, FeedbackWidget, type FeedbackWidgetProps, FilterBar, type FilterBarProps, type FilterChip, ForgotForm, GlassCard, type GlassCardProps, type GraphLink, type GraphNode, IconPicker, type IconPickerProps, type Issue$1 as Issue, type IssueAssignee, type IssueBreadcrumb, IssueDetail, type IssueDetailProps, type IssueLevel, type IssueSort, type IssueTag, IssuesList, type IssuesListProps, LANG_COOKIE_NAME, type LanguageContextValue, LanguageProvider, type LanguageProviderProps, type LegendGroup, type LegendItem, type LegendShapeType, LockScreen, type LockScreenProps, type LockScreenUser, type LogLevel, LoginForm, type LoginResult, Logo, type LogoProps, type LogoTone, type LogoVariant, type LogsFilter, LogsView, type LogsViewProps, MARKER_COLORS, MARKER_LABELS, type MapLayer, MapLayersPanel, type MapLayersPanelProps, MapLegend, type MapLegendProps, type MapMarker$1 as MapMarker, type MapMarkerType, MapPanel, type MapPanelProps, type MapRegionPreset, MapView, type MapViewProps, MarkdownContent, MarkdownEditor, type MarkdownEditorProps, MarkdownRenderer, type MarkdownRendererProps, MarkdownTable, type MarkdownView, MarketplaceCard, type MarketplaceCardProps, MiniBarChart, MockupWindow, type MockupWindowProps, type ModelOption, MotorFeedbackLauncher, type MotorFeedbackLauncherProps, NestedStepsEditor, type NestedStepsEditorProps, NetworkGraph, type NetworkGraphProps, type NewFeedback, OTPBoxGroup, type OtpResult, PIPELINE_STAGES, PageHeader, type PageHeaderProps, Pager, type PaletteItem, PasswordInput, PasswordLockScreen, type PasswordLockScreenProps, type PasswordLockScreenUser, type PasswordRule, PasswordStrengthMeter, type PickedLocation, PillButton, type PillButtonProps, type PipelineCard, type PipelineLane, type PipelineModel, type PluginActivitySummary, type PluginAppearanceFields, PluginAppearanceSection, type PluginAppearanceSectionProps, PluginCard, type PluginCatalogEntry, type PluginDetailIdentity, PluginDetailLayout, type PluginDetailLayoutProps, type PluginDetailTab, PluginHero, PluginHeroSkeleton, PluginPageHeader, PluginSectionCard, PluginSparkline, type ProfileSession, ProfileView, type ProfileViewProps, type RenderMapContext, ResetForm, type ResolvedIcon, Reveal, type RevealProps, RouteProgress, type RouteProgressProps, STEP_FIELD_REGISTRY, SectionBoard, type SectionBoardProps, SectionHeading, type SectionHeadingProps, type SectionModel, SectionSkeleton, SentraLoading, type ServiceLogRow, ServiceUnavailable, type ServiceUnavailableProps, SessionExpired, type SessionExpiredProps, SeverityChip, type SidebarConversation, type SidebarUser, SourceBadge, type SparklinePoint, type StackFrame, type StackFrameContextLine, StatCard, type StatCardProps, type StatTile, StatsRow, StatusBadge, type StatusBadgeProps, type StatusBadgeTone, type Step, type StepFieldDef, type StepFieldType, type StepMetrics7d, StepOptionsDialog, type StepOptionsDialogProps, StreamingMessage, type TestRunCallbacks, type TestRunCompletePayload, TestRunPanel, type TestRunPanelProps, type TestRunSavedItem, type TestRunStep, type TocItem, TwoFAForm, UnifiedCopilotDock, type UnlockCredentials, type Verify2FAResult, type View, ViewToggle, type ViewToggleProps, Wordmark, type WordmarkProps, Workflow, WorkflowEditor, type WorkflowEditorProps, type WorkflowPalette, WorkflowPipeline, type WorkflowPipelineProps, type WorkflowProps, type WorkflowSource, type WorkflowStep, type WorkflowStepLike, WorkflowStepNode, type WorkflowStepNodeProps, type WorkflowView, cn, computeRules, computeScore, feedbackButtonVariants, levelTone, resolveIcon, statValueVariants, statusBadgeVariants, useCopilot, useLanguage, useT };
|
package/dist/index.js
CHANGED
|
@@ -16008,6 +16008,264 @@ function PillButton({ className, variant = "flow", size = "lg", children, ...res
|
|
|
16008
16008
|
);
|
|
16009
16009
|
}
|
|
16010
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";
|
|
16011
16269
|
export {
|
|
16012
16270
|
Accordion,
|
|
16013
16271
|
AccordionContent,
|
|
@@ -16064,6 +16322,7 @@ export {
|
|
|
16064
16322
|
BreadcrumbSeparator,
|
|
16065
16323
|
Button,
|
|
16066
16324
|
Calendar,
|
|
16325
|
+
Callout,
|
|
16067
16326
|
Card,
|
|
16068
16327
|
CardContent,
|
|
16069
16328
|
CardDescription,
|
|
@@ -16098,6 +16357,7 @@ export {
|
|
|
16098
16357
|
CommandInputPrimitive,
|
|
16099
16358
|
CommandItem,
|
|
16100
16359
|
CommandList,
|
|
16360
|
+
CommandPalette,
|
|
16101
16361
|
CommandSeparator,
|
|
16102
16362
|
CommandShortcut,
|
|
16103
16363
|
ContextMenu,
|
|
@@ -16135,6 +16395,9 @@ export {
|
|
|
16135
16395
|
DialogTitle,
|
|
16136
16396
|
DialogTrigger,
|
|
16137
16397
|
DirectionalArrow,
|
|
16398
|
+
DocsLayout,
|
|
16399
|
+
DocsSidebar,
|
|
16400
|
+
DocsTOC,
|
|
16138
16401
|
Drawer,
|
|
16139
16402
|
DrawerClose,
|
|
16140
16403
|
DrawerContent,
|
|
@@ -16171,6 +16434,7 @@ export {
|
|
|
16171
16434
|
FeedbackButton,
|
|
16172
16435
|
FeedbackHub,
|
|
16173
16436
|
FeedbackWidget,
|
|
16437
|
+
FilterBar,
|
|
16174
16438
|
ForgotForm_default as ForgotForm,
|
|
16175
16439
|
Form,
|
|
16176
16440
|
FormControl,
|
|
@@ -16209,6 +16473,7 @@ export {
|
|
|
16209
16473
|
MarkdownEditor,
|
|
16210
16474
|
MarkdownRenderer,
|
|
16211
16475
|
MarkdownTable,
|
|
16476
|
+
MarketplaceCard,
|
|
16212
16477
|
Menubar,
|
|
16213
16478
|
MenubarCheckboxItem,
|
|
16214
16479
|
MenubarContent,
|
|
@@ -16242,6 +16507,7 @@ export {
|
|
|
16242
16507
|
OTPBoxGroup_default as OTPBoxGroup,
|
|
16243
16508
|
PIPELINE_STAGES,
|
|
16244
16509
|
PageHeader,
|
|
16510
|
+
Pager,
|
|
16245
16511
|
Pagination,
|
|
16246
16512
|
PaginationContent,
|
|
16247
16513
|
PaginationEllipsis,
|
|
@@ -16334,6 +16600,7 @@ export {
|
|
|
16334
16600
|
Slider,
|
|
16335
16601
|
SourceBadge,
|
|
16336
16602
|
StatCard,
|
|
16603
|
+
StatsRow,
|
|
16337
16604
|
StatusBadge,
|
|
16338
16605
|
StepOptionsDialog,
|
|
16339
16606
|
StreamingMessage_default as StreamingMessage,
|