@ossy/design-system-extras 0.0.1-beta
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/.storybook/main.js +19 -0
- package/.storybook/preview.jsx +35 -0
- package/build/cjs/index.js +1 -0
- package/build/esm/index.js +1 -0
- package/package.json +75 -0
- package/rollup.config.js +35 -0
- package/src/index.js +3 -0
- package/src/markdown-viewer/MarkdownViewer.jsx +86 -0
- package/src/markdown-viewer/MarkdownViewer.stories.jsx +34 -0
- package/src/markdown-viewer/index.js +1 -0
- package/src/markdown-viewer/styles/atom-one-light.js +114 -0
- package/src/router-layouts/Footer.jsx +38 -0
- package/src/router-layouts/StandardLayout.jsx +95 -0
- package/src/router-layouts/StandardLayout.stories.jsx +40 -0
- package/src/router-layouts/card/Card.layout.jsx +25 -0
- package/src/router-layouts/card/Card.layout.stories.jsx +15 -0
- package/src/router-layouts/card/index.js +1 -0
- package/src/router-layouts/card-sidebar/CardSidebar.jsx +48 -0
- package/src/router-layouts/card-sidebar/CardSidebar.stories.jsx +23 -0
- package/src/router-layouts/card-sidebar/index.js +1 -0
- package/src/router-layouts/card-tabs/CardTabs.jsx +35 -0
- package/src/router-layouts/card-tabs/CardTabs.stories.jsx +22 -0
- package/src/router-layouts/card-tabs/index.js +1 -0
- package/src/router-layouts/index.js +4 -0
- package/src/stories/Button.jsx +39 -0
- package/src/stories/Button.stories.js +49 -0
- package/src/stories/Configure.mdx +364 -0
- package/src/stories/Header.jsx +56 -0
- package/src/stories/Header.stories.js +29 -0
- package/src/stories/Page.jsx +69 -0
- package/src/stories/Page.stories.js +28 -0
- package/src/stories/assets/accessibility.png +0 -0
- package/src/stories/assets/accessibility.svg +1 -0
- package/src/stories/assets/addon-library.png +0 -0
- package/src/stories/assets/assets.png +0 -0
- package/src/stories/assets/avif-test-image.avif +0 -0
- package/src/stories/assets/context.png +0 -0
- package/src/stories/assets/discord.svg +1 -0
- package/src/stories/assets/docs.png +0 -0
- package/src/stories/assets/figma-plugin.png +0 -0
- package/src/stories/assets/github.svg +1 -0
- package/src/stories/assets/share.png +0 -0
- package/src/stories/assets/styling.png +0 -0
- package/src/stories/assets/testing.png +0 -0
- package/src/stories/assets/theming.png +0 -0
- package/src/stories/assets/tutorials.svg +1 -0
- package/src/stories/assets/youtube.svg +1 -0
- package/src/stories/button.css +30 -0
- package/src/stories/header.css +32 -0
- package/src/stories/page.css +68 -0
- package/src/templates/index.js +3 -0
- package/src/templates/landing-page/2020/Footer.jsx +59 -0
- package/src/templates/landing-page/2020/Hero.jsx +51 -0
- package/src/templates/landing-page/2020/LandingPage.jsx +180 -0
- package/src/templates/landing-page/2020/LandingPage.stories.jsx +190 -0
- package/src/templates/landing-page/2020/index.js +1 -0
- package/src/templates/landing-page/index.js +1 -0
- package/src/templates/resume/Resume.jsx +305 -0
- package/src/templates/resume/Resume.stories.jsx +237 -0
- package/src/templates/resume/index.js +2 -0
- package/src/templates/resume/useResume.js +85 -0
- package/src/templates/theme-display/ThemeDisplay.jsx +301 -0
- package/src/templates/theme-display/ThemeDisplay.stories.jsx +18 -0
- package/src/templates/theme-display/index.js +1 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
/** @type { import('@storybook/react-vite').StorybookConfig } */
|
|
4
|
+
const config = {
|
|
5
|
+
"stories": [
|
|
6
|
+
"../src/**/*.mdx",
|
|
7
|
+
"../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"
|
|
8
|
+
],
|
|
9
|
+
"addons": [
|
|
10
|
+
"@storybook/addon-essentials",
|
|
11
|
+
"@storybook/addon-onboarding",
|
|
12
|
+
"@storybook/addon-interactions"
|
|
13
|
+
],
|
|
14
|
+
"framework": {
|
|
15
|
+
"name": "@storybook/react-vite",
|
|
16
|
+
"options": {}
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
export default config;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Theme } from '@ossy/design-system';
|
|
3
|
+
import { Ossy, Standard } from '@ossy/themes'
|
|
4
|
+
|
|
5
|
+
/** @type { import('@storybook/react').Preview } */
|
|
6
|
+
const preview = {
|
|
7
|
+
|
|
8
|
+
parameters: {
|
|
9
|
+
|
|
10
|
+
controls: {
|
|
11
|
+
matchers: {
|
|
12
|
+
color: /(background|color)$/i,
|
|
13
|
+
date: /Date$/i,
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
|
|
17
|
+
options: {
|
|
18
|
+
storySort: {
|
|
19
|
+
order: ['App', 'Layout', '*', 'Base'],
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
|
|
23
|
+
},
|
|
24
|
+
|
|
25
|
+
decorators: [
|
|
26
|
+
(Story) => (
|
|
27
|
+
<Theme theme={Ossy} >
|
|
28
|
+
<Story />
|
|
29
|
+
</Theme>
|
|
30
|
+
),
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export default preview;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var e=require("react"),t=require("react-markdown"),a=require("react-syntax-highlighter"),n=require("@ossy/design-system");function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)({}).hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},r.apply(null,arguments)}var o={hljs:{display:"block",overflowX:"auto",padding:"0.5em",color:"#383a42",background:"#fafafa"},"hljs-comment":{color:"#a0a1a7",fontStyle:"italic"},"hljs-quote":{color:"#a0a1a7",fontStyle:"italic"},"hljs-doctag":{color:"#a626a4"},"hljs-keyword":{color:"#a626a4"},"hljs-formula":{color:"#a626a4"},"hljs-section":{color:"#e45649"},"hljs-name":{color:"#e45649"},"hljs-selector-tag":{color:"#e45649"},"hljs-deletion":{color:"#e45649"},"hljs-subst":{color:"#e45649"},"hljs-literal":{color:"#0184bb"},"hljs-string":{color:"#50a14f"},"hljs-regexp":{color:"#50a14f"},"hljs-addition":{color:"#50a14f"},"hljs-attribute":{color:"#50a14f"},"hljs-meta-string":{color:"#50a14f"},"hljs-built_in":{color:"#c18401"},"hljs-class .hljs-title":{color:"#c18401"},"hljs-attr":{color:"#986801"},"hljs-variable":{color:"#986801"},"hljs-template-variable":{color:"#986801"},"hljs-type":{color:"#986801"},"hljs-selector-class":{color:"#986801"},"hljs-selector-attr":{color:"#986801"},"hljs-selector-pseudo":{color:"#986801"},"hljs-number":{color:"#986801"},"hljs-symbol":{color:"#4078f2"},"hljs-bullet":{color:"#4078f2"},"hljs-link":{color:"#4078f2",textDecoration:"underline"},"hljs-meta":{color:"#4078f2"},"hljs-selector-id":{color:"#4078f2"},"hljs-title":{color:"#4078f2"},"hljs-emphasis":{fontStyle:"italic"},"hljs-strong":{fontWeight:"bold"}};const l={h1:({node:t,...a})=>e.createElement(n.Title,r({id:s(a.children),as:"h1",variant:"primary"},a,{style:{marginBottom:"var(--space-l)"}})),h2:({node:t,...a})=>e.createElement(n.Title,r({id:s(a.children),as:"h2",variant:"secondary"},a,{style:{marginBottom:"var(--space-m)",marginTop:"var(--space-l)"}})),h3:({node:t,...a})=>e.createElement(n.Title,r({id:s(a.children),as:"h3",variant:"tertiary"},a,{style:{marginBottom:"var(--space-m)"}})),h4:({node:t,...a})=>e.createElement(n.Title,r({id:s(a.children),as:"h4",variant:"tertiary"},a,{style:{marginBottom:"var(--space-m)"}})),h5:({node:t,...a})=>e.createElement(n.Title,r({id:s(a.children),as:"h5",variant:"tertiary"},a,{style:{marginBottom:"var(--space-m)"}})),p:({node:t,...a})=>e.createElement(n.Text,r({},a,{style:{marginBottom:"var(--space-m)"}})),ul:({node:t,...a})=>e.createElement("ul",r({},a,{style:{listStyle:"inside",paddingLeft:"var(--space-l)"}})),li:({node:t,...a})=>e.createElement(n.Text,r({as:"li"},a,{style:{marginBottom:"var(--space-m)"}})),a:({node:t,...a})=>e.createElement(n.Button,r({as:a.href?"a":"button"},a,{variant:"link"})),code:({node:t,className:l,...s})=>{const[i,c]=/language-(\w+)/.exec(l||"")||[];return!c?e.createElement(n.View,r({inset:"xs",surface:"secondary",roundness:"s",style:{display:"inline-block"}},s),e.createElement(a,r({style:{display:"inline",...o,hljs:{display:"inline",color:"#383a42",background:"transparent"}},language:c},s))):e.createElement(n.View,{inset:"m",surface:"secondary",roundness:"m","data-component":"MarkdownViewer"},e.createElement("style",{href:"@ossy/design-system-extras/markdown-viewer/MarkdownViewer",precedence:"high"},'\n [data-component="MarkdownViewer"] {\n margin: var(--space-s) 0;\n }\n\n [data-component="MarkdownViewer"] pre {\n margin: 0;\n }\n '),e.createElement(a,r({style:{...o,hljs:{display:"block",overflowX:"auto",color:"#383a42",background:"transparent"}},language:c},s)))}};function s(e){return e?e.toLowerCase().replace(/\s+/g,"-"):""}const i=({columns:t=[]})=>e.createElement(n.View,{layout:"row",placeContent:"normal space-between",gap:"xl"},t.map(t=>e.createElement("div",{style:{maxWidth:`var(--max-width-${t.maxWidth}, 100%)`}},e.createElement(n.Title,{as:"h3",variant:"tertiary",style:{marginBottom:"var(--space-m)"}},t.title),!!t.text&&e.createElement(n.Text,null,t.text),!!t.list&&e.createElement("ul",{key:t.title,style:{padding:"0"}},t.list.map(({label:t,...a})=>e.createElement("li",{key:t,style:{listStyle:"none"}},e.createElement(n.Button,r({variant:"link"},a,{style:{marginBottom:"var(--space-m)"}}),t))))))),c=(e,t)=>{const a=e=>e?.date?.split(" - ")?.[0]||"1900",n=new Date(a(e));return new Date(a(t))-n},m=(t=[])=>{t.sort(c);const[a,n]=e.useState([]),[r,o]=e.useState([]),[l,s]=e.useState([]),[i,m]=e.useState([]),[d,p]=e.useState([]),[u,g]=e.useState();Object.keys(t.flatMap(e=>e.tags).filter(e=>!!e).reduce((e,t)=>({[t]:"",...e}),{}));const y=Object.keys(t.reduce((e,t)=>({[t.typeOfExperience]:"",...e}),{}));e.useEffect(()=>{let e=t;d.length&&(e=t.filter(e=>e?.tags?.map(e=>e.toLowerCase())?.some(e=>d.map(e=>e.toLowerCase()).includes(e)))),u&&(e=e.filter(e=>e.typeOfExperience===u));const a=(e=>e.reduce((e,t)=>(e[t.typeOfExperience||"Other"].push(t),e),{Work:[],Education:[],Project:[],Other:[]}))(e);n(a.Work),o(a.Education),s(a.Project),m(a.Other)},[d,t,u]);return{work:a,education:r,project:l,other:i,tags:[],categories:y,activeTags:d,toggleActiveTag:e=>{p(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},activeExperienceType:u,toggleActiveExperienceType:e=>{e!==u&&g("All"===e?void 0:e)}}},d=({title:t,titleVariant:a="secondary",titleAs:o="h2",text:l,children:s,maxWidth:i="l",...c})=>e.createElement(n.PageSection,r({maxWidth:i},c,{style:{padding:"var(--space-xl) var(--space-m)",borderBottom:"1px solid var(--separator-primary)"}}),e.createElement(n.Title,{as:o,variant:a,style:{marginBottom:"var(--space-m)"}},t),e.createElement(n.Text,{style:{maxWidth:"600px",marginBottom:"var(--space-xl)"}},l),s),p=({title:t,titleMaxWidth:a="800px",text:o,actions:l=[]})=>e.createElement("div",{"data-component":"hero"},e.createElement("style",{href:"@ossy/design-system-extras/hero",precedence:"high"},'\n [data-component="hero"] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n }\n\n @media (min-width: 820px) {\n [data-component="hero"] {\n /* min-height: 60vh; */\n flex: 0 0 auto;\n }\n }\n '),e.createElement(n.Title,{variant:"display",style:{maxWidth:a,marginBottom:"var(--space-l)"}},t),e.createElement(n.Text,{style:{marginBottom:"var(--space-l)"}},o),e.createElement("div",{style:{display:"flex",gap:"var(--space-m)"}},l.map(({label:t,...a})=>e.createElement(n.Button,r({},a,{key:t}),t)))),u=({columns:t=[]})=>e.createElement(n.View,{layout:"row",placeContent:"normal space-between",gap:"xl",className:"footer"},e.createElement("style",{href:"@ossy/design-system-extras/footer",precedence:"high"},"\n .footer {\n padding: var(--space-s);\n }\n\n .footer .title {\n margin-bottom: var(--space-m);\n }\n\n .footer .list {\n padding: 0;\n }\n\n .footer .list-item {\n list-style: none;\n }\n "),t.map(t=>e.createElement("div",{style:{maxWidth:`var(--max-width-${t.maxWidth}, 100%)`}},e.createElement(n.Title,{as:"h3",variant:"tertiary",className:"title",style:{color:"var(--color-primary)"}},t.title),!!t.text&&e.createElement(n.Text,{style:{color:"var(--color-primary)"}},t.text),!!t.list&&e.createElement("ul",{className:"list",key:t.title},t.list.map(({label:t,...a})=>e.createElement("li",{className:"list-item",key:t},e.createElement(n.Button,r({variant:"link"},a,{style:{marginBottom:"var(--space-m)"}}),t))))))),g=[{id:"about",surface:"decorated",style:{padding:"var(--space-xxl) var(--space-m)"},render:({about:t,socialProof:a})=>e.createElement(e.Fragment,null,e.createElement(n.View,{alignItems:"stretch",justifyContent:"center",style:{marginBottom:"var(--space-xl)"}},t.columns.map(({name:t,role:a,imgSrc:r,text:o})=>e.createElement("div",{key:t,style:{display:"flex",flexDirection:"column",justifyContent:"center"}},e.createElement(n.Image,{key:t,src:r,style:{borderRadius:"50%",width:"100%",maxWidth:"200px",height:"auto",margin:"0 auto",marginBottom:"var(--space-l)"}}),e.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-s)",alignItems:"center",marginBottom:"var(--space-l)"}},e.createElement(n.Title,{as:"h1",variant:"primary"},t),e.createElement(n.Title,{as:"h2",variant:"lead"},a)),e.createElement(n.Text,{style:{textAlign:"center",maxWidth:"600px",margin:"0 auto"}},o)))),e.createElement(n.Text,{variant:"small",style:{marginBottom:"var(--space-l)",textAlign:"center"}},a.title),e.createElement(n.View,{layout:"row",justifyContent:"space-between",gap:"m"},a.columns.map(({title:t,logo:a})=>e.createElement("div",{key:t,style:{textAlign:"center"}},e.createElement(n.Card,null,e.createElement(n.Image,{src:a,style:{height:"20px",width:"auto"}}))))))},{id:"hero",surface:"primary",style:{padding:"var(--space-xxl) var(--space-m) var(--space-xl)"},render:({hero:t})=>e.createElement(p,t)},{id:"services",surface:"primary",maxWidth:"large",layout:"row",placeContent:"stretch space-around",gap:"xl",style:{borderBottom:"1px solid var(--separator-primary)",padding:"var(--space-xxl) var(--space-m)"},render:({services:t})=>e.createElement(e.Fragment,null,t.map(({title:t,text:a})=>e.createElement("div",{key:t,style:{textAlign:"center"}},e.createElement(n.Title,{variant:"tertiary",style:{marginBottom:"var(--space-m)"}},t),e.createElement(n.Text,{style:{maxWidth:"600px"}},a))))},{id:"projects",surface:"primary",style:{padding:"var(--space-xxl) var(--space-m) var(--space-xl)",minHeight:"60vh"},render:({projects:t})=>e.createElement(e.Fragment,null,e.createElement(n.Guide,{title:t.title,titleVariant:"display",text:t.text,style:{textAlign:"left",maxWidth:"600px",marginBottom:"var(--space-xl)"}}),t.categories.map(({title:t,text:a,links:o})=>e.createElement("div",{style:{marginBottom:"var(--space-xl)"}},e.createElement(n.Title,{title:t,variant:"tertiary",style:{marginBottom:"var(--space-l)"}},t),e.createElement(n.Text,null,a),e.createElement(n.Stack,null,o.map(t=>e.createElement(n.Stack,{horizontal:!0,style:{marginBottom:"var(--space-m)"}},t.map(t=>e.createElement(n.Button,r({},t,{variant:"link",target:"_blank",style:{marginRight:"var(--space-m)"}})))))))))},{id:"contact",surface:"accent",style:{padding:"var(--space-xxl) var(--space-m)",borderBottom:"1px solid var(--separator-primary)"},render:({contact:t})=>e.createElement(u,{columns:t.columns})}];exports.CardLayout=({surface:t="primary",maxWidth:a="full",layout:r="off-center",cardVariant:o,cardSurface:l,header:s,children:i,content:c})=>e.createElement(n.PageSection,{surface:t,maxWidth:a},e.createElement(n.View,{layout:r,style:{height:"100vh"}},s,e.createElement(n.Card,{slot:"content",variant:o,style:{overflowY:"auto"},surface:l},c??i))),exports.CardSidebar=({surface:t="primary",layout:a="off-center-m",navigation:o=[],cardVariant:l,cardSurface:s,header:i,children:c,content:m,...d})=>e.createElement(n.PageSection,r({layout:a,surface:t},d),i,e.createElement(n.Card,{variant:l,surface:s,slot:"content",style:{display:"flex",flexDirection:"row",padding:"0"}},e.createElement("div",{style:{display:"flex",gap:"var(--space-s)",padding:"var(--space-l) var(--space-s)",flexDirection:"column",width:"180px",borderRight:"1px solid var(--separator-primary)"}},o.map(t=>e.createElement(n.Button,r({},t,{style:{justifyContent:"flex-start"}})))),e.createElement("div",{style:{flexGrow:"1",padding:"var(--space-l)",overflowY:"auto"}},m??c))),exports.CardTabs=({surface:t="primary",layout:a="off-center",cardVariant:o="decorated",tabs:l=[],content:s,children:i,...c})=>e.createElement(n.PageSection,r({layout:a,surface:t},c),e.createElement(n.View,{style:{height:"100%",background:"var(--surface-linear-gradient)"}},e.createElement(n.Card,{variant:o,slot:"content",style:{width:"100vw",padding:"0"}},e.createElement(n.Tabs,{tabs:l,style:{height:"auto",borderBottom:"1px solid var(--separator-primary)"}}),e.createElement("div",{style:{padding:"var(--space-m)"}},s||i)))),exports.LandingPage2020=g,exports.MarkdownViewer=({markdown:a,children:n,components:o={},...s})=>e.createElement(t,r({children:a||n,components:{...l,...o}},s)),exports.Resume=({status:t,profile:a,experiences:o,translations:l,profileCardProps:s={},actions:i=[]})=>{const{work:c,education:d,project:p,other:u,tags:g,categories:y,activeTags:x,toggleActiveTag:v,activeExperienceType:h,toggleActiveExperienceType:f}=m(o),E=[{id:"All",label:l.all},{id:"Work",label:l.work},{id:"Project",label:l.projects},{id:"Education",label:l.education},{id:"Other",label:l.other}].filter(e=>"All"===e.id?e:y.includes(e.id)),w=[{title:l.work,experiences:c},{title:l.projects,experiences:p},{title:l.education,experiences:d},{title:l.other,experiences:u}];return e.createElement("div",{"data-component":"@design-system-extras/resume","data-status":t},e.createElement("style",{href:"@design-system-extras/resume",precedence:"high"},'\n [data-component="@design-system-extras/resume"] {\n\n --padding: var(--resume-padding, 0);\n --background: var(--resume-background, transparent);\n --header-padding: var(--resume-header-padding, 8px 24px 8px 0);\n --header-justify-content: var(--resume-header-justify-content, center);\n --filter-padding: var(--resume-filter-padding, var(--space-s) var(--space-m));\n --content-background: var(--resume-content-background, transparent);\n\n background: var(--background);\n padding: var(--padding);\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: fit-content fit-content fit-content;\n grid-template-areas:\n "profile-summary"\n "actions"\n "content";\n }\n\n [data-component="@design-system-extras/resume"] [data-slot="actions"] {\n min-width: 0;\n box-sizing: border-box;\n grid-area: actions;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: var(--header-padding);\n }\n\n [data-component="@design-system-extras/resume"] [data-slot="actions"]::-webkit-scrollbar {\n display: none;\n }\n\n [data-component="@design-system-extras/resume"] .secondary-actions {\n display: none;\n gap: var(--space-s);\n }\n\n [data-component="@design-system-extras/resume"] [data-slot="profile-summary"] {\n grid-area: profile-summary;\n z-index: 1;\n }\n\n [data-component="@design-system-extras/resume"] [data-slot="content"] {\n display: flex;\n width: 100%;\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n grid-area: content;\n padding: var(--space-l) var(--space-m);\n margin: var(--content-margin);\n gap: var(--space-xl);\n background: var(--content-background);\n }\n\n [data-component="@design-system-extras/resume"] [data-animation="fade-in"] {\n opacity: 0;\n transition-property: opacity, transform;\n transition-duration: 1s, 1s;\n transition-timing-function: ease-in-out;\n transform: translateZ(0);\n }\n\n [data-component="@design-system-extras/resume"] [data-scroll] {\n scrollbar-width: none;\n overflow-y: auto;\n }\n\n [data-component="@design-system-extras/resume"] [data-scroll]::-webkit-scrollbar {\n display: none;\n }\n\n [data-component="@design-system-extras/resume"][data-status="Success"] [data-animation="fade-in"] {\n opacity: 1;\n }\n\n [data-component="@design-system-extras/resume"] .content-section {\n display: flex;\n flex-direction: column;\n gap: var(--space-l);\n width: 100%;\n max-width: 700px;\n }\n\n @media (min-width: 1200px) {\n [data-component="@design-system-extras/resume"] {\n height: 100vh;\n grid-template-columns: 400px 1fr;\n grid-template-rows: min-content 1fr;\n grid-template-areas:\n "profile-summary actions"\n "profile-summary content";\n }\n\n [data-component="@design-system-extras/resume"] [data-slot="actions"] {\n justify-content: space-between;\n }\n\n [data-component="@design-system-extras/resume"] .secondary-actions {\n display: flex;\n }\n }\n\n @media (min-width: 1900px) {\n [data-component="@design-system-extras/resume"] [data-slot="content"] {\n grid-column-start: profile-summary;\n grid-column-end: content;\n grid-row-start: content;\n grid-row-end: content;\n }\n }\n '),e.createElement(n.ProfileCard,r({"data-scroll":!0,"data-slot":"profile-summary",activeTags:x,onTagClick:v,translations:l,surface:"primary"},s,a)),e.createElement("header",{className:"actions","data-slot":"actions","data-surface":"primary"},e.createElement(n.Tabs,{tabs:E,activeTabId:h||"All",onTabClick:(e,t)=>f(t.id),style:{borderBottom:g.length?"var(--header-border-bottom)":void 0}}),e.createElement("div",{className:"secondary-actions"},i.map(({label:t,contextMenu:a,...r})=>a?e.createElement(n.Dropdown,{trigger:e.createElement(n.Button,r,t)},e.createElement(n.ContextMenu,null,a.map(t=>e.createElement(n.ContextMenu.Item,t,t.label)))):e.createElement(n.Button,r,t))),!!g.length&&e.createElement(n.Tags,{tags:g,activeTags:x,onSelect:v,style:{padding:"var(--filter-padding)",display:"flex"}})),e.createElement("main",{className:"content","data-slot":"content","data-scroll":!0},w.filter(e=>!!e.experiences.length).map(({title:t,experiences:a})=>e.createElement("section",{className:"content-section",key:t},e.createElement(n.Title,{variant:"primary",style:{textAlign:"center"}},t),e.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-l)"}},a.map(t=>e.createElement(n.ResumeExperience,{key:t.id||t.title,title:t.title,subTitle:t.subTitle,date:t.date,description:t.description,website:t.website,github:t.github,tags:t.tags})))))))},exports.StandardLayout=({logo:t,headerActions:a,headerAccentBorder:o=!0,navigation:l,maxWidth:s="medium",copyright:c,footer:m,children:d,...p})=>{const u=[o&&{id:"accent-border",style:{height:"4px",position:"sticky",zIndex:"10",top:"0",background:"var(--separator-accent)"}},(t||a)&&{id:"header",surface:"primary",style:{padding:"var(--space-s) var(--space-l)",width:"100%"},render:()=>e.createElement(n.Header,{logo:t,actions:a})},l&&{id:"navigation",surface:"primary",style:{height:"55px",position:"sticky",top:"4px",width:"100%",zIndex:"10"},render:()=>e.createElement(n.Tabs,{tabs:l,style:{height:"100%"}})},{id:"outlet",as:"main",maxWidth:"full",style:{gridArea:"content"},render:()=>d},m&&{id:"footer",surface:m.surface,as:"footer",style:{padding:"var(--space-xl) var(--space-m)"},render:()=>e.createElement(i,{columns:m.columns})},c&&{id:"footer-section-copyright",surface:"alt-secondary",style:{padding:"var(--space-m)",textAlign:"center"},render:()=>e.createElement(n.Text,{variant:"small"},c)}].filter(e=>!!e);return e.createElement(n.Page,r({maxWidth:s,sections:u},p))},exports.ThemeDisplay=({theme:t={}})=>e.createElement(e.Fragment,null,e.createElement(d,{title:"Theme overview",titleVariant:"primary",titleAs:"h1",text:"\n Here you can find an overview of our patterns, colors, and components.\n Keep in mind that this is only an overview, for usage examples and documentation go to\n our Storybook page.\n "}),e.createElement(d,{title:"Colors",text:"\n Here you can find an overview of our patterns, colors, and components.\n Keep in mind that this is only an overview, for usage examples and documentation go to\n our Storybook page.\n "},e.createElement(n.View,{layout:"row-wrap",gap:"xl"},Object.entries(t.color).map(([t])=>e.createElement("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"flex-start",flexWrap:"wrap",gap:"var(--space-l)"}},e.createElement("div",{variant:t,style:{width:"200px",height:"var(--space-xl)",backgroundColor:`var(--color-${t})`,boxShadow:"2px 2px 10px 0 hsla(0, 0%, 90%, .8)",borderRadius:"var(--space-xs)"}}),e.createElement(n.Text,null,t))))),e.createElement(d,{title:"Spacing",text:"\n Here you can find an overview of our patterns, colors, and components.\n Keep in mind that this is only an overview, for usage examples and documentation go to\n our Storybook page.\n "},e.createElement(n.View,{layout:"row",gap:"xl"},Object.entries(t.space).map(([t,a])=>e.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"flex-end",alignItems:"center"}},e.createElement("div",{style:{background:"var(--button-cta-background)",width:"20px",height:a,borderRadius:"var(--space-xxs)",marginBottom:"var(--space-m)"}}),e.createElement(n.Text,null,t," - ",a))))),e.createElement(d,{title:"Content sizes (max width)",text:"\n Here you can find an overview of our patterns, colors, and components.\n Keep in mind that this is only an overview, for usage examples and documentation go to\n our Storybook page.\n "},e.createElement(n.View,{gap:"s"},Object.entries(t["max-width"]).map(([t,a])=>e.createElement(n.View,{layout:"row",gap:"l"},e.createElement(n.Text,{style:{flexBasis:"90px"}},t," - ",a),e.createElement("div",{style:{background:"var(--color-accent)",width:"100%",maxWidth:`calc(var(--max-width-${t}) / 2)`,height:"20px",borderRadius:"var(--space-xxs)"}}))))),e.createElement(d,{title:"Surfaces",text:"\n Here you can find an overview of our patterns, colors, and components.\n Keep in mind that this is only an overview, for usage examples and documentation go to\n our Storybook page.\n "},e.createElement(n.View,{layout:"row-wrap",gap:"xl"},Object.entries(t.surface).map(([t,a])=>e.createElement("div",{style:{background:`var(--surface-${t})`,width:"300px",height:"300px",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"var(--space-s)",border:"1px solid var(--separator-primary)"}},e.createElement(n.Text,null,t))))),e.createElement(d,{title:"Separators",text:"\n Here you can find an overview of our patterns, colors, and components.\n Keep in mind that this is only an overview, for usage examples and documentation go to\n our Storybook page.\n "},e.createElement(n.View,{layout:"row",gap:"xl"},Object.entries(t.separator).map(([t])=>e.createElement("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"flex-start",flexWrap:"wrap",gap:"var(--space-l)",marginBottom:"var(--space-xl)"}},e.createElement("div",{variant:t,style:{width:"300px",height:"1px",backgroundColor:`var(--separator-${t})`}}),e.createElement(n.Text,null,t))))),e.createElement(d,{title:"Typography",text:"\n Here you can find an overview of our patterns, colors, and components.\n Keep in mind that this is only an overview, for usage examples and documentation go to\n our Storybook page.\n "},e.createElement(n.Title,{variant:"tertiary",style:{marginBottom:"var(--space-m)"}},"Titles"),e.createElement(n.View,{layout:"row-wrap",gap:"xl",placeItems:"center",style:{marginBottom:"var(--space-xl)"}},Object.entries(t.title).filter(([e])=>"default"!==e).map(([t])=>e.createElement("div",{style:{padding:"var(--space-l)",borderRadius:"var(--space-s)",border:"1px solid var(--separator-primary)",display:"flex",justifyContent:"center",alignItems:"center"}},e.createElement(n.Title,{variant:t},t)))),e.createElement(n.Title,{variant:"tertiary",style:{marginBottom:"var(--space-m)"}},"Text"),e.createElement(n.View,{layout:"row",gap:"xl",placeItems:"center"},Object.entries(t.text).map(([t])=>e.createElement("div",{style:{padding:"var(--space-l)",borderRadius:"var(--space-s)",border:"1px solid var(--separator-primary)"}},e.createElement(n.Text,{variant:t},t))))),e.createElement(d,{title:"Buttons",text:"\n Here you can find an overview of our patterns, colors, and components.\n Keep in mind that this is only an overview, for usage examples and documentation go to\n our Storybook page.\n "},e.createElement(n.View,{layout:"row-wrap",gap:"xl",alignItems:"center",justifyContent:"flex-start"},Object.entries(t.button).map(([t])=>e.createElement(n.Button,{variant:t,style:{flexGrow:"0",flexShrink:"0"}},t))))),exports.useResume=m;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import e,{useState as t,useEffect as a}from"react";import n from"react-markdown";import r from"react-syntax-highlighter";import{View as o,Button as l,Text as s,Title as i,Header as c,Tabs as m,Page as d,PageSection as p,Card as y,ProfileCard as g,Dropdown as u,ContextMenu as v,Tags as h,ResumeExperience as x,Image as f,Guide as E,Stack as b}from"@ossy/design-system";function w(){return w=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)({}).hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},w.apply(null,arguments)}var j={hljs:{display:"block",overflowX:"auto",padding:"0.5em",color:"#383a42",background:"#fafafa"},"hljs-comment":{color:"#a0a1a7",fontStyle:"italic"},"hljs-quote":{color:"#a0a1a7",fontStyle:"italic"},"hljs-doctag":{color:"#a626a4"},"hljs-keyword":{color:"#a626a4"},"hljs-formula":{color:"#a626a4"},"hljs-section":{color:"#e45649"},"hljs-name":{color:"#e45649"},"hljs-selector-tag":{color:"#e45649"},"hljs-deletion":{color:"#e45649"},"hljs-subst":{color:"#e45649"},"hljs-literal":{color:"#0184bb"},"hljs-string":{color:"#50a14f"},"hljs-regexp":{color:"#50a14f"},"hljs-addition":{color:"#50a14f"},"hljs-attribute":{color:"#50a14f"},"hljs-meta-string":{color:"#50a14f"},"hljs-built_in":{color:"#c18401"},"hljs-class .hljs-title":{color:"#c18401"},"hljs-attr":{color:"#986801"},"hljs-variable":{color:"#986801"},"hljs-template-variable":{color:"#986801"},"hljs-type":{color:"#986801"},"hljs-selector-class":{color:"#986801"},"hljs-selector-attr":{color:"#986801"},"hljs-selector-pseudo":{color:"#986801"},"hljs-number":{color:"#986801"},"hljs-symbol":{color:"#4078f2"},"hljs-bullet":{color:"#4078f2"},"hljs-link":{color:"#4078f2",textDecoration:"underline"},"hljs-meta":{color:"#4078f2"},"hljs-selector-id":{color:"#4078f2"},"hljs-title":{color:"#4078f2"},"hljs-emphasis":{fontStyle:"italic"},"hljs-strong":{fontWeight:"bold"}};const k={h1:({node:t,...a})=>e.createElement(i,w({id:B(a.children),as:"h1",variant:"primary"},a,{style:{marginBottom:"var(--space-l)"}})),h2:({node:t,...a})=>e.createElement(i,w({id:B(a.children),as:"h2",variant:"secondary"},a,{style:{marginBottom:"var(--space-m)",marginTop:"var(--space-l)"}})),h3:({node:t,...a})=>e.createElement(i,w({id:B(a.children),as:"h3",variant:"tertiary"},a,{style:{marginBottom:"var(--space-m)"}})),h4:({node:t,...a})=>e.createElement(i,w({id:B(a.children),as:"h4",variant:"tertiary"},a,{style:{marginBottom:"var(--space-m)"}})),h5:({node:t,...a})=>e.createElement(i,w({id:B(a.children),as:"h5",variant:"tertiary"},a,{style:{marginBottom:"var(--space-m)"}})),p:({node:t,...a})=>e.createElement(s,w({},a,{style:{marginBottom:"var(--space-m)"}})),ul:({node:t,...a})=>e.createElement("ul",w({},a,{style:{listStyle:"inside",paddingLeft:"var(--space-l)"}})),li:({node:t,...a})=>e.createElement(s,w({as:"li"},a,{style:{marginBottom:"var(--space-m)"}})),a:({node:t,...a})=>e.createElement(l,w({as:a.href?"a":"button"},a,{variant:"link"})),code:({node:t,className:a,...n})=>{const[l,s]=/language-(\w+)/.exec(a||"")||[];return!s?e.createElement(o,w({inset:"xs",surface:"secondary",roundness:"s",style:{display:"inline-block"}},n),e.createElement(r,w({style:{display:"inline",...j,hljs:{display:"inline",color:"#383a42",background:"transparent"}},language:s},n))):e.createElement(o,{inset:"m",surface:"secondary",roundness:"m","data-component":"MarkdownViewer"},e.createElement("style",{href:"@ossy/design-system-extras/markdown-viewer/MarkdownViewer",precedence:"high"},'\n [data-component="MarkdownViewer"] {\n margin: var(--space-s) 0;\n }\n\n [data-component="MarkdownViewer"] pre {\n margin: 0;\n }\n '),e.createElement(r,w({style:{...j,hljs:{display:"block",overflowX:"auto",color:"#383a42",background:"transparent"}},language:s},n)))}};function B(e){return e?e.toLowerCase().replace(/\s+/g,"-"):""}const W=({markdown:t,children:a,components:r={},...o})=>e.createElement(n,w({children:t||a,components:{...k,...r}},o)),C=({columns:t=[]})=>e.createElement(o,{layout:"row",placeContent:"normal space-between",gap:"xl"},t.map(t=>e.createElement("div",{style:{maxWidth:`var(--max-width-${t.maxWidth}, 100%)`}},e.createElement(i,{as:"h3",variant:"tertiary",style:{marginBottom:"var(--space-m)"}},t.title),!!t.text&&e.createElement(s,null,t.text),!!t.list&&e.createElement("ul",{key:t.title,style:{padding:"0"}},t.list.map(({label:t,...a})=>e.createElement("li",{key:t,style:{listStyle:"none"}},e.createElement(l,w({variant:"link"},a,{style:{marginBottom:"var(--space-m)"}}),t))))))),S=({logo:t,headerActions:a,headerAccentBorder:n=!0,navigation:r,maxWidth:o="medium",copyright:l,footer:i,children:p,...y})=>{const g=[n&&{id:"accent-border",style:{height:"4px",position:"sticky",zIndex:"10",top:"0",background:"var(--separator-accent)"}},(t||a)&&{id:"header",surface:"primary",style:{padding:"var(--space-s) var(--space-l)",width:"100%"},render:()=>e.createElement(c,{logo:t,actions:a})},r&&{id:"navigation",surface:"primary",style:{height:"55px",position:"sticky",top:"4px",width:"100%",zIndex:"10"},render:()=>e.createElement(m,{tabs:r,style:{height:"100%"}})},{id:"outlet",as:"main",maxWidth:"full",style:{gridArea:"content"},render:()=>p},i&&{id:"footer",surface:i.surface,as:"footer",style:{padding:"var(--space-xl) var(--space-m)"},render:()=>e.createElement(C,{columns:i.columns})},l&&{id:"footer-section-copyright",surface:"alt-secondary",style:{padding:"var(--space-m)",textAlign:"center"},render:()=>e.createElement(s,{variant:"small"},l)}].filter(e=>!!e);return e.createElement(d,w({maxWidth:o,sections:g},y))},A=({surface:t="primary",maxWidth:a="full",layout:n="off-center",cardVariant:r,cardSurface:l,header:s,children:i,content:c})=>e.createElement(p,{surface:t,maxWidth:a},e.createElement(o,{layout:n,style:{height:"100vh"}},s,e.createElement(y,{slot:"content",variant:r,style:{overflowY:"auto"},surface:l},c??i))),O=({surface:t="primary",layout:a="off-center-m",navigation:n=[],cardVariant:r,cardSurface:o,header:s,children:i,content:c,...m})=>e.createElement(p,w({layout:a,surface:t},m),s,e.createElement(y,{variant:r,surface:o,slot:"content",style:{display:"flex",flexDirection:"row",padding:"0"}},e.createElement("div",{style:{display:"flex",gap:"var(--space-s)",padding:"var(--space-l) var(--space-s)",flexDirection:"column",width:"180px",borderRight:"1px solid var(--separator-primary)"}},n.map(t=>e.createElement(l,w({},t,{style:{justifyContent:"flex-start"}})))),e.createElement("div",{style:{flexGrow:"1",padding:"var(--space-l)",overflowY:"auto"}},c??i))),T=({surface:t="primary",layout:a="off-center",cardVariant:n="decorated",tabs:r=[],content:l,children:s,...i})=>e.createElement(p,w({layout:a,surface:t},i),e.createElement(o,{style:{height:"100%",background:"var(--surface-linear-gradient)"}},e.createElement(y,{variant:n,slot:"content",style:{width:"100vw",padding:"0"}},e.createElement(m,{tabs:r,style:{height:"auto",borderBottom:"1px solid var(--separator-primary)"}}),e.createElement("div",{style:{padding:"var(--space-m)"}},l||s)))),I=(e,t)=>{const a=e=>e?.date?.split(" - ")?.[0]||"1900",n=new Date(a(e));return new Date(a(t))-n},D=(e=[])=>{e.sort(I);const[n,r]=t([]),[o,l]=t([]),[s,i]=t([]),[c,m]=t([]),[d,p]=t([]),[y,g]=t();Object.keys(e.flatMap(e=>e.tags).filter(e=>!!e).reduce((e,t)=>({[t]:"",...e}),{}));const u=Object.keys(e.reduce((e,t)=>({[t.typeOfExperience]:"",...e}),{}));a(()=>{let t=e;d.length&&(t=e.filter(e=>e?.tags?.map(e=>e.toLowerCase())?.some(e=>d.map(e=>e.toLowerCase()).includes(e)))),y&&(t=t.filter(e=>e.typeOfExperience===y));const a=(e=>e.reduce((e,t)=>(e[t.typeOfExperience||"Other"].push(t),e),{Work:[],Education:[],Project:[],Other:[]}))(t);r(a.Work),l(a.Education),i(a.Project),m(a.Other)},[d,e,y]);return{work:n,education:o,project:s,other:c,tags:[],categories:u,activeTags:d,toggleActiveTag:e=>{p(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},activeExperienceType:y,toggleActiveExperienceType:e=>{e!==y&&g("All"===e?void 0:e)}}},V=({status:t,profile:a,experiences:n,translations:r,profileCardProps:o={},actions:s=[]})=>{const{work:c,education:d,project:p,other:y,tags:f,categories:E,activeTags:b,toggleActiveTag:j,activeExperienceType:k,toggleActiveExperienceType:B}=D(n),W=[{id:"All",label:r.all},{id:"Work",label:r.work},{id:"Project",label:r.projects},{id:"Education",label:r.education},{id:"Other",label:r.other}].filter(e=>"All"===e.id?e:E.includes(e.id)),C=[{title:r.work,experiences:c},{title:r.projects,experiences:p},{title:r.education,experiences:d},{title:r.other,experiences:y}];return e.createElement("div",{"data-component":"@design-system-extras/resume","data-status":t},e.createElement("style",{href:"@design-system-extras/resume",precedence:"high"},'\n [data-component="@design-system-extras/resume"] {\n\n --padding: var(--resume-padding, 0);\n --background: var(--resume-background, transparent);\n --header-padding: var(--resume-header-padding, 8px 24px 8px 0);\n --header-justify-content: var(--resume-header-justify-content, center);\n --filter-padding: var(--resume-filter-padding, var(--space-s) var(--space-m));\n --content-background: var(--resume-content-background, transparent);\n\n background: var(--background);\n padding: var(--padding);\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: fit-content fit-content fit-content;\n grid-template-areas:\n "profile-summary"\n "actions"\n "content";\n }\n\n [data-component="@design-system-extras/resume"] [data-slot="actions"] {\n min-width: 0;\n box-sizing: border-box;\n grid-area: actions;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: var(--header-padding);\n }\n\n [data-component="@design-system-extras/resume"] [data-slot="actions"]::-webkit-scrollbar {\n display: none;\n }\n\n [data-component="@design-system-extras/resume"] .secondary-actions {\n display: none;\n gap: var(--space-s);\n }\n\n [data-component="@design-system-extras/resume"] [data-slot="profile-summary"] {\n grid-area: profile-summary;\n z-index: 1;\n }\n\n [data-component="@design-system-extras/resume"] [data-slot="content"] {\n display: flex;\n width: 100%;\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n grid-area: content;\n padding: var(--space-l) var(--space-m);\n margin: var(--content-margin);\n gap: var(--space-xl);\n background: var(--content-background);\n }\n\n [data-component="@design-system-extras/resume"] [data-animation="fade-in"] {\n opacity: 0;\n transition-property: opacity, transform;\n transition-duration: 1s, 1s;\n transition-timing-function: ease-in-out;\n transform: translateZ(0);\n }\n\n [data-component="@design-system-extras/resume"] [data-scroll] {\n scrollbar-width: none;\n overflow-y: auto;\n }\n\n [data-component="@design-system-extras/resume"] [data-scroll]::-webkit-scrollbar {\n display: none;\n }\n\n [data-component="@design-system-extras/resume"][data-status="Success"] [data-animation="fade-in"] {\n opacity: 1;\n }\n\n [data-component="@design-system-extras/resume"] .content-section {\n display: flex;\n flex-direction: column;\n gap: var(--space-l);\n width: 100%;\n max-width: 700px;\n }\n\n @media (min-width: 1200px) {\n [data-component="@design-system-extras/resume"] {\n height: 100vh;\n grid-template-columns: 400px 1fr;\n grid-template-rows: min-content 1fr;\n grid-template-areas:\n "profile-summary actions"\n "profile-summary content";\n }\n\n [data-component="@design-system-extras/resume"] [data-slot="actions"] {\n justify-content: space-between;\n }\n\n [data-component="@design-system-extras/resume"] .secondary-actions {\n display: flex;\n }\n }\n\n @media (min-width: 1900px) {\n [data-component="@design-system-extras/resume"] [data-slot="content"] {\n grid-column-start: profile-summary;\n grid-column-end: content;\n grid-row-start: content;\n grid-row-end: content;\n }\n }\n '),e.createElement(g,w({"data-scroll":!0,"data-slot":"profile-summary",activeTags:b,onTagClick:j,translations:r,surface:"primary"},o,a)),e.createElement("header",{className:"actions","data-slot":"actions","data-surface":"primary"},e.createElement(m,{tabs:W,activeTabId:k||"All",onTabClick:(e,t)=>B(t.id),style:{borderBottom:f.length?"var(--header-border-bottom)":void 0}}),e.createElement("div",{className:"secondary-actions"},s.map(({label:t,contextMenu:a,...n})=>a?e.createElement(u,{trigger:e.createElement(l,n,t)},e.createElement(v,null,a.map(t=>e.createElement(v.Item,t,t.label)))):e.createElement(l,n,t))),!!f.length&&e.createElement(h,{tags:f,activeTags:b,onSelect:j,style:{padding:"var(--filter-padding)",display:"flex"}})),e.createElement("main",{className:"content","data-slot":"content","data-scroll":!0},C.filter(e=>!!e.experiences.length).map(({title:t,experiences:a})=>e.createElement("section",{className:"content-section",key:t},e.createElement(i,{variant:"primary",style:{textAlign:"center"}},t),e.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-l)"}},a.map(t=>e.createElement(x,{key:t.id||t.title,title:t.title,subTitle:t.subTitle,date:t.date,description:t.description,website:t.website,github:t.github,tags:t.tags})))))))},H=({title:t,titleVariant:a="secondary",titleAs:n="h2",text:r,children:o,maxWidth:l="l",...c})=>e.createElement(p,w({maxWidth:l},c,{style:{padding:"var(--space-xl) var(--space-m)",borderBottom:"1px solid var(--separator-primary)"}}),e.createElement(i,{as:n,variant:a,style:{marginBottom:"var(--space-m)"}},t),e.createElement(s,{style:{maxWidth:"600px",marginBottom:"var(--space-xl)"}},r),o),N=({theme:t={}})=>e.createElement(e.Fragment,null,e.createElement(H,{title:"Theme overview",titleVariant:"primary",titleAs:"h1",text:"\n Here you can find an overview of our patterns, colors, and components.\n Keep in mind that this is only an overview, for usage examples and documentation go to\n our Storybook page.\n "}),e.createElement(H,{title:"Colors",text:"\n Here you can find an overview of our patterns, colors, and components.\n Keep in mind that this is only an overview, for usage examples and documentation go to\n our Storybook page.\n "},e.createElement(o,{layout:"row-wrap",gap:"xl"},Object.entries(t.color).map(([t])=>e.createElement("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"flex-start",flexWrap:"wrap",gap:"var(--space-l)"}},e.createElement("div",{variant:t,style:{width:"200px",height:"var(--space-xl)",backgroundColor:`var(--color-${t})`,boxShadow:"2px 2px 10px 0 hsla(0, 0%, 90%, .8)",borderRadius:"var(--space-xs)"}}),e.createElement(s,null,t))))),e.createElement(H,{title:"Spacing",text:"\n Here you can find an overview of our patterns, colors, and components.\n Keep in mind that this is only an overview, for usage examples and documentation go to\n our Storybook page.\n "},e.createElement(o,{layout:"row",gap:"xl"},Object.entries(t.space).map(([t,a])=>e.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"flex-end",alignItems:"center"}},e.createElement("div",{style:{background:"var(--button-cta-background)",width:"20px",height:a,borderRadius:"var(--space-xxs)",marginBottom:"var(--space-m)"}}),e.createElement(s,null,t," - ",a))))),e.createElement(H,{title:"Content sizes (max width)",text:"\n Here you can find an overview of our patterns, colors, and components.\n Keep in mind that this is only an overview, for usage examples and documentation go to\n our Storybook page.\n "},e.createElement(o,{gap:"s"},Object.entries(t["max-width"]).map(([t,a])=>e.createElement(o,{layout:"row",gap:"l"},e.createElement(s,{style:{flexBasis:"90px"}},t," - ",a),e.createElement("div",{style:{background:"var(--color-accent)",width:"100%",maxWidth:`calc(var(--max-width-${t}) / 2)`,height:"20px",borderRadius:"var(--space-xxs)"}}))))),e.createElement(H,{title:"Surfaces",text:"\n Here you can find an overview of our patterns, colors, and components.\n Keep in mind that this is only an overview, for usage examples and documentation go to\n our Storybook page.\n "},e.createElement(o,{layout:"row-wrap",gap:"xl"},Object.entries(t.surface).map(([t,a])=>e.createElement("div",{style:{background:`var(--surface-${t})`,width:"300px",height:"300px",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"var(--space-s)",border:"1px solid var(--separator-primary)"}},e.createElement(s,null,t))))),e.createElement(H,{title:"Separators",text:"\n Here you can find an overview of our patterns, colors, and components.\n Keep in mind that this is only an overview, for usage examples and documentation go to\n our Storybook page.\n "},e.createElement(o,{layout:"row",gap:"xl"},Object.entries(t.separator).map(([t])=>e.createElement("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"flex-start",flexWrap:"wrap",gap:"var(--space-l)",marginBottom:"var(--space-xl)"}},e.createElement("div",{variant:t,style:{width:"300px",height:"1px",backgroundColor:`var(--separator-${t})`}}),e.createElement(s,null,t))))),e.createElement(H,{title:"Typography",text:"\n Here you can find an overview of our patterns, colors, and components.\n Keep in mind that this is only an overview, for usage examples and documentation go to\n our Storybook page.\n "},e.createElement(i,{variant:"tertiary",style:{marginBottom:"var(--space-m)"}},"Titles"),e.createElement(o,{layout:"row-wrap",gap:"xl",placeItems:"center",style:{marginBottom:"var(--space-xl)"}},Object.entries(t.title).filter(([e])=>"default"!==e).map(([t])=>e.createElement("div",{style:{padding:"var(--space-l)",borderRadius:"var(--space-s)",border:"1px solid var(--separator-primary)",display:"flex",justifyContent:"center",alignItems:"center"}},e.createElement(i,{variant:t},t)))),e.createElement(i,{variant:"tertiary",style:{marginBottom:"var(--space-m)"}},"Text"),e.createElement(o,{layout:"row",gap:"xl",placeItems:"center"},Object.entries(t.text).map(([t])=>e.createElement("div",{style:{padding:"var(--space-l)",borderRadius:"var(--space-s)",border:"1px solid var(--separator-primary)"}},e.createElement(s,{variant:t},t))))),e.createElement(H,{title:"Buttons",text:"\n Here you can find an overview of our patterns, colors, and components.\n Keep in mind that this is only an overview, for usage examples and documentation go to\n our Storybook page.\n "},e.createElement(o,{layout:"row-wrap",gap:"xl",alignItems:"center",justifyContent:"flex-start"},Object.entries(t.button).map(([t])=>e.createElement(l,{variant:t,style:{flexGrow:"0",flexShrink:"0"}},t))))),R=({title:t,titleMaxWidth:a="800px",text:n,actions:r=[]})=>e.createElement("div",{"data-component":"hero"},e.createElement("style",{href:"@ossy/design-system-extras/hero",precedence:"high"},'\n [data-component="hero"] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n }\n\n @media (min-width: 820px) {\n [data-component="hero"] {\n /* min-height: 60vh; */\n flex: 0 0 auto;\n }\n }\n '),e.createElement(i,{variant:"display",style:{maxWidth:a,marginBottom:"var(--space-l)"}},t),e.createElement(s,{style:{marginBottom:"var(--space-l)"}},n),e.createElement("div",{style:{display:"flex",gap:"var(--space-m)"}},r.map(({label:t,...a})=>e.createElement(l,w({},a,{key:t}),t)))),K=({columns:t=[]})=>e.createElement(o,{layout:"row",placeContent:"normal space-between",gap:"xl",className:"footer"},e.createElement("style",{href:"@ossy/design-system-extras/footer",precedence:"high"},"\n .footer {\n padding: var(--space-s);\n }\n\n .footer .title {\n margin-bottom: var(--space-m);\n }\n\n .footer .list {\n padding: 0;\n }\n\n .footer .list-item {\n list-style: none;\n }\n "),t.map(t=>e.createElement("div",{style:{maxWidth:`var(--max-width-${t.maxWidth}, 100%)`}},e.createElement(i,{as:"h3",variant:"tertiary",className:"title",style:{color:"var(--color-primary)"}},t.title),!!t.text&&e.createElement(s,{style:{color:"var(--color-primary)"}},t.text),!!t.list&&e.createElement("ul",{className:"list",key:t.title},t.list.map(({label:t,...a})=>e.createElement("li",{className:"list-item",key:t},e.createElement(l,w({variant:"link"},a,{style:{marginBottom:"var(--space-m)"}}),t))))))),M=[{id:"about",surface:"decorated",style:{padding:"var(--space-xxl) var(--space-m)"},render:({about:t,socialProof:a})=>e.createElement(e.Fragment,null,e.createElement(o,{alignItems:"stretch",justifyContent:"center",style:{marginBottom:"var(--space-xl)"}},t.columns.map(({name:t,role:a,imgSrc:n,text:r})=>e.createElement("div",{key:t,style:{display:"flex",flexDirection:"column",justifyContent:"center"}},e.createElement(f,{key:t,src:n,style:{borderRadius:"50%",width:"100%",maxWidth:"200px",height:"auto",margin:"0 auto",marginBottom:"var(--space-l)"}}),e.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-s)",alignItems:"center",marginBottom:"var(--space-l)"}},e.createElement(i,{as:"h1",variant:"primary"},t),e.createElement(i,{as:"h2",variant:"lead"},a)),e.createElement(s,{style:{textAlign:"center",maxWidth:"600px",margin:"0 auto"}},r)))),e.createElement(s,{variant:"small",style:{marginBottom:"var(--space-l)",textAlign:"center"}},a.title),e.createElement(o,{layout:"row",justifyContent:"space-between",gap:"m"},a.columns.map(({title:t,logo:a})=>e.createElement("div",{key:t,style:{textAlign:"center"}},e.createElement(y,null,e.createElement(f,{src:a,style:{height:"20px",width:"auto"}}))))))},{id:"hero",surface:"primary",style:{padding:"var(--space-xxl) var(--space-m) var(--space-xl)"},render:({hero:t})=>e.createElement(R,t)},{id:"services",surface:"primary",maxWidth:"large",layout:"row",placeContent:"stretch space-around",gap:"xl",style:{borderBottom:"1px solid var(--separator-primary)",padding:"var(--space-xxl) var(--space-m)"},render:({services:t})=>e.createElement(e.Fragment,null,t.map(({title:t,text:a})=>e.createElement("div",{key:t,style:{textAlign:"center"}},e.createElement(i,{variant:"tertiary",style:{marginBottom:"var(--space-m)"}},t),e.createElement(s,{style:{maxWidth:"600px"}},a))))},{id:"projects",surface:"primary",style:{padding:"var(--space-xxl) var(--space-m) var(--space-xl)",minHeight:"60vh"},render:({projects:t})=>e.createElement(e.Fragment,null,e.createElement(E,{title:t.title,titleVariant:"display",text:t.text,style:{textAlign:"left",maxWidth:"600px",marginBottom:"var(--space-xl)"}}),t.categories.map(({title:t,text:a,links:n})=>e.createElement("div",{style:{marginBottom:"var(--space-xl)"}},e.createElement(i,{title:t,variant:"tertiary",style:{marginBottom:"var(--space-l)"}},t),e.createElement(s,null,a),e.createElement(b,null,n.map(t=>e.createElement(b,{horizontal:!0,style:{marginBottom:"var(--space-m)"}},t.map(t=>e.createElement(l,w({},t,{variant:"link",target:"_blank",style:{marginRight:"var(--space-m)"}})))))))))},{id:"contact",surface:"accent",style:{padding:"var(--space-xxl) var(--space-m)",borderBottom:"1px solid var(--separator-primary)"},render:({contact:t})=>e.createElement(K,{columns:t.columns})}];export{A as CardLayout,O as CardSidebar,T as CardTabs,M as LandingPage2020,W as MarkdownViewer,V as Resume,S as StandardLayout,N as ThemeDisplay,D as useResume};
|
package/package.json
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ossy/design-system-extras",
|
|
3
|
+
"repository": "github:ossy-se/packages",
|
|
4
|
+
"description": "Ossy's React Design System Extra Components",
|
|
5
|
+
"version": "0.0.1-beta",
|
|
6
|
+
"source": "src/index.js",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"main": "build/cjs/index.js",
|
|
9
|
+
"module": "build/esm/index.js",
|
|
10
|
+
"author": "Ossy <yourfriends@ossy.se> (https://ossy.se)",
|
|
11
|
+
"license": "MIT License",
|
|
12
|
+
"scripts": {
|
|
13
|
+
"start": "storybook dev -p 6006",
|
|
14
|
+
"build": "rollup -c rollup.config.js",
|
|
15
|
+
"build:addons2": "rollup -c ./src/addons/rollup.config.js",
|
|
16
|
+
"build:addons": "babel --no-babelrc babelrc.addons.js ./src/addons --out-dir ./storybook",
|
|
17
|
+
"test": "",
|
|
18
|
+
"build:storybook": "storybook build",
|
|
19
|
+
"lint": "eslint '**/*.(js|jsx)'",
|
|
20
|
+
"storybook": "storybook dev -p 6006",
|
|
21
|
+
"build-storybook": "storybook build"
|
|
22
|
+
},
|
|
23
|
+
"browserslist": {
|
|
24
|
+
"production": [
|
|
25
|
+
">0.2%",
|
|
26
|
+
"not dead",
|
|
27
|
+
"not op_mini all"
|
|
28
|
+
],
|
|
29
|
+
"development": [
|
|
30
|
+
"last 1 chrome version",
|
|
31
|
+
"last 1 firefox version",
|
|
32
|
+
"last 1 safari version"
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"@babel/cli": "^7.21.5",
|
|
37
|
+
"@babel/core": "^7.14.5",
|
|
38
|
+
"@babel/eslint-parser": "^7.15.8",
|
|
39
|
+
"@babel/preset-env": "^7.21.5",
|
|
40
|
+
"@babel/preset-react": "^7.24.1",
|
|
41
|
+
"@rollup/plugin-babel": "6.0.4",
|
|
42
|
+
"@rollup/plugin-commonjs": "^25.0.5",
|
|
43
|
+
"@rollup/plugin-node-resolve": "^15.3.0",
|
|
44
|
+
"@rollup/plugin-terser": "0.4.4",
|
|
45
|
+
"@rollup/plugin-typescript": "^11.1.5",
|
|
46
|
+
"@storybook/addon-essentials": "^8.6.12",
|
|
47
|
+
"@storybook/addon-interactions": "^8.6.12",
|
|
48
|
+
"@storybook/addon-onboarding": "^8.6.12",
|
|
49
|
+
"@storybook/blocks": "^8.6.12",
|
|
50
|
+
"@storybook/react": "^8.6.12",
|
|
51
|
+
"@storybook/react-vite": "^8.6.12",
|
|
52
|
+
"@storybook/test": "^8.6.12",
|
|
53
|
+
"@types/react": "18.2.79",
|
|
54
|
+
"babel-loader": "^9.1.3",
|
|
55
|
+
"prop-types": "^15.8.1",
|
|
56
|
+
"rollup": "^4.24.3",
|
|
57
|
+
"rollup-plugin-dts": "^6.1.0",
|
|
58
|
+
"rollup-plugin-peer-deps-external": "^2.2.4",
|
|
59
|
+
"rollup-plugin-postcss-modules": "^2.1.1",
|
|
60
|
+
"rollup-plugin-preserve-directives": "^0.4.0",
|
|
61
|
+
"storybook": "^8.6.12",
|
|
62
|
+
"tslib": "^2.6.2"
|
|
63
|
+
},
|
|
64
|
+
"dependencies": {
|
|
65
|
+
"@ossy/themes": "^0.0.12-alpha",
|
|
66
|
+
"moment": "^2.29.4"
|
|
67
|
+
},
|
|
68
|
+
"peerDependencies": {
|
|
69
|
+
"@ossy/design-system": "^0",
|
|
70
|
+
"react": "^19",
|
|
71
|
+
"react-dom": "^19",
|
|
72
|
+
"react-markdown": "^9.0.3",
|
|
73
|
+
"react-syntax-highlighter": "^5.8.0"
|
|
74
|
+
}
|
|
75
|
+
}
|
package/rollup.config.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import babel from '@rollup/plugin-babel'
|
|
2
|
+
import { nodeResolve as resolveDependencies } from '@rollup/plugin-node-resolve'
|
|
3
|
+
import resolveCommonJsDependencies from '@rollup/plugin-commonjs'
|
|
4
|
+
import removeOwnPeerDependencies from 'rollup-plugin-peer-deps-external'
|
|
5
|
+
import minifyJS from '@rollup/plugin-terser'
|
|
6
|
+
// import typescript from '@rollup/plugin-typescript'
|
|
7
|
+
import preserveDirectives from "rollup-plugin-preserve-directives"
|
|
8
|
+
|
|
9
|
+
export default [
|
|
10
|
+
{
|
|
11
|
+
input: 'src/index.js',
|
|
12
|
+
output: [
|
|
13
|
+
{
|
|
14
|
+
dir: 'build/cjs',
|
|
15
|
+
format: 'cjs'
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
dir: 'build/esm',
|
|
19
|
+
format: 'esm'
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
plugins: [
|
|
23
|
+
removeOwnPeerDependencies(),
|
|
24
|
+
resolveCommonJsDependencies(),
|
|
25
|
+
resolveDependencies(),
|
|
26
|
+
babel({
|
|
27
|
+
exclude: ['**/node_modules/**/*'],
|
|
28
|
+
presets: ['@babel/preset-react']
|
|
29
|
+
}),
|
|
30
|
+
preserveDirectives(),
|
|
31
|
+
minifyJS(),
|
|
32
|
+
// typescript({ tsconfig: "./tsconfig.json" }),
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
]
|
package/src/index.js
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import ReactMarkdown from 'react-markdown'
|
|
3
|
+
import SyntaxHighlighter from 'react-syntax-highlighter'
|
|
4
|
+
import atomOneLight from './styles/atom-one-light'
|
|
5
|
+
import { View, Button, Title, Text } from "@ossy/design-system"
|
|
6
|
+
|
|
7
|
+
const defaultComponents = {
|
|
8
|
+
'h1': ({ node, ...props }) => <Title id={asId(props.children)} as="h1" variant="primary" {...props} style={{ marginBottom: 'var(--space-l)' }} />,
|
|
9
|
+
'h2': ({ node, ...props }) => <Title id={asId(props.children)} as="h2" variant="secondary" {...props} style={{ marginBottom: 'var(--space-m)', marginTop: 'var(--space-l)' }} />,
|
|
10
|
+
'h3': ({ node, ...props }) => <Title id={asId(props.children)} as="h3" variant="tertiary" {...props} style={{ marginBottom: 'var(--space-m)' }} />,
|
|
11
|
+
'h4': ({ node, ...props }) => <Title id={asId(props.children)} as="h4" variant="tertiary" {...props} style={{ marginBottom: 'var(--space-m)' }} />,
|
|
12
|
+
'h5': ({ node, ...props }) => <Title id={asId(props.children)} as="h5" variant="tertiary" {...props} style={{ marginBottom: 'var(--space-m)' }} />,
|
|
13
|
+
'p': ({ node, ...props }) => <Text {...props} style={{ marginBottom: 'var(--space-m)' }} />,
|
|
14
|
+
'ul': ({ node, ...props }) => <ul {...props} style={{ listStyle: 'inside', paddingLeft: 'var(--space-l)' }} />,
|
|
15
|
+
'li': ({ node, ...props }) => <Text as="li" {...props} style={{ marginBottom: 'var(--space-m)' }}/>,
|
|
16
|
+
'a': ({ node, ...props }) => <Button as={props.href ? 'a' : 'button'} {...props} variant="link" />,
|
|
17
|
+
code: ({ node, className, ...props }) => {
|
|
18
|
+
const [_, language] = /language-(\w+)/.exec(className || '') || []
|
|
19
|
+
const inline = !language
|
|
20
|
+
|
|
21
|
+
if (inline) {
|
|
22
|
+
return (
|
|
23
|
+
<View inset="xs" surface="secondary" roundness="s" style={{ display: 'inline-block' }} {...props} >
|
|
24
|
+
<SyntaxHighlighter
|
|
25
|
+
style={{
|
|
26
|
+
display: 'inline',
|
|
27
|
+
...atomOneLight,
|
|
28
|
+
"hljs": {
|
|
29
|
+
display: 'inline',
|
|
30
|
+
"color": "#383a42",
|
|
31
|
+
"background": "transparent"
|
|
32
|
+
}}}
|
|
33
|
+
language={language}
|
|
34
|
+
{...props}
|
|
35
|
+
/>
|
|
36
|
+
</View>
|
|
37
|
+
)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return (
|
|
41
|
+
<View inset="m" surface="secondary" roundness="m" data-component="MarkdownViewer">
|
|
42
|
+
<style href="@ossy/design-system-extras/markdown-viewer/MarkdownViewer" precedence="high">
|
|
43
|
+
{`
|
|
44
|
+
[data-component="MarkdownViewer"] {
|
|
45
|
+
margin: var(--space-s) 0;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
[data-component="MarkdownViewer"] pre {
|
|
49
|
+
margin: 0;
|
|
50
|
+
}
|
|
51
|
+
`}
|
|
52
|
+
</style>
|
|
53
|
+
<SyntaxHighlighter
|
|
54
|
+
style={{
|
|
55
|
+
...atomOneLight,
|
|
56
|
+
"hljs": {
|
|
57
|
+
"display": "block",
|
|
58
|
+
"overflowX": "auto",
|
|
59
|
+
"color": "#383a42",
|
|
60
|
+
"background": "transparent"
|
|
61
|
+
}}}
|
|
62
|
+
language={language}
|
|
63
|
+
{...props}
|
|
64
|
+
/>
|
|
65
|
+
</View>
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function asId(str) {
|
|
72
|
+
if (!str) return ''
|
|
73
|
+
return str.toLowerCase().replace(/\s+/g, '-');
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export const MarkdownViewer = ({
|
|
77
|
+
markdown,
|
|
78
|
+
children,
|
|
79
|
+
components = {},
|
|
80
|
+
...props
|
|
81
|
+
}) =>
|
|
82
|
+
<ReactMarkdown
|
|
83
|
+
children={markdown || children}
|
|
84
|
+
components={{ ...defaultComponents, ...components }}
|
|
85
|
+
{...props}
|
|
86
|
+
/>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import { MarkdownViewer } from './MarkdownViewer.jsx'
|
|
3
|
+
|
|
4
|
+
export default {
|
|
5
|
+
title: 'Design System Extras/MarkdownViewer',
|
|
6
|
+
component: MarkdownViewer,
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const Story = props => <MarkdownViewer {...props} />
|
|
10
|
+
|
|
11
|
+
export const Default = Story.bind({})
|
|
12
|
+
Default.args = {
|
|
13
|
+
children: `
|
|
14
|
+
# Hello, this is an md doc
|
|
15
|
+
|
|
16
|
+
Let's get started with some documentation
|
|
17
|
+
|
|
18
|
+
## Getting started
|
|
19
|
+
|
|
20
|
+
\`\`\`javascript
|
|
21
|
+
npm install @ossy/cms-client-react
|
|
22
|
+
\`\`\`
|
|
23
|
+
|
|
24
|
+
\`\`\`javascript
|
|
25
|
+
import { WorkspaceProvider } from '@ossy/cms-client-react'
|
|
26
|
+
|
|
27
|
+
export const App = () => (
|
|
28
|
+
<WorkspaceProvider workspaceId={<yourWorkspaceId>}>
|
|
29
|
+
{//...}
|
|
30
|
+
</WorkspaceProvider>
|
|
31
|
+
)
|
|
32
|
+
\`\`\`
|
|
33
|
+
`
|
|
34
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './MarkdownViewer.jsx'
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
"hljs": {
|
|
3
|
+
"display": "block",
|
|
4
|
+
"overflowX": "auto",
|
|
5
|
+
"padding": "0.5em",
|
|
6
|
+
"color": "#383a42",
|
|
7
|
+
"background": "#fafafa"
|
|
8
|
+
},
|
|
9
|
+
"hljs-comment": {
|
|
10
|
+
"color": "#a0a1a7",
|
|
11
|
+
"fontStyle": "italic"
|
|
12
|
+
},
|
|
13
|
+
"hljs-quote": {
|
|
14
|
+
"color": "#a0a1a7",
|
|
15
|
+
"fontStyle": "italic"
|
|
16
|
+
},
|
|
17
|
+
"hljs-doctag": {
|
|
18
|
+
"color": "#a626a4"
|
|
19
|
+
},
|
|
20
|
+
"hljs-keyword": {
|
|
21
|
+
"color": "#a626a4"
|
|
22
|
+
},
|
|
23
|
+
"hljs-formula": {
|
|
24
|
+
"color": "#a626a4"
|
|
25
|
+
},
|
|
26
|
+
"hljs-section": {
|
|
27
|
+
"color": "#e45649"
|
|
28
|
+
},
|
|
29
|
+
"hljs-name": {
|
|
30
|
+
"color": "#e45649"
|
|
31
|
+
},
|
|
32
|
+
"hljs-selector-tag": {
|
|
33
|
+
"color": "#e45649"
|
|
34
|
+
},
|
|
35
|
+
"hljs-deletion": {
|
|
36
|
+
"color": "#e45649"
|
|
37
|
+
},
|
|
38
|
+
"hljs-subst": {
|
|
39
|
+
"color": "#e45649"
|
|
40
|
+
},
|
|
41
|
+
"hljs-literal": {
|
|
42
|
+
"color": "#0184bb"
|
|
43
|
+
},
|
|
44
|
+
"hljs-string": {
|
|
45
|
+
"color": "#50a14f"
|
|
46
|
+
},
|
|
47
|
+
"hljs-regexp": {
|
|
48
|
+
"color": "#50a14f"
|
|
49
|
+
},
|
|
50
|
+
"hljs-addition": {
|
|
51
|
+
"color": "#50a14f"
|
|
52
|
+
},
|
|
53
|
+
"hljs-attribute": {
|
|
54
|
+
"color": "#50a14f"
|
|
55
|
+
},
|
|
56
|
+
"hljs-meta-string": {
|
|
57
|
+
"color": "#50a14f"
|
|
58
|
+
},
|
|
59
|
+
"hljs-built_in": {
|
|
60
|
+
"color": "#c18401"
|
|
61
|
+
},
|
|
62
|
+
"hljs-class .hljs-title": {
|
|
63
|
+
"color": "#c18401"
|
|
64
|
+
},
|
|
65
|
+
"hljs-attr": {
|
|
66
|
+
"color": "#986801"
|
|
67
|
+
},
|
|
68
|
+
"hljs-variable": {
|
|
69
|
+
"color": "#986801"
|
|
70
|
+
},
|
|
71
|
+
"hljs-template-variable": {
|
|
72
|
+
"color": "#986801"
|
|
73
|
+
},
|
|
74
|
+
"hljs-type": {
|
|
75
|
+
"color": "#986801"
|
|
76
|
+
},
|
|
77
|
+
"hljs-selector-class": {
|
|
78
|
+
"color": "#986801"
|
|
79
|
+
},
|
|
80
|
+
"hljs-selector-attr": {
|
|
81
|
+
"color": "#986801"
|
|
82
|
+
},
|
|
83
|
+
"hljs-selector-pseudo": {
|
|
84
|
+
"color": "#986801"
|
|
85
|
+
},
|
|
86
|
+
"hljs-number": {
|
|
87
|
+
"color": "#986801"
|
|
88
|
+
},
|
|
89
|
+
"hljs-symbol": {
|
|
90
|
+
"color": "#4078f2"
|
|
91
|
+
},
|
|
92
|
+
"hljs-bullet": {
|
|
93
|
+
"color": "#4078f2"
|
|
94
|
+
},
|
|
95
|
+
"hljs-link": {
|
|
96
|
+
"color": "#4078f2",
|
|
97
|
+
"textDecoration": "underline"
|
|
98
|
+
},
|
|
99
|
+
"hljs-meta": {
|
|
100
|
+
"color": "#4078f2"
|
|
101
|
+
},
|
|
102
|
+
"hljs-selector-id": {
|
|
103
|
+
"color": "#4078f2"
|
|
104
|
+
},
|
|
105
|
+
"hljs-title": {
|
|
106
|
+
"color": "#4078f2"
|
|
107
|
+
},
|
|
108
|
+
"hljs-emphasis": {
|
|
109
|
+
"fontStyle": "italic"
|
|
110
|
+
},
|
|
111
|
+
"hljs-strong": {
|
|
112
|
+
"fontWeight": "bold"
|
|
113
|
+
}
|
|
114
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import { Title, Button, Text, View } from "@ossy/design-system"
|
|
3
|
+
|
|
4
|
+
export const Footer = ({
|
|
5
|
+
columns = [],
|
|
6
|
+
}) => {
|
|
7
|
+
return (
|
|
8
|
+
<View layout="row" placeContent="normal space-between" gap="xl">
|
|
9
|
+
{
|
|
10
|
+
columns.map(column => (
|
|
11
|
+
<div style={{ maxWidth: `var(--max-width-${column.maxWidth}, 100%)` }}>
|
|
12
|
+
<Title as="h3" variant="tertiary" style={{ marginBottom: 'var(--space-m)' }}>
|
|
13
|
+
{column.title}
|
|
14
|
+
</Title>
|
|
15
|
+
{
|
|
16
|
+
!!column.text && <Text>{column.text}</Text>
|
|
17
|
+
}
|
|
18
|
+
{
|
|
19
|
+
!!column.list && (
|
|
20
|
+
<ul key={column.title} style={{ padding: '0' }}>
|
|
21
|
+
{
|
|
22
|
+
column.list.map(({ label, ...anchorProps }) => (
|
|
23
|
+
<li key={label} style={{ listStyle: 'none' }}>
|
|
24
|
+
<Button variant="link" {...anchorProps} style={{ marginBottom: 'var(--space-m)' }}>
|
|
25
|
+
{label}
|
|
26
|
+
</Button>
|
|
27
|
+
</li>
|
|
28
|
+
))
|
|
29
|
+
}
|
|
30
|
+
</ul>
|
|
31
|
+
)
|
|
32
|
+
}
|
|
33
|
+
</div>
|
|
34
|
+
))
|
|
35
|
+
}
|
|
36
|
+
</View>
|
|
37
|
+
)
|
|
38
|
+
}
|