diff --git a/build/404.html b/build/404.html index 08de319..e7ecdb4 100644 --- a/build/404.html +++ b/build/404.html @@ -94,7 +94,7 @@ region: "eu", }); - + diff --git a/build/assets/index-21e460e6.js b/build/assets/index-c5126b8b.js similarity index 99% rename from build/assets/index-21e460e6.js rename to build/assets/index-c5126b8b.js index 3e2551d..e5da907 100644 --- a/build/assets/index-21e460e6.js +++ b/build/assets/index-c5126b8b.js @@ -469,7 +469,7 @@ Error generating stack: `+m.message+` `});++i0&&n.push({type:"text",value:` `}),n}function LS(e){let t=0,n=e.charCodeAt(t);for(;n===9||n===32;)t++,n=e.charCodeAt(t);return e.slice(t)}function AS(e,t){const n=wO(e,t),i=n.one(e,void 0),l=uO(n),s=Array.isArray(i)?{type:"root",children:i}:i||{type:"root",children:[]};return l&&s.children.push({type:"text",value:` -`},l),s}function CO(e,t){return e&&"run"in e?async function(n,i){const l=AS(n,{file:i,...t});await e.run(l,i)}:function(n,i){return AS(n,{file:i,...t||e})}}function NS(e){if(e)throw e}var Ec=Object.prototype.hasOwnProperty,SE=Object.prototype.toString,_S=Object.defineProperty,RS=Object.getOwnPropertyDescriptor,OS=function(t){return typeof Array.isArray=="function"?Array.isArray(t):SE.call(t)==="[object Array]"},zS=function(t){if(!t||SE.call(t)!=="[object Object]")return!1;var n=Ec.call(t,"constructor"),i=t.constructor&&t.constructor.prototype&&Ec.call(t.constructor.prototype,"isPrototypeOf");if(t.constructor&&!n&&!i)return!1;var l;for(l in t);return typeof l>"u"||Ec.call(t,l)},DS=function(t,n){_S&&n.name==="__proto__"?_S(t,n.name,{enumerable:!0,configurable:!0,value:n.newValue,writable:!0}):t[n.name]=n.newValue},MS=function(t,n){if(n==="__proto__")if(Ec.call(t,n)){if(RS)return RS(t,n).value}else return;return t[n]},PO=function e(){var t,n,i,l,s,a,f=arguments[0],d=1,h=arguments.length,g=!1;for(typeof f=="boolean"&&(g=f,f=arguments[1]||{},d=2),(f==null||typeof f!="object"&&typeof f!="function")&&(f={});da.length;let d;f&&a.push(l);try{d=e.apply(this,a)}catch(h){const g=h;if(f&&n)throw g;return l(g)}f||(d&&d.then&&typeof d.then=="function"?d.then(s,l):d instanceof Error?l(d):s(d))}function l(a,...f){n||(n=!0,t(a,...f))}function s(a){l(null,a)}}const Er={basename:LO,dirname:AO,extname:NO,join:_O,sep:"/"};function LO(e,t){if(t!==void 0&&typeof t!="string")throw new TypeError('"ext" argument must be a string');Iu(e);let n=0,i=-1,l=e.length,s;if(t===void 0||t.length===0||t.length>e.length){for(;l--;)if(e.codePointAt(l)===47){if(s){n=l+1;break}}else i<0&&(s=!0,i=l+1);return i<0?"":e.slice(n,i)}if(t===e)return"";let a=-1,f=t.length-1;for(;l--;)if(e.codePointAt(l)===47){if(s){n=l+1;break}}else a<0&&(s=!0,a=l+1),f>-1&&(e.codePointAt(l)===t.codePointAt(f--)?f<0&&(i=l):(f=-1,i=a));return n===i?i=a:i<0&&(i=e.length),e.slice(n,i)}function AO(e){if(Iu(e),e.length===0)return".";let t=-1,n=e.length,i;for(;--n;)if(e.codePointAt(n)===47){if(i){t=n;break}}else i||(i=!0);return t<0?e.codePointAt(0)===47?"/":".":t===1&&e.codePointAt(0)===47?"//":e.slice(0,t)}function NO(e){Iu(e);let t=e.length,n=-1,i=0,l=-1,s=0,a;for(;t--;){const f=e.codePointAt(t);if(f===47){if(a){i=t+1;break}continue}n<0&&(a=!0,n=t+1),f===46?l<0?l=t:s!==1&&(s=1):l>-1&&(s=-1)}return l<0||n<0||s===0||s===1&&l===n-1&&l===i+1?"":e.slice(l,n)}function _O(...e){let t=-1,n;for(;++t0&&e.codePointAt(e.length-1)===47&&(n+="/"),t?"/"+n:n}function OO(e,t){let n="",i=0,l=-1,s=0,a=-1,f,d;for(;++a<=e.length;){if(a2){if(d=n.lastIndexOf("/"),d!==n.length-1){d<0?(n="",i=0):(n=n.slice(0,d),i=n.length-1-n.lastIndexOf("/")),l=a,s=0;continue}}else if(n.length>0){n="",i=0,l=a,s=0;continue}}t&&(n=n.length>0?n+"/..":"..",i=2)}else n.length>0?n+="/"+e.slice(l+1,a):n=e.slice(l+1,a),i=a-l-1;l=a,s=0}else f===46&&s>-1?s++:s=-1}return n}function Iu(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}const zO={cwd:DO};function DO(){return"/"}function $m(e){return!!(e!==null&&typeof e=="object"&&"href"in e&&e.href&&"protocol"in e&&e.protocol&&e.auth===void 0)}function MO(e){if(typeof e=="string")e=new URL(e);else if(!$m(e)){const t=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code="ERR_INVALID_ARG_TYPE",t}if(e.protocol!=="file:"){const t=new TypeError("The URL must be of scheme file");throw t.code="ERR_INVALID_URL_SCHEME",t}return $O(e)}function $O(e){if(e.hostname!==""){const i=new TypeError('File URL host must be "localhost" or empty on darwin');throw i.code="ERR_INVALID_FILE_URL_HOST",i}const t=e.pathname;let n=-1;for(;++n0){let[S,...C]=g;const I=i[v][1];Mm(I)&&Mm(S)&&(S=vh(!0,I,S)),i[v]=[h,S,...C]}}}}const BO=new sy().freeze();function xh(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `parser`")}function Eh(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `compiler`")}function Ch(e,t){if(t)throw new Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function FS(e){if(!Mm(e)||typeof e.type!="string")throw new TypeError("Expected node, got `"+e+"`")}function jS(e,t,n){if(!n)throw new Error("`"+e+"` finished async. Use `"+t+"` instead")}function lc(e){return VO(e)?e:new kE(e)}function VO(e){return!!(e&&typeof e=="object"&&"message"in e&&"messages"in e)}function HO(e){return typeof e=="string"||bO(e)}function bO(e){return!!(e&&typeof e=="object"&&"byteLength"in e&&"byteOffset"in e)}const WO="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",US=[],BS={allowDangerousHtml:!0},QO=/^(https?|ircs?|mailto|xmpp)$/i,KO=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function xE(e){const t=e.allowedElements,n=e.allowElement,i=e.children||"",l=e.className,s=e.components,a=e.disallowedElements,f=e.rehypePlugins||US,d=e.remarkPlugins||US,h=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...BS}:BS,g=e.skipHtml,y=e.unwrapDisallowed,v=e.urlTransform||GO,S=BO().use(AR).use(d).use(CO,h).use(f),C=new kE;typeof i=="string"&&(C.value=i);for(const E of KO)Object.hasOwn(e,E.from)&&(""+E.from+(E.to?"use `"+E.to+"` instead":"remove it")+WO+E.id,void 0);const I=S.parse(C);let A=S.runSync(I,C);return l&&(A={type:"element",tagName:"div",properties:{className:l},children:A.type==="root"?A.children:[A]}),wE(A,x),uN(A,{Fragment:xo,components:s,ignoreInvalidStyle:!0,jsx:W,jsxs:_e,passKeys:!0,passNode:!0});function x(E,T,N){if(E.type==="raw"&&N&&typeof T=="number")return g?N.children.splice(T,1):N.children[T]={type:"text",value:E.value},T;if(E.type==="element"){let M;for(M in mh)if(Object.hasOwn(mh,M)&&Object.hasOwn(E.properties,M)){const _=E.properties[M],B=mh[M];(B===null||B.includes(E.tagName))&&(E.properties[M]=v(String(_||""),M,E))}}if(E.type==="element"){let M=t?!t.includes(E.tagName):a?a.includes(E.tagName):!1;if(!M&&n&&typeof T=="number"&&(M=!n(E,T,N)),M&&N&&typeof T=="number")return y&&E.children?N.children.splice(T,1,...E.children):N.children.splice(T,1),T}}}function GO(e){const t=e.indexOf(":"),n=e.indexOf("?"),i=e.indexOf("#"),l=e.indexOf("/");return t<0||l>-1&&t>l||n>-1&&t>n||i>-1&&t>i||QO.test(e.slice(0,t))?e:""}const Zs=({href:e,children:t})=>W("a",{href:e,target:"_blank",rel:"noopener noreferrer",style:{color:"inherit"},children:t}),EE=({project:e})=>{const{name:t,url:n,description:i,whatIDid:l,techStacks:s,startedAt:a,endedAt:f}=e,{font:d}=_r();return Kg(),_e(ut,{flexDirection:"column",style:{fontSize:"0.75rem"},children:[W(Zs,{href:n,children:W(Me,{font:Ge.SemiBold,size:d(1),children:t})}),_e(Me,{size:d(.875),children:[ji(new Date(a))," ~"," ",f?ji(new Date(f)):"Now"]}),W(xE,{children:i}),_e("ul",{style:{margin:"0px",paddingLeft:"20px"},children:[l.map(h=>W("li",{children:W(Me,{size:d(.75),children:h})},h)),s&&s.length>0&&W("li",{children:_e(Me,{size:d(.75),children:["사용 기술: ",s.map(h=>h).join(", ")]})})]})]})},YO=({organization:e})=>{const{name:t,color:n,url:i,job:l,startedAt:s,endedAt:a,projects:f}=e,{font:d}=_r();return _e($2,{children:[_e(ut,{flexDirection:"column",style:{borderLeft:`5px solid ${n||"gray"}`,paddingLeft:"10px"},children:[W(Zs,{href:i,children:W(Me,{font:Ge.Bold,size:d(1),children:t})}),W(Me,{size:d(.75),children:l}),_e(Me,{size:d(.75),children:[ji(new Date(s))," ~"," ",a?ji(new Date(a)):"Now"]})]}),W(ut,{flexDirection:"column",gap:"20px",children:f.filter(h=>h.isImportant).map(h=>W(EE,{project:h},h.name))})]})},XO=({})=>{const{t:e}=hr(),t=[...e("experience.experiences",{returnObjects:!0}),...e("current.organizations",{returnObjects:!0})].filter(n=>n.isImportant);return _e(xo,{children:[W(Vf,{children:"경력"}),W(lt,{height:"10px"}),W(ut,{flexDirection:"column",gap:"30px",children:t.map(n=>W(YO,{organization:n},n.name))})]})},JO=({})=>{const{t:e}=hr();return _e(xo,{children:[W(Vf,{children:"Side Projects"}),W(lt,{height:"10px"}),W(ut,{flexDirection:"column",gap:"20px",children:e("sideProject.sideProjects",{returnObjects:!0}).filter(t=>t.isImportant).map(t=>W(EE,{project:t},t.name))})]})},ZO=e=>{switch(e){case 1:return Ge.Thin;case 2:return Ge.Light;case 3:return Ge.Medium;case 4:return Ge.Bold;case 5:return Ge.Black;default:return Ge.Regular}},qO=[{name:"React",level:5},{name:"TypeScript",level:4},{name:"Python",level:3},{name:"NestJS",level:2},{name:"FastAPI",level:2},{name:"Flutter",level:2},{name:"C++",level:2},{name:"Kotlin",level:1},{name:"Docker",level:1},{name:"Rust",level:1},{name:"Go",level:1}],ez=({})=>(hr(),_e(xo,{children:[W(Vf,{children:"보유기술"}),W(lt,{height:"10px"}),W($f,{gridTemplateColumns:"1fr 1fr 1fr 1fr 1fr",gap:"0px",children:qO.map(e=>W(Me,{font:ZO(e.level),children:e.name},e.name))})]})),tz=({})=>{const{t:e}=hr(),{font:t}=_r();return _e(xo,{children:[W(Me,{as:"h1",font:Ge.Bold,size:t(2.5),children:e("title.name")}),W(Me,{font:Ge.Medium,size:t(.875),children:e("introduction")}),W(lt,{height:"20px"}),W(ut,{children:_e(Me,{size:t(1),children:[W(Zs,{href:"mailto:dohyun682@gmail.com",children:"dohyun682@gmail.com"})," ","| 010-3351-0168 |"," ",W(Zs,{href:"https://github.com/dohyun-ko",children:"github.com/dohyun-ko"})," ",W("br",{}),"Detailed Resume:"," ",W(Zs,{href:"https://dohyun.is-a.dev/resume",children:"dohyun.is-a.dev"})]})})]})},nz=()=>W(Hi,{children:_e(Xr,{width:"92%",children:[W(tz,{}),W(lt,{height:"30px"}),W(ez,{}),W(lt,{height:"30px"}),W(xA,{}),W(lt,{height:"30px"}),W(XO,{}),W(lt,{height:"30px"}),W(JO,{})]})}),CE=Ve($f)` +`},l),s}function CO(e,t){return e&&"run"in e?async function(n,i){const l=AS(n,{file:i,...t});await e.run(l,i)}:function(n,i){return AS(n,{file:i,...t||e})}}function NS(e){if(e)throw e}var Ec=Object.prototype.hasOwnProperty,SE=Object.prototype.toString,_S=Object.defineProperty,RS=Object.getOwnPropertyDescriptor,OS=function(t){return typeof Array.isArray=="function"?Array.isArray(t):SE.call(t)==="[object Array]"},zS=function(t){if(!t||SE.call(t)!=="[object Object]")return!1;var n=Ec.call(t,"constructor"),i=t.constructor&&t.constructor.prototype&&Ec.call(t.constructor.prototype,"isPrototypeOf");if(t.constructor&&!n&&!i)return!1;var l;for(l in t);return typeof l>"u"||Ec.call(t,l)},DS=function(t,n){_S&&n.name==="__proto__"?_S(t,n.name,{enumerable:!0,configurable:!0,value:n.newValue,writable:!0}):t[n.name]=n.newValue},MS=function(t,n){if(n==="__proto__")if(Ec.call(t,n)){if(RS)return RS(t,n).value}else return;return t[n]},PO=function e(){var t,n,i,l,s,a,f=arguments[0],d=1,h=arguments.length,g=!1;for(typeof f=="boolean"&&(g=f,f=arguments[1]||{},d=2),(f==null||typeof f!="object"&&typeof f!="function")&&(f={});da.length;let d;f&&a.push(l);try{d=e.apply(this,a)}catch(h){const g=h;if(f&&n)throw g;return l(g)}f||(d&&d.then&&typeof d.then=="function"?d.then(s,l):d instanceof Error?l(d):s(d))}function l(a,...f){n||(n=!0,t(a,...f))}function s(a){l(null,a)}}const Er={basename:LO,dirname:AO,extname:NO,join:_O,sep:"/"};function LO(e,t){if(t!==void 0&&typeof t!="string")throw new TypeError('"ext" argument must be a string');Iu(e);let n=0,i=-1,l=e.length,s;if(t===void 0||t.length===0||t.length>e.length){for(;l--;)if(e.codePointAt(l)===47){if(s){n=l+1;break}}else i<0&&(s=!0,i=l+1);return i<0?"":e.slice(n,i)}if(t===e)return"";let a=-1,f=t.length-1;for(;l--;)if(e.codePointAt(l)===47){if(s){n=l+1;break}}else a<0&&(s=!0,a=l+1),f>-1&&(e.codePointAt(l)===t.codePointAt(f--)?f<0&&(i=l):(f=-1,i=a));return n===i?i=a:i<0&&(i=e.length),e.slice(n,i)}function AO(e){if(Iu(e),e.length===0)return".";let t=-1,n=e.length,i;for(;--n;)if(e.codePointAt(n)===47){if(i){t=n;break}}else i||(i=!0);return t<0?e.codePointAt(0)===47?"/":".":t===1&&e.codePointAt(0)===47?"//":e.slice(0,t)}function NO(e){Iu(e);let t=e.length,n=-1,i=0,l=-1,s=0,a;for(;t--;){const f=e.codePointAt(t);if(f===47){if(a){i=t+1;break}continue}n<0&&(a=!0,n=t+1),f===46?l<0?l=t:s!==1&&(s=1):l>-1&&(s=-1)}return l<0||n<0||s===0||s===1&&l===n-1&&l===i+1?"":e.slice(l,n)}function _O(...e){let t=-1,n;for(;++t0&&e.codePointAt(e.length-1)===47&&(n+="/"),t?"/"+n:n}function OO(e,t){let n="",i=0,l=-1,s=0,a=-1,f,d;for(;++a<=e.length;){if(a2){if(d=n.lastIndexOf("/"),d!==n.length-1){d<0?(n="",i=0):(n=n.slice(0,d),i=n.length-1-n.lastIndexOf("/")),l=a,s=0;continue}}else if(n.length>0){n="",i=0,l=a,s=0;continue}}t&&(n=n.length>0?n+"/..":"..",i=2)}else n.length>0?n+="/"+e.slice(l+1,a):n=e.slice(l+1,a),i=a-l-1;l=a,s=0}else f===46&&s>-1?s++:s=-1}return n}function Iu(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}const zO={cwd:DO};function DO(){return"/"}function $m(e){return!!(e!==null&&typeof e=="object"&&"href"in e&&e.href&&"protocol"in e&&e.protocol&&e.auth===void 0)}function MO(e){if(typeof e=="string")e=new URL(e);else if(!$m(e)){const t=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code="ERR_INVALID_ARG_TYPE",t}if(e.protocol!=="file:"){const t=new TypeError("The URL must be of scheme file");throw t.code="ERR_INVALID_URL_SCHEME",t}return $O(e)}function $O(e){if(e.hostname!==""){const i=new TypeError('File URL host must be "localhost" or empty on darwin');throw i.code="ERR_INVALID_FILE_URL_HOST",i}const t=e.pathname;let n=-1;for(;++n0){let[S,...C]=g;const I=i[v][1];Mm(I)&&Mm(S)&&(S=vh(!0,I,S)),i[v]=[h,S,...C]}}}}const BO=new sy().freeze();function xh(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `parser`")}function Eh(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `compiler`")}function Ch(e,t){if(t)throw new Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function FS(e){if(!Mm(e)||typeof e.type!="string")throw new TypeError("Expected node, got `"+e+"`")}function jS(e,t,n){if(!n)throw new Error("`"+e+"` finished async. Use `"+t+"` instead")}function lc(e){return VO(e)?e:new kE(e)}function VO(e){return!!(e&&typeof e=="object"&&"message"in e&&"messages"in e)}function HO(e){return typeof e=="string"||bO(e)}function bO(e){return!!(e&&typeof e=="object"&&"byteLength"in e&&"byteOffset"in e)}const WO="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",US=[],BS={allowDangerousHtml:!0},QO=/^(https?|ircs?|mailto|xmpp)$/i,KO=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function xE(e){const t=e.allowedElements,n=e.allowElement,i=e.children||"",l=e.className,s=e.components,a=e.disallowedElements,f=e.rehypePlugins||US,d=e.remarkPlugins||US,h=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...BS}:BS,g=e.skipHtml,y=e.unwrapDisallowed,v=e.urlTransform||GO,S=BO().use(AR).use(d).use(CO,h).use(f),C=new kE;typeof i=="string"&&(C.value=i);for(const E of KO)Object.hasOwn(e,E.from)&&(""+E.from+(E.to?"use `"+E.to+"` instead":"remove it")+WO+E.id,void 0);const I=S.parse(C);let A=S.runSync(I,C);return l&&(A={type:"element",tagName:"div",properties:{className:l},children:A.type==="root"?A.children:[A]}),wE(A,x),uN(A,{Fragment:xo,components:s,ignoreInvalidStyle:!0,jsx:W,jsxs:_e,passKeys:!0,passNode:!0});function x(E,T,N){if(E.type==="raw"&&N&&typeof T=="number")return g?N.children.splice(T,1):N.children[T]={type:"text",value:E.value},T;if(E.type==="element"){let M;for(M in mh)if(Object.hasOwn(mh,M)&&Object.hasOwn(E.properties,M)){const _=E.properties[M],B=mh[M];(B===null||B.includes(E.tagName))&&(E.properties[M]=v(String(_||""),M,E))}}if(E.type==="element"){let M=t?!t.includes(E.tagName):a?a.includes(E.tagName):!1;if(!M&&n&&typeof T=="number"&&(M=!n(E,T,N)),M&&N&&typeof T=="number")return y&&E.children?N.children.splice(T,1,...E.children):N.children.splice(T,1),T}}}function GO(e){const t=e.indexOf(":"),n=e.indexOf("?"),i=e.indexOf("#"),l=e.indexOf("/");return t<0||l>-1&&t>l||n>-1&&t>n||i>-1&&t>i||QO.test(e.slice(0,t))?e:""}const Zs=({href:e,children:t})=>W("a",{href:e,target:"_blank",rel:"noopener noreferrer",style:{color:"inherit"},children:t}),EE=({project:e})=>{const{name:t,url:n,description:i,whatIDid:l,techStacks:s,startedAt:a,endedAt:f}=e,{font:d}=_r();return Kg(),_e(ut,{flexDirection:"column",style:{fontSize:"0.75rem"},children:[W(Zs,{href:n,children:W(Me,{font:Ge.SemiBold,size:d(1),children:t})}),_e(Me,{size:d(.75),children:[ji(new Date(a))," ~"," ",f?ji(new Date(f)):"Now"]}),W(xE,{children:i}),_e("ul",{style:{margin:"0px",paddingLeft:"20px"},children:[l.map(h=>W("li",{children:W(Me,{size:d(.75),children:h})},h)),s&&s.length>0&&W("li",{children:_e(Me,{size:d(.75),children:["사용 기술: ",s.map(h=>h).join(", ")]})})]})]})},YO=({organization:e})=>{const{name:t,color:n,url:i,job:l,startedAt:s,endedAt:a,projects:f}=e,{font:d}=_r();return _e($2,{children:[_e(ut,{flexDirection:"column",style:{borderLeft:`5px solid ${n||"gray"}`,paddingLeft:"10px"},children:[W(Zs,{href:i,children:W(Me,{font:Ge.Bold,size:d(1),children:t})}),W(Me,{size:d(.75),children:l}),_e(Me,{size:d(.75),children:[ji(new Date(s))," ~"," ",a?ji(new Date(a)):"Now"]})]}),W(ut,{flexDirection:"column",gap:"20px",children:f.filter(h=>h.isImportant).map(h=>W(EE,{project:h},h.name))})]})},XO=({})=>{const{t:e}=hr(),t=[...e("experience.experiences",{returnObjects:!0}),...e("current.organizations",{returnObjects:!0})].filter(n=>n.isImportant);return _e(xo,{children:[W(Vf,{children:"경력"}),W(lt,{height:"10px"}),W(ut,{flexDirection:"column",gap:"30px",children:t.map(n=>W(YO,{organization:n},n.name))})]})},JO=({})=>{const{t:e}=hr();return _e(xo,{children:[W(Vf,{children:"Side Projects"}),W(lt,{height:"10px"}),W(ut,{flexDirection:"column",gap:"20px",children:e("sideProject.sideProjects",{returnObjects:!0}).filter(t=>t.isImportant).map(t=>W(EE,{project:t},t.name))})]})},ZO=e=>{switch(e){case 1:return Ge.Thin;case 2:return Ge.Light;case 3:return Ge.Medium;case 4:return Ge.Bold;case 5:return Ge.Black;default:return Ge.Regular}},qO=[{name:"React",level:5},{name:"TypeScript",level:4},{name:"Python",level:3},{name:"NestJS",level:2},{name:"FastAPI",level:2},{name:"Flutter",level:2},{name:"C++",level:2},{name:"Kotlin",level:1},{name:"Docker",level:1},{name:"Rust",level:1},{name:"Go",level:1}],ez=({})=>(hr(),_e(xo,{children:[W(Vf,{children:"보유기술"}),W(lt,{height:"10px"}),W($f,{gridTemplateColumns:"1fr 1fr 1fr 1fr 1fr",gap:"0px",children:qO.map(e=>W(Me,{font:ZO(e.level),children:e.name},e.name))})]})),tz=({})=>{const{t:e}=hr(),{font:t}=_r();return _e(xo,{children:[W(Me,{as:"h1",font:Ge.Bold,size:t(2.5),children:e("title.name")}),W(Me,{font:Ge.Medium,size:t(.875),children:e("introduction")}),W(lt,{height:"20px"}),W(ut,{children:_e(Me,{size:t(1),children:[W(Zs,{href:"mailto:dohyun682@gmail.com",children:"dohyun682@gmail.com"})," ","| 010-3351-0168 |"," ",W(Zs,{href:"https://github.com/dohyun-ko",children:"github.com/dohyun-ko"})," ",W("br",{}),"Detailed Resume:"," ",W(Zs,{href:"https://dohyun.is-a.dev/resume",children:"dohyun.is-a.dev"})]})})]})},nz=()=>W(Hi,{children:_e(Xr,{width:"92%",children:[W(tz,{}),W(lt,{height:"30px"}),W(ez,{}),W(lt,{height:"30px"}),W(xA,{}),W(lt,{height:"30px"}),W(XO,{}),W(lt,{height:"30px"}),W(JO,{})]})}),CE=Ve($f)` gap: 40px; grid-template-columns: 280px 1fr; diff --git a/build/index.html b/build/index.html index 08de319..e7ecdb4 100644 --- a/build/index.html +++ b/build/index.html @@ -94,7 +94,7 @@ region: "eu", }); - + diff --git a/src/pages/home/printable/components/ProjectCard.tsx b/src/pages/home/printable/components/ProjectCard.tsx index 275521d..cbe1b65 100644 --- a/src/pages/home/printable/components/ProjectCard.tsx +++ b/src/pages/home/printable/components/ProjectCard.tsx @@ -30,7 +30,7 @@ const ProjectCard = ({ project }: ProjectCardProps) => { - + {formatYearMonth(new Date(startedAt))} ~{" "} {endedAt ? formatYearMonth(new Date(endedAt)) : "Now"}