diff --git a/404.html b/404.html index fd99f92d..f6195507 100644 --- a/404.html +++ b/404.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/404/index.html b/404/index.html index 74499af5..01b5858e 100644 --- a/404/index.html +++ b/404/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-e37094f984ea117f7d6f.js b/71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-d74142441001f9c39e96.js similarity index 93% rename from 71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-e37094f984ea117f7d6f.js rename to 71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-d74142441001f9c39e96.js index 8d492866..021b64b5 100644 --- a/71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-e37094f984ea117f7d6f.js +++ b/71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-d74142441001f9c39e96.js @@ -71,5 +71,5 @@ animation-iteration-count: infinite; animation-delay: 200ms; } -`),q.rippleVisible,ee,550,(({theme:e})=>e.transitions.easing.easeInOut),q.ripplePulsate,(({theme:e})=>e.transitions.duration.shorter),q.child,q.childLeaving,te,550,(({theme:e})=>e.transitions.easing.easeInOut),q.childPulsate,ne,(({theme:e})=>e.transitions.easing.easeInOut));var ae=o.forwardRef((function(e,t){const n=(0,y.Z)({props:e,name:"MuiTouchRipple"}),{center:r=!1,classes:i={},className:l}=n,s=(0,f.Z)(n,K),[c,u]=o.useState([]),d=o.useRef(0),p=o.useRef(null);o.useEffect((()=>{p.current&&(p.current(),p.current=null)}),[c]);const m=o.useRef(!1),h=(0,R.Z)(),b=o.useRef(null),g=o.useRef(null),x=o.useCallback((e=>{const{pulsate:t,rippleX:n,rippleY:o,rippleSize:r,cb:a}=e;u((e=>[...e,(0,H.jsx)(re,{classes:{ripple:(0,v.Z)(i.ripple,q.ripple),rippleVisible:(0,v.Z)(i.rippleVisible,q.rippleVisible),ripplePulsate:(0,v.Z)(i.ripplePulsate,q.ripplePulsate),child:(0,v.Z)(i.child,q.child),childLeaving:(0,v.Z)(i.childLeaving,q.childLeaving),childPulsate:(0,v.Z)(i.childPulsate,q.childPulsate)},timeout:550,pulsate:t,rippleX:n,rippleY:o,rippleSize:r},d.current)])),d.current+=1,p.current=a}),[i]),Z=o.useCallback(((e={},t={},n=(()=>{}))=>{const{pulsate:o=!1,center:a=r||t.pulsate,fakeElement:i=!1}=t;if("mousedown"===(null==e?void 0:e.type)&&m.current)return void(m.current=!1);"touchstart"===(null==e?void 0:e.type)&&(m.current=!0);const l=i?null:g.current,s=l?l.getBoundingClientRect():{width:0,height:0,left:0,top:0};let c,u,d;if(a||void 0===e||0===e.clientX&&0===e.clientY||!e.clientX&&!e.touches)c=Math.round(s.width/2),u=Math.round(s.height/2);else{const{clientX:t,clientY:n}=e.touches&&e.touches.length>0?e.touches[0]:e;c=Math.round(t-s.left),u=Math.round(n-s.top)}if(a)d=Math.sqrt((2*s.width**2+s.height**2)/3),d%2==0&&(d+=1);else{const e=2*Math.max(Math.abs((l?l.clientWidth:0)-c),c)+2,t=2*Math.max(Math.abs((l?l.clientHeight:0)-u),u)+2;d=Math.sqrt(e**2+t**2)}null!=e&&e.touches?null===b.current&&(b.current=()=>{x({pulsate:o,rippleX:c,rippleY:u,rippleSize:d,cb:n})},h.start(80,(()=>{b.current&&(b.current(),b.current=null)}))):x({pulsate:o,rippleX:c,rippleY:u,rippleSize:d,cb:n})}),[r,x,h]),w=o.useCallback((()=>{Z({},{pulsate:!0})}),[Z]),k=o.useCallback(((e,t)=>{if(h.clear(),"touchend"===(null==e?void 0:e.type)&&b.current)return b.current(),b.current=null,void h.start(0,(()=>{k(e,t)}));b.current=null,u((e=>e.length>0?e.slice(1):e)),p.current=t}),[h]);return o.useImperativeHandle(t,(()=>({pulsate:w,start:Z,stop:k})),[w,Z,k]),(0,H.jsx)(oe,(0,a.Z)({className:(0,v.Z)(q.root,i.root,l),ref:g},s,{children:(0,H.jsx)(W,{component:null,exit:!0,children:c})}))})),ie=n(3559);function le(e){return(0,ie.ZP)("MuiButtonBase",e)}var se=(0,Y.Z)("MuiButtonBase",["root","disabled","focusVisible"]);const ce=["action","centerRipple","children","className","component","disabled","disableRipple","disableTouchRipple","focusRipple","focusVisibleClassName","LinkComponent","onBlur","onClick","onContextMenu","onDragLeave","onFocus","onFocusVisible","onKeyDown","onKeyUp","onMouseDown","onMouseLeave","onMouseUp","onTouchEnd","onTouchMove","onTouchStart","tabIndex","TouchRippleProps","touchRippleRef","type"],ue=(0,x.ZP)("button",{name:"MuiButtonBase",slot:"Root",overridesResolver:(e,t)=>t.root})({display:"inline-flex",alignItems:"center",justifyContent:"center",position:"relative",boxSizing:"border-box",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none",textDecoration:"none",color:"inherit","&::-moz-focus-inner":{borderStyle:"none"},[`&.${se.disabled}`]:{pointerEvents:"none",cursor:"default"},"@media print":{colorAdjust:"exact"}}),de=o.forwardRef((function(e,t){const n=(0,y.Z)({props:e,name:"MuiButtonBase"}),{action:r,centerRipple:i=!1,children:l,className:s,component:c="button",disabled:u=!1,disableRipple:d=!1,disableTouchRipple:p=!1,focusRipple:m=!1,LinkComponent:h="a",onBlur:g,onClick:x,onContextMenu:Z,onDragLeave:w,onFocus:R,onFocusVisible:M,onKeyDown:E,onKeyUp:N,onMouseDown:L,onMouseLeave:$,onMouseUp:P,onTouchEnd:S,onTouchMove:T,onTouchStart:j,tabIndex:V=0,TouchRippleProps:I,touchRippleRef:z,type:O}=n,B=(0,f.Z)(n,ce),D=o.useRef(null),W=o.useRef(null),X=(0,k.Z)(W,z),{isFocusVisibleRef:U,onFocus:Y,onBlur:q,ref:K}=F(),[A,G]=o.useState(!1);u&&A&&G(!1),o.useImperativeHandle(r,(()=>({focusVisible:()=>{G(!0),D.current.focus()}})),[]);const[_,J]=o.useState(!1);o.useEffect((()=>{J(!0)}),[]);const Q=_&&!d&&!u;function ee(e,t,n=p){return C((o=>{t&&t(o);return!n&&W.current&&W.current[e](o),!0}))}o.useEffect((()=>{A&&m&&!d&&_&&W.current.pulsate()}),[d,m,A,_]);const te=ee("start",L),ne=ee("stop",Z),oe=ee("stop",w),re=ee("stop",P),ie=ee("stop",(e=>{A&&e.preventDefault(),$&&$(e)})),se=ee("start",j),de=ee("stop",S),pe=ee("stop",T),me=ee("stop",(e=>{q(e),!1===U.current&&G(!1),g&&g(e)}),!1),he=C((e=>{D.current||(D.current=e.currentTarget),Y(e),!0===U.current&&(G(!0),M&&M(e)),R&&R(e)})),fe=()=>{const e=D.current;return c&&"button"!==c&&!("A"===e.tagName&&e.href)},ve=o.useRef(!1),be=C((e=>{m&&!ve.current&&A&&W.current&&" "===e.key&&(ve.current=!0,W.current.stop(e,(()=>{W.current.start(e)}))),e.target===e.currentTarget&&fe()&&" "===e.key&&e.preventDefault(),E&&E(e),e.target===e.currentTarget&&fe()&&"Enter"===e.key&&!u&&(e.preventDefault(),x&&x(e))})),ge=C((e=>{m&&" "===e.key&&W.current&&A&&!e.defaultPrevented&&(ve.current=!1,W.current.stop(e,(()=>{W.current.pulsate(e)}))),N&&N(e),x&&e.target===e.currentTarget&&fe()&&" "===e.key&&!e.defaultPrevented&&x(e)}));let xe=c;"button"===xe&&(B.href||B.to)&&(xe=h);const Ze={};"button"===xe?(Ze.type=void 0===O?"button":O,Ze.disabled=u):(B.href||B.to||(Ze.role="button"),u&&(Ze["aria-disabled"]=u));const ye=(0,k.Z)(t,K,D);const we=(0,a.Z)({},n,{centerRipple:i,component:c,disabled:u,disableRipple:d,disableTouchRipple:p,focusRipple:m,tabIndex:V,focusVisible:A}),ke=(e=>{const{disabled:t,focusVisible:n,focusVisibleClassName:o,classes:r}=e,a={root:["root",t&&"disabled",n&&"focusVisible"]},i=(0,b.Z)(a,le,r);return n&&o&&(i.root+=` ${o}`),i})(we);return(0,H.jsxs)(ue,(0,a.Z)({as:xe,className:(0,v.Z)(ke.root,s),ownerState:we,onBlur:me,onClick:x,onContextMenu:ne,onFocus:he,onKeyDown:be,onKeyUp:ge,onMouseDown:te,onMouseLeave:ie,onMouseUp:re,onDragLeave:oe,onTouchEnd:de,onTouchMove:pe,onTouchStart:se,ref:ye,tabIndex:u?-1:V,type:O},Ze,B,{children:[l,Q?(0,H.jsx)(ae,(0,a.Z)({ref:X,center:i},I)):null]}))}));var pe=de,me=n(8974);var he=(0,Y.Z)("MuiDivider",["root","absolute","fullWidth","inset","middle","flexItem","light","vertical","withChildren","withChildrenVertical","textAlignRight","textAlignLeft","wrapper","wrapperVertical"]);var fe=(0,Y.Z)("MuiListItemIcon",["root","alignItemsFlexStart"]);var ve=(0,Y.Z)("MuiListItemText",["root","multiline","dense","inset","primary","secondary"]);function be(e){return(0,ie.ZP)("MuiMenuItem",e)}var ge=(0,Y.Z)("MuiMenuItem",["root","focusVisible","dense","disabled","divider","gutters","selected"]);const xe=["autoFocus","component","dense","divider","disableGutters","focusVisibleClassName","role","tabIndex","className"],Ze=(0,x.ZP)(pe,{shouldForwardProp:e=>(0,Z.Z)(e)||"classes"===e,name:"MuiMenuItem",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.dense&&t.dense,n.divider&&t.divider,!n.disableGutters&&t.gutters]}})((({theme:e,ownerState:t})=>(0,a.Z)({},e.typography.body1,{display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",minHeight:48,paddingTop:6,paddingBottom:6,boxSizing:"border-box",whiteSpace:"nowrap"},!t.disableGutters&&{paddingLeft:16,paddingRight:16},t.divider&&{borderBottom:`1px solid ${(e.vars||e).palette.divider}`,backgroundClip:"padding-box"},{"&:hover":{textDecoration:"none",backgroundColor:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${ge.selected}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:(0,g.Fq)(e.palette.primary.main,e.palette.action.selectedOpacity),[`&.${ge.focusVisible}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.focusOpacity}))`:(0,g.Fq)(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.focusOpacity)}},[`&.${ge.selected}:hover`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.hoverOpacity}))`:(0,g.Fq)(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:(0,g.Fq)(e.palette.primary.main,e.palette.action.selectedOpacity)}},[`&.${ge.focusVisible}`]:{backgroundColor:(e.vars||e).palette.action.focus},[`&.${ge.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity},[`& + .${he.root}`]:{marginTop:e.spacing(1),marginBottom:e.spacing(1)},[`& + .${he.inset}`]:{marginLeft:52},[`& .${ve.root}`]:{marginTop:0,marginBottom:0},[`& .${ve.inset}`]:{paddingLeft:36},[`& .${fe.root}`]:{minWidth:36}},!t.dense&&{[e.breakpoints.up("sm")]:{minHeight:"auto"}},t.dense&&(0,a.Z)({minHeight:32,paddingTop:4,paddingBottom:4},e.typography.body2,{[`& .${fe.root} svg`]:{fontSize:"1.25rem"}}))));var ye=o.forwardRef((function(e,t){const n=(0,y.Z)({props:e,name:"MuiMenuItem"}),{autoFocus:r=!1,component:i="li",dense:l=!1,divider:s=!1,disableGutters:c=!1,focusVisibleClassName:u,role:d="menuitem",tabIndex:p,className:m}=n,h=(0,f.Z)(n,xe),g=o.useContext(w.Z),x=o.useMemo((()=>({dense:l||g.dense||!1,disableGutters:c})),[g.dense,l,c]),Z=o.useRef(null);(0,me.Z)((()=>{r&&Z.current&&Z.current.focus()}),[r]);const C=(0,a.Z)({},n,{dense:x.dense,divider:s,disableGutters:c}),R=(e=>{const{disabled:t,dense:n,divider:o,disableGutters:r,selected:i,classes:l}=e,s={root:["root",n&&"dense",t&&"disabled",!r&&"gutters",o&&"divider",i&&"selected"]},c=(0,b.Z)(s,be,l);return(0,a.Z)({},l,c)})(n),M=(0,k.Z)(Z,t);let E;return n.disabled||(E=void 0!==p?p:-1),(0,H.jsx)(w.Z.Provider,{value:x,children:(0,H.jsx)(Ze,(0,a.Z)({ref:M,role:d,tabIndex:E,component:i,focusVisibleClassName:(0,v.Z)(R.focusVisible,u),className:(0,v.Z)(R.root,m)},h,{ownerState:C,classes:R}))})})),we=n(8216),ke=n(1529),Ce=n(4423);function Re(e){return(0,ie.ZP)("PrivateSwitchBase",e)}(0,Y.Z)("PrivateSwitchBase",["root","checked","disabled","input","edgeStart","edgeEnd"]);const Me=["autoFocus","checked","checkedIcon","className","defaultChecked","disabled","disableFocusRipple","edge","icon","id","inputProps","inputRef","name","onBlur","onChange","onFocus","readOnly","required","tabIndex","type","value"],Ee=(0,x.ZP)(pe)((({ownerState:e})=>(0,a.Z)({padding:9,borderRadius:"50%"},"start"===e.edge&&{marginLeft:"small"===e.size?-3:-12},"end"===e.edge&&{marginRight:"small"===e.size?-3:-12}))),Ne=(0,x.ZP)("input",{shouldForwardProp:Z.Z})({cursor:"inherit",position:"absolute",opacity:0,width:"100%",height:"100%",top:0,left:0,margin:0,padding:0,zIndex:1});var Le=o.forwardRef((function(e,t){const{autoFocus:n,checked:o,checkedIcon:r,className:i,defaultChecked:l,disabled:s,disableFocusRipple:c=!1,edge:u=!1,icon:d,id:p,inputProps:m,inputRef:h,name:g,onBlur:x,onChange:Z,onFocus:y,readOnly:w,required:k=!1,tabIndex:C,type:R,value:M}=e,E=(0,f.Z)(e,Me),[N,L]=(0,ke.Z)({controlled:o,default:Boolean(l),name:"SwitchBase",state:"checked"}),$=(0,Ce.Z)();let P=s;$&&void 0===P&&(P=$.disabled);const S="checkbox"===R||"radio"===R,T=(0,a.Z)({},e,{checked:N,disabled:P,disableFocusRipple:c,edge:u}),F=(e=>{const{classes:t,checked:n,disabled:o,edge:r}=e,a={root:["root",n&&"checked",o&&"disabled",r&&`edge${(0,we.Z)(r)}`],input:["input"]};return(0,b.Z)(a,Re,t)})(T);return(0,H.jsxs)(Ee,(0,a.Z)({component:"span",className:(0,v.Z)(F.root,i),centerRipple:!0,focusRipple:!c,disabled:P,tabIndex:null,role:void 0,onFocus:e=>{y&&y(e),$&&$.onFocus&&$.onFocus(e)},onBlur:e=>{x&&x(e),$&&$.onBlur&&$.onBlur(e)},ownerState:T,ref:t},E,{children:[(0,H.jsx)(Ne,(0,a.Z)({autoFocus:n,checked:o,defaultChecked:l,className:F.input,disabled:P,id:S?p:void 0,name:g,onChange:e=>{if(e.nativeEvent.defaultPrevented)return;const t=e.target.checked;L(t),Z&&Z(e,t)},readOnly:w,ref:h,required:k,ownerState:T,tabIndex:C,type:R},"checkbox"===R&&void 0===M?{}:{value:M},m)),N?r:d]}))})),$e=n(5949),Pe=(0,$e.Z)((0,H.jsx)("path",{d:"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"}),"CheckBoxOutlineBlank"),Se=(0,$e.Z)((0,H.jsx)("path",{d:"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"}),"CheckBox"),Te=(0,$e.Z)((0,H.jsx)("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"}),"IndeterminateCheckBox");function Fe(e){return(0,ie.ZP)("MuiCheckbox",e)}var je=(0,Y.Z)("MuiCheckbox",["root","checked","disabled","indeterminate","colorPrimary","colorSecondary","sizeSmall","sizeMedium"]);const Ve=["checkedIcon","color","icon","indeterminate","indeterminateIcon","inputProps","size","className"],Ie=(0,x.ZP)(Le,{shouldForwardProp:e=>(0,Z.Z)(e)||"classes"===e,name:"MuiCheckbox",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.indeterminate&&t.indeterminate,t[`size${(0,we.Z)(n.size)}`],"default"!==n.color&&t[`color${(0,we.Z)(n.color)}`]]}})((({theme:e,ownerState:t})=>(0,a.Z)({color:(e.vars||e).palette.text.secondary},!t.disableRipple&&{"&:hover":{backgroundColor:e.vars?`rgba(${"default"===t.color?e.vars.palette.action.activeChannel:e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,g.Fq)("default"===t.color?e.palette.action.active:e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"default"!==t.color&&{[`&.${je.checked}, &.${je.indeterminate}`]:{color:(e.vars||e).palette[t.color].main},[`&.${je.disabled}`]:{color:(e.vars||e).palette.action.disabled}}))),ze=(0,H.jsx)(Se,{}),Oe=(0,H.jsx)(Pe,{}),Be=(0,H.jsx)(Te,{});var De=o.forwardRef((function(e,t){var n,r;const i=(0,y.Z)({props:e,name:"MuiCheckbox"}),{checkedIcon:l=ze,color:s="primary",icon:c=Oe,indeterminate:u=!1,indeterminateIcon:d=Be,inputProps:p,size:m="medium",className:h}=i,g=(0,f.Z)(i,Ve),x=u?d:c,Z=u?d:l,w=(0,a.Z)({},i,{color:s,indeterminate:u,size:m}),k=(e=>{const{classes:t,indeterminate:n,color:o,size:r}=e,i={root:["root",n&&"indeterminate",`color${(0,we.Z)(o)}`,`size${(0,we.Z)(r)}`]},l=(0,b.Z)(i,Fe,t);return(0,a.Z)({},t,l)})(w);return(0,H.jsx)(Ie,(0,a.Z)({type:"checkbox",inputProps:(0,a.Z)({"data-indeterminate":u},p),icon:o.cloneElement(x,{fontSize:null!=(n=x.props.fontSize)?n:m}),checkedIcon:o.cloneElement(Z,{fontSize:null!=(r=Z.props.fontSize)?r:m}),ownerState:w,ref:t,className:(0,v.Z)(k.root,h)},g,{classes:k}))}));var We=e=>{var t,n,r;let{markup:f,validationMarkup:v}=e;const{0:b,1:g}=(0,o.useState)(!1),{0:x,1:Z}=(0,o.useState)(!0),{register:y,handleSubmit:w,control:k,reset:C,formState:{errors:R,isValid:M}}=(0,i.cI)({mode:"onBlur",resolver:(0,l.X)(c.h),defaultValues:{consentToProcess:!0}}),E=(e,t,n,o)=>{var r;return(0,X.tZ)(h.sc,(0,a.Z)({id:e,label:t,variant:"outlined",error:!(null===(r=R[e])||void 0===r||!r.message),helperText:(0,p.OZ)(e,R,v),"aria-label":e,fullWidth:!0,multiline:n,rows:o,size:"small"},y(e)))};return(0,X.tZ)("form",{onSubmit:w((async e=>{if(!M)return;g(!0);const t=(0,u.e)("hubspotutk"),n=(0,p.WU)(e,t);try{200===(await d.l.post("/3eae609c-bcf2-47f4-ad93-11a65c4b4f9d",n)).status&&C()}catch(a){var o,r;console.log("request err>>",null===(o=a.response)||void 0===o||null===(r=o.data)||void 0===r?void 0:r.message)}g(!1)})),className:"flex-1 flex flex-col gap-2.5"},(0,X.tZ)("div",{className:"flex flex-col gap-4"},E("email",f.emailLabel),E("company",f.companyNameLabel),E("firstname",f.nameLabel),(0,X.tZ)(h.sc,(0,a.Z)({id:"services",label:f.servicesLabel,variant:"outlined",select:!0,defaultValue:"",error:!(null===(t=R.services)||void 0===t||!t.message),helperText:(0,p.OZ)("services",R,v),"aria-label":"services",fullWidth:!0,size:"small"},y("services")),Object.values(s.U5).map((e=>(0,X.tZ)(ye,{key:e,value:e},f.servicesOptions[e])))),(0,X.tZ)(h.sc,(0,a.Z)({id:"budget",label:f.budgetLabel,variant:"outlined",select:!0,defaultValue:"",error:!(null===(n=R.budget)||void 0===n||!n.message),helperText:(0,p.OZ)("budget",R,v),"aria-label":"budget",fullWidth:!0,size:"small"},y("budget")),Object.values(s.D9).map((e=>(0,X.tZ)(ye,{key:e,value:e},f.budgetOptions[e])))),E("describe_your_project",f.descriptionLabel,!0,5)),(0,X.tZ)(i.Qr,{control:k,name:"consentToProcess",render:e=>{let{field:{onChange:t,ref:n,value:o}}=e;return(0,X.tZ)(h.J$,{control:(0,X.tZ)(De,{id:"consentToProcess",checked:o,onChange:e=>{t(e),Z(!!e.target.checked)},sx:{color:x?"#111":"#D32F2F","&.Mui-checked":{color:"#111"}},inputRef:n}),label:f.privacyPolicyCheckboxLabel,"aria-label":"consentToProcess",sx:{marginTop:"10px"}})}}),null!==(r=R.consentToProcess)&&void 0!==r&&r.message||!x?(0,X.tZ)("p",{className:"text-[10.5px] text-[#D32F2F] ml-3"},null==v?void 0:v.consent):null,(0,X.tZ)(h.J$,{control:(0,X.tZ)(De,{defaultChecked:!0,sx:{color:"#111","&.Mui-checked":{color:"#111"}}}),label:f.adsCheckboxLabel,"aria-label":"adsCheckboxLabel"}),(0,X.tZ)("div",{className:"flex items-center justify-center pt-5 text-main-100"},(0,X.tZ)("button",{type:"submit",disabled:b||!x,className:"px-0 sm:px-5 md:px-6 font-bold whitespace-nowrap rounded-lg mx-0 text-secondary-100 h-12 flex items-center justify-center disabled:bg-main-70 hover:bg-main-70 px-6 relative "+(b?"bg-main-70":"bg-main-100")},b?(0,X.tZ)(m.Z,null):null,(0,X.tZ)("span",{className:"z-20"},f.buttonLabel.toUpperCase()))))},Xe=n(1164);var He=e=>{var t,n,a;let{lang:i}=e;const l=(0,r.K2)(Ue),{0:s,1:c}=(0,o.useState)(null);(0,o.useEffect)((()=>{var e,t,n,o,r,a;c(i in l?null==l||null===(e=l[i])||void 0===e||null===(t=e.nodes)||void 0===t||null===(n=t[0])||void 0===n?void 0:n.html:null==l||null===(o=l.en)||void 0===o||null===(r=o.nodes)||void 0===r||null===(a=r[0])||void 0===a?void 0:a.html)}),[i,l]);const u=null==l||null===(t=l.markupData)||void 0===t||null===(n=t.nodes)||void 0===n||null===(a=n.find((e=>e.fields.language===i)))||void 0===a?void 0:a.frontmatter,d=null==u?void 0:u.contactForm,p=null==u?void 0:u.validation;return(0,X.tZ)(o.Fragment,null,d?(0,X.tZ)(o.Fragment,null,(0,X.tZ)("section",{className:"relative w-full bg-secondary-100 py-16"},(0,X.tZ)("div",{id:"contact-form",className:"absolute -top-16 opacity-0 pointer-events-none"},"anchor"),(0,X.tZ)(Xe.Z,{maxWidthClass:"max-w-[1280px]",className:"flex-col items-center text-main-100"},(0,X.tZ)("div",{className:"flex justify-between w-full items-center pb-8 sm:pb-14 flex-col sm:flex-row gap-5"},(0,X.tZ)("h2",{className:"text-4xl font-bold w-full text-main-100"},null==d?void 0:d.sectionTitle.toUpperCase()),(0,X.tZ)("div",{className:"w-full sm:w-auto text-start sm:text-end text-xl font-normal whitespace-nowrap text-main-100"},null==d?void 0:d.sectionLinkTitle.toUpperCase())),(0,X.tZ)("div",{className:"flex flex-col md:flex-row gap-10 lg:gap-28 justify-center max-w-4.5xl items-stretch"},s?(0,X.tZ)("p",{className:"contact-form-description flex-1 text-xl font-light w-full",dangerouslySetInnerHTML:{__html:s}}):null,(0,X.tZ)(We,{markup:d,validationMarkup:p}))))):null)};const Ue="772577693"},4471:function(e,t,n){var o=n(7294);function r(e){return o.createElement("svg",e,[o.createElement("line",{width:"800",height:"8",stroke:"#f9f9f9",strokeWidth:"8",strokeDasharray:"8 8",x1:"0",x2:"100%",y1:"4",y2:"4",key:0}),o.createElement("line",{width:"800",height:"8",stroke:"#111111",strokeWidth:"8",strokeDasharray:"8 8",x1:"8",x2:"100%",y1:"4",y2:"4",key:1})])}r.defaultProps={height:"8"},e.exports=r,r.default=r}}]); -//# sourceMappingURL=71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-e37094f984ea117f7d6f.js.map \ No newline at end of file +`),q.rippleVisible,ee,550,(({theme:e})=>e.transitions.easing.easeInOut),q.ripplePulsate,(({theme:e})=>e.transitions.duration.shorter),q.child,q.childLeaving,te,550,(({theme:e})=>e.transitions.easing.easeInOut),q.childPulsate,ne,(({theme:e})=>e.transitions.easing.easeInOut));var ae=o.forwardRef((function(e,t){const n=(0,y.Z)({props:e,name:"MuiTouchRipple"}),{center:r=!1,classes:i={},className:l}=n,s=(0,f.Z)(n,K),[c,u]=o.useState([]),d=o.useRef(0),p=o.useRef(null);o.useEffect((()=>{p.current&&(p.current(),p.current=null)}),[c]);const m=o.useRef(!1),h=(0,R.Z)(),b=o.useRef(null),g=o.useRef(null),x=o.useCallback((e=>{const{pulsate:t,rippleX:n,rippleY:o,rippleSize:r,cb:a}=e;u((e=>[...e,(0,H.jsx)(re,{classes:{ripple:(0,v.Z)(i.ripple,q.ripple),rippleVisible:(0,v.Z)(i.rippleVisible,q.rippleVisible),ripplePulsate:(0,v.Z)(i.ripplePulsate,q.ripplePulsate),child:(0,v.Z)(i.child,q.child),childLeaving:(0,v.Z)(i.childLeaving,q.childLeaving),childPulsate:(0,v.Z)(i.childPulsate,q.childPulsate)},timeout:550,pulsate:t,rippleX:n,rippleY:o,rippleSize:r},d.current)])),d.current+=1,p.current=a}),[i]),Z=o.useCallback(((e={},t={},n=(()=>{}))=>{const{pulsate:o=!1,center:a=r||t.pulsate,fakeElement:i=!1}=t;if("mousedown"===(null==e?void 0:e.type)&&m.current)return void(m.current=!1);"touchstart"===(null==e?void 0:e.type)&&(m.current=!0);const l=i?null:g.current,s=l?l.getBoundingClientRect():{width:0,height:0,left:0,top:0};let c,u,d;if(a||void 0===e||0===e.clientX&&0===e.clientY||!e.clientX&&!e.touches)c=Math.round(s.width/2),u=Math.round(s.height/2);else{const{clientX:t,clientY:n}=e.touches&&e.touches.length>0?e.touches[0]:e;c=Math.round(t-s.left),u=Math.round(n-s.top)}if(a)d=Math.sqrt((2*s.width**2+s.height**2)/3),d%2==0&&(d+=1);else{const e=2*Math.max(Math.abs((l?l.clientWidth:0)-c),c)+2,t=2*Math.max(Math.abs((l?l.clientHeight:0)-u),u)+2;d=Math.sqrt(e**2+t**2)}null!=e&&e.touches?null===b.current&&(b.current=()=>{x({pulsate:o,rippleX:c,rippleY:u,rippleSize:d,cb:n})},h.start(80,(()=>{b.current&&(b.current(),b.current=null)}))):x({pulsate:o,rippleX:c,rippleY:u,rippleSize:d,cb:n})}),[r,x,h]),w=o.useCallback((()=>{Z({},{pulsate:!0})}),[Z]),k=o.useCallback(((e,t)=>{if(h.clear(),"touchend"===(null==e?void 0:e.type)&&b.current)return b.current(),b.current=null,void h.start(0,(()=>{k(e,t)}));b.current=null,u((e=>e.length>0?e.slice(1):e)),p.current=t}),[h]);return o.useImperativeHandle(t,(()=>({pulsate:w,start:Z,stop:k})),[w,Z,k]),(0,H.jsx)(oe,(0,a.Z)({className:(0,v.Z)(q.root,i.root,l),ref:g},s,{children:(0,H.jsx)(W,{component:null,exit:!0,children:c})}))})),ie=n(3559);function le(e){return(0,ie.ZP)("MuiButtonBase",e)}var se=(0,Y.Z)("MuiButtonBase",["root","disabled","focusVisible"]);const ce=["action","centerRipple","children","className","component","disabled","disableRipple","disableTouchRipple","focusRipple","focusVisibleClassName","LinkComponent","onBlur","onClick","onContextMenu","onDragLeave","onFocus","onFocusVisible","onKeyDown","onKeyUp","onMouseDown","onMouseLeave","onMouseUp","onTouchEnd","onTouchMove","onTouchStart","tabIndex","TouchRippleProps","touchRippleRef","type"],ue=(0,x.ZP)("button",{name:"MuiButtonBase",slot:"Root",overridesResolver:(e,t)=>t.root})({display:"inline-flex",alignItems:"center",justifyContent:"center",position:"relative",boxSizing:"border-box",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none",textDecoration:"none",color:"inherit","&::-moz-focus-inner":{borderStyle:"none"},[`&.${se.disabled}`]:{pointerEvents:"none",cursor:"default"},"@media print":{colorAdjust:"exact"}}),de=o.forwardRef((function(e,t){const n=(0,y.Z)({props:e,name:"MuiButtonBase"}),{action:r,centerRipple:i=!1,children:l,className:s,component:c="button",disabled:u=!1,disableRipple:d=!1,disableTouchRipple:p=!1,focusRipple:m=!1,LinkComponent:h="a",onBlur:g,onClick:x,onContextMenu:Z,onDragLeave:w,onFocus:R,onFocusVisible:M,onKeyDown:E,onKeyUp:N,onMouseDown:L,onMouseLeave:$,onMouseUp:P,onTouchEnd:S,onTouchMove:T,onTouchStart:j,tabIndex:V=0,TouchRippleProps:I,touchRippleRef:z,type:O}=n,B=(0,f.Z)(n,ce),D=o.useRef(null),W=o.useRef(null),X=(0,k.Z)(W,z),{isFocusVisibleRef:U,onFocus:Y,onBlur:q,ref:K}=F(),[A,G]=o.useState(!1);u&&A&&G(!1),o.useImperativeHandle(r,(()=>({focusVisible:()=>{G(!0),D.current.focus()}})),[]);const[_,J]=o.useState(!1);o.useEffect((()=>{J(!0)}),[]);const Q=_&&!d&&!u;function ee(e,t,n=p){return C((o=>{t&&t(o);return!n&&W.current&&W.current[e](o),!0}))}o.useEffect((()=>{A&&m&&!d&&_&&W.current.pulsate()}),[d,m,A,_]);const te=ee("start",L),ne=ee("stop",Z),oe=ee("stop",w),re=ee("stop",P),ie=ee("stop",(e=>{A&&e.preventDefault(),$&&$(e)})),se=ee("start",j),de=ee("stop",S),pe=ee("stop",T),me=ee("stop",(e=>{q(e),!1===U.current&&G(!1),g&&g(e)}),!1),he=C((e=>{D.current||(D.current=e.currentTarget),Y(e),!0===U.current&&(G(!0),M&&M(e)),R&&R(e)})),fe=()=>{const e=D.current;return c&&"button"!==c&&!("A"===e.tagName&&e.href)},ve=o.useRef(!1),be=C((e=>{m&&!ve.current&&A&&W.current&&" "===e.key&&(ve.current=!0,W.current.stop(e,(()=>{W.current.start(e)}))),e.target===e.currentTarget&&fe()&&" "===e.key&&e.preventDefault(),E&&E(e),e.target===e.currentTarget&&fe()&&"Enter"===e.key&&!u&&(e.preventDefault(),x&&x(e))})),ge=C((e=>{m&&" "===e.key&&W.current&&A&&!e.defaultPrevented&&(ve.current=!1,W.current.stop(e,(()=>{W.current.pulsate(e)}))),N&&N(e),x&&e.target===e.currentTarget&&fe()&&" "===e.key&&!e.defaultPrevented&&x(e)}));let xe=c;"button"===xe&&(B.href||B.to)&&(xe=h);const Ze={};"button"===xe?(Ze.type=void 0===O?"button":O,Ze.disabled=u):(B.href||B.to||(Ze.role="button"),u&&(Ze["aria-disabled"]=u));const ye=(0,k.Z)(t,K,D);const we=(0,a.Z)({},n,{centerRipple:i,component:c,disabled:u,disableRipple:d,disableTouchRipple:p,focusRipple:m,tabIndex:V,focusVisible:A}),ke=(e=>{const{disabled:t,focusVisible:n,focusVisibleClassName:o,classes:r}=e,a={root:["root",t&&"disabled",n&&"focusVisible"]},i=(0,b.Z)(a,le,r);return n&&o&&(i.root+=` ${o}`),i})(we);return(0,H.jsxs)(ue,(0,a.Z)({as:xe,className:(0,v.Z)(ke.root,s),ownerState:we,onBlur:me,onClick:x,onContextMenu:ne,onFocus:he,onKeyDown:be,onKeyUp:ge,onMouseDown:te,onMouseLeave:ie,onMouseUp:re,onDragLeave:oe,onTouchEnd:de,onTouchMove:pe,onTouchStart:se,ref:ye,tabIndex:u?-1:V,type:O},Ze,B,{children:[l,Q?(0,H.jsx)(ae,(0,a.Z)({ref:X,center:i},I)):null]}))}));var pe=de,me=n(8974);var he=(0,Y.Z)("MuiDivider",["root","absolute","fullWidth","inset","middle","flexItem","light","vertical","withChildren","withChildrenVertical","textAlignRight","textAlignLeft","wrapper","wrapperVertical"]);var fe=(0,Y.Z)("MuiListItemIcon",["root","alignItemsFlexStart"]);var ve=(0,Y.Z)("MuiListItemText",["root","multiline","dense","inset","primary","secondary"]);function be(e){return(0,ie.ZP)("MuiMenuItem",e)}var ge=(0,Y.Z)("MuiMenuItem",["root","focusVisible","dense","disabled","divider","gutters","selected"]);const xe=["autoFocus","component","dense","divider","disableGutters","focusVisibleClassName","role","tabIndex","className"],Ze=(0,x.ZP)(pe,{shouldForwardProp:e=>(0,Z.Z)(e)||"classes"===e,name:"MuiMenuItem",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.dense&&t.dense,n.divider&&t.divider,!n.disableGutters&&t.gutters]}})((({theme:e,ownerState:t})=>(0,a.Z)({},e.typography.body1,{display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",minHeight:48,paddingTop:6,paddingBottom:6,boxSizing:"border-box",whiteSpace:"nowrap"},!t.disableGutters&&{paddingLeft:16,paddingRight:16},t.divider&&{borderBottom:`1px solid ${(e.vars||e).palette.divider}`,backgroundClip:"padding-box"},{"&:hover":{textDecoration:"none",backgroundColor:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${ge.selected}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:(0,g.Fq)(e.palette.primary.main,e.palette.action.selectedOpacity),[`&.${ge.focusVisible}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.focusOpacity}))`:(0,g.Fq)(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.focusOpacity)}},[`&.${ge.selected}:hover`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.hoverOpacity}))`:(0,g.Fq)(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:(0,g.Fq)(e.palette.primary.main,e.palette.action.selectedOpacity)}},[`&.${ge.focusVisible}`]:{backgroundColor:(e.vars||e).palette.action.focus},[`&.${ge.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity},[`& + .${he.root}`]:{marginTop:e.spacing(1),marginBottom:e.spacing(1)},[`& + .${he.inset}`]:{marginLeft:52},[`& .${ve.root}`]:{marginTop:0,marginBottom:0},[`& .${ve.inset}`]:{paddingLeft:36},[`& .${fe.root}`]:{minWidth:36}},!t.dense&&{[e.breakpoints.up("sm")]:{minHeight:"auto"}},t.dense&&(0,a.Z)({minHeight:32,paddingTop:4,paddingBottom:4},e.typography.body2,{[`& .${fe.root} svg`]:{fontSize:"1.25rem"}}))));var ye=o.forwardRef((function(e,t){const n=(0,y.Z)({props:e,name:"MuiMenuItem"}),{autoFocus:r=!1,component:i="li",dense:l=!1,divider:s=!1,disableGutters:c=!1,focusVisibleClassName:u,role:d="menuitem",tabIndex:p,className:m}=n,h=(0,f.Z)(n,xe),g=o.useContext(w.Z),x=o.useMemo((()=>({dense:l||g.dense||!1,disableGutters:c})),[g.dense,l,c]),Z=o.useRef(null);(0,me.Z)((()=>{r&&Z.current&&Z.current.focus()}),[r]);const C=(0,a.Z)({},n,{dense:x.dense,divider:s,disableGutters:c}),R=(e=>{const{disabled:t,dense:n,divider:o,disableGutters:r,selected:i,classes:l}=e,s={root:["root",n&&"dense",t&&"disabled",!r&&"gutters",o&&"divider",i&&"selected"]},c=(0,b.Z)(s,be,l);return(0,a.Z)({},l,c)})(n),M=(0,k.Z)(Z,t);let E;return n.disabled||(E=void 0!==p?p:-1),(0,H.jsx)(w.Z.Provider,{value:x,children:(0,H.jsx)(Ze,(0,a.Z)({ref:M,role:d,tabIndex:E,component:i,focusVisibleClassName:(0,v.Z)(R.focusVisible,u),className:(0,v.Z)(R.root,m)},h,{ownerState:C,classes:R}))})})),we=n(8216),ke=n(1529),Ce=n(4423);function Re(e){return(0,ie.ZP)("PrivateSwitchBase",e)}(0,Y.Z)("PrivateSwitchBase",["root","checked","disabled","input","edgeStart","edgeEnd"]);const Me=["autoFocus","checked","checkedIcon","className","defaultChecked","disabled","disableFocusRipple","edge","icon","id","inputProps","inputRef","name","onBlur","onChange","onFocus","readOnly","required","tabIndex","type","value"],Ee=(0,x.ZP)(pe)((({ownerState:e})=>(0,a.Z)({padding:9,borderRadius:"50%"},"start"===e.edge&&{marginLeft:"small"===e.size?-3:-12},"end"===e.edge&&{marginRight:"small"===e.size?-3:-12}))),Ne=(0,x.ZP)("input",{shouldForwardProp:Z.Z})({cursor:"inherit",position:"absolute",opacity:0,width:"100%",height:"100%",top:0,left:0,margin:0,padding:0,zIndex:1});var Le=o.forwardRef((function(e,t){const{autoFocus:n,checked:o,checkedIcon:r,className:i,defaultChecked:l,disabled:s,disableFocusRipple:c=!1,edge:u=!1,icon:d,id:p,inputProps:m,inputRef:h,name:g,onBlur:x,onChange:Z,onFocus:y,readOnly:w,required:k=!1,tabIndex:C,type:R,value:M}=e,E=(0,f.Z)(e,Me),[N,L]=(0,ke.Z)({controlled:o,default:Boolean(l),name:"SwitchBase",state:"checked"}),$=(0,Ce.Z)();let P=s;$&&void 0===P&&(P=$.disabled);const S="checkbox"===R||"radio"===R,T=(0,a.Z)({},e,{checked:N,disabled:P,disableFocusRipple:c,edge:u}),F=(e=>{const{classes:t,checked:n,disabled:o,edge:r}=e,a={root:["root",n&&"checked",o&&"disabled",r&&`edge${(0,we.Z)(r)}`],input:["input"]};return(0,b.Z)(a,Re,t)})(T);return(0,H.jsxs)(Ee,(0,a.Z)({component:"span",className:(0,v.Z)(F.root,i),centerRipple:!0,focusRipple:!c,disabled:P,tabIndex:null,role:void 0,onFocus:e=>{y&&y(e),$&&$.onFocus&&$.onFocus(e)},onBlur:e=>{x&&x(e),$&&$.onBlur&&$.onBlur(e)},ownerState:T,ref:t},E,{children:[(0,H.jsx)(Ne,(0,a.Z)({autoFocus:n,checked:o,defaultChecked:l,className:F.input,disabled:P,id:S?p:void 0,name:g,onChange:e=>{if(e.nativeEvent.defaultPrevented)return;const t=e.target.checked;L(t),Z&&Z(e,t)},readOnly:w,ref:h,required:k,ownerState:T,tabIndex:C,type:R},"checkbox"===R&&void 0===M?{}:{value:M},m)),N?r:d]}))})),$e=n(5949),Pe=(0,$e.Z)((0,H.jsx)("path",{d:"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"}),"CheckBoxOutlineBlank"),Se=(0,$e.Z)((0,H.jsx)("path",{d:"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"}),"CheckBox"),Te=(0,$e.Z)((0,H.jsx)("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"}),"IndeterminateCheckBox");function Fe(e){return(0,ie.ZP)("MuiCheckbox",e)}var je=(0,Y.Z)("MuiCheckbox",["root","checked","disabled","indeterminate","colorPrimary","colorSecondary","sizeSmall","sizeMedium"]);const Ve=["checkedIcon","color","icon","indeterminate","indeterminateIcon","inputProps","size","className"],Ie=(0,x.ZP)(Le,{shouldForwardProp:e=>(0,Z.Z)(e)||"classes"===e,name:"MuiCheckbox",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.indeterminate&&t.indeterminate,t[`size${(0,we.Z)(n.size)}`],"default"!==n.color&&t[`color${(0,we.Z)(n.color)}`]]}})((({theme:e,ownerState:t})=>(0,a.Z)({color:(e.vars||e).palette.text.secondary},!t.disableRipple&&{"&:hover":{backgroundColor:e.vars?`rgba(${"default"===t.color?e.vars.palette.action.activeChannel:e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,g.Fq)("default"===t.color?e.palette.action.active:e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"default"!==t.color&&{[`&.${je.checked}, &.${je.indeterminate}`]:{color:(e.vars||e).palette[t.color].main},[`&.${je.disabled}`]:{color:(e.vars||e).palette.action.disabled}}))),ze=(0,H.jsx)(Se,{}),Oe=(0,H.jsx)(Pe,{}),Be=(0,H.jsx)(Te,{});var De=o.forwardRef((function(e,t){var n,r;const i=(0,y.Z)({props:e,name:"MuiCheckbox"}),{checkedIcon:l=ze,color:s="primary",icon:c=Oe,indeterminate:u=!1,indeterminateIcon:d=Be,inputProps:p,size:m="medium",className:h}=i,g=(0,f.Z)(i,Ve),x=u?d:c,Z=u?d:l,w=(0,a.Z)({},i,{color:s,indeterminate:u,size:m}),k=(e=>{const{classes:t,indeterminate:n,color:o,size:r}=e,i={root:["root",n&&"indeterminate",`color${(0,we.Z)(o)}`,`size${(0,we.Z)(r)}`]},l=(0,b.Z)(i,Fe,t);return(0,a.Z)({},t,l)})(w);return(0,H.jsx)(Ie,(0,a.Z)({type:"checkbox",inputProps:(0,a.Z)({"data-indeterminate":u},p),icon:o.cloneElement(x,{fontSize:null!=(n=x.props.fontSize)?n:m}),checkedIcon:o.cloneElement(Z,{fontSize:null!=(r=Z.props.fontSize)?r:m}),ownerState:w,ref:t,className:(0,v.Z)(k.root,h)},g,{classes:k}))}));var We=e=>{var t,n,r;let{markup:f,validationMarkup:v}=e;const{0:b,1:g}=(0,o.useState)(!1),{0:x,1:Z}=(0,o.useState)(!0),{register:y,handleSubmit:w,control:k,reset:C,formState:{errors:R,isValid:M}}=(0,i.cI)({mode:"onBlur",resolver:(0,l.X)(c.h),defaultValues:{consentToProcess:!0}}),E=(e,t,n,o)=>{var r;return(0,X.tZ)(h.sc,(0,a.Z)({id:e,label:t,variant:"outlined",error:!(null===(r=R[e])||void 0===r||!r.message),helperText:(0,p.OZ)(e,R,v),"aria-label":e,fullWidth:!0,multiline:n,rows:o,size:"small"},y(e)))};return(0,X.tZ)("form",{onSubmit:w((async e=>{if(!M)return;g(!0);const t=(0,u.e)("hubspotutk"),n=(0,p.WU)(e,t);try{200===(await d.l.post("/3eae609c-bcf2-47f4-ad93-11a65c4b4f9d",n)).status&&C()}catch(a){var o,r;console.log("request err>>",null===(o=a.response)||void 0===o||null===(r=o.data)||void 0===r?void 0:r.message)}g(!1)})),className:"flex-1 flex flex-col gap-2.5"},(0,X.tZ)("div",{className:"flex flex-col gap-4"},E("email",f.emailLabel),E("company",f.companyNameLabel),E("firstname",f.nameLabel),(0,X.tZ)(h.sc,(0,a.Z)({id:"services",label:f.servicesLabel,variant:"outlined",select:!0,defaultValue:"",error:!(null===(t=R.services)||void 0===t||!t.message),helperText:(0,p.OZ)("services",R,v),"aria-label":"services",fullWidth:!0,size:"small"},y("services")),Object.values(s.U5).map((e=>(0,X.tZ)(ye,{key:e,value:e},f.servicesOptions[e])))),(0,X.tZ)(h.sc,(0,a.Z)({id:"budget",label:f.budgetLabel,variant:"outlined",select:!0,defaultValue:"",error:!(null===(n=R.budget)||void 0===n||!n.message),helperText:(0,p.OZ)("budget",R,v),"aria-label":"budget",fullWidth:!0,size:"small"},y("budget")),Object.values(s.D9).map((e=>(0,X.tZ)(ye,{key:e,value:e},f.budgetOptions[e])))),E("describe_your_project",f.descriptionLabel,!0,5)),(0,X.tZ)(i.Qr,{control:k,name:"consentToProcess",render:e=>{let{field:{onChange:t,ref:n,value:o}}=e;return(0,X.tZ)(h.J$,{control:(0,X.tZ)(De,{id:"consentToProcess",checked:o,onChange:e=>{t(e),Z(!!e.target.checked)},sx:{color:x?"#111":"#D32F2F","&.Mui-checked":{color:"#111"}},inputRef:n}),label:f.privacyPolicyCheckboxLabel,"aria-label":"consentToProcess",sx:{marginTop:"10px"}})}}),null!==(r=R.consentToProcess)&&void 0!==r&&r.message||!x?(0,X.tZ)("p",{className:"text-[10.5px] text-[#D32F2F] ml-3"},null==v?void 0:v.consent):null,(0,X.tZ)(h.J$,{control:(0,X.tZ)(De,{defaultChecked:!0,sx:{color:"#111","&.Mui-checked":{color:"#111"}}}),label:f.adsCheckboxLabel,"aria-label":"adsCheckboxLabel"}),(0,X.tZ)("div",{className:"flex items-center justify-center pt-5 text-main-100"},(0,X.tZ)("button",{type:"submit",disabled:b||!x,className:"px-0 sm:px-5 md:px-6 font-bold whitespace-nowrap rounded-lg mx-0 text-secondary-100 h-12 flex items-center justify-center disabled:bg-main-70 hover:bg-main-70 px-6 relative "+(b?"bg-main-70":"bg-main-100")},b?(0,X.tZ)(m.Z,null):null,(0,X.tZ)("span",{className:"z-20"},f.buttonLabel.toUpperCase()))))},Xe=n(1164);var He=e=>{var t,n,a,i,l,s,c,u,d,p;let{lang:m}=e;const h=(0,r.K2)(Ue),f=null==h||null===(t=h.markupData)||void 0===t||null===(n=t.nodes)||void 0===n||null===(a=n.find((e=>e.fields.language===m)))||void 0===a?void 0:a.frontmatter,v=null==f?void 0:f.contactForm,b=null!==(i=null==h||null===(l=h[m])||void 0===l||null===(s=l.nodes)||void 0===s||null===(c=s[0])||void 0===c?void 0:c.html)&&void 0!==i?i:null==h||null===(u=h.en)||void 0===u||null===(d=u.nodes)||void 0===d||null===(p=d[0])||void 0===p?void 0:p.html,g=null==f?void 0:f.validation;return(0,X.tZ)(o.Fragment,null,v?(0,X.tZ)(o.Fragment,null,(0,X.tZ)("section",{className:"relative w-full bg-secondary-100 py-16"},(0,X.tZ)("div",{id:"contact-form",className:"absolute -top-16 opacity-0 pointer-events-none"},"anchor"),(0,X.tZ)(Xe.Z,{maxWidthClass:"max-w-[1280px]",className:"flex-col items-center text-main-100"},(0,X.tZ)("div",{className:"flex justify-between w-full items-center pb-8 sm:pb-14 flex-col sm:flex-row gap-5"},(0,X.tZ)("h2",{className:"text-4xl font-bold w-full text-main-100"},null==v?void 0:v.sectionTitle.toUpperCase()),(0,X.tZ)("div",{className:"w-full sm:w-auto text-start sm:text-end text-xl font-normal whitespace-nowrap text-main-100"},null==v?void 0:v.sectionLinkTitle.toUpperCase())),(0,X.tZ)("div",{className:"flex flex-col md:flex-row gap-10 lg:gap-28 justify-center max-w-4.5xl items-stretch"},b?(0,X.tZ)("div",{className:"contact-form-description flex-1 text-xl font-light w-full",dangerouslySetInnerHTML:{__html:b}}):null,(0,X.tZ)(We,{markup:v,validationMarkup:g}))))):null)};const Ue="772577693"},4471:function(e,t,n){var o=n(7294);function r(e){return o.createElement("svg",e,[o.createElement("line",{width:"800",height:"8",stroke:"#f9f9f9",strokeWidth:"8",strokeDasharray:"8 8",x1:"0",x2:"100%",y1:"4",y2:"4",key:0}),o.createElement("line",{width:"800",height:"8",stroke:"#111111",strokeWidth:"8",strokeDasharray:"8 8",x1:"8",x2:"100%",y1:"4",y2:"4",key:1})])}r.defaultProps={height:"8"},e.exports=r,r.default=r}}]); +//# sourceMappingURL=71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-d74142441001f9c39e96.js.map \ No newline at end of file diff --git a/71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-d74142441001f9c39e96.js.map b/71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-d74142441001f9c39e96.js.map new file mode 100644 index 00000000..85ca3eea --- /dev/null +++ b/71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-d74142441001f9c39e96.js.map @@ -0,0 +1 @@ +{"version":3,"file":"71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-d74142441001f9c39e96.js","mappings":"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","sources":["webpack://code-cave/./src/components/common/spinner.tsx","webpack://code-cave/./src/components/babylonjs/babylon.tsx","webpack://code-cave/./src/components/common/banner.tsx","webpack://code-cave/./node_modules/@mui/material/utils/useEventCallback.js","webpack://code-cave/./node_modules/@mui/utils/useIsFocusVisible/useIsFocusVisible.js","webpack://code-cave/./node_modules/@mui/material/utils/useIsFocusVisible.js","webpack://code-cave/./node_modules/react-transition-group/esm/utils/ChildMapping.js","webpack://code-cave/./node_modules/react-transition-group/esm/TransitionGroup.js","webpack://code-cave/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://code-cave/./node_modules/@mui/material/ButtonBase/Ripple.js","webpack://code-cave/./node_modules/@mui/material/ButtonBase/touchRippleClasses.js","webpack://code-cave/./node_modules/@mui/material/ButtonBase/TouchRipple.js","webpack://code-cave/./node_modules/@mui/material/ButtonBase/buttonBaseClasses.js","webpack://code-cave/./node_modules/@mui/material/ButtonBase/ButtonBase.js","webpack://code-cave/./node_modules/@mui/material/Divider/dividerClasses.js","webpack://code-cave/./node_modules/@mui/material/ListItemIcon/listItemIconClasses.js","webpack://code-cave/./node_modules/@mui/material/ListItemText/listItemTextClasses.js","webpack://code-cave/./node_modules/@mui/material/MenuItem/menuItemClasses.js","webpack://code-cave/./node_modules/@mui/material/MenuItem/MenuItem.js","webpack://code-cave/./node_modules/@mui/material/internal/switchBaseClasses.js","webpack://code-cave/./node_modules/@mui/material/internal/SwitchBase.js","webpack://code-cave/./node_modules/@mui/material/internal/svg-icons/CheckBoxOutlineBlank.js","webpack://code-cave/./node_modules/@mui/material/internal/svg-icons/CheckBox.js","webpack://code-cave/./node_modules/@mui/material/internal/svg-icons/IndeterminateCheckBox.js","webpack://code-cave/./node_modules/@mui/material/Checkbox/checkboxClasses.js","webpack://code-cave/./node_modules/@mui/material/Checkbox/Checkbox.js","webpack://code-cave/./src/components/forms/contactForm.tsx","webpack://code-cave/./src/components/forms/contactFormSection.tsx","webpack://code-cave/./src/assets/common/border.svg"],"sourcesContent":["import React from \"react\";\n\nconst Spinner = ({ className }: { className?: string }) => {\n return (\n \n \n \n \n \n \n );\n};\n\nexport default Spinner;\n","import React, { useEffect, useRef, useState } from \"react\";\n\nimport Spinner from \"../common/spinner\";\n\nconst Babylon = () => {\n const [isBabylonReady, setIsBabylonReady] = useState(false);\n const isInitial = useRef(true);\n const canvasRef = useRef(null);\n\n useEffect(() => {\n if (\n !isInitial.current ||\n !canvasRef.current ||\n typeof window == \"undefined\"\n )\n return;\n\n isInitial.current = false;\n\n // WORKER instance creation\n const babylonWorker = new Worker(\n new URL(\"../../workers/babylon.worker.ts\", import.meta.url),\n {\n type: \"module\",\n }\n );\n babylonWorker.onmessage = ({ data }) => {\n if (data === \"ready\") setIsBabylonReady(true);\n };\n\n // OFFSCREEN canvas\n const canvas = canvasRef.current;\n canvas.width = canvas.clientWidth;\n canvas.height = canvas.clientHeight;\n\n const offscreenCanvas = canvas.transferControlToOffscreen();\n babylonWorker.postMessage({ canvas: offscreenCanvas }, [offscreenCanvas]);\n\n // RESIZE handler\n const onResizeHandler = () => {\n babylonWorker.postMessage({\n width: canvas.clientWidth,\n height: canvas.clientHeight,\n });\n };\n window.addEventListener(\"resize\", onResizeHandler, { passive: true });\n\n // WHEEL handler\n const onWheelHandler = (e: WheelEvent) => {\n e.preventDefault();\n babylonWorker.postMessage({ wheel: e.deltaY });\n };\n canvas.addEventListener(\"wheel\", onWheelHandler);\n\n // ROTATE mouse handler\n const onMouseMoveHandler = (e: MouseEvent) => {\n babylonWorker.postMessage({\n x: e.movementX,\n y: e.movementY,\n });\n };\n canvas.addEventListener(\"mousedown\", (e: MouseEvent) => {\n e.preventDefault();\n window.addEventListener(\"mousemove\", onMouseMoveHandler, {\n passive: true,\n });\n window.addEventListener(\n \"mouseup\",\n () => window.removeEventListener(\"mousemove\", onMouseMoveHandler),\n { once: true, passive: true }\n );\n });\n\n // ROTATE touch handler\n const nestedTouchMoveHandler = (\n e: TouchEvent,\n previousCoords: { x: number; y: number }\n ) => {\n const touch = e.touches[0];\n babylonWorker.postMessage({\n x: touch.screenX - previousCoords.x,\n y: touch.screenY - previousCoords.y,\n });\n\n return {\n newX: touch.screenX,\n newY: touch.screenY,\n };\n };\n let onTouchMoveHandler: (e: TouchEvent) => void;\n canvas.addEventListener(\n \"touchstart\",\n (e: TouchEvent) => {\n if (e.touches.length !== 1) return;\n\n const firstTouch = e.touches[0];\n\n e.preventDefault();\n const previousCoords = {\n x: firstTouch.screenX,\n y: firstTouch.screenY,\n };\n\n onTouchMoveHandler = (e: TouchEvent) => {\n const { newX, newY } = nestedTouchMoveHandler(e, previousCoords);\n previousCoords.x = newX;\n previousCoords.y = newY;\n };\n\n window.addEventListener(\"touchmove\", onTouchMoveHandler, {\n passive: true,\n });\n window.addEventListener(\n \"touchend\",\n () => {\n window.removeEventListener(\"touchmove\", onTouchMoveHandler);\n },\n { passive: true }\n );\n },\n { passive: true }\n );\n\n // UNMOUNT handler\n return () => {\n if (!window) return;\n\n window.removeEventListener(\"resize\", onResizeHandler);\n window.removeEventListener(\"mousemove\", onMouseMoveHandler);\n window.removeEventListener(\"touchmove\", onTouchMoveHandler);\n if (canvas) {\n canvas.removeEventListener(\"wheel\", onWheelHandler);\n }\n babylonWorker.terminate();\n };\n }, []);\n\n return (\n
\n \n {!isBabylonReady ? (\n \n ) : null}\n
\n );\n};\n\nexport default Babylon;\n","import React, { useEffect, useState } from \"react\";\nimport { GatsbyImage, IGatsbyImageData } from \"gatsby-plugin-image\";\n\nimport Border from \"../../assets/common/border.svg\";\n\nimport ContentContainer from \"./contentContainer\";\nimport Babylon from \"../babylonjs/babylon\";\n\n// interface IBannerProps {\n// heightClass?: string;\n// title: string;\n// className?: string;\n// borderBottom?: boolean;\n// borderTop?: boolean;\n// babylon?: boolean;\n// image?: IGatsbyImageData;\n// }\ntype TBannerCommonProps = {\n heightClass?: string;\n title: string;\n className?: string;\n borderBottom?: boolean;\n borderTop?: boolean;\n};\ntype TBannerConditionalProps =\n | {\n babylon?: boolean;\n image?: never;\n children?: never;\n titleBlockClassName?: never;\n }\n | {\n babylon?: never;\n image?: IGatsbyImageData;\n children?: never;\n titleBlockClassName?: never;\n }\n | {\n babylon?: never;\n image?: never;\n children?: React.ReactNode;\n titleBlockClassName?: string;\n };\ntype TBannerProps = TBannerCommonProps & TBannerConditionalProps;\n\nconst Banner = ({\n heightClass = \"min-h-91\",\n title,\n className,\n borderBottom,\n borderTop,\n babylon,\n image,\n titleBlockClassName,\n children,\n}: TBannerProps) => {\n const [textTranslate, setTextTranslate] = useState<\n \"translate-y-full\" | \"translate-y-0\"\n >(\"translate-y-full\");\n useEffect(() => {\n setTextTranslate(\"translate-y-0\");\n }, []);\n\n return (\n \n {borderTop ? (\n \n ) : null}\n \n \n

\n \n {title}\n \n

\n \n {babylon ? (\n \n ) : null}\n {image ? (\n
\n \n
\n ) : null}\n {children ? (\n
\n {children}\n
\n ) : null}\n \n {borderBottom ? (\n \n ) : null}\n \n );\n};\n\nexport default Banner;\n","'use client';\n\nimport useEventCallback from '@mui/utils/useEventCallback';\nexport default useEventCallback;","'use client';\n\n// based on https://github.com/WICG/focus-visible/blob/v4.1.5/src/focus-visible.js\nimport * as React from 'react';\nimport { Timeout } from '../useTimeout/useTimeout';\nlet hadKeyboardEvent = true;\nlet hadFocusVisibleRecently = false;\nconst hadFocusVisibleRecentlyTimeout = new Timeout();\nconst inputTypesWhitelist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n};\n\n/**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} node\n * @returns {boolean}\n */\nfunction focusTriggersKeyboardModality(node) {\n const {\n type,\n tagName\n } = node;\n if (tagName === 'INPUT' && inputTypesWhitelist[type] && !node.readOnly) {\n return true;\n }\n if (tagName === 'TEXTAREA' && !node.readOnly) {\n return true;\n }\n if (node.isContentEditable) {\n return true;\n }\n return false;\n}\n\n/**\n * Keep track of our keyboard modality state with `hadKeyboardEvent`.\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * @param {KeyboardEvent} event\n */\nfunction handleKeyDown(event) {\n if (event.metaKey || event.altKey || event.ctrlKey) {\n return;\n }\n hadKeyboardEvent = true;\n}\n\n/**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n */\nfunction handlePointerDown() {\n hadKeyboardEvent = false;\n}\nfunction handleVisibilityChange() {\n if (this.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n }\n}\nfunction prepare(doc) {\n doc.addEventListener('keydown', handleKeyDown, true);\n doc.addEventListener('mousedown', handlePointerDown, true);\n doc.addEventListener('pointerdown', handlePointerDown, true);\n doc.addEventListener('touchstart', handlePointerDown, true);\n doc.addEventListener('visibilitychange', handleVisibilityChange, true);\n}\nexport function teardown(doc) {\n doc.removeEventListener('keydown', handleKeyDown, true);\n doc.removeEventListener('mousedown', handlePointerDown, true);\n doc.removeEventListener('pointerdown', handlePointerDown, true);\n doc.removeEventListener('touchstart', handlePointerDown, true);\n doc.removeEventListener('visibilitychange', handleVisibilityChange, true);\n}\nfunction isFocusVisible(event) {\n const {\n target\n } = event;\n try {\n return target.matches(':focus-visible');\n } catch (error) {\n // Browsers not implementing :focus-visible will throw a SyntaxError.\n // We use our own heuristic for those browsers.\n // Rethrow might be better if it's not the expected error but do we really\n // want to crash if focus-visible malfunctioned?\n }\n\n // No need for validFocusTarget check. The user does that by attaching it to\n // focusable events only.\n return hadKeyboardEvent || focusTriggersKeyboardModality(target);\n}\nexport default function useIsFocusVisible() {\n const ref = React.useCallback(node => {\n if (node != null) {\n prepare(node.ownerDocument);\n }\n }, []);\n const isFocusVisibleRef = React.useRef(false);\n\n /**\n * Should be called if a blur event is fired\n */\n function handleBlurVisible() {\n // checking against potential state variable does not suffice if we focus and blur synchronously.\n // React wouldn't have time to trigger a re-render so `focusVisible` would be stale.\n // Ideally we would adjust `isFocusVisible(event)` to look at `relatedTarget` for blur events.\n // This doesn't work in IE11 due to https://github.com/facebook/react/issues/3751\n // TODO: check again if React releases their internal changes to focus event handling (https://github.com/facebook/react/pull/19186).\n if (isFocusVisibleRef.current) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n hadFocusVisibleRecentlyTimeout.start(100, () => {\n hadFocusVisibleRecently = false;\n });\n isFocusVisibleRef.current = false;\n return true;\n }\n return false;\n }\n\n /**\n * Should be called if a blur event is fired\n */\n function handleFocusVisible(event) {\n if (isFocusVisible(event)) {\n isFocusVisibleRef.current = true;\n return true;\n }\n return false;\n }\n return {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref\n };\n}","'use client';\n\nimport useIsFocusVisible from '@mui/utils/useIsFocusVisible';\nexport default useIsFocusVisible;","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n/**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = getChildMapping(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `
` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: PropTypes.any,\n\n /**\n * A set of `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: PropTypes.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nexport { _assertThisInitialized as default };","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction Ripple(props) {\n const {\n className,\n classes,\n pulsate = false,\n rippleX,\n rippleY,\n rippleSize,\n in: inProp,\n onExited,\n timeout\n } = props;\n const [leaving, setLeaving] = React.useState(false);\n const rippleClassName = clsx(className, classes.ripple, classes.rippleVisible, pulsate && classes.ripplePulsate);\n const rippleStyles = {\n width: rippleSize,\n height: rippleSize,\n top: -(rippleSize / 2) + rippleY,\n left: -(rippleSize / 2) + rippleX\n };\n const childClassName = clsx(classes.child, leaving && classes.childLeaving, pulsate && classes.childPulsate);\n if (!inProp && !leaving) {\n setLeaving(true);\n }\n React.useEffect(() => {\n if (!inProp && onExited != null) {\n // react-transition-group#onExited\n const timeoutId = setTimeout(onExited, timeout);\n return () => {\n clearTimeout(timeoutId);\n };\n }\n return undefined;\n }, [onExited, inProp, timeout]);\n return /*#__PURE__*/_jsx(\"span\", {\n className: rippleClassName,\n style: rippleStyles,\n children: /*#__PURE__*/_jsx(\"span\", {\n className: childClassName\n })\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? Ripple.propTypes = {\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n /**\n * @ignore - injected from TransitionGroup\n */\n in: PropTypes.bool,\n /**\n * @ignore - injected from TransitionGroup\n */\n onExited: PropTypes.func,\n /**\n * If `true`, the ripple pulsates, typically indicating the keyboard focus state of an element.\n */\n pulsate: PropTypes.bool,\n /**\n * Diameter of the ripple.\n */\n rippleSize: PropTypes.number,\n /**\n * Horizontal position of the ripple center.\n */\n rippleX: PropTypes.number,\n /**\n * Vertical position of the ripple center.\n */\n rippleY: PropTypes.number,\n /**\n * exit delay\n */\n timeout: PropTypes.number.isRequired\n} : void 0;\nexport default Ripple;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTouchRippleUtilityClass(slot) {\n return generateUtilityClass('MuiTouchRipple', slot);\n}\nconst touchRippleClasses = generateUtilityClasses('MuiTouchRipple', ['root', 'ripple', 'rippleVisible', 'ripplePulsate', 'child', 'childLeaving', 'childPulsate']);\nexport default touchRippleClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"center\", \"classes\", \"className\"];\nlet _ = t => t,\n _t,\n _t2,\n _t3,\n _t4;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { TransitionGroup } from 'react-transition-group';\nimport clsx from 'clsx';\nimport { keyframes } from '@mui/system';\nimport useTimeout from '@mui/utils/useTimeout';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Ripple from './Ripple';\nimport touchRippleClasses from './touchRippleClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DURATION = 550;\nexport const DELAY_RIPPLE = 80;\nconst enterKeyframe = keyframes(_t || (_t = _`\n 0% {\n transform: scale(0);\n opacity: 0.1;\n }\n\n 100% {\n transform: scale(1);\n opacity: 0.3;\n }\n`));\nconst exitKeyframe = keyframes(_t2 || (_t2 = _`\n 0% {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n }\n`));\nconst pulsateKeyframe = keyframes(_t3 || (_t3 = _`\n 0% {\n transform: scale(1);\n }\n\n 50% {\n transform: scale(0.92);\n }\n\n 100% {\n transform: scale(1);\n }\n`));\nexport const TouchRippleRoot = styled('span', {\n name: 'MuiTouchRipple',\n slot: 'Root'\n})({\n overflow: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n zIndex: 0,\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n borderRadius: 'inherit'\n});\n\n// This `styled()` function invokes keyframes. `styled-components` only supports keyframes\n// in string templates. Do not convert these styles in JS object as it will break.\nexport const TouchRippleRipple = styled(Ripple, {\n name: 'MuiTouchRipple',\n slot: 'Ripple'\n})(_t4 || (_t4 = _`\n opacity: 0;\n position: absolute;\n\n &.${0} {\n opacity: 0.3;\n transform: scale(1);\n animation-name: ${0};\n animation-duration: ${0}ms;\n animation-timing-function: ${0};\n }\n\n &.${0} {\n animation-duration: ${0}ms;\n }\n\n & .${0} {\n opacity: 1;\n display: block;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background-color: currentColor;\n }\n\n & .${0} {\n opacity: 0;\n animation-name: ${0};\n animation-duration: ${0}ms;\n animation-timing-function: ${0};\n }\n\n & .${0} {\n position: absolute;\n /* @noflip */\n left: 0px;\n top: 0;\n animation-name: ${0};\n animation-duration: 2500ms;\n animation-timing-function: ${0};\n animation-iteration-count: infinite;\n animation-delay: 200ms;\n }\n`), touchRippleClasses.rippleVisible, enterKeyframe, DURATION, ({\n theme\n}) => theme.transitions.easing.easeInOut, touchRippleClasses.ripplePulsate, ({\n theme\n}) => theme.transitions.duration.shorter, touchRippleClasses.child, touchRippleClasses.childLeaving, exitKeyframe, DURATION, ({\n theme\n}) => theme.transitions.easing.easeInOut, touchRippleClasses.childPulsate, pulsateKeyframe, ({\n theme\n}) => theme.transitions.easing.easeInOut);\n\n/**\n * @ignore - internal component.\n *\n * TODO v5: Make private\n */\nconst TouchRipple = /*#__PURE__*/React.forwardRef(function TouchRipple(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTouchRipple'\n });\n const {\n center: centerProp = false,\n classes = {},\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const [ripples, setRipples] = React.useState([]);\n const nextKey = React.useRef(0);\n const rippleCallback = React.useRef(null);\n React.useEffect(() => {\n if (rippleCallback.current) {\n rippleCallback.current();\n rippleCallback.current = null;\n }\n }, [ripples]);\n\n // Used to filter out mouse emulated events on mobile.\n const ignoringMouseDown = React.useRef(false);\n // We use a timer in order to only show the ripples for touch \"click\" like events.\n // We don't want to display the ripple for touch scroll events.\n const startTimer = useTimeout();\n\n // This is the hook called once the previous timeout is ready.\n const startTimerCommit = React.useRef(null);\n const container = React.useRef(null);\n const startCommit = React.useCallback(params => {\n const {\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n } = params;\n setRipples(oldRipples => [...oldRipples, /*#__PURE__*/_jsx(TouchRippleRipple, {\n classes: {\n ripple: clsx(classes.ripple, touchRippleClasses.ripple),\n rippleVisible: clsx(classes.rippleVisible, touchRippleClasses.rippleVisible),\n ripplePulsate: clsx(classes.ripplePulsate, touchRippleClasses.ripplePulsate),\n child: clsx(classes.child, touchRippleClasses.child),\n childLeaving: clsx(classes.childLeaving, touchRippleClasses.childLeaving),\n childPulsate: clsx(classes.childPulsate, touchRippleClasses.childPulsate)\n },\n timeout: DURATION,\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize\n }, nextKey.current)]);\n nextKey.current += 1;\n rippleCallback.current = cb;\n }, [classes]);\n const start = React.useCallback((event = {}, options = {}, cb = () => {}) => {\n const {\n pulsate = false,\n center = centerProp || options.pulsate,\n fakeElement = false // For test purposes\n } = options;\n if ((event == null ? void 0 : event.type) === 'mousedown' && ignoringMouseDown.current) {\n ignoringMouseDown.current = false;\n return;\n }\n if ((event == null ? void 0 : event.type) === 'touchstart') {\n ignoringMouseDown.current = true;\n }\n const element = fakeElement ? null : container.current;\n const rect = element ? element.getBoundingClientRect() : {\n width: 0,\n height: 0,\n left: 0,\n top: 0\n };\n\n // Get the size of the ripple\n let rippleX;\n let rippleY;\n let rippleSize;\n if (center || event === undefined || event.clientX === 0 && event.clientY === 0 || !event.clientX && !event.touches) {\n rippleX = Math.round(rect.width / 2);\n rippleY = Math.round(rect.height / 2);\n } else {\n const {\n clientX,\n clientY\n } = event.touches && event.touches.length > 0 ? event.touches[0] : event;\n rippleX = Math.round(clientX - rect.left);\n rippleY = Math.round(clientY - rect.top);\n }\n if (center) {\n rippleSize = Math.sqrt((2 * rect.width ** 2 + rect.height ** 2) / 3);\n\n // For some reason the animation is broken on Mobile Chrome if the size is even.\n if (rippleSize % 2 === 0) {\n rippleSize += 1;\n }\n } else {\n const sizeX = Math.max(Math.abs((element ? element.clientWidth : 0) - rippleX), rippleX) * 2 + 2;\n const sizeY = Math.max(Math.abs((element ? element.clientHeight : 0) - rippleY), rippleY) * 2 + 2;\n rippleSize = Math.sqrt(sizeX ** 2 + sizeY ** 2);\n }\n\n // Touche devices\n if (event != null && event.touches) {\n // check that this isn't another touchstart due to multitouch\n // otherwise we will only clear a single timer when unmounting while two\n // are running\n if (startTimerCommit.current === null) {\n // Prepare the ripple effect.\n startTimerCommit.current = () => {\n startCommit({\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n });\n };\n // Delay the execution of the ripple effect.\n // We have to make a tradeoff with this delay value.\n startTimer.start(DELAY_RIPPLE, () => {\n if (startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n }\n });\n }\n } else {\n startCommit({\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n });\n }\n }, [centerProp, startCommit, startTimer]);\n const pulsate = React.useCallback(() => {\n start({}, {\n pulsate: true\n });\n }, [start]);\n const stop = React.useCallback((event, cb) => {\n startTimer.clear();\n\n // The touch interaction occurs too quickly.\n // We still want to show ripple effect.\n if ((event == null ? void 0 : event.type) === 'touchend' && startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n startTimer.start(0, () => {\n stop(event, cb);\n });\n return;\n }\n startTimerCommit.current = null;\n setRipples(oldRipples => {\n if (oldRipples.length > 0) {\n return oldRipples.slice(1);\n }\n return oldRipples;\n });\n rippleCallback.current = cb;\n }, [startTimer]);\n React.useImperativeHandle(ref, () => ({\n pulsate,\n start,\n stop\n }), [pulsate, start, stop]);\n return /*#__PURE__*/_jsx(TouchRippleRoot, _extends({\n className: clsx(touchRippleClasses.root, classes.root, className),\n ref: container\n }, other, {\n children: /*#__PURE__*/_jsx(TransitionGroup, {\n component: null,\n exit: true,\n children: ripples\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? TouchRipple.propTypes = {\n /**\n * If `true`, the ripple starts at the center of the component\n * rather than at the point of interaction.\n */\n center: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string\n} : void 0;\nexport default TouchRipple;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getButtonBaseUtilityClass(slot) {\n return generateUtilityClass('MuiButtonBase', slot);\n}\nconst buttonBaseClasses = generateUtilityClasses('MuiButtonBase', ['root', 'disabled', 'focusVisible']);\nexport default buttonBaseClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"action\", \"centerRipple\", \"children\", \"className\", \"component\", \"disabled\", \"disableRipple\", \"disableTouchRipple\", \"focusRipple\", \"focusVisibleClassName\", \"LinkComponent\", \"onBlur\", \"onClick\", \"onContextMenu\", \"onDragLeave\", \"onFocus\", \"onFocusVisible\", \"onKeyDown\", \"onKeyUp\", \"onMouseDown\", \"onMouseLeave\", \"onMouseUp\", \"onTouchEnd\", \"onTouchMove\", \"onTouchStart\", \"tabIndex\", \"TouchRippleProps\", \"touchRippleRef\", \"type\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport useForkRef from '../utils/useForkRef';\nimport useEventCallback from '../utils/useEventCallback';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport TouchRipple from './TouchRipple';\nimport buttonBaseClasses, { getButtonBaseUtilityClass } from './buttonBaseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n disabled,\n focusVisible,\n focusVisibleClassName,\n classes\n } = ownerState;\n const slots = {\n root: ['root', disabled && 'disabled', focusVisible && 'focusVisible']\n };\n const composedClasses = composeClasses(slots, getButtonBaseUtilityClass, classes);\n if (focusVisible && focusVisibleClassName) {\n composedClasses.root += ` ${focusVisibleClassName}`;\n }\n return composedClasses;\n};\nexport const ButtonBaseRoot = styled('button', {\n name: 'MuiButtonBase',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n boxSizing: 'border-box',\n WebkitTapHighlightColor: 'transparent',\n backgroundColor: 'transparent',\n // Reset default value\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n border: 0,\n margin: 0,\n // Remove the margin in Safari\n borderRadius: 0,\n padding: 0,\n // Remove the padding in Firefox\n cursor: 'pointer',\n userSelect: 'none',\n verticalAlign: 'middle',\n MozAppearance: 'none',\n // Reset\n WebkitAppearance: 'none',\n // Reset\n textDecoration: 'none',\n // So we take precedent over the style of a native element.\n color: 'inherit',\n '&::-moz-focus-inner': {\n borderStyle: 'none' // Remove Firefox dotted outline.\n },\n [`&.${buttonBaseClasses.disabled}`]: {\n pointerEvents: 'none',\n // Disable link interactions\n cursor: 'default'\n },\n '@media print': {\n colorAdjust: 'exact'\n }\n});\n\n/**\n * `ButtonBase` contains as few styles as possible.\n * It aims to be a simple building block for creating a button.\n * It contains a load of style reset and some focus/ripple logic.\n */\nconst ButtonBase = /*#__PURE__*/React.forwardRef(function ButtonBase(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiButtonBase'\n });\n const {\n action,\n centerRipple = false,\n children,\n className,\n component = 'button',\n disabled = false,\n disableRipple = false,\n disableTouchRipple = false,\n focusRipple = false,\n LinkComponent = 'a',\n onBlur,\n onClick,\n onContextMenu,\n onDragLeave,\n onFocus,\n onFocusVisible,\n onKeyDown,\n onKeyUp,\n onMouseDown,\n onMouseLeave,\n onMouseUp,\n onTouchEnd,\n onTouchMove,\n onTouchStart,\n tabIndex = 0,\n TouchRippleProps,\n touchRippleRef,\n type\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const buttonRef = React.useRef(null);\n const rippleRef = React.useRef(null);\n const handleRippleRef = useForkRef(rippleRef, touchRippleRef);\n const {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref: focusVisibleRef\n } = useIsFocusVisible();\n const [focusVisible, setFocusVisible] = React.useState(false);\n if (disabled && focusVisible) {\n setFocusVisible(false);\n }\n React.useImperativeHandle(action, () => ({\n focusVisible: () => {\n setFocusVisible(true);\n buttonRef.current.focus();\n }\n }), []);\n const [mountedState, setMountedState] = React.useState(false);\n React.useEffect(() => {\n setMountedState(true);\n }, []);\n const enableTouchRipple = mountedState && !disableRipple && !disabled;\n React.useEffect(() => {\n if (focusVisible && focusRipple && !disableRipple && mountedState) {\n rippleRef.current.pulsate();\n }\n }, [disableRipple, focusRipple, focusVisible, mountedState]);\n function useRippleHandler(rippleAction, eventCallback, skipRippleAction = disableTouchRipple) {\n return useEventCallback(event => {\n if (eventCallback) {\n eventCallback(event);\n }\n const ignore = skipRippleAction;\n if (!ignore && rippleRef.current) {\n rippleRef.current[rippleAction](event);\n }\n return true;\n });\n }\n const handleMouseDown = useRippleHandler('start', onMouseDown);\n const handleContextMenu = useRippleHandler('stop', onContextMenu);\n const handleDragLeave = useRippleHandler('stop', onDragLeave);\n const handleMouseUp = useRippleHandler('stop', onMouseUp);\n const handleMouseLeave = useRippleHandler('stop', event => {\n if (focusVisible) {\n event.preventDefault();\n }\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n });\n const handleTouchStart = useRippleHandler('start', onTouchStart);\n const handleTouchEnd = useRippleHandler('stop', onTouchEnd);\n const handleTouchMove = useRippleHandler('stop', onTouchMove);\n const handleBlur = useRippleHandler('stop', event => {\n handleBlurVisible(event);\n if (isFocusVisibleRef.current === false) {\n setFocusVisible(false);\n }\n if (onBlur) {\n onBlur(event);\n }\n }, false);\n const handleFocus = useEventCallback(event => {\n // Fix for https://github.com/facebook/react/issues/7769\n if (!buttonRef.current) {\n buttonRef.current = event.currentTarget;\n }\n handleFocusVisible(event);\n if (isFocusVisibleRef.current === true) {\n setFocusVisible(true);\n if (onFocusVisible) {\n onFocusVisible(event);\n }\n }\n if (onFocus) {\n onFocus(event);\n }\n });\n const isNonNativeButton = () => {\n const button = buttonRef.current;\n return component && component !== 'button' && !(button.tagName === 'A' && button.href);\n };\n\n /**\n * IE11 shim for https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat\n */\n const keydownRef = React.useRef(false);\n const handleKeyDown = useEventCallback(event => {\n // Check if key is already down to avoid repeats being counted as multiple activations\n if (focusRipple && !keydownRef.current && focusVisible && rippleRef.current && event.key === ' ') {\n keydownRef.current = true;\n rippleRef.current.stop(event, () => {\n rippleRef.current.start(event);\n });\n }\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === ' ') {\n event.preventDefault();\n }\n if (onKeyDown) {\n onKeyDown(event);\n }\n\n // Keyboard accessibility for non interactive elements\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === 'Enter' && !disabled) {\n event.preventDefault();\n if (onClick) {\n onClick(event);\n }\n }\n });\n const handleKeyUp = useEventCallback(event => {\n // calling preventDefault in keyUp on a \n
\n \n );\n};\n\nexport default ContactForm;\n","import React, { useEffect, useState } from \"react\";\nimport { graphql, useStaticQuery } from \"gatsby\";\n\nimport { ILang } from \"../../types/common.type\";\nimport { IContactFromQueryResult } from \"../../types/form.type\";\n\nimport ContactForm from \"./contactForm\";\nimport ContentContainer from \"../common/contentContainer\";\n\nconst ContactFormSection = ({ lang }: ILang) => {\n const formMdData = useStaticQuery(query) as IContactFromQueryResult;\n\n const allMarkup = formMdData?.markupData?.nodes?.find(\n (node) => node.fields.language === lang\n )?.frontmatter;\n const formMarkup = allMarkup?.contactForm;\n const formDescription =\n formMdData?.[lang]?.nodes?.[0]?.html ?? formMdData?.en?.nodes?.[0]?.html;\n const validationMarkup = allMarkup?.validation;\n\n return (\n <>\n {formMarkup ? (\n <>\n
\n \n anchor\n
\n \n
\n

\n {formMarkup?.sectionTitle.toUpperCase()}\n

\n \n {formMarkup?.sectionLinkTitle.toUpperCase()}\n
\n \n
\n {formDescription ? (\n \n ) : null}\n \n
\n \n \n \n ) : null}\n \n );\n};\n\nexport default ContactFormSection;\n\nexport const query = graphql`\n query {\n en: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"contactForm\" }, language: { eq: \"en\" } }\n }\n ) {\n nodes {\n html\n }\n }\n ru: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"contactForm\" }, language: { eq: \"ru\" } }\n }\n ) {\n nodes {\n html\n }\n }\n markupData: allMarkdownRemark(\n filter: { fields: { sourceName: { eq: \"common\" } } }\n ) {\n nodes {\n fields {\n language\n }\n frontmatter {\n validation {\n invalidEmail\n required\n consent\n }\n contactForm {\n sectionTitle\n sectionLinkTitle\n emailLabel\n nameLabel\n companyNameLabel\n servicesLabel\n servicesOptions {\n web_dev\n mobile_dev\n qa\n devops\n ui_ux\n ba\n add_ins\n vr_ar\n support\n consulting\n }\n budgetLabel\n budgetOptions {\n _1500_2500\n _2500_5000\n _5000_10000\n _10000_\n not_decided\n }\n selectPlaceholder\n descriptionLabel\n descriptionPlaceholder\n privacyPolicyCheckboxLabel\n adsCheckboxLabel\n buttonLabel\n }\n }\n }\n }\n }\n`;\n","var React = require('react');\n\nfunction Border (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"line\",{\"width\":\"800\",\"height\":\"8\",\"stroke\":\"#f9f9f9\",\"strokeWidth\":\"8\",\"strokeDasharray\":\"8 8\",\"x1\":\"0\",\"x2\":\"100%\",\"y1\":\"4\",\"y2\":\"4\",\"key\":0}),React.createElement(\"line\",{\"width\":\"800\",\"height\":\"8\",\"stroke\":\"#111111\",\"strokeWidth\":\"8\",\"strokeDasharray\":\"8 8\",\"x1\":\"8\",\"x2\":\"100%\",\"y1\":\"4\",\"y2\":\"4\",\"key\":1})]);\n}\n\nBorder.defaultProps = {\"height\":\"8\"};\n\nmodule.exports = Border;\n\nBorder.default = Border;\n"],"names":["_ref","className","___EmotionJSX","viewBox","fill","xmlns","d","Babylon","isBabylonReady","setIsBabylonReady","useState","isInitial","useRef","canvasRef","useEffect","current","window","babylonWorker","Worker","URL","type","onmessage","data","canvas","width","clientWidth","height","clientHeight","offscreenCanvas","transferControlToOffscreen","postMessage","onResizeHandler","addEventListener","passive","onWheelHandler","e","preventDefault","wheel","deltaY","onMouseMoveHandler","x","movementX","y","movementY","removeEventListener","once","onTouchMoveHandler","touches","length","firstTouch","previousCoords","screenX","screenY","newX","newY","nestedTouchMoveHandler","touch","terminate","ref","Spinner","heightClass","title","borderBottom","borderTop","babylon","image","titleBlockClassName","children","textTranslate","setTextTranslate","Border","ContentContainer","GatsbyImage","alt","hadKeyboardEvent","hadFocusVisibleRecently","hadFocusVisibleRecentlyTimeout","inputTypesWhitelist","text","search","url","tel","email","password","number","date","month","week","time","datetime","handleKeyDown","event","metaKey","altKey","ctrlKey","handlePointerDown","handleVisibilityChange","this","visibilityState","isFocusVisible","target","matches","error","node","tagName","readOnly","isContentEditable","focusTriggersKeyboardModality","doc","ownerDocument","isFocusVisibleRef","onFocus","onBlur","start","getChildMapping","mapFn","result","Object","create","Children","map","c","forEach","child","key","isValidElement","mapper","getProp","prop","props","getNextChildMapping","nextProps","prevChildMapping","onExited","nextChildMapping","prev","next","getValueForKey","i","nextKeysPending","pendingKeys","prevKey","push","childMapping","nextKey","pendingNextKey","mergeChildMappings","keys","hasPrev","hasNext","prevChild","isLeaving","in","cloneElement","bind","exit","enter","values","obj","k","TransitionGroup","_React$Component","context","_this","handleExited","call","ReferenceError","_assertThisInitialized","state","contextValue","isMounting","firstRender","_proto","prototype","componentDidMount","mounted","setState","componentWillUnmount","getDerivedStateFromProps","appear","currentChildMapping","render","_this$props","Component","component","childFactory","TransitionGroupContext","Provider","value","propTypes","defaultProps","classes","pulsate","rippleX","rippleY","rippleSize","inProp","timeout","leaving","setLeaving","rippleClassName","clsx","ripple","rippleVisible","ripplePulsate","rippleStyles","top","left","childClassName","childLeaving","childPulsate","timeoutId","setTimeout","clearTimeout","style","generateUtilityClasses","_excluded","_t","_t2","_t3","_t4","_","t","enterKeyframe","exitKeyframe","pulsateKeyframe","TouchRippleRoot","styled","name","slot","overflow","pointerEvents","position","zIndex","right","bottom","borderRadius","TouchRippleRipple","theme","transitions","easing","easeInOut","duration","shorter","inProps","useThemeProps","center","centerProp","other","ripples","setRipples","rippleCallback","ignoringMouseDown","startTimer","useTimeout","startTimerCommit","container","startCommit","params","cb","oldRipples","options","fakeElement","element","rect","getBoundingClientRect","undefined","clientX","clientY","Math","round","sqrt","sizeX","max","abs","sizeY","stop","clear","slice","root","getButtonBaseUtilityClass","ButtonBaseRoot","overridesResolver","styles","display","alignItems","justifyContent","boxSizing","WebkitTapHighlightColor","backgroundColor","outline","border","margin","padding","cursor","userSelect","verticalAlign","MozAppearance","WebkitAppearance","textDecoration","color","borderStyle","disabled","colorAdjust","ButtonBase","action","centerRipple","disableRipple","disableTouchRipple","focusRipple","LinkComponent","onClick","onContextMenu","onDragLeave","onFocusVisible","onKeyDown","onKeyUp","onMouseDown","onMouseLeave","onMouseUp","onTouchEnd","onTouchMove","onTouchStart","tabIndex","TouchRippleProps","touchRippleRef","buttonRef","rippleRef","handleRippleRef","useForkRef","handleFocusVisible","handleBlurVisible","focusVisibleRef","focusVisible","setFocusVisible","focus","mountedState","setMountedState","enableTouchRipple","useRippleHandler","rippleAction","eventCallback","skipRippleAction","handleMouseDown","handleContextMenu","handleDragLeave","handleMouseUp","handleMouseLeave","handleTouchStart","handleTouchEnd","handleTouchMove","handleBlur","handleFocus","currentTarget","isNonNativeButton","button","href","keydownRef","handleKeyUp","defaultPrevented","ComponentProp","to","buttonProps","role","handleRef","ownerState","focusVisibleClassName","slots","composedClasses","composeClasses","useUtilityClasses","as","getMenuItemUtilityClass","MenuItemRoot","shouldForwardProp","rootShouldForwardProp","dense","divider","disableGutters","gutters","typography","body1","minHeight","paddingTop","paddingBottom","whiteSpace","paddingLeft","paddingRight","vars","palette","backgroundClip","hover","selected","primary","mainChannel","selectedOpacity","main","focusOpacity","hoverOpacity","opacity","disabledOpacity","marginTop","spacing","marginBottom","inset","marginLeft","minWidth","breakpoints","up","body2","fontSize","autoFocus","tabIndexProp","ListContext","childContext","menuItemRef","useEnhancedEffect","getSwitchBaseUtilityClass","SwitchBaseRoot","edge","size","marginRight","SwitchBaseInput","checked","checkedProp","checkedIcon","defaultChecked","disabledProp","disableFocusRipple","icon","id","inputProps","inputRef","onChange","required","setCheckedState","useControlled","controlled","default","Boolean","muiFormControl","useFormControl","hasLabelFor","capitalize","input","nativeEvent","newChecked","createSvgIcon","getCheckboxUtilityClass","CheckboxRoot","indeterminate","secondary","activeChannel","active","defaultCheckedIcon","CheckBox","defaultIcon","CheckBoxOutlineBlank","defaultIndeterminateIcon","IndeterminateCheckBox","_icon$props$fontSize","_indeterminateIcon$pr","iconProp","indeterminateIcon","indeterminateIconProp","_errors$services","_errors$budget","_errors$consentToProc","markup","validationMarkup","isPending","setIsPending","isGivenConsent","setIsGivenConsent","register","handleSubmit","control","reset","formState","errors","isValid","useForm","mode","resolver","yupResolver","contactFormSchema","defaultValues","consentToProcess","renderTextInput","label","multiline","rows","_errors$key","ContactFormInput","_extends","variant","message","helperText","getValidationMessage","fullWidth","onSubmit","async","hutk","getCookie","requestBody","mapContactFormData","hubspotApi","post","status","_e$response","_e$response$data","console","log","response","emailLabel","companyNameLabel","nameLabel","servicesLabel","select","defaultValue","ServicesOptions","service","MenuItem","servicesOptions","budgetLabel","BudgetOptions","budget","budgetOptions","descriptionLabel","Controller","_ref2","field","ControlLabel","Checkbox","sx","privacyPolicyCheckboxLabel","consent","adsCheckboxLabel","SkeletonStub","buttonLabel","toUpperCase","_formMdData$markupDat","_formMdData$markupDat2","_formMdData$markupDat3","_formMdData$lang$node","_formMdData$lang","_formMdData$lang$node2","_formMdData$lang$node3","_formMdData$en","_formMdData$en$nodes","_formMdData$en$nodes$","lang","formMdData","useStaticQuery","query","allMarkup","markupData","nodes","find","fields","language","frontmatter","formMarkup","contactForm","formDescription","html","en","validation","React","maxWidthClass","sectionTitle","sectionLinkTitle","dangerouslySetInnerHTML","__html","ContactForm","createElement","module","exports"],"sourceRoot":""} \ No newline at end of file diff --git a/71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-e37094f984ea117f7d6f.js.map b/71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-e37094f984ea117f7d6f.js.map deleted file mode 100644 index f71b17b3..00000000 --- a/71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-e37094f984ea117f7d6f.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-e37094f984ea117f7d6f.js","mappings":"yMA2BA,MAzBgBA,IAA4C,IAA3C,UAAEC,GAAmCD,EACpD,OACEE,EAAAA,EAAAA,IAAA,OACED,UAAW,kDAAkDA,MAE7DC,EAAAA,EAAAA,IAAA,OACE,cAAY,OACZD,UAAU,8EACVE,QAAQ,cACRC,KAAK,OACLC,MAAM,+BAENH,EAAAA,EAAAA,IAAA,QACEI,EAAE,+WACFF,KAAK,kBAEPF,EAAAA,EAAAA,IAAA,QACEI,EAAE,glBACFF,KAAK,iBAGL,EC+HV,MAlJgBG,KACd,MAAM,EAACC,EAAe,EAACC,IAAqBC,EAAAA,EAAAA,WAAkB,GACxDC,GAAYC,EAAAA,EAAAA,SAAgB,GAC5BC,GAAYD,EAAAA,EAAAA,QAA0B,MAkI5C,OAhIAE,EAAAA,EAAAA,YAAU,KACR,IACGH,EAAUI,UACVF,EAAUE,SACM,oBAAVC,OAEP,OAEFL,EAAUI,SAAU,EAGpB,MAAME,EAAgB,IAAIC,OACxB,IAAIC,IAAI,kBACR,CACEC,UAAM,IAGVH,EAAcI,UAAYrB,IAAe,IAAd,KAAEsB,GAAMtB,EACpB,UAATsB,GAAkBb,GAAkB,EAAK,EAI/C,MAAMc,EAASV,EAAUE,QACzBQ,EAAOC,MAAQD,EAAOE,YACtBF,EAAOG,OAASH,EAAOI,aAEvB,MAAMC,EAAkBL,EAAOM,6BAC/BZ,EAAca,YAAY,CAAEP,OAAQK,GAAmB,CAACA,IAGxD,MAAMG,EAAkBA,KACtBd,EAAca,YAAY,CACxBN,MAAOD,EAAOE,YACdC,OAAQH,EAAOI,cACf,EAEJX,OAAOgB,iBAAiB,SAAUD,EAAiB,CAAEE,SAAS,IAG9D,MAAMC,EAAkBC,IACtBA,EAAEC,iBACFnB,EAAca,YAAY,CAAEO,MAAOF,EAAEG,QAAS,EAEhDf,EAAOS,iBAAiB,QAASE,GAGjC,MAAMK,EAAsBJ,IAC1BlB,EAAca,YAAY,CACxBU,EAAGL,EAAEM,UACLC,EAAGP,EAAEQ,WACL,EAEJpB,EAAOS,iBAAiB,aAAcG,IACpCA,EAAEC,iBACFpB,OAAOgB,iBAAiB,YAAaO,EAAoB,CACvDN,SAAS,IAEXjB,OAAOgB,iBACL,WACA,IAAMhB,OAAO4B,oBAAoB,YAAaL,IAC9C,CAAEM,MAAM,EAAMZ,SAAS,GACxB,IAmBH,IAAIa,EAmCJ,OAlCAvB,EAAOS,iBACL,cACCG,IACC,GAAyB,IAArBA,EAAEY,QAAQC,OAAc,OAE5B,MAAMC,EAAad,EAAEY,QAAQ,GAE7BZ,EAAEC,iBACF,MAAMc,EAAiB,CACrBV,EAAGS,EAAWE,QACdT,EAAGO,EAAWG,SAGhBN,EAAsBX,IACpB,MAAM,KAAEkB,EAAI,KAAEC,GA9BWC,EAC7BpB,EACAe,KAEA,MAAMM,EAAQrB,EAAEY,QAAQ,GAMxB,OALA9B,EAAca,YAAY,CACxBU,EAAGgB,EAAML,QAAUD,EAAeV,EAClCE,EAAGc,EAAMJ,QAAUF,EAAeR,IAG7B,CACLW,KAAMG,EAAML,QACZG,KAAME,EAAMJ,QACb,EAiB0BG,CAAuBpB,EAAGe,GACjDA,EAAeV,EAAIa,EACnBH,EAAeR,EAAIY,CAAI,EAGzBtC,OAAOgB,iBAAiB,YAAac,EAAoB,CACvDb,SAAS,IAEXjB,OAAOgB,iBACL,YACA,KACEhB,OAAO4B,oBAAoB,YAAaE,EAAmB,GAE7D,CAAEb,SAAS,GACZ,GAEH,CAAEA,SAAS,IAIN,KACAjB,SAELA,OAAO4B,oBAAoB,SAAUb,GACrCf,OAAO4B,oBAAoB,YAAaL,GACxCvB,OAAO4B,oBAAoB,YAAaE,GACpCvB,GACFA,EAAOqB,oBAAoB,QAASV,GAEtCjB,EAAcwC,YAAW,CAC1B,GACA,KAGDvD,EAAAA,EAAAA,IAAA,OAAKD,UAAW,2BACdC,EAAAA,EAAAA,IAAA,UACEwD,IAAK7C,EACLZ,UAAW,4EAEXO,EAEE,MADFN,EAAAA,EAAAA,IAACyD,EAAO,CAAC1D,UAAU,gDAEjB,ECjCV,MApEeD,IAUM,IAVL,YACd4D,EAAc,WAAU,MACxBC,EAAK,UACL5D,EAAS,aACT6D,EAAY,UACZC,EAAS,QACTC,EAAO,MACPC,EAAK,oBACLC,EAAmB,SACnBC,GACanE,EACb,MAAM,EAACoE,EAAc,EAACC,IAAoB3D,EAAAA,EAAAA,UAExC,oBAKF,OAJAI,EAAAA,EAAAA,YAAU,KACRuD,EAAiB,gBAAgB,GAChC,KAGDnE,EAAAA,EAAAA,IAAA,OACED,UAAW,iEAAiE2D,KAAe3D,KAE1F8D,GACC7D,EAAAA,EAAAA,IAACoE,IAAM,CAACrE,UAAU,yCAChB,MACJC,EAAAA,EAAAA,IAACqE,EAAAA,EAAgB,CACftE,UAAW,qHAEXC,EAAAA,EAAAA,IAAA,OACED,UAAW,mGACTiE,GAA4C,2BAG9ChE,EAAAA,EAAAA,IAAA,MAAID,UAAW,2BACbC,EAAAA,EAAAA,IAAA,QACED,UAAW,2HAA2HmE,KAErIP,KAING,GACC9D,EAAAA,EAAAA,IAAA,OAAKD,UAAU,qEACbC,EAAAA,EAAAA,IAACK,EAAO,OAER,KACH0D,GACC/D,EAAAA,EAAAA,IAAA,OAAKD,UAAU,wGACbC,EAAAA,EAAAA,IAACsE,EAAAA,EAAW,CACVP,MAAOA,EACPQ,IAAI,QACJxE,UAAU,kCAGZ,KACHkE,GACCjE,EAAAA,EAAAA,IAAA,OAAKD,UAAU,sEACZkE,GAED,MAELL,GACC5D,EAAAA,EAAAA,IAACoE,IAAM,CAACrE,UAAU,4CAChB,KACA,C,yRC1GV,E,QAA+B,E,UCE/B,IAAIyE,GAAmB,EACnBC,GAA0B,EAC9B,MAAMC,EAAiC,IAAI,IACrCC,EAAsB,CAC1BC,MAAM,EACNC,QAAQ,EACRC,KAAK,EACLC,KAAK,EACLC,OAAO,EACPC,UAAU,EACVC,QAAQ,EACRC,MAAM,EACNC,OAAO,EACPC,MAAM,EACNC,MAAM,EACNC,UAAU,EACV,kBAAkB,GAkCpB,SAASC,EAAcC,GACjBA,EAAMC,SAAWD,EAAME,QAAUF,EAAMG,UAG3CpB,GAAmB,EACrB,CASA,SAASqB,IACPrB,GAAmB,CACrB,CACA,SAASsB,IACsB,WAAzBC,KAAKC,iBAKHvB,IACFD,GAAmB,EAGzB,CAeA,SAASyB,EAAeR,GACtB,MAAM,OACJS,GACET,EACJ,IACE,OAAOS,EAAOC,QAAQ,iBACxB,CAAE,MAAOC,GAKT,CAIA,OAAO5B,GAjFT,SAAuC6B,GACrC,MAAM,KACJnF,EAAI,QACJoF,GACED,EACJ,QAAgB,UAAZC,IAAuB3B,EAAoBzD,IAAUmF,EAAKE,WAG9C,aAAZD,IAA2BD,EAAKE,YAGhCF,EAAKG,iBAIX,CAkE6BC,CAA8BP,EAC3D,CC9GA,MD+Ge,WACb,MAAM1C,EAAM,eAAkB6C,IAhChC,IAAiBK,EAiCD,MAARL,KAjCSK,EAkCHL,EAAKM,eAjCb7E,iBAAiB,UAAW0D,GAAe,GAC/CkB,EAAI5E,iBAAiB,YAAa+D,GAAmB,GACrDa,EAAI5E,iBAAiB,cAAe+D,GAAmB,GACvDa,EAAI5E,iBAAiB,aAAc+D,GAAmB,GACtDa,EAAI5E,iBAAiB,mBAAoBgE,GAAwB,GA8B/D,GACC,IACGc,EAAoB,UAAa,GAoCvC,MAAO,CACLA,oBACAC,QATF,SAA4BpB,GAC1B,QAAIQ,EAAeR,KACjBmB,EAAkB/F,SAAU,GACrB,EAGX,EAIEiG,OAlCF,WAME,QAAIF,EAAkB/F,UAKpB4D,GAA0B,EAC1BC,EAA+BqC,MAAM,KAAK,KACxCtC,GAA0B,CAAK,IAEjCmC,EAAkB/F,SAAU,GACrB,EAGX,EAgBE2C,MAEJ,E,uBE1JO,SAASwD,EAAgB/C,EAAUgD,GACxC,IAIIC,EAASC,OAAOC,OAAO,MAO3B,OANInD,GAAU,EAAAoD,SAASC,IAAIrD,GAAU,SAAUsD,GAC7C,OAAOA,CACT,IAAGC,SAAQ,SAAUC,GAEnBP,EAAOO,EAAMC,KATF,SAAgBD,GAC3B,OAAOR,IAAS,IAAAU,gBAAeF,GAASR,EAAMQ,GAASA,CACzD,CAOsBG,CAAOH,EAC7B,IACOP,CACT,CAiEA,SAASW,EAAQJ,EAAOK,EAAMC,GAC5B,OAAsB,MAAfA,EAAMD,GAAgBC,EAAMD,GAAQL,EAAMM,MAAMD,EACzD,CAaO,SAASE,EAAoBC,EAAWC,EAAkBC,GAC/D,IAAIC,EAAmBpB,EAAgBiB,EAAUhE,UAC7CA,EA/DC,SAA4BoE,EAAMC,GAIvC,SAASC,EAAeb,GACtB,OAAOA,KAAOY,EAAOA,EAAKZ,GAAOW,EAAKX,EACxC,CALAW,EAAOA,GAAQ,CAAC,EAChBC,EAAOA,GAAQ,CAAC,EAQhB,IAcIE,EAdAC,EAAkBtB,OAAOC,OAAO,MAChCsB,EAAc,GAElB,IAAK,IAAIC,KAAWN,EACdM,KAAWL,EACTI,EAAY5F,SACd2F,EAAgBE,GAAWD,EAC3BA,EAAc,IAGhBA,EAAYE,KAAKD,GAKrB,IAAIE,EAAe,CAAC,EAEpB,IAAK,IAAIC,KAAWR,EAAM,CACxB,GAAIG,EAAgBK,GAClB,IAAKN,EAAI,EAAGA,EAAIC,EAAgBK,GAAShG,OAAQ0F,IAAK,CACpD,IAAIO,EAAiBN,EAAgBK,GAASN,GAC9CK,EAAaJ,EAAgBK,GAASN,IAAMD,EAAeQ,EAC7D,CAGFF,EAAaC,GAAWP,EAAeO,EACzC,CAGA,IAAKN,EAAI,EAAGA,EAAIE,EAAY5F,OAAQ0F,IAClCK,EAAaH,EAAYF,IAAMD,EAAeG,EAAYF,IAG5D,OAAOK,CACT,CAmBiBG,CAAmBd,EAAkBE,GAmCpD,OAlCAjB,OAAO8B,KAAKhF,GAAUuD,SAAQ,SAAUE,GACtC,IAAID,EAAQxD,EAASyD,GACrB,IAAK,IAAAC,gBAAeF,GAApB,CACA,IAAIyB,EAAWxB,KAAOQ,EAClBiB,EAAWzB,KAAOU,EAClBgB,EAAYlB,EAAiBR,GAC7B2B,GAAY,IAAA1B,gBAAeyB,KAAeA,EAAUrB,MAAMuB,IAE1DH,GAAaD,IAAWG,EAQhBF,IAAWD,GAAYG,EAMxBF,GAAWD,IAAW,IAAAvB,gBAAeyB,KAI9CnF,EAASyD,IAAO,IAAA6B,cAAa9B,EAAO,CAClCU,SAAUA,EAASqB,KAAK,KAAM/B,GAC9B6B,GAAIF,EAAUrB,MAAMuB,GACpBG,KAAM5B,EAAQJ,EAAO,OAAQQ,GAC7ByB,MAAO7B,EAAQJ,EAAO,QAASQ,MAXjChE,EAASyD,IAAO,IAAA6B,cAAa9B,EAAO,CAClC6B,IAAI,IAVNrF,EAASyD,IAAO,IAAA6B,cAAa9B,EAAO,CAClCU,SAAUA,EAASqB,KAAK,KAAM/B,GAC9B6B,IAAI,EACJG,KAAM5B,EAAQJ,EAAO,OAAQQ,GAC7ByB,MAAO7B,EAAQJ,EAAO,QAASQ,IAZD,CA+BpC,IACOhE,CACT,CClIA,IAAI0F,EAASxC,OAAOwC,QAAU,SAAUC,GACtC,OAAOzC,OAAO8B,KAAKW,GAAKtC,KAAI,SAAUuC,GACpC,OAAOD,EAAIC,EACb,GACF,EAuBIC,EAA+B,SAAUC,GAG3C,SAASD,EAAgB/B,EAAOiC,GAC9B,IAAIC,EAIAC,GAFJD,EAAQF,EAAiBI,KAAKpE,KAAMgC,EAAOiC,IAAYjE,MAE9BmE,aAAaV,KC5C1C,SAAgCvH,GAC9B,QAAI,IAAWA,EAAG,MAAM,IAAImI,eAAe,6DAC3C,OAAOnI,CACT,CDyC+CoI,CAAuBJ,IAUlE,OAPAA,EAAMK,MAAQ,CACZC,aAAc,CACZC,YAAY,GAEdN,aAAcA,EACdO,aAAa,GAERR,CACT,EAlBA,OAAeH,EAAiBC,GAoBhC,IAAIW,EAASZ,EAAgBa,UAqE7B,OAnEAD,EAAOE,kBAAoB,WACzB7E,KAAK8E,SAAU,EACf9E,KAAK+E,SAAS,CACZP,aAAc,CACZC,YAAY,IAGlB,EAEAE,EAAOK,qBAAuB,WAC5BhF,KAAK8E,SAAU,CACjB,EAEAf,EAAgBkB,yBAA2B,SAAkC/C,EAAWnI,GACtF,IDiBmCiI,EAAOI,ECjBtCD,EAAmBpI,EAAKmE,SACxBiG,EAAepK,EAAKoK,aAExB,MAAO,CACLjG,SAFgBnE,EAAK2K,aDeY1C,ECbcE,EDaPE,ECbkB+B,EDcvDlD,EAAgBe,EAAM9D,UAAU,SAAUwD,GAC/C,OAAO,IAAA8B,cAAa9B,EAAO,CACzBU,SAAUA,EAASqB,KAAK,KAAM/B,GAC9B6B,IAAI,EACJ2B,OAAQpD,EAAQJ,EAAO,SAAUM,GACjC2B,MAAO7B,EAAQJ,EAAO,QAASM,GAC/B0B,KAAM5B,EAAQJ,EAAO,OAAQM,IAEjC,KCtB8EC,EAAoBC,EAAWC,EAAkBgC,GAC3HO,aAAa,EAEjB,EAGAC,EAAOR,aAAe,SAAsBzC,EAAOpB,GACjD,IAAI6E,EAAsBlE,EAAgBjB,KAAKgC,MAAM9D,UACjDwD,EAAMC,OAAOwD,IAEbzD,EAAMM,MAAMI,UACdV,EAAMM,MAAMI,SAAS9B,GAGnBN,KAAK8E,SACP9E,KAAK+E,UAAS,SAAUR,GACtB,IAAIrG,GAAW,OAAS,CAAC,EAAGqG,EAAMrG,UAGlC,cADOA,EAASwD,EAAMC,KACf,CACLzD,SAAUA,EAEd,IAEJ,EAEAyG,EAAOS,OAAS,WACd,IAAIC,EAAcrF,KAAKgC,MACnBsD,EAAYD,EAAYE,UACxBC,EAAeH,EAAYG,aAC3BxD,GAAQ,OAA8BqD,EAAa,CAAC,YAAa,iBAEjEb,EAAexE,KAAKuE,MAAMC,aAC1BtG,EAAW0F,EAAO5D,KAAKuE,MAAMrG,UAAUqD,IAAIiE,GAK/C,cAJOxD,EAAMkD,cACNlD,EAAM2B,aACN3B,EAAM0B,KAEK,OAAd4B,EACkB,gBAAoBG,EAAA,EAAuBC,SAAU,CACvEC,MAAOnB,GACNtG,GAGe,gBAAoBuH,EAAA,EAAuBC,SAAU,CACvEC,MAAOnB,GACO,gBAAoBc,EAAWtD,EAAO9D,GACxD,EAEO6F,CACT,CA3FmC,CA2FjC,aAEFA,EAAgB6B,UAyDZ,CAAC,EACL7B,EAAgB8B,aA5KG,CACjBN,UAAW,MACXC,aAAc,SAAsB9D,GAClC,OAAOA,CACT,GAyKF,Q,mBErGA,MA7EA,SAAgBM,GACd,MAAM,UACJhI,EAAS,QACT8L,EAAO,QACPC,GAAU,EAAK,QACfC,EAAO,QACPC,EAAO,WACPC,EACA3C,GAAI4C,EAAM,SACV/D,EAAQ,QACRgE,GACEpE,GACGqE,EAASC,GAAc,YAAe,GACvCC,GAAkB,EAAAC,EAAA,GAAKxM,EAAW8L,EAAQW,OAAQX,EAAQY,cAAeX,GAAWD,EAAQa,eAC5FC,EAAe,CACnBrL,MAAO2K,EACPzK,OAAQyK,EACRW,KAAOX,EAAa,EAAKD,EACzBa,MAAQZ,EAAa,EAAKF,GAEtBe,GAAiB,EAAAP,EAAA,GAAKV,EAAQpE,MAAO2E,GAAWP,EAAQkB,aAAcjB,GAAWD,EAAQmB,cAc/F,OAbKd,GAAWE,GACdC,GAAW,GAEb,aAAgB,KACd,IAAKH,GAAsB,MAAZ/D,EAAkB,CAE/B,MAAM8E,EAAYC,WAAW/E,EAAUgE,GACvC,MAAO,KACLgB,aAAaF,EAAU,CAE3B,CACgB,GACf,CAAC9E,EAAU+D,EAAQC,KACF,SAAK,OAAQ,CAC/BpM,UAAWuM,EACXc,MAAOT,EACP1I,UAAuB,SAAK,OAAQ,CAClClE,UAAW+M,KAGjB,E,UC7CA,OAD2B,EAAAO,EAAA,GAAuB,iBAAkB,CAAC,OAAQ,SAAU,gBAAiB,gBAAiB,QAAS,eAAgB,iBCDlJ,MAAMC,EAAY,CAAC,SAAU,UAAW,aACxC,IACEC,EACAC,EACAC,EACAC,EAJEC,EAAIC,GAAKA,EAgBb,MAEMC,IAAgB,QAAUN,IAAOA,EAAKI,CAAC;;;;;;;;;;IAWvCG,IAAe,QAAUN,IAAQA,EAAMG,CAAC;;;;;;;;IASxCI,IAAkB,QAAUN,IAAQA,EAAME,CAAC;;;;;;;;;;;;IAapCK,IAAkB,EAAAC,EAAA,IAAO,OAAQ,CAC5CC,KAAM,iBACNC,KAAM,QAFuB,CAG5B,CACDC,SAAU,SACVC,cAAe,OACfC,SAAU,WACVC,OAAQ,EACR3B,IAAK,EACL4B,MAAO,EACPC,OAAQ,EACR5B,KAAM,EACN6B,aAAc,YAKHC,IAAoB,EAAAV,EAAA,IAAO,EAAQ,CAC9CC,KAAM,iBACNC,KAAM,UAFyB,CAG9BT,IAAQA,EAAMC,CAAC;;;;MAIZ;;;sBAGgB;0BACI;iCACO;;;MAG3B;0BACoB;;;OAGnB;;;;;;;;;OASA;;sBAEe;0BACI;iCACO;;;OAG1B;;;;;sBAKe;;iCAEW;;;;GAI7B,EAAmBlB,cAAeoB,GAlGrB,KAkG8C,EAC7De,WACIA,EAAMC,YAAYC,OAAOC,WAAW,EAAmBrC,eAAe,EAC1EkC,WACIA,EAAMC,YAAYG,SAASC,SAAS,EAAmBxH,MAAO,EAAmBsF,aAAce,GAtGpF,KAsG4G,EAC3Hc,WACIA,EAAMC,YAAYC,OAAOC,WAAW,EAAmB/B,aAAce,IAAiB,EAC1Fa,WACIA,EAAMC,YAAYC,OAAOC,YA6M/B,OAtMiC,cAAiB,SAAqBG,EAAS1L,GAC9E,MAAMuE,GAAQ,EAAAoH,EAAA,GAAc,CAC1BpH,MAAOmH,EACPhB,KAAM,oBAGJkB,OAAQC,GAAa,EAAK,QAC1BxD,EAAU,CAAC,EAAC,UACZ9L,GACEgI,EACJuH,GAAQ,OAA8BvH,EAAOuF,IACxCiC,EAASC,GAAc,WAAe,IACvC1G,EAAU,SAAa,GACvB2G,EAAiB,SAAa,MACpC,aAAgB,KACVA,EAAe5O,UACjB4O,EAAe5O,UACf4O,EAAe5O,QAAU,KAC3B,GACC,CAAC0O,IAGJ,MAAMG,EAAoB,UAAa,GAGjCC,GAAa,EAAAC,EAAA,KAGbC,EAAmB,SAAa,MAChCC,EAAY,SAAa,MACzBC,EAAc,eAAkBC,IACpC,MAAM,QACJlE,EAAO,QACPC,EAAO,QACPC,EAAO,WACPC,EAAU,GACVgE,GACED,EACJR,GAAWU,GAAc,IAAIA,GAAyB,SAAKvB,GAAmB,CAC5E9C,QAAS,CACPW,QAAQ,EAAAD,EAAA,GAAKV,EAAQW,OAAQ,EAAmBA,QAChDC,eAAe,EAAAF,EAAA,GAAKV,EAAQY,cAAe,EAAmBA,eAC9DC,eAAe,EAAAH,EAAA,GAAKV,EAAQa,cAAe,EAAmBA,eAC9DjF,OAAO,EAAA8E,EAAA,GAAKV,EAAQpE,MAAO,EAAmBA,OAC9CsF,cAAc,EAAAR,EAAA,GAAKV,EAAQkB,aAAc,EAAmBA,cAC5DC,cAAc,EAAAT,EAAA,GAAKV,EAAQmB,aAAc,EAAmBA,eAE9Db,QAhKW,IAiKXL,QAASA,EACTC,QAASA,EACTC,QAASA,EACTC,WAAYA,GACXnD,EAAQjI,YACXiI,EAAQjI,SAAW,EACnB4O,EAAe5O,QAAUoP,CAAE,GAC1B,CAACpE,IACE9E,EAAQ,eAAkB,CAACtB,EAAQ,CAAC,EAAG0K,EAAU,CAAC,EAAGF,EAAK,YAC9D,MAAM,QACJnE,GAAU,EAAK,OACfsD,EAASC,GAAcc,EAAQrE,QAAO,YACtCsE,GAAc,GACZD,EACJ,GAA8C,eAAhC,MAAT1K,OAAgB,EAASA,EAAMvE,OAAyBwO,EAAkB7O,QAE7E,YADA6O,EAAkB7O,SAAU,GAGgB,gBAAhC,MAAT4E,OAAgB,EAASA,EAAMvE,QAClCwO,EAAkB7O,SAAU,GAE9B,MAAMwP,EAAUD,EAAc,KAAON,EAAUjP,QACzCyP,EAAOD,EAAUA,EAAQE,wBAA0B,CACvDjP,MAAO,EACPE,OAAQ,EACRqL,KAAM,EACND,IAAK,GAIP,IAAIb,EACAC,EACAC,EACJ,GAAImD,QAAoBoB,IAAV/K,GAAyC,IAAlBA,EAAMgL,SAAmC,IAAlBhL,EAAMiL,UAAkBjL,EAAMgL,UAAYhL,EAAM5C,QAC1GkJ,EAAU4E,KAAKC,MAAMN,EAAKhP,MAAQ,GAClC0K,EAAU2E,KAAKC,MAAMN,EAAK9O,OAAS,OAC9B,CACL,MAAM,QACJiP,EAAO,QACPC,GACEjL,EAAM5C,SAAW4C,EAAM5C,QAAQC,OAAS,EAAI2C,EAAM5C,QAAQ,GAAK4C,EACnEsG,EAAU4E,KAAKC,MAAMH,EAAUH,EAAKzD,MACpCb,EAAU2E,KAAKC,MAAMF,EAAUJ,EAAK1D,IACtC,CACA,GAAIwC,EACFnD,EAAa0E,KAAKE,MAAM,EAAIP,EAAKhP,OAAS,EAAIgP,EAAK9O,QAAU,GAAK,GAG9DyK,EAAa,GAAM,IACrBA,GAAc,OAEX,CACL,MAAM6E,EAAqF,EAA7EH,KAAKI,IAAIJ,KAAKK,KAAKX,EAAUA,EAAQ9O,YAAc,GAAKwK,GAAUA,GAAe,EACzFkF,EAAsF,EAA9EN,KAAKI,IAAIJ,KAAKK,KAAKX,EAAUA,EAAQ5O,aAAe,GAAKuK,GAAUA,GAAe,EAChGC,EAAa0E,KAAKE,KAAKC,GAAS,EAAIG,GAAS,EAC/C,CAGa,MAATxL,GAAiBA,EAAM5C,QAIQ,OAA7BgN,EAAiBhP,UAEnBgP,EAAiBhP,QAAU,KACzBkP,EAAY,CACVjE,UACAC,UACAC,UACAC,aACAgE,MACA,EAIJN,EAAW5I,MA3OS,IA2OW,KACzB8I,EAAiBhP,UACnBgP,EAAiBhP,UACjBgP,EAAiBhP,QAAU,KAC7B,KAIJkP,EAAY,CACVjE,UACAC,UACAC,UACAC,aACAgE,MAEJ,GACC,CAACZ,EAAYU,EAAaJ,IACvB7D,EAAU,eAAkB,KAChC/E,EAAM,CAAC,EAAG,CACR+E,SAAS,GACT,GACD,CAAC/E,IACEmK,EAAO,eAAkB,CAACzL,EAAOwK,KAKrC,GAJAN,EAAWwB,QAImC,cAAhC,MAAT1L,OAAgB,EAASA,EAAMvE,OAAwB2O,EAAiBhP,QAM3E,OALAgP,EAAiBhP,UACjBgP,EAAiBhP,QAAU,UAC3B8O,EAAW5I,MAAM,GAAG,KAClBmK,EAAKzL,EAAOwK,EAAG,IAInBJ,EAAiBhP,QAAU,KAC3B2O,GAAWU,GACLA,EAAWpN,OAAS,EACfoN,EAAWkB,MAAM,GAEnBlB,IAETT,EAAe5O,QAAUoP,CAAE,GAC1B,CAACN,IAMJ,OALA,sBAA0BnM,GAAK,KAAM,CACnCsI,UACA/E,QACAmK,UACE,CAACpF,EAAS/E,EAAOmK,KACD,SAAKlD,IAAiB,OAAS,CACjDjO,WAAW,EAAAwM,EAAA,GAAK,EAAmB8E,KAAMxF,EAAQwF,KAAMtR,GACvDyD,IAAKsM,GACJR,EAAO,CACRrL,UAAuB,SAAK,EAAiB,CAC3CqH,UAAW,KACX7B,MAAM,EACNxF,SAAUsL,MAGhB,I,WC1TO,SAAS+B,GAA0BnD,GACxC,OAAO,SAAqB,gBAAiBA,EAC/C,CAEA,QAD0B,EAAAd,EAAA,GAAuB,gBAAiB,CAAC,OAAQ,WAAY,iBCDvF,MAAM,GAAY,CAAC,SAAU,eAAgB,WAAY,YAAa,YAAa,WAAY,gBAAiB,qBAAsB,cAAe,wBAAyB,gBAAiB,SAAU,UAAW,gBAAiB,cAAe,UAAW,iBAAkB,YAAa,UAAW,cAAe,eAAgB,YAAa,aAAc,cAAe,eAAgB,WAAY,mBAAoB,iBAAkB,QAgCvakE,IAAiB,EAAAtD,EAAA,IAAO,SAAU,CAC7CC,KAAM,gBACNC,KAAM,OACNqD,kBAAmB,CAACzJ,EAAO0J,IAAWA,EAAOJ,MAHjB,CAI3B,CACDK,QAAS,cACTC,WAAY,SACZC,eAAgB,SAChBtD,SAAU,WACVuD,UAAW,aACXC,wBAAyB,cACzBC,gBAAiB,cAGjBC,QAAS,EACTC,OAAQ,EACRC,OAAQ,EAERxD,aAAc,EACdyD,QAAS,EAETC,OAAQ,UACRC,WAAY,OACZC,cAAe,SACfC,cAAe,OAEfC,iBAAkB,OAElBC,eAAgB,OAEhBC,MAAO,UACP,sBAAuB,CACrBC,YAAa,QAEf,CAAC,KAAK,GAAkBC,YAAa,CACnCvE,cAAe,OAEf+D,OAAQ,WAEV,eAAgB,CACdS,YAAa,WASXC,GAA0B,cAAiB,SAAoB5D,EAAS1L,GAC5E,MAAMuE,GAAQ,EAAAoH,EAAA,GAAc,CAC1BpH,MAAOmH,EACPhB,KAAM,mBAEF,OACF6E,EAAM,aACNC,GAAe,EAAK,SACpB/O,EAAQ,UACRlE,EAAS,UACTuL,EAAY,SAAQ,SACpBsH,GAAW,EAAK,cAChBK,GAAgB,EAAK,mBACrBC,GAAqB,EAAK,YAC1BC,GAAc,EAAK,cACnBC,EAAgB,IAAG,OACnBtM,EAAM,QACNuM,EAAO,cACPC,EAAa,YACbC,EAAW,QACX1M,EAAO,eACP2M,EAAc,UACdC,EAAS,QACTC,EAAO,YACPC,EAAW,aACXC,EAAY,UACZC,EAAS,WACTC,EAAU,YACVC,EAAW,aACXC,EAAY,SACZC,EAAW,EAAC,iBACZC,EAAgB,eAChBC,EAAc,KACdjT,GACE6G,EACJuH,GAAQ,OAA8BvH,EAAO,IACzCqM,EAAY,SAAa,MACzBC,EAAY,SAAa,MACzBC,GAAkB,EAAAC,EAAA,GAAWF,EAAWF,IACxC,kBACJvN,EACAC,QAAS2N,EACT1N,OAAQ2N,EACRjR,IAAKkR,GACH,KACGC,EAAcC,GAAmB,YAAe,GACnDhC,GAAY+B,GACdC,GAAgB,GAElB,sBAA0B7B,GAAQ,KAAM,CACtC4B,aAAc,KACZC,GAAgB,GAChBR,EAAUvT,QAAQgU,OAAO,KAEzB,IACJ,MAAOC,EAAcC,GAAmB,YAAe,GACvD,aAAgB,KACdA,GAAgB,EAAK,GACpB,IACH,MAAMC,EAAoBF,IAAiB7B,IAAkBL,EAM7D,SAASqC,GAAiBC,EAAcC,EAAeC,EAAmBlC,GACxE,OAAO,GAAiBzN,IAClB0P,GACFA,EAAc1P,GAMhB,OAJe2P,GACAf,EAAUxT,SACvBwT,EAAUxT,QAAQqU,GAAczP,IAE3B,CAAI,GAEf,CAhBA,aAAgB,KACVkP,GAAgBxB,IAAgBF,GAAiB6B,GACnDT,EAAUxT,QAAQiL,SACpB,GACC,CAACmH,EAAeE,EAAawB,EAAcG,IAa9C,MAAMO,GAAkBJ,GAAiB,QAAStB,GAC5C2B,GAAoBL,GAAiB,OAAQ3B,GAC7CiC,GAAkBN,GAAiB,OAAQ1B,GAC3CiC,GAAgBP,GAAiB,OAAQpB,GACzC4B,GAAmBR,GAAiB,QAAQxP,IAC5CkP,GACFlP,EAAMvD,iBAEJ0R,GACFA,EAAanO,EACf,IAEIiQ,GAAmBT,GAAiB,QAASjB,GAC7C2B,GAAiBV,GAAiB,OAAQnB,GAC1C8B,GAAkBX,GAAiB,OAAQlB,GAC3C8B,GAAaZ,GAAiB,QAAQxP,IAC1CgP,EAAkBhP,IACgB,IAA9BmB,EAAkB/F,SACpB+T,GAAgB,GAEd9N,GACFA,EAAOrB,EACT,IACC,GACGqQ,GAAc,GAAiBrQ,IAE9B2O,EAAUvT,UACbuT,EAAUvT,QAAU4E,EAAMsQ,eAE5BvB,EAAmB/O,IACe,IAA9BmB,EAAkB/F,UACpB+T,GAAgB,GACZpB,GACFA,EAAe/N,IAGfoB,GACFA,EAAQpB,EACV,IAEIuQ,GAAoB,KACxB,MAAMC,EAAS7B,EAAUvT,QACzB,OAAOyK,GAA2B,WAAdA,KAA+C,MAAnB2K,EAAO3P,SAAmB2P,EAAOC,KAAK,EAMlFC,GAAa,UAAa,GAC1B3Q,GAAgB,GAAiBC,IAEjC0N,IAAgBgD,GAAWtV,SAAW8T,GAAgBN,EAAUxT,SAAyB,MAAd4E,EAAMiC,MACnFyO,GAAWtV,SAAU,EACrBwT,EAAUxT,QAAQqQ,KAAKzL,GAAO,KAC5B4O,EAAUxT,QAAQkG,MAAMtB,EAAM,KAG9BA,EAAMS,SAAWT,EAAMsQ,eAAiBC,MAAqC,MAAdvQ,EAAMiC,KACvEjC,EAAMvD,iBAEJuR,GACFA,EAAUhO,GAIRA,EAAMS,SAAWT,EAAMsQ,eAAiBC,MAAqC,UAAdvQ,EAAMiC,MAAoBkL,IAC3FnN,EAAMvD,iBACFmR,GACFA,EAAQ5N,GAEZ,IAEI2Q,GAAc,GAAiB3Q,IAG/B0N,GAA6B,MAAd1N,EAAMiC,KAAe2M,EAAUxT,SAAW8T,IAAiBlP,EAAM4Q,mBAClFF,GAAWtV,SAAU,EACrBwT,EAAUxT,QAAQqQ,KAAKzL,GAAO,KAC5B4O,EAAUxT,QAAQiL,QAAQrG,EAAM,KAGhCiO,GACFA,EAAQjO,GAIN4N,GAAW5N,EAAMS,SAAWT,EAAMsQ,eAAiBC,MAAqC,MAAdvQ,EAAMiC,MAAgBjC,EAAM4Q,kBACxGhD,EAAQ5N,EACV,IAEF,IAAI6Q,GAAgBhL,EACE,WAAlBgL,KAA+BhH,EAAM4G,MAAQ5G,EAAMiH,MACrDD,GAAgBlD,GAElB,MAAMoD,GAAc,CAAC,EACC,WAAlBF,IACFE,GAAYtV,UAAgBsP,IAATtP,EAAqB,SAAWA,EACnDsV,GAAY5D,SAAWA,IAElBtD,EAAM4G,MAAS5G,EAAMiH,KACxBC,GAAYC,KAAO,UAEjB7D,IACF4D,GAAY,iBAAmB5D,IAGnC,MAAM8D,IAAY,EAAAnC,EAAA,GAAW/Q,EAAKkR,EAAiBN,GASnD,MAAMuC,IAAa,OAAS,CAAC,EAAG5O,EAAO,CACrCiL,eACA1H,YACAsH,WACAK,gBACAC,qBACAC,cACAc,WACAU,iBAEI9I,GA3QkB8K,KACxB,MAAM,SACJ/D,EAAQ,aACR+B,EAAY,sBACZiC,EAAqB,QACrB/K,GACE8K,EACEE,EAAQ,CACZxF,KAAM,CAAC,OAAQuB,GAAY,WAAY+B,GAAgB,iBAEnDmC,GAAkB,EAAAC,EAAA,GAAeF,EAAOvF,GAA2BzF,GAIzE,OAHI8I,GAAgBiC,IAClBE,EAAgBzF,MAAQ,IAAIuF,KAEvBE,CAAe,EA6PNE,CAAkBL,IAClC,OAAoB,UAAMpF,IAAgB,OAAS,CACjD0F,GAAIX,GACJvW,WAAW,EAAAwM,EAAA,GAAKV,GAAQwF,KAAMtR,GAC9B4W,WAAYA,GACZ7P,OAAQ+O,GACRxC,QAASA,EACTC,cAAegC,GACfzO,QAASiP,GACTrC,UAAWjO,GACXkO,QAAS0C,GACTzC,YAAa0B,GACbzB,aAAc6B,GACd5B,UAAW2B,GACXjC,YAAagC,GACbzB,WAAY6B,GACZ5B,YAAa6B,GACb5B,aAAc0B,GACdlS,IAAKkT,GACLzC,SAAUrB,GAAY,EAAIqB,EAC1B/S,KAAMA,GACLsV,GAAalH,EAAO,CACrBrL,SAAU,CAACA,EAAU+Q,GAGrB,SAAK,IAAa,OAAS,CACzBxR,IAAK8Q,EACLlF,OAAQ4D,GACPkB,IAAqB,QAE5B,IA+JA,U,WCtdA,QADuB,EAAA7G,EAAA,GAAuB,aAAc,CAAC,OAAQ,WAAY,YAAa,QAAS,SAAU,WAAY,QAAS,WAAY,eAAgB,uBAAwB,iBAAkB,gBAAiB,UAAW,oBCCxO,QAD4B,EAAAA,EAAA,GAAuB,kBAAmB,CAAC,OAAQ,wBCC/E,QAD4B,EAAAA,EAAA,GAAuB,kBAAmB,CAAC,OAAQ,YAAa,QAAS,QAAS,UAAW,cCHlH,SAAS6J,GAAwB/I,GACtC,OAAO,SAAqB,cAAeA,EAC7C,CAEA,QADwB,EAAAd,EAAA,GAAuB,cAAe,CAAC,OAAQ,eAAgB,QAAS,WAAY,UAAW,UAAW,aCDlI,MAAM,GAAY,CAAC,YAAa,YAAa,QAAS,UAAW,iBAAkB,wBAAyB,OAAQ,WAAY,aAsC1H8J,IAAe,EAAAlJ,EAAA,IAAO,GAAY,CACtCmJ,kBAAmBtP,IAAQ,EAAAuP,EAAA,GAAsBvP,IAAkB,YAATA,EAC1DoG,KAAM,cACNC,KAAM,OACNqD,kBAzB+B,CAACzJ,EAAO0J,KACvC,MAAM,WACJkF,GACE5O,EACJ,MAAO,CAAC0J,EAAOJ,KAAMsF,EAAWW,OAAS7F,EAAO6F,MAAOX,EAAWY,SAAW9F,EAAO8F,SAAUZ,EAAWa,gBAAkB/F,EAAOgG,QAAQ,GAiBvH,EAKlB,EACD7I,QACA+H,iBACI,OAAS,CAAC,EAAG/H,EAAM8I,WAAWC,MAAO,CACzCjG,QAAS,OACTE,eAAgB,aAChBD,WAAY,SACZrD,SAAU,WACVmE,eAAgB,OAChBmF,UAAW,GACXC,WAAY,EACZC,cAAe,EACfjG,UAAW,aACXkG,WAAY,WACVpB,EAAWa,gBAAkB,CAC/BQ,YAAa,GACbC,aAAc,IACbtB,EAAWY,SAAW,CACvB3T,aAAc,cAAcgL,EAAMsJ,MAAQtJ,GAAOuJ,QAAQZ,UACzDa,eAAgB,eACf,CACD,UAAW,CACT3F,eAAgB,OAChBV,iBAAkBnD,EAAMsJ,MAAQtJ,GAAOuJ,QAAQpF,OAAOsF,MAEtD,uBAAwB,CACtBtG,gBAAiB,gBAGrB,CAAC,KAAK,GAAgBuG,YAAa,CACjCvG,gBAAiBnD,EAAMsJ,KAAO,QAAQtJ,EAAMsJ,KAAKC,QAAQI,QAAQC,iBAAiB5J,EAAMsJ,KAAKC,QAAQpF,OAAO0F,oBAAqB,QAAM7J,EAAMuJ,QAAQI,QAAQG,KAAM9J,EAAMuJ,QAAQpF,OAAO0F,iBACxL,CAAC,KAAK,GAAgB9D,gBAAiB,CACrC5C,gBAAiBnD,EAAMsJ,KAAO,QAAQtJ,EAAMsJ,KAAKC,QAAQI,QAAQC,sBAAsB5J,EAAMsJ,KAAKC,QAAQpF,OAAO0F,qBAAqB7J,EAAMsJ,KAAKC,QAAQpF,OAAO4F,kBAAmB,QAAM/J,EAAMuJ,QAAQI,QAAQG,KAAM9J,EAAMuJ,QAAQpF,OAAO0F,gBAAkB7J,EAAMuJ,QAAQpF,OAAO4F,gBAGrR,CAAC,KAAK,GAAgBL,kBAAmB,CACvCvG,gBAAiBnD,EAAMsJ,KAAO,QAAQtJ,EAAMsJ,KAAKC,QAAQI,QAAQC,sBAAsB5J,EAAMsJ,KAAKC,QAAQpF,OAAO0F,qBAAqB7J,EAAMsJ,KAAKC,QAAQpF,OAAO6F,kBAAmB,QAAMhK,EAAMuJ,QAAQI,QAAQG,KAAM9J,EAAMuJ,QAAQpF,OAAO0F,gBAAkB7J,EAAMuJ,QAAQpF,OAAO6F,cAEjR,uBAAwB,CACtB7G,gBAAiBnD,EAAMsJ,KAAO,QAAQtJ,EAAMsJ,KAAKC,QAAQI,QAAQC,iBAAiB5J,EAAMsJ,KAAKC,QAAQpF,OAAO0F,oBAAqB,QAAM7J,EAAMuJ,QAAQI,QAAQG,KAAM9J,EAAMuJ,QAAQpF,OAAO0F,mBAG5L,CAAC,KAAK,GAAgB9D,gBAAiB,CACrC5C,iBAAkBnD,EAAMsJ,MAAQtJ,GAAOuJ,QAAQpF,OAAO8B,OAExD,CAAC,KAAK,GAAgBjC,YAAa,CACjCiG,SAAUjK,EAAMsJ,MAAQtJ,GAAOuJ,QAAQpF,OAAO+F,iBAEhD,CAAC,QAAQ,GAAezH,QAAS,CAC/B0H,UAAWnK,EAAMoK,QAAQ,GACzBC,aAAcrK,EAAMoK,QAAQ,IAE9B,CAAC,QAAQ,GAAeE,SAAU,CAChCC,WAAY,IAEd,CAAC,MAAM,GAAoB9H,QAAS,CAClC0H,UAAW,EACXE,aAAc,GAEhB,CAAC,MAAM,GAAoBC,SAAU,CACnClB,YAAa,IAEf,CAAC,MAAM,GAAoB3G,QAAS,CAClC+H,SAAU,MAEVzC,EAAWW,OAAS,CACtB,CAAC1I,EAAMyK,YAAYC,GAAG,OAAQ,CAC5B1B,UAAW,SAEZjB,EAAWW,QAAS,OAAS,CAC9BM,UAAW,GAEXC,WAAY,EACZC,cAAe,GACdlJ,EAAM8I,WAAW6B,MAAO,CACzB,CAAC,MAAM,GAAoBlI,YAAa,CACtCmI,SAAU,gBAwId,OArI8B,cAAiB,SAAkBtK,EAAS1L,GACxE,MAAMuE,GAAQ,EAAAoH,EAAA,GAAc,CAC1BpH,MAAOmH,EACPhB,KAAM,iBAEF,UACFuL,GAAY,EAAK,UACjBnO,EAAY,KAAI,MAChBgM,GAAQ,EAAK,QACbC,GAAU,EAAK,eACfC,GAAiB,EAAK,sBACtBZ,EAAqB,KACrBH,EAAO,WACPxC,SAAUyF,EAAY,UACtB3Z,GACEgI,EACJuH,GAAQ,OAA8BvH,EAAO,IACzCiC,EAAU,aAAiB2P,EAAA,GAC3BC,EAAe,WAAc,KAAM,CACvCtC,MAAOA,GAAStN,EAAQsN,QAAS,EACjCE,oBACE,CAACxN,EAAQsN,MAAOA,EAAOE,IACrBqC,EAAc,SAAa,OACjC,EAAAC,GAAA,IAAkB,KACZL,GACEI,EAAYhZ,SACdgZ,EAAYhZ,QAAQgU,OAIxB,GACC,CAAC4E,IACJ,MAAM9C,GAAa,OAAS,CAAC,EAAG5O,EAAO,CACrCuP,MAAOsC,EAAatC,MACpBC,UACAC,mBAEI3L,EAxIkB8K,KACxB,MAAM,SACJ/D,EAAQ,MACR0E,EAAK,QACLC,EAAO,eACPC,EAAc,SACdc,EAAQ,QACRzM,GACE8K,EACEE,EAAQ,CACZxF,KAAM,CAAC,OAAQiG,GAAS,QAAS1E,GAAY,YAAa4E,GAAkB,UAAWD,GAAW,UAAWe,GAAY,aAErHxB,GAAkB,EAAAC,EAAA,GAAeF,EAAOK,GAAyBrL,GACvE,OAAO,OAAS,CAAC,EAAGA,EAASiL,EAAgB,EA2H7B,CAAkB/O,GAC5B2O,GAAY,EAAAnC,EAAA,GAAWsF,EAAarW,GAC1C,IAAIyQ,EAIJ,OAHKlM,EAAM6K,WACTqB,OAA4BzD,IAAjBkJ,EAA6BA,GAAgB,IAEtC,SAAKC,EAAA,EAAYlO,SAAU,CAC7CC,MAAOkO,EACP3V,UAAuB,SAAKkT,IAAc,OAAS,CACjD3T,IAAKkT,EACLD,KAAMA,EACNxC,SAAUA,EACV3I,UAAWA,EACXsL,uBAAuB,EAAArK,EAAA,GAAKV,EAAQ8I,aAAciC,GAClD7W,WAAW,EAAAwM,EAAA,GAAKV,EAAQwF,KAAMtR,IAC7BuP,EAAO,CACRqH,WAAYA,EACZ9K,QAASA,MAGf,I,iCCrLO,SAASkO,GAA0B5L,GACxC,OAAO,SAAqB,oBAAqBA,EACnD,EAC0B,EAAAd,EAAA,GAAuB,oBAAqB,CAAC,OAAQ,UAAW,WAAY,QAAS,YAAa,YCD5H,MAAM,GAAY,CAAC,YAAa,UAAW,cAAe,YAAa,iBAAkB,WAAY,qBAAsB,OAAQ,OAAQ,KAAM,aAAc,WAAY,OAAQ,SAAU,WAAY,UAAW,WAAY,WAAY,WAAY,OAAQ,SA2B1P2M,IAAiB,EAAA/L,EAAA,IAAO,GAAP,EAAmB,EACxC0I,iBACI,OAAS,CACbxE,QAAS,EACTzD,aAAc,OACO,UAApBiI,EAAWsD,MAAoB,CAChCd,WAAgC,UAApBxC,EAAWuD,MAAoB,GAAK,IAC3B,QAApBvD,EAAWsD,MAAkB,CAC9BE,YAAiC,UAApBxD,EAAWuD,MAAoB,GAAK,OAE7CE,IAAkB,EAAAnM,EAAA,IAAO,QAAS,CACtCmJ,kBAAmBC,EAAA,GADG,CAErB,CACDjF,OAAQ,UACR9D,SAAU,WACVuK,QAAS,EACTvX,MAAO,OACPE,OAAQ,OACRoL,IAAK,EACLC,KAAM,EACNqF,OAAQ,EACRC,QAAS,EACT5D,OAAQ,IA2NV,OArNgC,cAAiB,SAAoBxG,EAAOvE,GAC1E,MAAM,UACFiW,EACAY,QAASC,EAAW,YACpBC,EAAW,UACXxa,EAAS,eACTya,EACA5H,SAAU6H,EAAY,mBACtBC,GAAqB,EAAK,KAC1BT,GAAO,EAAK,KACZU,EAAI,GACJC,EAAE,WACFC,EAAU,SACVC,EAAQ,KACR5M,EAAI,OACJpH,EAAM,SACNiU,EAAQ,QACRlU,EAAO,SACPN,EAAQ,SACRyU,GAAW,EAAK,SAChB/G,EAAQ,KACR/S,EAAI,MACJwK,GACE3D,EACJuH,GAAQ,OAA8BvH,EAAO,KACxCsS,EAASY,IAAmB,EAAAC,GAAA,GAAc,CAC/CC,WAAYb,EACZc,QAASC,QAAQb,GACjBtM,KAAM,aACN5D,MAAO,YAEHgR,GAAiB,EAAAC,GAAA,KA6BvB,IAAI3I,EAAW6H,EACXa,QACsB,IAAb1I,IACTA,EAAW0I,EAAe1I,UAG9B,MAAM4I,EAAuB,aAATta,GAAgC,UAATA,EACrCyV,GAAa,OAAS,CAAC,EAAG5O,EAAO,CACrCsS,UACAzH,WACA8H,qBACAT,SAEIpO,EAlHkB8K,KACxB,MAAM,QACJ9K,EAAO,QACPwO,EAAO,SACPzH,EAAQ,KACRqH,GACEtD,EACEE,EAAQ,CACZxF,KAAM,CAAC,OAAQgJ,GAAW,UAAWzH,GAAY,WAAYqH,GAAQ,QAAO,EAAAwB,GAAA,GAAWxB,MACvFyB,MAAO,CAAC,UAEV,OAAO,EAAA3E,EAAA,GAAeF,EAAOkD,GAA2BlO,EAAQ,EAuGhD,CAAkB8K,GAClC,OAAoB,UAAMqD,IAAgB,OAAS,CACjD1O,UAAW,OACXvL,WAAW,EAAAwM,EAAA,GAAKV,EAAQwF,KAAMtR,GAC9BiT,cAAc,EACdG,aAAcuH,EACd9H,SAAUA,EACVqB,SAAU,KACVwC,UAAMjG,EACN3J,QAlDkBpB,IACdoB,GACFA,EAAQpB,GAEN6V,GAAkBA,EAAezU,SACnCyU,EAAezU,QAAQpB,EACzB,EA6CAqB,OA3CiBrB,IACbqB,GACFA,EAAOrB,GAEL6V,GAAkBA,EAAexU,QACnCwU,EAAexU,OAAOrB,EACxB,EAsCAkR,WAAYA,EACZnT,IAAKA,GACJ8L,EAAO,CACRrL,SAAU,EAAc,SAAKmW,IAAiB,OAAS,CACrDX,UAAWA,EACXY,QAASC,EACTE,eAAgBA,EAChBza,UAAW8L,EAAQ6P,MACnB9I,SAAUA,EACVgI,GAAIY,EAAcZ,OAAKpK,EACvBtC,KAAMA,EACN6M,SA/CsBtV,IAExB,GAAIA,EAAMkW,YAAYtF,iBACpB,OAEF,MAAMuF,EAAanW,EAAMS,OAAOmU,QAChCY,EAAgBW,GACZb,GAEFA,EAAStV,EAAOmW,EAClB,EAsCErV,SAAUA,EACV/C,IAAKsX,EACLE,SAAUA,EACVrE,WAAYA,EACZ1C,SAAUA,EACV/S,KAAMA,GACI,aAATA,QAAiCsP,IAAV9E,EAAsB,CAAC,EAAI,CACnDA,SACCmP,IAAcR,EAAUE,EAAcI,KAE7C,I,WC5JA,IAAe,EAAAkB,GAAA,IAA4B,SAAK,OAAQ,CACtDzb,EAAG,+FACD,wBCFJ,IAAe,EAAAyb,GAAA,IAA4B,SAAK,OAAQ,CACtDzb,EAAG,wIACD,YCFJ,IAAe,EAAAyb,GAAA,IAA4B,SAAK,OAAQ,CACtDzb,EAAG,kGACD,yBCTG,SAAS0b,GAAwB3N,GACtC,OAAO,SAAqB,cAAeA,EAC7C,CAEA,QADwB,EAAAd,EAAA,GAAuB,cAAe,CAAC,OAAQ,UAAW,WAAY,gBAAiB,eAAgB,iBAAkB,YAAa,eCD9J,MAAM,GAAY,CAAC,cAAe,QAAS,OAAQ,gBAAiB,oBAAqB,aAAc,OAAQ,aA6BzG0O,IAAe,EAAA9N,EAAA,IAAO,GAAY,CACtCmJ,kBAAmBtP,IAAQ,EAAAuP,EAAA,GAAsBvP,IAAkB,YAATA,EAC1DoG,KAAM,cACNC,KAAM,OACNqD,kBAAmB,CAACzJ,EAAO0J,KACzB,MAAM,WACJkF,GACE5O,EACJ,MAAO,CAAC0J,EAAOJ,KAAMsF,EAAWqF,eAAiBvK,EAAOuK,cAAevK,EAAO,QAAO,EAAAgK,GAAA,GAAW9E,EAAWuD,SAA+B,YAArBvD,EAAWjE,OAAuBjB,EAAO,SAAQ,EAAAgK,GAAA,GAAW9E,EAAWjE,UAAU,GARrL,EAUlB,EACD9D,QACA+H,iBACI,OAAS,CACbjE,OAAQ9D,EAAMsJ,MAAQtJ,GAAOuJ,QAAQvT,KAAKqX,YACxCtF,EAAW1D,eAAiB,CAC9B,UAAW,CACTlB,gBAAiBnD,EAAMsJ,KAAO,QAA6B,YAArBvB,EAAWjE,MAAsB9D,EAAMsJ,KAAKC,QAAQpF,OAAOmJ,cAAgBtN,EAAMsJ,KAAKC,QAAQxB,EAAWjE,OAAO8F,iBAAiB5J,EAAMsJ,KAAKC,QAAQpF,OAAO6F,iBAAkB,QAA2B,YAArBjC,EAAWjE,MAAsB9D,EAAMuJ,QAAQpF,OAAOoJ,OAASvN,EAAMuJ,QAAQxB,EAAWjE,OAAOgG,KAAM9J,EAAMuJ,QAAQpF,OAAO6F,cAEnV,uBAAwB,CACtB7G,gBAAiB,iBAGC,YAArB4E,EAAWjE,OAAuB,CACnC,CAAC,KAAK,GAAgB2H,cAAc,GAAgB2B,iBAAkB,CACpEtJ,OAAQ9D,EAAMsJ,MAAQtJ,GAAOuJ,QAAQxB,EAAWjE,OAAOgG,MAEzD,CAAC,KAAK,GAAgB9F,YAAa,CACjCF,OAAQ9D,EAAMsJ,MAAQtJ,GAAOuJ,QAAQpF,OAAOH,cAG1CwJ,IAAkC,SAAKC,GAAc,CAAC,GACtDC,IAA2B,SAAKC,GAA0B,CAAC,GAC3DC,IAAwC,SAAKC,GAA2B,CAAC,GAiJ/E,OAhJ8B,cAAiB,SAAkBvN,EAAS1L,GACxE,IAAIkZ,EAAsBC,EAC1B,MAAM5U,GAAQ,EAAAoH,EAAA,GAAc,CAC1BpH,MAAOmH,EACPhB,KAAM,iBAEF,YACFqM,EAAc6B,GAAkB,MAChC1J,EAAQ,UACRiI,KAAMiC,EAAWN,GAAW,cAC5BN,GAAgB,EAChBa,kBAAmBC,EAAwBN,GAAwB,WACnE3B,EAAU,KACVX,EAAO,SAAQ,UACfna,GACEgI,EACJuH,GAAQ,OAA8BvH,EAAO,IACzC4S,EAAOqB,EAAgBc,EAAwBF,EAC/CC,EAAoBb,EAAgBc,EAAwBvC,EAC5D5D,GAAa,OAAS,CAAC,EAAG5O,EAAO,CACrC2K,QACAsJ,gBACA9B,SAEIrO,EAvEkB8K,KACxB,MAAM,QACJ9K,EAAO,cACPmQ,EAAa,MACbtJ,EAAK,KACLwH,GACEvD,EACEE,EAAQ,CACZxF,KAAM,CAAC,OAAQ2K,GAAiB,gBAAiB,SAAQ,EAAAP,GAAA,GAAW/I,KAAU,QAAO,EAAA+I,GAAA,GAAWvB,OAE5FpD,GAAkB,EAAAC,EAAA,GAAeF,EAAOiF,GAAyBjQ,GACvE,OAAO,OAAS,CAAC,EAAGA,EAASiL,EAAgB,EA4D7B,CAAkBH,GAClC,OAAoB,SAAKoF,IAAc,OAAS,CAC9C7a,KAAM,WACN2Z,YAAY,OAAS,CACnB,qBAAsBmB,GACrBnB,GACHF,KAAmB,eAAmBA,EAAM,CAC1CnB,SAA0D,OAA/CkD,EAAuB/B,EAAK5S,MAAMyR,UAAoBkD,EAAuBxC,IAE1FK,YAA0B,eAAmBsC,EAAmB,CAC9DrD,SAAwE,OAA7DmD,EAAwBE,EAAkB9U,MAAMyR,UAAoBmD,EAAwBzC,IAEzGvD,WAAYA,EACZnT,IAAKA,EACLzD,WAAW,EAAAwM,EAAA,GAAKV,EAAQwF,KAAMtR,IAC7BuP,EAAO,CACRzD,QAASA,IAEb,ICiHA,OAnMoB/L,IAMb,IAADid,EAAAC,EAAAC,EAAA,IANe,OACnBC,EAAM,iBACNC,GAIDrd,EACC,MAAM,EAACsd,EAAU,EAACC,IAAgB7c,EAAAA,EAAAA,WAAkB,IAC9C,EAAC8c,EAAe,EAACC,IAAqB/c,EAAAA,EAAAA,WAAkB,IAExD,SACJgd,EAAQ,aACRC,EAAY,QACZC,EAAO,MACPC,EACAC,WAAW,OAAEC,EAAM,QAAEC,KACnBC,EAAAA,EAAAA,IAA0B,CAC5BC,KAAM,SACNC,UAAUC,EAAAA,EAAAA,GAAYC,EAAAA,GACtBC,cAAe,CACbC,kBAAkB,KA2BhBC,EAAkBA,CACtB5W,EACA6W,EACAC,EACAC,KACI,IAADC,EACH,OACE1e,EAAAA,EAAAA,IAAC2e,EAAAA,IAAgBC,EAAAA,EAAAA,GAAA,CACfhE,GAAIlT,EACJ6W,MAAOA,EACPM,QAAQ,WACRzY,QAAoB,QAAZsY,EAACb,EAAOnW,UAAI,IAAAgX,IAAXA,EAAaI,SACtBC,YAAYC,EAAAA,EAAAA,IAAqBtX,EAAKmW,EAAQV,GAC9C,aAAYzV,EACZuX,WAAS,EACTT,UAAWA,EACXC,KAAMA,EACNvE,KAAK,SACDsD,EAAS9V,IACb,EAIN,OACE1H,EAAAA,EAAAA,IAAA,QACEkf,SAAUzB,GAhDoC0B,UAChD,IAAKrB,EAAS,OAEdT,GAAa,GAEb,MAAM+B,GAAOC,EAAAA,EAAAA,GAAU,cAEjBC,GAAcC,EAAAA,EAAAA,IAAmBne,EAAMge,GAE7C,IAO0B,aANDI,EAAAA,EAAWC,KAIhC,wCAAyCH,IAE9BI,QAAgB/B,GAC/B,CAAE,MAAO1b,GAAS,IAAD0d,EAAAC,EACfC,QAAQC,IAAI,gBAA2B,QAAZH,EAAE1d,EAAE8d,gBAAQ,IAAAJ,GAAM,QAANC,EAAVD,EAAYve,YAAI,IAAAwe,OAAN,EAAVA,EAAkBd,QACjD,CAEAzB,GAAa,EAAM,IA4BjBtd,UAAU,iCAEVC,EAAAA,EAAAA,IAAA,OAAKD,UAAU,uBACZue,EAAgB,QAASpB,EAAO8C,YAChC1B,EAAgB,UAAWpB,EAAO+C,kBAClC3B,EAAgB,YAAapB,EAAOgD,YACrClgB,EAAAA,EAAAA,IAAC2e,EAAAA,IAAgBC,EAAAA,EAAAA,GAAA,CACfhE,GAAI,WACJ2D,MAAOrB,EAAOiD,cACdtB,QAAQ,WACRuB,QAAM,EACNC,aAAa,GACbja,QAA2B,QAAnB2W,EAACc,EAAiB,gBAAC,IAAAd,IAAlBA,EAAoB+B,SAC7BC,YAAYC,EAAAA,EAAAA,IACV,WACAnB,EACAV,GAEF,aAAY,WACZ8B,WAAS,EACT/E,KAAK,SACDsD,EAAS,aAEZrW,OAAOwC,OAAO2W,EAAAA,IAAiBhZ,KAAKiZ,IACnCvgB,EAAAA,EAAAA,IAACwgB,GAAQ,CAAC9Y,IAAK6Y,EAAS7U,MAAO6U,GAC5BrD,EAAOuD,gBAAgBF,QAI9BvgB,EAAAA,EAAAA,IAAC2e,EAAAA,IAAgBC,EAAAA,EAAAA,GAAA,CACfhE,GAAI,SACJ2D,MAAOrB,EAAOwD,YACd7B,QAAQ,WACRuB,QAAM,EACNC,aAAa,GACbja,QAAyB,QAAjB4W,EAACa,EAAe,cAAC,IAAAb,IAAhBA,EAAkB8B,SAC3BC,YAAYC,EAAAA,EAAAA,IAAqB,SAAUnB,EAAQV,GACnD,aAAY,SACZ8B,WAAS,EACT/E,KAAK,SACDsD,EAAS,WAEZrW,OAAOwC,OAAOgX,EAAAA,IAAerZ,KAAKsZ,IACjC5gB,EAAAA,EAAAA,IAACwgB,GAAQ,CAAC9Y,IAAKkZ,EAAQlV,MAAOkV,GAC3B1D,EAAO2D,cAAcD,OAI3BtC,EACC,wBACApB,EAAO4D,kBACP,EACA,KAIJ9gB,EAAAA,EAAAA,IAAC+gB,EAAAA,GAAU,CACTrD,QAASA,EACTxP,KAAK,mBACL/C,OAAQ6V,IAAA,IAAGC,OAAO,SAAElG,EAAQ,IAAEvX,EAAG,MAAEkI,IAASsV,EAAA,OAC1ChhB,EAAAA,EAAAA,IAACkhB,EAAAA,GAAY,CACXxD,SACE1d,EAAAA,EAAAA,IAACmhB,GAAQ,CACPvG,GAAI,mBACJP,QAAS3O,EACTqP,SAAW9Y,IACT8Y,EAAS9Y,GACTsb,IAAoBtb,EAAEiE,OAAOmU,QAAQ,EAEvC+G,GAAI,CACF1O,MAAQ4K,EAA6B,OAAZ,UACzB,gBAAiB,CACf5K,MAAO,SAGXoI,SAAUtX,IAGd+a,MAAOrB,EAAOmE,2BACd,aAAY,mBACZD,GAAI,CAAErI,UAAW,SACjB,IAGkB,QAAvBkE,EAAAY,EAAOQ,wBAAgB,IAAApB,GAAvBA,EAAyB6B,UAAYxB,GACpCtd,EAAAA,EAAAA,IAAA,KAAGD,UAAU,qCACVod,aAAgB,EAAhBA,EAAkBmE,SAEnB,MAEJthB,EAAAA,EAAAA,IAACkhB,EAAAA,GAAY,CACXxD,SACE1d,EAAAA,EAAAA,IAACmhB,GAAQ,CACP3G,gBAAc,EACd4G,GAAI,CACF1O,MAAO,OACP,gBAAiB,CACfA,MAAO,WAKf6L,MAAOrB,EAAOqE,iBACd,aAAY,sBAGdvhB,EAAAA,EAAAA,IAAA,OAAKD,UAAU,wDACbC,EAAAA,EAAAA,IAAA,UACEkB,KAAK,SACL0R,SAAUwK,IAAcE,EACxBvd,UAAW,kLACTqd,EAAY,aAAe,gBAG5BA,GAAYpd,EAAAA,EAAAA,IAACwhB,EAAAA,EAAY,MAAM,MAChCxhB,EAAAA,EAAAA,IAAA,QAAMD,UAAU,QAAQmd,EAAOuE,YAAYC,iBAG1C,E,WCjJX,OAhE2B5hB,IAAsB,IAAD6hB,EAAAC,EAAAC,EAAA,IAApB,KAAEC,GAAahiB,EACzC,MAAMiiB,GAAaC,EAAAA,EAAAA,IAAeC,KAG5B,EAACC,EAAgB,EAACC,IAAsB3hB,EAAAA,EAAAA,UAE5C,OACFI,EAAAA,EAAAA,YAAU,KAAO,IAADwhB,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAEZN,EADEL,KAAQC,EACSA,SAAkB,QAARK,EAAVL,EAAaD,UAAK,IAAAM,GAAO,QAAPC,EAAlBD,EAAoBM,aAAK,IAAAL,GAAK,QAALC,EAAzBD,EAA4B,UAAE,IAAAC,OAApB,EAAVA,EAAgCK,KAC7BZ,SAAc,QAAJQ,EAAVR,EAAYa,UAAE,IAAAL,GAAO,QAAPC,EAAdD,EAAgBG,aAAK,IAAAF,GAAK,QAALC,EAArBD,EAAwB,UAAE,IAAAC,OAAhB,EAAVA,EAA4BE,KAAK,GACxD,CAACb,EAAMC,IAEV,MAAMc,EAAYd,SAAsB,QAAZJ,EAAVI,EAAYe,kBAAU,IAAAnB,GAAO,QAAPC,EAAtBD,EAAwBe,aAAK,IAAAd,GAE9C,QAF8CC,EAA7BD,EAA+BmB,MAC9C1c,GAASA,EAAK2c,OAAOC,WAAanB,WACpC,IAAAD,OAF2B,EAAVA,EAEfqB,YACGC,EAAaN,aAAS,EAATA,EAAWO,YACxBjG,EAAmB0F,aAAS,EAATA,EAAWQ,WAEpC,OACErjB,EAAAA,EAAAA,IAAAsjB,EAAAA,SAAA,KACGH,GACCnjB,EAAAA,EAAAA,IAAAsjB,EAAAA,SAAA,MACEtjB,EAAAA,EAAAA,IAAA,WAASD,UAAW,2CAClBC,EAAAA,EAAAA,IAAA,OACE4a,GAAG,eACH7a,UAAU,kDACX,WAGDC,EAAAA,EAAAA,IAACqE,GAAAA,EAAgB,CACfkf,cAAc,iBACdxjB,UAAW,wCAEXC,EAAAA,EAAAA,IAAA,OAAKD,UAAU,sFACbC,EAAAA,EAAAA,IAAA,MAAID,UAAW,2CACZojB,aAAU,EAAVA,EAAYK,aAAa9B,gBAE5B1hB,EAAAA,EAAAA,IAAA,OACED,UAAW,+FAEVojB,aAAU,EAAVA,EAAYM,iBAAiB/B,iBAGlC1hB,EAAAA,EAAAA,IAAA,OAAKD,UAAU,uFACZmiB,GACCliB,EAAAA,EAAAA,IAAA,KACED,UAAU,4DACV2jB,wBAAyB,CAAEC,OAAQzB,KAEnC,MACJliB,EAAAA,EAAAA,IAAC4jB,GAAW,CACV1G,OAAQiG,EACRhG,iBAAkBA,QAM1B,KACH,EAMA,MAAM8E,GAAK,W,uBC3ElB,IAAIqB,EAAQ,EAAQ,MAEpB,SAASlf,EAAQ2D,GACb,OAAOub,EAAMO,cAAc,MAAM9b,EAAM,CAACub,EAAMO,cAAc,OAAO,CAAC,MAAQ,MAAM,OAAS,IAAI,OAAS,UAAU,YAAc,IAAI,gBAAkB,MAAM,GAAK,IAAI,GAAK,OAAO,GAAK,IAAI,GAAK,IAAI,IAAM,IAAIP,EAAMO,cAAc,OAAO,CAAC,MAAQ,MAAM,OAAS,IAAI,OAAS,UAAU,YAAc,IAAI,gBAAkB,MAAM,GAAK,IAAI,GAAK,OAAO,GAAK,IAAI,GAAK,IAAI,IAAM,KAClX,CAEAzf,EAAOwH,aAAe,CAAC,OAAS,KAEhCkY,EAAOC,QAAU3f,EAEjBA,EAAOgX,QAAUhX,C","sources":["webpack://code-cave/./src/components/common/spinner.tsx","webpack://code-cave/./src/components/babylonjs/babylon.tsx","webpack://code-cave/./src/components/common/banner.tsx","webpack://code-cave/./node_modules/@mui/material/utils/useEventCallback.js","webpack://code-cave/./node_modules/@mui/utils/useIsFocusVisible/useIsFocusVisible.js","webpack://code-cave/./node_modules/@mui/material/utils/useIsFocusVisible.js","webpack://code-cave/./node_modules/react-transition-group/esm/utils/ChildMapping.js","webpack://code-cave/./node_modules/react-transition-group/esm/TransitionGroup.js","webpack://code-cave/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://code-cave/./node_modules/@mui/material/ButtonBase/Ripple.js","webpack://code-cave/./node_modules/@mui/material/ButtonBase/touchRippleClasses.js","webpack://code-cave/./node_modules/@mui/material/ButtonBase/TouchRipple.js","webpack://code-cave/./node_modules/@mui/material/ButtonBase/buttonBaseClasses.js","webpack://code-cave/./node_modules/@mui/material/ButtonBase/ButtonBase.js","webpack://code-cave/./node_modules/@mui/material/Divider/dividerClasses.js","webpack://code-cave/./node_modules/@mui/material/ListItemIcon/listItemIconClasses.js","webpack://code-cave/./node_modules/@mui/material/ListItemText/listItemTextClasses.js","webpack://code-cave/./node_modules/@mui/material/MenuItem/menuItemClasses.js","webpack://code-cave/./node_modules/@mui/material/MenuItem/MenuItem.js","webpack://code-cave/./node_modules/@mui/material/internal/switchBaseClasses.js","webpack://code-cave/./node_modules/@mui/material/internal/SwitchBase.js","webpack://code-cave/./node_modules/@mui/material/internal/svg-icons/CheckBoxOutlineBlank.js","webpack://code-cave/./node_modules/@mui/material/internal/svg-icons/CheckBox.js","webpack://code-cave/./node_modules/@mui/material/internal/svg-icons/IndeterminateCheckBox.js","webpack://code-cave/./node_modules/@mui/material/Checkbox/checkboxClasses.js","webpack://code-cave/./node_modules/@mui/material/Checkbox/Checkbox.js","webpack://code-cave/./src/components/forms/contactForm.tsx","webpack://code-cave/./src/components/forms/contactFormSection.tsx","webpack://code-cave/./src/assets/common/border.svg"],"sourcesContent":["import React from \"react\";\n\nconst Spinner = ({ className }: { className?: string }) => {\n return (\n \n \n \n \n \n \n );\n};\n\nexport default Spinner;\n","import React, { useEffect, useRef, useState } from \"react\";\n\nimport Spinner from \"../common/spinner\";\n\nconst Babylon = () => {\n const [isBabylonReady, setIsBabylonReady] = useState(false);\n const isInitial = useRef(true);\n const canvasRef = useRef(null);\n\n useEffect(() => {\n if (\n !isInitial.current ||\n !canvasRef.current ||\n typeof window == \"undefined\"\n )\n return;\n\n isInitial.current = false;\n\n // WORKER instance creation\n const babylonWorker = new Worker(\n new URL(\"../../workers/babylon.worker.ts\", import.meta.url),\n {\n type: \"module\",\n }\n );\n babylonWorker.onmessage = ({ data }) => {\n if (data === \"ready\") setIsBabylonReady(true);\n };\n\n // OFFSCREEN canvas\n const canvas = canvasRef.current;\n canvas.width = canvas.clientWidth;\n canvas.height = canvas.clientHeight;\n\n const offscreenCanvas = canvas.transferControlToOffscreen();\n babylonWorker.postMessage({ canvas: offscreenCanvas }, [offscreenCanvas]);\n\n // RESIZE handler\n const onResizeHandler = () => {\n babylonWorker.postMessage({\n width: canvas.clientWidth,\n height: canvas.clientHeight,\n });\n };\n window.addEventListener(\"resize\", onResizeHandler, { passive: true });\n\n // WHEEL handler\n const onWheelHandler = (e: WheelEvent) => {\n e.preventDefault();\n babylonWorker.postMessage({ wheel: e.deltaY });\n };\n canvas.addEventListener(\"wheel\", onWheelHandler);\n\n // ROTATE mouse handler\n const onMouseMoveHandler = (e: MouseEvent) => {\n babylonWorker.postMessage({\n x: e.movementX,\n y: e.movementY,\n });\n };\n canvas.addEventListener(\"mousedown\", (e: MouseEvent) => {\n e.preventDefault();\n window.addEventListener(\"mousemove\", onMouseMoveHandler, {\n passive: true,\n });\n window.addEventListener(\n \"mouseup\",\n () => window.removeEventListener(\"mousemove\", onMouseMoveHandler),\n { once: true, passive: true }\n );\n });\n\n // ROTATE touch handler\n const nestedTouchMoveHandler = (\n e: TouchEvent,\n previousCoords: { x: number; y: number }\n ) => {\n const touch = e.touches[0];\n babylonWorker.postMessage({\n x: touch.screenX - previousCoords.x,\n y: touch.screenY - previousCoords.y,\n });\n\n return {\n newX: touch.screenX,\n newY: touch.screenY,\n };\n };\n let onTouchMoveHandler: (e: TouchEvent) => void;\n canvas.addEventListener(\n \"touchstart\",\n (e: TouchEvent) => {\n if (e.touches.length !== 1) return;\n\n const firstTouch = e.touches[0];\n\n e.preventDefault();\n const previousCoords = {\n x: firstTouch.screenX,\n y: firstTouch.screenY,\n };\n\n onTouchMoveHandler = (e: TouchEvent) => {\n const { newX, newY } = nestedTouchMoveHandler(e, previousCoords);\n previousCoords.x = newX;\n previousCoords.y = newY;\n };\n\n window.addEventListener(\"touchmove\", onTouchMoveHandler, {\n passive: true,\n });\n window.addEventListener(\n \"touchend\",\n () => {\n window.removeEventListener(\"touchmove\", onTouchMoveHandler);\n },\n { passive: true }\n );\n },\n { passive: true }\n );\n\n // UNMOUNT handler\n return () => {\n if (!window) return;\n\n window.removeEventListener(\"resize\", onResizeHandler);\n window.removeEventListener(\"mousemove\", onMouseMoveHandler);\n window.removeEventListener(\"touchmove\", onTouchMoveHandler);\n if (canvas) {\n canvas.removeEventListener(\"wheel\", onWheelHandler);\n }\n babylonWorker.terminate();\n };\n }, []);\n\n return (\n
\n \n {!isBabylonReady ? (\n \n ) : null}\n
\n );\n};\n\nexport default Babylon;\n","import React, { useEffect, useState } from \"react\";\nimport { GatsbyImage, IGatsbyImageData } from \"gatsby-plugin-image\";\n\nimport Border from \"../../assets/common/border.svg\";\n\nimport ContentContainer from \"./contentContainer\";\nimport Babylon from \"../babylonjs/babylon\";\n\n// interface IBannerProps {\n// heightClass?: string;\n// title: string;\n// className?: string;\n// borderBottom?: boolean;\n// borderTop?: boolean;\n// babylon?: boolean;\n// image?: IGatsbyImageData;\n// }\ntype TBannerCommonProps = {\n heightClass?: string;\n title: string;\n className?: string;\n borderBottom?: boolean;\n borderTop?: boolean;\n};\ntype TBannerConditionalProps =\n | {\n babylon?: boolean;\n image?: never;\n children?: never;\n titleBlockClassName?: never;\n }\n | {\n babylon?: never;\n image?: IGatsbyImageData;\n children?: never;\n titleBlockClassName?: never;\n }\n | {\n babylon?: never;\n image?: never;\n children?: React.ReactNode;\n titleBlockClassName?: string;\n };\ntype TBannerProps = TBannerCommonProps & TBannerConditionalProps;\n\nconst Banner = ({\n heightClass = \"min-h-91\",\n title,\n className,\n borderBottom,\n borderTop,\n babylon,\n image,\n titleBlockClassName,\n children,\n}: TBannerProps) => {\n const [textTranslate, setTextTranslate] = useState<\n \"translate-y-full\" | \"translate-y-0\"\n >(\"translate-y-full\");\n useEffect(() => {\n setTextTranslate(\"translate-y-0\");\n }, []);\n\n return (\n \n {borderTop ? (\n \n ) : null}\n \n \n

\n \n {title}\n \n

\n \n {babylon ? (\n \n ) : null}\n {image ? (\n
\n \n
\n ) : null}\n {children ? (\n
\n {children}\n
\n ) : null}\n \n {borderBottom ? (\n \n ) : null}\n \n );\n};\n\nexport default Banner;\n","'use client';\n\nimport useEventCallback from '@mui/utils/useEventCallback';\nexport default useEventCallback;","'use client';\n\n// based on https://github.com/WICG/focus-visible/blob/v4.1.5/src/focus-visible.js\nimport * as React from 'react';\nimport { Timeout } from '../useTimeout/useTimeout';\nlet hadKeyboardEvent = true;\nlet hadFocusVisibleRecently = false;\nconst hadFocusVisibleRecentlyTimeout = new Timeout();\nconst inputTypesWhitelist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n};\n\n/**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} node\n * @returns {boolean}\n */\nfunction focusTriggersKeyboardModality(node) {\n const {\n type,\n tagName\n } = node;\n if (tagName === 'INPUT' && inputTypesWhitelist[type] && !node.readOnly) {\n return true;\n }\n if (tagName === 'TEXTAREA' && !node.readOnly) {\n return true;\n }\n if (node.isContentEditable) {\n return true;\n }\n return false;\n}\n\n/**\n * Keep track of our keyboard modality state with `hadKeyboardEvent`.\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * @param {KeyboardEvent} event\n */\nfunction handleKeyDown(event) {\n if (event.metaKey || event.altKey || event.ctrlKey) {\n return;\n }\n hadKeyboardEvent = true;\n}\n\n/**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n */\nfunction handlePointerDown() {\n hadKeyboardEvent = false;\n}\nfunction handleVisibilityChange() {\n if (this.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n }\n}\nfunction prepare(doc) {\n doc.addEventListener('keydown', handleKeyDown, true);\n doc.addEventListener('mousedown', handlePointerDown, true);\n doc.addEventListener('pointerdown', handlePointerDown, true);\n doc.addEventListener('touchstart', handlePointerDown, true);\n doc.addEventListener('visibilitychange', handleVisibilityChange, true);\n}\nexport function teardown(doc) {\n doc.removeEventListener('keydown', handleKeyDown, true);\n doc.removeEventListener('mousedown', handlePointerDown, true);\n doc.removeEventListener('pointerdown', handlePointerDown, true);\n doc.removeEventListener('touchstart', handlePointerDown, true);\n doc.removeEventListener('visibilitychange', handleVisibilityChange, true);\n}\nfunction isFocusVisible(event) {\n const {\n target\n } = event;\n try {\n return target.matches(':focus-visible');\n } catch (error) {\n // Browsers not implementing :focus-visible will throw a SyntaxError.\n // We use our own heuristic for those browsers.\n // Rethrow might be better if it's not the expected error but do we really\n // want to crash if focus-visible malfunctioned?\n }\n\n // No need for validFocusTarget check. The user does that by attaching it to\n // focusable events only.\n return hadKeyboardEvent || focusTriggersKeyboardModality(target);\n}\nexport default function useIsFocusVisible() {\n const ref = React.useCallback(node => {\n if (node != null) {\n prepare(node.ownerDocument);\n }\n }, []);\n const isFocusVisibleRef = React.useRef(false);\n\n /**\n * Should be called if a blur event is fired\n */\n function handleBlurVisible() {\n // checking against potential state variable does not suffice if we focus and blur synchronously.\n // React wouldn't have time to trigger a re-render so `focusVisible` would be stale.\n // Ideally we would adjust `isFocusVisible(event)` to look at `relatedTarget` for blur events.\n // This doesn't work in IE11 due to https://github.com/facebook/react/issues/3751\n // TODO: check again if React releases their internal changes to focus event handling (https://github.com/facebook/react/pull/19186).\n if (isFocusVisibleRef.current) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n hadFocusVisibleRecentlyTimeout.start(100, () => {\n hadFocusVisibleRecently = false;\n });\n isFocusVisibleRef.current = false;\n return true;\n }\n return false;\n }\n\n /**\n * Should be called if a blur event is fired\n */\n function handleFocusVisible(event) {\n if (isFocusVisible(event)) {\n isFocusVisibleRef.current = true;\n return true;\n }\n return false;\n }\n return {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref\n };\n}","'use client';\n\nimport useIsFocusVisible from '@mui/utils/useIsFocusVisible';\nexport default useIsFocusVisible;","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n/**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = getChildMapping(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `
` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: PropTypes.any,\n\n /**\n * A set of `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: PropTypes.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nexport { _assertThisInitialized as default };","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction Ripple(props) {\n const {\n className,\n classes,\n pulsate = false,\n rippleX,\n rippleY,\n rippleSize,\n in: inProp,\n onExited,\n timeout\n } = props;\n const [leaving, setLeaving] = React.useState(false);\n const rippleClassName = clsx(className, classes.ripple, classes.rippleVisible, pulsate && classes.ripplePulsate);\n const rippleStyles = {\n width: rippleSize,\n height: rippleSize,\n top: -(rippleSize / 2) + rippleY,\n left: -(rippleSize / 2) + rippleX\n };\n const childClassName = clsx(classes.child, leaving && classes.childLeaving, pulsate && classes.childPulsate);\n if (!inProp && !leaving) {\n setLeaving(true);\n }\n React.useEffect(() => {\n if (!inProp && onExited != null) {\n // react-transition-group#onExited\n const timeoutId = setTimeout(onExited, timeout);\n return () => {\n clearTimeout(timeoutId);\n };\n }\n return undefined;\n }, [onExited, inProp, timeout]);\n return /*#__PURE__*/_jsx(\"span\", {\n className: rippleClassName,\n style: rippleStyles,\n children: /*#__PURE__*/_jsx(\"span\", {\n className: childClassName\n })\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? Ripple.propTypes = {\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n /**\n * @ignore - injected from TransitionGroup\n */\n in: PropTypes.bool,\n /**\n * @ignore - injected from TransitionGroup\n */\n onExited: PropTypes.func,\n /**\n * If `true`, the ripple pulsates, typically indicating the keyboard focus state of an element.\n */\n pulsate: PropTypes.bool,\n /**\n * Diameter of the ripple.\n */\n rippleSize: PropTypes.number,\n /**\n * Horizontal position of the ripple center.\n */\n rippleX: PropTypes.number,\n /**\n * Vertical position of the ripple center.\n */\n rippleY: PropTypes.number,\n /**\n * exit delay\n */\n timeout: PropTypes.number.isRequired\n} : void 0;\nexport default Ripple;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTouchRippleUtilityClass(slot) {\n return generateUtilityClass('MuiTouchRipple', slot);\n}\nconst touchRippleClasses = generateUtilityClasses('MuiTouchRipple', ['root', 'ripple', 'rippleVisible', 'ripplePulsate', 'child', 'childLeaving', 'childPulsate']);\nexport default touchRippleClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"center\", \"classes\", \"className\"];\nlet _ = t => t,\n _t,\n _t2,\n _t3,\n _t4;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { TransitionGroup } from 'react-transition-group';\nimport clsx from 'clsx';\nimport { keyframes } from '@mui/system';\nimport useTimeout from '@mui/utils/useTimeout';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Ripple from './Ripple';\nimport touchRippleClasses from './touchRippleClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DURATION = 550;\nexport const DELAY_RIPPLE = 80;\nconst enterKeyframe = keyframes(_t || (_t = _`\n 0% {\n transform: scale(0);\n opacity: 0.1;\n }\n\n 100% {\n transform: scale(1);\n opacity: 0.3;\n }\n`));\nconst exitKeyframe = keyframes(_t2 || (_t2 = _`\n 0% {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n }\n`));\nconst pulsateKeyframe = keyframes(_t3 || (_t3 = _`\n 0% {\n transform: scale(1);\n }\n\n 50% {\n transform: scale(0.92);\n }\n\n 100% {\n transform: scale(1);\n }\n`));\nexport const TouchRippleRoot = styled('span', {\n name: 'MuiTouchRipple',\n slot: 'Root'\n})({\n overflow: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n zIndex: 0,\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n borderRadius: 'inherit'\n});\n\n// This `styled()` function invokes keyframes. `styled-components` only supports keyframes\n// in string templates. Do not convert these styles in JS object as it will break.\nexport const TouchRippleRipple = styled(Ripple, {\n name: 'MuiTouchRipple',\n slot: 'Ripple'\n})(_t4 || (_t4 = _`\n opacity: 0;\n position: absolute;\n\n &.${0} {\n opacity: 0.3;\n transform: scale(1);\n animation-name: ${0};\n animation-duration: ${0}ms;\n animation-timing-function: ${0};\n }\n\n &.${0} {\n animation-duration: ${0}ms;\n }\n\n & .${0} {\n opacity: 1;\n display: block;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background-color: currentColor;\n }\n\n & .${0} {\n opacity: 0;\n animation-name: ${0};\n animation-duration: ${0}ms;\n animation-timing-function: ${0};\n }\n\n & .${0} {\n position: absolute;\n /* @noflip */\n left: 0px;\n top: 0;\n animation-name: ${0};\n animation-duration: 2500ms;\n animation-timing-function: ${0};\n animation-iteration-count: infinite;\n animation-delay: 200ms;\n }\n`), touchRippleClasses.rippleVisible, enterKeyframe, DURATION, ({\n theme\n}) => theme.transitions.easing.easeInOut, touchRippleClasses.ripplePulsate, ({\n theme\n}) => theme.transitions.duration.shorter, touchRippleClasses.child, touchRippleClasses.childLeaving, exitKeyframe, DURATION, ({\n theme\n}) => theme.transitions.easing.easeInOut, touchRippleClasses.childPulsate, pulsateKeyframe, ({\n theme\n}) => theme.transitions.easing.easeInOut);\n\n/**\n * @ignore - internal component.\n *\n * TODO v5: Make private\n */\nconst TouchRipple = /*#__PURE__*/React.forwardRef(function TouchRipple(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTouchRipple'\n });\n const {\n center: centerProp = false,\n classes = {},\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const [ripples, setRipples] = React.useState([]);\n const nextKey = React.useRef(0);\n const rippleCallback = React.useRef(null);\n React.useEffect(() => {\n if (rippleCallback.current) {\n rippleCallback.current();\n rippleCallback.current = null;\n }\n }, [ripples]);\n\n // Used to filter out mouse emulated events on mobile.\n const ignoringMouseDown = React.useRef(false);\n // We use a timer in order to only show the ripples for touch \"click\" like events.\n // We don't want to display the ripple for touch scroll events.\n const startTimer = useTimeout();\n\n // This is the hook called once the previous timeout is ready.\n const startTimerCommit = React.useRef(null);\n const container = React.useRef(null);\n const startCommit = React.useCallback(params => {\n const {\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n } = params;\n setRipples(oldRipples => [...oldRipples, /*#__PURE__*/_jsx(TouchRippleRipple, {\n classes: {\n ripple: clsx(classes.ripple, touchRippleClasses.ripple),\n rippleVisible: clsx(classes.rippleVisible, touchRippleClasses.rippleVisible),\n ripplePulsate: clsx(classes.ripplePulsate, touchRippleClasses.ripplePulsate),\n child: clsx(classes.child, touchRippleClasses.child),\n childLeaving: clsx(classes.childLeaving, touchRippleClasses.childLeaving),\n childPulsate: clsx(classes.childPulsate, touchRippleClasses.childPulsate)\n },\n timeout: DURATION,\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize\n }, nextKey.current)]);\n nextKey.current += 1;\n rippleCallback.current = cb;\n }, [classes]);\n const start = React.useCallback((event = {}, options = {}, cb = () => {}) => {\n const {\n pulsate = false,\n center = centerProp || options.pulsate,\n fakeElement = false // For test purposes\n } = options;\n if ((event == null ? void 0 : event.type) === 'mousedown' && ignoringMouseDown.current) {\n ignoringMouseDown.current = false;\n return;\n }\n if ((event == null ? void 0 : event.type) === 'touchstart') {\n ignoringMouseDown.current = true;\n }\n const element = fakeElement ? null : container.current;\n const rect = element ? element.getBoundingClientRect() : {\n width: 0,\n height: 0,\n left: 0,\n top: 0\n };\n\n // Get the size of the ripple\n let rippleX;\n let rippleY;\n let rippleSize;\n if (center || event === undefined || event.clientX === 0 && event.clientY === 0 || !event.clientX && !event.touches) {\n rippleX = Math.round(rect.width / 2);\n rippleY = Math.round(rect.height / 2);\n } else {\n const {\n clientX,\n clientY\n } = event.touches && event.touches.length > 0 ? event.touches[0] : event;\n rippleX = Math.round(clientX - rect.left);\n rippleY = Math.round(clientY - rect.top);\n }\n if (center) {\n rippleSize = Math.sqrt((2 * rect.width ** 2 + rect.height ** 2) / 3);\n\n // For some reason the animation is broken on Mobile Chrome if the size is even.\n if (rippleSize % 2 === 0) {\n rippleSize += 1;\n }\n } else {\n const sizeX = Math.max(Math.abs((element ? element.clientWidth : 0) - rippleX), rippleX) * 2 + 2;\n const sizeY = Math.max(Math.abs((element ? element.clientHeight : 0) - rippleY), rippleY) * 2 + 2;\n rippleSize = Math.sqrt(sizeX ** 2 + sizeY ** 2);\n }\n\n // Touche devices\n if (event != null && event.touches) {\n // check that this isn't another touchstart due to multitouch\n // otherwise we will only clear a single timer when unmounting while two\n // are running\n if (startTimerCommit.current === null) {\n // Prepare the ripple effect.\n startTimerCommit.current = () => {\n startCommit({\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n });\n };\n // Delay the execution of the ripple effect.\n // We have to make a tradeoff with this delay value.\n startTimer.start(DELAY_RIPPLE, () => {\n if (startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n }\n });\n }\n } else {\n startCommit({\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n });\n }\n }, [centerProp, startCommit, startTimer]);\n const pulsate = React.useCallback(() => {\n start({}, {\n pulsate: true\n });\n }, [start]);\n const stop = React.useCallback((event, cb) => {\n startTimer.clear();\n\n // The touch interaction occurs too quickly.\n // We still want to show ripple effect.\n if ((event == null ? void 0 : event.type) === 'touchend' && startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n startTimer.start(0, () => {\n stop(event, cb);\n });\n return;\n }\n startTimerCommit.current = null;\n setRipples(oldRipples => {\n if (oldRipples.length > 0) {\n return oldRipples.slice(1);\n }\n return oldRipples;\n });\n rippleCallback.current = cb;\n }, [startTimer]);\n React.useImperativeHandle(ref, () => ({\n pulsate,\n start,\n stop\n }), [pulsate, start, stop]);\n return /*#__PURE__*/_jsx(TouchRippleRoot, _extends({\n className: clsx(touchRippleClasses.root, classes.root, className),\n ref: container\n }, other, {\n children: /*#__PURE__*/_jsx(TransitionGroup, {\n component: null,\n exit: true,\n children: ripples\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? TouchRipple.propTypes = {\n /**\n * If `true`, the ripple starts at the center of the component\n * rather than at the point of interaction.\n */\n center: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string\n} : void 0;\nexport default TouchRipple;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getButtonBaseUtilityClass(slot) {\n return generateUtilityClass('MuiButtonBase', slot);\n}\nconst buttonBaseClasses = generateUtilityClasses('MuiButtonBase', ['root', 'disabled', 'focusVisible']);\nexport default buttonBaseClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"action\", \"centerRipple\", \"children\", \"className\", \"component\", \"disabled\", \"disableRipple\", \"disableTouchRipple\", \"focusRipple\", \"focusVisibleClassName\", \"LinkComponent\", \"onBlur\", \"onClick\", \"onContextMenu\", \"onDragLeave\", \"onFocus\", \"onFocusVisible\", \"onKeyDown\", \"onKeyUp\", \"onMouseDown\", \"onMouseLeave\", \"onMouseUp\", \"onTouchEnd\", \"onTouchMove\", \"onTouchStart\", \"tabIndex\", \"TouchRippleProps\", \"touchRippleRef\", \"type\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport useForkRef from '../utils/useForkRef';\nimport useEventCallback from '../utils/useEventCallback';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport TouchRipple from './TouchRipple';\nimport buttonBaseClasses, { getButtonBaseUtilityClass } from './buttonBaseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n disabled,\n focusVisible,\n focusVisibleClassName,\n classes\n } = ownerState;\n const slots = {\n root: ['root', disabled && 'disabled', focusVisible && 'focusVisible']\n };\n const composedClasses = composeClasses(slots, getButtonBaseUtilityClass, classes);\n if (focusVisible && focusVisibleClassName) {\n composedClasses.root += ` ${focusVisibleClassName}`;\n }\n return composedClasses;\n};\nexport const ButtonBaseRoot = styled('button', {\n name: 'MuiButtonBase',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n boxSizing: 'border-box',\n WebkitTapHighlightColor: 'transparent',\n backgroundColor: 'transparent',\n // Reset default value\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n border: 0,\n margin: 0,\n // Remove the margin in Safari\n borderRadius: 0,\n padding: 0,\n // Remove the padding in Firefox\n cursor: 'pointer',\n userSelect: 'none',\n verticalAlign: 'middle',\n MozAppearance: 'none',\n // Reset\n WebkitAppearance: 'none',\n // Reset\n textDecoration: 'none',\n // So we take precedent over the style of a native element.\n color: 'inherit',\n '&::-moz-focus-inner': {\n borderStyle: 'none' // Remove Firefox dotted outline.\n },\n [`&.${buttonBaseClasses.disabled}`]: {\n pointerEvents: 'none',\n // Disable link interactions\n cursor: 'default'\n },\n '@media print': {\n colorAdjust: 'exact'\n }\n});\n\n/**\n * `ButtonBase` contains as few styles as possible.\n * It aims to be a simple building block for creating a button.\n * It contains a load of style reset and some focus/ripple logic.\n */\nconst ButtonBase = /*#__PURE__*/React.forwardRef(function ButtonBase(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiButtonBase'\n });\n const {\n action,\n centerRipple = false,\n children,\n className,\n component = 'button',\n disabled = false,\n disableRipple = false,\n disableTouchRipple = false,\n focusRipple = false,\n LinkComponent = 'a',\n onBlur,\n onClick,\n onContextMenu,\n onDragLeave,\n onFocus,\n onFocusVisible,\n onKeyDown,\n onKeyUp,\n onMouseDown,\n onMouseLeave,\n onMouseUp,\n onTouchEnd,\n onTouchMove,\n onTouchStart,\n tabIndex = 0,\n TouchRippleProps,\n touchRippleRef,\n type\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const buttonRef = React.useRef(null);\n const rippleRef = React.useRef(null);\n const handleRippleRef = useForkRef(rippleRef, touchRippleRef);\n const {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref: focusVisibleRef\n } = useIsFocusVisible();\n const [focusVisible, setFocusVisible] = React.useState(false);\n if (disabled && focusVisible) {\n setFocusVisible(false);\n }\n React.useImperativeHandle(action, () => ({\n focusVisible: () => {\n setFocusVisible(true);\n buttonRef.current.focus();\n }\n }), []);\n const [mountedState, setMountedState] = React.useState(false);\n React.useEffect(() => {\n setMountedState(true);\n }, []);\n const enableTouchRipple = mountedState && !disableRipple && !disabled;\n React.useEffect(() => {\n if (focusVisible && focusRipple && !disableRipple && mountedState) {\n rippleRef.current.pulsate();\n }\n }, [disableRipple, focusRipple, focusVisible, mountedState]);\n function useRippleHandler(rippleAction, eventCallback, skipRippleAction = disableTouchRipple) {\n return useEventCallback(event => {\n if (eventCallback) {\n eventCallback(event);\n }\n const ignore = skipRippleAction;\n if (!ignore && rippleRef.current) {\n rippleRef.current[rippleAction](event);\n }\n return true;\n });\n }\n const handleMouseDown = useRippleHandler('start', onMouseDown);\n const handleContextMenu = useRippleHandler('stop', onContextMenu);\n const handleDragLeave = useRippleHandler('stop', onDragLeave);\n const handleMouseUp = useRippleHandler('stop', onMouseUp);\n const handleMouseLeave = useRippleHandler('stop', event => {\n if (focusVisible) {\n event.preventDefault();\n }\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n });\n const handleTouchStart = useRippleHandler('start', onTouchStart);\n const handleTouchEnd = useRippleHandler('stop', onTouchEnd);\n const handleTouchMove = useRippleHandler('stop', onTouchMove);\n const handleBlur = useRippleHandler('stop', event => {\n handleBlurVisible(event);\n if (isFocusVisibleRef.current === false) {\n setFocusVisible(false);\n }\n if (onBlur) {\n onBlur(event);\n }\n }, false);\n const handleFocus = useEventCallback(event => {\n // Fix for https://github.com/facebook/react/issues/7769\n if (!buttonRef.current) {\n buttonRef.current = event.currentTarget;\n }\n handleFocusVisible(event);\n if (isFocusVisibleRef.current === true) {\n setFocusVisible(true);\n if (onFocusVisible) {\n onFocusVisible(event);\n }\n }\n if (onFocus) {\n onFocus(event);\n }\n });\n const isNonNativeButton = () => {\n const button = buttonRef.current;\n return component && component !== 'button' && !(button.tagName === 'A' && button.href);\n };\n\n /**\n * IE11 shim for https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat\n */\n const keydownRef = React.useRef(false);\n const handleKeyDown = useEventCallback(event => {\n // Check if key is already down to avoid repeats being counted as multiple activations\n if (focusRipple && !keydownRef.current && focusVisible && rippleRef.current && event.key === ' ') {\n keydownRef.current = true;\n rippleRef.current.stop(event, () => {\n rippleRef.current.start(event);\n });\n }\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === ' ') {\n event.preventDefault();\n }\n if (onKeyDown) {\n onKeyDown(event);\n }\n\n // Keyboard accessibility for non interactive elements\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === 'Enter' && !disabled) {\n event.preventDefault();\n if (onClick) {\n onClick(event);\n }\n }\n });\n const handleKeyUp = useEventCallback(event => {\n // calling preventDefault in keyUp on a \n
\n \n );\n};\n\nexport default ContactForm;\n","import React, { useEffect, useState } from \"react\";\nimport { graphql, useStaticQuery } from \"gatsby\";\n\nimport { ILang } from \"../../types/common.type\";\nimport { IContactFromQueryResult } from \"../../types/form.type\";\n\nimport ContactForm from \"./contactForm\";\nimport ContentContainer from \"../common/contentContainer\";\n\nconst ContactFormSection = ({ lang }: ILang) => {\n const formMdData = useStaticQuery(query) as IContactFromQueryResult;\n\n // formDescription is set by useState + useEffect in order to avoid production errors that ssr doesn't match client render\n const [formDescription, setFormDescription] = useState<\n string | null | undefined\n >(null);\n useEffect(() => {\n if (lang in formMdData)\n setFormDescription(formMdData?.[lang]?.nodes?.[0]?.html as string | null);\n else setFormDescription(formMdData?.en?.nodes?.[0]?.html);\n }, [lang, formMdData]);\n\n const allMarkup = formMdData?.markupData?.nodes?.find(\n (node) => node.fields.language === lang\n )?.frontmatter;\n const formMarkup = allMarkup?.contactForm;\n const validationMarkup = allMarkup?.validation;\n\n return (\n <>\n {formMarkup ? (\n <>\n
\n \n anchor\n
\n \n
\n

\n {formMarkup?.sectionTitle.toUpperCase()}\n

\n \n {formMarkup?.sectionLinkTitle.toUpperCase()}\n
\n \n
\n {formDescription ? (\n \n ) : null}\n \n
\n \n \n \n ) : null}\n \n );\n};\n\nexport default ContactFormSection;\n\nexport const query = graphql`\n query {\n en: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"contactForm\" }, language: { eq: \"en\" } }\n }\n ) {\n nodes {\n html\n }\n }\n ru: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"contactForm\" }, language: { eq: \"ru\" } }\n }\n ) {\n nodes {\n html\n }\n }\n markupData: allMarkdownRemark(\n filter: { fields: { sourceName: { eq: \"common\" } } }\n ) {\n nodes {\n fields {\n language\n }\n frontmatter {\n validation {\n invalidEmail\n required\n consent\n }\n contactForm {\n sectionTitle\n sectionLinkTitle\n emailLabel\n nameLabel\n companyNameLabel\n servicesLabel\n servicesOptions {\n web_dev\n mobile_dev\n qa\n devops\n ui_ux\n ba\n add_ins\n vr_ar\n support\n consulting\n }\n budgetLabel\n budgetOptions {\n _1500_2500\n _2500_5000\n _5000_10000\n _10000_\n not_decided\n }\n selectPlaceholder\n descriptionLabel\n descriptionPlaceholder\n privacyPolicyCheckboxLabel\n adsCheckboxLabel\n buttonLabel\n }\n }\n }\n }\n }\n`;\n","var React = require('react');\n\nfunction Border (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"line\",{\"width\":\"800\",\"height\":\"8\",\"stroke\":\"#f9f9f9\",\"strokeWidth\":\"8\",\"strokeDasharray\":\"8 8\",\"x1\":\"0\",\"x2\":\"100%\",\"y1\":\"4\",\"y2\":\"4\",\"key\":0}),React.createElement(\"line\",{\"width\":\"800\",\"height\":\"8\",\"stroke\":\"#111111\",\"strokeWidth\":\"8\",\"strokeDasharray\":\"8 8\",\"x1\":\"8\",\"x2\":\"100%\",\"y1\":\"4\",\"y2\":\"4\",\"key\":1})]);\n}\n\nBorder.defaultProps = {\"height\":\"8\"};\n\nmodule.exports = Border;\n\nBorder.default = Border;\n"],"names":["_ref","className","___EmotionJSX","viewBox","fill","xmlns","d","Babylon","isBabylonReady","setIsBabylonReady","useState","isInitial","useRef","canvasRef","useEffect","current","window","babylonWorker","Worker","URL","type","onmessage","data","canvas","width","clientWidth","height","clientHeight","offscreenCanvas","transferControlToOffscreen","postMessage","onResizeHandler","addEventListener","passive","onWheelHandler","e","preventDefault","wheel","deltaY","onMouseMoveHandler","x","movementX","y","movementY","removeEventListener","once","onTouchMoveHandler","touches","length","firstTouch","previousCoords","screenX","screenY","newX","newY","nestedTouchMoveHandler","touch","terminate","ref","Spinner","heightClass","title","borderBottom","borderTop","babylon","image","titleBlockClassName","children","textTranslate","setTextTranslate","Border","ContentContainer","GatsbyImage","alt","hadKeyboardEvent","hadFocusVisibleRecently","hadFocusVisibleRecentlyTimeout","inputTypesWhitelist","text","search","url","tel","email","password","number","date","month","week","time","datetime","handleKeyDown","event","metaKey","altKey","ctrlKey","handlePointerDown","handleVisibilityChange","this","visibilityState","isFocusVisible","target","matches","error","node","tagName","readOnly","isContentEditable","focusTriggersKeyboardModality","doc","ownerDocument","isFocusVisibleRef","onFocus","onBlur","start","getChildMapping","mapFn","result","Object","create","Children","map","c","forEach","child","key","isValidElement","mapper","getProp","prop","props","getNextChildMapping","nextProps","prevChildMapping","onExited","nextChildMapping","prev","next","getValueForKey","i","nextKeysPending","pendingKeys","prevKey","push","childMapping","nextKey","pendingNextKey","mergeChildMappings","keys","hasPrev","hasNext","prevChild","isLeaving","in","cloneElement","bind","exit","enter","values","obj","k","TransitionGroup","_React$Component","context","_this","handleExited","call","ReferenceError","_assertThisInitialized","state","contextValue","isMounting","firstRender","_proto","prototype","componentDidMount","mounted","setState","componentWillUnmount","getDerivedStateFromProps","appear","currentChildMapping","render","_this$props","Component","component","childFactory","TransitionGroupContext","Provider","value","propTypes","defaultProps","classes","pulsate","rippleX","rippleY","rippleSize","inProp","timeout","leaving","setLeaving","rippleClassName","clsx","ripple","rippleVisible","ripplePulsate","rippleStyles","top","left","childClassName","childLeaving","childPulsate","timeoutId","setTimeout","clearTimeout","style","generateUtilityClasses","_excluded","_t","_t2","_t3","_t4","_","t","enterKeyframe","exitKeyframe","pulsateKeyframe","TouchRippleRoot","styled","name","slot","overflow","pointerEvents","position","zIndex","right","bottom","borderRadius","TouchRippleRipple","theme","transitions","easing","easeInOut","duration","shorter","inProps","useThemeProps","center","centerProp","other","ripples","setRipples","rippleCallback","ignoringMouseDown","startTimer","useTimeout","startTimerCommit","container","startCommit","params","cb","oldRipples","options","fakeElement","element","rect","getBoundingClientRect","undefined","clientX","clientY","Math","round","sqrt","sizeX","max","abs","sizeY","stop","clear","slice","root","getButtonBaseUtilityClass","ButtonBaseRoot","overridesResolver","styles","display","alignItems","justifyContent","boxSizing","WebkitTapHighlightColor","backgroundColor","outline","border","margin","padding","cursor","userSelect","verticalAlign","MozAppearance","WebkitAppearance","textDecoration","color","borderStyle","disabled","colorAdjust","ButtonBase","action","centerRipple","disableRipple","disableTouchRipple","focusRipple","LinkComponent","onClick","onContextMenu","onDragLeave","onFocusVisible","onKeyDown","onKeyUp","onMouseDown","onMouseLeave","onMouseUp","onTouchEnd","onTouchMove","onTouchStart","tabIndex","TouchRippleProps","touchRippleRef","buttonRef","rippleRef","handleRippleRef","useForkRef","handleFocusVisible","handleBlurVisible","focusVisibleRef","focusVisible","setFocusVisible","focus","mountedState","setMountedState","enableTouchRipple","useRippleHandler","rippleAction","eventCallback","skipRippleAction","handleMouseDown","handleContextMenu","handleDragLeave","handleMouseUp","handleMouseLeave","handleTouchStart","handleTouchEnd","handleTouchMove","handleBlur","handleFocus","currentTarget","isNonNativeButton","button","href","keydownRef","handleKeyUp","defaultPrevented","ComponentProp","to","buttonProps","role","handleRef","ownerState","focusVisibleClassName","slots","composedClasses","composeClasses","useUtilityClasses","as","getMenuItemUtilityClass","MenuItemRoot","shouldForwardProp","rootShouldForwardProp","dense","divider","disableGutters","gutters","typography","body1","minHeight","paddingTop","paddingBottom","whiteSpace","paddingLeft","paddingRight","vars","palette","backgroundClip","hover","selected","primary","mainChannel","selectedOpacity","main","focusOpacity","hoverOpacity","opacity","disabledOpacity","marginTop","spacing","marginBottom","inset","marginLeft","minWidth","breakpoints","up","body2","fontSize","autoFocus","tabIndexProp","ListContext","childContext","menuItemRef","useEnhancedEffect","getSwitchBaseUtilityClass","SwitchBaseRoot","edge","size","marginRight","SwitchBaseInput","checked","checkedProp","checkedIcon","defaultChecked","disabledProp","disableFocusRipple","icon","id","inputProps","inputRef","onChange","required","setCheckedState","useControlled","controlled","default","Boolean","muiFormControl","useFormControl","hasLabelFor","capitalize","input","nativeEvent","newChecked","createSvgIcon","getCheckboxUtilityClass","CheckboxRoot","indeterminate","secondary","activeChannel","active","defaultCheckedIcon","CheckBox","defaultIcon","CheckBoxOutlineBlank","defaultIndeterminateIcon","IndeterminateCheckBox","_icon$props$fontSize","_indeterminateIcon$pr","iconProp","indeterminateIcon","indeterminateIconProp","_errors$services","_errors$budget","_errors$consentToProc","markup","validationMarkup","isPending","setIsPending","isGivenConsent","setIsGivenConsent","register","handleSubmit","control","reset","formState","errors","isValid","useForm","mode","resolver","yupResolver","contactFormSchema","defaultValues","consentToProcess","renderTextInput","label","multiline","rows","_errors$key","ContactFormInput","_extends","variant","message","helperText","getValidationMessage","fullWidth","onSubmit","async","hutk","getCookie","requestBody","mapContactFormData","hubspotApi","post","status","_e$response","_e$response$data","console","log","response","emailLabel","companyNameLabel","nameLabel","servicesLabel","select","defaultValue","ServicesOptions","service","MenuItem","servicesOptions","budgetLabel","BudgetOptions","budget","budgetOptions","descriptionLabel","Controller","_ref2","field","ControlLabel","Checkbox","sx","privacyPolicyCheckboxLabel","consent","adsCheckboxLabel","SkeletonStub","buttonLabel","toUpperCase","_formMdData$markupDat","_formMdData$markupDat2","_formMdData$markupDat3","lang","formMdData","useStaticQuery","query","formDescription","setFormDescription","_formMdData$lang","_formMdData$lang$node","_formMdData$lang$node2","_formMdData$en","_formMdData$en$nodes","_formMdData$en$nodes$","nodes","html","en","allMarkup","markupData","find","fields","language","frontmatter","formMarkup","contactForm","validation","React","maxWidthClass","sectionTitle","sectionLinkTitle","dangerouslySetInnerHTML","__html","ContactForm","createElement","module","exports"],"sourceRoot":""} \ No newline at end of file diff --git a/_gatsby/slices/_gatsby-scripts-1.html b/_gatsby/slices/_gatsby-scripts-1.html index 4489cf09..7d97e7a9 100644 --- a/_gatsby/slices/_gatsby-scripts-1.html +++ b/_gatsby/slices/_gatsby-scripts-1.html @@ -2,6 +2,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/10582553-73a2-569f-8bdd-980e1f77c10a/index.html b/blog/10582553-73a2-569f-8bdd-980e1f77c10a/index.html index 0dbc8a7f..75d94421 100644 --- a/blog/10582553-73a2-569f-8bdd-980e1f77c10a/index.html +++ b/blog/10582553-73a2-569f-8bdd-980e1f77c10a/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8/index.html b/blog/1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8/index.html index 20091c53..88476f9c 100644 --- a/blog/1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8/index.html +++ b/blog/1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/45775c6a-7cd8-5018-9047-afbec09abf59/index.html b/blog/45775c6a-7cd8-5018-9047-afbec09abf59/index.html index 46a2bd14..d4bb28df 100644 --- a/blog/45775c6a-7cd8-5018-9047-afbec09abf59/index.html +++ b/blog/45775c6a-7cd8-5018-9047-afbec09abf59/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/6a129001-a171-5d7e-9555-a943ae9d624f/index.html b/blog/6a129001-a171-5d7e-9555-a943ae9d624f/index.html index 876f8c84..2a1bfd09 100644 --- a/blog/6a129001-a171-5d7e-9555-a943ae9d624f/index.html +++ b/blog/6a129001-a171-5d7e-9555-a943ae9d624f/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/91d98aad-6ec6-5e71-b6ca-daff730c0ca4/index.html b/blog/91d98aad-6ec6-5e71-b6ca-daff730c0ca4/index.html index 39858191..c6cfd325 100644 --- a/blog/91d98aad-6ec6-5e71-b6ca-daff730c0ca4/index.html +++ b/blog/91d98aad-6ec6-5e71-b6ca-daff730c0ca4/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/aa06b558-51ae-5f78-9989-0baadffbbc36/index.html b/blog/aa06b558-51ae-5f78-9989-0baadffbbc36/index.html index 9a05f160..9ddd656d 100644 --- a/blog/aa06b558-51ae-5f78-9989-0baadffbbc36/index.html +++ b/blog/aa06b558-51ae-5f78-9989-0baadffbbc36/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/articlename/index.html b/blog/articlename/index.html index 009c2e04..382d8ca2 100644 --- a/blog/articlename/index.html +++ b/blog/articlename/index.html @@ -1,8 +1,8 @@

#articlename

12 Jun 2023

Awesome post 6

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

11 Jun 2023

Awesome post 5

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

10 Jun 2023

Awesome post 4

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

08 Jun 2023

Awesome post 2

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

07 Jun 2023

Awesome post 3

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#articlename

12 Jun 2023

Awesome post 6

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

11 Jun 2023

Awesome post 5

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

10 Jun 2023

Awesome post 4

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

08 Jun 2023

Awesome post 2

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

07 Jun 2023

Awesome post 3

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/articlename/page/1/index.html b/blog/articlename/page/1/index.html index 51ea6747..b3b813a4 100644 --- a/blog/articlename/page/1/index.html +++ b/blog/articlename/page/1/index.html @@ -1,8 +1,8 @@

#articlename

12 Jun 2023

Awesome post 6

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

11 Jun 2023

Awesome post 5

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

10 Jun 2023

Awesome post 4

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

08 Jun 2023

Awesome post 2

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

07 Jun 2023

Awesome post 3

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#articlename

12 Jun 2023

Awesome post 6

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

11 Jun 2023

Awesome post 5

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

10 Jun 2023

Awesome post 4

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

08 Jun 2023

Awesome post 2

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

07 Jun 2023

Awesome post 3

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/articlename/page/2/index.html b/blog/articlename/page/2/index.html index 776d772d..ec9bbd47 100644 --- a/blog/articlename/page/2/index.html +++ b/blog/articlename/page/2/index.html @@ -1,8 +1,8 @@

#articlename

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#articlename

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/azure-devops/index.html b/blog/azure-devops/index.html index 9e2ba744..f8696f78 100644 --- a/blog/azure-devops/index.html +++ b/blog/azure-devops/index.html @@ -1,8 +1,8 @@

#azure devops

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#azure devops

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/azure-devops/page/1/index.html b/blog/azure-devops/page/1/index.html index 376cb73b..0b8e3a14 100644 --- a/blog/azure-devops/page/1/index.html +++ b/blog/azure-devops/page/1/index.html @@ -1,8 +1,8 @@

#azure devops

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#azure devops

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/azure/index.html b/blog/azure/index.html index 49fa46d5..d4a6406b 100644 --- a/blog/azure/index.html +++ b/blog/azure/index.html @@ -1,8 +1,8 @@

#azure

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#azure

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/azure/page/1/index.html b/blog/azure/page/1/index.html index c82904d3..949d8aa4 100644 --- a/blog/azure/page/1/index.html +++ b/blog/azure/page/1/index.html @@ -1,8 +1,8 @@

#azure

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#azure

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/c924c93c-fac0-517e-92e7-c5b5aaa083c2/index.html b/blog/c924c93c-fac0-517e-92e7-c5b5aaa083c2/index.html index 9c21014d..bdf82273 100644 --- a/blog/c924c93c-fac0-517e-92e7-c5b5aaa083c2/index.html +++ b/blog/c924c93c-fac0-517e-92e7-c5b5aaa083c2/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/changelog/index.html b/blog/changelog/index.html index ff4d34b5..a52fc72a 100644 --- a/blog/changelog/index.html +++ b/blog/changelog/index.html @@ -1,8 +1,8 @@

#changelog

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#changelog

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/changelog/page/1/index.html b/blog/changelog/page/1/index.html index 8b0220f9..76ec65d2 100644 --- a/blog/changelog/page/1/index.html +++ b/blog/changelog/page/1/index.html @@ -1,8 +1,8 @@

#changelog

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#changelog

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/cloud-init/index.html b/blog/cloud-init/index.html index 09b35840..bc428010 100644 --- a/blog/cloud-init/index.html +++ b/blog/cloud-init/index.html @@ -1,8 +1,8 @@

#cloud-init

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#cloud-init

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/cloud-init/page/1/index.html b/blog/cloud-init/page/1/index.html index 3765852b..d653667a 100644 --- a/blog/cloud-init/page/1/index.html +++ b/blog/cloud-init/page/1/index.html @@ -1,8 +1,8 @@

#cloud-init

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#cloud-init

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/confluence/index.html b/blog/confluence/index.html index 953a0445..e7dfa1ad 100644 --- a/blog/confluence/index.html +++ b/blog/confluence/index.html @@ -1,8 +1,8 @@

#confluence

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#confluence

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/confluence/page/1/index.html b/blog/confluence/page/1/index.html index 16bd9212..f48f3d12 100644 --- a/blog/confluence/page/1/index.html +++ b/blog/confluence/page/1/index.html @@ -1,8 +1,8 @@

#confluence

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#confluence

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/devops/index.html b/blog/devops/index.html index 41d21d3b..edac6cf3 100644 --- a/blog/devops/index.html +++ b/blog/devops/index.html @@ -1,8 +1,8 @@

#devops

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#devops

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/devops/page/1/index.html b/blog/devops/page/1/index.html index 04194a58..71887ed5 100644 --- a/blog/devops/page/1/index.html +++ b/blog/devops/page/1/index.html @@ -1,8 +1,8 @@

#devops

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#devops

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/e173a2ae-ebb5-5219-9479-035dde5fe8c8/index.html b/blog/e173a2ae-ebb5-5219-9479-035dde5fe8c8/index.html index 1822c4c7..e0283ebf 100644 --- a/blog/e173a2ae-ebb5-5219-9479-035dde5fe8c8/index.html +++ b/blog/e173a2ae-ebb5-5219-9479-035dde5fe8c8/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/f7437acb-56dc-5ec6-9370-7726f39da57a/index.html b/blog/f7437acb-56dc-5ec6-9370-7726f39da57a/index.html index 26a18b29..05e9f572 100644 --- a/blog/f7437acb-56dc-5ec6-9370-7726f39da57a/index.html +++ b/blog/f7437acb-56dc-5ec6-9370-7726f39da57a/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/hashtag/index.html b/blog/hashtag/index.html index ca0e6501..a70326a7 100644 --- a/blog/hashtag/index.html +++ b/blog/hashtag/index.html @@ -1,8 +1,8 @@

#hashtag

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#hashtag

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/hashtag/page/1/index.html b/blog/hashtag/page/1/index.html index c5dc337c..41647240 100644 --- a/blog/hashtag/page/1/index.html +++ b/blog/hashtag/page/1/index.html @@ -1,8 +1,8 @@

#hashtag

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#hashtag

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/importanttopick/index.html b/blog/importanttopick/index.html index 255649c5..dc9c7cae 100644 --- a/blog/importanttopick/index.html +++ b/blog/importanttopick/index.html @@ -1,8 +1,8 @@

#importanttopick

12 Jun 2023

Awesome post 6

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

11 Jun 2023

Awesome post 5

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

10 Jun 2023

Awesome post 4

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

08 Jun 2023

Awesome post 2

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

07 Jun 2023

Awesome post 3

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#importanttopick

12 Jun 2023

Awesome post 6

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

11 Jun 2023

Awesome post 5

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

10 Jun 2023

Awesome post 4

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

08 Jun 2023

Awesome post 2

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

07 Jun 2023

Awesome post 3

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/importanttopick/page/1/index.html b/blog/importanttopick/page/1/index.html index 9afc6cae..54647d01 100644 --- a/blog/importanttopick/page/1/index.html +++ b/blog/importanttopick/page/1/index.html @@ -1,8 +1,8 @@

#importanttopick

12 Jun 2023

Awesome post 6

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

11 Jun 2023

Awesome post 5

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

10 Jun 2023

Awesome post 4

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

08 Jun 2023

Awesome post 2

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

07 Jun 2023

Awesome post 3

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#importanttopick

12 Jun 2023

Awesome post 6

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

11 Jun 2023

Awesome post 5

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

10 Jun 2023

Awesome post 4

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

08 Jun 2023

Awesome post 2

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

07 Jun 2023

Awesome post 3

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/importanttopick/page/2/index.html b/blog/importanttopick/page/2/index.html index 67a101e9..8e498eb9 100644 --- a/blog/importanttopick/page/2/index.html +++ b/blog/importanttopick/page/2/index.html @@ -1,8 +1,8 @@

#importanttopick

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#importanttopick

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/index.html b/blog/index.html index 996f17d9..5b0dcdfb 100644 --- a/blog/index.html +++ b/blog/index.html @@ -1,8 +1,8 @@

cover

15 Mar 2024

Self-Hosted build Agent for Azure Pipelines

Welcome to our guide to installing the Azure Agent In this post, we'll cover the installation process, whether you're setting up a self-hosted agent for Azure Pipelines...

Open article

Reading time: ~3 m.

02 Dec 2023

Streamlining Changelog Creation with Azure DevOps and Confluence

In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure...

Open article

Reading time: ~3 m.

21 Jul 2023

Proxmox VM Templates and Cloud-Init

In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud...

Open article

Reading time: ~3 m.

12 Jun 2023

Awesome post 6

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

11 Jun 2023

Awesome post 5

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

cover

15 Mar 2024

Self-Hosted build Agent for Azure Pipelines

Welcome to our guide to installing the Azure Agent In this post, we'll cover the installation process, whether you're setting up a self-hosted agent for Azure Pipelines...

Open article

Reading time: ~3 m.

02 Dec 2023

Streamlining Changelog Creation with Azure DevOps and Confluence

In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure...

Open article

Reading time: ~3 m.

21 Jul 2023

Proxmox VM Templates and Cloud-Init

In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud...

Open article

Reading time: ~3 m.

12 Jun 2023

Awesome post 6

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

11 Jun 2023

Awesome post 5

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/keywordlong/index.html b/blog/keywordlong/index.html index c423836c..7b97dc1c 100644 --- a/blog/keywordlong/index.html +++ b/blog/keywordlong/index.html @@ -1,8 +1,8 @@

#keywordlong

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#keywordlong

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/keywordlong/page/1/index.html b/blog/keywordlong/page/1/index.html index 7c50bb83..55a17092 100644 --- a/blog/keywordlong/page/1/index.html +++ b/blog/keywordlong/page/1/index.html @@ -1,8 +1,8 @@

#keywordlong

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#keywordlong

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/page/1/index.html b/blog/page/1/index.html index 312714d8..2c48e34b 100644 --- a/blog/page/1/index.html +++ b/blog/page/1/index.html @@ -1,8 +1,8 @@

cover

15 Mar 2024

Self-Hosted build Agent for Azure Pipelines

Welcome to our guide to installing the Azure Agent In this post, we'll cover the installation process, whether you're setting up a self-hosted agent for Azure Pipelines...

Open article

Reading time: ~3 m.

02 Dec 2023

Streamlining Changelog Creation with Azure DevOps and Confluence

In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure...

Open article

Reading time: ~3 m.

21 Jul 2023

Proxmox VM Templates and Cloud-Init

In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud...

Open article

Reading time: ~3 m.

12 Jun 2023

Awesome post 6

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

11 Jun 2023

Awesome post 5

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

cover

15 Mar 2024

Self-Hosted build Agent for Azure Pipelines

Welcome to our guide to installing the Azure Agent In this post, we'll cover the installation process, whether you're setting up a self-hosted agent for Azure Pipelines...

Open article

Reading time: ~3 m.

02 Dec 2023

Streamlining Changelog Creation with Azure DevOps and Confluence

In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure...

Open article

Reading time: ~3 m.

21 Jul 2023

Proxmox VM Templates and Cloud-Init

In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud...

Open article

Reading time: ~3 m.

12 Jun 2023

Awesome post 6

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

11 Jun 2023

Awesome post 5

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/page/2/index.html b/blog/page/2/index.html index 1e6833cf..6bdb0a7f 100644 --- a/blog/page/2/index.html +++ b/blog/page/2/index.html @@ -1,8 +1,8 @@

cover

10 Jun 2023

Awesome post 4

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

08 Jun 2023

Awesome post 2

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

07 Jun 2023

Awesome post 3

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

05 Jun 2023

Awesome post 1

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

cover

10 Jun 2023

Awesome post 4

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

08 Jun 2023

Awesome post 2

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

07 Jun 2023

Awesome post 3

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

05 Jun 2023

Awesome post 1

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/podryabinkina/index.html b/blog/podryabinkina/index.html index 81dd6b58..b6330e45 100644 --- a/blog/podryabinkina/index.html +++ b/blog/podryabinkina/index.html @@ -1,8 +1,8 @@
CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);
CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/podryabinkina/page/1/index.html b/blog/podryabinkina/page/1/index.html index 73cde6cc..80799359 100644 --- a/blog/podryabinkina/page/1/index.html +++ b/blog/podryabinkina/page/1/index.html @@ -1,8 +1,8 @@
CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);
CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/post/index.html b/blog/post/index.html index 2c10f7d0..5f65dc79 100644 --- a/blog/post/index.html +++ b/blog/post/index.html @@ -1,8 +1,8 @@

#post

12 Jun 2023

Awesome post 6

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

11 Jun 2023

Awesome post 5

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

10 Jun 2023

Awesome post 4

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

08 Jun 2023

Awesome post 2

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

07 Jun 2023

Awesome post 3

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#post

12 Jun 2023

Awesome post 6

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

11 Jun 2023

Awesome post 5

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

10 Jun 2023

Awesome post 4

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

08 Jun 2023

Awesome post 2

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

07 Jun 2023

Awesome post 3

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/post/page/1/index.html b/blog/post/page/1/index.html index 7a38a9f7..8fb10ef6 100644 --- a/blog/post/page/1/index.html +++ b/blog/post/page/1/index.html @@ -1,8 +1,8 @@

#post

12 Jun 2023

Awesome post 6

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

11 Jun 2023

Awesome post 5

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

10 Jun 2023

Awesome post 4

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

08 Jun 2023

Awesome post 2

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

07 Jun 2023

Awesome post 3

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#post

12 Jun 2023

Awesome post 6

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

11 Jun 2023

Awesome post 5

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

10 Jun 2023

Awesome post 4

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

08 Jun 2023

Awesome post 2

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

07 Jun 2023

Awesome post 3

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/post/page/2/index.html b/blog/post/page/2/index.html index ee9e7fbb..b23efd83 100644 --- a/blog/post/page/2/index.html +++ b/blog/post/page/2/index.html @@ -1,8 +1,8 @@

#post

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#post

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/proxmox/index.html b/blog/proxmox/index.html index 34c96dc7..6bad863e 100644 --- a/blog/proxmox/index.html +++ b/blog/proxmox/index.html @@ -1,8 +1,8 @@

#proxmox

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#proxmox

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/proxmox/page/1/index.html b/blog/proxmox/page/1/index.html index c780f712..2ff0e268 100644 --- a/blog/proxmox/page/1/index.html +++ b/blog/proxmox/page/1/index.html @@ -1,8 +1,8 @@

#proxmox

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#proxmox

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/self-hosted-build-agent/index.html b/blog/self-hosted-build-agent/index.html index 6b9dbefa..209ac6bc 100644 --- a/blog/self-hosted-build-agent/index.html +++ b/blog/self-hosted-build-agent/index.html @@ -1,8 +1,8 @@

#self-hosted build agent

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#self-hosted build agent

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/self-hosted-build-agent/page/1/index.html b/blog/self-hosted-build-agent/page/1/index.html index 47cfca52..45733512 100644 --- a/blog/self-hosted-build-agent/page/1/index.html +++ b/blog/self-hosted-build-agent/page/1/index.html @@ -1,8 +1,8 @@

#self-hosted build agent

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#self-hosted build agent

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/virtualization/index.html b/blog/virtualization/index.html index df72a1e6..804e0c00 100644 --- a/blog/virtualization/index.html +++ b/blog/virtualization/index.html @@ -1,8 +1,8 @@

#virtualization

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#virtualization

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/virtualization/page/1/index.html b/blog/virtualization/page/1/index.html index 6373b665..413eb152 100644 --- a/blog/virtualization/page/1/index.html +++ b/blog/virtualization/page/1/index.html @@ -1,8 +1,8 @@

#virtualization

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#virtualization

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/vm/index.html b/blog/vm/index.html index f68938be..773d050e 100644 --- a/blog/vm/index.html +++ b/blog/vm/index.html @@ -1,8 +1,8 @@

#VM

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#VM

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/vm/page/1/index.html b/blog/vm/page/1/index.html index 8f1414a9..060c4cb4 100644 --- a/blog/vm/page/1/index.html +++ b/blog/vm/page/1/index.html @@ -1,8 +1,8 @@

#VM

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

#VM

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/zhmayev/index.html b/blog/zhmayev/index.html index 3a9b5277..ff1224cf 100644 --- a/blog/zhmayev/index.html +++ b/blog/zhmayev/index.html @@ -1,8 +1,8 @@

12 Jun 2023

Awesome post 6

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

11 Jun 2023

Awesome post 5

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

10 Jun 2023

Awesome post 4

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

08 Jun 2023

Awesome post 2

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

07 Jun 2023

Awesome post 3

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

12 Jun 2023

Awesome post 6

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

11 Jun 2023

Awesome post 5

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

10 Jun 2023

Awesome post 4

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

08 Jun 2023

Awesome post 2

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

07 Jun 2023

Awesome post 3

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/zhmayev/page/1/index.html b/blog/zhmayev/page/1/index.html index 0f1a08c4..911dcf63 100644 --- a/blog/zhmayev/page/1/index.html +++ b/blog/zhmayev/page/1/index.html @@ -1,8 +1,8 @@

12 Jun 2023

Awesome post 6

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

11 Jun 2023

Awesome post 5

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

10 Jun 2023

Awesome post 4

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

08 Jun 2023

Awesome post 2

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

07 Jun 2023

Awesome post 3

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

12 Jun 2023

Awesome post 6

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

11 Jun 2023

Awesome post 5

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

10 Jun 2023

Awesome post 4

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~3 m.

08 Jun 2023

Awesome post 2

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

07 Jun 2023

Awesome post 3

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source....

Open article

Reading time: ~1 m.

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/zhmayev/page/2/index.html b/blog/zhmayev/page/2/index.html index af32d875..81270979 100644 --- a/blog/zhmayev/page/2/index.html +++ b/blog/zhmayev/page/2/index.html @@ -1,8 +1,8 @@
CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);
CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/chunk-map.json b/chunk-map.json index ec4de134..51616544 100644 --- a/chunk-map.json +++ b/chunk-map.json @@ -1 +1 @@ -{"app":["/app-a10c13aa836e9c26d16d.js"],"component---src-pages-templates-404-tsx":["/component---src-pages-templates-404-tsx-a9bd4aad0e6942bc817a.js"],"component---src-pages-templates-blog-by-author-tsx":["/component---src-pages-templates-blog-by-author-tsx-789eecdaeec0a896729b.js"],"component---src-pages-templates-blog-by-hashtag-tsx":["/component---src-pages-templates-blog-by-hashtag-tsx-56cadc2b340c057ace2f.js"],"component---src-pages-templates-blog-tsx":["/component---src-pages-templates-blog-tsx-c959d60261c8f487ab71.js"],"component---src-pages-templates-index-tsx":["/component---src-pages-templates-index-tsx-c399118fd452a66701b3.js"],"component---src-pages-templates-policies-tsx":["/component---src-pages-templates-policies-tsx-359925d45492160d5e8b.js"],"component---src-pages-templates-post-tsx":["/component---src-pages-templates-post-tsx-faf47b9679f1ea2df95d.js"],"component---src-pages-templates-project-tsx":["/component---src-pages-templates-project-tsx-4094dc02619f4d8f92a5.js"],"component---src-pages-templates-projects-tsx":["/component---src-pages-templates-projects-tsx-585b3228148568f67aca.js"],"component---src-pages-templates-services-tsx":["/component---src-pages-templates-services-tsx-f01ff73488603dfb6e07.js"],"component---src-pages-templates-workflow-tsx":["/component---src-pages-templates-workflow-tsx-269bd6e36936a6947204.js"]} \ No newline at end of file +{"app":["/app-a10c13aa836e9c26d16d.js"],"component---src-pages-templates-404-tsx":["/component---src-pages-templates-404-tsx-a9bd4aad0e6942bc817a.js"],"component---src-pages-templates-blog-by-author-tsx":["/component---src-pages-templates-blog-by-author-tsx-d42ee157dbe851133901.js"],"component---src-pages-templates-blog-by-hashtag-tsx":["/component---src-pages-templates-blog-by-hashtag-tsx-615da2ad975c6c4424ae.js"],"component---src-pages-templates-blog-tsx":["/component---src-pages-templates-blog-tsx-b708ccb3ab38b62e1d6a.js"],"component---src-pages-templates-index-tsx":["/component---src-pages-templates-index-tsx-d535c6a2d4bd5b585572.js"],"component---src-pages-templates-policies-tsx":["/component---src-pages-templates-policies-tsx-359925d45492160d5e8b.js"],"component---src-pages-templates-post-tsx":["/component---src-pages-templates-post-tsx-faf47b9679f1ea2df95d.js"],"component---src-pages-templates-project-tsx":["/component---src-pages-templates-project-tsx-1ae68b85e2aab86abd1c.js"],"component---src-pages-templates-projects-tsx":["/component---src-pages-templates-projects-tsx-2427a45ecb142ca97a72.js"],"component---src-pages-templates-services-tsx":["/component---src-pages-templates-services-tsx-f01ff73488603dfb6e07.js"],"component---src-pages-templates-workflow-tsx":["/component---src-pages-templates-workflow-tsx-0ec92049b543300a7c91.js"]} \ No newline at end of file diff --git a/component---src-pages-templates-blog-by-author-tsx-789eecdaeec0a896729b.js b/component---src-pages-templates-blog-by-author-tsx-d42ee157dbe851133901.js similarity index 98% rename from component---src-pages-templates-blog-by-author-tsx-789eecdaeec0a896729b.js rename to component---src-pages-templates-blog-by-author-tsx-d42ee157dbe851133901.js index a135766e..d8fa92de 100644 --- a/component---src-pages-templates-blog-by-author-tsx-789eecdaeec0a896729b.js +++ b/component---src-pages-templates-blog-by-author-tsx-d42ee157dbe851133901.js @@ -1,2 +1,2 @@ -(self.webpackChunkcode_cave=self.webpackChunkcode_cave||[]).push([[748],{6488:function(e,t,a){var l=a(9720).w_;e.exports.p=function(e){return l({tag:"svg",attr:{viewBox:"0 0 16 16",fill:"currentColor"},child:[{tag:"path",attr:{fillRule:"evenodd",d:"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z",clipRule:"evenodd"}},{tag:"path",attr:{fillRule:"evenodd",d:"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z",clipRule:"evenodd"}}]})(e)}},1929:function(e,t,a){"use strict";a.d(t,{Z:function(){return d}});var l=a(7294),n=a(8032),s=a(4471),r=a.n(s),o=a(1164),i=a(917);var c=e=>{let{className:t}=e;return(0,i.tZ)("div",{className:`flex justify-center items-center h-full w-full ${t}`},(0,i.tZ)("svg",{"aria-hidden":"true",className:"w-8 h-8 mr-2 text-main-10 animate-spin dark:text-secondary-10 fill-main-100",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},(0,i.tZ)("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),(0,i.tZ)("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})))};var u=()=>{const{0:e,1:t}=(0,l.useState)(!1),n=(0,l.useRef)(!0),s=(0,l.useRef)(null);return(0,l.useEffect)((()=>{if(!n.current||!s.current||"undefined"==typeof window)return;n.current=!1;const e=new Worker(new URL(a.p+a.u(847),a.b),{type:void 0});e.onmessage=e=>{let{data:a}=e;"ready"===a&&t(!0)};const l=s.current;l.width=l.clientWidth,l.height=l.clientHeight;const r=l.transferControlToOffscreen();e.postMessage({canvas:r},[r]);const o=()=>{e.postMessage({width:l.clientWidth,height:l.clientHeight})};window.addEventListener("resize",o,{passive:!0});const i=t=>{t.preventDefault(),e.postMessage({wheel:t.deltaY})};l.addEventListener("wheel",i);const c=t=>{e.postMessage({x:t.movementX,y:t.movementY})};l.addEventListener("mousedown",(e=>{e.preventDefault(),window.addEventListener("mousemove",c,{passive:!0}),window.addEventListener("mouseup",(()=>window.removeEventListener("mousemove",c)),{once:!0,passive:!0})}));let u;return l.addEventListener("touchstart",(t=>{if(1!==t.touches.length)return;const a=t.touches[0];t.preventDefault();const l={x:a.screenX,y:a.screenY};u=t=>{const{newX:a,newY:n}=((t,a)=>{const l=t.touches[0];return e.postMessage({x:l.screenX-a.x,y:l.screenY-a.y}),{newX:l.screenX,newY:l.screenY}})(t,l);l.x=a,l.y=n},window.addEventListener("touchmove",u,{passive:!0}),window.addEventListener("touchend",(()=>{window.removeEventListener("touchmove",u)}),{passive:!0})}),{passive:!0}),()=>{window&&(window.removeEventListener("resize",o),window.removeEventListener("mousemove",c),window.removeEventListener("touchmove",u),l&&l.removeEventListener("wheel",i),e.terminate())}}),[]),(0,i.tZ)("div",{className:"h-full w-full relative"},(0,i.tZ)("canvas",{ref:s,className:"bg-main-100 h-91 w-full flex items-center justify-center cursor-pointer"}),e?null:(0,i.tZ)(c,{className:"absolute top-0 left-0 right-0 bottom-0 z-10"}))};var d=e=>{let{heightClass:t="min-h-91",title:a,className:s,borderBottom:c,borderTop:d,babylon:m,image:f,titleBlockClassName:h,children:g}=e;const{0:p,1:v}=(0,l.useState)("translate-y-full");return(0,l.useEffect)((()=>{v("translate-y-0")}),[]),(0,i.tZ)("div",{className:`w-full flex items-center bg-main-100 relative overflow-hidden ${t} ${s}`},d?(0,i.tZ)(r(),{className:"absolute top-0 left-0 right-0 w-full"}):null,(0,i.tZ)(o.Z,{className:"h-full flex flex-col lg:flex-row py-12 lg:py-0 items-center justify-between text-secondary-100 flex-grow gap-y-8"},(0,i.tZ)("div",{className:`flex flex-col overflow-hidden items-left h-full justify-center text-secondary-100 h-full w-full ${h||"lg:w-1/2"} bg-main-100`},(0,i.tZ)("h1",{className:"overflow-hidden w-full"},(0,i.tZ)("span",{className:`banner-title inline-block text-3xl lg:text-4xl w-full text-center lg:text-start transition-all duration-1000 font-light ${p}`},a))),m?(0,i.tZ)("div",{className:"w-[85%] lg:w-1/2 lg:h-full hidden md:flex -order-1 lg:order-none"},(0,i.tZ)(u,null)):null,f?(0,i.tZ)("div",{className:"w-[220px] lg:w-1/2 lg:h-full flex justify-center lg:justify-end items-center -order-1 lg:order-none"},(0,i.tZ)(n.G,{image:f,alt:"cover",className:"object-contain aspect-square"})):null,g?(0,i.tZ)("div",{className:"w-full lg:h-full flex justify-center lg:justify-start items-center"},g):null),c?(0,i.tZ)(r(),{className:"absolute bottom-0 left-0 right-0 w-full"}):null)}},1434:function(e,t,a){"use strict";var l=a(7462),n=a(8322),s=a(917);t.Z=e=>{const{theme:t,onClick:a,className:r,children:o,border:i,...c}=e,u=""+(t===n.Q.dark?"bg-main-100 text-secondary-100 border-secondary-100 hover:bg-main-70":"bg-secondary-100 text-main-100 border-main-100 hover:bg-secondary-30");return(0,s.tZ)("button",(0,l.Z)({onClick:a,className:`flex min-w-10 items-center justify-center rounded-lg border-solid ${i?"border":""} ${u} ${r}`},c),o)}},4568:function(e,t,a){"use strict";var l=a(4160),n=a(8322),s=a(1434),r=a(917);t.Z=e=>{let{section:t,pagesQuantity:a,currentPage:o,nextPageTitle:i,className:c}=e;const u=Array.from({length:a},((e,t)=>t+1)),d=o+1;return(0,r.tZ)("div",{className:`flex justify-center w-full gap-6 ${c}`},o1?u.map((e=>(0,r.tZ)(l.rU,{key:`pagination-link-${e}`,to:`/${t}/page/${e}`},(0,r.tZ)(s.Z,{theme:n.Q.light,border:e===o,"aria-label":"view page",className:"h-10 font-bold"},e)))):null))}},4404:function(e,t,a){"use strict";var l=a(4160),n=a(8032),s=a(917);t.Z=e=>{let{authorAlias:t,author:a,authorPosition:r,authorPhoto:o}=e;const i=(0,n.c)(o);return(0,s.tZ)(l.rU,{to:`/blog/${t.split(" ").join("-").toLowerCase()}`,title:`${a}'s blog`,itemProp:"author",itemScope:!0,itemType:"https://schema.org/Person",className:"flex items-center gap-4 mb-8 sm:mb-12 text-secondary-100 text-lg"},i?(0,s.tZ)(n.G,{image:i,alt:"avatar",itemProp:"image",className:"object-contain aspect-square rounded-full w-16 grayscale"}):null,(0,s.tZ)("div",{className:"flex-1 w-max"},(0,s.tZ)("p",{itemProp:"name",className:"font-semibold whitespace-nowrap"},a),(0,s.tZ)("p",{itemProp:"jobTitle",className:"text-secondary-30"},r)))}},3793:function(e,t,a){"use strict";var l=a(4160),n=a(6488),s=a(9165),r=a(8322),o=a(917);t.Z=e=>{let{post:t,theme:a,className:i,markupData:c,lang:u}=e;const{date:d,title:m,text:f}=t.frontmatter,h=Math.floor(t.wordCount.words/200),g=h||1,p=a===r.Q.light?"text-main-100":"text-secondary-100",v=a===r.Q.light?"text-main-10":"text-secondary-10",w=a===r.Q.light?"hover:text-main-10":"hover:text-secondary-10";return(0,o.tZ)(l.rU,{to:`/blog/${t.id}`,className:`flex flex-col sm:flex-row w-full justify-center gap-5 md:gap-14 ${p} ${w} ${i}`,itemScope:!0,itemType:"https://schema.org/Article"},(0,o.tZ)("div",{className:"flex flex-col w-full max-w-[400px] gap-2.5"},(0,o.tZ)("p",{itemProp:"dateCreated",className:`text-lg ${v}`},d),(0,o.tZ)("h3",{itemProp:"headline",className:`text-3xl font-semibold ${p}`},m)),(0,o.tZ)("div",{className:"flex flex-col w-full max-w-[500px] gap-5"},(0,o.tZ)("p",{className:`font-normal text-base ${p}`,itemProp:"abstract"},f.split(" ").slice(0,70).join(" "),"..."),(0,o.tZ)("div",{className:"flex w-full items-center justify-between"},(0,o.tZ)("div",{className:"flex items-center gap-3 text-sm font-bold"},(0,o.tZ)("span",null,null==c?void 0:c.readPostLink),(0,o.tZ)(n.p,{size:14})),(0,o.tZ)("p",{className:`text-sm ${v}`},`${null==c?void 0:c.readingTimeTitle}: ~${g} ${null==c?void 0:c.readingTimeUnits}.`))),(0,o.tZ)(s.Lx,{itemProp:"copyrightHolder",lang:u}))}},1655:function(e,t,a){"use strict";a.r(t),a.d(t,{Head:function(){return m}});var l=a(7294),n=a(8322),s=a(1929),r=a(1164),o=a(3793),i=a(4568),c=a(9165),u=a(4404),d=a(917);t.default=e=>{let{data:t,pageContext:a}=e;const c=t.posts.nodes,{authorAlias:m,author:f,authorPhoto:h,authorPosition:g,authorDescription:p}=t.author.frontmatter,{currentPage:v,pagesQuantity:w,markupData:x,lang:Z}=a;return(0,d.tZ)(l.Fragment,null,(0,d.tZ)(s.Z,{heightClass:"lg:h-99",titleBlockClassName:"lg:w-72 shrink-0 lg:mr-28",title:x.blogByAuthorBannerTitle.toUpperCase(),borderBottom:!0},(0,d.tZ)("div",{className:"text-secondary-30 text-lg"},(0,d.tZ)(u.Z,{authorAlias:m,author:f,authorPhoto:h,authorPosition:g}),(0,d.tZ)("p",{className:"w-full"},p))),(0,d.tZ)(r.Z,{className:"flex-col items-center p-6 md:p-12 bg-secondary-100 gap-14"},c?c.map((e=>(0,d.tZ)(o.Z,{theme:n.Q.light,key:e.id,post:e,markupData:x,lang:Z}))):null,(0,d.tZ)(i.Z,{section:`blog/${m.split(" ").join("-").toLowerCase()}`,pagesQuantity:w,currentPage:v,nextPageTitle:a.pagination.next})))};const m=e=>{let{pageContext:{markupData:t,currentPage:a,site:l,lang:n},data:{author:{frontmatter:{author:s}}},location:r}=e;return(0,d.tZ)(c.Ag,{title:`${t.head} | ${s} | ${a}`,description:`${t.head} | ${t.bannerTitle}`,siteUrl:l.siteUrl,path:r.pathname,lang:n})}},8322:function(e,t,a){"use strict";a.d(t,{Q:function(){return l}});let l=function(e){return e.dark="dark",e.light="light",e}({})},4471:function(e,t,a){var l=a(7294);function n(e){return l.createElement("svg",e,[l.createElement("line",{width:"800",height:"8",stroke:"#f9f9f9",strokeWidth:"8",strokeDasharray:"8 8",x1:"0",x2:"100%",y1:"4",y2:"4",key:0}),l.createElement("line",{width:"800",height:"8",stroke:"#111111",strokeWidth:"8",strokeDasharray:"8 8",x1:"8",x2:"100%",y1:"4",y2:"4",key:1})])}n.defaultProps={height:"8"},e.exports=n,n.default=n}}]); -//# sourceMappingURL=component---src-pages-templates-blog-by-author-tsx-789eecdaeec0a896729b.js.map \ No newline at end of file +(self.webpackChunkcode_cave=self.webpackChunkcode_cave||[]).push([[748],{6488:function(e,t,a){var l=a(9720).w_;e.exports.p=function(e){return l({tag:"svg",attr:{viewBox:"0 0 16 16",fill:"currentColor"},child:[{tag:"path",attr:{fillRule:"evenodd",d:"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z",clipRule:"evenodd"}},{tag:"path",attr:{fillRule:"evenodd",d:"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z",clipRule:"evenodd"}}]})(e)}},1929:function(e,t,a){"use strict";a.d(t,{Z:function(){return d}});var l=a(7294),n=a(8032),s=a(4471),r=a.n(s),o=a(1164),i=a(917);var c=e=>{let{className:t}=e;return(0,i.tZ)("div",{className:`flex justify-center items-center h-full w-full ${t}`},(0,i.tZ)("svg",{"aria-hidden":"true",className:"w-8 h-8 mr-2 text-main-10 animate-spin dark:text-secondary-10 fill-main-100",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},(0,i.tZ)("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),(0,i.tZ)("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})))};var u=()=>{const{0:e,1:t}=(0,l.useState)(!1),n=(0,l.useRef)(!0),s=(0,l.useRef)(null);return(0,l.useEffect)((()=>{if(!n.current||!s.current||"undefined"==typeof window)return;n.current=!1;const e=new Worker(new URL(a.p+a.u(847),a.b),{type:void 0});e.onmessage=e=>{let{data:a}=e;"ready"===a&&t(!0)};const l=s.current;l.width=l.clientWidth,l.height=l.clientHeight;const r=l.transferControlToOffscreen();e.postMessage({canvas:r},[r]);const o=()=>{e.postMessage({width:l.clientWidth,height:l.clientHeight})};window.addEventListener("resize",o,{passive:!0});const i=t=>{t.preventDefault(),e.postMessage({wheel:t.deltaY})};l.addEventListener("wheel",i);const c=t=>{e.postMessage({x:t.movementX,y:t.movementY})};l.addEventListener("mousedown",(e=>{e.preventDefault(),window.addEventListener("mousemove",c,{passive:!0}),window.addEventListener("mouseup",(()=>window.removeEventListener("mousemove",c)),{once:!0,passive:!0})}));let u;return l.addEventListener("touchstart",(t=>{if(1!==t.touches.length)return;const a=t.touches[0];t.preventDefault();const l={x:a.screenX,y:a.screenY};u=t=>{const{newX:a,newY:n}=((t,a)=>{const l=t.touches[0];return e.postMessage({x:l.screenX-a.x,y:l.screenY-a.y}),{newX:l.screenX,newY:l.screenY}})(t,l);l.x=a,l.y=n},window.addEventListener("touchmove",u,{passive:!0}),window.addEventListener("touchend",(()=>{window.removeEventListener("touchmove",u)}),{passive:!0})}),{passive:!0}),()=>{window&&(window.removeEventListener("resize",o),window.removeEventListener("mousemove",c),window.removeEventListener("touchmove",u),l&&l.removeEventListener("wheel",i),e.terminate())}}),[]),(0,i.tZ)("div",{className:"h-full w-full relative"},(0,i.tZ)("canvas",{ref:s,className:"bg-main-100 h-91 w-full flex items-center justify-center cursor-pointer"}),e?null:(0,i.tZ)(c,{className:"absolute top-0 left-0 right-0 bottom-0 z-10"}))};var d=e=>{let{heightClass:t="min-h-91",title:a,className:s,borderBottom:c,borderTop:d,babylon:m,image:f,titleBlockClassName:h,children:g}=e;const{0:p,1:v}=(0,l.useState)("translate-y-full");return(0,l.useEffect)((()=>{v("translate-y-0")}),[]),(0,i.tZ)("div",{className:`w-full flex items-center bg-main-100 relative overflow-hidden ${t} ${s}`},d?(0,i.tZ)(r(),{className:"absolute top-0 left-0 right-0 w-full"}):null,(0,i.tZ)(o.Z,{className:"h-full flex flex-col lg:flex-row py-12 lg:py-0 items-center justify-between text-secondary-100 flex-grow gap-y-8"},(0,i.tZ)("div",{className:`flex flex-col overflow-hidden items-left h-full justify-center text-secondary-100 h-full w-full ${h||"lg:w-1/2"} bg-main-100`},(0,i.tZ)("h1",{className:"overflow-hidden w-full"},(0,i.tZ)("span",{className:`banner-title inline-block text-3xl lg:text-4xl w-full text-center lg:text-start transition-all duration-1000 font-light ${p}`},a))),m?(0,i.tZ)("div",{className:"w-[85%] lg:w-1/2 lg:h-full hidden md:flex -order-1 lg:order-none"},(0,i.tZ)(u,null)):null,f?(0,i.tZ)("div",{className:"w-[220px] lg:w-1/2 lg:h-full flex justify-center lg:justify-end items-center -order-1 lg:order-none"},(0,i.tZ)(n.G,{image:f,alt:"cover",className:"object-contain aspect-square"})):null,g?(0,i.tZ)("div",{className:"w-full lg:h-full flex justify-center lg:justify-start items-center"},g):null),c?(0,i.tZ)(r(),{className:"absolute bottom-0 left-0 right-0 w-full"}):null)}},1434:function(e,t,a){"use strict";var l=a(7462),n=a(8322),s=a(917);t.Z=e=>{const{theme:t,onClick:a,className:r,children:o,border:i,...c}=e,u=""+(t===n.Q.dark?"bg-main-100 text-secondary-100 border-secondary-100 hover:bg-main-70":"bg-secondary-100 text-main-100 border-main-100 hover:bg-secondary-30");return(0,s.tZ)("button",(0,l.Z)({onClick:a,className:`flex min-w-10 items-center justify-center rounded-lg border-solid ${i?"border":""} ${u} ${r}`},c),o)}},4568:function(e,t,a){"use strict";var l=a(4160),n=a(8322),s=a(1434),r=a(917);t.Z=e=>{let{section:t,pagesQuantity:a,currentPage:o,nextPageTitle:i,className:c}=e;const u=Array.from({length:a},((e,t)=>t+1)),d=o+1;return(0,r.tZ)("div",{className:`flex justify-center w-full gap-6 ${c}`},o1?u.map((e=>(0,r.tZ)(l.rU,{key:`pagination-link-${e}`,to:`/${t}/page/${e}`},(0,r.tZ)(s.Z,{theme:n.Q.light,border:e===o,"aria-label":"view page",className:"h-10 font-bold"},e)))):null))}},4404:function(e,t,a){"use strict";var l=a(4160),n=a(8032),s=a(917);t.Z=e=>{let{authorAlias:t,author:a,authorPosition:r,authorPhoto:o}=e;const i=(0,n.c)(o);return(0,s.tZ)(l.rU,{to:`/blog/${t.split(" ").join("-").toLowerCase()}`,title:`${a}'s blog`,itemProp:"author",itemScope:!0,itemType:"https://schema.org/Person",className:"flex items-center gap-4 mb-8 sm:mb-12 text-secondary-100 text-lg"},i?(0,s.tZ)(n.G,{image:i,alt:"avatar",itemProp:"image",className:"object-contain aspect-square rounded-full w-16 grayscale"}):null,(0,s.tZ)("div",{className:"flex-1 w-max"},(0,s.tZ)("p",{itemProp:"name",className:"font-semibold whitespace-nowrap"},a),(0,s.tZ)("p",{itemProp:"jobTitle",className:"text-secondary-30"},r)))}},3793:function(e,t,a){"use strict";var l=a(4160),n=a(6488),s=a(9165),r=a(8322),o=a(917);t.Z=e=>{let{post:t,theme:a,className:i,markupData:c,lang:u}=e;const{date:d,title:m,text:f}=t.frontmatter,h=Math.floor(t.wordCount.words/200),g=h||1,p=a===r.Q.light?"text-main-100":"text-secondary-100",v=a===r.Q.light?"text-main-70":"text-secondary-70",w=a===r.Q.light?"hover:text-main-10":"hover:text-secondary-10";return(0,o.tZ)(l.rU,{to:`/blog/${t.id}`,className:`flex flex-col sm:flex-row w-full justify-center gap-5 md:gap-14 ${p} ${w} ${i}`,itemScope:!0,itemType:"https://schema.org/Article"},(0,o.tZ)("div",{className:"flex flex-col w-full max-w-[400px] gap-2.5"},(0,o.tZ)("p",{itemProp:"dateCreated",className:`text-lg ${v}`},d),(0,o.tZ)("h2",{itemProp:"headline",className:`text-3xl font-semibold ${p}`},m)),(0,o.tZ)("div",{className:"flex flex-col w-full max-w-[500px] gap-5"},(0,o.tZ)("p",{className:`font-normal text-base ${p}`,itemProp:"abstract"},f.split(" ").slice(0,70).join(" "),"..."),(0,o.tZ)("div",{className:"flex w-full items-center justify-between"},(0,o.tZ)("div",{className:"flex items-center gap-3 text-sm font-bold"},(0,o.tZ)("span",null,null==c?void 0:c.readPostLink),(0,o.tZ)(n.p,{size:14})),(0,o.tZ)("p",{className:`text-sm ${v}`},`${null==c?void 0:c.readingTimeTitle}: ~${g} ${null==c?void 0:c.readingTimeUnits}.`))),(0,o.tZ)(s.Lx,{itemProp:"copyrightHolder",lang:u}))}},1655:function(e,t,a){"use strict";a.r(t),a.d(t,{Head:function(){return m}});var l=a(7294),n=a(8322),s=a(1929),r=a(1164),o=a(3793),i=a(4568),c=a(9165),u=a(4404),d=a(917);t.default=e=>{let{data:t,pageContext:a}=e;const c=t.posts.nodes,{authorAlias:m,author:f,authorPhoto:h,authorPosition:g,authorDescription:p}=t.author.frontmatter,{currentPage:v,pagesQuantity:w,markupData:x,lang:Z}=a;return(0,d.tZ)(l.Fragment,null,(0,d.tZ)(s.Z,{heightClass:"lg:h-99",titleBlockClassName:"lg:w-72 shrink-0 lg:mr-28",title:x.blogByAuthorBannerTitle.toUpperCase(),borderBottom:!0},(0,d.tZ)("div",{className:"text-secondary-30 text-lg"},(0,d.tZ)(u.Z,{authorAlias:m,author:f,authorPhoto:h,authorPosition:g}),(0,d.tZ)("p",{className:"w-full"},p))),(0,d.tZ)(r.Z,{className:"flex-col items-center p-6 md:p-12 bg-secondary-100 gap-14"},c?c.map((e=>(0,d.tZ)(o.Z,{theme:n.Q.light,key:e.id,post:e,markupData:x,lang:Z}))):null,(0,d.tZ)(i.Z,{section:`blog/${m.split(" ").join("-").toLowerCase()}`,pagesQuantity:w,currentPage:v,nextPageTitle:a.pagination.next})))};const m=e=>{let{pageContext:{markupData:t,currentPage:a,site:l,lang:n},data:{author:{frontmatter:{author:s}}},location:r}=e;return(0,d.tZ)(c.Ag,{title:`${t.head} | ${s} | ${a}`,description:`${t.head} | ${t.bannerTitle}`,siteUrl:l.siteUrl,path:r.pathname,lang:n})}},8322:function(e,t,a){"use strict";a.d(t,{Q:function(){return l}});let l=function(e){return e.dark="dark",e.light="light",e}({})},4471:function(e,t,a){var l=a(7294);function n(e){return l.createElement("svg",e,[l.createElement("line",{width:"800",height:"8",stroke:"#f9f9f9",strokeWidth:"8",strokeDasharray:"8 8",x1:"0",x2:"100%",y1:"4",y2:"4",key:0}),l.createElement("line",{width:"800",height:"8",stroke:"#111111",strokeWidth:"8",strokeDasharray:"8 8",x1:"8",x2:"100%",y1:"4",y2:"4",key:1})])}n.defaultProps={height:"8"},e.exports=n,n.default=n}}]); +//# sourceMappingURL=component---src-pages-templates-blog-by-author-tsx-d42ee157dbe851133901.js.map \ No newline at end of file diff --git a/component---src-pages-templates-blog-by-author-tsx-789eecdaeec0a896729b.js.map b/component---src-pages-templates-blog-by-author-tsx-d42ee157dbe851133901.js.map similarity index 98% rename from component---src-pages-templates-blog-by-author-tsx-789eecdaeec0a896729b.js.map rename to component---src-pages-templates-blog-by-author-tsx-d42ee157dbe851133901.js.map index d8962e1f..cbf24a05 100644 --- a/component---src-pages-templates-blog-by-author-tsx-789eecdaeec0a896729b.js.map +++ b/component---src-pages-templates-blog-by-author-tsx-d42ee157dbe851133901.js.map @@ -1 +1 @@ -{"version":3,"file":"component---src-pages-templates-blog-by-author-tsx-789eecdaeec0a896729b.js","mappings":"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","sources":["webpack://code-cave/./node_modules/@react-icons/all-files/bs/BsArrowUpRight.js","webpack://code-cave/./src/components/common/spinner.tsx","webpack://code-cave/./src/components/babylonjs/babylon.tsx","webpack://code-cave/./src/components/common/banner.tsx","webpack://code-cave/./src/components/common/button.tsx","webpack://code-cave/./src/components/common/pagination.tsx","webpack://code-cave/./src/components/posts/postAuthorCard.tsx","webpack://code-cave/./src/components/posts/postPreview.tsx","webpack://code-cave/./src/pagesTemplates/blogByAuthor.tsx","webpack://code-cave/./src/types/common.type.ts","webpack://code-cave/./src/assets/common/border.svg"],"sourcesContent":["// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.BsArrowUpRight = function BsArrowUpRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z\",\"clipRule\":\"evenodd\"}},{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z\",\"clipRule\":\"evenodd\"}}]})(props);\n};\n","import React from \"react\";\n\nconst Spinner = ({ className }: { className?: string }) => {\n return (\n \n \n \n \n \n \n );\n};\n\nexport default Spinner;\n","import React, { useEffect, useRef, useState } from \"react\";\n\nimport Spinner from \"../common/spinner\";\n\nconst Babylon = () => {\n const [isBabylonReady, setIsBabylonReady] = useState(false);\n const isInitial = useRef(true);\n const canvasRef = useRef(null);\n\n useEffect(() => {\n if (\n !isInitial.current ||\n !canvasRef.current ||\n typeof window == \"undefined\"\n )\n return;\n\n isInitial.current = false;\n\n // WORKER instance creation\n const babylonWorker = new Worker(\n new URL(\"../../workers/babylon.worker.ts\", import.meta.url),\n {\n type: \"module\",\n }\n );\n babylonWorker.onmessage = ({ data }) => {\n if (data === \"ready\") setIsBabylonReady(true);\n };\n\n // OFFSCREEN canvas\n const canvas = canvasRef.current;\n canvas.width = canvas.clientWidth;\n canvas.height = canvas.clientHeight;\n\n const offscreenCanvas = canvas.transferControlToOffscreen();\n babylonWorker.postMessage({ canvas: offscreenCanvas }, [offscreenCanvas]);\n\n // RESIZE handler\n const onResizeHandler = () => {\n babylonWorker.postMessage({\n width: canvas.clientWidth,\n height: canvas.clientHeight,\n });\n };\n window.addEventListener(\"resize\", onResizeHandler, { passive: true });\n\n // WHEEL handler\n const onWheelHandler = (e: WheelEvent) => {\n e.preventDefault();\n babylonWorker.postMessage({ wheel: e.deltaY });\n };\n canvas.addEventListener(\"wheel\", onWheelHandler);\n\n // ROTATE mouse handler\n const onMouseMoveHandler = (e: MouseEvent) => {\n babylonWorker.postMessage({\n x: e.movementX,\n y: e.movementY,\n });\n };\n canvas.addEventListener(\"mousedown\", (e: MouseEvent) => {\n e.preventDefault();\n window.addEventListener(\"mousemove\", onMouseMoveHandler, {\n passive: true,\n });\n window.addEventListener(\n \"mouseup\",\n () => window.removeEventListener(\"mousemove\", onMouseMoveHandler),\n { once: true, passive: true }\n );\n });\n\n // ROTATE touch handler\n const nestedTouchMoveHandler = (\n e: TouchEvent,\n previousCoords: { x: number; y: number }\n ) => {\n const touch = e.touches[0];\n babylonWorker.postMessage({\n x: touch.screenX - previousCoords.x,\n y: touch.screenY - previousCoords.y,\n });\n\n return {\n newX: touch.screenX,\n newY: touch.screenY,\n };\n };\n let onTouchMoveHandler: (e: TouchEvent) => void;\n canvas.addEventListener(\n \"touchstart\",\n (e: TouchEvent) => {\n if (e.touches.length !== 1) return;\n\n const firstTouch = e.touches[0];\n\n e.preventDefault();\n const previousCoords = {\n x: firstTouch.screenX,\n y: firstTouch.screenY,\n };\n\n onTouchMoveHandler = (e: TouchEvent) => {\n const { newX, newY } = nestedTouchMoveHandler(e, previousCoords);\n previousCoords.x = newX;\n previousCoords.y = newY;\n };\n\n window.addEventListener(\"touchmove\", onTouchMoveHandler, {\n passive: true,\n });\n window.addEventListener(\n \"touchend\",\n () => {\n window.removeEventListener(\"touchmove\", onTouchMoveHandler);\n },\n { passive: true }\n );\n },\n { passive: true }\n );\n\n // UNMOUNT handler\n return () => {\n if (!window) return;\n\n window.removeEventListener(\"resize\", onResizeHandler);\n window.removeEventListener(\"mousemove\", onMouseMoveHandler);\n window.removeEventListener(\"touchmove\", onTouchMoveHandler);\n if (canvas) {\n canvas.removeEventListener(\"wheel\", onWheelHandler);\n }\n babylonWorker.terminate();\n };\n }, []);\n\n return (\n
\n \n {!isBabylonReady ? (\n \n ) : null}\n
\n );\n};\n\nexport default Babylon;\n","import React, { useEffect, useState } from \"react\";\nimport { GatsbyImage, IGatsbyImageData } from \"gatsby-plugin-image\";\n\nimport Border from \"../../assets/common/border.svg\";\n\nimport ContentContainer from \"./contentContainer\";\nimport Babylon from \"../babylonjs/babylon\";\n\n// interface IBannerProps {\n// heightClass?: string;\n// title: string;\n// className?: string;\n// borderBottom?: boolean;\n// borderTop?: boolean;\n// babylon?: boolean;\n// image?: IGatsbyImageData;\n// }\ntype TBannerCommonProps = {\n heightClass?: string;\n title: string;\n className?: string;\n borderBottom?: boolean;\n borderTop?: boolean;\n};\ntype TBannerConditionalProps =\n | {\n babylon?: boolean;\n image?: never;\n children?: never;\n titleBlockClassName?: never;\n }\n | {\n babylon?: never;\n image?: IGatsbyImageData;\n children?: never;\n titleBlockClassName?: never;\n }\n | {\n babylon?: never;\n image?: never;\n children?: React.ReactNode;\n titleBlockClassName?: string;\n };\ntype TBannerProps = TBannerCommonProps & TBannerConditionalProps;\n\nconst Banner = ({\n heightClass = \"min-h-91\",\n title,\n className,\n borderBottom,\n borderTop,\n babylon,\n image,\n titleBlockClassName,\n children,\n}: TBannerProps) => {\n const [textTranslate, setTextTranslate] = useState<\n \"translate-y-full\" | \"translate-y-0\"\n >(\"translate-y-full\");\n useEffect(() => {\n setTextTranslate(\"translate-y-0\");\n }, []);\n\n return (\n \n {borderTop ? (\n \n ) : null}\n \n \n

\n \n {title}\n \n

\n \n {babylon ? (\n \n ) : null}\n {image ? (\n
\n \n
\n ) : null}\n {children ? (\n
\n {children}\n
\n ) : null}\n \n {borderBottom ? (\n \n ) : null}\n \n );\n};\n\nexport default Banner;\n","import React from \"react\";\n\nimport { Theme } from \"../../types/common.type\";\n\ninterface IButtonProps extends React.ButtonHTMLAttributes {\n theme: Theme;\n onClick?: () => any;\n className?: string;\n border?: boolean;\n}\n\nconst Button = (props: React.PropsWithChildren) => {\n const { theme, onClick, className, children, border, ...attr } = props;\n\n const colorClasses = `${\n theme === Theme.dark\n ? \"bg-main-100 text-secondary-100 border-secondary-100 hover:bg-main-70\"\n : \"bg-secondary-100 text-main-100 border-main-100 hover:bg-secondary-30\"\n }`;\n\n return (\n \n {children}\n \n );\n};\n\nexport default Button;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { Theme } from \"../../types/common.type\";\n\nimport Button from \"./button\";\n\nconst Pagination = ({\n section,\n pagesQuantity,\n currentPage,\n nextPageTitle,\n className,\n}: {\n section: \"projects\" | `blog${string}`;\n pagesQuantity: number;\n currentPage: number;\n nextPageTitle?: string;\n className?: string;\n}) => {\n const pages = Array.from({ length: pagesQuantity }, (_, i) => i + 1);\n const nextPage = currentPage + 1;\n\n return (\n
\n {currentPage < pagesQuantity ? (\n \n \n {nextPageTitle ?? \"Next page\"}\n \n \n ) : null}\n\n \n
\n );\n};\n\nexport default Pagination;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\nimport { GatsbyImage, getImage } from \"gatsby-plugin-image\";\n\nimport { IPostAuthor } from \"../../types/post.type\";\n\nconst PostAuthorCard = ({\n authorAlias,\n author,\n authorPosition,\n authorPhoto,\n}: IPostAuthor) => {\n const avatar = getImage(authorPhoto);\n\n return (\n \n {avatar ? (\n \n ) : null}\n
\n

\n {author}\n

\n

\n {authorPosition}\n

\n
\n \n );\n};\n\nexport default PostAuthorCard;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { BsArrowUpRight } from \"@react-icons/all-files/bs/BsArrowUpRight\";\n\nimport { IPostPreviewQueryResult } from \"../../types/post.type\";\nimport { LocalBusinessMetadata } from \"../common/metadata\";\nimport { IBlogMarkupData } from \"../../types/commonMarkup.type\";\nimport { TLang, Theme } from \"../../types/common.type\";\n\nconst PostPreview = ({\n post,\n theme,\n className,\n markupData,\n lang,\n}: {\n post: IPostPreviewQueryResult;\n className?: string;\n theme: Theme;\n markupData?: IBlogMarkupData;\n lang: TLang;\n}) => {\n const { date, title, text } = post.frontmatter;\n\n const minutes = Math.floor(post.wordCount.words / 200);\n const readingTime = minutes ? minutes : 1;\n\n const fontColorClass100 =\n theme === Theme.light ? \"text-main-100\" : \"text-secondary-100\";\n const fontColorClass10 =\n theme === Theme.light ? \"text-main-10\" : \"text-secondary-10\";\n const fontColorHover =\n theme === Theme.light ? \"hover:text-main-10\" : \"hover:text-secondary-10\";\n\n return (\n \n
\n

\n {date}\n

\n \n {title}\n \n
\n
\n \n {text.split(\" \").slice(0, 70).join(\" \")}...\n

\n
\n
\n {markupData?.readPostLink}\n \n
\n

\n {`${markupData?.readingTimeTitle}: ~${readingTime} ${markupData?.readingTimeUnits}.`}\n

\n
\n
\n \n \n );\n};\n\nexport default PostPreview;\n","import React from \"react\";\nimport { HeadFC, HeadProps, PageProps, graphql } from \"gatsby\";\n\nimport {\n IBlogByAuthorPageContext,\n IBlogByAuthorPageData,\n} from \"../types/blog.type\";\nimport { Theme } from \"../types/common.type\";\n\nimport Banner from \"../components/common/banner\";\nimport ContentContainer from \"../components/common/contentContainer\";\nimport PostPreview from \"../components/posts/postPreview\";\nimport Pagination from \"../components/common/pagination\";\nimport { HeadSeo } from \"../components/common/metadata\";\nimport PostAuthorCard from \"../components/posts/postAuthorCard\";\n\nconst BlogByAuthor = ({\n data,\n pageContext,\n}: PageProps) => {\n const posts = data.posts.nodes;\n const {\n authorAlias,\n author,\n authorPhoto,\n authorPosition,\n authorDescription,\n } = data.author.frontmatter;\n const { currentPage, pagesQuantity, markupData, lang } = pageContext;\n\n return (\n <>\n \n
\n \n

{authorDescription}

\n
\n \n \n {posts\n ? posts.map((post) => (\n \n ))\n : null}\n \n \n \n );\n};\n\nexport default BlogByAuthor;\n\nexport const Head: HeadFC = ({\n pageContext: { markupData, currentPage, site, lang },\n data: {\n author: {\n frontmatter: { author },\n },\n },\n location,\n}: HeadProps) => {\n return (\n \n );\n};\n\nexport const query = graphql`\n query (\n $skip: Int!\n $limit: Int!\n $lang: String\n $authorAlias: String\n $authorId: String\n ) {\n posts: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"posts\" }, language: { eq: $lang } }\n frontmatter: { authorAlias: { eq: $authorAlias } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: $limit\n skip: $skip\n ) {\n nodes {\n id\n frontmatter {\n date(formatString: \"DD MMM YYYY\", locale: $lang)\n title\n text\n cover {\n childImageSharp {\n gatsbyImageData(\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n width: 600\n )\n }\n }\n }\n wordCount {\n words\n }\n }\n }\n author: markdownRemark(id: { eq: $authorId }) {\n frontmatter {\n authorAlias\n author\n authorPosition\n authorDescription\n authorPhoto {\n childImageSharp {\n gatsbyImageData(\n width: 64\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n )\n }\n }\n }\n }\n }\n`;\n","export interface ILang {\n lang: TLang;\n}\n\nexport type TLang = \"en\" | \"ru\";\n\nexport type TLinks = \"services\" | \"workflow\" | \"projects\" | \"blog\";\n\nexport interface IBasePageContext extends ILang {\n site: ISiteMetadata;\n}\n\nexport interface IMdQueryResult {\n allMarkdownRemark: {\n nodes: T[];\n };\n}\n\nexport interface ISiteMetadata {\n title: string;\n description: string;\n siteUrl: string;\n image: string;\n analyticsId: string;\n}\n\nexport enum Theme {\n dark = \"dark\",\n light = \"light\",\n}\n","var React = require('react');\n\nfunction Border (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"line\",{\"width\":\"800\",\"height\":\"8\",\"stroke\":\"#f9f9f9\",\"strokeWidth\":\"8\",\"strokeDasharray\":\"8 8\",\"x1\":\"0\",\"x2\":\"100%\",\"y1\":\"4\",\"y2\":\"4\",\"key\":0}),React.createElement(\"line\",{\"width\":\"800\",\"height\":\"8\",\"stroke\":\"#111111\",\"strokeWidth\":\"8\",\"strokeDasharray\":\"8 8\",\"x1\":\"8\",\"x2\":\"100%\",\"y1\":\"4\",\"y2\":\"4\",\"key\":1})]);\n}\n\nBorder.defaultProps = {\"height\":\"8\"};\n\nmodule.exports = Border;\n\nBorder.default = Border;\n"],"names":["GenIcon","module","exports","props","_ref","className","___EmotionJSX","viewBox","fill","xmlns","d","Babylon","isBabylonReady","setIsBabylonReady","useState","isInitial","useRef","canvasRef","useEffect","current","window","babylonWorker","Worker","URL","type","onmessage","data","canvas","width","clientWidth","height","clientHeight","offscreenCanvas","transferControlToOffscreen","postMessage","onResizeHandler","addEventListener","passive","onWheelHandler","e","preventDefault","wheel","deltaY","onMouseMoveHandler","x","movementX","y","movementY","removeEventListener","once","onTouchMoveHandler","touches","length","firstTouch","previousCoords","screenX","screenY","newX","newY","nestedTouchMoveHandler","touch","terminate","ref","Spinner","heightClass","title","borderBottom","borderTop","babylon","image","titleBlockClassName","children","textTranslate","setTextTranslate","Border","ContentContainer","GatsbyImage","alt","theme","onClick","border","attr","colorClasses","Theme","dark","_extends","section","pagesQuantity","currentPage","nextPageTitle","pages","Array","from","_","i","nextPage","Link","to","Button","light","map","page","key","authorAlias","author","authorPosition","authorPhoto","avatar","getImage","split","join","toLowerCase","itemProp","itemScope","itemType","post","markupData","lang","date","text","frontmatter","minutes","Math","floor","wordCount","words","readingTime","fontColorClass100","fontColorClass10","fontColorHover","id","slice","readPostLink","BsArrowUpRight","size","readingTimeTitle","readingTimeUnits","LocalBusinessMetadata","pageContext","posts","nodes","authorDescription","React","Banner","blogByAuthorBannerTitle","toUpperCase","PostAuthorCard","PostPreview","Pagination","pagination","next","Head","_ref2","site","location","HeadSeo","head","description","bannerTitle","siteUrl","path","pathname","createElement","defaultProps","default"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"component---src-pages-templates-blog-by-author-tsx-d42ee157dbe851133901.js","mappings":"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","sources":["webpack://code-cave/./node_modules/@react-icons/all-files/bs/BsArrowUpRight.js","webpack://code-cave/./src/components/common/spinner.tsx","webpack://code-cave/./src/components/babylonjs/babylon.tsx","webpack://code-cave/./src/components/common/banner.tsx","webpack://code-cave/./src/components/common/button.tsx","webpack://code-cave/./src/components/common/pagination.tsx","webpack://code-cave/./src/components/posts/postAuthorCard.tsx","webpack://code-cave/./src/components/posts/postPreview.tsx","webpack://code-cave/./src/pagesTemplates/blogByAuthor.tsx","webpack://code-cave/./src/types/common.type.ts","webpack://code-cave/./src/assets/common/border.svg"],"sourcesContent":["// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.BsArrowUpRight = function BsArrowUpRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z\",\"clipRule\":\"evenodd\"}},{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z\",\"clipRule\":\"evenodd\"}}]})(props);\n};\n","import React from \"react\";\n\nconst Spinner = ({ className }: { className?: string }) => {\n return (\n \n \n \n \n \n \n );\n};\n\nexport default Spinner;\n","import React, { useEffect, useRef, useState } from \"react\";\n\nimport Spinner from \"../common/spinner\";\n\nconst Babylon = () => {\n const [isBabylonReady, setIsBabylonReady] = useState(false);\n const isInitial = useRef(true);\n const canvasRef = useRef(null);\n\n useEffect(() => {\n if (\n !isInitial.current ||\n !canvasRef.current ||\n typeof window == \"undefined\"\n )\n return;\n\n isInitial.current = false;\n\n // WORKER instance creation\n const babylonWorker = new Worker(\n new URL(\"../../workers/babylon.worker.ts\", import.meta.url),\n {\n type: \"module\",\n }\n );\n babylonWorker.onmessage = ({ data }) => {\n if (data === \"ready\") setIsBabylonReady(true);\n };\n\n // OFFSCREEN canvas\n const canvas = canvasRef.current;\n canvas.width = canvas.clientWidth;\n canvas.height = canvas.clientHeight;\n\n const offscreenCanvas = canvas.transferControlToOffscreen();\n babylonWorker.postMessage({ canvas: offscreenCanvas }, [offscreenCanvas]);\n\n // RESIZE handler\n const onResizeHandler = () => {\n babylonWorker.postMessage({\n width: canvas.clientWidth,\n height: canvas.clientHeight,\n });\n };\n window.addEventListener(\"resize\", onResizeHandler, { passive: true });\n\n // WHEEL handler\n const onWheelHandler = (e: WheelEvent) => {\n e.preventDefault();\n babylonWorker.postMessage({ wheel: e.deltaY });\n };\n canvas.addEventListener(\"wheel\", onWheelHandler);\n\n // ROTATE mouse handler\n const onMouseMoveHandler = (e: MouseEvent) => {\n babylonWorker.postMessage({\n x: e.movementX,\n y: e.movementY,\n });\n };\n canvas.addEventListener(\"mousedown\", (e: MouseEvent) => {\n e.preventDefault();\n window.addEventListener(\"mousemove\", onMouseMoveHandler, {\n passive: true,\n });\n window.addEventListener(\n \"mouseup\",\n () => window.removeEventListener(\"mousemove\", onMouseMoveHandler),\n { once: true, passive: true }\n );\n });\n\n // ROTATE touch handler\n const nestedTouchMoveHandler = (\n e: TouchEvent,\n previousCoords: { x: number; y: number }\n ) => {\n const touch = e.touches[0];\n babylonWorker.postMessage({\n x: touch.screenX - previousCoords.x,\n y: touch.screenY - previousCoords.y,\n });\n\n return {\n newX: touch.screenX,\n newY: touch.screenY,\n };\n };\n let onTouchMoveHandler: (e: TouchEvent) => void;\n canvas.addEventListener(\n \"touchstart\",\n (e: TouchEvent) => {\n if (e.touches.length !== 1) return;\n\n const firstTouch = e.touches[0];\n\n e.preventDefault();\n const previousCoords = {\n x: firstTouch.screenX,\n y: firstTouch.screenY,\n };\n\n onTouchMoveHandler = (e: TouchEvent) => {\n const { newX, newY } = nestedTouchMoveHandler(e, previousCoords);\n previousCoords.x = newX;\n previousCoords.y = newY;\n };\n\n window.addEventListener(\"touchmove\", onTouchMoveHandler, {\n passive: true,\n });\n window.addEventListener(\n \"touchend\",\n () => {\n window.removeEventListener(\"touchmove\", onTouchMoveHandler);\n },\n { passive: true }\n );\n },\n { passive: true }\n );\n\n // UNMOUNT handler\n return () => {\n if (!window) return;\n\n window.removeEventListener(\"resize\", onResizeHandler);\n window.removeEventListener(\"mousemove\", onMouseMoveHandler);\n window.removeEventListener(\"touchmove\", onTouchMoveHandler);\n if (canvas) {\n canvas.removeEventListener(\"wheel\", onWheelHandler);\n }\n babylonWorker.terminate();\n };\n }, []);\n\n return (\n
\n \n {!isBabylonReady ? (\n \n ) : null}\n
\n );\n};\n\nexport default Babylon;\n","import React, { useEffect, useState } from \"react\";\nimport { GatsbyImage, IGatsbyImageData } from \"gatsby-plugin-image\";\n\nimport Border from \"../../assets/common/border.svg\";\n\nimport ContentContainer from \"./contentContainer\";\nimport Babylon from \"../babylonjs/babylon\";\n\n// interface IBannerProps {\n// heightClass?: string;\n// title: string;\n// className?: string;\n// borderBottom?: boolean;\n// borderTop?: boolean;\n// babylon?: boolean;\n// image?: IGatsbyImageData;\n// }\ntype TBannerCommonProps = {\n heightClass?: string;\n title: string;\n className?: string;\n borderBottom?: boolean;\n borderTop?: boolean;\n};\ntype TBannerConditionalProps =\n | {\n babylon?: boolean;\n image?: never;\n children?: never;\n titleBlockClassName?: never;\n }\n | {\n babylon?: never;\n image?: IGatsbyImageData;\n children?: never;\n titleBlockClassName?: never;\n }\n | {\n babylon?: never;\n image?: never;\n children?: React.ReactNode;\n titleBlockClassName?: string;\n };\ntype TBannerProps = TBannerCommonProps & TBannerConditionalProps;\n\nconst Banner = ({\n heightClass = \"min-h-91\",\n title,\n className,\n borderBottom,\n borderTop,\n babylon,\n image,\n titleBlockClassName,\n children,\n}: TBannerProps) => {\n const [textTranslate, setTextTranslate] = useState<\n \"translate-y-full\" | \"translate-y-0\"\n >(\"translate-y-full\");\n useEffect(() => {\n setTextTranslate(\"translate-y-0\");\n }, []);\n\n return (\n \n {borderTop ? (\n \n ) : null}\n \n \n

\n \n {title}\n \n

\n \n {babylon ? (\n \n ) : null}\n {image ? (\n
\n \n
\n ) : null}\n {children ? (\n
\n {children}\n
\n ) : null}\n \n {borderBottom ? (\n \n ) : null}\n \n );\n};\n\nexport default Banner;\n","import React from \"react\";\n\nimport { Theme } from \"../../types/common.type\";\n\ninterface IButtonProps extends React.ButtonHTMLAttributes {\n theme: Theme;\n onClick?: () => any;\n className?: string;\n border?: boolean;\n}\n\nconst Button = (props: React.PropsWithChildren) => {\n const { theme, onClick, className, children, border, ...attr } = props;\n\n const colorClasses = `${\n theme === Theme.dark\n ? \"bg-main-100 text-secondary-100 border-secondary-100 hover:bg-main-70\"\n : \"bg-secondary-100 text-main-100 border-main-100 hover:bg-secondary-30\"\n }`;\n\n return (\n \n {children}\n \n );\n};\n\nexport default Button;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { Theme } from \"../../types/common.type\";\n\nimport Button from \"./button\";\n\nconst Pagination = ({\n section,\n pagesQuantity,\n currentPage,\n nextPageTitle,\n className,\n}: {\n section: \"projects\" | `blog${string}`;\n pagesQuantity: number;\n currentPage: number;\n nextPageTitle?: string;\n className?: string;\n}) => {\n const pages = Array.from({ length: pagesQuantity }, (_, i) => i + 1);\n const nextPage = currentPage + 1;\n\n return (\n
\n {currentPage < pagesQuantity ? (\n \n \n {nextPageTitle ?? \"Next page\"}\n \n \n ) : null}\n\n \n
\n );\n};\n\nexport default Pagination;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\nimport { GatsbyImage, getImage } from \"gatsby-plugin-image\";\n\nimport { IPostAuthor } from \"../../types/post.type\";\n\nconst PostAuthorCard = ({\n authorAlias,\n author,\n authorPosition,\n authorPhoto,\n}: IPostAuthor) => {\n const avatar = getImage(authorPhoto);\n\n return (\n \n {avatar ? (\n \n ) : null}\n
\n

\n {author}\n

\n

\n {authorPosition}\n

\n
\n \n );\n};\n\nexport default PostAuthorCard;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { BsArrowUpRight } from \"@react-icons/all-files/bs/BsArrowUpRight\";\n\nimport { IPostPreviewQueryResult } from \"../../types/post.type\";\nimport { LocalBusinessMetadata } from \"../common/metadata\";\nimport { IBlogMarkupData } from \"../../types/commonMarkup.type\";\nimport { TLang, Theme } from \"../../types/common.type\";\n\nconst PostPreview = ({\n post,\n theme,\n className,\n markupData,\n lang,\n}: {\n post: IPostPreviewQueryResult;\n className?: string;\n theme: Theme;\n markupData?: IBlogMarkupData;\n lang: TLang;\n}) => {\n const { date, title, text } = post.frontmatter;\n\n const minutes = Math.floor(post.wordCount.words / 200);\n const readingTime = minutes ? minutes : 1;\n\n const fontColorClass100 =\n theme === Theme.light ? \"text-main-100\" : \"text-secondary-100\";\n const fontColorClass70 =\n theme === Theme.light ? \"text-main-70\" : \"text-secondary-70\";\n const fontColorHover =\n theme === Theme.light ? \"hover:text-main-10\" : \"hover:text-secondary-10\";\n\n return (\n \n
\n

\n {date}\n

\n \n {title}\n \n
\n
\n \n {text.split(\" \").slice(0, 70).join(\" \")}...\n

\n
\n
\n {markupData?.readPostLink}\n \n
\n

\n {`${markupData?.readingTimeTitle}: ~${readingTime} ${markupData?.readingTimeUnits}.`}\n

\n
\n
\n \n \n );\n};\n\nexport default PostPreview;\n","import React from \"react\";\nimport { HeadFC, HeadProps, PageProps, graphql } from \"gatsby\";\n\nimport {\n IBlogByAuthorPageContext,\n IBlogByAuthorPageData,\n} from \"../types/blog.type\";\nimport { Theme } from \"../types/common.type\";\n\nimport Banner from \"../components/common/banner\";\nimport ContentContainer from \"../components/common/contentContainer\";\nimport PostPreview from \"../components/posts/postPreview\";\nimport Pagination from \"../components/common/pagination\";\nimport { HeadSeo } from \"../components/common/metadata\";\nimport PostAuthorCard from \"../components/posts/postAuthorCard\";\n\nconst BlogByAuthor = ({\n data,\n pageContext,\n}: PageProps) => {\n const posts = data.posts.nodes;\n const {\n authorAlias,\n author,\n authorPhoto,\n authorPosition,\n authorDescription,\n } = data.author.frontmatter;\n const { currentPage, pagesQuantity, markupData, lang } = pageContext;\n\n return (\n <>\n \n
\n \n

{authorDescription}

\n
\n \n \n {posts\n ? posts.map((post) => (\n \n ))\n : null}\n \n \n \n );\n};\n\nexport default BlogByAuthor;\n\nexport const Head: HeadFC = ({\n pageContext: { markupData, currentPage, site, lang },\n data: {\n author: {\n frontmatter: { author },\n },\n },\n location,\n}: HeadProps) => {\n return (\n \n );\n};\n\nexport const query = graphql`\n query (\n $skip: Int!\n $limit: Int!\n $lang: String\n $authorAlias: String\n $authorId: String\n ) {\n posts: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"posts\" }, language: { eq: $lang } }\n frontmatter: { authorAlias: { eq: $authorAlias } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: $limit\n skip: $skip\n ) {\n nodes {\n id\n frontmatter {\n date(formatString: \"DD MMM YYYY\", locale: $lang)\n title\n text\n cover {\n childImageSharp {\n gatsbyImageData(\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n width: 600\n )\n }\n }\n }\n wordCount {\n words\n }\n }\n }\n author: markdownRemark(id: { eq: $authorId }) {\n frontmatter {\n authorAlias\n author\n authorPosition\n authorDescription\n authorPhoto {\n childImageSharp {\n gatsbyImageData(\n width: 64\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n )\n }\n }\n }\n }\n }\n`;\n","export interface ILang {\n lang: TLang;\n}\n\nexport type TLang = \"en\" | \"ru\";\n\nexport type TLinks = \"services\" | \"workflow\" | \"projects\" | \"blog\";\n\nexport interface IBasePageContext extends ILang {\n site: ISiteMetadata;\n}\n\nexport interface IMdQueryResult {\n allMarkdownRemark: {\n nodes: T[];\n };\n}\n\nexport interface ISiteMetadata {\n title: string;\n description: string;\n siteUrl: string;\n image: string;\n analyticsId: string;\n}\n\nexport enum Theme {\n dark = \"dark\",\n light = \"light\",\n}\n","var React = require('react');\n\nfunction Border (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"line\",{\"width\":\"800\",\"height\":\"8\",\"stroke\":\"#f9f9f9\",\"strokeWidth\":\"8\",\"strokeDasharray\":\"8 8\",\"x1\":\"0\",\"x2\":\"100%\",\"y1\":\"4\",\"y2\":\"4\",\"key\":0}),React.createElement(\"line\",{\"width\":\"800\",\"height\":\"8\",\"stroke\":\"#111111\",\"strokeWidth\":\"8\",\"strokeDasharray\":\"8 8\",\"x1\":\"8\",\"x2\":\"100%\",\"y1\":\"4\",\"y2\":\"4\",\"key\":1})]);\n}\n\nBorder.defaultProps = {\"height\":\"8\"};\n\nmodule.exports = Border;\n\nBorder.default = Border;\n"],"names":["GenIcon","module","exports","props","_ref","className","___EmotionJSX","viewBox","fill","xmlns","d","Babylon","isBabylonReady","setIsBabylonReady","useState","isInitial","useRef","canvasRef","useEffect","current","window","babylonWorker","Worker","URL","type","onmessage","data","canvas","width","clientWidth","height","clientHeight","offscreenCanvas","transferControlToOffscreen","postMessage","onResizeHandler","addEventListener","passive","onWheelHandler","e","preventDefault","wheel","deltaY","onMouseMoveHandler","x","movementX","y","movementY","removeEventListener","once","onTouchMoveHandler","touches","length","firstTouch","previousCoords","screenX","screenY","newX","newY","nestedTouchMoveHandler","touch","terminate","ref","Spinner","heightClass","title","borderBottom","borderTop","babylon","image","titleBlockClassName","children","textTranslate","setTextTranslate","Border","ContentContainer","GatsbyImage","alt","theme","onClick","border","attr","colorClasses","Theme","dark","_extends","section","pagesQuantity","currentPage","nextPageTitle","pages","Array","from","_","i","nextPage","Link","to","Button","light","map","page","key","authorAlias","author","authorPosition","authorPhoto","avatar","getImage","split","join","toLowerCase","itemProp","itemScope","itemType","post","markupData","lang","date","text","frontmatter","minutes","Math","floor","wordCount","words","readingTime","fontColorClass100","fontColorClass70","fontColorHover","id","slice","readPostLink","BsArrowUpRight","size","readingTimeTitle","readingTimeUnits","LocalBusinessMetadata","pageContext","posts","nodes","authorDescription","React","Banner","blogByAuthorBannerTitle","toUpperCase","PostAuthorCard","PostPreview","Pagination","pagination","next","Head","_ref2","site","location","HeadSeo","head","description","bannerTitle","siteUrl","path","pathname","createElement","defaultProps","default"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-templates-blog-by-hashtag-tsx-56cadc2b340c057ace2f.js b/component---src-pages-templates-blog-by-hashtag-tsx-615da2ad975c6c4424ae.js similarity index 97% rename from component---src-pages-templates-blog-by-hashtag-tsx-56cadc2b340c057ace2f.js rename to component---src-pages-templates-blog-by-hashtag-tsx-615da2ad975c6c4424ae.js index 13625dd6..eb9c9fc7 100644 --- a/component---src-pages-templates-blog-by-hashtag-tsx-56cadc2b340c057ace2f.js +++ b/component---src-pages-templates-blog-by-hashtag-tsx-615da2ad975c6c4424ae.js @@ -1,2 +1,2 @@ -(self.webpackChunkcode_cave=self.webpackChunkcode_cave||[]).push([[899],{6488:function(e,t,l){var a=l(9720).w_;e.exports.p=function(e){return a({tag:"svg",attr:{viewBox:"0 0 16 16",fill:"currentColor"},child:[{tag:"path",attr:{fillRule:"evenodd",d:"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z",clipRule:"evenodd"}},{tag:"path",attr:{fillRule:"evenodd",d:"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z",clipRule:"evenodd"}}]})(e)}},1929:function(e,t,l){"use strict";l.d(t,{Z:function(){return u}});var a=l(7294),n=l(8032),s=l(4471),r=l.n(s),o=l(1164),i=l(917);var c=e=>{let{className:t}=e;return(0,i.tZ)("div",{className:`flex justify-center items-center h-full w-full ${t}`},(0,i.tZ)("svg",{"aria-hidden":"true",className:"w-8 h-8 mr-2 text-main-10 animate-spin dark:text-secondary-10 fill-main-100",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},(0,i.tZ)("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),(0,i.tZ)("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})))};var d=()=>{const{0:e,1:t}=(0,a.useState)(!1),n=(0,a.useRef)(!0),s=(0,a.useRef)(null);return(0,a.useEffect)((()=>{if(!n.current||!s.current||"undefined"==typeof window)return;n.current=!1;const e=new Worker(new URL(l.p+l.u(847),l.b),{type:void 0});e.onmessage=e=>{let{data:l}=e;"ready"===l&&t(!0)};const a=s.current;a.width=a.clientWidth,a.height=a.clientHeight;const r=a.transferControlToOffscreen();e.postMessage({canvas:r},[r]);const o=()=>{e.postMessage({width:a.clientWidth,height:a.clientHeight})};window.addEventListener("resize",o,{passive:!0});const i=t=>{t.preventDefault(),e.postMessage({wheel:t.deltaY})};a.addEventListener("wheel",i);const c=t=>{e.postMessage({x:t.movementX,y:t.movementY})};a.addEventListener("mousedown",(e=>{e.preventDefault(),window.addEventListener("mousemove",c,{passive:!0}),window.addEventListener("mouseup",(()=>window.removeEventListener("mousemove",c)),{once:!0,passive:!0})}));let d;return a.addEventListener("touchstart",(t=>{if(1!==t.touches.length)return;const l=t.touches[0];t.preventDefault();const a={x:l.screenX,y:l.screenY};d=t=>{const{newX:l,newY:n}=((t,l)=>{const a=t.touches[0];return e.postMessage({x:a.screenX-l.x,y:a.screenY-l.y}),{newX:a.screenX,newY:a.screenY}})(t,a);a.x=l,a.y=n},window.addEventListener("touchmove",d,{passive:!0}),window.addEventListener("touchend",(()=>{window.removeEventListener("touchmove",d)}),{passive:!0})}),{passive:!0}),()=>{window&&(window.removeEventListener("resize",o),window.removeEventListener("mousemove",c),window.removeEventListener("touchmove",d),a&&a.removeEventListener("wheel",i),e.terminate())}}),[]),(0,i.tZ)("div",{className:"h-full w-full relative"},(0,i.tZ)("canvas",{ref:s,className:"bg-main-100 h-91 w-full flex items-center justify-center cursor-pointer"}),e?null:(0,i.tZ)(c,{className:"absolute top-0 left-0 right-0 bottom-0 z-10"}))};var u=e=>{let{heightClass:t="min-h-91",title:l,className:s,borderBottom:c,borderTop:u,babylon:m,image:f,titleBlockClassName:g,children:h}=e;const{0:p,1:v}=(0,a.useState)("translate-y-full");return(0,a.useEffect)((()=>{v("translate-y-0")}),[]),(0,i.tZ)("div",{className:`w-full flex items-center bg-main-100 relative overflow-hidden ${t} ${s}`},u?(0,i.tZ)(r(),{className:"absolute top-0 left-0 right-0 w-full"}):null,(0,i.tZ)(o.Z,{className:"h-full flex flex-col lg:flex-row py-12 lg:py-0 items-center justify-between text-secondary-100 flex-grow gap-y-8"},(0,i.tZ)("div",{className:`flex flex-col overflow-hidden items-left h-full justify-center text-secondary-100 h-full w-full ${g||"lg:w-1/2"} bg-main-100`},(0,i.tZ)("h1",{className:"overflow-hidden w-full"},(0,i.tZ)("span",{className:`banner-title inline-block text-3xl lg:text-4xl w-full text-center lg:text-start transition-all duration-1000 font-light ${p}`},l))),m?(0,i.tZ)("div",{className:"w-[85%] lg:w-1/2 lg:h-full hidden md:flex -order-1 lg:order-none"},(0,i.tZ)(d,null)):null,f?(0,i.tZ)("div",{className:"w-[220px] lg:w-1/2 lg:h-full flex justify-center lg:justify-end items-center -order-1 lg:order-none"},(0,i.tZ)(n.G,{image:f,alt:"cover",className:"object-contain aspect-square"})):null,h?(0,i.tZ)("div",{className:"w-full lg:h-full flex justify-center lg:justify-start items-center"},h):null),c?(0,i.tZ)(r(),{className:"absolute bottom-0 left-0 right-0 w-full"}):null)}},1434:function(e,t,l){"use strict";var a=l(7462),n=l(8322),s=l(917);t.Z=e=>{const{theme:t,onClick:l,className:r,children:o,border:i,...c}=e,d=""+(t===n.Q.dark?"bg-main-100 text-secondary-100 border-secondary-100 hover:bg-main-70":"bg-secondary-100 text-main-100 border-main-100 hover:bg-secondary-30");return(0,s.tZ)("button",(0,a.Z)({onClick:l,className:`flex min-w-10 items-center justify-center rounded-lg border-solid ${i?"border":""} ${d} ${r}`},c),o)}},4568:function(e,t,l){"use strict";var a=l(4160),n=l(8322),s=l(1434),r=l(917);t.Z=e=>{let{section:t,pagesQuantity:l,currentPage:o,nextPageTitle:i,className:c}=e;const d=Array.from({length:l},((e,t)=>t+1)),u=o+1;return(0,r.tZ)("div",{className:`flex justify-center w-full gap-6 ${c}`},o1?d.map((e=>(0,r.tZ)(a.rU,{key:`pagination-link-${e}`,to:`/${t}/page/${e}`},(0,r.tZ)(s.Z,{theme:n.Q.light,border:e===o,"aria-label":"view page",className:"h-10 font-bold"},e)))):null))}},3793:function(e,t,l){"use strict";var a=l(4160),n=l(6488),s=l(9165),r=l(8322),o=l(917);t.Z=e=>{let{post:t,theme:l,className:i,markupData:c,lang:d}=e;const{date:u,title:m,text:f}=t.frontmatter,g=Math.floor(t.wordCount.words/200),h=g||1,p=l===r.Q.light?"text-main-100":"text-secondary-100",v=l===r.Q.light?"text-main-10":"text-secondary-10",w=l===r.Q.light?"hover:text-main-10":"hover:text-secondary-10";return(0,o.tZ)(a.rU,{to:`/blog/${t.id}`,className:`flex flex-col sm:flex-row w-full justify-center gap-5 md:gap-14 ${p} ${w} ${i}`,itemScope:!0,itemType:"https://schema.org/Article"},(0,o.tZ)("div",{className:"flex flex-col w-full max-w-[400px] gap-2.5"},(0,o.tZ)("p",{itemProp:"dateCreated",className:`text-lg ${v}`},u),(0,o.tZ)("h3",{itemProp:"headline",className:`text-3xl font-semibold ${p}`},m)),(0,o.tZ)("div",{className:"flex flex-col w-full max-w-[500px] gap-5"},(0,o.tZ)("p",{className:`font-normal text-base ${p}`,itemProp:"abstract"},f.split(" ").slice(0,70).join(" "),"..."),(0,o.tZ)("div",{className:"flex w-full items-center justify-between"},(0,o.tZ)("div",{className:"flex items-center gap-3 text-sm font-bold"},(0,o.tZ)("span",null,null==c?void 0:c.readPostLink),(0,o.tZ)(n.p,{size:14})),(0,o.tZ)("p",{className:`text-sm ${v}`},`${null==c?void 0:c.readingTimeTitle}: ~${h} ${null==c?void 0:c.readingTimeUnits}.`))),(0,o.tZ)(s.Lx,{itemProp:"copyrightHolder",lang:d}))}},5029:function(e,t,l){"use strict";l.r(t),l.d(t,{Head:function(){return u}});var a=l(7294),n=l(8322),s=l(1929),r=l(1164),o=l(3793),i=l(4568),c=l(9165),d=l(917);t.default=e=>{let{data:t,pageContext:l}=e;const c=t.allMarkdownRemark.nodes,{currentPage:u,pagesQuantity:m,markupData:f,lang:g,hashtag:h}=l;return(0,d.tZ)(a.Fragment,null,(0,d.tZ)(s.Z,{heightClass:"lg:h-99",titleBlockClassName:"w-full",title:f.blogByHashtagBannerTitle.toUpperCase(),borderBottom:!0},(0,d.tZ)("p",{className:"text-xl lg:text-3xl text-secondary-10 border border-solid border-secondary-10 rounded-full px-8 py-4 lg:px-10 lg:py-5"},"#",h)),(0,d.tZ)(r.Z,{className:"flex-col items-center p-6 md:p-12 bg-secondary-100 gap-14"},c?c.map((e=>(0,d.tZ)(o.Z,{theme:n.Q.light,key:e.id,post:e,markupData:f,lang:g}))):null,(0,d.tZ)(i.Z,{section:`blog/${h.split(" ").join("-").toLowerCase()}`,pagesQuantity:m,currentPage:u,nextPageTitle:l.pagination.next})))};const u=e=>{let{pageContext:{markupData:t,currentPage:l,site:a,lang:n,hashtag:s},location:r}=e;return(0,d.tZ)(c.Ag,{title:`${t.head} | ${s.toUpperCase()} | ${l}`,description:`${t.head} | ${t.bannerTitle}`,siteUrl:a.siteUrl,path:r.pathname,lang:n})}},8322:function(e,t,l){"use strict";l.d(t,{Q:function(){return a}});let a=function(e){return e.dark="dark",e.light="light",e}({})},4471:function(e,t,l){var a=l(7294);function n(e){return a.createElement("svg",e,[a.createElement("line",{width:"800",height:"8",stroke:"#f9f9f9",strokeWidth:"8",strokeDasharray:"8 8",x1:"0",x2:"100%",y1:"4",y2:"4",key:0}),a.createElement("line",{width:"800",height:"8",stroke:"#111111",strokeWidth:"8",strokeDasharray:"8 8",x1:"8",x2:"100%",y1:"4",y2:"4",key:1})])}n.defaultProps={height:"8"},e.exports=n,n.default=n}}]); -//# sourceMappingURL=component---src-pages-templates-blog-by-hashtag-tsx-56cadc2b340c057ace2f.js.map \ No newline at end of file +(self.webpackChunkcode_cave=self.webpackChunkcode_cave||[]).push([[899],{6488:function(e,t,l){var a=l(9720).w_;e.exports.p=function(e){return a({tag:"svg",attr:{viewBox:"0 0 16 16",fill:"currentColor"},child:[{tag:"path",attr:{fillRule:"evenodd",d:"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z",clipRule:"evenodd"}},{tag:"path",attr:{fillRule:"evenodd",d:"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z",clipRule:"evenodd"}}]})(e)}},1929:function(e,t,l){"use strict";l.d(t,{Z:function(){return u}});var a=l(7294),n=l(8032),s=l(4471),r=l.n(s),o=l(1164),i=l(917);var c=e=>{let{className:t}=e;return(0,i.tZ)("div",{className:`flex justify-center items-center h-full w-full ${t}`},(0,i.tZ)("svg",{"aria-hidden":"true",className:"w-8 h-8 mr-2 text-main-10 animate-spin dark:text-secondary-10 fill-main-100",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},(0,i.tZ)("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),(0,i.tZ)("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})))};var d=()=>{const{0:e,1:t}=(0,a.useState)(!1),n=(0,a.useRef)(!0),s=(0,a.useRef)(null);return(0,a.useEffect)((()=>{if(!n.current||!s.current||"undefined"==typeof window)return;n.current=!1;const e=new Worker(new URL(l.p+l.u(847),l.b),{type:void 0});e.onmessage=e=>{let{data:l}=e;"ready"===l&&t(!0)};const a=s.current;a.width=a.clientWidth,a.height=a.clientHeight;const r=a.transferControlToOffscreen();e.postMessage({canvas:r},[r]);const o=()=>{e.postMessage({width:a.clientWidth,height:a.clientHeight})};window.addEventListener("resize",o,{passive:!0});const i=t=>{t.preventDefault(),e.postMessage({wheel:t.deltaY})};a.addEventListener("wheel",i);const c=t=>{e.postMessage({x:t.movementX,y:t.movementY})};a.addEventListener("mousedown",(e=>{e.preventDefault(),window.addEventListener("mousemove",c,{passive:!0}),window.addEventListener("mouseup",(()=>window.removeEventListener("mousemove",c)),{once:!0,passive:!0})}));let d;return a.addEventListener("touchstart",(t=>{if(1!==t.touches.length)return;const l=t.touches[0];t.preventDefault();const a={x:l.screenX,y:l.screenY};d=t=>{const{newX:l,newY:n}=((t,l)=>{const a=t.touches[0];return e.postMessage({x:a.screenX-l.x,y:a.screenY-l.y}),{newX:a.screenX,newY:a.screenY}})(t,a);a.x=l,a.y=n},window.addEventListener("touchmove",d,{passive:!0}),window.addEventListener("touchend",(()=>{window.removeEventListener("touchmove",d)}),{passive:!0})}),{passive:!0}),()=>{window&&(window.removeEventListener("resize",o),window.removeEventListener("mousemove",c),window.removeEventListener("touchmove",d),a&&a.removeEventListener("wheel",i),e.terminate())}}),[]),(0,i.tZ)("div",{className:"h-full w-full relative"},(0,i.tZ)("canvas",{ref:s,className:"bg-main-100 h-91 w-full flex items-center justify-center cursor-pointer"}),e?null:(0,i.tZ)(c,{className:"absolute top-0 left-0 right-0 bottom-0 z-10"}))};var u=e=>{let{heightClass:t="min-h-91",title:l,className:s,borderBottom:c,borderTop:u,babylon:m,image:f,titleBlockClassName:g,children:h}=e;const{0:p,1:v}=(0,a.useState)("translate-y-full");return(0,a.useEffect)((()=>{v("translate-y-0")}),[]),(0,i.tZ)("div",{className:`w-full flex items-center bg-main-100 relative overflow-hidden ${t} ${s}`},u?(0,i.tZ)(r(),{className:"absolute top-0 left-0 right-0 w-full"}):null,(0,i.tZ)(o.Z,{className:"h-full flex flex-col lg:flex-row py-12 lg:py-0 items-center justify-between text-secondary-100 flex-grow gap-y-8"},(0,i.tZ)("div",{className:`flex flex-col overflow-hidden items-left h-full justify-center text-secondary-100 h-full w-full ${g||"lg:w-1/2"} bg-main-100`},(0,i.tZ)("h1",{className:"overflow-hidden w-full"},(0,i.tZ)("span",{className:`banner-title inline-block text-3xl lg:text-4xl w-full text-center lg:text-start transition-all duration-1000 font-light ${p}`},l))),m?(0,i.tZ)("div",{className:"w-[85%] lg:w-1/2 lg:h-full hidden md:flex -order-1 lg:order-none"},(0,i.tZ)(d,null)):null,f?(0,i.tZ)("div",{className:"w-[220px] lg:w-1/2 lg:h-full flex justify-center lg:justify-end items-center -order-1 lg:order-none"},(0,i.tZ)(n.G,{image:f,alt:"cover",className:"object-contain aspect-square"})):null,h?(0,i.tZ)("div",{className:"w-full lg:h-full flex justify-center lg:justify-start items-center"},h):null),c?(0,i.tZ)(r(),{className:"absolute bottom-0 left-0 right-0 w-full"}):null)}},1434:function(e,t,l){"use strict";var a=l(7462),n=l(8322),s=l(917);t.Z=e=>{const{theme:t,onClick:l,className:r,children:o,border:i,...c}=e,d=""+(t===n.Q.dark?"bg-main-100 text-secondary-100 border-secondary-100 hover:bg-main-70":"bg-secondary-100 text-main-100 border-main-100 hover:bg-secondary-30");return(0,s.tZ)("button",(0,a.Z)({onClick:l,className:`flex min-w-10 items-center justify-center rounded-lg border-solid ${i?"border":""} ${d} ${r}`},c),o)}},4568:function(e,t,l){"use strict";var a=l(4160),n=l(8322),s=l(1434),r=l(917);t.Z=e=>{let{section:t,pagesQuantity:l,currentPage:o,nextPageTitle:i,className:c}=e;const d=Array.from({length:l},((e,t)=>t+1)),u=o+1;return(0,r.tZ)("div",{className:`flex justify-center w-full gap-6 ${c}`},o1?d.map((e=>(0,r.tZ)(a.rU,{key:`pagination-link-${e}`,to:`/${t}/page/${e}`},(0,r.tZ)(s.Z,{theme:n.Q.light,border:e===o,"aria-label":"view page",className:"h-10 font-bold"},e)))):null))}},3793:function(e,t,l){"use strict";var a=l(4160),n=l(6488),s=l(9165),r=l(8322),o=l(917);t.Z=e=>{let{post:t,theme:l,className:i,markupData:c,lang:d}=e;const{date:u,title:m,text:f}=t.frontmatter,g=Math.floor(t.wordCount.words/200),h=g||1,p=l===r.Q.light?"text-main-100":"text-secondary-100",v=l===r.Q.light?"text-main-70":"text-secondary-70",w=l===r.Q.light?"hover:text-main-10":"hover:text-secondary-10";return(0,o.tZ)(a.rU,{to:`/blog/${t.id}`,className:`flex flex-col sm:flex-row w-full justify-center gap-5 md:gap-14 ${p} ${w} ${i}`,itemScope:!0,itemType:"https://schema.org/Article"},(0,o.tZ)("div",{className:"flex flex-col w-full max-w-[400px] gap-2.5"},(0,o.tZ)("p",{itemProp:"dateCreated",className:`text-lg ${v}`},u),(0,o.tZ)("h2",{itemProp:"headline",className:`text-3xl font-semibold ${p}`},m)),(0,o.tZ)("div",{className:"flex flex-col w-full max-w-[500px] gap-5"},(0,o.tZ)("p",{className:`font-normal text-base ${p}`,itemProp:"abstract"},f.split(" ").slice(0,70).join(" "),"..."),(0,o.tZ)("div",{className:"flex w-full items-center justify-between"},(0,o.tZ)("div",{className:"flex items-center gap-3 text-sm font-bold"},(0,o.tZ)("span",null,null==c?void 0:c.readPostLink),(0,o.tZ)(n.p,{size:14})),(0,o.tZ)("p",{className:`text-sm ${v}`},`${null==c?void 0:c.readingTimeTitle}: ~${h} ${null==c?void 0:c.readingTimeUnits}.`))),(0,o.tZ)(s.Lx,{itemProp:"copyrightHolder",lang:d}))}},5029:function(e,t,l){"use strict";l.r(t),l.d(t,{Head:function(){return u}});var a=l(7294),n=l(8322),s=l(1929),r=l(1164),o=l(3793),i=l(4568),c=l(9165),d=l(917);t.default=e=>{let{data:t,pageContext:l}=e;const c=t.allMarkdownRemark.nodes,{currentPage:u,pagesQuantity:m,markupData:f,lang:g,hashtag:h}=l;return(0,d.tZ)(a.Fragment,null,(0,d.tZ)(s.Z,{heightClass:"lg:h-99",titleBlockClassName:"w-full",title:f.blogByHashtagBannerTitle.toUpperCase(),borderBottom:!0},(0,d.tZ)("p",{className:"text-xl lg:text-3xl text-secondary-10 border border-solid border-secondary-10 rounded-full px-8 py-4 lg:px-10 lg:py-5"},"#",h)),(0,d.tZ)(r.Z,{className:"flex-col items-center p-6 md:p-12 bg-secondary-100 gap-14"},c?c.map((e=>(0,d.tZ)(o.Z,{theme:n.Q.light,key:e.id,post:e,markupData:f,lang:g}))):null,(0,d.tZ)(i.Z,{section:`blog/${h.split(" ").join("-").toLowerCase()}`,pagesQuantity:m,currentPage:u,nextPageTitle:l.pagination.next})))};const u=e=>{let{pageContext:{markupData:t,currentPage:l,site:a,lang:n,hashtag:s},location:r}=e;return(0,d.tZ)(c.Ag,{title:`${t.head} | ${s.toUpperCase()} | ${l}`,description:`${t.head} | ${t.bannerTitle}`,siteUrl:a.siteUrl,path:r.pathname,lang:n})}},8322:function(e,t,l){"use strict";l.d(t,{Q:function(){return a}});let a=function(e){return e.dark="dark",e.light="light",e}({})},4471:function(e,t,l){var a=l(7294);function n(e){return a.createElement("svg",e,[a.createElement("line",{width:"800",height:"8",stroke:"#f9f9f9",strokeWidth:"8",strokeDasharray:"8 8",x1:"0",x2:"100%",y1:"4",y2:"4",key:0}),a.createElement("line",{width:"800",height:"8",stroke:"#111111",strokeWidth:"8",strokeDasharray:"8 8",x1:"8",x2:"100%",y1:"4",y2:"4",key:1})])}n.defaultProps={height:"8"},e.exports=n,n.default=n}}]); +//# sourceMappingURL=component---src-pages-templates-blog-by-hashtag-tsx-615da2ad975c6c4424ae.js.map \ No newline at end of file diff --git a/component---src-pages-templates-blog-by-hashtag-tsx-56cadc2b340c057ace2f.js.map b/component---src-pages-templates-blog-by-hashtag-tsx-615da2ad975c6c4424ae.js.map similarity index 98% rename from component---src-pages-templates-blog-by-hashtag-tsx-56cadc2b340c057ace2f.js.map rename to component---src-pages-templates-blog-by-hashtag-tsx-615da2ad975c6c4424ae.js.map index 3725d443..a2c7a060 100644 --- a/component---src-pages-templates-blog-by-hashtag-tsx-56cadc2b340c057ace2f.js.map +++ b/component---src-pages-templates-blog-by-hashtag-tsx-615da2ad975c6c4424ae.js.map @@ -1 +1 @@ -{"version":3,"file":"component---src-pages-templates-blog-by-hashtag-tsx-56cadc2b340c057ace2f.js","mappings":"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","sources":["webpack://code-cave/./node_modules/@react-icons/all-files/bs/BsArrowUpRight.js","webpack://code-cave/./src/components/common/spinner.tsx","webpack://code-cave/./src/components/babylonjs/babylon.tsx","webpack://code-cave/./src/components/common/banner.tsx","webpack://code-cave/./src/components/common/button.tsx","webpack://code-cave/./src/components/common/pagination.tsx","webpack://code-cave/./src/components/posts/postPreview.tsx","webpack://code-cave/./src/pagesTemplates/blogByHashtag.tsx","webpack://code-cave/./src/types/common.type.ts","webpack://code-cave/./src/assets/common/border.svg"],"sourcesContent":["// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.BsArrowUpRight = function BsArrowUpRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z\",\"clipRule\":\"evenodd\"}},{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z\",\"clipRule\":\"evenodd\"}}]})(props);\n};\n","import React from \"react\";\n\nconst Spinner = ({ className }: { className?: string }) => {\n return (\n \n \n \n \n \n \n );\n};\n\nexport default Spinner;\n","import React, { useEffect, useRef, useState } from \"react\";\n\nimport Spinner from \"../common/spinner\";\n\nconst Babylon = () => {\n const [isBabylonReady, setIsBabylonReady] = useState(false);\n const isInitial = useRef(true);\n const canvasRef = useRef(null);\n\n useEffect(() => {\n if (\n !isInitial.current ||\n !canvasRef.current ||\n typeof window == \"undefined\"\n )\n return;\n\n isInitial.current = false;\n\n // WORKER instance creation\n const babylonWorker = new Worker(\n new URL(\"../../workers/babylon.worker.ts\", import.meta.url),\n {\n type: \"module\",\n }\n );\n babylonWorker.onmessage = ({ data }) => {\n if (data === \"ready\") setIsBabylonReady(true);\n };\n\n // OFFSCREEN canvas\n const canvas = canvasRef.current;\n canvas.width = canvas.clientWidth;\n canvas.height = canvas.clientHeight;\n\n const offscreenCanvas = canvas.transferControlToOffscreen();\n babylonWorker.postMessage({ canvas: offscreenCanvas }, [offscreenCanvas]);\n\n // RESIZE handler\n const onResizeHandler = () => {\n babylonWorker.postMessage({\n width: canvas.clientWidth,\n height: canvas.clientHeight,\n });\n };\n window.addEventListener(\"resize\", onResizeHandler, { passive: true });\n\n // WHEEL handler\n const onWheelHandler = (e: WheelEvent) => {\n e.preventDefault();\n babylonWorker.postMessage({ wheel: e.deltaY });\n };\n canvas.addEventListener(\"wheel\", onWheelHandler);\n\n // ROTATE mouse handler\n const onMouseMoveHandler = (e: MouseEvent) => {\n babylonWorker.postMessage({\n x: e.movementX,\n y: e.movementY,\n });\n };\n canvas.addEventListener(\"mousedown\", (e: MouseEvent) => {\n e.preventDefault();\n window.addEventListener(\"mousemove\", onMouseMoveHandler, {\n passive: true,\n });\n window.addEventListener(\n \"mouseup\",\n () => window.removeEventListener(\"mousemove\", onMouseMoveHandler),\n { once: true, passive: true }\n );\n });\n\n // ROTATE touch handler\n const nestedTouchMoveHandler = (\n e: TouchEvent,\n previousCoords: { x: number; y: number }\n ) => {\n const touch = e.touches[0];\n babylonWorker.postMessage({\n x: touch.screenX - previousCoords.x,\n y: touch.screenY - previousCoords.y,\n });\n\n return {\n newX: touch.screenX,\n newY: touch.screenY,\n };\n };\n let onTouchMoveHandler: (e: TouchEvent) => void;\n canvas.addEventListener(\n \"touchstart\",\n (e: TouchEvent) => {\n if (e.touches.length !== 1) return;\n\n const firstTouch = e.touches[0];\n\n e.preventDefault();\n const previousCoords = {\n x: firstTouch.screenX,\n y: firstTouch.screenY,\n };\n\n onTouchMoveHandler = (e: TouchEvent) => {\n const { newX, newY } = nestedTouchMoveHandler(e, previousCoords);\n previousCoords.x = newX;\n previousCoords.y = newY;\n };\n\n window.addEventListener(\"touchmove\", onTouchMoveHandler, {\n passive: true,\n });\n window.addEventListener(\n \"touchend\",\n () => {\n window.removeEventListener(\"touchmove\", onTouchMoveHandler);\n },\n { passive: true }\n );\n },\n { passive: true }\n );\n\n // UNMOUNT handler\n return () => {\n if (!window) return;\n\n window.removeEventListener(\"resize\", onResizeHandler);\n window.removeEventListener(\"mousemove\", onMouseMoveHandler);\n window.removeEventListener(\"touchmove\", onTouchMoveHandler);\n if (canvas) {\n canvas.removeEventListener(\"wheel\", onWheelHandler);\n }\n babylonWorker.terminate();\n };\n }, []);\n\n return (\n
\n \n {!isBabylonReady ? (\n \n ) : null}\n
\n );\n};\n\nexport default Babylon;\n","import React, { useEffect, useState } from \"react\";\nimport { GatsbyImage, IGatsbyImageData } from \"gatsby-plugin-image\";\n\nimport Border from \"../../assets/common/border.svg\";\n\nimport ContentContainer from \"./contentContainer\";\nimport Babylon from \"../babylonjs/babylon\";\n\n// interface IBannerProps {\n// heightClass?: string;\n// title: string;\n// className?: string;\n// borderBottom?: boolean;\n// borderTop?: boolean;\n// babylon?: boolean;\n// image?: IGatsbyImageData;\n// }\ntype TBannerCommonProps = {\n heightClass?: string;\n title: string;\n className?: string;\n borderBottom?: boolean;\n borderTop?: boolean;\n};\ntype TBannerConditionalProps =\n | {\n babylon?: boolean;\n image?: never;\n children?: never;\n titleBlockClassName?: never;\n }\n | {\n babylon?: never;\n image?: IGatsbyImageData;\n children?: never;\n titleBlockClassName?: never;\n }\n | {\n babylon?: never;\n image?: never;\n children?: React.ReactNode;\n titleBlockClassName?: string;\n };\ntype TBannerProps = TBannerCommonProps & TBannerConditionalProps;\n\nconst Banner = ({\n heightClass = \"min-h-91\",\n title,\n className,\n borderBottom,\n borderTop,\n babylon,\n image,\n titleBlockClassName,\n children,\n}: TBannerProps) => {\n const [textTranslate, setTextTranslate] = useState<\n \"translate-y-full\" | \"translate-y-0\"\n >(\"translate-y-full\");\n useEffect(() => {\n setTextTranslate(\"translate-y-0\");\n }, []);\n\n return (\n \n {borderTop ? (\n \n ) : null}\n \n \n

\n \n {title}\n \n

\n \n {babylon ? (\n \n ) : null}\n {image ? (\n
\n \n
\n ) : null}\n {children ? (\n
\n {children}\n
\n ) : null}\n \n {borderBottom ? (\n \n ) : null}\n \n );\n};\n\nexport default Banner;\n","import React from \"react\";\n\nimport { Theme } from \"../../types/common.type\";\n\ninterface IButtonProps extends React.ButtonHTMLAttributes {\n theme: Theme;\n onClick?: () => any;\n className?: string;\n border?: boolean;\n}\n\nconst Button = (props: React.PropsWithChildren) => {\n const { theme, onClick, className, children, border, ...attr } = props;\n\n const colorClasses = `${\n theme === Theme.dark\n ? \"bg-main-100 text-secondary-100 border-secondary-100 hover:bg-main-70\"\n : \"bg-secondary-100 text-main-100 border-main-100 hover:bg-secondary-30\"\n }`;\n\n return (\n \n {children}\n \n );\n};\n\nexport default Button;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { Theme } from \"../../types/common.type\";\n\nimport Button from \"./button\";\n\nconst Pagination = ({\n section,\n pagesQuantity,\n currentPage,\n nextPageTitle,\n className,\n}: {\n section: \"projects\" | `blog${string}`;\n pagesQuantity: number;\n currentPage: number;\n nextPageTitle?: string;\n className?: string;\n}) => {\n const pages = Array.from({ length: pagesQuantity }, (_, i) => i + 1);\n const nextPage = currentPage + 1;\n\n return (\n
\n {currentPage < pagesQuantity ? (\n \n \n {nextPageTitle ?? \"Next page\"}\n \n \n ) : null}\n\n \n
\n );\n};\n\nexport default Pagination;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { BsArrowUpRight } from \"@react-icons/all-files/bs/BsArrowUpRight\";\n\nimport { IPostPreviewQueryResult } from \"../../types/post.type\";\nimport { LocalBusinessMetadata } from \"../common/metadata\";\nimport { IBlogMarkupData } from \"../../types/commonMarkup.type\";\nimport { TLang, Theme } from \"../../types/common.type\";\n\nconst PostPreview = ({\n post,\n theme,\n className,\n markupData,\n lang,\n}: {\n post: IPostPreviewQueryResult;\n className?: string;\n theme: Theme;\n markupData?: IBlogMarkupData;\n lang: TLang;\n}) => {\n const { date, title, text } = post.frontmatter;\n\n const minutes = Math.floor(post.wordCount.words / 200);\n const readingTime = minutes ? minutes : 1;\n\n const fontColorClass100 =\n theme === Theme.light ? \"text-main-100\" : \"text-secondary-100\";\n const fontColorClass10 =\n theme === Theme.light ? \"text-main-10\" : \"text-secondary-10\";\n const fontColorHover =\n theme === Theme.light ? \"hover:text-main-10\" : \"hover:text-secondary-10\";\n\n return (\n \n
\n

\n {date}\n

\n \n {title}\n \n
\n
\n \n {text.split(\" \").slice(0, 70).join(\" \")}...\n

\n
\n
\n {markupData?.readPostLink}\n \n
\n

\n {`${markupData?.readingTimeTitle}: ~${readingTime} ${markupData?.readingTimeUnits}.`}\n

\n
\n
\n \n \n );\n};\n\nexport default PostPreview;\n","import React from \"react\";\nimport { HeadFC, HeadProps, PageProps, graphql } from \"gatsby\";\n\nimport { IBlogByHashtagPageContext, IBlogPageData } from \"../types/blog.type\";\nimport { Theme } from \"../types/common.type\";\n\nimport Banner from \"../components/common/banner\";\nimport ContentContainer from \"../components/common/contentContainer\";\nimport PostPreview from \"../components/posts/postPreview\";\nimport Pagination from \"../components/common/pagination\";\nimport { HeadSeo } from \"../components/common/metadata\";\n\nconst BlogByHashtag = ({\n data,\n pageContext,\n}: PageProps) => {\n const posts = data.allMarkdownRemark.nodes;\n const { currentPage, pagesQuantity, markupData, lang, hashtag } = pageContext;\n\n return (\n <>\n \n

\n #{hashtag}\n

\n \n \n {posts\n ? posts.map((post) => (\n \n ))\n : null}\n \n \n \n );\n};\n\nexport default BlogByHashtag;\n\nexport const Head: HeadFC = ({\n pageContext: { markupData, currentPage, site, lang, hashtag },\n location,\n}: HeadProps) => {\n return (\n \n );\n};\n\nexport const query = graphql`\n query ($skip: Int!, $limit: Int!, $lang: String, $hashtag: String) {\n allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"posts\" }, language: { eq: $lang } }\n frontmatter: { keywords: { in: [$hashtag] } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: $limit\n skip: $skip\n ) {\n nodes {\n id\n frontmatter {\n date(formatString: \"DD MMM YYYY\", locale: $lang)\n title\n text\n cover {\n childImageSharp {\n gatsbyImageData(\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n width: 600\n )\n }\n }\n }\n wordCount {\n words\n }\n }\n }\n }\n`;\n","export interface ILang {\n lang: TLang;\n}\n\nexport type TLang = \"en\" | \"ru\";\n\nexport type TLinks = \"services\" | \"workflow\" | \"projects\" | \"blog\";\n\nexport interface IBasePageContext extends ILang {\n site: ISiteMetadata;\n}\n\nexport interface IMdQueryResult {\n allMarkdownRemark: {\n nodes: T[];\n };\n}\n\nexport interface ISiteMetadata {\n title: string;\n description: string;\n siteUrl: string;\n image: string;\n analyticsId: string;\n}\n\nexport enum Theme {\n dark = \"dark\",\n light = \"light\",\n}\n","var React = require('react');\n\nfunction Border (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"line\",{\"width\":\"800\",\"height\":\"8\",\"stroke\":\"#f9f9f9\",\"strokeWidth\":\"8\",\"strokeDasharray\":\"8 8\",\"x1\":\"0\",\"x2\":\"100%\",\"y1\":\"4\",\"y2\":\"4\",\"key\":0}),React.createElement(\"line\",{\"width\":\"800\",\"height\":\"8\",\"stroke\":\"#111111\",\"strokeWidth\":\"8\",\"strokeDasharray\":\"8 8\",\"x1\":\"8\",\"x2\":\"100%\",\"y1\":\"4\",\"y2\":\"4\",\"key\":1})]);\n}\n\nBorder.defaultProps = {\"height\":\"8\"};\n\nmodule.exports = Border;\n\nBorder.default = Border;\n"],"names":["GenIcon","module","exports","props","_ref","className","___EmotionJSX","viewBox","fill","xmlns","d","Babylon","isBabylonReady","setIsBabylonReady","useState","isInitial","useRef","canvasRef","useEffect","current","window","babylonWorker","Worker","URL","type","onmessage","data","canvas","width","clientWidth","height","clientHeight","offscreenCanvas","transferControlToOffscreen","postMessage","onResizeHandler","addEventListener","passive","onWheelHandler","e","preventDefault","wheel","deltaY","onMouseMoveHandler","x","movementX","y","movementY","removeEventListener","once","onTouchMoveHandler","touches","length","firstTouch","previousCoords","screenX","screenY","newX","newY","nestedTouchMoveHandler","touch","terminate","ref","Spinner","heightClass","title","borderBottom","borderTop","babylon","image","titleBlockClassName","children","textTranslate","setTextTranslate","Border","ContentContainer","GatsbyImage","alt","theme","onClick","border","attr","colorClasses","Theme","dark","_extends","section","pagesQuantity","currentPage","nextPageTitle","pages","Array","from","_","i","nextPage","Link","to","Button","light","map","page","key","post","markupData","lang","date","text","frontmatter","minutes","Math","floor","wordCount","words","readingTime","fontColorClass100","fontColorClass10","fontColorHover","id","itemScope","itemType","itemProp","split","slice","join","readPostLink","BsArrowUpRight","size","readingTimeTitle","readingTimeUnits","LocalBusinessMetadata","pageContext","posts","allMarkdownRemark","nodes","hashtag","React","Banner","blogByHashtagBannerTitle","toUpperCase","PostPreview","Pagination","toLowerCase","pagination","next","Head","_ref2","site","location","HeadSeo","head","description","bannerTitle","siteUrl","path","pathname","createElement","defaultProps","default"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"component---src-pages-templates-blog-by-hashtag-tsx-615da2ad975c6c4424ae.js","mappings":"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","sources":["webpack://code-cave/./node_modules/@react-icons/all-files/bs/BsArrowUpRight.js","webpack://code-cave/./src/components/common/spinner.tsx","webpack://code-cave/./src/components/babylonjs/babylon.tsx","webpack://code-cave/./src/components/common/banner.tsx","webpack://code-cave/./src/components/common/button.tsx","webpack://code-cave/./src/components/common/pagination.tsx","webpack://code-cave/./src/components/posts/postPreview.tsx","webpack://code-cave/./src/pagesTemplates/blogByHashtag.tsx","webpack://code-cave/./src/types/common.type.ts","webpack://code-cave/./src/assets/common/border.svg"],"sourcesContent":["// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.BsArrowUpRight = function BsArrowUpRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z\",\"clipRule\":\"evenodd\"}},{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z\",\"clipRule\":\"evenodd\"}}]})(props);\n};\n","import React from \"react\";\n\nconst Spinner = ({ className }: { className?: string }) => {\n return (\n \n \n \n \n \n \n );\n};\n\nexport default Spinner;\n","import React, { useEffect, useRef, useState } from \"react\";\n\nimport Spinner from \"../common/spinner\";\n\nconst Babylon = () => {\n const [isBabylonReady, setIsBabylonReady] = useState(false);\n const isInitial = useRef(true);\n const canvasRef = useRef(null);\n\n useEffect(() => {\n if (\n !isInitial.current ||\n !canvasRef.current ||\n typeof window == \"undefined\"\n )\n return;\n\n isInitial.current = false;\n\n // WORKER instance creation\n const babylonWorker = new Worker(\n new URL(\"../../workers/babylon.worker.ts\", import.meta.url),\n {\n type: \"module\",\n }\n );\n babylonWorker.onmessage = ({ data }) => {\n if (data === \"ready\") setIsBabylonReady(true);\n };\n\n // OFFSCREEN canvas\n const canvas = canvasRef.current;\n canvas.width = canvas.clientWidth;\n canvas.height = canvas.clientHeight;\n\n const offscreenCanvas = canvas.transferControlToOffscreen();\n babylonWorker.postMessage({ canvas: offscreenCanvas }, [offscreenCanvas]);\n\n // RESIZE handler\n const onResizeHandler = () => {\n babylonWorker.postMessage({\n width: canvas.clientWidth,\n height: canvas.clientHeight,\n });\n };\n window.addEventListener(\"resize\", onResizeHandler, { passive: true });\n\n // WHEEL handler\n const onWheelHandler = (e: WheelEvent) => {\n e.preventDefault();\n babylonWorker.postMessage({ wheel: e.deltaY });\n };\n canvas.addEventListener(\"wheel\", onWheelHandler);\n\n // ROTATE mouse handler\n const onMouseMoveHandler = (e: MouseEvent) => {\n babylonWorker.postMessage({\n x: e.movementX,\n y: e.movementY,\n });\n };\n canvas.addEventListener(\"mousedown\", (e: MouseEvent) => {\n e.preventDefault();\n window.addEventListener(\"mousemove\", onMouseMoveHandler, {\n passive: true,\n });\n window.addEventListener(\n \"mouseup\",\n () => window.removeEventListener(\"mousemove\", onMouseMoveHandler),\n { once: true, passive: true }\n );\n });\n\n // ROTATE touch handler\n const nestedTouchMoveHandler = (\n e: TouchEvent,\n previousCoords: { x: number; y: number }\n ) => {\n const touch = e.touches[0];\n babylonWorker.postMessage({\n x: touch.screenX - previousCoords.x,\n y: touch.screenY - previousCoords.y,\n });\n\n return {\n newX: touch.screenX,\n newY: touch.screenY,\n };\n };\n let onTouchMoveHandler: (e: TouchEvent) => void;\n canvas.addEventListener(\n \"touchstart\",\n (e: TouchEvent) => {\n if (e.touches.length !== 1) return;\n\n const firstTouch = e.touches[0];\n\n e.preventDefault();\n const previousCoords = {\n x: firstTouch.screenX,\n y: firstTouch.screenY,\n };\n\n onTouchMoveHandler = (e: TouchEvent) => {\n const { newX, newY } = nestedTouchMoveHandler(e, previousCoords);\n previousCoords.x = newX;\n previousCoords.y = newY;\n };\n\n window.addEventListener(\"touchmove\", onTouchMoveHandler, {\n passive: true,\n });\n window.addEventListener(\n \"touchend\",\n () => {\n window.removeEventListener(\"touchmove\", onTouchMoveHandler);\n },\n { passive: true }\n );\n },\n { passive: true }\n );\n\n // UNMOUNT handler\n return () => {\n if (!window) return;\n\n window.removeEventListener(\"resize\", onResizeHandler);\n window.removeEventListener(\"mousemove\", onMouseMoveHandler);\n window.removeEventListener(\"touchmove\", onTouchMoveHandler);\n if (canvas) {\n canvas.removeEventListener(\"wheel\", onWheelHandler);\n }\n babylonWorker.terminate();\n };\n }, []);\n\n return (\n
\n \n {!isBabylonReady ? (\n \n ) : null}\n
\n );\n};\n\nexport default Babylon;\n","import React, { useEffect, useState } from \"react\";\nimport { GatsbyImage, IGatsbyImageData } from \"gatsby-plugin-image\";\n\nimport Border from \"../../assets/common/border.svg\";\n\nimport ContentContainer from \"./contentContainer\";\nimport Babylon from \"../babylonjs/babylon\";\n\n// interface IBannerProps {\n// heightClass?: string;\n// title: string;\n// className?: string;\n// borderBottom?: boolean;\n// borderTop?: boolean;\n// babylon?: boolean;\n// image?: IGatsbyImageData;\n// }\ntype TBannerCommonProps = {\n heightClass?: string;\n title: string;\n className?: string;\n borderBottom?: boolean;\n borderTop?: boolean;\n};\ntype TBannerConditionalProps =\n | {\n babylon?: boolean;\n image?: never;\n children?: never;\n titleBlockClassName?: never;\n }\n | {\n babylon?: never;\n image?: IGatsbyImageData;\n children?: never;\n titleBlockClassName?: never;\n }\n | {\n babylon?: never;\n image?: never;\n children?: React.ReactNode;\n titleBlockClassName?: string;\n };\ntype TBannerProps = TBannerCommonProps & TBannerConditionalProps;\n\nconst Banner = ({\n heightClass = \"min-h-91\",\n title,\n className,\n borderBottom,\n borderTop,\n babylon,\n image,\n titleBlockClassName,\n children,\n}: TBannerProps) => {\n const [textTranslate, setTextTranslate] = useState<\n \"translate-y-full\" | \"translate-y-0\"\n >(\"translate-y-full\");\n useEffect(() => {\n setTextTranslate(\"translate-y-0\");\n }, []);\n\n return (\n \n {borderTop ? (\n \n ) : null}\n \n \n

\n \n {title}\n \n

\n \n {babylon ? (\n \n ) : null}\n {image ? (\n
\n \n
\n ) : null}\n {children ? (\n
\n {children}\n
\n ) : null}\n \n {borderBottom ? (\n \n ) : null}\n \n );\n};\n\nexport default Banner;\n","import React from \"react\";\n\nimport { Theme } from \"../../types/common.type\";\n\ninterface IButtonProps extends React.ButtonHTMLAttributes {\n theme: Theme;\n onClick?: () => any;\n className?: string;\n border?: boolean;\n}\n\nconst Button = (props: React.PropsWithChildren) => {\n const { theme, onClick, className, children, border, ...attr } = props;\n\n const colorClasses = `${\n theme === Theme.dark\n ? \"bg-main-100 text-secondary-100 border-secondary-100 hover:bg-main-70\"\n : \"bg-secondary-100 text-main-100 border-main-100 hover:bg-secondary-30\"\n }`;\n\n return (\n \n {children}\n \n );\n};\n\nexport default Button;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { Theme } from \"../../types/common.type\";\n\nimport Button from \"./button\";\n\nconst Pagination = ({\n section,\n pagesQuantity,\n currentPage,\n nextPageTitle,\n className,\n}: {\n section: \"projects\" | `blog${string}`;\n pagesQuantity: number;\n currentPage: number;\n nextPageTitle?: string;\n className?: string;\n}) => {\n const pages = Array.from({ length: pagesQuantity }, (_, i) => i + 1);\n const nextPage = currentPage + 1;\n\n return (\n
\n {currentPage < pagesQuantity ? (\n \n \n {nextPageTitle ?? \"Next page\"}\n \n \n ) : null}\n\n \n
\n );\n};\n\nexport default Pagination;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { BsArrowUpRight } from \"@react-icons/all-files/bs/BsArrowUpRight\";\n\nimport { IPostPreviewQueryResult } from \"../../types/post.type\";\nimport { LocalBusinessMetadata } from \"../common/metadata\";\nimport { IBlogMarkupData } from \"../../types/commonMarkup.type\";\nimport { TLang, Theme } from \"../../types/common.type\";\n\nconst PostPreview = ({\n post,\n theme,\n className,\n markupData,\n lang,\n}: {\n post: IPostPreviewQueryResult;\n className?: string;\n theme: Theme;\n markupData?: IBlogMarkupData;\n lang: TLang;\n}) => {\n const { date, title, text } = post.frontmatter;\n\n const minutes = Math.floor(post.wordCount.words / 200);\n const readingTime = minutes ? minutes : 1;\n\n const fontColorClass100 =\n theme === Theme.light ? \"text-main-100\" : \"text-secondary-100\";\n const fontColorClass70 =\n theme === Theme.light ? \"text-main-70\" : \"text-secondary-70\";\n const fontColorHover =\n theme === Theme.light ? \"hover:text-main-10\" : \"hover:text-secondary-10\";\n\n return (\n \n
\n

\n {date}\n

\n \n {title}\n \n
\n
\n \n {text.split(\" \").slice(0, 70).join(\" \")}...\n

\n
\n
\n {markupData?.readPostLink}\n \n
\n

\n {`${markupData?.readingTimeTitle}: ~${readingTime} ${markupData?.readingTimeUnits}.`}\n

\n
\n
\n \n \n );\n};\n\nexport default PostPreview;\n","import React from \"react\";\nimport { HeadFC, HeadProps, PageProps, graphql } from \"gatsby\";\n\nimport { IBlogByHashtagPageContext, IBlogPageData } from \"../types/blog.type\";\nimport { Theme } from \"../types/common.type\";\n\nimport Banner from \"../components/common/banner\";\nimport ContentContainer from \"../components/common/contentContainer\";\nimport PostPreview from \"../components/posts/postPreview\";\nimport Pagination from \"../components/common/pagination\";\nimport { HeadSeo } from \"../components/common/metadata\";\n\nconst BlogByHashtag = ({\n data,\n pageContext,\n}: PageProps) => {\n const posts = data.allMarkdownRemark.nodes;\n const { currentPage, pagesQuantity, markupData, lang, hashtag } = pageContext;\n\n return (\n <>\n \n

\n #{hashtag}\n

\n \n \n {posts\n ? posts.map((post) => (\n \n ))\n : null}\n \n \n \n );\n};\n\nexport default BlogByHashtag;\n\nexport const Head: HeadFC = ({\n pageContext: { markupData, currentPage, site, lang, hashtag },\n location,\n}: HeadProps) => {\n return (\n \n );\n};\n\nexport const query = graphql`\n query ($skip: Int!, $limit: Int!, $lang: String, $hashtag: String) {\n allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"posts\" }, language: { eq: $lang } }\n frontmatter: { keywords: { in: [$hashtag] } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: $limit\n skip: $skip\n ) {\n nodes {\n id\n frontmatter {\n date(formatString: \"DD MMM YYYY\", locale: $lang)\n title\n text\n cover {\n childImageSharp {\n gatsbyImageData(\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n width: 600\n )\n }\n }\n }\n wordCount {\n words\n }\n }\n }\n }\n`;\n","export interface ILang {\n lang: TLang;\n}\n\nexport type TLang = \"en\" | \"ru\";\n\nexport type TLinks = \"services\" | \"workflow\" | \"projects\" | \"blog\";\n\nexport interface IBasePageContext extends ILang {\n site: ISiteMetadata;\n}\n\nexport interface IMdQueryResult {\n allMarkdownRemark: {\n nodes: T[];\n };\n}\n\nexport interface ISiteMetadata {\n title: string;\n description: string;\n siteUrl: string;\n image: string;\n analyticsId: string;\n}\n\nexport enum Theme {\n dark = \"dark\",\n light = \"light\",\n}\n","var React = require('react');\n\nfunction Border (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"line\",{\"width\":\"800\",\"height\":\"8\",\"stroke\":\"#f9f9f9\",\"strokeWidth\":\"8\",\"strokeDasharray\":\"8 8\",\"x1\":\"0\",\"x2\":\"100%\",\"y1\":\"4\",\"y2\":\"4\",\"key\":0}),React.createElement(\"line\",{\"width\":\"800\",\"height\":\"8\",\"stroke\":\"#111111\",\"strokeWidth\":\"8\",\"strokeDasharray\":\"8 8\",\"x1\":\"8\",\"x2\":\"100%\",\"y1\":\"4\",\"y2\":\"4\",\"key\":1})]);\n}\n\nBorder.defaultProps = {\"height\":\"8\"};\n\nmodule.exports = Border;\n\nBorder.default = Border;\n"],"names":["GenIcon","module","exports","props","_ref","className","___EmotionJSX","viewBox","fill","xmlns","d","Babylon","isBabylonReady","setIsBabylonReady","useState","isInitial","useRef","canvasRef","useEffect","current","window","babylonWorker","Worker","URL","type","onmessage","data","canvas","width","clientWidth","height","clientHeight","offscreenCanvas","transferControlToOffscreen","postMessage","onResizeHandler","addEventListener","passive","onWheelHandler","e","preventDefault","wheel","deltaY","onMouseMoveHandler","x","movementX","y","movementY","removeEventListener","once","onTouchMoveHandler","touches","length","firstTouch","previousCoords","screenX","screenY","newX","newY","nestedTouchMoveHandler","touch","terminate","ref","Spinner","heightClass","title","borderBottom","borderTop","babylon","image","titleBlockClassName","children","textTranslate","setTextTranslate","Border","ContentContainer","GatsbyImage","alt","theme","onClick","border","attr","colorClasses","Theme","dark","_extends","section","pagesQuantity","currentPage","nextPageTitle","pages","Array","from","_","i","nextPage","Link","to","Button","light","map","page","key","post","markupData","lang","date","text","frontmatter","minutes","Math","floor","wordCount","words","readingTime","fontColorClass100","fontColorClass70","fontColorHover","id","itemScope","itemType","itemProp","split","slice","join","readPostLink","BsArrowUpRight","size","readingTimeTitle","readingTimeUnits","LocalBusinessMetadata","pageContext","posts","allMarkdownRemark","nodes","hashtag","React","Banner","blogByHashtagBannerTitle","toUpperCase","PostPreview","Pagination","toLowerCase","pagination","next","Head","_ref2","site","location","HeadSeo","head","description","bannerTitle","siteUrl","path","pathname","createElement","defaultProps","default"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-templates-blog-tsx-c959d60261c8f487ab71.js b/component---src-pages-templates-blog-tsx-b708ccb3ab38b62e1d6a.js similarity index 97% rename from component---src-pages-templates-blog-tsx-c959d60261c8f487ab71.js rename to component---src-pages-templates-blog-tsx-b708ccb3ab38b62e1d6a.js index 46cefcef..2dead63d 100644 --- a/component---src-pages-templates-blog-tsx-c959d60261c8f487ab71.js +++ b/component---src-pages-templates-blog-tsx-b708ccb3ab38b62e1d6a.js @@ -1,2 +1,2 @@ -(self.webpackChunkcode_cave=self.webpackChunkcode_cave||[]).push([[926],{6488:function(e,t,n){var l=n(9720).w_;e.exports.p=function(e){return l({tag:"svg",attr:{viewBox:"0 0 16 16",fill:"currentColor"},child:[{tag:"path",attr:{fillRule:"evenodd",d:"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z",clipRule:"evenodd"}},{tag:"path",attr:{fillRule:"evenodd",d:"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z",clipRule:"evenodd"}}]})(e)}},1929:function(e,t,n){"use strict";n.d(t,{Z:function(){return d}});var l=n(7294),a=n(8032),r=n(4471),s=n.n(r),i=n(1164),o=n(917);var c=e=>{let{className:t}=e;return(0,o.tZ)("div",{className:`flex justify-center items-center h-full w-full ${t}`},(0,o.tZ)("svg",{"aria-hidden":"true",className:"w-8 h-8 mr-2 text-main-10 animate-spin dark:text-secondary-10 fill-main-100",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},(0,o.tZ)("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),(0,o.tZ)("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})))};var u=()=>{const{0:e,1:t}=(0,l.useState)(!1),a=(0,l.useRef)(!0),r=(0,l.useRef)(null);return(0,l.useEffect)((()=>{if(!a.current||!r.current||"undefined"==typeof window)return;a.current=!1;const e=new Worker(new URL(n.p+n.u(847),n.b),{type:void 0});e.onmessage=e=>{let{data:n}=e;"ready"===n&&t(!0)};const l=r.current;l.width=l.clientWidth,l.height=l.clientHeight;const s=l.transferControlToOffscreen();e.postMessage({canvas:s},[s]);const i=()=>{e.postMessage({width:l.clientWidth,height:l.clientHeight})};window.addEventListener("resize",i,{passive:!0});const o=t=>{t.preventDefault(),e.postMessage({wheel:t.deltaY})};l.addEventListener("wheel",o);const c=t=>{e.postMessage({x:t.movementX,y:t.movementY})};l.addEventListener("mousedown",(e=>{e.preventDefault(),window.addEventListener("mousemove",c,{passive:!0}),window.addEventListener("mouseup",(()=>window.removeEventListener("mousemove",c)),{once:!0,passive:!0})}));let u;return l.addEventListener("touchstart",(t=>{if(1!==t.touches.length)return;const n=t.touches[0];t.preventDefault();const l={x:n.screenX,y:n.screenY};u=t=>{const{newX:n,newY:a}=((t,n)=>{const l=t.touches[0];return e.postMessage({x:l.screenX-n.x,y:l.screenY-n.y}),{newX:l.screenX,newY:l.screenY}})(t,l);l.x=n,l.y=a},window.addEventListener("touchmove",u,{passive:!0}),window.addEventListener("touchend",(()=>{window.removeEventListener("touchmove",u)}),{passive:!0})}),{passive:!0}),()=>{window&&(window.removeEventListener("resize",i),window.removeEventListener("mousemove",c),window.removeEventListener("touchmove",u),l&&l.removeEventListener("wheel",o),e.terminate())}}),[]),(0,o.tZ)("div",{className:"h-full w-full relative"},(0,o.tZ)("canvas",{ref:r,className:"bg-main-100 h-91 w-full flex items-center justify-center cursor-pointer"}),e?null:(0,o.tZ)(c,{className:"absolute top-0 left-0 right-0 bottom-0 z-10"}))};var d=e=>{let{heightClass:t="min-h-91",title:n,className:r,borderBottom:c,borderTop:d,babylon:m,image:f,titleBlockClassName:g,children:h}=e;const{0:p,1:v}=(0,l.useState)("translate-y-full");return(0,l.useEffect)((()=>{v("translate-y-0")}),[]),(0,o.tZ)("div",{className:`w-full flex items-center bg-main-100 relative overflow-hidden ${t} ${r}`},d?(0,o.tZ)(s(),{className:"absolute top-0 left-0 right-0 w-full"}):null,(0,o.tZ)(i.Z,{className:"h-full flex flex-col lg:flex-row py-12 lg:py-0 items-center justify-between text-secondary-100 flex-grow gap-y-8"},(0,o.tZ)("div",{className:`flex flex-col overflow-hidden items-left h-full justify-center text-secondary-100 h-full w-full ${g||"lg:w-1/2"} bg-main-100`},(0,o.tZ)("h1",{className:"overflow-hidden w-full"},(0,o.tZ)("span",{className:`banner-title inline-block text-3xl lg:text-4xl w-full text-center lg:text-start transition-all duration-1000 font-light ${p}`},n))),m?(0,o.tZ)("div",{className:"w-[85%] lg:w-1/2 lg:h-full hidden md:flex -order-1 lg:order-none"},(0,o.tZ)(u,null)):null,f?(0,o.tZ)("div",{className:"w-[220px] lg:w-1/2 lg:h-full flex justify-center lg:justify-end items-center -order-1 lg:order-none"},(0,o.tZ)(a.G,{image:f,alt:"cover",className:"object-contain aspect-square"})):null,h?(0,o.tZ)("div",{className:"w-full lg:h-full flex justify-center lg:justify-start items-center"},h):null),c?(0,o.tZ)(s(),{className:"absolute bottom-0 left-0 right-0 w-full"}):null)}},1434:function(e,t,n){"use strict";var l=n(7462),a=n(8322),r=n(917);t.Z=e=>{const{theme:t,onClick:n,className:s,children:i,border:o,...c}=e,u=""+(t===a.Q.dark?"bg-main-100 text-secondary-100 border-secondary-100 hover:bg-main-70":"bg-secondary-100 text-main-100 border-main-100 hover:bg-secondary-30");return(0,r.tZ)("button",(0,l.Z)({onClick:n,className:`flex min-w-10 items-center justify-center rounded-lg border-solid ${o?"border":""} ${u} ${s}`},c),i)}},4568:function(e,t,n){"use strict";var l=n(4160),a=n(8322),r=n(1434),s=n(917);t.Z=e=>{let{section:t,pagesQuantity:n,currentPage:i,nextPageTitle:o,className:c}=e;const u=Array.from({length:n},((e,t)=>t+1)),d=i+1;return(0,s.tZ)("div",{className:`flex justify-center w-full gap-6 ${c}`},i1?u.map((e=>(0,s.tZ)(l.rU,{key:`pagination-link-${e}`,to:`/${t}/page/${e}`},(0,s.tZ)(r.Z,{theme:a.Q.light,border:e===i,"aria-label":"view page",className:"h-10 font-bold"},e)))):null))}},3793:function(e,t,n){"use strict";var l=n(4160),a=n(6488),r=n(9165),s=n(8322),i=n(917);t.Z=e=>{let{post:t,theme:n,className:o,markupData:c,lang:u}=e;const{date:d,title:m,text:f}=t.frontmatter,g=Math.floor(t.wordCount.words/200),h=g||1,p=n===s.Q.light?"text-main-100":"text-secondary-100",v=n===s.Q.light?"text-main-10":"text-secondary-10",w=n===s.Q.light?"hover:text-main-10":"hover:text-secondary-10";return(0,i.tZ)(l.rU,{to:`/blog/${t.id}`,className:`flex flex-col sm:flex-row w-full justify-center gap-5 md:gap-14 ${p} ${w} ${o}`,itemScope:!0,itemType:"https://schema.org/Article"},(0,i.tZ)("div",{className:"flex flex-col w-full max-w-[400px] gap-2.5"},(0,i.tZ)("p",{itemProp:"dateCreated",className:`text-lg ${v}`},d),(0,i.tZ)("h3",{itemProp:"headline",className:`text-3xl font-semibold ${p}`},m)),(0,i.tZ)("div",{className:"flex flex-col w-full max-w-[500px] gap-5"},(0,i.tZ)("p",{className:`font-normal text-base ${p}`,itemProp:"abstract"},f.split(" ").slice(0,70).join(" "),"..."),(0,i.tZ)("div",{className:"flex w-full items-center justify-between"},(0,i.tZ)("div",{className:"flex items-center gap-3 text-sm font-bold"},(0,i.tZ)("span",null,null==c?void 0:c.readPostLink),(0,i.tZ)(a.p,{size:14})),(0,i.tZ)("p",{className:`text-sm ${v}`},`${null==c?void 0:c.readingTimeTitle}: ~${h} ${null==c?void 0:c.readingTimeUnits}.`))),(0,i.tZ)(r.Lx,{itemProp:"copyrightHolder",lang:u}))}},6906:function(e,t,n){"use strict";n.r(t),n.d(t,{Head:function(){return m}});var l=n(7294),a=n(8032),r=n(8322),s=n(1929),i=n(1164),o=n(3793),c=n(4568),u=n(9165),d=n(917);t.default=e=>{let{data:t,pageContext:n}=e;const u=t.allMarkdownRemark.nodes,{currentPage:m,pagesQuantity:f,markupData:g,lang:h}=n,p=(0,a.c)(g.image);return(0,d.tZ)(l.Fragment,null,(0,d.tZ)(s.Z,{heightClass:"lg:h-99",title:g.bannerTitle.toUpperCase(),image:p,borderBottom:!0}),(0,d.tZ)(i.Z,{className:"flex-col items-center p-6 md:p-12 bg-secondary-100 gap-14"},u?u.map((e=>(0,d.tZ)(o.Z,{theme:r.Q.light,key:e.id,post:e,markupData:g,lang:h}))):null,(0,d.tZ)(c.Z,{section:"blog",pagesQuantity:f,currentPage:m,nextPageTitle:n.pagination.next})))};const m=e=>{let{pageContext:{markupData:t,currentPage:n,site:l,lang:a},location:r}=e;return(0,d.tZ)(u.Ag,{title:`${t.head} | ${t.bannerTitle.toUpperCase()} | ${n}`,description:`${t.head} | ${t.bannerTitle}`,siteUrl:l.siteUrl,path:r.pathname,lang:a})}},8322:function(e,t,n){"use strict";n.d(t,{Q:function(){return l}});let l=function(e){return e.dark="dark",e.light="light",e}({})},4471:function(e,t,n){var l=n(7294);function a(e){return l.createElement("svg",e,[l.createElement("line",{width:"800",height:"8",stroke:"#f9f9f9",strokeWidth:"8",strokeDasharray:"8 8",x1:"0",x2:"100%",y1:"4",y2:"4",key:0}),l.createElement("line",{width:"800",height:"8",stroke:"#111111",strokeWidth:"8",strokeDasharray:"8 8",x1:"8",x2:"100%",y1:"4",y2:"4",key:1})])}a.defaultProps={height:"8"},e.exports=a,a.default=a}}]); -//# sourceMappingURL=component---src-pages-templates-blog-tsx-c959d60261c8f487ab71.js.map \ No newline at end of file +(self.webpackChunkcode_cave=self.webpackChunkcode_cave||[]).push([[926],{6488:function(e,t,n){var l=n(9720).w_;e.exports.p=function(e){return l({tag:"svg",attr:{viewBox:"0 0 16 16",fill:"currentColor"},child:[{tag:"path",attr:{fillRule:"evenodd",d:"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z",clipRule:"evenodd"}},{tag:"path",attr:{fillRule:"evenodd",d:"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z",clipRule:"evenodd"}}]})(e)}},1929:function(e,t,n){"use strict";n.d(t,{Z:function(){return d}});var l=n(7294),a=n(8032),r=n(4471),s=n.n(r),i=n(1164),o=n(917);var c=e=>{let{className:t}=e;return(0,o.tZ)("div",{className:`flex justify-center items-center h-full w-full ${t}`},(0,o.tZ)("svg",{"aria-hidden":"true",className:"w-8 h-8 mr-2 text-main-10 animate-spin dark:text-secondary-10 fill-main-100",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg"},(0,o.tZ)("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),(0,o.tZ)("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})))};var u=()=>{const{0:e,1:t}=(0,l.useState)(!1),a=(0,l.useRef)(!0),r=(0,l.useRef)(null);return(0,l.useEffect)((()=>{if(!a.current||!r.current||"undefined"==typeof window)return;a.current=!1;const e=new Worker(new URL(n.p+n.u(847),n.b),{type:void 0});e.onmessage=e=>{let{data:n}=e;"ready"===n&&t(!0)};const l=r.current;l.width=l.clientWidth,l.height=l.clientHeight;const s=l.transferControlToOffscreen();e.postMessage({canvas:s},[s]);const i=()=>{e.postMessage({width:l.clientWidth,height:l.clientHeight})};window.addEventListener("resize",i,{passive:!0});const o=t=>{t.preventDefault(),e.postMessage({wheel:t.deltaY})};l.addEventListener("wheel",o);const c=t=>{e.postMessage({x:t.movementX,y:t.movementY})};l.addEventListener("mousedown",(e=>{e.preventDefault(),window.addEventListener("mousemove",c,{passive:!0}),window.addEventListener("mouseup",(()=>window.removeEventListener("mousemove",c)),{once:!0,passive:!0})}));let u;return l.addEventListener("touchstart",(t=>{if(1!==t.touches.length)return;const n=t.touches[0];t.preventDefault();const l={x:n.screenX,y:n.screenY};u=t=>{const{newX:n,newY:a}=((t,n)=>{const l=t.touches[0];return e.postMessage({x:l.screenX-n.x,y:l.screenY-n.y}),{newX:l.screenX,newY:l.screenY}})(t,l);l.x=n,l.y=a},window.addEventListener("touchmove",u,{passive:!0}),window.addEventListener("touchend",(()=>{window.removeEventListener("touchmove",u)}),{passive:!0})}),{passive:!0}),()=>{window&&(window.removeEventListener("resize",i),window.removeEventListener("mousemove",c),window.removeEventListener("touchmove",u),l&&l.removeEventListener("wheel",o),e.terminate())}}),[]),(0,o.tZ)("div",{className:"h-full w-full relative"},(0,o.tZ)("canvas",{ref:r,className:"bg-main-100 h-91 w-full flex items-center justify-center cursor-pointer"}),e?null:(0,o.tZ)(c,{className:"absolute top-0 left-0 right-0 bottom-0 z-10"}))};var d=e=>{let{heightClass:t="min-h-91",title:n,className:r,borderBottom:c,borderTop:d,babylon:m,image:f,titleBlockClassName:g,children:h}=e;const{0:p,1:v}=(0,l.useState)("translate-y-full");return(0,l.useEffect)((()=>{v("translate-y-0")}),[]),(0,o.tZ)("div",{className:`w-full flex items-center bg-main-100 relative overflow-hidden ${t} ${r}`},d?(0,o.tZ)(s(),{className:"absolute top-0 left-0 right-0 w-full"}):null,(0,o.tZ)(i.Z,{className:"h-full flex flex-col lg:flex-row py-12 lg:py-0 items-center justify-between text-secondary-100 flex-grow gap-y-8"},(0,o.tZ)("div",{className:`flex flex-col overflow-hidden items-left h-full justify-center text-secondary-100 h-full w-full ${g||"lg:w-1/2"} bg-main-100`},(0,o.tZ)("h1",{className:"overflow-hidden w-full"},(0,o.tZ)("span",{className:`banner-title inline-block text-3xl lg:text-4xl w-full text-center lg:text-start transition-all duration-1000 font-light ${p}`},n))),m?(0,o.tZ)("div",{className:"w-[85%] lg:w-1/2 lg:h-full hidden md:flex -order-1 lg:order-none"},(0,o.tZ)(u,null)):null,f?(0,o.tZ)("div",{className:"w-[220px] lg:w-1/2 lg:h-full flex justify-center lg:justify-end items-center -order-1 lg:order-none"},(0,o.tZ)(a.G,{image:f,alt:"cover",className:"object-contain aspect-square"})):null,h?(0,o.tZ)("div",{className:"w-full lg:h-full flex justify-center lg:justify-start items-center"},h):null),c?(0,o.tZ)(s(),{className:"absolute bottom-0 left-0 right-0 w-full"}):null)}},1434:function(e,t,n){"use strict";var l=n(7462),a=n(8322),r=n(917);t.Z=e=>{const{theme:t,onClick:n,className:s,children:i,border:o,...c}=e,u=""+(t===a.Q.dark?"bg-main-100 text-secondary-100 border-secondary-100 hover:bg-main-70":"bg-secondary-100 text-main-100 border-main-100 hover:bg-secondary-30");return(0,r.tZ)("button",(0,l.Z)({onClick:n,className:`flex min-w-10 items-center justify-center rounded-lg border-solid ${o?"border":""} ${u} ${s}`},c),i)}},4568:function(e,t,n){"use strict";var l=n(4160),a=n(8322),r=n(1434),s=n(917);t.Z=e=>{let{section:t,pagesQuantity:n,currentPage:i,nextPageTitle:o,className:c}=e;const u=Array.from({length:n},((e,t)=>t+1)),d=i+1;return(0,s.tZ)("div",{className:`flex justify-center w-full gap-6 ${c}`},i1?u.map((e=>(0,s.tZ)(l.rU,{key:`pagination-link-${e}`,to:`/${t}/page/${e}`},(0,s.tZ)(r.Z,{theme:a.Q.light,border:e===i,"aria-label":"view page",className:"h-10 font-bold"},e)))):null))}},3793:function(e,t,n){"use strict";var l=n(4160),a=n(6488),r=n(9165),s=n(8322),i=n(917);t.Z=e=>{let{post:t,theme:n,className:o,markupData:c,lang:u}=e;const{date:d,title:m,text:f}=t.frontmatter,g=Math.floor(t.wordCount.words/200),h=g||1,p=n===s.Q.light?"text-main-100":"text-secondary-100",v=n===s.Q.light?"text-main-70":"text-secondary-70",w=n===s.Q.light?"hover:text-main-10":"hover:text-secondary-10";return(0,i.tZ)(l.rU,{to:`/blog/${t.id}`,className:`flex flex-col sm:flex-row w-full justify-center gap-5 md:gap-14 ${p} ${w} ${o}`,itemScope:!0,itemType:"https://schema.org/Article"},(0,i.tZ)("div",{className:"flex flex-col w-full max-w-[400px] gap-2.5"},(0,i.tZ)("p",{itemProp:"dateCreated",className:`text-lg ${v}`},d),(0,i.tZ)("h2",{itemProp:"headline",className:`text-3xl font-semibold ${p}`},m)),(0,i.tZ)("div",{className:"flex flex-col w-full max-w-[500px] gap-5"},(0,i.tZ)("p",{className:`font-normal text-base ${p}`,itemProp:"abstract"},f.split(" ").slice(0,70).join(" "),"..."),(0,i.tZ)("div",{className:"flex w-full items-center justify-between"},(0,i.tZ)("div",{className:"flex items-center gap-3 text-sm font-bold"},(0,i.tZ)("span",null,null==c?void 0:c.readPostLink),(0,i.tZ)(a.p,{size:14})),(0,i.tZ)("p",{className:`text-sm ${v}`},`${null==c?void 0:c.readingTimeTitle}: ~${h} ${null==c?void 0:c.readingTimeUnits}.`))),(0,i.tZ)(r.Lx,{itemProp:"copyrightHolder",lang:u}))}},6906:function(e,t,n){"use strict";n.r(t),n.d(t,{Head:function(){return m}});var l=n(7294),a=n(8032),r=n(8322),s=n(1929),i=n(1164),o=n(3793),c=n(4568),u=n(9165),d=n(917);t.default=e=>{let{data:t,pageContext:n}=e;const u=t.allMarkdownRemark.nodes,{currentPage:m,pagesQuantity:f,markupData:g,lang:h}=n,p=(0,a.c)(g.image);return(0,d.tZ)(l.Fragment,null,(0,d.tZ)(s.Z,{heightClass:"lg:h-99",title:g.bannerTitle.toUpperCase(),image:p,borderBottom:!0}),(0,d.tZ)(i.Z,{className:"flex-col items-center p-6 md:p-12 bg-secondary-100 gap-14"},u?u.map((e=>(0,d.tZ)(o.Z,{theme:r.Q.light,key:e.id,post:e,markupData:g,lang:h}))):null,(0,d.tZ)(c.Z,{section:"blog",pagesQuantity:f,currentPage:m,nextPageTitle:n.pagination.next})))};const m=e=>{let{pageContext:{markupData:t,currentPage:n,site:l,lang:a},location:r}=e;return(0,d.tZ)(u.Ag,{title:`${t.head} | ${t.bannerTitle.toUpperCase()} | ${n}`,description:`${t.head} | ${t.bannerTitle}`,siteUrl:l.siteUrl,path:r.pathname,lang:a})}},8322:function(e,t,n){"use strict";n.d(t,{Q:function(){return l}});let l=function(e){return e.dark="dark",e.light="light",e}({})},4471:function(e,t,n){var l=n(7294);function a(e){return l.createElement("svg",e,[l.createElement("line",{width:"800",height:"8",stroke:"#f9f9f9",strokeWidth:"8",strokeDasharray:"8 8",x1:"0",x2:"100%",y1:"4",y2:"4",key:0}),l.createElement("line",{width:"800",height:"8",stroke:"#111111",strokeWidth:"8",strokeDasharray:"8 8",x1:"8",x2:"100%",y1:"4",y2:"4",key:1})])}a.defaultProps={height:"8"},e.exports=a,a.default=a}}]); +//# sourceMappingURL=component---src-pages-templates-blog-tsx-b708ccb3ab38b62e1d6a.js.map \ No newline at end of file diff --git a/component---src-pages-templates-blog-tsx-c959d60261c8f487ab71.js.map b/component---src-pages-templates-blog-tsx-b708ccb3ab38b62e1d6a.js.map similarity index 97% rename from component---src-pages-templates-blog-tsx-c959d60261c8f487ab71.js.map rename to component---src-pages-templates-blog-tsx-b708ccb3ab38b62e1d6a.js.map index 7d906bc8..afda65a7 100644 --- a/component---src-pages-templates-blog-tsx-c959d60261c8f487ab71.js.map +++ b/component---src-pages-templates-blog-tsx-b708ccb3ab38b62e1d6a.js.map @@ -1 +1 @@ -{"version":3,"file":"component---src-pages-templates-blog-tsx-c959d60261c8f487ab71.js","mappings":"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","sources":["webpack://code-cave/./node_modules/@react-icons/all-files/bs/BsArrowUpRight.js","webpack://code-cave/./src/components/common/spinner.tsx","webpack://code-cave/./src/components/babylonjs/babylon.tsx","webpack://code-cave/./src/components/common/banner.tsx","webpack://code-cave/./src/components/common/button.tsx","webpack://code-cave/./src/components/common/pagination.tsx","webpack://code-cave/./src/components/posts/postPreview.tsx","webpack://code-cave/./src/pagesTemplates/blog.tsx","webpack://code-cave/./src/types/common.type.ts","webpack://code-cave/./src/assets/common/border.svg"],"sourcesContent":["// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.BsArrowUpRight = function BsArrowUpRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z\",\"clipRule\":\"evenodd\"}},{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z\",\"clipRule\":\"evenodd\"}}]})(props);\n};\n","import React from \"react\";\n\nconst Spinner = ({ className }: { className?: string }) => {\n return (\n \n \n \n \n \n \n );\n};\n\nexport default Spinner;\n","import React, { useEffect, useRef, useState } from \"react\";\n\nimport Spinner from \"../common/spinner\";\n\nconst Babylon = () => {\n const [isBabylonReady, setIsBabylonReady] = useState(false);\n const isInitial = useRef(true);\n const canvasRef = useRef(null);\n\n useEffect(() => {\n if (\n !isInitial.current ||\n !canvasRef.current ||\n typeof window == \"undefined\"\n )\n return;\n\n isInitial.current = false;\n\n // WORKER instance creation\n const babylonWorker = new Worker(\n new URL(\"../../workers/babylon.worker.ts\", import.meta.url),\n {\n type: \"module\",\n }\n );\n babylonWorker.onmessage = ({ data }) => {\n if (data === \"ready\") setIsBabylonReady(true);\n };\n\n // OFFSCREEN canvas\n const canvas = canvasRef.current;\n canvas.width = canvas.clientWidth;\n canvas.height = canvas.clientHeight;\n\n const offscreenCanvas = canvas.transferControlToOffscreen();\n babylonWorker.postMessage({ canvas: offscreenCanvas }, [offscreenCanvas]);\n\n // RESIZE handler\n const onResizeHandler = () => {\n babylonWorker.postMessage({\n width: canvas.clientWidth,\n height: canvas.clientHeight,\n });\n };\n window.addEventListener(\"resize\", onResizeHandler, { passive: true });\n\n // WHEEL handler\n const onWheelHandler = (e: WheelEvent) => {\n e.preventDefault();\n babylonWorker.postMessage({ wheel: e.deltaY });\n };\n canvas.addEventListener(\"wheel\", onWheelHandler);\n\n // ROTATE mouse handler\n const onMouseMoveHandler = (e: MouseEvent) => {\n babylonWorker.postMessage({\n x: e.movementX,\n y: e.movementY,\n });\n };\n canvas.addEventListener(\"mousedown\", (e: MouseEvent) => {\n e.preventDefault();\n window.addEventListener(\"mousemove\", onMouseMoveHandler, {\n passive: true,\n });\n window.addEventListener(\n \"mouseup\",\n () => window.removeEventListener(\"mousemove\", onMouseMoveHandler),\n { once: true, passive: true }\n );\n });\n\n // ROTATE touch handler\n const nestedTouchMoveHandler = (\n e: TouchEvent,\n previousCoords: { x: number; y: number }\n ) => {\n const touch = e.touches[0];\n babylonWorker.postMessage({\n x: touch.screenX - previousCoords.x,\n y: touch.screenY - previousCoords.y,\n });\n\n return {\n newX: touch.screenX,\n newY: touch.screenY,\n };\n };\n let onTouchMoveHandler: (e: TouchEvent) => void;\n canvas.addEventListener(\n \"touchstart\",\n (e: TouchEvent) => {\n if (e.touches.length !== 1) return;\n\n const firstTouch = e.touches[0];\n\n e.preventDefault();\n const previousCoords = {\n x: firstTouch.screenX,\n y: firstTouch.screenY,\n };\n\n onTouchMoveHandler = (e: TouchEvent) => {\n const { newX, newY } = nestedTouchMoveHandler(e, previousCoords);\n previousCoords.x = newX;\n previousCoords.y = newY;\n };\n\n window.addEventListener(\"touchmove\", onTouchMoveHandler, {\n passive: true,\n });\n window.addEventListener(\n \"touchend\",\n () => {\n window.removeEventListener(\"touchmove\", onTouchMoveHandler);\n },\n { passive: true }\n );\n },\n { passive: true }\n );\n\n // UNMOUNT handler\n return () => {\n if (!window) return;\n\n window.removeEventListener(\"resize\", onResizeHandler);\n window.removeEventListener(\"mousemove\", onMouseMoveHandler);\n window.removeEventListener(\"touchmove\", onTouchMoveHandler);\n if (canvas) {\n canvas.removeEventListener(\"wheel\", onWheelHandler);\n }\n babylonWorker.terminate();\n };\n }, []);\n\n return (\n
\n \n {!isBabylonReady ? (\n \n ) : null}\n
\n );\n};\n\nexport default Babylon;\n","import React, { useEffect, useState } from \"react\";\nimport { GatsbyImage, IGatsbyImageData } from \"gatsby-plugin-image\";\n\nimport Border from \"../../assets/common/border.svg\";\n\nimport ContentContainer from \"./contentContainer\";\nimport Babylon from \"../babylonjs/babylon\";\n\n// interface IBannerProps {\n// heightClass?: string;\n// title: string;\n// className?: string;\n// borderBottom?: boolean;\n// borderTop?: boolean;\n// babylon?: boolean;\n// image?: IGatsbyImageData;\n// }\ntype TBannerCommonProps = {\n heightClass?: string;\n title: string;\n className?: string;\n borderBottom?: boolean;\n borderTop?: boolean;\n};\ntype TBannerConditionalProps =\n | {\n babylon?: boolean;\n image?: never;\n children?: never;\n titleBlockClassName?: never;\n }\n | {\n babylon?: never;\n image?: IGatsbyImageData;\n children?: never;\n titleBlockClassName?: never;\n }\n | {\n babylon?: never;\n image?: never;\n children?: React.ReactNode;\n titleBlockClassName?: string;\n };\ntype TBannerProps = TBannerCommonProps & TBannerConditionalProps;\n\nconst Banner = ({\n heightClass = \"min-h-91\",\n title,\n className,\n borderBottom,\n borderTop,\n babylon,\n image,\n titleBlockClassName,\n children,\n}: TBannerProps) => {\n const [textTranslate, setTextTranslate] = useState<\n \"translate-y-full\" | \"translate-y-0\"\n >(\"translate-y-full\");\n useEffect(() => {\n setTextTranslate(\"translate-y-0\");\n }, []);\n\n return (\n \n {borderTop ? (\n \n ) : null}\n \n \n

\n \n {title}\n \n

\n \n {babylon ? (\n \n ) : null}\n {image ? (\n
\n \n
\n ) : null}\n {children ? (\n
\n {children}\n
\n ) : null}\n \n {borderBottom ? (\n \n ) : null}\n \n );\n};\n\nexport default Banner;\n","import React from \"react\";\n\nimport { Theme } from \"../../types/common.type\";\n\ninterface IButtonProps extends React.ButtonHTMLAttributes {\n theme: Theme;\n onClick?: () => any;\n className?: string;\n border?: boolean;\n}\n\nconst Button = (props: React.PropsWithChildren) => {\n const { theme, onClick, className, children, border, ...attr } = props;\n\n const colorClasses = `${\n theme === Theme.dark\n ? \"bg-main-100 text-secondary-100 border-secondary-100 hover:bg-main-70\"\n : \"bg-secondary-100 text-main-100 border-main-100 hover:bg-secondary-30\"\n }`;\n\n return (\n \n {children}\n \n );\n};\n\nexport default Button;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { Theme } from \"../../types/common.type\";\n\nimport Button from \"./button\";\n\nconst Pagination = ({\n section,\n pagesQuantity,\n currentPage,\n nextPageTitle,\n className,\n}: {\n section: \"projects\" | `blog${string}`;\n pagesQuantity: number;\n currentPage: number;\n nextPageTitle?: string;\n className?: string;\n}) => {\n const pages = Array.from({ length: pagesQuantity }, (_, i) => i + 1);\n const nextPage = currentPage + 1;\n\n return (\n
\n {currentPage < pagesQuantity ? (\n \n \n {nextPageTitle ?? \"Next page\"}\n \n \n ) : null}\n\n \n
\n );\n};\n\nexport default Pagination;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { BsArrowUpRight } from \"@react-icons/all-files/bs/BsArrowUpRight\";\n\nimport { IPostPreviewQueryResult } from \"../../types/post.type\";\nimport { LocalBusinessMetadata } from \"../common/metadata\";\nimport { IBlogMarkupData } from \"../../types/commonMarkup.type\";\nimport { TLang, Theme } from \"../../types/common.type\";\n\nconst PostPreview = ({\n post,\n theme,\n className,\n markupData,\n lang,\n}: {\n post: IPostPreviewQueryResult;\n className?: string;\n theme: Theme;\n markupData?: IBlogMarkupData;\n lang: TLang;\n}) => {\n const { date, title, text } = post.frontmatter;\n\n const minutes = Math.floor(post.wordCount.words / 200);\n const readingTime = minutes ? minutes : 1;\n\n const fontColorClass100 =\n theme === Theme.light ? \"text-main-100\" : \"text-secondary-100\";\n const fontColorClass10 =\n theme === Theme.light ? \"text-main-10\" : \"text-secondary-10\";\n const fontColorHover =\n theme === Theme.light ? \"hover:text-main-10\" : \"hover:text-secondary-10\";\n\n return (\n \n
\n

\n {date}\n

\n \n {title}\n \n
\n
\n \n {text.split(\" \").slice(0, 70).join(\" \")}...\n

\n
\n
\n {markupData?.readPostLink}\n \n
\n

\n {`${markupData?.readingTimeTitle}: ~${readingTime} ${markupData?.readingTimeUnits}.`}\n

\n
\n
\n \n \n );\n};\n\nexport default PostPreview;\n","import React from \"react\";\nimport { HeadFC, HeadProps, PageProps } from \"gatsby\";\nimport { graphql } from \"gatsby\";\nimport { getImage } from \"gatsby-plugin-image\";\n\nimport { IBlogPageData, IBlogPageContext } from \"../types/blog.type\";\nimport { Theme } from \"../types/common.type\";\n\nimport Banner from \"../components/common/banner\";\nimport ContentContainer from \"../components/common/contentContainer\";\nimport PostPreview from \"../components/posts/postPreview\";\nimport Pagination from \"../components/common/pagination\";\nimport { HeadSeo } from \"../components/common/metadata\";\n\nconst Blog = ({\n data,\n pageContext,\n}: PageProps) => {\n const posts = data.allMarkdownRemark.nodes;\n const { currentPage, pagesQuantity, markupData, lang } = pageContext;\n const bannerImage = getImage(markupData.image);\n\n return (\n <>\n \n \n {posts\n ? posts.map((post) => (\n \n ))\n : null}\n \n \n \n );\n};\n\nexport default Blog;\n\nexport const Head: HeadFC = ({\n pageContext: { markupData, currentPage, site, lang },\n location,\n}: HeadProps) => {\n return (\n \n );\n};\n\nexport const query = graphql`\n query ($skip: Int!, $limit: Int!, $lang: String) {\n allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"posts\" }, language: { eq: $lang } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: $limit\n skip: $skip\n ) {\n nodes {\n id\n frontmatter {\n date(formatString: \"DD MMM YYYY\", locale: $lang)\n title\n text\n cover {\n childImageSharp {\n gatsbyImageData(\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n width: 600\n )\n }\n }\n }\n wordCount {\n words\n }\n }\n }\n }\n`;\n","export interface ILang {\n lang: TLang;\n}\n\nexport type TLang = \"en\" | \"ru\";\n\nexport type TLinks = \"services\" | \"workflow\" | \"projects\" | \"blog\";\n\nexport interface IBasePageContext extends ILang {\n site: ISiteMetadata;\n}\n\nexport interface IMdQueryResult {\n allMarkdownRemark: {\n nodes: T[];\n };\n}\n\nexport interface ISiteMetadata {\n title: string;\n description: string;\n siteUrl: string;\n image: string;\n analyticsId: string;\n}\n\nexport enum Theme {\n dark = \"dark\",\n light = \"light\",\n}\n","var React = require('react');\n\nfunction Border (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"line\",{\"width\":\"800\",\"height\":\"8\",\"stroke\":\"#f9f9f9\",\"strokeWidth\":\"8\",\"strokeDasharray\":\"8 8\",\"x1\":\"0\",\"x2\":\"100%\",\"y1\":\"4\",\"y2\":\"4\",\"key\":0}),React.createElement(\"line\",{\"width\":\"800\",\"height\":\"8\",\"stroke\":\"#111111\",\"strokeWidth\":\"8\",\"strokeDasharray\":\"8 8\",\"x1\":\"8\",\"x2\":\"100%\",\"y1\":\"4\",\"y2\":\"4\",\"key\":1})]);\n}\n\nBorder.defaultProps = {\"height\":\"8\"};\n\nmodule.exports = Border;\n\nBorder.default = Border;\n"],"names":["GenIcon","module","exports","props","_ref","className","___EmotionJSX","viewBox","fill","xmlns","d","Babylon","isBabylonReady","setIsBabylonReady","useState","isInitial","useRef","canvasRef","useEffect","current","window","babylonWorker","Worker","URL","type","onmessage","data","canvas","width","clientWidth","height","clientHeight","offscreenCanvas","transferControlToOffscreen","postMessage","onResizeHandler","addEventListener","passive","onWheelHandler","e","preventDefault","wheel","deltaY","onMouseMoveHandler","x","movementX","y","movementY","removeEventListener","once","onTouchMoveHandler","touches","length","firstTouch","previousCoords","screenX","screenY","newX","newY","nestedTouchMoveHandler","touch","terminate","ref","Spinner","heightClass","title","borderBottom","borderTop","babylon","image","titleBlockClassName","children","textTranslate","setTextTranslate","Border","ContentContainer","GatsbyImage","alt","theme","onClick","border","attr","colorClasses","Theme","dark","_extends","section","pagesQuantity","currentPage","nextPageTitle","pages","Array","from","_","i","nextPage","Link","to","Button","light","map","page","key","post","markupData","lang","date","text","frontmatter","minutes","Math","floor","wordCount","words","readingTime","fontColorClass100","fontColorClass10","fontColorHover","id","itemScope","itemType","itemProp","split","slice","join","readPostLink","BsArrowUpRight","size","readingTimeTitle","readingTimeUnits","LocalBusinessMetadata","pageContext","posts","allMarkdownRemark","nodes","bannerImage","getImage","React","Banner","bannerTitle","toUpperCase","PostPreview","Pagination","pagination","next","Head","_ref2","site","location","HeadSeo","head","description","siteUrl","path","pathname","createElement","defaultProps","default"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"component---src-pages-templates-blog-tsx-b708ccb3ab38b62e1d6a.js","mappings":"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","sources":["webpack://code-cave/./node_modules/@react-icons/all-files/bs/BsArrowUpRight.js","webpack://code-cave/./src/components/common/spinner.tsx","webpack://code-cave/./src/components/babylonjs/babylon.tsx","webpack://code-cave/./src/components/common/banner.tsx","webpack://code-cave/./src/components/common/button.tsx","webpack://code-cave/./src/components/common/pagination.tsx","webpack://code-cave/./src/components/posts/postPreview.tsx","webpack://code-cave/./src/pagesTemplates/blog.tsx","webpack://code-cave/./src/types/common.type.ts","webpack://code-cave/./src/assets/common/border.svg"],"sourcesContent":["// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.BsArrowUpRight = function BsArrowUpRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z\",\"clipRule\":\"evenodd\"}},{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z\",\"clipRule\":\"evenodd\"}}]})(props);\n};\n","import React from \"react\";\n\nconst Spinner = ({ className }: { className?: string }) => {\n return (\n \n \n \n \n \n \n );\n};\n\nexport default Spinner;\n","import React, { useEffect, useRef, useState } from \"react\";\n\nimport Spinner from \"../common/spinner\";\n\nconst Babylon = () => {\n const [isBabylonReady, setIsBabylonReady] = useState(false);\n const isInitial = useRef(true);\n const canvasRef = useRef(null);\n\n useEffect(() => {\n if (\n !isInitial.current ||\n !canvasRef.current ||\n typeof window == \"undefined\"\n )\n return;\n\n isInitial.current = false;\n\n // WORKER instance creation\n const babylonWorker = new Worker(\n new URL(\"../../workers/babylon.worker.ts\", import.meta.url),\n {\n type: \"module\",\n }\n );\n babylonWorker.onmessage = ({ data }) => {\n if (data === \"ready\") setIsBabylonReady(true);\n };\n\n // OFFSCREEN canvas\n const canvas = canvasRef.current;\n canvas.width = canvas.clientWidth;\n canvas.height = canvas.clientHeight;\n\n const offscreenCanvas = canvas.transferControlToOffscreen();\n babylonWorker.postMessage({ canvas: offscreenCanvas }, [offscreenCanvas]);\n\n // RESIZE handler\n const onResizeHandler = () => {\n babylonWorker.postMessage({\n width: canvas.clientWidth,\n height: canvas.clientHeight,\n });\n };\n window.addEventListener(\"resize\", onResizeHandler, { passive: true });\n\n // WHEEL handler\n const onWheelHandler = (e: WheelEvent) => {\n e.preventDefault();\n babylonWorker.postMessage({ wheel: e.deltaY });\n };\n canvas.addEventListener(\"wheel\", onWheelHandler);\n\n // ROTATE mouse handler\n const onMouseMoveHandler = (e: MouseEvent) => {\n babylonWorker.postMessage({\n x: e.movementX,\n y: e.movementY,\n });\n };\n canvas.addEventListener(\"mousedown\", (e: MouseEvent) => {\n e.preventDefault();\n window.addEventListener(\"mousemove\", onMouseMoveHandler, {\n passive: true,\n });\n window.addEventListener(\n \"mouseup\",\n () => window.removeEventListener(\"mousemove\", onMouseMoveHandler),\n { once: true, passive: true }\n );\n });\n\n // ROTATE touch handler\n const nestedTouchMoveHandler = (\n e: TouchEvent,\n previousCoords: { x: number; y: number }\n ) => {\n const touch = e.touches[0];\n babylonWorker.postMessage({\n x: touch.screenX - previousCoords.x,\n y: touch.screenY - previousCoords.y,\n });\n\n return {\n newX: touch.screenX,\n newY: touch.screenY,\n };\n };\n let onTouchMoveHandler: (e: TouchEvent) => void;\n canvas.addEventListener(\n \"touchstart\",\n (e: TouchEvent) => {\n if (e.touches.length !== 1) return;\n\n const firstTouch = e.touches[0];\n\n e.preventDefault();\n const previousCoords = {\n x: firstTouch.screenX,\n y: firstTouch.screenY,\n };\n\n onTouchMoveHandler = (e: TouchEvent) => {\n const { newX, newY } = nestedTouchMoveHandler(e, previousCoords);\n previousCoords.x = newX;\n previousCoords.y = newY;\n };\n\n window.addEventListener(\"touchmove\", onTouchMoveHandler, {\n passive: true,\n });\n window.addEventListener(\n \"touchend\",\n () => {\n window.removeEventListener(\"touchmove\", onTouchMoveHandler);\n },\n { passive: true }\n );\n },\n { passive: true }\n );\n\n // UNMOUNT handler\n return () => {\n if (!window) return;\n\n window.removeEventListener(\"resize\", onResizeHandler);\n window.removeEventListener(\"mousemove\", onMouseMoveHandler);\n window.removeEventListener(\"touchmove\", onTouchMoveHandler);\n if (canvas) {\n canvas.removeEventListener(\"wheel\", onWheelHandler);\n }\n babylonWorker.terminate();\n };\n }, []);\n\n return (\n
\n \n {!isBabylonReady ? (\n \n ) : null}\n
\n );\n};\n\nexport default Babylon;\n","import React, { useEffect, useState } from \"react\";\nimport { GatsbyImage, IGatsbyImageData } from \"gatsby-plugin-image\";\n\nimport Border from \"../../assets/common/border.svg\";\n\nimport ContentContainer from \"./contentContainer\";\nimport Babylon from \"../babylonjs/babylon\";\n\n// interface IBannerProps {\n// heightClass?: string;\n// title: string;\n// className?: string;\n// borderBottom?: boolean;\n// borderTop?: boolean;\n// babylon?: boolean;\n// image?: IGatsbyImageData;\n// }\ntype TBannerCommonProps = {\n heightClass?: string;\n title: string;\n className?: string;\n borderBottom?: boolean;\n borderTop?: boolean;\n};\ntype TBannerConditionalProps =\n | {\n babylon?: boolean;\n image?: never;\n children?: never;\n titleBlockClassName?: never;\n }\n | {\n babylon?: never;\n image?: IGatsbyImageData;\n children?: never;\n titleBlockClassName?: never;\n }\n | {\n babylon?: never;\n image?: never;\n children?: React.ReactNode;\n titleBlockClassName?: string;\n };\ntype TBannerProps = TBannerCommonProps & TBannerConditionalProps;\n\nconst Banner = ({\n heightClass = \"min-h-91\",\n title,\n className,\n borderBottom,\n borderTop,\n babylon,\n image,\n titleBlockClassName,\n children,\n}: TBannerProps) => {\n const [textTranslate, setTextTranslate] = useState<\n \"translate-y-full\" | \"translate-y-0\"\n >(\"translate-y-full\");\n useEffect(() => {\n setTextTranslate(\"translate-y-0\");\n }, []);\n\n return (\n \n {borderTop ? (\n \n ) : null}\n \n \n

\n \n {title}\n \n

\n \n {babylon ? (\n \n ) : null}\n {image ? (\n
\n \n
\n ) : null}\n {children ? (\n
\n {children}\n
\n ) : null}\n \n {borderBottom ? (\n \n ) : null}\n \n );\n};\n\nexport default Banner;\n","import React from \"react\";\n\nimport { Theme } from \"../../types/common.type\";\n\ninterface IButtonProps extends React.ButtonHTMLAttributes {\n theme: Theme;\n onClick?: () => any;\n className?: string;\n border?: boolean;\n}\n\nconst Button = (props: React.PropsWithChildren) => {\n const { theme, onClick, className, children, border, ...attr } = props;\n\n const colorClasses = `${\n theme === Theme.dark\n ? \"bg-main-100 text-secondary-100 border-secondary-100 hover:bg-main-70\"\n : \"bg-secondary-100 text-main-100 border-main-100 hover:bg-secondary-30\"\n }`;\n\n return (\n \n {children}\n \n );\n};\n\nexport default Button;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { Theme } from \"../../types/common.type\";\n\nimport Button from \"./button\";\n\nconst Pagination = ({\n section,\n pagesQuantity,\n currentPage,\n nextPageTitle,\n className,\n}: {\n section: \"projects\" | `blog${string}`;\n pagesQuantity: number;\n currentPage: number;\n nextPageTitle?: string;\n className?: string;\n}) => {\n const pages = Array.from({ length: pagesQuantity }, (_, i) => i + 1);\n const nextPage = currentPage + 1;\n\n return (\n
\n {currentPage < pagesQuantity ? (\n \n \n {nextPageTitle ?? \"Next page\"}\n \n \n ) : null}\n\n \n
\n );\n};\n\nexport default Pagination;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { BsArrowUpRight } from \"@react-icons/all-files/bs/BsArrowUpRight\";\n\nimport { IPostPreviewQueryResult } from \"../../types/post.type\";\nimport { LocalBusinessMetadata } from \"../common/metadata\";\nimport { IBlogMarkupData } from \"../../types/commonMarkup.type\";\nimport { TLang, Theme } from \"../../types/common.type\";\n\nconst PostPreview = ({\n post,\n theme,\n className,\n markupData,\n lang,\n}: {\n post: IPostPreviewQueryResult;\n className?: string;\n theme: Theme;\n markupData?: IBlogMarkupData;\n lang: TLang;\n}) => {\n const { date, title, text } = post.frontmatter;\n\n const minutes = Math.floor(post.wordCount.words / 200);\n const readingTime = minutes ? minutes : 1;\n\n const fontColorClass100 =\n theme === Theme.light ? \"text-main-100\" : \"text-secondary-100\";\n const fontColorClass70 =\n theme === Theme.light ? \"text-main-70\" : \"text-secondary-70\";\n const fontColorHover =\n theme === Theme.light ? \"hover:text-main-10\" : \"hover:text-secondary-10\";\n\n return (\n \n
\n

\n {date}\n

\n \n {title}\n \n
\n
\n \n {text.split(\" \").slice(0, 70).join(\" \")}...\n

\n
\n
\n {markupData?.readPostLink}\n \n
\n

\n {`${markupData?.readingTimeTitle}: ~${readingTime} ${markupData?.readingTimeUnits}.`}\n

\n
\n
\n \n \n );\n};\n\nexport default PostPreview;\n","import React from \"react\";\nimport { HeadFC, HeadProps, PageProps } from \"gatsby\";\nimport { graphql } from \"gatsby\";\nimport { getImage } from \"gatsby-plugin-image\";\n\nimport { IBlogPageData, IBlogPageContext } from \"../types/blog.type\";\nimport { Theme } from \"../types/common.type\";\n\nimport Banner from \"../components/common/banner\";\nimport ContentContainer from \"../components/common/contentContainer\";\nimport PostPreview from \"../components/posts/postPreview\";\nimport Pagination from \"../components/common/pagination\";\nimport { HeadSeo } from \"../components/common/metadata\";\n\nconst Blog = ({\n data,\n pageContext,\n}: PageProps) => {\n const posts = data.allMarkdownRemark.nodes;\n const { currentPage, pagesQuantity, markupData, lang } = pageContext;\n const bannerImage = getImage(markupData.image);\n\n return (\n <>\n \n \n {posts\n ? posts.map((post) => (\n \n ))\n : null}\n \n \n \n );\n};\n\nexport default Blog;\n\nexport const Head: HeadFC = ({\n pageContext: { markupData, currentPage, site, lang },\n location,\n}: HeadProps) => {\n return (\n \n );\n};\n\nexport const query = graphql`\n query ($skip: Int!, $limit: Int!, $lang: String) {\n allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"posts\" }, language: { eq: $lang } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: $limit\n skip: $skip\n ) {\n nodes {\n id\n frontmatter {\n date(formatString: \"DD MMM YYYY\", locale: $lang)\n title\n text\n cover {\n childImageSharp {\n gatsbyImageData(\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n width: 600\n )\n }\n }\n }\n wordCount {\n words\n }\n }\n }\n }\n`;\n","export interface ILang {\n lang: TLang;\n}\n\nexport type TLang = \"en\" | \"ru\";\n\nexport type TLinks = \"services\" | \"workflow\" | \"projects\" | \"blog\";\n\nexport interface IBasePageContext extends ILang {\n site: ISiteMetadata;\n}\n\nexport interface IMdQueryResult {\n allMarkdownRemark: {\n nodes: T[];\n };\n}\n\nexport interface ISiteMetadata {\n title: string;\n description: string;\n siteUrl: string;\n image: string;\n analyticsId: string;\n}\n\nexport enum Theme {\n dark = \"dark\",\n light = \"light\",\n}\n","var React = require('react');\n\nfunction Border (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"line\",{\"width\":\"800\",\"height\":\"8\",\"stroke\":\"#f9f9f9\",\"strokeWidth\":\"8\",\"strokeDasharray\":\"8 8\",\"x1\":\"0\",\"x2\":\"100%\",\"y1\":\"4\",\"y2\":\"4\",\"key\":0}),React.createElement(\"line\",{\"width\":\"800\",\"height\":\"8\",\"stroke\":\"#111111\",\"strokeWidth\":\"8\",\"strokeDasharray\":\"8 8\",\"x1\":\"8\",\"x2\":\"100%\",\"y1\":\"4\",\"y2\":\"4\",\"key\":1})]);\n}\n\nBorder.defaultProps = {\"height\":\"8\"};\n\nmodule.exports = Border;\n\nBorder.default = Border;\n"],"names":["GenIcon","module","exports","props","_ref","className","___EmotionJSX","viewBox","fill","xmlns","d","Babylon","isBabylonReady","setIsBabylonReady","useState","isInitial","useRef","canvasRef","useEffect","current","window","babylonWorker","Worker","URL","type","onmessage","data","canvas","width","clientWidth","height","clientHeight","offscreenCanvas","transferControlToOffscreen","postMessage","onResizeHandler","addEventListener","passive","onWheelHandler","e","preventDefault","wheel","deltaY","onMouseMoveHandler","x","movementX","y","movementY","removeEventListener","once","onTouchMoveHandler","touches","length","firstTouch","previousCoords","screenX","screenY","newX","newY","nestedTouchMoveHandler","touch","terminate","ref","Spinner","heightClass","title","borderBottom","borderTop","babylon","image","titleBlockClassName","children","textTranslate","setTextTranslate","Border","ContentContainer","GatsbyImage","alt","theme","onClick","border","attr","colorClasses","Theme","dark","_extends","section","pagesQuantity","currentPage","nextPageTitle","pages","Array","from","_","i","nextPage","Link","to","Button","light","map","page","key","post","markupData","lang","date","text","frontmatter","minutes","Math","floor","wordCount","words","readingTime","fontColorClass100","fontColorClass70","fontColorHover","id","itemScope","itemType","itemProp","split","slice","join","readPostLink","BsArrowUpRight","size","readingTimeTitle","readingTimeUnits","LocalBusinessMetadata","pageContext","posts","allMarkdownRemark","nodes","bannerImage","getImage","React","Banner","bannerTitle","toUpperCase","PostPreview","Pagination","pagination","next","Head","_ref2","site","location","HeadSeo","head","description","siteUrl","path","pathname","createElement","defaultProps","default"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-templates-index-tsx-c399118fd452a66701b3.js b/component---src-pages-templates-index-tsx-d535c6a2d4bd5b585572.js similarity index 97% rename from component---src-pages-templates-index-tsx-c399118fd452a66701b3.js rename to component---src-pages-templates-index-tsx-d535c6a2d4bd5b585572.js index 700561ff..22af7493 100644 --- a/component---src-pages-templates-index-tsx-c399118fd452a66701b3.js +++ b/component---src-pages-templates-index-tsx-d535c6a2d4bd5b585572.js @@ -1,2 +1,2 @@ -(self.webpackChunkcode_cave=self.webpackChunkcode_cave||[]).push([[832],{6838:function(t,e,n){var l=n(9720).w_;t.exports.z=function(t){return l({tag:"svg",attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M304 280h416c4.4 0 8-3.6 8-8 0-40-8.8-76.7-25.9-108.1-17.2-31.5-42.5-56.8-74-74C596.7 72.8 560 64 520 64h-16c-40 0-76.7 8.8-108.1 25.9-31.5 17.2-56.8 42.5-74 74C304.8 195.3 296 232 296 272c0 4.4 3.6 8 8 8z"}},{tag:"path",attr:{d:"M940 512H792V412c76.8 0 139-62.2 139-139 0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 34.8-28.2 63-63 63H232c-34.8 0-63-28.2-63-63 0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 76.8 62.2 139 139 139v100H84c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h148v96c0 6.5.2 13 .7 19.3C164.1 728.6 116 796.7 116 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-44.2 23.9-82.9 59.6-103.7 6 17.2 13.6 33.6 22.7 49 24.3 41.5 59 76.2 100.5 100.5 28.9 16.9 61 28.8 95.3 34.5 4.4 0 8-3.6 8-8V484c0-4.4 3.6-8 8-8h60c4.4 0 8 3.6 8 8v464.2c0 4.4 3.6 8 8 8 34.3-5.7 66.4-17.6 95.3-34.5 41.5-24.3 76.2-59 100.5-100.5 9.1-15.5 16.7-31.9 22.7-49C812.1 793.1 836 831.8 836 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-79.3-48.1-147.4-116.7-176.7.4-6.4.7-12.8.7-19.3v-96h148c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z"}}]})(t)}},6488:function(t,e,n){var l=n(9720).w_;t.exports.p=function(t){return l({tag:"svg",attr:{viewBox:"0 0 16 16",fill:"currentColor"},child:[{tag:"path",attr:{fillRule:"evenodd",d:"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z",clipRule:"evenodd"}},{tag:"path",attr:{fillRule:"evenodd",d:"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z",clipRule:"evenodd"}}]})(t)}},4032:function(t,e,n){var l=n(9720).w_;t.exports.t=function(t){return l({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z"}}]})(t)}},216:function(t,e,n){"use strict";var l=n(7462),a=n(7294),o=n(4160),r=n(8322),i=n(4471),s=n.n(i),c=n(1164),d=n(917);e.Z=t=>{let{section:e,theme:n,title:i,linkTitle:u,subTitle:m,className:p,children:v,borderT:f,borderB:x,isArrowLink:g=!0,...h}=t;const Z=n===r.Q.dark?"text-secondary-100":"text-main-100",w=n===r.Q.dark?"text-secondary-100 hover:text-secondary-70":"text-main-100 hover:text-main-10",b=n===r.Q.dark?"bg-main-100":"bg-secondary-100";return(0,d.tZ)(a.Fragment,null,f?(0,d.tZ)(s(),{className:"w-full"}):null,(0,d.tZ)("section",(0,l.Z)({className:`w-full py-16 ${b} ${p}`},h),(0,d.tZ)(c.Z,{maxWidthClass:"max-w-[1280px]",className:`flex-col items-center ${Z}`},(0,d.tZ)("div",{className:"flex justify-between w-full sm:items-center pb-8 sm:pb-14 flex-col sm:flex-row gap-5"},(0,d.tZ)("h2",{className:`text-4xl font-bold flex-1 ${Z}`},i.toUpperCase()),e?(0,d.tZ)(o.rU,{to:`/${e}`,className:`w-full sm:w-auto text-start sm:text-end text-xl font-normal cursor-pointer whitespace-nowrap ${w}`},u?u.toUpperCase():"DISCOVER MORE"," ",g?(0,d.tZ)(a.Fragment,null,"→"):null):null,m?(0,d.tZ)("p",{className:`w-full sm:w-auto flex-1 text-start sm:text-end text-xl font-normal ${Z}`},m.toUpperCase()):null),v)),x?(0,d.tZ)(s(),{className:"w-full"}):null)}},3793:function(t,e,n){"use strict";var l=n(4160),a=n(6488),o=n(9165),r=n(8322),i=n(917);e.Z=t=>{let{post:e,theme:n,className:s,markupData:c,lang:d}=t;const{date:u,title:m,text:p}=e.frontmatter,v=Math.floor(e.wordCount.words/200),f=v||1,x=n===r.Q.light?"text-main-100":"text-secondary-100",g=n===r.Q.light?"text-main-10":"text-secondary-10",h=n===r.Q.light?"hover:text-main-10":"hover:text-secondary-10";return(0,i.tZ)(l.rU,{to:`/blog/${e.id}`,className:`flex flex-col sm:flex-row w-full justify-center gap-5 md:gap-14 ${x} ${h} ${s}`,itemScope:!0,itemType:"https://schema.org/Article"},(0,i.tZ)("div",{className:"flex flex-col w-full max-w-[400px] gap-2.5"},(0,i.tZ)("p",{itemProp:"dateCreated",className:`text-lg ${g}`},u),(0,i.tZ)("h3",{itemProp:"headline",className:`text-3xl font-semibold ${x}`},m)),(0,i.tZ)("div",{className:"flex flex-col w-full max-w-[500px] gap-5"},(0,i.tZ)("p",{className:`font-normal text-base ${x}`,itemProp:"abstract"},p.split(" ").slice(0,70).join(" "),"..."),(0,i.tZ)("div",{className:"flex w-full items-center justify-between"},(0,i.tZ)("div",{className:"flex items-center gap-3 text-sm font-bold"},(0,i.tZ)("span",null,null==c?void 0:c.readPostLink),(0,i.tZ)(a.p,{size:14})),(0,i.tZ)("p",{className:`text-sm ${g}`},`${null==c?void 0:c.readingTimeTitle}: ~${f} ${null==c?void 0:c.readingTimeUnits}.`))),(0,i.tZ)(o.Lx,{itemProp:"copyrightHolder",lang:d}))}},6745:function(t,e,n){"use strict";var l=n(4160),a=n(8032),o=n(8322),r=n(6488),i=n(9165),s=n(917);e.Z=t=>{let{project:e,className:n,theme:c,lang:d}=t;const u=(0,a.c)(e.frontmatter.cover),{title:m,teamSize:p,duration:v}=e.frontmatter,f=c===o.Q.light?"text-main-100 hover:text-main-10":"text-secondary-100 hover:text-secondary-10",x=c===o.Q.light?"bg-secondary-100 hover:bg-secondary-100":"bg-main-100 hover:bg-main-100";return(0,s.tZ)(l.rU,{to:`/projects/${e.id}`,className:`${x} ${f} flex flex-col justify-between hover:text-main-10 rounded-2xl p-2.5 gap-2.5 ${n}`,itemScope:!0,itemType:"https://schema.org/CreativeWork"},(0,s.tZ)("div",{className:"group flex-1 relative"},u?(0,s.tZ)(a.G,{image:u,alt:"cover",itemProp:"image",className:"object-contain w-full rounded-[10px] grayscale transition-all group-hover:scale-[1.008]"}):null,(0,s.tZ)("div",{className:"absolute left-2 bottom-2 flex items-center gap-2.5 z-10"},(0,s.tZ)("p",{className:"backdrop-blur-sm backdrop-brightness-75 text-secondary-100 px-5 h-10 flex items-center rounded-lg"},v),(0,s.tZ)("p",{className:"backdrop-blur-sm backdrop-brightness-75 text-secondary-100 px-5 h-10 flex items-center rounded-lg"},p))),(0,s.tZ)("div",{className:"flex px-2.5 py-1 items-center grow"},(0,s.tZ)("h3",{className:"text-base grow font-medium h-full",itemProp:"description"},m),(0,s.tZ)(r.p,{size:20})),(0,s.tZ)(i.Lx,{itemProp:"author",lang:d}))}},171:function(t,e,n){"use strict";n.r(e),n.d(e,{Head:function(){return M},default:function(){return I}});var l=n(9720),a=n(1929),o=n(7294),r=n(4160),i=n(6838),s=n(1312),c=n(7451),d=n(917);var u=(0,o.forwardRef)(((t,e)=>{let{className:n,children:l}=t;const[a,o]=(0,s.Z)({loop:!0,dragFree:!0,duration:1e4,align:"start"},[(0,c.Z)({delay:0,stopOnInteraction:!1,stopOnMouseEnter:!0})]);return(0,d.tZ)("div",{className:`overflow-hidden ${n}`,ref:a},(0,d.tZ)("div",{ref:e,className:"h-full flex items-center",onMouseEnter:()=>{null==o||o.internalEngine().animation.stop()},onMouseLeave:()=>{null==o||o.internalEngine().animation.start()}},l))})),m=n(4471),p=n.n(m);var v=t=>{let{children:e}=t;return(0,d.tZ)("div",{className:"h-full shrink-0 min-w-0 cursor-pointer flex flex-col justify-between items-center content-center w-[192px] md:w-[256px] xl:w-[256px] 3xl:w-[400px]"},(0,d.tZ)(p(),{className:"min-w-0 shrink-0 w-full"}),(0,d.tZ)("p",{className:"text-lg font-semibold whitespace-nowrap"},e),(0,d.tZ)(p(),{className:"min-w-0 shrink-0 w-full"}))};var f=()=>{var t,e;const n=(0,r.K2)(x),l=null==n||null===(t=n.markdownRemark)||void 0===t||null===(e=t.frontmatter)||void 0===e?void 0:e.stack;return(0,d.tZ)(o.Fragment,null,l?(0,d.tZ)("section",{className:"h-16 flex flex-col relative"},(0,d.tZ)(u,{className:"grow"},l.map((t=>(0,d.tZ)(v,{key:t},t))),(0,d.tZ)(v,null,(0,d.tZ)(i.z,{size:32,className:"-rotate-90"})))):null)};const x="3518807326";var g=n(3793),h=n(216),Z=n(8322);var w=t=>{var e,n,l,a,i,s,c,u,m,p;let{lang:v}=t;const f=(0,r.K2)(b),x=null==f||null===(e=f.markupData)||void 0===e||null===(n=e.nodes)||void 0===n||null===(l=n.find((t=>t.fields.language===v)))||void 0===l||null===(a=l.frontmatter)||void 0===a?void 0:a.blog;let w;return w=v in f?null==f||null===(i=f[v])||void 0===i||null===(s=i.nodes)||void 0===s?void 0:s[0]:null==f||null===(c=f.en)||void 0===c||null===(u=c.nodes)||void 0===u?void 0:u[0],(0,d.tZ)(o.Fragment,null,w?(0,d.tZ)(h.Z,{theme:Z.Q.dark,title:null!==(m=null==x?void 0:x.blogSectionTitle)&&void 0!==m?m:"new in our blog",linkTitle:null!==(p=null==x?void 0:x.blogSectionLinkTitle)&&void 0!==p?p:"all posts",section:"blog",borderB:!0,className:"min-h-[400px]"},(0,d.tZ)(g.Z,{lang:v,post:w,theme:Z.Q.dark,markupData:x})):null)};const b="641077248";var N=n(6745);var y=t=>{var e,n,l,a,i,s,c,u;let{excludeId:m,lang:p}=t;const v=(0,r.K2)(k),f=null==v||null===(e=v.markupData)||void 0===e||null===(n=e.nodes)||void 0===n||null===(l=n.find((t=>t.fields.language===p)))||void 0===l||null===(a=l.frontmatter)||void 0===a?void 0:a.projects;let x;return x=p in v?null==v||null===(i=v[p])||void 0===i?void 0:i.nodes:null===(s=v.en)||void 0===s?void 0:s.nodes,x?(m&&(x=x.filter((t=>t.id!==m))),(0,d.tZ)(h.Z,{theme:Z.Q.dark,section:"projects",title:null!==(c=null==f?void 0:f.moreProjectsSectionTitle)&&void 0!==c?c:"OUR PROJECTS",linkTitle:null!==(u=null==f?void 0:f.moreProjectsSectionLinkTitle)&&void 0!==u?u:"Discover MORE",borderB:!0},(0,d.tZ)("div",{className:"flex justify-between items-center gap-5 lg:gap-10 flex-col sm:flex-row items-stretch"},x.map(((t,e)=>{if(3!==e)return(0,d.tZ)(N.Z,{key:t.id,project:t,lang:p,theme:Z.Q.light,className:"flex-1 sm:last:hidden lg:last:flex"})}))))):(0,d.tZ)(o.Fragment,null)};const k="2469162486";var $=n(9165),O=n(8032),T=n(4032);var C=t=>{let{review:{frontmatter:{company:e,person:n,position:l,location:a,image:o},html:r},className:i}=t;const s=(0,O.c)(o);return(0,d.tZ)("div",{className:`flex flex-col p-6 gap-3.5 bg-secondary-100 hover:shadow-[0px_2px_14px_rgba(68,68,68,0.25)] shadow-[0px_2px_8px_rgba(68,68,68,0.1)] rounded-2.5xl text-main-100 ${i}`},(0,d.tZ)("div",{className:"flex w-full items-start"},s?(0,d.tZ)(O.G,{image:s,alt:e,className:"h-[72px] w-[72px] object-cover rounded-full mr-3.5"}):null,(0,d.tZ)("div",{className:"flex-1 font-normal text-base text-main-70 leading-5"},(0,d.tZ)("h3",{className:"font-bold text-xl text-main-100"},n),(0,d.tZ)("h4",null,(0,d.tZ)("span",null,l),", ",(0,d.tZ)("span",null,e)),(0,d.tZ)("h4",null,a)),(0,d.tZ)(T.t,{size:25,color:"#E4E4E4"})),(0,d.tZ)("div",{className:"review-body text-sm",dangerouslySetInnerHTML:{__html:r}}))};var j=t=>{var e,n,l,a,i,s,c,u,m;let{lang:p}=t;const v=(0,r.K2)(E),f=null==v||null===(e=v.markupData)||void 0===e||null===(n=e.nodes)||void 0===n||null===(l=n.find((t=>t.fields.language===p)))||void 0===l||null===(a=l.frontmatter)||void 0===a?void 0:a.reviews;let x;return x=p in v?null==v||null===(i=v[p])||void 0===i||null===(s=i.nodes)||void 0===s?void 0:s.sort(((t,e)=>t.frontmatter.person>e.frontmatter.person?1:-1)):null==v||null===(c=v.en)||void 0===c||null===(u=c.nodes)||void 0===u?void 0:u.sort(((t,e)=>t.frontmatter.person>e.frontmatter.person?1:-1)),(0,d.tZ)(o.Fragment,null,x?(0,d.tZ)(h.Z,{id:"reviews",theme:Z.Q.light,title:null!==(m=null==f?void 0:f.title)&&void 0!==m?m:"our clients' testimonials",subTitle:null==f?void 0:f.linkTitle,borderB:!0},(0,d.tZ)("div",{className:"flex justify-between items-start gap-5 lg:gap-10 flex-col md:flex-row"},x.map((t=>(0,d.tZ)(C,{review:t,key:t.id,className:"flex-1"}))))):null)};const E="1287994371";var S=n(4532);var I=t=>{let{pageContext:{markupData:e,lang:n}}=t;return(0,d.tZ)(l.Pd.Provider,{value:{style:{verticalAlign:"middle"}}},(0,d.tZ)(a.Z,{title:e.bannerTitle,babylon:!0}),(0,d.tZ)(f,null),(0,d.tZ)(y,{lang:n}),(0,d.tZ)(j,{lang:n}),(0,d.tZ)(w,{lang:n}),(0,d.tZ)(S.Z,{lang:n}))};const M=t=>{let{pageContext:{markupData:e,site:n,lang:l},location:a}=t;return(0,d.tZ)($.Ag,{title:`${e.head} | ${e.bannerTitle.toUpperCase()}`,description:e.metaDescription,siteUrl:n.siteUrl,path:a.pathname,lang:l})}},8322:function(t,e,n){"use strict";n.d(e,{Q:function(){return l}});let l=function(t){return t.dark="dark",t.light="light",t}({})},7451:function(t,e,n){"use strict";n.d(e,{Z:function(){return a}});const l={active:!0,breakpoints:{},delay:4e3,jump:!1,playOnInit:!0,stopOnFocusIn:!0,stopOnInteraction:!0,stopOnMouseEnter:!1,stopOnLastSnap:!1,rootNode:null};function a(t={}){let e,n,o,r=!1,i=!0,s=!1,c=0;function d(){if(o)return;if(!i)return;r||n.emit("autoplay:play");const{ownerWindow:t}=n.internalEngine();t.clearInterval(c),c=t.setInterval(f,e.delay),r=!0}function u(){if(o)return;r&&n.emit("autoplay:stop");const{ownerWindow:t}=n.internalEngine();t.clearInterval(c),c=0,r=!1}function m(){if(p())return i=r,u();i&&d()}function p(){const{ownerDocument:t}=n.internalEngine();return"hidden"===t.visibilityState}function v(t){void 0!==t&&(s=t),i=!0,d()}function f(){const{index:t}=n.internalEngine(),l=t.clone().add(1).get(),a=n.scrollSnapList().length-1;e.stopOnLastSnap&&l===a&&u(),n.canScrollNext()?n.scrollNext(s):n.scrollTo(0,s)}return{name:"autoplay",options:t,init:function(r,c){n=r;const{mergeOptions:v,optionsAtMedia:f}=c,x=v(l,a.globalOptions),g=v(x,t);if(e=f(g),n.scrollSnapList().length<=1)return;s=e.jump,o=!1;const{eventStore:h,ownerDocument:Z}=n.internalEngine(),w=n.rootNode(),b=e.rootNode&&e.rootNode(w)||w,N=n.containerNode();n.on("pointerDown",u),e.stopOnInteraction||n.on("pointerUp",d),e.stopOnMouseEnter&&(h.add(b,"mouseenter",(()=>{i=!1,u()})),e.stopOnInteraction||h.add(b,"mouseleave",(()=>{i=!0,d()}))),e.stopOnFocusIn&&(h.add(N,"focusin",u),e.stopOnInteraction||h.add(N,"focusout",d)),h.add(Z,"visibilitychange",m),e.playOnInit&&!p()&&d()},destroy:function(){n.off("pointerDown",u).off("pointerUp",d),u(),o=!0,r=!1},play:v,stop:function(){r&&u()},reset:function(){r&&v()},isPlaying:function(){return r}}}a.globalOptions=void 0}}]); -//# sourceMappingURL=component---src-pages-templates-index-tsx-c399118fd452a66701b3.js.map \ No newline at end of file +(self.webpackChunkcode_cave=self.webpackChunkcode_cave||[]).push([[832],{6838:function(t,e,n){var l=n(9720).w_;t.exports.z=function(t){return l({tag:"svg",attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M304 280h416c4.4 0 8-3.6 8-8 0-40-8.8-76.7-25.9-108.1-17.2-31.5-42.5-56.8-74-74C596.7 72.8 560 64 520 64h-16c-40 0-76.7 8.8-108.1 25.9-31.5 17.2-56.8 42.5-74 74C304.8 195.3 296 232 296 272c0 4.4 3.6 8 8 8z"}},{tag:"path",attr:{d:"M940 512H792V412c76.8 0 139-62.2 139-139 0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 34.8-28.2 63-63 63H232c-34.8 0-63-28.2-63-63 0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 76.8 62.2 139 139 139v100H84c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h148v96c0 6.5.2 13 .7 19.3C164.1 728.6 116 796.7 116 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-44.2 23.9-82.9 59.6-103.7 6 17.2 13.6 33.6 22.7 49 24.3 41.5 59 76.2 100.5 100.5 28.9 16.9 61 28.8 95.3 34.5 4.4 0 8-3.6 8-8V484c0-4.4 3.6-8 8-8h60c4.4 0 8 3.6 8 8v464.2c0 4.4 3.6 8 8 8 34.3-5.7 66.4-17.6 95.3-34.5 41.5-24.3 76.2-59 100.5-100.5 9.1-15.5 16.7-31.9 22.7-49C812.1 793.1 836 831.8 836 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-79.3-48.1-147.4-116.7-176.7.4-6.4.7-12.8.7-19.3v-96h148c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z"}}]})(t)}},6488:function(t,e,n){var l=n(9720).w_;t.exports.p=function(t){return l({tag:"svg",attr:{viewBox:"0 0 16 16",fill:"currentColor"},child:[{tag:"path",attr:{fillRule:"evenodd",d:"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z",clipRule:"evenodd"}},{tag:"path",attr:{fillRule:"evenodd",d:"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z",clipRule:"evenodd"}}]})(t)}},4032:function(t,e,n){var l=n(9720).w_;t.exports.t=function(t){return l({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z"}}]})(t)}},216:function(t,e,n){"use strict";var l=n(7462),a=n(7294),o=n(4160),r=n(8322),i=n(4471),s=n.n(i),c=n(1164),d=n(917);e.Z=t=>{let{section:e,theme:n,title:i,linkTitle:u,subTitle:m,className:p,children:v,borderT:f,borderB:x,isArrowLink:g=!0,...h}=t;const Z=n===r.Q.dark?"text-secondary-100":"text-main-100",w=n===r.Q.dark?"text-secondary-100 hover:text-secondary-70":"text-main-100 hover:text-main-10",b=n===r.Q.dark?"bg-main-100":"bg-secondary-100";return(0,d.tZ)(a.Fragment,null,f?(0,d.tZ)(s(),{className:"w-full"}):null,(0,d.tZ)("section",(0,l.Z)({className:`w-full py-16 ${b} ${p}`},h),(0,d.tZ)(c.Z,{maxWidthClass:"max-w-[1280px]",className:`flex-col items-center ${Z}`},(0,d.tZ)("div",{className:"flex justify-between w-full sm:items-center pb-8 sm:pb-14 flex-col sm:flex-row gap-5"},(0,d.tZ)("h2",{className:`text-4xl font-bold flex-1 ${Z}`},i.toUpperCase()),e?(0,d.tZ)(o.rU,{to:`/${e}`,className:`w-full sm:w-auto text-start sm:text-end text-xl font-normal cursor-pointer whitespace-nowrap ${w}`},u?u.toUpperCase():"DISCOVER MORE"," ",g?(0,d.tZ)(a.Fragment,null,"→"):null):null,m?(0,d.tZ)("p",{className:`w-full sm:w-auto flex-1 text-start sm:text-end text-xl font-normal ${Z}`},m.toUpperCase()):null),v)),x?(0,d.tZ)(s(),{className:"w-full"}):null)}},3793:function(t,e,n){"use strict";var l=n(4160),a=n(6488),o=n(9165),r=n(8322),i=n(917);e.Z=t=>{let{post:e,theme:n,className:s,markupData:c,lang:d}=t;const{date:u,title:m,text:p}=e.frontmatter,v=Math.floor(e.wordCount.words/200),f=v||1,x=n===r.Q.light?"text-main-100":"text-secondary-100",g=n===r.Q.light?"text-main-70":"text-secondary-70",h=n===r.Q.light?"hover:text-main-10":"hover:text-secondary-10";return(0,i.tZ)(l.rU,{to:`/blog/${e.id}`,className:`flex flex-col sm:flex-row w-full justify-center gap-5 md:gap-14 ${x} ${h} ${s}`,itemScope:!0,itemType:"https://schema.org/Article"},(0,i.tZ)("div",{className:"flex flex-col w-full max-w-[400px] gap-2.5"},(0,i.tZ)("p",{itemProp:"dateCreated",className:`text-lg ${g}`},u),(0,i.tZ)("h2",{itemProp:"headline",className:`text-3xl font-semibold ${x}`},m)),(0,i.tZ)("div",{className:"flex flex-col w-full max-w-[500px] gap-5"},(0,i.tZ)("p",{className:`font-normal text-base ${x}`,itemProp:"abstract"},p.split(" ").slice(0,70).join(" "),"..."),(0,i.tZ)("div",{className:"flex w-full items-center justify-between"},(0,i.tZ)("div",{className:"flex items-center gap-3 text-sm font-bold"},(0,i.tZ)("span",null,null==c?void 0:c.readPostLink),(0,i.tZ)(a.p,{size:14})),(0,i.tZ)("p",{className:`text-sm ${g}`},`${null==c?void 0:c.readingTimeTitle}: ~${f} ${null==c?void 0:c.readingTimeUnits}.`))),(0,i.tZ)(o.Lx,{itemProp:"copyrightHolder",lang:d}))}},6745:function(t,e,n){"use strict";var l=n(4160),a=n(8032),o=n(8322),r=n(6488),i=n(9165),s=n(917);e.Z=t=>{let{project:e,className:n,theme:c,lang:d}=t;const u=(0,a.c)(e.frontmatter.cover),{title:m,teamSize:p,duration:v}=e.frontmatter,f=c===o.Q.light?"text-main-100 hover:text-main-10":"text-secondary-100 hover:text-secondary-10",x=c===o.Q.light?"bg-secondary-100 hover:bg-secondary-100":"bg-main-100 hover:bg-main-100";return(0,s.tZ)(l.rU,{to:`/projects/${e.id}`,className:`${x} ${f} flex flex-col justify-between hover:text-main-10 rounded-2xl p-2.5 gap-2.5 ${n}`,itemScope:!0,itemType:"https://schema.org/CreativeWork"},(0,s.tZ)("div",{className:"group flex-1 relative"},u?(0,s.tZ)(a.G,{image:u,alt:"cover",itemProp:"image",className:"object-contain w-full rounded-[10px] grayscale transition-all group-hover:scale-[1.007]"}):null,(0,s.tZ)("div",{className:"absolute left-2 bottom-2 flex items-center gap-2.5 z-10"},(0,s.tZ)("p",{className:"backdrop-blur-sm backdrop-brightness-75 text-secondary-100 px-5 h-10 flex items-center rounded-lg"},v),(0,s.tZ)("p",{className:"backdrop-blur-sm backdrop-brightness-75 text-secondary-100 px-5 h-10 flex items-center rounded-lg"},p))),(0,s.tZ)("div",{className:"flex px-2.5 py-1 items-center grow"},(0,s.tZ)("h2",{className:"text-base grow font-medium h-full",itemProp:"description"},m),(0,s.tZ)(r.p,{size:20})),(0,s.tZ)(i.Lx,{itemProp:"author",lang:d}))}},171:function(t,e,n){"use strict";n.r(e),n.d(e,{Head:function(){return M},default:function(){return I}});var l=n(9720),a=n(1929),o=n(7294),r=n(4160),i=n(6838),s=n(1312),c=n(7451),d=n(917);var u=(0,o.forwardRef)(((t,e)=>{let{className:n,children:l}=t;const[a,o]=(0,s.Z)({loop:!0,dragFree:!0,duration:1e4,align:"start"},[(0,c.Z)({delay:0,stopOnInteraction:!1,stopOnMouseEnter:!0})]);return(0,d.tZ)("div",{className:`overflow-hidden ${n}`,ref:a},(0,d.tZ)("div",{ref:e,className:"h-full flex items-center",onMouseEnter:()=>{null==o||o.internalEngine().animation.stop()},onMouseLeave:()=>{null==o||o.internalEngine().animation.start()}},l))})),m=n(4471),p=n.n(m);var v=t=>{let{children:e}=t;return(0,d.tZ)("div",{className:"h-full shrink-0 min-w-0 cursor-pointer flex flex-col justify-between items-center content-center w-[192px] md:w-[256px] xl:w-[256px] 3xl:w-[400px]"},(0,d.tZ)(p(),{className:"min-w-0 shrink-0 w-full"}),(0,d.tZ)("p",{className:"text-lg font-semibold whitespace-nowrap"},e),(0,d.tZ)(p(),{className:"min-w-0 shrink-0 w-full"}))};var f=()=>{var t,e;const n=(0,r.K2)(x),l=null==n||null===(t=n.markdownRemark)||void 0===t||null===(e=t.frontmatter)||void 0===e?void 0:e.stack;return(0,d.tZ)(o.Fragment,null,l?(0,d.tZ)("section",{className:"h-16 flex flex-col relative"},(0,d.tZ)(u,{className:"grow"},l.map((t=>(0,d.tZ)(v,{key:t},t))),(0,d.tZ)(v,null,(0,d.tZ)(i.z,{size:32,className:"-rotate-90"})))):null)};const x="3518807326";var g=n(3793),h=n(216),Z=n(8322);var w=t=>{var e,n,l,a,i,s,c,u,m,p;let{lang:v}=t;const f=(0,r.K2)(b),x=null==f||null===(e=f.markupData)||void 0===e||null===(n=e.nodes)||void 0===n||null===(l=n.find((t=>t.fields.language===v)))||void 0===l||null===(a=l.frontmatter)||void 0===a?void 0:a.blog;let w;return w=v in f?null==f||null===(i=f[v])||void 0===i||null===(s=i.nodes)||void 0===s?void 0:s[0]:null==f||null===(c=f.en)||void 0===c||null===(u=c.nodes)||void 0===u?void 0:u[0],(0,d.tZ)(o.Fragment,null,w?(0,d.tZ)(h.Z,{theme:Z.Q.dark,title:null!==(m=null==x?void 0:x.blogSectionTitle)&&void 0!==m?m:"new in our blog",linkTitle:null!==(p=null==x?void 0:x.blogSectionLinkTitle)&&void 0!==p?p:"all posts",section:"blog",borderB:!0,className:"min-h-[400px]"},(0,d.tZ)(g.Z,{lang:v,post:w,theme:Z.Q.dark,markupData:x})):null)};const b="641077248";var N=n(6745);var y=t=>{var e,n,l,a,i,s,c,u;let{excludeId:m,lang:p}=t;const v=(0,r.K2)(k),f=null==v||null===(e=v.markupData)||void 0===e||null===(n=e.nodes)||void 0===n||null===(l=n.find((t=>t.fields.language===p)))||void 0===l||null===(a=l.frontmatter)||void 0===a?void 0:a.projects;let x;return x=p in v?null==v||null===(i=v[p])||void 0===i?void 0:i.nodes:null===(s=v.en)||void 0===s?void 0:s.nodes,x?(m&&(x=x.filter((t=>t.id!==m))),(0,d.tZ)(h.Z,{theme:Z.Q.dark,section:"projects",title:null!==(c=null==f?void 0:f.moreProjectsSectionTitle)&&void 0!==c?c:"OUR PROJECTS",linkTitle:null!==(u=null==f?void 0:f.moreProjectsSectionLinkTitle)&&void 0!==u?u:"Discover MORE",borderB:!0},(0,d.tZ)("div",{className:"flex justify-between items-center gap-5 lg:gap-10 flex-col sm:flex-row items-stretch"},x.map(((t,e)=>{if(3!==e)return(0,d.tZ)(N.Z,{key:t.id,project:t,lang:p,theme:Z.Q.light,className:"flex-1 sm:last:hidden lg:last:flex"})}))))):(0,d.tZ)(o.Fragment,null)};const k="2469162486";var $=n(9165),O=n(8032),T=n(4032);var C=t=>{let{review:{frontmatter:{company:e,person:n,position:l,location:a,image:o},html:r},className:i}=t;const s=(0,O.c)(o);return(0,d.tZ)("div",{className:`flex flex-col p-6 gap-3.5 bg-secondary-100 hover:shadow-[0px_2px_14px_rgba(68,68,68,0.25)] shadow-[0px_2px_8px_rgba(68,68,68,0.1)] rounded-2.5xl text-main-100 ${i}`},(0,d.tZ)("div",{className:"flex w-full items-start"},s?(0,d.tZ)(O.G,{image:s,alt:e,className:"h-[72px] w-[72px] object-cover rounded-full mr-3.5"}):null,(0,d.tZ)("div",{className:"flex-1 font-normal text-base text-main-70 leading-5"},(0,d.tZ)("h3",{className:"font-bold text-xl text-main-100"},n),(0,d.tZ)("h4",null,(0,d.tZ)("span",null,l),", ",(0,d.tZ)("span",null,e)),(0,d.tZ)("h4",null,a)),(0,d.tZ)(T.t,{size:25,color:"#E4E4E4"})),(0,d.tZ)("div",{className:"review-body text-sm",dangerouslySetInnerHTML:{__html:r}}))};var j=t=>{var e,n,l,a,i,s,c,u,m;let{lang:p}=t;const v=(0,r.K2)(E),f=null==v||null===(e=v.markupData)||void 0===e||null===(n=e.nodes)||void 0===n||null===(l=n.find((t=>t.fields.language===p)))||void 0===l||null===(a=l.frontmatter)||void 0===a?void 0:a.reviews;let x;return x=p in v?null==v||null===(i=v[p])||void 0===i||null===(s=i.nodes)||void 0===s?void 0:s.sort(((t,e)=>t.frontmatter.person>e.frontmatter.person?1:-1)):null==v||null===(c=v.en)||void 0===c||null===(u=c.nodes)||void 0===u?void 0:u.sort(((t,e)=>t.frontmatter.person>e.frontmatter.person?1:-1)),(0,d.tZ)(o.Fragment,null,x?(0,d.tZ)(h.Z,{id:"reviews",theme:Z.Q.light,title:null!==(m=null==f?void 0:f.title)&&void 0!==m?m:"our clients' testimonials",subTitle:null==f?void 0:f.linkTitle,borderB:!0},(0,d.tZ)("div",{className:"flex justify-between items-start gap-5 lg:gap-10 flex-col md:flex-row"},x.map((t=>(0,d.tZ)(C,{review:t,key:t.id,className:"flex-1"}))))):null)};const E="1287994371";var S=n(4532);var I=t=>{let{pageContext:{markupData:e,lang:n}}=t;return(0,d.tZ)(l.Pd.Provider,{value:{style:{verticalAlign:"middle"}}},(0,d.tZ)(a.Z,{title:e.bannerTitle,babylon:!0}),(0,d.tZ)(f,null),(0,d.tZ)(y,{lang:n}),(0,d.tZ)(j,{lang:n}),(0,d.tZ)(w,{lang:n}),(0,d.tZ)(S.Z,{lang:n}))};const M=t=>{let{pageContext:{markupData:e,site:n,lang:l},location:a}=t;return(0,d.tZ)($.Ag,{title:`${e.head} | ${e.bannerTitle.toUpperCase()}`,description:e.metaDescription,siteUrl:n.siteUrl,path:a.pathname,lang:l})}},8322:function(t,e,n){"use strict";n.d(e,{Q:function(){return l}});let l=function(t){return t.dark="dark",t.light="light",t}({})},7451:function(t,e,n){"use strict";n.d(e,{Z:function(){return a}});const l={active:!0,breakpoints:{},delay:4e3,jump:!1,playOnInit:!0,stopOnFocusIn:!0,stopOnInteraction:!0,stopOnMouseEnter:!1,stopOnLastSnap:!1,rootNode:null};function a(t={}){let e,n,o,r=!1,i=!0,s=!1,c=0;function d(){if(o)return;if(!i)return;r||n.emit("autoplay:play");const{ownerWindow:t}=n.internalEngine();t.clearInterval(c),c=t.setInterval(f,e.delay),r=!0}function u(){if(o)return;r&&n.emit("autoplay:stop");const{ownerWindow:t}=n.internalEngine();t.clearInterval(c),c=0,r=!1}function m(){if(p())return i=r,u();i&&d()}function p(){const{ownerDocument:t}=n.internalEngine();return"hidden"===t.visibilityState}function v(t){void 0!==t&&(s=t),i=!0,d()}function f(){const{index:t}=n.internalEngine(),l=t.clone().add(1).get(),a=n.scrollSnapList().length-1;e.stopOnLastSnap&&l===a&&u(),n.canScrollNext()?n.scrollNext(s):n.scrollTo(0,s)}return{name:"autoplay",options:t,init:function(r,c){n=r;const{mergeOptions:v,optionsAtMedia:f}=c,x=v(l,a.globalOptions),g=v(x,t);if(e=f(g),n.scrollSnapList().length<=1)return;s=e.jump,o=!1;const{eventStore:h,ownerDocument:Z}=n.internalEngine(),w=n.rootNode(),b=e.rootNode&&e.rootNode(w)||w,N=n.containerNode();n.on("pointerDown",u),e.stopOnInteraction||n.on("pointerUp",d),e.stopOnMouseEnter&&(h.add(b,"mouseenter",(()=>{i=!1,u()})),e.stopOnInteraction||h.add(b,"mouseleave",(()=>{i=!0,d()}))),e.stopOnFocusIn&&(h.add(N,"focusin",u),e.stopOnInteraction||h.add(N,"focusout",d)),h.add(Z,"visibilitychange",m),e.playOnInit&&!p()&&d()},destroy:function(){n.off("pointerDown",u).off("pointerUp",d),u(),o=!0,r=!1},play:v,stop:function(){r&&u()},reset:function(){r&&v()},isPlaying:function(){return r}}}a.globalOptions=void 0}}]); +//# sourceMappingURL=component---src-pages-templates-index-tsx-d535c6a2d4bd5b585572.js.map \ No newline at end of file diff --git a/component---src-pages-templates-index-tsx-c399118fd452a66701b3.js.map b/component---src-pages-templates-index-tsx-d535c6a2d4bd5b585572.js.map similarity index 81% rename from component---src-pages-templates-index-tsx-c399118fd452a66701b3.js.map rename to component---src-pages-templates-index-tsx-d535c6a2d4bd5b585572.js.map index d02b345e..27b22eda 100644 --- a/component---src-pages-templates-index-tsx-c399118fd452a66701b3.js.map +++ b/component---src-pages-templates-index-tsx-d535c6a2d4bd5b585572.js.map @@ -1 +1 @@ -{"version":3,"file":"component---src-pages-templates-index-tsx-c399118fd452a66701b3.js","mappings":"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","sources":["webpack://code-cave/./node_modules/@react-icons/all-files/ai/AiFillBug.js","webpack://code-cave/./node_modules/@react-icons/all-files/bs/BsArrowUpRight.js","webpack://code-cave/./node_modules/@react-icons/all-files/fa/FaQuoteRight.js","webpack://code-cave/./src/components/common/templateSection.tsx","webpack://code-cave/./src/components/posts/postPreview.tsx","webpack://code-cave/./src/components/projects/projectPreview.tsx","webpack://code-cave/./src/components/stack/stackCarousel.tsx","webpack://code-cave/./src/components/stack/stakUnit.tsx","webpack://code-cave/./src/components/stack/stackSection.tsx","webpack://code-cave/./src/components/posts/postSection.tsx","webpack://code-cave/./src/components/projects/projectsSection.tsx","webpack://code-cave/./src/components/reviews/review.tsx","webpack://code-cave/./src/components/reviews/staticReviewsSection.tsx","webpack://code-cave/./src/pagesTemplates/index.tsx","webpack://code-cave/./src/types/common.type.ts","webpack://code-cave/./node_modules/embla-carousel-autoplay/esm/embla-carousel-autoplay.esm.js"],"sourcesContent":["// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.AiFillBug = function AiFillBug (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M304 280h416c4.4 0 8-3.6 8-8 0-40-8.8-76.7-25.9-108.1-17.2-31.5-42.5-56.8-74-74C596.7 72.8 560 64 520 64h-16c-40 0-76.7 8.8-108.1 25.9-31.5 17.2-56.8 42.5-74 74C304.8 195.3 296 232 296 272c0 4.4 3.6 8 8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M940 512H792V412c76.8 0 139-62.2 139-139 0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 34.8-28.2 63-63 63H232c-34.8 0-63-28.2-63-63 0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 76.8 62.2 139 139 139v100H84c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h148v96c0 6.5.2 13 .7 19.3C164.1 728.6 116 796.7 116 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-44.2 23.9-82.9 59.6-103.7 6 17.2 13.6 33.6 22.7 49 24.3 41.5 59 76.2 100.5 100.5 28.9 16.9 61 28.8 95.3 34.5 4.4 0 8-3.6 8-8V484c0-4.4 3.6-8 8-8h60c4.4 0 8 3.6 8 8v464.2c0 4.4 3.6 8 8 8 34.3-5.7 66.4-17.6 95.3-34.5 41.5-24.3 76.2-59 100.5-100.5 9.1-15.5 16.7-31.9 22.7-49C812.1 793.1 836 831.8 836 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-79.3-48.1-147.4-116.7-176.7.4-6.4.7-12.8.7-19.3v-96h148c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z\"}}]})(props);\n};\n","// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.BsArrowUpRight = function BsArrowUpRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z\",\"clipRule\":\"evenodd\"}},{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z\",\"clipRule\":\"evenodd\"}}]})(props);\n};\n","// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.FaQuoteRight = function FaQuoteRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 512 512\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z\"}}]})(props);\n};\n","import React, { PropsWithChildren } from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { Theme } from \"../../types/common.type\";\n\nimport Border from \"../../assets/common/border.svg\";\n\nimport ContentContainer from \"./contentContainer\";\n\ninterface ITemplateSectionProps extends React.HTMLAttributes {\n title: string;\n theme: Theme;\n isArrowLink?: boolean;\n linkTitle?: string;\n subTitle?: string;\n section?: string;\n className?: string;\n borderT?: boolean;\n borderB?: boolean;\n}\n\nconst TemplateSection = ({\n section,\n theme,\n title,\n linkTitle,\n subTitle,\n className,\n children,\n borderT,\n borderB,\n isArrowLink = true,\n ...attr\n}: PropsWithChildren) => {\n const mainColorClass =\n theme === Theme.dark ? \"text-secondary-100\" : \"text-main-100\";\n const linkColorClass =\n theme === Theme.dark\n ? \"text-secondary-100 hover:text-secondary-70\"\n : \"text-main-100 hover:text-main-10\";\n const bgColorClass =\n theme === Theme.dark ? \"bg-main-100\" : \"bg-secondary-100\";\n\n return (\n <>\n {borderT ? : null}\n \n \n
\n

\n {title.toUpperCase()}\n

\n {section ? (\n \n {linkTitle ? linkTitle.toUpperCase() : \"DISCOVER MORE\"}{\" \"}\n {isArrowLink ? <>→ : null}\n \n ) : null}\n {subTitle ? (\n \n {subTitle.toUpperCase()}\n

\n ) : null}\n
\n {children}\n \n \n {borderB ? : null}\n \n );\n};\n\nexport default TemplateSection;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { BsArrowUpRight } from \"@react-icons/all-files/bs/BsArrowUpRight\";\n\nimport { IPostPreviewQueryResult } from \"../../types/post.type\";\nimport { LocalBusinessMetadata } from \"../common/metadata\";\nimport { IBlogMarkupData } from \"../../types/commonMarkup.type\";\nimport { TLang, Theme } from \"../../types/common.type\";\n\nconst PostPreview = ({\n post,\n theme,\n className,\n markupData,\n lang,\n}: {\n post: IPostPreviewQueryResult;\n className?: string;\n theme: Theme;\n markupData?: IBlogMarkupData;\n lang: TLang;\n}) => {\n const { date, title, text } = post.frontmatter;\n\n const minutes = Math.floor(post.wordCount.words / 200);\n const readingTime = minutes ? minutes : 1;\n\n const fontColorClass100 =\n theme === Theme.light ? \"text-main-100\" : \"text-secondary-100\";\n const fontColorClass10 =\n theme === Theme.light ? \"text-main-10\" : \"text-secondary-10\";\n const fontColorHover =\n theme === Theme.light ? \"hover:text-main-10\" : \"hover:text-secondary-10\";\n\n return (\n \n
\n

\n {date}\n

\n \n {title}\n \n
\n
\n \n {text.split(\" \").slice(0, 70).join(\" \")}...\n

\n
\n
\n {markupData?.readPostLink}\n \n
\n

\n {`${markupData?.readingTimeTitle}: ~${readingTime} ${markupData?.readingTimeUnits}.`}\n

\n
\n
\n \n \n );\n};\n\nexport default PostPreview;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\nimport { GatsbyImage, getImage } from \"gatsby-plugin-image\";\n\nimport { IProjectPreviewQueryResult } from \"../../types/project.type\";\nimport { TLang, Theme } from \"../../types/common.type\";\n\nimport { BsArrowUpRight } from \"@react-icons/all-files/bs/BsArrowUpRight\";\n\nimport { LocalBusinessMetadata } from \"../common/metadata\";\n\nconst ProjectPreview = ({\n project,\n className,\n theme,\n lang,\n}: {\n project: IProjectPreviewQueryResult;\n className?: string;\n theme: Theme;\n lang: TLang;\n}) => {\n const cover = getImage(project.frontmatter.cover);\n const { title, teamSize, duration } = project.frontmatter;\n\n const fontColorClass10 =\n theme === Theme.light\n ? \"text-main-100 hover:text-main-10\"\n : \"text-secondary-100 hover:text-secondary-10\";\n const bgColors =\n theme === Theme.light\n ? \"bg-secondary-100 hover:bg-secondary-100\"\n : \"bg-main-100 hover:bg-main-100\";\n\n return (\n \n
\n {cover ? (\n \n ) : null}\n
\n

\n {duration}\n

\n

\n {teamSize}\n

\n
\n
\n
\n \n {title}\n \n \n
\n \n \n );\n};\n\nexport default ProjectPreview;\n","import React, { forwardRef } from \"react\";\n\nimport useEmblaCarousel from \"embla-carousel-react\";\nimport Autoplay from \"embla-carousel-autoplay\";\n\nconst StackCarousel = forwardRef<\n HTMLDivElement,\n React.PropsWithChildren<{ className?: string }>\n>(({ className, children }, ref) => {\n const [emblaRef, emblaApi] = useEmblaCarousel(\n { loop: true, dragFree: true, duration: 10000, align: \"start\" },\n [\n Autoplay({\n delay: 0,\n stopOnInteraction: false,\n stopOnMouseEnter: true,\n }),\n ]\n );\n\n return (\n
\n {\n emblaApi?.internalEngine().animation.stop();\n }}\n onMouseLeave={() => {\n emblaApi?.internalEngine().animation.start();\n }}\n >\n {children}\n
\n \n );\n});\n\nexport default StackCarousel;\n","import React, { PropsWithChildren } from \"react\";\n\nimport Border from \"../../assets/common/border.svg\";\n\n\nconst StackUnit = ({ children }: PropsWithChildren) => {\n return (\n
\n \n

{children}

\n \n
\n );\n};\n\nexport default StackUnit;\n","import React from \"react\";\nimport { useStaticQuery, graphql } from \"gatsby\";\n\nimport { AiFillBug } from \"@react-icons/all-files/ai/AiFillBug\";\n\nimport StackCarousel from \"./stackCarousel\";\nimport StackUnit from \"./stakUnit\";\n\nconst StackSection = () => {\n const techData = useStaticQuery(query);\n const techArr = techData?.markdownRemark?.frontmatter?.stack as\n | string[]\n | null;\n\n return (\n <>\n {techArr ? (\n
\n \n {techArr.map((tech) => (\n {tech}\n ))}\n \n \n \n \n
\n ) : null}\n \n );\n};\n\nexport default StackSection;\n\nexport const query = graphql`\n query {\n markdownRemark(fields: { sourceName: { eq: \"stack\" } }) {\n frontmatter {\n stack\n }\n }\n }\n`;\n","import React from \"react\";\n\nimport { graphql, useStaticQuery } from \"gatsby\";\n\nimport {\n IBlogSectionQueryResult,\n IPostPreviewQueryResult,\n} from \"../../types/post.type\";\n\nimport PostPreview from \"./postPreview\";\nimport TemplateSection from \"../common/templateSection\";\nimport { ILang, Theme } from \"../../types/common.type\";\n\nconst PostSection = ({ lang }: ILang) => {\n const postData = useStaticQuery(query) as IBlogSectionQueryResult;\n\n const sectionMarkup = postData?.markupData?.nodes?.find(\n (node) => node.fields.language === lang\n )?.frontmatter?.blog;\n\n let post: IPostPreviewQueryResult | null | undefined;\n\n if (lang in postData)\n post = postData?.[lang]?.nodes?.[0] as IPostPreviewQueryResult | null;\n else post = postData?.en?.nodes?.[0];\n\n return (\n <>\n {post ? (\n \n \n \n ) : null}\n \n );\n};\n\nexport default PostSection;\n\nexport const query = graphql`\n query {\n en: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"posts\" }, language: { eq: \"en\" } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: 1\n ) {\n nodes {\n id\n frontmatter {\n date(formatString: \"DD MMM YYYY\", locale: \"en\")\n title\n text\n }\n wordCount {\n words\n }\n }\n }\n ru: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"posts\" }, language: { eq: \"ru\" } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: 1\n ) {\n nodes {\n id\n frontmatter {\n date(formatString: \"DD MMM YYYY\", locale: \"ru\")\n title\n text\n }\n wordCount {\n words\n }\n }\n }\n markupData: allMarkdownRemark(\n filter: { fields: { sourceName: { eq: \"common\" } } }\n sort: { frontmatter: { order: ASC } }\n ) {\n nodes {\n fields {\n language\n }\n frontmatter {\n blog {\n bannerTitle\n head\n readPostLink\n readingTimeTitle\n readingTimeUnits\n postFooterTitle\n postFooterText\n blogSectionTitle\n blogSectionLinkTitle\n }\n }\n }\n }\n }\n`;\n","import React from \"react\";\n\nimport { graphql, useStaticQuery } from \"gatsby\";\n\nimport {\n IProjectPreviewQueryResult,\n IProjectSectionQueryResult,\n} from \"../../types/project.type\";\n\nimport ProjectPreview from \"./projectPreview\";\nimport TemplateSection from \"../common/templateSection\";\nimport { ILang, Theme } from \"../../types/common.type\";\n\ninterface IProjectsSectionProps extends ILang {\n excludeId?: string;\n}\n\nconst ProjectsSection = ({ excludeId, lang }: IProjectsSectionProps) => {\n const projectsPreviewData = useStaticQuery(\n query\n ) as IProjectSectionQueryResult;\n\n const sectionMarkup = projectsPreviewData?.markupData?.nodes?.find(\n (node) => node.fields.language === lang\n )?.frontmatter?.projects;\n\n let projects: IProjectPreviewQueryResult[] | null | undefined;\n if (lang in projectsPreviewData)\n projects = projectsPreviewData?.[lang]?.nodes as\n | IProjectPreviewQueryResult[]\n | null\n | undefined;\n else projects = projectsPreviewData.en?.nodes;\n\n if (!projects) return <>;\n\n if (excludeId) {\n projects = projects.filter((project) => project.id !== excludeId);\n }\n\n return (\n \n
\n {projects.map((project, i) => {\n if (i === 3) return;\n return (\n \n );\n })}\n
\n \n );\n};\n\nexport default ProjectsSection;\n\nexport const query = graphql`\n {\n en: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"projects\" }, language: { eq: \"en\" } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: 4\n ) {\n nodes {\n id\n frontmatter {\n title\n teamSize\n duration\n cover {\n childImageSharp {\n gatsbyImageData(\n width: 400\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n )\n }\n }\n }\n }\n }\n ru: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"projects\" }, language: { eq: \"ru\" } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: 4\n ) {\n nodes {\n id\n frontmatter {\n title\n teamSize\n duration\n cover {\n childImageSharp {\n gatsbyImageData(\n width: 400\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n )\n }\n }\n }\n }\n }\n markupData: allMarkdownRemark(\n filter: { fields: { sourceName: { eq: \"common\" } } }\n sort: { frontmatter: { order: ASC } }\n ) {\n nodes {\n fields {\n language\n }\n frontmatter {\n projects {\n moreProjectsSectionTitle\n moreProjectsSectionLinkTitle\n }\n }\n }\n }\n }\n`;\n","import React from \"react\";\nimport { GatsbyImage, getImage } from \"gatsby-plugin-image\";\n\nimport { IReviewQueryResult } from \"../../types/review.type\";\n\nimport { FaQuoteRight } from \"@react-icons/all-files/fa/FaQuoteRight\";\n\nconst Review = ({\n review: {\n frontmatter: { company, person, position, location, image },\n html,\n },\n className,\n}: {\n review: IReviewQueryResult;\n className?: string;\n}) => {\n const avatar = getImage(image);\n\n return (\n \n
\n {avatar ? (\n \n ) : null}\n
\n

{person}

\n

\n {position}, {company}\n

\n

{location}

\n
\n \n
\n \n \n\n //
\n //
\n // \n // {avatar ? (\n // \n // ) : null}\n //
\n //
\n //

{person}

\n // {person}\n //

\n // {position}, {company}\n //

\n //

\n // {location}\n //

\n //
\n //
\n // \n // \n );\n};\n\nexport default Review;\n","import React from \"react\";\nimport { graphql, useStaticQuery } from \"gatsby\";\n\nimport { ILang, Theme } from \"../../types/common.type\";\nimport {\n IReviewQueryResult,\n IReviewSectionQueryResult,\n} from \"../../types/review.type\";\n\nimport TemplateSection from \"../common/templateSection\";\nimport Review from \"./review\";\n\nconst StaticReviewsSection = ({ lang }: ILang) => {\n const reviewsData = useStaticQuery(query) as IReviewSectionQueryResult;\n\n const sectionMarkup = reviewsData?.markupData?.nodes?.find(\n (node) => node.fields.language === lang\n )?.frontmatter?.reviews;\n\n let reviews: IReviewQueryResult[] | null | undefined;\n\n if (lang in reviewsData)\n reviews = reviewsData?.[lang]?.nodes?.sort((a, b) =>\n a.frontmatter.person > b.frontmatter.person ? 1 : -1\n ) as IReviewQueryResult[] | null | undefined;\n else\n reviews = reviewsData?.en?.nodes?.sort((a, b) =>\n a.frontmatter.person > b.frontmatter.person ? 1 : -1\n );\n\n return (\n <>\n {reviews ? (\n \n
\n {reviews.map((review) => (\n \n ))}\n
\n \n ) : null}\n \n );\n};\n\nexport default StaticReviewsSection;\n\nexport const query = graphql`\n query {\n en: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"reviews\" }, language: { eq: \"en\" } }\n }\n ) {\n nodes {\n id\n html\n frontmatter {\n company\n location\n person\n position\n image {\n childImageSharp {\n gatsbyImageData(\n height: 112\n placeholder: BLURRED\n formats: [AUTO, AVIF, WEBP]\n )\n }\n }\n }\n }\n }\n ru: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"reviews\" }, language: { eq: \"ru\" } }\n }\n ) {\n nodes {\n id\n html\n frontmatter {\n company\n location\n person\n position\n image {\n childImageSharp {\n gatsbyImageData(\n height: 112\n placeholder: BLURRED\n formats: [AUTO, AVIF, WEBP]\n )\n }\n }\n }\n }\n }\n markupData: allMarkdownRemark(\n filter: { fields: { sourceName: { eq: \"common\" } } }\n sort: { frontmatter: { order: ASC } }\n ) {\n nodes {\n fields {\n language\n }\n frontmatter {\n reviews {\n title\n linkTitle\n }\n }\n }\n }\n }\n`;\n","import * as React from \"react\";\nimport type { HeadFC, HeadProps, PageProps } from \"gatsby\";\n\nimport { IconContext } from \"@react-icons/all-files\";\nimport \"../styles/styles.css\";\n\nimport { IIndexPageContext } from \"../types/index.type\";\n\nimport Banner from \"../components/common/banner\";\nimport StackSection from \"../components/stack/stackSection\";\nimport PostSection from \"../components/posts/postSection\";\nimport ProjectsSection from \"../components/projects/projectsSection\";\nimport { HeadSeo } from \"../components/common/metadata\";\nimport StaticReviewsSection from \"../components/reviews/staticReviewsSection\";\nimport ContactFormSection from \"../components/forms/contactFormSection\";\n\nconst IndexPage = ({\n pageContext: { markupData, lang },\n}: PageProps) => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nexport default IndexPage;\n\nexport const Head: HeadFC = ({\n pageContext: { markupData, site, lang },\n location,\n}: HeadProps) => {\n return (\n \n );\n};\n","export interface ILang {\n lang: TLang;\n}\n\nexport type TLang = \"en\" | \"ru\";\n\nexport type TLinks = \"services\" | \"workflow\" | \"projects\" | \"blog\";\n\nexport interface IBasePageContext extends ILang {\n site: ISiteMetadata;\n}\n\nexport interface IMdQueryResult {\n allMarkdownRemark: {\n nodes: T[];\n };\n}\n\nexport interface ISiteMetadata {\n title: string;\n description: string;\n siteUrl: string;\n image: string;\n analyticsId: string;\n}\n\nexport enum Theme {\n dark = \"dark\",\n light = \"light\",\n}\n","const defaultOptions = {\n active: true,\n breakpoints: {},\n delay: 4000,\n jump: false,\n playOnInit: true,\n stopOnFocusIn: true,\n stopOnInteraction: true,\n stopOnMouseEnter: false,\n stopOnLastSnap: false,\n rootNode: null\n};\n\nfunction Autoplay(userOptions = {}) {\n let options;\n let emblaApi;\n let destroyed;\n let playing = false;\n let resume = true;\n let jump = false;\n let timer = 0;\n function init(emblaApiInstance, optionsHandler) {\n emblaApi = emblaApiInstance;\n const {\n mergeOptions,\n optionsAtMedia\n } = optionsHandler;\n const optionsBase = mergeOptions(defaultOptions, Autoplay.globalOptions);\n const allOptions = mergeOptions(optionsBase, userOptions);\n options = optionsAtMedia(allOptions);\n if (emblaApi.scrollSnapList().length <= 1) return;\n jump = options.jump;\n destroyed = false;\n const {\n eventStore,\n ownerDocument\n } = emblaApi.internalEngine();\n const emblaRoot = emblaApi.rootNode();\n const root = options.rootNode && options.rootNode(emblaRoot) || emblaRoot;\n const container = emblaApi.containerNode();\n emblaApi.on('pointerDown', stopTimer);\n if (!options.stopOnInteraction) {\n emblaApi.on('pointerUp', startTimer);\n }\n if (options.stopOnMouseEnter) {\n eventStore.add(root, 'mouseenter', () => {\n resume = false;\n stopTimer();\n });\n if (!options.stopOnInteraction) {\n eventStore.add(root, 'mouseleave', () => {\n resume = true;\n startTimer();\n });\n }\n }\n if (options.stopOnFocusIn) {\n eventStore.add(container, 'focusin', stopTimer);\n if (!options.stopOnInteraction) {\n eventStore.add(container, 'focusout', startTimer);\n }\n }\n eventStore.add(ownerDocument, 'visibilitychange', visibilityChange);\n if (options.playOnInit && !documentIsHidden()) startTimer();\n }\n function destroy() {\n emblaApi.off('pointerDown', stopTimer).off('pointerUp', startTimer);\n stopTimer();\n destroyed = true;\n playing = false;\n }\n function startTimer() {\n if (destroyed) return;\n if (!resume) return;\n if (!playing) emblaApi.emit('autoplay:play');\n const {\n ownerWindow\n } = emblaApi.internalEngine();\n ownerWindow.clearInterval(timer);\n timer = ownerWindow.setInterval(next, options.delay);\n playing = true;\n }\n function stopTimer() {\n if (destroyed) return;\n if (playing) emblaApi.emit('autoplay:stop');\n const {\n ownerWindow\n } = emblaApi.internalEngine();\n ownerWindow.clearInterval(timer);\n timer = 0;\n playing = false;\n }\n function visibilityChange() {\n if (documentIsHidden()) {\n resume = playing;\n return stopTimer();\n }\n if (resume) startTimer();\n }\n function documentIsHidden() {\n const {\n ownerDocument\n } = emblaApi.internalEngine();\n return ownerDocument.visibilityState === 'hidden';\n }\n function play(jumpOverride) {\n if (typeof jumpOverride !== 'undefined') jump = jumpOverride;\n resume = true;\n startTimer();\n }\n function stop() {\n if (playing) stopTimer();\n }\n function reset() {\n if (playing) play();\n }\n function isPlaying() {\n return playing;\n }\n function next() {\n const {\n index\n } = emblaApi.internalEngine();\n const nextIndex = index.clone().add(1).get();\n const lastIndex = emblaApi.scrollSnapList().length - 1;\n const kill = options.stopOnLastSnap && nextIndex === lastIndex;\n if (kill) stopTimer();\n if (emblaApi.canScrollNext()) {\n emblaApi.scrollNext(jump);\n } else {\n emblaApi.scrollTo(0, jump);\n }\n }\n const self = {\n name: 'autoplay',\n options: userOptions,\n init,\n destroy,\n play,\n stop,\n reset,\n isPlaying\n };\n return self;\n}\nAutoplay.globalOptions = undefined;\n\nexport { Autoplay as default };\n//# sourceMappingURL=embla-carousel-autoplay.esm.js.map\n"],"names":["GenIcon","module","exports","props","_ref","section","theme","title","linkTitle","subTitle","className","children","borderT","borderB","isArrowLink","attr","mainColorClass","Theme","dark","linkColorClass","bgColorClass","___EmotionJSX","React","Border","_extends","ContentContainer","maxWidthClass","toUpperCase","Link","to","post","markupData","lang","date","text","frontmatter","minutes","Math","floor","wordCount","words","readingTime","fontColorClass100","light","fontColorClass10","fontColorHover","id","itemScope","itemType","itemProp","split","slice","join","readPostLink","BsArrowUpRight","size","readingTimeTitle","readingTimeUnits","LocalBusinessMetadata","project","cover","getImage","teamSize","duration","bgColors","GatsbyImage","image","alt","forwardRef","ref","emblaRef","emblaApi","useEmblaCarousel","loop","dragFree","align","Autoplay","delay","stopOnInteraction","stopOnMouseEnter","onMouseEnter","internalEngine","animation","stop","onMouseLeave","start","StackSection","_techData$markdownRem","_techData$markdownRem2","techData","useStaticQuery","query","techArr","markdownRemark","stack","StackCarousel","map","tech","StackUnit","key","AiFillBug","_postData$markupData","_postData$markupData$","_postData$markupData$2","_postData$markupData$3","_postData$lang","_postData$lang$nodes","_postData$en","_postData$en$nodes","_sectionMarkup$blogSe","_sectionMarkup$blogSe2","postData","sectionMarkup","nodes","find","node","fields","language","blog","en","TemplateSection","blogSectionTitle","blogSectionLinkTitle","PostPreview","_projectsPreviewData$","_projectsPreviewData$2","_projectsPreviewData$3","_projectsPreviewData$4","_projectsPreviewData$5","_projectsPreviewData$6","_sectionMarkup$morePr","_sectionMarkup$morePr2","excludeId","projectsPreviewData","projects","filter","moreProjectsSectionTitle","moreProjectsSectionLinkTitle","i","ProjectPreview","review","company","person","position","location","html","avatar","FaQuoteRight","color","dangerouslySetInnerHTML","__html","_reviewsData$markupDa","_reviewsData$markupDa2","_reviewsData$markupDa3","_reviewsData$markupDa4","_reviewsData$lang","_reviewsData$lang$nod","_reviewsData$en","_reviewsData$en$nodes","_sectionMarkup$title","reviewsData","reviews","sort","a","b","Review","pageContext","IconContext","Provider","value","style","verticalAlign","Banner","bannerTitle","babylon","ProjectsSection","StaticReviewsSection","PostSection","ContactFormSection","Head","_ref2","site","HeadSeo","head","description","metaDescription","siteUrl","path","pathname","defaultOptions","active","breakpoints","jump","playOnInit","stopOnFocusIn","stopOnLastSnap","rootNode","userOptions","options","destroyed","playing","resume","timer","startTimer","emit","ownerWindow","clearInterval","setInterval","next","stopTimer","visibilityChange","documentIsHidden","ownerDocument","visibilityState","play","jumpOverride","index","nextIndex","clone","add","get","lastIndex","scrollSnapList","length","canScrollNext","scrollNext","scrollTo","name","init","emblaApiInstance","optionsHandler","mergeOptions","optionsAtMedia","optionsBase","globalOptions","allOptions","eventStore","emblaRoot","root","container","containerNode","on","destroy","off","reset","isPlaying","undefined"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"component---src-pages-templates-index-tsx-d535c6a2d4bd5b585572.js","mappings":"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","sources":["webpack://code-cave/./node_modules/@react-icons/all-files/ai/AiFillBug.js","webpack://code-cave/./node_modules/@react-icons/all-files/bs/BsArrowUpRight.js","webpack://code-cave/./node_modules/@react-icons/all-files/fa/FaQuoteRight.js","webpack://code-cave/./src/components/common/templateSection.tsx","webpack://code-cave/./src/components/posts/postPreview.tsx","webpack://code-cave/./src/components/projects/projectPreview.tsx","webpack://code-cave/./src/components/stack/stackCarousel.tsx","webpack://code-cave/./src/components/stack/stakUnit.tsx","webpack://code-cave/./src/components/stack/stackSection.tsx","webpack://code-cave/./src/components/posts/postSection.tsx","webpack://code-cave/./src/components/projects/projectsSection.tsx","webpack://code-cave/./src/components/reviews/review.tsx","webpack://code-cave/./src/components/reviews/staticReviewsSection.tsx","webpack://code-cave/./src/pagesTemplates/index.tsx","webpack://code-cave/./src/types/common.type.ts","webpack://code-cave/./node_modules/embla-carousel-autoplay/esm/embla-carousel-autoplay.esm.js"],"sourcesContent":["// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.AiFillBug = function AiFillBug (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M304 280h416c4.4 0 8-3.6 8-8 0-40-8.8-76.7-25.9-108.1-17.2-31.5-42.5-56.8-74-74C596.7 72.8 560 64 520 64h-16c-40 0-76.7 8.8-108.1 25.9-31.5 17.2-56.8 42.5-74 74C304.8 195.3 296 232 296 272c0 4.4 3.6 8 8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M940 512H792V412c76.8 0 139-62.2 139-139 0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 34.8-28.2 63-63 63H232c-34.8 0-63-28.2-63-63 0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 76.8 62.2 139 139 139v100H84c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h148v96c0 6.5.2 13 .7 19.3C164.1 728.6 116 796.7 116 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-44.2 23.9-82.9 59.6-103.7 6 17.2 13.6 33.6 22.7 49 24.3 41.5 59 76.2 100.5 100.5 28.9 16.9 61 28.8 95.3 34.5 4.4 0 8-3.6 8-8V484c0-4.4 3.6-8 8-8h60c4.4 0 8 3.6 8 8v464.2c0 4.4 3.6 8 8 8 34.3-5.7 66.4-17.6 95.3-34.5 41.5-24.3 76.2-59 100.5-100.5 9.1-15.5 16.7-31.9 22.7-49C812.1 793.1 836 831.8 836 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-79.3-48.1-147.4-116.7-176.7.4-6.4.7-12.8.7-19.3v-96h148c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z\"}}]})(props);\n};\n","// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.BsArrowUpRight = function BsArrowUpRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z\",\"clipRule\":\"evenodd\"}},{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z\",\"clipRule\":\"evenodd\"}}]})(props);\n};\n","// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.FaQuoteRight = function FaQuoteRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 512 512\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z\"}}]})(props);\n};\n","import React, { PropsWithChildren } from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { Theme } from \"../../types/common.type\";\n\nimport Border from \"../../assets/common/border.svg\";\n\nimport ContentContainer from \"./contentContainer\";\n\ninterface ITemplateSectionProps extends React.HTMLAttributes {\n title: string;\n theme: Theme;\n isArrowLink?: boolean;\n linkTitle?: string;\n subTitle?: string;\n section?: string;\n className?: string;\n borderT?: boolean;\n borderB?: boolean;\n}\n\nconst TemplateSection = ({\n section,\n theme,\n title,\n linkTitle,\n subTitle,\n className,\n children,\n borderT,\n borderB,\n isArrowLink = true,\n ...attr\n}: PropsWithChildren) => {\n const mainColorClass =\n theme === Theme.dark ? \"text-secondary-100\" : \"text-main-100\";\n const linkColorClass =\n theme === Theme.dark\n ? \"text-secondary-100 hover:text-secondary-70\"\n : \"text-main-100 hover:text-main-10\";\n const bgColorClass =\n theme === Theme.dark ? \"bg-main-100\" : \"bg-secondary-100\";\n\n return (\n <>\n {borderT ? : null}\n \n \n
\n

\n {title.toUpperCase()}\n

\n {section ? (\n \n {linkTitle ? linkTitle.toUpperCase() : \"DISCOVER MORE\"}{\" \"}\n {isArrowLink ? <>→ : null}\n \n ) : null}\n {subTitle ? (\n \n {subTitle.toUpperCase()}\n

\n ) : null}\n
\n {children}\n \n \n {borderB ? : null}\n \n );\n};\n\nexport default TemplateSection;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { BsArrowUpRight } from \"@react-icons/all-files/bs/BsArrowUpRight\";\n\nimport { IPostPreviewQueryResult } from \"../../types/post.type\";\nimport { LocalBusinessMetadata } from \"../common/metadata\";\nimport { IBlogMarkupData } from \"../../types/commonMarkup.type\";\nimport { TLang, Theme } from \"../../types/common.type\";\n\nconst PostPreview = ({\n post,\n theme,\n className,\n markupData,\n lang,\n}: {\n post: IPostPreviewQueryResult;\n className?: string;\n theme: Theme;\n markupData?: IBlogMarkupData;\n lang: TLang;\n}) => {\n const { date, title, text } = post.frontmatter;\n\n const minutes = Math.floor(post.wordCount.words / 200);\n const readingTime = minutes ? minutes : 1;\n\n const fontColorClass100 =\n theme === Theme.light ? \"text-main-100\" : \"text-secondary-100\";\n const fontColorClass70 =\n theme === Theme.light ? \"text-main-70\" : \"text-secondary-70\";\n const fontColorHover =\n theme === Theme.light ? \"hover:text-main-10\" : \"hover:text-secondary-10\";\n\n return (\n \n
\n

\n {date}\n

\n \n {title}\n \n
\n
\n \n {text.split(\" \").slice(0, 70).join(\" \")}...\n

\n
\n
\n {markupData?.readPostLink}\n \n
\n

\n {`${markupData?.readingTimeTitle}: ~${readingTime} ${markupData?.readingTimeUnits}.`}\n

\n
\n
\n \n \n );\n};\n\nexport default PostPreview;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\nimport { GatsbyImage, getImage } from \"gatsby-plugin-image\";\n\nimport { IProjectPreviewQueryResult } from \"../../types/project.type\";\nimport { TLang, Theme } from \"../../types/common.type\";\n\nimport { BsArrowUpRight } from \"@react-icons/all-files/bs/BsArrowUpRight\";\n\nimport { LocalBusinessMetadata } from \"../common/metadata\";\n\nconst ProjectPreview = ({\n project,\n className,\n theme,\n lang,\n}: {\n project: IProjectPreviewQueryResult;\n className?: string;\n theme: Theme;\n lang: TLang;\n}) => {\n const cover = getImage(project.frontmatter.cover);\n const { title, teamSize, duration } = project.frontmatter;\n\n const fontColorClass10 =\n theme === Theme.light\n ? \"text-main-100 hover:text-main-10\"\n : \"text-secondary-100 hover:text-secondary-10\";\n const bgColors =\n theme === Theme.light\n ? \"bg-secondary-100 hover:bg-secondary-100\"\n : \"bg-main-100 hover:bg-main-100\";\n\n return (\n \n
\n {cover ? (\n \n ) : null}\n
\n

\n {duration}\n

\n

\n {teamSize}\n

\n
\n
\n
\n \n {title}\n \n \n
\n \n \n );\n};\n\nexport default ProjectPreview;\n","import React, { forwardRef } from \"react\";\n\nimport useEmblaCarousel from \"embla-carousel-react\";\nimport Autoplay from \"embla-carousel-autoplay\";\n\nconst StackCarousel = forwardRef<\n HTMLDivElement,\n React.PropsWithChildren<{ className?: string }>\n>(({ className, children }, ref) => {\n const [emblaRef, emblaApi] = useEmblaCarousel(\n { loop: true, dragFree: true, duration: 10000, align: \"start\" },\n [\n Autoplay({\n delay: 0,\n stopOnInteraction: false,\n stopOnMouseEnter: true,\n }),\n ]\n );\n\n return (\n
\n {\n emblaApi?.internalEngine().animation.stop();\n }}\n onMouseLeave={() => {\n emblaApi?.internalEngine().animation.start();\n }}\n >\n {children}\n
\n \n );\n});\n\nexport default StackCarousel;\n","import React, { PropsWithChildren } from \"react\";\n\nimport Border from \"../../assets/common/border.svg\";\n\n\nconst StackUnit = ({ children }: PropsWithChildren) => {\n return (\n
\n \n

{children}

\n \n
\n );\n};\n\nexport default StackUnit;\n","import React from \"react\";\nimport { useStaticQuery, graphql } from \"gatsby\";\n\nimport { AiFillBug } from \"@react-icons/all-files/ai/AiFillBug\";\n\nimport StackCarousel from \"./stackCarousel\";\nimport StackUnit from \"./stakUnit\";\n\nconst StackSection = () => {\n const techData = useStaticQuery(query);\n const techArr = techData?.markdownRemark?.frontmatter?.stack as\n | string[]\n | null;\n\n return (\n <>\n {techArr ? (\n
\n \n {techArr.map((tech) => (\n {tech}\n ))}\n \n \n \n \n
\n ) : null}\n \n );\n};\n\nexport default StackSection;\n\nexport const query = graphql`\n query {\n markdownRemark(fields: { sourceName: { eq: \"stack\" } }) {\n frontmatter {\n stack\n }\n }\n }\n`;\n","import React from \"react\";\n\nimport { graphql, useStaticQuery } from \"gatsby\";\n\nimport {\n IBlogSectionQueryResult,\n IPostPreviewQueryResult,\n} from \"../../types/post.type\";\n\nimport PostPreview from \"./postPreview\";\nimport TemplateSection from \"../common/templateSection\";\nimport { ILang, Theme } from \"../../types/common.type\";\n\nconst PostSection = ({ lang }: ILang) => {\n const postData = useStaticQuery(query) as IBlogSectionQueryResult;\n\n const sectionMarkup = postData?.markupData?.nodes?.find(\n (node) => node.fields.language === lang\n )?.frontmatter?.blog;\n\n let post: IPostPreviewQueryResult | null | undefined;\n\n if (lang in postData)\n post = postData?.[lang]?.nodes?.[0] as IPostPreviewQueryResult | null;\n else post = postData?.en?.nodes?.[0];\n\n return (\n <>\n {post ? (\n \n \n \n ) : null}\n \n );\n};\n\nexport default PostSection;\n\nexport const query = graphql`\n query {\n en: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"posts\" }, language: { eq: \"en\" } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: 1\n ) {\n nodes {\n id\n frontmatter {\n date(formatString: \"DD MMM YYYY\", locale: \"en\")\n title\n text\n }\n wordCount {\n words\n }\n }\n }\n ru: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"posts\" }, language: { eq: \"ru\" } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: 1\n ) {\n nodes {\n id\n frontmatter {\n date(formatString: \"DD MMM YYYY\", locale: \"ru\")\n title\n text\n }\n wordCount {\n words\n }\n }\n }\n markupData: allMarkdownRemark(\n filter: { fields: { sourceName: { eq: \"common\" } } }\n sort: { frontmatter: { order: ASC } }\n ) {\n nodes {\n fields {\n language\n }\n frontmatter {\n blog {\n bannerTitle\n head\n readPostLink\n readingTimeTitle\n readingTimeUnits\n postFooterTitle\n postFooterText\n blogSectionTitle\n blogSectionLinkTitle\n }\n }\n }\n }\n }\n`;\n","import React from \"react\";\n\nimport { graphql, useStaticQuery } from \"gatsby\";\n\nimport {\n IProjectPreviewQueryResult,\n IProjectSectionQueryResult,\n} from \"../../types/project.type\";\n\nimport ProjectPreview from \"./projectPreview\";\nimport TemplateSection from \"../common/templateSection\";\nimport { ILang, Theme } from \"../../types/common.type\";\n\ninterface IProjectsSectionProps extends ILang {\n excludeId?: string;\n}\n\nconst ProjectsSection = ({ excludeId, lang }: IProjectsSectionProps) => {\n const projectsPreviewData = useStaticQuery(\n query\n ) as IProjectSectionQueryResult;\n\n const sectionMarkup = projectsPreviewData?.markupData?.nodes?.find(\n (node) => node.fields.language === lang\n )?.frontmatter?.projects;\n\n let projects: IProjectPreviewQueryResult[] | null | undefined;\n if (lang in projectsPreviewData)\n projects = projectsPreviewData?.[lang]?.nodes as\n | IProjectPreviewQueryResult[]\n | null\n | undefined;\n else projects = projectsPreviewData.en?.nodes;\n\n if (!projects) return <>;\n\n if (excludeId) {\n projects = projects.filter((project) => project.id !== excludeId);\n }\n\n return (\n \n
\n {projects.map((project, i) => {\n if (i === 3) return;\n return (\n \n );\n })}\n
\n \n );\n};\n\nexport default ProjectsSection;\n\nexport const query = graphql`\n {\n en: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"projects\" }, language: { eq: \"en\" } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: 4\n ) {\n nodes {\n id\n frontmatter {\n title\n teamSize\n duration\n cover {\n childImageSharp {\n gatsbyImageData(\n width: 400\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n )\n }\n }\n }\n }\n }\n ru: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"projects\" }, language: { eq: \"ru\" } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: 4\n ) {\n nodes {\n id\n frontmatter {\n title\n teamSize\n duration\n cover {\n childImageSharp {\n gatsbyImageData(\n width: 400\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n )\n }\n }\n }\n }\n }\n markupData: allMarkdownRemark(\n filter: { fields: { sourceName: { eq: \"common\" } } }\n sort: { frontmatter: { order: ASC } }\n ) {\n nodes {\n fields {\n language\n }\n frontmatter {\n projects {\n moreProjectsSectionTitle\n moreProjectsSectionLinkTitle\n }\n }\n }\n }\n }\n`;\n","import React from \"react\";\nimport { GatsbyImage, getImage } from \"gatsby-plugin-image\";\n\nimport { IReviewQueryResult } from \"../../types/review.type\";\n\nimport { FaQuoteRight } from \"@react-icons/all-files/fa/FaQuoteRight\";\n\nconst Review = ({\n review: {\n frontmatter: { company, person, position, location, image },\n html,\n },\n className,\n}: {\n review: IReviewQueryResult;\n className?: string;\n}) => {\n const avatar = getImage(image);\n\n return (\n \n
\n {avatar ? (\n \n ) : null}\n
\n

{person}

\n

\n {position}, {company}\n

\n

{location}

\n
\n \n
\n \n \n\n //
\n //
\n // \n // {avatar ? (\n // \n // ) : null}\n //
\n //
\n //

{person}

\n // {person}\n //

\n // {position}, {company}\n //

\n //

\n // {location}\n //

\n //
\n //
\n // \n // \n );\n};\n\nexport default Review;\n","import React from \"react\";\nimport { graphql, useStaticQuery } from \"gatsby\";\n\nimport { ILang, Theme } from \"../../types/common.type\";\nimport {\n IReviewQueryResult,\n IReviewSectionQueryResult,\n} from \"../../types/review.type\";\n\nimport TemplateSection from \"../common/templateSection\";\nimport Review from \"./review\";\n\nconst StaticReviewsSection = ({ lang }: ILang) => {\n const reviewsData = useStaticQuery(query) as IReviewSectionQueryResult;\n\n const sectionMarkup = reviewsData?.markupData?.nodes?.find(\n (node) => node.fields.language === lang\n )?.frontmatter?.reviews;\n\n let reviews: IReviewQueryResult[] | null | undefined;\n\n if (lang in reviewsData)\n reviews = reviewsData?.[lang]?.nodes?.sort((a, b) =>\n a.frontmatter.person > b.frontmatter.person ? 1 : -1\n ) as IReviewQueryResult[] | null | undefined;\n else\n reviews = reviewsData?.en?.nodes?.sort((a, b) =>\n a.frontmatter.person > b.frontmatter.person ? 1 : -1\n );\n\n return (\n <>\n {reviews ? (\n \n
\n {reviews.map((review) => (\n \n ))}\n
\n \n ) : null}\n \n );\n};\n\nexport default StaticReviewsSection;\n\nexport const query = graphql`\n query {\n en: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"reviews\" }, language: { eq: \"en\" } }\n }\n ) {\n nodes {\n id\n html\n frontmatter {\n company\n location\n person\n position\n image {\n childImageSharp {\n gatsbyImageData(\n height: 112\n placeholder: BLURRED\n formats: [AUTO, AVIF, WEBP]\n )\n }\n }\n }\n }\n }\n ru: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"reviews\" }, language: { eq: \"ru\" } }\n }\n ) {\n nodes {\n id\n html\n frontmatter {\n company\n location\n person\n position\n image {\n childImageSharp {\n gatsbyImageData(\n height: 112\n placeholder: BLURRED\n formats: [AUTO, AVIF, WEBP]\n )\n }\n }\n }\n }\n }\n markupData: allMarkdownRemark(\n filter: { fields: { sourceName: { eq: \"common\" } } }\n sort: { frontmatter: { order: ASC } }\n ) {\n nodes {\n fields {\n language\n }\n frontmatter {\n reviews {\n title\n linkTitle\n }\n }\n }\n }\n }\n`;\n","import * as React from \"react\";\nimport type { HeadFC, HeadProps, PageProps } from \"gatsby\";\n\nimport { IconContext } from \"@react-icons/all-files\";\nimport \"../styles/styles.css\";\n\nimport { IIndexPageContext } from \"../types/index.type\";\n\nimport Banner from \"../components/common/banner\";\nimport StackSection from \"../components/stack/stackSection\";\nimport PostSection from \"../components/posts/postSection\";\nimport ProjectsSection from \"../components/projects/projectsSection\";\nimport { HeadSeo } from \"../components/common/metadata\";\nimport StaticReviewsSection from \"../components/reviews/staticReviewsSection\";\nimport ContactFormSection from \"../components/forms/contactFormSection\";\n\nconst IndexPage = ({\n pageContext: { markupData, lang },\n}: PageProps) => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nexport default IndexPage;\n\nexport const Head: HeadFC = ({\n pageContext: { markupData, site, lang },\n location,\n}: HeadProps) => {\n return (\n \n );\n};\n","export interface ILang {\n lang: TLang;\n}\n\nexport type TLang = \"en\" | \"ru\";\n\nexport type TLinks = \"services\" | \"workflow\" | \"projects\" | \"blog\";\n\nexport interface IBasePageContext extends ILang {\n site: ISiteMetadata;\n}\n\nexport interface IMdQueryResult {\n allMarkdownRemark: {\n nodes: T[];\n };\n}\n\nexport interface ISiteMetadata {\n title: string;\n description: string;\n siteUrl: string;\n image: string;\n analyticsId: string;\n}\n\nexport enum Theme {\n dark = \"dark\",\n light = \"light\",\n}\n","const defaultOptions = {\n active: true,\n breakpoints: {},\n delay: 4000,\n jump: false,\n playOnInit: true,\n stopOnFocusIn: true,\n stopOnInteraction: true,\n stopOnMouseEnter: false,\n stopOnLastSnap: false,\n rootNode: null\n};\n\nfunction Autoplay(userOptions = {}) {\n let options;\n let emblaApi;\n let destroyed;\n let playing = false;\n let resume = true;\n let jump = false;\n let timer = 0;\n function init(emblaApiInstance, optionsHandler) {\n emblaApi = emblaApiInstance;\n const {\n mergeOptions,\n optionsAtMedia\n } = optionsHandler;\n const optionsBase = mergeOptions(defaultOptions, Autoplay.globalOptions);\n const allOptions = mergeOptions(optionsBase, userOptions);\n options = optionsAtMedia(allOptions);\n if (emblaApi.scrollSnapList().length <= 1) return;\n jump = options.jump;\n destroyed = false;\n const {\n eventStore,\n ownerDocument\n } = emblaApi.internalEngine();\n const emblaRoot = emblaApi.rootNode();\n const root = options.rootNode && options.rootNode(emblaRoot) || emblaRoot;\n const container = emblaApi.containerNode();\n emblaApi.on('pointerDown', stopTimer);\n if (!options.stopOnInteraction) {\n emblaApi.on('pointerUp', startTimer);\n }\n if (options.stopOnMouseEnter) {\n eventStore.add(root, 'mouseenter', () => {\n resume = false;\n stopTimer();\n });\n if (!options.stopOnInteraction) {\n eventStore.add(root, 'mouseleave', () => {\n resume = true;\n startTimer();\n });\n }\n }\n if (options.stopOnFocusIn) {\n eventStore.add(container, 'focusin', stopTimer);\n if (!options.stopOnInteraction) {\n eventStore.add(container, 'focusout', startTimer);\n }\n }\n eventStore.add(ownerDocument, 'visibilitychange', visibilityChange);\n if (options.playOnInit && !documentIsHidden()) startTimer();\n }\n function destroy() {\n emblaApi.off('pointerDown', stopTimer).off('pointerUp', startTimer);\n stopTimer();\n destroyed = true;\n playing = false;\n }\n function startTimer() {\n if (destroyed) return;\n if (!resume) return;\n if (!playing) emblaApi.emit('autoplay:play');\n const {\n ownerWindow\n } = emblaApi.internalEngine();\n ownerWindow.clearInterval(timer);\n timer = ownerWindow.setInterval(next, options.delay);\n playing = true;\n }\n function stopTimer() {\n if (destroyed) return;\n if (playing) emblaApi.emit('autoplay:stop');\n const {\n ownerWindow\n } = emblaApi.internalEngine();\n ownerWindow.clearInterval(timer);\n timer = 0;\n playing = false;\n }\n function visibilityChange() {\n if (documentIsHidden()) {\n resume = playing;\n return stopTimer();\n }\n if (resume) startTimer();\n }\n function documentIsHidden() {\n const {\n ownerDocument\n } = emblaApi.internalEngine();\n return ownerDocument.visibilityState === 'hidden';\n }\n function play(jumpOverride) {\n if (typeof jumpOverride !== 'undefined') jump = jumpOverride;\n resume = true;\n startTimer();\n }\n function stop() {\n if (playing) stopTimer();\n }\n function reset() {\n if (playing) play();\n }\n function isPlaying() {\n return playing;\n }\n function next() {\n const {\n index\n } = emblaApi.internalEngine();\n const nextIndex = index.clone().add(1).get();\n const lastIndex = emblaApi.scrollSnapList().length - 1;\n const kill = options.stopOnLastSnap && nextIndex === lastIndex;\n if (kill) stopTimer();\n if (emblaApi.canScrollNext()) {\n emblaApi.scrollNext(jump);\n } else {\n emblaApi.scrollTo(0, jump);\n }\n }\n const self = {\n name: 'autoplay',\n options: userOptions,\n init,\n destroy,\n play,\n stop,\n reset,\n isPlaying\n };\n return self;\n}\nAutoplay.globalOptions = undefined;\n\nexport { Autoplay as default };\n//# sourceMappingURL=embla-carousel-autoplay.esm.js.map\n"],"names":["GenIcon","module","exports","props","_ref","section","theme","title","linkTitle","subTitle","className","children","borderT","borderB","isArrowLink","attr","mainColorClass","Theme","dark","linkColorClass","bgColorClass","___EmotionJSX","React","Border","_extends","ContentContainer","maxWidthClass","toUpperCase","Link","to","post","markupData","lang","date","text","frontmatter","minutes","Math","floor","wordCount","words","readingTime","fontColorClass100","light","fontColorClass70","fontColorHover","id","itemScope","itemType","itemProp","split","slice","join","readPostLink","BsArrowUpRight","size","readingTimeTitle","readingTimeUnits","LocalBusinessMetadata","project","cover","getImage","teamSize","duration","fontColorClass10","bgColors","GatsbyImage","image","alt","forwardRef","ref","emblaRef","emblaApi","useEmblaCarousel","loop","dragFree","align","Autoplay","delay","stopOnInteraction","stopOnMouseEnter","onMouseEnter","internalEngine","animation","stop","onMouseLeave","start","StackSection","_techData$markdownRem","_techData$markdownRem2","techData","useStaticQuery","query","techArr","markdownRemark","stack","StackCarousel","map","tech","StackUnit","key","AiFillBug","_postData$markupData","_postData$markupData$","_postData$markupData$2","_postData$markupData$3","_postData$lang","_postData$lang$nodes","_postData$en","_postData$en$nodes","_sectionMarkup$blogSe","_sectionMarkup$blogSe2","postData","sectionMarkup","nodes","find","node","fields","language","blog","en","TemplateSection","blogSectionTitle","blogSectionLinkTitle","PostPreview","_projectsPreviewData$","_projectsPreviewData$2","_projectsPreviewData$3","_projectsPreviewData$4","_projectsPreviewData$5","_projectsPreviewData$6","_sectionMarkup$morePr","_sectionMarkup$morePr2","excludeId","projectsPreviewData","projects","filter","moreProjectsSectionTitle","moreProjectsSectionLinkTitle","i","ProjectPreview","review","company","person","position","location","html","avatar","FaQuoteRight","color","dangerouslySetInnerHTML","__html","_reviewsData$markupDa","_reviewsData$markupDa2","_reviewsData$markupDa3","_reviewsData$markupDa4","_reviewsData$lang","_reviewsData$lang$nod","_reviewsData$en","_reviewsData$en$nodes","_sectionMarkup$title","reviewsData","reviews","sort","a","b","Review","pageContext","IconContext","Provider","value","style","verticalAlign","Banner","bannerTitle","babylon","ProjectsSection","StaticReviewsSection","PostSection","ContactFormSection","Head","_ref2","site","HeadSeo","head","description","metaDescription","siteUrl","path","pathname","defaultOptions","active","breakpoints","jump","playOnInit","stopOnFocusIn","stopOnLastSnap","rootNode","userOptions","options","destroyed","playing","resume","timer","startTimer","emit","ownerWindow","clearInterval","setInterval","next","stopTimer","visibilityChange","documentIsHidden","ownerDocument","visibilityState","play","jumpOverride","index","nextIndex","clone","add","get","lastIndex","scrollSnapList","length","canScrollNext","scrollNext","scrollTo","name","init","emblaApiInstance","optionsHandler","mergeOptions","optionsAtMedia","optionsBase","globalOptions","allOptions","eventStore","emblaRoot","root","container","containerNode","on","destroy","off","reset","isPlaying","undefined"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-templates-project-tsx-1ae68b85e2aab86abd1c.js b/component---src-pages-templates-project-tsx-1ae68b85e2aab86abd1c.js new file mode 100644 index 00000000..a7bf676e --- /dev/null +++ b/component---src-pages-templates-project-tsx-1ae68b85e2aab86abd1c.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkcode_cave=self.webpackChunkcode_cave||[]).push([[147],{1880:function(t,e,n){n.r(e),n.d(e,{Head:function(){return b},default:function(){return h}});var l=n(8032),a=n(1164),o=n(7294),i=n(1312),s=n(7451),r=n(917);const c=t=>{let{selected:e,onClick:n}=t;return(0,r.tZ)("button",{"aria-label":"view image",className:"bg-transparent touch-manipulation inline-flex w-12 h-12 after:rounded-sm flex items-center mx-1.5 md:mx-3 after:bg-main-10 after:w-full after:h-1.5 after:content-['']".concat(e?" after:bg-secondary-100":""),type:"button",onClick:n})},m=t=>{let{enabled:e,onClick:n}=t;return(0,r.tZ)("button",{"aria-label":"previous image",className:"bg-transparent touch-manipulation flex z-10 text-main-70 absolute flex items-center justify-center top-1/2 -translate-y-1/2 w-10 md:w-16 h-10 md:h-16 left-0 disabled:opacity-30",onClick:n,disabled:!e},(0,r.tZ)("svg",{className:"w-2/3 h-2/3",viewBox:"137.718 -1.001 366.563 644"},(0,r.tZ)("path",{fill:"#f9f9f9",d:"M428.36 12.5c16.67-16.67 43.76-16.67 60.42 0 16.67 16.67 16.67 43.76 0 60.42L241.7 320c148.25 148.24 230.61 230.6 247.08 247.08 16.67 16.66 16.67 43.75 0 60.42-16.67 16.66-43.76 16.67-60.42 0-27.72-27.71-249.45-249.37-277.16-277.08a42.308 42.308 0 0 1-12.48-30.34c0-11.1 4.1-22.05 12.48-30.42C206.63 234.23 400.64 40.21 428.36 12.5z"})))},u=t=>{let{enabled:e,onClick:n}=t;return(0,r.tZ)("button",{"aria-label":"next image",className:"bg-transparent touch-manipulation flex z-10 text-main-70 absolute flex items-center justify-center top-1/2 -translate-y-1/2 w-10 md:w-16 h-10 md:h-16 right-0 disabled:opacity-30",onClick:n,disabled:!e},(0,r.tZ)("svg",{className:"w-2/3 h-2/3",viewBox:"0 0 238.003 238.003"},(0,r.tZ)("path",{fill:"#f9f9f9",d:"M181.776 107.719L78.705 4.648c-6.198-6.198-16.273-6.198-22.47 0s-6.198 16.273 0 22.47l91.883 91.883-91.883 91.883c-6.198 6.198-6.198 16.273 0 22.47s16.273 6.198 22.47 0l103.071-103.039a15.741 15.741 0 0 0 4.64-11.283c0-4.13-1.526-8.199-4.64-11.313z"})))};var p=t=>{let{screenshots:e}=t;const[n,a]=(0,i.Z)({loop:!0},[(0,s.Z)({stopOnInteraction:!1,stopOnMouseEnter:!0})]),{0:p,1:d}=(0,o.useState)(!1),{0:f,1:x}=(0,o.useState)(!1),{0:g,1:h}=(0,o.useState)(0),{0:b,1:w}=(0,o.useState)([]),Z=(0,o.useCallback)((()=>a&&a.scrollPrev()),[a]),y=(0,o.useCallback)((()=>a&&a.scrollNext()),[a]),v=(0,o.useCallback)((t=>a&&a.scrollTo(t)),[a]),N=(0,o.useCallback)((t=>{w(t.scrollSnapList())}),[]),k=(0,o.useCallback)((t=>{h(t.selectedScrollSnap()),d(t.canScrollPrev()),x(t.canScrollNext())}),[]);return(0,o.useEffect)((()=>{a&&(N(a),k(a),a.on("reInit",N),a.on("reInit",k),a.on("select",k))}),[a,N,k]),(0,r.tZ)("div",{className:"h-full overflow-hidden relative",ref:n},(0,r.tZ)("div",{className:"h-full flex items-center "},e.map((t=>{let{id:e,childImageSharp:n}=t;const a=(0,l.c)(n);return(0,r.tZ)("div",{key:e,className:"h-full shrink-0 min-w-0 basis-full px-12 md:px-20 pt-2.5 pb-8 md:py-8 cursor-pointer flex items-center justify-center"},a?(0,r.tZ)(l.G,{image:a,alt:"logo",className:"object-contain rounded-xl max-h-[424px]"}):null)}))),(0,r.tZ)(m,{onClick:Z,enabled:p}),(0,r.tZ)(u,{onClick:y,enabled:f}),(0,r.tZ)("div",{className:"z-10 absolute bottom-1 left-0 right-0 flex justify-center items-center"},b.map(((t,e)=>(0,r.tZ)(c,{key:e,selected:e===g,onClick:()=>v(e)})))))},d=n(9165),f=n(7462);var x=t=>{let{title:e,text:n,className:l,children:a,textAttr:o,...i}=t;return(0,r.tZ)("section",(0,f.Z)({},i,{className:"w-full"}),(0,r.tZ)("h2",{className:"text-[24px] md:text-4xl text-secondary-100 uppercase w-full max-w-[320px] mb-2"},e),null!=o&&o.dangerouslySetInnerHTML?(0,r.tZ)("div",(0,f.Z)({},o,{className:`text-base md:text-lg w-full max-w-[544px] float-right ${l}`})):(0,r.tZ)("p",(0,f.Z)({},o,{className:`text-base md:text-lg w-full max-w-[544px] float-right ${l}`}),a||n))};var g=t=>{let{text:e,...n}=t;return(0,r.tZ)("span",(0,f.Z)({},n,{className:"bg-main-70 px-5 h-10 md:h-16 whitespace-nowrap text-sm md:text-lg font-medium rounded-lg flex items-center"}),e)};var h=t=>{let{data:{markdownRemark:{frontmatter:e,html:n}},pageContext:{markupData:o,lang:i}}=t;const{title:s,description:c,challenge:m,clientDescription:u,team:f,screenshots:h,stack:b}=e,w=(0,l.c)(e.logo);return(0,r.tZ)("div",{itemScope:!0,itemType:"https://schema.org/CreativeWork",className:"flex bg-main-100"},(0,r.tZ)(a.Z,{maxWidthClass:"max-w-4.5xl",className:"flex-col text-secondary-70 py-6 md:py-16 lg:!px-0 gap-5 md:gap-8"},(0,r.tZ)("div",{className:"flex flex-col flex-col-reverse items-center md:items-start md:flex-row justify-between gap-x-16 gap-y-2.5 pb-10 gradient-border border-b border-solid"},(0,r.tZ)("div",{className:"flex-1 w-full md:max-w-[528px]"},(0,r.tZ)("h1",{itemProp:"name",className:"w-full text-[24px] md:text-4xl font-semibold text-secondary-100 mb-5 uppercase"},s),(0,r.tZ)("p",{itemProp:"description",className:"w-full text-base font-light"},c)),w?(0,r.tZ)("div",{className:"w-28 md:w-48 h-28 md:h-48 flex items-center justify-center"},(0,r.tZ)(l.G,{image:w,imgStyle:{objectFit:"contain"},alt:"logo",itemProp:"image",className:"max-h-full max-w-full grayscale"})):null),(0,r.tZ)(x,{title:o.clientSectionTitle,text:u,itemProp:"sourceOrganization",itemScope:!0,itemType:"https://schema.org/Organization",textAttr:{itemProp:"description"}}),(0,r.tZ)(x,{title:o.challengeSectionTitle,text:m,textAttr:{itemProp:"about"}}),n?(0,r.tZ)(x,{title:o.solutionSectionTitle,text:m,textAttr:{itemProp:"articleBody",dangerouslySetInnerHTML:{__html:n}}}):null,null!=f&&f.length?(0,r.tZ)(x,{title:o.teamSectionTitle,className:"flex gap-2.5 flex-wrap pt-2 md:pt-0"},f.map((t=>(0,r.tZ)(g,{key:t,id:t,text:t,itemProp:"contributor"})))):null,null!=b&&b.length?(0,r.tZ)(x,{title:o.techSectionTitle,className:"flex gap-2.5 flex-wrap pt-2 md:pt-0"},b.map((t=>(0,r.tZ)(g,{key:t,id:t,text:t,itemProp:"keywords"})))):null,null!=h&&h.length?(0,r.tZ)("section",{className:"w-full mb-8"},(0,r.tZ)("h2",{className:"text-[24px] md:text-4xl text-secondary-100 uppercase w-full max-w-[320px]"},o.resultSectionTitle),(0,r.tZ)(p,{screenshots:h})):null,(0,r.tZ)(d.Lx,{itemProp:"author",lang:i})))};const b=t=>{var e;let{data:{markdownRemark:{frontmatter:{title:n,cover:a}}},pageContext:o,location:i}=t;const s=(0,l.c)(a);return(0,r.tZ)(d.Ag,{title:`${o.markupData.head} | ${n.toUpperCase()}`,siteUrl:o.site.siteUrl,path:i.pathname,img:null==s||null===(e=s.images.fallback)||void 0===e?void 0:e.src,lang:o.lang})}},7451:function(t,e,n){n.d(e,{Z:function(){return a}});const l={active:!0,breakpoints:{},delay:4e3,jump:!1,playOnInit:!0,stopOnFocusIn:!0,stopOnInteraction:!0,stopOnMouseEnter:!1,stopOnLastSnap:!1,rootNode:null};function a(t={}){let e,n,o,i=!1,s=!0,r=!1,c=0;function m(){if(o)return;if(!s)return;i||n.emit("autoplay:play");const{ownerWindow:t}=n.internalEngine();t.clearInterval(c),c=t.setInterval(x,e.delay),i=!0}function u(){if(o)return;i&&n.emit("autoplay:stop");const{ownerWindow:t}=n.internalEngine();t.clearInterval(c),c=0,i=!1}function p(){if(d())return s=i,u();s&&m()}function d(){const{ownerDocument:t}=n.internalEngine();return"hidden"===t.visibilityState}function f(t){void 0!==t&&(r=t),s=!0,m()}function x(){const{index:t}=n.internalEngine(),l=t.clone().add(1).get(),a=n.scrollSnapList().length-1;e.stopOnLastSnap&&l===a&&u(),n.canScrollNext()?n.scrollNext(r):n.scrollTo(0,r)}return{name:"autoplay",options:t,init:function(i,c){n=i;const{mergeOptions:f,optionsAtMedia:x}=c,g=f(l,a.globalOptions),h=f(g,t);if(e=x(h),n.scrollSnapList().length<=1)return;r=e.jump,o=!1;const{eventStore:b,ownerDocument:w}=n.internalEngine(),Z=n.rootNode(),y=e.rootNode&&e.rootNode(Z)||Z,v=n.containerNode();n.on("pointerDown",u),e.stopOnInteraction||n.on("pointerUp",m),e.stopOnMouseEnter&&(b.add(y,"mouseenter",(()=>{s=!1,u()})),e.stopOnInteraction||b.add(y,"mouseleave",(()=>{s=!0,m()}))),e.stopOnFocusIn&&(b.add(v,"focusin",u),e.stopOnInteraction||b.add(v,"focusout",m)),b.add(w,"visibilitychange",p),e.playOnInit&&!d()&&m()},destroy:function(){n.off("pointerDown",u).off("pointerUp",m),u(),o=!0,i=!1},play:f,stop:function(){i&&u()},reset:function(){i&&f()},isPlaying:function(){return i}}}a.globalOptions=void 0}}]); +//# sourceMappingURL=component---src-pages-templates-project-tsx-1ae68b85e2aab86abd1c.js.map \ No newline at end of file diff --git a/component---src-pages-templates-project-tsx-1ae68b85e2aab86abd1c.js.map b/component---src-pages-templates-project-tsx-1ae68b85e2aab86abd1c.js.map new file mode 100644 index 00000000..03d321e6 --- /dev/null +++ b/component---src-pages-templates-project-tsx-1ae68b85e2aab86abd1c.js.map @@ -0,0 +1 @@ +{"version":3,"file":"component---src-pages-templates-project-tsx-1ae68b85e2aab86abd1c.js","mappings":"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","sources":["webpack://code-cave/./src/components/projects/carouselDotsButtonsArrows.tsx","webpack://code-cave/./src/components/projects/screenshotsCarousel.tsx","webpack://code-cave/./src/components/projects/projectDescriptionSection.tsx","webpack://code-cave/./src/components/projects/stackOrTeamCard.tsx","webpack://code-cave/./src/pagesTemplates/project.tsx","webpack://code-cave/./node_modules/embla-carousel-autoplay/esm/embla-carousel-autoplay.esm.js"],"sourcesContent":["import React from \"react\";\n\nimport {\n IDotButtonPropType,\n IPrevNextButtonPropType,\n} from \"../../types/carousel.type\";\n\nexport const DotButton = ({ selected, onClick }: IDotButtonPropType) => {\n return (\n \n );\n};\n\nexport const PrevButton = ({ enabled, onClick }: IPrevNextButtonPropType) => {\n return (\n \n \n \n \n \n );\n};\n\nexport const NextButton = ({ enabled, onClick }: IPrevNextButtonPropType) => {\n return (\n \n \n \n \n \n );\n};\n","import React, { useState, useEffect, useCallback } from \"react\";\nimport { GatsbyImage, getImage } from \"gatsby-plugin-image\";\n\nimport useEmblaCarousel from \"embla-carousel-react\";\nimport Autoplay from \"embla-carousel-autoplay\";\n\nimport { IScreenshot } from \"../../types/project.type\";\nimport { EmblaCarouselType } from \"embla-carousel\";\n\nimport { DotButton, PrevButton, NextButton } from \"./carouselDotsButtonsArrows\";\n\nconst ScreenshotsCarousel = ({\n screenshots,\n}: {\n screenshots: IScreenshot[];\n}) => {\n const [emblaRef, emblaApi] = useEmblaCarousel({ loop: true }, [\n Autoplay({\n stopOnInteraction: false,\n stopOnMouseEnter: true,\n }),\n ]);\n const [prevBtnEnabled, setPrevBtnEnabled] = useState(false);\n const [nextBtnEnabled, setNextBtnEnabled] = useState(false);\n const [selectedIndex, setSelectedIndex] = useState(0);\n const [scrollSnaps, setScrollSnaps] = useState([]);\n\n const scrollPrev = useCallback(\n () => emblaApi && emblaApi.scrollPrev(),\n [emblaApi]\n );\n const scrollNext = useCallback(\n () => emblaApi && emblaApi.scrollNext(),\n [emblaApi]\n );\n const scrollTo = useCallback(\n (index: number) => emblaApi && emblaApi.scrollTo(index),\n [emblaApi]\n );\n\n const onInit = useCallback((emblaApi: EmblaCarouselType) => {\n setScrollSnaps(emblaApi.scrollSnapList());\n }, []);\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setSelectedIndex(emblaApi.selectedScrollSnap());\n setPrevBtnEnabled(emblaApi.canScrollPrev());\n setNextBtnEnabled(emblaApi.canScrollNext());\n }, []);\n\n useEffect(() => {\n if (!emblaApi) return;\n\n onInit(emblaApi);\n onSelect(emblaApi);\n emblaApi.on(\"reInit\", onInit);\n emblaApi.on(\"reInit\", onSelect);\n emblaApi.on(\"select\", onSelect);\n }, [emblaApi, onInit, onSelect]);\n\n return (\n
\n
\n {screenshots.map(({ id, childImageSharp }) => {\n const img = getImage(childImageSharp);\n return (\n \n {img ? (\n \n ) : null}\n
\n );\n })}\n
\n \n \n\n
\n {scrollSnaps.map((_, index) => (\n scrollTo(index)}\n />\n ))}\n
\n \n );\n};\n\nexport default ScreenshotsCarousel;\n","import React, { HTMLAttributes } from \"react\";\n\ninterface IProjectDescriptionSectionProps\n extends HTMLAttributes {\n title: string;\n className?: string;\n text?: string;\n textAttr?: HTMLAttributes;\n}\n\nconst ProjectDescriptionSection = ({\n title,\n text,\n className,\n children,\n textAttr,\n ...attr\n}: React.PropsWithChildren) => {\n return (\n
\n

\n {title}\n

\n {!!textAttr?.dangerouslySetInnerHTML ? (\n \n ) : (\n \n {children ? children : text}\n

\n )}\n
\n );\n};\n\nexport default ProjectDescriptionSection;\n","import React from \"react\";\n\ninterface IStackOrTeamCardProps\n extends React.HTMLAttributes {\n text: string;\n}\n\nconst StackOrTeamCard = ({ text, ...attr }: IStackOrTeamCardProps) => {\n return (\n \n {text}\n \n );\n};\n\nexport default StackOrTeamCard;\n","import React from \"react\";\nimport { HeadFC, PageProps, graphql } from \"gatsby\";\nimport { GatsbyImage, getImage } from \"gatsby-plugin-image\";\n\nimport {\n IProjectQueryResult,\n IProjectsPageContext,\n} from \"../types/project.type\";\n\nimport ContentContainer from \"../components/common/contentContainer\";\nimport ScreenshotsCarousel from \"../components/projects/screenshotsCarousel\";\nimport { HeadSeo, LocalBusinessMetadata } from \"../components/common/metadata\";\nimport ProjectDescriptionSection from \"../components/projects/projectDescriptionSection\";\nimport StackOrTeamCard from \"../components/projects/stackOrTeamCard\";\n\nconst Project = ({\n data: {\n markdownRemark: { frontmatter, html },\n },\n pageContext: { markupData, lang },\n}: PageProps) => {\n const {\n title,\n description,\n challenge,\n clientDescription,\n team,\n screenshots,\n stack,\n } = frontmatter;\n const logo = getImage(frontmatter.logo);\n\n return (\n \n \n
\n
\n \n {title}\n \n

\n {description}\n

\n
\n\n {logo ? (\n
\n \n
\n ) : null}\n
\n\n \n\n \n\n {html ? (\n \n ) : null}\n\n {team?.length ? (\n \n {team.map((member) => (\n \n ))}\n \n ) : null}\n\n {stack?.length ? (\n \n {stack.map((tech) => (\n \n ))}\n \n ) : null}\n\n {screenshots?.length ? (\n
\n

\n {markupData.resultSectionTitle}\n

\n \n
\n ) : null}\n \n \n \n );\n};\n\nexport default Project;\n\nexport const Head: HeadFC = ({\n data: {\n markdownRemark: {\n frontmatter: { title, cover },\n },\n },\n pageContext,\n location,\n}) => {\n const coverImg = getImage(cover);\n\n return (\n \n );\n};\n\nexport const query = graphql`\n query ($id: String) {\n markdownRemark(id: { eq: $id }) {\n id\n html\n frontmatter {\n stack\n title\n description\n challenge\n clientDescription\n logo {\n childImageSharp {\n gatsbyImageData(\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n width: 180\n )\n }\n }\n cover {\n childImageSharp {\n gatsbyImageData(\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n height: 400\n )\n }\n }\n team\n screenshots {\n id\n childImageSharp {\n gatsbyImageData(\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n height: 424\n )\n }\n }\n }\n }\n }\n`;\n","const defaultOptions = {\n active: true,\n breakpoints: {},\n delay: 4000,\n jump: false,\n playOnInit: true,\n stopOnFocusIn: true,\n stopOnInteraction: true,\n stopOnMouseEnter: false,\n stopOnLastSnap: false,\n rootNode: null\n};\n\nfunction Autoplay(userOptions = {}) {\n let options;\n let emblaApi;\n let destroyed;\n let playing = false;\n let resume = true;\n let jump = false;\n let timer = 0;\n function init(emblaApiInstance, optionsHandler) {\n emblaApi = emblaApiInstance;\n const {\n mergeOptions,\n optionsAtMedia\n } = optionsHandler;\n const optionsBase = mergeOptions(defaultOptions, Autoplay.globalOptions);\n const allOptions = mergeOptions(optionsBase, userOptions);\n options = optionsAtMedia(allOptions);\n if (emblaApi.scrollSnapList().length <= 1) return;\n jump = options.jump;\n destroyed = false;\n const {\n eventStore,\n ownerDocument\n } = emblaApi.internalEngine();\n const emblaRoot = emblaApi.rootNode();\n const root = options.rootNode && options.rootNode(emblaRoot) || emblaRoot;\n const container = emblaApi.containerNode();\n emblaApi.on('pointerDown', stopTimer);\n if (!options.stopOnInteraction) {\n emblaApi.on('pointerUp', startTimer);\n }\n if (options.stopOnMouseEnter) {\n eventStore.add(root, 'mouseenter', () => {\n resume = false;\n stopTimer();\n });\n if (!options.stopOnInteraction) {\n eventStore.add(root, 'mouseleave', () => {\n resume = true;\n startTimer();\n });\n }\n }\n if (options.stopOnFocusIn) {\n eventStore.add(container, 'focusin', stopTimer);\n if (!options.stopOnInteraction) {\n eventStore.add(container, 'focusout', startTimer);\n }\n }\n eventStore.add(ownerDocument, 'visibilitychange', visibilityChange);\n if (options.playOnInit && !documentIsHidden()) startTimer();\n }\n function destroy() {\n emblaApi.off('pointerDown', stopTimer).off('pointerUp', startTimer);\n stopTimer();\n destroyed = true;\n playing = false;\n }\n function startTimer() {\n if (destroyed) return;\n if (!resume) return;\n if (!playing) emblaApi.emit('autoplay:play');\n const {\n ownerWindow\n } = emblaApi.internalEngine();\n ownerWindow.clearInterval(timer);\n timer = ownerWindow.setInterval(next, options.delay);\n playing = true;\n }\n function stopTimer() {\n if (destroyed) return;\n if (playing) emblaApi.emit('autoplay:stop');\n const {\n ownerWindow\n } = emblaApi.internalEngine();\n ownerWindow.clearInterval(timer);\n timer = 0;\n playing = false;\n }\n function visibilityChange() {\n if (documentIsHidden()) {\n resume = playing;\n return stopTimer();\n }\n if (resume) startTimer();\n }\n function documentIsHidden() {\n const {\n ownerDocument\n } = emblaApi.internalEngine();\n return ownerDocument.visibilityState === 'hidden';\n }\n function play(jumpOverride) {\n if (typeof jumpOverride !== 'undefined') jump = jumpOverride;\n resume = true;\n startTimer();\n }\n function stop() {\n if (playing) stopTimer();\n }\n function reset() {\n if (playing) play();\n }\n function isPlaying() {\n return playing;\n }\n function next() {\n const {\n index\n } = emblaApi.internalEngine();\n const nextIndex = index.clone().add(1).get();\n const lastIndex = emblaApi.scrollSnapList().length - 1;\n const kill = options.stopOnLastSnap && nextIndex === lastIndex;\n if (kill) stopTimer();\n if (emblaApi.canScrollNext()) {\n emblaApi.scrollNext(jump);\n } else {\n emblaApi.scrollTo(0, jump);\n }\n }\n const self = {\n name: 'autoplay',\n options: userOptions,\n init,\n destroy,\n play,\n stop,\n reset,\n isPlaying\n };\n return self;\n}\nAutoplay.globalOptions = undefined;\n\nexport { Autoplay as default };\n//# sourceMappingURL=embla-carousel-autoplay.esm.js.map\n"],"names":["DotButton","_ref","selected","onClick","___EmotionJSX","className","concat","type","PrevButton","_ref2","enabled","disabled","viewBox","fill","d","NextButton","_ref3","screenshots","emblaRef","emblaApi","useEmblaCarousel","loop","Autoplay","stopOnInteraction","stopOnMouseEnter","prevBtnEnabled","setPrevBtnEnabled","useState","nextBtnEnabled","setNextBtnEnabled","selectedIndex","setSelectedIndex","scrollSnaps","setScrollSnaps","scrollPrev","useCallback","scrollNext","scrollTo","index","onInit","scrollSnapList","onSelect","selectedScrollSnap","canScrollPrev","canScrollNext","useEffect","on","ref","map","id","childImageSharp","img","getImage","key","GatsbyImage","image","alt","_","title","text","children","textAttr","attr","_extends","dangerouslySetInnerHTML","data","markdownRemark","frontmatter","html","pageContext","markupData","lang","description","challenge","clientDescription","team","stack","logo","itemScope","itemType","ContentContainer","maxWidthClass","itemProp","imgStyle","objectFit","ProjectDescriptionSection","clientSectionTitle","challengeSectionTitle","solutionSectionTitle","__html","length","teamSectionTitle","member","StackOrTeamCard","techSectionTitle","tech","resultSectionTitle","ScreenshotsCarousel","LocalBusinessMetadata","Head","_coverImg$images$fall","cover","location","coverImg","HeadSeo","head","toUpperCase","siteUrl","site","path","pathname","images","fallback","src","defaultOptions","active","breakpoints","delay","jump","playOnInit","stopOnFocusIn","stopOnLastSnap","rootNode","userOptions","options","destroyed","playing","resume","timer","startTimer","emit","ownerWindow","internalEngine","clearInterval","setInterval","next","stopTimer","visibilityChange","documentIsHidden","ownerDocument","visibilityState","play","jumpOverride","nextIndex","clone","add","get","lastIndex","name","init","emblaApiInstance","optionsHandler","mergeOptions","optionsAtMedia","optionsBase","globalOptions","allOptions","eventStore","emblaRoot","root","container","containerNode","destroy","off","stop","reset","isPlaying","undefined"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-templates-project-tsx-4094dc02619f4d8f92a5.js b/component---src-pages-templates-project-tsx-4094dc02619f4d8f92a5.js deleted file mode 100644 index 1772d387..00000000 --- a/component---src-pages-templates-project-tsx-4094dc02619f4d8f92a5.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkcode_cave=self.webpackChunkcode_cave||[]).push([[147],{1880:function(t,e,n){n.r(e),n.d(e,{Head:function(){return b},default:function(){return h}});var l=n(8032),a=n(1164),o=n(7294),i=n(1312),s=n(7451),r=n(917);const c=t=>{let{selected:e,onClick:n}=t;return(0,r.tZ)("button",{"aria-label":"view image",className:"bg-transparent touch-manipulation inline-flex w-12 h-12 after:rounded-sm flex items-center mx-1.5 md:mx-3 after:bg-main-10 after:w-full after:h-1.5 after:content-['']".concat(e?" after:bg-secondary-100":""),type:"button",onClick:n})},m=t=>{let{enabled:e,onClick:n}=t;return(0,r.tZ)("button",{"aria-label":"previous image",className:"bg-transparent touch-manipulation flex z-10 text-main-70 absolute flex items-center justify-center top-1/2 -translate-y-1/2 w-10 md:w-16 h-10 md:h-16 left-0 disabled:opacity-30",onClick:n,disabled:!e},(0,r.tZ)("svg",{className:"w-2/3 h-2/3",viewBox:"137.718 -1.001 366.563 644"},(0,r.tZ)("path",{fill:"#f9f9f9",d:"M428.36 12.5c16.67-16.67 43.76-16.67 60.42 0 16.67 16.67 16.67 43.76 0 60.42L241.7 320c148.25 148.24 230.61 230.6 247.08 247.08 16.67 16.66 16.67 43.75 0 60.42-16.67 16.66-43.76 16.67-60.42 0-27.72-27.71-249.45-249.37-277.16-277.08a42.308 42.308 0 0 1-12.48-30.34c0-11.1 4.1-22.05 12.48-30.42C206.63 234.23 400.64 40.21 428.36 12.5z"})))},p=t=>{let{enabled:e,onClick:n}=t;return(0,r.tZ)("button",{"aria-label":"next image",className:"bg-transparent touch-manipulation flex z-10 text-main-70 absolute flex items-center justify-center top-1/2 -translate-y-1/2 w-10 md:w-16 h-10 md:h-16 right-0 disabled:opacity-30",onClick:n,disabled:!e},(0,r.tZ)("svg",{className:"w-2/3 h-2/3",viewBox:"0 0 238.003 238.003"},(0,r.tZ)("path",{fill:"#f9f9f9",d:"M181.776 107.719L78.705 4.648c-6.198-6.198-16.273-6.198-22.47 0s-6.198 16.273 0 22.47l91.883 91.883-91.883 91.883c-6.198 6.198-6.198 16.273 0 22.47s16.273 6.198 22.47 0l103.071-103.039a15.741 15.741 0 0 0 4.64-11.283c0-4.13-1.526-8.199-4.64-11.313z"})))};var u=t=>{let{screenshots:e}=t;const[n,a]=(0,i.Z)({loop:!0},[(0,s.Z)({stopOnInteraction:!1,stopOnMouseEnter:!0})]),{0:u,1:d}=(0,o.useState)(!1),{0:f,1:x}=(0,o.useState)(!1),{0:g,1:h}=(0,o.useState)(0),{0:b,1:w}=(0,o.useState)([]),Z=(0,o.useCallback)((()=>a&&a.scrollPrev()),[a]),y=(0,o.useCallback)((()=>a&&a.scrollNext()),[a]),v=(0,o.useCallback)((t=>a&&a.scrollTo(t)),[a]),N=(0,o.useCallback)((t=>{w(t.scrollSnapList())}),[]),k=(0,o.useCallback)((t=>{h(t.selectedScrollSnap()),d(t.canScrollPrev()),x(t.canScrollNext())}),[]);return(0,o.useEffect)((()=>{a&&(N(a),k(a),a.on("reInit",N),a.on("reInit",k),a.on("select",k))}),[a,N,k]),(0,r.tZ)("div",{className:"h-full overflow-hidden relative",ref:n},(0,r.tZ)("div",{className:"h-full flex items-center "},e.map((t=>{let{id:e,childImageSharp:n}=t;const a=(0,l.c)(n);return(0,r.tZ)("div",{key:e,className:"h-full shrink-0 min-w-0 basis-full px-12 md:px-20 pt-2.5 pb-8 md:py-8 cursor-pointer flex items-center justify-center"},a?(0,r.tZ)(l.G,{image:a,alt:"logo",className:"object-contain rounded-xl max-h-[424px]"}):null)}))),(0,r.tZ)(m,{onClick:Z,enabled:u}),(0,r.tZ)(p,{onClick:y,enabled:f}),(0,r.tZ)("div",{className:"z-10 absolute bottom-1 left-0 right-0 flex justify-center items-center"},b.map(((t,e)=>(0,r.tZ)(c,{key:e,selected:e===g,onClick:()=>v(e)})))))},d=n(9165),f=n(7462);var x=t=>{let{title:e,text:n,className:l,children:a,textAttr:o,...i}=t;return(0,r.tZ)("section",(0,f.Z)({},i,{className:"w-full"}),(0,r.tZ)("h2",{className:"text-[24px] md:text-4xl text-secondary-100 uppercase w-full max-w-[320px] mb-2"},e),null!=o&&o.dangerouslySetInnerHTML?(0,r.tZ)("p",(0,f.Z)({},o,{className:`text-base md:text-lg w-full max-w-[544px] float-right ${l}`})):(0,r.tZ)("p",(0,f.Z)({},o,{className:`text-base md:text-lg w-full max-w-[544px] float-right ${l}`}),a||n))};var g=t=>{let{text:e,...n}=t;return(0,r.tZ)("span",(0,f.Z)({},n,{className:"bg-main-70 px-5 h-10 md:h-16 whitespace-nowrap text-sm md:text-lg font-medium rounded-lg flex items-center"}),e)};var h=t=>{let{data:{markdownRemark:{frontmatter:e,html:n}},pageContext:{markupData:o,lang:i}}=t;const{title:s,description:c,challenge:m,clientDescription:p,team:f,screenshots:h,stack:b}=e,w=(0,l.c)(e.logo);return(0,r.tZ)("div",{itemScope:!0,itemType:"https://schema.org/CreativeWork",className:"flex bg-main-100"},(0,r.tZ)(a.Z,{maxWidthClass:"max-w-4.5xl",className:"flex-col text-secondary-70 py-6 md:py-16 lg:!px-0 gap-5 md:gap-8"},(0,r.tZ)("div",{className:"flex flex-col flex-col-reverse items-center md:items-start md:flex-row justify-between gap-x-16 gap-y-2.5 pb-10 gradient-border border-b border-solid"},(0,r.tZ)("div",{className:"flex-1 w-full md:max-w-[528px]"},(0,r.tZ)("h1",{itemProp:"name",className:"w-full text-[24px] md:text-4xl font-semibold text-secondary-100 mb-5 uppercase"},s),(0,r.tZ)("p",{itemProp:"description",className:"w-full text-base font-light"},c)),w?(0,r.tZ)("div",{className:"w-28 md:w-48 h-28 md:h-48 flex items-center justify-center"},(0,r.tZ)(l.G,{image:w,imgStyle:{objectFit:"contain"},alt:"logo",itemProp:"image",className:"max-h-full max-w-full grayscale"})):null),(0,r.tZ)(x,{title:o.clientSectionTitle,text:p,itemProp:"sourceOrganization",itemScope:!0,itemType:"https://schema.org/Organization",textAttr:{itemProp:"description"}}),(0,r.tZ)(x,{title:o.challengeSectionTitle,text:m,textAttr:{itemProp:"about"}}),n?(0,r.tZ)(x,{title:o.solutionSectionTitle,text:m,textAttr:{itemProp:"articleBody",dangerouslySetInnerHTML:{__html:n}}}):null,null!=f&&f.length?(0,r.tZ)(x,{title:o.teamSectionTitle,className:"flex gap-2.5 flex-wrap pt-2 md:pt-0"},f.map((t=>(0,r.tZ)(g,{key:t,id:t,text:t,itemProp:"contributor"})))):null,null!=b&&b.length?(0,r.tZ)(x,{title:o.techSectionTitle,className:"flex gap-2.5 flex-wrap pt-2 md:pt-0"},b.map((t=>(0,r.tZ)(g,{key:t,id:t,text:t,itemProp:"keywords"})))):null,null!=h&&h.length?(0,r.tZ)("section",{className:"w-full mb-8"},(0,r.tZ)("h2",{className:"text-[24px] md:text-4xl text-secondary-100 uppercase w-full max-w-[320px]"},o.resultSectionTitle),(0,r.tZ)(u,{screenshots:h})):null,(0,r.tZ)(d.Lx,{itemProp:"author",lang:i})))};const b=t=>{var e;let{data:{markdownRemark:{frontmatter:{title:n,cover:a}}},pageContext:o,location:i}=t;const s=(0,l.c)(a);return(0,r.tZ)(d.Ag,{title:`${o.markupData.head} | ${n.toUpperCase()}`,siteUrl:o.site.siteUrl,path:i.pathname,img:null==s||null===(e=s.images.fallback)||void 0===e?void 0:e.src,lang:o.lang})}},7451:function(t,e,n){n.d(e,{Z:function(){return a}});const l={active:!0,breakpoints:{},delay:4e3,jump:!1,playOnInit:!0,stopOnFocusIn:!0,stopOnInteraction:!0,stopOnMouseEnter:!1,stopOnLastSnap:!1,rootNode:null};function a(t={}){let e,n,o,i=!1,s=!0,r=!1,c=0;function m(){if(o)return;if(!s)return;i||n.emit("autoplay:play");const{ownerWindow:t}=n.internalEngine();t.clearInterval(c),c=t.setInterval(x,e.delay),i=!0}function p(){if(o)return;i&&n.emit("autoplay:stop");const{ownerWindow:t}=n.internalEngine();t.clearInterval(c),c=0,i=!1}function u(){if(d())return s=i,p();s&&m()}function d(){const{ownerDocument:t}=n.internalEngine();return"hidden"===t.visibilityState}function f(t){void 0!==t&&(r=t),s=!0,m()}function x(){const{index:t}=n.internalEngine(),l=t.clone().add(1).get(),a=n.scrollSnapList().length-1;e.stopOnLastSnap&&l===a&&p(),n.canScrollNext()?n.scrollNext(r):n.scrollTo(0,r)}return{name:"autoplay",options:t,init:function(i,c){n=i;const{mergeOptions:f,optionsAtMedia:x}=c,g=f(l,a.globalOptions),h=f(g,t);if(e=x(h),n.scrollSnapList().length<=1)return;r=e.jump,o=!1;const{eventStore:b,ownerDocument:w}=n.internalEngine(),Z=n.rootNode(),y=e.rootNode&&e.rootNode(Z)||Z,v=n.containerNode();n.on("pointerDown",p),e.stopOnInteraction||n.on("pointerUp",m),e.stopOnMouseEnter&&(b.add(y,"mouseenter",(()=>{s=!1,p()})),e.stopOnInteraction||b.add(y,"mouseleave",(()=>{s=!0,m()}))),e.stopOnFocusIn&&(b.add(v,"focusin",p),e.stopOnInteraction||b.add(v,"focusout",m)),b.add(w,"visibilitychange",u),e.playOnInit&&!d()&&m()},destroy:function(){n.off("pointerDown",p).off("pointerUp",m),p(),o=!0,i=!1},play:f,stop:function(){i&&p()},reset:function(){i&&f()},isPlaying:function(){return i}}}a.globalOptions=void 0}}]); -//# sourceMappingURL=component---src-pages-templates-project-tsx-4094dc02619f4d8f92a5.js.map \ No newline at end of file diff --git a/component---src-pages-templates-project-tsx-4094dc02619f4d8f92a5.js.map b/component---src-pages-templates-project-tsx-4094dc02619f4d8f92a5.js.map deleted file mode 100644 index 74256088..00000000 --- a/component---src-pages-templates-project-tsx-4094dc02619f4d8f92a5.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-pages-templates-project-tsx-4094dc02619f4d8f92a5.js","mappings":"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","sources":["webpack://code-cave/./src/components/projects/carouselDotsButtonsArrows.tsx","webpack://code-cave/./src/components/projects/screenshotsCarousel.tsx","webpack://code-cave/./src/components/projects/projectDescriptionSection.tsx","webpack://code-cave/./src/components/projects/stackOrTeamCard.tsx","webpack://code-cave/./src/pagesTemplates/project.tsx","webpack://code-cave/./node_modules/embla-carousel-autoplay/esm/embla-carousel-autoplay.esm.js"],"sourcesContent":["import React from \"react\";\n\nimport {\n IDotButtonPropType,\n IPrevNextButtonPropType,\n} from \"../../types/carousel.type\";\n\nexport const DotButton = ({ selected, onClick }: IDotButtonPropType) => {\n return (\n \n );\n};\n\nexport const PrevButton = ({ enabled, onClick }: IPrevNextButtonPropType) => {\n return (\n \n \n \n \n \n );\n};\n\nexport const NextButton = ({ enabled, onClick }: IPrevNextButtonPropType) => {\n return (\n \n \n \n \n \n );\n};\n","import React, { useState, useEffect, useCallback } from \"react\";\nimport { GatsbyImage, getImage } from \"gatsby-plugin-image\";\n\nimport useEmblaCarousel from \"embla-carousel-react\";\nimport Autoplay from \"embla-carousel-autoplay\";\n\nimport { IScreenshot } from \"../../types/project.type\";\nimport { EmblaCarouselType } from \"embla-carousel\";\n\nimport { DotButton, PrevButton, NextButton } from \"./carouselDotsButtonsArrows\";\n\nconst ScreenshotsCarousel = ({\n screenshots,\n}: {\n screenshots: IScreenshot[];\n}) => {\n const [emblaRef, emblaApi] = useEmblaCarousel({ loop: true }, [\n Autoplay({\n stopOnInteraction: false,\n stopOnMouseEnter: true,\n }),\n ]);\n const [prevBtnEnabled, setPrevBtnEnabled] = useState(false);\n const [nextBtnEnabled, setNextBtnEnabled] = useState(false);\n const [selectedIndex, setSelectedIndex] = useState(0);\n const [scrollSnaps, setScrollSnaps] = useState([]);\n\n const scrollPrev = useCallback(\n () => emblaApi && emblaApi.scrollPrev(),\n [emblaApi]\n );\n const scrollNext = useCallback(\n () => emblaApi && emblaApi.scrollNext(),\n [emblaApi]\n );\n const scrollTo = useCallback(\n (index: number) => emblaApi && emblaApi.scrollTo(index),\n [emblaApi]\n );\n\n const onInit = useCallback((emblaApi: EmblaCarouselType) => {\n setScrollSnaps(emblaApi.scrollSnapList());\n }, []);\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setSelectedIndex(emblaApi.selectedScrollSnap());\n setPrevBtnEnabled(emblaApi.canScrollPrev());\n setNextBtnEnabled(emblaApi.canScrollNext());\n }, []);\n\n useEffect(() => {\n if (!emblaApi) return;\n\n onInit(emblaApi);\n onSelect(emblaApi);\n emblaApi.on(\"reInit\", onInit);\n emblaApi.on(\"reInit\", onSelect);\n emblaApi.on(\"select\", onSelect);\n }, [emblaApi, onInit, onSelect]);\n\n return (\n
\n
\n {screenshots.map(({ id, childImageSharp }) => {\n const img = getImage(childImageSharp);\n return (\n \n {img ? (\n \n ) : null}\n
\n );\n })}\n
\n \n \n\n
\n {scrollSnaps.map((_, index) => (\n scrollTo(index)}\n />\n ))}\n
\n \n );\n};\n\nexport default ScreenshotsCarousel;\n","import React, { HTMLAttributes } from \"react\";\n\ninterface IProjectDescriptionSectionProps\n extends HTMLAttributes {\n title: string;\n className?: string;\n text?: string;\n textAttr?: HTMLAttributes;\n}\n\nconst ProjectDescriptionSection = ({\n title,\n text,\n className,\n children,\n textAttr,\n ...attr\n}: React.PropsWithChildren) => {\n return (\n
\n

\n {title}\n

\n {!!textAttr?.dangerouslySetInnerHTML ? (\n \n ) : (\n \n {children ? children : text}\n

\n )}\n
\n );\n};\n\nexport default ProjectDescriptionSection;\n","import React from \"react\";\n\ninterface IStackOrTeamCardProps\n extends React.HTMLAttributes {\n text: string;\n}\n\nconst StackOrTeamCard = ({ text, ...attr }: IStackOrTeamCardProps) => {\n return (\n \n {text}\n \n );\n};\n\nexport default StackOrTeamCard;\n","import React from \"react\";\nimport { HeadFC, PageProps, graphql } from \"gatsby\";\nimport { GatsbyImage, getImage } from \"gatsby-plugin-image\";\n\nimport {\n IProjectQueryResult,\n IProjectsPageContext,\n} from \"../types/project.type\";\n\nimport ContentContainer from \"../components/common/contentContainer\";\nimport ScreenshotsCarousel from \"../components/projects/screenshotsCarousel\";\nimport { HeadSeo, LocalBusinessMetadata } from \"../components/common/metadata\";\nimport ProjectDescriptionSection from \"../components/projects/projectDescriptionSection\";\nimport StackOrTeamCard from \"../components/projects/stackOrTeamCard\";\n\nconst Project = ({\n data: {\n markdownRemark: { frontmatter, html },\n },\n pageContext: { markupData, lang },\n}: PageProps) => {\n const {\n title,\n description,\n challenge,\n clientDescription,\n team,\n screenshots,\n stack,\n } = frontmatter;\n const logo = getImage(frontmatter.logo);\n\n return (\n \n \n
\n
\n \n {title}\n \n

\n {description}\n

\n
\n\n {logo ? (\n
\n \n
\n ) : null}\n
\n\n \n\n \n\n {html ? (\n \n ) : null}\n\n {team?.length ? (\n \n {team.map((member) => (\n \n ))}\n \n ) : null}\n\n {stack?.length ? (\n \n {stack.map((tech) => (\n \n ))}\n \n ) : null}\n\n {screenshots?.length ? (\n
\n

\n {markupData.resultSectionTitle}\n

\n \n
\n ) : null}\n \n \n \n );\n};\n\nexport default Project;\n\nexport const Head: HeadFC = ({\n data: {\n markdownRemark: {\n frontmatter: { title, cover },\n },\n },\n pageContext,\n location,\n}) => {\n const coverImg = getImage(cover);\n\n return (\n \n );\n};\n\nexport const query = graphql`\n query ($id: String) {\n markdownRemark(id: { eq: $id }) {\n id\n html\n frontmatter {\n stack\n title\n description\n challenge\n clientDescription\n logo {\n childImageSharp {\n gatsbyImageData(\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n width: 180\n )\n }\n }\n cover {\n childImageSharp {\n gatsbyImageData(\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n height: 400\n )\n }\n }\n team\n screenshots {\n id\n childImageSharp {\n gatsbyImageData(\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n height: 424\n )\n }\n }\n }\n }\n }\n`;\n","const defaultOptions = {\n active: true,\n breakpoints: {},\n delay: 4000,\n jump: false,\n playOnInit: true,\n stopOnFocusIn: true,\n stopOnInteraction: true,\n stopOnMouseEnter: false,\n stopOnLastSnap: false,\n rootNode: null\n};\n\nfunction Autoplay(userOptions = {}) {\n let options;\n let emblaApi;\n let destroyed;\n let playing = false;\n let resume = true;\n let jump = false;\n let timer = 0;\n function init(emblaApiInstance, optionsHandler) {\n emblaApi = emblaApiInstance;\n const {\n mergeOptions,\n optionsAtMedia\n } = optionsHandler;\n const optionsBase = mergeOptions(defaultOptions, Autoplay.globalOptions);\n const allOptions = mergeOptions(optionsBase, userOptions);\n options = optionsAtMedia(allOptions);\n if (emblaApi.scrollSnapList().length <= 1) return;\n jump = options.jump;\n destroyed = false;\n const {\n eventStore,\n ownerDocument\n } = emblaApi.internalEngine();\n const emblaRoot = emblaApi.rootNode();\n const root = options.rootNode && options.rootNode(emblaRoot) || emblaRoot;\n const container = emblaApi.containerNode();\n emblaApi.on('pointerDown', stopTimer);\n if (!options.stopOnInteraction) {\n emblaApi.on('pointerUp', startTimer);\n }\n if (options.stopOnMouseEnter) {\n eventStore.add(root, 'mouseenter', () => {\n resume = false;\n stopTimer();\n });\n if (!options.stopOnInteraction) {\n eventStore.add(root, 'mouseleave', () => {\n resume = true;\n startTimer();\n });\n }\n }\n if (options.stopOnFocusIn) {\n eventStore.add(container, 'focusin', stopTimer);\n if (!options.stopOnInteraction) {\n eventStore.add(container, 'focusout', startTimer);\n }\n }\n eventStore.add(ownerDocument, 'visibilitychange', visibilityChange);\n if (options.playOnInit && !documentIsHidden()) startTimer();\n }\n function destroy() {\n emblaApi.off('pointerDown', stopTimer).off('pointerUp', startTimer);\n stopTimer();\n destroyed = true;\n playing = false;\n }\n function startTimer() {\n if (destroyed) return;\n if (!resume) return;\n if (!playing) emblaApi.emit('autoplay:play');\n const {\n ownerWindow\n } = emblaApi.internalEngine();\n ownerWindow.clearInterval(timer);\n timer = ownerWindow.setInterval(next, options.delay);\n playing = true;\n }\n function stopTimer() {\n if (destroyed) return;\n if (playing) emblaApi.emit('autoplay:stop');\n const {\n ownerWindow\n } = emblaApi.internalEngine();\n ownerWindow.clearInterval(timer);\n timer = 0;\n playing = false;\n }\n function visibilityChange() {\n if (documentIsHidden()) {\n resume = playing;\n return stopTimer();\n }\n if (resume) startTimer();\n }\n function documentIsHidden() {\n const {\n ownerDocument\n } = emblaApi.internalEngine();\n return ownerDocument.visibilityState === 'hidden';\n }\n function play(jumpOverride) {\n if (typeof jumpOverride !== 'undefined') jump = jumpOverride;\n resume = true;\n startTimer();\n }\n function stop() {\n if (playing) stopTimer();\n }\n function reset() {\n if (playing) play();\n }\n function isPlaying() {\n return playing;\n }\n function next() {\n const {\n index\n } = emblaApi.internalEngine();\n const nextIndex = index.clone().add(1).get();\n const lastIndex = emblaApi.scrollSnapList().length - 1;\n const kill = options.stopOnLastSnap && nextIndex === lastIndex;\n if (kill) stopTimer();\n if (emblaApi.canScrollNext()) {\n emblaApi.scrollNext(jump);\n } else {\n emblaApi.scrollTo(0, jump);\n }\n }\n const self = {\n name: 'autoplay',\n options: userOptions,\n init,\n destroy,\n play,\n stop,\n reset,\n isPlaying\n };\n return self;\n}\nAutoplay.globalOptions = undefined;\n\nexport { Autoplay as default };\n//# sourceMappingURL=embla-carousel-autoplay.esm.js.map\n"],"names":["DotButton","_ref","selected","onClick","___EmotionJSX","className","concat","type","PrevButton","_ref2","enabled","disabled","viewBox","fill","d","NextButton","_ref3","screenshots","emblaRef","emblaApi","useEmblaCarousel","loop","Autoplay","stopOnInteraction","stopOnMouseEnter","prevBtnEnabled","setPrevBtnEnabled","useState","nextBtnEnabled","setNextBtnEnabled","selectedIndex","setSelectedIndex","scrollSnaps","setScrollSnaps","scrollPrev","useCallback","scrollNext","scrollTo","index","onInit","scrollSnapList","onSelect","selectedScrollSnap","canScrollPrev","canScrollNext","useEffect","on","ref","map","id","childImageSharp","img","getImage","key","GatsbyImage","image","alt","_","title","text","children","textAttr","attr","_extends","dangerouslySetInnerHTML","data","markdownRemark","frontmatter","html","pageContext","markupData","lang","description","challenge","clientDescription","team","stack","logo","itemScope","itemType","ContentContainer","maxWidthClass","itemProp","imgStyle","objectFit","ProjectDescriptionSection","clientSectionTitle","challengeSectionTitle","solutionSectionTitle","__html","length","teamSectionTitle","member","StackOrTeamCard","techSectionTitle","tech","resultSectionTitle","ScreenshotsCarousel","LocalBusinessMetadata","Head","_coverImg$images$fall","cover","location","coverImg","HeadSeo","head","toUpperCase","siteUrl","site","path","pathname","images","fallback","src","defaultOptions","active","breakpoints","delay","jump","playOnInit","stopOnFocusIn","stopOnLastSnap","rootNode","userOptions","options","destroyed","playing","resume","timer","startTimer","emit","ownerWindow","internalEngine","clearInterval","setInterval","next","stopTimer","visibilityChange","documentIsHidden","ownerDocument","visibilityState","play","jumpOverride","nextIndex","clone","add","get","lastIndex","name","init","emblaApiInstance","optionsHandler","mergeOptions","optionsAtMedia","optionsBase","globalOptions","allOptions","eventStore","emblaRoot","root","container","containerNode","destroy","off","stop","reset","isPlaying","undefined"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-templates-projects-tsx-585b3228148568f67aca.js b/component---src-pages-templates-projects-tsx-2427a45ecb142ca97a72.js similarity index 51% rename from component---src-pages-templates-projects-tsx-585b3228148568f67aca.js rename to component---src-pages-templates-projects-tsx-2427a45ecb142ca97a72.js index d64ccb60..4e725758 100644 --- a/component---src-pages-templates-projects-tsx-585b3228148568f67aca.js +++ b/component---src-pages-templates-projects-tsx-2427a45ecb142ca97a72.js @@ -1,2 +1,2 @@ -(self.webpackChunkcode_cave=self.webpackChunkcode_cave||[]).push([[650],{6488:function(e,t,a){var r=a(9720).w_;e.exports.p=function(e){return r({tag:"svg",attr:{viewBox:"0 0 16 16",fill:"currentColor"},child:[{tag:"path",attr:{fillRule:"evenodd",d:"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z",clipRule:"evenodd"}},{tag:"path",attr:{fillRule:"evenodd",d:"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z",clipRule:"evenodd"}}]})(e)}},1434:function(e,t,a){"use strict";var r=a(7462),l=a(8322),n=a(917);t.Z=e=>{const{theme:t,onClick:a,className:o,children:s,border:i,...c}=e,d=""+(t===l.Q.dark?"bg-main-100 text-secondary-100 border-secondary-100 hover:bg-main-70":"bg-secondary-100 text-main-100 border-main-100 hover:bg-secondary-30");return(0,n.tZ)("button",(0,r.Z)({onClick:a,className:`flex min-w-10 items-center justify-center rounded-lg border-solid ${i?"border":""} ${d} ${o}`},c),s)}},4568:function(e,t,a){"use strict";var r=a(4160),l=a(8322),n=a(1434),o=a(917);t.Z=e=>{let{section:t,pagesQuantity:a,currentPage:s,nextPageTitle:i,className:c}=e;const d=Array.from({length:a},((e,t)=>t+1)),u=s+1;return(0,o.tZ)("div",{className:`flex justify-center w-full gap-6 ${c}`},s1?d.map((e=>(0,o.tZ)(r.rU,{key:`pagination-link-${e}`,to:`/${t}/page/${e}`},(0,o.tZ)(n.Z,{theme:l.Q.light,border:e===s,"aria-label":"view page",className:"h-10 font-bold"},e)))):null))}},6745:function(e,t,a){"use strict";var r=a(4160),l=a(8032),n=a(8322),o=a(6488),s=a(9165),i=a(917);t.Z=e=>{let{project:t,className:a,theme:c,lang:d}=e;const u=(0,l.c)(t.frontmatter.cover),{title:g,teamSize:m,duration:p}=t.frontmatter,h=c===n.Q.light?"text-main-100 hover:text-main-10":"text-secondary-100 hover:text-secondary-10",f=c===n.Q.light?"bg-secondary-100 hover:bg-secondary-100":"bg-main-100 hover:bg-main-100";return(0,i.tZ)(r.rU,{to:`/projects/${t.id}`,className:`${f} ${h} flex flex-col justify-between hover:text-main-10 rounded-2xl p-2.5 gap-2.5 ${a}`,itemScope:!0,itemType:"https://schema.org/CreativeWork"},(0,i.tZ)("div",{className:"group flex-1 relative"},u?(0,i.tZ)(l.G,{image:u,alt:"cover",itemProp:"image",className:"object-contain w-full rounded-[10px] grayscale transition-all group-hover:scale-[1.008]"}):null,(0,i.tZ)("div",{className:"absolute left-2 bottom-2 flex items-center gap-2.5 z-10"},(0,i.tZ)("p",{className:"backdrop-blur-sm backdrop-brightness-75 text-secondary-100 px-5 h-10 flex items-center rounded-lg"},p),(0,i.tZ)("p",{className:"backdrop-blur-sm backdrop-brightness-75 text-secondary-100 px-5 h-10 flex items-center rounded-lg"},m))),(0,i.tZ)("div",{className:"flex px-2.5 py-1 items-center grow"},(0,i.tZ)("h3",{className:"text-base grow font-medium h-full",itemProp:"description"},g),(0,i.tZ)(o.p,{size:20})),(0,i.tZ)(s.Lx,{itemProp:"author",lang:d}))}},3997:function(e,t,a){"use strict";a.r(t),a.d(t,{Head:function(){return c}});var r=a(8322),l=a(1164),n=a(6745),o=a(4568),s=a(9165),i=a(917);t.default=e=>{let{data:t,pageContext:a}=e;const s=t.allMarkdownRemark.nodes,{currentPage:c,pagesQuantity:d,lang:u}=a;return(0,i.tZ)("div",{className:"flex w-full justify-center bg-main-100"},(0,i.tZ)(l.Z,{maxWidthClass:"max-w-4.5xl",className:"flex-col py-16"},(0,i.tZ)("div",{className:"w-full grid grid-cols-1 sm:grid-cols-2 gap-x-14 gap-y-8"},s?s.map((e=>(0,i.tZ)(n.Z,{key:e.id,project:e,lang:u,theme:r.Q.light}))):null),d>1?(0,i.tZ)(o.Z,{section:"projects",pagesQuantity:d,currentPage:c,nextPageTitle:a.pagination.next}):null))};const c=e=>{let{pageContext:{markupData:t,site:a,lang:r},location:l}=e;return(0,i.tZ)(s.Ag,{title:`${t.head} | ${t.bannerTitle.toUpperCase()}`,siteUrl:a.siteUrl,path:l.pathname,lang:r})}},8322:function(e,t,a){"use strict";a.d(t,{Q:function(){return r}});let r=function(e){return e.dark="dark",e.light="light",e}({})}}]); -//# sourceMappingURL=component---src-pages-templates-projects-tsx-585b3228148568f67aca.js.map \ No newline at end of file +(self.webpackChunkcode_cave=self.webpackChunkcode_cave||[]).push([[650],{6488:function(e,t,a){var r=a(9720).w_;e.exports.p=function(e){return r({tag:"svg",attr:{viewBox:"0 0 16 16",fill:"currentColor"},child:[{tag:"path",attr:{fillRule:"evenodd",d:"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z",clipRule:"evenodd"}},{tag:"path",attr:{fillRule:"evenodd",d:"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z",clipRule:"evenodd"}}]})(e)}},1434:function(e,t,a){"use strict";var r=a(7462),l=a(8322),n=a(917);t.Z=e=>{const{theme:t,onClick:a,className:s,children:o,border:i,...c}=e,d=""+(t===l.Q.dark?"bg-main-100 text-secondary-100 border-secondary-100 hover:bg-main-70":"bg-secondary-100 text-main-100 border-main-100 hover:bg-secondary-30");return(0,n.tZ)("button",(0,r.Z)({onClick:a,className:`flex min-w-10 items-center justify-center rounded-lg border-solid ${i?"border":""} ${d} ${s}`},c),o)}},4568:function(e,t,a){"use strict";var r=a(4160),l=a(8322),n=a(1434),s=a(917);t.Z=e=>{let{section:t,pagesQuantity:a,currentPage:o,nextPageTitle:i,className:c}=e;const d=Array.from({length:a},((e,t)=>t+1)),u=o+1;return(0,s.tZ)("div",{className:`flex justify-center w-full gap-6 ${c}`},o1?d.map((e=>(0,s.tZ)(r.rU,{key:`pagination-link-${e}`,to:`/${t}/page/${e}`},(0,s.tZ)(n.Z,{theme:l.Q.light,border:e===o,"aria-label":"view page",className:"h-10 font-bold"},e)))):null))}},6745:function(e,t,a){"use strict";var r=a(4160),l=a(8032),n=a(8322),s=a(6488),o=a(9165),i=a(917);t.Z=e=>{let{project:t,className:a,theme:c,lang:d}=e;const u=(0,l.c)(t.frontmatter.cover),{title:m,teamSize:g,duration:p}=t.frontmatter,h=c===n.Q.light?"text-main-100 hover:text-main-10":"text-secondary-100 hover:text-secondary-10",f=c===n.Q.light?"bg-secondary-100 hover:bg-secondary-100":"bg-main-100 hover:bg-main-100";return(0,i.tZ)(r.rU,{to:`/projects/${t.id}`,className:`${f} ${h} flex flex-col justify-between hover:text-main-10 rounded-2xl p-2.5 gap-2.5 ${a}`,itemScope:!0,itemType:"https://schema.org/CreativeWork"},(0,i.tZ)("div",{className:"group flex-1 relative"},u?(0,i.tZ)(l.G,{image:u,alt:"cover",itemProp:"image",className:"object-contain w-full rounded-[10px] grayscale transition-all group-hover:scale-[1.007]"}):null,(0,i.tZ)("div",{className:"absolute left-2 bottom-2 flex items-center gap-2.5 z-10"},(0,i.tZ)("p",{className:"backdrop-blur-sm backdrop-brightness-75 text-secondary-100 px-5 h-10 flex items-center rounded-lg"},p),(0,i.tZ)("p",{className:"backdrop-blur-sm backdrop-brightness-75 text-secondary-100 px-5 h-10 flex items-center rounded-lg"},g))),(0,i.tZ)("div",{className:"flex px-2.5 py-1 items-center grow"},(0,i.tZ)("h2",{className:"text-base grow font-medium h-full",itemProp:"description"},m),(0,i.tZ)(s.p,{size:20})),(0,i.tZ)(o.Lx,{itemProp:"author",lang:d}))}},3997:function(e,t,a){"use strict";a.r(t),a.d(t,{Head:function(){return c}});var r=a(8322),l=a(1164),n=a(6745),s=a(4568),o=a(9165),i=a(917);t.default=e=>{let{data:t,pageContext:a}=e;const o=t.allMarkdownRemark.nodes,{currentPage:c,pagesQuantity:d,lang:u,markupData:m}=a;return(0,i.tZ)("div",{className:"flex w-full justify-center bg-main-100"},(0,i.tZ)("h1",{className:"hidden"},m.head),(0,i.tZ)(l.Z,{maxWidthClass:"max-w-4.5xl",className:"flex-col py-16"},(0,i.tZ)("div",{className:"w-full grid grid-cols-1 sm:grid-cols-2 gap-x-14 gap-y-8"},o?o.map((e=>(0,i.tZ)(n.Z,{key:e.id,project:e,lang:u,theme:r.Q.light}))):null),d>1?(0,i.tZ)(s.Z,{section:"projects",pagesQuantity:d,currentPage:c,nextPageTitle:a.pagination.next}):null))};const c=e=>{let{pageContext:{markupData:t,site:a,lang:r},location:l}=e;return(0,i.tZ)(o.Ag,{title:`${t.head} | ${t.bannerTitle.toUpperCase()}`,siteUrl:a.siteUrl,path:l.pathname,lang:r})}},8322:function(e,t,a){"use strict";a.d(t,{Q:function(){return r}});let r=function(e){return e.dark="dark",e.light="light",e}({})}}]); +//# sourceMappingURL=component---src-pages-templates-projects-tsx-2427a45ecb142ca97a72.js.map \ No newline at end of file diff --git a/component---src-pages-templates-projects-tsx-2427a45ecb142ca97a72.js.map b/component---src-pages-templates-projects-tsx-2427a45ecb142ca97a72.js.map new file mode 100644 index 00000000..19958abe --- /dev/null +++ b/component---src-pages-templates-projects-tsx-2427a45ecb142ca97a72.js.map @@ -0,0 +1 @@ +{"version":3,"file":"component---src-pages-templates-projects-tsx-2427a45ecb142ca97a72.js","mappings":"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","sources":["webpack://code-cave/./node_modules/@react-icons/all-files/bs/BsArrowUpRight.js","webpack://code-cave/./src/components/common/button.tsx","webpack://code-cave/./src/components/common/pagination.tsx","webpack://code-cave/./src/components/projects/projectPreview.tsx","webpack://code-cave/./src/pagesTemplates/projects.tsx","webpack://code-cave/./src/types/common.type.ts"],"sourcesContent":["// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.BsArrowUpRight = function BsArrowUpRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z\",\"clipRule\":\"evenodd\"}},{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z\",\"clipRule\":\"evenodd\"}}]})(props);\n};\n","import React from \"react\";\n\nimport { Theme } from \"../../types/common.type\";\n\ninterface IButtonProps extends React.ButtonHTMLAttributes {\n theme: Theme;\n onClick?: () => any;\n className?: string;\n border?: boolean;\n}\n\nconst Button = (props: React.PropsWithChildren) => {\n const { theme, onClick, className, children, border, ...attr } = props;\n\n const colorClasses = `${\n theme === Theme.dark\n ? \"bg-main-100 text-secondary-100 border-secondary-100 hover:bg-main-70\"\n : \"bg-secondary-100 text-main-100 border-main-100 hover:bg-secondary-30\"\n }`;\n\n return (\n \n {children}\n \n );\n};\n\nexport default Button;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { Theme } from \"../../types/common.type\";\n\nimport Button from \"./button\";\n\nconst Pagination = ({\n section,\n pagesQuantity,\n currentPage,\n nextPageTitle,\n className,\n}: {\n section: \"projects\" | `blog${string}`;\n pagesQuantity: number;\n currentPage: number;\n nextPageTitle?: string;\n className?: string;\n}) => {\n const pages = Array.from({ length: pagesQuantity }, (_, i) => i + 1);\n const nextPage = currentPage + 1;\n\n return (\n
\n {currentPage < pagesQuantity ? (\n \n \n {nextPageTitle ?? \"Next page\"}\n \n \n ) : null}\n\n \n
\n );\n};\n\nexport default Pagination;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\nimport { GatsbyImage, getImage } from \"gatsby-plugin-image\";\n\nimport { IProjectPreviewQueryResult } from \"../../types/project.type\";\nimport { TLang, Theme } from \"../../types/common.type\";\n\nimport { BsArrowUpRight } from \"@react-icons/all-files/bs/BsArrowUpRight\";\n\nimport { LocalBusinessMetadata } from \"../common/metadata\";\n\nconst ProjectPreview = ({\n project,\n className,\n theme,\n lang,\n}: {\n project: IProjectPreviewQueryResult;\n className?: string;\n theme: Theme;\n lang: TLang;\n}) => {\n const cover = getImage(project.frontmatter.cover);\n const { title, teamSize, duration } = project.frontmatter;\n\n const fontColorClass10 =\n theme === Theme.light\n ? \"text-main-100 hover:text-main-10\"\n : \"text-secondary-100 hover:text-secondary-10\";\n const bgColors =\n theme === Theme.light\n ? \"bg-secondary-100 hover:bg-secondary-100\"\n : \"bg-main-100 hover:bg-main-100\";\n\n return (\n \n
\n {cover ? (\n \n ) : null}\n
\n

\n {duration}\n

\n

\n {teamSize}\n

\n
\n
\n
\n \n {title}\n \n \n
\n \n \n );\n};\n\nexport default ProjectPreview;\n","import React from \"react\";\n\nimport { HeadFC, HeadProps, PageProps } from \"gatsby\";\nimport { graphql } from \"gatsby\";\n\nimport { IProjectsPageContext, IProjectsPageData } from \"../types/project.type\";\nimport { Theme } from \"../types/common.type\";\n\nimport ContentContainer from \"../components/common/contentContainer\";\nimport ProjectPreview from \"../components/projects/projectPreview\";\nimport Pagination from \"../components/common/pagination\";\nimport { HeadSeo } from \"../components/common/metadata\";\n\nconst Projects = ({\n data,\n pageContext,\n}: PageProps) => {\n const projects = data.allMarkdownRemark.nodes;\n const { currentPage, pagesQuantity, lang, markupData } = pageContext;\n\n return (\n
\n

{markupData.head}

\n {/*

{markupData.bannerTitle}

*/}\n \n
\n {projects\n ? projects.map((project) => (\n \n ))\n : null}\n
\n {pagesQuantity > 1 ? (\n \n ) : null}\n
\n
\n );\n};\n\nexport default Projects;\n\nexport const Head: HeadFC = ({\n pageContext: { markupData, site, lang },\n location,\n}: HeadProps) => (\n \n);\n\nexport const query = graphql`\n query ($skip: Int!, $limit: Int!, $lang: String) {\n allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"projects\" }, language: { eq: $lang } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: $limit\n skip: $skip\n ) {\n nodes {\n id\n frontmatter {\n title\n teamSize\n duration\n cover {\n childImageSharp {\n gatsbyImageData(\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n width: 600\n )\n }\n }\n }\n }\n }\n }\n`;\n","export interface ILang {\n lang: TLang;\n}\n\nexport type TLang = \"en\" | \"ru\";\n\nexport type TLinks = \"services\" | \"workflow\" | \"projects\" | \"blog\";\n\nexport interface IBasePageContext extends ILang {\n site: ISiteMetadata;\n}\n\nexport interface IMdQueryResult {\n allMarkdownRemark: {\n nodes: T[];\n };\n}\n\nexport interface ISiteMetadata {\n title: string;\n description: string;\n siteUrl: string;\n image: string;\n analyticsId: string;\n}\n\nexport enum Theme {\n dark = \"dark\",\n light = \"light\",\n}\n"],"names":["GenIcon","module","exports","props","theme","onClick","className","children","border","attr","colorClasses","Theme","dark","___EmotionJSX","_extends","_ref","section","pagesQuantity","currentPage","nextPageTitle","pages","Array","from","length","_","i","nextPage","Link","to","Button","light","map","page","key","project","lang","cover","getImage","frontmatter","title","teamSize","duration","fontColorClass10","bgColors","id","itemScope","itemType","GatsbyImage","image","alt","itemProp","BsArrowUpRight","size","LocalBusinessMetadata","data","pageContext","projects","allMarkdownRemark","nodes","markupData","head","ContentContainer","maxWidthClass","ProjectPreview","Pagination","pagination","next","Head","_ref2","site","location","HeadSeo","bannerTitle","toUpperCase","siteUrl","path","pathname"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-templates-projects-tsx-585b3228148568f67aca.js.map b/component---src-pages-templates-projects-tsx-585b3228148568f67aca.js.map deleted file mode 100644 index 791a9238..00000000 --- a/component---src-pages-templates-projects-tsx-585b3228148568f67aca.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-pages-templates-projects-tsx-585b3228148568f67aca.js","mappings":"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","sources":["webpack://code-cave/./node_modules/@react-icons/all-files/bs/BsArrowUpRight.js","webpack://code-cave/./src/components/common/button.tsx","webpack://code-cave/./src/components/common/pagination.tsx","webpack://code-cave/./src/components/projects/projectPreview.tsx","webpack://code-cave/./src/pagesTemplates/projects.tsx","webpack://code-cave/./src/types/common.type.ts"],"sourcesContent":["// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.BsArrowUpRight = function BsArrowUpRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z\",\"clipRule\":\"evenodd\"}},{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z\",\"clipRule\":\"evenodd\"}}]})(props);\n};\n","import React from \"react\";\n\nimport { Theme } from \"../../types/common.type\";\n\ninterface IButtonProps extends React.ButtonHTMLAttributes {\n theme: Theme;\n onClick?: () => any;\n className?: string;\n border?: boolean;\n}\n\nconst Button = (props: React.PropsWithChildren) => {\n const { theme, onClick, className, children, border, ...attr } = props;\n\n const colorClasses = `${\n theme === Theme.dark\n ? \"bg-main-100 text-secondary-100 border-secondary-100 hover:bg-main-70\"\n : \"bg-secondary-100 text-main-100 border-main-100 hover:bg-secondary-30\"\n }`;\n\n return (\n \n {children}\n \n );\n};\n\nexport default Button;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { Theme } from \"../../types/common.type\";\n\nimport Button from \"./button\";\n\nconst Pagination = ({\n section,\n pagesQuantity,\n currentPage,\n nextPageTitle,\n className,\n}: {\n section: \"projects\" | `blog${string}`;\n pagesQuantity: number;\n currentPage: number;\n nextPageTitle?: string;\n className?: string;\n}) => {\n const pages = Array.from({ length: pagesQuantity }, (_, i) => i + 1);\n const nextPage = currentPage + 1;\n\n return (\n
\n {currentPage < pagesQuantity ? (\n \n \n {nextPageTitle ?? \"Next page\"}\n \n \n ) : null}\n\n \n
\n );\n};\n\nexport default Pagination;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\nimport { GatsbyImage, getImage } from \"gatsby-plugin-image\";\n\nimport { IProjectPreviewQueryResult } from \"../../types/project.type\";\nimport { TLang, Theme } from \"../../types/common.type\";\n\nimport { BsArrowUpRight } from \"@react-icons/all-files/bs/BsArrowUpRight\";\n\nimport { LocalBusinessMetadata } from \"../common/metadata\";\n\nconst ProjectPreview = ({\n project,\n className,\n theme,\n lang,\n}: {\n project: IProjectPreviewQueryResult;\n className?: string;\n theme: Theme;\n lang: TLang;\n}) => {\n const cover = getImage(project.frontmatter.cover);\n const { title, teamSize, duration } = project.frontmatter;\n\n const fontColorClass10 =\n theme === Theme.light\n ? \"text-main-100 hover:text-main-10\"\n : \"text-secondary-100 hover:text-secondary-10\";\n const bgColors =\n theme === Theme.light\n ? \"bg-secondary-100 hover:bg-secondary-100\"\n : \"bg-main-100 hover:bg-main-100\";\n\n return (\n \n
\n {cover ? (\n \n ) : null}\n
\n

\n {duration}\n

\n

\n {teamSize}\n

\n
\n
\n
\n \n {title}\n \n \n
\n \n \n );\n};\n\nexport default ProjectPreview;\n","import React from \"react\";\n\nimport { HeadFC, HeadProps, PageProps } from \"gatsby\";\nimport { graphql } from \"gatsby\";\n\nimport { IProjectsPageContext, IProjectsPageData } from \"../types/project.type\";\nimport { Theme } from \"../types/common.type\";\n\nimport ContentContainer from \"../components/common/contentContainer\";\nimport ProjectPreview from \"../components/projects/projectPreview\";\nimport Pagination from \"../components/common/pagination\";\nimport { HeadSeo } from \"../components/common/metadata\";\n\nconst Projects = ({\n data,\n pageContext,\n}: PageProps) => {\n const projects = data.allMarkdownRemark.nodes;\n const { currentPage, pagesQuantity, lang } = pageContext;\n\n return (\n
\n \n
\n {projects\n ? projects.map((project) => (\n \n ))\n : null}\n
\n {pagesQuantity > 1 ? (\n \n ) : null}\n
\n
\n );\n};\n\nexport default Projects;\n\nexport const Head: HeadFC = ({\n pageContext: { markupData, site, lang },\n location,\n}: HeadProps) => (\n \n);\n\nexport const query = graphql`\n query ($skip: Int!, $limit: Int!, $lang: String) {\n allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"projects\" }, language: { eq: $lang } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: $limit\n skip: $skip\n ) {\n nodes {\n id\n frontmatter {\n title\n teamSize\n duration\n cover {\n childImageSharp {\n gatsbyImageData(\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n width: 600\n )\n }\n }\n }\n }\n }\n }\n`;\n","export interface ILang {\n lang: TLang;\n}\n\nexport type TLang = \"en\" | \"ru\";\n\nexport type TLinks = \"services\" | \"workflow\" | \"projects\" | \"blog\";\n\nexport interface IBasePageContext extends ILang {\n site: ISiteMetadata;\n}\n\nexport interface IMdQueryResult {\n allMarkdownRemark: {\n nodes: T[];\n };\n}\n\nexport interface ISiteMetadata {\n title: string;\n description: string;\n siteUrl: string;\n image: string;\n analyticsId: string;\n}\n\nexport enum Theme {\n dark = \"dark\",\n light = \"light\",\n}\n"],"names":["GenIcon","module","exports","props","theme","onClick","className","children","border","attr","colorClasses","Theme","dark","___EmotionJSX","_extends","_ref","section","pagesQuantity","currentPage","nextPageTitle","pages","Array","from","length","_","i","nextPage","Link","to","Button","light","map","page","key","project","lang","cover","getImage","frontmatter","title","teamSize","duration","fontColorClass10","bgColors","id","itemScope","itemType","GatsbyImage","image","alt","itemProp","BsArrowUpRight","size","LocalBusinessMetadata","data","pageContext","projects","allMarkdownRemark","nodes","ContentContainer","maxWidthClass","ProjectPreview","Pagination","pagination","next","Head","_ref2","markupData","site","location","HeadSeo","head","bannerTitle","toUpperCase","siteUrl","path","pathname"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-templates-workflow-tsx-0ec92049b543300a7c91.js b/component---src-pages-templates-workflow-tsx-0ec92049b543300a7c91.js new file mode 100644 index 00000000..c01d33e1 --- /dev/null +++ b/component---src-pages-templates-workflow-tsx-0ec92049b543300a7c91.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkcode_cave=self.webpackChunkcode_cave||[]).push([[548],{216:function(e,t,l){var a=l(7462),n=l(7294),s=l(4160),r=l(8322),o=l(4471),i=l.n(o),u=l(1164),c=l(917);t.Z=e=>{let{section:t,theme:l,title:o,linkTitle:d,subTitle:m,className:f,children:x,borderT:p,borderB:g,isArrowLink:v=!0,...w}=e;const Z=l===r.Q.dark?"text-secondary-100":"text-main-100",h=l===r.Q.dark?"text-secondary-100 hover:text-secondary-70":"text-main-100 hover:text-main-10",b=l===r.Q.dark?"bg-main-100":"bg-secondary-100";return(0,c.tZ)(n.Fragment,null,p?(0,c.tZ)(i(),{className:"w-full"}):null,(0,c.tZ)("section",(0,a.Z)({className:`w-full py-16 ${b} ${f}`},w),(0,c.tZ)(u.Z,{maxWidthClass:"max-w-[1280px]",className:`flex-col items-center ${Z}`},(0,c.tZ)("div",{className:"flex justify-between w-full sm:items-center pb-8 sm:pb-14 flex-col sm:flex-row gap-5"},(0,c.tZ)("h2",{className:`text-4xl font-bold flex-1 ${Z}`},o.toUpperCase()),t?(0,c.tZ)(s.rU,{to:`/${t}`,className:`w-full sm:w-auto text-start sm:text-end text-xl font-normal cursor-pointer whitespace-nowrap ${h}`},d?d.toUpperCase():"DISCOVER MORE"," ",v?(0,c.tZ)(n.Fragment,null,"→"):null):null,m?(0,c.tZ)("p",{className:`w-full sm:w-auto flex-1 text-start sm:text-end text-xl font-normal ${Z}`},m.toUpperCase()):null),x)),g?(0,c.tZ)(i(),{className:"w-full"}):null)}},240:function(e,t,l){l.r(t),l.d(t,{Head:function(){return h},default:function(){return Z}});var a=l(7294),n=l(8032),s=l(1929),r=l(1164),o=l(917);var i=e=>{let{step:t,scroll:l,stepNumber:n,className:s}=e;const r=(0,a.useRef)(null),{0:i,1:u}=(0,a.useState)("w-[100%]");(0,a.useEffect)((()=>{if(!r.current||!window)return;const e=r.current.getBoundingClientRect().bottom;window.innerHeight>e&&u("w-0")}),[l]);const{html:c,frontmatter:{title:d}}=t;return(0,o.tZ)("div",{ref:r,className:`workflow-step relative flex w-full items-center justify-between text-main-100 gap-5 md:gap-28 max-w-4.5xl ${s}`},(0,o.tZ)("div",{className:`hidden md:block cover absolute -top-2 -bottom-2 z-10 bg-secondary-100 transition-all duration-1000 ${i}`}),(0,o.tZ)("p",{className:"text-center px-5 md:px-20 text-[88px] sm:text-[148px] font-bold shrink-0 py-4"},n),(0,o.tZ)("div",{className:"flex flex-col flex-1 gap-2.5"},(0,o.tZ)("h2",{className:"font-bold text-2xl sm:text-3xl"},d),(0,o.tZ)("div",{className:"w-full font-normal text-sm sm:text-lg",dangerouslySetInnerHTML:{__html:c}})))},u=l(4160),c=l(8322),d=l(216);var m=e=>{let{reason:{frontmatter:{title:t},html:l},className:a}=e;return(0,o.tZ)("div",{className:`group why-us-card relative flex flex-col text-secondary-100 gap-2.5 cursor-pointer break-inside-avoid h-max ${a}`},(0,o.tZ)("h3",{className:"text-3xl"},t),(0,o.tZ)("div",{className:"text-lg text-secondary-70",dangerouslySetInnerHTML:{__html:l}}),(0,o.tZ)("div",{className:"line w-1 h-0 bg-secondary-100 absolute top-1/2 -left-5 -translate-y-1/2 transition-all duration-500 break-inside-avoid group-hover:h-full"}))};var f=e=>{var t,l,n,s,r,i,f,p,g;let{lang:v}=e;const w=(0,u.K2)(x);let Z;v in w?Z=null==w||null===(t=w[v])||void 0===t?void 0:t.nodes:null==w||null===(l=w.en)||void 0===l||l.nodes;const h=null!==(n=null==w||null===(s=w.markupData)||void 0===s||null===(r=s.nodes)||void 0===r||null===(i=r.find((e=>e.fields.language===v)))||void 0===i||null===(f=i.frontmatter)||void 0===f||null===(p=f.whyUs)||void 0===p?void 0:p.title)&&void 0!==n?n:"why us";return(0,o.tZ)(a.Fragment,null,null!==(g=Z)&&void 0!==g&&g.length?(0,o.tZ)(d.Z,{theme:c.Q.dark,title:h,borderB:!0},(0,o.tZ)("div",{className:"flex flex-col md:flex-row gap-y-5 w-full gap-x-28 max-w-4.5xl"},(0,o.tZ)("div",{className:"flex flex-1 flex-col gap-y-5 md:gap-y-14 justify-start"},Z.map(((e,t)=>t%2==0&&(0,o.tZ)(m,{key:e.id,reason:e})))),(0,o.tZ)("div",{className:"flex flex-1 flex-col gap-y-5 md:gap-y-14 justify-start"},Z.map(((e,t)=>t%2!=0&&(0,o.tZ)(m,{key:e.id,reason:e})))))):null)};const x="941943045";var p=l(9165),g=l(4471),v=l.n(g),w=l(4532);var Z=e=>{let{data:t,pageContext:{markupData:l,lang:u}}=e;const c=t.allMarkdownRemark.nodes,d=(0,n.c)(l.image),m=(0,a.useRef)(!0),{0:x,1:p}=(0,a.useState)(!1),g=()=>{p((e=>!e))};return(0,a.useEffect)((()=>{if(m.current&&window)return m.current=!1,window.addEventListener("scroll",g),()=>window.removeEventListener("scroll",g)}),[]),(0,o.tZ)(a.Fragment,null,(0,o.tZ)(s.Z,{heightClass:"lg:h-99",title:l.bannerTitle,image:d,borderBottom:!0}),(0,o.tZ)("div",{className:"bg-secondary-100"},(0,o.tZ)(r.Z,{className:"flex-col items-center relative transition-all duration-1000 py-16"},c?c.map(((e,t)=>(0,o.tZ)(i,{key:e.id,step:e,className:"even:flex-row-reverse",scroll:x,stepNumber:t+1}))):null),(0,o.tZ)(v(),{className:"w-full"})),(0,o.tZ)(f,{lang:u}),(0,o.tZ)(w.Z,{lang:u}))};const h=e=>{let{pageContext:{markupData:t,site:l,lang:a},location:n}=e;return(0,o.tZ)(p.Ag,{title:`${t.head} | ${t.bannerTitle.toUpperCase()}`,siteUrl:l.siteUrl,path:n.pathname,lang:a})}},8322:function(e,t,l){l.d(t,{Q:function(){return a}});let a=function(e){return e.dark="dark",e.light="light",e}({})}}]); +//# sourceMappingURL=component---src-pages-templates-workflow-tsx-0ec92049b543300a7c91.js.map \ No newline at end of file diff --git a/component---src-pages-templates-workflow-tsx-0ec92049b543300a7c91.js.map b/component---src-pages-templates-workflow-tsx-0ec92049b543300a7c91.js.map new file mode 100644 index 00000000..cd51d5ea --- /dev/null +++ b/component---src-pages-templates-workflow-tsx-0ec92049b543300a7c91.js.map @@ -0,0 +1 @@ +{"version":3,"file":"component---src-pages-templates-workflow-tsx-0ec92049b543300a7c91.js","mappings":"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","sources":["webpack://code-cave/./src/components/common/templateSection.tsx","webpack://code-cave/./src/components/workflow/workflowStep.tsx","webpack://code-cave/./src/components/whyUs/whyUsReason.tsx","webpack://code-cave/./src/components/whyUs/whyUsSection.tsx","webpack://code-cave/./src/pagesTemplates/workflow.tsx","webpack://code-cave/./src/types/common.type.ts"],"sourcesContent":["import React, { PropsWithChildren } from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { Theme } from \"../../types/common.type\";\n\nimport Border from \"../../assets/common/border.svg\";\n\nimport ContentContainer from \"./contentContainer\";\n\ninterface ITemplateSectionProps extends React.HTMLAttributes {\n title: string;\n theme: Theme;\n isArrowLink?: boolean;\n linkTitle?: string;\n subTitle?: string;\n section?: string;\n className?: string;\n borderT?: boolean;\n borderB?: boolean;\n}\n\nconst TemplateSection = ({\n section,\n theme,\n title,\n linkTitle,\n subTitle,\n className,\n children,\n borderT,\n borderB,\n isArrowLink = true,\n ...attr\n}: PropsWithChildren) => {\n const mainColorClass =\n theme === Theme.dark ? \"text-secondary-100\" : \"text-main-100\";\n const linkColorClass =\n theme === Theme.dark\n ? \"text-secondary-100 hover:text-secondary-70\"\n : \"text-main-100 hover:text-main-10\";\n const bgColorClass =\n theme === Theme.dark ? \"bg-main-100\" : \"bg-secondary-100\";\n\n return (\n <>\n {borderT ? : null}\n \n \n
\n

\n {title.toUpperCase()}\n

\n {section ? (\n \n {linkTitle ? linkTitle.toUpperCase() : \"DISCOVER MORE\"}{\" \"}\n {isArrowLink ? <>→ : null}\n \n ) : null}\n {subTitle ? (\n \n {subTitle.toUpperCase()}\n

\n ) : null}\n
\n {children}\n \n \n {borderB ? : null}\n \n );\n};\n\nexport default TemplateSection;\n","import React, { useEffect, useState, useRef } from \"react\";\n\nimport { IWorkflowStep } from \"../../types/workflow.type\";\n\nconst WorkflowStep = ({\n step,\n scroll,\n stepNumber,\n className,\n}: {\n step: IWorkflowStep;\n scroll: boolean;\n stepNumber: number;\n className?: string;\n}) => {\n const div = useRef(null);\n const [coverWidth, setCoverWidth] = useState<\"w-[100%]\" | \"w-0\">(\"w-[100%]\");\n\n useEffect(() => {\n if (!div.current || !window) return;\n const divBottom = div.current.getBoundingClientRect().bottom;\n\n if (window.innerHeight > divBottom) setCoverWidth(\"w-0\");\n }, [scroll]);\n\n const {\n html,\n frontmatter: { title },\n } = step;\n\n return (\n \n \n

\n {stepNumber}\n

\n
\n

{title}

\n \n
\n \n );\n};\n\nexport default WorkflowStep;\n","import React from \"react\";\n\nimport { IWhyUsReason } from \"../../types/whyUs.type\";\n\nconst WhyUsReason = ({\n reason: {\n frontmatter: { title },\n html,\n },\n className,\n}: {\n reason: IWhyUsReason;\n className?: string;\n}) => {\n return (\n \n

{title}

\n \n \n \n );\n};\n\nexport default WhyUsReason;\n","import React from \"react\";\nimport { graphql, useStaticQuery } from \"gatsby\";\n\nimport { IWhyUsQueryResult, IWhyUsReason } from \"../../types/whyUs.type\";\nimport { ILang, Theme } from \"../../types/common.type\";\n\nimport TemplateSection from \"../common/templateSection\";\nimport WhyUsReason from \"./whyUsReason\";\n\nconst WhyUsSection = ({ lang }: ILang) => {\n const whyUsQueryData = useStaticQuery(query) as IWhyUsQueryResult;\n\n let whyUsReasons: IWhyUsReason[] | null | undefined;\n if (lang in whyUsQueryData)\n whyUsReasons = whyUsQueryData?.[lang]?.nodes as\n | IWhyUsReason[]\n | null\n | undefined;\n else whyUsQueryData?.en?.nodes;\n\n const sectionTitle =\n whyUsQueryData?.markupData?.nodes?.find(\n (node) => node.fields.language === lang\n )?.frontmatter?.whyUs?.title ?? \"why us\";\n\n return (\n <>\n {whyUsReasons?.length ? (\n \n
\n
\n {whyUsReasons.map(\n (reason, i) =>\n i % 2 === 0 && \n )}\n
\n
\n {whyUsReasons.map(\n (reason, i) =>\n i % 2 != 0 && \n )}\n
\n
\n
\n ) : null}\n \n );\n};\n\nexport default WhyUsSection;\n\nconst query = graphql`\n {\n en: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"whyUs\" }, language: { eq: \"en\" } }\n }\n sort: { frontmatter: { order: ASC } }\n ) {\n nodes {\n id\n html\n frontmatter {\n title\n }\n fields {\n language\n }\n }\n }\n ru: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"whyUs\" }, language: { eq: \"ru\" } }\n }\n sort: { frontmatter: { order: ASC } }\n ) {\n nodes {\n id\n html\n frontmatter {\n title\n }\n fields {\n language\n }\n }\n }\n markupData: allMarkdownRemark(\n filter: { fields: { sourceName: { eq: \"common\" } } }\n sort: { frontmatter: { order: ASC } }\n ) {\n nodes {\n fields {\n language\n }\n frontmatter {\n whyUs {\n title\n }\n }\n }\n }\n }\n`;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { HeadFC, HeadProps, PageProps } from \"gatsby\";\nimport { graphql } from \"gatsby\";\nimport { getImage } from \"gatsby-plugin-image\";\n\nimport {\n IWorkflowPageContext,\n IWorkflowStepsQueryResult,\n} from \"../types/workflow.type\";\n\nimport Banner from \"../components/common/banner\";\nimport ContentContainer from \"../components/common/contentContainer\";\nimport WorkflowStep from \"../components/workflow/workflowStep\";\nimport WhyUsSection from \"../components/whyUs/whyUsSection\";\nimport { HeadSeo } from \"../components/common/metadata\";\nimport Border from \"../assets/common/border.svg\";\nimport ContactFormSection from \"../components/forms/contactFormSection\";\n\nconst Workflow = ({\n data,\n pageContext: { markupData, lang },\n}: PageProps) => {\n const workflowSteps = data.allMarkdownRemark.nodes;\n const bannerImage = getImage(markupData.image);\n\n const isInitial = useRef(true);\n const [scroll, setScroll] = useState(false);\n\n const scrollHandler = () => {\n setScroll((scroll) => !scroll);\n };\n\n useEffect(() => {\n if (!isInitial.current || !window) return;\n isInitial.current = false;\n\n window.addEventListener(\"scroll\", scrollHandler);\n\n return () => window.removeEventListener(\"scroll\", scrollHandler);\n }, []);\n\n return (\n <>\n \n
\n \n {workflowSteps\n ? workflowSteps.map((step, i) => (\n \n ))\n : null}\n \n \n
\n \n \n \n );\n};\n\nexport default Workflow;\n\nexport const Head: HeadFC = ({\n pageContext: { markupData, site, lang },\n location,\n}: HeadProps) => (\n \n);\n\nexport const query = graphql`\n query ($lang: String) {\n allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"workflow\" }, language: { eq: $lang } }\n }\n sort: { frontmatter: { step: ASC } }\n ) {\n nodes {\n id\n html\n frontmatter {\n title\n image {\n publicURL\n }\n }\n }\n }\n }\n`;\n","export interface ILang {\n lang: TLang;\n}\n\nexport type TLang = \"en\" | \"ru\";\n\nexport type TLinks = \"services\" | \"workflow\" | \"projects\" | \"blog\";\n\nexport interface IBasePageContext extends ILang {\n site: ISiteMetadata;\n}\n\nexport interface IMdQueryResult {\n allMarkdownRemark: {\n nodes: T[];\n };\n}\n\nexport interface ISiteMetadata {\n title: string;\n description: string;\n siteUrl: string;\n image: string;\n analyticsId: string;\n}\n\nexport enum Theme {\n dark = \"dark\",\n light = \"light\",\n}\n"],"names":["_ref","section","theme","title","linkTitle","subTitle","className","children","borderT","borderB","isArrowLink","attr","mainColorClass","Theme","dark","linkColorClass","bgColorClass","___EmotionJSX","React","Border","_extends","ContentContainer","maxWidthClass","toUpperCase","Link","to","step","scroll","stepNumber","div","useRef","coverWidth","setCoverWidth","useState","useEffect","current","window","divBottom","getBoundingClientRect","bottom","innerHeight","html","frontmatter","ref","dangerouslySetInnerHTML","__html","reason","_whyUsQueryData$lang","_whyUsQueryData$en","_whyUsQueryData$marku","_whyUsQueryData$marku2","_whyUsQueryData$marku3","_whyUsQueryData$marku4","_whyUsQueryData$marku5","_whyUsQueryData$marku6","_whyUsReasons","lang","whyUsQueryData","useStaticQuery","query","whyUsReasons","nodes","en","sectionTitle","markupData","find","node","fields","language","whyUs","length","TemplateSection","map","i","WhyUsReason","key","id","data","pageContext","workflowSteps","allMarkdownRemark","bannerImage","getImage","image","isInitial","setScroll","scrollHandler","addEventListener","removeEventListener","Banner","heightClass","bannerTitle","borderBottom","WorkflowStep","WhyUsSection","ContactFormSection","Head","_ref2","site","location","HeadSeo","head","siteUrl","path","pathname"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-templates-workflow-tsx-269bd6e36936a6947204.js b/component---src-pages-templates-workflow-tsx-269bd6e36936a6947204.js deleted file mode 100644 index e9eb1b93..00000000 --- a/component---src-pages-templates-workflow-tsx-269bd6e36936a6947204.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkcode_cave=self.webpackChunkcode_cave||[]).push([[548],{216:function(e,t,l){var a=l(7462),n=l(7294),s=l(4160),r=l(8322),o=l(4471),i=l.n(o),u=l(1164),c=l(917);t.Z=e=>{let{section:t,theme:l,title:o,linkTitle:d,subTitle:m,className:f,children:x,borderT:p,borderB:g,isArrowLink:v=!0,...w}=e;const Z=l===r.Q.dark?"text-secondary-100":"text-main-100",h=l===r.Q.dark?"text-secondary-100 hover:text-secondary-70":"text-main-100 hover:text-main-10",b=l===r.Q.dark?"bg-main-100":"bg-secondary-100";return(0,c.tZ)(n.Fragment,null,p?(0,c.tZ)(i(),{className:"w-full"}):null,(0,c.tZ)("section",(0,a.Z)({className:`w-full py-16 ${b} ${f}`},w),(0,c.tZ)(u.Z,{maxWidthClass:"max-w-[1280px]",className:`flex-col items-center ${Z}`},(0,c.tZ)("div",{className:"flex justify-between w-full sm:items-center pb-8 sm:pb-14 flex-col sm:flex-row gap-5"},(0,c.tZ)("h2",{className:`text-4xl font-bold flex-1 ${Z}`},o.toUpperCase()),t?(0,c.tZ)(s.rU,{to:`/${t}`,className:`w-full sm:w-auto text-start sm:text-end text-xl font-normal cursor-pointer whitespace-nowrap ${h}`},d?d.toUpperCase():"DISCOVER MORE"," ",v?(0,c.tZ)(n.Fragment,null,"→"):null):null,m?(0,c.tZ)("p",{className:`w-full sm:w-auto flex-1 text-start sm:text-end text-xl font-normal ${Z}`},m.toUpperCase()):null),x)),g?(0,c.tZ)(i(),{className:"w-full"}):null)}},240:function(e,t,l){l.r(t),l.d(t,{Head:function(){return h},default:function(){return Z}});var a=l(7294),n=l(8032),s=l(1929),r=l(1164),o=l(917);var i=e=>{let{step:t,scroll:l,stepNumber:n,className:s}=e;const r=(0,a.useRef)(null),{0:i,1:u}=(0,a.useState)("w-[100%]");(0,a.useEffect)((()=>{if(!r.current||!window)return;const e=r.current.getBoundingClientRect().bottom;window.innerHeight>e&&u("w-0")}),[l]);const{html:c,frontmatter:{title:d}}=t;return(0,o.tZ)("div",{ref:r,className:`workflow-step relative flex w-full items-center justify-between text-main-100 gap-5 md:gap-28 max-w-4.5xl ${s}`},(0,o.tZ)("div",{className:`hidden md:block cover absolute -top-2 -bottom-2 z-10 bg-secondary-100 transition-all duration-1000 ${i}`}),(0,o.tZ)("p",{className:"text-center px-5 md:px-20 text-[88px] sm:text-[148px] font-bold shrink-0 py-4"},n),(0,o.tZ)("div",{className:"flex flex-col flex-1 gap-2.5"},(0,o.tZ)("h2",{className:"font-bold text-2xl sm:text-3xl"},d),(0,o.tZ)("p",{className:"w-full font-normal text-sm sm:text-lg",dangerouslySetInnerHTML:{__html:c}})))},u=l(4160),c=l(8322),d=l(216);var m=e=>{let{reason:{frontmatter:{title:t},html:l},className:a}=e;return(0,o.tZ)("div",{className:`group why-us-card relative flex flex-col text-secondary-100 gap-2.5 cursor-pointer break-inside-avoid h-max ${a}`},(0,o.tZ)("h3",{className:"text-3xl"},t),(0,o.tZ)("div",{className:"text-lg text-secondary-70",dangerouslySetInnerHTML:{__html:l}}),(0,o.tZ)("div",{className:"line w-1 h-0 bg-secondary-100 absolute top-1/2 -left-5 -translate-y-1/2 transition-all duration-500 break-inside-avoid group-hover:h-full"}))};var f=e=>{var t,l,n,s,r,i,f,p,g;let{lang:v}=e;const w=(0,u.K2)(x);let Z;v in w?Z=null==w||null===(t=w[v])||void 0===t?void 0:t.nodes:null==w||null===(l=w.en)||void 0===l||l.nodes;const h=null!==(n=null==w||null===(s=w.markupData)||void 0===s||null===(r=s.nodes)||void 0===r||null===(i=r.find((e=>e.fields.language===v)))||void 0===i||null===(f=i.frontmatter)||void 0===f||null===(p=f.whyUs)||void 0===p?void 0:p.title)&&void 0!==n?n:"why us";return(0,o.tZ)(a.Fragment,null,null!==(g=Z)&&void 0!==g&&g.length?(0,o.tZ)(d.Z,{theme:c.Q.dark,title:h,borderB:!0},(0,o.tZ)("div",{className:"flex flex-col md:flex-row gap-y-5 w-full gap-x-28 max-w-4.5xl"},(0,o.tZ)("div",{className:"flex flex-1 flex-col gap-y-5 md:gap-y-14 justify-start"},Z.map(((e,t)=>t%2==0&&(0,o.tZ)(m,{key:e.id,reason:e})))),(0,o.tZ)("div",{className:"flex flex-1 flex-col gap-y-5 md:gap-y-14 justify-start"},Z.map(((e,t)=>t%2!=0&&(0,o.tZ)(m,{key:e.id,reason:e})))))):null)};const x="941943045";var p=l(9165),g=l(4471),v=l.n(g),w=l(4532);var Z=e=>{let{data:t,pageContext:{markupData:l,lang:u}}=e;const c=t.allMarkdownRemark.nodes,d=(0,n.c)(l.image),m=(0,a.useRef)(!0),{0:x,1:p}=(0,a.useState)(!1),g=()=>{p((e=>!e))};return(0,a.useEffect)((()=>{if(m.current&&window)return m.current=!1,window.addEventListener("scroll",g),()=>window.removeEventListener("scroll",g)}),[]),(0,o.tZ)(a.Fragment,null,(0,o.tZ)(s.Z,{heightClass:"lg:h-99",title:l.bannerTitle,image:d,borderBottom:!0}),(0,o.tZ)("div",{className:"bg-secondary-100"},(0,o.tZ)(r.Z,{className:"flex-col items-center relative transition-all duration-1000 py-16"},c?c.map(((e,t)=>(0,o.tZ)(i,{key:e.id,step:e,className:"even:flex-row-reverse",scroll:x,stepNumber:t+1}))):null),(0,o.tZ)(v(),{className:"w-full"})),(0,o.tZ)(f,{lang:u}),(0,o.tZ)(w.Z,{lang:u}))};const h=e=>{let{pageContext:{markupData:t,site:l,lang:a},location:n}=e;return(0,o.tZ)(p.Ag,{title:`${t.head} | ${t.bannerTitle.toUpperCase()}`,siteUrl:l.siteUrl,path:n.pathname,lang:a})}},8322:function(e,t,l){l.d(t,{Q:function(){return a}});let a=function(e){return e.dark="dark",e.light="light",e}({})}}]); -//# sourceMappingURL=component---src-pages-templates-workflow-tsx-269bd6e36936a6947204.js.map \ No newline at end of file diff --git a/component---src-pages-templates-workflow-tsx-269bd6e36936a6947204.js.map b/component---src-pages-templates-workflow-tsx-269bd6e36936a6947204.js.map deleted file mode 100644 index 3a5fd1b3..00000000 --- a/component---src-pages-templates-workflow-tsx-269bd6e36936a6947204.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-pages-templates-workflow-tsx-269bd6e36936a6947204.js","mappings":"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","sources":["webpack://code-cave/./src/components/common/templateSection.tsx","webpack://code-cave/./src/components/workflow/workflowStep.tsx","webpack://code-cave/./src/components/whyUs/whyUsReason.tsx","webpack://code-cave/./src/components/whyUs/whyUsSection.tsx","webpack://code-cave/./src/pagesTemplates/workflow.tsx","webpack://code-cave/./src/types/common.type.ts"],"sourcesContent":["import React, { PropsWithChildren } from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { Theme } from \"../../types/common.type\";\n\nimport Border from \"../../assets/common/border.svg\";\n\nimport ContentContainer from \"./contentContainer\";\n\ninterface ITemplateSectionProps extends React.HTMLAttributes {\n title: string;\n theme: Theme;\n isArrowLink?: boolean;\n linkTitle?: string;\n subTitle?: string;\n section?: string;\n className?: string;\n borderT?: boolean;\n borderB?: boolean;\n}\n\nconst TemplateSection = ({\n section,\n theme,\n title,\n linkTitle,\n subTitle,\n className,\n children,\n borderT,\n borderB,\n isArrowLink = true,\n ...attr\n}: PropsWithChildren) => {\n const mainColorClass =\n theme === Theme.dark ? \"text-secondary-100\" : \"text-main-100\";\n const linkColorClass =\n theme === Theme.dark\n ? \"text-secondary-100 hover:text-secondary-70\"\n : \"text-main-100 hover:text-main-10\";\n const bgColorClass =\n theme === Theme.dark ? \"bg-main-100\" : \"bg-secondary-100\";\n\n return (\n <>\n {borderT ? : null}\n \n \n
\n

\n {title.toUpperCase()}\n

\n {section ? (\n \n {linkTitle ? linkTitle.toUpperCase() : \"DISCOVER MORE\"}{\" \"}\n {isArrowLink ? <>→ : null}\n \n ) : null}\n {subTitle ? (\n \n {subTitle.toUpperCase()}\n

\n ) : null}\n
\n {children}\n \n \n {borderB ? : null}\n \n );\n};\n\nexport default TemplateSection;\n","import React, { useEffect, useState, useRef } from \"react\";\n\nimport { IWorkflowStep } from \"../../types/workflow.type\";\n\nimport Bond from \"../../assets/workflow/bond.svg\";\n\nconst WorkflowStep = ({\n step,\n scroll,\n stepNumber,\n className,\n}: {\n step: IWorkflowStep;\n scroll: boolean;\n stepNumber: number;\n className?: string;\n}) => {\n const div = useRef(null);\n const [coverWidth, setCoverWidth] = useState<\"w-[100%]\" | \"w-0\">(\"w-[100%]\");\n\n useEffect(() => {\n if (!div.current || !window) return;\n const divBottom = div.current.getBoundingClientRect().bottom;\n\n if (window.innerHeight > divBottom) setCoverWidth(\"w-0\");\n }, [scroll]);\n\n const {\n html,\n frontmatter: { title },\n } = step;\n\n return (\n \n \n

\n {stepNumber}\n

\n
\n

{title}

\n \n
\n \n );\n};\n\nexport default WorkflowStep;\n\n{\n /* \n \n

\n {stepNumber}\n

\n \n \n \n
\n

{title}

\n \n
\n \n */\n}\n","import React from \"react\";\n\nimport { IWhyUsReason } from \"../../types/whyUs.type\";\n\nconst WhyUsReason = ({\n reason: {\n frontmatter: { title },\n html,\n },\n className,\n}: {\n reason: IWhyUsReason;\n className?: string;\n}) => {\n return (\n \n

{title}

\n \n \n \n );\n};\n\nexport default WhyUsReason;\n","import React from \"react\";\nimport { graphql, useStaticQuery } from \"gatsby\";\n\nimport { IWhyUsQueryResult, IWhyUsReason } from \"../../types/whyUs.type\";\nimport { ILang, Theme } from \"../../types/common.type\";\n\nimport TemplateSection from \"../common/templateSection\";\nimport WhyUsReason from \"./whyUsReason\";\n\nconst WhyUsSection = ({ lang }: ILang) => {\n const whyUsQueryData = useStaticQuery(query) as IWhyUsQueryResult;\n\n let whyUsReasons: IWhyUsReason[] | null | undefined;\n if (lang in whyUsQueryData)\n whyUsReasons = whyUsQueryData?.[lang]?.nodes as\n | IWhyUsReason[]\n | null\n | undefined;\n else whyUsQueryData?.en?.nodes;\n\n const sectionTitle =\n whyUsQueryData?.markupData?.nodes?.find(\n (node) => node.fields.language === lang\n )?.frontmatter?.whyUs?.title ?? \"why us\";\n\n return (\n <>\n {whyUsReasons?.length ? (\n \n
\n
\n {whyUsReasons.map(\n (reason, i) =>\n i % 2 === 0 && \n )}\n
\n
\n {whyUsReasons.map(\n (reason, i) =>\n i % 2 != 0 && \n )}\n
\n
\n
\n ) : null}\n \n );\n};\n\nexport default WhyUsSection;\n\nconst query = graphql`\n {\n en: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"whyUs\" }, language: { eq: \"en\" } }\n }\n sort: { frontmatter: { order: ASC } }\n ) {\n nodes {\n id\n html\n frontmatter {\n title\n }\n fields {\n language\n }\n }\n }\n ru: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"whyUs\" }, language: { eq: \"ru\" } }\n }\n sort: { frontmatter: { order: ASC } }\n ) {\n nodes {\n id\n html\n frontmatter {\n title\n }\n fields {\n language\n }\n }\n }\n markupData: allMarkdownRemark(\n filter: { fields: { sourceName: { eq: \"common\" } } }\n sort: { frontmatter: { order: ASC } }\n ) {\n nodes {\n fields {\n language\n }\n frontmatter {\n whyUs {\n title\n }\n }\n }\n }\n }\n`;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { HeadFC, HeadProps, PageProps } from \"gatsby\";\nimport { graphql } from \"gatsby\";\nimport { getImage } from \"gatsby-plugin-image\";\n\nimport {\n IWorkflowPageContext,\n IWorkflowStepsQueryResult,\n} from \"../types/workflow.type\";\n\nimport Banner from \"../components/common/banner\";\nimport ContentContainer from \"../components/common/contentContainer\";\nimport WorkflowStep from \"../components/workflow/workflowStep\";\nimport WhyUsSection from \"../components/whyUs/whyUsSection\";\nimport { HeadSeo } from \"../components/common/metadata\";\nimport Border from \"../assets/common/border.svg\";\nimport ContactFormSection from \"../components/forms/contactFormSection\";\n\nconst Workflow = ({\n data,\n pageContext: { markupData, lang },\n}: PageProps) => {\n const workflowSteps = data.allMarkdownRemark.nodes;\n const bannerImage = getImage(markupData.image);\n\n const isInitial = useRef(true);\n const [scroll, setScroll] = useState(false);\n\n const scrollHandler = () => {\n setScroll((scroll) => !scroll);\n };\n\n useEffect(() => {\n if (!isInitial.current || !window) return;\n isInitial.current = false;\n\n window.addEventListener(\"scroll\", scrollHandler);\n\n return () => window.removeEventListener(\"scroll\", scrollHandler);\n }, []);\n\n return (\n <>\n \n
\n \n {workflowSteps\n ? workflowSteps.map((step, i) => (\n \n ))\n : null}\n \n \n
\n \n \n \n );\n};\n\nexport default Workflow;\n\nexport const Head: HeadFC = ({\n pageContext: { markupData, site, lang },\n location,\n}: HeadProps) => (\n \n);\n\nexport const query = graphql`\n query ($lang: String) {\n allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"workflow\" }, language: { eq: $lang } }\n }\n sort: { frontmatter: { step: ASC } }\n ) {\n nodes {\n id\n html\n frontmatter {\n title\n image {\n publicURL\n }\n }\n }\n }\n }\n`;\n","export interface ILang {\n lang: TLang;\n}\n\nexport type TLang = \"en\" | \"ru\";\n\nexport type TLinks = \"services\" | \"workflow\" | \"projects\" | \"blog\";\n\nexport interface IBasePageContext extends ILang {\n site: ISiteMetadata;\n}\n\nexport interface IMdQueryResult {\n allMarkdownRemark: {\n nodes: T[];\n };\n}\n\nexport interface ISiteMetadata {\n title: string;\n description: string;\n siteUrl: string;\n image: string;\n analyticsId: string;\n}\n\nexport enum Theme {\n dark = \"dark\",\n light = \"light\",\n}\n"],"names":["_ref","section","theme","title","linkTitle","subTitle","className","children","borderT","borderB","isArrowLink","attr","mainColorClass","Theme","dark","linkColorClass","bgColorClass","___EmotionJSX","React","Border","_extends","ContentContainer","maxWidthClass","toUpperCase","Link","to","step","scroll","stepNumber","div","useRef","coverWidth","setCoverWidth","useState","useEffect","current","window","divBottom","getBoundingClientRect","bottom","innerHeight","html","frontmatter","ref","dangerouslySetInnerHTML","__html","reason","_whyUsQueryData$lang","_whyUsQueryData$en","_whyUsQueryData$marku","_whyUsQueryData$marku2","_whyUsQueryData$marku3","_whyUsQueryData$marku4","_whyUsQueryData$marku5","_whyUsQueryData$marku6","_whyUsReasons","lang","whyUsQueryData","useStaticQuery","query","whyUsReasons","nodes","en","sectionTitle","markupData","find","node","fields","language","whyUs","length","TemplateSection","map","i","WhyUsReason","key","id","data","pageContext","workflowSteps","allMarkdownRemark","bannerImage","getImage","image","isInitial","setScroll","scrollHandler","addEventListener","removeEventListener","Banner","heightClass","bannerTitle","borderBottom","WorkflowStep","WhyUsSection","ContactFormSection","Head","_ref2","site","location","HeadSeo","head","siteUrl","path","pathname"],"sourceRoot":""} \ No newline at end of file diff --git a/cookie-policy/index.html b/cookie-policy/index.html index 9b77b14e..d3fe52ed 100644 --- a/cookie-policy/index.html +++ b/cookie-policy/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/index.html b/index.html index 4ad2f801..5acf13bf 100644 --- a/index.html +++ b/index.html @@ -1,8 +1,8 @@

AR

CAD ADDINS

PLM

QUALITY ASSURANCE

3D

ETL

WEB DEVELOPMENT

UX/UI

MOBILE APP

CLOUD & DEVOPS

SOME OF OUR PROJECTS

DISCOVER MORE
cover

3 months

4 specialists

Bimcore Revit Add-In

cover

ongoing

3 specialists

DevOps monitoring system

cover

3 months

7 specialists

Web & Mobile apps for a logistics company

OUR CUSTOMERS' SAY ABOUT US

REAL FEEDBACK FROM REAL PEOPLE

Specifi Europe Srl

Fabio Tantaro

General Manger, Specifi Europe Srl

Italy

Codecave helped us to migrate from our old internal system to the new ones, writing documentation that we will re-use in the future and assuring no lack of service in the interim for our customers.

Prima Consulting d.o.o.

Roberto Assi

CEO, Prima Consulting d.o.o.

Serbia

As a service company we wanted to create a website that would sum up all of our experiences gathered over the past 30 years.

+ }]);

AR

CAD ADDINS

PLM

QUALITY ASSURANCE

3D

ETL

WEB DEVELOPMENT

UX/UI

MOBILE APP

CLOUD & DEVOPS

SOME OF OUR PROJECTS

DISCOVER MORE
cover

3 months

4 specialists

Bimcore Revit Add-In

cover

ongoing

3 specialists

DevOps monitoring system

cover

3 months

7 specialists

Web & Mobile apps for a logistics company

OUR CUSTOMERS' SAY ABOUT US

REAL FEEDBACK FROM REAL PEOPLE

Specifi Europe Srl

Fabio Tantaro

General Manger, Specifi Europe Srl

Italy

Codecave helped us to migrate from our old internal system to the new ones, writing documentation that we will re-use in the future and assuring no lack of service in the interim for our customers.

Prima Consulting d.o.o.

Roberto Assi

CEO, Prima Consulting d.o.o.

Serbia

As a service company we wanted to create a website that would sum up all of our experiences gathered over the past 30 years.

At the same time we wanted it to be dynamic, with a possibility to add new information over time, as we know that only dynamism makes a website more interesting to its visitors.

We contacted CODECAVE, because we had a chance to collaborate with their CEO when he worked in an Italian IT company. Yaroslav guided us through all the stages of website creation, providing us a complete support. We would like to express our satisfaction with the service and the outcome.

Soytex LLC

SIA "Agrolats Group"

CEO, Soytex LLC

Latvia

During our collaboration CodеCave have proven themselves to be a reliable and responsible company, which quickly and qualitatively solves all the tasks assigned to them.

-

We had a very tight deadlines, however CodeCave team have managed to create a bleeding edge web presentation for us. In the process they always paid great attention all our needs.

anchor

LET’S DISCUSS YOUR PROJECT

WE’LL BE GLAD TO HEAR FROM YOU!
CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+

We had a very tight deadlines, however CodeCave team have managed to create a bleeding edge web presentation for us. In the process they always paid great attention all our needs.

anchor

LET’S DISCUSS YOUR PROJECT

WE’LL BE GLAD TO HEAR FROM YOU!

Describe your project or idea to get our expert assessment.

+

It’s totally free! No strings attached.

+

We can easily jump into a complex ongoing project or start from scratch.

+

Don’t miss this opportunity, contact us!

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/page-data/app-data.json b/page-data/app-data.json index df2589cc..125305b0 100644 --- a/page-data/app-data.json +++ b/page-data/app-data.json @@ -1 +1 @@ -{"webpackCompilationHash":"55d86e24108f644e4515"} +{"webpackCompilationHash":"377fd0c3be0dabbe9ac8"} diff --git a/privacy-policy/index.html b/privacy-policy/index.html index 15ba9c17..4772864e 100644 --- a/privacy-policy/index.html +++ b/privacy-policy/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/projects/08716ab8-fc5f-5f90-9fc0-a8218ec51923/index.html b/projects/08716ab8-fc5f-5f90-9fc0-a8218ec51923/index.html index 9ecc516d..8c23c6a2 100644 --- a/projects/08716ab8-fc5f-5f90-9fc0-a8218ec51923/index.html +++ b/projects/08716ab8-fc5f-5f90-9fc0-a8218ec51923/index.html @@ -1,8 +1,8 @@

Website for architectual agency

The website for LLC “Art-studio ‘Zrobim’” reflects the studio’s commitment to architectural excellence and client collaboration. It serves as a digital portfolio showcasing their extensive experience and innovative approach to design. It features a variety of completed projects, providing insights into their design process and the outcomes of their creative alliances with clients. The site is designed to offer an intuitive and informative experience for visitors, whether they are potential clients looking to start a project or simply exploring the world of contemporary architecture.

logo

Client

LLC “Art-studio “Zrobim” is a team of architects striving to make housing affordable and of high quality.

Challenge

LLC “Art-studio “Zrobim” needed a dynamic website presenting the offered services like private house designing, interior designing, villages, and blocks of houses designing.

Solution

CODECAVE have developed a beautiful, modern, user-friendly website corresponding to the all customers’ needs.

Engaged team

2 senior frontend developers1 UI/UX designer1 QA engineer1 DevOps engineer

Applied technologies

ReactGatsbyMUI

Product

logo
logo
logo
logo
CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

Website for architectual agency

The website for LLC “Art-studio ‘Zrobim’” reflects the studio’s commitment to architectural excellence and client collaboration. It serves as a digital portfolio showcasing their extensive experience and innovative approach to design. It features a variety of completed projects, providing insights into their design process and the outcomes of their creative alliances with clients. The site is designed to offer an intuitive and informative experience for visitors, whether they are potential clients looking to start a project or simply exploring the world of contemporary architecture.

logo

Client

LLC “Art-studio “Zrobim” is a team of architects striving to make housing affordable and of high quality.

Challenge

LLC “Art-studio “Zrobim” needed a dynamic website presenting the offered services like private house designing, interior designing, villages, and blocks of houses designing.

Solution

CODECAVE have developed a beautiful, modern, user-friendly website corresponding to the all customers’ needs.

Engaged team

2 senior frontend developers1 UI/UX designer1 QA engineer1 DevOps engineer

Applied technologies

ReactGatsbyMUI

Product

logo
logo
logo
logo
CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/projects/4010b091-889b-5be1-ab5a-bde195aa7729/index.html b/projects/4010b091-889b-5be1-ab5a-bde195aa7729/index.html index 2b55f9f8..98f858d0 100644 --- a/projects/4010b091-889b-5be1-ab5a-bde195aa7729/index.html +++ b/projects/4010b091-889b-5be1-ab5a-bde195aa7729/index.html @@ -1,8 +1,8 @@

3D configurator

3D Сonfigurator is an interactive tool that allows users customize and visualize products in a three-dimensional space. It’s integrated into websites, providing a user-friendly interface to choose products. Users start by selecting the product they want to customize and are presented with various options like colors, materials, sizes, and features. The Configurator updates the product in real-time, showing how changes affect the final product. Once satisfied with the customizations, users can finalize their design and proceed to order. The Configurator offers an enhanced shopping experience, reduced returns due to mismatched expectations, and increased customer engagement.

logo

Client

Yurkas is a door company that has been selling interior and entrance doors together with relevant completing parts for more than 20 years. The company regularly widens the doors range and services offered. The company aims to make door purchasing process of maximum comfort.

Challenge

Make door purchasing easy and clear process for everybody. Reduce the time of the purchase. Exclude the unforced errors while selecting the door. Save created models and their components. Get the specification of the order. Increase the amount of sold doors.

Solution

3D Configurator for selecting and configuring interior and entrance doors models with the possibility of 3D visualization of the chosen door in the doorway.

Engaged team

3 senior frontend developers1 UI/UX designer1 QA engineer1 DevOps engineer1 PM

Applied technologies

ReactJSHTMLNodeJSNestJSSwagger

Product

logo
logo
logo
CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

3D configurator

3D Сonfigurator is an interactive tool that allows users customize and visualize products in a three-dimensional space. It’s integrated into websites, providing a user-friendly interface to choose products. Users start by selecting the product they want to customize and are presented with various options like colors, materials, sizes, and features. The Configurator updates the product in real-time, showing how changes affect the final product. Once satisfied with the customizations, users can finalize their design and proceed to order. The Configurator offers an enhanced shopping experience, reduced returns due to mismatched expectations, and increased customer engagement.

logo

Client

Yurkas is a door company that has been selling interior and entrance doors together with relevant completing parts for more than 20 years. The company regularly widens the doors range and services offered. The company aims to make door purchasing process of maximum comfort.

Challenge

Make door purchasing easy and clear process for everybody. Reduce the time of the purchase. Exclude the unforced errors while selecting the door. Save created models and their components. Get the specification of the order. Increase the amount of sold doors.

Solution

3D Configurator for selecting and configuring interior and entrance doors models with the possibility of 3D visualization of the chosen door in the doorway.

Engaged team

3 senior frontend developers1 UI/UX designer1 QA engineer1 DevOps engineer1 PM

Applied technologies

ReactJSHTMLNodeJSNestJSSwagger

Product

logo
logo
logo
CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/projects/4057e0b3-692b-5512-a1fc-cb93bd81fe0e/index.html b/projects/4057e0b3-692b-5512-a1fc-cb93bd81fe0e/index.html index 2882bd19..6fb33652 100644 --- a/projects/4057e0b3-692b-5512-a1fc-cb93bd81fe0e/index.html +++ b/projects/4057e0b3-692b-5512-a1fc-cb93bd81fe0e/index.html @@ -1,8 +1,8 @@

DevOps monitoring system

Our monitoring system offers a complex approach to IT infrastructure management, enabling rapid detection and resolution of issues, thereby minimizing downtime and ensuring uninterrupted service operation. This enhances overall efficiency, reduces risks, and optimizes costs. Thanks to a standardized approach to real-time monitoring, analytics, and data visualization, our system becomes not just a tool, but a strategic asset that contributes to the growth of our clients' businesses.

Client

NDA - a company specializing in providing 3D design solutions, including software development, system integration, and IT consulting.

Challenge

The company faced the need to enhance the efficiency of its IT infrastructures through the implementation of monitoring systems. The commercial monitoring system was costly and did not provide the necessary flexibility and scalability.

Solution

A monitoring system based on open-source technologies was developed, allowing the company to abandon expensive solutions and gain deeper control over the performance and availability of its services. The system includes Grafana for data visualization and alerting, Prometheus for metric collection, and Loki for log aggregation, enabling prompt incident response and infrastructure operation optimization.

-

As the result of implementing the new monitoring system, the company was able to significantly reduce expenses on IT infrastructure support, increase the speed of incident response, and improve overall service performance. The use of our solution made unnecessary constant purchasing and licenses maintenance, reducing the solution ownership total cost.

Engaged team

2 DevOps engineer1 PM

Applied technologies

GrafanaPrometheusLokiKubernetesHelm

Product

logo
logo
logo
CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

DevOps monitoring system

Our monitoring system offers a complex approach to IT infrastructure management, enabling rapid detection and resolution of issues, thereby minimizing downtime and ensuring uninterrupted service operation. This enhances overall efficiency, reduces risks, and optimizes costs. Thanks to a standardized approach to real-time monitoring, analytics, and data visualization, our system becomes not just a tool, but a strategic asset that contributes to the growth of our clients' businesses.

Client

NDA - a company specializing in providing 3D design solutions, including software development, system integration, and IT consulting.

Challenge

The company faced the need to enhance the efficiency of its IT infrastructures through the implementation of monitoring systems. The commercial monitoring system was costly and did not provide the necessary flexibility and scalability.

Solution

A monitoring system based on open-source technologies was developed, allowing the company to abandon expensive solutions and gain deeper control over the performance and availability of its services. The system includes Grafana for data visualization and alerting, Prometheus for metric collection, and Loki for log aggregation, enabling prompt incident response and infrastructure operation optimization.

+

As the result of implementing the new monitoring system, the company was able to significantly reduce expenses on IT infrastructure support, increase the speed of incident response, and improve overall service performance. The use of our solution made unnecessary constant purchasing and licenses maintenance, reducing the solution ownership total cost.

Engaged team

2 DevOps engineer1 PM

Applied technologies

GrafanaPrometheusLokiKubernetesHelm

Product

logo
logo
logo
CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/projects/45987eea-191f-531c-b854-25e3d60decff/index.html b/projects/45987eea-191f-531c-b854-25e3d60decff/index.html index ca1cd919..45202e4d 100644 --- a/projects/45987eea-191f-531c-b854-25e3d60decff/index.html +++ b/projects/45987eea-191f-531c-b854-25e3d60decff/index.html @@ -1,8 +1,8 @@

Equipment selection service

The web application for selecting and configuring ventilation equipment that allows users to choose operating modes and select the most suitable components for ventilation systems in respect with such parameters as humidity, temperature, atmospheric absolute pressure, etc. The application streamlines the process of designing and selling ventilation equipment by reducing the time to process applications and ensuring that the selected components meet the specific criteria of the installation. It’s a powerful tool for professionals in this field, that allows to perform efficient and accurate configuration of complex ventilation systems.

logo

Client

The company "ESKD Group" has been working in the sphere of ventilation equipment, and installation and construction works for more than 10 years. It provides a wide range of services for the internal building networks installation. The main company specialization are the installation services. The company is licensed to install ventilation, air conditioning and heating systems. The company's ventilation units are produced at its own industrial site in Belarus. Thanks to its own manufacturing of ventilation equipment, the company offers high-quality supply and exhaust units at reasonable prices, designed to meet the requirements of various industrial sectors.

Challenge

Automation of the equipment selection and configuration process. Accelerating the process of selecting and configuring equipment. Storing already completed projects. Generating reports with equipment characteristics. Creating and sending equipment specifications to production.

Solution

A web-application for the ventilation equipment selection and configuration, which allows uses to set preliminary project parameters, create a new equipment selection project, enter initial data, edit previously completed equipment selection projects, export selection results to PDF format, receive installation specifications for sending to production. The application also provides training and news sections for users.

Engaged team

2 senior frontend developers1 UI/UX designer1 QA engineer1 DevOps engineer1 PM

Applied technologies

ReactTypeScriptC#ASP.NET CorePostgreSQLDockerSwagger

Product

logo
logo
logo
logo
logo
logo
CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

Equipment selection service

The web application for selecting and configuring ventilation equipment that allows users to choose operating modes and select the most suitable components for ventilation systems in respect with such parameters as humidity, temperature, atmospheric absolute pressure, etc. The application streamlines the process of designing and selling ventilation equipment by reducing the time to process applications and ensuring that the selected components meet the specific criteria of the installation. It’s a powerful tool for professionals in this field, that allows to perform efficient and accurate configuration of complex ventilation systems.

logo

Client

The company "ESKD Group" has been working in the sphere of ventilation equipment, and installation and construction works for more than 10 years. It provides a wide range of services for the internal building networks installation. The main company specialization are the installation services. The company is licensed to install ventilation, air conditioning and heating systems. The company's ventilation units are produced at its own industrial site in Belarus. Thanks to its own manufacturing of ventilation equipment, the company offers high-quality supply and exhaust units at reasonable prices, designed to meet the requirements of various industrial sectors.

Challenge

Automation of the equipment selection and configuration process. Accelerating the process of selecting and configuring equipment. Storing already completed projects. Generating reports with equipment characteristics. Creating and sending equipment specifications to production.

Solution

A web-application for the ventilation equipment selection and configuration, which allows uses to set preliminary project parameters, create a new equipment selection project, enter initial data, edit previously completed equipment selection projects, export selection results to PDF format, receive installation specifications for sending to production. The application also provides training and news sections for users.

Engaged team

2 senior frontend developers1 UI/UX designer1 QA engineer1 DevOps engineer1 PM

Applied technologies

ReactTypeScriptC#ASP.NET CorePostgreSQLDockerSwagger

Product

logo
logo
logo
logo
logo
logo
CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/projects/9f63d17d-6164-509e-b2c7-4c655ab9ad7a/index.html b/projects/9f63d17d-6164-509e-b2c7-4c655ab9ad7a/index.html index e065c4a9..fe0c8ffc 100644 --- a/projects/9f63d17d-6164-509e-b2c7-4c655ab9ad7a/index.html +++ b/projects/9f63d17d-6164-509e-b2c7-4c655ab9ad7a/index.html @@ -1,8 +1,8 @@

Web & Mobile apps for a logistics company

It is a multifunctional application including Admin web, Сlient web and Driver mobile application. It is an integrated solution that would not only improve efficiency and productivity but also provide a united platform for managing all aspects of customer engagement and service delivery. It provides interaction between all the business processes participants, automates order making and assigning processes which is very helpful for the logistians.

logo

Client

Direxxt LLC provides express delivery services for shipments (including shipments for the fixed time), transportation services, courier services, freight forwarding services.

Challenge

Direxxt LLC wanted to lessen the expenses on cargo delivery and stop using “BTS System” (the one for optimization the routes and monitoring drivers) having their own soft for route optimization and delivery management, that would help to improve delivery management quality and speed.

Solution

There has been developed the Client-web for the users who need direct and expedited delivery service within Belarus. The Client-web allows the user to create the orders for delivery and see order statuses.

+ }]);

Web & Mobile apps for a logistics company

It is a multifunctional application including Admin web, Сlient web and Driver mobile application. It is an integrated solution that would not only improve efficiency and productivity but also provide a united platform for managing all aspects of customer engagement and service delivery. It provides interaction between all the business processes participants, automates order making and assigning processes which is very helpful for the logistians.

logo

Client

Direxxt LLC provides express delivery services for shipments (including shipments for the fixed time), transportation services, courier services, freight forwarding services.

Challenge

Direxxt LLC wanted to lessen the expenses on cargo delivery and stop using “BTS System” (the one for optimization the routes and monitoring drivers) having their own soft for route optimization and delivery management, that would help to improve delivery management quality and speed.

Solution

There has been developed the Client-web for the users who need direct and expedited delivery service within Belarus. The Client-web allows the user to create the orders for delivery and see order statuses.

The developed Admin-web allows to create optimized delivery routes, to get the data on the vehicles and the drivers in real-time mode to have the possibility to optimize order assignment. There are blocks with Driver’s schedule, Transport catalogue, Employees list, Clients list, Orders list and the main one – Maps an Routes.

-

The Drive’s App was developed for the driver and allows the driver to get the orders, mark the status of every delivery, and report problems on deliveries.

Engaged team

1 senior fullstack developer2 middle fullstack developers1 PM1 UI/UX designer1 QA engineer1 DevOps engineer

Applied technologies

C#, .NETBlazorMauiMongoDB, ClickHouseSignalRDapr, Redis, RabbitMQ

Product

logo
logo
logo
logo
logo
logo
logo
logo
logo
CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+

The Drive’s App was developed for the driver and allows the driver to get the orders, mark the status of every delivery, and report problems on deliveries.

Engaged team

1 senior fullstack developer2 middle fullstack developers1 PM1 UI/UX designer1 QA engineer1 DevOps engineer

Applied technologies

C#, .NETBlazorMauiMongoDB, ClickHouseSignalRDapr, Redis, RabbitMQ

Product

logo
logo
logo
logo
logo
logo
logo
logo
logo
CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/projects/f17de1e3-0a73-5f92-bf66-1e12d5fdc0fb/index.html b/projects/f17de1e3-0a73-5f92-bf66-1e12d5fdc0fb/index.html index 88e2a087..dd3bfeb1 100644 --- a/projects/f17de1e3-0a73-5f92-bf66-1e12d5fdc0fb/index.html +++ b/projects/f17de1e3-0a73-5f92-bf66-1e12d5fdc0fb/index.html @@ -1,8 +1,8 @@

Bimcore Revit Add-In

The Bimcore Revit Add-In is a set of tools designed for modeling within Autodesk Revit. It includes various families of objects that can be used to create detailed models of kitchens, storage cabinets, and more. These tools are particularly suitable for interior designers and architects, allowing them to work with exact dimensions and count the number of modules or elements needed for their designs. These add-ins streamline the design process in Revit by providing ready-to-use components that adhere to common design standards and practices. They enhance efficiency and accuracy in the modelling phase, which is crucial for successful project planning and execution.

logo

Client

Ivan Zylev, Revit families online shop owner (the content for the architectural program Revit) bimcore.one.

Challenge

Simplify the access to the shop content for the users together with user management and get the statistics on content usage.

Solution

The bimcore Revit add-in is a sophisticated tool designed to enhance the functionality of Autodesk Revit. It streamlines the workflow for architects and designers by providing an efficient way to manage and synchronize BIM (Building Information Modeling) assets directly within the Revit environment.

+ }]);

Bimcore Revit Add-In

The Bimcore Revit Add-In is a set of tools designed for modeling within Autodesk Revit. It includes various families of objects that can be used to create detailed models of kitchens, storage cabinets, and more. These tools are particularly suitable for interior designers and architects, allowing them to work with exact dimensions and count the number of modules or elements needed for their designs. These add-ins streamline the design process in Revit by providing ready-to-use components that adhere to common design standards and practices. They enhance efficiency and accuracy in the modelling phase, which is crucial for successful project planning and execution.

logo

Client

Ivan Zylev, Revit families online shop owner (the content for the architectural program Revit) bimcore.one.

Challenge

Simplify the access to the shop content for the users together with user management and get the statistics on content usage.

Solution

The bimcore Revit add-in is a sophisticated tool designed to enhance the functionality of Autodesk Revit. It streamlines the workflow for architects and designers by providing an efficient way to manage and synchronize BIM (Building Information Modeling) assets directly within the Revit environment.

The add-in boasts a robust architecture that facilitates the transfer of assets from the store to Revit, ensuring persistent synchronization and up-to-date content. It includes features like:

• Asset Path: Automated retrieval and caching of bundles and assets, with intelligent version control.

• Synchronization Logic: Timed checks for new bundles and updates, with user notifications and automatic updates based on user preferences.

-

• Installer Updates: Regular checks for new installer versions to keep the add-in current.

Engaged team

2 middle .NET developers1 UI/UX designer1 QA engineer

Applied technologies

.NETWPFRevit APIAzure Blob Storage

Product

logo
logo
logo
CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+

• Installer Updates: Regular checks for new installer versions to keep the add-in current.

Engaged team

2 middle .NET developers1 UI/UX designer1 QA engineer

Applied technologies

.NETWPFRevit APIAzure Blob Storage

Product

logo
logo
logo
CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/projects/ff9598a3-3fad-5a4e-a8a8-a8858b3a27e7/index.html b/projects/ff9598a3-3fad-5a4e-a8a8-a8858b3a27e7/index.html index 7941ee9d..0f583291 100644 --- a/projects/ff9598a3-3fad-5a4e-a8a8-a8858b3a27e7/index.html +++ b/projects/ff9598a3-3fad-5a4e-a8a8-a8858b3a27e7/index.html @@ -1,8 +1,8 @@

IFSE Parameters Tool for Revit

The IFSE Parameters Tool for Revit is a valuable resource for ensuring consistency and compatibility in foodservice equipment design projects, facilitating the use of a standardized approach to parameter management within the Revit environment. The tool includes a feature called the Parameter Mapper, which allows companies to align their Revit family databases with these industry standards.

logo

Client

FCSI is the only such consulting society in the world, with over 1,000 members in more than 35 countries worldwide. FCSI is a strong and active association dedicated to serving the needs of professional foodservice consultants. FCSI Europe, Africa, Middle East (EAME) serve professional design and management consultants in the foodservice and hospitality industry across the region. Founded in 1971, FCSI EAME is one of the fastest growing and dynamic divisions within the Society, setting the highest standards for foodservice consultants. FCSI EAME members offer the most professional independent advice to the catering and hospitality industry.

Challenge

Eliminate problems with Revit Parameters such as disorganization with Families parameter types, lack of unification and compliance with the Standards, specification issues

Solution

Plugin that maps parameters semi-automatically (using AI) or manually and convert your projects or family libraries to IFSE from virtually any standard or no standard at all (RFAs with just family parameters)

Engaged team

3 senior fullstack developers1 UI/UX designer1 QA engineer1 DevOps engineer

Applied technologies

ReactJSHTMLNode.jsNestJSSwagger

Product

logo
logo
logo
CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

IFSE Parameters Tool for Revit

The IFSE Parameters Tool for Revit is a valuable resource for ensuring consistency and compatibility in foodservice equipment design projects, facilitating the use of a standardized approach to parameter management within the Revit environment. The tool includes a feature called the Parameter Mapper, which allows companies to align their Revit family databases with these industry standards.

logo

Client

FCSI is the only such consulting society in the world, with over 1,000 members in more than 35 countries worldwide. FCSI is a strong and active association dedicated to serving the needs of professional foodservice consultants. FCSI Europe, Africa, Middle East (EAME) serve professional design and management consultants in the foodservice and hospitality industry across the region. Founded in 1971, FCSI EAME is one of the fastest growing and dynamic divisions within the Society, setting the highest standards for foodservice consultants. FCSI EAME members offer the most professional independent advice to the catering and hospitality industry.

Challenge

Eliminate problems with Revit Parameters such as disorganization with Families parameter types, lack of unification and compliance with the Standards, specification issues

Solution

Plugin that maps parameters semi-automatically (using AI) or manually and convert your projects or family libraries to IFSE from virtually any standard or no standard at all (RFAs with just family parameters)

Engaged team

3 senior fullstack developers1 UI/UX designer1 QA engineer1 DevOps engineer

Applied technologies

ReactJSHTMLNode.jsNestJSSwagger

Product

logo
logo
logo
CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/projects/index.html b/projects/index.html index b2f3388e..123b0a36 100644 --- a/projects/index.html +++ b/projects/index.html @@ -1,8 +1,8 @@
cover

3 months

4 specialists

Bimcore Revit Add-In

cover

ongoing

3 specialists

DevOps monitoring system

cover

3 months

7 specialists

Web & Mobile apps for a logistics company

cover

ongoing

6 specialists

Equipment selection service

cover

3 mth - ongoing

6 specialists

IFSE Parameters Tool for Revit

cover

3 months

5 specialists

Website for architectual agency

cover

ongoing

7 specialists

3D configurator

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

CodeCave Projects

cover

3 months

4 specialists

Bimcore Revit Add-In

cover

ongoing

3 specialists

DevOps monitoring system

cover

3 months

7 specialists

Web & Mobile apps for a logistics company

cover

ongoing

6 specialists

Equipment selection service

cover

3 mth - ongoing

6 specialists

IFSE Parameters Tool for Revit

cover

3 months

5 specialists

Website for architectual agency

cover

ongoing

7 specialists

3D configurator

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/projects/page/1/index.html b/projects/page/1/index.html index 8633f8f8..a688fb86 100644 --- a/projects/page/1/index.html +++ b/projects/page/1/index.html @@ -1,8 +1,8 @@
cover

3 months

4 specialists

Bimcore Revit Add-In

cover

ongoing

3 specialists

DevOps monitoring system

cover

3 months

7 specialists

Web & Mobile apps for a logistics company

cover

ongoing

6 specialists

Equipment selection service

cover

3 mth - ongoing

6 specialists

IFSE Parameters Tool for Revit

cover

3 months

5 specialists

Website for architectual agency

cover

ongoing

7 specialists

3D configurator

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

CodeCave Projects

cover

3 months

4 specialists

Bimcore Revit Add-In

cover

ongoing

3 specialists

DevOps monitoring system

cover

3 months

7 specialists

Web & Mobile apps for a logistics company

cover

ongoing

6 specialists

Equipment selection service

cover

3 mth - ongoing

6 specialists

IFSE Parameters Tool for Revit

cover

3 months

5 specialists

Website for architectual agency

cover

ongoing

7 specialists

3D configurator

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/services/index.html b/services/index.html index 4148a6b1..d3d6f8b8 100644 --- a/services/index.html +++ b/services/index.html @@ -1,8 +1,8 @@ +

Research and in-depth analysis definitely help to identify pitfalls and bottlenecks. By introducing necessary changes, a business can improve conversion, customer retention, referrals and cement its position on the market.

User flows

Competitors research

User interviews

Story mapping

Prototyping

HI-FI mockups

VR / AR logo

VR / AR

We use VR and AR in software development nowadays. It is one of the best ways to greatly spice up user experience, making it memorable and satisfying.

Babylon

ThreeJS

GLTF

anchor

LET’S DISCUSS YOUR PROJECT

WE’LL BE GLAD TO HEAR FROM YOU!

Describe your project or idea to get our expert assessment.

+

It’s totally free! No strings attached.

+

We can easily jump into a complex ongoing project or start from scratch.

+

Don’t miss this opportunity, contact us!

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/styles.e5422b7cb1c4ba6a081d.css b/styles.e5422b7cb1c4ba6a081d.css new file mode 100644 index 00000000..856bd3b5 --- /dev/null +++ b/styles.e5422b7cb1c4ba6a081d.css @@ -0,0 +1,3 @@ +/* +! tailwindcss v3.3.2 | MIT License | https://tailwindcss.com +*/*,:after,:before{border:0 solid}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;font-feature-settings:normal;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1440px){.container{max-width:1440px}}@media (min-width:1900px){.container{max-width:1900px}}@media (min-width:2200px){.container{max-width:2200px}}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.-bottom-1{bottom:-.25rem}.-bottom-2{bottom:-.5rem}.-left-2{left:-.5rem}.-left-5{left:-1.25rem}.-right-2{right:-.5rem}.-top-16{top:-4rem}.-top-2{top:-.5rem}.bottom-0{bottom:0}.bottom-1{bottom:.25rem}.bottom-2{bottom:.5rem}.bottom-\[5\%\]{bottom:5%}.left-0{left:0}.left-2{left:.5rem}.left-\[2\%\]{left:2%}.right-0{right:0}.top-0{top:0}.top-1\/2{top:50%}.top-full{top:100%}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.-order-1{order:-1}.float-right{float:right}.mx-0{margin-left:0;margin-right:0}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-1\.5{margin-left:.375rem;margin-right:.375rem}.mx-12{margin-left:3rem;margin-right:3rem}.mx-5{margin-left:1.25rem;margin-right:1.25rem}.mx-auto{margin-left:auto;margin-right:auto}.-ml-2{margin-left:-.5rem}.mb-2{margin-bottom:.5rem}.mb-2\.5{margin-bottom:.625rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-3{margin-left:.75rem}.mr-10{margin-right:2.5rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-3\.5{margin-right:.875rem}.mt-3{margin-top:.75rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.aspect-square{aspect-ratio:1/1}.h-0{height:0}.h-1{height:.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2\/3{height:66.666667%}.h-28{height:7rem}.h-32{height:8rem}.h-40{height:10rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-91{height:22.75rem}.h-\[1000px\]{height:1000px}.h-\[72px\]{height:72px}.h-full{height:100%}.h-max{height:-moz-max-content;height:max-content}.max-h-\[424px\]{max-height:424px}.max-h-full{max-height:100%}.min-h-0{min-height:0}.min-h-91{min-height:22.75rem}.min-h-\[400px\]{min-height:400px}.min-h-full{min-height:100%}.min-h-max{min-height:-moz-max-content;min-height:max-content}.min-h-screen{min-height:100vh}.w-0{width:0}.w-1{width:.25rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2\/3{width:66.666667%}.w-28{width:7rem}.w-32{width:8rem}.w-40{width:10rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-\[100\%\]{width:100%}.w-\[192px\]{width:192px}.w-\[220px\]{width:220px}.w-\[72px\]{width:72px}.w-\[85\%\]{width:85%}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.min-w-0{min-width:0}.min-w-10{min-width:2.5rem}.max-w-2xl{max-width:680px}.max-w-4\.5xl{max-width:1038px}.max-w-7xl{max-width:80rem}.max-w-\[1280px\]{max-width:1280px}.max-w-\[320px\]{max-width:320px}.max-w-\[400px\]{max-width:400px}.max-w-\[500px\]{max-width:500px}.max-w-\[544px\]{max-width:544px}.max-w-full{max-width:100%}.flex-1{flex:1 1 0%}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-1\/3{flex-basis:33.333333%}.basis-full{flex-basis:100%}.origin-\[5\%_50\%\]{transform-origin:5% 50%}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-1\/2,.translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y:0px}.translate-y-full{--tw-translate-y:100%}.-rotate-90,.translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-90{--tw-rotate:-90deg}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.touch-pan-x{--tw-pan-x:pan-x;touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.touch-manipulation{touch-action:manipulation}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.break-inside-avoid{-moz-column-break-inside:avoid;break-inside:avoid}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.content-center{align-content:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-evenly{justify-content:space-evenly}.gap-0{gap:0}.gap-10{gap:2.5rem}.gap-14{gap:3.5rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-3\.5{gap:.875rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-14{-moz-column-gap:3.5rem;column-gap:3.5rem}.gap-x-16{-moz-column-gap:4rem;column-gap:4rem}.gap-x-24{-moz-column-gap:6rem;column-gap:6rem}.gap-x-28{-moz-column-gap:7rem;column-gap:7rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-y-2{row-gap:.5rem}.gap-y-2\.5{row-gap:.625rem}.gap-y-5{row-gap:1.25rem}.gap-y-8{row-gap:2rem}.space-x-10>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(2.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(2.5rem*var(--tw-space-x-reverse))}.overflow-hidden{overflow:hidden}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.rounded{border-radius:.25rem}.rounded-2\.5xl{border-radius:20px}.rounded-2xl{border-radius:1rem}.rounded-\[10px\]{border-radius:10px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-2xl{border-bottom-left-radius:1rem;border-bottom-right-radius:1rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-b-\[4px\]{border-bottom-width:4px}.border-t-2{border-top-width:2px}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-main-10{--tw-border-opacity:1;border-color:rgb(143 143 143/var(--tw-border-opacity))}.border-main-100{--tw-border-opacity:1;border-color:rgb(17 17 17/var(--tw-border-opacity))}.border-secondary-10{--tw-border-opacity:1;border-color:rgb(209 209 209/var(--tw-border-opacity))}.border-secondary-100{--tw-border-opacity:1;border-color:rgb(249 249 249/var(--tw-border-opacity))}.border-secondary-70{--tw-border-opacity:1;border-color:rgb(189 189 189/var(--tw-border-opacity))}.bg-main-100{--tw-bg-opacity:1;background-color:rgb(17 17 17/var(--tw-bg-opacity))}.bg-main-70{--tw-bg-opacity:1;background-color:rgb(45 45 45/var(--tw-bg-opacity))}.bg-secondary-10{--tw-bg-opacity:1;background-color:rgb(209 209 209/var(--tw-bg-opacity))}.bg-secondary-100{--tw-bg-opacity:1;background-color:rgb(249 249 249/var(--tw-bg-opacity))}.fill-main-100{fill:#111}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-0{padding-left:0;padding-right:0}.px-12{padding-left:3rem;padding-right:3rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-10{padding-bottom:2.5rem;padding-top:2.5rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-16{padding-bottom:4rem;padding-top:4rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.pb-10{padding-bottom:2.5rem}.pb-8{padding-bottom:2rem}.pt-2{padding-top:.5rem}.pt-2\.5{padding-top:.625rem}.pt-5{padding-top:1.25rem}.pt-8{padding-top:2rem}.text-center{text-align:center}.text-start{text-align:start}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[10\.5px\]{font-size:10.5px}.text-\[24px\]{font-size:24px}.text-\[72px\]{font-size:72px}.text-\[88px\]{font-size:88px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.leading-5{line-height:1.25rem}.tracking-wide{letter-spacing:.025em}.text-\[\#D32F2F\]{--tw-text-opacity:1;color:rgb(211 47 47/var(--tw-text-opacity))}.text-main-10{--tw-text-opacity:1;color:rgb(143 143 143/var(--tw-text-opacity))}.text-main-100{--tw-text-opacity:1;color:rgb(17 17 17/var(--tw-text-opacity))}.text-main-70{--tw-text-opacity:1;color:rgb(45 45 45/var(--tw-text-opacity))}.text-secondary-10{--tw-text-opacity:1;color:rgb(209 209 209/var(--tw-text-opacity))}.text-secondary-100{--tw-text-opacity:1;color:rgb(249 249 249/var(--tw-text-opacity))}.text-secondary-30{--tw-text-opacity:1;color:rgb(228 228 228/var(--tw-text-opacity))}.text-secondary-70{--tw-text-opacity:1;color:rgb(189 189 189/var(--tw-text-opacity))}.opacity-0{opacity:0}.opacity-50{opacity:.5}.shadow-\[0px_2px_8px_rgba\(68\2c 68\2c 68\2c 0\.1\)\]{--tw-shadow:0px 2px 8px rgba(68,68,68,.1);--tw-shadow-colored:0px 2px 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.brightness-\[0\.4\]{--tw-brightness:brightness(0.4)}.brightness-\[0\.4\],.grayscale{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale:grayscale(100%)}.invert{--tw-invert:invert(100%)}.filter,.invert{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.backdrop-blur-sm,.backdrop-brightness-75{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-brightness-75{--tw-backdrop-brightness:brightness(.75)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-1000{transition-duration:1s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.ease-linear{transition-timing-function:linear}.after\:h-1:after{content:var(--tw-content);height:.25rem}.after\:h-1\.5:after{content:var(--tw-content);height:.375rem}.after\:w-full:after{content:var(--tw-content);width:100%}.after\:rounded-sm:after{border-radius:.125rem;content:var(--tw-content)}.after\:bg-main-10:after{--tw-bg-opacity:1;background-color:rgb(143 143 143/var(--tw-bg-opacity));content:var(--tw-content)}.after\:bg-secondary-100:after{--tw-bg-opacity:1;background-color:rgb(249 249 249/var(--tw-bg-opacity));content:var(--tw-content)}.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}.even\:flex-row-reverse:nth-child(2n){flex-direction:row-reverse}.hover\:border-secondary-100:hover{--tw-border-opacity:1;border-color:rgb(249 249 249/var(--tw-border-opacity))}.hover\:bg-main-100:hover{--tw-bg-opacity:1;background-color:rgb(17 17 17/var(--tw-bg-opacity))}.hover\:bg-main-70:hover{--tw-bg-opacity:1;background-color:rgb(45 45 45/var(--tw-bg-opacity))}.hover\:bg-secondary-100:hover{--tw-bg-opacity:1;background-color:rgb(249 249 249/var(--tw-bg-opacity))}.hover\:bg-secondary-30:hover{--tw-bg-opacity:1;background-color:rgb(228 228 228/var(--tw-bg-opacity))}.hover\:text-main-10:hover{--tw-text-opacity:1;color:rgb(143 143 143/var(--tw-text-opacity))}.hover\:text-secondary-10:hover{--tw-text-opacity:1;color:rgb(209 209 209/var(--tw-text-opacity))}.hover\:text-secondary-100:hover{--tw-text-opacity:1;color:rgb(249 249 249/var(--tw-text-opacity))}.hover\:text-secondary-70:hover{--tw-text-opacity:1;color:rgb(189 189 189/var(--tw-text-opacity))}.hover\:shadow-\[0px_2px_14px_rgba\(68\2c 68\2c 68\2c 0\.25\)\]:hover{--tw-shadow:0px 2px 14px rgba(68,68,68,.25);--tw-shadow-colored:0px 2px 14px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:brightness-100:hover{--tw-brightness:brightness(1)}.hover\:brightness-100:hover,.hover\:brightness-75:hover{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.hover\:brightness-75:hover{--tw-brightness:brightness(.75)}.disabled\:bg-main-70:disabled{--tw-bg-opacity:1;background-color:rgb(45 45 45/var(--tw-bg-opacity))}.disabled\:opacity-30:disabled{opacity:.3}.group:hover .group-hover\:h-full{height:100%}.group:hover .group-hover\:scale-\[1\.007\]{--tw-scale-x:1.007;--tw-scale-y:1.007;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:border-main-10{--tw-border-opacity:1;border-color:rgb(143 143 143/var(--tw-border-opacity))}@media (prefers-color-scheme:dark){.dark\:text-secondary-10{--tw-text-opacity:1;color:rgb(209 209 209/var(--tw-text-opacity))}}@media (min-width:640px){.sm\:mb-12{margin-bottom:3rem}.sm\:mb-5{margin-bottom:1.25rem}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:h-\[900px\]{height:900px}.sm\:w-64{width:16rem}.sm\:w-auto{width:auto}.sm\:w-max{width:-moz-max-content;width:max-content}.sm\:shrink-0{flex-shrink:0}.sm\:basis-5\/6{flex-basis:83.333333%}.sm\:basis-52{flex-basis:13rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-end{justify-content:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:gap-5{gap:1.25rem}.sm\:gap-x-10{-moz-column-gap:2.5rem;column-gap:2.5rem}.sm\:px-12{padding-left:3rem;padding-right:3rem}.sm\:px-5{padding-left:1.25rem;padding-right:1.25rem}.sm\:py-10{padding-bottom:2.5rem;padding-top:2.5rem}.sm\:pb-14{padding-bottom:3.5rem}.sm\:pt-16{padding-top:4rem}.sm\:text-end{text-align:end}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-4xl{font-size:2.25rem;line-height:2.5rem}.sm\:text-\[148px\]{font-size:148px}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:last\:hidden:last-child{display:none}}@media (min-width:768px){.md\:mx-3{margin-left:.75rem;margin-right:.75rem}.md\:mb-12{margin-bottom:3rem}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-16{height:4rem}.md\:h-48{height:12rem}.md\:h-\[750px\]{height:750px}.md\:w-16{width:4rem}.md\:w-48{width:12rem}.md\:w-\[256px\]{width:256px}.md\:max-w-\[528px\]{max-width:528px}.md\:basis-4\/6{flex-basis:66.666667%}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:justify-start{justify-content:flex-start}.md\:justify-between{justify-content:space-between}.md\:gap-14{gap:3.5rem}.md\:gap-28{gap:7rem}.md\:gap-5{gap:1.25rem}.md\:gap-8{gap:2rem}.md\:gap-y-14{row-gap:3.5rem}.md\:gap-y-5{row-gap:1.25rem}.md\:p-12{padding:3rem}.md\:\!px-0{padding-left:0!important;padding-right:0!important}.md\:px-20{padding-left:5rem;padding-right:5rem}.md\:px-3{padding-left:.75rem;padding-right:.75rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:py-16{padding-bottom:4rem;padding-top:4rem}.md\:py-8{padding-bottom:2rem;padding-top:2rem}.md\:pt-0{padding-top:0}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\:text-\[100px\]{font-size:100px}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width:1024px){.lg\:order-none{order:0}.lg\:mr-28{margin-right:7rem}.lg\:block{display:block}.lg\:h-99{height:396px}.lg\:h-full{height:100%}.lg\:w-1\/2{width:50%}.lg\:w-72{width:18rem}.lg\:w-80{width:20rem}.lg\:w-max{width:-moz-max-content;width:max-content}.lg\:basis-1\/2{flex-basis:50%}.lg\:basis-\[410px\]{flex-basis:410px}.lg\:flex-row{flex-direction:row}.lg\:justify-start{justify-content:flex-start}.lg\:justify-end{justify-content:flex-end}.lg\:gap-10{gap:2.5rem}.lg\:gap-16{gap:4rem}.lg\:gap-28{gap:7rem}.lg\:gap-\[48px\]{gap:48px}.lg\:gap-x-12{-moz-column-gap:3rem;column-gap:3rem}.lg\:\!px-0{padding-left:0!important;padding-right:0!important}.lg\:\!px-20{padding-left:5rem!important;padding-right:5rem!important}.lg\:px-10{padding-left:2.5rem;padding-right:2.5rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:py-0{padding-bottom:0;padding-top:0}.lg\:py-5{padding-bottom:1.25rem;padding-top:1.25rem}.lg\:text-start{text-align:start}.lg\:text-3xl{font-size:1.875rem;line-height:2.25rem}.lg\:text-4xl{font-size:2.25rem;line-height:2.5rem}.lg\:last\:flex:last-child{display:flex}}@media (min-width:1280px){.xl\:w-\[256px\]{width:256px}.xl\:basis-2\/5{flex-basis:40%}}@media (min-width:1900px){.\33xl\:w-\[400px\]{width:400px}.\33xl\:basis-1\/3{flex-basis:33.333333%}}@media (min-width:2200px){.\34xl\:basis-1\/4{flex-basis:25%}}@font-face{font-display:swap;font-family:Rubik Glitch;font-style:normal;font-weight:400;src:url(/static/rubik-glitch-cyrillic-ext-400-normal-caa98a3bc11105fffcfef482abfb2c37.woff2) format("woff2"),url(/static/rubik-glitch-cyrillic-ext-400-normal-54f97c66997053ace86c1d9f1bdef3fd.woff) format("woff");unicode-range:u+0460-052f,u+1c80-1c88,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-display:swap;font-family:Rubik Glitch;font-style:normal;font-weight:400;src:url(/static/rubik-glitch-cyrillic-400-normal-b32f20a71003e8bb78b28eec73c0385b.woff2) format("woff2"),url(/static/rubik-glitch-cyrillic-400-normal-3fd27e06a8bdf8edbd455443d0854c3f.woff) format("woff");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-display:swap;font-family:Rubik Glitch;font-style:normal;font-weight:400;src:url(/static/rubik-glitch-hebrew-400-normal-776cad11325d90d9061faad0b7107953.woff2) format("woff2"),url(/static/rubik-glitch-hebrew-400-normal-c8cefe9973692c5d21bdd5bb11616cc4.woff) format("woff");unicode-range:u+0590-05ff,u+200c-2010,u+20aa,u+25cc,u+fb1d-fb4f}@font-face{font-display:swap;font-family:Rubik Glitch;font-style:normal;font-weight:400;src:url(/static/rubik-glitch-latin-ext-400-normal-8ae808a02973fec508af9c0959fbbade.woff2) format("woff2"),url(/static/rubik-glitch-latin-ext-400-normal-16c59f7d884842f113e8ff185c8656c9.woff) format("woff");unicode-range:u+0100-02af,u+0304,u+0308,u+0329,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-display:swap;font-family:Rubik Glitch;font-style:normal;font-weight:400;src:url(/static/rubik-glitch-latin-400-normal-7a5b5bac6b066d71b0cae06ed087b905.woff2) format("woff2"),url(/static/rubik-glitch-latin-400-normal-3fb89918ce49908f5350076807cf1bef.woff) format("woff");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-display:swap;font-family:Montserrat Variable;font-style:normal;font-weight:100 900;src:url(/static/montserrat-cyrillic-ext-wght-normal-e84e812b71d18e04e6928fb272665c53.woff2) format("woff2-variations");unicode-range:u+0460-052f,u+1c80-1c88,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-display:swap;font-family:Montserrat Variable;font-style:normal;font-weight:100 900;src:url(/static/montserrat-cyrillic-wght-normal-eb1783eb42487132539645641f761eb2.woff2) format("woff2-variations");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-display:swap;font-family:Montserrat Variable;font-style:normal;font-weight:100 900;src:url(data:font/woff2;base64,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) format("woff2-variations");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-display:swap;font-family:Montserrat Variable;font-style:normal;font-weight:100 900;src:url(/static/montserrat-latin-ext-wght-normal-82d636d9375dd92118fd22c818a99c24.woff2) format("woff2-variations");unicode-range:u+0100-02af,u+0304,u+0308,u+0329,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-display:swap;font-family:Montserrat Variable;font-style:normal;font-weight:100 900;src:url(/static/montserrat-latin-wght-normal-5028c63f6a70ab0cf7cba9015ae04154.woff2) format("woff2-variations");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}code[class*=language-],pre[class*=language-]{word-wrap:normal;background:none;color:#ccc;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;text-align:left;white-space:pre;word-break:normal;word-spacing:normal}pre[class*=language-]{margin:.5em 0;overflow:auto;padding:1em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{border-radius:.3em;padding:.1em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}*{border:0;margin:0;padding:0}*,:after,:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}:active,:focus,a:active,a:focus{outline:none}aside,footer,header,nav{display:block}body,html{-ms-text-size-adjust:100%;-moz-text-size-adjust:100%;-webkit-text-size-adjust:100%;font-size:100%;font-size:14px;line-height:1;min-height:100vh}button,input,textarea{font-family:inherit}input::-ms-clear{display:none}button{cursor:pointer}button::-moz-focus-inner{border:0;padding:0}a,a:hover,a:visited{text-decoration:none}ul li{list-style:none}img{vertical-align:top}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:400}*{font-family:Montserrat Variable,Helvetica,Arial,sans-serif}input:-webkit-autofill,input:-webkit-autofill:active,input:-webkit-autofill:focus,input:-webkit-autofill:hover{-webkit-text-fill-color:#f9f9f9;-webkit-background-clip:text;box-shadow:inset 0 0 20px 20px #fa070700;-webkit-transition:background-color 5000s ease-in-out 0s;transition:background-color 5000s ease-in-out 0s}#contact-form input:-webkit-autofill,#contact-form input:-webkit-autofill:active,#contact-form input:-webkit-autofill:focus,#contact-form input:-webkit-autofill:hover{-webkit-text-fill-color:#111}.banner-title{font-family:Montserrat Variable,Helvetica,Arial,sans-serif}.rubik-font{font-family:Rubik Glitch,Helvetica,Arial,sans-serif}@media screen and (max-width:640px){div#hubspot-messages-iframe-container{display:none!important}}#hubspot-messages-iframe-container{z-index:200!important}#hs-banner-parent{--hs-banner-font-family:"Montserrat Variable",Helvetica,Arial,sans-serif!important;--hs-banner-inset:auto 0px 10px 10px!important;--hs-banner-translate-x:0!important}#hs-eu-cookie-settings-button{font-weight:400!important;text-decoration:none!important}#hs-eu-cookie-confirmation{max-width:calc(100% - 20px)!important}div.privacy-policy h1{font-size:1.875rem;font-weight:600;line-height:2.25rem;text-align:center;width:100%}div.privacy-policy h2{font-size:1.5rem;font-weight:600;line-height:2rem;padding-top:1rem}div.privacy-policy h3{font-size:1.25rem;font-weight:600;line-height:1.75rem;padding-top:1rem}div.privacy-policy h4{font-weight:600;padding-top:.5rem}div.privacy-policy ul li{list-style-position:inside;list-style-type:disc;padding-top:1rem}div.privacy-policy ul li>h3{display:inline;font-weight:500;padding-top:0}div.privacy-policy a{text-decoration-line:underline}div.single-post{font-size:1rem;line-height:1.5rem}@media (min-width:640px){div.single-post{font-size:1.125rem;line-height:1.75rem}}div.single-post :is(h2,h3,h4){--tw-text-opacity:1;color:rgb(249 249 249/var(--tw-text-opacity));font-size:1.125rem;font-weight:700;line-height:1.75rem;margin-bottom:.625rem;margin-top:2rem}@media (min-width:640px){div.single-post :is(h2,h3,h4){font-size:1.25rem;line-height:1.75rem}}div.single-post h4{margin-top:1rem}div.single-post p{margin-bottom:1rem}@media (min-width:640px){div.single-post p{margin-bottom:2rem}}div.single-post span.gatsby-resp-image-wrapper{border-radius:20px!important;margin-bottom:1rem!important;margin-left:auto!important;margin-right:auto!important;max-width:444px!important;width:100%!important}@media (min-width:640px){div.single-post span.gatsby-resp-image-wrapper{margin-bottom:1.25rem!important}}div.single-post img{--tw-shadow:0 0 #0000!important;--tw-shadow-colored:0 0 #0000!important;border-radius:20px!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}div.single-post span.gatsby-resp-image-wrapper+em{display:block;font-size:.875rem;font-style:normal;line-height:1.25rem;text-align:center;width:100%}div.single-post :is(ul,ol){margin-bottom:1rem;margin-top:1rem}@media (min-width:640px){div.single-post :is(ul,ol){margin-bottom:2rem;margin-top:2rem}}div.single-post ul li{list-style-position:inside;list-style-type:disc}div.single-post ol li{list-style-position:inside;list-style-type:decimal}div.single-post pre{--tw-bg-opacity:1;background-color:rgb(45 45 45/var(--tw-bg-opacity));border-radius:20px;font-size:.875rem;line-height:1.25rem;margin-bottom:1rem;margin-top:1rem;padding:1rem;white-space:pre-wrap}@media (min-width:640px){div.single-post pre{font-size:1rem;line-height:1.5rem;margin-bottom:2rem;margin-top:2rem;padding:2rem}}div.single-post pre code{white-space:pre-wrap}.gradient-border{-o-border-image:linear-gradient(90deg,#bdbdbd,#111) 30;border-image:linear-gradient(90deg,#bdbdbd,#111) 30}div.team-member:hover div.line{width:100%}div.applied-tech:hover div.line{height:100%}div.review-body p{padding-top:.5rem}div.review-body p:first-child{padding-top:0}div.workflow-step:nth-child(odd) div.cover{right:-.5rem}div.workflow-step:nth-child(2n) div.cover{left:-.5rem}div.why-us-card p{text-align:justify}p.contact-form-description span{display:block;padding-bottom:.5rem;padding-top:.5rem}p.contact-form-description strong{font-weight:600}ul.MuiMenu-list{--tw-bg-opacity:1;background-color:rgb(249 249 249/var(--tw-bg-opacity))} \ No newline at end of file diff --git a/styles.e81cc51ad791cfea532d.css b/styles.e81cc51ad791cfea532d.css deleted file mode 100644 index 4ca9dedc..00000000 --- a/styles.e81cc51ad791cfea532d.css +++ /dev/null @@ -1,3 +0,0 @@ -/* -! tailwindcss v3.3.2 | MIT License | https://tailwindcss.com -*/*,:after,:before{border:0 solid}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;font-feature-settings:normal;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1440px){.container{max-width:1440px}}@media (min-width:1900px){.container{max-width:1900px}}@media (min-width:2200px){.container{max-width:2200px}}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.-bottom-1{bottom:-.25rem}.-bottom-2{bottom:-.5rem}.-left-2{left:-.5rem}.-left-5{left:-1.25rem}.-right-2{right:-.5rem}.-right-6{right:-1.5rem}.-top-16{top:-4rem}.-top-2{top:-.5rem}.bottom-0{bottom:0}.bottom-1{bottom:.25rem}.bottom-2{bottom:.5rem}.bottom-\[5\%\]{bottom:5%}.left-0{left:0}.left-1\/2{left:50%}.left-2{left:.5rem}.left-\[2\%\]{left:2%}.right-0{right:0}.top-0{top:0}.top-1\/2{top:50%}.top-full{top:100%}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-50{z-index:50}.-order-1{order:-1}.float-right{float:right}.mx-0{margin-left:0;margin-right:0}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-1\.5{margin-left:.375rem;margin-right:.375rem}.mx-12{margin-left:3rem;margin-right:3rem}.mx-5{margin-left:1.25rem;margin-right:1.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-20{margin-bottom:5rem;margin-top:5rem}.-ml-2{margin-left:-.5rem}.mb-2{margin-bottom:.5rem}.mb-2\.5{margin-bottom:.625rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-3{margin-left:.75rem}.mr-10{margin-right:2.5rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-3\.5{margin-right:.875rem}.mr-7{margin-right:1.75rem}.mt-3{margin-top:.75rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.aspect-square{aspect-ratio:1/1}.h-0{height:0}.h-1{height:.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2\/3{height:66.666667%}.h-28{height:7rem}.h-32{height:8rem}.h-40{height:10rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-91{height:22.75rem}.h-\[1000px\]{height:1000px}.h-\[72px\]{height:72px}.h-full{height:100%}.h-max{height:-moz-max-content;height:max-content}.h-min{height:-moz-min-content;height:min-content}.max-h-\[424px\]{max-height:424px}.max-h-full{max-height:100%}.min-h-0{min-height:0}.min-h-91{min-height:22.75rem}.min-h-\[400px\]{min-height:400px}.min-h-full{min-height:100%}.min-h-max{min-height:-moz-max-content;min-height:max-content}.min-h-screen{min-height:100vh}.w-0{width:0}.w-1{width:.25rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2\/3{width:66.666667%}.w-28{width:7rem}.w-32{width:8rem}.w-40{width:10rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-\[100\%\]{width:100%}.w-\[192px\]{width:192px}.w-\[220px\]{width:220px}.w-\[72px\]{width:72px}.w-\[85\%\]{width:85%}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.min-w-0{min-width:0}.min-w-10{min-width:2.5rem}.max-w-2xl{max-width:680px}.max-w-4\.5xl{max-width:1038px}.max-w-7xl{max-width:80rem}.max-w-\[1280px\]{max-width:1280px}.max-w-\[320px\]{max-width:320px}.max-w-\[400px\]{max-width:400px}.max-w-\[500px\]{max-width:500px}.max-w-\[544px\]{max-width:544px}.max-w-full{max-width:100%}.flex-1{flex:1 1 0%}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-1\/3{flex-basis:33.333333%}.basis-1\/6{flex-basis:16.666667%}.basis-4\/6{flex-basis:66.666667%}.basis-full{flex-basis:100%}.origin-\[5\%_50\%\]{transform-origin:5% 50%}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-translate-y-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-\[120\%\]{--tw-translate-y:-120%}.-translate-y-\[120\%\],.translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y:0px}.translate-y-full{--tw-translate-y:100%}.-rotate-90,.translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-90{--tw-rotate:-90deg}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.touch-pan-x{--tw-pan-x:pan-x;touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.touch-manipulation{touch-action:manipulation}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.break-inside-avoid{-moz-column-break-inside:avoid;break-inside:avoid}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.content-center{align-content:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-evenly{justify-content:space-evenly}.gap-0{gap:0}.gap-10{gap:2.5rem}.gap-14{gap:3.5rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-3\.5{gap:.875rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-14{-moz-column-gap:3.5rem;column-gap:3.5rem}.gap-x-16{-moz-column-gap:4rem;column-gap:4rem}.gap-x-24{-moz-column-gap:6rem;column-gap:6rem}.gap-x-28{-moz-column-gap:7rem;column-gap:7rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-y-2{row-gap:.5rem}.gap-y-2\.5{row-gap:.625rem}.gap-y-5{row-gap:1.25rem}.gap-y-8{row-gap:2rem}.space-x-10>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(2.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(2.5rem*var(--tw-space-x-reverse))}.overflow-hidden{overflow:hidden}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.rounded{border-radius:.25rem}.rounded-2\.5xl{border-radius:20px}.rounded-2xl{border-radius:1rem}.rounded-\[10px\]{border-radius:10px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-2xl{border-bottom-left-radius:1rem;border-bottom-right-radius:1rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-b-\[4px\]{border-bottom-width:4px}.border-t-2{border-top-width:2px}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-main-10{--tw-border-opacity:1;border-color:rgb(143 143 143/var(--tw-border-opacity))}.border-main-100{--tw-border-opacity:1;border-color:rgb(17 17 17/var(--tw-border-opacity))}.border-secondary-10{--tw-border-opacity:1;border-color:rgb(209 209 209/var(--tw-border-opacity))}.border-secondary-100{--tw-border-opacity:1;border-color:rgb(249 249 249/var(--tw-border-opacity))}.border-secondary-70{--tw-border-opacity:1;border-color:rgb(189 189 189/var(--tw-border-opacity))}.bg-main-100{--tw-bg-opacity:1;background-color:rgb(17 17 17/var(--tw-bg-opacity))}.bg-main-70{--tw-bg-opacity:1;background-color:rgb(45 45 45/var(--tw-bg-opacity))}.bg-secondary-10{--tw-bg-opacity:1;background-color:rgb(209 209 209/var(--tw-bg-opacity))}.bg-secondary-100{--tw-bg-opacity:1;background-color:rgb(249 249 249/var(--tw-bg-opacity))}.fill-main-100{fill:#111}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-10{padding:2.5rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-0{padding-left:0;padding-right:0}.px-12{padding-left:3rem;padding-right:3rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-10{padding-bottom:2.5rem;padding-top:2.5rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-16{padding-bottom:4rem;padding-top:4rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.pb-10{padding-bottom:2.5rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pb-8{padding-bottom:2rem}.pt-2{padding-top:.5rem}.pt-2\.5{padding-top:.625rem}.pt-5{padding-top:1.25rem}.pt-8{padding-top:2rem}.text-center{text-align:center}.text-start{text-align:start}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[10\.5px\]{font-size:10.5px}.text-\[24px\]{font-size:24px}.text-\[72px\]{font-size:72px}.text-\[88px\]{font-size:88px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.leading-5{line-height:1.25rem}.tracking-wide{letter-spacing:.025em}.text-\[\#D32F2F\]{--tw-text-opacity:1;color:rgb(211 47 47/var(--tw-text-opacity))}.text-main-10{--tw-text-opacity:1;color:rgb(143 143 143/var(--tw-text-opacity))}.text-main-100{--tw-text-opacity:1;color:rgb(17 17 17/var(--tw-text-opacity))}.text-main-70{--tw-text-opacity:1;color:rgb(45 45 45/var(--tw-text-opacity))}.text-secondary-10{--tw-text-opacity:1;color:rgb(209 209 209/var(--tw-text-opacity))}.text-secondary-100{--tw-text-opacity:1;color:rgb(249 249 249/var(--tw-text-opacity))}.text-secondary-30{--tw-text-opacity:1;color:rgb(228 228 228/var(--tw-text-opacity))}.text-secondary-70{--tw-text-opacity:1;color:rgb(189 189 189/var(--tw-text-opacity))}.opacity-0{opacity:0}.opacity-50{opacity:.5}.shadow-\[0px_2px_8px_rgba\(68\2c 68\2c 68\2c 0\.1\)\]{--tw-shadow:0px 2px 8px rgba(68,68,68,.1);--tw-shadow-colored:0px 2px 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.brightness-\[0\.4\]{--tw-brightness:brightness(0.4)}.brightness-\[0\.4\],.grayscale{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale:grayscale(100%)}.invert{--tw-invert:invert(100%)}.filter,.invert{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.backdrop-blur-sm,.backdrop-brightness-75{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-brightness-75{--tw-backdrop-brightness:brightness(.75)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-1000{transition-duration:1s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.ease-linear{transition-timing-function:linear}.after\:h-1:after{content:var(--tw-content);height:.25rem}.after\:h-1\.5:after{content:var(--tw-content);height:.375rem}.after\:w-full:after{content:var(--tw-content);width:100%}.after\:rounded-sm:after{border-radius:.125rem;content:var(--tw-content)}.after\:bg-main-10:after{--tw-bg-opacity:1;background-color:rgb(143 143 143/var(--tw-bg-opacity));content:var(--tw-content)}.after\:bg-secondary-100:after{--tw-bg-opacity:1;background-color:rgb(249 249 249/var(--tw-bg-opacity));content:var(--tw-content)}.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}.first\:mt-36:first-child{margin-top:9rem}.even\:flex-row-reverse:nth-child(2n){flex-direction:row-reverse}.hover\:border-secondary-100:hover{--tw-border-opacity:1;border-color:rgb(249 249 249/var(--tw-border-opacity))}.hover\:bg-main-100:hover{--tw-bg-opacity:1;background-color:rgb(17 17 17/var(--tw-bg-opacity))}.hover\:bg-main-70:hover{--tw-bg-opacity:1;background-color:rgb(45 45 45/var(--tw-bg-opacity))}.hover\:bg-secondary-100:hover{--tw-bg-opacity:1;background-color:rgb(249 249 249/var(--tw-bg-opacity))}.hover\:bg-secondary-30:hover{--tw-bg-opacity:1;background-color:rgb(228 228 228/var(--tw-bg-opacity))}.hover\:text-main-10:hover{--tw-text-opacity:1;color:rgb(143 143 143/var(--tw-text-opacity))}.hover\:text-secondary-10:hover{--tw-text-opacity:1;color:rgb(209 209 209/var(--tw-text-opacity))}.hover\:text-secondary-100:hover{--tw-text-opacity:1;color:rgb(249 249 249/var(--tw-text-opacity))}.hover\:text-secondary-70:hover{--tw-text-opacity:1;color:rgb(189 189 189/var(--tw-text-opacity))}.hover\:shadow-\[0px_2px_14px_rgba\(68\2c 68\2c 68\2c 0\.25\)\]:hover{--tw-shadow:0px 2px 14px rgba(68,68,68,.25);--tw-shadow-colored:0px 2px 14px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:brightness-100:hover{--tw-brightness:brightness(1)}.hover\:brightness-100:hover,.hover\:brightness-75:hover{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.hover\:brightness-75:hover{--tw-brightness:brightness(.75)}.disabled\:bg-main-70:disabled{--tw-bg-opacity:1;background-color:rgb(45 45 45/var(--tw-bg-opacity))}.disabled\:opacity-30:disabled{opacity:.3}.group:hover .group-hover\:h-full{height:100%}.group:hover .group-hover\:scale-\[1\.008\]{--tw-scale-x:1.008;--tw-scale-y:1.008;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:border-main-10{--tw-border-opacity:1;border-color:rgb(143 143 143/var(--tw-border-opacity))}@media (prefers-color-scheme:dark){.dark\:text-secondary-10{--tw-text-opacity:1;color:rgb(209 209 209/var(--tw-text-opacity))}}@media (min-width:640px){.sm\:mb-12{margin-bottom:3rem}.sm\:mb-5{margin-bottom:1.25rem}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:h-\[900px\]{height:900px}.sm\:w-64{width:16rem}.sm\:w-auto{width:auto}.sm\:w-max{width:-moz-max-content;width:max-content}.sm\:shrink-0{flex-shrink:0}.sm\:basis-5\/6{flex-basis:83.333333%}.sm\:basis-52{flex-basis:13rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-end{justify-content:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:gap-5{gap:1.25rem}.sm\:gap-x-10{-moz-column-gap:2.5rem;column-gap:2.5rem}.sm\:px-12{padding-left:3rem;padding-right:3rem}.sm\:px-5{padding-left:1.25rem;padding-right:1.25rem}.sm\:py-10{padding-bottom:2.5rem;padding-top:2.5rem}.sm\:pb-14{padding-bottom:3.5rem}.sm\:pt-16{padding-top:4rem}.sm\:text-end{text-align:end}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-4xl{font-size:2.25rem;line-height:2.5rem}.sm\:text-\[148px\]{font-size:148px}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:last\:hidden:last-child{display:none}}@media (min-width:768px){.md\:left-auto{left:auto}.md\:top-auto{top:auto}.md\:z-0{z-index:0}.md\:-my-2{margin-bottom:-.5rem;margin-top:-.5rem}.md\:mx-3{margin-left:.75rem;margin-right:.75rem}.md\:mb-12{margin-bottom:3rem}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-16{height:4rem}.md\:h-48{height:12rem}.md\:h-\[750px\]{height:750px}.md\:w-1\/2{width:50%}.md\:w-16{width:4rem}.md\:w-48{width:12rem}.md\:w-\[256px\]{width:256px}.md\:max-w-\[528px\]{max-width:528px}.md\:basis-4\/6{flex-basis:66.666667%}.md\:basis-5\/6{flex-basis:83.333333%}.md\:translate-x-full{--tw-translate-x:100%}.md\:translate-x-full,.md\:translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.md\:translate-y-0{--tw-translate-y:0px}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:justify-start{justify-content:flex-start}.md\:justify-between{justify-content:space-between}.md\:gap-14{gap:3.5rem}.md\:gap-28{gap:7rem}.md\:gap-5{gap:1.25rem}.md\:gap-8{gap:2rem}.md\:gap-y-14{row-gap:3.5rem}.md\:gap-y-5{row-gap:1.25rem}.md\:p-12{padding:3rem}.md\:\!px-0{padding-left:0!important;padding-right:0!important}.md\:px-20{padding-left:5rem;padding-right:5rem}.md\:px-3{padding-left:.75rem;padding-right:.75rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:py-16{padding-bottom:4rem;padding-top:4rem}.md\:py-8{padding-bottom:2rem;padding-top:2rem}.md\:pt-0{padding-top:0}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\:text-\[100px\]{font-size:100px}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}.md\:first\:mt-0:first-child{margin-top:0}.md\:last\:mb-0:last-child{margin-bottom:0}}@media (min-width:1024px){.lg\:order-none{order:0}.lg\:mr-28{margin-right:7rem}.lg\:block{display:block}.lg\:h-99{height:396px}.lg\:h-full{height:100%}.lg\:w-1\/2{width:50%}.lg\:w-72{width:18rem}.lg\:w-80{width:20rem}.lg\:w-max{width:-moz-max-content;width:max-content}.lg\:basis-1\/2{flex-basis:50%}.lg\:basis-\[410px\]{flex-basis:410px}.lg\:flex-row{flex-direction:row}.lg\:justify-start{justify-content:flex-start}.lg\:justify-end{justify-content:flex-end}.lg\:gap-10{gap:2.5rem}.lg\:gap-16{gap:4rem}.lg\:gap-28{gap:7rem}.lg\:gap-\[48px\]{gap:48px}.lg\:gap-x-12{-moz-column-gap:3rem;column-gap:3rem}.lg\:\!px-0{padding-left:0!important;padding-right:0!important}.lg\:\!px-20{padding-left:5rem!important;padding-right:5rem!important}.lg\:px-10{padding-left:2.5rem;padding-right:2.5rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:py-0{padding-bottom:0;padding-top:0}.lg\:py-5{padding-bottom:1.25rem;padding-top:1.25rem}.lg\:text-start{text-align:start}.lg\:text-3xl{font-size:1.875rem;line-height:2.25rem}.lg\:text-4xl{font-size:2.25rem;line-height:2.5rem}.lg\:last\:flex:last-child{display:flex}}@media (min-width:1280px){.xl\:w-\[256px\]{width:256px}.xl\:basis-2\/5{flex-basis:40%}}@media (min-width:1900px){.\33xl\:w-\[400px\]{width:400px}.\33xl\:basis-1\/3{flex-basis:33.333333%}}@media (min-width:2200px){.\34xl\:basis-1\/4{flex-basis:25%}}@font-face{font-display:swap;font-family:Rubik Glitch;font-style:normal;font-weight:400;src:url(/static/rubik-glitch-cyrillic-ext-400-normal-caa98a3bc11105fffcfef482abfb2c37.woff2) format("woff2"),url(/static/rubik-glitch-cyrillic-ext-400-normal-54f97c66997053ace86c1d9f1bdef3fd.woff) format("woff");unicode-range:u+0460-052f,u+1c80-1c88,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-display:swap;font-family:Rubik Glitch;font-style:normal;font-weight:400;src:url(/static/rubik-glitch-cyrillic-400-normal-b32f20a71003e8bb78b28eec73c0385b.woff2) format("woff2"),url(/static/rubik-glitch-cyrillic-400-normal-3fd27e06a8bdf8edbd455443d0854c3f.woff) format("woff");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-display:swap;font-family:Rubik Glitch;font-style:normal;font-weight:400;src:url(/static/rubik-glitch-hebrew-400-normal-776cad11325d90d9061faad0b7107953.woff2) format("woff2"),url(/static/rubik-glitch-hebrew-400-normal-c8cefe9973692c5d21bdd5bb11616cc4.woff) format("woff");unicode-range:u+0590-05ff,u+200c-2010,u+20aa,u+25cc,u+fb1d-fb4f}@font-face{font-display:swap;font-family:Rubik Glitch;font-style:normal;font-weight:400;src:url(/static/rubik-glitch-latin-ext-400-normal-8ae808a02973fec508af9c0959fbbade.woff2) format("woff2"),url(/static/rubik-glitch-latin-ext-400-normal-16c59f7d884842f113e8ff185c8656c9.woff) format("woff");unicode-range:u+0100-02af,u+0304,u+0308,u+0329,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-display:swap;font-family:Rubik Glitch;font-style:normal;font-weight:400;src:url(/static/rubik-glitch-latin-400-normal-7a5b5bac6b066d71b0cae06ed087b905.woff2) format("woff2"),url(/static/rubik-glitch-latin-400-normal-3fb89918ce49908f5350076807cf1bef.woff) format("woff");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-display:swap;font-family:Montserrat Variable;font-style:normal;font-weight:100 900;src:url(/static/montserrat-cyrillic-ext-wght-normal-e84e812b71d18e04e6928fb272665c53.woff2) format("woff2-variations");unicode-range:u+0460-052f,u+1c80-1c88,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-display:swap;font-family:Montserrat Variable;font-style:normal;font-weight:100 900;src:url(/static/montserrat-cyrillic-wght-normal-eb1783eb42487132539645641f761eb2.woff2) format("woff2-variations");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-display:swap;font-family:Montserrat Variable;font-style:normal;font-weight:100 900;src:url(data:font/woff2;base64,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) format("woff2-variations");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-display:swap;font-family:Montserrat Variable;font-style:normal;font-weight:100 900;src:url(/static/montserrat-latin-ext-wght-normal-82d636d9375dd92118fd22c818a99c24.woff2) format("woff2-variations");unicode-range:u+0100-02af,u+0304,u+0308,u+0329,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-display:swap;font-family:Montserrat Variable;font-style:normal;font-weight:100 900;src:url(/static/montserrat-latin-wght-normal-5028c63f6a70ab0cf7cba9015ae04154.woff2) format("woff2-variations");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}code[class*=language-],pre[class*=language-]{word-wrap:normal;background:none;color:#ccc;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;text-align:left;white-space:pre;word-break:normal;word-spacing:normal}pre[class*=language-]{margin:.5em 0;overflow:auto;padding:1em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{border-radius:.3em;padding:.1em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}*{border:0;margin:0;padding:0}*,:after,:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}:active,:focus,a:active,a:focus{outline:none}aside,footer,header,nav{display:block}body,html{-ms-text-size-adjust:100%;-moz-text-size-adjust:100%;-webkit-text-size-adjust:100%;font-size:100%;font-size:14px;line-height:1;min-height:100vh}button,input,textarea{font-family:inherit}input::-ms-clear{display:none}button{cursor:pointer}button::-moz-focus-inner{border:0;padding:0}a,a:hover,a:visited{text-decoration:none}ul li{list-style:none}img{vertical-align:top}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:400}*{font-family:Montserrat Variable,Helvetica,Arial,sans-serif}input:-webkit-autofill,input:-webkit-autofill:active,input:-webkit-autofill:focus,input:-webkit-autofill:hover{-webkit-text-fill-color:#f9f9f9;-webkit-background-clip:text;box-shadow:inset 0 0 20px 20px #fa070700;-webkit-transition:background-color 5000s ease-in-out 0s;transition:background-color 5000s ease-in-out 0s}#contact-form input:-webkit-autofill,#contact-form input:-webkit-autofill:active,#contact-form input:-webkit-autofill:focus,#contact-form input:-webkit-autofill:hover{-webkit-text-fill-color:#111}.banner-title{font-family:Montserrat Variable,Helvetica,Arial,sans-serif}.rubik-font{font-family:Rubik Glitch,Helvetica,Arial,sans-serif}@media screen and (max-width:640px){div#hubspot-messages-iframe-container{display:none!important}}#hubspot-messages-iframe-container{z-index:200!important}#hs-banner-parent{--hs-banner-font-family:"Montserrat Variable",Helvetica,Arial,sans-serif!important;--hs-banner-inset:auto 0px 10px 10px!important;--hs-banner-translate-x:0!important}#hs-eu-cookie-settings-button{font-weight:400!important;text-decoration:none!important}#hs-eu-cookie-confirmation{max-width:calc(100% - 20px)!important}div.privacy-policy h1{font-size:1.875rem;font-weight:600;line-height:2.25rem;text-align:center;width:100%}div.privacy-policy h2{font-size:1.5rem;font-weight:600;line-height:2rem;padding-top:1rem}div.privacy-policy h3{font-size:1.25rem;font-weight:600;line-height:1.75rem;padding-top:1rem}div.privacy-policy h4{font-weight:600;padding-top:.5rem}div.privacy-policy ul li{list-style-position:inside;list-style-type:disc;padding-top:1rem}div.privacy-policy ul li>h3{display:inline;font-weight:500;padding-top:0}div.privacy-policy a{text-decoration-line:underline}div.single-post{font-size:1rem;line-height:1.5rem}@media (min-width:640px){div.single-post{font-size:1.125rem;line-height:1.75rem}}div.single-post :is(h2,h3,h4){--tw-text-opacity:1;color:rgb(249 249 249/var(--tw-text-opacity));font-size:1.125rem;font-weight:700;line-height:1.75rem;margin-bottom:.625rem;margin-top:2rem}@media (min-width:640px){div.single-post :is(h2,h3,h4){font-size:1.25rem;line-height:1.75rem}}div.single-post h4{margin-top:1rem}div.single-post p{margin-bottom:1rem}@media (min-width:640px){div.single-post p{margin-bottom:2rem}}div.single-post span.gatsby-resp-image-wrapper{border-radius:20px!important;margin-bottom:1rem!important;margin-left:auto!important;margin-right:auto!important;max-width:444px!important;width:100%!important}@media (min-width:640px){div.single-post span.gatsby-resp-image-wrapper{margin-bottom:1.25rem!important}}div.single-post img{--tw-shadow:0 0 #0000!important;--tw-shadow-colored:0 0 #0000!important;border-radius:20px!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}div.single-post span.gatsby-resp-image-wrapper+em{display:block;font-size:.875rem;font-style:normal;line-height:1.25rem;text-align:center;width:100%}div.single-post :is(ul,ol){margin-bottom:1rem;margin-top:1rem}@media (min-width:640px){div.single-post :is(ul,ol){margin-bottom:2rem;margin-top:2rem}}div.single-post ul li{list-style-position:inside;list-style-type:disc}div.single-post ol li{list-style-position:inside;list-style-type:decimal}div.single-post pre{--tw-bg-opacity:1;background-color:rgb(45 45 45/var(--tw-bg-opacity));border-radius:20px;font-size:.875rem;line-height:1.25rem;margin-bottom:1rem;margin-top:1rem;padding:1rem;white-space:pre-wrap}@media (min-width:640px){div.single-post pre{font-size:1rem;line-height:1.5rem;margin-bottom:2rem;margin-top:2rem;padding:2rem}}div.single-post pre code{white-space:pre-wrap}.gradient-border{-o-border-image:linear-gradient(90deg,#bdbdbd,#111) 30;border-image:linear-gradient(90deg,#bdbdbd,#111) 30}div.team-member:hover div.line{width:100%}div.applied-tech:hover div.line{height:100%}div.review-body p{padding-top:.5rem}div.review-body p:first-child{padding-top:0}div.workflow-step:nth-child(odd) div.cover{right:-.5rem}div.workflow-step:nth-child(2n) div.cover{left:-.5rem}div.why-us-card p{text-align:justify}p.contact-form-description span{display:block;padding-bottom:.5rem;padding-top:.5rem}p.contact-form-description strong{font-weight:600}ul.MuiMenu-list{--tw-bg-opacity:1;background-color:rgb(249 249 249/var(--tw-bg-opacity))} \ No newline at end of file diff --git a/webpack-runtime-f07da5ffad66aeb2b219.js b/webpack-runtime-0ea1ce65d60d619361d0.js similarity index 88% rename from webpack-runtime-f07da5ffad66aeb2b219.js rename to webpack-runtime-0ea1ce65d60d619361d0.js index aa71970c..95e7bf50 100644 --- a/webpack-runtime-f07da5ffad66aeb2b219.js +++ b/webpack-runtime-0ea1ce65d60d619361d0.js @@ -1,2 +1,2 @@ -!function(){"use strict";var e,t,n,r,o,c={},a={};function f(e){var t=a[e];if(void 0!==t)return t.exports;var n=a[e]={exports:{}};return c[e](n,n.exports,f),n.exports}f.m=c,e=[],f.O=function(t,n,r,o){if(!n){var c=1/0;for(s=0;s=o)&&Object.keys(f.O).every((function(e){return f.O[e](n[u])}))?n.splice(u--,1):(a=!1,o0&&e[s-1][2]>o;s--)e[s]=e[s-1];e[s]=[n,r,o]},f.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return f.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},f.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var o=Object.create(null);f.r(o);var c={};t=t||[null,n({}),n([]),n(n)];for(var a=2&r&&e;"object"==typeof a&&!~t.indexOf(a);a=n(a))Object.getOwnPropertyNames(a).forEach((function(t){c[t]=function(){return e[t]}}));return c.default=function(){return e},f.d(o,c),o},f.d=function(e,t){for(var n in t)f.o(t,n)&&!f.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},f.f={},f.e=function(e){return Promise.all(Object.keys(f.f).reduce((function(t,n){return f.f[n](e,t),t}),[]))},f.u=function(e){return({147:"component---src-pages-templates-project-tsx",149:"component---src-pages-templates-policies-tsx",354:"component---src-pages-templates-post-tsx",403:"c294adedbbc0a5c4b071b27a5ffb97a116928d98",417:"component---src-pages-templates-services-tsx",514:"component---src-pages-templates-404-tsx",548:"component---src-pages-templates-workflow-tsx",577:"71598b7b9331211c5dc2cdd9e7a07dc39cf581bb",602:"dbbdfb320c5007a40fa91453221d77dae72f3b83",650:"component---src-pages-templates-projects-tsx",748:"component---src-pages-templates-blog-by-author-tsx",832:"component---src-pages-templates-index-tsx",899:"component---src-pages-templates-blog-by-hashtag-tsx",926:"component---src-pages-templates-blog-tsx"}[e]||e)+"-"+{147:"4094dc02619f4d8f92a5",149:"359925d45492160d5e8b",354:"faf47b9679f1ea2df95d",403:"83f152d3f32c8162f39f",417:"f01ff73488603dfb6e07",514:"a9bd4aad0e6942bc817a",548:"269bd6e36936a6947204",577:"e37094f984ea117f7d6f",602:"00be99e431fb904367c1",650:"585b3228148568f67aca",731:"fc2222e8bcbd3a323b37",748:"789eecdaeec0a896729b",832:"c399118fd452a66701b3",843:"82fd7f798c0dd9a6f67b",847:"acd519e38201244c39d8",899:"56cadc2b340c057ace2f",926:"c959d60261c8f487ab71"}[e]+".js"},f.miniCssF=function(e){return"styles.e81cc51ad791cfea532d.css"},f.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),f.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="code-cave:",f.l=function(e,t,n,c){if(r[e])r[e].push(t);else{var a,u;if(void 0!==n)for(var i=document.getElementsByTagName("script"),s=0;s=o)&&Object.keys(f.O).every((function(e){return f.O[e](n[u])}))?n.splice(u--,1):(a=!1,o0&&e[s-1][2]>o;s--)e[s]=e[s-1];e[s]=[n,r,o]},f.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return f.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},f.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var o=Object.create(null);f.r(o);var c={};t=t||[null,n({}),n([]),n(n)];for(var a=2&r&&e;"object"==typeof a&&!~t.indexOf(a);a=n(a))Object.getOwnPropertyNames(a).forEach((function(t){c[t]=function(){return e[t]}}));return c.default=function(){return e},f.d(o,c),o},f.d=function(e,t){for(var n in t)f.o(t,n)&&!f.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},f.f={},f.e=function(e){return Promise.all(Object.keys(f.f).reduce((function(t,n){return f.f[n](e,t),t}),[]))},f.u=function(e){return({147:"component---src-pages-templates-project-tsx",149:"component---src-pages-templates-policies-tsx",354:"component---src-pages-templates-post-tsx",403:"c294adedbbc0a5c4b071b27a5ffb97a116928d98",417:"component---src-pages-templates-services-tsx",514:"component---src-pages-templates-404-tsx",548:"component---src-pages-templates-workflow-tsx",577:"71598b7b9331211c5dc2cdd9e7a07dc39cf581bb",602:"dbbdfb320c5007a40fa91453221d77dae72f3b83",650:"component---src-pages-templates-projects-tsx",748:"component---src-pages-templates-blog-by-author-tsx",832:"component---src-pages-templates-index-tsx",899:"component---src-pages-templates-blog-by-hashtag-tsx",926:"component---src-pages-templates-blog-tsx"}[e]||e)+"-"+{147:"1ae68b85e2aab86abd1c",149:"359925d45492160d5e8b",354:"faf47b9679f1ea2df95d",403:"83f152d3f32c8162f39f",417:"f01ff73488603dfb6e07",514:"a9bd4aad0e6942bc817a",548:"0ec92049b543300a7c91",577:"d74142441001f9c39e96",602:"00be99e431fb904367c1",650:"2427a45ecb142ca97a72",731:"fc2222e8bcbd3a323b37",748:"d42ee157dbe851133901",832:"d535c6a2d4bd5b585572",843:"82fd7f798c0dd9a6f67b",847:"acd519e38201244c39d8",899:"615da2ad975c6c4424ae",926:"b708ccb3ab38b62e1d6a"}[e]+".js"},f.miniCssF=function(e){return"styles.e5422b7cb1c4ba6a081d.css"},f.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),f.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="code-cave:",f.l=function(e,t,n,c){if(r[e])r[e].push(t);else{var a,u;if(void 0!==n)for(var i=document.getElementsByTagName("script"),s=0;s 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"code-cave:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"147\":\"component---src-pages-templates-project-tsx\",\"149\":\"component---src-pages-templates-policies-tsx\",\"354\":\"component---src-pages-templates-post-tsx\",\"403\":\"c294adedbbc0a5c4b071b27a5ffb97a116928d98\",\"417\":\"component---src-pages-templates-services-tsx\",\"514\":\"component---src-pages-templates-404-tsx\",\"548\":\"component---src-pages-templates-workflow-tsx\",\"577\":\"71598b7b9331211c5dc2cdd9e7a07dc39cf581bb\",\"602\":\"dbbdfb320c5007a40fa91453221d77dae72f3b83\",\"650\":\"component---src-pages-templates-projects-tsx\",\"748\":\"component---src-pages-templates-blog-by-author-tsx\",\"832\":\"component---src-pages-templates-index-tsx\",\"899\":\"component---src-pages-templates-blog-by-hashtag-tsx\",\"926\":\"component---src-pages-templates-blog-tsx\"}[chunkId] || chunkId) + \"-\" + {\"147\":\"4094dc02619f4d8f92a5\",\"149\":\"359925d45492160d5e8b\",\"354\":\"faf47b9679f1ea2df95d\",\"403\":\"83f152d3f32c8162f39f\",\"417\":\"f01ff73488603dfb6e07\",\"514\":\"a9bd4aad0e6942bc817a\",\"548\":\"269bd6e36936a6947204\",\"577\":\"e37094f984ea117f7d6f\",\"602\":\"00be99e431fb904367c1\",\"650\":\"585b3228148568f67aca\",\"731\":\"fc2222e8bcbd3a323b37\",\"748\":\"789eecdaeec0a896729b\",\"832\":\"c399118fd452a66701b3\",\"843\":\"82fd7f798c0dd9a6f67b\",\"847\":\"acd519e38201244c39d8\",\"899\":\"56cadc2b340c057ace2f\",\"926\":\"c959d60261c8f487ab71\"}[chunkId] + \".js\";\n};","// This function allow to reference all chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + \"styles\" + \".\" + \"e81cc51ad791cfea532d\" + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t658: 0,\n\t532: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(532|658)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkcode_cave\"] = self[\"webpackChunkcode_cave\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","getPrototypeOf","obj","__proto__","t","value","mode","this","then","ns","create","def","current","indexOf","getOwnPropertyNames","forEach","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","reduce","promises","u","miniCssF","g","globalThis","Function","window","prop","prototype","hasOwnProperty","call","l","url","done","push","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","p","b","baseURI","self","location","href","installedChunks","installedChunkData","test","promise","resolve","reject","error","Error","errorType","realSrc","message","name","request","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","id","chunkLoadingGlobal"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"webpack-runtime-0ea1ce65d60d619361d0.js","mappings":"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","sources":["webpack://code-cave/webpack/runtime/chunk loaded","webpack://code-cave/webpack/runtime/create fake namespace object","webpack://code-cave/webpack/runtime/load script","webpack://code-cave/webpack/bootstrap","webpack://code-cave/webpack/runtime/compat get default export","webpack://code-cave/webpack/runtime/define property getters","webpack://code-cave/webpack/runtime/ensure chunk","webpack://code-cave/webpack/runtime/get javascript chunk filename","webpack://code-cave/webpack/runtime/get mini-css chunk filename","webpack://code-cave/webpack/runtime/global","webpack://code-cave/webpack/runtime/hasOwnProperty shorthand","webpack://code-cave/webpack/runtime/make namespace object","webpack://code-cave/webpack/runtime/publicPath","webpack://code-cave/webpack/runtime/jsonp chunk loading"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"code-cave:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"147\":\"component---src-pages-templates-project-tsx\",\"149\":\"component---src-pages-templates-policies-tsx\",\"354\":\"component---src-pages-templates-post-tsx\",\"403\":\"c294adedbbc0a5c4b071b27a5ffb97a116928d98\",\"417\":\"component---src-pages-templates-services-tsx\",\"514\":\"component---src-pages-templates-404-tsx\",\"548\":\"component---src-pages-templates-workflow-tsx\",\"577\":\"71598b7b9331211c5dc2cdd9e7a07dc39cf581bb\",\"602\":\"dbbdfb320c5007a40fa91453221d77dae72f3b83\",\"650\":\"component---src-pages-templates-projects-tsx\",\"748\":\"component---src-pages-templates-blog-by-author-tsx\",\"832\":\"component---src-pages-templates-index-tsx\",\"899\":\"component---src-pages-templates-blog-by-hashtag-tsx\",\"926\":\"component---src-pages-templates-blog-tsx\"}[chunkId] || chunkId) + \"-\" + {\"147\":\"1ae68b85e2aab86abd1c\",\"149\":\"359925d45492160d5e8b\",\"354\":\"faf47b9679f1ea2df95d\",\"403\":\"83f152d3f32c8162f39f\",\"417\":\"f01ff73488603dfb6e07\",\"514\":\"a9bd4aad0e6942bc817a\",\"548\":\"0ec92049b543300a7c91\",\"577\":\"d74142441001f9c39e96\",\"602\":\"00be99e431fb904367c1\",\"650\":\"2427a45ecb142ca97a72\",\"731\":\"fc2222e8bcbd3a323b37\",\"748\":\"d42ee157dbe851133901\",\"832\":\"d535c6a2d4bd5b585572\",\"843\":\"82fd7f798c0dd9a6f67b\",\"847\":\"acd519e38201244c39d8\",\"899\":\"615da2ad975c6c4424ae\",\"926\":\"b708ccb3ab38b62e1d6a\"}[chunkId] + \".js\";\n};","// This function allow to reference all chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + \"styles\" + \".\" + \"e5422b7cb1c4ba6a081d\" + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t658: 0,\n\t532: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(532|658)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkcode_cave\"] = self[\"webpackChunkcode_cave\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","getPrototypeOf","obj","__proto__","t","value","mode","this","then","ns","create","def","current","indexOf","getOwnPropertyNames","forEach","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","reduce","promises","u","miniCssF","g","globalThis","Function","window","prop","prototype","hasOwnProperty","call","l","url","done","push","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","p","b","baseURI","self","location","href","installedChunks","installedChunkData","test","promise","resolve","reject","error","Error","errorType","realSrc","message","name","request","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","id","chunkLoadingGlobal"],"sourceRoot":""} \ No newline at end of file diff --git a/webpack.stats.json b/webpack.stats.json index fb9e638b..2d3ea6ef 100644 --- a/webpack.stats.json +++ b/webpack.stats.json @@ -1 +1 @@ -{"name":"build-javascript","namedChunkGroups":{"app":{"name":"app","assets":[{"name":"webpack-runtime-f07da5ffad66aeb2b219.js","size":4831},{"name":"styles.e81cc51ad791cfea532d.css","size":46846},{"name":"framework-2f7a9a83fd6996cb764f.js","size":141400},{"name":"app-a10c13aa836e9c26d16d.js","size":351594}],"filteredAssets":0,"assetsSize":544671,"filteredAuxiliaryAssets":17,"auxiliaryAssetsSize":2502644},"component---src-pages-templates-404-tsx":{"name":"component---src-pages-templates-404-tsx","assets":[{"name":"component---src-pages-templates-404-tsx-a9bd4aad0e6942bc817a.js","size":1629}],"filteredAssets":0,"assetsSize":1629,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":4487},"component---src-pages-templates-blog-by-author-tsx":{"name":"component---src-pages-templates-blog-by-author-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"component---src-pages-templates-blog-by-author-tsx-789eecdaeec0a896729b.js","size":10512}],"filteredAssets":0,"assetsSize":21168,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":100303},"component---src-pages-templates-blog-by-hashtag-tsx":{"name":"component---src-pages-templates-blog-by-hashtag-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"component---src-pages-templates-blog-by-hashtag-tsx-56cadc2b340c057ace2f.js","size":9669}],"filteredAssets":0,"assetsSize":20325,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":97324},"component---src-pages-templates-blog-tsx":{"name":"component---src-pages-templates-blog-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"component---src-pages-templates-blog-tsx-c959d60261c8f487ab71.js","size":9453}],"filteredAssets":0,"assetsSize":20109,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":96959},"component---src-pages-templates-index-tsx":{"name":"component---src-pages-templates-index-tsx","assets":[{"name":"styles.e81cc51ad791cfea532d.css","size":46846},{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-e37094f984ea117f7d6f.js","size":30715},{"name":"dbbdfb320c5007a40fa91453221d77dae72f3b83-00be99e431fb904367c1.js","size":18834},{"name":"component---src-pages-templates-index-tsx-c399118fd452a66701b3.js","size":13728}],"filteredAssets":0,"assetsSize":120779,"filteredAuxiliaryAssets":18,"auxiliaryAssetsSize":849801},"component---src-pages-templates-policies-tsx":{"name":"component---src-pages-templates-policies-tsx","assets":[{"name":"component---src-pages-templates-policies-tsx-359925d45492160d5e8b.js","size":816}],"filteredAssets":0,"assetsSize":816,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":2133},"component---src-pages-templates-post-tsx":{"name":"component---src-pages-templates-post-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"component---src-pages-templates-post-tsx-faf47b9679f1ea2df95d.js","size":6958}],"filteredAssets":0,"assetsSize":17614,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":87043},"component---src-pages-templates-project-tsx":{"name":"component---src-pages-templates-project-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"dbbdfb320c5007a40fa91453221d77dae72f3b83-00be99e431fb904367c1.js","size":18834},{"name":"component---src-pages-templates-project-tsx-4094dc02619f4d8f92a5.js","size":8206}],"filteredAssets":0,"assetsSize":37696,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":182142},"component---src-pages-templates-projects-tsx":{"name":"component---src-pages-templates-projects-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"component---src-pages-templates-projects-tsx-585b3228148568f67aca.js","size":4180}],"filteredAssets":0,"assetsSize":14836,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":81448},"component---src-pages-templates-services-tsx":{"name":"component---src-pages-templates-services-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-e37094f984ea117f7d6f.js","size":30715},{"name":"dbbdfb320c5007a40fa91453221d77dae72f3b83-00be99e431fb904367c1.js","size":18834},{"name":"component---src-pages-templates-services-tsx-f01ff73488603dfb6e07.js","size":11486}],"filteredAssets":0,"assetsSize":71691,"filteredAuxiliaryAssets":4,"auxiliaryAssetsSize":343325},"component---src-pages-templates-workflow-tsx":{"name":"component---src-pages-templates-workflow-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-e37094f984ea117f7d6f.js","size":30715},{"name":"component---src-pages-templates-workflow-tsx-269bd6e36936a6947204.js","size":5109}],"filteredAssets":0,"assetsSize":46480,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":224449}},"assetsByChunkName":{"app":["webpack-runtime-f07da5ffad66aeb2b219.js","styles.e81cc51ad791cfea532d.css","framework-2f7a9a83fd6996cb764f.js","app-a10c13aa836e9c26d16d.js"],"component---src-pages-templates-404-tsx":["component---src-pages-templates-404-tsx-a9bd4aad0e6942bc817a.js"],"component---src-pages-templates-blog-by-author-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","component---src-pages-templates-blog-by-author-tsx-789eecdaeec0a896729b.js"],"component---src-pages-templates-blog-by-hashtag-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","component---src-pages-templates-blog-by-hashtag-tsx-56cadc2b340c057ace2f.js"],"component---src-pages-templates-blog-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","component---src-pages-templates-blog-tsx-c959d60261c8f487ab71.js"],"component---src-pages-templates-index-tsx":["styles.e81cc51ad791cfea532d.css","c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-e37094f984ea117f7d6f.js","dbbdfb320c5007a40fa91453221d77dae72f3b83-00be99e431fb904367c1.js","component---src-pages-templates-index-tsx-c399118fd452a66701b3.js"],"component---src-pages-templates-policies-tsx":["component---src-pages-templates-policies-tsx-359925d45492160d5e8b.js"],"component---src-pages-templates-post-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","component---src-pages-templates-post-tsx-faf47b9679f1ea2df95d.js"],"component---src-pages-templates-project-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","dbbdfb320c5007a40fa91453221d77dae72f3b83-00be99e431fb904367c1.js","component---src-pages-templates-project-tsx-4094dc02619f4d8f92a5.js"],"component---src-pages-templates-projects-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","component---src-pages-templates-projects-tsx-585b3228148568f67aca.js"],"component---src-pages-templates-services-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-e37094f984ea117f7d6f.js","dbbdfb320c5007a40fa91453221d77dae72f3b83-00be99e431fb904367c1.js","component---src-pages-templates-services-tsx-f01ff73488603dfb6e07.js"],"component---src-pages-templates-workflow-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-e37094f984ea117f7d6f.js","component---src-pages-templates-workflow-tsx-269bd6e36936a6947204.js"]},"childAssetsByChunkName":{}} \ No newline at end of file +{"name":"build-javascript","namedChunkGroups":{"app":{"name":"app","assets":[{"name":"webpack-runtime-0ea1ce65d60d619361d0.js","size":4831},{"name":"styles.e5422b7cb1c4ba6a081d.css","size":45554},{"name":"framework-2f7a9a83fd6996cb764f.js","size":141400},{"name":"app-a10c13aa836e9c26d16d.js","size":351594}],"filteredAssets":0,"assetsSize":543379,"filteredAuxiliaryAssets":17,"auxiliaryAssetsSize":2502644},"component---src-pages-templates-404-tsx":{"name":"component---src-pages-templates-404-tsx","assets":[{"name":"component---src-pages-templates-404-tsx-a9bd4aad0e6942bc817a.js","size":1629}],"filteredAssets":0,"assetsSize":1629,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":4487},"component---src-pages-templates-blog-by-author-tsx":{"name":"component---src-pages-templates-blog-by-author-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"component---src-pages-templates-blog-by-author-tsx-d42ee157dbe851133901.js","size":10512}],"filteredAssets":0,"assetsSize":21168,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":100303},"component---src-pages-templates-blog-by-hashtag-tsx":{"name":"component---src-pages-templates-blog-by-hashtag-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"component---src-pages-templates-blog-by-hashtag-tsx-615da2ad975c6c4424ae.js","size":9669}],"filteredAssets":0,"assetsSize":20325,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":97324},"component---src-pages-templates-blog-tsx":{"name":"component---src-pages-templates-blog-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"component---src-pages-templates-blog-tsx-b708ccb3ab38b62e1d6a.js","size":9453}],"filteredAssets":0,"assetsSize":20109,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":96959},"component---src-pages-templates-index-tsx":{"name":"component---src-pages-templates-index-tsx","assets":[{"name":"styles.e5422b7cb1c4ba6a081d.css","size":45554},{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-d74142441001f9c39e96.js","size":30664},{"name":"dbbdfb320c5007a40fa91453221d77dae72f3b83-00be99e431fb904367c1.js","size":18834},{"name":"component---src-pages-templates-index-tsx-d535c6a2d4bd5b585572.js","size":13728}],"filteredAssets":0,"assetsSize":119436,"filteredAuxiliaryAssets":18,"auxiliaryAssetsSize":849397},"component---src-pages-templates-policies-tsx":{"name":"component---src-pages-templates-policies-tsx","assets":[{"name":"component---src-pages-templates-policies-tsx-359925d45492160d5e8b.js","size":816}],"filteredAssets":0,"assetsSize":816,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":2133},"component---src-pages-templates-post-tsx":{"name":"component---src-pages-templates-post-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"component---src-pages-templates-post-tsx-faf47b9679f1ea2df95d.js","size":6958}],"filteredAssets":0,"assetsSize":17614,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":87043},"component---src-pages-templates-project-tsx":{"name":"component---src-pages-templates-project-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"dbbdfb320c5007a40fa91453221d77dae72f3b83-00be99e431fb904367c1.js","size":18834},{"name":"component---src-pages-templates-project-tsx-1ae68b85e2aab86abd1c.js","size":8208}],"filteredAssets":0,"assetsSize":37698,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":182144},"component---src-pages-templates-projects-tsx":{"name":"component---src-pages-templates-projects-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"component---src-pages-templates-projects-tsx-2427a45ecb142ca97a72.js","size":4236}],"filteredAssets":0,"assetsSize":14892,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":81645},"component---src-pages-templates-services-tsx":{"name":"component---src-pages-templates-services-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-d74142441001f9c39e96.js","size":30664},{"name":"dbbdfb320c5007a40fa91453221d77dae72f3b83-00be99e431fb904367c1.js","size":18834},{"name":"component---src-pages-templates-services-tsx-f01ff73488603dfb6e07.js","size":11486}],"filteredAssets":0,"assetsSize":71640,"filteredAuxiliaryAssets":4,"auxiliaryAssetsSize":342902},"component---src-pages-templates-workflow-tsx":{"name":"component---src-pages-templates-workflow-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-d74142441001f9c39e96.js","size":30664},{"name":"component---src-pages-templates-workflow-tsx-0ec92049b543300a7c91.js","size":5111}],"filteredAssets":0,"assetsSize":46431,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":222645}},"assetsByChunkName":{"app":["webpack-runtime-0ea1ce65d60d619361d0.js","styles.e5422b7cb1c4ba6a081d.css","framework-2f7a9a83fd6996cb764f.js","app-a10c13aa836e9c26d16d.js"],"component---src-pages-templates-404-tsx":["component---src-pages-templates-404-tsx-a9bd4aad0e6942bc817a.js"],"component---src-pages-templates-blog-by-author-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","component---src-pages-templates-blog-by-author-tsx-d42ee157dbe851133901.js"],"component---src-pages-templates-blog-by-hashtag-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","component---src-pages-templates-blog-by-hashtag-tsx-615da2ad975c6c4424ae.js"],"component---src-pages-templates-blog-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","component---src-pages-templates-blog-tsx-b708ccb3ab38b62e1d6a.js"],"component---src-pages-templates-index-tsx":["styles.e5422b7cb1c4ba6a081d.css","c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-d74142441001f9c39e96.js","dbbdfb320c5007a40fa91453221d77dae72f3b83-00be99e431fb904367c1.js","component---src-pages-templates-index-tsx-d535c6a2d4bd5b585572.js"],"component---src-pages-templates-policies-tsx":["component---src-pages-templates-policies-tsx-359925d45492160d5e8b.js"],"component---src-pages-templates-post-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","component---src-pages-templates-post-tsx-faf47b9679f1ea2df95d.js"],"component---src-pages-templates-project-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","dbbdfb320c5007a40fa91453221d77dae72f3b83-00be99e431fb904367c1.js","component---src-pages-templates-project-tsx-1ae68b85e2aab86abd1c.js"],"component---src-pages-templates-projects-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","component---src-pages-templates-projects-tsx-2427a45ecb142ca97a72.js"],"component---src-pages-templates-services-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-d74142441001f9c39e96.js","dbbdfb320c5007a40fa91453221d77dae72f3b83-00be99e431fb904367c1.js","component---src-pages-templates-services-tsx-f01ff73488603dfb6e07.js"],"component---src-pages-templates-workflow-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-d74142441001f9c39e96.js","component---src-pages-templates-workflow-tsx-0ec92049b543300a7c91.js"]},"childAssetsByChunkName":{}} \ No newline at end of file diff --git a/workflow/index.html b/workflow/index.html index 94ae486b..509d1de3 100644 --- a/workflow/index.html +++ b/workflow/index.html @@ -1,8 +1,8 @@

cover

1

Discovering

Tell us more about your business on a discovery call. We’ll discuss your project requirements, success criteria, timescale, budget and required skill sets to see if we can help.

2

Brainstorming

Using first-step information we'll take a deep dive into your target audience, needs and challenges of your business, customers, and desired technology.

3

Defining

We’ll quickly define your project roadmap, select the right tools and technologies. We’ll assemble your team and assign you a PM.

4

Proposition

Complete solution for your project will be proposed as soon as possible. Every effort will be made to reach an agreement on all issues.

5

Development

Once we have a contract, development process starts immediately. Our high skilled team definitelly will meet all the project's goals and wrap it in a reliable easily maintained solution.

6

Launch

Congratulations! Successfully released product and non-broken deadlines are irrefutable evidence of your right desicion to choose CodeCave as your partner.

7

Maintenance

The product won't be abandoned, we'll provide you long term maintenance support. And that's the main reason why we're highly intrested in clear code, agile and scalable solution.

A BIT MORE ABOUT US

Consistency and standards

No surprises! We are consistent and have many time-tested techniques at our disposal.

Team efficiency = cost efficiency

We know how to assemble the perfect team to protect you from paying extra.

Responsible development

We provide light and clear coding, that helps us to escape unbreakable loops of re-development.

Relationships

We create a transparent relationship with our customer. Mutual trust and straightforward communication are the key.

Flexibility

We're ready to face new challenges at any stage of the project.

Curious minds

We're constantly keeping an eye on tech advancements and possible ways to implement it in our work.

anchor

LET’S DISCUSS YOUR PROJECT

WE’LL BE GLAD TO HEAR FROM YOU!
CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

cover

1

Discovering

Tell us more about your business on a discovery call. We’ll discuss your project requirements, success criteria, timescale, budget and required skill sets to see if we can help.

2

Brainstorming

Using first-step information we'll take a deep dive into your target audience, needs and challenges of your business, customers, and desired technology.

3

Defining

We’ll quickly define your project roadmap, select the right tools and technologies. We’ll assemble your team and assign you a PM.

4

Proposition

Complete solution for your project will be proposed as soon as possible. Every effort will be made to reach an agreement on all issues.

5

Development

Once we have a contract, development process starts immediately. Our high skilled team definitelly will meet all the project's goals and wrap it in a reliable easily maintained solution.

6

Launch

Congratulations! Successfully released product and non-broken deadlines are irrefutable evidence of your right desicion to choose CodeCave as your partner.

7

Maintenance

The product won't be abandoned, we'll provide you long term maintenance support. And that's the main reason why we're highly intrested in clear code, agile and scalable solution.

A BIT MORE ABOUT US

Consistency and standards

No surprises! We are consistent and have many time-tested techniques at our disposal.

Team efficiency = cost efficiency

We know how to assemble the perfect team to protect you from paying extra.

Responsible development

We provide light and clear coding, that helps us to escape unbreakable loops of re-development.

Relationships

We create a transparent relationship with our customer. Mutual trust and straightforward communication are the key.

Flexibility

We're ready to face new challenges at any stage of the project.

Curious minds

We're constantly keeping an eye on tech advancements and possible ways to implement it in our work.

anchor

LET’S DISCUSS YOUR PROJECT

WE’LL BE GLAD TO HEAR FROM YOU!

Describe your project or idea to get our expert assessment.

+

It’s totally free! No strings attached.

+

We can easily jump into a complex ongoing project or start from scratch.

+

Don’t miss this opportunity, contact us!

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file