asma-ui-core 3.44.0 → 3.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/asma-ui-core.css +1 -1
- package/dist/components/custom/module/header-layout/ToolbarActionGroup.js +2 -2
- package/dist/components/custom/module/module-title/StyledModuleTitle.module.js +1 -1
- package/dist/components/custom/widget/widget/StyledWidget.module.js +8 -8
- package/dist/components/custom/widget/widget-title/StyledWidgetTitle.module.js +1 -1
- package/dist/components/data-display/ai-disclosure/StyledAIDisclosure.js +7 -5
- package/dist/components/data-display/badge/StyledBadge.js +53 -23
- package/dist/components/data-display/chip/StyledChip.js +62 -59
- package/dist/components/data-display/chip/chipPadding.js +44 -0
- package/dist/components/data-display/form-label/components/StyledFormLabel.js +18 -10
- package/dist/components/data-display/form-label/styles/StyledFormLabel.module.js +4 -4
- package/dist/components/data-display/interactive-chip/StyledInteractiveChip.js +35 -39
- package/dist/components/data-display/interactive-chip/StyledInteractiveChip.module.js +4 -0
- package/dist/components/data-display/tooltip/StyledTooltip.js +51 -33
- package/dist/components/data-display/typography/StyledTypography.js +62 -4
- package/dist/components/feedback/dialog/StyledDialog.js +102 -39
- package/dist/components/feedback/dialog/StyledDialog.module.js +2 -9
- package/dist/components/feedback/dialog/StyledDialogActions.js +16 -16
- package/dist/components/feedback/dialog/StyledDialogContent.js +18 -14
- package/dist/components/feedback/dialog/StyledDialogTitle.js +18 -13
- package/dist/components/feedback/empty-page/StyledEmptyPage.js +4 -4
- package/dist/components/feedback/filtered-empty-state/StyledFilteredEmptyState.js +7 -7
- package/dist/components/feedback/minimizable-dialog/MinimizableDialog.js +123 -114
- package/dist/components/feedback/minimizable-dialog/components/CloseBtn.js +6 -5
- package/dist/components/feedback/minimizable-dialog/components/FullscreenBtn.js +13 -12
- package/dist/components/feedback/minimizable-dialog/components/MinimizeBtn.js +15 -13
- package/dist/components/feedback/minimizable-dialog/v2/MinimizableDialogV2.js +67 -61
- package/dist/components/feedback/snack-bar/StyledAlert.js +95 -14
- package/dist/components/feedback/snack-bar/StyledSnackbar.js +34 -8
- package/dist/components/feedback/snack-bar/components/StyledDefaultSnackbar.js +32 -33
- package/dist/components/feedback/snack-bar/components/StyledDefaultSnackbar.module.js +16 -16
- package/dist/components/icons/check-icon/CheckIcon.js +8 -7
- package/dist/components/inputs/button/StyledButton.js +22 -18
- package/dist/components/inputs/button/StyledButton.module.js +5 -5
- package/dist/components/inputs/checkbox/base-ui/StyledCheckbox.js +61 -55
- package/dist/components/inputs/checkbox/base-ui/StyledCheckbox.module.js +12 -11
- package/dist/components/inputs/dynamic-select/components/DynamicInteractiveChipGroup.js +54 -50
- package/dist/components/inputs/dynamic-select/components/DynamicSelectAutocomplete.js +107 -99
- package/dist/components/inputs/field-styles.js +8 -0
- package/dist/components/inputs/input-field/StyledInputField.js +188 -83
- package/dist/components/inputs/input-field/StyledInputField.module.js +10 -0
- package/dist/components/inputs/label/StyledLabel.js +19 -11
- package/dist/components/inputs/label/StyledLabel.module.js +1 -1
- package/dist/components/inputs/radio-button/base-ui/RadioGroupContext.js +6 -0
- package/dist/components/inputs/radio-button/base-ui/StyledRadio.js +43 -28
- package/dist/components/inputs/radio-button/base-ui/StyledRadio.module.js +7 -6
- package/dist/components/inputs/radio-button/base-ui/StyledRadioGroup.js +37 -24
- package/dist/components/inputs/search-field/StyledSearchField.js +49 -43
- package/dist/components/inputs/select/StyledSelect.js +170 -45
- package/dist/components/inputs/select/StyledSelectItem.js +19 -23
- package/dist/components/inputs/select-autocomplete/StyledSelectAutocomplete.js +228 -150
- package/dist/components/inputs/slider/StyledSlider.js +100 -52
- package/dist/components/inputs/slider/StyledSlider.module.js +10 -0
- package/dist/components/inputs/switch/base-ui/StyledSwitch.js +45 -38
- package/dist/components/inputs/switch/base-ui/StyledSwitch.module.js +4 -4
- package/dist/components/inputs/textarea/StyledTextarea.js +44 -43
- package/dist/components/inputs/textarea/StyledTextarea.module.js +1 -1
- package/dist/components/miscellaneous/FormControlContext.js +6 -0
- package/dist/components/miscellaneous/StyledFormControl.js +42 -21
- package/dist/components/miscellaneous/StyledFormControlLabel.js +29 -15
- package/dist/components/miscellaneous/StyledFormGroup.js +16 -4
- package/dist/components/miscellaneous/StyledFormHelperText.js +12 -4
- package/dist/components/miscellaneous/StyledInputLabel.js +20 -4
- package/dist/components/mui-compat/Avatar.js +34 -0
- package/dist/components/mui-compat/ClickAwayListener.js +42 -0
- package/dist/components/mui-compat/Container.js +24 -0
- package/dist/components/mui-compat/Fade.js +29 -0
- package/dist/components/mui-compat/Fade.module.js +9 -0
- package/dist/components/mui-compat/FormLabel.js +22 -0
- package/dist/components/mui-compat/Paper.js +44 -0
- package/dist/components/mui-compat/Popper.js +35 -0
- package/dist/components/mui-compat/Skeleton.js +27 -0
- package/dist/components/mui-compat/Stack.js +24 -0
- package/dist/components/navigation/drawer/StyledDrawer.js +45 -4
- package/dist/components/navigation/link/StyledLink.module.js +5 -5
- package/dist/components/navigation/listbox/Listbox.js +7 -7
- package/dist/components/navigation/menu/StyledMenu.js +28 -11
- package/dist/components/navigation/menu/StyledMenuItem.js +21 -19
- package/dist/components/navigation/menu/StyledMenuList.js +34 -4
- package/dist/components/navigation/tabs/StyledTab.js +28 -13
- package/dist/components/navigation/tabs/StyledTabs.js +115 -66
- package/dist/components/navigation/tabs/TabsContext.js +6 -0
- package/dist/components/utils/accordion/base-ui/AccordionContext.js +10 -0
- package/dist/components/utils/accordion/base-ui/StyledAccordion.js +28 -21
- package/dist/components/utils/accordion/base-ui/StyledAccordion.module.js +7 -7
- package/dist/components/utils/accordion/base-ui/StyledAccordionDetails.js +28 -14
- package/dist/components/utils/accordion/base-ui/StyledAccordionSummary.js +34 -27
- package/dist/components/utils/copy-wrapper/CopyButton.js +8 -7
- package/dist/components/utils/copy-wrapper/CopyWrapper.js +23 -20
- package/dist/components/utils/filter-menu/StyledFilterButton.js +14 -13
- package/dist/components/utils/filter-menu/StyledFilterMenu.js +16 -15
- package/dist/components/utils/popover/StyledPopover.js +51 -15
- package/dist/components/utils/virtual-list/VirtualList.js +46 -0
- package/dist/datetime/components/date-picker/StyledDatePicker.js +17 -17
- package/dist/datetime/components/date-picker/components/BaseDatePickerInput.js +98 -99
- package/dist/datetime/components/date-picker/components/DatePickerButton.js +11 -9
- package/dist/datetime/components/date-picker/components/StyledCalendarPicker.js +11 -11
- package/dist/datetime/components/date-picker/components/StyledCalendarPicker.module.js +20 -20
- package/dist/datetime/components/date-picker/components/StyledCalendarPickerCaption.js +8 -7
- package/dist/datetime/components/date-picker/components/StyledCalendarPickerFooter.js +13 -14
- package/dist/datetime/components/date-picker/components/StyledCalendarPickerSelectMonth.js +17 -24
- package/dist/datetime/components/date-picker/components/StyledCalendarPickerSelectYear.js +7 -8
- package/dist/datetime/components/date-picker/components/StyledDayPicker.js +4 -5
- package/dist/datetime/components/date-picker/helpers.js +7 -7
- package/dist/datetime/components/date-picker/hooks/useDatePickerMask.js +3 -7
- package/dist/datetime/components/time-picker/StyledTimePicker.js +25 -25
- package/dist/datetime/components/time-picker/StyledTimePicker.module.js +6 -6
- package/dist/datetime/components/time-picker/TimePickerInput.js +56 -50
- package/dist/datetime/components/time-picker/TimePickerPopper.js +22 -19
- package/dist/datetime/components/time-picker/components/TimePickerColumn.js +12 -12
- package/dist/datetime/components/time-picker/helpers/getTimeFromValue.js +3 -3
- package/dist/datetime/helpers/cn.js +4 -5
- package/dist/datetime/hooks/useWindowWidthSize.hook.js +1 -1
- package/dist/helpers/arrays.js +4 -0
- package/dist/helpers/classOverride.js +12 -0
- package/dist/helpers/cn.js +4 -5
- package/dist/helpers/inputMask.js +58 -0
- package/dist/helpers/sx.js +46 -0
- package/dist/hooks/useFocusTrap.hook.js +34 -0
- package/dist/hooks/useTopLayer.hook.js +25 -0
- package/dist/index.js +185 -175
- package/dist/src/api-surface.test.d.ts +1 -0
- package/dist/src/components/custom/module/header-layout/DynamicToolbar.d.ts +10 -0
- package/dist/src/components/custom/module/module-title/StyledModuleTitle.d.ts +4 -0
- package/dist/src/components/custom/widget/widget/StyledWidget.d.ts +8 -0
- package/dist/src/components/custom/widget/widget-header/StyledWidgetHeader.d.ts +4 -0
- package/dist/src/components/custom/widget/widget-title/StyledWidgetTitle.d.ts +4 -0
- package/dist/src/components/data-display/ai-disclosure/StyledAIDisclosure.d.ts +7 -0
- package/dist/src/components/data-display/badge/StyledBadge.d.ts +40 -2
- package/dist/src/components/data-display/chip/StyledChip.d.ts +74 -5
- package/dist/src/components/data-display/chip/chipPadding.d.ts +3 -0
- package/dist/src/components/data-display/form-label/types.d.ts +11 -0
- package/dist/src/components/data-display/interactive-chip/StyledInteractiveChip.d.ts +22 -4
- package/dist/src/components/data-display/tooltip/StyledTooltip.d.ts +43 -1
- package/dist/src/components/data-display/typography/StyledTypography.d.ts +32 -1
- package/dist/src/components/feedback/dialog/StyledDialog.d.ts +60 -4
- package/dist/src/components/feedback/dialog/StyledDialogActions.d.ts +12 -2
- package/dist/src/components/feedback/dialog/StyledDialogContent.d.ts +12 -2
- package/dist/src/components/feedback/dialog/StyledDialogTitle.d.ts +10 -2
- package/dist/src/components/feedback/empty-page/StyledEmptyPage.d.ts +6 -0
- package/dist/src/components/feedback/filtered-empty-state/StyledFilteredEmptyState.d.ts +7 -0
- package/dist/src/components/feedback/loading/StyledLoading.d.ts +9 -0
- package/dist/src/components/feedback/minimizable-dialog/v2/types.d.ts +13 -0
- package/dist/src/components/feedback/minimizable-dialog/v2/useControlledProps.d.ts +4 -2
- package/dist/src/components/feedback/minimizable-dialog/v2/useTranslations.d.ts +17 -12
- package/dist/src/components/feedback/snack-bar/SnackbarProvider.d.ts +1 -1
- package/dist/src/components/feedback/snack-bar/StyledAlert.d.ts +41 -2
- package/dist/src/components/feedback/snack-bar/StyledAlertSnackbar.d.ts +1 -1
- package/dist/src/components/feedback/snack-bar/StyledSnackbar.d.ts +25 -2
- package/dist/src/components/feedback/snack-bar/components/StyledDefaultSnackbar.d.ts +10 -1
- package/dist/src/components/feedback/snack-bar/components/StyledInfoSnackbar.d.ts +1 -1
- package/dist/src/components/feedback/snack-bar/components/types.d.ts +1 -1
- package/dist/src/components/inputs/button/StyledButton.d.ts +15 -1
- package/dist/src/components/inputs/checkbox/base-ui/StyledCheckbox.d.ts +33 -4
- package/dist/src/components/inputs/dynamic-select/StyledDynamicSelect.d.ts +16 -0
- package/dist/src/components/inputs/dynamic-select/types.d.ts +25 -14
- package/dist/src/components/inputs/field-styles.d.ts +27 -0
- package/dist/src/components/inputs/input-field/StyledInputField.d.ts +85 -10
- package/dist/src/components/inputs/input-field/index.d.ts +1 -1
- package/dist/src/components/inputs/label/StyledLabel.d.ts +13 -0
- package/dist/src/components/inputs/radio-button/base-ui/RadioGroupContext.d.ts +10 -0
- package/dist/src/components/inputs/radio-button/base-ui/StyledRadio.d.ts +60 -5
- package/dist/src/components/inputs/radio-button/base-ui/StyledRadioGroup.d.ts +30 -7
- package/dist/src/components/inputs/search-field/StyledSearchField.d.ts +9 -1
- package/dist/src/components/inputs/select/StyledSelect.d.ts +70 -16
- package/dist/src/components/inputs/select/StyledSelectItem.d.ts +14 -2
- package/dist/src/components/inputs/select/index.d.ts +0 -1
- package/dist/src/components/inputs/select-autocomplete/StyledSelectAutocomplete.d.ts +120 -17
- package/dist/src/components/inputs/slider/StyledSlider.d.ts +66 -3
- package/dist/src/components/inputs/switch/base-ui/StyledSwitch.d.ts +44 -4
- package/dist/src/components/inputs/textarea/StyledTextarea.d.ts +19 -0
- package/dist/src/components/miscellaneous/FormControlContext.d.ts +14 -0
- package/dist/src/components/miscellaneous/StyledFormControl.d.ts +27 -2
- package/dist/src/components/miscellaneous/StyledFormControlLabel.d.ts +21 -2
- package/dist/src/components/miscellaneous/StyledFormGroup.d.ts +11 -2
- package/dist/src/components/miscellaneous/StyledFormHelperText.d.ts +12 -2
- package/dist/src/components/miscellaneous/StyledInputLabel.d.ts +20 -2
- package/dist/src/components/mui-compat/Avatar.d.ts +6 -0
- package/dist/src/components/mui-compat/ClickAwayListener.d.ts +19 -0
- package/dist/src/components/mui-compat/Container.d.ts +6 -0
- package/dist/src/components/mui-compat/Fade.d.ts +21 -0
- package/dist/src/components/mui-compat/FormLabel.d.ts +6 -0
- package/dist/src/components/mui-compat/Paper.d.ts +6 -0
- package/dist/src/components/mui-compat/Popper.d.ts +29 -0
- package/dist/src/components/mui-compat/Skeleton.d.ts +7 -0
- package/dist/src/components/mui-compat/Stack.d.ts +7 -0
- package/dist/src/components/mui-compat/index.d.ts +9 -0
- package/dist/src/components/mui-compat/types.d.ts +46 -0
- package/dist/src/components/navigation/drawer/StyledDrawer.d.ts +33 -2
- package/dist/src/components/navigation/link/StyledLink.d.ts +13 -0
- package/dist/src/components/navigation/menu/StyledMenu.d.ts +33 -2
- package/dist/src/components/navigation/menu/StyledMenuItem.d.ts +35 -2
- package/dist/src/components/navigation/menu/StyledMenuList.d.ts +16 -2
- package/dist/src/components/navigation/menu/index.d.ts +0 -1
- package/dist/src/components/navigation/tabs/StyledTab.d.ts +27 -3
- package/dist/src/components/navigation/tabs/StyledTabs.d.ts +22 -7
- package/dist/src/components/navigation/tabs/TabsContext.d.ts +11 -0
- package/dist/src/components/utils/accordion/base-ui/AccordionContext.d.ts +10 -0
- package/dist/src/components/utils/accordion/base-ui/StyledAccordion.d.ts +9 -3
- package/dist/src/components/utils/accordion/base-ui/StyledAccordionDetails.d.ts +5 -0
- package/dist/src/components/utils/accordion/base-ui/StyledAccordionSummary.d.ts +16 -4
- package/dist/src/components/utils/copy-wrapper/CopyWrapper.d.ts +6 -1
- package/dist/src/components/utils/filter-menu/StyledFilterButton.d.ts +4 -0
- package/dist/src/components/utils/filter-menu/StyledFilterMenu.d.ts +8 -2
- package/dist/src/components/utils/popover/StyledPopover.d.ts +39 -2
- package/dist/src/components/utils/virtual-list/VirtualList.d.ts +32 -0
- package/dist/src/components/utils/virtual-list/index.d.ts +1 -0
- package/dist/src/datetime/components/date-picker/StyledDatePicker.d.ts +11 -0
- package/dist/src/datetime/components/date-picker/components/DatePickerButton.d.ts +2 -0
- package/dist/src/datetime/components/date-picker/components/StyledCalendarPicker.d.ts +1 -1
- package/dist/src/datetime/components/date-picker/components/StyledDayPicker.d.ts +1 -1
- package/dist/src/datetime/components/date-picker/hooks/useDatePickerMask.d.ts +1 -2
- package/dist/src/datetime/components/date-picker/hooks/useDatePickerValidation.d.ts +7 -5
- package/dist/src/datetime/components/time-picker/StyledTimePicker.d.ts +10 -0
- package/dist/src/datetime/components/time-picker/TimePickerInput.d.ts +1 -1
- package/dist/src/datetime/components/time-picker/TimePickerPopper.d.ts +1 -1
- package/dist/src/datetime/components/time-picker/types.d.ts +1 -2
- package/dist/src/datetime/hooks/useToggleMenuVisibility.hook.d.ts +6 -4
- package/dist/src/datetime/shared-components/StyledFormControl.d.ts +1 -2
- package/dist/src/datetime/shared-components/StyledInputField.d.ts +1 -12
- package/dist/src/datetime/shared-components/StyledSelect.d.ts +1 -16
- package/dist/src/datetime/shared-components/StyledSelectItem.d.ts +1 -2
- package/dist/src/datetime/shared-components/StyledTooltip.d.ts +1 -2
- package/dist/src/helpers/applyImportantPadding.d.ts +8 -0
- package/dist/src/helpers/arrays.d.ts +2 -0
- package/dist/src/helpers/arrays.test.d.ts +1 -0
- package/dist/src/helpers/classOverride.d.ts +21 -0
- package/dist/src/helpers/classOverride.test.d.ts +1 -0
- package/dist/src/helpers/inputMask.d.ts +40 -0
- package/dist/src/helpers/inputMask.test.d.ts +1 -0
- package/dist/src/helpers/sx.d.ts +2 -0
- package/dist/src/helpers/sx.test.d.ts +1 -0
- package/dist/src/hooks/useFocusTrap.hook.d.ts +10 -0
- package/dist/src/hooks/useTopLayer.hook.d.ts +49 -0
- package/dist/src/index.d.ts +2 -1
- package/dist/src/table/components/columns/helpers/useElementHeightPx.d.ts +6 -3
- package/dist/src/table/components/columns/helpers/useProxyHorizontalScrollSync.d.ts +9 -6
- package/dist/src/table/hooks/useToggleMenuVisibility.hook.d.ts +6 -4
- package/dist/src/table/hooks/useTranslations.d.ts +15 -8
- package/dist/src/table/shared-components/StyledCheckbox.d.ts +7 -4
- package/dist/src/table/shared-components/StyledMenuItem.d.ts +18 -2
- package/dist/src/table/shared-components/menu-item/index.d.ts +13 -2
- package/dist/src/table/shared-components/tooltip/index.d.ts +5 -1
- package/dist/src/table/types.d.ts +1 -1
- package/dist/table/components/Fetching.js +4 -4
- package/dist/table/components/StyledTable.module.js +48 -48
- package/dist/table/components/TableRow.js +7 -7
- package/dist/table/components/TableSkeleton.js +6 -6
- package/dist/table/components/columns/action-column/actionColumn.js +14 -11
- package/dist/table/components/columns/action-column/components/HeaderActionMenu.js +52 -49
- package/dist/table/components/columns/action-column/components/RowActionMenu.js +40 -36
- package/dist/table/components/columns/expandColumn.js +12 -9
- package/dist/table/components/table-footer/TablePagination.js +28 -25
- package/dist/table/components/table-footer/TableRowCountSelect.js +31 -28
- package/dist/table/components/table-header/TableHeaderCell.js +54 -45
- package/dist/table/custom-features/focus-rows/FocusRowsFeature.js +29 -25
- package/dist/table/helpers/cn.js +4 -5
- package/dist/table/hooks/useColumnVirtualizer.js +1 -1
- package/dist/table/hooks/usePersistedPageSize.js +6 -6
- package/dist/table/hooks/useTranslations.js +6 -4
- package/dist/table/hooks/useWindowWidthSize.hook.js +1 -1
- package/dist/table/shared-components/StyledCheckbox.js +54 -55
- package/dist/table/shared-components/StyledCheckbox.module.js +9 -9
- package/dist/table/shared-components/StyledMenuItem.js +14 -17
- package/dist/table/shared-components/button/StyledButton.module.js +8 -8
- package/dist/table/shared-components/menu-item/index.js +15 -16
- package/dist/table/shared-components/tooltip/index.js +4 -23
- package/package.json +9 -18
- package/src/styles/components-colors/inputVariables.css +59 -57
- package/src/styles/index.css +38 -0
- package/dist/components/feedback/dialog/StyledDialogActions.module.js +0 -8
- package/dist/components/feedback/dialog/StyledDialogContent.module.js +0 -4
- package/dist/components/feedback/dialog/StyledDialogTitle.module.js +0 -4
- package/dist/components/icons/arrow-expand/ArrowExpand.js +0 -18
- package/dist/components/icons/arrow-expand/index.js +0 -1
- package/dist/components/icons/arrow-shrink/ArrowShrink.js +0 -18
- package/dist/components/icons/arrow-shrink/index.js +0 -1
- package/dist/components/inputs/checkbox/StyledCheckbox.js +0 -20
- package/dist/components/inputs/radio-button/StyledRadio.js +0 -17
- package/dist/datetime/components/date-picker/components/HelperTextWithTooltip.js +0 -39
- package/dist/datetime/shared-components/ExpandIcon.js +0 -18
- package/dist/datetime/shared-components/StyledFormControl.js +0 -23
- package/dist/datetime/shared-components/StyledInputField.js +0 -47
- package/dist/datetime/shared-components/StyledSelect.js +0 -47
- package/dist/datetime/shared-components/StyledSelectItem.js +0 -13
- package/dist/datetime/shared-components/StyledTooltip.js +0 -32
- package/dist/src/components/icons/arrow-expand/ArrowExpand.d.ts +0 -2
- package/dist/src/components/icons/arrow-expand/index.d.ts +0 -1
- package/dist/src/components/icons/arrow-shrink/ArrowShrink.d.ts +0 -2
- package/dist/src/components/icons/arrow-shrink/index.d.ts +0 -1
- package/dist/src/components/inputs/checkbox/StyledCheckbox.d.ts +0 -4
- package/dist/src/components/inputs/radio-button/StyledRadio.d.ts +0 -4
- package/dist/src/components/inputs/radio-button/StyledRadioGroup.d.ts +0 -4
- package/dist/src/components/inputs/switch/StyledSwitch.d.ts +0 -5
- package/dist/src/components/utils/accordion/StyledAccordion.d.ts +0 -2
- package/dist/src/components/utils/accordion/StyledAccordionDetails.d.ts +0 -2
- package/dist/src/components/utils/accordion/StyledAccordionSummary.d.ts +0 -8
- package/dist/src/datetime/components/date-picker/components/HelperTextWithTooltip.d.ts +0 -5
|
@@ -1,17 +1,46 @@
|
|
|
1
|
-
import { default as React, SVGProps } from 'react';
|
|
2
|
-
|
|
1
|
+
import { default as React, ChangeEvent, SVGProps } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* @figmaNode wXrXt5uKNNzV2DnQCgyYZH#15385-19713
|
|
4
|
+
* Figma "Checkbox" (box 20px, 40px touch). Figma **Type** (Unchecked/Indeterminate/Checked) ←
|
|
5
|
+
* `checked`/`indeterminate`; Figma **State** (Enabled/Hovered/Focused/Disabled/Read-only) ← native
|
|
6
|
+
* hover/focus + `disabled`/`readOnly`/`error`. Checked/indeterminate box = `gama-500` #168181,
|
|
7
|
+
* unchecked border = `delta-500`; Error = box border `error-500` #e10700 (node 41325-207511/207527).
|
|
8
|
+
*/
|
|
3
9
|
type StyledCheckboxProps = {
|
|
10
|
+
/** @figmaProp none — test hook */
|
|
4
11
|
dataTest: string;
|
|
12
|
+
/** @figmaProp none — app size (Figma box is 20px) */
|
|
5
13
|
size?: 'small' | 'medium';
|
|
14
|
+
/** @figmaProp Type = true→"Checked" | false→"Unchecked" */
|
|
6
15
|
checked?: boolean;
|
|
16
|
+
/** @figmaProp Type = true→"Indeterminate" */
|
|
7
17
|
indeterminate?: boolean;
|
|
18
|
+
/** @figmaProp State = true→"Error" (box border → error-500) */
|
|
19
|
+
error?: boolean;
|
|
8
20
|
disableRipple?: boolean;
|
|
9
21
|
hideWrapper?: boolean;
|
|
10
22
|
className?: string;
|
|
11
23
|
checkboxClassName?: string;
|
|
12
|
-
onChange?: (event:
|
|
13
|
-
|
|
24
|
+
onChange?: (event: ChangeEvent<HTMLInputElement>, checked: boolean) => void;
|
|
25
|
+
/**
|
|
26
|
+
* Renders the identical visual box (same classes/data-attrs — no visual change) with NO real
|
|
27
|
+
* `<input>` at all, for use as a pure state indicator inside a widget that already owns
|
|
28
|
+
* selection itself (e.g. a multi-select `role="option"` row, whose own `aria-selected` is the
|
|
29
|
+
* real accessible state). A real `<input type="checkbox">` there is a genuine axe
|
|
30
|
+
* `nested-interactive` violation (a focusable, semantically-interactive element nested inside a
|
|
31
|
+
* non-focusable widget descendant) — `aria-hidden`/`tabIndex={-1}` do NOT satisfy that check, only
|
|
32
|
+
* removing the input does. Do not use this for a checkbox that is itself the control (nothing else
|
|
33
|
+
* would let a keyboard/AT user operate it).
|
|
34
|
+
*/
|
|
35
|
+
decorative?: boolean;
|
|
36
|
+
} & Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'size' | 'checked' | 'type'>;
|
|
14
37
|
export declare const IndeterminateIcon: (props: SVGProps<SVGSVGElement>) => JSX.Element;
|
|
15
38
|
export declare const CheckIcon: (props: SVGProps<SVGSVGElement>) => JSX.Element;
|
|
39
|
+
/**
|
|
40
|
+
* Native `<input type="checkbox">` checkbox (replaces `@base-ui/react`). A visually-hidden input
|
|
41
|
+
* carries state + a11y; the visual box, ripple, and indeterminate bar come from the SCSS module
|
|
42
|
+
* (kept: `@keyframes`/pseudo-elements aren't Tailwind-expressible — GUD-003), whose `data-*`
|
|
43
|
+
* selectors are driven from React here. Public props unchanged. TASK-201.
|
|
44
|
+
*/
|
|
16
45
|
export declare const StyledCheckbox: React.FC<StyledCheckboxProps>;
|
|
17
46
|
export {};
|
|
@@ -3,6 +3,22 @@ import { StyledDynamicSelectComponent } from './types';
|
|
|
3
3
|
* A smart, adaptive select input that automatically chooses the best UI representation
|
|
4
4
|
* based on the number of options provided.
|
|
5
5
|
*
|
|
6
|
+
* @figmaNode wXrXt5uKNNzV2DnQCgyYZH#31009-173666
|
|
7
|
+
* Figma **"Dynamic select"** has no single component — it is a *reference table* mapping the
|
|
8
|
+
* option count (columns: **≤5**, **>5 & ≤10**, **>10**) × selection mode (rows: **Single**,
|
|
9
|
+
* **Multiple**) to a representation, which this component's thresholds reproduce exactly:
|
|
10
|
+
* - **≤5 → Chips select** (`DynamicInteractiveChipGroup`): `StyledInteractiveChip` radio (single)
|
|
11
|
+
* or checkbox (multiple) chips; long labels stack vertically; "Clear selection" link + helper row.
|
|
12
|
+
* - **>5 & ≤10 → Select (dropdown)**: outlined `StyledInputField` trigger + `Menus` list, typing
|
|
13
|
+
* disabled (caret hidden, keyboard blocked).
|
|
14
|
+
* - **>10 → Autocomplete**: same trigger + scrollable `Menus` list with type-ahead search.
|
|
15
|
+
* Each representation is composed from components already aligned to their own Figma nodes (Chip
|
|
16
|
+
* `13248-31089`, Input field `15561-37391`, Menus `16073-19226`, Autocomplete `20474-27966`), so
|
|
17
|
+
* parity here is the mode routing + the shared title/clear/helper chrome, not a bespoke visual.
|
|
18
|
+
* Title = Body Base SemiBold 16 `text-icon/title-label` #363e4a (delta-800); dropdown option =
|
|
19
|
+
* Menus item (`text-icon/body` delta-700, hover delta-50, selected gama-50). Non-annotated props
|
|
20
|
+
* are behavioral / MUI `Autocomplete` API-parity.
|
|
21
|
+
*
|
|
6
22
|
* **Rendering strategy:**
|
|
7
23
|
* - `1–5 options` → renders as an interactive chip group (`DynamicInteractiveChipGroup`).
|
|
8
24
|
* Chips behave as radio buttons (single) or checkboxes (multiple).
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { StyledSelectAutocompleteProps } from '../select-autocomplete';
|
|
2
2
|
import { default as React } from 'react';
|
|
3
3
|
export type DynamicSelectOptionPrimitive = string | number | boolean;
|
|
4
4
|
export type DynamicSelectOptionObject = {
|
|
@@ -8,42 +8,46 @@ export type DynamicSelectOptionObject = {
|
|
|
8
8
|
} & object;
|
|
9
9
|
export type DynamicSelectOption = DynamicSelectOptionPrimitive | (DynamicSelectOptionObject & object);
|
|
10
10
|
interface SingleDynamicSelectProps<TOption extends DynamicSelectOption> {
|
|
11
|
+
/** @figmaProp Selection mode = "Single select" row (radio chips / single-value field). */
|
|
11
12
|
multiple?: false;
|
|
13
|
+
/** @figmaProp Filled — the single selected option (fills the field / checks the chip). */
|
|
12
14
|
value: TOption | null;
|
|
13
15
|
onChange: (value: TOption | null) => void;
|
|
14
16
|
}
|
|
15
17
|
interface MultipleDynamicSelectProps<TOption extends DynamicSelectOption> {
|
|
18
|
+
/** @figmaProp Selection mode = "Multiple select" row (checkbox chips / tag chips + `+`). */
|
|
16
19
|
multiple: true;
|
|
20
|
+
/** @figmaProp Filled — selected options (tag chips in the field / checked chips). */
|
|
17
21
|
value: TOption[] | null;
|
|
18
22
|
onChange: (value: TOption[] | null) => void;
|
|
19
23
|
}
|
|
20
24
|
interface DynamicSelectCommonProps<TOption extends DynamicSelectOption> {
|
|
21
|
-
/**
|
|
25
|
+
/** @figmaProp none — test hook */
|
|
22
26
|
dataTest: string;
|
|
23
|
-
/**
|
|
27
|
+
/** @figmaProp option-count column — 1–5 → Chips select, 6–10 → Select (dropdown), 11+ → Autocomplete. */
|
|
24
28
|
options: TOption[];
|
|
25
|
-
/**
|
|
29
|
+
/** @figmaProp State = true→"Read-only" (non-interactive; selected value(s) shown as plain chips). */
|
|
26
30
|
readOnly?: boolean;
|
|
27
31
|
/** Prevents the built-in clear button from appearing even when a value is set. Applies to autocomplete only. */
|
|
28
32
|
disableClearable?: boolean;
|
|
29
|
-
/**
|
|
33
|
+
/** @figmaProp Title (Body Base SemiBold 16, text-icon/title-label delta-800) above the control. */
|
|
30
34
|
title?: string;
|
|
31
|
-
/**
|
|
35
|
+
/** @figmaProp none — app size (chips/buttons). Defaults to `'medium'`. */
|
|
32
36
|
size?: 'small' | 'medium';
|
|
33
37
|
/** Placeholder text shown in the autocomplete input when no value is selected. */
|
|
34
38
|
placeholder?: string;
|
|
35
|
-
/**
|
|
39
|
+
/** @figmaProp State = true→"Disabled" */
|
|
36
40
|
disabled?: boolean;
|
|
37
|
-
/**
|
|
41
|
+
/** @figmaProp Empty-state text in the dropdown when no options match the search. */
|
|
38
42
|
noOptionsText?: string;
|
|
39
|
-
/**
|
|
43
|
+
/** @figmaProp State = true→"Error" (error border/icon + red helper row). */
|
|
40
44
|
error?: boolean;
|
|
41
45
|
/**
|
|
42
|
-
*
|
|
46
|
+
* @figmaProp Required — hides the chip-group "Clear selection" link (must keep a value).
|
|
43
47
|
* Use this when the field must always have a value.
|
|
44
48
|
*/
|
|
45
49
|
required?: boolean;
|
|
46
|
-
/**
|
|
50
|
+
/** @figmaProp Helper text (Helper 14/lh20; falls back to "Required" when `error` and no text). */
|
|
47
51
|
helperText?: React.ReactNode;
|
|
48
52
|
/** Completely removes the helper text block below the autocomplete */
|
|
49
53
|
disableHelperText?: boolean;
|
|
@@ -58,8 +62,8 @@ interface DynamicSelectCommonProps<TOption extends DynamicSelectOption> {
|
|
|
58
62
|
*/
|
|
59
63
|
labelKey?: TOption extends object ? keyof TOption : never;
|
|
60
64
|
/**
|
|
61
|
-
*
|
|
62
|
-
*
|
|
65
|
+
* @figmaProp Complex label — rich option content (the Figma "Complex … with long labels and
|
|
66
|
+
* helper text" rows: title + description, avatars, icons). Overrides the `labelKey` string.
|
|
63
67
|
*/
|
|
64
68
|
renderLabel?: (option: TOption) => React.ReactNode;
|
|
65
69
|
/**
|
|
@@ -69,8 +73,15 @@ interface DynamicSelectCommonProps<TOption extends DynamicSelectOption> {
|
|
|
69
73
|
getOptionTooltip?: (option: TOption) => React.ReactNode;
|
|
70
74
|
/** Node prepended inside the autocomplete text input (e.g. a search icon). */
|
|
71
75
|
startAdornment?: React.ReactNode;
|
|
76
|
+
/**
|
|
77
|
+
* Forwarded to the underlying autocomplete text input (autocomplete variant only), so
|
|
78
|
+
* validation/side-effects belong on the field itself instead of a wrapper element — e.g.
|
|
79
|
+
* clear an error `onFocus`, validate `onBlur`. Merged with the field's own focus handling.
|
|
80
|
+
*/
|
|
81
|
+
onFocus?: React.FocusEventHandler<HTMLInputElement>;
|
|
82
|
+
onBlur?: React.FocusEventHandler<HTMLInputElement>;
|
|
72
83
|
/** Escape hatch to pass any MUI `Autocomplete` prop directly. Applied on top of internal defaults in the autocomplete variant. */
|
|
73
|
-
autocompleteProps?: Partial<
|
|
84
|
+
autocompleteProps?: Partial<StyledSelectAutocompleteProps<TOption, boolean | undefined, boolean | undefined, boolean | undefined>>;
|
|
74
85
|
/**
|
|
75
86
|
* When `true`, renders loading skeletons (chip group) or disables the input (autocomplete)
|
|
76
87
|
* while data is being fetched.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared outlined-field styling so `StyledInputField`, `StyledInputLabel` (+ `StyledFormControl`)
|
|
3
|
+
* and `StyledSelect` render an identical border + floating label without MUI. TASK-401.
|
|
4
|
+
*/
|
|
5
|
+
export type FieldSize = 'small' | 'medium';
|
|
6
|
+
interface FieldState {
|
|
7
|
+
focused?: boolean;
|
|
8
|
+
error?: boolean;
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
readOnly?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/** The border overlay (an absolutely-positioned sibling so width changes never reflow the input). */
|
|
13
|
+
export declare const outlineClass: ({ focused, error, disabled, readOnly }: FieldState) => string;
|
|
14
|
+
/** MUI-compatible fieldset outline used by text fields with floating labels. */
|
|
15
|
+
export declare const notchedOutlineClass: ({ focused, error, disabled, readOnly, notched, }: FieldState & {
|
|
16
|
+
notched?: boolean;
|
|
17
|
+
}) => string;
|
|
18
|
+
export declare const notchedLegendClass: (shrink: boolean) => string;
|
|
19
|
+
/**
|
|
20
|
+
* The floating label. `shrink` lifts it onto the top border (outside the 40px input box).
|
|
21
|
+
* Resting state centers in the field as a placeholder surrogate.
|
|
22
|
+
*/
|
|
23
|
+
export declare const floatingLabelClass: ({ shrink, focused, error, disabled, readOnly, }: FieldState & {
|
|
24
|
+
shrink: boolean;
|
|
25
|
+
size?: FieldSize;
|
|
26
|
+
}) => string;
|
|
27
|
+
export {};
|
|
@@ -1,14 +1,89 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ChangeEvent, CSSProperties, FocusEvent, HTMLAttributes, InputHTMLAttributes, ReactNode, Ref } from 'react';
|
|
2
|
+
import { FieldSize } from '../field-styles';
|
|
3
|
+
interface InputSlot {
|
|
4
|
+
startAdornment?: ReactNode;
|
|
5
|
+
endAdornment?: ReactNode;
|
|
6
|
+
className?: string;
|
|
7
|
+
style?: CSSProperties;
|
|
8
|
+
ref?: Ref<HTMLInputElement | HTMLDivElement>;
|
|
9
|
+
[key: string]: unknown;
|
|
10
|
+
}
|
|
11
|
+
type HtmlInputSlot = InputHTMLAttributes<HTMLInputElement> & {
|
|
12
|
+
ref?: Ref<HTMLInputElement>;
|
|
13
|
+
};
|
|
2
14
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
15
|
+
* @figmaNode wXrXt5uKNNzV2DnQCgyYZH#15561-37391
|
|
16
|
+
* Figma "Input field" component. The Figma **State** property (Enabled/Hovered/Active-Focused/
|
|
17
|
+
* Error/Disabled/Read only) is driven by native focus/hover + the `error`/`disabled`/`readOnly`
|
|
18
|
+
* props; **Filled** (on/off) is derived from `value`/`defaultValue`. **Unify** and **Mixed state**
|
|
19
|
+
* are Figma-authoring properties with no React counterpart. Non-annotated props are behavioral /
|
|
20
|
+
* MUI `TextField` API-parity (DEC-003).
|
|
8
21
|
*/
|
|
9
|
-
export
|
|
22
|
+
export interface StyledInputFieldProps {
|
|
23
|
+
/** @figmaProp none — test hook */
|
|
24
|
+
dataTest: string;
|
|
25
|
+
/** @figmaProp Label element (floating) */
|
|
26
|
+
label?: ReactNode;
|
|
27
|
+
/** @figmaProp Filled = (value != '')→"on" | else→"off" */
|
|
28
|
+
value?: string | number;
|
|
29
|
+
/** @figmaProp Filled = (defaultValue != '')→"on" | else→"off" */
|
|
30
|
+
defaultValue?: string | number;
|
|
31
|
+
onChange?: (event: ChangeEvent<HTMLInputElement>) => void;
|
|
32
|
+
onBlur?: (event: FocusEvent<HTMLInputElement>) => void;
|
|
33
|
+
onFocus?: (event: FocusEvent<HTMLInputElement>) => void;
|
|
34
|
+
/** @figmaProp State = true→"Error" */
|
|
35
|
+
error?: boolean;
|
|
36
|
+
/** @figmaProp Helper text element */
|
|
37
|
+
helperText?: ReactNode;
|
|
38
|
+
/** @figmaProp State = true→"Disabled" */
|
|
39
|
+
disabled?: boolean;
|
|
40
|
+
/** @figmaProp State = true→"Read only" */
|
|
41
|
+
readOnly?: boolean;
|
|
42
|
+
required?: boolean;
|
|
10
43
|
allowClear?: boolean;
|
|
11
44
|
onClear?: () => void;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
45
|
+
type?: string;
|
|
46
|
+
placeholder?: string;
|
|
47
|
+
name?: string;
|
|
48
|
+
id?: string;
|
|
49
|
+
autoComplete?: string;
|
|
50
|
+
autoFocus?: boolean;
|
|
51
|
+
multiline?: boolean;
|
|
52
|
+
rows?: number;
|
|
53
|
+
minRows?: number;
|
|
54
|
+
maxRows?: number;
|
|
55
|
+
size?: FieldSize;
|
|
56
|
+
/** Accepted for API parity; the design always renders outlined. */
|
|
57
|
+
variant?: string;
|
|
58
|
+
fullWidth?: boolean;
|
|
59
|
+
className?: string;
|
|
60
|
+
style?: CSSProperties;
|
|
61
|
+
sx?: unknown;
|
|
62
|
+
inputRef?: Ref<HTMLInputElement | HTMLTextAreaElement>;
|
|
63
|
+
slotProps?: {
|
|
64
|
+
input?: InputSlot;
|
|
65
|
+
htmlInput?: HtmlInputSlot;
|
|
66
|
+
inputLabel?: HTMLAttributes<HTMLLabelElement> & Record<string, unknown>;
|
|
67
|
+
formHelperText?: {
|
|
68
|
+
sx?: unknown;
|
|
69
|
+
className?: string;
|
|
70
|
+
hideErrorIcon?: boolean;
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
/** Legacy MUI adornment slot (still used by ~22 call sites). */
|
|
74
|
+
InputProps?: InputSlot;
|
|
75
|
+
onKeyDown?: (event: React.KeyboardEvent<HTMLInputElement>) => void;
|
|
76
|
+
/** Forwarded to the field root (MUI `TextField` parity); e.g. to stop clicks bubbling to a sortable header. */
|
|
77
|
+
onClick?: (event: React.MouseEvent<HTMLDivElement>) => void;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Outlined text field with a floating label (replaces MUI `TextField`). Self-contained: manages its
|
|
81
|
+
* own focus/value state to drive the shared field styling ([[field-styles]]); supports multiline,
|
|
82
|
+
* start/end adornments, an optional clear button, and error/helper text. Public props preserved
|
|
83
|
+
* (DEC-003). TASK-401.
|
|
84
|
+
*
|
|
85
|
+
* ponytail: `variant` is accepted but always renders outlined, and multiline uses fixed `rows`
|
|
86
|
+
* (no auto-grow to `maxRows`) — known ceilings; Chromatic in CI is the visual gate.
|
|
87
|
+
*/
|
|
88
|
+
export declare const StyledInputField: ({ dataTest, label, value, defaultValue, onChange, onBlur, onFocus, error, helperText, disabled, readOnly, required, allowClear, onClear, type, placeholder, name, id, autoComplete, autoFocus, multiline, rows, minRows, maxRows, size, fullWidth, className, style, sx, inputRef, slotProps, InputProps, onKeyDown, onClick, variant: _variant, }: StyledInputFieldProps) => JSX.Element;
|
|
89
|
+
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from './StyledInputField';
|
|
2
|
-
export {
|
|
2
|
+
export type { StyledInputFieldProps as TextFieldProps } from './StyledInputField';
|
|
@@ -1,9 +1,22 @@
|
|
|
1
1
|
import { CSSProperties, FC, MouseEvent, ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* @figmaNode wXrXt5uKNNzV2DnQCgyYZH#15181-43701 (Design-System · "Label / Highlighting")
|
|
4
|
+
*
|
|
5
|
+
* Small uppercase highlighting/status pill: h16, px6, radius 3, X-small Semibold uppercase
|
|
6
|
+
* (11/12, ls 0.55px). The generic default is a gama label; highlighting variants
|
|
7
|
+
* (Good/Attention/Warning/Urgent = success/warning/orange/error -300 + black text) are applied by
|
|
8
|
+
* the consumer via `className`/`style` (Type is not a component property here).
|
|
9
|
+
*/
|
|
2
10
|
export interface StyledLabelProps {
|
|
11
|
+
/** @figmaProp none — the label text (auto-uppercased) */
|
|
3
12
|
children: ReactNode;
|
|
13
|
+
/** @figmaProp none — behavioral */
|
|
4
14
|
onClick?: (event: MouseEvent<HTMLDivElement>) => void;
|
|
15
|
+
/** @figmaProp Type — highlighting colour (bg/text) is applied here (success/warning/orange/error -300) */
|
|
5
16
|
className?: string;
|
|
17
|
+
/** @figmaProp none — test hook */
|
|
6
18
|
dataTest: string;
|
|
19
|
+
/** @figmaProp none — inline colour override for highlighting variants */
|
|
7
20
|
style?: CSSProperties;
|
|
8
21
|
}
|
|
9
22
|
export declare const StyledLabel: FC<StyledLabelProps>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type RadioValue = string | number | boolean | null;
|
|
2
|
+
export interface RadioGroupContextValue {
|
|
3
|
+
name: string;
|
|
4
|
+
value?: RadioValue;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
onSelect: (value: RadioValue) => void;
|
|
7
|
+
}
|
|
8
|
+
/** Shared state for the native radio group (replaces `@base-ui/react`'s RadioGroup context). */
|
|
9
|
+
export declare const RadioGroupContext: import('node_modules/@types/react').Context<RadioGroupContextValue | null>;
|
|
10
|
+
export declare const useRadioGroupContext: () => RadioGroupContextValue | null;
|
|
@@ -1,10 +1,65 @@
|
|
|
1
|
-
import { default as React } from 'react';
|
|
2
|
-
import {
|
|
1
|
+
import { default as React, ChangeEvent, InputHTMLAttributes } from 'react';
|
|
2
|
+
import { RadioValue } from './RadioGroupContext';
|
|
3
|
+
/**
|
|
4
|
+
* @figmaNode wXrXt5uKNNzV2DnQCgyYZH#15385-19720
|
|
5
|
+
* Figma "Radio" / `_BASE_Radiobutton` (circle 20px, 40px touch). Figma **Selected** (on/off) ←
|
|
6
|
+
* `checked` (or the surrounding `StyledRadioGroup`); Figma **State** (Enabled/Hovered/Focused/
|
|
7
|
+
* Pressed/Error/Disabled/Read-only) ← native hover/focus + `error`/`disabled`/`readOnly`. Checked
|
|
8
|
+
* ring + dot = `gama-500` #168181, unchecked border = `delta-500`, disabled = `delta-300`,
|
|
9
|
+
* read-only = unchecked ring `delta-300` / checked ring+dot `delta-500` (node 35046-162573/162576).
|
|
10
|
+
*/
|
|
3
11
|
export type StyledRadioProps = {
|
|
4
|
-
value
|
|
12
|
+
/** @figmaProp none — the group value this radio represents */
|
|
13
|
+
value?: RadioValue;
|
|
14
|
+
/** @figmaProp none — test hook */
|
|
5
15
|
dataTest?: string;
|
|
6
16
|
className?: string;
|
|
17
|
+
/** @figmaProp none — app size (Figma circle is 20px) */
|
|
7
18
|
size?: 'small' | 'medium';
|
|
19
|
+
/** @figmaProp State = true→"Error" */
|
|
8
20
|
error?: boolean;
|
|
9
|
-
|
|
10
|
-
|
|
21
|
+
/** @figmaProp State = true→"Read-only" (unchecked ring delta-300 / checked ring+dot delta-500) */
|
|
22
|
+
readOnly?: boolean;
|
|
23
|
+
/** @figmaProp Selected = true→"on" | false→"off" */
|
|
24
|
+
checked?: boolean;
|
|
25
|
+
onChange?: (event: ChangeEvent<HTMLInputElement>, checked: boolean) => void;
|
|
26
|
+
/**
|
|
27
|
+
* Renders the identical visual circle/dot (same classes/data-attrs — no visual change) with NO
|
|
28
|
+
* real `<input>` at all, for use as a pure state indicator inside a widget that already owns
|
|
29
|
+
* selection itself (e.g. `StyledInteractiveChip`, whose `clickable` chip handles the click — this
|
|
30
|
+
* radio is `pointer-events-none` there already). A real `<input type="radio">` nested inside
|
|
31
|
+
* that chip's `role="button"` is a genuine axe `nested-interactive` violation; see
|
|
32
|
+
* `StyledCheckbox`'s identical `decorative` prop for the full rationale.
|
|
33
|
+
*/
|
|
34
|
+
decorative?: boolean;
|
|
35
|
+
} & Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'className' | 'size' | 'checked' | 'onChange' | 'type'>;
|
|
36
|
+
/**
|
|
37
|
+
* Native `<input type="radio">` (replaces `@base-ui/react`). Uses the surrounding
|
|
38
|
+
* `StyledRadioGroup` context for name/selection when present, else the standalone `checked` prop.
|
|
39
|
+
* SCSS module (ripple/pseudo-elements — GUD-003) is driven via `data-*` from React. TASK-201.
|
|
40
|
+
*/
|
|
41
|
+
export declare const StyledRadio: React.ForwardRefExoticComponent<{
|
|
42
|
+
/** @figmaProp none — the group value this radio represents */
|
|
43
|
+
value?: RadioValue;
|
|
44
|
+
/** @figmaProp none — test hook */
|
|
45
|
+
dataTest?: string;
|
|
46
|
+
className?: string;
|
|
47
|
+
/** @figmaProp none — app size (Figma circle is 20px) */
|
|
48
|
+
size?: "small" | "medium";
|
|
49
|
+
/** @figmaProp State = true→"Error" */
|
|
50
|
+
error?: boolean;
|
|
51
|
+
/** @figmaProp State = true→"Read-only" (unchecked ring delta-300 / checked ring+dot delta-500) */
|
|
52
|
+
readOnly?: boolean;
|
|
53
|
+
/** @figmaProp Selected = true→"on" | false→"off" */
|
|
54
|
+
checked?: boolean;
|
|
55
|
+
onChange?: (event: ChangeEvent<HTMLInputElement>, checked: boolean) => void;
|
|
56
|
+
/**
|
|
57
|
+
* Renders the identical visual circle/dot (same classes/data-attrs — no visual change) with NO
|
|
58
|
+
* real `<input>` at all, for use as a pure state indicator inside a widget that already owns
|
|
59
|
+
* selection itself (e.g. `StyledInteractiveChip`, whose `clickable` chip handles the click — this
|
|
60
|
+
* radio is `pointer-events-none` there already). A real `<input type="radio">` nested inside
|
|
61
|
+
* that chip's `role="button"` is a genuine axe `nested-interactive` violation; see
|
|
62
|
+
* `StyledCheckbox`'s identical `decorative` prop for the full rationale.
|
|
63
|
+
*/
|
|
64
|
+
decorative?: boolean;
|
|
65
|
+
} & Omit<React.InputHTMLAttributes<HTMLInputElement>, "value" | "className" | "onChange" | "size" | "type" | "checked"> & React.RefAttributes<HTMLInputElement>>;
|
|
@@ -1,14 +1,37 @@
|
|
|
1
|
-
import { default as React } from 'react';
|
|
2
|
-
import {
|
|
1
|
+
import { default as React, HTMLAttributes } from 'react';
|
|
2
|
+
import { RadioValue } from './RadioGroupContext';
|
|
3
3
|
export type StyledRadioGroupProps = {
|
|
4
|
-
value?:
|
|
5
|
-
defaultValue?:
|
|
6
|
-
onValueChange?: (value:
|
|
4
|
+
value?: RadioValue;
|
|
5
|
+
defaultValue?: RadioValue;
|
|
6
|
+
onValueChange?: (value: RadioValue) => void;
|
|
7
7
|
disabled?: boolean;
|
|
8
|
+
/** Non-interactive but not visually disabled (e.g. a submitted/read-only questionnaire): the
|
|
9
|
+
* current selection is shown but can't change. */
|
|
10
|
+
readOnly?: boolean;
|
|
8
11
|
dataTest?: string;
|
|
9
12
|
error?: boolean;
|
|
10
13
|
errorText?: string;
|
|
11
14
|
helperText?: string;
|
|
12
15
|
children: React.ReactNode;
|
|
13
|
-
|
|
14
|
-
|
|
16
|
+
name?: string;
|
|
17
|
+
} & Omit<HTMLAttributes<HTMLDivElement>, 'defaultValue' | 'onChange'>;
|
|
18
|
+
/**
|
|
19
|
+
* Native radio group (replaces `@base-ui/react`): a `role="radiogroup"` container that shares
|
|
20
|
+
* name/selection with its `StyledRadio` children via context, controlled or uncontrolled, plus the
|
|
21
|
+
* error/helper text row. TASK-201.
|
|
22
|
+
*/
|
|
23
|
+
export declare const StyledRadioGroup: React.ForwardRefExoticComponent<{
|
|
24
|
+
value?: RadioValue;
|
|
25
|
+
defaultValue?: RadioValue;
|
|
26
|
+
onValueChange?: (value: RadioValue) => void;
|
|
27
|
+
disabled?: boolean;
|
|
28
|
+
/** Non-interactive but not visually disabled (e.g. a submitted/read-only questionnaire): the
|
|
29
|
+
* current selection is shown but can't change. */
|
|
30
|
+
readOnly?: boolean;
|
|
31
|
+
dataTest?: string;
|
|
32
|
+
error?: boolean;
|
|
33
|
+
errorText?: string;
|
|
34
|
+
helperText?: string;
|
|
35
|
+
children: React.ReactNode;
|
|
36
|
+
name?: string;
|
|
37
|
+
} & Omit<React.HTMLAttributes<HTMLDivElement>, "defaultValue" | "onChange"> & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -1,6 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TextFieldProps } from '../../../index.ts';
|
|
2
2
|
import { FC, ComponentProps } from 'react';
|
|
3
|
+
import { StyledInputField } from '../input-field/StyledInputField';
|
|
3
4
|
export type StyledSearchFieldProps = ComponentProps<typeof StyledInputField> & {
|
|
4
5
|
label: Required<TextFieldProps['label']>;
|
|
5
6
|
};
|
|
7
|
+
/**
|
|
8
|
+
* @figmaNode wXrXt5uKNNzV2DnQCgyYZH#28496-138521 (rest) · #27857-162809 (focused/filled)
|
|
9
|
+
* Figma Search field: at rest the label is an in-field placeholder (Body Base 16, placeholder
|
|
10
|
+
* delta-500) with Icon-left (8px + 24px icon + 8px) inside the 40px outlined field — no floating
|
|
11
|
+
* label. On focus/filled the icon hides, the label floats (Small 12, gama-500), and a clear icon
|
|
12
|
+
* may appear on the right.
|
|
13
|
+
*/
|
|
6
14
|
export declare const StyledSearchField: FC<StyledSearchFieldProps>;
|
|
@@ -1,19 +1,73 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { CSSProperties, FocusEventHandler, ReactNode } from 'react';
|
|
2
|
+
import { FieldSize } from '../field-styles';
|
|
3
|
+
export interface SelectChangeEvent<T = unknown> {
|
|
4
|
+
target: {
|
|
5
|
+
value: T;
|
|
6
|
+
name?: string;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* @figmaNode wXrXt5uKNNzV2DnQCgyYZH#15561-37391
|
|
11
|
+
* The trigger is the outlined **Input field** (shared `field-styles`: 40px, focus gama-400, hover
|
|
12
|
+
* gama-300); the dropdown is **Menus** (node 16073-19226). Figma field **State** (Enabled/Hovered/
|
|
13
|
+
* Focused/Error/Disabled/Read-only) ← open/focus + `error`/`disabled`/`readOnly`; **Filled** ← `value`.
|
|
14
|
+
* Non-annotated props are behavioral / MUI `Select` API-parity (DEC-003).
|
|
15
|
+
*/
|
|
16
|
+
export interface StyledSelectProps {
|
|
17
|
+
/** @figmaProp none — test hook */
|
|
5
18
|
dataTest: string;
|
|
6
|
-
|
|
19
|
+
/** @figmaProp Filled + trigger display value */
|
|
20
|
+
value?: unknown;
|
|
21
|
+
/** @figmaProp Filled (initial, uncontrolled) */
|
|
22
|
+
defaultValue?: unknown;
|
|
23
|
+
onChange?: (event: SelectChangeEvent, child: ReactNode) => void;
|
|
24
|
+
/**
|
|
25
|
+
* @figmaProp none — accepted for MUI `Select` / DEC-003 drop-in parity, but **no longer affects
|
|
26
|
+
* rendering**: the trigger value is Body Base 16px and the field is 40px at every size (a smaller
|
|
27
|
+
* size only changed text before; Figma field text is 16/lh24 regardless). Kept so `size="small"`
|
|
28
|
+
* call sites still compile. Ignored on purpose (not destructured).
|
|
29
|
+
*/
|
|
30
|
+
size?: FieldSize;
|
|
31
|
+
/** @figmaProp State = true→"Error" */
|
|
32
|
+
error?: boolean;
|
|
33
|
+
errorText?: string;
|
|
34
|
+
/** @figmaProp Clear (trigger clear button) */
|
|
35
|
+
allowClear?: boolean;
|
|
36
|
+
/** @figmaProp State = true→"Disabled" */
|
|
37
|
+
disabled?: boolean;
|
|
38
|
+
/** @figmaProp State = true→"Read-only" */
|
|
39
|
+
readOnly?: boolean;
|
|
40
|
+
name?: string;
|
|
41
|
+
/** @figmaProp Placeholder text (resting) */
|
|
42
|
+
placeholder?: string;
|
|
43
|
+
displayEmpty?: boolean;
|
|
44
|
+
multiple?: boolean;
|
|
45
|
+
renderValue?: (value: unknown) => ReactNode;
|
|
46
|
+
fullWidth?: boolean;
|
|
47
|
+
className?: string;
|
|
48
|
+
style?: CSSProperties;
|
|
49
|
+
/** Accepted for API parity; `standard` renders borderless (calendar month/year dropdowns).
|
|
50
|
+
* `string & {}` keeps 'outlined'/'standard' as autocomplete hints without TS treating them as
|
|
51
|
+
* redundant against the `string` fallback (other MUI variant values are accepted and ignored). */
|
|
52
|
+
variant?: 'outlined' | 'standard' | (string & {});
|
|
53
|
+
sx?: unknown;
|
|
54
|
+
/** Sets `aria-labelledby` on the trigger — the field's real accessible-name source when a
|
|
55
|
+
* visible label sits outside the control (MUI `Select` parity; genuinely wired, unlike `size`
|
|
56
|
+
* above). Without it (and no `name`/placeholder/value text), the trigger has no accessible name
|
|
57
|
+
* at all — a common gap when a floating/external label isn't referenced. */
|
|
58
|
+
labelId?: string;
|
|
59
|
+
children?: ReactNode;
|
|
60
|
+
MenuProps?: {
|
|
61
|
+
className?: string;
|
|
62
|
+
};
|
|
63
|
+
/** Forwarded to the trigger button, merged with the internal focus tracking (e.g. validate on blur). */
|
|
64
|
+
onFocus?: FocusEventHandler<HTMLButtonElement>;
|
|
65
|
+
onBlur?: FocusEventHandler<HTMLButtonElement>;
|
|
66
|
+
}
|
|
7
67
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* @size
|
|
13
|
-
* control the size through StyledFormControl
|
|
14
|
-
*
|
|
15
|
-
* @inputRef
|
|
16
|
-
* inputRef to get Node of Input Element inside
|
|
17
|
-
*
|
|
68
|
+
* Single-select dropdown (replaces MUI `Select`) — a trigger styled as the outlined field plus a
|
|
69
|
+
* portalled `role="listbox"`. Reports open/filled into a surrounding `StyledFormControl` so its
|
|
70
|
+
* `StyledInputLabel` floats. Public props preserved (DEC-003). Use inside `StyledFormControl`.
|
|
71
|
+
* TASK-402.
|
|
18
72
|
*/
|
|
19
|
-
export declare const StyledSelect:
|
|
73
|
+
export declare const StyledSelect: ({ dataTest, value, defaultValue, onChange, error, errorText, allowClear, disabled, readOnly, name, placeholder, displayEmpty, multiple, renderValue, fullWidth, className, style, sx, variant, children, MenuProps, onFocus, onBlur, labelId, }: StyledSelectProps) => JSX.Element;
|
|
@@ -1,2 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export
|
|
1
|
+
import { MouseEvent, ReactNode } from 'react';
|
|
2
|
+
export interface StyledSelectItemProps {
|
|
3
|
+
value?: unknown;
|
|
4
|
+
children?: ReactNode;
|
|
5
|
+
selected?: boolean;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
className?: string;
|
|
8
|
+
onClick?: (event: MouseEvent<HTMLLIElement>) => void;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Option row for `StyledSelect` (replaces MUI `MenuItem` in the select context). `role="option"`
|
|
12
|
+
* with a leading check column for the selected state. Public props preserved (DEC-003). TASK-402.
|
|
13
|
+
*/
|
|
14
|
+
export declare const StyledSelectItem: ({ children, selected, disabled, className, onClick, }: StyledSelectItemProps) => JSX.Element;
|