Commit graph

1254 commits

Author SHA1 Message Date
Arthur Belleville
808eaecc85
feat(14-02): migrate auth_login.templ to AuthLayout with ui.FormField inputs
- Replace Layout+Card pattern with AuthLayout("Sign in to Xtablo", csrfToken)
- Wire GoogleButton and AuthDivider into LoginPage body
- Replace raw <input> elements with @ui.FormField/@ui.Input design system components
- Add signup-copy nav link ("Don't have an account? Sign up")
- Preserve HTMX swap: hx-post="/login" hx-target="#login-form" hx-swap="outerHTML"
- Remove loginCardBody, AuthProviderButtonsBlock, AuthProviderButtonControl helpers
- Update test assertions for new GoogleButton labels ("Sign in with Google" / disabled attr)
2026-05-16 19:10:08 +02:00
Arthur Belleville
51cb9bd895
docs(14-01): complete auth assets and components plan 2026-05-16 19:07:39 +02:00
Arthur Belleville
e4d5f96571
feat(14-01): create auth_components.templ and auth_layout.templ
- auth_components.templ: AnimatedBackground (35 elements, /static/logo_dark.png, no light/dark pairs), GoogleButton (a/button variant, English label 'Sign in with Google'), AuthDivider ('or' divider)
- auth_layout.templ: standalone HTML shell with .login-screen, @AnimatedBackground(), .card-wrap/.card-glow/.auth-card-shell, htmx.min.js only (no sortable/sse scripts)
- No auth.User param on AuthLayout (auth pages always unauthenticated)
- just generate exits 0, all Go tests pass
2026-05-16 19:06:07 +02:00
Arthur Belleville
cf116ff696
feat(14-01): copy logo assets and replace auth.css with full auth card + animation CSS
- Copy logo_dark.png and logo_white.png from go-backend/static into backend/static
- Replace minimal 62-line auth.css with 828-line extraction from go-backend/static/styles.css
- Sections: login-screen shell, animated background (bg-01..35, size/opacity utilities), card wrapper, card internals, gsi-material-button, legacy auth-provider controls, 66 keyframe definitions, animate-* utility classes
- Added display:block and text-decoration:none to .gsi-material-button for the anchor variant
- Does NOT include .app-shell or .dashboard-shell rules
2026-05-16 19:04:44 +02:00
Arthur Belleville
522c071550
docs(14): create phase plan
Plan 14-01: Auth foundation (logo assets, auth.css, auth_components.templ, auth_layout.templ)
Plan 14-02: Page migration (auth_login.templ, auth_signup.templ → AuthLayout + ui.FormField + nav links)

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-05-16 19:00:57 +02:00
Arthur Belleville
5ed9291d76
docs(14): create phase plan for auth pages restyle
Two-wave plan: Plan 01 creates foundation (logo assets, full auth.css
replacement with animations, auth_components.templ, auth_layout.templ);
Plan 02 migrates auth_login.templ and auth_signup.templ to AuthLayout
with @ui.FormField inputs and cross-page nav links, closing AUTH-UI-01..03.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-05-16 18:58:59 +02:00
Arthur Belleville
848f7480a8
docs(14): UI design contract 2026-05-16 18:48:32 +02:00
Arthur Belleville
0d49c20e42
docs(14): add UI design contract for auth-pages restyle
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-05-16 18:40:46 +02:00
Arthur Belleville
d4a44631b7
docs(state): record phase 14 context session 2026-05-16 18:35:16 +02:00
Arthur Belleville
ba19e40482
docs(14): capture phase context 2026-05-16 18:35:11 +02:00
Arthur Belleville
0dac33b784
docs(phase-13): complete phase execution 2026-05-16 18:24:23 +02:00
Arthur Belleville
be84d1f803
test(13): add phase verification report 2026-05-16 18:18:26 +02:00
Arthur Belleville
9dcf628322
docs(13): add code review report 2026-05-16 18:10:17 +02:00
Arthur Belleville
9d17acbe2b
fix(13-05): catalog air config watches css and rebuilds tailwind on change 2026-05-16 18:05:15 +02:00
Arthur Belleville
caba6c15ee
fix(13-05): icon-button hover changes icon color only, no background fill 2026-05-16 18:02:37 +02:00
Arthur Belleville
7ecc063fce
fix(13-05): run catalog via air for live-reload (-tags catalog) 2026-05-16 18:00:40 +02:00
Arthur Belleville
d2c5a0cc07
fix(13-05): add tone-aware hover colors to icon-button (danger/warning/success/neutral) 2026-05-16 17:59:17 +02:00
Arthur Belleville
cae5e7c785
fix(13-05): wire /static/tailwind.css into catalog page head 2026-05-16 14:17:46 +02:00
Arthur Belleville
ae4bb876c1
docs(13-05): complete catalog plan summary
- Create 13-05-SUMMARY.md with catalog package documentation
- Self-check passed: all files and commits verified
2026-05-16 14:14:29 +02:00
Arthur Belleville
4046783fd4
feat(13-05): create catalog package with route files and router wiring
- Add backend/internal/web/ui/catalog/catalog.templ: single-page layout
  with 240px sidebar nav (11 anchor links) and 11 component sections with
  section headings matching DS-XX requirement IDs
- Add backend/internal/web/ui/catalog/examples.go: Example struct + typed
  example functions for all 11 component types (badge/button/card/empty-state/
  form-field/icon-button/input/modal/select/table/textarea); modal renders
  panel-only (no backdrop wrapper, Pitfall 7)
- Add backend/internal/web/catalog_route_catalog.go (//go:build catalog):
  RegisterCatalogRoute mounts GET /ui-catalog via catalogPageHandler()
- Add backend/internal/web/catalog_route_stub.go (//go:build !catalog):
  no-op RegisterCatalogRoute for production builds
- Wire RegisterCatalogRoute(r) unconditionally in NewRouter after protected routes
- Add justfile catalog target: just generate + go run -tags catalog ./cmd/web
- go build ./... and go build -tags catalog ./... both pass; go test ./... green
2026-05-16 14:13:30 +02:00
Arthur Belleville
f57952b6fb
chore: merge executor worktree (worktree-agent-a80aab8b5919843d3) 2026-05-16 14:09:40 +02:00
Arthur Belleville
a8d2942c4d
docs(13-04): complete remaining components plan summary
- Modal, EmptyState, Table, IconButton, UIIcon, Space components ported
- UIIcon wired into button.templ; tailwind.input.css updated to 14 imports
- All 13 new tests pass; full go test ./... green
2026-05-16 14:08:17 +02:00
Arthur Belleville
c80ebcb9b1
feat(13-04): port icon-button/space components; wire UIIcon into button.templ; update tailwind.input.css (GREEN)
- icon-button.css + icon_button.templ: UIIcon switch (plus/grid3x3/list/filter/search/calendar/pencil/trash + fallback span)
- spacing.css + space.templ: SpaceX/SpaceY with SpacingStep classes
- button.templ: wire @UIIcon(props.Icon) replacing Plan 02 placeholder comment
- tailwind.input.css: add modal, empty-state, table, icon-button, form-field, spacing imports (14 total)
- All 7 new tests pass; full go test ./... green
2026-05-16 14:07:07 +02:00
Arthur Belleville
fa2405938a
test(13-04): add failing tests for IconButton, UIIcon, Space, and Button icon wiring (RED) 2026-05-16 14:05:44 +02:00
Arthur Belleville
fbdf188f5f
feat(13-04): port modal, empty-state, table components with CSS and templ (GREEN)
- modal.css + modal.templ: backdrop/panel structure, Title/Body/Actions props
- empty-state.css + empty_state.templ: dashed border, nil-guarded Icon/Action
- table.css + table.templ: ui-table-shell wrapper, Head/Body typed props
- All 6 TestModal/TestEmptyState/TestTable tests pass; full suite green
2026-05-16 14:05:11 +02:00
Arthur Belleville
4bdb78debf
test(13-04): add failing tests for Modal, EmptyState, Table components (RED) 2026-05-16 14:04:19 +02:00
Arthur Belleville
569c6c7853
docs(13-03): complete form input components plan summary
- Input, Textarea, Select, FormField components ported from go-backend
- TDD gates: 4 RED/GREEN commits, all 13 new tests passing
- Full go test ./... is green (all packages)
2026-05-16 14:01:53 +02:00
Arthur Belleville
52fb77d4f8
feat(13-03): port select + form-field components with CSS and helpers (GREEN)
- select_helpers.go: 9 helper functions verbatim from go-backend
- select.templ: SelectProps/SelectOption structs, inline JS with __uiSelectInitAll
  and htmx:afterSwap re-init listener (Pitfall 6)
- select.css: .ui-select-control (min-height 44px), .ui-select-menu (max-height 16rem)
- form_field.templ: FormFieldProps with Label/For/Field/Error/Hint; conditional regions
- form-field.css: .ui-form-field/.ui-form-label/.ui-form-hint/.ui-form-error
- tailwind.input.css: add @import for select.css and form-field.css
- All 6 TestSelect/TestFormField tests passing; full go test ./... is green
2026-05-16 14:00:51 +02:00
Arthur Belleville
50e3fb0021
test(13-03): add failing tests for Select and FormField components (RED)
- TestSelect_RendersControl: expects ui-select-control in output
- TestSelect_HasInlineScript: expects __uiSelectInitAll in script block
- TestSelect_HasHtmxListener: expects htmx:afterSwap re-init listener
- TestFormField_RendersLabel: expects ui-form-field and ui-form-label
- TestFormField_RendersError: expects ui-form-error when Error is set
- TestFormField_NoErrorWhenEmpty: expects no ui-form-error when Error is empty
2026-05-16 13:59:21 +02:00
Arthur Belleville
9556b20ade
feat(13-03): port input.templ/input.css and textarea.templ/textarea.css (GREEN)
- input.css: .ui-input with min-height 44px, border-radius 0.75rem, focus ring
- input.templ: InputProps with ID/Name/Type/Placeholder/Value/Disabled/Required/Attrs
- textarea.css: .ui-textarea with min-height 7rem, resize vertical, focus ring
- textarea.templ: TextareaProps with ID/Name/Value/Placeholder/Rows/Disabled/Required/Attrs
- tailwind.input.css: add @import for input.css and textarea.css
- All 7 TestInput/TestTextarea tests passing
2026-05-16 13:59:03 +02:00
Arthur Belleville
ace9f5bdc4
test(13-03): add failing tests for Input and Textarea components (RED)
- TestInput_DefaultType: expects type="text" for empty Type
- TestInput_EmailType: expects type="email" for explicit Type
- TestInput_IDFallback: expects id from Name when no ID set
- TestInput_ExplicitID: expects explicit ID to take precedence
- TestTextarea_RendersClass: expects class="ui-textarea"
- TestTextarea_DefaultRows: expects rows="4" for zero Rows
- TestTextarea_ExplicitRows: expects rows="6" for explicit Rows
2026-05-16 13:58:19 +02:00
Arthur Belleville
43ffdae07f
docs(13-02): complete component API migration plan summary 2026-05-16 13:56:20 +02:00
Arthur Belleville
a30a6f9088
feat(13-02): replace CSS files, migrate card.templ to typed API, update all template hardcodes
- button.css: replaced with go-backend multi-class selector version + ghost variant rules
- badge.css: replaced with go-backend pill-shape version + primary variant
- card.css: replaced with go-backend token-based header/body/footer version
- card.templ: migrated from children passthrough to typed CardProps{Header/Body/Footer}
- ui_test.go: rewrote TestCard_RendersChildren -> TestCard_RendersTypedRegions; added TestBadge_PrimaryVariant; added textComponent helper + io import
- auth_login.templ, auth_signup.templ: migrated Card usage to typed CardProps API
- tablos.templ: migrated TabloCard to typed CardProps API with extracted tabloCardBody
- planning.templ, tasks.templ, events.templ, etapes.templ: all compound button class strings updated to multi-class pattern
- go test ./... passes (all packages green)
- just generate succeeds
2026-05-16 13:55:30 +02:00
Arthur Belleville
66f23bba77
feat(13-02): multi-class ButtonClass() + Icon field + buttonType helper in button.templ
- ButtonClass() now emits "ui-button ui-button-solid ui-button-default ui-button-md"
- Ghost variant special case: "ui-button ui-button-ghost ui-button-md" (tone omitted)
- button.templ: added Icon string field to ButtonProps, replaced inline btnType with buttonType() helper
- ui_test.go: updated TestButton_DefaultSolidMD to multi-class slice assertions
- ui_test.go: updated TestButtonClass_String and TestButtonClass_GhostVariant expectations
- All 18 ui package tests pass
2026-05-16 13:52:01 +02:00
Arthur Belleville
ab030dbe71
chore: merge executor worktree (worktree-agent-a3f5fac8dd5e3bd34) 2026-05-16 13:49:39 +02:00
Arthur Belleville
555d41f247
docs(13-01): complete design system foundation plan 01 summary
- Full CSS token vocabulary (223-line base.css) and auth.css extraction
- Ghost/Primary variant enums, IconButton/SpacingStep types, and helper functions
- All 18 tests green; TDD RED/GREEN gates documented
2026-05-16 13:48:44 +02:00
Arthur Belleville
d1499659bf
feat(13-01): extend variants.go with new enums and helpers.go with helper functions (GREEN)
- Add ButtonVariantGhost to ButtonVariant enum and NormalizedButtonVariant switch
- Add BadgeVariantPrimary to BadgeVariant enum and NormalizedBadgeVariant switch
- Add IconButtonVariant type (Neutral/Warning/Success/Danger) with normalizer
- Add IconButtonTone type (Solid/Ghost) with normalizer
- Add SpacingStep type (XS/SM/MD/LG/XL) with normalizer
- Add IconButtonClass(), SpaceXClass(), SpaceYClass() exported class functions
- Add buttonType(), inputType(), inputID(), textareaRows() helper functions to helpers.go
- Fix TestButtonClass_GhostVariant assertion to match compound class format preserved for Plan 02
2026-05-16 13:46:30 +02:00
Arthur Belleville
8602eb10a1
test(13-01): add failing tests for new variant enums and class functions (RED)
- TestButtonVariantGhost_Normalizer, TestButtonClass_GhostVariant
- TestBadgeVariantPrimary_Normalizer, TestBadgeClass_PrimaryVariant
- TestIconButtonClass_GhostNeutral, TestIconButtonClass_SolidNeutral
- TestSpaceXClass_MD, TestSpaceYClass_LG
2026-05-16 13:44:36 +02:00
Arthur Belleville
59e39fe538
feat(13-01): replace base.css with 223-line token vocabulary and extract auth.css
- Replace 28-line backend/internal/web/ui/base.css stub with full go-backend token vocabulary (223 lines, --color-brand-primary: #804eec)
- Create backend/internal/web/ui/auth.css with auth-provider button styles extracted from button.css Phase 8 block
- Update backend/tailwind.input.css to import auth.css after base.css
2026-05-16 13:43:56 +02:00
Arthur Belleville
45a914f4ea
docs(13): create phase plan 2026-05-16 13:28:09 +02:00
Arthur Belleville
593bb5bf20
fix(13): apply checker revisions to plans 04 and 05
- 13-04: add 13-03 to depends_on, bump wave 3→4 (form-field.css must exist before tailwind.input.css manifest is written)
- 13-05: bump wave 4→5 to follow 13-04; clear overclaimed requirements (DS-01–DS-09 → []); extend Task 1 automated verify with grep checks for RegisterCatalogRoute, build tag, and catalog page heading

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-05-16 13:24:46 +02:00
Arthur Belleville
9e954a40e7
docs(13): create phase 13 design system foundation plan (5 plans, 4 waves)
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-05-16 13:20:43 +02:00
Arthur Belleville
a25421e2cf
docs(13): add validation strategy 2026-05-16 13:08:31 +02:00
Arthur Belleville
5bb2636577
docs(13): research design system foundation phase
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-05-16 13:07:59 +02:00
Arthur Belleville
e867b735d9
docs(13): UI design contract 2026-05-16 12:58:32 +02:00
Arthur Belleville
bab59fb220
fix(13): collapse typography to 2 weights, fix CTA copy, add focal point
- Heading weight 700 → 600 (resolves checker BLOCK on Dim 4 — max 2 weights)
- Modal header and empty-state title font-weight updated to match
- Empty state CTA "Add item" → "Create item" (verb + noun, Dim 1 flag)
- Catalog page focal point declaration added (Dim 2 flag)

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-05-16 12:53:13 +02:00
Arthur Belleville
a0c21b0582
docs(13): UI design contract for design system foundation phase
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-05-16 12:48:52 +02:00
Arthur Belleville
ab64a73b1d
docs(state): record phase 13 context session 2026-05-16 12:41:32 +02:00
Arthur Belleville
3b9bd62a24
docs(13): capture phase context 2026-05-16 12:41:28 +02:00
Arthur Belleville
fcffb57df4
chore: archive v2.0 milestone 2026-05-16 11:01:12 +02:00