{"version":3,"sources":["assets/Sulger-Stiftung.png","@utils/auth-header.ts","@context/Api.tsx","@context/Responsive.tsx","constants/responsive.ts","constants/spacing.ts","constants/stylesheet.ts","constants/fonts.ts","components/Image.tsx","components/Print.tsx","components/Prints.tsx","components/Drawer.tsx","components/About.tsx","@utils/url.ts","components/Content.tsx","components/Footer.tsx","App.tsx","serviceWorker.js","index.tsx"],"names":["module","exports","handleApiResponse","response","a","ok","text","error","Error","contentType","headers","get","includes","json","ApiContext","React","ApiProvider","apiUrl","children","useState","Date","lastMod","setLastMod","fetching","setFetching","_fetch","endpoint","options","requestOptions","method","credentials","fetch","entry","postQuote","quote","patchDocument","Object","keys","map","k","op","path","value","body","JSON","stringify","Provider","ResponsiveContext","ResponsiveProvider","mediaQueries","steps","setSteps","onResize","filter","m","window","matchMedia","replace","matches","addEventListener","removeEventListener","Responsive","CurrentSteps","useResponsive","x","length","useContext","mobileSize","tabletSize","desktopSize","Mobile","Tablet","Desktop","directions","prefixed","prefix","multi","dir","sides","left","undefined","right","bottom","top","fontFamily","lineHeight","responsive","spacing","useStyles","makeStyles","createStyles","container","position","width","height","zIndex","loading","loaded","opacity","Image","props","classes","objectFitImages","alt","className","maxWidth","minWidth","stepSize","sizes","pictureRef","Width","imageSrc","Src","srcSet","w","src","push","atts","join","onError","root","paddingBottom","overflow","figure","cursor","backFace","display","backgroundColor","padding","boxSizing","color","AfterMobile","image","objectFit","title","marginBottom","description","pdfLink","open","mobilePDFLink","marginTop","openBackFace","closeBackFace","Print","print","Title","Description","printImage","PDF","cls","isOpen","setIsOpen","rel","href","target","onClick","classNames","minHeight","fakeElement","content","mainTitle","fontSize","triptychItem","printTitle","flexContainer","flexWrap","borderTop","marginLeft","flexItem","borderBottom","flex","Prints","prints","setPrints","fetchPrints","LeftImage","Legend","data-mobile","RightImage","dangerouslySetInnerHTML","__html","Text","i","key","transition","label","transform","transformOrigin","border","borderTopLeftRadius","borderTopRightRadius","marginRight","labelColor","textColor","background","opened","maxHeight","Drawer","setOpened","useEffect","classnames","drawer","smallText","About","location","useReactRouter","footer","document","getElementById","isMobile","clientWidth","aboutHeight","clientHeight","_isOpen","variable","search","vars","substring","split","pair","decodeURIComponent","GetQueryVariable","console","log","Content","showConfirmation","isContent","pathname","footerItem","footerLegend","footerLogo","fill","imgLogo","Footer","id","version","xmlns","y","viewBox","style","d","sulgerLogo","stylesheet","Body","outline","textDecoration","App","process","Boolean","hostname","match","ReactDOM","render","navigator","serviceWorker","ready","then","registration","unregister"],"mappings":"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","file":"static/js/main.608e7b8f.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/Sulger-Stiftung.e4d747e7.png\";","export const handleApiResponse = async (response: Response): Promise => {\n if (!response.ok) {\n const error = await response.text();\n throw new Error(error);\n }\n\n var contentType = response.headers.get('content-type');\n\n if (contentType && contentType.includes('application/json')) {\n try {\n const json = await response.json();\n return json as Model;\n } catch (reason) {\n const error = await response.text();\n throw new Error(error);\n }\n }\n\n throw new Error(\"impossible to parse content Type\");\n\n};","import * as React from 'react';\nimport { handleApiResponse } from '../@utils/auth-header';\nimport { useContext, FC, useState } from 'react';\n\ntype Api = {\n lastMod: Date;\n fetching?: boolean;\n\n fetch: (endpoint: string, options?: RequestInit) => Promise;\n postQuote: (quote: Partial) => Promise;\n};\n\nexport const ApiContext = React.createContext({} as never);\n\ntype ApiProviderProps = { apiUrl: string };\nexport const ApiProvider: FC = ({ apiUrl, children }) => {\n const [lastMod, setLastMod] = useState(new Date());\n const [fetching, setFetching] = useState();\n\n const _fetch = async (endpoint: string, options?: RequestInit) => {\n\n const requestOptions: RequestInit = {\n method: 'GET',\n credentials: 'include',\n headers: { 'Content-Type': 'application/json' },\n ...options\n };\n try {\n const response = await fetch(`${apiUrl}/${endpoint}`, requestOptions);\n const entry = await handleApiResponse(response);\n return entry;\n } catch (error) {\n throw error;\n }\n\n };\n\n const postQuote: Api['postQuote'] = async (quote) => {\n const patchDocument = Object.keys(quote).map(k => ({ op: 'replace', path: `/${k}`, value: (quote as any)[k] }));\n\n const requestOptions = {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(patchDocument)\n };\n setFetching(true);\n await fetch(`${apiUrl}/quotes`, requestOptions);\n\n setFetching(false);\n setLastMod(new Date());\n };\n\n return (\n \n {children}\n \n );\n}\n\nexport const useApi = () => useContext(ApiContext);","import * as React from 'react';\nimport { FC, useState, useContext } from 'react';\n\n\n\ntype Responsive = {\n steps: string[];\n};\n\nexport const ResponsiveContext = React.createContext({} as never);\n\ntype ResponsiveProviderProps = {\n mediaQueries: { [key: string]: string }\n};\nexport const ResponsiveProvider: FC = ({ mediaQueries, children }) => {\n\n const [steps, setSteps] = useState([]);\n\n const onResize = () => {\n setSteps(Object.keys(mediaQueries)\n .filter(\n m => window.matchMedia(mediaQueries[m].replace(\"@media \", \"\")).matches\n )\n );\n }\n React.useEffect(() => {\n onResize();\n window.addEventListener(\"resize\", onResize);\n return () => {\n window.removeEventListener(\"resize\", onResize);\n }\n }, [])\n return (\n \n {children}\n \n );\n}\nexport const Responsive: FC<{ steps: string[] }> = ({ steps, children }) => {\n const { steps: CurrentSteps } = useResponsive();\n if (steps.filter(x => CurrentSteps.includes(x)).length) {\n return <>{children};\n }\n return null;\n}\nexport const useResponsive = () => useContext(ResponsiveContext);","export const mobileSize = 690;\nexport const tabletSize = 995;\nexport const desktopSize = 1440;\n\nconst mediaQueries = {\n 'Mobile': `@media screen and (max-width: ${mobileSize - 1}px)`,\n 'HighMobile': `@media screen and (max-width: ${mobileSize - 1}px) and (max-aspect-ratio: 4/8)`,\n 'AfterMobile': `@media screen and (min-width: ${mobileSize}px)`,\n 'BeforeTablet': `@media screen and (max-width: ${tabletSize - 1}px)`,\n 'Tablet': `@media screen and (min-width: ${mobileSize}px) and (max-width: ${tabletSize - 1}px)`,\n 'AfterTablet': `@media screen and (min-width: ${tabletSize}px)`,\n 'Laptop': `@media screen and (min-width: ${tabletSize}px) and (max-width: ${desktopSize - 1}px)`,\n 'Desktop': `@media screen and (min-width: ${desktopSize}px)`\n};\n\nexport default mediaQueries;","\nexport default {\n 'Gutter': {\n Mobile: 22,\n Tablet: 56,\n Desktop: 64\n },\n 'SideGutter': {\n Mobile: 1,\n Tablet: 5,\n Desktop: 5\n },\n};","import fonts from './fonts';\nimport responsive from './responsive';\nimport spacing from './spacing';\n\nexport const primaryColor = '#008acf';\nexport const secondaryColor = 'white';\nexport enum directions {\n top = 1,\n bottom = 1 << 1,\n left = 1 << 2,\n right = 1 << 3,\n all = 1 | (1 << 1) | (1 << 2) | (1 << 3),\n sides = (1 << 2) | (1 << 3)\n};\n\nconst prefixed = (prefix: string, value: number, multi: number = 1, dir: directions = directions.sides) => ({\n [prefix ? `${prefix}Left` : 'left']:\n ((dir & directions.left) === directions.left && value * multi) || undefined,\n [prefix ? `${prefix}Right` : 'right']:\n ((dir & directions.right) === directions.right && value * multi) || undefined,\n [prefix ? `${prefix}Bottom` : 'bottom']:\n ((dir & directions.bottom) === directions.bottom && value * multi) || undefined,\n [prefix ? `${prefix}Top` : 'top']:\n ((dir & directions.top) === directions.top && value * multi) || undefined\n});\n\nexport const bodyFontSize = {\n 'Mobile': 18,\n 'Tablet': 18,\n 'Laptop': 18,\n 'Desktop': 18\n}\n\nexport default {\n 'Body': {\n ...fonts[\"dinkk-regular\"],\n lineHeight: 1.2\n },\n 'PaddingGutter': (multi: number = 1, dir: directions = directions.sides) => ({\n [responsive.Mobile]: prefixed('padding', spacing.Gutter.Mobile, multi, dir),\n [responsive.Tablet]: prefixed('padding', spacing.Gutter.Tablet, multi, dir),\n [responsive.Desktop]: prefixed('padding', spacing.Gutter.Desktop, multi, dir),\n\n }),\n 'MarginGutter': (multi: number = 1, dir: directions = directions.sides) => ({\n [responsive.Mobile]: prefixed('margin', spacing.Gutter.Mobile, multi, dir),\n [responsive.Tablet]: prefixed('margin', spacing.Gutter.Tablet, multi, dir),\n [responsive.Desktop]: prefixed('margin', spacing.Gutter.Desktop, multi, dir)\n }),\n 'PostionGutter': (multi: number = 1, dir: directions = directions.sides) => ({\n [responsive.Mobile]: prefixed('', spacing.Gutter.Mobile, multi, dir),\n [responsive.Tablet]: prefixed('', spacing.Gutter.Tablet, multi, dir),\n [responsive.Desktop]: prefixed('', spacing.Gutter.Desktop, multi, dir)\n })\n};","export default {\n 'dinkk-regular': {\n fontFamily: 'dinkk-regular'\n },\n 'mars': {\n fontFamily: 'mars'\n }\n};","import { createStyles, makeStyles } from '@material-ui/styles';\nimport objectFitImages from 'object-fit-images';\nimport * as React from 'react';\n\nexport type ImageProps =\n React.HTMLAttributes & {\n pictureRef?: PictureRef;\n imageSrc?: string;\n sizes?: string;\n srcSet?: string;\n minWidth?: number;\n maxWidth?: number;\n steps?: number;\n alt: string;\n // includeRatio?: boolean;\n onLoad?: () => void;\n onError?: () => void;\n };\n\nconst useStyles = makeStyles(() =>\n createStyles({\n container: {\n position: 'relative',\n width: '100%',\n height: '100%',\n zIndex: 0\n },\n loading: {\n position: 'relative',\n width: '100%',\n height: '100%',\n zIndex: 0\n },\n loaded: {\n opacity: 0\n }\n }));\n\nexport const Image: React.FC = (props) => {\n\n const classes = useStyles();\n\n React.useEffect(\n () => {\n objectFitImages();\n },\n []\n );\n\n const { alt, className } = props;\n\n const maxWidth = props.maxWidth || 4000;\n const minWidth = props.minWidth || 200;\n let steps = (props.steps || 8);\n const stepSize = (maxWidth - minWidth) / steps;\n const sizes = props.sizes || '100vw';\n const width = (props.pictureRef && props.pictureRef.Width) || 0;\n const imageSrc = (props.pictureRef && props.pictureRef.Src) || props.imageSrc || '';\n\n const srcSet: string[] = [];\n steps++;\n\n while (steps--) {\n const w = stepSize * steps + minWidth;\n if (width && w > width) { continue; }\n const src = `${imageSrc}?width=${w} ${w}w`;\n srcSet.push(src);\n }\n\n const atts: React.ImgHTMLAttributes = {\n className,\n sizes,\n src: `${imageSrc}`,\n srcSet: srcSet.join(', ') || ''\n };\n\n if (props.onError) {\n atts.onError = props.onError;\n }\n\n return (\n
\n \n
\n );\n}\n\nexport default Image;","import * as React from 'react';\nimport { makeStyles, createStyles } from '@material-ui/styles';\nimport { primaryColor } from '../constants/stylesheet';\nimport { Image } from './Image';\nimport { Responsive } from '../@context/Responsive';\nimport mediaQueries from '../constants/responsive';\nimport { useState } from 'react';\nimport classNames from 'classnames';\n\nconst useStyles = makeStyles(() =>\n\tcreateStyles({\n\t\troot: {\n\t\t\theight: 0,\n\t\t\tpaddingBottom: '124%',\n\t\t\toverflow: 'hidden',\n\t\t\tposition: 'relative',\n\t\t},\n\t\tfigure: {\n\t\t\tposition: 'absolute',\n\t\t\ttop: 0,\n\t\t\tleft: 0,\n\t\t\twidth: '100%',\n\t\t\theight: '100%',\n\t\t\tzIndex: 0,\n\t\t\tcursor: 'pointer',\n\t\t},\n\t\tbackFace: {\n\t\t\tdisplay: 'none',\n\t\t\tposition: 'absolute',\n\t\t\ttop: 0,\n\t\t\tleft: 0,\n\t\t\tright: 0,\n\t\t\tbottom: 0,\n\t\t\tbackgroundColor: 'white',\n\t\t\tpadding: '1rem',\n\t\t\tboxSizing: 'border-box',\n\t\t\tcolor: primaryColor,\n\t\t\t[mediaQueries.AfterMobile]: {\n\t\t\t\t'$root:hover &': {\n\t\t\t\t\tdisplay: 'block',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\timage: {\n\t\t\tposition: 'absolute',\n\t\t\ttop: 0,\n\t\t\tleft: 0,\n\t\t\twidth: '100%',\n\t\t\theight: '100%',\n\t\t\tobjectFit: 'cover',\n\t\t},\n\t\ttitle: {\n\t\t\tmarginBottom: '1rem',\n\t\t},\n\t\tdescription: {},\n\t\tpdfLink: {\n\t\t\tposition: 'absolute',\n\t\t\ttop: 0,\n\t\t\tbottom: 0,\n\t\t\tleft: 0,\n\t\t\tright: 0,\n\t\t\tzIndex: 1,\n\t\t},\n\t\topen: {\n\t\t\tdisplay: 'block',\n\t\t},\n\t\tmobilePDFLink: {\n\t\t\tposition: 'relative',\n\t\t\tdisplay: 'block',\n\t\t\tmarginTop: '1rem',\n\t\t\tcolor: primaryColor,\n\t\t\tzIndex: 1,\n\t\t},\n\t\topenBackFace: {\n\t\t\tposition: 'absolute',\n\t\t\ttop: 0,\n\t\t\tbottom: 0,\n\t\t\tleft: 0,\n\t\t\tright: 0,\n\t\t\tzIndex: 1,\n\t\t},\n\t\tcloseBackFace: {\n\t\t\tposition: 'absolute',\n\t\t\ttop: 0,\n\t\t\tbottom: 0,\n\t\t\tleft: 0,\n\t\t\tright: 0,\n\t\t\tcursor: 'pointer',\n\t\t},\n\t})\n);\n\ntype Props = PrintDto;\n\nconst Print: React.FC = ({ children, ...print }) => {\n\tconst { Title, Description, Image: printImage, PDF } = print;\n\tconst cls = useStyles();\n\tconst [isOpen, setIsOpen] = useState(false);\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t{PDF && (\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\t
\n\t\t\t\t\t\t{Title}\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{Title}
\n\t\t\t\t\t\t
{Description}
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tsetIsOpen(true);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{Title}\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{Title}
\n\t\t\t\t\t\t
{Description}
\n\t\t\t\t\t\t{PDF && (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tLink\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tsetIsOpen(false);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t\n\t);\n};\n\nexport default Print;\n","\nimport * as React from 'react';\nimport { useApi } from '../@context/Api';\nimport Print from './Print';\nimport { makeStyles, createStyles } from '@material-ui/styles';\nimport spacing from '../constants/spacing';\nimport { primaryColor } from '../constants/stylesheet';\nimport mediaQueries from '../constants/responsive';\nimport Image from './Image';\n\nconst useStyles = makeStyles(() =>\n createStyles({\n root: {\n position: 'relative',\n boxSizing: 'border-box',\n minHeight: '100%',\n overflow: 'hidden'\n },\n fakeElement: {\n position: 'relative',\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n height: 2,\n left: 0,\n right: 0,\n backgroundColor: primaryColor,\n zIndex: 1,\n }\n },\n mainTitle: {\n fontSize: '1.5rem',\n backgroundColor: primaryColor,\n color: 'white',\n\n [mediaQueries.Mobile]: {\n padding: `.5rem ${spacing.SideGutter.Mobile}rem`,\n },\n [mediaQueries.AfterMobile]: {\n padding: `.5rem ${spacing.SideGutter.Desktop}rem`,\n }\n },\n triptychItem: {\n height: 0,\n paddingBottom: '124%',\n overflow: 'hidden',\n position: 'relative',\n },\n figure: {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n zIndex: 0,\n cursor: 'pointer'\n },\n title: {\n fontSize: '1.5rem',\n marginTop: '1rem',\n color: primaryColor,\n maxWidth: 700,\n\n [mediaQueries.Mobile]: {\n padding: `0 3rem 0 ${spacing.SideGutter.Mobile}rem `,\n },\n [mediaQueries.AfterMobile]: {\n padding: `0 ${spacing.SideGutter.Desktop}rem `,\n }\n },\n text: {\n color: primaryColor,\n marginTop: '2rem',\n marginBottom: '3rem',\n\n\n maxWidth: 700,\n [mediaQueries.Mobile]: {\n padding: `0 3rem 0 ${spacing.SideGutter.Mobile}rem `,\n },\n [mediaQueries.AfterMobile]: {\n padding: `0 ${spacing.SideGutter.Desktop}rem `,\n }\n },\n printTitle: {\n fontSize: '1.5rem',\n marginBottom: '.8rem',\n color: primaryColor,\n maxWidth: 700,\n\n [mediaQueries.Mobile]: {\n\n padding: `0 3rem 0 ${spacing.SideGutter.Mobile}rem `,\n },\n [mediaQueries.AfterMobile]: {\n\n padding: `0 ${spacing.SideGutter.Desktop}rem `,\n }\n },\n flexContainer: {\n position: 'relative',\n display: 'flex',\n flexWrap: 'wrap',\n borderTop: `2px solid ${primaryColor}`,\n\n [mediaQueries.AfterMobile]: {\n '&:before': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n bottom: 0,\n width: 2,\n left: 'calc(100%/3)',\n marginLeft: -1,\n backgroundColor: primaryColor,\n zIndex: 1,\n },\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n bottom: 0,\n width: 2,\n right: 'calc(100%/3)',\n marginLeft: -1,\n backgroundColor: primaryColor,\n zIndex: 1\n }\n }\n },\n flexItem: {\n borderBottom: `2px solid ${primaryColor}`,\n [mediaQueries.Mobile]: {\n flex: '0 0 100%',\n\n '&[data-mobile=\"hidden\"]': {\n display: 'none',\n },\n },\n [mediaQueries.AfterMobile]: {\n flex: '0 0 33.33333%',\n }\n },\n image: {\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n fontFamily:'objectFit: \"cover\"',\n },\n }));\n\nconst Prints: React.FC = () => {\n const cls = useStyles();\n\n const { fetch } = useApi();\n const [prints, setPrints] = React.useState();\n\n const fetchPrints = async () => {\n const endpoint = `prints`;\n const prints = await fetch(endpoint);\n setPrints(prints);\n }\n\n React.useEffect(\n () => {\n fetchPrints();\n },\n []\n );\n\n return (\n
\n {prints &&\n <>\n

Box V2

\n
\n {\n prints.LeftImage &&\n
\n
\n
\n {prints.LeftImage.Legend}\n
\n
\n
\n }\n
\n
\n
\n {\n prints.RightImage &&\n
\n
\n
\n\n {prints.RightImage.Legend}\n
\n
\n
\n }\n
\n {prints.Title &&\n

{prints.Title}

\n }\n
\n

Archiv

\n
\n {\n prints.Prints.map((print, i) =>\n
\n \n
\n )\n }\n
\n \n }\n
\n
\n );\n}\n\nexport default Prints;\n","import React, { FC, useState, ReactNode, useEffect } from 'react';\nimport { makeStyles, createStyles } from '@material-ui/styles';\nimport classnames from 'classnames';\nimport mediaQueries from '../constants/responsive';\ntype TDrawer = { label: ReactNode, textColor: string, backgroundColor: string; maxHeight: string; isOpen?: boolean; }\nconst useStyles = makeStyles(() =>\n createStyles({\n root: {\n position: 'absolute',\n left: '100%',\n top: 0,\n boxSizing: 'border-box',\n transition: 'transform 0.2s ease-in-out'\n },\n label: {\n position: 'absolute',\n bottom: '100%',\n right: '100%',\n transform: 'rotate(-90deg)',\n transformOrigin: 'bottom right',\n border: 0,\n borderTopLeftRadius: '0.3rem',\n borderTopRightRadius: '0.3rem',\n fontSize: '2rem',\n padding: '0.3rem 0.8rem 0',\n marginRight: '-2px',\n cursor: 'pointer',\n },\n labelColor: ({ textColor, backgroundColor }) => ({\n background: backgroundColor,\n color: textColor,\n }),\n opened: {\n transform: 'translateX(-100%)'\n },\n content: ({ textColor, backgroundColor, maxHeight }) => ({\n padding: '1rem',\n background: backgroundColor,\n color: textColor,\n overflow: 'auto',\n '-webkit-overflow-scrolling': 'touch',\n height: '100%',\n maxHeight,\n width: '80vw',\n maxWidth: 900,\n transform: 'translate3d(0,0,0)',\n boxSizing: 'border-box',\n\n [mediaQueries.AfterMobile]: {\n width: 'calc(100vw - 5rem)'\n }\n\n }),\n }));\n\nconst Drawer: FC = (props) => {\n const { label, children, isOpen } = props;\n const cls = useStyles(props);\n const [opened, setOpened] = useState(isOpen);\n useEffect(() => {\n if(opened === undefined) {\n setOpened(isOpen);\n }\n }, [isOpen]);\n const onClick = () => {\n setOpened(!opened);\n }\n return (\n
\n {label}\n
\n {children}\n
\n
\n\n );\n}\n\nexport default Drawer;\n","import * as React from 'react';\nimport Drawer from './Drawer';\nimport { secondaryColor, primaryColor } from '../constants/stylesheet';\nimport { makeStyles, createStyles } from '@material-ui/styles';\nimport mediaQueries from '../constants/responsive';\nimport useReactRouter from 'use-react-router';\nimport { GetQueryVariable } from '../@utils/url';\nimport { useEffect, useState } from 'react';\n\nconst useStyles = makeStyles(() =>\n\tcreateStyles({\n\t\tdrawer: {\n\t\t\tposition: 'sticky',\n\t\t\ttop: 0,\n\t\t\tleft: 0,\n\t\t\tzIndex: 2,\n\t\t\t[mediaQueries.Mobile]: {\n\t\t\t\ttop: '14rem',\n\t\t\t},\n\t\t\t[mediaQueries.AfterMobile]: {\n\t\t\t\ttop: '11rem',\n\t\t\t},\n\t\t},\n\t\tsmallText: {\n\t\t\tfontSize: '.8rem',\n\t\t},\n\t})\n);\n\nconst About: React.FC = () => {\n\tconst cls = useStyles({});\n\tconst { location } = useReactRouter();\n\tconst [isOpen, setIsOpen] = useState();\n\tconst footer = document.getElementById('footer');\n\tconst isMobile = document.body && document.body.clientWidth <= 689;\n\n\tconst aboutHeight = `calc(${isMobile ? '90vh' : '80vh'} - ${\n\t\tfooter ? footer.clientHeight : 0\n\t}px)`;\n\n\tuseEffect(() => {\n\t\tconst _isOpen = GetQueryVariable('about', location.search) === 'true';\n\t\tconsole.log(_isOpen);\n\t\tsetIsOpen(_isOpen);\n\t}, [location]);\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t

\n\t\t\t\t\tDas Projekt BoxV2 wurde von den zwei Kunstschaffenden Selina Hofer und\n\t\t\t\t\tJonas Morgenthaler zusammen mit Vanessa Reiter, Geschäftsleiterin der\n\t\t\t\t\tJugendkulturförderstelle GGG Kulturkick entwickelt. Ausgehend von der\n\t\t\t\t\tVision der Jugendkulturförderstelle auf Augenhöhe mit Kunst- und\n\t\t\t\t\tKulturschaffenden und der Öffentlichkeit im Austausch zu stehen,\n\t\t\t\t\tdrehte sich die Zusammenarbeit um das gemeinsame Erforschen des\n\t\t\t\t\tKulturbegriffs. Darüber hinaus wurde mit der Auseinandersetzung\n\t\t\t\t\tangestrebt, die Aufgabe einer Kulturförderstelle auszuloten und neu zu\n\t\t\t\t\tdefinieren.\n\t\t\t\t

\n\t\t\t\t
\n\t\t\t\t

\n\t\t\t\t\tIn der Zusammenarbeit wurde die Installation BoxV2 konzipiert: eine\n\t\t\t\t\tVitrine mit einem Drucker, die Box V2. In der Vitrine sammelten sich\n\t\t\t\t\tAussagen, welche über ein Webformular von der Öffentlichkeit erfragt\n\t\t\t\t\twurden. Jeweils Ende des Monates wurde das gedruckte Material\n\t\t\t\t\tentnommen und an Selina Hofer und Jonas Morgenthaler zur Bearbeitung\n\t\t\t\t\tweitergegeben. Auf dieser Webseite wurden daraufhin Mitte des\n\t\t\t\t\tFolgemonates die Eingaben aus der Box V2 und deren Verarbeitungen in\n\t\t\t\t\tzwei Publikationen veröffentlicht.\n\t\t\t\t

\n\t\t\t\t
\n\t\t\t\t

\n\t\t\t\t\tErstmals gezeigt wurde die Installation in leicht veränderter Funktion\n\t\t\t\t\tam Jugendkulturfestival Basel im September 2019. Der Drucker in der\n\t\t\t\t\tVitrine war darauf programmiert, während der 48 Stunden des Festivals\n\t\t\t\t\tjegliche Beiträge, Publikationen, Artikel und Benachrichtigungen die\n\t\t\t\t\tzum Stichwort #Kultur im Internet veröffentlicht wurden, in Echtzeit\n\t\t\t\t\tzu drucken. Die Menge an sich angesammelten Beiträgen stellt der\n\t\t\t\t\tanschliessenden Projektphase einen Eindruck der Geschwindigkeit\n\t\t\t\t\tgegenüber, in welcher die Auseinandersetzung mit dem Kulturbegriff\n\t\t\t\t\tonline vonstatten geht.\n\t\t\t\t

\n\t\t\t\t
\n\t\t\t\t

\n\t\t\t\t\tDas Projekt dauerte ein halbes Jahr. Zwischen dem September 2019 und\n\t\t\t\t\tdem Februar 2020 stand die Box V2 an drei unterschiedlichen Orten –\n\t\t\t\t\tdem Vorplatz der Elisabethen Kirche (im Rahmen des JKFs 2019), im\n\t\t\t\t\tSchmiedenhof (bei dem damaligen GGG Kulturkick Büro) und auf der\n\t\t\t\t\tVeranda des Sommercasinos – und gab dem Diskurs um die\n\t\t\t\t\tKultur(-förderung) einen Körper im öffentlichen Raum.\n\t\t\t\t

\n\t\t\t\t
\n\t\t\t\t

Basel, Frühling 2020

\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t

\n\t\t\t\t\tSelina Hofer\n\t\t\t\t

\n\t\t\t\t

\n\t\t\t\t\t*1995, lebt und arbeitet in Bern / Künstlerin und Kunstvermittlerin /\n\t\t\t\t

\n\t\t\t\t

\n\t\t\t\t\tseit 2018 Mitbetreiberin und Kuratorin Sattelkammer, Bern / seit 2019\n\t\t\t\t\tVermittlerin Connected Space / seit 2018 Zusammenarbeit mit dem GGG\n\t\t\t\t\tKulturkick Basel / Kuration Artstadt Bern 2019 / Assistenz\n\t\t\t\t\tPropädeutikum SfG B:B Biel Frühjahr 2019{' '}\n\t\t\t\t

\n\t\t\t\t
\n\t\t\t\t

\n\t\t\t\t\t2015 – 2018: Hochschule der Künste Bern, BA Major Vermittlung in Kunst\n\t\t\t\t\tund Design, Universität Bern, BA Minor Kunstgeschichte\n\t\t\t\t

\n\t\t\t\t

\n\t\t\t\t\t2017: Koninklijke Academie van Beeldende Kunsten Den Haag, Exchange BA\n\t\t\t\t\tFine Arts\n\t\t\t\t

\n\t\t\t\t
\n\t\t\t\t

\n\t\t\t\t\tJonas Morgenthaler\n\t\t\t\t

\n\t\t\t\t

\n\t\t\t\t\t*1995, lebt und arbeitet in Bern (CH) und Amsterdam (NL) / Künstler\n\t\t\t\t

\n\t\t\t\t

\n\t\t\t\t\tRietveld Uncut Amsterdam 2020 / seit 2019 Zusammenarbeit mit Studium\n\t\t\t\t\tGenerale der Rietveld Academie / Artstadt Bern 2019 / seit 2018\n\t\t\t\t\tZusammenarbeit mit dem GGG Kulturkick Basel\n\t\t\t\t

\n\t\t\t\t
\n\t\t\t\t

\n\t\t\t\t\tseit 2018: Gerrit Rietveld Academie Amsterdam (NL), BA Fine Arts\n\t\t\t\t

\n\t\t\t\t

\n\t\t\t\t\t2018: Artist Residency in Seydisfjördur (IS)\n\t\t\t\t

\n\t\t\t\n\t\t
\n\t);\n};\n\nexport default About;\n","export const GetQueryVariable = (variable: string, search?: string) => {\n var query = (search || window.location.search).substring(1);\n var vars = query.split('&');\n for (var i = 0; i < vars.length; i++) {\n var pair = vars[i].split('=');\n if (decodeURIComponent(pair[0]) === variable) {\n return decodeURIComponent(pair[1]);\n }\n }\n return '';\n};\n\nexport const GetHashVariable = (variable: string) => {\n var query = window.location.hash.substring(1);\n var vars = query.split('&');\n for (var i = 0; i < vars.length; i++) {\n var pair = vars[i].split('=');\n if (decodeURIComponent(pair[0]) === variable) {\n return decodeURIComponent(pair[1]);\n }\n }\n return '';\n};","import React, { FC } from 'react';\nimport { createStyles, makeStyles } from '@material-ui/styles';\nimport 'reset-css';\nimport classnames from 'classnames';\nimport { Route, Switch } from 'react-router-dom';\nimport useReactRouter from 'use-react-router';\n\nimport Quotes from './Quotes';\nimport Prints from './Prints';\nimport About from './About';\nimport Navigation from './Navigation';\n\nconst useStyles = makeStyles(() =>\n createStyles({\n content: {\n minHeight: '100%',\n overflow: 'hidden',\n // '-webkit-overflow-scrolling': 'touch'\n }\n }));\n\nexport type contentProps = {\n showConfirmation?: boolean;\n}\n\ntype Props = contentProps;\nconst Content: FC = ({ showConfirmation }) => {\n const cls = useStyles({});\n const { location } = useReactRouter();\n const isContent = location.pathname === '/';\n return (\n
\n {isContent && }\n \n
\n );\n}\nexport default Content;","import React, { FC } from 'react';\nimport { createStyles, makeStyles } from '@material-ui/styles';\nimport { primaryColor, secondaryColor } from '../constants/stylesheet';\nimport mediaQueries from '../constants/responsive';\nimport spacing from '../constants/spacing';\nimport useReactRouter from 'use-react-router';\n\nimport sulgerLogo from '../assets/Sulger-Stiftung.png';\n\n\n\nconst useStyles = makeStyles(() =>\n createStyles({\n footer: {\n display: 'flex',\n backgroundColor: primaryColor,\n color: secondaryColor,\n fontSize: '0.7rem',\n [mediaQueries.Mobile]: {\n flexWrap: 'wrap',\n padding: `1.5rem ${spacing.SideGutter.Mobile}rem`,\n boxSizing: 'border-box'\n },\n [mediaQueries.AfterMobile]: {\n padding: `1.5rem ${spacing.SideGutter.Desktop}rem`,\n boxSizing: 'border-box'\n }\n },\n footerItem: {\n [mediaQueries.Mobile]: {\n width: '100%',\n '&:first-child': {\n marginBottom: '2rem'\n }\n },\n [mediaQueries.AfterMobile]: {\n width: '50%'\n }\n },\n footerLegend: {\n marginBottom: '1rem'\n },\n footerLogo: {\n },\n path: {\n fill: 'white'\n },\n imgLogo: {\n width: 180,\n }\n }));\n\nconst Footer: FC = () => {\n const cls = useStyles({});\n const { location } = useReactRouter();\n\n return (\n <>\n {location.pathname === \"/\" && (\n
\n
\n
Ein Projekt von
\n \n
\n
\n
Mit freundlicher Unterstützung von
\n
\n \"Sulger-Stiftung\n
\n
\n
)\n }\n \n );\n}\nexport default Footer;","import React, { FC, useState } from 'react';\nimport { createStyles, makeStyles } from '@material-ui/styles';\nimport 'reset-css';\nimport { ApiProvider } from './@context/Api';\nimport { ResponsiveProvider } from './@context/Responsive';\nimport Hero from './components/Hero';\nimport Content from './components/Content';\nimport Footer from './components/Footer';\nimport { BrowserRouter } from 'react-router-dom';\nimport stylesheet from './constants/stylesheet';\nimport mediaQueries from './constants/responsive';\nimport Prints from './components/Prints';\n\nconst useStyles = makeStyles(() =>\n createStyles({\n '@global': {\n // 'html': {\n // overflow: 'hidden'\n // },\n // 'body': {\n // overflow: 'auto'\n // },\n 'html, body': {\n position: 'relative',\n width: '100%',\n height: '100%',\n ...stylesheet.Body\n },\n '#root': {\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0\n },\n 'input': {\n fontSize: 'inherit',\n fontFamily: 'inherit',\n outline: 'transparent',\n color: 'inherit',\n },\n 'a': {\n textDecoration: 'none',\n },\n 'img': {\n width: '100%'\n }\n }\n }));\n\nconst App: FC = () => {\n useStyles();\n\n return (\n \n \n \n \n