Skip to content

initial try porting v0 into echart#245

Open
jwagoner-sudo wants to merge 1 commit into
mainfrom
port-v0-case-mgmt
Open

initial try porting v0 into echart#245
jwagoner-sudo wants to merge 1 commit into
mainfrom
port-v0-case-mgmt

Conversation

@jwagoner-sudo
Copy link
Copy Markdown

Initial attempt at porting the v0-case-mgmt feature set into the @mieweb/ui library as presentational components (case manager + 10 tabs, dashboard, wizard, admin/code-table managers, todo backlog, work status report, etc.) for use in echart-sim.

Copilot AI review requested due to automatic review settings May 29, 2026 23:42
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Copilot wasn't able to review this pull request because it exceeds the maximum number of lines (20,000). Try reducing the number of changed lines and requesting a review from Copilot again.

const selected = templates.find((t) => t.code === code);
if (selected?.content) {
const evaluated = evaluateTemplate(selected.content);
const isHtml = /<[a-z][\s\S]*>/i.test(evaluated);
note.lineout && 'line-through'
)}
>
{note.notes.replace(/<[^>]+>/g, '').slice(0, 100)}
note.lineout && 'line-through'
)}
>
{note.notes.replace(/<[^>]+>/g, '').slice(0, 100)}
Comment on lines +83 to +84
return html
.replace(/&lt;&lt;\s*(.*?)\s*&gt;&gt;/g, '{{$1}}')

/** Returns true when an HTML string has no visible text content. */
export function isHtmlEmpty(html: string): boolean {
return html.replace(/<[^>]*>/g, '').replace(/&nbsp;/g, ' ').trim().length === 0;

/** Returns true when an HTML string has no visible text content. */
export function isHtmlEmpty(html: string): boolean {
return html.replace(/<[^>]*>/g, '').replace(/&nbsp;/g, ' ').trim().length === 0;
<div className="fixed inset-0 z-50">
<div
className={cn(sheetOverlayVariants())}
data-state={open ? 'open' : 'closed'}
aria-describedby={ariaDescribedBy}
id={sheetId}
tabIndex={-1}
data-state={open ? 'open' : 'closed'}
@cloudflare-workers-and-pages
Copy link
Copy Markdown

Deploying ui with  Cloudflare Pages  Cloudflare Pages

Latest commit: 73549e9
Status: ✅  Deploy successful!
Preview URL: https://4526f44d.ui-6d0.pages.dev
Branch Preview URL: https://port-v0-case-mgmt.ui-6d0.pages.dev

View logs

@garrity-miepub
Copy link
Copy Markdown
Contributor

garrity-miepub commented Jun 1, 2026

Overall this is a very clean PR (despite its size 😆 ) and fantastic use of existing components and style tokens.

Below are the only issues I saw that needed to be addressed before we can merge it.

CaseContactTab

  • The "Primary" badge is hand-rolled (<span className="...">Primary</span>) instead of using the <Badge> component. Need to replace with the library's badge component.

  • There are 2 a11y contrast issues that need to be fixed image

CaseDetailsTab

  • TextareaField uses a raw <textarea> instead of the library's <Textarea> component. The styles are hand-written inline (min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2...). Should use <Textarea> for consistency.
  • There are 3 a11y contrast issues that need to be fixed image

CaseManager

  • Theres 1 a11y contrast issue that need to be fixed image

CasePayInformationTab

  • This uses raw Tailwind color classes (border-warning-300, bg-warning-50, text-warning-800) directly instead of using the library's component which already handles these exact styles. Replace with the library's component
  • There are 5 a11y contrast issues that need to be fixed image

CaseRestrictionsTab

  • <Button ... className="h-8 w-8 p-0 text-green-600" ...> text-green-600 is a raw Tailwind color not tied to any design token. Should use a semantic class like text-success (if one exists) or text-primary-600 to stay within the token system. These are the "save" action buttons in the quick-entry row.
  • There is 1 a11y contrast issue that need to be fixed image

CaseTodosTab

  • There is 1 a11y contrast issue that needs to be fixed image

CreateCaseWizard

  • Same pattern as CasePayInformationTab — hand-rolled warning box using raw border-warning-300 bg-warning-50 text-warning-800 instead of <Alert variant="warning">. This is the "Open Cases Found" conflict warning in step 1. Should use <Alert> to stay consistent with the rest of the PR.

FloatingWindow

  • text-white on the header bar should be text-primary-foreground so it stays correct if the brand primary ever shifts to a light color. Similarly hover:bg-white/20 on the control buttons is a raw color — no urgent token for "translucent contrast on dark header" exists today, but worth noting for when one does. bg-black/50 on the overlay is standard scrim and fine as-is.
  • There is 1 a11y issue that needs to be fixed image

ScrollArea

  • There is 1 a11y issue that needs to be fixed image

Toggle

  • When the toggle is pressed, it uses text-white for the text color. This works fine today with bg-primary-800, but if a brand theme defines a light primary-800 (or if we ever need to adjust the pressed-state palette), it'll break contrast. Swap to text-primary-foreground so the brand CSS controls both sides of the pairing.

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.

4 participants