@carbonplan/components 11.1.0-develop.0 → 11.1.0-develop.1

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.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/link.js","../src/utils/get-size-styles.js","../src/button.js","../src/callout.js","../src/colorbar.js","../src/column.js","../src/meta.js","../src/logo.js","../src/row.js","../src/menu.js","../src/header.js","../src/monogram.js","../src/footer.js","../src/dimmer.js","../src/gitsha.js","../src/metadata.js","../src/fade-in.js","../src/utils/get-scrollbar-width.js","../src/scrollbar.js","../src/guide.js","../src/settings.js","../src/layout.js","../src/tag.js","../src/filter.js","../src/group.js","../src/sidenote.js","../src/input.js","../src/slider.js","../src/table.js","../src/toggle.js","../src/utils/format-date.js","../src/badge.js","../src/custom-404.js","../src/expander.js","../src/heading.js","../src/select.js","../src/utils/get-props.js","../src/tracking.js","../src/tray.js"],"sourcesContent":["import React, { forwardRef } from 'react'\nimport { Link as ThemedLink } from 'theme-ui'\nimport { default as NextLink } from 'next/link'\n\nconst event = ({ action, category, label, value }) => {\n if (typeof window.gtag !== 'function') {\n console.warn(`Missing window.gtag, skipping analytics action: '${action}'.`)\n return\n }\n\n window.gtag('event', action, {\n event_category: category,\n event_label: label,\n value: value,\n })\n}\n\nconst Link = (\n { href, children, internal = false, tracking = false, ...props },\n ref\n) => {\n if (internal || (href && href.startsWith('/'))) {\n return (\n <NextLink href={href} passHref>\n <ThemedLink ref={ref} {...props}>\n {children}\n </ThemedLink>\n </NextLink>\n )\n } else if (tracking) {\n let action\n let category\n if (href && href.includes('pdf')) {\n action = 'PDF'\n category = 'download'\n } else {\n action = 'website'\n category = 'external'\n }\n const track = (e) => {\n event({\n action: action,\n category: category,\n label: href,\n })\n }\n return (\n <ThemedLink\n ref={ref}\n onClick={track}\n onContextMenu={track}\n href={href}\n {...props}\n >\n {children}\n </ThemedLink>\n )\n } else {\n return (\n <ThemedLink ref={ref} href={href} {...props}>\n {children}\n </ThemedLink>\n )\n }\n}\n\nexport default forwardRef(Link)\n","const getSizeStyles = (size) => {\n if (!['xs', 'sm', 'md', 'lg', 'xl'].includes(size)) {\n throw new Error('Size must be xs, sm, md, lg, or xl')\n }\n\n let fontSize, fontFamily, letterSpacing, lineHeight\n\n if (size === 'xs') {\n fontSize = [2, 2, 2, 3]\n fontFamily = 'body'\n letterSpacing = 'body'\n lineHeight = [1.2]\n }\n\n if (size === 'sm') {\n fontSize = [3, 3, 3, 4]\n fontFamily = 'body'\n letterSpacing = 'body'\n lineHeight = [1.2]\n }\n\n if (size === 'md') {\n fontSize = [4, 4, 4, 5]\n fontFamily = 'body'\n letterSpacing = 'body'\n lineHeight = [1.2]\n }\n\n if (size === 'lg') {\n fontSize = [5, 5, 6, 7]\n fontFamily = 'heading'\n letterSpacing = 'heading'\n lineHeight = [1.2, 1.2, 1.25, 1.25]\n }\n\n if (size === 'xl') {\n fontSize = [6, 7, 8, 9]\n fontFamily = 'heading'\n letterSpacing = 'heading'\n lineHeight = [1.25]\n }\n\n return { fontSize, fontFamily, letterSpacing, lineHeight }\n}\n\nexport default getSizeStyles\n","import React, { forwardRef, cloneElement } from 'react'\nimport { Box } from 'theme-ui'\nimport Link from './link'\nimport getSizeStyles from './utils/get-size-styles'\n\nconst Button = (\n {\n size = 'sm',\n prefix,\n suffix,\n inverted,\n sx,\n children,\n align,\n href,\n internal,\n tracking,\n ...props\n },\n ref\n) => {\n if (!['xs', 'sm', 'md', 'lg', 'xl'].includes(size)) {\n throw new Error('Size must be xs, sm, md, lg, or xl')\n }\n\n let offset, margin, top, height, width, strokeWidth\n\n const color = sx && sx.color ? sx.color : null\n const baseColor = color || (inverted ? 'secondary' : 'primary')\n const hoverColor = color ? 'primary' : inverted ? 'primary' : 'secondary'\n\n if (size === 'xs') {\n margin = ['6px', '6px', '6px', '6px']\n height = [12, 12, 12, 13]\n width = [12, 12, 12, 13]\n strokeWidth = [1.5, 1.5, 1.5, 1.5]\n offset = { transform: 'translateY(0.25px)' }\n }\n\n if (size === 'sm') {\n margin = ['7px', '7px', '7px', '7px']\n height = [13, 13, 13, 18]\n width = [13, 13, 13, 18]\n strokeWidth = [1.5, 1.5, 1.5, 2]\n offset = { transform: 'translateY(0.25px)' }\n }\n\n if (size === 'md') {\n margin = ['8px', '8px', '8px', '8px']\n height = [18, 18, 18, 24]\n width = [18, 18, 18, 24]\n strokeWidth = [2, 2, 2, 3]\n }\n\n if (size === 'lg') {\n margin = ['10px', '10px', '12px', '16px']\n height = [24, 24, 34, 46]\n width = [24, 24, 34, 46]\n strokeWidth = [3, 3, 4, 5]\n }\n\n if (size === 'xl') {\n margin = ['12px', '16px', '18px', '20px']\n height = [34, 46, 56, 68]\n width = [34, 46, 56, 68]\n strokeWidth = [4, 5, 6, 7]\n }\n\n let prefixHover,\n suffixHover,\n prefixAlign,\n suffixAlign,\n prefixOffset,\n suffixOffset\n\n if (align) {\n prefixAlign = align\n suffixAlign = align\n } else {\n if (prefix && suffix) {\n prefixAlign = 'initial'\n suffixAlign = 'initial'\n } else if (prefix) {\n prefixAlign = 'initial'\n } else if (suffix) {\n suffixAlign = 'middle'\n }\n }\n\n if (prefixAlign === 'middle') {\n prefixOffset = {}\n } else {\n prefixOffset = offset\n }\n\n if (suffixAlign === 'middle') {\n suffixOffset = {}\n } else {\n suffixOffset = offset\n }\n\n if (prefix) {\n prefixHover = {\n '&:hover > #prefix-span > #prefix': {\n color: hoverColor,\n ...prefix.type.hover,\n },\n }\n prefix = cloneElement(prefix, {\n id: 'prefix',\n sx: {\n position: 'relative',\n height: height,\n width: width,\n mr: children ? margin : [0],\n strokeWidth: strokeWidth,\n verticalAlign: prefixAlign,\n transition: 'color 0.15s, transform 0.15s',\n ...prefix.props.sx,\n },\n })\n }\n\n if (suffix) {\n suffixHover = {\n '&:hover > #suffix-span >#suffix': {\n color: hoverColor,\n ...suffix.type.hover,\n },\n }\n suffix = cloneElement(suffix, {\n id: 'suffix',\n sx: {\n height: height,\n width: width,\n ml: children ? margin : [0],\n strokeWidth: strokeWidth,\n verticalAlign: suffixAlign,\n transition: 'color 0.15s, transform 0.15s',\n ...suffix.props.sx,\n },\n })\n }\n\n let sizeStyles = getSizeStyles(size)\n\n const style = {\n ...sizeStyles,\n lineHeight: 1.05,\n border: 'none',\n background: 'transparent',\n display: 'block',\n color: baseColor,\n padding: [0],\n textAlign: 'left',\n cursor: 'pointer',\n width: 'fit-content',\n '@media (hover: hover) and (pointer: fine)': {\n '&:hover': {\n color: hoverColor,\n },\n ...suffixHover,\n ...prefixHover,\n },\n ...sx,\n }\n\n const Inner = (\n <>\n <Box\n as='span'\n id='prefix-span'\n sx={{ display: 'inline-block', ...prefixOffset }}\n >\n {prefix && prefix}\n </Box>\n <Box as='span' sx={{ transition: 'color 0.15s' }}>\n {children}\n </Box>\n <Box\n as='span'\n id='suffix-span'\n sx={{ display: 'inline-block', ...suffixOffset }}\n >\n {suffix && suffix}\n </Box>\n </>\n )\n\n if (href) {\n return (\n <Link\n ref={ref}\n href={href}\n internal={internal}\n tracking={tracking}\n sx={{\n ...style,\n textDecoration: 'none',\n }}\n {...props}\n >\n {Inner}\n </Link>\n )\n } else {\n return (\n <Box ref={ref} as='button' sx={style} {...props}>\n {Inner}\n </Box>\n )\n }\n}\n\nexport default forwardRef(Button)\n","import React, { forwardRef } from 'react'\nimport { Box } from 'theme-ui'\nimport { Arrow } from '@carbonplan/icons'\nimport Link from './link'\n\nconst Callout = (\n { label, children, inverted, color, href, internal, tracking, sx, ...props },\n ref\n) => {\n const baseColor = color || (inverted ? 'secondary' : 'primary')\n const hoverColor = color ? 'primary' : inverted ? 'primary' : 'secondary'\n\n const style = {\n border: 'none',\n padding: [0],\n fontSize: [3, 3, 3, 4],\n color: baseColor,\n background: 'transparent',\n textDecoration: 'none',\n fontFamily: 'body',\n lineHeight: 'h3',\n letterSpacing: 'body',\n width: 'fit-content',\n cursor: 'pointer',\n textAlign: 'left',\n mb: [1],\n '@media (hover: hover) and (pointer: fine)': {\n '&:hover > #container > #arrow': {\n transform: 'rotate(45deg)',\n fill: hoverColor,\n },\n '&:hover': {\n color: hoverColor,\n },\n },\n ...sx,\n }\n\n const Inner = (\n <>\n <Box sx={{ transition: '0.15s', letterSpacing: 'body', pb: ['6px'] }}>\n {children}\n </Box>\n <Box\n sx={{\n transition: '0.15s',\n display: 'inline-block',\n textTransform: 'uppercase',\n letterSpacing: 'smallcaps',\n fontFamily: 'heading',\n fontSize: [2, 2, 2, 3],\n }}\n >\n {label}\n </Box>\n <Box\n as='span'\n id='container'\n sx={{\n ml: [2],\n display: 'inline-block',\n }}\n >\n <Arrow\n id='arrow'\n sx={{\n transition: 'fill 0.15s, transform 0.15s',\n position: 'relative',\n top: ['2px'],\n color: baseColor,\n height: [15, 15, 15, 17],\n width: [15, 15, 15, 17],\n }}\n />\n </Box>\n </>\n )\n\n if (href) {\n return (\n <Link\n ref={ref}\n href={href}\n internal={internal}\n tracking={tracking}\n sx={style}\n {...props}\n >\n {Inner}\n </Link>\n )\n } else {\n return (\n <Box ref={ref} as='button' sx={style} {...props}>\n {Inner}\n </Box>\n )\n }\n}\n\nexport default forwardRef(Callout)\n","import React, { useState, useEffect, useRef } from 'react'\nimport { Box, Flex } from 'theme-ui'\n\nconst styles = {\n clim: (setClim) => {\n return {\n fontFamily: 'mono',\n fontSize: ['9px', 0, 0, 1],\n letterSpacing: 'smallcaps',\n textTransform: 'uppercase',\n '@media (hover: hover) and (pointer: fine)': {\n '&:hover': {\n borderBottom: setClim\n ? ({ colors }) => `solid 1px ${colors.primary} !important`\n : 'unset',\n },\n },\n '&:focus': {\n outline: 'none',\n borderBottom: setClim\n ? ({ colors }) => `solid 1px ${colors.primary} !important`\n : 'unset',\n },\n transition: 'border 0.15s',\n userSelect: setClim ? 'none !important' : 'unset',\n width: 'fit-content',\n minWidth: 'fit-content',\n }\n },\n}\n\nconst DIMENSIONS = {\n width: ['10px', '16px', '16px', '17px'],\n height: ['80px', '110px', '110px', '130px'],\n}\n\nconst Gradient = ({ colormap, discrete, horizontal, width, height }) => {\n const step = (1 / colormap.length) * 100\n const values = colormap.map((d, i) => {\n return `rgb(${d}) ${i * step}% ${\n discrete && i < colormap.length - 1 ? `${(i + 1) * step}%` : ''\n }`\n })\n\n const css = `linear-gradient(to ${\n horizontal ? 'right' : 'top'\n }, ${values.join(',')})`\n\n return (\n <Box\n sx={{\n ...(horizontal\n ? {\n width: width || DIMENSIONS.height,\n height: height || DIMENSIONS.width,\n }\n : {\n width: width || DIMENSIONS.width,\n minHeight: height || DIMENSIONS.height,\n }),\n mt: horizontal ? ['1px', '1px', '1px', 0] : 0,\n border: ({ colors }) => `solid 1px ${colors.hinted}`,\n background: css,\n }}\n />\n )\n}\n\nconst Label = ({ label, units, horizontal }) => (\n <Box\n sx={\n !horizontal && {\n width: ['13px', '17px', '17px', '19px'],\n alignSelf: 'flex-end',\n }\n }\n >\n <Box\n sx={{\n mb: horizontal ? 0 : ['-4px', '-4px', '-4px', '-3px'],\n fontFamily: 'mono',\n fontSize: ['9px', 0, 0, 1],\n letterSpacing: 'smallcaps',\n textTransform: 'uppercase',\n ...(horizontal\n ? {}\n : {\n writingMode: 'vertical-rl',\n transform: 'rotate(180deg)',\n whiteSpace: 'nowrap',\n display: 'inline-block',\n overflow: 'visible',\n }),\n }}\n >\n {label}{' '}\n <Box\n as='span'\n sx={{\n textTransform: 'none',\n color: 'secondary',\n display: 'inline-block',\n }}\n >\n {units}\n </Box>\n </Box>\n </Box>\n)\n\nconst Colorbar = ({\n colormap,\n label,\n clim,\n setClim,\n setClimStep = 1,\n discrete,\n units,\n width,\n height,\n format = (d) => d,\n horizontal = false,\n bottom = false,\n sx,\n sxClim,\n ...props\n}) => {\n if (!Array.isArray(colormap)) {\n throw new Error(`expected array for colormap, got '${colormap}'.`)\n }\n\n const climRef = [useRef(), useRef()]\n const [climMinDragging, setClimMinDragging] = useState(false)\n const [climMaxDragging, setClimMaxDragging] = useState(false)\n\n let x,\n y,\n dx,\n dy = 0\n let id = null\n let init = [0, 0]\n let scale = setClimStep\n\n const draggingFunction = (e) => {\n if (id === 'min' && !climMinDragging) setClimMinDragging(true)\n if (id === 'max' && !climMaxDragging) setClimMaxDragging(true)\n dx = e.pageX - x\n dy = e.pageY - y\n if (horizontal) {\n if (id === 'min')\n setClim((prev) => [Math.min(init[0] + dx * scale, init[1]), prev[1]])\n if (id === 'max')\n setClim((prev) => [prev[0], Math.max(init[1] + dx * scale, init[0])])\n } else {\n if (id === 'min')\n setClim((prev) => [Math.min(init[0] - dy * scale, init[1]), prev[1]])\n if (id === 'max')\n setClim((prev) => [prev[0], Math.max(init[1] - dy * scale, init[0])])\n }\n }\n\n const handleMouseDown = (e) => {\n y = e.pageY\n x = e.pageX\n id = e.target.id\n init = clim\n\n document.body.setAttribute(\n 'style',\n horizontal\n ? 'cursor: ew-resize !important'\n : 'cursor: ns-resize !important'\n )\n document.addEventListener('mousemove', draggingFunction)\n const updater = () => {\n document.body.setAttribute('style', 'cursor: unset')\n document.removeEventListener('mousemove', draggingFunction)\n window.removeEventListener('mouseup', updater)\n if (id === 'min') setClimMinDragging(false)\n if (id === 'max') setClimMaxDragging(false)\n }\n window.addEventListener('mouseup', updater)\n }\n\n const increment = (e) => {\n if (climRef[0].current === document.activeElement) {\n e.preventDefault()\n setClim((prev) => [Math.min(prev[0] + scale, prev[1]), prev[1]])\n climRef[0].current.focus()\n }\n if (climRef[1].current === document.activeElement) {\n e.preventDefault()\n setClim((prev) => [prev[0], Math.max(prev[1] + scale, prev[0])])\n climRef[1].current.focus()\n }\n }\n\n const decrement = (e) => {\n if (climRef[0].current === document.activeElement) {\n e.preventDefault()\n setClim((prev) => [Math.min(prev[0] - scale, prev[1]), prev[1]])\n climRef[0].current.focus()\n }\n if (climRef[1].current === document.activeElement) {\n e.preventDefault()\n setClim((prev) => [prev[0], Math.max(prev[1] - scale, prev[0])])\n climRef[1].current.focus()\n }\n }\n\n useEffect(() => {\n const listener = (e) => {\n if (\n ['ArrowUp', 'ArrowRight'].includes(e.code) ||\n ['ArrowUp', 'ArrowRight'].includes(e.key)\n ) {\n increment(e)\n }\n if (\n ['ArrowDown', 'ArrowLeft'].includes(e.code) ||\n ['ArrowDown', 'ArrowLeft'].includes(e.key)\n ) {\n decrement(e)\n }\n }\n window.addEventListener('keydown', listener)\n\n return () => {\n window.removeEventListener('keydown', listener)\n }\n }, [clim])\n\n const ClimMin = () => {\n return (\n <Box\n id='min'\n ref={climRef[0]}\n tabIndex={0}\n sx={{\n ...styles.clim(setClim),\n ml: label\n ? horizontal\n ? bottom\n ? '0px'\n : '10px'\n : ['2px', '1px', '1px', '2px']\n : 0,\n mr: horizontal ? ['2px', '1px', '1px', '2px'] : 0,\n mb: horizontal ? 0 : ['-2px', '-2px', '-2px', '-3px'],\n borderBottom: setClim\n ? climMinDragging\n ? ({ colors }) => `solid 1px ${colors.primary}`\n : ({ colors }) => `solid 1px ${colors.secondary}`\n : 'unset',\n cursor: setClim\n ? horizontal\n ? 'ew-resize'\n : 'ns-resize'\n : 'default',\n ...sxClim,\n }}\n onMouseDown={setClim ? handleMouseDown : () => {}}\n onClick={() => climRef[0].current.focus()}\n >\n {format(clim[0])}\n </Box>\n )\n }\n\n const ClimMax = () => {\n return (\n <Box\n id='max'\n ref={climRef[1]}\n tabIndex={0}\n sx={{\n ...styles.clim(setClim),\n ml: horizontal\n ? ['2px', '1px', '1px', '2px']\n : ['2px', '1px', '1px', '2px'],\n mt: horizontal ? 0 : ['-2px', '-3px', '-3px', '-3px'],\n borderBottom: setClim\n ? climMaxDragging\n ? ({ colors }) => `solid 1px ${colors.primary}`\n : ({ colors }) => `solid 1px ${colors.secondary}`\n : 'unset',\n cursor: setClim\n ? horizontal\n ? 'ew-resize'\n : 'ns-resize'\n : 'default',\n ...sxClim,\n }}\n onMouseDown={setClim ? handleMouseDown : () => {}}\n onClick={() => climRef[1].current.focus()}\n >\n {format(clim[1])}\n </Box>\n )\n }\n\n return (\n <Flex\n {...props}\n sx={{\n flexDirection: 'row',\n alignItems: 'start',\n justifyContent: 'flex-start',\n gap: ['3px', '6px', '6px', '7px'],\n height: !horizontal ? '100%' : 'unset',\n ...sx,\n }}\n >\n {label && <Label label={label} units={units} horizontal={horizontal} />}\n <Flex\n sx={{\n flexGrow: horizontal ? 1 : 'unset',\n flexDirection: 'column',\n ml: bottom && label ? '4px' : '0px',\n height: !horizontal ? '100%' : 'unset',\n }}\n >\n <Flex\n sx={{\n gap: ['3px', '6px', '6px', '7px'],\n height: !horizontal ? '100%' : 'unset',\n }}\n >\n {horizontal && clim && !bottom && <ClimMin />}\n <Gradient\n colormap={colormap}\n horizontal={horizontal}\n discrete={discrete}\n width={width}\n height={height}\n />\n {horizontal && clim && !bottom && <ClimMax />}\n </Flex>\n {horizontal && clim && bottom && (\n <Flex sx={{ justifyContent: 'space-between' }}>\n <ClimMin />\n <ClimMax />\n </Flex>\n )}\n </Flex>\n\n {!horizontal && (\n <Flex\n sx={{\n flexDirection: 'column-reverse',\n justifyContent: 'space-between',\n height: height || DIMENSIONS.height,\n }}\n >\n {clim && <ClimMin />}\n {clim && <ClimMax />}\n </Flex>\n )}\n </Flex>\n )\n}\n\nexport default Colorbar\n","import React from 'react'\nimport { Box } from 'theme-ui'\n\nconst Column = ({ start, width, dl, dr, children, sx, ...props }) => {\n start = start || 'auto'\n width = width || 'auto'\n\n const makeArray = (input) => {\n if (input && !Array.isArray(input)) {\n input = [input]\n }\n\n if (![1, 2, 4].includes(input.length)) {\n throw new Error('Array length must be 1, 2, or 4')\n }\n\n if (Array.isArray(input) && input.length == 1) {\n input = input.map((d) => [d, d, d, d]).flat()\n } else if (Array.isArray(input) && input.length == 2) {\n input = input.map((d) => [d, d]).flat()\n }\n\n return input\n }\n\n start = makeArray(start)\n width = makeArray(width)\n\n const end = start.map((d, i) => {\n if (d == 'auto') return 'auto'\n return d + width[i]\n })\n\n let ml, mr\n\n if (dl) {\n if (![0.5, 1].includes(dl)) {\n throw new Error('dl must be 0.5 or 1')\n }\n if (dl === 0.5) {\n ml = ['-12px', -3, -3, -4]\n }\n if (dl === 1) {\n ml = [-4, -5, -5, -6]\n }\n }\n\n if (dr) {\n if (![0.5, 1].includes(dr)) {\n throw new Error('dr must be 0.5 or 1')\n }\n if (dr === 0.5) {\n mr = ['-12px', -3, -3, -4]\n }\n if (dr === 1) {\n mr = [-4, -5, -5, -6]\n }\n }\n\n return (\n <Box\n {...props}\n sx={{\n gridColumnStart: start,\n gridColumnEnd: end,\n ml: ml,\n mr: mr,\n ...sx,\n }}\n >\n {children}\n </Box>\n )\n}\n\nexport default Column\n","import React from 'react'\nimport Head from 'next/head'\n\nconst Meta = ({ title, description, card }) => {\n title = title ? title : 'carbonplan'\n description = description\n ? description\n : 'Data and science for climate action.'\n card = card ? card : 'https://images.carbonplan.org/social/homepage.png'\n\n return (\n <Head>\n <title>{title}</title>\n <meta name='description' content={description} />\n <meta name='viewport' content='initial-scale=1.0, width=device-width' />\n <link rel='canonical' content='https://carbonplan.org/' />\n <link\n rel='icon'\n type='image/svg+xml'\n href='https://images.carbonplan.org/favicon.svg'\n />\n <link\n rel='preload'\n href='https://fonts.carbonplan.org/relative/relative-book-pro.woff2'\n as='font'\n type='font/woff2'\n crossOrigin='anonymous'\n />\n <link\n rel='preload'\n href='https://fonts.carbonplan.org/relative/relative-medium-pro.woff2'\n as='font'\n type='font/woff2'\n crossOrigin='anonymous'\n />\n <link\n rel='preload'\n href='https://fonts.carbonplan.org/relative/relative-mono-11-pitch-pro.woff2'\n as='font'\n type='font/woff2'\n crossOrigin='anonymous'\n />\n <link\n rel='preload'\n href='https://fonts.carbonplan.org/relative/relative-faux-book-pro.woff2'\n as='font'\n type='font/woff2'\n crossOrigin='anonymous'\n />\n <link rel='manifest' href='https://images.carbonplan.org/manifest.json' />\n <meta name='theme-color' content='#1b1e23' />\n <link\n rel='alternate icon'\n type='image/png'\n href='https://images.carbonplan.org/favicon.png'\n />\n <link\n rel='mask-icon'\n href='https://images.carbonplan.org/safari-pinned-tab.svg'\n color='#000000'\n />\n <link\n rel='apple-touch-icon'\n sizes='180x180'\n href='https://images.carbonplan.org/apple-touch-icon.png'\n />\n <meta name='msapplication-TileColor' content='#1b1e23' />\n <meta\n name='msapplication-TileImage'\n content='https://images.carbonplan.org/mstile-144x144.png'\n />\n <meta\n name='msapplication-config'\n content='https://images.carbonplan.org/browserconfig.xml'\n />\n <meta property='og:title' content={title} />\n <meta property='og:description' content={description} />\n <meta property='og:image' content={card} />\n <meta property='og:url' content='https://carbonplan.org' />\n <meta name='twitter:title' content={title} />\n <meta name='twitter:description' content={description} />\n <meta name='twitter:image' content={card} />\n <meta name='twitter:card' content='summary_large_image' />\n </Head>\n )\n}\n\nexport default Meta\n","import React from 'react'\nimport { Box } from 'theme-ui'\n\nconst Logo = ({ ...props }) => {\n return (\n <Box\n as='svg'\n width='150'\n fill='currentColor'\n stroke='none'\n viewBox='0 0 151.1 28.8'\n {...props}\n >\n <g>\n <g>\n <path\n 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'\n />\n </g>\n <g>\n <path\n 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'\n />\n </g>\n <g>\n <path\n 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'\n />\n </g>\n <g>\n <path\n 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'\n />\n </g>\n <g>\n <path\n 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'\n />\n </g>\n <g>\n <path\n 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'\n />\n </g>\n <g>\n <path\n 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'\n />\n </g>\n <g>\n <path\n 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'\n />\n </g>\n <g>\n <path\n 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'\n />\n </g>\n <g>\n <path\n 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'\n />\n </g>\n <path\n 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'\n />\n <path\n 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'\n />\n </g>\n </Box>\n )\n}\n\nexport default Logo\n","import React from 'react'\nimport { Grid } from 'theme-ui'\n\nconst Row = ({ children, sx, columns, gap, ...props }) => {\n const makeArray = (input) => {\n if (!Array.isArray(input)) {\n input = [input, input, input, input]\n }\n if (Array.isArray(input) && ![1, 2, 4].includes(input.length)) {\n throw new Error('Array length must be 1, 2, or 4')\n }\n if (Array.isArray(input) && input.length == 1) {\n input = input.map((d) => [d]).flat()\n }\n if (Array.isArray(input) && input.length == 2) {\n input = input.map((d) => [d, d]).flat()\n }\n return input\n }\n\n let columnGap, rowGap\n if (Number.isInteger(gap) || Array.isArray(gap)) {\n gap = makeArray(gap)\n columnGap = gap\n rowGap = gap\n } else {\n columnGap = [4, 5, 5, 6]\n rowGap = [0, 0, 0, 0]\n }\n\n if (Number.isInteger(columns) || Array.isArray(columns)) {\n columns = makeArray(columns)\n } else {\n columns = [6, 8, 12, 12]\n }\n\n return (\n <Grid\n {...props}\n columns={columns}\n sx={{\n columnGap: columnGap,\n rowGap: rowGap,\n ...sx,\n }}\n >\n {children}\n </Grid>\n )\n}\n\nexport default Row\n","import React from 'react'\nimport { IconButton } from 'theme-ui'\n\nconst Menu = ({ value, sx, ...props }) => {\n return (\n <IconButton\n sx={{\n cursor: 'pointer',\n fill: 'none',\n strokeWidth: '2px',\n stroke: 'text',\n '.paren': {\n opacity: '0',\n },\n '@media (hover: hover) and (pointer: fine)': {\n '&:hover .paren': {\n opacity: '1',\n },\n },\n ...sx,\n }}\n aria-label='Toggle Menu'\n {...props}\n >\n {!value && (\n <svg\n style={{\n width: '50px',\n height: '30px',\n transform: 'scale(2)',\n marginTop: '-3px',\n }}\n xmlns='http://www.w3.org/2000/svg'\n viewBox='0 0 68 36'\n >\n <line x1='52' y1='29.9' x2='16' y2='29.9' />\n <line x1='52' y1='6.1' x2='16' y2='6.1' />\n <line x1='52' y1='18' x2='16' y2='18' />\n <path\n style={{ transition: 'all 0.2s' }}\n className='paren'\n d='M6.4,1.2c-6.3,10.3-6.3,23.3,0,33.6'\n />\n <path\n style={{ transition: 'all 0.2s' }}\n className='paren'\n d='M61.6,34.8c6.3-10.3,6.3-23.3,0-33.6'\n />\n </svg>\n )}\n {value && (\n <svg\n style={{\n width: '50px',\n height: '30px',\n transform: 'scale(2)',\n marginTop: '-3px',\n }}\n xmlns='http://www.w3.org/2000/svg'\n viewBox='0 0 68 36'\n >\n <line x1='50.85' y1='29.79' x2='17.15' y2='6.21' />\n <line x1='17.15' y1='29.79' x2='50.85' y2='6.21' />\n <path\n style={{ transition: 'all 0.2s' }}\n className='paren'\n d='M6.4,1.2c-6.3,10.3-6.3,23.3,0,33.6'\n />\n <path\n style={{ transition: 'all 0.2s' }}\n className='paren'\n d='M61.6,34.8c6.3-10.3,6.3-23.3,0-33.6'\n />\n </svg>\n )}\n </IconButton>\n )\n}\n\nexport default Menu\n","import React, { useState } from 'react'\nimport { default as NextLink } from 'next/link'\nimport { Box, Flex, Container, Link } from 'theme-ui'\nimport { Arrow } from '@carbonplan/icons'\nimport Logo from './logo'\nimport Row from './row'\nimport Column from './column'\nimport Menu from './menu'\n\nconst sx = {\n link: (current, label, first = false) => {\n return {\n width: 'auto',\n color: current === label ? 'secondary' : 'text',\n fontSize: [6, 6, 7, 8],\n fontFamily: 'heading',\n letterSpacing: 'heading',\n borderStyle: 'solid',\n borderColor: 'muted',\n borderWidth: '0px',\n borderBottomWidth: '1px',\n borderTopWidth: first ? '1px' : '0px',\n py: [3, 3, 4, 5],\n textDecoration: 'none',\n display: 'block',\n position: 'relative',\n transition: 'color 0.15s',\n '@media (hover: hover) and (pointer: fine)': {\n '&:hover > #arrow': {\n opacity: 1,\n },\n },\n '&:hover': {\n color: current == label ? 'secondary' : 'text',\n },\n }\n },\n}\n\nconst links = [\n { url: 'about', display: 'About' },\n { url: 'research', display: 'Research' },\n { url: 'blog', display: 'Blog' },\n { url: 'press', display: 'Press' },\n]\n\nconst HoverArrow = () => {\n return (\n <Arrow\n id='arrow'\n sx={{\n pointerEvents: 'none',\n display: 'inline-block',\n position: 'absolute',\n left: ['-60px', '-68px', '-80px', '-104px'],\n top: ['32px', '32px', '46px', '62px'],\n opacity: 0,\n transition: 'opacity 0.2s ease-out',\n transform: 'rotate(45deg)',\n width: [36, 36, 48, 56],\n height: [36, 36, 48, 56],\n }}\n />\n )\n}\n\nconst Nav = ({ link, mode, nav, first, setExpanded }) => {\n const { url, display } = link\n const href = mode === 'remote' ? 'https://carbonplan.org/' + url : '/' + url\n\n if (mode === 'homepage' || (mode === 'local' && nav === url)) {\n return (\n <NextLink href={href} passHref>\n <Link\n onClick={() => {\n if (nav === url) setExpanded(false)\n }}\n sx={sx.link(nav, url, first)}\n >\n <HoverArrow />\n {display}\n </Link>\n </NextLink>\n )\n } else {\n return (\n <Link href={href} sx={sx.link(nav, url, first)}>\n <HoverArrow />\n {display}\n </Link>\n )\n }\n}\n\nconst NavGroup = ({ links, nav, mode, setExpanded }) => {\n return links.map((d, i) => {\n return (\n <Nav\n key={i}\n link={d}\n mode={mode}\n nav={nav}\n first={i === 0}\n setExpanded={setExpanded}\n />\n )\n })\n}\n\nconst Header = ({ status, mode, nav, menuItems }) => {\n const [expanded, setExpanded] = useState(false)\n\n const toggle = (e) => {\n setExpanded(!expanded)\n }\n\n return (\n <Row\n sx={{\n pt: ['12px'],\n pb: [3],\n }}\n >\n <Column start={[1]} width={[2]}>\n <Box sx={{ display: 'block', width: 'fit-content' }}>\n {(mode == 'homepage' || mode == 'local') && (\n <NextLink href='/' passHref>\n <Link\n aria-label='CarbonPlan Homepage'\n sx={{\n display: 'block',\n }}\n >\n <Logo\n id='logo'\n sx={{\n cursor: 'pointer',\n color: 'primary',\n }}\n />\n </Link>\n </NextLink>\n )}\n {(mode == null || mode == 'remote') && (\n <Link\n href='https://carbonplan.org'\n aria-label='CarbonPlan Homepage'\n sx={{ display: 'block' }}\n >\n <Logo sx={{ cursor: 'pointer', color: 'primary' }} />\n </Link>\n )}\n </Box>\n </Column>\n <Column\n start={[4, 9]}\n width={[2, 2]}\n dr={1}\n sx={{\n display: [status ? 'flex' : 'none', 'flex', 'flex', 'flex'],\n alignItems: 'center',\n }}\n >\n <Box\n sx={{\n fontSize: [1, 2, 3],\n position: 'relative',\n top: ['-2px', '-3px', '-3px'],\n }}\n >\n {status ? `(${status})` : ''}\n </Box>\n </Column>\n <Column\n start={[status ? 6 : 4, 6, 11, 11]}\n width={[status ? 1 : 3, 3, 2, 2]}\n sx={{ zIndex: 5000 }}\n >\n <Flex sx={{ justifyContent: 'flex-end' }}>\n <Flex\n sx={{\n mr: '18px',\n gap: '18px',\n opacity: expanded ? 0 : 1,\n transition: 'opacity 0.15s',\n justifyContent: 'space-between',\n alignItems: 'center',\n }}\n >\n {menuItems}\n </Flex>\n <Menu\n sx={{\n mr: ['-2px'],\n }}\n value={expanded}\n onClick={toggle}\n />\n </Flex>\n </Column>\n <Box\n sx={{\n opacity: expanded ? 1 : 0,\n pointerEvents: expanded ? 'all' : 'none',\n position: 'fixed',\n top: '0px',\n right: '0px',\n bottom: '0px',\n minWidth: '0px',\n maxHeight: '100vh',\n width: '100vw',\n backgroundColor: 'background',\n zIndex: 4000,\n pt: ['79px'],\n transition: 'opacity 0.25s',\n }}\n >\n <Container>\n <Row>\n <Column start={[2, 4, 7, 7]} width={[5, 4, 5, 5]}>\n <Box\n as='nav'\n sx={{\n display: expanded ? 'inherit' : 'none',\n mt: [5, 5, 5, 6],\n }}\n >\n <NavGroup\n links={links}\n nav={nav}\n mode={mode}\n setExpanded={setExpanded}\n />\n </Box>\n </Column>\n </Row>\n </Container>\n </Box>\n </Row>\n )\n}\n\nexport default Header\n","import React from 'react'\nimport { Box } from 'theme-ui'\n\nconst Monogram = ({ ...props }) => {\n return (\n <Box\n as='svg'\n width='80'\n stroke='none'\n fill='currentColor'\n viewBox='0 0 32 32'\n {...props}\n >\n <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'></path>\n <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'></path>\n <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'></path>\n </Box>\n )\n}\n\nexport default Monogram\n","import React from 'react'\nimport { Box, Grid, Link } from 'theme-ui'\nimport { default as NextLink } from 'next/link'\nimport Monogram from './monogram'\nimport Row from './row'\nimport Column from './column'\n\nconst Footer = () => {\n return (\n <Box\n sx={{\n mt: [7, 7, 7, 8],\n mb: [7, 7, 7, 8],\n pb: [2, 1, 0, 0],\n }}\n >\n <Row sx={{ mb: [0, 0, 4, 5] }}>\n <Column start={[1, 2]} width={[3, 3]}>\n <Box>\n <Box\n sx={{\n fontSize: [2, 2, 2, 3],\n fontFamily: 'heading',\n letterSpacing: 'mono',\n mb: [2],\n }}\n >\n EMAIL\n </Box>\n <Link\n href='mailto:hello@carbonplan.org'\n sx={{\n textDecoration: 'none',\n fontSize: [2, 2, 2, 3],\n }}\n >\n hello@carbonplan.org\n </Link>\n </Box>\n </Column>\n <Column\n start={[5]}\n width={[1]}\n dl={1}\n dr={1}\n sx={{\n display: ['flex', 'none', 'none', 'none'],\n justifyContent: ['center'],\n }}\n >\n <Monogram sx={{ mt: ['-4px'], width: '60px', height: '60px' }} />\n </Column>\n <Column start={[1, 5, 5, 5]} width={[3, 3]} sx={{ mt: [3, 0, 0, 0] }}>\n <Box>\n <Box\n sx={{\n fontSize: [2, 2, 2, 3],\n fontFamily: 'heading',\n letterSpacing: 'mono',\n mb: [2],\n }}\n >\n FOLLOW\n </Box>\n <Link\n href='https://twitter.com/carbonplanorg'\n sx={{\n textDecoration: 'none',\n fontSize: [2, 2, 2, 3],\n }}\n >\n @carbonplanorg\n </Link>\n </Box>\n </Column>\n <Column\n start={[1, 9]}\n width={[5, 4, 3, 3]}\n sx={{ mt: ['42px', '42px', 0, 0], mb: [3, 3, 0, 0] }}\n >\n <Box>\n <Box\n sx={{\n fontSize: [2, 2, 2, 3],\n fontFamily: 'body',\n color: 'secondary',\n }}\n >\n CarbonPlan is a registered non-profit public benefit corporation\n in California with 501(c)(3) status.\n </Box>\n </Box>\n </Column>\n </Row>\n <Row sx={{ mb: ['2px'], mt: [5, 5, 4] }}>\n <Column\n start={[1, 1, 2, 2]}\n width={[3, 2, 3, 3]}\n sx={{\n display: 'flex',\n alignItems: ['flex-start', 'flex-start', 'flex-end'],\n }}\n >\n <Box\n sx={{\n bottom: '0px',\n borderStyle: 'solid',\n borderColor: 'muted',\n borderWidth: '0px',\n borderTopWidth: '1px',\n pt: [2],\n }}\n >\n <Box\n sx={{\n color: 'secondary',\n fontSize: [1, 1, 1, 2],\n fontFamily: 'mono',\n letterSpacing: 'mono',\n }}\n >\n (c) 2021 CARBONPLAN\n </Box>\n </Box>\n </Column>\n <Column\n start={[4, 3, 5, 5]}\n width={[2, 2, 3, 3]}\n sx={{\n display: 'flex',\n alignItems: ['flex-start', 'flex-start', 'flex-end'],\n mt: [0, 0, 0, 0],\n }}\n >\n <Box\n sx={{\n bottom: '0px',\n borderStyle: 'solid',\n borderColor: 'muted',\n borderWidth: '0px',\n borderTopWidth: '1px',\n width: ['100%', 'auto', 'auto', 'auto'],\n pt: [2],\n }}\n >\n <NextLink href='/terms' passHref>\n <Box\n as='a'\n sx={{\n textDecoration: 'none',\n fontSize: [1, 1, 1, 2],\n color: 'secondary',\n fontFamily: 'mono',\n letterSpacing: 'mono',\n display: 'block',\n }}\n >\n READ OUR TERMS\n </Box>\n </NextLink>\n </Box>\n </Column>\n <Column\n start={[5, 7, 9, 9]}\n width={[2, 3, 3, 3]}\n sx={{ display: ['none', 'initial', 'initial', 'initial'] }}\n >\n <Monogram\n sx={{\n width: 80,\n height: 80,\n mt: [0, '-10px', 4, 5],\n mb: ['-12px'],\n }}\n />\n </Column>\n </Row>\n </Box>\n )\n}\n\nexport default Footer\n","import React from 'react'\nimport { Box, IconButton, useColorMode } from 'theme-ui'\nimport { useCallback } from 'react'\nimport { Sun } from '@carbonplan/icons'\n\nconst Dimmer = ({ sx, ...props }) => {\n const [colorMode, setColorMode] = useColorMode()\n\n const toggle = useCallback(() => {\n setColorMode(colorMode === 'light' ? 'dark' : 'light')\n }, [colorMode])\n\n return (\n <IconButton\n aria-label='Toggle dark mode'\n onClick={toggle}\n role='checkbox'\n sx={{\n width: 32,\n height: 32,\n display: 'inline-block',\n cursor: 'pointer',\n color: 'secondary',\n ...sx,\n }}\n {...props}\n >\n <Sun\n sx={{\n strokeWidth: '1.75',\n transition: 'stroke 0.15s',\n '@media (hover: hover) and (pointer: fine)': {\n '&:hover': {\n stroke: 'primary',\n },\n },\n }}\n />\n </IconButton>\n )\n}\n\nexport default Dimmer\n","import React from 'react'\nimport { Box, Text, Link, useThemeUI } from 'theme-ui'\n\nconst GitSha = () => {\n const sha = process.env.NEXT_PUBLIC_VERCEL_GIT_COMMIT_SHA\n const owner = process.env.NEXT_PUBLIC_VERCEL_GIT_REPO_OWNER\n const slug = process.env.NEXT_PUBLIC_VERCEL_GIT_REPO_SLUG\n\n const { theme } = useThemeUI()\n\n const color = theme.rawColors.secondary\n\n if (sha && owner && slug) {\n const shortSha = sha.substring(0, 7)\n const href = 'https://github.com/' + owner + '/' + slug + '/tree/' + sha\n\n return (\n <Box sx={{ display: 'inline-block', width: '87px' }}>\n <Separator color={color} />\n <Link\n href={href}\n sx={{\n whiteSpace: 'nowrap',\n display: 'inline-block',\n ml: [2],\n fontFamily: 'mono',\n letterSpacing: 'body',\n color: color,\n fontSize: [1],\n textTransform: 'uppercase',\n textDecoration: 'none',\n }}\n >\n {shortSha}\n </Link>\n </Box>\n )\n } else {\n // fallback\n return (\n <Box sx={{ display: 'inline-block', width: '87px' }}>\n <Separator color={color} />\n <Text\n sx={{\n whiteSpace: 'nowrap',\n display: 'inline-block',\n ml: [2],\n fontFamily: 'mono',\n letterSpacing: 'body',\n color: color,\n fontSize: [1],\n textTransform: 'uppercase',\n }}\n >\n {color}\n </Text>\n </Box>\n )\n }\n}\n\nconst Separator = ({ color }) => {\n return (\n <svg fill={color} opacity='0.8' viewBox='0 0 24 24' width='24' height='24'>\n <circle r={5} cx={19} cy={19} />\n </svg>\n )\n}\n\nexport default GitSha\n","import React from 'react'\nimport { Box, Text } from 'theme-ui'\nimport { useState, useEffect } from 'react'\nimport GitSha from './gitsha'\n\nconst Value = ({ mode }) => {\n const [display, setDisplay] = useState(init(mode))\n\n useEffect(() => {\n if (mode === 'mouse') {\n const setFromEvent = (e) => {\n const x = format(e.clientX, 4)\n const y = format(e.clientY, 4)\n setDisplay(`X,Y: ${x},${y}`)\n }\n window.addEventListener('mousemove', setFromEvent)\n return () => {\n window.removeEventListener('mousemove', setFromEvent)\n }\n }\n if (mode === 'scroll') {\n const setFromEvent = (e) => {\n const y = scrollFraction(window, document)\n setDisplay(`SCROLL: 0.${format((y * 100).toFixed(0), 2)}`)\n }\n window.addEventListener('scroll', setFromEvent)\n const y = scrollFraction(window, document)\n return () => {\n window.removeEventListener('scroll', setFromEvent)\n }\n }\n }, [])\n\n return (\n <Text\n sx={{\n whiteSpace: 'nowrap',\n display: 'inline-block',\n mr: '-6px',\n fontFamily: 'mono',\n letterSpacing: 'body',\n color: 'secondary',\n fontSize: [1],\n textTransform: 'uppercase',\n }}\n >\n {display}\n </Text>\n )\n}\n\nconst Metadata = ({ mode }) => {\n return (\n <Box\n sx={{\n userSelect: 'none',\n position: 'fixed',\n bottom: '42px',\n right: '24px',\n transformOrigin: 'right',\n transform: 'rotate(90deg)',\n display: ['none', 'none', 'initial'],\n }}\n >\n <Value mode={mode} />\n <GitSha />\n </Box>\n )\n}\n\nfunction init(mode) {\n if (mode === 'mouse') {\n return `X,Y: ${format(0, 4)},${format(0, 4)}`\n } else if (mode === 'scroll') {\n return `SCROLL: 0.${format((0).toFixed(0), 2)}`\n } else {\n return mode\n }\n}\n\nfunction format(num, pad) {\n return num.toString().padStart(pad, '0')\n}\n\nfunction scrollFraction(window, documnt) {\n return Math.min(window.scrollY / (document.body.offsetHeight - 770), 0.99)\n}\n\nexport default Metadata\n","import React from 'react'\nimport { Box } from 'theme-ui'\nimport { keyframes } from '@emotion/react'\n\nconst fade = keyframes({\n from: {\n opacity: 0,\n },\n to: {\n opacity: 1,\n },\n})\n\nconst FadeIn = ({ duration = 300, delay = 0, children, ...delegated }) => {\n return (\n <Box\n {...delegated}\n sx={{\n animationDuration: duration + 'ms',\n animationDelay: delay + 'ms',\n animationName: fade.toString(),\n animationFillMode: 'backwards',\n }}\n >\n {children}\n </Box>\n )\n}\n\nexport default FadeIn\n","const getScrollbarWidth = (document) => {\n const outer = document.createElement('div')\n outer.style.visibility = 'hidden'\n outer.style.width = '100px'\n document.body.appendChild(outer)\n outer.style.overflow = 'scroll'\n const inner = document.createElement('div')\n inner.style.width = '100%'\n outer.appendChild(inner)\n const delta = outer.offsetWidth - inner.offsetWidth\n outer.parentNode.removeChild(outer)\n return delta\n}\n\nexport default getScrollbarWidth\n","import React, { useEffect } from 'react'\nimport getScrollbarWidth from './utils/get-scrollbar-width'\n\nconst Scrollbar = () => {\n useEffect(() => {\n if (typeof document !== 'undefined') {\n const delta = getScrollbarWidth(document)\n if (delta > 0) {\n document.body.classList.add('custom-scrollbar')\n document\n .getElementsByTagName('html')[0]\n .classList.add('custom-scrollbar')\n }\n }\n }, [])\n return null\n}\n\nexport default Scrollbar\n","import React, { useState, useEffect } from 'react'\nimport { Box, Container } from 'theme-ui'\nimport Row from './row'\nimport Column from './column'\n\nconst Guide = ({ color = 'muted' }) => {\n const [display, setDisplay] = useState(false)\n\n useEffect(() => {\n function handler(event) {\n const { key, keyCode, metaKey } = event\n if (key === ';' && metaKey) {\n setDisplay((prev) => !prev)\n }\n }\n\n document.addEventListener('keydown', handler)\n return () => {\n document.removeEventListener('keydown', handler)\n }\n }, [])\n\n return (\n <Box\n sx={{\n position: 'fixed',\n width: '100%',\n left: 0,\n top: 0,\n zIndex: color === 'teal' ? 5000 : -1,\n pointerEvents: 'none',\n display: display ? 'initial' : 'none',\n }}\n >\n <Container>\n <Box sx={{ display: ['none', 'none', 'initial', 'initial'] }}>\n <GuideColumns\n indices={[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]}\n color={color}\n />\n </Box>\n <Box sx={{ display: ['none', 'initial', 'none', 'none'] }}>\n <GuideColumns indices={[1, 2, 3, 4, 5, 6, 7, 8]} color={color} />\n </Box>\n <Box sx={{ display: ['initial', 'none', 'none', 'none'] }}>\n <GuideColumns indices={[1, 2, 3, 4, 5, 6]} color={color} />\n </Box>\n </Container>\n </Box>\n )\n}\n\nconst colorCycle = [\n 'red',\n 'orange',\n 'yellow',\n 'green',\n 'teal',\n 'blue',\n 'purple',\n 'pink',\n]\n\nfunction GuideColumns({ indices, color }) {\n const sx = {\n outerGuideColumn: {\n borderStyle: 'solid',\n borderWidth: '0px',\n borderLeftWidth: color === 'teal' ? '0px' : '1px',\n borderRightWidth: color === 'teal' ? '0px' : '1px',\n opacity: color == 'teal' ? 0.4 : 1,\n },\n innerGuideColumn: {\n borderStyle: 'solid',\n borderWidth: '0px',\n borderLeftWidth: '0px',\n borderRightWidth: '0px',\n opacity: color == 'teal' ? 0.4 : 1,\n },\n }\n\n return (\n <Row>\n {indices.map((i) => {\n return (\n <Column\n key={i}\n start={[i]}\n width={[1, 1]}\n dl={0.5}\n dr={0.5}\n sx={{\n bg: color === 'teal' ? 'teal' : 'transparent',\n height: '100vh',\n ...sx.innerGuideColumn,\n }}\n >\n <Box\n sx={{\n mx: ['12px', 3, 3, 4],\n bg: color === 'teal' ? 'background' : 'transparent',\n height: '100%',\n borderLeftColor:\n color === 'rainbow' ? colorCycle[i % 8] : 'muted',\n borderRightColor:\n color === 'rainbow' ? colorCycle[i % 8] : 'muted',\n ...sx.outerGuideColumn,\n }}\n ></Box>\n </Column>\n )\n })}\n </Row>\n )\n}\n\nexport default Guide\n","import React from 'react'\nimport { IconButton } from 'theme-ui'\n\nconst Settings = ({ value, sx, ...props }) => {\n return (\n <IconButton\n sx={{\n cursor: 'pointer',\n fill: 'none',\n strokeWidth: '2px',\n stroke: 'text',\n '.paren': {\n opacity: '0',\n },\n '@media (hover: hover) and (pointer: fine)': {\n '&:hover .paren': {\n opacity: '1',\n },\n },\n ...sx,\n }}\n aria-label='Toggle Menu'\n {...props}\n >\n {!value && (\n <svg\n style={{\n width: '50px',\n height: '30px',\n transform: 'scale(2)',\n marginTop: '-3px',\n }}\n xmlns='http://www.w3.org/2000/svg'\n viewBox='0 0 68 36'\n >\n <line x1='24' y1='2.1' x2='24' y2='6.1' />\n <line x1='24' y1='24.1' x2='24' y2='33.9' />\n <line x1='44' y1='2.1' x2='44' y2='12.1' />\n <line x1='44' y1='30.1' x2='44' y2='33.9' />\n <circle cx='24' cy='15.1' r='5' />\n <circle cx='44' cy='21.1' r='5' />\n <path\n style={{ transition: 'all 0.2s' }}\n className='paren'\n d='M6.4,1.2c-6.3,10.3-6.3,23.3,0,33.6'\n />\n <path\n style={{ transition: 'all 0.2s' }}\n className='paren'\n d='M61.6,34.8c6.3-10.3,6.3-23.3,0-33.6'\n />\n </svg>\n )}\n {value && (\n <svg\n style={{\n width: '50px',\n height: '30px',\n transform: 'scale(2)',\n marginTop: '-3px',\n }}\n xmlns='http://www.w3.org/2000/svg'\n viewBox='0 0 68 36'\n >\n <line x1='50.85' y1='29.79' x2='17.15' y2='6.21' />\n <line x1='17.15' y1='29.79' x2='50.85' y2='6.21' />\n <path\n style={{ transition: 'all 0.2s' }}\n className='paren'\n d='M6.4,1.2c-6.3,10.3-6.3,23.3,0,33.6'\n />\n <path\n style={{ transition: 'all 0.2s' }}\n className='paren'\n d='M61.6,34.8c6.3-10.3,6.3-23.3,0-33.6'\n />\n </svg>\n )}\n </IconButton>\n )\n}\n\nexport default Settings\n","import React, { useEffect } from 'react'\nimport { useThemeUI, Container, Flex, Box } from 'theme-ui'\nimport Meta from './meta'\nimport Header from './header'\nimport Footer from './footer'\nimport Dimmer from './dimmer'\nimport Metadata from './metadata'\nimport FadeIn from './fade-in'\nimport Scrollbar from './scrollbar'\nimport Guide from './guide'\nimport Settings from './settings'\n\nconst Layout = ({\n title,\n description,\n card,\n children,\n status,\n nav,\n settings,\n footer = true,\n header = true,\n metadata = 'mouse',\n links = 'remote',\n dimmer = 'bottom',\n guide = true,\n scrollbar = true,\n fade = true,\n container = true,\n}) => {\n let content = children\n\n if (fade) {\n content = <FadeIn duration={250}>{content}</FadeIn>\n }\n if (container) {\n content = (\n <Box sx={{ mb: [8, 8, 9, 10] }}>\n <Container>{content}</Container>\n </Box>\n )\n }\n\n const { theme } = useThemeUI()\n\n useEffect(() => {\n if (!theme) return\n\n const handler = (e) => {\n if (e.matches && settings?.value && settings?.onClick) {\n settings?.onClick()\n }\n }\n\n const query = window.matchMedia(`(min-width: ${theme.breakpoints[1]})`)\n query.onchange = handler\n\n return () => {\n query.onchange = null\n }\n }, [theme?.breakpoints, settings?.value, settings?.onClick])\n\n const menuItems = [\n <Dimmer\n key='dimmer'\n sx={{\n color: 'primary',\n mt: '-2px',\n display: [\n 'block',\n 'block',\n dimmer === 'top' ? 'block' : 'none',\n dimmer === 'top' ? 'block' : 'none',\n ],\n }}\n />,\n ]\n\n if (settings) {\n menuItems.push(\n <Settings\n key='settings'\n sx={{ mr: ['2px'], display: ['inherit', 'inherit', 'none', 'none'] }}\n {...settings}\n />\n )\n }\n\n return (\n <>\n {guide && <Guide color={guide} />}\n {scrollbar && <Scrollbar />}\n <Meta card={card} description={description} title={title} />\n <Flex\n sx={{\n flexDirection: 'column',\n minHeight: '100vh',\n }}\n >\n {header && (\n <Box\n as='header'\n sx={{\n width: '100%',\n borderStyle: 'solid',\n borderColor: 'muted',\n borderWidth: '0px',\n borderBottomWidth: '1px',\n position: 'sticky',\n top: 0,\n bg: 'background',\n height: '56px',\n zIndex: 2000,\n }}\n >\n <Container>\n <Header\n mode={links}\n status={status}\n nav={nav}\n menuItems={menuItems}\n />\n </Container>\n </Box>\n )}\n <Box\n sx={{\n width: '100%',\n flex: '1 1 auto',\n }}\n >\n {content}\n </Box>\n {footer && (\n <Box\n as='footer'\n sx={{\n width: '100%',\n borderStyle: 'solid',\n borderColor: 'muted',\n borderWidth: '0px',\n borderTopWidth: '1px',\n }}\n >\n <Container>\n <Footer />\n </Container>\n </Box>\n )}\n {dimmer === 'bottom' && (\n <Box\n sx={{\n display: ['none', 'none', 'initial', 'initial'],\n position: ['fixed'],\n right: [13],\n bottom: [17, 17, 15, 15],\n }}\n >\n <Dimmer />\n </Box>\n )}\n {metadata && <Metadata mode={metadata} />}\n </Flex>\n </>\n )\n}\n\nexport default Layout\n","import React from 'react'\nimport { Box } from 'theme-ui'\n\nconst Tag = ({ label, value, sx, children, ...props }) => {\n const color = sx && sx.color ? sx.color : 'primary'\n const isClickable = props && (props.onClick || props.onDoubleClick)\n\n return (\n <Box\n as={isClickable ? 'button' : 'span'}\n role='checkbox'\n aria-checked={value}\n aria-label={label}\n sx={{\n display: 'inline-block',\n fontSize: [1, 1, 1, 2],\n fontFamily: 'mono',\n letterSpacing: 'mono',\n cursor: isClickable ? 'pointer' : 'inherit',\n color: color,\n backgroundColor: 'transparent',\n borderStyle: 'solid',\n borderColor: color,\n lineHeight: 'body',\n borderWidth: '0px',\n borderBottomWidth: '1px',\n textTransform: 'uppercase',\n userSelect: 'none',\n transition: 'opacity 0.05s',\n pt: ['1px'],\n pb: ['2px'],\n px: [0],\n m: [0],\n opacity: value == null || value ? 1 : color == 'primary' ? 0.24 : 0.33,\n ...sx,\n }}\n {...props}\n >\n {children}\n </Box>\n )\n}\n\nexport default Tag\n","import React from 'react'\nimport { Box } from 'theme-ui'\nimport Tag from './tag'\n\nconst sx = {\n label: {\n fontFamily: 'mono',\n letterSpacing: 'mono',\n fontSize: [1, 1, 1, 2],\n color: 'secondary',\n userSelect: 'none',\n textTransform: 'uppercase',\n },\n}\n\nconst duplicateOptions = (options, defaultValue, overrides = {}) => {\n return Object.keys(options).reduce(\n (o, key) => Object.assign(o, { [key]: overrides[key] || defaultValue }),\n {}\n )\n}\n\nconst isAll = (option) => {\n return (\n Object.keys(option).filter((d) => option[d]).length ==\n Object.keys(option).length\n )\n}\n\nconst updateValues = ({ values, multiSelect, setValues, value }) => {\n const isAllAlreadySelected = isAll(values)\n const isSelectingAll = value === 'all'\n\n let updatedToggle\n\n if (multiSelect) {\n if (isSelectingAll && !isAllAlreadySelected) {\n // select all\n updatedToggle = duplicateOptions(values, true)\n } else if (isSelectingAll && isAllAlreadySelected) {\n // deselect all\n updatedToggle = duplicateOptions(values, false)\n } else {\n // de/select value, inherit other values\n updatedToggle = { ...values, [value]: !values[value] }\n }\n } else {\n if (isSelectingAll && !isAllAlreadySelected) {\n // select all\n updatedToggle = duplicateOptions(values, true)\n } else if (isSelectingAll && isAllAlreadySelected) {\n // do nothing\n } else {\n // select only value\n updatedToggle = duplicateOptions(values, false, { [value]: true })\n }\n }\n\n if (updatedToggle) {\n setValues(updatedToggle)\n }\n}\n\nconst Filter = ({\n values,\n setValues,\n label,\n colors,\n showAll = false,\n multiSelect = false,\n ...props\n}) => {\n return (\n <Box {...props}>\n {label && <Box sx={sx.label}>{label}</Box>}\n <Box sx={{ mt: label ? [3] : 0 }}>\n {showAll && (\n <Tag\n onClick={() =>\n updateValues({\n values: values,\n multiSelect,\n setValues: setValues,\n value: 'all',\n })\n }\n value={isAll(values)}\n sx={{ mr: [2] }}\n >\n All\n </Tag>\n )}\n {Object.keys(values).map((d, i) => (\n <Tag\n onClick={() =>\n updateValues({\n values: values,\n multiSelect,\n setValues: setValues,\n value: d,\n })\n }\n onDoubleClick={() =>\n updateValues({\n values: values,\n multiSelect: false,\n setValues: setValues,\n value: d,\n })\n }\n key={i}\n value={values[d]}\n sx={{\n width: 'max-content',\n color: colors ? colors[d] : 'primary',\n mr: [2],\n mb: [1],\n }}\n >\n {d}\n </Tag>\n ))}\n </Box>\n </Box>\n )\n}\n\nexport default Filter\n","import React from 'react'\nimport { Box } from 'theme-ui'\n\nconst sizes = {\n xs: [1],\n sm: [3],\n md: [5],\n lg: [7],\n xl: [9],\n}\nconst Group = ({ children, direction = 'vertical', spacing = 'md' }) => {\n let marginValue\n if (typeof spacing === 'string') {\n marginValue = sizes[spacing]\n } else if (typeof spacing === 'number') {\n marginValue = [spacing]\n } else if (\n Array.isArray(spacing) &&\n spacing.every((el) => typeof el === 'number')\n ) {\n marginValue = spacing\n }\n\n if (!marginValue) {\n throw new Error(\n 'Invalid spacing size. Must be numeric value(s) or one of xs, sm, md, lg, or xl'\n )\n }\n\n if (!['horizontal', 'vertical'].includes(direction)) {\n throw new Error(\n 'Invalid direction value. Must be either horizontal or vertical'\n )\n }\n\n const marginProperty = direction === 'vertical' ? 'mt' : 'ml'\n const additionalStyles =\n direction === 'horizontal' ? { display: 'inline-block' } : {}\n return (\n <Box>\n {React.Children.map(children, (child, i) => {\n return (\n <Box\n sx={{\n [marginProperty]: i > 0 ? marginValue : 0,\n ...additionalStyles,\n }}\n >\n {child}\n </Box>\n )\n })}\n </Box>\n )\n}\n\nexport default Group\n","import React from 'react'\nimport { Box } from 'theme-ui'\nimport Column from './column'\n\nconst Sidenote = ({ children, variant = 'h1' }) => {\n let mt\n if (variant === 'h1') mt = [4, '27px', '42px', '54px']\n if (variant === 'h2') mt = [4, 4, '14px', '54px']\n return (\n <>\n <Column start={[1, 4, 8, 8]} width={[1, 1, 1, 1]}>\n <Box\n sx={{\n mt: mt,\n fontFamily: 'faux',\n letterSpacing: 'faux',\n fontSize: [2, 2, 2, 3],\n textAlign: 'right',\n }}\n >\n /\n </Box>\n </Column>\n <Column start={[2, 5, 9, 9]} width={[3, 3, 2, 2]}>\n <Box\n sx={{\n mt: mt,\n fontFamily: 'faux',\n letterSpacing: 'faux',\n fontSize: [2, 2, 2, 3],\n height: ['100%', '0px', '0px', '0px'],\n }}\n >\n {children}\n </Box>\n </Column>\n </>\n )\n}\n\nexport default Sidenote\n","import React, { forwardRef } from 'react'\nimport { Input as ThemedInput } from 'theme-ui'\nimport getSizeStyles from './utils/get-size-styles'\n\nconst Input = ({ size = 'sm', inverted, sx, ...props }, ref) => {\n const defaultColor = inverted ? 'secondary' : 'primary'\n\n const styles = {\n color: defaultColor,\n borderColor: 'secondary',\n borderStyle: 'solid',\n borderWidth: '0px',\n borderBottomWidth: '1px',\n borderRadius: '0px',\n transition: 'border 0.15s',\n borderBottomWidth: '1px',\n width: 'calc(min(15ch, 100%))',\n p: [0],\n py: ['2px'],\n 'input::-webkit-outer-spin-button': {\n WebkitAppearance: 'none',\n margin: 0,\n },\n 'input::-webkit-inner-spin-button': {\n WebkitAppearance: 'none',\n margin: 0,\n },\n ':focus': {\n borderColor: 'primary',\n },\n ':focus-visible': {\n outline: 'none !important',\n background: 'none !important',\n },\n ...getSizeStyles(size),\n ...sx,\n }\n return <ThemedInput {...props} ref={ref} sx={styles} />\n}\n\nexport default forwardRef(Input)\n","import React, { forwardRef } from 'react'\nimport { useThemeUI, Slider as ThemeSlider } from 'theme-ui'\n\nconst Slider = ({ sx, ...props }, ref) => {\n const color = sx && sx.color ? sx.color : 'primary'\n const {\n theme: { rawColors: colors },\n } = useThemeUI()\n\n return (\n <ThemeSlider\n ref={ref}\n sx={{\n '&::-webkit-slider-thumb': {\n height: [22, 18, 16],\n width: [22, 18, 16],\n boxShadow: `0 0 0 0px ${colors.secondary}`,\n transition: 'box-shadow .15s ease',\n },\n '&::-moz-range-thumb': {\n height: [22, 18, 16],\n width: [22, 18, 16],\n boxShadow: `0 0 0 0px ${colors.secondary}`,\n transition: 'box-shadow .15s ease',\n },\n ':focus-visible': {\n outline: 'none !important',\n background: `${colors.secondary} !important`,\n },\n ':focus': {\n color: color,\n '&::-webkit-slider-thumb': {\n boxShadow: `0 0 0 4px ${colors.secondary}`,\n },\n '&::-moz-range-thumb': {\n boxShadow: `0 0 0 4px ${colors.secondary}`,\n },\n },\n color: color,\n ...sx,\n }}\n {...props}\n />\n )\n}\n\nexport default forwardRef(Slider)\n","import React from 'react'\nimport { Box } from 'theme-ui'\nimport Row from './row'\nimport Column from './column'\n\nconst styles = {\n reset: {\n verticalAlign: 'baseline',\n border: 0,\n outline: 0,\n margin: 0,\n padding: 0,\n },\n row: {\n borderStyle: 'solid',\n borderWidth: '0px',\n borderTopWidth: '1px',\n borderColor: 'muted',\n pt: [3, 3, 3, '20px'],\n pb: [3, 3, 3, '20px'],\n mb: ['2px'],\n },\n header: {\n display: 'block',\n textTransform: 'uppercase',\n letterSpacing: 'smallcaps',\n fontFamily: 'heading',\n fontSize: [2, 2, 2, 3],\n },\n index: {\n display: 'block',\n textTransform: 'uppercase',\n letterSpacing: 'smallcaps',\n fontFamily: 'heading',\n fontSize: [2, 2, 2, 3],\n },\n entry: {\n display: 'block',\n fontSize: [2, 2, 2, 3],\n fontFamily: 'faux',\n letterSpacing: 'faux',\n mb: ['1px'],\n mt: [2, 0, 0, 0],\n },\n}\n\nconst Table = ({\n data,\n sx,\n color,\n header,\n columns,\n start,\n width,\n index = true,\n borderBottom = true,\n borderTop = true,\n}) => {\n if (!start || !columns || !width) {\n throw new Error('Must provide columns, start, and width')\n }\n return (\n <Box as='table' sx={{ display: 'block', ...sx }}>\n <Box as='tbody' sx={{ display: 'block' }}>\n {header && (\n <Row\n as='tr'\n sx={{\n ...styles.reset,\n ...styles.header,\n ...styles.row,\n color: color,\n borderTopWidth: !borderTop ? '0px' : '1px',\n }}\n >\n <Column as='td' start={[1]} width={columns} sx={styles.index}>\n {header}\n </Column>\n </Row>\n )}\n {data.map((row, i) => {\n return (\n <Row\n as='tr'\n columns={columns}\n key={i}\n sx={{\n ...styles.reset,\n ...styles.row,\n pb:\n borderBottom && i === data.length - 1\n ? ['18px', '18px', '18px', '22px']\n : [3, 3, 3, '20px'],\n borderBottomWidth:\n borderBottom && i === data.length - 1 ? '1px' : '0px',\n borderTopWidth:\n !borderTop && i === 0 && !header ? '0px' : '1px',\n }}\n >\n {row.map((column, j) => {\n return (\n <Column\n as='td'\n key={j}\n start={start[j]}\n width={width[j]}\n sx={\n j == 0 && index\n ? { ...styles.reset, ...styles.index }\n : { ...styles.reset, ...styles.entry }\n }\n >\n {column}\n </Column>\n )\n })}\n </Row>\n )\n })}\n </Box>\n </Box>\n )\n}\n\nexport default Table\n","import React, { forwardRef } from 'react'\nimport { Box } from 'theme-ui'\nimport { transparentize } from '@theme-ui/color'\n\nconst Toggle = ({ value, onClick, disabled, sx, ...props }, ref) => {\n const color = sx && sx.color ? sx.color : 'primary'\n value = disabled ? false : value\n return (\n <Box\n ref={ref}\n as='button'\n onClick={onClick}\n role='checkbox'\n aria-checked={value}\n aria-label='Toggle'\n sx={{\n border: 'none',\n background: 'none',\n cursor: disabled ? 'default' : 'pointer',\n p: [0],\n m: [0],\n display: 'inline-block',\n ...sx,\n }}\n {...props}\n >\n <Box\n sx={{\n width: '50px',\n height: '20px',\n borderRadius: '20px',\n backgroundColor: value\n ? transparentize(color, color == 'primary' ? 0.5 : 0.45)\n : 'muted',\n position: 'relative',\n transition: '0.15s',\n display: 'inline-block',\n }}\n >\n <Box\n sx={{\n width: '14px',\n height: '14px',\n borderRadius: '7px',\n position: 'absolute',\n left: value ? '32px' : '4px',\n top: '3px',\n backgroundColor: value ? color : 'secondary',\n transition: '0.15s',\n }}\n ></Box>\n </Box>\n </Box>\n )\n}\n\nexport default forwardRef(Toggle)\n","const defaultOptions = {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n}\n\nconst formatDateElement = (date, element, option) => {\n if (!option) {\n return null\n }\n\n const format = typeof option === 'string' ? option : defaultOptions[element]\n\n const result = date.toLocaleString('default', {\n [element]: format,\n })\n\n if (format === 'numeric' && element === 'day') {\n return result.padStart(2, '0')\n } else {\n return result\n }\n}\nconst formatDate = (date, options = defaultOptions) => {\n const d = new Date(date.replace(/-/g, '/'))\n\n const month = formatDateElement(d, 'month', options.month)\n const day = formatDateElement(d, 'day', options.day)\n const year = formatDateElement(d, 'year', options.year)\n\n return [month, day, year].filter(Boolean).join(' ')\n}\n\nexport default formatDate\n","import React from 'react'\nimport { Box } from 'theme-ui'\nimport { transparentize } from '@theme-ui/color'\n\nconst Badge = ({ sx, children, ...props }) => {\n const color = sx && sx.color ? sx.color : 'primary'\n return (\n <Box\n sx={{\n display: 'inline-block',\n width: 'fit-content',\n height: ['24px', '24px', '24px', '26px'],\n borderRadius: '5px',\n backgroundColor:\n color == 'primary' || color == 'secondary'\n ? 'muted'\n : transparentize(color, 0.7),\n textAlign: 'center',\n userSelect: 'none',\n fontSize: [2, 2, 2, 3],\n ...sx,\n }}\n {...props}\n >\n <Box\n sx={{\n letterSpacing: '0.02em',\n fontFamily: 'mono',\n mt: ['1px', '1px', '1px', '0px'],\n px: [1, 1, 1, '5px'],\n color: color,\n }}\n >\n {children}\n </Box>\n </Box>\n )\n}\n\nexport default Badge\n","import React from 'react'\nimport { Box, Styled, Container, Grid } from 'theme-ui'\nimport { PoopSad } from '@carbonplan/emoji'\nimport Layout from './layout'\nimport Row from './row'\nimport Column from './column'\n\nconst Custom404 = () => {\n return (\n <Layout footer={false} title={'404 / carbonplan'}>\n <Row sx={{ mb: [5, 0, 0], pt: [0, 0, 6] }}>\n <Column start={[1, 1, 3, 3]} width={[6, 4, 4, 4]}>\n <Styled.h1>Oops!</Styled.h1>\n <Box\n sx={{\n fontSize: [4, 4, 4, 5],\n lineHeight: 'h3',\n mt: [3, 4, 4],\n mb: [2, 3, 3],\n maxWidth: ['90%', '90%', '400px'],\n }}\n >\n Sorry but we can't seem to find the page you are looking for.\n </Box>\n <Box\n sx={{\n color: 'secondary',\n fontFamily: 'mono',\n letterSpacing: 'mono',\n fontSize: [2, 2, 2, 3],\n mt: [4, 5, 5],\n }}\n >\n ERROR CODE 404\n </Box>\n </Column>\n <Column start={[2, 5, 7, 7]} width={[4, 4, 4, 4]}>\n <Box\n sx={{\n width: ['100%'],\n mt: [2, 4, 4, 5],\n fill: 'primary',\n }}\n >\n <PoopSad sx={{ width: '100%', height: 'auto' }} />\n </Box>\n </Column>\n </Row>\n </Layout>\n )\n}\n\nexport default Custom404\n","import React from 'react'\nimport { Box, IconButton } from 'theme-ui'\n\nconst Expander = ({ value, id, onClick, sx }) => {\n return (\n <IconButton\n onClick={onClick}\n id={id}\n role='checkbox'\n aria-checked={value}\n aria-label='Expand'\n sx={{\n display: 'inline-block',\n width: 24,\n height: 24,\n p: [1],\n cursor: 'pointer',\n fill: 'secondary',\n stroke: 'secondary',\n '@media (hover: hover) and (pointer: fine)': {\n '&:hover': {\n fill: 'primary',\n stroke: 'primary',\n },\n },\n ...sx,\n }}\n >\n <svg viewBox='0 0 16 16'>\n <path\n d='M8,0 V16 M0,8 H16'\n style={{\n strokeWidth: 2,\n transition: '0.25s all',\n transformOrigin: '8px 8px',\n transform: value ? 'rotate(45deg)' : '',\n }}\n />\n </svg>\n </IconButton>\n )\n}\n\nexport default Expander\n","import React from 'react'\nimport { Box } from 'theme-ui'\nimport Row from './row'\nimport Column from './column'\nimport Sidenote from './sidenote'\n\nconst Heading = ({\n children,\n sidenote,\n description,\n descriptionStart = [1, 3, 5, 5],\n descriptionWidth = [5, 5, 5, 4],\n sx,\n}) => {\n return (\n <Row sx={{ mt: [5, 6, 7, 8], mb: [5, 6, 7, 8] }}>\n <Column start={[1, 1, 2, 2]} width={[6, 2, 3, 3]}>\n <Box as='h1' variant='styles.h1' sx={{ my: [0, 0, 0, 0], ...sx }}>\n {children}\n </Box>\n </Column>\n {sidenote && <Sidenote>{sidenote}</Sidenote>}\n {description && (\n <Column start={descriptionStart} width={descriptionWidth}>\n <Box\n sx={{\n mt: [4, '5px', '20px', '31px'],\n fontSize: [2, 2, 2, 3],\n }}\n >\n {description}\n </Box>\n </Column>\n )}\n </Row>\n )\n}\n\nexport default Heading\n","import React, { useRef } from 'react'\nimport { Box } from 'theme-ui'\nimport { Arrow } from '@carbonplan/icons'\nimport getProps from './utils/get-props'\nimport getSizeStyles from './utils/get-size-styles'\n\nconst Select = ({ children, size = 'sm', sx, sxSelect, ...props }) => {\n const color = sx && sx.color ? sx.color : 'primary'\n const sizeStyles = getSizeStyles(size)\n const ref = useRef(null)\n\n const { onChange } = props\n const omitOnChange = getProps((k) => k !== 'onChange')(props)\n\n if (!['xs', 'sm', 'md'].includes(size)) {\n throw new Error('Size must be xs, sm, or md')\n }\n\n let pr, height, width, ml, top\n\n if (size === 'xs') {\n height = [14, 14, 14, 16]\n width = [14, 14, 14, 14]\n top = ['1px']\n ml = ['-14px', '-14px', '-14px', '-16px']\n }\n\n if (size === 'sm') {\n height = [15, 15, 15, 20]\n width = [15, 15, 15, 20]\n top = ['1px']\n ml = ['-16px', '-16px', '-16px', '-20px']\n }\n\n if (size === 'md') {\n height = [20, 20, 20, 20]\n width = [20, 20, 20, 20]\n top = ['2px']\n ml = ['-20px', '-20px', '-20px', '-20px']\n }\n\n pr = width.map((d) => d + 12)\n\n return (\n <Box\n sx={{\n display: 'inline-block',\n ...sx,\n }}\n >\n <Box\n as='select'\n ref={ref}\n onChange={(e) => {\n ref.current.blur()\n if (onChange) onChange(e)\n }}\n sx={{\n ...sizeStyles,\n lineHeight: 'normal',\n cursor: 'pointer',\n WebkitAppearance: 'none',\n MozAppearance: 'none',\n pb: ['5px'],\n bg: 'transparent',\n pr: pr,\n border: 'none',\n borderBottomStyle: 'solid',\n borderBottomWidth: '1px',\n borderBottomColor: 'primary',\n borderRadius: '0px',\n color: 'text',\n width: 'fit-content',\n color: color,\n userSelect: 'none',\n '@media (hover: none) and (pointer: coarse)': {\n '&:focus-visible': {\n outline: 'none !important',\n background: 'transparent !important',\n },\n },\n ...sxSelect,\n }}\n {...omitOnChange}\n >\n {children}\n </Box>\n <Arrow\n sx={{\n width: width,\n height: height,\n position: 'relative',\n ml: ml,\n top: top,\n fill: 'secondary',\n transform: 'rotate(135deg)',\n pointerEvents: 'none',\n }}\n />\n </Box>\n )\n}\n\nexport default Select\n","const getProps = (test) => (props) => {\n const next = {}\n for (const key in props) {\n if (test(key || '')) next[key] = props[key]\n }\n return next\n}\n\nexport default getProps\n","import React from 'react'\n\nconst Tracking = ({ id }) => {\n if (!id) {\n return null\n }\n return (\n <>\n <script async src={`https://www.googletagmanager.com/gtag/js?id=${id}`} />\n <script\n dangerouslySetInnerHTML={{\n __html: `\n window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n gtag('js', new Date());\n gtag('config', '${id}', {\n page_path: window.location.pathname,\n });\n `,\n }}\n />\n </>\n )\n}\n\nexport default Tracking\n","import React from 'react'\nimport { Box } from 'theme-ui'\nimport Row from './row'\nimport Column from './column'\n\nconst Tray = ({ expanded, sx, children }) => {\n return (\n <>\n <Box\n sx={{\n position: 'fixed',\n top: '56px',\n bottom: '0px',\n left: '0px',\n width: 'calc(100vw)',\n mt: ['56px'],\n bg: 'background',\n zIndex: 1000,\n transition: 'opacity 0.15s',\n opacity: expanded ? 0.9 : 0,\n pointerEvents: expanded ? 'all' : 'none',\n }}\n />\n <Box\n sx={{\n position: 'fixed',\n width: 'calc(100vw)',\n top: '0px',\n mt: ['56px'],\n pb: [6, 7, 7, 8],\n pt: [5, 6, 7, 8],\n bg: 'background',\n zIndex: 1100,\n borderStyle: 'solid',\n borderColor: 'muted',\n borderWidth: '0px',\n borderBottomWidth: '1px',\n transition: 'transform 0.15s',\n ml: [-3, -4, -5, -6],\n pl: [3, 4, 5, 6],\n pr: [3, 4, 5, 6],\n transform: expanded ? 'translateY(0)' : 'translateY(-100%)',\n ...sx,\n }}\n >\n <Row>\n <Column start={[1, 1, 1, 1]} width={[6, 8, 10, 10]}>\n {children}\n </Column>\n </Row>\n </Box>\n </>\n )\n}\n\nexport default Tray\n"],"names":["forwardRef","ref","href","children","internal","tracking","props","startsWith","React","NextLink","passHref","ThemedLink","action","category","includes","track","e","window","gtag","event_category","event_label","label","value","console","warn","event","onClick","onContextMenu","getSizeStyles","size","Error","fontSize","fontFamily","letterSpacing","lineHeight","offset","margin","height","width","strokeWidth","prefix","suffix","inverted","sx","align","prefixHover","suffixHover","prefixAlign","suffixAlign","prefixOffset","suffixOffset","color","baseColor","hoverColor","transform","type","hover","cloneElement","id","position","mr","verticalAlign","transition","ml","style","border","background","display","padding","textAlign","cursor","Inner","Box","as","Link","textDecoration","mb","fill","pb","textTransform","Arrow","top","styles","setClim","borderBottom","colors","primary","outline","userSelect","minWidth","DIMENSIONS","Gradient","colormap","discrete","horizontal","step","length","css","map","d","i","join","minHeight","mt","hinted","Label","units","alignSelf","writingMode","whiteSpace","overflow","Column","start","dl","dr","makeArray","input","Array","isArray","flat","end","gridColumnStart","gridColumnEnd","Meta","title","description","card","Head","name","content","rel","crossOrigin","sizes","property","Logo","stroke","viewBox","Row","columnGap","rowGap","columns","gap","Number","isInteger","Grid","Menu","IconButton","opacity","marginTop","xmlns","x1","y1","x2","y2","className","current","first","borderStyle","borderColor","borderWidth","borderBottomWidth","borderTopWidth","py","links","url","HoverArrow","pointerEvents","left","Nav","link","mode","nav","setExpanded","NavGroup","key","Header","status","menuItems","useState","expanded","pt","alignItems","zIndex","Flex","justifyContent","right","bottom","maxHeight","backgroundColor","Container","Monogram","Footer","Dimmer","useColorMode","colorMode","setColorMode","toggle","useCallback","role","Sun","GitSha","sha","process","env","NEXT_PUBLIC_VERCEL_GIT_COMMIT_SHA","owner","NEXT_PUBLIC_VERCEL_GIT_REPO_OWNER","slug","NEXT_PUBLIC_VERCEL_GIT_REPO_SLUG","useThemeUI","theme","rawColors","secondary","shortSha","substring","Separator","Text","r","cx","cy","Value","format","toFixed","init","setDisplay","useEffect","setFromEvent","x","clientX","y","clientY","addEventListener","removeEventListener","documnt","Math","min","scrollY","document","body","offsetHeight","scrollFraction","Metadata","transformOrigin","num","pad","toString","padStart","fade","keyframes","from","to","FadeIn","duration","delay","delegated","animationDuration","animationDelay","animationName","animationFillMode","getScrollbarWidth","outer","createElement","visibility","appendChild","inner","delta","offsetWidth","parentNode","removeChild","Scrollbar","classList","add","getElementsByTagName","Guide","handler","metaKey","prev","GuideColumns","indices","colorCycle","outerGuideColumn","borderLeftWidth","borderRightWidth","innerGuideColumn","bg","mx","borderLeftColor","borderRightColor","Settings","Layout","settings","footer","header","metadata","dimmer","guide","scrollbar","container","query","matchMedia","breakpoints","onchange","matches","push","flexDirection","flex","Tag","isClickable","onDoubleClick","px","m","duplicateOptions","options","defaultValue","overrides","Object","keys","reduce","o","assign","isAll","option","filter","updateValues","updatedToggle","values","multiSelect","setValues","isAllAlreadySelected","isSelectingAll","xs","sm","md","lg","xl","Sidenote","variant","borderRadius","p","WebkitAppearance","ThemedInput","ThemeSlider","boxShadow","reset","row","index","entry","disabled","transparentize","defaultOptions","month","day","year","formatDateElement","date","element","result","toLocaleString","clim","setClimStep","sxClim","dx","climRef","useRef","climMinDragging","setClimMinDragging","climMaxDragging","setClimMaxDragging","dy","scale","draggingFunction","pageX","pageY","max","handleMouseDown","target","setAttribute","updater","listener","code","activeElement","preventDefault","focus","increment","decrement","ClimMin","tabIndex","onMouseDown","ClimMax","flexGrow","Styled","h1","maxWidth","PoopSad","showAll","marginValue","direction","spacing","every","el","marginProperty","additionalStyles","Children","child","sidenote","descriptionStart","descriptionWidth","my","test","pr","sxSelect","sizeStyles","onChange","omitOnChange","k","next","blur","MozAppearance","borderBottomStyle","borderBottomColor","data","borderTop","column","j","async","src","dangerouslySetInnerHTML","__html","pl","Date","replace","Boolean"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/link.js","../src/utils/get-size-styles.js","../src/button.js","../src/callout.js","../src/colorbar.js","../src/column.js","../src/meta.js","../src/logo.js","../src/row.js","../src/menu.js","../src/header.js","../src/monogram.js","../src/footer.js","../src/dimmer.js","../src/gitsha.js","../src/metadata.js","../src/fade-in.js","../src/utils/get-scrollbar-width.js","../src/scrollbar.js","../src/guide.js","../src/settings.js","../src/layout.js","../src/tag.js","../src/filter.js","../src/group.js","../src/sidenote.js","../src/input.js","../src/slider.js","../src/table.js","../src/toggle.js","../src/utils/format-date.js","../src/badge.js","../src/blockquote.js","../src/custom-404.js","../src/expander.js","../src/heading.js","../src/select.js","../src/utils/get-props.js","../src/tracking.js","../src/tray.js"],"sourcesContent":["import React, { forwardRef } from 'react'\nimport { Link as ThemedLink } from 'theme-ui'\nimport { default as NextLink } from 'next/link'\n\nconst event = ({ action, category, label, value }) => {\n if (typeof window.gtag !== 'function') {\n console.warn(`Missing window.gtag, skipping analytics action: '${action}'.`)\n return\n }\n\n window.gtag('event', action, {\n event_category: category,\n event_label: label,\n value: value,\n })\n}\n\nconst Link = (\n { href, children, internal = false, tracking = false, ...props },\n ref\n) => {\n if (internal || (href && href.startsWith('/'))) {\n return (\n <NextLink href={href} passHref>\n <ThemedLink ref={ref} {...props}>\n {children}\n </ThemedLink>\n </NextLink>\n )\n } else if (tracking) {\n let action\n let category\n if (href && href.includes('pdf')) {\n action = 'PDF'\n category = 'download'\n } else {\n action = 'website'\n category = 'external'\n }\n const track = (e) => {\n event({\n action: action,\n category: category,\n label: href,\n })\n }\n return (\n <ThemedLink\n ref={ref}\n onClick={track}\n onContextMenu={track}\n href={href}\n {...props}\n >\n {children}\n </ThemedLink>\n )\n } else {\n return (\n <ThemedLink ref={ref} href={href} {...props}>\n {children}\n </ThemedLink>\n )\n }\n}\n\nexport default forwardRef(Link)\n","const getSizeStyles = (size) => {\n if (!['xs', 'sm', 'md', 'lg', 'xl'].includes(size)) {\n throw new Error('Size must be xs, sm, md, lg, or xl')\n }\n\n let fontSize, fontFamily, letterSpacing, lineHeight\n\n if (size === 'xs') {\n fontSize = [2, 2, 2, 3]\n fontFamily = 'body'\n letterSpacing = 'body'\n lineHeight = [1.2]\n }\n\n if (size === 'sm') {\n fontSize = [3, 3, 3, 4]\n fontFamily = 'body'\n letterSpacing = 'body'\n lineHeight = [1.2]\n }\n\n if (size === 'md') {\n fontSize = [4, 4, 4, 5]\n fontFamily = 'body'\n letterSpacing = 'body'\n lineHeight = [1.2]\n }\n\n if (size === 'lg') {\n fontSize = [5, 5, 6, 7]\n fontFamily = 'heading'\n letterSpacing = 'heading'\n lineHeight = [1.2, 1.2, 1.25, 1.25]\n }\n\n if (size === 'xl') {\n fontSize = [6, 7, 8, 9]\n fontFamily = 'heading'\n letterSpacing = 'heading'\n lineHeight = [1.25]\n }\n\n return { fontSize, fontFamily, letterSpacing, lineHeight }\n}\n\nexport default getSizeStyles\n","import React, { forwardRef, cloneElement } from 'react'\nimport { Box } from 'theme-ui'\nimport Link from './link'\nimport getSizeStyles from './utils/get-size-styles'\n\nconst Button = (\n {\n size = 'sm',\n prefix,\n suffix,\n inverted,\n sx,\n children,\n align,\n href,\n internal,\n tracking,\n ...props\n },\n ref\n) => {\n if (!['xs', 'sm', 'md', 'lg', 'xl'].includes(size)) {\n throw new Error('Size must be xs, sm, md, lg, or xl')\n }\n\n let offset, margin, top, height, width, strokeWidth\n\n const color = sx && sx.color ? sx.color : null\n const baseColor = color || (inverted ? 'secondary' : 'primary')\n const hoverColor = color ? 'primary' : inverted ? 'primary' : 'secondary'\n\n if (size === 'xs') {\n margin = ['6px', '6px', '6px', '6px']\n height = [12, 12, 12, 13]\n width = [12, 12, 12, 13]\n strokeWidth = [1.5, 1.5, 1.5, 1.5]\n offset = { transform: 'translateY(0.25px)' }\n }\n\n if (size === 'sm') {\n margin = ['7px', '7px', '7px', '7px']\n height = [13, 13, 13, 18]\n width = [13, 13, 13, 18]\n strokeWidth = [1.5, 1.5, 1.5, 2]\n offset = { transform: 'translateY(0.25px)' }\n }\n\n if (size === 'md') {\n margin = ['8px', '8px', '8px', '8px']\n height = [18, 18, 18, 24]\n width = [18, 18, 18, 24]\n strokeWidth = [2, 2, 2, 3]\n }\n\n if (size === 'lg') {\n margin = ['10px', '10px', '12px', '16px']\n height = [24, 24, 34, 46]\n width = [24, 24, 34, 46]\n strokeWidth = [3, 3, 4, 5]\n }\n\n if (size === 'xl') {\n margin = ['12px', '16px', '18px', '20px']\n height = [34, 46, 56, 68]\n width = [34, 46, 56, 68]\n strokeWidth = [4, 5, 6, 7]\n }\n\n let prefixHover,\n suffixHover,\n prefixAlign,\n suffixAlign,\n prefixOffset,\n suffixOffset\n\n if (align) {\n prefixAlign = align\n suffixAlign = align\n } else {\n if (prefix && suffix) {\n prefixAlign = 'initial'\n suffixAlign = 'initial'\n } else if (prefix) {\n prefixAlign = 'initial'\n } else if (suffix) {\n suffixAlign = 'middle'\n }\n }\n\n if (prefixAlign === 'middle') {\n prefixOffset = {}\n } else {\n prefixOffset = offset\n }\n\n if (suffixAlign === 'middle') {\n suffixOffset = {}\n } else {\n suffixOffset = offset\n }\n\n if (prefix) {\n prefixHover = {\n '&:hover > #prefix-span > #prefix': {\n color: hoverColor,\n ...prefix.type.hover,\n },\n }\n prefix = cloneElement(prefix, {\n id: 'prefix',\n sx: {\n position: 'relative',\n height: height,\n width: width,\n mr: children ? margin : [0],\n strokeWidth: strokeWidth,\n verticalAlign: prefixAlign,\n transition: 'color 0.15s, transform 0.15s',\n ...prefix.props.sx,\n },\n })\n }\n\n if (suffix) {\n suffixHover = {\n '&:hover > #suffix-span >#suffix': {\n color: hoverColor,\n ...suffix.type.hover,\n },\n }\n suffix = cloneElement(suffix, {\n id: 'suffix',\n sx: {\n height: height,\n width: width,\n ml: children ? margin : [0],\n strokeWidth: strokeWidth,\n verticalAlign: suffixAlign,\n transition: 'color 0.15s, transform 0.15s',\n ...suffix.props.sx,\n },\n })\n }\n\n let sizeStyles = getSizeStyles(size)\n\n const style = {\n ...sizeStyles,\n lineHeight: 1.05,\n border: 'none',\n background: 'transparent',\n display: 'block',\n color: baseColor,\n padding: [0],\n textAlign: 'left',\n cursor: 'pointer',\n width: 'fit-content',\n '@media (hover: hover) and (pointer: fine)': {\n '&:hover': {\n color: hoverColor,\n },\n ...suffixHover,\n ...prefixHover,\n },\n ...sx,\n }\n\n const Inner = (\n <>\n <Box\n as='span'\n id='prefix-span'\n sx={{ display: 'inline-block', ...prefixOffset }}\n >\n {prefix && prefix}\n </Box>\n <Box as='span' sx={{ transition: 'color 0.15s' }}>\n {children}\n </Box>\n <Box\n as='span'\n id='suffix-span'\n sx={{ display: 'inline-block', ...suffixOffset }}\n >\n {suffix && suffix}\n </Box>\n </>\n )\n\n if (href) {\n return (\n <Link\n ref={ref}\n href={href}\n internal={internal}\n tracking={tracking}\n sx={{\n ...style,\n textDecoration: 'none',\n }}\n {...props}\n >\n {Inner}\n </Link>\n )\n } else {\n return (\n <Box ref={ref} as='button' sx={style} {...props}>\n {Inner}\n </Box>\n )\n }\n}\n\nexport default forwardRef(Button)\n","import React, { forwardRef } from 'react'\nimport { Box } from 'theme-ui'\nimport { Arrow } from '@carbonplan/icons'\nimport Link from './link'\n\nconst Callout = (\n { label, children, inverted, color, href, internal, tracking, sx, ...props },\n ref\n) => {\n const baseColor = color || (inverted ? 'secondary' : 'primary')\n const hoverColor = color ? 'primary' : inverted ? 'primary' : 'secondary'\n\n const style = {\n border: 'none',\n padding: [0],\n fontSize: [3, 3, 3, 4],\n color: baseColor,\n background: 'transparent',\n textDecoration: 'none',\n fontFamily: 'body',\n lineHeight: 'h3',\n letterSpacing: 'body',\n width: 'fit-content',\n cursor: 'pointer',\n textAlign: 'left',\n mb: [1],\n '@media (hover: hover) and (pointer: fine)': {\n '&:hover > #container > #arrow': {\n transform: 'rotate(45deg)',\n fill: hoverColor,\n },\n '&:hover': {\n color: hoverColor,\n },\n },\n ...sx,\n }\n\n const Inner = (\n <>\n <Box sx={{ transition: '0.15s', letterSpacing: 'body', pb: ['6px'] }}>\n {children}\n </Box>\n <Box\n sx={{\n transition: '0.15s',\n display: 'inline-block',\n textTransform: 'uppercase',\n letterSpacing: 'smallcaps',\n fontFamily: 'heading',\n fontSize: [2, 2, 2, 3],\n }}\n >\n {label}\n </Box>\n <Box\n as='span'\n id='container'\n sx={{\n ml: [2],\n display: 'inline-block',\n }}\n >\n <Arrow\n id='arrow'\n sx={{\n transition: 'fill 0.15s, transform 0.15s',\n position: 'relative',\n top: ['2px'],\n color: baseColor,\n height: [15, 15, 15, 17],\n width: [15, 15, 15, 17],\n }}\n />\n </Box>\n </>\n )\n\n if (href) {\n return (\n <Link\n ref={ref}\n href={href}\n internal={internal}\n tracking={tracking}\n sx={style}\n {...props}\n >\n {Inner}\n </Link>\n )\n } else {\n return (\n <Box ref={ref} as='button' sx={style} {...props}>\n {Inner}\n </Box>\n )\n }\n}\n\nexport default forwardRef(Callout)\n","import React, { useState, useEffect, useRef } from 'react'\nimport { Box, Flex } from 'theme-ui'\n\nconst styles = {\n clim: (setClim) => {\n return {\n fontFamily: 'mono',\n fontSize: ['9px', 0, 0, 1],\n letterSpacing: 'smallcaps',\n textTransform: 'uppercase',\n '@media (hover: hover) and (pointer: fine)': {\n '&:hover': {\n borderBottom: setClim\n ? ({ colors }) => `solid 1px ${colors.primary} !important`\n : 'unset',\n },\n },\n '&:focus': {\n outline: 'none',\n borderBottom: setClim\n ? ({ colors }) => `solid 1px ${colors.primary} !important`\n : 'unset',\n },\n transition: 'border 0.15s',\n userSelect: setClim ? 'none !important' : 'unset',\n width: 'fit-content',\n minWidth: 'fit-content',\n }\n },\n}\n\nconst DIMENSIONS = {\n width: ['10px', '16px', '16px', '17px'],\n height: ['80px', '110px', '110px', '130px'],\n}\n\nconst Gradient = ({ colormap, discrete, horizontal, width, height }) => {\n const step = (1 / colormap.length) * 100\n const values = colormap.map((d, i) => {\n return `rgb(${d}) ${i * step}% ${\n discrete && i < colormap.length - 1 ? `${(i + 1) * step}%` : ''\n }`\n })\n\n const css = `linear-gradient(to ${\n horizontal ? 'right' : 'top'\n }, ${values.join(',')})`\n\n return (\n <Box\n sx={{\n ...(horizontal\n ? {\n width: width || DIMENSIONS.height,\n height: height || DIMENSIONS.width,\n }\n : {\n width: width || DIMENSIONS.width,\n minHeight: height || DIMENSIONS.height,\n }),\n mt: horizontal ? ['1px', '1px', '1px', 0] : 0,\n border: ({ colors }) => `solid 1px ${colors.hinted}`,\n background: css,\n }}\n />\n )\n}\n\nconst Label = ({ label, units, horizontal }) => (\n <Box\n sx={\n !horizontal && {\n width: ['13px', '17px', '17px', '19px'],\n alignSelf: 'flex-end',\n }\n }\n >\n <Box\n sx={{\n mb: horizontal ? 0 : ['-4px', '-4px', '-4px', '-3px'],\n fontFamily: 'mono',\n fontSize: ['9px', 0, 0, 1],\n letterSpacing: 'smallcaps',\n textTransform: 'uppercase',\n ...(horizontal\n ? {}\n : {\n writingMode: 'vertical-rl',\n transform: 'rotate(180deg)',\n whiteSpace: 'nowrap',\n display: 'inline-block',\n overflow: 'visible',\n }),\n }}\n >\n {label}{' '}\n <Box\n as='span'\n sx={{\n textTransform: 'none',\n color: 'secondary',\n display: 'inline-block',\n }}\n >\n {units}\n </Box>\n </Box>\n </Box>\n)\n\nconst Colorbar = ({\n colormap,\n label,\n clim,\n setClim,\n setClimStep = 1,\n discrete,\n units,\n width,\n height,\n format = (d) => d,\n horizontal = false,\n bottom = false,\n sx,\n sxClim,\n ...props\n}) => {\n if (!Array.isArray(colormap)) {\n throw new Error(`expected array for colormap, got '${colormap}'.`)\n }\n\n const climRef = [useRef(), useRef()]\n const [climMinDragging, setClimMinDragging] = useState(false)\n const [climMaxDragging, setClimMaxDragging] = useState(false)\n\n let x,\n y,\n dx,\n dy = 0\n let id = null\n let init = [0, 0]\n let scale = setClimStep\n\n const draggingFunction = (e) => {\n if (id === 'min' && !climMinDragging) setClimMinDragging(true)\n if (id === 'max' && !climMaxDragging) setClimMaxDragging(true)\n dx = e.pageX - x\n dy = e.pageY - y\n if (horizontal) {\n if (id === 'min')\n setClim((prev) => [Math.min(init[0] + dx * scale, init[1]), prev[1]])\n if (id === 'max')\n setClim((prev) => [prev[0], Math.max(init[1] + dx * scale, init[0])])\n } else {\n if (id === 'min')\n setClim((prev) => [Math.min(init[0] - dy * scale, init[1]), prev[1]])\n if (id === 'max')\n setClim((prev) => [prev[0], Math.max(init[1] - dy * scale, init[0])])\n }\n }\n\n const handleMouseDown = (e) => {\n y = e.pageY\n x = e.pageX\n id = e.target.id\n init = clim\n\n document.body.setAttribute(\n 'style',\n horizontal\n ? 'cursor: ew-resize !important'\n : 'cursor: ns-resize !important'\n )\n document.addEventListener('mousemove', draggingFunction)\n const updater = () => {\n document.body.setAttribute('style', 'cursor: unset')\n document.removeEventListener('mousemove', draggingFunction)\n window.removeEventListener('mouseup', updater)\n if (id === 'min') setClimMinDragging(false)\n if (id === 'max') setClimMaxDragging(false)\n }\n window.addEventListener('mouseup', updater)\n }\n\n const increment = (e) => {\n if (climRef[0].current === document.activeElement) {\n e.preventDefault()\n setClim((prev) => [Math.min(prev[0] + scale, prev[1]), prev[1]])\n climRef[0].current.focus()\n }\n if (climRef[1].current === document.activeElement) {\n e.preventDefault()\n setClim((prev) => [prev[0], Math.max(prev[1] + scale, prev[0])])\n climRef[1].current.focus()\n }\n }\n\n const decrement = (e) => {\n if (climRef[0].current === document.activeElement) {\n e.preventDefault()\n setClim((prev) => [Math.min(prev[0] - scale, prev[1]), prev[1]])\n climRef[0].current.focus()\n }\n if (climRef[1].current === document.activeElement) {\n e.preventDefault()\n setClim((prev) => [prev[0], Math.max(prev[1] - scale, prev[0])])\n climRef[1].current.focus()\n }\n }\n\n useEffect(() => {\n const listener = (e) => {\n if (\n ['ArrowUp', 'ArrowRight'].includes(e.code) ||\n ['ArrowUp', 'ArrowRight'].includes(e.key)\n ) {\n increment(e)\n }\n if (\n ['ArrowDown', 'ArrowLeft'].includes(e.code) ||\n ['ArrowDown', 'ArrowLeft'].includes(e.key)\n ) {\n decrement(e)\n }\n }\n window.addEventListener('keydown', listener)\n\n return () => {\n window.removeEventListener('keydown', listener)\n }\n }, [clim])\n\n const ClimMin = () => {\n return (\n <Box\n id='min'\n ref={climRef[0]}\n tabIndex={0}\n sx={{\n ...styles.clim(setClim),\n ml: label\n ? horizontal\n ? bottom\n ? '0px'\n : '10px'\n : ['2px', '1px', '1px', '2px']\n : 0,\n mr: horizontal ? ['2px', '1px', '1px', '2px'] : 0,\n mb: horizontal ? 0 : ['-2px', '-2px', '-2px', '-3px'],\n borderBottom: setClim\n ? climMinDragging\n ? ({ colors }) => `solid 1px ${colors.primary}`\n : ({ colors }) => `solid 1px ${colors.secondary}`\n : 'unset',\n cursor: setClim\n ? horizontal\n ? 'ew-resize'\n : 'ns-resize'\n : 'default',\n ...sxClim,\n }}\n onMouseDown={setClim ? handleMouseDown : () => {}}\n onClick={() => climRef[0].current.focus()}\n >\n {format(clim[0])}\n </Box>\n )\n }\n\n const ClimMax = () => {\n return (\n <Box\n id='max'\n ref={climRef[1]}\n tabIndex={0}\n sx={{\n ...styles.clim(setClim),\n ml: horizontal\n ? ['2px', '1px', '1px', '2px']\n : ['2px', '1px', '1px', '2px'],\n mt: horizontal ? 0 : ['-2px', '-3px', '-3px', '-3px'],\n borderBottom: setClim\n ? climMaxDragging\n ? ({ colors }) => `solid 1px ${colors.primary}`\n : ({ colors }) => `solid 1px ${colors.secondary}`\n : 'unset',\n cursor: setClim\n ? horizontal\n ? 'ew-resize'\n : 'ns-resize'\n : 'default',\n ...sxClim,\n }}\n onMouseDown={setClim ? handleMouseDown : () => {}}\n onClick={() => climRef[1].current.focus()}\n >\n {format(clim[1])}\n </Box>\n )\n }\n\n return (\n <Flex\n {...props}\n sx={{\n flexDirection: 'row',\n alignItems: 'start',\n justifyContent: 'flex-start',\n gap: ['3px', '6px', '6px', '7px'],\n height: !horizontal ? '100%' : 'unset',\n ...sx,\n }}\n >\n {label && <Label label={label} units={units} horizontal={horizontal} />}\n <Flex\n sx={{\n flexGrow: horizontal ? 1 : 'unset',\n flexDirection: 'column',\n ml: bottom && label ? '4px' : '0px',\n height: !horizontal ? '100%' : 'unset',\n }}\n >\n <Flex\n sx={{\n gap: ['3px', '6px', '6px', '7px'],\n height: !horizontal ? '100%' : 'unset',\n }}\n >\n {horizontal && clim && !bottom && <ClimMin />}\n <Gradient\n colormap={colormap}\n horizontal={horizontal}\n discrete={discrete}\n width={width}\n height={height}\n />\n {horizontal && clim && !bottom && <ClimMax />}\n </Flex>\n {horizontal && clim && bottom && (\n <Flex sx={{ justifyContent: 'space-between' }}>\n <ClimMin />\n <ClimMax />\n </Flex>\n )}\n </Flex>\n\n {!horizontal && (\n <Flex\n sx={{\n flexDirection: 'column-reverse',\n justifyContent: 'space-between',\n height: height || DIMENSIONS.height,\n }}\n >\n {clim && <ClimMin />}\n {clim && <ClimMax />}\n </Flex>\n )}\n </Flex>\n )\n}\n\nexport default Colorbar\n","import React from 'react'\nimport { Box } from 'theme-ui'\n\nconst Column = ({ start, width, dl, dr, children, sx, ...props }) => {\n start = start || 'auto'\n width = width || 'auto'\n\n const makeArray = (input) => {\n if (input && !Array.isArray(input)) {\n input = [input]\n }\n\n if (![1, 2, 4].includes(input.length)) {\n throw new Error('Array length must be 1, 2, or 4')\n }\n\n if (Array.isArray(input) && input.length == 1) {\n input = input.map((d) => [d, d, d, d]).flat()\n } else if (Array.isArray(input) && input.length == 2) {\n input = input.map((d) => [d, d]).flat()\n }\n\n return input\n }\n\n start = makeArray(start)\n width = makeArray(width)\n\n const end = start.map((d, i) => {\n if (d == 'auto') return 'auto'\n return d + width[i]\n })\n\n let ml, mr\n\n if (dl) {\n if (![0.5, 1].includes(dl)) {\n throw new Error('dl must be 0.5 or 1')\n }\n if (dl === 0.5) {\n ml = ['-12px', -3, -3, -4]\n }\n if (dl === 1) {\n ml = [-4, -5, -5, -6]\n }\n }\n\n if (dr) {\n if (![0.5, 1].includes(dr)) {\n throw new Error('dr must be 0.5 or 1')\n }\n if (dr === 0.5) {\n mr = ['-12px', -3, -3, -4]\n }\n if (dr === 1) {\n mr = [-4, -5, -5, -6]\n }\n }\n\n return (\n <Box\n {...props}\n sx={{\n gridColumnStart: start,\n gridColumnEnd: end,\n ml: ml,\n mr: mr,\n ...sx,\n }}\n >\n {children}\n </Box>\n )\n}\n\nexport default Column\n","import React from 'react'\nimport Head from 'next/head'\n\nconst Meta = ({ title, description, card }) => {\n title = title ? title : 'carbonplan'\n description = description\n ? description\n : 'Data and science for climate action.'\n card = card ? card : 'https://images.carbonplan.org/social/homepage.png'\n\n return (\n <Head>\n <title>{title}</title>\n <meta name='description' content={description} />\n <meta name='viewport' content='initial-scale=1.0, width=device-width' />\n <link rel='canonical' content='https://carbonplan.org/' />\n <link\n rel='icon'\n type='image/svg+xml'\n href='https://images.carbonplan.org/favicon.svg'\n />\n <link\n rel='preload'\n href='https://fonts.carbonplan.org/relative/relative-book-pro.woff2'\n as='font'\n type='font/woff2'\n crossOrigin='anonymous'\n />\n <link\n rel='preload'\n href='https://fonts.carbonplan.org/relative/relative-medium-pro.woff2'\n as='font'\n type='font/woff2'\n crossOrigin='anonymous'\n />\n <link\n rel='preload'\n href='https://fonts.carbonplan.org/relative/relative-mono-11-pitch-pro.woff2'\n as='font'\n type='font/woff2'\n crossOrigin='anonymous'\n />\n <link\n rel='preload'\n href='https://fonts.carbonplan.org/relative/relative-faux-book-pro.woff2'\n as='font'\n type='font/woff2'\n crossOrigin='anonymous'\n />\n <link rel='manifest' href='https://images.carbonplan.org/manifest.json' />\n <meta name='theme-color' content='#1b1e23' />\n <link\n rel='alternate icon'\n type='image/png'\n href='https://images.carbonplan.org/favicon.png'\n />\n <link\n rel='mask-icon'\n href='https://images.carbonplan.org/safari-pinned-tab.svg'\n color='#000000'\n />\n <link\n rel='apple-touch-icon'\n sizes='180x180'\n href='https://images.carbonplan.org/apple-touch-icon.png'\n />\n <meta name='msapplication-TileColor' content='#1b1e23' />\n <meta\n name='msapplication-TileImage'\n content='https://images.carbonplan.org/mstile-144x144.png'\n />\n <meta\n name='msapplication-config'\n content='https://images.carbonplan.org/browserconfig.xml'\n />\n <meta property='og:title' content={title} />\n <meta property='og:description' content={description} />\n <meta property='og:image' content={card} />\n <meta property='og:url' content='https://carbonplan.org' />\n <meta name='twitter:title' content={title} />\n <meta name='twitter:description' content={description} />\n <meta name='twitter:image' content={card} />\n <meta name='twitter:card' content='summary_large_image' />\n </Head>\n )\n}\n\nexport default Meta\n","import React from 'react'\nimport { Box } from 'theme-ui'\n\nconst Logo = ({ ...props }) => {\n return (\n <Box\n as='svg'\n width='150'\n fill='currentColor'\n stroke='none'\n viewBox='0 0 151.1 28.8'\n {...props}\n >\n <g>\n <g>\n <path\n 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'\n />\n </g>\n <g>\n <path\n 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'\n />\n </g>\n <g>\n <path\n 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'\n />\n </g>\n <g>\n <path\n 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'\n />\n </g>\n <g>\n <path\n 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'\n />\n </g>\n <g>\n <path\n 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'\n />\n </g>\n <g>\n <path\n 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'\n />\n </g>\n <g>\n <path\n 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'\n />\n </g>\n <g>\n <path\n 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'\n />\n </g>\n <g>\n <path\n 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'\n />\n </g>\n <path\n 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'\n />\n <path\n 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'\n />\n </g>\n </Box>\n )\n}\n\nexport default Logo\n","import React from 'react'\nimport { Grid } from 'theme-ui'\n\nconst Row = ({ children, sx, columns, gap, ...props }) => {\n const makeArray = (input) => {\n if (!Array.isArray(input)) {\n input = [input, input, input, input]\n }\n if (Array.isArray(input) && ![1, 2, 4].includes(input.length)) {\n throw new Error('Array length must be 1, 2, or 4')\n }\n if (Array.isArray(input) && input.length == 1) {\n input = input.map((d) => [d]).flat()\n }\n if (Array.isArray(input) && input.length == 2) {\n input = input.map((d) => [d, d]).flat()\n }\n return input\n }\n\n let columnGap, rowGap\n if (Number.isInteger(gap) || Array.isArray(gap)) {\n gap = makeArray(gap)\n columnGap = gap\n rowGap = gap\n } else {\n columnGap = [4, 5, 5, 6]\n rowGap = [0, 0, 0, 0]\n }\n\n if (Number.isInteger(columns) || Array.isArray(columns)) {\n columns = makeArray(columns)\n } else {\n columns = [6, 8, 12, 12]\n }\n\n return (\n <Grid\n {...props}\n columns={columns}\n sx={{\n columnGap: columnGap,\n rowGap: rowGap,\n ...sx,\n }}\n >\n {children}\n </Grid>\n )\n}\n\nexport default Row\n","import React from 'react'\nimport { IconButton } from 'theme-ui'\n\nconst Menu = ({ value, sx, ...props }) => {\n return (\n <IconButton\n sx={{\n cursor: 'pointer',\n fill: 'none',\n strokeWidth: '2px',\n stroke: 'text',\n '.paren': {\n opacity: '0',\n },\n '@media (hover: hover) and (pointer: fine)': {\n '&:hover .paren': {\n opacity: '1',\n },\n },\n ...sx,\n }}\n aria-label='Toggle Menu'\n {...props}\n >\n {!value && (\n <svg\n style={{\n width: '50px',\n height: '30px',\n transform: 'scale(2)',\n marginTop: '-3px',\n }}\n xmlns='http://www.w3.org/2000/svg'\n viewBox='0 0 68 36'\n >\n <line x1='52' y1='29.9' x2='16' y2='29.9' />\n <line x1='52' y1='6.1' x2='16' y2='6.1' />\n <line x1='52' y1='18' x2='16' y2='18' />\n <path\n style={{ transition: 'all 0.2s' }}\n className='paren'\n d='M6.4,1.2c-6.3,10.3-6.3,23.3,0,33.6'\n />\n <path\n style={{ transition: 'all 0.2s' }}\n className='paren'\n d='M61.6,34.8c6.3-10.3,6.3-23.3,0-33.6'\n />\n </svg>\n )}\n {value && (\n <svg\n style={{\n width: '50px',\n height: '30px',\n transform: 'scale(2)',\n marginTop: '-3px',\n }}\n xmlns='http://www.w3.org/2000/svg'\n viewBox='0 0 68 36'\n >\n <line x1='50.85' y1='29.79' x2='17.15' y2='6.21' />\n <line x1='17.15' y1='29.79' x2='50.85' y2='6.21' />\n <path\n style={{ transition: 'all 0.2s' }}\n className='paren'\n d='M6.4,1.2c-6.3,10.3-6.3,23.3,0,33.6'\n />\n <path\n style={{ transition: 'all 0.2s' }}\n className='paren'\n d='M61.6,34.8c6.3-10.3,6.3-23.3,0-33.6'\n />\n </svg>\n )}\n </IconButton>\n )\n}\n\nexport default Menu\n","import React, { useState } from 'react'\nimport { default as NextLink } from 'next/link'\nimport { Box, Flex, Container, Link } from 'theme-ui'\nimport { Arrow } from '@carbonplan/icons'\nimport Logo from './logo'\nimport Row from './row'\nimport Column from './column'\nimport Menu from './menu'\n\nconst sx = {\n link: (current, label, first = false) => {\n return {\n width: 'auto',\n color: current === label ? 'secondary' : 'text',\n fontSize: [6, 6, 7, 8],\n fontFamily: 'heading',\n letterSpacing: 'heading',\n borderStyle: 'solid',\n borderColor: 'muted',\n borderWidth: '0px',\n borderBottomWidth: '1px',\n borderTopWidth: first ? '1px' : '0px',\n py: [3, 3, 4, 5],\n textDecoration: 'none',\n display: 'block',\n position: 'relative',\n transition: 'color 0.15s',\n '@media (hover: hover) and (pointer: fine)': {\n '&:hover > #arrow': {\n opacity: 1,\n },\n },\n '&:hover': {\n color: current == label ? 'secondary' : 'text',\n },\n }\n },\n}\n\nconst links = [\n { url: 'about', display: 'About' },\n { url: 'research', display: 'Research' },\n { url: 'blog', display: 'Blog' },\n { url: 'press', display: 'Press' },\n]\n\nconst HoverArrow = () => {\n return (\n <Arrow\n id='arrow'\n sx={{\n pointerEvents: 'none',\n display: 'inline-block',\n position: 'absolute',\n left: ['-60px', '-68px', '-80px', '-104px'],\n top: ['32px', '32px', '46px', '62px'],\n opacity: 0,\n transition: 'opacity 0.2s ease-out',\n transform: 'rotate(45deg)',\n width: [36, 36, 48, 56],\n height: [36, 36, 48, 56],\n }}\n />\n )\n}\n\nconst Nav = ({ link, mode, nav, first, setExpanded }) => {\n const { url, display } = link\n const href = mode === 'remote' ? 'https://carbonplan.org/' + url : '/' + url\n\n if (mode === 'homepage' || (mode === 'local' && nav === url)) {\n return (\n <NextLink href={href} passHref>\n <Link\n onClick={() => {\n if (nav === url) setExpanded(false)\n }}\n sx={sx.link(nav, url, first)}\n >\n <HoverArrow />\n {display}\n </Link>\n </NextLink>\n )\n } else {\n return (\n <Link href={href} sx={sx.link(nav, url, first)}>\n <HoverArrow />\n {display}\n </Link>\n )\n }\n}\n\nconst NavGroup = ({ links, nav, mode, setExpanded }) => {\n return links.map((d, i) => {\n return (\n <Nav\n key={i}\n link={d}\n mode={mode}\n nav={nav}\n first={i === 0}\n setExpanded={setExpanded}\n />\n )\n })\n}\n\nconst Header = ({ status, mode, nav, menuItems }) => {\n const [expanded, setExpanded] = useState(false)\n\n const toggle = (e) => {\n setExpanded(!expanded)\n }\n\n return (\n <Row\n sx={{\n pt: ['12px'],\n pb: [3],\n }}\n >\n <Column start={[1]} width={[2]}>\n <Box sx={{ display: 'block', width: 'fit-content' }}>\n {(mode == 'homepage' || mode == 'local') && (\n <NextLink href='/' passHref>\n <Link\n aria-label='CarbonPlan Homepage'\n sx={{\n display: 'block',\n }}\n >\n <Logo\n id='logo'\n sx={{\n cursor: 'pointer',\n color: 'primary',\n }}\n />\n </Link>\n </NextLink>\n )}\n {(mode == null || mode == 'remote') && (\n <Link\n href='https://carbonplan.org'\n aria-label='CarbonPlan Homepage'\n sx={{ display: 'block' }}\n >\n <Logo sx={{ cursor: 'pointer', color: 'primary' }} />\n </Link>\n )}\n </Box>\n </Column>\n <Column\n start={[4, 9]}\n width={[2, 2]}\n dr={1}\n sx={{\n display: [status ? 'flex' : 'none', 'flex', 'flex', 'flex'],\n alignItems: 'center',\n }}\n >\n <Box\n sx={{\n fontSize: [1, 2, 3],\n position: 'relative',\n top: ['-2px', '-3px', '-3px'],\n }}\n >\n {status ? `(${status})` : ''}\n </Box>\n </Column>\n <Column\n start={[status ? 6 : 4, 6, 11, 11]}\n width={[status ? 1 : 3, 3, 2, 2]}\n sx={{ zIndex: 5000 }}\n >\n <Flex sx={{ justifyContent: 'flex-end' }}>\n <Flex\n sx={{\n mr: '18px',\n gap: '18px',\n opacity: expanded ? 0 : 1,\n transition: 'opacity 0.15s',\n justifyContent: 'space-between',\n alignItems: 'center',\n }}\n >\n {menuItems}\n </Flex>\n <Menu\n sx={{\n mr: ['-2px'],\n }}\n value={expanded}\n onClick={toggle}\n />\n </Flex>\n </Column>\n <Box\n sx={{\n opacity: expanded ? 1 : 0,\n pointerEvents: expanded ? 'all' : 'none',\n position: 'fixed',\n top: '0px',\n right: '0px',\n bottom: '0px',\n minWidth: '0px',\n maxHeight: '100vh',\n width: '100vw',\n backgroundColor: 'background',\n zIndex: 4000,\n pt: ['79px'],\n transition: 'opacity 0.25s',\n }}\n >\n <Container>\n <Row>\n <Column start={[2, 4, 7, 7]} width={[5, 4, 5, 5]}>\n <Box\n as='nav'\n sx={{\n display: expanded ? 'inherit' : 'none',\n mt: [5, 5, 5, 6],\n }}\n >\n <NavGroup\n links={links}\n nav={nav}\n mode={mode}\n setExpanded={setExpanded}\n />\n </Box>\n </Column>\n </Row>\n </Container>\n </Box>\n </Row>\n )\n}\n\nexport default Header\n","import React from 'react'\nimport { Box } from 'theme-ui'\n\nconst Monogram = ({ ...props }) => {\n return (\n <Box\n as='svg'\n width='80'\n stroke='none'\n fill='currentColor'\n viewBox='0 0 32 32'\n {...props}\n >\n <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'></path>\n <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'></path>\n <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'></path>\n </Box>\n )\n}\n\nexport default Monogram\n","import React from 'react'\nimport { Box, Grid, Link } from 'theme-ui'\nimport { default as NextLink } from 'next/link'\nimport Monogram from './monogram'\nimport Row from './row'\nimport Column from './column'\n\nconst Footer = () => {\n return (\n <Box\n sx={{\n mt: [7, 7, 7, 8],\n mb: [7, 7, 7, 8],\n pb: [2, 1, 0, 0],\n }}\n >\n <Row sx={{ mb: [0, 0, 4, 5] }}>\n <Column start={[1, 2]} width={[3, 3]}>\n <Box>\n <Box\n sx={{\n fontSize: [2, 2, 2, 3],\n fontFamily: 'heading',\n letterSpacing: 'mono',\n mb: [2],\n }}\n >\n EMAIL\n </Box>\n <Link\n href='mailto:hello@carbonplan.org'\n sx={{\n textDecoration: 'none',\n fontSize: [2, 2, 2, 3],\n }}\n >\n hello@carbonplan.org\n </Link>\n </Box>\n </Column>\n <Column\n start={[5]}\n width={[1]}\n dl={1}\n dr={1}\n sx={{\n display: ['flex', 'none', 'none', 'none'],\n justifyContent: ['center'],\n }}\n >\n <Monogram sx={{ mt: ['-4px'], width: '60px', height: '60px' }} />\n </Column>\n <Column start={[1, 5, 5, 5]} width={[3, 3]} sx={{ mt: [3, 0, 0, 0] }}>\n <Box>\n <Box\n sx={{\n fontSize: [2, 2, 2, 3],\n fontFamily: 'heading',\n letterSpacing: 'mono',\n mb: [2],\n }}\n >\n FOLLOW\n </Box>\n <Link\n href='https://twitter.com/carbonplanorg'\n sx={{\n textDecoration: 'none',\n fontSize: [2, 2, 2, 3],\n }}\n >\n @carbonplanorg\n </Link>\n </Box>\n </Column>\n <Column\n start={[1, 9]}\n width={[5, 4, 3, 3]}\n sx={{ mt: ['42px', '42px', 0, 0], mb: [3, 3, 0, 0] }}\n >\n <Box>\n <Box\n sx={{\n fontSize: [2, 2, 2, 3],\n fontFamily: 'body',\n color: 'secondary',\n }}\n >\n CarbonPlan is a registered non-profit public benefit corporation\n in California with 501(c)(3) status.\n </Box>\n </Box>\n </Column>\n </Row>\n <Row sx={{ mb: ['2px'], mt: [5, 5, 4] }}>\n <Column\n start={[1, 1, 2, 2]}\n width={[3, 2, 3, 3]}\n sx={{\n display: 'flex',\n alignItems: ['flex-start', 'flex-start', 'flex-end'],\n }}\n >\n <Box\n sx={{\n bottom: '0px',\n borderStyle: 'solid',\n borderColor: 'muted',\n borderWidth: '0px',\n borderTopWidth: '1px',\n pt: [2],\n }}\n >\n <Box\n sx={{\n color: 'secondary',\n fontSize: [1, 1, 1, 2],\n fontFamily: 'mono',\n letterSpacing: 'mono',\n }}\n >\n (c) 2021 CARBONPLAN\n </Box>\n </Box>\n </Column>\n <Column\n start={[4, 3, 5, 5]}\n width={[2, 2, 3, 3]}\n sx={{\n display: 'flex',\n alignItems: ['flex-start', 'flex-start', 'flex-end'],\n mt: [0, 0, 0, 0],\n }}\n >\n <Box\n sx={{\n bottom: '0px',\n borderStyle: 'solid',\n borderColor: 'muted',\n borderWidth: '0px',\n borderTopWidth: '1px',\n width: ['100%', 'auto', 'auto', 'auto'],\n pt: [2],\n }}\n >\n <NextLink href='/terms' passHref>\n <Box\n as='a'\n sx={{\n textDecoration: 'none',\n fontSize: [1, 1, 1, 2],\n color: 'secondary',\n fontFamily: 'mono',\n letterSpacing: 'mono',\n display: 'block',\n }}\n >\n READ OUR TERMS\n </Box>\n </NextLink>\n </Box>\n </Column>\n <Column\n start={[5, 7, 9, 9]}\n width={[2, 3, 3, 3]}\n sx={{ display: ['none', 'initial', 'initial', 'initial'] }}\n >\n <Monogram\n sx={{\n width: 80,\n height: 80,\n mt: [0, '-10px', 4, 5],\n mb: ['-12px'],\n }}\n />\n </Column>\n </Row>\n </Box>\n )\n}\n\nexport default Footer\n","import React from 'react'\nimport { Box, IconButton, useColorMode } from 'theme-ui'\nimport { useCallback } from 'react'\nimport { Sun } from '@carbonplan/icons'\n\nconst Dimmer = ({ sx, ...props }) => {\n const [colorMode, setColorMode] = useColorMode()\n\n const toggle = useCallback(() => {\n setColorMode(colorMode === 'light' ? 'dark' : 'light')\n }, [colorMode])\n\n return (\n <IconButton\n aria-label='Toggle dark mode'\n onClick={toggle}\n role='checkbox'\n sx={{\n width: 32,\n height: 32,\n display: 'inline-block',\n cursor: 'pointer',\n color: 'secondary',\n ...sx,\n }}\n {...props}\n >\n <Sun\n sx={{\n strokeWidth: '1.75',\n transition: 'stroke 0.15s',\n '@media (hover: hover) and (pointer: fine)': {\n '&:hover': {\n stroke: 'primary',\n },\n },\n }}\n />\n </IconButton>\n )\n}\n\nexport default Dimmer\n","import React from 'react'\nimport { Box, Text, Link, useThemeUI } from 'theme-ui'\n\nconst GitSha = () => {\n const sha = process.env.NEXT_PUBLIC_VERCEL_GIT_COMMIT_SHA\n const owner = process.env.NEXT_PUBLIC_VERCEL_GIT_REPO_OWNER\n const slug = process.env.NEXT_PUBLIC_VERCEL_GIT_REPO_SLUG\n\n const { theme } = useThemeUI()\n\n const color = theme.rawColors.secondary\n\n if (sha && owner && slug) {\n const shortSha = sha.substring(0, 7)\n const href = 'https://github.com/' + owner + '/' + slug + '/tree/' + sha\n\n return (\n <Box sx={{ display: 'inline-block', width: '87px' }}>\n <Separator color={color} />\n <Link\n href={href}\n sx={{\n whiteSpace: 'nowrap',\n display: 'inline-block',\n ml: [2],\n fontFamily: 'mono',\n letterSpacing: 'body',\n color: color,\n fontSize: [1],\n textTransform: 'uppercase',\n textDecoration: 'none',\n }}\n >\n {shortSha}\n </Link>\n </Box>\n )\n } else {\n // fallback\n return (\n <Box sx={{ display: 'inline-block', width: '87px' }}>\n <Separator color={color} />\n <Text\n sx={{\n whiteSpace: 'nowrap',\n display: 'inline-block',\n ml: [2],\n fontFamily: 'mono',\n letterSpacing: 'body',\n color: color,\n fontSize: [1],\n textTransform: 'uppercase',\n }}\n >\n {color}\n </Text>\n </Box>\n )\n }\n}\n\nconst Separator = ({ color }) => {\n return (\n <svg fill={color} opacity='0.8' viewBox='0 0 24 24' width='24' height='24'>\n <circle r={5} cx={19} cy={19} />\n </svg>\n )\n}\n\nexport default GitSha\n","import React from 'react'\nimport { Box, Text } from 'theme-ui'\nimport { useState, useEffect } from 'react'\nimport GitSha from './gitsha'\n\nconst Value = ({ mode }) => {\n const [display, setDisplay] = useState(init(mode))\n\n useEffect(() => {\n if (mode === 'mouse') {\n const setFromEvent = (e) => {\n const x = format(e.clientX, 4)\n const y = format(e.clientY, 4)\n setDisplay(`X,Y: ${x},${y}`)\n }\n window.addEventListener('mousemove', setFromEvent)\n return () => {\n window.removeEventListener('mousemove', setFromEvent)\n }\n }\n if (mode === 'scroll') {\n const setFromEvent = (e) => {\n const y = scrollFraction(window, document)\n setDisplay(`SCROLL: 0.${format((y * 100).toFixed(0), 2)}`)\n }\n window.addEventListener('scroll', setFromEvent)\n const y = scrollFraction(window, document)\n return () => {\n window.removeEventListener('scroll', setFromEvent)\n }\n }\n }, [])\n\n return (\n <Text\n sx={{\n whiteSpace: 'nowrap',\n display: 'inline-block',\n mr: '-6px',\n fontFamily: 'mono',\n letterSpacing: 'body',\n color: 'secondary',\n fontSize: [1],\n textTransform: 'uppercase',\n }}\n >\n {display}\n </Text>\n )\n}\n\nconst Metadata = ({ mode }) => {\n return (\n <Box\n sx={{\n userSelect: 'none',\n position: 'fixed',\n bottom: '42px',\n right: '24px',\n transformOrigin: 'right',\n transform: 'rotate(90deg)',\n display: ['none', 'none', 'initial'],\n }}\n >\n <Value mode={mode} />\n <GitSha />\n </Box>\n )\n}\n\nfunction init(mode) {\n if (mode === 'mouse') {\n return `X,Y: ${format(0, 4)},${format(0, 4)}`\n } else if (mode === 'scroll') {\n return `SCROLL: 0.${format((0).toFixed(0), 2)}`\n } else {\n return mode\n }\n}\n\nfunction format(num, pad) {\n return num.toString().padStart(pad, '0')\n}\n\nfunction scrollFraction(window, documnt) {\n return Math.min(window.scrollY / (document.body.offsetHeight - 770), 0.99)\n}\n\nexport default Metadata\n","import React from 'react'\nimport { Box } from 'theme-ui'\nimport { keyframes } from '@emotion/react'\n\nconst fade = keyframes({\n from: {\n opacity: 0,\n },\n to: {\n opacity: 1,\n },\n})\n\nconst FadeIn = ({ duration = 300, delay = 0, children, ...delegated }) => {\n return (\n <Box\n {...delegated}\n sx={{\n animationDuration: duration + 'ms',\n animationDelay: delay + 'ms',\n animationName: fade.toString(),\n animationFillMode: 'backwards',\n }}\n >\n {children}\n </Box>\n )\n}\n\nexport default FadeIn\n","const getScrollbarWidth = (document) => {\n const outer = document.createElement('div')\n outer.style.visibility = 'hidden'\n outer.style.width = '100px'\n document.body.appendChild(outer)\n outer.style.overflow = 'scroll'\n const inner = document.createElement('div')\n inner.style.width = '100%'\n outer.appendChild(inner)\n const delta = outer.offsetWidth - inner.offsetWidth\n outer.parentNode.removeChild(outer)\n return delta\n}\n\nexport default getScrollbarWidth\n","import React, { useEffect } from 'react'\nimport getScrollbarWidth from './utils/get-scrollbar-width'\n\nconst Scrollbar = () => {\n useEffect(() => {\n if (typeof document !== 'undefined') {\n const delta = getScrollbarWidth(document)\n if (delta > 0) {\n document.body.classList.add('custom-scrollbar')\n document\n .getElementsByTagName('html')[0]\n .classList.add('custom-scrollbar')\n }\n }\n }, [])\n return null\n}\n\nexport default Scrollbar\n","import React, { useState, useEffect } from 'react'\nimport { Box, Container } from 'theme-ui'\nimport Row from './row'\nimport Column from './column'\n\nconst Guide = ({ color = 'muted' }) => {\n const [display, setDisplay] = useState(false)\n\n useEffect(() => {\n function handler(event) {\n const { key, keyCode, metaKey } = event\n if (key === ';' && metaKey) {\n setDisplay((prev) => !prev)\n }\n }\n\n document.addEventListener('keydown', handler)\n return () => {\n document.removeEventListener('keydown', handler)\n }\n }, [])\n\n return (\n <Box\n sx={{\n position: 'fixed',\n width: '100%',\n left: 0,\n top: 0,\n zIndex: color === 'teal' ? 5000 : -1,\n pointerEvents: 'none',\n display: display ? 'initial' : 'none',\n }}\n >\n <Container>\n <Box sx={{ display: ['none', 'none', 'initial', 'initial'] }}>\n <GuideColumns\n indices={[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]}\n color={color}\n />\n </Box>\n <Box sx={{ display: ['none', 'initial', 'none', 'none'] }}>\n <GuideColumns indices={[1, 2, 3, 4, 5, 6, 7, 8]} color={color} />\n </Box>\n <Box sx={{ display: ['initial', 'none', 'none', 'none'] }}>\n <GuideColumns indices={[1, 2, 3, 4, 5, 6]} color={color} />\n </Box>\n </Container>\n </Box>\n )\n}\n\nconst colorCycle = [\n 'red',\n 'orange',\n 'yellow',\n 'green',\n 'teal',\n 'blue',\n 'purple',\n 'pink',\n]\n\nfunction GuideColumns({ indices, color }) {\n const sx = {\n outerGuideColumn: {\n borderStyle: 'solid',\n borderWidth: '0px',\n borderLeftWidth: color === 'teal' ? '0px' : '1px',\n borderRightWidth: color === 'teal' ? '0px' : '1px',\n opacity: color == 'teal' ? 0.4 : 1,\n },\n innerGuideColumn: {\n borderStyle: 'solid',\n borderWidth: '0px',\n borderLeftWidth: '0px',\n borderRightWidth: '0px',\n opacity: color == 'teal' ? 0.4 : 1,\n },\n }\n\n return (\n <Row>\n {indices.map((i) => {\n return (\n <Column\n key={i}\n start={[i]}\n width={[1, 1]}\n dl={0.5}\n dr={0.5}\n sx={{\n bg: color === 'teal' ? 'teal' : 'transparent',\n height: '100vh',\n ...sx.innerGuideColumn,\n }}\n >\n <Box\n sx={{\n mx: ['12px', 3, 3, 4],\n bg: color === 'teal' ? 'background' : 'transparent',\n height: '100%',\n borderLeftColor:\n color === 'rainbow' ? colorCycle[i % 8] : 'muted',\n borderRightColor:\n color === 'rainbow' ? colorCycle[i % 8] : 'muted',\n ...sx.outerGuideColumn,\n }}\n ></Box>\n </Column>\n )\n })}\n </Row>\n )\n}\n\nexport default Guide\n","import React from 'react'\nimport { IconButton } from 'theme-ui'\n\nconst Settings = ({ value, sx, ...props }) => {\n return (\n <IconButton\n sx={{\n cursor: 'pointer',\n fill: 'none',\n strokeWidth: '2px',\n stroke: 'text',\n '.paren': {\n opacity: '0',\n },\n '@media (hover: hover) and (pointer: fine)': {\n '&:hover .paren': {\n opacity: '1',\n },\n },\n ...sx,\n }}\n aria-label='Toggle Menu'\n {...props}\n >\n {!value && (\n <svg\n style={{\n width: '50px',\n height: '30px',\n transform: 'scale(2)',\n marginTop: '-3px',\n }}\n xmlns='http://www.w3.org/2000/svg'\n viewBox='0 0 68 36'\n >\n <line x1='24' y1='2.1' x2='24' y2='6.1' />\n <line x1='24' y1='24.1' x2='24' y2='33.9' />\n <line x1='44' y1='2.1' x2='44' y2='12.1' />\n <line x1='44' y1='30.1' x2='44' y2='33.9' />\n <circle cx='24' cy='15.1' r='5' />\n <circle cx='44' cy='21.1' r='5' />\n <path\n style={{ transition: 'all 0.2s' }}\n className='paren'\n d='M6.4,1.2c-6.3,10.3-6.3,23.3,0,33.6'\n />\n <path\n style={{ transition: 'all 0.2s' }}\n className='paren'\n d='M61.6,34.8c6.3-10.3,6.3-23.3,0-33.6'\n />\n </svg>\n )}\n {value && (\n <svg\n style={{\n width: '50px',\n height: '30px',\n transform: 'scale(2)',\n marginTop: '-3px',\n }}\n xmlns='http://www.w3.org/2000/svg'\n viewBox='0 0 68 36'\n >\n <line x1='50.85' y1='29.79' x2='17.15' y2='6.21' />\n <line x1='17.15' y1='29.79' x2='50.85' y2='6.21' />\n <path\n style={{ transition: 'all 0.2s' }}\n className='paren'\n d='M6.4,1.2c-6.3,10.3-6.3,23.3,0,33.6'\n />\n <path\n style={{ transition: 'all 0.2s' }}\n className='paren'\n d='M61.6,34.8c6.3-10.3,6.3-23.3,0-33.6'\n />\n </svg>\n )}\n </IconButton>\n )\n}\n\nexport default Settings\n","import React, { useEffect } from 'react'\nimport { useThemeUI, Container, Flex, Box } from 'theme-ui'\nimport Meta from './meta'\nimport Header from './header'\nimport Footer from './footer'\nimport Dimmer from './dimmer'\nimport Metadata from './metadata'\nimport FadeIn from './fade-in'\nimport Scrollbar from './scrollbar'\nimport Guide from './guide'\nimport Settings from './settings'\n\nconst Layout = ({\n title,\n description,\n card,\n children,\n status,\n nav,\n settings,\n footer = true,\n header = true,\n metadata = 'mouse',\n links = 'remote',\n dimmer = 'bottom',\n guide = true,\n scrollbar = true,\n fade = true,\n container = true,\n}) => {\n let content = children\n\n if (fade) {\n content = <FadeIn duration={250}>{content}</FadeIn>\n }\n if (container) {\n content = (\n <Box sx={{ mb: [8, 8, 9, 10] }}>\n <Container>{content}</Container>\n </Box>\n )\n }\n\n const { theme } = useThemeUI()\n\n useEffect(() => {\n if (!theme) return\n\n const handler = (e) => {\n if (e.matches && settings?.value && settings?.onClick) {\n settings?.onClick()\n }\n }\n\n const query = window.matchMedia(`(min-width: ${theme.breakpoints[1]})`)\n query.onchange = handler\n\n return () => {\n query.onchange = null\n }\n }, [theme?.breakpoints, settings?.value, settings?.onClick])\n\n const menuItems = [\n <Dimmer\n key='dimmer'\n sx={{\n color: 'primary',\n mt: '-2px',\n display: [\n 'block',\n 'block',\n dimmer === 'top' ? 'block' : 'none',\n dimmer === 'top' ? 'block' : 'none',\n ],\n }}\n />,\n ]\n\n if (settings) {\n menuItems.push(\n <Settings\n key='settings'\n sx={{ mr: ['2px'], display: ['inherit', 'inherit', 'none', 'none'] }}\n {...settings}\n />\n )\n }\n\n return (\n <>\n {guide && <Guide color={guide} />}\n {scrollbar && <Scrollbar />}\n <Meta card={card} description={description} title={title} />\n <Flex\n sx={{\n flexDirection: 'column',\n minHeight: '100vh',\n }}\n >\n {header && (\n <Box\n as='header'\n sx={{\n width: '100%',\n borderStyle: 'solid',\n borderColor: 'muted',\n borderWidth: '0px',\n borderBottomWidth: '1px',\n position: 'sticky',\n top: 0,\n bg: 'background',\n height: '56px',\n zIndex: 2000,\n }}\n >\n <Container>\n <Header\n mode={links}\n status={status}\n nav={nav}\n menuItems={menuItems}\n />\n </Container>\n </Box>\n )}\n <Box\n sx={{\n width: '100%',\n flex: '1 1 auto',\n }}\n >\n {content}\n </Box>\n {footer && (\n <Box\n as='footer'\n sx={{\n width: '100%',\n borderStyle: 'solid',\n borderColor: 'muted',\n borderWidth: '0px',\n borderTopWidth: '1px',\n }}\n >\n <Container>\n <Footer />\n </Container>\n </Box>\n )}\n {dimmer === 'bottom' && (\n <Box\n sx={{\n display: ['none', 'none', 'initial', 'initial'],\n position: ['fixed'],\n right: [13],\n bottom: [17, 17, 15, 15],\n }}\n >\n <Dimmer />\n </Box>\n )}\n {metadata && <Metadata mode={metadata} />}\n </Flex>\n </>\n )\n}\n\nexport default Layout\n","import React from 'react'\nimport { Box } from 'theme-ui'\n\nconst Tag = ({ label, value, sx, children, ...props }) => {\n const color = sx && sx.color ? sx.color : 'primary'\n const isClickable = props && (props.onClick || props.onDoubleClick)\n\n return (\n <Box\n as={isClickable ? 'button' : 'span'}\n role='checkbox'\n aria-checked={value}\n aria-label={label}\n sx={{\n display: 'inline-block',\n fontSize: [1, 1, 1, 2],\n fontFamily: 'mono',\n letterSpacing: 'mono',\n cursor: isClickable ? 'pointer' : 'inherit',\n color: color,\n backgroundColor: 'transparent',\n borderStyle: 'solid',\n borderColor: color,\n lineHeight: 'body',\n borderWidth: '0px',\n borderBottomWidth: '1px',\n textTransform: 'uppercase',\n userSelect: 'none',\n transition: 'opacity 0.05s',\n pt: ['1px'],\n pb: ['2px'],\n px: [0],\n m: [0],\n opacity: value == null || value ? 1 : color == 'primary' ? 0.24 : 0.33,\n ...sx,\n }}\n {...props}\n >\n {children}\n </Box>\n )\n}\n\nexport default Tag\n","import React from 'react'\nimport { Box } from 'theme-ui'\nimport Tag from './tag'\n\nconst sx = {\n label: {\n fontFamily: 'mono',\n letterSpacing: 'mono',\n fontSize: [1, 1, 1, 2],\n color: 'secondary',\n userSelect: 'none',\n textTransform: 'uppercase',\n },\n}\n\nconst duplicateOptions = (options, defaultValue, overrides = {}) => {\n return Object.keys(options).reduce(\n (o, key) => Object.assign(o, { [key]: overrides[key] || defaultValue }),\n {}\n )\n}\n\nconst isAll = (option) => {\n return (\n Object.keys(option).filter((d) => option[d]).length ==\n Object.keys(option).length\n )\n}\n\nconst updateValues = ({ values, multiSelect, setValues, value }) => {\n const isAllAlreadySelected = isAll(values)\n const isSelectingAll = value === 'all'\n\n let updatedToggle\n\n if (multiSelect) {\n if (isSelectingAll && !isAllAlreadySelected) {\n // select all\n updatedToggle = duplicateOptions(values, true)\n } else if (isSelectingAll && isAllAlreadySelected) {\n // deselect all\n updatedToggle = duplicateOptions(values, false)\n } else {\n // de/select value, inherit other values\n updatedToggle = { ...values, [value]: !values[value] }\n }\n } else {\n if (isSelectingAll && !isAllAlreadySelected) {\n // select all\n updatedToggle = duplicateOptions(values, true)\n } else if (isSelectingAll && isAllAlreadySelected) {\n // do nothing\n } else {\n // select only value\n updatedToggle = duplicateOptions(values, false, { [value]: true })\n }\n }\n\n if (updatedToggle) {\n setValues(updatedToggle)\n }\n}\n\nconst Filter = ({\n values,\n setValues,\n label,\n colors,\n showAll = false,\n multiSelect = false,\n ...props\n}) => {\n return (\n <Box {...props}>\n {label && <Box sx={sx.label}>{label}</Box>}\n <Box sx={{ mt: label ? [3] : 0 }}>\n {showAll && (\n <Tag\n onClick={() =>\n updateValues({\n values: values,\n multiSelect,\n setValues: setValues,\n value: 'all',\n })\n }\n value={isAll(values)}\n sx={{ mr: [2] }}\n >\n All\n </Tag>\n )}\n {Object.keys(values).map((d, i) => (\n <Tag\n onClick={() =>\n updateValues({\n values: values,\n multiSelect,\n setValues: setValues,\n value: d,\n })\n }\n onDoubleClick={() =>\n updateValues({\n values: values,\n multiSelect: false,\n setValues: setValues,\n value: d,\n })\n }\n key={i}\n value={values[d]}\n sx={{\n width: 'max-content',\n color: colors ? colors[d] : 'primary',\n mr: [2],\n mb: [1],\n }}\n >\n {d}\n </Tag>\n ))}\n </Box>\n </Box>\n )\n}\n\nexport default Filter\n","import React from 'react'\nimport { Box } from 'theme-ui'\n\nconst sizes = {\n xs: [1],\n sm: [3],\n md: [5],\n lg: [7],\n xl: [9],\n}\nconst Group = ({ children, direction = 'vertical', spacing = 'md' }) => {\n let marginValue\n if (typeof spacing === 'string') {\n marginValue = sizes[spacing]\n } else if (typeof spacing === 'number') {\n marginValue = [spacing]\n } else if (\n Array.isArray(spacing) &&\n spacing.every((el) => typeof el === 'number')\n ) {\n marginValue = spacing\n }\n\n if (!marginValue) {\n throw new Error(\n 'Invalid spacing size. Must be numeric value(s) or one of xs, sm, md, lg, or xl'\n )\n }\n\n if (!['horizontal', 'vertical'].includes(direction)) {\n throw new Error(\n 'Invalid direction value. Must be either horizontal or vertical'\n )\n }\n\n const marginProperty = direction === 'vertical' ? 'mt' : 'ml'\n const additionalStyles =\n direction === 'horizontal' ? { display: 'inline-block' } : {}\n return (\n <Box>\n {React.Children.map(children, (child, i) => {\n return (\n <Box\n sx={{\n [marginProperty]: i > 0 ? marginValue : 0,\n ...additionalStyles,\n }}\n >\n {child}\n </Box>\n )\n })}\n </Box>\n )\n}\n\nexport default Group\n","import React from 'react'\nimport { Box } from 'theme-ui'\nimport Column from './column'\n\nconst Sidenote = ({ children, variant = 'h1' }) => {\n let mt\n if (variant === 'h1') mt = [4, '27px', '42px', '54px']\n if (variant === 'h2') mt = [4, 4, '14px', '54px']\n return (\n <>\n <Column start={[1, 4, 8, 8]} width={[1, 1, 1, 1]}>\n <Box\n sx={{\n mt: mt,\n fontFamily: 'faux',\n letterSpacing: 'faux',\n fontSize: [2, 2, 2, 3],\n textAlign: 'right',\n }}\n >\n /\n </Box>\n </Column>\n <Column start={[2, 5, 9, 9]} width={[3, 3, 2, 2]}>\n <Box\n sx={{\n mt: mt,\n fontFamily: 'faux',\n letterSpacing: 'faux',\n fontSize: [2, 2, 2, 3],\n height: ['100%', '0px', '0px', '0px'],\n }}\n >\n {children}\n </Box>\n </Column>\n </>\n )\n}\n\nexport default Sidenote\n","import React, { forwardRef } from 'react'\nimport { Input as ThemedInput } from 'theme-ui'\nimport getSizeStyles from './utils/get-size-styles'\n\nconst Input = ({ size = 'sm', inverted, sx, ...props }, ref) => {\n const defaultColor = inverted ? 'secondary' : 'primary'\n\n const styles = {\n color: defaultColor,\n borderColor: 'secondary',\n borderStyle: 'solid',\n borderWidth: '0px',\n borderBottomWidth: '1px',\n borderRadius: '0px',\n transition: 'border 0.15s',\n borderBottomWidth: '1px',\n width: 'calc(min(15ch, 100%))',\n p: [0],\n py: ['2px'],\n 'input::-webkit-outer-spin-button': {\n WebkitAppearance: 'none',\n margin: 0,\n },\n 'input::-webkit-inner-spin-button': {\n WebkitAppearance: 'none',\n margin: 0,\n },\n ':focus': {\n borderColor: 'primary',\n },\n ':focus-visible': {\n outline: 'none !important',\n background: 'none !important',\n },\n ...getSizeStyles(size),\n ...sx,\n }\n return <ThemedInput {...props} ref={ref} sx={styles} />\n}\n\nexport default forwardRef(Input)\n","import React, { forwardRef } from 'react'\nimport { useThemeUI, Slider as ThemeSlider } from 'theme-ui'\n\nconst Slider = ({ sx, ...props }, ref) => {\n const color = sx && sx.color ? sx.color : 'primary'\n const {\n theme: { rawColors: colors },\n } = useThemeUI()\n\n return (\n <ThemeSlider\n ref={ref}\n sx={{\n '&::-webkit-slider-thumb': {\n height: [22, 18, 16],\n width: [22, 18, 16],\n boxShadow: `0 0 0 0px ${colors.secondary}`,\n transition: 'box-shadow .15s ease',\n },\n '&::-moz-range-thumb': {\n height: [22, 18, 16],\n width: [22, 18, 16],\n boxShadow: `0 0 0 0px ${colors.secondary}`,\n transition: 'box-shadow .15s ease',\n },\n ':focus-visible': {\n outline: 'none !important',\n background: `${colors.secondary} !important`,\n },\n ':focus': {\n color: color,\n '&::-webkit-slider-thumb': {\n boxShadow: `0 0 0 4px ${colors.secondary}`,\n },\n '&::-moz-range-thumb': {\n boxShadow: `0 0 0 4px ${colors.secondary}`,\n },\n },\n color: color,\n ...sx,\n }}\n {...props}\n />\n )\n}\n\nexport default forwardRef(Slider)\n","import React from 'react'\nimport { Box } from 'theme-ui'\nimport Row from './row'\nimport Column from './column'\n\nconst styles = {\n reset: {\n verticalAlign: 'baseline',\n border: 0,\n outline: 0,\n margin: 0,\n padding: 0,\n },\n row: {\n borderStyle: 'solid',\n borderWidth: '0px',\n borderTopWidth: '1px',\n borderColor: 'muted',\n pt: [3, 3, 3, '20px'],\n pb: [3, 3, 3, '20px'],\n mb: ['2px'],\n },\n header: {\n display: 'block',\n textTransform: 'uppercase',\n letterSpacing: 'smallcaps',\n fontFamily: 'heading',\n fontSize: [2, 2, 2, 3],\n },\n index: {\n display: 'block',\n textTransform: 'uppercase',\n letterSpacing: 'smallcaps',\n fontFamily: 'heading',\n fontSize: [2, 2, 2, 3],\n },\n entry: {\n display: 'block',\n fontSize: [2, 2, 2, 3],\n fontFamily: 'faux',\n letterSpacing: 'faux',\n mb: ['1px'],\n mt: [2, 0, 0, 0],\n },\n}\n\nconst Table = ({\n data,\n sx,\n color,\n header,\n columns,\n start,\n width,\n index = true,\n borderBottom = true,\n borderTop = true,\n}) => {\n if (!start || !columns || !width) {\n throw new Error('Must provide columns, start, and width')\n }\n return (\n <Box as='table' sx={{ display: 'block', ...sx }}>\n <Box as='tbody' sx={{ display: 'block' }}>\n {header && (\n <Row\n as='tr'\n sx={{\n ...styles.reset,\n ...styles.header,\n ...styles.row,\n color: color,\n borderTopWidth: !borderTop ? '0px' : '1px',\n }}\n >\n <Column as='td' start={[1]} width={columns} sx={styles.index}>\n {header}\n </Column>\n </Row>\n )}\n {data.map((row, i) => {\n return (\n <Row\n as='tr'\n columns={columns}\n key={i}\n sx={{\n ...styles.reset,\n ...styles.row,\n pb:\n borderBottom && i === data.length - 1\n ? ['18px', '18px', '18px', '22px']\n : [3, 3, 3, '20px'],\n borderBottomWidth:\n borderBottom && i === data.length - 1 ? '1px' : '0px',\n borderTopWidth:\n !borderTop && i === 0 && !header ? '0px' : '1px',\n }}\n >\n {row.map((column, j) => {\n return (\n <Column\n as='td'\n key={j}\n start={start[j]}\n width={width[j]}\n sx={\n j == 0 && index\n ? { ...styles.reset, ...styles.index }\n : { ...styles.reset, ...styles.entry }\n }\n >\n {column}\n </Column>\n )\n })}\n </Row>\n )\n })}\n </Box>\n </Box>\n )\n}\n\nexport default Table\n","import React, { forwardRef } from 'react'\nimport { Box } from 'theme-ui'\nimport { transparentize } from '@theme-ui/color'\n\nconst Toggle = ({ value, onClick, disabled, sx, ...props }, ref) => {\n const color = sx && sx.color ? sx.color : 'primary'\n value = disabled ? false : value\n return (\n <Box\n ref={ref}\n as='button'\n onClick={onClick}\n role='checkbox'\n aria-checked={value}\n aria-label='Toggle'\n sx={{\n border: 'none',\n background: 'none',\n cursor: disabled ? 'default' : 'pointer',\n p: [0],\n m: [0],\n display: 'inline-block',\n ...sx,\n }}\n {...props}\n >\n <Box\n sx={{\n width: '50px',\n height: '20px',\n borderRadius: '20px',\n backgroundColor: value\n ? transparentize(color, color == 'primary' ? 0.5 : 0.45)\n : 'muted',\n position: 'relative',\n transition: '0.15s',\n display: 'inline-block',\n }}\n >\n <Box\n sx={{\n width: '14px',\n height: '14px',\n borderRadius: '7px',\n position: 'absolute',\n left: value ? '32px' : '4px',\n top: '3px',\n backgroundColor: value ? color : 'secondary',\n transition: '0.15s',\n }}\n ></Box>\n </Box>\n </Box>\n )\n}\n\nexport default forwardRef(Toggle)\n","const defaultOptions = {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n}\n\nconst formatDateElement = (date, element, option) => {\n if (!option) {\n return null\n }\n\n const format = typeof option === 'string' ? option : defaultOptions[element]\n\n const result = date.toLocaleString('default', {\n [element]: format,\n })\n\n if (format === 'numeric' && element === 'day') {\n return result.padStart(2, '0')\n } else {\n return result\n }\n}\nconst formatDate = (date, options = defaultOptions) => {\n const d = new Date(date.replace(/-/g, '/'))\n\n const month = formatDateElement(d, 'month', options.month)\n const day = formatDateElement(d, 'day', options.day)\n const year = formatDateElement(d, 'year', options.year)\n\n return [month, day, year].filter(Boolean).join(' ')\n}\n\nexport default formatDate\n","import React from 'react'\nimport { Box } from 'theme-ui'\nimport { transparentize } from '@theme-ui/color'\n\nconst Badge = ({ sx, children, ...props }) => {\n const color = sx && sx.color ? sx.color : 'primary'\n return (\n <Box\n sx={{\n display: 'inline-block',\n width: 'fit-content',\n height: ['24px', '24px', '24px', '26px'],\n borderRadius: '5px',\n backgroundColor:\n color == 'primary' || color == 'secondary'\n ? 'muted'\n : transparentize(color, 0.7),\n textAlign: 'center',\n userSelect: 'none',\n fontSize: [2, 2, 2, 3],\n ...sx,\n }}\n {...props}\n >\n <Box\n sx={{\n letterSpacing: '0.02em',\n fontFamily: 'mono',\n mt: ['1px', '1px', '1px', '0px'],\n px: [1, 1, 1, '5px'],\n color: color,\n }}\n >\n {children}\n </Box>\n </Box>\n )\n}\n\nexport default Badge\n","import React from 'react'\nimport { Box } from 'theme-ui'\n\nconst Blockquote = ({ children }) => {\n const firstChar = children.props.children.slice(0, 1)\n const textIndent = firstChar === '“' ? ['-0.4em'] : [0]\n return (\n <Box\n variant='styles.blockquote'\n sx={{\n textIndent: textIndent,\n }}\n >\n {children}\n </Box>\n )\n}\n\nexport default Blockquote","import React from 'react'\nimport { Box, Styled, Container, Grid } from 'theme-ui'\nimport { PoopSad } from '@carbonplan/emoji'\nimport Layout from './layout'\nimport Row from './row'\nimport Column from './column'\n\nconst Custom404 = () => {\n return (\n <Layout footer={false} title={'404 / carbonplan'}>\n <Row sx={{ mb: [5, 0, 0], pt: [0, 0, 6] }}>\n <Column start={[1, 1, 3, 3]} width={[6, 4, 4, 4]}>\n <Styled.h1>Oops!</Styled.h1>\n <Box\n sx={{\n fontSize: [4, 4, 4, 5],\n lineHeight: 'h3',\n mt: [3, 4, 4],\n mb: [2, 3, 3],\n maxWidth: ['90%', '90%', '400px'],\n }}\n >\n Sorry but we can't seem to find the page you are looking for.\n </Box>\n <Box\n sx={{\n color: 'secondary',\n fontFamily: 'mono',\n letterSpacing: 'mono',\n fontSize: [2, 2, 2, 3],\n mt: [4, 5, 5],\n }}\n >\n ERROR CODE 404\n </Box>\n </Column>\n <Column start={[2, 5, 7, 7]} width={[4, 4, 4, 4]}>\n <Box\n sx={{\n width: ['100%'],\n mt: [2, 4, 4, 5],\n fill: 'primary',\n }}\n >\n <PoopSad sx={{ width: '100%', height: 'auto' }} />\n </Box>\n </Column>\n </Row>\n </Layout>\n )\n}\n\nexport default Custom404\n","import React from 'react'\nimport { Box, IconButton } from 'theme-ui'\n\nconst Expander = ({ value, id, onClick, sx }) => {\n return (\n <IconButton\n onClick={onClick}\n id={id}\n role='checkbox'\n aria-checked={value}\n aria-label='Expand'\n sx={{\n display: 'inline-block',\n width: 24,\n height: 24,\n p: [1],\n cursor: 'pointer',\n fill: 'secondary',\n stroke: 'secondary',\n '@media (hover: hover) and (pointer: fine)': {\n '&:hover': {\n fill: 'primary',\n stroke: 'primary',\n },\n },\n ...sx,\n }}\n >\n <svg viewBox='0 0 16 16'>\n <path\n d='M8,0 V16 M0,8 H16'\n style={{\n strokeWidth: 2,\n transition: '0.25s all',\n transformOrigin: '8px 8px',\n transform: value ? 'rotate(45deg)' : '',\n }}\n />\n </svg>\n </IconButton>\n )\n}\n\nexport default Expander\n","import React from 'react'\nimport { Box } from 'theme-ui'\nimport Row from './row'\nimport Column from './column'\nimport Sidenote from './sidenote'\n\nconst Heading = ({\n children,\n sidenote,\n description,\n descriptionStart = [1, 3, 5, 5],\n descriptionWidth = [5, 5, 5, 4],\n sx,\n}) => {\n return (\n <Row sx={{ mt: [5, 6, 7, 8], mb: [5, 6, 7, 8] }}>\n <Column start={[1, 1, 2, 2]} width={[6, 2, 3, 3]}>\n <Box as='h1' variant='styles.h1' sx={{ my: [0, 0, 0, 0], ...sx }}>\n {children}\n </Box>\n </Column>\n {sidenote && <Sidenote>{sidenote}</Sidenote>}\n {description && (\n <Column start={descriptionStart} width={descriptionWidth}>\n <Box\n sx={{\n mt: [4, '5px', '20px', '31px'],\n fontSize: [2, 2, 2, 3],\n }}\n >\n {description}\n </Box>\n </Column>\n )}\n </Row>\n )\n}\n\nexport default Heading\n","import React, { useRef } from 'react'\nimport { Box } from 'theme-ui'\nimport { Arrow } from '@carbonplan/icons'\nimport getProps from './utils/get-props'\nimport getSizeStyles from './utils/get-size-styles'\n\nconst Select = ({ children, size = 'sm', sx, sxSelect, ...props }) => {\n const color = sx && sx.color ? sx.color : 'primary'\n const sizeStyles = getSizeStyles(size)\n const ref = useRef(null)\n\n const { onChange } = props\n const omitOnChange = getProps((k) => k !== 'onChange')(props)\n\n if (!['xs', 'sm', 'md'].includes(size)) {\n throw new Error('Size must be xs, sm, or md')\n }\n\n let pr, height, width, ml, top\n\n if (size === 'xs') {\n height = [14, 14, 14, 16]\n width = [14, 14, 14, 14]\n top = ['1px']\n ml = ['-14px', '-14px', '-14px', '-16px']\n }\n\n if (size === 'sm') {\n height = [15, 15, 15, 20]\n width = [15, 15, 15, 20]\n top = ['1px']\n ml = ['-16px', '-16px', '-16px', '-20px']\n }\n\n if (size === 'md') {\n height = [20, 20, 20, 20]\n width = [20, 20, 20, 20]\n top = ['2px']\n ml = ['-20px', '-20px', '-20px', '-20px']\n }\n\n pr = width.map((d) => d + 12)\n\n return (\n <Box\n sx={{\n display: 'inline-block',\n ...sx,\n }}\n >\n <Box\n as='select'\n ref={ref}\n onChange={(e) => {\n ref.current.blur()\n if (onChange) onChange(e)\n }}\n sx={{\n ...sizeStyles,\n lineHeight: 'normal',\n cursor: 'pointer',\n WebkitAppearance: 'none',\n MozAppearance: 'none',\n pb: ['5px'],\n bg: 'transparent',\n pr: pr,\n border: 'none',\n borderBottomStyle: 'solid',\n borderBottomWidth: '1px',\n borderBottomColor: 'primary',\n borderRadius: '0px',\n color: 'text',\n width: 'fit-content',\n color: color,\n userSelect: 'none',\n '@media (hover: none) and (pointer: coarse)': {\n '&:focus-visible': {\n outline: 'none !important',\n background: 'transparent !important',\n },\n },\n ...sxSelect,\n }}\n {...omitOnChange}\n >\n {children}\n </Box>\n <Arrow\n sx={{\n width: width,\n height: height,\n position: 'relative',\n ml: ml,\n top: top,\n fill: 'secondary',\n transform: 'rotate(135deg)',\n pointerEvents: 'none',\n }}\n />\n </Box>\n )\n}\n\nexport default Select\n","const getProps = (test) => (props) => {\n const next = {}\n for (const key in props) {\n if (test(key || '')) next[key] = props[key]\n }\n return next\n}\n\nexport default getProps\n","import React from 'react'\n\nconst Tracking = ({ id }) => {\n if (!id) {\n return null\n }\n return (\n <>\n <script async src={`https://www.googletagmanager.com/gtag/js?id=${id}`} />\n <script\n dangerouslySetInnerHTML={{\n __html: `\n window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n gtag('js', new Date());\n gtag('config', '${id}', {\n page_path: window.location.pathname,\n });\n `,\n }}\n />\n </>\n )\n}\n\nexport default Tracking\n","import React from 'react'\nimport { Box } from 'theme-ui'\nimport Row from './row'\nimport Column from './column'\n\nconst Tray = ({ expanded, sx, children }) => {\n return (\n <>\n <Box\n sx={{\n position: 'fixed',\n top: '56px',\n bottom: '0px',\n left: '0px',\n width: 'calc(100vw)',\n mt: ['56px'],\n bg: 'background',\n zIndex: 1000,\n transition: 'opacity 0.15s',\n opacity: expanded ? 0.9 : 0,\n pointerEvents: expanded ? 'all' : 'none',\n }}\n />\n <Box\n sx={{\n position: 'fixed',\n width: 'calc(100vw)',\n top: '0px',\n mt: ['56px'],\n pb: [6, 7, 7, 8],\n pt: [5, 6, 7, 8],\n bg: 'background',\n zIndex: 1100,\n borderStyle: 'solid',\n borderColor: 'muted',\n borderWidth: '0px',\n borderBottomWidth: '1px',\n transition: 'transform 0.15s',\n ml: [-3, -4, -5, -6],\n pl: [3, 4, 5, 6],\n pr: [3, 4, 5, 6],\n transform: expanded ? 'translateY(0)' : 'translateY(-100%)',\n ...sx,\n }}\n >\n <Row>\n <Column start={[1, 1, 1, 1]} width={[6, 8, 10, 10]}>\n {children}\n </Column>\n </Row>\n </Box>\n </>\n )\n}\n\nexport default Tray\n"],"names":["forwardRef","ref","href","children","internal","tracking","props","startsWith","React","NextLink","passHref","ThemedLink","action","category","includes","track","e","window","gtag","event_category","event_label","label","value","console","warn","event","onClick","onContextMenu","getSizeStyles","size","Error","fontSize","fontFamily","letterSpacing","lineHeight","offset","margin","height","width","strokeWidth","prefix","suffix","inverted","sx","align","prefixHover","suffixHover","prefixAlign","suffixAlign","prefixOffset","suffixOffset","color","baseColor","hoverColor","transform","type","hover","cloneElement","id","position","mr","verticalAlign","transition","ml","style","border","background","display","padding","textAlign","cursor","Inner","Box","as","Link","textDecoration","mb","fill","pb","textTransform","Arrow","top","styles","setClim","borderBottom","colors","primary","outline","userSelect","minWidth","DIMENSIONS","Gradient","colormap","discrete","horizontal","step","length","css","map","d","i","join","minHeight","mt","hinted","Label","units","alignSelf","writingMode","whiteSpace","overflow","Column","start","dl","dr","makeArray","input","Array","isArray","flat","end","gridColumnStart","gridColumnEnd","Meta","title","description","card","Head","name","content","rel","crossOrigin","sizes","property","Logo","stroke","viewBox","Row","columnGap","rowGap","columns","gap","Number","isInteger","Grid","Menu","IconButton","opacity","marginTop","xmlns","x1","y1","x2","y2","className","current","first","borderStyle","borderColor","borderWidth","borderBottomWidth","borderTopWidth","py","links","url","HoverArrow","pointerEvents","left","Nav","link","mode","nav","setExpanded","NavGroup","key","Header","status","menuItems","useState","expanded","pt","alignItems","zIndex","Flex","justifyContent","right","bottom","maxHeight","backgroundColor","Container","Monogram","Footer","Dimmer","useColorMode","colorMode","setColorMode","toggle","useCallback","role","Sun","GitSha","sha","process","env","NEXT_PUBLIC_VERCEL_GIT_COMMIT_SHA","owner","NEXT_PUBLIC_VERCEL_GIT_REPO_OWNER","slug","NEXT_PUBLIC_VERCEL_GIT_REPO_SLUG","useThemeUI","theme","rawColors","secondary","shortSha","substring","Separator","Text","r","cx","cy","Value","format","toFixed","init","setDisplay","useEffect","setFromEvent","x","clientX","y","clientY","addEventListener","removeEventListener","documnt","Math","min","scrollY","document","body","offsetHeight","scrollFraction","Metadata","transformOrigin","num","pad","toString","padStart","fade","keyframes","from","to","FadeIn","duration","delay","delegated","animationDuration","animationDelay","animationName","animationFillMode","getScrollbarWidth","outer","createElement","visibility","appendChild","inner","delta","offsetWidth","parentNode","removeChild","Scrollbar","classList","add","getElementsByTagName","Guide","handler","metaKey","prev","GuideColumns","indices","colorCycle","outerGuideColumn","borderLeftWidth","borderRightWidth","innerGuideColumn","bg","mx","borderLeftColor","borderRightColor","Settings","Layout","settings","footer","header","metadata","dimmer","guide","scrollbar","container","query","matchMedia","breakpoints","onchange","matches","push","flexDirection","flex","Tag","isClickable","onDoubleClick","px","m","duplicateOptions","options","defaultValue","overrides","Object","keys","reduce","o","assign","isAll","option","filter","updateValues","updatedToggle","values","multiSelect","setValues","isAllAlreadySelected","isSelectingAll","xs","sm","md","lg","xl","Sidenote","variant","borderRadius","p","WebkitAppearance","ThemedInput","ThemeSlider","boxShadow","reset","row","index","entry","disabled","transparentize","defaultOptions","month","day","year","formatDateElement","date","element","result","toLocaleString","firstChar","slice","textIndent","clim","setClimStep","sxClim","dx","climRef","useRef","climMinDragging","setClimMinDragging","climMaxDragging","setClimMaxDragging","dy","scale","draggingFunction","pageX","pageY","max","handleMouseDown","target","setAttribute","updater","listener","code","activeElement","preventDefault","focus","increment","decrement","ClimMin","tabIndex","onMouseDown","ClimMax","flexGrow","Styled","h1","maxWidth","PoopSad","showAll","marginValue","direction","spacing","every","el","marginProperty","additionalStyles","Children","child","sidenote","descriptionStart","descriptionWidth","my","test","pr","sxSelect","sizeStyles","onChange","omitOnChange","k","next","blur","MozAppearance","borderBottomStyle","borderBottomColor","data","borderTop","column","j","async","src","dangerouslySetInnerHTML","__html","pl","Date","replace","Boolean"],"mappings":"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"}