@royaloperahouse/harmonic 1.0.6-a → 1.0.6-c

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/CHANGELOG.md +27 -3
  2. package/dist/components/atoms/Dropdown/Dropdown.d.ts +1 -1
  3. package/dist/components/atoms/Tab/Tab.d.ts +1 -1
  4. package/dist/components/index.d.ts +2 -2
  5. package/dist/components/molecules/CustomStrategyTabsFilter/CustomStrategyTabsFilter.d.ts +70 -0
  6. package/dist/components/molecules/CustomStrategyTabsFilter/index.d.ts +2 -0
  7. package/dist/components/molecules/CustomStrategyTabsFilter/styled.d.ts +18 -0
  8. package/dist/components/molecules/PageHeading/PageHeading.style.d.ts +3 -2
  9. package/dist/components/molecules/PeopleListing/CreditListing/CreditListing.d.ts +1 -1
  10. package/dist/components/molecules/SkipToMain/SkipToMain.style.d.ts +1 -1
  11. package/dist/components/molecules/index.d.ts +2 -1
  12. package/dist/components/organisms/Carousels/Carousel/Carousel.d.ts +1 -3
  13. package/dist/components/organisms/Carousels/HighlightsCarousel/HighlightsCarousel.d.ts +1 -3
  14. package/dist/harmonic.cjs.development.css +319 -0
  15. package/dist/harmonic.cjs.development.js +497 -292
  16. package/dist/harmonic.cjs.development.js.map +1 -1
  17. package/dist/harmonic.cjs.production.min.js +1 -1
  18. package/dist/harmonic.cjs.production.min.js.map +1 -1
  19. package/dist/harmonic.esm.js +508 -301
  20. package/dist/harmonic.esm.js.map +1 -1
  21. package/dist/index.d.ts +3 -3
  22. package/dist/styles/HarmonicThemeProvider/HarmonicThemeProvider.d.ts +1 -0
  23. package/dist/types/carousel.d.ts +24 -1
  24. package/dist/types/creditListing.d.ts +7 -6
  25. package/dist/types/index.d.ts +2 -2
  26. package/dist/types/modalWindow.d.ts +4 -0
  27. package/dist/types/types.d.ts +93 -2
  28. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,17 +1,41 @@
1
+ ## [1.0.5-e]
2
+ - PrimaryButton hover only for device detected hover functionality
3
+
4
+
5
+ ## [1.0.5-c]
6
+ - Harmonic :
7
+ - Added new CustomStrategy filter
8
+ - Fixed alignment between title and sponsor logo upon Header
9
+ - extended HighlightsCarousel to change infinit from false to true
10
+
11
+ ## [Proposed: 1.0.5]
12
+ - CastFilter: prevent duplicate screen reader announcements for actor images and ensure tapping an actor image ring toggles selection.
13
+
14
+ ## [Proposed: 1.0.4]
15
+
1
16
  ## [1.0.4]
2
17
  - Castfilter: fix NDVA issues
3
18
 
4
19
  ## [1.0.3]
5
20
  - Carousel title realignment following font change
6
21
 
7
- ## [1.0.2]
8
- - AnchorTabBar: fix focused element
22
+ ## [Proposed: 1.0.2]
23
+ - CastFilter: fix VoiceOver selection semantics and option activation (desktop/iOS).
24
+ - CastFilter: add stable id-based selection support (`selectedIds`, `onSelectId`, `onApplyIds`) with backward compatibility for legacy index-based API.
25
+ - ModalWindow: add `closeButtonAriaLabel` and set close icon `aria-hidden="true"`
26
+
27
+ ## [Proposed: 1.0.1]
28
+ - Accessibility fixes to CastFilter component
29
+
30
+ ## [0.19.3]
31
+ - Carousel title realignment following font change
32
+
9
33
 
10
34
  ## [1.0.1]
11
35
  - Carousel: fix first click
12
36
 
13
37
  ## [1.0.0]
14
- Addressed some tech debt:
38
+ Addressed some tech debt:
15
39
  - all components are now exported for consumption from top-level public API export.
16
40
  - Removed Radio, RadioGroup and Select components.
17
41
  - cleaned up import/export structure of components
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import { IDropdownProps } from '../../../types/types';
3
- declare const Dropdown: ({ title, titleLink, selected, options, onChange, iconName, isMobileBehaviour, withOptionsInMobile, withIcon, className, role, ariaLabel, trimTabText, }: IDropdownProps) => React.JSX.Element;
3
+ declare const Dropdown: ({ title, titleLink, selected, options, onChange, iconName, isMobileBehaviour, withOptionsInMobile, withIcon, className, role, ariaLabel, tabLinkId, trimTabText, }: IDropdownProps) => React.JSX.Element;
4
4
  export default Dropdown;
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import { ITabProps } from '../../../types/types';
3
- declare const Tab: ({ title, titleLink, onClick, onFocus, onReset, selected, iconName, iconDirection, withIcon, withTextInMobile, trimText, className, role, ariaLabel, color, dataTestId, isOpen, }: ITabProps) => React.JSX.Element;
3
+ declare const Tab: ({ title, titleLink, onClick, onFocus, onReset, selected, iconName, iconDirection, withIcon, withTextInMobile, trimText, className, role, ariaLabel, tabLinkId, color, dataTestId, isOpen, }: ITabProps) => React.JSX.Element;
4
4
  export default Tab;
@@ -1,8 +1,8 @@
1
1
  import { DisplayHeader, HarmonicHeader, HarmonicSubtitle, BodyCopyHarmonic, HarmonicOverline, ButtonText, Caption, NavigationText } from './Typography';
2
2
  import { Account, AltHeader, BodyText, CinemaBadge, ControlledDropdown, Dropdown, Grid, GridItem, Header, Icon, ImageAspectRatioWrapper, Logo, Overline, Person, PrimaryButton, Progress, Radio2, RotatorButtons, Search, SecondaryButton, SecondaryLogo, TertiaryButton, SectionSplitter, SocialLinks, SponsorLogo, Sponsorship, Stepper, StreamBadge, Subtitle, Tab, TabLink, TextLogo, TextArea, TextField, TextFieldLegacy, TextLink, Tickbox, Tickbox2, Timer, TypeTags, VideoControls } from './atoms';
3
3
  import { AnchorTabBar, Footer, Navigation, StickyBar, TitleWithCTA, UpsellSection, Carousel, MinimalCarousel, HighlightsCarousel, HighlightsCarouselCinema, HighlightsCarouselCore, HighlightsCarouselStream, ModalWindow } from './organisms';
4
- import { Accordion, Accordions, AnchorBar, AnnouncementBanner, AuxiliaryNav, Basket, BodyContent, Card, Cards, CastFilter, ContactNewsletter, ContactCard, ContentSummary, CreditListing, Editorial, HotFilters, ImageWithCaption, Information, MiniCard, NavTop, PersonDetails, PersonCard, PageHeading, PageHeadingCompact, PageHeadingImpact, PageHeadingPanel, PageHeadingPromo, PageHeadingHighlight, PageHeadingHighlightCarousel, PasswordStrength, Pagination, Paywall, PeopleListing, PolicyLinks, PromoWithTags, PromoWithTitle, Quote, RadioGroup2, ReadMore, StatusBanner, SearchBar, SectionTitle, Select2, Select2Async, SignUpForm, Swipe, SwipeRef, Table, Tabs, UpsellCard, UpsellCards, VideoWithControls, SkipToMain } from './molecules';
4
+ import { Accordion, Accordions, AnchorBar, AnnouncementBanner, AuxiliaryNav, Basket, BodyContent, Card, Cards, CastFilter, ContactNewsletter, ContactCard, ContentSummary, CreditListing, Editorial, HotFilters, ImageWithCaption, Information, MiniCard, CustomStrategyTabsFilter, NavTop, PersonDetails, PersonCard, PageHeading, PageHeadingCompact, PageHeadingImpact, PageHeadingPanel, PageHeadingPromo, PageHeadingHighlight, PageHeadingHighlightCarousel, PasswordStrength, Pagination, Paywall, PeopleListing, PolicyLinks, PromoWithTags, PromoWithTitle, Quote, RadioGroup2, ReadMore, StatusBanner, SearchBar, SectionTitle, Select2, Select2Async, SignUpForm, Swipe, SwipeRef, Table, Tabs, UpsellCard, UpsellCards, VideoWithControls, SkipToMain } from './molecules';
5
5
  import ThemeProvider from '../styles/ThemeProvider';
6
6
  import GlobalStyles from '../styles/GlobalStyles';
7
7
  export { DisplayHeader, HarmonicHeader, HarmonicSubtitle, BodyCopyHarmonic, HarmonicOverline, ButtonText, Caption, NavigationText, SkipToMain, };
8
- export { Accordion, Accordions, Account, AnchorBar, AnnouncementBanner, AltHeader, AnchorTabBar, AuxiliaryNav, Basket, BodyContent, BodyText, Card, Cards, Carousel, CastFilter, ContactNewsletter, ContactCard, ContentSummary, CinemaBadge, ControlledDropdown, Dropdown, CreditListing, Editorial, Footer, GlobalStyles, Grid, GridItem, HighlightsCarousel, HighlightsCarouselCinema, HighlightsCarouselCore, HighlightsCarouselStream, Header, HotFilters, Icon, ImageAspectRatioWrapper, ImageWithCaption, Information, Logo, MinimalCarousel, MiniCard, ModalWindow, NavTop, Navigation, Overline, Person, PersonCard, PersonDetails, PageHeading, PageHeadingCompact, PageHeadingImpact, PageHeadingPanel, PageHeadingHighlight, PageHeadingPromo, PageHeadingHighlightCarousel, Pagination, PasswordStrength, Paywall, PeopleListing, PolicyLinks, PrimaryButton, Progress, PromoWithTags, PromoWithTitle, Quote, Radio2, RadioGroup2, ReadMore, RotatorButtons, Search, SecondaryButton, SecondaryLogo, SocialLinks, StatusBanner, SearchBar, SectionTitle, Select2, Select2Async, SponsorLogo, SignUpForm, Swipe, SwipeRef, Sponsorship, Stepper, StickyBar, StreamBadge, Subtitle, TertiaryButton, ThemeProvider, TitleWithCTA, SectionSplitter, Tab, TabLink, Table, Tabs, TextArea, TextField, TextFieldLegacy, TextLink, TextLogo, Tickbox, Tickbox2, Timer, TypeTags, UpsellCard, UpsellCards, UpsellSection, VideoControls, VideoWithControls, };
8
+ export { Accordion, Accordions, Account, AnchorBar, AnnouncementBanner, AltHeader, AnchorTabBar, AuxiliaryNav, Basket, BodyContent, BodyText, Card, Cards, Carousel, CastFilter, ContactNewsletter, ContactCard, ContentSummary, CinemaBadge, ControlledDropdown, CustomStrategyTabsFilter, Dropdown, CreditListing, Editorial, Footer, GlobalStyles, Grid, GridItem, HighlightsCarousel, HighlightsCarouselCinema, HighlightsCarouselCore, HighlightsCarouselStream, Header, HotFilters, Icon, ImageAspectRatioWrapper, ImageWithCaption, Information, Logo, MinimalCarousel, MiniCard, ModalWindow, NavTop, Navigation, Overline, Person, PersonCard, PersonDetails, PageHeading, PageHeadingCompact, PageHeadingImpact, PageHeadingPanel, PageHeadingHighlight, PageHeadingPromo, PageHeadingHighlightCarousel, Pagination, PasswordStrength, Paywall, PeopleListing, PolicyLinks, PrimaryButton, Progress, PromoWithTags, PromoWithTitle, Quote, Radio2, RadioGroup2, ReadMore, RotatorButtons, Search, SecondaryButton, SecondaryLogo, SocialLinks, StatusBanner, SearchBar, SectionTitle, Select2, Select2Async, SponsorLogo, SignUpForm, Swipe, SwipeRef, Sponsorship, Stepper, StickyBar, StreamBadge, Subtitle, TertiaryButton, ThemeProvider, TitleWithCTA, SectionSplitter, Tab, TabLink, Table, Tabs, TextArea, TextField, TextFieldLegacy, TextLink, TextLogo, Tickbox, Tickbox2, Timer, TypeTags, UpsellCard, UpsellCards, UpsellSection, VideoControls, VideoWithControls, };
@@ -0,0 +1,70 @@
1
+ import React from 'react';
2
+ import { TCustomStrategyTabsFilterProps } from '../../../types';
3
+ /**
4
+ * A horizontally scrollable tabs filter component used to display
5
+ * selectable strategy tabs with configurable styling and selection behavior.
6
+ *
7
+ * Features:
8
+ * - Supports both single-select and multi-select tab scenarios
9
+ * - Displays an optional icon on selected tabs
10
+ * - Allows customization of colors and selected icon through `customViewConfig`
11
+ * - Applies default styling when configuration values are omitted
12
+ * - Emits the clicked tab item through `onClick`
13
+ *
14
+ * @component
15
+ *
16
+ * @param {TCustomStrategyTabsFilterProps['items']} items
17
+ * Collection of tabs to render.
18
+ *
19
+ * @param {string} [className]
20
+ * Optional CSS class name applied to the root scroll container.
21
+ *
22
+ * @param {<T>(item: TCustomStrategyTabsFilterProps['items'][number]) => T} onClick
23
+ * Called when a tab is clicked. Receives the full clicked item (including
24
+ * `allowedSelectedWith`). The parent is responsible for computing the next
25
+ * `items` array and passing it back down with updated `isSelected` values.
26
+ * as long as no return statement `type` is inferred automatically as void
27
+ *
28
+ * @param [customViewConfig]
29
+ * Optional visual configuration used to customize:
30
+ * - selected tab icon
31
+ * - selected/unselected background colors
32
+ * - selected/unselected text colors
33
+ * - hover color
34
+ * - pressed color
35
+ *
36
+ * Any omitted configuration values will fall back to the component defaults.
37
+ *
38
+ * @returns { React.JSX.Element}
39
+ *
40
+ * @example
41
+ * ```tsx
42
+ * * @example Controlled selection with custom rules
43
+ * * The component does not manage selection itself. The parent owns `items` (including
44
+ * * `isSelected`) and updates that state in `onClick`. Use `allowedSelectedWith` on each
45
+ * * item to describe which other tab IDs may stay selected when that tab is chosen.
46
+ * *
47
+ * * ```tsx
48
+ * * const [items, setItems] = useState<TCustomStrategyTabsFilterItem[]>([
49
+ * * { id: 'all', text: 'All events', isSelected: true, allowedSelectedWith: [] },
50
+ * * { id: 'opera', text: 'Opera', isSelected: false, allowedSelectedWith: ['ballet'] },
51
+ * * { id: 'ballet', text: 'Ballet', isSelected: false, allowedSelectedWith: ['opera'] },
52
+ * * ]);
53
+ * *
54
+ * * const handleClick = (clickedItem: TCustomStrategyTabsFilterItem) => {
55
+ * * setItems((current) =>
56
+ * * current.map((item) => {
57
+ * * if (item.id === clickedItem.id) {
58
+ * * return { ...item, isSelected: !item.isSelected };
59
+ * * }
60
+ * *
61
+ * * const mayStaySelected = clickedItem.allowedSelectedWith?.includes(item.id);
62
+ * * return { ...item, isSelected: mayStaySelected ? !item.isSelected : false };
63
+ * * })
64
+ * * );
65
+ * * };
66
+ * *
67
+ * * return <CustomStrategyTabsFilter items={items} onClick={handleClick} />;
68
+ */
69
+ declare const CustomStrategyTabsFilter: ({ items, className, onClick, customViewConfig, }: TCustomStrategyTabsFilterProps) => React.JSX.Element;
70
+ export default CustomStrategyTabsFilter;
@@ -0,0 +1,2 @@
1
+ import CustomStrategyTabsFilter from './CustomStrategyTabsFilter';
2
+ export default CustomStrategyTabsFilter;
@@ -0,0 +1,18 @@
1
+ export declare const ScrollContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
2
+ export declare const TabsContainerWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
3
+ export declare const StyledTab: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<{
4
+ children: import("react").ReactNode;
5
+ onClick?: ((event: import("react").MouseEvent<HTMLAnchorElement, MouseEvent>) => void) | undefined;
6
+ className?: string | undefined;
7
+ } & {
8
+ iconName?: "AddToMyList" | "Arrow" | "ArrowPagination" | "AudioDescription" | "Back10" | "BalletAndDance" | "Basket" | "BasketFull" | "BritishSignLanguage" | "BookTickets" | "CarouselArrow" | "ChooseDates" | "Cinema" | "Clips" | "Clock" | "Close" | "Captioned" | "ClosedCaptions" | "Confirm" | "CreditCard" | "Delete" | "Detract" | "DropdownArrow" | "EditMyList" | "Email" | "Expand" | "Expand12px" | "ExternalLink" | "Facebook" | "FamilyFriendly" | "Favourite" | "FavouriteFull" | "Filter" | "FindAScreening" | "Forward10" | "FullScreen" | "GridView" | "Home" | "Info" | "Instagram" | "LastPageArrow" | "List" | "ListView" | "LiveStream" | "Location" | "Menu" | "Minimise" | "Muted" | "NavLogoMobile" | "NavLogoNoCrest" | "NavLogoWithCrest" | "OnMyList" | "OpenCaptions" | "OperaAndMusic" | "Pause" | "PDF" | "Phone" | "Play" | "Print" | "Refresh" | "RelaxedPerformance" | "Reminder" | "Remove" | "Remove12px" | "Restart" | "Search" | "Seat" | "Secure" | "Settings" | "Shift" | "Space" | "Standing" | "Star" | "Subscribe" | "Subtitles" | "Tick" | "Tickets" | "Tiktok" | "TouchTour" | "Trailer" | "Twitter" | "User" | "UserSignedIn" | "Volume" | "Watch" | "Wheelchair" | "X" | "Youtube" | undefined;
9
+ iconDirection?: "left" | "right" | "up" | "down" | "reverse" | undefined;
10
+ iconClassName?: string | undefined;
11
+ } & import("react").AnchorHTMLAttributes<HTMLAnchorElement> & Pick<{
12
+ textColor?: "primary" | "primary-red" | "primary-black" | "base-white" | "base-black" | "base-dark-grey" | "base-mid-grey" | "base-light-grey" | "base-transparent" | "state-error" | "state-medium" | "state-good" | "state-focused" | "state-disabled" | "rbo-red-hovered" | "rbo-red-pressed" | "rbo-black-hovered" | "rbo-black-pressed" | "black-hovered" | "black-pressed" | "white-hovered" | "white-pressed" | "secondary-yellow" | "secondary-pink" | "secondary-orange" | "secondary-blue" | undefined;
13
+ backgroundColor?: "primary" | "primary-red" | "primary-black" | "base-white" | "base-black" | "base-dark-grey" | "base-mid-grey" | "base-light-grey" | "base-transparent" | "state-error" | "state-medium" | "state-good" | "state-focused" | "state-disabled" | "rbo-red-hovered" | "rbo-red-pressed" | "rbo-black-hovered" | "rbo-black-pressed" | "black-hovered" | "black-pressed" | "white-hovered" | "white-pressed" | "secondary-yellow" | "secondary-pink" | "secondary-orange" | "secondary-blue" | undefined;
14
+ borderColor?: "primary" | "primary-red" | "primary-black" | "base-white" | "base-black" | "base-dark-grey" | "base-mid-grey" | "base-light-grey" | "base-transparent" | "state-error" | "state-medium" | "state-good" | "state-focused" | "state-disabled" | "rbo-red-hovered" | "rbo-red-pressed" | "rbo-black-hovered" | "rbo-black-pressed" | "black-hovered" | "black-pressed" | "white-hovered" | "white-pressed" | "secondary-yellow" | "secondary-pink" | "secondary-orange" | "secondary-blue" | undefined;
15
+ hoveredColor?: "primary" | "primary-red" | "primary-black" | "base-white" | "base-black" | "base-dark-grey" | "base-mid-grey" | "base-light-grey" | "base-transparent" | "state-error" | "state-medium" | "state-good" | "state-focused" | "state-disabled" | "rbo-red-hovered" | "rbo-red-pressed" | "rbo-black-hovered" | "rbo-black-pressed" | "black-hovered" | "black-pressed" | "white-hovered" | "white-pressed" | "secondary-yellow" | "secondary-pink" | "secondary-orange" | "secondary-blue" | undefined;
16
+ pressedColor?: "primary" | "primary-red" | "primary-black" | "base-white" | "base-black" | "base-dark-grey" | "base-mid-grey" | "base-light-grey" | "base-transparent" | "state-error" | "state-medium" | "state-good" | "state-focused" | "state-disabled" | "rbo-red-hovered" | "rbo-red-pressed" | "rbo-black-hovered" | "rbo-black-pressed" | "black-hovered" | "black-pressed" | "white-hovered" | "white-pressed" | "secondary-yellow" | "secondary-pink" | "secondary-orange" | "secondary-blue" | undefined;
17
+ disabled?: boolean | undefined;
18
+ }, "textColor" | "backgroundColor" | "hoveredColor" | "pressedColor" | "disabled"> & import("react").RefAttributes<HTMLAnchorElement>>, any, {}, never>;
@@ -1,11 +1,12 @@
1
1
  export interface IPageHeadingWrapperProps {
2
2
  isPageHeadingWithoutTitle?: boolean;
3
+ isMultipleRow?: boolean;
3
4
  }
4
5
  export declare const PageHeadingWrapper: import("styled-components").StyledComponent<"div", any, IPageHeadingWrapperProps, never>;
5
- export declare const PageHeadingGrid: import("styled-components").StyledComponent<"div", any, {}, never>;
6
+ export declare const PageHeadingGrid: import("styled-components").StyledComponent<"div", any, IPageHeadingWrapperProps, never>;
6
7
  export declare const BadgeWrapper: import("styled-components").StyledComponent<"div", any, IPageHeadingWrapperProps, never>;
7
8
  export declare const TitleWrapper: import("styled-components").StyledComponent<"div", any, IPageHeadingWrapperProps, never>;
8
9
  export declare const ChildrenWrapper: import("styled-components").StyledComponent<"div", any, IPageHeadingWrapperProps, never>;
9
10
  export declare const TextWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
10
11
  export declare const LogoWrapper: import("styled-components").StyledComponent<"div", any, IPageHeadingWrapperProps, never>;
11
- export declare const ButtonWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
12
+ export declare const ButtonWrapper: import("styled-components").StyledComponent<"div", any, IPageHeadingWrapperProps, never>;
@@ -3,5 +3,5 @@ import { ICreditListing } from '../../../../types';
3
3
  export declare const DEFAULT_COLUMN_COUNT = 4;
4
4
  export declare const DEFAULT_LARGE_COLUMN_SPAN = 2;
5
5
  export declare const DEFAULT_CHARACTER_THRESHOLD = 180;
6
- declare const CreditListing: ({ roles, columnCount, expandLargeEntries, largeColumnSpan, characterThreshold, }: ICreditListing) => React.JSX.Element;
6
+ declare const CreditListing: ({ roles, columnCount, expandLargeEntries, largeColumnSpan, characterThreshold, className, }: ICreditListing) => React.JSX.Element;
7
7
  export default CreditListing;
@@ -1,6 +1,6 @@
1
1
  interface FocusableTabProps {
2
2
  hide?: boolean;
3
3
  }
4
- export declare const FocusableTab: import("styled-components").StyledComponent<({ title, titleLink, onClick, onFocus, onReset, selected, iconName, iconDirection, withIcon, withTextInMobile, trimText, className, role, ariaLabel, color, dataTestId, isOpen, }: import("../../../types/types").ITabProps) => import("react").JSX.Element, any, FocusableTabProps, never>;
4
+ export declare const FocusableTab: import("styled-components").StyledComponent<({ title, titleLink, onClick, onFocus, onReset, selected, iconName, iconDirection, withIcon, withTextInMobile, trimText, className, role, ariaLabel, tabLinkId, color, dataTestId, isOpen, }: import("../../../types/types").ITabProps) => import("react").JSX.Element, any, FocusableTabProps, never>;
5
5
  export declare const HiddenBlock: import("styled-components").StyledComponent<"div", any, {}, never>;
6
6
  export {};
@@ -11,6 +11,7 @@ import ContactNewsletter from './ContactNewsletter';
11
11
  import ContentSummary from './ContentSummary';
12
12
  import Editorial from './Editorial';
13
13
  import HotFilters from './HotFilters';
14
+ import CustomStrategyTabsFilter from './CustomStrategyTabsFilter';
14
15
  import Information from './Information';
15
16
  import { PageHeading, PageHeadingImpact, PageHeadingPanel, PageHeadingCompact, PageHeadingPromo, PageHeadingHighlight, PageHeadingHighlightCarousel } from './PageHeading';
16
17
  import Pagination from './Pagination';
@@ -43,4 +44,4 @@ import AnchorBar from './AnchorBar';
43
44
  import SkipToMain from './SkipToMain';
44
45
  import Paywall from './Paywall';
45
46
  import UpsellCards from './UpsellCards';
46
- export { Accordion, Accordions, AnchorBar, AnnouncementBanner, AuxiliaryNav, Basket, BodyContent, Card, Cards, CastFilter, ContactCard, ContactNewsletter, ContentSummary, CreditListing, Editorial, HotFilters, ImageWithCaption, Information, MiniCard, NavTop, PersonCard, PersonDetails, PageHeading, PageHeadingCompact, PageHeadingImpact, PageHeadingHighlight, PageHeadingPanel, PageHeadingPromo, PageHeadingHighlightCarousel, PasswordStrength, Pagination, Paywall, PeopleListing, PolicyLinks, PromoWithTags, PromoWithTitle, Quote, RadioGroup2, ReadMore, StatusBanner, SectionTitle, SearchBar, Select2, Select2Async, SignUpForm, Swipe, SwipeRef, Tabs, Table, UpsellCard, UpsellCards, VideoWithControls, SkipToMain, };
47
+ export { Accordion, Accordions, AnchorBar, AnnouncementBanner, AuxiliaryNav, Basket, BodyContent, Card, Cards, CastFilter, ContactCard, ContactNewsletter, ContentSummary, CreditListing, CustomStrategyTabsFilter, Editorial, HotFilters, ImageWithCaption, Information, MiniCard, NavTop, PersonCard, PersonDetails, PageHeading, PageHeadingCompact, PageHeadingImpact, PageHeadingHighlight, PageHeadingPanel, PageHeadingPromo, PageHeadingHighlightCarousel, PasswordStrength, Pagination, Paywall, PeopleListing, PolicyLinks, PromoWithTags, PromoWithTitle, Quote, RadioGroup2, ReadMore, StatusBanner, SectionTitle, SearchBar, Select2, Select2Async, SignUpForm, Swipe, SwipeRef, Tabs, Table, UpsellCard, UpsellCards, VideoWithControls, SkipToMain, };
@@ -1,6 +1,4 @@
1
1
  import { FunctionComponent } from 'react';
2
2
  import { ICarouselProps } from '../../../../types/carousel';
3
- declare const Carousel: FunctionComponent<ICarouselProps & Partial<{
4
- titleFontFamily: 'Victor' | 'Grey' | undefined;
5
- }>>;
3
+ declare const Carousel: FunctionComponent<ICarouselProps>;
6
4
  export default Carousel;
@@ -1,6 +1,4 @@
1
1
  import { FunctionComponent } from 'react';
2
2
  import { IHighlightsCarouselProps } from '../../../../types/carousel';
3
- declare const HighlightsCarousel: FunctionComponent<IHighlightsCarouselProps & Partial<{
4
- titleFontFamily: 'Victor' | 'Grey' | undefined;
5
- }>>;
3
+ declare const HighlightsCarousel: FunctionComponent<IHighlightsCarouselProps>;
6
4
  export default HighlightsCarousel;
@@ -350,6 +350,325 @@
350
350
  font-display: swap;
351
351
  }
352
352
 
353
+ /* ~~~~~ General Styling Classes ~~~~~ */
354
+ .typography_color-primary__LOfDi {
355
+ color: var(--color-primary);
356
+ }
357
+
358
+ .typography_color-black__6MHRL {
359
+ color: var(--color-base-black);
360
+ }
361
+
362
+ .typography_color-white__PfW5s {
363
+ color: var(--color-base-white);
364
+ }
365
+
366
+ .typography_color-red__iPlbG {
367
+ color: var(--color-primary-red);
368
+ }
369
+
370
+ .typography_color-grey__GA1c2 {
371
+ color: var(--color-base-dark-grey);
372
+ }
373
+
374
+ .typography_color-inherit__RDd0Y {
375
+ color: inherit;
376
+ }
377
+
378
+ .typography_em__E6tX- {
379
+ font-style: italic;
380
+ }
381
+ /* ~~~ */
382
+
383
+ /* Display Headers */
384
+ .typography_display__-F3p4 {
385
+ margin: 0;
386
+ font-family: var(--font-family-sans);
387
+ line-height: 100%;
388
+
389
+ &.typography_large__uq0zC {
390
+ font-size: 96px;
391
+ font-weight: 700;
392
+ letter-spacing: -5px;
393
+ }
394
+
395
+ &.typography_small__wfQ0K {
396
+ font-size: 68px;
397
+ font-weight: 500;
398
+ letter-spacing: -3px;
399
+ }
400
+
401
+ /* Serif and Italic styles */
402
+ &.typography_serif__VSO38,
403
+ &.typography_em__E6tX- {
404
+ font-family: var(--font-family-serif);
405
+ font-weight: 500;
406
+ }
407
+
408
+ /* Serif and Italic adjustments */
409
+ &.typography_large__uq0zC.typography_serif__VSO38,
410
+ &.typography_large__uq0zC.typography_em__E6tX- {
411
+ letter-spacing: -3px;
412
+ }
413
+
414
+ &.typography_small__wfQ0K.typography_serif__VSO38,
415
+ &.typography_small__wfQ0K.typography_em__E6tX- {
416
+ letter-spacing: -2px;
417
+ }
418
+
419
+ @media (max-width: 699px) {
420
+ &.typography_large__uq0zC {
421
+ font-size: 38px;
422
+ letter-spacing: -1.5px;
423
+ }
424
+
425
+ &.typography_small__wfQ0K {
426
+ font-size: 32px;
427
+ letter-spacing: -1.5px;
428
+ }
429
+
430
+ &.typography_large__uq0zC.typography_serif__VSO38,
431
+ &.typography_large__uq0zC.typography_em__E6tX-,
432
+ &.typography_small__wfQ0K.typography_serif__VSO38,
433
+ &.typography_small__wfQ0K.typography_em__E6tX- {
434
+ letter-spacing: -0.5px;
435
+ }
436
+ }
437
+ }
438
+
439
+ /* Headers */
440
+ .typography_header__BexiD {
441
+ margin: 0;
442
+ font-family: var(--font-family-sans);
443
+ font-weight: 500;
444
+
445
+ &.typography_large__uq0zC {
446
+ font-size: 44px;
447
+ line-height: 48px;
448
+ letter-spacing: -1.5px;
449
+ }
450
+
451
+ &.typography_medium__K0uZD {
452
+ font-size: 34px;
453
+ line-height: 40px;
454
+ letter-spacing: -1px;
455
+ }
456
+
457
+ &.typography_small__wfQ0K {
458
+ font-size: 26px;
459
+ line-height: 32px;
460
+ letter-spacing: -0.5px;
461
+ }
462
+
463
+ /* Serif and Italic styles */
464
+ &.typography_serif__VSO38,
465
+ &.typography_em__E6tX- {
466
+ font-family: var(--font-family-serif);
467
+ }
468
+
469
+ /* Serif and Italic letter-spacing overrides */
470
+ &.typography_large__uq0zC.typography_serif__VSO38,
471
+ &.typography_large__uq0zC.typography_em__E6tX- {
472
+ letter-spacing: -0.5px;
473
+ }
474
+
475
+ &.typography_medium__K0uZD.typography_serif__VSO38,
476
+ &.typography_medium__K0uZD.typography_em__E6tX- {
477
+ letter-spacing: -0.5px;
478
+ }
479
+
480
+ &.typography_small__wfQ0K.typography_serif__VSO38,
481
+ &.typography_small__wfQ0K.typography_em__E6tX- {
482
+ letter-spacing: -0.5px;
483
+ }
484
+
485
+ @media (max-width: 699px) {
486
+ &.typography_large__uq0zC {
487
+ font-size: 28px;
488
+ line-height: 34px;
489
+ letter-spacing: -1.5px;
490
+ }
491
+
492
+ &.typography_medium__K0uZD {
493
+ font-size: 24px;
494
+ line-height: 28px;
495
+ letter-spacing: -1px;
496
+ }
497
+
498
+ &.typography_small__wfQ0K {
499
+ font-size: 20px;
500
+ line-height: 26px;
501
+ letter-spacing: -0.75px;
502
+ }
503
+
504
+ /* Mobile overrides for serif/italic letter-spacing */
505
+ &.typography_large__uq0zC.typography_serif__VSO38,
506
+ &.typography_large__uq0zC.typography_em__E6tX-,
507
+ &.typography_medium__K0uZD.typography_serif__VSO38,
508
+ &.typography_medium__K0uZD.typography_em__E6tX-,
509
+ &.typography_small__wfQ0K.typography_serif__VSO38,
510
+ &.typography_small__wfQ0K.typography_em__E6tX- {
511
+ letter-spacing: -0.5px;
512
+ }
513
+ }
514
+ }
515
+
516
+ /* Subtitle */
517
+ .typography_subtitle__aoFTV {
518
+ margin: 0;
519
+ font-family: var(--font-family-sans);
520
+ font-weight: 500;
521
+
522
+ &.typography_large__uq0zC {
523
+ font-size: 19px;
524
+ line-height: 26px;
525
+ letter-spacing: -0.5px;
526
+ }
527
+
528
+ &.typography_small__wfQ0K {
529
+ font-size: 17px;
530
+ line-height: 24px;
531
+ letter-spacing: -0.5px;
532
+ }
533
+
534
+ @media (max-width: 699px) {
535
+ &.typography_large__uq0zC {
536
+ font-size: 17px;
537
+ line-height: 24px;
538
+ letter-spacing: -0.5px;
539
+ }
540
+
541
+ &.typography_small__wfQ0K {
542
+ font-size: 14px;
543
+ line-height: 20px;
544
+ letter-spacing: -0.2px;
545
+ }
546
+ }
547
+ }
548
+
549
+ /* Body Copy */
550
+ .typography_bodycopy__vYtQ8 {
551
+ margin: 0;
552
+ font-family: var(--font-family-sans);
553
+ font-weight: 400;
554
+
555
+ &.typography_large__uq0zC {
556
+ font-size: 19px;
557
+ line-height: 26px;
558
+ letter-spacing: -0.5px;
559
+ }
560
+
561
+ &.typography_medium__K0uZD {
562
+ font-size: 17px;
563
+ line-height: 24px;
564
+ letter-spacing: -0.5px;
565
+ }
566
+
567
+ &.typography_small__wfQ0K {
568
+ font-size: 14px;
569
+ line-height: 20px;
570
+ letter-spacing: -0.5px;
571
+ }
572
+
573
+ @media (max-width: 699px) {
574
+ &.typography_large__uq0zC {
575
+ font-size: 17px;
576
+ line-height: 24px;
577
+ letter-spacing: -0.5px;
578
+ }
579
+
580
+ &.typography_medium__K0uZD {
581
+ font-size: 14px;
582
+ line-height: 20px;
583
+ letter-spacing: -0.2px;
584
+ }
585
+
586
+ &.typography_small__wfQ0K {
587
+ font-size: 11px;
588
+ line-height: 16px;
589
+ letter-spacing: -0.2px;
590
+ }
591
+ }
592
+ }
593
+
594
+ /* Overline */
595
+ .typography_overline__EnUK3 {
596
+ margin: 0;
597
+ font-family: var(--font-family-sans);
598
+ font-weight: 500;
599
+ text-transform: uppercase;
600
+
601
+ &.typography_large__uq0zC {
602
+ font-size: 14px;
603
+ line-height: 18px;
604
+ letter-spacing: 0.3px;
605
+ }
606
+
607
+ &.typography_small__wfQ0K {
608
+ font-size: 12px;
609
+ line-height: 14px;
610
+ letter-spacing: 0.2px;
611
+ }
612
+
613
+ @media (max-width: 699px) {
614
+ &.typography_large__uq0zC {
615
+ line-height: 17px;
616
+ letter-spacing: 0.3px; /* Added to ensure it stays */
617
+ }
618
+
619
+ &.typography_small__wfQ0K {
620
+ line-height: 14px;
621
+ letter-spacing: 0.3px;
622
+ }
623
+ }
624
+ }
625
+
626
+ /* Button Text */
627
+ .typography_buttontext__vcxNi {
628
+ margin: 0;
629
+ font-family: var(--font-family-sans);
630
+ font-size: 17px;
631
+ line-height: 20px;
632
+ letter-spacing: -0.5px;
633
+ font-weight: 400;
634
+
635
+ @media (max-width: 699px) {
636
+ font-weight: 500;
637
+ line-height: 17px;
638
+ }
639
+ }
640
+
641
+ /* Caption Text */
642
+ .typography_captiontext__91UFb {
643
+ margin: 0;
644
+ font-family: var(--font-family-sans);
645
+ font-weight: 400;
646
+ font-size: 17px;
647
+ line-height: 24px;
648
+ letter-spacing: -0.5px;
649
+
650
+ @media (max-width: 699px) {
651
+ font-size: 14px;
652
+ line-height: 20px;
653
+ letter-spacing: -0.2px;
654
+ }
655
+ }
656
+
657
+ /* Navigation Text */
658
+ .typography_navigationtext__YfGf7 {
659
+ margin: 0;
660
+ font-family: var(--font-family-sans);
661
+ font-size: 19px;
662
+ line-height: 19px;
663
+ letter-spacing: 0.4px;
664
+ font-weight: 500;
665
+
666
+ @media (max-width: 699px) {
667
+ font-size: 17px;
668
+ line-height: 17px;
669
+ }
670
+ }
671
+
353
672
  .core-theme-module_coreTheme__pWxYB {
354
673
  /* RBO Red */
355
674
  /* Primary Palette */