@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,15 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { LabelProps } from '../label/Label.js';
|
|
3
|
+
import { TanstackPhoneNumberInputProps } from '../phone-number/TanstackPhoneNumberInput.js';
|
|
4
|
+
interface FieldProps extends Pick<LabelProps, 'isRequired' | 'requiredVariant'> {
|
|
5
|
+
/** The label for the text field. */
|
|
6
|
+
label: string;
|
|
7
|
+
/** Helper text to display below the text field. */
|
|
8
|
+
helperText?: ReactNode;
|
|
9
|
+
/** A contextual link to display below the select field. */
|
|
10
|
+
contextualLink?: ReactNode;
|
|
11
|
+
}
|
|
12
|
+
export interface PhoneNumberFieldProps extends FieldProps, TanstackPhoneNumberInputProps {
|
|
13
|
+
}
|
|
14
|
+
declare const TanstackPhoneNumberField: import('react').ForwardRefExoticComponent<PhoneNumberFieldProps & import('react').RefAttributes<unknown>>;
|
|
15
|
+
export { TanstackPhoneNumberField };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsxs as i, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as c } from "react";
|
|
3
|
+
import { TanstackFormFeedbackText as s } from "../form-field/parts/TanstackFormFeedbackText.js";
|
|
4
|
+
import { TanstackFormHelperText as p } from "../form-field/parts/TanstackFormHelperText.js";
|
|
5
|
+
import { TanstackFormLabel as d } from "../form-field/parts/TanstackFormLabel.js";
|
|
6
|
+
import { TanstackFormField as l } from "../form-field/TanstackFormField.js";
|
|
7
|
+
import { TanstackPhoneNumberInput as f } from "../phone-number/TanstackPhoneNumberInput.js";
|
|
8
|
+
const F = ({
|
|
9
|
+
label: m,
|
|
10
|
+
isRequired: e,
|
|
11
|
+
requiredVariant: t,
|
|
12
|
+
helperText: o,
|
|
13
|
+
contextualLink: a,
|
|
14
|
+
...n
|
|
15
|
+
}) => /* @__PURE__ */ i(l, { children: [
|
|
16
|
+
/* @__PURE__ */ r(
|
|
17
|
+
d,
|
|
18
|
+
{
|
|
19
|
+
requiredVariant: t,
|
|
20
|
+
isRequired: e,
|
|
21
|
+
children: m
|
|
22
|
+
}
|
|
23
|
+
),
|
|
24
|
+
o && /* @__PURE__ */ r(p, { children: o }),
|
|
25
|
+
/* @__PURE__ */ r(f, { ...n }),
|
|
26
|
+
/* @__PURE__ */ r(s, {}),
|
|
27
|
+
a
|
|
28
|
+
] }), k = c(F);
|
|
29
|
+
k.displayName = "TanstackPhoneNumberField";
|
|
30
|
+
export {
|
|
31
|
+
k as TanstackPhoneNumberField
|
|
32
|
+
};
|
|
@@ -14,7 +14,7 @@ declare const pill: import('tailwind-variants').TVReturnType<{
|
|
|
14
14
|
true: string;
|
|
15
15
|
false: string;
|
|
16
16
|
};
|
|
17
|
-
}, undefined, "uy:min-w-200 uy:max-w-400 uy:inline-flex uy:items-center uy:justify-center uy:text-center uy:typography-body-small", {
|
|
17
|
+
}, undefined, "uy:min-w-200 uy:h-200 uy:max-w-400 uy:inline-flex uy:items-center uy:justify-center uy:text-center uy:typography-body-small-strong", {
|
|
18
18
|
variant: {
|
|
19
19
|
critical: string;
|
|
20
20
|
info: string;
|
|
@@ -42,7 +42,7 @@ declare const pill: import('tailwind-variants').TVReturnType<{
|
|
|
42
42
|
true: string;
|
|
43
43
|
false: string;
|
|
44
44
|
};
|
|
45
|
-
}, undefined, "uy:min-w-200 uy:max-w-400 uy:inline-flex uy:items-center uy:justify-center uy:text-center uy:typography-body-small", unknown, unknown, undefined>>;
|
|
45
|
+
}, undefined, "uy:min-w-200 uy:h-200 uy:max-w-400 uy:inline-flex uy:items-center uy:justify-center uy:text-center uy:typography-body-small-strong", unknown, unknown, undefined>>;
|
|
46
46
|
export type PillProps = Partial<Pick<HTMLDivElement, 'id'>> & Required<Pick<AriaAttributes, 'aria-label'>> & Pick<AriaAttributes, 'aria-details' | 'aria-describedby' | 'aria-live'> & {
|
|
47
47
|
/** The value to be displayed inside the Pill */
|
|
48
48
|
value: number;
|
|
@@ -2,7 +2,7 @@ import { jsx as s } from "react/jsx-runtime";
|
|
|
2
2
|
import { forwardRef as c } from "react";
|
|
3
3
|
import { uyTv as o } from "@payfit/unity-themes";
|
|
4
4
|
const y = o({
|
|
5
|
-
base: "uy:min-w-200 uy:max-w-400 uy:inline-flex uy:items-center uy:justify-center uy:text-center uy:typography-body-small",
|
|
5
|
+
base: "uy:min-w-200 uy:h-200 uy:max-w-400 uy:inline-flex uy:items-center uy:justify-center uy:text-center uy:typography-body-small-strong",
|
|
6
6
|
variants: {
|
|
7
7
|
variant: {
|
|
8
8
|
critical: "uy:bg-surface-danger uy:text-content-inverted",
|
|
@@ -23,15 +23,15 @@ const y = o({
|
|
|
23
23
|
shape: "pill",
|
|
24
24
|
isVisible: !0
|
|
25
25
|
}
|
|
26
|
-
}), p = (t,
|
|
27
|
-
const e = 10 **
|
|
26
|
+
}), p = (t, r) => {
|
|
27
|
+
const e = 10 ** r - 1;
|
|
28
28
|
return t > e ? `${e}+` : t.toString();
|
|
29
29
|
}, d = c(
|
|
30
|
-
({ variant: t = "critical", isVisible:
|
|
31
|
-
const
|
|
30
|
+
({ variant: t = "critical", isVisible: r = !0, maxDigits: e = 2, value: a, ...l }, n) => {
|
|
31
|
+
const i = p(Math.abs(a), e), u = y({
|
|
32
32
|
variant: t,
|
|
33
|
-
isVisible:
|
|
34
|
-
shape:
|
|
33
|
+
isVisible: r,
|
|
34
|
+
shape: i.length === 1 ? "circle" : "pill"
|
|
35
35
|
});
|
|
36
36
|
return /* @__PURE__ */ s(
|
|
37
37
|
"span",
|
|
@@ -42,7 +42,7 @@ const y = o({
|
|
|
42
42
|
role: "status",
|
|
43
43
|
className: u,
|
|
44
44
|
"aria-atomic": "true",
|
|
45
|
-
children:
|
|
45
|
+
children: i
|
|
46
46
|
}
|
|
47
47
|
);
|
|
48
48
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { jsx as t, jsxs as
|
|
2
|
-
import { forwardRef as
|
|
1
|
+
import { jsx as t, jsxs as d } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as y } from "react";
|
|
3
3
|
import { uyTv as p } from "@payfit/unity-themes";
|
|
4
4
|
import { Popover as g, Dialog as m, DialogTrigger as c } from "react-aria-components";
|
|
5
5
|
import { DialogTrigger as j } from "react-aria-components";
|
|
@@ -16,12 +16,12 @@ const x = p({
|
|
|
16
16
|
],
|
|
17
17
|
dialog: [
|
|
18
18
|
"uy:flex uy:flex-col uy:rounded-100",
|
|
19
|
-
"uy:focus:outline-2 uy:focus:outline-offset-2 uy:focus:outline-solid uy:focus:outline-utility-focus-ring"
|
|
19
|
+
"uy:focus-visible:outline-2 uy:focus-visible:outline-offset-2 uy:focus-visible:outline-solid uy:focus-visible:outline-utility-focus-ring"
|
|
20
20
|
]
|
|
21
21
|
}
|
|
22
|
-
}), b =
|
|
23
|
-
const { children: o, title: r, isTitleSrOnly: n, displayCloseButton: i, ...l } = a, { base: u, dialog:
|
|
24
|
-
return /* @__PURE__ */ t(g, { ref: e, className: u(), offset: 8, ...l, children: /* @__PURE__ */
|
|
22
|
+
}), b = y((a, e) => {
|
|
23
|
+
const { children: o, title: r, isTitleSrOnly: n, displayCloseButton: i, ...l } = a, { base: u, dialog: s } = x();
|
|
24
|
+
return /* @__PURE__ */ t(g, { ref: e, className: u(), offset: 8, ...l, children: /* @__PURE__ */ d(m, { className: s(), role: "dialog", children: [
|
|
25
25
|
/* @__PURE__ */ t(
|
|
26
26
|
f,
|
|
27
27
|
{
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { VariantProps } from '@payfit/unity-themes';
|
|
2
|
+
import { PropsWithChildren } from 'react';
|
|
3
|
+
export declare const promoDialog: import('tailwind-variants').TVReturnType<{
|
|
4
|
+
[key: string]: {
|
|
5
|
+
[key: string]: import('tailwind-merge').ClassNameValue | {
|
|
6
|
+
content?: import('tailwind-merge').ClassNameValue;
|
|
7
|
+
overlay?: import('tailwind-merge').ClassNameValue;
|
|
8
|
+
layoutWrapper?: import('tailwind-merge').ClassNameValue;
|
|
9
|
+
wrapper?: import('tailwind-merge').ClassNameValue;
|
|
10
|
+
dismissIcon?: import('tailwind-merge').ClassNameValue;
|
|
11
|
+
contentColumn?: import('tailwind-merge').ClassNameValue;
|
|
12
|
+
scrollableContent?: import('tailwind-merge').ClassNameValue;
|
|
13
|
+
actionsWrapper?: import('tailwind-merge').ClassNameValue;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
} | {
|
|
17
|
+
[x: string]: {
|
|
18
|
+
[x: string]: import('tailwind-merge').ClassNameValue | {
|
|
19
|
+
content?: import('tailwind-merge').ClassNameValue;
|
|
20
|
+
overlay?: import('tailwind-merge').ClassNameValue;
|
|
21
|
+
layoutWrapper?: import('tailwind-merge').ClassNameValue;
|
|
22
|
+
wrapper?: import('tailwind-merge').ClassNameValue;
|
|
23
|
+
dismissIcon?: import('tailwind-merge').ClassNameValue;
|
|
24
|
+
contentColumn?: import('tailwind-merge').ClassNameValue;
|
|
25
|
+
scrollableContent?: import('tailwind-merge').ClassNameValue;
|
|
26
|
+
actionsWrapper?: import('tailwind-merge').ClassNameValue;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
} | {}, {
|
|
30
|
+
overlay: string[];
|
|
31
|
+
wrapper: string[];
|
|
32
|
+
content: string[];
|
|
33
|
+
dismissIcon: string[];
|
|
34
|
+
layoutWrapper: string[];
|
|
35
|
+
contentColumn: string[];
|
|
36
|
+
scrollableContent: string[];
|
|
37
|
+
actionsWrapper: string[];
|
|
38
|
+
}, undefined, {
|
|
39
|
+
[key: string]: {
|
|
40
|
+
[key: string]: import('tailwind-merge').ClassNameValue | {
|
|
41
|
+
content?: import('tailwind-merge').ClassNameValue;
|
|
42
|
+
overlay?: import('tailwind-merge').ClassNameValue;
|
|
43
|
+
layoutWrapper?: import('tailwind-merge').ClassNameValue;
|
|
44
|
+
wrapper?: import('tailwind-merge').ClassNameValue;
|
|
45
|
+
dismissIcon?: import('tailwind-merge').ClassNameValue;
|
|
46
|
+
contentColumn?: import('tailwind-merge').ClassNameValue;
|
|
47
|
+
scrollableContent?: import('tailwind-merge').ClassNameValue;
|
|
48
|
+
actionsWrapper?: import('tailwind-merge').ClassNameValue;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
} | {}, {
|
|
52
|
+
overlay: string[];
|
|
53
|
+
wrapper: string[];
|
|
54
|
+
content: string[];
|
|
55
|
+
dismissIcon: string[];
|
|
56
|
+
layoutWrapper: string[];
|
|
57
|
+
contentColumn: string[];
|
|
58
|
+
scrollableContent: string[];
|
|
59
|
+
actionsWrapper: string[];
|
|
60
|
+
}, import('tailwind-variants').TVReturnType<unknown, {
|
|
61
|
+
overlay: string[];
|
|
62
|
+
wrapper: string[];
|
|
63
|
+
content: string[];
|
|
64
|
+
dismissIcon: string[];
|
|
65
|
+
layoutWrapper: string[];
|
|
66
|
+
contentColumn: string[];
|
|
67
|
+
scrollableContent: string[];
|
|
68
|
+
actionsWrapper: string[];
|
|
69
|
+
}, undefined, unknown, unknown, undefined>>;
|
|
70
|
+
export interface PromoDialogProps extends PropsWithChildren<VariantProps<typeof promoDialog>> {
|
|
71
|
+
/** aria-label has to be defined if the dialog does not have a visible label*/
|
|
72
|
+
'aria-label'?: string;
|
|
73
|
+
/** Controls the open state of the dialog. Use only in controlled mode (along with the `onOpenChange` callback) */
|
|
74
|
+
isOpen?: boolean;
|
|
75
|
+
/** it is used for controlled mode (need to be used with isOpen property) */
|
|
76
|
+
onOpenChange?: (isOpen: boolean) => void;
|
|
77
|
+
/** if false it does not allow to close the modal when click outside, default: true*/
|
|
78
|
+
isDismissable?: boolean;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* The PromoDialog component provides a specialized modal interface for promotional content,
|
|
82
|
+
* feature announcements, and important communications that benefit from visual emphasis.
|
|
83
|
+
*
|
|
84
|
+
* Use PromoDialog when you want to introduce new features, highlight important updates, or present
|
|
85
|
+
* promotional content with a compelling illustration. It features a hero section for illustrations
|
|
86
|
+
* and automatically adapts its layout between mobile (vertical stack) and desktop (horizontal split).
|
|
87
|
+
*
|
|
88
|
+
* The PromoDialog requires several parts working together:
|
|
89
|
+
* - `PromoDialogHero`: Contains the promotional illustration (required)
|
|
90
|
+
* - `PromoDialogTitle`: Displays the title of the dialog
|
|
91
|
+
* - `PromoDialogContent`: Contains the main content of the dialog (required)
|
|
92
|
+
* - `PromoDialogActions`: Contains action buttons for user interaction
|
|
93
|
+
* - `DialogButton`: Handles specific actions (close, confirm, or danger)
|
|
94
|
+
* @param props - The props for the PromoDialog component
|
|
95
|
+
* @param props.children - The dialog content including hero, title, content, and actions
|
|
96
|
+
* @param props.isOpen - Controls the open state in controlled mode
|
|
97
|
+
* @param props.onOpenChange - Callback fired when open state changes
|
|
98
|
+
* @param props.isDismissable - Whether the dialog can be dismissed by clicking outside or pressing Escape
|
|
99
|
+
* @see {@link PromoDialogProps} for all available props
|
|
100
|
+
* @example
|
|
101
|
+
* ```tsx
|
|
102
|
+
* import {
|
|
103
|
+
* PromoDialog,
|
|
104
|
+
* DialogTrigger,
|
|
105
|
+
* PromoDialogHero,
|
|
106
|
+
* PromoDialogTitle,
|
|
107
|
+
* PromoDialogContent,
|
|
108
|
+
* PromoDialogActions,
|
|
109
|
+
* DialogButton
|
|
110
|
+
* } from '@payfit/unity-components'
|
|
111
|
+
* import { Illustration } from '@payfit/unity-illustrations'
|
|
112
|
+
*
|
|
113
|
+
* function FeatureAnnouncement() {
|
|
114
|
+
* return (
|
|
115
|
+
* <DialogTrigger>
|
|
116
|
+
* <Button>Learn more</Button>
|
|
117
|
+
* <PromoDialog>
|
|
118
|
+
* <PromoDialogHero>
|
|
119
|
+
* <Illustration src={ContractSignature} variant="picture" />
|
|
120
|
+
* </PromoDialogHero>
|
|
121
|
+
* <PromoDialogTitle>Introducing our new feature</PromoDialogTitle>
|
|
122
|
+
* <PromoDialogContent>
|
|
123
|
+
* Discover how this feature can help you...
|
|
124
|
+
* </PromoDialogContent>
|
|
125
|
+
* <PromoDialogActions>
|
|
126
|
+
* <DialogButton variant="close">Maybe later</DialogButton>
|
|
127
|
+
* <DialogButton variant="confirm">Get started</DialogButton>
|
|
128
|
+
* </PromoDialogActions>
|
|
129
|
+
* </PromoDialog>
|
|
130
|
+
* </DialogTrigger>
|
|
131
|
+
* )
|
|
132
|
+
* }
|
|
133
|
+
* ```
|
|
134
|
+
* @remarks
|
|
135
|
+
* - Content scrolls when it overflows, with a sticky footer
|
|
136
|
+
* - Layout adapts automatically: vertical on mobile, horizontal split on desktop
|
|
137
|
+
* - Hero section is mandatory and displays on the left (desktop) or top (mobile)
|
|
138
|
+
* - Shadow appears on footer when content is scrollable
|
|
139
|
+
* - **Accessibility**: Either `PromoDialogTitle` or `aria-label` prop is required for screen readers
|
|
140
|
+
* - **Accessibility**: Dialog traps focus and can be closed with Escape key when dismissable
|
|
141
|
+
* - **Accessibility**: Close button is keyboard accessible with proper ARIA labels
|
|
142
|
+
* - **Accessibility**: Supports prefers-reduced-motion for users with motion sensitivities
|
|
143
|
+
* [API Docs](https://unity-components.payfit.io/?path=/docs/feedback-promodialog--docs) • [Design Docs](https://www.payfit.design/24f360409/p/01f5dc-dialog)
|
|
144
|
+
*/
|
|
145
|
+
declare function PromoDialog({ children, isOpen, onOpenChange, isDismissable, ...rest }: PromoDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
146
|
+
declare namespace PromoDialog {
|
|
147
|
+
var displayName: string;
|
|
148
|
+
}
|
|
149
|
+
export { PromoDialog };
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { jsx as t, jsxs as c } from "react/jsx-runtime";
|
|
2
|
+
import { useRef as P, Children as m, isValidElement as l, useLayoutEffect as v } from "react";
|
|
3
|
+
import { uyTv as N } from "@payfit/unity-themes";
|
|
4
|
+
import { useId as C } from "react-aria";
|
|
5
|
+
import { ModalOverlay as A, Modal as E, DialogContext as I, Dialog as j } from "react-aria-components";
|
|
6
|
+
import { useIntl as z } from "react-intl";
|
|
7
|
+
import { useHasScroll as M } from "../../hooks/use-has-scroll.js";
|
|
8
|
+
import { DialogButton as H } from "../dialog/parts/DialogActions/DialogButton.js";
|
|
9
|
+
import { CircularIconButton as T } from "../icon-button/CircularIconButton.js";
|
|
10
|
+
import { PromoDialogActions as b } from "./parts/PromoDialogActions.js";
|
|
11
|
+
import { PromoDialogHero as W } from "./parts/PromoDialogHero.js";
|
|
12
|
+
import { PromoDialogTitle as _ } from "./parts/PromoDialogTitle.js";
|
|
13
|
+
const k = N({
|
|
14
|
+
slots: {
|
|
15
|
+
overlay: [
|
|
16
|
+
"uy:@container",
|
|
17
|
+
"uy:fixed uy:inset-0 uy:z-30 uy:overflow-y-auto",
|
|
18
|
+
"uy:min-h-full",
|
|
19
|
+
"uy:flex uy:items-end uy:md:items-center uy:md:justify-center uy:md:text-center",
|
|
20
|
+
"uy:bg-utility-backdrop",
|
|
21
|
+
// enter/leave animation
|
|
22
|
+
"uy:data-[entering]:animate-fade-in uy:data-[exiting]:animate-fade-out",
|
|
23
|
+
"uy:motion-reduce:data-[entering]:animate-none uy:motion-reduce:data-[exiting]:animate-none"
|
|
24
|
+
],
|
|
25
|
+
wrapper: [
|
|
26
|
+
"uy:w-full uy:relative uy:isolate",
|
|
27
|
+
"uy:m-0",
|
|
28
|
+
"uy:rounded-t-300 uy:md:rounded-300",
|
|
29
|
+
"uy:bg-surface-neutral",
|
|
30
|
+
"uy:text-left uy:align-middle uy:shadow-floating",
|
|
31
|
+
// Mobile: enter/leave animation
|
|
32
|
+
"uy:data-[entering]:animate-slide-up-fade-in uy:data-[exiting]:animate-slide-down-fade-out",
|
|
33
|
+
"uy:md:[animation-delay:100ms]",
|
|
34
|
+
// Desktop: enter/leave animation
|
|
35
|
+
"uy:md:data-[entering]:animate-zoom-in uy:md:data-[exiting]:animate-zoom-out",
|
|
36
|
+
"uy:motion-reduce:data-[entering]:animate-none uy:motion-reduce:data-[exiting]:animate-none",
|
|
37
|
+
// Mobile: scrollable with max height
|
|
38
|
+
"uy:max-h-[95dvh] uy:overflow-y-auto",
|
|
39
|
+
// Desktop: max height (adapts to content), no overflow on wrapper
|
|
40
|
+
"uy:md:h-[82dvh] uy:md:max-h-65 uy:lg:max-h-85 uy:md:overflow-hidden",
|
|
41
|
+
"uy:md:w-10/12 uy:md:max-w-[1000px] uy:p-300 uy:pb-0 uy:md:p-200"
|
|
42
|
+
],
|
|
43
|
+
content: [
|
|
44
|
+
"uy:group/promo-dialog uy:outline-none uy:relative",
|
|
45
|
+
// Mobile: auto height (wrapper scrolls)
|
|
46
|
+
"uy:h-auto",
|
|
47
|
+
// Desktop: full height (content scrolls internally)
|
|
48
|
+
"uy:md:h-full"
|
|
49
|
+
],
|
|
50
|
+
dismissIcon: [
|
|
51
|
+
// Mobile: sticky button that takes some padding at the top
|
|
52
|
+
"uy:sticky uy:top-0 uy:right-0 uy:flex uy:justify-end",
|
|
53
|
+
// Desktop: close button is positioned absolutely at the top-right corner
|
|
54
|
+
"uy:md:absolute uy:md:right-100 uy:md:top-100 uy:md:z-20"
|
|
55
|
+
],
|
|
56
|
+
// Layout slots
|
|
57
|
+
layoutWrapper: [
|
|
58
|
+
"uy:flex uy:flex-col uy:md:flex-row",
|
|
59
|
+
// Mobile: auto height (wrapper scrolls)
|
|
60
|
+
"uy:h-auto",
|
|
61
|
+
// Desktop: full height for flex layout
|
|
62
|
+
"uy:md:h-full uy:gap-300 uy:md:gap-0"
|
|
63
|
+
],
|
|
64
|
+
contentColumn: [
|
|
65
|
+
"uy:group/content-column",
|
|
66
|
+
"uy:flex uy:flex-col",
|
|
67
|
+
// Mobile: auto height
|
|
68
|
+
"uy:h-auto",
|
|
69
|
+
// Desktop: takes 2/3 of width, fixed max height, enables scrolling
|
|
70
|
+
"uy:md:basis-2/3 uy:md:h-full uy:md:max-h-85 uy:md:overflow-y-auto uy:md:pt-600"
|
|
71
|
+
],
|
|
72
|
+
scrollableContent: [
|
|
73
|
+
"uy:md:pl-[clamp(var(--uy-spacing-400),11%,var(--uy-spacing-800))] uy:md:pr-1000 uy:[scrollbar-width:thin] uy:md:scroll-mt-1000",
|
|
74
|
+
// Mobile: flex-1 to fill space (wrapper scrolls)
|
|
75
|
+
"uy:flex-1",
|
|
76
|
+
// desktop: centered layout
|
|
77
|
+
"uy:md:flex uy:md:flex-col uy:md:justify-center"
|
|
78
|
+
],
|
|
79
|
+
actionsWrapper: [
|
|
80
|
+
"uy:py-300 uy:md:py-0 uy:sticky uy:-bottom-px uy:bg-surface-neutral",
|
|
81
|
+
// Apply shadow when parent group has scroll
|
|
82
|
+
"uy:group-data-[has-scroll=true]/content-column:shadow-[0_-1px_6px_0_var(--uy-color-utility-shadow-floating)]"
|
|
83
|
+
]
|
|
84
|
+
}
|
|
85
|
+
}), B = (r) => {
|
|
86
|
+
const n = m.toArray(r).find(
|
|
87
|
+
(e) => l(e) && e.type === b
|
|
88
|
+
);
|
|
89
|
+
return l(
|
|
90
|
+
n
|
|
91
|
+
) ? m.toArray(n.props.children).some(
|
|
92
|
+
(e) => l(
|
|
93
|
+
e
|
|
94
|
+
) && e.type === H && e.props.variant === "danger"
|
|
95
|
+
) : !1;
|
|
96
|
+
};
|
|
97
|
+
function q({
|
|
98
|
+
children: r,
|
|
99
|
+
isOpen: n,
|
|
100
|
+
onOpenChange: e,
|
|
101
|
+
isDismissable: p = !0,
|
|
102
|
+
...y
|
|
103
|
+
}) {
|
|
104
|
+
const f = z(), d = C(), g = P(null), { hasAnyScroll: i } = M(g, {
|
|
105
|
+
strategy: "both",
|
|
106
|
+
watchMutations: !1
|
|
107
|
+
}), s = m.toArray(r), u = s.find(
|
|
108
|
+
(o) => l(o) && o.type === W
|
|
109
|
+
), h = s.find(
|
|
110
|
+
(o) => l(o) && o.type === b
|
|
111
|
+
), w = s.filter(
|
|
112
|
+
(o) => o !== u && o !== h
|
|
113
|
+
);
|
|
114
|
+
v(() => {
|
|
115
|
+
u || console.error(
|
|
116
|
+
"PromoDialog: PromoDialogHero is required. Please add <PromoDialogHero> as a child of your PromoDialog component."
|
|
117
|
+
);
|
|
118
|
+
}, [u]), v(() => {
|
|
119
|
+
const D = m.toArray(r).some(
|
|
120
|
+
(x) => l(x) && x.type === _
|
|
121
|
+
);
|
|
122
|
+
!y["aria-label"] && !D && console.error(
|
|
123
|
+
"PromoDialog: Either an aria-label or a PromoDialogTitle is required for accessibility. Provide one to ensure screen reader users can identify the dialog."
|
|
124
|
+
);
|
|
125
|
+
}, [r, y]);
|
|
126
|
+
const a = k();
|
|
127
|
+
return /* @__PURE__ */ t(
|
|
128
|
+
A,
|
|
129
|
+
{
|
|
130
|
+
isDismissable: p,
|
|
131
|
+
isOpen: n,
|
|
132
|
+
onOpenChange: e,
|
|
133
|
+
className: a.overlay(),
|
|
134
|
+
children: /* @__PURE__ */ t(
|
|
135
|
+
E,
|
|
136
|
+
{
|
|
137
|
+
className: a.wrapper(),
|
|
138
|
+
"data-unity-promo-dialog": !0,
|
|
139
|
+
"data-dd-privacy": "allow",
|
|
140
|
+
children: /* @__PURE__ */ t(I.Provider, { value: { "aria-describedby": d }, children: /* @__PURE__ */ c(
|
|
141
|
+
j,
|
|
142
|
+
{
|
|
143
|
+
role: B(r) ? "alertdialog" : "dialog",
|
|
144
|
+
"aria-modal": "true",
|
|
145
|
+
className: a.content(),
|
|
146
|
+
"aria-label": y["aria-label"],
|
|
147
|
+
"aria-describedby": d,
|
|
148
|
+
"data-unity-slot": "promo-dialog",
|
|
149
|
+
children: [
|
|
150
|
+
p && /* @__PURE__ */ t("div", { className: a.dismissIcon(), children: /* @__PURE__ */ t(
|
|
151
|
+
T,
|
|
152
|
+
{
|
|
153
|
+
asElement: "button",
|
|
154
|
+
icon: "CloseOutlined",
|
|
155
|
+
color: "content.neutral.low",
|
|
156
|
+
size: "large",
|
|
157
|
+
title: f.formatMessage({
|
|
158
|
+
id: "unity:component:common:close:label"
|
|
159
|
+
}),
|
|
160
|
+
slot: "close",
|
|
161
|
+
className: "uy:relative uy:-top-100 uy:-right-100 uy:md:static"
|
|
162
|
+
}
|
|
163
|
+
) }),
|
|
164
|
+
/* @__PURE__ */ c(
|
|
165
|
+
"div",
|
|
166
|
+
{
|
|
167
|
+
className: a.layoutWrapper(),
|
|
168
|
+
"data-slot": "promo-dialog.layout-wrapper",
|
|
169
|
+
children: [
|
|
170
|
+
u,
|
|
171
|
+
/* @__PURE__ */ c(
|
|
172
|
+
"div",
|
|
173
|
+
{
|
|
174
|
+
ref: g,
|
|
175
|
+
className: a.contentColumn(),
|
|
176
|
+
"data-slot": "promo-dialog.content-column",
|
|
177
|
+
"data-has-scroll": i,
|
|
178
|
+
role: i ? "region" : void 0,
|
|
179
|
+
"aria-label": i ? f.formatMessage({
|
|
180
|
+
id: "unity:component:common:scrollable-content:label"
|
|
181
|
+
}) : void 0,
|
|
182
|
+
tabIndex: i ? 0 : void 0,
|
|
183
|
+
children: [
|
|
184
|
+
/* @__PURE__ */ t(
|
|
185
|
+
"div",
|
|
186
|
+
{
|
|
187
|
+
id: d,
|
|
188
|
+
className: a.scrollableContent(),
|
|
189
|
+
"data-slot": "promo-dialog.scrollable-content",
|
|
190
|
+
children: w
|
|
191
|
+
}
|
|
192
|
+
),
|
|
193
|
+
/* @__PURE__ */ t(
|
|
194
|
+
"div",
|
|
195
|
+
{
|
|
196
|
+
className: a.actionsWrapper(),
|
|
197
|
+
"data-slot": "promo-dialog.actions-wrapper",
|
|
198
|
+
children: h
|
|
199
|
+
}
|
|
200
|
+
)
|
|
201
|
+
]
|
|
202
|
+
}
|
|
203
|
+
)
|
|
204
|
+
]
|
|
205
|
+
}
|
|
206
|
+
)
|
|
207
|
+
]
|
|
208
|
+
}
|
|
209
|
+
) })
|
|
210
|
+
}
|
|
211
|
+
)
|
|
212
|
+
}
|
|
213
|
+
);
|
|
214
|
+
}
|
|
215
|
+
q.displayName = "PromoDialog";
|
|
216
|
+
export {
|
|
217
|
+
q as PromoDialog,
|
|
218
|
+
k as promoDialog
|
|
219
|
+
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { PropsWithChildren } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* PromoDialogActions contains the action buttons for a promo dialog.
|
|
4
|
+
* It provides consistent layout and spacing for dialog action buttons.
|
|
5
|
+
*
|
|
6
|
+
* This component should be used within a `PromoDialog` to display action buttons like
|
|
7
|
+
* confirm, cancel, or close actions. The buttons are automatically arranged in a row
|
|
8
|
+
* on desktop and stacked on mobile.
|
|
9
|
+
* @param props - The props for the PromoDialogActions component
|
|
10
|
+
* @param props.children - The action buttons (typically DialogButton components)
|
|
11
|
+
* @example
|
|
12
|
+
* ```tsx
|
|
13
|
+
* import { PromoDialog, PromoDialogHero, DialogTitle, PromoDialogContent, PromoDialogActions, DialogButton } from '@payfit/unity-components'
|
|
14
|
+
* import { Illustration } from '@payfit/unity-illustrations'
|
|
15
|
+
* import ContractSignature from '@payfit/unity-illustrations/assets/ContractSignature'
|
|
16
|
+
*
|
|
17
|
+
* function PromoExample() {
|
|
18
|
+
* return (
|
|
19
|
+
* <PromoDialog>
|
|
20
|
+
* <PromoDialogHero>
|
|
21
|
+
* <Illustration src={ContractSignature} variant="picture" />
|
|
22
|
+
* </PromoDialogHero>
|
|
23
|
+
* <DialogTitle>Welcome</DialogTitle>
|
|
24
|
+
* <PromoDialogContent>
|
|
25
|
+
* <p>Content here...</p>
|
|
26
|
+
* </PromoDialogContent>
|
|
27
|
+
* <PromoDialogActions>
|
|
28
|
+
* <DialogButton variant="close">Skip</DialogButton>
|
|
29
|
+
* <DialogButton variant="confirm">Continue</DialogButton>
|
|
30
|
+
* </PromoDialogActions>
|
|
31
|
+
* </PromoDialog>
|
|
32
|
+
* )
|
|
33
|
+
* }
|
|
34
|
+
* ```
|
|
35
|
+
* @remarks
|
|
36
|
+
* - Buttons are stacked vertically on mobile (reverse order) and horizontal on desktop
|
|
37
|
+
* - Use DialogButton components as children for consistent styling
|
|
38
|
+
* - **Accessibility**: Actions are grouped with role="group" for better screen reader navigation
|
|
39
|
+
*/
|
|
40
|
+
declare const PromoDialogActions: {
|
|
41
|
+
({ children }: PropsWithChildren<object>): import("react/jsx-runtime").JSX.Element;
|
|
42
|
+
displayName: string;
|
|
43
|
+
};
|
|
44
|
+
export { PromoDialogActions };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as a } from "react/jsx-runtime";
|
|
2
|
+
import { uyTv as i } from "@payfit/unity-themes";
|
|
3
|
+
import { useIntl as r } from "react-intl";
|
|
4
|
+
const s = i({
|
|
5
|
+
base: [
|
|
6
|
+
"uy:md:pt-250 uy:md:pb-100 uy:md:px-200 uy:flex uy:flex-col-reverse uy:md:flex-row uy:md:justify-end uy:md:items-start",
|
|
7
|
+
"uy:gap-150 uy:md:gap-100",
|
|
8
|
+
"uy:self-stretch"
|
|
9
|
+
]
|
|
10
|
+
}), e = ({ children: o }) => {
|
|
11
|
+
const t = r();
|
|
12
|
+
return /* @__PURE__ */ a(
|
|
13
|
+
"div",
|
|
14
|
+
{
|
|
15
|
+
role: "group",
|
|
16
|
+
"aria-label": t.formatMessage({
|
|
17
|
+
id: "unity:component:dialog:actions:label"
|
|
18
|
+
}),
|
|
19
|
+
className: s(),
|
|
20
|
+
"data-unity-slot": "promo-dialog.actions",
|
|
21
|
+
"data-dd-privacy": "allow",
|
|
22
|
+
children: o
|
|
23
|
+
}
|
|
24
|
+
);
|
|
25
|
+
};
|
|
26
|
+
e.displayName = "PromoDialogActions";
|
|
27
|
+
export {
|
|
28
|
+
e as PromoDialogActions
|
|
29
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { PropsWithChildren } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* PromoDialogContent contains the main content of a promo dialog.
|
|
4
|
+
* It provides consistent spacing and typography for dialog content.
|
|
5
|
+
*
|
|
6
|
+
* This component should be used within a `PromoDialog` to display the main message,
|
|
7
|
+
* description, or any other content that needs to be presented to the user.
|
|
8
|
+
* @param props - The props for the PromoDialogContent component
|
|
9
|
+
* @param props.children - The content to be displayed in the dialog body
|
|
10
|
+
* @example
|
|
11
|
+
* ```tsx
|
|
12
|
+
* import { PromoDialog, PromoDialogHero, DialogTitle, PromoDialogContent, PromoDialogActions, DialogButton } from '@payfit/unity-components'
|
|
13
|
+
* import { Illustration } from '@payfit/unity-illustrations'
|
|
14
|
+
* import ContractSignature from '@payfit/unity-illustrations/assets/ContractSignature'
|
|
15
|
+
*
|
|
16
|
+
* function PromoExample() {
|
|
17
|
+
* return (
|
|
18
|
+
* <PromoDialog>
|
|
19
|
+
* <PromoDialogHero>
|
|
20
|
+
* <Illustration src={ContractSignature} variant="picture" />
|
|
21
|
+
* </PromoDialogHero>
|
|
22
|
+
* <DialogTitle>Welcome</DialogTitle>
|
|
23
|
+
* <PromoDialogContent>
|
|
24
|
+
* <p>This is the main content of the promo dialog.</p>
|
|
25
|
+
* </PromoDialogContent>
|
|
26
|
+
* <PromoDialogActions>
|
|
27
|
+
* <DialogButton variant="close">Skip</DialogButton>
|
|
28
|
+
* <DialogButton variant="confirm">Continue</DialogButton>
|
|
29
|
+
* </PromoDialogActions>
|
|
30
|
+
* </PromoDialog>
|
|
31
|
+
* )
|
|
32
|
+
* }
|
|
33
|
+
* ```
|
|
34
|
+
* @remarks
|
|
35
|
+
* - Use this component for the main body text and content
|
|
36
|
+
* - Content will automatically scroll when it overflows
|
|
37
|
+
* - Maintains consistent spacing with other promo dialog parts
|
|
38
|
+
*/
|
|
39
|
+
declare const PromoDialogContent: {
|
|
40
|
+
({ children }: PropsWithChildren<object>): import("react/jsx-runtime").JSX.Element;
|
|
41
|
+
displayName: string;
|
|
42
|
+
};
|
|
43
|
+
export { PromoDialogContent };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { uyTv as n } from "@payfit/unity-themes";
|
|
3
|
+
const a = n({
|
|
4
|
+
base: [
|
|
5
|
+
"uy:flex uy:flex-col uy:gap-200",
|
|
6
|
+
"uy:text-content-neutral",
|
|
7
|
+
"uy:typography-body"
|
|
8
|
+
]
|
|
9
|
+
}), e = ({ children: o }) => /* @__PURE__ */ t(
|
|
10
|
+
"div",
|
|
11
|
+
{
|
|
12
|
+
className: a(),
|
|
13
|
+
"data-unity-slot": "promo-dialog.content",
|
|
14
|
+
children: o
|
|
15
|
+
}
|
|
16
|
+
);
|
|
17
|
+
e.displayName = "PromoDialogContent";
|
|
18
|
+
export {
|
|
19
|
+
e as PromoDialogContent
|
|
20
|
+
};
|