Skip to content

fix: TierEditor inputs, password single source of truth, bundle route, Textarea stories, e2e workflow - #1175

Merged
BigBen-7 merged 2 commits into
Lead-Studios:mainfrom
hikmat67-code:fix/FE-1095-1096-1097-1098-bundle-password-tier-textarea
Oct 18, 2026
Merged

BigBen-7 merged 2 commits into
Lead-Studios:mainfrom
hikmat67-code:fix/FE-1095-1096-1097-1098-bundle-password-tier-textarea

Conversation

@hikmat67-code

Copy link
Copy Markdown
Contributor

Summary

Fixes four issues assigned to me plus one pre-existing workflow bug found during review.


Closes #1097 — Bundle budget references a route that does not exist

Renamed /events/create → /dashboard/events/new in:

  • BUNDLE_BUDGET.md (the table row)
  • scripts/check-bundle-budget.mjs (the LIMITS map)

The CI Bundle budget step was reporting that route as missing and failing on every passing build.


Closes #1096 — passwordSchema and PASSWORD_RULES can drift

Replaced the four chained .regex() calls in passwordSchema with a single superRefine that iterates PASSWORD_RULES. There is now exactly one place to add or remove a password policy rule; the strength checklist and the Zod validator share the same array and can no longer drift.

All 10 existing password tests continue to pass.


Closes #1095 — TierEditor name is readOnly with no price or quantity inputs

  • Removed readOnly from the name Input and wired an onChange handler.
  • Added price (minor units) and quantity number inputs in a two-column grid for each tier.
  • Keyed rows by a stable counter id (not array index) so removing one row does not shift focus to an adjacent row.

Closes #1098 — Textarea has no Storybook story

Added src/components/ui/textarea.stories.tsx with four stories:

Story What it covers
Default Empty, fully interactive field
Disabled disabled prop; muted appearance, not focusable
Error aria-invalid ring plus associated error message
CharacterCounter Controlled field with accessible live-region counter

Workflow fix — e2e.yml used a hardcoded Node version

Replaced node-version: "20" with node-version-file: ".nvmrc" so all three CI workflows (ci.yml, e2e.yml, lighthouse.yml) read the same single source of truth. The comment in the file already noted this switch was needed.


Testing

  • npm run lint — passes on all changed files (pre-existing errors on other files are unchanged from main)
  • npm test — 326 passing; the 2 pre-existing failures (analytics.test.ts, csv.test.ts) reproduce on main unchanged
  • Password unit tests: 10/10 pass

…1097 Lead-Studios#1098 and workflow bug

Lead-Studios#1097 — rename /events/create to /dashboard/events/new in BUNDLE_BUDGET.md
and scripts/check-bundle-budget.mjs so the CI budget step no longer reports
a missing route and fails.

Lead-Studios#1096 — build passwordSchema from PASSWORD_RULES with a single superRefine
loop so the strength checklist and the Zod validator share one source of truth
and can never drift apart.

Lead-Studios#1095 — replace the readOnly name Input in TierEditor with a live onChange
handler, add price (minor units) and quantity number inputs, and key rows by
a stable counter id so removing a row does not shift focus to adjacent rows.

Lead-Studios#1098 — add src/components/ui/textarea.stories.tsx covering the Default,
Disabled, Error (aria-invalid), and CharacterCounter states, matching the
pattern established by the other 22 ui primitive stories.

workflow — switch e2e.yml from a hardcoded node-version: "20" to
node-version-file: ".nvmrc" so all three workflows (ci.yml, e2e.yml,
lighthouse.yml) use the same Node version.
@drips-wave

drips-wave Bot commented Oct 16, 2026

Copy link
Copy Markdown

@hikmat67-code Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@BigBen-7
BigBen-7 merged commit aefad4b into Lead-Studios:main Oct 18, 2026
1 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants