diff --git a/assets/DevMoodTracker-0krNlVUX.js b/assets/DevMoodTracker-0krNlVUX.js new file mode 100644 index 0000000000000000000000000000000000000000..39af2489a34f681ccd04189e81303fe82b5daacb --- /dev/null +++ b/assets/DevMoodTracker-0krNlVUX.js @@ -0,0 +1,2 @@ +import{j as t,r as l}from"./react-_fH1j4AW.js";import{c as p}from"./index-Nqm_ElTk.js";import"./@braintree-9Zuj5s7N.js";import"./react-dom-B47xkeQg.js";import"./scheduler-DYLXRpC5.js";import"./mermaid-CwNlsT42.js";import"./dayjs-LlU9W_sF.js";import"./d3-transition-593SbTzI.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-C52G7wmG.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-Dc8HCWOS.js";import"./dompurify-J5RlrwSC.js";import"./dagre-d3-es-CXvdFQqV.js";import"./lodash-es-CKQobiyk.js";import"./d3-shape-C6amFesj.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-BS_sNva5.js";import"./cytoscape-Copgxxlq.js";import"./cytoscape-cose-bilkent-DNVwk4oY.js";import"./cose-base-HlRMd3jM.js";import"./layout-base-BVPXtQQC.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";const a=(o,i)=>{const[e,s]=l.useState(()=>{try{const r=window.localStorage.getItem(o);return r?JSON.parse(r):i}catch{return i}});return[e,r=>{const m=r instanceof Function?r(e):r;s(m),window.localStorage.setItem(o,JSON.stringify(m))}]},n=[{emoji:"😄",label:"Great"},{emoji:"😊",label:"Good"},{emoji:"😐",label:"Okay"},{emoji:"😟",label:"Struggling"},{emoji:"🔥",label:"In the Zone"}],ht=()=>{const[o,i]=a("devcore_mood",null);return t.jsxs("div",{className:"h-full flex flex-col items-center justify-center p-4 sm:p-6 lg:p-8 text-center",children:[t.jsxs("header",{className:"mb-8",children:[t.jsxs("h1",{className:"text-3xl font-bold text-slate-100 flex items-center",children:[t.jsx(p,{}),t.jsx("span",{className:"ml-3",children:"Dev Mood Tracker"})]}),t.jsx("p",{className:"text-slate-400 mt-1",children:"How are you feeling today?"})]}),t.jsx("div",{className:"flex items-center justify-center gap-4 md:gap-8",children:n.map(e=>t.jsxs("button",{onClick:()=>i(e.label),className:`flex flex-col items-center gap-2 p-4 rounded-lg transition-all transform hover:scale-110 ${o===e.label?"bg-cyan-500/20":"bg-slate-800/50"}`,children:[t.jsx("span",{className:"text-5xl",children:e.emoji}),t.jsx("span",{className:"font-semibold text-slate-300",children:e.label})]},e.label))}),o&&t.jsxs("p",{className:"mt-8 text-lg text-green-400",children:["Thanks for checking in! You're feeling: ",o]})]})};export{ht as DevMoodTracker}; +//# sourceMappingURL=DevMoodTracker-0krNlVUX.js.map diff --git a/assets/DevMoodTracker-0krNlVUX.js.map b/assets/DevMoodTracker-0krNlVUX.js.map new file mode 100644 index 0000000000000000000000000000000000000000..aa35d8625bb64350ed1c42620b1b3aff6f95d4cf --- /dev/null +++ b/assets/DevMoodTracker-0krNlVUX.js.map @@ -0,0 +1 @@ +{"version":3,"file":"DevMoodTracker-0krNlVUX.js","sources":["../../components/features/DevMoodTracker.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { SparklesIcon } from '../icons/FeatureIcons.tsx';\n\nconst useLocalStorage = (key: string, initialValue: any) => {\n const [storedValue, setStoredValue] = useState(() => {\n try {\n const item = window.localStorage.getItem(key);\n return item ? JSON.parse(item) : initialValue;\n } catch (error) { return initialValue; }\n });\n const setValue = (value: any) => {\n const valueToStore = value instanceof Function ? value(storedValue) : value;\n setStoredValue(valueToStore);\n window.localStorage.setItem(key, JSON.stringify(valueToStore));\n };\n return [storedValue, setValue];\n};\n\nconst moods = [\n { emoji: '😄', label: 'Great' },\n { emoji: '😊', label: 'Good' },\n { emoji: '😐', label: 'Okay' },\n { emoji: '😟', label: 'Struggling' },\n { emoji: '🔥', label: 'In the Zone' },\n];\n\nexport const DevMoodTracker: React.FC = () => {\n const [selectedMood, setSelectedMood] = useLocalStorage('devcore_mood', null);\n\n return (\n
\n
\n

\n \n Dev Mood Tracker\n

\n

How are you feeling today?

\n
\n
\n {moods.map(mood => (\n setSelectedMood(mood.label)}\n className={`flex flex-col items-center gap-2 p-4 rounded-lg transition-all transform hover:scale-110 ${selectedMood === mood.label ? 'bg-cyan-500/20' : 'bg-slate-800/50'}`}\n >\n {mood.emoji}\n {mood.label}\n \n ))}\n
\n {selectedMood && (\n

Thanks for checking in! You're feeling: {selectedMood}

\n )}\n
\n );\n};"],"names":["useLocalStorage","key","initialValue","storedValue","setStoredValue","useState","item","value","valueToStore","moods","DevMoodTracker","selectedMood","setSelectedMood","jsxs","jsx","SparklesIcon","mood"],"mappings":"4xEAGA,MAAMA,EAAkB,CAACC,EAAaC,IAAsB,CACxD,KAAM,CAACC,EAAaC,CAAc,EAAIC,EAAAA,SAAS,IAAM,CACjD,GAAI,CACA,MAAMC,EAAO,OAAO,aAAa,QAAQL,CAAG,EAC5C,OAAOK,EAAO,KAAK,MAAMA,CAAI,EAAIJ,CACrC,MAAgB,CAAE,OAAOA,CAAc,CAC3C,CAAC,EAMD,MAAO,CAACC,EALUI,GAAe,CAC7B,MAAMC,EAAeD,aAAiB,SAAWA,EAAMJ,CAAW,EAAII,EACtEH,EAAeI,CAAY,EAC3B,OAAO,aAAa,QAAQP,EAAK,KAAK,UAAUO,CAAY,CAAC,CACjE,CAC6B,CACjC,EAEMC,EAAQ,CACV,CAAE,MAAO,KAAM,MAAO,OAAA,EACtB,CAAE,MAAO,KAAM,MAAO,MAAA,EACtB,CAAE,MAAO,KAAM,MAAO,MAAA,EACtB,CAAE,MAAO,KAAM,MAAO,YAAA,EACtB,CAAE,MAAO,KAAM,MAAO,aAAA,CAC1B,EAEaC,GAA2B,IAAM,CAC1C,KAAM,CAACC,EAAcC,CAAe,EAAIZ,EAAgB,eAAgB,IAAI,EAE5E,OACIa,EAAAA,KAAC,MAAA,CAAI,UAAU,iFACX,SAAA,CAAAA,EAAAA,KAAC,SAAA,CAAO,UAAU,OACd,SAAA,CAAAA,EAAAA,KAAC,KAAA,CAAG,UAAU,sDACV,SAAA,CAAAC,EAAAA,IAACC,EAAA,EAAa,EACdD,EAAAA,IAAC,OAAA,CAAK,UAAU,OAAO,SAAA,kBAAA,CAAgB,CAAA,EAC3C,EACAA,EAAAA,IAAC,IAAA,CAAE,UAAU,sBAAsB,SAAA,4BAAA,CAA0B,CAAA,EACjE,QACC,MAAA,CAAI,UAAU,kDACV,SAAAL,EAAM,IAAIO,GACPH,EAAAA,KAAC,SAAA,CAEG,QAAS,IAAMD,EAAgBI,EAAK,KAAK,EACzC,UAAW,4FAA4FL,IAAiBK,EAAK,MAAQ,iBAAmB,iBAAiB,GAEzK,SAAA,CAAAF,EAAAA,IAAC,OAAA,CAAK,UAAU,WAAY,SAAAE,EAAK,MAAM,EACvCF,EAAAA,IAAC,OAAA,CAAK,UAAU,+BAAgC,WAAK,KAAA,CAAM,CAAA,CAAA,EALtDE,EAAK,KAAA,CAOjB,EACL,EACCL,GACGE,EAAAA,KAAC,IAAA,CAAE,UAAU,8BAA8B,SAAA,CAAA,2CAAyCF,CAAA,CAAA,CAAa,CAAA,EAEzG,CAER"} \ No newline at end of file diff --git a/assets/DevNotesStickyPanel-eVbUsgfo.js b/assets/DevNotesStickyPanel-eVbUsgfo.js new file mode 100644 index 0000000000000000000000000000000000000000..63c77d46b825376ba21fd770c82a953fb86ef156 --- /dev/null +++ b/assets/DevNotesStickyPanel-eVbUsgfo.js @@ -0,0 +1,2 @@ +import{r as g,j as o}from"./react-_fH1j4AW.js";import{F as h}from"./index-Nqm_ElTk.js";import"./@braintree-9Zuj5s7N.js";import"./react-dom-B47xkeQg.js";import"./scheduler-DYLXRpC5.js";import"./mermaid-CwNlsT42.js";import"./dayjs-LlU9W_sF.js";import"./d3-transition-593SbTzI.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-C52G7wmG.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-Dc8HCWOS.js";import"./dompurify-J5RlrwSC.js";import"./dagre-d3-es-CXvdFQqV.js";import"./lodash-es-CKQobiyk.js";import"./d3-shape-C6amFesj.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-BS_sNva5.js";import"./cytoscape-Copgxxlq.js";import"./cytoscape-cose-bilkent-DNVwk4oY.js";import"./cose-base-HlRMd3jM.js";import"./layout-base-BVPXtQQC.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";const b=(r,n)=>{const[i,m]=g.useState(()=>{try{const s=window.localStorage.getItem(r);return s?JSON.parse(s):n}catch{return n}});return[i,s=>{const a=s instanceof Function?s(i):s;m(a),window.localStorage.setItem(r,JSON.stringify(a))}]},u=["bg-yellow-300","bg-green-300","bg-blue-300","bg-pink-300","bg-purple-300"],Tt=()=>{const[r,n]=b("devcore_notes",[]),[i,m]=g.useState(null),p=()=>{const t={id:Date.now(),text:"New note...",x:50+r.length%10*20,y:50+r.length%10*20,color:u[r.length%u.length]};n([...r,t])},s=(t,e)=>{n(r.map(l=>l.id===t?{...l,text:e}:l))},a=t=>{n(r.filter(e=>e.id!==t))},x=(t,e)=>{if(t.target.tagName==="TEXTAREA"||t.target.tagName==="BUTTON")return;const d=t.currentTarget.getBoundingClientRect();m({id:e,offsetX:t.clientX-d.left,offsetY:t.clientY-d.top})},f=t=>{if(!i)return;const e=t.currentTarget.getBoundingClientRect();n(r.map(l=>l.id===i.id?{...l,x:t.clientX-i.offsetX-e.left,y:t.clientY-i.offsetY-e.top}:l))},c=()=>m(null);return o.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8",children:[o.jsxs("header",{className:"mb-6 flex justify-between items-center",children:[o.jsxs("div",{children:[o.jsxs("h1",{className:"text-3xl font-bold text-slate-100 flex items-center",children:[o.jsx(h,{}),o.jsx("span",{className:"ml-3",children:"Dev Notes Sticky Panel"})]}),o.jsx("p",{className:"text-slate-400 mt-1",children:"A place for your thoughts, todos, and random ideas."})]}),o.jsx("button",{onClick:p,className:"px-6 py-2 bg-cyan-500 text-slate-900 font-bold rounded-md",children:"Add Note"})]}),o.jsx("div",{className:"relative flex-grow bg-slate-900/50 border-2 border-dashed border-slate-700 rounded-lg overflow-hidden",onMouseMove:f,onMouseUp:c,onMouseLeave:c,children:r.map(t=>o.jsxs("div",{className:`absolute w-48 h-48 p-2 flex flex-col shadow-lg cursor-grab active:cursor-grabbing ${t.color}`,style:{top:t.y,left:t.x,transform:(i==null?void 0:i.id)===t.id?"scale(1.05) rotate(3deg)":"scale(1)"},onMouseDown:e=>x(e,t.id),children:[o.jsx("button",{onClick:()=>a(t.id),className:"absolute -top-2 -right-2 w-6 h-6 rounded-full bg-red-500 text-white font-bold text-xs flex items-center justify-center opacity-0 hover:opacity-100",children:"×"}),o.jsx("textarea",{value:t.text,onChange:e=>s(t.id,e.target.value),className:"w-full h-full bg-transparent text-black resize-none focus:outline-none font-medium p-1"})]},t.id))})]})};export{Tt as DevNotesStickyPanel}; +//# sourceMappingURL=DevNotesStickyPanel-eVbUsgfo.js.map diff --git a/assets/DevNotesStickyPanel-eVbUsgfo.js.map b/assets/DevNotesStickyPanel-eVbUsgfo.js.map new file mode 100644 index 0000000000000000000000000000000000000000..7e3dd4ad8d2121de4977ad4e139c033defe48083 --- /dev/null +++ b/assets/DevNotesStickyPanel-eVbUsgfo.js.map @@ -0,0 +1 @@ +{"version":3,"file":"DevNotesStickyPanel-eVbUsgfo.js","sources":["../../components/features/DevNotesStickyPanel.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { FileCodeIcon } from '../icons/FeatureIcons.tsx';\n\ninterface Note {\n id: number;\n text: string;\n x: number;\n y: number;\n color: string;\n}\n\nconst useLocalStorage = (key: string, initialValue: any) => {\n const [storedValue, setStoredValue] = useState(() => {\n try {\n const item = window.localStorage.getItem(key);\n return item ? JSON.parse(item) : initialValue;\n } catch (error) { return initialValue; }\n });\n const setValue = (value: any) => {\n const valueToStore = value instanceof Function ? value(storedValue) : value;\n setStoredValue(valueToStore);\n window.localStorage.setItem(key, JSON.stringify(valueToStore));\n };\n return [storedValue, setValue];\n};\n\nconst colors = ['bg-yellow-300', 'bg-green-300', 'bg-blue-300', 'bg-pink-300', 'bg-purple-300'];\n\nexport const DevNotesStickyPanel: React.FC = () => {\n const [notes, setNotes] = useLocalStorage('devcore_notes', []);\n const [dragging, setDragging] = useState<{ id: number; offsetX: number; offsetY: number } | null>(null);\n\n const addNote = () => {\n const newNote: Note = {\n id: Date.now(),\n text: 'New note...',\n x: 50 + (notes.length % 10) * 20,\n y: 50 + (notes.length % 10) * 20,\n color: colors[notes.length % colors.length],\n };\n setNotes([...notes, newNote]);\n };\n\n const updateText = (id: number, text: string) => {\n setNotes(notes.map((n: Note) => n.id === id ? { ...n, text } : n));\n };\n \n const deleteNote = (id: number) => {\n setNotes(notes.filter((n: Note) => n.id !== id));\n };\n\n const onMouseDown = (e: React.MouseEvent, id: number) => {\n if((e.target as HTMLElement).tagName === 'TEXTAREA' || (e.target as HTMLElement).tagName === 'BUTTON') return;\n const noteElement = e.currentTarget;\n const rect = noteElement.getBoundingClientRect();\n setDragging({ id, offsetX: e.clientX - rect.left, offsetY: e.clientY - rect.top });\n };\n\n const onMouseMove = (e: React.MouseEvent) => {\n if (!dragging) return;\n const boardRect = e.currentTarget.getBoundingClientRect();\n setNotes(\n notes.map((n: Note) =>\n n.id === dragging.id\n ? { ...n, x: e.clientX - dragging.offsetX - boardRect.left, y: e.clientY - dragging.offsetY - boardRect.top }\n : n\n )\n );\n };\n\n const onMouseUp = () => setDragging(null);\n\n return (\n
\n
\n
\n

\n \n Dev Notes Sticky Panel\n

\n

A place for your thoughts, todos, and random ideas.

\n
\n \n
\n \n {notes.map((note: Note) => (\n onMouseDown(e, note.id)}\n >\n \n updateText(note.id, e.target.value)}\n className=\"w-full h-full bg-transparent text-black resize-none focus:outline-none font-medium p-1\"\n />\n
\n ))}\n \n \n );\n};"],"names":["useLocalStorage","key","initialValue","storedValue","setStoredValue","useState","item","value","valueToStore","colors","DevNotesStickyPanel","notes","setNotes","dragging","setDragging","addNote","newNote","updateText","id","text","n","deleteNote","onMouseDown","e","rect","onMouseMove","boardRect","onMouseUp","jsxs","jsx","FileCodeIcon","note"],"mappings":"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"} \ No newline at end of file diff --git a/assets/DevSoundboard-DR1g6DgI.js b/assets/DevSoundboard-DR1g6DgI.js new file mode 100644 index 0000000000000000000000000000000000000000..0ff4164d450dc82f1f8f5e431e982e9f0c6e7bd2 --- /dev/null +++ b/assets/DevSoundboard-DR1g6DgI.js @@ -0,0 +1,2 @@ +import{j as r}from"./react-_fH1j4AW.js";import{c as s}from"./index-Nqm_ElTk.js";import"./@braintree-9Zuj5s7N.js";import"./react-dom-B47xkeQg.js";import"./scheduler-DYLXRpC5.js";import"./mermaid-CwNlsT42.js";import"./dayjs-LlU9W_sF.js";import"./d3-transition-593SbTzI.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-C52G7wmG.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-Dc8HCWOS.js";import"./dompurify-J5RlrwSC.js";import"./dagre-d3-es-CXvdFQqV.js";import"./lodash-es-CKQobiyk.js";import"./d3-shape-C6amFesj.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-BS_sNva5.js";import"./cytoscape-Copgxxlq.js";import"./cytoscape-cose-bilkent-DNVwk4oY.js";import"./cose-base-HlRMd3jM.js";import"./layout-base-BVPXtQQC.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";const i=[{name:"Click",url:"https://cdn.jsdelivr.net/gh/kristopolous/musicworker-front@master/htdocs/resources/sfx/click.mp3"},{name:"Success",url:"https://cdn.jsdelivr.net/gh/kristopolous/musicworker-front@master/htdocs/resources/sfx/success.mp3"},{name:"Error",url:"https://cdn.jsdelivr.net/gh/kristopolous/musicworker-front@master/htdocs/resources/sfx/error.mp3"},{name:"Notification",url:"https://cdn.jsdelivr.net/gh/kristopolous/musicworker-front@master/htdocs/resources/sfx/notification.mp3"},{name:"Deploy",url:"https://cdn.jsdelivr.net/gh/kristopolous/musicworker-front@master/htdocs/resources/sfx/deploy.mp3"},{name:"Typing",url:"https://cdn.jsdelivr.net/gh/kristopolous/musicworker-front@master/htdocs/resources/sfx/typing.mp3"}],ar=()=>{const o=t=>{new Audio(t).play()};return r.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8",children:[r.jsxs("header",{className:"mb-6 text-center",children:[r.jsxs("h1",{className:"text-3xl font-bold text-slate-100 flex items-center justify-center",children:[r.jsx(s,{}),r.jsx("span",{className:"ml-3",children:"Dev Soundboard"})]}),r.jsx("p",{className:"text-slate-400 mt-1",children:"For when you need that satisfying sound effect."})]}),r.jsx("div",{className:"flex-grow grid grid-cols-2 md:grid-cols-3 gap-4",children:i.map(t=>r.jsx("button",{onClick:()=>o(t.url),className:"p-8 bg-slate-800/50 rounded-lg text-slate-200 font-bold text-xl hover:bg-cyan-500/20 hover:text-cyan-300 transition-colors",children:t.name},t.name))})]})};export{ar as DevSoundboard}; +//# sourceMappingURL=DevSoundboard-DR1g6DgI.js.map diff --git a/assets/DevSoundboard-DR1g6DgI.js.map b/assets/DevSoundboard-DR1g6DgI.js.map new file mode 100644 index 0000000000000000000000000000000000000000..c1ea1194ebbd8be52769fddd45518f54da3d428e --- /dev/null +++ b/assets/DevSoundboard-DR1g6DgI.js.map @@ -0,0 +1 @@ +{"version":3,"file":"DevSoundboard-DR1g6DgI.js","sources":["../../components/features/DevSoundboard.tsx"],"sourcesContent":["import React from 'react';\nimport { SparklesIcon } from '../icons/FeatureIcons.tsx';\n\nconst sounds = [\n { name: 'Click', url: 'https://cdn.jsdelivr.net/gh/kristopolous/musicworker-front@master/htdocs/resources/sfx/click.mp3' },\n { name: 'Success', url: 'https://cdn.jsdelivr.net/gh/kristopolous/musicworker-front@master/htdocs/resources/sfx/success.mp3' },\n { name: 'Error', url: 'https://cdn.jsdelivr.net/gh/kristopolous/musicworker-front@master/htdocs/resources/sfx/error.mp3' },\n { name: 'Notification', url: 'https://cdn.jsdelivr.net/gh/kristopolous/musicworker-front@master/htdocs/resources/sfx/notification.mp3' },\n { name: 'Deploy', url: 'https://cdn.jsdelivr.net/gh/kristopolous/musicworker-front@master/htdocs/resources/sfx/deploy.mp3' },\n { name: 'Typing', url: 'https://cdn.jsdelivr.net/gh/kristopolous/musicworker-front@master/htdocs/resources/sfx/typing.mp3' },\n];\n\nexport const DevSoundboard: React.FC = () => {\n \n const playSound = (url: string) => {\n new Audio(url).play();\n };\n\n return (\n
\n
\n

\n \n Dev Soundboard\n

\n

For when you need that satisfying sound effect.

\n
\n
\n {sounds.map(sound => (\n playSound(sound.url)}\n className=\"p-8 bg-slate-800/50 rounded-lg text-slate-200 font-bold text-xl hover:bg-cyan-500/20 hover:text-cyan-300 transition-colors\"\n >\n {sound.name}\n \n ))}\n
\n
\n );\n};"],"names":["sounds","DevSoundboard","playSound","url","jsxs","jsx","SparklesIcon","sound"],"mappings":"qxEAGA,MAAMA,EAAS,CACX,CAAE,KAAM,QAAS,IAAK,kGAAA,EACtB,CAAE,KAAM,UAAW,IAAK,oGAAA,EACxB,CAAE,KAAM,QAAS,IAAK,kGAAA,EACtB,CAAE,KAAM,eAAgB,IAAK,yGAAA,EAC7B,CAAE,KAAM,SAAU,IAAK,mGAAA,EACvB,CAAE,KAAM,SAAU,IAAK,mGAAA,CAC3B,EAEaC,GAA0B,IAAM,CAEzC,MAAMC,EAAaC,GAAgB,CAC/B,IAAI,MAAMA,CAAG,EAAE,KAAA,CACnB,EAEA,OACIC,EAAAA,KAAC,MAAA,CAAI,UAAU,yCACX,SAAA,CAAAA,EAAAA,KAAC,SAAA,CAAO,UAAU,mBACd,SAAA,CAAAA,EAAAA,KAAC,KAAA,CAAG,UAAU,qEACV,SAAA,CAAAC,EAAAA,IAACC,EAAA,EAAa,EACdD,EAAAA,IAAC,OAAA,CAAK,UAAU,OAAO,SAAA,gBAAA,CAAc,CAAA,EACzC,EACAA,EAAAA,IAAC,IAAA,CAAE,UAAU,sBAAsB,SAAA,iDAAA,CAA+C,CAAA,EACtF,QACC,MAAA,CAAI,UAAU,kDACV,SAAAL,EAAO,IAAIO,GACRF,EAAAA,IAAC,SAAA,CAEG,QAAS,IAAMH,EAAUK,EAAM,GAAG,EAClC,UAAU,6HAET,SAAAA,EAAM,IAAA,EAJFA,EAAM,IAAA,CAMlB,CAAA,CACL,CAAA,EACJ,CAER"} \ No newline at end of file diff --git a/assets/EnvDiffTool-TsdDFW7R.js b/assets/EnvDiffTool-TsdDFW7R.js new file mode 100644 index 0000000000000000000000000000000000000000..49605fdd5477f3a71e438b24318bb379d95e10fa --- /dev/null +++ b/assets/EnvDiffTool-TsdDFW7R.js @@ -0,0 +1,7 @@ +import{r as f,j as e}from"./react-_fH1j4AW.js";import{L as h}from"./index-Nqm_ElTk.js";import"./@braintree-9Zuj5s7N.js";import"./react-dom-B47xkeQg.js";import"./scheduler-DYLXRpC5.js";import"./mermaid-CwNlsT42.js";import"./dayjs-LlU9W_sF.js";import"./d3-transition-593SbTzI.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-C52G7wmG.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-Dc8HCWOS.js";import"./dompurify-J5RlrwSC.js";import"./dagre-d3-es-CXvdFQqV.js";import"./lodash-es-CKQobiyk.js";import"./d3-shape-C6amFesj.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-BS_sNva5.js";import"./cytoscape-Copgxxlq.js";import"./cytoscape-cose-bilkent-DNVwk4oY.js";import"./cose-base-HlRMd3jM.js";import"./layout-base-BVPXtQQC.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";const v=r=>{const p=new Map;return r.split(` +`).forEach(m=>{const s=m.trim();if(s&&!s.startsWith("#")){const i=s.indexOf("=");if(i>0){const c=s.substring(0,i),t=s.substring(i+1);p.set(c,t)}}}),p},we=()=>{const[r,p]=f.useState(`API_KEY=123 +DB_HOST=localhost +NODE_ENV=development`),[m,s]=f.useState(`API_KEY=456 +DB_HOST=localhost +FEATURE_FLAG=true`),i=f.useMemo(()=>{const t=v(r),d=v(m),x=new Set([...t.keys(),...d.keys()]),o=[];return x.forEach(l=>{const a=t.get(l),n=d.get(l);a!==void 0&&n!==void 0?o.push({key:l,valueA:a,valueB:n,type:a===n?"same":"changed"}):a!==void 0?o.push({key:l,valueA:a,valueB:"",type:"removed"}):n!==void 0&&o.push({key:l,valueA:"",valueB:n,type:"added"})}),o},[r,m]),c=t=>{switch(t){case"added":return"bg-green-500/10";case"removed":return"bg-red-500/10";case"changed":return"bg-yellow-500/10";default:return"bg-slate-800/50"}};return e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8",children:[e.jsxs("header",{className:"mb-6",children:[e.jsxs("h1",{className:"text-3xl font-bold text-slate-100 flex items-center",children:[e.jsx(h,{}),e.jsx("span",{className:"ml-3",children:"Environment Diff Tool"})]}),e.jsx("p",{className:"text-slate-400 mt-1",children:"Compare two .env files to see what's changed."})]}),e.jsxs("div",{className:"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 h-full overflow-hidden",children:[e.jsxs("div",{className:"flex flex-col h-full",children:[e.jsx("label",{htmlFor:"env-a",className:"text-sm font-medium text-slate-400 mb-2",children:"Environment A"}),e.jsx("textarea",{id:"env-a",value:r,onChange:t=>p(t.target.value),className:"flex-grow p-4 bg-slate-900 border border-slate-700 rounded-md resize-none font-mono text-sm"})]}),e.jsxs("div",{className:"flex flex-col h-full",children:[e.jsx("label",{htmlFor:"env-b",className:"text-sm font-medium text-slate-400 mb-2",children:"Environment B"}),e.jsx("textarea",{id:"env-b",value:m,onChange:t=>s(t.target.value),className:"flex-grow p-4 bg-slate-900 border border-slate-700 rounded-md resize-none font-mono text-sm"})]})]}),e.jsxs("div",{className:"mt-6",children:[e.jsx("h3",{className:"text-xl font-bold mb-2",children:"Differences"}),e.jsx("div",{className:"bg-slate-900 p-4 rounded-lg overflow-y-auto max-h-64 font-mono text-sm",children:i.map(({key:t,valueA:d,valueB:x,type:o})=>e.jsxs("div",{className:`flex p-2 rounded ${c(o)}`,children:[e.jsx("span",{className:"w-1/3 text-slate-400",children:t}),e.jsx("span",{className:"w-1/3 text-slate-300",children:o==="added"?"":d}),e.jsx("span",{className:"w-1/3 text-slate-300",children:o==="removed"?"":x})]},t))})]})]})};export{we as EnvDiffTool}; +//# sourceMappingURL=EnvDiffTool-TsdDFW7R.js.map diff --git a/assets/EnvDiffTool-TsdDFW7R.js.map b/assets/EnvDiffTool-TsdDFW7R.js.map new file mode 100644 index 0000000000000000000000000000000000000000..57ce9f9bae33836f14aec689dc98814c2cdc4494 --- /dev/null +++ b/assets/EnvDiffTool-TsdDFW7R.js.map @@ -0,0 +1 @@ +{"version":3,"file":"EnvDiffTool-TsdDFW7R.js","sources":["../../components/features/EnvDiffTool.tsx"],"sourcesContent":["\nimport React, { useState, useMemo } from 'react';\nimport { LockClosedIcon } from '../icons/FeatureIcons.tsx';\n\nconst parseEnv = (text: string): Map => {\n const map = new Map();\n text.split('\\n').forEach(line => {\n const trimmed = line.trim();\n if (trimmed && !trimmed.startsWith('#')) {\n const eqIndex = trimmed.indexOf('=');\n if (eqIndex > 0) {\n const key = trimmed.substring(0, eqIndex);\n const value = trimmed.substring(eqIndex + 1);\n map.set(key, value);\n }\n }\n });\n return map;\n};\n\nexport const EnvDiffTool: React.FC = () => {\n const [envA, setEnvA] = useState('API_KEY=123\\nDB_HOST=localhost\\nNODE_ENV=development');\n const [envB, setEnvB] = useState('API_KEY=456\\nDB_HOST=localhost\\nFEATURE_FLAG=true');\n\n const diff = useMemo(() => {\n const mapA = parseEnv(envA);\n const mapB = parseEnv(envB);\n const allKeys = new Set([...mapA.keys(), ...mapB.keys()]);\n const result: { key: string; valueA: string; valueB: string; type: 'added' | 'removed' | 'changed' | 'same' }[] = [];\n\n allKeys.forEach(key => {\n const valA = mapA.get(key);\n const valB = mapB.get(key);\n if (valA !== undefined && valB !== undefined) {\n result.push({ key, valueA: valA, valueB: valB, type: valA === valB ? 'same' : 'changed' });\n } else if (valA !== undefined) {\n result.push({ key, valueA: valA, valueB: '', type: 'removed' });\n } else if (valB !== undefined) {\n result.push({ key, valueA: '', valueB: valB, type: 'added' });\n }\n });\n return result;\n }, [envA, envB]);\n\n const getRowClass = (type: string) => {\n switch (type) {\n case 'added': return 'bg-green-500/10';\n case 'removed': return 'bg-red-500/10';\n case 'changed': return 'bg-yellow-500/10';\n default: return 'bg-slate-800/50';\n }\n };\n\n return (\n
\n
\n

\n \n Environment Diff Tool\n

\n

Compare two .env files to see what's changed.

\n
\n
\n
\n \n \n
\n
\n \n
\n
{importRule}
\n \n
\n
\n
\n
\n

\n {previewText}\n

\n
\n
\n \n );\n};"],"names":["popularFonts","FontPreviewPicker","selectedFont","setSelectedFont","useState","previewText","setPreviewText","useEffect","link","importRule","jsxs","jsx","EyeIcon","e","font"],"mappings":"uxEAGA,MAAMA,EAAe,CACjB,SAAU,YAAa,OAAQ,aAAc,SAAU,kBAAmB,UAAW,UAAW,SAAU,cAC9G,EAEaC,GAA8B,IAAM,CAC7C,KAAM,CAACC,EAAcC,CAAe,EAAIC,EAAAA,SAAS,QAAQ,EACnD,CAACC,EAAaC,CAAc,EAAIF,EAAAA,SAAS,8CAA8C,EAE7FG,EAAAA,UAAU,IAAM,CACZ,GAAIL,EAAc,CACd,MAAMM,EAAO,SAAS,cAAc,MAAM,EAC1C,OAAAA,EAAK,KAAO,2CAA2CN,EAAa,QAAQ,KAAM,GAAG,CAAC,gBACtFM,EAAK,IAAM,aACX,SAAS,KAAK,YAAYA,CAAI,EACvB,IAAM,CACT,SAAS,KAAK,YAAYA,CAAI,CAClC,CACJ,CACJ,EAAG,CAACN,CAAY,CAAC,EAEjB,MAAMO,EAAa,wDAAwDP,EAAa,QAAQ,KAAM,GAAG,CAAC,mBAE1G,OACIQ,EAAAA,KAAC,MAAA,CAAI,UAAU,yCACX,SAAA,CAAAA,EAAAA,KAAC,SAAA,CAAO,UAAU,OACd,SAAA,CAAAA,EAAAA,KAAC,KAAA,CAAG,UAAU,sDACV,SAAA,CAAAC,EAAAA,IAACC,EAAA,EAAQ,EACTD,EAAAA,IAAC,OAAA,CAAK,UAAU,OAAO,SAAA,uBAAA,CAAqB,CAAA,EAChD,EACAA,EAAAA,IAAC,IAAA,CAAE,UAAU,sBAAsB,SAAA,mDAAA,CAAiD,CAAA,EACxF,EACAD,EAAAA,KAAC,MAAA,CAAI,UAAU,0DACX,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,mEACX,SAAA,CAAAC,EAAAA,IAAC,KAAA,CAAG,UAAU,oBAAoB,SAAA,WAAQ,SACzC,MAAA,CACG,SAAA,CAAAA,MAAC,QAAA,CAAM,QAAQ,cAAc,UAAU,2CAA2C,SAAA,cAAW,EAC7FA,EAAAA,IAAC,SAAA,CAAO,GAAG,cAAc,MAAOT,EAAc,SAAUW,GAAKV,EAAgBU,EAAE,OAAO,KAAK,EAAG,UAAU,wEACnG,SAAAb,EAAa,IAAIc,GAAQH,EAAAA,IAAC,SAAA,CAAkB,MAAOG,EAAO,SAAAA,CAAA,EAApBA,CAAyB,CAAS,CAAA,CAC7E,CAAA,EACJ,SACC,MAAA,CACG,SAAA,CAAAH,MAAC,QAAA,CAAM,QAAQ,eAAe,UAAU,2CAA2C,SAAA,eAAY,EAC/FA,EAAAA,IAAC,WAAA,CAAS,GAAG,eAAe,MAAON,EAAa,SAAUQ,GAAKP,EAAeO,EAAE,OAAO,KAAK,EAAG,UAAU,kFAAA,CAAmF,CAAA,EAChM,SACC,MAAA,CACG,SAAA,CAAAF,EAAAA,IAAC,QAAA,CAAM,UAAU,2CAA2C,SAAA,kBAAe,EAC3ED,EAAAA,KAAC,MAAA,CAAI,UAAU,gBACX,SAAA,CAAAC,EAAAA,IAAC,MAAA,CAAI,UAAU,oEAAqE,SAAAF,EAAW,EAC/FE,EAAAA,IAAC,SAAA,CAAO,QAAS,IAAM,UAAU,UAAU,UAAUF,CAAU,EAAG,UAAU,wFAAwF,SAAA,MAAA,CAAI,CAAA,CAAA,CAC5K,CAAA,CAAA,CACJ,CAAA,EACJ,EACAE,EAAAA,IAAC,MAAA,CAAI,UAAU,6EACX,eAAC,IAAA,CAAE,UAAU,WAAW,MAAO,CAAE,WAAYT,CAAA,EACxC,WACL,CAAA,CACJ,CAAA,CAAA,CACJ,CAAA,EACJ,CAER"} \ No newline at end of file diff --git a/assets/GraphqlRunner-Dr-Ox09F.js b/assets/GraphqlRunner-Dr-Ox09F.js new file mode 100644 index 0000000000000000000000000000000000000000..f05f415ddc1e03c61b44cf6d85f908b95d00bf91 --- /dev/null +++ b/assets/GraphqlRunner-Dr-Ox09F.js @@ -0,0 +1,9 @@ +import{r,j as e}from"./react-_fH1j4AW.js";import{S as j}from"./index-Nqm_ElTk.js";import{L as u}from"./LoadingSpinner-C3NwW9hm.js";import{JsonTreeNavigator as N}from"./JsonTreeNavigator-CGuqWmNG.js";import"./@braintree-9Zuj5s7N.js";import"./react-dom-B47xkeQg.js";import"./scheduler-DYLXRpC5.js";import"./mermaid-CwNlsT42.js";import"./dayjs-LlU9W_sF.js";import"./d3-transition-593SbTzI.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-C52G7wmG.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-Dc8HCWOS.js";import"./dompurify-J5RlrwSC.js";import"./dagre-d3-es-CXvdFQqV.js";import"./lodash-es-CKQobiyk.js";import"./d3-shape-C6amFesj.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-BS_sNva5.js";import"./cytoscape-Copgxxlq.js";import"./cytoscape-cose-bilkent-DNVwk4oY.js";import"./cose-base-HlRMd3jM.js";import"./layout-base-BVPXtQQC.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";const v=`query { + character(id: 1) { + name + status + species + image + } +}`,Je=()=>{const[m,f]=r.useState("https://rickandmortyapi.com/graphql"),[n,h]=r.useState(v),[i,g]=r.useState(""),[p,x]=r.useState(null),[o,c]=r.useState(!1),[d,l]=r.useState(""),b=r.useCallback(async()=>{c(!0),l(""),x(null);let t={};try{i.trim()&&(t=JSON.parse(i))}catch{l("Invalid JSON in variables."),c(!1);return}try{const s=await fetch(m,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:n,variables:t})}),a=await s.json();s.ok?x(a):l(a.errors?JSON.stringify(a.errors,null,2):"An unknown error occurred.")}catch(s){const a=s instanceof Error?s.message:"An unknown error occurred.";l(`Request failed: ${a}.`)}finally{c(!1)}},[m,n,i]);return e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8",children:[e.jsxs("header",{className:"mb-6",children:[e.jsxs("h1",{className:"text-3xl font-bold text-slate-100 flex items-center",children:[e.jsx(j,{}),e.jsx("span",{className:"ml-3",children:"GraphQL Runner"})]}),e.jsx("p",{className:"text-slate-400 mt-1",children:"Send queries and mutations to a GraphQL endpoint."})]}),e.jsxs("div",{className:"flex items-center gap-2 mb-4",children:[e.jsx("input",{type:"text",value:m,onChange:t=>f(t.target.value),className:"flex-grow px-4 py-2 rounded-md bg-slate-800 border border-slate-700 font-mono text-sm"}),e.jsx("button",{onClick:b,disabled:o,className:"px-6 py-2 bg-cyan-500 text-slate-900 font-bold rounded-md hover:bg-cyan-400 disabled:bg-slate-600 flex items-center gap-2",children:o?e.jsx(u,{}):"Execute"})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6 flex-grow min-h-0",children:[e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex flex-col flex-1",children:[e.jsx("label",{className:"text-sm font-medium text-slate-400 mb-2",children:"Query"}),e.jsx("textarea",{value:n,onChange:t=>h(t.target.value),className:"flex-grow p-4 bg-slate-900 border border-slate-700 rounded-md resize-none font-mono text-sm"})]}),e.jsxs("div",{className:"flex flex-col flex-1",children:[e.jsx("label",{className:"text-sm font-medium text-slate-400 mb-2",children:"Variables (JSON)"}),e.jsx("textarea",{value:i,onChange:t=>g(t.target.value),className:"flex-grow p-4 bg-slate-900 border border-slate-700 rounded-md resize-none font-mono text-sm"})]})]}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("label",{className:"text-sm font-medium text-slate-400 mb-2",children:"Response"}),e.jsxs("div",{className:"flex-grow p-4 bg-slate-800/50 border border-slate-700/50 rounded-md overflow-y-auto",children:[o&&e.jsx("div",{className:"flex items-center justify-center h-full",children:e.jsx(u,{})}),d&&e.jsx("pre",{className:"text-red-400 whitespace-pre-wrap",children:d}),p&&!o&&e.jsx(N,{data:p}),!o&&!p&&!d&&e.jsx("div",{className:"text-slate-500 h-full flex items-center justify-center",children:"Response will appear here."})]})]})]})]})};export{Je as GraphqlRunner}; +//# sourceMappingURL=GraphqlRunner-Dr-Ox09F.js.map diff --git a/assets/GraphqlRunner-Dr-Ox09F.js.map b/assets/GraphqlRunner-Dr-Ox09F.js.map new file mode 100644 index 0000000000000000000000000000000000000000..63b17c85fcb54064348dc8d63b1c68657e68c3fc --- /dev/null +++ b/assets/GraphqlRunner-Dr-Ox09F.js.map @@ -0,0 +1 @@ +{"version":3,"file":"GraphqlRunner-Dr-Ox09F.js","sources":["../../components/features/GraphqlRunner.tsx"],"sourcesContent":["import React, { useState, useCallback } from 'react';\nimport { ServerIcon } from '../icons/FeatureIcons.tsx';\nimport { LoadingSpinner } from './shared/LoadingSpinner.tsx';\nimport { JsonTreeNavigator } from './JsonTreeNavigator.tsx';\n\nconst defaultQuery = `query {\n character(id: 1) {\n name\n status\n species\n image\n }\n}`;\n\nconst defaultVariables = `{\n \"id\": 1\n}`;\n\nexport const GraphqlRunner: React.FC = () => {\n const [endpoint, setEndpoint] = useState('https://rickandmortyapi.com/graphql');\n const [query, setQuery] = useState(defaultQuery);\n const [variables, setVariables] = useState('');\n const [response, setResponse] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState('');\n\n const handleSendRequest = useCallback(async () => {\n setIsLoading(true);\n setError('');\n setResponse(null);\n \n let parsedVariables = {};\n try {\n if (variables.trim()) {\n parsedVariables = JSON.parse(variables);\n }\n } catch (e) {\n setError('Invalid JSON in variables.');\n setIsLoading(false);\n return;\n }\n\n try {\n const res = await fetch(endpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ query, variables: parsedVariables }),\n });\n const data = await res.json();\n if (res.ok) {\n setResponse(data);\n } else {\n setError(data.errors ? JSON.stringify(data.errors, null, 2) : 'An unknown error occurred.');\n }\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : 'An unknown error occurred.';\n setError(`Request failed: ${errorMessage}.`);\n } finally {\n setIsLoading(false);\n }\n }, [endpoint, query, variables]);\n\n return (\n
\n
\n

\n \n GraphQL Runner\n

\n

Send queries and mutations to a GraphQL endpoint.

\n
\n
\n setEndpoint(e.target.value)}\n className=\"flex-grow px-4 py-2 rounded-md bg-slate-800 border border-slate-700 font-mono text-sm\"\n />\n \n {isLoading ? : 'Execute'}\n \n
\n
\n
\n
\n \n