@getcoherent/core 0.5.12 → 0.5.13

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 CHANGED
@@ -903,10 +903,7 @@ declare const LayoutBlockDefinitionSchema: z.ZodObject<{
903
903
  generatedCode?: string | undefined;
904
904
  }>;
905
905
  type LayoutBlockDefinition = z.infer<typeof LayoutBlockDefinitionSchema>;
906
- /**
907
- * Page layout type
908
- */
909
- declare const PageLayoutSchema: z.ZodEnum<["centered", "sidebar-left", "sidebar-right", "full-width", "grid"]>;
906
+ declare const PageLayoutSchema: z.ZodEffects<z.ZodEnum<["centered", "sidebar-left", "sidebar-right", "full-width", "grid"]>, "centered" | "sidebar-left" | "sidebar-right" | "full-width" | "grid", unknown>;
910
907
  type PageLayout = z.infer<typeof PageLayoutSchema>;
911
908
  /**
912
909
  * Page definition
@@ -956,7 +953,7 @@ declare const PageDefinitionSchema: z.ZodObject<{
956
953
  id: z.ZodPipeline<z.ZodEffects<z.ZodString, string, string>, z.ZodString>;
957
954
  name: z.ZodString;
958
955
  route: z.ZodPipeline<z.ZodEffects<z.ZodString, string, string>, z.ZodString>;
959
- layout: z.ZodEnum<["centered", "sidebar-left", "sidebar-right", "full-width", "grid"]>;
956
+ layout: z.ZodEffects<z.ZodEnum<["centered", "sidebar-left", "sidebar-right", "full-width", "grid"]>, "centered" | "sidebar-left" | "sidebar-right" | "full-width" | "grid", unknown>;
960
957
  sections: z.ZodDefault<z.ZodArray<z.ZodObject<{
961
958
  id: z.ZodString;
962
959
  name: z.ZodString;
@@ -1062,11 +1059,11 @@ declare const PageDefinitionSchema: z.ZodObject<{
1062
1059
  name: string;
1063
1060
  description: string;
1064
1061
  id: string;
1065
- layout: "centered" | "sidebar-left" | "sidebar-right" | "full-width" | "grid";
1066
1062
  createdAt: string;
1067
1063
  updatedAt: string;
1068
1064
  route: string;
1069
1065
  title: string;
1066
+ layout?: unknown;
1070
1067
  sections?: {
1071
1068
  name: string;
1072
1069
  id: string;
@@ -1882,7 +1879,7 @@ declare const DesignSystemConfigSchema: z.ZodObject<{
1882
1879
  id: z.ZodPipeline<z.ZodEffects<z.ZodString, string, string>, z.ZodString>;
1883
1880
  name: z.ZodString;
1884
1881
  route: z.ZodPipeline<z.ZodEffects<z.ZodString, string, string>, z.ZodString>;
1885
- layout: z.ZodEnum<["centered", "sidebar-left", "sidebar-right", "full-width", "grid"]>;
1882
+ layout: z.ZodEffects<z.ZodEnum<["centered", "sidebar-left", "sidebar-right", "full-width", "grid"]>, "centered" | "sidebar-left" | "sidebar-right" | "full-width" | "grid", unknown>;
1886
1883
  sections: z.ZodDefault<z.ZodArray<z.ZodObject<{
1887
1884
  id: z.ZodString;
1888
1885
  name: z.ZodString;
@@ -1988,11 +1985,11 @@ declare const DesignSystemConfigSchema: z.ZodObject<{
1988
1985
  name: string;
1989
1986
  description: string;
1990
1987
  id: string;
1991
- layout: "centered" | "sidebar-left" | "sidebar-right" | "full-width" | "grid";
1992
1988
  createdAt: string;
1993
1989
  updatedAt: string;
1994
1990
  route: string;
1995
1991
  title: string;
1992
+ layout?: unknown;
1996
1993
  sections?: {
1997
1994
  name: string;
1998
1995
  id: string;
@@ -2497,11 +2494,11 @@ declare const DesignSystemConfigSchema: z.ZodObject<{
2497
2494
  name: string;
2498
2495
  description: string;
2499
2496
  id: string;
2500
- layout: "centered" | "sidebar-left" | "sidebar-right" | "full-width" | "grid";
2501
2497
  createdAt: string;
2502
2498
  updatedAt: string;
2503
2499
  route: string;
2504
2500
  title: string;
2501
+ layout?: unknown;
2505
2502
  sections?: {
2506
2503
  name: string;
2507
2504
  id: string;
@@ -2718,7 +2715,9 @@ interface ComponentProvider {
2718
2715
  id: string;
2719
2716
  init(projectRoot: string): Promise<void>;
2720
2717
  install(name: string, projectRoot: string): Promise<void>;
2718
+ has(name: string): boolean;
2721
2719
  list(): ComponentMeta[];
2720
+ listNames(): string[];
2722
2721
  getComponentAPI(name: string): ComponentAPI | null;
2723
2722
  getCssVariables(tokens: DesignTokens): string;
2724
2723
  getThemeBlock(tokens: DesignTokens): string;
@@ -3445,7 +3444,7 @@ declare class PageGenerator {
3445
3444
  */
3446
3445
  generateSharedFooterCode(): string;
3447
3446
  /**
3448
- * Generate shared Sidebar component code for components/shared/sidebar.tsx.
3447
+ * Generate shared Sidebar component code using shadcn/ui Sidebar.
3449
3448
  * Used when navigation.type is 'sidebar' or 'both'.
3450
3449
  */
3451
3450
  generateSharedSidebarCode(): string;
package/dist/index.js CHANGED
@@ -146,7 +146,7 @@ var LayoutBlockDefinitionSchema = z.object({
146
146
  createdAt: z.string().datetime().optional(),
147
147
  updatedAt: z.string().datetime().optional()
148
148
  });
149
- var PageLayoutSchema = z.enum([
149
+ var PAGE_LAYOUT_ENUM = z.enum([
150
150
  "centered",
151
151
  // Single centered column
152
152
  "sidebar-left",
@@ -158,6 +158,10 @@ var PageLayoutSchema = z.enum([
158
158
  "grid"
159
159
  // CSS Grid layout
160
160
  ]);
161
+ var PageLayoutSchema = z.preprocess((val) => {
162
+ if (val === "sidebar") return "sidebar-left";
163
+ return val;
164
+ }, PAGE_LAYOUT_ENUM);
161
165
  var PageAnalysisSchema = z.object({
162
166
  sections: z.array(
163
167
  z.object({
@@ -1237,6 +1241,43 @@ function blendColors(hex1, hex2, ratio) {
1237
1241
  const toHex = (n) => n.toString(16).padStart(2, "0");
1238
1242
  return `#${toHex(blend(r1, r2))}${toHex(blend(g1, g2))}${toHex(blend(b1, b2))}`;
1239
1243
  }
1244
+ function hexToHsl(hex) {
1245
+ const c = hex.replace("#", "");
1246
+ const r = parseInt(c.slice(0, 2), 16) / 255;
1247
+ const g = parseInt(c.slice(2, 4), 16) / 255;
1248
+ const b = parseInt(c.slice(4, 6), 16) / 255;
1249
+ const max = Math.max(r, g, b), min = Math.min(r, g, b);
1250
+ const l = (max + min) / 2;
1251
+ if (max === min) return [0, 0, l];
1252
+ const d = max - min;
1253
+ const s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
1254
+ let h = 0;
1255
+ if (max === r) h = ((g - b) / d + (g < b ? 6 : 0)) / 6;
1256
+ else if (max === g) h = ((b - r) / d + 2) / 6;
1257
+ else h = ((r - g) / d + 4) / 6;
1258
+ return [h * 360, s, l];
1259
+ }
1260
+ function hslToHex(h, s, l) {
1261
+ h = (h % 360 + 360) % 360;
1262
+ const a = s * Math.min(l, 1 - l);
1263
+ const f = (n) => {
1264
+ const k = (n + h / 30) % 12;
1265
+ const color = l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);
1266
+ return Math.round(255 * Math.max(0, Math.min(1, color))).toString(16).padStart(2, "0");
1267
+ };
1268
+ return `#${f(0)}${f(8)}${f(4)}`;
1269
+ }
1270
+ function generateChartColors(primary, secondary) {
1271
+ const [h1, s1, l1] = hexToHsl(primary);
1272
+ const [h2, s2, l2] = hexToHsl(secondary);
1273
+ return [
1274
+ primary,
1275
+ secondary,
1276
+ hslToHex(h1 + 60, s1 * 0.8, l1),
1277
+ hslToHex(h2 + 90, s2 * 0.7, l2),
1278
+ hslToHex(h1 + 180, s1 * 0.6, l1)
1279
+ ];
1280
+ }
1240
1281
  function buildCssVariables(config) {
1241
1282
  const light = config.tokens.colors.light;
1242
1283
  const dark = config.tokens.colors.dark;
@@ -1246,7 +1287,31 @@ function buildCssVariables(config) {
1246
1287
  const accentDarkVars = ` --accent: ${dark.muted};
1247
1288
  --accent-foreground: ${dark.foreground};
1248
1289
  `;
1290
+ const sidebarLightVars = ` --sidebar-background: ${light.background};
1291
+ --sidebar-foreground: ${light.foreground};
1292
+ --sidebar-primary: ${light.primary};
1293
+ --sidebar-primary-foreground: ${contrastFg(light.primary)};
1294
+ --sidebar-accent: ${light.muted};
1295
+ --sidebar-accent-foreground: ${light.foreground};
1296
+ --sidebar-border: ${light.border};
1297
+ --sidebar-ring: ${light.primary};
1298
+ `;
1299
+ const chartLight = generateChartColors(light.primary, light.secondary);
1300
+ const chartDark = generateChartColors(dark.primary, dark.secondary);
1301
+ const chartLightVars = chartLight.map((c, i) => ` --chart-${i + 1}: ${c};`).join("\n") + "\n";
1302
+ const chartDarkVars = chartDark.map((c, i) => ` --chart-${i + 1}: ${c};`).join("\n") + "\n";
1303
+ const sidebarDarkVars = ` --sidebar-background: ${dark.background};
1304
+ --sidebar-foreground: ${dark.foreground};
1305
+ --sidebar-primary: ${dark.primary};
1306
+ --sidebar-primary-foreground: ${contrastFg(dark.primary)};
1307
+ --sidebar-accent: ${dark.muted};
1308
+ --sidebar-accent-foreground: ${dark.foreground};
1309
+ --sidebar-border: ${dark.border};
1310
+ --sidebar-ring: ${dark.primary};
1311
+ `;
1312
+ const radius = config.tokens.radius?.md ?? "0.5rem";
1249
1313
  return `:root {
1314
+ --radius: ${radius};
1250
1315
  --background: ${light.background};
1251
1316
  --foreground: ${light.foreground};
1252
1317
  --primary: ${light.primary};
@@ -1268,7 +1333,7 @@ function buildCssVariables(config) {
1268
1333
  --warning: ${light.warning};
1269
1334
  --error: ${light.error};
1270
1335
  --info: ${light.info || light.primary};
1271
- ${accentVars}}
1336
+ ${accentVars}${sidebarLightVars}${chartLightVars}}
1272
1337
  .dark {
1273
1338
  --background: ${dark.background};
1274
1339
  --foreground: ${dark.foreground};
@@ -1291,7 +1356,7 @@ ${accentVars}}
1291
1356
  --warning: ${dark.warning};
1292
1357
  --error: ${dark.error};
1293
1358
  --info: ${dark.info || dark.primary};
1294
- ${accentDarkVars}}
1359
+ ${accentDarkVars}${sidebarDarkVars}${chartDarkVars}}
1295
1360
  `;
1296
1361
  }
1297
1362
 
@@ -6070,6 +6135,8 @@ ${menuItems}
6070
6135
  <Link href="${signUpItem.route}" className="inline-flex items-center justify-center text-sm font-medium h-9 px-4 rounded-md bg-primary text-primary-foreground hover:bg-primary/90 transition-colors">${signUpItem.label}</Link>` : ""}` : "";
6071
6136
  const dropdownImport = hasDropdowns ? `
6072
6137
  import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '@/components/ui/dropdown-menu'` : "";
6138
+ const sheetImport = `
6139
+ import { Sheet, SheetContent, SheetTrigger } from '@/components/ui/sheet'`;
6073
6140
  const appName = this.escapeString(this.config.name);
6074
6141
  const mobileNavItems = [...ungrouped];
6075
6142
  for (const [, items] of grouped) {
@@ -6089,7 +6156,7 @@ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigge
6089
6156
 
6090
6157
  import Link from 'next/link'
6091
6158
  import { usePathname } from 'next/navigation'
6092
- import { useEffect, useState } from 'react'${dropdownImport}
6159
+ import { useEffect, useState } from 'react'${dropdownImport}${sheetImport}
6093
6160
 
6094
6161
  function ThemeToggle() {
6095
6162
  const [dark, setDark] = useState(false)
@@ -6138,26 +6205,23 @@ export function Header() {
6138
6205
  </div>
6139
6206
  <div className="flex items-center gap-1">${authButtonsBlock}
6140
6207
  <ThemeToggle />
6141
- <button
6142
- onClick={() => setMobileOpen(!mobileOpen)}
6143
- className="flex md:hidden items-center justify-center w-9 h-9 rounded-md text-muted-foreground hover:text-foreground hover:bg-muted transition-colors"
6144
- aria-label="Toggle menu"
6145
- >
6146
- {mobileOpen ? (
6147
- <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>
6148
- ) : (
6149
- <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><line x1="4" x2="20" y1="12" y2="12"/><line x1="4" x2="20" y1="6" y2="6"/><line x1="4" x2="20" y1="18" y2="18"/></svg>
6150
- )}
6151
- </button>
6208
+ <Sheet open={mobileOpen} onOpenChange={setMobileOpen}>
6209
+ <SheetTrigger asChild>
6210
+ <button
6211
+ className="flex md:hidden items-center justify-center w-9 h-9 rounded-md text-muted-foreground hover:text-foreground hover:bg-muted transition-colors"
6212
+ aria-label="Toggle menu"
6213
+ >
6214
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><line x1="4" x2="20" y1="12" y2="12"/><line x1="4" x2="20" y1="6" y2="6"/><line x1="4" x2="20" y1="18" y2="18"/></svg>
6215
+ </button>
6216
+ </SheetTrigger>
6217
+ <SheetContent side="right" className="w-72 p-4">
6218
+ <nav className="flex flex-col gap-1 pt-8">
6219
+ ${mobileLinks}${mobileAuthBlock}
6220
+ </nav>
6221
+ </SheetContent>
6222
+ </Sheet>
6152
6223
  </div>
6153
6224
  </div>
6154
- {mobileOpen && (
6155
- <div className="md:hidden border-t bg-background">
6156
- <div className="mx-auto max-w-7xl px-4 py-3 space-y-1">
6157
- ${mobileLinks}${mobileAuthBlock}
6158
- </div>
6159
- </div>
6160
- )}
6161
6225
  </nav>
6162
6226
  <Link
6163
6227
  href="/design-system"
@@ -6248,7 +6312,7 @@ ${companyColumn}
6248
6312
  `;
6249
6313
  }
6250
6314
  /**
6251
- * Generate shared Sidebar component code for components/shared/sidebar.tsx.
6315
+ * Generate shared Sidebar component code using shadcn/ui Sidebar.
6252
6316
  * Used when navigation.type is 'sidebar' or 'both'.
6253
6317
  */
6254
6318
  generateSharedSidebarCode() {
@@ -6279,71 +6343,71 @@ ${companyColumn}
6279
6343
  ungrouped.push(item);
6280
6344
  }
6281
6345
  }
6282
- const linkItems = ungrouped.map(
6283
- (item) => ` <Link
6284
- href="${item.route}"
6285
- className={\`flex items-center gap-3 rounded-md px-3 py-2 text-sm font-medium transition-colors \${pathname === "${item.route}" ? 'bg-muted text-foreground' : 'text-muted-foreground hover:text-foreground hover:bg-muted/50'}\`}
6286
- >
6287
- ${item.label}
6288
- </Link>`
6289
- ).join("\n");
6290
- const groupBlocks = [];
6291
- for (const [groupName, items] of grouped) {
6292
- const groupLinks = items.map(
6293
- (item) => ` <Link
6294
- href="${item.route}"
6295
- className={\`flex items-center gap-3 rounded-md px-3 py-2 text-sm transition-colors \${pathname === "${item.route}" ? 'bg-muted text-foreground font-medium' : 'text-muted-foreground hover:text-foreground hover:bg-muted/50'}\`}
6296
- >
6297
- ${item.label}
6298
- </Link>`
6299
- ).join("\n");
6300
- groupBlocks.push(` <div className="space-y-1">
6301
- <p className="px-3 py-1 text-xs font-semibold uppercase tracking-wider text-muted-foreground/70">${groupName}</p>
6302
- ${groupLinks}
6303
- </div>`);
6304
- }
6305
- const allSections = [linkItems, ...groupBlocks].filter(Boolean).join("\n");
6346
+ const menuItem = (item) => ` <SidebarMenuItem>
6347
+ <SidebarMenuButton asChild isActive={pathname === "${item.route}"}>
6348
+ <Link href="${item.route}">${item.label}</Link>
6349
+ </SidebarMenuButton>
6350
+ </SidebarMenuItem>`;
6351
+ const ungroupedItems = ungrouped.map(menuItem).join("\n");
6352
+ const groupBlocks = Array.from(grouped.entries()).map(([groupName, items]) => {
6353
+ const groupItems = items.map(menuItem).join("\n");
6354
+ return ` <SidebarGroup>
6355
+ <SidebarGroupLabel>${groupName}</SidebarGroupLabel>
6356
+ <SidebarGroupContent>
6357
+ <SidebarMenu>
6358
+ ${groupItems}
6359
+ </SidebarMenu>
6360
+ </SidebarGroupContent>
6361
+ </SidebarGroup>`;
6362
+ }).join("\n");
6363
+ const mainGroup = ungroupedItems ? ` <SidebarGroup>
6364
+ <SidebarGroupContent>
6365
+ <SidebarMenu>
6366
+ ${ungroupedItems}
6367
+ </SidebarMenu>
6368
+ </SidebarGroupContent>
6369
+ </SidebarGroup>` : "";
6370
+ const allGroups = [mainGroup, groupBlocks].filter(Boolean).join("\n");
6306
6371
  const appName = this.escapeString(this.config.name);
6307
6372
  return `'use client'
6308
6373
 
6309
6374
  import Link from 'next/link'
6310
6375
  import { usePathname } from 'next/navigation'
6311
- import { useState } from 'react'
6312
-
6313
- export function Sidebar() {
6376
+ import {
6377
+ Sidebar,
6378
+ SidebarContent,
6379
+ SidebarGroup,
6380
+ SidebarGroupContent,
6381
+ SidebarGroupLabel,
6382
+ SidebarHeader,
6383
+ SidebarMenu,
6384
+ SidebarMenuButton,
6385
+ SidebarMenuItem,
6386
+ SidebarProvider,
6387
+ SidebarTrigger,
6388
+ } from '@/components/ui/sidebar'
6389
+
6390
+ export function AppSidebar() {
6314
6391
  const pathname = usePathname()
6315
- const [collapsed, setCollapsed] = useState(false)
6316
6392
 
6317
6393
  if (pathname?.startsWith('/design-system')) return null
6318
6394
 
6319
6395
  return (
6320
- <aside className={\`shrink-0 border-r bg-muted/30 transition-all duration-200 \${collapsed ? 'w-16' : 'w-64'}\`}>
6321
- <div className="flex h-14 items-center justify-between border-b px-4">
6322
- {!collapsed && (
6323
- <Link href="/" className="text-sm font-semibold text-foreground truncate">
6324
- ${appName}
6325
- </Link>
6326
- )}
6327
- <button
6328
- onClick={() => setCollapsed(!collapsed)}
6329
- className="flex items-center justify-center w-8 h-8 rounded-md text-muted-foreground hover:text-foreground hover:bg-muted transition-colors"
6330
- aria-label={collapsed ? 'Expand sidebar' : 'Collapse sidebar'}
6331
- >
6332
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
6333
- {collapsed ? (
6334
- <><path d="m9 18 6-6-6-6"/></>
6335
- ) : (
6336
- <><path d="m15 18-6-6 6-6"/></>
6337
- )}
6338
- </svg>
6339
- </button>
6340
- </div>
6341
- {!collapsed && (
6342
- <nav className="flex flex-col gap-1 p-3">
6343
- ${allSections}
6344
- </nav>
6345
- )}
6346
- </aside>
6396
+ <SidebarProvider>
6397
+ <Sidebar>
6398
+ <SidebarHeader>
6399
+ <div className="flex items-center justify-between px-2 py-1">
6400
+ <Link href="/" className="text-sm font-semibold text-foreground truncate">
6401
+ ${appName}
6402
+ </Link>
6403
+ <SidebarTrigger />
6404
+ </div>
6405
+ </SidebarHeader>
6406
+ <SidebarContent>
6407
+ ${allGroups}
6408
+ </SidebarContent>
6409
+ </Sidebar>
6410
+ </SidebarProvider>
6347
6411
  )
6348
6412
  }
6349
6413
  `;
@@ -7082,6 +7146,19 @@ export default config
7082
7146
  --warning: ${light.warning};
7083
7147
  --error: ${light.error};
7084
7148
  --info: ${light.info || light.primary};
7149
+ --sidebar-background: ${light.background};
7150
+ --sidebar-foreground: ${light.foreground};
7151
+ --sidebar-primary: ${light.primary};
7152
+ --sidebar-primary-foreground: ${_ProjectScaffolder.contrastingForeground(light.primary)};
7153
+ --sidebar-accent: ${light.muted};
7154
+ --sidebar-accent-foreground: ${light.foreground};
7155
+ --sidebar-border: ${light.border};
7156
+ --sidebar-ring: ${light.primary};
7157
+ --chart-1: ${light.primary};
7158
+ --chart-2: ${light.secondary};
7159
+ --chart-3: ${light.success};
7160
+ --chart-4: ${light.warning};
7161
+ --chart-5: ${light.error};
7085
7162
  }
7086
7163
 
7087
7164
  .dark {
@@ -7108,6 +7185,19 @@ export default config
7108
7185
  --warning: ${dark.warning};
7109
7186
  --error: ${dark.error};
7110
7187
  --info: ${dark.info || dark.primary};
7188
+ --sidebar-background: ${dark.background};
7189
+ --sidebar-foreground: ${dark.foreground};
7190
+ --sidebar-primary: ${dark.primary};
7191
+ --sidebar-primary-foreground: ${_ProjectScaffolder.contrastingForeground(dark.primary)};
7192
+ --sidebar-accent: ${dark.muted};
7193
+ --sidebar-accent-foreground: ${dark.foreground};
7194
+ --sidebar-border: ${dark.border};
7195
+ --sidebar-ring: ${dark.primary};
7196
+ --chart-1: ${dark.primary};
7197
+ --chart-2: ${dark.secondary};
7198
+ --chart-3: ${dark.success};
7199
+ --chart-4: ${dark.warning};
7200
+ --chart-5: ${dark.error};
7111
7201
  }
7112
7202
 
7113
7203
  * {
@@ -7215,10 +7305,10 @@ export function cn(...inputs: ClassValue[]) {
7215
7305
  if (navType === "sidebar" || navType === "both") {
7216
7306
  const sidebarCode = this.pageGenerator.generateSharedSidebarCode();
7217
7307
  await generateSharedComponent(this.projectRoot, {
7218
- name: "Sidebar",
7308
+ name: "AppSidebar",
7219
7309
  type: "layout",
7220
7310
  code: sidebarCode,
7221
- description: "Vertical sidebar navigation with collapsible sections",
7311
+ description: "Application sidebar using shadcn/ui Sidebar components",
7222
7312
  usedIn: ["app/(app)/layout.tsx"]
7223
7313
  });
7224
7314
  }
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "0.5.12",
6
+ "version": "0.5.13",
7
7
  "description": "Core design system engine for Coherent",
8
8
  "type": "module",
9
9
  "main": "./dist/index.js",