@spectratools/graphic-designer-cli 0.4.0 → 0.6.0

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.
@@ -1,3 +1,3 @@
1
1
  import 'zod';
2
- export { A as AutoLayoutConfig, B as BuiltInTheme, C as CardElement, e as CodeBlockElement, ae as CodeBlockStyle, f as ConnectionElement, g as ConstraintSpec, j as Decorator, k as DesignSafeFrame, D as DesignSpec, l as DrawBadge, m as DrawBezier, n as DrawCircle, b as DrawCommand, o as DrawFontFamily, p as DrawGradientRect, q as DrawLine, r as DrawPath, s as DrawPoint, t as DrawRect, u as DrawText, E as Element, F as FlowNodeElement, G as Gradient, v as GradientOverlayDecorator, af as GradientStop, y as GridLayoutConfig, I as ImageElement, L as LayoutConfig, ag as LinearGradient, M as ManualLayoutConfig, ah as RadialGradient, H as RainbowRuleDecorator, S as ShapeElement, K as StackLayoutConfig, N as TerminalElement, O as TextElement, c as Theme, P as ThemeInput, V as VignetteDecorator, Q as builtInThemeBackgrounds, U as builtInThemes, Y as defaultAutoLayout, Z as defaultCanvas, _ as defaultConstraints, $ as defaultGridLayout, a0 as defaultLayout, a1 as defaultStackLayout, a2 as defaultTheme, a3 as deriveSafeFrame, a4 as designSpecSchema, a8 as inferLayout, aa as parseDesignSpec, ac as resolveTheme } from './spec.schema-BUTof436.js';
2
+ export { A as AutoLayoutConfig, B as BuiltInTheme, e as CardElement, f as CodeBlockElement, ap as CodeBlockStyle, C as ConnectionElement, g as ConstraintSpec, j as Decorator, k as DesignCardSpec, l as DesignSafeFrame, D as DesignSpec, m as DesignTheme, n as DiagramElement, o as DiagramLayout, p as DiagramSpec, q as DrawBadge, r as DrawBezier, s as DrawCircle, b as DrawCommand, t as DrawFontFamily, u as DrawGradientRect, v as DrawLine, w as DrawPath, x as DrawPoint, y as DrawRect, z as DrawText, E as Element, F as FlowNodeElement, aq as FlowNodeShadow, G as Gradient, H as GradientOverlayDecorator, ar as GradientStop, K as GridLayoutConfig, L as ImageElement, M as LayoutConfig, as as LinearGradient, O as ManualLayoutConfig, at as RadialGradient, P as RainbowRuleDecorator, S as ShapeElement, U as StackLayoutConfig, V as TerminalElement, W as TextElement, c as Theme, X as ThemeInput, Y as VignetteDecorator, _ as builtInThemeBackgrounds, $ as builtInThemes, a1 as connectionElementSchema, a2 as defaultAutoLayout, a3 as defaultCanvas, a4 as defaultConstraints, a5 as defaultGridLayout, a6 as defaultLayout, a7 as defaultStackLayout, a8 as defaultTheme, a9 as deriveSafeFrame, aa as designSpecSchema, ab as diagramElementSchema, ac as diagramLayoutSchema, ad as diagramSpecSchema, ah as flowNodeElementSchema, ai as inferLayout, ak as parseDesignSpec, al as parseDiagramSpec, an as resolveTheme } from './spec.schema-Dm_wOLTd.js';
3
3
  import '@napi-rs/canvas';
@@ -444,10 +444,26 @@ var cardElementSchema = z2.object({
444
444
  tone: z2.enum(["neutral", "accent", "success", "warning", "error"]).default("neutral"),
445
445
  icon: z2.string().min(1).max(64).optional()
446
446
  }).strict();
447
+ var flowNodeShadowSchema = z2.object({
448
+ color: colorHexSchema2.optional(),
449
+ blur: z2.number().min(0).max(64).default(8),
450
+ offsetX: z2.number().min(-32).max(32).default(0),
451
+ offsetY: z2.number().min(-32).max(32).default(0),
452
+ opacity: z2.number().min(0).max(1).default(0.3)
453
+ }).strict();
447
454
  var flowNodeElementSchema = z2.object({
448
455
  type: z2.literal("flow-node"),
449
456
  id: z2.string().min(1).max(120),
450
- shape: z2.enum(["box", "rounded-box", "diamond", "circle", "pill", "cylinder", "parallelogram"]),
457
+ shape: z2.enum([
458
+ "box",
459
+ "rounded-box",
460
+ "diamond",
461
+ "circle",
462
+ "pill",
463
+ "cylinder",
464
+ "parallelogram",
465
+ "hexagon"
466
+ ]).default("rounded-box"),
451
467
  label: z2.string().min(1).max(200),
452
468
  sublabel: z2.string().min(1).max(300).optional(),
453
469
  sublabelColor: colorHexSchema2.optional(),
@@ -467,20 +483,25 @@ var flowNodeElementSchema = z2.object({
467
483
  badgeText: z2.string().min(1).max(32).optional(),
468
484
  badgeColor: colorHexSchema2.optional(),
469
485
  badgeBackground: colorHexSchema2.optional(),
470
- badgePosition: z2.enum(["top", "inside-top"]).default("inside-top")
486
+ badgePosition: z2.enum(["top", "inside-top"]).default("inside-top"),
487
+ shadow: flowNodeShadowSchema.optional()
471
488
  }).strict();
472
489
  var connectionElementSchema = z2.object({
473
490
  type: z2.literal("connection"),
474
491
  from: z2.string().min(1).max(120),
475
492
  to: z2.string().min(1).max(120),
476
493
  style: z2.enum(["solid", "dashed", "dotted"]).default("solid"),
494
+ strokeStyle: z2.enum(["solid", "dashed", "dotted"]).default("solid"),
477
495
  arrow: z2.enum(["end", "start", "both", "none"]).default("end"),
478
496
  label: z2.string().min(1).max(200).optional(),
479
497
  labelPosition: z2.enum(["start", "middle", "end"]).default("middle"),
480
498
  color: colorHexSchema2.optional(),
481
- width: z2.number().min(0.5).max(8).optional(),
499
+ width: z2.number().min(0.5).max(10).optional(),
500
+ strokeWidth: z2.number().min(0.5).max(10).default(2),
482
501
  arrowSize: z2.number().min(4).max(32).optional(),
483
- opacity: z2.number().min(0).max(1).default(1)
502
+ opacity: z2.number().min(0).max(1).default(1),
503
+ routing: z2.enum(["auto", "orthogonal", "curve", "arc"]).default("auto"),
504
+ tension: z2.number().min(0.1).max(0.8).default(0.35)
484
505
  }).strict();
485
506
  var codeBlockStyleSchema = z2.object({
486
507
  paddingVertical: z2.number().min(0).max(128).default(56),
@@ -549,6 +570,10 @@ var elementSchema = z2.discriminatedUnion("type", [
549
570
  shapeElementSchema,
550
571
  imageElementSchema
551
572
  ]);
573
+ var diagramCenterSchema = z2.object({
574
+ x: z2.number(),
575
+ y: z2.number()
576
+ }).strict();
552
577
  var autoLayoutConfigSchema = z2.object({
553
578
  mode: z2.literal("auto"),
554
579
  algorithm: z2.enum(["layered", "stress", "force", "radial", "box"]).default("layered"),
@@ -564,7 +589,9 @@ var autoLayoutConfigSchema = z2.object({
564
589
  /** Compaction strategy for radial layout. Only relevant when algorithm is 'radial'. */
565
590
  radialCompaction: z2.enum(["none", "radial", "wedge"]).optional(),
566
591
  /** Sort strategy for radial layout node ordering. Only relevant when algorithm is 'radial'. */
567
- radialSortBy: z2.enum(["id", "connections"]).optional()
592
+ radialSortBy: z2.enum(["id", "connections"]).optional(),
593
+ /** Explicit center used by curve/arc connection routing. */
594
+ diagramCenter: diagramCenterSchema.optional()
568
595
  }).strict();
569
596
  var gridLayoutConfigSchema = z2.object({
570
597
  mode: z2.literal("grid"),
@@ -572,13 +599,17 @@ var gridLayoutConfigSchema = z2.object({
572
599
  gap: z2.number().int().min(0).max(256).default(24),
573
600
  cardMinHeight: z2.number().int().min(32).max(4096).optional(),
574
601
  cardMaxHeight: z2.number().int().min(32).max(4096).optional(),
575
- equalHeight: z2.boolean().default(false)
602
+ equalHeight: z2.boolean().default(false),
603
+ /** Explicit center used by curve/arc connection routing. */
604
+ diagramCenter: diagramCenterSchema.optional()
576
605
  }).strict();
577
606
  var stackLayoutConfigSchema = z2.object({
578
607
  mode: z2.literal("stack"),
579
608
  direction: z2.enum(["vertical", "horizontal"]).default("vertical"),
580
609
  gap: z2.number().int().min(0).max(256).default(24),
581
- alignment: z2.enum(["start", "center", "end", "stretch"]).default("stretch")
610
+ alignment: z2.enum(["start", "center", "end", "stretch"]).default("stretch"),
611
+ /** Explicit center used by curve/arc connection routing. */
612
+ diagramCenter: diagramCenterSchema.optional()
582
613
  }).strict();
583
614
  var manualPositionSchema = z2.object({
584
615
  x: z2.number().int(),
@@ -588,7 +619,9 @@ var manualPositionSchema = z2.object({
588
619
  }).strict();
589
620
  var manualLayoutConfigSchema = z2.object({
590
621
  mode: z2.literal("manual"),
591
- positions: z2.record(z2.string().min(1), manualPositionSchema).default({})
622
+ positions: z2.record(z2.string().min(1), manualPositionSchema).default({}),
623
+ /** Explicit center used by curve/arc connection routing. */
624
+ diagramCenter: diagramCenterSchema.optional()
592
625
  }).strict();
593
626
  var layoutConfigSchema = z2.discriminatedUnion("mode", [
594
627
  autoLayoutConfigSchema,
@@ -640,6 +673,31 @@ var canvasSchema = z2.object({
640
673
  padding: z2.number().int().min(0).max(256).default(defaultCanvas.padding)
641
674
  }).strict();
642
675
  var themeInputSchema = z2.union([builtInThemeSchema, themeSchema]);
676
+ var diagramPositionSchema = z2.object({
677
+ x: z2.number(),
678
+ y: z2.number(),
679
+ width: z2.number().positive(),
680
+ height: z2.number().positive()
681
+ }).strict();
682
+ var diagramElementSchema = z2.discriminatedUnion("type", [
683
+ flowNodeElementSchema,
684
+ connectionElementSchema
685
+ ]);
686
+ var diagramLayoutSchema = z2.object({
687
+ mode: z2.enum(["manual", "auto"]).default("manual"),
688
+ positions: z2.record(z2.string(), diagramPositionSchema).optional(),
689
+ diagramCenter: diagramCenterSchema.optional()
690
+ }).strict();
691
+ var diagramSpecSchema = z2.object({
692
+ version: z2.literal(1),
693
+ canvas: z2.object({
694
+ width: z2.number().int().min(320).max(4096).default(1200),
695
+ height: z2.number().int().min(180).max(4096).default(675)
696
+ }).default({ width: 1200, height: 675 }),
697
+ theme: themeSchema.optional(),
698
+ elements: z2.array(diagramElementSchema).min(1),
699
+ layout: diagramLayoutSchema.default({ mode: "manual" })
700
+ }).strict();
643
701
  var designSpecSchema = z2.object({
644
702
  version: z2.literal(2).default(2),
645
703
  canvas: canvasSchema.default(defaultCanvas),
@@ -664,12 +722,16 @@ function deriveSafeFrame(spec) {
664
722
  height: spec.canvas.height - spec.canvas.padding * 2
665
723
  };
666
724
  }
725
+ function parseDiagramSpec(input) {
726
+ return diagramSpecSchema.parse(input);
727
+ }
667
728
  function parseDesignSpec(input) {
668
729
  return designSpecSchema.parse(input);
669
730
  }
670
731
  export {
671
732
  builtInThemeBackgrounds,
672
733
  builtInThemes,
734
+ connectionElementSchema,
673
735
  defaultAutoLayout,
674
736
  defaultCanvas,
675
737
  defaultConstraints,
@@ -679,7 +741,12 @@ export {
679
741
  defaultTheme,
680
742
  deriveSafeFrame,
681
743
  designSpecSchema,
744
+ diagramElementSchema,
745
+ diagramLayoutSchema,
746
+ diagramSpecSchema,
747
+ flowNodeElementSchema,
682
748
  inferLayout,
683
749
  parseDesignSpec,
750
+ parseDiagramSpec,
684
751
  resolveTheme
685
752
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spectratools/graphic-designer-cli",
3
- "version": "0.4.0",
3
+ "version": "0.6.0",
4
4
  "description": "Deterministic visual content generator — code screenshots, terminal shots, flowcharts, and infographics. No browser dependency.",
5
5
  "type": "module",
6
6
  "license": "MIT",