@spectratools/graphic-designer-cli 0.4.0 → 0.7.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 AnchorHint, e as AutoLayoutConfig, B as BuiltInTheme, f as CardElement, g as CodeBlockElement, aq as CodeBlockStyle, C as ConnectionElement, h as ConstraintSpec, k as Decorator, l as DesignCardSpec, m as DesignSafeFrame, D as DesignSpec, n as DesignTheme, o as DiagramElement, p as DiagramLayout, q as DiagramSpec, r as DrawBadge, s as DrawBezier, t as DrawCircle, b as DrawCommand, u as DrawFontFamily, v as DrawGradientRect, ar as DrawGrid, w as DrawLine, x as DrawPath, y as DrawPoint, z as DrawRect, E as DrawText, F as Element, G as FlowNodeElement, as as FlowNodeShadow, H as Gradient, I as GradientOverlayDecorator, at as GradientStop, L as GridLayoutConfig, M as ImageElement, N as LayoutConfig, au as LinearGradient, P as ManualLayoutConfig, av as RadialGradient, Q as RainbowRuleDecorator, U as ShapeElement, V as StackLayoutConfig, W as TerminalElement, X as TextElement, c as Theme, Y as ThemeInput, Z as VignetteDecorator, $ as builtInThemeBackgrounds, a0 as builtInThemes, a2 as connectionElementSchema, a3 as defaultAutoLayout, a4 as defaultCanvas, a5 as defaultConstraints, a6 as defaultGridLayout, a7 as defaultLayout, a8 as defaultStackLayout, a9 as defaultTheme, aa as deriveSafeFrame, ab as designSpecSchema, ac as diagramElementSchema, ad as diagramLayoutSchema, ae as diagramSpecSchema, ai as flowNodeElementSchema, aj as inferLayout, al as parseDesignSpec, am as parseDiagramSpec, ao as resolveTheme } from './spec.schema-BeFz_nk1.js';
3
3
  import '@napi-rs/canvas';
@@ -371,6 +371,15 @@ var drawGradientRectSchema = z2.object({
371
371
  radius: z2.number().min(0).max(256).default(0),
372
372
  opacity: z2.number().min(0).max(1).default(1)
373
373
  }).strict();
374
+ var drawGridSchema = z2.object({
375
+ type: z2.literal("grid"),
376
+ spacing: z2.number().min(5).max(200).default(40),
377
+ color: colorHexSchema2.default("#1E2D4A"),
378
+ width: z2.number().min(0.1).max(4).default(0.5),
379
+ opacity: z2.number().min(0).max(1).default(0.2),
380
+ offsetX: z2.number().default(0),
381
+ offsetY: z2.number().default(0)
382
+ }).strict();
374
383
  var drawCommandSchema = z2.discriminatedUnion("type", [
375
384
  drawRectSchema,
376
385
  drawCircleSchema,
@@ -379,7 +388,8 @@ var drawCommandSchema = z2.discriminatedUnion("type", [
379
388
  drawBezierSchema,
380
389
  drawPathSchema,
381
390
  drawBadgeSchema,
382
- drawGradientRectSchema
391
+ drawGradientRectSchema,
392
+ drawGridSchema
383
393
  ]);
384
394
  var defaultCanvas = {
385
395
  width: 1200,
@@ -444,10 +454,26 @@ var cardElementSchema = z2.object({
444
454
  tone: z2.enum(["neutral", "accent", "success", "warning", "error"]).default("neutral"),
445
455
  icon: z2.string().min(1).max(64).optional()
446
456
  }).strict();
457
+ var flowNodeShadowSchema = z2.object({
458
+ color: colorHexSchema2.optional(),
459
+ blur: z2.number().min(0).max(64).default(8),
460
+ offsetX: z2.number().min(-32).max(32).default(0),
461
+ offsetY: z2.number().min(-32).max(32).default(0),
462
+ opacity: z2.number().min(0).max(1).default(0.3)
463
+ }).strict();
447
464
  var flowNodeElementSchema = z2.object({
448
465
  type: z2.literal("flow-node"),
449
466
  id: z2.string().min(1).max(120),
450
- shape: z2.enum(["box", "rounded-box", "diamond", "circle", "pill", "cylinder", "parallelogram"]),
467
+ shape: z2.enum([
468
+ "box",
469
+ "rounded-box",
470
+ "diamond",
471
+ "circle",
472
+ "pill",
473
+ "cylinder",
474
+ "parallelogram",
475
+ "hexagon"
476
+ ]).default("rounded-box"),
451
477
  label: z2.string().min(1).max(200),
452
478
  sublabel: z2.string().min(1).max(300).optional(),
453
479
  sublabelColor: colorHexSchema2.optional(),
@@ -467,20 +493,35 @@ var flowNodeElementSchema = z2.object({
467
493
  badgeText: z2.string().min(1).max(32).optional(),
468
494
  badgeColor: colorHexSchema2.optional(),
469
495
  badgeBackground: colorHexSchema2.optional(),
470
- badgePosition: z2.enum(["top", "inside-top"]).default("inside-top")
496
+ badgePosition: z2.enum(["top", "inside-top"]).default("inside-top"),
497
+ shadow: flowNodeShadowSchema.optional()
471
498
  }).strict();
499
+ var anchorHintSchema = z2.union([
500
+ z2.enum(["top", "bottom", "left", "right", "center"]),
501
+ z2.object({
502
+ x: z2.number().min(-1).max(1),
503
+ y: z2.number().min(-1).max(1)
504
+ }).strict()
505
+ ]);
472
506
  var connectionElementSchema = z2.object({
473
507
  type: z2.literal("connection"),
474
508
  from: z2.string().min(1).max(120),
475
509
  to: z2.string().min(1).max(120),
476
510
  style: z2.enum(["solid", "dashed", "dotted"]).default("solid"),
511
+ strokeStyle: z2.enum(["solid", "dashed", "dotted"]).default("solid"),
477
512
  arrow: z2.enum(["end", "start", "both", "none"]).default("end"),
478
513
  label: z2.string().min(1).max(200).optional(),
479
514
  labelPosition: z2.enum(["start", "middle", "end"]).default("middle"),
480
515
  color: colorHexSchema2.optional(),
481
- width: z2.number().min(0.5).max(8).optional(),
516
+ width: z2.number().min(0.5).max(10).optional(),
517
+ strokeWidth: z2.number().min(0.5).max(10).default(2),
482
518
  arrowSize: z2.number().min(4).max(32).optional(),
483
- opacity: z2.number().min(0).max(1).default(1)
519
+ arrowPlacement: z2.enum(["endpoint", "boundary"]).default("endpoint"),
520
+ opacity: z2.number().min(0).max(1).default(1),
521
+ routing: z2.enum(["auto", "orthogonal", "curve", "arc"]).default("auto"),
522
+ tension: z2.number().min(0.1).max(0.8).default(0.35),
523
+ fromAnchor: anchorHintSchema.optional(),
524
+ toAnchor: anchorHintSchema.optional()
484
525
  }).strict();
485
526
  var codeBlockStyleSchema = z2.object({
486
527
  paddingVertical: z2.number().min(0).max(128).default(56),
@@ -549,6 +590,10 @@ var elementSchema = z2.discriminatedUnion("type", [
549
590
  shapeElementSchema,
550
591
  imageElementSchema
551
592
  ]);
593
+ var diagramCenterSchema = z2.object({
594
+ x: z2.number(),
595
+ y: z2.number()
596
+ }).strict();
552
597
  var autoLayoutConfigSchema = z2.object({
553
598
  mode: z2.literal("auto"),
554
599
  algorithm: z2.enum(["layered", "stress", "force", "radial", "box"]).default("layered"),
@@ -564,7 +609,9 @@ var autoLayoutConfigSchema = z2.object({
564
609
  /** Compaction strategy for radial layout. Only relevant when algorithm is 'radial'. */
565
610
  radialCompaction: z2.enum(["none", "radial", "wedge"]).optional(),
566
611
  /** Sort strategy for radial layout node ordering. Only relevant when algorithm is 'radial'. */
567
- radialSortBy: z2.enum(["id", "connections"]).optional()
612
+ radialSortBy: z2.enum(["id", "connections"]).optional(),
613
+ /** Explicit center used by curve/arc connection routing. */
614
+ diagramCenter: diagramCenterSchema.optional()
568
615
  }).strict();
569
616
  var gridLayoutConfigSchema = z2.object({
570
617
  mode: z2.literal("grid"),
@@ -572,13 +619,17 @@ var gridLayoutConfigSchema = z2.object({
572
619
  gap: z2.number().int().min(0).max(256).default(24),
573
620
  cardMinHeight: z2.number().int().min(32).max(4096).optional(),
574
621
  cardMaxHeight: z2.number().int().min(32).max(4096).optional(),
575
- equalHeight: z2.boolean().default(false)
622
+ equalHeight: z2.boolean().default(false),
623
+ /** Explicit center used by curve/arc connection routing. */
624
+ diagramCenter: diagramCenterSchema.optional()
576
625
  }).strict();
577
626
  var stackLayoutConfigSchema = z2.object({
578
627
  mode: z2.literal("stack"),
579
628
  direction: z2.enum(["vertical", "horizontal"]).default("vertical"),
580
629
  gap: z2.number().int().min(0).max(256).default(24),
581
- alignment: z2.enum(["start", "center", "end", "stretch"]).default("stretch")
630
+ alignment: z2.enum(["start", "center", "end", "stretch"]).default("stretch"),
631
+ /** Explicit center used by curve/arc connection routing. */
632
+ diagramCenter: diagramCenterSchema.optional()
582
633
  }).strict();
583
634
  var manualPositionSchema = z2.object({
584
635
  x: z2.number().int(),
@@ -588,7 +639,9 @@ var manualPositionSchema = z2.object({
588
639
  }).strict();
589
640
  var manualLayoutConfigSchema = z2.object({
590
641
  mode: z2.literal("manual"),
591
- positions: z2.record(z2.string().min(1), manualPositionSchema).default({})
642
+ positions: z2.record(z2.string().min(1), manualPositionSchema).default({}),
643
+ /** Explicit center used by curve/arc connection routing. */
644
+ diagramCenter: diagramCenterSchema.optional()
592
645
  }).strict();
593
646
  var layoutConfigSchema = z2.discriminatedUnion("mode", [
594
647
  autoLayoutConfigSchema,
@@ -640,6 +693,31 @@ var canvasSchema = z2.object({
640
693
  padding: z2.number().int().min(0).max(256).default(defaultCanvas.padding)
641
694
  }).strict();
642
695
  var themeInputSchema = z2.union([builtInThemeSchema, themeSchema]);
696
+ var diagramPositionSchema = z2.object({
697
+ x: z2.number(),
698
+ y: z2.number(),
699
+ width: z2.number().positive(),
700
+ height: z2.number().positive()
701
+ }).strict();
702
+ var diagramElementSchema = z2.discriminatedUnion("type", [
703
+ flowNodeElementSchema,
704
+ connectionElementSchema
705
+ ]);
706
+ var diagramLayoutSchema = z2.object({
707
+ mode: z2.enum(["manual", "auto"]).default("manual"),
708
+ positions: z2.record(z2.string(), diagramPositionSchema).optional(),
709
+ diagramCenter: diagramCenterSchema.optional()
710
+ }).strict();
711
+ var diagramSpecSchema = z2.object({
712
+ version: z2.literal(1),
713
+ canvas: z2.object({
714
+ width: z2.number().int().min(320).max(4096).default(1200),
715
+ height: z2.number().int().min(180).max(4096).default(675)
716
+ }).default({ width: 1200, height: 675 }),
717
+ theme: themeSchema.optional(),
718
+ elements: z2.array(diagramElementSchema).min(1),
719
+ layout: diagramLayoutSchema.default({ mode: "manual" })
720
+ }).strict();
643
721
  var designSpecSchema = z2.object({
644
722
  version: z2.literal(2).default(2),
645
723
  canvas: canvasSchema.default(defaultCanvas),
@@ -664,12 +742,16 @@ function deriveSafeFrame(spec) {
664
742
  height: spec.canvas.height - spec.canvas.padding * 2
665
743
  };
666
744
  }
745
+ function parseDiagramSpec(input) {
746
+ return diagramSpecSchema.parse(input);
747
+ }
667
748
  function parseDesignSpec(input) {
668
749
  return designSpecSchema.parse(input);
669
750
  }
670
751
  export {
671
752
  builtInThemeBackgrounds,
672
753
  builtInThemes,
754
+ connectionElementSchema,
673
755
  defaultAutoLayout,
674
756
  defaultCanvas,
675
757
  defaultConstraints,
@@ -679,7 +761,12 @@ export {
679
761
  defaultTheme,
680
762
  deriveSafeFrame,
681
763
  designSpecSchema,
764
+ diagramElementSchema,
765
+ diagramLayoutSchema,
766
+ diagramSpecSchema,
767
+ flowNodeElementSchema,
682
768
  inferLayout,
683
769
  parseDesignSpec,
770
+ parseDiagramSpec,
684
771
  resolveTheme
685
772
  };
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.7.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",