@ably/ui 15.6.0-dev.274a3001 → 15.6.0-dev.bdcefb0

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 (85) hide show
  1. package/core/DropdownMenu.js +1 -1
  2. package/core/DropdownMenu.js.map +1 -1
  3. package/core/Flash.js +1 -1
  4. package/core/Flash.js.map +1 -1
  5. package/core/Flyout.js +1 -1
  6. package/core/Flyout.js.map +1 -1
  7. package/core/Header/HeaderLinks.js +1 -1
  8. package/core/Header/HeaderLinks.js.map +1 -1
  9. package/core/Header.js +1 -1
  10. package/core/Header.js.map +1 -1
  11. package/core/LegacyMeganav/MeganavBlogPostsList/component.js +2 -0
  12. package/core/LegacyMeganav/MeganavBlogPostsList/component.js.map +1 -0
  13. package/core/LegacyMeganav/MeganavControl/component.js +2 -0
  14. package/core/LegacyMeganav/MeganavControl/component.js.map +1 -0
  15. package/core/LegacyMeganav/MeganavControlMobileDropdown/component.js +2 -0
  16. package/core/LegacyMeganav/MeganavControlMobileDropdown/component.js.map +1 -0
  17. package/core/LegacyMeganav/MeganavControlMobilePanelClose/component.js +2 -0
  18. package/core/LegacyMeganav/MeganavControlMobilePanelClose/component.js.map +1 -0
  19. package/core/LegacyMeganav/MeganavControlMobilePanelOpen/component.js +2 -0
  20. package/core/LegacyMeganav/MeganavControlMobilePanelOpen/component.js.map +1 -0
  21. package/core/LegacyMeganav/MeganavSearchAutocomplete/component.js +2 -0
  22. package/core/LegacyMeganav/MeganavSearchAutocomplete/component.js.map +1 -0
  23. package/core/LegacyMeganav/MeganavSearchSuggestions/component.js +2 -0
  24. package/core/LegacyMeganav/MeganavSearchSuggestions/component.js.map +1 -0
  25. package/core/LegacyMeganav/component.js +2 -0
  26. package/core/{Meganav → LegacyMeganav}/component.js.map +1 -1
  27. package/core/LegacyMeganav.js +2 -0
  28. package/core/LegacyMeganav.js.map +1 -0
  29. package/core/Meganav/.DS_Store +0 -0
  30. package/core/Meganav/Meganav.js +2 -0
  31. package/core/Meganav/Meganav.js.map +1 -0
  32. package/core/Meganav/MeganavMobile.js +2 -0
  33. package/core/Meganav/MeganavMobile.js.map +1 -0
  34. package/core/Meganav/MeganavPanel.js +2 -0
  35. package/core/Meganav/MeganavPanel.js.map +1 -0
  36. package/core/Meganav/data.js +2 -0
  37. package/core/Meganav/data.js.map +1 -0
  38. package/core/Meganav/images/fan-engagement-nav-image.png +0 -0
  39. package/core/Meganav/images/founders-nav-image.png +0 -0
  40. package/core/MeganavBlogPostsList.js.map +1 -1
  41. package/core/MeganavContentCompany.js.map +1 -1
  42. package/core/MeganavContentDevelopers.js.map +1 -1
  43. package/core/MeganavContentProducts.js.map +1 -1
  44. package/core/MeganavContentUseCases.js.map +1 -1
  45. package/core/MeganavControl.js.map +1 -1
  46. package/core/MeganavControlMobileDropdown.js.map +1 -1
  47. package/core/MeganavItemsDesktop.js +1 -1
  48. package/core/MeganavItemsDesktop.js.map +1 -1
  49. package/core/MeganavItemsMobile.js +1 -1
  50. package/core/MeganavItemsMobile.js.map +1 -1
  51. package/core/MeganavItemsSignedIn.js.map +1 -1
  52. package/core/MeganavSearch.js.map +1 -1
  53. package/core/MeganavSearchPanel.js.map +1 -1
  54. package/core/MeganavSearchSuggestions.js.map +1 -1
  55. package/core/Notice.js +1 -1
  56. package/core/Notice.js.map +1 -1
  57. package/core/SignOutLink.js.map +1 -1
  58. package/core/images/award/g2-best-meets-requirements-2025.png +0 -0
  59. package/core/images/award/g2-best-support-2025.png +0 -0
  60. package/core/images/award/g2-high-performer-2025.png +0 -0
  61. package/core/images/award/g2-users-most-likely-to-recommend-2025.png +0 -0
  62. package/index.d.ts +237 -151
  63. package/package.json +1 -1
  64. package/core/Meganav/component.js +0 -2
  65. package/core/Meganav.js +0 -2
  66. package/core/Meganav.js.map +0 -1
  67. package/core/MeganavBlogPostsList/component.js +0 -2
  68. package/core/MeganavBlogPostsList/component.js.map +0 -1
  69. package/core/MeganavControl/component.js +0 -2
  70. package/core/MeganavControl/component.js.map +0 -1
  71. package/core/MeganavControlMobileDropdown/component.js +0 -2
  72. package/core/MeganavControlMobileDropdown/component.js.map +0 -1
  73. package/core/MeganavControlMobilePanelClose/component.js +0 -2
  74. package/core/MeganavControlMobilePanelClose/component.js.map +0 -1
  75. package/core/MeganavControlMobilePanelOpen/component.js +0 -2
  76. package/core/MeganavControlMobilePanelOpen/component.js.map +0 -1
  77. package/core/MeganavSearchAutocomplete/component.js +0 -2
  78. package/core/MeganavSearchAutocomplete/component.js.map +0 -1
  79. package/core/MeganavSearchSuggestions/component.js +0 -2
  80. package/core/MeganavSearchSuggestions/component.js.map +0 -1
  81. package/core/hooks/use-rails-ujs-hooks.js +0 -2
  82. package/core/hooks/use-rails-ujs-hooks.js.map +0 -1
  83. package/core/styles/colors/computed-colors.json +0 -1
  84. /package/core/{Meganav → LegacyMeganav}/component.css +0 -0
  85. /package/core/{Meganav → LegacyMeganav}/component.json +0 -0
package/index.d.ts CHANGED
@@ -343,28 +343,51 @@ declare module '@ably/ui/core/DropdownMenu' {
343
343
  import { ReactNode } from "react";
344
344
  import { IconName } from "@ably/ui/core/Icon/types";
345
345
  type DropdownMenuProps = {
346
+ /**
347
+ * The content to be displayed within the dropdown menu.
348
+ */
346
349
  children: ReactNode;
347
350
  };
348
351
  type TriggerProps = {
352
+ /**
353
+ * The content to be displayed within the trigger element.
354
+ */
349
355
  children: ReactNode;
350
- additionalTriggerCSS?: string;
356
+ /**
357
+ * Additional class names to apply to the trigger element.
358
+ */
359
+ triggerClassNames?: string;
360
+ /**
361
+ * A description for the trigger element, used for accessibility purposes.
362
+ */
363
+ description?: string;
351
364
  };
352
365
  type ContentProps = {
366
+ /**
367
+ * The content to be displayed within the dropdown menu.
368
+ */
353
369
  children: ReactNode;
370
+ /**
371
+ * The position of the dropdown menu relative to the trigger element.
372
+ * Defaults to "right".
373
+ */
354
374
  anchorPosition?: string;
355
- additionalContentCSS?: string;
375
+ /**
376
+ * Additional class names to apply to the content container.
377
+ */
378
+ contentClassNames?: string;
356
379
  };
357
380
  type LinkProps = {
358
381
  url: string;
359
382
  title: string;
360
- subtitle: string;
361
- iconName: IconName;
362
- children: ReactNode;
383
+ subtitle?: string;
384
+ iconName?: IconName;
385
+ children?: ReactNode;
363
386
  };
364
387
  const DropdownMenu: {
365
388
  ({ children }: DropdownMenuProps): import("react/jsx-runtime").JSX.Element;
366
- Trigger: ({ children, additionalTriggerCSS }: TriggerProps) => import("react/jsx-runtime").JSX.Element;
367
- Content: ({ children, anchorPosition, additionalContentCSS, }: ContentProps) => import("react/jsx-runtime").JSX.Element | null;
389
+ Trigger: ({ children, triggerClassNames, description, }: TriggerProps) => import("react/jsx-runtime").JSX.Element;
390
+ Content: ({ children, anchorPosition, contentClassNames, }: ContentProps) => import("react/jsx-runtime").JSX.Element | null;
368
391
  Link: ({ url, title, subtitle, iconName, children }: LinkProps) => import("react/jsx-runtime").JSX.Element;
369
392
  };
370
393
  export default DropdownMenu;
@@ -417,7 +440,7 @@ type FlashProps = {
417
440
  };
418
441
  type FlashesProps = {
419
442
  flashes: {
420
- items: Pick<FlashProps, "type" | "content">[];
443
+ items: FlashProps[];
421
444
  };
422
445
  };
423
446
  type BackendFlashesProps = {
@@ -452,9 +475,9 @@ type FlyoutProps = {
452
475
  */
453
476
  menuItems: {
454
477
  /**
455
- * Label for the menu item.
478
+ * name for the menu item.
456
479
  */
457
- label: string;
480
+ name: string;
458
481
  /**
459
482
  * Optional content to be displayed in the flyout panel.
460
483
  */
@@ -526,6 +549,32 @@ export type ThemedScrollpoint = {
526
549
  id: string;
527
550
  className: string;
528
551
  };
552
+ /**
553
+ * Represents the state of the user session in the header.
554
+ */
555
+ export type HeaderSessionState = {
556
+ /**
557
+ * Indicates if the user is signed in.
558
+ */
559
+ signedIn: boolean;
560
+ /**
561
+ * Information required to log out the user.
562
+ */
563
+ logOut: {
564
+ /**
565
+ * Token used for logging out.
566
+ */
567
+ token: string;
568
+ /**
569
+ * URL to log out the user.
570
+ */
571
+ href: string;
572
+ };
573
+ /**
574
+ * Name of the user's account.
575
+ */
576
+ accountName: string;
577
+ };
529
578
  /**
530
579
  * Props for the Header component.
531
580
  */
@@ -570,31 +619,7 @@ export type HeaderProps = {
570
619
  /**
571
620
  * State of the user session.
572
621
  */
573
- sessionState?: {
574
- /**
575
- * Indicates if the user is signed in.
576
- */
577
- signedIn: boolean;
578
- /**
579
- * Account information.
580
- */
581
- account: {
582
- /**
583
- * Links related to the account.
584
- */
585
- links: {
586
- /**
587
- * Dashboard link information.
588
- */
589
- dashboard: {
590
- /**
591
- * URL for the dashboard link.
592
- */
593
- href: string;
594
- };
595
- };
596
- };
597
- };
622
+ sessionState?: HeaderSessionState;
598
623
  /**
599
624
  * Array of themed scrollpoints. The header will change its appearance based on the scrollpoint in view.
600
625
  */
@@ -658,50 +683,63 @@ export default Icon;
658
683
  //# sourceMappingURL=Icon.d.ts.map
659
684
  }
660
685
 
661
- declare module '@ably/ui/core/LinkButton' {
662
- import React from "react";
663
- import { ButtonPropsBase } from "@ably/ui/core/Button";
664
- import { ColorClass, ColorThemeSet } from "@ably/ui/core/styles/colors/types";
665
- export type LinkButtonProps = ButtonPropsBase & {
666
- disabled?: boolean;
667
- onClick?: (event: React.MouseEvent<HTMLAnchorElement>) => void;
668
- iconColor?: ColorClass | ColorThemeSet;
669
- } & React.AnchorHTMLAttributes<HTMLAnchorElement>;
670
- const LinkButton: React.FC<LinkButtonProps>;
671
- export default LinkButton;
672
- //# sourceMappingURL=LinkButton.d.ts.map
686
+ declare module '@ably/ui/core/LegacyMeganav/MeganavControl/component' {
687
+ export default MeganavControl;
688
+ function MeganavControl(): {
689
+ teardown: () => void;
690
+ clear: () => void;
691
+ }[];
692
+ //# sourceMappingURL=component.d.ts.map
673
693
  }
674
694
 
675
- declare module '@ably/ui/core/Loader' {
676
- type LoaderProps = {
677
- size?: string;
678
- ringColor?: string;
679
- additionalCSS?: string;
695
+ declare module '@ably/ui/core/LegacyMeganav/MeganavControlMobileDropdown/component' {
696
+ export default MeganavControlMobileDropdown;
697
+ function MeganavControlMobileDropdown({ clearPanels }: {
698
+ clearPanels: any;
699
+ }): {
700
+ teardown: () => void;
701
+ clear: () => void;
680
702
  };
681
- const Loader: ({ ringColor, size, additionalCSS, }: LoaderProps) => import("react/jsx-runtime").JSX.Element;
682
- export default Loader;
683
- //# sourceMappingURL=Loader.d.ts.map
703
+ //# sourceMappingURL=component.d.ts.map
684
704
  }
685
705
 
686
- declare module '@ably/ui/core/Logo' {
687
- import React from "react";
688
- type LogoProps = {
689
- dataId?: string;
690
- logoUrl?: string;
691
- logoAlt?: string;
692
- href?: string;
693
- additionalImgAttrs?: object;
694
- additionalLinkAttrs?: object;
695
- theme?: "light" | "dark";
696
- variant?: "default" | "mono";
697
- orientation?: "default" | "stacked";
698
- };
699
- const _default: React.MemoExoticComponent<({ dataId, href, additionalImgAttrs, additionalLinkAttrs, theme, variant, orientation, logoUrl, logoAlt, }: LogoProps) => import("react/jsx-runtime").JSX.Element>;
706
+ declare module '@ably/ui/core/LegacyMeganav/MeganavControlMobilePanelClose/component' {
707
+ function _default(): {
708
+ teardown: () => void;
709
+ clear: () => void;
710
+ }[];
700
711
  export default _default;
701
- //# sourceMappingURL=Logo.d.ts.map
712
+ //# sourceMappingURL=component.d.ts.map
713
+ }
714
+
715
+ declare module '@ably/ui/core/LegacyMeganav/MeganavControlMobilePanelOpen/component' {
716
+ function _default(): {
717
+ teardown: () => void;
718
+ clear: () => void;
719
+ }[];
720
+ export default _default;
721
+ //# sourceMappingURL=component.d.ts.map
722
+ }
723
+
724
+ declare module '@ably/ui/core/LegacyMeganav/MeganavSearchAutocomplete/component' {
725
+ function _default(apiKey: any): {
726
+ teardown: () => void;
727
+ clear: () => void;
728
+ }[];
729
+ export default _default;
730
+ //# sourceMappingURL=component.d.ts.map
702
731
  }
703
732
 
704
- declare module '@ably/ui/core/Meganav/component' {
733
+ declare module '@ably/ui/core/LegacyMeganav/MeganavSearchSuggestions/component' {
734
+ export default MeganavSearchSuggestions;
735
+ function MeganavSearchSuggestions(): {
736
+ teardown: () => void;
737
+ clear: () => void;
738
+ };
739
+ //# sourceMappingURL=component.d.ts.map
740
+ }
741
+
742
+ declare module '@ably/ui/core/LegacyMeganav/component' {
705
743
  export default function Meganav({ themeName, addSearchApiKey }: {
706
744
  themeName: any;
707
745
  addSearchApiKey: any;
@@ -709,7 +747,7 @@ export default function Meganav({ themeName, addSearchApiKey }: {
709
747
  //# sourceMappingURL=component.d.ts.map
710
748
  }
711
749
 
712
- declare module '@ably/ui/core/Meganav' {
750
+ declare module '@ably/ui/core/LegacyMeganav' {
713
751
  import { ReactNode } from "react";
714
752
  import { ColorClass } from "@ably/ui/core/styles/colors/types";
715
753
  export type MeganavTheme = {
@@ -726,6 +764,9 @@ export type MeganavPaths = {
726
764
  logo?: string;
727
765
  iconSprites: string;
728
766
  ablyStack: string;
767
+ blogThumb1: string;
768
+ blogThumb2: string;
769
+ blogThumb3: string;
729
770
  awsLogo?: string;
730
771
  };
731
772
  export type MeganavPanels = {
@@ -760,7 +801,7 @@ export type MeganavSessionState = {
760
801
  href: string;
761
802
  };
762
803
  };
763
- export type NoticeApiProps = {
804
+ export type MeganavNoticeProps = {
764
805
  props: {
765
806
  title: string;
766
807
  bodyText: string;
@@ -779,7 +820,7 @@ export type NoticeApiProps = {
779
820
  type MeganavProps = {
780
821
  paths?: MeganavPaths;
781
822
  themeName: "white" | "black" | "transparentToWhite";
782
- notice?: NoticeApiProps;
823
+ notice?: MeganavNoticeProps;
783
824
  loginLink?: string;
784
825
  urlBase?: string;
785
826
  addSearchApiKey: string;
@@ -788,11 +829,119 @@ type MeganavProps = {
788
829
  };
789
830
  const Meganav: ({ paths, themeName, notice, loginLink, urlBase, addSearchApiKey, statusUrl, searchDataId, }: MeganavProps) => import("react/jsx-runtime").JSX.Element;
790
831
  export default Meganav;
832
+ //# sourceMappingURL=LegacyMeganav.d.ts.map
833
+ }
834
+
835
+ declare module '@ably/ui/core/LinkButton' {
836
+ import React from "react";
837
+ import { ButtonPropsBase } from "@ably/ui/core/Button";
838
+ import { ColorClass, ColorThemeSet } from "@ably/ui/core/styles/colors/types";
839
+ export type LinkButtonProps = ButtonPropsBase & {
840
+ disabled?: boolean;
841
+ onClick?: (event: React.MouseEvent<HTMLAnchorElement>) => void;
842
+ iconColor?: ColorClass | ColorThemeSet;
843
+ } & React.AnchorHTMLAttributes<HTMLAnchorElement>;
844
+ const LinkButton: React.FC<LinkButtonProps>;
845
+ export default LinkButton;
846
+ //# sourceMappingURL=LinkButton.d.ts.map
847
+ }
848
+
849
+ declare module '@ably/ui/core/Loader' {
850
+ type LoaderProps = {
851
+ size?: string;
852
+ ringColor?: string;
853
+ additionalCSS?: string;
854
+ };
855
+ const Loader: ({ ringColor, size, additionalCSS, }: LoaderProps) => import("react/jsx-runtime").JSX.Element;
856
+ export default Loader;
857
+ //# sourceMappingURL=Loader.d.ts.map
858
+ }
859
+
860
+ declare module '@ably/ui/core/Logo' {
861
+ import React from "react";
862
+ type LogoProps = {
863
+ dataId?: string;
864
+ logoUrl?: string;
865
+ logoAlt?: string;
866
+ href?: string;
867
+ additionalImgAttrs?: object;
868
+ additionalLinkAttrs?: object;
869
+ theme?: "light" | "dark";
870
+ variant?: "default" | "mono";
871
+ orientation?: "default" | "stacked";
872
+ };
873
+ const _default: React.MemoExoticComponent<({ dataId, href, additionalImgAttrs, additionalLinkAttrs, theme, variant, orientation, logoUrl, logoAlt, }: LogoProps) => import("react/jsx-runtime").JSX.Element>;
874
+ export default _default;
875
+ //# sourceMappingURL=Logo.d.ts.map
876
+ }
877
+
878
+ declare module '@ably/ui/core/Meganav/Meganav' {
879
+ import { HeaderSessionState } from ".@ably/ui/core/Header";
880
+ export type MeganavProps = {
881
+ sessionState: HeaderSessionState;
882
+ searchDataId: string;
883
+ };
884
+ const Meganav: ({ sessionState, searchDataId }: MeganavProps) => import("react/jsx-runtime").JSX.Element;
885
+ export default Meganav;
791
886
  //# sourceMappingURL=Meganav.d.ts.map
792
887
  }
793
888
 
889
+ declare module '@ably/ui/core/Meganav/MeganavMobile' {
890
+ import { AccordionData } from ".@ably/ui/core/Accordion/types";
891
+ export const MeganavMobile: ({ mobileNavItems, }: {
892
+ mobileNavItems: AccordionData[];
893
+ }) => import("react/jsx-runtime").JSX.Element;
894
+ //# sourceMappingURL=MeganavMobile.d.ts.map
895
+ }
896
+
897
+ declare module '@ably/ui/core/Meganav/MeganavPanel' {
898
+ import React from "react";
899
+ import { FlyoutPanelHighlight, FlyoutPanelList } from "@ably/ui/core/data";
900
+ export const MeganavPanel: ({ displayProductTile, panelLeft, panelLeftClassName, panelRightHeading, panelRightItems, panelRightBottom, }: {
901
+ displayProductTile?: boolean;
902
+ panelLeft?: FlyoutPanelHighlight;
903
+ panelLeftClassName?: string;
904
+ panelRightHeading?: string;
905
+ panelRightItems: FlyoutPanelList[];
906
+ panelRightBottom?: React.ReactNode;
907
+ }) => import("react/jsx-runtime").JSX.Element;
908
+ //# sourceMappingURL=MeganavPanel.d.ts.map
909
+ }
910
+
911
+ declare module '@ably/ui/core/Meganav/data' {
912
+ import React from "react";
913
+ import { IconName } from ".@ably/ui/core/Icon/types";
914
+ export type FlyoutPanelList = {
915
+ label: string;
916
+ icon: IconName;
917
+ link: string;
918
+ isMobile?: boolean;
919
+ };
920
+ export type FlyoutPanelHighlight = {
921
+ heading: string;
922
+ content: string;
923
+ labelLink: string;
924
+ url: string;
925
+ image: string;
926
+ };
927
+ export type MenuItem = {
928
+ name: string;
929
+ link?: string;
930
+ isHiddenMobile?: boolean;
931
+ content?: React.ReactNode;
932
+ panelClassName?: string;
933
+ };
934
+ export const menuItemLinks: {
935
+ name: string;
936
+ link: string;
937
+ isHiddenMobile: boolean;
938
+ }[];
939
+ export const menuItemsForHeader: MenuItem[];
940
+ //# sourceMappingURL=data.d.ts.map
941
+ }
942
+
794
943
  declare module '@ably/ui/core/MeganavBlogPostsList' {
795
- import { AbsUrl } from "@ably/ui/core/Meganav";
944
+ import { AbsUrl } from "@ably/ui/core/LegacyMeganav";
796
945
  type MeganavBlogPostsListProps = {
797
946
  recentBlogPosts: {
798
947
  link: string;
@@ -807,7 +956,7 @@ export default MeganavBlogPostsList;
807
956
  }
808
957
 
809
958
  declare module '@ably/ui/core/MeganavContentCompany' {
810
- import { AbsUrl, MeganavPaths } from "@ably/ui/core/Meganav";
959
+ import { AbsUrl, MeganavPaths } from "@ably/ui/core/LegacyMeganav";
811
960
  type MeganavContentCompanyProps = {
812
961
  absUrl: AbsUrl;
813
962
  paths?: MeganavPaths;
@@ -818,7 +967,7 @@ export default MeganavContentCompany;
818
967
  }
819
968
 
820
969
  declare module '@ably/ui/core/MeganavContentDevelopers' {
821
- import { AbsUrl } from "@ably/ui/core/Meganav";
970
+ import { AbsUrl } from "@ably/ui/core/LegacyMeganav";
822
971
  const MeganavContentDevelopers: ({ absUrl, statusUrl, }: {
823
972
  absUrl: AbsUrl;
824
973
  statusUrl: string;
@@ -828,7 +977,7 @@ export default MeganavContentDevelopers;
828
977
  }
829
978
 
830
979
  declare module '@ably/ui/core/MeganavContentProducts' {
831
- import { AbsUrl, MeganavPaths } from "@ably/ui/core/Meganav";
980
+ import { AbsUrl, MeganavPaths } from "@ably/ui/core/LegacyMeganav";
832
981
  type MeganavContentProductsProps = {
833
982
  paths?: MeganavPaths;
834
983
  absUrl: AbsUrl;
@@ -839,7 +988,7 @@ export default MeganavContentProducts;
839
988
  }
840
989
 
841
990
  declare module '@ably/ui/core/MeganavContentUseCases' {
842
- import { AbsUrl } from "@ably/ui/core/Meganav";
991
+ import { AbsUrl } from "@ably/ui/core/LegacyMeganav";
843
992
  const MeganavContentUseCases: ({ absUrl }: {
844
993
  absUrl: AbsUrl;
845
994
  }) => import("react/jsx-runtime").JSX.Element;
@@ -847,18 +996,9 @@ export default MeganavContentUseCases;
847
996
  //# sourceMappingURL=MeganavContentUseCases.d.ts.map
848
997
  }
849
998
 
850
- declare module '@ably/ui/core/MeganavControl/component' {
851
- export default MeganavControl;
852
- function MeganavControl(): {
853
- teardown: () => void;
854
- clear: () => void;
855
- }[];
856
- //# sourceMappingURL=component.d.ts.map
857
- }
858
-
859
999
  declare module '@ably/ui/core/MeganavControl' {
860
1000
  import { ReactNode } from "react";
861
- import { MeganavTheme } from "@ably/ui/core/Meganav";
1001
+ import { MeganavTheme } from "@ably/ui/core/LegacyMeganav";
862
1002
  type MeganavControlProps = {
863
1003
  ariaControls: string;
864
1004
  ariaLabel: string;
@@ -871,19 +1011,8 @@ export default MeganavControl;
871
1011
  //# sourceMappingURL=MeganavControl.d.ts.map
872
1012
  }
873
1013
 
874
- declare module '@ably/ui/core/MeganavControlMobileDropdown/component' {
875
- export default MeganavControlMobileDropdown;
876
- function MeganavControlMobileDropdown({ clearPanels }: {
877
- clearPanels: any;
878
- }): {
879
- teardown: () => void;
880
- clear: () => void;
881
- };
882
- //# sourceMappingURL=component.d.ts.map
883
- }
884
-
885
1014
  declare module '@ably/ui/core/MeganavControlMobileDropdown' {
886
- import { MeganavTheme } from "@ably/ui/core/Meganav";
1015
+ import { MeganavTheme } from "@ably/ui/core/LegacyMeganav";
887
1016
  const MeganavControlMobileDropdown: ({ theme }: {
888
1017
  theme: MeganavTheme;
889
1018
  }) => import("react/jsx-runtime").JSX.Element;
@@ -891,15 +1020,6 @@ export default MeganavControlMobileDropdown;
891
1020
  //# sourceMappingURL=MeganavControlMobileDropdown.d.ts.map
892
1021
  }
893
1022
 
894
- declare module '@ably/ui/core/MeganavControlMobilePanelClose/component' {
895
- function _default(): {
896
- teardown: () => void;
897
- clear: () => void;
898
- }[];
899
- export default _default;
900
- //# sourceMappingURL=component.d.ts.map
901
- }
902
-
903
1023
  declare module '@ably/ui/core/MeganavControlMobilePanelClose' {
904
1024
  type MeganavControlMobilePanelCloseProps = {
905
1025
  ariaControls: string;
@@ -910,15 +1030,6 @@ export default MeganavControlMobilePanelClose;
910
1030
  //# sourceMappingURL=MeganavControlMobilePanelClose.d.ts.map
911
1031
  }
912
1032
 
913
- declare module '@ably/ui/core/MeganavControlMobilePanelOpen/component' {
914
- function _default(): {
915
- teardown: () => void;
916
- clear: () => void;
917
- }[];
918
- export default _default;
919
- //# sourceMappingURL=component.d.ts.map
920
- }
921
-
922
1033
  declare module '@ably/ui/core/MeganavControlMobilePanelOpen' {
923
1034
  import { ReactNode } from "react";
924
1035
  type MeganavControlMobilePanelOpenProps = {
@@ -932,7 +1043,7 @@ export default MeganavControlMobilePanelOpen;
932
1043
 
933
1044
  declare module '@ably/ui/core/MeganavItemsDesktop' {
934
1045
  import React from "react";
935
- import { AbsUrl, MeganavPanels, MeganavPaths, MeganavTheme } from "@ably/ui/core/Meganav";
1046
+ import { AbsUrl, MeganavPanels, MeganavPaths, MeganavTheme } from "@ably/ui/core/LegacyMeganav";
936
1047
  type MeganavDesktopItems = {
937
1048
  panels: MeganavPanels;
938
1049
  paths?: MeganavPaths;
@@ -948,7 +1059,7 @@ export default _default;
948
1059
 
949
1060
  declare module '@ably/ui/core/MeganavItemsMobile' {
950
1061
  import React from "react";
951
- import { AbsUrl, MeganavPanels, MeganavPaths, MeganavSessionState, MeganavTheme } from "@ably/ui/core/Meganav";
1062
+ import { AbsUrl, MeganavPanels, MeganavPaths, MeganavSessionState, MeganavTheme } from "@ably/ui/core/LegacyMeganav";
952
1063
  type MeganavItemsMobileProps = {
953
1064
  panels: MeganavPanels;
954
1065
  paths?: MeganavPaths;
@@ -965,7 +1076,7 @@ export default _default;
965
1076
  }
966
1077
 
967
1078
  declare module '@ably/ui/core/MeganavItemsSignedIn' {
968
- import { AbsUrl, MeganavSessionState, MeganavTheme } from "@ably/ui/core/Meganav";
1079
+ import { AbsUrl, MeganavSessionState, MeganavTheme } from "@ably/ui/core/LegacyMeganav";
969
1080
  type MeganavItemsSignedIn = {
970
1081
  sessionState: MeganavSessionState;
971
1082
  theme: MeganavTheme;
@@ -978,7 +1089,7 @@ export default MeganavItemsSignedIn;
978
1089
  }
979
1090
 
980
1091
  declare module '@ably/ui/core/MeganavSearch' {
981
- import { AbsUrl } from "@ably/ui/core/Meganav";
1092
+ import { AbsUrl } from "@ably/ui/core/LegacyMeganav";
982
1093
  const MeganavSearch: ({ absUrl, dataId, }: {
983
1094
  absUrl: AbsUrl;
984
1095
  dataId?: string;
@@ -987,15 +1098,6 @@ export default MeganavSearch;
987
1098
  //# sourceMappingURL=MeganavSearch.d.ts.map
988
1099
  }
989
1100
 
990
- declare module '@ably/ui/core/MeganavSearchAutocomplete/component' {
991
- function _default(apiKey: any): {
992
- teardown: () => void;
993
- clear: () => void;
994
- }[];
995
- export default _default;
996
- //# sourceMappingURL=component.d.ts.map
997
- }
998
-
999
1101
  declare module '@ably/ui/core/MeganavSearchAutocomplete' {
1000
1102
  const MeganavSearchAutocomplete: () => import("react/jsx-runtime").JSX.Element;
1001
1103
  export default MeganavSearchAutocomplete;
@@ -1003,7 +1105,7 @@ export default MeganavSearchAutocomplete;
1003
1105
  }
1004
1106
 
1005
1107
  declare module '@ably/ui/core/MeganavSearchPanel' {
1006
- import { AbsUrl } from "@ably/ui/core/Meganav";
1108
+ import { AbsUrl } from "@ably/ui/core/LegacyMeganav";
1007
1109
  const MeganavSearchPanel: ({ absUrl }: {
1008
1110
  absUrl: AbsUrl;
1009
1111
  }) => import("react/jsx-runtime").JSX.Element;
@@ -1011,17 +1113,8 @@ export default MeganavSearchPanel;
1011
1113
  //# sourceMappingURL=MeganavSearchPanel.d.ts.map
1012
1114
  }
1013
1115
 
1014
- declare module '@ably/ui/core/MeganavSearchSuggestions/component' {
1015
- export default MeganavSearchSuggestions;
1016
- function MeganavSearchSuggestions(): {
1017
- teardown: () => void;
1018
- clear: () => void;
1019
- };
1020
- //# sourceMappingURL=component.d.ts.map
1021
- }
1022
-
1023
1116
  declare module '@ably/ui/core/MeganavSearchSuggestions' {
1024
- import { AbsUrl } from "@ably/ui/core/Meganav";
1117
+ import { AbsUrl } from "@ably/ui/core/LegacyMeganav";
1025
1118
  type MeganavSearchSuggestionsProps = {
1026
1119
  absUrl: AbsUrl;
1027
1120
  displaySupportLink: boolean;
@@ -1248,7 +1341,7 @@ export default ProductTile;
1248
1341
 
1249
1342
  declare module '@ably/ui/core/SignOutLink' {
1250
1343
  import { MouseEventHandler, ReactNode } from "react";
1251
- import { AbsUrl } from "@ably/ui/core/Meganav";
1344
+ import { AbsUrl } from "@ably/ui/core/LegacyMeganav";
1252
1345
  type SignOutLinkProps = {
1253
1346
  token: string;
1254
1347
  href: string;
@@ -1462,13 +1555,6 @@ export function queryIdAll(val: any, root?: Document): NodeListOf<Element>;
1462
1555
  //# sourceMappingURL=dom-query.d.ts.map
1463
1556
  }
1464
1557
 
1465
- declare module '@ably/ui/core/hooks/use-rails-ujs-hooks' {
1466
- import { RefObject } from "react";
1467
- const useRailsUjsLinks: () => RefObject<HTMLDivElement>;
1468
- export default useRailsUjsLinks;
1469
- //# sourceMappingURL=use-rails-ujs-hooks.d.ts.map
1470
- }
1471
-
1472
1558
  declare module '@ably/ui/core/hubspot-chat-toggle' {
1473
1559
  export default function toggleChatWidget(params: any): (() => void) | undefined;
1474
1560
  //# sourceMappingURL=hubspot-chat-toggle.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ably/ui",
3
- "version": "15.6.0-dev.274a3001",
3
+ "version": "15.6.0-dev.bdcefb0",
4
4
  "description": "Home of the Ably design system library ([design.ably.com](https://design.ably.com)). It provides a showcase, development/test environment and a publishing pipeline for different distributables.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,2 +0,0 @@
1
- import throttle from"lodash.throttle";import{queryId,queryIdAll}from"../dom-query";import MeganavControl from"../MeganavControl/component.js";import MeganavControlMobileDropdown from"../MeganavControlMobileDropdown/component.js";import MobilePanelOpenClick from"../MeganavControlMobilePanelOpen/component.js";import MobilePanelCloseClick from"../MeganavControlMobilePanelClose/component.js";import MeganavSearchAutocomplete from"../MeganavSearchAutocomplete/component.js";import MeganavSearchSuggestions from"../MeganavSearchSuggestions/component.js";const windowOnBlur=closeAll=>{window.onblur=()=>closeAll();return{teardown:()=>window.onblur=null}};const documentClick=closeAll=>{const meganav=queryId("meganav");const clickHandler=e=>{if(meganav.contains(e.target))return;closeAll()};document.addEventListener("click",clickHandler);return{teardown:()=>document.removeEventListener("click",clickHandler)}};const documentScroll=themeName=>{if(themeName!=="transparentToWhite")return{teardown:()=>{}};const meganav=queryId("meganav");const navItems=queryIdAll("meganav-link");const controlMobileDropdownMenu=queryId("meganav-control-mobile-dropdown-menu");const controlMobileDropdownClose=queryId("meganav-control-mobile-dropdown-close");const controls=queryIdAll("meganav-control");const signUpBtn=queryId("meganav-sign-up-btn");const invertTextCollection=[...Array.from(controls),...Array.from(navItems),queryId("meganav-logo")];const invertMobleDropdownColor=invert=>{const whiteToBlack=["ui-icon-white","ui-icon-cool-black"];const blackToWhite=[...whiteToBlack].reverse();if(invert){controlMobileDropdownMenu?.classList.replace(...whiteToBlack);controlMobileDropdownClose?.classList.replace(...whiteToBlack)}else{controlMobileDropdownMenu?.classList.replace(...blackToWhite);controlMobileDropdownClose?.classList.replace(...blackToWhite)}};const inverSignupBtnColors=invert=>{if(invert){signUpBtn?.classList.replace("bg-white","bg-cool-black");signUpBtn?.classList.replace("text-cool-black","text-white")}else{signUpBtn?.classList.replace("bg-cool-black","bg-white");signUpBtn?.classList.replace("text-white","text-cool-black")}};const scrollHandler=throttle(()=>{if(window.scrollY>5){meganav.classList.replace("bg-transparent","bg-white");inverSignupBtnColors(true);invertMobleDropdownColor(true);invertTextCollection.forEach(n=>n.classList.replace("text-white","text-cool-black"))}else{meganav.classList.replace("bg-white","bg-transparent");inverSignupBtnColors(false);invertMobleDropdownColor(false);invertTextCollection.forEach(n=>n.classList.replace("text-cool-black","text-white"))}},150);document.addEventListener("scroll",scrollHandler);return{teardown:()=>document.removeEventListener("scroll",scrollHandler)}};export default function Meganav({themeName,addSearchApiKey}){const controls=MeganavControl();const panelOpenControls=MobilePanelOpenClick();const panelCloseControls=MobilePanelCloseClick();const search=MeganavSearchAutocomplete(addSearchApiKey);const searchSuggestions=MeganavSearchSuggestions();const mobileDropdownControl=MeganavControlMobileDropdown({clearPanels:()=>[...panelOpenControls,...panelCloseControls].forEach(i=>i.clear())});const closeAll=()=>[mobileDropdownControl,searchSuggestions,...panelOpenControls,...panelCloseControls,...controls,...search].forEach(i=>i.clear());const teardowns=[documentScroll(themeName??null),documentClick(closeAll),windowOnBlur(closeAll),mobileDropdownControl,searchSuggestions,...controls,...panelOpenControls,...panelCloseControls,...search].map(i=>i.teardown);return()=>teardowns.forEach(teardown=>teardown())}
2
- //# sourceMappingURL=component.js.map
package/core/Meganav.js DELETED
@@ -1,2 +0,0 @@
1
- import React,{useEffect,useState}from"react";import{connectState}from"./remote-data-store.js";import{selectSessionData}from"./remote-session-data.js";import Logo from"./Logo";import MeganavData from"./Meganav/component.json";import MeganavScripts from"./Meganav/component.js";import MeganavItemsDesktop from"./MeganavItemsDesktop";import MeganavItemsSignedIn from"./MeganavItemsSignedIn";import MeganavItemsMobile from"./MeganavItemsMobile";import Notice from"./Notice";import _absUrl from"./url-base.js";import MeganavContentProducts from"./MeganavContentProducts";import MeganavContentUseCases from"./MeganavContentUseCases";import MeganavContentCompany from"./MeganavContentCompany";import MeganavContentDevelopers from"./MeganavContentDevelopers";import MeganavSearch from"./MeganavSearch";const SignIn=({sessionState,theme,loginLink,absUrl,searchDataId})=>{return sessionState.signedIn?React.createElement(MeganavItemsSignedIn,{absUrl:absUrl,sessionState:sessionState,theme:theme,searchDataId:searchDataId}):React.createElement("ul",{className:"hidden md:flex items-center"},React.createElement("li",{className:"ui-meganav-item"},React.createElement("a",{href:absUrl("/contact"),className:`ui-meganav-link ${theme.textColor}`,"data-id":"meganav-link"},"Contact us")),React.createElement("li",{className:"ui-meganav-item"},React.createElement("a",{href:absUrl(loginLink),className:`ui-meganav-link mr-0 ${theme.textColor}`,"data-id":"meganav-link"},"Login")),React.createElement("li",{className:"ui-meganav-item"},React.createElement(MeganavSearch,{absUrl:absUrl,dataId:searchDataId})),React.createElement("li",{className:"ui-meganav-item"},React.createElement("a",{href:absUrl("/sign-up"),"data-id":"meganav-sign-up-btn",className:`ui-btn p-btn-small ${theme.buttonBackgroundColor} ${theme.buttonTextColor}`},"Sign up free")))};const SignInPlaceholder=()=>React.createElement("div",null);const panels={MeganavContentProducts,MeganavContentUseCases,MeganavContentCompany,MeganavContentDevelopers};const Meganav=({paths,themeName="white",notice,loginLink="/login",urlBase,addSearchApiKey,statusUrl,searchDataId})=>{const[sessionState,setSessionState]=useState();useEffect(()=>{connectState(selectSessionData,setSessionState)},[]);useEffect(()=>{const teardown=MeganavScripts({themeName,addSearchApiKey});return()=>teardown()},[sessionState]);const theme=MeganavData.themes[themeName];const absUrl=path=>_absUrl(path,urlBase);return React.createElement("nav",{className:`ui-meganav-wrapper ${theme.backgroundColor} ${theme.barShadow}`,"data-id":"meganav","aria-label":"Main"},notice&&React.createElement(Notice,{...notice.props,config:notice.config}),React.createElement("div",{className:"ui-meganav ui-grid-px"},React.createElement("div",{className:"mr-24"},React.createElement(Logo,{dataId:"meganav-logo",href:urlBase,logoUrl:paths?.logo})),React.createElement(MeganavItemsDesktop,{panels:panels,paths:paths,theme:theme,absUrl:absUrl,statusUrl:statusUrl}),sessionState?React.createElement(SignIn,{sessionState:sessionState,theme:theme,loginLink:loginLink,absUrl:absUrl,searchDataId:searchDataId}):React.createElement(SignInPlaceholder,null),React.createElement(MeganavItemsMobile,{panels:panels,sessionState:sessionState,paths:paths,theme:theme,loginLink:loginLink,absUrl:absUrl,statusUrl:statusUrl,searchDataId:searchDataId})))};export default Meganav;
2
- //# sourceMappingURL=Meganav.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/core/Meganav.tsx"],"sourcesContent":["import React, { ReactNode, useEffect, useState } from \"react\";\n\nimport { connectState } from \"./remote-data-store.js\";\nimport { selectSessionData } from \"./remote-session-data.js\";\n\nimport Logo from \"./Logo\";\nimport MeganavData from \"./Meganav/component.json\";\nimport MeganavScripts from \"./Meganav/component.js\";\nimport MeganavItemsDesktop from \"./MeganavItemsDesktop\";\nimport MeganavItemsSignedIn from \"./MeganavItemsSignedIn\";\nimport MeganavItemsMobile from \"./MeganavItemsMobile\";\nimport Notice from \"./Notice\";\nimport _absUrl from \"./url-base.js\";\nimport MeganavContentProducts from \"./MeganavContentProducts\";\nimport MeganavContentUseCases from \"./MeganavContentUseCases\";\nimport MeganavContentCompany from \"./MeganavContentCompany\";\nimport MeganavContentDevelopers from \"./MeganavContentDevelopers\";\nimport MeganavSearch from \"./MeganavSearch\";\nimport { ColorClass } from \"./styles/colors/types\";\n\nexport type MeganavTheme = {\n backgroundColor?: ColorClass;\n textColor?: ColorClass;\n buttonBackgroundColor?: ColorClass;\n buttonTextColor?: ColorClass;\n mobileMenuColor: ColorClass;\n logoTextColor?: ColorClass;\n barShadow?: string;\n};\n\nexport type AbsUrl = (path: string) => string;\n\nexport type MeganavPaths = {\n logo?: string;\n iconSprites: string;\n ablyStack: string;\n awsLogo?: string;\n};\n\nexport type MeganavPanels = {\n [index: string]: ({\n paths,\n absUrl,\n statusUrl,\n }: {\n paths?: MeganavPaths;\n absUrl: (path: string) => string;\n statusUrl: string;\n }) => ReactNode;\n};\n\nexport type MeganavSessionState = {\n signedIn: boolean;\n logOut: {\n token: string;\n href: string;\n text: string;\n };\n accountName: string;\n preferredEmail: string;\n account: {\n links: {\n dashboard: {\n href: string;\n };\n };\n };\n mySettings: {\n text: string;\n href: string;\n };\n myAccessTokens: {\n text: string;\n href: string;\n };\n};\n\ntype SignInProps = {\n sessionState: MeganavSessionState;\n theme: MeganavTheme;\n loginLink: string;\n absUrl: AbsUrl;\n searchDataId?: string;\n};\n\n// This type is based on the API response from the notice API and the data\n// passed into the Meganav component, which then turns it into something\n// the Notice component can use. The type is exported for the benefit of\n// Voltaire\nexport type NoticeApiProps = {\n props: {\n title: string;\n bodyText: string;\n buttonLink: string;\n buttonLabel: string;\n closeBtn: boolean;\n };\n config: {\n cookieId: string;\n noticeId: string | number;\n options: {\n collapse: boolean;\n };\n };\n};\n\ntype MeganavProps = {\n paths?: MeganavPaths;\n themeName: \"white\" | \"black\" | \"transparentToWhite\";\n notice?: NoticeApiProps;\n loginLink?: string;\n urlBase?: string;\n addSearchApiKey: string;\n statusUrl: string;\n searchDataId?: string;\n};\n\nconst SignIn = ({\n sessionState,\n theme,\n loginLink,\n absUrl,\n searchDataId,\n}: SignInProps) => {\n return sessionState.signedIn ? (\n <MeganavItemsSignedIn\n absUrl={absUrl}\n sessionState={sessionState}\n theme={theme}\n searchDataId={searchDataId}\n />\n ) : (\n <ul className=\"hidden md:flex items-center\">\n <li className=\"ui-meganav-item\">\n <a\n href={absUrl(\"/contact\")}\n className={`ui-meganav-link ${theme.textColor}`}\n data-id=\"meganav-link\"\n >\n Contact us\n </a>\n </li>\n <li className=\"ui-meganav-item\">\n <a\n href={absUrl(loginLink)}\n className={`ui-meganav-link mr-0 ${theme.textColor}`}\n data-id=\"meganav-link\"\n >\n Login\n </a>\n </li>\n <li className=\"ui-meganav-item\">\n <MeganavSearch absUrl={absUrl} dataId={searchDataId} />\n </li>\n <li className=\"ui-meganav-item\">\n <a\n href={absUrl(\"/sign-up\")}\n data-id=\"meganav-sign-up-btn\"\n className={`ui-btn p-btn-small ${theme.buttonBackgroundColor} ${theme.buttonTextColor}`}\n >\n Sign up free\n </a>\n </li>\n </ul>\n );\n};\n\nconst SignInPlaceholder = () => <div />;\n\nconst panels = {\n MeganavContentProducts,\n MeganavContentUseCases,\n MeganavContentCompany,\n MeganavContentDevelopers,\n};\n\nconst Meganav = ({\n paths,\n themeName = \"white\",\n notice,\n loginLink = \"/login\",\n urlBase,\n addSearchApiKey,\n statusUrl,\n searchDataId,\n}: MeganavProps) => {\n const [sessionState, setSessionState] = useState<MeganavSessionState>();\n\n useEffect(() => {\n // Note if state is never updated, sessionState stays null and never removes the placeholder.\n // This makes SSR consistent (ie. we always show the placeholder)\n connectState(selectSessionData, setSessionState);\n }, []);\n\n useEffect(() => {\n const teardown = MeganavScripts({ themeName, addSearchApiKey });\n return () => teardown();\n }, [sessionState]);\n\n const theme = MeganavData.themes[themeName] as MeganavTheme;\n const absUrl = (path: string) => _absUrl(path, urlBase);\n\n return (\n <nav\n className={`ui-meganav-wrapper ${theme.backgroundColor} ${theme.barShadow}`}\n data-id=\"meganav\"\n aria-label=\"Main\"\n >\n {notice && <Notice {...notice.props} config={notice.config} />}\n <div className=\"ui-meganav ui-grid-px\">\n <div className=\"mr-24\">\n <Logo dataId=\"meganav-logo\" href={urlBase} logoUrl={paths?.logo} />\n </div>\n\n <MeganavItemsDesktop\n panels={panels}\n paths={paths}\n theme={theme}\n absUrl={absUrl}\n statusUrl={statusUrl}\n />\n\n {/* Because we load the session state through fetch, we display a placeholder until fetch returns */}\n {sessionState ? (\n <SignIn\n sessionState={sessionState}\n theme={theme}\n loginLink={loginLink}\n absUrl={absUrl}\n searchDataId={searchDataId}\n />\n ) : (\n <SignInPlaceholder />\n )}\n\n <MeganavItemsMobile\n panels={panels}\n sessionState={sessionState}\n paths={paths}\n theme={theme}\n loginLink={loginLink}\n absUrl={absUrl}\n statusUrl={statusUrl}\n searchDataId={searchDataId}\n />\n </div>\n </nav>\n );\n};\n\nexport default Meganav;\n"],"names":["React","useEffect","useState","connectState","selectSessionData","Logo","MeganavData","MeganavScripts","MeganavItemsDesktop","MeganavItemsSignedIn","MeganavItemsMobile","Notice","_absUrl","MeganavContentProducts","MeganavContentUseCases","MeganavContentCompany","MeganavContentDevelopers","MeganavSearch","SignIn","sessionState","theme","loginLink","absUrl","searchDataId","signedIn","ul","className","li","a","href","textColor","data-id","dataId","buttonBackgroundColor","buttonTextColor","SignInPlaceholder","div","panels","Meganav","paths","themeName","notice","urlBase","addSearchApiKey","statusUrl","setSessionState","teardown","themes","path","nav","backgroundColor","barShadow","aria-label","props","config","logoUrl","logo"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{queryIdAll}from"../dom-query";import{selectRecentBlogPosts}from"../remote-blogs-posts";import{connectState}from"../remote-data-store";const template=({link,title,pubDate})=>{const[li,a,heading,copy]=["li","a","p","p"].map(el=>document.createElement(el));a.href=link;a.classList.add("ui-meganav-media","group");heading.textContent=title;heading.classList.add("ui-meganav-media-heading");copy.textContent=pubDate;copy.classList.add("ui-meganav-media-copy");a.appendChild(heading);a.appendChild(copy);li.appendChild(a);return li};export default(()=>{connectState(selectRecentBlogPosts,recentBlogPosts=>{if(Array.isArray(recentBlogPosts)&&recentBlogPosts.length>0){const sections=queryIdAll("meganav-company-panel-blog-section");const containers=queryIdAll("meganav-company-panel-recent-blog-posts");Array.from(containers).forEach(container=>{const fragment=document.createDocumentFragment();recentBlogPosts.forEach(post=>fragment.appendChild(template(post)));container.appendChild(fragment)});Array.from(sections).forEach(section=>section.classList.remove("hidden"))}})});
2
- //# sourceMappingURL=component.js.map