@royaloperahouse/harmonic 0.4.1-j → 0.5.0-a

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 (105) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/README.md +18 -2
  3. package/dist/components/Typography/Typography.d.ts +277 -6
  4. package/dist/components/atoms/Dropdown/Dropdown.d.ts +1 -1
  5. package/dist/components/atoms/Icons/SvgIcons/Arrows/ArrowPagination.svg.d.ts +4 -0
  6. package/dist/components/atoms/Icons/SvgIcons/Arrows/LastPageArrow.svg.d.ts +4 -0
  7. package/dist/components/atoms/Icons/SvgIcons/index.d.ts +2 -0
  8. package/dist/components/atoms/RotatorButtons/RotatorButtons.d.ts +1 -1
  9. package/dist/components/atoms/RotatorButtons/RotatorButtons.style.d.ts +1 -0
  10. package/dist/components/atoms/Search/Search.d.ts +1 -1
  11. package/dist/components/atoms/Search/Search.style.d.ts +1 -1
  12. package/dist/components/atoms/SectionSplitter/SectionSplitter.d.ts +1 -1
  13. package/dist/components/atoms/Tab/Tab.d.ts +1 -1
  14. package/dist/components/atoms/TextField/TextField.style.d.ts +1 -1
  15. package/dist/components/index.d.ts +3 -3
  16. package/dist/components/molecules/Accordion/Accordion.style.d.ts +8 -4
  17. package/dist/components/molecules/AnchorBar/AnchorBar.style.d.ts +5 -1
  18. package/dist/components/molecules/BodyContent/BodyContent.d.ts +9 -0
  19. package/dist/components/molecules/BodyContent/BodyContent.style.d.ts +1 -0
  20. package/dist/components/molecules/BodyContent/index.d.ts +2 -0
  21. package/dist/components/molecules/Card/Card.style.d.ts +1 -1
  22. package/dist/components/molecules/CastFilter/CastFilters.d.ts +4 -0
  23. package/dist/components/molecules/CastFilter/CastFilters.style.d.ts +16 -0
  24. package/dist/components/molecules/CastFilter/index.d.ts +2 -0
  25. package/dist/components/molecules/ContactCard/ContactCard.style.d.ts +5 -4
  26. package/dist/components/molecules/ContentSummary/ContentSummary.d.ts +1 -1
  27. package/dist/components/molecules/ContentSummary/ContentSummary.style.d.ts +1 -2
  28. package/dist/components/molecules/Editorial/Editorial.style.d.ts +2 -2
  29. package/dist/components/molecules/HotFilters/HotFilters.d.ts +4 -0
  30. package/dist/components/molecules/HotFilters/HotFilters.style.d.ts +3 -0
  31. package/dist/components/molecules/HotFilters/index.d.ts +2 -0
  32. package/dist/components/molecules/ImageWithCaption/ImageWithCaption.style.d.ts +1 -1
  33. package/dist/components/molecules/Information/Information.style.d.ts +3 -2
  34. package/dist/components/molecules/NavTop/NavTop.d.ts +1 -1
  35. package/dist/components/molecules/PageHeading/Highlight/Highlight.d.ts +4 -0
  36. package/dist/components/molecules/PageHeading/Highlight/Highlight.style.d.ts +9 -0
  37. package/dist/components/molecules/PageHeading/Highlight/index.d.ts +2 -0
  38. package/dist/components/molecules/PageHeading/HighlightCarousel/HighlightCarousel.d.ts +4 -0
  39. package/dist/components/molecules/PageHeading/HighlightCarousel/HighlightCarousel.style.d.ts +14 -0
  40. package/dist/components/molecules/PageHeading/HighlightCarousel/index.d.ts +2 -0
  41. package/dist/components/molecules/PageHeading/Promo/Promo.d.ts +1 -2
  42. package/dist/components/molecules/PageHeading/index.d.ts +3 -1
  43. package/dist/components/molecules/Pagination/Pagination.d.ts +11 -3
  44. package/dist/components/molecules/Pagination/Pagination.style.d.ts +6 -5
  45. package/dist/components/molecules/Pagination/components/NavButtonOrLink.d.ts +4 -0
  46. package/dist/components/molecules/Pagination/components/PageLinkOrButton.d.ts +4 -0
  47. package/dist/components/molecules/Pagination/components/index.d.ts +2 -0
  48. package/dist/components/molecules/Paywall/Paywall.d.ts +4 -0
  49. package/dist/components/molecules/Paywall/Paywall.styles.d.ts +288 -0
  50. package/dist/components/molecules/Paywall/index.d.ts +2 -0
  51. package/dist/components/molecules/PeopleListing/PeopleListing.d.ts +1 -1
  52. package/dist/components/molecules/PeopleListing/PeopleListing.style.d.ts +2 -2
  53. package/dist/components/molecules/PromoWithTags/PromoWithTags.style.d.ts +273 -6
  54. package/dist/components/molecules/PromoWithTitle/PromoWithTitle.style.d.ts +273 -3
  55. package/dist/components/molecules/Quote/Quote.style.d.ts +3 -4
  56. package/dist/components/molecules/SearchBar/SearchBar.d.ts +1 -1
  57. package/dist/components/molecules/SearchBar/SearchBar.style.d.ts +1 -1
  58. package/dist/components/molecules/SectionTitle/SectionTitle.d.ts +1 -1
  59. package/dist/components/molecules/SkipToMain/SkipToMain.d.ts +20 -0
  60. package/dist/components/molecules/SkipToMain/SkipToMain.style.d.ts +6 -0
  61. package/dist/components/molecules/SkipToMain/index.d.ts +2 -0
  62. package/dist/components/molecules/Table/Table.style.d.ts +1 -8
  63. package/dist/components/molecules/Table/components/DataCells.d.ts +7 -0
  64. package/dist/components/molecules/Table/components/HeaderCells.d.ts +7 -0
  65. package/dist/components/molecules/UpsellCard/UpsellCard.style.d.ts +279 -12
  66. package/dist/components/molecules/index.d.ts +5 -4
  67. package/dist/components/organisms/AnchorTabBar/AnchorTabBar.style.d.ts +8 -3
  68. package/dist/components/organisms/Carousels/Carousel/Carousel.style.d.ts +271 -0
  69. package/dist/components/organisms/Carousels/HighlightsCarousel/helper.d.ts +1 -1
  70. package/dist/components/organisms/Footer/Footer.style.d.ts +5 -5
  71. package/dist/components/organisms/Navigation/Navigation.d.ts +1 -1
  72. package/dist/components/organisms/Navigation/Navigation.style.d.ts +1 -1
  73. package/dist/components/organisms/StickyBar/StickyBar.style.d.ts +1 -1
  74. package/dist/components/organisms/UpsellSection/UpsellSection.style.d.ts +272 -1
  75. package/dist/harmonic.cjs.development.css +50 -24
  76. package/dist/harmonic.cjs.development.js +7386 -6745
  77. package/dist/harmonic.cjs.development.js.map +1 -1
  78. package/dist/harmonic.cjs.production.min.js +1 -1
  79. package/dist/harmonic.cjs.production.min.js.map +1 -1
  80. package/dist/harmonic.esm.js +5395 -4759
  81. package/dist/harmonic.esm.js.map +1 -1
  82. package/dist/helpers/accessibility.d.ts +1 -0
  83. package/dist/index.d.ts +6 -3
  84. package/dist/styles/HarmonicThemeProvider/HarmonicThemeProvider.d.ts +3 -0
  85. package/dist/styles/HarmonicThemeProvider/index.d.ts +2 -1
  86. package/dist/types/anchorBar.d.ts +5 -0
  87. package/dist/types/buttonTypes.d.ts +6 -0
  88. package/dist/types/contactCard.d.ts +8 -22
  89. package/dist/types/creditListing.d.ts +1 -1
  90. package/dist/types/editorial.d.ts +13 -23
  91. package/dist/types/image.d.ts +5 -9
  92. package/dist/types/impactHeader.d.ts +22 -2
  93. package/dist/types/information.d.ts +23 -43
  94. package/dist/types/navigation.d.ts +52 -61
  95. package/dist/types/pagination.d.ts +9 -0
  96. package/dist/types/promoWithTags.d.ts +9 -1
  97. package/dist/types/quote.d.ts +4 -15
  98. package/dist/types/tableTypes.d.ts +8 -25
  99. package/dist/types/types.d.ts +144 -74
  100. package/dist/types/typography.d.ts +9 -1
  101. package/dist/types/upsell.d.ts +22 -16
  102. package/package.json +3 -2
  103. package/dist/components/molecules/TextOnly/TextOnly.d.ts +0 -4
  104. package/dist/components/molecules/TextOnly/TextOnly.style.d.ts +0 -1
  105. package/dist/components/molecules/TextOnly/index.d.ts +0 -2
@@ -1,7 +1,6 @@
1
1
  import { ReactNode, AnchorHTMLAttributes, MouseEventHandler, ReactElement } from 'react';
2
2
  import { StyledProps } from 'styled-components';
3
3
  import { IconNameType, DirectionType } from './iconTypes';
4
- import { TypographyLevel, TypographyType } from './typography';
5
4
  import type { ExternalLink } from './links';
6
5
  export declare enum Colors {
7
6
  White = "white",
@@ -53,14 +52,8 @@ export declare enum ThemeType {
53
52
  Cinema = "cinema",
54
53
  Schools = "schools"
55
54
  }
56
- export declare type ThemeChildProps = {
57
- className?: string;
58
- theme?: ThemeType;
59
- };
60
55
  export interface IThemeProviderProps {
61
- /**
62
- * The theme to use for the child elements
63
- */
56
+ /** The theme to use for the child elements */
64
57
  theme: ThemeType;
65
58
  children: ReactNode;
66
59
  }
@@ -170,6 +163,18 @@ export interface ITabProps {
170
163
  * Text color
171
164
  */
172
165
  color?: ThemeColor;
166
+ /**
167
+ * Defines if it is needed to trim the text of the Tab and add 3 dots in the end
168
+ */
169
+ trimText?: boolean;
170
+ /**
171
+ * data-testid string for easier testing
172
+ */
173
+ dataTestId?: string;
174
+ /**
175
+ * Boolean indicating if the Tab is open.
176
+ */
177
+ isOpen?: boolean;
173
178
  }
174
179
  export interface IDropdownProps {
175
180
  /**
@@ -224,6 +229,10 @@ export interface IDropdownProps {
224
229
  * The unique ID to assign to the link element inside the tab.
225
230
  */
226
231
  tabLinkId?: string;
232
+ /**
233
+ * Defines if it is needed to trim the text of the Tab and add 3 dots in the end
234
+ */
235
+ trimTabText?: boolean;
227
236
  }
228
237
  export interface ITabsProps {
229
238
  /**
@@ -345,10 +354,10 @@ export declare type ListingRole = {
345
354
  dataROH?: string;
346
355
  };
347
356
  export interface IPeopleListing {
348
- /**
349
- * List of roles to be displayed
350
- */
357
+ /** List of roles to be displayed */
351
358
  roles: ListingRole[];
359
+ /** Custom CSS classes */
360
+ className?: string;
352
361
  }
353
362
  export interface IPagination {
354
363
  /**
@@ -414,6 +423,77 @@ export interface ISponsorLogoProps extends ExternalLink {
414
423
  */
415
424
  className?: string;
416
425
  }
426
+ export declare type IHotFilterItem = Pick<AnchorHTMLAttributes<HTMLAnchorElement>, 'aria-label' | 'role'> & {
427
+ text: string;
428
+ onClick?: () => void;
429
+ };
430
+ export declare type IHotFilterProps = {
431
+ items: IHotFilterItem[];
432
+ className?: string;
433
+ selectedIndex?: number;
434
+ onSelect?: (index: number) => void;
435
+ };
436
+ export declare type ICastFilterItem = Pick<AnchorHTMLAttributes<HTMLAnchorElement>, 'aria-label' | 'role'> & {
437
+ /**
438
+ * Name of the cast member shown below the image circle. Required.
439
+ */
440
+ name: string;
441
+ /**
442
+ * Image source for the image to be shown. Optional but if not included an unaesthetic placeholder will show.
443
+ */
444
+ image?: string;
445
+ onClick?: () => void;
446
+ };
447
+ export declare type ICastFiltersProps = {
448
+ className?: string;
449
+ /**
450
+ * Array of cast to filter by.
451
+ */
452
+ cast: ICastFilterItem[];
453
+ /**
454
+ * Indices of currently selected cast in the `cast` array.
455
+ */
456
+ selectedIndices?: number[];
457
+ /**
458
+ * Text shown at the top of the component, e.g. 'Filter by cast'. If this is not provided
459
+ * the component will render without any.
460
+ */
461
+ headingText?: string;
462
+ /**
463
+ * Override the text of the primary CTA. Default is 'Apply'.
464
+ */
465
+ ctaText?: string;
466
+ /**
467
+ * Override the text of the text link. Default is 'Clear'.
468
+ */
469
+ textLinkText?: string;
470
+ /**
471
+ * Text to show if no selection is made.
472
+ */
473
+ emptySelectionText?: string;
474
+ /**
475
+ * Default image to show in cases where a cast member image prop is missing.
476
+ * If this is undefined then a light grey background will be displayed instead.
477
+ */
478
+ placeholderImage?: string;
479
+ /**
480
+ * Description to be used as aria-roledescription of the cast filter listbox.
481
+ * Read out by screen readers to describe the contents of the list.
482
+ */
483
+ listRoleDescription?: string;
484
+ /**
485
+ * Handle selecting individual cast filters.
486
+ */
487
+ onSelect?: (index: number) => void;
488
+ /**
489
+ * Handle clicking the primary CTA.
490
+ */
491
+ onApply?: (indices: number[]) => void;
492
+ /**
493
+ * Handle clicking the text link.
494
+ */
495
+ onClear?: () => void;
496
+ };
417
497
  export interface ISponsorshipProps {
418
498
  /**
419
499
  * Source URL for Sponsorship IFRAME.
@@ -448,10 +528,10 @@ export interface ITextLinkProps extends AnchorHTMLAttributes<HTMLAnchorElement>
448
528
  textColor?: ThemeColor;
449
529
  }
450
530
  export interface ISectionSplitterProps {
451
- /**
452
- * Set the width of the Section to full
453
- */
531
+ /** Set the width of the Section to full */
454
532
  fullWidth?: boolean;
533
+ /** Custom CSS classes */
534
+ className?: string;
455
535
  }
456
536
  export interface ITypeTagsProps {
457
537
  /**
@@ -459,46 +539,34 @@ export interface ITypeTagsProps {
459
539
  */
460
540
  list: string[];
461
541
  }
462
- export interface ITextOnlyProps {
463
- /**
464
- * Text placed in the TextOnly component
465
- */
542
+ export interface IBodyContentProps {
543
+ /** Text placed in the BodyContent component */
466
544
  text: string;
467
- /**
468
- * Set columnstart in Desktop
469
- */
545
+ /** Set columnStart in Desktop */
470
546
  columnStartDesktop?: number;
471
- /**
472
- * Set columnSpan in Desktop
473
- */
547
+ /** Set columnSpan in Desktop */
474
548
  columnSpanDesktop?: number;
475
- /**
476
- * Set columnstart in Device
477
- */
549
+ /** Set columnStart in Device */
478
550
  columnStartDevice?: number;
479
- /**
480
- * Set columnSpam in Device
481
- */
551
+ /** Set columnSpan in Device */
482
552
  columnSpanDevice?: number;
553
+ /** Custom CSS classes */
554
+ className?: string;
555
+ /** Set to true to wrap the content in a Grid component */
556
+ renderGrid?: boolean;
557
+ /** Set to true to render the GridItem component */
558
+ renderGridItem?: boolean;
483
559
  }
484
560
  export declare type SectionTitleSize = 'small' | 'large';
485
561
  export interface ISectionTitleProps {
486
- /**
487
- * Title to display.
488
- */
562
+ /** Title to display. */
489
563
  title: string;
490
- /**
491
- * Size of title to display - by default small, which renders as an H2 (and large is an H1).
492
- */
564
+ /** Size of title to display - by default small, which renders as an H2 (and large is an H1). */
493
565
  size?: SectionTitleSize;
494
- /**
495
- * Optional description that can be rendered below the title.
496
- */
566
+ /** Optional description that can be rendered below the title. */
497
567
  description?: string;
498
- /**
499
- * Semantic level of the title.
500
- */
501
- semanticLevel?: TypographyLevel;
568
+ /** Custom CSS classes */
569
+ className?: string;
502
570
  }
503
571
  export interface ILogosProps {
504
572
  /**
@@ -521,44 +589,22 @@ export interface ILogosStyledProps extends StyledProps<any> {
521
589
  fillColor?: Colors.White | Colors.Black;
522
590
  }
523
591
  export interface IAccordionProps {
524
- /**
525
- * Title to display.
526
- */
592
+ /** Title to display. */
527
593
  title?: string;
528
- /**
529
- * The component to be wrapped into the accordion
530
- */
594
+ /** The component to be wrapped into the accordion */
531
595
  children?: ReactNode;
532
- /**
533
- * Components wrapped into the accordion that are always visible
534
- */
535
- visibleStandfirst?: ReactNode;
536
- /**
537
- * Set if accordions are stacked
538
- */
596
+ /** Set if accordions are stacked */
539
597
  showLine?: boolean;
540
- /**
541
- * Set init open
542
- */
598
+ /** Set init open */
543
599
  initOpen?: boolean;
544
- /**
545
- * Set content type - header or subtitle
546
- */
547
- contentType?: TypographyType;
548
- /**
549
- * Set display level - aesthetic
550
- */
551
- displayLevel?: TypographyLevel;
552
- /**
553
- * Set semantic level - not to be used for aesthetic
554
- */
555
- semanticLevel?: TypographyLevel;
600
+ /** Custom CSS classes */
601
+ className?: string;
556
602
  }
557
603
  export interface IAccordionsProps {
558
- /**
559
- * Array of Accordion component
560
- */
604
+ /** Array of Accordion component */
561
605
  items: IAccordionProps[];
606
+ /** Custom CSS classes */
607
+ className?: string;
562
608
  }
563
609
  export declare const BannerVariants: {
564
610
  readonly 'service-persistent': "service-persistent";
@@ -693,3 +739,27 @@ export declare enum LinkTarget {
693
739
  */
694
740
  Blank = "_blank"
695
741
  }
742
+ export interface ISkipToMainProps {
743
+ /**
744
+ * Defines which tag the button should skip to.
745
+ */
746
+ skipToId?: string;
747
+ }
748
+ export declare type PaywallProps = {
749
+ /** Custom CSS classes */
750
+ className?: string;
751
+ /** Heading text */
752
+ title: string;
753
+ /** Introduction text */
754
+ intro?: string;
755
+ /** Body HTML */
756
+ description: string;
757
+ /** CTA text */
758
+ buttonText: string;
759
+ /** CTA URL */
760
+ buttonUrl: string;
761
+ /** Text before sign-in link (required to show sign-in link) */
762
+ signInPromptText?: string;
763
+ /** Sign-in link URL (required to show sign-in link) */
764
+ signInLinkUrl?: string;
765
+ };
@@ -22,8 +22,16 @@ export interface IGenericTypographyProps<T extends HTMLElement = HTMLParagraphEl
22
22
  bold?: boolean;
23
23
  className?: string;
24
24
  }
25
- export interface IHarmonicHeaderProps extends IGenericTypographyProps {
25
+ export declare type HarmonicHeaderProps = (IGenericTypographyProps<HTMLHeadingElement> & {
26
26
  hierarchy: HeaderHierarchy;
27
+ tag?: never;
28
+ }) | (IGenericTypographyProps<HTMLHeadingElement> & {
29
+ tag?: React.ElementType;
30
+ hierarchy?: never;
31
+ });
32
+ export interface ITaggedTypographyProps extends IGenericTypographyProps {
33
+ /** Specifies the HTML tag for rendering typography. The default is 'p'. */
34
+ tag?: React.ElementType;
27
35
  }
28
36
  export declare type TypographyLevel = 1 | 2 | 3 | 4 | 5 | 6;
29
37
  export declare type AltHeaderLevel = 3 | 4 | 5 | 6;
@@ -39,9 +39,23 @@ export interface IUpsellCardProps {
39
39
  */
40
40
  link?: EditorialLink;
41
41
  /**
42
- * Theme: Core, Stream, or Cinema
42
+ * Optional link for secondary CTA
43
+ */
44
+ secondaryLink?: EditorialLink;
45
+ /**
46
+ * If true, switch to stacked CTAs earlier than usual to avoid button text spanning
47
+ * two lines. Useful when this component is rendered within in a narrow parent
48
+ * such as as an item in the Upsell Section.
49
+ */
50
+ stackCtasEarly?: boolean;
51
+ /**
52
+ * Theme for primary CTA: Core, Stream, or Cinema
43
53
  */
44
54
  theme?: ThemeType;
55
+ /**
56
+ * Theme for secondary CTA: Core, Stream, or Cinema
57
+ */
58
+ secondaryTheme?: ThemeType;
45
59
  }
46
60
  export interface IUpsellCardsProps {
47
61
  /**
@@ -54,24 +68,16 @@ export interface IUpsellCardsProps {
54
68
  theme?: ThemeType;
55
69
  }
56
70
  export interface IUpsellSectionProps {
57
- /**
58
- * Upsell Section title
59
- */
71
+ /** Upsell Section title */
60
72
  title?: string;
61
- /**
62
- * Richtext section
63
- */
73
+ /** Richtext section */
64
74
  richText?: string;
65
- /**
66
- * CTA link. Eg. for sign in.
67
- */
75
+ /** CTA link. Eg. for sign in. */
68
76
  link?: EditorialLink;
69
- /**
70
- * Array of upsellCards
71
- */
77
+ /** Array of upsellCards */
72
78
  upsellCards?: IUpsellCardProps[];
73
- /**
74
- * Theme options
75
- */
79
+ /** Theme options */
76
80
  theme?: ThemeType;
81
+ /** Custom CSS classes */
82
+ className?: string;
77
83
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@royaloperahouse/harmonic",
3
- "version": "0.4.1-j",
3
+ "version": "0.5.0-a",
4
4
  "author": "Royal Opera House",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -142,5 +142,6 @@
142
142
  "npx eslint src --fix ",
143
143
  "npx prettier src --write --uncommitted"
144
144
  ]
145
- }
145
+ },
146
+ "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
146
147
  }
@@ -1,4 +0,0 @@
1
- import { FunctionComponent } from 'react';
2
- import { ITextOnlyProps } from '../../../types/types';
3
- declare const TextOnly: FunctionComponent<ITextOnlyProps>;
4
- export default TextOnly;
@@ -1 +0,0 @@
1
- export declare const TextContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
@@ -1,2 +0,0 @@
1
- import TextOnly from './TextOnly';
2
- export default TextOnly;