@transferwise/components 0.0.0-experimental-24a0a12 → 0.0.0-experimental-d678cd6
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/build/accordion/AccordionItem/AccordionItem.js +1 -0
- package/build/accordion/AccordionItem/AccordionItem.js.map +1 -1
- package/build/accordion/AccordionItem/AccordionItem.mjs +1 -0
- package/build/accordion/AccordionItem/AccordionItem.mjs.map +1 -1
- package/build/actionButton/ActionButton.js +1 -0
- package/build/actionButton/ActionButton.js.map +1 -1
- package/build/actionButton/ActionButton.mjs +1 -0
- package/build/actionButton/ActionButton.mjs.map +1 -1
- package/build/actionOption/ActionOption.js +1 -0
- package/build/actionOption/ActionOption.js.map +1 -1
- package/build/actionOption/ActionOption.mjs +1 -0
- package/build/actionOption/ActionOption.mjs.map +1 -1
- package/build/alert/Alert.js +1 -0
- package/build/alert/Alert.js.map +1 -1
- package/build/alert/Alert.mjs +1 -0
- package/build/alert/Alert.mjs.map +1 -1
- package/build/alert/inlineMarkdown/InlineMarkdown.js +1 -0
- package/build/alert/inlineMarkdown/InlineMarkdown.js.map +1 -1
- package/build/alert/inlineMarkdown/InlineMarkdown.mjs +1 -0
- package/build/alert/inlineMarkdown/InlineMarkdown.mjs.map +1 -1
- package/build/avatar/Avatar.js +1 -0
- package/build/avatar/Avatar.js.map +1 -1
- package/build/avatar/Avatar.mjs +1 -0
- package/build/avatar/Avatar.mjs.map +1 -1
- package/build/avatarView/AvatarView.js +1 -0
- package/build/avatarView/AvatarView.js.map +1 -1
- package/build/avatarView/AvatarView.mjs +1 -0
- package/build/avatarView/AvatarView.mjs.map +1 -1
- package/build/avatarWrapper/AvatarWrapper.js +1 -0
- package/build/avatarWrapper/AvatarWrapper.js.map +1 -1
- package/build/avatarWrapper/AvatarWrapper.mjs +1 -0
- package/build/avatarWrapper/AvatarWrapper.mjs.map +1 -1
- package/build/badge/Badge.js +1 -0
- package/build/badge/Badge.js.map +1 -1
- package/build/badge/Badge.mjs +1 -0
- package/build/badge/Badge.mjs.map +1 -1
- package/build/badge/BadgeAssets.js +2 -1
- package/build/badge/BadgeAssets.js.map +1 -1
- package/build/badge/BadgeAssets.mjs +2 -1
- package/build/badge/BadgeAssets.mjs.map +1 -1
- package/build/button/Button.js +1 -0
- package/build/button/Button.js.map +1 -1
- package/build/button/Button.mjs +1 -0
- package/build/button/Button.mjs.map +1 -1
- package/build/button/LegacyButton.js +1 -0
- package/build/button/LegacyButton.js.map +1 -1
- package/build/button/LegacyButton.mjs +1 -0
- package/build/button/LegacyButton.mjs.map +1 -1
- package/build/button/classMap.js +1 -0
- package/build/button/classMap.js.map +1 -1
- package/build/button/classMap.mjs +1 -0
- package/build/button/classMap.mjs.map +1 -1
- package/build/button/legacyUtils/legacyUtils.js +1 -0
- package/build/button/legacyUtils/legacyUtils.js.map +1 -1
- package/build/button/legacyUtils/legacyUtils.mjs +1 -0
- package/build/button/legacyUtils/legacyUtils.mjs.map +1 -1
- package/build/card/Card.js +1 -0
- package/build/card/Card.js.map +1 -1
- package/build/card/Card.mjs +1 -0
- package/build/card/Card.mjs.map +1 -1
- package/build/checkbox/Checkbox.js +1 -0
- package/build/checkbox/Checkbox.js.map +1 -1
- package/build/checkbox/Checkbox.mjs +1 -0
- package/build/checkbox/Checkbox.mjs.map +1 -1
- package/build/chevron/Chevron.js +1 -0
- package/build/chevron/Chevron.js.map +1 -1
- package/build/chevron/Chevron.mjs +1 -0
- package/build/chevron/Chevron.mjs.map +1 -1
- package/build/chips/Chip.js +1 -0
- package/build/chips/Chip.js.map +1 -1
- package/build/chips/Chip.mjs +1 -0
- package/build/chips/Chip.mjs.map +1 -1
- package/build/circularButton/CircularButton.js +1 -0
- package/build/circularButton/CircularButton.js.map +1 -1
- package/build/circularButton/CircularButton.mjs +1 -0
- package/build/circularButton/CircularButton.mjs.map +1 -1
- package/build/common/locale/index.js +9 -4
- package/build/common/locale/index.js.map +1 -1
- package/build/common/locale/index.mjs +9 -4
- package/build/common/locale/index.mjs.map +1 -1
- package/build/common/panel/Panel.js +41 -56
- package/build/common/panel/Panel.js.map +1 -1
- package/build/common/panel/Panel.mjs +46 -61
- package/build/common/panel/Panel.mjs.map +1 -1
- package/build/common/responsivePanel/ResponsivePanel.js +1 -0
- package/build/common/responsivePanel/ResponsivePanel.js.map +1 -1
- package/build/common/responsivePanel/ResponsivePanel.mjs +1 -0
- package/build/common/responsivePanel/ResponsivePanel.mjs.map +1 -1
- package/build/criticalBanner/CriticalCommsBanner.js +1 -0
- package/build/criticalBanner/CriticalCommsBanner.js.map +1 -1
- package/build/criticalBanner/CriticalCommsBanner.mjs +1 -0
- package/build/criticalBanner/CriticalCommsBanner.mjs.map +1 -1
- package/build/dateInput/DateInput.js +1 -1
- package/build/dateInput/DateInput.mjs +1 -1
- package/build/dateLookup/DateLookup.js +1 -1
- package/build/dateLookup/DateLookup.mjs +1 -1
- package/build/dateLookup/dateHeader/DateHeader.js +1 -0
- package/build/dateLookup/dateHeader/DateHeader.js.map +1 -1
- package/build/dateLookup/dateHeader/DateHeader.mjs +1 -0
- package/build/dateLookup/dateHeader/DateHeader.mjs.map +1 -1
- package/build/decision/Decision.js +1 -0
- package/build/decision/Decision.js.map +1 -1
- package/build/decision/Decision.mjs +1 -0
- package/build/decision/Decision.mjs.map +1 -1
- package/build/definitionList/DefinitionList.js +1 -0
- package/build/definitionList/DefinitionList.js.map +1 -1
- package/build/definitionList/DefinitionList.mjs +1 -0
- package/build/definitionList/DefinitionList.mjs.map +1 -1
- package/build/dimmer/Dimmer.js +1 -0
- package/build/dimmer/Dimmer.js.map +1 -1
- package/build/dimmer/Dimmer.mjs +1 -0
- package/build/dimmer/Dimmer.mjs.map +1 -1
- package/build/display/Display.js +1 -0
- package/build/display/Display.js.map +1 -1
- package/build/display/Display.mjs +1 -0
- package/build/display/Display.mjs.map +1 -1
- package/build/drawer/Drawer.js +1 -0
- package/build/drawer/Drawer.js.map +1 -1
- package/build/drawer/Drawer.mjs +1 -0
- package/build/drawer/Drawer.mjs.map +1 -1
- package/build/expressiveMoneyInput/currencySelector/CurrencySelector.js +4 -3
- package/build/expressiveMoneyInput/currencySelector/CurrencySelector.js.map +1 -1
- package/build/expressiveMoneyInput/currencySelector/CurrencySelector.mjs +4 -3
- package/build/expressiveMoneyInput/currencySelector/CurrencySelector.mjs.map +1 -1
- package/build/field/Field.js +5 -5
- package/build/field/Field.mjs +5 -5
- package/build/flowNavigation/FlowNavigation.js +1 -0
- package/build/flowNavigation/FlowNavigation.js.map +1 -1
- package/build/flowNavigation/FlowNavigation.mjs +1 -0
- package/build/flowNavigation/FlowNavigation.mjs.map +1 -1
- package/build/header/Header.js +1 -0
- package/build/header/Header.js.map +1 -1
- package/build/header/Header.mjs +1 -0
- package/build/header/Header.mjs.map +1 -1
- package/build/i18n/en.json +0 -2
- package/build/i18n/en.json.js +0 -2
- package/build/i18n/en.json.js.map +1 -1
- package/build/i18n/en.json.mjs +0 -2
- package/build/i18n/en.json.mjs.map +1 -1
- package/build/index.js +0 -2
- package/build/index.js.map +1 -1
- package/build/index.mjs +0 -1
- package/build/index.mjs.map +1 -1
- package/build/info/Info.js +1 -0
- package/build/info/Info.js.map +1 -1
- package/build/info/Info.mjs +1 -0
- package/build/info/Info.mjs.map +1 -1
- package/build/inlineAlert/InlineAlert.js +1 -0
- package/build/inlineAlert/InlineAlert.js.map +1 -1
- package/build/inlineAlert/InlineAlert.mjs +1 -0
- package/build/inlineAlert/InlineAlert.mjs.map +1 -1
- package/build/inputs/SearchInput.js +1 -0
- package/build/inputs/SearchInput.js.map +1 -1
- package/build/inputs/SearchInput.mjs +1 -0
- package/build/inputs/SearchInput.mjs.map +1 -1
- package/build/instructionsList/InstructionsList.js +1 -0
- package/build/instructionsList/InstructionsList.js.map +1 -1
- package/build/instructionsList/InstructionsList.mjs +1 -0
- package/build/instructionsList/InstructionsList.mjs.map +1 -1
- package/build/link/Link.js +1 -0
- package/build/link/Link.js.map +1 -1
- package/build/link/Link.mjs +1 -0
- package/build/link/Link.mjs.map +1 -1
- package/build/listItem/AdditionalInfo/ListItemAdditionalInfo.js +1 -0
- package/build/listItem/AdditionalInfo/ListItemAdditionalInfo.js.map +1 -1
- package/build/listItem/AdditionalInfo/ListItemAdditionalInfo.mjs +1 -0
- package/build/listItem/AdditionalInfo/ListItemAdditionalInfo.mjs.map +1 -1
- package/build/listItem/ListItem.js +1 -0
- package/build/listItem/ListItem.js.map +1 -1
- package/build/listItem/ListItem.mjs +1 -0
- package/build/listItem/ListItem.mjs.map +1 -1
- package/build/listItem/Prompt/ListItemPrompt.js +5 -5
- package/build/listItem/Prompt/ListItemPrompt.mjs +5 -5
- package/build/loader/Loader.js +1 -0
- package/build/loader/Loader.js.map +1 -1
- package/build/loader/Loader.mjs +1 -0
- package/build/loader/Loader.mjs.map +1 -1
- package/build/main.css +51 -130
- package/build/markdown/Markdown.js +1 -0
- package/build/markdown/Markdown.js.map +1 -1
- package/build/markdown/Markdown.mjs +1 -0
- package/build/markdown/Markdown.mjs.map +1 -1
- package/build/modal/Modal.js +1 -0
- package/build/modal/Modal.js.map +1 -1
- package/build/modal/Modal.mjs +1 -0
- package/build/modal/Modal.mjs.map +1 -1
- package/build/moneyInput/MoneyInput.js +28 -12
- package/build/moneyInput/MoneyInput.js.map +1 -1
- package/build/moneyInput/MoneyInput.mjs +30 -14
- package/build/moneyInput/MoneyInput.mjs.map +1 -1
- package/build/moneyInput/currencyFormatting.js +8 -2
- package/build/moneyInput/currencyFormatting.js.map +1 -1
- package/build/moneyInput/currencyFormatting.mjs +5 -4
- package/build/moneyInput/currencyFormatting.mjs.map +1 -1
- package/build/navigationOption/NavigationOption.js +1 -0
- package/build/navigationOption/NavigationOption.js.map +1 -1
- package/build/navigationOption/NavigationOption.mjs +1 -0
- package/build/navigationOption/NavigationOption.mjs.map +1 -1
- package/build/nudge/Nudge.js +1 -0
- package/build/nudge/Nudge.js.map +1 -1
- package/build/nudge/Nudge.mjs +1 -0
- package/build/nudge/Nudge.mjs.map +1 -1
- package/build/overlayHeader/OverlayHeader.js +1 -0
- package/build/overlayHeader/OverlayHeader.js.map +1 -1
- package/build/overlayHeader/OverlayHeader.mjs +1 -0
- package/build/overlayHeader/OverlayHeader.mjs.map +1 -1
- package/build/phoneNumberInput/PhoneNumberInput.js +1 -0
- package/build/phoneNumberInput/PhoneNumberInput.js.map +1 -1
- package/build/phoneNumberInput/PhoneNumberInput.mjs +1 -0
- package/build/phoneNumberInput/PhoneNumberInput.mjs.map +1 -1
- package/build/popover/Popover.js +1 -0
- package/build/popover/Popover.js.map +1 -1
- package/build/popover/Popover.mjs +1 -0
- package/build/popover/Popover.mjs.map +1 -1
- package/build/processIndicator/ProcessIndicator.js +1 -0
- package/build/processIndicator/ProcessIndicator.js.map +1 -1
- package/build/processIndicator/ProcessIndicator.mjs +1 -0
- package/build/processIndicator/ProcessIndicator.mjs.map +1 -1
- package/build/progressBar/ProgressBar.js +1 -0
- package/build/progressBar/ProgressBar.js.map +1 -1
- package/build/progressBar/ProgressBar.mjs +1 -0
- package/build/progressBar/ProgressBar.mjs.map +1 -1
- package/build/promoCard/PromoCard.js +1 -0
- package/build/promoCard/PromoCard.js.map +1 -1
- package/build/promoCard/PromoCard.mjs +1 -0
- package/build/promoCard/PromoCard.mjs.map +1 -1
- package/build/promoCard/PromoCardIndicator.js +1 -0
- package/build/promoCard/PromoCardIndicator.js.map +1 -1
- package/build/promoCard/PromoCardIndicator.mjs +1 -0
- package/build/promoCard/PromoCardIndicator.mjs.map +1 -1
- package/build/prompt/ActionPrompt/ActionPrompt.js +41 -8
- package/build/prompt/ActionPrompt/ActionPrompt.js.map +1 -1
- package/build/prompt/ActionPrompt/ActionPrompt.mjs +41 -8
- package/build/prompt/ActionPrompt/ActionPrompt.mjs.map +1 -1
- package/build/prompt/InfoPrompt/InfoPrompt.js +1 -0
- package/build/prompt/InfoPrompt/InfoPrompt.js.map +1 -1
- package/build/prompt/InfoPrompt/InfoPrompt.mjs +1 -0
- package/build/prompt/InfoPrompt/InfoPrompt.mjs.map +1 -1
- package/build/prompt/InlinePrompt/InlinePrompt.js +1 -0
- package/build/prompt/InlinePrompt/InlinePrompt.js.map +1 -1
- package/build/prompt/InlinePrompt/InlinePrompt.mjs +1 -0
- package/build/prompt/InlinePrompt/InlinePrompt.mjs.map +1 -1
- package/build/prompt/PrimitivePrompt/PrimitivePrompt.js +0 -2
- package/build/prompt/PrimitivePrompt/PrimitivePrompt.js.map +1 -1
- package/build/prompt/PrimitivePrompt/PrimitivePrompt.mjs +0 -2
- package/build/prompt/PrimitivePrompt/PrimitivePrompt.mjs.map +1 -1
- package/build/radio/Radio.js +1 -0
- package/build/radio/Radio.js.map +1 -1
- package/build/radio/Radio.mjs +1 -0
- package/build/radio/Radio.mjs.map +1 -1
- package/build/segmentedControl/SegmentedControl.js +1 -0
- package/build/segmentedControl/SegmentedControl.js.map +1 -1
- package/build/segmentedControl/SegmentedControl.mjs +1 -0
- package/build/segmentedControl/SegmentedControl.mjs.map +1 -1
- package/build/select/Select.js +1 -0
- package/build/select/Select.js.map +1 -1
- package/build/select/Select.mjs +1 -0
- package/build/select/Select.mjs.map +1 -1
- package/build/select/option/Option.js +1 -0
- package/build/select/option/Option.js.map +1 -1
- package/build/select/option/Option.mjs +1 -0
- package/build/select/option/Option.mjs.map +1 -1
- package/build/statusIcon/StatusIcon.js +1 -0
- package/build/statusIcon/StatusIcon.js.map +1 -1
- package/build/statusIcon/StatusIcon.mjs +1 -0
- package/build/statusIcon/StatusIcon.mjs.map +1 -1
- package/build/stepper/Stepper.js +1 -0
- package/build/stepper/Stepper.js.map +1 -1
- package/build/stepper/Stepper.mjs +1 -0
- package/build/stepper/Stepper.mjs.map +1 -1
- package/build/sticky/Sticky.js +1 -0
- package/build/sticky/Sticky.js.map +1 -1
- package/build/sticky/Sticky.mjs +1 -0
- package/build/sticky/Sticky.mjs.map +1 -1
- package/build/styles/css/neptune.css +22 -22
- package/build/styles/less/neptune-tokens.less +4 -4
- package/build/styles/main.css +51 -130
- package/build/styles/props/neptune-tokens.css +2 -2
- package/build/styles/styles/less/neptune.css +22 -22
- package/build/summary/Summary.js +1 -0
- package/build/summary/Summary.js.map +1 -1
- package/build/summary/Summary.mjs +1 -0
- package/build/summary/Summary.mjs.map +1 -1
- package/build/table/Table.js +1 -0
- package/build/table/Table.js.map +1 -1
- package/build/table/Table.mjs +1 -0
- package/build/table/Table.mjs.map +1 -1
- package/build/table/TableRow.js +1 -0
- package/build/table/TableRow.js.map +1 -1
- package/build/table/TableRow.mjs +1 -0
- package/build/table/TableRow.mjs.map +1 -1
- package/build/table/TableStatusText.js +1 -0
- package/build/table/TableStatusText.js.map +1 -1
- package/build/table/TableStatusText.mjs +1 -0
- package/build/table/TableStatusText.mjs.map +1 -1
- package/build/tabs/Tabs.js +1 -0
- package/build/tabs/Tabs.js.map +1 -1
- package/build/tabs/Tabs.mjs +1 -0
- package/build/tabs/Tabs.mjs.map +1 -1
- package/build/tile/Tile.js +1 -0
- package/build/tile/Tile.js.map +1 -1
- package/build/tile/Tile.mjs +1 -0
- package/build/tile/Tile.mjs.map +1 -1
- package/build/title/Title.js +1 -0
- package/build/title/Title.js.map +1 -1
- package/build/title/Title.mjs +1 -0
- package/build/title/Title.mjs.map +1 -1
- package/build/tooltip/Tooltip.js +30 -50
- package/build/tooltip/Tooltip.js.map +1 -1
- package/build/tooltip/Tooltip.mjs +31 -51
- package/build/tooltip/Tooltip.mjs.map +1 -1
- package/build/typeahead/Typeahead.js +5 -5
- package/build/typeahead/Typeahead.mjs +5 -5
- package/build/types/badge/BadgeAssets.d.ts.map +1 -1
- package/build/types/common/locale/index.d.ts +1 -1
- package/build/types/common/locale/index.d.ts.map +1 -1
- package/build/types/common/panel/Panel.d.ts.map +1 -1
- package/build/types/expressiveMoneyInput/currencySelector/CurrencySelector.d.ts.map +1 -1
- package/build/types/index.d.ts +2 -2
- package/build/types/index.d.ts.map +1 -1
- package/build/types/moneyInput/MoneyInput.d.ts +6 -0
- package/build/types/moneyInput/MoneyInput.d.ts.map +1 -1
- package/build/types/moneyInput/currencyFormatting.d.ts +4 -3
- package/build/types/moneyInput/currencyFormatting.d.ts.map +1 -1
- package/build/types/prompt/ActionPrompt/ActionPrompt.d.ts +11 -2
- package/build/types/prompt/ActionPrompt/ActionPrompt.d.ts.map +1 -1
- package/build/types/prompt/PrimitivePrompt/PrimitivePrompt.d.ts +3 -8
- package/build/types/prompt/PrimitivePrompt/PrimitivePrompt.d.ts.map +1 -1
- package/build/types/prompt/index.d.ts +0 -2
- package/build/types/prompt/index.d.ts.map +1 -1
- package/build/types/test-utils/index.d.ts +0 -4
- package/build/types/test-utils/index.d.ts.map +1 -1
- package/build/types/tooltip/Tooltip.d.ts.map +1 -1
- package/build/upload/Upload.js +1 -0
- package/build/upload/Upload.js.map +1 -1
- package/build/upload/Upload.mjs +1 -0
- package/build/upload/Upload.mjs.map +1 -1
- package/build/upload/steps/completeStep/completeStep.js +1 -0
- package/build/upload/steps/completeStep/completeStep.js.map +1 -1
- package/build/upload/steps/completeStep/completeStep.mjs +1 -0
- package/build/upload/steps/completeStep/completeStep.mjs.map +1 -1
- package/build/upload/steps/processingStep/processingStep.js +1 -0
- package/build/upload/steps/processingStep/processingStep.js.map +1 -1
- package/build/upload/steps/processingStep/processingStep.mjs +1 -0
- package/build/upload/steps/processingStep/processingStep.mjs.map +1 -1
- package/build/upload/steps/uploadImageStep/uploadImageStep.js +1 -0
- package/build/upload/steps/uploadImageStep/uploadImageStep.js.map +1 -1
- package/build/upload/steps/uploadImageStep/uploadImageStep.mjs +1 -0
- package/build/upload/steps/uploadImageStep/uploadImageStep.mjs.map +1 -1
- package/build/uploadInput/UploadInput.js +1 -0
- package/build/uploadInput/UploadInput.js.map +1 -1
- package/build/uploadInput/UploadInput.mjs +1 -0
- package/build/uploadInput/UploadInput.mjs.map +1 -1
- package/build/uploadInput/uploadButton/UploadButton.js +1 -0
- package/build/uploadInput/uploadButton/UploadButton.js.map +1 -1
- package/build/uploadInput/uploadButton/UploadButton.mjs +1 -0
- package/build/uploadInput/uploadButton/UploadButton.mjs.map +1 -1
- package/build/uploadInput/uploadButton/defaults.js +1 -0
- package/build/uploadInput/uploadButton/defaults.js.map +1 -1
- package/build/uploadInput/uploadButton/defaults.mjs +1 -0
- package/build/uploadInput/uploadButton/defaults.mjs.map +1 -1
- package/build/uploadInput/uploadItem/UploadItem.js +1 -0
- package/build/uploadInput/uploadItem/UploadItem.js.map +1 -1
- package/build/uploadInput/uploadItem/UploadItem.mjs +1 -0
- package/build/uploadInput/uploadItem/UploadItem.mjs.map +1 -1
- package/build/withDisplayFormat/WithDisplayFormat.js +1 -0
- package/build/withDisplayFormat/WithDisplayFormat.js.map +1 -1
- package/build/withDisplayFormat/WithDisplayFormat.mjs +1 -0
- package/build/withDisplayFormat/WithDisplayFormat.mjs.map +1 -1
- package/package.json +14 -16
- package/src/avatarView/AvatarView.story.tsx +1 -1
- package/src/badge/BadgeAssets.tsx +2 -0
- package/src/common/locale/index.test.ts +13 -4
- package/src/common/locale/index.ts +9 -3
- package/src/common/panel/Panel.tsx +42 -50
- package/src/expressiveMoneyInput/ExpressiveMoneyInput.story.tsx +18 -0
- package/src/expressiveMoneyInput/currencySelector/CurrencySelector.test.tsx +119 -1
- package/src/expressiveMoneyInput/currencySelector/CurrencySelector.tsx +4 -3
- package/src/i18n/en.json +0 -2
- package/src/index.ts +2 -2
- package/src/main.css +51 -130
- package/src/main.less +1 -3
- package/src/moneyInput/MoneyInput.story.tsx +10 -1
- package/src/moneyInput/MoneyInput.test.story.tsx +141 -1
- package/src/moneyInput/MoneyInput.test.tsx +45 -0
- package/src/moneyInput/MoneyInput.tsx +27 -3
- package/src/moneyInput/currencyFormatting.ts +11 -5
- package/src/prompt/ActionPrompt/ActionPrompt.tsx +62 -9
- package/src/prompt/PrimitivePrompt/PrimitivePrompt.tsx +2 -9
- package/src/prompt/index.ts +0 -4
- package/src/sentimentSurface/SentimentSurface.story.tsx +17 -43
- package/src/styles/less/neptune.css +22 -22
- package/src/tooltip/Tooltip.tsx +26 -45
- package/build/prompt/CriticalBanner/CriticalBanner.js +0 -148
- package/build/prompt/CriticalBanner/CriticalBanner.js.map +0 -1
- package/build/prompt/CriticalBanner/CriticalBanner.mjs +0 -146
- package/build/prompt/CriticalBanner/CriticalBanner.mjs.map +0 -1
- package/build/prompt/CriticalBanner/helpers.js +0 -29
- package/build/prompt/CriticalBanner/helpers.js.map +0 -1
- package/build/prompt/CriticalBanner/helpers.mjs +0 -26
- package/build/prompt/CriticalBanner/helpers.mjs.map +0 -1
- package/build/prompt/common/Expander/Expander.js +0 -47
- package/build/prompt/common/Expander/Expander.js.map +0 -1
- package/build/prompt/common/Expander/Expander.messages.js +0 -17
- package/build/prompt/common/Expander/Expander.messages.js.map +0 -1
- package/build/prompt/common/Expander/Expander.messages.mjs +0 -13
- package/build/prompt/common/Expander/Expander.messages.mjs.map +0 -1
- package/build/prompt/common/Expander/Expander.mjs +0 -44
- package/build/prompt/common/Expander/Expander.mjs.map +0 -1
- package/build/prompt/helpers/promptMedia.js +0 -52
- package/build/prompt/helpers/promptMedia.js.map +0 -1
- package/build/prompt/helpers/promptMedia.mjs +0 -50
- package/build/prompt/helpers/promptMedia.mjs.map +0 -1
- package/build/styles/prompt/CriticalBanner/CriticalBanner.css +0 -59
- package/build/styles/prompt/common/Expander/Expander.css +0 -8
- package/build/types/prompt/CriticalBanner/CriticalBanner.d.ts +0 -40
- package/build/types/prompt/CriticalBanner/CriticalBanner.d.ts.map +0 -1
- package/build/types/prompt/CriticalBanner/helpers.d.ts +0 -18
- package/build/types/prompt/CriticalBanner/helpers.d.ts.map +0 -1
- package/build/types/prompt/CriticalBanner/index.d.ts +0 -3
- package/build/types/prompt/CriticalBanner/index.d.ts.map +0 -1
- package/build/types/prompt/common/Expander/Expander.d.ts +0 -20
- package/build/types/prompt/common/Expander/Expander.d.ts.map +0 -1
- package/build/types/prompt/common/Expander/Expander.messages.d.ts +0 -14
- package/build/types/prompt/common/Expander/Expander.messages.d.ts.map +0 -1
- package/build/types/prompt/helpers/promptMedia.d.ts +0 -22
- package/build/types/prompt/helpers/promptMedia.d.ts.map +0 -1
- package/src/prompt/CriticalBanner/CriticalBanner.accessibility.docs.mdx +0 -131
- package/src/prompt/CriticalBanner/CriticalBanner.css +0 -59
- package/src/prompt/CriticalBanner/CriticalBanner.less +0 -64
- package/src/prompt/CriticalBanner/CriticalBanner.story.tsx +0 -645
- package/src/prompt/CriticalBanner/CriticalBanner.test.story.tsx +0 -285
- package/src/prompt/CriticalBanner/CriticalBanner.tsx +0 -194
- package/src/prompt/CriticalBanner/helpers.ts +0 -39
- package/src/prompt/CriticalBanner/index.ts +0 -2
- package/src/prompt/common/Expander/Expander.css +0 -8
- package/src/prompt/common/Expander/Expander.less +0 -9
- package/src/prompt/common/Expander/Expander.messages.ts +0 -14
- package/src/prompt/common/Expander/Expander.test.tsx +0 -167
- package/src/prompt/common/Expander/Expander.tsx +0 -83
- package/src/prompt/helpers/promptMedia.tsx +0 -79
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import 'react';
|
|
2
|
-
import { clsx } from 'clsx';
|
|
3
|
-
import { ChevronUp } from '@transferwise/icons';
|
|
4
|
-
import IconButton from '../../../iconButton/IconButton.mjs';
|
|
5
|
-
import { useIntl } from 'react-intl';
|
|
6
|
-
import messages from './Expander.messages.mjs';
|
|
7
|
-
import { jsx } from 'react/jsx-runtime';
|
|
8
|
-
|
|
9
|
-
// Helper for conditional rendering based on expanded state
|
|
10
|
-
function shouldShowWhenExpanded({
|
|
11
|
-
expanded,
|
|
12
|
-
hasContent,
|
|
13
|
-
alwaysShow = false
|
|
14
|
-
}) {
|
|
15
|
-
if (alwaysShow) {
|
|
16
|
-
return hasContent;
|
|
17
|
-
}
|
|
18
|
-
return expanded && hasContent;
|
|
19
|
-
}
|
|
20
|
-
// Reusable toggle button component
|
|
21
|
-
const ExpanderToggle = ({
|
|
22
|
-
expanded,
|
|
23
|
-
onToggle,
|
|
24
|
-
size = 24,
|
|
25
|
-
className,
|
|
26
|
-
'data-testid': testId
|
|
27
|
-
}) => {
|
|
28
|
-
const intl = useIntl();
|
|
29
|
-
return /*#__PURE__*/jsx(IconButton, {
|
|
30
|
-
size: size,
|
|
31
|
-
priority: "secondary",
|
|
32
|
-
"aria-label": intl.formatMessage(expanded ? messages.collapseAriaLabel : messages.expandAriaLabel),
|
|
33
|
-
"aria-expanded": expanded,
|
|
34
|
-
className: clsx('wds-expander-toggle', {
|
|
35
|
-
'wds-expander-toggle--collapsed': !expanded
|
|
36
|
-
}, className),
|
|
37
|
-
"data-testid": testId,
|
|
38
|
-
onClick: onToggle,
|
|
39
|
-
children: /*#__PURE__*/jsx(ChevronUp, {})
|
|
40
|
-
});
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
export { ExpanderToggle, shouldShowWhenExpanded };
|
|
44
|
-
//# sourceMappingURL=Expander.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Expander.mjs","sources":["../../../../src/prompt/common/Expander/Expander.tsx"],"sourcesContent":["import { useState, useCallback } from 'react';\nimport { clsx } from 'clsx';\nimport { ChevronUp } from '@transferwise/icons';\nimport IconButton from '../../../iconButton';\nimport { useIntl } from 'react-intl';\nimport messages from './Expander.messages';\n\nexport type ExpanderState = {\n expanded: boolean;\n toggle: () => void;\n setExpanded: (expanded: boolean) => void;\n};\n\n// Hook for managing expander state\nexport function useExpanderState(initialExpanded = true): ExpanderState {\n const [expanded, setExpanded] = useState(initialExpanded);\n\n const toggle = useCallback(() => {\n setExpanded((prev) => !prev);\n }, []);\n\n return {\n expanded,\n toggle,\n setExpanded,\n };\n}\n\n// Helper for conditional rendering based on expanded state\nexport function shouldShowWhenExpanded({\n expanded,\n hasContent,\n alwaysShow = false,\n}: {\n expanded: boolean;\n hasContent: boolean;\n alwaysShow?: boolean;\n}): boolean {\n if (alwaysShow) {\n return hasContent;\n }\n\n return expanded && hasContent;\n}\n\nexport type ExpanderToggleProps = {\n expanded: boolean;\n onToggle?: () => void;\n size?: 16 | 24 | 32 | 40 | 48 | 56 | 72;\n className?: string;\n 'data-testid'?: string;\n};\n\n// Reusable toggle button component\nexport const ExpanderToggle = ({\n expanded,\n onToggle,\n size = 24,\n className,\n 'data-testid': testId,\n}: ExpanderToggleProps) => {\n const intl = useIntl();\n\n return (\n <IconButton\n size={size}\n priority=\"secondary\"\n aria-label={intl.formatMessage(\n expanded ? messages.collapseAriaLabel : messages.expandAriaLabel,\n )}\n aria-expanded={expanded}\n className={clsx(\n 'wds-expander-toggle',\n { 'wds-expander-toggle--collapsed': !expanded },\n className,\n )}\n data-testid={testId}\n onClick={onToggle}\n >\n <ChevronUp />\n </IconButton>\n );\n};\n"],"names":["shouldShowWhenExpanded","expanded","hasContent","alwaysShow","ExpanderToggle","onToggle","size","className","testId","intl","useIntl","_jsx","IconButton","priority","formatMessage","messages","collapseAriaLabel","expandAriaLabel","clsx","onClick","children","ChevronUp"],"mappings":";;;;;;;;AA4BA;AACM,SAAUA,sBAAsBA,CAAC;EACrCC,QAAQ;EACRC,UAAU;AACVC,EAAAA,UAAU,GAAG;AAAK,CAKnB,EAAA;AACC,EAAA,IAAIA,UAAU,EAAE;AACd,IAAA,OAAOD,UAAU;AACnB,EAAA;EAEA,OAAOD,QAAQ,IAAIC,UAAU;AAC/B;AAUA;AACO,MAAME,cAAc,GAAGA,CAAC;EAC7BH,QAAQ;EACRI,QAAQ;AACRC,EAAAA,IAAI,GAAG,EAAE;EACTC,SAAS;AACT,EAAA,aAAa,EAAEC;AAAM,CACD,KAAI;AACxB,EAAA,MAAMC,IAAI,GAAGC,OAAO,EAAE;EAEtB,oBACEC,GAAA,CAACC,UAAU,EAAA;AACTN,IAAAA,IAAI,EAAEA,IAAK;AACXO,IAAAA,QAAQ,EAAC,WAAW;AACpB,IAAA,YAAA,EAAYJ,IAAI,CAACK,aAAa,CAC5Bb,QAAQ,GAAGc,QAAQ,CAACC,iBAAiB,GAAGD,QAAQ,CAACE,eAAe,CAChE;AACF,IAAA,eAAA,EAAehB,QAAS;AACxBM,IAAAA,SAAS,EAAEW,IAAI,CACb,qBAAqB,EACrB;AAAE,MAAA,gCAAgC,EAAE,CAACjB;KAAU,EAC/CM,SAAS,CACT;AACF,IAAA,aAAA,EAAaC,MAAO;AACpBW,IAAAA,OAAO,EAAEd,QAAS;AAAAe,IAAAA,QAAA,eAElBT,GAAA,CAACU,SAAS,EAAA,EAAA;AACZ,GAAY,CAAC;AAEjB;;;;"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var icons = require('@transferwise/icons');
|
|
4
|
-
var AvatarView = require('../../avatarView/AvatarView.js');
|
|
5
|
-
var Image = require('../../image/Image.js');
|
|
6
|
-
var StatusIcon = require('../../statusIcon/StatusIcon.js');
|
|
7
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
8
|
-
|
|
9
|
-
function renderPromptMedia({
|
|
10
|
-
media,
|
|
11
|
-
sentiment,
|
|
12
|
-
mediaId,
|
|
13
|
-
imgClassName
|
|
14
|
-
}) {
|
|
15
|
-
if (media?.imgSrc) {
|
|
16
|
-
return /*#__PURE__*/jsxRuntime.jsx(Image.default, {
|
|
17
|
-
id: mediaId,
|
|
18
|
-
src: media.imgSrc,
|
|
19
|
-
className: imgClassName,
|
|
20
|
-
alt: media['aria-label'] ?? ''
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
if (media?.avatar) {
|
|
24
|
-
const badge = media.avatar.badge ? media.avatar.badge : sentiment === 'proposition' ? {} : {
|
|
25
|
-
status: sentiment
|
|
26
|
-
};
|
|
27
|
-
return /*#__PURE__*/jsxRuntime.jsx(AvatarView.default, {
|
|
28
|
-
...media.avatar,
|
|
29
|
-
badge: badge,
|
|
30
|
-
"aria-label": media['aria-label'],
|
|
31
|
-
"aria-hidden": media['aria-hidden'],
|
|
32
|
-
id: mediaId,
|
|
33
|
-
size: 48,
|
|
34
|
-
children: media.avatar.asset
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
return sentiment === 'proposition' ? /*#__PURE__*/jsxRuntime.jsx(AvatarView.default, {
|
|
38
|
-
id: mediaId,
|
|
39
|
-
size: 48,
|
|
40
|
-
"aria-label": media['aria-label'],
|
|
41
|
-
"aria-hidden": media['aria-hidden'],
|
|
42
|
-
children: /*#__PURE__*/jsxRuntime.jsx(icons.GiftBox, {})
|
|
43
|
-
}) : /*#__PURE__*/jsxRuntime.jsx(StatusIcon.default, {
|
|
44
|
-
id: mediaId,
|
|
45
|
-
size: 48,
|
|
46
|
-
sentiment: sentiment,
|
|
47
|
-
iconLabel: media['aria-hidden'] ? null : media['aria-label']
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
exports.renderPromptMedia = renderPromptMedia;
|
|
52
|
-
//# sourceMappingURL=promptMedia.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"promptMedia.js","sources":["../../../src/prompt/helpers/promptMedia.tsx"],"sourcesContent":["import { ReactNode } from 'react';\nimport { GiftBox } from '@transferwise/icons';\n\nimport AvatarView, { AvatarViewProps } from '../../avatarView';\nimport Image from '../../image';\nimport StatusIcon from '../../statusIcon';\nimport { BadgeAssetsProps } from '../../badge';\nimport { PrimitivePromptProps } from '../PrimitivePrompt';\n\nexport type PromptMedia = {\n imgSrc?: string;\n avatar?: Pick<AvatarViewProps, 'imgSrc' | 'profileName' | 'profileType'> & {\n asset?: AvatarViewProps['children'];\n badge?: Pick<BadgeAssetsProps, 'flagCode'>;\n };\n 'aria-label'?: string;\n 'aria-hidden'?: boolean;\n};\n\ntype RenderPromptMediaOptions = {\n media: PromptMedia;\n sentiment: PrimitivePromptProps['sentiment'];\n mediaId: string;\n imgClassName: string;\n};\n\nexport function renderPromptMedia({\n media,\n sentiment,\n mediaId,\n imgClassName,\n}: RenderPromptMediaOptions): ReactNode {\n if (media?.imgSrc) {\n return (\n <Image\n id={mediaId}\n src={media.imgSrc}\n className={imgClassName}\n alt={media['aria-label'] ?? ''}\n />\n );\n }\n if (media?.avatar) {\n const badge = media.avatar.badge\n ? media.avatar.badge\n : sentiment === 'proposition'\n ? {}\n : { status: sentiment };\n return (\n <AvatarView\n {...media.avatar}\n badge={badge}\n aria-label={media['aria-label']}\n aria-hidden={media['aria-hidden']}\n id={mediaId}\n size={48}\n >\n {media.avatar.asset}\n </AvatarView>\n );\n }\n return sentiment === 'proposition' ? (\n <AvatarView\n id={mediaId}\n size={48}\n aria-label={media['aria-label']}\n aria-hidden={media['aria-hidden']}\n >\n <GiftBox />\n </AvatarView>\n ) : (\n <StatusIcon\n id={mediaId}\n size={48}\n sentiment={sentiment}\n iconLabel={media['aria-hidden'] ? null : media['aria-label']}\n />\n );\n}\n"],"names":["renderPromptMedia","media","sentiment","mediaId","imgClassName","imgSrc","_jsx","Image","id","src","className","alt","avatar","badge","status","AvatarView","size","children","asset","GiftBox","StatusIcon","iconLabel"],"mappings":";;;;;;;;AA0BM,SAAUA,iBAAiBA,CAAC;EAChCC,KAAK;EACLC,SAAS;EACTC,OAAO;AACPC,EAAAA;AAAY,CACa,EAAA;EACzB,IAAIH,KAAK,EAAEI,MAAM,EAAE;IACjB,oBACEC,cAAA,CAACC,aAAK,EAAA;AACJC,MAAAA,EAAE,EAAEL,OAAQ;MACZM,GAAG,EAAER,KAAK,CAACI,MAAO;AAClBK,MAAAA,SAAS,EAAEN,YAAa;AACxBO,MAAAA,GAAG,EAAEV,KAAK,CAAC,YAAY,CAAC,IAAI;AAAG,KAAA,CAC/B;AAEN,EAAA;EACA,IAAIA,KAAK,EAAEW,MAAM,EAAE;IACjB,MAAMC,KAAK,GAAGZ,KAAK,CAACW,MAAM,CAACC,KAAK,GAC5BZ,KAAK,CAACW,MAAM,CAACC,KAAK,GAClBX,SAAS,KAAK,aAAa,GACzB,EAAE,GACF;AAAEY,MAAAA,MAAM,EAAEZ;KAAW;IAC3B,oBACEI,cAAA,CAACS,kBAAU,EAAA;MAAA,GACLd,KAAK,CAACW,MAAM;AAChBC,MAAAA,KAAK,EAAEA,KAAM;MACb,YAAA,EAAYZ,KAAK,CAAC,YAAY,CAAE;MAChC,aAAA,EAAaA,KAAK,CAAC,aAAa,CAAE;AAClCO,MAAAA,EAAE,EAAEL,OAAQ;AACZa,MAAAA,IAAI,EAAE,EAAG;AAAAC,MAAAA,QAAA,EAERhB,KAAK,CAACW,MAAM,CAACM;AAAK,KACT,CAAC;AAEjB,EAAA;AACA,EAAA,OAAOhB,SAAS,KAAK,aAAa,gBAChCI,cAAA,CAACS,kBAAU,EAAA;AACTP,IAAAA,EAAE,EAAEL,OAAQ;AACZa,IAAAA,IAAI,EAAE,EAAG;IACT,YAAA,EAAYf,KAAK,CAAC,YAAY,CAAE;IAChC,aAAA,EAAaA,KAAK,CAAC,aAAa,CAAE;AAAAgB,IAAAA,QAAA,eAElCX,cAAA,CAACa,aAAO,EAAA,EAAA;AACV,GAAY,CAAC,gBAEbb,cAAA,CAACc,kBAAU,EAAA;AACTZ,IAAAA,EAAE,EAAEL,OAAQ;AACZa,IAAAA,IAAI,EAAE,EAAG;AACTd,IAAAA,SAAS,EAAEA,SAAU;IACrBmB,SAAS,EAAEpB,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI,GAAGA,KAAK,CAAC,YAAY;AAAE,GAAA,CAEhE;AACH;;;;"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { GiftBox } from '@transferwise/icons';
|
|
2
|
-
import AvatarView from '../../avatarView/AvatarView.mjs';
|
|
3
|
-
import Image from '../../image/Image.mjs';
|
|
4
|
-
import StatusIcon from '../../statusIcon/StatusIcon.mjs';
|
|
5
|
-
import { jsx } from 'react/jsx-runtime';
|
|
6
|
-
|
|
7
|
-
function renderPromptMedia({
|
|
8
|
-
media,
|
|
9
|
-
sentiment,
|
|
10
|
-
mediaId,
|
|
11
|
-
imgClassName
|
|
12
|
-
}) {
|
|
13
|
-
if (media?.imgSrc) {
|
|
14
|
-
return /*#__PURE__*/jsx(Image, {
|
|
15
|
-
id: mediaId,
|
|
16
|
-
src: media.imgSrc,
|
|
17
|
-
className: imgClassName,
|
|
18
|
-
alt: media['aria-label'] ?? ''
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
if (media?.avatar) {
|
|
22
|
-
const badge = media.avatar.badge ? media.avatar.badge : sentiment === 'proposition' ? {} : {
|
|
23
|
-
status: sentiment
|
|
24
|
-
};
|
|
25
|
-
return /*#__PURE__*/jsx(AvatarView, {
|
|
26
|
-
...media.avatar,
|
|
27
|
-
badge: badge,
|
|
28
|
-
"aria-label": media['aria-label'],
|
|
29
|
-
"aria-hidden": media['aria-hidden'],
|
|
30
|
-
id: mediaId,
|
|
31
|
-
size: 48,
|
|
32
|
-
children: media.avatar.asset
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
return sentiment === 'proposition' ? /*#__PURE__*/jsx(AvatarView, {
|
|
36
|
-
id: mediaId,
|
|
37
|
-
size: 48,
|
|
38
|
-
"aria-label": media['aria-label'],
|
|
39
|
-
"aria-hidden": media['aria-hidden'],
|
|
40
|
-
children: /*#__PURE__*/jsx(GiftBox, {})
|
|
41
|
-
}) : /*#__PURE__*/jsx(StatusIcon, {
|
|
42
|
-
id: mediaId,
|
|
43
|
-
size: 48,
|
|
44
|
-
sentiment: sentiment,
|
|
45
|
-
iconLabel: media['aria-hidden'] ? null : media['aria-label']
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export { renderPromptMedia };
|
|
50
|
-
//# sourceMappingURL=promptMedia.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"promptMedia.mjs","sources":["../../../src/prompt/helpers/promptMedia.tsx"],"sourcesContent":["import { ReactNode } from 'react';\nimport { GiftBox } from '@transferwise/icons';\n\nimport AvatarView, { AvatarViewProps } from '../../avatarView';\nimport Image from '../../image';\nimport StatusIcon from '../../statusIcon';\nimport { BadgeAssetsProps } from '../../badge';\nimport { PrimitivePromptProps } from '../PrimitivePrompt';\n\nexport type PromptMedia = {\n imgSrc?: string;\n avatar?: Pick<AvatarViewProps, 'imgSrc' | 'profileName' | 'profileType'> & {\n asset?: AvatarViewProps['children'];\n badge?: Pick<BadgeAssetsProps, 'flagCode'>;\n };\n 'aria-label'?: string;\n 'aria-hidden'?: boolean;\n};\n\ntype RenderPromptMediaOptions = {\n media: PromptMedia;\n sentiment: PrimitivePromptProps['sentiment'];\n mediaId: string;\n imgClassName: string;\n};\n\nexport function renderPromptMedia({\n media,\n sentiment,\n mediaId,\n imgClassName,\n}: RenderPromptMediaOptions): ReactNode {\n if (media?.imgSrc) {\n return (\n <Image\n id={mediaId}\n src={media.imgSrc}\n className={imgClassName}\n alt={media['aria-label'] ?? ''}\n />\n );\n }\n if (media?.avatar) {\n const badge = media.avatar.badge\n ? media.avatar.badge\n : sentiment === 'proposition'\n ? {}\n : { status: sentiment };\n return (\n <AvatarView\n {...media.avatar}\n badge={badge}\n aria-label={media['aria-label']}\n aria-hidden={media['aria-hidden']}\n id={mediaId}\n size={48}\n >\n {media.avatar.asset}\n </AvatarView>\n );\n }\n return sentiment === 'proposition' ? (\n <AvatarView\n id={mediaId}\n size={48}\n aria-label={media['aria-label']}\n aria-hidden={media['aria-hidden']}\n >\n <GiftBox />\n </AvatarView>\n ) : (\n <StatusIcon\n id={mediaId}\n size={48}\n sentiment={sentiment}\n iconLabel={media['aria-hidden'] ? null : media['aria-label']}\n />\n );\n}\n"],"names":["renderPromptMedia","media","sentiment","mediaId","imgClassName","imgSrc","_jsx","Image","id","src","className","alt","avatar","badge","status","AvatarView","size","children","asset","GiftBox","StatusIcon","iconLabel"],"mappings":";;;;;;AA0BM,SAAUA,iBAAiBA,CAAC;EAChCC,KAAK;EACLC,SAAS;EACTC,OAAO;AACPC,EAAAA;AAAY,CACa,EAAA;EACzB,IAAIH,KAAK,EAAEI,MAAM,EAAE;IACjB,oBACEC,GAAA,CAACC,KAAK,EAAA;AACJC,MAAAA,EAAE,EAAEL,OAAQ;MACZM,GAAG,EAAER,KAAK,CAACI,MAAO;AAClBK,MAAAA,SAAS,EAAEN,YAAa;AACxBO,MAAAA,GAAG,EAAEV,KAAK,CAAC,YAAY,CAAC,IAAI;AAAG,KAAA,CAC/B;AAEN,EAAA;EACA,IAAIA,KAAK,EAAEW,MAAM,EAAE;IACjB,MAAMC,KAAK,GAAGZ,KAAK,CAACW,MAAM,CAACC,KAAK,GAC5BZ,KAAK,CAACW,MAAM,CAACC,KAAK,GAClBX,SAAS,KAAK,aAAa,GACzB,EAAE,GACF;AAAEY,MAAAA,MAAM,EAAEZ;KAAW;IAC3B,oBACEI,GAAA,CAACS,UAAU,EAAA;MAAA,GACLd,KAAK,CAACW,MAAM;AAChBC,MAAAA,KAAK,EAAEA,KAAM;MACb,YAAA,EAAYZ,KAAK,CAAC,YAAY,CAAE;MAChC,aAAA,EAAaA,KAAK,CAAC,aAAa,CAAE;AAClCO,MAAAA,EAAE,EAAEL,OAAQ;AACZa,MAAAA,IAAI,EAAE,EAAG;AAAAC,MAAAA,QAAA,EAERhB,KAAK,CAACW,MAAM,CAACM;AAAK,KACT,CAAC;AAEjB,EAAA;AACA,EAAA,OAAOhB,SAAS,KAAK,aAAa,gBAChCI,GAAA,CAACS,UAAU,EAAA;AACTP,IAAAA,EAAE,EAAEL,OAAQ;AACZa,IAAAA,IAAI,EAAE,EAAG;IACT,YAAA,EAAYf,KAAK,CAAC,YAAY,CAAE;IAChC,aAAA,EAAaA,KAAK,CAAC,aAAa,CAAE;AAAAgB,IAAAA,QAAA,eAElCX,GAAA,CAACa,OAAO,EAAA,EAAA;AACV,GAAY,CAAC,gBAEbb,GAAA,CAACc,UAAU,EAAA;AACTZ,IAAAA,EAAE,EAAEL,OAAQ;AACZa,IAAAA,IAAI,EAAE,EAAG;AACTd,IAAAA,SAAS,EAAEA,SAAU;IACrBmB,SAAS,EAAEpB,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI,GAAGA,KAAK,CAAC,YAAY;AAAE,GAAA,CAEhE;AACH;;;;"}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
.wds-critical-banner {
|
|
2
|
-
--Prompt-padding: var(--size-16);
|
|
3
|
-
--Prompt-actions-gap: var(--size-8);
|
|
4
|
-
--Prompt-gap: var(--size-10) var(--size-16);
|
|
5
|
-
--Prompt-border-radius: 0;
|
|
6
|
-
/* Override PrimitivePrompt's --screen-sm-max actions behaviour:
|
|
7
|
-
actions only go full-width below 480px (--screen-xs) */
|
|
8
|
-
}
|
|
9
|
-
.wds-critical-banner__mobile--collapsed {
|
|
10
|
-
max-height: 30vh;
|
|
11
|
-
}
|
|
12
|
-
.wds-critical-banner--media-image {
|
|
13
|
-
width: 48px;
|
|
14
|
-
width: var(--size-48);
|
|
15
|
-
height: 48px;
|
|
16
|
-
height: var(--size-48);
|
|
17
|
-
-o-object-fit: contain;
|
|
18
|
-
object-fit: contain;
|
|
19
|
-
}
|
|
20
|
-
.wds-critical-banner__title--collapsed {
|
|
21
|
-
display: -webkit-box;
|
|
22
|
-
-webkit-line-clamp: 2;
|
|
23
|
-
line-clamp: 2;
|
|
24
|
-
-webkit-box-orient: vertical;
|
|
25
|
-
overflow: hidden;
|
|
26
|
-
}
|
|
27
|
-
.wds-critical-banner__description--collapsed {
|
|
28
|
-
display: -webkit-box;
|
|
29
|
-
-webkit-line-clamp: 2;
|
|
30
|
-
line-clamp: 2;
|
|
31
|
-
-webkit-box-orient: vertical;
|
|
32
|
-
overflow: hidden;
|
|
33
|
-
}
|
|
34
|
-
.wds-critical-banner .wds-prompt__content-wrapper {
|
|
35
|
-
grid-template-columns: auto 1fr auto;
|
|
36
|
-
align-items: flex-start;
|
|
37
|
-
}
|
|
38
|
-
.wds-critical-banner__text-wrapper {
|
|
39
|
-
min-width: 0;
|
|
40
|
-
max-width: 480px;
|
|
41
|
-
height: 100%;
|
|
42
|
-
}
|
|
43
|
-
.wds-critical-banner .wds-prompt__actions-wrapper {
|
|
44
|
-
grid-column-start: 2;
|
|
45
|
-
grid-column-end: 3;
|
|
46
|
-
}
|
|
47
|
-
@media not (min-width: 480px) {
|
|
48
|
-
.wds-critical-banner .wds-prompt__actions-wrapper {
|
|
49
|
-
grid-column: span 3;
|
|
50
|
-
width: 100%;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
@media not (min-width: 480px) {
|
|
54
|
-
.wds-critical-banner--with-two-actions .wds-prompt__actions-wrapper .wds-Button {
|
|
55
|
-
flex: 1 1 calc(50% - (var(--Prompt-actions-gap) / 2));
|
|
56
|
-
min-width: -moz-fit-content;
|
|
57
|
-
min-width: fit-content;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { AriaAttributes, ReactNode } from 'react';
|
|
2
|
-
import { ButtonProps } from '../../button/Button.types';
|
|
3
|
-
import { PrimitivePromptProps } from '../PrimitivePrompt';
|
|
4
|
-
import { PromptMedia } from '../helpers/promptMedia';
|
|
5
|
-
export type CriticalBannerProps = {
|
|
6
|
-
title?: ReactNode;
|
|
7
|
-
description?: ReactNode;
|
|
8
|
-
media?: PromptMedia;
|
|
9
|
-
action?: Pick<ButtonProps, 'onClick' | 'href' | 'target'> & {
|
|
10
|
-
label: ButtonProps['children'];
|
|
11
|
-
};
|
|
12
|
-
actionSecondary?: Pick<ButtonProps, 'onClick' | 'href' | 'target'> & {
|
|
13
|
-
label: ButtonProps['children'];
|
|
14
|
-
};
|
|
15
|
-
sentiment?: Exclude<PrimitivePromptProps['sentiment'], 'proposition'>;
|
|
16
|
-
/**
|
|
17
|
-
* Controls whether the description and actions are visible.
|
|
18
|
-
* When collapsed with a title, only the title is shown.
|
|
19
|
-
* When collapsed without a title, the description is trimmed to 2 lines.
|
|
20
|
-
*/
|
|
21
|
-
expanded?: boolean;
|
|
22
|
-
/** Called when the user clicks the chevron toggle. */
|
|
23
|
-
onToggle?: () => void;
|
|
24
|
-
/**
|
|
25
|
-
* Overrides the default labelling derived from `title` and `description`.
|
|
26
|
-
*
|
|
27
|
-
* **NB:** When provided, the default `aria-labelledby` / `aria-describedby`
|
|
28
|
-
* attributes are removed — include all necessary context in the label.
|
|
29
|
-
*/
|
|
30
|
-
'aria-label'?: AriaAttributes['aria-label'];
|
|
31
|
-
} & Pick<PrimitivePromptProps, 'id' | 'className' | 'data-testid'>;
|
|
32
|
-
/**
|
|
33
|
-
* A full-width, non-dismissible banner for critical messages such as account blocks or
|
|
34
|
-
* time-sensitive actions that require immediate user attention.
|
|
35
|
-
|
|
36
|
-
* @see {@link https://wise.design/components/critical-banner Design Spec}
|
|
37
|
-
*/
|
|
38
|
-
export declare const CriticalBanner: ({ sentiment, title, description, media, action, actionSecondary, expanded, onToggle, id, className, "data-testid": testId, "aria-label": ariaLabel, }: CriticalBannerProps) => import("react").JSX.Element;
|
|
39
|
-
export default CriticalBanner;
|
|
40
|
-
//# sourceMappingURL=CriticalBanner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CriticalBanner.d.ts","sourceRoot":"","sources":["../../../../src/prompt/CriticalBanner/CriticalBanner.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAS,MAAM,OAAO,CAAC;AAMzD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAmB,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG3E,OAAO,EAAqB,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAIxE,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC,GAAG;QAC1D,KAAK,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;KAChC,CAAC;IACF,eAAe,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC,GAAG;QACnE,KAAK,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;KAChC,CAAC;IACF,SAAS,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC,CAAC;IACtE;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;CAC7C,GAAG,IAAI,CAAC,oBAAoB,EAAE,IAAI,GAAG,WAAW,GAAG,aAAa,CAAC,CAAC;AAEnE;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,uJAa5B,mBAAmB,gCAkIrB,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
|
-
/**
|
|
3
|
-
* Helper to extract string from ReactNode for announcements.
|
|
4
|
-
* Complex ReactNodes (JSX elements) return empty string.
|
|
5
|
-
*/
|
|
6
|
-
export declare const getStringValue: (node: ReactNode) => string;
|
|
7
|
-
/**
|
|
8
|
-
* Builds the announcement string from visible content only.
|
|
9
|
-
* Content visibility depends on expanded state and presence of title.
|
|
10
|
-
*/
|
|
11
|
-
export declare const buildAnnouncementString: ({ title, description, expanded, actionLabel, actionSecondaryLabel, }: {
|
|
12
|
-
title?: ReactNode;
|
|
13
|
-
description?: ReactNode;
|
|
14
|
-
expanded: boolean;
|
|
15
|
-
actionLabel?: ReactNode;
|
|
16
|
-
actionSecondaryLabel?: ReactNode;
|
|
17
|
-
}) => string;
|
|
18
|
-
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../src/prompt/CriticalBanner/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,SAAS,KAAG,MAKhD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAAI,sEAMrC;IACD,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,oBAAoB,CAAC,EAAE,SAAS,CAAC;CAClC,KAAG,MASH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/prompt/CriticalBanner/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
export type ExpanderState = {
|
|
2
|
-
expanded: boolean;
|
|
3
|
-
toggle: () => void;
|
|
4
|
-
setExpanded: (expanded: boolean) => void;
|
|
5
|
-
};
|
|
6
|
-
export declare function useExpanderState(initialExpanded?: boolean): ExpanderState;
|
|
7
|
-
export declare function shouldShowWhenExpanded({ expanded, hasContent, alwaysShow, }: {
|
|
8
|
-
expanded: boolean;
|
|
9
|
-
hasContent: boolean;
|
|
10
|
-
alwaysShow?: boolean;
|
|
11
|
-
}): boolean;
|
|
12
|
-
export type ExpanderToggleProps = {
|
|
13
|
-
expanded: boolean;
|
|
14
|
-
onToggle?: () => void;
|
|
15
|
-
size?: 16 | 24 | 32 | 40 | 48 | 56 | 72;
|
|
16
|
-
className?: string;
|
|
17
|
-
'data-testid'?: string;
|
|
18
|
-
};
|
|
19
|
-
export declare const ExpanderToggle: ({ expanded, onToggle, size, className, "data-testid": testId, }: ExpanderToggleProps) => import("react").JSX.Element;
|
|
20
|
-
//# sourceMappingURL=Expander.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Expander.d.ts","sourceRoot":"","sources":["../../../../../src/prompt/common/Expander/Expander.tsx"],"names":[],"mappings":"AAOA,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C,CAAC;AAGF,wBAAgB,gBAAgB,CAAC,eAAe,UAAO,GAAG,aAAa,CAYtE;AAGD,wBAAgB,sBAAsB,CAAC,EACrC,QAAQ,EACR,UAAU,EACV,UAAkB,GACnB,EAAE;IACD,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,OAAO,CAMV;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAGF,eAAO,MAAM,cAAc,GAAI,iEAM5B,mBAAmB,gCAsBrB,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
declare const _default: {
|
|
2
|
-
expandAriaLabel: {
|
|
3
|
-
id: string;
|
|
4
|
-
defaultMessage: string;
|
|
5
|
-
description: string;
|
|
6
|
-
};
|
|
7
|
-
collapseAriaLabel: {
|
|
8
|
-
id: string;
|
|
9
|
-
defaultMessage: string;
|
|
10
|
-
description: string;
|
|
11
|
-
};
|
|
12
|
-
};
|
|
13
|
-
export default _default;
|
|
14
|
-
//# sourceMappingURL=Expander.messages.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Expander.messages.d.ts","sourceRoot":"","sources":["../../../../../src/prompt/common/Expander/Expander.messages.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,wBAWG"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
|
-
import { AvatarViewProps } from '../../avatarView';
|
|
3
|
-
import { BadgeAssetsProps } from '../../badge';
|
|
4
|
-
import { PrimitivePromptProps } from '../PrimitivePrompt';
|
|
5
|
-
export type PromptMedia = {
|
|
6
|
-
imgSrc?: string;
|
|
7
|
-
avatar?: Pick<AvatarViewProps, 'imgSrc' | 'profileName' | 'profileType'> & {
|
|
8
|
-
asset?: AvatarViewProps['children'];
|
|
9
|
-
badge?: Pick<BadgeAssetsProps, 'flagCode'>;
|
|
10
|
-
};
|
|
11
|
-
'aria-label'?: string;
|
|
12
|
-
'aria-hidden'?: boolean;
|
|
13
|
-
};
|
|
14
|
-
type RenderPromptMediaOptions = {
|
|
15
|
-
media: PromptMedia;
|
|
16
|
-
sentiment: PrimitivePromptProps['sentiment'];
|
|
17
|
-
mediaId: string;
|
|
18
|
-
imgClassName: string;
|
|
19
|
-
};
|
|
20
|
-
export declare function renderPromptMedia({ media, sentiment, mediaId, imgClassName, }: RenderPromptMediaOptions): ReactNode;
|
|
21
|
-
export {};
|
|
22
|
-
//# sourceMappingURL=promptMedia.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"promptMedia.d.ts","sourceRoot":"","sources":["../../../../src/prompt/helpers/promptMedia.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlC,OAAmB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAG/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,GAAG,aAAa,GAAG,aAAa,CAAC,GAAG;QACzE,KAAK,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;QACpC,KAAK,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;KAC5C,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC9B,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,SAAS,EACT,OAAO,EACP,YAAY,GACb,EAAE,wBAAwB,GAAG,SAAS,CA+CtC"}
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import { Meta, Source, Canvas } from '@storybook/addon-docs/blocks';
|
|
2
|
-
import * as CriticalBannerStories from './CriticalBanner.story';
|
|
3
|
-
|
|
4
|
-
<Meta title="Prompts/CriticalBanner/Accessibility" tags={['new']} />
|
|
5
|
-
|
|
6
|
-
# Accessibility
|
|
7
|
-
|
|
8
|
-
Under the hood, `CriticalBanner` is marked as `role="region"` for a section of content that users might want to navigate to directly.
|
|
9
|
-
|
|
10
|
-
By default, it's labelled by the `title` and described by the `description`.
|
|
11
|
-
|
|
12
|
-
## Announcement Behavior
|
|
13
|
-
|
|
14
|
-
`CriticalBanner` is designed for critical messages that require immediate attention. It always uses **`aria-live="assertive"`** to immediately interrupt and announce changes to screen readers.
|
|
15
|
-
|
|
16
|
-
Unlike `InfoPrompt` which offers configurable politeness levels, `CriticalBanner` is always assertive because it communicates critical, time-sensitive information that users must be aware of immediately.
|
|
17
|
-
|
|
18
|
-
### What Gets Announced
|
|
19
|
-
|
|
20
|
-
The component intelligently announces only **visible content**, respecting the collapsed/expanded state:
|
|
21
|
-
|
|
22
|
-
- **Collapsed with title**: Announces title only (description is hidden)
|
|
23
|
-
- **Collapsed without title**: Announces description only (visible up to 2 lines)
|
|
24
|
-
- **Expanded**: Announces title, description, and action button labels (all visible)
|
|
25
|
-
|
|
26
|
-
<Source
|
|
27
|
-
dark
|
|
28
|
-
code={`
|
|
29
|
-
// Collapsed with title - announces: "Your account requires verification"
|
|
30
|
-
<CriticalBanner
|
|
31
|
-
title="Your account requires verification"
|
|
32
|
-
description="Please verify your identity to continue"
|
|
33
|
-
action={{ label: "Verify now", onClick: handleVerify }}
|
|
34
|
-
expanded={false}
|
|
35
|
-
onToggle={handleToggle}
|
|
36
|
-
/>
|
|
37
|
-
|
|
38
|
-
// Expanded - announces: "Your account requires verification | Please verify your identity to continue | Verify now | Learn more"
|
|
39
|
-
|
|
40
|
-
<CriticalBanner
|
|
41
|
-
title="Your account requires verification"
|
|
42
|
-
description="Please verify your identity to continue"
|
|
43
|
-
action={{ label: 'Verify now', onClick: handleVerify }}
|
|
44
|
-
actionSecondary={{ label: 'Learn more', onClick: handleLearnMore }}
|
|
45
|
-
expanded={true}
|
|
46
|
-
onToggle={handleToggle}
|
|
47
|
-
/>
|
|
48
|
-
|
|
49
|
-
// Collapsed without title - announces: "Your verification is pending..."
|
|
50
|
-
|
|
51
|
-
<CriticalBanner
|
|
52
|
-
description="Your verification is pending. We'll notify you once complete."
|
|
53
|
-
expanded={false}
|
|
54
|
-
onToggle={handleToggle}
|
|
55
|
-
/>
|
|
56
|
-
`}
|
|
57
|
-
/>
|
|
58
|
-
|
|
59
|
-
### When Announcements Trigger
|
|
60
|
-
|
|
61
|
-
Screen readers announce the banner content whenever:
|
|
62
|
-
|
|
63
|
-
- The banner first appears in the DOM
|
|
64
|
-
- The user toggles between collapsed and expanded states
|
|
65
|
-
- The content (title, description, or action labels) changes
|
|
66
|
-
|
|
67
|
-
## Custom Labels
|
|
68
|
-
|
|
69
|
-
If you want to provide a custom label for screen readers, you can use the `aria-label` prop. Make sure to include all necessary information in it, because when provided, the default labelling will be removed.
|
|
70
|
-
|
|
71
|
-
<Source
|
|
72
|
-
dark
|
|
73
|
-
code={`
|
|
74
|
-
<CriticalBanner
|
|
75
|
-
title="Account suspended"
|
|
76
|
-
description="Unusual activity detected"
|
|
77
|
-
action={{ label: "Verify identity", onClick: handleVerify }}
|
|
78
|
-
aria-label="Critical: Your account has been suspended due to unusual activity. Please verify your identity immediately to restore access."
|
|
79
|
-
expanded={false}
|
|
80
|
-
onToggle={handleToggle}
|
|
81
|
-
/>
|
|
82
|
-
`}
|
|
83
|
-
/>
|
|
84
|
-
|
|
85
|
-
## Media
|
|
86
|
-
|
|
87
|
-
Custom media icons should include their own accessibility attributes. Use the `title` prop on icons to provide accessible names for screen readers:
|
|
88
|
-
|
|
89
|
-
<Source
|
|
90
|
-
dark
|
|
91
|
-
code={`
|
|
92
|
-
import { Bank, AlertCircle } from '@transferwise/icons';
|
|
93
|
-
|
|
94
|
-
<CriticalBanner
|
|
95
|
-
title="Bank connection required"
|
|
96
|
-
description="Connect your bank account to continue"
|
|
97
|
-
media={{ avatar: { asset: <Bank title="Bank account" /> } }}
|
|
98
|
-
action={{ label: 'Connect now', onClick: handleConnect }}
|
|
99
|
-
expanded={false}
|
|
100
|
-
onToggle={handleToggle}
|
|
101
|
-
/>
|
|
102
|
-
|
|
103
|
-
<CriticalBanner
|
|
104
|
-
title="Verification required"
|
|
105
|
-
description="We need to verify your identity"
|
|
106
|
-
media={{ avatar: { asset: <AlertCircle title="Alert" /> } }}
|
|
107
|
-
action={{ label: "Start verification", onClick: handleVerify }}
|
|
108
|
-
expanded={false}
|
|
109
|
-
onToggle={handleToggle}
|
|
110
|
-
/>
|
|
111
|
-
`}
|
|
112
|
-
/>
|
|
113
|
-
|
|
114
|
-
Alternatively, you can use `media['aria-label']` to provide a label for custom images:
|
|
115
|
-
|
|
116
|
-
<Source
|
|
117
|
-
dark
|
|
118
|
-
code={`
|
|
119
|
-
<CriticalBanner
|
|
120
|
-
title="Card blocked"
|
|
121
|
-
description="Your card has been blocked for security reasons"
|
|
122
|
-
media={{
|
|
123
|
-
imgSrc: '/wise-card.svg',
|
|
124
|
-
'aria-label': 'Wise debit card'
|
|
125
|
-
}}
|
|
126
|
-
action={{ label: "Unblock card", onClick: handleUnblock }}
|
|
127
|
-
expanded={false}
|
|
128
|
-
onToggle={handleToggle}
|
|
129
|
-
/>
|
|
130
|
-
`}
|
|
131
|
-
/>
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
.wds-critical-banner {
|
|
2
|
-
--Prompt-padding: var(--size-16);
|
|
3
|
-
--Prompt-actions-gap: var(--size-8);
|
|
4
|
-
--Prompt-gap: var(--size-10) var(--size-16);
|
|
5
|
-
--Prompt-border-radius: 0;
|
|
6
|
-
/* Override PrimitivePrompt's --screen-sm-max actions behaviour:
|
|
7
|
-
actions only go full-width below 480px (--screen-xs) */
|
|
8
|
-
}
|
|
9
|
-
.wds-critical-banner__mobile--collapsed {
|
|
10
|
-
max-height: 30vh;
|
|
11
|
-
}
|
|
12
|
-
.wds-critical-banner--media-image {
|
|
13
|
-
width: 48px;
|
|
14
|
-
width: var(--size-48);
|
|
15
|
-
height: 48px;
|
|
16
|
-
height: var(--size-48);
|
|
17
|
-
-o-object-fit: contain;
|
|
18
|
-
object-fit: contain;
|
|
19
|
-
}
|
|
20
|
-
.wds-critical-banner__title--collapsed {
|
|
21
|
-
display: -webkit-box;
|
|
22
|
-
-webkit-line-clamp: 2;
|
|
23
|
-
line-clamp: 2;
|
|
24
|
-
-webkit-box-orient: vertical;
|
|
25
|
-
overflow: hidden;
|
|
26
|
-
}
|
|
27
|
-
.wds-critical-banner__description--collapsed {
|
|
28
|
-
display: -webkit-box;
|
|
29
|
-
-webkit-line-clamp: 2;
|
|
30
|
-
line-clamp: 2;
|
|
31
|
-
-webkit-box-orient: vertical;
|
|
32
|
-
overflow: hidden;
|
|
33
|
-
}
|
|
34
|
-
.wds-critical-banner .wds-prompt__content-wrapper {
|
|
35
|
-
grid-template-columns: auto 1fr auto;
|
|
36
|
-
align-items: flex-start;
|
|
37
|
-
}
|
|
38
|
-
.wds-critical-banner__text-wrapper {
|
|
39
|
-
min-width: 0;
|
|
40
|
-
max-width: 480px;
|
|
41
|
-
height: 100%;
|
|
42
|
-
}
|
|
43
|
-
.wds-critical-banner .wds-prompt__actions-wrapper {
|
|
44
|
-
grid-column-start: 2;
|
|
45
|
-
grid-column-end: 3;
|
|
46
|
-
}
|
|
47
|
-
@media not (min-width: 480px) {
|
|
48
|
-
.wds-critical-banner .wds-prompt__actions-wrapper {
|
|
49
|
-
grid-column: span 3;
|
|
50
|
-
width: 100%;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
@media not (min-width: 480px) {
|
|
54
|
-
.wds-critical-banner--with-two-actions .wds-prompt__actions-wrapper .wds-Button {
|
|
55
|
-
flex: 1 1 calc(50% - (var(--Prompt-actions-gap) / 2));
|
|
56
|
-
min-width: -moz-fit-content;
|
|
57
|
-
min-width: fit-content;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
.wds-critical-banner {
|
|
2
|
-
--Prompt-padding: var(--size-16);
|
|
3
|
-
--Prompt-actions-gap: var(--size-8);
|
|
4
|
-
--Prompt-gap: var(--size-10) var(--size-16);
|
|
5
|
-
--Prompt-border-radius: 0;
|
|
6
|
-
|
|
7
|
-
&__mobile--collapsed {
|
|
8
|
-
max-height: 30vh;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
&--media-image {
|
|
12
|
-
width: var(--size-48);
|
|
13
|
-
height: var(--size-48);
|
|
14
|
-
object-fit: contain;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
&__title--collapsed {
|
|
18
|
-
display: -webkit-box;
|
|
19
|
-
-webkit-line-clamp: 2;
|
|
20
|
-
line-clamp: 2;
|
|
21
|
-
-webkit-box-orient: vertical;
|
|
22
|
-
overflow: hidden;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
&__description--collapsed {
|
|
26
|
-
display: -webkit-box;
|
|
27
|
-
-webkit-line-clamp: 2;
|
|
28
|
-
line-clamp: 2;
|
|
29
|
-
-webkit-box-orient: vertical;
|
|
30
|
-
overflow: hidden;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
.wds-prompt__content-wrapper {
|
|
34
|
-
grid-template-columns: auto 1fr auto;
|
|
35
|
-
align-items: flex-start;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
&__text-wrapper {
|
|
39
|
-
min-width: 0;
|
|
40
|
-
max-width: 480px;
|
|
41
|
-
height: 100%;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/* Override PrimitivePrompt's --screen-sm-max actions behaviour:
|
|
45
|
-
actions only go full-width below 480px (--screen-xs) */
|
|
46
|
-
.wds-prompt__actions-wrapper {
|
|
47
|
-
grid-column-start: 2;
|
|
48
|
-
grid-column-end: 3;
|
|
49
|
-
|
|
50
|
-
@media not (--screen-xs) {
|
|
51
|
-
grid-column: span 3;
|
|
52
|
-
width: 100%;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
&--with-two-actions .wds-prompt__actions-wrapper {
|
|
57
|
-
@media not (--screen-xs) {
|
|
58
|
-
.wds-Button {
|
|
59
|
-
flex: 1 1 calc(50% - (var(--Prompt-actions-gap) / 2));
|
|
60
|
-
min-width: fit-content;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|