You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
update developer docs (API, README, inline, etc.), if any
for user-facing doc changes create a Zulip thread at #Support Docs Updates, if any
draft PR with a title <type>(<scope>)<!>: <title> DEV-1234
assign yourself, tag PR: at least Front end and/or Back end or workflow
fill in the template below and delete template comments
review thyself: read the diff and repro the preview as written
open PR & confirm that CI passes & request reviewers, if needed
act on any greptile review below a 5/5 score or leave comment explaining why you won't
delete this checklist section from the final squash commit before merging
📣 Summary
Kobo text inputs now look and behave consistently across TextInput, Textarea, NumberInput, and PasswordInput.
💭 Notes
This branch aligns the shared Kobo styling for the main Mantine input components so their borders, placeholder colors, disabled states, error states, and keyboard focus rings match. It also adds Storybook coverage to make it easy to compare the inputs side by side and catch any visual drift later.
Changes here:
InputBase.module.css
Centralized the shared input border, disabled, error, and focus styling.
Added wrapper-level focus styling so components like PasswordInput show the same focus ring as the others.
Textarea.ts and NumberInput.ts
Point both components at the shared Kobo input styles instead of separate CSS modules.
PasswordInput.ts
Added a Kobo theme wrapper for PasswordInput so it uses the same shared input classes.
InputBase.stories.tsx
Added a comparison story that renders all the themed inputs together.
NumberInput.stories.tsx
Added a simple NumberInput story for visual checks.
👀 Preview steps
Go to Storybook → Design system → InputBase.
Compare the rendered inputs in the stacked story.
Click into each field and use Tab to move focus between them.
🔴 Before this change, PasswordInput, TextArea could look different from the other inputs.
🟢 After this change, the border, focus ring, disabled state, and error styling should match across all of them.
This PR consolidates the visual styling of Textarea, NumberInput, and PasswordInput to share InputBase.module.css, replacing the now-deleted NumberInput.module.css and the previously empty Textarea.ts. New CSS rules for .control, .visibilityToggle, and :focus-within focus rings are added to the shared CSS module. A new PasswordInputThemeKobo component is registered in the Kobo theme.
Textarea.ts and NumberInput.ts are updated to point to InputBase.module.css via classNames: classes, and a new PasswordInput.ts theme is introduced with explicit per-slot class mappings.
InputBase.module.css is extended with .control state rules (disabled, error, hover) and a .visibilityToggle block to support the PasswordInput eye-icon button.
focusRing.css adds .mantine-PasswordInput-innerInput:focus-visible to apply the Kobo focus ring to the actual <input> element inside PasswordInput.
Confidence Score: 5/5
Safe to merge — changes are scoped entirely to CSS module consolidation and Mantine theme wiring with no functional logic touched.
All changes are purely visual: CSS class mappings are consolidated into a shared module, a dead separate CSS file is deleted, and new Storybook stories verify the appearance side-by-side. No data logic, API calls, or authentication paths are modified. The one gap — PasswordInput labels not receiving the Kobo label class — was already the case before this PR and does not block merging.
jsapp/js/theme/kobo/PasswordInput.ts — the label slot is not wired to classes.label unlike the other input theme files.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🗒️ Checklist
#Support Docs Updates, if any<type>(<scope>)<!>: <title> DEV-1234Front endand/orBack endorworkflow📣 Summary
Kobo text inputs now look and behave consistently across
TextInput,Textarea,NumberInput, andPasswordInput.💭 Notes
This branch aligns the shared Kobo styling for the main Mantine input components so their borders, placeholder colors, disabled states, error states, and keyboard focus rings match. It also adds Storybook coverage to make it easy to compare the inputs side by side and catch any visual drift later.
Changes here:
PasswordInputshow the same focus ring as the others.PasswordInputso it uses the same shared input classes.👀 Preview steps
Storybook → Design system → InputBase.Tabto move focus between them.PasswordInput,TextAreacould look different from the other inputs.