@ztffn/presentation-generator-plugin 1.2.0 → 1.3.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,164 +0,0 @@
1
- ---
2
- name: pitch-reference
3
- description: Reference example of a complete 7-node presentation graph JSON demonstrating key slide types and edge wiring.
4
- ---
5
-
6
- # Pitch Reference Example
7
-
8
- A 7-node presentation demonstrating key slide types. Each node shows a different design pattern the design agent should know how to produce.
9
-
10
- ```json
11
- {
12
- "_node_1_comment": "COVER NODE: centered, branded, brand font. Sets the context. No content-heavy text.",
13
- "_node_2_comment": "CONTENT NODE: standard bullets, left-aligned (centered:false). Includes notes field for speaker context. The workhorse slide type.",
14
- "_node_3_comment": "TWO-COLUMN NODE: layout:two-column splits on --- delimiter. Good for comparison or text+visual.",
15
- "_node_4_comment": "INLINE CHART NODE: [chart:name] tag in content with charts record. Data supports the text argument.",
16
- "_node_5_comment": "R3F SCENE NODE: type:r3f with scene config. lightText:true for dark background. Content overlays the 3D scene.",
17
- "_node_6_comment": "BACKGROUND IMAGE NODE: Unsplash URL, overlay for readability, lightText. Mood-setting slide.",
18
- "_node_7_comment": "CLOSING NODE: centered, branded, call to action. Mirrors cover structure.",
19
-
20
- "nodes": [
21
- {
22
- "id": "cover",
23
- "type": "huma",
24
- "position": { "x": 0, "y": 0 },
25
- "data": {
26
- "label": "Graph-Based Presentations",
27
- "topic": "Huma Showcase",
28
- "content": "Non-linear storytelling for technical teams.\n\nNavigate with arrow keys. Press **down** to drill into any topic.",
29
- "centered": true,
30
- "brandFont": true,
31
- "showBranding": true,
32
- "brandingText": "huma.energy"
33
- },
34
- "style": { "width": 180, "height": 70 },
35
- "measured": { "width": 180, "height": 70 }
36
- },
37
- {
38
- "id": "problem",
39
- "type": "huma",
40
- "position": { "x": 240, "y": 0 },
41
- "data": {
42
- "label": "The Problem",
43
- "topic": "01 / Problem",
44
- "content": "## Linear tools break complex stories\n\n- Cannot branch based on audience questions\n- Skipping sections breaks the flow\n- Presenters get lost navigating dense topics\n- No private view for speaker notes during screen share\n\nEvery meeting is different. The presentation should adapt.",
45
- "notes": "Pause here and ask: 'Does this match what you experience with your current tooling?' — their answer shapes how much time to spend on this node. If they push back, the drill-down below has the data. Key talking point: the fourth bullet is the one that resonates most with technical presenters.",
46
- "centered": false
47
- },
48
- "style": { "width": 180, "height": 70 },
49
- "measured": { "width": 180, "height": 70 }
50
- },
51
- {
52
- "id": "value-detail",
53
- "type": "huma",
54
- "position": { "x": 240, "y": 150 },
55
- "data": {
56
- "label": "Value Breakdown",
57
- "topic": "03 / Value",
58
- "content": "## Flexible narratives\nAdapt flow to audience type and questions in real time\n\n---\n\n## Consistent style\nReuse front-end web styling and components directly\n\n## Professional delivery\nSpeaker notes and timing without the audience seeing them",
59
- "layout": "two-column",
60
- "centered": false
61
- },
62
- "style": { "width": 180, "height": 70 },
63
- "measured": { "width": 180, "height": 70 }
64
- },
65
- {
66
- "id": "value",
67
- "type": "huma",
68
- "position": { "x": 480, "y": 0 },
69
- "data": {
70
- "label": "The Value",
71
- "topic": "03 / Value",
72
- "content": "## Why this approach wins\n\n[chart:value]\n\nAdapt to the audience. Reuse web components. Deliver with confidence.",
73
- "charts": {
74
- "value": {
75
- "chartType": "radar",
76
- "data": [
77
- { "axis": "Flexibility", "graph": 95, "traditional": 30 },
78
- { "axis": "Visual Quality", "graph": 90, "traditional": 50 },
79
- { "axis": "Interactivity", "graph": 85, "traditional": 20 },
80
- { "axis": "Ease of Use", "graph": 60, "traditional": 90 },
81
- { "axis": "Consistency", "graph": 85, "traditional": 40 },
82
- { "axis": "Tech Signal", "graph": 95, "traditional": 15 }
83
- ],
84
- "config": {
85
- "xKey": "axis",
86
- "yKeys": ["graph", "traditional"],
87
- "showGrid": true,
88
- "showLegend": true
89
- }
90
- }
91
- },
92
- "centered": false
93
- },
94
- "style": { "width": 180, "height": 70 },
95
- "measured": { "width": 180, "height": 70 }
96
- },
97
- {
98
- "id": "feat-3d",
99
- "type": "huma",
100
- "position": { "x": 720, "y": 0 },
101
- "data": {
102
- "label": "3D Scenes",
103
- "topic": "04 / Features",
104
- "type": "r3f",
105
- "scene": {
106
- "component": "rotating-cube",
107
- "controls": true,
108
- "background": "#1a1a2e"
109
- },
110
- "content": "Interactive React Three Fiber scene.\n\nDrag to rotate. Scroll to zoom. Scenes load from a component registry.",
111
- "lightText": true
112
- },
113
- "style": { "width": 180, "height": 70 },
114
- "measured": { "width": 180, "height": 70 }
115
- },
116
- {
117
- "id": "feat-bgimage",
118
- "type": "huma",
119
- "position": { "x": 960, "y": 0 },
120
- "data": {
121
- "label": "Background Image",
122
- "topic": "04 / Features",
123
- "content": "## Full-bleed imagery\n\nUpload any image as a slide background. Toggle overlay for text readability.\n\n- Cover/contain fit modes\n- Dark overlay toggle\n- Light text auto-detection",
124
- "backgroundImage": "https://images.unsplash.com/photo-1451187580459-43490279c0fa?w=1920&q=80",
125
- "backgroundImageFit": "cover",
126
- "backgroundImageOverlay": true,
127
- "lightText": true,
128
- "centered": false
129
- },
130
- "style": { "width": 180, "height": 70 },
131
- "measured": { "width": 180, "height": 70 }
132
- },
133
- {
134
- "id": "end",
135
- "type": "huma",
136
- "position": { "x": 1200, "y": 0 },
137
- "data": {
138
- "label": "Get Started",
139
- "content": "Fork this template to build your own.\n\nEvery slide, chart, and scene is editable in the graph editor.",
140
- "centered": true,
141
- "brandFont": true,
142
- "showBranding": true,
143
- "brandingText": "huma.energy"
144
- },
145
- "style": { "width": 180, "height": 70 },
146
- "measured": { "width": 180, "height": 70 }
147
- }
148
- ],
149
- "edges": [
150
- { "id": "e-cover-problem", "source": "cover", "target": "problem", "sourceHandle": "s-right", "targetHandle": "t-left" },
151
- { "id": "e-problem-cover", "source": "problem", "target": "cover", "sourceHandle": "s-left", "targetHandle": "t-right" },
152
- { "id": "e-problem-value", "source": "problem", "target": "value", "sourceHandle": "s-right", "targetHandle": "t-left" },
153
- { "id": "e-value-problem", "source": "value", "target": "problem", "sourceHandle": "s-left", "targetHandle": "t-right" },
154
- { "id": "e-problem-detail", "source": "problem", "target": "value-detail", "sourceHandle": "s-bottom", "targetHandle": "t-top" },
155
- { "id": "e-detail-problem", "source": "value-detail", "target": "problem", "sourceHandle": "s-top", "targetHandle": "t-bottom" },
156
- { "id": "e-value-3d", "source": "value", "target": "feat-3d", "sourceHandle": "s-right", "targetHandle": "t-left" },
157
- { "id": "e-3d-value", "source": "feat-3d", "target": "value", "sourceHandle": "s-left", "targetHandle": "t-right" },
158
- { "id": "e-3d-bgimage", "source": "feat-3d", "target": "feat-bgimage", "sourceHandle": "s-right", "targetHandle": "t-left" },
159
- { "id": "e-bgimage-3d", "source": "feat-bgimage", "target": "feat-3d", "sourceHandle": "s-left", "targetHandle": "t-right" },
160
- { "id": "e-bgimage-end", "source": "feat-bgimage", "target": "end", "sourceHandle": "s-right", "targetHandle": "t-left" },
161
- { "id": "e-end-bgimage", "source": "end", "target": "feat-bgimage", "sourceHandle": "s-left", "targetHandle": "t-right" }
162
- ]
163
- }
164
- ```
@@ -1,89 +0,0 @@
1
- ---
2
- name: positioning
3
- description: Grid system and placement rules for positioning nodes on the graph canvas.
4
- ---
5
-
6
- # Node Positioning
7
-
8
- How to place nodes on the graph canvas for a clean, readable layout in the editor.
9
- Position affects visual arrangement only — navigation is determined by edges.
10
-
11
- ## Grid System
12
-
13
- | Parameter | Value |
14
- |---|---|
15
- | Horizontal spacing | 240px |
16
- | Vertical spacing | 150px |
17
- | Node width | 180px (in `style` and `measured`) |
18
- | Node height | 70px (in `style` and `measured`) |
19
-
20
- ## Spine Row
21
-
22
- All spine nodes sit at `y: 0`, starting at `x: 0`, incrementing by 240 per node.
23
-
24
- ```
25
- x: 0 240 480 720 960 1200
26
- y: 0 [Cover] [Problem] [Solution] [Value] [Features] [CTA]
27
- ```
28
-
29
- ## Drill-Down Rows
30
-
31
- Drill-down children are placed directly below their parent:
32
-
33
- - First level: `y: 150`
34
- - Second level: `y: 300`
35
-
36
- The first child inherits the parent's `x` position. Additional siblings at the same depth increment `x` by 240.
37
-
38
- ```
39
- x: 240 480
40
- y:0 [Problem] [Solution]
41
- ↓ ↓
42
- y:150 [Detail] [How It Works]
43
-
44
- y:300 [Root Cause]
45
- ```
46
-
47
- ### Multiple Siblings in a Branch
48
-
49
- When a spine node has multiple drill-down children at the same depth:
50
-
51
- ```
52
- x: 720 960
53
- y:0 [Value]
54
-
55
- y:150 [Case A] [Case B]
56
- ```
57
-
58
- - First child: same `x` as parent (720)
59
- - Second child: parent `x` + 240 (960)
60
- - Third child: parent `x` + 480 (1200)
61
-
62
- ## Position Template
63
-
64
- ```json
65
- {
66
- "position": { "x": 0, "y": 0 }
67
- }
68
- ```
69
-
70
- Quick reference for a 5-node spine with one drill-down each:
71
-
72
- | Node | x | y | Role |
73
- |---|---|---|---|
74
- | cover | 0 | 0 | Spine 1 |
75
- | problem | 240 | 0 | Spine 2 |
76
- | problem-detail | 240 | 150 | Drill-down under problem |
77
- | solution | 480 | 0 | Spine 3 |
78
- | solution-how | 480 | 150 | Drill-down under solution |
79
- | value | 720 | 0 | Spine 4 |
80
- | value-case | 720 | 150 | Drill-down under value |
81
- | cta | 960 | 0 | Spine 5 |
82
-
83
- ## Rules
84
-
85
- 1. Position reflects visual layout in the editor — it has no effect on navigation
86
- 2. Navigation is determined solely by edges and their handle assignments
87
- 3. Spine nodes must be at `y: 0` for visual clarity
88
- 4. Drill-downs must be below their parent for the folder-tree metaphor to hold
89
- 5. No two nodes should overlap (maintain at least 240px horizontal, 150px vertical separation)