{"version":3,"file":"OpenSourceProject-D9T4QmYK.js","sources":["../../../src/hooks/useOsProjects.ts","../../../src/components/pages/open-source/Contributors.tsx","../../../src/components/pages/open-source/OpenSourceProject.tsx"],"sourcesContent":["import { useRoute } from 'react-router5';\nimport { RouterState } from '../routerMiddleware';\nimport { OsProject } from '../types';\n\nexport default function useOsProjects(allowedProjects: number[] = []): Array<OsProject> {\n const { route } = useRoute();\n const state = route as RouterState;\n\n let osprojects = state?.data?.osprojects;\n \n if (state?.name === 'about.author') {\n const authorId = state?.params?.id;\n osprojects = osprojects.filter(osproject => osproject.users.map(user => user.id).includes(authorId));\n }\n \n return Object.values(osprojects).filter((project: OsProject) => allowedProjects.length == 0 || allowedProjects.includes(project.id));\n}\n","import React from 'react';\nimport { User } from '../../../types';\nimport Link from '../../Link';\nimport { styled } from 'styled-components';\n\ninterface ContributorsProps {\n users: User[];\n}\n\ninterface ImageProps {\n $image: string;\n}\n\nconst List = styled.div`\n display: flex;\n flex-wrap: wrap;\n gap: var(--space-xs);\n`;\n\nconst StyledLink = styled(Link)`\n align-items: center;\n border-radius: var(--border-radius);\n border: 1px solid var(--color-iron-400);\n display: inline-flex;\n font-size: var(--font-size-sm);\n gap: 0.25rem;\n height: 2.25rem;\n padding-inline: var(--space-xs);\n`;\n\nconst Image = styled.div<ImageProps>`\n aspect-ratio: 1;\n background-color: var(--color-iron-400);\n background-image: url(${props => props.$image});\n background-size: cover;\n border-radius: 100%;\n width: 1.5rem;\n`;\n\nexport default function Contributors({ users }: ContributorsProps) {\n return (\n <List>\n {users\n .filter((user) => user)\n .map((user) => (\n <StyledLink\n key={user.id}\n routeName=\"about.author\"\n routeParams={{ id: user.id, name: user.name.toLowerCase() }}\n >\n <Image $image={user.image} />\n <div className=\"name\">{user.name}</div>\n </StyledLink>\n ))}\n </List>\n );\n}\n","import React from 'react';\nimport { styled } from 'styled-components';\nimport { OsProject } from '../../../types';\nimport Button from '../../Button';\nimport Col from '../../layout/Col';\nimport Grid from '../../layout/Grid';\nimport Heading from '../../Heading';\nimport Text from '../../Text';\nimport Tags from '../../Tags';\nimport { faGithub } from '@fortawesome/free-brands-svg-icons';\nimport { breakpoints } from '../../../styled/utils';\nimport Contributors from './Contributors';\nimport Sections from '../../layout/Sections';\nimport Icon from '../../Icon';\n\ninterface OpenSourceProjectProps {\n project: OsProject,\n}\n\nconst OpenSourceProjectGrid = styled(Grid)`\n background-color: var(--color-white);\n border-radius: var(--border-radius);\n border: 1px solid var(--color-iron-400);\n padding-bottom: var(--space-lg);\n padding-left: var(--gutter);\n padding-right: var(--gutter);\n padding-top: var(--space-lg);\n position: relative;\n\n @media ${breakpoints.md} {\n padding-left: 0;\n padding-right: 0;\n }\n`;\n\nconst StyledCol = styled(Col)`\n &:first-child,\n &:last-child {\n padding-inline: var(--gutter);\n }\n\n &:not(:first-child) {\n &::before {\n @media ${breakpoints.md} {\n background-color: var(--color-iron-300);\n content: '';\n height: 100%;\n margin-left: calc(var(--gutter) * -1);\n position: absolute;\n top: 0;\n width: 1px;\n }\n }\n }\n`;\n\nexport default function OpenSourceProject({ project }: OpenSourceProjectProps) {\n const tags = project.tags.filter((tag) => !tag.language);\n const languages = project.tags.filter((tag) => tag.language);\n \n return (\n <OpenSourceProjectGrid $cols={{ sm: 4, lg: 12 }} $columnGap=\"gutter\" $rowGap=\"baseline\">\n <StyledCol $col={{ sm: 'span 4', md: 'span 2', lg: 'span 4', xl: 'span 3' }} $padding=\"gutter\">\n <Sections $rowGap=\"space-sm\">\n <Heading as=\"h4\" $color=\"pastel-green-400\" $baseline>Tags</Heading>\n <Tags tags={tags} />\n {languages.length > 0 &&\n <>\n <Heading as=\"h4\" $color=\"pastel-green-400\" $baseline>Languages</Heading>\n <Tags tags={ languages }/>\n </>}\n {project.users?.length > 0 && (\n <Sections $rowGap=\"space-sm\">\n <Heading as=\"h4\" $color=\"pastel-green-400\" $baseline>Contributors</Heading>\n <Contributors users={project.users} />\n </Sections>\n )}\n </Sections>\n </StyledCol>\n <StyledCol $col={{ sm: 'span 4', lg: 'span 7' }} $padding=\"gutter\">\n <Heading as=\"h3\" $baseline>{project.name}</Heading>\n <Sections $rowGap=\"space-md\">\n <Text en={project.description} markdown />\n <Col $col={{ sm: 'span 2', lg: 'span 2', xl: 'span 2' }}>\n <Button as=\"a\" href={project.link} target=\"_black\" rel=\"noopener\" $ghost><Icon icon={faGithub} />Github</Button>\n </Col>\n </Sections>\n </StyledCol>\n <StyledCol $col={{ sm: 'span 1', lg: 'span 2' }}>\n <Sections $rowGap=\"baseline\">\n {project.image && <img src={project.image} alt=\"\" />}\n </Sections>\n </StyledCol>\n </OpenSourceProjectGrid>\n );\n}\n"],"names":["useOsProjects","allowedProjects","route","useRoute","state","osprojects","_a","authorId","_b","osproject","user","project","List","styled","div","withConfig","displayName","componentId","StyledLink","Link","Image","props","$image","Contributors","users","jsx","filter","map","jsxs","id","name","toLowerCase","image","OpenSourceProjectGrid","Grid","breakpoints","md","StyledCol","Col","OpenSourceProject","tags","tag","language","languages","sm","lg","xl","Sections","Heading","Tags","length","Fragment","Text","description","Button","link","Icon","faGithub"],"mappings":"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"}