diff --git a/404.html b/404.html index db56b44..c1653bc 100644 --- a/404.html +++ b/404.html @@ -1 +1 @@ -404: This page could not be found
Home
About
Activity
Projects
Lee Min Hyeong
+

404

This page could not be found.

\ No newline at end of file +404: This page could not be found
Home
About
Activity
Projects
Lee Min Hyeong
+

404

This page could not be found.

\ No newline at end of file diff --git a/Menu.png b/Menu.png new file mode 100644 index 0000000..41f39d5 Binary files /dev/null and b/Menu.png differ diff --git a/_next/static/e1Jns1jtqzbD5088_lbPB/_buildManifest.js b/_next/static/_BuredH-vPTO-PsE-skBU/_buildManifest.js similarity index 55% rename from _next/static/e1Jns1jtqzbD5088_lbPB/_buildManifest.js rename to _next/static/_BuredH-vPTO-PsE-skBU/_buildManifest.js index e556cc5..c9ef4a3 100644 --- a/_next/static/e1Jns1jtqzbD5088_lbPB/_buildManifest.js +++ b/_next/static/_BuredH-vPTO-PsE-skBU/_buildManifest.js @@ -1 +1 @@ -self.__BUILD_MANIFEST={__rewrites:{beforeFiles:[],afterFiles:[],fallback:[]},"/":["static/chunks/pages/index-4dcd280570196b31.js"],"/_error":["static/chunks/pages/_error-54de1933a164a1ff.js"],"/about":["static/chunks/pages/about-258362a9cb8d6940.js"],"/activity":["static/chunks/pages/activity-e617e3a3561fbc73.js"],"/project":["static/chunks/pages/project-84804e14a3d43850.js"],"/projects":["static/chunks/pages/projects-67965805470a1711.js"],sortedPages:["/","/_app","/_error","/about","/activity","/project","/projects"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); \ No newline at end of file +self.__BUILD_MANIFEST={__rewrites:{beforeFiles:[],afterFiles:[],fallback:[]},"/":["static/chunks/pages/index-d9e860357821cfd7.js"],"/_error":["static/chunks/pages/_error-54de1933a164a1ff.js"],"/about":["static/chunks/pages/about-83fba4d6fb40b2a9.js"],"/activity":["static/chunks/pages/activity-e617e3a3561fbc73.js"],"/project":["static/chunks/pages/project-d3cc3b5f924b0b07.js"],"/projects":["static/chunks/pages/projects-a75982bc91ac7a26.js"],sortedPages:["/","/_app","/_error","/about","/activity","/project","/projects"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); \ No newline at end of file diff --git a/_next/static/e1Jns1jtqzbD5088_lbPB/_ssgManifest.js b/_next/static/_BuredH-vPTO-PsE-skBU/_ssgManifest.js similarity index 100% rename from _next/static/e1Jns1jtqzbD5088_lbPB/_ssgManifest.js rename to _next/static/_BuredH-vPTO-PsE-skBU/_ssgManifest.js diff --git a/_next/static/chunks/pages/_app-5eb063f1f39333c9.js b/_next/static/chunks/pages/_app-5eb063f1f39333c9.js deleted file mode 100644 index a03d208..0000000 --- a/_next/static/chunks/pages/_app-5eb063f1f39333c9.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[888],{6840:function(e,t,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/_app",function(){return n(5759)}])},8872:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Image",{enumerable:!0,get:function(){return g}});let r=n(8754),o=n(1757),i=o._(n(7294)),s=r._(n(2636)),a=n(5471),c=n(3735),u=n(3341);n(4210);let l=r._(n(7746)),f={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"https://alreadynyeong.github.io/Portfolio/",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0};function d(e,t,n,r,o,i){let s=null==e?void 0:e.src;if(!e||e["data-loaded-src"]===s)return;e["data-loaded-src"]=s;let a="decode"in e?e.decode():Promise.resolve();a.catch(()=>{}).then(()=>{if(e.parentElement&&e.isConnected){if("blur"===t&&o(!0),null==n?void 0:n.current){let t=new Event("load");Object.defineProperty(t,"target",{writable:!1,value:e});let r=!1,o=!1;n.current({...t,nativeEvent:t,currentTarget:e,target:e,isDefaultPrevented:()=>r,isPropagationStopped:()=>o,persist:()=>{},preventDefault:()=>{r=!0,t.preventDefault()},stopPropagation:()=>{o=!0,t.stopPropagation()}})}(null==r?void 0:r.current)&&r.current(e)}})}function p(e){let[t,n]=i.version.split("."),r=parseInt(t,10),o=parseInt(n,10);return r>18||18===r&&o>=3?{fetchPriority:e}:{fetchpriority:e}}let h=(0,i.forwardRef)((e,t)=>{let{src:n,srcSet:r,sizes:o,height:s,width:a,decoding:c,className:u,style:l,fetchPriority:f,placeholder:h,loading:g,unoptimized:m,fill:v,onLoadRef:y,onLoadingCompleteRef:b,setBlurComplete:w,setShowAltText:S,onLoad:x,onError:C,...P}=e;return i.default.createElement("img",{...P,...p(f),loading:g,width:a,height:s,decoding:c,"data-nimg":v?"fill":"1",className:u,style:l,sizes:o,srcSet:r,src:n,ref:(0,i.useCallback)(e=>{t&&("function"==typeof t?t(e):"object"==typeof t&&(t.current=e)),e&&(C&&(e.src=e.src),e.complete&&d(e,h,y,b,w,m))},[n,h,y,b,w,C,m,t]),onLoad:e=>{let t=e.currentTarget;d(t,h,y,b,w,m)},onError:e=>{S(!0),"blur"===h&&w(!0),C&&C(e)}})}),g=(0,i.forwardRef)((e,t)=>{let n=(0,i.useContext)(u.ImageConfigContext),r=(0,i.useMemo)(()=>{let e=f||n||c.imageConfigDefault,t=[...e.deviceSizes,...e.imageSizes].sort((e,t)=>e-t),r=e.deviceSizes.sort((e,t)=>e-t);return{...e,allSizes:t,deviceSizes:r}},[n]),{onLoad:o,onLoadingComplete:d}=e,g=(0,i.useRef)(o);(0,i.useEffect)(()=>{g.current=o},[o]);let m=(0,i.useRef)(d);(0,i.useEffect)(()=>{m.current=d},[d]);let[v,y]=(0,i.useState)(!1),[b,w]=(0,i.useState)(!1),{props:S,meta:x}=(0,a.getImgProps)(e,{defaultLoader:l.default,imgConf:r,blurComplete:v,showAltText:b});return i.default.createElement(i.default.Fragment,null,i.default.createElement(h,{...S,unoptimized:x.unoptimized,placeholder:x.placeholder,fill:x.fill,onLoadRef:g,onLoadingCompleteRef:m,setBlurComplete:y,setShowAltText:w,ref:t}),x.priority?i.default.createElement(s.default,null,i.default.createElement("link",{key:"__nimg-"+S.src+S.srcSet+S.sizes,rel:"preload",as:"image",href:S.srcSet?void 0:S.src,imageSrcSet:S.srcSet,imageSizes:S.sizes,crossOrigin:S.crossOrigin,referrerPolicy:S.referrerPolicy,...p(S.fetchPriority)})):null)});("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5471:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getImgProps",{enumerable:!0,get:function(){return a}}),n(4210);let r=n(7757),o=n(3735);function i(e){return void 0!==e.default}function s(e){return void 0===e?e:"number"==typeof e?Number.isFinite(e)?e:NaN:"string"==typeof e&&/^[0-9]+$/.test(e)?parseInt(e,10):NaN}function a(e,t){var n;let a,c,u,{src:l,sizes:f,unoptimized:d=!1,priority:p=!1,loading:h,className:g,quality:m,width:v,height:y,fill:b=!1,style:w,onLoad:S,onLoadingComplete:x,placeholder:C="empty",blurDataURL:P,fetchPriority:I,layout:_,objectFit:E,objectPosition:j,lazyBoundary:A,lazyRoot:O,...k}=e,{imgConf:R,showAltText:N,blurComplete:T,defaultLoader:z}=t,$=R||o.imageConfigDefault;if("allSizes"in $)a=$;else{let e=[...$.deviceSizes,...$.imageSizes].sort((e,t)=>e-t),t=$.deviceSizes.sort((e,t)=>e-t);a={...$,allSizes:e,deviceSizes:t}}let D=k.loader||z;delete k.loader,delete k.srcSet;let M="__next_img_default"in D;if(M){if("custom"===a.loader)throw Error('Image with src "'+l+'" is missing "loader" prop.\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader')}else{let e=D;D=t=>{let{config:n,...r}=t;return e(r)}}if(_){"fill"===_&&(b=!0);let e={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[_];e&&(w={...w,...e});let t={responsive:"100vw",fill:"100vw"}[_];t&&!f&&(f=t)}let F="",L=s(v),G=s(y);if("object"==typeof(n=l)&&(i(n)||void 0!==n.src)){let e=i(l)?l.default:l;if(!e.src)throw Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received "+JSON.stringify(e));if(!e.height||!e.width)throw Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received "+JSON.stringify(e));if(c=e.blurWidth,u=e.blurHeight,P=P||e.blurDataURL,F=e.src,!b){if(L||G){if(L&&!G){let t=L/e.width;G=Math.round(e.height*t)}else if(!L&&G){let t=G/e.height;L=Math.round(e.width*t)}}else L=e.width,G=e.height}}let B=!p&&("lazy"===h||void 0===h);(!(l="string"==typeof l?l:F)||l.startsWith("data:")||l.startsWith("blob:"))&&(d=!0,B=!1),a.unoptimized&&(d=!0),M&&l.endsWith(".svg")&&!a.dangerouslyAllowSVG&&(d=!0),p&&(I="high");let W=s(m),Y=Object.assign(b?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:E,objectPosition:j}:{},N?{}:{color:"transparent"},w),H="blur"===C&&P&&!T?{backgroundSize:Y.objectFit||"cover",backgroundPosition:Y.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:'url("data:image/svg+xml;charset=utf-8,'+(0,r.getImageBlurSvg)({widthInt:L,heightInt:G,blurWidth:c,blurHeight:u,blurDataURL:P,objectFit:Y.objectFit})+'")'}:{},U=function(e){let{config:t,src:n,unoptimized:r,width:o,quality:i,sizes:s,loader:a}=e;if(r)return{src:n,srcSet:void 0,sizes:void 0};let{widths:c,kind:u}=function(e,t,n){let{deviceSizes:r,allSizes:o}=e;if(n){let e=/(^|\s)(1?\d?\d)vw/g,t=[];for(let r;r=e.exec(n);r)t.push(parseInt(r[2]));if(t.length){let e=.01*Math.min(...t);return{widths:o.filter(t=>t>=r[0]*e),kind:"w"}}return{widths:o,kind:"w"}}if("number"!=typeof t)return{widths:r,kind:"w"};let i=[...new Set([t,2*t].map(e=>o.find(t=>t>=e)||o[o.length-1]))];return{widths:i,kind:"x"}}(t,o,s),l=c.length-1;return{sizes:s||"w"!==u?s:"100vw",srcSet:c.map((e,r)=>a({config:t,src:n,quality:i,width:e})+" "+("w"===u?e:r+1)+u).join(", "),src:a({config:t,src:n,quality:i,width:c[l]})}}({config:a,src:l,unoptimized:d,width:L,quality:W,sizes:f,loader:D}),V={...k,loading:B?"lazy":h,fetchPriority:I,width:L,height:G,decoding:"async",className:g,style:{...Y,...H},sizes:U.sizes,srcSet:U.srcSet,src:U.src},Z={unoptimized:d,priority:p,placeholder:C,fill:b};return{props:V,meta:Z}}},7757:function(e,t){"use strict";function n(e){let{widthInt:t,heightInt:n,blurWidth:r,blurHeight:o,blurDataURL:i,objectFit:s}=e,a=r||t,c=o||n,u=i.startsWith("data:image/jpeg")?"%3CfeComponentTransfer%3E%3CfeFuncA type='discrete' tableValues='1 1'/%3E%3C/feComponentTransfer%3E%":"";return a&&c?"%3Csvg xmlns='http%3A//www.w3.org/2000/svg' viewBox='0 0 "+a+" "+c+"'%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='"+(r&&o?"1":"20")+"'/%3E"+u+"%3C/filter%3E%3Cimage preserveAspectRatio='none' filter='url(%23b)' x='0' y='0' height='100%25' width='100%25' href='"+i+"'/%3E%3C/svg%3E":"%3Csvg xmlns='http%3A//www.w3.org/2000/svg'%3E%3Cimage style='filter:blur(20px)' preserveAspectRatio='"+("contain"===s?"xMidYMid":"cover"===s?"xMidYMid slice":"none")+"' x='0' y='0' height='100%25' width='100%25' href='"+i+"'/%3E%3C/svg%3E"}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getImageBlurSvg",{enumerable:!0,get:function(){return n}})},2555:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{default:function(){return u},unstable_getImgProps:function(){return c}});let r=n(8754),o=n(5471),i=n(4210),s=n(8872),a=r._(n(7746)),c=e=>{(0,i.warnOnce)("Warning: unstable_getImgProps() is experimental and may change or be removed at any time. Use at your own risk.");let{props:t}=(0,o.getImgProps)(e,{defaultLoader:a.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"https://alreadynyeong.github.io/Portfolio/",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0}});for(let[e,n]of Object.entries(t))void 0===n&&delete t[e];return{props:t}},u=s.Image},7746:function(e,t){"use strict";function n(e){let{config:t,src:n,width:r,quality:o}=e;return t.path+"?url="+encodeURIComponent(n)+"&w="+r+"&q="+(o||75)}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r}}),n.__next_img_default=!0;let r=n},5759:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return z}});var r=n(5893),o=n(1016),i=n.n(o),s=n(9008),a=n.n(s),c=n(2729),u=n(7294),l=n(5675),f=n.n(l),d=n(1163),p=n.n(d),h=n(1686);let g={HOME:{path:"/",title:"Home"},ABOUT:{path:"/about",title:"About"},ACTIVITY:{path:"/activity",title:"Activity"},PROJECT:{path:"/projects",title:"Projects"}},m=[g.HOME,g.ABOUT,g.ACTIVITY,g.PROJECT],v={GIT:{path:"https://github.com/alreadynyeong",title:"GitHub"},MAIL:{path:"mailto:already.nyeong@gmail.com",title:"Mail"},Notion:{path:"https://www.notion.so/already-nyeong/Portfolio-debebb65bcf2427f87f58d0acba63de6?pvs=4",title:"Notion"}},y=[v.GIT,v.MAIL,v.Notion];function b(){let e=(0,c._)(["\n position: fixed;\n width: 130px;\n height: 155px;\n border: 1px solid black;\n border-radius: 20px;\n padding: 10px;\n background-color: white;\n top: 80px;\n right: 20px;\n > div {\n margin: 7px;\n }\n"]);return b=function(){return e},e}function w(){let e=(0,c._)(["\n font-size: 30px;\n font-weight: bold;\n cursor: pointer;\n &:hover {\n font-size: 40px;\n color: green;\n }\n"]);return w=function(){return e},e}let S=h.ZP.div.withConfig({componentId:"sc-c4dabe77-0"})(b()),x=h.ZP.div.withConfig({componentId:"sc-c4dabe77-1"})(w());var C=()=>(0,r.jsx)(S,{children:y.map(e=>(0,r.jsx)("div",{children:(0,r.jsx)("a",{href:e.path,children:(0,r.jsx)(x,{children:e.title})})},e.title))});function P(){let e=(0,c._)(["\n padding: 0px;\n width: 100%;\n height: 100px;\n display: flex;\n justify-content: space-between;\n position: fixed;\n box-shadow: 5px 0.2px 5px 1px lightgray;\n background-color: white;\n overflow: hidden;\n"]);return P=function(){return e},e}function I(){let e=(0,c._)(["\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 30px;\n padding-left: 30px;\n margin-right: 10px;\n"]);return I=function(){return e},e}function _(){let e=(0,c._)(["\n width: fit-content;\n height: fit-content;\n display: flex;\n align-items: center;\n border-bottom: 1px solid gray;\n padding: 10px;\n text-decoration: none;\n cursor: pointer;\n &:hover {\n color: green;\n }\n"]);return _=function(){return e},e}function E(){let e=(0,c._)(["\n display: flex;\n align-items: center;\n padding-right: 30px;\n font-size: 2.5rem;\n font-weight: bold;\n cursor: pointer;\n gap: 10px;\n > div {\n padding-top: 10px;\n"]);return E=function(){return e},e}let j=h.ZP.div.withConfig({componentId:"sc-db999dc9-0"})(P()),A=h.ZP.div.withConfig({componentId:"sc-db999dc9-1"})(I()),O=h.ZP.div.withConfig({componentId:"sc-db999dc9-2"})(_()),k=h.ZP.div.withConfig({componentId:"sc-db999dc9-3"})(E());var R=()=>{let[e,t]=(0,u.useState)(!1),n=(0,d.useRouter)().pathname;return(0,r.jsx)(r.Fragment,{children:(0,r.jsxs)(j,{children:[(0,r.jsx)(A,{children:m.map(e=>(0,r.jsx)(O,{onClick:()=>p().push(e.path),children:n===e.path?(0,r.jsx)("text",{style:{color:"green"},children:e.title}):(0,r.jsx)("text",{children:e.title})},e.title))}),(0,r.jsxs)(k,{children:[(0,r.jsx)("text",{children:"Lee Min Hyeong "}),(0,r.jsx)("div",{onClick:()=>t(!e),children:(0,r.jsx)(f(),{src:"https://alreadynyeong.github.io/Portfolio/Arrow".concat(e?"Up":"Down",".png"),alt:"+",width:30,height:30})})]}),e&&(0,r.jsx)(C,{})]})})};function N(){let e=(0,c._)(["\n html,\n body {\n padding: 0;\n margin: 0;\n font-family: 'Noto Sans KR', sans-serif;\n font-size: 16px;\n background-color: #fff;\n }\n a {\n color: inherit;\n text-decoration: none;\n }\n main {\n padding-top: 120px;\n"]);return N=function(){return e},e}n(3814);let T=(0,h.vJ)(N());function z(e){let{Component:t,pageProps:n}=e;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(T,{}),(0,r.jsx)(a(),{children:(0,r.jsx)("title",{children:"Portfolio"})}),(0,r.jsx)(R,{}),(0,r.jsx)("main",{className:i().className,children:(0,r.jsx)(t,{...n})})]})}},3814:function(){},1016:function(e){e.exports={style:{fontFamily:"'__Noto_Sans_KR_19de48', '__Noto_Sans_KR_Fallback_19de48'",fontStyle:"normal"},className:"__className_19de48"}},9008:function(e,t,n){e.exports=n(2636)},5675:function(e,t,n){e.exports=n(2555)},1163:function(e,t,n){e.exports=n(6885)},4155:function(e){var t,n,r,o=e.exports={};function i(){throw Error("setTimeout has not been defined")}function s(){throw Error("clearTimeout has not been defined")}function a(e){if(t===setTimeout)return setTimeout(e,0);if((t===i||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(n){try{return t.call(null,e,0)}catch(n){return t.call(this,e,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:i}catch(e){t=i}try{n="function"==typeof clearTimeout?clearTimeout:s}catch(e){n=s}}();var c=[],u=!1,l=-1;function f(){u&&r&&(u=!1,r.length?c=r.concat(c):l=-1,c.length&&d())}function d(){if(!u){var e=a(f);u=!0;for(var t=c.length;t;){for(r=c,c=[];++l1)for(var n=1;n-1&&!e.return)switch(e.type){case p:e.return=function e(t,n,r){var o;switch(o=n,45^S(t,0)?(((o<<2^S(t,0))<<2^S(t,1))<<2^S(t,2))<<2^S(t,3):0){case 5103:return l+"print-"+t+t;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return l+t+t;case 4789:return u+t+t;case 5349:case 4246:case 4810:case 6968:case 2756:return l+t+u+t+c+t+t;case 5936:switch(S(t,n+11)){case 114:return l+t+c+b(t,/[svh]\w+-[tblr]{2}/,"tb")+t;case 108:return l+t+c+b(t,/[svh]\w+-[tblr]{2}/,"tb-rl")+t;case 45:return l+t+c+b(t,/[svh]\w+-[tblr]{2}/,"lr")+t}case 6828:case 4268:case 2903:return l+t+c+t+t;case 6165:return l+t+c+"flex-"+t+t;case 5187:return l+t+b(t,/(\w+).+(:[^]+)/,l+"box-$1$2"+c+"flex-$1$2")+t;case 5443:return l+t+c+"flex-item-"+b(t,/flex-|-self/g,"")+(y(t,/flex-|baseline/)?"":c+"grid-row-"+b(t,/flex-|-self/g,""))+t;case 4675:return l+t+c+"flex-line-pack"+b(t,/align-content|flex-|-self/g,"")+t;case 5548:return l+t+c+b(t,"shrink","negative")+t;case 5292:return l+t+c+b(t,"basis","preferred-size")+t;case 6060:return l+"box-"+b(t,"-grow","")+l+t+c+b(t,"grow","positive")+t;case 4554:return l+b(t,/([^-])(transform)/g,"$1"+l+"$2")+t;case 6187:return b(b(b(t,/(zoom-|grab)/,l+"$1"),/(image-set)/,l+"$1"),t,"")+t;case 5495:case 3959:return b(t,/(image-set\([^]*)/,l+"$1$`$1");case 4968:return b(b(t,/(.+:)(flex-)?(.*)/,l+"box-pack:$3"+c+"flex-pack:$3"),/s.+-b[^;]+/,"justify")+l+t+t;case 4200:if(!y(t,/flex-|baseline/))return c+"grid-column-align"+x(t,n)+t;break;case 2592:case 3360:return c+b(t,"template-","")+t;case 4384:case 3616:if(r&&r.some(function(e,t){return n=t,y(e.props,/grid-\w+-end/)}))return~w(t+(r=r[n].value),"span")?t:c+b(t,"-start","")+t+c+"grid-row-span:"+(~w(r,"span")?y(r,/\d+/):+y(r,/\d+/)-+y(t,/\d+/))+";";return c+b(t,"-start","")+t;case 4896:case 4128:return r&&r.some(function(e){return y(e.props,/grid-\w+-start/)})?t:c+b(b(t,"-end","-span"),"span ","")+t;case 4095:case 3583:case 4068:case 2532:return b(t,/(.+)-inline(.+)/,l+"$1$2")+t;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(C(t)-1-n>6)switch(S(t,n+1)){case 109:if(45!==S(t,n+4))break;case 102:return b(t,/(.+:)(.+)-([^]+)/,"$1"+l+"$2-$3$1"+u+(108==S(t,n+3)?"$3":"$2-$3"))+t;case 115:return~w(t,"stretch")?e(b(t,"stretch","fill-available"),n,r)+t:t}break;case 5152:case 5920:return b(t,/(.+?):(\d+)(\s*\/\s*(span)?\s*(\d+))?(.*)/,function(e,n,r,o,i,s,a){return c+n+":"+r+a+(o?c+n+"-span:"+(i?s:+s-+r)+a:"")+t});case 4949:if(121===S(t,n+6))return b(t,":",":"+l)+t;break;case 6444:switch(S(t,45===S(t,14)?18:11)){case 120:return b(t,/(.+:)([^;\s!]+)(;|(\s+)?!.+)?/,"$1"+l+(45===S(t,14)?"inline-":"")+"box$3$1"+l+"$2$3$1"+c+"$2box$3")+t;case 100:return b(t,":",":"+c)+t}break;case 5719:case 2647:case 2135:case 3927:case 2391:return b(t,"scroll-","scroll-snap-")+t}return t}(e.value,e.length,n);return;case h:return F([N(e,{value:b(e.value,"@","@"+l)})],r);case d:if(e.length)return(n=e.props).map(function(t){switch(y(t,r=/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":T(N(e,{props:[b(t,/:(read-\w+)/,":"+u+"$1")]})),T(N(e,{props:[t]})),v(e,{props:I(n,r)});break;case"::placeholder":T(N(e,{props:[b(t,/:(plac\w+)/,":"+l+"input-$1")]})),T(N(e,{props:[b(t,/:(plac\w+)/,":"+u+"$1")]})),T(N(e,{props:[b(t,/:(plac\w+)/,c+"input-$1")]})),T(N(e,{props:[t]})),v(e,{props:I(n,r)})}return""}).join("")}}function B(e,t,n,r,o,i,s,a,c,u,l,f){for(var p=o-1,h=0===o?i:[""],m=h.length,v=0,y=0,w=0;v0?h[S]+" "+C:b(C,/&\f/g,h[S])).trim())&&(c[w++]=P);return R(e,t,n,0===o?d:a,c,u,l,f)}function W(e,t,n,r,o){return R(e,t,n,p,x(e,0,r),x(e,r+1,-1),r,o)}var Y={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},H=n(4155),U=void 0!==H&&void 0!==H.env&&(H.env.REACT_APP_SC_ATTR||H.env.SC_ATTR)||"data-styled",V="undefined"!=typeof window&&"HTMLElement"in window,Z=!!("boolean"==typeof SC_DISABLE_SPEEDY?SC_DISABLE_SPEEDY:void 0!==H&&void 0!==H.env&&void 0!==H.env.REACT_APP_SC_DISABLE_SPEEDY&&""!==H.env.REACT_APP_SC_DISABLE_SPEEDY?"false"!==H.env.REACT_APP_SC_DISABLE_SPEEDY&&H.env.REACT_APP_SC_DISABLE_SPEEDY:void 0!==H&&void 0!==H.env&&void 0!==H.env.SC_DISABLE_SPEEDY&&""!==H.env.SC_DISABLE_SPEEDY&&"false"!==H.env.SC_DISABLE_SPEEDY&&H.env.SC_DISABLE_SPEEDY),J={},q=Object.freeze([]),K=Object.freeze({});function X(e,t,n){return void 0===n&&(n=K),e.theme!==n.theme&&e.theme||t||n.theme}var Q=new Set(["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","use","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","marker","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"]),ee=/[!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~-]+/g,et=/(^-|-$)/g;function en(e){return e.replace(ee,"-").replace(et,"")}var er=/(a)(d)/gi,eo=function(e){return String.fromCharCode(e+(e>25?39:97))};function ei(e){var t,n="";for(t=Math.abs(e);t>52;t=t/52|0)n=eo(t%52)+n;return(eo(t%52)+n).replace(er,"$1-$2")}var es,ea=function(e,t){for(var n=t.length;n;)e=33*e^t.charCodeAt(--n);return e},ec=function(e){return ea(5381,e)};function eu(e){return"string"==typeof e}var el="function"==typeof Symbol&&Symbol.for,ef=el?Symbol.for("react.memo"):60115,ed=el?Symbol.for("react.forward_ref"):60112,ep={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},eh={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},eg={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},em=((es={})[ed]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},es[ef]=eg,es);function ev(e){return("type"in e&&e.type.$$typeof)===ef?eg:"$$typeof"in e?em[e.$$typeof]:ep}var ey=Object.defineProperty,eb=Object.getOwnPropertyNames,ew=Object.getOwnPropertySymbols,eS=Object.getOwnPropertyDescriptor,ex=Object.getPrototypeOf,eC=Object.prototype;function eP(e){return"function"==typeof e}function eI(e){return"object"==typeof e&&"styledComponentId"in e}function e_(e,t){return e&&t?"".concat(e," ").concat(t):e||t||""}function eE(e,t){if(0===e.length)return"";for(var n=e[0],r=1;r0?" Args: ".concat(t.join(", ")):""))}var ek=function(){function e(e){this.groupSizes=new Uint32Array(512),this.length=512,this.tag=e}return e.prototype.indexOfGroup=function(e){for(var t=0,n=0;n=this.groupSizes.length){for(var n=this.groupSizes,r=n.length,o=r;e>=o;)if((o<<=1)<0)throw eO(16,"".concat(e));this.groupSizes=new Uint32Array(o),this.groupSizes.set(n),this.length=o;for(var i=r;i=this.length||0===this.groupSizes[e])return t;for(var n=this.groupSizes[e],r=this.indexOfGroup(e),o=r+n,i=r;i=0){var n=document.createTextNode(t);return this.element.insertBefore(n,this.nodes[e]||null),this.length++,!0}return!1},e.prototype.deleteRule=function(e){this.element.removeChild(this.nodes[e]),this.length--},e.prototype.getRule=function(e){return e0&&(c+="".concat(e,","))}),r+="".concat(s).concat(a,'{content:"').concat(c,'"}').concat("/*!sc*/\n")}}})(o);return r}(o)})}return e.registerId=function(e){return ez(e)},e.prototype.reconstructWithOptions=function(t,n){return void 0===n&&(n=!0),new e(r(r({},this.options),t),this.gs,n&&this.names||void 0)},e.prototype.allocateGSInstance=function(e){return this.gs[e]=(this.gs[e]||0)+1},e.prototype.getTag=function(){var e,t,n,r;return this.tag||(this.tag=(n=(t=this.options).useCSSOMInjection,r=t.target,e=t.isServer?new eY(r):n?new eB(r):new eW(r),new ek(e)))},e.prototype.hasNameForId=function(e,t){return this.names.has(e)&&this.names.get(e).has(t)},e.prototype.registerName=function(e,t){if(ez(e),this.names.has(e))this.names.get(e).add(t);else{var n=new Set;n.add(t),this.names.set(e,n)}},e.prototype.insertRules=function(e,t,n){this.registerName(e,t),this.getTag().insertRules(ez(e),n)},e.prototype.clearNames=function(e){this.names.has(e)&&this.names.get(e).clear()},e.prototype.clearRules=function(e){this.getTag().clearGroup(ez(e)),this.clearNames(e)},e.prototype.clearTag=function(){this.tag=void 0},e}(),eZ=/&/g,eJ=/^\s*\/\/.*$/gm;function eq(e){var t,n,r,o=void 0===e?K:e,i=o.options,s=void 0===i?K:i,a=o.plugins,c=void 0===a?q:a,u=function(e,r,o){return o===n||o.startsWith(n)&&o.endsWith(n)&&o.replaceAll(n,"").length>0?".".concat(t):e},l=c.slice();l.push(function(e){e.type===d&&e.value.includes("&")&&(e.props[0]=e.props[0].replace(eZ,n).replace(r,u))}),s.prefix&&l.push(G),l.push(L);var p=function(e,o,i,a){void 0===o&&(o=""),void 0===i&&(i=""),void 0===a&&(a="&"),t=a,n=o,r=RegExp("\\".concat(n,"\\b"),"g");var c,u,d,p,h,g=e.replace(eJ,""),v=(h=function e(t,n,r,o,i,s,a,c,u){for(var l,d=0,p=0,h=a,g=0,v=0,y=0,I=1,j=1,N=1,T=0,F="",L=i,G=s,Y=o,H=F;j;)switch(y=T,T=z()){case 40:if(108!=y&&58==S(H,h-1)){-1!=w(H+=b(M(T),"&","&\f"),"&\f")&&(N=-1);break}case 34:case 39:case 91:H+=M(T);break;case 9:case 10:case 13:case 32:H+=function(e){for(;O=$();)if(O<33)z();else break;return D(e)>2||D(O)>3?"":" "}(y);break;case 92:H+=function(e,t){for(var n;--t&&z()&&!(O<48)&&!(O>102)&&(!(O>57)||!(O<65))&&(!(O>70)||!(O<97)););return n=A+(t<6&&32==$()&&32==z()),x(k,e,n)}(A-1,7);continue;case 47:switch($()){case 42:case 47:P(R(l=function(e,t){for(;z();)if(e+O===57)break;else if(e+O===84&&47===$())break;return"/*"+x(k,t,A-1)+"*"+m(47===e?e:z())}(z(),A),n,r,f,m(O),x(l,2,-2),0,u),u);break;default:H+="/"}break;case 123*I:c[d++]=C(H)*N;case 125*I:case 59:case 0:switch(T){case 0:case 125:j=0;case 59+p:-1==N&&(H=b(H,/\f/g,"")),v>0&&C(H)-h&&P(v>32?W(H+";",o,r,h-1,u):W(b(H," ","")+";",o,r,h-2,u),u);break;case 59:H+=";";default:if(P(Y=B(H,n,r,d,p,i,c,F,L=[],G=[],h,s),s),123===T){if(0===p)e(H,n,Y,Y,L,s,h,c,G);else switch(99===g&&110===S(H,3)?100:g){case 100:case 108:case 109:case 115:e(t,Y,Y,o&&P(B(t,Y,Y,0,0,i,c,F,i,L=[],h,G),G),i,G,h,c,o?L:G);break;default:e(H,Y,Y,Y,[""],G,0,c,G)}}}d=p=v=0,I=N=1,F=H="",h=a;break;case 58:h=1+C(H),v=y;default:if(I<1){if(123==T)--I;else if(125==T&&0==I++&&125==(O=A>0?S(k,--A):0,E--,10===O&&(E=1,_--),O))continue}switch(H+=m(T),T*I){case 38:N=p>0?1:(H+="\f",-1);break;case 44:c[d++]=(C(H)-1)*N,N=1;break;case 64:45===$()&&(H+=M(z())),g=$(),p=h=C(F=H+=function(e){for(;!D($());)z();return x(k,e,A)}(A)),T++;break;case 45:45===y&&2==C(H)&&(I=0)}}return s}("",null,null,null,[""],(p=d=i||o?"".concat(i," ").concat(o," { ").concat(g," }"):g,_=E=1,j=C(k=p),A=0,d=[]),0,[0],d),k="",h);s.namespace&&(v=function e(t,n){return t.map(function(t){return"rule"===t.type&&(t.value="".concat(n," ").concat(t.value),t.value=t.value.replaceAll(",",",".concat(n," ")),t.props=t.props.map(function(e){return"".concat(n," ").concat(e)})),Array.isArray(t.children)&&"@keyframes"!==t.type&&(t.children=e(t.children,n)),t})}(v,s.namespace));var y=[];return F(v,(u=(c=l.concat(function(e){var t;!e.root&&(e=e.return)&&(t=e,y.push(t))})).length,function(e,t,n,r){for(var o="",i=0;i="A"&&r<="Z"?t+="-"+r.toLowerCase():t+=r}return t.startsWith("ms-")?"-"+t:t}var e4=function(e){return null==e||!1===e||""===e},e6=function(e){var t=[];for(var n in e){var r=e[n];e.hasOwnProperty(n)&&!e4(r)&&(Array.isArray(r)&&r.isCss||eP(r)?t.push("".concat(e2(n),":"),r,";"):ej(r)?t.push.apply(t,o(o(["".concat(n," {")],e6(r),!1),["}"],!1)):t.push("".concat(e2(n),": ").concat(null==r||"boolean"==typeof r||""===r?"":"number"!=typeof r||0===r||n in Y||n.startsWith("--")?String(r).trim():"".concat(r,"px"),";")))}return t};function e9(e,t,n,r){return e4(e)?[]:eI(e)?[".".concat(e.styledComponentId)]:eP(e)?!eP(e)||e.prototype&&e.prototype.isReactComponent||!t?[e]:e9(e(t),t,n,r):e instanceof e3?n?(e.inject(n,r),[e.getName(r)]):[e]:ej(e)?e6(e):Array.isArray(e)?Array.prototype.concat.apply(q,e.map(function(e){return e9(e,t,n,r)})):[e.toString()]}function e7(e){for(var t=0;t>>0);if(!t.hasNameForId(this.componentId,i)){var s=n(o,".".concat(i),void 0,this.componentId);t.insertRules(this.componentId,i,s)}r=e_(r,i),this.staticRulesId=i}}else{for(var a=ea(this.baseHash,n.hash),c="",u=0;u>>0);t.hasNameForId(this.componentId,d)||t.insertRules(this.componentId,d,n(c,".".concat(d),void 0,this.componentId)),r=e_(r,d)}}return r},e}(),tt=i.createContext(void 0);tt.Consumer;var tn={};function tr(e,t,n){var o,s,a,c,u=eI(e),l=!eu(e),f=t.attrs,d=void 0===f?q:f,p=t.componentId,h=void 0===p?(o=t.displayName,s=t.parentComponentId,tn[a="string"!=typeof o?"sc":en(o)]=(tn[a]||0)+1,c="".concat(a,"-").concat(ei(ec("6.0.4"+a+tn[a])>>>0)),s?"".concat(s,"-").concat(c):c):p,g=(void 0===t.displayName&&(eu(e)||e.displayName||e.name),t.displayName&&t.componentId?"".concat(en(t.displayName),"-").concat(t.componentId):t.componentId||h),m=u&&e.attrs?e.attrs.concat(d).filter(Boolean):d,v=t.shouldForwardProp;if(u&&e.shouldForwardProp){var y=e.shouldForwardProp;if(t.shouldForwardProp){var b=t.shouldForwardProp;v=function(e,t){return y(e,t)&&b(e,t)}}else v=y}var w=new te(n,g,u?e.componentStyle:void 0),S=i.forwardRef(function(e,t){return function(e,t,n){var o,s=e.attrs,a=e.componentStyle,c=e.defaultProps,u=e.foldedComponentIds,l=e.styledComponentId,f=e.target,d=i.useContext(tt),p=e1(),h=e.shouldForwardProp||p.shouldForwardProp,g=function(e,t,n){for(var o,i=r(r({},t),{className:void 0,theme:n}),s=0;s2&&eV.registerId(this.componentId+e),this.removeStyles(e,n),this.createStyles(e,t,n,r)},e}();function tl(e){for(var t=[],n=1;n>>0)),c=new tu(s,a),u=function(e){var t=e1(),n=i.useContext(tt),r=i.useRef(t.styleSheet.allocateGSInstance(a)).current;return t.styleSheet.server&&l(r,e,t.styleSheet,n,t.stylis),(i.useInsertionEffect||i.useLayoutEffect)(function(){if(!t.styleSheet.server)return l(r,e,t.styleSheet,n,t.stylis),function(){return c.removeStyles(r,t.styleSheet)}},[r,e,t.styleSheet,n,t.stylis]),null};function l(e,t,n,o,i){if(c.isStatic)c.renderStyles(e,J,n,i);else{var s=r(r({},t),{theme:X(t,o,u.defaultProps)});c.renderStyles(e,s,n,i)}}return i.memo(u)}!function(){function e(){var e=this;this._emitSheetCSS=function(){var t=e.instance.toString(),r=n.nc,o=eE([r&&'nonce="'.concat(r,'"'),"".concat(U,'="true"'),"".concat("data-styled-version",'="').concat("6.0.4",'"')].filter(Boolean)," ");return"")},this.getStyleTags=function(){if(e.sealed)throw eO(2);return e._emitSheetCSS()},this.getStyleElement=function(){if(e.sealed)throw eO(2);var t,o=((t={})[U]="",t["data-styled-version"]="6.0.4",t.dangerouslySetInnerHTML={__html:e.instance.toString()},t),s=n.nc;return s&&(o.nonce=s),[i.createElement("style",r({},o,{key:"sc-0-0"}))]},this.seal=function(){e.sealed=!0},this.instance=new eV({isServer:!0}),this.sealed=!1}e.prototype.collectStyles=function(e){if(this.sealed)throw eO(2);return i.createElement(e5,{sheet:this.instance},e)},e.prototype.interleaveWithNodeStream=function(e){throw eO(3)}}()},2729:function(e,t,n){"use strict";function r(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}n.d(t,{_:function(){return r}})}},function(e){var t=function(t){return e(e.s=t)};e.O(0,[774,179],function(){return t(6840),t(6885)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/_next/static/chunks/pages/_app-7f0c27ca6171b18f.js b/_next/static/chunks/pages/_app-7f0c27ca6171b18f.js new file mode 100644 index 0000000..a878115 --- /dev/null +++ b/_next/static/chunks/pages/_app-7f0c27ca6171b18f.js @@ -0,0 +1,5 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[888],{6840:function(e,t,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/_app",function(){return n(7982)}])},8872:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Image",{enumerable:!0,get:function(){return m}});let r=n(8754),o=n(1757),i=o._(n(7294)),a=r._(n(2636)),s=n(5471),c=n(3735),u=n(3341);n(4210);let l=r._(n(7746)),f={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"https://alreadynyeong.github.io/Portfolio/",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0};function d(e,t,n,r,o,i){let a=null==e?void 0:e.src;if(!e||e["data-loaded-src"]===a)return;e["data-loaded-src"]=a;let s="decode"in e?e.decode():Promise.resolve();s.catch(()=>{}).then(()=>{if(e.parentElement&&e.isConnected){if("blur"===t&&o(!0),null==n?void 0:n.current){let t=new Event("load");Object.defineProperty(t,"target",{writable:!1,value:e});let r=!1,o=!1;n.current({...t,nativeEvent:t,currentTarget:e,target:e,isDefaultPrevented:()=>r,isPropagationStopped:()=>o,persist:()=>{},preventDefault:()=>{r=!0,t.preventDefault()},stopPropagation:()=>{o=!0,t.stopPropagation()}})}(null==r?void 0:r.current)&&r.current(e)}})}function p(e){let[t,n]=i.version.split("."),r=parseInt(t,10),o=parseInt(n,10);return r>18||18===r&&o>=3?{fetchPriority:e}:{fetchpriority:e}}let h=(0,i.forwardRef)((e,t)=>{let{src:n,srcSet:r,sizes:o,height:a,width:s,decoding:c,className:u,style:l,fetchPriority:f,placeholder:h,loading:m,unoptimized:y,fill:g,onLoadRef:v,onLoadingCompleteRef:b,setBlurComplete:x,setShowAltText:w,onLoad:S,onError:j,..._}=e;return i.default.createElement("img",{..._,...p(f),loading:m,width:s,height:a,decoding:c,"data-nimg":g?"fill":"1",className:u,style:l,sizes:o,srcSet:r,src:n,ref:(0,i.useCallback)(e=>{t&&("function"==typeof t?t(e):"object"==typeof t&&(t.current=e)),e&&(j&&(e.src=e.src),e.complete&&d(e,h,v,b,x,y))},[n,h,v,b,x,j,y,t]),onLoad:e=>{let t=e.currentTarget;d(t,h,v,b,x,y)},onError:e=>{w(!0),"blur"===h&&x(!0),j&&j(e)}})}),m=(0,i.forwardRef)((e,t)=>{let n=(0,i.useContext)(u.ImageConfigContext),r=(0,i.useMemo)(()=>{let e=f||n||c.imageConfigDefault,t=[...e.deviceSizes,...e.imageSizes].sort((e,t)=>e-t),r=e.deviceSizes.sort((e,t)=>e-t);return{...e,allSizes:t,deviceSizes:r}},[n]),{onLoad:o,onLoadingComplete:d}=e,m=(0,i.useRef)(o);(0,i.useEffect)(()=>{m.current=o},[o]);let y=(0,i.useRef)(d);(0,i.useEffect)(()=>{y.current=d},[d]);let[g,v]=(0,i.useState)(!1),[b,x]=(0,i.useState)(!1),{props:w,meta:S}=(0,s.getImgProps)(e,{defaultLoader:l.default,imgConf:r,blurComplete:g,showAltText:b});return i.default.createElement(i.default.Fragment,null,i.default.createElement(h,{...w,unoptimized:S.unoptimized,placeholder:S.placeholder,fill:S.fill,onLoadRef:m,onLoadingCompleteRef:y,setBlurComplete:v,setShowAltText:x,ref:t}),S.priority?i.default.createElement(a.default,null,i.default.createElement("link",{key:"__nimg-"+w.src+w.srcSet+w.sizes,rel:"preload",as:"image",href:w.srcSet?void 0:w.src,imageSrcSet:w.srcSet,imageSizes:w.sizes,crossOrigin:w.crossOrigin,referrerPolicy:w.referrerPolicy,...p(w.fetchPriority)})):null)});("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5471:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getImgProps",{enumerable:!0,get:function(){return s}}),n(4210);let r=n(7757),o=n(3735);function i(e){return void 0!==e.default}function a(e){return void 0===e?e:"number"==typeof e?Number.isFinite(e)?e:NaN:"string"==typeof e&&/^[0-9]+$/.test(e)?parseInt(e,10):NaN}function s(e,t){var n;let s,c,u,{src:l,sizes:f,unoptimized:d=!1,priority:p=!1,loading:h,className:m,quality:y,width:g,height:v,fill:b=!1,style:x,onLoad:w,onLoadingComplete:S,placeholder:j="empty",blurDataURL:_,fetchPriority:O,layout:P,objectFit:C,objectPosition:I,lazyBoundary:E,lazyRoot:k,...T}=e,{imgConf:A,showAltText:R,blurComplete:$,defaultLoader:M}=t,N=A||o.imageConfigDefault;if("allSizes"in N)s=N;else{let e=[...N.deviceSizes,...N.imageSizes].sort((e,t)=>e-t),t=N.deviceSizes.sort((e,t)=>e-t);s={...N,allSizes:e,deviceSizes:t}}let z=T.loader||M;delete T.loader,delete T.srcSet;let D="__next_img_default"in z;if(D){if("custom"===s.loader)throw Error('Image with src "'+l+'" is missing "loader" prop.\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader')}else{let e=z;z=t=>{let{config:n,...r}=t;return e(r)}}if(P){"fill"===P&&(b=!0);let e={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[P];e&&(x={...x,...e});let t={responsive:"100vw",fill:"100vw"}[P];t&&!f&&(f=t)}let L="",F=a(g),W=a(v);if("object"==typeof(n=l)&&(i(n)||void 0!==n.src)){let e=i(l)?l.default:l;if(!e.src)throw Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received "+JSON.stringify(e));if(!e.height||!e.width)throw Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received "+JSON.stringify(e));if(c=e.blurWidth,u=e.blurHeight,_=_||e.blurDataURL,L=e.src,!b){if(F||W){if(F&&!W){let t=F/e.width;W=Math.round(e.height*t)}else if(!F&&W){let t=W/e.height;F=Math.round(e.width*t)}}else F=e.width,W=e.height}}let G=!p&&("lazy"===h||void 0===h);(!(l="string"==typeof l?l:L)||l.startsWith("data:")||l.startsWith("blob:"))&&(d=!0,G=!1),s.unoptimized&&(d=!0),D&&l.endsWith(".svg")&&!s.dangerouslyAllowSVG&&(d=!0),p&&(O="high");let B=a(y),q=Object.assign(b?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:C,objectPosition:I}:{},R?{}:{color:"transparent"},x),H="blur"===j&&_&&!$?{backgroundSize:q.objectFit||"cover",backgroundPosition:q.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:'url("data:image/svg+xml;charset=utf-8,'+(0,r.getImageBlurSvg)({widthInt:F,heightInt:W,blurWidth:c,blurHeight:u,blurDataURL:_,objectFit:q.objectFit})+'")'}:{},Y=function(e){let{config:t,src:n,unoptimized:r,width:o,quality:i,sizes:a,loader:s}=e;if(r)return{src:n,srcSet:void 0,sizes:void 0};let{widths:c,kind:u}=function(e,t,n){let{deviceSizes:r,allSizes:o}=e;if(n){let e=/(^|\s)(1?\d?\d)vw/g,t=[];for(let r;r=e.exec(n);r)t.push(parseInt(r[2]));if(t.length){let e=.01*Math.min(...t);return{widths:o.filter(t=>t>=r[0]*e),kind:"w"}}return{widths:o,kind:"w"}}if("number"!=typeof t)return{widths:r,kind:"w"};let i=[...new Set([t,2*t].map(e=>o.find(t=>t>=e)||o[o.length-1]))];return{widths:i,kind:"x"}}(t,o,a),l=c.length-1;return{sizes:a||"w"!==u?a:"100vw",srcSet:c.map((e,r)=>s({config:t,src:n,quality:i,width:e})+" "+("w"===u?e:r+1)+u).join(", "),src:s({config:t,src:n,quality:i,width:c[l]})}}({config:s,src:l,unoptimized:d,width:F,quality:B,sizes:f,loader:z}),Q={...T,loading:G?"lazy":h,fetchPriority:O,width:F,height:W,decoding:"async",className:m,style:{...q,...H},sizes:Y.sizes,srcSet:Y.srcSet,src:Y.src},V={unoptimized:d,priority:p,placeholder:j,fill:b};return{props:Q,meta:V}}},7757:function(e,t){"use strict";function n(e){let{widthInt:t,heightInt:n,blurWidth:r,blurHeight:o,blurDataURL:i,objectFit:a}=e,s=r||t,c=o||n,u=i.startsWith("data:image/jpeg")?"%3CfeComponentTransfer%3E%3CfeFuncA type='discrete' tableValues='1 1'/%3E%3C/feComponentTransfer%3E%":"";return s&&c?"%3Csvg xmlns='http%3A//www.w3.org/2000/svg' viewBox='0 0 "+s+" "+c+"'%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='"+(r&&o?"1":"20")+"'/%3E"+u+"%3C/filter%3E%3Cimage preserveAspectRatio='none' filter='url(%23b)' x='0' y='0' height='100%25' width='100%25' href='"+i+"'/%3E%3C/svg%3E":"%3Csvg xmlns='http%3A//www.w3.org/2000/svg'%3E%3Cimage style='filter:blur(20px)' preserveAspectRatio='"+("contain"===a?"xMidYMid":"cover"===a?"xMidYMid slice":"none")+"' x='0' y='0' height='100%25' width='100%25' href='"+i+"'/%3E%3C/svg%3E"}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getImageBlurSvg",{enumerable:!0,get:function(){return n}})},2555:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{default:function(){return u},unstable_getImgProps:function(){return c}});let r=n(8754),o=n(5471),i=n(4210),a=n(8872),s=r._(n(7746)),c=e=>{(0,i.warnOnce)("Warning: unstable_getImgProps() is experimental and may change or be removed at any time. Use at your own risk.");let{props:t}=(0,o.getImgProps)(e,{defaultLoader:s.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"https://alreadynyeong.github.io/Portfolio/",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0}});for(let[e,n]of Object.entries(t))void 0===n&&delete t[e];return{props:t}},u=a.Image},7746:function(e,t){"use strict";function n(e){let{config:t,src:n,width:r,quality:o}=e;return t.path+"?url="+encodeURIComponent(n)+"&w="+r+"&q="+(o||75)}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r}}),n.__next_img_default=!0;let r=n},7982:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return H}});var r=n(5893),o=n(1016),i=n.n(o),a=n(9008),s=n.n(a),c=n(2729),u=n(7294),l=n(5675),f=n.n(l),d=n(1163),p=n.n(d),h=n(1852),m=n(1686);let y={HOME:{path:"/",title:"Home"},ABOUT:{path:"/about",title:"About"},ACTIVITY:{path:"/activity",title:"Activity"},PROJECT:{path:"/projects",title:"Projects"}},g=[y.HOME,y.ABOUT,y.ACTIVITY,y.PROJECT],v={GIT:{path:"https://github.com/alreadynyeong",title:"GitHub"},MAIL:{path:"mailto:already.nyeong@gmail.com",title:"Mail"},Notion:{path:"https://www.notion.so/already-nyeong/Portfolio-debebb65bcf2427f87f58d0acba63de6?pvs=4",title:"Notion"}},b=[v.GIT,v.MAIL,v.Notion];function x(){let e=(0,c._)(["\n position: fixed;\n width: 130px;\n height: 155px;\n border: 1px solid black;\n border-radius: 20px;\n padding: 10px;\n background-color: white;\n top: 80px;\n right: 20px;\n > div {\n margin: 7px;\n }\n"]);return x=function(){return e},e}function w(){let e=(0,c._)(["\n font-size: 30px;\n font-weight: bold;\n cursor: pointer;\n &:hover {\n font-size: 40px;\n color: green;\n }\n"]);return w=function(){return e},e}let S=m.ZP.div.withConfig({componentId:"sc-c4dabe77-0"})(x()),j=m.ZP.div.withConfig({componentId:"sc-c4dabe77-1"})(w());var _=()=>(0,r.jsx)(S,{children:b.map(e=>(0,r.jsx)("div",{children:(0,r.jsx)("a",{href:e.path,children:(0,r.jsx)(j,{children:e.title})})},e.title))});function O(){let e=(0,c._)(["\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100vh;\n z-index: 100;\n background-color: white;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n\n > div {\n margin-bottom: 20px;\n font-size: 2rem;\n font-weight: bold;\n cursor: pointer;\n }\n"]);return O=function(){return e},e}function P(){let e=(0,c._)(["\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: 30px;\n padding-left: 30px;\n margin-right: 10px;\n"]);return P=function(){return e},e}function C(){let e=(0,c._)(["\n width: fit-content;\n height: fit-content;\n display: flex;\n align-items: center;\n border-bottom: 1px solid gray;\n padding: 10px;\n text-decoration: none;\n cursor: pointer;\n &:hover {\n color: green;\n }\n"]);return C=function(){return e},e}var I=e=>{let{onClose:t}=e,n=(0,d.useRouter)(),o=(0,h.useMediaQuery)({query:"(max-width: 768px)"}),i=e=>{n.push(e),t()};return(0,r.jsx)(r.Fragment,{children:o&&(0,r.jsx)(E,{onClick:t,children:(0,r.jsx)(k,{children:g.map(e=>(0,r.jsx)(T,{onClick:()=>i(e.path),children:e.title},e.path))})})})};let E=m.ZP.div.withConfig({componentId:"sc-13276669-0"})(O()),k=m.ZP.div.withConfig({componentId:"sc-13276669-1"})(P()),T=m.ZP.div.withConfig({componentId:"sc-13276669-2"})(C());function A(){let e=(0,c._)(["\n padding: 0px;\n width: 100%;\n height: 100px;\n display: flex;\n justify-content: space-between;\n position: fixed;\n box-shadow: 5px 0.2px 5px 1px lightgray;\n background-color: white;\n overflow: hidden;\n"]);return A=function(){return e},e}function R(){let e=(0,c._)(["\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 30px;\n padding-left: 30px;\n margin-right: 10px;\n"]);return R=function(){return e},e}function $(){let e=(0,c._)(["\n width: fit-content;\n height: fit-content;\n display: flex;\n align-items: center;\n border-bottom: 1px solid gray;\n padding: 10px;\n text-decoration: none;\n cursor: pointer;\n &:hover {\n color: green;\n }\n"]);return $=function(){return e},e}function M(){let e=(0,c._)(["\n display: flex;\n align-items: center;\n padding-right: 30px;\n font-size: 2.5rem;\n font-weight: bold;\n cursor: pointer;\n gap: 10px;\n > div {\n padding-top: 10px;\n }\n @media (max-width: 768px) {\n font-size: 1.5rem;\n }\n"]);return M=function(){return e},e}function N(){let e=(0,c._)(["\n display: flex;\n justify-content: flex-start;\n align-items: center;\n padding-left: 30px;\n cursor: pointer;\n"]);return N=function(){return e},e}let z=m.ZP.div.withConfig({componentId:"sc-f217554e-0"})(A()),D=m.ZP.div.withConfig({componentId:"sc-f217554e-1"})(R()),L=m.ZP.div.withConfig({componentId:"sc-f217554e-2"})($()),F=m.ZP.div.withConfig({componentId:"sc-f217554e-3"})(M()),W=m.ZP.div.withConfig({componentId:"sc-f217554e-4"})(N());var G=()=>{let[e,t]=(0,u.useState)(!1),[n,o]=(0,u.useState)(!1),[i,a]=(0,u.useState)(!1),s=(0,d.useRouter)().pathname,c=(0,h.useMediaQuery)({query:"(max-width: 768px)"});return(0,u.useEffect)(()=>{a(c)},[]),(0,r.jsx)(r.Fragment,{children:(0,r.jsxs)(z,{children:[i?(0,r.jsx)(W,{onClick:()=>o(!n),children:(0,r.jsx)(f(),{src:"https://alreadynyeong.github.io/Portfolio/Menu.png",width:20,height:20,alt:""})}):(0,r.jsx)(D,{children:g.map(e=>(0,r.jsx)(L,{onClick:()=>p().push(e.path),children:s===e.path?(0,r.jsx)("text",{style:{color:"green"},children:e.title}):(0,r.jsx)("text",{children:e.title})},e.title))}),n&&(0,r.jsx)(I,{onClose:()=>{o(!1)}}),(0,r.jsxs)(F,{children:[(0,r.jsx)("text",{children:"Lee Min Hyeong "}),(0,r.jsx)("div",{onClick:()=>t(!e),children:(0,r.jsx)(f(),{src:"https://alreadynyeong.github.io/Portfolio/Arrow".concat(e?"Up":"Down",".png"),alt:"+",width:30,height:30})})]}),e&&(0,r.jsx)(_,{})]})})};function B(){let e=(0,c._)(["\n html,\n body {\n padding: 0;\n margin: 0;\n font-family: 'Noto Sans KR', sans-serif;\n font-size: 16px;\n background-color: #fff;\n }\n a {\n color: inherit;\n text-decoration: none;\n }\n main {\n padding-top: 120px;\n"]);return B=function(){return e},e}n(3814);let q=(0,m.vJ)(B());function H(e){let{Component:t,pageProps:n}=e;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(q,{}),(0,r.jsx)(s(),{children:(0,r.jsx)("title",{children:"Portfolio"})}),(0,r.jsx)(G,{}),(0,r.jsx)("main",{className:i().className,children:(0,r.jsx)(t,{...n})})]})}},3814:function(){},1016:function(e){e.exports={style:{fontFamily:"'__Noto_Sans_KR_19de48', '__Noto_Sans_KR_Fallback_19de48'",fontStyle:"normal"},className:"__className_19de48"}},9008:function(e,t,n){e.exports=n(2636)},5675:function(e,t,n){e.exports=n(2555)},1163:function(e,t,n){e.exports=n(6885)},4155:function(e){var t,n,r,o=e.exports={};function i(){throw Error("setTimeout has not been defined")}function a(){throw Error("clearTimeout has not been defined")}function s(e){if(t===setTimeout)return setTimeout(e,0);if((t===i||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(n){try{return t.call(null,e,0)}catch(n){return t.call(this,e,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:i}catch(e){t=i}try{n="function"==typeof clearTimeout?clearTimeout:a}catch(e){n=a}}();var c=[],u=!1,l=-1;function f(){u&&r&&(u=!1,r.length?c=r.concat(c):l=-1,c.length&&d())}function d(){if(!u){var e=s(f);u=!0;for(var t=c.length;t;){for(r=c,c=[];++l1)for(var n=1;n{var e={"./node_modules/css-mediaquery/index.js":(e,t)=>{"use strict";t.match=function(e,t){return s(e).some(function(e){var n=e.inverse,r="all"===e.type||t.type===e.type;if(r&&n||!(r||n))return!1;var o=e.expressions.every(function(e){var n=e.feature,r=e.modifier,o=e.value,i=t[n];if(!i)return!1;switch(n){case"orientation":case"scan":return i.toLowerCase()===o.toLowerCase();case"width":case"height":case"device-width":case"device-height":o=l(o),i=l(i);break;case"resolution":o=u(o),i=u(i);break;case"aspect-ratio":case"device-aspect-ratio":case"device-pixel-ratio":o=c(o),i=c(i);break;case"grid":case"color":case"color-index":case"monochrome":o=parseInt(o,10)||1,i=parseInt(i,10)||0}switch(r){case"min":return i>=o;case"max":return i<=o;default:return i===o}});return o&&!n||!o&&n})},t.parse=s;var n=/(?:(only|not)?\s*([^\s\(\)]+)(?:\s*and)?\s*)?(.+)?/i,r=/\(\s*([^\s\:\)]+)\s*(?:\:\s*([^\s\)]+))?\s*\)/,o=/^(?:(min|max)-)?(.+)/,i=/(em|rem|px|cm|mm|in|pt|pc)?$/,a=/(dpi|dpcm|dppx)?$/;function s(e){return e.split(",").map(function(e){var t=(e=e.trim()).match(n),i=t[1],a=t[2],s=t[3]||"",c={};return c.inverse=!!i&&"not"===i.toLowerCase(),c.type=a?a.toLowerCase():"all",s=s.match(/\([^\)]+\)/g)||[],c.expressions=s.map(function(e){var t=e.match(r),n=t[1].toLowerCase().match(o);return{modifier:n[1],feature:n[2],value:t[2]}}),c})}function c(e){var t,n=Number(e);return n||(n=(t=e.match(/^(\d+)\s*\/\s*(\d+)$/))[1]/t[2]),n}function u(e){var t=parseFloat(e);switch(String(e).match(a)[1]){case"dpcm":return t/2.54;case"dppx":return 96*t;default:return t}}function l(e){var t=parseFloat(e);switch(String(e).match(i)[1]){case"em":case"rem":return 16*t;case"cm":return 96*t/2.54;case"mm":return 96*t/2.54/10;case"in":return 96*t;case"pt":return 72*t;case"pc":return 72*t/12;default:return t}}},"./node_modules/hyphenate-style-name/index.js":(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=/[A-Z]/g,o=/^ms-/,i={};function a(e){return"-"+e.toLowerCase()}let s=function(e){if(i.hasOwnProperty(e))return i[e];var t=e.replace(r,a);return i[e]=o.test(t)?"-"+t:t}},"./node_modules/matchmediaquery/index.js":(e,t,n)=>{"use strict";var r=n(/*! css-mediaquery */"./node_modules/css-mediaquery/index.js").match,o="undefined"!=typeof window?window.matchMedia:null;function i(e,t,n){var i=this;if(o&&!n){var a=o.call(window,e);this.matches=a.matches,this.media=a.media,a.addListener(s)}else this.matches=r(e,t),this.media=e;function s(e){i.matches=e.matches,i.media=e.media}this.addListener=function(e){a&&a.addListener(e)},this.removeListener=function(e){a&&a.removeListener(e)},this.dispose=function(){a&&a.removeListener(s)}}e.exports=function(e,t,n){return new i(e,t,n)}},"./node_modules/object-assign/index.js":e=>{"use strict";/* +object-assign +(c) Sindre Sorhus +@license MIT +*/var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=!function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;var r=Object.getOwnPropertyNames(t).map(function(e){return t[e]});if("0123456789"!==r.join(""))return!1;var o={};if("abcdefghijklmnopqrst".split("").forEach(function(e){o[e]=e}),"abcdefghijklmnopqrst"!==Object.keys(Object.assign({},o)).join(""))return!1;return!0}catch(e){return!1}}()?function(e,o){for(var i,a,s=function(e){if(null==e)throw TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),c=1;c{"use strict";var r=function(){},o=n(/*! ./lib/ReactPropTypesSecret */"./node_modules/prop-types/lib/ReactPropTypesSecret.js"),i={},a=n(/*! ./lib/has */"./node_modules/prop-types/lib/has.js");function s(e,t,n,s,c){for(var u in e)if(a(e,u)){var l;try{if("function"!=typeof e[u]){var f=Error((s||"React class")+": "+n+" type `"+u+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof e[u]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw f.name="Invariant Violation",f}l=e[u](t,u,s,n,null,o)}catch(e){l=e}if(!l||l instanceof Error||r((s||"React class")+": type specification of "+n+" `"+u+"` is invalid; the type checker function must return `null` or an `Error` but returned a "+typeof l+". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument)."),l instanceof Error&&!(l.message in i)){i[l.message]=!0;var d=c?c():"";r("Failed "+n+" type: "+l.message+(null!=d?d:""))}}}r=function(e){var t="Warning: "+e;"undefined"!=typeof console&&console.error(t);try{throw Error(t)}catch(e){}},s.resetWarningCache=function(){i={}},e.exports=s},"./node_modules/prop-types/factoryWithTypeCheckers.js":(e,t,n)=>{"use strict";var r=n(/*! react-is */"./node_modules/react-is/index.js"),o=n(/*! object-assign */"./node_modules/object-assign/index.js"),i=n(/*! ./lib/ReactPropTypesSecret */"./node_modules/prop-types/lib/ReactPropTypesSecret.js"),a=n(/*! ./lib/has */"./node_modules/prop-types/lib/has.js"),s=n(/*! ./checkPropTypes */"./node_modules/prop-types/checkPropTypes.js"),c=function(){};function u(){return null}c=function(e){var t="Warning: "+e;"undefined"!=typeof console&&console.error(t);try{throw Error(t)}catch(e){}},e.exports=function(e,t){var n="function"==typeof Symbol&&Symbol.iterator,l="<>",f={array:h("array"),bigint:h("bigint"),bool:h("boolean"),func:h("function"),number:h("number"),object:h("object"),string:h("string"),symbol:h("symbol"),any:p(u),arrayOf:function(e){return p(function(t,n,r,o,a){if("function"!=typeof e)return new d("Property `"+a+"` of component `"+r+"` has invalid PropType notation inside arrayOf.");var s=t[n];if(!Array.isArray(s)){var c=y(s);return new d("Invalid "+o+" `"+a+"` of type `"+c+"` supplied to `"+r+"`, expected an array.")}for(var u=0;u1?c("Invalid arguments supplied to oneOf, expected an array, got "+arguments.length+" arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z])."):c("Invalid argument supplied to oneOf, expected an array."),u)},oneOfType:function(e){if(!Array.isArray(e))return c("Invalid argument supplied to oneOfType, expected an instance of array."),u;for(var t=0;t0?", expected one of type ["+c.join(", ")+"]":"";return new d("Invalid "+o+" `"+s+"` supplied to `"+r+"`"+f+".")})},shape:function(e){return p(function(t,n,r,o,a){var s=t[n],c=y(s);if("object"!==c)return new d("Invalid "+o+" `"+a+"` of type `"+c+"` supplied to `"+r+"`, expected `object`.");for(var u in e){var l=e[u];if("function"!=typeof l)return m(r,o,a,u,g(l));var f=l(s,u,r,o,a+"."+u,i);if(f)return f}return null})},exact:function(e){return p(function(t,n,r,s,c){var u=t[n],l=y(u);if("object"!==l)return new d("Invalid "+s+" `"+c+"` of type `"+l+"` supplied to `"+r+"`, expected `object`.");var f=o({},t[n],e);for(var p in f){var h=e[p];if(a(e,p)&&"function"!=typeof h)return m(r,s,c,p,g(h));if(!h)return new d("Invalid "+s+" `"+c+"` key `"+p+"` supplied to `"+r+"`.\nBad object: "+JSON.stringify(t[n],null," ")+"\nValid keys: "+JSON.stringify(Object.keys(e),null," "));var v=h(u,p,r,s,c+"."+p,i);if(v)return v}return null})}};function d(e,t){this.message=e,this.data=t&&"object"==typeof t?t:{},this.stack=""}function p(e){var n={},r=0;function o(o,a,s,u,f,p,h){if(u=u||l,p=p||s,h!==i){if(t){var m=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");throw m.name="Invariant Violation",m}if("undefined"!=typeof console){var y=u+":"+s;!n[y]&&r<3&&(c("You are manually calling a React.PropTypes validation function for the `"+p+"` prop on `"+u+"`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details."),n[y]=!0,r++)}}return null!=a[s]?e(a,s,u,f,p):o?new d(null===a[s]?"The "+f+" `"+p+"` is marked as required in `"+u+"`, but its value is `null`.":"The "+f+" `"+p+"` is marked as required in `"+u+"`, but its value is `undefined`."):null}var a=o.bind(null,!1);return a.isRequired=o.bind(null,!0),a}function h(e){return p(function(t,n,r,o,i,a){var s=t[n];if(y(s)!==e){var c=g(s);return new d("Invalid "+o+" `"+i+"` of type `"+c+"` supplied to `"+r+"`, expected `"+e+"`.",{expectedType:e})}return null})}function m(e,t,n,r,o){return new d((e||"React class")+": "+t+" type `"+n+"."+r+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+o+"`.")}function y(e){var t=typeof e;return Array.isArray(e)?"array":e instanceof RegExp?"object":"symbol"===t||e&&("Symbol"===e["@@toStringTag"]||"function"==typeof Symbol&&e instanceof Symbol)?"symbol":t}function g(e){if(null==e)return""+e;var t=y(e);if("object"===t){if(e instanceof Date)return"date";if(e instanceof RegExp)return"regexp"}return t}return d.prototype=Error.prototype,f.checkPropTypes=s,f.resetWarningCache=s.resetWarningCache,f.PropTypes=f,f}},"./node_modules/prop-types/index.js":(e,t,n)=>{var r=n(/*! react-is */"./node_modules/react-is/index.js");e.exports=n(/*! ./factoryWithTypeCheckers */"./node_modules/prop-types/factoryWithTypeCheckers.js")(r.isElement,!0)},"./node_modules/prop-types/lib/ReactPropTypesSecret.js":e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},"./node_modules/prop-types/lib/has.js":e=>{e.exports=Function.call.bind(Object.prototype.hasOwnProperty)},"./node_modules/react-is/cjs/react-is.development.js":(e,t)=>{"use strict";!function(){var e="function"==typeof Symbol&&Symbol.for,n=e?Symbol.for("react.element"):60103,r=e?Symbol.for("react.portal"):60106,o=e?Symbol.for("react.fragment"):60107,i=e?Symbol.for("react.strict_mode"):60108,a=e?Symbol.for("react.profiler"):60114,s=e?Symbol.for("react.provider"):60109,c=e?Symbol.for("react.context"):60110,u=e?Symbol.for("react.async_mode"):60111,l=e?Symbol.for("react.concurrent_mode"):60111,f=e?Symbol.for("react.forward_ref"):60112,d=e?Symbol.for("react.suspense"):60113,p=e?Symbol.for("react.suspense_list"):60120,h=e?Symbol.for("react.memo"):60115,m=e?Symbol.for("react.lazy"):60116,y=e?Symbol.for("react.block"):60121,g=e?Symbol.for("react.fundamental"):60117,v=e?Symbol.for("react.responder"):60118,b=e?Symbol.for("react.scope"):60119;function x(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case n:var p=e.type;switch(p){case u:case l:case o:case a:case i:case d:return p;default:var y=p&&p.$$typeof;switch(y){case c:case f:case m:case h:case s:return y;default:return t}}case r:return t}}}var w=!1;function S(e){return x(e)===l}t.AsyncMode=u,t.ConcurrentMode=l,t.ContextConsumer=c,t.ContextProvider=s,t.Element=n,t.ForwardRef=f,t.Fragment=o,t.Lazy=m,t.Memo=h,t.Portal=r,t.Profiler=a,t.StrictMode=i,t.Suspense=d,t.isAsyncMode=function(e){return w||(w=!0,console.warn("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.")),S(e)||x(e)===u},t.isConcurrentMode=S,t.isContextConsumer=function(e){return x(e)===c},t.isContextProvider=function(e){return x(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===n},t.isForwardRef=function(e){return x(e)===f},t.isFragment=function(e){return x(e)===o},t.isLazy=function(e){return x(e)===m},t.isMemo=function(e){return x(e)===h},t.isPortal=function(e){return x(e)===r},t.isProfiler=function(e){return x(e)===a},t.isStrictMode=function(e){return x(e)===i},t.isSuspense=function(e){return x(e)===d},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===l||e===a||e===i||e===d||e===p||"object"==typeof e&&null!==e&&(e.$$typeof===m||e.$$typeof===h||e.$$typeof===s||e.$$typeof===c||e.$$typeof===f||e.$$typeof===g||e.$$typeof===v||e.$$typeof===b||e.$$typeof===y)},t.typeOf=x}()},"./node_modules/react-is/index.js":(e,t,n)=>{"use strict";e.exports=n(/*! ./cjs/react-is.development.js */"./node_modules/react-is/cjs/react-is.development.js")},"./node_modules/shallow-equal/dist/index.esm.js":(e,t,n)=>{"use strict";function r(e,t){if(e===t)return!0;if(!e||!t)return!1;var n=Object.keys(e),r=Object.keys(t),o=n.length;if(r.length!==o)return!1;for(var i=0;io,shallowEqualObjects:()=>r})},"./src/Component.ts":function(e,t,n){"use strict";var r=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var i=o(n(/*! ./useMediaQuery */"./src/useMediaQuery.ts"));t.default=function(e){var t=e.children,n=e.device,o=e.onChange,a=r(e,["children","device","onChange"]),s=(0,i.default)(a,n,o);return"function"==typeof t?t(s):s?t:null}},"./src/Context.ts":(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=(0,n(/*! react */"react").createContext)(void 0);t.default=r},"./src/index.ts":function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Context=t.toQuery=t.useMediaQuery=t.default=void 0;var o=r(n(/*! ./useMediaQuery */"./src/useMediaQuery.ts"));t.useMediaQuery=o.default;var i=r(n(/*! ./Component */"./src/Component.ts"));t.default=i.default;var a=r(n(/*! ./toQuery */"./src/toQuery.ts"));t.toQuery=a.default;var s=r(n(/*! ./Context */"./src/Context.ts"));t.Context=s.default},"./src/mediaQuery.ts":function(e,t,n){"use strict";var r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;nt.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=i(n(/*! prop-types */"./node_modules/prop-types/index.js")),s=a.default.oneOfType([a.default.string,a.default.number]),c={all:a.default.bool,grid:a.default.bool,aural:a.default.bool,braille:a.default.bool,handheld:a.default.bool,print:a.default.bool,projection:a.default.bool,screen:a.default.bool,tty:a.default.bool,tv:a.default.bool,embossed:a.default.bool},u={orientation:a.default.oneOf(["portrait","landscape"]),scan:a.default.oneOf(["progressive","interlace"]),aspectRatio:a.default.string,deviceAspectRatio:a.default.string,height:s,deviceHeight:s,width:s,deviceWidth:s,color:a.default.bool,colorIndex:a.default.bool,monochrome:a.default.bool,resolution:s,type:Object.keys(c)};u.type;var l=o(u,["type"]),f=r({minAspectRatio:a.default.string,maxAspectRatio:a.default.string,minDeviceAspectRatio:a.default.string,maxDeviceAspectRatio:a.default.string,minHeight:s,maxHeight:s,minDeviceHeight:s,maxDeviceHeight:s,minWidth:s,maxWidth:s,minDeviceWidth:s,maxDeviceWidth:s,minColor:a.default.number,maxColor:a.default.number,minColorIndex:a.default.number,maxColorIndex:a.default.number,minMonochrome:a.default.number,maxMonochrome:a.default.number,minResolution:s,maxResolution:s},l),d=r(r({},c),f);t.default={all:d,types:c,matchers:u,features:f}},"./src/toQuery.ts":function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var o=r(n(/*! hyphenate-style-name */"./node_modules/hyphenate-style-name/index.js")),i=r(n(/*! ./mediaQuery */"./src/mediaQuery.ts")),a=function(e,t){var n=(0,o.default)(e);return("number"==typeof t&&(t="".concat(t,"px")),!0===t)?n:!1===t?"not ".concat(n):"(".concat(n,": ").concat(t,")")};t.default=function(e){var t=[];return Object.keys(i.default.all).forEach(function(n){var r=e[n];null!=r&&t.push(a(n,r))}),t.join(" and ")}},"./src/useMediaQuery.ts":function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var o=n(/*! react */"react"),i=r(n(/*! matchmediaquery */"./node_modules/matchmediaquery/index.js")),a=r(n(/*! hyphenate-style-name */"./node_modules/hyphenate-style-name/index.js")),s=n(/*! shallow-equal */"./node_modules/shallow-equal/dist/index.esm.js"),c=r(n(/*! ./toQuery */"./src/toQuery.ts")),u=r(n(/*! ./Context */"./src/Context.ts")),l=function(e){if(e)return Object.keys(e).reduce(function(t,n){return t[(0,a.default)(n)]=e[n],t},{})},f=function(){var e=(0,o.useRef)(!1);return(0,o.useEffect)(function(){e.current=!0},[]),e.current},d=function(e){var t=(0,o.useContext)(u.default),n=function(){return l(e)||l(t)},r=(0,o.useState)(n),i=r[0],a=r[1];return(0,o.useEffect)(function(){var e=n();(0,s.shallowEqualObjects)(i,e)||a(e)},[e,t]),i},p=function(e){var t=function(){return e.query||(0,c.default)(e)},n=(0,o.useState)(t),r=n[0],i=n[1];return(0,o.useEffect)(function(){var e=t();r!==e&&i(e)},[e]),r},h=function(e,t){var n=function(){return(0,i.default)(e,t||{},!!t)},r=(0,o.useState)(n),a=r[0],s=r[1],c=f();return(0,o.useEffect)(function(){if(c){var e=n();return s(e),function(){e&&e.dispose()}}},[e,t]),a},m=function(e){var t=(0,o.useState)(e.matches),n=t[0],r=t[1];return(0,o.useEffect)(function(){var t=function(e){r(e.matches)};return e.addListener(t),r(e.matches),function(){e.removeListener(t)}},[e]),n};t.default=function(e,t,n){var r=d(t),i=p(e);if(!i)throw Error("Invalid or missing MediaQuery!");var a=h(i,r),s=m(a),c=f();return(0,o.useEffect)(function(){c&&n&&n(s)},[s]),(0,o.useEffect)(function(){return function(){a&&a.dispose()}},[]),s}},react:e=>{"use strict";e.exports=r}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={exports:{}};return e[r].call(i.exports,i,i.exports,n),i.exports}return n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n("./src/index.ts")})())},6774:function(e){e.exports=function(e,t,n,r){var o=n?n.call(r,e,t):void 0;if(void 0!==o)return!!o;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var i=Object.keys(e),a=Object.keys(t);if(i.length!==a.length)return!1;for(var s=Object.prototype.hasOwnProperty.bind(t),c=0;c-1&&!e.return)switch(e.type){case p:e.return=function e(t,n,r){var o;switch(o=n,45^w(t,0)?(((o<<2^w(t,0))<<2^w(t,1))<<2^w(t,2))<<2^w(t,3):0){case 5103:return l+"print-"+t+t;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return l+t+t;case 4789:return u+t+t;case 5349:case 4246:case 4810:case 6968:case 2756:return l+t+u+t+c+t+t;case 5936:switch(w(t,n+11)){case 114:return l+t+c+b(t,/[svh]\w+-[tblr]{2}/,"tb")+t;case 108:return l+t+c+b(t,/[svh]\w+-[tblr]{2}/,"tb-rl")+t;case 45:return l+t+c+b(t,/[svh]\w+-[tblr]{2}/,"lr")+t}case 6828:case 4268:case 2903:return l+t+c+t+t;case 6165:return l+t+c+"flex-"+t+t;case 5187:return l+t+b(t,/(\w+).+(:[^]+)/,l+"box-$1$2"+c+"flex-$1$2")+t;case 5443:return l+t+c+"flex-item-"+b(t,/flex-|-self/g,"")+(v(t,/flex-|baseline/)?"":c+"grid-row-"+b(t,/flex-|-self/g,""))+t;case 4675:return l+t+c+"flex-line-pack"+b(t,/align-content|flex-|-self/g,"")+t;case 5548:return l+t+c+b(t,"shrink","negative")+t;case 5292:return l+t+c+b(t,"basis","preferred-size")+t;case 6060:return l+"box-"+b(t,"-grow","")+l+t+c+b(t,"grow","positive")+t;case 4554:return l+b(t,/([^-])(transform)/g,"$1"+l+"$2")+t;case 6187:return b(b(b(t,/(zoom-|grab)/,l+"$1"),/(image-set)/,l+"$1"),t,"")+t;case 5495:case 3959:return b(t,/(image-set\([^]*)/,l+"$1$`$1");case 4968:return b(b(t,/(.+:)(flex-)?(.*)/,l+"box-pack:$3"+c+"flex-pack:$3"),/s.+-b[^;]+/,"justify")+l+t+t;case 4200:if(!v(t,/flex-|baseline/))return c+"grid-column-align"+S(t,n)+t;break;case 2592:case 3360:return c+b(t,"template-","")+t;case 4384:case 3616:if(r&&r.some(function(e,t){return n=t,v(e.props,/grid-\w+-end/)}))return~x(t+(r=r[n].value),"span")?t:c+b(t,"-start","")+t+c+"grid-row-span:"+(~x(r,"span")?v(r,/\d+/):+v(r,/\d+/)-+v(t,/\d+/))+";";return c+b(t,"-start","")+t;case 4896:case 4128:return r&&r.some(function(e){return v(e.props,/grid-\w+-start/)})?t:c+b(b(t,"-end","-span"),"span ","")+t;case 4095:case 3583:case 4068:case 2532:return b(t,/(.+)-inline(.+)/,l+"$1$2")+t;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(j(t)-1-n>6)switch(w(t,n+1)){case 109:if(45!==w(t,n+4))break;case 102:return b(t,/(.+:)(.+)-([^]+)/,"$1"+l+"$2-$3$1"+u+(108==w(t,n+3)?"$3":"$2-$3"))+t;case 115:return~x(t,"stretch")?e(b(t,"stretch","fill-available"),n,r)+t:t}break;case 5152:case 5920:return b(t,/(.+?):(\d+)(\s*\/\s*(span)?\s*(\d+))?(.*)/,function(e,n,r,o,i,a,s){return c+n+":"+r+s+(o?c+n+"-span:"+(i?a:+a-+r)+s:"")+t});case 4949:if(121===w(t,n+6))return b(t,":",":"+l)+t;break;case 6444:switch(w(t,45===w(t,14)?18:11)){case 120:return b(t,/(.+:)([^;\s!]+)(;|(\s+)?!.+)?/,"$1"+l+(45===w(t,14)?"inline-":"")+"box$3$1"+l+"$2$3$1"+c+"$2box$3")+t;case 100:return b(t,":",":"+c)+t}break;case 5719:case 2647:case 2135:case 3927:case 2391:return b(t,"scroll-","scroll-snap-")+t}return t}(e.value,e.length,n);return;case h:return L([R(e,{value:b(e.value,"@","@"+l)})],r);case d:if(e.length)return(n=e.props).map(function(t){switch(v(t,r=/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":$(R(e,{props:[b(t,/:(read-\w+)/,":"+u+"$1")]})),$(R(e,{props:[t]})),g(e,{props:O(n,r)});break;case"::placeholder":$(R(e,{props:[b(t,/:(plac\w+)/,":"+l+"input-$1")]})),$(R(e,{props:[b(t,/:(plac\w+)/,":"+u+"$1")]})),$(R(e,{props:[b(t,/:(plac\w+)/,c+"input-$1")]})),$(R(e,{props:[t]})),g(e,{props:O(n,r)})}return""}).join("")}}function G(e,t,n,r,o,i,a,s,c,u,l,f){for(var p=o-1,h=0===o?i:[""],y=h.length,g=0,v=0,x=0;g0?h[w]+" "+j:b(j,/&\f/g,h[w])).trim())&&(c[x++]=_);return A(e,t,n,0===o?d:s,c,u,l,f)}function B(e,t,n,r,o){return A(e,t,n,p,S(e,0,r),S(e,r+1,-1),r,o)}var q={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},H=n(4155),Y=void 0!==H&&void 0!==H.env&&(H.env.REACT_APP_SC_ATTR||H.env.SC_ATTR)||"data-styled",Q="undefined"!=typeof window&&"HTMLElement"in window,V=!!("boolean"==typeof SC_DISABLE_SPEEDY?SC_DISABLE_SPEEDY:void 0!==H&&void 0!==H.env&&void 0!==H.env.REACT_APP_SC_DISABLE_SPEEDY&&""!==H.env.REACT_APP_SC_DISABLE_SPEEDY?"false"!==H.env.REACT_APP_SC_DISABLE_SPEEDY&&H.env.REACT_APP_SC_DISABLE_SPEEDY:void 0!==H&&void 0!==H.env&&void 0!==H.env.SC_DISABLE_SPEEDY&&""!==H.env.SC_DISABLE_SPEEDY&&"false"!==H.env.SC_DISABLE_SPEEDY&&H.env.SC_DISABLE_SPEEDY),Z={},U=Object.freeze([]),J=Object.freeze({});function K(e,t,n){return void 0===n&&(n=J),e.theme!==n.theme&&e.theme||t||n.theme}var X=new Set(["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","use","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","marker","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"]),ee=/[!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~-]+/g,et=/(^-|-$)/g;function en(e){return e.replace(ee,"-").replace(et,"")}var er=/(a)(d)/gi,eo=function(e){return String.fromCharCode(e+(e>25?39:97))};function ei(e){var t,n="";for(t=Math.abs(e);t>52;t=t/52|0)n=eo(t%52)+n;return(eo(t%52)+n).replace(er,"$1-$2")}var ea,es=function(e,t){for(var n=t.length;n;)e=33*e^t.charCodeAt(--n);return e},ec=function(e){return es(5381,e)};function eu(e){return"string"==typeof e}var el="function"==typeof Symbol&&Symbol.for,ef=el?Symbol.for("react.memo"):60115,ed=el?Symbol.for("react.forward_ref"):60112,ep={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},eh={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},em={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},ey=((ea={})[ed]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},ea[ef]=em,ea);function eg(e){return("type"in e&&e.type.$$typeof)===ef?em:"$$typeof"in e?ey[e.$$typeof]:ep}var ev=Object.defineProperty,eb=Object.getOwnPropertyNames,ex=Object.getOwnPropertySymbols,ew=Object.getOwnPropertyDescriptor,eS=Object.getPrototypeOf,ej=Object.prototype;function e_(e){return"function"==typeof e}function eO(e){return"object"==typeof e&&"styledComponentId"in e}function eP(e,t){return e&&t?"".concat(e," ").concat(t):e||t||""}function eC(e,t){if(0===e.length)return"";for(var n=e[0],r=1;r0?" Args: ".concat(t.join(", ")):""))}var eT=function(){function e(e){this.groupSizes=new Uint32Array(512),this.length=512,this.tag=e}return e.prototype.indexOfGroup=function(e){for(var t=0,n=0;n=this.groupSizes.length){for(var n=this.groupSizes,r=n.length,o=r;e>=o;)if((o<<=1)<0)throw ek(16,"".concat(e));this.groupSizes=new Uint32Array(o),this.groupSizes.set(n),this.length=o;for(var i=r;i=this.length||0===this.groupSizes[e])return t;for(var n=this.groupSizes[e],r=this.indexOfGroup(e),o=r+n,i=r;i=0){var n=document.createTextNode(t);return this.element.insertBefore(n,this.nodes[e]||null),this.length++,!0}return!1},e.prototype.deleteRule=function(e){this.element.removeChild(this.nodes[e]),this.length--},e.prototype.getRule=function(e){return e0&&(c+="".concat(e,","))}),r+="".concat(a).concat(s,'{content:"').concat(c,'"}').concat("/*!sc*/\n")}}})(o);return r}(o)})}return e.registerId=function(e){return eM(e)},e.prototype.reconstructWithOptions=function(t,n){return void 0===n&&(n=!0),new e(r(r({},this.options),t),this.gs,n&&this.names||void 0)},e.prototype.allocateGSInstance=function(e){return this.gs[e]=(this.gs[e]||0)+1},e.prototype.getTag=function(){var e,t,n,r;return this.tag||(this.tag=(n=(t=this.options).useCSSOMInjection,r=t.target,e=t.isServer?new eq(r):n?new eG(r):new eB(r),new eT(e)))},e.prototype.hasNameForId=function(e,t){return this.names.has(e)&&this.names.get(e).has(t)},e.prototype.registerName=function(e,t){if(eM(e),this.names.has(e))this.names.get(e).add(t);else{var n=new Set;n.add(t),this.names.set(e,n)}},e.prototype.insertRules=function(e,t,n){this.registerName(e,t),this.getTag().insertRules(eM(e),n)},e.prototype.clearNames=function(e){this.names.has(e)&&this.names.get(e).clear()},e.prototype.clearRules=function(e){this.getTag().clearGroup(eM(e)),this.clearNames(e)},e.prototype.clearTag=function(){this.tag=void 0},e}(),eV=/&/g,eZ=/^\s*\/\/.*$/gm;function eU(e){var t,n,r,o=void 0===e?J:e,i=o.options,a=void 0===i?J:i,s=o.plugins,c=void 0===s?U:s,u=function(e,r,o){return o===n||o.startsWith(n)&&o.endsWith(n)&&o.replaceAll(n,"").length>0?".".concat(t):e},l=c.slice();l.push(function(e){e.type===d&&e.value.includes("&")&&(e.props[0]=e.props[0].replace(eV,n).replace(r,u))}),a.prefix&&l.push(W),l.push(F);var p=function(e,o,i,s){void 0===o&&(o=""),void 0===i&&(i=""),void 0===s&&(s="&"),t=s,n=o,r=RegExp("\\".concat(n,"\\b"),"g");var c,u,d,p,h,m=e.replace(eZ,""),g=(h=function e(t,n,r,o,i,a,s,c,u){for(var l,d=0,p=0,h=s,m=0,g=0,v=0,O=1,I=1,R=1,$=0,L="",F=i,W=a,q=o,H=L;I;)switch(v=$,$=M()){case 40:if(108!=v&&58==w(H,h-1)){-1!=x(H+=b(D($),"&","&\f"),"&\f")&&(R=-1);break}case 34:case 39:case 91:H+=D($);break;case 9:case 10:case 13:case 32:H+=function(e){for(;k=N();)if(k<33)M();else break;return z(e)>2||z(k)>3?"":" "}(v);break;case 92:H+=function(e,t){for(var n;--t&&M()&&!(k<48)&&!(k>102)&&(!(k>57)||!(k<65))&&(!(k>70)||!(k<97)););return n=E+(t<6&&32==N()&&32==M()),S(T,e,n)}(E-1,7);continue;case 47:switch(N()){case 42:case 47:_(A(l=function(e,t){for(;M();)if(e+k===57)break;else if(e+k===84&&47===N())break;return"/*"+S(T,t,E-1)+"*"+y(47===e?e:M())}(M(),E),n,r,f,y(k),S(l,2,-2),0,u),u);break;default:H+="/"}break;case 123*O:c[d++]=j(H)*R;case 125*O:case 59:case 0:switch($){case 0:case 125:I=0;case 59+p:-1==R&&(H=b(H,/\f/g,"")),g>0&&j(H)-h&&_(g>32?B(H+";",o,r,h-1,u):B(b(H," ","")+";",o,r,h-2,u),u);break;case 59:H+=";";default:if(_(q=G(H,n,r,d,p,i,c,L,F=[],W=[],h,a),a),123===$){if(0===p)e(H,n,q,q,F,a,h,c,W);else switch(99===m&&110===w(H,3)?100:m){case 100:case 108:case 109:case 115:e(t,q,q,o&&_(G(t,q,q,0,0,i,c,L,i,F=[],h,W),W),i,W,h,c,o?F:W);break;default:e(H,q,q,q,[""],W,0,c,W)}}}d=p=g=0,O=R=1,L=H="",h=s;break;case 58:h=1+j(H),g=v;default:if(O<1){if(123==$)--O;else if(125==$&&0==O++&&125==(k=E>0?w(T,--E):0,C--,10===k&&(C=1,P--),k))continue}switch(H+=y($),$*O){case 38:R=p>0?1:(H+="\f",-1);break;case 44:c[d++]=(j(H)-1)*R,R=1;break;case 64:45===N()&&(H+=D(M())),m=N(),p=h=j(L=H+=function(e){for(;!z(N());)M();return S(T,e,E)}(E)),$++;break;case 45:45===v&&2==j(H)&&(O=0)}}return a}("",null,null,null,[""],(p=d=i||o?"".concat(i," ").concat(o," { ").concat(m," }"):m,P=C=1,I=j(T=p),E=0,d=[]),0,[0],d),T="",h);a.namespace&&(g=function e(t,n){return t.map(function(t){return"rule"===t.type&&(t.value="".concat(n," ").concat(t.value),t.value=t.value.replaceAll(",",",".concat(n," ")),t.props=t.props.map(function(e){return"".concat(n," ").concat(e)})),Array.isArray(t.children)&&"@keyframes"!==t.type&&(t.children=e(t.children,n)),t})}(g,a.namespace));var v=[];return L(g,(u=(c=l.concat(function(e){var t;!e.root&&(e=e.return)&&(t=e,v.push(t))})).length,function(e,t,n,r){for(var o="",i=0;i="A"&&r<="Z"?t+="-"+r.toLowerCase():t+=r}return t.startsWith("ms-")?"-"+t:t}var e4=function(e){return null==e||!1===e||""===e},e6=function(e){var t=[];for(var n in e){var r=e[n];e.hasOwnProperty(n)&&!e4(r)&&(Array.isArray(r)&&r.isCss||e_(r)?t.push("".concat(e3(n),":"),r,";"):eI(r)?t.push.apply(t,o(o(["".concat(n," {")],e6(r),!1),["}"],!1)):t.push("".concat(e3(n),": ").concat(null==r||"boolean"==typeof r||""===r?"":"number"!=typeof r||0===r||n in q||n.startsWith("--")?String(r).trim():"".concat(r,"px"),";")))}return t};function e7(e,t,n,r){return e4(e)?[]:eO(e)?[".".concat(e.styledComponentId)]:e_(e)?!e_(e)||e.prototype&&e.prototype.isReactComponent||!t?[e]:e7(e(t),t,n,r):e instanceof e5?n?(e.inject(n,r),[e.getName(r)]):[e]:eI(e)?e6(e):Array.isArray(e)?Array.prototype.concat.apply(U,e.map(function(e){return e7(e,t,n,r)})):[e.toString()]}function e8(e){for(var t=0;t>>0);if(!t.hasNameForId(this.componentId,i)){var a=n(o,".".concat(i),void 0,this.componentId);t.insertRules(this.componentId,i,a)}r=eP(r,i),this.staticRulesId=i}}else{for(var s=es(this.baseHash,n.hash),c="",u=0;u>>0);t.hasNameForId(this.componentId,d)||t.insertRules(this.componentId,d,n(c,".".concat(d),void 0,this.componentId)),r=eP(r,d)}}return r},e}(),tt=i.createContext(void 0);tt.Consumer;var tn={};function tr(e,t,n){var o,a,s,c,u=eO(e),l=!eu(e),f=t.attrs,d=void 0===f?U:f,p=t.componentId,h=void 0===p?(o=t.displayName,a=t.parentComponentId,tn[s="string"!=typeof o?"sc":en(o)]=(tn[s]||0)+1,c="".concat(s,"-").concat(ei(ec("6.0.4"+s+tn[s])>>>0)),a?"".concat(a,"-").concat(c):c):p,m=(void 0===t.displayName&&(eu(e)||e.displayName||e.name),t.displayName&&t.componentId?"".concat(en(t.displayName),"-").concat(t.componentId):t.componentId||h),y=u&&e.attrs?e.attrs.concat(d).filter(Boolean):d,g=t.shouldForwardProp;if(u&&e.shouldForwardProp){var v=e.shouldForwardProp;if(t.shouldForwardProp){var b=t.shouldForwardProp;g=function(e,t){return v(e,t)&&b(e,t)}}else g=v}var x=new te(n,m,u?e.componentStyle:void 0),w=i.forwardRef(function(e,t){return function(e,t,n){var o,a=e.attrs,s=e.componentStyle,c=e.defaultProps,u=e.foldedComponentIds,l=e.styledComponentId,f=e.target,d=i.useContext(tt),p=e1(),h=e.shouldForwardProp||p.shouldForwardProp,m=function(e,t,n){for(var o,i=r(r({},t),{className:void 0,theme:n}),a=0;a2&&eQ.registerId(this.componentId+e),this.removeStyles(e,n),this.createStyles(e,t,n,r)},e}();function tl(e){for(var t=[],n=1;n>>0)),c=new tu(a,s),u=function(e){var t=e1(),n=i.useContext(tt),r=i.useRef(t.styleSheet.allocateGSInstance(s)).current;return t.styleSheet.server&&l(r,e,t.styleSheet,n,t.stylis),(i.useInsertionEffect||i.useLayoutEffect)(function(){if(!t.styleSheet.server)return l(r,e,t.styleSheet,n,t.stylis),function(){return c.removeStyles(r,t.styleSheet)}},[r,e,t.styleSheet,n,t.stylis]),null};function l(e,t,n,o,i){if(c.isStatic)c.renderStyles(e,Z,n,i);else{var a=r(r({},t),{theme:K(t,o,u.defaultProps)});c.renderStyles(e,a,n,i)}}return i.memo(u)}!function(){function e(){var e=this;this._emitSheetCSS=function(){var t=e.instance.toString(),r=n.nc,o=eC([r&&'nonce="'.concat(r,'"'),"".concat(Y,'="true"'),"".concat("data-styled-version",'="').concat("6.0.4",'"')].filter(Boolean)," ");return"")},this.getStyleTags=function(){if(e.sealed)throw ek(2);return e._emitSheetCSS()},this.getStyleElement=function(){if(e.sealed)throw ek(2);var t,o=((t={})[Y]="",t["data-styled-version"]="6.0.4",t.dangerouslySetInnerHTML={__html:e.instance.toString()},t),a=n.nc;return a&&(o.nonce=a),[i.createElement("style",r({},o,{key:"sc-0-0"}))]},this.seal=function(){e.sealed=!0},this.instance=new eQ({isServer:!0}),this.sealed=!1}e.prototype.collectStyles=function(e){if(this.sealed)throw ek(2);return i.createElement(e2,{sheet:this.instance},e)},e.prototype.interleaveWithNodeStream=function(e){throw ek(3)}}()},2729:function(e,t,n){"use strict";function r(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}n.d(t,{_:function(){return r}})}},function(e){var t=function(t){return e(e.s=t)};e.O(0,[774,179],function(){return t(6840),t(6885)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/_next/static/chunks/pages/about-258362a9cb8d6940.js b/_next/static/chunks/pages/about-258362a9cb8d6940.js deleted file mode 100644 index d15d223..0000000 --- a/_next/static/chunks/pages/about-258362a9cb8d6940.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[521],{8318:function(n,e,i){(window.__NEXT_P=window.__NEXT_P||[]).push(["/about",function(){return i(6737)}])},6737:function(n,e,i){"use strict";i.r(e),i.d(e,{default:function(){return b}});var t=i(2729),r=i(5893),o=i(5675),c=i.n(o),d=i(1686);let s=[{id:0,title:"2022 SSWU 소프트웨어 경진대회",date:"2022.09.15",rank:"은상",role:"기획/Frontend 개발",project:"Hi Alcohol v.2",projectNum:1},{id:1,title:"제 4회 NE(O)RDINARY 해커톤",date:"2023.06.11",rank:"우수상",role:"Frontend 개발",project:"Re:MEMORY",projectNum:6},{id:2,title:"제 4회 UMC 해커톤",date:"2023.07.04",rank:"최우수상",role:"Frontend 개발",project:"Green Quest",projectNum:7}];function l(){let n=(0,t._)(["\n width: 100%;\n margin-top: 70px;\n margin-bottom: 150px;\n"]);return l=function(){return n},n}function h(){let n=(0,t._)(["\n width: 80%;\n justify-content: center;\n margin: 0 auto;\n"]);return h=function(){return n},n}function f(){let n=(0,t._)(["\n font-size: 1.5rem;\n font-weight: bold;\n padding: 30px;\n border-bottom: 2px solid black;\n"]);return f=function(){return n},n}function u(){let n=(0,t._)(["\n font-size: 1rem;\n padding: 30px;\n"]);return u=function(){return n},n}function a(){let n=(0,t._)(["\n font-size: 0.8rem;\n color: gray;\n margin-left: 10px;\n"]);return a=function(){return n},n}function x(){let n=(0,t._)(["\n font-size: 1.1rem;\n color: green;\n margin-left: 10px;\n margin-right: 10px;\n"]);return x=function(){return n},n}function j(){let n=(0,t._)(["\n font-size: 1rem;\n margin-bottom: 20px;\n font-weight: bold;\n display: flex;\n > div {\n font-weight: normal;\n font-size: 0.9rem;\n color: gray;\n margin-top: 10px;\n margin-left: 20px;\n }\n"]);return j=function(){return n},n}let p=d.ZP.div.withConfig({componentId:"sc-28ec742f-0"})(l()),g=d.ZP.div.withConfig({componentId:"sc-28ec742f-1"})(h()),m=d.ZP.div.withConfig({componentId:"sc-28ec742f-2"})(f()),v=d.ZP.div.withConfig({componentId:"sc-28ec742f-3"})(u()),w=d.ZP.span.withConfig({componentId:"sc-28ec742f-4"})(a()),_=d.ZP.span.withConfig({componentId:"sc-28ec742f-5"})(x()),N=d.ZP.div.withConfig({componentId:"sc-28ec742f-6"})(j());var b=()=>(0,r.jsxs)(p,{children:[(0,r.jsxs)(g,{children:[(0,r.jsx)(m,{children:"학력"}),(0,r.jsxs)(v,{children:["성신여자대학교 컴퓨터공학과",(0,r.jsx)(w,{children:"2019.03 ~"})]})]}),(0,r.jsxs)(g,{children:[(0,r.jsx)(m,{children:"자격증"}),(0,r.jsxs)(v,{children:["정보처리기사",(0,r.jsx)(w,{children:"2022.11.25"})]})]}),(0,r.jsxs)(g,{children:[(0,r.jsx)(m,{children:"수상"}),s.slice().reverse().map(n=>(0,r.jsx)(r.Fragment,{children:(0,r.jsx)(v,{children:(0,r.jsxs)("div",{children:[n.title,(0,r.jsx)(w,{children:n.date}),(0,r.jsx)(_,{children:n.rank}),(0,r.jsx)("a",{href:"/Portfolio/project?id=".concat(n.projectNum),children:(0,r.jsx)(c(),{src:"https://alreadynyeong.github.io/Portfolio/ArrowRight.png",width:13,height:13,alt:">"})})]})},n.title)}))]}),(0,r.jsxs)(g,{children:[(0,r.jsx)(m,{children:"스킬"}),(0,r.jsxs)(v,{children:[(0,r.jsxs)(N,{children:["Skill",(0,r.jsx)("div",{children:"React.js"}),(0,r.jsx)("div",{children:"Next.js"}),(0,r.jsx)("div",{children:"React-native"}),(0,r.jsx)("div",{children:"Node.js"})]}),(0,r.jsxs)(N,{children:["Language",(0,r.jsx)("div",{children:"JavaScript"}),(0,r.jsx)("div",{children:"TypeScript"}),(0,r.jsx)("div",{children:"Python"})]}),(0,r.jsxs)(N,{children:["Tool",(0,r.jsx)("div",{children:"Git/GitHub"}),(0,r.jsx)("div",{children:"Figma"}),(0,r.jsx)("div",{children:"Discord/Slack"}),(0,r.jsx)("div",{children:"Jira/Confluence"})]})]})]})]})}},function(n){n.O(0,[774,888,179],function(){return n(n.s=8318)}),_N_E=n.O()}]); \ No newline at end of file diff --git a/_next/static/chunks/pages/about-83fba4d6fb40b2a9.js b/_next/static/chunks/pages/about-83fba4d6fb40b2a9.js new file mode 100644 index 0000000..0edfebb --- /dev/null +++ b/_next/static/chunks/pages/about-83fba4d6fb40b2a9.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[521],{8318:function(n,e,i){(window.__NEXT_P=window.__NEXT_P||[]).push(["/about",function(){return i(6737)}])},6737:function(n,e,i){"use strict";i.r(e),i.d(e,{default:function(){return b}});var t=i(2729),r=i(5893),c=i(5675),o=i.n(c),d=i(1686);let s=[{id:0,title:"2022 SSWU 소프트웨어 경진대회",date:"2022.09.15",rank:"은상",role:"기획/Frontend 개발",project:"Hi Alcohol v.2",projectNum:1},{id:1,title:"제 4회 NE(O)RDINARY 해커톤",date:"2023.06.11",rank:"우수상",role:"Frontend 개발",project:"Re:MEMORY",projectNum:6},{id:2,title:"제 4회 UMC 해커톤",date:"2023.07.04",rank:"최우수상",role:"Frontend 개발",project:"Green Quest",projectNum:7}];function l(){let n=(0,t._)(["\n width: 100%;\n margin-top: 70px;\n margin-bottom: 150px;\n"]);return l=function(){return n},n}function h(){let n=(0,t._)(["\n width: 80%;\n justify-content: center;\n margin: 0 auto;\n"]);return h=function(){return n},n}function u(){let n=(0,t._)(["\n font-size: 1.5rem;\n font-weight: bold;\n padding: 30px;\n border-bottom: 2px solid black;\n"]);return u=function(){return n},n}function a(){let n=(0,t._)(["\n font-size: 1rem;\n padding: 30px;\n"]);return a=function(){return n},n}function x(){let n=(0,t._)(["\n font-size: 0.8rem;\n color: gray;\n margin-left: 10px;\n"]);return x=function(){return n},n}function j(){let n=(0,t._)(["\n font-size: 1.1rem;\n color: green;\n margin-left: 10px;\n margin-right: 10px;\n"]);return j=function(){return n},n}function f(){let n=(0,t._)(["\n font-size: 1rem;\n margin-bottom: 20px;\n font-weight: bold;\n > div {\n margin-left: 20px;\n display: flex;\n overflow: auto;\n gap: 20px;\n padding-bottom: 10px;\n > div {\n font-weight: normal;\n font-size: 0.9rem;\n color: gray;\n margin-top: 10px;\n }\n }\n"]);return f=function(){return n},n}let p=d.ZP.div.withConfig({componentId:"sc-3cc345e1-0"})(l()),g=d.ZP.div.withConfig({componentId:"sc-3cc345e1-1"})(h()),m=d.ZP.div.withConfig({componentId:"sc-3cc345e1-2"})(u()),v=d.ZP.div.withConfig({componentId:"sc-3cc345e1-3"})(a()),w=d.ZP.span.withConfig({componentId:"sc-3cc345e1-4"})(x()),_=d.ZP.span.withConfig({componentId:"sc-3cc345e1-5"})(j()),N=d.ZP.div.withConfig({componentId:"sc-3cc345e1-6"})(f());var b=()=>(0,r.jsxs)(p,{children:[(0,r.jsxs)(g,{children:[(0,r.jsx)(m,{children:"학력"}),(0,r.jsxs)(v,{children:["성신여자대학교 컴퓨터공학과",(0,r.jsx)(w,{children:"2019.03 ~"})]})]}),(0,r.jsxs)(g,{children:[(0,r.jsx)(m,{children:"자격증"}),(0,r.jsxs)(v,{children:["정보처리기사",(0,r.jsx)(w,{children:"2022.11.25"})]})]}),(0,r.jsxs)(g,{children:[(0,r.jsx)(m,{children:"수상"}),s.slice().reverse().map(n=>(0,r.jsx)(r.Fragment,{children:(0,r.jsx)(v,{children:(0,r.jsxs)("div",{children:[n.title,(0,r.jsx)(w,{children:n.date}),(0,r.jsx)(_,{children:n.rank}),(0,r.jsx)("a",{href:"/Portfolio/project?id=".concat(n.projectNum),children:(0,r.jsx)(o(),{src:"https://alreadynyeong.github.io/Portfolio/ArrowRight.png",width:13,height:13,alt:">"})})]})},n.title)}))]}),(0,r.jsxs)(g,{children:[(0,r.jsx)(m,{children:"스킬"}),(0,r.jsxs)(v,{children:[(0,r.jsxs)(N,{children:["Skill",(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{children:"React.js"}),(0,r.jsx)("div",{children:"Next.js"}),(0,r.jsx)("div",{children:"ReactNative"}),(0,r.jsx)("div",{children:"Node.js"})]})]}),(0,r.jsxs)(N,{children:["Language",(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{children:"JavaScript"}),(0,r.jsx)("div",{children:"TypeScript"}),(0,r.jsx)("div",{children:"Python"})]})]}),(0,r.jsxs)(N,{children:["Tool",(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{children:"Git/GitHub"}),(0,r.jsx)("div",{children:"Figma"}),(0,r.jsx)("div",{children:"Discord/Slack"}),(0,r.jsx)("div",{children:"Jira/Confluence"})]})]})]})]})]})}},function(n){n.O(0,[774,888,179],function(){return n(n.s=8318)}),_N_E=n.O()}]); \ No newline at end of file diff --git a/_next/static/chunks/pages/index-4dcd280570196b31.js b/_next/static/chunks/pages/index-4dcd280570196b31.js deleted file mode 100644 index 521cfa2..0000000 --- a/_next/static/chunks/pages/index-4dcd280570196b31.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[405],{8312:function(n,t,i){(window.__NEXT_P=window.__NEXT_P||[]).push(["/",function(){return i(4673)}])},4673:function(n,t,i){"use strict";i.r(t),i.d(t,{default:function(){return j}});var e=i(2729),o=i(5893),r=i(7294),c=i(9008),d=i.n(c),l=i(5675),s=i.n(l),h=i(1686);let p=["WEB 개발자","도전하는 것을 좋아하는","소통과 협업을 즐기는","성실함과 책임감을 가진","계획과 정리를 좋아하는"];function u(){let n=(0,e._)(["\n width: 100%;\n display: flex;\n justify-content: center;\n margin-top: 100px;\n margin-left: 30px;\n"]);return u=function(){return n},n}function a(){let n=(0,e._)(["\n font-size: 1.5rem;\n font-weight: semi-bold;\n padding: 40px;\n"]);return a=function(){return n},n}function f(){let n=(0,e._)(["\n display: inline-block;\n border: 2px solid black;\n margin-top: 20px;\n margin-bottom: 15px;\n width: 400px;\n height: 70px;\n padding: 14px;\n"]);return f=function(){return n},n}function x(){let n=(0,e._)(["\n padding-top: 16px;\n cursor: pointer;\n margin-left: 15px;\n margin-top: 20px;\n &:hover {\n transform: scale(1.1);\n }\n"]);return x=function(){return n},n}let g=h.ZP.div.withConfig({componentId:"sc-ecd6a14b-0"})(u()),m=h.ZP.div.withConfig({componentId:"sc-ecd6a14b-1"})(a()),w=h.ZP.div.withConfig({componentId:"sc-ecd6a14b-2"})(f()),_=h.ZP.div.withConfig({componentId:"sc-ecd6a14b-3"})(x());function j(){let[n,t]=(0,r.useState)(0);return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(d(),{children:[(0,o.jsx)("title",{children:"Portfolio"}),(0,o.jsx)("meta",{name:"description",content:"Minhyeong's Portfolio"}),(0,o.jsx)("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}),(0,o.jsx)("link",{rel:"icon",href:"/favicon.ico"})]}),(0,o.jsx)(g,{children:(0,o.jsx)("div",{children:(0,o.jsxs)(m,{children:["안녕하세요.",(0,o.jsxs)("div",{style:{display:"flex"},children:[(0,o.jsx)(w,{children:p[n]}),(0,o.jsx)(_,{onClick:()=>n"})})]}),(0,o.jsx)("div",{style:{textAlign:"right",paddingRight:"42px"},children:"이민형입니다."})]})})})]})}}},function(n){n.O(0,[774,888,179],function(){return n(n.s=8312)}),_N_E=n.O()}]); \ No newline at end of file diff --git a/_next/static/chunks/pages/index-d9e860357821cfd7.js b/_next/static/chunks/pages/index-d9e860357821cfd7.js new file mode 100644 index 0000000..c4dd754 --- /dev/null +++ b/_next/static/chunks/pages/index-d9e860357821cfd7.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[405],{8312:function(n,i,t){(window.__NEXT_P=window.__NEXT_P||[]).push(["/",function(){return t(4673)}])},4673:function(n,i,t){"use strict";t.r(i),t.d(i,{default:function(){return j}});var e=t(2729),o=t(5893),r=t(7294),d=t(9008),c=t.n(d),l=t(5675),s=t.n(l),h=t(1686);let p=["WEB 개발자","도전하는 것을 좋아하는","소통과 협업을 즐기는","성실함과 책임감을 가진","계획과 정리를 좋아하는"];function a(){let n=(0,e._)(["\n width: 100%;\n display: flex;\n justify-content: center;\n margin-top: 100px;\n margin-left: 30px;\n"]);return a=function(){return n},n}function f(){let n=(0,e._)(["\n font-size: 1.5rem;\n font-weight: semi-bold;\n padding: 40px;\n @media (max-width: 768px) {\n font-size: 1.3rem;\n padding: 20px;\n }\n"]);return f=function(){return n},n}function u(){let n=(0,e._)(["\n display: inline-block;\n border: 2px solid black;\n margin-top: 20px;\n margin-bottom: 15px;\n max-width: 400px;\n height: 70px;\n padding: 14px;\n @media (max-width: 768px) {\n font-size: 1rem;\n line-height: 2rem;\n min-width: 150px;\n }\n"]);return u=function(){return n},n}function x(){let n=(0,e._)(["\n padding-top: 16px;\n cursor: pointer;\n margin-left: 15px;\n margin-top: 20px;\n &:hover {\n transform: scale(1.1);\n }\n"]);return x=function(){return n},n}let g=h.ZP.div.withConfig({componentId:"sc-46187e42-0"})(a()),m=h.ZP.div.withConfig({componentId:"sc-46187e42-1"})(f()),w=h.ZP.div.withConfig({componentId:"sc-46187e42-2"})(u()),_=h.ZP.div.withConfig({componentId:"sc-46187e42-3"})(x());function j(){let[n,i]=(0,r.useState)(0);return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(c(),{children:[(0,o.jsx)("title",{children:"Portfolio"}),(0,o.jsx)("meta",{name:"description",content:"Minhyeong's Portfolio"}),(0,o.jsx)("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}),(0,o.jsx)("link",{rel:"icon",href:"/favicon.ico"})]}),(0,o.jsx)(g,{children:(0,o.jsx)("div",{children:(0,o.jsxs)(m,{children:["안녕하세요.",(0,o.jsxs)("div",{style:{display:"flex"},children:[(0,o.jsx)(w,{children:p[n]}),(0,o.jsx)(_,{onClick:()=>n"})})]}),(0,o.jsx)("div",{style:{textAlign:"right",paddingRight:"42px"},children:"이민형입니다."})]})})})]})}}},function(n){n.O(0,[774,888,179],function(){return n(n.s=8312)}),_N_E=n.O()}]); \ No newline at end of file diff --git a/_next/static/chunks/pages/project-84804e14a3d43850.js b/_next/static/chunks/pages/project-d3cc3b5f924b0b07.js similarity index 75% rename from _next/static/chunks/pages/project-84804e14a3d43850.js rename to _next/static/chunks/pages/project-d3cc3b5f924b0b07.js index 4806139..7d7e5f4 100644 --- a/_next/static/chunks/pages/project-84804e14a3d43850.js +++ b/_next/static/chunks/pages/project-d3cc3b5f924b0b07.js @@ -1 +1 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[512],{6647:function(n,t,e){(window.__NEXT_P=window.__NEXT_P||[]).push(["/project",function(){return e(9329)}])},1765:function(n,t,e){"use strict";e.d(t,{l:function(){return i}});let i=[{id:0,title:"Hi Alcohol",skills:["Node.js","JavaScript","HTML","CSS"],description:"가진 재료로 만들 수 있는 칵테일의 레시피 제공 및 Alcohol lover들을 위한 커뮤니티",duration:"2021.11.05~2022.01.24",part:["Frontend","Server","Plan"],role:'\n 술 종류, 제품명, 재료 등을 검색해 해당 키워드가 포함되는 레시피를 조회할 수 있습니다.\n 해당 레시피는 모달창으로 상세 조회가 가능합니다.\n\n 홈에서는 결정을 어려워하는 사용자를 위한 랜덤 추천 기능을 제공합니다.\n\n 우리동네 주류매장 기능은 카카오 map API를 사용하여 사용자의 위치 주변의 주류매장을 조회할 수 있습니다.\n 위치를 공유하기 싫거나, 다른 위치를 조회하고 싶다면 검색 기능을 통해 원하는 위치를 조회할 수 있습니다.\n\n 배포 후 사용자를 모으기 위해 "나와 어울리는 술 테스트"를 만들었습니다.\n MBTI를 기반으로 술과 관련된 질문으로 각자 어울리는 칵테일을 추천해주는 서비스입니다.\n 해당 결과를 공유하면서 사용자를 모으고자 했습니다.\n '},{id:1,title:"Hi Alcohol v.2",skills:["React","JavaScript","SCSS"],description:"가진 재료로 만들 수 있는 칵테일의 레시피 제공 및 Alcohol lover들을 위한 커뮤니티",duration:"2022.06.12~2022.09.25",part:["Frontend","Plan"],git:"https://github.com/HiAlcohol/HiAlcohol_react",role:"\n 기존에 만들어 운영했던 Hi Alcohol의 리뉴얼 버전입니다.\n 기존 프로젝트의 기능을 유지하면서, 기존 프로젝트의 단점을 보완하고, 사용자의 편의성을 높이기 위해 리뉴얼하였습니다.\n React를 도입하며 프론트와 서버를 구분하였습니다.\n 관리자 모드를 추가하여 운영이 편리하도록 했습니다.\n\n 술 종류, 제품명, 재료 등을 검색해 해당 키워드가 포함되는 레시피를 조회할 수 있습니다.\n 해당 레시피는 모달창으로 상세 조회가 가능합니다.\n\n 홈에서는 결정을 어려워하는 사용자를 위한 랜덤 추천 기능을 제공합니다.\n\n 우리동네 주류매장 기능은 카카오 map API를 사용하여 사용자의 위치 주변의 주류매장을 조회할 수 있습니다.\n 위치를 공유하기 싫거나, 다른 위치를 조회하고 싶다면 검색 기능을 통해 원하는 위치를 조회할 수 있습니다.\n\n 건의 게시판을 통해 사용자의 의견을 받을 수 있습니다.\n\n 게시글/댓글 신고 기능을 통해 부적절한 게시글/댓글을 신고할 수 있습니다.\n 관리자는 신고된 게시글/댓글을 모아 볼 수 있으며, 신고된 게시글/댓글을 숨기거나 나타내게 할 수 있습니다.\n\n 관리자는 레시피를 수정하거나 추가할 수 있습니다.\n\n 수익을 위한 카카오 adfit 광고를 추가하였습니다.\n "},{id:2,title:"withParents",skills:["React-native","cli","JavaScript","StyleSheet"],description:"고령층 부모의 헬스케어와 커뮤니케이션을 위한 서비스",duration:"2022.11.15~2023.03.30",part:["Frontend","Plan","Design","Lead"],git:"https://github.com/GDSC-sswu-A/WithParentsFront",role:"\n 홈에서 오늘 날짜, 가족 리스트, 오늘 복용할 약, 갤러리의 최신 사진을 조회할 수 있도록 했습니다.\n\n 홈의 설정에 들어가 새로운 가족 생성이 가능하며, 가족 id와 password를 이용해 가족 등록이 가능합니다.\n 설정 화면에서 본인의 가족 id, password 조회가 가능해, 다른 가족에게 공유할 수 있습니다.\n\n Google Maps를 이용해 부모님의 최근 위치를 조회하고자 했습니다.\n 또한 부모님의 마지막 접속 시간을 조회해 자녀의 걱정을 덜고자 했습니다.\n \n 가족이 함께 공유할 수 있는 공동 캘린더를 만들었습니다.\n react-native-calendars를 사용하여 달력을 조회하고, 가족 공동 일정을 모달창을 통해 조회, 삭제, 작성, 수정이 가능합니다.\n "},{id:3,title:"Pycon Korea 2023",skills:["React","Next","TypeScript","Stiches","Eslint+Prettier"],description:"세계 각국의 파이썬 프로그래밍 언어 커뮤니티에서 주관하는 비영리 컨퍼런스 “파이콘”의 2023 한국 홈페이지",duration:"2023.01.26~",part:["Frontend"],git:"https://github.com/pythonkr/pyconkr-2023-frontend",link:"https://2023.pycon.kr/",role:"\n FAQ에서 사용될 Toggle 컴포넌트를 구현했습니다.\n \n 파이콘에서 진행되는 세션을 조회할 수 있는 세션 목록 페이지를 구현했습니다.\n "},{id:4,title:"GDSC SSWU",skills:["React","Next","TypeScript","Styled-component","Eslint+Prettier"],description:"Google Developer Students Club의 성신여자대학교 4기 프로젝트 소개 홈페이지",duration:"2023.04.20~2023.05.15",part:["Frontend"],git:"https://github.com/alreadynyeong/GDSC-SSWU-PAGE",link:"https://alreadynyeong.github.io/GDSC-SSWU-PAGE/",role:"\n 효율적인 개발을 위해 버튼, 네비게이션 바, 하단의 동아리 정보 등의 컴포넌트를 만들어 사용했습니다.\n \n 1인 프로젝트로 진행되어 모든 화면을 구현했습니다.\n 이 서비스에서는 홈에서의 기본적인 정보와 동아리 소개, 프로젝트 목록, 팀 별 프로젝트 상세보기를 제공합니다.\n\n 사용자가 모바일 화면으로 볼 것을 고려하여 반응형으로 구현했습니다.\n 이때 window.innerWidth를 이용해 Mobile, PC 구분했습니다.\n\n 요즘 트렌드에 맞게 다크모드 역시 추가했습니다.\n 버튼을 통해 다크모드/라이트모드 설정이 가능하며, @/styles/Theme.ts 파일에 테마별 색을 설정했습니다.\n ThemeProvider를 사용하여 테마를 적용했습니다.\n "},{id:5,title:"수정광산",skills:["React-native","cli","TypeScript","StyleSheet"],description:"성신여자대학교 학생들을 위한 자체 커뮤니티 어플",duration:"2022.10.13 ~",part:["Frontend"],link:"https://play.google.com/store/apps/details?id=com.crystalminefrontend&hl=ko&gl=US",role:"\n 푸시알림을 받기 위한 iOS 환경에서의 설정을 했습니다.\n\n 구글 AdMob을 사용하기 위해 AdMob 계정을 만들고, 광고를 추가했습니다.\n\n 졸업생의 학교 Gmail 계정이 사용 불가능해져서 졸업생이 재인증을 할 수 없는 문제가 있었습니다. \n 이를 해결하기 위해 졸업생이 second Email을 등록하고 삭제할 수 있도록 구현했습니다.\n\n 사용자들의 편의를 위한 채팅 기능을 추가했습니다.\n 채팅 리스트를 조회할 수 있고, 편집 및 정렬이 가능합니다.\n 채팅방에서는 채팅을 전송할 수 있고, 갤러리 및 촬영을 통해 이미지를 전송할 수 있도록 했습니다.\n 실시간으로 채팅이 가능하며, 상대방이 있었는지의 여부도 확인 가능합니다.\n 채팅방에서 상대를 차단하거나 나갈 수 있습니다.\n "},{id:6,title:"Re:MEMORY",skills:["React-native","expo","TypeScript","StyleSheet"],description:"챗GPT가 되찾아준 나의 소중한 기억. 어린 시절 추억의 키워드를 입력해 내 추억을 이미지로 기록하고 기억을 공유하는 서비스",duration:"2023.06.11~2023.06.12",part:["Frontend"],git:"https://github.com/4th-Neordinary-HACKATHON-Team-A/Web",role:"\n expo-linear-gradient를 이용한 그라데이션 버튼과 input 테마를 만들었습니다.\n\n Stack Navigation을 사용해 화면 이동이 가능합니다.\n\n OnBoarding 화면에서는 닉네임을 입력받습니다.\n 이때 닉네임은 AsyncStorage에 저장했습니다\n\n 채팅 형식의 화면에서 추억을 만들기 위한 정보를 사용자에게 입력 받아 저장했습니다.\n 사용자가 입력한 정보는 리스트 형태로 서버에 전달됩니다.\n IOS 환경에서 input 창이 가려지는 문제를 해결하기 위해 Keyboard, KeyboardEvent를 사용했습니다.\n \n 추억 이미지 결과 페이지에서는 이미지 저장 기능이 존재합니다.\n 이때 react-native-easy-toast를 이용해 토스트 메시지를 생성했습니다.\n "},{id:7,title:"Green Quset",skills:["React","TypeScript","Styled-component","Eslint+Prettier","Recoil"],description:"여행지에서 미션을 찾아 수행하고 소통하며 나만의 식물을 키우는 서비스",duration:"2023.07.03~2023.07.04",part:["Frontend"],git:"https://github.com/UMCHackathon/Hackathon_client",role:"\n 찾은 미션을 확인하고 댓글을 통해 서로의 미션을 볼 수 있습니다.\n 해당 프로젝트는 해커톤에서 진행되어 시간이 부족했습니다.\n 그래서 Recoil을 사용해 데이터를 보여주는 형식으로 임시 구현했습니다.\n 사진과 텍스트가 업로드 가능하며, 사진은 미리보기 기능이 있습니다.\n\n input과 textarea를 이용해 만든 [미션 추가 페이지]에서 사용자가 직접 미션 추가가 가능합니다.\n\n 모바일 화면에 최적화시키기 위해 메뉴는 햄버거 바를 이용해 접을 수 있도록 구현했습니다.\n 해당 메뉴에서 화면 이동이 가능합니다.\n "},{id:8,title:"Todis",skills:["React","TypeScript","Styled-component","Eslint+Prettier"],description:"날씨에 맞는 코디 포인트 추천! 귀여운 아바타로 친구와 OOTD도 공유가 가능한 웹사이트",duration:"2023.07.12~2023.08.23",part:["Frontend","Part Leader"],git:"https://github.com/Todis-UMC/Todis_web",link:"http://todis.s3-website.ap-northeast-2.amazonaws.com/",role:"\n EsLint+Prettier를 사용해 코드 스타일을 일관성 있게 유지했습니다.\n Font를 편하게 사용하기 위해 CSSProperties를 사용해 스타일을 정의했습니다.\n\n Input 컴포넌트를 만들었습니다. 기본적인 text input으로 사용이 가능하며 type으로 password를 줄 경우에는 입력 값을 숨길 수 있는 버튼이 활성화됩니다.\n 로그인, 회원가입 등의 화면 구현을 위한 컴포넌트를 만들어 사용했습니다.\n\n 이메일과 비밀번호를 통해 로그인이 가능하며, 로그인 시에는 토큰을 발급받아 localStorage에 저장했습니다.\n 구글과 카카오를 통한 로그인도 가능합니다.\n\n 회원가입 시에는 이메일, 비밀번호, 닉네임을 입력받습니다.\n 닉네임과 비밀번호는 회원정보 수정 페이지에서 변경이 가능합니다.\n 비밀번호를 잊은 사용자를 위한 비밀번호 찾기 페이지도 구현했습니다. 사용자가 입력한 이메일로 임시 비밀번호가 발급됩니다.\n\n 모바일 상태의 사이드 메뉴를 구현했습니다.\n keyframes를 사용해 애니메이션을 추가했습니다.\n\n 모바일 사용자를 위한 반응형 웹을 구현했습니다.\n styled-component에서 @media를 사용해 화면 크기에 따라 스타일을 변경했습니다.\n 스타일의 변경이 많은 경우 window.innerWidth를 이용해 만든 컴포넌트를 활용해 화면 크기에 따라 컴포넌트를 렌더링했습니다.\n\n react-toastify를 사용해 토스트 메시지를 구현했습니다.\n react-spinners를 사용해 로딩 중임을 알려주는 컴포넌트를 구현했습니다.\n "},{id:9,title:"Landing Page",skills:["React","TypeScript","Styled-component","Eslint+Prettier"],description:"Landing Page",duration:"2023.08.08~2023.09.08",part:["Frontend"],git:"https://github.com/DLenc/Randing",role:"\n EsLint+Prettier를 사용해 코드 스타일을 일관성 있게 유지했습니다.\n Font를 편하게 사용하기 위해 CSSProperties를 사용해 스타일을 정의했습니다.\n Color를 편하게 사용하기 위해 Color를 정의한 파일을 만들어 사용했습니다.\n\n 랜딩 페이지의 최상단의 표지를 구현했습니다.\n 중간의 배너를 구현했습니다.\n\n 층간 소음이 발생할 정도의 소음이 생기면 알려주는 기능을 소개하는 섹션을 구현했습니다.\n\n 디자인 상 페이지에서 빠지게 되었지만,\n react-you-tube를 사용해 유튜브 영상을 불러오는 기능을 구현했습니다.\n &::-webkit-scrollbar를 이용해 스크롤바의 스타일을 변경했습니다.\n "}]},9329:function(n,t,e){"use strict";e.r(t),e.d(t,{default:function(){return R}});var i=e(2729),r=e(5893),o=e(5675),l=e.n(o),d=e(1163),a=e(1686);function c(){let n=(0,i._)(["\n display: inline-block;\n border: 1px solid gray;\n margin-bottom: 10px;\n margin-right: 10px;\n padding: 7px;\n border-radius: 12px;\n font-size: 0.8rem;\n color: darkgreen;\n"]);return c=function(){return n},n}let s=a.ZP.div.withConfig({componentId:"sc-9ff1667b-0"})(c());var p=n=>{let{part:t}=n;return(0,r.jsx)("div",{children:null==t?void 0:t.map(n=>(0,r.jsx)(s,{children:n},n))})};function u(){let n=(0,i._)(["\n display: inline-block;\n border: 1px solid gray;\n margin-bottom: 50px;\n margin-right: 10px;\n padding: 7px;\n border-radius: 12px;\n font-size: 0.8rem;\n color: green;\n"]);return u=function(){return n},n}let h=a.ZP.div.withConfig({componentId:"sc-2f9b5a96-0"})(u());var g=n=>{let{skills:t}=n;return(0,r.jsx)("div",{children:null==t?void 0:t.map(n=>(0,r.jsx)(h,{children:n},n))})},f=e(1765);function m(){let n=(0,i._)(["\n width: 100%;\n padding: 0 10%;\n margin-top: 70px;\n margin-bottom: 150px;\n"]);return m=function(){return n},n}function x(){let n=(0,i._)(["\n font-size: 1.5rem;\n font-weight: bold;\n padding: 30px;\n"]);return x=function(){return n},n}function b(){let n=(0,i._)(["\n width: 500px;\n height: 300px;\n overflow: hidden;\n border-radius: 10px;\n box-shadow: 5px 5px 5px 1px lightgray;\n border: 1px solid lightgray;\n margin: 0 auto;\n"]);return b=function(){return n},n}function y(){let n=(0,i._)(["\n margin: 0 auto;\n width: fit-content;\n margin-top: 13px;\n"]);return y=function(){return n},n}function S(){let n=(0,i._)(["\n font-size: 0.8rem;\n color: gray;\n margin-left: 10px;\n"]);return S=function(){return n},n}function v(){let n=(0,i._)(["\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 2px solid black;\n margin-bottom: 30px;\n padding-right: 30px;\n"]);return v=function(){return n},n}function w(){let n=(0,i._)(["\n margin-top: 30px;\n align-items: center;\n > p {\n white-space: pre-line;\n line-height: 2;\n }\n"]);return w=function(){return n},n}function k(){let n=(0,i._)(["\n font-size: 1.2rem;\n font-weight: bold;\n margin-right: 10px;\n margin-top: 40px;\n padding-bottom: 40px;\n color: gray;\n border-bottom: 1px solid gray;\n"]);return k=function(){return n},n}let P=a.ZP.div.withConfig({componentId:"sc-c3ef246e-0"})(m()),C=a.ZP.div.withConfig({componentId:"sc-c3ef246e-1"})(x()),_=a.ZP.div.withConfig({componentId:"sc-c3ef246e-2"})(b()),j=a.ZP.div.withConfig({componentId:"sc-c3ef246e-3"})(y()),T=a.ZP.span.withConfig({componentId:"sc-c3ef246e-4"})(S()),A=a.ZP.div.withConfig({componentId:"sc-c3ef246e-5"})(v()),E=a.ZP.div.withConfig({componentId:"sc-c3ef246e-6"})(w()),I=a.ZP.div.withConfig({componentId:"sc-c3ef246e-7"})(k());var R=()=>{var n;let t=(0,d.useRouter)(),e=Number(t.query.id)||(null===(n=t.query)||void 0===n?void 0:n.id),i=f.l.find(n=>n.id==e);return i?(0,r.jsxs)(P,{children:[(0,r.jsxs)(A,{children:[(0,r.jsxs)(C,{children:[null==i?void 0:i.title," ",(0,r.jsx)(T,{children:null==i?void 0:i.duration})]}),(0,r.jsxs)("div",{children:[i.git&&(0,r.jsx)("a",{href:i.git,target:"_blank",rel:"noopener noreferrer",children:"GIT"}),i.git&&i.link&&(0,r.jsx)("span",{children:" | "}),i.link&&(0,r.jsx)("a",{href:i.link,target:"_blank",rel:"noopener noreferrer",children:"LINK"})]})]}),(0,r.jsx)(p,{part:null==i?void 0:i.part}),(0,r.jsx)(g,{skills:null==i?void 0:i.skills}),(0,r.jsx)(_,{children:(0,r.jsx)(l(),{src:"https://alreadynyeong.github.io/Portfolio/projects/".concat(null==i?void 0:i.id,".png"),width:500,height:300,alt:""})}),(0,r.jsxs)(j,{children:[(0,r.jsx)(I,{children:null==i?void 0:i.description}),(0,r.jsx)(E,{children:(0,r.jsx)("p",{children:null==i?void 0:i.role})})]})]}):(0,r.jsx)("div",{children:"프로젝트를 찾을 수 없습니다."})}}},function(n){n.O(0,[774,888,179],function(){return n(n.s=6647)}),_N_E=n.O()}]); \ No newline at end of file +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[512],{6647:function(n,t,i){(window.__NEXT_P=window.__NEXT_P||[]).push(["/project",function(){return i(9329)}])},1765:function(n,t,i){"use strict";i.d(t,{l:function(){return e}});let e=[{id:0,title:"Hi Alcohol",skills:["Node.js","JavaScript","HTML","CSS"],description:"가진 재료로 만들 수 있는 칵테일의 레시피 제공 및 Alcohol lover들을 위한 커뮤니티",duration:"2021.11.05~2022.01.24",part:["Frontend","Server","Plan"],role:'\n 술 종류, 제품명, 재료 등을 검색해 해당 키워드가 포함되는 레시피를 조회할 수 있습니다.\n 해당 레시피는 모달창으로 상세 조회가 가능합니다.\n\n 홈에서는 결정을 어려워하는 사용자를 위한 랜덤 추천 기능을 제공합니다.\n\n 우리동네 주류매장 기능은 카카오 map API를 사용하여 사용자의 위치 주변의 주류매장을 조회할 수 있습니다.\n 위치를 공유하기 싫거나, 다른 위치를 조회하고 싶다면 검색 기능을 통해 원하는 위치를 조회할 수 있습니다.\n\n 배포 후 사용자를 모으기 위해 "나와 어울리는 술 테스트"를 만들었습니다.\n MBTI를 기반으로 술과 관련된 질문으로 각자 어울리는 칵테일을 추천해주는 서비스입니다.\n 해당 결과를 공유하면서 사용자를 모으고자 했습니다.\n '},{id:1,title:"Hi Alcohol v.2",skills:["React","JavaScript","SCSS"],description:"가진 재료로 만들 수 있는 칵테일의 레시피 제공 및 Alcohol lover들을 위한 커뮤니티",duration:"2022.06.12~2022.09.25",part:["Frontend","Plan"],git:"https://github.com/HiAlcohol/HiAlcohol_react",role:"\n 기존에 만들어 운영했던 Hi Alcohol의 리뉴얼 버전입니다.\n 기존 프로젝트의 기능을 유지하면서, 기존 프로젝트의 단점을 보완하고, 사용자의 편의성을 높이기 위해 리뉴얼하였습니다.\n React를 도입하며 프론트와 서버를 구분하였습니다.\n 관리자 모드를 추가하여 운영이 편리하도록 했습니다.\n\n 술 종류, 제품명, 재료 등을 검색해 해당 키워드가 포함되는 레시피를 조회할 수 있습니다.\n 해당 레시피는 모달창으로 상세 조회가 가능합니다.\n\n 홈에서는 결정을 어려워하는 사용자를 위한 랜덤 추천 기능을 제공합니다.\n\n 우리동네 주류매장 기능은 카카오 map API를 사용하여 사용자의 위치 주변의 주류매장을 조회할 수 있습니다.\n 위치를 공유하기 싫거나, 다른 위치를 조회하고 싶다면 검색 기능을 통해 원하는 위치를 조회할 수 있습니다.\n\n 건의 게시판을 통해 사용자의 의견을 받을 수 있습니다.\n\n 게시글/댓글 신고 기능을 통해 부적절한 게시글/댓글을 신고할 수 있습니다.\n 관리자는 신고된 게시글/댓글을 모아 볼 수 있으며, 신고된 게시글/댓글을 숨기거나 나타내게 할 수 있습니다.\n\n 관리자는 레시피를 수정하거나 추가할 수 있습니다.\n\n 수익을 위한 카카오 adfit 광고를 추가하였습니다.\n "},{id:2,title:"withParents",skills:["React-native","cli","JavaScript","StyleSheet"],description:"고령층 부모의 헬스케어와 커뮤니케이션을 위한 서비스",duration:"2022.11.15~2023.03.30",part:["Frontend","Plan","Design","Lead"],git:"https://github.com/GDSC-sswu-A/WithParentsFront",role:"\n 홈에서 오늘 날짜, 가족 리스트, 오늘 복용할 약, 갤러리의 최신 사진을 조회할 수 있도록 했습니다.\n\n 홈의 설정에 들어가 새로운 가족 생성이 가능하며, 가족 id와 password를 이용해 가족 등록이 가능합니다.\n 설정 화면에서 본인의 가족 id, password 조회가 가능해, 다른 가족에게 공유할 수 있습니다.\n\n Google Maps를 이용해 부모님의 최근 위치를 조회하고자 했습니다.\n 또한 부모님의 마지막 접속 시간을 조회해 자녀의 걱정을 덜고자 했습니다.\n \n 가족이 함께 공유할 수 있는 공동 캘린더를 만들었습니다.\n react-native-calendars를 사용하여 달력을 조회하고, 가족 공동 일정을 모달창을 통해 조회, 삭제, 작성, 수정이 가능합니다.\n "},{id:3,title:"Pycon Korea 2023",skills:["React","Next","TypeScript","Stiches","Eslint+Prettier"],description:"세계 각국의 파이썬 프로그래밍 언어 커뮤니티에서 주관하는 비영리 컨퍼런스 “파이콘”의 2023 한국 홈페이지",duration:"2023.01.26~",part:["Frontend"],git:"https://github.com/pythonkr/pyconkr-2023-frontend",link:"https://2023.pycon.kr/",role:"\n FAQ에서 사용될 Toggle 컴포넌트를 구현했습니다.\n \n 파이콘에서 진행되는 세션을 조회할 수 있는 세션 목록 페이지를 구현했습니다.\n "},{id:4,title:"GDSC SSWU",skills:["React","Next","TypeScript","Styled-component","Eslint+Prettier"],description:"Google Developer Students Club의 성신여자대학교 4기 프로젝트 소개 홈페이지",duration:"2023.04.20~2023.05.15",part:["Frontend"],git:"https://github.com/alreadynyeong/GDSC-SSWU-PAGE",link:"https://alreadynyeong.github.io/GDSC-SSWU-PAGE/",role:"\n 효율적인 개발을 위해 버튼, 네비게이션 바, 하단의 동아리 정보 등의 컴포넌트를 만들어 사용했습니다.\n \n 1인 프로젝트로 진행되어 모든 화면을 구현했습니다.\n 이 서비스에서는 홈에서의 기본적인 정보와 동아리 소개, 프로젝트 목록, 팀 별 프로젝트 상세보기를 제공합니다.\n\n 사용자가 모바일 화면으로 볼 것을 고려하여 반응형으로 구현했습니다.\n 이때 window.innerWidth를 이용해 Mobile, PC 구분했습니다.\n\n 요즘 트렌드에 맞게 다크모드 역시 추가했습니다.\n 버튼을 통해 다크모드/라이트모드 설정이 가능하며, @/styles/Theme.ts 파일에 테마별 색을 설정했습니다.\n ThemeProvider를 사용하여 테마를 적용했습니다.\n "},{id:5,title:"수정광산",skills:["React-native","cli","TypeScript","StyleSheet"],description:"성신여자대학교 학생들을 위한 자체 커뮤니티 어플",duration:"2022.10.13 ~",part:["Frontend"],link:"https://play.google.com/store/apps/details?id=com.crystalminefrontend&hl=ko&gl=US",role:"\n 푸시알림을 받기 위한 iOS 환경에서의 설정을 했습니다.\n\n 구글 AdMob을 사용하기 위해 AdMob 계정을 만들고, 광고를 추가했습니다.\n\n 졸업생의 학교 Gmail 계정이 사용 불가능해져서 졸업생이 재인증을 할 수 없는 문제가 있었습니다. \n 이를 해결하기 위해 졸업생이 second Email을 등록하고 삭제할 수 있도록 구현했습니다.\n\n 사용자들의 편의를 위한 채팅 기능을 추가했습니다.\n 채팅 리스트를 조회할 수 있고, 편집 및 정렬이 가능합니다.\n 채팅방에서는 채팅을 전송할 수 있고, 갤러리 및 촬영을 통해 이미지를 전송할 수 있도록 했습니다.\n 실시간으로 채팅이 가능하며, 상대방이 있었는지의 여부도 확인 가능합니다.\n 채팅방에서 상대를 차단하거나 나갈 수 있습니다.\n "},{id:6,title:"Re:MEMORY",skills:["React-native","expo","TypeScript","StyleSheet"],description:"챗GPT가 되찾아준 나의 소중한 기억. 어린 시절 추억의 키워드를 입력해 내 추억을 이미지로 기록하고 기억을 공유하는 서비스",duration:"2023.06.11~2023.06.12",part:["Frontend"],git:"https://github.com/4th-Neordinary-HACKATHON-Team-A/Web",role:"\n expo-linear-gradient를 이용한 그라데이션 버튼과 input 테마를 만들었습니다.\n\n Stack Navigation을 사용해 화면 이동이 가능합니다.\n\n OnBoarding 화면에서는 닉네임을 입력받습니다.\n 이때 닉네임은 AsyncStorage에 저장했습니다\n\n 채팅 형식의 화면에서 추억을 만들기 위한 정보를 사용자에게 입력 받아 저장했습니다.\n 사용자가 입력한 정보는 리스트 형태로 서버에 전달됩니다.\n IOS 환경에서 input 창이 가려지는 문제를 해결하기 위해 Keyboard, KeyboardEvent를 사용했습니다.\n \n 추억 이미지 결과 페이지에서는 이미지 저장 기능이 존재합니다.\n 이때 react-native-easy-toast를 이용해 토스트 메시지를 생성했습니다.\n "},{id:7,title:"Green Quset",skills:["React","TypeScript","Styled-component","Eslint+Prettier","Recoil"],description:"여행지에서 미션을 찾아 수행하고 소통하며 나만의 식물을 키우는 서비스",duration:"2023.07.03~2023.07.04",part:["Frontend"],git:"https://github.com/UMCHackathon/Hackathon_client",role:"\n 찾은 미션을 확인하고 댓글을 통해 서로의 미션을 볼 수 있습니다.\n 해당 프로젝트는 해커톤에서 진행되어 시간이 부족했습니다.\n 그래서 Recoil을 사용해 데이터를 보여주는 형식으로 임시 구현했습니다.\n 사진과 텍스트가 업로드 가능하며, 사진은 미리보기 기능이 있습니다.\n\n input과 textarea를 이용해 만든 [미션 추가 페이지]에서 사용자가 직접 미션 추가가 가능합니다.\n\n 모바일 화면에 최적화시키기 위해 메뉴는 햄버거 바를 이용해 접을 수 있도록 구현했습니다.\n 해당 메뉴에서 화면 이동이 가능합니다.\n "},{id:8,title:"Todis",skills:["React","TypeScript","Styled-component","Eslint+Prettier"],description:"날씨에 맞는 코디 포인트 추천! 귀여운 아바타로 친구와 OOTD도 공유가 가능한 웹사이트",duration:"2023.07.12~2023.08.23",part:["Frontend","Part Leader"],git:"https://github.com/Todis-UMC/Todis_web",link:"http://todis.s3-website.ap-northeast-2.amazonaws.com/",role:"\n EsLint+Prettier를 사용해 코드 스타일을 일관성 있게 유지했습니다.\n Font를 편하게 사용하기 위해 CSSProperties를 사용해 스타일을 정의했습니다.\n\n Input 컴포넌트를 만들었습니다. 기본적인 text input으로 사용이 가능하며 type으로 password를 줄 경우에는 입력 값을 숨길 수 있는 버튼이 활성화됩니다.\n 로그인, 회원가입 등의 화면 구현을 위한 컴포넌트를 만들어 사용했습니다.\n\n 이메일과 비밀번호를 통해 로그인이 가능하며, 로그인 시에는 토큰을 발급받아 localStorage에 저장했습니다.\n 구글과 카카오를 통한 로그인도 가능합니다.\n\n 회원가입 시에는 이메일, 비밀번호, 닉네임을 입력받습니다.\n 닉네임과 비밀번호는 회원정보 수정 페이지에서 변경이 가능합니다.\n 비밀번호를 잊은 사용자를 위한 비밀번호 찾기 페이지도 구현했습니다. 사용자가 입력한 이메일로 임시 비밀번호가 발급됩니다.\n\n 모바일 상태의 사이드 메뉴를 구현했습니다.\n keyframes를 사용해 애니메이션을 추가했습니다.\n\n 모바일 사용자를 위한 반응형 웹을 구현했습니다.\n styled-component에서 @media를 사용해 화면 크기에 따라 스타일을 변경했습니다.\n 스타일의 변경이 많은 경우 window.innerWidth를 이용해 만든 컴포넌트를 활용해 화면 크기에 따라 컴포넌트를 렌더링했습니다.\n\n react-toastify를 사용해 토스트 메시지를 구현했습니다.\n react-spinners를 사용해 로딩 중임을 알려주는 컴포넌트를 구현했습니다.\n "},{id:9,title:"Landing Page",skills:["React","TypeScript","Styled-component","Eslint+Prettier"],description:"Landing Page",duration:"2023.08.08~2023.09.08",part:["Frontend"],git:"https://github.com/DLenc/Randing",role:"\n EsLint+Prettier를 사용해 코드 스타일을 일관성 있게 유지했습니다.\n Font를 편하게 사용하기 위해 CSSProperties를 사용해 스타일을 정의했습니다.\n Color를 편하게 사용하기 위해 Color를 정의한 파일을 만들어 사용했습니다.\n\n 랜딩 페이지의 최상단의 표지를 구현했습니다.\n 중간의 배너를 구현했습니다.\n\n 층간 소음이 발생할 정도의 소음이 생기면 알려주는 기능을 소개하는 섹션을 구현했습니다.\n\n 디자인 상 페이지에서 빠지게 되었지만,\n react-you-tube를 사용해 유튜브 영상을 불러오는 기능을 구현했습니다.\n &::-webkit-scrollbar를 이용해 스크롤바의 스타일을 변경했습니다.\n "}]},9329:function(n,t,i){"use strict";i.r(t),i.d(t,{default:function(){return F}});var e=i(2729),r=i(5893),o=i(5675),l=i.n(o),d=i(1163),c=i(1852),a=i(1686);function s(){let n=(0,e._)(["\n display: inline-block;\n border: 1px solid gray;\n margin-bottom: 10px;\n margin-right: 10px;\n padding: 7px;\n border-radius: 12px;\n font-size: 0.8rem;\n color: darkgreen;\n"]);return s=function(){return n},n}let p=a.ZP.div.withConfig({componentId:"sc-9ff1667b-0"})(s());var u=n=>{let{part:t}=n;return(0,r.jsx)("div",{children:null==t?void 0:t.map(n=>(0,r.jsx)(p,{children:n},n))})};function h(){let n=(0,e._)(["\n display: inline-block;\n border: 1px solid gray;\n margin-bottom: 50px;\n margin-right: 10px;\n padding: 7px;\n border-radius: 12px;\n font-size: 0.8rem;\n color: green;\n @media (max-width: 768px) {\n margin-bottom: 10px;\n }\n"]);return h=function(){return n},n}let g=a.ZP.div.withConfig({componentId:"sc-48bc2d60-0"})(h());var m=n=>{let{skills:t}=n;return(0,r.jsx)("div",{children:null==t?void 0:t.map(n=>(0,r.jsx)(g,{children:n},n))})},x=i(1765);function f(){let n=(0,e._)(["\n width: 100%;\n padding: 0 10%;\n margin-top: 70px;\n margin-bottom: 150px;\n"]);return f=function(){return n},n}function b(){let n=(0,e._)(["\n font-size: 1.5rem;\n font-weight: bold;\n padding: 30px;\n @media (max-width: 768px) {\n padding: 10px;\n }\n"]);return b=function(){return n},n}function y(){let n=(0,e._)(["\n width: 500px;\n height: 300px;\n overflow: hidden;\n border-radius: 10px;\n box-shadow: 5px 5px 5px 1px lightgray;\n border: 1px solid lightgray;\n margin: 0 auto;\n @media (max-width: 768px) {\n width: 300px;\n height: 200px;\n }\n"]);return y=function(){return n},n}function S(){let n=(0,e._)(["\n margin: 0 auto;\n width: fit-content;\n margin-top: 13px;\n"]);return S=function(){return n},n}function v(){let n=(0,e._)(["\n font-size: 0.8rem;\n color: gray;\n margin-left: 10px;\n"]);return v=function(){return n},n}function w(){let n=(0,e._)(["\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 2px solid black;\n margin-bottom: 30px;\n padding-right: 30px;\n"]);return w=function(){return n},n}function k(){let n=(0,e._)(["\n margin-top: 30px;\n align-items: center;\n > p {\n white-space: pre-line;\n line-height: 2;\n }\n"]);return k=function(){return n},n}function P(){let n=(0,e._)(["\n font-size: 1.2rem;\n font-weight: bold;\n margin-right: 10px;\n margin-top: 40px;\n padding-bottom: 40px;\n color: gray;\n border-bottom: 1px solid gray;\n"]);return P=function(){return n},n}let C=a.ZP.div.withConfig({componentId:"sc-bcc69c1-0"})(f()),_=a.ZP.div.withConfig({componentId:"sc-bcc69c1-1"})(b()),j=a.ZP.div.withConfig({componentId:"sc-bcc69c1-2"})(y()),T=a.ZP.div.withConfig({componentId:"sc-bcc69c1-3"})(S()),A=a.ZP.span.withConfig({componentId:"sc-bcc69c1-4"})(v()),E=a.ZP.div.withConfig({componentId:"sc-bcc69c1-5"})(w()),I=a.ZP.div.withConfig({componentId:"sc-bcc69c1-6"})(k()),R=a.ZP.div.withConfig({componentId:"sc-bcc69c1-7"})(P());var F=()=>{var n;let t=(0,d.useRouter)(),i=Number(t.query.id)||(null===(n=t.query)||void 0===n?void 0:n.id),e=x.l.find(n=>n.id==i),o=(0,c.useMediaQuery)({query:"(max-width: 768px)"});return e?(0,r.jsxs)(C,{children:[(0,r.jsxs)(E,{children:[(0,r.jsxs)(_,{children:[null==e?void 0:e.title," ",(0,r.jsx)(A,{children:null==e?void 0:e.duration})]}),(0,r.jsxs)("div",{children:[e.git&&(0,r.jsx)("a",{href:e.git,target:"_blank",rel:"noopener noreferrer",children:"GIT"}),e.git&&e.link&&(0,r.jsx)("span",{children:" | "}),e.link&&(0,r.jsx)("a",{href:e.link,target:"_blank",rel:"noopener noreferrer",children:"LINK"})]})]}),(0,r.jsx)(u,{part:null==e?void 0:e.part}),(0,r.jsx)(m,{skills:null==e?void 0:e.skills}),(0,r.jsx)(j,{children:(0,r.jsx)(l(),{src:"https://alreadynyeong.github.io/Portfolio/projects/".concat(null==e?void 0:e.id,".png"),width:o?300:500,height:o?200:300,alt:""})}),(0,r.jsxs)(T,{children:[(0,r.jsx)(R,{children:null==e?void 0:e.description}),(0,r.jsx)(I,{children:(0,r.jsx)("p",{children:null==e?void 0:e.role})})]})]}):(0,r.jsx)("div",{children:"프로젝트를 찾을 수 없습니다."})}}},function(n){n.O(0,[774,888,179],function(){return n(n.s=6647)}),_N_E=n.O()}]); \ No newline at end of file diff --git a/_next/static/chunks/pages/projects-67965805470a1711.js b/_next/static/chunks/pages/projects-a75982bc91ac7a26.js similarity index 82% rename from _next/static/chunks/pages/projects-67965805470a1711.js rename to _next/static/chunks/pages/projects-a75982bc91ac7a26.js index cd475c8..a33ac6a 100644 --- a/_next/static/chunks/pages/projects-67965805470a1711.js +++ b/_next/static/chunks/pages/projects-a75982bc91ac7a26.js @@ -1 +1 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[327],{6192:function(n,t,e){(window.__NEXT_P=window.__NEXT_P||[]).push(["/projects",function(){return e(1825)}])},1765:function(n,t,e){"use strict";e.d(t,{l:function(){return i}});let i=[{id:0,title:"Hi Alcohol",skills:["Node.js","JavaScript","HTML","CSS"],description:"가진 재료로 만들 수 있는 칵테일의 레시피 제공 및 Alcohol lover들을 위한 커뮤니티",duration:"2021.11.05~2022.01.24",part:["Frontend","Server","Plan"],role:'\n 술 종류, 제품명, 재료 등을 검색해 해당 키워드가 포함되는 레시피를 조회할 수 있습니다.\n 해당 레시피는 모달창으로 상세 조회가 가능합니다.\n\n 홈에서는 결정을 어려워하는 사용자를 위한 랜덤 추천 기능을 제공합니다.\n\n 우리동네 주류매장 기능은 카카오 map API를 사용하여 사용자의 위치 주변의 주류매장을 조회할 수 있습니다.\n 위치를 공유하기 싫거나, 다른 위치를 조회하고 싶다면 검색 기능을 통해 원하는 위치를 조회할 수 있습니다.\n\n 배포 후 사용자를 모으기 위해 "나와 어울리는 술 테스트"를 만들었습니다.\n MBTI를 기반으로 술과 관련된 질문으로 각자 어울리는 칵테일을 추천해주는 서비스입니다.\n 해당 결과를 공유하면서 사용자를 모으고자 했습니다.\n '},{id:1,title:"Hi Alcohol v.2",skills:["React","JavaScript","SCSS"],description:"가진 재료로 만들 수 있는 칵테일의 레시피 제공 및 Alcohol lover들을 위한 커뮤니티",duration:"2022.06.12~2022.09.25",part:["Frontend","Plan"],git:"https://github.com/HiAlcohol/HiAlcohol_react",role:"\n 기존에 만들어 운영했던 Hi Alcohol의 리뉴얼 버전입니다.\n 기존 프로젝트의 기능을 유지하면서, 기존 프로젝트의 단점을 보완하고, 사용자의 편의성을 높이기 위해 리뉴얼하였습니다.\n React를 도입하며 프론트와 서버를 구분하였습니다.\n 관리자 모드를 추가하여 운영이 편리하도록 했습니다.\n\n 술 종류, 제품명, 재료 등을 검색해 해당 키워드가 포함되는 레시피를 조회할 수 있습니다.\n 해당 레시피는 모달창으로 상세 조회가 가능합니다.\n\n 홈에서는 결정을 어려워하는 사용자를 위한 랜덤 추천 기능을 제공합니다.\n\n 우리동네 주류매장 기능은 카카오 map API를 사용하여 사용자의 위치 주변의 주류매장을 조회할 수 있습니다.\n 위치를 공유하기 싫거나, 다른 위치를 조회하고 싶다면 검색 기능을 통해 원하는 위치를 조회할 수 있습니다.\n\n 건의 게시판을 통해 사용자의 의견을 받을 수 있습니다.\n\n 게시글/댓글 신고 기능을 통해 부적절한 게시글/댓글을 신고할 수 있습니다.\n 관리자는 신고된 게시글/댓글을 모아 볼 수 있으며, 신고된 게시글/댓글을 숨기거나 나타내게 할 수 있습니다.\n\n 관리자는 레시피를 수정하거나 추가할 수 있습니다.\n\n 수익을 위한 카카오 adfit 광고를 추가하였습니다.\n "},{id:2,title:"withParents",skills:["React-native","cli","JavaScript","StyleSheet"],description:"고령층 부모의 헬스케어와 커뮤니케이션을 위한 서비스",duration:"2022.11.15~2023.03.30",part:["Frontend","Plan","Design","Lead"],git:"https://github.com/GDSC-sswu-A/WithParentsFront",role:"\n 홈에서 오늘 날짜, 가족 리스트, 오늘 복용할 약, 갤러리의 최신 사진을 조회할 수 있도록 했습니다.\n\n 홈의 설정에 들어가 새로운 가족 생성이 가능하며, 가족 id와 password를 이용해 가족 등록이 가능합니다.\n 설정 화면에서 본인의 가족 id, password 조회가 가능해, 다른 가족에게 공유할 수 있습니다.\n\n Google Maps를 이용해 부모님의 최근 위치를 조회하고자 했습니다.\n 또한 부모님의 마지막 접속 시간을 조회해 자녀의 걱정을 덜고자 했습니다.\n \n 가족이 함께 공유할 수 있는 공동 캘린더를 만들었습니다.\n react-native-calendars를 사용하여 달력을 조회하고, 가족 공동 일정을 모달창을 통해 조회, 삭제, 작성, 수정이 가능합니다.\n "},{id:3,title:"Pycon Korea 2023",skills:["React","Next","TypeScript","Stiches","Eslint+Prettier"],description:"세계 각국의 파이썬 프로그래밍 언어 커뮤니티에서 주관하는 비영리 컨퍼런스 “파이콘”의 2023 한국 홈페이지",duration:"2023.01.26~",part:["Frontend"],git:"https://github.com/pythonkr/pyconkr-2023-frontend",link:"https://2023.pycon.kr/",role:"\n FAQ에서 사용될 Toggle 컴포넌트를 구현했습니다.\n \n 파이콘에서 진행되는 세션을 조회할 수 있는 세션 목록 페이지를 구현했습니다.\n "},{id:4,title:"GDSC SSWU",skills:["React","Next","TypeScript","Styled-component","Eslint+Prettier"],description:"Google Developer Students Club의 성신여자대학교 4기 프로젝트 소개 홈페이지",duration:"2023.04.20~2023.05.15",part:["Frontend"],git:"https://github.com/alreadynyeong/GDSC-SSWU-PAGE",link:"https://alreadynyeong.github.io/GDSC-SSWU-PAGE/",role:"\n 효율적인 개발을 위해 버튼, 네비게이션 바, 하단의 동아리 정보 등의 컴포넌트를 만들어 사용했습니다.\n \n 1인 프로젝트로 진행되어 모든 화면을 구현했습니다.\n 이 서비스에서는 홈에서의 기본적인 정보와 동아리 소개, 프로젝트 목록, 팀 별 프로젝트 상세보기를 제공합니다.\n\n 사용자가 모바일 화면으로 볼 것을 고려하여 반응형으로 구현했습니다.\n 이때 window.innerWidth를 이용해 Mobile, PC 구분했습니다.\n\n 요즘 트렌드에 맞게 다크모드 역시 추가했습니다.\n 버튼을 통해 다크모드/라이트모드 설정이 가능하며, @/styles/Theme.ts 파일에 테마별 색을 설정했습니다.\n ThemeProvider를 사용하여 테마를 적용했습니다.\n "},{id:5,title:"수정광산",skills:["React-native","cli","TypeScript","StyleSheet"],description:"성신여자대학교 학생들을 위한 자체 커뮤니티 어플",duration:"2022.10.13 ~",part:["Frontend"],link:"https://play.google.com/store/apps/details?id=com.crystalminefrontend&hl=ko&gl=US",role:"\n 푸시알림을 받기 위한 iOS 환경에서의 설정을 했습니다.\n\n 구글 AdMob을 사용하기 위해 AdMob 계정을 만들고, 광고를 추가했습니다.\n\n 졸업생의 학교 Gmail 계정이 사용 불가능해져서 졸업생이 재인증을 할 수 없는 문제가 있었습니다. \n 이를 해결하기 위해 졸업생이 second Email을 등록하고 삭제할 수 있도록 구현했습니다.\n\n 사용자들의 편의를 위한 채팅 기능을 추가했습니다.\n 채팅 리스트를 조회할 수 있고, 편집 및 정렬이 가능합니다.\n 채팅방에서는 채팅을 전송할 수 있고, 갤러리 및 촬영을 통해 이미지를 전송할 수 있도록 했습니다.\n 실시간으로 채팅이 가능하며, 상대방이 있었는지의 여부도 확인 가능합니다.\n 채팅방에서 상대를 차단하거나 나갈 수 있습니다.\n "},{id:6,title:"Re:MEMORY",skills:["React-native","expo","TypeScript","StyleSheet"],description:"챗GPT가 되찾아준 나의 소중한 기억. 어린 시절 추억의 키워드를 입력해 내 추억을 이미지로 기록하고 기억을 공유하는 서비스",duration:"2023.06.11~2023.06.12",part:["Frontend"],git:"https://github.com/4th-Neordinary-HACKATHON-Team-A/Web",role:"\n expo-linear-gradient를 이용한 그라데이션 버튼과 input 테마를 만들었습니다.\n\n Stack Navigation을 사용해 화면 이동이 가능합니다.\n\n OnBoarding 화면에서는 닉네임을 입력받습니다.\n 이때 닉네임은 AsyncStorage에 저장했습니다\n\n 채팅 형식의 화면에서 추억을 만들기 위한 정보를 사용자에게 입력 받아 저장했습니다.\n 사용자가 입력한 정보는 리스트 형태로 서버에 전달됩니다.\n IOS 환경에서 input 창이 가려지는 문제를 해결하기 위해 Keyboard, KeyboardEvent를 사용했습니다.\n \n 추억 이미지 결과 페이지에서는 이미지 저장 기능이 존재합니다.\n 이때 react-native-easy-toast를 이용해 토스트 메시지를 생성했습니다.\n "},{id:7,title:"Green Quset",skills:["React","TypeScript","Styled-component","Eslint+Prettier","Recoil"],description:"여행지에서 미션을 찾아 수행하고 소통하며 나만의 식물을 키우는 서비스",duration:"2023.07.03~2023.07.04",part:["Frontend"],git:"https://github.com/UMCHackathon/Hackathon_client",role:"\n 찾은 미션을 확인하고 댓글을 통해 서로의 미션을 볼 수 있습니다.\n 해당 프로젝트는 해커톤에서 진행되어 시간이 부족했습니다.\n 그래서 Recoil을 사용해 데이터를 보여주는 형식으로 임시 구현했습니다.\n 사진과 텍스트가 업로드 가능하며, 사진은 미리보기 기능이 있습니다.\n\n input과 textarea를 이용해 만든 [미션 추가 페이지]에서 사용자가 직접 미션 추가가 가능합니다.\n\n 모바일 화면에 최적화시키기 위해 메뉴는 햄버거 바를 이용해 접을 수 있도록 구현했습니다.\n 해당 메뉴에서 화면 이동이 가능합니다.\n "},{id:8,title:"Todis",skills:["React","TypeScript","Styled-component","Eslint+Prettier"],description:"날씨에 맞는 코디 포인트 추천! 귀여운 아바타로 친구와 OOTD도 공유가 가능한 웹사이트",duration:"2023.07.12~2023.08.23",part:["Frontend","Part Leader"],git:"https://github.com/Todis-UMC/Todis_web",link:"http://todis.s3-website.ap-northeast-2.amazonaws.com/",role:"\n EsLint+Prettier를 사용해 코드 스타일을 일관성 있게 유지했습니다.\n Font를 편하게 사용하기 위해 CSSProperties를 사용해 스타일을 정의했습니다.\n\n Input 컴포넌트를 만들었습니다. 기본적인 text input으로 사용이 가능하며 type으로 password를 줄 경우에는 입력 값을 숨길 수 있는 버튼이 활성화됩니다.\n 로그인, 회원가입 등의 화면 구현을 위한 컴포넌트를 만들어 사용했습니다.\n\n 이메일과 비밀번호를 통해 로그인이 가능하며, 로그인 시에는 토큰을 발급받아 localStorage에 저장했습니다.\n 구글과 카카오를 통한 로그인도 가능합니다.\n\n 회원가입 시에는 이메일, 비밀번호, 닉네임을 입력받습니다.\n 닉네임과 비밀번호는 회원정보 수정 페이지에서 변경이 가능합니다.\n 비밀번호를 잊은 사용자를 위한 비밀번호 찾기 페이지도 구현했습니다. 사용자가 입력한 이메일로 임시 비밀번호가 발급됩니다.\n\n 모바일 상태의 사이드 메뉴를 구현했습니다.\n keyframes를 사용해 애니메이션을 추가했습니다.\n\n 모바일 사용자를 위한 반응형 웹을 구현했습니다.\n styled-component에서 @media를 사용해 화면 크기에 따라 스타일을 변경했습니다.\n 스타일의 변경이 많은 경우 window.innerWidth를 이용해 만든 컴포넌트를 활용해 화면 크기에 따라 컴포넌트를 렌더링했습니다.\n\n react-toastify를 사용해 토스트 메시지를 구현했습니다.\n react-spinners를 사용해 로딩 중임을 알려주는 컴포넌트를 구현했습니다.\n "},{id:9,title:"Landing Page",skills:["React","TypeScript","Styled-component","Eslint+Prettier"],description:"Landing Page",duration:"2023.08.08~2023.09.08",part:["Frontend"],git:"https://github.com/DLenc/Randing",role:"\n EsLint+Prettier를 사용해 코드 스타일을 일관성 있게 유지했습니다.\n Font를 편하게 사용하기 위해 CSSProperties를 사용해 스타일을 정의했습니다.\n Color를 편하게 사용하기 위해 Color를 정의한 파일을 만들어 사용했습니다.\n\n 랜딩 페이지의 최상단의 표지를 구현했습니다.\n 중간의 배너를 구현했습니다.\n\n 층간 소음이 발생할 정도의 소음이 생기면 알려주는 기능을 소개하는 섹션을 구현했습니다.\n\n 디자인 상 페이지에서 빠지게 되었지만,\n react-you-tube를 사용해 유튜브 영상을 불러오는 기능을 구현했습니다.\n &::-webkit-scrollbar를 이용해 스크롤바의 스타일을 변경했습니다.\n "}]},1825:function(n,t,e){"use strict";e.r(t),e.d(t,{default:function(){return w}});var i=e(2729),r=e(5893),o=e(7294),l=e(5675),a=e.n(l),c=e(1686);function s(){let n=(0,i._)(["\n width: fit-content;\n margin: 50px;\n"]);return s=function(){return n},n}function d(){let n=(0,i._)(["\n width: 300px;\n height: 200px;\n overflow: hidden;\n border-radius: 10px;\n box-shadow: 5px 5px 5px 1px lightgray;\n cursor: pointer;\n border: 1px solid lightgray;\n"]);return d=function(){return n},n}function p(){let n=(0,i._)(["\n font-size: 1.2rem;\n font-weight: semi-bold;\n margin-top: 10px;\n text-align: center;\n"]);return p=function(){return n},n}let u=c.ZP.div.withConfig({componentId:"sc-c976abb1-0"})(s()),h=c.ZP.div.withConfig({componentId:"sc-c976abb1-1"})(d()),g=c.ZP.div.withConfig({componentId:"sc-c976abb1-2"})(p());var f=n=>{let{project:t}=n;return(0,r.jsxs)(u,{children:[(0,r.jsx)(h,{children:(0,r.jsx)(a(),{src:"https://alreadynyeong.github.io/Portfolio/projects/".concat(t.id,".png"),width:300,height:200,alt:""})}),(0,r.jsxs)(g,{children:["[ ",t.title," ]"]})]})},S=e(1765);function m(){let n=(0,i._)(["\n width: fit-content;\n margin: 0 auto;\n cursor: pointer;\n transition: transform 0.7s;\n &:hover {\n transform: scale(1.1);\n }\n"]);return m=function(){return n},n}function y(){let n=(0,i._)(["\n margin-left: 50px;\n margin-top: 20px;\n"]);return y=function(){return n},n}function b(){let n=(0,i._)(["\n color: ",";\n display: inline-block;\n border: 1px solid ",";\n margin-left: 10px;\n padding: 7px;\n border-radius: 12px;\n font-size: 0.8rem;\n cursor: pointer;\n"]);return b=function(){return n},n}let v=c.ZP.div.withConfig({componentId:"sc-ad20014e-0"})(m()),x=c.ZP.div.withConfig({componentId:"sc-ad20014e-1"})(y()),P=c.ZP.div.withConfig({componentId:"sc-ad20014e-2"})(b(),n=>n.active?"green":"gray",n=>n.active?"green":"gray");var w=()=>{let[n,t]=(0,o.useState)([]),e=e=>{n.includes(e)?t(n.filter(n=>n!==e)):t([...n,e])};return(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{children:(0,r.jsxs)(x,{children:[(0,r.jsx)(a(),{src:"https://alreadynyeong.github.io/Portfolio/Filter.png",width:30,height:30,alt:""}),(0,r.jsx)(P,{onClick:()=>e("React"),active:n.includes("React"),children:"React"}),(0,r.jsx)(P,{onClick:()=>e("React-native"),active:n.includes("React-native"),children:"React-native"}),(0,r.jsx)(P,{onClick:()=>e("Node.js"),active:n.includes("Node.js"),children:"Node.js"})]})}),S.l.slice().reverse().filter(t=>0===n.length||n.some(n=>t.skills.includes(n))).map(n=>(0,r.jsx)(v,{children:(0,r.jsx)("a",{href:"/Portfolio/project?id=".concat(n.id),children:(0,r.jsx)(f,{project:n})})},n.id))]})}}},function(n){n.O(0,[774,888,179],function(){return n(n.s=6192)}),_N_E=n.O()}]); \ No newline at end of file +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[327],{6192:function(n,t,e){(window.__NEXT_P=window.__NEXT_P||[]).push(["/projects",function(){return e(1825)}])},1765:function(n,t,e){"use strict";e.d(t,{l:function(){return i}});let i=[{id:0,title:"Hi Alcohol",skills:["Node.js","JavaScript","HTML","CSS"],description:"가진 재료로 만들 수 있는 칵테일의 레시피 제공 및 Alcohol lover들을 위한 커뮤니티",duration:"2021.11.05~2022.01.24",part:["Frontend","Server","Plan"],role:'\n 술 종류, 제품명, 재료 등을 검색해 해당 키워드가 포함되는 레시피를 조회할 수 있습니다.\n 해당 레시피는 모달창으로 상세 조회가 가능합니다.\n\n 홈에서는 결정을 어려워하는 사용자를 위한 랜덤 추천 기능을 제공합니다.\n\n 우리동네 주류매장 기능은 카카오 map API를 사용하여 사용자의 위치 주변의 주류매장을 조회할 수 있습니다.\n 위치를 공유하기 싫거나, 다른 위치를 조회하고 싶다면 검색 기능을 통해 원하는 위치를 조회할 수 있습니다.\n\n 배포 후 사용자를 모으기 위해 "나와 어울리는 술 테스트"를 만들었습니다.\n MBTI를 기반으로 술과 관련된 질문으로 각자 어울리는 칵테일을 추천해주는 서비스입니다.\n 해당 결과를 공유하면서 사용자를 모으고자 했습니다.\n '},{id:1,title:"Hi Alcohol v.2",skills:["React","JavaScript","SCSS"],description:"가진 재료로 만들 수 있는 칵테일의 레시피 제공 및 Alcohol lover들을 위한 커뮤니티",duration:"2022.06.12~2022.09.25",part:["Frontend","Plan"],git:"https://github.com/HiAlcohol/HiAlcohol_react",role:"\n 기존에 만들어 운영했던 Hi Alcohol의 리뉴얼 버전입니다.\n 기존 프로젝트의 기능을 유지하면서, 기존 프로젝트의 단점을 보완하고, 사용자의 편의성을 높이기 위해 리뉴얼하였습니다.\n React를 도입하며 프론트와 서버를 구분하였습니다.\n 관리자 모드를 추가하여 운영이 편리하도록 했습니다.\n\n 술 종류, 제품명, 재료 등을 검색해 해당 키워드가 포함되는 레시피를 조회할 수 있습니다.\n 해당 레시피는 모달창으로 상세 조회가 가능합니다.\n\n 홈에서는 결정을 어려워하는 사용자를 위한 랜덤 추천 기능을 제공합니다.\n\n 우리동네 주류매장 기능은 카카오 map API를 사용하여 사용자의 위치 주변의 주류매장을 조회할 수 있습니다.\n 위치를 공유하기 싫거나, 다른 위치를 조회하고 싶다면 검색 기능을 통해 원하는 위치를 조회할 수 있습니다.\n\n 건의 게시판을 통해 사용자의 의견을 받을 수 있습니다.\n\n 게시글/댓글 신고 기능을 통해 부적절한 게시글/댓글을 신고할 수 있습니다.\n 관리자는 신고된 게시글/댓글을 모아 볼 수 있으며, 신고된 게시글/댓글을 숨기거나 나타내게 할 수 있습니다.\n\n 관리자는 레시피를 수정하거나 추가할 수 있습니다.\n\n 수익을 위한 카카오 adfit 광고를 추가하였습니다.\n "},{id:2,title:"withParents",skills:["React-native","cli","JavaScript","StyleSheet"],description:"고령층 부모의 헬스케어와 커뮤니케이션을 위한 서비스",duration:"2022.11.15~2023.03.30",part:["Frontend","Plan","Design","Lead"],git:"https://github.com/GDSC-sswu-A/WithParentsFront",role:"\n 홈에서 오늘 날짜, 가족 리스트, 오늘 복용할 약, 갤러리의 최신 사진을 조회할 수 있도록 했습니다.\n\n 홈의 설정에 들어가 새로운 가족 생성이 가능하며, 가족 id와 password를 이용해 가족 등록이 가능합니다.\n 설정 화면에서 본인의 가족 id, password 조회가 가능해, 다른 가족에게 공유할 수 있습니다.\n\n Google Maps를 이용해 부모님의 최근 위치를 조회하고자 했습니다.\n 또한 부모님의 마지막 접속 시간을 조회해 자녀의 걱정을 덜고자 했습니다.\n \n 가족이 함께 공유할 수 있는 공동 캘린더를 만들었습니다.\n react-native-calendars를 사용하여 달력을 조회하고, 가족 공동 일정을 모달창을 통해 조회, 삭제, 작성, 수정이 가능합니다.\n "},{id:3,title:"Pycon Korea 2023",skills:["React","Next","TypeScript","Stiches","Eslint+Prettier"],description:"세계 각국의 파이썬 프로그래밍 언어 커뮤니티에서 주관하는 비영리 컨퍼런스 “파이콘”의 2023 한국 홈페이지",duration:"2023.01.26~",part:["Frontend"],git:"https://github.com/pythonkr/pyconkr-2023-frontend",link:"https://2023.pycon.kr/",role:"\n FAQ에서 사용될 Toggle 컴포넌트를 구현했습니다.\n \n 파이콘에서 진행되는 세션을 조회할 수 있는 세션 목록 페이지를 구현했습니다.\n "},{id:4,title:"GDSC SSWU",skills:["React","Next","TypeScript","Styled-component","Eslint+Prettier"],description:"Google Developer Students Club의 성신여자대학교 4기 프로젝트 소개 홈페이지",duration:"2023.04.20~2023.05.15",part:["Frontend"],git:"https://github.com/alreadynyeong/GDSC-SSWU-PAGE",link:"https://alreadynyeong.github.io/GDSC-SSWU-PAGE/",role:"\n 효율적인 개발을 위해 버튼, 네비게이션 바, 하단의 동아리 정보 등의 컴포넌트를 만들어 사용했습니다.\n \n 1인 프로젝트로 진행되어 모든 화면을 구현했습니다.\n 이 서비스에서는 홈에서의 기본적인 정보와 동아리 소개, 프로젝트 목록, 팀 별 프로젝트 상세보기를 제공합니다.\n\n 사용자가 모바일 화면으로 볼 것을 고려하여 반응형으로 구현했습니다.\n 이때 window.innerWidth를 이용해 Mobile, PC 구분했습니다.\n\n 요즘 트렌드에 맞게 다크모드 역시 추가했습니다.\n 버튼을 통해 다크모드/라이트모드 설정이 가능하며, @/styles/Theme.ts 파일에 테마별 색을 설정했습니다.\n ThemeProvider를 사용하여 테마를 적용했습니다.\n "},{id:5,title:"수정광산",skills:["React-native","cli","TypeScript","StyleSheet"],description:"성신여자대학교 학생들을 위한 자체 커뮤니티 어플",duration:"2022.10.13 ~",part:["Frontend"],link:"https://play.google.com/store/apps/details?id=com.crystalminefrontend&hl=ko&gl=US",role:"\n 푸시알림을 받기 위한 iOS 환경에서의 설정을 했습니다.\n\n 구글 AdMob을 사용하기 위해 AdMob 계정을 만들고, 광고를 추가했습니다.\n\n 졸업생의 학교 Gmail 계정이 사용 불가능해져서 졸업생이 재인증을 할 수 없는 문제가 있었습니다. \n 이를 해결하기 위해 졸업생이 second Email을 등록하고 삭제할 수 있도록 구현했습니다.\n\n 사용자들의 편의를 위한 채팅 기능을 추가했습니다.\n 채팅 리스트를 조회할 수 있고, 편집 및 정렬이 가능합니다.\n 채팅방에서는 채팅을 전송할 수 있고, 갤러리 및 촬영을 통해 이미지를 전송할 수 있도록 했습니다.\n 실시간으로 채팅이 가능하며, 상대방이 있었는지의 여부도 확인 가능합니다.\n 채팅방에서 상대를 차단하거나 나갈 수 있습니다.\n "},{id:6,title:"Re:MEMORY",skills:["React-native","expo","TypeScript","StyleSheet"],description:"챗GPT가 되찾아준 나의 소중한 기억. 어린 시절 추억의 키워드를 입력해 내 추억을 이미지로 기록하고 기억을 공유하는 서비스",duration:"2023.06.11~2023.06.12",part:["Frontend"],git:"https://github.com/4th-Neordinary-HACKATHON-Team-A/Web",role:"\n expo-linear-gradient를 이용한 그라데이션 버튼과 input 테마를 만들었습니다.\n\n Stack Navigation을 사용해 화면 이동이 가능합니다.\n\n OnBoarding 화면에서는 닉네임을 입력받습니다.\n 이때 닉네임은 AsyncStorage에 저장했습니다\n\n 채팅 형식의 화면에서 추억을 만들기 위한 정보를 사용자에게 입력 받아 저장했습니다.\n 사용자가 입력한 정보는 리스트 형태로 서버에 전달됩니다.\n IOS 환경에서 input 창이 가려지는 문제를 해결하기 위해 Keyboard, KeyboardEvent를 사용했습니다.\n \n 추억 이미지 결과 페이지에서는 이미지 저장 기능이 존재합니다.\n 이때 react-native-easy-toast를 이용해 토스트 메시지를 생성했습니다.\n "},{id:7,title:"Green Quset",skills:["React","TypeScript","Styled-component","Eslint+Prettier","Recoil"],description:"여행지에서 미션을 찾아 수행하고 소통하며 나만의 식물을 키우는 서비스",duration:"2023.07.03~2023.07.04",part:["Frontend"],git:"https://github.com/UMCHackathon/Hackathon_client",role:"\n 찾은 미션을 확인하고 댓글을 통해 서로의 미션을 볼 수 있습니다.\n 해당 프로젝트는 해커톤에서 진행되어 시간이 부족했습니다.\n 그래서 Recoil을 사용해 데이터를 보여주는 형식으로 임시 구현했습니다.\n 사진과 텍스트가 업로드 가능하며, 사진은 미리보기 기능이 있습니다.\n\n input과 textarea를 이용해 만든 [미션 추가 페이지]에서 사용자가 직접 미션 추가가 가능합니다.\n\n 모바일 화면에 최적화시키기 위해 메뉴는 햄버거 바를 이용해 접을 수 있도록 구현했습니다.\n 해당 메뉴에서 화면 이동이 가능합니다.\n "},{id:8,title:"Todis",skills:["React","TypeScript","Styled-component","Eslint+Prettier"],description:"날씨에 맞는 코디 포인트 추천! 귀여운 아바타로 친구와 OOTD도 공유가 가능한 웹사이트",duration:"2023.07.12~2023.08.23",part:["Frontend","Part Leader"],git:"https://github.com/Todis-UMC/Todis_web",link:"http://todis.s3-website.ap-northeast-2.amazonaws.com/",role:"\n EsLint+Prettier를 사용해 코드 스타일을 일관성 있게 유지했습니다.\n Font를 편하게 사용하기 위해 CSSProperties를 사용해 스타일을 정의했습니다.\n\n Input 컴포넌트를 만들었습니다. 기본적인 text input으로 사용이 가능하며 type으로 password를 줄 경우에는 입력 값을 숨길 수 있는 버튼이 활성화됩니다.\n 로그인, 회원가입 등의 화면 구현을 위한 컴포넌트를 만들어 사용했습니다.\n\n 이메일과 비밀번호를 통해 로그인이 가능하며, 로그인 시에는 토큰을 발급받아 localStorage에 저장했습니다.\n 구글과 카카오를 통한 로그인도 가능합니다.\n\n 회원가입 시에는 이메일, 비밀번호, 닉네임을 입력받습니다.\n 닉네임과 비밀번호는 회원정보 수정 페이지에서 변경이 가능합니다.\n 비밀번호를 잊은 사용자를 위한 비밀번호 찾기 페이지도 구현했습니다. 사용자가 입력한 이메일로 임시 비밀번호가 발급됩니다.\n\n 모바일 상태의 사이드 메뉴를 구현했습니다.\n keyframes를 사용해 애니메이션을 추가했습니다.\n\n 모바일 사용자를 위한 반응형 웹을 구현했습니다.\n styled-component에서 @media를 사용해 화면 크기에 따라 스타일을 변경했습니다.\n 스타일의 변경이 많은 경우 window.innerWidth를 이용해 만든 컴포넌트를 활용해 화면 크기에 따라 컴포넌트를 렌더링했습니다.\n\n react-toastify를 사용해 토스트 메시지를 구현했습니다.\n react-spinners를 사용해 로딩 중임을 알려주는 컴포넌트를 구현했습니다.\n "},{id:9,title:"Landing Page",skills:["React","TypeScript","Styled-component","Eslint+Prettier"],description:"Landing Page",duration:"2023.08.08~2023.09.08",part:["Frontend"],git:"https://github.com/DLenc/Randing",role:"\n EsLint+Prettier를 사용해 코드 스타일을 일관성 있게 유지했습니다.\n Font를 편하게 사용하기 위해 CSSProperties를 사용해 스타일을 정의했습니다.\n Color를 편하게 사용하기 위해 Color를 정의한 파일을 만들어 사용했습니다.\n\n 랜딩 페이지의 최상단의 표지를 구현했습니다.\n 중간의 배너를 구현했습니다.\n\n 층간 소음이 발생할 정도의 소음이 생기면 알려주는 기능을 소개하는 섹션을 구현했습니다.\n\n 디자인 상 페이지에서 빠지게 되었지만,\n react-you-tube를 사용해 유튜브 영상을 불러오는 기능을 구현했습니다.\n &::-webkit-scrollbar를 이용해 스크롤바의 스타일을 변경했습니다.\n "}]},1825:function(n,t,e){"use strict";e.r(t),e.d(t,{default:function(){return k}});var i=e(2729),r=e(5893),o=e(7294),l=e(5675),c=e.n(l),a=e(1686),s=e(1852);function d(){let n=(0,i._)(["\n width: fit-content;\n margin: 50px;\n"]);return d=function(){return n},n}function p(){let n=(0,i._)(["\n width: 300px;\n height: 200px;\n overflow: hidden;\n border-radius: 10px;\n box-shadow: 5px 5px 5px 1px lightgray;\n cursor: pointer;\n border: 1px solid lightgray;\n @media (max-width: 768px) {\n width: 250px;\n height: 150px;\n }\n"]);return p=function(){return n},n}function h(){let n=(0,i._)(["\n font-size: 1.2rem;\n font-weight: semi-bold;\n margin-top: 10px;\n text-align: center;\n"]);return h=function(){return n},n}let u=a.ZP.div.withConfig({componentId:"sc-91880d4c-0"})(d()),g=a.ZP.div.withConfig({componentId:"sc-91880d4c-1"})(p()),f=a.ZP.div.withConfig({componentId:"sc-91880d4c-2"})(h());var m=n=>{let{project:t}=n,e=(0,s.useMediaQuery)({query:"(max-width: 768px)"});return(0,r.jsxs)(u,{children:[(0,r.jsx)(g,{children:(0,r.jsx)(c(),{src:"https://alreadynyeong.github.io/Portfolio/projects/".concat(t.id,".png"),width:e?250:300,height:e?150:200,alt:""})}),(0,r.jsxs)(f,{children:["[ ",t.title," ]"]})]})},S=e(1765);function y(){let n=(0,i._)(["\n width: fit-content;\n margin: 0 auto;\n cursor: pointer;\n transition: transform 0.7s;\n &:hover {\n transform: scale(1.1);\n }\n"]);return y=function(){return n},n}function x(){let n=(0,i._)(["\n margin-left: 50px;\n margin-top: 20px;\n"]);return x=function(){return n},n}function v(){let n=(0,i._)(["\n color: ",";\n display: inline-block;\n border: 1px solid ",";\n margin-left: 10px;\n padding: 7px;\n border-radius: 12px;\n font-size: 0.8rem;\n cursor: pointer;\n"]);return v=function(){return n},n}let w=a.ZP.div.withConfig({componentId:"sc-f8688750-0"})(y()),P=a.ZP.div.withConfig({componentId:"sc-f8688750-1"})(x()),b=a.ZP.div.withConfig({componentId:"sc-f8688750-2"})(v(),n=>n.active?"green":"gray",n=>n.active?"green":"gray");var k=()=>{let[n,t]=(0,o.useState)([]),e=e=>{n.includes(e)?t(n.filter(n=>n!==e)):t([...n,e])};return(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{children:(0,r.jsxs)(P,{children:[(0,r.jsx)(c(),{src:"https://alreadynyeong.github.io/Portfolio/Filter.png",width:20,height:20,alt:""}),(0,r.jsx)(b,{onClick:()=>e("React"),active:n.includes("React"),children:"React"}),(0,r.jsx)(b,{onClick:()=>e("React-native"),active:n.includes("React-native"),children:"React-native"}),(0,r.jsx)(b,{onClick:()=>e("Node.js"),active:n.includes("Node.js"),children:"Node.js"})]})}),S.l.slice().reverse().filter(t=>0===n.length||n.some(n=>t.skills.includes(n))).map(n=>(0,r.jsx)(w,{children:(0,r.jsx)("a",{href:"/Portfolio/project?id=".concat(n.id),children:(0,r.jsx)(m,{project:n})})},n.id))]})}}},function(n){n.O(0,[774,888,179],function(){return n(n.s=6192)}),_N_E=n.O()}]); \ No newline at end of file diff --git a/_next/static/chunks/webpack-0015bcf78a216075.js b/_next/static/chunks/webpack-0015bcf78a216075.js deleted file mode 100644 index 23c9f61..0000000 --- a/_next/static/chunks/webpack-0015bcf78a216075.js +++ /dev/null @@ -1 +0,0 @@ -!function(){"use strict";var e,n,r,t,o={},u={};function i(e){var n=u[e];if(void 0!==n)return n.exports;var r=u[e]={exports:{}},t=!0;try{o[e](r,r.exports,i),t=!1}finally{t&&delete u[e]}return r.exports}i.m=o,e=[],i.O=function(n,r,t,o){if(r){o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,t,o];return}for(var f=1/0,u=0;u=o&&Object.keys(i.O).every(function(e){return i.O[e](r[c])})?r.splice(c--,1):(l=!1,o0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,t,o];return}for(var f=1/0,u=0;u=o&&Object.keys(i.O).every(function(e){return i.O[e](r[c])})?r.splice(c--,1):(l=!1,oPortfolio
Home
About
Activity
Projects
Lee Min Hyeong
+
학력
성신여자대학교 컴퓨터공학과2019.03 ~
자격증
정보처리기사2022.11.25
수상
제 4회 UMC 해커톤2023.07.04최우수상>
제 4회 NE(O)RDINARY 해커톤2023.06.11우수상>
2022 SSWU 소프트웨어 경진대회2022.09.15은상>
스킬
Skill
React.js
Next.js
React-native
Node.js
Language
JavaScript
TypeScript
Python
Tool
Git/GitHub
Figma
Discord/Slack
Jira/Confluence
\ No newline at end of file +Portfolio
Home
About
Activity
Projects
Lee Min Hyeong
+
학력
성신여자대학교 컴퓨터공학과2019.03 ~
자격증
정보처리기사2022.11.25
수상
제 4회 UMC 해커톤2023.07.04최우수상>
제 4회 NE(O)RDINARY 해커톤2023.06.11우수상>
2022 SSWU 소프트웨어 경진대회2022.09.15은상>
스킬
Skill
React.js
Next.js
ReactNative
Node.js
Language
JavaScript
TypeScript
Python
Tool
Git/GitHub
Figma
Discord/Slack
Jira/Confluence
\ No newline at end of file diff --git a/activity.html b/activity.html index f35bafb..994ace0 100644 --- a/activity.html +++ b/activity.html @@ -1 +1 @@ -Portfolio
Home
About
Activity
Projects
Lee Min Hyeong
+
활동
[ DLenc 층간소음 프로젝트 ] 2023.08~2023.09
Frontend 개발자
대전 연구소 층간 소음 견학
NE(O)RDINARY 데모데이 부스 참여
KPRA 컨텐츠 기반 랜딩페이지 제작
Landing Page>
[ UMC 4th SSWU ] 2023.03~
Member
4회 NE(O)RDINARY 해커톤 우수상
Re:MEMORY>
4회 UMC 해커톤 우수상
Green Quest>
프로젝트 참여
Todis>
[ 수정광산 SaltyLab 1기 ] 2022.10~2023.10
Frontend 개발팀
수정광산>
[ GDSC SSWU 4th ] 2022.09~2023.06
교육팀 팀장
GDSC SSWU 4기 홈페이지 제작
GDSC SSWU>
Google Solution Challenge 참가
withParents>
\ No newline at end of file +Portfolio
Home
About
Activity
Projects
Lee Min Hyeong
+
활동
[ DLenc 층간소음 프로젝트 ] 2023.08~2023.09
Frontend 개발자
대전 연구소 층간 소음 견학
NE(O)RDINARY 데모데이 부스 참여
KPRA 컨텐츠 기반 랜딩페이지 제작
Landing Page>
[ UMC 4th SSWU ] 2023.03~
Member
4회 NE(O)RDINARY 해커톤 우수상
Re:MEMORY>
4회 UMC 해커톤 우수상
Green Quest>
프로젝트 참여
Todis>
[ 수정광산 SaltyLab 1기 ] 2022.10~2023.10
Frontend 개발팀
수정광산>
[ GDSC SSWU 4th ] 2022.09~2023.06
교육팀 팀장
GDSC SSWU 4기 홈페이지 제작
GDSC SSWU>
Google Solution Challenge 참가
withParents>
\ No newline at end of file diff --git a/index.html b/index.html index 973ebd2..5c7d56b 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -Portfolio
Home
About
Activity
Projects
Lee Min Hyeong
+
안녕하세요.
WEB 개발자
>
이민형입니다.
\ No newline at end of file +Portfolio
Home
About
Activity
Projects
Lee Min Hyeong
+
안녕하세요.
WEB 개발자
>
이민형입니다.
\ No newline at end of file diff --git a/project.html b/project.html index 1cf80e5..ee47473 100644 --- a/project.html +++ b/project.html @@ -1 +1 @@ -Portfolio
Home
About
Activity
Projects
Lee Min Hyeong
+
프로젝트를 찾을 수 없습니다.
\ No newline at end of file +Portfolio
Home
About
Activity
Projects
Lee Min Hyeong
+
프로젝트를 찾을 수 없습니다.
\ No newline at end of file diff --git a/projects.html b/projects.html index 71771cb..a7a377b 100644 --- a/projects.html +++ b/projects.html @@ -1 +1 @@ -Portfolio \ No newline at end of file +Portfolio \ No newline at end of file