@ably/ui 14.0.0-dev.58ef698 → 14.0.0-dev.64a4085
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -10
- package/core/.DS_Store +0 -0
- package/core/Accordion/.DS_Store +0 -0
- package/core/Accordion.js +1 -0
- package/core/Code/.DS_Store +0 -0
- package/core/Code/component.js +1 -1
- package/core/Code.js +1 -0
- package/core/ConnectStateWrapper.js +1 -0
- package/core/ContactFooter/.DS_Store +0 -0
- package/core/ContactFooter/component.js +1 -1
- package/core/ContactFooter.js +1 -0
- package/core/CookieMessage/.DS_Store +0 -0
- package/core/CookieMessage.js +1 -0
- package/core/CustomerLogos/.DS_Store +0 -0
- package/core/CustomerLogos.js +1 -0
- package/core/DropdownMenu/.DS_Store +0 -0
- package/core/DropdownMenu.js +1 -0
- package/core/Expander.js +1 -0
- package/core/FeaturedLink/.DS_Store +0 -0
- package/core/FeaturedLink.js +1 -0
- package/core/Flash/.DS_Store +0 -0
- package/core/Flash.js +1 -0
- package/core/Footer/.DS_Store +0 -0
- package/core/Footer.js +1 -0
- package/core/Icon/.DS_Store +0 -0
- package/core/Icon.js +1 -0
- package/core/Loader/.DS_Store +0 -0
- package/core/Loader.js +13 -0
- package/core/Logo/.DS_Store +0 -0
- package/core/Logo.js +1 -0
- package/core/Meganav/component.js +1 -1
- package/core/Meganav.js +1 -0
- package/core/MeganavBlogPostsList/.DS_Store +0 -0
- package/core/MeganavBlogPostsList/component.js +1 -1
- package/core/MeganavBlogPostsList.js +1 -0
- package/core/MeganavContentCompany.js +1 -0
- package/core/MeganavContentDevelopers.js +1 -0
- package/core/MeganavContentProducts.js +1 -0
- package/core/MeganavContentUseCases.js +1 -0
- package/core/MeganavControl/.DS_Store +0 -0
- package/core/MeganavControl/component.js +1 -1
- package/core/MeganavControl.js +1 -0
- package/core/MeganavControlMobileDropdown/.DS_Store +0 -0
- package/core/MeganavControlMobileDropdown/component.js +1 -1
- package/core/MeganavControlMobileDropdown.js +1 -0
- package/core/MeganavControlMobilePanelClose/.DS_Store +0 -0
- package/core/MeganavControlMobilePanelClose/component.js +1 -1
- package/core/MeganavControlMobilePanelClose.js +1 -0
- package/core/MeganavControlMobilePanelOpen/.DS_Store +0 -0
- package/core/MeganavControlMobilePanelOpen/component.js +1 -1
- package/core/MeganavControlMobilePanelOpen.js +1 -0
- package/core/MeganavItemsDesktop.js +1 -0
- package/core/MeganavItemsMobile.js +1 -0
- package/core/MeganavItemsSignedIn.js +1 -0
- package/core/MeganavSearch.js +1 -0
- package/core/MeganavSearchAutocomplete/.DS_Store +0 -0
- package/core/MeganavSearchAutocomplete/component.js +1 -1
- package/core/MeganavSearchAutocomplete.js +1 -0
- package/core/MeganavSearchPanel.js +1 -0
- package/core/MeganavSearchSuggestions/.DS_Store +0 -0
- package/core/MeganavSearchSuggestions/component.js +1 -1
- package/core/MeganavSearchSuggestions.js +1 -0
- package/core/Notice/.DS_Store +0 -0
- package/core/Notice/component.js +1 -1
- package/core/Notice.js +1 -0
- package/core/SignOutLink.js +1 -0
- package/core/Slider/.DS_Store +0 -0
- package/core/Slider/component.css +32 -0
- package/core/Slider/component.js +1 -1
- package/core/Slider.js +1 -0
- package/core/Table/.DS_Store +0 -0
- package/core/Table/Table.js +1 -1
- package/core/Table/TableCell.js +7 -1
- package/core/Table/TableRow.js +1 -1
- package/core/Table/data.js +1 -0
- package/core/Table.js +1 -0
- package/core/Tooltip/.DS_Store +0 -0
- package/core/Tooltip.js +1 -0
- package/core/css.js +1 -1
- package/core/dom-query.js +1 -1
- package/core/hubspot-chat-toggle.js +1 -1
- package/core/icons/icon-gui-partial.svg +4 -0
- package/core/icons.js +1 -1
- package/core/load-sprites.js +1 -1
- package/core/react-renderer.js +1 -1
- package/core/remote-blogs-posts.js +1 -1
- package/core/remote-data-store.js +1 -1
- package/core/remote-data-util.js +1 -1
- package/core/remote-session-data.js +1 -1
- package/core/sprites.svg +1 -1
- package/core/url-base.js +1 -1
- package/core/utils/syntax-highlighter-registry.js +1 -1
- package/core/utils/syntax-highlighter.js +1 -1
- package/package.json +2 -3
- package/src/.DS_Store +0 -0
- package/src/core/.DS_Store +0 -0
- package/src/core/Accordion/.DS_Store +0 -0
- package/src/core/Accordion/Accordion.stories.tsx +1 -1
- package/src/core/{Accordion/component.tsx → Accordion.tsx} +6 -6
- package/src/core/Code/.DS_Store +0 -0
- package/src/core/Code/Code.stories.tsx +1 -1
- package/src/core/{Code/component.tsx → Code.tsx} +3 -3
- package/src/core/{ConnectStateWrapper/component.tsx → ConnectStateWrapper.tsx} +1 -1
- package/src/core/ContactFooter/.DS_Store +0 -0
- package/src/core/ContactFooter/ContactFooter.stories.tsx +1 -1
- package/src/core/{ContactFooter/component.tsx → ContactFooter.tsx} +4 -4
- package/src/core/CookieMessage/.DS_Store +0 -0
- package/src/core/CookieMessage/CookieMessage.stories.tsx +1 -1
- package/src/core/{CookieMessage/component.tsx → CookieMessage.tsx} +2 -2
- package/src/core/CustomerLogos/.DS_Store +0 -0
- package/src/core/CustomerLogos/CustomerLogos.stories.tsx +1 -1
- package/src/core/DropdownMenu/.DS_Store +0 -0
- package/src/core/DropdownMenu/DropdownMenu.stories.tsx +2 -2
- package/src/core/{DropdownMenu/component.tsx → DropdownMenu.tsx} +1 -1
- package/src/core/Expander/Expander.stories.tsx +118 -0
- package/src/core/Expander.tsx +46 -0
- package/src/core/FeaturedLink/.DS_Store +0 -0
- package/src/core/FeaturedLink/FeaturedLink.stories.tsx +1 -1
- package/src/core/{FeaturedLink/component.tsx → FeaturedLink.tsx} +1 -1
- package/src/core/Flash/.DS_Store +0 -0
- package/src/core/Flash/Flash.stories.tsx +1 -1
- package/src/core/{Flash/component.tsx → Flash.tsx} +4 -4
- package/src/core/Footer/.DS_Store +0 -0
- package/src/core/Footer/Footer.stories.tsx +1 -1
- package/src/core/{Footer/component.tsx → Footer.tsx} +3 -3
- package/src/core/Icon/.DS_Store +0 -0
- package/src/core/Icon/Icon.stories.tsx +2 -1
- package/src/core/Loader/.DS_Store +0 -0
- package/src/core/Loader/Loader.stories.tsx +1 -1
- package/src/core/Logo/.DS_Store +0 -0
- package/src/core/Logo/Logo.stories.tsx +1 -1
- package/src/core/Meganav/Meganav.stories.tsx +1 -1
- package/src/core/{Meganav/component.tsx → Meganav.tsx} +17 -19
- package/src/core/MeganavBlogPostsList/.DS_Store +0 -0
- package/src/core/{MeganavBlogPostsList/component.tsx → MeganavBlogPostsList.tsx} +2 -2
- package/src/core/{MeganavContentCompany/component.tsx → MeganavContentCompany.tsx} +5 -5
- package/src/core/{MeganavContentDevelopers/component.tsx → MeganavContentDevelopers.tsx} +2 -2
- package/src/core/{MeganavContentProducts/component.tsx → MeganavContentProducts.tsx} +2 -2
- package/src/core/{MeganavContentUseCases/component.tsx → MeganavContentUseCases.tsx} +2 -2
- package/src/core/MeganavControl/.DS_Store +0 -0
- package/src/core/{MeganavControl/component.tsx → MeganavControl.tsx} +2 -2
- package/src/core/MeganavControlMobileDropdown/.DS_Store +0 -0
- package/src/core/{MeganavControlMobileDropdown/component.tsx → MeganavControlMobileDropdown.tsx} +2 -2
- package/src/core/MeganavControlMobilePanelClose/.DS_Store +0 -0
- package/src/core/{MeganavControlMobilePanelClose/component.tsx → MeganavControlMobilePanelClose.tsx} +1 -2
- package/src/core/MeganavControlMobilePanelOpen/.DS_Store +0 -0
- package/src/core/{MeganavControlMobilePanelOpen/component.tsx → MeganavControlMobilePanelOpen.tsx} +1 -2
- package/src/core/{MeganavItemsDesktop/component.tsx → MeganavItemsDesktop.tsx} +3 -3
- package/src/core/{MeganavItemsMobile/component.tsx → MeganavItemsMobile.tsx} +9 -9
- package/src/core/{MeganavItemsSignedIn/component.tsx → MeganavItemsSignedIn.tsx} +4 -8
- package/src/core/{MeganavSearch/component.tsx → MeganavSearch.tsx} +3 -3
- package/src/core/MeganavSearchAutocomplete/.DS_Store +0 -0
- package/src/core/{MeganavSearchPanel/component.tsx → MeganavSearchPanel.tsx} +4 -4
- package/src/core/MeganavSearchSuggestions/.DS_Store +0 -0
- package/src/core/{MeganavSearchSuggestions/component.tsx → MeganavSearchSuggestions.tsx} +2 -2
- package/src/core/Notice/.DS_Store +0 -0
- package/src/core/Notice/component.js +1 -1
- package/src/core/{Notice/component.tsx → Notice.tsx} +3 -4
- package/src/core/{SignOutLink/component.tsx → SignOutLink.tsx} +1 -1
- package/src/core/Slider/.DS_Store +0 -0
- package/src/core/Slider/Slider.stories.tsx +83 -30
- package/src/core/Slider/component.css +32 -0
- package/src/core/Slider.tsx +193 -0
- package/src/core/Table/.DS_Store +0 -0
- package/src/core/Table/Table.tsx +38 -9
- package/src/core/Table/TableCell.tsx +31 -6
- package/src/core/Table/{stories/data.tsx → data.tsx} +3 -3
- package/src/core/{Table/index.ts → Table.tsx} +5 -3
- package/src/core/Tooltip/.DS_Store +0 -0
- package/src/core/Tooltip/Tooltip.stories.tsx +1 -1
- package/src/core/{Tooltip/component.tsx → Tooltip.tsx} +34 -6
- package/src/core/icons/icon-gui-partial.svg +4 -0
- package/src/pages/Buttons.mdx +1 -1
- package/src/pages/Chips.mdx +1 -1
- package/src/pages/Forms.mdx +2 -2
- package/core/Accordion/component.js +0 -1
- package/core/ConnectStateWrapper/component.js +0 -1
- package/core/CookieMessage/component.js +0 -1
- package/core/CustomerLogos/component.js +0 -1
- package/core/DropdownMenu/component.js +0 -1
- package/core/FeaturedLink/component.js +0 -1
- package/core/Flash/component.js +0 -1
- package/core/Footer/component.js +0 -1
- package/core/Icon/component.js +0 -1
- package/core/Loader/component.js +0 -1
- package/core/Logo/component.js +0 -1
- package/core/MeganavContentCompany/component.js +0 -1
- package/core/MeganavContentDevelopers/component.js +0 -1
- package/core/MeganavContentProducts/component.js +0 -1
- package/core/MeganavContentUseCases/component.js +0 -1
- package/core/MeganavItemsDesktop/component.js +0 -1
- package/core/MeganavItemsMobile/component.js +0 -1
- package/core/MeganavItemsSignedIn/component.js +0 -1
- package/core/MeganavSearch/component.js +0 -1
- package/core/MeganavSearchPanel/component.js +0 -1
- package/core/SignOutLink/component.js +0 -1
- package/core/Table/index.js +0 -1
- package/core/Table/stories/data.js +0 -1
- package/core/Tooltip/component.js +0 -1
- package/src/core/Accordion/component.js +0 -0
- package/src/core/ConnectStateWrapper/component.js +0 -0
- package/src/core/CookieMessage/component.js +0 -1
- package/src/core/CustomerLogos/component.js +0 -0
- package/src/core/DropdownMenu/component.js +0 -0
- package/src/core/FeaturedLink/component.js +0 -0
- package/src/core/Flash/component.js +0 -1
- package/src/core/Footer/component.js +0 -1
- package/src/core/Icon/component.js +0 -0
- package/src/core/Loader/component.js +0 -0
- package/src/core/Logo/component.js +0 -0
- package/src/core/MeganavContentCompany/component.js +0 -0
- package/src/core/MeganavContentDevelopers/component.js +0 -0
- package/src/core/MeganavContentProducts/component.js +0 -0
- package/src/core/MeganavContentUseCases/component.js +0 -1
- package/src/core/MeganavItemsDesktop/component.js +0 -0
- package/src/core/MeganavItemsMobile/component.js +0 -0
- package/src/core/MeganavItemsSignedIn/component.js +0 -0
- package/src/core/MeganavSearch/component.js +0 -0
- package/src/core/MeganavSearchPanel/component.js +0 -0
- package/src/core/SignOutLink/component.js +0 -0
- package/src/core/Slider/component.tsx +0 -112
- /package/src/core/{CustomerLogos/component.tsx → CustomerLogos.tsx} +0 -0
- /package/src/core/{Icon/component.tsx → Icon.tsx} +0 -0
- /package/src/core/{Loader/component.tsx → Loader.tsx} +0 -0
- /package/src/core/{Logo/component.tsx → Logo.tsx} +0 -0
- /package/src/core/{MeganavSearchAutocomplete/component.tsx → MeganavSearchAutocomplete.tsx} +0 -0
- /package/src/core/Table/{stories/Table.stories.tsx → Table.stories.tsx} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{queryId}from"../dom-query";
|
|
1
|
+
import{queryId}from"../dom-query";const DRAG_BUFFER=5;const getTranslateX=node=>new DOMMatrix(window.getComputedStyle(node).transform).e;const updateTranslateX=(node,value)=>node.style.transform=`translateX(${value}px)`;const dragLeftBoundary=(translateX,threshold)=>translateX>=threshold;const dragRightBoundary=(translateX,itemsWidth,windowWidth,threshold)=>Math.abs(translateX-windowWidth+threshold)>itemsWidth;const getDistance=(e,touchStartX)=>{var _e_changedTouches_;return((_e_changedTouches_=e.changedTouches[0])===null||_e_changedTouches_===void 0?void 0:_e_changedTouches_.clientX)-touchStartX};const withinBuffer=distance=>Math.abs(distance)<DRAG_BUFFER;const getItemsTotalWidth=nodes=>nodes.map(item=>item.getBoundingClientRect().width).reduce((acc,val)=>acc+val,0);const MeganavSearchSuggestions=()=>{const suggestionsToggle=queryId("meganav-mobile-search-input");const suggestions=queryId("meganav-mobile-search-suggestions");const list=suggestions.querySelector("ul");const listItems=Array.from(list.querySelectorAll("li"));const dragLeft=(distance,threshold)=>{const currentTranslateX=getTranslateX(list);const translateX=Math.round(currentTranslateX+distance);if(dragLeftBoundary(translateX,threshold))return;updateTranslateX(list,translateX)};const dragLeftEnd=(distance,threshold)=>{const currentTranslateX=getTranslateX(list);let translateX=Math.round(currentTranslateX+distance);if(dragLeftBoundary(translateX,threshold)){translateX=0}updateTranslateX(list,translateX)};const dragRight=(distance,threshold)=>{const listWidth=list.getBoundingClientRect().width;const currentTranslateX=getTranslateX(list);const translateX=Math.round(currentTranslateX+distance);const itemsTotalWidth=getItemsTotalWidth(listItems);if(dragRightBoundary(translateX,itemsTotalWidth,listWidth,threshold)){return}updateTranslateX(list,translateX)};const dragRightEnd=(distance,threshold)=>{const listWidth=list.getBoundingClientRect().width;const currentTranslateX=getTranslateX(list);const itemsTotalWidth=getItemsTotalWidth(listItems);let translateX=Math.round(currentTranslateX+distance);if(dragRightBoundary(translateX,itemsTotalWidth,listWidth,threshold)){translateX=-(itemsTotalWidth-listWidth+threshold)}updateTranslateX(list,translateX)};let touchStartX;const touchstartHandler=e=>{var _e_touches_;touchStartX=(_e_touches_=e.touches[0])===null||_e_touches_===void 0?void 0:_e_touches_.clientX};const touchmoveHandler=e=>{const distance=getDistance(e,touchStartX);if(withinBuffer(distance))return;distance>0?dragLeft(distance,24):dragRight(distance,96)};const touchendHandler=e=>{const distance=getDistance(e,touchStartX);if(withinBuffer(distance))return;distance>0?dragLeftEnd(distance,24):dragRightEnd(distance,48)};const focusSuggestionsHandler=()=>{suggestions.classList.add("max-h-96")};const blurSuggestionsHandler=e=>{if(e.relatedTarget===suggestions.querySelectorAll("a")[0]){return}suggestions.classList.remove("max-h-96")};const wheelHandler=e=>{const distance=e.deltaY*4;if(withinBuffer(distance))return;distance>0?dragLeftEnd(distance,24):dragRightEnd(distance,48)};suggestionsToggle.addEventListener("focus",focusSuggestionsHandler);suggestionsToggle.addEventListener("blur",blurSuggestionsHandler);suggestions.addEventListener("touchstart",touchstartHandler);suggestions.addEventListener("touchmove",touchmoveHandler);suggestions.addEventListener("touchend",touchendHandler);suggestions.addEventListener("wheel",wheelHandler);return{teardown:()=>{suggestionsToggle.removeEventListener("focus",focusSuggestionsHandler);suggestionsToggle.removeEventListener("blur",blurSuggestionsHandler);suggestions.removeEventListener("touchstart",touchstartHandler);suggestions.removeEventListener("touchmove",touchmoveHandler);suggestions.removeEventListener("touchend",touchendHandler)},clear:()=>{suggestions.classList.remove("max-h-96");list.style.transform=`translateX(0px)`}}};export default MeganavSearchSuggestions;
|
|
@@ -0,0 +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;
|
|
Binary file
|
package/core/Notice/component.js
CHANGED
|
@@ -1 +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&¬iceId)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
ADDED
|
@@ -0,0 +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;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import React,{useRef}from"react";const SignOutLink=({token,href,text,children,absUrl})=>{const formRef=useRef(null);const onClick=e=>{var _formRef_current;(_formRef_current=formRef.current)===null||_formRef_current===void 0?void 0:_formRef_current.submit();e.preventDefault()};return React.createElement(React.Fragment,null,React.createElement("form",{ref:formRef,method:"post",action:absUrl(href),className:"hidden"},React.createElement("input",{name:"_method",value:"delete",type:"hidden"}),React.createElement("input",{name:"authenticity_token",value:token,type:"hidden"})),children({href,text,onClick}))};export default SignOutLink;
|
|
Binary file
|
|
@@ -4,3 +4,35 @@
|
|
|
4
4
|
|
|
5
5
|
@apply leading-none px-4 relative;
|
|
6
6
|
}
|
|
7
|
+
|
|
8
|
+
@keyframes fillAnimation {
|
|
9
|
+
0% {
|
|
10
|
+
width: 0%;
|
|
11
|
+
}
|
|
12
|
+
100% {
|
|
13
|
+
width: 100%;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.ui-icon-cta {
|
|
18
|
+
@apply cursor-pointer overflow-hidden;
|
|
19
|
+
@apply rounded border-2 border-mid-grey hover:border-active-orange;
|
|
20
|
+
transition: all 0.4s;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
@screen sm {
|
|
24
|
+
.ui-icon-cta-left:hover .ui-icon-cta-holder {
|
|
25
|
+
transform: translateX(-120%);
|
|
26
|
+
}
|
|
27
|
+
.ui-icon-cta-right .ui-icon-cta-holder {
|
|
28
|
+
transform: translateX(-120%);
|
|
29
|
+
}
|
|
30
|
+
.ui-icon-cta-right:hover .ui-icon-cta-holder {
|
|
31
|
+
transform: translateX(0%);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.ui-icon-cta-holder {
|
|
36
|
+
@apply w-full h-full;
|
|
37
|
+
transition: all 0.4s;
|
|
38
|
+
}
|
package/core/Slider/component.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./component.css";import throttle from"lodash.throttle";import{queryId,queryIdAll}from"../dom-query";
|
|
1
|
+
import"./component.css";import throttle from"lodash.throttle";import{queryId,queryIdAll}from"../dom-query";const mdBreakpoint=()=>window.matchMedia("(min-width: 48rem)").matches;const DRAG_BUFFER=20;const init=slidesContainer=>{const transformContainer=queryId("slider-strip",slidesContainer);const slides=Array.from(queryIdAll("slider-slide",slidesContainer));const slideLeftChevron=queryId("slider-previous",slidesContainer);const slideRightChevron=queryId("slider-next",slidesContainer);const slideMarkers=Array.from(queryIdAll("slider-marker",slidesContainer));const sliderControls=queryId("slider-controls",slidesContainer);sliderControls.classList.replace("hidden","flex");const slidesLength=slides.length;const slidesWidth=slidesContainer.getBoundingClientRect().width;const{width:slideWidth,left:slideLeftDistance}=slides[0].getBoundingClientRect();const{left:slideLeftDistanceSecond}=slides[1].getBoundingClientRect();const slideGap=slideLeftDistanceSecond-slideLeftDistance-slideWidth;const adjustment=(slidesWidth-slideWidth)/2;let currentIndex=0;let touchStartX=0;const calculateTransform=index=>index*-slideWidth+adjustment+index*-slideGap;const updateSlide=index=>transformContainer.style.transform=`translateX(${calculateTransform(index)}px)`;const updateMarkers=index=>{slideMarkers.forEach(marker=>marker.classList.remove("text-active-orange"));slideMarkers[index].classList.remove("text-cool-black");slideMarkers[index].classList.add("text-active-orange")};const slideLeft=()=>{currentIndex=currentIndex-1<=0?0:currentIndex-1;updateSlide(currentIndex);updateMarkers(currentIndex)};const slideRight=()=>{currentIndex=currentIndex+1>=slidesLength?currentIndex:currentIndex+1;updateSlide(currentIndex);updateMarkers(currentIndex)};updateSlide(0);updateMarkers(0);slideLeftChevron.addEventListener("click",slideLeft);transformContainer.addEventListener("touchstart",e=>{var _e_touches_;touchStartX=(_e_touches_=e.touches[0])===null||_e_touches_===void 0?void 0:_e_touches_.clientX});transformContainer.addEventListener("touchend",e=>{var _e_changedTouches_;const distance=((_e_changedTouches_=e.changedTouches[0])===null||_e_changedTouches_===void 0?void 0:_e_changedTouches_.clientX)-touchStartX;if(Math.abs(distance)<DRAG_BUFFER)return;const direction=distance>0?slideLeft:slideRight;direction()});slideRightChevron.addEventListener("click",slideRight);return()=>{transformContainer.style.transform=null;sliderControls.classList.replace("flex","hidden")}};const Slider=({container,mqEnableThreshold})=>{if(!container)return;const breakpointCheck=mqEnableThreshold||(()=>!mdBreakpoint());let unmount=()=>{};if(breakpointCheck())unmount=init(container);window.addEventListener("resize",throttle(()=>{if(breakpointCheck()){unmount=init(container)}else{unmount()}},100))};export default Slider;
|
package/core/Slider.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import React,{useState,useEffect,useRef}from"react";import Icon from"./Icon";import"./Slider/component.css";const SlideIndicator=({numSlides,activeIndex,interval,intervalIndicator,isInline})=>{return React.createElement("ul",{className:`flex gap-4 left-1/2 ${isInline?"bottom-0":"absolute -bottom-40 transform -translate-x-1/2"}`},Array.from({length:numSlides},(_,i)=>intervalIndicator?React.createElement("li",{key:i,className:"relative w-40 h-4 mx-1 rounded-full bg-neutral-500"},i===activeIndex&&React.createElement("span",{className:"absolute inset-0 rounded-full bg-active-orange",style:{animation:`fillAnimation ${interval}ms linear`}})):React.createElement("li",{key:i},React.createElement("span",{className:`ui-slider-marker ${i===activeIndex?"text-active-orange":"text-cool-black"}`,"data-id":"slider-marker"},"⬤"))))};const Slider=({children,options})=>{const[activeIndex,setActiveIndex]=useState(0);const[touchStartX,setTouchStartX]=useState(0);const[touchEndX,setTouchEndX]=useState(0);const timerRef=useRef(null);const isInline=(options===null||options===void 0?void 0:options.controlPosition)==="inline";const next=()=>{setActiveIndex(prevIndex=>(prevIndex+1)%children.length);resetInterval()};const prev=()=>{setActiveIndex(prevIndex=>prevIndex>0?prevIndex-1:children.length-1);resetInterval()};const resetInterval=()=>{if(timerRef.current)clearInterval(timerRef.current);var _options_interval;timerRef.current=setInterval(next,(_options_interval=options===null||options===void 0?void 0:options.interval)!==null&&_options_interval!==void 0?_options_interval:1e4)};const handleTouchStart=e=>{setTouchStartX(e.touches[0].clientX)};const handleTouchMove=e=>{setTouchEndX(e.touches[0].clientX)};const handleTouchEnd=()=>{if(touchStartX-touchEndX>50){next()}if(touchStartX-touchEndX<-50){prev()}};useEffect(()=>{resetInterval();return()=>{if(timerRef.current)clearInterval(timerRef.current)}},[children.length,options===null||options===void 0?void 0:options.interval]);var _options_interval;return React.createElement("div",{className:"relative",onTouchStart:handleTouchStart,onTouchMove:handleTouchMove,onTouchEnd:handleTouchEnd},React.createElement("div",{className:"overflow-hidden w-full py-40"},React.createElement("div",{className:"flex items-center transition-transform ease-in-out duration-500",style:{transform:`translateX(-${activeIndex*100}%)`}},children.map((child,index)=>React.createElement("div",{key:index,className:"w-full flex-shrink-0 flex justify-center sm:px-60 transition-opacity ease-in delay-500 duration-500",style:{opacity:activeIndex===index?1:.1}},child)))),React.createElement("div",{className:`flex items-center pointer-events-none ${isInline?"ui-standard-container justify-center gap-24":"sm:flex sm:absolute inset-0 justify-between"}`},React.createElement("button",{className:`${isInline?"w-32 h-32":"hidden sm:flex w-48 h-48"} pointer-events-auto rounded border border-mid-grey hover:border-active-orange flex justify-center items-center ui-icon-cta ui-icon-cta-left`,onClick:prev},React.createElement("div",{className:"ui-icon-cta-holder flex gap-4"},React.createElement("div",{className:"w-full h-full flex-shrink-0 flex items-center justify-center"},React.createElement(Icon,{name:"icon-gui-arrow-left",size:"1.5rem"})),React.createElement("div",{className:"w-full h-full flex-shrink-0 flex items-center justify-center"},React.createElement(Icon,{name:"icon-gui-arrow-left",size:"1.5rem"})))),React.createElement(SlideIndicator,{numSlides:children.length,activeIndex:activeIndex,interval:(_options_interval=options===null||options===void 0?void 0:options.interval)!==null&&_options_interval!==void 0?_options_interval:1e4,intervalIndicator:options===null||options===void 0?void 0:options.intervalIndicator,isInline:isInline}),React.createElement("button",{className:`${isInline?"w-32 h-32":"hidden sm:flex w-48 h-48"} pointer-events-auto rounded border border-mid-grey hover:border-active-orange justify-center items-center ui-icon-cta ui-icon-cta-right`,onClick:next},React.createElement("div",{className:"ui-icon-cta-holder flex gap-4"},React.createElement("div",{className:"w-full h-full flex-shrink-0 flex items-center justify-center"},React.createElement(Icon,{name:"icon-gui-arrow-right",size:"1.5rem"})),React.createElement("div",{className:"w-full h-full flex-shrink-0 flex items-center justify-center"},React.createElement(Icon,{name:"icon-gui-arrow-right",size:"1.5rem"}))))))};export default Slider;
|
|
Binary file
|
package/core/Table/Table.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import React,{cloneElement}from"react";export
|
|
1
|
+
import React,{cloneElement}from"react";export const Table=({id,children,...rest})=>{var _rest_className;return React.createElement("table",{id:id,...rest,className:`ui-standard-container mb-4 sm:table-fixed ${(_rest_className=rest===null||rest===void 0?void 0:rest.className)!==null&&_rest_className!==void 0?_rest_className:""}`},children)};export const TableBody=({children,...rest})=>React.createElement("tbody",rest,children);export const TableHeader=({children,...rest})=>{var _rest_className;return React.createElement("thead",{...rest,className:`sticky bg-white z-10 top-0 ${(_rest_className=rest===null||rest===void 0?void 0:rest.className)!==null&&_rest_className!==void 0?_rest_className:""}`},cloneElement(children,{isHeader:true}))};export const TableRowHeader=({children,...rest})=>{var _rest_className;return React.createElement("tr",{className:`-ml-24 mt-8 sm:ml-0 sm:mt-0 bg-light-grey sm:sticky z-10 ${(_rest_className=rest===null||rest===void 0?void 0:rest.className)!==null&&_rest_className!==void 0?_rest_className:""}`,style:{top:"4rem"}},cloneElement(children,{isRowHeader:true}))};
|
package/core/Table/TableCell.js
CHANGED
|
@@ -1 +1,7 @@
|
|
|
1
|
-
|
|
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 Partial=()=>React.createElement(Icon,{name:"icon-gui-partial",size:"1.5rem",additionalCSS:"flex-grow-0 flex-shrink-0","data-testid":"partial-icon"});const LabelCell=({children,...rest})=>{var _rest_className;const classes=`
|
|
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===null||rest===void 0?void 0:rest.className)!==null&&_rest_className!==void 0?_rest_className:""}
|
|
3
|
+
`;return React.createElement("td",{...rest,className:classes},children)};const TableCell=({children,isRowHeader,...rest})=>{var _rest_className;return React.createElement("td",{...rest,className:`
|
|
4
|
+
border-light-grey sm:p-24 leading-none flex sm:table-cell
|
|
5
|
+
${isRowHeader?"rounded-l-none rounded-r sm:rounded-lg py-20 px-24":"py-6"}
|
|
6
|
+
${(_rest_className=rest===null||rest===void 0?void 0:rest.className)!==null&&_rest_className!==void 0?_rest_className:""}
|
|
7
|
+
`},children)};const HeaderCell=({children,...rest})=>{var _rest_className;return React.createElement("td",{...rest,className:`ui-text-h3 px-24 py-24 hidden sm:table-cell ${(_rest_className=rest===null||rest===void 0?void 0:rest.className)!==null&&_rest_className!==void 0?_rest_className:""}`},children)};const CtaCell=({children,...rest})=>{var _rest_className;return React.createElement("td",{...rest,className:`pt-24 hidden sm:table-cell ${(_rest_className=rest===null||rest===void 0?void 0:rest.className)!==null&&_rest_className!==void 0?_rest_className:""}`},children)};export{TableCell,LabelCell,HeaderCell,CtaCell,Supported,Unsupported,Partial};
|
package/core/Table/TableRow.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import React from"react";const CtaRow=({children})=>React.createElement("tr",null,React.createElement("td",{className:"hidden sm:block"}),children);const TableRow=({children,isHeader,...rest})=>React.createElement("tr",rest,isHeader&&React.createElement("td",{className:"bg-white"}),children);export{TableRow,CtaRow};
|
|
@@ -0,0 +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"))))))};
|
package/core/Table.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Table,TableRowHeader,TableHeader,TableBody}from"./Table/Table";import{TableRow}from"./Table/TableRow";import{TableCell,LabelCell,HeaderCell,CtaCell,Supported,Unsupported,Partial}from"./Table/TableCell";export default{Root:Table,Row:TableRow,Cell:TableCell,LabelCell,HeaderCell,CtaCell,RowHeader:TableRowHeader,Body:TableBody,Header:TableHeader,Supported,Unsupported,Partial};
|
|
Binary file
|
package/core/Tooltip.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import React,{useEffect,useRef,useState}from"react";import Icon from"./Icon";const Tooltip=({children,triggerProps,tooltipProps,...rest})=>{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]);var _rest_className,_triggerProps_className,_tooltipProps_className;return React.createElement("div",{...rest,className:`relative inline-block align-top h-16 ${(_rest_className=rest===null||rest===void 0?void 0:rest.className)!==null&&_rest_className!==void 0?_rest_className:""}`},React.createElement("button",{onMouseEnter:()=>setOpen(true),onMouseLeave:()=>setOpen(false),type:"button",ref:reference,"aria-describedby":"tooltip",...triggerProps,className:`ml-8 p-0 relative top-1 focus:outline-none ${(_triggerProps_className=triggerProps===null||triggerProps===void 0?void 0:triggerProps.className)!==null&&_triggerProps_className!==void 0?_triggerProps_className:""}`},React.createElement(Icon,{name:"icon-gui-info",size:"1rem"})),open?React.createElement("div",{role:"tooltip",ref:floating,style:{top:-position.y,left:-position.x,boxShadow:"4px 4px 15px rgba(0, 0, 0, 0.2)"},...tooltipProps,className:`bg-light-grey p-12 rounded pointer-events-none absolute z-20 ${(_tooltipProps_className=tooltipProps===null||tooltipProps===void 0?void 0:tooltipProps.className)!==null&&_tooltipProps_className!==void 0?_tooltipProps_className:""}`},React.createElement("div",{className:"w-256"},children)):null)};export default Tooltip;
|
package/core/css.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export const remsToPixelValue=remString=>parseFloat(remString)*parseFloat(getComputedStyle(document.documentElement).fontSize);
|
package/core/dom-query.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export const queryId=(val,root=document)=>root.querySelector(`[data-id=${val}]`);export const queryIdAll=(val,root=document)=>root.querySelectorAll(`[data-id=${val}]`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{queryId}from"./dom-query";function enableBtn(el,text){el.disabled=false;el.innerText=text}function disableBtn(el,text){el.disabled=true;el.innerText=text}
|
|
1
|
+
import{queryId}from"./dom-query";function enableBtn(el,text){el.disabled=false;el.innerText=text}function disableBtn(el,text){el.disabled=true;el.innerText=text}const WAIT_BETWEEN_RETRIES_MS=100;let MAX_RETRY_COUNT=30;export default function toggleChatWidget(params={}){const{dataId}=params;const container=queryId(dataId);const chatButton=queryId("open-chat-widget",container);const textEnabled=chatButton.dataset.enabledLabel;const textDisabled=chatButton.dataset.disabledLabel;if(!dataId||!container)return;const trigger=queryId("open-chat-widget",container);let clickHandler;const waitForScript=delay=>{var _window_HubSpotConversations,_window;const widget=(_window=window)===null||_window===void 0?void 0:(_window_HubSpotConversations=_window.HubSpotConversations)===null||_window_HubSpotConversations===void 0?void 0:_window_HubSpotConversations.widget;const iframe=document.querySelector("#hubspot-messages-iframe-container");clickHandler=e=>{e.preventDefault();widget.open()};if(widget&&iframe){trigger.addEventListener("click",clickHandler);enableBtn(trigger,textEnabled)}else if(--MAX_RETRY_COUNT){setTimeout(()=>waitForScript(WAIT_BETWEEN_RETRIES_MS),delay)}};disableBtn(trigger,textDisabled);waitForScript(0);return()=>{disableBtn(trigger,textDisabled);trigger.removeEventListener("click",clickHandler)}}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M1.5 12C1.5 17.799 6.20101 22.5 12 22.5C17.799 22.5 22.5 17.799 22.5 12C22.5 6.20101 17.799 1.5 12 1.5C6.20101 1.5 1.5 6.20101 1.5 12ZM1.2779e-06 12C9.30272e-07 18.6274 5.37258 24 12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 -1.95703e-07 12 -4.37114e-07C5.37259 -6.78525e-07 1.62554e-06 5.37258 1.2779e-06 12Z" fill="#03020D"/>
|
|
3
|
+
<path d="M11.5833 23.576C5.37903 23.3566 0.416667 18.2578 0.416667 12C0.416668 5.74218 5.37903 0.643381 11.5833 0.424021L11.5833 23.576Z" fill="#03020D" stroke="#03020D" stroke-width="0.833333"/>
|
|
4
|
+
</svg>
|
package/core/icons.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{loadSprites}from"./scripts";import sprites from"../../core/sprites.svg";
|
|
1
|
+
import{loadSprites}from"./scripts";import sprites from"../../core/sprites.svg";const loadIcons=()=>loadSprites(sprites);export default loadIcons;
|
package/core/load-sprites.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export default
|
|
1
|
+
export default(spritesUrl=>{fetch(spritesUrl).then(response=>response.text()).then(image=>{const container=document.createElement("div");container.style.display="none";container.innerHTML=image;document.body.appendChild(container)}).catch(err=>console.error(err))});
|
package/core/react-renderer.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import React from"react";import{createRoot}from"react-dom/client";
|
|
1
|
+
import React from"react";import{createRoot}from"react-dom/client";const renderComponent=(Component,props,node)=>{const root=createRoot(node);root.render(React.createElement(Component,props))};export{renderComponent};export default function reactRenderer(components){const reactComponents=document.querySelectorAll("[data-react]");Array.from(reactComponents).forEach(node=>{var _node_getAttribute;const className=(_node_getAttribute=node.getAttribute("data-react"))!==null&&_node_getAttribute!==void 0?_node_getAttribute:"";const Constructor=components[className];if(!Constructor)return;const propsJson=node.getAttribute("data-react-props");const props=propsJson&&JSON.parse(propsJson||"");const root=createRoot(node);root.render(React.createElement(Constructor,props));node.removeAttribute("data-react");node.removeAttribute("data-react-props")})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{isJsonResponse}from"./remote-data-util";const fetchBlogPosts=async(store,blogUrl)=>{try{if(!blogUrl){console.log(`Skipping fetching blog posts, invalid blogUrl: "${blogUrl}"`);return}const res=await fetch(blogUrl);if(isJsonResponse(res.headers.get("content-type"))){const payload=await res.json();store.dispatch({type:"blog/loaded",payload})}else{throw new Error("Blog posts url is not serving json")}}catch(e){console.warn("Could not fetch blog posts due to error:",e)}};const initialState={recent:null};const REDUCER_KEY="blogPosts";const reducerBlogPosts={[REDUCER_KEY]:(state=initialState,action)=>{switch(action.type){case"blog/loaded":return{...state,recent:action.payload};default:return state}}};const selectRecentBlogPosts=store=>{var _store_getState_REDUCER_KEY;return(_store_getState_REDUCER_KEY=store.getState()[REDUCER_KEY])===null||_store_getState_REDUCER_KEY===void 0?void 0:_store_getState_REDUCER_KEY.recent};export{fetchBlogPosts,reducerBlogPosts,selectRecentBlogPosts};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createStore,combineReducers}from"redux";export
|
|
1
|
+
import{createStore,combineReducers}from"redux";export const attachStoreToWindow=store=>{window.AblyUi=window.AblyUi||{};window.AblyUi.RemoteDataStore=store};export const getRemoteDataStore=()=>{if(!window.AblyUi.RemoteDataStore){throw new Error("Remote store was called before one was created")}return window.AblyUi.RemoteDataStore};export const connectState=(selector,setState)=>{const store=getRemoteDataStore();let cachedOldState=selector(store);store.subscribe(()=>{const newState=selector(store);if(newState===cachedOldState){return}cachedOldState=newState;setState(newState)})};export const createRemoteDataStore=reducers=>createStore(combineReducers(reducers));
|
package/core/remote-data-util.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export const isJsonResponse=contentType=>contentType&&contentType.includes("application/json");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{isJsonResponse}from"./remote-data-util";const NOT_FOUND_ERROR_CODE="not-found";const fetchSessionData=async(store,sessionUrl)=>{const sessionLoaded=(payload={})=>store.dispatch({type:"session/loaded",payload});try{if(!sessionUrl){console.log(`Skipping fetching session, invalid sessionUrl: "${sessionUrl}"`);sessionLoaded();return}const res=await fetch(sessionUrl,{cache:"no-cache"});const jsonResponse=isJsonResponse(res.headers.get("content-type"));if(!jsonResponse){throw new Error("Session endpoint is not serving json")}const payload=await res.json();if(payload.error===NOT_FOUND_ERROR_CODE){sessionLoaded()}else{sessionLoaded(payload)}}catch(e){sessionLoaded();console.warn("Could not fetch session data due to error:",e)}};const initialState={data:null};const REDUCER_KEY="session";const reducerSessionData={[REDUCER_KEY]:(state=initialState,action)=>{switch(action.type){case"session/loaded":return{...state,data:action.payload};default:return state}}};const selectSessionData=store=>{var _store_getState_REDUCER_KEY;return(_store_getState_REDUCER_KEY=store.getState()[REDUCER_KEY])===null||_store_getState_REDUCER_KEY===void 0?void 0:_store_getState_REDUCER_KEY.data};export{fetchSessionData,reducerSessionData,selectSessionData};
|