@togo-framework/ui 0.1.4 → 0.1.6
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 +36 -1
- package/dist/index.js +137 -27
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -4088,4 +4088,39 @@ declare namespace CommandPalette {
|
|
|
4088
4088
|
var displayName: string;
|
|
4089
4089
|
}
|
|
4090
4090
|
|
|
4091
|
-
|
|
4091
|
+
interface TerminalStep {
|
|
4092
|
+
/** Command typed at the prompt (without the leading ❯). */
|
|
4093
|
+
cmd: string;
|
|
4094
|
+
/** Output lines streamed after the command. */
|
|
4095
|
+
out?: string[];
|
|
4096
|
+
}
|
|
4097
|
+
interface TypingTerminalProps {
|
|
4098
|
+
steps: TerminalStep[];
|
|
4099
|
+
/** Revealed after the last step finishes (e.g. an app screenshot/mock). */
|
|
4100
|
+
endSlot?: React$1.ReactNode;
|
|
4101
|
+
title?: string;
|
|
4102
|
+
className?: string;
|
|
4103
|
+
/** ms per typed character. */
|
|
4104
|
+
typeMs?: number;
|
|
4105
|
+
/** ms between streamed output lines. */
|
|
4106
|
+
lineMs?: number;
|
|
4107
|
+
/** Loop the playback (default true). */
|
|
4108
|
+
loop?: boolean;
|
|
4109
|
+
}
|
|
4110
|
+
declare function TypingTerminal({ steps, endSlot, title, className, typeMs, lineMs, loop }: TypingTerminalProps): React$1.JSX.Element;
|
|
4111
|
+
declare namespace TypingTerminal {
|
|
4112
|
+
var displayName: string;
|
|
4113
|
+
}
|
|
4114
|
+
|
|
4115
|
+
interface MascotMarkProps {
|
|
4116
|
+
/** Source of the head mark SVG (defaults to /togo-mark.svg). */
|
|
4117
|
+
src?: string;
|
|
4118
|
+
alt?: string;
|
|
4119
|
+
className?: string;
|
|
4120
|
+
}
|
|
4121
|
+
declare function MascotMark({ src, alt, className }: MascotMarkProps): React$1.JSX.Element;
|
|
4122
|
+
declare namespace MascotMark {
|
|
4123
|
+
var displayName: string;
|
|
4124
|
+
}
|
|
4125
|
+
|
|
4126
|
+
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, MascotMark, type MascotMarkProps, 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 TerminalStep, type TestRunCallbacks, type TestRunCompletePayload, TestRunPanel, type TestRunPanelProps, type TestRunSavedItem, type TestRunStep, type TocItem, TwoFAForm, TypingTerminal, type TypingTerminalProps, 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
|
@@ -1427,8 +1427,8 @@ var BrandCrest = ({
|
|
|
1427
1427
|
const crestChrome = cn(
|
|
1428
1428
|
"flex items-center justify-center rounded-2xl",
|
|
1429
1429
|
box,
|
|
1430
|
-
onPanel ? "border-2 border-
|
|
1431
|
-
onPanel ? "text-
|
|
1430
|
+
onPanel ? "border-2 border-white/30 bg-white/10" : "bg-primary/10",
|
|
1431
|
+
onPanel ? "text-white" : "text-primary"
|
|
1432
1432
|
);
|
|
1433
1433
|
if (brand.icon !== null && brand.icon !== void 0) {
|
|
1434
1434
|
return /* @__PURE__ */ jsx11("div", { className: crestChrome, "aria-hidden": "true", children: brand.icon });
|
|
@@ -1436,36 +1436,36 @@ var BrandCrest = ({
|
|
|
1436
1436
|
return /* @__PURE__ */ jsx11("div", { className: crestChrome, children: /* @__PURE__ */ jsx11("span", { className: cn("font-bold tracking-tight", text), children: brand.initial }) });
|
|
1437
1437
|
};
|
|
1438
1438
|
BrandCrest.displayName = "BrandCrest";
|
|
1439
|
-
var BrandPanel = ({ brand, ar }) => /* @__PURE__ */ jsxs10("div", { className: "relative hidden lg:flex lg:w-1/2 flex-col items-center justify-center overflow-hidden px-12 py-16 bg-
|
|
1439
|
+
var BrandPanel = ({ brand, ar }) => /* @__PURE__ */ jsxs10("div", { className: "relative hidden lg:flex lg:w-1/2 flex-col items-center justify-center overflow-hidden px-12 py-16 bg-gradient-to-br from-[#1FC7DC] via-[#2D8CE6] to-[#1659C8]", children: [
|
|
1440
1440
|
/* @__PURE__ */ jsx11(
|
|
1441
1441
|
"div",
|
|
1442
1442
|
{
|
|
1443
1443
|
className: "absolute inset-0 opacity-[0.08]",
|
|
1444
1444
|
style: {
|
|
1445
|
-
backgroundImage: "radial-gradient(circle,
|
|
1445
|
+
backgroundImage: "radial-gradient(circle, #ffffff 1px, transparent 1px)",
|
|
1446
1446
|
backgroundSize: "24px 24px"
|
|
1447
1447
|
},
|
|
1448
1448
|
"aria-hidden": "true"
|
|
1449
1449
|
}
|
|
1450
1450
|
),
|
|
1451
|
-
/* @__PURE__ */ jsxs10("div", { className: "relative z-10 flex w-full max-w-sm flex-col items-center gap-7 text-center text-
|
|
1451
|
+
/* @__PURE__ */ jsxs10("div", { className: "relative z-10 flex w-full max-w-sm flex-col items-center gap-7 text-center text-white", children: [
|
|
1452
1452
|
/* @__PURE__ */ jsx11(BrandCrest, { brand, size: "lg", onPanel: true }),
|
|
1453
1453
|
/* @__PURE__ */ jsxs10("div", { className: "flex flex-col gap-2.5", children: [
|
|
1454
1454
|
/* @__PURE__ */ jsx11("h1", { className: "text-[2rem] font-bold leading-tight tracking-tight", children: brandName(brand, ar) }),
|
|
1455
|
-
/* @__PURE__ */ jsx11("p", { className: "text-sm leading-relaxed text-
|
|
1455
|
+
/* @__PURE__ */ jsx11("p", { className: "text-sm leading-relaxed text-white/75", children: ar ? brand.tagline.ar : brand.tagline.en })
|
|
1456
1456
|
] }),
|
|
1457
|
-
brand.bullets.length > 0 && /* @__PURE__ */ jsx11("ul", { className: "mt-1 flex w-full flex-col items-center gap-3.5 text-center text-sm text-
|
|
1457
|
+
brand.bullets.length > 0 && /* @__PURE__ */ jsx11("ul", { className: "mt-1 flex w-full flex-col items-center gap-3.5 text-center text-sm text-white/85", children: brand.bullets.map((bullet, i) => /* @__PURE__ */ jsxs10("li", { className: "flex items-center justify-center gap-2.5", children: [
|
|
1458
1458
|
/* @__PURE__ */ jsx11(
|
|
1459
1459
|
"span",
|
|
1460
1460
|
{
|
|
1461
|
-
className: "flex h-4 w-4 shrink-0 items-center justify-center rounded-full bg-
|
|
1461
|
+
className: "flex h-4 w-4 shrink-0 items-center justify-center rounded-full bg-white/15",
|
|
1462
1462
|
"aria-hidden": "true",
|
|
1463
1463
|
children: /* @__PURE__ */ jsx11("svg", { className: "h-2.5 w-2.5", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "3", children: /* @__PURE__ */ jsx11("path", { d: "M20 6 9 17l-5-5" }) })
|
|
1464
1464
|
}
|
|
1465
1465
|
),
|
|
1466
1466
|
/* @__PURE__ */ jsx11("span", { className: "leading-snug", children: ar ? bullet.ar : bullet.en })
|
|
1467
1467
|
] }, i)) }),
|
|
1468
|
-
/* @__PURE__ */ jsxs10("div", { className: "mt-3 flex items-center gap-2 text-xs text-
|
|
1468
|
+
/* @__PURE__ */ jsxs10("div", { className: "mt-3 flex items-center gap-2 text-xs text-white/55", children: [
|
|
1469
1469
|
/* @__PURE__ */ jsxs10("svg", { className: "h-3.5 w-3.5", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", "aria-hidden": "true", children: [
|
|
1470
1470
|
/* @__PURE__ */ jsx11("rect", { x: "3", y: "11", width: "18", height: "11", rx: "2", ry: "2" }),
|
|
1471
1471
|
/* @__PURE__ */ jsx11("path", { d: "M7 11V7a5 5 0 0 1 10 0v4" })
|
|
@@ -16027,7 +16027,7 @@ function MarketplaceCard({
|
|
|
16027
16027
|
enabled,
|
|
16028
16028
|
className
|
|
16029
16029
|
}) {
|
|
16030
|
-
return /* @__PURE__ */ jsx99("a", { href, className: cn("group block h-full", className), children: /* @__PURE__ */ jsxs87(
|
|
16030
|
+
return /* @__PURE__ */ jsx99("a", { href, className: cn("group block h-full", className), children: /* @__PURE__ */ jsxs87("div", { className: "rounded-2xl border border-border bg-card/40 overflow-hidden h-full flex flex-col transition-all duration-200 hover:border-foreground/25 hover:-translate-y-0.5", children: [
|
|
16031
16031
|
/* @__PURE__ */ jsxs87(
|
|
16032
16032
|
"div",
|
|
16033
16033
|
{
|
|
@@ -16035,7 +16035,7 @@ function MarketplaceCard({
|
|
|
16035
16035
|
style: { background: `radial-gradient(120% 140% at 0% 0%, ${categoryColor}55, transparent 62%), linear-gradient(135deg, ${categoryColor}26, #0b1016)` },
|
|
16036
16036
|
children: [
|
|
16037
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-
|
|
16038
|
+
Icon && /* @__PURE__ */ jsx99("div", { className: "relative grid place-items-center w-14 h-14 rounded-2xl bg-black/20 ring-1 ring-white/20 transition-transform duration-300 group-hover:scale-105", children: /* @__PURE__ */ jsx99(Icon, { size: 28, style: { color: "#fff" } }) }),
|
|
16039
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
16040
|
]
|
|
16041
16041
|
}
|
|
@@ -16043,7 +16043,7 @@ function MarketplaceCard({
|
|
|
16043
16043
|
/* @__PURE__ */ jsxs87("div", { className: "p-5 flex flex-col flex-1", children: [
|
|
16044
16044
|
/* @__PURE__ */ jsxs87("div", { className: "flex items-center gap-2", children: [
|
|
16045
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-
|
|
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-border text-muted-foreground", children: category })
|
|
16047
16047
|
] }),
|
|
16048
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
16049
|
/* @__PURE__ */ jsxs87("div", { className: "flex items-center gap-3 mt-3 text-[11px] text-muted-foreground font-mono", children: [
|
|
@@ -16066,7 +16066,7 @@ function MarketplaceCard({
|
|
|
16066
16066
|
}
|
|
16067
16067
|
MarketplaceCard.displayName = "MarketplaceCard";
|
|
16068
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-
|
|
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-border bg-card/40 px-4 sm:px-5 py-4 text-center", children: [
|
|
16070
16070
|
/* @__PURE__ */ jsx99("div", { className: "text-[10px] font-mono uppercase tracking-[0.16em] text-muted-foreground/70", children: s.label }),
|
|
16071
16071
|
/* @__PURE__ */ jsx99("div", { style: DISPLAY3, className: "text-2xl sm:text-3xl font-bold mt-1", children: s.value })
|
|
16072
16072
|
] }, i)) });
|
|
@@ -16083,7 +16083,7 @@ function FilterBar({ search, onSearch, chips, active, onChip, sort, searchPlaceh
|
|
|
16083
16083
|
value: search,
|
|
16084
16084
|
onChange: (e) => onSearch(e.target.value),
|
|
16085
16085
|
placeholder: searchPlaceholder,
|
|
16086
|
-
className: "w-full h-11 ps-10 pe-4 rounded-full border border-
|
|
16086
|
+
className: "w-full h-11 ps-10 pe-4 rounded-full border border-border bg-card/40 text-sm outline-none focus:border-[color:rgba(31,199,220,.5)] transition-colors"
|
|
16087
16087
|
}
|
|
16088
16088
|
)
|
|
16089
16089
|
] }),
|
|
@@ -16092,7 +16092,7 @@ function FilterBar({ search, onSearch, chips, active, onChip, sort, searchPlaceh
|
|
|
16092
16092
|
{
|
|
16093
16093
|
value: sort.value,
|
|
16094
16094
|
onChange: (e) => sort.onSort(e.target.value),
|
|
16095
|
-
className: "h-11 px-4 rounded-full border border-
|
|
16095
|
+
className: "h-11 px-4 rounded-full border border-border bg-card/40 text-sm outline-none cursor-pointer",
|
|
16096
16096
|
children: sort.options.map((o) => /* @__PURE__ */ jsx99("option", { value: o.value, className: "bg-[#0b1016]", children: o.label }, o.value))
|
|
16097
16097
|
}
|
|
16098
16098
|
)
|
|
@@ -16105,7 +16105,7 @@ function FilterBar({ search, onSearch, chips, active, onChip, sort, searchPlaceh
|
|
|
16105
16105
|
onClick: () => onChip(c.value),
|
|
16106
16106
|
className: cn(
|
|
16107
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-
|
|
16108
|
+
on ? "border-[color:rgba(31,199,220,.5)] text-[#5CDDEC] bg-[color:rgba(31,199,220,.08)]" : "border-border text-muted-foreground hover:text-foreground hover:bg-card/40"
|
|
16109
16109
|
),
|
|
16110
16110
|
children: [
|
|
16111
16111
|
c.label,
|
|
@@ -16126,12 +16126,12 @@ function Pager({ page, pages, onPage, className }) {
|
|
|
16126
16126
|
const nums = Array.from({ length: pages }, (_, i) => i + 1).filter((n) => n === 1 || n === pages || Math.abs(n - page) <= 1);
|
|
16127
16127
|
const btn = "min-w-9 h-9 px-2 rounded-full border text-sm font-mono transition-colors";
|
|
16128
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-
|
|
16129
|
+
/* @__PURE__ */ jsx99("button", { disabled: page <= 1, onClick: () => onPage(page - 1), className: cn(btn, "border-border text-muted-foreground hover:text-foreground disabled:opacity-30"), children: "\u2039" }),
|
|
16130
16130
|
nums.map((n, i) => /* @__PURE__ */ jsxs87(React30.Fragment, { children: [
|
|
16131
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-
|
|
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-border text-muted-foreground hover:text-foreground"), children: n })
|
|
16133
16133
|
] }, n)),
|
|
16134
|
-
/* @__PURE__ */ jsx99("button", { disabled: page >= pages, onClick: () => onPage(page + 1), className: cn(btn, "border-
|
|
16134
|
+
/* @__PURE__ */ jsx99("button", { disabled: page >= pages, onClick: () => onPage(page + 1), className: cn(btn, "border-border text-muted-foreground hover:text-foreground disabled:opacity-30"), children: "\u203A" })
|
|
16135
16135
|
] });
|
|
16136
16136
|
}
|
|
16137
16137
|
Pager.displayName = "Pager";
|
|
@@ -16170,7 +16170,7 @@ function DocsGroup({ group, activeHref, defaultOpen, onNavigate }) {
|
|
|
16170
16170
|
/* @__PURE__ */ jsx100(ChevronRight9, { size: 12, className: cn("transition-transform", open && "rotate-90") }),
|
|
16171
16171
|
group.label
|
|
16172
16172
|
] }),
|
|
16173
|
-
open && /* @__PURE__ */ jsx100("ul", { className: "mt-0.5 mb-2 ms-3 border-s border-
|
|
16173
|
+
open && /* @__PURE__ */ jsx100("ul", { className: "mt-0.5 mb-2 ms-3 border-s border-border", children: group.items.map((i) => {
|
|
16174
16174
|
const on = i.href === activeHref;
|
|
16175
16175
|
return /* @__PURE__ */ jsx100("li", { children: /* @__PURE__ */ jsx100(
|
|
16176
16176
|
"a",
|
|
@@ -16208,7 +16208,7 @@ function DocsTOC({ items, className }) {
|
|
|
16208
16208
|
if (!items.length) return null;
|
|
16209
16209
|
return /* @__PURE__ */ jsxs88("nav", { className: cn("text-sm", className), children: [
|
|
16210
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-
|
|
16211
|
+
/* @__PURE__ */ jsx100("ul", { className: "border-s border-border", 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
16212
|
] });
|
|
16213
16213
|
}
|
|
16214
16214
|
DocsTOC.displayName = "DocsTOC";
|
|
@@ -16242,20 +16242,20 @@ function CommandPalette({ items, placeholder = "Search docs & plugins\u2026", cl
|
|
|
16242
16242
|
}, []);
|
|
16243
16243
|
const results = q ? items.filter((i) => (i.label + " " + (i.sublabel || "")).toLowerCase().includes(q.toLowerCase())).slice(0, 40) : items.slice(0, 24);
|
|
16244
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-
|
|
16245
|
+
/* @__PURE__ */ jsxs88("button", { onClick: () => setOpen(true), className: cn("inline-flex items-center gap-2 h-9 px-3 rounded-full border border-border bg-card/40 text-sm text-muted-foreground hover:text-foreground transition-colors", className), children: [
|
|
16246
16246
|
/* @__PURE__ */ jsx100(Search9, { size: 14 }),
|
|
16247
16247
|
" ",
|
|
16248
16248
|
/* @__PURE__ */ jsx100("span", { className: "hidden sm:inline", children: "Search" }),
|
|
16249
|
-
/* @__PURE__ */ jsx100("kbd", { className: "hidden sm:inline font-mono text-[10px] border border-
|
|
16249
|
+
/* @__PURE__ */ jsx100("kbd", { className: "hidden sm:inline font-mono text-[10px] border border-border rounded px-1 py-0.5", children: "\u2318K" })
|
|
16250
16250
|
] }),
|
|
16251
|
-
open && /* @__PURE__ */ jsx100("div", { className: "fixed inset-0 z-[100] flex items-start justify-center pt-[12vh] bg-black/60
|
|
16252
|
-
/* @__PURE__ */ jsxs88("div", { className: "flex items-center gap-3 px-4 border-b border-
|
|
16251
|
+
open && /* @__PURE__ */ jsx100("div", { className: "fixed inset-0 z-[100] flex items-start justify-center pt-[12vh] bg-black/60", onClick: () => setOpen(false), children: /* @__PURE__ */ jsxs88("div", { className: "w-full max-w-xl mx-4 rounded-2xl border border-border bg-card 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-border", children: [
|
|
16253
16253
|
/* @__PURE__ */ jsx100(Search9, { size: 16, className: "text-muted-foreground" }),
|
|
16254
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-
|
|
16255
|
+
/* @__PURE__ */ jsx100("kbd", { className: "font-mono text-[10px] text-muted-foreground border border-border rounded px-1", children: "esc" })
|
|
16256
16256
|
] }),
|
|
16257
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-
|
|
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-card/40", children: [
|
|
16259
16259
|
/* @__PURE__ */ jsx100("span", { className: "text-sm truncate", children: r.label }),
|
|
16260
16260
|
r.sublabel && /* @__PURE__ */ jsx100("span", { className: "text-xs text-muted-foreground truncate min-w-0", children: r.sublabel }),
|
|
16261
16261
|
r.group && /* @__PURE__ */ jsx100("span", { className: "ms-auto shrink-0 text-[10px] font-mono uppercase text-muted-foreground/60", children: r.group })
|
|
@@ -16266,6 +16266,114 @@ function CommandPalette({ items, placeholder = "Search docs & plugins\u2026", cl
|
|
|
16266
16266
|
] });
|
|
16267
16267
|
}
|
|
16268
16268
|
CommandPalette.displayName = "CommandPalette";
|
|
16269
|
+
|
|
16270
|
+
// src/components/marketing/Terminal.tsx
|
|
16271
|
+
import * as React32 from "react";
|
|
16272
|
+
import { jsx as jsx101, jsxs as jsxs89 } from "react/jsx-runtime";
|
|
16273
|
+
function fullFrame(steps) {
|
|
16274
|
+
const lines = [];
|
|
16275
|
+
steps.forEach((s, i) => {
|
|
16276
|
+
lines.push(
|
|
16277
|
+
/* @__PURE__ */ jsxs89("div", { className: "whitespace-pre-wrap break-words", children: [
|
|
16278
|
+
/* @__PURE__ */ jsx101("span", { className: "text-[#5CDDEC]", children: "\u276F " }),
|
|
16279
|
+
/* @__PURE__ */ jsx101("span", { className: "text-foreground", children: s.cmd })
|
|
16280
|
+
] }, `c${i}`)
|
|
16281
|
+
);
|
|
16282
|
+
(s.out || []).forEach((l, j) => lines.push(/* @__PURE__ */ jsx101("div", { className: "whitespace-pre-wrap break-words text-muted-foreground", children: l }, `o${i}-${j}`)));
|
|
16283
|
+
});
|
|
16284
|
+
return { lines, showEnd: true };
|
|
16285
|
+
}
|
|
16286
|
+
var keepStaticFrame = () => typeof window !== "undefined" && (window.matchMedia?.("(prefers-reduced-motion: reduce)").matches || navigator?.webdriver === true);
|
|
16287
|
+
function TypingTerminal({ steps, endSlot, title = "~/myapp \u2014 togo", className, typeMs = 26, lineMs = 110, loop = true }) {
|
|
16288
|
+
const [frame, setFrame] = React32.useState(() => fullFrame(steps));
|
|
16289
|
+
const scrollRef = React32.useRef(null);
|
|
16290
|
+
React32.useEffect(() => {
|
|
16291
|
+
if (keepStaticFrame()) return;
|
|
16292
|
+
let alive = true;
|
|
16293
|
+
const timers = [];
|
|
16294
|
+
const wait = (ms) => new Promise((res) => timers.push(setTimeout(res, ms)));
|
|
16295
|
+
async function run() {
|
|
16296
|
+
while (alive) {
|
|
16297
|
+
const lines = [];
|
|
16298
|
+
setFrame({ lines: [], showEnd: false });
|
|
16299
|
+
for (let i = 0; i < steps.length && alive; i++) {
|
|
16300
|
+
const s = steps[i];
|
|
16301
|
+
for (let c = 1; c <= s.cmd.length && alive; c++) {
|
|
16302
|
+
const typed = s.cmd.slice(0, c);
|
|
16303
|
+
setFrame({
|
|
16304
|
+
lines: [...lines, /* @__PURE__ */ jsxs89("div", { className: "whitespace-pre-wrap break-words", children: [
|
|
16305
|
+
/* @__PURE__ */ jsx101("span", { className: "text-[#5CDDEC]", children: "\u276F " }),
|
|
16306
|
+
/* @__PURE__ */ jsx101("span", { className: "text-foreground", children: typed }),
|
|
16307
|
+
/* @__PURE__ */ jsx101("span", { className: "ml-0.5 inline-block w-2 -mb-0.5 h-4 bg-[#5CDDEC] animate-pulse" })
|
|
16308
|
+
] }, `c${i}`)],
|
|
16309
|
+
showEnd: false
|
|
16310
|
+
});
|
|
16311
|
+
await wait(typeMs);
|
|
16312
|
+
}
|
|
16313
|
+
lines.push(/* @__PURE__ */ jsxs89("div", { className: "whitespace-pre-wrap break-words", children: [
|
|
16314
|
+
/* @__PURE__ */ jsx101("span", { className: "text-[#5CDDEC]", children: "\u276F " }),
|
|
16315
|
+
/* @__PURE__ */ jsx101("span", { className: "text-foreground", children: s.cmd })
|
|
16316
|
+
] }, `c${i}`));
|
|
16317
|
+
await wait(220);
|
|
16318
|
+
for (let j = 0; j < (s.out?.length || 0) && alive; j++) {
|
|
16319
|
+
lines.push(/* @__PURE__ */ jsx101("div", { className: "whitespace-pre-wrap break-words text-muted-foreground", children: s.out[j] }, `o${i}-${j}`));
|
|
16320
|
+
setFrame({ lines: [...lines], showEnd: false });
|
|
16321
|
+
if (scrollRef.current) scrollRef.current.scrollTop = scrollRef.current.scrollHeight;
|
|
16322
|
+
await wait(lineMs);
|
|
16323
|
+
}
|
|
16324
|
+
}
|
|
16325
|
+
if (!alive) return;
|
|
16326
|
+
setFrame({ lines: [...lines], showEnd: true });
|
|
16327
|
+
if (scrollRef.current) scrollRef.current.scrollTop = scrollRef.current.scrollHeight;
|
|
16328
|
+
if (!loop) return;
|
|
16329
|
+
await wait(4200);
|
|
16330
|
+
}
|
|
16331
|
+
}
|
|
16332
|
+
run();
|
|
16333
|
+
return () => {
|
|
16334
|
+
alive = false;
|
|
16335
|
+
timers.forEach(clearTimeout);
|
|
16336
|
+
};
|
|
16337
|
+
}, [steps, typeMs, lineMs, loop]);
|
|
16338
|
+
return /* @__PURE__ */ jsxs89("div", { className: cn("rounded-2xl border border-border overflow-hidden bg-[#080b0f] shadow-2xl", className), children: [
|
|
16339
|
+
/* @__PURE__ */ jsxs89("div", { className: "flex items-center gap-2 px-4 py-3 border-b border-border", children: [
|
|
16340
|
+
/* @__PURE__ */ jsx101("span", { className: "w-3 h-3 rounded-full bg-[#ff5f57]" }),
|
|
16341
|
+
/* @__PURE__ */ jsx101("span", { className: "w-3 h-3 rounded-full bg-[#febc2e]" }),
|
|
16342
|
+
/* @__PURE__ */ jsx101("span", { className: "w-3 h-3 rounded-full bg-[#28c840]" }),
|
|
16343
|
+
/* @__PURE__ */ jsx101("span", { className: "ms-2 font-mono text-xs text-muted-foreground", children: title })
|
|
16344
|
+
] }),
|
|
16345
|
+
/* @__PURE__ */ jsxs89("div", { ref: scrollRef, className: "p-5 font-mono text-[12.5px] sm:text-[13px] leading-[1.9] max-h-[340px] overflow-auto", children: [
|
|
16346
|
+
frame.lines,
|
|
16347
|
+
frame.showEnd && endSlot ? /* @__PURE__ */ jsx101("div", { className: "mt-4 pt-4 border-t border-white/10", children: endSlot }) : null
|
|
16348
|
+
] })
|
|
16349
|
+
] });
|
|
16350
|
+
}
|
|
16351
|
+
TypingTerminal.displayName = "TypingTerminal";
|
|
16352
|
+
|
|
16353
|
+
// src/components/marketing/MascotMark.tsx
|
|
16354
|
+
import { jsx as jsx102, jsxs as jsxs90 } from "react/jsx-runtime";
|
|
16355
|
+
var KEYFRAMES = `
|
|
16356
|
+
@keyframes tgMascotFloat { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-12px)} }
|
|
16357
|
+
@keyframes tgMascotChar {
|
|
16358
|
+
0%,100% { transform: rotate(0deg) scaleX(1) scaleY(1); }
|
|
16359
|
+
44% { transform: rotate(0deg) scaleX(1) scaleY(1); }
|
|
16360
|
+
48% { transform: rotate(-3deg) scaleX(1.04) scaleY(0.92); } /* squash nod */
|
|
16361
|
+
52% { transform: rotate(-3deg) scaleX(0.98) scaleY(1.05); } /* stretch */
|
|
16362
|
+
60% { transform: rotate(3deg) scaleX(1) scaleY(1); }
|
|
16363
|
+
72% { transform: rotate(0deg) scaleX(1) scaleY(1); }
|
|
16364
|
+
}
|
|
16365
|
+
.tg-mascot { will-change: transform; animation: tgMascotFloat 6s ease-in-out infinite; }
|
|
16366
|
+
.tg-mascot > img { display:block; width:100%; height:100%; transform-origin: 50% 70%; animation: tgMascotChar 5.5s ease-in-out infinite; }
|
|
16367
|
+
@media (prefers-reduced-motion: reduce) {
|
|
16368
|
+
.tg-mascot, .tg-mascot > img { animation: none !important; }
|
|
16369
|
+
}`;
|
|
16370
|
+
function MascotMark({ src = "/togo-mark.svg", alt = "ToGO", className }) {
|
|
16371
|
+
return /* @__PURE__ */ jsxs90("div", { className: cn("tg-mascot", className), children: [
|
|
16372
|
+
/* @__PURE__ */ jsx102("style", { children: KEYFRAMES }),
|
|
16373
|
+
/* @__PURE__ */ jsx102("img", { src, alt, draggable: false })
|
|
16374
|
+
] });
|
|
16375
|
+
}
|
|
16376
|
+
MascotMark.displayName = "MascotMark";
|
|
16269
16377
|
export {
|
|
16270
16378
|
Accordion,
|
|
16271
16379
|
AccordionContent,
|
|
@@ -16474,6 +16582,7 @@ export {
|
|
|
16474
16582
|
MarkdownRenderer,
|
|
16475
16583
|
MarkdownTable,
|
|
16476
16584
|
MarketplaceCard,
|
|
16585
|
+
MascotMark,
|
|
16477
16586
|
Menubar,
|
|
16478
16587
|
MenubarCheckboxItem,
|
|
16479
16588
|
MenubarContent,
|
|
@@ -16629,6 +16738,7 @@ export {
|
|
|
16629
16738
|
TooltipProvider,
|
|
16630
16739
|
TooltipTrigger,
|
|
16631
16740
|
TwoFAForm_default as TwoFAForm,
|
|
16741
|
+
TypingTerminal,
|
|
16632
16742
|
UnifiedCopilotDock_default as UnifiedCopilotDock,
|
|
16633
16743
|
ViewToggle,
|
|
16634
16744
|
Wordmark,
|