@royaloperahouse/harmonic 1.0.5-b → 1.0.5-d

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,9 +1,18 @@
1
+ ## [1.0.5-c]
2
+ - Harmonic :
3
+ - Added new CustomStrategy filter
4
+ - Fixed alignment between title and sponsor logo upon Header
5
+ - extended HighlightsCarousel to change infinit from false to true
6
+
1
7
  ## [Proposed: 1.0.5]
2
8
  - CastFilter: prevent duplicate screen reader announcements for actor images and ensure tapping an actor image ring toggles selection.
3
9
 
4
- ## [Proposed: 1.0.3]
10
+ ## [Proposed: 1.0.4]
5
11
  - Castfilter: fix NDVA issues
6
12
 
13
+ ## [1.0.3]
14
+ - Carousel title realignment following font change
15
+
7
16
  ## [Proposed: 1.0.2]
8
17
  - CastFilter: fix VoiceOver selection semantics and option activation (desktop/iOS).
9
18
  - CastFilter: add stable id-based selection support (`selectedIds`, `onSelectId`, `onApplyIds`) with backward compatibility for legacy index-based API.
@@ -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,77 @@
1
+ import { FunctionComponent } 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
+ * Generic callback invoked when a tab is clicked.
24
+ *
25
+ * @param [customViewConfig]
26
+ * Optional visual configuration used to customize:
27
+ * - selected tab icon
28
+ * - selected/unselected background colors
29
+ * - selected/unselected text colors
30
+ * - hover color
31
+ * - pressed color
32
+ *
33
+ * Any omitted configuration values will fall back to the component defaults.
34
+ *
35
+ * @returns { React.JSX.Element}
36
+ *
37
+ * @example
38
+ * ```tsx
39
+ * <CustomStrategyTabsFilter
40
+ * items={[
41
+ * {
42
+ * id: 'all',
43
+ * text: 'All',
44
+ * isSelected: true,
45
+ * allowedSelectedWith: [],
46
+ * },
47
+ * {
48
+ * id: 'open',
49
+ * text: 'Open',
50
+ * isSelected: false,
51
+ * },
52
+ * ]}
53
+ * onClick={(item) => console.log(item)}
54
+ * />
55
+ * ```
56
+ *
57
+ * @example
58
+ * ```tsx
59
+ * <CustomStrategyTabsFilter
60
+ * items={items}
61
+ * onClick={handleFilterClick}
62
+ * customViewConfig={{
63
+ * selectIcon: 'Check',
64
+ * backgroundColor: {
65
+ * select: 'primary',
66
+ * unselect: 'base-white',
67
+ * },
68
+ * textColor: {
69
+ * select: 'base-white',
70
+ * unselect: 'base-black',
71
+ * },
72
+ * }}
73
+ * />
74
+ * ```
75
+ */
76
+ declare const CustomStrategyTabsFilter: FunctionComponent<TCustomStrategyTabsFilterProps>;
77
+ 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>;
@@ -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, };