@bspk/ui 1.0.1 → 1.1.12
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/README.md +5 -0
- package/{Avatar.d.ts → dist/Avatar.d.ts} +2 -2
- package/dist/Avatar.js +27 -0
- package/dist/Avatar.js.map +1 -0
- package/{Badge.d.ts → dist/Badge.d.ts} +2 -2
- package/dist/Badge.js +16 -0
- package/dist/Badge.js.map +1 -0
- package/{BannerAlert.d.ts → dist/BannerAlert.d.ts} +4 -4
- package/dist/BannerAlert.js +20 -0
- package/dist/BannerAlert.js.map +1 -0
- package/{Button.d.ts → dist/Button.d.ts} +1 -1
- package/dist/Button.js +30 -0
- package/dist/Button.js.map +1 -0
- package/{Card.d.ts → dist/Card.d.ts} +2 -2
- package/dist/Card.js +18 -0
- package/dist/Card.js.map +1 -0
- package/{Checkbox.d.ts → dist/Checkbox.d.ts} +2 -2
- package/dist/Checkbox.js +32 -0
- package/dist/Checkbox.js.map +1 -0
- package/{CheckboxGroup.d.ts → dist/CheckboxGroup.d.ts} +1 -1
- package/dist/CheckboxGroup.js +16 -0
- package/dist/CheckboxGroup.js.map +1 -0
- package/{CheckboxOption.d.ts → dist/CheckboxOption.d.ts} +1 -1
- package/dist/CheckboxOption.js +14 -0
- package/dist/CheckboxOption.js.map +1 -0
- package/{Chip.d.ts → dist/Chip.d.ts} +2 -2
- package/dist/Chip.js +22 -0
- package/dist/Chip.js.map +1 -0
- package/{Dialog.d.ts → dist/Dialog.d.ts} +2 -2
- package/dist/Dialog.js +70 -0
- package/dist/Dialog.js.map +1 -0
- package/{Divider.d.ts → dist/Divider.d.ts} +2 -2
- package/dist/Divider.js +26 -0
- package/dist/Divider.js.map +1 -0
- package/{Dropdown.d.ts → dist/Dropdown.d.ts} +2 -2
- package/dist/Dropdown.js +37 -0
- package/dist/Dropdown.js.map +1 -0
- package/{DropdownField.d.ts → dist/DropdownField.d.ts} +1 -1
- package/{DropdownField.js → dist/DropdownField.js} +5 -7
- package/dist/DropdownField.js.map +1 -0
- package/{EmptyState.d.ts → dist/EmptyState.d.ts} +7 -1
- package/dist/EmptyState.js +18 -0
- package/dist/EmptyState.js.map +1 -0
- package/{Fab.d.ts → dist/Fab.d.ts} +2 -2
- package/dist/Fab.js +24 -0
- package/dist/Fab.js.map +1 -0
- package/{FormField.d.ts → dist/FormField.d.ts} +2 -2
- package/dist/FormField.js +27 -0
- package/dist/FormField.js.map +1 -0
- package/{Img.d.ts → dist/Img.d.ts} +1 -1
- package/dist/Img.js +12 -0
- package/dist/Img.js.map +1 -0
- package/{InlineAlert.d.ts → dist/InlineAlert.d.ts} +2 -2
- package/dist/InlineAlert.js +27 -0
- package/dist/InlineAlert.js.map +1 -0
- package/{Layout.d.ts → dist/Layout.d.ts} +1 -1
- package/{Layout.js → dist/Layout.js} +3 -5
- package/dist/Layout.js.map +1 -0
- package/{Link.d.ts → dist/Link.d.ts} +2 -2
- package/dist/Link.js +17 -0
- package/dist/Link.js.map +1 -0
- package/{ListItem.d.ts → dist/ListItem.d.ts} +3 -3
- package/dist/ListItem.js +93 -0
- package/dist/ListItem.js.map +1 -0
- package/{Menu.d.ts → dist/Menu.d.ts} +2 -2
- package/dist/Menu.js +62 -0
- package/dist/Menu.js.map +1 -0
- package/{MenuButton.d.ts → dist/MenuButton.d.ts} +2 -2
- package/dist/MenuButton.js +15 -0
- package/dist/MenuButton.js.map +1 -0
- package/{Modal.d.ts → dist/Modal.d.ts} +2 -2
- package/dist/Modal.js +32 -0
- package/dist/Modal.js.map +1 -0
- package/{NumberField.d.ts → dist/NumberField.d.ts} +1 -1
- package/{NumberField.js → dist/NumberField.js} +5 -7
- package/dist/NumberField.js.map +1 -0
- package/{NumberInput.d.ts → dist/NumberInput.d.ts} +2 -2
- package/dist/NumberInput.js +64 -0
- package/dist/NumberInput.js.map +1 -0
- package/{Popover.d.ts → dist/Popover.d.ts} +2 -2
- package/dist/Popover.js +46 -0
- package/dist/Popover.js.map +1 -0
- package/{Portal.js → dist/Portal.js} +4 -5
- package/dist/Portal.js.map +1 -0
- package/{ProgressBar.d.ts → dist/ProgressBar.d.ts} +2 -2
- package/dist/ProgressBar.js +17 -0
- package/dist/ProgressBar.js.map +1 -0
- package/{ProgressCircle.d.ts → dist/ProgressCircle.d.ts} +3 -3
- package/dist/ProgressCircle.js +30 -0
- package/dist/ProgressCircle.js.map +1 -0
- package/{ProgressionStepper.d.ts → dist/ProgressionStepper.d.ts} +2 -2
- package/dist/ProgressionStepper.js +24 -0
- package/dist/ProgressionStepper.js.map +1 -0
- package/{ProgressionStepperBar.d.ts → dist/ProgressionStepperBar.d.ts} +7 -3
- package/dist/ProgressionStepperBar.js +15 -0
- package/dist/ProgressionStepperBar.js.map +1 -0
- package/{Radio.d.ts → dist/Radio.d.ts} +2 -2
- package/dist/Radio.js +18 -0
- package/dist/Radio.js.map +1 -0
- package/{RadioGroup.d.ts → dist/RadioGroup.d.ts} +1 -1
- package/dist/RadioGroup.js +16 -0
- package/dist/RadioGroup.js.map +1 -0
- package/{RadioOption.d.ts → dist/RadioOption.d.ts} +1 -1
- package/dist/RadioOption.js +14 -0
- package/dist/RadioOption.js.map +1 -0
- package/{SearchBar.d.ts → dist/SearchBar.d.ts} +2 -2
- package/{SearchBar.js → dist/SearchBar.js} +13 -19
- package/dist/SearchBar.js.map +1 -0
- package/{SegmentedControl.d.ts → dist/SegmentedControl.d.ts} +2 -2
- package/dist/SegmentedControl.js +22 -0
- package/dist/SegmentedControl.js.map +1 -0
- package/dist/Skeleton.d.ts +45 -0
- package/dist/Skeleton.js +25 -0
- package/dist/Skeleton.js.map +1 -0
- package/{StylesProviderAnywhere.d.ts → dist/StylesProviderAnywhere.d.ts} +4 -1
- package/dist/StylesProviderAnywhere.js +15 -0
- package/dist/StylesProviderAnywhere.js.map +1 -0
- package/{StylesProviderBetterHomesGardens.d.ts → dist/StylesProviderBetterHomesGardens.d.ts} +4 -1
- package/dist/StylesProviderBetterHomesGardens.js +15 -0
- package/dist/StylesProviderBetterHomesGardens.js.map +1 -0
- package/{StylesProviderCartus.d.ts → dist/StylesProviderCartus.d.ts} +4 -1
- package/dist/StylesProviderCartus.js +15 -0
- package/dist/StylesProviderCartus.js.map +1 -0
- package/{StylesProviderCentury21.d.ts → dist/StylesProviderCentury21.d.ts} +4 -1
- package/dist/StylesProviderCentury21.js +15 -0
- package/dist/StylesProviderCentury21.js.map +1 -0
- package/{StylesProviderColdwellBanker.d.ts → dist/StylesProviderColdwellBanker.d.ts} +4 -1
- package/dist/StylesProviderColdwellBanker.js +15 -0
- package/dist/StylesProviderColdwellBanker.js.map +1 -0
- package/{StylesProviderCorcoran.d.ts → dist/StylesProviderCorcoran.d.ts} +4 -1
- package/dist/StylesProviderCorcoran.js +15 -0
- package/dist/StylesProviderCorcoran.js.map +1 -0
- package/{StylesProviderDenaliBoss.d.ts → dist/StylesProviderDenaliBoss.d.ts} +4 -1
- package/dist/StylesProviderDenaliBoss.js +15 -0
- package/dist/StylesProviderDenaliBoss.js.map +1 -0
- package/{StylesProviderEra.d.ts → dist/StylesProviderEra.d.ts} +4 -1
- package/dist/StylesProviderEra.js +15 -0
- package/dist/StylesProviderEra.js.map +1 -0
- package/{StylesProviderSothebys.d.ts → dist/StylesProviderSothebys.d.ts} +4 -1
- package/dist/StylesProviderSothebys.js +15 -0
- package/dist/StylesProviderSothebys.js.map +1 -0
- package/{Switch.d.ts → dist/Switch.d.ts} +2 -2
- package/dist/Switch.js +21 -0
- package/dist/Switch.js.map +1 -0
- package/{SwitchGroup.d.ts → dist/SwitchGroup.d.ts} +1 -1
- package/dist/SwitchGroup.js +16 -0
- package/dist/SwitchGroup.js.map +1 -0
- package/{SwitchOption.d.ts → dist/SwitchOption.d.ts} +1 -1
- package/dist/SwitchOption.js +14 -0
- package/dist/SwitchOption.js.map +1 -0
- package/{TabGroup.d.ts → dist/TabGroup.d.ts} +2 -2
- package/dist/TabGroup.js +22 -0
- package/dist/TabGroup.js.map +1 -0
- package/{Table.d.ts → dist/Table.d.ts} +2 -2
- package/dist/Table.js +20 -0
- package/dist/Table.js.map +1 -0
- package/{Tag.d.ts → dist/Tag.d.ts} +2 -2
- package/dist/Tag.js +15 -0
- package/dist/Tag.js.map +1 -0
- package/{TextField.d.ts → dist/TextField.d.ts} +1 -1
- package/dist/TextField.js +17 -0
- package/dist/TextField.js.map +1 -0
- package/{TextInput.d.ts → dist/TextInput.d.ts} +2 -2
- package/dist/TextInput.js +23 -0
- package/dist/TextInput.js.map +1 -0
- package/{Textarea.d.ts → dist/Textarea.d.ts} +2 -2
- package/dist/Textarea.js +39 -0
- package/dist/Textarea.js.map +1 -0
- package/{TextareaField.d.ts → dist/TextareaField.d.ts} +1 -1
- package/dist/TextareaField.js +24 -0
- package/dist/TextareaField.js.map +1 -0
- package/{ToggleOption.d.ts → dist/ToggleOption.d.ts} +2 -2
- package/dist/ToggleOption.js +14 -0
- package/dist/ToggleOption.js.map +1 -0
- package/{Tooltip.d.ts → dist/Tooltip.d.ts} +2 -2
- package/dist/Tooltip.js +42 -0
- package/dist/Tooltip.js.map +1 -0
- package/{TopNavigation.d.ts → dist/TopNavigation.d.ts} +2 -2
- package/dist/TopNavigation.js +14 -0
- package/dist/TopNavigation.js.map +1 -0
- package/{Txt.d.ts → dist/Txt.d.ts} +1 -1
- package/{Txt.js → dist/Txt.js} +3 -8
- package/dist/Txt.js.map +1 -0
- package/dist/avatar.css +1 -0
- package/dist/badge.css +1 -0
- package/dist/banner-alert.css +1 -0
- package/dist/base.css +1 -0
- package/dist/button.css +1 -0
- package/dist/card.css +1 -0
- package/dist/checkbox.css +1 -0
- package/dist/chip.css +1 -0
- package/dist/colors.css +1 -0
- package/dist/dialog.css +1 -0
- package/dist/divider.css +1 -0
- package/dist/dropdown.css +1 -0
- package/dist/fab.css +1 -0
- package/dist/form-field.css +1 -0
- package/{hooks → dist/hooks}/useCheckboxGroupState.d.ts +1 -1
- package/{hooks → dist/hooks}/useCheckboxGroupState.js +3 -6
- package/dist/hooks/useCheckboxGroupState.js.map +1 -0
- package/{hooks → dist/hooks}/useCheckboxState.js +2 -5
- package/dist/hooks/useCheckboxState.js.map +1 -0
- package/{hooks → dist/hooks}/useFloating.js +5 -8
- package/dist/hooks/useFloating.js.map +1 -0
- package/{hooks → dist/hooks}/useFloatingMenu.js +6 -9
- package/dist/hooks/useFloatingMenu.js.map +1 -0
- package/{hooks → dist/hooks}/useId.js +4 -7
- package/dist/hooks/useId.js.map +1 -0
- package/{hooks → dist/hooks}/useKeyboardNavigation.js +4 -7
- package/dist/hooks/useKeyboardNavigation.js.map +1 -0
- package/{hooks → dist/hooks}/useLongPress.js +3 -6
- package/dist/hooks/useLongPress.js.map +1 -0
- package/{hooks → dist/hooks}/useModalState.js +3 -6
- package/dist/hooks/useModalState.js.map +1 -0
- package/{hooks → dist/hooks}/useNavOptions.js +4 -7
- package/dist/hooks/useNavOptions.js.map +1 -0
- package/{hooks → dist/hooks}/useOutsideClick.js +2 -5
- package/dist/hooks/useOutsideClick.js.map +1 -0
- package/{hooks → dist/hooks}/useRadioState.js +2 -5
- package/dist/hooks/useRadioState.js.map +1 -0
- package/{hooks → dist/hooks}/useSwitchGroupState.d.ts +1 -1
- package/{hooks → dist/hooks}/useSwitchGroupState.js +3 -6
- package/dist/hooks/useSwitchGroupState.js.map +1 -0
- package/{hooks → dist/hooks}/useTimeout.js +2 -5
- package/dist/hooks/useTimeout.js.map +1 -0
- package/{hooks → dist/hooks}/useValidChildren.js +4 -7
- package/dist/hooks/useValidChildren.js.map +1 -0
- package/{index.js → dist/index.js} +2 -4
- package/dist/index.js.map +1 -0
- package/dist/inline-alert.css +1 -0
- package/dist/link.css +1 -0
- package/dist/list-item.css +1 -0
- package/dist/menu-button.css +1 -0
- package/dist/menu.css +1 -0
- package/dist/modal.css +1 -0
- package/dist/number-input.css +1 -0
- package/dist/popover.css +1 -0
- package/dist/progress-bar.css +1 -0
- package/dist/progress-circle.css +1 -0
- package/dist/progression-stepper-bar.css +1 -0
- package/dist/progression-stepper.css +1 -0
- package/dist/radio.css +1 -0
- package/dist/search-bar.css +1 -0
- package/dist/segmented-control.css +1 -0
- package/dist/skeleton.css +6 -0
- package/dist/switch.css +1 -0
- package/dist/tab-group.css +1 -0
- package/dist/table.css +1 -0
- package/dist/tag.css +1 -0
- package/dist/text-input.css +1 -0
- package/dist/textarea.css +4 -0
- package/dist/toggle-option.css +1 -0
- package/dist/tooltip.css +1 -0
- package/dist/top-navigation.css +1 -0
- package/{utils → dist/utils}/children.js +9 -12
- package/dist/utils/children.js.map +1 -0
- package/dist/utils/colorVariants.d.ts +7 -0
- package/dist/utils/colorVariants.js +22 -0
- package/dist/utils/colorVariants.js.map +1 -0
- package/{utils → dist/utils}/errors.d.ts +1 -1
- package/{utils → dist/utils}/errors.js +20 -12
- package/dist/utils/errors.js.map +1 -0
- package/{utils → dist/utils}/getValidNode.js +2 -5
- package/dist/utils/getValidNode.js.map +1 -0
- package/{utils → dist/utils}/keyboard.js +2 -4
- package/dist/utils/keyboard.js.map +1 -0
- package/dist/utils/placeholder.test.d.ts +1 -0
- package/dist/utils/placeholder.test.js +7 -0
- package/dist/utils/placeholder.test.js.map +1 -0
- package/{utils → dist/utils}/ref.js +2 -4
- package/dist/utils/ref.js.map +1 -0
- package/{utils → dist/utils}/scrollElementIntoView.js +2 -4
- package/dist/utils/scrollElementIntoView.js.map +1 -0
- package/{utils → dist/utils}/srOnly.js +2 -4
- package/dist/utils/srOnly.js.map +1 -0
- package/dist/utils/styleAdd.d.ts +1 -0
- package/dist/utils/styleAdd.js +11 -0
- package/dist/utils/styleAdd.js.map +1 -0
- package/{utils → dist/utils}/tryIntPsrse.js +2 -4
- package/dist/utils/tryIntPsrse.js.map +1 -0
- package/dist/utils/txtVariants.d.ts +7 -0
- package/{utils → dist/utils}/txtVariants.js +7 -4
- package/dist/utils/txtVariants.js.map +1 -0
- package/meta-types.ts +46 -0
- package/meta.ts +465 -0
- package/package.json +31 -20
- package/src/Avatar.tsx +3 -61
- package/src/Badge.tsx +2 -30
- package/src/BannerAlert.tsx +6 -119
- package/src/Button.tsx +3 -228
- package/src/Card.tsx +2 -22
- package/src/Checkbox.tsx +2 -94
- package/src/CheckboxGroup.tsx +2 -2
- package/src/CheckboxOption.tsx +3 -3
- package/src/Chip.tsx +2 -68
- package/src/Dialog.tsx +2 -154
- package/src/Divider.tsx +2 -54
- package/src/Dropdown.tsx +2 -119
- package/src/DropdownField.tsx +3 -2
- package/src/EmptyState.tsx +10 -4
- package/src/Fab.tsx +2 -125
- package/src/FormField.tsx +2 -15
- package/src/Img.tsx +1 -9
- package/src/InlineAlert.tsx +2 -48
- package/src/Layout.tsx +1 -0
- package/src/Link.tsx +2 -23
- package/src/ListItem.tsx +3 -118
- package/src/Menu.tsx +3 -41
- package/src/MenuButton.tsx +2 -17
- package/src/Modal.tsx +3 -24
- package/src/NumberField.tsx +3 -2
- package/src/NumberInput.tsx +2 -126
- package/src/Popover.tsx +3 -110
- package/src/Portal.tsx +1 -0
- package/src/ProgressBar.tsx +2 -49
- package/src/ProgressCircle.tsx +2 -57
- package/src/ProgressionStepper.tsx +2 -175
- package/src/ProgressionStepperBar.tsx +7 -44
- package/src/Radio.tsx +2 -82
- package/src/RadioGroup.tsx +2 -2
- package/src/RadioOption.tsx +3 -3
- package/src/SearchBar.tsx +4 -10
- package/src/SegmentedControl.tsx +2 -116
- package/src/Skeleton.tsx +40 -56
- package/src/StylesProviderAnywhere.tsx +4 -18
- package/src/StylesProviderBetterHomesGardens.tsx +4 -18
- package/src/StylesProviderCartus.tsx +4 -18
- package/src/StylesProviderCentury21.tsx +4 -18
- package/src/StylesProviderColdwellBanker.tsx +4 -18
- package/src/StylesProviderCorcoran.tsx +4 -18
- package/src/StylesProviderDenaliBoss.tsx +4 -18
- package/src/StylesProviderEra.tsx +4 -18
- package/src/StylesProviderSothebys.tsx +4 -18
- package/src/Switch.tsx +2 -66
- package/src/SwitchGroup.tsx +2 -2
- package/src/SwitchOption.tsx +3 -3
- package/src/TabGroup.tsx +2 -100
- package/src/Table.tsx +2 -49
- package/src/Tag.tsx +3 -67
- package/src/TextField.tsx +3 -2
- package/src/TextInput.tsx +2 -152
- package/src/Textarea.tsx +2 -80
- package/src/TextareaField.tsx +3 -2
- package/src/ToggleOption.tsx +2 -79
- package/src/Tooltip.tsx +3 -66
- package/src/TopNavigation.tsx +2 -10
- package/src/Txt.tsx +1 -9
- package/src/avatar.scss +74 -0
- package/src/badge.scss +28 -0
- package/{BannerAlert.js → src/banner-alert.scss} +5 -23
- package/src/{styles/base.css → base.scss} +5 -3
- package/src/button.scss +218 -0
- package/src/card.scss +23 -0
- package/{Checkbox.js → src/checkbox.scss} +9 -34
- package/{Chip.js → src/chip.scss} +3 -24
- package/src/colors.scss +76 -0
- package/{Dialog.js → src/dialog.scss} +7 -76
- package/src/divider.scss +47 -0
- package/{Dropdown.js → src/dropdown.scss} +4 -45
- package/{Fab.js → src/fab.scss} +4 -27
- package/src/form-field.scss +13 -0
- package/src/hooks/useFloating.ts +5 -5
- package/src/inline-alert.scss +51 -0
- package/src/link.scss +21 -0
- package/src/list-item.scss +113 -0
- package/src/menu-button.scss +16 -0
- package/src/menu.scss +36 -0
- package/src/modal.scss +22 -0
- package/src/number-input.scss +128 -0
- package/{Popover.js → src/popover.scss} +10 -49
- package/src/progress-bar.scss +50 -0
- package/src/progress-circle.scss +56 -0
- package/src/progression-stepper-bar.scss +39 -0
- package/{ProgressionStepper.js → src/progression-stepper.scss} +8 -27
- package/{Radio.js → src/radio.scss} +6 -22
- package/src/search-bar.scss +7 -0
- package/{SegmentedControl.js → src/segmented-control.scss} +7 -24
- package/src/skeleton.scss +83 -0
- package/{Switch.js → src/switch.scss} +4 -25
- package/{TabGroup.js → src/tab-group.scss} +9 -26
- package/{Table.js → src/table.scss} +4 -22
- package/{Tag.js → src/tag.scss} +5 -28
- package/{TextInput.js → src/text-input.scss} +7 -31
- package/{Textarea.js → src/textarea.scss} +9 -38
- package/{ToggleOption.js → src/toggle-option.scss} +3 -16
- package/src/tooltip.scss +63 -0
- package/src/top-navigation.scss +5 -0
- package/src/utils/children.ts +1 -1
- package/src/utils/colorVariants.ts +22 -73
- package/src/utils/styleAdd.ts +7 -0
- package/src/utils/txtVariants.ts +8 -27
- package/Accordion.d.ts +0 -20
- package/Accordion.js +0 -18
- package/Accordion.js.map +0 -1
- package/Avatar.js +0 -81
- package/Avatar.js.map +0 -1
- package/Badge.js +0 -43
- package/Badge.js.map +0 -1
- package/BannerAlert.js.map +0 -1
- package/BottomNavigation.d.ts +0 -20
- package/BottomNavigation.js +0 -18
- package/BottomNavigation.js.map +0 -1
- package/BottomSheet.d.ts +0 -20
- package/BottomSheet.js +0 -18
- package/BottomSheet.js.map +0 -1
- package/Breadcrumb.d.ts +0 -20
- package/Breadcrumb.js +0 -18
- package/Breadcrumb.js.map +0 -1
- package/Button.js +0 -254
- package/Button.js.map +0 -1
- package/ButtonDock.d.ts +0 -20
- package/ButtonDock.js +0 -18
- package/ButtonDock.js.map +0 -1
- package/CODE_OF_CONDUCT.md +0 -137
- package/CONTRIBUTING.md +0 -42
- package/Card.js +0 -38
- package/Card.js.map +0 -1
- package/Chart.d.ts +0 -20
- package/Chart.js +0 -18
- package/Chart.js.map +0 -1
- package/Checkbox.js.map +0 -1
- package/CheckboxGroup.js +0 -18
- package/CheckboxGroup.js.map +0 -1
- package/CheckboxOption.js +0 -16
- package/CheckboxOption.js.map +0 -1
- package/Chip.js.map +0 -1
- package/DatePicker.d.ts +0 -20
- package/DatePicker.js +0 -18
- package/DatePicker.js.map +0 -1
- package/Dialog.js.map +0 -1
- package/Divider.js +0 -76
- package/Divider.js.map +0 -1
- package/Drawer.d.ts +0 -20
- package/Drawer.js +0 -18
- package/Drawer.js.map +0 -1
- package/Dropdown.js.map +0 -1
- package/DropdownField.js.map +0 -1
- package/EmptyState.js +0 -20
- package/EmptyState.js.map +0 -1
- package/Fab.js.map +0 -1
- package/FileUpload.d.ts +0 -20
- package/FileUpload.js +0 -18
- package/FileUpload.js.map +0 -1
- package/FormField.js +0 -39
- package/FormField.js.map +0 -1
- package/GUIDELINES.md +0 -41
- package/Image.d.ts +0 -20
- package/Image.js +0 -18
- package/Image.js.map +0 -1
- package/Img.js +0 -20
- package/Img.js.map +0 -1
- package/InlineAlert.js +0 -73
- package/InlineAlert.js.map +0 -1
- package/Layout.js.map +0 -1
- package/Link.js +0 -37
- package/Link.js.map +0 -1
- package/ListItem.js +0 -207
- package/ListItem.js.map +0 -1
- package/Menu.js +0 -98
- package/Menu.js.map +0 -1
- package/MenuButton.js +0 -30
- package/MenuButton.js.map +0 -1
- package/Modal.js +0 -53
- package/Modal.js.map +0 -1
- package/MultiSelection.d.ts +0 -20
- package/MultiSelection.js +0 -18
- package/MultiSelection.js.map +0 -1
- package/NavigationRail.d.ts +0 -20
- package/NavigationRail.js +0 -18
- package/NavigationRail.js.map +0 -1
- package/NumberField.js.map +0 -1
- package/NumberInput.js +0 -188
- package/NumberInput.js.map +0 -1
- package/OTPInput.d.ts +0 -20
- package/OTPInput.js +0 -18
- package/OTPInput.js.map +0 -1
- package/PageControl.d.ts +0 -20
- package/PageControl.js +0 -18
- package/PageControl.js.map +0 -1
- package/PasswordInput.d.ts +0 -20
- package/PasswordInput.js +0 -18
- package/PasswordInput.js.map +0 -1
- package/PhoneNumberInput.d.ts +0 -20
- package/PhoneNumberInput.js +0 -18
- package/PhoneNumberInput.js.map +0 -1
- package/Popover.js.map +0 -1
- package/Portal.js.map +0 -1
- package/ProgressBar.js +0 -64
- package/ProgressBar.js.map +0 -1
- package/ProgressCircle.js +0 -82
- package/ProgressCircle.js.map +0 -1
- package/ProgressionStepper.js.map +0 -1
- package/ProgressionStepperBar.js +0 -51
- package/ProgressionStepperBar.js.map +0 -1
- package/Radio.js.map +0 -1
- package/RadioGroup.js +0 -18
- package/RadioGroup.js.map +0 -1
- package/RadioOption.js +0 -16
- package/RadioOption.js.map +0 -1
- package/Rating.d.ts +0 -16
- package/Rating.js +0 -18
- package/Rating.js.map +0 -1
- package/SearchBar.js.map +0 -1
- package/SegmentedControl.js.map +0 -1
- package/Skeleton.d.ts +0 -28
- package/Skeleton.js +0 -57
- package/Skeleton.js.map +0 -1
- package/SliderInput.d.ts +0 -16
- package/SliderInput.js +0 -18
- package/SliderInput.js.map +0 -1
- package/Snackbar.d.ts +0 -16
- package/Snackbar.js +0 -18
- package/Snackbar.js.map +0 -1
- package/StylesProviderAnywhere.js +0 -29
- package/StylesProviderAnywhere.js.map +0 -1
- package/StylesProviderBetterHomesGardens.js +0 -29
- package/StylesProviderBetterHomesGardens.js.map +0 -1
- package/StylesProviderCartus.js +0 -29
- package/StylesProviderCartus.js.map +0 -1
- package/StylesProviderCentury21.js +0 -29
- package/StylesProviderCentury21.js.map +0 -1
- package/StylesProviderColdwellBanker.js +0 -29
- package/StylesProviderColdwellBanker.js.map +0 -1
- package/StylesProviderCorcoran.js +0 -29
- package/StylesProviderCorcoran.js.map +0 -1
- package/StylesProviderDenaliBoss.js +0 -29
- package/StylesProviderDenaliBoss.js.map +0 -1
- package/StylesProviderEra.js +0 -29
- package/StylesProviderEra.js.map +0 -1
- package/StylesProviderSothebys.js +0 -29
- package/StylesProviderSothebys.js.map +0 -1
- package/Switch.js.map +0 -1
- package/SwitchGroup.js +0 -18
- package/SwitchGroup.js.map +0 -1
- package/SwitchOption.js +0 -16
- package/SwitchOption.js.map +0 -1
- package/TabGroup.js.map +0 -1
- package/Table.js.map +0 -1
- package/Tag.js.map +0 -1
- package/TextField.js +0 -19
- package/TextField.js.map +0 -1
- package/TextInput.js.map +0 -1
- package/Textarea.js.map +0 -1
- package/TextareaField.js +0 -26
- package/TextareaField.js.map +0 -1
- package/TimePicker.d.ts +0 -16
- package/TimePicker.js +0 -18
- package/TimePicker.js.map +0 -1
- package/ToggleOption.js.map +0 -1
- package/Tooltip.js +0 -104
- package/Tooltip.js.map +0 -1
- package/TopNavigation.js +0 -18
- package/TopNavigation.js.map +0 -1
- package/Txt.js.map +0 -1
- package/hooks/useCheckboxGroupState.js.map +0 -1
- package/hooks/useCheckboxState.js.map +0 -1
- package/hooks/useFloating.js.map +0 -1
- package/hooks/useFloatingMenu.js.map +0 -1
- package/hooks/useId.js.map +0 -1
- package/hooks/useKeyboardNavigation.js.map +0 -1
- package/hooks/useLongPress.js.map +0 -1
- package/hooks/useModalState.js.map +0 -1
- package/hooks/useNavOptions.js.map +0 -1
- package/hooks/useOutsideClick.js.map +0 -1
- package/hooks/useRadioState.js.map +0 -1
- package/hooks/useSwitchGroupState.js.map +0 -1
- package/hooks/useTimeout.js.map +0 -1
- package/hooks/useValidChildren.js.map +0 -1
- package/index.js.map +0 -1
- package/meta.d.ts +0 -44
- package/meta.js +0 -5789
- package/meta.js.map +0 -1
- package/src/Accordion.tsx +0 -33
- package/src/BottomNavigation.tsx +0 -33
- package/src/BottomSheet.tsx +0 -33
- package/src/Breadcrumb.tsx +0 -33
- package/src/ButtonDock.tsx +0 -33
- package/src/Chart.tsx +0 -33
- package/src/DatePicker.tsx +0 -33
- package/src/Drawer.tsx +0 -33
- package/src/FileUpload.tsx +0 -33
- package/src/Image.tsx +0 -33
- package/src/MultiSelection.tsx +0 -33
- package/src/NavigationRail.tsx +0 -33
- package/src/OTPInput.tsx +0 -33
- package/src/PageControl.tsx +0 -33
- package/src/PasswordInput.tsx +0 -33
- package/src/PhoneNumberInput.tsx +0 -33
- package/src/Rating.tsx +0 -29
- package/src/SliderInput.tsx +0 -29
- package/src/Snackbar.tsx +0 -29
- package/src/TimePicker.tsx +0 -29
- package/src/meta.ts +0 -6238
- package/src/package.json +0 -3
- package/src/styles/anywhere.css +0 -1693
- package/src/styles/anywhere.ts +0 -1694
- package/src/styles/base.ts +0 -161
- package/src/styles/better-homes-gardens.css +0 -1693
- package/src/styles/better-homes-gardens.ts +0 -1694
- package/src/styles/cartus.css +0 -1691
- package/src/styles/cartus.ts +0 -1692
- package/src/styles/century-21.css +0 -1689
- package/src/styles/century-21.ts +0 -1690
- package/src/styles/coldwell-banker.css +0 -1691
- package/src/styles/coldwell-banker.ts +0 -1692
- package/src/styles/corcoran.css +0 -1685
- package/src/styles/corcoran.ts +0 -1686
- package/src/styles/denali-boss.css +0 -1681
- package/src/styles/denali-boss.ts +0 -1682
- package/src/styles/era.css +0 -1685
- package/src/styles/era.ts +0 -1686
- package/src/styles/sothebys.css +0 -1677
- package/src/styles/sothebys.ts +0 -1678
- package/styles/anywhere.d.ts +0 -2
- package/styles/anywhere.js +0 -1697
- package/styles/anywhere.js.map +0 -1
- package/styles/base.d.ts +0 -2
- package/styles/base.js +0 -164
- package/styles/base.js.map +0 -1
- package/styles/better-homes-gardens.d.ts +0 -2
- package/styles/better-homes-gardens.js +0 -1697
- package/styles/better-homes-gardens.js.map +0 -1
- package/styles/cartus.d.ts +0 -2
- package/styles/cartus.js +0 -1695
- package/styles/cartus.js.map +0 -1
- package/styles/century-21.d.ts +0 -2
- package/styles/century-21.js +0 -1693
- package/styles/century-21.js.map +0 -1
- package/styles/coldwell-banker.d.ts +0 -2
- package/styles/coldwell-banker.js +0 -1695
- package/styles/coldwell-banker.js.map +0 -1
- package/styles/corcoran.d.ts +0 -2
- package/styles/corcoran.js +0 -1689
- package/styles/corcoran.js.map +0 -1
- package/styles/denali-boss.d.ts +0 -2
- package/styles/denali-boss.js +0 -1685
- package/styles/denali-boss.js.map +0 -1
- package/styles/era.d.ts +0 -2
- package/styles/era.js +0 -1689
- package/styles/era.js.map +0 -1
- package/styles/sothebys.d.ts +0 -2
- package/styles/sothebys.js +0 -1681
- package/styles/sothebys.js.map +0 -1
- package/utils/children.js.map +0 -1
- package/utils/colorVariants.d.ts +0 -5
- package/utils/colorVariants.js +0 -61
- package/utils/colorVariants.js.map +0 -1
- package/utils/errors.js.map +0 -1
- package/utils/getValidNode.js.map +0 -1
- package/utils/keyboard.js.map +0 -1
- package/utils/ref.js.map +0 -1
- package/utils/scrollElementIntoView.js.map +0 -1
- package/utils/srOnly.js.map +0 -1
- package/utils/tryIntPsrse.js.map +0 -1
- package/utils/txtVariants.d.ts +0 -2
- package/utils/txtVariants.js.map +0 -1
- /package/{Portal.d.ts → dist/Portal.d.ts} +0 -0
- /package/{hooks → dist/hooks}/useCheckboxState.d.ts +0 -0
- /package/{hooks → dist/hooks}/useFloating.d.ts +0 -0
- /package/{hooks → dist/hooks}/useFloatingMenu.d.ts +0 -0
- /package/{hooks → dist/hooks}/useId.d.ts +0 -0
- /package/{hooks → dist/hooks}/useKeyboardNavigation.d.ts +0 -0
- /package/{hooks → dist/hooks}/useLongPress.d.ts +0 -0
- /package/{hooks → dist/hooks}/useModalState.d.ts +0 -0
- /package/{hooks → dist/hooks}/useNavOptions.d.ts +0 -0
- /package/{hooks → dist/hooks}/useOutsideClick.d.ts +0 -0
- /package/{hooks → dist/hooks}/useRadioState.d.ts +0 -0
- /package/{hooks → dist/hooks}/useTimeout.d.ts +0 -0
- /package/{hooks → dist/hooks}/useValidChildren.d.ts +0 -0
- /package/{index.d.ts → dist/index.d.ts} +0 -0
- /package/{utils → dist/utils}/children.d.ts +0 -0
- /package/{utils → dist/utils}/getValidNode.d.ts +0 -0
- /package/{utils → dist/utils}/keyboard.d.ts +0 -0
- /package/{utils → dist/utils}/ref.d.ts +0 -0
- /package/{utils → dist/utils}/scrollElementIntoView.d.ts +0 -0
- /package/{utils → dist/utils}/srOnly.d.ts +0 -0
- /package/{utils → dist/utils}/tryIntPsrse.d.ts +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import './dropdown.scss';
|
|
1
2
|
import { MenuProps } from './Menu';
|
|
2
3
|
import { Placement } from './hooks/useFloating';
|
|
3
4
|
import { CommonProps } from './';
|
|
@@ -41,10 +42,9 @@ export type DropdownProps<O extends DropdownOption = DropdownOption> = CommonPro
|
|
|
41
42
|
*
|
|
42
43
|
* @name Dropdown
|
|
43
44
|
*/
|
|
44
|
-
declare function Dropdown<O extends DropdownOption = DropdownOption>({ options, value: selected, onChange, 'aria-label': ariaLabel, placeholder, size, itemCount, disabled, id: propId, invalid, readOnly, placement, name, isMulti, renderListItem, style: styleProp, }: DropdownProps<O>): import("
|
|
45
|
+
declare function Dropdown<O extends DropdownOption = DropdownOption>({ options, value: selected, onChange, 'aria-label': ariaLabel, placeholder, size, itemCount, disabled, id: propId, invalid, readOnly, placement, name, isMulti, renderListItem, style: styleProp, }: DropdownProps<O>): import("react/jsx-runtime").JSX.Element;
|
|
45
46
|
declare namespace Dropdown {
|
|
46
47
|
var bspkName: string;
|
|
47
48
|
}
|
|
48
49
|
export { Dropdown };
|
|
49
|
-
export declare const style: import("@emotion/react").SerializedStyles;
|
|
50
50
|
/** Copyright 2025 Anywhere Real Estate - CC BY 4.0 */
|
package/dist/Dropdown.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { SvgChevronRight } from '@bspk/icons/ChevronRight';
|
|
3
|
+
import { styleAdd } from './utils/styleAdd';
|
|
4
|
+
styleAdd(`[data-bspk=dropdown]{--dropdown-background: var(--surface-neutral-t1-base);--dropdown-border-color: var(--stroke-neutral-base);--dropdown-text-color: var(--foreground-neutral-on-surface);--dropdown-height: var(--spacing-sizing-10);--dropdown-font: var(--body-base);--dropdown-clear-height: var(--spacing-sizing-05);--dropdown-padding: var(--spacing-sizing-03);--dropdown-icon-width: var(--spacing-sizing-05);position:relative;width:100%;max-width:280px;outline:unset;min-height:var(--dropdown-height);max-height:var(--dropdown-height);display:flex;flex-direction:row;gap:var(--spacing-sizing-02);flex-grow:0;flex-shrink:0;text-align:left;font:var(--dropdown-font);border:1px solid var(--dropdown-border-color);border-radius:var(--radius-small);background:var(--dropdown-background);padding:0 var(--dropdown-padding)}[data-bspk=dropdown] [data-placeholder]{display:block;max-width:100%;text-overflow:ellipsis;overflow:hidden;padding:0}[data-bspk=dropdown] [data-placeholder] [data-inner]{min-height:auto;padding:0}[data-bspk=dropdown] [data-placeholder] [data-item-label] [data-text]{color:var(--dropdown-text-color)}[data-bspk=dropdown] [data-svg]{display:flex;flex-direction:column;justify-content:center}[data-bspk=dropdown] [data-svg] svg{transform:rotate(90deg);width:var(--dropdown-icon-width)}[data-bspk=dropdown][data-size=small]{--dropdown-height: var(--spacing-sizing-08);--dropdown-font: var(--body-small);--dropdown-clear-height: var(--spacing-sizing-05);--dropdown-padding: var(--spacing-sizing-02);--dropdown-icon-width: var(--spacing-sizing-05)}[data-bspk=dropdown][data-size=large]{--dropdown-height: var(--spacing-sizing-12);--dropdown-font: var(--body-large);--dropdown-clear-height: var(--spacing-sizing-06);--dropdown-icon-width: var(--spacing-sizing-06)}[data-bspk=dropdown]:disabled{--dropdown-text-color: var(--foreground-neutral-disabled-on-surface);--dropdown-border-color: var(--stroke-neutral-disabled-light);--dropdown-background: linear-gradient(var(--interactions-disabled-opacity), var(--interactions-disabled-opacity)), linear-gradient(var(--surface-neutral-t1-base), var(--surface-neutral-t1-base))}[data-bspk=dropdown]:disabled[aria-readonly]:not([data-empty]){--dropdown-text-color: var(--foreground-neutral-on-surface)}[data-bspk=dropdown]:not(:disabled):focus{--dropdown-border-color: var(--stroke-brand-primary)}[data-bspk=dropdown]:not(:disabled):hover{--dropdown-background: linear-gradient(var(--interactions-neutral-hover-opacity), var(--interactions-neutral-hover-opacity)), linear-gradient(var(--surface-neutral-t1-base), var(--surface-neutral-t1-base))}[data-bspk=dropdown]:not(:disabled):active{--dropdown-background: linear-gradient(var(--interactions-neutral-press-opacity), var(--interactions-neutral-press-opacity)), linear-gradient(var(--surface-neutral-t1-base), var(--surface-neutral-t1-base))}[data-bspk=dropdown][data-invalid]{--dropdown-border-color: var(--status-error)}[data-bspk=dropdown][data-empty]{--dropdown-text-color: var(--foreground-neutral-on-surface-variant-03)}`);;
|
|
5
|
+
import { ListItem } from './ListItem';
|
|
6
|
+
import { Menu } from './Menu';
|
|
7
|
+
import { Portal } from './Portal';
|
|
8
|
+
import { useFloatingMenu } from './hooks/useFloatingMenu';
|
|
9
|
+
import { useId } from './hooks/useId';
|
|
10
|
+
/**
|
|
11
|
+
* A field element that allows users to select one option from a list of available choices. *
|
|
12
|
+
*
|
|
13
|
+
* @name Dropdown
|
|
14
|
+
*/
|
|
15
|
+
function Dropdown({ options = [], value: selected, onChange, 'aria-label': ariaLabel, placeholder = 'Select...', size = 'medium', itemCount = 5, disabled, id: propId, invalid, readOnly, placement = 'bottom', name, isMulti, renderListItem, style: styleProp, }) {
|
|
16
|
+
const id = useId(propId);
|
|
17
|
+
const { triggerProps, menuProps, closeMenu } = useFloatingMenu({
|
|
18
|
+
placement,
|
|
19
|
+
triggerProps: {
|
|
20
|
+
disabled,
|
|
21
|
+
invalid,
|
|
22
|
+
readOnly,
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
const dropdownLabel = isMulti
|
|
26
|
+
? `${selected?.length || 0} option${selected?.length !== 1 ? 's' : ''} selected`
|
|
27
|
+
: options.find((o) => o.value === selected?.[0])?.label;
|
|
28
|
+
return (_jsxs(_Fragment, { children: [_jsx("input", { defaultValue: selected, name: name, type: "hidden" }), _jsxs("button", { "aria-label": ariaLabel, "data-bspk": "dropdown", "data-empty": dropdownLabel ? undefined : '', "data-invalid": invalid || undefined, "data-size": size, disabled: disabled || readOnly, id: id, style: styleProp, ...triggerProps, children: [_jsx(ListItem, { "data-placeholder": "", label: dropdownLabel || placeholder, readOnly: true }), _jsx("span", { "data-svg": true, children: _jsx(SvgChevronRight, {}) })] }), _jsx(Portal, { children: _jsx(Menu, { "data-floating": true, isMulti: isMulti, itemCount: itemCount, items: options, onChange: (selectedValues, event) => {
|
|
29
|
+
event?.preventDefault();
|
|
30
|
+
if (!isMulti)
|
|
31
|
+
closeMenu();
|
|
32
|
+
onChange?.(selectedValues);
|
|
33
|
+
}, renderListItem: renderListItem, selectedValues: selected, ...menuProps }) })] }));
|
|
34
|
+
}
|
|
35
|
+
Dropdown.bspkName = 'Dropdown';
|
|
36
|
+
export { Dropdown };
|
|
37
|
+
//# sourceMappingURL=Dropdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dropdown.js","sourceRoot":"","sources":["../src/Dropdown.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,iBAAiB,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,IAAI,EAAa,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AA4CtC;;;;GAIG;AACH,SAAS,QAAQ,CAA4C,EACzD,OAAO,GAAG,EAAE,EACZ,KAAK,EAAE,QAAQ,EACf,QAAQ,EACR,YAAY,EAAE,SAAS,EACvB,WAAW,GAAG,WAAW,EACzB,IAAI,GAAG,QAAQ,EACf,SAAS,GAAG,CAAC,EACb,QAAQ,EACR,EAAE,EAAE,MAAM,EACV,OAAO,EACP,QAAQ,EACR,SAAS,GAAG,QAAQ,EACpB,IAAI,EACJ,OAAO,EACP,cAAc,EACd,KAAK,EAAE,SAAS,GACD;IACf,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAEzB,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC;QAC3D,SAAS;QACT,YAAY,EAAE;YACV,QAAQ;YACR,OAAO;YACP,QAAQ;SACX;KACJ,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,OAAO;QACzB,CAAC,CAAC,GAAG,QAAQ,EAAE,MAAM,IAAI,CAAC,UAAU,QAAQ,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW;QAChF,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IAE5D,OAAO,CACH,8BACI,gBAAO,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,QAAQ,GAAG,EAC3D,gCACgB,SAAS,eACX,UAAU,gBACR,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,kBAC5B,OAAO,IAAI,SAAS,eACvB,IAAI,EACf,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAC9B,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,SAAS,KACZ,YAAY,aAEhB,KAAC,QAAQ,wBAAkB,EAAE,EAAC,KAAK,EAAE,aAAa,IAAI,WAAW,EAAE,QAAQ,SAAG,EAC9E,2CACI,KAAC,eAAe,KAAG,GAChB,IACF,EACT,KAAC,MAAM,cACH,KAAC,IAAI,2BAED,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,CAAC,cAAc,EAAE,KAAK,EAAE,EAAE;wBAChC,KAAK,EAAE,cAAc,EAAE,CAAC;wBACxB,IAAI,CAAC,OAAO;4BAAE,SAAS,EAAE,CAAC;wBAC1B,QAAQ,EAAE,CAAC,cAAc,CAAC,CAAC;oBAC/B,CAAC,EACD,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,QAAQ,KACpB,SAAS,GACf,GACG,IACV,CACN,CAAC;AACN,CAAC;AAED,QAAQ,CAAC,QAAQ,GAAG,UAAU,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -8,7 +8,7 @@ export type DropdownFieldProps = Pick<DropdownProps, 'disabled' | 'itemCount' |
|
|
|
8
8
|
*
|
|
9
9
|
* @name DropdownField
|
|
10
10
|
*/
|
|
11
|
-
declare function DropdownField({ label, errorMessage: errorMessageProp, helperText, controlId: id, labelTrailing, required, ...dropdownProps }: DropdownFieldProps): import("
|
|
11
|
+
declare function DropdownField({ label, errorMessage: errorMessageProp, helperText, controlId: id, labelTrailing, required, ...dropdownProps }: DropdownFieldProps): import("react/jsx-runtime").JSX.Element;
|
|
12
12
|
declare namespace DropdownField {
|
|
13
13
|
var bspkName: string;
|
|
14
14
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { jsx } from
|
|
2
|
-
import { Dropdown } from './Dropdown
|
|
3
|
-
import { FormField } from './FormField
|
|
4
|
-
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Dropdown } from './Dropdown';
|
|
3
|
+
import { FormField } from './FormField';
|
|
5
4
|
/**
|
|
6
5
|
* A component that allows users to input large amounts of text that could span multiple lines.
|
|
7
6
|
*
|
|
@@ -11,9 +10,8 @@ import { FormField } from './FormField.js';
|
|
|
11
10
|
*/
|
|
12
11
|
function DropdownField({ label, errorMessage: errorMessageProp, helperText, controlId: id, labelTrailing, required, ...dropdownProps }) {
|
|
13
12
|
const errorMessage = (!dropdownProps.readOnly && !dropdownProps.disabled && errorMessageProp) || undefined;
|
|
14
|
-
return (
|
|
13
|
+
return (_jsx(FormField, { controlId: id, "data-bspk": "dropdown-field", errorMessage: errorMessage, helperText: helperText, label: label, labelTrailing: labelTrailing, required: required, children: (fieldProps) => (_jsx(Dropdown, { ...dropdownProps, ...fieldProps, "aria-label": label, id: id, invalid: !!errorMessage })) }));
|
|
15
14
|
}
|
|
16
15
|
DropdownField.bspkName = 'DropdownField';
|
|
17
|
-
|
|
18
16
|
export { DropdownField };
|
|
19
|
-
//# sourceMappingURL=DropdownField.js.map
|
|
17
|
+
//# sourceMappingURL=DropdownField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DropdownField.js","sourceRoot":"","sources":["../src/DropdownField.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAiB,QAAQ,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAkB,SAAS,EAAE,MAAM,aAAa,CAAC;AAiBxD;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,EACnB,KAAK,EACL,YAAY,EAAE,gBAAgB,EAC9B,UAAU,EACV,SAAS,EAAE,EAAE,EACb,aAAa,EACb,QAAQ,EACR,GAAG,aAAa,EACC;IACjB,MAAM,YAAY,GAAG,CAAC,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,IAAI,gBAAgB,CAAC,IAAI,SAAS,CAAC;IAE3G,OAAO,CACH,KAAC,SAAS,IACN,SAAS,EAAE,EAAE,eACH,gBAAgB,EAC1B,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,QAAQ,YAEjB,CAAC,UAAU,EAAE,EAAE,CAAC,CACb,KAAC,QAAQ,OAAK,aAAa,KAAM,UAAU,gBAAc,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,YAAY,GAAI,CACtG,GACO,CACf,CAAC;AACN,CAAC;AAED,aAAa,CAAC,QAAQ,GAAG,eAAe,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -15,6 +15,12 @@ export type EmptyStateProps = {
|
|
|
15
15
|
* @required
|
|
16
16
|
*/
|
|
17
17
|
body: string;
|
|
18
|
+
/**
|
|
19
|
+
* The text alignment of the body.
|
|
20
|
+
*
|
|
21
|
+
* @default center
|
|
22
|
+
*/
|
|
23
|
+
bodyAlign?: 'center' | 'left' | 'right';
|
|
18
24
|
/**
|
|
19
25
|
* This property may be undefined or an object containing required CallToActionButton properties.
|
|
20
26
|
*
|
|
@@ -27,7 +33,7 @@ export type EmptyStateProps = {
|
|
|
27
33
|
*
|
|
28
34
|
* @name EmptyState
|
|
29
35
|
*/
|
|
30
|
-
declare function EmptyState({ children, header, body, callToAction }: EmptyStateProps): import("
|
|
36
|
+
declare function EmptyState({ children, header, body, callToAction, bodyAlign }: EmptyStateProps): import("react/jsx-runtime").JSX.Element;
|
|
31
37
|
declare namespace EmptyState {
|
|
32
38
|
var bspkName: string;
|
|
33
39
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Button } from './Button';
|
|
3
|
+
import { Layout } from './Layout';
|
|
4
|
+
import { Txt } from './Txt';
|
|
5
|
+
/**
|
|
6
|
+
* A design pattern component that indicates to users that system has no content to display.
|
|
7
|
+
*
|
|
8
|
+
* @name EmptyState
|
|
9
|
+
*/
|
|
10
|
+
function EmptyState({ children, header, body, callToAction, bodyAlign = 'center' }) {
|
|
11
|
+
return (_jsxs(Layout, { align: "center", column: true, "data-bspk": "empty-state", style: {
|
|
12
|
+
margin: 'var(--spacing-sizing-04)',
|
|
13
|
+
maxWidth: '500px',
|
|
14
|
+
}, children: [children, _jsxs(Layout, { align: "center", column: true, gap: "4", children: [_jsx(Txt, { as: "header", variant: "heading-h5", children: header }), _jsx(Txt, { as: "p", style: { textAlign: bodyAlign }, variant: "body-base", children: body })] }), callToAction && (_jsx(Button, { label: callToAction.label, onClick: callToAction.onClick, size: callToAction.size || 'medium', variant: "primary" }))] }));
|
|
15
|
+
}
|
|
16
|
+
EmptyState.bspkName = 'EmptyState';
|
|
17
|
+
export { EmptyState };
|
|
18
|
+
//# sourceMappingURL=EmptyState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmptyState.js","sourceRoot":"","sources":["../src/EmptyState.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAiC5B;;;;GAIG;AACH,SAAS,UAAU,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,GAAG,QAAQ,EAAmB;IAC/F,OAAO,CACH,MAAC,MAAM,IACH,KAAK,EAAC,QAAQ,EACd,MAAM,qBACI,aAAa,EACvB,KAAK,EAAE;YACH,MAAM,EAAE,0BAA0B;YAClC,QAAQ,EAAE,OAAO;SACpB,aAEA,QAAQ,EACT,MAAC,MAAM,IAAC,KAAK,EAAC,QAAQ,EAAC,MAAM,QAAC,GAAG,EAAC,GAAG,aACjC,KAAC,GAAG,IAAC,EAAE,EAAC,QAAQ,EAAC,OAAO,EAAC,YAAY,YAChC,MAAM,GACL,EACN,KAAC,GAAG,IAAC,EAAE,EAAC,GAAG,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,OAAO,EAAC,WAAW,YAC3D,IAAI,GACH,IACD,EACR,YAAY,IAAI,CACb,KAAC,MAAM,IACH,KAAK,EAAE,YAAY,CAAC,KAAK,EACzB,OAAO,EAAE,YAAY,CAAC,OAAO,EAC7B,IAAI,EAAE,YAAY,CAAC,IAAI,IAAI,QAAQ,EACnC,OAAO,EAAC,SAAS,GACnB,CACL,IACI,CACZ,CAAC;AACN,CAAC;AAED,UAAU,CAAC,QAAQ,GAAG,YAAY,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import './fab.scss';
|
|
1
2
|
import { ElementType } from 'react';
|
|
2
3
|
import { ButtonProps } from './Button';
|
|
3
4
|
import { ElementProps } from './';
|
|
@@ -34,10 +35,9 @@ export type FabProps<As extends ElementType = 'button'> = Pick<ButtonProps<As>,
|
|
|
34
35
|
*
|
|
35
36
|
* @name Fab
|
|
36
37
|
*/
|
|
37
|
-
declare function Fab<As extends ElementType = 'button'>({ size, variant, showLabel: showLabelProp, as, placement, container, label, icon, toolTip, ...otherProps }: ElementProps<FabProps<As>, As>): import("
|
|
38
|
+
declare function Fab<As extends ElementType = 'button'>({ size, variant, showLabel: showLabelProp, as, placement, container, label, icon, toolTip, ...otherProps }: ElementProps<FabProps<As>, As>): import("react/jsx-runtime").JSX.Element;
|
|
38
39
|
declare namespace Fab {
|
|
39
40
|
var bspkName: string;
|
|
40
41
|
}
|
|
41
42
|
export { Fab };
|
|
42
|
-
export declare const style: import("@emotion/react").SerializedStyles;
|
|
43
43
|
/** Copyright 2025 Anywhere Real Estate - CC BY 4.0 */
|
package/dist/Fab.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { styleAdd } from './utils/styleAdd';
|
|
3
|
+
styleAdd(`[data-bspk=fab]{--placement-offset: var(--spacing-sizing-04);display:flex;flex-direction:row;align-items:center;justify-content:center;gap:var(--spacing-sizing-02);border:none;cursor:pointer;box-sizing:border-box;text-decoration:none;z-index:var(--z-index-fab);box-shadow:var(--drop-shadow-float);border-radius:var(--radius-small);background:var(--variant-background);color:var(--variant-foreground);--variant-gradient: linear-gradient(var(--variant-background), var(--variant-background))}[data-bspk=fab][data-container=page]{position:fixed}[data-bspk=fab][data-container=local]{position:absolute}[data-bspk=fab][data-placement=top-right]{top:var(--placement-offset);right:var(--placement-offset)}[data-bspk=fab][data-placement=bottom-right]{bottom:var(--placement-offset);right:var(--placement-offset)}[data-bspk=fab][data-placement=top-left]{top:var(--placement-offset);left:var(--placement-offset)}[data-bspk=fab][data-placement=bottom-left]{bottom:var(--placement-offset);left:var(--placement-offset)}[data-bspk=fab]>[data-fab-icon]{display:flex;flex-direction:column;align-items:center}[data-bspk=fab]>[data-fab-label]{display:flex;flex-direction:row;align-items:center}[data-bspk=fab][data-size=small]{font:var(--labels-base);height:var(--spacing-sizing-10);padding:0 var(--spacing-sizing-04)}[data-bspk=fab][data-size=small]>[data-fab-icon]{width:var(--spacing-sizing-05)}[data-bspk=fab][data-size=medium]{font:var(--labels-large);height:var(--spacing-sizing-14);padding:0 var(--spacing-sizing-07)}[data-bspk=fab][data-size=medium]>[data-fab-icon]{width:var(--spacing-sizing-06)}[data-bspk=fab][data-variant=primary]{--variant-background: var(--surface-brand-primary);--variant-foreground: var(--foreground-brand-on-primary)}[data-bspk=fab][data-variant=secondary]{--variant-background: var(--surface-brand-secondary);--variant-foreground: var(--foreground-brand-on-secondary)}[data-bspk=fab][data-variant=neutral]{--variant-background: var(--surface-neutral-t1-base);--variant-foreground: var(--foreground-neutral-on-surface-variant-01)}[data-pseudo=hover]>[data-bspk=fab],[data-bspk=fab]:hover{background:linear-gradient(var(--interactions-brand-hover-opacity), var(--interactions-brand-hover-opacity)),var(--variant-gradient)}[data-pseudo=active]>[data-bspk=fab],[data-bspk=fab]:active{background:linear-gradient(var(--interactions-brand-press-opacity), var(--interactions-brand-press-opacity)),var(--variant-gradient)}[data-pseudo=focus]>[data-bspk=fab],[data-bspk=fab]:focus-visible{outline:solid 2px var(--stroke-neutral-focus)}[data-bspk=fab][data-round]{border-radius:var(--radius-circular);aspect-ratio:1/1;padding:0}`);;
|
|
4
|
+
import { Tooltip } from './Tooltip';
|
|
5
|
+
import { isValidIcon } from './utils/children';
|
|
6
|
+
import { useErrorLogger } from './utils/errors';
|
|
7
|
+
/**
|
|
8
|
+
* A button that highlights a primary action that is elevated above the body content of a page; normally fixed to the
|
|
9
|
+
* bottom right of a screen.
|
|
10
|
+
*
|
|
11
|
+
* @name Fab
|
|
12
|
+
*/
|
|
13
|
+
function Fab({ size = 'small', variant = 'primary', showLabel: showLabelProp = true, as, placement = 'bottom-right', container = 'local', label, icon, toolTip, ...otherProps }) {
|
|
14
|
+
// ignore showLabel=false if there is no icon
|
|
15
|
+
const hideLabel = showLabelProp === false && icon;
|
|
16
|
+
const { logError } = useErrorLogger();
|
|
17
|
+
logError(!!icon && !isValidIcon(icon), 'Button - The icon prop must be a valid icon element.');
|
|
18
|
+
const As = as || 'button';
|
|
19
|
+
const button = (_jsxs(As, { ...otherProps, "aria-label": label, "data-bspk": "fab", "data-container": container, "data-placement": placement, "data-round": hideLabel || undefined, "data-size": size, "data-variant": variant, children: [!!icon && _jsx("span", { "data-fab-icon": true, children: icon }), !hideLabel && _jsx("span", { "data-fab-label": true, children: label })] }));
|
|
20
|
+
return toolTip || hideLabel ? (_jsx(Tooltip, { label: toolTip || label, placement: "top", children: button })) : (button);
|
|
21
|
+
}
|
|
22
|
+
Fab.bspkName = 'Fab';
|
|
23
|
+
export { Fab };
|
|
24
|
+
//# sourceMappingURL=Fab.js.map
|
package/dist/Fab.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Fab.js","sourceRoot":"","sources":["../src/Fab.tsx"],"names":[],"mappings":";AAAA,OAAO,YAAY,CAAC;AAIpB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAqChD;;;;;GAKG;AACH,SAAS,GAAG,CAAoC,EAC5C,IAAI,GAAG,OAAO,EACd,OAAO,GAAG,SAAS,EACnB,SAAS,EAAE,aAAa,GAAG,IAAI,EAC/B,EAAE,EACF,SAAS,GAAG,cAAc,EAC1B,SAAS,GAAG,OAAO,EACnB,KAAK,EACL,IAAI,EACJ,OAAO,EACP,GAAG,UAAU,EACgB;IAC7B,6CAA6C;IAC7C,MAAM,SAAS,GAAG,aAAa,KAAK,KAAK,IAAI,IAAI,CAAC;IAElD,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc,EAAE,CAAC;IACtC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,sDAAsD,CAAC,CAAC;IAE/F,MAAM,EAAE,GAAgB,EAAE,IAAI,QAAQ,CAAC;IAEvC,MAAM,MAAM,GAAG,CACX,MAAC,EAAE,OACK,UAAU,gBACF,KAAK,eACP,KAAK,oBACC,SAAS,oBACT,SAAS,gBACb,SAAS,IAAI,SAAS,eACvB,IAAI,kBACD,OAAO,aAEpB,CAAC,CAAC,IAAI,IAAI,gDAAqB,IAAI,GAAQ,EAC3C,CAAC,SAAS,IAAI,iDAAsB,KAAK,GAAQ,IACjD,CACR,CAAC;IAEF,OAAO,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,CAC1B,KAAC,OAAO,IAAC,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,SAAS,EAAC,KAAK,YAC5C,MAAM,GACD,CACb,CAAC,CAAC,CAAC,CACA,MAAM,CACT,CAAC;AACN,CAAC;AAED,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC;AAErB,OAAO,EAAE,GAAG,EAAE,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import './form-field.scss';
|
|
1
2
|
import { CommonProps } from './';
|
|
2
3
|
export type FieldControlProps = {
|
|
3
4
|
/**
|
|
@@ -39,10 +40,9 @@ export type FormFieldProps = CommonProps<'errorMessage' | 'required'> & {
|
|
|
39
40
|
*
|
|
40
41
|
* @name FormField
|
|
41
42
|
*/
|
|
42
|
-
declare function FormField({ label, errorMessage, helperText, children, labelTrailing, controlId, required }: FormFieldProps): import("
|
|
43
|
+
declare function FormField({ label, errorMessage, helperText, children, labelTrailing, controlId, required }: FormFieldProps): import("react/jsx-runtime").JSX.Element | null;
|
|
43
44
|
declare namespace FormField {
|
|
44
45
|
var bspkName: string;
|
|
45
46
|
}
|
|
46
47
|
export { FormField };
|
|
47
|
-
export declare const style: import("@emotion/react").SerializedStyles;
|
|
48
48
|
/** Copyright 2025 Anywhere Real Estate - CC BY 4.0 */
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { styleAdd } from './utils/styleAdd';
|
|
3
|
+
styleAdd(`[data-bspk=form-field]{box-sizing:border-box;width:100%;display:flex;flex-direction:column;gap:var(--spacing-sizing-01)}[data-bspk=form-field] header label{flex-grow:1}`);;
|
|
4
|
+
import { InlineAlert } from './InlineAlert';
|
|
5
|
+
import { Layout } from './Layout';
|
|
6
|
+
import { Txt } from './Txt';
|
|
7
|
+
/**
|
|
8
|
+
* Wrapper component for form controls.
|
|
9
|
+
*
|
|
10
|
+
* Children may be one of the following: TextInput, Dropdown, DatePicker, or TimePicker.
|
|
11
|
+
*
|
|
12
|
+
* @name FormField
|
|
13
|
+
*/
|
|
14
|
+
function FormField({ label, errorMessage, helperText, children, labelTrailing, controlId, required }) {
|
|
15
|
+
const errorMessageId = errorMessage && `${controlId}-error-message`;
|
|
16
|
+
const helperTextId = helperText && `${controlId}-helper-text`;
|
|
17
|
+
if (typeof children !== 'function')
|
|
18
|
+
return null;
|
|
19
|
+
return (_jsxs("div", { "data-bspk": "form-field", children: [_jsxs(Layout, { as: "header", children: [_jsxs("label", { htmlFor: controlId, children: [_jsx(Txt, { as: "span", variant: "labels-small", children: label }), required && (_jsx(Txt, { as: "span", variant: "body-small", children: ' (Required)' }))] }), labelTrailing] }), children({
|
|
20
|
+
invalid: !!errorMessage,
|
|
21
|
+
'aria-describedby': helperTextId,
|
|
22
|
+
'aria-errormessage': errorMessageId,
|
|
23
|
+
}), errorMessage && (_jsx(InlineAlert, { id: errorMessageId, variant: "error", children: errorMessage })), helperText && (_jsx(Txt, { id: helperTextId, variant: "body-small", children: helperText }))] }));
|
|
24
|
+
}
|
|
25
|
+
FormField.bspkName = 'FormField';
|
|
26
|
+
export { FormField };
|
|
27
|
+
//# sourceMappingURL=FormField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormField.js","sourceRoot":"","sources":["../src/FormField.tsx"],"names":[],"mappings":";AAAA,OAAO,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAuC5B;;;;;;GAMG;AACH,SAAS,SAAS,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAkB;IAChH,MAAM,cAAc,GAAG,YAAY,IAAI,GAAG,SAAS,gBAAgB,CAAC;IACpE,MAAM,YAAY,GAAG,UAAU,IAAI,GAAG,SAAS,cAAc,CAAC;IAE9D,IAAI,OAAO,QAAQ,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAEhD,OAAO,CACH,4BAAe,YAAY,aACvB,MAAC,MAAM,IAAC,EAAE,EAAC,QAAQ,aACf,iBAAO,OAAO,EAAE,SAAS,aACrB,KAAC,GAAG,IAAC,EAAE,EAAC,MAAM,EAAC,OAAO,EAAC,cAAc,YAChC,KAAK,GACJ,EACL,QAAQ,IAAI,CACT,KAAC,GAAG,IAAC,EAAE,EAAC,MAAM,EAAC,OAAO,EAAC,YAAY,YAC9B,aAAa,GACZ,CACT,IACG,EACP,aAAa,IACT,EACR,QAAQ,CAAC;gBACN,OAAO,EAAE,CAAC,CAAC,YAAY;gBACvB,kBAAkB,EAAE,YAAY;gBAChC,mBAAmB,EAAE,cAAc;aACtC,CAAC,EACD,YAAY,IAAI,CACb,KAAC,WAAW,IAAC,EAAE,EAAE,cAAc,EAAE,OAAO,EAAC,OAAO,YAC3C,YAAY,GACH,CACjB,EACA,UAAU,IAAI,CACX,KAAC,GAAG,IAAC,EAAE,EAAE,YAAY,EAAE,OAAO,EAAC,YAAY,YACtC,UAAU,GACT,CACT,IACC,CACT,CAAC;AACN,CAAC;AAED,SAAS,CAAC,QAAQ,GAAG,WAAW,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -18,7 +18,7 @@ export type ImgProps = {
|
|
|
18
18
|
*
|
|
19
19
|
* @name Img
|
|
20
20
|
*/
|
|
21
|
-
declare function Img({ alt, ...props }: ElementProps<ImgProps, 'img'>): import("
|
|
21
|
+
declare function Img({ alt, ...props }: ElementProps<ImgProps, 'img'>): import("react/jsx-runtime").JSX.Element;
|
|
22
22
|
declare namespace Img {
|
|
23
23
|
var bspkName: string;
|
|
24
24
|
}
|
package/dist/Img.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* The Img component is used to display images on the page.
|
|
4
|
+
*
|
|
5
|
+
* @name Img
|
|
6
|
+
*/
|
|
7
|
+
function Img({ alt, ...props }) {
|
|
8
|
+
return _jsx("img", { ...props, alt: alt, "data-bspk": "img" });
|
|
9
|
+
}
|
|
10
|
+
Img.bspkName = 'Img';
|
|
11
|
+
export { Img };
|
|
12
|
+
//# sourceMappingURL=Img.js.map
|
package/dist/Img.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Img.js","sourceRoot":"","sources":["../src/Img.tsx"],"names":[],"mappings":";AAiBA;;;;GAIG;AACH,SAAS,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,EAAiC;IACzD,OAAO,iBAAS,KAAK,EAAE,GAAG,EAAE,GAAG,eAAY,KAAK,GAAG,CAAC;AACxD,CAAC;AAED,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC;AAErB,OAAO,EAAE,GAAG,EAAE,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import './inline-alert.scss';
|
|
1
2
|
import { AlertVariant } from './';
|
|
2
3
|
export type InlineAlertProps = {
|
|
3
4
|
/**
|
|
@@ -22,10 +23,9 @@ export type InlineAlertProps = {
|
|
|
22
23
|
*
|
|
23
24
|
* @name InlineAlert
|
|
24
25
|
*/
|
|
25
|
-
declare function InlineAlert({ children, variant, id }: InlineAlertProps): import("
|
|
26
|
+
declare function InlineAlert({ children, variant, id }: InlineAlertProps): import("react/jsx-runtime").JSX.Element;
|
|
26
27
|
declare namespace InlineAlert {
|
|
27
28
|
var bspkName: string;
|
|
28
29
|
}
|
|
29
30
|
export { InlineAlert };
|
|
30
|
-
export declare const style: import("@emotion/react").SerializedStyles;
|
|
31
31
|
/** Copyright 2025 Anywhere Real Estate - CC BY 4.0 */
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { SvgCheckCircleFill } from '@bspk/icons/CheckCircleFill';
|
|
3
|
+
import { SvgErrorFill } from '@bspk/icons/ErrorFill';
|
|
4
|
+
import { SvgInfoFill } from '@bspk/icons/InfoFill';
|
|
5
|
+
import { styleAdd } from './utils/styleAdd';
|
|
6
|
+
styleAdd(`[data-bspk=inline-alert]{display:flex;align-items:start;justify-content:center;flex-direction:row;gap:var(--spacing-sizing-02)}[data-bspk=inline-alert] [data-txt]{flex:1}[data-bspk=inline-alert][data-variant=error]{color:var(--status-error);--first-tone: var(--status-error);--second-tone: var(--status-on-information)}[data-bspk=inline-alert][data-variant=success]{color:var(--status-success);--first-tone: var(--status-success);--second-tone: var(--status-on-success)}[data-bspk=inline-alert][data-variant=warning]{color:var(--foreground-neutral-on-surface);--first-tone: var(--status-warning);--second-tone: var(--status-on-warning)}[data-bspk=inline-alert][data-variant=informational]{color:var(--status-information);--first-tone: var(--status-information);--second-tone: var(--status-on-information)}[data-bspk=inline-alert] svg{color:var(--first-tone);width:var(--spacing-sizing-05);height:var(--spacing-sizing-05)}[data-bspk=inline-alert] svg [data-second-tone]{fill:var(--second-tone)}`);;
|
|
7
|
+
import { Txt } from './Txt';
|
|
8
|
+
/**
|
|
9
|
+
* Inline alerts provide contextual feedback messages for typical user actions with a handful of available and flexible
|
|
10
|
+
* alert messages.
|
|
11
|
+
*
|
|
12
|
+
* @name InlineAlert
|
|
13
|
+
*/
|
|
14
|
+
function InlineAlert({ children, variant = 'informational', id }) {
|
|
15
|
+
return (_jsxs("div", { "data-bspk": "inline-alert", "data-variant": variant, id: id, children: [VARIANT_ICON[variant], _jsx(Txt, { variant: "body-small", children: children })] }));
|
|
16
|
+
}
|
|
17
|
+
InlineAlert.bspkName = 'InlineAlert';
|
|
18
|
+
export { InlineAlert };
|
|
19
|
+
// eslint-disable-next-line react/no-multi-comp
|
|
20
|
+
const SvgWarningTwoTone = () => (_jsxs("svg", { fill: "none", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: [_jsx("path", { d: "M2.72503 21C2.5417 21 2.37503 20.9542 2.22503 20.8625C2.07503 20.7708 1.95837 20.65 1.87503 20.5C1.7917 20.35 1.74587 20.1875 1.73753 20.0125C1.7292 19.8375 1.77503 19.6667 1.87503 19.5L11.125 3.5C11.225 3.33333 11.3542 3.20833 11.5125 3.125C11.6709 3.04167 11.8334 3 12 3C12.1667 3 12.3292 3.04167 12.4875 3.125C12.6459 3.20833 12.775 3.33333 12.875 3.5L22.125 19.5C22.225 19.6667 22.2709 19.8375 22.2625 20.0125C22.2542 20.1875 22.2084 20.35 22.125 20.5C22.0417 20.65 21.925 20.7708 21.775 20.8625C21.625 20.9542 21.4584 21 21.275 21H2.72503ZM12 18C12.2834 18 12.5209 17.9042 12.7125 17.7125C12.9042 17.5208 13 17.2833 13 17C13 16.7167 12.9042 16.4792 12.7125 16.2875C12.5209 16.0958 12.2834 16 12 16C11.7167 16 11.4792 16.0958 11.2875 16.2875C11.0959 16.4792 11 16.7167 11 17C11 17.2833 11.0959 17.5208 11.2875 17.7125C11.4792 17.9042 11.7167 18 12 18ZM12 15C12.2834 15 12.5209 14.9042 12.7125 14.7125C12.9042 14.5208 13 14.2833 13 14V11C13 10.7167 12.9042 10.4792 12.7125 10.2875C12.5209 10.0958 12.2834 10 12 10C11.7167 10 11.4792 10.0958 11.2875 10.2875C11.0959 10.4792 11 10.7167 11 11V14C11 14.2833 11.0959 14.5208 11.2875 14.7125C11.4792 14.9042 11.7167 15 12 15Z", fill: "currentColor" }), _jsx("path", { d: "M12.7125 17.7125C12.5208 17.9042 12.2833 18 12 18C11.7167 18 11.4792 17.9042 11.2875 17.7125C11.0958 17.5208 11 17.2833 11 17C11 16.7167 11.0958 16.4792 11.2875 16.2875C11.4792 16.0958 11.7167 16 12 16C12.2833 16 12.5208 16.0958 12.7125 16.2875C12.9042 16.4792 13 16.7167 13 17C13 17.2833 12.9042 17.5208 12.7125 17.7125Z", "data-second-tone": true }), _jsx("path", { d: "M12.7125 14.7125C12.5208 14.9042 12.2833 15 12 15C11.7167 15 11.4792 14.9042 11.2875 14.7125C11.0958 14.5208 11 14.2833 11 14V11C11 10.7167 11.0958 10.4792 11.2875 10.2875C11.4792 10.0958 11.7167 10 12 10C12.2833 10 12.5208 10.0958 12.7125 10.2875C12.9042 10.4792 13 10.7167 13 11V14C13 14.2833 12.9042 14.5208 12.7125 14.7125Z", "data-second-tone": true })] }));
|
|
21
|
+
const VARIANT_ICON = {
|
|
22
|
+
error: _jsx(SvgErrorFill, {}),
|
|
23
|
+
informational: _jsx(SvgInfoFill, {}),
|
|
24
|
+
success: _jsx(SvgCheckCircleFill, {}),
|
|
25
|
+
warning: _jsx(SvgWarningTwoTone, {}),
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=InlineAlert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InlineAlert.js","sourceRoot":"","sources":["../src/InlineAlert.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,qBAAqB,CAAC;AAG7B,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAsB5B;;;;;GAKG;AACH,SAAS,WAAW,CAAC,EAAE,QAAQ,EAAE,OAAO,GAAG,eAAe,EAAE,EAAE,EAAoB;IAC9E,OAAO,CACH,4BAAe,cAAc,kBAAe,OAAO,EAAE,EAAE,EAAE,EAAE,aACtD,YAAY,CAAC,OAAO,CAAC,EACtB,KAAC,GAAG,IAAC,OAAO,EAAC,YAAY,YAAE,QAAQ,GAAO,IACxC,CACT,CAAC;AACN,CAAC;AAED,WAAW,CAAC,QAAQ,GAAG,aAAa,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,CAAC;AAEvB,+CAA+C;AAC/C,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,CAC5B,eAAK,IAAI,EAAC,MAAM,EAAC,OAAO,EAAC,WAAW,EAAC,KAAK,EAAC,4BAA4B,aACnE,eACI,CAAC,EAAC,spCAAspC,EACxpC,IAAI,EAAC,cAAc,GACrB,EACF,eACI,CAAC,EAAC,mUAAmU,6BAEvU,EACF,eACI,CAAC,EAAC,yUAAyU,6BAE7U,IACA,CACT,CAAC;AAEF,MAAM,YAAY,GAAoC;IAClD,KAAK,EAAE,KAAC,YAAY,KAAG;IACvB,aAAa,EAAE,KAAC,WAAW,KAAG;IAC9B,OAAO,EAAE,KAAC,kBAAkB,KAAG;IAC/B,OAAO,EAAE,KAAC,iBAAiB,KAAG;CACjC,CAAC"}
|
|
@@ -40,7 +40,7 @@ export type LayoutProps<As extends ElementType = 'div'> = {
|
|
|
40
40
|
*
|
|
41
41
|
* @name Layout
|
|
42
42
|
*/
|
|
43
|
-
declare function Layout<As extends ElementType = 'div'>({ children, column, gap, style, as, align, justify, ...props }: ElementProps<LayoutProps<As>, As>): import("
|
|
43
|
+
declare function Layout<As extends ElementType = 'div'>({ children, column, gap, style, as, align, justify, ...props }: ElementProps<LayoutProps<As>, As>): import("react/jsx-runtime").JSX.Element;
|
|
44
44
|
declare namespace Layout {
|
|
45
45
|
var bspkName: string;
|
|
46
46
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { jsx } from
|
|
2
|
-
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
2
|
/**
|
|
4
3
|
* Utility component used within other components for layout purposes.
|
|
5
4
|
*
|
|
@@ -9,7 +8,7 @@ function Layout({ children, column, gap = '16', style, as, align = 'flex-start',
|
|
|
9
8
|
const As = as || 'div';
|
|
10
9
|
const alignItems = align || 'flex-start';
|
|
11
10
|
const justifyContent = justify || 'flex-start';
|
|
12
|
-
return (
|
|
11
|
+
return (_jsx(As, { ...props, "data-bspk": "layout", style: {
|
|
13
12
|
...style,
|
|
14
13
|
display: 'flex',
|
|
15
14
|
flexDirection: column ? 'column' : 'row',
|
|
@@ -19,6 +18,5 @@ function Layout({ children, column, gap = '16', style, as, align = 'flex-start',
|
|
|
19
18
|
}, children: children }));
|
|
20
19
|
}
|
|
21
20
|
Layout.bspkName = 'Layout';
|
|
22
|
-
|
|
23
21
|
export { Layout };
|
|
24
|
-
//# sourceMappingURL=Layout.js.map
|
|
22
|
+
//# sourceMappingURL=Layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Layout.js","sourceRoot":"","sources":["../src/Layout.tsx"],"names":[],"mappings":";AAwCA;;;;GAIG;AACH,SAAS,MAAM,CAAiC,EAC5C,QAAQ,EACR,MAAM,EACN,GAAG,GAAG,IAAI,EACV,KAAK,EACL,EAAE,EACF,KAAK,GAAG,YAAY,EACpB,OAAO,GAAG,YAAY,EACtB,GAAG,KAAK,EACwB;IAChC,MAAM,EAAE,GAAgB,EAAE,IAAI,KAAK,CAAC;IAEpC,MAAM,UAAU,GAAG,KAAK,IAAI,YAAY,CAAC;IACzC,MAAM,cAAc,GAAG,OAAO,IAAI,YAAY,CAAC;IAE/C,OAAO,CACH,KAAC,EAAE,OACK,KAAK,eACC,QAAQ,EAClB,KAAK,EAAE;YACH,GAAG,KAAK;YACR,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;YACxC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI;YAC5B,UAAU;YACV,cAAc;SACjB,YAEA,QAAQ,GACR,CACR,CAAC;AACN,CAAC;AAED,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAE3B,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import './link.scss';
|
|
1
2
|
import { AnchorHTMLAttributes } from 'react';
|
|
2
3
|
export type LinkProps = Pick<AnchorHTMLAttributes<unknown>, 'target'> & {
|
|
3
4
|
/**
|
|
@@ -29,10 +30,9 @@ export type LinkProps = Pick<AnchorHTMLAttributes<unknown>, 'target'> & {
|
|
|
29
30
|
*
|
|
30
31
|
* @name Link
|
|
31
32
|
*/
|
|
32
|
-
declare function Link({ label, trailingIcon, size, variant, ...props }: LinkProps): import("
|
|
33
|
+
declare function Link({ label, trailingIcon, size, variant, ...props }: LinkProps): import("react/jsx-runtime").JSX.Element;
|
|
33
34
|
declare namespace Link {
|
|
34
35
|
var bspkName: string;
|
|
35
36
|
}
|
|
36
37
|
export { Link };
|
|
37
|
-
export declare const style: import("@emotion/react").SerializedStyles;
|
|
38
38
|
/** Copyright 2025 Anywhere Real Estate - CC BY 4.0 */
|
package/dist/Link.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { SvgChevronRight } from '@bspk/icons/ChevronRight';
|
|
3
|
+
import { SvgLink } from '@bspk/icons/Link';
|
|
4
|
+
import { SvgOpenInNew } from '@bspk/icons/OpenInNew';
|
|
5
|
+
import { styleAdd } from './utils/styleAdd';
|
|
6
|
+
styleAdd(`[data-bspk=link]{display:flex;flex-direction:row;align-items:center;gap:var(--spacing-sizing-01);font:var(--labels-base)}[data-bspk=link][data-size=large]{font:var(--labels-large)}[data-bspk=link][data-size=small]{font:var(--labels-small)}[data-bspk=link] svg{width:var(--spacing-sizing-05)}`);;
|
|
7
|
+
/**
|
|
8
|
+
* This is the standalone link component. Inline links can use the native `a` element.
|
|
9
|
+
*
|
|
10
|
+
* @name Link
|
|
11
|
+
*/
|
|
12
|
+
function Link({ label, trailingIcon, size, variant, ...props }) {
|
|
13
|
+
return (_jsxs("a", { ...props, "data-bspk": "link", "data-size": size, "data-subtle": variant === 'subtle' || undefined, "data-subtle-inverse": variant === 'subtle-inverse' || undefined, rel: "noreferrer", target: trailingIcon === 'external' ? '_blank' : props.target, children: [_jsx("span", { children: label }), trailingIcon === 'external' && _jsx(SvgOpenInNew, {}), trailingIcon === 'chevron' && _jsx(SvgChevronRight, {}), trailingIcon === 'link' && _jsx(SvgLink, {})] }));
|
|
14
|
+
}
|
|
15
|
+
Link.bspkName = 'Link';
|
|
16
|
+
export { Link };
|
|
17
|
+
//# sourceMappingURL=Link.js.map
|
package/dist/Link.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Link.js","sourceRoot":"","sources":["../src/Link.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,aAAa,CAAC;AA6BrB;;;;GAIG;AACH,SAAS,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,EAAa;IACrE,OAAO,CACH,gBACQ,KAAK,eACC,MAAM,eACL,IAAI,iBACF,OAAO,KAAK,QAAQ,IAAI,SAAS,yBACzB,OAAO,KAAK,gBAAgB,IAAI,SAAS,EAC9D,GAAG,EAAC,YAAY,EAChB,MAAM,EAAE,YAAY,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,aAE7D,yBAAO,KAAK,GAAQ,EACnB,YAAY,KAAK,UAAU,IAAI,KAAC,YAAY,KAAG,EAC/C,YAAY,KAAK,SAAS,IAAI,KAAC,eAAe,KAAG,EACjD,YAAY,KAAK,MAAM,IAAI,KAAC,OAAO,KAAG,IACvC,CACP,CAAC;AACN,CAAC;AAED,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;AAEvB,OAAO,EAAE,IAAI,EAAE,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import './list-item.scss';
|
|
1
2
|
import { ElementType, ReactNode } from 'react';
|
|
2
3
|
import { ButtonProps } from './Button';
|
|
3
4
|
import { CommonProps, ElementProps } from './';
|
|
@@ -53,16 +54,15 @@ export type ListItemProps<As extends ElementType = 'div'> = CommonProps<'active'
|
|
|
53
54
|
*
|
|
54
55
|
* @name ListItem
|
|
55
56
|
*/
|
|
56
|
-
declare function ListItem<As extends ElementType = 'div'>({ as, disabled, invalid, leading: leadingProp, trailing: trailingProp, label, subText, active, readOnly, ...props }: ElementProps<ListItemProps<As>, As>): import("
|
|
57
|
+
declare function ListItem<As extends ElementType = 'div'>({ as, disabled, invalid, leading: leadingProp, trailing: trailingProp, label, subText, active, readOnly, ...props }: ElementProps<ListItemProps<As>, As>): import("react/jsx-runtime").JSX.Element | undefined;
|
|
57
58
|
declare namespace ListItem {
|
|
58
59
|
var bspkName: string;
|
|
59
60
|
var Button: typeof ListItemButton;
|
|
60
61
|
}
|
|
61
62
|
/** A button that can be used as a trailing element in a ListItem. */
|
|
62
|
-
declare function ListItemButton({ label, icon, ...buttonProps }: Pick<ButtonProps, 'icon' | 'label' | 'onClick'>): import("
|
|
63
|
+
declare function ListItemButton({ label, icon, ...buttonProps }: Pick<ButtonProps, 'icon' | 'label' | 'onClick'>): import("react/jsx-runtime").JSX.Element;
|
|
63
64
|
declare namespace ListItemButton {
|
|
64
65
|
var bspkName: string;
|
|
65
66
|
}
|
|
66
67
|
export { ListItem };
|
|
67
|
-
export declare const style: import("@emotion/react").SerializedStyles;
|
|
68
68
|
/** Copyright 2025 Anywhere Real Estate - CC BY 4.0 */
|
package/dist/ListItem.js
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { styleAdd } from './utils/styleAdd';
|
|
3
|
+
styleAdd(`[data-bspk=list-item]{display:block;width:100%;box-sizing:border-box;padding:0 var(--spacing-sizing-02);background:unset;border:unset;margin:unset;text-decoration:unset;user-select:none;color:var(--foreground-neutral-on-surface)}[data-bspk=list-item]:is(a),[data-bspk=list-item]:is(button),[data-bspk=list-item][onclick],[data-bspk=list-item][role=button]{cursor:pointer}[data-bspk=list-item] [data-inner]{height:100%;width:100%;min-height:var(--spacing-sizing-09);box-sizing:border-box;display:flex;flex-direction:row;gap:var(--spacing-sizing-03);padding:var(--spacing-sizing-02) 0;justify-items:stretch}[data-bspk=list-item] [data-inner]>*{min-height:100%;width:fit-content;display:flex;flex-direction:column;justify-content:space-around;flex:1;flex-shrink:0}[data-bspk=list-item] [data-inner]>* svg{width:24px;max-width:unset}[data-pseudo=focus] [data-bspk=list-item][data-action],[data-bspk=list-item][data-action]:focus-visible,[data-bspk=list-item][data-action]:has(*:focus-visible){box-shadow:inset var(--stroke-neutral-focus) 0 0 0 2px}[data-pseudo=focus] [data-bspk=list-item][data-action] [data-inner],[data-bspk=list-item][data-action]:focus-visible [data-inner],[data-bspk=list-item][data-action]:has(*:focus-visible) [data-inner]{border-color:rgba(0,0,0,0)}[data-pseudo=hover] [data-bspk=list-item][data-action],[data-bspk=list-item][data-action]:hover{background-color:var(--interactions-neutral-hover-opacity)}[data-pseudo=active] [data-bspk=list-item][data-action],[data-bspk=list-item][data-action][data-active],[data-bspk=list-item][data-action]:active{background-color:var(--interactions-neutral-press-opacity)}[data-bspk=list-item] [data-component=Img]>img{height:36px;width:36px;max-width:unset}[data-bspk=list-item]:is(label) [data-inner]{border-bottom:0;gap:var(--spacing-sizing-02)}[data-bspk=list-item] [data-item-label]{flex:100%;text-align:left}[data-bspk=list-item] [data-item-label] [data-text]{font:var(--labels-base);color:var(--foreground-neutral-on-surface)}[data-bspk=list-item] [data-item-label] [data-sub-text]{font:var(--body-small);color:var(--foreground-neutral-on-surface-variant-01)}[data-bspk=list-item][aria-disabled] [data-text],[data-bspk=list-item][aria-disabled] [data-sub-text]{color:var(--foreground-neutral-disabled-on-surface)}`);;
|
|
4
|
+
import { Button } from './Button';
|
|
5
|
+
import { getChildrenElements } from './utils/children';
|
|
6
|
+
import { useErrorLogger } from './utils/errors';
|
|
7
|
+
export const LEADING_COMPONENTS = Object.freeze(['Icon', 'Img', 'Avatar']);
|
|
8
|
+
export const TRAILING_COMPONENTS = Object.freeze([
|
|
9
|
+
'ListItemButton',
|
|
10
|
+
'Checkbox',
|
|
11
|
+
'Icon',
|
|
12
|
+
'Radio',
|
|
13
|
+
'Switch',
|
|
14
|
+
'Tag',
|
|
15
|
+
'Txt',
|
|
16
|
+
]);
|
|
17
|
+
/**
|
|
18
|
+
* A hybrid interactive component that is used frequently to organize content and offers a wide range of control and
|
|
19
|
+
* navigation in most experiences.
|
|
20
|
+
*
|
|
21
|
+
* With its flexible and simple structure, the list item element is core and can meet the needs of many uses cases.
|
|
22
|
+
*
|
|
23
|
+
* The ListItem has three main elements: leading element, label, and trailing element.
|
|
24
|
+
*
|
|
25
|
+
* Leading elements may be one of the following [Icon](/icons), Img, Avatar.
|
|
26
|
+
*
|
|
27
|
+
* Trailing elements may be one of the following [Icon](/icons), Checkbox, ListItemButton, Radio, Switch, Tag, Txt.
|
|
28
|
+
*
|
|
29
|
+
* The ListItemButton is a more limited Button with context specific options.
|
|
30
|
+
*
|
|
31
|
+
* @subComponents ListItemButton
|
|
32
|
+
*
|
|
33
|
+
* @name ListItem
|
|
34
|
+
*/
|
|
35
|
+
function ListItem({ as, disabled, invalid, leading: leadingProp, trailing: trailingProp, label, subText, active, readOnly, ...props }) {
|
|
36
|
+
let As = as || 'div';
|
|
37
|
+
const { logError } = useErrorLogger();
|
|
38
|
+
const { leading, trailing } = useChildren(leadingProp, trailingProp);
|
|
39
|
+
if (!label)
|
|
40
|
+
return;
|
|
41
|
+
const requiredAs = [];
|
|
42
|
+
if ('href' in props)
|
|
43
|
+
requiredAs.push('a');
|
|
44
|
+
if (trailing?.name) {
|
|
45
|
+
// if trailing is a ListItemButton and As is a button, change As to div
|
|
46
|
+
if (trailing?.name === 'ListItemButton')
|
|
47
|
+
requiredAs.push('div');
|
|
48
|
+
if (['Checkbox', 'Radio', 'Switch'].includes(trailing.name))
|
|
49
|
+
requiredAs.push('label');
|
|
50
|
+
}
|
|
51
|
+
if (requiredAs.length === 1) {
|
|
52
|
+
As = requiredAs[0];
|
|
53
|
+
}
|
|
54
|
+
const requiredAsError = logError(requiredAs.length > 1, `ListItem: Multiple required elements detected. Using ${As} as the element type.`);
|
|
55
|
+
if (requiredAsError)
|
|
56
|
+
As = requiredAs[0];
|
|
57
|
+
if (!As && 'onClick' in props)
|
|
58
|
+
As = 'button';
|
|
59
|
+
const actionable = ('onClick' in props || 'href' in props) && !disabled && !readOnly;
|
|
60
|
+
return (_jsx(As, { ...props, "aria-disabled": disabled || undefined, "aria-invalid": invalid || undefined, "data-action": actionable || undefined, "data-active": active || undefined, "data-bspk": "list-item", "data-component": leading?.name || undefined, "data-readonly": readOnly || undefined, role: as !== 'button' && 'onClick' in props ? 'button' : undefined, children: _jsxs("span", { "data-inner": true, children: [leading && (_jsx("span", { "data-component": leading.name, "data-leading": true, children: leading.child })), _jsxs("span", { "data-item-label": true, children: [_jsx("span", { "data-text": true, children: label }), subText && _jsx("span", { "data-sub-text": true, children: subText })] }), trailing && (_jsx("span", { "data-component": trailing.name, "data-trailing": true, children: trailing.child }))] }) }));
|
|
61
|
+
}
|
|
62
|
+
ListItem.bspkName = 'ListItem';
|
|
63
|
+
/** A button that can be used as a trailing element in a ListItem. */
|
|
64
|
+
// eslint-disable-next-line react/no-multi-comp
|
|
65
|
+
function ListItemButton({ label, icon, ...buttonProps }) {
|
|
66
|
+
return _jsx(Button, { icon: icon, label: label, showLabel: false, ...buttonProps, size: "large", variant: "tertiary" });
|
|
67
|
+
}
|
|
68
|
+
ListItemButton.bspkName = 'ListItemButton';
|
|
69
|
+
ListItem.Button = ListItemButton;
|
|
70
|
+
export { ListItem };
|
|
71
|
+
function useChildren(leadingProp, trailingProp) {
|
|
72
|
+
const { logError } = useErrorLogger();
|
|
73
|
+
let leading = getChildrenElements(leadingProp)[0] || null;
|
|
74
|
+
const trailingElements = getChildrenElements(trailingProp);
|
|
75
|
+
let trailing = trailingElements[0] || null;
|
|
76
|
+
if (leading) {
|
|
77
|
+
const valid = LEADING_COMPONENTS.includes(leading.name);
|
|
78
|
+
if (!valid)
|
|
79
|
+
leading = null;
|
|
80
|
+
logError(!valid, `ListItem - Leading child is invalid. Must be one of:${LEADING_COMPONENTS} Elements: ${leading?.name || 'None'}`);
|
|
81
|
+
}
|
|
82
|
+
if (trailing) {
|
|
83
|
+
const valid = TRAILING_COMPONENTS.includes(trailing.name);
|
|
84
|
+
if (!valid)
|
|
85
|
+
trailing = null;
|
|
86
|
+
logError(!valid, `ListItem - Trailing child is invalid. Must be one of:${TRAILING_COMPONENTS} Elements: ${trailing?.name || 'None'}`);
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
leading,
|
|
90
|
+
trailing,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=ListItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListItem.js","sourceRoot":"","sources":["../src/ListItem.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import './menu.scss';
|
|
1
2
|
import { ComponentProps, MouseEvent as ReactMouseEvent } from 'react';
|
|
2
3
|
import { ListItem } from './ListItem';
|
|
3
4
|
import { CommonProps, ElementProps } from './';
|
|
@@ -77,10 +78,9 @@ export type MenuProps<Item extends MenuItem = MenuItem> = CommonProps<'disabled'
|
|
|
77
78
|
*
|
|
78
79
|
* @name Menu
|
|
79
80
|
*/
|
|
80
|
-
declare function Menu<Item extends MenuItem = MenuItem>({ itemCount: itemCountProp, items: itemsProp, noResultsMessage, innerRef, onChange, activeIndex, selectedValues, disabled, id: idProp, renderListItem, isMulti, ...props }: ElementProps<MenuProps<Item>, 'div'>): import("
|
|
81
|
+
declare function Menu<Item extends MenuItem = MenuItem>({ itemCount: itemCountProp, items: itemsProp, noResultsMessage, innerRef, onChange, activeIndex, selectedValues, disabled, id: idProp, renderListItem, isMulti, ...props }: ElementProps<MenuProps<Item>, 'div'>): import("react/jsx-runtime").JSX.Element;
|
|
81
82
|
declare namespace Menu {
|
|
82
83
|
var bspkName: string;
|
|
83
84
|
}
|
|
84
85
|
export { Menu };
|
|
85
|
-
export declare const style: import("@emotion/react").SerializedStyles;
|
|
86
86
|
/** Copyright 2025 Anywhere Real Estate - CC BY 4.0 */
|