{"version":3,"file":"shared-lib.Q12DFEdE.mjs","names":["useState"],"sources":["https:/framerusercontent.com/modules/jmTBVvRGnTdNjcnK4l3z/vDojnWe5ToKwVyFF35bs/ZJmS4L_n9.js","https:/framerusercontent.com/modules/wY1lUkgDoBolK85qgRnI/LMIOI5S66kwGh5s8H5d4/KeyboardShortcuts.js","https:/framerusercontent.com/modules/nJ8Ii5yl4DV55Xu5zHmb/52OJhEyj83JqEdJzLrcO/siteMetadata.js"],"sourcesContent":["// Generated by Framer (8174fae)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"CUSTOMV2;SF Pro Text Regular\",\"CUSTOMV2;SF Pro Text Medium\",\"CUSTOMV2;SF Pro Text Medium Italic\",\"CUSTOMV2;SF Pro Text Regular Italic\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"SF Pro Text Regular\",source:\"custom\",style:\"normal\",uiFamilyName:\"SF Pro Text\",url:\"https://framerusercontent.com/assets/bBsMkaMH6n9c3mCxb6qrkWU4VYU.otf\",weight:\"400\"},{cssFamilyName:\"SF Pro Text Medium\",source:\"custom\",style:\"normal\",uiFamilyName:\"SF Pro Text\",url:\"https://framerusercontent.com/assets/2UbBlEz7Y4z9QoIk3ngQNHiKftc.otf\",weight:\"500\"},{cssFamilyName:\"SF Pro Text Medium Italic\",source:\"custom\",style:\"italic\",uiFamilyName:\"SF Pro Text\",url:\"https://framerusercontent.com/assets/cwMJurYDakXskhWHyDdCocwbKFc.otf\",weight:\"500\"},{cssFamilyName:\"SF Pro Text Regular Italic\",source:\"custom\",style:\"italic\",uiFamilyName:\"SF Pro Text\",url:\"https://framerusercontent.com/assets/Stj07FZNpFkh5QSeiScZtPnI.otf\",weight:\"400\"}]}];export const css=['.framer-11mmz .framer-styles-preset-16wlqs8:not(.rich-text-wrapper), .framer-11mmz .framer-styles-preset-16wlqs8.rich-text-wrapper p { --framer-font-family: \"SF Pro Text Regular\", \"SF Pro Text Regular Placeholder\", sans-serif; --framer-font-family-bold: \"SF Pro Text Medium\", \"SF Pro Text Medium Placeholder\", sans-serif; --framer-font-family-bold-italic: \"SF Pro Text Medium Italic\", \"SF Pro Text Medium Italic Placeholder\", sans-serif; --framer-font-family-italic: \"SF Pro Text Regular Italic\", \"SF Pro Text Regular Italic Placeholder\", sans-serif; --framer-font-open-type-features: \\'blwf\\' on, \\'cv03\\' on, \\'cv04\\' on, \\'cv09\\' on, \\'cv11\\' on; --framer-font-size: 16px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-font-weight-bold: 500; --framer-font-weight-bold-italic: 500; --framer-font-weight-italic: 400; --framer-letter-spacing: -0.02em; --framer-line-height: 1.6em; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: var(--token-4f8fd190-ade1-480f-b152-751cb76d1569, #d5d7da); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }','@media (max-width: 1199px) and (min-width: 810px) { .framer-11mmz .framer-styles-preset-16wlqs8:not(.rich-text-wrapper), .framer-11mmz .framer-styles-preset-16wlqs8.rich-text-wrapper p { --framer-font-family: \"SF Pro Text Regular\", \"SF Pro Text Regular Placeholder\", sans-serif; --framer-font-family-bold: \"SF Pro Text Medium\", \"SF Pro Text Medium Placeholder\", sans-serif; --framer-font-family-bold-italic: \"SF Pro Text Medium Italic\", \"SF Pro Text Medium Italic Placeholder\", sans-serif; --framer-font-family-italic: \"SF Pro Text Regular Italic\", \"SF Pro Text Regular Italic Placeholder\", sans-serif; --framer-font-open-type-features: \\'blwf\\' on, \\'cv03\\' on, \\'cv04\\' on, \\'cv09\\' on, \\'cv11\\' on; --framer-font-size: 15px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-font-weight-bold: 500; --framer-font-weight-bold-italic: 500; --framer-font-weight-italic: 400; --framer-letter-spacing: -0.02em; --framer-line-height: 1.6em; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: var(--token-4f8fd190-ade1-480f-b152-751cb76d1569, #d5d7da); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; } }','@media (max-width: 809px) and (min-width: 0px) { .framer-11mmz .framer-styles-preset-16wlqs8:not(.rich-text-wrapper), .framer-11mmz .framer-styles-preset-16wlqs8.rich-text-wrapper p { --framer-font-family: \"SF Pro Text Regular\", \"SF Pro Text Regular Placeholder\", sans-serif; --framer-font-family-bold: \"SF Pro Text Medium\", \"SF Pro Text Medium Placeholder\", sans-serif; --framer-font-family-bold-italic: \"SF Pro Text Medium Italic\", \"SF Pro Text Medium Italic Placeholder\", sans-serif; --framer-font-family-italic: \"SF Pro Text Regular Italic\", \"SF Pro Text Regular Italic Placeholder\", sans-serif; --framer-font-open-type-features: \\'blwf\\' on, \\'cv03\\' on, \\'cv04\\' on, \\'cv09\\' on, \\'cv11\\' on; --framer-font-size: 14px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-font-weight-bold: 500; --framer-font-weight-bold-italic: 500; --framer-font-weight-italic: 400; --framer-letter-spacing: -0.02em; --framer-line-height: 1.6em; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: var(--token-4f8fd190-ade1-480f-b152-751cb76d1569, #d5d7da); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; } }'];export const className=\"framer-11mmz\";\nexport const __FramerMetadata__ = {\"exports\":{\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Keyboard shortcut component for website navigation\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useState,startTransition}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/**\n * Keyboard Shortcuts Navigation\n * @framerDisableUnlink\n * @framerIntrinsicWidth 200\n * @framerIntrinsicHeight 120\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function KeyboardShortcuts(props){const{shortcuts=[{key:\"h\",url:\"/\",openInNewTab:false},{key:\"a\",url:\"/about\",openInNewTab:false},{key:\"c\",url:\"/contact\",openInNewTab:false}]}=props;const[pressedKeys,setPressedKeys]=useState(new Set);useEffect(()=>{if(typeof window===\"undefined\"||RenderTarget.current()===RenderTarget.thumbnail)return;const handleKeyDown=event=>{// Ignore if user is typing in an input field\nif(event.target instanceof HTMLInputElement||event.target instanceof HTMLTextAreaElement||event.target instanceof HTMLSelectElement){return;}const key=event.key.toLowerCase();// Track pressed keys\nstartTransition(()=>{setPressedKeys(prev=>new Set([...prev,key]));});// Check for shortcut matches\nfor(const shortcut of shortcuts){const shortcutKey=shortcut.key.toLowerCase();// Check if shortcut contains modifier keys\nif(shortcutKey.includes(\"ctrl+\")||shortcutKey.includes(\"cmd+\")||shortcutKey.includes(\"alt+\")||shortcutKey.includes(\"shift+\")){// Parse modifier combination\nconst parts=shortcutKey.split(\"+\");const modifiers=parts.slice(0,-1);const mainKey=parts[parts.length-1];// Check if all required modifiers are pressed and main key matches\nconst ctrlPressed=modifiers.includes(\"ctrl\")&&(event.ctrlKey||event.metaKey);const altPressed=modifiers.includes(\"alt\")&&event.altKey;const shiftPressed=modifiers.includes(\"shift\")&&event.shiftKey;const cmdPressed=modifiers.includes(\"cmd\")&&event.metaKey;const allModifiersMatch=(!modifiers.includes(\"ctrl\")||ctrlPressed)&&(!modifiers.includes(\"cmd\")||cmdPressed)&&(!modifiers.includes(\"alt\")||altPressed)&&(!modifiers.includes(\"shift\")||shiftPressed)&&(modifiers.includes(\"ctrl\")?event.ctrlKey||event.metaKey:true)&&(modifiers.includes(\"cmd\")?event.metaKey:true)&&(modifiers.includes(\"alt\")?event.altKey:true)&&(modifiers.includes(\"shift\")?event.shiftKey:true);if(allModifiersMatch&&mainKey===key){event.preventDefault();if(shortcut.openInNewTab){window.open(shortcut.url,\"_blank\");}else{window.location.href=shortcut.url;}return;}}else{// Simple key match (single key) - only if no modifiers are pressed\nif(shortcutKey===key&&!event.ctrlKey&&!event.metaKey&&!event.altKey&&!event.shiftKey){event.preventDefault();if(shortcut.openInNewTab){window.open(shortcut.url,\"_blank\");}else{window.location.href=shortcut.url;}return;}}}};const handleKeyUp=()=>{startTransition(()=>setPressedKeys(new Set));};const handleBlur=()=>{startTransition(()=>setPressedKeys(new Set));};window.addEventListener(\"keydown\",handleKeyDown);window.addEventListener(\"keyup\",handleKeyUp);window.addEventListener(\"blur\",handleBlur);return()=>{window.removeEventListener(\"keydown\",handleKeyDown);window.removeEventListener(\"keyup\",handleKeyUp);window.removeEventListener(\"blur\",handleBlur);};},[shortcuts,pressedKeys]);if(RenderTarget.current()===RenderTarget.thumbnail){return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",backgroundColor:\"#F5F5F5\",borderRadius:\"8px\"},children:/*#__PURE__*/_jsxs(\"div\",{style:{textAlign:\"center\",opacity:.7},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:\"24px\",marginBottom:\"8px\"},children:\"⌨️\"}),/*#__PURE__*/_jsx(\"div\",{style:{fontSize:\"14px\"},children:\"Keyboard Shortcuts\"})]})});}return null;}addPropertyControls(KeyboardShortcuts,{shortcuts:{type:ControlType.Array,title:\"Shortcuts\",control:{type:ControlType.Object,controls:{key:{type:ControlType.String,title:\"Key\",defaultValue:\"h\",placeholder:\"e.g. h, k, n\"},url:{type:ControlType.String,title:\"URL\",defaultValue:\"/\",placeholder:\"/page or https://example.com\"},openInNewTab:{type:ControlType.Boolean,title:\"Open in New Tab\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\"}}},defaultValue:[{key:\"h\",url:\"/\",openInNewTab:false},{key:\"a\",url:\"/about\",openInNewTab:false},{key:\"c\",url:\"/contact\",openInNewTab:false}],maxCount:10}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"KeyboardShortcuts\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"120\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerDisableUnlink\":\"* @framerIntrinsicWidth 200\",\"framerSupportedLayoutHeight\":\"fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./KeyboardShortcuts.map","// Generated by Framer (8174fae)\nexport default function metadata(params,activeLocale){return{description:\"A personal site. Updated when there's something worth saying.\",favicon:\"https://framerusercontent.com/assets/KN7grmaZuzY4SbHVowgbTB0Bs.png\",robots:\"max-image-preview:large\",title:\"Eric Kimxni\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}