@ably/ui 15.1.11 → 15.1.13
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/core/Accordion.js +1 -1
- package/core/Badge.js +1 -1
- package/core/Button.js +1 -1
- package/core/Code.js +1 -1
- package/core/ConnectStateWrapper.js +1 -1
- package/core/ContactFooter.js +1 -1
- package/core/CookieMessage.js +1 -1
- package/core/CustomerLogos.js +1 -1
- package/core/DropdownMenu.js +1 -1
- package/core/Expander.js +1 -1
- package/core/FeaturedLink.js +1 -1
- package/core/Flash.js +1 -1
- package/core/Footer.js +1 -1
- package/core/Icon/EncapsulatedIcon.js +1 -1
- package/core/Icon/computed-icons.js +1 -1
- package/core/Icon.js +1 -1
- package/core/LinkButton.js +1 -1
- package/core/Loader.js +2 -2
- package/core/Logo.js +1 -1
- package/core/Meganav.js +1 -1
- package/core/MeganavBlogPostsList.js +1 -1
- package/core/MeganavContentCompany.js +1 -1
- package/core/MeganavContentDevelopers.js +1 -1
- package/core/MeganavContentProducts.js +1 -1
- package/core/MeganavContentUseCases.js +1 -1
- package/core/MeganavControl.js +1 -1
- package/core/MeganavControlMobileDropdown.js +1 -1
- package/core/MeganavControlMobilePanelClose.js +1 -1
- package/core/MeganavControlMobilePanelOpen.js +1 -1
- package/core/MeganavItemsDesktop.js +1 -1
- package/core/MeganavItemsMobile.js +1 -1
- package/core/MeganavItemsSignedIn.js +1 -1
- package/core/MeganavSearch.js +1 -1
- package/core/MeganavSearchAutocomplete.js +1 -1
- package/core/MeganavSearchPanel.js +1 -1
- package/core/MeganavSearchSuggestions.js +1 -1
- package/core/Notice.js +1 -1
- package/core/Pricing/PricingCards.js +1 -1
- package/core/Pricing/data.js +1 -1
- package/core/ProductTile.js +1 -1
- package/core/SignOutLink.js +1 -1
- package/core/Slider.js +1 -1
- package/core/Status.js +1 -1
- package/core/TabMenu.js +1 -1
- package/core/Table/Table.js +1 -1
- package/core/Table/TableCell.js +2 -2
- package/core/Table/TableRow.js +1 -1
- package/core/Table/data.js +1 -1
- package/core/Toggle.js +1 -1
- package/core/Tooltip.js +1 -1
- package/core/icons/icon-gui-account.svg +2 -3
- package/core/icons/icon-gui-app.svg +2 -2
- package/core/icons/icon-gui-currency-dollar.svg +3 -0
- package/core/icons/icon-gui-organization.svg +2 -3
- package/core/icons/icon-gui-user-circle.svg +3 -0
- package/core/react-renderer.js +1 -1
- package/core/sprites.svg +1 -1
- package/core/styles/forms/story-components.js +1 -1
- package/index.d.ts +8 -8
- package/package.json +3 -2
package/core/Accordion.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import React,{useMemo,useState}from"react";import{AccordionContent,AccordionItem,AccordionTrigger,Accordion as RadixAccordion}from"@radix-ui/react-accordion";import Icon from"./Icon";import{themeClasses,isNonTransparentTheme,isStaticTheme}from"./Accordion/utils";import cn from"./utils/cn";const AccordionRow=({name,children,rowIcon,options,toggleIcons,theme,index,onClick,openRowValues})=>{const{selectable,sticky}=options||{};const rowKey=`accordion-item-${index}`;const isOpen=openRowValues.includes(rowKey);const{text,bg,hoverBg,selectableBg,selectableText,border,toggleIconColor}=themeClasses[theme];const textClass=selectable&&isOpen&&selectableText||text;return
|
|
1
|
+
import React,{useMemo,useState}from"react";import{AccordionContent,AccordionItem,AccordionTrigger,Accordion as RadixAccordion}from"@radix-ui/react-accordion";import Icon from"./Icon";import{themeClasses,isNonTransparentTheme,isStaticTheme}from"./Accordion/utils";import cn from"./utils/cn";const AccordionRow=({name,children,rowIcon,options,toggleIcons,theme,index,onClick,openRowValues})=>{const{selectable,sticky}=options||{};const rowKey=`accordion-item-${index}`;const isOpen=openRowValues.includes(rowKey);const{text,bg,hoverBg,selectableBg,selectableText,border,toggleIconColor}=themeClasses[theme];const textClass=selectable&&isOpen&&selectableText||text;return React.createElement(AccordionItem,{value:rowKey,className:cn({[`${border}`]:border&&!options?.hideBorders})},React.createElement(AccordionTrigger,{onClick:onClick,className:cn({"flex w-full group/accordion-trigger py-16 ui-text-p1 font-bold text-left items-center gap-12 transition-colors focus:outline-none":true,"px-16 mb-16 rounded-lg":isNonTransparentTheme(theme),"rounded-none":!isNonTransparentTheme(theme),"pointer-events-none focus-visible:outline-none":isStaticTheme(theme),"focus-base":!isStaticTheme(theme),"sticky top-0":sticky,[`${bg} ${hoverBg} ${text}`]:!(selectable&&isOpen),[`${selectableBg} ${selectableText}`]:selectable&&isOpen,[options?.headerCSS??""]:options?.headerCSS,[options?.selectedHeaderCSS??""]:options?.selectedHeaderCSS&&isOpen})},rowIcon?React.createElement(Icon,{name:rowIcon,color:textClass,size:options?.rowIconSize??"32px"}):null,React.createElement("span",null,name),!selectable&&!isStaticTheme(theme)?React.createElement("span",{className:"flex-1 justify-end flex items-center"},React.createElement(Icon,{name:isOpen?toggleIcons.open.name:toggleIcons.closed.name,color:toggleIconColor,size:options?.iconSize??"16px"})):null),React.createElement(AccordionContent,{className:cn({"ui-text-p2 overflow-hidden transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down":true,[options?.contentCSS??""]:options?.contentCSS})},React.createElement("div",{className:"pb-16"},children)))};const Accordion=({data,theme="transparent",icons={closed:{name:"icon-gui-plus"},open:{name:"icon-gui-minus"}},options,...props})=>{const openIndexes=useMemo(()=>{const indexValues=data.map((_,i)=>`accordion-item-${i}`);return options?.fullyOpen?indexValues:indexValues.filter((_,index)=>options?.defaultOpenIndexes?.includes(index))},[options?.defaultOpenIndexes,options?.fullyOpen,data.length]);const[openRowValues,setOpenRowValues]=useState(openIndexes);const innerAccordion=data.map((item,index)=>React.createElement(AccordionRow,{key:item.name,name:item.name,rowIcon:item.icon,toggleIcons:icons,theme:theme,options:options,index:index,onClick:()=>{item.onClick?.(index)},openRowValues:openRowValues},item.content));return React.createElement("div",props,options?.autoClose?React.createElement(RadixAccordion,{type:"single",collapsible:true,defaultValue:openIndexes[0],onValueChange:values=>setOpenRowValues(values)},innerAccordion):React.createElement(RadixAccordion,{type:"multiple",defaultValue:openIndexes,onValueChange:values=>setOpenRowValues(values)},innerAccordion))};export default Accordion;
|
package/core/Badge.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import React,{useMemo}from"react";import Icon from"./Icon";import cn from"./utils/cn";const Badge=({size="md",color="neutral",iconBefore,iconAfter,className,children,disabled=false,focusable=false,hoverable=false,iconSize="12px",ariaLabel})=>{const sizeClass=useMemo(()=>{switch(size){case"xs":return"px-8 py-0 text-[10px] leading-tight";case"sm":return"px-8 py-2 text-[10px] leading-tight";case"md":return"px-[10px] py-2 text-[11px] leading-normal";case"lg":return"px-12 py-[3px] text-[12px] leading-normal"}},[size]);const childClass=useMemo(()=>{switch(size){case"xs":case"sm":return"leading-[18px]";case"md":case"lg":return"leading-[20px]"}},[size]);const colorClass=useMemo(()=>{switch(color){case"neutral":return"text-neutral-900 dark:text-neutral-400";case"violet":return"text-violet-400";case"orange":return"text-orange-600";case"yellow":return"text-yellow-600";case"green":return"text-green-600";case"blue":return"text-blue-600";case"pink":return"text-pink-600";case"red":return"text-orange-700"}},[color]);return
|
|
1
|
+
import React,{useMemo}from"react";import Icon from"./Icon";import cn from"./utils/cn";const Badge=({size="md",color="neutral",iconBefore,iconAfter,className,children,disabled=false,focusable=false,hoverable=false,iconSize="12px",ariaLabel})=>{const sizeClass=useMemo(()=>{switch(size){case"xs":return"px-8 py-0 text-[10px] leading-tight";case"sm":return"px-8 py-2 text-[10px] leading-tight";case"md":return"px-[10px] py-2 text-[11px] leading-normal";case"lg":return"px-12 py-[3px] text-[12px] leading-normal"}},[size]);const childClass=useMemo(()=>{switch(size){case"xs":case"sm":return"leading-[18px]";case"md":case"lg":return"leading-[20px]"}},[size]);const colorClass=useMemo(()=>{switch(color){case"neutral":return"text-neutral-900 dark:text-neutral-400";case"violet":return"text-violet-400";case"orange":return"text-orange-600";case"yellow":return"text-yellow-600";case"green":return"text-green-600";case"blue":return"text-blue-600";case"pink":return"text-pink-600";case"red":return"text-orange-700"}},[color]);return React.createElement("div",{className:cn("inline-flex bg-neutral-100 dark:bg-neutral-1200 rounded-2xl gap-4 items-center focus-base transition-colors select-none font-semibold",sizeClass,colorClass,{"focus-base":focusable},{"hover:bg-neutral-300 hover:dark:bg-neutral-1000 active:bg-neutral-300 dark:active:bg-neutral-1000":hoverable},{"cursor-not-allowed disabled:text-gui-unavailable dark:disabled:text-gui-unavailable-dark":disabled},className),tabIndex:focusable?0:undefined,"aria-label":focusable||hoverable?ariaLabel:undefined},iconBefore?React.createElement(Icon,{name:iconBefore,size:iconSize,color:colorClass}):null,React.createElement("span",{className:cn("whitespace-nowrap tracking-widen-0.04",childClass)},children),iconAfter?React.createElement(Icon,{name:iconAfter,size:iconSize,color:colorClass}):null)};export default Badge;
|
package/core/Button.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import React from"react";import Icon from"./Icon";import cn from"./utils/cn";const buttonClasses={priority:{lg:"ui-button-priority-lg",md:"ui-button-priority",sm:"ui-button-priority-sm",xs:"ui-button-priority-xs"},primary:{lg:"ui-button-primary-lg",md:"ui-button-primary",sm:"ui-button-primary-sm",xs:"ui-button-primary-xs"},secondary:{lg:"ui-button-secondary-lg",md:"ui-button-secondary",sm:"ui-button-secondary-sm",xs:"ui-button-secondary-xs"}};export const iconModifierClasses={lg:{left:"ui-button-lg-left-icon",right:"ui-button-lg-right-icon"},md:{left:"ui-button-left-icon",right:"ui-button-right-icon"},sm:{left:"ui-button-sm-left-icon",right:"ui-button-sm-right-icon"},xs:{left:"",right:""}};export const commonButtonProps=props=>{const{variant="primary",size,leftIcon,rightIcon,className}=props;return{className:cn(buttonClasses[variant][size??"md"],{[iconModifierClasses[size??"md"].left]:leftIcon},{[iconModifierClasses[size??"md"].right]:rightIcon},className)}};export const commonButtonInterior=props=>{const{leftIcon,rightIcon,iconColor,children}=props;return
|
|
1
|
+
import React from"react";import Icon from"./Icon";import cn from"./utils/cn";const buttonClasses={priority:{lg:"ui-button-priority-lg",md:"ui-button-priority",sm:"ui-button-priority-sm",xs:"ui-button-priority-xs"},primary:{lg:"ui-button-primary-lg",md:"ui-button-primary",sm:"ui-button-primary-sm",xs:"ui-button-primary-xs"},secondary:{lg:"ui-button-secondary-lg",md:"ui-button-secondary",sm:"ui-button-secondary-sm",xs:"ui-button-secondary-xs"}};export const iconModifierClasses={lg:{left:"ui-button-lg-left-icon",right:"ui-button-lg-right-icon"},md:{left:"ui-button-left-icon",right:"ui-button-right-icon"},sm:{left:"ui-button-sm-left-icon",right:"ui-button-sm-right-icon"},xs:{left:"",right:""}};export const commonButtonProps=props=>{const{variant="primary",size,leftIcon,rightIcon,className}=props;return{className:cn(buttonClasses[variant][size??"md"],{[iconModifierClasses[size??"md"].left]:leftIcon},{[iconModifierClasses[size??"md"].right]:rightIcon},className)}};export const commonButtonInterior=props=>{const{leftIcon,rightIcon,iconColor,children}=props;return React.createElement(React.Fragment,null,leftIcon?React.createElement(Icon,{name:leftIcon,additionalCSS:iconColor}):null,children,rightIcon?React.createElement(Icon,{name:rightIcon,additionalCSS:iconColor}):null)};const Button=({variant="primary",size,leftIcon,rightIcon,children,className,iconColor,...rest})=>{return React.createElement("button",{...commonButtonProps({variant,size,leftIcon,rightIcon,className}),...rest},commonButtonInterior({leftIcon,rightIcon,iconColor,children}))};export default Button;
|
package/core/Code.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import React from"react";import{highlightSnippet,registerDefaultLanguages}from"./utils/syntax-highlighter";import languagesRegistry from"./utils/syntax-highlighter-registry";registerDefaultLanguages(languagesRegistry);const Code=({language,snippet,textSize="ui-text-code",padding="p-32",additionalCSS="",showLines,lineCSS})=>{const HTMLraw=highlightSnippet(language,`${snippet}`.trim())??"";const className=`language-${language} ${textSize}`;const lineCount=snippet.split(/\r\n|\r|\n/).length;return
|
|
1
|
+
import React from"react";import{highlightSnippet,registerDefaultLanguages}from"./utils/syntax-highlighter";import languagesRegistry from"./utils/syntax-highlighter-registry";registerDefaultLanguages(languagesRegistry);const Code=({language,snippet,textSize="ui-text-code",padding="p-32",additionalCSS="",showLines,lineCSS})=>{const HTMLraw=highlightSnippet(language,`${snippet}`.trim())??"";const className=`language-${language} ${textSize}`;const lineCount=snippet.split(/\r\n|\r|\n/).length;return React.createElement("div",{className:`hljs overflow-auto flex ${padding} ${additionalCSS}`,"data-id":"code"},showLines?React.createElement("div",null,[...Array(lineCount)].map((_,i)=>React.createElement("p",{className:`mr-24 font-mono text-right text-neutral-800 ${lineCSS??""}`,key:i},i+1))):null,React.createElement("pre",{lang:language},React.createElement("code",{className:className,dangerouslySetInnerHTML:{__html:HTMLraw}})))};export default Code;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import React,{useEffect,useState}from"react";import{connectState,getRemoteDataStore}from"./remote-data-store";const ConnectStateWrapper=(Component,selectors)=>{const[state,setState]=useState({});const setStateForKey=key=>storeState=>setState(()=>({[key]:storeState}));useEffect(()=>{const store=getRemoteDataStore();const resolvedState=Object.keys(selectors).reduce((acc,key)=>({...acc,[key]:selectors[key](store)}),{});setState(resolvedState);Object.keys(selectors).forEach(key=>{connectState(selectors[key],setStateForKey(key))})},[]);const WrappedComponent=props
|
|
1
|
+
import React,{useEffect,useState}from"react";import{connectState,getRemoteDataStore}from"./remote-data-store";const ConnectStateWrapper=(Component,selectors)=>{const[state,setState]=useState({});const setStateForKey=key=>storeState=>setState(()=>({[key]:storeState}));useEffect(()=>{const store=getRemoteDataStore();const resolvedState=Object.keys(selectors).reduce((acc,key)=>({...acc,[key]:selectors[key](store)}),{});setState(resolvedState);Object.keys(selectors).forEach(key=>{connectState(selectors[key],setStateForKey(key))})},[]);const WrappedComponent=props=>React.createElement(Component,{...props,...state});return WrappedComponent};export default ConnectStateWrapper;
|
package/core/ContactFooter.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import React,{useEffect}from"react";import Icon from"./Icon";import _absUrl from"./url-base.js";import toggleChatWidget from"./hubspot-chat-toggle";const ContactFooter=({urlBase})=>{useEffect(()=>toggleChatWidget({dataId:"contact-footer"}),[]);const absUrl=path=>_absUrl(path,urlBase);return
|
|
1
|
+
import React,{useEffect}from"react";import Icon from"./Icon";import _absUrl from"./url-base.js";import toggleChatWidget from"./hubspot-chat-toggle";const ContactFooter=({urlBase})=>{useEffect(()=>toggleChatWidget({dataId:"contact-footer"}),[]);const absUrl=path=>_absUrl(path,urlBase);return React.createElement("div",{className:"ui-contact-footer font-sans antialiased","data-id":"contact-footer"},React.createElement("div",{className:"w-full bp-lg max-w-screen-xl mx-auto py-64 grid grid-cols-1 md:grid-cols-3 ui-grid-gap ui-grid-px"},React.createElement("div",{className:"ui-contact-footer-box"},React.createElement(Icon,{name:"icon-display-live-chat",size:"3rem",additionalCSS:"block mb-16"}),React.createElement("div",null,React.createElement("div",{className:"ui-text-h3 mb-24"},"Live Chat"),React.createElement("p",{className:"ui-text-p1"},"Reach out team of experts over chat powered by Ably.")),React.createElement("button",{type:"button",className:"ui-btn-secondary self-start mt-16",disabled:true,"data-id":"open-chat-widget","data-enabled-label":"Start a live chat","data-disabled-label":"Live chat unavailable"},"Live chat unavailable")),React.createElement("div",{className:"ui-contact-footer-box"},React.createElement(Icon,{name:"icon-display-call-mobile",size:"3rem",additionalCSS:"block mb-16"}),React.createElement("div",{className:"flex-grow"},React.createElement("div",{className:"ui-text-h3 mb-24"},"Call us"),React.createElement("p",{className:"ui-text-p1"},React.createElement("span",{className:"block"},React.createElement("strong",{className:"font-bold"},"+1 877 434 5287")," (USA, toll free)"),React.createElement("span",{className:"block"},React.createElement("strong",{className:"font-bold"},"+44 20 3318 4689")," (UK)")))),React.createElement("div",{className:"ui-contact-footer-box"},React.createElement(Icon,{name:"icon-display-tech-account-comms",size:"3rem",additionalCSS:"block mb-16"}),React.createElement("div",null,React.createElement("div",{className:"ui-text-h3 mb-24"},"Technical and account support"),React.createElement("p",{className:"ui-text-p1"},"We're standing by to help with any questions or code.")),React.createElement("a",{className:"ui-btn-secondary self-start p-btn mt-16",href:absUrl("/support")},"Get support now"))))};export default ContactFooter;
|
package/core/CookieMessage.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import React,{useRef,useEffect,useState}from"react";import Cookie from"js-cookie";import _absUrl from"./url-base";const COOKIE_EXPIRY=365;const CookieMessage=({cookieId,urlBase})=>{const ref=useRef(null);const[hideCookieMessage,setHideCookieMessage]=useState(true);useEffect(()=>{const isCookieSet=Cookie.get(cookieId)?true:false;setHideCookieMessage(isCookieSet)},[]);const handleClose=()=>{Cookie.set(cookieId,"1",{expires:COOKIE_EXPIRY});ref.current?.classList.add("bottom-1","opacity-0");setTimeout(()=>setHideCookieMessage(true),500)};const absUrl=path=>_absUrl(path,urlBase);if(hideCookieMessage)return null;return
|
|
1
|
+
import React,{useRef,useEffect,useState}from"react";import Cookie from"js-cookie";import _absUrl from"./url-base";const COOKIE_EXPIRY=365;const CookieMessage=({cookieId,urlBase})=>{const ref=useRef(null);const[hideCookieMessage,setHideCookieMessage]=useState(true);useEffect(()=>{const isCookieSet=Cookie.get(cookieId)?true:false;setHideCookieMessage(isCookieSet)},[]);const handleClose=()=>{Cookie.set(cookieId,"1",{expires:COOKIE_EXPIRY});ref.current?.classList.add("bottom-1","opacity-0");setTimeout(()=>setHideCookieMessage(true),500)};const absUrl=path=>_absUrl(path,urlBase);if(hideCookieMessage)return null;return React.createElement("div",{className:"ui-cookie-message",ref:ref},React.createElement("p",{className:"ui-text-p2 pr-32"},React.createElement("a",{href:absUrl("/privacy"),className:"underline"},"How we use cookies")," ","to improve your experience."),React.createElement("button",{className:"ui-btn-secondary mt-12 sm:mt-0 whitespace-nowrap",onClick:handleClose},"Accept and close"))};export default CookieMessage;
|
package/core/CustomerLogos.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import React from"react";const CustomerLogos=({companies,additionalCss=""})=>{return
|
|
1
|
+
import React from"react";const CustomerLogos=({companies,additionalCss=""})=>{return React.createElement("section",{className:"w-full bg-white"},React.createElement("ul",{className:`py-64 flex flex-row flex-wrap md:flex-nowrap content-between m-auto items-center ${additionalCss}`},companies.map(company=>React.createElement("li",{key:company.label,className:"flex-auto text-center sm:w-1/3 w-1/2"},React.createElement("img",{alt:company.label,src:company.logo,className:"mx-auto"})))))};export default CustomerLogos;
|
package/core/DropdownMenu.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import React,{createContext,useContext,useState,useEffect,useRef}from"react";import Icon from"./Icon";const DropdownMenuContext
|
|
1
|
+
import React,{createContext,useContext,useState,useEffect,useRef}from"react";import Icon from"./Icon";const DropdownMenuContext=createContext({isOpen:false,setOpen:()=>{}});const DropdownMenu=({children})=>{const[isOpen,setOpen]=useState(false);const ref=useRef(null);useEffect(()=>{const clickHandler=e=>{if(ref.current?.contains(e.target))return;setOpen(false)};document.addEventListener("click",clickHandler);return()=>{document.removeEventListener("click",clickHandler)}},[]);return React.createElement(DropdownMenuContext.Provider,{value:{isOpen,setOpen}},React.createElement("div",{id:"dropdown-menu",className:"relative",ref:ref},children))};const Trigger=({children,additionalTriggerCSS=""})=>{const{isOpen,setOpen}=useContext(DropdownMenuContext);return React.createElement("button",{id:"menu-trigger",onClick:()=>setOpen(!isOpen),className:`${additionalTriggerCSS} flex items-center p-8 ml-8 group hover:text-gui-hover hover:bg-light-grey active:text-gui-active focus:text-gui-focus focus:outline-none rounded-lg`},React.createElement("span",{className:"leading-normal"},children),React.createElement(Icon,{name:"icon-gui-disclosure-arrow",color:"text-cool-black",size:"1.25rem",additionalCSS:"transform rotate-90 group-hover:text-gui-hover group-active:text-gui-active group-focus:text-gui-focus"}))};const Content=({children,anchorPosition="right",additionalContentCSS})=>{const{isOpen}=useContext(DropdownMenuContext);if(!isOpen){return null}const anchorPositionClasses=anchorPosition==="right"?"right-0":"left-0";return React.createElement("div",{id:"menu-content",className:`${additionalContentCSS} absolute p-8 z-10 border border-mid-grey bg-white rounded shadow-container ${anchorPositionClasses}`,style:{minWidth:275,top:44}},children)};const Link=({url,title,subtitle,iconName,children})=>{return React.createElement("a",{href:url,className:"menu-link group block p-8 hover:bg-light-grey hover:text-cool-black rounded"},React.createElement("p",{className:"mb-4"},title,iconName?React.createElement(Icon,{name:iconName,size:"1rem",color:"text-cool-black",additionalCSS:"align-middle ml-8 relative -top-1 -left-4"}):null),subtitle?React.createElement("p",{className:"ui-text-p3 mb-16"},subtitle):null,children)};DropdownMenu.Trigger=Trigger;DropdownMenu.Content=Content;DropdownMenu.Link=Link;export default DropdownMenu;
|
package/core/Expander.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import React,{useEffect,useRef,useState}from"react";import throttle from"lodash.throttle";const Expander=({heightThreshold=200,className,fadeClassName,controlsClassName,controlsOpenedLabel,controlsClosedLabel,children})=>{const innerRef=useRef(null);const[showControls,setShowControls]=useState(false);const[contentHeight,setContentHeight]=useState(heightThreshold);const[height,setHeight]=useState(heightThreshold);const[expanded,setExpanded]=useState(false);useEffect(()=>{if(innerRef.current){setContentHeight(innerRef.current.clientHeight)}if(contentHeight<heightThreshold){setHeight("auto")}else if(expanded){setHeight(contentHeight)}else{setHeight(heightThreshold)}setShowControls(contentHeight>=heightThreshold)},[contentHeight,heightThreshold,expanded]);useEffect(()=>{const onResize=throttle(()=>{if(innerRef.current){setContentHeight(innerRef.current.clientHeight)}},250);window.addEventListener("resize",onResize);return()=>{window.removeEventListener("resize",onResize)}},[]);return
|
|
1
|
+
import React,{useEffect,useRef,useState}from"react";import throttle from"lodash.throttle";const Expander=({heightThreshold=200,className,fadeClassName,controlsClassName,controlsOpenedLabel,controlsClosedLabel,children})=>{const innerRef=useRef(null);const[showControls,setShowControls]=useState(false);const[contentHeight,setContentHeight]=useState(heightThreshold);const[height,setHeight]=useState(heightThreshold);const[expanded,setExpanded]=useState(false);useEffect(()=>{if(innerRef.current){setContentHeight(innerRef.current.clientHeight)}if(contentHeight<heightThreshold){setHeight("auto")}else if(expanded){setHeight(contentHeight)}else{setHeight(heightThreshold)}setShowControls(contentHeight>=heightThreshold)},[contentHeight,heightThreshold,expanded]);useEffect(()=>{const onResize=throttle(()=>{if(innerRef.current){setContentHeight(innerRef.current.clientHeight)}},250);window.addEventListener("resize",onResize);return()=>{window.removeEventListener("resize",onResize)}},[]);return React.createElement(React.Fragment,null,React.createElement("div",{style:{height},"data-testid":"expander-container",className:`overflow-hidden transition-all relative ${className??""}`},showControls&&!expanded&&React.createElement("div",{className:`h-64 w-full bg-gradient-to-t from-white to-transparent absolute bottom-0 left-0 right-0 ${fadeClassName??""}`}),React.createElement("div",{ref:innerRef},children)),showControls&&React.createElement("div",{onClick:()=>setExpanded(!expanded),onKeyDown:e=>e.key==="Enter"&&setExpanded(!expanded),tabIndex:0,"data-testid":"expander-controls",className:`${heightThreshold===0&&!expanded?"":"mt-16"} cursor-pointer font-bold text-gui-blue-default-light hover:text-gui-blue-hover-light ${controlsClassName??""}`},expanded?controlsOpenedLabel??"View less -":controlsClosedLabel??"View all +"))};export default Expander;
|
package/core/FeaturedLink.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import React from"react";import Icon from"./Icon";import cn from"./utils/cn";const buildTargetAndRel=(url,newWindow)=>{const props={};if(newWindow){props.target="_blank";if(url.startsWith("/")&&!url.startsWith("//")){props.rel="noopener"}else{props.rel="noopenner noreferrer"}}return props};const FeaturedLink=({url,textSize="text-p2",iconColor,flush=false,reverse=false,additionalCSS="",newWindow=false,onClick=undefined,children,disabled=false})=>{const targetAndRel=buildTargetAndRel(url,newWindow);return
|
|
1
|
+
import React from"react";import Icon from"./Icon";import cn from"./utils/cn";const buildTargetAndRel=(url,newWindow)=>{const props={};if(newWindow){props.target="_blank";if(url.startsWith("/")&&!url.startsWith("//")){props.rel="noopener"}else{props.rel="noopenner noreferrer"}}return props};const FeaturedLink=({url,textSize="text-p2",iconColor,flush=false,reverse=false,additionalCSS="",newWindow=false,onClick=undefined,children,disabled=false})=>{const targetAndRel=buildTargetAndRel(url,newWindow);return React.createElement("a",{...onClick?{}:{href:url},className:cn("font-sans font-bold block group/featured-link",{"text-gui-unavailable pointer-events-none":disabled},{"text-gui-default hover:text-gui-hover focus:text-gui-focus focus:outline-none focus-visible:outline-gui-focus":!disabled},{"py-8":!flush},`ui-${textSize}`,additionalCSS),style:{"--featured-link-icon-size":`var(${textSize.replace("text","--fs")})`},...targetAndRel,onClick:onClick},reverse?React.createElement(React.Fragment,null,React.createElement(Icon,{name:"icon-gui-link-arrow",size:`calc(var(--featured-link-icon-size) * 1.25)`,color:iconColor,additionalCSS:cn("align-middle mr-8 relative -top-1 -right-4 transition-[right] transform rotate-180",{"group-hover/featured-link:right-0":!disabled})}),children):React.createElement(React.Fragment,null,children,React.createElement(Icon,{name:"icon-gui-link-arrow",size:`calc(var(--featured-link-icon-size) * 1.25)`,color:iconColor,additionalCSS:cn("align-middle ml-8 relative -top-1 -left-4 transition-[left]",{"group-hover/featured-link:left-0":!disabled})})))};export default FeaturedLink;
|
package/core/Flash.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import React,{useEffect,useState,useRef}from"react";import DOMPurify from"dompurify";import{getRemoteDataStore}from"./remote-data-store.js";import ConnectStateWrapper from"./ConnectStateWrapper";import Icon from"./Icon";const REDUCER_KEY="flashes";const FLASH_DATA_ID="ui-flashes";const initialState={items:[]};const reducerFlashes={[REDUCER_KEY]:(state=initialState,action)=>{switch(action.type){case"flash/push":{const flashes=Array.isArray(action.payload)?action.payload:[action.payload];return{items:[...state.items,...flashes]}}default:return state}}};const selectFlashes=store=>store.getState()[REDUCER_KEY];const FLASH_BG_COLOR={error:"bg-gui-error",success:"bg-zingy-green",notice:"bg-electric-cyan",info:"bg-electric-cyan",alert:"bg-active-orange"};const FLASH_TEXT_COLOR={error:"text-white",success:"text-cool-black",notice:"text-cool-black",info:"text-cool-black",alert:"text-white"};const AUTO_HIDE=["success","info","notice"];const AUTO_HIDE_TIME=8e3;const useAutoHide=(type,closeFlash)=>{const timeoutId=useRef(null);useEffect(()=>{if(AUTO_HIDE.includes(type)){timeoutId.current=setTimeout(()=>{closeFlash()},AUTO_HIDE_TIME)}return()=>{if(timeoutId.current){clearTimeout(timeoutId.current)}}},[])};const Flash=({id,type,content,removeFlash})=>{const ref=useRef(null);const[closed,setClosed]=useState(false);const[flashHeight,setFlashHeight]=useState(0);const[triggerEntryAnimation,setTriggerEntryAnimation]=useState(false);const closeFlash=()=>{if(ref.current){setFlashHeight(ref.current.getBoundingClientRect().height)}setClosed(true);setTimeout(()=>{if(id){removeFlash(id)}},100)};useEffect(()=>setTriggerEntryAnimation(true),[]);useAutoHide(type,closeFlash);const animateEntry=triggerEntryAnimation&&!closed;let style;if(flashHeight&&!closed){style={height:`${flashHeight}px`}}else if(closed){style={height:0,marginTop:0,zIndex:-1}}else{style={}}const safeContent=DOMPurify.sanitize(content,{ALLOWED_TAGS:["a"],ALLOWED_ATTR:["href","data-method","rel"]});const withIcons={notice:"icon-gui-ably-badge",success:"icon-gui-tick",error:"icon-gui-warning",alert:"icon-gui-warning",info:""};const iconColor={notice:"text-cool-black",success:"text-cool-black",error:"text-white",alert:"text-white",info:""};return
|
|
1
|
+
import React,{useEffect,useState,useRef}from"react";import DOMPurify from"dompurify";import{getRemoteDataStore}from"./remote-data-store.js";import ConnectStateWrapper from"./ConnectStateWrapper";import Icon from"./Icon";const REDUCER_KEY="flashes";const FLASH_DATA_ID="ui-flashes";const initialState={items:[]};const reducerFlashes={[REDUCER_KEY]:(state=initialState,action)=>{switch(action.type){case"flash/push":{const flashes=Array.isArray(action.payload)?action.payload:[action.payload];return{items:[...state.items,...flashes]}}default:return state}}};const selectFlashes=store=>store.getState()[REDUCER_KEY];const FLASH_BG_COLOR={error:"bg-gui-error",success:"bg-zingy-green",notice:"bg-electric-cyan",info:"bg-electric-cyan",alert:"bg-active-orange"};const FLASH_TEXT_COLOR={error:"text-white",success:"text-cool-black",notice:"text-cool-black",info:"text-cool-black",alert:"text-white"};const AUTO_HIDE=["success","info","notice"];const AUTO_HIDE_TIME=8e3;const useAutoHide=(type,closeFlash)=>{const timeoutId=useRef(null);useEffect(()=>{if(AUTO_HIDE.includes(type)){timeoutId.current=setTimeout(()=>{closeFlash()},AUTO_HIDE_TIME)}return()=>{if(timeoutId.current){clearTimeout(timeoutId.current)}}},[])};const Flash=({id,type,content,removeFlash})=>{const ref=useRef(null);const[closed,setClosed]=useState(false);const[flashHeight,setFlashHeight]=useState(0);const[triggerEntryAnimation,setTriggerEntryAnimation]=useState(false);const closeFlash=()=>{if(ref.current){setFlashHeight(ref.current.getBoundingClientRect().height)}setClosed(true);setTimeout(()=>{if(id){removeFlash(id)}},100)};useEffect(()=>setTriggerEntryAnimation(true),[]);useAutoHide(type,closeFlash);const animateEntry=triggerEntryAnimation&&!closed;let style;if(flashHeight&&!closed){style={height:`${flashHeight}px`}}else if(closed){style={height:0,marginTop:0,zIndex:-1}}else{style={}}const safeContent=DOMPurify.sanitize(content,{ALLOWED_TAGS:["a"],ALLOWED_ATTR:["href","data-method","rel"]});const withIcons={notice:"icon-gui-ably-badge",success:"icon-gui-tick",error:"icon-gui-warning",alert:"icon-gui-warning",info:""};const iconColor={notice:"text-cool-black",success:"text-cool-black",error:"text-white",alert:"text-white",info:""};return React.createElement("div",{className:`ui-flash-message ui-grid-px ${animateEntry?"ui-flash-message-enter":""}`,style:style,ref:ref,"data-id":"ui-flash"},React.createElement("div",{className:`${FLASH_BG_COLOR[type]} p-32 flex align-center rounded shadow-container-subtle`},withIcons[type]&&iconColor[type]&&React.createElement(Icon,{name:withIcons[type],color:iconColor[type],size:"1.5rem",additionalCSS:"mr-16 self-baseline"}),React.createElement("p",{className:`ui-text-p1 mr-16 ${FLASH_TEXT_COLOR[type]}`,dangerouslySetInnerHTML:{__html:safeContent}}),React.createElement("button",{type:"button",className:"p-0 ml-auto self-start focus:outline-none",onClick:closeFlash},iconColor[type]&&React.createElement(Icon,{name:"icon-gui-close",color:iconColor[type],size:"1.5rem",additionalCSS:"transition-colors"}))))};const Flashes=({flashes})=>{const[flashesWithIds,setFlashesWithIds]=useState([]);const removeFlash=flashId=>setFlashesWithIds(items=>items.filter(item=>item.id!==flashId));useEffect(()=>{setFlashesWithIds(state=>{return[...state,...(flashes?.items??[]).map(flash=>({...flash,id:Math.random().toString(36).slice(2),removed:false}))]})},[flashes]);return React.createElement("div",{className:"ui-flash","data-id":FLASH_DATA_ID},flashesWithIds.filter(item=>!item.removed).map(flash=>React.createElement(Flash,{key:flash.id,...flash,removeFlash:removeFlash})))};const BackendFlashes=({flashes})=>{useEffect(()=>{const transformedFlashes=flashes.map(flash=>{const[type,content]=flash;return{type,content}})||[];if(transformedFlashes.length>0){const store=getRemoteDataStore();store.dispatch({type:"flash/push",payload:transformedFlashes})}},[]);const WrappedFlashes=ConnectStateWrapper(Flashes,{flashes:selectFlashes});return React.createElement(WrappedFlashes,null)};export{reducerFlashes,FLASH_DATA_ID,Flashes};export default BackendFlashes;
|
package/core/Footer.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import React from"react";import Icon from"./Icon";import _absUrl from"./url-base.js";import{StatusIcon}from"./Status";const Footer=({paths,urlBase,statusUrl})=>{const absUrl=path=>_absUrl(path,urlBase);return /*#__PURE__*/React.createElement("footer",{className:"bg-light-grey font-sans antialiased leading-normal","data-id":"footer"},/*#__PURE__*/React.createElement("div",{className:"max-w-screen-xl mx-auto py-32 sm:py-40 md:py-64 ui-grid-gap ui-grid-px grid grid-cols-6"},/*#__PURE__*/React.createElement("div",{className:"col-span-full md:col-span-2"},/*#__PURE__*/React.createElement("div",{className:"flex flex-row p-menu-row-snug"},/*#__PURE__*/React.createElement("img",{className:"mr-24 -mt-16",src:paths.ablyStack,alt:"Ably homepage"}),/*#__PURE__*/React.createElement("h2",{className:"ui-text-overline2 col-span-full"},"The Ably Platform")),/*#__PURE__*/React.createElement("div",{className:"md:col-span-4 md:w-3/4 xs:w-3/5 w-full"},/*#__PURE__*/React.createElement("p",{className:"ui-text-p3 font-bold py-16 p-menu-row-snug"},"Easily power any realtime experience in your application via a simple API that handles everything realtime.")),/*#__PURE__*/React.createElement("ul",{className:"grid grid-cols-1"},/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/pubsub"),className:"ui-footer-menu-row-link"},"Pub/sub messaging")),/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/push-notifications"),className:"ui-footer-menu-row-link"},"Push notifications")),/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/integrations"),className:"ui-footer-menu-row-link"},"Third-party integrations")),/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/protocols"),className:"ui-footer-menu-row-link"},"Multiple protocol messaging")))),/*#__PURE__*/React.createElement("div",{className:"col-span-full xs:col-span-3 md:col-span-1"},/*#__PURE__*/React.createElement("h2",{className:"ui-footer-col-title"},"Ably is for"),/*#__PURE__*/React.createElement("ul",null,/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/solutions/asset-tracking"),className:"ui-footer-menu-row-link"},"Ably Asset Tracking")),/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/solutions/extend-kafka-to-the-edge"),className:"ui-footer-menu-row-link"},"Extend Kafka to the edge")),/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/solutions/edtech"),className:"ui-footer-menu-row-link"},"EdTech")),/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/solutions/automotive-logistics-and-mobility"),className:"ui-footer-menu-row-link"},"Automotive, Logistics, & Mobility")),/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/solutions/b2b-platforms"),className:"ui-footer-menu-row-link"},"B2B Platforms")),/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/solutions/healthcare"),className:"ui-footer-menu-row-link"},"Healthcare")),/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/solutions/ecommerce-and-retail"),className:"ui-footer-menu-row-link"},"eCommerce & Retail")),/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/solutions/sports-and-media"),className:"ui-footer-menu-row-link"},"Sports & Media")),/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/solutions/gaming"),className:"ui-footer-menu-row-link"},"Gaming")),/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/solutions/iot-and-connected-devices"),className:"ui-footer-menu-row-link"},"IoT & Connected Devices")))),/*#__PURE__*/React.createElement("div",{className:"col-span-full xs:col-span-3 md:col-span-1"},/*#__PURE__*/React.createElement("h2",{className:"ui-footer-col-title"},"Developers"),/*#__PURE__*/React.createElement("ul",null,/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/docs/quick-start-guide"),className:"ui-footer-menu-row-link"},"Start in 5 minutes")),/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/docs/"),className:"ui-footer-menu-row-link"},"Documentation")),/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/tutorials"),className:"ui-footer-menu-row-link"},"Tutorials")),/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:"https://changelog.ably.com/",className:"ui-footer-menu-row-link"},"Changelog")),/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/support"),className:"ui-footer-menu-row-link"},"Support & FAQs")),/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/docs/sdks"),className:"ui-footer-menu-row-link"},"SDKs")),/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{className:"ui-footer-menu-row-link flex items-center gap-4",href:"https://status.ably.com/",target:"_blank",rel:"noreferrer"},"System status",/*#__PURE__*/React.createElement(StatusIcon,{statusUrl:statusUrl}))))),/*#__PURE__*/React.createElement("div",{className:"col-span-full xs:col-span-3 md:col-span-1"},/*#__PURE__*/React.createElement("h2",{className:"ui-footer-col-title"},"WHY ABLY"),/*#__PURE__*/React.createElement("ul",null,/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/customers"),className:"ui-footer-menu-row-link"},"Customers")),/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/case-studies"),className:"ui-footer-menu-row-link"},"Case Studies")),/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/four-pillars-of-dependability"),className:"ui-footer-menu-row-link"},"Four Pillars of Dependability")),/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/compare"),className:"ui-footer-menu-row-link"},"Compare our tech")),/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/protocols"),className:"ui-footer-menu-row-link"},"Multi protocol support")),/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/integrations"),className:"ui-footer-menu-row-link"},"Third-party integrations")))),/*#__PURE__*/React.createElement("div",{className:"col-span-full xs:col-span-3 md:col-span-1"},/*#__PURE__*/React.createElement("h2",{className:"ui-footer-col-title"},"ABOUT"),/*#__PURE__*/React.createElement("ul",null,/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/about"),className:"ui-footer-menu-row-link"},"About Ably")),/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/pricing"),className:"ui-footer-menu-row-link"},"Pricing")),/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/blog"),className:"ui-footer-menu-row-link"},"Blog")),/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/careers"),className:"ui-footer-menu-row-link"},"Careers")),/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/open-policy"),className:"ui-footer-menu-row-link"},"Open protocol policy")),/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/press-center"),className:"ui-footer-menu-row-link"},"Press & Media")),/*#__PURE__*/React.createElement("li",{className:"p-menu-row-snug"},/*#__PURE__*/React.createElement("a",{href:absUrl("/contact"),className:"ui-footer-menu-row-link"},"Contact us"))))),/*#__PURE__*/React.createElement("div",{className:"max-w-screen-xl ui-grid-px mx-auto"},/*#__PURE__*/React.createElement("hr",{className:"border-t border-mid-grey my-0"})),/*#__PURE__*/React.createElement("div",{className:"max-w-screen-xl mx-auto py-16 grid ui-grid-gap ui-grid-px sm:grid-cols-2"},/*#__PURE__*/React.createElement("div",{className:"md:flex md:items-center"},/*#__PURE__*/React.createElement("div",{className:"flex flex-col md:flex-row flex-auto ml-8 sm:col-span-1 md:col-span-2"},/*#__PURE__*/React.createElement("div",{className:""},/*#__PURE__*/React.createElement("div",{className:"flex pb-24"},/*#__PURE__*/React.createElement("a",{className:"h-24 pr-24 text-cool-black hover:text-icon-twitter",href:"https://twitter.com/ablyrealtime",title:"Ably on X"},/*#__PURE__*/React.createElement(Icon,{name:"icon-social-x",size:"1.5rem"})),/*#__PURE__*/React.createElement("a",{className:"h-24 pr-24 text-cool-black hover:text-icon-linkedin",href:"https://www.linkedin.com/company/ably-realtime",title:"Ably on LinkedIn"},/*#__PURE__*/React.createElement(Icon,{name:"icon-social-linkedin",size:"1.5rem"})),/*#__PURE__*/React.createElement("a",{className:"h-24 pr-24 text-cool-black hover:text-icon-github",href:"https://github.com/ably/",title:"Ably on Github"},/*#__PURE__*/React.createElement(Icon,{name:"icon-social-github",size:"1.5rem"})),/*#__PURE__*/React.createElement("a",{className:"h-24 pr-24 text-cool-black hover:text-icon-discord",href:"https://discord.gg/jwBPhEZ9g5",title:"Ably on Discord"},/*#__PURE__*/React.createElement(Icon,{name:"icon-social-discord",size:"1.5rem"})))),/*#__PURE__*/React.createElement("div",{className:"xs:hidden sm:block ui-footer-glassdoor"},/*#__PURE__*/React.createElement("div",{className:"flex sm:pt-24 md:pt-0 sm:border-t sm:border-l-0 md:border-t-0 md:border-l sm:border-mid-grey sm:w-3/4 md:w-full md:pl-24"},/*#__PURE__*/React.createElement("a",{href:"https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm",className:"h-24 text-cool-black hover:text-icon-glassdoor",title:"Ably reviews on glassdoor"},/*#__PURE__*/React.createElement(Icon,{name:"icon-social-glassdoor",size:"1.5rem"})),/*#__PURE__*/React.createElement("div",{className:"pl-16 text-menu3 font-sans font-medium"},/*#__PURE__*/React.createElement("strong",{className:"block font-medium"},"We're hiring!"),/*#__PURE__*/React.createElement("a",{href:"https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm",className:"ui-footer-link"},"Learn more at Glassdoor"))))),/*#__PURE__*/React.createElement("div",{className:"xs:block sm:hidden"},/*#__PURE__*/React.createElement("div",{className:"border-t border-mid-grey w-full"}),/*#__PURE__*/React.createElement("div",{className:"flex py-24"},/*#__PURE__*/React.createElement("a",{className:"h-24 pr-16 text-cool-black hover:text-icon-glassdoor",href:"https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm",title:"Ably reviews on glassdoor"},/*#__PURE__*/React.createElement(Icon,{name:"icon-social-glassdoor",size:"1.5rem"})),/*#__PURE__*/React.createElement("div",{className:"text-menu3 font-sans font-medium"},/*#__PURE__*/React.createElement("strong",{className:"block font-medium"},"We're hiring!"),/*#__PURE__*/React.createElement("a",{href:"https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm",className:"ui-footer-link"},"Learn more at Glassdoor"))))),/*#__PURE__*/React.createElement("div",{className:"col-span-full sm:col-span-1 inline-flex sm:ml-auto sm:items-center"},/*#__PURE__*/React.createElement("img",{className:"mr-24 h-80",src:paths.highestUserAdoption,alt:"Highest User Adoption 2023"}),/*#__PURE__*/React.createElement("img",{className:"mr-24 h-80",src:paths.bestSupport,alt:"Best Support 2023"}),/*#__PURE__*/React.createElement("img",{className:"mr-24 h-80",src:paths.fastestImplementation,alt:"Fastest Implementation 2023"}),/*#__PURE__*/React.createElement("img",{className:"mr-24 h-80",src:paths.highestPerformer,alt:"High Performer 2023"}))),/*#__PURE__*/React.createElement("div",{className:"max-w-screen-xl ui-grid-px mx-auto"},/*#__PURE__*/React.createElement("hr",{className:"border-t border-mid-grey my-0"})),/*#__PURE__*/React.createElement("div",{className:"max-w-screen-xl mx-auto py-24 sm:py-40 md:py-32 md:grid md:grid-cols-2 ui-grid-gap ui-grid-px"},/*#__PURE__*/React.createElement("div",{className:"flex ml-8 col-span-full sm:col-span-1 md:pb-16 items-center ui-footer-bottom-links"},/*#__PURE__*/React.createElement("div",{className:"flex"},/*#__PURE__*/React.createElement("a",{href:absUrl("/privacy"),className:"pr-24 ui-footer-link"},"Cookies"),/*#__PURE__*/React.createElement("a",{href:absUrl("/legals"),className:"pr-24 ui-footer-link"},"Legals"),/*#__PURE__*/React.createElement("a",{href:absUrl("/data-protection"),className:"pr-24 ui-footer-link"},"Data Protection"),/*#__PURE__*/React.createElement("a",{href:absUrl("/privacy"),className:"ui-footer-link"},"Privacy"))),/*#__PURE__*/React.createElement("div",{className:"xs:grid xs:grid-cols-2 sm:grid-cols-4 xs:pl-16 sm:pl-8 md:justify-items-end"},/*#__PURE__*/React.createElement("div",{className:"flex mr-24"},/*#__PURE__*/React.createElement(Icon,{name:"icon-gui-tick",color:"text-active-orange",size:"1.5rem",additionalCSS:"bg-white rounded-full mr-12 ui-footer-tick-icon"}),/*#__PURE__*/React.createElement("div",null,/*#__PURE__*/React.createElement("p",{className:"ui-footer-compliance-text font-bold whitespace-nowrap"},"SOC 2 Type 2"),/*#__PURE__*/React.createElement("p",{className:"ui-footer-compliance-text font-medium mb-24"},"Certified"))),/*#__PURE__*/React.createElement("div",{className:"flex mr-24 md:col-start-2"},/*#__PURE__*/React.createElement(Icon,{name:"icon-gui-tick",color:"text-active-orange",size:"1.5rem",additionalCSS:"bg-white rounded-full mr-12 ui-footer-tick-icon"}),/*#__PURE__*/React.createElement("div",null,/*#__PURE__*/React.createElement("p",{className:"ui-footer-compliance-text font-bold whitespace-nowrap"},"HIPAA"),/*#__PURE__*/React.createElement("p",{className:"ui-footer-compliance-text font-medium mb-24"},"Compliant"))),/*#__PURE__*/React.createElement("div",{className:"flex mr-24 md:col-start-3"},/*#__PURE__*/React.createElement(Icon,{name:"icon-gui-tick",color:"text-active-orange",size:"1.5rem",additionalCSS:"bg-white rounded-full mr-12 ui-footer-tick-icon"}),/*#__PURE__*/React.createElement("div",null,/*#__PURE__*/React.createElement("p",{className:"ui-footer-compliance-text font-bold whitespace-nowrap"},"EU GDPR"),/*#__PURE__*/React.createElement("p",{className:"ui-footer-compliance-text font-medium mb-24"},"Certified"))),/*#__PURE__*/React.createElement("div",{className:"flex mr-24 md:col-start-4"},/*#__PURE__*/React.createElement(Icon,{name:"icon-gui-tick",color:"text-active-orange",size:"1.5rem",additionalCSS:"bg-white rounded-full mr-12 ui-footer-tick-icon"}),/*#__PURE__*/React.createElement("div",null,/*#__PURE__*/React.createElement("p",{className:"ui-footer-compliance-text font-bold whitespace-nowrap"},"256-bit AES"),/*#__PURE__*/React.createElement("p",{className:"ui-footer-compliance-text font-medium mb-24"},"Encryption"))))))};export default Footer;
|
|
1
|
+
import React from"react";import Icon from"./Icon";import _absUrl from"./url-base.js";import{StatusIcon}from"./Status";const Footer=({paths,urlBase,statusUrl})=>{const absUrl=path=>_absUrl(path,urlBase);return React.createElement("footer",{className:"bg-light-grey font-sans antialiased leading-normal","data-id":"footer"},React.createElement("div",{className:"max-w-screen-xl mx-auto py-32 sm:py-40 md:py-64 ui-grid-gap ui-grid-px grid grid-cols-6"},React.createElement("div",{className:"col-span-full md:col-span-2"},React.createElement("div",{className:"flex flex-row p-menu-row-snug"},React.createElement("img",{className:"mr-24 -mt-16",src:paths.ablyStack,alt:"Ably homepage"}),React.createElement("h2",{className:"ui-text-overline2 col-span-full"},"The Ably Platform")),React.createElement("div",{className:"md:col-span-4 md:w-3/4 xs:w-3/5 w-full"},React.createElement("p",{className:"ui-text-p3 font-bold py-16 p-menu-row-snug"},"Easily power any realtime experience in your application via a simple API that handles everything realtime.")),React.createElement("ul",{className:"grid grid-cols-1"},React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/pubsub"),className:"ui-footer-menu-row-link"},"Pub/sub messaging")),React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/push-notifications"),className:"ui-footer-menu-row-link"},"Push notifications")),React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/integrations"),className:"ui-footer-menu-row-link"},"Third-party integrations")),React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/protocols"),className:"ui-footer-menu-row-link"},"Multiple protocol messaging")))),React.createElement("div",{className:"col-span-full xs:col-span-3 md:col-span-1"},React.createElement("h2",{className:"ui-footer-col-title"},"Ably is for"),React.createElement("ul",null,React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/solutions/asset-tracking"),className:"ui-footer-menu-row-link"},"Ably Asset Tracking")),React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/solutions/extend-kafka-to-the-edge"),className:"ui-footer-menu-row-link"},"Extend Kafka to the edge")),React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/solutions/edtech"),className:"ui-footer-menu-row-link"},"EdTech")),React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/solutions/automotive-logistics-and-mobility"),className:"ui-footer-menu-row-link"},"Automotive, Logistics, & Mobility")),React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/solutions/b2b-platforms"),className:"ui-footer-menu-row-link"},"B2B Platforms")),React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/solutions/healthcare"),className:"ui-footer-menu-row-link"},"Healthcare")),React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/solutions/ecommerce-and-retail"),className:"ui-footer-menu-row-link"},"eCommerce & Retail")),React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/solutions/sports-and-media"),className:"ui-footer-menu-row-link"},"Sports & Media")),React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/solutions/gaming"),className:"ui-footer-menu-row-link"},"Gaming")),React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/solutions/iot-and-connected-devices"),className:"ui-footer-menu-row-link"},"IoT & Connected Devices")))),React.createElement("div",{className:"col-span-full xs:col-span-3 md:col-span-1"},React.createElement("h2",{className:"ui-footer-col-title"},"Developers"),React.createElement("ul",null,React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/docs/quick-start-guide"),className:"ui-footer-menu-row-link"},"Start in 5 minutes")),React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/docs/"),className:"ui-footer-menu-row-link"},"Documentation")),React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/tutorials"),className:"ui-footer-menu-row-link"},"Tutorials")),React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:"https://changelog.ably.com/",className:"ui-footer-menu-row-link"},"Changelog")),React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/support"),className:"ui-footer-menu-row-link"},"Support & FAQs")),React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/docs/sdks"),className:"ui-footer-menu-row-link"},"SDKs")),React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{className:"ui-footer-menu-row-link flex items-center gap-4",href:"https://status.ably.com/",target:"_blank",rel:"noreferrer"},"System status",React.createElement(StatusIcon,{statusUrl:statusUrl}))))),React.createElement("div",{className:"col-span-full xs:col-span-3 md:col-span-1"},React.createElement("h2",{className:"ui-footer-col-title"},"WHY ABLY"),React.createElement("ul",null,React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/customers"),className:"ui-footer-menu-row-link"},"Customers")),React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/case-studies"),className:"ui-footer-menu-row-link"},"Case Studies")),React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/four-pillars-of-dependability"),className:"ui-footer-menu-row-link"},"Four Pillars of Dependability")),React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/compare"),className:"ui-footer-menu-row-link"},"Compare our tech")),React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/protocols"),className:"ui-footer-menu-row-link"},"Multi protocol support")),React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/integrations"),className:"ui-footer-menu-row-link"},"Third-party integrations")))),React.createElement("div",{className:"col-span-full xs:col-span-3 md:col-span-1"},React.createElement("h2",{className:"ui-footer-col-title"},"ABOUT"),React.createElement("ul",null,React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/about"),className:"ui-footer-menu-row-link"},"About Ably")),React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/pricing"),className:"ui-footer-menu-row-link"},"Pricing")),React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/blog"),className:"ui-footer-menu-row-link"},"Blog")),React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/careers"),className:"ui-footer-menu-row-link"},"Careers")),React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/open-policy"),className:"ui-footer-menu-row-link"},"Open protocol policy")),React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/press-center"),className:"ui-footer-menu-row-link"},"Press & Media")),React.createElement("li",{className:"p-menu-row-snug"},React.createElement("a",{href:absUrl("/contact"),className:"ui-footer-menu-row-link"},"Contact us"))))),React.createElement("div",{className:"max-w-screen-xl ui-grid-px mx-auto"},React.createElement("hr",{className:"border-t border-mid-grey my-0"})),React.createElement("div",{className:"max-w-screen-xl mx-auto py-16 grid ui-grid-gap ui-grid-px sm:grid-cols-2"},React.createElement("div",{className:"md:flex md:items-center"},React.createElement("div",{className:"flex flex-col md:flex-row flex-auto ml-8 sm:col-span-1 md:col-span-2"},React.createElement("div",{className:""},React.createElement("div",{className:"flex pb-24"},React.createElement("a",{className:"h-24 pr-24 text-cool-black hover:text-icon-twitter",href:"https://twitter.com/ablyrealtime",title:"Ably on X"},React.createElement(Icon,{name:"icon-social-x",size:"1.5rem"})),React.createElement("a",{className:"h-24 pr-24 text-cool-black hover:text-icon-linkedin",href:"https://www.linkedin.com/company/ably-realtime",title:"Ably on LinkedIn"},React.createElement(Icon,{name:"icon-social-linkedin",size:"1.5rem"})),React.createElement("a",{className:"h-24 pr-24 text-cool-black hover:text-icon-github",href:"https://github.com/ably/",title:"Ably on Github"},React.createElement(Icon,{name:"icon-social-github",size:"1.5rem"})),React.createElement("a",{className:"h-24 pr-24 text-cool-black hover:text-icon-discord",href:"https://discord.gg/jwBPhEZ9g5",title:"Ably on Discord"},React.createElement(Icon,{name:"icon-social-discord",size:"1.5rem"})))),React.createElement("div",{className:"xs:hidden sm:block ui-footer-glassdoor"},React.createElement("div",{className:"flex sm:pt-24 md:pt-0 sm:border-t sm:border-l-0 md:border-t-0 md:border-l sm:border-mid-grey sm:w-3/4 md:w-full md:pl-24"},React.createElement("a",{href:"https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm",className:"h-24 text-cool-black hover:text-icon-glassdoor",title:"Ably reviews on glassdoor"},React.createElement(Icon,{name:"icon-social-glassdoor",size:"1.5rem"})),React.createElement("div",{className:"pl-16 text-menu3 font-sans font-medium"},React.createElement("strong",{className:"block font-medium"},"We're hiring!"),React.createElement("a",{href:"https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm",className:"ui-footer-link"},"Learn more at Glassdoor"))))),React.createElement("div",{className:"xs:block sm:hidden"},React.createElement("div",{className:"border-t border-mid-grey w-full"}),React.createElement("div",{className:"flex py-24"},React.createElement("a",{className:"h-24 pr-16 text-cool-black hover:text-icon-glassdoor",href:"https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm",title:"Ably reviews on glassdoor"},React.createElement(Icon,{name:"icon-social-glassdoor",size:"1.5rem"})),React.createElement("div",{className:"text-menu3 font-sans font-medium"},React.createElement("strong",{className:"block font-medium"},"We're hiring!"),React.createElement("a",{href:"https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm",className:"ui-footer-link"},"Learn more at Glassdoor"))))),React.createElement("div",{className:"col-span-full sm:col-span-1 inline-flex sm:ml-auto sm:items-center"},React.createElement("img",{className:"mr-24 h-80",src:paths.highestUserAdoption,alt:"Highest User Adoption 2023"}),React.createElement("img",{className:"mr-24 h-80",src:paths.bestSupport,alt:"Best Support 2023"}),React.createElement("img",{className:"mr-24 h-80",src:paths.fastestImplementation,alt:"Fastest Implementation 2023"}),React.createElement("img",{className:"mr-24 h-80",src:paths.highestPerformer,alt:"High Performer 2023"}))),React.createElement("div",{className:"max-w-screen-xl ui-grid-px mx-auto"},React.createElement("hr",{className:"border-t border-mid-grey my-0"})),React.createElement("div",{className:"max-w-screen-xl mx-auto py-24 sm:py-40 md:py-32 md:grid md:grid-cols-2 ui-grid-gap ui-grid-px"},React.createElement("div",{className:"flex ml-8 col-span-full sm:col-span-1 md:pb-16 items-center ui-footer-bottom-links"},React.createElement("div",{className:"flex"},React.createElement("a",{href:absUrl("/privacy"),className:"pr-24 ui-footer-link"},"Cookies"),React.createElement("a",{href:absUrl("/legals"),className:"pr-24 ui-footer-link"},"Legals"),React.createElement("a",{href:absUrl("/data-protection"),className:"pr-24 ui-footer-link"},"Data Protection"),React.createElement("a",{href:absUrl("/privacy"),className:"ui-footer-link"},"Privacy"))),React.createElement("div",{className:"xs:grid xs:grid-cols-2 sm:grid-cols-4 xs:pl-16 sm:pl-8 md:justify-items-end"},React.createElement("div",{className:"flex mr-24"},React.createElement(Icon,{name:"icon-gui-tick",color:"text-active-orange",size:"1.5rem",additionalCSS:"bg-white rounded-full mr-12 ui-footer-tick-icon"}),React.createElement("div",null,React.createElement("p",{className:"ui-footer-compliance-text font-bold whitespace-nowrap"},"SOC 2 Type 2"),React.createElement("p",{className:"ui-footer-compliance-text font-medium mb-24"},"Certified"))),React.createElement("div",{className:"flex mr-24 md:col-start-2"},React.createElement(Icon,{name:"icon-gui-tick",color:"text-active-orange",size:"1.5rem",additionalCSS:"bg-white rounded-full mr-12 ui-footer-tick-icon"}),React.createElement("div",null,React.createElement("p",{className:"ui-footer-compliance-text font-bold whitespace-nowrap"},"HIPAA"),React.createElement("p",{className:"ui-footer-compliance-text font-medium mb-24"},"Compliant"))),React.createElement("div",{className:"flex mr-24 md:col-start-3"},React.createElement(Icon,{name:"icon-gui-tick",color:"text-active-orange",size:"1.5rem",additionalCSS:"bg-white rounded-full mr-12 ui-footer-tick-icon"}),React.createElement("div",null,React.createElement("p",{className:"ui-footer-compliance-text font-bold whitespace-nowrap"},"EU GDPR"),React.createElement("p",{className:"ui-footer-compliance-text font-medium mb-24"},"Certified"))),React.createElement("div",{className:"flex mr-24 md:col-start-4"},React.createElement(Icon,{name:"icon-gui-tick",color:"text-active-orange",size:"1.5rem",additionalCSS:"bg-white rounded-full mr-12 ui-footer-tick-icon"}),React.createElement("div",null,React.createElement("p",{className:"ui-footer-compliance-text font-bold whitespace-nowrap"},"256-bit AES"),React.createElement("p",{className:"ui-footer-compliance-text font-medium mb-24"},"Encryption"))))))};export default Footer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import React from"react";import Icon from"../Icon";const ICON_SIZE_REDUCTION=12;const ICON_HEIGHT_REDUCTION=2;const EncapsulatedIcon=({size="40px",iconSize,className,innerClassName,...iconProps})=>{let computedIconSize=size,computedIconHeight=size;if(iconSize){computedIconSize=iconSize}else if(size.toString().endsWith("px")){const numericalSize=parseInt(size,10);computedIconSize=`${numericalSize-ICON_SIZE_REDUCTION}px`;computedIconHeight=`${numericalSize-ICON_HEIGHT_REDUCTION}px`}else{console.warn(`EncapsulatedIcon: Non-pixel units might not behave as expected`)}return
|
|
1
|
+
import React from"react";import Icon from"../Icon";const ICON_SIZE_REDUCTION=12;const ICON_HEIGHT_REDUCTION=2;const EncapsulatedIcon=({size="40px",iconSize,className,innerClassName,...iconProps})=>{let computedIconSize=size,computedIconHeight=size;if(iconSize){computedIconSize=iconSize}else if(size.toString().endsWith("px")){const numericalSize=parseInt(size,10);computedIconSize=`${numericalSize-ICON_SIZE_REDUCTION}px`;computedIconHeight=`${numericalSize-ICON_HEIGHT_REDUCTION}px`}else{console.warn(`EncapsulatedIcon: Non-pixel units might not behave as expected`)}return React.createElement("div",{className:`p-1 rounded-lg bg-gradient-to-t dark:bg-gradient-to-b ${className??"from-neutral-400 dark:from-neutral-900"}`,style:{width:size,height:size}},React.createElement("div",{className:`flex items-center justify-center rounded-lg ${innerClassName??"bg-neutral-200 dark:bg-neutral-1100"}`,style:{height:computedIconHeight}},React.createElement(Icon,{size:computedIconSize,...iconProps})))};export default EncapsulatedIcon;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const computedIcons={"display":["icon-display-48hrs","icon-display-ably-channels","icon-display-about-ably-col","icon-display-api-keys","icon-display-api","icon-display-architectural-guidance","icon-display-asset-tracking-col","icon-display-authentication","icon-display-avatar-stack","icon-display-browser","icon-display-calendar","icon-display-call-mobile","icon-display-careers-col","icon-display-case-studies-col","icon-display-chat-col","icon-display-chat-mono","icon-display-chat-stack-col","icon-display-chat-stack","icon-display-cloud-servers","icon-display-compare-tech-col","icon-display-connection-state-recovery","icon-display-consumer-groups","icon-display-custom-cname","icon-display-custom","icon-display-customers-col","icon-display-data-broadcast-col","icon-display-data-broadcast-mono","icon-display-data-synchronization-col","icon-display-dedicated-cluster","icon-display-deltas","icon-display-docs-col","icon-display-documentation","icon-display-dynamic-channel-groups","icon-display-edge-network","icon-display-elasticity","icon-display-equalisers-mono","icon-display-events-col","icon-display-exactly-once-delivery","icon-display-examples-col","icon-display-fan-out","icon-display-firehose","icon-display-gdpr","icon-display-general-comms","icon-display-granular-permissions","icon-display-hipaa-mono","icon-display-hipaa","icon-display-history","icon-display-integrations-col","icon-display-integrations","icon-display-it-support-access","icon-display-it-support-helpdesk","icon-display-kafka-at-the-edge-col","icon-display-laptop","icon-display-lightbulb-col","icon-display-live-chat","icon-display-live-updates-results-metrics-col","icon-display-map-pin","icon-display-message-batching","icon-display-message-persistence","icon-display-message-queues","icon-display-message","icon-display-multi-user-spaces-col","icon-display-observe-analytics","icon-display-padlock-closed","icon-display-platform","icon-display-play","icon-display-premium-support","icon-display-privacy-shield-framework","icon-display-private-link","icon-display-push-notifications-col","icon-display-push-notifications-mono","icon-display-push-notifications","icon-display-quickstart-guides-col","icon-display-resources-col","icon-display-rewind","icon-display-sdks-col","icon-display-send-received-messages","icon-display-servers","icon-display-shopping-cart","icon-display-sla","icon-display-soc2-type2-mono","icon-display-soc2-type2","icon-display-subscription-filters","icon-display-support-chat-mono","icon-display-system-metadata","icon-display-tech-account-comms","icon-display-tutorials-demos-col","icon-display-virtual-events-col","icon-display-virtual-events"],"gui":["icon-gui-ably-badge","icon-gui-account","icon-gui-app","icon-gui-arrow-bidirectional-horizontal","icon-gui-arrow-bidirectional-vertical","icon-gui-arrow-down-circled","icon-gui-arrow-down","icon-gui-arrow-left","icon-gui-arrow-right","icon-gui-arrow-up","icon-gui-burger-menu","icon-gui-check-circled-fill-black","icon-gui-check-circled-fill","icon-gui-check-circled","icon-gui-check-lotus-circled","icon-gui-checklist-checked","icon-gui-chevron-down","icon-gui-chevron-up","icon-gui-clock","icon-gui-close","icon-gui-copy","icon-gui-cross-circled-fill","icon-gui-cross-circled","icon-gui-dash-circled","icon-gui-disclosure-arrow","icon-gui-document-generic","icon-gui-enlarge","icon-gui-external-link-bolder","icon-gui-external-link","icon-gui-filter-flow-step-1","icon-gui-filter-flow-step-2","icon-gui-filter-flow-step-3","icon-gui-hand","icon-gui-history","icon-gui-info","icon-gui-link-arrow","icon-gui-link","icon-gui-live-chat","icon-gui-minus","icon-gui-organization","icon-gui-partial","icon-gui-plus","icon-gui-quote-marks-solid","icon-gui-refresh","icon-gui-resources","icon-gui-search","icon-gui-tick","icon-gui-warning-fill","icon-gui-warning"],"other":["icon-other-quote"],"product":["icon-product-asset-tracking-mono","icon-product-asset-tracking","icon-product-chat-mono","icon-product-chat","icon-product-liveobjects","icon-product-livesync-mono","icon-product-livesync","icon-product-platform-mono","icon-product-platform","icon-product-pubsub-mono","icon-product-pubsub","icon-product-spaces-mono","icon-product-spaces"],"social":["icon-social-discord","icon-social-facebook","icon-social-github","icon-social-glassdoor","icon-social-google","icon-social-linkedin","icon-social-stackoverflow","icon-social-twitter","icon-social-x","icon-social-youtube"],"tech":["icon-tech-ably-api-streamer","icon-tech-ably-firehose","icon-tech-ably-native","icon-tech-ably","icon-tech-activemq","icon-tech-activitypub","icon-tech-aerospike","icon-tech-akka","icon-tech-amazon-ec2","icon-tech-amazon-event-bridge","icon-tech-amqp091","icon-tech-amqp10","icon-tech-android-full","icon-tech-android-head","icon-tech-angular","icon-tech-anycable","icon-tech-apache-cassandra","icon-tech-apache-cordova","icon-tech-apache-kafka","icon-tech-apache-spark","icon-tech-apachepulsar","icon-tech-apachestorm","icon-tech-apns","icon-tech-assemblyai","icon-tech-atmosphere","icon-tech-aws-app-sync","icon-tech-aws-aurora","icon-tech-aws-gateway-websockets","icon-tech-aws-sns","icon-tech-aws-sqs","icon-tech-aws","icon-tech-awsiot","icon-tech-awskinesis","icon-tech-awslambda","icon-tech-awssqs","icon-tech-azure-api","icon-tech-azure-archive-api","icon-tech-azure-bus","icon-tech-azure-cosmos","icon-tech-azure-event-hub","icon-tech-azure-functions","icon-tech-azure-search","icon-tech-azure-static-web-app","icon-tech-azure-static-web-apps","icon-tech-azure-storage","icon-tech-azure-web-pubsub","icon-tech-azurefunctions","icon-tech-azureservicebus","icon-tech-azuresignalR","icon-tech-bayeux","icon-tech-c++","icon-tech-centrifugo","icon-tech-client-side-frameworks","icon-tech-clojure","icon-tech-cloudflare-durable-objects","icon-tech-cloudflareworkers","icon-tech-cocoa","icon-tech-confluent","icon-tech-cord","icon-tech-csharp","icon-tech-curl","icon-tech-customwebhooks","icon-tech-datadog","icon-tech-design-patterns","icon-tech-devplatforms","icon-tech-diffusion-data","icon-tech-django","icon-tech-engineio","icon-tech-event-driven-servers","icon-tech-fanout-io","icon-tech-fast-api","icon-tech-fauna","icon-tech-featherjs","icon-tech-firebase-cloud-messaging","icon-tech-firebase","icon-tech-flutter","icon-tech-gcloudbigquery","icon-tech-gclouddataflow","icon-tech-gcloudfunctions","icon-tech-gcloudpubsub","icon-tech-go","icon-tech-grpc","icon-tech-hivemq","icon-tech-http2","icon-tech-http3","icon-tech-httprest","icon-tech-idempotency","icon-tech-ifttt","icon-tech-integrations","icon-tech-ios-generic","icon-tech-ios","icon-tech-ipados","icon-tech-ipfs","icon-tech-ironmq","icon-tech-java","icon-tech-javascript","icon-tech-jms","icon-tech-json-web-tokens","icon-tech-kaazing","icon-tech-kotlin","icon-tech-ksql-db","icon-tech-kubernetes","icon-tech-laravel-broadcast","icon-tech-laravel-echo","icon-tech-lightstreamer","icon-tech-liveblocks","icon-tech-longpolling","icon-tech-macos","icon-tech-matrix","icon-tech-meteor","icon-tech-mongo-db","icon-tech-mono","icon-tech-mqtt","icon-tech-mysql","icon-tech-native-script","icon-tech-net","icon-tech-netlify","icon-tech-nextjs","icon-tech-nkn","icon-tech-nodejs","icon-tech-objectivec","icon-tech-parse-server","icon-tech-php","icon-tech-planetscale","icon-tech-postgres","icon-tech-prisma","icon-tech-programminglanguages","icon-tech-protcol-adaptors","icon-tech-protocols","icon-tech-pub-sub","icon-tech-pubnub","icon-tech-push-technology","icon-tech-pusher","icon-tech-python","icon-tech-quic","icon-tech-rabbitMQ","icon-tech-railsactioncable","icon-tech-react-app","icon-tech-react","icon-tech-reactnative","icon-tech-redis","icon-tech-redpanda","icon-tech-replicache","icon-tech-rethinkdb","icon-tech-rocketmq","icon-tech-ruby","icon-tech-scala","icon-tech-scaledrone","icon-tech-serversentevents","icon-tech-serversideframeworks","icon-tech-signalR","icon-tech-snowflake","icon-tech-socketio","icon-tech-sockjs","icon-tech-solace","icon-tech-spring","icon-tech-stomp","icon-tech-streamdata-io","icon-tech-streamr","icon-tech-swift","icon-tech-symfony-mercure","icon-tech-symfony","icon-tech-tcp-ip","icon-tech-tenefit","icon-tech-terraform","icon-tech-tvos","icon-tech-twilio","icon-tech-typescript","icon-tech-udp-protocol","icon-tech-unity","icon-tech-vercel","icon-tech-vscode","icon-tech-vuejs","icon-tech-wamp","icon-tech-watchos","icon-tech-web-push","icon-tech-web","icon-tech-webhooks","icon-tech-webrtc","icon-tech-websockets","icon-tech-websub","icon-tech-xamarin","icon-tech-xhr-streaming","icon-tech-xmpp","icon-tech-zapier","icon-tech-zeromq"]};
|
|
1
|
+
export const computedIcons={"display":["icon-display-48hrs","icon-display-ably-channels","icon-display-about-ably-col","icon-display-api-keys","icon-display-api","icon-display-architectural-guidance","icon-display-asset-tracking-col","icon-display-authentication","icon-display-avatar-stack","icon-display-browser","icon-display-calendar","icon-display-call-mobile","icon-display-careers-col","icon-display-case-studies-col","icon-display-chat-col","icon-display-chat-mono","icon-display-chat-stack-col","icon-display-chat-stack","icon-display-cloud-servers","icon-display-compare-tech-col","icon-display-connection-state-recovery","icon-display-consumer-groups","icon-display-custom-cname","icon-display-custom","icon-display-customers-col","icon-display-data-broadcast-col","icon-display-data-broadcast-mono","icon-display-data-synchronization-col","icon-display-dedicated-cluster","icon-display-deltas","icon-display-docs-col","icon-display-documentation","icon-display-dynamic-channel-groups","icon-display-edge-network","icon-display-elasticity","icon-display-equalisers-mono","icon-display-events-col","icon-display-exactly-once-delivery","icon-display-examples-col","icon-display-fan-out","icon-display-firehose","icon-display-gdpr","icon-display-general-comms","icon-display-granular-permissions","icon-display-hipaa-mono","icon-display-hipaa","icon-display-history","icon-display-integrations-col","icon-display-integrations","icon-display-it-support-access","icon-display-it-support-helpdesk","icon-display-kafka-at-the-edge-col","icon-display-laptop","icon-display-lightbulb-col","icon-display-live-chat","icon-display-live-updates-results-metrics-col","icon-display-map-pin","icon-display-message-batching","icon-display-message-persistence","icon-display-message-queues","icon-display-message","icon-display-multi-user-spaces-col","icon-display-observe-analytics","icon-display-padlock-closed","icon-display-platform","icon-display-play","icon-display-premium-support","icon-display-privacy-shield-framework","icon-display-private-link","icon-display-push-notifications-col","icon-display-push-notifications-mono","icon-display-push-notifications","icon-display-quickstart-guides-col","icon-display-resources-col","icon-display-rewind","icon-display-sdks-col","icon-display-send-received-messages","icon-display-servers","icon-display-shopping-cart","icon-display-sla","icon-display-soc2-type2-mono","icon-display-soc2-type2","icon-display-subscription-filters","icon-display-support-chat-mono","icon-display-system-metadata","icon-display-tech-account-comms","icon-display-tutorials-demos-col","icon-display-virtual-events-col","icon-display-virtual-events"],"gui":["icon-gui-ably-badge","icon-gui-account","icon-gui-app","icon-gui-arrow-bidirectional-horizontal","icon-gui-arrow-bidirectional-vertical","icon-gui-arrow-down-circled","icon-gui-arrow-down","icon-gui-arrow-left","icon-gui-arrow-right","icon-gui-arrow-up","icon-gui-burger-menu","icon-gui-check-circled-fill-black","icon-gui-check-circled-fill","icon-gui-check-circled","icon-gui-check-lotus-circled","icon-gui-checklist-checked","icon-gui-chevron-down","icon-gui-chevron-up","icon-gui-clock","icon-gui-close","icon-gui-copy","icon-gui-cross-circled-fill","icon-gui-cross-circled","icon-gui-currency-dollar","icon-gui-dash-circled","icon-gui-disclosure-arrow","icon-gui-document-generic","icon-gui-enlarge","icon-gui-external-link-bolder","icon-gui-external-link","icon-gui-filter-flow-step-1","icon-gui-filter-flow-step-2","icon-gui-filter-flow-step-3","icon-gui-hand","icon-gui-history","icon-gui-info","icon-gui-link-arrow","icon-gui-link","icon-gui-live-chat","icon-gui-minus","icon-gui-organization","icon-gui-partial","icon-gui-plus","icon-gui-quote-marks-solid","icon-gui-refresh","icon-gui-resources","icon-gui-search","icon-gui-tick","icon-gui-user-circle","icon-gui-warning-fill","icon-gui-warning"],"other":["icon-other-quote"],"product":["icon-product-asset-tracking-mono","icon-product-asset-tracking","icon-product-chat-mono","icon-product-chat","icon-product-liveobjects","icon-product-livesync-mono","icon-product-livesync","icon-product-platform-mono","icon-product-platform","icon-product-pubsub-mono","icon-product-pubsub","icon-product-spaces-mono","icon-product-spaces"],"social":["icon-social-discord","icon-social-facebook","icon-social-github","icon-social-glassdoor","icon-social-google","icon-social-linkedin","icon-social-stackoverflow","icon-social-twitter","icon-social-x","icon-social-youtube"],"tech":["icon-tech-ably-api-streamer","icon-tech-ably-firehose","icon-tech-ably-native","icon-tech-ably","icon-tech-activemq","icon-tech-activitypub","icon-tech-aerospike","icon-tech-akka","icon-tech-amazon-ec2","icon-tech-amazon-event-bridge","icon-tech-amqp091","icon-tech-amqp10","icon-tech-android-full","icon-tech-android-head","icon-tech-angular","icon-tech-anycable","icon-tech-apache-cassandra","icon-tech-apache-cordova","icon-tech-apache-kafka","icon-tech-apache-spark","icon-tech-apachepulsar","icon-tech-apachestorm","icon-tech-apns","icon-tech-assemblyai","icon-tech-atmosphere","icon-tech-aws-app-sync","icon-tech-aws-aurora","icon-tech-aws-gateway-websockets","icon-tech-aws-sns","icon-tech-aws-sqs","icon-tech-aws","icon-tech-awsiot","icon-tech-awskinesis","icon-tech-awslambda","icon-tech-awssqs","icon-tech-azure-api","icon-tech-azure-archive-api","icon-tech-azure-bus","icon-tech-azure-cosmos","icon-tech-azure-event-hub","icon-tech-azure-functions","icon-tech-azure-search","icon-tech-azure-static-web-app","icon-tech-azure-static-web-apps","icon-tech-azure-storage","icon-tech-azure-web-pubsub","icon-tech-azurefunctions","icon-tech-azureservicebus","icon-tech-azuresignalR","icon-tech-bayeux","icon-tech-c++","icon-tech-centrifugo","icon-tech-client-side-frameworks","icon-tech-clojure","icon-tech-cloudflare-durable-objects","icon-tech-cloudflareworkers","icon-tech-cocoa","icon-tech-confluent","icon-tech-cord","icon-tech-csharp","icon-tech-curl","icon-tech-customwebhooks","icon-tech-datadog","icon-tech-design-patterns","icon-tech-devplatforms","icon-tech-diffusion-data","icon-tech-django","icon-tech-engineio","icon-tech-event-driven-servers","icon-tech-fanout-io","icon-tech-fast-api","icon-tech-fauna","icon-tech-featherjs","icon-tech-firebase-cloud-messaging","icon-tech-firebase","icon-tech-flutter","icon-tech-gcloudbigquery","icon-tech-gclouddataflow","icon-tech-gcloudfunctions","icon-tech-gcloudpubsub","icon-tech-go","icon-tech-grpc","icon-tech-hivemq","icon-tech-http2","icon-tech-http3","icon-tech-httprest","icon-tech-idempotency","icon-tech-ifttt","icon-tech-integrations","icon-tech-ios-generic","icon-tech-ios","icon-tech-ipados","icon-tech-ipfs","icon-tech-ironmq","icon-tech-java","icon-tech-javascript","icon-tech-jms","icon-tech-json-web-tokens","icon-tech-kaazing","icon-tech-kotlin","icon-tech-ksql-db","icon-tech-kubernetes","icon-tech-laravel-broadcast","icon-tech-laravel-echo","icon-tech-lightstreamer","icon-tech-liveblocks","icon-tech-longpolling","icon-tech-macos","icon-tech-matrix","icon-tech-meteor","icon-tech-mongo-db","icon-tech-mono","icon-tech-mqtt","icon-tech-mysql","icon-tech-native-script","icon-tech-net","icon-tech-netlify","icon-tech-nextjs","icon-tech-nkn","icon-tech-nodejs","icon-tech-objectivec","icon-tech-parse-server","icon-tech-php","icon-tech-planetscale","icon-tech-postgres","icon-tech-prisma","icon-tech-programminglanguages","icon-tech-protcol-adaptors","icon-tech-protocols","icon-tech-pub-sub","icon-tech-pubnub","icon-tech-push-technology","icon-tech-pusher","icon-tech-python","icon-tech-quic","icon-tech-rabbitMQ","icon-tech-railsactioncable","icon-tech-react-app","icon-tech-react","icon-tech-reactnative","icon-tech-redis","icon-tech-redpanda","icon-tech-replicache","icon-tech-rethinkdb","icon-tech-rocketmq","icon-tech-ruby","icon-tech-scala","icon-tech-scaledrone","icon-tech-serversentevents","icon-tech-serversideframeworks","icon-tech-signalR","icon-tech-snowflake","icon-tech-socketio","icon-tech-sockjs","icon-tech-solace","icon-tech-spring","icon-tech-stomp","icon-tech-streamdata-io","icon-tech-streamr","icon-tech-swift","icon-tech-symfony-mercure","icon-tech-symfony","icon-tech-tcp-ip","icon-tech-tenefit","icon-tech-terraform","icon-tech-tvos","icon-tech-twilio","icon-tech-typescript","icon-tech-udp-protocol","icon-tech-unity","icon-tech-vercel","icon-tech-vscode","icon-tech-vuejs","icon-tech-wamp","icon-tech-watchos","icon-tech-web-push","icon-tech-web","icon-tech-webhooks","icon-tech-webrtc","icon-tech-websockets","icon-tech-websub","icon-tech-xamarin","icon-tech-xhr-streaming","icon-tech-xmpp","icon-tech-zapier","icon-tech-zeromq"]};
|
package/core/Icon.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import React,{useCallback}from"react";import{defaultIconSecondaryColor}from"./Icon/secondary-colors";import{convertTailwindClassToVar}from"./styles/colors/utils";import cn from"./utils/cn";const Icon=({name,size="0.75rem",color,secondaryColor,additionalCSS="",...additionalAttributes})=>{const[lightSecondaryColor,darkSecondaryColor]=(secondaryColor??"").split(" dark:");const iconSvg=useCallback((secondaryColor,isDark,isThemed)=>{let secondaryColorValue;if(secondaryColor){secondaryColorValue=convertTailwindClassToVar(secondaryColor)}else if(defaultIconSecondaryColor(name)){secondaryColorValue=convertTailwindClassToVar(defaultIconSecondaryColor(name))}return
|
|
1
|
+
import React,{useCallback}from"react";import{defaultIconSecondaryColor}from"./Icon/secondary-colors";import{convertTailwindClassToVar}from"./styles/colors/utils";import cn from"./utils/cn";const Icon=({name,size="0.75rem",color,secondaryColor,additionalCSS="",...additionalAttributes})=>{const[lightSecondaryColor,darkSecondaryColor]=(secondaryColor??"").split(" dark:");const iconSvg=useCallback((secondaryColor,isDark,isThemed)=>{let secondaryColorValue;if(secondaryColor){secondaryColorValue=convertTailwindClassToVar(secondaryColor)}else if(defaultIconSecondaryColor(name)){secondaryColorValue=convertTailwindClassToVar(defaultIconSecondaryColor(name))}return React.createElement("svg",{className:cn({[`${color}`]:color},{[`${additionalCSS}`]:additionalCSS},{"hidden dark:block":secondaryColor&&!isDark&&isThemed},{"dark:hidden":secondaryColor&&isDark&&isThemed}),style:{width:size,height:size,...secondaryColorValue&&{"--ui-icon-secondary-color":secondaryColorValue}},...additionalAttributes},React.createElement("use",{xlinkHref:`#sprite-${name}`}))},[name,size,color,additionalCSS,additionalAttributes,lightSecondaryColor,darkSecondaryColor]);if(lightSecondaryColor&&darkSecondaryColor){return React.createElement(React.Fragment,null,iconSvg(lightSecondaryColor,false,!!darkSecondaryColor),iconSvg(darkSecondaryColor,true,true))}else if(lightSecondaryColor){return iconSvg(lightSecondaryColor,false,!!darkSecondaryColor)}else{return iconSvg()}};export default Icon;
|
package/core/LinkButton.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import React from"react";import{commonButtonInterior,commonButtonProps}from"./Button";import cn from"./utils/cn";const LinkButton=({variant="primary",size,leftIcon,rightIcon,children,className,disabled,onClick,iconColor,...rest})=>{const handleClick=e=>{if(disabled){e.preventDefault();return}onClick?.(e)};return
|
|
1
|
+
import React from"react";import{commonButtonInterior,commonButtonProps}from"./Button";import cn from"./utils/cn";const LinkButton=({variant="primary",size,leftIcon,rightIcon,children,className,disabled,onClick,iconColor,...rest})=>{const handleClick=e=>{if(disabled){e.preventDefault();return}onClick?.(e)};return React.createElement("a",{...commonButtonProps({variant,size,leftIcon,rightIcon,className:cn(className,{"ui-button-disabled dark:ui-button-disabled-dark":disabled})}),role:"button","aria-disabled":disabled,onClick:handleClick,...rest},commonButtonInterior({leftIcon,rightIcon,iconColor,children}))};export default LinkButton;
|
package/core/Loader.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from"react";const Loader=({ringColor="text-dark-grey",size="1.5rem",additionalCSS=""})
|
|
1
|
+
import React from"react";const Loader=({ringColor="text-dark-grey",size="1.5rem",additionalCSS=""})=>React.createElement("svg",{className:`${ringColor} ${additionalCSS}`,style:{width:size,height:size},height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg"},React.createElement("style",{dangerouslySetInnerHTML:{__html:`
|
|
2
2
|
@keyframes chunk-animation {
|
|
3
3
|
to {
|
|
4
4
|
transform: rotate(360deg);
|
|
@@ -10,4 +10,4 @@ import React from"react";const Loader=({ringColor="text-dark-grey",size="1.5rem"
|
|
|
10
10
|
transform-origin: center;
|
|
11
11
|
animation: chunk-animation 0.6s cubic-bezier(.44,.15,.66,.98) forwards infinite;
|
|
12
12
|
}
|
|
13
|
-
`}})
|
|
13
|
+
`}}),React.createElement("path",{fill:"currentColor",d:"m12 1.99976c-1.9778 0-3.91121.58649-5.5557 1.6853s-2.92621 2.6606-3.68309 4.48786c-.75688 1.82728-.95491 3.83788-.56906 5.77778.38585 1.9398 1.33826 3.7216 2.73679 5.1201 1.39852 1.3985 3.18035 2.351 5.12016 2.7368 1.9398.3859 3.9505.1878 5.7777-.569 1.8273-.7569 3.3891-2.0387 4.4879-3.6831 1.0988-1.6445 1.6853-3.5779 1.6853-5.5557 0-1.3133-.2587-2.61362-.7612-3.82688-.5025-1.21325-1.2391-2.31565-2.1677-3.24423-.9286-.92859-2.031-1.66518-3.2443-2.16773-1.2132-.50255-2.5136-.7612-3.8268-.7612zm0 18.00004c-1.5822 0-3.12896-.4692-4.44456-1.3483-1.31559-.879-2.34097-2.1285-2.94647-3.5903s-.76393-3.0703-.45525-4.6222c.30868-1.55181 1.07061-2.97728 2.18943-4.0961s2.54428-1.88074 4.09615-2.18943c1.5518-.30868 3.1604-.15025 4.6222.45525s2.7112 1.63088 3.5903 2.94647c.879 1.3156 1.3482 2.86231 1.3482 4.44461 0 2.1217-.8428 4.1565-2.3431 5.6568s-3.5352 2.3432-5.6569 2.3432z",opacity:".5"}),React.createElement("path",{className:"chunk",d:"m20 11.9998h2c0-1.3133-.2587-2.61362-.7612-3.82688-.5026-1.21325-1.2391-2.31565-2.1677-3.24423-.9286-.92859-2.031-1.66518-3.2443-2.16773-1.2132-.50255-2.5136-.7612-3.8268-.7612v2c2.1217 0 4.1566.84285 5.6569 2.34314 1.5002 1.50029 2.3431 3.53512 2.3431 5.6569z",fill:"#ff5416"}));export default Loader;
|
package/core/Logo.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import React from"react";const Logo=({dataId,logoUrl,href="/",additionalImgAttrs,additionalLinkAttrs})
|
|
1
|
+
import React from"react";const Logo=({dataId,logoUrl,href="/",additionalImgAttrs,additionalLinkAttrs})=>React.createElement("a",{href:href,"data-id":dataId,className:"block",style:{height:"2.125rem"},...additionalLinkAttrs},React.createElement("img",{src:logoUrl,width:"108px",alt:"Ably logo",...additionalImgAttrs}));export default React.memo(Logo);
|
package/core/Meganav.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import React,{useEffect,useState}from"react";import{connectState}from"./remote-data-store.js";import{selectSessionData}from"./remote-session-data.js";import Logo from"./Logo";import MeganavData from"./Meganav/component.json";import MeganavScripts from"./Meganav/component.js";import MeganavItemsDesktop from"./MeganavItemsDesktop";import MeganavItemsSignedIn from"./MeganavItemsSignedIn";import MeganavItemsMobile from"./MeganavItemsMobile";import Notice from"./Notice";import _absUrl from"./url-base.js";import MeganavContentProducts from"./MeganavContentProducts";import MeganavContentUseCases from"./MeganavContentUseCases";import MeganavContentCompany from"./MeganavContentCompany";import MeganavContentDevelopers from"./MeganavContentDevelopers";import MeganavSearch from"./MeganavSearch";const SignIn=({sessionState,theme,loginLink,absUrl,searchDataId})=>{return sessionState.signedIn
|
|
1
|
+
import React,{useEffect,useState}from"react";import{connectState}from"./remote-data-store.js";import{selectSessionData}from"./remote-session-data.js";import Logo from"./Logo";import MeganavData from"./Meganav/component.json";import MeganavScripts from"./Meganav/component.js";import MeganavItemsDesktop from"./MeganavItemsDesktop";import MeganavItemsSignedIn from"./MeganavItemsSignedIn";import MeganavItemsMobile from"./MeganavItemsMobile";import Notice from"./Notice";import _absUrl from"./url-base.js";import MeganavContentProducts from"./MeganavContentProducts";import MeganavContentUseCases from"./MeganavContentUseCases";import MeganavContentCompany from"./MeganavContentCompany";import MeganavContentDevelopers from"./MeganavContentDevelopers";import MeganavSearch from"./MeganavSearch";const SignIn=({sessionState,theme,loginLink,absUrl,searchDataId})=>{return sessionState.signedIn?React.createElement(MeganavItemsSignedIn,{absUrl:absUrl,sessionState:sessionState,theme:theme,searchDataId:searchDataId}):React.createElement("ul",{className:"hidden md:flex items-center"},React.createElement("li",{className:"ui-meganav-item"},React.createElement("a",{href:absUrl("/contact"),className:`ui-meganav-link ${theme.textColor}`,"data-id":"meganav-link"},"Contact us")),React.createElement("li",{className:"ui-meganav-item"},React.createElement("a",{href:absUrl(loginLink),className:`ui-meganav-link mr-0 ${theme.textColor}`,"data-id":"meganav-link"},"Login")),React.createElement("li",{className:"ui-meganav-item"},React.createElement(MeganavSearch,{absUrl:absUrl,dataId:searchDataId})),React.createElement("li",{className:"ui-meganav-item"},React.createElement("a",{href:absUrl("/sign-up"),"data-id":"meganav-sign-up-btn",className:`ui-btn p-btn-small ${theme.buttonBackgroundColor} ${theme.buttonTextColor}`},"Sign up free")))};const SignInPlaceholder=()=>React.createElement("div",null);const panels={MeganavContentProducts,MeganavContentUseCases,MeganavContentCompany,MeganavContentDevelopers};const Meganav=({paths,themeName="white",notice,loginLink="/login",urlBase,addSearchApiKey,statusUrl,searchDataId})=>{const[sessionState,setSessionState]=useState();useEffect(()=>{connectState(selectSessionData,setSessionState)},[]);useEffect(()=>{const teardown=MeganavScripts({themeName,addSearchApiKey});return()=>teardown()},[sessionState]);const theme=MeganavData.themes[themeName];const absUrl=path=>_absUrl(path,urlBase);return React.createElement("nav",{className:`ui-meganav-wrapper ${theme.backgroundColor} ${theme.barShadow}`,"data-id":"meganav","aria-label":"Main"},notice&&React.createElement(Notice,{...notice.props,config:notice.config}),React.createElement("div",{className:"ui-meganav ui-grid-px"},React.createElement("div",{className:"mr-24"},React.createElement(Logo,{dataId:"meganav-logo",href:urlBase,logoUrl:paths?.logo??""})),React.createElement(MeganavItemsDesktop,{panels:panels,paths:paths,theme:theme,absUrl:absUrl,statusUrl:statusUrl}),sessionState?React.createElement(SignIn,{sessionState:sessionState,theme:theme,loginLink:loginLink,absUrl:absUrl,searchDataId:searchDataId}):React.createElement(SignInPlaceholder,null),React.createElement(MeganavItemsMobile,{panels:panels,sessionState:sessionState,paths:paths,theme:theme,loginLink:loginLink,absUrl:absUrl,statusUrl:statusUrl,searchDataId:searchDataId})))};export default Meganav;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import React from"react";import FeaturedLink from"./FeaturedLink";const MeganavBlogPostsList=({recentBlogPosts,absUrl})=>recentBlogPosts
|
|
1
|
+
import React from"react";import FeaturedLink from"./FeaturedLink";const MeganavBlogPostsList=({recentBlogPosts,absUrl})=>recentBlogPosts?React.createElement("div",{className:"col-span-full md:col-span-4 pt-8 pb-24 md:py-24 lg:py-32 px-24 sm:px-32 md:px-0"},React.createElement("h3",{className:"ui-meganav-overline",id:"meganav-company-panel-list-blog"},"Blog"),React.createElement("ul",{className:"mb-8","aria-labelledby":"meganav-company-panel-list-blog"},recentBlogPosts.map(post=>React.createElement("li",{key:post.link},React.createElement("a",{href:post.link,className:"ui-meganav-media group"},React.createElement("p",{className:"ui-meganav-media-heading"},post.title),React.createElement("p",{className:"ui-meganav-media-copy"},post.pubDate))))),React.createElement(FeaturedLink,{url:absUrl("/blog"),textSize:"text-p3"},"More from our Blog")):null;export default MeganavBlogPostsList;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import React from"react";import MeganavBlogPostsList from"./MeganavBlogPostsList";import ConnectStateWrapper from"./ConnectStateWrapper";import{selectRecentBlogPosts}from"./remote-blogs-posts.js";import Icon from"./Icon";const MeganavContentCompany=({paths,absUrl})=>{const BlogPostsList=ConnectStateWrapper(MeganavBlogPostsList,{recentBlogPosts:selectRecentBlogPosts});return
|
|
1
|
+
import React from"react";import MeganavBlogPostsList from"./MeganavBlogPostsList";import ConnectStateWrapper from"./ConnectStateWrapper";import{selectRecentBlogPosts}from"./remote-blogs-posts.js";import Icon from"./Icon";const MeganavContentCompany=({paths,absUrl})=>{const BlogPostsList=ConnectStateWrapper(MeganavBlogPostsList,{recentBlogPosts:selectRecentBlogPosts});return React.createElement("div",{className:"flex max-w-screen-xl mx-auto"},React.createElement("div",{className:"ui-meganav-content-spacer"}),React.createElement("section",{className:"grid grid-cols-12 ui-grid-gap-x w-full"},React.createElement("div",{className:"col-span-full md:col-span-4 pt-24 md:py-24 lg:py-32 px-24 sm:px-32 md:pl-0 md:pr-24"},React.createElement("h3",{className:"ui-meganav-overline",id:"meganav-company-panel-list-why-companies"},"Why companies choose Ably"),React.createElement("ul",{"aria-labelledby":"meganav-company-panel-list-why-companies"},React.createElement("li",null,React.createElement("a",{href:absUrl("/customers"),className:"ui-meganav-media-with-image group"},React.createElement(Icon,{name:"icon-display-customers-col",size:"2.5rem"}),React.createElement("div",{className:"flex flex-col justify-center"},React.createElement("p",{className:"ui-meganav-media-heading"},"Customers"),React.createElement("p",{className:"ui-meganav-media-copy"},"Ably supports customers across multiple industries.")))),React.createElement("li",null,React.createElement("a",{href:absUrl("/case-studies"),className:"ui-meganav-media-with-image group"},React.createElement(Icon,{name:"icon-display-case-studies-col",size:"2.5rem"}),React.createElement("div",{className:"flex flex-col justify-center"},React.createElement("p",{className:"ui-meganav-media-heading"},"Case studies"),React.createElement("p",{className:"ui-meganav-media-copy"},"Discover how customers are benefiting from Ably.")))),React.createElement("li",null,React.createElement("a",{href:absUrl("/compare"),className:"ui-meganav-media-with-image group"},React.createElement(Icon,{name:"icon-display-compare-tech-col",size:"2.5rem"}),React.createElement("div",{className:"flex flex-col justify-center"},React.createElement("p",{className:"ui-meganav-media-heading"},"Compare our tech"),React.createElement("p",{className:"ui-meganav-media-copy"},"Choose the right realtime service.")))),React.createElement("li",null,React.createElement("a",{href:absUrl("/aws"),className:"ui-meganav-media-with-image group"},paths&&React.createElement("img",{src:paths.awsLogo,alt:"AWS logo"}),React.createElement("div",{className:"flex flex-col justify-center"},React.createElement("p",{className:"ui-meganav-media-heading"},"Partners"),React.createElement("p",{className:"ui-meganav-media-copy"},"Ably collaborates and integrates with AWS.")))))),React.createElement("div",{className:"col-span-full md:col-span-4 pb-8 md:py-24 lg:py-32 px-24 sm:px-32 md:px-0"},React.createElement("ul",{className:"md:mt-40","aria-labelledby":"meganav-company-panel-list-why-companies"},React.createElement("li",null,React.createElement("a",{href:absUrl("/resources"),className:"ui-meganav-media-with-image group"},React.createElement(Icon,{name:"icon-display-resources-col",size:"2.5rem"}),React.createElement("div",{className:"flex flex-col justify-center"},React.createElement("p",{className:"ui-meganav-media-heading"},"Resources"),React.createElement("p",{className:"ui-meganav-media-copy"},"Learn more about realtime with our handy resources.")))),React.createElement("li",null,React.createElement("a",{href:absUrl("/about"),className:"ui-meganav-media-with-image group"},React.createElement(Icon,{name:"icon-display-about-ably-col",size:"2.5rem"}),React.createElement("div",{className:"flex flex-col justify-center"},React.createElement("p",{className:"ui-meganav-media-heading"},"About Ably"),React.createElement("p",{className:"ui-meganav-media-copy"},"Find out more about Ably’s mission.")))),React.createElement("li",null,React.createElement("a",{href:absUrl("/careers"),className:"ui-meganav-media-with-image group"},React.createElement(Icon,{name:"icon-display-careers-col",size:"2.5rem"}),React.createElement("div",{className:"flex flex-col justify-center"},React.createElement("p",{className:"ui-meganav-media-heading"},"Careers"),React.createElement("p",{className:"ui-meganav-media-copy"},"Discover our open roles and core Ably values.")))),React.createElement("li",null,React.createElement("a",{href:absUrl("/events"),className:"ui-meganav-media-with-image group"},React.createElement(Icon,{name:"icon-display-events-col",size:"2.5rem"}),React.createElement("div",{className:"flex flex-col justify-center"},React.createElement("p",{className:"ui-meganav-media-heading"},"Events"),React.createElement("p",{className:"ui-meganav-media-copy"},"Join Ably at upcoming events.")))))),React.createElement(BlogPostsList,{absUrl:absUrl})),React.createElement("div",{className:"ui-meganav-content-spacer"}))};export default MeganavContentCompany;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import React from"react";import Icon from"./Icon";import{StatusIcon}from"./Status";const MeganavContentDevelopers=({absUrl,statusUrl})
|
|
1
|
+
import React from"react";import Icon from"./Icon";import{StatusIcon}from"./Status";const MeganavContentDevelopers=({absUrl,statusUrl})=>React.createElement("div",{className:"flex max-w-screen-xl mx-auto"},React.createElement("div",{className:"ui-meganav-content-spacer"}),React.createElement("section",{className:"grid grid-cols-12 ui-grid-gap-x w-full"},React.createElement("div",{className:"col-span-full md:col-span-4 pt-24 md:py-24 lg:py-32 px-24 sm:px-32 md:pl-0 md:pr-24"},React.createElement("h3",{className:"ui-meganav-overline uppercase",id:"meganav-developers-panel-explore"},"Explore"),React.createElement("ul",{"aria-labelledby":"meganav-developers-panel-explore"},React.createElement("li",null,React.createElement("a",{href:absUrl("/docs"),className:"ui-meganav-media-with-image group"},React.createElement(Icon,{name:"icon-display-docs-col",size:"2.5rem"}),React.createElement("div",{className:"flex flex-col justify-center"},React.createElement("p",{className:"ui-meganav-media-heading"},"Documentation"),React.createElement("p",{className:"ui-meganav-media-copy"},"Technical guides to help you build with Ably.")))),React.createElement("li",null,React.createElement("a",{href:absUrl("/docs/quick-start-guide"),className:"ui-meganav-media-with-image group"},React.createElement(Icon,{name:"icon-display-quickstart-guides-col",size:"2.5rem"}),React.createElement("div",{className:"flex flex-col justify-center"},React.createElement("p",{className:"ui-meganav-media-heading"},"Quickstart guides"),React.createElement("p",{className:"ui-meganav-media-copy"},"Documentation to help you get started quickly.")))),React.createElement("li",null,React.createElement("a",{href:absUrl("/integrations"),className:"ui-meganav-media-with-image group"},React.createElement(Icon,{name:"icon-display-integrations-col",size:"2.5rem"}),React.createElement("div",{className:"flex flex-col justify-center"},React.createElement("p",{className:"ui-meganav-media-heading"},"Integrations"),React.createElement("p",{className:"ui-meganav-media-copy"},"Find out more about Ably integrations."," ")))),React.createElement("li",null,React.createElement("a",{href:absUrl("/examples"),className:"ui-meganav-media-with-image group"},React.createElement(Icon,{name:"icon-display-examples-col",size:"2.5rem"}),React.createElement("div",{className:"flex flex-col justify-center"},React.createElement("p",{className:"ui-meganav-media-heading"},"Live examples"),React.createElement("p",{className:"ui-meganav-media-copy"},"Discover our features and their use cases.")))))),React.createElement("div",{className:"col-span-full md:col-span-4 pb-8 md:py-24 lg:py-32 px-24 sm:px-32 md:px-0"},React.createElement("ul",{className:"md:mt-40","aria-labelledby":"meganav-developers-panel-explore"},React.createElement("li",null,React.createElement("a",{href:absUrl("/docs/sdks"),className:"ui-meganav-media-with-image group"},React.createElement(Icon,{name:"icon-display-sdks-col",size:"2.5rem"}),React.createElement("div",{className:"flex flex-col justify-center"},React.createElement("p",{className:"ui-meganav-media-heading"},"SDKs"),React.createElement("p",{className:"ui-meganav-media-copy"},"Download an SDK to help you build realtime apps faster.")))),React.createElement("li",null,React.createElement("a",{href:absUrl("/tutorials"),className:"ui-meganav-media-with-image group"},React.createElement(Icon,{name:"icon-display-tutorials-demos-col",size:"2.5rem"}),React.createElement("div",{className:"flex flex-col justify-center"},React.createElement("p",{className:"ui-meganav-media-heading"},"Tutorials & Demos"),React.createElement("p",{className:"ui-meganav-media-copy"},"Get stuck in with our hands-on resources.")))),React.createElement("li",null,React.createElement("a",{href:absUrl("/reference-guide-chat"),className:"ui-meganav-media-with-image group"},React.createElement(Icon,{name:"icon-display-chat-col",size:"2.5rem"}),React.createElement("div",{className:"flex flex-col justify-center"},React.createElement("p",{className:"ui-meganav-media-heading"},"Chat apps reference guide"),React.createElement("p",{className:"ui-meganav-media-copy"},"Learn how to build chat apps with Ably.")))),React.createElement("li",null,React.createElement("a",{href:absUrl("/reference-guide-multiplayer"),className:"ui-meganav-media-with-image group"},React.createElement(Icon,{name:"icon-display-multi-user-spaces-col",size:"2.5rem"}),React.createElement("div",{className:"flex flex-col justify-center"},React.createElement("p",{className:"ui-meganav-media-heading"},"Multiplayer reference guide"),React.createElement("p",{className:"ui-meganav-media-copy"},"Learn how to build collaborative features with Ably.")))))),React.createElement("div",{className:"col-span-full md:col-span-4 pt-8 pb-24 md:py-24 lg:py-32 px-24 sm:px-32 md:px-0"},React.createElement("h3",{className:"ui-meganav-overline uppercase",id:"meganav-developers-panel-quick-links"},"Quick links"),React.createElement("ul",{"aria-labelledby":"meganav-developers-panel-quick-links"},React.createElement("li",null,React.createElement("a",{href:"https://discord.gg/jwBPhEZ9g5",className:"group ui-meganav-media py-12"},React.createElement("p",{className:"ui-meganav-media-heading"},"Discord"))),React.createElement("li",null,React.createElement("a",{href:"https://github.com/ably",className:"group ui-meganav-media py-12"},React.createElement("p",{className:"ui-meganav-media-heading"},"GitHub"))),React.createElement("li",null,React.createElement("a",{href:"https://changelog.ably.com/",className:"group ui-meganav-media py-12"},React.createElement("p",{className:"ui-meganav-media-heading"},"Changelog"))),React.createElement("li",null,React.createElement("a",{href:"https://status.ably.com/",className:"group ui-meganav-media py-12"},React.createElement("p",{className:"ui-meganav-media-heading flex items-center gap-4"},"Status",React.createElement(StatusIcon,{statusUrl:statusUrl})))),React.createElement("li",null,React.createElement("a",{href:absUrl("/support"),className:"group ui-meganav-media py-12"},React.createElement("p",{className:"ui-meganav-media-heading"},"Support & FAQs")))))),React.createElement("div",{className:"ui-meganav-content-spacer"}));export default MeganavContentDevelopers;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import React from"react";import FeaturedLink from"./FeaturedLink";const MeganavContentProducts=({paths,absUrl})
|
|
1
|
+
import React from"react";import FeaturedLink from"./FeaturedLink";const MeganavContentProducts=({paths,absUrl})=>React.createElement("div",{className:"flex max-w-screen-xl mx-auto"},React.createElement("div",{className:"ui-meganav-content-spacer bg-extra-light-grey"}),React.createElement("section",{className:"grid grid-cols-12 ui-grid-gap-x w-full"},React.createElement("div",{className:"col-span-full md:col-span-4 py-24 lg:py-32 px-24 sm:px-32 md:pl-0 md:pr-24 bg-extra-light-grey"},React.createElement("div",{className:"flex mb-20"},paths&&React.createElement("img",{src:paths?.ablyStack,alt:"Ably homepage"}),React.createElement("h3",{className:"ui-meganav-overline ml-24"},"The Ably Platform")),React.createElement("p",{className:"ui-text-p2 font-bold mb-24",style:{maxWidth:"330px"}},"Easily power any realtime experience in your application. No complex infrastructure to manage or provision. Just a simple API that handles everything realtime, and lets you focus on your code."),React.createElement(FeaturedLink,{url:absUrl("/platform"),textSize:"text-p2"},"Explore how it works")),React.createElement("div",{className:"col-span-full md:col-span-4 pt-24 pb-8 md:py-24 lg:py-32 px-24 sm:px-32 md:px-0 bg-white"},React.createElement("h3",{className:"ui-meganav-overline",id:"meganav-products-panel-list-examples"},"Products"),React.createElement("ul",{className:"mb-16","aria-labelledby":"meganav-products-panel-list-examples"},React.createElement("li",null,React.createElement("a",{href:absUrl("/pubsub"),className:"group ui-meganav-media"},React.createElement("p",{className:"ui-meganav-media-heading"},"Pub/Sub"),React.createElement("p",{className:"ui-meganav-media-copy"},"Build infinitely scalable realtime applications."))),React.createElement("li",null,React.createElement("a",{href:absUrl("/spaces"),className:"group ui-meganav-media"},React.createElement("p",{className:"ui-meganav-media-heading"},"Spaces (Beta)"),React.createElement("p",{className:"ui-meganav-media-copy"},"Create multi-user collaborative environments."))),React.createElement("li",null,React.createElement("a",{href:absUrl("/livesync"),className:"group ui-meganav-media"},React.createElement("p",{className:"ui-meganav-media-heading"},"LiveSync (Alpha)"),React.createElement("p",{className:"ui-meganav-media-copy"},"Seamlessly sync database changes with frontend clients at scale."))),React.createElement("li",null,React.createElement("a",{href:absUrl("/chat"),className:"group ui-meganav-media"},React.createElement("p",{className:"ui-meganav-media-heading"},"Chat (Beta)"),React.createElement("p",{className:"ui-meganav-media-copy"},"Deliver highly reliable chat experiences at scale."))))),React.createElement("div",{className:"col-span-full md:col-span-4 pt-8 pb-24 md:py-24 lg:py-32 px-24 sm:px-32 md:px-0 bg-white"},React.createElement("h3",{className:"ui-meganav-overline",id:"meganav-products-panel-list-our-technology"},"Technology"),React.createElement("ul",{className:"mb-16","aria-labelledby":"meganav-products-panel-list-our-technology"},React.createElement("li",null,React.createElement("a",{href:absUrl("/four-pillars-of-dependability#performance"),className:"ui-meganav-media group"},React.createElement("p",{className:"ui-meganav-media-heading"},"Predictable performance"),React.createElement("p",{className:"ui-meganav-media-copy"},"A low-latency and high-throughput global network."))),React.createElement("li",null,React.createElement("a",{href:absUrl("/four-pillars-of-dependability#integrity"),className:"ui-meganav-media group"},React.createElement("p",{className:"ui-meganav-media-heading"},"Guaranteed ordering & delivery"),React.createElement("p",{className:"ui-meganav-media-copy"},"Data is delivered - in order - even after disconnections."))),React.createElement("li",null,React.createElement("a",{href:absUrl("/four-pillars-of-dependability#reliability"),className:"ui-meganav-media group"},React.createElement("p",{className:"ui-meganav-media-heading"},"Fault tolerant infrastructure"),React.createElement("p",{className:"ui-meganav-media-copy"},"Redundancy is built in at global and regional levels."))),React.createElement("li",null,React.createElement("a",{href:absUrl("/four-pillars-of-dependability#availability"),className:"ui-meganav-media group"},React.createElement("p",{className:"ui-meganav-media-heading"},"High scalability & availability"),React.createElement("p",{className:"ui-meganav-media-copy"},"Built for scale with legitimate 99.999% uptime SLAs."))),React.createElement("li",null,React.createElement("a",{href:absUrl("/network"),className:"ui-meganav-media group"},React.createElement("p",{className:"ui-meganav-media-heading"},"Global edge network"),React.createElement("p",{className:"ui-meganav-media-copy"},"An edge network of 15 core routing datacenters and 205+ PoPs.")))),React.createElement(FeaturedLink,{url:absUrl("/four-pillars-of-dependability"),textSize:"text-p3"},"Explore Four Pillars of Dependability"))),React.createElement("div",{className:"ui-meganav-content-spacer"}));export default MeganavContentProducts;
|