@carbonplan/components 11.2.0-develop.3 → 11.2.0-develop.7
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.esm.js +1 -1
- package/dst/index.esm.js.map +1 -1
- package/dst/index.js +1 -1
- package/dst/index.js.map +1 -1
- package/dst/index.modern.js +1 -1
- package/dst/index.modern.js.map +1 -1
- package/package.json +1 -1
package/dst/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/avatar.js","../src/row.js","../src/column.js","../src/group.js","../src/avatar-group.js","../src/badge.js","../src/blockquote.js","../src/link.js","../src/utils/get-size-styles.js","../src/button.js","../src/callout.js","../src/caption.js","../src/colorbar.js","../src/colors.js","../src/meta.js","../src/logo.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/custom-404.js","../src/expander.js","../src/figure-caption.js","../src/tag.js","../src/filter.js","../src/sidenote.js","../src/heading.js","../src/input.js","../src/link-group.js","../src/select.js","../src/utils/get-props.js","../src/slider.js","../src/table.js","../src/table-caption.js","../src/toggle.js","../src/tracking.js","../src/tray.js","../src/utils/format-date.js"],"sourcesContent":["import React from 'react'\nimport { Box, Image } from 'theme-ui'\n\nconst Avatar = ({\n color = 'transparent',\n width = '90px',\n maxWidth,\n name,\n github,\n alt,\n src,\n sx,\n}) => {\n if (!name && !src && !github) {\n console.warn('must specify either name, github, or src')\n }\n\n if (name) {\n src = `https://images.carbonplan.org/team/${name\n .toLowerCase()\n .replace(' ', '-')}.png`\n alt = alt || name\n } else if (github) {\n src = `https://github.com/${github}.png`\n alt = alt || github\n }\n\n return (\n <Box\n sx={{\n width: width,\n maxWidth: maxWidth,\n height: 'auto',\n borderRadius: '50%',\n position: 'relative',\n display: 'inline-block',\n verticalAlign: 'top',\n bg: color,\n ...sx,\n }}\n >\n <Image\n alt={alt}\n src={src}\n sx={{\n opacity: color && color !== 'transparent' ? 0.25 : 1,\n filter:\n color && color !== 'transparent'\n ? 'grayscale(100%) contrast(200%) brightness(100%)'\n : 'none',\n width: '100%',\n borderRadius: '50%',\n display: 'block',\n }}\n />\n </Box>\n )\n}\n\nexport default Avatar\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 { 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 { 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', sx }) => {\n let marginValue\n if (typeof spacing === 'string' && sizes.hasOwnProperty(spacing)) {\n marginValue = sizes[spacing]\n } else {\n marginValue = spacing\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' ? 'mb' : 'mr'\n const additionalStyles =\n direction === 'horizontal' ? { display: 'inline-block' } : {}\n return (\n <Box sx={sx}>\n {React.Children.map(children, (child, i) => {\n return (\n <Box\n sx={{\n [marginProperty]: i < children.length - 1 ? 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 Avatar from './avatar'\nimport Row from './row'\nimport Column from './column'\nimport Group from './group'\n\nconst sizes = {\n xs: [1],\n sm: [3],\n md: [5],\n lg: [7],\n xl: [9],\n}\n\nconst AvatarGroup = ({\n members,\n direction = 'horizontal',\n align,\n spacing = 'md',\n width,\n maxWidth,\n fixedCount,\n sx,\n}) => {\n if (members.length > fixedCount) {\n throw Error(\n `cannot render '${members.length}' avatars with a fixed count of '${fixedCount}'`\n )\n }\n\n let gap\n if (Object.keys(sizes).includes(spacing)) {\n gap = sizes[spacing]\n } else {\n gap = spacing\n }\n\n let start = (idx) => 'auto'\n if (align) {\n if (!Array.isArray(align)) {\n align = [align]\n }\n start = (idx) =>\n align.map((d) => {\n if (d === 'left') {\n return 'auto'\n } else if (d === 'right') {\n const offset = Math.max(1, fixedCount - members.length + 1)\n return offset + idx\n } else {\n throw Error(`alignment '${align}' not recognized`)\n }\n })\n }\n\n return (\n <>\n {fixedCount && (\n <Row columns={fixedCount} gap={gap} sx={sx}>\n {members.map((props, idx) => (\n <Column key={idx} start={start(idx)}>\n <Avatar {...props} width={width} maxWidth={maxWidth} />\n </Column>\n ))}\n </Row>\n )}\n {!fixedCount && (\n <Group direction={direction} spacing={spacing} sx={sx}>\n {members.map((props, idx) => (\n <Avatar key={idx} {...props} width={width} maxWidth={maxWidth} />\n ))}\n </Group>\n )}\n </>\n )\n}\n\nexport default AvatarGroup\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, { cloneElement, Children } from 'react'\nimport { Box } from 'theme-ui'\n\nconst specialChars = ['“', '\"', \"'\", '‘']\n\nconst Blockquote = ({ children }) => {\n let firstChar = ''\n\n if (\n Array.isArray(children) &&\n children[0].props &&\n typeof children[0].props.children === 'string'\n ) {\n firstChar = children[0].props.children.slice(0, 1)\n children = Children.map(children, (d, i) => {\n if (i == 0) {\n return cloneElement(d, { children: d.props.children.slice(1) })\n } else return d\n })\n } else if (children.props && typeof children.props.children === 'string') {\n firstChar = children.props.children.slice(0, 1)\n children = cloneElement(children, {\n children: children.props.children.slice(1),\n })\n } else if (typeof children === 'string') {\n firstChar = children.slice(0, 1)\n children = children.slice(1)\n }\n\n return (\n <Box variant='styles.blockquote'>\n {specialChars.includes(firstChar) && (\n <Box as='span' sx={{ position: 'absolute', ml: '-0.4em' }}>\n {firstChar}\n </Box>\n )}\n {children}\n </Box>\n )\n}\n\nexport default Blockquote\n","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\n const baseColor = color || (inverted ? 'secondary' : 'primary')\n const hoverColor = color ? 'primary' : inverted ? 'primary' : 'secondary'\n\n if (sx && sx.color) delete sx.color\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 from 'react'\nimport { Box } from 'theme-ui'\n\nconst Caption = ({ number, children, label = 'figure' }) => {\n return (\n <Box\n as='figcaption'\n sx={{\n color: 'secondary',\n mt: [3, 3, 3, 4],\n mb: [6, 6, 6, 7],\n fontSize: [2, 2, 2, 3],\n }}\n >\n {number && (\n <>\n <Box\n sx={{\n textTransform: 'uppercase',\n letterSpacing: 'smallcaps',\n display: 'inline-block',\n }}\n >\n {label} {number}\n </Box>{' '}\n <Box sx={{ display: 'inline-block', mx: [1], pr: [1] }}>/</Box>\n </>\n )}\n {children}\n </Box>\n )\n}\n\nexport default Caption\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 InlineColor = ({ sx, color, children }) => {\n return (\n <Box as='span' sx={{ display: 'inline-block', color: color, ...sx }}>\n {children}\n </Box>\n )\n}\n\nconst Colors = {}\n\nColors.Primary = ({ sx, children }) => {\n return <InlineColor color='primary'>{children}</InlineColor>\n}\n\nColors.Secondary = ({ sx, children }) => {\n return <InlineColor color='secondary'>{children}</InlineColor>\n}\n\nColors.Background = ({ sx, children }) => {\n return <InlineColor color='background'>{children}</InlineColor>\n}\n\nColors.Red = ({ sx, children }) => {\n return <InlineColor color='red'>{children}</InlineColor>\n}\n\nColors.Orange = ({ sx, children }) => {\n return <InlineColor color='orange'>{children}</InlineColor>\n}\n\nColors.Yellow = ({ sx, children }) => {\n return <InlineColor color='yellow'>{children}</InlineColor>\n}\n\nColors.Green = ({ sx, children }) => {\n return <InlineColor color='green'>{children}</InlineColor>\n}\n\nColors.Teal = ({ sx, children }) => {\n return <InlineColor color='teal'>{children}</InlineColor>\n}\n\nColors.Blue = ({ sx, children }) => {\n return <InlineColor color='blue'>{children}</InlineColor>\n}\n\nColors.Purple = ({ sx, children }) => {\n return <InlineColor color='purple'>{children}</InlineColor>\n}\n\nColors.Pink = ({ sx, children }) => {\n return <InlineColor color='pink'>{children}</InlineColor>\n}\n\nColors.Grey = ({ sx, children }) => {\n return <InlineColor color='grey'>{children}</InlineColor>\n}\n\nexport default Colors\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 { 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\n sx={{ pointerEvents: 'all', display: 'block', width: 'fit-content' }}\n >\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={{ pointerEvents: 'all', justifyContent: 'flex-end' }}>\n <Box\n sx={{\n display: [status ? 'none' : 'flex', 'flex', 'flex', 'flex'],\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 </Box>\n <Menu\n sx={{\n flexShrink: 0,\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, 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 Caption from './caption'\n\nconst FigureCaption = ({ number, children }) => {\n return (\n <Caption number={number} label='figure'>\n {children}\n </Caption>\n )\n}\n\nexport default FigureCaption\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'\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', '25px']\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 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 variant = 'h1',\n description,\n descriptionStart = [1, 3, 5, 5],\n descriptionWidth = [5, 5, 5, 4],\n sx,\n}) => {\n let titleWidth = [6, 6, 6, 6]\n if (description) {\n titleWidth[1] = descriptionStart[1] - 1\n titleWidth[2] = descriptionStart[2] - 2\n titleWidth[3] = descriptionStart[3] - 2\n }\n\n if (!['h1', 'h2'].includes(variant)) {\n throw new Error(`variant must be 'h1' or 'h2' but got '${variant}'`)\n }\n\n return (\n <Row sx={{ mt: [5, 6, 7, 8], mb: [5, 6, 7, 8], ...sx }}>\n <Column start={[1, 1, 2, 2]} width={titleWidth}>\n {variant === 'h1' && (\n <Box as='h1' variant='styles.h1' sx={{ my: [0, 0, 0, 0] }}>\n {children}\n </Box>\n )}\n {variant === 'h2' && (\n <Box as='h2' variant='styles.h2' sx={{ my: [0, 0, 0, 0] }}>\n {children}\n </Box>\n )}\n </Column>\n {sidenote && <Sidenote variant={variant}>{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, { 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 from 'react'\nimport { Box } from 'theme-ui'\nimport { RotatingArrow } from '@carbonplan/icons'\nimport Group from './group'\nimport Button from './button'\n\nconst LinkGroup = ({\n members,\n color,\n inverted,\n tracking,\n size = 'xs',\n direction = 'horizontal',\n spacing = 'sm',\n sx,\n}) => {\n return (\n <Group direction={direction} spacing={spacing} sx={sx}>\n {members.map((d, i) => {\n return (\n <Button\n key={i}\n href={d.href}\n label={d.label}\n size={size}\n sx={{\n color: color,\n mb: [2, 1, 1, 1],\n }}\n inverted={inverted}\n suffix={<RotatingArrow />}\n tracking={tracking}\n >\n {d.label}\n </Button>\n )\n })}\n </Group>\n )\n}\n\nexport default LinkGroup\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, { 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 from 'react'\nimport Caption from './caption'\n\nconst TableCaption = ({ number, children }) => {\n return (\n <Caption number={number} label='table'>\n {children}\n </Caption>\n )\n}\n\nexport default TableCaption\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","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","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' && ['day', 'month'].includes(element)) {\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(options.separator ?? ' ')\n}\n\nexport default formatDate\n"],"names":["Avatar","color","width","maxWidth","name","github","alt","src","sx","console","warn","toLowerCase","replace","React","Box","height","borderRadius","position","display","verticalAlign","bg","Image","opacity","filter","Row","columnGap","rowGap","children","columns","gap","props","makeArray","input","Array","isArray","includes","length","Error","map","d","flat","Number","isInteger","Grid","Column","start","dl","dr","ml","mr","end","i","gridColumnStart","gridColumnEnd","sizes","xs","sm","md","lg","xl","Group","marginValue","direction","spacing","hasOwnProperty","marginProperty","additionalStyles","Children","child","AvatarGroup","members","align","fixedCount","Object","keys","idx","Math","max","key","Badge","backgroundColor","transparentize","textAlign","userSelect","fontSize","letterSpacing","fontFamily","mt","px","specialChars","Blockquote","firstChar","slice","cloneElement","variant","as","forwardRef","ref","href","internal","tracking","startsWith","NextLink","passHref","ThemedLink","action","category","track","e","window","gtag","event_category","event_label","label","value","event","onClick","onContextMenu","getSizeStyles","size","lineHeight","offset","margin","strokeWidth","prefix","suffix","inverted","prefixHover","suffixHover","prefixAlign","suffixAlign","prefixOffset","suffixOffset","baseColor","hoverColor","transform","type","hover","id","transition","style","border","background","padding","cursor","Inner","Link","textDecoration","mb","fill","pb","textTransform","Arrow","top","Caption","number","mx","pr","styles","setClim","borderBottom","colors","primary","outline","minWidth","DIMENSIONS","Gradient","colormap","discrete","horizontal","step","css","join","minHeight","hinted","Label","units","alignSelf","writingMode","whiteSpace","overflow","Colorbar","clim","setClimStep","format","bottom","sxClim","x","y","dx","climRef","useRef","useState","climMinDragging","setClimMinDragging","climMaxDragging","setClimMaxDragging","dy","init","scale","draggingFunction","pageX","pageY","prev","min","handleMouseDown","target","document","body","setAttribute","addEventListener","updater","removeEventListener","useEffect","listener","code","current","activeElement","preventDefault","focus","increment","decrement","ClimMin","tabIndex","secondary","onMouseDown","ClimMax","Flex","flexDirection","alignItems","justifyContent","flexGrow","InlineColor","Colors","Meta","title","description","card","Head","content","rel","crossOrigin","property","Logo","stroke","viewBox","Menu","IconButton","marginTop","xmlns","x1","y1","x2","y2","className","first","borderStyle","borderColor","borderWidth","borderBottomWidth","borderTopWidth","py","links","url","HoverArrow","pointerEvents","left","Nav","link","mode","nav","setExpanded","NavGroup","Header","status","menuItems","expanded","pt","zIndex","flexShrink","right","maxHeight","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","shortSha","substring","Separator","Text","r","cx","cy","Value","toFixed","setDisplay","setFromEvent","clientX","clientY","documnt","scrollY","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","GuideColumns","indices","colorCycle","outerGuideColumn","borderLeftWidth","borderRightWidth","innerGuideColumn","borderLeftColor","borderRightColor","Settings","Layout","settings","footer","header","metadata","dimmer","guide","scrollbar","container","query","matchMedia","breakpoints","onchange","matches","push","flex","Custom404","Styled","h1","PoopSad","Expander","p","FigureCaption","Tag","isClickable","onDoubleClick","m","duplicateOptions","options","defaultValue","overrides","reduce","o","assign","isAll","option","updateValues","updatedToggle","values","multiSelect","setValues","isAllAlreadySelected","isSelectingAll","Filter","showAll","Sidenote","Heading","sidenote","descriptionStart","descriptionWidth","titleWidth","my","WebkitAppearance","ThemedInput","LinkGroup","Button","RotatingArrow","Select","test","sxSelect","sizeStyles","onChange","omitOnChange","k","next","blur","MozAppearance","borderBottomStyle","borderBottomColor","ThemeSlider","boxShadow","reset","row","index","entry","Table","data","borderTop","column","j","TableCaption","disabled","Tracking","async","dangerouslySetInnerHTML","__html","Tray","pl","defaultOptions","month","day","year","formatDateElement","date","element","result","toLocaleString","formatDate","Date","Boolean","separator"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/avatar.js","../src/row.js","../src/column.js","../src/group.js","../src/avatar-group.js","../src/badge.js","../src/blockquote.js","../src/link.js","../src/utils/get-size-styles.js","../src/button.js","../src/callout.js","../src/caption.js","../src/colorbar.js","../src/colors.js","../src/meta.js","../src/logo.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/custom-404.js","../src/expander.js","../src/figure-caption.js","../src/tag.js","../src/filter.js","../src/sidenote.js","../src/heading.js","../src/input.js","../src/link-group.js","../src/select.js","../src/utils/get-props.js","../src/slider.js","../src/table.js","../src/table-caption.js","../src/toggle.js","../src/tracking.js","../src/tray.js","../src/utils/format-date.js"],"sourcesContent":["import React from 'react'\nimport { Box, Image } from 'theme-ui'\n\nconst Avatar = ({\n color = 'transparent',\n width = '90px',\n maxWidth,\n name,\n github,\n alt,\n src,\n sx,\n ...props\n}) => {\n if (!name && !src && !github) {\n console.warn('must specify either name, github, or src')\n }\n\n let srcProp, altProp\n if (name) {\n srcProp = `https://images.carbonplan.org/team/${name\n .toLowerCase()\n .replace(' ', '-')}.png`\n altProp = alt || name\n } else if (github) {\n srcProp = `https://github.com/${github}.png`\n altProp = alt || github\n } else {\n srcProp = src\n altProp = alt\n }\n\n return (\n <Box\n sx={{\n width: width,\n maxWidth: maxWidth,\n height: 'auto',\n borderRadius: '50%',\n position: 'relative',\n display: 'inline-block',\n verticalAlign: 'top',\n bg: color,\n ...sx,\n }}\n {...props}\n >\n <Image\n alt={altProp}\n src={srcProp}\n sx={{\n opacity: color && color !== 'transparent' ? 0.25 : 1,\n filter:\n color && color !== 'transparent'\n ? 'grayscale(100%) contrast(200%) brightness(100%)'\n : 'none',\n width: '100%',\n borderRadius: '50%',\n display: 'block',\n }}\n />\n </Box>\n )\n}\n\nexport default Avatar\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 { 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 { 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', sx }) => {\n let marginValue\n if (typeof spacing === 'string' && sizes.hasOwnProperty(spacing)) {\n marginValue = sizes[spacing]\n } else {\n marginValue = spacing\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' ? 'mb' : 'mr'\n const additionalStyles =\n direction === 'horizontal' ? { display: 'inline-block' } : {}\n return (\n <Box sx={sx}>\n {React.Children.map(children, (child, i) => {\n return (\n <Box\n sx={{\n [marginProperty]: i < children.length - 1 ? 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 Avatar from './avatar'\nimport Row from './row'\nimport Column from './column'\nimport Group from './group'\n\nconst sizes = {\n xs: [1],\n sm: [3],\n md: [5],\n lg: [7],\n xl: [9],\n}\n\nconst AvatarGroup = ({\n members,\n direction = 'horizontal',\n align,\n spacing = 'md',\n width,\n maxWidth,\n fixedCount,\n sx,\n ...props\n}) => {\n if (members.length > fixedCount) {\n throw Error(\n `cannot render '${members.length}' avatars with a fixed count of '${fixedCount}'`\n )\n }\n\n let gap\n if (sizes.hasOwnProperty(spacing)) {\n gap = sizes[spacing]\n } else {\n gap = spacing\n }\n\n let start = (idx) => 'auto'\n if (align) {\n if (!Array.isArray(align)) {\n align = [align]\n }\n start = (idx) =>\n align.map((d) => {\n if (d === 'left') {\n return 'auto'\n } else if (d === 'right') {\n const offset = Math.max(1, fixedCount - members.length + 1)\n return offset + idx\n } else {\n throw Error(`alignment '${align}' not recognized`)\n }\n })\n }\n\n return (\n <>\n {fixedCount && (\n <Row columns={fixedCount} gap={gap} sx={sx} {...props}>\n {members.map((props, idx) => (\n <Column key={idx} start={start(idx)}>\n <Avatar {...props} width={width} maxWidth={maxWidth} />\n </Column>\n ))}\n </Row>\n )}\n {!fixedCount && (\n <Group direction={direction} spacing={spacing} sx={sx} {...props}>\n {members.map((props, idx) => (\n <Avatar key={idx} {...props} width={width} maxWidth={maxWidth} />\n ))}\n </Group>\n )}\n </>\n )\n}\n\nexport default AvatarGroup\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, { cloneElement, Children } from 'react'\nimport { Box } from 'theme-ui'\n\nconst specialChars = ['“', '\"', \"'\", '‘']\n\nconst Blockquote = ({ children }) => {\n let firstChar = ''\n\n if (\n Array.isArray(children) &&\n children[0].props &&\n typeof children[0].props.children === 'string'\n ) {\n firstChar = children[0].props.children.slice(0, 1)\n children = Children.map(children, (d, i) => {\n if (i == 0) {\n return cloneElement(d, { children: d.props.children.slice(1) })\n } else return d\n })\n } else if (children.props && typeof children.props.children === 'string') {\n firstChar = children.props.children.slice(0, 1)\n children = cloneElement(children, {\n children: children.props.children.slice(1),\n })\n } else if (typeof children === 'string') {\n firstChar = children.slice(0, 1)\n children = children.slice(1)\n }\n\n return (\n <Box variant='styles.blockquote'>\n {specialChars.includes(firstChar) && (\n <Box as='span' sx={{ position: 'absolute', ml: '-0.4em' }}>\n {firstChar}\n </Box>\n )}\n {children}\n </Box>\n )\n}\n\nexport default Blockquote\n","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, ...sxProp } = sx || {}\n\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 ...sxProp,\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 from 'react'\nimport { Box } from 'theme-ui'\n\nconst Caption = ({ number, children, label = 'figure' }) => {\n return (\n <Box\n as='figcaption'\n sx={{\n color: 'secondary',\n mt: [3, 3, 3, 4],\n mb: [6, 6, 6, 7],\n fontSize: [2, 2, 2, 3],\n }}\n >\n {number && (\n <>\n <Box\n sx={{\n textTransform: 'uppercase',\n letterSpacing: 'smallcaps',\n display: 'inline-block',\n }}\n >\n {label} {number}\n </Box>{' '}\n <Box sx={{ display: 'inline-block', mx: [1], pr: [1] }}>/</Box>\n </>\n )}\n {children}\n </Box>\n )\n}\n\nexport default Caption\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 InlineColor = ({ sx, color, children, ...props }) => {\n return (\n <Box\n as='span'\n sx={{ display: 'inline-block', color: color, ...sx }}\n {...props}\n >\n {children}\n </Box>\n )\n}\n\nconst Colors = {}\n\nColors.Primary = ({ sx, children, ...props }) => {\n return (\n <InlineColor color='primary' {...props}>\n {children}\n </InlineColor>\n )\n}\n\nColors.Secondary = ({ sx, children, ...props }) => {\n return (\n <InlineColor color='secondary' {...props}>\n {children}\n </InlineColor>\n )\n}\n\nColors.Background = ({ sx, children, ...props }) => {\n return (\n <InlineColor color='background' {...props}>\n {children}\n </InlineColor>\n )\n}\n\nColors.Red = ({ sx, children, ...props }) => {\n return (\n <InlineColor color='red' {...props}>\n {children}\n </InlineColor>\n )\n}\n\nColors.Orange = ({ sx, children, ...props }) => {\n return (\n <InlineColor color='orange' {...props}>\n {children}\n </InlineColor>\n )\n}\n\nColors.Yellow = ({ sx, children, ...props }) => {\n return (\n <InlineColor color='yellow' {...props}>\n {children}\n </InlineColor>\n )\n}\n\nColors.Green = ({ sx, children, ...props }) => {\n return (\n <InlineColor color='green' {...props}>\n {children}\n </InlineColor>\n )\n}\n\nColors.Teal = ({ sx, children, ...props }) => {\n return (\n <InlineColor color='teal' {...props}>\n {children}\n </InlineColor>\n )\n}\n\nColors.Blue = ({ sx, children, ...props }) => {\n return (\n <InlineColor color='blue' {...props}>\n {children}\n </InlineColor>\n )\n}\n\nColors.Purple = ({ sx, children, ...props }) => {\n return (\n <InlineColor color='purple' {...props}>\n {children}\n </InlineColor>\n )\n}\n\nColors.Pink = ({ sx, children, ...props }) => {\n return (\n <InlineColor color='pink' {...props}>\n {children}\n </InlineColor>\n )\n}\n\nColors.Grey = ({ sx, children, ...props }) => {\n return (\n <InlineColor color='grey' {...props}>\n {children}\n </InlineColor>\n )\n}\n\nexport default Colors\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 { 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\n sx={{ pointerEvents: 'all', display: 'block', width: 'fit-content' }}\n >\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={{ pointerEvents: 'all', justifyContent: 'flex-end' }}>\n <Box\n sx={{\n display: [status ? 'none' : 'flex', 'flex', 'flex', 'flex'],\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 </Box>\n <Menu\n sx={{\n flexShrink: 0,\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 printable = false,\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 const hideOnPrint = printable\n ? {\n '@media print': {\n display: 'none',\n },\n }\n : {}\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 ...hideOnPrint,\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 ...hideOnPrint,\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, 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 Caption from './caption'\n\nconst FigureCaption = ({ number, children }) => {\n return (\n <Caption number={number} label='figure'>\n {children}\n </Caption>\n )\n}\n\nexport default FigureCaption\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'\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', '25px']\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 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 variant = 'h1',\n description,\n descriptionStart = [1, 3, 5, 5],\n descriptionWidth = [5, 5, 5, 4],\n sx,\n}) => {\n let titleWidth = [6, 6, 6, 6]\n if (description) {\n titleWidth[1] = descriptionStart[1] - 1\n titleWidth[2] = descriptionStart[2] - 2\n titleWidth[3] = descriptionStart[3] - 2\n }\n\n if (!['h1', 'h2'].includes(variant)) {\n throw new Error(`variant must be 'h1' or 'h2' but got '${variant}'`)\n }\n\n return (\n <Row sx={{ mt: [5, 6, 7, 8], mb: [5, 6, 7, 8], ...sx }}>\n <Column start={[1, 1, 2, 2]} width={titleWidth}>\n {variant === 'h1' && (\n <Box as='h1' variant='styles.h1' sx={{ my: [0, 0, 0, 0] }}>\n {children}\n </Box>\n )}\n {variant === 'h2' && (\n <Box as='h2' variant='styles.h2' sx={{ my: [0, 0, 0, 0] }}>\n {children}\n </Box>\n )}\n </Column>\n {sidenote && <Sidenote variant={variant}>{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, { 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 from 'react'\nimport { Box } from 'theme-ui'\nimport { RotatingArrow } from '@carbonplan/icons'\nimport Group from './group'\nimport Button from './button'\n\nconst LinkGroup = ({\n members,\n color,\n inverted,\n tracking,\n size = 'xs',\n direction = 'horizontal',\n spacing = 'sm',\n sx,\n}) => {\n return (\n <Group direction={direction} spacing={spacing} sx={sx}>\n {members.map((d, i) => {\n return (\n <Button\n key={i}\n href={d.href}\n label={d.label}\n size={size}\n sx={{\n color: color,\n mb: [2, 1, 1, 1],\n }}\n inverted={inverted}\n suffix={<RotatingArrow />}\n tracking={tracking}\n >\n {d.label}\n </Button>\n )\n })}\n </Group>\n )\n}\n\nexport default LinkGroup\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, { 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 from 'react'\nimport Caption from './caption'\n\nconst TableCaption = ({ number, children }) => {\n return (\n <Caption number={number} label='table'>\n {children}\n </Caption>\n )\n}\n\nexport default TableCaption\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","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","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' && ['day', 'month'].includes(element)) {\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(options.separator ?? ' ')\n}\n\nexport default formatDate\n"],"names":["Avatar","srcProp","altProp","color","width","maxWidth","name","github","alt","src","sx","props","console","warn","toLowerCase","replace","React","Box","height","borderRadius","position","display","verticalAlign","bg","Image","opacity","filter","Row","columnGap","rowGap","children","columns","gap","makeArray","input","Array","isArray","includes","length","Error","map","d","flat","Number","isInteger","Grid","Column","start","dl","dr","ml","mr","end","i","gridColumnStart","gridColumnEnd","sizes","xs","sm","md","lg","xl","Group","marginValue","direction","spacing","hasOwnProperty","marginProperty","additionalStyles","Children","child","AvatarGroup","members","align","fixedCount","idx","Math","max","key","Badge","backgroundColor","transparentize","textAlign","userSelect","fontSize","letterSpacing","fontFamily","mt","px","specialChars","Blockquote","firstChar","slice","cloneElement","variant","as","forwardRef","ref","href","internal","tracking","startsWith","NextLink","passHref","ThemedLink","action","category","track","e","window","gtag","event_category","event_label","label","value","event","onClick","onContextMenu","getSizeStyles","size","lineHeight","offset","margin","strokeWidth","prefix","suffix","inverted","prefixHover","suffixHover","prefixAlign","suffixAlign","prefixOffset","suffixOffset","sxProp","baseColor","hoverColor","transform","type","hover","id","transition","style","border","background","padding","cursor","Inner","Link","textDecoration","mb","fill","pb","textTransform","Arrow","top","Caption","number","mx","pr","styles","setClim","borderBottom","colors","primary","outline","minWidth","DIMENSIONS","Gradient","colormap","discrete","horizontal","step","css","join","minHeight","hinted","Label","units","alignSelf","writingMode","whiteSpace","overflow","Colorbar","clim","setClimStep","format","bottom","sxClim","x","y","dx","climRef","useRef","useState","climMinDragging","setClimMinDragging","climMaxDragging","setClimMaxDragging","dy","init","scale","draggingFunction","pageX","pageY","prev","min","handleMouseDown","target","document","body","setAttribute","addEventListener","updater","removeEventListener","useEffect","listener","code","current","activeElement","preventDefault","focus","increment","decrement","ClimMin","tabIndex","secondary","onMouseDown","ClimMax","Flex","flexDirection","alignItems","justifyContent","flexGrow","InlineColor","Colors","Meta","title","description","card","Head","content","rel","crossOrigin","property","Logo","stroke","viewBox","Menu","IconButton","marginTop","xmlns","x1","y1","x2","y2","className","first","borderStyle","borderColor","borderWidth","borderBottomWidth","borderTopWidth","py","links","url","HoverArrow","pointerEvents","left","Nav","link","mode","nav","setExpanded","NavGroup","Header","status","menuItems","expanded","pt","zIndex","flexShrink","right","maxHeight","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","shortSha","substring","Separator","Text","r","cx","cy","Value","toFixed","setDisplay","setFromEvent","clientX","clientY","documnt","scrollY","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","GuideColumns","indices","colorCycle","outerGuideColumn","borderLeftWidth","borderRightWidth","innerGuideColumn","borderLeftColor","borderRightColor","Settings","Layout","settings","footer","header","metadata","dimmer","guide","scrollbar","container","printable","hideOnPrint","query","matchMedia","breakpoints","onchange","matches","push","flex","Custom404","Styled","h1","PoopSad","Expander","p","FigureCaption","Tag","isClickable","onDoubleClick","m","duplicateOptions","options","defaultValue","overrides","Object","keys","reduce","o","assign","isAll","option","updateValues","updatedToggle","values","multiSelect","setValues","isAllAlreadySelected","isSelectingAll","Filter","showAll","Sidenote","Heading","sidenote","descriptionStart","descriptionWidth","titleWidth","my","WebkitAppearance","ThemedInput","LinkGroup","Button","RotatingArrow","Select","test","sxSelect","sizeStyles","onChange","omitOnChange","k","next","blur","MozAppearance","borderBottomStyle","borderBottomColor","ThemeSlider","boxShadow","reset","row","index","entry","Table","data","borderTop","column","j","TableCaption","disabled","Tracking","async","dangerouslySetInnerHTML","__html","Tray","pl","defaultOptions","month","day","year","formatDateElement","date","element","result","toLocaleString","formatDate","Date","Boolean","separator"],"mappings":"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"}
|