diff --git a/apps/app/src/components/Layout.tsx b/apps/app/src/components/Layout.tsx
index 7c7a84e..2b49259 100644
--- a/apps/app/src/components/Layout.tsx
+++ b/apps/app/src/components/Layout.tsx
@@ -1,58 +1,43 @@
-import {
- Button,
- DropdownMenu,
- DropdownMenuContent,
- DropdownMenuItem,
- DropdownMenuLabel,
- DropdownMenuSeparator,
- DropdownMenuTrigger,
-} from '@boring.tools/ui'
-import { SignOutButton, useUser } from '@clerk/clerk-react'
-import { Link } from '@tanstack/react-router'
+import { SidebarInset, SidebarTrigger } from '@boring.tools/ui'
import type { ReactNode } from 'react'
-import { Navigation } from './Navigation'
-import { NavigationMobile } from './NavigationMobile'
+import { Sidebar } from './Sidebar'
export const description =
'A products dashboard with a sidebar navigation and a main content area. The dashboard has a header with a search input and a user menu. The sidebar has a logo, navigation links, and a card with a call to action. The main content area shows an empty state with a call to action.'
export const Layout = ({ children }: { children: ReactNode | ReactNode[] }) => {
- const { user } = useUser()
return (
-
-
-
-
-
-
-
-
-
-
-
-
-
- Settings
-
- Profile
-
-
-
-
- Sign out
-
-
-
-
+ <>
+ {/* */}
+
+
+
-
- {children}
-
-
-
+
+
+ >
)
}
diff --git a/apps/app/src/components/Sidebar.tsx b/apps/app/src/components/Sidebar.tsx
new file mode 100644
index 0000000..1066ce5
--- /dev/null
+++ b/apps/app/src/components/Sidebar.tsx
@@ -0,0 +1,91 @@
+import { FileStackIcon } from 'lucide-react'
+
+import {
+ Collapsible,
+ Sidebar as SidebarComp,
+ SidebarContent,
+ SidebarFooter,
+ SidebarGroup,
+ SidebarHeader,
+ SidebarMenu,
+ SidebarMenuButton,
+ SidebarMenuItem,
+} from '@boring.tools/ui'
+import { Link } from '@tanstack/react-router'
+import { SidebarUser } from './SidebarUser'
+
+const items = [
+ {
+ title: 'Changelog',
+ url: '/changelog',
+ icon: FileStackIcon,
+ isActive: true,
+ },
+]
+
+export function Sidebar() {
+ return (
+
+
+
+
+
+
+
+ BT
+
+
+ boring.tools
+
+
+
+
+
+
+
+
+
+ {items.map((item) => (
+
+
+
+
+
+ {item.title}
+
+
+ {/* {item.items?.length ? (
+ <>
+
+
+
+ Toggle
+
+
+
+
+ {item.items?.map((subItem) => (
+
+
+
+ {subItem.title}
+
+
+
+ ))}
+
+
+ >
+ ) : null} */}
+
+
+ ))}
+
+
+
+
+
+
+
+ )
+}
diff --git a/apps/app/src/components/SidebarUser.tsx b/apps/app/src/components/SidebarUser.tsx
new file mode 100644
index 0000000..0e781dd
--- /dev/null
+++ b/apps/app/src/components/SidebarUser.tsx
@@ -0,0 +1,96 @@
+import { ChevronsUpDown } from 'lucide-react'
+
+import {
+ Avatar,
+ AvatarFallback,
+ AvatarImage,
+ DropdownMenu,
+ DropdownMenuContent,
+ DropdownMenuGroup,
+ DropdownMenuItem,
+ DropdownMenuLabel,
+ DropdownMenuSeparator,
+ DropdownMenuTrigger,
+ SidebarMenu,
+ SidebarMenuButton,
+ SidebarMenuItem,
+ useSidebar,
+} from '@boring.tools/ui'
+import { SignOutButton, useUser } from '@clerk/clerk-react'
+import { Link } from '@tanstack/react-router'
+
+export function SidebarUser() {
+ const { isMobile } = useSidebar()
+ const { user } = useUser()
+
+ return (
+
+
+
+
+
+
+
+ CN
+
+
+ {user?.fullName}
+
+ {user?.primaryEmailAddress?.emailAddress}
+
+
+
+
+
+
+
+
+
+
+
+ {user?.firstName?.substring(0, 1)}
+ {user?.lastName?.substring(0, 1)}
+
+
+
+
+ {user?.fullName}
+
+
+ {user?.primaryEmailAddress?.emailAddress}
+
+
+
+
+
+
+
+ Profile
+
+
+
+
+
+ Sign out
+
+
+
+
+
+
+ )
+}
diff --git a/apps/app/src/main.tsx b/apps/app/src/main.tsx
index d19edb7..b5ad488 100644
--- a/apps/app/src/main.tsx
+++ b/apps/app/src/main.tsx
@@ -1,4 +1,8 @@
-import { ThemeProvider, TooltipProvider } from '@boring.tools/ui'
+import {
+ SidebarProvider,
+ ThemeProvider,
+ TooltipProvider,
+} from '@boring.tools/ui'
import { ClerkProvider } from '@clerk/clerk-react'
import { RouterProvider, createRouter } from '@tanstack/react-router'
import { StrictMode } from 'react'
@@ -34,22 +38,24 @@ if (!rootElement.innerHTML) {
const root = ReactDOM.createRoot(rootElement)
root.render(
-
-
-
-
- {import.meta.env.PROD && (
-
- )}
-
-
-
-
-
+
+
+
+
+
+ {import.meta.env.PROD && (
+
+ )}
+
+
+
+
+
+
,
)
}
diff --git a/apps/app/src/routes/changelog.$id.version.$versionId.tsx b/apps/app/src/routes/changelog.$id.version.$versionId.tsx
index bd3609d..06bdb14 100644
--- a/apps/app/src/routes/changelog.$id.version.$versionId.tsx
+++ b/apps/app/src/routes/changelog.$id.version.$versionId.tsx
@@ -1,8 +1,5 @@
import { VersionUpdateInput } from '@boring.tools/schema'
import {
- Alert,
- AlertDescription,
- AlertTitle,
Button,
Calendar,
Form,
@@ -44,7 +41,7 @@ import {
} from '../hooks/useChangelog'
import '@mdxeditor/editor/style.css'
import { format } from 'date-fns'
-import { CalendarIcon, TriangleAlertIcon } from 'lucide-react'
+import { CalendarIcon } from 'lucide-react'
import { useEffect, useRef } from 'react'
import { ChangelogVersionDelete } from '../components/Changelog/VersionDelete'
import { VersionStatus } from '../components/Changelog/VersionStatus'
diff --git a/apps/app/tsconfig.tsbuildinfo b/apps/app/tsconfig.tsbuildinfo
index f0c7e96..f03b2f7 100644
--- a/apps/app/tsconfig.tsbuildinfo
+++ b/apps/app/tsconfig.tsbuildinfo
@@ -1 +1 @@
-{"root":["./src/main.tsx","./src/routeTree.gen.ts","./src/vite-env.d.ts","./src/components/Layout.tsx","./src/components/Navigation.tsx","./src/components/NavigationMobile.tsx","./src/components/Changelog/Delete.tsx","./src/components/Changelog/VersionStatus.tsx","./src/hooks/useChangelog.ts","./src/routes/__root.tsx","./src/routes/changelog.$id.edit.lazy.tsx","./src/routes/changelog.$id.index.lazy.tsx","./src/routes/changelog.$id.lazy.tsx","./src/routes/changelog.$id.version.$versionId.tsx","./src/routes/changelog.$id.versionCreate.lazy.tsx","./src/routes/changelog.create.lazy.tsx","./src/routes/changelog.index.lazy.tsx","./src/routes/index.lazy.tsx","./src/routes/user/index.lazy.tsx","./src/utils/navigation-routes.ts","./src/utils/queryFetch.ts"],"version":"5.6.2"}
\ No newline at end of file
+{"root":["./src/main.tsx","./src/routeTree.gen.ts","./src/vite-env.d.ts","./src/components/Layout.tsx","./src/components/Navigation.tsx","./src/components/NavigationMobile.tsx","./src/components/Sidebar.tsx","./src/components/SidebarUser.tsx","./src/components/Changelog/Delete.tsx","./src/components/Changelog/VersionDelete.tsx","./src/components/Changelog/VersionStatus.tsx","./src/hooks/useChangelog.ts","./src/routes/__root.tsx","./src/routes/changelog.$id.edit.lazy.tsx","./src/routes/changelog.$id.index.lazy.tsx","./src/routes/changelog.$id.lazy.tsx","./src/routes/changelog.$id.version.$versionId.tsx","./src/routes/changelog.$id.versionCreate.lazy.tsx","./src/routes/changelog.create.lazy.tsx","./src/routes/changelog.index.lazy.tsx","./src/routes/index.lazy.tsx","./src/routes/user/index.lazy.tsx","./src/utils/navigation-routes.ts","./src/utils/queryFetch.ts"],"version":"5.6.2"}
\ No newline at end of file