@carbonplan/components 13.2.2 → 13.3.0

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/dst/index.js CHANGED
@@ -1,2 +1,3651 @@
1
- var e=require("react"),t=require("theme-ui"),r=require("@theme-ui/color"),n=require("next/link"),a=require("@carbonplan/icons"),o=require("@carbonplan/emoji"),l=require("next/head"),i=require("@emotion/react");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=c(e),s=c(n),u=c(l);function m(){return m=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},m.apply(this,arguments)}function p(e){if(null==e)throw new TypeError("Cannot destructure "+e)}function f(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)t.indexOf(r=o[n])>=0||(a[r]=e[r]);return a}var x=["color","width","maxWidth","name","github","alt","src","sx"],h=function(e){var r,n,a=e.color,o=void 0===a?"transparent":a,l=e.width,i=void 0===l?"90px":l,c=e.maxWidth,s=e.name,u=e.github,p=e.alt,h=e.src,g=e.sx,E=f(e,x);return s||h||u||console.warn("must specify either name, github, or src"),s?(r="https://images.carbonplan.org/team/"+s.toLowerCase().replaceAll(" ","-")+".png",n=p||s):u?(r="https://github.com/"+u+".png",n=p||u):(r=h,n=p),d.default.createElement(t.Box,m({sx:m({width:i,maxWidth:c,height:"auto",borderRadius:"50%",overflow:"hidden",position:"relative",display:"inline-block",verticalAlign:"top"},g)},E),d.default.createElement(t.Image,{alt:n,src:r,sx:{filter:o&&"transparent"!==o?"grayscale(100%) contrast(200%) brightness(100%)":"none",width:"100%",display:"block"}}),o&&"transparent"!==o&&d.default.createElement(t.Box,{sx:{position:"absolute",top:0,bg:o,width:"100%",height:"100%",opacity:.75,pointerEvents:"none"}}))},g=["children","sx","columns","gap"],E=function(e){var r,n,a=e.children,o=e.sx,l=e.columns,i=e.gap,c=f(e,g),s=function(e){if(Array.isArray(e)||(e=[e,e,e,e]),Array.isArray(e)&&![1,2,4].includes(e.length))throw new Error("Array length must be 1, 2, or 4");return Array.isArray(e)&&1==e.length&&(e=e.map(function(e){return[e]}).flat()),Array.isArray(e)&&2==e.length&&(e=e.map(function(e){return[e,e]}).flat()),e};return Number.isInteger(i)||Array.isArray(i)?(r=i=s(i),n=i):(r=[4,5,5,6],n=[0,0,0,0]),l=Number.isInteger(l)||Array.isArray(l)?s(l):[6,8,12,12],d.default.createElement(t.Grid,m({},c,{columns:l,sx:m({columnGap:r,rowGap:n},o)}),a)},b=["start","width","dl","dr","children","sx"],y=function(e){var r=e.start,n=e.width,a=e.dl,o=e.dr,l=e.children,i=e.sx,c=f(e,b);n=n||"auto";var s=function(e){if(e&&!Array.isArray(e)&&(e=[e]),![1,2,4].includes(e.length))throw new Error("Array length must be 1, 2, or 4");return Array.isArray(e)&&1==e.length?e=e.map(function(e){return[e,e,e,e]}).flat():Array.isArray(e)&&2==e.length&&(e=e.map(function(e){return[e,e]}).flat()),e};r=s(r=r||"auto"),n=s(n);var u,p,x=r.map(function(e,t){return"auto"==e?"auto":e+n[t]});if(a){if(![.5,1].includes(a))throw new Error("dl must be 0.5 or 1");.5===a&&(u=["-12px",-3,-3,-4]),1===a&&(u=[-4,-5,-5,-6])}if(o){if(![.5,1].includes(o))throw new Error("dr must be 0.5 or 1");.5===o&&(p=["-12px",-3,-3,-4]),1===o&&(p=[-4,-5,-5,-6])}return d.default.createElement(t.Box,m({},c,{sx:m({gridColumnStart:r,gridColumnEnd:x,ml:u,mr:p},i)}),l)},v={xs:[1],sm:[3],md:[5],lg:[7],xl:[9]},w=function(e){var r,n=e.children,a=e.direction,o=void 0===a?"vertical":a,l=e.spacing,i=void 0===l?"md":l,c=e.sx;if(r="string"==typeof i&&v.hasOwnProperty(i)?v[i]:i,!["horizontal","vertical"].includes(o))throw new Error("Invalid direction value. Must be either horizontal or vertical");var s="vertical"===o?"mb":"mr",u="horizontal"===o?{display:"inline-block"}:{};return d.default.createElement(t.Box,{sx:c},d.default.Children.map(n,function(e,a){var o;return d.default.createElement(t.Box,{sx:m((o={},o[s]=a<n.length-1?r:0,o),u)},e)}))},k=["members","direction","align","spacing","limit","width","maxWidth","fixedCount","sx"],C={xs:[1],sm:[3],md:[5],lg:[7],xl:[9]},S=function(e){return d.default.createElement(t.Box,{sx:{bg:"muted",height:"100%",maxWidth:e.maxWidth,borderRadius:"50%"}},d.default.createElement(t.Box,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"}},d.default.createElement(t.Box,{sx:{fontFamily:"mono",letterSpacing:"mono",fontSize:[3,3,3,4]}},"+",e.overflow)))},B=["sx","children"],z=["“",'"',"'","‘"],A=["href","children","internal"],L=e.forwardRef(function(e,r){var n=e.href,a=e.children,o=e.internal,l=void 0!==o&&o,i=f(e,A);return l||n&&n.startsWith("/")?d.default.createElement(s.default,{href:n,passHref:!0,legacyBehavior:!0},d.default.createElement(t.Link,m({ref:r},i),a)):d.default.createElement(t.Link,m({ref:r,href:n},i),a)}),M=function(e){if(!["xs","sm","md","lg","xl"].includes(e))throw new Error("Size must be xs, sm, md, lg, or xl");var t,r,n,a;return"xs"===e&&(t=[2,2,2,3],r="body",n="body",a=[1.2]),"sm"===e&&(t=[3,3,3,4],r="body",n="body",a=[1.2]),"md"===e&&(t=[4,4,4,5],r="body",n="body",a=[1.2]),"lg"===e&&(t=[5,5,6,7],r="heading",n="heading",a=[1.2,1.2,1.25,1.25]),"xl"===e&&(t=[6,7,8,9],r="heading",n="heading",a=[1.25]),{fontSize:t,fontFamily:r,letterSpacing:n,lineHeight:a}},W=["size","prefix","suffix","inverted","sx","children","align","href","internal"],T=["color"],F=e.forwardRef(function(r,n){var a,o,l,i,c,s=r.size,u=void 0===s?"sm":s,p=r.prefix,x=r.suffix,h=r.inverted,g=r.sx,E=r.children,b=r.align,y=r.href,v=r.internal,w=f(r,W);if(!["xs","sm","md","lg","xl"].includes(u))throw new Error("Size must be xs, sm, md, lg, or xl");var k,C,S,B,z,A,F=g||{},I=F.color,R=f(F,T),O=I||(h?"secondary":"primary"),D=I||h?"primary":"secondary";"xs"===u&&(o=["6px","6px","6px","6px"],l=[12,12,12,13],i=[12,12,12,13],c=[1.5,1.5,1.5,1.5],a={transform:"translateY(0.25px)"}),"sm"===u&&(o=["7px","7px","7px","7px"],l=[13,13,13,18],i=[13,13,13,18],c=[1.5,1.5,1.5,2],a={transform:"translateY(0.25px)"}),"md"===u&&(o=["8px","8px","8px","8px"],l=[18,18,18,24],i=[18,18,18,24],c=[2,2,2,3]),"lg"===u&&(o=["10px","10px","12px","16px"],l=[24,24,34,46],i=[24,24,34,46],c=[3,3,4,5]),"xl"===u&&(o=["12px","16px","18px","20px"],l=[34,46,56,68],i=[34,46,56,68],c=[4,5,6,7]),b?(S=b,B=b):p&&x?(S="initial",B="initial"):p?S="initial":x&&(B="middle"),z="middle"===S?{}:a,A="middle"===B?{}:a,p&&(k={"&:hover > #prefix-span > #prefix":m({color:D},p.type.hover)},p=e.cloneElement(p,{id:"prefix",sx:m({position:"relative",height:l,width:i,mr:E?o:[0],strokeWidth:c,verticalAlign:S,transition:"color 0.15s, transform 0.15s"},p.props.sx)})),x&&(C={"&:hover > #suffix-span >#suffix":m({color:D},x.type.hover)},x=e.cloneElement(x,{id:"suffix",sx:m({height:l,width:i,ml:E?o:[0],strokeWidth:c,verticalAlign:B,transition:"color 0.15s, transform 0.15s"},x.props.sx)}));var N=m({},M(u),{lineHeight:1.05,border:"none",background:"transparent",display:"block",color:O,padding:[0],textAlign:"left",cursor:"pointer",width:"fit-content","@media (hover: hover) and (pointer: fine)":m({"&:hover":{color:D}},C,k)},R),H=d.default.createElement(d.default.Fragment,null,d.default.createElement(t.Box,{as:"span",id:"prefix-span",sx:m({display:"inline-block"},z)},p&&p),d.default.createElement(t.Box,{as:"span",sx:{transition:"color 0.15s"}},E),d.default.createElement(t.Box,{as:"span",id:"suffix-span",sx:m({display:"inline-block"},A)},x&&x));return y?d.default.createElement(L,m({ref:n,href:y,internal:v,sx:m({},N,{textDecoration:"none"})},w),H):d.default.createElement(t.Box,m({ref:n,as:"button",sx:N},w),H)}),I=["label","children","inverted","color","href","internal","sx"],R=e.forwardRef(function(e,r){var n=e.label,o=e.children,l=e.inverted,i=e.color,c=e.href,s=e.internal,u=e.sx,p=f(e,I),x=i||(l?"secondary":"primary"),h=i||l?"primary":"secondary",g=m({border:"none",padding:[0],fontSize:[3,3,3,4],color:x,background:"transparent",textDecoration:"none",fontFamily:"body",lineHeight:"h3",letterSpacing:"body",width:"fit-content",cursor:"pointer",textAlign:"left",mb:[1],"@media (hover: hover) and (pointer: fine)":{"&:hover > #container > #arrow":{transform:"rotate(45deg)",fill:h},"&:hover":{color:h}}},u),E=d.default.createElement(d.default.Fragment,null,d.default.createElement(t.Box,{sx:{transition:"0.15s",letterSpacing:"body",pb:["6px"]}},o),d.default.createElement(t.Box,{sx:{transition:"0.15s",display:"inline-block",textTransform:"uppercase",letterSpacing:"smallcaps",fontFamily:"heading",fontSize:[2,2,2,3]}},n),d.default.createElement(t.Box,{as:"span",id:"container",sx:{ml:[2],display:"inline-block"}},d.default.createElement(a.Arrow,{id:"arrow",sx:{transition:"fill 0.15s, transform 0.15s",position:"relative",top:["2px"],color:x,height:[15,15,15,17],width:[15,15,15,17]}})));return c?d.default.createElement(L,m({ref:r,href:c,internal:s,sx:g},p),E):d.default.createElement(t.Box,m({ref:r,as:"button",sx:g},p),E)}),O=function(e){var r=e.as,n=e.number,a=e.children,o=e.label;return d.default.createElement(t.Box,{as:void 0===r?"figcaption":r,sx:{color:"secondary",display:"block",textAlign:"left",fontSize:[2,2,2,3],"& a":{color:"secondary"},"& a:hover":{color:"primary"},"& > p":{display:"inline",fontSize:[2,2,2,3]}}},n&&d.default.createElement(d.default.Fragment,null,d.default.createElement(t.Box,{sx:{textTransform:"uppercase",letterSpacing:"smallcaps",display:"inline-block"}},void 0===o?"figure":o," ",n)," ",d.default.createElement(t.Box,{sx:{display:"inline-block",mx:[1],pr:[1]}},"/")),a)},D=["colormap","label","clim","setClim","setClimStep","discrete","units","width","height","format","horizontal","bottom","sx","sxClim"],N=function(e){return{bg:"unset",border:"none",color:"primary",px:0,fontFamily:"mono",fontSize:["9px",0,0,1],letterSpacing:"smallcaps",textTransform:"uppercase",transition:"border 0.15s",userSelect:e?"none !important":"unset",width:"fit-content",minWidth:"fit-content"}},H={width:["10px","16px","16px","17px"],height:["80px","110px","110px","130px"]},j=function(e){var r=e.colormap,n=e.discrete,a=e.horizontal,o=e.width,l=e.height,i=1/r.length*100,c=String(r[0]).startsWith("#"),s=r.map(function(e,t){var a;return"rgb("+(c?(a=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e))?parseInt(a[1],16)+", "+parseInt(a[2],16)+", "+parseInt(a[3],16):null:e)+") "+t*i+"% "+(n&&t<r.length-1?(t+1)*i+"%":"")}),u="linear-gradient(to "+(a?"right":"top")+", "+s.join(",")+")";return d.default.createElement(t.Box,{sx:m({},a?{width:o||H.height,height:l||H.width}:{width:o||H.width,minHeight:l||H.height},{mt:a?["1px","1px","1px",0]:0,border:function(e){return"solid 1px "+e.colors.hinted},background:u})})},G=function(e){var r=e.label,n=e.units,a=e.horizontal;return d.default.createElement(t.Box,{sx:!a&&{width:["13px","17px","17px","19px"],alignSelf:"flex-end"}},d.default.createElement(t.Box,{sx:m({mb:a?0:["-4px","-4px","-4px","-3px"],fontFamily:"mono",fontSize:["9px",0,0,1],letterSpacing:"smallcaps",textTransform:"uppercase"},a?{}:{writingMode:"vertical-rl",transform:"rotate(180deg)",whiteSpace:"nowrap",display:"inline-block",overflow:"visible"})},r," ",d.default.createElement(t.Box,{as:"span",sx:{textTransform:"none",color:"secondary",display:"inline-block"}},n)))},V=["sx","color","children"],P=function(e){var r=e.sx,n=e.color,a=e.children,o=f(e,V);return d.default.createElement(t.Box,m({as:"span",sx:m({display:"inline-block",color:n},r)},o),a)},_={Primary:function(e){return d.default.createElement(P,m({color:"primary"},e))},Secondary:function(e){return d.default.createElement(P,m({color:"secondary"},e))},Background:function(e){return d.default.createElement(P,m({color:"background"},e))},Red:function(e){return d.default.createElement(P,m({color:"red"},e))},Orange:function(e){return d.default.createElement(P,m({color:"orange"},e))},Yellow:function(e){return d.default.createElement(P,m({color:"yellow"},e))},Green:function(e){return d.default.createElement(P,m({color:"green"},e))},Teal:function(e){return d.default.createElement(P,m({color:"teal"},e))},Blue:function(e){return d.default.createElement(P,m({color:"blue"},e))},Purple:function(e){return d.default.createElement(P,m({color:"purple"},e))},Pink:function(e){return d.default.createElement(P,m({color:"pink"},e))},Grey:function(e){return d.default.createElement(P,m({color:"grey"},e))}},Y=function(e){var r=e.title,n=e.description,a=e.card,o=e.url,l=t.useThemeUI(),i=l.theme,c=l.colorMode;n||console.warn("a custom description should be used for search engine optimization"),r||console.warn("a custom title should be used for search engine optimization");var s=r||"CarbonPlan",m=n||"Improving the transparency and scientific integrity of climate solutions with open data and tools.",p=a||"https://images.carbonplan.org/social/homepage.png",f=o||"https://carbonplan.org";return d.default.createElement(u.default,null,d.default.createElement("title",null,s),d.default.createElement("meta",{name:"description",content:m}),d.default.createElement("meta",{name:"viewport",content:"initial-scale=1.0, width=device-width"}),o&&d.default.createElement("link",{rel:"canonical",href:o}),d.default.createElement("link",{rel:"alternate icon",type:"image/png",href:"https://images.carbonplan.org/favicon.png"}),d.default.createElement("link",{rel:"icon",type:"image/svg+xml",href:"https://images.carbonplan.org/favicon.svg"}),d.default.createElement("link",{rel:"preload",href:"https://fonts.carbonplan.org/relative/relative-book-pro.woff2",as:"font",type:"font/woff2",crossOrigin:"anonymous"}),d.default.createElement("link",{rel:"preload",href:"https://fonts.carbonplan.org/relative/relative-medium-pro.woff2",as:"font",type:"font/woff2",crossOrigin:"anonymous"}),d.default.createElement("link",{rel:"preload",href:"https://fonts.carbonplan.org/relative/relative-mono-11-pitch-pro.woff2",as:"font",type:"font/woff2",crossOrigin:"anonymous"}),d.default.createElement("link",{rel:"preload",href:"https://fonts.carbonplan.org/relative/relative-faux-book-pro.woff2",as:"font",type:"font/woff2",crossOrigin:"anonymous"}),d.default.createElement("link",{rel:"manifest",href:"https://images.carbonplan.org/manifest.json"}),d.default.createElement("meta",{name:"theme-color",content:i.colors.background}),d.default.createElement("meta",{name:"color-scheme",content:"light"===c?"light":"dark"}),d.default.createElement("link",{rel:"mask-icon",href:"https://images.carbonplan.org/safari-pinned-tab.svg",color:"#000000"}),d.default.createElement("link",{rel:"apple-touch-icon",sizes:"180x180",href:"https://images.carbonplan.org/apple-touch-icon.png"}),d.default.createElement("meta",{name:"msapplication-TileColor",content:i.colors.background}),d.default.createElement("meta",{name:"msapplication-TileImage",content:"https://images.carbonplan.org/mstile-144x144.png"}),d.default.createElement("meta",{name:"msapplication-config",content:"https://images.carbonplan.org/browserconfig.xml"}),d.default.createElement("meta",{property:"og:title",content:s}),d.default.createElement("meta",{property:"og:description",content:m}),d.default.createElement("meta",{property:"og:image",content:p}),d.default.createElement("meta",{property:"og:url",content:f}),d.default.createElement("meta",{name:"twitter:title",content:s}),d.default.createElement("meta",{name:"twitter:description",content:m}),d.default.createElement("meta",{name:"twitter:image",content:p}),d.default.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),d.default.createElement("meta",{name:"format-detection",content:"telephone=no"}))},U=function(e){var r=m({},(p(e),e));return d.default.createElement(t.Box,m({as:"svg",width:"150",fill:"currentColor",stroke:"none",viewBox:"0 0 151.1 28.8"},r),d.default.createElement("g",null,d.default.createElement("g",null,d.default.createElement("path",{d:"M9.7,20.1c-1.3-1.4-2-3.1-2-5.2c0-2.1,0.7-3.9,2-5.2c1.3-1.4,3-2,5.1-2c1.7,0,3.1,0.4,4.3,1.3 c1.1,0.9,1.8,2.1,2.1,3.5c0,0.1,0,0.2,0,0.3s-0.1,0.2-0.2,0.2h-2.3c-0.2,0-0.3-0.1-0.4-0.2c-0.3-0.8-0.7-1.4-1.3-1.8 c-0.6-0.4-1.4-0.6-2.2-0.6c-1.3,0-2.3,0.4-3,1.2c-0.8,0.8-1.1,1.9-1.1,3.4c0,1.5,0.4,2.6,1.1,3.4c0.8,0.8,1.8,1.2,3,1.2 c0.8,0,1.6-0.2,2.2-0.6c0.6-0.4,1.1-1,1.3-1.8c0.1-0.2,0.2-0.2,0.4-0.3H21c0.1,0,0.2,0.1,0.2,0.2c0,0.1,0,0.2,0,0.3 c-0.3,1.4-1,2.6-2.1,3.5c-1.1,0.9-2.5,1.3-4.3,1.3C12.7,22.1,11,21.4,9.7,20.1z"})),d.default.createElement("g",null,d.default.createElement("path",{d:"M22.5,17.6c0-1.5,0.5-2.6,1.6-3.5c1.1-0.8,2.4-1.2,4.1-1.2c1.1,0,2.4,0.2,3.7,0.6V13c0-0.9-0.3-1.6-0.8-2.1 c-0.5-0.5-1.2-0.8-2.2-0.8c-1.4,0-2.4,0.6-2.9,1.8c-0.1,0.2-0.2,0.2-0.4,0.2h-2.3c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0-0.2,0-0.3 c0.3-1.2,0.9-2.2,1.9-2.9c1-0.8,2.3-1.1,3.8-1.1C30.6,7.6,32,8.1,33,9c1,0.9,1.5,2.2,1.5,3.8V19c0,1.1,0.2,1.9,0.5,2.6 c0,0.1,0.1,0.1,0.1,0.1c0,0.1-0.1,0.1-0.3,0.1h-2.8c-0.2,0-0.3-0.1-0.3-0.3v-1c-1.1,1.1-2.5,1.6-4.3,1.6c-1.4,0-2.6-0.4-3.6-1.2 C23,20.1,22.5,19,22.5,17.6z M25.4,17.5c0,0.6,0.2,1.1,0.7,1.5c0.4,0.4,1.1,0.5,1.9,0.5c1.1,0,2-0.3,2.8-0.9 c0.8-0.6,1.1-1.5,1.1-2.6c-1.3-0.4-2.5-0.6-3.6-0.6c-0.8,0-1.5,0.2-2.1,0.5C25.7,16.3,25.4,16.8,25.4,17.5z"})),d.default.createElement("g",null,d.default.createElement("path",{d:"M37,21.6V8.2c0-0.2,0.1-0.3,0.3-0.3h2.2c0.2,0,0.3,0.1,0.3,0.3v1.1c1-1.1,2.3-1.6,3.7-1.6 c0.8,0,1.7,0.1,2.5,0.4c0.2,0.1,0.3,0.3,0.3,0.5v2.2c0,0.2-0.1,0.3-0.2,0.3c0,0-0.1,0-0.2-0.1c-1.1-0.5-2-0.8-2.9-0.8 c-0.9,0-1.7,0.4-2.3,1.1c-0.6,0.7-0.9,1.7-0.9,3v7.3c0,0.2-0.1,0.3-0.3,0.3h-2.2C37.1,21.8,37,21.7,37,21.6z"})),d.default.createElement("g",null,d.default.createElement("path",{d:"M47.6,21.6V2.7c0-0.2,0.1-0.3,0.3-0.3H50c0.2,0,0.3,0.1,0.3,0.3v6.5c1.3-1.1,2.7-1.6,4.3-1.6 c1.9,0,3.4,0.7,4.6,2c1.1,1.3,1.7,3.1,1.7,5.3c0,2.2-0.6,4-1.7,5.3c-1.1,1.3-2.7,2-4.6,2c-1.8,0-3.2-0.5-4.3-1.6v1 c0,0.2-0.1,0.3-0.3,0.3h-2.2C47.7,21.8,47.6,21.7,47.6,21.6z M51.2,11.5c-0.7,0.9-1.1,2-1.1,3.3c0,1.4,0.4,2.5,1.1,3.3 s1.7,1.3,2.9,1.3c1.2,0,2.2-0.4,2.9-1.3c0.7-0.9,1.1-2,1.1-3.3c0-1.4-0.4-2.5-1.1-3.3c-0.7-0.9-1.7-1.3-2.9-1.3 C52.9,10.2,51.9,10.7,51.2,11.5z"})),d.default.createElement("g",null,d.default.createElement("path",{d:"M64.3,20.1c-1.4-1.4-2.1-3.1-2.1-5.2c0-2.1,0.7-3.9,2.1-5.2c1.4-1.4,3.1-2,5.2-2c2.1,0,3.8,0.7,5.2,2 c1.4,1.4,2.1,3.1,2.1,5.2c0,2.1-0.7,3.9-2.1,5.2c-1.4,1.4-3.1,2-5.2,2C67.4,22.1,65.7,21.4,64.3,20.1z M66.4,11.5 c-0.8,0.8-1.2,2-1.2,3.4c0,1.4,0.4,2.5,1.2,3.4s1.9,1.3,3.1,1.3c1.3,0,2.3-0.4,3.1-1.3c0.8-0.8,1.2-2,1.2-3.4 c0-1.4-0.4-2.5-1.2-3.4c-0.8-0.8-1.9-1.3-3.1-1.3C68.2,10.2,67.2,10.7,66.4,11.5z"})),d.default.createElement("g",null,d.default.createElement("path",{d:"M78.7,21.6V8.2c0-0.2,0.1-0.3,0.3-0.3h2.2c0.2,0,0.3,0.1,0.3,0.3v1.3c1.3-1.2,2.7-1.8,4.4-1.8 c1.5,0,2.7,0.4,3.5,1.3c0.8,0.9,1.3,2,1.3,3.6v9.1c0,0.2-0.1,0.3-0.3,0.3h-2.2c-0.2,0-0.3-0.1-0.3-0.3v-8.3c0-2-0.9-3.1-2.8-3.1 c-1.1,0-1.9,0.4-2.7,1.2c-0.7,0.8-1.1,2-1.1,3.5v6.6c0,0.2-0.1,0.3-0.3,0.3h-2.2C78.7,21.8,78.7,21.7,78.7,21.6z"})),d.default.createElement("g",null,d.default.createElement("path",{d:"M101.7,27.1V8.2c0-0.2,0.1-0.3,0.3-0.3h2.2c0.2,0,0.3,0.1,0.3,0.3v1c1.1-1.1,2.5-1.6,4.3-1.6 c1.9,0,3.4,0.7,4.6,2s1.7,3.1,1.7,5.3c0,2.2-0.6,4-1.7,5.3c-1.1,1.3-2.7,2-4.6,2c-1.5,0-3-0.5-4.3-1.6v6.6c0,0.2-0.1,0.3-0.3,0.3 H102C101.8,27.3,101.7,27.2,101.7,27.1z M105.3,11.5c-0.7,0.9-1.1,2-1.1,3.3c0,1.4,0.4,2.5,1.1,3.3s1.7,1.3,2.9,1.3 c1.2,0,2.2-0.4,2.9-1.3c0.7-0.9,1.1-2,1.1-3.3c0-1.4-0.4-2.5-1.1-3.3c-0.7-0.9-1.7-1.3-2.9-1.3C107,10.2,106,10.7,105.3,11.5z"})),d.default.createElement("g",null,d.default.createElement("path",{d:"M117.2,21.6V2.7c0-0.2,0.1-0.3,0.3-0.3h2.2c0.2,0,0.3,0.1,0.3,0.3v18.9c0,0.2-0.1,0.3-0.3,0.3h-2.2 C117.3,21.8,117.2,21.7,117.2,21.6z"})),d.default.createElement("g",null,d.default.createElement("path",{d:"M122,17.6c0-1.5,0.5-2.6,1.6-3.5c1.1-0.8,2.4-1.2,4.1-1.2c1.1,0,2.4,0.2,3.7,0.6V13c0-0.9-0.3-1.6-0.8-2.1 c-0.5-0.5-1.2-0.8-2.2-0.8c-1.4,0-2.4,0.6-2.9,1.8c-0.1,0.2-0.2,0.2-0.4,0.2h-2.3c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0-0.2,0-0.3 c0.3-1.2,0.9-2.2,1.9-2.9c1-0.8,2.3-1.1,3.8-1.1c1.7,0,3.1,0.5,4.2,1.4s1.5,2.2,1.5,3.8V19c0,1.1,0.2,1.9,0.5,2.6 c0,0.1,0.1,0.1,0.1,0.1c0,0.1-0.1,0.1-0.3,0.1h-2.8c-0.2,0-0.3-0.1-0.3-0.3v-1c-1.1,1.1-2.5,1.6-4.3,1.6c-1.4,0-2.6-0.4-3.6-1.2 C122.5,20.1,122,19,122,17.6z M124.9,17.5c0,0.6,0.2,1.1,0.7,1.5c0.4,0.4,1.1,0.5,1.9,0.5c1.1,0,2-0.3,2.8-0.9 c0.8-0.6,1.1-1.5,1.1-2.6c-1.3-0.4-2.5-0.6-3.6-0.6c-0.8,0-1.5,0.2-2.1,0.5C125.2,16.3,124.9,16.8,124.9,17.5z"})),d.default.createElement("g",null,d.default.createElement("path",{d:"M136.9,21.6V8.2c0-0.2,0.1-0.3,0.3-0.3h2.2c0.2,0,0.3,0.1,0.3,0.3v1.3c1.3-1.2,2.7-1.8,4.4-1.8 c1.5,0,2.7,0.4,3.5,1.3c0.8,0.9,1.3,2,1.3,3.6v9.1c0,0.2-0.1,0.3-0.3,0.3h-2.2c-0.2,0-0.3-0.1-0.3-0.3v-8.3c0-2-0.9-3.1-2.8-3.1 c-1.1,0-1.9,0.4-2.7,1.2c-0.7,0.8-1.1,2-1.1,3.5v6.6c0,0.2-0.1,0.3-0.3,0.3h-2.2C137,21.8,136.9,21.7,136.9,21.6z"})),d.default.createElement("path",{d:"M97.6,14.9c0,4.2-0.6,8.3-1.6,12.3c0,0.1-0.1,0.2-0.2,0.2h-2.4c-0.1,0-0.2-0.1-0.2-0.3c1.1-3.9,1.7-8,1.7-12.2 s-0.6-8.3-1.7-12.2c0-0.1,0.1-0.3,0.2-0.3l2.4,0c0.1,0,0.2,0.1,0.2,0.2C97.1,6.5,97.6,10.6,97.6,14.9z"}),d.default.createElement("path",{d:"M1.4,14.9C1.4,10.6,2,6.5,3,2.6c0-0.1,0.1-0.2,0.2-0.2l2.4,0c0.1,0,0.2,0.1,0.2,0.3c-1.1,3.9-1.7,8-1.7,12.2 s0.6,8.3,1.7,12.2c0,0.1-0.1,0.3-0.2,0.3H3.3c-0.1,0-0.2-0.1-0.2-0.2C2,23.2,1.4,19.1,1.4,14.9z"})))},q=["value","sx"],X=function(e){var r=e.value,n=e.sx,a=f(e,q);return d.default.createElement(t.IconButton,m({sx:m({cursor:"pointer",fill:"none",strokeWidth:"2px",stroke:"text",".paren":{opacity:"0"},"@media (hover: hover) and (pointer: fine)":{"&:hover .paren":{opacity:"1"}}},n),"aria-label":"Toggle Menu"},a),!r&&d.default.createElement("svg",{style:{width:"50px",height:"30px",marginTop:"-3px",flexShrink:0},xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 68 36"},d.default.createElement("line",{x1:"52",y1:"29.9",x2:"16",y2:"29.9"}),d.default.createElement("line",{x1:"52",y1:"6.1",x2:"16",y2:"6.1"}),d.default.createElement("line",{x1:"52",y1:"18",x2:"16",y2:"18"}),d.default.createElement("path",{style:{transition:"all 0.2s"},className:"paren",d:"M6.4,1.2c-6.3,10.3-6.3,23.3,0,33.6"}),d.default.createElement("path",{style:{transition:"all 0.2s"},className:"paren",d:"M61.6,34.8c6.3-10.3,6.3-23.3,0-33.6"})),r&&d.default.createElement("svg",{style:{width:"50px",height:"30px",marginTop:"-3px",flexShrink:0},xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 68 36"},d.default.createElement("line",{x1:"50.85",y1:"29.79",x2:"17.15",y2:"6.21"}),d.default.createElement("line",{x1:"17.15",y1:"29.79",x2:"50.85",y2:"6.21"}),d.default.createElement("path",{style:{transition:"all 0.2s"},className:"paren",d:"M6.4,1.2c-6.3,10.3-6.3,23.3,0,33.6"}),d.default.createElement("path",{style:{transition:"all 0.2s"},className:"paren",d:"M61.6,34.8c6.3-10.3,6.3-23.3,0-33.6"})))},K=function(e,t,r){return void 0===r&&(r=!1),{width:"auto",color:e===t?"secondary":"text",fontSize:[6,6,7,8],fontFamily:"heading",letterSpacing:"heading",borderStyle:"solid",borderColor:"muted",borderWidth:"0px",borderBottomWidth:"1px",borderTopWidth:r?"1px":"0px",py:[3,3,4,5],textDecoration:"none",display:"block",position:"relative",transition:"color 0.15s","@media (hover: hover) and (pointer: fine)":{"&:hover > #arrow":{opacity:1}},"&:hover":{color:e==t?"secondary":"text"}}},Z=[{url:"about",display:"About"},{url:"research",display:"Research"},{url:"blog",display:"Blog"},{url:"press",display:"Press"}],$=function(){return d.default.createElement(a.Arrow,{id:"arrow",sx:{pointerEvents:"none",display:"inline-block",position:"absolute",left:["-60px","-68px","-80px","-104px"],top:["32px","32px","46px","62px"],opacity:0,transition:"opacity 0.2s ease-out",transform:"rotate(45deg)",width:[36,36,48,56],height:[36,36,48,56]}})},J=function(e){var r=e.link,n=e.mode,a=e.nav,o=e.first,l=e.setExpanded,i=r.url,c=r.display,u="remote"===n?"https://carbonplan.org/"+i:"/"+i;return"homepage"===n||"local"===n&&a===i?d.default.createElement(s.default,{href:u,passHref:!0,legacyBehavior:!0},d.default.createElement(t.Link,{onClick:function(){a===i&&l(!1)},sx:K(a,i,o)},d.default.createElement($,null),c)):d.default.createElement(t.Link,{href:u,sx:K(a,i,o)},d.default.createElement($,null),c)},Q=function(e){var t=e.nav,r=e.mode,n=e.setExpanded;return e.links.map(function(e,a){return d.default.createElement(J,{key:a,link:e,mode:r,nav:t,first:0===a,setExpanded:n})})},ee=function(r){var n=r.status,a=r.mode,o=r.nav,l=r.menuItems,i=e.useState(!1),c=i[0],u=i[1];return d.default.createElement(E,{sx:{pt:["12px"],pb:[3]}},d.default.createElement(y,{start:[1],width:[2]},d.default.createElement(t.Box,{sx:{pointerEvents:"all",display:"block",width:"fit-content"}},("homepage"==a||"local"==a)&&d.default.createElement(s.default,{href:"/",passHref:!0,legacyBehavior:!0},d.default.createElement(t.Link,{"aria-label":"CarbonPlan Homepage",sx:{display:"block"}},d.default.createElement(U,{id:"logo",sx:{cursor:"pointer",color:"primary"}}))),(null==a||"remote"==a)&&d.default.createElement(t.Link,{href:"https://carbonplan.org","aria-label":"CarbonPlan Homepage",sx:{display:"block"}},d.default.createElement(U,{sx:{cursor:"pointer",color:"primary"}})))),d.default.createElement(y,{start:[4,9],width:[2,2],dr:1,sx:{display:[n?"flex":"none","flex","flex","flex"],alignItems:"center"}},d.default.createElement(t.Box,{sx:{fontSize:[1,2,3],position:"relative",top:["-2px","-3px","-3px"]}},n?"("+n+")":"")),d.default.createElement(y,{start:[n?6:4,6,11,11],width:[n?1:3,3,2,2],sx:{zIndex:5e3}},d.default.createElement(t.Flex,{sx:{pointerEvents:"all",justifyContent:"flex-end"}},d.default.createElement(t.Box,{sx:{display:[n?"none":"flex","flex","flex","flex"],mr:"18px",gap:"18px",opacity:c?0:1,transition:"opacity 0.15s",justifyContent:"space-between",alignItems:"center"}},l),d.default.createElement(X,{sx:{flexShrink:0,mr:["-2px"]},value:c,onClick:function(e){u(!c)}}))),d.default.createElement(t.Box,{sx:{opacity:c?1:0,pointerEvents:c?"all":"none",position:"fixed",top:"0px",right:"0px",bottom:"0px",minWidth:"0px",maxHeight:"100vh",width:"100vw",backgroundColor:"background",zIndex:4e3,pt:["79px"],transition:"opacity 0.25s"}},d.default.createElement(t.Container,null,d.default.createElement(E,null,d.default.createElement(y,{start:[2,4,7,7],width:[5,4,5,5]},d.default.createElement(t.Box,{as:"nav",sx:{display:c?"inherit":"none",mt:[5,5,5,6]}},d.default.createElement(Q,{links:Z,nav:o,mode:a,setExpanded:u})))))))},te=function(e){var r=m({},(p(e),e));return d.default.createElement(t.Box,m({as:"svg",width:"80",stroke:"none",fill:"currentColor",viewBox:"0 0 32 32"},r),d.default.createElement("path",{d:"M21.9395,14.9395 L17.5005,19.3785 L17.5005,7.0005 L14.5005,7.0005 L14.5005,19.3785 L10.0605,14.9395 L7.9395,17.0605 L14.9395,24.0605 C15.2325,24.3535 15.6165,24.5005 16.0005,24.5005 C16.3835,24.5005 16.7675,24.3535 17.0605,24.0605 L24.0605,17.0605 L21.9395,14.9395 Z"}),d.default.createElement("path",{d:"M27.5986,4 L22.8966,4 C26.5556,6.303 28.9996,10.366 28.9996,15 C28.9996,20.4 25.6896,25.039 20.9926,27 L26.5586,27 C29.8886,24.068 31.9996,19.785 31.9996,15 C31.9996,10.734 30.3196,6.868 27.5986,4"}),d.default.createElement("path",{d:"M3,15 C3,10.366 5.444,6.303 9.104,4 L4.401,4 C1.68,6.868 0,10.734 0,15 C0,19.785 2.112,24.068 5.441,27 L11.008,27 C6.311,25.039 3,20.4 3,15"}))},re=function(){var r=e.useState(null),n=r[0],a=r[1];return e.useEffect(function(){a((new Date).getFullYear())},[]),d.default.createElement(t.Box,{sx:{mt:[7,7,7,8],mb:[7,7,7,8],pb:[2,1,0,0]}},d.default.createElement(E,{sx:{mb:[0,0,4,5]}},d.default.createElement(y,{start:[1,2],width:[3,3]},d.default.createElement(t.Box,null,d.default.createElement(t.Box,{sx:{fontSize:[2,2,2,3],fontFamily:"heading",letterSpacing:"mono",mb:[2]}},"EMAIL"),d.default.createElement(t.Link,{href:"mailto:hello@carbonplan.org",sx:{textDecoration:"none",fontSize:[2,2,2,3]}},"hello@carbonplan.org"))),d.default.createElement(y,{start:[5],width:[1],dl:1,dr:1,sx:{display:["flex","none","none","none"],justifyContent:["center"]}},d.default.createElement(te,{sx:{mt:["-4px"],width:"60px",height:"60px"}})),d.default.createElement(y,{start:[1,5,5,5],width:[3,3],sx:{mt:[3,0,0,0]}},d.default.createElement(t.Box,null,d.default.createElement(t.Box,{sx:{fontSize:[2,2,2,3],fontFamily:"heading",letterSpacing:"mono",mb:[2]}},"NEWSLETTER"),d.default.createElement(t.Link,{href:"https://carbonplan.org/newsletter",sx:{textDecoration:"none",fontSize:[2,2,2,3]}},"Subscribe"))),d.default.createElement(y,{start:[1,9],width:[5,4,3,3],sx:{mt:["42px","42px",0,0],mb:[3,3,0,0]}},d.default.createElement(t.Box,null,d.default.createElement(t.Box,{sx:{fontSize:[2,2,2,3],fontFamily:"body",color:"secondary"}},"CarbonPlan is a registered nonprofit public benefit corporation in California with 501(c)(3) status.")))),d.default.createElement(E,{sx:{mb:["2px"],mt:[5,5,4]}},d.default.createElement(y,{start:[1,1,2,2],width:[3,2,3,3],sx:{display:"flex",alignItems:["flex-start","flex-start","flex-end"]}},d.default.createElement(t.Box,{sx:{bottom:"0px",borderStyle:"solid",borderColor:"muted",borderWidth:"0px",borderTopWidth:"1px",display:"inline-block",pt:[2]}},d.default.createElement(t.Box,{sx:{color:"secondary",fontSize:[1,1,1,2],fontFamily:"mono",letterSpacing:"mono"}},d.default.createElement(t.Flex,{sx:{flexDirection:["column","column","row","row"],gap:[0,0,"10px","12px"]}},d.default.createElement(t.Box,null,"(c) ",n),d.default.createElement(t.Box,null,"CARBONPLAN"))))),d.default.createElement(y,{start:[4,3,5,5],width:[3,3,4,4],sx:{display:"flex",alignItems:["flex-start","flex-start","flex-end"],mt:[0,0,0,0]}},d.default.createElement(t.Box,{sx:{bottom:"0px",borderStyle:"solid",borderColor:"muted",borderWidth:"0px",borderTopWidth:"1px",pt:[2]}},d.default.createElement(t.Flex,{sx:{color:"secondary",fontSize:[1,1,1,2],fontFamily:"mono",letterSpacing:"mono",flexDirection:["column","column","row","row"],gap:[0,0,"10px","12px"]}},d.default.createElement(s.default,{href:"/terms",passHref:!0,legacyBehavior:!0},d.default.createElement(t.Box,{as:"a",sx:{color:"secondary","&:hover":{color:"primary"}}},"TERMS OF USE")),d.default.createElement(t.Box,{sx:{display:["none","none","initial","initial"]}}," / "),d.default.createElement(s.default,{href:"/privacy",passHref:!0,legacyBehavior:!0},d.default.createElement(t.Box,{as:"a",sx:{color:"secondary","&:hover":{color:"primary"}}},"PRIVACY POLICY"))))),d.default.createElement(y,{start:[5,7,9,9],width:[2,2,3,3],sx:{display:["none","initial","initial","initial"]}},d.default.createElement(te,{sx:{width:80,height:80,mt:[0,"-10px",4,5],mb:["-12px"]}}))))},ne=["sx"],ae=function(r){var n=r.sx,o=f(r,ne),l=t.useColorMode(),i=l[0],c=l[1],s=e.useCallback(function(){c("light"===i?"dark":"light")},[i]);return d.default.createElement(t.IconButton,m({"aria-label":"Toggle dark mode",onClick:s,role:"checkbox",sx:m({width:32,height:32,display:"inline-block",cursor:"pointer",color:"secondary"},n)},o),d.default.createElement(a.Sun,{sx:{strokeWidth:"1.75",transition:"stroke 0.15s","@media (hover: hover) and (pointer: fine)":{"&:hover":{stroke:"primary"}}}}))},oe=function(){var e=process.env.NEXT_PUBLIC_VERCEL_GIT_COMMIT_SHA,r=process.env.NEXT_PUBLIC_VERCEL_GIT_REPO_OWNER,n=process.env.NEXT_PUBLIC_VERCEL_GIT_REPO_SLUG,a=t.useThemeUI().theme.rawColors.secondary;if(e&&r&&n){var o=e.substring(0,7),l="https://github.com/"+r+"/"+n+"/tree/"+e;return d.default.createElement(t.Box,{sx:{display:"inline-block",width:"87px"}},d.default.createElement(le,{color:a}),d.default.createElement(t.Link,{href:l,sx:{whiteSpace:"nowrap",display:"inline-block",ml:[2],fontFamily:"mono",letterSpacing:"body",color:a,fontSize:[1],textTransform:"uppercase",textDecoration:"none"}},o))}return d.default.createElement(t.Box,{sx:{display:"inline-block",width:"87px"}},d.default.createElement(le,{color:a}),d.default.createElement(t.Text,{sx:{whiteSpace:"nowrap",display:"inline-block",ml:[2],fontFamily:"mono",letterSpacing:"body",color:a,fontSize:[1],textTransform:"uppercase"}},a))},le=function(e){return d.default.createElement("svg",{fill:e.color,opacity:"0.8",viewBox:"0 0 24 24",width:"24",height:"24"},d.default.createElement("circle",{r:5,cx:19,cy:19}))},ie=function(r){var n=r.mode,a=e.useState(function(e){return"mouse"===e?"X,Y: "+de(0,4)+","+de(0,4):"scroll"===e?"SCROLL: 0."+de((0).toFixed(0),2):e}(n)),o=a[0],l=a[1];return e.useEffect(function(){if("mouse"===n){var e=function(e){var t=de(e.clientX,4),r=de(e.clientY,4);l("X,Y: "+t+","+r)};return window.addEventListener("mousemove",e),function(){window.removeEventListener("mousemove",e)}}if("scroll"===n){var t=function(e){var t=function(e,t){return Math.min(e.scrollY/(document.body.offsetHeight-770),.99)}(window);l("SCROLL: 0."+de((100*t).toFixed(0),2))};return window.addEventListener("scroll",t),function(){window.removeEventListener("scroll",t)}}},[]),d.default.createElement(t.Text,{sx:{whiteSpace:"nowrap",display:"inline-block",mr:"-6px",fontFamily:"mono",letterSpacing:"body",color:"secondary",fontSize:[1],textTransform:"uppercase"}},o)},ce=function(e){return d.default.createElement(t.Box,{sx:{userSelect:"none",position:"fixed",bottom:"42px",right:"24px",transformOrigin:"right",transform:"rotate(90deg)",display:["none","none","initial"]}},d.default.createElement(ie,{mode:e.mode}),d.default.createElement(oe,null))};function de(e,t){return e.toString().padStart(t,"0")}var se=["duration","delay","children"],ue=i.keyframes({from:{opacity:0},to:{opacity:1}}),me=function(e){var r=e.duration,n=void 0===r?300:r,a=e.delay,o=void 0===a?0:a,l=e.children,i=f(e,se);return d.default.createElement(t.Box,m({},i,{sx:{animationDuration:n+"ms",animationDelay:o+"ms",animationName:ue.toString(),animationFillMode:"backwards"}}),l)},pe=function(e){var t=e.createElement("div");t.style.visibility="hidden",t.style.width="100px",e.body.appendChild(t),t.style.overflow="scroll";var r=e.createElement("div");r.style.width="100%",t.appendChild(r);var n=t.offsetWidth-r.offsetWidth;return t.parentNode.removeChild(t),n},fe=function(){return e.useEffect(function(){"undefined"!=typeof document&&pe(document)>0&&(document.body.classList.add("custom-scrollbar"),document.getElementsByTagName("html")[0].classList.add("custom-scrollbar"))},[]),null},xe=function(r){var n=r.color,a=void 0===n?"muted":n,o=e.useState(!1),l=o[0],i=o[1];return e.useEffect(function(){function e(e){";"===e.key&&e.metaKey&&i(function(e){return!e})}return document.addEventListener("keydown",e),function(){document.removeEventListener("keydown",e)}},[]),d.default.createElement(t.Box,{sx:{position:"fixed",width:"100%",left:0,top:0,zIndex:"teal"===a?5e3:-1,pointerEvents:"none",display:l?"initial":"none"}},d.default.createElement(t.Container,null,d.default.createElement(t.Box,{sx:{display:["none","none","initial","initial"]}},d.default.createElement(ge,{indices:[1,2,3,4,5,6,7,8,9,10,11,12],color:a})),d.default.createElement(t.Box,{sx:{display:["none","initial","none","none"]}},d.default.createElement(ge,{indices:[1,2,3,4,5,6,7,8],color:a})),d.default.createElement(t.Box,{sx:{display:["initial","none","none","none"]}},d.default.createElement(ge,{indices:[1,2,3,4,5,6],color:a}))))},he=["red","orange","yellow","green","teal","blue","purple","pink"];function ge(e){var r=e.color,n={outerGuideColumn:{borderStyle:"solid",borderWidth:"0px",borderLeftWidth:"teal"===r?"0px":"1px",borderRightWidth:"teal"===r?"0px":"1px",opacity:"teal"==r?.4:1},innerGuideColumn:{borderStyle:"solid",borderWidth:"0px",borderLeftWidth:"0px",borderRightWidth:"0px",opacity:"teal"==r?.4:1}};return d.default.createElement(E,null,e.indices.map(function(e){return d.default.createElement(y,{key:e,start:[e],width:[1,1],dl:.5,dr:.5,sx:m({bg:"teal"===r?"teal":"transparent",height:"100vh"},n.innerGuideColumn)},d.default.createElement(t.Box,{sx:m({mx:["12px",3,3,4],bg:"teal"===r?"background":"transparent",height:"100%",borderLeftColor:"rainbow"===r?he[e%8]:"muted",borderRightColor:"rainbow"===r?he[e%8]:"muted"},n.outerGuideColumn)}))}))}var Ee=["value","sx"],be=function(e){var r=e.value,n=e.sx,a=f(e,Ee);return d.default.createElement(t.IconButton,m({sx:m({cursor:"pointer",fill:"none",strokeWidth:"2px",stroke:"text",".paren":{opacity:"0"},"@media (hover: hover) and (pointer: fine)":{"&:hover .paren":{opacity:"1"}}},n),"aria-label":"Toggle Menu"},a),!r&&d.default.createElement("svg",{style:{width:"50px",height:"30px",marginTop:"-3px",flexShrink:0},xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 68 36"},d.default.createElement("line",{x1:"24",y1:"2.1",x2:"24",y2:"6.1"}),d.default.createElement("line",{x1:"24",y1:"24.1",x2:"24",y2:"33.9"}),d.default.createElement("line",{x1:"44",y1:"2.1",x2:"44",y2:"12.1"}),d.default.createElement("line",{x1:"44",y1:"30.1",x2:"44",y2:"33.9"}),d.default.createElement("circle",{cx:"24",cy:"15.1",r:"5"}),d.default.createElement("circle",{cx:"44",cy:"21.1",r:"5"}),d.default.createElement("path",{style:{transition:"all 0.2s"},className:"paren",d:"M6.4,1.2c-6.3,10.3-6.3,23.3,0,33.6"}),d.default.createElement("path",{style:{transition:"all 0.2s"},className:"paren",d:"M61.6,34.8c6.3-10.3,6.3-23.3,0-33.6"})),r&&d.default.createElement("svg",{style:{width:"50px",height:"30px",marginTop:"-3px",flexShrink:0},xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 68 36"},d.default.createElement("line",{x1:"50.85",y1:"29.79",x2:"17.15",y2:"6.21"}),d.default.createElement("line",{x1:"17.15",y1:"29.79",x2:"50.85",y2:"6.21"}),d.default.createElement("path",{style:{transition:"all 0.2s"},className:"paren",d:"M6.4,1.2c-6.3,10.3-6.3,23.3,0,33.6"}),d.default.createElement("path",{style:{transition:"all 0.2s"},className:"paren",d:"M61.6,34.8c6.3-10.3,6.3-23.3,0-33.6"})))},ye=function(r){var n=r.title,a=r.description,o=r.url,l=r.card,i=r.status,c=r.nav,s=r.settings,u=r.footer,p=void 0===u||u,f=r.header,x=void 0===f||f,h=r.metadata,g=void 0===h?"mouse":h,E=r.links,b=void 0===E?"remote":E,y=r.dimmer,v=void 0===y?"bottom":y,w=r.guide,k=void 0===w||w,C=r.scrollbar,S=void 0!==C&&C,B=r.fade,z=r.container,A=void 0===z||z,L=r.printable,M=void 0!==L&&L,W=r.children;(void 0===B||B)&&(W=d.default.createElement(me,{duration:250},W)),A&&(W=d.default.createElement(t.Box,{sx:{mb:[8,8,9,10]}},d.default.createElement(t.Container,null,W)));var T=t.useThemeUI().theme,F=M?{"@media print":{display:"none"}}:{};e.useEffect(function(){if(T){var e=window.matchMedia("(min-width: "+T.breakpoints[1]+")");return e.onchange=function(e){e.matches&&null!=s&&s.value&&null!=s&&s.onClick&&(null==s||s.onClick())},function(){e.onchange=null}}},[null==T?void 0:T.breakpoints,null==s?void 0:s.value,null==s?void 0:s.onClick]);var I=[d.default.createElement(ae,{key:"dimmer",sx:{color:"primary",mt:"-2px",display:["block","block","top"===v?"block":"none","top"===v?"block":"none"]}})];return s&&I.push(d.default.createElement(be,m({key:"settings",sx:{mr:["2px"],display:["inherit","inherit","none","none"]}},s))),d.default.createElement(d.default.Fragment,null,k&&d.default.createElement(xe,{color:k}),S&&d.default.createElement(fe,null),d.default.createElement(Y,{card:l,description:a,title:n,url:o}),d.default.createElement(t.Flex,{sx:{flexDirection:"column",minHeight:"100vh"}},x&&d.default.createElement(t.Box,{as:"header",sx:m({width:"100%",borderStyle:"solid",borderColor:"muted",borderWidth:"0px",borderBottomWidth:"1px",position:"sticky",top:0,bg:"background",height:"56px",zIndex:2e3},F)},d.default.createElement(t.Container,null,d.default.createElement(ee,{mode:b,status:i,nav:c,menuItems:I}))),d.default.createElement(t.Box,{sx:{width:"100%",flex:"1 1 auto"}},W),p&&d.default.createElement(t.Box,{as:"footer",sx:m({width:"100%",borderStyle:"solid",borderColor:"muted",borderWidth:"0px",borderTopWidth:"1px"},F)},d.default.createElement(t.Container,null,d.default.createElement(re,null))),"bottom"===v&&d.default.createElement(t.Box,{sx:{display:["none","none","initial","initial"],position:["fixed"],right:[13],bottom:[17,17,15,15]}},d.default.createElement(ae,null)),g&&d.default.createElement(ce,{mode:g})))},ve=function(e){var t=e.as;return d.default.createElement(O,{as:void 0===t?"figcaption":t,number:e.number,label:"figure"},e.children)};ve.displayName="FigureCaption";var we=["label","value","sx","children"],ke=function(e){var r=e.label,n=e.value,a=e.sx,o=e.children,l=f(e,we),i=a&&a.color?a.color:"primary",c=l&&(l.onClick||l.onDoubleClick);return d.default.createElement(t.Box,m({as:c?"button":"span",role:"checkbox","aria-checked":n,"aria-label":r,sx:m({display:"inline-block",fontSize:[1,1,1,2],fontFamily:"mono",letterSpacing:"mono",cursor:c?"pointer":"inherit",color:i,backgroundColor:"transparent",borderStyle:"solid",borderColor:i,lineHeight:"body",borderWidth:"0px",borderBottomWidth:"1px",textTransform:"uppercase",userSelect:"none",transition:"opacity 0.05s",pt:["1px"],pb:["2px"],px:[0],m:[0],opacity:null==n||n?1:"primary"==i?.24:.33},a)},l),o)},Ce=["values","setValues","label","colors","order","labels","showAll","multiSelect"],Se={label:{fontFamily:"mono",letterSpacing:"mono",fontSize:[1,1,1,2],color:"secondary",userSelect:"none",textTransform:"uppercase"}},Be=function(e,t,r){return void 0===r&&(r={}),Object.keys(e).reduce(function(e,n){var a;return Object.assign(e,((a={})[n]=r[n]||t,a))},{})},ze=function(e){return Object.keys(e).filter(function(t){return e[t]}).length==Object.keys(e).length},Ae=function(e){var t,r=e.values,n=e.multiSelect,a=e.setValues,o=e.value,l=ze(r),i="all"===o;if(n)if(i&&!l)t=Be(r,!0);else if(i&&l)t=Be(r,!1);else{var c;t=m({},r,((c={})[o]=!r[o],c))}else if(i&&!l)t=Be(r,!0);else if(i&&l);else{var d;t=Be(r,!1,((d={})[o]=!0,d))}t&&a(t)},Le=function(e){var r,n=e.children,a=e.variant,o=void 0===a?"h1":a;return"h1"===o&&(r=[4,"27px","42px","54px"]),"h2"===o&&(r=[4,4,"14px","25px"]),d.default.createElement(d.default.Fragment,null,d.default.createElement(y,{start:[1,4,8,8],width:[1,1,1,1]},d.default.createElement(t.Box,{sx:{mt:r,fontFamily:"faux",letterSpacing:"faux",fontSize:[2,2,2,3],textAlign:"right"}},"/")),d.default.createElement(y,{start:[2,5,9,9],width:[3,3,2,2]},d.default.createElement(t.Box,{sx:{mt:r,fontFamily:"faux",letterSpacing:"faux",fontSize:[2,2,2,3],height:["100%","0px","0px","0px"]}},n)))},Me=["size","inverted","sx"],We=e.forwardRef(function(e,r){var n,a=e.size,o=void 0===a?"sm":a,l=e.inverted,i=e.sx,c=f(e,Me),s=m(((n={color:l?"secondary":"primary",borderColor:"secondary",borderStyle:"solid",borderWidth:"0px",borderBottomWidth:"1px",borderRadius:"0px",transition:"border 0.15s"}).borderBottomWidth="1px",n.width="calc(min(15ch, 100%))",n.p=[0],n.py=["2px"],n["input::-webkit-outer-spin-button"]={WebkitAppearance:"none",margin:0},n["input::-webkit-inner-spin-button"]={WebkitAppearance:"none",margin:0},n[":focus"]={borderColor:"primary"},n[":focus-visible"]={outline:"none !important",background:"none !important"},n),M(o),i);return d.default.createElement(t.Input,m({},c,{ref:r,sx:s}))}),Te=["children","size","sx","sxSelect"],Fe=["sx"],Ie=e.forwardRef(function(e,r){var n=e.sx,a=f(e,Fe),o=n&&n.color?n.color:"primary",l=t.useThemeUI().theme.rawColors;return d.default.createElement(t.Slider,m({ref:r,sx:m({"&::-webkit-slider-thumb":{height:[22,18,16],width:[22,18,16],boxShadow:"0 0 0 0px "+l.secondary,transition:"box-shadow .15s ease"},"&::-moz-range-thumb":{height:[22,18,16],width:[22,18,16],boxShadow:"0 0 0 0px "+l.secondary,transition:"box-shadow .15s ease"},":focus-visible":{outline:"none !important",background:l.secondary+" !important"},":focus":{color:o,"&::-webkit-slider-thumb":{boxShadow:"0 0 0 4px "+l.secondary},"&::-moz-range-thumb":{boxShadow:"0 0 0 4px "+l.secondary}},color:o},n)},a))}),Re={reset:{verticalAlign:"baseline",border:0,outline:0,margin:0,padding:0},row:{borderStyle:"solid",borderWidth:"0px",borderTopWidth:"1px",borderColor:"muted",pt:[3,3,3,"20px"],pb:[3,3,3,"20px"],mb:["2px"]},header:{display:"block",textTransform:"uppercase",letterSpacing:"smallcaps",fontFamily:"heading",fontSize:[2,2,2,3]},index:{display:"block",textTransform:"uppercase",letterSpacing:"smallcaps",fontFamily:"heading",fontSize:[2,2,2,3]},entry:{display:"block",fontSize:[2,2,2,3],fontFamily:"faux",letterSpacing:"faux",mb:["1px"],mt:[2,0,0,0]}},Oe=function(e){var t=e.as;return d.default.createElement(O,{as:void 0===t?"figcaption":t,number:e.number,label:"table"},e.children)};Oe.displayName="TableCaption";var De=["value","onClick","disabled","sx"],Ne=e.forwardRef(function(e,n){var a=e.value,o=e.onClick,l=e.disabled,i=e.sx,c=f(e,De),s=i&&i.color?i.color:"primary";return d.default.createElement(t.Box,m({ref:n,as:"button",onClick:o,role:"checkbox","aria-checked":a=!l&&a,"aria-label":"Toggle",sx:m({border:"none",background:"none",cursor:l?"default":"pointer",p:[0],m:[0],display:"inline-block"},i)},c),d.default.createElement(t.Box,{sx:{width:"50px",height:"20px",borderRadius:"20px",backgroundColor:a?r.transparentize(s,"primary"==s?.5:.45):"muted",position:"relative",transition:"0.15s",display:"inline-block"}},d.default.createElement(t.Box,{sx:{width:"14px",height:"14px",borderRadius:"7px",position:"absolute",left:a?"32px":"4px",top:"3px",backgroundColor:a?s:"secondary",transition:"0.15s"}})))}),He={month:"short",day:"numeric",year:"numeric"},je=function(e,t,r){var n;if(!r)return null;var a="string"==typeof r?r:He[t],o=e.toLocaleString("default",((n={})[t]=a,n));return"numeric"===a&&["day","month"].includes(t)?o.padStart(2,"0"):o};exports.Avatar=h,exports.AvatarGroup=function(e){var t,r=e.members,n=e.direction,a=void 0===n?"horizontal":n,o=e.align,l=e.spacing,i=void 0===l?"md":l,c=e.limit,s=e.width,u=e.maxWidth,p=e.fixedCount,x=e.sx,g=f(e,k);t=C.hasOwnProperty(i)?C[i]:i;var b=function(e){return"auto"};o&&(Array.isArray(o)||(o=[o]),b=function(e){return o.map(function(t){if("left"===t)return"auto";if("right"===t)return(Math.max(0,p-r.length)+e)%p+1;throw Error("alignment '"+t+"' not recognized")})});var v=r.length>c,B=r.length-c+1;return d.default.createElement(d.default.Fragment,null,p&&d.default.createElement(E,m({columns:p,gap:t,sx:x},g),r.map(function(e,t){return d.default.createElement(y,{key:t,start:b(t)},(!v||t<c-1)&&d.default.createElement(h,m({},e,{width:s,maxWidth:u})),v&&t===c-1&&d.default.createElement(S,{overflow:B,maxWidth:u}))})),!p&&d.default.createElement(w,m({direction:a,spacing:i,sx:x},g),r.map(function(e,t){return d.default.createElement(h,m({key:t},e,{width:s,maxWidth:u}))})))},exports.Badge=function(e){var n=e.sx,a=e.children,o=f(e,B),l=n&&n.color?n.color:"primary";return d.default.createElement(t.Box,m({sx:m({display:"inline-block",width:"fit-content",height:["24px","24px","24px","26px"],borderRadius:"5px",backgroundColor:"primary"==l||"secondary"==l?"muted":r.transparentize(l,.7),textAlign:"center",userSelect:"none",fontSize:[2,2,2,3]},n)},o),d.default.createElement(t.Box,{sx:{letterSpacing:"0.02em",fontFamily:"mono",mt:["1px","1px","1px","0px"],px:[1,1,1,"5px"],color:l}},a))},exports.Blockquote=function(r){var n=r.children;return d.default.createElement(t.Box,{variant:"styles.blockquote"},e.Children.map(n,function(e,r){var a="",o=n;return e.props&&"string"==typeof e.props.children?(a=e.props.children.slice(0,1),o=e.props.children.slice(1)):"string"==typeof e&&(a=e.slice(0,1),o=e.slice(1)),d.default.createElement(d.default.Fragment,null,z.includes(a)&&d.default.createElement(t.Box,{as:"span",sx:{position:"absolute",ml:"-0.4em"}},a),z.includes(a)?o:e)}))},exports.Button=F,exports.Callout=R,exports.Caption=O,exports.Colorbar=function(r){var n=r.colormap,a=r.label,o=r.clim,l=r.setClim,i=r.setClimStep,c=void 0===i?1:i,s=r.discrete,u=r.units,p=r.width,x=r.height,h=r.format,g=void 0===h?function(e){return e}:h,E=r.horizontal,b=void 0!==E&&E,y=r.bottom,v=void 0!==y&&y,w=r.sx,k=r.sxClim,C=f(r,D);if(!Array.isArray(n))throw new Error("expected array for colormap, got '"+n+"'.");var S,B,z,A=[e.useRef(),e.useRef()],L=e.useState(!1),M=L[0],W=L[1],T=e.useState(!1),F=T[0],I=T[1],R=0,O=null,V=[0,0],P=c,_=function(e){"min"!==O||M||W(!0),"max"!==O||F||I(!0),z=e.pageX-S,R=e.pageY-B,b?("min"===O&&l(function(e){return[Math.min(V[0]+z*P,V[1]),e[1]]}),"max"===O&&l(function(e){return[e[0],Math.max(V[1]+z*P,V[0])]})):("min"===O&&l(function(e){return[Math.min(V[0]-R*P,V[1]),e[1]]}),"max"===O&&l(function(e){return[e[0],Math.max(V[1]-R*P,V[0])]}))},Y=function(e){B=e.pageY,S=e.pageX,O=e.target.id,V=o,document.body.setAttribute("style",b?"cursor: ew-resize !important":"cursor: ns-resize !important"),document.addEventListener("mousemove",_),window.addEventListener("mouseup",function e(){document.body.setAttribute("style","cursor: unset"),document.removeEventListener("mousemove",_),window.removeEventListener("mouseup",e),"min"===O&&W(!1),"max"===O&&I(!1)})};e.useEffect(function(){var e=function(e){(["ArrowUp","ArrowRight"].includes(e.code)||["ArrowUp","ArrowRight"].includes(e.key))&&function(e){A[0].current===document.activeElement&&(e.preventDefault(),l(function(e){return[Math.min(e[0]+P,e[1]),e[1]]}),A[0].current.focus()),A[1].current===document.activeElement&&(e.preventDefault(),l(function(e){return[e[0],Math.max(e[1]+P,e[0])]}),A[1].current.focus())}(e),(["ArrowDown","ArrowLeft"].includes(e.code)||["ArrowDown","ArrowLeft"].includes(e.key))&&function(e){A[0].current===document.activeElement&&(e.preventDefault(),l(function(e){return[Math.min(e[0]-P,e[1]),e[1]]}),A[0].current.focus()),A[1].current===document.activeElement&&(e.preventDefault(),l(function(e){return[e[0],Math.max(e[1]-P,e[0])]}),A[1].current.focus())}(e)};return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}},[o]);var U=function(){return d.default.createElement(t.Box,{id:"min",as:l?"button":"div",ref:A[0],tabIndex:0,sx:m({},N(l),{ml:a?b?v?"0px":"10px":["2px","1px","1px","2px"]:0,mr:b?["2px","1px","1px","2px"]:0,mb:b?0:["-2px","-2px","-2px","-3px"],borderBottom:l?function(e){return"solid 1px "+e.colors.primary}:"unset",cursor:l?b?"ew-resize":"ns-resize":"default"},k),onMouseDown:l?Y:function(){},onClick:function(){return A[0].current.focus()}},g(o[0]))},q=function(){return d.default.createElement(t.Box,{id:"max",as:l?"button":"div",ref:A[1],tabIndex:0,sx:m({},N(l),{ml:["2px","1px","1px","2px"],mt:b?0:["-2px","-3px","-3px","-3px"],borderBottom:l?function(e){return"solid 1px "+e.colors.primary}:"unset",cursor:l?b?"ew-resize":"ns-resize":"default"},k),onMouseDown:l?Y:function(){},onClick:function(){return A[1].current.focus()}},g(o[1]))};return d.default.createElement(t.Flex,m({},C,{sx:m({flexDirection:"row",alignItems:"start",justifyContent:"flex-start",gap:["3px","6px","6px","7px"],height:b?"unset":"100%"},w)}),a&&d.default.createElement(G,{label:a,units:u,horizontal:b}),d.default.createElement(t.Flex,{sx:{flexGrow:b?1:"unset",flexDirection:"column",ml:v&&a?"4px":"0px",height:b?"unset":"100%"}},d.default.createElement(t.Flex,{sx:{gap:["3px","6px","6px","7px"],height:b?"unset":"100%"}},b&&o&&!v&&d.default.createElement(U,null),d.default.createElement(j,{colormap:n,horizontal:b,discrete:s,width:p,height:x}),b&&o&&!v&&d.default.createElement(q,null)),b&&o&&v&&d.default.createElement(t.Flex,{sx:{justifyContent:"space-between"}},d.default.createElement(U,null),d.default.createElement(q,null))),!b&&d.default.createElement(t.Flex,{sx:{flexDirection:"column-reverse",justifyContent:"space-between",height:x||H.height}},o&&d.default.createElement(U,null),o&&d.default.createElement(q,null)))},exports.Colors=_,exports.Column=y,exports.Custom404=function(){return d.default.createElement(ye,{footer:!1,title:"404 – CarbonPlan",description:"Sorry but we can't seem to find the page you are looking for."},d.default.createElement(E,{sx:{mb:[5,0,0],pt:[0,0,6]}},d.default.createElement(y,{start:[1,1,3,3],width:[6,4,4,4]},d.default.createElement(t.Box,{as:"h1",variant:"styles.h1"},"Oops!"),d.default.createElement(t.Box,{sx:{fontSize:[4,4,4,5],lineHeight:"h3",mt:[3,4,4],mb:[2,3,3],maxWidth:["90%","90%","400px"]}},"Sorry but we can't seem to find the page you are looking for."),d.default.createElement(t.Box,{sx:{color:"secondary",fontFamily:"mono",letterSpacing:"mono",fontSize:[2,2,2,3],mt:[4,5,5]}},"ERROR CODE 404")),d.default.createElement(y,{start:[2,5,7,7],width:[4,4,4,4]},d.default.createElement(t.Box,{sx:{width:["100%"],mt:[2,4,4,5],fill:"primary"}},d.default.createElement(o.PoopSad,{sx:{width:"100%",height:"auto"}})))))},exports.Dimmer=ae,exports.Expander=function(e){var r=e.value;return d.default.createElement(t.IconButton,{onClick:e.onClick,id:e.id,role:"checkbox","aria-checked":r,"aria-label":"Expand",sx:m({display:"inline-block",width:24,height:24,p:[1],cursor:"pointer",fill:"secondary",stroke:"secondary","@media (hover: hover) and (pointer: fine)":{"&:hover":{fill:"primary",stroke:"primary"}}},e.sx)},d.default.createElement("svg",{viewBox:"0 0 16 16"},d.default.createElement("path",{d:"M8,0 V16 M0,8 H16",style:{strokeWidth:2,transition:"0.25s all",transformOrigin:"8px 8px",transform:r?"rotate(45deg)":"rotate(0deg)"}})))},exports.FadeIn=me,exports.Figure=function(e){var r,n,a=e.as,o=void 0===a?"figure":a,l=e.children,i=e.sx,c=d.default.Children.toArray(l).find(function(e){var t;return d.default.isValidElement(e)&&(null==(t=e.type)?void 0:t.displayName)&&("FigureCaption"===e.type.displayName||"TableCaption"===e.type.displayName)}),s=null==c||null==(r=c.props)?void 0:r.number,u="TableCaption"===(null==c||null==(n=c.type)?void 0:n.displayName)?"table":"figure";return d.default.createElement(t.Box,{as:o,id:s?u+"-"+s:void 0,sx:m({my:[6,6,6,7],scrollMarginTop:"60px","@media print":{breakInside:"avoid"}},i)},d.default.createElement(w,{spacing:[4,4,4,5]},l))},exports.FigureCaption=ve,exports.Filter=function(r){var n=r.values,a=r.setValues,o=r.label,l=r.colors,i=r.order,c=r.labels,s=r.showAll,u=void 0!==s&&s,m=r.multiSelect,p=void 0!==m&&m,x=f(r,Ce),h=e.useMemo(function(){return i||Object.keys(n)},[i].concat(Object.keys(n).sort()));return d.default.createElement(t.Box,x,o&&d.default.createElement(t.Box,{sx:Se.label},o),d.default.createElement(t.Box,{sx:{mt:o?[3]:0}},u&&d.default.createElement(ke,{onClick:function(){return Ae({values:n,multiSelect:p,setValues:a,value:"all"})},value:ze(n),sx:{mr:[2]}},"All"),h.map(function(e,t){return d.default.createElement(ke,{onClick:function(){return Ae({values:n,multiSelect:p,setValues:a,value:e})},onDoubleClick:function(){return Ae({values:n,multiSelect:!1,setValues:a,value:e})},key:t,value:n[e],sx:{width:"max-content",color:l?l[e]:"primary",mr:[2],mb:[1]}},c?c[e]:e)})))},exports.Footer=re,exports.Group=w,exports.Guide=xe,exports.Header=ee,exports.Heading=function(e){var r=e.children,n=e.sidenote,a=e.variant,o=void 0===a?"h1":a,l=e.description,i=e.descriptionStart,c=void 0===i?[1,3,5,5]:i,s=e.descriptionWidth,u=void 0===s?[5,5,5,4]:s,p=e.sx,f=[6,6,6,6];if(l&&(f[1]=c[1]-1,f[2]=c[2]-2,f[3]=c[3]-2),!["h1","h2"].includes(o))throw new Error("variant must be 'h1' or 'h2' but got '"+o+"'");return d.default.createElement(E,{sx:m({mt:[5,6,7,8],mb:[5,6,7,8]},p)},d.default.createElement(y,{start:[1,1,2,2],width:f},"h1"===o&&d.default.createElement(t.Box,{as:"h1",variant:"styles.h1",sx:{my:[0,0,0,0]}},r),"h2"===o&&d.default.createElement(t.Box,{as:"h2",variant:"styles.h2",sx:{my:[0,0,0,0]}},r)),n&&d.default.createElement(Le,{variant:o},n),l&&d.default.createElement(y,{start:c,width:u},d.default.createElement(t.Box,{sx:{mt:[4,"5px","20px","31px"],fontSize:[2,2,2,3]}},l)))},exports.Input=We,exports.Layout=ye,exports.Link=L,exports.LinkGroup=function(e){var r=e.members,n=e.color,o=e.inverted,l=e.size,i=void 0===l?"xs":l,c=e.rowGap,s=e.columnGap,u=e.direction;return d.default.createElement(t.Flex,{sx:m({flexDirection:"horizontal"===(void 0===u?"horizontal":u)?"row":"column",rowGap:void 0===c?[2,2,2,3]:c,columnGap:void 0===s?[3,3,3,4]:s,flexWrap:"wrap"},e.sx)},r.map(function(e,t){return d.default.createElement(F,{key:t,href:e.href,label:e.label,size:i,sx:{color:n},inverted:o,suffix:d.default.createElement(a.RotatingArrow,null)},e.label)}))},exports.Logo=U,exports.Menu=X,exports.Meta=Y,exports.Monogram=te,exports.Row=E,exports.Scrollbar=fe,exports.Select=function(r){var n,o,l,i,c,s,u,p=r.children,x=r.size,h=void 0===x?"sm":x,g=r.sx,E=r.sxSelect,b=f(r,Te),y=g&&g.color?g.color:"primary",v=M(h),w=e.useRef(null),k=b.onChange,C=(o=function(e){return"onChange"!==e},function(e){var t={};for(var r in e)o(r||"")&&(t[r]=e[r]);return t})(b);if(!["xs","sm","md"].includes(h))throw new Error("Size must be xs, sm, or md");return"xs"===h&&(i=[14,14,14,16],c=[14,14,14,14],u=["1px"],s=["-14px","-14px","-14px","-16px"]),"sm"===h&&(i=[15,15,15,20],c=[15,15,15,20],u=["1px"],s=["-16px","-16px","-16px","-20px"]),"md"===h&&(i=[20,20,20,20],c=[20,20,20,20],u=["2px"],s=["-20px","-20px","-20px","-20px"]),l=c.map(function(e){return e+12}),d.default.createElement(t.Box,{sx:m({display:"inline-block"},g)},d.default.createElement(t.Box,m({as:"select",ref:w,onChange:function(e){w.current.blur(),k&&k(e)},sx:m({},v,(n={lineHeight:"normal",cursor:"pointer",WebkitAppearance:"none",MozAppearance:"none",pb:["5px"],bg:"background",pr:l,border:"none",borderBottomStyle:"solid",borderBottomWidth:"1px",borderBottomColor:"primary",borderRadius:"0px",color:"text",width:"fit-content"},n.color=y,n.userSelect="none",n["@media (hover: none) and (pointer: coarse)"]={"&:focus-visible":{outline:"none !important",background:"transparent !important"}},n),E)},C),p),d.default.createElement(a.Arrow,{sx:{width:c,height:i,position:"relative",ml:s,top:u,fill:"secondary",transform:"rotate(135deg)",pointerEvents:"none"}}))},exports.Settings=be,exports.Slider=Ie,exports.Table=function(e){var r=e.data,n=e.sx,a=e.color,o=e.header,l=e.columns,i=e.start,c=e.width,s=e.index,u=void 0===s||s,p=e.borderBottom,f=void 0===p||p,x=e.borderTop,h=void 0===x||x;if(!i||!l||!c)throw new Error("Must provide columns, start, and width");return d.default.createElement(t.Box,{as:"table",sx:m({display:"block"},n)},d.default.createElement(t.Box,{as:"tbody",sx:{display:"block"}},o&&d.default.createElement(E,{as:"tr",sx:m({},Re.reset,Re.header,Re.row,{color:a,borderTopWidth:h?"1px":"0px"})},d.default.createElement(y,{as:"td",start:[1],width:l,sx:Re.index},o)),r.map(function(e,t){return d.default.createElement(E,{as:"tr",columns:l,key:t,sx:m({},Re.reset,Re.row,{pb:f&&t===r.length-1?["18px","18px","18px","22px"]:[3,3,3,"20px"],borderBottomWidth:f&&t===r.length-1?"1px":"0px",borderTopWidth:h||0!==t||o?"1px":"0px"})},e.map(function(e,t){return d.default.createElement(y,{as:"td",key:t,start:i[t],width:c[t],sx:m({},Re.reset,0==t&&u?Re.index:Re.entry)},e)}))})))},exports.TableCaption=Oe,exports.Tag=ke,exports.Toggle=Ne,exports.Tray=function(e){var r=e.expanded,n=e.sx,a=e.children;return d.default.createElement(d.default.Fragment,null,d.default.createElement(t.Box,{sx:{position:"fixed",top:"56px",bottom:"0px",left:"0px",width:"calc(100vw)",mt:["56px"],bg:"background",zIndex:1e3,transition:"opacity 0.15s",opacity:r?.9:0,pointerEvents:r?"all":"none"}}),d.default.createElement(t.Box,{sx:m({position:"fixed",width:"calc(100vw)",top:"0px",mt:["56px"],pb:[6,7,7,8],pt:[5,6,7,8],bg:"background",zIndex:1100,borderStyle:"solid",borderColor:"muted",borderWidth:"0px",borderBottomWidth:"1px",transition:"transform 0.15s",ml:[-3,-4,-5,-6],pl:[3,4,5,6],pr:[3,4,5,6],transform:r?"translateY(0)":"translateY(-100%)"},n)},d.default.createElement(E,null,d.default.createElement(y,{start:[1,1,1,1],width:[6,8,10,10]},a))))},exports.formatDate=function(e,t){var r;void 0===t&&(t=He);var n=new Date(e.replace(/-/g,"/"));return[je(n,"month",t.month),je(n,"day",t.day),je(n,"year",t.year)].filter(Boolean).join(null!=(r=t.separator)?r:" ")},exports.getScrollbarWidth=pe,exports.useScrollbarClass=function(){var t=e.useState(null),r=t[0],n=t[1];return e.useEffect(function(){document&&pe(document)>0&&n("custom-scrollbar")},[]),r};
2
- //# sourceMappingURL=index.js.map
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __defProps = Object.defineProperties;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
7
+ var __getOwnPropNames = Object.getOwnPropertyNames;
8
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
9
+ var __getProtoOf = Object.getPrototypeOf;
10
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
11
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
12
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
13
+ var __spreadValues = (a, b) => {
14
+ for (var prop in b || (b = {}))
15
+ if (__hasOwnProp.call(b, prop))
16
+ __defNormalProp(a, prop, b[prop]);
17
+ if (__getOwnPropSymbols)
18
+ for (var prop of __getOwnPropSymbols(b)) {
19
+ if (__propIsEnum.call(b, prop))
20
+ __defNormalProp(a, prop, b[prop]);
21
+ }
22
+ return a;
23
+ };
24
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
25
+ var __objRest = (source, exclude) => {
26
+ var target = {};
27
+ for (var prop in source)
28
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
29
+ target[prop] = source[prop];
30
+ if (source != null && __getOwnPropSymbols)
31
+ for (var prop of __getOwnPropSymbols(source)) {
32
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
33
+ target[prop] = source[prop];
34
+ }
35
+ return target;
36
+ };
37
+ var __export = (target, all) => {
38
+ for (var name in all)
39
+ __defProp(target, name, { get: all[name], enumerable: true });
40
+ };
41
+ var __copyProps = (to, from, except, desc) => {
42
+ if (from && typeof from === "object" || typeof from === "function") {
43
+ for (let key of __getOwnPropNames(from))
44
+ if (!__hasOwnProp.call(to, key) && key !== except)
45
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
46
+ }
47
+ return to;
48
+ };
49
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
50
+ // If the importer is in node compatibility mode or this is not an ESM
51
+ // file that has been converted to a CommonJS file using a Babel-
52
+ // compatible transform (i.e. "__esModule" has not been set), then set
53
+ // "default" to the CommonJS "module.exports" for node compatibility.
54
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
55
+ mod
56
+ ));
57
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
58
+
59
+ // src/index.ts
60
+ var index_exports = {};
61
+ __export(index_exports, {
62
+ Avatar: () => avatar_default,
63
+ AvatarGroup: () => avatar_group_default,
64
+ Badge: () => badge_default,
65
+ Blockquote: () => blockquote_default,
66
+ Button: () => button_default,
67
+ Callout: () => callout_default,
68
+ Caption: () => caption_default,
69
+ Colorbar: () => colorbar_default,
70
+ Colors: () => colors_exports,
71
+ Column: () => column_default,
72
+ Custom404: () => custom_404_default,
73
+ Dimmer: () => dimmer_default,
74
+ Expander: () => expander_default,
75
+ FadeIn: () => fade_in_default,
76
+ Figure: () => figure_default,
77
+ FigureCaption: () => figure_caption_default,
78
+ Filter: () => filter_default,
79
+ Footer: () => footer_default,
80
+ Group: () => group_default,
81
+ Guide: () => guide_default,
82
+ Header: () => header_default,
83
+ Heading: () => heading_default,
84
+ Input: () => input_default,
85
+ Layout: () => layout_default,
86
+ Link: () => link_default,
87
+ LinkGroup: () => link_group_default,
88
+ Logo: () => logo_default,
89
+ Menu: () => menu_default,
90
+ Meta: () => meta_default,
91
+ Metadata: () => metadata_default,
92
+ Monogram: () => monogram_default,
93
+ Row: () => row_default,
94
+ Scrollbar: () => scrollbar_default,
95
+ Select: () => select_default,
96
+ Settings: () => settings_default,
97
+ Sidenote: () => sidenote_default,
98
+ Slider: () => slider_default,
99
+ Table: () => table_default,
100
+ TableCaption: () => table_caption_default,
101
+ Tag: () => tag_default,
102
+ Toggle: () => toggle_default,
103
+ Tray: () => tray_default,
104
+ formatDate: () => format_date_default,
105
+ getScrollbarWidth: () => get_scrollbar_width_default,
106
+ useScrollbarClass: () => use_scrollbar_class_default
107
+ });
108
+ module.exports = __toCommonJS(index_exports);
109
+
110
+ // src/avatar.tsx
111
+ var import_react = __toESM(require("react"));
112
+ var import_theme_ui = require("theme-ui");
113
+ var Avatar = (_a) => {
114
+ var _b = _a, {
115
+ color = "transparent",
116
+ width = "90px",
117
+ maxWidth,
118
+ name,
119
+ github,
120
+ alt,
121
+ src,
122
+ sx: sx3
123
+ } = _b, props = __objRest(_b, [
124
+ "color",
125
+ "width",
126
+ "maxWidth",
127
+ "name",
128
+ "github",
129
+ "alt",
130
+ "src",
131
+ "sx"
132
+ ]);
133
+ if (!name && !src && !github) {
134
+ console.warn("must specify either name, github, or src");
135
+ }
136
+ let srcProp, altProp;
137
+ if (name) {
138
+ srcProp = `https://images.carbonplan.org/team/${name.toLowerCase().replaceAll(" ", "-")}.png`;
139
+ altProp = alt || name;
140
+ } else if (github) {
141
+ srcProp = `https://github.com/${github}.png`;
142
+ altProp = alt || github;
143
+ } else {
144
+ srcProp = src;
145
+ altProp = alt;
146
+ }
147
+ return /* @__PURE__ */ import_react.default.createElement(
148
+ import_theme_ui.Box,
149
+ __spreadValues({
150
+ sx: __spreadValues({
151
+ width,
152
+ maxWidth,
153
+ height: "auto",
154
+ borderRadius: "50%",
155
+ overflow: "hidden",
156
+ position: "relative",
157
+ display: "inline-block",
158
+ verticalAlign: "top"
159
+ }, sx3)
160
+ }, props),
161
+ /* @__PURE__ */ import_react.default.createElement(
162
+ import_theme_ui.Image,
163
+ {
164
+ alt: altProp,
165
+ src: srcProp,
166
+ sx: {
167
+ filter: color && color !== "transparent" ? "grayscale(100%) contrast(200%) brightness(100%)" : "none",
168
+ width: "100%",
169
+ display: "block"
170
+ }
171
+ }
172
+ ),
173
+ color && color !== "transparent" && /* @__PURE__ */ import_react.default.createElement(
174
+ import_theme_ui.Box,
175
+ {
176
+ sx: {
177
+ position: "absolute",
178
+ top: 0,
179
+ bg: color,
180
+ width: "100%",
181
+ height: "100%",
182
+ opacity: 0.75,
183
+ pointerEvents: "none"
184
+ }
185
+ }
186
+ )
187
+ );
188
+ };
189
+ var avatar_default = Avatar;
190
+
191
+ // src/avatar-group.tsx
192
+ var import_react5 = __toESM(require("react"));
193
+ var import_theme_ui5 = require("theme-ui");
194
+
195
+ // src/row.tsx
196
+ var import_react2 = __toESM(require("react"));
197
+ var import_theme_ui2 = require("theme-ui");
198
+ var Row = (_a) => {
199
+ var _b = _a, { children, sx: sx3, columns, gap } = _b, props = __objRest(_b, ["children", "sx", "columns", "gap"]);
200
+ const makeArray = (input) => {
201
+ if (!Array.isArray(input)) {
202
+ input = [input, input, input, input];
203
+ }
204
+ if (Array.isArray(input) && ![1, 2, 4].includes(input.length)) {
205
+ throw new Error("Array length must be 1, 2, or 4");
206
+ }
207
+ if (Array.isArray(input) && input.length === 1) {
208
+ input = input.map((d) => [d]).flat();
209
+ }
210
+ if (Array.isArray(input) && input.length === 2) {
211
+ input = input.map((d) => [d, d]).flat();
212
+ }
213
+ return input;
214
+ };
215
+ let columnGap, rowGap;
216
+ if (Number.isInteger(gap) || Array.isArray(gap)) {
217
+ gap = makeArray(gap);
218
+ columnGap = gap;
219
+ rowGap = gap;
220
+ } else {
221
+ columnGap = [4, 5, 5, 6];
222
+ rowGap = [0, 0, 0, 0];
223
+ }
224
+ if (Number.isInteger(columns) || Array.isArray(columns)) {
225
+ columns = makeArray(columns);
226
+ } else {
227
+ columns = [6, 8, 12, 12];
228
+ }
229
+ return /* @__PURE__ */ import_react2.default.createElement(
230
+ import_theme_ui2.Grid,
231
+ __spreadProps(__spreadValues({}, props), {
232
+ columns,
233
+ sx: __spreadValues({
234
+ columnGap,
235
+ rowGap
236
+ }, sx3)
237
+ }),
238
+ children
239
+ );
240
+ };
241
+ var row_default = Row;
242
+
243
+ // src/column.tsx
244
+ var import_react3 = __toESM(require("react"));
245
+ var import_theme_ui3 = require("theme-ui");
246
+ var Column = (_a) => {
247
+ var _b = _a, {
248
+ start,
249
+ width,
250
+ dl,
251
+ dr,
252
+ children,
253
+ sx: sx3
254
+ } = _b, props = __objRest(_b, [
255
+ "start",
256
+ "width",
257
+ "dl",
258
+ "dr",
259
+ "children",
260
+ "sx"
261
+ ]);
262
+ start = start || "auto";
263
+ width = width || "auto";
264
+ const makeArray = (input) => {
265
+ let arr = Array.isArray(input) ? input : [input];
266
+ if (![1, 2, 4].includes(arr.length)) {
267
+ throw new Error("Array length must be 1, 2, or 4");
268
+ }
269
+ if (arr.length === 1) {
270
+ arr = arr.map((d) => [d, d, d, d]).flat();
271
+ } else if (arr.length === 2) {
272
+ arr = arr.map((d) => [d, d]).flat();
273
+ }
274
+ return arr;
275
+ };
276
+ const startArray = makeArray(start);
277
+ const widthArray = makeArray(width);
278
+ const end = startArray.map((d, i) => {
279
+ if (d === "auto" || widthArray[i] === "auto") return "auto";
280
+ return d + widthArray[i];
281
+ });
282
+ let ml, mr;
283
+ if (dl) {
284
+ if (![0.5, 1].includes(dl)) {
285
+ throw new Error("dl must be 0.5 or 1");
286
+ }
287
+ if (dl === 0.5) {
288
+ ml = ["-12px", -3, -3, -4];
289
+ }
290
+ if (dl === 1) {
291
+ ml = [-4, -5, -5, -6];
292
+ }
293
+ }
294
+ if (dr) {
295
+ if (![0.5, 1].includes(dr)) {
296
+ throw new Error("dr must be 0.5 or 1");
297
+ }
298
+ if (dr === 0.5) {
299
+ mr = ["-12px", -3, -3, -4];
300
+ }
301
+ if (dr === 1) {
302
+ mr = [-4, -5, -5, -6];
303
+ }
304
+ }
305
+ return /* @__PURE__ */ import_react3.default.createElement(
306
+ import_theme_ui3.Box,
307
+ __spreadProps(__spreadValues({}, props), {
308
+ sx: __spreadValues({
309
+ gridColumnStart: startArray,
310
+ gridColumnEnd: end,
311
+ ml,
312
+ mr
313
+ }, sx3)
314
+ }),
315
+ children
316
+ );
317
+ };
318
+ var column_default = Column;
319
+
320
+ // src/group.tsx
321
+ var import_react4 = __toESM(require("react"));
322
+ var import_theme_ui4 = require("theme-ui");
323
+ var sizes = {
324
+ xs: [1],
325
+ sm: [3],
326
+ md: [5],
327
+ lg: [7],
328
+ xl: [9]
329
+ };
330
+ var Group = ({
331
+ children,
332
+ direction = "vertical",
333
+ spacing = "md",
334
+ sx: sx3
335
+ }) => {
336
+ let marginValue;
337
+ if (typeof spacing === "string" && spacing in sizes) {
338
+ marginValue = sizes[spacing];
339
+ } else {
340
+ marginValue = spacing;
341
+ }
342
+ if (!["horizontal", "vertical"].includes(direction)) {
343
+ throw new Error(
344
+ "Invalid direction value. Must be either horizontal or vertical"
345
+ );
346
+ }
347
+ const marginProperty = direction === "vertical" ? "mb" : "mr";
348
+ const additionalStyles = direction === "horizontal" ? { display: "inline-block" } : {};
349
+ return /* @__PURE__ */ import_react4.default.createElement(import_theme_ui4.Box, { sx: sx3 }, import_react4.default.Children.map(children, (child, i) => {
350
+ const childrenCount = import_react4.default.Children.count(children);
351
+ return /* @__PURE__ */ import_react4.default.createElement(
352
+ import_theme_ui4.Box,
353
+ {
354
+ sx: __spreadValues({
355
+ [marginProperty]: i < childrenCount - 1 ? marginValue : 0
356
+ }, additionalStyles)
357
+ },
358
+ child
359
+ );
360
+ }));
361
+ };
362
+ var group_default = Group;
363
+
364
+ // src/avatar-group.tsx
365
+ var sizes2 = {
366
+ xs: [1],
367
+ sm: [3],
368
+ md: [5],
369
+ lg: [7],
370
+ xl: [9]
371
+ };
372
+ var Blank = ({ overflow, maxWidth }) => {
373
+ return /* @__PURE__ */ import_react5.default.createElement(
374
+ import_theme_ui5.Box,
375
+ {
376
+ sx: {
377
+ bg: "muted",
378
+ height: "100%",
379
+ maxWidth,
380
+ borderRadius: "50%"
381
+ }
382
+ },
383
+ /* @__PURE__ */ import_react5.default.createElement(
384
+ import_theme_ui5.Box,
385
+ {
386
+ sx: {
387
+ display: "flex",
388
+ justifyContent: "center",
389
+ alignItems: "center",
390
+ height: "100%"
391
+ }
392
+ },
393
+ /* @__PURE__ */ import_react5.default.createElement(
394
+ import_theme_ui5.Box,
395
+ {
396
+ sx: {
397
+ fontFamily: "mono",
398
+ letterSpacing: "mono",
399
+ fontSize: [3, 3, 3, 4]
400
+ }
401
+ },
402
+ "+",
403
+ overflow
404
+ )
405
+ )
406
+ );
407
+ };
408
+ var AvatarGroup = (_a) => {
409
+ var _b = _a, {
410
+ members,
411
+ direction = "horizontal",
412
+ align,
413
+ spacing = "md",
414
+ limit,
415
+ width,
416
+ maxWidth,
417
+ fixedCount,
418
+ sx: sx3
419
+ } = _b, props = __objRest(_b, [
420
+ "members",
421
+ "direction",
422
+ "align",
423
+ "spacing",
424
+ "limit",
425
+ "width",
426
+ "maxWidth",
427
+ "fixedCount",
428
+ "sx"
429
+ ]);
430
+ let gap;
431
+ if (typeof spacing === "string" && spacing in sizes2) {
432
+ gap = sizes2[spacing];
433
+ } else {
434
+ gap = spacing;
435
+ }
436
+ let start = (_idx) => "auto";
437
+ if (align) {
438
+ const alignArray = Array.isArray(align) ? align : [align];
439
+ start = (idx) => {
440
+ return alignArray.map((d) => {
441
+ if (d === "left") {
442
+ return "auto";
443
+ } else if (d === "right") {
444
+ const offset = Math.max(0, (fixedCount != null ? fixedCount : 0) - members.length);
445
+ return (offset + idx) % (fixedCount != null ? fixedCount : 1) + 1;
446
+ } else {
447
+ throw Error(`alignment '${d}' not recognized`);
448
+ }
449
+ });
450
+ };
451
+ }
452
+ const excess = limit !== void 0 && members.length > limit;
453
+ const overflow = limit !== void 0 ? members.length - limit + 1 : 0;
454
+ return /* @__PURE__ */ import_react5.default.createElement(import_react5.default.Fragment, null, fixedCount && /* @__PURE__ */ import_react5.default.createElement(row_default, __spreadValues({ columns: fixedCount, gap, sx: sx3 }, props), members.map((props2, idx) => /* @__PURE__ */ import_react5.default.createElement(column_default, { key: idx, start: start(idx) }, (!excess || limit !== void 0 && idx < limit - 1) && /* @__PURE__ */ import_react5.default.createElement(avatar_default, __spreadProps(__spreadValues({}, props2), { width, maxWidth })), excess && limit !== void 0 && idx === limit - 1 && /* @__PURE__ */ import_react5.default.createElement(Blank, { overflow, maxWidth })))), !fixedCount && /* @__PURE__ */ import_react5.default.createElement(group_default, __spreadValues({ direction, spacing, sx: sx3 }, props), members.map((props2, idx) => /* @__PURE__ */ import_react5.default.createElement(avatar_default, __spreadProps(__spreadValues({ key: idx }, props2), { width, maxWidth })))));
455
+ };
456
+ var avatar_group_default = AvatarGroup;
457
+
458
+ // src/badge.tsx
459
+ var import_react6 = __toESM(require("react"));
460
+ var import_theme_ui6 = require("theme-ui");
461
+ var import_color = require("@theme-ui/color");
462
+
463
+ // src/utils/get-sx-color.ts
464
+ var getSxColor = (sx3, fallback = "primary") => sx3 && typeof sx3 === "object" && "color" in sx3 && typeof sx3.color === "string" ? sx3.color : fallback;
465
+ var get_sx_color_default = getSxColor;
466
+
467
+ // src/badge.tsx
468
+ var Badge = (_a) => {
469
+ var _b = _a, { sx: sx3, children } = _b, props = __objRest(_b, ["sx", "children"]);
470
+ const color = get_sx_color_default(sx3);
471
+ return /* @__PURE__ */ import_react6.default.createElement(
472
+ import_theme_ui6.Box,
473
+ __spreadValues({
474
+ sx: __spreadValues({
475
+ display: "inline-block",
476
+ width: "fit-content",
477
+ height: ["24px", "24px", "24px", "26px"],
478
+ borderRadius: "5px",
479
+ backgroundColor: color === "primary" || color === "secondary" ? "muted" : (0, import_color.transparentize)(color, 0.7),
480
+ textAlign: "center",
481
+ userSelect: "none",
482
+ fontSize: [2, 2, 2, 3]
483
+ }, sx3)
484
+ }, props),
485
+ /* @__PURE__ */ import_react6.default.createElement(
486
+ import_theme_ui6.Box,
487
+ {
488
+ sx: {
489
+ letterSpacing: "0.02em",
490
+ fontFamily: "mono",
491
+ mt: ["1px", "1px", "1px", "0px"],
492
+ px: [1, 1, 1, "5px"],
493
+ color
494
+ }
495
+ },
496
+ children
497
+ )
498
+ );
499
+ };
500
+ var badge_default = Badge;
501
+
502
+ // src/blockquote.tsx
503
+ var import_react7 = __toESM(require("react"));
504
+ var import_theme_ui7 = require("theme-ui");
505
+ var specialChars = ["\u201C", '"', "'", "\u2018"];
506
+ var Blockquote = ({ children }) => {
507
+ return /* @__PURE__ */ import_react7.default.createElement(import_theme_ui7.Box, { variant: "styles.blockquote" }, import_react7.Children.map(children, (d) => {
508
+ let firstChar = "";
509
+ let remaining = d;
510
+ if (import_react7.default.isValidElement(d) && typeof d.props.children === "string") {
511
+ firstChar = d.props.children.slice(0, 1);
512
+ remaining = d.props.children.slice(1);
513
+ } else if (typeof d === "string") {
514
+ firstChar = d.slice(0, 1);
515
+ remaining = d.slice(1);
516
+ }
517
+ return /* @__PURE__ */ import_react7.default.createElement(import_react7.default.Fragment, null, specialChars.includes(firstChar) && /* @__PURE__ */ import_react7.default.createElement(import_theme_ui7.Box, { as: "span", sx: { position: "absolute", ml: "-0.4em" } }, firstChar), specialChars.includes(firstChar) ? remaining : d);
518
+ }));
519
+ };
520
+ var blockquote_default = Blockquote;
521
+
522
+ // src/button.tsx
523
+ var import_react9 = __toESM(require("react"));
524
+ var import_theme_ui9 = require("theme-ui");
525
+
526
+ // src/link.tsx
527
+ var import_react8 = __toESM(require("react"));
528
+ var import_theme_ui8 = require("theme-ui");
529
+ var import_link = __toESM(require("next/link"));
530
+ var Link = (_a, ref) => {
531
+ var _b = _a, { href, children, internal = false } = _b, props = __objRest(_b, ["href", "children", "internal"]);
532
+ if (href && (internal || href.startsWith("/"))) {
533
+ return /* @__PURE__ */ import_react8.default.createElement(import_link.default, { href, passHref: true, legacyBehavior: true }, /* @__PURE__ */ import_react8.default.createElement(import_theme_ui8.Link, __spreadValues({ ref }, props), children));
534
+ } else {
535
+ return /* @__PURE__ */ import_react8.default.createElement(import_theme_ui8.Link, __spreadValues({ ref, href }, props), children);
536
+ }
537
+ };
538
+ var link_default = (0, import_react8.forwardRef)(Link);
539
+
540
+ // src/utils/get-size-styles.ts
541
+ var getSizeStyles = (size) => {
542
+ if (!["xs", "sm", "md", "lg", "xl"].includes(size)) {
543
+ throw new Error("Size must be xs, sm, md, lg, or xl");
544
+ }
545
+ let fontSize, fontFamily, letterSpacing, lineHeight;
546
+ if (size === "xs") {
547
+ fontSize = [2, 2, 2, 3];
548
+ fontFamily = "body";
549
+ letterSpacing = "body";
550
+ lineHeight = [1.2];
551
+ }
552
+ if (size === "sm") {
553
+ fontSize = [3, 3, 3, 4];
554
+ fontFamily = "body";
555
+ letterSpacing = "body";
556
+ lineHeight = [1.2];
557
+ }
558
+ if (size === "md") {
559
+ fontSize = [4, 4, 4, 5];
560
+ fontFamily = "body";
561
+ letterSpacing = "body";
562
+ lineHeight = [1.2];
563
+ }
564
+ if (size === "lg") {
565
+ fontSize = [5, 5, 6, 7];
566
+ fontFamily = "heading";
567
+ letterSpacing = "heading";
568
+ lineHeight = [1.2, 1.2, 1.25, 1.25];
569
+ }
570
+ if (size === "xl") {
571
+ fontSize = [6, 7, 8, 9];
572
+ fontFamily = "heading";
573
+ letterSpacing = "heading";
574
+ lineHeight = [1.25];
575
+ }
576
+ return { fontSize, fontFamily, letterSpacing, lineHeight };
577
+ };
578
+ var get_size_styles_default = getSizeStyles;
579
+
580
+ // src/button.tsx
581
+ var hasHoverProp = (comp) => {
582
+ if (comp == null) return false;
583
+ const isObjectOrFunction = typeof comp === "object" || typeof comp === "function";
584
+ return isObjectOrFunction && "hover" in comp;
585
+ };
586
+ var Button = (_a, ref) => {
587
+ var _b = _a, {
588
+ size = "sm",
589
+ prefix,
590
+ suffix,
591
+ inverted,
592
+ sx: sx3,
593
+ children,
594
+ align,
595
+ href,
596
+ internal
597
+ } = _b, props = __objRest(_b, [
598
+ "size",
599
+ "prefix",
600
+ "suffix",
601
+ "inverted",
602
+ "sx",
603
+ "children",
604
+ "align",
605
+ "href",
606
+ "internal"
607
+ ]);
608
+ var _b2, _c;
609
+ if (!["xs", "sm", "md", "lg", "xl"].includes(size)) {
610
+ throw new Error("Size must be xs, sm, md, lg, or xl");
611
+ }
612
+ const _a2 = sx3 && typeof sx3 === "object" ? sx3 : {}, { color: sxColor } = _a2, sxProp = __objRest(_a2, ["color"]);
613
+ const baseColor = typeof sxColor === "string" && sxColor || (inverted ? "secondary" : "primary");
614
+ const hoverColor = sxColor ? "primary" : inverted ? "primary" : "secondary";
615
+ const sizeConfig = {
616
+ xs: {
617
+ margin: ["6px", "6px", "6px", "6px"],
618
+ height: [12, 12, 12, 13],
619
+ width: [12, 12, 12, 13],
620
+ strokeWidth: [1.5, 1.5, 1.5, 1.5],
621
+ offset: { transform: "translateY(0.25px)" }
622
+ },
623
+ sm: {
624
+ margin: ["7px", "7px", "7px", "7px"],
625
+ height: [13, 13, 13, 18],
626
+ width: [13, 13, 13, 18],
627
+ strokeWidth: [1.5, 1.5, 1.5, 2],
628
+ offset: { transform: "translateY(0.25px)" }
629
+ },
630
+ md: {
631
+ margin: ["8px", "8px", "8px", "8px"],
632
+ height: [18, 18, 18, 24],
633
+ width: [18, 18, 18, 24],
634
+ strokeWidth: [2, 2, 2, 3],
635
+ offset: {}
636
+ },
637
+ lg: {
638
+ margin: ["10px", "10px", "12px", "16px"],
639
+ height: [24, 24, 34, 46],
640
+ width: [24, 24, 34, 46],
641
+ strokeWidth: [3, 3, 4, 5],
642
+ offset: {}
643
+ },
644
+ xl: {
645
+ margin: ["12px", "16px", "18px", "20px"],
646
+ height: [34, 46, 56, 68],
647
+ width: [34, 46, 56, 68],
648
+ strokeWidth: [4, 5, 6, 7],
649
+ offset: {}
650
+ }
651
+ };
652
+ const { margin, height, width, strokeWidth, offset } = sizeConfig[size];
653
+ let prefixHover, suffixHover, prefixAlign, suffixAlign, prefixOffset, suffixOffset;
654
+ if (align) {
655
+ prefixAlign = align;
656
+ suffixAlign = align;
657
+ } else {
658
+ if (prefix && suffix) {
659
+ prefixAlign = "initial";
660
+ suffixAlign = "initial";
661
+ } else if (prefix) {
662
+ prefixAlign = "initial";
663
+ } else if (suffix) {
664
+ suffixAlign = "middle";
665
+ }
666
+ }
667
+ if (prefixAlign === "middle") {
668
+ prefixOffset = {};
669
+ } else {
670
+ prefixOffset = offset;
671
+ }
672
+ if (suffixAlign === "middle") {
673
+ suffixOffset = {};
674
+ } else {
675
+ suffixOffset = offset;
676
+ }
677
+ let clonedPrefix, clonedSuffix;
678
+ if (prefix) {
679
+ prefixHover = {
680
+ "&:hover > #prefix-span > #prefix": __spreadValues({
681
+ color: hoverColor
682
+ }, hasHoverProp(prefix.type) ? prefix.type.hover : {})
683
+ };
684
+ clonedPrefix = (0, import_react9.cloneElement)(prefix, {
685
+ id: "prefix",
686
+ sx: __spreadValues({
687
+ position: "relative",
688
+ height,
689
+ width,
690
+ mr: children ? margin : [0],
691
+ strokeWidth,
692
+ verticalAlign: prefixAlign,
693
+ transition: "color 0.15s, transform 0.15s"
694
+ }, (_b2 = prefix.props) == null ? void 0 : _b2.sx)
695
+ });
696
+ }
697
+ if (suffix) {
698
+ suffixHover = {
699
+ "&:hover > #suffix-span >#suffix": __spreadValues({
700
+ color: hoverColor
701
+ }, hasHoverProp(suffix.type) ? suffix.type.hover : {})
702
+ };
703
+ clonedSuffix = (0, import_react9.cloneElement)(suffix, {
704
+ id: "suffix",
705
+ sx: __spreadValues({
706
+ height,
707
+ width,
708
+ ml: children ? margin : [0],
709
+ strokeWidth,
710
+ verticalAlign: suffixAlign,
711
+ transition: "color 0.15s, transform 0.15s"
712
+ }, (_c = suffix.props) == null ? void 0 : _c.sx)
713
+ });
714
+ }
715
+ let sizeStyles = get_size_styles_default(size);
716
+ const style = __spreadValues(__spreadProps(__spreadValues({}, sizeStyles), {
717
+ lineHeight: 1.05,
718
+ border: "none",
719
+ background: "transparent",
720
+ display: "block",
721
+ color: baseColor,
722
+ padding: [0],
723
+ textAlign: "left",
724
+ cursor: "pointer",
725
+ width: "fit-content",
726
+ "@media (hover: hover) and (pointer: fine)": __spreadValues(__spreadValues({
727
+ "&:hover": {
728
+ color: hoverColor
729
+ }
730
+ }, suffixHover), prefixHover)
731
+ }), sxProp);
732
+ const Inner = /* @__PURE__ */ import_react9.default.createElement(import_react9.default.Fragment, null, /* @__PURE__ */ import_react9.default.createElement(
733
+ import_theme_ui9.Box,
734
+ {
735
+ as: "span",
736
+ id: "prefix-span",
737
+ sx: __spreadValues({ display: "inline-block" }, prefixOffset)
738
+ },
739
+ clonedPrefix
740
+ ), /* @__PURE__ */ import_react9.default.createElement(import_theme_ui9.Box, { as: "span", sx: { transition: "color 0.15s" } }, children), /* @__PURE__ */ import_react9.default.createElement(
741
+ import_theme_ui9.Box,
742
+ {
743
+ as: "span",
744
+ id: "suffix-span",
745
+ sx: __spreadValues({ display: "inline-block" }, suffixOffset)
746
+ },
747
+ clonedSuffix
748
+ ));
749
+ if (href) {
750
+ return /* @__PURE__ */ import_react9.default.createElement(
751
+ link_default,
752
+ __spreadProps(__spreadValues({
753
+ ref,
754
+ internal,
755
+ sx: __spreadProps(__spreadValues({}, style), {
756
+ textDecoration: "none"
757
+ })
758
+ }, props), {
759
+ href
760
+ }),
761
+ Inner
762
+ );
763
+ } else {
764
+ return /* @__PURE__ */ import_react9.default.createElement(
765
+ import_theme_ui9.Box,
766
+ __spreadValues({
767
+ ref,
768
+ as: "button",
769
+ sx: style
770
+ }, props),
771
+ Inner
772
+ );
773
+ }
774
+ };
775
+ var button_default = (0, import_react9.forwardRef)(
776
+ Button
777
+ );
778
+
779
+ // src/callout.tsx
780
+ var import_react10 = __toESM(require("react"));
781
+ var import_theme_ui10 = require("theme-ui");
782
+ var import_icons = require("@carbonplan/icons");
783
+ var Callout = (_a, ref) => {
784
+ var _b = _a, {
785
+ label,
786
+ children,
787
+ inverted,
788
+ color,
789
+ href,
790
+ internal,
791
+ sx: sx3
792
+ } = _b, props = __objRest(_b, [
793
+ "label",
794
+ "children",
795
+ "inverted",
796
+ "color",
797
+ "href",
798
+ "internal",
799
+ "sx"
800
+ ]);
801
+ const baseColor = color || (inverted ? "secondary" : "primary");
802
+ const hoverColor = color ? "primary" : inverted ? "primary" : "secondary";
803
+ const style = __spreadValues({
804
+ border: "none",
805
+ padding: [0],
806
+ fontSize: [3, 3, 3, 4],
807
+ color: baseColor,
808
+ background: "transparent",
809
+ textDecoration: "none",
810
+ fontFamily: "body",
811
+ lineHeight: "h3",
812
+ letterSpacing: "body",
813
+ width: "fit-content",
814
+ cursor: "pointer",
815
+ textAlign: "left",
816
+ mb: [1],
817
+ "@media (hover: hover) and (pointer: fine)": {
818
+ "&:hover > #container > #arrow": {
819
+ transform: "rotate(45deg)",
820
+ fill: hoverColor
821
+ },
822
+ "&:hover": {
823
+ color: hoverColor
824
+ }
825
+ }
826
+ }, sx3);
827
+ const Inner = /* @__PURE__ */ import_react10.default.createElement(import_react10.default.Fragment, null, /* @__PURE__ */ import_react10.default.createElement(import_theme_ui10.Box, { sx: { transition: "0.15s", letterSpacing: "body", pb: ["6px"] } }, children), /* @__PURE__ */ import_react10.default.createElement(
828
+ import_theme_ui10.Box,
829
+ {
830
+ sx: {
831
+ transition: "0.15s",
832
+ display: "inline-block",
833
+ textTransform: "uppercase",
834
+ letterSpacing: "smallcaps",
835
+ fontFamily: "heading",
836
+ fontSize: [2, 2, 2, 3]
837
+ }
838
+ },
839
+ label
840
+ ), /* @__PURE__ */ import_react10.default.createElement(
841
+ import_theme_ui10.Box,
842
+ {
843
+ as: "span",
844
+ id: "container",
845
+ sx: {
846
+ ml: [2],
847
+ display: "inline-block"
848
+ }
849
+ },
850
+ /* @__PURE__ */ import_react10.default.createElement(
851
+ import_icons.Arrow,
852
+ {
853
+ id: "arrow",
854
+ sx: {
855
+ transition: "fill 0.15s, transform 0.15s",
856
+ position: "relative",
857
+ top: ["2px"],
858
+ color: baseColor,
859
+ height: [15, 15, 15, 17],
860
+ width: [15, 15, 15, 17]
861
+ }
862
+ }
863
+ )
864
+ ));
865
+ if (href) {
866
+ return /* @__PURE__ */ import_react10.default.createElement(
867
+ link_default,
868
+ __spreadValues({
869
+ ref,
870
+ href,
871
+ internal,
872
+ sx: style
873
+ }, props),
874
+ Inner
875
+ );
876
+ } else {
877
+ return /* @__PURE__ */ import_react10.default.createElement(
878
+ import_theme_ui10.Box,
879
+ __spreadValues({
880
+ ref,
881
+ as: "button",
882
+ sx: style
883
+ }, props),
884
+ Inner
885
+ );
886
+ }
887
+ };
888
+ var callout_default = (0, import_react10.forwardRef)(
889
+ Callout
890
+ );
891
+
892
+ // src/caption.tsx
893
+ var import_react11 = __toESM(require("react"));
894
+ var import_theme_ui11 = require("theme-ui");
895
+ var Caption = ({
896
+ as = "figcaption",
897
+ number,
898
+ children,
899
+ label = "figure"
900
+ }) => {
901
+ return /* @__PURE__ */ import_react11.default.createElement(
902
+ import_theme_ui11.Box,
903
+ {
904
+ as,
905
+ sx: {
906
+ color: "secondary",
907
+ display: "block",
908
+ textAlign: "left",
909
+ fontSize: [2, 2, 2, 3],
910
+ "& a": { color: "secondary" },
911
+ "& a:hover": { color: "primary" },
912
+ "& > p": {
913
+ display: "inline",
914
+ fontSize: [2, 2, 2, 3]
915
+ }
916
+ }
917
+ },
918
+ number && /* @__PURE__ */ import_react11.default.createElement(import_react11.default.Fragment, null, /* @__PURE__ */ import_react11.default.createElement(
919
+ import_theme_ui11.Box,
920
+ {
921
+ sx: {
922
+ textTransform: "uppercase",
923
+ letterSpacing: "smallcaps",
924
+ display: "inline-block"
925
+ }
926
+ },
927
+ label,
928
+ " ",
929
+ number
930
+ ), " ", /* @__PURE__ */ import_react11.default.createElement(import_theme_ui11.Box, { sx: { display: "inline-block", mx: [1], pr: [1] } }, "/")),
931
+ children
932
+ );
933
+ };
934
+ var caption_default = Caption;
935
+
936
+ // src/colorbar.tsx
937
+ var import_react12 = __toESM(require("react"));
938
+ var import_theme_ui12 = require("theme-ui");
939
+ var styles = {
940
+ clim: (setClim) => {
941
+ return {
942
+ bg: "unset",
943
+ border: "none",
944
+ color: "primary",
945
+ px: 0,
946
+ fontFamily: "mono",
947
+ fontSize: ["9px", 0, 0, 1],
948
+ letterSpacing: "smallcaps",
949
+ textTransform: "uppercase",
950
+ transition: "border 0.15s",
951
+ // !important suffix isn't representable in CSS property types
952
+ userSelect: setClim ? "none !important" : "unset",
953
+ width: "fit-content",
954
+ minWidth: "fit-content"
955
+ };
956
+ }
957
+ };
958
+ var DIMENSIONS = {
959
+ width: ["10px", "16px", "16px", "17px"],
960
+ height: ["80px", "110px", "110px", "130px"]
961
+ };
962
+ var hexToRgb = (hex) => {
963
+ let result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
964
+ return result ? `${parseInt(result[1], 16)}, ${parseInt(result[2], 16)}, ${parseInt(
965
+ result[3],
966
+ 16
967
+ )}` : null;
968
+ };
969
+ var Gradient = ({
970
+ colormap,
971
+ discrete,
972
+ horizontal,
973
+ width,
974
+ height
975
+ }) => {
976
+ const hasColors = colormap.length > 0;
977
+ const step = hasColors ? 1 / colormap.length * 100 : 0;
978
+ const firstColor = colormap[0];
979
+ const isHex = typeof firstColor === "string" && firstColor.startsWith("#");
980
+ const values = colormap.map((color, i) => {
981
+ const normalizedColor = String(color);
982
+ const rgbColor = isHex ? hexToRgb(normalizedColor) : normalizedColor;
983
+ const position = `${i * step}% ${discrete && i < colormap.length - 1 ? `${(i + 1) * step}%` : ""}`;
984
+ return `rgb(${rgbColor}) ${position}`;
985
+ });
986
+ const css = values.length > 0 ? `linear-gradient(to ${horizontal ? "right" : "top"}, ${values.join(
987
+ ","
988
+ )})` : "none";
989
+ return /* @__PURE__ */ import_react12.default.createElement(
990
+ import_theme_ui12.Box,
991
+ {
992
+ sx: __spreadProps(__spreadValues({}, horizontal ? {
993
+ width: width || DIMENSIONS.height,
994
+ height: height || DIMENSIONS.width
995
+ } : {
996
+ width: width || DIMENSIONS.width,
997
+ minHeight: height || DIMENSIONS.height
998
+ }), {
999
+ mt: horizontal ? ["1px", "1px", "1px", 0] : 0,
1000
+ border: (t) => `solid 1px ${(0, import_theme_ui12.get)(t, "colors.hinted")}`,
1001
+ background: css
1002
+ })
1003
+ }
1004
+ );
1005
+ };
1006
+ var Label = ({
1007
+ label,
1008
+ units,
1009
+ horizontal
1010
+ }) => /* @__PURE__ */ import_react12.default.createElement(
1011
+ import_theme_ui12.Box,
1012
+ {
1013
+ sx: horizontal ? void 0 : {
1014
+ width: ["13px", "17px", "17px", "19px"],
1015
+ alignSelf: "flex-end"
1016
+ }
1017
+ },
1018
+ /* @__PURE__ */ import_react12.default.createElement(
1019
+ import_theme_ui12.Box,
1020
+ {
1021
+ sx: __spreadValues({
1022
+ mb: horizontal ? 0 : ["-4px", "-4px", "-4px", "-3px"],
1023
+ fontFamily: "mono",
1024
+ fontSize: ["9px", 0, 0, 1],
1025
+ letterSpacing: "smallcaps",
1026
+ textTransform: "uppercase"
1027
+ }, horizontal ? {} : {
1028
+ writingMode: "vertical-rl",
1029
+ transform: "rotate(180deg)",
1030
+ whiteSpace: "nowrap",
1031
+ display: "inline-block",
1032
+ overflow: "visible"
1033
+ })
1034
+ },
1035
+ label,
1036
+ " ",
1037
+ /* @__PURE__ */ import_react12.default.createElement(
1038
+ import_theme_ui12.Box,
1039
+ {
1040
+ as: "span",
1041
+ sx: {
1042
+ textTransform: "none",
1043
+ color: "secondary",
1044
+ display: "inline-block"
1045
+ }
1046
+ },
1047
+ units
1048
+ )
1049
+ )
1050
+ );
1051
+ var Colorbar = (_a) => {
1052
+ var _b = _a, {
1053
+ colormap,
1054
+ label,
1055
+ clim,
1056
+ setClim,
1057
+ setClimStep = 1,
1058
+ discrete,
1059
+ units,
1060
+ width,
1061
+ height,
1062
+ format: format2 = (d) => d,
1063
+ horizontal = false,
1064
+ bottom = false,
1065
+ sx: sx3,
1066
+ sxClim
1067
+ } = _b, props = __objRest(_b, [
1068
+ "colormap",
1069
+ "label",
1070
+ "clim",
1071
+ "setClim",
1072
+ "setClimStep",
1073
+ "discrete",
1074
+ "units",
1075
+ "width",
1076
+ "height",
1077
+ "format",
1078
+ "horizontal",
1079
+ "bottom",
1080
+ "sx",
1081
+ "sxClim"
1082
+ ]);
1083
+ if (!Array.isArray(colormap)) {
1084
+ throw new Error(`expected array for colormap, got '${colormap}'.`);
1085
+ }
1086
+ const climRef = [(0, import_react12.useRef)(), (0, import_react12.useRef)()];
1087
+ const [climMinDragging, setClimMinDragging] = (0, import_react12.useState)(false);
1088
+ const [climMaxDragging, setClimMaxDragging] = (0, import_react12.useState)(false);
1089
+ let x, y, dx, dy = 0;
1090
+ let id = null;
1091
+ let init2 = [0, 0];
1092
+ let scale = setClimStep;
1093
+ const draggingFunction = (e) => {
1094
+ if (!setClim) return;
1095
+ if (id === "min" && !climMinDragging) setClimMinDragging(true);
1096
+ if (id === "max" && !climMaxDragging) setClimMaxDragging(true);
1097
+ dx = e.pageX - x;
1098
+ dy = e.pageY - y;
1099
+ if (horizontal) {
1100
+ if (id === "min")
1101
+ setClim((prev) => [Math.min(init2[0] + dx * scale, init2[1]), prev[1]]);
1102
+ if (id === "max")
1103
+ setClim((prev) => [prev[0], Math.max(init2[1] + dx * scale, init2[0])]);
1104
+ } else {
1105
+ if (id === "min")
1106
+ setClim((prev) => [Math.min(init2[0] - dy * scale, init2[1]), prev[1]]);
1107
+ if (id === "max")
1108
+ setClim((prev) => [prev[0], Math.max(init2[1] - dy * scale, init2[0])]);
1109
+ }
1110
+ };
1111
+ const handleMouseDown = (e) => {
1112
+ y = e.pageY;
1113
+ x = e.pageX;
1114
+ id = e.currentTarget.id;
1115
+ init2 = clim;
1116
+ document.body.setAttribute(
1117
+ "style",
1118
+ horizontal ? "cursor: ew-resize !important" : "cursor: ns-resize !important"
1119
+ );
1120
+ document.addEventListener("mousemove", draggingFunction);
1121
+ const updater = () => {
1122
+ document.body.setAttribute("style", "cursor: unset");
1123
+ document.removeEventListener("mousemove", draggingFunction);
1124
+ window.removeEventListener("mouseup", updater);
1125
+ if (id === "min") setClimMinDragging(false);
1126
+ if (id === "max") setClimMaxDragging(false);
1127
+ };
1128
+ window.addEventListener("mouseup", updater);
1129
+ };
1130
+ const increment = (e) => {
1131
+ if (!setClim) return;
1132
+ if (climRef[0].current === document.activeElement) {
1133
+ e.preventDefault();
1134
+ setClim((prev) => [Math.min(prev[0] + scale, prev[1]), prev[1]]);
1135
+ climRef[0].current.focus();
1136
+ }
1137
+ if (climRef[1].current === document.activeElement) {
1138
+ e.preventDefault();
1139
+ setClim((prev) => [prev[0], Math.max(prev[1] + scale, prev[0])]);
1140
+ climRef[1].current.focus();
1141
+ }
1142
+ };
1143
+ const decrement = (e) => {
1144
+ if (!setClim) return;
1145
+ if (climRef[0].current === document.activeElement) {
1146
+ e.preventDefault();
1147
+ setClim((prev) => [Math.min(prev[0] - scale, prev[1]), prev[1]]);
1148
+ climRef[0].current.focus();
1149
+ }
1150
+ if (climRef[1].current === document.activeElement) {
1151
+ e.preventDefault();
1152
+ setClim((prev) => [prev[0], Math.max(prev[1] - scale, prev[0])]);
1153
+ climRef[1].current.focus();
1154
+ }
1155
+ };
1156
+ (0, import_react12.useEffect)(() => {
1157
+ const listener = (e) => {
1158
+ if (["ArrowUp", "ArrowRight"].includes(e.code) || ["ArrowUp", "ArrowRight"].includes(e.key)) {
1159
+ increment(e);
1160
+ }
1161
+ if (["ArrowDown", "ArrowLeft"].includes(e.code) || ["ArrowDown", "ArrowLeft"].includes(e.key)) {
1162
+ decrement(e);
1163
+ }
1164
+ };
1165
+ window.addEventListener("keydown", listener);
1166
+ return () => {
1167
+ window.removeEventListener("keydown", listener);
1168
+ };
1169
+ }, [clim]);
1170
+ const ClimMin = () => {
1171
+ return /* @__PURE__ */ import_react12.default.createElement(
1172
+ import_theme_ui12.Box,
1173
+ {
1174
+ id: "min",
1175
+ as: setClim ? "button" : "div",
1176
+ ref: climRef[0],
1177
+ tabIndex: 0,
1178
+ sx: __spreadValues(__spreadProps(__spreadValues({}, styles.clim(setClim)), {
1179
+ ml: label ? horizontal ? bottom ? "0px" : "10px" : ["2px", "1px", "1px", "2px"] : 0,
1180
+ mr: horizontal ? ["2px", "1px", "1px", "2px"] : 0,
1181
+ mb: horizontal ? 0 : ["-2px", "-2px", "-2px", "-3px"],
1182
+ borderBottom: setClim ? (t) => `solid 1px ${(0, import_theme_ui12.get)(t, "colors.primary")}` : "unset",
1183
+ cursor: setClim ? horizontal ? "ew-resize" : "ns-resize" : "default"
1184
+ }), sxClim),
1185
+ onMouseDown: setClim ? handleMouseDown : () => {
1186
+ },
1187
+ onClick: () => {
1188
+ var _a2;
1189
+ return (_a2 = climRef[0].current) == null ? void 0 : _a2.focus();
1190
+ }
1191
+ },
1192
+ format2(clim[0])
1193
+ );
1194
+ };
1195
+ const ClimMax = () => {
1196
+ return /* @__PURE__ */ import_react12.default.createElement(
1197
+ import_theme_ui12.Box,
1198
+ {
1199
+ id: "max",
1200
+ as: setClim ? "button" : "div",
1201
+ ref: climRef[1],
1202
+ tabIndex: 0,
1203
+ sx: __spreadValues(__spreadProps(__spreadValues({}, styles.clim(setClim)), {
1204
+ ml: horizontal ? ["2px", "1px", "1px", "2px"] : ["2px", "1px", "1px", "2px"],
1205
+ mt: horizontal ? 0 : ["-2px", "-3px", "-3px", "-3px"],
1206
+ borderBottom: setClim ? (t) => `solid 1px ${(0, import_theme_ui12.get)(t, "colors.primary")}` : "unset",
1207
+ cursor: setClim ? horizontal ? "ew-resize" : "ns-resize" : "default"
1208
+ }), sxClim),
1209
+ onMouseDown: setClim ? handleMouseDown : () => {
1210
+ },
1211
+ onClick: () => {
1212
+ var _a2;
1213
+ return (_a2 = climRef[1].current) == null ? void 0 : _a2.focus();
1214
+ }
1215
+ },
1216
+ format2(clim[1])
1217
+ );
1218
+ };
1219
+ return /* @__PURE__ */ import_react12.default.createElement(
1220
+ import_theme_ui12.Flex,
1221
+ __spreadProps(__spreadValues({}, props), {
1222
+ sx: __spreadValues({
1223
+ flexDirection: "row",
1224
+ alignItems: "start",
1225
+ justifyContent: "flex-start",
1226
+ gap: ["3px", "6px", "6px", "7px"],
1227
+ height: !horizontal ? "100%" : "unset"
1228
+ }, sx3)
1229
+ }),
1230
+ label && /* @__PURE__ */ import_react12.default.createElement(Label, { label, units, horizontal }),
1231
+ /* @__PURE__ */ import_react12.default.createElement(
1232
+ import_theme_ui12.Flex,
1233
+ {
1234
+ sx: {
1235
+ flexGrow: horizontal ? 1 : "unset",
1236
+ flexDirection: "column",
1237
+ ml: bottom && label ? "4px" : "0px",
1238
+ height: !horizontal ? "100%" : "unset"
1239
+ }
1240
+ },
1241
+ /* @__PURE__ */ import_react12.default.createElement(
1242
+ import_theme_ui12.Flex,
1243
+ {
1244
+ sx: {
1245
+ gap: ["3px", "6px", "6px", "7px"],
1246
+ height: !horizontal ? "100%" : "unset"
1247
+ }
1248
+ },
1249
+ horizontal && clim && !bottom && /* @__PURE__ */ import_react12.default.createElement(ClimMin, null),
1250
+ /* @__PURE__ */ import_react12.default.createElement(
1251
+ Gradient,
1252
+ {
1253
+ colormap,
1254
+ horizontal,
1255
+ discrete,
1256
+ width,
1257
+ height
1258
+ }
1259
+ ),
1260
+ horizontal && clim && !bottom && /* @__PURE__ */ import_react12.default.createElement(ClimMax, null)
1261
+ ),
1262
+ horizontal && clim && bottom && /* @__PURE__ */ import_react12.default.createElement(import_theme_ui12.Flex, { sx: { justifyContent: "space-between" } }, /* @__PURE__ */ import_react12.default.createElement(ClimMin, null), /* @__PURE__ */ import_react12.default.createElement(ClimMax, null))
1263
+ ),
1264
+ !horizontal && /* @__PURE__ */ import_react12.default.createElement(
1265
+ import_theme_ui12.Flex,
1266
+ {
1267
+ sx: {
1268
+ flexDirection: "column-reverse",
1269
+ justifyContent: "space-between",
1270
+ height: height || DIMENSIONS.height
1271
+ }
1272
+ },
1273
+ clim && /* @__PURE__ */ import_react12.default.createElement(ClimMin, null),
1274
+ clim && /* @__PURE__ */ import_react12.default.createElement(ClimMax, null)
1275
+ )
1276
+ );
1277
+ };
1278
+ var colorbar_default = Colorbar;
1279
+
1280
+ // src/colors.tsx
1281
+ var colors_exports = {};
1282
+ __export(colors_exports, {
1283
+ Background: () => Background,
1284
+ Blue: () => Blue,
1285
+ Green: () => Green,
1286
+ Grey: () => Grey,
1287
+ Orange: () => Orange,
1288
+ Pink: () => Pink,
1289
+ Primary: () => Primary,
1290
+ Purple: () => Purple,
1291
+ Red: () => Red,
1292
+ Secondary: () => Secondary,
1293
+ Teal: () => Teal,
1294
+ Yellow: () => Yellow
1295
+ });
1296
+ var import_react13 = __toESM(require("react"));
1297
+ var import_theme_ui13 = require("theme-ui");
1298
+ var InlineColor = (_a) => {
1299
+ var _b = _a, { sx: sx3, color, children } = _b, props = __objRest(_b, ["sx", "color", "children"]);
1300
+ return /* @__PURE__ */ import_react13.default.createElement(
1301
+ import_theme_ui13.Box,
1302
+ __spreadValues({
1303
+ as: "span",
1304
+ sx: __spreadValues({ display: "inline-block", color }, sx3)
1305
+ }, props),
1306
+ children
1307
+ );
1308
+ };
1309
+ var Primary = (props) => {
1310
+ return /* @__PURE__ */ import_react13.default.createElement(InlineColor, __spreadValues({ color: "primary" }, props));
1311
+ };
1312
+ var Secondary = (props) => {
1313
+ return /* @__PURE__ */ import_react13.default.createElement(InlineColor, __spreadValues({ color: "secondary" }, props));
1314
+ };
1315
+ var Background = (props) => {
1316
+ return /* @__PURE__ */ import_react13.default.createElement(InlineColor, __spreadValues({ color: "background" }, props));
1317
+ };
1318
+ var Red = (props) => {
1319
+ return /* @__PURE__ */ import_react13.default.createElement(InlineColor, __spreadValues({ color: "red" }, props));
1320
+ };
1321
+ var Orange = (props) => {
1322
+ return /* @__PURE__ */ import_react13.default.createElement(InlineColor, __spreadValues({ color: "orange" }, props));
1323
+ };
1324
+ var Yellow = (props) => {
1325
+ return /* @__PURE__ */ import_react13.default.createElement(InlineColor, __spreadValues({ color: "yellow" }, props));
1326
+ };
1327
+ var Green = (props) => {
1328
+ return /* @__PURE__ */ import_react13.default.createElement(InlineColor, __spreadValues({ color: "green" }, props));
1329
+ };
1330
+ var Teal = (props) => {
1331
+ return /* @__PURE__ */ import_react13.default.createElement(InlineColor, __spreadValues({ color: "teal" }, props));
1332
+ };
1333
+ var Blue = (props) => {
1334
+ return /* @__PURE__ */ import_react13.default.createElement(InlineColor, __spreadValues({ color: "blue" }, props));
1335
+ };
1336
+ var Purple = (props) => {
1337
+ return /* @__PURE__ */ import_react13.default.createElement(InlineColor, __spreadValues({ color: "purple" }, props));
1338
+ };
1339
+ var Pink = (props) => {
1340
+ return /* @__PURE__ */ import_react13.default.createElement(InlineColor, __spreadValues({ color: "pink" }, props));
1341
+ };
1342
+ var Grey = (props) => {
1343
+ return /* @__PURE__ */ import_react13.default.createElement(InlineColor, __spreadValues({ color: "grey" }, props));
1344
+ };
1345
+
1346
+ // src/custom-404.tsx
1347
+ var import_react31 = __toESM(require("react"));
1348
+ var import_theme_ui27 = require("theme-ui");
1349
+ var import_emoji = require("@carbonplan/emoji");
1350
+
1351
+ // src/layout.tsx
1352
+ var import_react30 = __toESM(require("react"));
1353
+ var import_theme_ui26 = require("theme-ui");
1354
+
1355
+ // src/meta.tsx
1356
+ var import_react14 = __toESM(require("react"));
1357
+ var import_head = __toESM(require("next/head"));
1358
+ var import_theme_ui14 = require("theme-ui");
1359
+ var Meta = ({ title, description, card, url }) => {
1360
+ var _a, _b;
1361
+ const { theme, colorMode } = (0, import_theme_ui14.useThemeUI)();
1362
+ if (!description) {
1363
+ console.warn(
1364
+ "a custom description should be used for search engine optimization"
1365
+ );
1366
+ }
1367
+ if (!title) {
1368
+ console.warn("a custom title should be used for search engine optimization");
1369
+ }
1370
+ const titleProp = title || "CarbonPlan";
1371
+ const descriptionProp = description || "Improving the transparency and scientific integrity of climate solutions with open data and tools.";
1372
+ const cardProp = card || "https://images.carbonplan.org/social/homepage.png";
1373
+ const urlProp = url || "https://carbonplan.org";
1374
+ return /* @__PURE__ */ import_react14.default.createElement(import_head.default, null, /* @__PURE__ */ import_react14.default.createElement("title", null, titleProp), /* @__PURE__ */ import_react14.default.createElement("meta", { name: "description", content: descriptionProp }), /* @__PURE__ */ import_react14.default.createElement("meta", { name: "viewport", content: "initial-scale=1.0, width=device-width" }), url && /* @__PURE__ */ import_react14.default.createElement("link", { rel: "canonical", href: url }), /* @__PURE__ */ import_react14.default.createElement(
1375
+ "link",
1376
+ {
1377
+ rel: "alternate icon",
1378
+ type: "image/png",
1379
+ href: "https://images.carbonplan.org/favicon.png"
1380
+ }
1381
+ ), /* @__PURE__ */ import_react14.default.createElement(
1382
+ "link",
1383
+ {
1384
+ rel: "icon",
1385
+ type: "image/svg+xml",
1386
+ href: "https://images.carbonplan.org/favicon.svg"
1387
+ }
1388
+ ), /* @__PURE__ */ import_react14.default.createElement(
1389
+ "link",
1390
+ {
1391
+ rel: "preload",
1392
+ href: "https://fonts.carbonplan.org/relative/relative-book-pro.woff2",
1393
+ as: "font",
1394
+ type: "font/woff2",
1395
+ crossOrigin: "anonymous"
1396
+ }
1397
+ ), /* @__PURE__ */ import_react14.default.createElement(
1398
+ "link",
1399
+ {
1400
+ rel: "preload",
1401
+ href: "https://fonts.carbonplan.org/relative/relative-medium-pro.woff2",
1402
+ as: "font",
1403
+ type: "font/woff2",
1404
+ crossOrigin: "anonymous"
1405
+ }
1406
+ ), /* @__PURE__ */ import_react14.default.createElement(
1407
+ "link",
1408
+ {
1409
+ rel: "preload",
1410
+ href: "https://fonts.carbonplan.org/relative/relative-mono-11-pitch-pro.woff2",
1411
+ as: "font",
1412
+ type: "font/woff2",
1413
+ crossOrigin: "anonymous"
1414
+ }
1415
+ ), /* @__PURE__ */ import_react14.default.createElement(
1416
+ "link",
1417
+ {
1418
+ rel: "preload",
1419
+ href: "https://fonts.carbonplan.org/relative/relative-faux-book-pro.woff2",
1420
+ as: "font",
1421
+ type: "font/woff2",
1422
+ crossOrigin: "anonymous"
1423
+ }
1424
+ ), /* @__PURE__ */ import_react14.default.createElement("link", { rel: "manifest", href: "https://images.carbonplan.org/manifest.json" }), /* @__PURE__ */ import_react14.default.createElement(
1425
+ "meta",
1426
+ {
1427
+ name: "theme-color",
1428
+ content: typeof ((_a = theme.colors) == null ? void 0 : _a.background) === "string" ? theme.colors.background : ""
1429
+ }
1430
+ ), /* @__PURE__ */ import_react14.default.createElement(
1431
+ "meta",
1432
+ {
1433
+ name: "color-scheme",
1434
+ content: colorMode === "light" ? "light" : "dark"
1435
+ }
1436
+ ), /* @__PURE__ */ import_react14.default.createElement(
1437
+ "link",
1438
+ {
1439
+ rel: "mask-icon",
1440
+ href: "https://images.carbonplan.org/safari-pinned-tab.svg",
1441
+ color: "#000000"
1442
+ }
1443
+ ), /* @__PURE__ */ import_react14.default.createElement(
1444
+ "link",
1445
+ {
1446
+ rel: "apple-touch-icon",
1447
+ sizes: "180x180",
1448
+ href: "https://images.carbonplan.org/apple-touch-icon.png"
1449
+ }
1450
+ ), /* @__PURE__ */ import_react14.default.createElement(
1451
+ "meta",
1452
+ {
1453
+ name: "msapplication-TileColor",
1454
+ content: typeof ((_b = theme.colors) == null ? void 0 : _b.background) === "string" ? theme.colors.background : ""
1455
+ }
1456
+ ), /* @__PURE__ */ import_react14.default.createElement(
1457
+ "meta",
1458
+ {
1459
+ name: "msapplication-TileImage",
1460
+ content: "https://images.carbonplan.org/mstile-144x144.png"
1461
+ }
1462
+ ), /* @__PURE__ */ import_react14.default.createElement(
1463
+ "meta",
1464
+ {
1465
+ name: "msapplication-config",
1466
+ content: "https://images.carbonplan.org/browserconfig.xml"
1467
+ }
1468
+ ), /* @__PURE__ */ import_react14.default.createElement("meta", { property: "og:title", content: titleProp }), /* @__PURE__ */ import_react14.default.createElement("meta", { property: "og:description", content: descriptionProp }), /* @__PURE__ */ import_react14.default.createElement("meta", { property: "og:image", content: cardProp }), /* @__PURE__ */ import_react14.default.createElement("meta", { property: "og:url", content: urlProp }), /* @__PURE__ */ import_react14.default.createElement("meta", { name: "twitter:title", content: titleProp }), /* @__PURE__ */ import_react14.default.createElement("meta", { name: "twitter:description", content: descriptionProp }), /* @__PURE__ */ import_react14.default.createElement("meta", { name: "twitter:image", content: cardProp }), /* @__PURE__ */ import_react14.default.createElement("meta", { name: "twitter:card", content: "summary_large_image" }), /* @__PURE__ */ import_react14.default.createElement("meta", { name: "format-detection", content: "telephone=no" }));
1469
+ };
1470
+ var meta_default = Meta;
1471
+
1472
+ // src/header.tsx
1473
+ var import_react17 = __toESM(require("react"));
1474
+ var import_link4 = __toESM(require("next/link"));
1475
+ var import_theme_ui17 = require("theme-ui");
1476
+ var import_icons2 = require("@carbonplan/icons");
1477
+
1478
+ // src/logo.tsx
1479
+ var import_react15 = __toESM(require("react"));
1480
+ var import_theme_ui15 = require("theme-ui");
1481
+ var Logo = (_a) => {
1482
+ var props = __objRest(_a, []);
1483
+ return /* @__PURE__ */ import_react15.default.createElement(
1484
+ import_theme_ui15.Box,
1485
+ __spreadValues(__spreadValues({
1486
+ as: "svg"
1487
+ }, {
1488
+ width: "150",
1489
+ fill: "currentColor",
1490
+ stroke: "none",
1491
+ viewBox: "0 0 151.1 28.8"
1492
+ }), props),
1493
+ /* @__PURE__ */ import_react15.default.createElement("g", null, /* @__PURE__ */ import_react15.default.createElement("g", null, /* @__PURE__ */ import_react15.default.createElement(
1494
+ "path",
1495
+ {
1496
+ d: "M9.7,20.1c-1.3-1.4-2-3.1-2-5.2c0-2.1,0.7-3.9,2-5.2c1.3-1.4,3-2,5.1-2c1.7,0,3.1,0.4,4.3,1.3\n c1.1,0.9,1.8,2.1,2.1,3.5c0,0.1,0,0.2,0,0.3s-0.1,0.2-0.2,0.2h-2.3c-0.2,0-0.3-0.1-0.4-0.2c-0.3-0.8-0.7-1.4-1.3-1.8\n c-0.6-0.4-1.4-0.6-2.2-0.6c-1.3,0-2.3,0.4-3,1.2c-0.8,0.8-1.1,1.9-1.1,3.4c0,1.5,0.4,2.6,1.1,3.4c0.8,0.8,1.8,1.2,3,1.2\n c0.8,0,1.6-0.2,2.2-0.6c0.6-0.4,1.1-1,1.3-1.8c0.1-0.2,0.2-0.2,0.4-0.3H21c0.1,0,0.2,0.1,0.2,0.2c0,0.1,0,0.2,0,0.3\n c-0.3,1.4-1,2.6-2.1,3.5c-1.1,0.9-2.5,1.3-4.3,1.3C12.7,22.1,11,21.4,9.7,20.1z"
1497
+ }
1498
+ )), /* @__PURE__ */ import_react15.default.createElement("g", null, /* @__PURE__ */ import_react15.default.createElement(
1499
+ "path",
1500
+ {
1501
+ d: "M22.5,17.6c0-1.5,0.5-2.6,1.6-3.5c1.1-0.8,2.4-1.2,4.1-1.2c1.1,0,2.4,0.2,3.7,0.6V13c0-0.9-0.3-1.6-0.8-2.1\n c-0.5-0.5-1.2-0.8-2.2-0.8c-1.4,0-2.4,0.6-2.9,1.8c-0.1,0.2-0.2,0.2-0.4,0.2h-2.3c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0-0.2,0-0.3\n c0.3-1.2,0.9-2.2,1.9-2.9c1-0.8,2.3-1.1,3.8-1.1C30.6,7.6,32,8.1,33,9c1,0.9,1.5,2.2,1.5,3.8V19c0,1.1,0.2,1.9,0.5,2.6\n c0,0.1,0.1,0.1,0.1,0.1c0,0.1-0.1,0.1-0.3,0.1h-2.8c-0.2,0-0.3-0.1-0.3-0.3v-1c-1.1,1.1-2.5,1.6-4.3,1.6c-1.4,0-2.6-0.4-3.6-1.2\n C23,20.1,22.5,19,22.5,17.6z M25.4,17.5c0,0.6,0.2,1.1,0.7,1.5c0.4,0.4,1.1,0.5,1.9,0.5c1.1,0,2-0.3,2.8-0.9\n c0.8-0.6,1.1-1.5,1.1-2.6c-1.3-0.4-2.5-0.6-3.6-0.6c-0.8,0-1.5,0.2-2.1,0.5C25.7,16.3,25.4,16.8,25.4,17.5z"
1502
+ }
1503
+ )), /* @__PURE__ */ import_react15.default.createElement("g", null, /* @__PURE__ */ import_react15.default.createElement(
1504
+ "path",
1505
+ {
1506
+ d: "M37,21.6V8.2c0-0.2,0.1-0.3,0.3-0.3h2.2c0.2,0,0.3,0.1,0.3,0.3v1.1c1-1.1,2.3-1.6,3.7-1.6\n c0.8,0,1.7,0.1,2.5,0.4c0.2,0.1,0.3,0.3,0.3,0.5v2.2c0,0.2-0.1,0.3-0.2,0.3c0,0-0.1,0-0.2-0.1c-1.1-0.5-2-0.8-2.9-0.8\n c-0.9,0-1.7,0.4-2.3,1.1c-0.6,0.7-0.9,1.7-0.9,3v7.3c0,0.2-0.1,0.3-0.3,0.3h-2.2C37.1,21.8,37,21.7,37,21.6z"
1507
+ }
1508
+ )), /* @__PURE__ */ import_react15.default.createElement("g", null, /* @__PURE__ */ import_react15.default.createElement(
1509
+ "path",
1510
+ {
1511
+ d: "M47.6,21.6V2.7c0-0.2,0.1-0.3,0.3-0.3H50c0.2,0,0.3,0.1,0.3,0.3v6.5c1.3-1.1,2.7-1.6,4.3-1.6\n c1.9,0,3.4,0.7,4.6,2c1.1,1.3,1.7,3.1,1.7,5.3c0,2.2-0.6,4-1.7,5.3c-1.1,1.3-2.7,2-4.6,2c-1.8,0-3.2-0.5-4.3-1.6v1\n c0,0.2-0.1,0.3-0.3,0.3h-2.2C47.7,21.8,47.6,21.7,47.6,21.6z M51.2,11.5c-0.7,0.9-1.1,2-1.1,3.3c0,1.4,0.4,2.5,1.1,3.3\n s1.7,1.3,2.9,1.3c1.2,0,2.2-0.4,2.9-1.3c0.7-0.9,1.1-2,1.1-3.3c0-1.4-0.4-2.5-1.1-3.3c-0.7-0.9-1.7-1.3-2.9-1.3\n C52.9,10.2,51.9,10.7,51.2,11.5z"
1512
+ }
1513
+ )), /* @__PURE__ */ import_react15.default.createElement("g", null, /* @__PURE__ */ import_react15.default.createElement(
1514
+ "path",
1515
+ {
1516
+ d: "M64.3,20.1c-1.4-1.4-2.1-3.1-2.1-5.2c0-2.1,0.7-3.9,2.1-5.2c1.4-1.4,3.1-2,5.2-2c2.1,0,3.8,0.7,5.2,2\n c1.4,1.4,2.1,3.1,2.1,5.2c0,2.1-0.7,3.9-2.1,5.2c-1.4,1.4-3.1,2-5.2,2C67.4,22.1,65.7,21.4,64.3,20.1z M66.4,11.5\n c-0.8,0.8-1.2,2-1.2,3.4c0,1.4,0.4,2.5,1.2,3.4s1.9,1.3,3.1,1.3c1.3,0,2.3-0.4,3.1-1.3c0.8-0.8,1.2-2,1.2-3.4\n c0-1.4-0.4-2.5-1.2-3.4c-0.8-0.8-1.9-1.3-3.1-1.3C68.2,10.2,67.2,10.7,66.4,11.5z"
1517
+ }
1518
+ )), /* @__PURE__ */ import_react15.default.createElement("g", null, /* @__PURE__ */ import_react15.default.createElement(
1519
+ "path",
1520
+ {
1521
+ d: "M78.7,21.6V8.2c0-0.2,0.1-0.3,0.3-0.3h2.2c0.2,0,0.3,0.1,0.3,0.3v1.3c1.3-1.2,2.7-1.8,4.4-1.8\n c1.5,0,2.7,0.4,3.5,1.3c0.8,0.9,1.3,2,1.3,3.6v9.1c0,0.2-0.1,0.3-0.3,0.3h-2.2c-0.2,0-0.3-0.1-0.3-0.3v-8.3c0-2-0.9-3.1-2.8-3.1\n c-1.1,0-1.9,0.4-2.7,1.2c-0.7,0.8-1.1,2-1.1,3.5v6.6c0,0.2-0.1,0.3-0.3,0.3h-2.2C78.7,21.8,78.7,21.7,78.7,21.6z"
1522
+ }
1523
+ )), /* @__PURE__ */ import_react15.default.createElement("g", null, /* @__PURE__ */ import_react15.default.createElement(
1524
+ "path",
1525
+ {
1526
+ d: "M101.7,27.1V8.2c0-0.2,0.1-0.3,0.3-0.3h2.2c0.2,0,0.3,0.1,0.3,0.3v1c1.1-1.1,2.5-1.6,4.3-1.6\n c1.9,0,3.4,0.7,4.6,2s1.7,3.1,1.7,5.3c0,2.2-0.6,4-1.7,5.3c-1.1,1.3-2.7,2-4.6,2c-1.5,0-3-0.5-4.3-1.6v6.6c0,0.2-0.1,0.3-0.3,0.3\n H102C101.8,27.3,101.7,27.2,101.7,27.1z M105.3,11.5c-0.7,0.9-1.1,2-1.1,3.3c0,1.4,0.4,2.5,1.1,3.3s1.7,1.3,2.9,1.3\n c1.2,0,2.2-0.4,2.9-1.3c0.7-0.9,1.1-2,1.1-3.3c0-1.4-0.4-2.5-1.1-3.3c-0.7-0.9-1.7-1.3-2.9-1.3C107,10.2,106,10.7,105.3,11.5z"
1527
+ }
1528
+ )), /* @__PURE__ */ import_react15.default.createElement("g", null, /* @__PURE__ */ import_react15.default.createElement(
1529
+ "path",
1530
+ {
1531
+ d: "M117.2,21.6V2.7c0-0.2,0.1-0.3,0.3-0.3h2.2c0.2,0,0.3,0.1,0.3,0.3v18.9c0,0.2-0.1,0.3-0.3,0.3h-2.2\n C117.3,21.8,117.2,21.7,117.2,21.6z"
1532
+ }
1533
+ )), /* @__PURE__ */ import_react15.default.createElement("g", null, /* @__PURE__ */ import_react15.default.createElement(
1534
+ "path",
1535
+ {
1536
+ d: "M122,17.6c0-1.5,0.5-2.6,1.6-3.5c1.1-0.8,2.4-1.2,4.1-1.2c1.1,0,2.4,0.2,3.7,0.6V13c0-0.9-0.3-1.6-0.8-2.1\n c-0.5-0.5-1.2-0.8-2.2-0.8c-1.4,0-2.4,0.6-2.9,1.8c-0.1,0.2-0.2,0.2-0.4,0.2h-2.3c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0-0.2,0-0.3\n c0.3-1.2,0.9-2.2,1.9-2.9c1-0.8,2.3-1.1,3.8-1.1c1.7,0,3.1,0.5,4.2,1.4s1.5,2.2,1.5,3.8V19c0,1.1,0.2,1.9,0.5,2.6\n c0,0.1,0.1,0.1,0.1,0.1c0,0.1-0.1,0.1-0.3,0.1h-2.8c-0.2,0-0.3-0.1-0.3-0.3v-1c-1.1,1.1-2.5,1.6-4.3,1.6c-1.4,0-2.6-0.4-3.6-1.2\n C122.5,20.1,122,19,122,17.6z M124.9,17.5c0,0.6,0.2,1.1,0.7,1.5c0.4,0.4,1.1,0.5,1.9,0.5c1.1,0,2-0.3,2.8-0.9\n c0.8-0.6,1.1-1.5,1.1-2.6c-1.3-0.4-2.5-0.6-3.6-0.6c-0.8,0-1.5,0.2-2.1,0.5C125.2,16.3,124.9,16.8,124.9,17.5z"
1537
+ }
1538
+ )), /* @__PURE__ */ import_react15.default.createElement("g", null, /* @__PURE__ */ import_react15.default.createElement(
1539
+ "path",
1540
+ {
1541
+ d: "M136.9,21.6V8.2c0-0.2,0.1-0.3,0.3-0.3h2.2c0.2,0,0.3,0.1,0.3,0.3v1.3c1.3-1.2,2.7-1.8,4.4-1.8\n c1.5,0,2.7,0.4,3.5,1.3c0.8,0.9,1.3,2,1.3,3.6v9.1c0,0.2-0.1,0.3-0.3,0.3h-2.2c-0.2,0-0.3-0.1-0.3-0.3v-8.3c0-2-0.9-3.1-2.8-3.1\n c-1.1,0-1.9,0.4-2.7,1.2c-0.7,0.8-1.1,2-1.1,3.5v6.6c0,0.2-0.1,0.3-0.3,0.3h-2.2C137,21.8,136.9,21.7,136.9,21.6z"
1542
+ }
1543
+ )), /* @__PURE__ */ import_react15.default.createElement(
1544
+ "path",
1545
+ {
1546
+ d: "M97.6,14.9c0,4.2-0.6,8.3-1.6,12.3c0,0.1-0.1,0.2-0.2,0.2h-2.4c-0.1,0-0.2-0.1-0.2-0.3c1.1-3.9,1.7-8,1.7-12.2\n s-0.6-8.3-1.7-12.2c0-0.1,0.1-0.3,0.2-0.3l2.4,0c0.1,0,0.2,0.1,0.2,0.2C97.1,6.5,97.6,10.6,97.6,14.9z"
1547
+ }
1548
+ ), /* @__PURE__ */ import_react15.default.createElement(
1549
+ "path",
1550
+ {
1551
+ d: "M1.4,14.9C1.4,10.6,2,6.5,3,2.6c0-0.1,0.1-0.2,0.2-0.2l2.4,0c0.1,0,0.2,0.1,0.2,0.3c-1.1,3.9-1.7,8-1.7,12.2\n s0.6,8.3,1.7,12.2c0,0.1-0.1,0.3-0.2,0.3H3.3c-0.1,0-0.2-0.1-0.2-0.2C2,23.2,1.4,19.1,1.4,14.9z"
1552
+ }
1553
+ ))
1554
+ );
1555
+ };
1556
+ var logo_default = Logo;
1557
+
1558
+ // src/menu.tsx
1559
+ var import_react16 = __toESM(require("react"));
1560
+ var import_theme_ui16 = require("theme-ui");
1561
+ var Menu = (_a) => {
1562
+ var _b = _a, { value, sx: sx3 } = _b, props = __objRest(_b, ["value", "sx"]);
1563
+ return /* @__PURE__ */ import_react16.default.createElement(
1564
+ import_theme_ui16.IconButton,
1565
+ __spreadValues({
1566
+ sx: __spreadValues({
1567
+ cursor: "pointer",
1568
+ fill: "none",
1569
+ strokeWidth: "2px",
1570
+ stroke: "text",
1571
+ ".paren": {
1572
+ opacity: "0"
1573
+ },
1574
+ "@media (hover: hover) and (pointer: fine)": {
1575
+ "&:hover .paren": {
1576
+ opacity: "1"
1577
+ }
1578
+ }
1579
+ }, sx3),
1580
+ "aria-label": "Toggle Menu"
1581
+ }, props),
1582
+ !value && /* @__PURE__ */ import_react16.default.createElement(
1583
+ "svg",
1584
+ {
1585
+ style: {
1586
+ width: "50px",
1587
+ height: "30px",
1588
+ marginTop: "-3px",
1589
+ flexShrink: 0
1590
+ },
1591
+ xmlns: "http://www.w3.org/2000/svg",
1592
+ viewBox: "0 0 68 36"
1593
+ },
1594
+ /* @__PURE__ */ import_react16.default.createElement("line", { x1: "52", y1: "29.9", x2: "16", y2: "29.9" }),
1595
+ /* @__PURE__ */ import_react16.default.createElement("line", { x1: "52", y1: "6.1", x2: "16", y2: "6.1" }),
1596
+ /* @__PURE__ */ import_react16.default.createElement("line", { x1: "52", y1: "18", x2: "16", y2: "18" }),
1597
+ /* @__PURE__ */ import_react16.default.createElement(
1598
+ "path",
1599
+ {
1600
+ style: { transition: "all 0.2s" },
1601
+ className: "paren",
1602
+ d: "M6.4,1.2c-6.3,10.3-6.3,23.3,0,33.6"
1603
+ }
1604
+ ),
1605
+ /* @__PURE__ */ import_react16.default.createElement(
1606
+ "path",
1607
+ {
1608
+ style: { transition: "all 0.2s" },
1609
+ className: "paren",
1610
+ d: "M61.6,34.8c6.3-10.3,6.3-23.3,0-33.6"
1611
+ }
1612
+ )
1613
+ ),
1614
+ value && /* @__PURE__ */ import_react16.default.createElement(
1615
+ "svg",
1616
+ {
1617
+ style: {
1618
+ width: "50px",
1619
+ height: "30px",
1620
+ marginTop: "-3px",
1621
+ flexShrink: 0
1622
+ },
1623
+ xmlns: "http://www.w3.org/2000/svg",
1624
+ viewBox: "0 0 68 36"
1625
+ },
1626
+ /* @__PURE__ */ import_react16.default.createElement("line", { x1: "50.85", y1: "29.79", x2: "17.15", y2: "6.21" }),
1627
+ /* @__PURE__ */ import_react16.default.createElement("line", { x1: "17.15", y1: "29.79", x2: "50.85", y2: "6.21" }),
1628
+ /* @__PURE__ */ import_react16.default.createElement(
1629
+ "path",
1630
+ {
1631
+ style: { transition: "all 0.2s" },
1632
+ className: "paren",
1633
+ d: "M6.4,1.2c-6.3,10.3-6.3,23.3,0,33.6"
1634
+ }
1635
+ ),
1636
+ /* @__PURE__ */ import_react16.default.createElement(
1637
+ "path",
1638
+ {
1639
+ style: { transition: "all 0.2s" },
1640
+ className: "paren",
1641
+ d: "M61.6,34.8c6.3-10.3,6.3-23.3,0-33.6"
1642
+ }
1643
+ )
1644
+ )
1645
+ );
1646
+ };
1647
+ var menu_default = Menu;
1648
+
1649
+ // src/header.tsx
1650
+ var sx = {
1651
+ link: (current, label, first = false) => {
1652
+ return {
1653
+ width: "auto",
1654
+ color: current === label ? "secondary" : "text",
1655
+ fontSize: [6, 6, 7, 8],
1656
+ fontFamily: "heading",
1657
+ letterSpacing: "heading",
1658
+ borderStyle: "solid",
1659
+ borderColor: "muted",
1660
+ borderWidth: "0px",
1661
+ borderBottomWidth: "1px",
1662
+ borderTopWidth: first ? "1px" : "0px",
1663
+ py: [3, 3, 4, 5],
1664
+ textDecoration: "none",
1665
+ display: "block",
1666
+ position: "relative",
1667
+ transition: "color 0.15s",
1668
+ "@media (hover: hover) and (pointer: fine)": {
1669
+ "&:hover > #arrow": {
1670
+ opacity: 1
1671
+ }
1672
+ },
1673
+ "&:hover": {
1674
+ color: current === label ? "secondary" : "text"
1675
+ }
1676
+ };
1677
+ }
1678
+ };
1679
+ var links = [
1680
+ { url: "about", display: "About" },
1681
+ { url: "research", display: "Research" },
1682
+ { url: "blog", display: "Blog" },
1683
+ { url: "press", display: "Press" }
1684
+ ];
1685
+ var HoverArrow = () => {
1686
+ return /* @__PURE__ */ import_react17.default.createElement(
1687
+ import_icons2.Arrow,
1688
+ {
1689
+ id: "arrow",
1690
+ sx: {
1691
+ pointerEvents: "none",
1692
+ display: "inline-block",
1693
+ position: "absolute",
1694
+ left: ["-60px", "-68px", "-80px", "-104px"],
1695
+ top: ["32px", "32px", "46px", "62px"],
1696
+ opacity: 0,
1697
+ transition: "opacity 0.2s ease-out",
1698
+ transform: "rotate(45deg)",
1699
+ width: [36, 36, 48, 56],
1700
+ height: [36, 36, 48, 56]
1701
+ }
1702
+ }
1703
+ );
1704
+ };
1705
+ var Nav = ({ link, mode, nav, first, setExpanded }) => {
1706
+ const { url, display } = link;
1707
+ const href = mode === "remote" ? "https://carbonplan.org/" + url : "/" + url;
1708
+ if (mode === "homepage" || mode === "local" && nav === url) {
1709
+ return /* @__PURE__ */ import_react17.default.createElement(import_link4.default, { href, passHref: true, legacyBehavior: true }, /* @__PURE__ */ import_react17.default.createElement(
1710
+ import_theme_ui17.Link,
1711
+ {
1712
+ onClick: () => {
1713
+ if (nav === url) setExpanded(false);
1714
+ },
1715
+ sx: sx.link(nav, url, first)
1716
+ },
1717
+ /* @__PURE__ */ import_react17.default.createElement(HoverArrow, null),
1718
+ display
1719
+ ));
1720
+ } else {
1721
+ return /* @__PURE__ */ import_react17.default.createElement(import_theme_ui17.Link, { href, sx: sx.link(nav, url, first) }, /* @__PURE__ */ import_react17.default.createElement(HoverArrow, null), display);
1722
+ }
1723
+ };
1724
+ var NavGroup = ({ links: links2, nav, mode, setExpanded }) => {
1725
+ return /* @__PURE__ */ import_react17.default.createElement(import_react17.default.Fragment, null, links2.map((d, i) => {
1726
+ return /* @__PURE__ */ import_react17.default.createElement(
1727
+ Nav,
1728
+ {
1729
+ key: i,
1730
+ link: d,
1731
+ mode,
1732
+ nav,
1733
+ first: i === 0,
1734
+ setExpanded
1735
+ }
1736
+ );
1737
+ }));
1738
+ };
1739
+ var Header = ({ status, mode, nav, menuItems }) => {
1740
+ const [expanded, setExpanded] = (0, import_react17.useState)(false);
1741
+ const toggle = () => {
1742
+ setExpanded(!expanded);
1743
+ };
1744
+ return /* @__PURE__ */ import_react17.default.createElement(
1745
+ row_default,
1746
+ {
1747
+ sx: {
1748
+ pt: ["12px"],
1749
+ pb: [3]
1750
+ }
1751
+ },
1752
+ /* @__PURE__ */ import_react17.default.createElement(column_default, { start: [1], width: [2] }, /* @__PURE__ */ import_react17.default.createElement(
1753
+ import_theme_ui17.Box,
1754
+ {
1755
+ sx: { pointerEvents: "all", display: "block", width: "fit-content" }
1756
+ },
1757
+ (mode === "homepage" || mode === "local") && /* @__PURE__ */ import_react17.default.createElement(import_link4.default, { href: "/", passHref: true, legacyBehavior: true }, /* @__PURE__ */ import_react17.default.createElement(
1758
+ import_theme_ui17.Link,
1759
+ {
1760
+ "aria-label": "CarbonPlan Homepage",
1761
+ sx: {
1762
+ display: "block"
1763
+ }
1764
+ },
1765
+ /* @__PURE__ */ import_react17.default.createElement(
1766
+ logo_default,
1767
+ {
1768
+ id: "logo",
1769
+ sx: {
1770
+ cursor: "pointer",
1771
+ color: "primary"
1772
+ }
1773
+ }
1774
+ )
1775
+ )),
1776
+ (mode == null || mode === "remote") && /* @__PURE__ */ import_react17.default.createElement(
1777
+ import_theme_ui17.Link,
1778
+ {
1779
+ href: "https://carbonplan.org",
1780
+ "aria-label": "CarbonPlan Homepage",
1781
+ sx: { display: "block" }
1782
+ },
1783
+ /* @__PURE__ */ import_react17.default.createElement(logo_default, { sx: { cursor: "pointer", color: "primary" } })
1784
+ )
1785
+ )),
1786
+ /* @__PURE__ */ import_react17.default.createElement(
1787
+ column_default,
1788
+ {
1789
+ start: [4, 9],
1790
+ width: [2, 2],
1791
+ dr: 1,
1792
+ sx: {
1793
+ display: [status ? "flex" : "none", "flex", "flex", "flex"],
1794
+ alignItems: "center"
1795
+ }
1796
+ },
1797
+ /* @__PURE__ */ import_react17.default.createElement(
1798
+ import_theme_ui17.Box,
1799
+ {
1800
+ sx: {
1801
+ fontSize: [1, 2, 3],
1802
+ position: "relative",
1803
+ top: ["-2px", "-3px", "-3px"]
1804
+ }
1805
+ },
1806
+ status ? `(${status})` : ""
1807
+ )
1808
+ ),
1809
+ /* @__PURE__ */ import_react17.default.createElement(
1810
+ column_default,
1811
+ {
1812
+ start: [status ? 6 : 4, 6, 11, 11],
1813
+ width: [status ? 1 : 3, 3, 2, 2],
1814
+ sx: { zIndex: 5e3 }
1815
+ },
1816
+ /* @__PURE__ */ import_react17.default.createElement(import_theme_ui17.Flex, { sx: { pointerEvents: "all", justifyContent: "flex-end" } }, /* @__PURE__ */ import_react17.default.createElement(
1817
+ import_theme_ui17.Box,
1818
+ {
1819
+ sx: {
1820
+ display: [status ? "none" : "flex", "flex", "flex", "flex"],
1821
+ mr: "18px",
1822
+ gap: "18px",
1823
+ opacity: expanded ? 0 : 1,
1824
+ transition: "opacity 0.15s",
1825
+ justifyContent: "space-between",
1826
+ alignItems: "center"
1827
+ }
1828
+ },
1829
+ menuItems
1830
+ ), /* @__PURE__ */ import_react17.default.createElement(
1831
+ menu_default,
1832
+ {
1833
+ sx: {
1834
+ flexShrink: 0,
1835
+ mr: ["-2px"]
1836
+ },
1837
+ value: expanded,
1838
+ onClick: toggle
1839
+ }
1840
+ ))
1841
+ ),
1842
+ /* @__PURE__ */ import_react17.default.createElement(
1843
+ import_theme_ui17.Box,
1844
+ {
1845
+ sx: {
1846
+ opacity: expanded ? 1 : 0,
1847
+ pointerEvents: expanded ? "all" : "none",
1848
+ position: "fixed",
1849
+ top: "0px",
1850
+ right: "0px",
1851
+ bottom: "0px",
1852
+ minWidth: "0px",
1853
+ maxHeight: "100vh",
1854
+ width: "100vw",
1855
+ backgroundColor: "background",
1856
+ zIndex: 4e3,
1857
+ pt: ["79px"],
1858
+ transition: "opacity 0.25s"
1859
+ }
1860
+ },
1861
+ /* @__PURE__ */ import_react17.default.createElement(import_theme_ui17.Container, null, /* @__PURE__ */ import_react17.default.createElement(row_default, null, /* @__PURE__ */ import_react17.default.createElement(column_default, { start: [2, 4, 7, 7], width: [5, 4, 5, 5] }, /* @__PURE__ */ import_react17.default.createElement(
1862
+ import_theme_ui17.Box,
1863
+ {
1864
+ as: "nav",
1865
+ sx: {
1866
+ display: expanded ? "inherit" : "none",
1867
+ mt: [5, 5, 5, 6]
1868
+ }
1869
+ },
1870
+ /* @__PURE__ */ import_react17.default.createElement(
1871
+ NavGroup,
1872
+ {
1873
+ links,
1874
+ nav,
1875
+ mode,
1876
+ setExpanded
1877
+ }
1878
+ )
1879
+ ))))
1880
+ )
1881
+ );
1882
+ };
1883
+ var header_default = Header;
1884
+
1885
+ // src/footer.tsx
1886
+ var import_react19 = __toESM(require("react"));
1887
+ var import_theme_ui19 = require("theme-ui");
1888
+ var import_link5 = __toESM(require("next/link"));
1889
+
1890
+ // src/monogram.tsx
1891
+ var import_react18 = __toESM(require("react"));
1892
+ var import_theme_ui18 = require("theme-ui");
1893
+ var Monogram = (_a) => {
1894
+ var props = __objRest(_a, []);
1895
+ return /* @__PURE__ */ import_react18.default.createElement(
1896
+ import_theme_ui18.Box,
1897
+ __spreadValues(__spreadValues({
1898
+ as: "svg"
1899
+ }, {
1900
+ width: "80",
1901
+ stroke: "none",
1902
+ fill: "currentColor",
1903
+ viewBox: "0 0 32 32"
1904
+ }), props),
1905
+ /* @__PURE__ */ import_react18.default.createElement("path", { d: "M21.9395,14.9395 L17.5005,19.3785 L17.5005,7.0005 L14.5005,7.0005 L14.5005,19.3785 L10.0605,14.9395 L7.9395,17.0605 L14.9395,24.0605 C15.2325,24.3535 15.6165,24.5005 16.0005,24.5005 C16.3835,24.5005 16.7675,24.3535 17.0605,24.0605 L24.0605,17.0605 L21.9395,14.9395 Z" }),
1906
+ /* @__PURE__ */ import_react18.default.createElement("path", { d: "M27.5986,4 L22.8966,4 C26.5556,6.303 28.9996,10.366 28.9996,15 C28.9996,20.4 25.6896,25.039 20.9926,27 L26.5586,27 C29.8886,24.068 31.9996,19.785 31.9996,15 C31.9996,10.734 30.3196,6.868 27.5986,4" }),
1907
+ /* @__PURE__ */ import_react18.default.createElement("path", { d: "M3,15 C3,10.366 5.444,6.303 9.104,4 L4.401,4 C1.68,6.868 0,10.734 0,15 C0,19.785 2.112,24.068 5.441,27 L11.008,27 C6.311,25.039 3,20.4 3,15" })
1908
+ );
1909
+ };
1910
+ var monogram_default = Monogram;
1911
+
1912
+ // src/footer.tsx
1913
+ var Footer = () => {
1914
+ const [year, setYear] = (0, import_react19.useState)(null);
1915
+ (0, import_react19.useEffect)(() => {
1916
+ setYear((/* @__PURE__ */ new Date()).getFullYear());
1917
+ }, []);
1918
+ return /* @__PURE__ */ import_react19.default.createElement(
1919
+ import_theme_ui19.Box,
1920
+ {
1921
+ sx: {
1922
+ mt: [7, 7, 7, 8],
1923
+ mb: [7, 7, 7, 8],
1924
+ pb: [2, 1, 0, 0]
1925
+ }
1926
+ },
1927
+ /* @__PURE__ */ import_react19.default.createElement(row_default, { sx: { mb: [0, 0, 4, 5] } }, /* @__PURE__ */ import_react19.default.createElement(column_default, { start: [1, 2], width: [3, 3] }, /* @__PURE__ */ import_react19.default.createElement(import_theme_ui19.Box, null, /* @__PURE__ */ import_react19.default.createElement(
1928
+ import_theme_ui19.Box,
1929
+ {
1930
+ sx: {
1931
+ fontSize: [2, 2, 2, 3],
1932
+ fontFamily: "heading",
1933
+ letterSpacing: "mono",
1934
+ mb: [2]
1935
+ }
1936
+ },
1937
+ "EMAIL"
1938
+ ), /* @__PURE__ */ import_react19.default.createElement(
1939
+ import_theme_ui19.Link,
1940
+ {
1941
+ href: "mailto:hello@carbonplan.org",
1942
+ sx: {
1943
+ textDecoration: "none",
1944
+ fontSize: [2, 2, 2, 3]
1945
+ }
1946
+ },
1947
+ "hello@carbonplan.org"
1948
+ ))), /* @__PURE__ */ import_react19.default.createElement(
1949
+ column_default,
1950
+ {
1951
+ start: [5],
1952
+ width: [1],
1953
+ dl: 1,
1954
+ dr: 1,
1955
+ sx: {
1956
+ display: ["flex", "none", "none", "none"],
1957
+ justifyContent: ["center"]
1958
+ }
1959
+ },
1960
+ /* @__PURE__ */ import_react19.default.createElement(monogram_default, { sx: { mt: ["-4px"], width: "60px", height: "60px" } })
1961
+ ), /* @__PURE__ */ import_react19.default.createElement(column_default, { start: [1, 5, 5, 5], width: [3, 3], sx: { mt: [3, 0, 0, 0] } }, /* @__PURE__ */ import_react19.default.createElement(import_theme_ui19.Box, null, /* @__PURE__ */ import_react19.default.createElement(
1962
+ import_theme_ui19.Box,
1963
+ {
1964
+ sx: {
1965
+ fontSize: [2, 2, 2, 3],
1966
+ fontFamily: "heading",
1967
+ letterSpacing: "mono",
1968
+ mb: [2]
1969
+ }
1970
+ },
1971
+ "NEWSLETTER"
1972
+ ), /* @__PURE__ */ import_react19.default.createElement(
1973
+ import_theme_ui19.Link,
1974
+ {
1975
+ href: "https://carbonplan.org/newsletter",
1976
+ sx: {
1977
+ textDecoration: "none",
1978
+ fontSize: [2, 2, 2, 3]
1979
+ }
1980
+ },
1981
+ "Subscribe"
1982
+ ))), /* @__PURE__ */ import_react19.default.createElement(
1983
+ column_default,
1984
+ {
1985
+ start: [1, 9],
1986
+ width: [5, 4, 3, 3],
1987
+ sx: { mt: ["42px", "42px", 0, 0], mb: [3, 3, 0, 0] }
1988
+ },
1989
+ /* @__PURE__ */ import_react19.default.createElement(import_theme_ui19.Box, null, /* @__PURE__ */ import_react19.default.createElement(
1990
+ import_theme_ui19.Box,
1991
+ {
1992
+ sx: {
1993
+ fontSize: [2, 2, 2, 3],
1994
+ fontFamily: "body",
1995
+ color: "secondary"
1996
+ }
1997
+ },
1998
+ "CarbonPlan is a registered nonprofit public benefit corporation in California with 501(c)(3) status."
1999
+ ))
2000
+ )),
2001
+ /* @__PURE__ */ import_react19.default.createElement(row_default, { sx: { mb: ["2px"], mt: [5, 5, 4] } }, /* @__PURE__ */ import_react19.default.createElement(
2002
+ column_default,
2003
+ {
2004
+ start: [1, 1, 2, 2],
2005
+ width: [3, 2, 3, 3],
2006
+ sx: {
2007
+ display: "flex",
2008
+ alignItems: ["flex-start", "flex-start", "flex-end"]
2009
+ }
2010
+ },
2011
+ /* @__PURE__ */ import_react19.default.createElement(
2012
+ import_theme_ui19.Box,
2013
+ {
2014
+ sx: {
2015
+ bottom: "0px",
2016
+ borderStyle: "solid",
2017
+ borderColor: "muted",
2018
+ borderWidth: "0px",
2019
+ borderTopWidth: "1px",
2020
+ display: "inline-block",
2021
+ pt: [2]
2022
+ }
2023
+ },
2024
+ /* @__PURE__ */ import_react19.default.createElement(
2025
+ import_theme_ui19.Box,
2026
+ {
2027
+ sx: {
2028
+ color: "secondary",
2029
+ fontSize: [1, 1, 1, 2],
2030
+ fontFamily: "mono",
2031
+ letterSpacing: "mono"
2032
+ }
2033
+ },
2034
+ /* @__PURE__ */ import_react19.default.createElement(
2035
+ import_theme_ui19.Flex,
2036
+ {
2037
+ sx: {
2038
+ flexDirection: ["column", "column", "row", "row"],
2039
+ gap: [0, 0, "10px", "12px"]
2040
+ }
2041
+ },
2042
+ /* @__PURE__ */ import_react19.default.createElement(import_theme_ui19.Box, null, "(c) ", year),
2043
+ /* @__PURE__ */ import_react19.default.createElement(import_theme_ui19.Box, null, "CARBONPLAN")
2044
+ )
2045
+ )
2046
+ )
2047
+ ), /* @__PURE__ */ import_react19.default.createElement(
2048
+ column_default,
2049
+ {
2050
+ start: [4, 3, 5, 5],
2051
+ width: [3, 3, 4, 4],
2052
+ sx: {
2053
+ display: "flex",
2054
+ alignItems: ["flex-start", "flex-start", "flex-end"],
2055
+ mt: [0, 0, 0, 0]
2056
+ }
2057
+ },
2058
+ /* @__PURE__ */ import_react19.default.createElement(
2059
+ import_theme_ui19.Box,
2060
+ {
2061
+ sx: {
2062
+ bottom: "0px",
2063
+ borderStyle: "solid",
2064
+ borderColor: "muted",
2065
+ borderWidth: "0px",
2066
+ borderTopWidth: "1px",
2067
+ pt: [2]
2068
+ }
2069
+ },
2070
+ /* @__PURE__ */ import_react19.default.createElement(
2071
+ import_theme_ui19.Flex,
2072
+ {
2073
+ sx: {
2074
+ color: "secondary",
2075
+ fontSize: [1, 1, 1, 2],
2076
+ fontFamily: "mono",
2077
+ letterSpacing: "mono",
2078
+ flexDirection: ["column", "column", "row", "row"],
2079
+ gap: [0, 0, "10px", "12px"]
2080
+ }
2081
+ },
2082
+ /* @__PURE__ */ import_react19.default.createElement(import_link5.default, { href: "/terms", passHref: true, legacyBehavior: true }, /* @__PURE__ */ import_react19.default.createElement(
2083
+ import_theme_ui19.Box,
2084
+ {
2085
+ as: "a",
2086
+ sx: {
2087
+ color: "secondary",
2088
+ "&:hover": {
2089
+ color: "primary"
2090
+ }
2091
+ }
2092
+ },
2093
+ "TERMS OF USE"
2094
+ )),
2095
+ /* @__PURE__ */ import_react19.default.createElement(import_theme_ui19.Box, { sx: { display: ["none", "none", "initial", "initial"] } }, " / "),
2096
+ /* @__PURE__ */ import_react19.default.createElement(import_link5.default, { href: "/privacy", passHref: true, legacyBehavior: true }, /* @__PURE__ */ import_react19.default.createElement(
2097
+ import_theme_ui19.Box,
2098
+ {
2099
+ as: "a",
2100
+ sx: {
2101
+ color: "secondary",
2102
+ "&:hover": {
2103
+ color: "primary"
2104
+ }
2105
+ }
2106
+ },
2107
+ "PRIVACY POLICY"
2108
+ ))
2109
+ )
2110
+ )
2111
+ ), /* @__PURE__ */ import_react19.default.createElement(
2112
+ column_default,
2113
+ {
2114
+ start: [5, 7, 9, 9],
2115
+ width: [2, 2, 3, 3],
2116
+ sx: { display: ["none", "initial", "initial", "initial"] }
2117
+ },
2118
+ /* @__PURE__ */ import_react19.default.createElement(
2119
+ monogram_default,
2120
+ {
2121
+ sx: {
2122
+ width: 80,
2123
+ height: 80,
2124
+ mt: [0, "-10px", 4, 5],
2125
+ mb: ["-12px"]
2126
+ }
2127
+ }
2128
+ )
2129
+ ))
2130
+ );
2131
+ };
2132
+ var footer_default = Footer;
2133
+
2134
+ // src/dimmer.tsx
2135
+ var import_react20 = __toESM(require("react"));
2136
+ var import_theme_ui20 = require("theme-ui");
2137
+ var import_react21 = require("react");
2138
+ var import_icons3 = require("@carbonplan/icons");
2139
+ var Dimmer = (_a) => {
2140
+ var _b = _a, { sx: sx3 = {} } = _b, props = __objRest(_b, ["sx"]);
2141
+ const [colorMode, setColorMode] = (0, import_theme_ui20.useColorMode)();
2142
+ const toggle = (0, import_react21.useCallback)(() => {
2143
+ setColorMode(colorMode === "light" ? "dark" : "light");
2144
+ }, [colorMode]);
2145
+ return /* @__PURE__ */ import_react20.default.createElement(
2146
+ import_theme_ui20.IconButton,
2147
+ __spreadValues({
2148
+ "aria-label": "Toggle dark mode",
2149
+ onClick: toggle,
2150
+ role: "checkbox",
2151
+ sx: __spreadValues({
2152
+ width: 32,
2153
+ height: 32,
2154
+ display: "inline-block",
2155
+ cursor: "pointer",
2156
+ color: "secondary"
2157
+ }, sx3)
2158
+ }, props),
2159
+ /* @__PURE__ */ import_react20.default.createElement(
2160
+ import_icons3.Sun,
2161
+ {
2162
+ sx: {
2163
+ strokeWidth: "1.75",
2164
+ transition: "stroke 0.15s",
2165
+ "@media (hover: hover) and (pointer: fine)": {
2166
+ "&:hover": {
2167
+ stroke: "primary"
2168
+ }
2169
+ }
2170
+ }
2171
+ }
2172
+ )
2173
+ );
2174
+ };
2175
+ var dimmer_default = Dimmer;
2176
+
2177
+ // src/metadata.tsx
2178
+ var import_react23 = __toESM(require("react"));
2179
+ var import_theme_ui22 = require("theme-ui");
2180
+ var import_react24 = require("react");
2181
+
2182
+ // src/gitsha.tsx
2183
+ var import_react22 = __toESM(require("react"));
2184
+ var import_theme_ui21 = require("theme-ui");
2185
+ var GitSha = () => {
2186
+ var _a;
2187
+ const sha = process.env.NEXT_PUBLIC_VERCEL_GIT_COMMIT_SHA;
2188
+ const owner = process.env.NEXT_PUBLIC_VERCEL_GIT_REPO_OWNER;
2189
+ const slug = process.env.NEXT_PUBLIC_VERCEL_GIT_REPO_SLUG;
2190
+ const { theme } = (0, import_theme_ui21.useThemeUI)();
2191
+ const color = (_a = theme.rawColors) == null ? void 0 : _a.secondary;
2192
+ if (sha && owner && slug) {
2193
+ const shortSha = sha.substring(0, 7);
2194
+ const href = "https://github.com/" + owner + "/" + slug + "/tree/" + sha;
2195
+ return /* @__PURE__ */ import_react22.default.createElement(import_theme_ui21.Box, { sx: { display: "inline-block", width: "87px" } }, /* @__PURE__ */ import_react22.default.createElement(Separator, { color: typeof color === "string" ? color : void 0 }), /* @__PURE__ */ import_react22.default.createElement(
2196
+ import_theme_ui21.Link,
2197
+ {
2198
+ href,
2199
+ sx: {
2200
+ whiteSpace: "nowrap",
2201
+ display: "inline-block",
2202
+ ml: [2],
2203
+ fontFamily: "mono",
2204
+ letterSpacing: "body",
2205
+ color,
2206
+ fontSize: [1],
2207
+ textTransform: "uppercase",
2208
+ textDecoration: "none"
2209
+ }
2210
+ },
2211
+ shortSha
2212
+ ));
2213
+ } else {
2214
+ return /* @__PURE__ */ import_react22.default.createElement(import_theme_ui21.Box, { sx: { display: "inline-block", width: "87px" } }, /* @__PURE__ */ import_react22.default.createElement(Separator, { color: typeof color === "string" ? color : void 0 }), /* @__PURE__ */ import_react22.default.createElement(
2215
+ import_theme_ui21.Text,
2216
+ {
2217
+ sx: {
2218
+ whiteSpace: "nowrap",
2219
+ display: "inline-block",
2220
+ ml: [2],
2221
+ fontFamily: "mono",
2222
+ letterSpacing: "body",
2223
+ color,
2224
+ fontSize: [1],
2225
+ textTransform: "uppercase"
2226
+ }
2227
+ },
2228
+ typeof color === "string" ? color : ""
2229
+ ));
2230
+ }
2231
+ };
2232
+ var Separator = ({ color = "secondary" }) => {
2233
+ return /* @__PURE__ */ import_react22.default.createElement("svg", { fill: color, opacity: "0.8", viewBox: "0 0 24 24", width: "24", height: "24" }, /* @__PURE__ */ import_react22.default.createElement("circle", { r: 5, cx: 19, cy: 19 }));
2234
+ };
2235
+ var gitsha_default = GitSha;
2236
+
2237
+ // src/metadata.tsx
2238
+ var Value = ({ mode }) => {
2239
+ const [display, setDisplay] = (0, import_react24.useState)(init(mode));
2240
+ (0, import_react24.useEffect)(() => {
2241
+ if (mode === "mouse") {
2242
+ const setFromEvent = (e) => {
2243
+ const x = format(e.clientX, 4);
2244
+ const y = format(e.clientY, 4);
2245
+ setDisplay(`X,Y: ${x},${y}`);
2246
+ };
2247
+ window.addEventListener("mousemove", setFromEvent);
2248
+ return () => {
2249
+ window.removeEventListener("mousemove", setFromEvent);
2250
+ };
2251
+ }
2252
+ if (mode === "scroll") {
2253
+ const setFromEvent = () => {
2254
+ const y = scrollFraction(window, document);
2255
+ setDisplay(`SCROLL: 0.${format((y * 100).toFixed(0), 2)}`);
2256
+ };
2257
+ window.addEventListener("scroll", setFromEvent);
2258
+ return () => {
2259
+ window.removeEventListener("scroll", setFromEvent);
2260
+ };
2261
+ }
2262
+ }, []);
2263
+ return /* @__PURE__ */ import_react23.default.createElement(
2264
+ import_theme_ui22.Text,
2265
+ {
2266
+ sx: {
2267
+ whiteSpace: "nowrap",
2268
+ display: "inline-block",
2269
+ mr: "-6px",
2270
+ fontFamily: "mono",
2271
+ letterSpacing: "body",
2272
+ color: "secondary",
2273
+ fontSize: [1],
2274
+ textTransform: "uppercase"
2275
+ }
2276
+ },
2277
+ display
2278
+ );
2279
+ };
2280
+ var Metadata = ({ mode }) => {
2281
+ return /* @__PURE__ */ import_react23.default.createElement(
2282
+ import_theme_ui22.Box,
2283
+ {
2284
+ sx: {
2285
+ userSelect: "none",
2286
+ position: "fixed",
2287
+ bottom: "42px",
2288
+ right: "24px",
2289
+ transformOrigin: "right",
2290
+ transform: "rotate(90deg)",
2291
+ display: ["none", "none", "initial"]
2292
+ }
2293
+ },
2294
+ /* @__PURE__ */ import_react23.default.createElement(Value, { mode }),
2295
+ /* @__PURE__ */ import_react23.default.createElement(gitsha_default, null)
2296
+ );
2297
+ };
2298
+ function init(mode) {
2299
+ if (mode === "mouse") {
2300
+ return `X,Y: ${format(0, 4)},${format(0, 4)}`;
2301
+ } else if (mode === "scroll") {
2302
+ return `SCROLL: 0.${format(0 .toFixed(0), 2)}`;
2303
+ } else {
2304
+ return mode;
2305
+ }
2306
+ }
2307
+ function format(num, pad) {
2308
+ return num.toString().padStart(pad, "0");
2309
+ }
2310
+ function scrollFraction(window2, document2) {
2311
+ return Math.min(window2.scrollY / (document2.body.offsetHeight - 770), 0.99);
2312
+ }
2313
+ var metadata_default = Metadata;
2314
+
2315
+ // src/fade-in.tsx
2316
+ var import_react25 = __toESM(require("react"));
2317
+ var import_theme_ui23 = require("theme-ui");
2318
+ var import_react26 = require("@emotion/react");
2319
+ var fade = (0, import_react26.keyframes)({
2320
+ from: {
2321
+ opacity: 0
2322
+ },
2323
+ to: {
2324
+ opacity: 1
2325
+ }
2326
+ });
2327
+ var FadeIn = (_a) => {
2328
+ var _b = _a, {
2329
+ duration = 300,
2330
+ delay = 0,
2331
+ children
2332
+ } = _b, delegated = __objRest(_b, [
2333
+ "duration",
2334
+ "delay",
2335
+ "children"
2336
+ ]);
2337
+ return /* @__PURE__ */ import_react25.default.createElement(
2338
+ import_theme_ui23.Box,
2339
+ __spreadProps(__spreadValues({}, delegated), {
2340
+ sx: {
2341
+ animationDuration: duration + "ms",
2342
+ animationDelay: delay + "ms",
2343
+ animationName: fade.toString(),
2344
+ animationFillMode: "backwards",
2345
+ WebkitTransform: "translateZ(0)"
2346
+ }
2347
+ }),
2348
+ children
2349
+ );
2350
+ };
2351
+ var fade_in_default = FadeIn;
2352
+
2353
+ // src/scrollbar.tsx
2354
+ var import_react27 = require("react");
2355
+
2356
+ // src/utils/get-scrollbar-width.ts
2357
+ var getScrollbarWidth = (document2) => {
2358
+ const outer = document2.createElement("div");
2359
+ outer.style.visibility = "hidden";
2360
+ outer.style.width = "100px";
2361
+ document2.body.appendChild(outer);
2362
+ outer.style.overflow = "scroll";
2363
+ const inner = document2.createElement("div");
2364
+ inner.style.width = "100%";
2365
+ outer.appendChild(inner);
2366
+ const delta = outer.offsetWidth - inner.offsetWidth;
2367
+ document2.body.removeChild(outer);
2368
+ return delta;
2369
+ };
2370
+ var get_scrollbar_width_default = getScrollbarWidth;
2371
+
2372
+ // src/scrollbar.tsx
2373
+ var Scrollbar = () => {
2374
+ (0, import_react27.useEffect)(() => {
2375
+ if (typeof document !== "undefined") {
2376
+ const delta = get_scrollbar_width_default(document);
2377
+ if (delta > 0) {
2378
+ document.body.classList.add("custom-scrollbar");
2379
+ document.getElementsByTagName("html")[0].classList.add("custom-scrollbar");
2380
+ }
2381
+ }
2382
+ }, []);
2383
+ return null;
2384
+ };
2385
+ var scrollbar_default = Scrollbar;
2386
+
2387
+ // src/guide.tsx
2388
+ var import_react28 = __toESM(require("react"));
2389
+ var import_theme_ui24 = require("theme-ui");
2390
+ var Guide = ({ color = "muted" }) => {
2391
+ const [display, setDisplay] = (0, import_react28.useState)(false);
2392
+ (0, import_react28.useEffect)(() => {
2393
+ function handler(event) {
2394
+ const { key, metaKey } = event;
2395
+ if (key === ";" && metaKey) {
2396
+ setDisplay((prev) => !prev);
2397
+ }
2398
+ }
2399
+ document.addEventListener("keydown", handler);
2400
+ return () => {
2401
+ document.removeEventListener("keydown", handler);
2402
+ };
2403
+ }, []);
2404
+ return /* @__PURE__ */ import_react28.default.createElement(
2405
+ import_theme_ui24.Box,
2406
+ {
2407
+ sx: {
2408
+ position: "fixed",
2409
+ width: "100%",
2410
+ left: 0,
2411
+ top: 0,
2412
+ zIndex: color === "teal" ? 5e3 : -1,
2413
+ pointerEvents: "none",
2414
+ display: display ? "initial" : "none"
2415
+ }
2416
+ },
2417
+ /* @__PURE__ */ import_react28.default.createElement(import_theme_ui24.Container, null, /* @__PURE__ */ import_react28.default.createElement(import_theme_ui24.Box, { sx: { display: ["none", "none", "initial", "initial"] } }, /* @__PURE__ */ import_react28.default.createElement(
2418
+ GuideColumns,
2419
+ {
2420
+ indices: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
2421
+ color
2422
+ }
2423
+ )), /* @__PURE__ */ import_react28.default.createElement(import_theme_ui24.Box, { sx: { display: ["none", "initial", "none", "none"] } }, /* @__PURE__ */ import_react28.default.createElement(GuideColumns, { indices: [1, 2, 3, 4, 5, 6, 7, 8], color })), /* @__PURE__ */ import_react28.default.createElement(import_theme_ui24.Box, { sx: { display: ["initial", "none", "none", "none"] } }, /* @__PURE__ */ import_react28.default.createElement(GuideColumns, { indices: [1, 2, 3, 4, 5, 6], color })))
2424
+ );
2425
+ };
2426
+ var colorCycle = [
2427
+ "red",
2428
+ "orange",
2429
+ "yellow",
2430
+ "green",
2431
+ "teal",
2432
+ "blue",
2433
+ "purple",
2434
+ "pink"
2435
+ ];
2436
+ function GuideColumns({
2437
+ indices,
2438
+ color
2439
+ }) {
2440
+ const sx3 = {
2441
+ outerGuideColumn: {
2442
+ borderStyle: "solid",
2443
+ borderWidth: "0px",
2444
+ borderLeftWidth: color === "teal" ? "0px" : "1px",
2445
+ borderRightWidth: color === "teal" ? "0px" : "1px",
2446
+ opacity: color === "teal" ? 0.4 : 1
2447
+ },
2448
+ innerGuideColumn: {
2449
+ borderStyle: "solid",
2450
+ borderWidth: "0px",
2451
+ borderLeftWidth: "0px",
2452
+ borderRightWidth: "0px",
2453
+ opacity: color === "teal" ? 0.4 : 1
2454
+ }
2455
+ };
2456
+ return /* @__PURE__ */ import_react28.default.createElement(row_default, null, indices.map((i) => {
2457
+ return /* @__PURE__ */ import_react28.default.createElement(
2458
+ column_default,
2459
+ {
2460
+ key: i,
2461
+ start: [i],
2462
+ width: [1, 1],
2463
+ dl: 0.5,
2464
+ dr: 0.5,
2465
+ sx: __spreadValues({
2466
+ bg: color === "teal" ? "teal" : "transparent",
2467
+ height: "100vh"
2468
+ }, sx3.innerGuideColumn)
2469
+ },
2470
+ /* @__PURE__ */ import_react28.default.createElement(
2471
+ import_theme_ui24.Box,
2472
+ {
2473
+ sx: __spreadValues({
2474
+ mx: ["12px", 3, 3, 4],
2475
+ bg: color === "teal" ? "background" : "transparent",
2476
+ height: "100%",
2477
+ borderLeftColor: color === "rainbow" ? colorCycle[i % 8] : "muted",
2478
+ borderRightColor: color === "rainbow" ? colorCycle[i % 8] : "muted"
2479
+ }, sx3.outerGuideColumn)
2480
+ }
2481
+ )
2482
+ );
2483
+ }));
2484
+ }
2485
+ var guide_default = Guide;
2486
+
2487
+ // src/settings.tsx
2488
+ var import_react29 = __toESM(require("react"));
2489
+ var import_theme_ui25 = require("theme-ui");
2490
+ var Settings = (_a) => {
2491
+ var _b = _a, { value, sx: sx3 } = _b, props = __objRest(_b, ["value", "sx"]);
2492
+ return /* @__PURE__ */ import_react29.default.createElement(
2493
+ import_theme_ui25.IconButton,
2494
+ __spreadValues({
2495
+ sx: __spreadValues({
2496
+ cursor: "pointer",
2497
+ fill: "none",
2498
+ strokeWidth: "2px",
2499
+ stroke: "text",
2500
+ ".paren": {
2501
+ opacity: "0"
2502
+ },
2503
+ "@media (hover: hover) and (pointer: fine)": {
2504
+ "&:hover .paren": {
2505
+ opacity: "1"
2506
+ }
2507
+ }
2508
+ }, sx3),
2509
+ "aria-label": "Toggle Menu"
2510
+ }, props),
2511
+ !value && /* @__PURE__ */ import_react29.default.createElement(
2512
+ "svg",
2513
+ {
2514
+ style: {
2515
+ width: "50px",
2516
+ height: "30px",
2517
+ marginTop: "-3px",
2518
+ flexShrink: 0
2519
+ },
2520
+ xmlns: "http://www.w3.org/2000/svg",
2521
+ viewBox: "0 0 68 36"
2522
+ },
2523
+ /* @__PURE__ */ import_react29.default.createElement("line", { x1: "24", y1: "2.1", x2: "24", y2: "6.1" }),
2524
+ /* @__PURE__ */ import_react29.default.createElement("line", { x1: "24", y1: "24.1", x2: "24", y2: "33.9" }),
2525
+ /* @__PURE__ */ import_react29.default.createElement("line", { x1: "44", y1: "2.1", x2: "44", y2: "12.1" }),
2526
+ /* @__PURE__ */ import_react29.default.createElement("line", { x1: "44", y1: "30.1", x2: "44", y2: "33.9" }),
2527
+ /* @__PURE__ */ import_react29.default.createElement("circle", { cx: "24", cy: "15.1", r: "5" }),
2528
+ /* @__PURE__ */ import_react29.default.createElement("circle", { cx: "44", cy: "21.1", r: "5" }),
2529
+ /* @__PURE__ */ import_react29.default.createElement(
2530
+ "path",
2531
+ {
2532
+ style: { transition: "all 0.2s" },
2533
+ className: "paren",
2534
+ d: "M6.4,1.2c-6.3,10.3-6.3,23.3,0,33.6"
2535
+ }
2536
+ ),
2537
+ /* @__PURE__ */ import_react29.default.createElement(
2538
+ "path",
2539
+ {
2540
+ style: { transition: "all 0.2s" },
2541
+ className: "paren",
2542
+ d: "M61.6,34.8c6.3-10.3,6.3-23.3,0-33.6"
2543
+ }
2544
+ )
2545
+ ),
2546
+ value && /* @__PURE__ */ import_react29.default.createElement(
2547
+ "svg",
2548
+ {
2549
+ style: {
2550
+ width: "50px",
2551
+ height: "30px",
2552
+ marginTop: "-3px",
2553
+ flexShrink: 0
2554
+ },
2555
+ xmlns: "http://www.w3.org/2000/svg",
2556
+ viewBox: "0 0 68 36"
2557
+ },
2558
+ /* @__PURE__ */ import_react29.default.createElement("line", { x1: "50.85", y1: "29.79", x2: "17.15", y2: "6.21" }),
2559
+ /* @__PURE__ */ import_react29.default.createElement("line", { x1: "17.15", y1: "29.79", x2: "50.85", y2: "6.21" }),
2560
+ /* @__PURE__ */ import_react29.default.createElement(
2561
+ "path",
2562
+ {
2563
+ style: { transition: "all 0.2s" },
2564
+ className: "paren",
2565
+ d: "M6.4,1.2c-6.3,10.3-6.3,23.3,0,33.6"
2566
+ }
2567
+ ),
2568
+ /* @__PURE__ */ import_react29.default.createElement(
2569
+ "path",
2570
+ {
2571
+ style: { transition: "all 0.2s" },
2572
+ className: "paren",
2573
+ d: "M61.6,34.8c6.3-10.3,6.3-23.3,0-33.6"
2574
+ }
2575
+ )
2576
+ )
2577
+ );
2578
+ };
2579
+ var settings_default = Settings;
2580
+
2581
+ // src/layout.tsx
2582
+ var Layout = ({
2583
+ title,
2584
+ description,
2585
+ url,
2586
+ card,
2587
+ children,
2588
+ status,
2589
+ nav,
2590
+ settings,
2591
+ footer = true,
2592
+ header = true,
2593
+ metadata = "mouse",
2594
+ links: links2 = "remote",
2595
+ dimmer = "bottom",
2596
+ guide = true,
2597
+ scrollbar = false,
2598
+ fade: fade2 = true,
2599
+ container = true,
2600
+ printable = false
2601
+ }) => {
2602
+ let content = children;
2603
+ if (fade2) {
2604
+ content = /* @__PURE__ */ import_react30.default.createElement(fade_in_default, { duration: 250 }, content);
2605
+ }
2606
+ if (container) {
2607
+ content = /* @__PURE__ */ import_react30.default.createElement(import_theme_ui26.Box, { sx: { mb: [8, 8, 9, 10] } }, /* @__PURE__ */ import_react30.default.createElement(import_theme_ui26.Container, null, content));
2608
+ }
2609
+ const { theme } = (0, import_theme_ui26.useThemeUI)();
2610
+ const hideOnPrint = printable ? {
2611
+ "@media print": {
2612
+ display: "none"
2613
+ }
2614
+ } : {};
2615
+ (0, import_react30.useEffect)(() => {
2616
+ var _a;
2617
+ if (!theme) return;
2618
+ const handler = (e) => {
2619
+ if (e.matches && (settings == null ? void 0 : settings.value) && (settings == null ? void 0 : settings.onClick)) {
2620
+ settings.onClick();
2621
+ }
2622
+ };
2623
+ const query = window.matchMedia(
2624
+ `(min-width: ${((_a = theme == null ? void 0 : theme.breakpoints) == null ? void 0 : _a[1]) || "64em"})`
2625
+ );
2626
+ query.onchange = handler;
2627
+ return () => {
2628
+ query.onchange = null;
2629
+ };
2630
+ }, [theme == null ? void 0 : theme.breakpoints, settings == null ? void 0 : settings.value, settings == null ? void 0 : settings.onClick]);
2631
+ const menuItems = [
2632
+ /* @__PURE__ */ import_react30.default.createElement(
2633
+ dimmer_default,
2634
+ {
2635
+ key: "dimmer",
2636
+ sx: {
2637
+ color: "primary",
2638
+ mt: "-2px",
2639
+ display: [
2640
+ "block",
2641
+ "block",
2642
+ dimmer === "top" ? "block" : "none",
2643
+ dimmer === "top" ? "block" : "none"
2644
+ ]
2645
+ }
2646
+ }
2647
+ )
2648
+ ];
2649
+ if (settings) {
2650
+ menuItems.push(
2651
+ /* @__PURE__ */ import_react30.default.createElement(
2652
+ settings_default,
2653
+ __spreadValues({
2654
+ key: "settings",
2655
+ sx: { mr: ["2px"], display: ["inherit", "inherit", "none", "none"] }
2656
+ }, settings)
2657
+ )
2658
+ );
2659
+ }
2660
+ return /* @__PURE__ */ import_react30.default.createElement(import_react30.default.Fragment, null, guide && /* @__PURE__ */ import_react30.default.createElement(guide_default, { color: typeof guide === "string" ? guide : void 0 }), scrollbar && /* @__PURE__ */ import_react30.default.createElement(scrollbar_default, null), /* @__PURE__ */ import_react30.default.createElement(meta_default, { card, description, title, url }), /* @__PURE__ */ import_react30.default.createElement(
2661
+ import_theme_ui26.Flex,
2662
+ {
2663
+ sx: {
2664
+ flexDirection: "column",
2665
+ minHeight: "100vh"
2666
+ }
2667
+ },
2668
+ header && /* @__PURE__ */ import_react30.default.createElement(
2669
+ import_theme_ui26.Box,
2670
+ {
2671
+ as: "header",
2672
+ sx: __spreadValues({
2673
+ width: "100%",
2674
+ borderStyle: "solid",
2675
+ borderColor: "muted",
2676
+ borderWidth: "0px",
2677
+ borderBottomWidth: "1px",
2678
+ position: "sticky",
2679
+ top: 0,
2680
+ bg: "background",
2681
+ height: "56px",
2682
+ zIndex: 2e3
2683
+ }, hideOnPrint)
2684
+ },
2685
+ /* @__PURE__ */ import_react30.default.createElement(import_theme_ui26.Container, null, /* @__PURE__ */ import_react30.default.createElement(
2686
+ header_default,
2687
+ {
2688
+ mode: links2,
2689
+ status,
2690
+ nav,
2691
+ menuItems
2692
+ }
2693
+ ))
2694
+ ),
2695
+ /* @__PURE__ */ import_react30.default.createElement(
2696
+ import_theme_ui26.Box,
2697
+ {
2698
+ sx: {
2699
+ width: "100%",
2700
+ flex: "1 1 auto"
2701
+ }
2702
+ },
2703
+ content
2704
+ ),
2705
+ footer && /* @__PURE__ */ import_react30.default.createElement(
2706
+ import_theme_ui26.Box,
2707
+ {
2708
+ as: "footer",
2709
+ sx: __spreadValues({
2710
+ width: "100%",
2711
+ borderStyle: "solid",
2712
+ borderColor: "muted",
2713
+ borderWidth: "0px",
2714
+ borderTopWidth: "1px"
2715
+ }, hideOnPrint)
2716
+ },
2717
+ /* @__PURE__ */ import_react30.default.createElement(import_theme_ui26.Container, null, /* @__PURE__ */ import_react30.default.createElement(footer_default, null))
2718
+ ),
2719
+ dimmer === "bottom" && /* @__PURE__ */ import_react30.default.createElement(
2720
+ import_theme_ui26.Box,
2721
+ {
2722
+ sx: {
2723
+ display: ["none", "none", "initial", "initial"],
2724
+ position: ["fixed"],
2725
+ right: [13],
2726
+ bottom: [17, 17, 15, 15]
2727
+ }
2728
+ },
2729
+ /* @__PURE__ */ import_react30.default.createElement(dimmer_default, null)
2730
+ ),
2731
+ metadata && /* @__PURE__ */ import_react30.default.createElement(metadata_default, { mode: typeof metadata === "string" ? metadata : "mouse" })
2732
+ ));
2733
+ };
2734
+ var layout_default = Layout;
2735
+
2736
+ // src/custom-404.tsx
2737
+ var Custom404 = () => {
2738
+ return /* @__PURE__ */ import_react31.default.createElement(
2739
+ layout_default,
2740
+ {
2741
+ footer: false,
2742
+ title: "404 \u2013 CarbonPlan",
2743
+ description: "Sorry but we can't seem to find the page you are looking for."
2744
+ },
2745
+ /* @__PURE__ */ import_react31.default.createElement(row_default, { sx: { mb: [5, 0, 0], pt: [0, 0, 6] } }, /* @__PURE__ */ import_react31.default.createElement(column_default, { start: [1, 1, 3, 3], width: [6, 4, 4, 4] }, /* @__PURE__ */ import_react31.default.createElement(import_theme_ui27.Box, { as: "h1", variant: "styles.h1" }, "Oops!"), /* @__PURE__ */ import_react31.default.createElement(
2746
+ import_theme_ui27.Box,
2747
+ {
2748
+ sx: {
2749
+ fontSize: [4, 4, 4, 5],
2750
+ lineHeight: "h3",
2751
+ mt: [3, 4, 4],
2752
+ mb: [2, 3, 3],
2753
+ maxWidth: ["90%", "90%", "400px"]
2754
+ }
2755
+ },
2756
+ "Sorry but we can't seem to find the page you are looking for."
2757
+ ), /* @__PURE__ */ import_react31.default.createElement(
2758
+ import_theme_ui27.Box,
2759
+ {
2760
+ sx: {
2761
+ color: "secondary",
2762
+ fontFamily: "mono",
2763
+ letterSpacing: "mono",
2764
+ fontSize: [2, 2, 2, 3],
2765
+ mt: [4, 5, 5]
2766
+ }
2767
+ },
2768
+ "ERROR CODE 404"
2769
+ )), /* @__PURE__ */ import_react31.default.createElement(column_default, { start: [2, 5, 7, 7], width: [4, 4, 4, 4] }, /* @__PURE__ */ import_react31.default.createElement(
2770
+ import_theme_ui27.Box,
2771
+ {
2772
+ sx: {
2773
+ width: ["100%"],
2774
+ mt: [2, 4, 4, 5],
2775
+ fill: "primary"
2776
+ }
2777
+ },
2778
+ /* @__PURE__ */ import_react31.default.createElement(import_emoji.PoopSad, { sx: { width: "100%", height: "auto" } })
2779
+ )))
2780
+ );
2781
+ };
2782
+ var custom_404_default = Custom404;
2783
+
2784
+ // src/expander.tsx
2785
+ var import_react32 = __toESM(require("react"));
2786
+ var import_theme_ui28 = require("theme-ui");
2787
+ var Expander = ({ value, id, onClick, sx: sx3 }) => {
2788
+ return /* @__PURE__ */ import_react32.default.createElement(
2789
+ import_theme_ui28.IconButton,
2790
+ {
2791
+ onClick,
2792
+ id,
2793
+ role: "checkbox",
2794
+ "aria-checked": value,
2795
+ "aria-label": "Expand",
2796
+ sx: __spreadValues({
2797
+ display: "inline-block",
2798
+ width: 24,
2799
+ height: 24,
2800
+ p: [1],
2801
+ cursor: "pointer",
2802
+ fill: "secondary",
2803
+ stroke: "secondary",
2804
+ "@media (hover: hover) and (pointer: fine)": {
2805
+ "&:hover": {
2806
+ fill: "primary",
2807
+ stroke: "primary"
2808
+ }
2809
+ }
2810
+ }, sx3)
2811
+ },
2812
+ /* @__PURE__ */ import_react32.default.createElement("svg", { viewBox: "0 0 16 16" }, /* @__PURE__ */ import_react32.default.createElement(
2813
+ "path",
2814
+ {
2815
+ d: "M8,0 V16 M0,8 H16",
2816
+ style: {
2817
+ strokeWidth: 2,
2818
+ transition: "0.25s all",
2819
+ transformOrigin: "8px 8px",
2820
+ transform: value ? "rotate(45deg)" : "rotate(0deg)"
2821
+ }
2822
+ }
2823
+ ))
2824
+ );
2825
+ };
2826
+ var expander_default = Expander;
2827
+
2828
+ // src/figure.tsx
2829
+ var import_react33 = __toESM(require("react"));
2830
+ var import_theme_ui29 = require("theme-ui");
2831
+ var Figure = ({ as = "figure", children, sx: sx3 }) => {
2832
+ const childrenArray = import_react33.default.Children.toArray(children);
2833
+ const captionElement = childrenArray.find((child) => {
2834
+ if (!import_react33.default.isValidElement(child)) return false;
2835
+ const type = child.type;
2836
+ return typeof type !== "string" && "displayName" in type && (type.displayName === "FigureCaption" || type.displayName === "TableCaption");
2837
+ });
2838
+ const captionProps = import_react33.default.isValidElement(captionElement) ? captionElement.props : void 0;
2839
+ const captionType = import_react33.default.isValidElement(captionElement) ? captionElement.type : void 0;
2840
+ const elementNumber = captionProps == null ? void 0 : captionProps.number;
2841
+ const elementType = typeof captionType !== "string" && captionType && "displayName" in captionType && captionType.displayName === "TableCaption" ? "table" : "figure";
2842
+ const id = elementNumber ? `${elementType}-${elementNumber}` : void 0;
2843
+ return /* @__PURE__ */ import_react33.default.createElement(
2844
+ import_theme_ui29.Box,
2845
+ {
2846
+ as,
2847
+ id,
2848
+ sx: __spreadValues({
2849
+ my: [6, 6, 6, 7],
2850
+ scrollMarginTop: "60px",
2851
+ // account for header height
2852
+ "@media print": {
2853
+ breakInside: "avoid"
2854
+ }
2855
+ }, sx3)
2856
+ },
2857
+ /* @__PURE__ */ import_react33.default.createElement(group_default, { spacing: [4, 4, 4, 5] }, children)
2858
+ );
2859
+ };
2860
+ var figure_default = Figure;
2861
+
2862
+ // src/figure-caption.tsx
2863
+ var import_react34 = __toESM(require("react"));
2864
+ var FigureCaption = ({
2865
+ as = "figcaption",
2866
+ number,
2867
+ children
2868
+ }) => {
2869
+ return /* @__PURE__ */ import_react34.default.createElement(caption_default, { as, number, label: "figure" }, children);
2870
+ };
2871
+ FigureCaption.displayName = "FigureCaption";
2872
+ var figure_caption_default = FigureCaption;
2873
+
2874
+ // src/filter.tsx
2875
+ var import_react36 = __toESM(require("react"));
2876
+ var import_theme_ui31 = require("theme-ui");
2877
+
2878
+ // src/tag.tsx
2879
+ var import_react35 = __toESM(require("react"));
2880
+ var import_theme_ui30 = require("theme-ui");
2881
+ var Tag = (_a) => {
2882
+ var _b = _a, { label, value, sx: sx3, children } = _b, props = __objRest(_b, ["label", "value", "sx", "children"]);
2883
+ const color = get_sx_color_default(sx3);
2884
+ const isClickable = props && (props.onClick || props.onDoubleClick);
2885
+ return /* @__PURE__ */ import_react35.default.createElement(
2886
+ import_theme_ui30.Box,
2887
+ __spreadValues({
2888
+ as: isClickable ? "button" : "span",
2889
+ role: "checkbox",
2890
+ "aria-checked": value,
2891
+ "aria-label": label,
2892
+ sx: __spreadValues({
2893
+ display: "inline-block",
2894
+ fontSize: [1, 1, 1, 2],
2895
+ fontFamily: "mono",
2896
+ letterSpacing: "mono",
2897
+ cursor: isClickable ? "pointer" : "inherit",
2898
+ color,
2899
+ backgroundColor: "transparent",
2900
+ borderStyle: "solid",
2901
+ borderColor: color,
2902
+ lineHeight: "body",
2903
+ borderWidth: "0px",
2904
+ borderBottomWidth: "1px",
2905
+ textTransform: "uppercase",
2906
+ userSelect: "none",
2907
+ transition: "opacity 0.05s",
2908
+ pt: ["1px"],
2909
+ pb: ["2px"],
2910
+ px: [0],
2911
+ m: [0],
2912
+ opacity: value == null || value ? 1 : color === "primary" ? 0.24 : 0.33
2913
+ }, sx3)
2914
+ }, props),
2915
+ children
2916
+ );
2917
+ };
2918
+ var tag_default = Tag;
2919
+
2920
+ // src/filter.tsx
2921
+ var sx2 = {
2922
+ label: {
2923
+ fontFamily: "mono",
2924
+ letterSpacing: "mono",
2925
+ fontSize: [1, 1, 1, 2],
2926
+ color: "secondary",
2927
+ userSelect: "none",
2928
+ textTransform: "uppercase"
2929
+ }
2930
+ };
2931
+ var duplicateOptions = (options, defaultValue, overrides = {}) => {
2932
+ let result = __spreadValues({}, options);
2933
+ Object.keys(options).forEach((key) => {
2934
+ result[key] = !!overrides[key] || defaultValue;
2935
+ });
2936
+ return result;
2937
+ };
2938
+ var isAll = (option) => {
2939
+ return Object.keys(option).filter((d) => option[d]).length === Object.keys(option).length;
2940
+ };
2941
+ var updateValues = ({
2942
+ values,
2943
+ multiSelect,
2944
+ setValues,
2945
+ value
2946
+ }) => {
2947
+ const isAllAlreadySelected = isAll(values);
2948
+ let updatedToggle;
2949
+ if (value === "all") {
2950
+ if (!isAllAlreadySelected) {
2951
+ updatedToggle = duplicateOptions(values, true);
2952
+ } else if (multiSelect) {
2953
+ updatedToggle = duplicateOptions(values, false);
2954
+ }
2955
+ } else if (multiSelect) {
2956
+ updatedToggle = __spreadProps(__spreadValues({}, values), { [value]: !values[value] });
2957
+ } else {
2958
+ updatedToggle = duplicateOptions(values, false, {
2959
+ [value]: true
2960
+ });
2961
+ }
2962
+ if (updatedToggle) {
2963
+ setValues(updatedToggle);
2964
+ }
2965
+ };
2966
+ var Filter = (_a) => {
2967
+ var _b = _a, {
2968
+ values,
2969
+ setValues,
2970
+ label,
2971
+ colors,
2972
+ order,
2973
+ labels,
2974
+ showAll = false,
2975
+ multiSelect = false
2976
+ } = _b, props = __objRest(_b, [
2977
+ "values",
2978
+ "setValues",
2979
+ "label",
2980
+ "colors",
2981
+ "order",
2982
+ "labels",
2983
+ "showAll",
2984
+ "multiSelect"
2985
+ ]);
2986
+ const keys = (0, import_react36.useMemo)(() => {
2987
+ if (order) {
2988
+ return order;
2989
+ } else {
2990
+ return Object.keys(values);
2991
+ }
2992
+ }, [order, ...Object.keys(values).sort()]);
2993
+ return /* @__PURE__ */ import_react36.default.createElement(import_theme_ui31.Box, __spreadValues({}, props), label && /* @__PURE__ */ import_react36.default.createElement(import_theme_ui31.Box, { sx: sx2.label }, label), /* @__PURE__ */ import_react36.default.createElement(import_theme_ui31.Box, { sx: { mt: label ? [3] : 0 } }, showAll && /* @__PURE__ */ import_react36.default.createElement(
2994
+ tag_default,
2995
+ {
2996
+ label: "all",
2997
+ onClick: () => updateValues({
2998
+ values,
2999
+ multiSelect,
3000
+ setValues,
3001
+ value: "all"
3002
+ }),
3003
+ value: isAll(values),
3004
+ sx: { mr: [2] }
3005
+ },
3006
+ "All"
3007
+ ), keys.map((d, i) => /* @__PURE__ */ import_react36.default.createElement(
3008
+ tag_default,
3009
+ {
3010
+ label: String(d),
3011
+ onClick: () => updateValues({
3012
+ values,
3013
+ multiSelect,
3014
+ setValues,
3015
+ value: d
3016
+ }),
3017
+ onDoubleClick: () => updateValues({
3018
+ values,
3019
+ multiSelect: false,
3020
+ setValues,
3021
+ value: d
3022
+ }),
3023
+ key: i,
3024
+ value: values[d],
3025
+ sx: {
3026
+ width: "max-content",
3027
+ color: colors ? colors[d] : "primary",
3028
+ mr: [2],
3029
+ mb: [1]
3030
+ }
3031
+ },
3032
+ labels ? labels[d] : String(d)
3033
+ ))));
3034
+ };
3035
+ var filter_default = Filter;
3036
+
3037
+ // src/heading.tsx
3038
+ var import_react38 = __toESM(require("react"));
3039
+ var import_theme_ui33 = require("theme-ui");
3040
+
3041
+ // src/sidenote.tsx
3042
+ var import_react37 = __toESM(require("react"));
3043
+ var import_theme_ui32 = require("theme-ui");
3044
+ var Sidenote = ({ children, variant = "h1" }) => {
3045
+ let mt;
3046
+ if (variant === "h1") mt = [4, "27px", "42px", "54px"];
3047
+ if (variant === "h2") mt = [4, 4, "14px", "25px"];
3048
+ return /* @__PURE__ */ import_react37.default.createElement(import_react37.default.Fragment, null, /* @__PURE__ */ import_react37.default.createElement(column_default, { start: [1, 4, 8, 8], width: [1, 1, 1, 1] }, /* @__PURE__ */ import_react37.default.createElement(
3049
+ import_theme_ui32.Box,
3050
+ {
3051
+ sx: {
3052
+ mt,
3053
+ fontFamily: "faux",
3054
+ letterSpacing: "faux",
3055
+ fontSize: [2, 2, 2, 3],
3056
+ textAlign: "right"
3057
+ }
3058
+ },
3059
+ "/"
3060
+ )), /* @__PURE__ */ import_react37.default.createElement(column_default, { start: [2, 5, 9, 9], width: [3, 3, 2, 2] }, /* @__PURE__ */ import_react37.default.createElement(
3061
+ import_theme_ui32.Box,
3062
+ {
3063
+ sx: {
3064
+ mt,
3065
+ fontFamily: "faux",
3066
+ letterSpacing: "faux",
3067
+ fontSize: [2, 2, 2, 3],
3068
+ height: ["100%", "0px", "0px", "0px"]
3069
+ }
3070
+ },
3071
+ children
3072
+ )));
3073
+ };
3074
+ var sidenote_default = Sidenote;
3075
+
3076
+ // src/heading.tsx
3077
+ var Heading = ({
3078
+ children,
3079
+ sidenote,
3080
+ variant = "h1",
3081
+ description,
3082
+ descriptionStart = [1, 3, 5, 5],
3083
+ descriptionWidth = [5, 5, 5, 4],
3084
+ sx: sx3
3085
+ }) => {
3086
+ let titleWidth = [6, 6, 6, 6];
3087
+ if (description) {
3088
+ titleWidth[1] = descriptionStart[1] - 1;
3089
+ titleWidth[2] = descriptionStart[2] - 2;
3090
+ titleWidth[3] = descriptionStart[3] - 2;
3091
+ }
3092
+ if (!["h1", "h2"].includes(variant)) {
3093
+ throw new Error(`variant must be 'h1' or 'h2' but got '${variant}'`);
3094
+ }
3095
+ return /* @__PURE__ */ import_react38.default.createElement(row_default, { sx: __spreadValues({ mt: [5, 6, 7, 8], mb: [5, 6, 7, 8] }, sx3) }, /* @__PURE__ */ import_react38.default.createElement(column_default, { start: [1, 1, 2, 2], width: titleWidth }, variant === "h1" && /* @__PURE__ */ import_react38.default.createElement(import_theme_ui33.Box, { as: "h1", variant: "styles.h1", sx: { my: [0, 0, 0, 0] } }, children), variant === "h2" && /* @__PURE__ */ import_react38.default.createElement(import_theme_ui33.Box, { as: "h2", variant: "styles.h2", sx: { my: [0, 0, 0, 0] } }, children)), sidenote && /* @__PURE__ */ import_react38.default.createElement(sidenote_default, { variant }, sidenote), description && /* @__PURE__ */ import_react38.default.createElement(column_default, { start: descriptionStart, width: descriptionWidth }, /* @__PURE__ */ import_react38.default.createElement(
3096
+ import_theme_ui33.Box,
3097
+ {
3098
+ sx: {
3099
+ mt: [4, "5px", "20px", "31px"],
3100
+ fontSize: [2, 2, 2, 3]
3101
+ }
3102
+ },
3103
+ description
3104
+ )));
3105
+ };
3106
+ var heading_default = Heading;
3107
+
3108
+ // src/input.tsx
3109
+ var import_react39 = __toESM(require("react"));
3110
+ var import_theme_ui34 = require("theme-ui");
3111
+ var Input = (_a, ref) => {
3112
+ var _b = _a, { size = "sm", inverted, sx: sx3 } = _b, props = __objRest(_b, ["size", "inverted", "sx"]);
3113
+ const defaultColor = inverted ? "secondary" : "primary";
3114
+ const styles3 = __spreadValues(__spreadValues({
3115
+ color: defaultColor,
3116
+ borderColor: "secondary",
3117
+ borderStyle: "solid",
3118
+ borderWidth: "0px",
3119
+ borderBottomWidth: "1px",
3120
+ borderRadius: "0px",
3121
+ transition: "border 0.15s",
3122
+ width: "calc(min(15ch, 100%))",
3123
+ p: [0],
3124
+ py: ["2px"],
3125
+ "input::-webkit-outer-spin-button": {
3126
+ WebkitAppearance: "none",
3127
+ margin: 0
3128
+ },
3129
+ "input::-webkit-inner-spin-button": {
3130
+ WebkitAppearance: "none",
3131
+ margin: 0
3132
+ },
3133
+ ":focus": {
3134
+ borderColor: "primary"
3135
+ },
3136
+ ":focus-visible": {
3137
+ outline: "none !important",
3138
+ background: "none !important"
3139
+ }
3140
+ }, get_size_styles_default(size)), sx3);
3141
+ return /* @__PURE__ */ import_react39.default.createElement(import_theme_ui34.Input, __spreadProps(__spreadValues({}, props), { ref, sx: styles3 }));
3142
+ };
3143
+ var input_default = (0, import_react39.forwardRef)(Input);
3144
+
3145
+ // src/link-group.tsx
3146
+ var import_react40 = __toESM(require("react"));
3147
+ var import_theme_ui35 = require("theme-ui");
3148
+ var import_icons4 = require("@carbonplan/icons");
3149
+ var LinkGroup = ({
3150
+ members,
3151
+ color,
3152
+ inverted,
3153
+ size = "xs",
3154
+ rowGap = [2, 2, 2, 3],
3155
+ columnGap = [3, 3, 3, 4],
3156
+ direction = "horizontal",
3157
+ sx: sx3
3158
+ }) => {
3159
+ return /* @__PURE__ */ import_react40.default.createElement(
3160
+ import_theme_ui35.Flex,
3161
+ {
3162
+ sx: __spreadValues({
3163
+ flexDirection: direction === "horizontal" ? "row" : "column",
3164
+ rowGap,
3165
+ columnGap,
3166
+ flexWrap: "wrap"
3167
+ }, sx3)
3168
+ },
3169
+ members.map((d, i) => {
3170
+ return /* @__PURE__ */ import_react40.default.createElement(
3171
+ button_default,
3172
+ {
3173
+ key: i,
3174
+ href: d.href,
3175
+ size,
3176
+ sx: { color },
3177
+ inverted,
3178
+ suffix: /* @__PURE__ */ import_react40.default.createElement(import_icons4.RotatingArrow, null)
3179
+ },
3180
+ d.label
3181
+ );
3182
+ })
3183
+ );
3184
+ };
3185
+ var link_group_default = LinkGroup;
3186
+
3187
+ // src/select.tsx
3188
+ var import_react41 = __toESM(require("react"));
3189
+ var import_theme_ui36 = require("theme-ui");
3190
+ var import_icons5 = require("@carbonplan/icons");
3191
+ var Select = (_a) => {
3192
+ var _b = _a, {
3193
+ children,
3194
+ size = "sm",
3195
+ sx: sx3,
3196
+ sxSelect,
3197
+ onChange
3198
+ } = _b, props = __objRest(_b, [
3199
+ "children",
3200
+ "size",
3201
+ "sx",
3202
+ "sxSelect",
3203
+ "onChange"
3204
+ ]);
3205
+ const color = get_sx_color_default(sx3);
3206
+ const sizeStyles = get_size_styles_default(size);
3207
+ const ref = (0, import_react41.useRef)(null);
3208
+ if (!["xs", "sm", "md"].includes(size)) {
3209
+ throw new Error("Size must be xs, sm, or md");
3210
+ }
3211
+ const sizeConfig = {
3212
+ xs: {
3213
+ height: [14, 14, 14, 16],
3214
+ width: [14, 14, 14, 14],
3215
+ top: ["1px"],
3216
+ ml: ["-14px", "-14px", "-14px", "-16px"]
3217
+ },
3218
+ sm: {
3219
+ height: [15, 15, 15, 20],
3220
+ width: [15, 15, 15, 20],
3221
+ top: ["1px"],
3222
+ ml: ["-16px", "-16px", "-16px", "-20px"]
3223
+ },
3224
+ md: {
3225
+ height: [20, 20, 20, 20],
3226
+ width: [20, 20, 20, 20],
3227
+ top: ["2px"],
3228
+ ml: ["-20px", "-20px", "-20px", "-20px"]
3229
+ }
3230
+ };
3231
+ const { height, width, top, ml } = sizeConfig[size];
3232
+ const pr = width.map((d) => d + 12);
3233
+ return /* @__PURE__ */ import_react41.default.createElement(
3234
+ import_theme_ui36.Box,
3235
+ {
3236
+ sx: __spreadValues({
3237
+ display: "inline-block"
3238
+ }, sx3)
3239
+ },
3240
+ /* @__PURE__ */ import_react41.default.createElement(
3241
+ import_theme_ui36.Box,
3242
+ __spreadValues({
3243
+ as: "select",
3244
+ ref,
3245
+ onChange: (e) => {
3246
+ var _a2;
3247
+ (_a2 = ref.current) == null ? void 0 : _a2.blur();
3248
+ if (onChange)
3249
+ onChange(e);
3250
+ },
3251
+ sx: __spreadValues(__spreadProps(__spreadValues({}, sizeStyles), {
3252
+ lineHeight: "normal",
3253
+ cursor: "pointer",
3254
+ WebkitAppearance: "none",
3255
+ MozAppearance: "none",
3256
+ pb: ["5px"],
3257
+ bg: "background",
3258
+ pr,
3259
+ border: "none",
3260
+ borderBottomStyle: "solid",
3261
+ borderBottomWidth: "1px",
3262
+ borderBottomColor: "primary",
3263
+ borderRadius: "0px",
3264
+ width: "fit-content",
3265
+ color,
3266
+ userSelect: "none",
3267
+ "@media (hover: none) and (pointer: coarse)": {
3268
+ "&:focus-visible": {
3269
+ outline: "none !important",
3270
+ background: "transparent !important"
3271
+ }
3272
+ }
3273
+ }), sxSelect)
3274
+ }, props),
3275
+ children
3276
+ ),
3277
+ /* @__PURE__ */ import_react41.default.createElement(
3278
+ import_icons5.Arrow,
3279
+ {
3280
+ sx: {
3281
+ width,
3282
+ height,
3283
+ position: "relative",
3284
+ ml,
3285
+ top,
3286
+ fill: "secondary",
3287
+ transform: "rotate(135deg)",
3288
+ pointerEvents: "none"
3289
+ }
3290
+ }
3291
+ )
3292
+ );
3293
+ };
3294
+ var select_default = Select;
3295
+
3296
+ // src/slider.tsx
3297
+ var import_react42 = __toESM(require("react"));
3298
+ var import_theme_ui37 = require("theme-ui");
3299
+ var Slider = (_a, ref) => {
3300
+ var _b = _a, { sx: sx3 } = _b, props = __objRest(_b, ["sx"]);
3301
+ const color = get_sx_color_default(sx3);
3302
+ const {
3303
+ theme: { rawColors: colors }
3304
+ } = (0, import_theme_ui37.useThemeUI)();
3305
+ return /* @__PURE__ */ import_react42.default.createElement(
3306
+ import_theme_ui37.Slider,
3307
+ __spreadValues({
3308
+ ref,
3309
+ sx: __spreadValues({
3310
+ "&::-webkit-slider-thumb": {
3311
+ height: [22, 18, 16],
3312
+ width: [22, 18, 16],
3313
+ boxShadow: `0 0 0 0px ${colors == null ? void 0 : colors.secondary}`,
3314
+ transition: "box-shadow .15s ease"
3315
+ },
3316
+ "&::-moz-range-thumb": {
3317
+ height: [22, 18, 16],
3318
+ width: [22, 18, 16],
3319
+ boxShadow: `0 0 0 0px ${colors == null ? void 0 : colors.secondary}`,
3320
+ transition: "box-shadow .15s ease"
3321
+ },
3322
+ ":focus-visible": {
3323
+ outline: "none !important",
3324
+ background: `${colors == null ? void 0 : colors.secondary} !important`
3325
+ },
3326
+ ":focus": {
3327
+ color,
3328
+ "&::-webkit-slider-thumb": {
3329
+ boxShadow: `0 0 0 4px ${colors == null ? void 0 : colors.secondary}`
3330
+ },
3331
+ "&::-moz-range-thumb": {
3332
+ boxShadow: `0 0 0 4px ${colors == null ? void 0 : colors.secondary}`
3333
+ }
3334
+ },
3335
+ color
3336
+ }, sx3)
3337
+ }, props)
3338
+ );
3339
+ };
3340
+ var slider_default = (0, import_react42.forwardRef)(Slider);
3341
+
3342
+ // src/table.tsx
3343
+ var import_react43 = __toESM(require("react"));
3344
+ var import_theme_ui38 = require("theme-ui");
3345
+ var styles2 = {
3346
+ reset: {
3347
+ verticalAlign: "baseline",
3348
+ border: 0,
3349
+ outline: 0,
3350
+ margin: 0,
3351
+ padding: 0
3352
+ },
3353
+ row: {
3354
+ borderStyle: "solid",
3355
+ borderWidth: "0px",
3356
+ borderTopWidth: "1px",
3357
+ borderColor: "muted",
3358
+ pt: [3, 3, 3, "20px"],
3359
+ pb: [3, 3, 3, "20px"],
3360
+ mb: ["2px"]
3361
+ },
3362
+ header: {
3363
+ display: "block",
3364
+ textTransform: "uppercase",
3365
+ letterSpacing: "smallcaps",
3366
+ fontFamily: "heading",
3367
+ fontSize: [2, 2, 2, 3]
3368
+ },
3369
+ index: {
3370
+ display: "block",
3371
+ textTransform: "uppercase",
3372
+ letterSpacing: "smallcaps",
3373
+ fontFamily: "heading",
3374
+ fontSize: [2, 2, 2, 3]
3375
+ },
3376
+ entry: {
3377
+ display: "block",
3378
+ fontSize: [2, 2, 2, 3],
3379
+ fontFamily: "faux",
3380
+ letterSpacing: "faux",
3381
+ mb: ["1px"],
3382
+ mt: [2, 0, 0, 0]
3383
+ }
3384
+ };
3385
+ var Table = ({
3386
+ data,
3387
+ sx: sx3,
3388
+ color,
3389
+ header,
3390
+ columns,
3391
+ start,
3392
+ width,
3393
+ index = true,
3394
+ borderBottom = true,
3395
+ borderTop = true
3396
+ }) => {
3397
+ if (!start || !columns || !width) {
3398
+ throw new Error("Must provide columns, start, and width");
3399
+ }
3400
+ return /* @__PURE__ */ import_react43.default.createElement(import_theme_ui38.Box, { as: "table", sx: __spreadValues({ display: "block" }, sx3) }, /* @__PURE__ */ import_react43.default.createElement(import_theme_ui38.Box, { as: "tbody", sx: { display: "block" } }, header && /* @__PURE__ */ import_react43.default.createElement(
3401
+ row_default,
3402
+ {
3403
+ as: "tr",
3404
+ sx: __spreadProps(__spreadValues(__spreadValues(__spreadValues({}, styles2.reset), styles2.header), styles2.row), {
3405
+ color,
3406
+ borderTopWidth: !borderTop ? "0px" : "1px"
3407
+ })
3408
+ },
3409
+ /* @__PURE__ */ import_react43.default.createElement(column_default, { as: "td", start: [1], width: columns, sx: styles2.index }, header)
3410
+ ), data.map((row, i) => {
3411
+ return /* @__PURE__ */ import_react43.default.createElement(
3412
+ row_default,
3413
+ {
3414
+ as: "tr",
3415
+ columns,
3416
+ key: i,
3417
+ sx: __spreadProps(__spreadValues(__spreadValues({}, styles2.reset), styles2.row), {
3418
+ pb: borderBottom && i === data.length - 1 ? ["18px", "18px", "18px", "22px"] : [3, 3, 3, "20px"],
3419
+ borderBottomWidth: borderBottom && i === data.length - 1 ? "1px" : "0px",
3420
+ borderTopWidth: !borderTop && i === 0 && !header ? "0px" : "1px"
3421
+ })
3422
+ },
3423
+ row.map((column, j) => {
3424
+ return /* @__PURE__ */ import_react43.default.createElement(
3425
+ column_default,
3426
+ {
3427
+ as: "td",
3428
+ key: j,
3429
+ start: start[j],
3430
+ width: width[j],
3431
+ sx: j === 0 && index ? __spreadValues(__spreadValues({}, styles2.reset), styles2.index) : __spreadValues(__spreadValues({}, styles2.reset), styles2.entry)
3432
+ },
3433
+ column
3434
+ );
3435
+ })
3436
+ );
3437
+ })));
3438
+ };
3439
+ var table_default = Table;
3440
+
3441
+ // src/table-caption.tsx
3442
+ var import_react44 = __toESM(require("react"));
3443
+ var TableCaption = ({
3444
+ as = "figcaption",
3445
+ number,
3446
+ children
3447
+ }) => {
3448
+ return /* @__PURE__ */ import_react44.default.createElement(caption_default, { as, number, label: "table" }, children);
3449
+ };
3450
+ TableCaption.displayName = "TableCaption";
3451
+ var table_caption_default = TableCaption;
3452
+
3453
+ // src/toggle.tsx
3454
+ var import_react45 = __toESM(require("react"));
3455
+ var import_theme_ui39 = require("theme-ui");
3456
+ var import_color2 = require("@theme-ui/color");
3457
+ var Toggle = (_a, ref) => {
3458
+ var _b = _a, { value, onClick, disabled, sx: sx3 } = _b, props = __objRest(_b, ["value", "onClick", "disabled", "sx"]);
3459
+ const color = get_sx_color_default(sx3);
3460
+ const active = disabled ? false : value;
3461
+ return /* @__PURE__ */ import_react45.default.createElement(
3462
+ import_theme_ui39.Box,
3463
+ __spreadValues({
3464
+ ref,
3465
+ as: "button",
3466
+ onClick,
3467
+ role: "checkbox",
3468
+ "aria-checked": active,
3469
+ "aria-label": "Toggle",
3470
+ sx: __spreadValues({
3471
+ border: "none",
3472
+ background: "none",
3473
+ cursor: disabled ? "default" : "pointer",
3474
+ p: [0],
3475
+ m: [0],
3476
+ display: "inline-block"
3477
+ }, sx3)
3478
+ }, props),
3479
+ /* @__PURE__ */ import_react45.default.createElement(
3480
+ import_theme_ui39.Box,
3481
+ {
3482
+ sx: {
3483
+ width: "50px",
3484
+ height: "20px",
3485
+ borderRadius: "20px",
3486
+ backgroundColor: active ? (0, import_color2.transparentize)(color, color === "primary" ? 0.5 : 0.45) : "muted",
3487
+ position: "relative",
3488
+ transition: "0.15s",
3489
+ display: "inline-block"
3490
+ }
3491
+ },
3492
+ /* @__PURE__ */ import_react45.default.createElement(
3493
+ import_theme_ui39.Box,
3494
+ {
3495
+ sx: {
3496
+ width: "14px",
3497
+ height: "14px",
3498
+ borderRadius: "7px",
3499
+ position: "absolute",
3500
+ left: active ? "32px" : "4px",
3501
+ top: "3px",
3502
+ backgroundColor: active ? color : "secondary",
3503
+ transition: "0.15s"
3504
+ }
3505
+ }
3506
+ )
3507
+ )
3508
+ );
3509
+ };
3510
+ var toggle_default = (0, import_react45.forwardRef)(Toggle);
3511
+
3512
+ // src/tray.tsx
3513
+ var import_react46 = __toESM(require("react"));
3514
+ var import_theme_ui40 = require("theme-ui");
3515
+ var Tray = ({ expanded, sx: sx3, children }) => {
3516
+ return /* @__PURE__ */ import_react46.default.createElement(import_react46.default.Fragment, null, /* @__PURE__ */ import_react46.default.createElement(
3517
+ import_theme_ui40.Box,
3518
+ {
3519
+ sx: {
3520
+ position: "fixed",
3521
+ top: "56px",
3522
+ bottom: "0px",
3523
+ left: "0px",
3524
+ width: "calc(100vw)",
3525
+ mt: ["56px"],
3526
+ bg: "background",
3527
+ zIndex: 1e3,
3528
+ transition: "opacity 0.15s",
3529
+ opacity: expanded ? 0.9 : 0,
3530
+ pointerEvents: expanded ? "all" : "none"
3531
+ }
3532
+ }
3533
+ ), /* @__PURE__ */ import_react46.default.createElement(
3534
+ import_theme_ui40.Box,
3535
+ {
3536
+ sx: __spreadValues({
3537
+ position: "fixed",
3538
+ width: "calc(100vw)",
3539
+ top: "0px",
3540
+ mt: ["56px"],
3541
+ pb: [6, 7, 7, 8],
3542
+ pt: [5, 6, 7, 8],
3543
+ bg: "background",
3544
+ zIndex: 1100,
3545
+ borderStyle: "solid",
3546
+ borderColor: "muted",
3547
+ borderWidth: "0px",
3548
+ borderBottomWidth: "1px",
3549
+ transition: "transform 0.15s",
3550
+ ml: [-3, -4, -5, -6],
3551
+ pl: [3, 4, 5, 6],
3552
+ pr: [3, 4, 5, 6],
3553
+ transform: expanded ? "translateY(0)" : "translateY(-100%)"
3554
+ }, sx3)
3555
+ },
3556
+ /* @__PURE__ */ import_react46.default.createElement(row_default, null, /* @__PURE__ */ import_react46.default.createElement(column_default, { start: [1, 1, 1, 1], width: [6, 8, 10, 10] }, children))
3557
+ ));
3558
+ };
3559
+ var tray_default = Tray;
3560
+
3561
+ // src/utils/format-date.ts
3562
+ var defaultOptions = {
3563
+ month: "short",
3564
+ day: "numeric",
3565
+ year: "numeric"
3566
+ };
3567
+ var formatDateElement = (date, element, option) => {
3568
+ if (!option) {
3569
+ return null;
3570
+ }
3571
+ const format2 = typeof option === "string" ? option : defaultOptions[element];
3572
+ const result = date.toLocaleString("default", {
3573
+ [element]: format2
3574
+ });
3575
+ if (format2 === "numeric" && ["day", "month"].includes(element)) {
3576
+ return result.padStart(2, "0");
3577
+ } else {
3578
+ return result;
3579
+ }
3580
+ };
3581
+ var formatDate = (date, options = defaultOptions) => {
3582
+ var _a;
3583
+ const d = new Date(date.replace(/-/g, "/"));
3584
+ const month = formatDateElement(d, "month", options.month);
3585
+ const day = formatDateElement(d, "day", options.day);
3586
+ const year = formatDateElement(d, "year", options.year);
3587
+ return [month, day, year].filter(Boolean).join((_a = options.separator) != null ? _a : " ");
3588
+ };
3589
+ var format_date_default = formatDate;
3590
+
3591
+ // src/utils/use-scrollbar-class.ts
3592
+ var import_react47 = require("react");
3593
+ var useScrollbarClass = () => {
3594
+ const [className, setClassName] = (0, import_react47.useState)(null);
3595
+ (0, import_react47.useEffect)(() => {
3596
+ if (document && get_scrollbar_width_default(document) > 0) {
3597
+ setClassName("custom-scrollbar");
3598
+ }
3599
+ }, []);
3600
+ return className;
3601
+ };
3602
+ var use_scrollbar_class_default = useScrollbarClass;
3603
+ // Annotate the CommonJS export names for ESM import in node:
3604
+ 0 && (module.exports = {
3605
+ Avatar,
3606
+ AvatarGroup,
3607
+ Badge,
3608
+ Blockquote,
3609
+ Button,
3610
+ Callout,
3611
+ Caption,
3612
+ Colorbar,
3613
+ Colors,
3614
+ Column,
3615
+ Custom404,
3616
+ Dimmer,
3617
+ Expander,
3618
+ FadeIn,
3619
+ Figure,
3620
+ FigureCaption,
3621
+ Filter,
3622
+ Footer,
3623
+ Group,
3624
+ Guide,
3625
+ Header,
3626
+ Heading,
3627
+ Input,
3628
+ Layout,
3629
+ Link,
3630
+ LinkGroup,
3631
+ Logo,
3632
+ Menu,
3633
+ Meta,
3634
+ Metadata,
3635
+ Monogram,
3636
+ Row,
3637
+ Scrollbar,
3638
+ Select,
3639
+ Settings,
3640
+ Sidenote,
3641
+ Slider,
3642
+ Table,
3643
+ TableCaption,
3644
+ Tag,
3645
+ Toggle,
3646
+ Tray,
3647
+ formatDate,
3648
+ getScrollbarWidth,
3649
+ useScrollbarClass
3650
+ });
3651
+ //# sourceMappingURL=index.js.map