@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.
Files changed (64) hide show
  1. package/.storybook/main.js +19 -0
  2. package/.storybook/preview.jsx +35 -0
  3. package/build/cjs/index.js +1 -0
  4. package/build/esm/index.js +1 -0
  5. package/package.json +75 -0
  6. package/rollup.config.js +35 -0
  7. package/src/index.js +3 -0
  8. package/src/markdown-viewer/MarkdownViewer.jsx +86 -0
  9. package/src/markdown-viewer/MarkdownViewer.stories.jsx +34 -0
  10. package/src/markdown-viewer/index.js +1 -0
  11. package/src/markdown-viewer/styles/atom-one-light.js +114 -0
  12. package/src/router-layouts/Footer.jsx +38 -0
  13. package/src/router-layouts/StandardLayout.jsx +95 -0
  14. package/src/router-layouts/StandardLayout.stories.jsx +40 -0
  15. package/src/router-layouts/card/Card.layout.jsx +25 -0
  16. package/src/router-layouts/card/Card.layout.stories.jsx +15 -0
  17. package/src/router-layouts/card/index.js +1 -0
  18. package/src/router-layouts/card-sidebar/CardSidebar.jsx +48 -0
  19. package/src/router-layouts/card-sidebar/CardSidebar.stories.jsx +23 -0
  20. package/src/router-layouts/card-sidebar/index.js +1 -0
  21. package/src/router-layouts/card-tabs/CardTabs.jsx +35 -0
  22. package/src/router-layouts/card-tabs/CardTabs.stories.jsx +22 -0
  23. package/src/router-layouts/card-tabs/index.js +1 -0
  24. package/src/router-layouts/index.js +4 -0
  25. package/src/stories/Button.jsx +39 -0
  26. package/src/stories/Button.stories.js +49 -0
  27. package/src/stories/Configure.mdx +364 -0
  28. package/src/stories/Header.jsx +56 -0
  29. package/src/stories/Header.stories.js +29 -0
  30. package/src/stories/Page.jsx +69 -0
  31. package/src/stories/Page.stories.js +28 -0
  32. package/src/stories/assets/accessibility.png +0 -0
  33. package/src/stories/assets/accessibility.svg +1 -0
  34. package/src/stories/assets/addon-library.png +0 -0
  35. package/src/stories/assets/assets.png +0 -0
  36. package/src/stories/assets/avif-test-image.avif +0 -0
  37. package/src/stories/assets/context.png +0 -0
  38. package/src/stories/assets/discord.svg +1 -0
  39. package/src/stories/assets/docs.png +0 -0
  40. package/src/stories/assets/figma-plugin.png +0 -0
  41. package/src/stories/assets/github.svg +1 -0
  42. package/src/stories/assets/share.png +0 -0
  43. package/src/stories/assets/styling.png +0 -0
  44. package/src/stories/assets/testing.png +0 -0
  45. package/src/stories/assets/theming.png +0 -0
  46. package/src/stories/assets/tutorials.svg +1 -0
  47. package/src/stories/assets/youtube.svg +1 -0
  48. package/src/stories/button.css +30 -0
  49. package/src/stories/header.css +32 -0
  50. package/src/stories/page.css +68 -0
  51. package/src/templates/index.js +3 -0
  52. package/src/templates/landing-page/2020/Footer.jsx +59 -0
  53. package/src/templates/landing-page/2020/Hero.jsx +51 -0
  54. package/src/templates/landing-page/2020/LandingPage.jsx +180 -0
  55. package/src/templates/landing-page/2020/LandingPage.stories.jsx +190 -0
  56. package/src/templates/landing-page/2020/index.js +1 -0
  57. package/src/templates/landing-page/index.js +1 -0
  58. package/src/templates/resume/Resume.jsx +305 -0
  59. package/src/templates/resume/Resume.stories.jsx +237 -0
  60. package/src/templates/resume/index.js +2 -0
  61. package/src/templates/resume/useResume.js +85 -0
  62. package/src/templates/theme-display/ThemeDisplay.jsx +301 -0
  63. package/src/templates/theme-display/ThemeDisplay.stories.jsx +18 -0
  64. 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
+ }
@@ -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,3 @@
1
+ export * from './markdown-viewer'
2
+ export * from './router-layouts'
3
+ export * from './templates'
@@ -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
+ }