@payfit/unity-components 2.0.0 → 2.1.4
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/esm/components/alert/Alert.js +41 -29
- package/dist/esm/components/alert/parts/AlertTitle.js +8 -8
- package/dist/esm/components/app-layout/AppLayout.d.ts +2 -0
- package/dist/esm/components/app-menu/parts/AppMenuFooter.js +23 -23
- package/dist/esm/components/app-menu/parts/AppMenuHeader.d.ts +1 -1
- package/dist/esm/components/app-menu/parts/AppMenuHeader.js +9 -9
- package/dist/esm/components/autocomplete/Autocomplete.d.ts +0 -9
- package/dist/esm/components/autocomplete/Autocomplete.js +54 -57
- package/dist/esm/components/autocomplete/parts/AutocompleteItem.js +8 -8
- package/dist/esm/components/avatar/Avatar.variants.js +1 -1
- package/dist/esm/components/avatar/parts/AvatarFallback.js +26 -27
- package/dist/esm/components/badge/Badge.js +1 -1
- package/dist/esm/components/breadcrumbs/Breadcrumbs.variant.js +1 -1
- package/dist/esm/components/button/Button.js +6 -6
- package/dist/esm/components/button/Button.variants.d.ts +1 -0
- package/dist/esm/components/button/Button.variants.js +22 -15
- package/dist/esm/components/card/Card.context.d.ts +5 -0
- package/dist/esm/components/card/Card.context.js +14 -0
- package/dist/esm/components/card/Card.d.ts +210 -0
- package/dist/esm/components/card/Card.js +93 -0
- package/dist/esm/components/card/parts/CardContent.d.ts +37 -0
- package/dist/esm/components/card/parts/CardContent.js +8 -0
- package/dist/esm/components/card/parts/CardTitle.d.ts +55 -0
- package/dist/esm/components/card/parts/CardTitle.js +33 -0
- package/dist/esm/components/checkbox/Checkbox.js +38 -30
- package/dist/esm/components/checkbox/Checkbox.variants.d.ts +9 -9
- package/dist/esm/components/checkbox/Checkbox.variants.js +23 -7
- package/dist/esm/components/checkbox/TanstackCheckbox.d.ts +28 -0
- package/dist/esm/components/checkbox/TanstackCheckbox.js +51 -0
- package/dist/esm/components/checkbox/parts/CheckboxIndicator.js +7 -7
- package/dist/esm/components/checkbox-field/CheckboxField.d.ts +2 -0
- package/dist/esm/components/checkbox-field/TanstackCheckboxField.d.ts +14 -0
- package/dist/esm/components/checkbox-field/TanstackCheckboxField.js +40 -0
- package/dist/esm/components/checkbox-group/TanstackCheckboxGroup.d.ts +4 -0
- package/dist/esm/components/checkbox-group/TanstackCheckboxGroup.js +37 -0
- package/dist/esm/components/checkbox-group-field/CheckboxGroupField.d.ts +2 -0
- package/dist/esm/components/checkbox-group-field/TanstackCheckGroupField.d.ts +72 -0
- package/dist/esm/components/checkbox-group-field/TanstackCheckGroupField.js +40 -0
- package/dist/esm/components/client-side-pagination/parts/PaginationNavButton.js +1 -1
- package/dist/esm/components/client-side-pagination/parts/RawPaginationLink.js +10 -10
- package/dist/esm/components/collapsible/parts/CollapsibleContent.js +5 -5
- package/dist/esm/components/collapsible/parts/CollapsibleTitle.js +8 -8
- package/dist/esm/components/data-table/DataTable.d.ts +109 -16
- package/dist/esm/components/data-table/DataTable.js +107 -93
- package/dist/esm/components/data-table/mocks/employee-data.d.ts +1 -0
- package/dist/esm/components/date-calendar/DateCalendar.js +1 -1
- package/dist/esm/components/date-calendar/parts/DateSegmentSelect.js +1 -1
- package/dist/esm/components/date-picker/DatePicker.d.ts +1 -1
- package/dist/esm/components/date-picker/DatePicker.js +59 -50
- package/dist/esm/components/date-picker/TanstackDatePicker.d.ts +22 -0
- package/dist/esm/components/date-picker/TanstackDatePicker.js +53 -0
- package/dist/esm/components/date-picker/parts/DateInput.js +4 -4
- package/dist/esm/components/date-picker-field/DatePickerField.d.ts +2 -0
- package/dist/esm/components/date-picker-field/TanstackDatePickerField.d.ts +71 -0
- package/dist/esm/components/date-picker-field/TanstackDatePickerField.js +41 -0
- package/dist/esm/components/definition-list/DefinitionList.context.d.ts +19 -0
- package/dist/esm/components/definition-list/DefinitionList.d.ts +24 -0
- package/dist/esm/components/definition-list/parts/DefinitionItem.d.ts +25 -0
- package/dist/esm/components/dialog/Dialog.d.ts +34 -22
- package/dist/esm/components/dialog/Dialog.js +90 -52
- package/dist/esm/components/dialog/parts/DialogActions.js +6 -6
- package/dist/esm/components/dialog/parts/DialogTitle.js +7 -4
- package/dist/esm/components/dialog/test-utils.d.ts +28 -0
- package/dist/esm/components/dialog/test-utils.js +78 -0
- package/dist/esm/components/error-state/ErrorState.js +7 -7
- package/dist/esm/components/filter/Filter.controls.d.ts +192 -0
- package/dist/esm/components/filter/Filter.controls.js +45 -0
- package/dist/esm/components/filter/Filter.d.ts +189 -0
- package/dist/esm/components/filter/Filter.js +147 -0
- package/dist/esm/components/filter/Filter.types.d.ts +121 -0
- package/dist/esm/components/filter/hooks/useFilterIds.d.ts +49 -0
- package/dist/esm/components/filter/hooks/useFilterIds.js +13 -0
- package/dist/esm/components/filter/hooks/useFilterState.d.ts +74 -0
- package/dist/esm/components/filter/hooks/useFilterState.js +23 -0
- package/dist/esm/components/filter/hooks/useFilterValue.d.ts +61 -0
- package/dist/esm/components/filter/hooks/useFilterValue.js +31 -0
- package/dist/esm/components/filter/parts/FilterButton.d.ts +75 -0
- package/dist/esm/components/filter/parts/FilterButton.js +55 -0
- package/dist/esm/components/filter/parts/FilterLabel.d.ts +96 -0
- package/dist/esm/components/filter/parts/FilterLabel.js +57 -0
- package/dist/esm/components/filter/parts/FilterPopover.d.ts +95 -0
- package/dist/esm/components/filter/parts/FilterPopover.js +79 -0
- package/dist/esm/components/filter/utils/value-formatters.d.ts +62 -0
- package/dist/esm/components/filter/utils/value-formatters.js +14 -0
- package/dist/esm/components/filter-toolbar/FilterToolbar.d.ts +110 -0
- package/dist/esm/components/filter-toolbar/FilterToolbar.js +172 -0
- package/dist/esm/components/filter-toolbar/FilterToolbar.types.d.ts +119 -0
- package/dist/esm/components/filter-toolbar/hooks/use-filter-toolbar-state.d.ts +96 -0
- package/dist/esm/components/filter-toolbar/hooks/use-filter-toolbar-state.js +132 -0
- package/dist/esm/components/filter-toolbar/parts/AddFilter.d.ts +63 -0
- package/dist/esm/components/filter-toolbar/parts/AddFilter.js +107 -0
- package/dist/esm/components/filter-toolbar/parts/AddFilterItem.d.ts +18 -0
- package/dist/esm/components/filter-toolbar/parts/AddFilterItem.js +18 -0
- package/dist/esm/components/filter-toolbar/utils/filter-adapters.d.ts +93 -0
- package/dist/esm/components/filter-toolbar/utils/filter-adapters.js +88 -0
- package/dist/esm/components/filter-toolbar/utils/normalize-filter-value.d.ts +24 -0
- package/dist/esm/components/filter-toolbar/utils/normalize-filter-value.js +19 -0
- package/dist/esm/components/form/Form.d.ts +2 -0
- package/dist/esm/components/form/TanstackForm.d.ts +24 -0
- package/dist/esm/components/form/TanstackForm.js +29 -0
- package/dist/esm/components/form-field/FormField.d.ts +2 -0
- package/dist/esm/components/form-field/TanstackFormField.context.d.ts +10 -0
- package/dist/esm/components/form-field/TanstackFormField.context.js +14 -0
- package/dist/esm/components/form-field/TanstackFormField.d.ts +49 -0
- package/dist/esm/components/form-field/TanstackFormField.js +46 -0
- package/dist/esm/components/form-field/parts/FormControl.d.ts +2 -0
- package/dist/esm/components/form-field/parts/FormFeedbackText.d.ts +2 -0
- package/dist/esm/components/form-field/parts/FormHelperText.d.ts +2 -0
- package/dist/esm/components/form-field/parts/FormLabel.d.ts +2 -0
- package/dist/esm/components/form-field/parts/RawFormContextualLink.d.ts +2 -0
- package/dist/esm/components/form-field/parts/TanstackFormFeedbackText.d.ts +12 -0
- package/dist/esm/components/form-field/parts/TanstackFormFeedbackText.js +32 -0
- package/dist/esm/components/form-field/parts/TanstackFormHelperText.d.ts +11 -0
- package/dist/esm/components/form-field/parts/TanstackFormHelperText.js +25 -0
- package/dist/esm/components/form-field/parts/TanstackFormLabel.d.ts +8 -0
- package/dist/esm/components/form-field/parts/TanstackFormLabel.js +26 -0
- package/dist/esm/components/form-field/parts/TanstackRawFormContextualLink.d.ts +26 -0
- package/dist/esm/components/form-field/parts/TanstackRawFormContextualLink.js +45 -0
- package/dist/esm/components/icon-button/CircularIconButton.d.ts +9 -9
- package/dist/esm/components/icon-button/CircularIconButton.js +53 -36
- package/dist/esm/components/icon-button/IconButton.variants.d.ts +1 -0
- package/dist/esm/components/icon-button/IconButton.variants.js +44 -28
- package/dist/esm/components/input/Input.js +36 -35
- package/dist/esm/components/input/TanstackInput.d.ts +22 -0
- package/dist/esm/components/input/TanstackInput.js +38 -0
- package/dist/esm/components/label/Label.js +12 -12
- package/dist/esm/components/link/RawLink.js +38 -31
- package/dist/esm/components/list-view/ListView.d.ts +56 -0
- package/dist/esm/components/list-view/ListView.fixtures.d.ts +20 -0
- package/dist/esm/components/list-view/ListView.js +44 -0
- package/dist/esm/components/list-view/parts/ListViewItemLabel.d.ts +34 -0
- package/dist/esm/components/list-view/parts/ListViewItemLabel.js +22 -0
- package/dist/esm/components/list-view/parts/ListViewItemText.d.ts +33 -0
- package/dist/esm/components/list-view/parts/ListViewItemText.js +22 -0
- package/dist/esm/components/list-view/parts/ListViewSection.d.ts +14 -0
- package/dist/esm/components/list-view/parts/ListViewSection.js +21 -0
- package/dist/esm/components/list-view/parts/RawListViewItem.d.ts +102 -0
- package/dist/esm/components/list-view/parts/RawListViewItem.js +80 -0
- package/dist/esm/components/multi-select/MultiSelect.d.ts +5 -7
- package/dist/esm/components/multi-select/MultiSelect.js +199 -176
- package/dist/esm/components/multi-select/MultiselectTypes.d.ts +114 -0
- package/dist/esm/components/multi-select/TanstackMultiSelect.d.ts +7 -0
- package/dist/esm/components/multi-select/TanstackMultiSelect.js +41 -0
- package/dist/esm/components/multi-select/parts/MultiSelectButton.d.ts +2 -0
- package/dist/esm/components/multi-select/parts/MultiSelectButton.js +62 -46
- package/dist/esm/components/multi-select/parts/MultiSelectPopover.js +15 -15
- package/dist/esm/components/multi-select-field/MultiSelectField.d.ts +45 -12
- package/dist/esm/components/multi-select-field/MultiSelectField.js +56 -66
- package/dist/esm/components/multi-select-field/TanstackMultiSelectField.d.ts +92 -0
- package/dist/esm/components/multi-select-field/TanstackMultiSelectField.js +48 -0
- package/dist/esm/components/multi-select-field/test-utils.d.ts +17 -0
- package/dist/esm/components/multi-select-field/test-utils.js +45 -0
- package/dist/esm/components/nav/parts/RawNavItem.js +6 -6
- package/dist/esm/components/navigation-card/NavigationCard.context.d.ts +31 -0
- package/dist/esm/components/navigation-card/NavigationCard.context.js +13 -0
- package/dist/esm/components/navigation-card/NavigationCard.d.ts +46 -0
- package/dist/esm/components/navigation-card/NavigationCard.js +62 -0
- package/dist/esm/components/navigation-card/NavigationCard.types.d.ts +37 -0
- package/dist/esm/components/navigation-card/NavigationCard.variants.d.ts +1147 -0
- package/dist/esm/components/navigation-card/NavigationCard.variants.js +164 -0
- package/dist/esm/components/navigation-card/parts/NavigationCardDescription.d.ts +39 -0
- package/dist/esm/components/navigation-card/parts/NavigationCardDescription.js +22 -0
- package/dist/esm/components/navigation-card/parts/NavigationCardGroup.d.ts +146 -0
- package/dist/esm/components/navigation-card/parts/NavigationCardGroup.js +93 -0
- package/dist/esm/components/navigation-card/parts/NavigationCardLabel.d.ts +32 -0
- package/dist/esm/components/navigation-card/parts/NavigationCardLabel.js +24 -0
- package/dist/esm/components/number-field/NumberField.d.ts +2 -0
- package/dist/esm/components/number-field/TanstackNumberField.d.ts +74 -0
- package/dist/esm/components/number-field/TanstackNumberField.js +44 -0
- package/dist/esm/components/number-input/NumberInput.js +31 -29
- package/dist/esm/components/number-input/TanstackNumberInput.d.ts +58 -0
- package/dist/esm/components/number-input/TanstackNumberInput.js +38 -0
- package/dist/esm/components/page/Page.js +12 -11
- package/dist/esm/components/pagination/parts/RawPaginationLink.js +22 -22
- package/dist/esm/components/pagination/parts/RawPaginationNext.js +13 -13
- package/dist/esm/components/pagination/parts/RawPaginationPrevious.js +10 -10
- package/dist/esm/components/payfit-brand/PayFitBrand.d.ts +4 -0
- package/dist/esm/components/payfit-brand/PayFitBrand.js +30 -22
- package/dist/esm/components/payfit-brand/PayFitPreprod.js +25 -25
- package/dist/esm/components/phone-number/PhoneNumberInput.d.ts +67 -0
- package/dist/esm/components/phone-number/PhoneNumberInput.js +322 -0
- package/dist/esm/components/phone-number/TanstackPhoneNumberInput.d.ts +64 -0
- package/dist/esm/components/phone-number/TanstackPhoneNumberInput.js +33 -0
- package/dist/esm/components/phone-number/parts/PhoneNumberItem.d.ts +42 -0
- package/dist/esm/components/phone-number/parts/PhoneNumberItem.js +68 -0
- package/dist/esm/components/phone-number/unknownFlag.svg.js +4 -0
- package/dist/esm/components/phone-number-field/TanstackPhoneNumberField.d.ts +15 -0
- package/dist/esm/components/phone-number-field/TanstackPhoneNumberField.js +32 -0
- package/dist/esm/components/pill/Pill.d.ts +2 -2
- package/dist/esm/components/pill/Pill.js +8 -8
- package/dist/esm/components/popover/Popover.js +6 -6
- package/dist/esm/components/promo-dialog/PromoDialog.d.ts +149 -0
- package/dist/esm/components/promo-dialog/PromoDialog.js +219 -0
- package/dist/esm/components/promo-dialog/parts/PromoDialogActions.d.ts +44 -0
- package/dist/esm/components/promo-dialog/parts/PromoDialogActions.js +29 -0
- package/dist/esm/components/promo-dialog/parts/PromoDialogContent.d.ts +43 -0
- package/dist/esm/components/promo-dialog/parts/PromoDialogContent.js +20 -0
- package/dist/esm/components/promo-dialog/parts/PromoDialogHero.d.ts +47 -0
- package/dist/esm/components/promo-dialog/parts/PromoDialogHero.js +25 -0
- package/dist/esm/components/promo-dialog/parts/PromoDialogSubtitle.d.ts +53 -0
- package/dist/esm/components/promo-dialog/parts/PromoDialogSubtitle.js +21 -0
- package/dist/esm/components/promo-dialog/parts/PromoDialogTitle.d.ts +6 -0
- package/dist/esm/components/promo-dialog/parts/PromoDialogTitle.js +18 -0
- package/dist/esm/components/radio-button-group/TanstackRadioButtonGroup.d.ts +13 -0
- package/dist/esm/components/radio-button-group/TanstackRadioButtonGroup.js +43 -0
- package/dist/esm/components/radio-button-group/parts/RadioButton.d.ts +29 -11
- package/dist/esm/components/radio-button-group/parts/RadioButton.js +53 -51
- package/dist/esm/components/radio-button-group-field/RadioButtonGroupField.d.ts +2 -0
- package/dist/esm/components/radio-button-group-field/TanstackRadioButtonGroupField.d.ts +13 -0
- package/dist/esm/components/radio-button-group-field/TanstackRadioButtonGroupField.js +38 -0
- package/dist/esm/components/search/Search.js +46 -46
- package/dist/esm/components/segmented-button-group/parts/ToggleButton.js +5 -5
- package/dist/esm/components/select/Select.d.ts +5 -4
- package/dist/esm/components/select/Select.js +53 -45
- package/dist/esm/components/select/TanstackSelect.d.ts +80 -0
- package/dist/esm/components/select/TanstackSelect.js +34 -0
- package/dist/esm/components/select/parts/SearchInput.d.ts +4 -1
- package/dist/esm/components/select/parts/SearchInput.js +49 -31
- package/dist/esm/components/select/parts/SelectButton.js +19 -17
- package/dist/esm/components/select-field/SelectField.d.ts +2 -0
- package/dist/esm/components/select-field/SelectField.js +8 -9
- package/dist/esm/components/select-field/TanstackSelectField.d.ts +124 -0
- package/dist/esm/components/select-field/TanstackSelectField.js +44 -0
- package/dist/esm/components/select-list/SelectList.d.ts +95 -0
- package/dist/esm/components/select-list/SelectList.js +79 -0
- package/dist/esm/components/select-list/SelectList.types.d.ts +29 -0
- package/dist/esm/components/select-list/constants.d.ts +36 -0
- package/dist/esm/components/select-list/constants.js +29 -0
- package/dist/esm/components/select-list/helpers.d.ts +42 -0
- package/dist/esm/components/select-list/helpers.js +48 -0
- package/dist/esm/components/select-list/hooks/useControlledSelection.d.ts +23 -0
- package/dist/esm/components/select-list/hooks/useControlledSelection.js +16 -0
- package/dist/esm/components/select-list/hooks/useSelectedFirstSorting.d.ts +23 -0
- package/dist/esm/components/select-list/hooks/useSelectedFirstSorting.js +31 -0
- package/dist/esm/components/select-list/parts/SelectListEmptyState.d.ts +8 -0
- package/dist/esm/components/select-list/parts/SelectListEmptyState.js +25 -0
- package/dist/esm/components/select-list/parts/SelectListOptGroup.d.ts +118 -0
- package/dist/esm/components/select-list/parts/SelectListOptGroup.js +28 -0
- package/dist/esm/components/select-list/parts/SelectListOption.d.ts +24 -0
- package/dist/esm/components/select-list/parts/SelectListOption.js +72 -0
- package/dist/esm/components/select-list/parts/SelectListSearchInput.d.ts +2 -0
- package/dist/esm/components/select-list/parts/SelectListSearchInput.js +43 -0
- package/dist/esm/components/select-list/parts/SelectedItemsSection.d.ts +54 -0
- package/dist/esm/components/select-list/parts/SelectedItemsSection.js +35 -0
- package/dist/esm/components/select-list/utils/partition.d.ts +13 -0
- package/dist/esm/components/select-list/utils/partition.js +9 -0
- package/dist/esm/components/selectable-button-group/SelectableButtonGroup.context.d.ts +1 -5
- package/dist/esm/components/selectable-button-group/SelectableButtonGroup.d.ts +6 -1
- package/dist/esm/components/selectable-button-group/SelectableButtonGroup.js +23 -23
- package/dist/esm/components/selectable-button-group/TanstackSelectableButtonGroup.d.ts +27 -0
- package/dist/esm/components/selectable-button-group/TanstackSelectableButtonGroup.js +34 -0
- package/dist/esm/components/selectable-button-group/parts/SelectableButton.d.ts +1 -16
- package/dist/esm/components/selectable-button-group/parts/SelectableButton.js +56 -57
- package/dist/esm/components/selectable-button-group-field/SelectableButtonGroupField.d.ts +2 -0
- package/dist/esm/components/selectable-button-group-field/TanstackSelectableButtonGroupField.d.ts +81 -0
- package/dist/esm/components/selectable-button-group-field/TanstackSelectableButtonGroupField.js +47 -0
- package/dist/esm/components/selectable-card/internals/Description.js +1 -1
- package/dist/esm/components/selectable-card/selectable-card-checkbox-group/SelectableCardCheckboxGroup.js +1 -1
- package/dist/esm/components/selectable-card/selectable-card-checkbox-group/TanstackSelectableCardCheckboxGroup.d.ts +26 -0
- package/dist/esm/components/selectable-card/selectable-card-checkbox-group/TanstackSelectableCardCheckboxGroup.js +32 -0
- package/dist/esm/components/selectable-card/selectable-card-checkbox-group/parts/SelectableCardCheckbox.js +24 -24
- package/dist/esm/components/selectable-card/selectable-card-radio-group/SelectableCardRadioGroup.d.ts +2 -0
- package/dist/esm/components/selectable-card/selectable-card-radio-group/SelectableCardRadioGroup.js +12 -14
- package/dist/esm/components/selectable-card/selectable-card-radio-group/TanstackSelectableCardRadioGroup.d.ts +28 -0
- package/dist/esm/components/selectable-card/selectable-card-radio-group/TanstackSelectableCardRadioGroup.js +32 -0
- package/dist/esm/components/selectable-card/selectable-card-radio-group/parts/RadioIndicator.js +14 -13
- package/dist/esm/components/selectable-card/selectable-card-radio-group/parts/SelectableCardRadio.js +27 -25
- package/dist/esm/components/selectable-card/selectableCard.variant.js +5 -5
- package/dist/esm/components/selectable-card-checkbox-group-field/SelectableCardCheckboxGroupField.d.ts +2 -0
- package/dist/esm/components/selectable-card-checkbox-group-field/TanstackSelectableCardCheckboxGroupField.d.ts +10 -0
- package/dist/esm/components/selectable-card-checkbox-group-field/TanstackSelectableCardCheckboxGroupField.js +38 -0
- package/dist/esm/components/selectable-card-radio-group-field/SelectableCardRadioGroupField.d.ts +2 -0
- package/dist/esm/components/selectable-card-radio-group-field/TanstackSelectableCardRadioGroupField.d.ts +10 -0
- package/dist/esm/components/selectable-card-radio-group-field/TanstackSelectableCardRadioGroupField.js +38 -0
- package/dist/esm/components/table/Table.context.d.ts +5 -0
- package/dist/esm/components/table/Table.context.js +14 -13
- package/dist/esm/components/table/Table.d.ts +93 -0
- package/dist/esm/components/table/Table.js +135 -107
- package/dist/esm/components/table/parts/TableBody.js +83 -21
- package/dist/esm/components/table/parts/TableEmptyState.js +6 -6
- package/dist/esm/components/table/parts/TableHeader.js +1 -1
- package/dist/esm/components/table/parts/TablePagination.js +1 -1
- package/dist/esm/components/table/parts/TableRow.js +1 -0
- package/dist/esm/components/tabs/Tabs.variant.d.ts +0 -6
- package/dist/esm/components/tabs/Tabs.variant.js +11 -12
- package/dist/esm/components/task-menu/parts/RawSubTask.js +26 -26
- package/dist/esm/components/task-menu/parts/RawTask.js +32 -28
- package/dist/esm/components/task-menu/parts/TaskGroup.js +30 -26
- package/dist/esm/components/task-menu/parts/task.variants.js +4 -2
- package/dist/esm/components/text/Text.d.ts +11 -1
- package/dist/esm/components/text/Text.js +41 -31
- package/dist/esm/components/text/Text.variants.d.ts +12 -0
- package/dist/esm/components/text/Text.variants.js +4 -0
- package/dist/esm/components/text-area/TanstackTextArea.d.ts +21 -0
- package/dist/esm/components/text-area/TanstackTextArea.js +35 -0
- package/dist/esm/components/text-area/TextArea.js +31 -29
- package/dist/esm/components/text-field/TanstackTextField.d.ts +79 -0
- package/dist/esm/components/text-field/TanstackTextField.js +60 -0
- package/dist/esm/components/text-field/TextField.d.ts +2 -0
- package/dist/esm/components/toast/UnityToast.js +5 -5
- package/dist/esm/components/toast/test-utils.d.ts +36 -0
- package/dist/esm/components/toast/test-utils.js +118 -0
- package/dist/esm/components/toggle-switch/TanstackToggleSwitch.d.ts +46 -0
- package/dist/esm/components/toggle-switch/TanstackToggleSwitch.js +25 -0
- package/dist/esm/components/toggle-switch/ToggleSwitch.d.ts +21 -9
- package/dist/esm/components/toggle-switch/ToggleSwitch.js +71 -32
- package/dist/esm/components/toggle-switch-field/TanstackToggleSwitchField.d.ts +11 -0
- package/dist/esm/components/toggle-switch-field/TanstackToggleSwitchField.js +34 -0
- package/dist/esm/components/toggle-switch-field/ToggleSwitchField.d.ts +2 -0
- package/dist/esm/components/toggle-switch-group/TanstackToggleSwitchGroup.d.ts +57 -0
- package/dist/esm/components/toggle-switch-group/TanstackToggleSwitchGroup.js +23 -0
- package/dist/esm/components/toggle-switch-group/ToggleSwitchGroup.js +1 -1
- package/dist/esm/components/toggle-switch-group-field/TanstackToggleSwitchGroupField.d.ts +19 -0
- package/dist/esm/components/toggle-switch-group-field/TanstackToggleSwitchGroupField.js +50 -0
- package/dist/esm/components/toggle-switch-group-field/ToggleSwitchGroupField.d.ts +2 -0
- package/dist/esm/docs/{table → examples/data}/mocks/employee-columns.d.ts +1 -1
- package/dist/esm/hooks/tanstack-form-context.d.ts +1 -0
- package/dist/esm/hooks/tanstack-form-context.js +8 -0
- package/dist/esm/hooks/use-form.d.ts +2 -0
- package/dist/esm/hooks/use-has-scroll.d.ts +71 -0
- package/dist/esm/hooks/use-has-scroll.js +75 -0
- package/dist/esm/hooks/use-tanstack-form.d.ts +369 -0
- package/dist/esm/hooks/use-tanstack-form.js +209 -0
- package/dist/esm/index.d.ts +44 -20
- package/dist/esm/index.js +457 -394
- package/dist/esm/index.storybook-testing.d.ts +3 -0
- package/dist/esm/integrations/tanstack-router/components/form-contextual-link/FormContextualLink.d.ts +6 -1
- package/dist/esm/integrations/tanstack-router/components/form-contextual-link/TanstackFormContextualLink.d.ts +43 -0
- package/dist/esm/integrations/tanstack-router/components/list-view/ListView.d.ts +34 -0
- package/dist/esm/integrations/tanstack-router/components/list-view/ListView.js +25 -0
- package/dist/esm/integrations/tanstack-router/components/list-view/parts/ListViewItem.d.ts +51 -0
- package/dist/esm/integrations/tanstack-router/components/list-view/parts/ListViewItem.js +32 -0
- package/dist/esm/integrations/tanstack-router/components/navigation-card/NavigationCard.d.ts +73 -0
- package/dist/esm/integrations/tanstack-router/components/navigation-card/NavigationCard.js +37 -0
- package/dist/esm/integrations/tanstack-router/index.d.ts +3 -0
- package/dist/esm/integrations/tanstack-router/utils/decorators.d.ts +1 -1
- package/dist/esm/integrations/tanstack-router.js +32 -26
- package/dist/esm/mocks/employees.d.ts +1 -5
- package/dist/esm/storybook-testing.js +8 -2
- package/dist/esm/storybook-utilities/previewTransform.d.ts +1 -0
- package/dist/esm/utils/scroll-detection.d.ts +77 -0
- package/dist/esm/utils/scroll-detection.js +33 -0
- package/dist/esm/utils/spacing.d.ts +63 -0
- package/dist/esm/utils/spacing.js +15 -0
- package/i18n/en-GB.json +21 -8
- package/i18n/es-ES.json +23 -10
- package/i18n/fr-FR.json +24 -11
- package/package.json +41 -42
- package/dist/esm/components/multi-select/Multiselect.types.d.ts +0 -109
- package/dist/esm/integrations/react-router/v5/UnityReactRouterV5Provider.d.ts +0 -6
- package/dist/esm/integrations/react-router/v5/UnityReactRouterV5Provider.js +0 -28
- package/dist/esm/integrations/react-router/v5/index.d.ts +0 -1
- package/dist/esm/integrations/react-router/v5.js +0 -4
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { partition as l } from "./utils/partition.js";
|
|
2
|
+
function c(r) {
|
|
3
|
+
return typeof r == "object" && r !== null && "children" in r && Array.isArray(r.children);
|
|
4
|
+
}
|
|
5
|
+
function d(r) {
|
|
6
|
+
const t = r[Symbol.iterator]().next();
|
|
7
|
+
return t.done ? !1 : c(t.value);
|
|
8
|
+
}
|
|
9
|
+
function u(r, n) {
|
|
10
|
+
const t = Array.from(r), [i, s] = l(
|
|
11
|
+
t,
|
|
12
|
+
(e) => n.has(e.id)
|
|
13
|
+
);
|
|
14
|
+
return { selectedItems: i, remainingItems: s };
|
|
15
|
+
}
|
|
16
|
+
function m(r) {
|
|
17
|
+
const n = [];
|
|
18
|
+
return Array.from(r).forEach((t) => {
|
|
19
|
+
c(t) && t.children.forEach((i) => {
|
|
20
|
+
n.push(i);
|
|
21
|
+
});
|
|
22
|
+
}), { allItems: n };
|
|
23
|
+
}
|
|
24
|
+
function h(r, n) {
|
|
25
|
+
const { allItems: t } = m(r), i = t.filter((e) => n.has(e.id)), s = Array.from(r).map((e) => {
|
|
26
|
+
if (c(e)) {
|
|
27
|
+
const o = e.children.filter(
|
|
28
|
+
(a) => !n.has(a.id)
|
|
29
|
+
);
|
|
30
|
+
return {
|
|
31
|
+
...e,
|
|
32
|
+
children: o
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
return e;
|
|
36
|
+
}).filter((e) => c(e) && e.children.length > 0);
|
|
37
|
+
return {
|
|
38
|
+
selectedItems: i,
|
|
39
|
+
remainingSections: s
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export {
|
|
43
|
+
m as extractAllSelectableItems,
|
|
44
|
+
c as hasSectionChildren,
|
|
45
|
+
d as isNestedStructure,
|
|
46
|
+
u as processSelectedItemsForFlatDynamicItems,
|
|
47
|
+
h as processSelectedItemsForNestedDynamicItems
|
|
48
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Key, Selection } from 'react-aria-components';
|
|
2
|
+
/**
|
|
3
|
+
* Hook to manage controlled/uncontrolled selection state.
|
|
4
|
+
* Follows React's controlled component pattern.
|
|
5
|
+
* @param value - Controlled value (undefined for uncontrolled mode)
|
|
6
|
+
* @param onChange - Callback when selection changes
|
|
7
|
+
* @returns Tuple of [currentSelection, handleSelectionChange]
|
|
8
|
+
* @example
|
|
9
|
+
* ```tsx
|
|
10
|
+
* // Controlled mode
|
|
11
|
+
* const [selection, setSelection] = useControlledSelection(
|
|
12
|
+
* selectedKeys,
|
|
13
|
+
* handleChange
|
|
14
|
+
* )
|
|
15
|
+
*
|
|
16
|
+
* // Uncontrolled mode
|
|
17
|
+
* const [selection, setSelection] = useControlledSelection(
|
|
18
|
+
* undefined,
|
|
19
|
+
* handleChange
|
|
20
|
+
* )
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export declare function useControlledSelection(value: 'all' | Iterable<Key> | undefined, onChange?: (keys: Selection) => void): [Selection, (keys: Selection) => void];
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { useState as i, useMemo as S, useCallback as a } from "react";
|
|
2
|
+
function m(e, o) {
|
|
3
|
+
const [l, s] = i(/* @__PURE__ */ new Set()), t = e !== void 0, c = S(
|
|
4
|
+
() => t ? e === "all" ? "all" : e instanceof Set ? e : new Set(e) : l,
|
|
5
|
+
[t, e, l]
|
|
6
|
+
), r = a(
|
|
7
|
+
(n) => {
|
|
8
|
+
t || s(n === "all" ? /* @__PURE__ */ new Set() : n), o?.(n);
|
|
9
|
+
},
|
|
10
|
+
[t, o]
|
|
11
|
+
);
|
|
12
|
+
return [c, r];
|
|
13
|
+
}
|
|
14
|
+
export {
|
|
15
|
+
m as useControlledSelection
|
|
16
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Selection } from 'react-aria-components';
|
|
2
|
+
interface ProcessedItems<TType> {
|
|
3
|
+
selectedItems: TType[];
|
|
4
|
+
remainingItems: Iterable<TType> | undefined;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Hook to process items for selected-first sorting.
|
|
8
|
+
* Separates selected items into a dedicated section at the top.
|
|
9
|
+
* @param items - The items to process (flat or nested structure)
|
|
10
|
+
* @param selectedKeys - Currently selected keys
|
|
11
|
+
* @param enabled - Whether selected-first sorting is enabled
|
|
12
|
+
* @returns Processed items with selected items separated
|
|
13
|
+
* @example
|
|
14
|
+
* ```tsx
|
|
15
|
+
* const processed = useSelectedFirstSorting(
|
|
16
|
+
* items,
|
|
17
|
+
* selectedKeys,
|
|
18
|
+
* sortSelectedFirst
|
|
19
|
+
* )
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare function useSelectedFirstSorting<TType extends object>(items: Iterable<TType> | undefined, selectedKeys: Selection, enabled: boolean): ProcessedItems<TType>;
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { useMemo as m } from "react";
|
|
2
|
+
import { isNestedStructure as c, processSelectedItemsForNestedDynamicItems as i, processSelectedItemsForFlatDynamicItems as o } from "../helpers.js";
|
|
3
|
+
function d(e, s, n) {
|
|
4
|
+
const r = m(() => s === "all" ? /* @__PURE__ */ new Set() : s, [s]);
|
|
5
|
+
return m(() => {
|
|
6
|
+
if (!n || !e || r.size === 0)
|
|
7
|
+
return { selectedItems: [], remainingItems: e };
|
|
8
|
+
if (c(e)) {
|
|
9
|
+
const t = i(
|
|
10
|
+
e,
|
|
11
|
+
r
|
|
12
|
+
);
|
|
13
|
+
return {
|
|
14
|
+
selectedItems: t.selectedItems,
|
|
15
|
+
remainingItems: t.remainingSections
|
|
16
|
+
};
|
|
17
|
+
} else {
|
|
18
|
+
const t = o(
|
|
19
|
+
e,
|
|
20
|
+
r
|
|
21
|
+
);
|
|
22
|
+
return {
|
|
23
|
+
selectedItems: t.selectedItems,
|
|
24
|
+
remainingItems: t.remainingItems
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
}, [e, r, n]);
|
|
28
|
+
}
|
|
29
|
+
export {
|
|
30
|
+
d as useSelectedFirstSorting
|
|
31
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsxs as r, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { Icon as s } from "@payfit/unity-icons";
|
|
3
|
+
import { FormattedMessage as u } from "react-intl";
|
|
4
|
+
import { Text as t } from "../../text/Text.js";
|
|
5
|
+
const a = () => /* @__PURE__ */ r("div", { className: "uy:flex uy:flex-col uy:gap-200 uy:items-center uy:justify-center uy:h-full uy:py-600", children: [
|
|
6
|
+
/* @__PURE__ */ e(
|
|
7
|
+
t,
|
|
8
|
+
{
|
|
9
|
+
variant: "body",
|
|
10
|
+
className: "uy:w-500 uy:h-500 uy:bg-surface-neutral-lowest uy:flex uy:items-center uy:justify-center uy:rounded-75",
|
|
11
|
+
children: /* @__PURE__ */ e(s, { size: 24, src: "MagnifyingGlassOutlined" })
|
|
12
|
+
}
|
|
13
|
+
),
|
|
14
|
+
/* @__PURE__ */ e(t, { variant: "bodyLarge", children: /* @__PURE__ */ e(
|
|
15
|
+
u,
|
|
16
|
+
{
|
|
17
|
+
id: "unity:component:autocomplete:panel:empty:label",
|
|
18
|
+
defaultMessage: "No results found"
|
|
19
|
+
}
|
|
20
|
+
) })
|
|
21
|
+
] });
|
|
22
|
+
a.displayName = "SelectListEmptyState";
|
|
23
|
+
export {
|
|
24
|
+
a as SelectListEmptyState
|
|
25
|
+
};
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { ListBoxSectionProps } from 'react-aria-components';
|
|
2
|
+
export declare const selectListOptGroup: import('tailwind-variants').TVReturnType<{
|
|
3
|
+
[key: string]: {
|
|
4
|
+
[key: string]: import('tailwind-merge').ClassNameValue | {
|
|
5
|
+
base?: import('tailwind-merge').ClassNameValue;
|
|
6
|
+
label?: import('tailwind-merge').ClassNameValue;
|
|
7
|
+
separator?: import('tailwind-merge').ClassNameValue;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
} | {
|
|
11
|
+
[x: string]: {
|
|
12
|
+
[x: string]: import('tailwind-merge').ClassNameValue | {
|
|
13
|
+
base?: import('tailwind-merge').ClassNameValue;
|
|
14
|
+
label?: import('tailwind-merge').ClassNameValue;
|
|
15
|
+
separator?: import('tailwind-merge').ClassNameValue;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
} | {}, {
|
|
19
|
+
base: string;
|
|
20
|
+
label: string;
|
|
21
|
+
separator: string;
|
|
22
|
+
}, undefined, {
|
|
23
|
+
[key: string]: {
|
|
24
|
+
[key: string]: import('tailwind-merge').ClassNameValue | {
|
|
25
|
+
base?: import('tailwind-merge').ClassNameValue;
|
|
26
|
+
label?: import('tailwind-merge').ClassNameValue;
|
|
27
|
+
separator?: import('tailwind-merge').ClassNameValue;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
} | {}, {
|
|
31
|
+
base: string;
|
|
32
|
+
label: string;
|
|
33
|
+
separator: string;
|
|
34
|
+
}, import('tailwind-variants').TVReturnType<unknown, {
|
|
35
|
+
base: string;
|
|
36
|
+
label: string;
|
|
37
|
+
separator: string;
|
|
38
|
+
}, undefined, unknown, unknown, undefined>>;
|
|
39
|
+
/**
|
|
40
|
+
* Props for the SelectListOptGroup component.
|
|
41
|
+
* @template TType - The type of items when using the dynamic API
|
|
42
|
+
*/
|
|
43
|
+
export interface SelectListOptGroupProps<TType extends object> extends ListBoxSectionProps<TType> {
|
|
44
|
+
/**
|
|
45
|
+
* The heading text for this group of options. Displayed above the group's options to provide visual and semantic organization.
|
|
46
|
+
*/
|
|
47
|
+
label: string;
|
|
48
|
+
/**
|
|
49
|
+
* Adds a visual separator line below this group to create clear visual boundaries between groups. Set to `true` to enhance visual separation.
|
|
50
|
+
* @default false
|
|
51
|
+
*/
|
|
52
|
+
withSeparator?: boolean;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Organizes related options into labeled sections within a `SelectList` component.
|
|
56
|
+
* Use this component to group related options together under a common label, improving scannability and organization for users. The component supports both static (directly nested children) and dynamic (items array with render function) APIs, and can optionally display a separator line to create clear visual boundaries between groups.
|
|
57
|
+
* @param {SelectListOptGroupProps} props - Regular props from React Aria's ListBoxSection, plus label and separator configuration
|
|
58
|
+
* @example
|
|
59
|
+
* ```tsx
|
|
60
|
+
* import { SelectList, SelectListOptGroup, SelectListOption } from '@payfit/unity-components'
|
|
61
|
+
*
|
|
62
|
+
* function Example() {
|
|
63
|
+
* const sections = [
|
|
64
|
+
* {
|
|
65
|
+
* id: 'fruits',
|
|
66
|
+
* label: 'Fruits',
|
|
67
|
+
* children: [
|
|
68
|
+
* { id: 'apple', label: 'Apple' },
|
|
69
|
+
* { id: 'banana', label: 'Banana' }
|
|
70
|
+
* ]
|
|
71
|
+
* },
|
|
72
|
+
* {
|
|
73
|
+
* id: 'vegetables',
|
|
74
|
+
* label: 'Vegetables',
|
|
75
|
+
* children: [
|
|
76
|
+
* { id: 'carrot', label: 'Carrot' },
|
|
77
|
+
* { id: 'lettuce', label: 'Lettuce' }
|
|
78
|
+
* ]
|
|
79
|
+
* }
|
|
80
|
+
* ]
|
|
81
|
+
*
|
|
82
|
+
* return (
|
|
83
|
+
* <SelectList items={sections} selectionMode="multiple" value={new Set()} onChange={() => {}}>
|
|
84
|
+
* {section => (
|
|
85
|
+
* <SelectListOptGroup
|
|
86
|
+
* id={section.id}
|
|
87
|
+
* label={section.label}
|
|
88
|
+
* items={section.children}
|
|
89
|
+
* withSeparator
|
|
90
|
+
* >
|
|
91
|
+
* {item => (
|
|
92
|
+
* <SelectListOption id={item.id}>
|
|
93
|
+
* {item.label}
|
|
94
|
+
* </SelectListOption>
|
|
95
|
+
* )}
|
|
96
|
+
* </SelectListOptGroup>
|
|
97
|
+
* )}
|
|
98
|
+
* </SelectList>
|
|
99
|
+
* )
|
|
100
|
+
* }
|
|
101
|
+
* ```
|
|
102
|
+
* @remarks
|
|
103
|
+
* - Use the `label` prop to provide a descriptive heading that clearly identifies the group's category
|
|
104
|
+
* - Set `withSeparator` to `true` to add a visual separator line below the group for enhanced visual organization
|
|
105
|
+
* - Supports both static API (directly nest `SelectListOption` components) and dynamic API (provide `items` array with render function)
|
|
106
|
+
* - This component must be used within a `SelectList` parent component to function properly
|
|
107
|
+
* - Groups are accessible with proper ARIA semantics for screen readers
|
|
108
|
+
* @see {@link SelectListOptGroupProps} for all available props
|
|
109
|
+
* @see {@link SelectListOption} for the child option component
|
|
110
|
+
* @see {@link SelectList} for the parent component's API
|
|
111
|
+
* @see Source code in {@link https://github.com/PayFit/hr-apps/tree/master/libs/shared/unity/components/src/components/select-list/parts GitHub}
|
|
112
|
+
* @see Developer docs in {@link https://unity-components.payfit.io/?path=/docs/data-selectlist-selectlistoptgroup unity-components.payfit.io}
|
|
113
|
+
*/
|
|
114
|
+
declare function SelectListOptGroup<T extends object>(props: SelectListOptGroupProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
115
|
+
declare namespace SelectListOptGroup {
|
|
116
|
+
var displayName: string;
|
|
117
|
+
}
|
|
118
|
+
export { SelectListOptGroup };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsxs as y, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { uyTv as c } from "@payfit/unity-themes";
|
|
3
|
+
import { ListBoxSection as i, Header as p, Collection as b, Separator as m } from "react-aria-components";
|
|
4
|
+
const d = c({
|
|
5
|
+
slots: {
|
|
6
|
+
base: "uy:flex uy:flex-col uy:bg-surface-neutral",
|
|
7
|
+
label: "uy:px-150 uy:py-100 uy:typography-body-strong uy:text-content-neutral",
|
|
8
|
+
separator: "uy:my-100 uy:border-t uy:border-border-neutral uy:border-solid"
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
function f(r) {
|
|
12
|
+
const { base: l, label: s, separator: a } = d(), {
|
|
13
|
+
label: o,
|
|
14
|
+
withSeparator: u = !1,
|
|
15
|
+
children: e,
|
|
16
|
+
...n
|
|
17
|
+
} = r;
|
|
18
|
+
return /* @__PURE__ */ y(i, { ...n, className: l(), children: [
|
|
19
|
+
o && /* @__PURE__ */ t(p, { className: s(), children: o }),
|
|
20
|
+
typeof e == "function" ? /* @__PURE__ */ t(b, { items: r.items, children: e }) : e,
|
|
21
|
+
u && /* @__PURE__ */ t(m, { className: a() })
|
|
22
|
+
] });
|
|
23
|
+
}
|
|
24
|
+
f.displayName = "SelectListOptGroup";
|
|
25
|
+
export {
|
|
26
|
+
f as SelectListOptGroup,
|
|
27
|
+
d as selectListOptGroup
|
|
28
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { default as React, ReactNode } from 'react';
|
|
2
|
+
import { ListBoxItemProps } from 'react-aria-components';
|
|
3
|
+
/**
|
|
4
|
+
* Props for the SelectListOption component.
|
|
5
|
+
* @template TType - The type of the item this option represents
|
|
6
|
+
*/
|
|
7
|
+
export interface SelectListOptionProps<TType extends object> extends Omit<ListBoxItemProps<TType>, 'ref' | 'className' | 'style'> {
|
|
8
|
+
/**
|
|
9
|
+
* The content to display for this option. Typically a text label or rich content.
|
|
10
|
+
*/
|
|
11
|
+
children: ReactNode;
|
|
12
|
+
/**
|
|
13
|
+
* Prevents the option from being selected when set to `true`. Disabled options are visually dimmed and cannot receive focus or interaction.
|
|
14
|
+
* @default false
|
|
15
|
+
*/
|
|
16
|
+
isDisabled?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Supplementary text displayed below the main option label. Use this to provide additional context or description about the option.
|
|
19
|
+
*/
|
|
20
|
+
helperText?: string;
|
|
21
|
+
}
|
|
22
|
+
export declare const SelectListOption: <T extends object>(props: SelectListOptionProps<T> & {
|
|
23
|
+
ref?: React.ForwardedRef<HTMLDivElement>;
|
|
24
|
+
}) => React.JSX.Element;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { jsx as t, jsxs as s } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as f } from "react";
|
|
3
|
+
import { uyTv as b } from "@payfit/unity-themes";
|
|
4
|
+
import { ListBoxItem as m } from "react-aria-components";
|
|
5
|
+
import x from "../../../hooks/use-id.js";
|
|
6
|
+
import { CheckboxIndicator as v } from "../../checkbox/parts/CheckboxIndicator.js";
|
|
7
|
+
const h = b({
|
|
8
|
+
slots: {
|
|
9
|
+
base: [
|
|
10
|
+
"uy:flex uy:flex-col uy:transition",
|
|
11
|
+
"uy:w-full uy:px-150 uy:py-100",
|
|
12
|
+
"uy:rounded-50 uy:cursor-pointer",
|
|
13
|
+
"uy:hover:bg-surface-neutral-hover",
|
|
14
|
+
"uy:active:bg-surface-neutral-pressed",
|
|
15
|
+
"uy:data-[focus-visible]:outline uy:data-[focus-visible]:outline-2 uy:data-[focus-visible]:outline-utility-focus-ring uy:data-[focus-visible]:-outline-offset-2"
|
|
16
|
+
],
|
|
17
|
+
label: "uy:inline-flex uy:items-center uy:gap-100 uy:text-content-neutral uy:typography-body",
|
|
18
|
+
helperText: "uy:inline-block uy:typography-body uy:text-content-neutral-low uy:pl-300"
|
|
19
|
+
},
|
|
20
|
+
variants: {
|
|
21
|
+
isDisabled: {
|
|
22
|
+
true: {
|
|
23
|
+
base: "uy:cursor-not-allowed!",
|
|
24
|
+
label: "uy:text-content-neutral-disabled"
|
|
25
|
+
},
|
|
26
|
+
false: {
|
|
27
|
+
base: ""
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
function a({
|
|
33
|
+
children: o,
|
|
34
|
+
isDisabled: i = !1,
|
|
35
|
+
textValue: u,
|
|
36
|
+
helperText: e,
|
|
37
|
+
...r
|
|
38
|
+
}, n) {
|
|
39
|
+
const l = x(), {
|
|
40
|
+
base: y,
|
|
41
|
+
label: c,
|
|
42
|
+
helperText: d
|
|
43
|
+
} = h({ isDisabled: i });
|
|
44
|
+
return /* @__PURE__ */ t(
|
|
45
|
+
m,
|
|
46
|
+
{
|
|
47
|
+
"data-dd-privacy": "mask",
|
|
48
|
+
...r,
|
|
49
|
+
className: y(),
|
|
50
|
+
textValue: u ?? o,
|
|
51
|
+
"aria-describedby": e ? `${l}-helper-text` : void 0,
|
|
52
|
+
children: ({ isSelected: p }) => /* @__PURE__ */ s("div", { ref: n, children: [
|
|
53
|
+
/* @__PURE__ */ s("div", { className: c(), children: [
|
|
54
|
+
/* @__PURE__ */ t(
|
|
55
|
+
v,
|
|
56
|
+
{
|
|
57
|
+
isSelected: p,
|
|
58
|
+
isDisabled: i
|
|
59
|
+
}
|
|
60
|
+
),
|
|
61
|
+
o
|
|
62
|
+
] }),
|
|
63
|
+
e && /* @__PURE__ */ t("span", { id: `${l}-helper-text`, className: d(), children: e })
|
|
64
|
+
] })
|
|
65
|
+
}
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
a.displayName = "SelectListOption";
|
|
69
|
+
const C = f(a);
|
|
70
|
+
export {
|
|
71
|
+
C as SelectListOption
|
|
72
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { jsxs as i, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as s } from "react";
|
|
3
|
+
import { uyTv as a } from "@payfit/unity-themes";
|
|
4
|
+
import { SearchField as c, Input as l } from "react-aria-components";
|
|
5
|
+
import { useIntl as y } from "react-intl";
|
|
6
|
+
import { CircularIconButton as m } from "../../icon-button/CircularIconButton.js";
|
|
7
|
+
import { Icon as p } from "../../icon/Icon.js";
|
|
8
|
+
const f = a({
|
|
9
|
+
slots: {
|
|
10
|
+
base: "uy:flex uy:gap-100 uy:items-center uy:transition-colors uy:py-125 uy:sm:py-100 uy:px-150 uy:rounded-100 uy:sm:rounded-75 uy:bg-surface-form-high-enabled uy:focus-within:outline-utility-focus-ring uy:focus-within:outline-2 uy:focus-within:outline-offset-2 uy:text-content-form-active uy:typography-body",
|
|
11
|
+
input: "uy:flex-grow uy:outline-none uy:[&::-webkit-search-cancel-button]:hidden",
|
|
12
|
+
button: "uy:text-content-neutral-enabled"
|
|
13
|
+
}
|
|
14
|
+
}), d = s((h, e) => {
|
|
15
|
+
const o = y(), { base: n, input: u, button: r } = f();
|
|
16
|
+
return /* @__PURE__ */ i(c, { className: n(), ref: e, "data-dd-privacy": "mask", children: [
|
|
17
|
+
/* @__PURE__ */ t(
|
|
18
|
+
p,
|
|
19
|
+
{
|
|
20
|
+
src: "MagnifyingGlassOutlined",
|
|
21
|
+
role: "presentation",
|
|
22
|
+
color: "content.neutral.lowest"
|
|
23
|
+
}
|
|
24
|
+
),
|
|
25
|
+
/* @__PURE__ */ t(l, { className: u() }),
|
|
26
|
+
/* @__PURE__ */ t(
|
|
27
|
+
m,
|
|
28
|
+
{
|
|
29
|
+
title: o.formatMessage({
|
|
30
|
+
id: "unity:component:common:clear:title",
|
|
31
|
+
defaultMessage: "Clear"
|
|
32
|
+
}),
|
|
33
|
+
className: r(),
|
|
34
|
+
icon: "CloseOutlined",
|
|
35
|
+
asElement: "button"
|
|
36
|
+
}
|
|
37
|
+
)
|
|
38
|
+
] });
|
|
39
|
+
});
|
|
40
|
+
d.displayName = "SelectListSearchInput";
|
|
41
|
+
export {
|
|
42
|
+
d as SelectListSearchInput
|
|
43
|
+
};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { SelectionBehavior } from '@react-types/shared';
|
|
2
|
+
import { Key, Selection, SelectionMode } from 'react-aria-components';
|
|
3
|
+
interface SelectableItem {
|
|
4
|
+
id: Key;
|
|
5
|
+
label: string;
|
|
6
|
+
[key: string]: unknown;
|
|
7
|
+
}
|
|
8
|
+
export interface SelectedItemsSectionProps<TType extends SelectableItem> {
|
|
9
|
+
/**
|
|
10
|
+
* Array of selected items to display
|
|
11
|
+
*/
|
|
12
|
+
items: TType[];
|
|
13
|
+
/**
|
|
14
|
+
* Currently selected keys
|
|
15
|
+
*/
|
|
16
|
+
selectedKeys: Selection;
|
|
17
|
+
/**
|
|
18
|
+
* Callback when selection changes
|
|
19
|
+
*/
|
|
20
|
+
onSelectionChange: (keys: Selection) => void;
|
|
21
|
+
/**
|
|
22
|
+
* Selection mode (single, multiple)
|
|
23
|
+
*/
|
|
24
|
+
selectionMode?: SelectionMode;
|
|
25
|
+
/**
|
|
26
|
+
* Selection behavior (toggle, replace)
|
|
27
|
+
*/
|
|
28
|
+
selectionBehavior?: SelectionBehavior;
|
|
29
|
+
/**
|
|
30
|
+
* Accessible label for the section
|
|
31
|
+
*/
|
|
32
|
+
label: string;
|
|
33
|
+
/**
|
|
34
|
+
* CSS class for the ListBox
|
|
35
|
+
*/
|
|
36
|
+
className: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Displays selected items in a dedicated section at the top of the list.
|
|
40
|
+
* Items in this section can be deselected to move them back to the main list.
|
|
41
|
+
* @example
|
|
42
|
+
* ```tsx
|
|
43
|
+
* <SelectedItemsSection
|
|
44
|
+
* items={selectedItems}
|
|
45
|
+
* selectedKeys={selectedKeys}
|
|
46
|
+
* onSelectionChange={handleChange}
|
|
47
|
+
* selectionMode="multiple"
|
|
48
|
+
* label="Selected Options"
|
|
49
|
+
* className={selectedListBoxStyles}
|
|
50
|
+
* />
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export declare function SelectedItemsSection<TType extends SelectableItem>({ items, selectedKeys, onSelectionChange, selectionMode, selectionBehavior, label, className, ...rest }: SelectedItemsSectionProps<TType>): import("react/jsx-runtime").JSX.Element | null;
|
|
54
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { jsxs as a, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { Header as h, ListBox as p, Collection as u } from "react-aria-components";
|
|
3
|
+
import { SelectListOption as f } from "./SelectListOption.js";
|
|
4
|
+
function S({
|
|
5
|
+
items: r,
|
|
6
|
+
selectedKeys: o,
|
|
7
|
+
onSelectionChange: n,
|
|
8
|
+
selectionMode: i,
|
|
9
|
+
selectionBehavior: c,
|
|
10
|
+
label: t,
|
|
11
|
+
className: d,
|
|
12
|
+
...s
|
|
13
|
+
}) {
|
|
14
|
+
return r.length === 0 ? null : /* @__PURE__ */ a("div", { children: [
|
|
15
|
+
/* @__PURE__ */ e(h, { className: "uy:sr-only", children: t }),
|
|
16
|
+
/* @__PURE__ */ e(
|
|
17
|
+
p,
|
|
18
|
+
{
|
|
19
|
+
className: d,
|
|
20
|
+
items: r,
|
|
21
|
+
selectedKeys: o,
|
|
22
|
+
onSelectionChange: n,
|
|
23
|
+
selectionMode: i,
|
|
24
|
+
selectionBehavior: c,
|
|
25
|
+
escapeKeyBehavior: "none",
|
|
26
|
+
shouldFocusWrap: !1,
|
|
27
|
+
...s,
|
|
28
|
+
children: /* @__PURE__ */ e(u, { items: r, children: (l) => /* @__PURE__ */ e(f, { id: l.id, children: l.label }) })
|
|
29
|
+
}
|
|
30
|
+
)
|
|
31
|
+
] });
|
|
32
|
+
}
|
|
33
|
+
export {
|
|
34
|
+
S as SelectedItemsSection
|
|
35
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Partitions an array into two arrays based on a predicate function.
|
|
3
|
+
* More efficient than using filter twice.
|
|
4
|
+
* @param array - Array to partition
|
|
5
|
+
* @param predicate - Function to test each element
|
|
6
|
+
* @returns Tuple of [passing items, failing items]
|
|
7
|
+
* @example
|
|
8
|
+
* ```tsx
|
|
9
|
+
* const [evens, odds] = partition([1, 2, 3, 4], n => n % 2 === 0)
|
|
10
|
+
* // evens: [2, 4], odds: [1, 3]
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
export declare function partition<T>(array: T[], predicate: (item: T) => boolean): [T[], T[]];
|
|
@@ -1,6 +1,2 @@
|
|
|
1
1
|
import { ToggleGroupState } from 'react-stately';
|
|
2
|
-
export
|
|
3
|
-
state: ToggleGroupState;
|
|
4
|
-
isInvalid?: boolean;
|
|
5
|
-
}
|
|
6
|
-
export declare const SelectableButtonGroupContext: import('react').Context<SelectableButtonGroupContextValue | null>;
|
|
2
|
+
export declare const SelectableButtonGroupContext: import('react').Context<ToggleGroupState | null>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { VariantProps } from '@payfit/unity-themes';
|
|
2
2
|
import { AriaToggleButtonGroupProps } from 'react-aria';
|
|
3
3
|
import { Key } from 'react-stately';
|
|
4
|
-
export declare const selectableButtonGroup: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "uy:flex uy:gap-100", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "uy:flex uy:gap-100", unknown, unknown, undefined>>;
|
|
4
|
+
export declare const selectableButtonGroup: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "uy:group uy:flex uy:gap-100 uy:flex-wrap", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "uy:group uy:flex uy:gap-100 uy:flex-wrap", unknown, unknown, undefined>>;
|
|
5
5
|
export interface SelectableButtonGroupProps extends VariantProps<typeof selectableButtonGroup>, Omit<AriaToggleButtonGroupProps, 'selectedKeys' | 'defaultSelectedKeys' | 'onSelectionChange' | 'style'> {
|
|
6
6
|
/**
|
|
7
7
|
* The SelectableButton components to render within the group.
|
|
@@ -26,6 +26,11 @@ export interface SelectableButtonGroupProps extends VariantProps<typeof selectab
|
|
|
26
26
|
* Required when using the component in controlled mode.
|
|
27
27
|
*/
|
|
28
28
|
onChange?: (keys: Key[]) => void;
|
|
29
|
+
/**
|
|
30
|
+
* Callback fired when focus leaves the group.
|
|
31
|
+
* Useful for form validation and tracking user interaction.
|
|
32
|
+
*/
|
|
33
|
+
onBlur?: (event: React.FocusEvent<HTMLDivElement>) => void;
|
|
29
34
|
/**
|
|
30
35
|
* Marks the group and all contained buttons as invalid, applying error styles.
|
|
31
36
|
* Use this to indicate a validation error for the group.
|