|
31 | 31 | <button class="frg-btn primary" id="frgGodBtn">Generate</button> |
32 | 32 | </div> |
33 | 33 |
|
34 | | - <!-- Gen controls: style / detail / output — display:contents so they slot into header grid --> |
35 | | - <div class="frg-gen-controls"> |
36 | | - <label> |
37 | | - <span>Style</span> |
38 | | - <select id="frgStyle"> |
39 | | - <option value="realistic">Realistic</option> |
40 | | - <option value="stylized">Stylized</option> |
41 | | - <option value="low-poly">Low-Poly</option> |
42 | | - <option value="wireframe">Wireframe</option> |
43 | | - <option value="cartoon">Cartoon</option> |
44 | | - </select> |
45 | | - </label> |
46 | | - <label> |
47 | | - <span>Detail</span> |
48 | | - <select id="frgDetail"> |
49 | | - <option value="low">Low</option> |
50 | | - <option value="balanced" selected>Balanced</option> |
51 | | - <option value="high">High</option> |
52 | | - </select> |
53 | | - </label> |
54 | | - <label> |
55 | | - <span>Export as</span> |
56 | | - <select id="frgOutputTarget"> |
57 | | - <option value="glb">GLB</option> |
58 | | - <option value="gltf">GLTF</option> |
59 | | - <option value="stl">STL</option> |
60 | | - <option value="obj">OBJ</option> |
61 | | - </select> |
62 | | - </label> |
| 34 | + <!-- Style, detail and export target used to sit open across the bar. They |
| 35 | + are answered once and then read, so they live behind a menu now. --> |
| 36 | + <div class="frg-more-wrap"> |
| 37 | + <button class="frg-icon-btn" id="frgMoreBtn" title="Style, detail and export target" aria-expanded="false"> |
| 38 | + <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" width="15" height="15"><circle cx="5" cy="12" r="1"/><circle cx="12" cy="12" r="1"/><circle cx="19" cy="12" r="1"/></svg> |
| 39 | + </button> |
| 40 | + <div class="frg-more-menu" id="frgMoreMenu" hidden> |
| 41 | + <label> |
| 42 | + <span>Style</span> |
| 43 | + <select id="frgStyle"> |
| 44 | + <option value="realistic">Realistic</option> |
| 45 | + <option value="stylized">Stylized</option> |
| 46 | + <option value="low-poly">Low-Poly</option> |
| 47 | + <option value="wireframe">Wireframe</option> |
| 48 | + <option value="cartoon">Cartoon</option> |
| 49 | + </select> |
| 50 | + </label> |
| 51 | + <label> |
| 52 | + <span>Detail</span> |
| 53 | + <select id="frgDetail"> |
| 54 | + <option value="low">Low</option> |
| 55 | + <option value="balanced" selected>Balanced</option> |
| 56 | + <option value="high">High</option> |
| 57 | + </select> |
| 58 | + </label> |
| 59 | + <label> |
| 60 | + <span>Export as</span> |
| 61 | + <select id="frgOutputTarget"> |
| 62 | + <option value="glb">GLB</option> |
| 63 | + <option value="gltf">GLTF</option> |
| 64 | + <option value="stl">STL</option> |
| 65 | + <option value="obj">OBJ</option> |
| 66 | + </select> |
| 67 | + </label> |
| 68 | + <div class="frg-more-sep"></div> |
| 69 | + <button class="frg-more-item" id="frgMockBtn">Load a sample model</button> |
| 70 | + <button class="frg-more-item" id="frgAutoRouteBtn">Auto-assign the model route</button> |
| 71 | + </div> |
63 | 72 | </div> |
64 | 73 |
|
65 | | - <!-- Right: status + action buttons --> |
66 | 74 | <div class="frg-header-right"> |
67 | 75 | <span class="frg-status" id="frgStatus">Idle</span> |
68 | | - <span id="frgParticleCount" style="font-family:var(--mono);font-size:9px;color:rgba(223,251,245,0.42);letter-spacing:.08em;"></span> |
69 | | - <button class="frg-btn" id="frgMockBtn">Mock</button> |
70 | | - <button class="frg-btn" id="frgAutoRouteBtn">Auto</button> |
| 76 | + <span id="frgParticleCount" class="frg-particles"></span> |
71 | 77 | <button class="frg-btn" id="frgSaveProjectBtn">Save</button> |
72 | 78 | <button class="frg-btn" id="frgNewProjectBtn">New</button> |
73 | 79 | <button class="frg-icon-btn" id="frgResetViewBtn" title="Reset camera"> |
74 | 80 | <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" width="15" height="15"><path d="M3 12a9 9 0 1 0 3-6.7"/><path d="M3 4v6h6"/></svg> |
75 | 81 | </button> |
76 | | - <button class="frg-btn" id="frgBackBtn">← Back</button> |
| 82 | + <button class="frg-icon-btn" id="frgBackBtn" title="Back to the app"> |
| 83 | + <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" width="15" height="15"><path d="M19 12H5"/><path d="m12 19-7-7 7-7"/></svg> |
| 84 | + </button> |
77 | 85 | </div> |
78 | 86 |
|
79 | 87 | </div><!-- /.frg-header --> |
|
125 | 133 | <div class="frg-help">Click to select · W/R/S transform · A select-all · D duplicate · Del remove</div> |
126 | 134 | </div><!-- /.frg-viewport --> |
127 | 135 |
|
128 | | - <!-- Right side panel --> |
| 136 | + <!-- Right inspector. |
| 137 | + Five stacked sections used to compete for one column — agents, |
| 138 | + pipeline, projects, plan and selection, all open at once. They answer |
| 139 | + three different questions: what is this made of, what is selected, and |
| 140 | + what did the run do. So they are three tabs. --> |
129 | 141 | <div class="frg-panel"> |
| 142 | + <div class="frg-tabs" role="tablist"> |
| 143 | + <button class="frg-tab active" data-frg-tab="parts" role="tab" aria-selected="true">Parts</button> |
| 144 | + <button class="frg-tab" data-frg-tab="properties" role="tab" aria-selected="false">Properties</button> |
| 145 | + <button class="frg-tab" data-frg-tab="run" role="tab" aria-selected="false">Run</button> |
| 146 | + </div> |
| 147 | + |
| 148 | + <div class="frg-tabpane active" data-frg-pane="parts"> |
| 149 | + <div class="frg-panel-section grow"> |
| 150 | + <div class="frg-panel-label">Plan</div> |
| 151 | + <div class="frg-plan-list" id="frgPlanList"> |
| 152 | + <!-- Populated by JS: updatePlanList() --> |
| 153 | + </div> |
| 154 | + </div> |
| 155 | + |
| 156 | + <!-- Selection inspector card --> |
| 157 | + <div class="frg-panel-section"> |
| 158 | + <div class="frg-panel-label-row"> |
| 159 | + <span class="frg-panel-label" style="margin-bottom:0">Projects</span> |
| 160 | + </div> |
| 161 | + <div class="frg-project-list" id="frgProjectsList"> |
| 162 | + <!-- Populated by JS: renderForgeProjects() --> |
| 163 | + </div> |
| 164 | + </div> |
130 | 165 |
|
131 | | - <!-- Agents --> |
132 | | - <div class="frg-panel-section"> |
| 166 | + <!-- Plan / nodes list --> |
| 167 | + </div> |
| 168 | + |
| 169 | + <div class="frg-tabpane" data-frg-pane="properties"> |
| 170 | + <div class="frg-panel-section"> |
| 171 | + <div class="frg-panel-label">Selection</div> |
| 172 | + <div class="frg-selection-card" id="frgSelectionCard"> |
| 173 | + <div class="frg-selection-empty">Click a mesh in the 3D viewport to inspect it.</div> |
| 174 | + </div> |
| 175 | + </div> |
| 176 | + |
| 177 | + <!-- /.frg-panel --> |
| 178 | + |
| 179 | + <!-- /.frg-body --> |
| 180 | + </div> |
| 181 | + |
| 182 | + <div class="frg-tabpane" data-frg-pane="run"> |
| 183 | + <div class="frg-panel-section"> |
133 | 184 | <div class="frg-panel-label">Agents</div> |
134 | 185 | <div class="frg-agent-list" id="frgAgents"> |
135 | 186 | <!-- Populated by JS: renderAgents() --> |
|
144 | 195 | </div> |
145 | 196 |
|
146 | 197 | <!-- Pipeline stage indicators --> |
147 | | - <div class="frg-panel-section"> |
| 198 | + <div class="frg-panel-section"> |
148 | 199 | <div class="frg-panel-label">Pipeline</div> |
149 | 200 | <div class="frg-stage-list"> |
150 | 201 | <div class="frg-stage" data-frg-stage="input"> |
|
163 | 214 | </div> |
164 | 215 |
|
165 | 216 | <!-- Projects --> |
166 | | - <div class="frg-panel-section"> |
167 | | - <div class="frg-panel-label-row"> |
168 | | - <span class="frg-panel-label" style="margin-bottom:0">Projects</span> |
169 | | - </div> |
170 | | - <div class="frg-project-list" id="frgProjectsList"> |
171 | | - <!-- Populated by JS: renderForgeProjects() --> |
172 | | - </div> |
173 | | - </div> |
174 | | - |
175 | | - <!-- Plan / nodes list --> |
176 | | - <div class="frg-panel-section grow"> |
177 | | - <div class="frg-panel-label">Plan</div> |
178 | | - <div class="frg-plan-list" id="frgPlanList"> |
179 | | - <!-- Populated by JS: updatePlanList() --> |
180 | | - </div> |
181 | | - </div> |
182 | | - |
183 | | - <!-- Selection inspector card --> |
184 | | - <div class="frg-panel-section"> |
185 | | - <div class="frg-panel-label">Selection</div> |
186 | | - <div class="frg-selection-card" id="frgSelectionCard"> |
187 | | - <div class="frg-selection-empty">Click a mesh in the 3D viewport to inspect it.</div> |
188 | | - </div> |
189 | 217 | </div> |
190 | 218 |
|
191 | 219 | </div><!-- /.frg-panel --> |
|
0 commit comments