Skip to content

feat(web,web-react): add InputDetails component #DS-2454#2556

Merged
literat merged 5 commits intomainfrom
feat/ds-2454-accessible-consent-checkbox
Mar 27, 2026
Merged

feat(web,web-react): add InputDetails component #DS-2454#2556
literat merged 5 commits intomainfrom
feat/ds-2454-accessible-consent-checkbox

Conversation

@dlouhak
Copy link
Copy Markdown
Contributor

@dlouhak dlouhak commented Mar 23, 2026

Description

Add new InputDetails component for rendering supplementary content (e.g. modal trigger links for terms and conditions, privacy policies) below form field labels of the Checkbox or Toggle component.

  • rename commit FieldDetailsInputDetails

Additional context

InputDetails is a shared sub-component consumed internally by Checkbox and Toggle via their new details prop. It is also exported for standalone use.

Issue reference

https://jira.almacareer.tech/browse/DS-2454

Copilot AI review requested due to automatic review settings March 23, 2026 09:52
@dlouhak dlouhak self-assigned this Mar 23, 2026
@dlouhak dlouhak added feature New feature or request run-visual-tests Runs visual regression testing on this PR labels Mar 23, 2026
@netlify
Copy link
Copy Markdown

netlify bot commented Mar 23, 2026

Deploy Preview for spirit-design-system-storybook ready!

Name Link
🔨 Latest commit b586883
🔍 Latest deploy log https://app.netlify.com/projects/spirit-design-system-storybook/deploys/69c669286d501a00088b448e
😎 Deploy Preview https://deploy-preview-2556--spirit-design-system-storybook.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify
Copy link
Copy Markdown

netlify bot commented Mar 23, 2026

Deploy Preview for spirit-design-system-docsite ready!

Name Link
🔨 Latest commit b586883
🔍 Latest deploy log https://app.netlify.com/projects/spirit-design-system-docsite/deploys/69c669287f353e000818f779
😎 Deploy Preview https://deploy-preview-2556--spirit-design-system-docsite.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify
Copy link
Copy Markdown

netlify bot commented Mar 23, 2026

Deploy Preview for spirit-design-system ready!

Name Link
🔨 Latest commit b586883
🔍 Latest deploy log https://app.netlify.com/projects/spirit-design-system/deploys/69c669288ef92d0008cd479d
😎 Deploy Preview https://deploy-preview-2556--spirit-design-system.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

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.

Pull request overview

Adds a new FieldDetails sub-component to Spirit (web + web-react) for rendering supplementary consent-related content (e.g. modal triggers) beneath Checkbox/Toggle labels, and wires it into Checkbox/Toggle via a new details prop.

Changes:

  • Introduces FieldDetails styling and documentation in packages/web, including disabled-state color handling.
  • Adds details prop support to Checkbox and Toggle in packages/web-react, including aria-details wiring and new demos/tests.
  • Exports the new component from web-react public entrypoints and adds a visual regression snapshot.

Reviewed changes

Copilot reviewed 48 out of 53 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
tests/e2e/demo-components-compare.spec.ts-snapshots/fielddetails-chromium-linux.png Adds visual snapshot for FieldDetails.
packages/web/src/scss/tools/_form-fields.scss Adds mixin to set disabled FieldDetails text color via CSS variable.
packages/web/src/scss/settings/_form-fields.scss Adds disabled color token setting for FieldDetails.
packages/web/src/scss/components/index.scss Exposes FieldDetails SCSS module.
packages/web/src/scss/components/Toggle/index.html Adds Toggle consent examples using FieldDetails + modals.
packages/web/src/scss/components/Toggle/_Toggle.scss Applies FieldDetails disabled text color variable in disabled Toggle.
packages/web/src/scss/components/Toggle/README.md Documents consent + FieldDetails usage for Toggle (vanilla).
packages/web/src/scss/components/FieldDetails/index.scss Exposes FieldDetails SCSS entrypoint.
packages/web/src/scss/components/FieldDetails/index.html Adds FieldDetails demo page (vanilla).
packages/web/src/scss/components/FieldDetails/_theme.scss Defines FieldDetails theme tokens (typography/spacing/colors).
packages/web/src/scss/components/FieldDetails/_FieldDetails.scss Implements FieldDetails layout + color via CSS variable fallback.
packages/web/src/scss/components/FieldDetails/README.md Documents FieldDetails usage (vanilla).
packages/web/src/scss/components/Checkbox/index.html Adds Checkbox consent examples using FieldDetails + modals.
packages/web/src/scss/components/Checkbox/_Checkbox.scss Applies FieldDetails disabled text color variable in disabled Checkbox.
packages/web/src/scss/components/Checkbox/README.md Documents consent + FieldDetails usage for Checkbox (vanilla).
packages/web-react/src/types/shared/inputs.ts Introduces shared DetailsProps (details?: ReactNode).
packages/web-react/src/types/checkbox.ts Adds details prop to Checkbox types via DetailsProps.
packages/web-react/src/types/toggle.ts Adds details prop to Toggle types via DetailsProps.
packages/web-react/src/hooks/useAriaDetails.tsx Adds hook for managing aria-details id registration.
packages/web-react/src/hooks/index.ts Exports useAriaDetails.
packages/web-react/src/components/index.ts Exports FieldDetails from components barrel.
packages/web-react/src/components/Toggle/Toggle.tsx Renders FieldDetails when details provided and wires aria-details.
packages/web-react/src/components/Toggle/tests/Toggle.test.tsx Adds tests for details rendering + aria-details.
packages/web-react/src/components/Toggle/README.md Documents new details prop and consent patterns.
packages/web-react/src/components/Toggle/demo/index.tsx Adds consent demo sections for Toggle.
packages/web-react/src/components/Toggle/demo/ToggleConsentEmphasizedLabel.tsx Adds emphasized-label consent demo (Toggle).
packages/web-react/src/components/Toggle/demo/ToggleConsentFullExample.tsx Adds full consent demo with helper/validation + modals (Toggle).
packages/web-react/src/components/Checkbox/Checkbox.tsx Renders FieldDetails when details provided and wires aria-details.
packages/web-react/src/components/Checkbox/tests/Checkbox.test.tsx Adds tests for details rendering + aria-details.
packages/web-react/src/components/Checkbox/README.md Documents new details prop and consent patterns.
packages/web-react/src/components/Checkbox/demo/index.tsx Adds consent demo sections for Checkbox.
packages/web-react/src/components/Checkbox/demo/CheckboxConsentEmphasizedLabel.tsx Adds emphasized-label consent demo (Checkbox).
packages/web-react/src/components/Checkbox/demo/CheckboxConsentFullExample.tsx Adds full consent demo with helper/validation + modals (Checkbox).
packages/web-react/src/components/Field/useAriaIds.tsx Changes useAriaIds to named export (no default export).
packages/web-react/src/components/Field/index.ts Updates Field barrel exports for useAriaIds.
packages/web-react/src/components/Field/tests/useAriaIds.test.tsx Updates test import to named useAriaIds.
packages/web-react/src/components/FieldDetails/FieldDetails.tsx Adds new FieldDetails component with aria-details registration support.
packages/web-react/src/components/FieldDetails/types.ts Adds FieldDetails prop types.
packages/web-react/src/components/FieldDetails/useFieldDetailsStyleProps.ts Adds style-props hook for FieldDetails.
packages/web-react/src/components/FieldDetails/tests/FieldDetails.test.tsx Adds FieldDetails rendering + registration tests.
packages/web-react/src/components/FieldDetails/tests/useFieldDetailsStyleProps.test.ts Adds hook test for className prefix.
packages/web-react/src/components/FieldDetails/README.md Documents FieldDetails (React) usage/API.
packages/web-react/src/components/FieldDetails/stories/FieldDetails.stories.tsx Adds Storybook stories for FieldDetails.
packages/web-react/src/components/FieldDetails/index.ts Adds FieldDetails entrypoint exports.
packages/web-react/src/components/FieldDetails/index.html Adds web-react demo page entry for FieldDetails.
packages/web-react/src/components/FieldDetails/demo/index.tsx Adds FieldDetails demo app entry (web-react).
packages/web-react/src/components/FieldDetails/demo/FieldDetailsDefault.tsx Adds Checkbox-based FieldDetails demo (web-react).
packages/web-react/src/components/FieldDetails/demo/FieldDetailsWithToggle.tsx Adds Toggle-based FieldDetails demo (web-react).
packages/web-react/package.json Adds package export map entry for ./components/FieldDetails.

@github-actions
Copy link
Copy Markdown
Contributor

@literat
Copy link
Copy Markdown
Collaborator

literat commented Mar 23, 2026

Screenshot 2026-03-23 at 15 19 44

Is it ok that the detail goes under the Toggle button? Shouldn't this be a different column?

@literat
Copy link
Copy Markdown
Collaborator

literat commented Mar 23, 2026

suggestion (non-blocking): Consider renaming FieldDetails to FieldAccessory before the feature ships publicly. The current name is technically correct, but does not communicate the interactive-content purpose clearly, and it risks being used as a catch-all supplementary text slot (duplicating helperText semantics).

  • "Accessory" implies an optional attachment that accompanies the main field content.

  • It distinguishes itself from helperText (instructional prose, non-interactive) and validationText (status feedback).

  • It is neutral about content type (link, button, plain text are all valid).

  • It maps well to the spirit of the ARIA pattern: aria-details targets an "accessory" of additional information.

  • "Details" is ambiguous: in HTML <details> means collapsible content; in ARIA aria-details is the attribute, but the element pointed to has no special semantic name. "Details" reads as a generic noun, not describing the pattern.

  • It is a generic name that could be reused for any supplementary content under any field, not only consent patterns. That could be a feature (reusability) or a risk (misuse for helper-text-like content that should really use helperText).

@github-actions
Copy link
Copy Markdown
Contributor

@github-actions
Copy link
Copy Markdown
Contributor

Copilot AI review requested due to automatic review settings March 24, 2026 09:19
@github-actions
Copy link
Copy Markdown
Contributor

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.

Pull request overview

Copilot reviewed 48 out of 53 changed files in this pull request and generated 5 comments.

@github-actions
Copy link
Copy Markdown
Contributor

@dlouhak dlouhak changed the title feat(web,web-react): add FieldDetails component #DS-2454 feat(web,web-react): add InputDetails component #DS-2454 Mar 24, 2026
@literat literat force-pushed the feat/ds-2454-accessible-consent-checkbox branch from 4f69156 to 81b09a7 Compare March 27, 2026 09:29
@github-actions
Copy link
Copy Markdown
Contributor

Copilot AI review requested due to automatic review settings March 27, 2026 09:34
@literat literat force-pushed the feat/ds-2454-accessible-consent-checkbox branch from d8643c5 to 800c8ed Compare March 27, 2026 09:36
@github-actions
Copy link
Copy Markdown
Contributor

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.

Pull request overview

Copilot reviewed 65 out of 69 changed files in this pull request and generated no new comments.

@literat literat force-pushed the feat/ds-2454-accessible-consent-checkbox branch from 800c8ed to eb0a2d0 Compare March 27, 2026 09:46
@github-actions
Copy link
Copy Markdown
Contributor

Copilot AI review requested due to automatic review settings March 27, 2026 09:54
@github-actions
Copy link
Copy Markdown
Contributor

@literat literat force-pushed the feat/ds-2454-accessible-consent-checkbox branch from 26e58fa to c41efae Compare March 27, 2026 09:56
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.

Pull request overview

Copilot reviewed 65 out of 70 changed files in this pull request and generated 3 comments.

@github-actions
Copy link
Copy Markdown
Contributor

@literat literat force-pushed the feat/ds-2454-accessible-consent-checkbox branch 2 times, most recently from 7799ddd to 01a37d9 Compare March 27, 2026 10:55
Copilot AI review requested due to automatic review settings March 27, 2026 10:58
@literat literat force-pushed the feat/ds-2454-accessible-consent-checkbox branch from 01a37d9 to c63868c Compare March 27, 2026 10:58
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.

Pull request overview

Copilot reviewed 64 out of 69 changed files in this pull request and generated 1 comment.

literat added 2 commits March 27, 2026 12:25
  * add ignore pattern for hook names (useXxx) to heading-capitalization
    rule so they are not flagged as capitalization errors
@literat literat force-pushed the feat/ds-2454-accessible-consent-checkbox branch from c63868c to b586883 Compare March 27, 2026 11:25
@github-actions
Copy link
Copy Markdown
Contributor

@literat literat merged commit d2a144e into main Mar 27, 2026
41 of 42 checks passed
@literat literat deleted the feat/ds-2454-accessible-consent-checkbox branch March 27, 2026 11:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature New feature or request run-visual-tests Runs visual regression testing on this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants