@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,18 @@
|
|
|
1
|
+
import { VariantProps } from '@payfit/unity-themes';
|
|
2
|
+
import { ListBoxItemProps } from 'react-aria-components';
|
|
3
|
+
export declare const addFilterItem: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
4
|
+
export interface AddFilterItemProps extends VariantProps<typeof addFilterItem>, ListBoxItemProps {
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Internal component that renders individual filter options in the add filter menu.
|
|
8
|
+
* Each item represents a filter that can be added to the toolbar.
|
|
9
|
+
* @param props - AddFilterItem component props
|
|
10
|
+
* @param props.id - Unique identifier for the filter item
|
|
11
|
+
* @param props.children - Label content to display for the filter
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
declare const AddFilterItem: {
|
|
15
|
+
({ id, children, ...rest }: AddFilterItemProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
displayName: string;
|
|
17
|
+
};
|
|
18
|
+
export { AddFilterItem };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { uyTv as o } from "@payfit/unity-themes";
|
|
3
|
+
import { ListBoxItem as i } from "react-aria-components";
|
|
4
|
+
const s = o({
|
|
5
|
+
base: [
|
|
6
|
+
"uy:flex uy:items-center uy:gap-100 uy:text-content-neutral uy:typography-body",
|
|
7
|
+
"uy:px-150 uy:py-100",
|
|
8
|
+
"uy:rounded-50 uy:cursor-pointer",
|
|
9
|
+
"uy:hover:bg-surface-neutral-hover",
|
|
10
|
+
"uy:active:bg-surface-neutral-pressed",
|
|
11
|
+
"uy:data-[focus-visible]:outline-2 uy:data-[focus-visible]:outline-utility-focus-ring uy:data-[focus-visible]:outline-offset-2"
|
|
12
|
+
]
|
|
13
|
+
}), y = ({ id: e, children: t, ...u }) => /* @__PURE__ */ r(i, { className: s(), id: e, ...u, children: t });
|
|
14
|
+
y.displayName = "AddFilterItem";
|
|
15
|
+
export {
|
|
16
|
+
y as AddFilterItem,
|
|
17
|
+
s as addFilterItem
|
|
18
|
+
};
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { ColumnFiltersState } from '@tanstack/react-table';
|
|
2
|
+
import { AppliedFilter } from '../FilterToolbar.types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Adapters for converting FilterToolbar's AppliedFilter format to and from external formats.
|
|
5
|
+
*
|
|
6
|
+
* Use these adapters to integrate FilterToolbar with other libraries like Tanstack Table.
|
|
7
|
+
* Each adapter provides bidirectional conversion methods.
|
|
8
|
+
* @example
|
|
9
|
+
* ```tsx
|
|
10
|
+
* import { FilterAdapters } from '@payfit/unity-components'
|
|
11
|
+
*
|
|
12
|
+
* // Convert FilterToolbar filters to Tanstack Table format
|
|
13
|
+
* const columnFilters = FilterAdapters.TanstackTable.toColumnFilters(appliedFilters)
|
|
14
|
+
*
|
|
15
|
+
* // Convert Tanstack Table filters back to FilterToolbar format
|
|
16
|
+
* const appliedFilters = FilterAdapters.TanstackTable.fromColumnFilters(columnFilters)
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare const FilterAdapters: {
|
|
20
|
+
/**
|
|
21
|
+
* Adapter for Tanstack Table integration.
|
|
22
|
+
*
|
|
23
|
+
* Handles conversion between FilterToolbar's AppliedFilter format and
|
|
24
|
+
* Tanstack Table's ColumnFiltersState format.
|
|
25
|
+
* @example
|
|
26
|
+
* ```tsx
|
|
27
|
+
* const [appliedFilters, setAppliedFilters] = useState<AppliedFilter[]>([])
|
|
28
|
+
* const columnFilters = FilterAdapters.TanstackTable.toColumnFilters(appliedFilters)
|
|
29
|
+
*
|
|
30
|
+
* const table = useReactTable({
|
|
31
|
+
* state: { columnFilters },
|
|
32
|
+
* // ... other config
|
|
33
|
+
* })
|
|
34
|
+
*
|
|
35
|
+
* return (
|
|
36
|
+
* <>
|
|
37
|
+
* <FilterToolbar
|
|
38
|
+
* filterDefs={filterDefs}
|
|
39
|
+
* initialValue={appliedFilters}
|
|
40
|
+
* onChange={setAppliedFilters}
|
|
41
|
+
* />
|
|
42
|
+
* <DataTable table={table} />
|
|
43
|
+
* </>
|
|
44
|
+
* )
|
|
45
|
+
* ```
|
|
46
|
+
* @see {@link https://tanstack.com/table/latest/docs/guide/filters Tanstack Table Filters Documentation}
|
|
47
|
+
*/
|
|
48
|
+
TanstackTable: {
|
|
49
|
+
/**
|
|
50
|
+
* Converts FilterToolbar's AppliedFilter format to Tanstack Table's ColumnFiltersState format.
|
|
51
|
+
*
|
|
52
|
+
* This method handles two key transformations:
|
|
53
|
+
* 1. Filters out empty filters (filters without values) so the table shows all results
|
|
54
|
+
* 2. Converts Set values to Arrays (React Aria uses Set, Tanstack Table uses Array)
|
|
55
|
+
* @param appliedFilters - Array of applied filters from FilterToolbar's onChange callback
|
|
56
|
+
* @returns Column filters compatible with Tanstack Table's state.columnFilters
|
|
57
|
+
* @remarks
|
|
58
|
+
* - Empty filters (undefined values or empty Sets) are excluded from the result
|
|
59
|
+
* - This ensures that adding a filter without selecting values doesn't hide all table rows
|
|
60
|
+
* - Set values are converted to Arrays for compatibility with Tanstack Table's filter functions
|
|
61
|
+
* @example
|
|
62
|
+
* ```tsx
|
|
63
|
+
* const columnFilters = FilterAdapters.TanstackTable.toColumnFilters([
|
|
64
|
+
* { id: 'status', value: new Set(['active', 'pending']) },
|
|
65
|
+
* { id: 'department', value: undefined }, // Will be filtered out
|
|
66
|
+
* ])
|
|
67
|
+
* // Result: [{ id: 'status', value: ['active', 'pending'] }]
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
toColumnFilters(appliedFilters: AppliedFilter[]): ColumnFiltersState;
|
|
71
|
+
/**
|
|
72
|
+
* Converts Tanstack Table's ColumnFiltersState format to FilterToolbar's AppliedFilter format.
|
|
73
|
+
*
|
|
74
|
+
* This is useful when you need to initialize FilterToolbar from existing table state,
|
|
75
|
+
* URL parameters, or server-side filter state.
|
|
76
|
+
* @param columnFilters - Column filters from Tanstack Table's state
|
|
77
|
+
* @returns Array of applied filters compatible with FilterToolbar's initialValue
|
|
78
|
+
* @remarks
|
|
79
|
+
* - Array values are converted to Sets for compatibility with React Aria's SelectList
|
|
80
|
+
* - In most cases, you should make FilterToolbar the source of truth and use toColumnFilters
|
|
81
|
+
* to derive table state instead of syncing bidirectionally
|
|
82
|
+
* @example
|
|
83
|
+
* ```tsx
|
|
84
|
+
* // Initialize FilterToolbar from URL params
|
|
85
|
+
* const urlFilters = parseUrlToColumnFilters(searchParams)
|
|
86
|
+
* const appliedFilters = FilterAdapters.TanstackTable.fromColumnFilters(urlFilters)
|
|
87
|
+
*
|
|
88
|
+
* return <FilterToolbar initialValue={appliedFilters} />
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
fromColumnFilters(columnFilters: ColumnFiltersState): AppliedFilter[];
|
|
92
|
+
};
|
|
93
|
+
};
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
const u = {
|
|
2
|
+
/**
|
|
3
|
+
* Adapter for Tanstack Table integration.
|
|
4
|
+
*
|
|
5
|
+
* Handles conversion between FilterToolbar's AppliedFilter format and
|
|
6
|
+
* Tanstack Table's ColumnFiltersState format.
|
|
7
|
+
* @example
|
|
8
|
+
* ```tsx
|
|
9
|
+
* const [appliedFilters, setAppliedFilters] = useState<AppliedFilter[]>([])
|
|
10
|
+
* const columnFilters = FilterAdapters.TanstackTable.toColumnFilters(appliedFilters)
|
|
11
|
+
*
|
|
12
|
+
* const table = useReactTable({
|
|
13
|
+
* state: { columnFilters },
|
|
14
|
+
* // ... other config
|
|
15
|
+
* })
|
|
16
|
+
*
|
|
17
|
+
* return (
|
|
18
|
+
* <>
|
|
19
|
+
* <FilterToolbar
|
|
20
|
+
* filterDefs={filterDefs}
|
|
21
|
+
* initialValue={appliedFilters}
|
|
22
|
+
* onChange={setAppliedFilters}
|
|
23
|
+
* />
|
|
24
|
+
* <DataTable table={table} />
|
|
25
|
+
* </>
|
|
26
|
+
* )
|
|
27
|
+
* ```
|
|
28
|
+
* @see {@link https://tanstack.com/table/latest/docs/guide/filters Tanstack Table Filters Documentation}
|
|
29
|
+
*/
|
|
30
|
+
TanstackTable: {
|
|
31
|
+
/**
|
|
32
|
+
* Converts FilterToolbar's AppliedFilter format to Tanstack Table's ColumnFiltersState format.
|
|
33
|
+
*
|
|
34
|
+
* This method handles two key transformations:
|
|
35
|
+
* 1. Filters out empty filters (filters without values) so the table shows all results
|
|
36
|
+
* 2. Converts Set values to Arrays (React Aria uses Set, Tanstack Table uses Array)
|
|
37
|
+
* @param appliedFilters - Array of applied filters from FilterToolbar's onChange callback
|
|
38
|
+
* @returns Column filters compatible with Tanstack Table's state.columnFilters
|
|
39
|
+
* @remarks
|
|
40
|
+
* - Empty filters (undefined values or empty Sets) are excluded from the result
|
|
41
|
+
* - This ensures that adding a filter without selecting values doesn't hide all table rows
|
|
42
|
+
* - Set values are converted to Arrays for compatibility with Tanstack Table's filter functions
|
|
43
|
+
* @example
|
|
44
|
+
* ```tsx
|
|
45
|
+
* const columnFilters = FilterAdapters.TanstackTable.toColumnFilters([
|
|
46
|
+
* { id: 'status', value: new Set(['active', 'pending']) },
|
|
47
|
+
* { id: 'department', value: undefined }, // Will be filtered out
|
|
48
|
+
* ])
|
|
49
|
+
* // Result: [{ id: 'status', value: ['active', 'pending'] }]
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
toColumnFilters(e) {
|
|
53
|
+
return e.filter((a) => a.value instanceof Set ? a.value.size > 0 : a.value !== void 0 && a.value !== null).map((a) => ({
|
|
54
|
+
id: a.id,
|
|
55
|
+
value: a.value instanceof Set ? Array.from(a.value) : a.value
|
|
56
|
+
}));
|
|
57
|
+
},
|
|
58
|
+
/**
|
|
59
|
+
* Converts Tanstack Table's ColumnFiltersState format to FilterToolbar's AppliedFilter format.
|
|
60
|
+
*
|
|
61
|
+
* This is useful when you need to initialize FilterToolbar from existing table state,
|
|
62
|
+
* URL parameters, or server-side filter state.
|
|
63
|
+
* @param columnFilters - Column filters from Tanstack Table's state
|
|
64
|
+
* @returns Array of applied filters compatible with FilterToolbar's initialValue
|
|
65
|
+
* @remarks
|
|
66
|
+
* - Array values are converted to Sets for compatibility with React Aria's SelectList
|
|
67
|
+
* - In most cases, you should make FilterToolbar the source of truth and use toColumnFilters
|
|
68
|
+
* to derive table state instead of syncing bidirectionally
|
|
69
|
+
* @example
|
|
70
|
+
* ```tsx
|
|
71
|
+
* // Initialize FilterToolbar from URL params
|
|
72
|
+
* const urlFilters = parseUrlToColumnFilters(searchParams)
|
|
73
|
+
* const appliedFilters = FilterAdapters.TanstackTable.fromColumnFilters(urlFilters)
|
|
74
|
+
*
|
|
75
|
+
* return <FilterToolbar initialValue={appliedFilters} />
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
fromColumnFilters(e) {
|
|
79
|
+
return e.map((a) => ({
|
|
80
|
+
id: a.id,
|
|
81
|
+
value: Array.isArray(a.value) ? new Set(a.value) : a.value
|
|
82
|
+
}));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
export {
|
|
87
|
+
u as FilterAdapters
|
|
88
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalizes filter values to serializable formats (string or string array).
|
|
3
|
+
* This ensures filter values can be safely serialized to URLs or JSON.
|
|
4
|
+
* Handles various JavaScript types including primitives, arrays, Sets, Dates, and objects.
|
|
5
|
+
* @param value - The filter value to normalize (can be any type)
|
|
6
|
+
* @returns A string, string array, or undefined
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* // React Aria Selection (Set)
|
|
10
|
+
* normalizeFilterValue(new Set(['apple', 'banana'])) // ['apple', 'banana']
|
|
11
|
+
*
|
|
12
|
+
* // Arrays
|
|
13
|
+
* normalizeFilterValue(['apple', 'banana', 123]) // ['apple', 'banana', '123']
|
|
14
|
+
*
|
|
15
|
+
* // Primitives
|
|
16
|
+
* normalizeFilterValue(42) // '42'
|
|
17
|
+
* normalizeFilterValue('hello') // 'hello'
|
|
18
|
+
*
|
|
19
|
+
* // Objects
|
|
20
|
+
* normalizeFilterValue({ key: 'value' }) // '{"key":"value"}'
|
|
21
|
+
* ```
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
export declare function normalizeFilterValue(value: unknown): string | string[] | undefined;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
function i(r) {
|
|
2
|
+
if (r != null) {
|
|
3
|
+
if (Array.isArray(r))
|
|
4
|
+
return r.map((t) => String(t));
|
|
5
|
+
if (typeof r == "object" && Symbol.iterator in r)
|
|
6
|
+
return Array.from(r).map((t) => String(t));
|
|
7
|
+
if (r instanceof Date)
|
|
8
|
+
return r.toISOString();
|
|
9
|
+
if (typeof r == "object")
|
|
10
|
+
return JSON.stringify(r);
|
|
11
|
+
if (typeof r == "string")
|
|
12
|
+
return r;
|
|
13
|
+
if (typeof r == "number" || typeof r == "boolean")
|
|
14
|
+
return String(r);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export {
|
|
18
|
+
i as normalizeFilterValue
|
|
19
|
+
};
|
|
@@ -36,6 +36,8 @@ type FormComponent = {
|
|
|
36
36
|
* ```bash
|
|
37
37
|
* $ yarn add zod react-hook-form
|
|
38
38
|
* ```
|
|
39
|
+
* @deprecated React Hook Form components are deprecated. Use the TanStack Form version instead.
|
|
40
|
+
* @see Storybook docs: https://unity-components.payfit.io/?path=/docs/forms-introduction-to-unity-forms--docs
|
|
39
41
|
*/
|
|
40
42
|
declare const Form: FormComponent;
|
|
41
43
|
export { Form };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `TanstackForm` is a form wrapper bound to the TanStack form context.
|
|
3
|
+
* It prevents the default browser submission, delegates to the TanStack form
|
|
4
|
+
* `handleSubmit`, and then invokes the provided `onSubmit` (if any).
|
|
5
|
+
*
|
|
6
|
+
* Behavior:
|
|
7
|
+
* - `onSubmit` handler: prevents default, calls `form.handleSubmit(event)`, then
|
|
8
|
+
* forwards the event to the user-provided `onSubmit`.
|
|
9
|
+
* - Exposes a standard `<form>` element API via `ComponentProps<'form'>`.
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* ```tsx
|
|
13
|
+
* function Example() {
|
|
14
|
+
* const form = useTanstackUnityForm<{ name: string }>({ validators: {} })
|
|
15
|
+
* return (
|
|
16
|
+
* <TanstackForm>
|
|
17
|
+
* <form.AppField name="name">{() => <TanstackInput />}</form.AppField>
|
|
18
|
+
* </TanstackForm>
|
|
19
|
+
* )
|
|
20
|
+
* }
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
declare const TanstackForm: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').FormHTMLAttributes<HTMLFormElement>, HTMLFormElement>, "ref"> & import('react').RefAttributes<HTMLFormElement>>;
|
|
24
|
+
export { TanstackForm };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as p } from "react";
|
|
3
|
+
import { uyTv as c } from "@payfit/unity-themes";
|
|
4
|
+
import { useFormContext as f } from "../../hooks/tanstack-form-context.js";
|
|
5
|
+
const u = c({
|
|
6
|
+
base: []
|
|
7
|
+
}), d = p(
|
|
8
|
+
({ children: t, onSubmit: r, className: a, ...m }, s) => {
|
|
9
|
+
const i = f();
|
|
10
|
+
return /* @__PURE__ */ n(
|
|
11
|
+
"form",
|
|
12
|
+
{
|
|
13
|
+
"data-dd-privacy": "mask",
|
|
14
|
+
onSubmit: (o) => {
|
|
15
|
+
o.preventDefault(), o.stopPropagation(), i.handleSubmit(o), r?.(o);
|
|
16
|
+
},
|
|
17
|
+
...m,
|
|
18
|
+
ref: s,
|
|
19
|
+
noValidate: !0,
|
|
20
|
+
className: u({ className: a }),
|
|
21
|
+
children: t
|
|
22
|
+
}
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
);
|
|
26
|
+
d.displayName = "TanstackForm";
|
|
27
|
+
export {
|
|
28
|
+
d as TanstackForm
|
|
29
|
+
};
|
|
@@ -54,6 +54,8 @@ export interface FormFieldProps<TFieldValues extends FieldValues = FieldValues,
|
|
|
54
54
|
* }
|
|
55
55
|
* ```
|
|
56
56
|
* @note Use this component directly from the `useUnityForm` hook to have type-safety based on the form schema.
|
|
57
|
+
* @deprecated React Hook Form components are deprecated. Use the TanStack Form version instead.
|
|
58
|
+
* @see Storybook docs: https://unity-components.payfit.io/?path=/docs/forms-introduction-to-unity-forms--docs
|
|
57
59
|
*/
|
|
58
60
|
declare const FormField: React.ForwardRefExoticComponent<FormFieldProps<FieldValues, string> & React.RefAttributes<HTMLDivElement>>;
|
|
59
61
|
export { FormField };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type FieldA11yContextValue = {
|
|
2
|
+
fieldGroupId: string;
|
|
3
|
+
labelId: string;
|
|
4
|
+
inputId: string;
|
|
5
|
+
feedbackTextId: string;
|
|
6
|
+
helperTextId?: string;
|
|
7
|
+
contextualLinkId?: string;
|
|
8
|
+
};
|
|
9
|
+
export declare const FieldA11yContext: import('react').Context<FieldA11yContextValue>;
|
|
10
|
+
export declare function useFieldA11yContext(): FieldA11yContextValue;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { useContext as e, createContext as t } from "react";
|
|
2
|
+
const o = t({
|
|
3
|
+
fieldGroupId: "",
|
|
4
|
+
labelId: "",
|
|
5
|
+
inputId: "",
|
|
6
|
+
feedbackTextId: ""
|
|
7
|
+
});
|
|
8
|
+
function d() {
|
|
9
|
+
return e(o);
|
|
10
|
+
}
|
|
11
|
+
export {
|
|
12
|
+
o as FieldA11yContext,
|
|
13
|
+
d as useFieldA11yContext
|
|
14
|
+
};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export interface FormFieldProps extends React.PropsWithChildren {
|
|
2
|
+
/** Additional class name */
|
|
3
|
+
className?: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* The `FormField` component represents a single field in a Unity form. It provides a set of features to manage the proper accessibility of the a form field's parts, such as the label and the helper text
|
|
7
|
+
* @example
|
|
8
|
+
* ```tsx
|
|
9
|
+
* import { useTanstackUnityForm } from '@payfit/unity-components'
|
|
10
|
+
* import { z } from 'zod'
|
|
11
|
+
*
|
|
12
|
+
* const loginSchema = z.object({
|
|
13
|
+
* email: z.string().email('Invalid email address'),
|
|
14
|
+
* password: z.string().min(8, 'Password must be at least 8 characters'),
|
|
15
|
+
* })
|
|
16
|
+
*
|
|
17
|
+
* const MyForm = () => {
|
|
18
|
+
* const form = useTanstackUnityForm({
|
|
19
|
+
* validators: {
|
|
20
|
+
* onBlur: loginSchema,
|
|
21
|
+
* },
|
|
22
|
+
* defaultValues: {
|
|
23
|
+
* email: '',
|
|
24
|
+
* password: '',
|
|
25
|
+
* },
|
|
26
|
+
* })
|
|
27
|
+
*
|
|
28
|
+
* const submitForm = (values: z.infer<typeof loginSchema>) => {
|
|
29
|
+
* console.log(values)
|
|
30
|
+
* }
|
|
31
|
+
*
|
|
32
|
+
* return (
|
|
33
|
+
* <form.Form>
|
|
34
|
+
* <form.FormField>
|
|
35
|
+
* <form.FormLabel>Email</form.FormLabel>
|
|
36
|
+
* <form.FormHelperText>Enter your primary email address</form.FormHelperText>
|
|
37
|
+
* <form.Input type="email"/>
|
|
38
|
+
* <form.FormFeedbackText/>
|
|
39
|
+
* </form.FormField>
|
|
40
|
+
* </Form>
|
|
41
|
+
* )
|
|
42
|
+
* }
|
|
43
|
+
* ```
|
|
44
|
+
* @note Use this component directly from the `useUnityForm` hook to have type-safety and proper state management.
|
|
45
|
+
*/
|
|
46
|
+
export declare function TanstackFormField({ children, className }: FormFieldProps): import("react/jsx-runtime").JSX.Element;
|
|
47
|
+
export declare namespace TanstackFormField {
|
|
48
|
+
var displayName: string;
|
|
49
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { jsx as f } from "react/jsx-runtime";
|
|
2
|
+
import { useId as I, useRef as k, useState as u, useLayoutEffect as _, useMemo as T } from "react";
|
|
3
|
+
import { uyTv as F } from "@payfit/unity-themes";
|
|
4
|
+
import { useFieldContext as $ } from "../../hooks/tanstack-form-context.js";
|
|
5
|
+
import { FieldA11yContext as b } from "./TanstackFormField.context.js";
|
|
6
|
+
const h = F({
|
|
7
|
+
base: ["uy:group/field", "uy:flex uy:flex-col uy:gap-100"]
|
|
8
|
+
});
|
|
9
|
+
function v({ children: l, className: c }) {
|
|
10
|
+
const m = I(), r = k(null), o = $(), n = o.form.formId || m, a = o.name.replace(/[^\w-]/g, "-"), [i, p] = u(!1), [s, x] = u(!1);
|
|
11
|
+
_(() => {
|
|
12
|
+
const e = r.current;
|
|
13
|
+
if (!e) return;
|
|
14
|
+
const t = e.querySelector(
|
|
15
|
+
'[data-unity-slot="form-field-helper-text"]'
|
|
16
|
+
), y = e.querySelector(
|
|
17
|
+
'[data-unity-slot="form-field-contextual-link"]'
|
|
18
|
+
);
|
|
19
|
+
p(!!t), x(!!y);
|
|
20
|
+
}, [l]);
|
|
21
|
+
const d = T(() => {
|
|
22
|
+
const e = `form-${n}-field-${a}`, t = {
|
|
23
|
+
fieldGroupId: e,
|
|
24
|
+
labelId: `${e}__label`,
|
|
25
|
+
inputId: `${e}__input`,
|
|
26
|
+
feedbackTextId: `${e}__feedback-text`
|
|
27
|
+
};
|
|
28
|
+
return i && (t.helperTextId = `${e}__helper-text`), s && (t.contextualLinkId = `${e}__contextual-link`), t;
|
|
29
|
+
}, [n, a, i, s]);
|
|
30
|
+
return /* @__PURE__ */ f(b.Provider, { value: d, children: /* @__PURE__ */ f(
|
|
31
|
+
"div",
|
|
32
|
+
{
|
|
33
|
+
ref: r,
|
|
34
|
+
id: d.fieldGroupId,
|
|
35
|
+
role: "group",
|
|
36
|
+
className: h({ className: c }),
|
|
37
|
+
"data-unity-slot": "form-field",
|
|
38
|
+
"data-invalid": !o.state.meta.isValid,
|
|
39
|
+
children: l
|
|
40
|
+
}
|
|
41
|
+
) });
|
|
42
|
+
}
|
|
43
|
+
v.displayName = "TanstackFormField";
|
|
44
|
+
export {
|
|
45
|
+
v as TanstackFormField
|
|
46
|
+
};
|
|
@@ -22,6 +22,8 @@ export type FormControlProps = React.ComponentProps<typeof Slot>;
|
|
|
22
22
|
* ```
|
|
23
23
|
* @remarks
|
|
24
24
|
* [API & Docs](https://unity-components.payfit.io/?path=/docs/forms-formfield-formcontrol--docs)
|
|
25
|
+
* @deprecated React Hook Form components are deprecated. Use the TanStack Form version instead.
|
|
26
|
+
* @see Storybook docs: https://unity-components.payfit.io/?path=/docs/forms-introduction-to-unity-forms--docs
|
|
25
27
|
*/
|
|
26
28
|
declare function FormControl({ ...props }: FormControlProps): import("react/jsx-runtime").JSX.Element;
|
|
27
29
|
declare namespace FormControl {
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* FormErrorText is a component that displays error text for a form field.
|
|
3
|
+
* @deprecated React Hook Form components are deprecated. Use the TanStack Form version instead.
|
|
4
|
+
* @see Storybook docs: https://unity-components.payfit.io/?path=/docs/forms-introduction-to-unity-forms--docs
|
|
3
5
|
*/
|
|
4
6
|
declare const FormFeedbackText: import('react').ForwardRefExoticComponent<{
|
|
5
7
|
children?: import('react').ReactNode | undefined;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* FormHelperText is a component that displays helper text for a form field.
|
|
3
|
+
* @deprecated React Hook Form components are deprecated. Use the TanStack Form version instead.
|
|
4
|
+
* @see Storybook docs: https://unity-components.payfit.io/?path=/docs/forms-introduction-to-unity-forms--docs
|
|
3
5
|
*/
|
|
4
6
|
declare const FormHelperText: import('react').ForwardRefExoticComponent<{
|
|
5
7
|
children?: import('react').ReactNode | undefined;
|
|
@@ -3,6 +3,8 @@ export type FormLabelProps = Omit<LabelProps, 'isRequired'>;
|
|
|
3
3
|
/**
|
|
4
4
|
* FormLabel is a component that displays a label for a form field.
|
|
5
5
|
* It is used to provide context for the form field.
|
|
6
|
+
* @deprecated React Hook Form components are deprecated. Use the TanStack Form version instead.
|
|
7
|
+
* @see Storybook docs: https://unity-components.payfit.io/?path=/docs/forms-introduction-to-unity-forms--docs
|
|
6
8
|
*/
|
|
7
9
|
declare const FormLabel: import('react').ForwardRefExoticComponent<FormLabelProps & import('react').RefAttributes<HTMLLabelElement>>;
|
|
8
10
|
export { FormLabel };
|
|
@@ -15,6 +15,8 @@ interface FormContextualLinkActionProps {
|
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
17
17
|
* FormContextualLink is a component that displays a contextual link for a form field.
|
|
18
|
+
* @deprecated React Hook Form components are deprecated. Use the TanStack Form version instead.
|
|
19
|
+
* @see Storybook docs: https://unity-components.payfit.io/?path=/docs/forms-introduction-to-unity-forms--docs
|
|
18
20
|
*/
|
|
19
21
|
declare const RawFormContextualLink: import('react').ForwardRefExoticComponent<PropsWithChildren<FormContextualLinkProps | FormContextualLinkActionProps> & import('react').RefAttributes<HTMLButtonElement | HTMLAnchorElement>>;
|
|
20
22
|
export { RawFormContextualLink };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { TextProps } from '../../text/Text.js';
|
|
2
|
+
export type TanstackFormFeedbackTextProps = Omit<TextProps, 'variant' | 'color' | 'className'>;
|
|
3
|
+
/**
|
|
4
|
+
* `TanstackFormFeedbackText` renders the first validation message for the
|
|
5
|
+
* current TanStack form field when the field is invalid
|
|
6
|
+
*
|
|
7
|
+
* Behavior:
|
|
8
|
+
* - Returns `null` when the field is valid or has no errors.
|
|
9
|
+
* - When invalid, renders the first error message.
|
|
10
|
+
*/
|
|
11
|
+
declare const TanstackFormFeedbackText: import('react').ForwardRefExoticComponent<TanstackFormFeedbackTextProps & import('react').RefAttributes<HTMLSpanElement>>;
|
|
12
|
+
export { TanstackFormFeedbackText };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as l } from "react";
|
|
3
|
+
import { useStore as s } from "@tanstack/react-form";
|
|
4
|
+
import { useFieldContext as c } from "../../../hooks/tanstack-form-context.js";
|
|
5
|
+
import { Text as f } from "../../text/Text.js";
|
|
6
|
+
import { useFieldA11yContext as u } from "../TanstackFormField.context.js";
|
|
7
|
+
const x = l((r, t) => {
|
|
8
|
+
const a = c(), i = u(), { errors: o, invalid: d, isTouched: m } = s(a.store, (e) => ({
|
|
9
|
+
errors: e.meta.errors,
|
|
10
|
+
invalid: !e.meta.isValid,
|
|
11
|
+
isTouched: e.meta.isTouched
|
|
12
|
+
}));
|
|
13
|
+
return !m || !d || o.length === 0 ? null : /* @__PURE__ */ n(
|
|
14
|
+
f,
|
|
15
|
+
{
|
|
16
|
+
"data-dd-privacy": "allow",
|
|
17
|
+
...r,
|
|
18
|
+
ref: t,
|
|
19
|
+
id: i.feedbackTextId || r.id,
|
|
20
|
+
role: "alert",
|
|
21
|
+
"data-unity-slot": "form-feedback-text",
|
|
22
|
+
variant: "bodySmallStrong",
|
|
23
|
+
color: "content.form.invalid",
|
|
24
|
+
asElement: "span",
|
|
25
|
+
children: o[0].message
|
|
26
|
+
}
|
|
27
|
+
);
|
|
28
|
+
});
|
|
29
|
+
x.displayName = "TanstackFormFeedbackText";
|
|
30
|
+
export {
|
|
31
|
+
x as TanstackFormFeedbackText
|
|
32
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { TextProps } from '../../text/Text.js';
|
|
2
|
+
export type TanstackFormHelperTextProps = Omit<TextProps, 'variant' | 'color' | 'className'>;
|
|
3
|
+
/**
|
|
4
|
+
* `TanstackFormHelperText` displays non-blocking helper text for the current
|
|
5
|
+
* TanStack form field.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* - Place directly under an input/textarea within a `<form.AppField name="…">`.
|
|
9
|
+
*/
|
|
10
|
+
declare const TanstackFormHelperText: import('react').ForwardRefExoticComponent<TanstackFormHelperTextProps & import('react').RefAttributes<HTMLSpanElement>>;
|
|
11
|
+
export { TanstackFormHelperText };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as a } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as l } from "react";
|
|
3
|
+
import { Text as m } from "../../text/Text.js";
|
|
4
|
+
import { useFieldA11yContext as n } from "../TanstackFormField.context.js";
|
|
5
|
+
const d = l(({ children: e, ...t }, r) => {
|
|
6
|
+
const o = n();
|
|
7
|
+
return /* @__PURE__ */ a(
|
|
8
|
+
m,
|
|
9
|
+
{
|
|
10
|
+
"data-dd-privacy": "allow",
|
|
11
|
+
...t,
|
|
12
|
+
id: o.helperTextId || t.id,
|
|
13
|
+
"data-unity-slot": "form-field-helper-text",
|
|
14
|
+
variant: "bodySmall",
|
|
15
|
+
asElement: "span",
|
|
16
|
+
color: "content.neutral.low",
|
|
17
|
+
ref: r,
|
|
18
|
+
children: e
|
|
19
|
+
}
|
|
20
|
+
);
|
|
21
|
+
});
|
|
22
|
+
d.displayName = "TanstackFormHelperText";
|
|
23
|
+
export {
|
|
24
|
+
d as TanstackFormHelperText
|
|
25
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { LabelProps } from '../../label/Label.js';
|
|
2
|
+
export type FormLabelProps = LabelProps;
|
|
3
|
+
/**
|
|
4
|
+
* `TanstackFormLabel` renders the label for the current TanStack form field.
|
|
5
|
+
* It is used to provide context for the form field.
|
|
6
|
+
*/
|
|
7
|
+
declare const TanstackFormLabel: import('react').ForwardRefExoticComponent<LabelProps & import('react').RefAttributes<HTMLLabelElement>>;
|
|
8
|
+
export { TanstackFormLabel };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as i } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as l } from "react";
|
|
3
|
+
import { Label as n } from "../../label/Label.js";
|
|
4
|
+
import { useFieldA11yContext as d } from "../TanstackFormField.context.js";
|
|
5
|
+
const s = l(
|
|
6
|
+
({ children: e, isRequired: o, ...r }, t) => {
|
|
7
|
+
const { requiredVariant: m } = r, a = d();
|
|
8
|
+
return /* @__PURE__ */ i(
|
|
9
|
+
n,
|
|
10
|
+
{
|
|
11
|
+
ref: t,
|
|
12
|
+
htmlFor: a.inputId,
|
|
13
|
+
id: a.labelId,
|
|
14
|
+
isRequired: o,
|
|
15
|
+
requiredVariant: m,
|
|
16
|
+
className: "uy:leading-[1]!",
|
|
17
|
+
...r,
|
|
18
|
+
children: e
|
|
19
|
+
}
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
);
|
|
23
|
+
s.displayName = "Label";
|
|
24
|
+
export {
|
|
25
|
+
s as TanstackFormLabel
|
|
26
|
+
};
|