feat: Script Generator Phase 1 — backend models, engine, API, and AD templates #105
@@ -109,7 +109,7 @@ Layout (top to bottom, full pane height, `overflow-y-auto`):
|
|||||||
5. **Action bar**
|
5. **Action bar**
|
||||||
- **Generate** button: full-width, `bg-gradient-brand`, disabled/loading behavior same as current
|
- **Generate** button: full-width, `bg-gradient-brand`, disabled/loading behavior same as current
|
||||||
- **Download .ps1** + **Copy** buttons: side by side below Generate, each `flex-1`
|
- **Download .ps1** + **Copy** buttons: side by side below Generate, each `flex-1`
|
||||||
- The Copy button in the action bar copies `generatedScript` (or the draft display if not yet generated). `ScriptPreview`'s existing copy overlay is **retained as-is** — two copy entry-points is acceptable.
|
- The Copy button copies `store.generatedScript`. It is disabled when `generatedScript === null`. Draft copy is handled by `ScriptPreview`'s existing overlay — two copy entry-points is acceptable.
|
||||||
- Error text below if `generateError` is set
|
- Error text below if `generateError` is set
|
||||||
|
|
||||||
**Loading state:** When `isLoadingDetail === true`, shows a centered `<Loader2 size={28} className="text-primary animate-spin" />` filling the pane instead of the template content.
|
**Loading state:** When `isLoadingDetail === true`, shows a centered `<Loader2 size={28} className="text-primary animate-spin" />` filling the pane instead of the template content.
|
||||||
|
|||||||
Reference in New Issue
Block a user