@ably/ui 14.0.0-dev.75dcb64 → 14.0.0-dev.968e4a2

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 (149) hide show
  1. package/README.md +10 -8
  2. package/core/.DS_Store +0 -0
  3. package/core/Accordion/component.js +0 -0
  4. package/core/Accordion.js +1 -1
  5. package/core/Code.js +1 -1
  6. package/core/ConnectStateWrapper/component.js +0 -0
  7. package/core/ConnectStateWrapper.js +1 -1
  8. package/core/ContactFooter.js +1 -1
  9. package/core/CookieMessage/component.js +1 -0
  10. package/core/CookieMessage.js +1 -1
  11. package/core/CustomerLogos/component.js +0 -0
  12. package/core/DropdownMenu/component.js +0 -0
  13. package/core/DropdownMenu.js +1 -1
  14. package/core/FeaturedLink/component.js +0 -0
  15. package/core/FeaturedLink.js +1 -1
  16. package/core/Flash/component.js +1 -0
  17. package/core/Flash.js +1 -1
  18. package/core/Footer/component.js +1 -0
  19. package/core/Footer.js +1 -1
  20. package/core/Icon/component.js +0 -0
  21. package/core/Loader/component.js +0 -0
  22. package/core/Logo/component.js +0 -0
  23. package/core/Meganav.js +1 -1
  24. package/core/MeganavBlogPostsList.js +1 -1
  25. package/core/MeganavContentCompany/.DS_Store +0 -0
  26. package/core/MeganavContentCompany/component.js +0 -0
  27. package/core/MeganavContentCompany.js +1 -1
  28. package/core/MeganavContentDevelopers/.DS_Store +0 -0
  29. package/core/MeganavContentDevelopers/component.js +0 -0
  30. package/core/MeganavContentDevelopers.js +1 -1
  31. package/core/MeganavContentProducts/.DS_Store +0 -0
  32. package/core/MeganavContentProducts/component.js +0 -0
  33. package/core/MeganavContentProducts.js +1 -1
  34. package/core/MeganavContentUseCases/.DS_Store +0 -0
  35. package/core/MeganavContentUseCases/component.js +0 -0
  36. package/core/MeganavContentUseCases.js +1 -1
  37. package/core/MeganavControl.js +1 -1
  38. package/core/MeganavControlMobileDropdown.js +1 -1
  39. package/core/MeganavControlMobilePanelClose.js +1 -1
  40. package/core/MeganavControlMobilePanelOpen.js +1 -1
  41. package/core/MeganavItemsDesktop/.DS_Store +0 -0
  42. package/core/MeganavItemsDesktop/component.js +0 -0
  43. package/core/MeganavItemsDesktop.js +1 -1
  44. package/core/MeganavItemsMobile/.DS_Store +0 -0
  45. package/core/MeganavItemsMobile/component.js +0 -0
  46. package/core/MeganavItemsMobile.js +1 -1
  47. package/core/MeganavItemsSignedIn/.DS_Store +0 -0
  48. package/core/MeganavItemsSignedIn/component.js +0 -0
  49. package/core/MeganavItemsSignedIn.js +1 -1
  50. package/core/MeganavSearch/.DS_Store +0 -0
  51. package/core/MeganavSearch/component.js +0 -0
  52. package/core/MeganavSearch.js +1 -1
  53. package/core/MeganavSearchPanel/.DS_Store +0 -0
  54. package/core/MeganavSearchPanel/component.js +0 -0
  55. package/core/MeganavSearchPanel.js +1 -1
  56. package/core/MeganavSearchSuggestions.js +1 -1
  57. package/core/Notice/component.js +1 -1
  58. package/core/Notice.js +1 -1
  59. package/core/SignOutLink/.DS_Store +0 -0
  60. package/core/SignOutLink/component.js +0 -0
  61. package/core/Slider.js +1 -1
  62. package/core/Table/TableCell.js +1 -1
  63. package/core/Table/data.js +1 -1
  64. package/core/Table.js +1 -1
  65. package/core/Tooltip.js +1 -1
  66. package/package.json +2 -1
  67. package/src/core/.DS_Store +0 -0
  68. package/src/core/Accordion/Accordion.stories.tsx +1 -1
  69. package/src/core/Accordion/component.js +0 -0
  70. package/src/core/Accordion.tsx +1 -1
  71. package/src/core/Code/Code.stories.tsx +1 -1
  72. package/src/core/Code.tsx +3 -3
  73. package/src/core/ConnectStateWrapper/component.js +0 -0
  74. package/src/core/ConnectStateWrapper.tsx +1 -1
  75. package/src/core/ContactFooter/ContactFooter.stories.tsx +1 -1
  76. package/src/core/ContactFooter.tsx +4 -4
  77. package/src/core/CookieMessage/CookieMessage.stories.tsx +1 -1
  78. package/src/core/CookieMessage/component.js +1 -0
  79. package/src/core/CookieMessage.tsx +2 -2
  80. package/src/core/CustomerLogos/CustomerLogos.stories.tsx +1 -1
  81. package/src/core/CustomerLogos/component.js +0 -0
  82. package/src/core/DropdownMenu/DropdownMenu.stories.tsx +2 -2
  83. package/src/core/DropdownMenu/component.js +0 -0
  84. package/src/core/DropdownMenu.tsx +1 -1
  85. package/src/core/FeaturedLink/FeaturedLink.stories.tsx +1 -1
  86. package/src/core/FeaturedLink/component.js +0 -0
  87. package/src/core/FeaturedLink.tsx +1 -1
  88. package/src/core/Flash/Flash.stories.tsx +1 -1
  89. package/src/core/Flash/component.js +1 -0
  90. package/src/core/Flash.tsx +4 -4
  91. package/src/core/Footer/Footer.stories.tsx +1 -1
  92. package/src/core/Footer/component.js +1 -0
  93. package/src/core/Footer.tsx +3 -3
  94. package/src/core/Icon/Icon.stories.tsx +1 -1
  95. package/src/core/Icon/component.js +0 -0
  96. package/src/core/Loader/Loader.stories.tsx +1 -1
  97. package/src/core/Loader/component.js +0 -0
  98. package/src/core/Logo/Logo.stories.tsx +1 -1
  99. package/src/core/Logo/component.js +0 -0
  100. package/src/core/Meganav/Meganav.stories.tsx +1 -1
  101. package/src/core/Meganav.tsx +19 -17
  102. package/src/core/MeganavBlogPostsList.tsx +2 -2
  103. package/src/core/MeganavContentCompany/.DS_Store +0 -0
  104. package/src/core/MeganavContentCompany/component.js +0 -0
  105. package/src/core/MeganavContentCompany.tsx +5 -5
  106. package/src/core/MeganavContentDevelopers/.DS_Store +0 -0
  107. package/src/core/MeganavContentDevelopers/component.js +0 -0
  108. package/src/core/MeganavContentDevelopers.tsx +2 -2
  109. package/src/core/MeganavContentProducts/.DS_Store +0 -0
  110. package/src/core/MeganavContentProducts/component.js +0 -0
  111. package/src/core/MeganavContentProducts.tsx +2 -2
  112. package/src/core/MeganavContentUseCases/.DS_Store +0 -0
  113. package/src/core/MeganavContentUseCases/component.js +1 -0
  114. package/src/core/MeganavContentUseCases.tsx +2 -2
  115. package/src/core/MeganavControl.tsx +2 -2
  116. package/src/core/MeganavControlMobileDropdown.tsx +2 -2
  117. package/src/core/MeganavControlMobilePanelClose.tsx +2 -1
  118. package/src/core/MeganavControlMobilePanelOpen.tsx +2 -1
  119. package/src/core/MeganavItemsDesktop/.DS_Store +0 -0
  120. package/src/core/MeganavItemsDesktop/component.js +0 -0
  121. package/src/core/MeganavItemsDesktop.tsx +3 -3
  122. package/src/core/MeganavItemsMobile/.DS_Store +0 -0
  123. package/src/core/MeganavItemsMobile/component.js +0 -0
  124. package/src/core/MeganavItemsMobile.tsx +9 -9
  125. package/src/core/MeganavItemsSignedIn/.DS_Store +0 -0
  126. package/src/core/MeganavItemsSignedIn/component.js +0 -0
  127. package/src/core/MeganavItemsSignedIn.tsx +8 -4
  128. package/src/core/MeganavSearch/.DS_Store +0 -0
  129. package/src/core/MeganavSearch/component.js +0 -0
  130. package/src/core/MeganavSearch.tsx +3 -3
  131. package/src/core/MeganavSearchPanel/.DS_Store +0 -0
  132. package/src/core/MeganavSearchPanel/component.js +0 -0
  133. package/src/core/MeganavSearchPanel.tsx +4 -4
  134. package/src/core/MeganavSearchSuggestions.tsx +2 -2
  135. package/src/core/Notice/component.js +1 -1
  136. package/src/core/Notice.tsx +4 -3
  137. package/src/core/SignOutLink/.DS_Store +0 -0
  138. package/src/core/SignOutLink/component.js +0 -0
  139. package/src/core/SignOutLink.tsx +1 -1
  140. package/src/core/Slider/Slider.stories.tsx +1 -1
  141. package/src/core/Slider.tsx +3 -3
  142. package/src/core/Table/TableCell.tsx +1 -1
  143. package/src/core/Table/data.tsx +3 -3
  144. package/src/core/Table.tsx +3 -3
  145. package/src/core/Tooltip/Tooltip.stories.tsx +1 -1
  146. package/src/core/Tooltip.tsx +2 -1
  147. package/src/pages/Buttons.mdx +1 -1
  148. package/src/pages/Chips.mdx +1 -1
  149. package/src/pages/Forms.mdx +2 -2
@@ -1 +1 @@
1
- import React from"react";import MeganavControl from"./MeganavControl";import SignOutLink from"./SignOutLink";import MeganavSearch from"./MeganavSearch";const truncate=(string,length)=>{return(string===null||string===void 0?void 0:string.length)&&string.length>length?`${string.slice(0,length-1)}…`:string};const MeganavItemsSignedIn=({sessionState,theme,absUrl})=>{const links=sessionState.account?Object.keys(sessionState.account.links).map(key=>sessionState.account.links[key]):[];const accountName=truncate(sessionState.accountName,20);const preferredEmail=truncate(sessionState.preferredEmail,20);return React.createElement("ul",{className:"hidden md:flex items-center"},React.createElement("li",{className:"ui-meganav-item relative"},React.createElement(MeganavControl,{ariaControls:"account-panel",ariaLabel:"Account",theme:theme,additionalCSS:"mr-0"},accountName),React.createElement("div",{className:"ui-meganav-panel-account invisible",id:"account-panel","data-id":"meganav-panel"},sessionState.account&&React.createElement(React.Fragment,null,React.createElement("p",{className:"ui-meganav-overline mt-16 mx-16"},"Your account"),React.createElement("ul",{className:"mb-16 mx-16"},links.map(item=>React.createElement("li",{key:item.href},React.createElement("a",{className:"ui-meganav-account-link",href:absUrl(item.href)},item.text))))),React.createElement("p",{className:"ui-meganav-overline mx-16"},preferredEmail),React.createElement("ul",{className:"mb-8 mx-16"},React.createElement("li",null,React.createElement("a",{href:absUrl(sessionState.mySettings.href),className:"ui-meganav-account-link"},sessionState.mySettings.text)),sessionState.myAccessTokens&&React.createElement("li",null,React.createElement("a",{href:absUrl(sessionState.myAccessTokens.href),className:"ui-meganav-account-link"},sessionState.myAccessTokens.text,React.createElement("span",{className:"ui-version-tag"},"preview")))),React.createElement("hr",{className:"ui-meganav-hr mb-16"}),sessionState.logOut&&React.createElement("div",{className:"mb-16 px-16"},React.createElement(SignOutLink,{absUrl:absUrl,...sessionState.logOut},({text,href,onClick})=>React.createElement("a",{onClick:onClick,href:absUrl(href),className:"ui-meganav-account-link"},text))))),React.createElement("li",null,React.createElement(MeganavSearch,{absUrl:absUrl})),sessionState.account&&React.createElement("li",null,React.createElement("a",{href:absUrl(sessionState.account.links.dashboard.href),className:"ui-btn-secondary p-btn-small"},"Dashboard")))};export default MeganavItemsSignedIn;
1
+ import React from"react";import MeganavControl from"../MeganavControl/component.tsx";import SignOutLink from"../SignOutLink/component.tsx";import MeganavSearch from"../MeganavSearch/component.tsx";const truncate=(string,length)=>{return(string===null||string===void 0?void 0:string.length)&&string.length>length?`${string.slice(0,length-1)}…`:string};const MeganavItemsSignedIn=({sessionState,theme,absUrl})=>{const links=sessionState.account?Object.keys(sessionState.account.links).map(key=>sessionState.account.links[key]):[];const accountName=truncate(sessionState.accountName,20);const preferredEmail=truncate(sessionState.preferredEmail,20);return React.createElement("ul",{className:"hidden md:flex items-center"},React.createElement("li",{className:"ui-meganav-item relative"},React.createElement(MeganavControl,{ariaControls:"account-panel",ariaLabel:"Account",theme:theme,additionalCSS:"mr-0"},accountName),React.createElement("div",{className:"ui-meganav-panel-account invisible",id:"account-panel","data-id":"meganav-panel"},sessionState.account&&React.createElement(React.Fragment,null,React.createElement("p",{className:"ui-meganav-overline mt-16 mx-16"},"Your account"),React.createElement("ul",{className:"mb-16 mx-16"},links.map(item=>React.createElement("li",{key:item.href},React.createElement("a",{className:"ui-meganav-account-link",href:absUrl(item.href)},item.text))))),React.createElement("p",{className:"ui-meganav-overline mx-16"},preferredEmail),React.createElement("ul",{className:"mb-8 mx-16"},React.createElement("li",null,React.createElement("a",{href:absUrl(sessionState.mySettings.href),className:"ui-meganav-account-link"},sessionState.mySettings.text)),sessionState.myAccessTokens&&React.createElement("li",null,React.createElement("a",{href:absUrl(sessionState.myAccessTokens.href),className:"ui-meganav-account-link"},sessionState.myAccessTokens.text,React.createElement("span",{className:"ui-version-tag"},"preview")))),React.createElement("hr",{className:"ui-meganav-hr mb-16"}),sessionState.logOut&&React.createElement("div",{className:"mb-16 px-16"},React.createElement(SignOutLink,{absUrl:absUrl,...sessionState.logOut},({text,href,onClick})=>React.createElement("a",{onClick:onClick,href:absUrl(href),className:"ui-meganav-account-link"},text))))),React.createElement("li",null,React.createElement(MeganavSearch,{absUrl:absUrl})),sessionState.account&&React.createElement("li",null,React.createElement("a",{href:absUrl(sessionState.account.links.dashboard.href),className:"ui-btn-secondary p-btn-small"},"Dashboard")))};export default MeganavItemsSignedIn;
Binary file
File without changes
@@ -1 +1 @@
1
- import React from"react";import Icon from"./Icon";import MeganavSearchPanel from"./MeganavSearchPanel";const MeganavSearch=({absUrl})=>React.createElement(React.Fragment,null,React.createElement("button",{type:"button","data-id":"meganav-control","data-control":"search",className:"h-64 w-24 px-24 pr-48 py-20 group focus:outline-none","aria-expanded":"false","aria-controls":"panel-search","aria-label":`Show Search Panel`},React.createElement(Icon,{name:"icon-gui-search",color:"text-cool-black",size:"1.5rem",additionalCSS:"group-hover:text-gui-hover group-focus:text-gui-focus"})),React.createElement("div",{className:"ui-meganav-panel invisible",id:"panel-search","data-id":"meganav-panel"},React.createElement(MeganavSearchPanel,{absUrl:absUrl})));export default MeganavSearch;
1
+ import React from"react";import Icon from"../Icon/component.tsx";import MeganavSearchPanel from"../MeganavSearchPanel/component.tsx";const MeganavSearch=({absUrl})=>React.createElement(React.Fragment,null,React.createElement("button",{type:"button","data-id":"meganav-control","data-control":"search",className:"h-64 w-24 px-24 pr-48 py-20 group focus:outline-none","aria-expanded":"false","aria-controls":"panel-search","aria-label":`Show Search Panel`},React.createElement(Icon,{name:"icon-gui-search",color:"text-cool-black",size:"1.5rem",additionalCSS:"group-hover:text-gui-hover group-focus:text-gui-focus"})),React.createElement("div",{className:"ui-meganav-panel invisible",id:"panel-search","data-id":"meganav-panel"},React.createElement(MeganavSearchPanel,{absUrl:absUrl})));export default MeganavSearch;
File without changes
@@ -1 +1 @@
1
- import React from"react";import Icon from"./Icon";import MeganavSearchSuggestions from"./MeganavSearchSuggestions";import MeganavSearchAutocomplete from"./MeganavSearchAutocomplete";const MeganavSearchPanel=({absUrl})=>React.createElement("section",{className:"ui-meganav-content grid-cols-12"},React.createElement("div",{className:"col-span-8"},React.createElement("div",{className:"mb-32"},React.createElement("form",{className:"flex items-start",action:absUrl("/search"),method:"get"},React.createElement("div",{className:"relative w-full"},React.createElement(Icon,{name:"icon-gui-search",color:"text-cool-black",size:"1.5rem",additionalCSS:"absolute top-12 left-16"}),React.createElement("input",{type:"search",name:"q",className:"ui-input pl-48 h-48",placeholder:"Search",autoComplete:"off","data-id":"meganav-search-input"}),React.createElement(MeganavSearchAutocomplete,null)),React.createElement("button",{type:"submit",className:"ui-btn-secondary flex-shrink-0 ml-8 sm:ml-16 md:ml-24 xl:ml-32"},"Search")))),React.createElement("div",{className:"col-span-12"},React.createElement(MeganavSearchSuggestions,{displaySupportLink:true,absUrl:absUrl})));export default MeganavSearchPanel;
1
+ import React from"react";import Icon from"../Icon/component.tsx";import MeganavSearchSuggestions from"../MeganavSearchSuggestions/component.tsx";import MeganavSearchAutocomplete from"../MeganavSearchAutocomplete/component.tsx";const MeganavSearchPanel=({absUrl})=>React.createElement("section",{className:"ui-meganav-content grid-cols-12"},React.createElement("div",{className:"col-span-8"},React.createElement("div",{className:"mb-32"},React.createElement("form",{className:"flex items-start",action:absUrl("/search"),method:"get"},React.createElement("div",{className:"relative w-full"},React.createElement(Icon,{name:"icon-gui-search",color:"text-cool-black",size:"1.5rem",additionalCSS:"absolute top-12 left-16"}),React.createElement("input",{type:"search",name:"q",className:"ui-input pl-48 h-48",placeholder:"Search",autoComplete:"off","data-id":"meganav-search-input"}),React.createElement(MeganavSearchAutocomplete,null)),React.createElement("button",{type:"submit",className:"ui-btn-secondary flex-shrink-0 ml-8 sm:ml-16 md:ml-24 xl:ml-32"},"Search")))),React.createElement("div",{className:"col-span-12"},React.createElement(MeganavSearchSuggestions,{displaySupportLink:true,absUrl:absUrl})));export default MeganavSearchPanel;
@@ -1 +1 @@
1
- import React from"react";import FeaturedLink from"./FeaturedLink";const MeganavSearchSuggestions=({absUrl,displaySupportLink})=>React.createElement(React.Fragment,null,React.createElement("p",{className:"ui-text-overline2 text-cool-black py-12"},"Popular pages"),React.createElement("div",{className:"flex justify-between items-center overflow-hidden"},React.createElement("ul",{className:"flex transition-transform"},React.createElement("li",{className:"py-12 pr-8 flex-shrink-0"},React.createElement("a",{href:absUrl("/docs/how-ably-works"),className:"ui-text-p2 hover:text-gui-hover active:text-gui-active focus:text-gui-focus"},"How does Ably work?")),React.createElement("li",{className:"py-12 px-8 flex-shrink-0"},React.createElement("a",{href:absUrl("/docs/quick-start-guide"),className:"ui-text-p2 hover:text-gui-hover active:text-gui-active focus:text-gui-focus"},"Quickstart guide")),React.createElement("li",{className:"py-12 px-8 flex-shrink-0"},React.createElement("a",{href:absUrl("/docs/core-features/pubsub"),className:"ui-text-p2 hover:text-gui-hover active:text-gui-active focus:text-gui-focus"},"Publish/Subscribe Messaging")),React.createElement("li",{className:"py-12 pl-8 flex-shrink-0"},React.createElement("a",{href:absUrl("/platform"),className:"ui-text-p2 hover:text-gui-hover active:text-gui-active focus:text-gui-focus"},"Platform"))),displaySupportLink?React.createElement(FeaturedLink,{url:absUrl("/support"),textSize:"text-p2"},"Support"):null));export default MeganavSearchSuggestions;
1
+ import React from"react";import FeaturedLink from"../FeaturedLink/component.tsx";const MeganavSearchSuggestions=({absUrl,displaySupportLink})=>React.createElement(React.Fragment,null,React.createElement("p",{className:"ui-text-overline2 text-cool-black py-12"},"Popular pages"),React.createElement("div",{className:"flex justify-between items-center overflow-hidden"},React.createElement("ul",{className:"flex transition-transform"},React.createElement("li",{className:"py-12 pr-8 flex-shrink-0"},React.createElement("a",{href:absUrl("/docs/how-ably-works"),className:"ui-text-p2 hover:text-gui-hover active:text-gui-active focus:text-gui-focus"},"How does Ably work?")),React.createElement("li",{className:"py-12 px-8 flex-shrink-0"},React.createElement("a",{href:absUrl("/docs/quick-start-guide"),className:"ui-text-p2 hover:text-gui-hover active:text-gui-active focus:text-gui-focus"},"Quickstart guide")),React.createElement("li",{className:"py-12 px-8 flex-shrink-0"},React.createElement("a",{href:absUrl("/docs/core-features/pubsub"),className:"ui-text-p2 hover:text-gui-hover active:text-gui-active focus:text-gui-focus"},"Publish/Subscribe Messaging")),React.createElement("li",{className:"py-12 pl-8 flex-shrink-0"},React.createElement("a",{href:absUrl("/platform"),className:"ui-text-p2 hover:text-gui-hover active:text-gui-active focus:text-gui-focus"},"Platform"))),displaySupportLink?React.createElement(FeaturedLink,{url:absUrl("/support"),textSize:"text-p2"},"Support"):null));export default MeganavSearchSuggestions;
@@ -1 +1 @@
1
- import"./component.css";import Cookie from"js-cookie";import throttle from"lodash.throttle";import{queryId}from"../dom-query";import{FLASH_DATA_ID}from"../Flash";const COOKIE_EXPIRY=90;const COLLAPSE_TRIGGER_DISTANCE=5;const SCROLL_LISTENER_THROTTLE=100;const RESIZE_LISTENER_THROTTLE=100;const isMdViewport=()=>!window.matchMedia(`(min-width: 65rem)`).matches;const adjustFlashMargin=open=>{const flash=queryId(FLASH_DATA_ID);if(flash){flash.style.marginTop=open?`4rem`:null}};const hideOnMobile=bannerContainer=>{if(isMdViewport()){bannerContainer.style.display="none"}else{bannerContainer.style.display=null}};const hideNotice=bannerContainer=>{bannerContainer.style.maxHeight=0;bannerContainer.style.overflow="hidden";adjustFlashMargin(false)};const showNotice=bannerContainer=>{bannerContainer.style.maxHeight=null;bannerContainer.style.overflow=null;adjustFlashMargin(true)};const setupRememberClosed=(cookieId,noticeId)=>{const cookie=Cookie.get(cookieId)||"";Cookie.set(cookieId,`${cookie.replace(`${noticeId},`,"")+noticeId},`,{expires:COOKIE_EXPIRY})};const hasBeenClosedBefore=(cookieId,noticeId)=>(Cookie.get(cookieId)||"").includes(noticeId);const setupNoticeCollapse=bannerContainer=>{const scrollTop=window.scrollY;if(scrollTop>COLLAPSE_TRIGGER_DISTANCE){hideNotice(bannerContainer)}const listener=throttle(()=>{const scrollTop=window.scrollY;if(scrollTop>COLLAPSE_TRIGGER_DISTANCE){hideNotice(bannerContainer)}else if(bannerContainer.style.overflow){showNotice(bannerContainer)}},SCROLL_LISTENER_THROTTLE);document.addEventListener("scroll",listener);return()=>document.removeEventListener("scroll",listener)};const setupCloseBtn=(bannerContainer,cookieId,noticeId,collapseUnmountListeners)=>{const closeBtn=bannerContainer.querySelector("button");if(!closeBtn)return()=>{};const listener=()=>{if(cookieId&&noticeId)setupRememberClosed(cookieId,noticeId);hideNotice(bannerContainer);collapseUnmountListeners()};closeBtn.addEventListener("click",listener);return()=>document.removeEventListener("click",listener)};const resizeHandler=bannerContainer=>{const handler=throttle(()=>{hideOnMobile(bannerContainer)},RESIZE_LISTENER_THROTTLE);window.addEventListener("resize",handler);return()=>window.removeEventListener("resize",handler)};const Notice=({bannerContainer,cookieId,noticeId,options})=>{if(typeof window==="undefined")return()=>{};if(!bannerContainer){console.warn("A Notice component was initited but no notice container was found.");return()=>{}}if(hasBeenClosedBefore(cookieId,noticeId))return()=>{};hideOnMobile(bannerContainer);showNotice(bannerContainer);const opts={collapse:true,...options};const collapseUnmountListeners=opts.collapse?setupNoticeCollapse(bannerContainer):()=>{};const closeBtnUnmountListeners=setupCloseBtn(bannerContainer,cookieId,noticeId,collapseUnmountListeners);const resizeUnmountListener=resizeHandler(bannerContainer);return()=>{[closeBtnUnmountListeners,collapseUnmountListeners,resizeUnmountListener].forEach(unmount=>unmount())}};export default Notice;
1
+ import"./component.css";import Cookie from"js-cookie";import throttle from"lodash.throttle";import{queryId}from"../dom-query";import{FLASH_DATA_ID}from"../Flash/component.tsx";const COOKIE_EXPIRY=90;const COLLAPSE_TRIGGER_DISTANCE=5;const SCROLL_LISTENER_THROTTLE=100;const RESIZE_LISTENER_THROTTLE=100;const isMdViewport=()=>!window.matchMedia(`(min-width: 65rem)`).matches;const adjustFlashMargin=open=>{const flash=queryId(FLASH_DATA_ID);if(flash){flash.style.marginTop=open?`4rem`:null}};const hideOnMobile=bannerContainer=>{if(isMdViewport()){bannerContainer.style.display="none"}else{bannerContainer.style.display=null}};const hideNotice=bannerContainer=>{bannerContainer.style.maxHeight=0;bannerContainer.style.overflow="hidden";adjustFlashMargin(false)};const showNotice=bannerContainer=>{bannerContainer.style.maxHeight=null;bannerContainer.style.overflow=null;adjustFlashMargin(true)};const setupRememberClosed=(cookieId,noticeId)=>{const cookie=Cookie.get(cookieId)||"";Cookie.set(cookieId,`${cookie.replace(`${noticeId},`,"")+noticeId},`,{expires:COOKIE_EXPIRY})};const hasBeenClosedBefore=(cookieId,noticeId)=>(Cookie.get(cookieId)||"").includes(noticeId);const setupNoticeCollapse=bannerContainer=>{const scrollTop=window.scrollY;if(scrollTop>COLLAPSE_TRIGGER_DISTANCE){hideNotice(bannerContainer)}const listener=throttle(()=>{const scrollTop=window.scrollY;if(scrollTop>COLLAPSE_TRIGGER_DISTANCE){hideNotice(bannerContainer)}else if(bannerContainer.style.overflow){showNotice(bannerContainer)}},SCROLL_LISTENER_THROTTLE);document.addEventListener("scroll",listener);return()=>document.removeEventListener("scroll",listener)};const setupCloseBtn=(bannerContainer,cookieId,noticeId,collapseUnmountListeners)=>{const closeBtn=bannerContainer.querySelector("button");if(!closeBtn)return()=>{};const listener=()=>{if(cookieId&&noticeId)setupRememberClosed(cookieId,noticeId);hideNotice(bannerContainer);collapseUnmountListeners()};closeBtn.addEventListener("click",listener);return()=>document.removeEventListener("click",listener)};const resizeHandler=bannerContainer=>{const handler=throttle(()=>{hideOnMobile(bannerContainer)},RESIZE_LISTENER_THROTTLE);window.addEventListener("resize",handler);return()=>window.removeEventListener("resize",handler)};const Notice=({bannerContainer,cookieId,noticeId,options})=>{if(typeof window==="undefined")return()=>{};if(!bannerContainer){console.warn("A Notice component was initited but no notice container was found.");return()=>{}}if(hasBeenClosedBefore(cookieId,noticeId))return()=>{};hideOnMobile(bannerContainer);showNotice(bannerContainer);const opts={collapse:true,...options};const collapseUnmountListeners=opts.collapse?setupNoticeCollapse(bannerContainer):()=>{};const closeBtnUnmountListeners=setupCloseBtn(bannerContainer,cookieId,noticeId,collapseUnmountListeners);const resizeUnmountListener=resizeHandler(bannerContainer);return()=>{[closeBtnUnmountListeners,collapseUnmountListeners,resizeUnmountListener].forEach(unmount=>unmount())}};export default Notice;
package/core/Notice.js CHANGED
@@ -1 +1 @@
1
- import React,{useEffect}from"react";import NoticeScripts from"./Notice/component.js";import"./Notice/component.css";import Icon from"./Icon";const contentWrapperClasses="w-full pr-8 ui-text-p3 self-center";const ContentWrapper=({buttonLink,children})=>buttonLink?React.createElement("a",{href:buttonLink,className:contentWrapperClasses},children):React.createElement("div",{className:contentWrapperClasses},children);const Notice=({buttonLink,buttonLabel,bodyText,title,config,closeBtn,bgColor="bg-gradient-active-orange",textColor="text-white"})=>{useEffect(()=>{NoticeScripts({bannerContainer:document.querySelector('[data-id="ui-notice"]'),cookieId:config===null||config===void 0?void 0:config.cookieId,noticeId:config===null||config===void 0?void 0:config.noticeId,options:{collapse:(config===null||config===void 0?void 0:config.collapse)||false}})},[]);const wrapperClasses=["ui-announcement",bgColor,textColor].join(" ");return React.createElement("div",{className:wrapperClasses,"data-id":"ui-notice",style:{maxHeight:0,overflow:"hidden"}},React.createElement("div",{className:"ui-grid-px py-16 max-w-screen-xl mx-auto flex items-start"},React.createElement(ContentWrapper,{buttonLink:buttonLink!==null&&buttonLink!==void 0?buttonLink:"#"},React.createElement("strong",{className:"font-bold whitespace-nowrap pr-4"},title),React.createElement("span",{className:"pr-4"},bodyText),buttonLabel&&React.createElement("span",{className:"underline cursor-pointer whitespace-nowrap"},buttonLabel)),closeBtn&&React.createElement("button",{type:"button",className:"ml-auto h-20 w-20 border-none bg-none self-baseline"},React.createElement(Icon,{name:"icon-gui-close",size:"1.25rem",color:"text-cool-black"}))))};export default Notice;
1
+ import React,{useEffect}from"react";import NoticeScripts from"./component.js";import"./component.css";import Icon from"../Icon/component.tsx";const contentWrapperClasses="w-full pr-8 ui-text-p3 self-center";const ContentWrapper=({buttonLink,children})=>buttonLink?React.createElement("a",{href:buttonLink,className:contentWrapperClasses},children):React.createElement("div",{className:contentWrapperClasses},children);const Notice=({buttonLink,buttonLabel,bodyText,title,config,closeBtn,bgColor="bg-gradient-active-orange",textColor="text-white"})=>{useEffect(()=>{NoticeScripts({bannerContainer:document.querySelector('[data-id="ui-notice"]'),cookieId:config===null||config===void 0?void 0:config.cookieId,noticeId:config===null||config===void 0?void 0:config.noticeId,options:{collapse:(config===null||config===void 0?void 0:config.collapse)||false}})},[]);const wrapperClasses=["ui-announcement",bgColor,textColor].join(" ");return React.createElement("div",{className:wrapperClasses,"data-id":"ui-notice",style:{maxHeight:0,overflow:"hidden"}},React.createElement("div",{className:"ui-grid-px py-16 max-w-screen-xl mx-auto flex items-start"},React.createElement(ContentWrapper,{buttonLink:buttonLink!==null&&buttonLink!==void 0?buttonLink:"#"},React.createElement("strong",{className:"font-bold whitespace-nowrap pr-4"},title),React.createElement("span",{className:"pr-4"},bodyText),buttonLabel&&React.createElement("span",{className:"underline cursor-pointer whitespace-nowrap"},buttonLabel)),closeBtn&&React.createElement("button",{type:"button",className:"ml-auto h-20 w-20 border-none bg-none self-baseline"},React.createElement(Icon,{name:"icon-gui-close",size:"1.25rem",color:"text-cool-black"}))))};export default Notice;
Binary file
File without changes
package/core/Slider.js CHANGED
@@ -1 +1 @@
1
- import React,{useEffect,useRef}from"react";import Icon from"./Icon";import SliderScripts from"./Slider/component.js";import"./Slider/component.css";const Slider=({slides=[],classes="",slideClasses="",slideMinWidth="16.875rem",slideMaxWidth="1fr",mqEnableThreshold=()=>true,...props})=>{const containerRef=useRef(null);useEffect(()=>{SliderScripts({container:containerRef.current,mqEnableThreshold})},[]);if(slides.length===0)return;return React.createElement("div",{className:"w-full overflow-x-hidden","data-id":"slider",style:{"--dynamic-grid-columns-count":slides.length,"--dynamic-grid-column-min-width":slideMinWidth,"--dynamic-grid-column-max-width":slideMaxWidth},ref:containerRef},React.createElement("ol",{className:`grid ui-grid-gap grid-cols-dynamic transform transition-transform ${classes}`,"data-id":"slider-strip",...props},slides.map((slide,i)=>React.createElement("li",{key:i,className:slideClasses,"data-id":"slider-slide"},slide))),React.createElement("div",{className:"justify-center items-center my-24 hidden","data-id":"slider-controls"},React.createElement("button",{type:"button",className:"p-0 w-24 h-24 flex items-center focus:outline-gui-focus","data-id":"slider-previous"},React.createElement(Icon,{name:"icon-gui-disclosure-arrow",size:"1.5rem",color:"text-cool-black",additionalCSS:"transform rotate-180","data-id":"meganav-control-mobile-dropdown-menu"})),React.createElement("ul",{className:"flex justify-center items-center mx-32 relative h-24"},slides.map((_,i)=>React.createElement("li",{key:i},React.createElement("span",{className:"ui-slider-marker text-cool-black","data-id":"slider-marker"},"⬤")," "))),React.createElement("button",{type:"button",className:"p-0 w-24 h-24 flex items-center focus:outline-gui-focus","data-id":"slider-next"},React.createElement(Icon,{name:"icon-gui-disclosure-arrow",size:"1.5rem",color:"text-cool-black","data-id":"meganav-control-mobile-dropdown-menu"}))))};export default Slider;
1
+ import React,{useEffect,useRef}from"react";import Icon from"../Icon/component.tsx";import SliderScripts from"./component.js";import"./component.css";const Slider=({slides=[],classes="",slideClasses="",slideMinWidth="16.875rem",slideMaxWidth="1fr",mqEnableThreshold=()=>true,...props})=>{const containerRef=useRef(null);useEffect(()=>{SliderScripts({container:containerRef.current,mqEnableThreshold})},[]);if(slides.length===0)return;return React.createElement("div",{className:"w-full overflow-x-hidden","data-id":"slider",style:{"--dynamic-grid-columns-count":slides.length,"--dynamic-grid-column-min-width":slideMinWidth,"--dynamic-grid-column-max-width":slideMaxWidth},ref:containerRef},React.createElement("ol",{className:`grid ui-grid-gap grid-cols-dynamic transform transition-transform ${classes}`,"data-id":"slider-strip",...props},slides.map((slide,i)=>React.createElement("li",{key:i,className:slideClasses,"data-id":"slider-slide"},slide))),React.createElement("div",{className:"justify-center items-center my-24 hidden","data-id":"slider-controls"},React.createElement("button",{type:"button",className:"p-0 w-24 h-24 flex items-center focus:outline-gui-focus","data-id":"slider-previous"},React.createElement(Icon,{name:"icon-gui-disclosure-arrow",size:"1.5rem",color:"text-cool-black",additionalCSS:"transform rotate-180","data-id":"meganav-control-mobile-dropdown-menu"})),React.createElement("ul",{className:"flex justify-center items-center mx-32 relative h-24"},slides.map((_,i)=>React.createElement("li",{key:i},React.createElement("span",{className:"ui-slider-marker text-cool-black","data-id":"slider-marker"},"⬤")," "))),React.createElement("button",{type:"button",className:"p-0 w-24 h-24 flex items-center focus:outline-gui-focus","data-id":"slider-next"},React.createElement(Icon,{name:"icon-gui-disclosure-arrow",size:"1.5rem",color:"text-cool-black","data-id":"meganav-control-mobile-dropdown-menu"}))))};export default Slider;
@@ -1,4 +1,4 @@
1
- import React from"react";import Icon from"../Icon";const Supported=()=>React.createElement(Icon,{name:"icon-gui-check-circled-fill",size:"1.5rem",color:"text-gui-success",additionalCSS:"flex-grow-0 flex-shrink-0","data-testid":"supported-icon"});const Unsupported=()=>React.createElement(Icon,{name:"icon-gui-cross-circled-fill",size:"1.5rem",color:"text-gui-error",additionalCSS:"flex-grow-0 flex-shrink-0","data-testid":"unsupported-icon"});const LabelCell=({children,...rest})=>{var _rest_className;const classes=`
1
+ import React from"react";import Icon from"../Icon/component.tsx";const Supported=()=>React.createElement(Icon,{name:"icon-gui-check-circled-fill",size:"1.5rem",color:"text-gui-success",additionalCSS:"flex-grow-0 flex-shrink-0","data-testid":"supported-icon"});const Unsupported=()=>React.createElement(Icon,{name:"icon-gui-cross-circled-fill",size:"1.5rem",color:"text-gui-error",additionalCSS:"flex-grow-0 flex-shrink-0","data-testid":"unsupported-icon"});const LabelCell=({children,...rest})=>{var _rest_className;const classes=`
2
2
  ui-text-p1 !font-bold pt-24 pb-8 border-light-grey sm:p-24 sm:relative sm:top-2 flex sm:table-cell ${(_rest_className=rest.className)!==null&&_rest_className!==void 0?_rest_className:""}
3
3
  `;return React.createElement("td",{...rest,className:classes},children)};const TableCell=({children,isRowHeader,...rest})=>{var _rest_className;return React.createElement("td",{...rest,className:`
4
4
  border-light-grey sm:p-24 leading-none flex sm:table-cell
@@ -1 +1 @@
1
- import React,{Fragment}from"react";import Tooltip from"../Tooltip";import{Supported,Unsupported}from"./TableCell";import Table from"../Table";const testRow=index=>({label:`Label ${index+1}`,cells:[{label:"text",content:"Cell content",column:"Free"},{label:"yes",content:React.createElement("div",{className:"flex items-center sm:flex-col sm:items-start"},React.createElement("span",{className:"sm:order-1 px-6 sm:py-6 sm:px-0"},"Supported"),React.createElement("span",{className:"sm:order-0"},React.createElement(Supported,null))),column:"PAYG"},{label:"no",content:React.createElement("div",{className:"flex items-center sm:flex-col sm:items-start"},React.createElement("span",{className:"sm:order-1 px-6 sm:py-6 sm:px-0"},"Unsupported"),React.createElement("span",{className:"sm:order-0"},React.createElement(Unsupported,null))),column:"Custom"}]});const sections=["Features","Support","Technical Support"].map(label=>({label,rows:[...Array(5)].map((_,i)=>testRow(i))}));export const PricingPageTable=()=>{return React.createElement("div",{className:"ui-standard-container"},React.createElement("h2",{className:"ui-text-h2 text-center m-32"},"Pricing Page Table"),React.createElement("p",{className:"text-center m-32"},"Example content"),React.createElement(Table.Root,null,React.createElement(Table.Header,null,React.createElement(Table.Row,null,React.createElement(Table.Cell,null,React.createElement("span",{className:"ui-text-h3 hidden sm:block"},"Free")),React.createElement(Table.Cell,null,React.createElement("span",{className:"ui-text-h3 hidden sm:block"},"PAYG")),React.createElement(Table.Cell,null,React.createElement("span",{className:"ui-text-h3 hidden sm:block"},"Custom")))),React.createElement(Table.Body,null,sections.map(section=>React.createElement(Fragment,{key:section.label},React.createElement(Table.RowHeader,null,React.createElement(Table.Cell,{colSpan:4},section.label)),section.rows.map(row=>React.createElement(Table.Row,{key:row.label},React.createElement(Table.LabelCell,{key:row.label,className:"border-t border-light-grey"},React.createElement("a",{className:"ui-link",href:"#"},row.label),React.createElement(Tooltip,null,"Example tooltip")),row.cells.map(cell=>React.createElement(Table.Cell,{key:cell.label,className:"last:mb-16 sm:mb-0"},React.createElement("div",{className:"flex-1 sm:hidden !text-dark-grey ui-text-overline2"},cell.column),cell.content)))))),React.createElement(Table.Row,null,React.createElement(Table.Cell,null),React.createElement(Table.CtaCell,null,React.createElement("a",{href:"#",className:"ui-btn-secondary"},"Get started")),React.createElement(Table.CtaCell,null,React.createElement("a",{href:"#",className:"ui-btn-secondary"},"Get started")),React.createElement(Table.CtaCell,null,React.createElement("a",{href:"#",className:"ui-btn"},"Contact sales"))))))};
1
+ import React,{Fragment}from"react";import Tooltip from"../../Tooltip/component";import{Supported,Unsupported}from"../TableCell";import Table from"..";const testRow=index=>({label:`Label ${index+1}`,cells:[{label:"text",content:"Cell content",column:"Free"},{label:"yes",content:React.createElement("div",{className:"flex items-center sm:flex-col sm:items-start"},React.createElement("span",{className:"sm:order-1 px-6 sm:py-6 sm:px-0"},"Supported"),React.createElement("span",{className:"sm:order-0"},React.createElement(Supported,null))),column:"PAYG"},{label:"no",content:React.createElement("div",{className:"flex items-center sm:flex-col sm:items-start"},React.createElement("span",{className:"sm:order-1 px-6 sm:py-6 sm:px-0"},"Unsupported"),React.createElement("span",{className:"sm:order-0"},React.createElement(Unsupported,null))),column:"Custom"}]});const sections=["Features","Support","Technical Support"].map(label=>({label,rows:[...Array(5)].map((_,i)=>testRow(i))}));export const PricingPageTable=()=>{return React.createElement("div",{className:"ui-standard-container"},React.createElement("h2",{className:"ui-text-h2 text-center m-32"},"Pricing Page Table"),React.createElement("p",{className:"text-center m-32"},"Example content"),React.createElement(Table.Root,null,React.createElement(Table.Header,null,React.createElement(Table.Row,null,React.createElement(Table.Cell,null,React.createElement("span",{className:"ui-text-h3 hidden sm:block"},"Free")),React.createElement(Table.Cell,null,React.createElement("span",{className:"ui-text-h3 hidden sm:block"},"PAYG")),React.createElement(Table.Cell,null,React.createElement("span",{className:"ui-text-h3 hidden sm:block"},"Custom")))),React.createElement(Table.Body,null,sections.map(section=>React.createElement(Fragment,{key:section.label},React.createElement(Table.RowHeader,null,React.createElement(Table.Cell,{colSpan:4},section.label)),section.rows.map(row=>React.createElement(Table.Row,{key:row.label},React.createElement(Table.LabelCell,{key:row.label,className:"border-t border-light-grey"},React.createElement("a",{className:"ui-link",href:"#"},row.label),React.createElement(Tooltip,null,"Example tooltip")),row.cells.map(cell=>React.createElement(Table.Cell,{key:cell.label,className:"last:mb-16 sm:mb-0"},React.createElement("div",{className:"flex-1 sm:hidden !text-dark-grey ui-text-overline2"},cell.column),cell.content)))))),React.createElement(Table.Row,null,React.createElement(Table.Cell,null),React.createElement(Table.CtaCell,null,React.createElement("a",{href:"#",className:"ui-btn-secondary"},"Get started")),React.createElement(Table.CtaCell,null,React.createElement("a",{href:"#",className:"ui-btn-secondary"},"Get started")),React.createElement(Table.CtaCell,null,React.createElement("a",{href:"#",className:"ui-btn"},"Contact sales"))))))};
package/core/Table.js CHANGED
@@ -1 +1 @@
1
- import{Table,TableRowHeader,TableHeader,TableBody}from"./Table/Table";import{TableRow}from"./Table/TableRow";import{TableCell,LabelCell,HeaderCell,CtaCell,Supported,Unsupported}from"./Table/TableCell";export default{Root:Table,Row:TableRow,Cell:TableCell,LabelCell,HeaderCell,CtaCell,RowHeader:TableRowHeader,Body:TableBody,Header:TableHeader,Supported,Unsupported};
1
+ import{Table,TableRowHeader,TableHeader,TableBody}from"./Table";import{TableRow}from"./TableRow";import{TableCell,LabelCell,HeaderCell,CtaCell,Supported,Unsupported}from"./TableCell";export default{Root:Table,Row:TableRow,Cell:TableCell,LabelCell,HeaderCell,CtaCell,RowHeader:TableRowHeader,Body:TableBody,Header:TableHeader,Supported,Unsupported};
package/core/Tooltip.js CHANGED
@@ -1 +1 @@
1
- import React,{useEffect,useRef,useState}from"react";import Icon from"./Icon";const Tooltip=({children})=>{const[open,setOpen]=useState(false);const[position,setPosition]=useState({x:0,y:0});const offset=8;const reference=useRef(null);const floating=useRef(null);useEffect(()=>{if(open){var _floating_current,_reference_current;const floatingRect=(_floating_current=floating.current)===null||_floating_current===void 0?void 0:_floating_current.getBoundingClientRect();const referenceRect=(_reference_current=reference.current)===null||_reference_current===void 0?void 0:_reference_current.getBoundingClientRect();if(floatingRect&&referenceRect){setPosition({x:Math.min(floatingRect.width/2,floatingRect.left)-referenceRect.width/2,y:Math.min(floatingRect.height,floatingRect.top)+offset})}}else{setPosition({x:0,y:0})}},[open]);return React.createElement("div",{className:"relative inline-block align-top h-16"},React.createElement("button",{onMouseEnter:()=>setOpen(true),onMouseLeave:()=>setOpen(false),className:"ml-8 p-0 relative top-1 focus:outline-none",type:"button",ref:reference,"aria-describedby":"tooltip"},React.createElement(Icon,{name:"icon-gui-info",size:"1rem"})),open?React.createElement("div",{className:"bg-light-grey p-12 rounded pointer-events-none absolute z-20",role:"tooltip",ref:floating,style:{top:-position.y,left:-position.x,boxShadow:"4px 4px 15px rgba(0, 0, 0, 0.2)"}},React.createElement("div",{className:"w-256"},children)):null)};export default Tooltip;
1
+ import React,{useEffect,useRef,useState}from"react";import Icon from"../Icon/component.tsx";const Tooltip=({children})=>{const[open,setOpen]=useState(false);const[position,setPosition]=useState({x:0,y:0});const offset=8;const reference=useRef(null);const floating=useRef(null);useEffect(()=>{if(open){var _floating_current,_reference_current;const floatingRect=(_floating_current=floating.current)===null||_floating_current===void 0?void 0:_floating_current.getBoundingClientRect();const referenceRect=(_reference_current=reference.current)===null||_reference_current===void 0?void 0:_reference_current.getBoundingClientRect();if(floatingRect&&referenceRect){setPosition({x:Math.min(floatingRect.width/2,floatingRect.left)-referenceRect.width/2,y:Math.min(floatingRect.height,floatingRect.top)+offset})}}else{setPosition({x:0,y:0})}},[open]);return React.createElement("div",{className:"relative inline-block align-top h-16"},React.createElement("button",{onMouseEnter:()=>setOpen(true),onMouseLeave:()=>setOpen(false),className:"ml-8 p-0 relative top-1 focus:outline-none",type:"button",ref:reference,"aria-describedby":"tooltip"},React.createElement(Icon,{name:"icon-gui-info",size:"1rem"})),open?React.createElement("div",{className:"bg-light-grey p-12 rounded pointer-events-none absolute z-20",role:"tooltip",ref:floating,style:{top:-position.y,left:-position.x,boxShadow:"4px 4px 15px rgba(0, 0, 0, 0.2)"}},React.createElement("div",{className:"w-256"},children)):null)};export default Tooltip;
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "@ably/ui",
3
- "version": "14.0.0-dev.75dcb64",
3
+ "version": "14.0.0-dev.968e4a2",
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
+ "type": "module",
5
6
  "repository": {
6
7
  "type": "git",
7
8
  "url": "git+ssh://git@github.com/ably/ably-ui.git"
Binary file
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import Accordion, { AccordionProps } from "../Accordion";
2
+ import Accordion, { AccordionProps } from "./component.tsx";
3
3
 
4
4
  export default {
5
5
  title: "Components/Accordion",
File without changes
@@ -1,5 +1,5 @@
1
1
  import React, { useState, ReactNode, JSX } from "react";
2
- import Icon from "./Icon";
2
+ import Icon from "../Icon/component.tsx";
3
3
 
4
4
  type AccordionData = {
5
5
  name: string;
@@ -1,4 +1,4 @@
1
- import Code from "../Code";
1
+ import Code from "./component.tsx";
2
2
 
3
3
  export default {
4
4
  title: "Components/Code",
package/src/core/Code.tsx CHANGED
@@ -1,11 +1,11 @@
1
1
  import React from "react";
2
2
 
3
- import "./utils/syntax-highlighter.css";
3
+ import "../utils/syntax-highlighter.css";
4
4
  import {
5
5
  highlightSnippet,
6
6
  registerDefaultLanguages,
7
- } from "./utils/syntax-highlighter";
8
- import languagesRegistry from "./utils/syntax-highlighter-registry";
7
+ } from "../utils/syntax-highlighter";
8
+ import languagesRegistry from "../utils/syntax-highlighter-registry";
9
9
 
10
10
  registerDefaultLanguages(languagesRegistry);
11
11
 
File without changes
@@ -1,6 +1,6 @@
1
1
  import React, { useEffect, useState } from "react";
2
2
 
3
- import { connectState, getRemoteDataStore } from "./remote-data-store";
3
+ import { connectState, getRemoteDataStore } from "../remote-data-store";
4
4
 
5
5
  /*
6
6
  Connect a react component to a global store.
@@ -1,4 +1,4 @@
1
- import ContactFooter from "../ContactFooter";
1
+ import ContactFooter from "./component.tsx";
2
2
 
3
3
  export default {
4
4
  title: "Components/Contact Footer",
@@ -1,9 +1,9 @@
1
1
  import React, { useEffect } from "react";
2
2
 
3
- import Icon from "./Icon";
4
- import _absUrl from "./url-base.js";
5
- import toggleChatWidget from "./hubspot-chat-toggle";
6
- import "./ContactFooter/component.css";
3
+ import Icon from "../Icon/component.tsx";
4
+ import _absUrl from "../url-base.js";
5
+ import toggleChatWidget from "../hubspot-chat-toggle";
6
+ import "./component.css";
7
7
 
8
8
  type ContactFooterProps = {
9
9
  urlBase: string;
@@ -1,4 +1,4 @@
1
- import CookieMessage from "../CookieMessage";
1
+ import CookieMessage from "./component.tsx";
2
2
 
3
3
  export default {
4
4
  title: "Components/Cookie Message",
@@ -0,0 +1 @@
1
+ import "./component.css";
@@ -1,8 +1,8 @@
1
1
  import React, { useRef, useEffect, useState } from "react";
2
2
  import Cookie from "js-cookie";
3
+ import "./component.css";
3
4
 
4
- import "./CookieMessage/component.css";
5
- import _absUrl from "./url-base";
5
+ import _absUrl from "../url-base";
6
6
 
7
7
  const COOKIE_EXPIRY = 365;
8
8
 
@@ -1,4 +1,4 @@
1
- import CustomerLogos from "../CustomerLogos";
1
+ import CustomerLogos from "./component.tsx";
2
2
 
3
3
  import hubspot from "../images/cust-logo-hubspot-mono-pos.svg";
4
4
  import webflow from "../images/cust-logo-webflow-col-pos.svg";
File without changes
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
- import Icon from "../Icon";
3
- import DropdownMenu from "../DropdownMenu";
2
+ import Icon from "../Icon/component.tsx";
3
+ import DropdownMenu from "./component.tsx";
4
4
 
5
5
  export default {
6
6
  title: "Components/Dropdown Menu",
File without changes
@@ -7,7 +7,7 @@ import React, {
7
7
  ReactNode,
8
8
  Dispatch,
9
9
  } from "react";
10
- import Icon from "./Icon";
10
+ import Icon from "../Icon/component.tsx";
11
11
 
12
12
  const DropdownMenuContext = createContext<{
13
13
  isOpen: boolean;
@@ -1,4 +1,4 @@
1
- import FeaturedLink from "../FeaturedLink";
1
+ import FeaturedLink from "./component.tsx";
2
2
 
3
3
  export default {
4
4
  title: "Components/Featured Link",
File without changes
@@ -1,6 +1,6 @@
1
1
  import React, { CSSProperties, ReactNode } from "react";
2
2
 
3
- import Icon from "./Icon";
3
+ import Icon from "../Icon/component.tsx";
4
4
 
5
5
  type FeaturedLinkProps = {
6
6
  url: string;
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import Flash, { reducerFlashes } from "../Flash";
2
+ import Flash, { reducerFlashes } from "./component.tsx";
3
3
 
4
4
  import {
5
5
  attachStoreToWindow,
@@ -0,0 +1 @@
1
+ import "./component.css";
@@ -2,10 +2,10 @@ import React, { useEffect, useState, useRef } from "react";
2
2
  import DOMPurify from "dompurify";
3
3
  import { nanoid } from "nanoid/non-secure";
4
4
 
5
- import { getRemoteDataStore } from "./remote-data-store.js";
6
- import ConnectStateWrapper from "./ConnectStateWrapper.tsx";
7
- import Icon from "./Icon";
8
- import "./Flash/component.css";
5
+ import { getRemoteDataStore } from "../remote-data-store.js";
6
+ import ConnectStateWrapper from "../ConnectStateWrapper/component.tsx";
7
+ import Icon from "../Icon/component.tsx";
8
+ import "./component.css";
9
9
 
10
10
  type FlashProps = {
11
11
  id: string;
@@ -1,4 +1,4 @@
1
- import Footer from "../Footer";
1
+ import Footer from "./component.tsx";
2
2
 
3
3
  import ablyStack from "../images/ably-stack.svg";
4
4
  import highestPerformer from "../images/high-performer-2023.svg";
@@ -0,0 +1 @@
1
+ import "./component.css";
@@ -1,8 +1,8 @@
1
1
  import React from "react";
2
2
 
3
- import Icon from "./Icon";
4
- import _absUrl from "./url-base.js";
5
- import "./Footer/component.css";
3
+ import Icon from "../Icon/component.tsx";
4
+ import _absUrl from "../url-base.js";
5
+ import "./component.css";
6
6
 
7
7
  type FooterProps = {
8
8
  paths: {
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import Icon from "../Icon";
2
+ import Icon from "./component.tsx";
3
3
 
4
4
  export default {
5
5
  title: "Components/Icon",
File without changes
@@ -1,4 +1,4 @@
1
- import Loader from "../Loader";
1
+ import Loader from "./component.tsx";
2
2
 
3
3
  export default {
4
4
  title: "Components/Loader",
File without changes
@@ -1,4 +1,4 @@
1
- import Logo from "../Logo";
1
+ import Logo from "./component.tsx";
2
2
  import logoUrl from "../images/ably-logo.png";
3
3
 
4
4
  export default {
File without changes
@@ -1,7 +1,7 @@
1
1
  import React, { useEffect } from "react";
2
2
  import { rest } from "msw";
3
3
 
4
- import Meganav from "../Meganav";
4
+ import Meganav from "./component.tsx";
5
5
  import loadIcons from "../icons.js";
6
6
  import logo from "../images/ably-logo.png";
7
7
  import ablyStack from "../images/ably-stack.svg";
@@ -1,22 +1,24 @@
1
1
  import React, { ReactNode, useEffect, useState } from "react";
2
2
 
3
- import { connectState } from "./remote-data-store.js";
4
- import { selectSessionData } from "./remote-session-data.js";
5
-
6
- import Logo from "./Logo";
7
- import "./Meganav/component.css";
8
- import MeganavData from "./Meganav/component.json";
9
- import MeganavScripts from "./Meganav/component.js";
10
- import MeganavItemsDesktop from "./MeganavItemsDesktop";
11
- import MeganavItemsSignedIn from "./MeganavItemsSignedIn";
12
- import MeganavItemsMobile from "./MeganavItemsMobile";
13
- import Notice from "./Notice";
14
- import _absUrl from "./url-base.js";
15
- import MeganavContentProducts from "./MeganavContentProducts";
16
- import MeganavContentUseCases from "./MeganavContentUseCases";
17
- import MeganavContentCompany from "./MeganavContentCompany";
18
- import MeganavContentDevelopers from "./MeganavContentDevelopers";
19
- import MeganavSearch from "./MeganavSearch";
3
+ import { connectState } from "../remote-data-store.js";
4
+ import { selectSessionData } from "../remote-session-data.js";
5
+
6
+ import Logo from "../Logo/component.tsx";
7
+ import "./component.css";
8
+
9
+ import MeganavScripts from "./component.js";
10
+ import MeganavItemsDesktop from "../MeganavItemsDesktop/component.tsx";
11
+ import MeganavItemsSignedIn from "../MeganavItemsSignedIn/component.tsx";
12
+ import MeganavItemsMobile from "../MeganavItemsMobile/component.tsx";
13
+ import Notice from "../Notice/component.tsx";
14
+ import MeganavData from "./component.json";
15
+ import _absUrl from "../url-base.js";
16
+
17
+ import MeganavContentProducts from "../MeganavContentProducts/component.tsx";
18
+ import MeganavContentUseCases from "../MeganavContentUseCases/component.tsx";
19
+ import MeganavContentCompany from "../MeganavContentCompany/component.tsx";
20
+ import MeganavContentDevelopers from "../MeganavContentDevelopers/component.tsx";
21
+ import MeganavSearch from "../MeganavSearch/component.tsx";
20
22
 
21
23
  export type MeganavTheme = {
22
24
  backgroundColor?: string;
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
 
3
- import FeaturedLink from "./FeaturedLink";
4
- import { AbsUrl } from "./Meganav";
3
+ import FeaturedLink from "../FeaturedLink/component.tsx";
4
+ import { AbsUrl } from "../Meganav/component.tsx";
5
5
 
6
6
  type MeganavBlogPostsListProps = {
7
7
  recentBlogPosts: {
File without changes
@@ -1,10 +1,10 @@
1
1
  import React from "react";
2
2
 
3
- import MeganavBlogPostsList from "./MeganavBlogPostsList";
4
- import ConnectStateWrapper from "./ConnectStateWrapper";
5
- import { selectRecentBlogPosts } from "./remote-blogs-posts.js";
6
- import Icon from "./Icon";
7
- import { AbsUrl } from "./Meganav";
3
+ import MeganavBlogPostsList from "../MeganavBlogPostsList/component.tsx";
4
+ import ConnectStateWrapper from "../ConnectStateWrapper/component.tsx";
5
+ import { selectRecentBlogPosts } from "../remote-blogs-posts.js";
6
+ import Icon from "../Icon/component.tsx";
7
+ import { AbsUrl } from "../Meganav/component.tsx";
8
8
 
9
9
  type MeganavContentCompanyProps = {
10
10
  absUrl: AbsUrl;
File without changes
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
 
3
- import Icon from "./Icon";
4
- import { AbsUrl } from "./Meganav";
3
+ import Icon from "../Icon/component.tsx";
4
+ import { AbsUrl } from "../Meganav/component.tsx";
5
5
 
6
6
  const MeganavContentDevelopers = ({ absUrl }: { absUrl: AbsUrl }) => (
7
7
  <div className="flex max-w-screen-xl mx-auto">
File without changes
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
 
3
- import FeaturedLink from "./FeaturedLink";
4
- import { AbsUrl } from "./Meganav";
3
+ import FeaturedLink from "../FeaturedLink/component.tsx";
4
+ import { AbsUrl } from "../Meganav/component.tsx";
5
5
 
6
6
  type MeganavContentProductsProps = {
7
7
  paths: {
@@ -0,0 +1 @@
1
+ // TODO: Webpack expects a .js file for any component
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
 
3
- import Icon from "./Icon";
4
- import { AbsUrl } from "./Meganav";
3
+ import Icon from "../Icon/component.tsx";
4
+ import { AbsUrl } from "../Meganav/component.tsx";
5
5
 
6
6
  const MeganavContentUseCases = ({ absUrl }: { absUrl: AbsUrl }) => (
7
7
  <div className="flex max-w-screen-xl mx-auto">
@@ -1,7 +1,7 @@
1
1
  import React, { ReactNode } from "react";
2
2
 
3
- import Icon from "./Icon";
4
- import { MeganavTheme } from "./Meganav";
3
+ import Icon from "../Icon/component.tsx";
4
+ import { MeganavTheme } from "../Meganav/component.tsx";
5
5
 
6
6
  type MeganavControlProps = {
7
7
  ariaControls: string;
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
 
3
- import Icon from "./Icon";
4
- import { MeganavTheme } from "./Meganav";
3
+ import Icon from "../Icon/component.tsx";
4
+ import { MeganavTheme } from "../Meganav/component.tsx";
5
5
 
6
6
  const MeganavControlMobileDropdown = ({ theme }: { theme: MeganavTheme }) => (
7
7
  <button
@@ -1,6 +1,7 @@
1
1
  import React from "react";
2
2
 
3
- import Icon from "./Icon";
3
+ import Icon from "../Icon/component.tsx";
4
+
4
5
  type MeganavControlMobilePanelCloseProps = {
5
6
  ariaControls: string;
6
7
  displayHr?: boolean;
@@ -1,6 +1,7 @@
1
1
  import React, { ReactNode } from "react";
2
2
 
3
- import Icon from "./Icon";
3
+ import Icon from "../Icon/component.tsx";
4
+
4
5
  type MeganavControlMobilePanelOpenProps = {
5
6
  ariaControls: string;
6
7
  children: ReactNode;
File without changes
@@ -1,8 +1,8 @@
1
1
  import React from "react";
2
2
 
3
- import MeganavData from "./Meganav/component.json";
4
- import MeganavControl from "./MeganavControl";
5
- import { AbsUrl, MeganavPanels, MeganavTheme } from "./Meganav";
3
+ import MeganavData from "../Meganav/component.json";
4
+ import MeganavControl from "../MeganavControl/component.tsx";
5
+ import { AbsUrl, MeganavPanels, MeganavTheme } from "../Meganav/component.tsx";
6
6
 
7
7
  type MeganavDesktopItems = {
8
8
  panels: MeganavPanels;