diff --git a/index.js b/index.js
index caa5d77..8ff64d3 100755
--- a/index.js
+++ b/index.js
@@ -115,8 +115,8 @@ async function main() {
.toLowerCase()
.replace(/[^a-z0-9]+/g, '-')
.replace(/^-+|-+$/g, '');
- const rootDir = path.resolve(process.cwd(), kebabName);
- const pmx = project.packageManager === 'bun' ? 'bunx' : 'npx';
+ const rootDir = path.join(process.cwd(), kebabName);
+ const pmx = project.packageManager === 'bun' ? 'bun x' : 'npx';
const pm = project.packageManager === 'bun' ? 'bun' : 'npm';
const studioDir = path.join(rootDir, 'apps', 'studio');
@@ -124,8 +124,7 @@ async function main() {
{
title: `${color.yellow('📁 Copying template contents to root')}`,
task: async () => {
- const __dirname = path.dirname(new URL(import.meta.url).pathname);
- const templateDir = path.resolve(__dirname, 'template');
+ const templateDir = path.join(process.cwd(), 'template');
// Ensure root directory exists with proper permissions
await fs.ensureDir(rootDir);
diff --git a/template/apps/client/src/lib/components/navbar.svelte b/template/apps/client/src/lib/components/navbar.svelte
new file mode 100644
index 0000000..d67fb4e
--- /dev/null
+++ b/template/apps/client/src/lib/components/navbar.svelte
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+ {#each items as item}
+
+ {#if item.url && !item.subitems}
+
+ {:else if item.subitems}
+
+ {item.name}
+
+
+ {#each item.subitems as subitem}
+
+ {subitem.name}
+
+ {/each}
+
+ {/if}
+
+ {/each}
+
+
+
diff --git a/template/apps/client/src/lib/components/ui/navigation-menu/navigation-menu-content.svelte b/template/apps/client/src/lib/components/ui/navigation-menu/navigation-menu-content.svelte
index 9dbdb36..557897e 100644
--- a/template/apps/client/src/lib/components/ui/navigation-menu/navigation-menu-content.svelte
+++ b/template/apps/client/src/lib/components/ui/navigation-menu/navigation-menu-content.svelte
@@ -13,8 +13,8 @@
bind:ref
data-slot="navigation-menu-content"
class={cn(
- "data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 left-0 top-0 w-full md:absolute md:w-auto",
- "group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-200",
+ "data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 left-0 top-0 w-full md:absolute md:w-auto md:left-1/2 md:-translate-x-1/2",
+ "group-data-[viewport=false]/navigation-menu:bg-primary group-data-[viewport=false]/navigation-menu:text-white group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border-white/20 group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-200",
className
)}
{...restProps}
diff --git a/template/apps/client/src/lib/components/ui/navigation-menu/navigation-menu-link.svelte b/template/apps/client/src/lib/components/ui/navigation-menu/navigation-menu-link.svelte
index 867851e..c197ffd 100644
--- a/template/apps/client/src/lib/components/ui/navigation-menu/navigation-menu-link.svelte
+++ b/template/apps/client/src/lib/components/ui/navigation-menu/navigation-menu-link.svelte
@@ -13,7 +13,7 @@
bind:ref
data-slot="navigation-menu-link"
class={cn(
- "data-[active=true]:focus:bg-accent data-[active=true]:hover:bg-accent data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-sm p-2 text-sm outline-none transition-all focus-visible:outline-1 focus-visible:ring-[3px] [&_svg:not([class*='size-'])]:size-4",
+ "data-[active=true]:focus:bg-white/5 cursor-pointer data-[active=true]:hover:bg-white/5 data-[active=true]:bg-primary data-[active=true]:text-white hover:bg-white/5 hover:text-white focus:bg-white/5 focus:text-white active:bg-white/8 focus-visible:ring-white/20 [&_svg:not([class*='text-'])]:text-white flex flex-col gap-1 rounded-sm p-2 text-sm text-white outline-none transition-all focus-visible:outline-1 focus-visible:ring-[3px] [&_svg:not([class*='size-'])]:size-4",
className
)}
{...restProps}
diff --git a/template/apps/client/src/lib/components/ui/navigation-menu/navigation-menu-trigger.svelte b/template/apps/client/src/lib/components/ui/navigation-menu/navigation-menu-trigger.svelte
index aad82a2..2c3b613 100644
--- a/template/apps/client/src/lib/components/ui/navigation-menu/navigation-menu-trigger.svelte
+++ b/template/apps/client/src/lib/components/ui/navigation-menu/navigation-menu-trigger.svelte
@@ -3,7 +3,7 @@
import { tv } from "tailwind-variants";
export const navigationMenuTriggerStyle = tv({
- base: "bg-background hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 group inline-flex h-9 w-max items-center justify-center rounded-md px-4 py-2 text-sm font-medium outline-none transition-[color,box-shadow] focus-visible:outline-1 focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50",
+ base: "text-white hover:bg-white/5 hover:text-white focus:bg-white/5 focus:text-white data-[state=open]:hover:bg-white/5 data-[state=open]:text-white data-[state=open]:focus:bg-white/5 data-[state=open]:bg-primary active:bg-white/8 focus-visible:ring-white/20 group inline-flex h-9 w-max items-center justify-center rounded-md px-4 py-2 text-sm font-medium outline-none transition-[color,box-shadow] focus-visible:outline-1 focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50",
});
@@ -22,7 +22,11 @@