{"version":3,"file":"component---src-pages-index-tsx-4cc029a8ecf61f3885a0.js","mappings":"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","sources":["webpack://the-good-code/./src/components/ui/atoms/Title.tsx","webpack://the-good-code/./node_modules/@chakra-ui/media-query/dist/chakra-ui-media-query.esm.js","webpack://the-good-code/./node_modules/@chakra-ui/image/dist/chakra-ui-image.esm.js","webpack://the-good-code/./node_modules/@chakra-ui/avatar/dist/chakra-ui-avatar.esm.js","webpack://the-good-code/./src/components/page/Hero.tsx","webpack://the-good-code/./src/utils/scrollToY.ts","webpack://the-good-code/./src/components/blog/PostPreviewFlat.tsx","webpack://the-good-code/./src/components/blog/PostPreview.tsx","webpack://the-good-code/./src/components/blog/PreviewList.tsx","webpack://the-good-code/./src/pages/index.tsx","webpack://the-good-code/./src/utils/calcReadingTime.ts","webpack://the-good-code/./node_modules/@chakra-ui/button/dist/chakra-ui-button.esm.js","webpack://the-good-code/./node_modules/react-icons/lib/esm/iconsManifest.js","webpack://the-good-code/./node_modules/react-icons/lib/esm/iconContext.js","webpack://the-good-code/./node_modules/react-icons/lib/esm/iconBase.js"],"sourcesContent":["import {Heading, useColorModeValue} from \"@chakra-ui/react\";\nimport {Link as GatsbyLink} from \"gatsby\";\nimport React from \"react\";\n\nconst Title = () => {\n return (\n \n \n The Good Code
\n
\n
\n )\n}\n\nexport default Title\n","import { useTheme } from '@chakra-ui/system';\nimport { isFunction, __DEV__, memoizedGet, isObject, breakpoints, isArray, fromEntries, arrayToObjectNotation } from '@chakra-ui/utils';\nimport * as React from 'react';\nimport { useState, useEffect } from 'react';\nimport { useEnvironment } from '@chakra-ui/react-env';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}\n/**\n * React hook that tracks state of a CSS media query\n *\n * @param query the media query to match\n * @param options the media query options { fallback, ssr }\n */\n\n\nfunction useMediaQuery(query, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$ssr = _options.ssr,\n ssr = _options$ssr === void 0 ? true : _options$ssr,\n fallback = _options.fallback;\n var env = useEnvironment();\n var queries = Array.isArray(query) ? query : [query];\n var fallbackValues = Array.isArray(fallback) ? fallback : [fallback];\n fallbackValues = fallbackValues.filter(function (v) {\n return v != null;\n });\n\n var _useState = useState(function () {\n return queries.map(function (query, index) {\n return {\n media: query,\n matches: ssr ? !!fallbackValues[index] : env.window.matchMedia(query).matches\n };\n });\n }),\n value = _useState[0],\n setValue = _useState[1];\n\n useEffect(function () {\n setValue(queries.map(function (query) {\n return {\n media: query,\n matches: env.window.matchMedia(query).matches\n };\n }));\n var mql = queries.map(function (query) {\n return env.window.matchMedia(query);\n });\n\n var handler = function handler(evt) {\n setValue(function (prev) {\n return prev.slice().map(function (item) {\n if (item.media === evt.media) return _extends({}, item, {\n matches: evt.matches\n });\n return item;\n });\n });\n };\n\n mql.forEach(function (mql) {\n if (isFunction(mql.addListener)) mql.addListener(handler);else mql.addEventListener(\"change\", handler);\n });\n return function () {\n mql.forEach(function (mql) {\n if (isFunction(mql.removeListener)) mql.removeListener(handler);else mql.removeEventListener(\"change\", handler);\n });\n }; // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [env.window]);\n return value.map(function (item) {\n return item.matches;\n });\n}\n/**\n * Visibility\n *\n * React component to control the visibility of its\n * children based on the current breakpoint\n */\n\n\nvar Visibility = function Visibility(props) {\n var breakpoint = props.breakpoint,\n hide = props.hide,\n children = props.children,\n ssr = props.ssr;\n\n var _useMediaQuery = useMediaQuery(breakpoint, {\n ssr: ssr\n }),\n show = _useMediaQuery[0];\n\n var isVisible = hide ? !show : show;\n var rendered = isVisible ? children : null;\n return rendered;\n};\n\nvar Hide = function Hide(props) {\n var children = props.children,\n ssr = props.ssr;\n var query = useQuery(props);\n return /*#__PURE__*/React.createElement(Visibility, {\n breakpoint: query,\n hide: true,\n ssr: ssr\n }, children);\n};\n\nif (__DEV__) {\n Hide.displayName = \"Hide\";\n}\n\nvar Show = function Show(props) {\n var children = props.children,\n ssr = props.ssr;\n var query = useQuery(props);\n return /*#__PURE__*/React.createElement(Visibility, {\n breakpoint: query,\n ssr: ssr\n }, children);\n};\n\nif (__DEV__) {\n Show.displayName = \"Show\";\n}\n\nvar getBreakpoint = function getBreakpoint(theme, value) {\n return memoizedGet(theme, \"breakpoints.\" + value, value);\n};\n\nfunction useQuery(props) {\n var _props$breakpoint = props.breakpoint,\n breakpoint = _props$breakpoint === void 0 ? \"\" : _props$breakpoint,\n below = props.below,\n above = props.above;\n var theme = useTheme();\n var bpBelow = getBreakpoint(theme, below);\n var bpAbove = getBreakpoint(theme, above);\n var query = breakpoint;\n\n if (bpBelow) {\n query = \"(max-width: \" + bpBelow + \")\";\n } else if (bpAbove) {\n query = \"(min-width: \" + bpAbove + \")\";\n }\n\n return query;\n}\n/**\n * React hook used to get the user's animation preference.\n */\n\n\nfunction usePrefersReducedMotion(options) {\n var _useMediaQuery = useMediaQuery(\"(prefers-reduced-motion: reduce)\", options),\n prefersReducedMotion = _useMediaQuery[0];\n\n return prefersReducedMotion;\n}\n/**\n * React hook for getting the user's color mode preference.\n */\n\n\nfunction useColorModePreference(options) {\n var _useMediaQuery2 = useMediaQuery([\"(prefers-color-scheme: light)\", \"(prefers-color-scheme: dark)\"], options),\n isLight = _useMediaQuery2[0],\n isDark = _useMediaQuery2[1];\n\n if (isLight) return \"light\";\n if (isDark) return \"dark\";\n return undefined;\n}\n/**\n * React hook used to get the current responsive media breakpoint.\n *\n * For SSR, you can use a package like [is-mobile](https://github.com/kaimallea/isMobile)\n * to get the default breakpoint value from the user-agent.\n */\n\n\nfunction useBreakpoint(arg) {\n var _breakpoints$index$br, _breakpoints$index;\n\n var opts = isObject(arg) ? arg : {\n fallback: arg != null ? arg : \"base\"\n };\n var theme = useTheme();\n\n var breakpoints = theme.__breakpoints.details.map(function (_ref) {\n var minMaxQuery = _ref.minMaxQuery,\n breakpoint = _ref.breakpoint;\n return {\n breakpoint: breakpoint,\n query: minMaxQuery.replace(\"@media screen and \", \"\")\n };\n });\n\n var fallback = breakpoints.map(function (bp) {\n return bp.breakpoint === opts.fallback;\n });\n var values = useMediaQuery(breakpoints.map(function (bp) {\n return bp.query;\n }), {\n fallback: fallback,\n ssr: opts.ssr\n });\n var index = values.findIndex(function (value) {\n return value == true;\n });\n return (_breakpoints$index$br = (_breakpoints$index = breakpoints[index]) == null ? void 0 : _breakpoints$index.breakpoint) != null ? _breakpoints$index$br : opts.fallback;\n}\n\nfunction getClosestValue(values, breakpoint, breakpoints$1) {\n if (breakpoints$1 === void 0) {\n breakpoints$1 = breakpoints;\n }\n\n var index = Object.keys(values).indexOf(breakpoint);\n\n if (index !== -1) {\n return values[breakpoint];\n }\n\n var stopIndex = breakpoints$1.indexOf(breakpoint);\n\n while (stopIndex >= 0) {\n var key = breakpoints$1[stopIndex];\n\n if (values.hasOwnProperty(key)) {\n index = stopIndex;\n break;\n }\n\n stopIndex -= 1;\n }\n\n if (index !== -1) {\n var _key = breakpoints$1[index];\n return values[_key];\n }\n\n return undefined;\n}\n/**\n * React hook for getting the value for the current breakpoint from the\n * provided responsive values object.\n *\n * For SSR, you can use a package like [is-mobile](https://github.com/kaimallea/isMobile)\n * to get the default breakpoint value from the user-agent\n *\n * @example\n * const width = useBreakpointValue({ base: '150px', md: '250px' })\n */\n\n\nfunction useBreakpointValue(values, arg) {\n var _theme$__breakpoints;\n\n var opts = isObject(arg) ? arg : {\n fallback: arg != null ? arg : \"base\"\n };\n var breakpoint = useBreakpoint(opts);\n var theme = useTheme();\n if (!breakpoint) return;\n /**\n * Get the sorted breakpoint keys from the provided breakpoints\n */\n\n var breakpoints = Array.from(((_theme$__breakpoints = theme.__breakpoints) == null ? void 0 : _theme$__breakpoints.keys) || []);\n var obj = isArray(values) ? fromEntries(Object.entries(arrayToObjectNotation(values, breakpoints)).map(function (_ref) {\n var key = _ref[0],\n value = _ref[1];\n return [key, value];\n })) : values;\n return getClosestValue(obj, breakpoint, breakpoints);\n}\n\nexport { Hide, Show, useBreakpoint, useBreakpointValue, useColorModePreference, useMediaQuery, usePrefersReducedMotion, useQuery };","import { forwardRef, chakra } from '@chakra-ui/system';\nimport { __DEV__, omit } from '@chakra-ui/utils';\nimport * as React from 'react';\nimport { useState, useEffect, useRef, useCallback } from 'react';\nimport { useSafeLayoutEffect } from '@chakra-ui/hooks';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n/**\n * React hook that loads an image in the browser,\n * and lets us know the `status` so we can show image\n * fallback if it is still `pending`\n *\n * @returns the status of the image loading progress\n *\n * @example\n *\n * ```jsx\n * function App(){\n * const status = useImage({ src: \"image.png\" })\n * return status === \"loaded\" ? : \n * }\n * ```\n */\n\n\nfunction useImage(props) {\n var loading = props.loading,\n src = props.src,\n srcSet = props.srcSet,\n onLoad = props.onLoad,\n onError = props.onError,\n crossOrigin = props.crossOrigin,\n sizes = props.sizes,\n ignoreFallback = props.ignoreFallback;\n\n var _useState = useState(\"pending\"),\n status = _useState[0],\n setStatus = _useState[1];\n\n useEffect(function () {\n setStatus(src ? \"loading\" : \"pending\");\n }, [src]);\n var imageRef = useRef();\n var load = useCallback(function () {\n if (!src) return;\n flush();\n var img = new Image();\n img.src = src;\n if (crossOrigin) img.crossOrigin = crossOrigin;\n if (srcSet) img.srcset = srcSet;\n if (sizes) img.sizes = sizes;\n if (loading) img.loading = loading;\n\n img.onload = function (event) {\n flush();\n setStatus(\"loaded\");\n onLoad == null ? void 0 : onLoad(event);\n };\n\n img.onerror = function (error) {\n flush();\n setStatus(\"failed\");\n onError == null ? void 0 : onError(error);\n };\n\n imageRef.current = img;\n }, [src, crossOrigin, srcSet, sizes, onLoad, onError, loading]);\n\n var flush = function flush() {\n if (imageRef.current) {\n imageRef.current.onload = null;\n imageRef.current.onerror = null;\n imageRef.current = null;\n }\n };\n\n useSafeLayoutEffect(function () {\n /**\n * If user opts out of the fallback/placeholder\n * logic, let's bail out.\n */\n if (ignoreFallback) return undefined;\n\n if (status === \"loading\") {\n load();\n }\n\n return function () {\n flush();\n };\n }, [status, load, ignoreFallback]);\n /**\n * If user opts out of the fallback/placeholder\n * logic, let's just return 'loaded'\n */\n\n return ignoreFallback ? \"loaded\" : status;\n}\n\nvar shouldShowFallbackImage = function shouldShowFallbackImage(status, fallbackStrategy) {\n return status !== \"loaded\" && fallbackStrategy === \"beforeLoadOrError\" || status === \"failed\" && fallbackStrategy === \"onError\";\n};\n\nvar _excluded = [\"htmlWidth\", \"htmlHeight\", \"alt\"],\n _excluded2 = [\"fallbackSrc\", \"fallback\", \"src\", \"srcSet\", \"align\", \"fit\", \"loading\", \"ignoreFallback\", \"crossOrigin\", \"fallbackStrategy\", \"referrerPolicy\"];\nvar NativeImage = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var htmlWidth = props.htmlWidth,\n htmlHeight = props.htmlHeight,\n alt = props.alt,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n return /*#__PURE__*/React.createElement(\"img\", _extends({\n width: htmlWidth,\n height: htmlHeight,\n ref: ref,\n alt: alt\n }, rest));\n});\n\nif (__DEV__) {\n NativeImage.displayName = \"NativeImage\";\n}\n/**\n * React component that renders an image with support\n * for fallbacks\n *\n * @see Docs https://chakra-ui.com/image\n */\n\n\nvar Image$1 = /*#__PURE__*/forwardRef(function (props, ref) {\n var fallbackSrc = props.fallbackSrc,\n fallback = props.fallback,\n src = props.src,\n srcSet = props.srcSet,\n align = props.align,\n fit = props.fit,\n loading = props.loading,\n ignoreFallback = props.ignoreFallback,\n crossOrigin = props.crossOrigin,\n _props$fallbackStrate = props.fallbackStrategy,\n fallbackStrategy = _props$fallbackStrate === void 0 ? \"beforeLoadOrError\" : _props$fallbackStrate,\n referrerPolicy = props.referrerPolicy,\n rest = _objectWithoutPropertiesLoose(props, _excluded2);\n\n var providedFallback = fallbackSrc !== undefined || fallback !== undefined;\n /**\n * Defer to native `img` tag if `loading` prop is passed\n * @see https://github.com/chakra-ui/chakra-ui/issues/1027\n *\n * shouldIgnoreFallbackImage determines if we have the possibility to render a fallback image\n */\n\n var shouldIgnoreFallbackImage = loading != null || // use can opt out of fallback image\n ignoreFallback || // if the user doesn't provide any kind of fallback we should ignore it\n !providedFallback;\n /**\n * returns `loaded` if fallback is ignored\n */\n\n var status = useImage(_extends({}, props, {\n ignoreFallback: shouldIgnoreFallbackImage\n }));\n var showFallbackImage = shouldShowFallbackImage(status, fallbackStrategy);\n\n var shared = _extends({\n ref: ref,\n objectFit: fit,\n objectPosition: align\n }, shouldIgnoreFallbackImage ? rest : omit(rest, [\"onError\", \"onLoad\"]));\n\n if (showFallbackImage) {\n /**\n * If user passed a custom fallback component,\n * let's render it here.\n */\n if (fallback) return fallback;\n return /*#__PURE__*/React.createElement(chakra.img, _extends({\n as: NativeImage,\n className: \"chakra-image__placeholder\",\n src: fallbackSrc\n }, shared));\n }\n\n return /*#__PURE__*/React.createElement(chakra.img, _extends({\n as: NativeImage,\n src: src,\n srcSet: srcSet,\n crossOrigin: crossOrigin,\n loading: loading,\n referrerPolicy: referrerPolicy,\n className: \"chakra-image\"\n }, shared));\n});\n/**\n * Fallback component for most SSR users who want to use the native `img` with\n * support for chakra props\n */\n\nvar Img = /*#__PURE__*/forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(chakra.img, _extends({\n ref: ref,\n as: NativeImage,\n className: \"chakra-image\"\n }, props));\n});\n\nif (__DEV__) {\n Image$1.displayName = \"Image\";\n}\n\nexport { Image$1 as Image, Img, shouldShowFallbackImage, useImage };","import { useImage } from '@chakra-ui/image';\nimport { createStylesContext, forwardRef, chakra, useMultiStyleConfig, omitThemingProps } from '@chakra-ui/system';\nimport { cx, __DEV__, filterUndefined } from '@chakra-ui/utils';\nimport * as React from 'react';\nimport { getValidChildren } from '@chakra-ui/react-utils';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nvar _excluded$1 = [\"name\", \"getInitials\"],\n _excluded2 = [\"src\", \"srcSet\", \"name\", \"showBorder\", \"borderRadius\", \"onError\", \"getInitials\", \"icon\", \"iconLabel\", \"loading\", \"children\", \"borderColor\", \"ignoreFallback\"];\n\nvar _createStylesContext = createStylesContext(\"Avatar\"),\n StylesProvider = _createStylesContext[0],\n useStyles = _createStylesContext[1];\n\nvar useAvatarStyles = useStyles;\n/**\n * AvatarBadge used to show extra badge to the top-right\n * or bottom-right corner of an avatar.\n */\n\nvar AvatarBadge = /*#__PURE__*/forwardRef(function (props, ref) {\n var styles = useStyles();\n\n var badgeStyles = _extends({\n position: \"absolute\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n insetEnd: \"0\",\n bottom: \"0\"\n }, styles.badge);\n\n return /*#__PURE__*/React.createElement(chakra.div, _extends({\n ref: ref\n }, props, {\n className: cx(\"chakra-avatar__badge\", props.className),\n __css: badgeStyles\n }));\n});\n\nif (__DEV__) {\n AvatarBadge.displayName = \"AvatarBadge\";\n}\n\nfunction initials(name) {\n var _name$split = name.split(\" \"),\n firstName = _name$split[0],\n lastName = _name$split[1];\n\n return firstName && lastName ? \"\" + firstName.charAt(0) + lastName.charAt(0) : firstName.charAt(0);\n}\n/**\n * The avatar name container\n */\n\n\nvar AvatarName = function AvatarName(props) {\n var name = props.name,\n getInitials = props.getInitials,\n rest = _objectWithoutPropertiesLoose(props, _excluded$1);\n\n var styles = useStyles();\n return /*#__PURE__*/React.createElement(chakra.div, _extends({\n role: \"img\",\n \"aria-label\": name\n }, rest, {\n __css: styles.label\n }), name ? getInitials == null ? void 0 : getInitials(name) : null);\n};\n/**\n * Fallback avatar react component.\n * This should be a generic svg used to represent an avatar\n */\n\n\nvar DefaultIcon = function DefaultIcon(props) {\n return /*#__PURE__*/React.createElement(chakra.svg, _extends({\n viewBox: \"0 0 128 128\",\n color: \"#fff\",\n width: \"100%\",\n height: \"100%\",\n className: \"chakra-avatar__svg\"\n }, props), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M103,102.1388 C93.094,111.92 79.3504,118 64.1638,118 C48.8056,118 34.9294,111.768 25,101.7892 L25,95.2 C25,86.8096 31.981,80 40.6,80 L87.4,80 C96.019,80 103,86.8096 103,95.2 L103,102.1388 Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M63.9961647,24 C51.2938136,24 41,34.2938136 41,46.9961647 C41,59.7061864 51.2938136,70 63.9961647,70 C76.6985159,70 87,59.7061864 87,46.9961647 C87,34.2938136 76.6985159,24 63.9961647,24\"\n }));\n};\n\nvar baseStyle = {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n textAlign: \"center\",\n textTransform: \"uppercase\",\n fontWeight: \"medium\",\n position: \"relative\",\n flexShrink: 0\n};\n/**\n * Avatar component that renders an user avatar with\n * support for fallback avatar and name-only avatars\n */\n\nvar Avatar = /*#__PURE__*/forwardRef(function (props, ref) {\n var styles = useMultiStyleConfig(\"Avatar\", props);\n\n var _omitThemingProps = omitThemingProps(props),\n src = _omitThemingProps.src,\n srcSet = _omitThemingProps.srcSet,\n name = _omitThemingProps.name,\n showBorder = _omitThemingProps.showBorder,\n _omitThemingProps$bor = _omitThemingProps.borderRadius,\n borderRadius = _omitThemingProps$bor === void 0 ? \"full\" : _omitThemingProps$bor,\n onError = _omitThemingProps.onError,\n _omitThemingProps$get = _omitThemingProps.getInitials,\n getInitials = _omitThemingProps$get === void 0 ? initials : _omitThemingProps$get,\n _omitThemingProps$ico = _omitThemingProps.icon,\n icon = _omitThemingProps$ico === void 0 ? /*#__PURE__*/React.createElement(DefaultIcon, null) : _omitThemingProps$ico,\n _omitThemingProps$ico2 = _omitThemingProps.iconLabel,\n iconLabel = _omitThemingProps$ico2 === void 0 ? \" avatar\" : _omitThemingProps$ico2,\n loading = _omitThemingProps.loading,\n children = _omitThemingProps.children,\n borderColor = _omitThemingProps.borderColor,\n ignoreFallback = _omitThemingProps.ignoreFallback,\n rest = _objectWithoutPropertiesLoose(_omitThemingProps, _excluded2);\n\n var avatarStyles = _extends({\n borderRadius: borderRadius,\n borderWidth: showBorder ? \"2px\" : undefined\n }, baseStyle, styles.container);\n\n if (borderColor) {\n avatarStyles.borderColor = borderColor;\n }\n\n return /*#__PURE__*/React.createElement(chakra.span, _extends({\n ref: ref\n }, rest, {\n className: cx(\"chakra-avatar\", props.className),\n __css: avatarStyles\n }), /*#__PURE__*/React.createElement(StylesProvider, {\n value: styles\n }, /*#__PURE__*/React.createElement(AvatarImage, {\n src: src,\n srcSet: srcSet,\n loading: loading,\n onError: onError,\n getInitials: getInitials,\n name: name,\n borderRadius: borderRadius,\n icon: icon,\n iconLabel: iconLabel,\n ignoreFallback: ignoreFallback\n }), children));\n});\n\nif (__DEV__) {\n Avatar.displayName = \"Avatar\";\n}\n\nvar AvatarImage = function AvatarImage(props) {\n var src = props.src,\n srcSet = props.srcSet,\n onError = props.onError,\n getInitials = props.getInitials,\n name = props.name,\n borderRadius = props.borderRadius,\n loading = props.loading,\n iconLabel = props.iconLabel,\n _props$icon = props.icon,\n icon = _props$icon === void 0 ? /*#__PURE__*/React.createElement(DefaultIcon, null) : _props$icon,\n ignoreFallback = props.ignoreFallback,\n referrerPolicy = props.referrerPolicy;\n /**\n * use the image hook to only show the image when it has loaded\n */\n\n var status = useImage({\n src: src,\n onError: onError,\n ignoreFallback: ignoreFallback\n });\n var hasLoaded = status === \"loaded\";\n /**\n * Fallback avatar applies under 2 conditions:\n * - If `src` was passed and the image has not loaded or failed to load\n * - If `src` wasn't passed\n *\n * In this case, we'll show either the name avatar or default avatar\n */\n\n var showFallback = !src || !hasLoaded;\n\n if (showFallback) {\n return name ? /*#__PURE__*/React.createElement(AvatarName, {\n className: \"chakra-avatar__initials\",\n getInitials: getInitials,\n name: name\n }) : /*#__PURE__*/React.cloneElement(icon, {\n role: \"img\",\n \"aria-label\": iconLabel\n });\n }\n /**\n * If `src` was passed and the image has loaded, we'll show it\n */\n\n\n return /*#__PURE__*/React.createElement(chakra.img, {\n src: src,\n srcSet: srcSet,\n alt: name,\n referrerPolicy: referrerPolicy,\n className: \"chakra-avatar__img\",\n loading: loading,\n __css: {\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n borderRadius: borderRadius\n }\n });\n};\n\nif (__DEV__) {\n AvatarImage.displayName = \"AvatarImage\";\n}\n\nvar _excluded = [\"children\", \"borderColor\", \"max\", \"spacing\", \"borderRadius\"];\n/**\n * AvatarGroup displays a number of avatars grouped together in a stack.\n */\n\nvar AvatarGroup = /*#__PURE__*/forwardRef(function (props, ref) {\n var styles = useMultiStyleConfig(\"Avatar\", props);\n\n var _omitThemingProps = omitThemingProps(props),\n children = _omitThemingProps.children,\n borderColor = _omitThemingProps.borderColor,\n max = _omitThemingProps.max,\n _omitThemingProps$spa = _omitThemingProps.spacing,\n spacing = _omitThemingProps$spa === void 0 ? \"-0.75rem\" : _omitThemingProps$spa,\n _omitThemingProps$bor = _omitThemingProps.borderRadius,\n borderRadius = _omitThemingProps$bor === void 0 ? \"full\" : _omitThemingProps$bor,\n rest = _objectWithoutPropertiesLoose(_omitThemingProps, _excluded);\n\n var validChildren = getValidChildren(children);\n /**\n * get the avatars within the max\n */\n\n var childrenWithinMax = max ? validChildren.slice(0, max) : validChildren;\n /**\n * get the remaining avatar count\n */\n\n var excess = max != null && validChildren.length - max;\n /**\n * Reversing the children is a great way to avoid using zIndex\n * to overlap the avatars\n */\n\n var reversedChildren = childrenWithinMax.reverse();\n var clones = reversedChildren.map(function (child, index) {\n var _child$props$borderCo;\n\n var isFirstAvatar = index === 0;\n var childProps = {\n marginEnd: isFirstAvatar ? 0 : spacing,\n size: props.size,\n borderColor: (_child$props$borderCo = child.props.borderColor) != null ? _child$props$borderCo : borderColor,\n showBorder: true\n };\n return /*#__PURE__*/React.cloneElement(child, filterUndefined(childProps));\n });\n var groupStyles = {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n flexDirection: \"row-reverse\"\n };\n\n var excessStyles = _extends({\n borderRadius: borderRadius,\n marginStart: spacing\n }, baseStyle, styles.excessLabel);\n\n return /*#__PURE__*/React.createElement(chakra.div, _extends({\n ref: ref,\n role: \"group\",\n __css: groupStyles\n }, rest, {\n className: cx(\"chakra-avatar__group\", props.className)\n }), excess > 0 && /*#__PURE__*/React.createElement(chakra.span, {\n className: \"chakra-avatar__excess\",\n __css: excessStyles\n }, \"+\" + excess), clones);\n});\n\nif (__DEV__) {\n AvatarGroup.displayName = \"AvatarGroup\";\n}\n\nexport { Avatar, AvatarBadge, AvatarGroup, baseStyle, useAvatarStyles };","import {\n Box,\n Heading,\n Text,\n Stack,\n Flex,\n Avatar,\n Center,\n Link,\n Divider,\n Icon,\n useColorModeValue, IconButton, useMediaQuery\n} from '@chakra-ui/react'\nimport React from 'react'\nimport {BsChevronCompactDown, RiGithubFill, RiStackOverflowFill} from \"react-icons/all\";\nimport {scrollToY} from \"../../utils/scrollToY\";\nimport Title from \"../ui/atoms/Title\";\n\nexport interface HeroProps {\n\n}\n\nconst Hero: React.FC = ({}) => {\n const [isBrowser] = useMediaQuery(\"(min-width: 768px)\")\n\n return (\n \n \n \n <Heading fontWeight={500} fontSize={'3xl'} letterSpacing={4}>\n Treating coding as an art<br/>\n </Heading>\n <Center>\n <Flex justify={'space-between'} maxW={'xl'} align={'center'}>\n <Avatar size={'64px'}\n src={'https://avatars.githubusercontent.com/u/6214415?s=64&u=4a9b3946409341508298bea359a19878e71ac8eb&v=4'}\n alt={'Johannes Klauss'} name={'Johannes Klauss'} mr={8}/>\n <Text textAlign={'left'}>\n Hi, I am <Link color={useColorModeValue('brand.400', 'green.400')}\n href={'https://github.com/JohannesKlauss'} isExternal>Johannes\n Klauss</Link>.\n I try to explain code <br/> and concepts with code, sketches and words.\n </Text>\n </Flex>\n </Center>\n <Center>\n <Flex justify={'space-between'} align={'center'} w={150}>\n <Link href={'https://github.com/JohannesKlauss'} isExternal alt={'Tets'}>\n <Icon as={RiGithubFill} w={9} h={9} aria-label={'Github Profile'}\n _hover={{color: useColorModeValue('brand.400', 'green.400')}}/>\n </Link>\n <Link href={'https://stackoverflow.com/users/735226/johannes-klau%c3%9f'} isExternal>\n <Icon as={RiStackOverflowFill} w={9} h={9} aria-label={'Stackoverflow Profile'}\n _hover={{color: useColorModeValue('brand.400', 'green.400')}}/>\n </Link>\n </Flex>\n </Center>\n <Divider borderColor={'green.400'} mt={12} borderBottomWidth={1}/>\n {!isBrowser && (\n <Center>\n <IconButton colorScheme={'gray'} icon={<BsChevronCompactDown/>} aria-label={'Scroll down'}\n color={'green.400'}\n opacity={0.5} onClick={() => scrollToY(window.innerHeight, 700)}/>\n </Center>\n )}\n </Stack>\n </Box>\n )\n}\n\nexport default Hero\n","export function scrollToY(y: number, duration = 0, element = document.scrollingElement) {\n // cancel if already on target position\n if (!element || element.scrollTop === y) return;\n\n const cosParameter = (element.scrollTop - y) / 2;\n let scrollCount = 0, oldTimestamp: number | null = null;\n\n function step(newTimestamp: number) {\n if (!element) {\n return y;\n }\n\n if (oldTimestamp !== null) {\n // if duration is 0 scrollCount will be Infinity\n scrollCount += Math.PI * (newTimestamp - oldTimestamp) / duration;\n\n if (scrollCount >= Math.PI) {\n return element.scrollTop = y;\n }\n\n element.scrollTop = cosParameter + y + cosParameter * Math.cos(scrollCount);\n }\n\n oldTimestamp = newTimestamp;\n\n window.requestAnimationFrame(step);\n }\n\n window.requestAnimationFrame(step);\n}","import React from 'react'\nimport {Badge, Box, Link as ChakraLink, Stack, Text, useColorModeValue} from \"@chakra-ui/react\";\nimport {Link} from \"gatsby\";\nimport {Maybe} from \"../../gql/types\";\n\nexport interface PostPreviewFlatProps {\n link: string;\n date: string;\n readingTime: number;\n title: string;\n subtitle?: Maybe<string>;\n isNew?: boolean;\n}\n\nconst PostPreviewFlat: React.FC<PostPreviewFlatProps> = ({link, date, readingTime, title, subtitle, isNew}) => {\n return (\n <Box>\n <ChakraLink as={Link} to={link} color={useColorModeValue('brand.700', 'green.400')} fontSize={'2xl'} fontFamily={'heading'} fontWeight={600} letterSpacing={1.4}>\n {title}\n {isNew && <Badge variant={'solid'} colorScheme={'brand'} ml={1} mt={-3}>New</Badge>}\n </ChakraLink>\n <Stack direction={'column'} spacing={1} mt={1}>\n <Text color={'gray.400'} fontSize={'sm'}>{date} · {readingTime}min read</Text>\n <Text color={'gray.400'}>{subtitle}</Text>\n </Stack>\n </Box>\n )\n}\n\nexport default PostPreviewFlat\n","import React from 'react'\nimport {\n Avatar,\n Box,\n Center,\n Heading,\n Stack,\n Text,\n Link as ChakraLink,\n useColorModeValue,\n Badge\n} from \"@chakra-ui/react\";\nimport {Link} from \"gatsby\";\nimport {Maybe} from \"../../gql/types\";\n\nexport interface PostPreviewProps {\n link: string;\n author?: Maybe<string>;\n date: string;\n readingTime: number;\n title: string;\n tags: string[];\n intro?: Maybe<string>;\n heading?: Maybe<string>;\n isNew?: boolean;\n}\n\nconst PostPreview: React.FC<PostPreviewProps> = ({\n isNew,\n tags,\n link,\n author,\n date,\n readingTime,\n title,\n intro,\n heading\n }) => {\n return (\n <Center p={6} w={'full'} minW={'50%'}>\n <Box bg={useColorModeValue('green.100', 'gray.800')} boxShadow={'2xl'} rounded={'md'} p={6}\n overflow={'hidden'}\n >\n <Center h={'210px'} mt={-6} mx={-6} mb={6} overflow={'hidden'} pos={'relative'}\n bg={useColorModeValue('gray.50', 'gray.200')}>\n <Heading bg={'linear-gradient(145deg, #2a9d8f, #264653)'} backgroundClip={'text'}\n fontFamily={'\"Overpass Mono\"'} fontSize={'3xl'} fontWeight={800}>\n {heading}\n </Heading>\n </Center>\n <Stack>\n <Stack direction=\"row\">\n {tags.map(tag => <Badge key={tag} variant={'solid'} colorScheme={'brand'}>{tag}</Badge>)}\n </Stack>\n <ChakraLink as={Link} to={link} color={useColorModeValue('brand.400', 'gray.50')} fontSize={'2xl'}\n fontFamily={'body'}>\n {title}\n {isNew && <Badge variant={'solid'} colorScheme={'brand'} ml={1} mt={-3}>New</Badge>}\n </ChakraLink>\n <Text color={useColorModeValue('gray.800', 'gray.400')}>\n {intro}\n </Text>\n </Stack>\n <Stack mt={6} direction={'row'} spacing={4} align={'center'}>\n <Avatar src={'https://avatars.githubusercontent.com/u/6214415?s=48&v=4'} alt={'Johannes Klauss'}/>\n <Stack direction={'column'} spacing={0} fontSize={'sm'}>\n <Text fontWeight={600} color={useColorModeValue('brand.400', 'gray.50')}>{author}</Text>\n <Text color={useColorModeValue('gray.800', 'gray.400')}>{date} · {readingTime}min read</Text>\n </Stack>\n </Stack>\n </Box>\n </Center>\n )\n}\n\nexport default PostPreview\n","import React from 'react'\nimport {graphql, useStaticQuery} from \"gatsby\";\nimport {BlogPostsQuery} from \"../../gql/types\";\nimport {Box} from \"@chakra-ui/react\";\nimport PostPreviewFlat from \"./PostPreviewFlat\";\nimport PostPreview from \"./PostPreview\";\nimport {calcReadingTime} from \"../../utils/calcReadingTime\";\n\nexport interface PreviewListProps {\n displayFlat?: boolean;\n}\n\nconst PreviewList: React.FC<PreviewListProps> = ({displayFlat}) => {\n const data = useStaticQuery<BlogPostsQuery>(graphql`\n query blogPosts {\n allMdx(sort: {order: DESC, fields: frontmatter___date}) {\n edges {\n node {\n slug\n body\n frontmatter {\n title\n author\n date(formatString: \"MMMM DD, YYYY\")\n intro\n subtitle\n tags\n }\n }\n }\n }\n }\n `);\n\n return (\n <Box px={64} display={displayFlat ? 'block' : 'flex'}>\n {data.allMdx.edges.map((edge, i) => {\n if (!edge.node.frontmatter) {\n return null;\n }\n\n const {title, subtitle, date, intro, author, tags} = edge.node.frontmatter;\n\n const readingTime = calcReadingTime(edge.node.body)\n\n if (displayFlat) {\n return <PostPreviewFlat key={i} link={edge.node.slug ?? '/'} date={date} readingTime={readingTime}\n subtitle={subtitle}\n title={title} />\n } else {\n return <PostPreview key={i} link={edge.node.slug ?? '/'} author={author} date={date} readingTime={readingTime}\n title={title} intro={intro} heading={subtitle} tags={tags?.split(',') ?? []}/>\n }\n })}\n </Box>\n )\n}\n\nexport default PreviewList\n","import * as React from \"react\"\nimport Hero from \"../components/page/Hero\";\nimport PreviewList from \"../components/blog/PreviewList\";\n\nexport interface IndexPageProps {\n\n}\n\nconst IndexPage = () => {\n return (\n <>\n <Hero/>\n <PreviewList displayFlat={false}/>\n </>\n )\n}\n\nexport default IndexPage\n","export function calcReadingTime(mdxBody: string): number {\n const text = mdxBody.match(/mdx\\(\"p\", null, \"(.+)\"/g)?.map(match => match.replace('mdx(\"p\", null, \"', ''))\n const wordCount = text ? text.reduce((prev, curr) => prev + curr.split(' ').length, 0) : 0\n\n console.log('wordCOuntr', wordCount);\n\n return Math.ceil((wordCount / 130));\n}","import { useMergeRefs } from '@chakra-ui/hooks';\nimport { forwardRef, chakra, useStyleConfig, omitThemingProps } from '@chakra-ui/system';\nimport { cx, __DEV__, mergeWith, dataAttr } from '@chakra-ui/utils';\nimport * as React from 'react';\nimport { createContext } from '@chakra-ui/react-utils';\nimport { Spinner } from '@chakra-ui/spinner';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nvar _excluded$4 = [\"size\", \"colorScheme\", \"variant\", \"className\", \"spacing\", \"isAttached\", \"isDisabled\"];\n\nvar _createContext = createContext({\n strict: false,\n name: \"ButtonGroupContext\"\n}),\n ButtonGroupProvider = _createContext[0],\n useButtonGroup = _createContext[1];\n\nvar ButtonGroup = /*#__PURE__*/forwardRef(function (props, ref) {\n var size = props.size,\n colorScheme = props.colorScheme,\n variant = props.variant,\n className = props.className,\n _props$spacing = props.spacing,\n spacing = _props$spacing === void 0 ? \"0.5rem\" : _props$spacing,\n isAttached = props.isAttached,\n isDisabled = props.isDisabled,\n rest = _objectWithoutPropertiesLoose(props, _excluded$4);\n\n var _className = cx(\"chakra-button__group\", className);\n\n var context = React.useMemo(function () {\n return {\n size: size,\n colorScheme: colorScheme,\n variant: variant,\n isDisabled: isDisabled\n };\n }, [size, colorScheme, variant, isDisabled]);\n var groupStyles = {\n display: \"inline-flex\"\n };\n\n if (isAttached) {\n groupStyles = _extends({}, groupStyles, {\n \"> *:first-of-type:not(:last-of-type)\": {\n borderEndRadius: 0\n },\n \"> *:not(:first-of-type):not(:last-of-type)\": {\n borderRadius: 0\n },\n \"> *:not(:first-of-type):last-of-type\": {\n borderStartRadius: 0\n }\n });\n } else {\n groupStyles = _extends({}, groupStyles, {\n \"& > *:not(style) ~ *:not(style)\": {\n marginStart: spacing\n }\n });\n }\n\n return /*#__PURE__*/React.createElement(ButtonGroupProvider, {\n value: context\n }, /*#__PURE__*/React.createElement(chakra.div, _extends({\n ref: ref,\n role: \"group\",\n __css: groupStyles,\n className: _className,\n \"data-attached\": isAttached ? \"\" : undefined\n }, rest)));\n});\n\nif (__DEV__) {\n ButtonGroup.displayName = \"ButtonGroup\";\n}\n\nvar _excluded$3 = [\"label\", \"placement\", \"spacing\", \"children\", \"className\", \"__css\"];\n\nvar ButtonSpinner = function ButtonSpinner(props) {\n var label = props.label,\n placement = props.placement,\n _props$spacing = props.spacing,\n spacing = _props$spacing === void 0 ? \"0.5rem\" : _props$spacing,\n _props$children = props.children,\n children = _props$children === void 0 ? /*#__PURE__*/React.createElement(Spinner, {\n color: \"currentColor\",\n width: \"1em\",\n height: \"1em\"\n }) : _props$children,\n className = props.className,\n __css = props.__css,\n rest = _objectWithoutPropertiesLoose(props, _excluded$3);\n\n var _className = cx(\"chakra-button__spinner\", className);\n\n var marginProp = placement === \"start\" ? \"marginEnd\" : \"marginStart\";\n var spinnerStyles = React.useMemo(function () {\n var _extends2;\n\n return _extends((_extends2 = {\n display: \"flex\",\n alignItems: \"center\",\n position: label ? \"relative\" : \"absolute\"\n }, _extends2[marginProp] = label ? spacing : 0, _extends2.fontSize = \"1em\", _extends2.lineHeight = \"normal\", _extends2), __css);\n }, [__css, label, marginProp, spacing]);\n return /*#__PURE__*/React.createElement(chakra.div, _extends({\n className: _className\n }, rest, {\n __css: spinnerStyles\n }), children);\n};\n\nif (__DEV__) {\n ButtonSpinner.displayName = \"ButtonSpinner\";\n}\n\nvar _excluded$2 = [\"children\", \"className\"];\n\nvar ButtonIcon = function ButtonIcon(props) {\n var children = props.children,\n className = props.className,\n rest = _objectWithoutPropertiesLoose(props, _excluded$2);\n\n var _children = /*#__PURE__*/React.isValidElement(children) ? /*#__PURE__*/React.cloneElement(children, {\n \"aria-hidden\": true,\n focusable: false\n }) : children;\n\n var _className = cx(\"chakra-button__icon\", className);\n\n return /*#__PURE__*/React.createElement(chakra.span, _extends({\n display: \"inline-flex\",\n alignSelf: \"center\",\n flexShrink: 0\n }, rest, {\n className: _className\n }), _children);\n};\n\nif (__DEV__) {\n ButtonIcon.displayName = \"ButtonIcon\";\n}\n\nfunction useButtonType(value) {\n var _React$useState = React.useState(!value),\n isButton = _React$useState[0],\n setIsButton = _React$useState[1];\n\n var refCallback = React.useCallback(function (node) {\n if (!node) return;\n setIsButton(node.tagName === \"BUTTON\");\n }, []);\n var type = isButton ? \"button\" : undefined;\n return {\n ref: refCallback,\n type: type\n };\n}\n\nvar _excluded$1 = [\"isDisabled\", \"isLoading\", \"isActive\", \"children\", \"leftIcon\", \"rightIcon\", \"loadingText\", \"iconSpacing\", \"type\", \"spinner\", \"spinnerPlacement\", \"className\", \"as\"];\nvar Button = /*#__PURE__*/forwardRef(function (props, ref) {\n var group = useButtonGroup();\n var styles = useStyleConfig(\"Button\", _extends({}, group, props));\n\n var _omitThemingProps = omitThemingProps(props),\n _omitThemingProps$isD = _omitThemingProps.isDisabled,\n isDisabled = _omitThemingProps$isD === void 0 ? group == null ? void 0 : group.isDisabled : _omitThemingProps$isD,\n isLoading = _omitThemingProps.isLoading,\n isActive = _omitThemingProps.isActive,\n children = _omitThemingProps.children,\n leftIcon = _omitThemingProps.leftIcon,\n rightIcon = _omitThemingProps.rightIcon,\n loadingText = _omitThemingProps.loadingText,\n _omitThemingProps$ico = _omitThemingProps.iconSpacing,\n iconSpacing = _omitThemingProps$ico === void 0 ? \"0.5rem\" : _omitThemingProps$ico,\n type = _omitThemingProps.type,\n spinner = _omitThemingProps.spinner,\n _omitThemingProps$spi = _omitThemingProps.spinnerPlacement,\n spinnerPlacement = _omitThemingProps$spi === void 0 ? \"start\" : _omitThemingProps$spi,\n className = _omitThemingProps.className,\n as = _omitThemingProps.as,\n rest = _objectWithoutPropertiesLoose(_omitThemingProps, _excluded$1);\n /**\n * When button is used within ButtonGroup (i.e. flushed with sibling buttons),\n * it is important to add a `zIndex` on focus.\n *\n * So let's read the component styles and then add `zIndex` to it.\n */\n\n\n var buttonStyles = React.useMemo(function () {\n var _styles$_focus;\n\n var _focus = mergeWith({}, (_styles$_focus = styles == null ? void 0 : styles[\"_focus\"]) != null ? _styles$_focus : {}, {\n zIndex: 1\n });\n\n return _extends({\n display: \"inline-flex\",\n appearance: \"none\",\n alignItems: \"center\",\n justifyContent: \"center\",\n userSelect: \"none\",\n position: \"relative\",\n whiteSpace: \"nowrap\",\n verticalAlign: \"middle\",\n outline: \"none\"\n }, styles, !!group && {\n _focus: _focus\n });\n }, [styles, group]);\n\n var _useButtonType = useButtonType(as),\n _ref = _useButtonType.ref,\n defaultType = _useButtonType.type;\n\n var contentProps = {\n rightIcon: rightIcon,\n leftIcon: leftIcon,\n iconSpacing: iconSpacing,\n children: children\n };\n return /*#__PURE__*/React.createElement(chakra.button, _extends({\n disabled: isDisabled || isLoading,\n ref: useMergeRefs(ref, _ref),\n as: as,\n type: type != null ? type : defaultType,\n \"data-active\": dataAttr(isActive),\n \"data-loading\": dataAttr(isLoading),\n __css: buttonStyles,\n className: cx(\"chakra-button\", className)\n }, rest), isLoading && spinnerPlacement === \"start\" && /*#__PURE__*/React.createElement(ButtonSpinner, {\n className: \"chakra-button__spinner--start\",\n label: loadingText,\n placement: \"start\",\n spacing: iconSpacing\n }, spinner), isLoading ? loadingText || /*#__PURE__*/React.createElement(chakra.span, {\n opacity: 0\n }, /*#__PURE__*/React.createElement(ButtonContent, contentProps)) : /*#__PURE__*/React.createElement(ButtonContent, contentProps), isLoading && spinnerPlacement === \"end\" && /*#__PURE__*/React.createElement(ButtonSpinner, {\n className: \"chakra-button__spinner--end\",\n label: loadingText,\n placement: \"end\",\n spacing: iconSpacing\n }, spinner));\n});\n\nif (__DEV__) {\n Button.displayName = \"Button\";\n}\n\nfunction ButtonContent(props) {\n var leftIcon = props.leftIcon,\n rightIcon = props.rightIcon,\n children = props.children,\n iconSpacing = props.iconSpacing;\n return /*#__PURE__*/React.createElement(React.Fragment, null, leftIcon && /*#__PURE__*/React.createElement(ButtonIcon, {\n marginEnd: iconSpacing\n }, leftIcon), children, rightIcon && /*#__PURE__*/React.createElement(ButtonIcon, {\n marginStart: iconSpacing\n }, rightIcon));\n}\n\nvar _excluded = [\"icon\", \"children\", \"isRound\", \"aria-label\"];\nvar IconButton = /*#__PURE__*/forwardRef(function (props, ref) {\n var icon = props.icon,\n children = props.children,\n isRound = props.isRound,\n ariaLabel = props[\"aria-label\"],\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n /**\n * Passing the icon as prop or children should work\n */\n\n\n var element = icon || children;\n\n var _children = /*#__PURE__*/React.isValidElement(element) ? /*#__PURE__*/React.cloneElement(element, {\n \"aria-hidden\": true,\n focusable: false\n }) : null;\n\n return /*#__PURE__*/React.createElement(Button, _extends({\n padding: \"0\",\n borderRadius: isRound ? \"full\" : undefined,\n ref: ref,\n \"aria-label\": ariaLabel\n }, rest), _children);\n});\n\nif (__DEV__) {\n IconButton.displayName = \"IconButton\";\n}\n\nexport { Button, ButtonGroup, ButtonSpinner, IconButton, useButtonGroup };","export var IconsManifest = [{\n \"id\": \"fa\",\n \"name\": \"Font Awesome\",\n \"projectUrl\": \"https://fontawesome.com/\",\n \"license\": \"CC BY 4.0 License\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/4.0/\"\n}, {\n \"id\": \"io\",\n \"name\": \"Ionicons 4\",\n \"projectUrl\": \"https://ionicons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/ionic-team/ionicons/blob/master/LICENSE\"\n}, {\n \"id\": \"io5\",\n \"name\": \"Ionicons 5\",\n \"projectUrl\": \"https://ionicons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/ionic-team/ionicons/blob/master/LICENSE\"\n}, {\n \"id\": \"md\",\n \"name\": \"Material Design icons\",\n \"projectUrl\": \"http://google.github.io/material-design-icons/\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"https://github.com/google/material-design-icons/blob/master/LICENSE\"\n}, {\n \"id\": \"ti\",\n \"name\": \"Typicons\",\n \"projectUrl\": \"http://s-ings.com/typicons/\",\n \"license\": \"CC BY-SA 3.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by-sa/3.0/\"\n}, {\n \"id\": \"go\",\n \"name\": \"Github Octicons icons\",\n \"projectUrl\": \"https://octicons.github.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/primer/octicons/blob/master/LICENSE\"\n}, {\n \"id\": \"fi\",\n \"name\": \"Feather\",\n \"projectUrl\": \"https://feathericons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/feathericons/feather/blob/master/LICENSE\"\n}, {\n \"id\": \"gi\",\n \"name\": \"Game Icons\",\n \"projectUrl\": \"https://game-icons.net/\",\n \"license\": \"CC BY 3.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/3.0/\"\n}, {\n \"id\": \"wi\",\n \"name\": \"Weather Icons\",\n \"projectUrl\": \"https://erikflowers.github.io/weather-icons/\",\n \"license\": \"SIL OFL 1.1\",\n \"licenseUrl\": \"http://scripts.sil.org/OFL\"\n}, {\n \"id\": \"di\",\n \"name\": \"Devicons\",\n \"projectUrl\": \"https://vorillaz.github.io/devicons/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n}, {\n \"id\": \"ai\",\n \"name\": \"Ant Design Icons\",\n \"projectUrl\": \"https://github.com/ant-design/ant-design-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n}, {\n \"id\": \"bs\",\n \"name\": \"Bootstrap Icons\",\n \"projectUrl\": \"https://github.com/twbs/icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n}, {\n \"id\": \"ri\",\n \"name\": \"Remix Icon\",\n \"projectUrl\": \"https://github.com/Remix-Design/RemixIcon\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"http://www.apache.org/licenses/\"\n}, {\n \"id\": \"fc\",\n \"name\": \"Flat Color Icons\",\n \"projectUrl\": \"https://github.com/icons8/flat-color-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n}, {\n \"id\": \"gr\",\n \"name\": \"Grommet-Icons\",\n \"projectUrl\": \"https://github.com/grommet/grommet-icons\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"http://www.apache.org/licenses/\"\n}, {\n \"id\": \"hi\",\n \"name\": \"Heroicons\",\n \"projectUrl\": \"https://github.com/tailwindlabs/heroicons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n}, {\n \"id\": \"si\",\n \"name\": \"Simple Icons\",\n \"projectUrl\": \"https://simpleicons.org/\",\n \"license\": \"CC0 1.0 Universal\",\n \"licenseUrl\": \"https://creativecommons.org/publicdomain/zero/1.0/\"\n}, {\n \"id\": \"im\",\n \"name\": \"IcoMoon Free\",\n \"projectUrl\": \"https://github.com/Keyamoon/IcoMoon-Free\",\n \"license\": \"CC BY 4.0 License\"\n}, {\n \"id\": \"bi\",\n \"name\": \"BoxIcons\",\n \"projectUrl\": \"https://github.com/atisawd/boxicons\",\n \"license\": \"CC BY 4.0 License\"\n}, {\n \"id\": \"cg\",\n \"name\": \"css.gg\",\n \"projectUrl\": \"https://github.com/astrit/css.gg\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n}, {\n \"id\": \"vsc\",\n \"name\": \"VS Code Icons\",\n \"projectUrl\": \"https://github.com/microsoft/vscode-codicons\",\n \"license\": \"CC BY 4.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/4.0/\"\n}, {\n \"id\": \"tb\",\n \"name\": \"Tabler Icons\",\n \"projectUrl\": \"https://github.com/tabler/tabler-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n}];","import React from 'react';\nexport var DefaultContext = {\n color: undefined,\n size: undefined,\n className: undefined,\n style: undefined,\n attr: undefined\n};\nexport var IconContext = React.createContext && React.createContext(DefaultContext);","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport React from 'react';\nimport { IconContext, DefaultContext } from './iconContext';\n\nfunction Tree2Element(tree) {\n return tree && tree.map(function (node, i) {\n return React.createElement(node.tag, __assign({\n key: i\n }, node.attr), Tree2Element(node.child));\n });\n}\n\nexport function GenIcon(data) {\n return function (props) {\n return React.createElement(IconBase, __assign({\n attr: __assign({}, data.attr)\n }, props), Tree2Element(data.child));\n };\n}\nexport function IconBase(props) {\n var elem = function elem(conf) {\n var attr = props.attr,\n size = props.size,\n title = props.title,\n svgProps = __rest(props, [\"attr\", \"size\", \"title\"]);\n\n var computedSize = size || conf.size || \"1em\";\n var className;\n if (conf.className) className = conf.className;\n if (props.className) className = (className ? className + ' ' : '') + props.className;\n return React.createElement(\"svg\", __assign({\n stroke: \"currentColor\",\n fill: \"currentColor\",\n strokeWidth: \"0\"\n }, conf.attr, attr, svgProps, {\n className: className,\n style: __assign(__assign({\n color: props.color || conf.color\n }, conf.style), props.style),\n height: computedSize,\n width: computedSize,\n xmlns: \"http://www.w3.org/2000/svg\"\n }), title && React.createElement(\"title\", null, title), props.children);\n };\n\n return IconContext !== undefined ? React.createElement(IconContext.Consumer, null, function (conf) {\n return elem(conf);\n }) : elem(DefaultContext);\n}"],"names":["fontWeight","fontSize","lineHeight","letterSpacing","bg","useColorModeValue","backgroundClip","to","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","useMediaQuery","query","options","_options","_options$ssr","ssr","fallback","env","queries","Array","isArray","fallbackValues","filter","v","_useState","useState","map","index","media","matches","window","matchMedia","value","setValue","useEffect","mql","handler","evt","prev","slice","item","forEach","addListener","addEventListener","removeListener","removeEventListener","_objectWithoutPropertiesLoose","excluded","sourceKeys","keys","indexOf","useImage","props","loading","src","srcSet","onLoad","onError","crossOrigin","sizes","ignoreFallback","status","setStatus","imageRef","useRef","load","useCallback","flush","img","Image","srcset","onload","event","onerror","error","current","_excluded","_excluded2","NativeImage","ref","htmlWidth","htmlHeight","alt","rest","width","height","displayName","Image$1","fallbackSrc","align","fit","_props$fallbackStrate","fallbackStrategy","referrerPolicy","shouldIgnoreFallbackImage","undefined","showFallbackImage","shouldShowFallbackImage","shared","objectFit","objectPosition","as","className","_excluded$1","_createStylesContext","StylesProvider","useStyles","AvatarBadge","badgeStyles","position","display","alignItems","justifyContent","insetEnd","bottom","badge","cx","__css","initials","name","_name$split","split","firstName","lastName","charAt","AvatarName","getInitials","styles","role","label","DefaultIcon","viewBox","color","fill","d","baseStyle","textAlign","textTransform","flexShrink","Avatar","_omitThemingProps","showBorder","_omitThemingProps$bor","borderRadius","_omitThemingProps$get","_omitThemingProps$ico","icon","_omitThemingProps$ico2","iconLabel","children","borderColor","avatarStyles","borderWidth","container","AvatarImage","_props$icon","AvatarGroup","max","_omitThemingProps$spa","spacing","validChildren","childrenWithinMax","excess","clones","reverse","child","_child$props$borderCo","childProps","marginEnd","size","excessStyles","marginStart","excessLabel","flexDirection","isBrowser","px","base","md","pt","pb","justify","maxW","mr","href","isExternal","w","h","_hover","mt","borderBottomWidth","colorScheme","opacity","onClick","y","duration","element","document","scrollingElement","cosParameter","scrollCount","oldTimestamp","step","newTimestamp","Math","scrollToY","link","date","readingTime","title","subtitle","isNew","fontFamily","variant","ml","direction","tags","author","intro","heading","p","minW","boxShadow","rounded","overflow","mx","mb","pos","tag","displayFlat","data","useStaticQuery","edge","calcReadingTime","mdxBody","text","match","wordCount","curr","console","_excluded$4","_createContext","strict","ButtonGroupProvider","useButtonGroup","ButtonGroup","_props$spacing","isAttached","isDisabled","_className","context","groupStyles","borderEndRadius","borderStartRadius","_excluded$3","ButtonSpinner","placement","_props$children","marginProp","spinnerStyles","_extends2","_excluded$2","ButtonIcon","_children","focusable","alignSelf","Button","_React$useState","isButton","setIsButton","group","_omitThemingProps$isD","isLoading","isActive","leftIcon","rightIcon","loadingText","iconSpacing","type","spinner","_omitThemingProps$spi","spinnerPlacement","buttonStyles","_styles$_focus","_focus","zIndex","appearance","userSelect","whiteSpace","verticalAlign","outline","_useButtonType","node","tagName","_ref","defaultType","contentProps","disabled","ButtonContent","IconButton","isRound","ariaLabel","padding","DefaultContext","style","attr","IconContext","__assign","t","s","n","__rest","e","getOwnPropertySymbols","propertyIsEnumerable","Tree2Element","tree","GenIcon","IconBase","elem","conf","svgProps","computedSize","stroke","strokeWidth","xmlns","Consumer"],"sourceRoot":""}