feat(cockpit-render): redesign the other 5 render examples (encapsulated CSS, no Tailwind)#761
Conversation
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… + syntax-colored JSON
…ulated CSS + syntax-colored JSON
…d CSS, JSON console, styled Show-Detail control)
… CSS, JSON console, styled state form) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…, JSON console, styled list controls)
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Claude finished @blove's task in 3m 43s —— View job Code Review
Overall the redesign is clean and consistent — Tailwind is fully gone, Three issues worth fixing before merge: 1. The class still declares template: `<span class="b">{{ label() }}</span>`,Before the label token arrives during streaming, this renders a zero-content 2. Theme The old code had 3. Blinking cursor never stops (all 5 components, e.g. .json__cursor { animation: sr-blink 1s step-end infinite; }The cursor blinks unconditionally — even after streaming is complete it still pulses, falsely signalling that output is ongoing. Add Minor / non-blocking:
|
| border: 1px solid rgba(53, 176, 106, 0.35); | ||
| } | ||
| `, | ||
| template: `<span class="b">{{ label() }}</span>`, |
There was a problem hiding this comment.
The loading input (line 97) is still declared but the template now unconditionally renders the span, so an empty green-bordered pill appears while the badge label is streaming in. Restore the conditional or drop the dead input:
| template: `<span class="b">{{ label() }}</span>`, | |
| template: `@if (label()) {<span class="b">{{ label() }}</span>} @else if (loading()) {<div class="sr-skeleton" style="height:18px;width:4rem;display:inline-block;border-radius:999px"></div>}`, |
| </div> | ||
| <div class="control-row"> | ||
| <span class="control-label">Theme</span> | ||
| <select class="control-select" (change)="setState('/settings/theme', $any($event.target).value)"> |
There was a problem hiding this comment.
The [value] binding present in the original was dropped. The select doesn't reflect current store state — it works now only because the initial store value 'dark' coincidentally matches the first HTML option. Bind [selected] on each option to make it correct:
| <select class="control-select" (change)="setState('/settings/theme', $any($event.target).value)"> | |
| <select class="control-select" (change)="setState('/settings/theme', $any($event.target).value)"> | |
| <option value="dark" [selected]="getState('/settings/theme') === 'dark'">Dark</option> | |
| <option value="light" [selected]="getState('/settings/theme') === 'light'">Light</option> | |
| </select> |
Summary
Follow-up to #759 — applies the same encapsulated-CSS redesign to the other 5
render/*examples, eliminating all Tailwind utility classes (which don't compile for the embedded example builds) in favor of encapsulated Angular component styles on the real--ds-*design tokens.What changed
cockpit/render/shared/json-highlight.tsso every example reuses it (spec-rendering's import updated).registry,computed-functions,element-rendering,state-management,repeat-loops): render-green segmented pill tabs (replacing hardcoded indigo / themed-primary — now consistent), "Streaming" status pulse, dark syntax-colored JSON console,sr-skeletonloaders, restyled demo components — all on--ds-*tokens, zero Tailwind.element-rendering— styled "Show Detail" checkbox (render-green accent)state-management— styled Name/Age/Theme formrepeat-loops— "+ Add Item" button + removable list rows*.spec.tsbuild-exclude to each app'stsconfig.app.json(consistency with feat(cockpit-render): redesign spec-rendering playback UI (encapsulated CSS, no Tailwind) #759).Verification
nx run-many -t build)/items; segmented tabs, JSON console, status pulse all workingPlan:
docs/superpowers/plans/2026-07-06-render-examples-redesign-followup.md🤖 Generated with Claude Code