Skip to content

chore: Industrial Calm palette + 6 new component sections in wireframe kit#29

Merged
phuongnse merged 8 commits into
mainfrom
chore/wireframe-industrial-calm-and-new-sections
May 16, 2026
Merged

chore: Industrial Calm palette + 6 new component sections in wireframe kit#29
phuongnse merged 8 commits into
mainfrom
chore/wireframe-industrial-calm-and-new-sections

Conversation

@phuongnse

@phuongnse phuongnse commented May 16, 2026

Copy link
Copy Markdown
Owner

Summary

  • login.excalidraw — recolored to Industrial Calm palette: sage green logo/links, amber clay CTA button, warm off-white page bg, earthy borders. Replaces generic blue (#1971c2).
  • generate-template.mjs — added arrow() primitive + 6 new sections covering all major UI patterns for a workflow SaaS:
    • S13 Dropdown & Context Menu
    • S14 Drag & Drop / Sortable list + Kanban board
    • S15 Workflow Canvas (trigger/action/condition nodes, directional arrows, selected state)
    • S16 Builder Layout (toolbar + component panel + canvas + properties panel)
    • S17 Execution Timeline (step history with status icons and durations)
    • S18 Utilities (tooltip, accordion, horizontal stepper, tag/chip input)
  • Template now has 578 elements across 18 sections. All SVGs regenerated.

Test plan

  • Open docs/wireframes/_template.svg in browser — verify 18 sections render correctly with Industrial Calm colors
  • Open docs/wireframes/E02-identity-access/login.svg — verify sage/amber clay palette (no blue)
  • Run .\docs\scripts\generate-wireframes.ps1 — all files should regenerate with exit 0

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Style

    • Refreshed login wireframe and app view background with a new sage/amber/moss color palette; updated buttons, inputs, dividers, logo, headings, and footer styling.
  • New Features

    • Added an "Add Model" toolbar button.
    • Expanded the generated component template with many new sections (workflow canvas, execution timeline, editable table, command palette, file upload, notifications, permission matrix, date/time picker, and more) and introduced deterministic arrow elements and updated button semantics.
  • Documentation

    • Added a component-kit template guide detailing section builder structure and TOC rules.

Review Change Stack

…wireframe kit

- Update login.excalidraw to Industrial Calm colors (sage green, amber clay,
  warm off-white bg — replaces old blue #1971c2 scheme)
- Regenerate login.svg
- Add arrow() primitive builder to generate-template.mjs
- Add 6 new sections to _template component kit:
  S13 Dropdown & Context Menu, S14 Drag & Drop / Sortable + Kanban,
  S15 Workflow Canvas (nodes, arrows, selected state),
  S16 Builder Layout (toolbar + component panel + canvas + properties),
  S17 Execution Timeline, S18 Utilities (tooltip, accordion, stepper, tag input)
- Regenerate _template.excalidraw (578 elements) and _template.svg

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented May 16, 2026

Copy link
Copy Markdown

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

The PR restyles the login wireframe to a new sage/amber/moss palette and updates the template generator: adds an arrow primitive, replaces the global color palette, retints components and the App Shell, adds many new themed section builders, and expands the generated template composition.

Changes

Wireframe Design System Theme Refresh

Layer / File(s) Summary
Login wireframe theme restyling
docs/wireframes/E02-identity-access/login.excalidraw
All UI elements (page/card backgrounds, logo/heading/divider, email/password labels/placeholders/dots, forgot link, sign-in button, footer) and appState.viewBackgroundColor are updated to the new sage/amber/moss palette.
Template TOC, arrow primitive, and new palette
docs/wireframes/generate-template.mjs (TOC, arrow(...), palette, output)
Expands the file TOC, adds arrow(...) Excalidraw primitive, replaces global color constants with an earthy sage/amber/moss palette and swatches, and removes pretty-print JSON indentation.
Component styling and App Shell
docs/wireframes/generate-template.mjs (buttons, CTAs, App Shell, section indices)
Button variants (primary/secondary/ghost/danger/disabled), specific CTAs (Empty State, Alert Banner), App Shell surfaces/sidebar/logo, search placeholder styling, a new "Add Model" toolbar button, and multiple section header index labels are retinted/updated.
New themed UI section builders
docs/wireframes/generate-template.mjs (date/time picker, editable table, command palette, file upload, notifications, permission matrix, dropdown/context menu, drag/drop, workflow canvas, builder layout, execution timeline, utilities, editors, pickers)
Adds many new builders (e.g., buildDateTimePicker, buildEditableTable, buildCommandPalette, buildFileUpload, buildNotifications, buildPermissionMatrix, buildDropdownContextMenu, buildDragDrop, buildWorkflowCanvas (uses arrow()), buildBuilderLayout, buildExecutionTimeline, buildUtilities, buildRichTextEditor, buildCodeEditor, buildColorIconPicker, etc.) and updates the auto-stacking builder composition order.
Component kit template docs
CLAUDE.md
Adds a "Component kit template" section describing _template.excalidraw source, regeneration steps, section-builder anatomy, y-offset/ID-prefix rules, numbering/compose rules, and TOC maintenance instructions.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

  • phuong-labs/axis#28: Related changes to the wireframe template generator; both PRs modify docs/wireframes/generate-template.mjs.

Poem

🐇 I nudged the palette, soft and sage,
Amber sparks across each page,
Arrows point where builders play,
New sections wake to light the way,
The template hops in earthy grace.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 5.56% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the two main changes: introducing an 'Industrial Calm' palette and adding new component sections to the wireframe kit, matching the file modifications across all three files.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/wireframe-industrial-calm-and-new-sections

Comment @coderabbitai help to get the list of available commands and usage tips.

S19 Date & Time Picker — calendar with today/selected states, time spinner, date range with highlight band
S20 Editable Table / Data Grid — bulk action bar, inline cell editing with cursor, row checkboxes
S21 Command Palette — ⌘K overlay with scrim, fuzzy search, grouped results, keyboard hints
S22 File Upload — default + drag-over zone states, file list with progress bar and error state
S23 Notifications & Activity Feed — bell dropdown with unread dots, activity timeline with avatars
S24 Permission Matrix — role × permission checkbox grid grouped by feature area

Template now has 24 sections / 1038 elements.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/wireframes/generate-template.mjs`:
- Around line 53-83: The Excalidraw canvas background is still hardcoded to
"`#ffffff`"; update the assignment to appState.viewBackgroundColor (in
generate-template.mjs) to use the theme palette constant (e.g., C.gray100)
instead of the literal "`#ffffff`" so the generated template matches the warm
neutral palette; locate the code that sets appState.viewBackgroundColor and
replace the literal with the C.gray100 (or another appropriate C.* value) and
ensure any exported template or serialization uses that updated appState value.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 5fb04ac2-7b4e-4a39-91c6-3c67caca83ac

📥 Commits

Reviewing files that changed from the base of the PR and between 2e9e77f and 096a59d.

⛔ Files ignored due to path filters (1)
  • docs/wireframes/_template.svg is excluded by !**/*.svg
📒 Files selected for processing (2)
  • docs/wireframes/_template.excalidraw
  • docs/wireframes/generate-template.mjs

Comment on lines 53 to 83
const C = {
primary: '#1971c2',
primaryDark: '#1864ab',
danger: '#e03131',
dangerDark: '#c92a2a',
success: '#2f9e44',
warning: '#e67700',
gray900: '#212529',
gray700: '#495057',
gray500: '#adb5bd',
gray300: '#dee2e6',
gray100: '#f8f9fa',
gray50: '#f1f3f5',
white: '#ffffff',
// semantic backgrounds
infoBg: '#e7f5ff',
successBg: '#ebfbee',
warningBg: '#fff9db',
dangerBg: '#fff5f5',
// borders
infoBorder: '#74c0fc',
successBorder: '#8ce99a',
warningBorder: '#ffd43b',
dangerBorder: '#ffa8a8',
// — Industrial Calm —
// Primary: sage green (nav, icons, subtle highlights)
// Accent: amber clay (CTA buttons, key actions)
primary: '#667A6E', // sage green
primaryDark: '#4F5F57', // sage dark
accent: '#C58B55', // amber clay
accentDark: '#A8743E', // amber clay dark
danger: '#9E4A44', // muted brick
dangerDark: '#7D3A35',
success: '#4D6B44', // moss green
warning: '#B5763D', // amber clay (earthy)
// Neutrals — warm, not blue-cast
gray900: '#2B2F33', // near-black warm charcoal
gray700: '#4A5058',
gray500: '#8A9099',
gray300: '#D9D7D1', // warm border
gray100: '#F4F3EF', // warm off-white (page bg)
gray50: '#F9F8F5',
white: '#FFFFFF', // surface (cards, panels)
// Semantic backgrounds — earthy tones, low saturation
infoBg: '#EDF0EE', // sage tint
successBg: '#EBF0E9', // moss tint
warningBg: '#F6EEE4', // clay tint
dangerBg: '#F3ECEA', // brick tint
// Borders
infoBorder: '#A8BAB1', // sage muted
successBorder:'#7FA676', // moss muted
warningBorder:'#C9975E', // clay muted
dangerBorder: '#C08078', // brick muted
};

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Theme rollout is incomplete without updating the Excalidraw canvas background.

The palette was migrated to warm neutrals, but appState.viewBackgroundColor is still #ffffff (Line 1290). This can make the generated template canvas look off-theme.

Suggested fix
-const output = JSON.stringify({ type: 'excalidraw', version: 2, source: 'https://excalidraw.com', elements, appState: { gridSize: 8, viewBackgroundColor: '`#ffffff`' }, files: {} }, null, 2);
+const output = JSON.stringify({ type: 'excalidraw', version: 2, source: 'https://excalidraw.com', elements, appState: { gridSize: 8, viewBackgroundColor: C.gray100 }, files: {} }, null, 2);
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/wireframes/generate-template.mjs` around lines 53 - 83, The Excalidraw
canvas background is still hardcoded to "`#ffffff`"; update the assignment to
appState.viewBackgroundColor (in generate-template.mjs) to use the theme palette
constant (e.g., C.gray100) instead of the literal "`#ffffff`" so the generated
template matches the warm neutral palette; locate the code that sets
appState.viewBackgroundColor and replace the literal with the C.gray100 (or
another appropriate C.* value) and ensure any exported template or serialization
uses that updated appState value.

phuongnse and others added 6 commits May 16, 2026 15:34
7 sections had sub-labels at y0+46 with content rects starting at y0+48,
causing the label text to be partially or fully hidden behind solid backgrounds.
Changed yC from y0+48 to y0+68 for S13, S14, S18, S19, S21, S22, S23 to
match the convention used by other sections with sub-labels (S05, S06, S09, S10).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ructure template TOC

- Add buildRichTextEditor (S07): toolbar with B/I/U/H1/H2/list/link/variable, email template content, word count footer
- Add buildCodeEditor (S08): dark JSON editor panel + HTTP request configurator with method/URL/tabs
- Add buildColorIconPicker (S24): 6×4 swatch grid + hex input + icon search/categories/grid
- Renumber all 27 sectionHeader() calls to match new logical grouping
- Reorder compose array into 6 labelled groups with inline S-number comments
- Add 27-section TOC to top-level JSDoc

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sections added:
- S13 Empty States: 4-state pattern (list, no results, feed, error) with icon + message + CTA
- S14 Skeleton Loaders: table rows, card, and form panel shimmer patterns
- S17 Tabs: underline default, pill/segment, and badge-count variants
- S23 Tooltip & Popover: dark/light tooltip, config popover, destructive confirm popover
- S32 Field Type Picker: 15 field types in a 5-col grid (Axis DataModeling pattern)
- S33 Relation / Lookup Field: view chips, lookup popup, multi-relation table cell

Also:
- Renumber all sections to S01-S33 reflecting new group placement
- Switch _template.excalidraw to compact JSON to stay under Kroki.io 1 MB limit
- Add CLAUDE.md rules for template builder pattern, ID prefix uniqueness,
  yC offset convention, section numbering, and TOC maintenance

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…on label collision

- S14 Skeleton Loaders: shrink colDefs [32,170,94,72,48] → [24,100,62,46,20] so
  bars stay within the 300px table boundary
- S27 Utilities: push stepper start from yC+186 → yC+220 so it clears the
  accordion bottom (yC+200) and stops overlapping
- S34 Relation: remove 'Account' label at yC-18 which collided with the
  'Field (view mode)' sub-label 4px above it

feat: add S21 Side Sheet / Drawer section

Full-height slide-in panel: dimmed app context, header + 4-field scrollable
body + sticky footer (Save / Cancel / Delete) + resize handle on left edge.
Renumber S21-S33 → S22-S34 to accommodate new section. Update TOC and
CLAUDE.md current-structure note (33 → 34 sections).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Form control default: white bg + gray300 border (was gray100 bg = looked disabled)
- Form control disabled: gray100 bg + gray300 border (clearly recessed/inactive)
- All col-2 form inputs: white bg + gray300 border (consistent with states col)
- Primary badge: solid sage fill + white text (was infoBg tint = low visual weight)
- Skeleton loader bars: gray300 fill throughout (was gray100 on white = invisible)
  - Card image placeholder, secondary text bars, button skeleton fill
  - Form panel input bars (previously used isLabel split that left inputs invisible)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
S10 Table and S11 Editable Table used Success (moss green tint) for
Active status badges, which contradicts S09 where the Primary badge
is explicitly labeled "Active" (solid sage fill, white text).

Active = record is enabled/live → Primary badge style
Complete/Success = operation result → Success badge style

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant