Skip to content

Epic: Onu v1 — implement REQUIREMENTS.md #2

Open
34 of 35 issues completed
Open

Description

@n4ff4h

Tracking issue for building @javaabu/onu as specified in REQUIREMENTS.md.

Work is split into sub-issues:

  • Foundations: repo tooling & CI, design tokens & theming, providers & i18n, icons, fonts, Thaana keyboard engine
  • Components: one issue per build-list group (§22)
  • Examples: showcase app plus one issue per sample-page group (§23)
  • Docs, E2E/visual tests and the Figma kit

Each component must meet the definition of done in §21: light/dark, LTR/RTL, dv locale, thaana prop where relevant, tokens-only theming, overrides, WCAG 2.2 AA with axe tests, unit tests, showcase page, docs page, and a changeset. Components with a §25 behaviour spec must match it, with a test for each listed behaviour.

Order of work: foundations → core primitives (buttons, inputs, overlays, layout) → remaining component groups → sample pages → docs → Figma.

Activity

  1. 7 remaining items

  2. n4ff4h commented on Oct 7, 2026

    @n4ff4h
    CollaboratorAuthor

    Status update. Everything is on claude/amazing-cerf-htnpm8 (head cc0b6dd).

    Done

    Checks on the head commit

    • Format, lint, typecheck, check-docs: clean
    • Vitest: 2036 passed, 1 skipped
    • Package and examples builds: pass
    • Axe scan (light LTR and dark RTL, every demo and sample page): 578 checks, 0 violations

    Open follow-ups (not implemented yet)

    • SearchResults: same-page "more" callback
    • DropzoneUploader: controlled value
    • QR code generator
    • Excel and PDF export for listings
    • Unsaved-changes guard on Back/Forward:
      • needs the Navigation API, and browsers won't allow a second cancel without user interaction in between
      • programmatic navigation still needs guard()
    • Editor tables still take the page's direction (lists and quotes resolve their own)
    • Google Maps adapter not yet checked against a real API key
    • Figma file not yet created (needs a Figma workspace); every component's figmaUrl is still empty
    • Waiting on assets and licences: MV Waheed font licence, BML/eFaas brand assets
    • Bundle size: the full Lucide map inside Icon
    • Visual tests: turn off Recharts animation for screenshots
    • Changeset still missing for the form, listing and layout fixes

    Generated by Claude Code

  3. n4ff4h commented on Oct 8, 2026

    @n4ff4h
    CollaboratorAuthor

    Follow-up round, now on main.

    Done

    • Client-side export (@javaabu/onu/export): exportRows / useExportRows.
      • CSV: UTF-8 with BOM, guarded against formula injection.
      • Excel: uses write-excel-file, an optional peer. Cells keep their types, and right-to-left sheets are supported.
      • PDF: a print-ready document, so Thaana renders correctly.
      • The listing sample pages now export real data.
    • SearchResults: new onShowMore(groupId, group). Results load on the same page, focus moves to the first new result, and the change is announced.
    • DropzoneUploader: controlled value, defaultValue and onValueChange. Saved files can be listed and removed.
    • QR codes: new QrCode in @javaabu/onu/media.
      • Encoding uses uqr, and the SVG is drawn with theme colours.
      • Optional centre logo, with error correction forced to level H.
      • PNG/SVG download (colours converted to sRGB) and a copy button.
      • Used on the certificate sample page.
    • Editor tables: tables now take their direction from their content, as lists and quotes already did.
    • Charts: a new ChartAnimationProvider, and every chart honours prefers-reduced-motion.
    • Stable chart screenshots: chart pages now grow the viewport before capturing instead of using fullPage, because the full-page resize caught charts mid-render. After that change, 2 × 96 repeated chart captures passed under load.
    • Bundle size: a Button import is now 11.9 kB instead of 20.7 kB, and FormField + TextInput is 28.2 kB instead of 37.2 kB. Fixed glyphs are passed as Icon fallbacks, the shadcn sync script generates them, and an ESLint rule plus a test guard against regressions.
    • FormField: it now shrinks inside grid and flex columns (min-w-0).
    • Changesets: added the one that was missing for the form, listing and layout fixes.

    Behaviour change: outside OnuProvider, icon names chosen at runtime (e.g. <Button startIcon="add">) show a generic icon. The root Icon and fixed glyphs still work without the provider.

    Still open (needs input or access)

    • Testing the Google Maps adapter with a real API key.
    • Creating the Figma kit file, which needs a workspace and token.
    • The MV Waheed licence.
    • BML/eFaas brand assets.
    • Back/Forward guarding only works in browsers with the Navigation API.

    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions