Skip to content

feat: add condensed view for form & input components#147

Merged
garrity-miepub merged 52 commits intomainfrom
feature/condensed-view-form-and-input-components
Mar 27, 2026
Merged

feat: add condensed view for form & input components#147
garrity-miepub merged 52 commits intomainfrom
feature/condensed-view-form-and-input-components

Conversation

@garrity-miepub
Copy link
Copy Markdown
Contributor

@garrity-miepub garrity-miepub commented Mar 24, 2026

Condensed density support for Form & Input components

Adds data-slot attributes and condensed CSS overrides for form components: Input, Textarea, Select, Button, Checkbox, CheckboxGroup, Radio, RadioGroup, Switch, Address, AdditionalFields, BusinessHoursEditor, CSVColumnMapper, ClaimProviderForm, CountryCodeDropdown, CreateInvoiceModal, CreateReferralModal, DateInput, DateRangePicker, Dropdown, EmployeeForm, EmployerServiceModal, HRISProviderSelector, InviteUserModal, OrderConfirmationWizard, PermissionsEditor, PhoneInput, SchedulePicker, ServicePicker, and Slider.

Design Philosophy

Condensed mode uses a single uniform size — all size prop variants (sm/md/lg) collapse to one condensed target. This ensures maximum information density and visual consistency. The size prop continues to work normally in default mode.

Property Condensed Value
Height (Input/Select/Button) 1.75rem
Min-height (Textarea) 2.25rem
Font size (fields) 0.75rem (12px)
Font size (buttons) 0.6875rem (11px)
Border radius 0.375rem
Padding (Input/Textarea) 0.0625rem top/bottom
Label font 0.6875rem
Error/helper font 0.6875rem
Wrapper gap 0.25rem
Checkbox/Radio size 0.875rem square/circle
Radio dot 0.375rem
Switch track 1rem × 1.75rem
Switch thumb 0.75rem
Checkbox/Radio/Switch label 0.75rem
Address font 0.75rem
Group items gap 0.25rem

Changes

Inputdata-slot: input-wrapper, input-label, input, input-error, input-helper
Textareadata-slot: textarea-wrapper, textarea-label, textarea, textarea-footer, textarea-error, textarea-helper, textarea-count
Selectdata-slot: select-wrapper, select-label, select-trigger, select-dropdown, select-search, select-listbox, select-option, select-group-label, select-error, select-helper

  • Dropdown positioning now uses condensed-aware option height estimate (28px vs 40px)

Buttondata-slot: button, data-size: reflects size prop (sm/md/lg/icon)

  • Icon-only condensed selector uses [data-size='icon'] instead of .w-10 for stability

Checkboxdata-slot: checkbox-wrapper, checkbox-row, checkbox-indicator, checkbox, checkbox-label, checkbox-description, checkbox-error
CheckboxGroupdata-slot: checkbox-group, checkbox-group-legend, checkbox-group-description, checkbox-group-items, checkbox-group-error
Radiodata-slot: radio-wrapper, radio-indicator, radio, radio-dot, radio-label, radio-description
RadioGroupdata-slot: radio-group, radio-group-legend, radio-group-description, radio-group-items, radio-group-error
Switchdata-slot: switch-wrapper, switch, switch-thumb, switch-label, switch-description
Addressdata-slot: address, address-card, address-card-title, address-card-phone
AdditionalFieldsdata-slot: additional-fields, additional-fields-title, additional-fields-header, additional-fields-row, additional-fields-content
BusinessHoursEditordata-slot: business-hours-editor, business-hours-day, business-hours-day-header, business-hours-day-name, business-hours-closed, business-hours-slots, business-hours-slot-row, business-hours-separator

  • Condensed CSS: tighter day spacing, smaller day name/closed text, reduced slot row gaps

CSVColumnMapperdata-slot: csv-mapper, csv-mapper-actions, csv-mapper-alert, csv-mapper-alert-title, csv-mapper-alert-desc, csv-mapper-instructions, csv-mapper-grid, csv-mapper-footer, csv-mapper-progress, csv-card, csv-card-header, csv-card-title, csv-card-body, csv-card-label, csv-card-sample, csv-card-ignore

  • Condensed CSS: compact cards, tighter grid gap, smaller alert/labels/sample values, reduced status icons

ClaimProviderFormdata-slot: claim-form-title, claim-form-provider, claim-form-provider-name, claim-form-provider-addr, claim-form-body, claim-form-error, claim-form-error-text, claim-form-section, claim-form-section-title, claim-form-grid, claim-form-terms, claim-form-terms-label, claim-form-terms-text, claim-form-actions

  • Condensed CSS: tighter form sections, smaller title/labels, compact provider box, reduced grid gap, CardHeader override via :has()

CountryCodeDropdowndata-slot: country-dropdown, country-dropdown-trigger, country-dropdown-flag, country-dropdown-dialcode, country-dropdown-chevron, country-dropdown-panel, country-dropdown-search, country-dropdown-search-input, country-dropdown-list, country-dropdown-option, country-dropdown-option-flag, country-dropdown-option-name, country-dropdown-option-dialcode

  • Condensed CSS: smaller trigger (0.75rem font, tighter padding), compact dropdown panel (16rem), denser option rows, smaller flag emojis and dial codes

CreateInvoiceModaldata-slot: invoice-modal, invoice-modal-header, invoice-modal-error, invoice-modal-step-desc, invoice-modal-toggle-all, invoice-modal-empty, invoice-modal-empty-icon, invoice-modal-order-list, invoice-modal-order, invoice-modal-order-check, invoice-modal-order-number, invoice-modal-order-amount, invoice-modal-order-detail, invoice-modal-summary, invoice-modal-summary-total, invoice-modal-footer, invoice-modal-footer-buttons

  • Condensed CSS: compact error box, smaller step descriptions, denser order cards (0.875rem custom checkbox), shorter order list (12rem), smaller empty state, compact summary bars

CreateReferralModaldata-slot: referral-modal, referral-modal-error, referral-modal-employee, referral-modal-employee-label, referral-modal-employee-name, referral-modal-employee-detail, referral-modal-section-label, referral-modal-service-list, referral-modal-service, referral-modal-service-check, referral-modal-service-name, referral-modal-service-desc, referral-modal-service-price, referral-modal-priority-row, referral-modal-priority, referral-modal-summary, referral-modal-summary-total

  • Condensed CSS: compact employee info box (uses explicit data-slot attrs instead of nth-child selectors), smaller section labels, denser service cards (0.875rem custom checkbox), shorter service list (12rem), smaller priority pills, compact cost summary

DateInput — condensed support via delegation to Input component (non-calendar mode) and dedicated condensed overrides for calendar popup mode
DateRangePickerdata-slot: date-range-picker, date-range-trigger, date-range-trigger-icon, date-range-popup, date-range-presets, date-range-preset, date-range-calendar, date-range-subtitle, date-range-calendars, date-range-month-header, date-range-month-label, date-range-nav, date-range-grid, date-range-weekdays, date-range-weekday, date-range-day-grid, date-range-day, date-range-mobile-overlay, date-range-mobile-sheet, date-range-mobile-handle, date-range-mobile-title, date-range-mobile-done, date-range-filter

  • Condensed CSS: compact trigger (1.75rem height, 14rem width), smaller day cells (1.5rem × 1.75rem), narrow preset sidebar (9rem), tighter calendar panels, compact mobile sheet (15rem max-width)

Dropdowndata-slot: dropdown-menu, dropdown-search, dropdown-search-input, dropdown-select-all, dropdown-empty, dropdown-header, dropdown-header-row, dropdown-header-title, dropdown-header-subtitle, dropdown-content, dropdown-item, dropdown-item-icon, dropdown-item-label, dropdown-checkbox, dropdown-label, dropdown-separator

  • Condensed CSS: tighter menu panel (8rem min-width, 0.5rem radius), compact items (0.25rem/0.5rem padding, 0.6875rem font), smaller checkboxes (0.75rem), smaller search input (1.75rem height)
  • No disruption to consumers (DateRangeFilter, ProviderUsersTable) — verified

EmployeeFormdata-slot: employee-form, employee-form-section, employee-form-section-title, employee-form-grid, employee-form-address, employee-form-phones, employee-form-phone-row, employee-form-phone-remove, employee-form-add-phone, employee-form-status, employee-form-status-label, employee-form-footer, employee-form-invite, employee-form-invite-label, employee-form-actions, employee-form-cancel, employee-form-submit

  • Condensed CSS: tighter section spacing (0.5rem), smaller section titles (0.75rem), reduced grid gaps (0.25rem), compact phone rows, smaller buttons (1.75rem height, 0.6875rem font), smaller labels and link text
  • Sub-components (Input, Textarea, Select, Switch) inherit their own condensed styles

EmployerServiceModaldata-slot: employer-service-body, employer-service-error, employer-service-info, employer-service-info-name, employer-service-info-price, employer-service-section, employer-service-section-title, employer-service-switch-row, employer-service-switch-label, employer-service-indent, employer-service-label, employer-service-price-input, employer-service-price-prefix, employer-service-textarea, employer-service-spinner

  • Condensed CSS: tighter section/body spacing, smaller section titles and labels, compact service info box, reduced price input width, smaller switch labels and indented blocks
  • Sub-components (Switch, Input, Textarea, Button) inherit their own condensed styles

HRISProviderSelectordata-slot: hris-connected-card, hris-connected-row, hris-connected-logo, hris-connected-title, hris-connected-desc, hris-connected-sync, hris-connected-alert, hris-connected-actions, hris-connected-btn, hris-connected-btn-primary, hris-search-wrapper, hris-search-icon, hris-search-input, hris-grid, hris-card, hris-card-icon, hris-card-label, hris-no-results

  • Condensed CSS: compact connected panel (smaller logo, tighter text), denser provider grid (4-col on wide screens), smaller provider cards with reduced icon/label sizes, compact search bar, smaller action buttons with icons

InviteUserModaldata-slot: invite-user-body, invite-user-entity, invite-user-success, invite-user-error, invite-user-name-grid, invite-user-message, invite-user-label, invite-user-textarea, invite-user-info, invite-user-spinner

  • Condensed CSS: tighter body spacing, smaller entity info text, compact alert boxes, reduced name grid gap, smaller message label and textarea, compact info text
  • Sub-components (Input, Select, Button, Modal) inherit their own condensed styles

OrderConfirmationWizarddata-slot: ocw-root, ocw-progress, ocw-step-circle, ocw-step-label, ocw-step-connector, ocw-summary-card, ocw-summary-row, ocw-summary-title, ocw-summary-subtitle, ocw-step-card, ocw-step-content, ocw-step-body, ocw-step-title, ocw-step-desc, ocw-detail-grid, ocw-checkbox-row, ocw-checkbox, ocw-checkbox-label, ocw-label, ocw-textarea, ocw-checkbox-card, ocw-checkbox-card-title, ocw-checkbox-card-desc, ocw-confirm-list, ocw-confirm-row, ocw-confirm-label, ocw-nav

  • Condensed CSS: smaller step circles (1.5rem, matching StepIndicator sm), centered connectors touching circles, compact summary card, tighter step body spacing, smaller titles/descriptions, reduced detail grid gaps, compact checkbox cards, smaller confirm list spacing
  • Sub-components (Button, Badge, Input, Card/CardContent) inherit their own condensed styles
  • Fix: Step connector lines now vertically centered with circles and edge-to-edge in both default and condensed modes

PermissionsEditordata-slot: perm-editor, perm-section, perm-section-header, perm-section-title, perm-section-username, perm-groups, perm-group-header, perm-group-name, perm-group-list, perm-item, perm-item-row, perm-item-toggle, perm-item-label, perm-separator, perm-employer-section, perm-employer-list, perm-employer-row, perm-employer-label, perm-employer-name, perm-employer-addr, perm-summary, perm-summary-title, perm-summary-list, perm-summary-subtitle

  • Condensed CSS: smaller section headers (0.8125rem), tighter permission item spacing, compact group lists with reduced indentation, smaller employer rows, compact summary box with reduced font sizes
  • Sub-component (Checkbox) inherits its own condensed styles

PhoneInputdata-slot: phone-input, phone-row, phone-number-wrapper, phone-number-label, phone-number-input, phone-type-select, phone-action, phone-add-btn, phone-remove-btn

  • Condensed CSS: tighter row spacing, smaller input/select fields, compact add/remove buttons

SchedulePickerdata-slot: schedule-picker, schedule-date-btn, schedule-date-weekday, schedule-date-day, schedule-date-month, schedule-time-btn, schedule-radio, schedule-radio-indicator, schedule-radio-dot, schedule-radio-title, schedule-radio-desc, schedule-date-picker, schedule-date-picker-label, schedule-date-picker-list, schedule-time-picker, schedule-time-picker-label, schedule-time-picker-grid

  • Condensed CSS: smaller date/time buttons, compact radio options, tighter picker grids

ServicePickerdata-slot: service-picker, service-picker-header, service-picker-heading, service-picker-search, service-picker-body, service-picker-error, service-picker-loading, service-picker-list, service-picker-empty, service-picker-group-btn, service-picker-group-name, service-picker-group-dot, service-picker-group-list, service-picker-item, service-picker-item-check, service-picker-radio, service-picker-radio-dot, service-picker-item-name, service-picker-item-code, service-picker-item-desc, service-picker-item-price

  • Condensed CSS: compact card, smaller headings/search, tighter service items, smaller checkboxes/radios

Sliderdata-slot: slider, slider-label-row, slider-label, slider-value, slider-description, slider-track-wrapper, slider-track, slider-range, slider-thumb, slider-minmax

  • Condensed CSS: smaller labels/values, narrower track, smaller thumb

CSS Architecture

All condensed CSS rules are extracted into a dedicated file src/styles/condensed-view.css and imported via @import './condensed-view.css' at the top of base.css.

Font-size scale fix

Reduced the condensed font-size scale across all components to ensure condensed text is always visibly smaller than standard mode:

  • Fields (Input/Textarea/Select/Options): 0.8125rem0.75rem (13px → 12px)
  • Buttons: 0.8125rem0.6875rem (13px → 11px) — fixes bug where condensed was larger than standard text-xs
  • Labels: 0.75rem0.6875rem (12px → 11px)
  • Also applied to PR feat: add condensed view for text & data display components #146 components (inventory-manager h3, service-card h3, order-confirmation button)

Notes

  • !important is required — Tailwind 4 @layer utilities lowers specificity below even body.condensed [data-slot='x'] selectors (confirmed in PR feat: add condensed view for text & data display components #146)
  • All changes scoped under body.condensed — zero impact on default density
  • Fix: Input stories use defaultValue instead of value to resolve React controlled-component warning
  • Fix: Switch thumb uses transform: translateX(...) to preserve transition-transform animation
  • Fix: Button icon-only condensed selector uses [data-size='icon'] instead of .w-10 class match
  • Fix: AdditionalFields condensed spacing uses margin-bottom on children instead of gap (wrapper uses space-y-* block layout, not flex/grid)
  • Fix: Invoice modal footer uses dedicated data-slot instead of .flex descendant selector to avoid broad matching
  • Fix: CreateReferralModal employee section uses explicit data-slot attrs instead of fragile nth-child positional selectors
  • Fix: DateRangePicker stories — removed invalid argTypes (showPrint/onPrint/showExport/onExport) and invalid label keys (thisYear/lastYear)
  • Fix: Removed custom data-slot from Button component instances (EmployerServiceModal, InviteUserModal) to preserve Button's internal data-slot="button" needed for condensed styling
  • Fix: Input aria-describedby no longer references helper text ID when error is shown (matches Select/Textarea pattern)
  • Fix: Replaced missing icon-csv.svg image reference with Font Awesome fa-file-csv icon in HRISProviderSelector

- Add data-slot attributes: input-wrapper, input-label, input, input-error, input-helper
- Condensed CSS: reduced padding (0.025rem), heights (sm:1.5rem, md:1.75rem, lg:2rem)
- Smaller label (0.75rem), error/helper text (0.6875rem), tighter wrapper gap (0.25rem)
Copilot AI review requested due to automatic review settings March 24, 2026 22:27
@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages bot commented Mar 24, 2026

Deploying ui with  Cloudflare Pages  Cloudflare Pages

Latest commit: 40b21a0
Status: ✅  Deploy successful!
Preview URL: https://10372951.ui-6d0.pages.dev
Branch Preview URL: https://feature-condensed-view-form.ui-6d0.pages.dev

View logs

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 condensed-density styling support for the Input component by introducing stable data-slot hooks and corresponding body.condensed CSS overrides in the shared stylesheet.

Changes:

  • Add data-slot attributes to Input sub-elements (input-wrapper, input-label, input, input-error, input-helper) to support global density styling.
  • Add condensed-mode CSS rules in base.css to reduce wrapper spacing, input height/padding, and label/helper/error typography.

Reviewed changes

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

File Description
src/styles/base.css Adds body.condensed rules targeting new Input data-slot hooks for tighter condensed styling.
src/components/Input/Input.tsx Adds data-slot attributes to Input markup to enable density overrides from global CSS.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

- Add data-slot attributes: textarea-wrapper, textarea-label, textarea, textarea-footer, textarea-error, textarea-helper, textarea-count
- Condensed CSS: reduced padding (0.025rem), min-heights (sm:2.25rem, md:3rem, lg:3.75rem)
- Smaller label (0.75rem), error/helper (0.6875rem), count (0.625rem), tighter gaps
Copilot AI review requested due to automatic review settings March 24, 2026 22:39
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 4 out of 4 changed files in this pull request and generated 4 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

- Add data-slot attributes: select-wrapper, select-label, select-trigger, select-dropdown, select-search, select-listbox, select-option, select-group-label, select-error, select-helper
- Condensed CSS: trigger heights (sm:1.5rem, md:1.75rem, lg:2rem), compact options, smaller search input
- Consistent label/error/helper sizing with Input and Textarea
@garrity-miepub garrity-miepub changed the title feat(Input): add condensed density support with data-slot attributes feat: add condensed view for form & input components Mar 24, 2026
- Fix sub-pixel padding: 0.025rem → 0.0625rem (1px) for Input, Textarea, Select search
- Add per-size font scaling for Input and Textarea (preserves size prop typography)
  - .text-sm → 0.75rem, .text-base → 0.875rem, .text-lg → 1rem
Copilot AI review requested due to automatic review settings March 24, 2026 22: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 5 out of 5 changed files in this pull request and generated 4 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

- Replace single font-size override with per-size scaling (.text-sm/.text-base/.text-lg)
- Fix comment: 'reduced height & padding' → 'reduced height & border-radius'
Condensed mode now overrides ALL size variants to one uniform condensed size:
- Input: 1.75rem height, 0.8125rem font (regardless of sm/md/lg)
- Textarea: 2.25rem min-height, 0.8125rem font (regardless of sm/md/lg)
- Select trigger: 1.75rem height, 0.8125rem font (regardless of sm/md/lg)

This replaces per-size scaling with a single condensed target, ensuring
maximum density and visual consistency. Size prop still works in default mode.
Copilot AI review requested due to automatic review settings March 24, 2026 23:13
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 5 out of 5 changed files in this pull request and generated 2 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

- Add data-slot='button' attribute
- Single condensed size: 1.75rem height, 0.5rem padding, 0.8125rem font, 0.375rem radius
- Icon-only variant: 1.75rem square
- Add data-slot attributes to Checkbox and CheckboxGroup components
- Checkbox: checkbox-wrapper, checkbox-row, checkbox-indicator, checkbox,
  checkbox-label, checkbox-description, checkbox-error
- CheckboxGroup: checkbox-group, checkbox-group-legend,
  checkbox-group-description, checkbox-group-items, checkbox-group-error
- Add condensed CSS with single-size philosophy (0.875rem square checkbox)
- Tighten gaps, reduce label/description/error font sizes
Copilot AI review requested due to automatic review settings March 24, 2026 23:38
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 7 out of 7 changed files in this pull request and generated 2 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Adjust estimatedDropdownHeight to use 28px per option in condensed mode
(vs 40px default) to prevent unnecessary upward-opening when there is
sufficient space below.
- Add data-slot attributes to Radio and RadioGroup components
- Radio: radio-wrapper, radio-indicator, radio, radio-dot, radio-label,
  radio-description
- RadioGroup: radio-group, radio-group-legend, radio-group-description,
  radio-group-items, radio-group-error
- Add condensed CSS with single-size philosophy (0.875rem circle, 0.375rem dot)
- Tighten gaps, reduce label/description/error font sizes
Copilot AI review requested due to automatic review settings March 24, 2026 23:56
Copilot AI review requested due to automatic review settings March 27, 2026 01:12
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 32 out of 32 changed files in this pull request and generated 2 comments.

Comments suppressed due to low confidence (1)

src/components/Button/Button.tsx:127

  • The button’s condensed styling relies on data-slot="button" and data-size, but {...props} is spread after these attributes. A consumer passing data-slot/data-size (even unintentionally) will override the internal hooks and break condensed selectors. Consider preventing override by spreading props before these attributes and/or omitting data-slot/data-size from ButtonProps.
      <button
        data-slot="button"
        data-size={size}
        className={cn(buttonVariants({ variant, size, fullWidth }), className)}
        ref={ref}
        disabled={disabled || isLoading}
        aria-busy={isLoading}
        {...props}
      >

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

- Button: resolve size to 'md' default so data-size is always present
- Select: only include helperId in describedByIds when helper is rendered
- Textarea: same describedByIds fix as Select
Add data-slot attributes to DateButton, TimeButton, RadioOption,
DatePicker, TimePicker, and SchedulePicker components.

Add body.condensed CSS overrides in base.css:
- Date buttons: compact padding, 0.375rem radius, smaller fonts
- Time buttons: 1.75rem height matching Input/Button condensed
- Labels: 0.6875rem font, 0.25rem bottom margin
- RadioOption: 0.875rem indicator, 0.375rem dot (matches Radio)
- All gaps reduced to 0.25rem
Copilot AI review requested due to automatic review settings March 27, 2026 01:38
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 33 out of 33 changed files in this pull request and generated 2 comments.

Comments suppressed due to low confidence (1)

src/components/Button/Button.tsx:131

  • data-slot/data-size are set on the <button>, but {...props} is spread afterwards, so consumers can override those attributes and unintentionally disable condensed styling that targets [data-slot='button'] / [data-size='icon']. Consider spreading {...props} before setting these internal attributes (or otherwise preventing overrides).
      <button
        data-slot="button"
        data-size={resolvedSize}
        className={cn(
          buttonVariants({ variant, size: resolvedSize, fullWidth }),
          className
        )}
        ref={ref}
        disabled={disabled || isLoading}
        aria-busy={isLoading}
        {...props}
      >

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Add data-slot attributes to ServicePicker, ServiceGroupItem, and
ServiceItem components.

Add body.condensed CSS overrides in base.css:
- Card: 0.375rem radius, tighter header/body padding
- Heading: 0.875rem font
- Group buttons: compact padding, 0.75rem font
- Service items: 0.25rem padding, 0.375rem gap
- Checkbox/radio: 0.875rem indicators (matches Checkbox/Radio)
- Item text: 0.75rem name/price, 0.625rem code/description
- Lists: minimal vertical spacing
sm\\:w-32 → sm\:w-32 (single backslash for Tailwind class escaping)
Copilot AI review requested due to automatic review settings March 27, 2026 01:53
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 34 out of 34 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (1)

src/components/Button/Button.tsx:130

  • {...props} is spread after internal attributes on this button, so a consumer-provided data-slot / data-size can override the values needed for condensed selectors. Consider moving the props spread earlier or explicitly omitting data-slot / data-size from forwarded props so these internal hooks can’t be replaced accidentally.
        )}
        ref={ref}
        disabled={disabled || isLoading}
        aria-busy={isLoading}
        {...props}

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Add data-slot attributes to Slider sub-elements: slider, slider-label-row,
slider-label, slider-value, slider-description, slider-track-wrapper,
slider-track, slider-range, slider-thumb, slider-minmax.

Add body.condensed CSS overrides in base.css:
- Label/value: 0.6875rem font
- Description: 0.625rem font
- Track: 0.25rem height (collapses to sm)
- Thumb: 0.875rem (collapses to sm)
- Min/max labels: 0.625rem font
- Tighter margins throughout
Helper text element is not rendered when error is present, so
aria-describedby was pointing at a non-existent ID. Align with
Select/Textarea by adding the !error guard.
Copilot AI review requested due to automatic review settings March 27, 2026 02:01
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 35 out of 35 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (1)

src/components/Button/Button.tsx:131

  • Because {...props} is spread after data-slot/data-size, a consumer can override those attributes (e.g. passing data-slot), which can silently break condensed-mode selectors that rely on [data-slot='button'] and [data-size='icon']. Consider moving the {...props} spread before these fixed attributes, or explicitly omitting/guarding data-slot/data-size from props so the styling hooks stay stable.
      <button
        data-slot="button"
        data-size={resolvedSize}
        className={cn(
          buttonVariants({ variant, size: resolvedSize, fullWidth }),
          className
        )}
        ref={ref}
        disabled={disabled || isLoading}
        aria-busy={isLoading}
        {...props}
      >

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Move all body.condensed rules (~3,123 lines) from base.css into
src/styles/condensed-view.css for maintainability. base.css imports
it via @import at the top so existing consumers are unaffected.
Copilot AI review requested due to automatic review settings March 27, 2026 02:29
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 35 out of 36 changed files in this pull request and generated 4 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copilot AI review requested due to automatic review settings March 27, 2026 18:17
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 35 out of 36 changed files in this pull request and generated 2 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@garrity-miepub garrity-miepub merged commit b273f5b into main Mar 27, 2026
14 checks passed
@garrity-miepub garrity-miepub deleted the feature/condensed-view-form-and-input-components branch March 27, 2026 18:28
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.

2 participants