v3.26.1
Published on 10 November 2025
Updated
- Banner: revert
BannerTitleinDoubleBannerchange until after Holiday, for safety
v3.26.0
Published on 10 November 2025
Fixed
- Banner: fixed
BannerTitlefont size when used inDoubleBannernot matching Figma. - ComboboxSearchInput: Fixed rendering the underlying input with
type="text"totype="search". - Menu: fixed className of MenuTrigger child element being dropped
- SearchInput with floating label: Fixed the focus indicator being clipped on clear button.
- SearchInput: Fixed visual issue where a red box incorrectly appeared inside the input field when displaying error state.
v3.25.2
Published on 17 October 2025
Fixed
- AdaptiveCarousel: fixed incorrect HTML base element for AdaptiveCarouselProps
v3.25.1
Published on 15 October 2025
Fixed
- Combobox, IconButton, Listbox, Menu, Popover: Reverted react-aria dependencies to the tested and stable version
v3.25.0
Published on 14 October 2025
Added
- Added a new AdaptiveCarousel component, intending to replace the existing Carousel and ThumbnailsHero. Aims to greatly improve consistency across Vista, fix longstanding bugs with the old Carousel, and drastically reduce the bundle size of SWAN.
- Add
prefers-reduced-motionchecks to relevant animations and transitions
Updated
- Combobox, IconButton, Listbox, Menu, Popover: updated underlying react-aria dependencies
Fixed
- Popover: fixed issue where the underlying ref was being applied to the wrong element
Deprecated
- Carousel: deprecated in favour of
AdaptiveCarousel - ThumbnailsHero: deprecated in favour of
AdaptiveCarousel
v3.24.1
Published on 10 October 2025
Updated
- Internationalisation: updated the logic to log a warning instead of throwing an error if a required i18n prop is undefined to fix a prod issue
- FloatingLabel, InputWithFloatingLabel: changed the padding in compact mode to avoid overlapping text between the input text and the floating label.
- SwanI18nProvider: the
localeprop has been made optional with a check to ensure it was either passed by props or in context.
v3.24.0
Published on 08 October 2025
Added
- Internationalisation (i18n) support - SWAN components can now render content based on the user's locale, negating the need for many accessible label props. This functionality is opt-in until v4.
- Add systemjs manifest to allow importing static files without parsing the
@vp/swanpackage. - EmptyStateIllustration: added illustrations:
briefcartdesignServiceserrormyProjectsorderssearchsuccess
- Icon: added icons
articlerotate_orientationvideo
- PaginationStep: added
pageNumberprop for providing the numeric page number value. - SwanProvider: added
translationsprop to support i18n- Added new SwanI18nProvider component to allow overriding i18n translations when necessary
- ZoomControlsValue: added
valueprop for providing the numeric zoom value.
Updated
- EmptyStateIllustration: updated illustration
liveChat - ZoomControls: updated disabled state styling for the zoom in and out buttons.
Fixed
- AnchorBar: fixed z-index so AnchorBar no longer appears on top of Bookends flyout
- Banner: fixed width of text container for multi-column offer banners when used alongside height=short
- UncustomizableMarkup: removed margin from paragraph elements that are inside list elements
Deprecated
-
EmptyStateIllustration: deprecated illustration
generic -
Pagination: deprecated the
disabledonPaginationStepprop as individual pages should not be disabled. -
Pagination: passing children to
PaginationStepfor displaying the page number is deprecated. Please use the newpageNumberprop. -
Tabs: deprecated the
disabledprop onTabHeaderbecause disabling individual tabs can be disruptive, as users may not understand why a tab is unavailable. -
ZoomControls: passing children to
ZoomControlsValuefor displaying the zoom value is deprecated when using i18n context. Please use the newvalueprop for proper localization and accessibility support. -
The following props are deprecated because accessible labels and messages are now handled internally via built-in internationalization:
- AlertBox -
accessibleTextForIcon - AlertBoxDismissButton -
accessibleText,visuallyHiddenLabel - Breadcrumbs -
accessibleTextForMore - Carousel -
accessibleTextForPrevious,accessibleTextForNext,accessibleTextForDots,accessibleTextForVisibleSlides,accessibleTextForSlide,aria-roledescription - CarouselSlide -
aria-roledescription - ComboboxSearchInput -
accessibleTextForClearButton,accessibleTextForSearchButton - FileDropzone -
note,dropNote - FileTile -
accessibleTextForProgress,accessibleTextForSpinner - FileTileDeleteButton -
accessibleText - ModalDialogCloseButton -
accessibleText,visuallyHiddenLabel - PaginationButton -
accessibleText - PaginationStep -
accessibleText - Pagination -
accessibleText - PriceBarPriceInfo -
accessibleText - RatingsStars -
aria-label,accessibleTextForReviewCount - SearchInput -
accessibleTextForClearButton,accessibleTextForSearchButton - StatusMessage -
accessibleTextForIcon - ThumbnailsHero -
accessibleTextForDots - ZoomControlsIn -
accessibleText,visuallyHiddenLabel - ZoomControlsOut -
accessibleText,visuallyHiddenLabel - ZoomControlsValue -
accessibleText,visuallyHiddenLabel
- AlertBox -
v3.23.0
Updated
- Banner: updated banner border style partition to use semantic tokens
sem.border.width.partitionandsem.color.border.partition - SwanHead: added support for react 19's precedence prop when no
renderWith(Helmet) prop is supplied to render stylesheets in the head - Tokens: updated
sem.color.border.partitionto achieve better contrast against all background colors
Fixed
- Breadcrumbs: fixed an issue where breadcrumb item ids could have the same ids as other components on the page
- Breadcrumbs: fixed base typescript type to use HTMLNavElement props instead of HTMLDivElement props
- IconButton: fixed
aria-disablednot being passed through tobuttonelement
Deprecated
- useBrowserClasses hook: browser-based CSS can lead to flicker during SSR and should be avoided. This hook is no longer necessary
- Background Color, Text Color: deprecated holiday colors (
holiday,holiday-beige-1,holiday-green-1,holiday-green-2,holiday-red-1,holiday-red-2); they have been moved to@vp/marketing-colorsand should only be used for Contentful-authored content. - Callout: deprecated the
skinprop valueholidaywith no replacement
v3.22.0
Published on 28 August 2025
Added
- Added a new
IconButtoncomponent for actions represented solely by an icon, with built‑in accessibility features and integrated tooltip support. - Combobox: added support for the
defaultItemsprop fromreact-ariaas an alternative toitems, enabling built-in filtering.
Updated
- CarouselButton, ComboboxInput, FileTileDeleteButton, ModalDialogCloseButton and SearchInput: migrate icon-only Button component usage to IconButton component
- Tabs: changed focus ring to be rounded and show the underline on the selected tab
Deprecated
- Button: deprecated the
buttonShapeprop, useIconButtoncomponent for icon-only buttons instead
v3.21.0
Published on 28 July 2025
Added
- Background Color: added
fernvalue - Icon: added icons
foldproAdvantagerecentsocialMediaTemplatessustainability
Fixed
- Fixed an issue for the
responsiveutility hook in React 19 that would result in a "Maximum call stack size exceeded" error.
v3.20.2
Published on 14 July 2025
Added
- Menu: added
maxHeightprop to overwrite defaultMenuPopoverheight
Updated
- Combobox, Listbox, Menu: updated the default max height constraint to accommodate 6.5 options
Fixed
- FlexBox: added support for responsive values for props
alignItems,flexWrap,flexDirection,justifyContent,gap. - Popover: removed the max height constraint introduced in v3.17.3
- No longer mock file paths to
pkg-folder-testwhenNODE_ENVistest. This fixes issues with loading stylesheets in tools like Vitest Browser Mode.
v3.20.1
Published on 10 July 2025
Updated
- BaseTile: removed loading state until we can better solve issues with SSR. This will likely be re-added in a future version.
v3.20.0
Published on 07 July 2025
Updated
- Combobox & Listbox: lowered right side padding reserved for selected styling
- Combobox, Listbox, & Menu: updated styling of respective Section components
Fixed
- Combobox & Listbox: fixed
ComboboxOption&ListboxOptionnot reserving the full width of the popover - Combobox: updated to no longer allow page scroll while open to prevent the input from being reset
- Listbox: stopped
ListboxOptionlabel prop from being invalidly rendered in the DOM - Fixed a bug that added a trailing space to the component className when no className prop was provided introduced in v3.18.0
- Popover: fixed broken ARIA references by adding the
idto the content that is referenced in the launcher'saria-controlsattribute, and properly applying the provided label (or fallback) to the dialog
Deprecated
- BasicCombobox, ComboboxPopover, ListboxPopover, MenuPopover: deprecated the
labelTextprop without a replacement - PopoverContent: deprecated the
labelTextprop, usearia-labeloraria-labelledbyinstead
Removed
- Modal Dialog: removed polyfill as all supported browsers now support the
dialogelement - FieldSet: removed a style override resolved by Firefox v53
- Removed the
focus-visiblepolyfill as all supported browsers now support the:focus-visibleselector - Removed redundant selector logic now that all browsers support the
:hasselector
v3.19.2
Published on 26 June 2025
Updated
- Combobox: updated to remain open on page scroll
v3.19.1
Published on 25 June 2025
Fixed
- Menu: fixed
MenuTriggerto handle clicks on its child element. - Popover: fixed
PopoverLauncherto handle clicks on its child element.
v3.19.0
Published on 24 June 2025
Updated
- InputWithFloatingLabel: improve styling when label is larger than input size
- ModalDialog: Unpinned the sticky footer when the dialog is rendered on small landscape screens (e.g., at 400% zoom) to fix an Accessibility issue where the footer overlapped the content area.
Fixed
- ModalDialog: Added
scroll-padding-topto the dialog content whenModalDialogNavis present, ensuring focus is not obscured, in compliance with WCAG 2.2. - TextArea: fixed aria-invalid not being set properly when using
FormError
v3.18.1
Published on 11 June 2025
Fixed
- ModalDialog: fixed core props and className not being passed through
v3.18.0
Published on 10 June 2025
Added
- Combobox: added maxHeight prop to overwrite default ComboboxPopover height
- Listbox: added maxHeight prop to overwrite default ListboxPopover height
- Icon: added icons
awardcartcopyduplicate
Updated
- BaseTile:
aspectRationow defaults to1to help with cumulative layout shifts (CLS) - BaseTile: updated loading appearance for BaseTileImage
- BaseTile: updated positioning logic for BaseTileTargetImage
- Combobox, Listbox, Menu: fixed popover alignment issues on mobile
- Icon: un-deprecated the following icons, making them available for use again:
heartFilledpolish
Deprecated
- Icon: deprecated icons
magic– Replaced with the semanticaiicon.saveAsCopy– Replaced with the more semanticduplicateicon.shoppingBag_0– Replaced with the semanticcarticon.sparkle– Replaced with the semanticaiicon.
- Deprecated
filterPropsutility - Deprecated
htmlSizeprop type fromCoreInputPropstype
v3.17.3
Published on 28 May 2025
Fixed
- Combobox: fixed keyboard accessibility of options in smaller viewports
- Popover: fixed content overflow in smaller viewports
- Listbox: fixed flawed semantic HTML by removing the dialog wrapper
v3.17.2
Published on 27 May 2025
Fixed prepare-pkg script after depcache was removed from ubik-rollup in 1.4.8
v3.17.1
Published on 27 May 2025
Re-releasing to fix import map publishing
v3.17.0
Published on 27 May 2025
Added
- BaseTile: release
BaseTilecomponents - Icon: added icons
brand_kitdesign_servicesexternal_linknotifications_offnotifications_onpostcard_mailing_servicepro_shopsamplessend
- EmptyState: added
liveChatillustration - RatingsStars: added a new
accessibleTextForReviewCountprop to provide accessible text for the rating review link.
Updated
- Listbox - updated button inner content alignment so that the content aligns to left when a label prefix is present
- Menu - only show focus ring on MenuItem when the item is focused via keyboard navigation
Fixed
- Banner: fixed the focus ring for links that wrap full-width BannerImages
- ListBox: fixed check icon alignment for the selected options
- Listbox: fixed issue where aria-labelledby was being applied to the wrapper div in
BasicListboxinstead of the button - SkipLink: updated the border to fix the color contrast issue against the country switcher
Deprecated
- Tokens: deprecated following tokens with no replacement
sem.color.bg.selected-accentsem.color.bg.selected-accent-hoversem.color.bg.selected-accent-activesem.color.border.selected-accentsem.color.border.selected-accent-hoversem.color.border.selected-accent-activesem.space.gutter.tight
v3.16.2
Published on 08 May 2025
Fixed
- ErrorBoundary: fixed an error where it said 'ErrorBoundary' cannot be used as a JSX component.
v3.16.1
Published on 07 May 2025
Fixed
- AnchorBar: fix hover state persisting on mobile, leading to a visual of two 'active' elements
- Listbox: fixed an issue for passing props when upgrading components to be React 19 compatible
- MenuTrigger and PopoverTrigger: fixed compatibility with React 19 by updating ref handling to support both props.ref (React 19+) and legacy ref access (pre-React 19).
- PriceBar: remove unnecessary aria-labelledby (and related attributes) from
PriceBarQuantitycomponents.
v3.16.0
Published on 01 May 2025
Added
- Carousel: added the
accessibleTextForSlideprop withcurrentandtotalSlidesplaceholders to apply a descriptive aria label to each slide - Added React 19 support to peer dependencies
Updated
- AnchorBar, StepIndicator, Tabs: update the text color of the unselected/inactive item.
- Carousel: updated the
accessibleTextForVisibleSlidesprop to acceptstart,end, andtotalSlidesplaceholders to make the aria-live announcement more descriptive and accurate - Carousel: updated to force finite loading when infinite loading is not possible e.g slides to show and total slides both equal to 1 or slides to show greater than total slides
- Carousel: Updated underlying "react-slick" package to support React 19
- Listbox: updated to use checkboxes to indicate selected items when
selectionMode="multiple"
Fixed
- Carousel: switch dots to use
aria-currentinstead ofaria-pressedfor better accessibility support - FloatingLabel: fixed error state styling when using
SearchInput,TextArea,Dropdown, andListboxwithInputWithFloatingLabel. - Popover: forced the role of PopoverContents to always be role="dialog" to fix an accessibility issue.
Deprecated
- Popover: deprecated the
dialogprop ofPopoverComponent. Popovers should always be considered dialogs. - ToggleSwitch: deprecated unused export
ToggleSwitchSize swanLoaderConfigPropshas been removed as it is a prop-type, use typescript typeSwanLoaderConfigPropsinstead
v3.15.0
Published on 24 April 2025
Added
- Button: added
loadingprop (& guidance) to improve accessible loading states.
Updated
- Listbox: style selected disabled options in
ListboxMenuandListboxButton - Combobox, Listbox, Menu, and Popover: update to the underlying react-aria dependencies
- PriceBar: adjust styling of
PriceBarPriceInfoto match Pricing EP
Fixed
- Banner: fixed
DoubleBannernot aligning to the center of the page for large screens. - BasicCollapsible, Collapsible: add
headingLevelprop to specify the heading tag (h1–h6) used to wrap the summary button to make markup accessible - FileTile: fixed styles to center details text for
thumblayout - Listbox: update
@react-ariaand@react-statelydependencies to fix a rare issue where Listbox wouldn't open, depending on dependency resolution in Yarn - SkeletonText: fix the height of the skeleton text line to match the given font skin height.
- ZoomControls: improve a11y by adding
aria-controlsto buttons andaria-liveto the value element for screen reader support.
v3.14.0
Published on 10 April 2025
Added
- Button: added new skins
destructive-primary,destructive-secondary&destructive-tertiary. - Grid: added
verticalGapprop toRow, which adds vertical spacing when inner content wraps - SelectionSetError: added error
Iconto enhance semantic meaning and improve accessibility. - Background Color: added new prop value
destructiveto the core propbackgroundColororbgc. - Text Color: added new prop value
destructiveto the core proptextColor - Tokens: added new sem tokens for destructive actions:
sem.color.bg.destructivesem.color.bg.destructive-strong-pairedsem.color.border.destructivesem.color.border.destructive-strong-pairedsem.color.icon.destructivesem.color.icon.destructive-strong-pairedsem.color.text.destructivesem.color.text.destructive-altsem.color.text.destructive-strong-paired
Updated
- Combobox, Listbox: updated the popover's border color to use
sem.color.border.container. - FileDropzone: replaced usage of deprecated icon
plusRoundedwithadd - FileTile: updated the delete button to use new semantic destructive button skins.
- Listbox, Menu, and Popover: update the popover's background color to use
sem.color.bg.container. - TabHeaders: reduce the horizontal gap between the label to
sem.space.6.
Fixed
- ColorSwatch: fixed invalid div/span nesting.
- FileTile: fixed redundant error icon being shown with the description.
- FormError: added empty alt text to FormError icon to fix an Accessibility issue.
- InputWithFloatingLabel: fixed floating label not working properly with
TextArea. - Listbox: fixed the extra indentation of form helper and error text.
- Listbox: fixed incorrect placement of id and ARIA attributes - now correctly applied to the trigger button.
Deprecated
- Carousel: deprecated
gridGuttersVariantprop, as it is rarely used and to maintain consistency withGridContainerwhile reducing UX debt. - ComboboxFloatingLabel, DropdownFloatingLabel, TextInputFloatingLabel, ListboxFloatingLabel and their types - use the generic component
FloatingLabeland it's types instead - ComboboxWithFloatingLabel, DropdownWithFloatingLabel, TextInputWithFloatingLabel, ListboxWithFloatingLabel and their types - use the generic component
InputWithFloatingLabeland it's types instead - GridContainer: deprecated
gutterprop, as it is rarely used, and to improve consistency for customers while reducing UX debt.
v3.13.3
Published on 18 March 2025
No functional changes - internal-only updates.
v3.13.2
Published on 17 March 2025
Fixed
- Combobox: fixed Combobox with Search Input and floating label
- InputWithFloatingLabel: add missing FloatingLabel export
v3.13.1
Published on 17 March 2025
Fixed
- ScreenClassProvider: fixed missing
forwardRefreact import
v3.13.0
Published on 17 March 2025
Added
- FormError: added error
Iconto enhance semantic meaning and improve accessibility - InputWithFloatingLabel (beta): a new general component that can currently wrap
SearchInputandTextAreato give that input a floating label.
Updated
- Avatar: Adjusted box-shadow to fix size calculation issues by removing the outer shadow. Added a dark mode inner shadow to maintain visual separation from the background.
- Carousel: added a visibly hidden
aria-liveregion to announce current slide/s for improved accessibility - Combobox, Listbox, Menu, Popover: Updated gap between the launcher and the popover to
sem.space.2. - Combobox, Listbox: Updated the toggler icon to show caret-down when collapsed and caret-up when expanded.
Fixed
- AlertBox: Add
accessibleTextForIconprops to provide the localized text for the icon. - Pagination: corrected HTML structure for accessibility, adding
<ul>and<li>tags around the navigation buttons - StatusMessage: Aligned the icon to the top of the container.
- StatusMessage: Add
accessibleTextForIconprops to provide the localized text for the icon. - Fixed some fallback styles to use the
@supportsCSS rule for better compatibility with unsupported browsers
Deprecated
- StandardForm:
variantprop has been deprecated. As it is rarely used, it has been deprecated to improve consistency for customers, better align with post-elev8 design standards, and reduce UX debt.
v3.12.0
Published on 25 February 2025
Fixed
- Carousel: Fixed issue with incorrect number of slides being rendered during SSR for XL screens
- TextInput: fixed broken visuals when using
type="date"with Safari - Fixed
renderWithReffunction not matching the React type for forwardRef in React 18.3.1, which previously errantly allowed a non-working ref inside of props
v3.11.0
Published on 17 February 2025
Added
- Added new
StatusMessagecomponent - Added new
EmptyStatecomponent - Icon: added new skins
infoandhelp - Icon: added icons
attachmentdictationemojiinvoicelogomaker
- Tokens: added new sem tokens
sem.size.illustration.standardsem.size.illustration.large
- Enable
between-icon-and-texttoken as a value for the core margin (left and right) spacing prop andFlexBoxgap prop.
Updated
- ProgressBar: updated colors slightly for better color contrast
- ModalDialog: updated left/right padding for panel variants on large and extra large screens to match other variants
- RatingsStars: for better accessibility, updated stars and rating count updated to wrap when content overflows
- Carousel: added
role="group"to each Carousel slide for accessibility
Fixed
- AnchorBar: fixed rare subpixel rendering issue that showed a dot under a non-active item
- Banner: fixed color contrast accessibility for
PromoCodeused inside of aBannerwith certain background colours - ModalDialog: fixed the button styling overwrite when rendered inside the
PriceBar - SelectionSet: for "tiles" and "simple-column" skins, focused selections now show the focus indicator
v3.10.1
Published on 29 January 2025
Fixed
- Fixed types for refs for a subset of components
- FileTile and FileDropzone: added in missing components styles loaded check
Deprecated
- Deprecated
visuallyHiddenLabelon componentsAlertBoxDismissButton,ModalDialogCloseButton,ZoomControlsIn,ZoomControlsOutandZoomControlsValue. UseaccessibleTextinstead.
v3.10.0
Published on 28 January 2025
Added
- Added new components
FileTileandFileDropzone
Updated
- Combobox, Listbox, Menu, and Popover: update to the underlying react-aria dependencies
- RatingsStars: adjusted border color of the stars to meet color contrast needs
Deprecated
- Deprecated
PaginationContextand associated hookusePaginationContextwhich are left overs from legacy componentPaginationInputremoved in SWAN 3.0 - Deprecated
createComponentand associated utility methodsgetProps,getDerivedProps,getProcessedProps,getDefaultClassNameIterableandwrapfor creating a component. Replaceable byrenderWithRefutility method.
v3.9.2
Published on 14 January 2025
Fixed
- List: fixed nested
minimallist styling
v3.9.1
Published on 10 January 2025
Fixed
- Combobox: fixed
ComboboxSectioncomponent not being exported for external usage
v3.9.0
Published on 10 January 2025
Added
- ComboboxSection: added a new sub-component for creating the sections in the ComboboxPopover list, similar to the ListboxSection
- Combobox: added
menuTriggerprop to allow opening the listbox on focus - Icon: added a new skin
subtleand a new sizesmall
Updated
- Breadcrumbs: if there are more than 4 breadcrumbs and you provide localized text for the
accessibleTextForMoreprop, the component will now hide most of them behind a "..." button. When clicked, that button will show the hidden breadcrumbs
Fixed
- Banner: fixed the button styling to be specific within the text container rather than the whole banner
- List: fixed accessibility of minimal list
- SquareImageContainer: fixes square image container height when rendered inside
Listwithskin=minimal
v3.8.0
Published on 18 December 2024
Added
- Banner: added
editorialprop toBannerto control styling of editorial/holiday Banners - Icon: added icons
languagereplacepersonalvideo_chat
- Tokens: added new sem tokens
sem.color.icon.subtlesem.size.icon.small
Updated
- Button: updated text wrapping behavior to use
break-wordinstead ofbreak-all - Icon: updated icons
downloaduploadshare
- Icon: prevent icons from being draggable
- List: improve a11y of
BulletListIconby marking images asrole="presentation" - ModalDialog: remove the dividing line from the non-pinned footer
Fixed
- ProgressBar: added missing accessibility support
- ThumbnailsHero & Carousel: fixed height bug on mobile where the dots for fixed position
ThumbnailsHeroandCarouselwould overflow onto content below
Deprecated
- FormLabel:
skinprop has been deprecated and is no longer necessary with the new visual language. - StandardForm:
skinprop has been deprecated and is no longer necessary with the new visual language.
v3.7.2
Published on 06 December 2024
Fixed
- ModalDialog: Fixed footers being cut off by the address bar on iOS 18.0 & 18.1
v3.7.1
Published on 20 November 2024
Updated
- Dropdown & Listbox: updated padding right to a new value viz.
sem.space.9
Fixed
- Banner: DoubleBanner styling overwriting Editorial font skins for holiday banners
v3.7.0
Published on 18 November 2024
Added
- Banner: added
imageFocalPointprop toBannerImageandBannerSecondaryImagesubcomponent to allow different focalPoints for different images
Updated
- SelectionSet: border colors changed to align with secondary Buttons
- StandardTile: removed margin-bottom from tile when rendered inside of a Carousel to better align with the Visual Language
- StandardTile: removed padding-bottom to better utilise the page space and now using flex gap to set apart the sections in a tile
Deprecated
- Banner: deprecated
imageFocalPointonBannercomponent. Set theimageFocalPointon theBannerImageorBannerSecondaryImagecomponents instead
Fixed
- Button: removed custom icon styling from button to inherit the default icon skin styling
- ModalDialog: fixed an issue where the dialog would close unintentionally when the mouse was dragged outside the dialog boundaries.
- Popover: fixed the missing drop shadow value
- ToggleSwitch: removed the left and vertical padding
v3.6.1
Published on 06 November 2024
- Carousel: fix invalid element type error by reverting rollup v4 migration released in v3.6.0
v3.6.0
Published on 29 October 2024
Added
- Icon: added icons
promoresizeaisharefilllockunlockfile_jpgfile_svgfile_png
- Tabs: added support for adding icons within Tabs
- Tokens: added two new semantic tokens for both bg and border colors
accent-strong-hover-pairedaccent-strong-active-paired
- Tokens: added two new semantic spacing tokens for input
sem.space.input.padding.horizontalsem.space.input.padding.vertical
Updated
- Icon: updated icons
file_aifile_epsfile_idfile_pdffile_psddesigner_marketplaceemail
- RadioButton: updated the dot size in the selected state from 6px to
{base.space.100} - Selection Set: update border radius when using
skin="buttons" - StandardTile: reduce the spacing between content and the image to be
sem.space.4on large screens andsem.space.3on small screens. - Tokens: improve color contrast of placeholder text in dark mode
Fixed
- Tokens: adjusted values of
base.color.green.400,base.color.navy.400,base.color.grey.400,base.color.red.400, andbase.color.yellow.700to fix contrast issues
Deprecated
- Icon:
- deprecated
iconTypeprop value:emailreplace withmail
- deprecated
v3.5.0
Published on 09 October 2024
Added
- Icon: add new
skinprop valueaccent.
Updated
- AlertBox: reduce the right padding when the alert is not dismissible
- Carousel: slight visual changes to focus state indicator, for more standardization
- Link: links with icons now have increased space between the icon and text
- Button: update long text to wrap to a new line
- SearchInput: updated the icon used for clearing text
- StandardTile: contents within StandardTileOverlay now align to the top
Fixed
- Banner: disabled primary buttons now show correct colors
- Link: fixed irrelevant warning being thrown when using
coveringprop - Pagination: disabling PaginationStep and PaginationButton properly disables the element
- StandardTile:
- fixed Tile Name font skin (which updated the line-height) to match the figma value
- remove the top padding for the Link with
unstyledskin when used inside the tile content
- SelectionSet: update the line-height for the
standardandbuttonskin. - TextInput, TextArea: increased font size to 16px on focus in sm and xs screens to prevent auto-zoom in iOS Safari
Deprecated
- Button, Icon components no longer require a style key. The necessary styles are now included in the core stylesheet, as they are pretty commonly used.
v3.4.0
Published on 18 September 2024
Added
- Callout: added
emphasisprop to style low-emphasis callouts - Icon: added icons
businesscancelconsumercreditCarddeliverydeliveryFasthomeorderSearchsecureshuffle
Updated
- AlertBox: updated width to 100% (previously adjusted to fit content length in SWAN 3.3)
- Checkbox: updated the size of "favorite" skin for compact mode
- Button: updated
tertiaryskin to use semantic tokens instead of base tokens for hover and active states - Banner, Button, ModalDialog, PriceBar, SelectionSet, TextInput: where multiple buttons sit side-by-side, they've been changed to use the new semantic spacing token for density. For Price Bar, this means the buttons got 4px closer together.
- Callout: updated standard skin styling to match
skin=inverse - Icon: updated icons
saveAsCopytext
- SelectionSet: show background color change on hover and active states.
- StandardTile: updated spacing around the image for the "product"
skinfrom 8 to 7. - TextInputWithButtonInset: updated button to use tertiary Button skin styles
- ToggleSwitch: updated the size for compact mode
Fixed
- Accordion: make collapsible non-interactive when it is marked disabled.
- Carousel: Carousel on XS screens using SSR now renders correctly at page load
- ColorSwatches: fixed selected state when focus-visible is also applied
- ModalDialog: fixed button color when nested inside Banner
- StandardTile:
- fixed the border radius for the
standardskin. - fixed the footer left/right padding to align it horizontally with the tile content for the "product"
skin.
- fixed the border radius for the
- Tabs: fixed the border separating the tabs from their content to be full-width when center aligned
- Tokens: fixed incorrect values for base green colors
Deprecated
- Callout: deprecated
variantprop. Useemphasis=lowfor overlay; omit or usevariant=standardfor inverse
v3.3.2
Published on 12 September 2024
Fixed
- Banner: secondary button styling for Button now correctly applying override styles for vanilla API
- Checkbox: fixed an issue where the "favorite"
skinsize unintentionally became much smaller in the new visual language (v3.3) - ModalDialog: fixed an issue where ModalDialogs in Safari browsers had unintended horizontal scroll
Deprecated
- Icon: deprecated
skinprop valuewhite, usestandardinstead in dark mode
v3.3.1
Published on 09 September 2024
Updated
- ModalDialog: added shadow back above
ModalDialogFooterin Panel skins
Fixed
- Background Color: fixed missing values in
backgroundColor-midnightandwarm-white - ColorSwatches: fixed selected label to appear behind a hovered label
- Combobox: fixed bug where setting
selectedKeyprop wasn't being passed to underlying library - ModalDialog: fixed bug where footer was not pinning to the bottom of the dialog in Panel skins
- ModalDialog: fixed bug where footer was transparent in Menu variants
- ThumbnailsHero: fixed border on selected thumbnail so that the thumbnail size no longer changes
Deprecated
- Icon: Deprecated icon CSS classes
.swan-icon-size-1emand.swan-icon-size-1rem. These are probably just some left over CSS classes. There isn't even a React API for using these.
v3.3.0
Published on 03 September 2024
Implemented the new visual language across the design system foundations and components and introduced compact mode to replace size variants
Added
- AlertBox: added
info,successprop values forskinprop - Button: added
tertiaryprop value forskinprop - Callout: added
accent,warning,success,help,promoprop values forskinprop - Color: added tokens
sem.color.text.link-activesem.color.border.input-error
- Compact mode: added
compactModecore prop - Icon: added
sizeprop value "standard" - Icon: added icons
aiSupportclearcrossdislikeindeterminatelikeorderssuccesswarningstar
- Spacing:
- added density tokens
sem.space.between-sectionssem.space.between-subsectionssem.space.between-actionssem.space.to-actions
- added density prop values
between-sectionsbetween-subsectionsbetween-actionsto-actions
- added size tokens for icons
sem.size.icon.standardsem.size.icon.dynamic
- added size tokens for minimum click targets
sem.size.click-target.min-heightsem.size.click-target.min-width
- added density tokens
- Tokens: added tokens for selected states
sem.border.width.selectedsem.color.bg.selected-accent-activesem.color.bg.selected-accent-hoversem.color.bg.selected-accentsem.color.border.selected-accent-activesem.color.border.selected-accent-hoversem.color.border.selected-accent
- Text Color: added new prop value "info" to the core prop
textColor - Background Color: added new prop value "info" to the core prop
backgroundColor
Fixed
- Dark mode: fixed dark mode to apply to an element regardless of the nested mode configuration
Deprecated
- AlertBox:
- deprecated
skinprop values:standardreplace withinfopositivereplace withsuccess
- deprecated
widthprop
- deprecated
- Banner: deprecated
textHorizontalAlignOnExtraSmallprop - Button: deprecated
sizeprop - Callout:
- deprecated
skinprop values:standardreplace withinfofoilreplace withaccentnewreplace withaccentannouncementreplace withaccentdiscountreplace withpromo
- deprecated
variantprop valueoverlay - deprecated
borderprop
- deprecated
- Dropdown: deprecated
skinprop valueline - Icon:
- deprecated
iconTypeprop values:closeLargereplace withclosecloseSmallreplace withclosetoggleOffreplace withcrossplusRoundedreplace withaddsatisfactionreplace withguaranteedSatisfactioncaretRightreplace withchevronRightloginreplace witharrowRightuploadYourArtworkreplace withuploadsearchLargereplace withsearchclockreplace withorderHistorymyProjects_1replace withmyProjectspolishreplace withsparkledeleteStudioreplace withdeleteplayRoundedreplace withplaychatReviewreplace withliveChatphoneCallreplace withphonehelpreplace withphonecheckRoundedEdgesreplace withcheckcheckRoundedEdgesMinireplace withcheckheartEmptyreplace withheartheartFilledreplace withheartstarEmptyreplace withstarstarFilledreplace withstar
- deprecated
sizeprop values:10preplace with16p28preplace withstandard32preplace withstandard40preplace withstandardor a custom illustration48preplace withstandardor a custom illustration60preplace withstandardor a custom illustration
- deprecated
- Link: deprecated
withIconSeparatedprop - Listbox: deprecated
sizeprop - PriceBar: deprecated
showBannerOnlyprop - Spinner: deprecated
skinprop valuesmini,tiny - Tabs: deprecated
wrapHeadersprop - TextInput: deprecated
sizeprop - ThumbnailsHero: deprecated
ThumbnailsHeroContentContainer,ThumbnailsHeroContentsubcomponents - ToggleSwitch: deprecated
sizeprop
v3.2.3
Published on 22 August 2024
Fixed
- Button: fixed active state styling
- Carousel: fixed incorrect white gap appearing below the
skin=promobarcarousel
v3.2.2
Published on 20 August 2024
Fixed
- Icon: fixed incorrect
iconTypeprop error
v3.2.1
Published on 15 August 2024
Fixed
- Fixed incorrect token descriptions
- Link: fixed
toprop not being passed through - Button: fixed new vl styles incorrectly applying to non-vl buttons
v3.2.0
Published on 13 August 2024
Updated
- Popover: changed Popover's drop-shadow to use
sem.elevation.floatinginstead ofsem.elevation.overlay
Fixed
- Collapsible: remove border-top when used outside of an Accordion
- Link: fixed icon color on hover when an icon is embedded within it
Deprecated
- FieldSet no longer needs a style key. The styles needed by the component are already included in the core stylesheet.
- MARKETING_COLORS: deprecated
MARKETING_COLORSfrom@vp/swan; import the object from@vp/marketing-colorsinstead - Pricing no longer needs a style key. The styles needed by the component are already included in the core stylesheet.
v3.1.1
Published on 30 July 2024
Fixed
- Combobox: fixed issue where custom onBlur prevented the ComboboxPopover from closing when clicking outside of the component
- Popover: fixed issue where popover arrow was not visible
- Fixed the logic for returning the base URL, which previously always returned
SWAN_BASE_CDN_URLeven when a valid tenant and locale were provided. This issue was introduced in version 3.0.0.
v3.1.0
Published on 24 July 2024
Added
- Added descriptions to semantic border-radius, border-width, color-bg, color-border, color-icon, color-text, elevation, focus, space, and z-index tokens
- Icon: added
warningandsuccesssemantic skins to icons
Updated
- Updated token generation to exclude component tier tokens in exported files
- Updated react components to use default values in place of
.defaultPropswhich is marked as deprecated by React and throws a warning in 18.3+. - Carousel:
fadeis no longer required when Carouselskin="promo-bar"and defaults to true if the prop is not provided - SwanHead: added warning when attempting to load an unsupported style key
Fixed
- Fixed modes overwriting media values of tokens when modes don't have an explicit value
- Fixed
SwanFontSkinnot being exported properly - ButtonBar, Carousel, ColorSwatches, ComboboxInput, FileInput, Listbox, Menu, Pagination, Popover, RadioButton, Range, SearchInput, SelectionSet, Tabs, TextInput, TextArea, and ToggleSwitch: fixed disabled button state to show the not-allowed cursor
- SearchInput: fixed bug with incorrectly generated component types due to issue with
prop-types - Checkbox: fixed disabled indeterminate checkboxes not showing the disabled style
v3.0.2
Published on 11 July 2024
Fixed
- Carousel: fixed issue where
slidesToShowprop wasn't working with responsive values during SSR - Listbox: fixed Listbox (and Menu) causing the dialog to close when opening the popover inside of ModalDialog
- Pagination: fixed button size issue on pagination steps with long text
- Popover: allow disabling of the Popover launcher button
v3.0.1
Published on 10 July 2024
Fixed
- Spacing: fixed incorrect space size values for sizes 1-7
- Tabs: add back in removed
wrapHeadingstyling - Fixed
fontSize="standard"mistakenly applying a text color - Fixed media values not being set correctly for explicit
standardModeusage
v3.0.0
Published on 08 July 2024
Added
- Added
use clientto all exported modules to work with React Server Components - Added new tokens for:
- Color: semantic color tokens for icons
- Spacing: semantic gutter space tokens for in-between spacing
- RatingsStars: added
reviews,hrefandhideRatingprops - SwanHead:
- Add
PrimaryandSecondarytoSwanFontNameEnum - Add
SwanFontNamefor Ubik support
- Add
- Table: added new
swan-tableCSS class
Updated
- Change classes applied by
textColorandfontSizeprops (in context with breaking change below) - Core props:
warninganderrortextColorvalues no longer adjust font weight- Enable
autovalue for the margin props - All the padding and margin props can now have spacing value 0-12
- Anchor Bar, Color Swatches, Dropdown, Listbox, Step Indicator, Toggle Switch: changed z-index to align with SWAN 3 tokens
- Button: revert horizontal padding to avoid unnecessary visual change
- Carousel:
- Simplified the button positioning logic for skin="promobar"
- Carousel now has a maximum width that matches the width of a Bounded Content, except for "promo bar" Carousels which continue to have no max-width.
- Icon:
- Updated icons across Swan to use new icon color tokens
- Updated Icon component implementation to use css mask-image instead of img src to enable more color options
- Link: updated Link
withIconSeparatedto usegapinstead ofmargin-rightfor in-between spacing - Ratings Stars: updated implementation to use css mask-image instead of filters, to be in line with other internal use of icons
- StandardTile: for
productskin, updated alignment to align contents at the top of the contents rather than the bottom, by removingflex-end - Tokens: update values for
sem-color-bg-none-activeandsem-color-bg-none-hovertokens
Fixed
- Increased specificity of font css class names to allow overriding a component's CSS with core props
- Fixed Popover related components stuck to dark mode when switching back and forth between dark mode and standard mode
- Combobox: updated Combobox to support the
skin="error"prop and to automatically match the error state in a FormField - ModalDialog: fix the alignment of the footer in Panel with Full-Bleed Skin
- Popover: fix scrollbar overlapping with rounded borders. This applies to all popover components with items, including listbox, combobox, and menu.
- SearchInput: focus is no longer lost when clicking the clear button
- SelectionSet:
- Fixed
buttonsskin selected stateborder-radiusto be rounded - When using one of the "tiles" skins, a
Calloutwill no longer be absolutely positioned if it's inside the "contents" sub-component.
- Fixed
- StandardTile: fixed height calculation on
productvariant so all tiles have the same height
Breaking
textColor="standard"andfontSize="standard"no longer apply the same class (a bug introduced in SWAN v2.22.0). This may cause visual changes if the use was relying on one prop setting both the color and font size- BACKGROUNDS_WITH_MODE: renamed
lightModeproperty tostandardMode - Core Props:
- Updated
fontFamily="secondary"to be tiempos, which was previously used forfontFamily="special"
- Updated
- SwanHead: remove
GraphikBold, as it's not allowed for use - Tokens:
- Update the token files path from
@vp/swan/dtcg-tokens/tokensto@vp/swan/tokens. - Adjusted colors and required modes of background, text, and border tokens for
accent,error,help,promo,success, andwarning.help,error,success, andwarningnow have support for Standard Mode background colours. This has changed the tokens and React props since their inclusion prior to 3.0.
- Update the token files path from
Removed
- "Graphik bold" font files from the assets
- Dropped base URL support for BrandStore, Masks, Promotique & Vista tenants.
- Removed all the old tokens
- Removed deprecated Icons - Shopping Bag 1-14, 50, Redo (Legacy), and Undo (Legacy)
- Removed holiday-theme and theme related code from
ROOT_CLASSNAMESandgetRootClassNamesand other internal uses - Removed deprecated props and prop values
- Core Props:
- Removed deprecated
fontSizevalues - Removed deprecated
fontWeight="bolder"value - Removed deprecated
fontFamily="special"value, usefontFamily="secondary"instead - Removed deprecated
backgroundColorandbgcvalues - Removed deprecated
backgroundShortandbgShortprops - Removed deprecated
lightModeprop. UsestandardModeinstead - Removed deprecated
removeLinkStylesprop, useLinkcomponent withskin="unstyled" - Removed deprecated
srOnlyprops. UsevisuallyHiddeninstead - Removed deprecated
textColorvalues
- Removed deprecated
- Accordion:
- Removed
sizeandsizeVariantprops - Removed
skin="peek"prop value
- Removed
- AlertBox: removed
widthVariantprop - Button:
- Removed
sizeVariantandwidthVariantprops - Removed
skin="accent"prop value
- Removed
- ButtonBar: removed
widthVariantprop - Callout:
- Removed
allCapsprop, usetextAllCapsinstead - Removed
size="super"prop value
- Removed
- Carousel:
- Removed
autoplayprop - Removed
skin="fraction"prop value
- Removed
- Collapsible: removed
skinprop- CollapsibleSummary: removed
richandrichLastAlignprops
- CollapsibleSummary: removed
- ColorSwatch: removed
sizeVariantandtitleprops - Combobox: removed
inModalprop - Dropdown: removed
borderlessandroundedprops - FormError: removed
sizeandsizeVariantprops - FormHelper: removed
sizeandsizeVariantprops - FormLabel: removed
sizeandsizeVariantprops - Grid: removed
cardDividersprop, usedividersinstead - Icon: removed
skin="brand-blue"prop value - LinkList: removed
skinprop - List: removed
minimalprop - ListBox: removed
skin="link"prop value - Pagination: removed
visuallyHiddenTextprop, useaccessibleTextinstead- PaginationButton: removed
visuallyHiddenTextprop, useaccessibleTextinstead - PaginationStep: removed
visuallyHiddenTextprop, useaccessibleTextinstead
- PaginationButton: removed
- Popover: removed
expandedprop - RatingsStars: removed
starsToShowprop - SelectionSet: removed
skin="buttons-with-images"prop value - StandardTile: removed
skin="gallery"prop value, and relatedbackgroundandimageShadowprops. Useskin="product"instead. - SwanHead: removed
themeKeysprop, which was unused - Table: removed
skinprop - Tabs: removed
fixedWidthHeaders,fullWidthHeader,sizeandsizeVariantprops - TextInput: removed
size="mega"prop value andsizeVariantprop - ToggleSwitch: removed
sizeVariantprop - ThumbnailsHero:
- Removed
wideandskinprops and replaced the default styling with the oldunderskin styling - Removed the
--swan-thumbnails-hero-under-image-heightand--swan-thumbnails-hero-under-image-max-heightCSS variables which were unused
- Removed
- Typography: removed
textSize,align,allCaps,weight, andoverlineprops
- Core Props:
- Breakpoints Mixins : removed
ltXsandlteXlmixins and token values - Core Props: removed
13from spacing (margin/padding/gap) props and css - Color Objects: removed deprecated color objects -
SOURCE_COLORS,GLOBAL_FONT,SEMANTIC_COLORS,MARKETING_BACKGROUNDS,BACKGROUNDS, andTEXT_COLORS. Use color tokens imported fromtokensortokensRawbased on context as appropriate e.g. for background colorstokensRaw.SwanSemColorBgStandardor for text colortokensRaw.SwanSemColorTextStandard. Note there are also icon and border semantic color tokens. - Screen Objects/Utilities:
- Removed
getScreenClassfunction - Removed deprecated screen objects
SCREEN_CLASSES,SCREEN_CLASS_MAX_WIDTHS,SCREEN_CLASS_MIN_WIDTHS, use breakpoint tokens imported fromtokensortokensRawbased on context as appropriate e.g.tokensRaw.SwanBaseBreakpointMdStartortokensRaw.SwanBaseBreakpointMdEnd. - Removed deprecated screen types
ScreenClassesandScreenClassWidthMap, useStyleBreakpointsinstead for type safety.
- Removed
- Spacing Objects:
- Removed
SPACING_SIZES,SPACING, andSPACING_PXobjects and types. Use space tokens imported fromtokensortokensRawbased on context as appropriate e.g.tokensRaw.SwanSemSpace4. - Removed
StyleSpacingandStyleSpacing0to13objects. UseStyleSpaceandStyleSpaceWithAutoinstead.
- Removed
- Accordion: removed CSS and vanilla js references to old API
- Card: removed CSS for when Card is used as a selection element (checkbox or radio button), which was available only in the vanilla API.
- ModalDialog: removed old API CSS for positioning buttons when there was not a ModalDialogBody element
- PriceBar: removed old API CSS for vanilla HTML consumers
- Style Keys: removed the
comboboxandmenustyle keys. Their stylesheets have been incorporated into thelistboxstyles - Style Keys: removed the
controlIcon,detailsBanner,embeddedTextHero,legacyCombobox,legacyListbox,legacyModalDialog,legacyPopover,promoBar,secondaryTile,standardBanner,standardHerostyle keys as those components were removed - Removed deprecated components
- Button: removed
ButtonSuperBreak,TextButton, andTextButtonSuperBreakcomponents - ControlIcon: removed
ControlIconcomponent and style key, useIconinstead - DetailsBanner: removed
DetailsBannercomponent and style key, useBannerinstead - EmbeddedTextHero: removed
EmbeddedTextHerocomponent and style key, useBannerinstead - ExperimentsProvider: removed
ExperimentsProvidercomponent and related props, includingexperimentscore prop - Icon: removed
<Icon[Name]>inline-svg components, useIconcomponent instead - IconBulletList: removed
IconBulletListcomponent, useBulletListinstead - IconTileSet: removed
IconTileSetcomponent, use pattern withFlexBoxandBoxinstead - LegacyCombobox, LegacyListbox, LegacyModalDialog, LegacyPopover: removed legacy Reach UI Components
- Pagination: removed
PaginationInputandPaginationLabelcomponents - Paginator: removed
Paginatorcomponent, usePaginationinstead - PipeDivider: removed
PipeDividercomponent, usePipeSeparatorinstead - Preloader: removed
Preloadercomponent, useSpinnerinstead - PromoBar: removed
Promobarcomponent, use pattern withFlexBoxinstead - SecondaryTile: removed
SecondaryTilecomponent, style key, and related CSS - SellingPoints: removed
SellingPointscomponent - StandardBanner: removed
StandardBannercomponent, useBannerinstead - StandardHero: removed
StandardHerocomponent, useBannerinstead - StandardSection: removed
StandardSectioncomponent, using spacing props instead - StandardTile: removed
StandardTileBackgroundcomponent, which was only used withskin="gallery"which has also been removed - SwanTheme: removed
SwanThemecomponent, which was only used inside ofSwanHead - Table: removed
TableTextNewLineandTableTextSecondLinecomponent
- Button: removed
v2.23.0
Published on 21 June 2024
Added
- Avatar - for displaying the avatar image
Updated
- Carousel: updated
slidesToShowto allow responsive values. This will work with server-side rendering, but requires that the Carousel be wrapped in a<ScreenClassProvider>to use
v2.22.1
Published on 12 June 2024
- Combobox: fixed issue where popover wasn't closing when clicking outside of the combobox
v2.22.0
Published on 12 June 2024
Added
- Implement new token architecture for:
- Typography
- Space
- Introduced a new typography API, accessible via the
fontSkincore prop in support of new visual language - Core props: added new values to the core prop
fontSizein support of new visual language:x4large,x3large,x2large,xlarge,large,standard,small,xsmall - Core props: added new semantic
textColorvalues to support the new visual language -accent,help,promo,standard,subtle,success
Updated
- Popover: add swan root css class to popover element to guarantee styling propagates
Fixed
- Core props: fixed
accentbackground colour contrast with standard text - Core props: fixed
errorbackground colour contrast with dark mode text - Core props: fixed
promobackground colour contrast with standard text - SOURCE_COLORS: fixed red400 to correctly reference a hex code
Deprecated
- Core props: deprecated
fontWeightvaluebolder. Useboldinstead - Core props: deprecated
fontSizeold scale values "1-6" and "xm2-x6". Use new scale instead. - Core props: deprecated
fontFamilyvaluespecial. No changes required in v2. Usesecondaryin v3. - Color Objects: deprecated
backgroundColorvaluewhite. Usestandardinstead. - Color Objects: deprecated
textColorandfontSizevalues are now deprecated in code, and will display a warning if used - Core Props: deprecated spacing value
13for all the margin, padding props. - Screen Objects: deprecated
SCREEN_CLASS_MAX_WIDTHS,SCREEN_CLASS_MIN_WIDTHS. Use exported token variables instead - Screen Objects: deprecated
SCREEN_CLASSES,ScreenClassWidthMap,ResponsiveModifiers, andScreenClasses. UseStyleBreakpointsfor type safety - Spacing Objects: deprecated
SPACING_SIZES,SPACINGandSPACING_PX. Use exported token variables instead - Spacing Objects: deprecated multiple spacing types, e.g.
StyleSpacingandStyleSpacing0to13. UseStyleSpaceandStyleSpaceWithAutofor type safety - Table: deprecated
TableTextNewLinesub-component which is only intended to be used with the deprecatedsimpleskin - RatingsStars: deprecated
starsToShowprop
v2.21.2
Published on 30 May 2024
Fixed
- Carousel: removed the max-width that was introduced in 2.20, because it was creating problems with the Promo Bar. (We will re-add the max-width in SWAN 3.)
v2.21.1
Published on 28 May 2024
Fixed
- Fixed reference to
process.env.node_envtoprocess.env.NODE_ENVto fix systemjs web build
v2.21.0
Published on 28 May 2024
Added
- Core props: new semantic
backgroundColorvalues to support the new visual language -standard,strong,error,warning,success,promo,help,accent - Tokens: added in support for new modes
standardMode
Updated
- Color Objects: Holiday colours now read from private variables, not public tokens.
- Improve consistency of focus-related styling across components
Fixed
- Banner
bgcnot flowing through to full width image variants - Icon
sparklevisual imperfections
Deprecated
-
Color Objects: deprecated
backgroundColorvalues are now deprecated in code, and will display a warning if used -
Color Objects: deprecated
loading-shimmervalue forbackgroundColor(use the new global proploadingShimmerinstead) -
Tokens: deprecated
lightModein favor ofstandardMode -
Implement new token architecture for:
- Background color
- Border color
- Text color
-
AnchorBar: adds default background color
Updated
- Banner: now accepts a CSS custom prop
--swan-public-marketing-backgroundto set a custom background color - Color Objects:
MARKETING_COLORSnow includeswhiteandwarmWhite - Core props: added
loadingShimmeras a replacement forbackgroundColor="loading-shimmer" - PipeSeparator: now avoids using a hardcoded
|character - SkeletonText and SkeletonHeading: changed to use new global
loadingShimmerfeature under the hood
Fixed
- Banner: media query mismatching
- Carousel: in dark mode, arrow button colors are now correct
- Carousel: on super-wide screens, arrow buttons should no longer be far away from the Carousel content.
- ComboboxSearchInput: allow form submission when enter is pressed in the search input
- Combobox, Listbox, Menu, Popover: dark mode not getting consistently applied.
- Callout: text color for new skin in dark mode
- Callout: text color of foil skin in inverse variant in dark mode
Deprecated
- Core prop:
backgroundShort/bgShortwhich is obsolete now - Color Objects: deprecated
MARKETING_BACKGROUNDS, useMARKETING_COLORSinstead for integration with Contentful & Builder - Color Objects: deprecated
SOURCE_COLORS,GLOBAL_FONT,SEMANTIC_COLORS. Use exported token variables instead - Color Objects: deprecated
BACKGROUNDSandTEXT_COLORS. UseStyleBackgroundColorandStyleTextColortypescript types for type safety
v2.19.1
Published on 03 May 2024
Fixed
- Internal: Tokens output structure
v2.19.0
Published on 03 May 2024
Added
- Implement new token architecture for:
- Border Radius
- Border Width
- Breakpoints
- Elevation
- Z-Index
Updated
- Combobox, Listbox, Menu, and Popover: update to the underlying react-aria dependencies
Fixed
- AnchorBar: added
scroll-padding-topto HTML element when Anchor Bar is sticky to meet WCAG 2.2 guidelines - AnchorBar: stacking index so that other elements don't overlap on it.
v2.18.2
Published on 18 April 2024
Updated
- Banner: on small screens, the
full-width-imagevariant now uses the image as the background
Fixed
- Carousel: flickering which was partially fixed in v2.17.0
v2.18.1
Published on 11 April 2024
Fixed
- SearchInput: fixed CSS issue that cause a red border for arbitrary parent containers of error inputs
v2.18.0
Published on 11 April 2024
New
- Exposed a utility method
waitForStylesfor utilization in testing pipelines that rely on SWAN styles - Added new
<SearchInput/>component - Combobox: added new
<ComboboxSearchInput />subcomponent
Fixed
- ExperimentsProvider: fixed forwardRef console warning from SwanProvider
- PipeSeparator: now using correct ARIA role of
role="presentation"
v2.17.0
Published on 28 March 2024
Updated
- Menu: remove 4-item maximum height
Fixed
- Carousel flickering during SSR when
slidesToShowis a decimal - Listbox: adjust maximum height to match 4 options
Deprecated
See the doc site for more details about deprecations and alternatives
- global
removeLinkStylesprop - userenderfunction forLinkinstead. - Accordion: deprecated the
peekvalue for theskinprop - use thestandardskin instead. - Button: deprecated the
ButtonSuperBreaksubcomponent. To maintain a high-quality user experience, we are no longer supporting this feature, and are not providing a direct replacement. - Button: deprecated the
accentvalue for theskinprop. To maintain a high-quality user experience, we are no longer supporting this feature, and are not providing a direct replacement. - ExperimentsProvider: to maintain a high-quality user experience, we are no longer supporting this feature, and are not providing a direct replacement.
- FormLabel, FormHelper, FormError: deprecated the
sizeprop. To maintain a high-quality user experience, we are no longer supporting this feature, and are not providing a direct replacement. - Icon: deprecated the
brand-bluevalue for theskinprop. To maintain a high-quality user experience, we are no longer supporting this feature, and are not providing a direct replacement. - Icon: deprecated the
<Icon[Name]>icon API. Use the<Icon iconType="">component instead. - IconTileSet: use a pattern of other SWAN components instead.
- LinkList: deprecated the
skinprop - use a pattern of other SWAN components instead - PaginationInput: use PaginationButton instead, which provides a better user experience.
- PromoBar: use a pattern of other SWAN components instead.
- SecondaryTile: use Standard Tile instead, which provides a better user experience.
- SelectionSet: deprecated the
button-with-imagesvalue for theskinprop - use a standardSelection Setwith a nested image orStandard Tile, or aSelection Setusingtiles-horizontal,tiles-vertical, ortiles-miniinstead. - StandardSection: use Spacing instead, which provides updated styling and functionality.
- StandardTile: deprecated
imageShadowprop, which was only needed for the already-deprecatedgalleryskin. - Table: deprecated the
simpleandcomparisonvalue for theskinprop - use thedividersskin instead, which provides a better user experience. - ThumbnailsHero: deprecated
contentWidthprop. To maintain a high-quality user experience, we are no longer supporting this feature, and are not providing a direct replacement. - Typography: deprecated the
overlineprop. To maintain a high-quality user experience, we are no longer supporting this feature, and are not providing a direct replacement.
v2.16.0
Published on 15 March 2024
Updated
- Carousel: support generic dark mode containers in promobar skin
Fixed
- Combobox, Listbox, Menu: prevent clicks on items from bleeding through to elements below popover in mobile
- ColorSwatch: fix data urls as background images
- LeftHandNavigation: fixed color contrast issues with hover/selected states; also adjusted border radius
v2.15.0
Published on 04 March 2024
Updated
- Carousel: allow custom id for the component
Fixed
- Typography: the
truncatefeature no longer clips descenders on large type - ModalDialog: dialog close is triggered only when the dialog is open
v2.14.1
Published on 27 February 2024
New
- Added color
black-900toMARKETING_BACKGROUNDS
Fixed
- Changelog typo
LegacyListbox,AlertBox,Collapsible,Listbox,ModalDialog,Preloader,ProgressiveImage,ZoomControls: TypeScript fixes to support the latest version of @types/react, which is more strict
v2.14.0
Published on 26 February 2024
New
- Icon: added new "more-horizontal" icon to support the new
Menucomponent
Updated
- Accordion: remove deprecation warning on
sizeprop when a value forsizeisn't provided - Combobox, Listbox, and Popover: patch version updates to underlying dependencies: @react-aria/combobox & @react-aria/dialog
- Dropdown: remove deprecation warning on
borderlessprop when a value forborderlessisn't provided
v2.13.1
Published on 08 February 2024
Fixed
- Menu:
MenuListandMenuSectionare now being exported
v2.13.0
Published on 08 February 2024
Fixed
- Table: fix the header styling for the "comparison" skin
New
- Menu component that opens a popover list of buttons or links
Updated
- Combobox, Listbox, and Popover: update to the underlying react-aria dependencies
Deprecated
- Deprecated the
srOnlycore utility prop, usevisuallyHiddeninstead - Accordion: deprecated the
sizeprop - all accordions should be standard, not large - Callout: deprecated the
supervalue of thesizeprop - use the standard size - Carousel: deprecated the
fractionvalue of thesizeIndicatorprop - use thenonevalue instead (or omit) - Collapsible: deprecated the
richandrichLastAlignprops - use the default styling - Dropdown: deprecated the
borderlessprop - use the default styling - Listbox: deprecated the
linkvalue of theskinprop - use the default styling - Popover: deprecated the
expandedprop - control the open state with a ref on the trigger for better accessibility - SellingPoints: use a pattern of other SWAN components instead; please see the documentation site.
- StandardBanner: use Banner instead, which provides the needed functionality and brings better consistency across Vista.
- StandardHero: use Banner instead, which provides the needed functionality and brings better consistency across Vista.
- StandardTile: deprecated the
galleryvalue of theskinprop - use the standard skin - Tabs: deprecated the
fixedWithHeadersprop - use the default behavior - Tabs: deprecated the
megavalue of thesizeprop - use the standard size - TextInput: deprecated the
megavalue of thesizeprop - use the standard size - ThumbnailsHero: deprecated the
standardskin of theskinprop - use theunderskin - Typography: deprecated the
textSizeprop - use thefontSizeprop
v2.12.1
Published on 02 February 2024
Fixed
- ModalDialog: close the dialog using the controlled state
v2.12.0
Published on 30 January 2024
New
- new global prop
overflowthat sets CSS overflow
Updated
- AlertBox: align dismiss button to the top-right
- Icon: update download and upload icons
- Button: use
iconPositionprop to specify the spinner position
Fixed
- ModalDialog: fix the
onRequestDismisscallback trigger when the modal closes using the escape key - ModalDialog: make
aria-modal="false"for the modeless dialog
v2.11.0
Published on 11 January 2024
Updated
- Popover: allow more specific arrow positioning to better align with trigger
- Added color
rumtoMARKETING_BACKGROUNDS - Updated
BACKGROUND_WITH_MODE's color 'holiday-red-2' (not utilized in FY24) to use dark mode when employed as a background color.
Fixed
- Listbox &
Combobox: fix popover width not resizing correctly on window resize issue - ModalDialog: fix bug where dialog incorrectly closed when a file input is cancelled
- Popover: fix bug where core SWAN props were not getting applied
- Range: reset user-agent margin for visual consistency
v2.10.0
Published on 30 November 2023
Added
- ThumbnailHero:
<ThumbnailsHeroVideoThumbnailSlide />component that shows the play icon on the thumbnail for the video slide. - Users can now access and utilize the internal icon
Updated
- SelectionSet: for the
buttons-with-imagesskin, make the corner rounded
Fixed
- Callout: Font color of the links within "inverse" Callouts
- ModalDialog: set title element id in modal
aria-labelledbyprop ifaria-labelandaria-labelledbyare not provided - ModalDialog: replace
addEventListenerwithremoveEventListenerinuseEffectcleanup function to address memory issue - Listbox: fix
fullWidthprop onListboxWitFloatingLabelnot passing toListboxPopover
v2.9.0
Published on 17 November 2023
Added
- Combobox: custom input text now supported with
allowsCustomValue - Listbox: add placeholder prop to
ListboxButtonfor text to display when an option is selected - Listbox and
Combobox: added new dynamic collections API for larger dataset
Updated
- Combobox and
Listbox: remove focus ring on Option on hover - Dropdown,
Listbox, andTextInputwith Floating Labels: now using shared floating label context object. (No visual impact.)
Fixed
- Combobox: fixed popover opening when first letter is typed with async data
- Popover: fixed internal component
PopoverTriggerref prop so that the child ref doesn't get swallowed allowing it to be used
v2.8.0
Published on 7 November 2023
Added
- Combobox: now supports floating labels
Fixed
- Popover: Disable scrolling on elements below popover when popover is open. Applies to listbox and combobox as well.
- Table: remove !important from td & th padding to allow for custom padding via props
- Circular dependency issue raised by the hook
useDarkModeExtractor - Buttonbar: for selected button always show the selected color, even when the button is active or hover.
- ModalDialog: fix dark mode styling of pinned footer in menu variant
v2.7.2
Published on 13 October 2023
Fixed
- StandardBanner and
StandardHero: reverted Standard Banner and Hero styling from 2.7.0
v2.7.1
Published on 13 October 2023
Fixed
- Banner: using Firefox on Extra-Small screens, image is not wide enough
v2.7.0
Published on 10 October 2023
Updated
- StandardBanner and
StandardHero: some visual restyling to bring them more in line with the look of the newBanner
Fixed
- Banner: using Safari on Extra-Small screens, image no longer grows too tall
- Button: Clear Selection buttons no longer clip the first button's focus indicator
- Listbox: Fixed lightMode styling when a child of darkMode and cleaned up variables
- Popover dark mode compatibility: Content background was not respecting the
darkModeprop applied over any ancestor
v2.6.2
Published on 3 October 2023
Fixed
- Color: Updated background color mode to darkMode for holiday-red-1
- Carousel: Set dark mode on carousels when holiday promo bar skins are used
v2.6.1
Published on 29 September 2023
Fixed
- AnchorBar: The circular dependency issue.
v2.6.0
Published on 25 September 2023
Added
- AnchorBar: add new sticky anchor bar component
- Range: new skins for hue, contrast, saturation, and custom Range sliders
- Icon: added
settingsicon
Updated
- Accordion and
Collapsible: text, border, and icon color now optimized for Dark Mode; disabled colors changed to grey-500 - Banner: "full-width-image" Banner now sets the background color of the text box using CSS variables, instead of a React context object (no API change)
- Banner: min-height on Small and Medium screens, and for all "short" Banners, changed from 260px to 300px
- Update favicon to be 48x48 to align with Google's recommendations
Fixed
- Banner: if you are using both
preferSecondaryImageandhideImageOnExtraSmall, images will now be hidden - Carousel: buttons in "promo-bar" skin now have 24x24 touch targets to meet WCAG 2.1 AA minimum size
- LeftHandNavigation: using Dark Mode, "button menu" skin now has enough color contrast
- Listbox: fix issue where selected item wasn't scrolled into view when popover loads (for real)
- PromoBar: text color compatibility issue with
darkMode - ModalDialog: close button getting overflown when using variant "menu" with bodyWidth "capped"
- StepIndicator: using Dark Mode on smaller screens, arrow buttons are now visible
v2.5.0
Published on 7 September 2023
Added
- Banner: a new component for banners and heroes, to be used instead of
StandardHeroandStandardBannergoing forward. - PromoBar: added
holiday-greenandholiday-beigeskins
Deprecated
- Dropdown: the prop
rounded, as it doesn't do anything visually any longer
Fixed
- AlertBox: fix issue where uncontrolled dismissible alert box wasn't able to be dismissed
- Callout: fix text color in holiday skin
- Carousel:
- previous/next navigation buttons are now disabled using the "disabled" attribute
- when rendered inside BoundedContent, previous/next buttons were getting clipped by the screen, but are completely visible now
- ControlIconHoverContainer: the hover color for the icon
- Listbox: downgrade react-aria dependency to fix scroll to selected item issue
- PromoBar: fix text color in holiday skin
- SelectionSet: for the "simple-column" skin, selections in focus now show the focus indicator on the checkbox/radio button, but not the text label
Updated
- Color: updated Holiday colors for Holiday CY23/FY24
- Color: updated "warning" color to be a shade of orange (specifically, our "pumpkin" color)
- Color: updated "pumpkin" so that it now has enough color contrast against white, and should now be used as a background color with white text (dark mode)
v2.4.1
Published on 18 August 2023
Fixed
- FlexBox: do not include gap property in inline css if prop is undefined
- Listbox: expanded type of ListboxOption's
labelprop to allow a ReactNode instead of just a string - ProgressiveImage: fix incorrect warning that style key is missing when it's not
- RatingsStars: fix incorrect warning that style key is missing when it's not
- (revert)
Link: fixed typescript type for props arg ofrenderprop
v2.4.0
Published on 11 August 2023
Added
- Added
arrow-upandarrow-downicons - Added
.swan:focus-visibleselector to match.swan-dark-mode:focus-visible - FileInput: add FileInput component
- Added
collapseandexpandicons
Fixed
- SSRPRovider: fix React 18 Suspense issues from react aria's SSRProvider
- Button: adds space between icon and text when skinned as
"link" - Link: fixed typescript type for props arg of
renderprop - Popover: switched from block to inline display for trigger element to avoid cursor expanding past trigger element
v2.3.1
Published on 28 July 2023
Fixed
- load
focus-visiblepolyfill from vanilla js. Check for polyfill script before adding it from react
v2.3.0
Published on 28 July 2023
Added
- Dialog: add
growbodyWidthoption to no longer restrict max width - FlexBox: add support for the
gapproperty, which takes a SWAN Spacing unit as a value
Updated
- Switch to
:focus-visiblestyling so focus rings only appear for keyboard users. Add polyfill for legacy browsers - Link : improve legibility by setting
text-decoration-skip-ink: allfor those browsers that support it - StandardHeroText : top and bottom margin of the text container have been decreased for the
fullWidthImageoption. - StandardHero : min-height of the hero container has been decreased to 480px.
- SelectionSet : all variants now use
word-break: break-wordto minimize the browsers breaking in mid-word - SelectionSet : for
simple-columnskin variant, change the disabled value font color
Fixed
- Accordion:
ColorSwatchesbeing right-aligned previously - Checkbox: for disabled Checkboxes, check mark is now the correct color of grey
- ModalDialog: fix width of DialogContent on mobile for capped panels
- ThumbnailsHero: show the video control panel on focus
Refactored
- Carousel: reduced css complexity for accessibility override css for peek variant
Deprecated
- DetailsBanner: deprecate DetailsBanner component in favor of Standard Hero or Standard Banner
- EmbeddedTextHero: deprecate EmbeddedTextHero component in favor of Standard Hero or Standard Banner
- StandardHeroImageHighlight: No longer maintain this component
- StandardHeroTextBackgroundImage: No longer maintain this component
v2.2.0
Published on 29 June 2023
Added
- Listbox: new "Listbox With Floating Label" variant, to match "Dropdown With Floating Label"
- Added development warning for missing style key(s)
- Added
BACKGROUND_WITH_MODEconstant to provide a map ofBACKGROUNDScolor with the mode type.
Updated
- Button: focus indicator now uses the global (blue) styling except when inside a Standard Hero or Standard Banner, where we want to maximize color contrast
- ThumbnailsHero: max-height set to 75vh or 800px, whichever is smaller, so that the hero isn't ridiculously tall on really large monitors
- SelectionSet: the various "tiles" skins now attempt to avoid word breaks in mid-word
Fixed
- AlertBox: fix link color for legal warning in dark mode
- Carousel: Disable window scrolling while swiping horizontally
- Carousel: Set dark mode on the carousel when the inverse promo bar skin is used in a slide
- Icon: Used to break the page when an invalid
iconTypeis passed. - Listbox: left padding changed to 12px, to match Dropdown
- SelectionSet: for tall sets, clicking on a selection at the bottom of the set no longer scrolls the browser to the top of the set
- CollapsibleSummaryTextOpen &
CollapsibleSummaryTextClosed: fix text overflow issue for SummaryText component - CollapsibleSummary:
richvariant now includes text wrapping when there is text overflow.
Deprecated
- Collapsible: deprecated
skinprop, which has been a no-op for some time - Tabs: deprecated
fullWidthHeaderprop, which has been a no-op for some time
v2.1.0
Published on 14 June 2023
Added
- Dialog: add
onlyRenderWhenOpenprop to only render the dialog's contents in the DOM when the dialog is open
Updated
- Dropdown: height on small screens changed to 50px to match other form elements
- Spinner: layout "horizontal" no longer has a max width
- TextInput and
TextArea: border colors changed slightly, and corners on TextArea are now rounded - Removed old MS Edge polyfill for "input with floating label" from core js
- IconTileSet: added spacing between the tiles on extra small screens
Fixed
- Dialog: adjusted max width of dialog so listbox popovers are not cut off
- Spinner: layout "horizontal" with long text no longer deforms the spinner
v2.0.1
Published on 25 May 2023
Fixed
- ModalDialog: Loading CSS polyfill in VanillaJS implementation
v2.0
Published on 24 May 2023
New
- Polyfills: SwanProvider now supports polyfill loading within the library. Currently this is limited to a polyfill for the native dialog element, which ModalDialog has been rewritten to use.
- StandardForm: when a form is submitted either by pressing a submit button or hitting enter in a text field, submission will be stopped with preventDefault(). Supply
form,actionoronSubmitto override the behavior. - SWAN version is now logged in a custom meta tag on the page. It is added on the server using the SwanHead component, if included, or in the browser when the SwanProvider component is loaded on the page
Breaking
@vp/swan/tokens/*imports refactoring:
| Concern | Old | New |
|---|---|---|
| TS / JS | @vp/swan/tokens/tokens | @vp/swan |
| SCSS | @vp/swan/tokens/tokens | @vp/swan/scss/design-tokens(preferred) or @vp/swan/design-tokens/scss |
| LESS | @vp/swan/tokens/tokens | @vp/swan/design-tokens/less |
| CSS | @vp/swan/tokens/tokens | @vp/swan/design-tokens/css |
| Stylus | @vp/swan/tokens/tokens | @vp/swan/design-tokens/styl |
-
Carousel: Under the hood dependency changed from
@ant-design/react-slicktoreact-slick -
Combobox: Combobox has been rewritten to support React 18. The
valueprop on ComboboxOption has been renamed tokey.- Combobox now requires the
popoverandlistboxstyle keys in addition to thecomboboxkey. onSelecthas been renamed toonSelectionChangeComboboxOptions that contain jsx must also include atextValueprop for Accessibility.ComboboxOptionTextcomponent has been removed. Use thetextValueprop onComboboxOptioninstead.value,defaultValue, andonChangeare no longer allowed onComboboxInput. They have been replaced byinputValue,defaultInputValue, andonInputChangeon the rootComboboxcomponent.
- Combobox now requires the
-
Listbox: Listbox has been rewritten to support React 18. The
valueprop on ListboxOption has been renamed tokey.- Listbox now requires the
popoverstyle key in addition to thelistboxkey. ListboxOptions that contain jsx must also include atextValueprop for Accessibility.ListboxOptionTextcomponent has been removed. Use thetextValueprop onListboxOptioninstead.ListboxButtonWithLabelhas been removed. Use thelabelPrefixprop on theListboxButtoncomponent.
- Listbox now requires the
-
ModalDialog: has been rewritten to support React 18. It now uses the native dialog, and provides a polyfill in SwanProvider for older browsers.
- The vanilla dialog API has been rewritten and simplified to use the native dialog. Use the native dialog API function
showModal()andclose()to open or close the dialog element. - For dialogs created after the vanilla script has been loaded on the page, register the modal with
window.registerVanillaSwanDialog
- The vanilla dialog API has been rewritten and simplified to use the native dialog. Use the native dialog API function
-
Popover: Popover has been rewritten to consolidate behavior with Listbox and Combobox.
eventContainerRefprop has been removed.- Only the first child of
PopoverLauncherwill be treated as the trigger element for the popover
-
Range: CSS custom properties for Range colors were renamed to accurately reflect the parts they style, instead of using the non-webkit names that Firefox uses. The empty part of the track is now colored with
--swan-range-track-color, and the filled part with--swan-range-track-fill-color.Old token New token --swan-range-track-color --swan-range-track-fill-color --swan-range-track-progress-color --swan-range-track-color -
SSR: When rendering with SSR/SSG, your application should be wrapped in
<SwanSSRProvider />to avoid hydration issues.
Removed
- Select: The Select component has been removed. Replace it with either Dropdown or Listbox
- Font scale: Removing all the font scale related dependencies and classes as it is useless since we introduced a new scale x in 1.23
- Removed
SwanFontScaleEnum - Removed
fontScalefrom the typeuseRootClassNamesArg - Removed
fontScalefromSwanProviderprop types - Removed
scopedFontNewandscopedFontLegacyfrom te constantROOT_CLASSNAMES
- Removed
SWAN_BASE_URL_MAP&SWAN_BASE_URL_LIST: Removed all "next", "promotique" and "brandStore" related entries as they are decommissioned and no longer in use.- Removed codemod script. We will provide a separate package for that.
- Removed IE-specific meta tag
Deprecated
- Combobox: The former Reach-UI-based Listbox was renamed to
LegacyListbox, but continues to exist for users who cannot easily upgrade to the newListbox. There's no guarantee it will work with React 18 - Listbox: The former Reach-UI-based Listbox was renamed to
LegacyListbox, but continues to exist for users who cannot easily upgrade to the newListbox. There's no guarantee it will work with React 18 - ModalDialog: The former Reach-UI-based ModalDialog was renamed to
LegacyModalDialog, but continues to exist for users who cannot upgrade to the newModalDialog. There's no guarantee it will work with React 18 - Popover: The former Popover component was renamed to
LegacyPopover, but continues to exist for users who cannot upgrade to the newPopover.
Fixed
- AlertBox: "warning" skin close button now has correct color contrast
- Treeshaking: Fixed an issue where icons weren't being tree-shaken on a page
v1.14.0
Fixed
- Accordion: focus state no longer clipped for nested accordions
- Button: Clear Selections buttons now line-wrap on smaller screens, to prevent a Chrome bug
- Carousel: "fraction" variant's focus state for arrow buttons no longer overlaps the content
- Checkbox and
RadioButton: disabled versions have correct visuals
v1.13.0
Added
- Checkbox now has a prop
instant, which causes animation (e.g. for the "favorite" checkbox) to occur instantly - Range: the new
unfilledoption makes the track unfilled to the left of the thumb
Updated
- ColorSwatches: visible label is now horizontally centered when above/below the swatch
- focus state styling updated globally, and across all SWAN components
- RatingsStars: yellow stars updated to use the yellow from the Vista palette
- SelectionSet: labels with really long words can now break them onto two lines as needed
- SelectionSet: tiles-mini skin now has a minimum width for the image, and no minimum width for the label
- useBrowserHistoryState: remove the duplication of history state on back button
Fixed
- Carousel: using "fraction" variant in dark mode, text and buttons are now legible
- ModalDialog:
panel-topandpanel-bottomvariants usingbodyWidth="capped"no longer get awkward drop shadows around their buttons - SelectionSet: clickable elements inside a selected selection can be clicked
- useId: fixed useLayoutEffect warning during SSR
v1.12.0
Added
- SelectionSet: new options for the tiles-mini skin:
imageWidth,imageVerticalAlignment,tileContentsPadding,tileImagePadding - useBrowserHistoryState: new optional parameter
{replace:true}to handle the history replace on close
Updated
- Buttonbar: visual redesign
- Link: hover color darkened to improve color contrast against light grey backgrounds
Fixed
- StandardHeroText: Spacing around Hero text for larger screen
- TextInputWithButtonInsetProps: fix the styling issue for
skin:searchbar. - StandardTile: "covering" CTA links will now cover the whole tile
- Compiled CSS: Invalid properties and values used.
- useId: use
useLayoutEffectinstead ofuseEffectfor slightly better performance - DropdownWithFloatingLabel: stop passing
fullWidthprop as attribute to div
v1.11.0
Added
- DropdownWithFloatingLabel: now supports
fullWidthprop - Typescript: added children props explicitly to align with react 18 types
Fixed
- Accordion: Invalid CSS expression for collapsible content
- List: bullets are now vertically centered regardless of font size
- StandardTile: Invalid SASS interpolation for links
- Tabs: sticky headers now have a background color when in dark mode
v1.10.0
Added
- Checkbox: new "favorite" skin creates a heart-shaped checkbox for when the user is selecting a favorite design from a gallery of choices
- ColorSwatch: support linear and radial gradients for two-tone swatches
- DropdownWithFloatingLabel: new component that works like TextInputWithFloatingLabel, but for Dropdowns
- StepIndicator: the new
showAllStepsfeature will show all steps always, even on mobile screens.
Updated
- TextInput,
Dropdown,Listbox: new visual styling, including standardized component heights and colors
Fixed
- Button: Unstyled skin button in disabled state
- ColorSwatches: The
labelPositionfeature introduced in v1.6 included context wrapping around the wrapperColorSwatches. For some of the users who were individually using theColorSwatchcomponent (although not recommended), this became a breaking change. This is fixed and now a non-breaking change. - ModalDialog: using the
panel-bottomvariant, the dialog title no longer has extra indentation. - Pagination: visual support for steps that are
<button>tags - Typescript: revert Typescript changes for React 18 support due to downstream error
v1.9.0
No-op Release
v1.8.0
Added
- Experimentation: Added experiment for button
Updated
- Typescript: added children props explicitly to align with react 18 types
v1.7.2
Fixed
- Combobox: Popover remaining open even when a selection is done
v1.7.1
Fixed
- SelectionSet: layout shift when switching between options
v1.7.0
Added
- Spinner: new component for loading spinner
Updated
- Combobox: When used inside ModalDialog, fixed the ListBox popover overlay getting hidden behind the ModalDialog overlay
- Preloader is now deprecated in favor of
Spinner
Fixed
- ListboxOption: When used inside darkMode, the color of the selected state changes to white if hovered off
- RatingsStars: Add role="img" to div element so that aria-label is valid for A11Y
v1.6.1
Fixed
- Combobox: Missing hover effect on the options
- ToggleSwitch: While fixing the issue mentioned in v1.6.0, introduced a new issue where on toggling the switch, alters the width of the entire component.
v1.6.0
Added
- ColorSwatches: Now provides the option to position the label in 4 different positions
- Skeleton Text: new component
Updated
- Background color "loading shimmer": updated visuals
- Popover:
PopoverLaunchersettingaria-expandedto it's first child rather than the wrapping element
Fixed
- Listbox: Only selected option being read by screen reader when navigating through all the available listbox options.
- StandardBanner:
- Image not visible when using <picture> tag
- For the layout "side-by-side", "center" alignment not working in either direction
- ToggleSwitch: Toggling the state alters the position of the component
v1.5.0
Updated
- Listbox: Updated state for focus, hover, active and selected states for ListboxOption
Fixed
- Button: Fix focus indicator visibility on Safari. Also fixes
SelectionSetandListbox - Button with
Icon: skin tone not being respected - TextInputWithFloatingLabel: Label not associated with the input element
v1.4.0
Added
- Exposed
SWAN_BASE_CDN_URLconstant just for the CDN - Choosing SWAN base URL is now simplified
<SwanProvider>&<SwanHead>exposes props swanTenant and swanLocale to determine the base URL.- Exposed a utility method called
getSwanBaseUrlwhich acceptstenantandlocaleand returns the corresponding baseUrl, in case user is not using SwanProvider above. - the supported tenant and locales are based on the live site as on Dec 13.
- When a given tenant and locales are not found, it would fallback to the SWAN CDN.
Fixed
- Carousel:
- gridGutters prop spacing on SSR
- minute visual accessibility improvements
- Link: skin cta's arrow icon vertical alignment fix
- ModalDialog fullBleed: ModalDialogNav being invisible and issues with Firefox.
- Pagination: Pagination buttons invisible on Safari browser.
- Thumbnail Hero: Thumbnail Slides are now defaulting to use
span. - Less Tokens: Escaped media query tokens for less.
- Types:
refattributed from ComponentProps has been omitted for others to extend.
v1.3.2
Added
- New values for core prop
bgcviz. gray-400, gray-500, gray-600(darkMode), gray-900(darkMode)
Updated
- ThumbnailsHero: using "under" skin, height of the component is based on the text content, not the image
Fixed
- Carousel:
- Slide rendering partially on initial load
accessibleTextForDotsprop being mandatory even for the cases where there are no dots
Carousel & ThumbnailsHero: "currentSlide" prop not working- Count: Blank container when rendering a variable with value 0
- LeftHandNavigation: Divider color when used within a container having darkMode
- Less Tokens: wrapping values with
~"<value>"when it starts withminto escape less parser treating it as a less function
v1.3.1
Added
- Icon: Added support for new prop
objectFit
Fixed
- Carousel: Any child CTA links ending up on new line
- Button with custom
Icon: Icon positioning and color fixes - Listbox: When Listbox with inner label is passed with empty value, it shows the Reach UI's dropdown arrow
v1.3
Fixed
- AlertBox: Fixed hook usage rule violation
- Carousel:
- using the
fulloption now haveoverflow:hiddenon them if they're not inside Bounded Content, to prevent the Carousel from creating horizontal scrollbars - Jitter effect when an
<a>tag is rendered inside<CarouselSlide>
- using the
- Hooks exported for the components:
Buttonbar,Collapsible,Select,ModalDialogandTabs. - Link: When
toprop is provided and none of the local attributesas/component/renderor the SwanProvider's propglobalLinkComponentis set, the href's computed value will be(href || to) - Listbox:
useListboxContexthook which was incorrectly exported in v1.2 - Selection Set: missing
roleattribute restored
Added
- Typography: New values
xm2,xm1,x,x1,x2,x3,x4,x5,x6for fontSize prop(also includes new CSS tokens), corresponding to the new scale. Should not be used externally.
v1.2.3
Removed
- Typography textSize's prop usage warning
Fixed
- Carousel: "full" skin's prev and next arrows now have correct placement
- Standard Tile: Responsive Images within links will now show with correct dimensions
Added
- Codemod script
npx jscodeshift -- -t ./node_modules/@vp/swan/codemod-scripts/font-size-rollback-v1.2.2.ts ./src/**/*.(j|t)sx --parser=tsx
v1.2
Added
- Combobox: Exported reach-ui's contexts
useComboboxContextanduseComboboxOptionContext - Listbox: Exported reach-ui's context
useListboxContext
Updated
- Buttonbar: new variant
toolbarto support Buttonbars ofButtons or of mixed types - Color: new visuals for
loading-shimmerbackground - Link: new
widthprop, which accepts valuefull-widthto make the link full-width - Modal Dialog: component no longer transitions if the user has "prefers reduced motion" on
- Thumbnails Hero: max-height set to 75vh
Fixed
- Aspect Ratio and Responsive Image: underlying tag is now
spaninstead ofdiv, so that it creates proper HTML when used inside abuttonetc. - Background color: semantic holiday colors are now available in the marketing arrays
- Button:
widthprop with a value offull-widthnow works onunstyledButtons - Buttonbar: component outputs now correct
roleattribute, based on thevariantprop - Color Swatches: crossout stroke colors are now correct in both light and dark mode
- Standard Tile: for "product" and "gallery" skins, the name, price, and links are now visible when in dark mode
v1.1.1
Fixed
- Buttonbar,
PopoverCloser,PopoverContent,PopoverLauncher,TabContent: necessary accessibility attributes not being applied.
v1.1
Added
- Background color: new colors added for holiday support:
holiday-beige-1,holiday-green-1,holiday-green-2,holiday-red-1,holiday-red-2 - Core prop
fontFamily - New font family addition for holiday:
Tiempos - Button
- Added
linkskin
- Added
- Card
- skin
linkfor shadow effect when using with covering link
- skin
- Carousel
Carouselcomponent accepts accessible text props for the previous, next and dot buttons viz.accessibleTextForPrevious,accessibleTextForNextandaccessibleTextForDotsrespectively.- Disabled arrow buttons are now better styled
- Finite Carousel: This is a design change. When you are at an end slide, the arrow (prev/next) buttons will now be always visible, but in a disabled state. This is to keep keyboard focus in place when the user reaches the first or last slide.
- Color Swatches:
- accessible text is now visible on hover and focus
- Color swatch: updated border color from grey-300 to grey-600 in light mode
- Promo Bar
- skin
inversefor white text on black background.
- skin
- Standard Tile:
- new
StandardTileSeparatelyClickableContentssub-component added, to allow a second Link to go to somewhere other than the target of the tile's "covering" Link
- new
- ThumbnailsHero component accepts accessible text props for the dot buttons viz.
accessibleTextForDots.
Updated
- Button:
- Updated the
ClearAllButtonfocus state to provide better color contrast. - Updated
Buttonfocus state behavior. - Updated types to use
buttononly (removedaandinput). For using it as a link, userenderprop instead.
- Updated the
- Callout:
skin'holiday' color to semantic-holiday-red-2variant'inverse' default background set to black
- Carousel:
- Active dot look and feel enhanced, so users can identify it not just by color, but by size as well
- Focused dot look and feel enhanced
- Combobox:
ComboboxOptionhighlighted state
- Listbox:
- Accessibility improvements:
- Incorrect ARIA attributes and roles for the components
- Accessing the option via keyboard will scroll the container accordingly, to keep the focused option in view
- Tabbing an open listbox will close the listbox and set the focus to the listbox button
- Selected option will be in view and focus when listbox is opened
- Listbox option focus, hover and selected behavior design
- Accessibility improvements:
- Promo Bar
skin'holiday' color to semantic-holiday-red-2
- Selection Set:
- focus behavior
- Range: Updated visuals to distinctly show progress area.
- Card,
IconTileSet,StandardHero,StandardTile,Button,SecondaryTile- Types to include the base element only. Additional types for link (
atag) has been removed from types. - For using props like
hrefwithas="a", types will give errors. - For better SEO, use
Linkwithin heading of these component withcoveringprops. (others:removeLinkStyles)
- Types to include the base element only. Additional types for link (
Fixed
- Core prop
fontSizenot respecting string values - Breadcrumbs: hyperlinks for the current page don't get text underline; focus indicator is no longer clipped top/bottom
- RatingsStars: when using "monochromatic" skin, placing darkMode directly on the RatingsStars now uses correct colors
- Carousel:
- Inactive slides will not receive focus when tabbing, compared to previous and hence avoid burdening with extra TAB stops and keyboard users can identify their position better on the page.
skinpromo-bar having focusable border and shadow around the entire wrapper
- Listbox:
- Incorrect ARIA attributes and roles for the components
- TextInput :
sizemini for the input variants floating label and button beside - ThumbnailsHero's CarouselSlide(thumbnail) is now keyboard accessible
Removed
- Typography component adding class
swan-font-weight-normalby default
v1.0.2
Added
- Entire dist-pkg artifacts exported in the package. The reason for doing so is to expose tokenized SCSS tokens of all kinds (literal, semantic, component level, etc.) to the users. This way users can import the SCSS tokens specific to a namespace and also won't directly refer to the literal value (which is the case when they import tokens/tokens.scss).
v1.0.1
Fixed
- Link
skincta: Arrow icons size and alignment
What's new in 1.0?
1. Design Changes
For the initial SWAN release, visual changes from Visage are (deliberately) very minor. During the transition, we don't want end users to easily notice which pages are on Visage and which have upgraded to SWAN, so the two design systems are 99% visually the same. This will give teams time to make the transition and not feel that they have to make a quick, rushed update in order to keep their pages from looking outdated.
Vista has plans to do brand updating in the future, but those will be part of a future SWAN release, not part of SWAN 1.0.
Notable exceptions are:
1.1 Screen sizes
To support user experiences for large monitors, which are increasingly common, we've added a new screen size to our responsive system. In addition to the Large screen size (1440+), there is also now an Extra-Large size at 1920+. This also means that page content will no longer max out at 1440 pixels wide.
If your page contains something that's specific to Large screens (such as a Lg grid column width, or a media query inside your page's stylesheet that targets Large screen), you are likely going to want to apply that same something to Extra-Large screens as well. For instance, if your page is using the Grid to create a zone that's 3 grid columns wide on Large screens, specifying spanLg={3}, then you are likely going to want to change that so that it's spanLg={3} spanXl={3} instead.
1.2 Bounded content & page width
In keeping with the screen size changes (above), the Bounded Content component that wraps most page content now has a maximum width of 1920px instead of 1440px.
1.3 Font weights
Vista has been undergoing a brand change with typography; the new vista.com website uses only two font weights, whereas Visage had three.
Accordingly, SWAN has only two weights. The larger headings and text sizes in Visage used a hefty font-weight; in SWAN, these headings and text sizes will still be bold, but not as heavy as they were in Visage. This change is deliberate.
1.4 Updated primary text color
Previously in Visage, we used pure black color for the text. In SWAN, we have updated primary text color to a little lighter tone(black at 90% opacity). This is in consideration of pure black text being an eye strain for readers.
1.5 Introducing new core colors
Replaced semantic/descriptive names with number value names.
2. Features new to SWAN
2.1 Convenience components
Convenience elements provide a wrapper component for many commonly used HTML tags (like p, h1-h6, img, section, select and span), outputting the appropriate SWAN component. These convenience components follow SWAN standards and were built for extensibility for future standards. This helps avoids an increasing number of components, and at the same time provides a core component which can be configured to provide the functionality we want.
For example, if you want to render an image as a progressive or a responsive image, you don't need to use the specific component ProgressiveImage or ResponsiveImage. Instead, you can simply use Img with a variant prop that indicates either progressive or responsive.
2.2 Icon component
We have introduced a new Icon component which provides more flexibility, and usability and has a greater stock of icons, which has been a long pending request from devs since Visage provided a very small set of icons. We have also deprecated ControlIcon in favour of this.
2.3 Core prop updates
- BaseProps type renamed to
SwanStyleProps - swanStyle prop added
- textAlign prop added
- textAllCaps prop added
- textColor prop added
- fontWeight prop added
- fontSize prop added
- display prop added
- lightMode prop added
- bgc alias added corresponding to
backgroundColorand both of them now support responsive styling - bgShort alias added corresponding to
backgroundShortand both of them now support responsive styling - srOnly alias added corresponding to
visuallyHiddenand both of them now support responsive styling
We have introduced a lot of new core props that are very commonly used across each component and added some aliases to the existing props having a long name or the terms which are very frequently used in web technologies.
The most noticeable prop above is fontSize, which uses a new typography scale and we encourage using this over Typography's textSize prop. Do refer to the Typography's Size section before using this.
Details of all the core props can be found under Utilities page
2.4 Gatsby Head API compatibility
From v4.19.0, Gatsby has added support for the Head API, which includes a built-in Head export that allows you to add elements to the document head of your pages. SWAN can be used with both less than 4.19.0 and >=4.19.0.
2.5 Strict type checks
SWAN 1.0 adds strict and runtime type checking for components and their props so that things are handled beforehand.
2.7 Refactored and reduced CSS tokens and class names
One of the big priorities for SWAN was to make it interoperable with any of the other libraries or design systems that a Vista property might be using. Therefore, we needed to defensively namespace all our CSS classes, to ensure unique names for the SWAN components.
- All our class names have a
swan-prefix - All the CSS tokens are prefixed with a
--swan-prefix - CSS tokens follow particular naming criteria: [system-name]-[component-name]-[property-name]-[state-name]-[breakpoint-name]
- CSS tokens in SWAN have been drastically reduced compared to its predecessor Visage, which will make things easier and provide a performance upscale (though very small) as well.