@frigade/react 2.0.0-alpha.2 → 2.0.0-alpha.4

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/dist/index.cjs CHANGED
@@ -1,3 +1,3 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }"use client";
2
- var _=Object.defineProperty,Fr=Object.defineProperties;var Wr=Object.getOwnPropertyDescriptors;var A=Object.getOwnPropertySymbols;var rr=Object.prototype.hasOwnProperty,er=Object.prototype.propertyIsEnumerable;var Z=(r,e,o)=>e in r?_(r,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):r[e]=o,l=(r,e)=>{for(var o in e||(e={}))rr.call(e,o)&&Z(r,o,e[o]);if(A)for(var o of A(e))er.call(e,o)&&Z(r,o,e[o]);return r},f=(r,e)=>Fr(r,Wr(e));var c=(r,e)=>{var o={};for(var t in r)rr.call(r,t)&&e.indexOf(t)<0&&(o[t]=r[t]);if(r!=null&&A)for(var t of A(r))e.indexOf(t)<0&&er.call(r,t)&&(o[t]=r[t]);return o};var or=(r,e)=>{for(var o in e)_(r,o,{get:e[o],enumerable:!0})};var R=(r,e,o)=>new Promise((t,n)=>{var a=d=>{try{s(o.next(d))}catch(v){n(v)}},i=d=>{try{s(o.throw(d))}catch(v){n(v)}},s=d=>d.done?t(d.value):Promise.resolve(d.value).then(a,i);s((o=o.apply(r,e)).next())});var _react = require('react'); var sr = _interopRequireWildcard(_react); var z = _interopRequireWildcard(_react);var _clsx = require('clsx');var p={borders:{md:"var(--fr-borders-md)"},borderWidths:{0:"var(--fr-borderWidths-0)",md:"var(--fr-borderWidths-md)"},colors:{black:"var(--fr-colors-black)",gray100:"var(--fr-colors-gray100)",gray200:"var(--fr-colors-gray200)",gray300:"var(--fr-colors-gray300)",gray400:"var(--fr-colors-gray400)",gray500:"var(--fr-colors-gray500)",gray600:"var(--fr-colors-gray600)",gray700:"var(--fr-colors-gray700)",gray800:"var(--fr-colors-gray800)",gray900:"var(--fr-colors-gray900)",white:"var(--fr-colors-white)",blue400:"var(--fr-colors-blue400)",blue500:"var(--fr-colors-blue500)",blue800:"var(--fr-colors-blue800)",blue900:"var(--fr-colors-blue900)",green400:"var(--fr-colors-green400)",green500:"var(--fr-colors-green500)",green800:"var(--fr-colors-green800)",transparent:"var(--fr-colors-transparent)",red500:"var(--fr-colors-red500)",neutral:{background:"var(--fr-colors-neutral-background)",border:"var(--fr-colors-neutral-border)",foreground:"var(--fr-colors-neutral-foreground)",surface:"var(--fr-colors-neutral-surface)",active:{background:"var(--fr-colors-neutral-active-background)",border:"var(--fr-colors-neutral-active-border)",foreground:"var(--fr-colors-neutral-active-foreground)",surface:"var(--fr-colors-neutral-active-surface)"},focus:{background:"var(--fr-colors-neutral-focus-background)",border:"var(--fr-colors-neutral-focus-border)",foreground:"var(--fr-colors-neutral-focus-foreground)",surface:"var(--fr-colors-neutral-focus-surface)"},hover:{background:"var(--fr-colors-neutral-hover-background)",border:"var(--fr-colors-neutral-hover-border)",foreground:"var(--fr-colors-neutral-hover-foreground)",surface:"var(--fr-colors-neutral-hover-surface)"}},primary:{background:"var(--fr-colors-primary-background)",border:"var(--fr-colors-primary-border)",foreground:"var(--fr-colors-primary-foreground)",surface:"var(--fr-colors-primary-surface)",active:{background:"var(--fr-colors-primary-active-background)",border:"var(--fr-colors-primary-active-border)",foreground:"var(--fr-colors-primary-active-foreground)",surface:"var(--fr-colors-primary-active-surface)"},focus:{background:"var(--fr-colors-primary-focus-background)",border:"var(--fr-colors-primary-focus-border)",foreground:"var(--fr-colors-primary-focus-foreground)",surface:"var(--fr-colors-primary-focus-surface)"},hover:{background:"var(--fr-colors-primary-hover-background)",border:"var(--fr-colors-primary-hover-border)",foreground:"var(--fr-colors-primary-hover-foreground)",surface:"var(--fr-colors-primary-hover-surface)"}},secondary:{background:"var(--fr-colors-secondary-background)",border:"var(--fr-colors-secondary-border)",foreground:"var(--fr-colors-secondary-foreground)",surface:"var(--fr-colors-secondary-surface)",active:{background:"var(--fr-colors-secondary-active-background)",border:"var(--fr-colors-secondary-active-border)",foreground:"var(--fr-colors-secondary-active-foreground)",surface:"var(--fr-colors-secondary-active-surface)"},focus:{background:"var(--fr-colors-secondary-focus-background)",border:"var(--fr-colors-secondary-focus-border)",foreground:"var(--fr-colors-secondary-focus-foreground)",surface:"var(--fr-colors-secondary-focus-surface)"},hover:{background:"var(--fr-colors-secondary-hover-background)",border:"var(--fr-colors-secondary-hover-border)",foreground:"var(--fr-colors-secondary-hover-foreground)",surface:"var(--fr-colors-secondary-hover-surface)"}}},fontFamilies:{default:"var(--fr-fontFamilies-default)"},fontSizes:{xs:"var(--fr-fontSizes-xs)",sm:"var(--fr-fontSizes-sm)",md:"var(--fr-fontSizes-md)",lg:"var(--fr-fontSizes-lg)",xl:"var(--fr-fontSizes-xl)","2xl":"var(--fr-fontSizes-2xl)","3xl":"var(--fr-fontSizes-3xl)","4xl":"var(--fr-fontSizes-4xl)","5xl":"var(--fr-fontSizes-5xl)"},fontWeights:{regular:"var(--fr-fontWeights-regular)",demibold:"var(--fr-fontWeights-demibold)",bold:"var(--fr-fontWeights-bold)"},letterSpacings:{md:"var(--fr-letterSpacings-md)"},lineHeights:{xs:"var(--fr-lineHeights-xs)",sm:"var(--fr-lineHeights-sm)",md:"var(--fr-lineHeights-md)",lg:"var(--fr-lineHeights-lg)",xl:"var(--fr-lineHeights-xl)","2xl":"var(--fr-lineHeights-2xl)","3xl":"var(--fr-lineHeights-3xl)","4xl":"var(--fr-lineHeights-4xl)"},radii:{md:"var(--fr-radii-md)",lg:"var(--fr-radii-lg)",round:"var(--fr-radii-round)"},shadows:{md:"var(--fr-shadows-md)"},space:{0:"var(--fr-space-0)",1:"var(--fr-space-1)",2:"var(--fr-space-2)",3:"var(--fr-space-3)",4:"var(--fr-space-4)",5:"var(--fr-space-5)",6:"var(--fr-space-6)",7:"var(--fr-space-7)",8:"var(--fr-space-8)",9:"var(--fr-space-9)",10:"var(--fr-space-10)",11:"var(--fr-space-11)",12:"var(--fr-space-12)",13:"var(--fr-space-13)",14:"var(--fr-space-14)",15:"var(--fr-space-15)",16:"var(--fr-space-16)",17:"var(--fr-space-17)",18:"var(--fr-space-18)",19:"var(--fr-space-19)",20:"var(--fr-space-20)","-20":"var(--fr-space--20)","-19":"var(--fr-space--19)","-18":"var(--fr-space--18)","-17":"var(--fr-space--17)","-16":"var(--fr-space--16)","-15":"var(--fr-space--15)","-14":"var(--fr-space--14)","-13":"var(--fr-space--13)","-12":"var(--fr-space--12)","-11":"var(--fr-space--11)","-10":"var(--fr-space--10)","-9":"var(--fr-space--9)","-8":"var(--fr-space--8)","-7":"var(--fr-space--7)","-6":"var(--fr-space--6)","-5":"var(--fr-space--5)","-4":"var(--fr-space--4)","-3":"var(--fr-space--3)","-2":"var(--fr-space--2)","-1":"var(--fr-space--1)","-0.5":"var(--fr-space--0-5)","0.5":"var(--fr-space-0-5)",auto:"var(--fr-space-auto)"}};function M(r,e="",o="."){return Object.keys(r).reduce((t,n)=>{let i=`${e.length?`${e}${o}`:""}${n}`,s=r[n];return typeof s=="object"&&s!==null&&!Array.isArray(s)?Object.assign(t,M(s,i,o)):t[i]=s,t},{})}var D=M(p.colors),tr={color:D,backgroundColor:D,borderColor:D,border:p.borders,borderRadius:p.radii,borderWidth:p.borderWidths,fontFamily:p.fontFamilies,fontSize:p.fontSizes,fontWeight:p.fontWeights,gap:p.space,lineHeight:p.lineHeights,margin:p.space,marginTop:p.space,marginRight:p.space,marginBottom:p.space,marginLeft:p.space,padding:p.space,paddingTop:p.space,paddingRight:p.space,paddingBottom:p.space,paddingLeft:p.space,alignContent:["center","start","end","flex-start","flex-end","normal","baseline","first baseline","last baseline","space-between","space-around","space-evenly","stretch","safe center","unsafe center","inherit","initial","revert","revert-layer","unset"],alignItems:["normal","stretch","center","start","end","flex-start","flex-end","self-start","self-end","baseline","first baseline","last baseline","safe center","unsafe center","inherit","initial","revert","revert-layer","unset"],alignSelf:["auto","normal","center","start","end","self-start","self-end","flex-start","flex-end","baseline","first baseline","last baseline","stretch","safe center","unsafe center","inherit","initial","revert","revert-layer","unset"],flexDirection:["row","row-reverse","column","column-reverse","inherit","initial","revert","revert-layer","unset"],flexWrap:["nowrap","wrap","wrap-reverse","inherit","initial","revert","revert-layer","unset"],justifyContent:["center","start","end","flex-start","flex-end","left","right","normal","space-between","space-around","space-evenly","stretch","safe center","unsafe center","inherit","initial","revert","revert-layer","unset"],justifyItems:["normal","stretch","center","start","end","flex-start","flex-end","self-start","self-end","left","right","baseline","first baseline","last baseline","safe center","unsafe center","legacy right","legacy left","legacy center","inherit","initial","revert","revert-layer","unset"],boxSizing:["border-box","content-box","inherit","initial","revert","revert-layer","unset"],position:["static","relative","absolute","fixed","sticky","inherit","initial","revert","revert-layer","unset"],display:["block","block flex","block flow","block flow-root","block grid","contents","flex","flow-root","grid","inherit","initial","inline","inline flex","inline flow","inline flow-root","inline grid","inline-block","inline-flex","inline-grid","list-item","none","revert","revert-layer","table","table-row-group","table-header-group","table-footer-group","table-row","table-cell","table-column-group","table-column","table-caption","unset"]},nr={m:["margin"],mt:["marginTop"],mr:["marginRight"],mb:["marginBottom"],ml:["marginLeft"],mx:["marginLeft","marginRight"],my:["marginTop","marginBottom"],p:["padding"],pt:["paddingTop"],pr:["paddingRight"],pb:["paddingBottom"],pl:["paddingLeft"],px:["paddingLeft","paddingRight"],py:["paddingTop","paddingBottom"]};function Ar(r){if(Array.isArray(r))return new Map(r.map(e=>[e,e]));if(typeof r=="object"&&r!==null)return new Map(Object.entries(r));if(["string","number"].includes(typeof r))return new Map([r,r]);throw new Error("Invalid entry in styleProps")}var Vr=new Map(Object.entries(tr).map(([r,e])=>[r,Ar(e)])),Mr=new Map(Object.entries(nr).map(([r,e])=>[r,new Set(e)]));function ar(r){let e=Object.assign({},r),o={};return Object.entries(e).forEach(([t,n])=>{let a=Mr.get(t);a!=null&&(a.forEach(i=>{e[i]=n}),delete e[t])}),Object.entries(e).forEach(([t,n])=>{let a=Vr.get(t);if(a!=null)if(typeof n=="string"&&n.indexOf(" ")>-1){let i=n.split(" ");o[t]=i.map(s=>{var d;return(d=a.get(s.toString()))!=null?d:s}).join(" "),delete e[t]}else a.has(n.toString())&&(o[t]=a.get(n.toString()),delete e[t])}),{cssFromProps:o,unmatchedProps:e}}var _jsxruntime = require('@emotion/react/jsx-runtime');function ir(r){return r&&`fr-${r}`}function Er(r){return r&&(Array.isArray(r)?r.map(e=>ir(e)).join(" "):ir(r))}function jr(s,i){var d=s,{as:r,children:e,className:o,css:t,part:n}=d,a=c(d,["as","children","className","css","part"]);let v=r!=null?r:"div",{cssFromProps:h,unmatchedProps:b}=ar(a),P=Er(n),B=o||P?_clsx.clsx.call(void 0, o,P):void 0;return _jsxruntime.jsx.call(void 0, v,f(l({className:B,css:[l(l({boxSizing:"border-box"},h),t)]},b),{ref:i,children:e}))}var u=sr.forwardRef(jr);var E={};or(E,{Body1:()=>Ur,Body2:()=>Xr,Caption:()=>Jr,Display1:()=>Ir,Display2:()=>$r,H1:()=>Lr,H2:()=>Kr,H3:()=>Nr,H4:()=>qr,base:()=>x});var x=({fontFamilies:r})=>({fontFamily:r.default,margin:0}),Ir=({fontSizes:r,fontWeights:e,lineHeights:o})=>[x,{fontSize:r["5xl"],fontWeight:e.bold,lineHeight:o["4xl"]}],$r=({fontSizes:r,fontWeights:e,lineHeights:o})=>[x,{fontSize:r["4xl"],fontWeight:e.bold,lineHeight:o["3xl"]}],Lr=({fontSizes:r,fontWeights:e,lineHeights:o})=>[x,{fontSize:r["3xl"],fontWeight:e.bold,lineHeight:o["2xl"]}],Kr=({fontSizes:r,fontWeights:e,lineHeights:o})=>[x,{fontSize:r["2xl"],fontWeight:e.bold,lineHeight:o.xl}],Nr=({fontSizes:r,fontWeights:e,lineHeights:o})=>[x,{fontSize:r.xl,fontWeight:e.bold,lineHeight:o.lg}],qr=({fontSizes:r,fontWeights:e,lineHeights:o})=>[x,{fontSize:r.lg,fontWeight:e.bold,lineHeight:o.md}],Ur=({fontSizes:r,fontWeights:e,lineHeights:o})=>[x,{fontSize:r.md,fontWeight:e.regular,lineHeight:o.md}],Xr=({fontSizes:r,fontWeights:e,lineHeights:o})=>[x,{fontSize:r.sm,fontWeight:e.regular,lineHeight:o.md}],Jr=({fontSizes:r,fontWeights:e,lineHeights:o})=>[x,{fontSize:r.xs,fontWeight:e.regular,lineHeight:o.sm}];function lr(a){var i=a,{as:r="span",children:e,css:o,variant:t="Body1"}=i,n=c(i,["as","children","css","variant"]);return _jsxruntime.jsx.call(void 0, u,f(l({as:r,css:[E[t],o]},n),{children:e}))}var Qr=["Display1","Display2","H1","H2","H3","H4","Body1","Body2","Caption"],Yr=Object.fromEntries(Qr.map(r=>{let e=["H1","H2","H3","H4"].includes(r)?r.toLowerCase():void 0,o=t=>_jsxruntime.jsx.call(void 0, lr,f(l({as:e},t),{variant:r,children:t.children}));return o.displayName=`Text.${r}`,[r,o]})),w= exports.Text =Object.assign(lr,Yr);var j={};or(j,{Link:()=>_r,Plain:()=>re,Primary:()=>Gr,Secondary:()=>Zr,base:()=>k});var k=({radii:r,space:e})=>({borderWidth:0,borderRadius:r.md,padding:`${e[2]} ${e[4]}`}),Gr=({colors:r})=>[k,{backgroundColor:r.primary.surface,color:r.primary.foreground,"&:hover":{backgroundColor:r.primary.hover.surface}}],Zr=({colors:r})=>[k,{backgroundColor:r.secondary.surface,color:r.secondary.foreground,"&:hover":{backgroundColor:r.secondary.hover.surface}}],_r=({colors:r})=>[k,{backgroundColor:r.transparent,color:r.primary.surface,"&:hover":{color:r.primary.hover.surface}}],re=({colors:r})=>[k,{backgroundColor:r.transparent,color:r.neutral.foreground}];function fr(i){var s=i,{as:r,children:e,css:o={},title:t,variant:n="Primary"}=s,a=c(s,["as","children","css","title","variant"]);return _jsxruntime.jsxs.call(void 0, u,f(l({as:r!=null?r:"button",css:[j[n],o]},a),{children:[e,t&&_jsxruntime.jsx.call(void 0, w.Body2,{fontWeight:"demibold",children:t})]}))}var ee=["Primary","Secondary","Link","Plain"],oe=Object.fromEntries(ee.map(r=>{let e=r.toLocaleLowerCase(),o=a=>{var i=a,{part:t}=i,n=c(i,["part"]);return _jsxruntime.jsx.call(void 0, fr,f(l({part:[`button-${e}`,t]},n),{variant:r,children:n.children}))};return o.displayName=`Text.${r}`,[r,o]})),O= exports.Button =Object.assign(fr,oe);var ne=z.forwardRef((n,t)=>{var a=n,{children:r,css:e}=a,o=c(a,["children","css"]);return _jsxruntime.jsx.call(void 0, u,f(l({css:[{display:"flex",flexDirection:"row"},e]},o),{ref:t,children:r}))}),ae=z.forwardRef((n,t)=>{var a=n,{children:r,css:e}=a,o=c(a,["children","css"]);return _jsxruntime.jsx.call(void 0, u,f(l({css:[{display:"flex",flexDirection:"column"},e]},o),{ref:t,children:r}))}),S= exports.Flex ={Column:ae,Row:ne};var _react2 = require('@emotion/react');function ur(r){var e=r.match(/^var\((.*)\)$/);return e?e[1]:r}function gr(r,e){var o=r;for(var t of e){if(!(t in o))throw new Error("Path ".concat(e.join(" -> ")," does not exist in object"));o=o[t]}return o}function I(r,e){var o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],t=r.constructor();for(var n in r){var a=r[n],i=[...o,n];typeof a=="string"||typeof a=="number"||a==null?t[n]=e(a,i):typeof a=="object"&&!Array.isArray(a)?t[n]=I(a,e,i):console.warn('Skipping invalid key "'.concat(i.join("."),'". Should be a string, number, null or object. Received: "').concat(Array.isArray(a)?"Array":typeof a,'"'))}return t}function mr(r,e,o){r.style.setProperty(ur(e),o)}function vr(r,e,o){if(typeof o=="object"){var t=e;I(o,(i,s)=>{mr(r,gr(t,s),String(i))})}else{var n=e;for(var a in n)mr(r,a,n[a])}}function $(r,e=p){return Object.keys(r).reduce((o,t)=>{let n=r[t];return typeof n=="object"&&n!==null&&!Array.isArray(n)&&t in r?Object.assign(o,$(n,e[t])):o[e[t]]=r[t],o},{})}function br(r={},e=":root"){_react.useEffect.call(void 0, ()=>{let o=$(r),t=document.querySelector(e);vr(t,o)},[r])}var L=_react.createContext.call(void 0, {apiKey:"",config:{}});function ce({apiKey:r,children:e,config:o={},theme:t}){return br(t),_jsxruntime.jsx.call(void 0, L.Provider,{value:{apiKey:r,config:o},children:_jsxruntime.jsx.call(void 0, _react2.ThemeProvider,{theme:p,children:e})})}var _solid = require('@heroicons/react/24/solid');var _reactpopover = require('@radix-ui/react-popover'); var y = _interopRequireWildcard(_reactpopover);function hr(){let r="DOMRect"in globalThis?new DOMRect:{height:0,width:0,x:0,y:0,bottom:0,top:0,right:0,left:0,toJSON:()=>{}},[e,o]=_react.useState.call(void 0, r),[t,n]=_react.useState.call(void 0, null),a=_react.useCallback.call(void 0, i=>{n(i)},[]);return _react.useLayoutEffect.call(void 0, ()=>{t&&o(t.getBoundingClientRect())},[t]),{node:t,rect:e,ref:a}}var Pr="_16td421";function Tr(t){var n=t,{style:r={},part:e=""}=n,o=c(n,["style","part"]);return _jsxruntime.jsxs.call(void 0, u,f(l({part:`dot-wrapper ${e}`,style:l({height:"48px",position:"absolute",width:"48px"},r)},o),{children:[_jsxruntime.jsx.call(void 0, u,{backgroundColor:"primary.surface",className:Pr,part:"dot-pulse",style:{borderRadius:"24px",height:"48px",left:0,position:"absolute",top:0,transformOrigin:"center center",width:"48px"}}),_jsxruntime.jsx.call(void 0, u,{backgroundColor:"primary.surface",part:"dot",style:{borderRadius:"12px",height:"24px",left:"12px",position:"absolute",top:"12px",width:"24px"}})]}))}function K(t){var n=t,{part:r,src:e}=n,o=c(n,["part","src"]);return _jsxruntime.jsx.call(void 0, u,l({as:"img",part:["image",r],src:e},o))}function ge(r){var e,o,t;if(r.includes("youtube"))return`https://www.youtube.com/embed/${(e=r.split("v=")[1])==null?void 0:e.split("&")[0]}`;if(r.includes("vimeo"))return`https://player.vimeo.com/video/${(o=r.split("vimeo.com/")[1])==null?void 0:o.split("&")[0]}`;if(r.includes("wistia"))return`https://fast.wistia.net/embed/iframe/${(t=r.split("wistia.com/medias/")[1])==null?void 0:t.split("&")[0]}`;throw new Error("Could not map videoUri to a known provider (Youtube, Vimeo, Wistia).")}function N(t){var n=t,{part:r,src:e}=n,o=c(n,["part","src"]);let a=ge(e);return _jsxruntime.jsx.call(void 0, u,l({allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:!0,as:"iframe",backgroundColor:"gray100",borderWidth:0,part:["video",r],src:a},o))}function q(t){var n=t,{src:r,type:e}=n,o=c(n,["src","type"]);return _jsxruntime.jsx.call(void 0, e==="video"?N:K,l({src:r},o))}function Br({props:r,alignAttr:e,sideAttr:o}){let t=o!=null?o:"bottom",n={},a=(()=>{if(["after","before"].includes(r.align)){if(e=="start")return"before";if(e=="end")return"after"}return r.align})(),i="-24px",s={top:"bottom",right:"left",bottom:"top",left:"right"};return n[s[t]]=i,["before","end"].includes(a)?["top","bottom"].includes(t)?n.right=i:n.bottom=i:["after","start"].includes(a)?["top","bottom"].includes(t)?n.left=i:n.top=i:["top","bottom"].includes(t)?n.left=`calc(50% + ${i})`:n.top=`calc(50% + ${i})`,n}var Sr={content:["align","alignOffset","arrowPadding","avoidCollisions","collisionBoundary","collisionPadding","forceMount","hideWhenDetached","onCloseAutoFocus","onEscapeKeyDown","onFocusOutside","onInteractOutside","onOpenAutoFocus","onPointerDownOutside","side","sideOffset","sticky"],root:["defaultOpen","modal","onOpenChange","open"]};function Cr(r,e){var n,a,i;let o=Object.fromEntries(Sr.content.map(s=>[s,r[s]]).filter(s=>s[1]!==void 0)),t=Object.fromEntries(Sr.root.map(s=>[s,r[s]]).filter(s=>s[1]!==void 0));if(["before","after"].includes(o.align)){let s={after:"end",before:"start"},d=(H,V)=>["top","bottom"].includes(V)?H=="after"?"marginLeft":"marginRight":H=="after"?"marginTop":"marginBottom",v=(n=o.alignOffset)!=null?n:0,h=(a=o.style)!=null?a:{},b=(i=o.side)!=null?i:"bottom",P=o.align;o.style=f(l({},h),{[d(P,b)]:v});let B=["top","bottom"].includes(b)?e.width:e.height;o.alignOffset=(B+v)*-1,o.align=s[P]}return{contentProps:o,rootProps:t}}function g(i){var s=i,{anchor:r,children:e,css:o,spotlight:t=!1,style:n}=s,a=c(s,["anchor","children","css","spotlight","style"]);let{node:d,rect:v,ref:h}=hr(),[b,P]=_react.useState.call(void 0, a.align),[B,H]=_react.useState.call(void 0, a.side);if(d!==null){let C=d.getAttribute("data-align"),G=d.getAttribute("data-side");b!==C&&P(C),B!==G&&H(G)}let{contentProps:V,rootProps:kr}=Cr(a,v),Q=_react.useRef.call(void 0, null),[F,Or]=_react.useState.call(void 0, null);if(_react.useEffect.call(void 0, ()=>{let C=document.querySelector(r);C!=null&&(Q.current=C,Or(Q))},[r]),F==null)return null;let W=F.current.getBoundingClientRect(),Y="0";typeof window!="undefined"&&(Y=window.getComputedStyle(F.current).borderRadius);let Hr=Br({props:a,alignAttr:b,sideAttr:B});return _jsxruntime.jsxs.call(void 0, y.Root,f(l({defaultOpen:!0},kr),{children:[_jsxruntime.jsx.call(void 0, y.Anchor,{virtualRef:F}),_jsxruntime.jsx.call(void 0, y.Portal,{children:_jsxruntime.jsxs.call(void 0, "div",{css:o,children:[t&&_jsxruntime.jsx.call(void 0, u,{borderRadius:Y,part:"tooltip-spotlight",position:"absolute",css:{boxShadow:"0 0 0 2000px rgb(0 0 0 / 0.5)",height:W.height,left:W.left,top:W.top,width:W.width}}),_jsxruntime.jsx.call(void 0, y.Content,f(l({asChild:!0},V),{ref:h,children:_jsxruntime.jsxs.call(void 0, S.Column,{backgroundColor:"white",borderRadius:"md",p:5,part:"tooltip-content",position:"relative",css:l({boxShadow:"0px 4px 20px rgba(0, 0, 0, 0.1)",width:"300px"},n),children:[_jsxruntime.jsx.call(void 0, Tr,{style:Hr}),e]})}))]})})]}))}g.Close=o=>{var t=o,{css:r}=t,e=c(t,["css"]);return _jsxruntime.jsx.call(void 0, y.Close,{"aria-label":"Close",asChild:!0,children:_jsxruntime.jsx.call(void 0, O.Plain,f(l({css:[{top:0,right:0},r],part:"tooltip-close",position:"absolute"},e),{children:_jsxruntime.jsx.call(void 0, _solid.XMarkIcon,{height:"20",fill:"currentColor"})}))})};g.Media=o=>{var t=o,{src:r}=t,e=c(t,["src"]);return r==null?null:_jsxruntime.jsx.call(void 0, q,l({borderRadius:"md md 0 0",borderWidth:"0",css:{aspectRatio:"2"},margin:"-5 -5 5",src:r},e))};g.Primary=t=>{var n=t,{onClick:r,title:e}=n,o=c(n,["onClick","title"]);return e==null?null:_jsxruntime.jsx.call(void 0, O.Primary,l({title:e,onClick:r},o))};g.Progress=o=>{var t=o,{children:r}=t,e=c(t,["children"]);return r==null?null:_jsxruntime.jsx.call(void 0, w.Body2,f(l({fontWeight:"demibold",part:"progress"},e),{children:r}))};g.Secondary=t=>{var n=t,{onClick:r,title:e}=n,o=c(n,["onClick","title"]);return e==null?null:_jsxruntime.jsx.call(void 0, O.Secondary,l({title:e,onClick:r},o))};g.Subtitle=o=>{var t=o,{children:r}=t,e=c(t,["children"]);return r==null?null:_jsxruntime.jsx.call(void 0, w.Body2,f(l({part:"subtitle"},e),{children:r}))};g.Title=o=>{var t=o,{children:r}=t,e=c(t,["children"]);return r==null?null:_jsxruntime.jsx.call(void 0, w.Body1,f(l({fontWeight:"bold",mb:1,part:"title"},e),{children:r}))};var _js = require('@frigade/js');function Rr(r){let[e,o]=_react.useState.call(void 0, null),{apiKey:t,config:n}=_react.useContext.call(void 0, L);function a(){return R(this,null,function*(){let s=yield(yield new (0, _js.Frigade)(t,{apiUrl:n.apiUrl,userId:n.userId})).getFlow(r);o(s)})}return e===null&&a(),{flow:e,fetchFlow:a}}function Te(o){var t=o,{flowId:r}=t,e=c(t,["flowId"]);var h;let{flow:n,fetchFlow:a}=Rr(r);if(n==null||n!=null&&n.isCompleted||n!=null&&n.isSkipped)return null;n.start();let i=n.getCurrentStep();i==null||i.start();function s(){return R(this,null,function*(){yield n.skip(),a()})}function d(){return R(this,null,function*(){yield i.complete(),a()})}let v=d;return _jsxruntime.jsxs.call(void 0, g,f(l({align:"after",anchor:i.selector,onOpenAutoFocus:b=>b.preventDefault(),onPointerDownOutside:b=>b.preventDefault()},e),{children:[_jsxruntime.jsx.call(void 0, g.Close,{onClick:s}),_jsxruntime.jsx.call(void 0, g.Media,{src:(h=i.videoUri)!=null?h:i.imageUri,type:i.videoUri?"video":"image"}),_jsxruntime.jsx.call(void 0, g.Title,{children:i.title}),_jsxruntime.jsx.call(void 0, g.Subtitle,{children:i.subtitle}),_jsxruntime.jsxs.call(void 0, S.Row,{pt:4,alignItems:"center",justifyContent:"space-between",children:[_jsxruntime.jsx.call(void 0, g.Progress,{children:`${n.getNumberOfCompletedSteps()}/${n.steps.size}`}),_jsxruntime.jsxs.call(void 0, S.Row,{gap:3,children:[_jsxruntime.jsx.call(void 0, g.Secondary,{title:i.secondaryButtonTitle,onClick:v}),_jsxruntime.jsx.call(void 0, g.Primary,{title:i.primaryButtonTitle,onClick:d})]})]})]}))}exports.Box = u; exports.Button = O; exports.Flex = S; exports.Provider = ce; exports.Text = w; exports.Tooltip = g; exports.Tour = Te;
2
+ var ee=Object.defineProperty,Fe=Object.defineProperties;var Ee=Object.getOwnPropertyDescriptors;var $=Object.getOwnPropertySymbols;var te=Object.prototype.hasOwnProperty,oe=Object.prototype.propertyIsEnumerable;var Z=(e,t,o)=>t in e?ee(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,a=(e,t)=>{for(var o in t||(t={}))te.call(t,o)&&Z(e,o,t[o]);if($)for(var o of $(t))oe.call(t,o)&&Z(e,o,t[o]);return e},u=(e,t)=>Fe(e,Ee(t));var p=(e,t)=>{var o={};for(var r in e)te.call(e,r)&&t.indexOf(r)<0&&(o[r]=e[r]);if(e!=null&&$)for(var r of $(e))t.indexOf(r)<0&&oe.call(e,r)&&(o[r]=e[r]);return o};var re=(e,t)=>{for(var o in t)ee(e,o,{get:t[o],enumerable:!0})};var k=(e,t,o)=>new Promise((r,n)=>{var l=c=>{try{d(o.next(c))}catch(f){n(f)}},s=c=>{try{d(o.throw(c))}catch(f){n(f)}},d=c=>c.done?r(c.value):Promise.resolve(c.value).then(l,s);d((o=o.apply(e,t)).next())});var _react = require('react'); var de = _interopRequireWildcard(_react); var U = _interopRequireWildcard(_react);var _clsx = require('clsx');var Ae="px",De=e=>typeof e=="number"?`${4*e}${Ae}`:e,He=[-20,-19,-18,-17,-16,-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,-.5,0,.5,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,"auto"],Ve=Object.fromEntries(He.map(e=>[e,De(e)])),We={black:"#000000",gray100:"#14161A",gray200:"#181B20",gray300:"#1F2329",gray400:"#2E343D",gray500:"#4C5766",gray600:"#5A6472",gray700:"#C5CBD3",gray800:"#E2E5E9",gray900:"#F1F2F4",white:"#ffffff",blue400:"#015AC6",blue500:"#0171F8",blue800:"#DBECFF",blue900:"#F5F9FF",green400:"#009E37",green500:"#00D149",green800:"#DBFFE8",transparent:"#FFFFFF00",red500:"#c00000"},I={borders:{md:"1px solid"},borderWidths:{0:"0",md:"1px"},colors:a({},We),fontFamilies:{default:"TT Interphases Pro, sans-serif"},fontSizes:{xs:"12px",sm:"14px",md:"16px",lg:"18px",xl:"20px","2xl":"24px","3xl":"30px","4xl":"36px","5xl":"48px"},fontWeights:{regular:"400",demibold:"600",bold:"700"},letterSpacings:{md:"0.02em"},lineHeights:{xs:"18px",sm:"22px",md:"24px",lg:"26px",xl:"30px","2xl":"38px","3xl":"46px","4xl":"60px"},radii:{md:"8px",lg:"20px",round:"50%"},shadows:{md:"0px 4px 20px rgba(0, 0, 0, 0.1)"},space:Ve};var i=e=>`var(--fr-colors-${e})`,ne={neutral:{background:i("white"),border:i("gray900"),foreground:i("black"),surface:i("gray700"),active:{background:i("white"),border:i("gray900"),foreground:i("black"),surface:i("gray700")},focus:{background:i("white"),border:i("gray900"),foreground:i("black"),surface:i("gray700")},hover:{background:i("white"),border:i("gray900"),foreground:i("black"),surface:i("gray700")}},primary:{background:i("blue500"),border:i("blue500"),foreground:i("white"),surface:i("blue500"),active:{background:i("blue400"),border:i("blue400"),foreground:i("white"),surface:i("blue400")},focus:{background:i("blue500"),border:i("blue500"),foreground:i("white"),surface:i("blue500")},hover:{background:i("blue400"),border:i("blue400"),foreground:i("white"),surface:i("blue400")}},secondary:{background:i("gray900"),border:i("gray900"),foreground:i("black"),surface:i("gray900"),active:{background:i("gray800"),border:i("gray800"),foreground:i("black"),surface:i("gray800")},focus:{background:i("gray900"),border:i("gray900"),foreground:i("black"),surface:i("gray900")},hover:{background:i("gray800"),border:i("gray800"),foreground:i("black"),surface:i("gray800")}}};var j=u(a({},I),{colors:a(a({},I.colors),ne)});function O(e,t="",o="."){return Object.keys(e).reduce((r,n)=>{let s=`${t.length?`${t}${o}`:""}${n}`,d=e[n];return typeof d=="object"&&d!==null&&!Array.isArray(d)?Object.assign(r,O(d,s,o)):r[s]=d,r},{})}function L(e){return O(e,"--fr","-")}function ie(e,t="--fr"){let o={};return Object.keys(e).forEach(r=>{let n=e[r];typeof n=="object"&&n!==null&&!Array.isArray(n)?o[r]=ie(n,`${t}-${r}`):o[r]=`var(${t}-${r})`}),o}var se=L(j),g=ie(j);var z=O(g.colors),ae={color:z,backgroundColor:z,borderColor:z,border:g.borders,borderRadius:g.radii,borderWidth:g.borderWidths,fontFamily:g.fontFamilies,fontSize:g.fontSizes,fontWeight:g.fontWeights,gap:g.space,lineHeight:g.lineHeights,margin:g.space,marginTop:g.space,marginRight:g.space,marginBottom:g.space,marginLeft:g.space,padding:g.space,paddingTop:g.space,paddingRight:g.space,paddingBottom:g.space,paddingLeft:g.space,alignContent:["center","start","end","flex-start","flex-end","normal","baseline","first baseline","last baseline","space-between","space-around","space-evenly","stretch","safe center","unsafe center","inherit","initial","revert","revert-layer","unset"],alignItems:["normal","stretch","center","start","end","flex-start","flex-end","self-start","self-end","baseline","first baseline","last baseline","safe center","unsafe center","inherit","initial","revert","revert-layer","unset"],alignSelf:["auto","normal","center","start","end","self-start","self-end","flex-start","flex-end","baseline","first baseline","last baseline","stretch","safe center","unsafe center","inherit","initial","revert","revert-layer","unset"],flexDirection:["row","row-reverse","column","column-reverse","inherit","initial","revert","revert-layer","unset"],flexWrap:["nowrap","wrap","wrap-reverse","inherit","initial","revert","revert-layer","unset"],justifyContent:["center","start","end","flex-start","flex-end","left","right","normal","space-between","space-around","space-evenly","stretch","safe center","unsafe center","inherit","initial","revert","revert-layer","unset"],justifyItems:["normal","stretch","center","start","end","flex-start","flex-end","self-start","self-end","left","right","baseline","first baseline","last baseline","safe center","unsafe center","legacy right","legacy left","legacy center","inherit","initial","revert","revert-layer","unset"],boxSizing:["border-box","content-box","inherit","initial","revert","revert-layer","unset"],position:["static","relative","absolute","fixed","sticky","inherit","initial","revert","revert-layer","unset"],display:["block","block flex","block flow","block flow-root","block grid","contents","flex","flow-root","grid","inherit","initial","inline","inline flex","inline flow","inline flow-root","inline grid","inline-block","inline-flex","inline-grid","list-item","none","revert","revert-layer","table","table-row-group","table-header-group","table-footer-group","table-row","table-cell","table-column-group","table-column","table-caption","unset"]},le={m:["margin"],mt:["marginTop"],mr:["marginRight"],mb:["marginBottom"],ml:["marginLeft"],mx:["marginLeft","marginRight"],my:["marginTop","marginBottom"],p:["padding"],pt:["paddingTop"],pr:["paddingRight"],pb:["paddingBottom"],pl:["paddingLeft"],px:["paddingLeft","paddingRight"],py:["paddingTop","paddingBottom"]};function Me(e){if(Array.isArray(e))return new Map(e.map(t=>[t,t]));if(typeof e=="object"&&e!==null)return new Map(Object.entries(e));if(["string","number"].includes(typeof e))return new Map([e,e]);throw new Error("Invalid entry in styleProps")}var $e=new Map(Object.entries(ae).map(([e,t])=>[e,Me(t)])),Ie=new Map(Object.entries(le).map(([e,t])=>[e,new Set(t)]));function pe(e){let t=Object.assign({},e),o={};return Object.entries(t).forEach(([r,n])=>{let l=Ie.get(r);l!=null&&(l.forEach(s=>{t[s]=n}),delete t[r])}),Object.entries(t).forEach(([r,n])=>{let l=$e.get(r);if(l!=null)if(typeof n=="string"&&n.indexOf(" ")>-1){let s=n.split(" ");o[r]=s.map(d=>{var c;return(c=l.get(d.toString()))!=null?c:d}).join(" "),delete t[r]}else l.has(n.toString())&&(o[r]=l.get(n.toString()),delete t[r])}),{cssFromProps:o,unmatchedProps:t}}var _jsxruntime = require('@emotion/react/jsx-runtime');function ce(e){return e&&`fr-${e}`}function Le(e){return e&&(Array.isArray(e)?e.map(t=>ce(t)).join(" "):ce(e))}function ze(d,s){var c=d,{as:e,children:t,className:o,css:r,part:n}=c,l=p(c,["as","children","className","css","part"]);let f=e!=null?e:"div",{cssFromProps:h,unmatchedProps:y}=pe(l),v=Le(n),B=o||v?_clsx.clsx.call(void 0, o,v):void 0;return _jsxruntime.jsx.call(void 0, f,u(a({className:B,css:[a(a({boxSizing:"border-box"},h),r)]},y),{ref:s,children:t}))}var m=de.forwardRef(ze);var K={};re(K,{Body1:()=>Je,Body2:()=>Qe,Caption:()=>Ye,Display1:()=>Ne,Display2:()=>Ue,H1:()=>_e,H2:()=>Xe,H3:()=>qe,H4:()=>Ge,base:()=>P});var P=({fontFamilies:e})=>({fontFamily:e.default,margin:0}),Ne=({fontSizes:e,fontWeights:t,lineHeights:o})=>[P,{fontSize:e["5xl"],fontWeight:t.bold,lineHeight:o["4xl"]}],Ue=({fontSizes:e,fontWeights:t,lineHeights:o})=>[P,{fontSize:e["4xl"],fontWeight:t.bold,lineHeight:o["3xl"]}],_e=({fontSizes:e,fontWeights:t,lineHeights:o})=>[P,{fontSize:e["3xl"],fontWeight:t.bold,lineHeight:o["2xl"]}],Xe=({fontSizes:e,fontWeights:t,lineHeights:o})=>[P,{fontSize:e["2xl"],fontWeight:t.bold,lineHeight:o.xl}],qe=({fontSizes:e,fontWeights:t,lineHeights:o})=>[P,{fontSize:e.xl,fontWeight:t.bold,lineHeight:o.lg}],Ge=({fontSizes:e,fontWeights:t,lineHeights:o})=>[P,{fontSize:e.lg,fontWeight:t.bold,lineHeight:o.md}],Je=({fontSizes:e,fontWeights:t,lineHeights:o})=>[P,{fontSize:e.md,fontWeight:t.regular,lineHeight:o.md}],Qe=({fontSizes:e,fontWeights:t,lineHeights:o})=>[P,{fontSize:e.sm,fontWeight:t.regular,lineHeight:o.md}],Ye=({fontSizes:e,fontWeights:t,lineHeights:o})=>[P,{fontSize:e.xs,fontWeight:t.regular,lineHeight:o.sm}];function fe(l){var s=l,{as:e="span",children:t,css:o,variant:r="Body1"}=s,n=p(s,["as","children","css","variant"]);return _jsxruntime.jsx.call(void 0, m,u(a({as:e,css:[K[r],o]},n),{children:t}))}var Ze=["Display1","Display2","H1","H2","H3","H4","Body1","Body2","Caption"],et=Object.fromEntries(Ze.map(e=>{let t=["H1","H2","H3","H4"].includes(e)?e.toLowerCase():void 0,o=r=>_jsxruntime.jsx.call(void 0, fe,u(a({as:t},r),{variant:e,children:r.children}));return o.displayName=`Text.${e}`,[e,o]})),T= exports.Text =Object.assign(fe,et);var N={};re(N,{Link:()=>rt,Plain:()=>nt,Primary:()=>tt,Secondary:()=>ot,base:()=>F});var F=({radii:e,space:t})=>({borderWidth:0,borderRadius:e.md,padding:`${t[2]} ${t[4]}`}),tt=({colors:e})=>[F,{backgroundColor:e.primary.surface,color:e.primary.foreground,"&:hover":{backgroundColor:e.primary.hover.surface}}],ot=({colors:e})=>[F,{backgroundColor:e.secondary.surface,color:e.secondary.foreground,"&:hover":{backgroundColor:e.secondary.hover.surface}}],rt=({colors:e})=>[F,{backgroundColor:e.transparent,color:e.primary.surface,"&:hover":{color:e.primary.hover.surface}}],nt=({colors:e})=>[F,{backgroundColor:e.transparent,color:e.neutral.foreground}];function ge(s){var d=s,{as:e,children:t,css:o={},title:r,variant:n="Primary"}=d,l=p(d,["as","children","css","title","variant"]);return _jsxruntime.jsxs.call(void 0, m,u(a({as:e!=null?e:"button",css:[N[n],o]},l),{children:[t,r&&_jsxruntime.jsx.call(void 0, T.Body2,{fontWeight:"demibold",children:r})]}))}var it=["Primary","Secondary","Link","Plain"],st=Object.fromEntries(it.map(e=>{let t=e.toLocaleLowerCase(),o=l=>{var s=l,{part:r}=s,n=p(s,["part"]);return _jsxruntime.jsx.call(void 0, ge,u(a({part:[`button-${t}`,r]},n),{variant:e,children:n.children}))};return o.displayName=`Text.${e}`,[e,o]})),E= exports.Button =Object.assign(ge,st);var lt=U.forwardRef((n,r)=>{var l=n,{children:e,css:t}=l,o=p(l,["children","css"]);return _jsxruntime.jsx.call(void 0, m,u(a({css:[{display:"flex",flexDirection:"row"},t]},o),{ref:r,children:e}))}),pt=U.forwardRef((n,r)=>{var l=n,{children:e,css:t}=l,o=p(l,["children","css"]);return _jsxruntime.jsx.call(void 0, m,u(a({css:[{display:"flex",flexDirection:"column"},t]},o),{ref:r,children:e}))}),R= exports.Flex ={Column:pt,Row:lt};var _react2 = require('@emotion/react');var _=_react.createContext.call(void 0, {apiKey:"",config:{}});function ut({apiKey:e,children:t,config:o={},theme:r}){let n=r?L(r):{};return _jsxruntime.jsxs.call(void 0, _.Provider,{value:{apiKey:e,config:o},children:[_jsxruntime.jsx.call(void 0, _react2.Global,{styles:{":root":a(a({},se),n)}}),_jsxruntime.jsx.call(void 0, _react2.ThemeProvider,{theme:g,children:t})]})}var _solid = require('@heroicons/react/24/solid');var _reactpopover = require('@radix-ui/react-popover'); var w = _interopRequireWildcard(_reactpopover);function he(){let e="DOMRect"in globalThis?new DOMRect:{height:0,width:0,x:0,y:0,bottom:0,top:0,right:0,left:0,toJSON:()=>{}},[t,o]=_react.useState.call(void 0, e),[r,n]=_react.useState.call(void 0, null),l=_react.useCallback.call(void 0, s=>{n(s)},[]);return _react.useLayoutEffect.call(void 0, ()=>{r&&o(r.getBoundingClientRect())},[r]),{node:r,rect:t,ref:l}}var yt=_react2.keyframes.call(void 0, {"0%":{opacity:.5,transform:"scale(0.5)"},"50%":{opacity:0,transform:"scale(1)"},"100%":{opacity:0,transform:"scale(1)"}});function we(r){var n=r,{style:e={},part:t=""}=n,o=p(n,["style","part"]);return _jsxruntime.jsxs.call(void 0, m,u(a({part:`dot-wrapper ${t}`,style:a({height:"48px",position:"absolute",width:"48px"},e)},o),{children:[_jsxruntime.jsx.call(void 0, m,{backgroundColor:"primary.surface",part:"dot-pulse",css:{animation:`2s ease-out infinite ${yt}`,borderRadius:"24px",height:"48px",left:0,position:"absolute",top:0,transformOrigin:"center center",width:"48px"}}),_jsxruntime.jsx.call(void 0, m,{backgroundColor:"primary.surface",part:"dot",style:{borderRadius:"12px",height:"24px",left:"12px",position:"absolute",top:"12px",width:"24px"}})]}))}function Be(r){var n=r,{part:e,src:t}=n,o=p(n,["part","src"]);return _jsxruntime.jsx.call(void 0, m,a({as:"img",part:["image",e],src:t},o))}function wt(e){var t,o,r;if(e.includes("youtube"))return`https://www.youtube.com/embed/${(t=e.split("v=")[1])==null?void 0:t.split("&")[0]}`;if(e.includes("vimeo"))return`https://player.vimeo.com/video/${(o=e.split("vimeo.com/")[1])==null?void 0:o.split("&")[0]}`;if(e.includes("wistia"))return`https://fast.wistia.net/embed/iframe/${(r=e.split("wistia.com/medias/")[1])==null?void 0:r.split("&")[0]}`;throw new Error("Could not map videoUri to a known provider (Youtube, Vimeo, Wistia).")}function Te(r){var n=r,{part:e,src:t}=n,o=p(n,["part","src"]);let l=wt(t);return _jsxruntime.jsx.call(void 0, m,a({allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:!0,as:"iframe",backgroundColor:"gray100",borderWidth:0,part:["video",e],src:l},o))}function X(r){var n=r,{src:e,type:t}=n,o=p(n,["src","type"]);return _jsxruntime.jsx.call(void 0, t==="video"?Te:Be,a({src:e},o))}function Ce({props:e,alignAttr:t,sideAttr:o}){let r=o!=null?o:"bottom",n={},l=()=>{var f;if(["after","before"].includes(e.align)){if(t=="start")return"before";if(t=="end")return"after"}return(f=e.align)!=null?f:"after"},s="-24px",d={top:"bottom",right:"left",bottom:"top",left:"right"};n[d[r]]=s;let c=l();return["before","end"].includes(c)?["top","bottom"].includes(r)?n.right=s:n.bottom=s:["after","start"].includes(c)?["top","bottom"].includes(r)?n.left=s:n.top=s:["top","bottom"].includes(r)?n.left=`calc(50% + ${s})`:n.top=`calc(50% + ${s})`,n}var ve={content:["align","alignOffset","arrowPadding","avoidCollisions","collisionBoundary","collisionPadding","forceMount","hideWhenDetached","onCloseAutoFocus","onEscapeKeyDown","onFocusOutside","onInteractOutside","onOpenAutoFocus","onPointerDownOutside","side","sideOffset","sticky"],root:["defaultOpen","modal","onOpenChange","open"]};function Re(e,t){var n,l,s,d,c;let o=Object.fromEntries(ve.content.map(f=>[f,e[f]]).filter(f=>f[1]!==void 0)),r=Object.fromEntries(ve.root.map(f=>[f,e[f]]).filter(f=>f[1]!==void 0));if(o.align=(n=o.align)!=null?n:"after",o.side=(l=o.side)!=null?l:"bottom",["before","after"].includes(o.align)){let f={after:"end",before:"start"},h=(H,V)=>["top","bottom"].includes(V)?H=="after"?"marginLeft":"marginRight":H=="after"?"marginTop":"marginBottom",y=(s=o.alignOffset)!=null?s:0,v=(d=o.style)!=null?d:{},B=(c=o.side)!=null?c:"bottom",A=o.align;o.style=u(a({},v),{[h(A,B)]:y});let D=["top","bottom"].includes(B)?t.width:t.height;o.alignOffset=(D+y)*-1,o.align=f[A]}return{contentProps:o,rootProps:r}}function x(s){var d=s,{anchor:e,children:t,css:o,spotlight:r=!1,style:n}=d,l=p(d,["anchor","children","css","spotlight","style"]);let{node:c,rect:f,ref:h}=he(),{contentProps:y,rootProps:v}=Re(l,f),[B,A]=_react.useState.call(void 0, y.align),[D,H]=_react.useState.call(void 0, y.side);if(c!==null){let S=c.getAttribute("data-align"),Y=c.getAttribute("data-side");B!==S&&A(S),D!==Y&&H(Y)}let V=_react.useRef.call(void 0, null),[W,ke]=_react.useState.call(void 0, null);if(_react.useEffect.call(void 0, ()=>{let S=document.querySelector(e);S!=null&&(V.current=S,ke(V))},[e]),W==null)return null;let M=W.current.getBoundingClientRect(),Q="0";typeof window!="undefined"&&(Q=window.getComputedStyle(W.current).borderRadius);let Oe=Ce({props:l,alignAttr:B,sideAttr:D});return _jsxruntime.jsxs.call(void 0, w.Root,u(a({defaultOpen:!0},v),{children:[_jsxruntime.jsx.call(void 0, w.Anchor,{virtualRef:W}),_jsxruntime.jsx.call(void 0, w.Portal,{children:_jsxruntime.jsxs.call(void 0, "div",{css:o,children:[r&&_jsxruntime.jsx.call(void 0, m,{borderRadius:Q,part:"tooltip-spotlight",position:"absolute",css:{boxShadow:"0 0 0 2000px rgb(0 0 0 / 0.5)",height:M.height,left:M.left,top:M.top,width:M.width}}),_jsxruntime.jsx.call(void 0, w.Content,u(a({asChild:!0},y),{ref:h,children:_jsxruntime.jsxs.call(void 0, R.Column,{backgroundColor:"white",borderRadius:"md",p:5,part:"tooltip-content",position:"relative",css:a({boxShadow:"0px 4px 20px rgba(0, 0, 0, 0.1)",width:"300px"},n),children:[_jsxruntime.jsx.call(void 0, we,{style:Oe}),t]})}))]})})]}))}x.Close=o=>{var r=o,{css:e}=r,t=p(r,["css"]);return _jsxruntime.jsx.call(void 0, w.Close,{"aria-label":"Close",asChild:!0,children:_jsxruntime.jsx.call(void 0, E.Plain,u(a({css:[{top:0,right:0},e],part:"tooltip-close",position:"absolute"},t),{children:_jsxruntime.jsx.call(void 0, _solid.XMarkIcon,{height:"20",fill:"currentColor"})}))})};x.Media=o=>{var r=o,{src:e}=r,t=p(r,["src"]);return e==null?null:_jsxruntime.jsx.call(void 0, X,a({borderRadius:"md md 0 0",borderWidth:"0",css:{aspectRatio:"2"},margin:"-5 -5 5",src:e},t))};x.Primary=r=>{var n=r,{onClick:e,title:t}=n,o=p(n,["onClick","title"]);return t==null?null:_jsxruntime.jsx.call(void 0, E.Primary,a({title:t,onClick:e},o))};x.Progress=o=>{var r=o,{children:e}=r,t=p(r,["children"]);return e==null?null:_jsxruntime.jsx.call(void 0, T.Body2,u(a({fontWeight:"demibold",part:"progress"},t),{children:e}))};x.Secondary=r=>{var n=r,{onClick:e,title:t}=n,o=p(n,["onClick","title"]);return t==null?null:_jsxruntime.jsx.call(void 0, E.Secondary,a({title:t,onClick:e},o))};x.Subtitle=o=>{var r=o,{children:e}=r,t=p(r,["children"]);return e==null?null:_jsxruntime.jsx.call(void 0, T.Body2,u(a({part:"subtitle"},t),{children:e}))};x.Title=o=>{var r=o,{children:e}=r,t=p(r,["children"]);return e==null?null:_jsxruntime.jsx.call(void 0, T.Body1,u(a({fontWeight:"bold",mb:1,part:"title"},t),{children:e}))};var _js = require('@frigade/js');function Se(e){let[t,o]=_react.useState.call(void 0, null),{apiKey:r,config:n}=_react.useContext.call(void 0, _);function l(){return k(this,null,function*(){let s=Object.fromEntries(Object.entries(n).filter(([f,h])=>["apiUrl","userId"].includes(f)&&h!=null)),c=yield(yield new (0, _js.Frigade)(r,s)).getFlow(e);o(c)})}return t===null&&l(),{flow:t,fetchFlow:l}}function Ft(o){var r=o,{flowId:e}=r,t=p(r,["flowId"]);var h;let{flow:n,fetchFlow:l}=Se(e);if(n==null||n!=null&&n.isCompleted||n!=null&&n.isSkipped)return null;n.start();let s=n.getCurrentStep();s==null||s.start();function d(){return k(this,null,function*(){yield n.skip(),l()})}function c(){return k(this,null,function*(){yield s.complete(),l()})}let f=c;return _jsxruntime.jsxs.call(void 0, x,u(a({anchor:s.selector,onOpenAutoFocus:y=>y.preventDefault(),onPointerDownOutside:y=>y.preventDefault()},t),{children:[_jsxruntime.jsx.call(void 0, x.Close,{onClick:d}),_jsxruntime.jsx.call(void 0, x.Media,{src:(h=s.videoUri)!=null?h:s.imageUri,type:s.videoUri?"video":"image"}),_jsxruntime.jsx.call(void 0, x.Title,{children:s.title}),_jsxruntime.jsx.call(void 0, x.Subtitle,{children:s.subtitle}),_jsxruntime.jsxs.call(void 0, R.Row,{pt:4,alignItems:"center",justifyContent:"space-between",children:[_jsxruntime.jsx.call(void 0, x.Progress,{children:`${n.getNumberOfCompletedSteps()}/${n.steps.size}`}),_jsxruntime.jsxs.call(void 0, R.Row,{gap:3,children:[_jsxruntime.jsx.call(void 0, x.Secondary,{title:s.secondaryButtonTitle,onClick:f}),_jsxruntime.jsx.call(void 0, x.Primary,{title:s.primaryButtonTitle,onClick:c})]})]})]}))}exports.Box = m; exports.Button = E; exports.Flex = R; exports.Provider = ut; exports.Text = T; exports.Tooltip = x; exports.Tour = Ft;
3
3
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Box/index.tsx","../src/shared/theme/themeContract.css.ts","../src/shared/flattenObject.ts","../src/components/Box/styleProps.ts","../src/components/Box/stylePropsToCss.ts","../src/components/Text/Text.styles.ts","../src/components/Text/index.tsx","../src/components/Button/Button.styles.ts","../src/components/Button/index.tsx","../src/components/Flex/Flex.tsx","../src/components/Provider/index.tsx","../../../node_modules/@vanilla-extract/private/dist/vanilla-extract-private.esm.js","../../../node_modules/@vanilla-extract/dynamic/dist/vanilla-extract-dynamic.esm.js","../src/hooks/useThemeOverrides.ts","../src/shared/mapThemePropToThemeVars.ts","../src/components/Tooltip/index.tsx","../src/hooks/useBoundingClientRect.ts","../src/components/Tooltip/Dot.css.ts","../src/components/Tooltip/Dot.tsx","../src/components/Media/Image.tsx","../src/components/Media/Video.tsx","../src/components/Media/Media.tsx","../src/components/Tooltip/getDotPosition.ts","../src/components/Tooltip/mapTooltipPropsToPopoverProps.ts","../src/hooks/useFlow.ts","../src/components/Tour/index.tsx"],"names":["React","clsx","theme","flattenObject","obj","path","separator","acc","k","currentPath","currentValue","colorTokens","styleProps","stylePropShorthands","prepValue","value","v","stylePropsMap","propName","stylePropShorthandsMap","shorthand","targetProps","stylePropsToCss","props","unmatchedProps","cssFromProps","propValue","matchedShorthand","styleProp","splitPropValues","_a","jsx","prefixPart","part","processPart","p","BoxWithRef","ref","_b","as","children","className","css","__objRest","Component","processedPart","classNameWithPart","__spreadProps","__spreadValues","Box","Text_styles_exports","__export","Body1","Body2","Caption","Display1","Display2","H1","H2","H3","H4","base","fontFamilies","fontSizes","fontWeights","lineHeights","BaseText","variant","textVariantNames","textVariantComponents","asProp","component","Text","Button_styles_exports","Link","Plain","Primary","Secondary","radii","space","colors","jsxs","BaseButton","title","buttonVariantNames","buttonVariantComponents","variantPart","Button","Row","Column","Flex","createContext","ThemeProvider","getVarName","variable","matches","get","result","key","walkObject","fn","clone","_value","setVar","element","setElementVars","varsOrContract","tokens","_contract","_vars","varName","useEffect","mapThemePropToThemeVars","themeLevel","contractLevel","useThemeOverrides","themeOverrides","selector","mappedThemeVars","root","FrigadeContext","Provider","apiKey","config","useRef","useState","XMarkIcon","Popover","useCallback","useLayoutEffect","useBoundingClientRect","initialRect","rect","setRect","node","setNode","animationPulse","Dot","style","Image","src","getVideoEmbedSrc","videoUri","_c","Video","videoEmbedSrc","Media","type","getDotPosition","alignAttr","sideAttr","currentSide","dotProps","currentAlign","dotOffset","oppositeSides","RADIX_PROPS","mapTooltipPropsToRadixProps","contentRect","contentProps","propEntry","rootProps","mapToOriginalAlignValues","mapAlignOffsetToMargin","align","side","originalOffset","originalStyleProp","lengthOfCurrentSide","Tooltip","anchor","spotlight","contentNode","contentRef","setAlignAttr","setSideAttr","currentAlignAttr","currentSideAttr","anchorRef","anchorElementRef","setAnchorElementRef","anchorQuery","anchorRect","anchorRadius","dotPosition","onClick","Frigade","useContext","useFlow","flowId","flow","setFlow","fetchFlow","__async","flowResponse","Tour","step","handleDismiss","handlePrimary","handleSecondary","e"],"mappings":"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EAAIE,CAAW,EAAIC,EAGdH,CACT,EAAG,CAAC,CAAC,CACP,CCXA,IAAMI,EAAuCR,EAAcD,EAAM,MAAM,EAO1DU,GAAa,CACxB,MAAOD,EACP,gBAAiBA,EACjB,YAAaA,EACb,OAAQT,EAAM,QACd,aAAcA,EAAM,MACpB,YAAaA,EAAM,aAEnB,WAAYA,EAAM,aAClB,SAAUA,EAAM,UAChB,WAAYA,EAAM,YAElB,IAAKA,EAAM,MAEX,WAAYA,EAAM,YAElB,OAAQA,EAAM,MACd,UAAWA,EAAM,MACjB,YAAaA,EAAM,MACnB,aAAcA,EAAM,MACpB,WAAYA,EAAM,MAElB,QAASA,EAAM,MACf,WAAYA,EAAM,MAClB,aAAcA,EAAM,MACpB,cAAeA,EAAM,MACrB,YAAaA,EAAM,MAEnB,aAAc,CACZ,SACA,QACA,MACA,aACA,WACA,SACA,WACA,iBACA,gBACA,gBACA,eACA,eACA,UACA,cACA,gBACA,UACA,UACA,SACA,eACA,OACF,EAEA,WAAY,CACV,SACA,UACA,SACA,QACA,MACA,aACA,WACA,aACA,WACA,WACA,iBACA,gBACA,cACA,gBACA,UACA,UACA,SACA,eACA,OACF,EAEA,UAAW,CACT,OACA,SACA,SACA,QACA,MACA,aACA,WACA,aACA,WACA,WACA,iBACA,gBACA,UACA,cACA,gBACA,UACA,UACA,SACA,eACA,OACF,EAEA,cAAe,CACb,MACA,cACA,SACA,iBACA,UACA,UACA,SACA,eACA,OACF,EAEA,SAAU,CACR,SACA,OACA,eACA,UACA,UACA,SACA,eACA,OACF,EAEA,eAAgB,CACd,SACA,QACA,MACA,aACA,WACA,OACA,QACA,SACA,gBACA,eACA,eACA,UACA,cACA,gBACA,UACA,UACA,SACA,eACA,OACF,EAEA,aAAc,CACZ,SACA,UACA,SACA,QACA,MACA,aACA,WACA,aACA,WACA,OACA,QACA,WACA,iBACA,gBACA,cACA,gBACA,eACA,cACA,gBACA,UACA,UACA,SACA,eACA,OACF,EAEA,UAAW,CAAC,aAAc,cAAe,UAAW,UAAW,SAAU,eAAgB,OAA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","sourcesContent":["import * as React from 'react'\nimport { clsx } from 'clsx'\n\nimport '../../shared/theme/baseTheme.css'\nimport { stylePropsToCss } from './stylePropsToCss'\n\nfunction prefixPart(part: string | undefined) {\n return part ? `fr-${part}` : part\n}\n\nfunction processPart(part: string | string[] | undefined) {\n if (!part) return part\n\n return Array.isArray(part) ? part.map((p) => prefixPart(p)).join(' ') : prefixPart(part)\n}\n\nexport type BoxProps<T extends React.ElementType = React.ElementType> = {\n as?: T\n part?: string | string[]\n} & React.ComponentPropsWithRef<T>\n\nfunction BoxWithRef<T extends React.ElementType = React.ElementType>(\n { as, children, className, css, part, ...props }: BoxProps<T>,\n ref: React.ForwardedRef<T>\n) {\n const Component = as ?? 'div'\n\n const { cssFromProps, unmatchedProps } = stylePropsToCss(props)\n\n const processedPart = processPart(part)\n const classNameWithPart = className || processedPart ? clsx(className, processedPart) : undefined\n\n return (\n // @ts-ignore: TODO: ref types are yet again complaining\n <Component\n className={classNameWithPart}\n css={[{ boxSizing: 'border-box', ...cssFromProps, ...css }]}\n {...unmatchedProps}\n ref={ref}\n >\n {children}\n </Component>\n )\n}\n\nexport const Box = React.forwardRef(BoxWithRef)\n","export var theme = {borders:{md:'var(--fr-borders-md)'},borderWidths:{'0':'var(--fr-borderWidths-0)',md:'var(--fr-borderWidths-md)'},colors:{black:'var(--fr-colors-black)',gray100:'var(--fr-colors-gray100)',gray200:'var(--fr-colors-gray200)',gray300:'var(--fr-colors-gray300)',gray400:'var(--fr-colors-gray400)',gray500:'var(--fr-colors-gray500)',gray600:'var(--fr-colors-gray600)',gray700:'var(--fr-colors-gray700)',gray800:'var(--fr-colors-gray800)',gray900:'var(--fr-colors-gray900)',white:'var(--fr-colors-white)',blue400:'var(--fr-colors-blue400)',blue500:'var(--fr-colors-blue500)',blue800:'var(--fr-colors-blue800)',blue900:'var(--fr-colors-blue900)',green400:'var(--fr-colors-green400)',green500:'var(--fr-colors-green500)',green800:'var(--fr-colors-green800)',transparent:'var(--fr-colors-transparent)',red500:'var(--fr-colors-red500)',neutral:{background:'var(--fr-colors-neutral-background)',border:'var(--fr-colors-neutral-border)',foreground:'var(--fr-colors-neutral-foreground)',surface:'var(--fr-colors-neutral-surface)',active:{background:'var(--fr-colors-neutral-active-background)',border:'var(--fr-colors-neutral-active-border)',foreground:'var(--fr-colors-neutral-active-foreground)',surface:'var(--fr-colors-neutral-active-surface)'},focus:{background:'var(--fr-colors-neutral-focus-background)',border:'var(--fr-colors-neutral-focus-border)',foreground:'var(--fr-colors-neutral-focus-foreground)',surface:'var(--fr-colors-neutral-focus-surface)'},hover:{background:'var(--fr-colors-neutral-hover-background)',border:'var(--fr-colors-neutral-hover-border)',foreground:'var(--fr-colors-neutral-hover-foreground)',surface:'var(--fr-colors-neutral-hover-surface)'}},primary:{background:'var(--fr-colors-primary-background)',border:'var(--fr-colors-primary-border)',foreground:'var(--fr-colors-primary-foreground)',surface:'var(--fr-colors-primary-surface)',active:{background:'var(--fr-colors-primary-active-background)',border:'var(--fr-colors-primary-active-border)',foreground:'var(--fr-colors-primary-active-foreground)',surface:'var(--fr-colors-primary-active-surface)'},focus:{background:'var(--fr-colors-primary-focus-background)',border:'var(--fr-colors-primary-focus-border)',foreground:'var(--fr-colors-primary-focus-foreground)',surface:'var(--fr-colors-primary-focus-surface)'},hover:{background:'var(--fr-colors-primary-hover-background)',border:'var(--fr-colors-primary-hover-border)',foreground:'var(--fr-colors-primary-hover-foreground)',surface:'var(--fr-colors-primary-hover-surface)'}},secondary:{background:'var(--fr-colors-secondary-background)',border:'var(--fr-colors-secondary-border)',foreground:'var(--fr-colors-secondary-foreground)',surface:'var(--fr-colors-secondary-surface)',active:{background:'var(--fr-colors-secondary-active-background)',border:'var(--fr-colors-secondary-active-border)',foreground:'var(--fr-colors-secondary-active-foreground)',surface:'var(--fr-colors-secondary-active-surface)'},focus:{background:'var(--fr-colors-secondary-focus-background)',border:'var(--fr-colors-secondary-focus-border)',foreground:'var(--fr-colors-secondary-focus-foreground)',surface:'var(--fr-colors-secondary-focus-surface)'},hover:{background:'var(--fr-colors-secondary-hover-background)',border:'var(--fr-colors-secondary-hover-border)',foreground:'var(--fr-colors-secondary-hover-foreground)',surface:'var(--fr-colors-secondary-hover-surface)'}}},fontFamilies:{'default':'var(--fr-fontFamilies-default)'},fontSizes:{xs:'var(--fr-fontSizes-xs)',sm:'var(--fr-fontSizes-sm)',md:'var(--fr-fontSizes-md)',lg:'var(--fr-fontSizes-lg)',xl:'var(--fr-fontSizes-xl)','2xl':'var(--fr-fontSizes-2xl)','3xl':'var(--fr-fontSizes-3xl)','4xl':'var(--fr-fontSizes-4xl)','5xl':'var(--fr-fontSizes-5xl)'},fontWeights:{regular:'var(--fr-fontWeights-regular)',demibold:'var(--fr-fontWeights-demibold)',bold:'var(--fr-fontWeights-bold)'},letterSpacings:{md:'var(--fr-letterSpacings-md)'},lineHeights:{xs:'var(--fr-lineHeights-xs)',sm:'var(--fr-lineHeights-sm)',md:'var(--fr-lineHeights-md)',lg:'var(--fr-lineHeights-lg)',xl:'var(--fr-lineHeights-xl)','2xl':'var(--fr-lineHeights-2xl)','3xl':'var(--fr-lineHeights-3xl)','4xl':'var(--fr-lineHeights-4xl)'},radii:{md:'var(--fr-radii-md)',lg:'var(--fr-radii-lg)',round:'var(--fr-radii-round)'},shadows:{md:'var(--fr-shadows-md)'},space:{'0':'var(--fr-space-0)','1':'var(--fr-space-1)','2':'var(--fr-space-2)','3':'var(--fr-space-3)','4':'var(--fr-space-4)','5':'var(--fr-space-5)','6':'var(--fr-space-6)','7':'var(--fr-space-7)','8':'var(--fr-space-8)','9':'var(--fr-space-9)','10':'var(--fr-space-10)','11':'var(--fr-space-11)','12':'var(--fr-space-12)','13':'var(--fr-space-13)','14':'var(--fr-space-14)','15':'var(--fr-space-15)','16':'var(--fr-space-16)','17':'var(--fr-space-17)','18':'var(--fr-space-18)','19':'var(--fr-space-19)','20':'var(--fr-space-20)','-20':'var(--fr-space--20)','-19':'var(--fr-space--19)','-18':'var(--fr-space--18)','-17':'var(--fr-space--17)','-16':'var(--fr-space--16)','-15':'var(--fr-space--15)','-14':'var(--fr-space--14)','-13':'var(--fr-space--13)','-12':'var(--fr-space--12)','-11':'var(--fr-space--11)','-10':'var(--fr-space--10)','-9':'var(--fr-space--9)','-8':'var(--fr-space--8)','-7':'var(--fr-space--7)','-6':'var(--fr-space--6)','-5':'var(--fr-space--5)','-4':'var(--fr-space--4)','-3':'var(--fr-space--3)','-2':'var(--fr-space--2)','-1':'var(--fr-space--1)','-0.5':'var(--fr-space--0-5)','0.5':'var(--fr-space-0-5)',auto:'var(--fr-space-auto)'}};","export function flattenObject(obj: Record<any, any>, path = '', separator = '.') {\n return Object.keys(obj).reduce((acc, k) => {\n const prefix = path.length ? `${path}${separator}` : ''\n const currentPath = `${prefix}${k}`\n const currentValue = obj[k]\n\n if (typeof currentValue === 'object' && currentValue !== null && !Array.isArray(currentValue)) {\n Object.assign(acc, flattenObject(currentValue, currentPath, separator))\n } else {\n acc[currentPath] = currentValue\n }\n\n return acc\n }, {})\n}\n","import { theme } from '../../shared/theme/themeContract.css'\nimport { flattenObject } from '../../shared/flattenObject'\n\nconst colorTokens: Record<string, unknown> = flattenObject(theme.colors)\n\n/*\n TODO:\n - top / right / bottom / left\n*/\n\nexport const styleProps = {\n color: colorTokens,\n backgroundColor: colorTokens,\n borderColor: colorTokens,\n border: theme.borders,\n borderRadius: theme.radii,\n borderWidth: theme.borderWidths,\n\n fontFamily: theme.fontFamilies,\n fontSize: theme.fontSizes,\n fontWeight: theme.fontWeights,\n\n gap: theme.space,\n\n lineHeight: theme.lineHeights,\n\n margin: theme.space,\n marginTop: theme.space,\n marginRight: theme.space,\n marginBottom: theme.space,\n marginLeft: theme.space,\n\n padding: theme.space,\n paddingTop: theme.space,\n paddingRight: theme.space,\n paddingBottom: theme.space,\n paddingLeft: theme.space,\n\n alignContent: [\n 'center',\n 'start',\n 'end',\n 'flex-start',\n 'flex-end',\n 'normal',\n 'baseline',\n 'first baseline',\n 'last baseline',\n 'space-between',\n 'space-around',\n 'space-evenly',\n 'stretch',\n 'safe center',\n 'unsafe center',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n alignItems: [\n 'normal',\n 'stretch',\n 'center',\n 'start',\n 'end',\n 'flex-start',\n 'flex-end',\n 'self-start',\n 'self-end',\n 'baseline',\n 'first baseline',\n 'last baseline',\n 'safe center',\n 'unsafe center',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n alignSelf: [\n 'auto',\n 'normal',\n 'center',\n 'start',\n 'end',\n 'self-start',\n 'self-end',\n 'flex-start',\n 'flex-end',\n 'baseline',\n 'first baseline',\n 'last baseline',\n 'stretch',\n 'safe center',\n 'unsafe center',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n flexDirection: [\n 'row',\n 'row-reverse',\n 'column',\n 'column-reverse',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n flexWrap: [\n 'nowrap',\n 'wrap',\n 'wrap-reverse',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n justifyContent: [\n 'center',\n 'start',\n 'end',\n 'flex-start',\n 'flex-end',\n 'left',\n 'right',\n 'normal',\n 'space-between',\n 'space-around',\n 'space-evenly',\n 'stretch',\n 'safe center',\n 'unsafe center',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n justifyItems: [\n 'normal',\n 'stretch',\n 'center',\n 'start',\n 'end',\n 'flex-start',\n 'flex-end',\n 'self-start',\n 'self-end',\n 'left',\n 'right',\n 'baseline',\n 'first baseline',\n 'last baseline',\n 'safe center',\n 'unsafe center',\n 'legacy right',\n 'legacy left',\n 'legacy center',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n boxSizing: ['border-box', 'content-box', 'inherit', 'initial', 'revert', 'revert-layer', 'unset'],\n\n position: [\n 'static',\n 'relative',\n 'absolute',\n 'fixed',\n 'sticky',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n display: [\n 'block',\n 'block flex',\n 'block flow',\n 'block flow-root',\n 'block grid',\n 'contents',\n 'flex',\n 'flow-root',\n 'grid',\n 'inherit',\n 'initial',\n 'inline',\n 'inline flex',\n 'inline flow',\n 'inline flow-root',\n 'inline grid',\n 'inline-block',\n 'inline-flex',\n 'inline-grid',\n 'list-item',\n 'none',\n 'revert',\n 'revert-layer',\n 'table',\n 'table-row-group',\n 'table-header-group',\n 'table-footer-group',\n 'table-row',\n 'table-cell',\n 'table-column-group',\n 'table-column',\n 'table-caption',\n 'unset',\n ],\n}\n\nexport const stylePropShorthands = {\n m: ['margin'],\n mt: ['marginTop'],\n mr: ['marginRight'],\n mb: ['marginBottom'],\n ml: ['marginLeft'],\n mx: ['marginLeft', 'marginRight'],\n my: ['marginTop', 'marginBottom'],\n\n p: ['padding'],\n pt: ['paddingTop'],\n pr: ['paddingRight'],\n pb: ['paddingBottom'],\n pl: ['paddingLeft'],\n px: ['paddingLeft', 'paddingRight'],\n py: ['paddingTop', 'paddingBottom'],\n}\n","import { styleProps, stylePropShorthands } from './styleProps'\n\nfunction prepValue(value) {\n if (Array.isArray(value)) {\n return new Map(value.map((v) => [v, v]))\n } else if (typeof value === 'object' && value !== null) {\n return new Map(Object.entries(value))\n } else if (['string', 'number'].includes(typeof value)) {\n return new Map([value, value])\n }\n\n throw new Error('Invalid entry in styleProps')\n}\n\nconst stylePropsMap = new Map(\n Object.entries(styleProps).map(([propName, value]) => {\n return [propName, prepValue(value)]\n })\n)\n\nconst stylePropShorthandsMap = new Map(\n Object.entries(stylePropShorthands).map(([shorthand, targetProps]) => {\n return [shorthand, new Set(targetProps)]\n })\n)\n\nexport function stylePropsToCss(props: Record<any, any>) {\n const unmatchedProps = Object.assign({}, props)\n const cssFromProps = {}\n\n // Convert shorthand styleProps to full versions\n Object.entries(unmatchedProps).forEach(([propName, propValue]) => {\n const matchedShorthand = stylePropShorthandsMap.get(propName)\n if (matchedShorthand != null) {\n matchedShorthand.forEach((propName) => {\n unmatchedProps[propName] = propValue\n })\n\n delete unmatchedProps[propName]\n }\n })\n\n // Convert styleProps to style object\n Object.entries(unmatchedProps).forEach(([propName, propValue]) => {\n const styleProp = stylePropsMap.get(propName)\n if (styleProp != null) {\n if (typeof propValue === 'string' && propValue.indexOf(' ') > -1) {\n // Split space-separated values out and process them individually\n const splitPropValues = propValue.split(' ')\n\n cssFromProps[propName] = splitPropValues\n .map((v) => styleProp.get(v.toString()) ?? v)\n .join(' ')\n\n delete unmatchedProps[propName]\n } else if (styleProp.has(propValue.toString())) {\n cssFromProps[propName] = styleProp.get(propValue.toString())\n delete unmatchedProps[propName]\n }\n }\n })\n\n return { cssFromProps, unmatchedProps }\n}\n","export const base = ({ fontFamilies }) => ({\n fontFamily: fontFamilies.default,\n margin: 0,\n})\n\nexport const Display1 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes['5xl'],\n fontWeight: fontWeights.bold,\n lineHeight: lineHeights['4xl'],\n },\n]\n\nexport const Display2 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes['4xl'],\n fontWeight: fontWeights.bold,\n lineHeight: lineHeights['3xl'],\n },\n]\n\nexport const H1 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes['3xl'],\n fontWeight: fontWeights.bold,\n lineHeight: lineHeights['2xl'],\n },\n]\n\nexport const H2 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes['2xl'],\n fontWeight: fontWeights.bold,\n lineHeight: lineHeights.xl,\n },\n]\n\nexport const H3 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes.xl,\n fontWeight: fontWeights.bold,\n lineHeight: lineHeights.lg,\n },\n]\n\nexport const H4 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes.lg,\n fontWeight: fontWeights.bold,\n lineHeight: lineHeights.md,\n },\n]\n\nexport const Body1 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes.md,\n fontWeight: fontWeights.regular,\n lineHeight: lineHeights.md,\n },\n]\n\nexport const Body2 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes.sm,\n fontWeight: fontWeights.regular,\n lineHeight: lineHeights.md,\n },\n]\n\nexport const Caption = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes.xs,\n fontWeight: fontWeights.regular,\n lineHeight: lineHeights.sm,\n },\n]\n","import { Box, BoxProps } from '../Box'\n\nimport * as styles from './Text.styles'\n\ntype TextVariant =\n | 'Display1'\n | 'Display2'\n | 'H1'\n | 'H2'\n | 'H3'\n | 'H4'\n | 'Body1'\n | 'Body2'\n | 'Caption'\n\nexport interface TextProps extends BoxProps {\n variant?: TextVariant\n}\n\nfunction BaseText({ as = 'span', children, css, variant = 'Body1', ...props }: TextProps) {\n return (\n <Box as={as} css={[styles[variant], css]} {...props}>\n {children}\n </Box>\n )\n}\n\nconst textVariantNames: TextVariant[] = [\n 'Display1',\n 'Display2',\n 'H1',\n 'H2',\n 'H3',\n 'H4',\n 'Body1',\n 'Body2',\n 'Caption',\n]\n\nconst textVariantComponents = Object.fromEntries(\n textVariantNames.map((variant) => {\n const asProp = ['H1', 'H2', 'H3', 'H4'].includes(variant)\n ? (variant.toLowerCase() as 'h1' | 'h2' | 'h3' | 'h4')\n : undefined\n const component = (props: TextProps) => (\n <BaseText as={asProp} {...props} variant={variant}>\n {props.children}\n </BaseText>\n )\n\n component.displayName = `Text.${variant}`\n\n return [variant, component]\n })\n)\n\nexport const Text = Object.assign(BaseText, textVariantComponents)\n","export const base = ({ radii, space }) => ({\n borderWidth: 0,\n borderRadius: radii.md,\n padding: `${space[2]} ${space[4]}`,\n})\n\nexport const Primary = ({ colors }) => [\n base,\n {\n backgroundColor: colors.primary.surface,\n color: colors.primary.foreground,\n\n '&:hover': {\n backgroundColor: colors.primary.hover.surface,\n },\n },\n]\n\nexport const Secondary = ({ colors }) => [\n base,\n {\n backgroundColor: colors.secondary.surface,\n color: colors.secondary.foreground,\n\n '&:hover': {\n backgroundColor: colors.secondary.hover.surface,\n },\n },\n]\n\nexport const Link = ({ colors }) => [\n base,\n {\n backgroundColor: colors.transparent,\n color: colors.primary.surface,\n\n '&:hover': {\n color: colors.primary.hover.surface,\n },\n },\n]\n\nexport const Plain = ({ colors }) => [\n base,\n {\n backgroundColor: colors.transparent,\n color: colors.neutral.foreground,\n },\n]\n","import { Box, BoxProps } from '../Box'\nimport { Text } from '../Text'\n\nimport * as styles from './Button.styles'\n\n// TODO: Generate this type from buttonVariantNames\ntype ButtonVariant = 'Primary' | 'Secondary' | 'Link' | 'Plain'\n\nexport interface ButtonProps extends BoxProps {\n title?: string\n variant?: ButtonVariant\n}\n\nfunction BaseButton({ as, children, css = {}, title, variant = 'Primary', ...props }: ButtonProps) {\n return (\n <Box as={as ?? 'button'} css={[styles[variant], css]} {...props}>\n {children}\n {title && <Text.Body2 fontWeight=\"demibold\">{title}</Text.Body2>}\n </Box>\n )\n}\n\nconst buttonVariantNames: ButtonVariant[] = ['Primary', 'Secondary', 'Link', 'Plain']\n\nconst buttonVariantComponents = Object.fromEntries(\n buttonVariantNames.map((variant) => {\n const variantPart = variant.toLocaleLowerCase()\n\n const component = ({ part, ...props }: ButtonProps) => (\n <BaseButton part={[`button-${variantPart}`, part]} {...props} variant={variant}>\n {props.children}\n </BaseButton>\n )\n\n component.displayName = `Text.${variant}`\n\n return [variant, component]\n })\n)\n\nexport const Button = Object.assign(BaseButton, buttonVariantComponents)\n","import * as React from 'react'\nimport { Box, BoxProps } from '../Box'\n\nconst Row = React.forwardRef(({ children, css, ...props }: BoxProps, ref) => {\n return (\n <Box css={[{ display: 'flex', flexDirection: 'row' }, css]} {...props} ref={ref}>\n {children}\n </Box>\n )\n})\n\nconst Column = React.forwardRef(({ children, css, ...props }: BoxProps, ref) => {\n return (\n <Box css={[{ display: 'flex', flexDirection: 'column' }, css]} {...props} ref={ref}>\n {children}\n </Box>\n )\n})\n\nexport const Flex = {\n Column,\n Row,\n}\n","import { createContext } from 'react'\nimport { ThemeProvider } from '@emotion/react'\n\nimport { useThemeOverrides } from '../../hooks/useThemeOverrides'\nimport { theme as themeContract } from '../../shared/theme/themeContract.css'\n\nexport const FrigadeContext = createContext<{ apiKey: string; config: ProviderConfig }>({\n apiKey: '',\n config: {},\n})\n\n// TODO: type theme something like Partial<typeof themeContract>, but allow any value for those keys\nexport interface ProviderProps {\n apiKey: string\n children?: React.ReactNode\n config?: ProviderConfig\n theme?: Record<any, any>\n}\n\ninterface ProviderConfig {\n apiUrl?: string\n userId?: string\n}\n\nexport function Provider({ apiKey, children, config = {}, theme }: ProviderProps) {\n useThemeOverrides(theme)\n\n return (\n <FrigadeContext.Provider value={{ apiKey, config }}>\n <ThemeProvider theme={themeContract}>{children}</ThemeProvider>\n </FrigadeContext.Provider>\n )\n}\n","function getVarName(variable) {\n var matches = variable.match(/^var\\((.*)\\)$/);\n\n if (matches) {\n return matches[1];\n }\n\n return variable;\n}\n\nfunction get(obj, path) {\n var result = obj;\n\n for (var key of path) {\n if (!(key in result)) {\n throw new Error(\"Path \".concat(path.join(' -> '), \" does not exist in object\"));\n }\n\n result = result[key];\n }\n\n return result;\n}\n\nfunction walkObject(obj, fn) {\n var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n var clone = obj.constructor();\n\n for (var key in obj) {\n var _value = obj[key];\n var currentPath = [...path, key];\n\n if (typeof _value === 'string' || typeof _value === 'number' || _value == null) {\n clone[key] = fn(_value, currentPath);\n } else if (typeof _value === 'object' && !Array.isArray(_value)) {\n clone[key] = walkObject(_value, fn, currentPath);\n } else {\n console.warn(\"Skipping invalid key \\\"\".concat(currentPath.join('.'), \"\\\". Should be a string, number, null or object. Received: \\\"\").concat(Array.isArray(_value) ? 'Array' : typeof _value, \"\\\"\"));\n }\n }\n\n return clone;\n}\n\nexport { get, getVarName, walkObject };\n","import { walkObject, get, getVarName } from '@vanilla-extract/private';\n\nfunction assignInlineVars(varsOrContract, tokens) {\n var styles = {};\n\n if (typeof tokens === 'object') {\n var _contract = varsOrContract;\n walkObject(tokens, (value, path) => {\n var varName = get(_contract, path);\n styles[getVarName(varName)] = String(value);\n });\n } else {\n var _vars = varsOrContract;\n\n for (var varName in _vars) {\n styles[getVarName(varName)] = _vars[varName];\n }\n }\n\n Object.defineProperty(styles, 'toString', {\n value: function value() {\n return Object.keys(this).map(key => \"\".concat(key, \":\").concat(this[key])).join(';');\n },\n writable: false\n });\n return styles;\n}\n\nfunction setVar(element, variable, value) {\n element.style.setProperty(getVarName(variable), value);\n}\n\nfunction setElementVars(element, varsOrContract, tokens) {\n if (typeof tokens === 'object') {\n var _contract = varsOrContract;\n walkObject(tokens, (value, path) => {\n setVar(element, get(_contract, path), String(value));\n });\n } else {\n var _vars = varsOrContract;\n\n for (var varName in _vars) {\n setVar(element, varName, _vars[varName]);\n }\n }\n}\n\nexport { assignInlineVars, setElementVars };\n","import { setElementVars } from '@vanilla-extract/dynamic'\nimport { useEffect } from 'react'\n\nimport { mapThemePropToThemeVars } from '../shared/mapThemePropToThemeVars'\n\nexport function useThemeOverrides(themeOverrides = {}, selector = ':root') {\n useEffect(() => {\n const mappedThemeVars = mapThemePropToThemeVars(themeOverrides)\n const root: HTMLElement = document.querySelector(selector)\n setElementVars(root, mappedThemeVars)\n }, [themeOverrides])\n}\n","import { theme } from './theme/themeContract.css'\n\n/*\n Given a theme contract that tells us which CSS variable to use:\n themeContract = {\n colors: {\n blue500: 'var(--fr-blue-500)'\n }\n }\n \n And a theme override prop that tells us which value to assign to that CSS variable:\n theme = {\n colors: {\n blue500: 'teal'\n }\n }\n\n Assign the override to the css variable like so:\n {\n 'var(--fr-blue-500)': 'teal'\n }\n*/\nexport function mapThemePropToThemeVars(themeLevel, contractLevel = theme) {\n return Object.keys(themeLevel).reduce((acc, key) => {\n const currentValue = themeLevel[key]\n\n if (\n typeof currentValue === 'object' &&\n currentValue !== null &&\n !Array.isArray(currentValue) &&\n key in themeLevel\n ) {\n Object.assign(acc, mapThemePropToThemeVars(currentValue, contractLevel[key]))\n } else {\n acc[contractLevel[key]] = themeLevel[key]\n }\n return acc\n }, {})\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport { clsx } from 'clsx'\n\nimport { XMarkIcon } from '@heroicons/react/24/solid'\nimport * as Popover from '@radix-ui/react-popover'\n\nimport { useBoundingClientRect } from '../../hooks/useBoundingClientRect'\nimport { Box } from '../Box'\nimport { Button, ButtonProps } from '../Button'\nimport { Dot } from './Dot'\nimport { Flex } from '../Flex/Flex'\nimport { Media, MediaProps } from '../Media'\nimport { Text, TextProps } from '../Text'\nimport { getDotPosition } from './getDotPosition'\nimport { mapTooltipPropsToRadixProps } from './mapTooltipPropsToPopoverProps'\n\ninterface MergedRadixPopoverProps\n extends Pick<Popover.PopoverProps, 'defaultOpen' | 'modal' | 'onOpenChange' | 'open'>,\n Omit<Popover.PopoverContentProps, 'align' | 'asChild'> {}\nexport interface TooltipProps extends MergedRadixPopoverProps {\n align?: Popover.PopoverContentProps['align'] | 'before' | 'after'\n anchor?: string\n spotlight?: boolean\n style?: React.CSSProperties\n}\n\nexport function Tooltip({\n anchor,\n children,\n css,\n spotlight = false,\n style,\n ...props\n}: TooltipProps) {\n const { node: contentNode, rect: contentRect, ref: contentRef } = useBoundingClientRect()\n const [alignAttr, setAlignAttr] = useState(props.align)\n const [sideAttr, setSideAttr] = useState(props.side)\n\n // Radix will update data attrs to let us know if Popover.Content has collided\n if (contentNode !== null) {\n const currentAlignAttr = contentNode.getAttribute('data-align')\n const currentSideAttr = contentNode.getAttribute('data-side')\n\n if (alignAttr !== currentAlignAttr) {\n setAlignAttr(currentAlignAttr)\n }\n\n if (sideAttr !== currentSideAttr) {\n setSideAttr(currentSideAttr)\n }\n }\n\n const { contentProps, rootProps } = mapTooltipPropsToRadixProps(props, contentRect)\n\n const anchorRef = useRef(null)\n const [anchorElementRef, setAnchorElementRef] = useState(null)\n\n useEffect(() => {\n const anchorQuery = document.querySelector(anchor)\n\n if (anchorQuery != null) {\n anchorRef.current = anchorQuery\n setAnchorElementRef(anchorRef)\n }\n }, [anchor])\n\n if (anchorElementRef == null) return null\n\n const anchorRect = anchorElementRef.current.getBoundingClientRect()\n\n let anchorRadius = '0'\n if (typeof window !== 'undefined') {\n anchorRadius = window.getComputedStyle(anchorElementRef.current).borderRadius\n }\n\n const dotPosition = getDotPosition({ props, alignAttr, sideAttr })\n\n return (\n <Popover.Root defaultOpen={true} {...rootProps}>\n <Popover.Anchor virtualRef={anchorElementRef} />\n <Popover.Portal>\n <div css={css}>\n {spotlight && (\n <Box\n borderRadius={anchorRadius}\n part=\"tooltip-spotlight\"\n position=\"absolute\"\n css={{\n boxShadow: '0 0 0 2000px rgb(0 0 0 / 0.5)',\n height: anchorRect.height,\n left: anchorRect.left,\n top: anchorRect.top,\n width: anchorRect.width,\n }}\n />\n )}\n <Popover.Content asChild {...contentProps} ref={contentRef}>\n <Flex.Column\n backgroundColor=\"white\"\n borderRadius=\"md\"\n p={5}\n part=\"tooltip-content\"\n position=\"relative\"\n css={{\n boxShadow: '0px 4px 20px rgba(0, 0, 0, 0.1)',\n width: '300px',\n ...style,\n }}\n >\n <Dot style={dotPosition} />\n\n {children}\n </Flex.Column>\n </Popover.Content>\n </div>\n </Popover.Portal>\n </Popover.Root>\n )\n}\n\nTooltip.Close = ({ css, ...props }: ButtonProps) => {\n return (\n <Popover.Close aria-label=\"Close\" asChild>\n <Button.Plain\n css={[\n {\n top: 0,\n right: 0,\n },\n css,\n ]}\n part=\"tooltip-close\"\n position=\"absolute\"\n {...props}\n >\n <XMarkIcon height=\"20\" fill=\"currentColor\" />\n </Button.Plain>\n </Popover.Close>\n )\n}\n\nTooltip.Media = ({ src, ...props }: MediaProps) => {\n if (src == null) return null\n\n return (\n <Media\n borderRadius=\"md md 0 0\"\n borderWidth=\"0\"\n css={{\n aspectRatio: '2',\n }}\n margin=\"-5 -5 5\"\n src={src}\n {...props}\n />\n )\n}\n\nTooltip.Primary = ({ onClick, title, ...props }: ButtonProps) => {\n if (title == null) return null\n\n return <Button.Primary title={title} onClick={onClick} {...props} />\n}\n\nTooltip.Progress = ({ children, ...props }: TextProps) => {\n if (children == null) return null\n\n return (\n <Text.Body2 fontWeight=\"demibold\" part=\"progress\" {...props}>\n {children}\n </Text.Body2>\n )\n}\n\nTooltip.Secondary = ({ onClick, title, ...props }: ButtonProps) => {\n if (title == null) return null\n\n return <Button.Secondary title={title} onClick={onClick} {...props} />\n}\n\nTooltip.Subtitle = ({ children, ...props }: TextProps) => {\n if (children == null) return null\n\n return (\n <Text.Body2 part=\"subtitle\" {...props}>\n {children}\n </Text.Body2>\n )\n}\n\nTooltip.Title = ({ children, ...props }: TextProps) => {\n if (children == null) return null\n\n return (\n <Text.Body1 fontWeight=\"bold\" mb={1} part=\"title\" {...props}>\n {children}\n </Text.Body1>\n )\n}\n","import { useCallback, useLayoutEffect, useState } from 'react'\n\nexport function useBoundingClientRect() {\n const initialRect =\n 'DOMRect' in globalThis\n ? new DOMRect()\n : {\n height: 0,\n width: 0,\n x: 0,\n y: 0,\n bottom: 0,\n top: 0,\n right: 0,\n left: 0,\n toJSON: () => {},\n }\n const [rect, setRect] = useState(initialRect)\n const [node, setNode] = useState(null)\n\n const ref = useCallback((node: HTMLElement) => {\n setNode(node)\n }, [])\n\n useLayoutEffect(() => {\n if (!node) return\n\n setRect(node.getBoundingClientRect())\n }, [node])\n\n return {\n node,\n rect,\n ref,\n }\n}\n","import 'src/components/Tooltip/Dot.css.ts.vanilla.css?source=QGtleWZyYW1lcyBfMTZ0ZDQyMCB7CiAgMCUgewogICAgb3BhY2l0eTogMC41OwogICAgdHJhbnNmb3JtOiBzY2FsZSgwLjUpOwogIH0KICA1MCUgewogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgfQogIDEwMCUgewogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgfQp9Ci5fMTZ0ZDQyMSB7CiAgYW5pbWF0aW9uOiAycyBlYXNlLW91dCBpbmZpbml0ZSBfMTZ0ZDQyMDsKfQ==';\nexport var animationPulse = '_16td421';","import { CSSProperties } from 'react'\nimport { Box, BoxProps } from '../Box'\n\nimport { animationPulse } from './Dot.css'\n\nexport interface DotProps extends BoxProps {}\n\nexport function Dot({ style = {}, part = '', ...props }: DotProps) {\n return (\n <Box\n part={`dot-wrapper ${part}`}\n style={{\n height: '48px',\n position: 'absolute',\n width: '48px',\n ...style,\n }}\n {...props}\n >\n <Box\n backgroundColor=\"primary.surface\"\n className={animationPulse}\n part=\"dot-pulse\"\n style={{\n borderRadius: '24px',\n height: '48px',\n left: 0,\n position: 'absolute',\n top: 0,\n transformOrigin: 'center center',\n width: '48px',\n }}\n />\n <Box\n backgroundColor=\"primary.surface\"\n part=\"dot\"\n style={{\n borderRadius: '12px',\n height: '24px',\n left: '12px',\n position: 'absolute',\n top: '12px',\n width: '24px',\n }}\n />\n </Box>\n )\n}\n","import { Box, BoxProps } from '../Box'\n\nexport interface ImageProps extends BoxProps {\n src: string\n}\n\nexport function Image({ part, src, ...props }: ImageProps) {\n return <Box as=\"img\" part={['image', part]} src={src} {...props} />\n}\n","import { Box, BoxProps } from '../Box'\n\nfunction getVideoEmbedSrc(videoUri: string) {\n if (videoUri.includes('youtube')) {\n const videoId = videoUri.split('v=')[1]?.split('&')[0]\n\n return `https://www.youtube.com/embed/${videoId}`\n } else if (videoUri.includes('vimeo')) {\n const videoId = videoUri.split('vimeo.com/')[1]?.split('&')[0]\n\n return `https://player.vimeo.com/video/${videoId}`\n } else if (videoUri.includes('wistia')) {\n const videoId = videoUri.split('wistia.com/medias/')[1]?.split('&')[0]\n\n return `https://fast.wistia.net/embed/iframe/${videoId}`\n }\n\n throw new Error('Could not map videoUri to a known provider (Youtube, Vimeo, Wistia).')\n}\n\nexport interface VideoProps extends BoxProps {\n src: string\n}\n\nexport function Video({ part, src, ...props }: VideoProps) {\n const videoEmbedSrc = getVideoEmbedSrc(src)\n\n // TODO: Add play button overtop?\n return (\n <Box\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n as=\"iframe\"\n backgroundColor=\"gray100\"\n borderWidth={0}\n part={['video', part]}\n src={videoEmbedSrc}\n {...props}\n ></Box>\n )\n}\n","import { Image } from './Image'\nimport { Video } from './Video'\nimport { BoxProps } from '../Box'\n\nexport interface MediaProps extends BoxProps {\n src: string\n type: 'image' | 'video'\n}\n\nexport function Media({ src, type, ...props }: MediaProps) {\n const Component = type === 'video' ? Video : Image\n\n return <Component src={src} {...props} />\n}\n","export function getDotPosition({ props, alignAttr, sideAttr }) {\n const currentSide = sideAttr ?? 'bottom'\n const dotProps = {}\n\n // Radix's collision system isn't aware of our custom before|after align\n const currentAlign = (() => {\n if (['after', 'before'].includes(props.align)) {\n if (alignAttr == 'start') {\n return 'before'\n } else if (alignAttr == 'end') {\n return 'after'\n }\n }\n\n return props.align\n })()\n\n const dotOffset = '-24px'\n\n const oppositeSides = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right',\n }\n\n /* \n Rules:\n - Dot is opposite to side prop (e.g. side=left -> dot=right)\n - align=before|end -> Dot goes to highest extent (right/bottom) of align-axis\n - align=after|start -> Dot goes to lowest extent (left/top) of align-axis\n - align=center -> Dot goes to the center\n */\n\n dotProps[oppositeSides[currentSide]] = dotOffset\n\n if (['before', 'end'].includes(currentAlign)) {\n if (['top', 'bottom'].includes(currentSide)) {\n dotProps['right'] = dotOffset\n } else {\n dotProps['bottom'] = dotOffset\n }\n } else if (['after', 'start'].includes(currentAlign)) {\n if (['top', 'bottom'].includes(currentSide)) {\n dotProps['left'] = dotOffset\n } else {\n dotProps['top'] = dotOffset\n }\n } else {\n // The only option left is align=center\n if (['top', 'bottom'].includes(currentSide)) {\n dotProps['left'] = `calc(50% + ${dotOffset})`\n } else {\n dotProps['top'] = `calc(50% + ${dotOffset})`\n }\n }\n\n return dotProps\n}\n","import { TooltipProps } from '.'\n\nconst RADIX_PROPS = {\n content: [\n 'align',\n 'alignOffset',\n 'arrowPadding',\n 'avoidCollisions',\n 'collisionBoundary',\n 'collisionPadding',\n 'forceMount',\n 'hideWhenDetached',\n 'onCloseAutoFocus',\n 'onEscapeKeyDown',\n 'onFocusOutside',\n 'onInteractOutside',\n 'onOpenAutoFocus',\n 'onPointerDownOutside',\n 'side',\n 'sideOffset',\n 'sticky',\n ],\n root: ['defaultOpen', 'modal', 'onOpenChange', 'open'],\n}\n\nexport function mapTooltipPropsToRadixProps(props: TooltipProps, contentRect: DOMRect) {\n const contentProps = Object.fromEntries(\n RADIX_PROPS.content\n .map((propName) => [propName, props[propName]])\n .filter((propEntry) => propEntry[1] !== undefined)\n )\n const rootProps = Object.fromEntries(\n RADIX_PROPS.root\n .map((propName) => [propName, props[propName]])\n .filter((propEntry) => propEntry[1] !== undefined)\n )\n\n /*\n Here we're extending Popover.Content's align prop to accept 'before' and\n 'after' in addition to its existing values.\n\n TL;DR:\n 1. Use existing alignOffset prop to push Content to be before/after the\n corresponding edge of the element it's attached to.\n 2. Add a CSS margin to patch alignOffset back onto Content, as Popover\n has a bug that prevents alignOffset from extending past the edge of\n its Trigger/Anchor.\n\n SEE: https://github.com/radix-ui/primitives/issues/2457\n */\n if (['before', 'after'].includes(contentProps['align'])) {\n const mapToOriginalAlignValues = {\n after: 'end',\n before: 'start',\n }\n\n const mapAlignOffsetToMargin = (align, side) => {\n /*\n Translate alignOffset to CSS margin based on align and side props:\n bottom || top\n after: marginLeft\n before: marginRight\n left || right\n after: marginTop\n before: marginBottom\n */\n if (['top', 'bottom'].includes(side)) {\n if (align == 'after') {\n return 'marginLeft'\n } else {\n return 'marginRight'\n }\n } else {\n if (align == 'after') {\n return 'marginTop'\n } else {\n return 'marginBottom'\n }\n }\n }\n\n const originalOffset = contentProps['alignOffset'] ?? 0\n const originalStyleProp = contentProps['style'] ?? {}\n const currentSide = contentProps['side'] ?? 'bottom'\n const currentAlign = contentProps['align']\n\n // Copy alignOffset value to CSS margin\n contentProps['style'] = {\n ...originalStyleProp,\n [mapAlignOffsetToMargin(currentAlign, currentSide)]: originalOffset,\n }\n\n const lengthOfCurrentSide = ['top', 'bottom'].includes(currentSide)\n ? contentRect.width\n : contentRect.height\n\n // Change alignOffset to be at the end of the positioned side\n contentProps['alignOffset'] = (lengthOfCurrentSide + originalOffset) * -1\n\n // Flip align prop back to valid Radix option\n contentProps['align'] = mapToOriginalAlignValues[currentAlign]\n }\n\n return {\n contentProps,\n rootProps,\n }\n}\n","import { Frigade, Flow } from '@frigade/js'\nimport { useContext, useState } from 'react'\n\nimport { FrigadeContext } from '../components/Provider'\n\nexport function useFlow(flowId: string) {\n const [flow, setFlow] = useState<Flow>(null)\n const { apiKey, config } = useContext(FrigadeContext)\n\n async function fetchFlow() {\n const frigade = await new Frigade(apiKey, {\n apiUrl: config.apiUrl,\n userId: config.userId,\n })\n\n const flowResponse: Flow = await frigade.getFlow(flowId)\n\n setFlow(flowResponse)\n }\n\n if (flow === null) {\n fetchFlow()\n }\n\n // TEMP: Expose a way to manually refresh the flow.\n // TODO: Automatically update state when something like step.complete() is called\n return { flow, fetchFlow }\n}\n","import { useFlow } from '../../hooks/useFlow'\n\nimport { Flex } from '../Flex/Flex'\nimport { Tooltip, TooltipProps } from '../Tooltip'\n\nexport interface TourProps extends TooltipProps {\n flowId: string\n}\n\nexport function Tour({ flowId, ...props }: TourProps) {\n const { flow, fetchFlow } = useFlow(flowId)\n\n if (flow == null || flow?.isCompleted || flow?.isSkipped) {\n return null\n }\n\n flow.start()\n\n const step = flow.getCurrentStep()\n\n step?.start()\n\n async function handleDismiss() {\n await flow.skip()\n\n // TEMP: Manually refreshing flow data until useFlow can handle it internally\n fetchFlow()\n }\n\n async function handlePrimary() {\n await step.complete()\n\n // TEMP: Manually refreshing flow data until useFlow can handle it internally\n fetchFlow()\n }\n\n const handleSecondary = handlePrimary\n\n return (\n <Tooltip\n align=\"after\"\n anchor={step.selector as string}\n onOpenAutoFocus={(e) => e.preventDefault()}\n onPointerDownOutside={(e) => e.preventDefault()}\n {...props}\n >\n <Tooltip.Close onClick={handleDismiss} />\n\n <Tooltip.Media\n src={step.videoUri ?? step.imageUri}\n type={step.videoUri ? 'video' : 'image'}\n />\n\n <Tooltip.Title>{step.title}</Tooltip.Title>\n <Tooltip.Subtitle>{step.subtitle}</Tooltip.Subtitle>\n\n <Flex.Row pt={4} alignItems=\"center\" justifyContent=\"space-between\">\n <Tooltip.Progress>\n {`${flow.getNumberOfCompletedSteps()}/${flow.steps.size}`}\n </Tooltip.Progress>\n\n <Flex.Row gap={3}>\n <Tooltip.Secondary title={step.secondaryButtonTitle} onClick={handleSecondary} />\n <Tooltip.Primary title={step.primaryButtonTitle} onClick={handlePrimary} />\n </Flex.Row>\n </Flex.Row>\n </Tooltip>\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/components/Box/index.tsx","../src/shared/tokens/scalarTokens.ts","../src/shared/tokens/semanticColors.ts","../src/shared/tokens/index.ts","../src/shared/flattenObject.ts","../src/shared/theme/index.ts","../src/components/Box/styleProps.ts","../src/components/Box/stylePropsToCss.ts","../src/components/Text/Text.styles.ts","../src/components/Text/index.tsx","../src/components/Button/Button.styles.ts","../src/components/Button/index.tsx","../src/components/Flex/Flex.tsx","../src/components/Provider/index.tsx","../src/components/Tooltip/index.tsx","../src/hooks/useBoundingClientRect.ts","../src/components/Tooltip/Dot.tsx","../src/components/Media/Image.tsx","../src/components/Media/Video.tsx","../src/components/Media/Media.tsx","../src/components/Tooltip/getDotPosition.ts","../src/components/Tooltip/mapTooltipPropsToPopoverProps.ts","../src/hooks/useFlow.ts","../src/components/Tour/index.tsx"],"names":["React","clsx","SPACE_UNIT","spaceValue","key","spaceKeys","spaceScale","palette","scalarTokens","__spreadValues","colorVar","colorName","semanticColors","tokens","__spreadProps","flattenObject","obj","path","separator","acc","k","currentPath","currentValue","createThemeVariables","mapTokensToThemeVariables","newObj","themeVariables","theme","colorTokens","styleProps","stylePropShorthands","prepValue","value","v","stylePropsMap","propName","stylePropShorthandsMap","shorthand","targetProps","stylePropsToCss","props","unmatchedProps","cssFromProps","propValue","matchedShorthand","styleProp","splitPropValues","_a","jsx","prefixPart","part","processPart","p","BoxWithRef","ref","_b","as","children","className","css","__objRest","Component","processedPart","classNameWithPart","Box","Text_styles_exports","__export","Body1","Body2","Caption","Display1","Display2","H1","H2","H3","H4","base","fontFamilies","fontSizes","fontWeights","lineHeights","BaseText","variant","textVariantNames","textVariantComponents","asProp","component","Text","Button_styles_exports","Link","Plain","Primary","Secondary","radii","space","colors","jsxs","BaseButton","title","buttonVariantNames","buttonVariantComponents","variantPart","Button","Row","Column","Flex","createContext","Global","ThemeProvider","FrigadeContext","Provider","apiKey","config","themeOverrides","useEffect","useRef","useState","XMarkIcon","Popover","useCallback","useLayoutEffect","useBoundingClientRect","initialRect","rect","setRect","node","setNode","keyframes","pulse","Dot","style","Image","src","getVideoEmbedSrc","videoUri","_c","Video","videoEmbedSrc","Media","type","getDotPosition","alignAttr","sideAttr","currentSide","dotProps","getCurrentAlign","dotOffset","oppositeSides","currentAlign","RADIX_PROPS","mapTooltipPropsToRadixProps","contentRect","_d","_e","contentProps","propEntry","rootProps","mapToOriginalAlignValues","mapAlignOffsetToMargin","align","side","originalOffset","originalStyleProp","lengthOfCurrentSide","Tooltip","anchor","spotlight","contentNode","contentRef","setAlignAttr","setSideAttr","currentAlignAttr","currentSideAttr","anchorRef","anchorElementRef","setAnchorElementRef","anchorQuery","anchorRect","anchorRadius","dotPosition","onClick","Frigade","useContext","useFlow","flowId","flow","setFlow","fetchFlow","__async","filteredConfig","flowResponse","Tour","step","handleDismiss","handlePrimary","handleSecondary","e"],"mappings":"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EAAM,MACpB,cAAeA,EAAM,MACrB,YAAaA,EAAM,MAEnB,aAAc,CACZ,SACA,QACA,MACA,aACA,WACA,SACA,WACA,iBACA,gBACA,gBACA,eACA,eACA,UACA,cACA,gBACA,UACA,UACA,SACA,eACA,OACF,EAEA,WAAY,CACV,SACA,UACA,SACA,QACA,MACA,aACA,WACA,aACA,WACA,WACA,iBACA,gBACA,cACA,gBACA,UACA,UACA,SACA,eACA,OACF,EAEA,UAAW,CACT,OACA,SACA,SACA,QACA,MACA,aACA,WACA,aACA,WACA,WACA,iBACA,gBACA,UACA,cACA,gBACA,UACA,UACA,SACA,eACA,OACF,EAEA,cAAe,CACb,MACA,cACA,SACA,iBACA,UACA,UACA,SACA,eACA,OACF,EAEA,SAAU,CACR,SACA,OACA,eACA,UACA,UACA,SACA,eACA,OACF,EAEA,eAAgB,CACd,SACA,QACA,MACA,aACA,WACA,OACA,QACA,SACA,gBACA,eACA,eACA,UACA,cACA,gBACA,UACA,UACA,SACA,eACA,OACF,EAEA,aAAc,CACZ,SACA,UACA,SACA,QACA,MACA,aACA,WACA,aACA,WACA,OACA,QACA,WACA,iBACA,gBACA,cACA,gBACA,eACA,cACA,gBACA,UACA,UACA,SACA,eACA,OACF,EAEA,UAAW,CAAC,aAAc,cAAe,UAAW,UAAW,SAAU,eAAgB,OAAO,EAEhG,SAAU,CACR,SACA,WACA,WACA,QACA,SACA,UACA,UACA,SACA,eACA,OACF,EAEA,QAAS,CACP,QACA,aACA,aACA,kBACA,aACA,WACA,OACA,YACA,OACA,UACA,UACA,SACA,cACA,cACA,mBACA,cACA,eACA,cACA,cACA,YACA,OACA,SACA,eACA,QACA,kBACA,qBACA,qBACA,YACA,aACA,qBACA,eACA,gBACA,OACF,CACF,EAEaG,GAAsB,CACjC,EAAG,CAAC,QAAQ,EACZ,GAAI,CAAC,WAAW,EAChB,GAAI,CAAC,aAAa,EAClB,GAAI,CAAC,cAAc,EACnB,GAAI,CAAC,YAAY,EACjB,GAAI,CAAC,a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","sourcesContent":["import * as React from 'react'\nimport { clsx } from 'clsx'\n\nimport { stylePropsToCss } from './stylePropsToCss'\n\nfunction prefixPart(part: string | undefined) {\n return part ? `fr-${part}` : part\n}\n\nfunction processPart(part: string | string[] | undefined) {\n if (!part) return part\n\n return Array.isArray(part) ? part.map((p) => prefixPart(p)).join(' ') : prefixPart(part)\n}\n\nexport type BoxProps<T extends React.ElementType = React.ElementType> = {\n as?: T\n part?: string | string[]\n} & React.ComponentPropsWithRef<T>\n\nfunction BoxWithRef<T extends React.ElementType = React.ElementType>(\n { as, children, className, css, part, ...props }: BoxProps<T>,\n ref: React.ForwardedRef<T>\n) {\n const Component = as ?? 'div'\n\n const { cssFromProps, unmatchedProps } = stylePropsToCss(props)\n\n const processedPart = processPart(part)\n const classNameWithPart = className || processedPart ? clsx(className, processedPart) : undefined\n\n return (\n // @ts-ignore: TODO: ref types are yet again complaining\n <Component\n className={classNameWithPart}\n css={[{ boxSizing: 'border-box', ...cssFromProps, ...css }]}\n {...unmatchedProps}\n ref={ref}\n >\n {children}\n </Component>\n )\n}\n\nexport const Box = React.forwardRef(BoxWithRef)\n","const SPACE_VALUE = 4\nconst SPACE_UNIT = 'px'\n\nconst spaceValue = (key: SpaceKeys[any]) =>\n typeof key === 'number' ? `${SPACE_VALUE * key}${SPACE_UNIT}` : key\n\nconst spaceKeys = [\n -20,\n -19,\n -18,\n -17,\n -16,\n -15,\n -14,\n -13,\n -12,\n -11,\n -10,\n -9,\n -8,\n -7,\n -6,\n -5,\n -4,\n -3,\n -2,\n -1,\n -0.5,\n 0,\n 0.5,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15,\n 16,\n 17,\n 18,\n 19,\n 20,\n 'auto',\n] as const\n\ntype SpaceKeys = typeof spaceKeys\n\ntype SpaceScale = {\n [K in SpaceKeys[any]]: string\n}\nconst spaceScale = Object.fromEntries(spaceKeys.map((key) => [key, spaceValue(key)])) as SpaceScale\n\nexport const palette = {\n black: '#000000',\n gray100: '#14161A',\n gray200: '#181B20',\n gray300: '#1F2329',\n gray400: '#2E343D',\n gray500: '#4C5766',\n gray600: '#5A6472',\n gray700: '#C5CBD3',\n gray800: '#E2E5E9',\n gray900: '#F1F2F4',\n white: '#ffffff',\n blue400: '#015AC6',\n blue500: '#0171F8',\n blue800: '#DBECFF',\n blue900: '#F5F9FF',\n green400: '#009E37',\n green500: '#00D149',\n green800: '#DBFFE8',\n transparent: '#FFFFFF00',\n\n // This color isn't in the Design System yet, but it's used in old components\n red500: '#c00000',\n}\n\n// Scalar = Tokens with literal values\nexport const scalarTokens = {\n borders: {\n md: '1px solid',\n },\n borderWidths: {\n 0: '0',\n md: '1px',\n },\n\n colors: {\n ...palette,\n },\n fontFamilies: {\n default: 'TT Interphases Pro, sans-serif',\n },\n fontSizes: {\n xs: '12px',\n sm: '14px',\n md: '16px',\n lg: '18px',\n xl: '20px',\n '2xl': '24px',\n '3xl': '30px',\n '4xl': '36px',\n '5xl': '48px',\n },\n fontWeights: {\n regular: '400',\n demibold: '600',\n bold: '700',\n },\n letterSpacings: {\n md: '0.02em',\n },\n lineHeights: {\n xs: '18px',\n sm: '22px',\n md: '24px',\n lg: '26px',\n xl: '30px',\n '2xl': '38px',\n '3xl': '46px',\n '4xl': '60px',\n },\n radii: {\n md: '8px',\n lg: '20px',\n round: '50%',\n },\n shadows: {\n md: '0px 4px 20px rgba(0, 0, 0, 0.1)',\n },\n space: spaceScale,\n}\n","const colorVar = (colorName) => `var(--fr-colors-${colorName})`\n\n// Semantic = Tokens that reference Scalars & contextualize them according to how they're used\nexport const semanticColors = {\n neutral: {\n background: colorVar('white'),\n border: colorVar('gray900'),\n foreground: colorVar('black'),\n surface: colorVar('gray700'),\n\n active: {\n background: colorVar('white'),\n border: colorVar('gray900'),\n foreground: colorVar('black'),\n surface: colorVar('gray700'),\n },\n focus: {\n background: colorVar('white'),\n border: colorVar('gray900'),\n foreground: colorVar('black'),\n surface: colorVar('gray700'),\n },\n hover: {\n background: colorVar('white'),\n border: colorVar('gray900'),\n foreground: colorVar('black'),\n surface: colorVar('gray700'),\n },\n },\n\n primary: {\n background: colorVar('blue500'),\n border: colorVar('blue500'),\n foreground: colorVar('white'),\n surface: colorVar('blue500'),\n\n active: {\n background: colorVar('blue400'),\n border: colorVar('blue400'),\n foreground: colorVar('white'),\n surface: colorVar('blue400'),\n },\n focus: {\n background: colorVar('blue500'),\n border: colorVar('blue500'),\n foreground: colorVar('white'),\n surface: colorVar('blue500'),\n },\n hover: {\n background: colorVar('blue400'),\n border: colorVar('blue400'),\n foreground: colorVar('white'),\n surface: colorVar('blue400'),\n },\n },\n\n secondary: {\n background: colorVar('gray900'),\n border: colorVar('gray900'),\n foreground: colorVar('black'),\n surface: colorVar('gray900'),\n\n active: {\n background: colorVar('gray800'),\n border: colorVar('gray800'),\n foreground: colorVar('black'),\n surface: colorVar('gray800'),\n },\n focus: {\n background: colorVar('gray900'),\n border: colorVar('gray900'),\n foreground: colorVar('black'),\n surface: colorVar('gray900'),\n },\n hover: {\n background: colorVar('gray800'),\n border: colorVar('gray800'),\n foreground: colorVar('black'),\n surface: colorVar('gray800'),\n },\n },\n}\n","import { scalarTokens } from './scalarTokens'\nimport { semanticColors } from './semanticColors'\n\nexport { scalarTokens, semanticColors }\n\n// Package up everything everywhere all at once for convenience\nexport const tokens = {\n ...scalarTokens,\n colors: {\n ...scalarTokens.colors,\n ...semanticColors,\n },\n}\n","export function flattenObject(obj: Record<any, any>, path = '', separator = '.') {\n return Object.keys(obj).reduce((acc, k) => {\n const prefix = path.length ? `${path}${separator}` : ''\n const currentPath = `${prefix}${k}`\n const currentValue = obj[k]\n\n if (typeof currentValue === 'object' && currentValue !== null && !Array.isArray(currentValue)) {\n Object.assign(acc, flattenObject(currentValue, currentPath, separator))\n } else {\n acc[currentPath] = currentValue\n }\n\n return acc\n }, {})\n}\n","import { tokens } from '../tokens'\nimport { flattenObject } from '../flattenObject'\n\n// Transform tokens to a flat list of CSS variables and values to inject into the page\n// IN: { colors: { black: '#000' } }, OUT: { '--fr-colors-black': '#000' }\nexport function createThemeVariables(tokens) {\n return flattenObject(tokens, '--fr', '-')\n}\n\n// Swap token values out and replace them with the CSS variables we defined\n// IN: { colors: { black: '#000' } }, OUT: { colors: { black: 'var(--fr-colors-black)' } }\nfunction mapTokensToThemeVariables(obj, path = '--fr') {\n const newObj: Record<string, any> = {}\n\n Object.keys(obj).forEach((key) => {\n const currentValue = obj[key]\n\n if (typeof currentValue === 'object' && currentValue !== null && !Array.isArray(currentValue)) {\n newObj[key] = mapTokensToThemeVariables(currentValue, `${path}-${key}`)\n } else {\n newObj[key] = `var(${path}-${key})`\n }\n })\n\n return newObj\n}\n\nexport const themeVariables = createThemeVariables(tokens)\n\nexport const theme = mapTokensToThemeVariables(tokens)\n","import { theme } from '../../shared/theme'\nimport { flattenObject } from '../../shared/flattenObject'\n\nconst colorTokens: Record<string, unknown> = flattenObject(theme.colors)\n\n/*\n TODO:\n - top / right / bottom / left\n*/\n\nexport const styleProps = {\n color: colorTokens,\n backgroundColor: colorTokens,\n borderColor: colorTokens,\n border: theme.borders,\n borderRadius: theme.radii,\n borderWidth: theme.borderWidths,\n\n fontFamily: theme.fontFamilies,\n fontSize: theme.fontSizes,\n fontWeight: theme.fontWeights,\n\n gap: theme.space,\n\n lineHeight: theme.lineHeights,\n\n margin: theme.space,\n marginTop: theme.space,\n marginRight: theme.space,\n marginBottom: theme.space,\n marginLeft: theme.space,\n\n padding: theme.space,\n paddingTop: theme.space,\n paddingRight: theme.space,\n paddingBottom: theme.space,\n paddingLeft: theme.space,\n\n alignContent: [\n 'center',\n 'start',\n 'end',\n 'flex-start',\n 'flex-end',\n 'normal',\n 'baseline',\n 'first baseline',\n 'last baseline',\n 'space-between',\n 'space-around',\n 'space-evenly',\n 'stretch',\n 'safe center',\n 'unsafe center',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n alignItems: [\n 'normal',\n 'stretch',\n 'center',\n 'start',\n 'end',\n 'flex-start',\n 'flex-end',\n 'self-start',\n 'self-end',\n 'baseline',\n 'first baseline',\n 'last baseline',\n 'safe center',\n 'unsafe center',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n alignSelf: [\n 'auto',\n 'normal',\n 'center',\n 'start',\n 'end',\n 'self-start',\n 'self-end',\n 'flex-start',\n 'flex-end',\n 'baseline',\n 'first baseline',\n 'last baseline',\n 'stretch',\n 'safe center',\n 'unsafe center',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n flexDirection: [\n 'row',\n 'row-reverse',\n 'column',\n 'column-reverse',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n flexWrap: [\n 'nowrap',\n 'wrap',\n 'wrap-reverse',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n justifyContent: [\n 'center',\n 'start',\n 'end',\n 'flex-start',\n 'flex-end',\n 'left',\n 'right',\n 'normal',\n 'space-between',\n 'space-around',\n 'space-evenly',\n 'stretch',\n 'safe center',\n 'unsafe center',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n justifyItems: [\n 'normal',\n 'stretch',\n 'center',\n 'start',\n 'end',\n 'flex-start',\n 'flex-end',\n 'self-start',\n 'self-end',\n 'left',\n 'right',\n 'baseline',\n 'first baseline',\n 'last baseline',\n 'safe center',\n 'unsafe center',\n 'legacy right',\n 'legacy left',\n 'legacy center',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n boxSizing: ['border-box', 'content-box', 'inherit', 'initial', 'revert', 'revert-layer', 'unset'],\n\n position: [\n 'static',\n 'relative',\n 'absolute',\n 'fixed',\n 'sticky',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n display: [\n 'block',\n 'block flex',\n 'block flow',\n 'block flow-root',\n 'block grid',\n 'contents',\n 'flex',\n 'flow-root',\n 'grid',\n 'inherit',\n 'initial',\n 'inline',\n 'inline flex',\n 'inline flow',\n 'inline flow-root',\n 'inline grid',\n 'inline-block',\n 'inline-flex',\n 'inline-grid',\n 'list-item',\n 'none',\n 'revert',\n 'revert-layer',\n 'table',\n 'table-row-group',\n 'table-header-group',\n 'table-footer-group',\n 'table-row',\n 'table-cell',\n 'table-column-group',\n 'table-column',\n 'table-caption',\n 'unset',\n ],\n}\n\nexport const stylePropShorthands = {\n m: ['margin'],\n mt: ['marginTop'],\n mr: ['marginRight'],\n mb: ['marginBottom'],\n ml: ['marginLeft'],\n mx: ['marginLeft', 'marginRight'],\n my: ['marginTop', 'marginBottom'],\n\n p: ['padding'],\n pt: ['paddingTop'],\n pr: ['paddingRight'],\n pb: ['paddingBottom'],\n pl: ['paddingLeft'],\n px: ['paddingLeft', 'paddingRight'],\n py: ['paddingTop', 'paddingBottom'],\n}\n","import { styleProps, stylePropShorthands } from './styleProps'\n\nfunction prepValue(value) {\n if (Array.isArray(value)) {\n return new Map(value.map((v) => [v, v]))\n } else if (typeof value === 'object' && value !== null) {\n return new Map(Object.entries(value))\n } else if (['string', 'number'].includes(typeof value)) {\n return new Map([value, value])\n }\n\n throw new Error('Invalid entry in styleProps')\n}\n\nconst stylePropsMap = new Map(\n Object.entries(styleProps).map(([propName, value]) => {\n return [propName, prepValue(value)]\n })\n)\n\nconst stylePropShorthandsMap = new Map(\n Object.entries(stylePropShorthands).map(([shorthand, targetProps]) => {\n return [shorthand, new Set(targetProps)]\n })\n)\n\nexport function stylePropsToCss(props: Record<any, any>) {\n const unmatchedProps = Object.assign({}, props)\n const cssFromProps = {}\n\n // Convert shorthand styleProps to full versions\n Object.entries(unmatchedProps).forEach(([propName, propValue]) => {\n const matchedShorthand = stylePropShorthandsMap.get(propName)\n if (matchedShorthand != null) {\n matchedShorthand.forEach((propName) => {\n unmatchedProps[propName] = propValue\n })\n\n delete unmatchedProps[propName]\n }\n })\n\n // Convert styleProps to style object\n Object.entries(unmatchedProps).forEach(([propName, propValue]) => {\n const styleProp = stylePropsMap.get(propName)\n if (styleProp != null) {\n if (typeof propValue === 'string' && propValue.indexOf(' ') > -1) {\n // Split space-separated values out and process them individually\n const splitPropValues = propValue.split(' ')\n\n cssFromProps[propName] = splitPropValues\n .map((v) => styleProp.get(v.toString()) ?? v)\n .join(' ')\n\n delete unmatchedProps[propName]\n } else if (styleProp.has(propValue.toString())) {\n cssFromProps[propName] = styleProp.get(propValue.toString())\n delete unmatchedProps[propName]\n }\n }\n })\n\n return { cssFromProps, unmatchedProps }\n}\n","export const base = ({ fontFamilies }) => ({\n fontFamily: fontFamilies.default,\n margin: 0,\n})\n\nexport const Display1 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes['5xl'],\n fontWeight: fontWeights.bold,\n lineHeight: lineHeights['4xl'],\n },\n]\n\nexport const Display2 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes['4xl'],\n fontWeight: fontWeights.bold,\n lineHeight: lineHeights['3xl'],\n },\n]\n\nexport const H1 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes['3xl'],\n fontWeight: fontWeights.bold,\n lineHeight: lineHeights['2xl'],\n },\n]\n\nexport const H2 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes['2xl'],\n fontWeight: fontWeights.bold,\n lineHeight: lineHeights.xl,\n },\n]\n\nexport const H3 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes.xl,\n fontWeight: fontWeights.bold,\n lineHeight: lineHeights.lg,\n },\n]\n\nexport const H4 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes.lg,\n fontWeight: fontWeights.bold,\n lineHeight: lineHeights.md,\n },\n]\n\nexport const Body1 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes.md,\n fontWeight: fontWeights.regular,\n lineHeight: lineHeights.md,\n },\n]\n\nexport const Body2 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes.sm,\n fontWeight: fontWeights.regular,\n lineHeight: lineHeights.md,\n },\n]\n\nexport const Caption = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes.xs,\n fontWeight: fontWeights.regular,\n lineHeight: lineHeights.sm,\n },\n]\n","import { Box, BoxProps } from '../Box'\n\nimport * as styles from './Text.styles'\n\ntype TextVariant =\n | 'Display1'\n | 'Display2'\n | 'H1'\n | 'H2'\n | 'H3'\n | 'H4'\n | 'Body1'\n | 'Body2'\n | 'Caption'\n\nexport interface TextProps extends BoxProps {\n variant?: TextVariant\n}\n\nfunction BaseText({ as = 'span', children, css, variant = 'Body1', ...props }: TextProps) {\n return (\n <Box as={as} css={[styles[variant], css]} {...props}>\n {children}\n </Box>\n )\n}\n\nconst textVariantNames: TextVariant[] = [\n 'Display1',\n 'Display2',\n 'H1',\n 'H2',\n 'H3',\n 'H4',\n 'Body1',\n 'Body2',\n 'Caption',\n]\n\nconst textVariantComponents = Object.fromEntries(\n textVariantNames.map((variant) => {\n const asProp = ['H1', 'H2', 'H3', 'H4'].includes(variant)\n ? (variant.toLowerCase() as 'h1' | 'h2' | 'h3' | 'h4')\n : undefined\n const component = (props: TextProps) => (\n <BaseText as={asProp} {...props} variant={variant}>\n {props.children}\n </BaseText>\n )\n\n component.displayName = `Text.${variant}`\n\n return [variant, component]\n })\n)\n\nexport const Text = Object.assign(BaseText, textVariantComponents)\n","export const base = ({ radii, space }) => ({\n borderWidth: 0,\n borderRadius: radii.md,\n padding: `${space[2]} ${space[4]}`,\n})\n\nexport const Primary = ({ colors }) => [\n base,\n {\n backgroundColor: colors.primary.surface,\n color: colors.primary.foreground,\n\n '&:hover': {\n backgroundColor: colors.primary.hover.surface,\n },\n },\n]\n\nexport const Secondary = ({ colors }) => [\n base,\n {\n backgroundColor: colors.secondary.surface,\n color: colors.secondary.foreground,\n\n '&:hover': {\n backgroundColor: colors.secondary.hover.surface,\n },\n },\n]\n\nexport const Link = ({ colors }) => [\n base,\n {\n backgroundColor: colors.transparent,\n color: colors.primary.surface,\n\n '&:hover': {\n color: colors.primary.hover.surface,\n },\n },\n]\n\nexport const Plain = ({ colors }) => [\n base,\n {\n backgroundColor: colors.transparent,\n color: colors.neutral.foreground,\n },\n]\n","import { Box, BoxProps } from '../Box'\nimport { Text } from '../Text'\n\nimport * as styles from './Button.styles'\n\n// TODO: Generate this type from buttonVariantNames\ntype ButtonVariant = 'Primary' | 'Secondary' | 'Link' | 'Plain'\n\nexport interface ButtonProps extends BoxProps {\n title?: string\n variant?: ButtonVariant\n}\n\nfunction BaseButton({ as, children, css = {}, title, variant = 'Primary', ...props }: ButtonProps) {\n return (\n <Box as={as ?? 'button'} css={[styles[variant], css]} {...props}>\n {children}\n {title && <Text.Body2 fontWeight=\"demibold\">{title}</Text.Body2>}\n </Box>\n )\n}\n\nconst buttonVariantNames: ButtonVariant[] = ['Primary', 'Secondary', 'Link', 'Plain']\n\nconst buttonVariantComponents = Object.fromEntries(\n buttonVariantNames.map((variant) => {\n const variantPart = variant.toLocaleLowerCase()\n\n const component = ({ part, ...props }: ButtonProps) => (\n <BaseButton part={[`button-${variantPart}`, part]} {...props} variant={variant}>\n {props.children}\n </BaseButton>\n )\n\n component.displayName = `Text.${variant}`\n\n return [variant, component]\n })\n)\n\nexport const Button = Object.assign(BaseButton, buttonVariantComponents)\n","import * as React from 'react'\nimport { Box, BoxProps } from '../Box'\n\nconst Row = React.forwardRef(({ children, css, ...props }: BoxProps, ref) => {\n return (\n <Box css={[{ display: 'flex', flexDirection: 'row' }, css]} {...props} ref={ref}>\n {children}\n </Box>\n )\n})\n\nconst Column = React.forwardRef(({ children, css, ...props }: BoxProps, ref) => {\n return (\n <Box css={[{ display: 'flex', flexDirection: 'column' }, css]} {...props} ref={ref}>\n {children}\n </Box>\n )\n})\n\nexport const Flex = {\n Column,\n Row,\n}\n","import { createContext } from 'react'\nimport { Global, ThemeProvider } from '@emotion/react'\n\nimport { createThemeVariables, theme as themeTokens, themeVariables } from '../../shared/theme'\n\nexport const FrigadeContext = createContext<{ apiKey: string; config: ProviderConfig }>({\n apiKey: '',\n config: {},\n})\n\n// TODO: type theme something like Partial<typeof themeContract>, but allow any value for those keys\nexport interface ProviderProps {\n apiKey: string\n children?: React.ReactNode\n config?: ProviderConfig\n theme?: Record<any, any>\n}\n\ninterface ProviderConfig {\n apiUrl?: string\n userId?: string\n}\n\nexport function Provider({ apiKey, children, config = {}, theme }: ProviderProps) {\n const themeOverrides = theme ? createThemeVariables(theme) : {}\n\n return (\n <FrigadeContext.Provider value={{ apiKey, config }}>\n <Global styles={{ ':root': { ...themeVariables, ...themeOverrides } }} />\n <ThemeProvider theme={themeTokens}>{children}</ThemeProvider>\n </FrigadeContext.Provider>\n )\n}\n","import React, { useEffect, useRef, useState } from 'react'\n\nimport { XMarkIcon } from '@heroicons/react/24/solid'\nimport * as Popover from '@radix-ui/react-popover'\n\nimport { useBoundingClientRect } from '../../hooks/useBoundingClientRect'\nimport { Box } from '../Box'\nimport { Button, ButtonProps } from '../Button'\nimport { Dot } from './Dot'\nimport { Flex } from '../Flex/Flex'\nimport { Media, MediaProps } from '../Media'\nimport { Text, TextProps } from '../Text'\nimport { getDotPosition } from './getDotPosition'\nimport { mapTooltipPropsToRadixProps } from './mapTooltipPropsToPopoverProps'\n\ninterface MergedRadixPopoverProps\n extends Pick<Popover.PopoverProps, 'defaultOpen' | 'modal' | 'onOpenChange' | 'open'>,\n Omit<Popover.PopoverContentProps, 'align' | 'asChild'> {}\nexport interface TooltipProps extends MergedRadixPopoverProps {\n align?: Popover.PopoverContentProps['align'] | 'before' | 'after'\n anchor?: string\n spotlight?: boolean\n style?: React.CSSProperties\n}\n\nexport function Tooltip({\n anchor,\n children,\n css,\n spotlight = false,\n style,\n ...props\n}: TooltipProps) {\n const { node: contentNode, rect: contentRect, ref: contentRef } = useBoundingClientRect()\n const { contentProps, rootProps } = mapTooltipPropsToRadixProps(props, contentRect)\n\n const [alignAttr, setAlignAttr] = useState(contentProps.align)\n const [sideAttr, setSideAttr] = useState(contentProps.side)\n\n // Radix will update data attrs to let us know if Popover.Content has collided\n if (contentNode !== null) {\n const currentAlignAttr = contentNode.getAttribute('data-align')\n const currentSideAttr = contentNode.getAttribute('data-side')\n\n if (alignAttr !== currentAlignAttr) {\n setAlignAttr(currentAlignAttr)\n }\n\n if (sideAttr !== currentSideAttr) {\n setSideAttr(currentSideAttr)\n }\n }\n\n const anchorRef = useRef(null)\n const [anchorElementRef, setAnchorElementRef] = useState(null)\n\n useEffect(() => {\n const anchorQuery = document.querySelector(anchor)\n\n if (anchorQuery != null) {\n anchorRef.current = anchorQuery\n setAnchorElementRef(anchorRef)\n }\n }, [anchor])\n\n if (anchorElementRef == null) return null\n\n const anchorRect = anchorElementRef.current.getBoundingClientRect()\n\n let anchorRadius = '0'\n if (typeof window !== 'undefined') {\n anchorRadius = window.getComputedStyle(anchorElementRef.current).borderRadius\n }\n\n const dotPosition = getDotPosition({ props, alignAttr, sideAttr })\n\n return (\n <Popover.Root defaultOpen={true} {...rootProps}>\n <Popover.Anchor virtualRef={anchorElementRef} />\n <Popover.Portal>\n <div css={css}>\n {spotlight && (\n <Box\n borderRadius={anchorRadius}\n part=\"tooltip-spotlight\"\n position=\"absolute\"\n css={{\n boxShadow: '0 0 0 2000px rgb(0 0 0 / 0.5)',\n height: anchorRect.height,\n left: anchorRect.left,\n top: anchorRect.top,\n width: anchorRect.width,\n }}\n />\n )}\n <Popover.Content asChild {...contentProps} ref={contentRef}>\n <Flex.Column\n backgroundColor=\"white\"\n borderRadius=\"md\"\n p={5}\n part=\"tooltip-content\"\n position=\"relative\"\n css={{\n boxShadow: '0px 4px 20px rgba(0, 0, 0, 0.1)',\n width: '300px',\n ...style,\n }}\n >\n <Dot style={dotPosition} />\n\n {children}\n </Flex.Column>\n </Popover.Content>\n </div>\n </Popover.Portal>\n </Popover.Root>\n )\n}\n\nTooltip.Close = ({ css, ...props }: ButtonProps) => {\n return (\n <Popover.Close aria-label=\"Close\" asChild>\n <Button.Plain\n css={[\n {\n top: 0,\n right: 0,\n },\n css,\n ]}\n part=\"tooltip-close\"\n position=\"absolute\"\n {...props}\n >\n <XMarkIcon height=\"20\" fill=\"currentColor\" />\n </Button.Plain>\n </Popover.Close>\n )\n}\n\nTooltip.Media = ({ src, ...props }: MediaProps) => {\n if (src == null) return null\n\n return (\n <Media\n borderRadius=\"md md 0 0\"\n borderWidth=\"0\"\n css={{\n aspectRatio: '2',\n }}\n margin=\"-5 -5 5\"\n src={src}\n {...props}\n />\n )\n}\n\nTooltip.Primary = ({ onClick, title, ...props }: ButtonProps) => {\n if (title == null) return null\n\n return <Button.Primary title={title} onClick={onClick} {...props} />\n}\n\nTooltip.Progress = ({ children, ...props }: TextProps) => {\n if (children == null) return null\n\n return (\n <Text.Body2 fontWeight=\"demibold\" part=\"progress\" {...props}>\n {children}\n </Text.Body2>\n )\n}\n\nTooltip.Secondary = ({ onClick, title, ...props }: ButtonProps) => {\n if (title == null) return null\n\n return <Button.Secondary title={title} onClick={onClick} {...props} />\n}\n\nTooltip.Subtitle = ({ children, ...props }: TextProps) => {\n if (children == null) return null\n\n return (\n <Text.Body2 part=\"subtitle\" {...props}>\n {children}\n </Text.Body2>\n )\n}\n\nTooltip.Title = ({ children, ...props }: TextProps) => {\n if (children == null) return null\n\n return (\n <Text.Body1 fontWeight=\"bold\" mb={1} part=\"title\" {...props}>\n {children}\n </Text.Body1>\n )\n}\n","import { useCallback, useLayoutEffect, useState } from 'react'\n\nexport function useBoundingClientRect() {\n const initialRect =\n 'DOMRect' in globalThis\n ? new DOMRect()\n : {\n height: 0,\n width: 0,\n x: 0,\n y: 0,\n bottom: 0,\n top: 0,\n right: 0,\n left: 0,\n toJSON: () => {},\n }\n const [rect, setRect] = useState(initialRect)\n const [node, setNode] = useState(null)\n\n const ref = useCallback((node: HTMLElement) => {\n setNode(node)\n }, [])\n\n useLayoutEffect(() => {\n if (!node) return\n\n setRect(node.getBoundingClientRect())\n }, [node])\n\n return {\n node,\n rect,\n ref,\n }\n}\n","import { keyframes } from '@emotion/react'\nimport { Box, BoxProps } from '../Box'\n\nconst pulse = keyframes({\n '0%': {\n opacity: 0.5,\n transform: 'scale(0.5)',\n },\n '50%': {\n opacity: 0,\n transform: 'scale(1)',\n },\n '100%': {\n opacity: 0,\n transform: 'scale(1)',\n },\n})\n\nexport interface DotProps extends BoxProps {}\n\nexport function Dot({ style = {}, part = '', ...props }: DotProps) {\n return (\n <Box\n part={`dot-wrapper ${part}`}\n style={{\n height: '48px',\n position: 'absolute',\n width: '48px',\n ...style,\n }}\n {...props}\n >\n <Box\n backgroundColor=\"primary.surface\"\n part=\"dot-pulse\"\n css={{\n animation: `2s ease-out infinite ${pulse}`,\n borderRadius: '24px',\n height: '48px',\n left: 0,\n position: 'absolute',\n top: 0,\n transformOrigin: 'center center',\n width: '48px',\n }}\n />\n <Box\n backgroundColor=\"primary.surface\"\n part=\"dot\"\n style={{\n borderRadius: '12px',\n height: '24px',\n left: '12px',\n position: 'absolute',\n top: '12px',\n width: '24px',\n }}\n />\n </Box>\n )\n}\n","import { Box, BoxProps } from '../Box'\n\nexport interface ImageProps extends BoxProps {\n src: string\n}\n\nexport function Image({ part, src, ...props }: ImageProps) {\n return <Box as=\"img\" part={['image', part]} src={src} {...props} />\n}\n","import { Box, BoxProps } from '../Box'\n\nfunction getVideoEmbedSrc(videoUri: string) {\n if (videoUri.includes('youtube')) {\n const videoId = videoUri.split('v=')[1]?.split('&')[0]\n\n return `https://www.youtube.com/embed/${videoId}`\n } else if (videoUri.includes('vimeo')) {\n const videoId = videoUri.split('vimeo.com/')[1]?.split('&')[0]\n\n return `https://player.vimeo.com/video/${videoId}`\n } else if (videoUri.includes('wistia')) {\n const videoId = videoUri.split('wistia.com/medias/')[1]?.split('&')[0]\n\n return `https://fast.wistia.net/embed/iframe/${videoId}`\n }\n\n throw new Error('Could not map videoUri to a known provider (Youtube, Vimeo, Wistia).')\n}\n\nexport interface VideoProps extends BoxProps {\n src: string\n}\n\nexport function Video({ part, src, ...props }: VideoProps) {\n const videoEmbedSrc = getVideoEmbedSrc(src)\n\n // TODO: Add play button overtop?\n return (\n <Box\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n as=\"iframe\"\n backgroundColor=\"gray100\"\n borderWidth={0}\n part={['video', part]}\n src={videoEmbedSrc}\n {...props}\n ></Box>\n )\n}\n","import { Image } from './Image'\nimport { Video } from './Video'\nimport { BoxProps } from '../Box'\n\nexport interface MediaProps extends BoxProps {\n src: string\n type: 'image' | 'video'\n}\n\nexport function Media({ src, type, ...props }: MediaProps) {\n const Component = type === 'video' ? Video : Image\n\n return <Component src={src} {...props} />\n}\n","export function getDotPosition({ props, alignAttr, sideAttr }) {\n const currentSide = sideAttr ?? 'bottom'\n const dotProps = {}\n\n // Radix's collision system isn't aware of our custom before|after align\n const getCurrentAlign = () => {\n if (['after', 'before'].includes(props.align)) {\n if (alignAttr == 'start') {\n return 'before'\n } else if (alignAttr == 'end') {\n return 'after'\n }\n }\n\n return props.align ?? 'after'\n }\n\n const dotOffset = '-24px'\n\n const oppositeSides = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right',\n }\n\n /* \n Rules:\n - Dot is opposite to side prop (e.g. side=left -> dot=right)\n - align=before|end -> Dot goes to highest extent (right/bottom) of align-axis\n - align=after|start -> Dot goes to lowest extent (left/top) of align-axis\n - align=center -> Dot goes to the center\n */\n\n dotProps[oppositeSides[currentSide]] = dotOffset\n\n const currentAlign = getCurrentAlign()\n\n if (['before', 'end'].includes(currentAlign)) {\n if (['top', 'bottom'].includes(currentSide)) {\n dotProps['right'] = dotOffset\n } else {\n dotProps['bottom'] = dotOffset\n }\n } else if (['after', 'start'].includes(currentAlign)) {\n if (['top', 'bottom'].includes(currentSide)) {\n dotProps['left'] = dotOffset\n } else {\n dotProps['top'] = dotOffset\n }\n } else {\n // The only option left is align=center\n if (['top', 'bottom'].includes(currentSide)) {\n dotProps['left'] = `calc(50% + ${dotOffset})`\n } else {\n dotProps['top'] = `calc(50% + ${dotOffset})`\n }\n }\n\n return dotProps\n}\n","import { TooltipProps } from '.'\n\nconst RADIX_PROPS = {\n content: [\n 'align',\n 'alignOffset',\n 'arrowPadding',\n 'avoidCollisions',\n 'collisionBoundary',\n 'collisionPadding',\n 'forceMount',\n 'hideWhenDetached',\n 'onCloseAutoFocus',\n 'onEscapeKeyDown',\n 'onFocusOutside',\n 'onInteractOutside',\n 'onOpenAutoFocus',\n 'onPointerDownOutside',\n 'side',\n 'sideOffset',\n 'sticky',\n ],\n root: ['defaultOpen', 'modal', 'onOpenChange', 'open'],\n}\n\nexport function mapTooltipPropsToRadixProps(props: TooltipProps, contentRect: DOMRect) {\n const contentProps = Object.fromEntries(\n RADIX_PROPS.content\n .map((propName) => [propName, props[propName]])\n .filter((propEntry) => propEntry[1] !== undefined)\n )\n const rootProps = Object.fromEntries(\n RADIX_PROPS.root\n .map((propName) => [propName, props[propName]])\n .filter((propEntry) => propEntry[1] !== undefined)\n )\n\n // Default to align=after, side=bottom\n contentProps.align = contentProps.align ?? 'after'\n contentProps.side = contentProps.side ?? 'bottom'\n\n /*\n Here we're extending Popover.Content's align prop to accept 'before' and\n 'after' in addition to its existing values.\n\n TL;DR:\n 1. Use existing alignOffset prop to push Content to be before/after the\n corresponding edge of the element it's attached to.\n 2. Add a CSS margin to patch alignOffset back onto Content, as Popover\n has a bug that prevents alignOffset from extending past the edge of\n its Trigger/Anchor.\n\n SEE: https://github.com/radix-ui/primitives/issues/2457\n */\n if (['before', 'after'].includes(contentProps.align)) {\n const mapToOriginalAlignValues = {\n after: 'end',\n before: 'start',\n }\n\n const mapAlignOffsetToMargin = (align, side) => {\n /*\n Translate alignOffset to CSS margin based on align and side props:\n bottom || top\n after: marginLeft\n before: marginRight\n left || right\n after: marginTop\n before: marginBottom\n */\n if (['top', 'bottom'].includes(side)) {\n if (align == 'after') {\n return 'marginLeft'\n } else {\n return 'marginRight'\n }\n } else {\n if (align == 'after') {\n return 'marginTop'\n } else {\n return 'marginBottom'\n }\n }\n }\n\n const originalOffset = contentProps.alignOffset ?? 0\n const originalStyleProp = contentProps.style ?? {}\n const currentSide = contentProps.side ?? 'bottom'\n const currentAlign = contentProps.align\n\n // Copy alignOffset value to CSS margin\n contentProps['style'] = {\n ...originalStyleProp,\n [mapAlignOffsetToMargin(currentAlign, currentSide)]: originalOffset,\n }\n\n const lengthOfCurrentSide = ['top', 'bottom'].includes(currentSide)\n ? contentRect.width\n : contentRect.height\n\n // Change alignOffset to be at the end of the positioned side\n contentProps['alignOffset'] = (lengthOfCurrentSide + originalOffset) * -1\n\n // Flip align prop back to valid Radix option, or default to 'after'\n contentProps['align'] = mapToOriginalAlignValues[currentAlign]\n }\n\n return {\n contentProps,\n rootProps,\n }\n}\n","import { Frigade, Flow } from '@frigade/js'\nimport { useContext, useState } from 'react'\n\nimport { FrigadeContext } from '../components/Provider'\n\nexport function useFlow(flowId: string) {\n const [flow, setFlow] = useState<Flow>(null)\n const { apiKey, config } = useContext(FrigadeContext)\n\n async function fetchFlow() {\n const filteredConfig = Object.fromEntries(\n Object.entries(config).filter(([k, v]) => ['apiUrl', 'userId'].includes(k) && v != null)\n )\n\n const frigade = await new Frigade(apiKey, filteredConfig)\n\n const flowResponse: Flow = await frigade.getFlow(flowId)\n\n setFlow(flowResponse)\n }\n\n if (flow === null) {\n fetchFlow()\n }\n\n // TEMP: Expose a way to manually refresh the flow.\n // TODO: Automatically update state when something like step.complete() is called\n return { flow, fetchFlow }\n}\n","import { useFlow } from '../../hooks/useFlow'\n\nimport { Flex } from '../Flex/Flex'\nimport { Tooltip, TooltipProps } from '../Tooltip'\n\nexport interface TourProps extends TooltipProps {\n flowId: string\n}\n\nexport function Tour({ flowId, ...props }: TourProps) {\n const { flow, fetchFlow } = useFlow(flowId)\n\n if (flow == null || flow?.isCompleted || flow?.isSkipped) {\n return null\n }\n\n flow.start()\n\n const step = flow.getCurrentStep()\n\n step?.start()\n\n async function handleDismiss() {\n await flow.skip()\n\n // TEMP: Manually refreshing flow data until useFlow can handle it internally\n fetchFlow()\n }\n\n async function handlePrimary() {\n await step.complete()\n\n // TEMP: Manually refreshing flow data until useFlow can handle it internally\n fetchFlow()\n }\n\n const handleSecondary = handlePrimary\n\n return (\n <Tooltip\n anchor={step.selector as string}\n onOpenAutoFocus={(e) => e.preventDefault()}\n onPointerDownOutside={(e) => e.preventDefault()}\n {...props}\n >\n <Tooltip.Close onClick={handleDismiss} />\n\n <Tooltip.Media\n src={step.videoUri ?? step.imageUri}\n type={step.videoUri ? 'video' : 'image'}\n />\n\n <Tooltip.Title>{step.title}</Tooltip.Title>\n <Tooltip.Subtitle>{step.subtitle}</Tooltip.Subtitle>\n\n <Flex.Row pt={4} alignItems=\"center\" justifyContent=\"space-between\">\n <Tooltip.Progress>\n {`${flow.getNumberOfCompletedSteps()}/${flow.steps.size}`}\n </Tooltip.Progress>\n\n <Flex.Row gap={3}>\n <Tooltip.Secondary title={step.secondaryButtonTitle} onClick={handleSecondary} />\n <Tooltip.Primary title={step.primaryButtonTitle} onClick={handlePrimary} />\n </Flex.Row>\n </Flex.Row>\n </Tooltip>\n )\n}\n"]}
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- var _=Object.defineProperty,Fr=Object.defineProperties;var Wr=Object.getOwnPropertyDescriptors;var A=Object.getOwnPropertySymbols;var rr=Object.prototype.hasOwnProperty,er=Object.prototype.propertyIsEnumerable;var Z=(r,e,o)=>e in r?_(r,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):r[e]=o,l=(r,e)=>{for(var o in e||(e={}))rr.call(e,o)&&Z(r,o,e[o]);if(A)for(var o of A(e))er.call(e,o)&&Z(r,o,e[o]);return r},f=(r,e)=>Fr(r,Wr(e));var c=(r,e)=>{var o={};for(var t in r)rr.call(r,t)&&e.indexOf(t)<0&&(o[t]=r[t]);if(r!=null&&A)for(var t of A(r))e.indexOf(t)<0&&er.call(r,t)&&(o[t]=r[t]);return o};var or=(r,e)=>{for(var o in e)_(r,o,{get:e[o],enumerable:!0})};var R=(r,e,o)=>new Promise((t,n)=>{var a=d=>{try{s(o.next(d))}catch(v){n(v)}},i=d=>{try{s(o.throw(d))}catch(v){n(v)}},s=d=>d.done?t(d.value):Promise.resolve(d.value).then(a,i);s((o=o.apply(r,e)).next())});import*as sr from"react";import{clsx as Dr}from"clsx";var p={borders:{md:"var(--fr-borders-md)"},borderWidths:{0:"var(--fr-borderWidths-0)",md:"var(--fr-borderWidths-md)"},colors:{black:"var(--fr-colors-black)",gray100:"var(--fr-colors-gray100)",gray200:"var(--fr-colors-gray200)",gray300:"var(--fr-colors-gray300)",gray400:"var(--fr-colors-gray400)",gray500:"var(--fr-colors-gray500)",gray600:"var(--fr-colors-gray600)",gray700:"var(--fr-colors-gray700)",gray800:"var(--fr-colors-gray800)",gray900:"var(--fr-colors-gray900)",white:"var(--fr-colors-white)",blue400:"var(--fr-colors-blue400)",blue500:"var(--fr-colors-blue500)",blue800:"var(--fr-colors-blue800)",blue900:"var(--fr-colors-blue900)",green400:"var(--fr-colors-green400)",green500:"var(--fr-colors-green500)",green800:"var(--fr-colors-green800)",transparent:"var(--fr-colors-transparent)",red500:"var(--fr-colors-red500)",neutral:{background:"var(--fr-colors-neutral-background)",border:"var(--fr-colors-neutral-border)",foreground:"var(--fr-colors-neutral-foreground)",surface:"var(--fr-colors-neutral-surface)",active:{background:"var(--fr-colors-neutral-active-background)",border:"var(--fr-colors-neutral-active-border)",foreground:"var(--fr-colors-neutral-active-foreground)",surface:"var(--fr-colors-neutral-active-surface)"},focus:{background:"var(--fr-colors-neutral-focus-background)",border:"var(--fr-colors-neutral-focus-border)",foreground:"var(--fr-colors-neutral-focus-foreground)",surface:"var(--fr-colors-neutral-focus-surface)"},hover:{background:"var(--fr-colors-neutral-hover-background)",border:"var(--fr-colors-neutral-hover-border)",foreground:"var(--fr-colors-neutral-hover-foreground)",surface:"var(--fr-colors-neutral-hover-surface)"}},primary:{background:"var(--fr-colors-primary-background)",border:"var(--fr-colors-primary-border)",foreground:"var(--fr-colors-primary-foreground)",surface:"var(--fr-colors-primary-surface)",active:{background:"var(--fr-colors-primary-active-background)",border:"var(--fr-colors-primary-active-border)",foreground:"var(--fr-colors-primary-active-foreground)",surface:"var(--fr-colors-primary-active-surface)"},focus:{background:"var(--fr-colors-primary-focus-background)",border:"var(--fr-colors-primary-focus-border)",foreground:"var(--fr-colors-primary-focus-foreground)",surface:"var(--fr-colors-primary-focus-surface)"},hover:{background:"var(--fr-colors-primary-hover-background)",border:"var(--fr-colors-primary-hover-border)",foreground:"var(--fr-colors-primary-hover-foreground)",surface:"var(--fr-colors-primary-hover-surface)"}},secondary:{background:"var(--fr-colors-secondary-background)",border:"var(--fr-colors-secondary-border)",foreground:"var(--fr-colors-secondary-foreground)",surface:"var(--fr-colors-secondary-surface)",active:{background:"var(--fr-colors-secondary-active-background)",border:"var(--fr-colors-secondary-active-border)",foreground:"var(--fr-colors-secondary-active-foreground)",surface:"var(--fr-colors-secondary-active-surface)"},focus:{background:"var(--fr-colors-secondary-focus-background)",border:"var(--fr-colors-secondary-focus-border)",foreground:"var(--fr-colors-secondary-focus-foreground)",surface:"var(--fr-colors-secondary-focus-surface)"},hover:{background:"var(--fr-colors-secondary-hover-background)",border:"var(--fr-colors-secondary-hover-border)",foreground:"var(--fr-colors-secondary-hover-foreground)",surface:"var(--fr-colors-secondary-hover-surface)"}}},fontFamilies:{default:"var(--fr-fontFamilies-default)"},fontSizes:{xs:"var(--fr-fontSizes-xs)",sm:"var(--fr-fontSizes-sm)",md:"var(--fr-fontSizes-md)",lg:"var(--fr-fontSizes-lg)",xl:"var(--fr-fontSizes-xl)","2xl":"var(--fr-fontSizes-2xl)","3xl":"var(--fr-fontSizes-3xl)","4xl":"var(--fr-fontSizes-4xl)","5xl":"var(--fr-fontSizes-5xl)"},fontWeights:{regular:"var(--fr-fontWeights-regular)",demibold:"var(--fr-fontWeights-demibold)",bold:"var(--fr-fontWeights-bold)"},letterSpacings:{md:"var(--fr-letterSpacings-md)"},lineHeights:{xs:"var(--fr-lineHeights-xs)",sm:"var(--fr-lineHeights-sm)",md:"var(--fr-lineHeights-md)",lg:"var(--fr-lineHeights-lg)",xl:"var(--fr-lineHeights-xl)","2xl":"var(--fr-lineHeights-2xl)","3xl":"var(--fr-lineHeights-3xl)","4xl":"var(--fr-lineHeights-4xl)"},radii:{md:"var(--fr-radii-md)",lg:"var(--fr-radii-lg)",round:"var(--fr-radii-round)"},shadows:{md:"var(--fr-shadows-md)"},space:{0:"var(--fr-space-0)",1:"var(--fr-space-1)",2:"var(--fr-space-2)",3:"var(--fr-space-3)",4:"var(--fr-space-4)",5:"var(--fr-space-5)",6:"var(--fr-space-6)",7:"var(--fr-space-7)",8:"var(--fr-space-8)",9:"var(--fr-space-9)",10:"var(--fr-space-10)",11:"var(--fr-space-11)",12:"var(--fr-space-12)",13:"var(--fr-space-13)",14:"var(--fr-space-14)",15:"var(--fr-space-15)",16:"var(--fr-space-16)",17:"var(--fr-space-17)",18:"var(--fr-space-18)",19:"var(--fr-space-19)",20:"var(--fr-space-20)","-20":"var(--fr-space--20)","-19":"var(--fr-space--19)","-18":"var(--fr-space--18)","-17":"var(--fr-space--17)","-16":"var(--fr-space--16)","-15":"var(--fr-space--15)","-14":"var(--fr-space--14)","-13":"var(--fr-space--13)","-12":"var(--fr-space--12)","-11":"var(--fr-space--11)","-10":"var(--fr-space--10)","-9":"var(--fr-space--9)","-8":"var(--fr-space--8)","-7":"var(--fr-space--7)","-6":"var(--fr-space--6)","-5":"var(--fr-space--5)","-4":"var(--fr-space--4)","-3":"var(--fr-space--3)","-2":"var(--fr-space--2)","-1":"var(--fr-space--1)","-0.5":"var(--fr-space--0-5)","0.5":"var(--fr-space-0-5)",auto:"var(--fr-space-auto)"}};function M(r,e="",o="."){return Object.keys(r).reduce((t,n)=>{let i=`${e.length?`${e}${o}`:""}${n}`,s=r[n];return typeof s=="object"&&s!==null&&!Array.isArray(s)?Object.assign(t,M(s,i,o)):t[i]=s,t},{})}var D=M(p.colors),tr={color:D,backgroundColor:D,borderColor:D,border:p.borders,borderRadius:p.radii,borderWidth:p.borderWidths,fontFamily:p.fontFamilies,fontSize:p.fontSizes,fontWeight:p.fontWeights,gap:p.space,lineHeight:p.lineHeights,margin:p.space,marginTop:p.space,marginRight:p.space,marginBottom:p.space,marginLeft:p.space,padding:p.space,paddingTop:p.space,paddingRight:p.space,paddingBottom:p.space,paddingLeft:p.space,alignContent:["center","start","end","flex-start","flex-end","normal","baseline","first baseline","last baseline","space-between","space-around","space-evenly","stretch","safe center","unsafe center","inherit","initial","revert","revert-layer","unset"],alignItems:["normal","stretch","center","start","end","flex-start","flex-end","self-start","self-end","baseline","first baseline","last baseline","safe center","unsafe center","inherit","initial","revert","revert-layer","unset"],alignSelf:["auto","normal","center","start","end","self-start","self-end","flex-start","flex-end","baseline","first baseline","last baseline","stretch","safe center","unsafe center","inherit","initial","revert","revert-layer","unset"],flexDirection:["row","row-reverse","column","column-reverse","inherit","initial","revert","revert-layer","unset"],flexWrap:["nowrap","wrap","wrap-reverse","inherit","initial","revert","revert-layer","unset"],justifyContent:["center","start","end","flex-start","flex-end","left","right","normal","space-between","space-around","space-evenly","stretch","safe center","unsafe center","inherit","initial","revert","revert-layer","unset"],justifyItems:["normal","stretch","center","start","end","flex-start","flex-end","self-start","self-end","left","right","baseline","first baseline","last baseline","safe center","unsafe center","legacy right","legacy left","legacy center","inherit","initial","revert","revert-layer","unset"],boxSizing:["border-box","content-box","inherit","initial","revert","revert-layer","unset"],position:["static","relative","absolute","fixed","sticky","inherit","initial","revert","revert-layer","unset"],display:["block","block flex","block flow","block flow-root","block grid","contents","flex","flow-root","grid","inherit","initial","inline","inline flex","inline flow","inline flow-root","inline grid","inline-block","inline-flex","inline-grid","list-item","none","revert","revert-layer","table","table-row-group","table-header-group","table-footer-group","table-row","table-cell","table-column-group","table-column","table-caption","unset"]},nr={m:["margin"],mt:["marginTop"],mr:["marginRight"],mb:["marginBottom"],ml:["marginLeft"],mx:["marginLeft","marginRight"],my:["marginTop","marginBottom"],p:["padding"],pt:["paddingTop"],pr:["paddingRight"],pb:["paddingBottom"],pl:["paddingLeft"],px:["paddingLeft","paddingRight"],py:["paddingTop","paddingBottom"]};function Ar(r){if(Array.isArray(r))return new Map(r.map(e=>[e,e]));if(typeof r=="object"&&r!==null)return new Map(Object.entries(r));if(["string","number"].includes(typeof r))return new Map([r,r]);throw new Error("Invalid entry in styleProps")}var Vr=new Map(Object.entries(tr).map(([r,e])=>[r,Ar(e)])),Mr=new Map(Object.entries(nr).map(([r,e])=>[r,new Set(e)]));function ar(r){let e=Object.assign({},r),o={};return Object.entries(e).forEach(([t,n])=>{let a=Mr.get(t);a!=null&&(a.forEach(i=>{e[i]=n}),delete e[t])}),Object.entries(e).forEach(([t,n])=>{let a=Vr.get(t);if(a!=null)if(typeof n=="string"&&n.indexOf(" ")>-1){let i=n.split(" ");o[t]=i.map(s=>{var d;return(d=a.get(s.toString()))!=null?d:s}).join(" "),delete e[t]}else a.has(n.toString())&&(o[t]=a.get(n.toString()),delete e[t])}),{cssFromProps:o,unmatchedProps:e}}import{jsx as zr}from"@emotion/react/jsx-runtime";function ir(r){return r&&`fr-${r}`}function Er(r){return r&&(Array.isArray(r)?r.map(e=>ir(e)).join(" "):ir(r))}function jr(s,i){var d=s,{as:r,children:e,className:o,css:t,part:n}=d,a=c(d,["as","children","className","css","part"]);let v=r!=null?r:"div",{cssFromProps:h,unmatchedProps:b}=ar(a),P=Er(n),B=o||P?Dr(o,P):void 0;return zr(v,f(l({className:B,css:[l(l({boxSizing:"border-box"},h),t)]},b),{ref:i,children:e}))}var u=sr.forwardRef(jr);var E={};or(E,{Body1:()=>Ur,Body2:()=>Xr,Caption:()=>Jr,Display1:()=>Ir,Display2:()=>$r,H1:()=>Lr,H2:()=>Kr,H3:()=>Nr,H4:()=>qr,base:()=>x});var x=({fontFamilies:r})=>({fontFamily:r.default,margin:0}),Ir=({fontSizes:r,fontWeights:e,lineHeights:o})=>[x,{fontSize:r["5xl"],fontWeight:e.bold,lineHeight:o["4xl"]}],$r=({fontSizes:r,fontWeights:e,lineHeights:o})=>[x,{fontSize:r["4xl"],fontWeight:e.bold,lineHeight:o["3xl"]}],Lr=({fontSizes:r,fontWeights:e,lineHeights:o})=>[x,{fontSize:r["3xl"],fontWeight:e.bold,lineHeight:o["2xl"]}],Kr=({fontSizes:r,fontWeights:e,lineHeights:o})=>[x,{fontSize:r["2xl"],fontWeight:e.bold,lineHeight:o.xl}],Nr=({fontSizes:r,fontWeights:e,lineHeights:o})=>[x,{fontSize:r.xl,fontWeight:e.bold,lineHeight:o.lg}],qr=({fontSizes:r,fontWeights:e,lineHeights:o})=>[x,{fontSize:r.lg,fontWeight:e.bold,lineHeight:o.md}],Ur=({fontSizes:r,fontWeights:e,lineHeights:o})=>[x,{fontSize:r.md,fontWeight:e.regular,lineHeight:o.md}],Xr=({fontSizes:r,fontWeights:e,lineHeights:o})=>[x,{fontSize:r.sm,fontWeight:e.regular,lineHeight:o.md}],Jr=({fontSizes:r,fontWeights:e,lineHeights:o})=>[x,{fontSize:r.xs,fontWeight:e.regular,lineHeight:o.sm}];import{jsx as cr}from"@emotion/react/jsx-runtime";function lr(a){var i=a,{as:r="span",children:e,css:o,variant:t="Body1"}=i,n=c(i,["as","children","css","variant"]);return cr(u,f(l({as:r,css:[E[t],o]},n),{children:e}))}var Qr=["Display1","Display2","H1","H2","H3","H4","Body1","Body2","Caption"],Yr=Object.fromEntries(Qr.map(r=>{let e=["H1","H2","H3","H4"].includes(r)?r.toLowerCase():void 0,o=t=>cr(lr,f(l({as:e},t),{variant:r,children:t.children}));return o.displayName=`Text.${r}`,[r,o]})),w=Object.assign(lr,Yr);var j={};or(j,{Link:()=>_r,Plain:()=>re,Primary:()=>Gr,Secondary:()=>Zr,base:()=>k});var k=({radii:r,space:e})=>({borderWidth:0,borderRadius:r.md,padding:`${e[2]} ${e[4]}`}),Gr=({colors:r})=>[k,{backgroundColor:r.primary.surface,color:r.primary.foreground,"&:hover":{backgroundColor:r.primary.hover.surface}}],Zr=({colors:r})=>[k,{backgroundColor:r.secondary.surface,color:r.secondary.foreground,"&:hover":{backgroundColor:r.secondary.hover.surface}}],_r=({colors:r})=>[k,{backgroundColor:r.transparent,color:r.primary.surface,"&:hover":{color:r.primary.hover.surface}}],re=({colors:r})=>[k,{backgroundColor:r.transparent,color:r.neutral.foreground}];import{jsx as pr,jsxs as te}from"@emotion/react/jsx-runtime";function fr(i){var s=i,{as:r,children:e,css:o={},title:t,variant:n="Primary"}=s,a=c(s,["as","children","css","title","variant"]);return te(u,f(l({as:r!=null?r:"button",css:[j[n],o]},a),{children:[e,t&&pr(w.Body2,{fontWeight:"demibold",children:t})]}))}var ee=["Primary","Secondary","Link","Plain"],oe=Object.fromEntries(ee.map(r=>{let e=r.toLocaleLowerCase(),o=a=>{var i=a,{part:t}=i,n=c(i,["part"]);return pr(fr,f(l({part:[`button-${e}`,t]},n),{variant:r,children:n.children}))};return o.displayName=`Text.${r}`,[r,o]})),O=Object.assign(fr,oe);import*as z from"react";import{jsx as dr}from"@emotion/react/jsx-runtime";var ne=z.forwardRef((n,t)=>{var a=n,{children:r,css:e}=a,o=c(a,["children","css"]);return dr(u,f(l({css:[{display:"flex",flexDirection:"row"},e]},o),{ref:t,children:r}))}),ae=z.forwardRef((n,t)=>{var a=n,{children:r,css:e}=a,o=c(a,["children","css"]);return dr(u,f(l({css:[{display:"flex",flexDirection:"column"},e]},o),{ref:t,children:r}))}),S={Column:ae,Row:ne};import{createContext as se}from"react";import{ThemeProvider as le}from"@emotion/react";function ur(r){var e=r.match(/^var\((.*)\)$/);return e?e[1]:r}function gr(r,e){var o=r;for(var t of e){if(!(t in o))throw new Error("Path ".concat(e.join(" -> ")," does not exist in object"));o=o[t]}return o}function I(r,e){var o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],t=r.constructor();for(var n in r){var a=r[n],i=[...o,n];typeof a=="string"||typeof a=="number"||a==null?t[n]=e(a,i):typeof a=="object"&&!Array.isArray(a)?t[n]=I(a,e,i):console.warn('Skipping invalid key "'.concat(i.join("."),'". Should be a string, number, null or object. Received: "').concat(Array.isArray(a)?"Array":typeof a,'"'))}return t}function mr(r,e,o){r.style.setProperty(ur(e),o)}function vr(r,e,o){if(typeof o=="object"){var t=e;I(o,(i,s)=>{mr(r,gr(t,s),String(i))})}else{var n=e;for(var a in n)mr(r,a,n[a])}}import{useEffect as ie}from"react";function $(r,e=p){return Object.keys(r).reduce((o,t)=>{let n=r[t];return typeof n=="object"&&n!==null&&!Array.isArray(n)&&t in r?Object.assign(o,$(n,e[t])):o[e[t]]=r[t],o},{})}function br(r={},e=":root"){ie(()=>{let o=$(r),t=document.querySelector(e);vr(t,o)},[r])}import{jsx as xr}from"@emotion/react/jsx-runtime";var L=se({apiKey:"",config:{}});function ce({apiKey:r,children:e,config:o={},theme:t}){return br(t),xr(L.Provider,{value:{apiKey:r,config:o},children:xr(le,{theme:p,children:e})})}import{useEffect as be,useRef as xe,useState as U}from"react";import{XMarkIcon as ye}from"@heroicons/react/24/solid";import*as y from"@radix-ui/react-popover";import{useCallback as fe,useLayoutEffect as pe,useState as yr}from"react";function hr(){let r="DOMRect"in globalThis?new DOMRect:{height:0,width:0,x:0,y:0,bottom:0,top:0,right:0,left:0,toJSON:()=>{}},[e,o]=yr(r),[t,n]=yr(null),a=fe(i=>{n(i)},[]);return pe(()=>{t&&o(t.getBoundingClientRect())},[t]),{node:t,rect:e,ref:a}}var Pr="_16td421";import{jsx as wr,jsxs as de}from"@emotion/react/jsx-runtime";function Tr(t){var n=t,{style:r={},part:e=""}=n,o=c(n,["style","part"]);return de(u,f(l({part:`dot-wrapper ${e}`,style:l({height:"48px",position:"absolute",width:"48px"},r)},o),{children:[wr(u,{backgroundColor:"primary.surface",className:Pr,part:"dot-pulse",style:{borderRadius:"24px",height:"48px",left:0,position:"absolute",top:0,transformOrigin:"center center",width:"48px"}}),wr(u,{backgroundColor:"primary.surface",part:"dot",style:{borderRadius:"12px",height:"24px",left:"12px",position:"absolute",top:"12px",width:"24px"}})]}))}import{jsx as ue}from"@emotion/react/jsx-runtime";function K(t){var n=t,{part:r,src:e}=n,o=c(n,["part","src"]);return ue(u,l({as:"img",part:["image",r],src:e},o))}import{jsx as me}from"@emotion/react/jsx-runtime";function ge(r){var e,o,t;if(r.includes("youtube"))return`https://www.youtube.com/embed/${(e=r.split("v=")[1])==null?void 0:e.split("&")[0]}`;if(r.includes("vimeo"))return`https://player.vimeo.com/video/${(o=r.split("vimeo.com/")[1])==null?void 0:o.split("&")[0]}`;if(r.includes("wistia"))return`https://fast.wistia.net/embed/iframe/${(t=r.split("wistia.com/medias/")[1])==null?void 0:t.split("&")[0]}`;throw new Error("Could not map videoUri to a known provider (Youtube, Vimeo, Wistia).")}function N(t){var n=t,{part:r,src:e}=n,o=c(n,["part","src"]);let a=ge(e);return me(u,l({allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:!0,as:"iframe",backgroundColor:"gray100",borderWidth:0,part:["video",r],src:a},o))}import{jsx as ve}from"@emotion/react/jsx-runtime";function q(t){var n=t,{src:r,type:e}=n,o=c(n,["src","type"]);return ve(e==="video"?N:K,l({src:r},o))}function Br({props:r,alignAttr:e,sideAttr:o}){let t=o!=null?o:"bottom",n={},a=(()=>{if(["after","before"].includes(r.align)){if(e=="start")return"before";if(e=="end")return"after"}return r.align})(),i="-24px",s={top:"bottom",right:"left",bottom:"top",left:"right"};return n[s[t]]=i,["before","end"].includes(a)?["top","bottom"].includes(t)?n.right=i:n.bottom=i:["after","start"].includes(a)?["top","bottom"].includes(t)?n.left=i:n.top=i:["top","bottom"].includes(t)?n.left=`calc(50% + ${i})`:n.top=`calc(50% + ${i})`,n}var Sr={content:["align","alignOffset","arrowPadding","avoidCollisions","collisionBoundary","collisionPadding","forceMount","hideWhenDetached","onCloseAutoFocus","onEscapeKeyDown","onFocusOutside","onInteractOutside","onOpenAutoFocus","onPointerDownOutside","side","sideOffset","sticky"],root:["defaultOpen","modal","onOpenChange","open"]};function Cr(r,e){var n,a,i;let o=Object.fromEntries(Sr.content.map(s=>[s,r[s]]).filter(s=>s[1]!==void 0)),t=Object.fromEntries(Sr.root.map(s=>[s,r[s]]).filter(s=>s[1]!==void 0));if(["before","after"].includes(o.align)){let s={after:"end",before:"start"},d=(H,V)=>["top","bottom"].includes(V)?H=="after"?"marginLeft":"marginRight":H=="after"?"marginTop":"marginBottom",v=(n=o.alignOffset)!=null?n:0,h=(a=o.style)!=null?a:{},b=(i=o.side)!=null?i:"bottom",P=o.align;o.style=f(l({},h),{[d(P,b)]:v});let B=["top","bottom"].includes(b)?e.width:e.height;o.alignOffset=(B+v)*-1,o.align=s[P]}return{contentProps:o,rootProps:t}}import{jsx as m,jsxs as X}from"@emotion/react/jsx-runtime";function g(i){var s=i,{anchor:r,children:e,css:o,spotlight:t=!1,style:n}=s,a=c(s,["anchor","children","css","spotlight","style"]);let{node:d,rect:v,ref:h}=hr(),[b,P]=U(a.align),[B,H]=U(a.side);if(d!==null){let C=d.getAttribute("data-align"),G=d.getAttribute("data-side");b!==C&&P(C),B!==G&&H(G)}let{contentProps:V,rootProps:kr}=Cr(a,v),Q=xe(null),[F,Or]=U(null);if(be(()=>{let C=document.querySelector(r);C!=null&&(Q.current=C,Or(Q))},[r]),F==null)return null;let W=F.current.getBoundingClientRect(),Y="0";typeof window!="undefined"&&(Y=window.getComputedStyle(F.current).borderRadius);let Hr=Br({props:a,alignAttr:b,sideAttr:B});return X(y.Root,f(l({defaultOpen:!0},kr),{children:[m(y.Anchor,{virtualRef:F}),m(y.Portal,{children:X("div",{css:o,children:[t&&m(u,{borderRadius:Y,part:"tooltip-spotlight",position:"absolute",css:{boxShadow:"0 0 0 2000px rgb(0 0 0 / 0.5)",height:W.height,left:W.left,top:W.top,width:W.width}}),m(y.Content,f(l({asChild:!0},V),{ref:h,children:X(S.Column,{backgroundColor:"white",borderRadius:"md",p:5,part:"tooltip-content",position:"relative",css:l({boxShadow:"0px 4px 20px rgba(0, 0, 0, 0.1)",width:"300px"},n),children:[m(Tr,{style:Hr}),e]})}))]})})]}))}g.Close=o=>{var t=o,{css:r}=t,e=c(t,["css"]);return m(y.Close,{"aria-label":"Close",asChild:!0,children:m(O.Plain,f(l({css:[{top:0,right:0},r],part:"tooltip-close",position:"absolute"},e),{children:m(ye,{height:"20",fill:"currentColor"})}))})};g.Media=o=>{var t=o,{src:r}=t,e=c(t,["src"]);return r==null?null:m(q,l({borderRadius:"md md 0 0",borderWidth:"0",css:{aspectRatio:"2"},margin:"-5 -5 5",src:r},e))};g.Primary=t=>{var n=t,{onClick:r,title:e}=n,o=c(n,["onClick","title"]);return e==null?null:m(O.Primary,l({title:e,onClick:r},o))};g.Progress=o=>{var t=o,{children:r}=t,e=c(t,["children"]);return r==null?null:m(w.Body2,f(l({fontWeight:"demibold",part:"progress"},e),{children:r}))};g.Secondary=t=>{var n=t,{onClick:r,title:e}=n,o=c(n,["onClick","title"]);return e==null?null:m(O.Secondary,l({title:e,onClick:r},o))};g.Subtitle=o=>{var t=o,{children:r}=t,e=c(t,["children"]);return r==null?null:m(w.Body2,f(l({part:"subtitle"},e),{children:r}))};g.Title=o=>{var t=o,{children:r}=t,e=c(t,["children"]);return r==null?null:m(w.Body1,f(l({fontWeight:"bold",mb:1,part:"title"},e),{children:r}))};import{Frigade as he}from"@frigade/js";import{useContext as Pe,useState as we}from"react";function Rr(r){let[e,o]=we(null),{apiKey:t,config:n}=Pe(L);function a(){return R(this,null,function*(){let s=yield(yield new he(t,{apiUrl:n.apiUrl,userId:n.userId})).getFlow(r);o(s)})}return e===null&&a(),{flow:e,fetchFlow:a}}import{jsx as T,jsxs as J}from"@emotion/react/jsx-runtime";function Te(o){var t=o,{flowId:r}=t,e=c(t,["flowId"]);var h;let{flow:n,fetchFlow:a}=Rr(r);if(n==null||n!=null&&n.isCompleted||n!=null&&n.isSkipped)return null;n.start();let i=n.getCurrentStep();i==null||i.start();function s(){return R(this,null,function*(){yield n.skip(),a()})}function d(){return R(this,null,function*(){yield i.complete(),a()})}let v=d;return J(g,f(l({align:"after",anchor:i.selector,onOpenAutoFocus:b=>b.preventDefault(),onPointerDownOutside:b=>b.preventDefault()},e),{children:[T(g.Close,{onClick:s}),T(g.Media,{src:(h=i.videoUri)!=null?h:i.imageUri,type:i.videoUri?"video":"image"}),T(g.Title,{children:i.title}),T(g.Subtitle,{children:i.subtitle}),J(S.Row,{pt:4,alignItems:"center",justifyContent:"space-between",children:[T(g.Progress,{children:`${n.getNumberOfCompletedSteps()}/${n.steps.size}`}),J(S.Row,{gap:3,children:[T(g.Secondary,{title:i.secondaryButtonTitle,onClick:v}),T(g.Primary,{title:i.primaryButtonTitle,onClick:d})]})]})]}))}export{u as Box,O as Button,S as Flex,ce as Provider,w as Text,g as Tooltip,Te as Tour};
2
+ var ee=Object.defineProperty,Fe=Object.defineProperties;var Ee=Object.getOwnPropertyDescriptors;var $=Object.getOwnPropertySymbols;var te=Object.prototype.hasOwnProperty,oe=Object.prototype.propertyIsEnumerable;var Z=(e,t,o)=>t in e?ee(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,a=(e,t)=>{for(var o in t||(t={}))te.call(t,o)&&Z(e,o,t[o]);if($)for(var o of $(t))oe.call(t,o)&&Z(e,o,t[o]);return e},u=(e,t)=>Fe(e,Ee(t));var p=(e,t)=>{var o={};for(var r in e)te.call(e,r)&&t.indexOf(r)<0&&(o[r]=e[r]);if(e!=null&&$)for(var r of $(e))t.indexOf(r)<0&&oe.call(e,r)&&(o[r]=e[r]);return o};var re=(e,t)=>{for(var o in t)ee(e,o,{get:t[o],enumerable:!0})};var k=(e,t,o)=>new Promise((r,n)=>{var l=c=>{try{d(o.next(c))}catch(f){n(f)}},s=c=>{try{d(o.throw(c))}catch(f){n(f)}},d=c=>c.done?r(c.value):Promise.resolve(c.value).then(l,s);d((o=o.apply(e,t)).next())});import*as de from"react";import{clsx as je}from"clsx";var Ae="px",De=e=>typeof e=="number"?`${4*e}${Ae}`:e,He=[-20,-19,-18,-17,-16,-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,-.5,0,.5,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,"auto"],Ve=Object.fromEntries(He.map(e=>[e,De(e)])),We={black:"#000000",gray100:"#14161A",gray200:"#181B20",gray300:"#1F2329",gray400:"#2E343D",gray500:"#4C5766",gray600:"#5A6472",gray700:"#C5CBD3",gray800:"#E2E5E9",gray900:"#F1F2F4",white:"#ffffff",blue400:"#015AC6",blue500:"#0171F8",blue800:"#DBECFF",blue900:"#F5F9FF",green400:"#009E37",green500:"#00D149",green800:"#DBFFE8",transparent:"#FFFFFF00",red500:"#c00000"},I={borders:{md:"1px solid"},borderWidths:{0:"0",md:"1px"},colors:a({},We),fontFamilies:{default:"TT Interphases Pro, sans-serif"},fontSizes:{xs:"12px",sm:"14px",md:"16px",lg:"18px",xl:"20px","2xl":"24px","3xl":"30px","4xl":"36px","5xl":"48px"},fontWeights:{regular:"400",demibold:"600",bold:"700"},letterSpacings:{md:"0.02em"},lineHeights:{xs:"18px",sm:"22px",md:"24px",lg:"26px",xl:"30px","2xl":"38px","3xl":"46px","4xl":"60px"},radii:{md:"8px",lg:"20px",round:"50%"},shadows:{md:"0px 4px 20px rgba(0, 0, 0, 0.1)"},space:Ve};var i=e=>`var(--fr-colors-${e})`,ne={neutral:{background:i("white"),border:i("gray900"),foreground:i("black"),surface:i("gray700"),active:{background:i("white"),border:i("gray900"),foreground:i("black"),surface:i("gray700")},focus:{background:i("white"),border:i("gray900"),foreground:i("black"),surface:i("gray700")},hover:{background:i("white"),border:i("gray900"),foreground:i("black"),surface:i("gray700")}},primary:{background:i("blue500"),border:i("blue500"),foreground:i("white"),surface:i("blue500"),active:{background:i("blue400"),border:i("blue400"),foreground:i("white"),surface:i("blue400")},focus:{background:i("blue500"),border:i("blue500"),foreground:i("white"),surface:i("blue500")},hover:{background:i("blue400"),border:i("blue400"),foreground:i("white"),surface:i("blue400")}},secondary:{background:i("gray900"),border:i("gray900"),foreground:i("black"),surface:i("gray900"),active:{background:i("gray800"),border:i("gray800"),foreground:i("black"),surface:i("gray800")},focus:{background:i("gray900"),border:i("gray900"),foreground:i("black"),surface:i("gray900")},hover:{background:i("gray800"),border:i("gray800"),foreground:i("black"),surface:i("gray800")}}};var j=u(a({},I),{colors:a(a({},I.colors),ne)});function O(e,t="",o="."){return Object.keys(e).reduce((r,n)=>{let s=`${t.length?`${t}${o}`:""}${n}`,d=e[n];return typeof d=="object"&&d!==null&&!Array.isArray(d)?Object.assign(r,O(d,s,o)):r[s]=d,r},{})}function L(e){return O(e,"--fr","-")}function ie(e,t="--fr"){let o={};return Object.keys(e).forEach(r=>{let n=e[r];typeof n=="object"&&n!==null&&!Array.isArray(n)?o[r]=ie(n,`${t}-${r}`):o[r]=`var(${t}-${r})`}),o}var se=L(j),g=ie(j);var z=O(g.colors),ae={color:z,backgroundColor:z,borderColor:z,border:g.borders,borderRadius:g.radii,borderWidth:g.borderWidths,fontFamily:g.fontFamilies,fontSize:g.fontSizes,fontWeight:g.fontWeights,gap:g.space,lineHeight:g.lineHeights,margin:g.space,marginTop:g.space,marginRight:g.space,marginBottom:g.space,marginLeft:g.space,padding:g.space,paddingTop:g.space,paddingRight:g.space,paddingBottom:g.space,paddingLeft:g.space,alignContent:["center","start","end","flex-start","flex-end","normal","baseline","first baseline","last baseline","space-between","space-around","space-evenly","stretch","safe center","unsafe center","inherit","initial","revert","revert-layer","unset"],alignItems:["normal","stretch","center","start","end","flex-start","flex-end","self-start","self-end","baseline","first baseline","last baseline","safe center","unsafe center","inherit","initial","revert","revert-layer","unset"],alignSelf:["auto","normal","center","start","end","self-start","self-end","flex-start","flex-end","baseline","first baseline","last baseline","stretch","safe center","unsafe center","inherit","initial","revert","revert-layer","unset"],flexDirection:["row","row-reverse","column","column-reverse","inherit","initial","revert","revert-layer","unset"],flexWrap:["nowrap","wrap","wrap-reverse","inherit","initial","revert","revert-layer","unset"],justifyContent:["center","start","end","flex-start","flex-end","left","right","normal","space-between","space-around","space-evenly","stretch","safe center","unsafe center","inherit","initial","revert","revert-layer","unset"],justifyItems:["normal","stretch","center","start","end","flex-start","flex-end","self-start","self-end","left","right","baseline","first baseline","last baseline","safe center","unsafe center","legacy right","legacy left","legacy center","inherit","initial","revert","revert-layer","unset"],boxSizing:["border-box","content-box","inherit","initial","revert","revert-layer","unset"],position:["static","relative","absolute","fixed","sticky","inherit","initial","revert","revert-layer","unset"],display:["block","block flex","block flow","block flow-root","block grid","contents","flex","flow-root","grid","inherit","initial","inline","inline flex","inline flow","inline flow-root","inline grid","inline-block","inline-flex","inline-grid","list-item","none","revert","revert-layer","table","table-row-group","table-header-group","table-footer-group","table-row","table-cell","table-column-group","table-column","table-caption","unset"]},le={m:["margin"],mt:["marginTop"],mr:["marginRight"],mb:["marginBottom"],ml:["marginLeft"],mx:["marginLeft","marginRight"],my:["marginTop","marginBottom"],p:["padding"],pt:["paddingTop"],pr:["paddingRight"],pb:["paddingBottom"],pl:["paddingLeft"],px:["paddingLeft","paddingRight"],py:["paddingTop","paddingBottom"]};function Me(e){if(Array.isArray(e))return new Map(e.map(t=>[t,t]));if(typeof e=="object"&&e!==null)return new Map(Object.entries(e));if(["string","number"].includes(typeof e))return new Map([e,e]);throw new Error("Invalid entry in styleProps")}var $e=new Map(Object.entries(ae).map(([e,t])=>[e,Me(t)])),Ie=new Map(Object.entries(le).map(([e,t])=>[e,new Set(t)]));function pe(e){let t=Object.assign({},e),o={};return Object.entries(t).forEach(([r,n])=>{let l=Ie.get(r);l!=null&&(l.forEach(s=>{t[s]=n}),delete t[r])}),Object.entries(t).forEach(([r,n])=>{let l=$e.get(r);if(l!=null)if(typeof n=="string"&&n.indexOf(" ")>-1){let s=n.split(" ");o[r]=s.map(d=>{var c;return(c=l.get(d.toString()))!=null?c:d}).join(" "),delete t[r]}else l.has(n.toString())&&(o[r]=l.get(n.toString()),delete t[r])}),{cssFromProps:o,unmatchedProps:t}}import{jsx as Ke}from"@emotion/react/jsx-runtime";function ce(e){return e&&`fr-${e}`}function Le(e){return e&&(Array.isArray(e)?e.map(t=>ce(t)).join(" "):ce(e))}function ze(d,s){var c=d,{as:e,children:t,className:o,css:r,part:n}=c,l=p(c,["as","children","className","css","part"]);let f=e!=null?e:"div",{cssFromProps:h,unmatchedProps:y}=pe(l),v=Le(n),B=o||v?je(o,v):void 0;return Ke(f,u(a({className:B,css:[a(a({boxSizing:"border-box"},h),r)]},y),{ref:s,children:t}))}var m=de.forwardRef(ze);var K={};re(K,{Body1:()=>Je,Body2:()=>Qe,Caption:()=>Ye,Display1:()=>Ne,Display2:()=>Ue,H1:()=>_e,H2:()=>Xe,H3:()=>qe,H4:()=>Ge,base:()=>P});var P=({fontFamilies:e})=>({fontFamily:e.default,margin:0}),Ne=({fontSizes:e,fontWeights:t,lineHeights:o})=>[P,{fontSize:e["5xl"],fontWeight:t.bold,lineHeight:o["4xl"]}],Ue=({fontSizes:e,fontWeights:t,lineHeights:o})=>[P,{fontSize:e["4xl"],fontWeight:t.bold,lineHeight:o["3xl"]}],_e=({fontSizes:e,fontWeights:t,lineHeights:o})=>[P,{fontSize:e["3xl"],fontWeight:t.bold,lineHeight:o["2xl"]}],Xe=({fontSizes:e,fontWeights:t,lineHeights:o})=>[P,{fontSize:e["2xl"],fontWeight:t.bold,lineHeight:o.xl}],qe=({fontSizes:e,fontWeights:t,lineHeights:o})=>[P,{fontSize:e.xl,fontWeight:t.bold,lineHeight:o.lg}],Ge=({fontSizes:e,fontWeights:t,lineHeights:o})=>[P,{fontSize:e.lg,fontWeight:t.bold,lineHeight:o.md}],Je=({fontSizes:e,fontWeights:t,lineHeights:o})=>[P,{fontSize:e.md,fontWeight:t.regular,lineHeight:o.md}],Qe=({fontSizes:e,fontWeights:t,lineHeights:o})=>[P,{fontSize:e.sm,fontWeight:t.regular,lineHeight:o.md}],Ye=({fontSizes:e,fontWeights:t,lineHeights:o})=>[P,{fontSize:e.xs,fontWeight:t.regular,lineHeight:o.sm}];import{jsx as ue}from"@emotion/react/jsx-runtime";function fe(l){var s=l,{as:e="span",children:t,css:o,variant:r="Body1"}=s,n=p(s,["as","children","css","variant"]);return ue(m,u(a({as:e,css:[K[r],o]},n),{children:t}))}var Ze=["Display1","Display2","H1","H2","H3","H4","Body1","Body2","Caption"],et=Object.fromEntries(Ze.map(e=>{let t=["H1","H2","H3","H4"].includes(e)?e.toLowerCase():void 0,o=r=>ue(fe,u(a({as:t},r),{variant:e,children:r.children}));return o.displayName=`Text.${e}`,[e,o]})),T=Object.assign(fe,et);var N={};re(N,{Link:()=>rt,Plain:()=>nt,Primary:()=>tt,Secondary:()=>ot,base:()=>F});var F=({radii:e,space:t})=>({borderWidth:0,borderRadius:e.md,padding:`${t[2]} ${t[4]}`}),tt=({colors:e})=>[F,{backgroundColor:e.primary.surface,color:e.primary.foreground,"&:hover":{backgroundColor:e.primary.hover.surface}}],ot=({colors:e})=>[F,{backgroundColor:e.secondary.surface,color:e.secondary.foreground,"&:hover":{backgroundColor:e.secondary.hover.surface}}],rt=({colors:e})=>[F,{backgroundColor:e.transparent,color:e.primary.surface,"&:hover":{color:e.primary.hover.surface}}],nt=({colors:e})=>[F,{backgroundColor:e.transparent,color:e.neutral.foreground}];import{jsx as me,jsxs as at}from"@emotion/react/jsx-runtime";function ge(s){var d=s,{as:e,children:t,css:o={},title:r,variant:n="Primary"}=d,l=p(d,["as","children","css","title","variant"]);return at(m,u(a({as:e!=null?e:"button",css:[N[n],o]},l),{children:[t,r&&me(T.Body2,{fontWeight:"demibold",children:r})]}))}var it=["Primary","Secondary","Link","Plain"],st=Object.fromEntries(it.map(e=>{let t=e.toLocaleLowerCase(),o=l=>{var s=l,{part:r}=s,n=p(s,["part"]);return me(ge,u(a({part:[`button-${t}`,r]},n),{variant:e,children:n.children}))};return o.displayName=`Text.${e}`,[e,o]})),E=Object.assign(ge,st);import*as U from"react";import{jsx as xe}from"@emotion/react/jsx-runtime";var lt=U.forwardRef((n,r)=>{var l=n,{children:e,css:t}=l,o=p(l,["children","css"]);return xe(m,u(a({css:[{display:"flex",flexDirection:"row"},t]},o),{ref:r,children:e}))}),pt=U.forwardRef((n,r)=>{var l=n,{children:e,css:t}=l,o=p(l,["children","css"]);return xe(m,u(a({css:[{display:"flex",flexDirection:"column"},t]},o),{ref:r,children:e}))}),R={Column:pt,Row:lt};import{createContext as ct}from"react";import{Global as dt,ThemeProvider as ft}from"@emotion/react";import{jsx as be,jsxs as gt}from"@emotion/react/jsx-runtime";var _=ct({apiKey:"",config:{}});function ut({apiKey:e,children:t,config:o={},theme:r}){let n=r?L(r):{};return gt(_.Provider,{value:{apiKey:e,config:o},children:[be(dt,{styles:{":root":a(a({},se),n)}}),be(ft,{theme:g,children:t})]})}import{useEffect as Ct,useRef as vt,useState as q}from"react";import{XMarkIcon as Rt}from"@heroicons/react/24/solid";import*as w from"@radix-ui/react-popover";import{useCallback as mt,useLayoutEffect as xt,useState as ye}from"react";function he(){let e="DOMRect"in globalThis?new DOMRect:{height:0,width:0,x:0,y:0,bottom:0,top:0,right:0,left:0,toJSON:()=>{}},[t,o]=ye(e),[r,n]=ye(null),l=mt(s=>{n(s)},[]);return xt(()=>{r&&o(r.getBoundingClientRect())},[r]),{node:r,rect:t,ref:l}}import{keyframes as bt}from"@emotion/react";import{jsx as Pe,jsxs as ht}from"@emotion/react/jsx-runtime";var yt=bt({"0%":{opacity:.5,transform:"scale(0.5)"},"50%":{opacity:0,transform:"scale(1)"},"100%":{opacity:0,transform:"scale(1)"}});function we(r){var n=r,{style:e={},part:t=""}=n,o=p(n,["style","part"]);return ht(m,u(a({part:`dot-wrapper ${t}`,style:a({height:"48px",position:"absolute",width:"48px"},e)},o),{children:[Pe(m,{backgroundColor:"primary.surface",part:"dot-pulse",css:{animation:`2s ease-out infinite ${yt}`,borderRadius:"24px",height:"48px",left:0,position:"absolute",top:0,transformOrigin:"center center",width:"48px"}}),Pe(m,{backgroundColor:"primary.surface",part:"dot",style:{borderRadius:"12px",height:"24px",left:"12px",position:"absolute",top:"12px",width:"24px"}})]}))}import{jsx as Pt}from"@emotion/react/jsx-runtime";function Be(r){var n=r,{part:e,src:t}=n,o=p(n,["part","src"]);return Pt(m,a({as:"img",part:["image",e],src:t},o))}import{jsx as Bt}from"@emotion/react/jsx-runtime";function wt(e){var t,o,r;if(e.includes("youtube"))return`https://www.youtube.com/embed/${(t=e.split("v=")[1])==null?void 0:t.split("&")[0]}`;if(e.includes("vimeo"))return`https://player.vimeo.com/video/${(o=e.split("vimeo.com/")[1])==null?void 0:o.split("&")[0]}`;if(e.includes("wistia"))return`https://fast.wistia.net/embed/iframe/${(r=e.split("wistia.com/medias/")[1])==null?void 0:r.split("&")[0]}`;throw new Error("Could not map videoUri to a known provider (Youtube, Vimeo, Wistia).")}function Te(r){var n=r,{part:e,src:t}=n,o=p(n,["part","src"]);let l=wt(t);return Bt(m,a({allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:!0,as:"iframe",backgroundColor:"gray100",borderWidth:0,part:["video",e],src:l},o))}import{jsx as Tt}from"@emotion/react/jsx-runtime";function X(r){var n=r,{src:e,type:t}=n,o=p(n,["src","type"]);return Tt(t==="video"?Te:Be,a({src:e},o))}function Ce({props:e,alignAttr:t,sideAttr:o}){let r=o!=null?o:"bottom",n={},l=()=>{var f;if(["after","before"].includes(e.align)){if(t=="start")return"before";if(t=="end")return"after"}return(f=e.align)!=null?f:"after"},s="-24px",d={top:"bottom",right:"left",bottom:"top",left:"right"};n[d[r]]=s;let c=l();return["before","end"].includes(c)?["top","bottom"].includes(r)?n.right=s:n.bottom=s:["after","start"].includes(c)?["top","bottom"].includes(r)?n.left=s:n.top=s:["top","bottom"].includes(r)?n.left=`calc(50% + ${s})`:n.top=`calc(50% + ${s})`,n}var ve={content:["align","alignOffset","arrowPadding","avoidCollisions","collisionBoundary","collisionPadding","forceMount","hideWhenDetached","onCloseAutoFocus","onEscapeKeyDown","onFocusOutside","onInteractOutside","onOpenAutoFocus","onPointerDownOutside","side","sideOffset","sticky"],root:["defaultOpen","modal","onOpenChange","open"]};function Re(e,t){var n,l,s,d,c;let o=Object.fromEntries(ve.content.map(f=>[f,e[f]]).filter(f=>f[1]!==void 0)),r=Object.fromEntries(ve.root.map(f=>[f,e[f]]).filter(f=>f[1]!==void 0));if(o.align=(n=o.align)!=null?n:"after",o.side=(l=o.side)!=null?l:"bottom",["before","after"].includes(o.align)){let f={after:"end",before:"start"},h=(H,V)=>["top","bottom"].includes(V)?H=="after"?"marginLeft":"marginRight":H=="after"?"marginTop":"marginBottom",y=(s=o.alignOffset)!=null?s:0,v=(d=o.style)!=null?d:{},B=(c=o.side)!=null?c:"bottom",A=o.align;o.style=u(a({},v),{[h(A,B)]:y});let D=["top","bottom"].includes(B)?t.width:t.height;o.alignOffset=(D+y)*-1,o.align=f[A]}return{contentProps:o,rootProps:r}}import{jsx as b,jsxs as G}from"@emotion/react/jsx-runtime";function x(s){var d=s,{anchor:e,children:t,css:o,spotlight:r=!1,style:n}=d,l=p(d,["anchor","children","css","spotlight","style"]);let{node:c,rect:f,ref:h}=he(),{contentProps:y,rootProps:v}=Re(l,f),[B,A]=q(y.align),[D,H]=q(y.side);if(c!==null){let S=c.getAttribute("data-align"),Y=c.getAttribute("data-side");B!==S&&A(S),D!==Y&&H(Y)}let V=vt(null),[W,ke]=q(null);if(Ct(()=>{let S=document.querySelector(e);S!=null&&(V.current=S,ke(V))},[e]),W==null)return null;let M=W.current.getBoundingClientRect(),Q="0";typeof window!="undefined"&&(Q=window.getComputedStyle(W.current).borderRadius);let Oe=Ce({props:l,alignAttr:B,sideAttr:D});return G(w.Root,u(a({defaultOpen:!0},v),{children:[b(w.Anchor,{virtualRef:W}),b(w.Portal,{children:G("div",{css:o,children:[r&&b(m,{borderRadius:Q,part:"tooltip-spotlight",position:"absolute",css:{boxShadow:"0 0 0 2000px rgb(0 0 0 / 0.5)",height:M.height,left:M.left,top:M.top,width:M.width}}),b(w.Content,u(a({asChild:!0},y),{ref:h,children:G(R.Column,{backgroundColor:"white",borderRadius:"md",p:5,part:"tooltip-content",position:"relative",css:a({boxShadow:"0px 4px 20px rgba(0, 0, 0, 0.1)",width:"300px"},n),children:[b(we,{style:Oe}),t]})}))]})})]}))}x.Close=o=>{var r=o,{css:e}=r,t=p(r,["css"]);return b(w.Close,{"aria-label":"Close",asChild:!0,children:b(E.Plain,u(a({css:[{top:0,right:0},e],part:"tooltip-close",position:"absolute"},t),{children:b(Rt,{height:"20",fill:"currentColor"})}))})};x.Media=o=>{var r=o,{src:e}=r,t=p(r,["src"]);return e==null?null:b(X,a({borderRadius:"md md 0 0",borderWidth:"0",css:{aspectRatio:"2"},margin:"-5 -5 5",src:e},t))};x.Primary=r=>{var n=r,{onClick:e,title:t}=n,o=p(n,["onClick","title"]);return t==null?null:b(E.Primary,a({title:t,onClick:e},o))};x.Progress=o=>{var r=o,{children:e}=r,t=p(r,["children"]);return e==null?null:b(T.Body2,u(a({fontWeight:"demibold",part:"progress"},t),{children:e}))};x.Secondary=r=>{var n=r,{onClick:e,title:t}=n,o=p(n,["onClick","title"]);return t==null?null:b(E.Secondary,a({title:t,onClick:e},o))};x.Subtitle=o=>{var r=o,{children:e}=r,t=p(r,["children"]);return e==null?null:b(T.Body2,u(a({part:"subtitle"},t),{children:e}))};x.Title=o=>{var r=o,{children:e}=r,t=p(r,["children"]);return e==null?null:b(T.Body1,u(a({fontWeight:"bold",mb:1,part:"title"},t),{children:e}))};import{Frigade as St}from"@frigade/js";import{useContext as kt,useState as Ot}from"react";function Se(e){let[t,o]=Ot(null),{apiKey:r,config:n}=kt(_);function l(){return k(this,null,function*(){let s=Object.fromEntries(Object.entries(n).filter(([f,h])=>["apiUrl","userId"].includes(f)&&h!=null)),c=yield(yield new St(r,s)).getFlow(e);o(c)})}return t===null&&l(),{flow:t,fetchFlow:l}}import{jsx as C,jsxs as J}from"@emotion/react/jsx-runtime";function Ft(o){var r=o,{flowId:e}=r,t=p(r,["flowId"]);var h;let{flow:n,fetchFlow:l}=Se(e);if(n==null||n!=null&&n.isCompleted||n!=null&&n.isSkipped)return null;n.start();let s=n.getCurrentStep();s==null||s.start();function d(){return k(this,null,function*(){yield n.skip(),l()})}function c(){return k(this,null,function*(){yield s.complete(),l()})}let f=c;return J(x,u(a({anchor:s.selector,onOpenAutoFocus:y=>y.preventDefault(),onPointerDownOutside:y=>y.preventDefault()},t),{children:[C(x.Close,{onClick:d}),C(x.Media,{src:(h=s.videoUri)!=null?h:s.imageUri,type:s.videoUri?"video":"image"}),C(x.Title,{children:s.title}),C(x.Subtitle,{children:s.subtitle}),J(R.Row,{pt:4,alignItems:"center",justifyContent:"space-between",children:[C(x.Progress,{children:`${n.getNumberOfCompletedSteps()}/${n.steps.size}`}),J(R.Row,{gap:3,children:[C(x.Secondary,{title:s.secondaryButtonTitle,onClick:f}),C(x.Primary,{title:s.primaryButtonTitle,onClick:c})]})]})]}))}export{m as Box,E as Button,R as Flex,ut as Provider,T as Text,x as Tooltip,Ft as Tour};
3
3
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Box/index.tsx","../src/shared/theme/themeContract.css.ts","../src/shared/flattenObject.ts","../src/components/Box/styleProps.ts","../src/components/Box/stylePropsToCss.ts","../src/components/Text/Text.styles.ts","../src/components/Text/index.tsx","../src/components/Button/Button.styles.ts","../src/components/Button/index.tsx","../src/components/Flex/Flex.tsx","../src/components/Provider/index.tsx","../../../node_modules/@vanilla-extract/private/dist/vanilla-extract-private.esm.js","../../../node_modules/@vanilla-extract/dynamic/dist/vanilla-extract-dynamic.esm.js","../src/hooks/useThemeOverrides.ts","../src/shared/mapThemePropToThemeVars.ts","../src/components/Tooltip/index.tsx","../src/hooks/useBoundingClientRect.ts","../src/components/Tooltip/Dot.css.ts","../src/components/Tooltip/Dot.tsx","../src/components/Media/Image.tsx","../src/components/Media/Video.tsx","../src/components/Media/Media.tsx","../src/components/Tooltip/getDotPosition.ts","../src/components/Tooltip/mapTooltipPropsToPopoverProps.ts","../src/hooks/useFlow.ts","../src/components/Tour/index.tsx"],"sourcesContent":["import * as React from 'react'\nimport { clsx } from 'clsx'\n\nimport '../../shared/theme/baseTheme.css'\nimport { stylePropsToCss } from './stylePropsToCss'\n\nfunction prefixPart(part: string | undefined) {\n return part ? `fr-${part}` : part\n}\n\nfunction processPart(part: string | string[] | undefined) {\n if (!part) return part\n\n return Array.isArray(part) ? part.map((p) => prefixPart(p)).join(' ') : prefixPart(part)\n}\n\nexport type BoxProps<T extends React.ElementType = React.ElementType> = {\n as?: T\n part?: string | string[]\n} & React.ComponentPropsWithRef<T>\n\nfunction BoxWithRef<T extends React.ElementType = React.ElementType>(\n { as, children, className, css, part, ...props }: BoxProps<T>,\n ref: React.ForwardedRef<T>\n) {\n const Component = as ?? 'div'\n\n const { cssFromProps, unmatchedProps } = stylePropsToCss(props)\n\n const processedPart = processPart(part)\n const classNameWithPart = className || processedPart ? clsx(className, processedPart) : undefined\n\n return (\n // @ts-ignore: TODO: ref types are yet again complaining\n <Component\n className={classNameWithPart}\n css={[{ boxSizing: 'border-box', ...cssFromProps, ...css }]}\n {...unmatchedProps}\n ref={ref}\n >\n {children}\n </Component>\n )\n}\n\nexport const Box = React.forwardRef(BoxWithRef)\n","export var theme = {borders:{md:'var(--fr-borders-md)'},borderWidths:{'0':'var(--fr-borderWidths-0)',md:'var(--fr-borderWidths-md)'},colors:{black:'var(--fr-colors-black)',gray100:'var(--fr-colors-gray100)',gray200:'var(--fr-colors-gray200)',gray300:'var(--fr-colors-gray300)',gray400:'var(--fr-colors-gray400)',gray500:'var(--fr-colors-gray500)',gray600:'var(--fr-colors-gray600)',gray700:'var(--fr-colors-gray700)',gray800:'var(--fr-colors-gray800)',gray900:'var(--fr-colors-gray900)',white:'var(--fr-colors-white)',blue400:'var(--fr-colors-blue400)',blue500:'var(--fr-colors-blue500)',blue800:'var(--fr-colors-blue800)',blue900:'var(--fr-colors-blue900)',green400:'var(--fr-colors-green400)',green500:'var(--fr-colors-green500)',green800:'var(--fr-colors-green800)',transparent:'var(--fr-colors-transparent)',red500:'var(--fr-colors-red500)',neutral:{background:'var(--fr-colors-neutral-background)',border:'var(--fr-colors-neutral-border)',foreground:'var(--fr-colors-neutral-foreground)',surface:'var(--fr-colors-neutral-surface)',active:{background:'var(--fr-colors-neutral-active-background)',border:'var(--fr-colors-neutral-active-border)',foreground:'var(--fr-colors-neutral-active-foreground)',surface:'var(--fr-colors-neutral-active-surface)'},focus:{background:'var(--fr-colors-neutral-focus-background)',border:'var(--fr-colors-neutral-focus-border)',foreground:'var(--fr-colors-neutral-focus-foreground)',surface:'var(--fr-colors-neutral-focus-surface)'},hover:{background:'var(--fr-colors-neutral-hover-background)',border:'var(--fr-colors-neutral-hover-border)',foreground:'var(--fr-colors-neutral-hover-foreground)',surface:'var(--fr-colors-neutral-hover-surface)'}},primary:{background:'var(--fr-colors-primary-background)',border:'var(--fr-colors-primary-border)',foreground:'var(--fr-colors-primary-foreground)',surface:'var(--fr-colors-primary-surface)',active:{background:'var(--fr-colors-primary-active-background)',border:'var(--fr-colors-primary-active-border)',foreground:'var(--fr-colors-primary-active-foreground)',surface:'var(--fr-colors-primary-active-surface)'},focus:{background:'var(--fr-colors-primary-focus-background)',border:'var(--fr-colors-primary-focus-border)',foreground:'var(--fr-colors-primary-focus-foreground)',surface:'var(--fr-colors-primary-focus-surface)'},hover:{background:'var(--fr-colors-primary-hover-background)',border:'var(--fr-colors-primary-hover-border)',foreground:'var(--fr-colors-primary-hover-foreground)',surface:'var(--fr-colors-primary-hover-surface)'}},secondary:{background:'var(--fr-colors-secondary-background)',border:'var(--fr-colors-secondary-border)',foreground:'var(--fr-colors-secondary-foreground)',surface:'var(--fr-colors-secondary-surface)',active:{background:'var(--fr-colors-secondary-active-background)',border:'var(--fr-colors-secondary-active-border)',foreground:'var(--fr-colors-secondary-active-foreground)',surface:'var(--fr-colors-secondary-active-surface)'},focus:{background:'var(--fr-colors-secondary-focus-background)',border:'var(--fr-colors-secondary-focus-border)',foreground:'var(--fr-colors-secondary-focus-foreground)',surface:'var(--fr-colors-secondary-focus-surface)'},hover:{background:'var(--fr-colors-secondary-hover-background)',border:'var(--fr-colors-secondary-hover-border)',foreground:'var(--fr-colors-secondary-hover-foreground)',surface:'var(--fr-colors-secondary-hover-surface)'}}},fontFamilies:{'default':'var(--fr-fontFamilies-default)'},fontSizes:{xs:'var(--fr-fontSizes-xs)',sm:'var(--fr-fontSizes-sm)',md:'var(--fr-fontSizes-md)',lg:'var(--fr-fontSizes-lg)',xl:'var(--fr-fontSizes-xl)','2xl':'var(--fr-fontSizes-2xl)','3xl':'var(--fr-fontSizes-3xl)','4xl':'var(--fr-fontSizes-4xl)','5xl':'var(--fr-fontSizes-5xl)'},fontWeights:{regular:'var(--fr-fontWeights-regular)',demibold:'var(--fr-fontWeights-demibold)',bold:'var(--fr-fontWeights-bold)'},letterSpacings:{md:'var(--fr-letterSpacings-md)'},lineHeights:{xs:'var(--fr-lineHeights-xs)',sm:'var(--fr-lineHeights-sm)',md:'var(--fr-lineHeights-md)',lg:'var(--fr-lineHeights-lg)',xl:'var(--fr-lineHeights-xl)','2xl':'var(--fr-lineHeights-2xl)','3xl':'var(--fr-lineHeights-3xl)','4xl':'var(--fr-lineHeights-4xl)'},radii:{md:'var(--fr-radii-md)',lg:'var(--fr-radii-lg)',round:'var(--fr-radii-round)'},shadows:{md:'var(--fr-shadows-md)'},space:{'0':'var(--fr-space-0)','1':'var(--fr-space-1)','2':'var(--fr-space-2)','3':'var(--fr-space-3)','4':'var(--fr-space-4)','5':'var(--fr-space-5)','6':'var(--fr-space-6)','7':'var(--fr-space-7)','8':'var(--fr-space-8)','9':'var(--fr-space-9)','10':'var(--fr-space-10)','11':'var(--fr-space-11)','12':'var(--fr-space-12)','13':'var(--fr-space-13)','14':'var(--fr-space-14)','15':'var(--fr-space-15)','16':'var(--fr-space-16)','17':'var(--fr-space-17)','18':'var(--fr-space-18)','19':'var(--fr-space-19)','20':'var(--fr-space-20)','-20':'var(--fr-space--20)','-19':'var(--fr-space--19)','-18':'var(--fr-space--18)','-17':'var(--fr-space--17)','-16':'var(--fr-space--16)','-15':'var(--fr-space--15)','-14':'var(--fr-space--14)','-13':'var(--fr-space--13)','-12':'var(--fr-space--12)','-11':'var(--fr-space--11)','-10':'var(--fr-space--10)','-9':'var(--fr-space--9)','-8':'var(--fr-space--8)','-7':'var(--fr-space--7)','-6':'var(--fr-space--6)','-5':'var(--fr-space--5)','-4':'var(--fr-space--4)','-3':'var(--fr-space--3)','-2':'var(--fr-space--2)','-1':'var(--fr-space--1)','-0.5':'var(--fr-space--0-5)','0.5':'var(--fr-space-0-5)',auto:'var(--fr-space-auto)'}};","export function flattenObject(obj: Record<any, any>, path = '', separator = '.') {\n return Object.keys(obj).reduce((acc, k) => {\n const prefix = path.length ? `${path}${separator}` : ''\n const currentPath = `${prefix}${k}`\n const currentValue = obj[k]\n\n if (typeof currentValue === 'object' && currentValue !== null && !Array.isArray(currentValue)) {\n Object.assign(acc, flattenObject(currentValue, currentPath, separator))\n } else {\n acc[currentPath] = currentValue\n }\n\n return acc\n }, {})\n}\n","import { theme } from '../../shared/theme/themeContract.css'\nimport { flattenObject } from '../../shared/flattenObject'\n\nconst colorTokens: Record<string, unknown> = flattenObject(theme.colors)\n\n/*\n TODO:\n - top / right / bottom / left\n*/\n\nexport const styleProps = {\n color: colorTokens,\n backgroundColor: colorTokens,\n borderColor: colorTokens,\n border: theme.borders,\n borderRadius: theme.radii,\n borderWidth: theme.borderWidths,\n\n fontFamily: theme.fontFamilies,\n fontSize: theme.fontSizes,\n fontWeight: theme.fontWeights,\n\n gap: theme.space,\n\n lineHeight: theme.lineHeights,\n\n margin: theme.space,\n marginTop: theme.space,\n marginRight: theme.space,\n marginBottom: theme.space,\n marginLeft: theme.space,\n\n padding: theme.space,\n paddingTop: theme.space,\n paddingRight: theme.space,\n paddingBottom: theme.space,\n paddingLeft: theme.space,\n\n alignContent: [\n 'center',\n 'start',\n 'end',\n 'flex-start',\n 'flex-end',\n 'normal',\n 'baseline',\n 'first baseline',\n 'last baseline',\n 'space-between',\n 'space-around',\n 'space-evenly',\n 'stretch',\n 'safe center',\n 'unsafe center',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n alignItems: [\n 'normal',\n 'stretch',\n 'center',\n 'start',\n 'end',\n 'flex-start',\n 'flex-end',\n 'self-start',\n 'self-end',\n 'baseline',\n 'first baseline',\n 'last baseline',\n 'safe center',\n 'unsafe center',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n alignSelf: [\n 'auto',\n 'normal',\n 'center',\n 'start',\n 'end',\n 'self-start',\n 'self-end',\n 'flex-start',\n 'flex-end',\n 'baseline',\n 'first baseline',\n 'last baseline',\n 'stretch',\n 'safe center',\n 'unsafe center',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n flexDirection: [\n 'row',\n 'row-reverse',\n 'column',\n 'column-reverse',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n flexWrap: [\n 'nowrap',\n 'wrap',\n 'wrap-reverse',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n justifyContent: [\n 'center',\n 'start',\n 'end',\n 'flex-start',\n 'flex-end',\n 'left',\n 'right',\n 'normal',\n 'space-between',\n 'space-around',\n 'space-evenly',\n 'stretch',\n 'safe center',\n 'unsafe center',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n justifyItems: [\n 'normal',\n 'stretch',\n 'center',\n 'start',\n 'end',\n 'flex-start',\n 'flex-end',\n 'self-start',\n 'self-end',\n 'left',\n 'right',\n 'baseline',\n 'first baseline',\n 'last baseline',\n 'safe center',\n 'unsafe center',\n 'legacy right',\n 'legacy left',\n 'legacy center',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n boxSizing: ['border-box', 'content-box', 'inherit', 'initial', 'revert', 'revert-layer', 'unset'],\n\n position: [\n 'static',\n 'relative',\n 'absolute',\n 'fixed',\n 'sticky',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n display: [\n 'block',\n 'block flex',\n 'block flow',\n 'block flow-root',\n 'block grid',\n 'contents',\n 'flex',\n 'flow-root',\n 'grid',\n 'inherit',\n 'initial',\n 'inline',\n 'inline flex',\n 'inline flow',\n 'inline flow-root',\n 'inline grid',\n 'inline-block',\n 'inline-flex',\n 'inline-grid',\n 'list-item',\n 'none',\n 'revert',\n 'revert-layer',\n 'table',\n 'table-row-group',\n 'table-header-group',\n 'table-footer-group',\n 'table-row',\n 'table-cell',\n 'table-column-group',\n 'table-column',\n 'table-caption',\n 'unset',\n ],\n}\n\nexport const stylePropShorthands = {\n m: ['margin'],\n mt: ['marginTop'],\n mr: ['marginRight'],\n mb: ['marginBottom'],\n ml: ['marginLeft'],\n mx: ['marginLeft', 'marginRight'],\n my: ['marginTop', 'marginBottom'],\n\n p: ['padding'],\n pt: ['paddingTop'],\n pr: ['paddingRight'],\n pb: ['paddingBottom'],\n pl: ['paddingLeft'],\n px: ['paddingLeft', 'paddingRight'],\n py: ['paddingTop', 'paddingBottom'],\n}\n","import { styleProps, stylePropShorthands } from './styleProps'\n\nfunction prepValue(value) {\n if (Array.isArray(value)) {\n return new Map(value.map((v) => [v, v]))\n } else if (typeof value === 'object' && value !== null) {\n return new Map(Object.entries(value))\n } else if (['string', 'number'].includes(typeof value)) {\n return new Map([value, value])\n }\n\n throw new Error('Invalid entry in styleProps')\n}\n\nconst stylePropsMap = new Map(\n Object.entries(styleProps).map(([propName, value]) => {\n return [propName, prepValue(value)]\n })\n)\n\nconst stylePropShorthandsMap = new Map(\n Object.entries(stylePropShorthands).map(([shorthand, targetProps]) => {\n return [shorthand, new Set(targetProps)]\n })\n)\n\nexport function stylePropsToCss(props: Record<any, any>) {\n const unmatchedProps = Object.assign({}, props)\n const cssFromProps = {}\n\n // Convert shorthand styleProps to full versions\n Object.entries(unmatchedProps).forEach(([propName, propValue]) => {\n const matchedShorthand = stylePropShorthandsMap.get(propName)\n if (matchedShorthand != null) {\n matchedShorthand.forEach((propName) => {\n unmatchedProps[propName] = propValue\n })\n\n delete unmatchedProps[propName]\n }\n })\n\n // Convert styleProps to style object\n Object.entries(unmatchedProps).forEach(([propName, propValue]) => {\n const styleProp = stylePropsMap.get(propName)\n if (styleProp != null) {\n if (typeof propValue === 'string' && propValue.indexOf(' ') > -1) {\n // Split space-separated values out and process them individually\n const splitPropValues = propValue.split(' ')\n\n cssFromProps[propName] = splitPropValues\n .map((v) => styleProp.get(v.toString()) ?? v)\n .join(' ')\n\n delete unmatchedProps[propName]\n } else if (styleProp.has(propValue.toString())) {\n cssFromProps[propName] = styleProp.get(propValue.toString())\n delete unmatchedProps[propName]\n }\n }\n })\n\n return { cssFromProps, unmatchedProps }\n}\n","export const base = ({ fontFamilies }) => ({\n fontFamily: fontFamilies.default,\n margin: 0,\n})\n\nexport const Display1 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes['5xl'],\n fontWeight: fontWeights.bold,\n lineHeight: lineHeights['4xl'],\n },\n]\n\nexport const Display2 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes['4xl'],\n fontWeight: fontWeights.bold,\n lineHeight: lineHeights['3xl'],\n },\n]\n\nexport const H1 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes['3xl'],\n fontWeight: fontWeights.bold,\n lineHeight: lineHeights['2xl'],\n },\n]\n\nexport const H2 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes['2xl'],\n fontWeight: fontWeights.bold,\n lineHeight: lineHeights.xl,\n },\n]\n\nexport const H3 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes.xl,\n fontWeight: fontWeights.bold,\n lineHeight: lineHeights.lg,\n },\n]\n\nexport const H4 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes.lg,\n fontWeight: fontWeights.bold,\n lineHeight: lineHeights.md,\n },\n]\n\nexport const Body1 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes.md,\n fontWeight: fontWeights.regular,\n lineHeight: lineHeights.md,\n },\n]\n\nexport const Body2 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes.sm,\n fontWeight: fontWeights.regular,\n lineHeight: lineHeights.md,\n },\n]\n\nexport const Caption = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes.xs,\n fontWeight: fontWeights.regular,\n lineHeight: lineHeights.sm,\n },\n]\n","import { Box, BoxProps } from '../Box'\n\nimport * as styles from './Text.styles'\n\ntype TextVariant =\n | 'Display1'\n | 'Display2'\n | 'H1'\n | 'H2'\n | 'H3'\n | 'H4'\n | 'Body1'\n | 'Body2'\n | 'Caption'\n\nexport interface TextProps extends BoxProps {\n variant?: TextVariant\n}\n\nfunction BaseText({ as = 'span', children, css, variant = 'Body1', ...props }: TextProps) {\n return (\n <Box as={as} css={[styles[variant], css]} {...props}>\n {children}\n </Box>\n )\n}\n\nconst textVariantNames: TextVariant[] = [\n 'Display1',\n 'Display2',\n 'H1',\n 'H2',\n 'H3',\n 'H4',\n 'Body1',\n 'Body2',\n 'Caption',\n]\n\nconst textVariantComponents = Object.fromEntries(\n textVariantNames.map((variant) => {\n const asProp = ['H1', 'H2', 'H3', 'H4'].includes(variant)\n ? (variant.toLowerCase() as 'h1' | 'h2' | 'h3' | 'h4')\n : undefined\n const component = (props: TextProps) => (\n <BaseText as={asProp} {...props} variant={variant}>\n {props.children}\n </BaseText>\n )\n\n component.displayName = `Text.${variant}`\n\n return [variant, component]\n })\n)\n\nexport const Text = Object.assign(BaseText, textVariantComponents)\n","export const base = ({ radii, space }) => ({\n borderWidth: 0,\n borderRadius: radii.md,\n padding: `${space[2]} ${space[4]}`,\n})\n\nexport const Primary = ({ colors }) => [\n base,\n {\n backgroundColor: colors.primary.surface,\n color: colors.primary.foreground,\n\n '&:hover': {\n backgroundColor: colors.primary.hover.surface,\n },\n },\n]\n\nexport const Secondary = ({ colors }) => [\n base,\n {\n backgroundColor: colors.secondary.surface,\n color: colors.secondary.foreground,\n\n '&:hover': {\n backgroundColor: colors.secondary.hover.surface,\n },\n },\n]\n\nexport const Link = ({ colors }) => [\n base,\n {\n backgroundColor: colors.transparent,\n color: colors.primary.surface,\n\n '&:hover': {\n color: colors.primary.hover.surface,\n },\n },\n]\n\nexport const Plain = ({ colors }) => [\n base,\n {\n backgroundColor: colors.transparent,\n color: colors.neutral.foreground,\n },\n]\n","import { Box, BoxProps } from '../Box'\nimport { Text } from '../Text'\n\nimport * as styles from './Button.styles'\n\n// TODO: Generate this type from buttonVariantNames\ntype ButtonVariant = 'Primary' | 'Secondary' | 'Link' | 'Plain'\n\nexport interface ButtonProps extends BoxProps {\n title?: string\n variant?: ButtonVariant\n}\n\nfunction BaseButton({ as, children, css = {}, title, variant = 'Primary', ...props }: ButtonProps) {\n return (\n <Box as={as ?? 'button'} css={[styles[variant], css]} {...props}>\n {children}\n {title && <Text.Body2 fontWeight=\"demibold\">{title}</Text.Body2>}\n </Box>\n )\n}\n\nconst buttonVariantNames: ButtonVariant[] = ['Primary', 'Secondary', 'Link', 'Plain']\n\nconst buttonVariantComponents = Object.fromEntries(\n buttonVariantNames.map((variant) => {\n const variantPart = variant.toLocaleLowerCase()\n\n const component = ({ part, ...props }: ButtonProps) => (\n <BaseButton part={[`button-${variantPart}`, part]} {...props} variant={variant}>\n {props.children}\n </BaseButton>\n )\n\n component.displayName = `Text.${variant}`\n\n return [variant, component]\n })\n)\n\nexport const Button = Object.assign(BaseButton, buttonVariantComponents)\n","import * as React from 'react'\nimport { Box, BoxProps } from '../Box'\n\nconst Row = React.forwardRef(({ children, css, ...props }: BoxProps, ref) => {\n return (\n <Box css={[{ display: 'flex', flexDirection: 'row' }, css]} {...props} ref={ref}>\n {children}\n </Box>\n )\n})\n\nconst Column = React.forwardRef(({ children, css, ...props }: BoxProps, ref) => {\n return (\n <Box css={[{ display: 'flex', flexDirection: 'column' }, css]} {...props} ref={ref}>\n {children}\n </Box>\n )\n})\n\nexport const Flex = {\n Column,\n Row,\n}\n","import { createContext } from 'react'\nimport { ThemeProvider } from '@emotion/react'\n\nimport { useThemeOverrides } from '../../hooks/useThemeOverrides'\nimport { theme as themeContract } from '../../shared/theme/themeContract.css'\n\nexport const FrigadeContext = createContext<{ apiKey: string; config: ProviderConfig }>({\n apiKey: '',\n config: {},\n})\n\n// TODO: type theme something like Partial<typeof themeContract>, but allow any value for those keys\nexport interface ProviderProps {\n apiKey: string\n children?: React.ReactNode\n config?: ProviderConfig\n theme?: Record<any, any>\n}\n\ninterface ProviderConfig {\n apiUrl?: string\n userId?: string\n}\n\nexport function Provider({ apiKey, children, config = {}, theme }: ProviderProps) {\n useThemeOverrides(theme)\n\n return (\n <FrigadeContext.Provider value={{ apiKey, config }}>\n <ThemeProvider theme={themeContract}>{children}</ThemeProvider>\n </FrigadeContext.Provider>\n )\n}\n","function getVarName(variable) {\n var matches = variable.match(/^var\\((.*)\\)$/);\n\n if (matches) {\n return matches[1];\n }\n\n return variable;\n}\n\nfunction get(obj, path) {\n var result = obj;\n\n for (var key of path) {\n if (!(key in result)) {\n throw new Error(\"Path \".concat(path.join(' -> '), \" does not exist in object\"));\n }\n\n result = result[key];\n }\n\n return result;\n}\n\nfunction walkObject(obj, fn) {\n var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n var clone = obj.constructor();\n\n for (var key in obj) {\n var _value = obj[key];\n var currentPath = [...path, key];\n\n if (typeof _value === 'string' || typeof _value === 'number' || _value == null) {\n clone[key] = fn(_value, currentPath);\n } else if (typeof _value === 'object' && !Array.isArray(_value)) {\n clone[key] = walkObject(_value, fn, currentPath);\n } else {\n console.warn(\"Skipping invalid key \\\"\".concat(currentPath.join('.'), \"\\\". Should be a string, number, null or object. Received: \\\"\").concat(Array.isArray(_value) ? 'Array' : typeof _value, \"\\\"\"));\n }\n }\n\n return clone;\n}\n\nexport { get, getVarName, walkObject };\n","import { walkObject, get, getVarName } from '@vanilla-extract/private';\n\nfunction assignInlineVars(varsOrContract, tokens) {\n var styles = {};\n\n if (typeof tokens === 'object') {\n var _contract = varsOrContract;\n walkObject(tokens, (value, path) => {\n var varName = get(_contract, path);\n styles[getVarName(varName)] = String(value);\n });\n } else {\n var _vars = varsOrContract;\n\n for (var varName in _vars) {\n styles[getVarName(varName)] = _vars[varName];\n }\n }\n\n Object.defineProperty(styles, 'toString', {\n value: function value() {\n return Object.keys(this).map(key => \"\".concat(key, \":\").concat(this[key])).join(';');\n },\n writable: false\n });\n return styles;\n}\n\nfunction setVar(element, variable, value) {\n element.style.setProperty(getVarName(variable), value);\n}\n\nfunction setElementVars(element, varsOrContract, tokens) {\n if (typeof tokens === 'object') {\n var _contract = varsOrContract;\n walkObject(tokens, (value, path) => {\n setVar(element, get(_contract, path), String(value));\n });\n } else {\n var _vars = varsOrContract;\n\n for (var varName in _vars) {\n setVar(element, varName, _vars[varName]);\n }\n }\n}\n\nexport { assignInlineVars, setElementVars };\n","import { setElementVars } from '@vanilla-extract/dynamic'\nimport { useEffect } from 'react'\n\nimport { mapThemePropToThemeVars } from '../shared/mapThemePropToThemeVars'\n\nexport function useThemeOverrides(themeOverrides = {}, selector = ':root') {\n useEffect(() => {\n const mappedThemeVars = mapThemePropToThemeVars(themeOverrides)\n const root: HTMLElement = document.querySelector(selector)\n setElementVars(root, mappedThemeVars)\n }, [themeOverrides])\n}\n","import { theme } from './theme/themeContract.css'\n\n/*\n Given a theme contract that tells us which CSS variable to use:\n themeContract = {\n colors: {\n blue500: 'var(--fr-blue-500)'\n }\n }\n \n And a theme override prop that tells us which value to assign to that CSS variable:\n theme = {\n colors: {\n blue500: 'teal'\n }\n }\n\n Assign the override to the css variable like so:\n {\n 'var(--fr-blue-500)': 'teal'\n }\n*/\nexport function mapThemePropToThemeVars(themeLevel, contractLevel = theme) {\n return Object.keys(themeLevel).reduce((acc, key) => {\n const currentValue = themeLevel[key]\n\n if (\n typeof currentValue === 'object' &&\n currentValue !== null &&\n !Array.isArray(currentValue) &&\n key in themeLevel\n ) {\n Object.assign(acc, mapThemePropToThemeVars(currentValue, contractLevel[key]))\n } else {\n acc[contractLevel[key]] = themeLevel[key]\n }\n return acc\n }, {})\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport { clsx } from 'clsx'\n\nimport { XMarkIcon } from '@heroicons/react/24/solid'\nimport * as Popover from '@radix-ui/react-popover'\n\nimport { useBoundingClientRect } from '../../hooks/useBoundingClientRect'\nimport { Box } from '../Box'\nimport { Button, ButtonProps } from '../Button'\nimport { Dot } from './Dot'\nimport { Flex } from '../Flex/Flex'\nimport { Media, MediaProps } from '../Media'\nimport { Text, TextProps } from '../Text'\nimport { getDotPosition } from './getDotPosition'\nimport { mapTooltipPropsToRadixProps } from './mapTooltipPropsToPopoverProps'\n\ninterface MergedRadixPopoverProps\n extends Pick<Popover.PopoverProps, 'defaultOpen' | 'modal' | 'onOpenChange' | 'open'>,\n Omit<Popover.PopoverContentProps, 'align' | 'asChild'> {}\nexport interface TooltipProps extends MergedRadixPopoverProps {\n align?: Popover.PopoverContentProps['align'] | 'before' | 'after'\n anchor?: string\n spotlight?: boolean\n style?: React.CSSProperties\n}\n\nexport function Tooltip({\n anchor,\n children,\n css,\n spotlight = false,\n style,\n ...props\n}: TooltipProps) {\n const { node: contentNode, rect: contentRect, ref: contentRef } = useBoundingClientRect()\n const [alignAttr, setAlignAttr] = useState(props.align)\n const [sideAttr, setSideAttr] = useState(props.side)\n\n // Radix will update data attrs to let us know if Popover.Content has collided\n if (contentNode !== null) {\n const currentAlignAttr = contentNode.getAttribute('data-align')\n const currentSideAttr = contentNode.getAttribute('data-side')\n\n if (alignAttr !== currentAlignAttr) {\n setAlignAttr(currentAlignAttr)\n }\n\n if (sideAttr !== currentSideAttr) {\n setSideAttr(currentSideAttr)\n }\n }\n\n const { contentProps, rootProps } = mapTooltipPropsToRadixProps(props, contentRect)\n\n const anchorRef = useRef(null)\n const [anchorElementRef, setAnchorElementRef] = useState(null)\n\n useEffect(() => {\n const anchorQuery = document.querySelector(anchor)\n\n if (anchorQuery != null) {\n anchorRef.current = anchorQuery\n setAnchorElementRef(anchorRef)\n }\n }, [anchor])\n\n if (anchorElementRef == null) return null\n\n const anchorRect = anchorElementRef.current.getBoundingClientRect()\n\n let anchorRadius = '0'\n if (typeof window !== 'undefined') {\n anchorRadius = window.getComputedStyle(anchorElementRef.current).borderRadius\n }\n\n const dotPosition = getDotPosition({ props, alignAttr, sideAttr })\n\n return (\n <Popover.Root defaultOpen={true} {...rootProps}>\n <Popover.Anchor virtualRef={anchorElementRef} />\n <Popover.Portal>\n <div css={css}>\n {spotlight && (\n <Box\n borderRadius={anchorRadius}\n part=\"tooltip-spotlight\"\n position=\"absolute\"\n css={{\n boxShadow: '0 0 0 2000px rgb(0 0 0 / 0.5)',\n height: anchorRect.height,\n left: anchorRect.left,\n top: anchorRect.top,\n width: anchorRect.width,\n }}\n />\n )}\n <Popover.Content asChild {...contentProps} ref={contentRef}>\n <Flex.Column\n backgroundColor=\"white\"\n borderRadius=\"md\"\n p={5}\n part=\"tooltip-content\"\n position=\"relative\"\n css={{\n boxShadow: '0px 4px 20px rgba(0, 0, 0, 0.1)',\n width: '300px',\n ...style,\n }}\n >\n <Dot style={dotPosition} />\n\n {children}\n </Flex.Column>\n </Popover.Content>\n </div>\n </Popover.Portal>\n </Popover.Root>\n )\n}\n\nTooltip.Close = ({ css, ...props }: ButtonProps) => {\n return (\n <Popover.Close aria-label=\"Close\" asChild>\n <Button.Plain\n css={[\n {\n top: 0,\n right: 0,\n },\n css,\n ]}\n part=\"tooltip-close\"\n position=\"absolute\"\n {...props}\n >\n <XMarkIcon height=\"20\" fill=\"currentColor\" />\n </Button.Plain>\n </Popover.Close>\n )\n}\n\nTooltip.Media = ({ src, ...props }: MediaProps) => {\n if (src == null) return null\n\n return (\n <Media\n borderRadius=\"md md 0 0\"\n borderWidth=\"0\"\n css={{\n aspectRatio: '2',\n }}\n margin=\"-5 -5 5\"\n src={src}\n {...props}\n />\n )\n}\n\nTooltip.Primary = ({ onClick, title, ...props }: ButtonProps) => {\n if (title == null) return null\n\n return <Button.Primary title={title} onClick={onClick} {...props} />\n}\n\nTooltip.Progress = ({ children, ...props }: TextProps) => {\n if (children == null) return null\n\n return (\n <Text.Body2 fontWeight=\"demibold\" part=\"progress\" {...props}>\n {children}\n </Text.Body2>\n )\n}\n\nTooltip.Secondary = ({ onClick, title, ...props }: ButtonProps) => {\n if (title == null) return null\n\n return <Button.Secondary title={title} onClick={onClick} {...props} />\n}\n\nTooltip.Subtitle = ({ children, ...props }: TextProps) => {\n if (children == null) return null\n\n return (\n <Text.Body2 part=\"subtitle\" {...props}>\n {children}\n </Text.Body2>\n )\n}\n\nTooltip.Title = ({ children, ...props }: TextProps) => {\n if (children == null) return null\n\n return (\n <Text.Body1 fontWeight=\"bold\" mb={1} part=\"title\" {...props}>\n {children}\n </Text.Body1>\n )\n}\n","import { useCallback, useLayoutEffect, useState } from 'react'\n\nexport function useBoundingClientRect() {\n const initialRect =\n 'DOMRect' in globalThis\n ? new DOMRect()\n : {\n height: 0,\n width: 0,\n x: 0,\n y: 0,\n bottom: 0,\n top: 0,\n right: 0,\n left: 0,\n toJSON: () => {},\n }\n const [rect, setRect] = useState(initialRect)\n const [node, setNode] = useState(null)\n\n const ref = useCallback((node: HTMLElement) => {\n setNode(node)\n }, [])\n\n useLayoutEffect(() => {\n if (!node) return\n\n setRect(node.getBoundingClientRect())\n }, [node])\n\n return {\n node,\n rect,\n ref,\n }\n}\n","import 'src/components/Tooltip/Dot.css.ts.vanilla.css?source=QGtleWZyYW1lcyBfMTZ0ZDQyMCB7CiAgMCUgewogICAgb3BhY2l0eTogMC41OwogICAgdHJhbnNmb3JtOiBzY2FsZSgwLjUpOwogIH0KICA1MCUgewogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgfQogIDEwMCUgewogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgfQp9Ci5fMTZ0ZDQyMSB7CiAgYW5pbWF0aW9uOiAycyBlYXNlLW91dCBpbmZpbml0ZSBfMTZ0ZDQyMDsKfQ==';\nexport var animationPulse = '_16td421';","import { CSSProperties } from 'react'\nimport { Box, BoxProps } from '../Box'\n\nimport { animationPulse } from './Dot.css'\n\nexport interface DotProps extends BoxProps {}\n\nexport function Dot({ style = {}, part = '', ...props }: DotProps) {\n return (\n <Box\n part={`dot-wrapper ${part}`}\n style={{\n height: '48px',\n position: 'absolute',\n width: '48px',\n ...style,\n }}\n {...props}\n >\n <Box\n backgroundColor=\"primary.surface\"\n className={animationPulse}\n part=\"dot-pulse\"\n style={{\n borderRadius: '24px',\n height: '48px',\n left: 0,\n position: 'absolute',\n top: 0,\n transformOrigin: 'center center',\n width: '48px',\n }}\n />\n <Box\n backgroundColor=\"primary.surface\"\n part=\"dot\"\n style={{\n borderRadius: '12px',\n height: '24px',\n left: '12px',\n position: 'absolute',\n top: '12px',\n width: '24px',\n }}\n />\n </Box>\n )\n}\n","import { Box, BoxProps } from '../Box'\n\nexport interface ImageProps extends BoxProps {\n src: string\n}\n\nexport function Image({ part, src, ...props }: ImageProps) {\n return <Box as=\"img\" part={['image', part]} src={src} {...props} />\n}\n","import { Box, BoxProps } from '../Box'\n\nfunction getVideoEmbedSrc(videoUri: string) {\n if (videoUri.includes('youtube')) {\n const videoId = videoUri.split('v=')[1]?.split('&')[0]\n\n return `https://www.youtube.com/embed/${videoId}`\n } else if (videoUri.includes('vimeo')) {\n const videoId = videoUri.split('vimeo.com/')[1]?.split('&')[0]\n\n return `https://player.vimeo.com/video/${videoId}`\n } else if (videoUri.includes('wistia')) {\n const videoId = videoUri.split('wistia.com/medias/')[1]?.split('&')[0]\n\n return `https://fast.wistia.net/embed/iframe/${videoId}`\n }\n\n throw new Error('Could not map videoUri to a known provider (Youtube, Vimeo, Wistia).')\n}\n\nexport interface VideoProps extends BoxProps {\n src: string\n}\n\nexport function Video({ part, src, ...props }: VideoProps) {\n const videoEmbedSrc = getVideoEmbedSrc(src)\n\n // TODO: Add play button overtop?\n return (\n <Box\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n as=\"iframe\"\n backgroundColor=\"gray100\"\n borderWidth={0}\n part={['video', part]}\n src={videoEmbedSrc}\n {...props}\n ></Box>\n )\n}\n","import { Image } from './Image'\nimport { Video } from './Video'\nimport { BoxProps } from '../Box'\n\nexport interface MediaProps extends BoxProps {\n src: string\n type: 'image' | 'video'\n}\n\nexport function Media({ src, type, ...props }: MediaProps) {\n const Component = type === 'video' ? Video : Image\n\n return <Component src={src} {...props} />\n}\n","export function getDotPosition({ props, alignAttr, sideAttr }) {\n const currentSide = sideAttr ?? 'bottom'\n const dotProps = {}\n\n // Radix's collision system isn't aware of our custom before|after align\n const currentAlign = (() => {\n if (['after', 'before'].includes(props.align)) {\n if (alignAttr == 'start') {\n return 'before'\n } else if (alignAttr == 'end') {\n return 'after'\n }\n }\n\n return props.align\n })()\n\n const dotOffset = '-24px'\n\n const oppositeSides = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right',\n }\n\n /* \n Rules:\n - Dot is opposite to side prop (e.g. side=left -> dot=right)\n - align=before|end -> Dot goes to highest extent (right/bottom) of align-axis\n - align=after|start -> Dot goes to lowest extent (left/top) of align-axis\n - align=center -> Dot goes to the center\n */\n\n dotProps[oppositeSides[currentSide]] = dotOffset\n\n if (['before', 'end'].includes(currentAlign)) {\n if (['top', 'bottom'].includes(currentSide)) {\n dotProps['right'] = dotOffset\n } else {\n dotProps['bottom'] = dotOffset\n }\n } else if (['after', 'start'].includes(currentAlign)) {\n if (['top', 'bottom'].includes(currentSide)) {\n dotProps['left'] = dotOffset\n } else {\n dotProps['top'] = dotOffset\n }\n } else {\n // The only option left is align=center\n if (['top', 'bottom'].includes(currentSide)) {\n dotProps['left'] = `calc(50% + ${dotOffset})`\n } else {\n dotProps['top'] = `calc(50% + ${dotOffset})`\n }\n }\n\n return dotProps\n}\n","import { TooltipProps } from '.'\n\nconst RADIX_PROPS = {\n content: [\n 'align',\n 'alignOffset',\n 'arrowPadding',\n 'avoidCollisions',\n 'collisionBoundary',\n 'collisionPadding',\n 'forceMount',\n 'hideWhenDetached',\n 'onCloseAutoFocus',\n 'onEscapeKeyDown',\n 'onFocusOutside',\n 'onInteractOutside',\n 'onOpenAutoFocus',\n 'onPointerDownOutside',\n 'side',\n 'sideOffset',\n 'sticky',\n ],\n root: ['defaultOpen', 'modal', 'onOpenChange', 'open'],\n}\n\nexport function mapTooltipPropsToRadixProps(props: TooltipProps, contentRect: DOMRect) {\n const contentProps = Object.fromEntries(\n RADIX_PROPS.content\n .map((propName) => [propName, props[propName]])\n .filter((propEntry) => propEntry[1] !== undefined)\n )\n const rootProps = Object.fromEntries(\n RADIX_PROPS.root\n .map((propName) => [propName, props[propName]])\n .filter((propEntry) => propEntry[1] !== undefined)\n )\n\n /*\n Here we're extending Popover.Content's align prop to accept 'before' and\n 'after' in addition to its existing values.\n\n TL;DR:\n 1. Use existing alignOffset prop to push Content to be before/after the\n corresponding edge of the element it's attached to.\n 2. Add a CSS margin to patch alignOffset back onto Content, as Popover\n has a bug that prevents alignOffset from extending past the edge of\n its Trigger/Anchor.\n\n SEE: https://github.com/radix-ui/primitives/issues/2457\n */\n if (['before', 'after'].includes(contentProps['align'])) {\n const mapToOriginalAlignValues = {\n after: 'end',\n before: 'start',\n }\n\n const mapAlignOffsetToMargin = (align, side) => {\n /*\n Translate alignOffset to CSS margin based on align and side props:\n bottom || top\n after: marginLeft\n before: marginRight\n left || right\n after: marginTop\n before: marginBottom\n */\n if (['top', 'bottom'].includes(side)) {\n if (align == 'after') {\n return 'marginLeft'\n } else {\n return 'marginRight'\n }\n } else {\n if (align == 'after') {\n return 'marginTop'\n } else {\n return 'marginBottom'\n }\n }\n }\n\n const originalOffset = contentProps['alignOffset'] ?? 0\n const originalStyleProp = contentProps['style'] ?? {}\n const currentSide = contentProps['side'] ?? 'bottom'\n const currentAlign = contentProps['align']\n\n // Copy alignOffset value to CSS margin\n contentProps['style'] = {\n ...originalStyleProp,\n [mapAlignOffsetToMargin(currentAlign, currentSide)]: originalOffset,\n }\n\n const lengthOfCurrentSide = ['top', 'bottom'].includes(currentSide)\n ? contentRect.width\n : contentRect.height\n\n // Change alignOffset to be at the end of the positioned side\n contentProps['alignOffset'] = (lengthOfCurrentSide + originalOffset) * -1\n\n // Flip align prop back to valid Radix option\n contentProps['align'] = mapToOriginalAlignValues[currentAlign]\n }\n\n return {\n contentProps,\n rootProps,\n }\n}\n","import { Frigade, Flow } from '@frigade/js'\nimport { useContext, useState } from 'react'\n\nimport { FrigadeContext } from '../components/Provider'\n\nexport function useFlow(flowId: string) {\n const [flow, setFlow] = useState<Flow>(null)\n const { apiKey, config } = useContext(FrigadeContext)\n\n async function fetchFlow() {\n const frigade = await new Frigade(apiKey, {\n apiUrl: config.apiUrl,\n userId: config.userId,\n })\n\n const flowResponse: Flow = await frigade.getFlow(flowId)\n\n setFlow(flowResponse)\n }\n\n if (flow === null) {\n fetchFlow()\n }\n\n // TEMP: Expose a way to manually refresh the flow.\n // TODO: Automatically update state when something like step.complete() is called\n return { flow, fetchFlow }\n}\n","import { useFlow } from '../../hooks/useFlow'\n\nimport { Flex } from '../Flex/Flex'\nimport { Tooltip, TooltipProps } from '../Tooltip'\n\nexport interface TourProps extends TooltipProps {\n flowId: string\n}\n\nexport function Tour({ flowId, ...props }: TourProps) {\n const { flow, fetchFlow } = useFlow(flowId)\n\n if (flow == null || flow?.isCompleted || flow?.isSkipped) {\n return null\n }\n\n flow.start()\n\n const step = flow.getCurrentStep()\n\n step?.start()\n\n async function handleDismiss() {\n await flow.skip()\n\n // TEMP: Manually refreshing flow data until useFlow can handle it internally\n fetchFlow()\n }\n\n async function handlePrimary() {\n await step.complete()\n\n // TEMP: Manually refreshing flow data until useFlow can handle it internally\n fetchFlow()\n }\n\n const handleSecondary = handlePrimary\n\n return (\n <Tooltip\n align=\"after\"\n anchor={step.selector as string}\n onOpenAutoFocus={(e) => e.preventDefault()}\n onPointerDownOutside={(e) => e.preventDefault()}\n {...props}\n >\n <Tooltip.Close onClick={handleDismiss} />\n\n <Tooltip.Media\n src={step.videoUri ?? step.imageUri}\n type={step.videoUri ? 'video' : 'image'}\n />\n\n <Tooltip.Title>{step.title}</Tooltip.Title>\n <Tooltip.Subtitle>{step.subtitle}</Tooltip.Subtitle>\n\n <Flex.Row pt={4} alignItems=\"center\" justifyContent=\"space-between\">\n <Tooltip.Progress>\n {`${flow.getNumberOfCompletedSteps()}/${flow.steps.size}`}\n </Tooltip.Progress>\n\n <Flex.Row gap={3}>\n <Tooltip.Secondary title={step.secondaryButtonTitle} onClick={handleSecondary} />\n <Tooltip.Primary title={step.primaryButtonTitle} onClick={handlePrimary} />\n </Flex.Row>\n </Flex.Row>\n </Tooltip>\n )\n}\n"],"mappings":"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EAAIE,CAAW,EAAIC,EAGdH,CACT,EAAG,CAAC,CAAC,CACP,CCXA,IAAMI,EAAuCC,EAAcC,EAAM,MAAM,EAO1DC,GAAa,CACxB,MAAOH,EACP,gBAAiBA,EACjB,YAAaA,EACb,OAAQE,EAAM,QACd,aAAcA,EAAM,MACpB,YAAaA,EAAM,aAEnB,WAAYA,EAAM,aAClB,SAAUA,EAAM,UAChB,WAAYA,EAAM,YAElB,IAAKA,EAAM,MAEX,WAAYA,EAAM,YAElB,OAAQA,EAAM,MACd,UAAWA,EAAM,MACjB,YAAaA,EAAM,MACnB,aAAcA,EAAM,MACpB,WAAYA,EAAM,MAElB,QAASA,EAAM,MACf,WAAYA,EAAM,MAClB,aAAcA,EAAM,MACpB,cAAeA,EAAM,MACrB,YAAaA,EAAM,MAEnB,aAAc,CACZ,SACA,QACA,MACA,aACA,WACA,SACA,WACA,iBACA,gBACA,gBACA,eACA,eACA,UACA,cACA,gBACA,UACA,UACA,SACA,eACA,OACF,EAEA,WAAY,CACV,SACA,UACA,SACA,QACA,MACA,aACA,WACA,aACA,WACA,WACA,iBACA,gBACA,cACA,gBACA,UACA,UACA,SACA,eACA,OACF,EAEA,UAAW,CACT,OACA,SACA,SACA,QACA,MACA,aACA,WACA,aACA,WACA,WACA,iBACA,gBACA,UACA,cACA,gBACA,UACA,UACA,SACA,eACA,OACF,EAEA,cAAe,CACb,MACA,cACA,SACA,iBACA,UACA,UACA,SACA,eACA,OACF,EAEA,SAAU,CACR,SACA,OACA,eACA,UACA,UACA,SACA,eACA,OACF,EAEA,eAAgB,CACd,SACA,QACA,MACA,aACA,WACA,OACA,QACA,SACA,gBACA,eACA,eACA,UACA,cACA,gBACA,UACA,UACA,SACA,eACA,OACF,EAEA,aAAc,CACZ,SACA,UACA,SACA,QACA,MACA,aACA,WACA,aACA,WACA,OACA,QACA,WACA,iBACA,gBACA,cACA,gBACA,eACA,cACA,gBACA,UACA,UACA,SACA,eACA,OACF,EAEA,UAAW,CAAC,aAAc,cAAe,UAAW,UAAW,SAAU,eAAgB,OAA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","names":["React","clsx","theme","flattenObject","obj","path","separator","acc","k","currentPath","currentValue","colorTokens","flattenObject","theme","styleProps","stylePropShorthands","prepValue","value","v","stylePropsMap","styleProps","propName","stylePropShorthandsMap","stylePropShorthands","shorthand","targetProps","stylePropsToCss","props","unmatchedProps","cssFromProps","propValue","matchedShorthand","styleProp","splitPropValues","_a","jsx","prefixPart","part","processPart","p","BoxWithRef","_a","ref","_b","as","children","className","css","props","__objRest","Component","cssFromProps","unmatchedProps","stylePropsToCss","processedPart","classNameWithPart","clsx","__spreadProps","__spreadValues","Box","Text_styles_exports","__export","Body1","Body2","Caption","Display1","Display2","H1","H2","H3","H4","base","fontFamilies","fontSizes","fontWeights","lineHeights","jsx","BaseText","_a","_b","as","children","css","variant","props","__objRest","Box","__spreadProps","__spreadValues","Text_styles_exports","textVariantNames","textVariantComponents","asProp","component","Text","Button_styles_exports","__export","Link","Plain","Primary","Secondary","base","radii","space","colors","jsx","jsxs","BaseButton","_a","_b","as","children","css","title","variant","props","__objRest","Box","__spreadProps","__spreadValues","Button_styles_exports","Text","buttonVariantNames","buttonVariantComponents","variantPart","component","part","Button","React","jsx","Row","_a","ref","_b","children","css","props","__objRest","Box","__spreadProps","__spreadValues","Column","Flex","createContext","ThemeProvider","getVarName","variable","matches","get","obj","path","result","key","walkObject","fn","clone","_value","currentPath","setVar","element","variable","value","getVarName","setElementVars","varsOrContract","tokens","_contract","walkObject","path","get","_vars","varName","useEffect","mapThemePropToThemeVars","themeLevel","contractLevel","theme","acc","key","currentValue","useThemeOverrides","themeOverrides","selector","useEffect","mappedThemeVars","mapThemePropToThemeVars","root","setElementVars","jsx","FrigadeContext","createContext","Provider","apiKey","children","config","theme","useThemeOverrides","ThemeProvider","useEffect","useRef","useState","XMarkIcon","Popover","useCallback","useLayoutEffect","useState","useBoundingClientRect","initialRect","rect","setRect","node","setNode","ref","animationPulse","jsx","jsxs","Dot","_a","_b","style","part","props","__objRest","Box","__spreadProps","__spreadValues","animationPulse","jsx","Image","_a","_b","part","src","props","__objRest","Box","__spreadValues","jsx","getVideoEmbedSrc","videoUri","_a","_b","_c","Video","part","src","props","__objRest","videoEmbedSrc","Box","__spreadValues","jsx","Media","_a","_b","src","type","props","__objRest","Video","Image","__spreadValues","getDotPosition","props","alignAttr","sideAttr","currentSide","dotProps","currentAlign","dotOffset","oppositeSides","RADIX_PROPS","mapTooltipPropsToRadixProps","props","contentRect","_a","_b","_c","contentProps","propName","propEntry","rootProps","mapToOriginalAlignValues","mapAlignOffsetToMargin","align","side","originalOffset","originalStyleProp","currentSide","currentAlign","__spreadProps","__spreadValues","lengthOfCurrentSide","jsx","jsxs","Tooltip","_a","_b","anchor","children","css","spotlight","style","props","__objRest","contentNode","contentRect","contentRef","useBoundingClientRect","alignAttr","setAlignAttr","useState","sideAttr","setSideAttr","currentAlignAttr","currentSideAttr","contentProps","rootProps","mapTooltipPropsToRadixProps","anchorRef","useRef","anchorElementRef","setAnchorElementRef","useEffect","anchorQuery","anchorRect","anchorRadius","dotPosition","getDotPosition","__spreadProps","__spreadValues","Box","Flex","Dot","Button","XMarkIcon","src","Media","onClick","title","Text","Frigade","useContext","useState","useFlow","flowId","flow","setFlow","useState","apiKey","config","useContext","FrigadeContext","fetchFlow","__async","flowResponse","Frigade","jsx","jsxs","Tour","_a","_b","flowId","props","__objRest","flow","fetchFlow","useFlow","step","handleDismiss","__async","handlePrimary","handleSecondary","Tooltip","__spreadProps","__spreadValues","e","Flex"]}
1
+ {"version":3,"sources":["../src/components/Box/index.tsx","../src/shared/tokens/scalarTokens.ts","../src/shared/tokens/semanticColors.ts","../src/shared/tokens/index.ts","../src/shared/flattenObject.ts","../src/shared/theme/index.ts","../src/components/Box/styleProps.ts","../src/components/Box/stylePropsToCss.ts","../src/components/Text/Text.styles.ts","../src/components/Text/index.tsx","../src/components/Button/Button.styles.ts","../src/components/Button/index.tsx","../src/components/Flex/Flex.tsx","../src/components/Provider/index.tsx","../src/components/Tooltip/index.tsx","../src/hooks/useBoundingClientRect.ts","../src/components/Tooltip/Dot.tsx","../src/components/Media/Image.tsx","../src/components/Media/Video.tsx","../src/components/Media/Media.tsx","../src/components/Tooltip/getDotPosition.ts","../src/components/Tooltip/mapTooltipPropsToPopoverProps.ts","../src/hooks/useFlow.ts","../src/components/Tour/index.tsx"],"sourcesContent":["import * as React from 'react'\nimport { clsx } from 'clsx'\n\nimport { stylePropsToCss } from './stylePropsToCss'\n\nfunction prefixPart(part: string | undefined) {\n return part ? `fr-${part}` : part\n}\n\nfunction processPart(part: string | string[] | undefined) {\n if (!part) return part\n\n return Array.isArray(part) ? part.map((p) => prefixPart(p)).join(' ') : prefixPart(part)\n}\n\nexport type BoxProps<T extends React.ElementType = React.ElementType> = {\n as?: T\n part?: string | string[]\n} & React.ComponentPropsWithRef<T>\n\nfunction BoxWithRef<T extends React.ElementType = React.ElementType>(\n { as, children, className, css, part, ...props }: BoxProps<T>,\n ref: React.ForwardedRef<T>\n) {\n const Component = as ?? 'div'\n\n const { cssFromProps, unmatchedProps } = stylePropsToCss(props)\n\n const processedPart = processPart(part)\n const classNameWithPart = className || processedPart ? clsx(className, processedPart) : undefined\n\n return (\n // @ts-ignore: TODO: ref types are yet again complaining\n <Component\n className={classNameWithPart}\n css={[{ boxSizing: 'border-box', ...cssFromProps, ...css }]}\n {...unmatchedProps}\n ref={ref}\n >\n {children}\n </Component>\n )\n}\n\nexport const Box = React.forwardRef(BoxWithRef)\n","const SPACE_VALUE = 4\nconst SPACE_UNIT = 'px'\n\nconst spaceValue = (key: SpaceKeys[any]) =>\n typeof key === 'number' ? `${SPACE_VALUE * key}${SPACE_UNIT}` : key\n\nconst spaceKeys = [\n -20,\n -19,\n -18,\n -17,\n -16,\n -15,\n -14,\n -13,\n -12,\n -11,\n -10,\n -9,\n -8,\n -7,\n -6,\n -5,\n -4,\n -3,\n -2,\n -1,\n -0.5,\n 0,\n 0.5,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15,\n 16,\n 17,\n 18,\n 19,\n 20,\n 'auto',\n] as const\n\ntype SpaceKeys = typeof spaceKeys\n\ntype SpaceScale = {\n [K in SpaceKeys[any]]: string\n}\nconst spaceScale = Object.fromEntries(spaceKeys.map((key) => [key, spaceValue(key)])) as SpaceScale\n\nexport const palette = {\n black: '#000000',\n gray100: '#14161A',\n gray200: '#181B20',\n gray300: '#1F2329',\n gray400: '#2E343D',\n gray500: '#4C5766',\n gray600: '#5A6472',\n gray700: '#C5CBD3',\n gray800: '#E2E5E9',\n gray900: '#F1F2F4',\n white: '#ffffff',\n blue400: '#015AC6',\n blue500: '#0171F8',\n blue800: '#DBECFF',\n blue900: '#F5F9FF',\n green400: '#009E37',\n green500: '#00D149',\n green800: '#DBFFE8',\n transparent: '#FFFFFF00',\n\n // This color isn't in the Design System yet, but it's used in old components\n red500: '#c00000',\n}\n\n// Scalar = Tokens with literal values\nexport const scalarTokens = {\n borders: {\n md: '1px solid',\n },\n borderWidths: {\n 0: '0',\n md: '1px',\n },\n\n colors: {\n ...palette,\n },\n fontFamilies: {\n default: 'TT Interphases Pro, sans-serif',\n },\n fontSizes: {\n xs: '12px',\n sm: '14px',\n md: '16px',\n lg: '18px',\n xl: '20px',\n '2xl': '24px',\n '3xl': '30px',\n '4xl': '36px',\n '5xl': '48px',\n },\n fontWeights: {\n regular: '400',\n demibold: '600',\n bold: '700',\n },\n letterSpacings: {\n md: '0.02em',\n },\n lineHeights: {\n xs: '18px',\n sm: '22px',\n md: '24px',\n lg: '26px',\n xl: '30px',\n '2xl': '38px',\n '3xl': '46px',\n '4xl': '60px',\n },\n radii: {\n md: '8px',\n lg: '20px',\n round: '50%',\n },\n shadows: {\n md: '0px 4px 20px rgba(0, 0, 0, 0.1)',\n },\n space: spaceScale,\n}\n","const colorVar = (colorName) => `var(--fr-colors-${colorName})`\n\n// Semantic = Tokens that reference Scalars & contextualize them according to how they're used\nexport const semanticColors = {\n neutral: {\n background: colorVar('white'),\n border: colorVar('gray900'),\n foreground: colorVar('black'),\n surface: colorVar('gray700'),\n\n active: {\n background: colorVar('white'),\n border: colorVar('gray900'),\n foreground: colorVar('black'),\n surface: colorVar('gray700'),\n },\n focus: {\n background: colorVar('white'),\n border: colorVar('gray900'),\n foreground: colorVar('black'),\n surface: colorVar('gray700'),\n },\n hover: {\n background: colorVar('white'),\n border: colorVar('gray900'),\n foreground: colorVar('black'),\n surface: colorVar('gray700'),\n },\n },\n\n primary: {\n background: colorVar('blue500'),\n border: colorVar('blue500'),\n foreground: colorVar('white'),\n surface: colorVar('blue500'),\n\n active: {\n background: colorVar('blue400'),\n border: colorVar('blue400'),\n foreground: colorVar('white'),\n surface: colorVar('blue400'),\n },\n focus: {\n background: colorVar('blue500'),\n border: colorVar('blue500'),\n foreground: colorVar('white'),\n surface: colorVar('blue500'),\n },\n hover: {\n background: colorVar('blue400'),\n border: colorVar('blue400'),\n foreground: colorVar('white'),\n surface: colorVar('blue400'),\n },\n },\n\n secondary: {\n background: colorVar('gray900'),\n border: colorVar('gray900'),\n foreground: colorVar('black'),\n surface: colorVar('gray900'),\n\n active: {\n background: colorVar('gray800'),\n border: colorVar('gray800'),\n foreground: colorVar('black'),\n surface: colorVar('gray800'),\n },\n focus: {\n background: colorVar('gray900'),\n border: colorVar('gray900'),\n foreground: colorVar('black'),\n surface: colorVar('gray900'),\n },\n hover: {\n background: colorVar('gray800'),\n border: colorVar('gray800'),\n foreground: colorVar('black'),\n surface: colorVar('gray800'),\n },\n },\n}\n","import { scalarTokens } from './scalarTokens'\nimport { semanticColors } from './semanticColors'\n\nexport { scalarTokens, semanticColors }\n\n// Package up everything everywhere all at once for convenience\nexport const tokens = {\n ...scalarTokens,\n colors: {\n ...scalarTokens.colors,\n ...semanticColors,\n },\n}\n","export function flattenObject(obj: Record<any, any>, path = '', separator = '.') {\n return Object.keys(obj).reduce((acc, k) => {\n const prefix = path.length ? `${path}${separator}` : ''\n const currentPath = `${prefix}${k}`\n const currentValue = obj[k]\n\n if (typeof currentValue === 'object' && currentValue !== null && !Array.isArray(currentValue)) {\n Object.assign(acc, flattenObject(currentValue, currentPath, separator))\n } else {\n acc[currentPath] = currentValue\n }\n\n return acc\n }, {})\n}\n","import { tokens } from '../tokens'\nimport { flattenObject } from '../flattenObject'\n\n// Transform tokens to a flat list of CSS variables and values to inject into the page\n// IN: { colors: { black: '#000' } }, OUT: { '--fr-colors-black': '#000' }\nexport function createThemeVariables(tokens) {\n return flattenObject(tokens, '--fr', '-')\n}\n\n// Swap token values out and replace them with the CSS variables we defined\n// IN: { colors: { black: '#000' } }, OUT: { colors: { black: 'var(--fr-colors-black)' } }\nfunction mapTokensToThemeVariables(obj, path = '--fr') {\n const newObj: Record<string, any> = {}\n\n Object.keys(obj).forEach((key) => {\n const currentValue = obj[key]\n\n if (typeof currentValue === 'object' && currentValue !== null && !Array.isArray(currentValue)) {\n newObj[key] = mapTokensToThemeVariables(currentValue, `${path}-${key}`)\n } else {\n newObj[key] = `var(${path}-${key})`\n }\n })\n\n return newObj\n}\n\nexport const themeVariables = createThemeVariables(tokens)\n\nexport const theme = mapTokensToThemeVariables(tokens)\n","import { theme } from '../../shared/theme'\nimport { flattenObject } from '../../shared/flattenObject'\n\nconst colorTokens: Record<string, unknown> = flattenObject(theme.colors)\n\n/*\n TODO:\n - top / right / bottom / left\n*/\n\nexport const styleProps = {\n color: colorTokens,\n backgroundColor: colorTokens,\n borderColor: colorTokens,\n border: theme.borders,\n borderRadius: theme.radii,\n borderWidth: theme.borderWidths,\n\n fontFamily: theme.fontFamilies,\n fontSize: theme.fontSizes,\n fontWeight: theme.fontWeights,\n\n gap: theme.space,\n\n lineHeight: theme.lineHeights,\n\n margin: theme.space,\n marginTop: theme.space,\n marginRight: theme.space,\n marginBottom: theme.space,\n marginLeft: theme.space,\n\n padding: theme.space,\n paddingTop: theme.space,\n paddingRight: theme.space,\n paddingBottom: theme.space,\n paddingLeft: theme.space,\n\n alignContent: [\n 'center',\n 'start',\n 'end',\n 'flex-start',\n 'flex-end',\n 'normal',\n 'baseline',\n 'first baseline',\n 'last baseline',\n 'space-between',\n 'space-around',\n 'space-evenly',\n 'stretch',\n 'safe center',\n 'unsafe center',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n alignItems: [\n 'normal',\n 'stretch',\n 'center',\n 'start',\n 'end',\n 'flex-start',\n 'flex-end',\n 'self-start',\n 'self-end',\n 'baseline',\n 'first baseline',\n 'last baseline',\n 'safe center',\n 'unsafe center',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n alignSelf: [\n 'auto',\n 'normal',\n 'center',\n 'start',\n 'end',\n 'self-start',\n 'self-end',\n 'flex-start',\n 'flex-end',\n 'baseline',\n 'first baseline',\n 'last baseline',\n 'stretch',\n 'safe center',\n 'unsafe center',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n flexDirection: [\n 'row',\n 'row-reverse',\n 'column',\n 'column-reverse',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n flexWrap: [\n 'nowrap',\n 'wrap',\n 'wrap-reverse',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n justifyContent: [\n 'center',\n 'start',\n 'end',\n 'flex-start',\n 'flex-end',\n 'left',\n 'right',\n 'normal',\n 'space-between',\n 'space-around',\n 'space-evenly',\n 'stretch',\n 'safe center',\n 'unsafe center',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n justifyItems: [\n 'normal',\n 'stretch',\n 'center',\n 'start',\n 'end',\n 'flex-start',\n 'flex-end',\n 'self-start',\n 'self-end',\n 'left',\n 'right',\n 'baseline',\n 'first baseline',\n 'last baseline',\n 'safe center',\n 'unsafe center',\n 'legacy right',\n 'legacy left',\n 'legacy center',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n boxSizing: ['border-box', 'content-box', 'inherit', 'initial', 'revert', 'revert-layer', 'unset'],\n\n position: [\n 'static',\n 'relative',\n 'absolute',\n 'fixed',\n 'sticky',\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset',\n ],\n\n display: [\n 'block',\n 'block flex',\n 'block flow',\n 'block flow-root',\n 'block grid',\n 'contents',\n 'flex',\n 'flow-root',\n 'grid',\n 'inherit',\n 'initial',\n 'inline',\n 'inline flex',\n 'inline flow',\n 'inline flow-root',\n 'inline grid',\n 'inline-block',\n 'inline-flex',\n 'inline-grid',\n 'list-item',\n 'none',\n 'revert',\n 'revert-layer',\n 'table',\n 'table-row-group',\n 'table-header-group',\n 'table-footer-group',\n 'table-row',\n 'table-cell',\n 'table-column-group',\n 'table-column',\n 'table-caption',\n 'unset',\n ],\n}\n\nexport const stylePropShorthands = {\n m: ['margin'],\n mt: ['marginTop'],\n mr: ['marginRight'],\n mb: ['marginBottom'],\n ml: ['marginLeft'],\n mx: ['marginLeft', 'marginRight'],\n my: ['marginTop', 'marginBottom'],\n\n p: ['padding'],\n pt: ['paddingTop'],\n pr: ['paddingRight'],\n pb: ['paddingBottom'],\n pl: ['paddingLeft'],\n px: ['paddingLeft', 'paddingRight'],\n py: ['paddingTop', 'paddingBottom'],\n}\n","import { styleProps, stylePropShorthands } from './styleProps'\n\nfunction prepValue(value) {\n if (Array.isArray(value)) {\n return new Map(value.map((v) => [v, v]))\n } else if (typeof value === 'object' && value !== null) {\n return new Map(Object.entries(value))\n } else if (['string', 'number'].includes(typeof value)) {\n return new Map([value, value])\n }\n\n throw new Error('Invalid entry in styleProps')\n}\n\nconst stylePropsMap = new Map(\n Object.entries(styleProps).map(([propName, value]) => {\n return [propName, prepValue(value)]\n })\n)\n\nconst stylePropShorthandsMap = new Map(\n Object.entries(stylePropShorthands).map(([shorthand, targetProps]) => {\n return [shorthand, new Set(targetProps)]\n })\n)\n\nexport function stylePropsToCss(props: Record<any, any>) {\n const unmatchedProps = Object.assign({}, props)\n const cssFromProps = {}\n\n // Convert shorthand styleProps to full versions\n Object.entries(unmatchedProps).forEach(([propName, propValue]) => {\n const matchedShorthand = stylePropShorthandsMap.get(propName)\n if (matchedShorthand != null) {\n matchedShorthand.forEach((propName) => {\n unmatchedProps[propName] = propValue\n })\n\n delete unmatchedProps[propName]\n }\n })\n\n // Convert styleProps to style object\n Object.entries(unmatchedProps).forEach(([propName, propValue]) => {\n const styleProp = stylePropsMap.get(propName)\n if (styleProp != null) {\n if (typeof propValue === 'string' && propValue.indexOf(' ') > -1) {\n // Split space-separated values out and process them individually\n const splitPropValues = propValue.split(' ')\n\n cssFromProps[propName] = splitPropValues\n .map((v) => styleProp.get(v.toString()) ?? v)\n .join(' ')\n\n delete unmatchedProps[propName]\n } else if (styleProp.has(propValue.toString())) {\n cssFromProps[propName] = styleProp.get(propValue.toString())\n delete unmatchedProps[propName]\n }\n }\n })\n\n return { cssFromProps, unmatchedProps }\n}\n","export const base = ({ fontFamilies }) => ({\n fontFamily: fontFamilies.default,\n margin: 0,\n})\n\nexport const Display1 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes['5xl'],\n fontWeight: fontWeights.bold,\n lineHeight: lineHeights['4xl'],\n },\n]\n\nexport const Display2 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes['4xl'],\n fontWeight: fontWeights.bold,\n lineHeight: lineHeights['3xl'],\n },\n]\n\nexport const H1 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes['3xl'],\n fontWeight: fontWeights.bold,\n lineHeight: lineHeights['2xl'],\n },\n]\n\nexport const H2 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes['2xl'],\n fontWeight: fontWeights.bold,\n lineHeight: lineHeights.xl,\n },\n]\n\nexport const H3 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes.xl,\n fontWeight: fontWeights.bold,\n lineHeight: lineHeights.lg,\n },\n]\n\nexport const H4 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes.lg,\n fontWeight: fontWeights.bold,\n lineHeight: lineHeights.md,\n },\n]\n\nexport const Body1 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes.md,\n fontWeight: fontWeights.regular,\n lineHeight: lineHeights.md,\n },\n]\n\nexport const Body2 = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes.sm,\n fontWeight: fontWeights.regular,\n lineHeight: lineHeights.md,\n },\n]\n\nexport const Caption = ({ fontSizes, fontWeights, lineHeights }) => [\n base,\n {\n fontSize: fontSizes.xs,\n fontWeight: fontWeights.regular,\n lineHeight: lineHeights.sm,\n },\n]\n","import { Box, BoxProps } from '../Box'\n\nimport * as styles from './Text.styles'\n\ntype TextVariant =\n | 'Display1'\n | 'Display2'\n | 'H1'\n | 'H2'\n | 'H3'\n | 'H4'\n | 'Body1'\n | 'Body2'\n | 'Caption'\n\nexport interface TextProps extends BoxProps {\n variant?: TextVariant\n}\n\nfunction BaseText({ as = 'span', children, css, variant = 'Body1', ...props }: TextProps) {\n return (\n <Box as={as} css={[styles[variant], css]} {...props}>\n {children}\n </Box>\n )\n}\n\nconst textVariantNames: TextVariant[] = [\n 'Display1',\n 'Display2',\n 'H1',\n 'H2',\n 'H3',\n 'H4',\n 'Body1',\n 'Body2',\n 'Caption',\n]\n\nconst textVariantComponents = Object.fromEntries(\n textVariantNames.map((variant) => {\n const asProp = ['H1', 'H2', 'H3', 'H4'].includes(variant)\n ? (variant.toLowerCase() as 'h1' | 'h2' | 'h3' | 'h4')\n : undefined\n const component = (props: TextProps) => (\n <BaseText as={asProp} {...props} variant={variant}>\n {props.children}\n </BaseText>\n )\n\n component.displayName = `Text.${variant}`\n\n return [variant, component]\n })\n)\n\nexport const Text = Object.assign(BaseText, textVariantComponents)\n","export const base = ({ radii, space }) => ({\n borderWidth: 0,\n borderRadius: radii.md,\n padding: `${space[2]} ${space[4]}`,\n})\n\nexport const Primary = ({ colors }) => [\n base,\n {\n backgroundColor: colors.primary.surface,\n color: colors.primary.foreground,\n\n '&:hover': {\n backgroundColor: colors.primary.hover.surface,\n },\n },\n]\n\nexport const Secondary = ({ colors }) => [\n base,\n {\n backgroundColor: colors.secondary.surface,\n color: colors.secondary.foreground,\n\n '&:hover': {\n backgroundColor: colors.secondary.hover.surface,\n },\n },\n]\n\nexport const Link = ({ colors }) => [\n base,\n {\n backgroundColor: colors.transparent,\n color: colors.primary.surface,\n\n '&:hover': {\n color: colors.primary.hover.surface,\n },\n },\n]\n\nexport const Plain = ({ colors }) => [\n base,\n {\n backgroundColor: colors.transparent,\n color: colors.neutral.foreground,\n },\n]\n","import { Box, BoxProps } from '../Box'\nimport { Text } from '../Text'\n\nimport * as styles from './Button.styles'\n\n// TODO: Generate this type from buttonVariantNames\ntype ButtonVariant = 'Primary' | 'Secondary' | 'Link' | 'Plain'\n\nexport interface ButtonProps extends BoxProps {\n title?: string\n variant?: ButtonVariant\n}\n\nfunction BaseButton({ as, children, css = {}, title, variant = 'Primary', ...props }: ButtonProps) {\n return (\n <Box as={as ?? 'button'} css={[styles[variant], css]} {...props}>\n {children}\n {title && <Text.Body2 fontWeight=\"demibold\">{title}</Text.Body2>}\n </Box>\n )\n}\n\nconst buttonVariantNames: ButtonVariant[] = ['Primary', 'Secondary', 'Link', 'Plain']\n\nconst buttonVariantComponents = Object.fromEntries(\n buttonVariantNames.map((variant) => {\n const variantPart = variant.toLocaleLowerCase()\n\n const component = ({ part, ...props }: ButtonProps) => (\n <BaseButton part={[`button-${variantPart}`, part]} {...props} variant={variant}>\n {props.children}\n </BaseButton>\n )\n\n component.displayName = `Text.${variant}`\n\n return [variant, component]\n })\n)\n\nexport const Button = Object.assign(BaseButton, buttonVariantComponents)\n","import * as React from 'react'\nimport { Box, BoxProps } from '../Box'\n\nconst Row = React.forwardRef(({ children, css, ...props }: BoxProps, ref) => {\n return (\n <Box css={[{ display: 'flex', flexDirection: 'row' }, css]} {...props} ref={ref}>\n {children}\n </Box>\n )\n})\n\nconst Column = React.forwardRef(({ children, css, ...props }: BoxProps, ref) => {\n return (\n <Box css={[{ display: 'flex', flexDirection: 'column' }, css]} {...props} ref={ref}>\n {children}\n </Box>\n )\n})\n\nexport const Flex = {\n Column,\n Row,\n}\n","import { createContext } from 'react'\nimport { Global, ThemeProvider } from '@emotion/react'\n\nimport { createThemeVariables, theme as themeTokens, themeVariables } from '../../shared/theme'\n\nexport const FrigadeContext = createContext<{ apiKey: string; config: ProviderConfig }>({\n apiKey: '',\n config: {},\n})\n\n// TODO: type theme something like Partial<typeof themeContract>, but allow any value for those keys\nexport interface ProviderProps {\n apiKey: string\n children?: React.ReactNode\n config?: ProviderConfig\n theme?: Record<any, any>\n}\n\ninterface ProviderConfig {\n apiUrl?: string\n userId?: string\n}\n\nexport function Provider({ apiKey, children, config = {}, theme }: ProviderProps) {\n const themeOverrides = theme ? createThemeVariables(theme) : {}\n\n return (\n <FrigadeContext.Provider value={{ apiKey, config }}>\n <Global styles={{ ':root': { ...themeVariables, ...themeOverrides } }} />\n <ThemeProvider theme={themeTokens}>{children}</ThemeProvider>\n </FrigadeContext.Provider>\n )\n}\n","import React, { useEffect, useRef, useState } from 'react'\n\nimport { XMarkIcon } from '@heroicons/react/24/solid'\nimport * as Popover from '@radix-ui/react-popover'\n\nimport { useBoundingClientRect } from '../../hooks/useBoundingClientRect'\nimport { Box } from '../Box'\nimport { Button, ButtonProps } from '../Button'\nimport { Dot } from './Dot'\nimport { Flex } from '../Flex/Flex'\nimport { Media, MediaProps } from '../Media'\nimport { Text, TextProps } from '../Text'\nimport { getDotPosition } from './getDotPosition'\nimport { mapTooltipPropsToRadixProps } from './mapTooltipPropsToPopoverProps'\n\ninterface MergedRadixPopoverProps\n extends Pick<Popover.PopoverProps, 'defaultOpen' | 'modal' | 'onOpenChange' | 'open'>,\n Omit<Popover.PopoverContentProps, 'align' | 'asChild'> {}\nexport interface TooltipProps extends MergedRadixPopoverProps {\n align?: Popover.PopoverContentProps['align'] | 'before' | 'after'\n anchor?: string\n spotlight?: boolean\n style?: React.CSSProperties\n}\n\nexport function Tooltip({\n anchor,\n children,\n css,\n spotlight = false,\n style,\n ...props\n}: TooltipProps) {\n const { node: contentNode, rect: contentRect, ref: contentRef } = useBoundingClientRect()\n const { contentProps, rootProps } = mapTooltipPropsToRadixProps(props, contentRect)\n\n const [alignAttr, setAlignAttr] = useState(contentProps.align)\n const [sideAttr, setSideAttr] = useState(contentProps.side)\n\n // Radix will update data attrs to let us know if Popover.Content has collided\n if (contentNode !== null) {\n const currentAlignAttr = contentNode.getAttribute('data-align')\n const currentSideAttr = contentNode.getAttribute('data-side')\n\n if (alignAttr !== currentAlignAttr) {\n setAlignAttr(currentAlignAttr)\n }\n\n if (sideAttr !== currentSideAttr) {\n setSideAttr(currentSideAttr)\n }\n }\n\n const anchorRef = useRef(null)\n const [anchorElementRef, setAnchorElementRef] = useState(null)\n\n useEffect(() => {\n const anchorQuery = document.querySelector(anchor)\n\n if (anchorQuery != null) {\n anchorRef.current = anchorQuery\n setAnchorElementRef(anchorRef)\n }\n }, [anchor])\n\n if (anchorElementRef == null) return null\n\n const anchorRect = anchorElementRef.current.getBoundingClientRect()\n\n let anchorRadius = '0'\n if (typeof window !== 'undefined') {\n anchorRadius = window.getComputedStyle(anchorElementRef.current).borderRadius\n }\n\n const dotPosition = getDotPosition({ props, alignAttr, sideAttr })\n\n return (\n <Popover.Root defaultOpen={true} {...rootProps}>\n <Popover.Anchor virtualRef={anchorElementRef} />\n <Popover.Portal>\n <div css={css}>\n {spotlight && (\n <Box\n borderRadius={anchorRadius}\n part=\"tooltip-spotlight\"\n position=\"absolute\"\n css={{\n boxShadow: '0 0 0 2000px rgb(0 0 0 / 0.5)',\n height: anchorRect.height,\n left: anchorRect.left,\n top: anchorRect.top,\n width: anchorRect.width,\n }}\n />\n )}\n <Popover.Content asChild {...contentProps} ref={contentRef}>\n <Flex.Column\n backgroundColor=\"white\"\n borderRadius=\"md\"\n p={5}\n part=\"tooltip-content\"\n position=\"relative\"\n css={{\n boxShadow: '0px 4px 20px rgba(0, 0, 0, 0.1)',\n width: '300px',\n ...style,\n }}\n >\n <Dot style={dotPosition} />\n\n {children}\n </Flex.Column>\n </Popover.Content>\n </div>\n </Popover.Portal>\n </Popover.Root>\n )\n}\n\nTooltip.Close = ({ css, ...props }: ButtonProps) => {\n return (\n <Popover.Close aria-label=\"Close\" asChild>\n <Button.Plain\n css={[\n {\n top: 0,\n right: 0,\n },\n css,\n ]}\n part=\"tooltip-close\"\n position=\"absolute\"\n {...props}\n >\n <XMarkIcon height=\"20\" fill=\"currentColor\" />\n </Button.Plain>\n </Popover.Close>\n )\n}\n\nTooltip.Media = ({ src, ...props }: MediaProps) => {\n if (src == null) return null\n\n return (\n <Media\n borderRadius=\"md md 0 0\"\n borderWidth=\"0\"\n css={{\n aspectRatio: '2',\n }}\n margin=\"-5 -5 5\"\n src={src}\n {...props}\n />\n )\n}\n\nTooltip.Primary = ({ onClick, title, ...props }: ButtonProps) => {\n if (title == null) return null\n\n return <Button.Primary title={title} onClick={onClick} {...props} />\n}\n\nTooltip.Progress = ({ children, ...props }: TextProps) => {\n if (children == null) return null\n\n return (\n <Text.Body2 fontWeight=\"demibold\" part=\"progress\" {...props}>\n {children}\n </Text.Body2>\n )\n}\n\nTooltip.Secondary = ({ onClick, title, ...props }: ButtonProps) => {\n if (title == null) return null\n\n return <Button.Secondary title={title} onClick={onClick} {...props} />\n}\n\nTooltip.Subtitle = ({ children, ...props }: TextProps) => {\n if (children == null) return null\n\n return (\n <Text.Body2 part=\"subtitle\" {...props}>\n {children}\n </Text.Body2>\n )\n}\n\nTooltip.Title = ({ children, ...props }: TextProps) => {\n if (children == null) return null\n\n return (\n <Text.Body1 fontWeight=\"bold\" mb={1} part=\"title\" {...props}>\n {children}\n </Text.Body1>\n )\n}\n","import { useCallback, useLayoutEffect, useState } from 'react'\n\nexport function useBoundingClientRect() {\n const initialRect =\n 'DOMRect' in globalThis\n ? new DOMRect()\n : {\n height: 0,\n width: 0,\n x: 0,\n y: 0,\n bottom: 0,\n top: 0,\n right: 0,\n left: 0,\n toJSON: () => {},\n }\n const [rect, setRect] = useState(initialRect)\n const [node, setNode] = useState(null)\n\n const ref = useCallback((node: HTMLElement) => {\n setNode(node)\n }, [])\n\n useLayoutEffect(() => {\n if (!node) return\n\n setRect(node.getBoundingClientRect())\n }, [node])\n\n return {\n node,\n rect,\n ref,\n }\n}\n","import { keyframes } from '@emotion/react'\nimport { Box, BoxProps } from '../Box'\n\nconst pulse = keyframes({\n '0%': {\n opacity: 0.5,\n transform: 'scale(0.5)',\n },\n '50%': {\n opacity: 0,\n transform: 'scale(1)',\n },\n '100%': {\n opacity: 0,\n transform: 'scale(1)',\n },\n})\n\nexport interface DotProps extends BoxProps {}\n\nexport function Dot({ style = {}, part = '', ...props }: DotProps) {\n return (\n <Box\n part={`dot-wrapper ${part}`}\n style={{\n height: '48px',\n position: 'absolute',\n width: '48px',\n ...style,\n }}\n {...props}\n >\n <Box\n backgroundColor=\"primary.surface\"\n part=\"dot-pulse\"\n css={{\n animation: `2s ease-out infinite ${pulse}`,\n borderRadius: '24px',\n height: '48px',\n left: 0,\n position: 'absolute',\n top: 0,\n transformOrigin: 'center center',\n width: '48px',\n }}\n />\n <Box\n backgroundColor=\"primary.surface\"\n part=\"dot\"\n style={{\n borderRadius: '12px',\n height: '24px',\n left: '12px',\n position: 'absolute',\n top: '12px',\n width: '24px',\n }}\n />\n </Box>\n )\n}\n","import { Box, BoxProps } from '../Box'\n\nexport interface ImageProps extends BoxProps {\n src: string\n}\n\nexport function Image({ part, src, ...props }: ImageProps) {\n return <Box as=\"img\" part={['image', part]} src={src} {...props} />\n}\n","import { Box, BoxProps } from '../Box'\n\nfunction getVideoEmbedSrc(videoUri: string) {\n if (videoUri.includes('youtube')) {\n const videoId = videoUri.split('v=')[1]?.split('&')[0]\n\n return `https://www.youtube.com/embed/${videoId}`\n } else if (videoUri.includes('vimeo')) {\n const videoId = videoUri.split('vimeo.com/')[1]?.split('&')[0]\n\n return `https://player.vimeo.com/video/${videoId}`\n } else if (videoUri.includes('wistia')) {\n const videoId = videoUri.split('wistia.com/medias/')[1]?.split('&')[0]\n\n return `https://fast.wistia.net/embed/iframe/${videoId}`\n }\n\n throw new Error('Could not map videoUri to a known provider (Youtube, Vimeo, Wistia).')\n}\n\nexport interface VideoProps extends BoxProps {\n src: string\n}\n\nexport function Video({ part, src, ...props }: VideoProps) {\n const videoEmbedSrc = getVideoEmbedSrc(src)\n\n // TODO: Add play button overtop?\n return (\n <Box\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n as=\"iframe\"\n backgroundColor=\"gray100\"\n borderWidth={0}\n part={['video', part]}\n src={videoEmbedSrc}\n {...props}\n ></Box>\n )\n}\n","import { Image } from './Image'\nimport { Video } from './Video'\nimport { BoxProps } from '../Box'\n\nexport interface MediaProps extends BoxProps {\n src: string\n type: 'image' | 'video'\n}\n\nexport function Media({ src, type, ...props }: MediaProps) {\n const Component = type === 'video' ? Video : Image\n\n return <Component src={src} {...props} />\n}\n","export function getDotPosition({ props, alignAttr, sideAttr }) {\n const currentSide = sideAttr ?? 'bottom'\n const dotProps = {}\n\n // Radix's collision system isn't aware of our custom before|after align\n const getCurrentAlign = () => {\n if (['after', 'before'].includes(props.align)) {\n if (alignAttr == 'start') {\n return 'before'\n } else if (alignAttr == 'end') {\n return 'after'\n }\n }\n\n return props.align ?? 'after'\n }\n\n const dotOffset = '-24px'\n\n const oppositeSides = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right',\n }\n\n /* \n Rules:\n - Dot is opposite to side prop (e.g. side=left -> dot=right)\n - align=before|end -> Dot goes to highest extent (right/bottom) of align-axis\n - align=after|start -> Dot goes to lowest extent (left/top) of align-axis\n - align=center -> Dot goes to the center\n */\n\n dotProps[oppositeSides[currentSide]] = dotOffset\n\n const currentAlign = getCurrentAlign()\n\n if (['before', 'end'].includes(currentAlign)) {\n if (['top', 'bottom'].includes(currentSide)) {\n dotProps['right'] = dotOffset\n } else {\n dotProps['bottom'] = dotOffset\n }\n } else if (['after', 'start'].includes(currentAlign)) {\n if (['top', 'bottom'].includes(currentSide)) {\n dotProps['left'] = dotOffset\n } else {\n dotProps['top'] = dotOffset\n }\n } else {\n // The only option left is align=center\n if (['top', 'bottom'].includes(currentSide)) {\n dotProps['left'] = `calc(50% + ${dotOffset})`\n } else {\n dotProps['top'] = `calc(50% + ${dotOffset})`\n }\n }\n\n return dotProps\n}\n","import { TooltipProps } from '.'\n\nconst RADIX_PROPS = {\n content: [\n 'align',\n 'alignOffset',\n 'arrowPadding',\n 'avoidCollisions',\n 'collisionBoundary',\n 'collisionPadding',\n 'forceMount',\n 'hideWhenDetached',\n 'onCloseAutoFocus',\n 'onEscapeKeyDown',\n 'onFocusOutside',\n 'onInteractOutside',\n 'onOpenAutoFocus',\n 'onPointerDownOutside',\n 'side',\n 'sideOffset',\n 'sticky',\n ],\n root: ['defaultOpen', 'modal', 'onOpenChange', 'open'],\n}\n\nexport function mapTooltipPropsToRadixProps(props: TooltipProps, contentRect: DOMRect) {\n const contentProps = Object.fromEntries(\n RADIX_PROPS.content\n .map((propName) => [propName, props[propName]])\n .filter((propEntry) => propEntry[1] !== undefined)\n )\n const rootProps = Object.fromEntries(\n RADIX_PROPS.root\n .map((propName) => [propName, props[propName]])\n .filter((propEntry) => propEntry[1] !== undefined)\n )\n\n // Default to align=after, side=bottom\n contentProps.align = contentProps.align ?? 'after'\n contentProps.side = contentProps.side ?? 'bottom'\n\n /*\n Here we're extending Popover.Content's align prop to accept 'before' and\n 'after' in addition to its existing values.\n\n TL;DR:\n 1. Use existing alignOffset prop to push Content to be before/after the\n corresponding edge of the element it's attached to.\n 2. Add a CSS margin to patch alignOffset back onto Content, as Popover\n has a bug that prevents alignOffset from extending past the edge of\n its Trigger/Anchor.\n\n SEE: https://github.com/radix-ui/primitives/issues/2457\n */\n if (['before', 'after'].includes(contentProps.align)) {\n const mapToOriginalAlignValues = {\n after: 'end',\n before: 'start',\n }\n\n const mapAlignOffsetToMargin = (align, side) => {\n /*\n Translate alignOffset to CSS margin based on align and side props:\n bottom || top\n after: marginLeft\n before: marginRight\n left || right\n after: marginTop\n before: marginBottom\n */\n if (['top', 'bottom'].includes(side)) {\n if (align == 'after') {\n return 'marginLeft'\n } else {\n return 'marginRight'\n }\n } else {\n if (align == 'after') {\n return 'marginTop'\n } else {\n return 'marginBottom'\n }\n }\n }\n\n const originalOffset = contentProps.alignOffset ?? 0\n const originalStyleProp = contentProps.style ?? {}\n const currentSide = contentProps.side ?? 'bottom'\n const currentAlign = contentProps.align\n\n // Copy alignOffset value to CSS margin\n contentProps['style'] = {\n ...originalStyleProp,\n [mapAlignOffsetToMargin(currentAlign, currentSide)]: originalOffset,\n }\n\n const lengthOfCurrentSide = ['top', 'bottom'].includes(currentSide)\n ? contentRect.width\n : contentRect.height\n\n // Change alignOffset to be at the end of the positioned side\n contentProps['alignOffset'] = (lengthOfCurrentSide + originalOffset) * -1\n\n // Flip align prop back to valid Radix option, or default to 'after'\n contentProps['align'] = mapToOriginalAlignValues[currentAlign]\n }\n\n return {\n contentProps,\n rootProps,\n }\n}\n","import { Frigade, Flow } from '@frigade/js'\nimport { useContext, useState } from 'react'\n\nimport { FrigadeContext } from '../components/Provider'\n\nexport function useFlow(flowId: string) {\n const [flow, setFlow] = useState<Flow>(null)\n const { apiKey, config } = useContext(FrigadeContext)\n\n async function fetchFlow() {\n const filteredConfig = Object.fromEntries(\n Object.entries(config).filter(([k, v]) => ['apiUrl', 'userId'].includes(k) && v != null)\n )\n\n const frigade = await new Frigade(apiKey, filteredConfig)\n\n const flowResponse: Flow = await frigade.getFlow(flowId)\n\n setFlow(flowResponse)\n }\n\n if (flow === null) {\n fetchFlow()\n }\n\n // TEMP: Expose a way to manually refresh the flow.\n // TODO: Automatically update state when something like step.complete() is called\n return { flow, fetchFlow }\n}\n","import { useFlow } from '../../hooks/useFlow'\n\nimport { Flex } from '../Flex/Flex'\nimport { Tooltip, TooltipProps } from '../Tooltip'\n\nexport interface TourProps extends TooltipProps {\n flowId: string\n}\n\nexport function Tour({ flowId, ...props }: TourProps) {\n const { flow, fetchFlow } = useFlow(flowId)\n\n if (flow == null || flow?.isCompleted || flow?.isSkipped) {\n return null\n }\n\n flow.start()\n\n const step = flow.getCurrentStep()\n\n step?.start()\n\n async function handleDismiss() {\n await flow.skip()\n\n // TEMP: Manually refreshing flow data until useFlow can handle it internally\n fetchFlow()\n }\n\n async function handlePrimary() {\n await step.complete()\n\n // TEMP: Manually refreshing flow data until useFlow can handle it internally\n fetchFlow()\n }\n\n const handleSecondary = handlePrimary\n\n return (\n <Tooltip\n anchor={step.selector as string}\n onOpenAutoFocus={(e) => e.preventDefault()}\n onPointerDownOutside={(e) => e.preventDefault()}\n {...props}\n >\n <Tooltip.Close onClick={handleDismiss} />\n\n <Tooltip.Media\n src={step.videoUri ?? step.imageUri}\n type={step.videoUri ? 'video' : 'image'}\n />\n\n <Tooltip.Title>{step.title}</Tooltip.Title>\n <Tooltip.Subtitle>{step.subtitle}</Tooltip.Subtitle>\n\n <Flex.Row pt={4} alignItems=\"center\" justifyContent=\"space-between\">\n <Tooltip.Progress>\n {`${flow.getNumberOfCompletedSteps()}/${flow.steps.size}`}\n </Tooltip.Progress>\n\n <Flex.Row gap={3}>\n <Tooltip.Secondary title={step.secondaryButtonTitle} onClick={handleSecondary} />\n <Tooltip.Primary title={step.primaryButtonTitle} onClick={handlePrimary} />\n </Flex.Row>\n </Flex.Row>\n </Tooltip>\n )\n}\n"],"mappings":"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CpB,cAAeA,EAAM,MACrB,YAAaA,EAAM,MAEnB,aAAc,CACZ,SACA,QACA,MACA,aACA,WACA,SACA,WACA,iBACA,gBACA,gBACA,eACA,eACA,UACA,cACA,gBACA,UACA,UACA,SACA,eACA,OACF,EAEA,WAAY,CACV,SACA,UACA,SACA,QACA,MACA,aACA,WACA,aACA,WACA,WACA,iBACA,gBACA,cACA,gBACA,UACA,UACA,SACA,eACA,OACF,EAEA,UAAW,CACT,OACA,SACA,SACA,QACA,MACA,aACA,WACA,aACA,WACA,WACA,iBACA,gBACA,UACA,cACA,gBACA,UACA,UACA,SACA,eACA,OACF,EAEA,cAAe,CACb,MACA,cACA,SACA,iBACA,UACA,UACA,SACA,eACA,OACF,EAEA,SAAU,CACR,SACA,OACA,eACA,UACA,UACA,SACA,eACA,OACF,EAEA,eAAgB,CACd,SACA,QACA,MACA,aACA,WACA,OACA,QACA,SACA,gBACA,eACA,eACA,UACA,cACA,gBACA,UACA,UACA,SACA,eACA,OACF,EAEA,aAAc,CACZ,SACA,UACA,SACA,QACA,MACA,aACA,WACA,aACA,WACA,OACA,QACA,WACA,iBACA,gBACA,cACA,gBACA,eACA,cACA,gBACA,UACA,UACA,SACA,eACA,OACF,EAEA,UAAW,CAAC,aAAc,cAAe,UAAW,UAAW,SAAU,eAAgB,OAAO,EAEhG,SAAU,CACR,SACA,WACA,WACA,QACA,SACA,UACA,UACA,SACA,eACA,OACF,EAEA,QAAS,CACP,QACA,aACA,aACA,kBACA,aACA,WACA,OACA,YACA,OACA,UACA,UACA,SACA,cACA,cACA,mBACA,cACA,eACA,cACA,cACA,YACA,OACA,SACA,eACA,QACA,kBACA,qBACA,qBACA,YACA,aACA,qBACA,eACA,gBACA,OACF,CACF,EAEaE,GAAsB,CACjC,EAAG,CAAC,QAAQ,EACZ,GAAI,CAAC,WAAW,EAChB,GAAI,CAAC,aAAa,EAClB,GAAI,CAAC,cAAc,EACnB,GAAI,CAAC,YAAY,EACjB,GAAI,CAAC,aAAc,aAA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","names":["React","clsx","SPACE_UNIT","spaceValue","key","spaceKeys","spaceScale","palette","scalarTokens","__spreadValues","colorVar","colorName","semanticColors","tokens","__spreadProps","__spreadValues","scalarTokens","semanticColors","flattenObject","obj","path","separator","acc","k","currentPath","currentValue","createThemeVariables","tokens","flattenObject","mapTokensToThemeVariables","obj","path","newObj","key","currentValue","themeVariables","theme","colorTokens","flattenObject","theme","styleProps","stylePropShorthands","prepValue","value","v","stylePropsMap","styleProps","propName","stylePropShorthandsMap","stylePropShorthands","shorthand","targetProps","stylePropsToCss","props","unmatchedProps","cssFromProps","propValue","matchedShorthand","styleProp","splitPropValues","_a","jsx","prefixPart","part","processPart","p","BoxWithRef","_a","ref","_b","as","children","className","css","props","__objRest","Component","cssFromProps","unmatchedProps","stylePropsToCss","processedPart","classNameWithPart","clsx","__spreadProps","__spreadValues","Box","Text_styles_exports","__export","Body1","Body2","Caption","Display1","Display2","H1","H2","H3","H4","base","fontFamilies","fontSizes","fontWeights","lineHeights","jsx","BaseText","_a","_b","as","children","css","variant","props","__objRest","Box","__spreadProps","__spreadValues","Text_styles_exports","textVariantNames","textVariantComponents","asProp","component","Text","Button_styles_exports","__export","Link","Plain","Primary","Secondary","base","radii","space","colors","jsx","jsxs","BaseButton","_a","_b","as","children","css","title","variant","props","__objRest","Box","__spreadProps","__spreadValues","Button_styles_exports","Text","buttonVariantNames","buttonVariantComponents","variantPart","component","part","Button","React","jsx","Row","_a","ref","_b","children","css","props","__objRest","Box","__spreadProps","__spreadValues","Column","Flex","createContext","Global","ThemeProvider","jsx","jsxs","FrigadeContext","createContext","Provider","apiKey","children","config","theme","themeOverrides","createThemeVariables","Global","__spreadValues","themeVariables","ThemeProvider","useEffect","useRef","useState","XMarkIcon","Popover","useCallback","useLayoutEffect","useState","useBoundingClientRect","initialRect","rect","setRect","node","setNode","ref","keyframes","jsx","jsxs","pulse","keyframes","Dot","_a","_b","style","part","props","__objRest","Box","__spreadProps","__spreadValues","jsx","Image","_a","_b","part","src","props","__objRest","Box","__spreadValues","jsx","getVideoEmbedSrc","videoUri","_a","_b","_c","Video","part","src","props","__objRest","videoEmbedSrc","Box","__spreadValues","jsx","Media","_a","_b","src","type","props","__objRest","Video","Image","__spreadValues","getDotPosition","props","alignAttr","sideAttr","currentSide","dotProps","getCurrentAlign","_a","dotOffset","oppositeSides","currentAlign","RADIX_PROPS","mapTooltipPropsToRadixProps","props","contentRect","_a","_b","_c","_d","_e","contentProps","propName","propEntry","rootProps","mapToOriginalAlignValues","mapAlignOffsetToMargin","align","side","originalOffset","originalStyleProp","currentSide","currentAlign","__spreadProps","__spreadValues","lengthOfCurrentSide","jsx","jsxs","Tooltip","_a","_b","anchor","children","css","spotlight","style","props","__objRest","contentNode","contentRect","contentRef","useBoundingClientRect","contentProps","rootProps","mapTooltipPropsToRadixProps","alignAttr","setAlignAttr","useState","sideAttr","setSideAttr","currentAlignAttr","currentSideAttr","anchorRef","useRef","anchorElementRef","setAnchorElementRef","useEffect","anchorQuery","anchorRect","anchorRadius","dotPosition","getDotPosition","__spreadProps","__spreadValues","Box","Flex","Dot","Button","XMarkIcon","src","Media","onClick","title","Text","Frigade","useContext","useState","useFlow","flowId","flow","setFlow","useState","apiKey","config","useContext","FrigadeContext","fetchFlow","__async","filteredConfig","k","v","flowResponse","Frigade","jsx","jsxs","Tour","_a","_b","flowId","props","__objRest","flow","fetchFlow","useFlow","step","handleDismiss","__async","handlePrimary","handleSecondary","Tooltip","__spreadProps","__spreadValues","e","Flex"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frigade/react",
3
- "version": "2.0.0-alpha.2",
3
+ "version": "2.0.0-alpha.4",
4
4
  "description": "Build better product onboarding, faster.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -45,6 +45,10 @@
45
45
  "files": [
46
46
  "./dist"
47
47
  ],
48
+ "sideEffects": [
49
+ "**/*.css",
50
+ "**/*.css.ts"
51
+ ],
48
52
  "scripts": {
49
53
  "dev": "tsup --watch",
50
54
  "clean": "rimraf ./dist",
@@ -58,8 +62,6 @@
58
62
  "@frigade/js": "*",
59
63
  "@heroicons/react": "^2.0.18",
60
64
  "@radix-ui/react-popover": "^1.0.7",
61
- "@vanilla-extract/css": "^1.13.0",
62
- "@vanilla-extract/dynamic": "^2.0.3",
63
65
  "clsx": "^2.0.0",
64
66
  "core-js-pure": "^3.33.0"
65
67
  },
@@ -71,7 +73,6 @@
71
73
  "@types/jest": "^23.3.1",
72
74
  "@types/react": "^18.2.34",
73
75
  "@types/react-dom": "^18.2.14",
74
- "@vanilla-extract/esbuild-plugin": "^2.3.0",
75
76
  "jest": "^29.6.2",
76
77
  "jest-config": "^29.6.2",
77
78
  "jest-environment-jsdom": "^29.6.2",
package/dist/index.css DELETED
@@ -1,2 +0,0 @@
1
- :root{--fr-borders-md: 1px solid;--fr-borderWidths-0: 0;--fr-borderWidths-md: 1px;--fr-colors-black: #000000;--fr-colors-gray100: #14161A;--fr-colors-gray200: #181B20;--fr-colors-gray300: #1F2329;--fr-colors-gray400: #2E343D;--fr-colors-gray500: #4C5766;--fr-colors-gray600: #5A6472;--fr-colors-gray700: #C5CBD3;--fr-colors-gray800: #E2E5E9;--fr-colors-gray900: #F1F2F4;--fr-colors-white: #ffffff;--fr-colors-blue400: #015AC6;--fr-colors-blue500: #0171F8;--fr-colors-blue800: #DBECFF;--fr-colors-blue900: #F5F9FF;--fr-colors-green400: #009E37;--fr-colors-green500: #00D149;--fr-colors-green800: #DBFFE8;--fr-colors-transparent: #FFFFFF00;--fr-colors-red500: #c00000;--fr-colors-neutral-background: var(--fr-colors-white);--fr-colors-neutral-border: var(--fr-colors-gray900);--fr-colors-neutral-foreground: var(--fr-colors-black);--fr-colors-neutral-surface: var(--fr-colors-gray700);--fr-colors-neutral-active-background: var(--fr-colors-white);--fr-colors-neutral-active-border: var(--fr-colors-gray900);--fr-colors-neutral-active-foreground: var(--fr-colors-black);--fr-colors-neutral-active-surface: var(--fr-colors-gray700);--fr-colors-neutral-focus-background: var(--fr-colors-white);--fr-colors-neutral-focus-border: var(--fr-colors-gray900);--fr-colors-neutral-focus-foreground: var(--fr-colors-black);--fr-colors-neutral-focus-surface: var(--fr-colors-gray700);--fr-colors-neutral-hover-background: var(--fr-colors-white);--fr-colors-neutral-hover-border: var(--fr-colors-gray900);--fr-colors-neutral-hover-foreground: var(--fr-colors-black);--fr-colors-neutral-hover-surface: var(--fr-colors-gray700);--fr-colors-primary-background: var(--fr-colors-blue500);--fr-colors-primary-border: var(--fr-colors-blue500);--fr-colors-primary-foreground: var(--fr-colors-white);--fr-colors-primary-surface: var(--fr-colors-blue500);--fr-colors-primary-active-background: var(--fr-colors-blue400);--fr-colors-primary-active-border: var(--fr-colors-blue400);--fr-colors-primary-active-foreground: var(--fr-colors-white);--fr-colors-primary-active-surface: var(--fr-colors-blue400);--fr-colors-primary-focus-background: var(--fr-colors-blue500);--fr-colors-primary-focus-border: var(--fr-colors-blue500);--fr-colors-primary-focus-foreground: var(--fr-colors-white);--fr-colors-primary-focus-surface: var(--fr-colors-blue500);--fr-colors-primary-hover-background: var(--fr-colors-blue400);--fr-colors-primary-hover-border: var(--fr-colors-blue400);--fr-colors-primary-hover-foreground: var(--fr-colors-white);--fr-colors-primary-hover-surface: var(--fr-colors-blue400);--fr-colors-secondary-background: var(--fr-colors-gray900);--fr-colors-secondary-border: var(--fr-colors-gray900);--fr-colors-secondary-foreground: var(--fr-colors-black);--fr-colors-secondary-surface: var(--fr-colors-gray900);--fr-colors-secondary-active-background: var(--fr-colors-gray800);--fr-colors-secondary-active-border: var(--fr-colors-gray800);--fr-colors-secondary-active-foreground: var(--fr-colors-black);--fr-colors-secondary-active-surface: var(--fr-colors-gray800);--fr-colors-secondary-focus-background: var(--fr-colors-gray900);--fr-colors-secondary-focus-border: var(--fr-colors-gray900);--fr-colors-secondary-focus-foreground: var(--fr-colors-black);--fr-colors-secondary-focus-surface: var(--fr-colors-gray900);--fr-colors-secondary-hover-background: var(--fr-colors-gray800);--fr-colors-secondary-hover-border: var(--fr-colors-gray800);--fr-colors-secondary-hover-foreground: var(--fr-colors-black);--fr-colors-secondary-hover-surface: var(--fr-colors-gray800);--fr-fontFamilies-default: TT Interphases Pro, sans-serif;--fr-fontSizes-xs: 12px;--fr-fontSizes-sm: 14px;--fr-fontSizes-md: 16px;--fr-fontSizes-lg: 18px;--fr-fontSizes-xl: 20px;--fr-fontSizes-2xl: 24px;--fr-fontSizes-3xl: 30px;--fr-fontSizes-4xl: 36px;--fr-fontSizes-5xl: 48px;--fr-fontWeights-regular: 400;--fr-fontWeights-demibold: 600;--fr-fontWeights-bold: 700;--fr-letterSpacings-md: .02em;--fr-lineHeights-xs: 18px;--fr-lineHeights-sm: 22px;--fr-lineHeights-md: 24px;--fr-lineHeights-lg: 26px;--fr-lineHeights-xl: 30px;--fr-lineHeights-2xl: 38px;--fr-lineHeights-3xl: 46px;--fr-lineHeights-4xl: 60px;--fr-radii-md: 8px;--fr-radii-lg: 20px;--fr-radii-round: 50%;--fr-shadows-md: 0px 4px 20px rgba(0, 0, 0, .1);--fr-space-0: 0px;--fr-space-1: 4px;--fr-space-2: 8px;--fr-space-3: 12px;--fr-space-4: 16px;--fr-space-5: 20px;--fr-space-6: 24px;--fr-space-7: 28px;--fr-space-8: 32px;--fr-space-9: 36px;--fr-space-10: 40px;--fr-space-11: 44px;--fr-space-12: 48px;--fr-space-13: 52px;--fr-space-14: 56px;--fr-space-15: 60px;--fr-space-16: 64px;--fr-space-17: 68px;--fr-space-18: 72px;--fr-space-19: 76px;--fr-space-20: 80px;--fr-space--20: -80px;--fr-space--19: -76px;--fr-space--18: -72px;--fr-space--17: -68px;--fr-space--16: -64px;--fr-space--15: -60px;--fr-space--14: -56px;--fr-space--13: -52px;--fr-space--12: -48px;--fr-space--11: -44px;--fr-space--10: -40px;--fr-space--9: -36px;--fr-space--8: -32px;--fr-space--7: -28px;--fr-space--6: -24px;--fr-space--5: -20px;--fr-space--4: -16px;--fr-space--3: -12px;--fr-space--2: -8px;--fr-space--1: -4px;--fr-space--0-5: -2px;--fr-space-0-5: 2px;--fr-space-auto: auto}@keyframes _16td420{0%{opacity:.5;transform:scale(.5)}50%{opacity:0;transform:scale(1)}to{opacity:0;transform:scale(1)}}._16td421{animation:2s ease-out infinite _16td420}
2
- /*# sourceMappingURL=index.css.map */
@@ -1 +0,0 @@
1
- {"version":3,"sources":["vanilla-extract-css-ns:src/shared/theme/baseTheme.css.ts.vanilla.css?source=#H4sIAAAAAAAAE6VY226bQBB971cgVZVSqRvBcrOdp8Q2at8qtVKe17C2UTFYC07dVv337i01ZgeWYBTlYQ5nZs5clmwWrKoa5887x0Foy9CmYhllNTpkC8c7np26KvLs4Rp9zrNmXyN34bgwosn/wbQqKu5zU5D0x8J578qni+4Y+eW53Ol7L/Ai7xHCscJn3hMG+b7CE+zjOYQHEsdrP/BXEB5KPFiGcRRBeCTx8DEKYgzhscSX4fJp5UP4TOJrvA7XYH5ziSdcQBJ08Z/7vKEc3crHrO2JKnWuFz4ujewFHmo89pIZhKvsVk/rZZJAuM4uTOYmvmOUljoBd772Y/AFnYG78gJAP3/hNYUkWRspNoyU9ZEwWjYiDfmYY8RopqKk4JSV9MT9FGjDR3HHqlPJR/WFsDuj0h97mXLSTZbuXy9vWzHaF1FuRi+zPrEtSSkcMh4ISdImf6E3aH11MFGypk9Xrh1MLsC2Sk/1Dfo1f3LHBXu6esWfLH5fvVB2g3jNnyhesaeLV/w3iz+y/EDYr0HZ+izs5/ZItvGGxMKlfmX2yrSFHLHh+stgdTEgegR9unbbjtsSsO+4vW9DWz6OPV2/Zctt4e1bbivg8J6PY0+Xb9nzvvA1Tasys2163yHVYr/xeLsw3360XbiDx9pw2BEbr//SHOFkQPwoB7fUYMy3fTgJ++aP6eKUL3yXf0sdRnzlh1OwnwD2Utq/9WP4t5RhxPf+KoVtVTYJOeRFTmuU0S05Ffxa8P2786VsKDvuSU1r5yurPjk1vzbwQCzfXpG/5b8581zzqypu3VUvUH3gUABC8oIbgVCx49AMhM7FwsEuCGGJwcF8gfkwL5AYnEkosKCbyjPNd/tG3JN2p4LwZgetS1L7hYwe8k1VcKVRzxsKjVtoQRte/G9HkublTpXJvXcxPVzeyEv6WfNl7dv5tUFRfYx7QOH4qlptUHQARz2gUcs2KLvg92Uk+xD0OZadiNqeGcnyXKY6M6wyR/NlvTuh++E/UO9JVv3UtTyeHa5aMh2225A795Ojf+69y27wW3JK5f9nWhGU0Vs4gWHE1ykqo99ZDGUNOoOvrGFHjbJGnSYpa8ytZrQZL7wZbd4Zbq3BFVNrmoU2M56HO1ugzVxfaEb0uMAQCBl2mqvNXGIEhOQaIyAkFxkDIbnK2AyJucqZGVLaEQQIPwhwJOMiILDMEwGJSl0IECbrgIBCyLohoHCyzggotOwLAhoj+4iARsq+I6DxYkwQMCdiqBAwVWIEETCDYmARMLFivBEw32IZELANYnUQsDtizxAkWMgyza6KawDSbprJqakWjvj98O7vP0nait/WFQAA","vanilla-extract-css-ns:src/components/Tooltip/Dot.css.ts.vanilla.css?source=QGtleWZyYW1lcyBfMTZ0ZDQyMCB7CiAgMCUgewogICAgb3BhY2l0eTogMC41OwogICAgdHJhbnNmb3JtOiBzY2FsZSgwLjUpOwogIH0KICA1MCUgewogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgfQogIDEwMCUgewogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgfQp9Ci5fMTZ0ZDQyMSB7CiAgYW5pbWF0aW9uOiAycyBlYXNlLW91dCBpbmZpbml0ZSBfMTZ0ZDQyMDsKfQ=="],"sourcesContent":[":root {\n --fr-borders-md: 1px solid;\n --fr-borderWidths-0: 0;\n --fr-borderWidths-md: 1px;\n --fr-colors-black: #000000;\n --fr-colors-gray100: #14161A;\n --fr-colors-gray200: #181B20;\n --fr-colors-gray300: #1F2329;\n --fr-colors-gray400: #2E343D;\n --fr-colors-gray500: #4C5766;\n --fr-colors-gray600: #5A6472;\n --fr-colors-gray700: #C5CBD3;\n --fr-colors-gray800: #E2E5E9;\n --fr-colors-gray900: #F1F2F4;\n --fr-colors-white: #ffffff;\n --fr-colors-blue400: #015AC6;\n --fr-colors-blue500: #0171F8;\n --fr-colors-blue800: #DBECFF;\n --fr-colors-blue900: #F5F9FF;\n --fr-colors-green400: #009E37;\n --fr-colors-green500: #00D149;\n --fr-colors-green800: #DBFFE8;\n --fr-colors-transparent: #FFFFFF00;\n --fr-colors-red500: #c00000;\n --fr-colors-neutral-background: var(--fr-colors-white);\n --fr-colors-neutral-border: var(--fr-colors-gray900);\n --fr-colors-neutral-foreground: var(--fr-colors-black);\n --fr-colors-neutral-surface: var(--fr-colors-gray700);\n --fr-colors-neutral-active-background: var(--fr-colors-white);\n --fr-colors-neutral-active-border: var(--fr-colors-gray900);\n --fr-colors-neutral-active-foreground: var(--fr-colors-black);\n --fr-colors-neutral-active-surface: var(--fr-colors-gray700);\n --fr-colors-neutral-focus-background: var(--fr-colors-white);\n --fr-colors-neutral-focus-border: var(--fr-colors-gray900);\n --fr-colors-neutral-focus-foreground: var(--fr-colors-black);\n --fr-colors-neutral-focus-surface: var(--fr-colors-gray700);\n --fr-colors-neutral-hover-background: var(--fr-colors-white);\n --fr-colors-neutral-hover-border: var(--fr-colors-gray900);\n --fr-colors-neutral-hover-foreground: var(--fr-colors-black);\n --fr-colors-neutral-hover-surface: var(--fr-colors-gray700);\n --fr-colors-primary-background: var(--fr-colors-blue500);\n --fr-colors-primary-border: var(--fr-colors-blue500);\n --fr-colors-primary-foreground: var(--fr-colors-white);\n --fr-colors-primary-surface: var(--fr-colors-blue500);\n --fr-colors-primary-active-background: var(--fr-colors-blue400);\n --fr-colors-primary-active-border: var(--fr-colors-blue400);\n --fr-colors-primary-active-foreground: var(--fr-colors-white);\n --fr-colors-primary-active-surface: var(--fr-colors-blue400);\n --fr-colors-primary-focus-background: var(--fr-colors-blue500);\n --fr-colors-primary-focus-border: var(--fr-colors-blue500);\n --fr-colors-primary-focus-foreground: var(--fr-colors-white);\n --fr-colors-primary-focus-surface: var(--fr-colors-blue500);\n --fr-colors-primary-hover-background: var(--fr-colors-blue400);\n --fr-colors-primary-hover-border: var(--fr-colors-blue400);\n --fr-colors-primary-hover-foreground: var(--fr-colors-white);\n --fr-colors-primary-hover-surface: var(--fr-colors-blue400);\n --fr-colors-secondary-background: var(--fr-colors-gray900);\n --fr-colors-secondary-border: var(--fr-colors-gray900);\n --fr-colors-secondary-foreground: var(--fr-colors-black);\n --fr-colors-secondary-surface: var(--fr-colors-gray900);\n --fr-colors-secondary-active-background: var(--fr-colors-gray800);\n --fr-colors-secondary-active-border: var(--fr-colors-gray800);\n --fr-colors-secondary-active-foreground: var(--fr-colors-black);\n --fr-colors-secondary-active-surface: var(--fr-colors-gray800);\n --fr-colors-secondary-focus-background: var(--fr-colors-gray900);\n --fr-colors-secondary-focus-border: var(--fr-colors-gray900);\n --fr-colors-secondary-focus-foreground: var(--fr-colors-black);\n --fr-colors-secondary-focus-surface: var(--fr-colors-gray900);\n --fr-colors-secondary-hover-background: var(--fr-colors-gray800);\n --fr-colors-secondary-hover-border: var(--fr-colors-gray800);\n --fr-colors-secondary-hover-foreground: var(--fr-colors-black);\n --fr-colors-secondary-hover-surface: var(--fr-colors-gray800);\n --fr-fontFamilies-default: TT Interphases Pro, sans-serif;\n --fr-fontSizes-xs: 12px;\n --fr-fontSizes-sm: 14px;\n --fr-fontSizes-md: 16px;\n --fr-fontSizes-lg: 18px;\n --fr-fontSizes-xl: 20px;\n --fr-fontSizes-2xl: 24px;\n --fr-fontSizes-3xl: 30px;\n --fr-fontSizes-4xl: 36px;\n --fr-fontSizes-5xl: 48px;\n --fr-fontWeights-regular: 400;\n --fr-fontWeights-demibold: 600;\n --fr-fontWeights-bold: 700;\n --fr-letterSpacings-md: 0.02em;\n --fr-lineHeights-xs: 18px;\n --fr-lineHeights-sm: 22px;\n --fr-lineHeights-md: 24px;\n --fr-lineHeights-lg: 26px;\n --fr-lineHeights-xl: 30px;\n --fr-lineHeights-2xl: 38px;\n --fr-lineHeights-3xl: 46px;\n --fr-lineHeights-4xl: 60px;\n --fr-radii-md: 8px;\n --fr-radii-lg: 20px;\n --fr-radii-round: 50%;\n --fr-shadows-md: 0px 4px 20px rgba(0, 0, 0, 0.1);\n --fr-space-0: 0px;\n --fr-space-1: 4px;\n --fr-space-2: 8px;\n --fr-space-3: 12px;\n --fr-space-4: 16px;\n --fr-space-5: 20px;\n --fr-space-6: 24px;\n --fr-space-7: 28px;\n --fr-space-8: 32px;\n --fr-space-9: 36px;\n --fr-space-10: 40px;\n --fr-space-11: 44px;\n --fr-space-12: 48px;\n --fr-space-13: 52px;\n --fr-space-14: 56px;\n --fr-space-15: 60px;\n --fr-space-16: 64px;\n --fr-space-17: 68px;\n --fr-space-18: 72px;\n --fr-space-19: 76px;\n --fr-space-20: 80px;\n --fr-space--20: -80px;\n --fr-space--19: -76px;\n --fr-space--18: -72px;\n --fr-space--17: -68px;\n --fr-space--16: -64px;\n --fr-space--15: -60px;\n --fr-space--14: -56px;\n --fr-space--13: -52px;\n --fr-space--12: -48px;\n --fr-space--11: -44px;\n --fr-space--10: -40px;\n --fr-space--9: -36px;\n --fr-space--8: -32px;\n --fr-space--7: -28px;\n --fr-space--6: -24px;\n --fr-space--5: -20px;\n --fr-space--4: -16px;\n --fr-space--3: -12px;\n --fr-space--2: -8px;\n --fr-space--1: -4px;\n --fr-space--0-5: -2px;\n --fr-space-0-5: 2px;\n --fr-space-auto: auto;\n}","@keyframes _16td420 {\n 0% {\n opacity: 0.5;\n transform: scale(0.5);\n }\n 50% {\n opacity: 0;\n transform: scale(1);\n }\n 100% {\n opacity: 0;\n transform: scale(1);\n }\n}\n._16td421 {\n animation: 2s ease-out infinite _16td420;\n}"],"mappings":"AAAA,MACE,2BACA,uBACA,0BACA,2BACA,6BACA,6BACA,6BACA,6BACA,6BACA,6BACA,6BACA,6BACA,6BACA,2BACA,6BACA,6BACA,6BACA,6BACA,8BACA,8BACA,8BACA,mCACA,4BACA,uDACA,qDACA,uDACA,sDACA,8DACA,4DACA,8DACA,6DACA,6DACA,2DACA,6DACA,4DACA,6DACA,2DACA,6DACA,4DACA,yDACA,qDACA,uDACA,sDACA,gEACA,4DACA,8DACA,6DACA,+DACA,2DACA,6DACA,4DACA,+DACA,2DACA,6DACA,4DACA,2DACA,uDACA,yDACA,wDACA,kEACA,8DACA,gEACA,+DACA,iEACA,6DACA,+DACA,8DACA,iEACA,6DACA,+DACA,8DACA,0DACA,wBACA,wBACA,wBACA,wBACA,wBACA,yBACA,yBACA,yBACA,yBACA,8BACA,+BACA,2BACA,8BACA,0BACA,0BACA,0BACA,0BACA,0BACA,2BACA,2BACA,2BACA,mBACA,oBACA,sBACA,gDACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,oBACA,oBACA,sBACA,oBACA,sBC7IF,uBAEI,WACA,wBAGA,UACA,sBAGA,UACA,oBAGJ,UACE","names":[]}