@getcoherent/core 0.6.13 → 0.6.16

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
@@ -1110,7 +1110,7 @@ interface NavigationItem {
1110
1110
  */
1111
1111
  declare const NavigationSchema: z.ZodObject<{
1112
1112
  enabled: z.ZodDefault<z.ZodBoolean>;
1113
- type: z.ZodDefault<z.ZodEnum<["header", "sidebar", "both"]>>;
1113
+ type: z.ZodDefault<z.ZodEnum<["header", "sidebar", "both", "none"]>>;
1114
1114
  items: z.ZodArray<z.ZodType<NavigationItem, z.ZodTypeDef, NavigationItem>, "many">;
1115
1115
  logo: z.ZodOptional<z.ZodObject<{
1116
1116
  text: z.ZodOptional<z.ZodString>;
@@ -1123,7 +1123,7 @@ declare const NavigationSchema: z.ZodObject<{
1123
1123
  image?: string | undefined;
1124
1124
  }>>;
1125
1125
  }, "strip", z.ZodTypeAny, {
1126
- type: "header" | "sidebar" | "both";
1126
+ type: "none" | "header" | "sidebar" | "both";
1127
1127
  enabled: boolean;
1128
1128
  items: NavigationItem[];
1129
1129
  logo?: {
@@ -1132,7 +1132,7 @@ declare const NavigationSchema: z.ZodObject<{
1132
1132
  } | undefined;
1133
1133
  }, {
1134
1134
  items: NavigationItem[];
1135
- type?: "header" | "sidebar" | "both" | undefined;
1135
+ type?: "none" | "header" | "sidebar" | "both" | undefined;
1136
1136
  enabled?: boolean | undefined;
1137
1137
  logo?: {
1138
1138
  text?: string | undefined;
@@ -2017,7 +2017,7 @@ declare const DesignSystemConfigSchema: z.ZodObject<{
2017
2017
  }>, "many">;
2018
2018
  navigation: z.ZodOptional<z.ZodObject<{
2019
2019
  enabled: z.ZodDefault<z.ZodBoolean>;
2020
- type: z.ZodDefault<z.ZodEnum<["header", "sidebar", "both"]>>;
2020
+ type: z.ZodDefault<z.ZodEnum<["header", "sidebar", "both", "none"]>>;
2021
2021
  items: z.ZodArray<z.ZodType<NavigationItem, z.ZodTypeDef, NavigationItem>, "many">;
2022
2022
  logo: z.ZodOptional<z.ZodObject<{
2023
2023
  text: z.ZodOptional<z.ZodString>;
@@ -2030,7 +2030,7 @@ declare const DesignSystemConfigSchema: z.ZodObject<{
2030
2030
  image?: string | undefined;
2031
2031
  }>>;
2032
2032
  }, "strip", z.ZodTypeAny, {
2033
- type: "header" | "sidebar" | "both";
2033
+ type: "none" | "header" | "sidebar" | "both";
2034
2034
  enabled: boolean;
2035
2035
  items: NavigationItem[];
2036
2036
  logo?: {
@@ -2039,7 +2039,7 @@ declare const DesignSystemConfigSchema: z.ZodObject<{
2039
2039
  } | undefined;
2040
2040
  }, {
2041
2041
  items: NavigationItem[];
2042
- type?: "header" | "sidebar" | "both" | undefined;
2042
+ type?: "none" | "header" | "sidebar" | "both" | undefined;
2043
2043
  enabled?: boolean | undefined;
2044
2044
  logo?: {
2045
2045
  text?: string | undefined;
@@ -2176,6 +2176,7 @@ declare const DesignSystemConfigSchema: z.ZodObject<{
2176
2176
  autoScaffold?: boolean | undefined;
2177
2177
  homePagePlaceholder?: boolean | undefined;
2178
2178
  }>;
2179
+ groupLayouts: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<["header", "sidebar", "both", "none"]>>>;
2179
2180
  createdAt: z.ZodString;
2180
2181
  updatedAt: z.ZodString;
2181
2182
  }, "strip", z.ZodTypeAny, {
@@ -2373,7 +2374,7 @@ declare const DesignSystemConfigSchema: z.ZodObject<{
2373
2374
  deployTarget?: "vercel" | "netlify" | "cloudflare" | "self-hosted" | undefined;
2374
2375
  };
2375
2376
  navigation?: {
2376
- type: "header" | "sidebar" | "both";
2377
+ type: "none" | "header" | "sidebar" | "both";
2377
2378
  enabled: boolean;
2378
2379
  items: NavigationItem[];
2379
2380
  logo?: {
@@ -2387,6 +2388,7 @@ declare const DesignSystemConfigSchema: z.ZodObject<{
2387
2388
  react: string;
2388
2389
  tailwind: string;
2389
2390
  } | undefined;
2391
+ groupLayouts?: Record<string, "none" | "header" | "sidebar" | "both"> | undefined;
2390
2392
  }, {
2391
2393
  name: string;
2392
2394
  description: string;
@@ -2564,7 +2566,7 @@ declare const DesignSystemConfigSchema: z.ZodObject<{
2564
2566
  };
2565
2567
  navigation?: {
2566
2568
  items: NavigationItem[];
2567
- type?: "header" | "sidebar" | "both" | undefined;
2569
+ type?: "none" | "header" | "sidebar" | "both" | undefined;
2568
2570
  enabled?: boolean | undefined;
2569
2571
  logo?: {
2570
2572
  text?: string | undefined;
@@ -2596,6 +2598,7 @@ declare const DesignSystemConfigSchema: z.ZodObject<{
2596
2598
  }[] | undefined;
2597
2599
  generatedCode?: string | undefined;
2598
2600
  }[] | undefined;
2601
+ groupLayouts?: Record<string, "none" | "header" | "sidebar" | "both"> | undefined;
2599
2602
  }>;
2600
2603
  type DesignSystemConfig = z.infer<typeof DesignSystemConfigSchema>;
2601
2604
  /**
@@ -2733,8 +2736,8 @@ interface ComponentProvider {
2733
2736
  * See docs/epic-2-shared-components.md.
2734
2737
  */
2735
2738
 
2736
- /** Shared component type: layout (layout.tsx), section (reusable block), widget (small element) */
2737
- declare const SharedComponentTypeSchema: z.ZodEnum<["layout", "section", "widget"]>;
2739
+ /** Shared component type classification */
2740
+ declare const SharedComponentTypeSchema: z.ZodEnum<["layout", "navigation", "data-display", "form", "feedback", "section", "widget"]>;
2738
2741
  type SharedComponentType = z.infer<typeof SharedComponentTypeSchema>;
2739
2742
  /** Single entry in the shared components registry */
2740
2743
  declare const SharedComponentEntrySchema: z.ZodObject<{
@@ -2743,7 +2746,7 @@ declare const SharedComponentEntrySchema: z.ZodObject<{
2743
2746
  /** Display name (e.g. "Header", "PricingCard") */
2744
2747
  name: z.ZodString;
2745
2748
  /** layout | section | widget */
2746
- type: z.ZodEnum<["layout", "section", "widget"]>;
2749
+ type: z.ZodEnum<["layout", "navigation", "data-display", "form", "feedback", "section", "widget"]>;
2747
2750
  /** Path to component file relative to project root */
2748
2751
  file: z.ZodString;
2749
2752
  /** List of file paths that import this component (e.g. ["app/layout.tsx", "app/dashboard/page.tsx"]) */
@@ -2753,24 +2756,36 @@ declare const SharedComponentEntrySchema: z.ZodObject<{
2753
2756
  description: z.ZodOptional<z.ZodString>;
2754
2757
  /** TypeScript props interface body, e.g. "{ icon: React.ReactNode; title: string }" */
2755
2758
  propsInterface: z.ZodOptional<z.ZodString>;
2759
+ /** Example JSX usage, e.g. '<StatsCard icon={Users} value="1,234" />' */
2760
+ usageExample: z.ZodOptional<z.ZodString>;
2761
+ /** Package and component dependencies, e.g. ['lucide-react', 'components/ui/card'] */
2762
+ dependencies: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
2763
+ /** How this component was created */
2764
+ source: z.ZodOptional<z.ZodEnum<["extracted", "generated", "manual"]>>;
2756
2765
  }, "strip", z.ZodTypeAny, {
2757
- type: "layout" | "section" | "widget";
2766
+ type: "form" | "layout" | "navigation" | "feedback" | "data-display" | "section" | "widget";
2758
2767
  name: string;
2759
2768
  id: string;
2760
2769
  file: string;
2761
2770
  usedIn: string[];
2771
+ dependencies: string[];
2762
2772
  description?: string | undefined;
2773
+ source?: "extracted" | "generated" | "manual" | undefined;
2763
2774
  createdAt?: string | undefined;
2764
2775
  propsInterface?: string | undefined;
2776
+ usageExample?: string | undefined;
2765
2777
  }, {
2766
- type: "layout" | "section" | "widget";
2778
+ type: "form" | "layout" | "navigation" | "feedback" | "data-display" | "section" | "widget";
2767
2779
  name: string;
2768
2780
  id: string;
2769
2781
  file: string;
2770
2782
  description?: string | undefined;
2783
+ source?: "extracted" | "generated" | "manual" | undefined;
2771
2784
  createdAt?: string | undefined;
2772
2785
  usedIn?: string[] | undefined;
2773
2786
  propsInterface?: string | undefined;
2787
+ usageExample?: string | undefined;
2788
+ dependencies?: string[] | undefined;
2774
2789
  }>;
2775
2790
  type SharedComponentEntry = z.infer<typeof SharedComponentEntrySchema>;
2776
2791
  /** Root schema for coherent.components.json */
@@ -2781,7 +2796,7 @@ declare const SharedComponentsManifestSchema: z.ZodObject<{
2781
2796
  /** Display name (e.g. "Header", "PricingCard") */
2782
2797
  name: z.ZodString;
2783
2798
  /** layout | section | widget */
2784
- type: z.ZodEnum<["layout", "section", "widget"]>;
2799
+ type: z.ZodEnum<["layout", "navigation", "data-display", "form", "feedback", "section", "widget"]>;
2785
2800
  /** Path to component file relative to project root */
2786
2801
  file: z.ZodString;
2787
2802
  /** List of file paths that import this component (e.g. ["app/layout.tsx", "app/dashboard/page.tsx"]) */
@@ -2791,49 +2806,67 @@ declare const SharedComponentsManifestSchema: z.ZodObject<{
2791
2806
  description: z.ZodOptional<z.ZodString>;
2792
2807
  /** TypeScript props interface body, e.g. "{ icon: React.ReactNode; title: string }" */
2793
2808
  propsInterface: z.ZodOptional<z.ZodString>;
2809
+ /** Example JSX usage, e.g. '<StatsCard icon={Users} value="1,234" />' */
2810
+ usageExample: z.ZodOptional<z.ZodString>;
2811
+ /** Package and component dependencies, e.g. ['lucide-react', 'components/ui/card'] */
2812
+ dependencies: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
2813
+ /** How this component was created */
2814
+ source: z.ZodOptional<z.ZodEnum<["extracted", "generated", "manual"]>>;
2794
2815
  }, "strip", z.ZodTypeAny, {
2795
- type: "layout" | "section" | "widget";
2816
+ type: "form" | "layout" | "navigation" | "feedback" | "data-display" | "section" | "widget";
2796
2817
  name: string;
2797
2818
  id: string;
2798
2819
  file: string;
2799
2820
  usedIn: string[];
2821
+ dependencies: string[];
2800
2822
  description?: string | undefined;
2823
+ source?: "extracted" | "generated" | "manual" | undefined;
2801
2824
  createdAt?: string | undefined;
2802
2825
  propsInterface?: string | undefined;
2826
+ usageExample?: string | undefined;
2803
2827
  }, {
2804
- type: "layout" | "section" | "widget";
2828
+ type: "form" | "layout" | "navigation" | "feedback" | "data-display" | "section" | "widget";
2805
2829
  name: string;
2806
2830
  id: string;
2807
2831
  file: string;
2808
2832
  description?: string | undefined;
2833
+ source?: "extracted" | "generated" | "manual" | undefined;
2809
2834
  createdAt?: string | undefined;
2810
2835
  usedIn?: string[] | undefined;
2811
2836
  propsInterface?: string | undefined;
2837
+ usageExample?: string | undefined;
2838
+ dependencies?: string[] | undefined;
2812
2839
  }>, "many">>;
2813
2840
  /** Next numeric id for new entries (CID-XXX → nextId = 4 for CID-004) */
2814
2841
  nextId: z.ZodDefault<z.ZodNumber>;
2815
2842
  }, "strip", z.ZodTypeAny, {
2816
2843
  shared: {
2817
- type: "layout" | "section" | "widget";
2844
+ type: "form" | "layout" | "navigation" | "feedback" | "data-display" | "section" | "widget";
2818
2845
  name: string;
2819
2846
  id: string;
2820
2847
  file: string;
2821
2848
  usedIn: string[];
2849
+ dependencies: string[];
2822
2850
  description?: string | undefined;
2851
+ source?: "extracted" | "generated" | "manual" | undefined;
2823
2852
  createdAt?: string | undefined;
2824
2853
  propsInterface?: string | undefined;
2854
+ usageExample?: string | undefined;
2825
2855
  }[];
2826
2856
  nextId: number;
2827
2857
  }, {
2828
2858
  shared?: {
2829
- type: "layout" | "section" | "widget";
2859
+ type: "form" | "layout" | "navigation" | "feedback" | "data-display" | "section" | "widget";
2830
2860
  name: string;
2831
2861
  id: string;
2832
2862
  file: string;
2833
2863
  description?: string | undefined;
2864
+ source?: "extracted" | "generated" | "manual" | undefined;
2834
2865
  createdAt?: string | undefined;
2835
2866
  usedIn?: string[] | undefined;
2836
2867
  propsInterface?: string | undefined;
2868
+ usageExample?: string | undefined;
2869
+ dependencies?: string[] | undefined;
2837
2870
  }[] | undefined;
2838
2871
  nextId?: number | undefined;
2839
2872
  }>;
@@ -3146,6 +3179,9 @@ interface CreateSharedComponentInput {
3146
3179
  usedIn?: string[];
3147
3180
  description?: string;
3148
3181
  propsInterface?: string;
3182
+ usageExample?: string;
3183
+ dependencies?: string[];
3184
+ source?: 'extracted' | 'generated' | 'manual';
3149
3185
  }
3150
3186
  /**
3151
3187
  * Add a new shared component: allocate CID, set createdAt, append to shared, increment nextId.
@@ -3557,6 +3593,9 @@ interface GenerateSharedComponentInput {
3557
3593
  overwrite?: boolean;
3558
3594
  /** TypeScript props interface body, e.g. "{ title: string; icon: React.ReactNode }". */
3559
3595
  propsInterface?: string;
3596
+ usageExample?: string;
3597
+ dependencies?: string[];
3598
+ source?: 'extracted' | 'generated' | 'manual';
3560
3599
  }
3561
3600
  interface GenerateSharedComponentResult {
3562
3601
  id: string;
package/dist/index.js CHANGED
@@ -217,7 +217,7 @@ var NavigationItemSchema = z.object({
217
217
  });
218
218
  var NavigationSchema = z.object({
219
219
  enabled: z.boolean().default(true),
220
- type: z.enum(["header", "sidebar", "both"]).default("header"),
220
+ type: z.enum(["header", "sidebar", "both", "none"]).default("header"),
221
221
  items: z.array(NavigationItemSchema),
222
222
  logo: z.object({
223
223
  text: z.string().optional(),
@@ -299,6 +299,8 @@ var DesignSystemConfigSchema = z.object({
299
299
  // True when the home page is the init placeholder (not yet AI-generated)
300
300
  homePagePlaceholder: z.boolean().default(false)
301
301
  }),
302
+ // Per-group layout types (e.g. { app: 'sidebar', public: 'header' })
303
+ groupLayouts: z.record(z.enum(["header", "sidebar", "both", "none"])).optional(),
302
304
  // Timestamps
303
305
  createdAt: z.string().datetime(),
304
306
  updatedAt: z.string().datetime()
@@ -454,7 +456,15 @@ var EXAMPLE_SPA_CONFIG = {
454
456
 
455
457
  // src/types/shared-components-manifest.ts
456
458
  import { z as z2 } from "zod";
457
- var SharedComponentTypeSchema = z2.enum(["layout", "section", "widget"]);
459
+ var SharedComponentTypeSchema = z2.enum([
460
+ "layout",
461
+ "navigation",
462
+ "data-display",
463
+ "form",
464
+ "feedback",
465
+ "section",
466
+ "widget"
467
+ ]);
458
468
  var SharedComponentEntrySchema = z2.object({
459
469
  /** Unique ID: CID-001, CID-002, ... */
460
470
  id: z2.string().regex(/^CID-\d{3,}$/, "Must be CID-XXX with zero-padded number"),
@@ -470,7 +480,13 @@ var SharedComponentEntrySchema = z2.object({
470
480
  /** Human-readable description */
471
481
  description: z2.string().optional(),
472
482
  /** TypeScript props interface body, e.g. "{ icon: React.ReactNode; title: string }" */
473
- propsInterface: z2.string().optional()
483
+ propsInterface: z2.string().optional(),
484
+ /** Example JSX usage, e.g. '<StatsCard icon={Users} value="1,234" />' */
485
+ usageExample: z2.string().optional(),
486
+ /** Package and component dependencies, e.g. ['lucide-react', 'components/ui/card'] */
487
+ dependencies: z2.array(z2.string()).default([]),
488
+ /** How this component was created */
489
+ source: z2.enum(["extracted", "generated", "manual"]).optional()
474
490
  });
475
491
  var SharedComponentsManifestSchema = z2.object({
476
492
  shared: z2.array(SharedComponentEntrySchema).default([]),
@@ -1977,6 +1993,9 @@ function createEntry(manifest, input) {
1977
1993
  usedIn: input.usedIn ?? [],
1978
1994
  description: input.description,
1979
1995
  propsInterface: input.propsInterface,
1996
+ usageExample: input.usageExample,
1997
+ dependencies: input.dependencies ?? [],
1998
+ source: input.source,
1980
1999
  createdAt: now
1981
2000
  };
1982
2001
  const nextManifest = {
@@ -6390,7 +6409,6 @@ import {
6390
6409
  SidebarMenu,
6391
6410
  SidebarMenuButton,
6392
6411
  SidebarMenuItem,
6393
- SidebarProvider,
6394
6412
  SidebarTrigger,
6395
6413
  } from '@/components/ui/sidebar'
6396
6414
 
@@ -6400,21 +6418,19 @@ export function AppSidebar() {
6400
6418
  if (pathname?.startsWith('/design-system')) return null
6401
6419
 
6402
6420
  return (
6403
- <SidebarProvider>
6404
- <Sidebar>
6405
- <SidebarHeader>
6406
- <div className="flex items-center justify-between px-2 py-1">
6407
- <Link href="/" className="text-sm font-semibold text-foreground truncate">
6408
- ${appName}
6409
- </Link>
6410
- <SidebarTrigger />
6411
- </div>
6412
- </SidebarHeader>
6413
- <SidebarContent>
6421
+ <Sidebar>
6422
+ <SidebarHeader>
6423
+ <div className="flex items-center justify-between px-2 py-1">
6424
+ <Link href="/" className="text-sm font-semibold text-foreground truncate">
6425
+ ${appName}
6426
+ </Link>
6427
+ <SidebarTrigger />
6428
+ </div>
6429
+ </SidebarHeader>
6430
+ <SidebarContent>
6414
6431
  ${allGroups}
6415
- </SidebarContent>
6416
- </Sidebar>
6417
- </SidebarProvider>
6432
+ </SidebarContent>
6433
+ </Sidebar>
6418
6434
  )
6419
6435
  }
6420
6436
  `;
@@ -6826,7 +6842,10 @@ async function generateSharedComponent(projectRoot, input) {
6826
6842
  file: filePath,
6827
6843
  usedIn: input.usedIn ?? [],
6828
6844
  description: input.description,
6829
- propsInterface: input.propsInterface
6845
+ propsInterface: input.propsInterface,
6846
+ usageExample: input.usageExample,
6847
+ dependencies: input.dependencies,
6848
+ source: input.source
6830
6849
  });
6831
6850
  await saveManifest(projectRoot, nextManifest);
6832
6851
  return { id: entry.id, name: entry.name, file: entry.file };
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "0.6.13",
6
+ "version": "0.6.16",
7
7
  "description": "Core design system engine for Coherent",
8
8
  "type": "module",
9
9
  "main": "./dist/index.js",