larkup 0.1.28 → 0.1.29
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/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +5 -5
- package/.next/diagnostics/route-bundle-stats.json +25 -25
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/next-minimal-server.js.nft.json +1 -1
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +3 -3
- package/.next/required-server-files.js +4 -4
- package/.next/required-server-files.json +4 -4
- package/.next/server/app/_global-error/page/build-manifest.json +2 -2
- package/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page/build-manifest.json +2 -2
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +16 -16
- package/.next/server/app/_not-found.segments/_full.segment.rsc +16 -16
- package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/.next/server/app/_not-found.segments/_index.segment.rsc +11 -11
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/analytics/page/build-manifest.json +2 -2
- package/.next/server/app/analytics/page.js.nft.json +1 -1
- package/.next/server/app/analytics/page_client-reference-manifest.js +1 -1
- package/.next/server/app/analytics.html +1 -1
- package/.next/server/app/analytics.rsc +17 -17
- package/.next/server/app/analytics.segments/_full.segment.rsc +17 -17
- package/.next/server/app/analytics.segments/_head.segment.rsc +4 -4
- package/.next/server/app/analytics.segments/_index.segment.rsc +11 -11
- package/.next/server/app/analytics.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/analytics.segments/analytics/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/analytics.segments/analytics.segment.rsc +3 -3
- package/.next/server/app/api/analytics/route.js.nft.json +1 -1
- package/.next/server/app/api/chat/route.js +8 -9
- package/.next/server/app/api/chat/route.js.nft.json +1 -1
- package/.next/server/app/api/chat/status/route.js.nft.json +1 -1
- package/.next/server/app/api/chat/suggestions/route.js.nft.json +1 -1
- package/.next/server/app/api/config/route.js.nft.json +1 -1
- package/.next/server/app/api/config/test/route.js.nft.json +1 -1
- package/.next/server/app/api/config/test-embedding/route.js.nft.json +1 -1
- package/.next/server/app/api/config/test-llm/route.js.nft.json +1 -1
- package/.next/server/app/api/config/test-provider/route.js.nft.json +1 -1
- package/.next/server/app/api/config/verify/route.js.nft.json +1 -1
- package/.next/server/app/api/connections/route.js.nft.json +1 -1
- package/.next/server/app/api/connections/webhook/route.js.nft.json +1 -1
- package/.next/server/app/api/demo/route.js.nft.json +1 -1
- package/.next/server/app/api/deploy/cloud-project/route.js.nft.json +1 -1
- package/.next/server/app/api/deploy/ssh/route.js.nft.json +1 -1
- package/.next/server/app/api/deployment/blob-setup/route.js.nft.json +1 -1
- package/.next/server/app/api/deployment/config/route.js.nft.json +1 -1
- package/.next/server/app/api/describe-image/route.js.nft.json +1 -1
- package/.next/server/app/api/doc-editor/edit/route.js.nft.json +1 -1
- package/.next/server/app/api/doc-editor/export/route.js.nft.json +1 -1
- package/.next/server/app/api/doc-editor/extract-text/route.js.nft.json +1 -1
- package/.next/server/app/api/doc-editor/parse/route.js.nft.json +1 -1
- package/.next/server/app/api/doc-editor/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/document/sign/route.js.nft.json +1 -1
- package/.next/server/app/api/documents/route.js.nft.json +1 -1
- package/.next/server/app/api/firecrawl/local/route.js.nft.json +1 -1
- package/.next/server/app/api/index/route.js.nft.json +1 -1
- package/.next/server/app/api/integrations/notion/callback/route.js.nft.json +1 -1
- package/.next/server/app/api/integrations/notion/route.js.nft.json +1 -1
- package/.next/server/app/api/jobs/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/jobs/route.js.nft.json +1 -1
- package/.next/server/app/api/marketplace/[toolId]/route.js +1 -1
- package/.next/server/app/api/marketplace/[toolId]/route.js.nft.json +1 -1
- package/.next/server/app/api/marketplace/route.js +1 -1
- package/.next/server/app/api/marketplace/route.js.nft.json +1 -1
- package/.next/server/app/api/media/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/media/process/route.js +2 -2
- package/.next/server/app/api/media/process/route.js.nft.json +1 -1
- package/.next/server/app/api/media/route.js +1 -1
- package/.next/server/app/api/media/route.js.nft.json +1 -1
- package/.next/server/app/api/media/stream/route.js.nft.json +1 -1
- package/.next/server/app/api/models/route.js.nft.json +1 -1
- package/.next/server/app/api/parse-file/route.js.nft.json +1 -1
- package/.next/server/app/api/proxy/verify/route.js.nft.json +1 -1
- package/.next/server/app/api/sandbox/route.js.nft.json +1 -1
- package/.next/server/app/api/search/bing/route.js.nft.json +1 -1
- package/.next/server/app/api/search/brave/route.js.nft.json +1 -1
- package/.next/server/app/api/search/exa/route.js.nft.json +1 -1
- package/.next/server/app/api/search/google/route.js.nft.json +1 -1
- package/.next/server/app/api/search/route.js.nft.json +1 -1
- package/.next/server/app/api/search/tavily/route.js.nft.json +1 -1
- package/.next/server/app/api/search/verify/route.js.nft.json +1 -1
- package/.next/server/app/api/server/agent/route.js.nft.json +1 -1
- package/.next/server/app/api/server/download/route.js.nft.json +1 -1
- package/.next/server/app/api/server/generate/route.js.nft.json +1 -1
- package/.next/server/app/api/server/local/route.js.nft.json +1 -1
- package/.next/server/app/api/servers/route.js.nft.json +1 -1
- package/.next/server/app/api/tabular/query/route.js.nft.json +1 -1
- package/.next/server/app/api/tabular/route.js.nft.json +1 -1
- package/.next/server/app/api/upload-file/route.js.nft.json +1 -1
- package/.next/server/app/api/uploads/[...slug]/route.js.nft.json +1 -1
- package/.next/server/app/api/vector-stores/install/route.js.nft.json +1 -1
- package/.next/server/app/api/vector-stores/status/route.js.nft.json +1 -1
- package/.next/server/app/chat/page/build-manifest.json +2 -2
- package/.next/server/app/chat/page.js.nft.json +1 -1
- package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/chat.html +1 -1
- package/.next/server/app/chat.rsc +17 -17
- package/.next/server/app/chat.segments/_full.segment.rsc +17 -17
- package/.next/server/app/chat.segments/_head.segment.rsc +4 -4
- package/.next/server/app/chat.segments/_index.segment.rsc +11 -11
- package/.next/server/app/chat.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/chat.segments/chat.segment.rsc +3 -3
- package/.next/server/app/data/page/build-manifest.json +2 -2
- package/.next/server/app/data/page.js.nft.json +1 -1
- package/.next/server/app/data/page_client-reference-manifest.js +1 -1
- package/.next/server/app/data.html +1 -1
- package/.next/server/app/data.rsc +17 -17
- package/.next/server/app/data.segments/_full.segment.rsc +17 -17
- package/.next/server/app/data.segments/_head.segment.rsc +4 -4
- package/.next/server/app/data.segments/_index.segment.rsc +11 -11
- package/.next/server/app/data.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/data.segments/data/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/data.segments/data.segment.rsc +3 -3
- package/.next/server/app/favicon.ico/route.js.nft.json +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +16 -16
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +16 -16
- package/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/.next/server/app/index.segments/_index.segment.rsc +11 -11
- package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/page/build-manifest.json +2 -2
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page/build-manifest.json +2 -2
- package/.next/server/app/settings/page/server-reference-manifest.json +3 -3
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +18 -18
- package/.next/server/app/settings.segments/_full.segment.rsc +18 -18
- package/.next/server/app/settings.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings.segments/_index.segment.rsc +11 -11
- package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings.segments/settings.segment.rsc +3 -3
- package/.next/server/chunks/[root-of-the-server]__0c80bj0._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__1m7m2x7._.js → [root-of-the-server]__0drkoru._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__0vnm6_8._.js → [root-of-the-server]__0kmh740._.js} +6 -6
- package/.next/server/chunks/{[root-of-the-server]__0ou70-v._.js → [root-of-the-server]__0nfenje._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__0omd-x0._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__1s1zui-._.js → [root-of-the-server]__10v5qsi._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__1idgvjh._.js +172 -0
- package/.next/server/chunks/[root-of-the-server]__1ip05r1._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1jc54o2._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0748x7h._.js → [root-of-the-server]__1lhls88._.js} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__0g_q-44._.js → [root-of-the-server]__1wy6wes._.js} +2 -2
- package/.next/server/chunks/{packages_1f4dx4h._.js → packages_1ggqion._.js} +2 -2
- package/.next/server/chunks/packages_marketplace_src_125_g2p._.js +1 -1
- package/.next/server/chunks/{packages_vector-stores_src_064-9ay._.js → packages_vector-stores_src_1fib7u-._.js} +2 -2
- package/.next/server/chunks/ssr/_169pdlf._.js +2 -2
- package/.next/server/chunks/ssr/_1hetwwu._.js +2 -2
- package/.next/server/chunks/ssr/_1iff9ia._.js +1 -1
- package/.next/server/chunks/ssr/_1yqlx1m._.js +1 -1
- package/.next/server/chunks/ssr/apps_web_lib_pdf-images_ts_13-l5wa._.js +1 -1
- package/.next/server/middleware-build-manifest.js +5 -5
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +4 -4
- package/.next/static/chunks/{13hmtkhrbm4t3.js → 01qmngac69n9j.js} +1 -1
- package/.next/static/chunks/{3bpr59xr-_rv7.js → 0ge3nirnmx_np.js} +1 -1
- package/.next/static/chunks/{0k405nomf6s4e.js → 102b8vinedggz.js} +6 -6
- package/.next/static/chunks/{2jqjx4-rh414_.js → 13kyiy7q3of41.js} +1 -1
- package/.next/static/chunks/{1fz_0-qb5r5wd.js → 1dykihoo_1ae5.js} +1 -1
- package/.next/static/chunks/{0rgt7-bqxonef.js → 1sh7d5tt49x8b.js} +2 -2
- package/.next/static/chunks/{1-afr-snks55m.js → 1z4nte07k3dt6.js} +1 -1
- package/.next/static/chunks/2ib3e0xrrdait.js +1 -0
- package/.next/static/chunks/{turbopack-2gu-fmc6o5wkn.js → turbopack-2qt7vn_ocj4ao.js} +1 -1
- package/CHANGELOG.md +10 -0
- package/app/api/describe-image/route.ts +12 -4
- package/components/data/media-panel.tsx +34 -2
- package/components/data/upload-panel.tsx +2 -1
- package/components/settings/marketplace-section.tsx +14 -2
- package/lib/pdf-images.ts +20 -5
- package/package.json +5 -5
- package/.next/server/chunks/[root-of-the-server]__00r1kgp._.js +0 -143
- package/.next/server/chunks/[root-of-the-server]__064gb96._.js +0 -3
- package/.next/server/chunks/_0ce9vcg._.js +0 -32
- package/.next/static/chunks/00z1f-adeq1lg.js +0 -1
- package/archive/redesign-v2/app/configure/page.tsx +0 -53
- package/archive/redesign-v2/app/demo/page.tsx +0 -15
- package/archive/redesign-v2/app/server/page.tsx +0 -22
- package/archive/redesign-v2/app/simple/chat/page.tsx +0 -17
- package/archive/redesign-v2/app/simple/docs/page.tsx +0 -21
- package/archive/redesign-v2/app/simple/settings/page.tsx +0 -1104
- package/archive/redesign-v2/app-routes/configure/page.tsx +0 -53
- package/archive/redesign-v2/app-routes/demo/page.tsx +0 -15
- package/archive/redesign-v2/app-routes/server/page.tsx +0 -22
- package/archive/redesign-v2/app-routes/simple/chat/page.tsx +0 -17
- package/archive/redesign-v2/app-routes/simple/docs/page.tsx +0 -21
- package/archive/redesign-v2/app-routes/simple/layout.tsx +0 -9
- package/archive/redesign-v2/app-routes/simple/settings/page.tsx +0 -1104
- package/archive/redesign-v2/components/app-sidebar.tsx +0 -188
- package/archive/redesign-v2/components/app-topnav.tsx +0 -195
- package/archive/redesign-v2/components/global-settings.tsx +0 -288
- package/archive/redesign-v2/components/simple/simple-sidebar.tsx +0 -171
- package/archive/redesign-v2/components/simple/simple-topnav.tsx +0 -175
- /package/.next/static/{bDwMIFYSTVBKUJkJJx77o → W6QdudzTPo_OVPpNt29f7}/_buildManifest.js +0 -0
- /package/.next/static/{bDwMIFYSTVBKUJkJJx77o → W6QdudzTPo_OVPpNt29f7}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{bDwMIFYSTVBKUJkJJx77o → W6QdudzTPo_OVPpNt29f7}/_ssgManifest.js +0 -0
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
|
|
3
|
-
import Link from "next/link";
|
|
4
|
-
import { usePathname } from "next/navigation";
|
|
5
|
-
import {
|
|
6
|
-
MessageCircle,
|
|
7
|
-
FileStack,
|
|
8
|
-
SlidersHorizontal,
|
|
9
|
-
type LucideIcon,
|
|
10
|
-
} from "lucide-react";
|
|
11
|
-
import { cn } from "@/lib/utils";
|
|
12
|
-
import {
|
|
13
|
-
Tooltip,
|
|
14
|
-
TooltipContent,
|
|
15
|
-
TooltipProvider,
|
|
16
|
-
TooltipTrigger,
|
|
17
|
-
} from "@/components/ui/tooltip";
|
|
18
|
-
import {
|
|
19
|
-
useThemeCustomizer,
|
|
20
|
-
type PanelBgVariant,
|
|
21
|
-
} from "@/components/theme-customizer-provider";
|
|
22
|
-
import { ThemeSwitcher } from "@/components/theme-switcher";
|
|
23
|
-
|
|
24
|
-
const NAV_BG_COLORS: Record<PanelBgVariant, string | undefined> = {
|
|
25
|
-
"panel-default": undefined,
|
|
26
|
-
"panel-white": "#FFFFFF",
|
|
27
|
-
"panel-fafafa": "#F4F4F4",
|
|
28
|
-
"panel-warm": "#F7F1EA",
|
|
29
|
-
"panel-soft": "#FBFAF8",
|
|
30
|
-
"panel-silver": "#F8F8F8",
|
|
31
|
-
"panel-stone": "#F5F5F2",
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
interface NavItem {
|
|
35
|
-
id: string;
|
|
36
|
-
label: string;
|
|
37
|
-
href: string;
|
|
38
|
-
icon: LucideIcon;
|
|
39
|
-
description: string;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const SIMPLE_NAV: NavItem[] = [
|
|
43
|
-
{
|
|
44
|
-
id: "chat",
|
|
45
|
-
label: "Chat",
|
|
46
|
-
href: "/simple/chat",
|
|
47
|
-
icon: MessageCircle,
|
|
48
|
-
description: "Chat with your knowledge base using AI.",
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
id: "docs",
|
|
52
|
-
label: "Docs",
|
|
53
|
-
href: "/simple/docs",
|
|
54
|
-
icon: FileStack,
|
|
55
|
-
description: "Upload, paste, or manage your documents.",
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
id: "settings",
|
|
59
|
-
label: "Settings",
|
|
60
|
-
href: "/simple/settings",
|
|
61
|
-
icon: SlidersHorizontal,
|
|
62
|
-
description: "Configure provider, API keys, and advanced settings.",
|
|
63
|
-
},
|
|
64
|
-
];
|
|
65
|
-
|
|
66
|
-
export function SimpleSidebar() {
|
|
67
|
-
const pathname = usePathname();
|
|
68
|
-
const { pageStyle, navBg } = useThemeCustomizer();
|
|
69
|
-
|
|
70
|
-
const navColor = navBg ? NAV_BG_COLORS[navBg] : undefined;
|
|
71
|
-
const navStyle = navColor ? { backgroundColor: navColor } : undefined;
|
|
72
|
-
|
|
73
|
-
return (
|
|
74
|
-
<TooltipProvider delay={150}>
|
|
75
|
-
<aside
|
|
76
|
-
className={cn(
|
|
77
|
-
"sticky top-0 hidden h-screen w-[84px] shrink-0 flex-col items-center gap-1 self-start py-3 md:flex",
|
|
78
|
-
!navColor ? "bg-background" : "",
|
|
79
|
-
pageStyle === "fused" ? "border-r border-border" : "",
|
|
80
|
-
)}
|
|
81
|
-
style={navStyle}
|
|
82
|
-
>
|
|
83
|
-
{/* Brand */}
|
|
84
|
-
<Tooltip>
|
|
85
|
-
<TooltipTrigger
|
|
86
|
-
render={
|
|
87
|
-
<Link
|
|
88
|
-
href="/simple/chat"
|
|
89
|
-
aria-label="larkup home"
|
|
90
|
-
className="mb-2 flex size-11 items-center justify-center rounded-xl bg-primary text-primary-foreground shadow-sm transition-transform hover:scale-105"
|
|
91
|
-
/>
|
|
92
|
-
}
|
|
93
|
-
>
|
|
94
|
-
<img src={"/logo9.png"} className="size-6.5" alt="logo" />
|
|
95
|
-
</TooltipTrigger>
|
|
96
|
-
<TooltipContent side="right" sideOffset={10}>
|
|
97
|
-
Larkup
|
|
98
|
-
</TooltipContent>
|
|
99
|
-
</Tooltip>
|
|
100
|
-
|
|
101
|
-
{/* Navigation */}
|
|
102
|
-
<nav className="flex flex-1 flex-col items-center gap-2.5">
|
|
103
|
-
{SIMPLE_NAV.map((item) => {
|
|
104
|
-
const Icon = item.icon;
|
|
105
|
-
const active = pathname?.startsWith(item.href);
|
|
106
|
-
|
|
107
|
-
return (
|
|
108
|
-
<Tooltip key={item.id}>
|
|
109
|
-
<TooltipTrigger
|
|
110
|
-
render={
|
|
111
|
-
<Link
|
|
112
|
-
href={item.href}
|
|
113
|
-
aria-current={active ? "page" : undefined}
|
|
114
|
-
className="group relative flex w-16 flex-col items-center gap-0.5 rounded-2xl py-1 outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
|
115
|
-
/>
|
|
116
|
-
}
|
|
117
|
-
>
|
|
118
|
-
{/* Active accent bar */}
|
|
119
|
-
<span
|
|
120
|
-
className={cn(
|
|
121
|
-
"absolute left-0 top-1/2 h-6 w-1 -translate-y-1/2 rounded-r-full bg-primary transition-opacity",
|
|
122
|
-
active ? "opacity-100" : "opacity-0",
|
|
123
|
-
)}
|
|
124
|
-
/>
|
|
125
|
-
<span
|
|
126
|
-
className={cn(
|
|
127
|
-
"relative flex size-9 items-center justify-center rounded-xl transition-colors",
|
|
128
|
-
active
|
|
129
|
-
? "bg-white border text-primary"
|
|
130
|
-
: "text-foreground/70 group-hover:bg-white/90 group-hover:text-foreground",
|
|
131
|
-
)}
|
|
132
|
-
>
|
|
133
|
-
<Icon
|
|
134
|
-
className="size-[19px]"
|
|
135
|
-
strokeWidth={active ? 2.25 : 2}
|
|
136
|
-
/>
|
|
137
|
-
</span>
|
|
138
|
-
<span
|
|
139
|
-
className={cn(
|
|
140
|
-
"text-[10px] leading-none tracking-tight",
|
|
141
|
-
active
|
|
142
|
-
? "font-semibold text-primary"
|
|
143
|
-
: "text-muted-foreground",
|
|
144
|
-
)}
|
|
145
|
-
>
|
|
146
|
-
{item.label}
|
|
147
|
-
</span>
|
|
148
|
-
</TooltipTrigger>
|
|
149
|
-
<TooltipContent
|
|
150
|
-
side="right"
|
|
151
|
-
sideOffset={10}
|
|
152
|
-
className="max-w-56"
|
|
153
|
-
>
|
|
154
|
-
<div className="flex flex-col gap-0.5">
|
|
155
|
-
<span className="font-medium">{item.label}</span>
|
|
156
|
-
<span className="text-[11px] leading-snug opacity-80">
|
|
157
|
-
{item.description}
|
|
158
|
-
</span>
|
|
159
|
-
</div>
|
|
160
|
-
</TooltipContent>
|
|
161
|
-
</Tooltip>
|
|
162
|
-
);
|
|
163
|
-
})}
|
|
164
|
-
</nav>
|
|
165
|
-
|
|
166
|
-
{/* Footer */}
|
|
167
|
-
<ThemeSwitcher floating={false} />
|
|
168
|
-
</aside>
|
|
169
|
-
</TooltipProvider>
|
|
170
|
-
);
|
|
171
|
-
}
|
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
|
|
3
|
-
import Link from "next/link";
|
|
4
|
-
import { usePathname } from "next/navigation";
|
|
5
|
-
import { cn } from "@/lib/utils";
|
|
6
|
-
import {
|
|
7
|
-
Tooltip,
|
|
8
|
-
TooltipContent,
|
|
9
|
-
TooltipProvider,
|
|
10
|
-
TooltipTrigger,
|
|
11
|
-
} from "@/components/ui/tooltip";
|
|
12
|
-
import { useWorkspace } from "@/components/workspace/workspace-provider";
|
|
13
|
-
import { ThemeSwitcher } from "@/components/theme-switcher";
|
|
14
|
-
import { useThemeCustomizer, type PanelBgVariant } from "@/components/theme-customizer-provider";
|
|
15
|
-
import { MessageCircle, FileStack, SlidersHorizontal, type LucideIcon } from "lucide-react";
|
|
16
|
-
|
|
17
|
-
const NAV_BG_COLORS: Record<PanelBgVariant, string | undefined> = {
|
|
18
|
-
"panel-default": undefined,
|
|
19
|
-
"panel-white": "#FFFFFF",
|
|
20
|
-
"panel-fafafa": "#F4F4F4",
|
|
21
|
-
"panel-warm": "#F7F1EA",
|
|
22
|
-
"panel-soft": "#FBFAF8",
|
|
23
|
-
"panel-silver": "#F8F8F8",
|
|
24
|
-
"panel-stone": "#F5F5F2",
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
interface NavItem {
|
|
28
|
-
id: string;
|
|
29
|
-
label: string;
|
|
30
|
-
href: string;
|
|
31
|
-
icon: LucideIcon;
|
|
32
|
-
description: string;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const SIMPLE_NAV: NavItem[] = [
|
|
36
|
-
{
|
|
37
|
-
id: "chat",
|
|
38
|
-
label: "Chat",
|
|
39
|
-
href: "/simple/chat",
|
|
40
|
-
icon: MessageCircle,
|
|
41
|
-
description: "Chat with your knowledge base using AI.",
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
id: "docs",
|
|
45
|
-
label: "Docs",
|
|
46
|
-
href: "/simple/docs",
|
|
47
|
-
icon: FileStack,
|
|
48
|
-
description: "Upload, paste, or manage your documents.",
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
id: "settings",
|
|
52
|
-
label: "Settings",
|
|
53
|
-
href: "/simple/settings",
|
|
54
|
-
icon: SlidersHorizontal,
|
|
55
|
-
description: "Configure provider, API keys, and advanced settings.",
|
|
56
|
-
},
|
|
57
|
-
];
|
|
58
|
-
|
|
59
|
-
export function SimpleTopNav() {
|
|
60
|
-
const pathname = usePathname();
|
|
61
|
-
const { username } = useWorkspace();
|
|
62
|
-
const { navBg } = useThemeCustomizer();
|
|
63
|
-
|
|
64
|
-
const navColor = navBg ? NAV_BG_COLORS[navBg] : undefined;
|
|
65
|
-
const navStyle = navColor ? { backgroundColor: navColor } : undefined;
|
|
66
|
-
|
|
67
|
-
return (
|
|
68
|
-
<TooltipProvider delay={150}>
|
|
69
|
-
<header
|
|
70
|
-
className={cn(
|
|
71
|
-
"sticky top-0 z-50 flex h-16 shrink-0 items-center gap-4 border-b border-border px-4 md:px-6",
|
|
72
|
-
!navColor ? "bg-white" : "",
|
|
73
|
-
)}
|
|
74
|
-
style={navStyle}
|
|
75
|
-
>
|
|
76
|
-
{/* Brand */}
|
|
77
|
-
<Link
|
|
78
|
-
href="/simple/chat"
|
|
79
|
-
aria-label="larkup home"
|
|
80
|
-
className="flex size-10 shrink-0 items-center justify-center rounded-xl bg-primary text-primary-foreground shadow-sm transition-transform hover:scale-105"
|
|
81
|
-
>
|
|
82
|
-
<img src={"/logo9.png"} className="size-5" alt="logo" />
|
|
83
|
-
</Link>
|
|
84
|
-
<span className="font-semibold tracking-tight hidden sm:inline-block">
|
|
85
|
-
Larkup
|
|
86
|
-
</span>
|
|
87
|
-
|
|
88
|
-
{/* Navigation */}
|
|
89
|
-
<nav className="flex flex-1 h-full items-end pb-0 gap-2 md:gap-4 ml-4">
|
|
90
|
-
{SIMPLE_NAV.map((item, index) => {
|
|
91
|
-
const Icon = item.icon;
|
|
92
|
-
const active = pathname?.startsWith(item.href);
|
|
93
|
-
|
|
94
|
-
return (
|
|
95
|
-
<Tooltip key={item.id}>
|
|
96
|
-
<TooltipTrigger
|
|
97
|
-
render={
|
|
98
|
-
<Link
|
|
99
|
-
href={item.href}
|
|
100
|
-
aria-current={active ? "page" : undefined}
|
|
101
|
-
className={cn(
|
|
102
|
-
"group relative flex items-center gap-2 h-10 px-3 rounded-md transition-colors outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
103
|
-
active ? "bg-muted/0" : "hover:bg-muted/30",
|
|
104
|
-
)}
|
|
105
|
-
/>
|
|
106
|
-
}
|
|
107
|
-
>
|
|
108
|
-
<div className="flex items-center">
|
|
109
|
-
<span
|
|
110
|
-
className={cn(
|
|
111
|
-
"flex size-9 items-center justify-center rounded-lg transition-colors",
|
|
112
|
-
active
|
|
113
|
-
? "text-primary"
|
|
114
|
-
: "text-muted-foreground group-hover:text-foreground",
|
|
115
|
-
)}
|
|
116
|
-
>
|
|
117
|
-
<Icon
|
|
118
|
-
className="size-[18px]"
|
|
119
|
-
strokeWidth={active ? 2.25 : 2}
|
|
120
|
-
/>
|
|
121
|
-
</span>
|
|
122
|
-
<span
|
|
123
|
-
className={cn(
|
|
124
|
-
"hidden md:block text-[13px] tracking-tight",
|
|
125
|
-
active
|
|
126
|
-
? "font-semibold text-primary"
|
|
127
|
-
: "text-muted-foreground group-hover:text-foreground",
|
|
128
|
-
)}
|
|
129
|
-
>
|
|
130
|
-
{item.label}
|
|
131
|
-
</span>
|
|
132
|
-
{/* active accent bar (bottom) */}
|
|
133
|
-
<span
|
|
134
|
-
className={cn(
|
|
135
|
-
"absolute bottom-0 left-0 h-0.5 w-full bg-primary transition-opacity",
|
|
136
|
-
active
|
|
137
|
-
? "opacity-100"
|
|
138
|
-
: "opacity-0 group-hover:opacity-100",
|
|
139
|
-
)}
|
|
140
|
-
/>
|
|
141
|
-
</div>
|
|
142
|
-
</TooltipTrigger>
|
|
143
|
-
<TooltipContent
|
|
144
|
-
side="bottom"
|
|
145
|
-
sideOffset={10}
|
|
146
|
-
className="max-w-56"
|
|
147
|
-
>
|
|
148
|
-
<div className="flex flex-col gap-0.5">
|
|
149
|
-
<span className="font-medium">
|
|
150
|
-
{item.label}
|
|
151
|
-
</span>
|
|
152
|
-
<span className="text-[11px] leading-snug opacity-80">
|
|
153
|
-
{item.description}
|
|
154
|
-
</span>
|
|
155
|
-
</div>
|
|
156
|
-
</TooltipContent>
|
|
157
|
-
</Tooltip>
|
|
158
|
-
);
|
|
159
|
-
})}
|
|
160
|
-
</nav>
|
|
161
|
-
|
|
162
|
-
{/* Right side: Workspace & Theme Customizer */}
|
|
163
|
-
<div className="flex items-center gap-3">
|
|
164
|
-
{username && (
|
|
165
|
-
<span className="hidden text-sm text-muted-foreground md:block">
|
|
166
|
-
Hi,{" "}
|
|
167
|
-
<span className="font-medium text-foreground">{username}</span>
|
|
168
|
-
</span>
|
|
169
|
-
)}
|
|
170
|
-
<ThemeSwitcher floating={false} />
|
|
171
|
-
</div>
|
|
172
|
-
</header>
|
|
173
|
-
</TooltipProvider>
|
|
174
|
-
);
|
|
175
|
-
}
|
|
File without changes
|
/package/.next/static/{bDwMIFYSTVBKUJkJJx77o → W6QdudzTPo_OVPpNt29f7}/_clientMiddlewareManifest.js
RENAMED
|
File without changes
|
|
File without changes
|