CoolFace
Apppublic

admin08077/Githubgemini

sourceHugging Faceotherupdated 10mo agoView on Hugging Face
0likes
EnvManager-eYmafRll.js.map1 linesDownload Raw Back to assets
1{"version":3,"file":"EnvManager-eYmafRll.js","sources":["../../components/features/EnvManager.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { downloadEnvFile } from '../../services/fileUtils.ts';\nimport { DocumentTextIcon, PlusIcon, TrashIcon, ArrowDownTrayIcon } from '../icons.tsx';\n\ninterface EnvVar {\n    id: number;\n    key: string;\n    value: string;\n}\n\nexport const EnvManager: React.FC = () => {\n    const [envVars, setEnvVars] = useState<EnvVar[]>([\n        { id: 1, key: 'VITE_API_URL', value: 'https://api.example.com' },\n        { id: 2, key: 'VITE_ENABLE_FEATURE_X', value: 'true' },\n    ]);\n\n    const handleAdd = () => {\n        setEnvVars([...envVars, { id: Date.now(), key: '', value: '' }]);\n    };\n\n    const handleUpdate = (id: number, field: 'key' | 'value', val: string) => {\n        setEnvVars(envVars.map(v => v.id === id ? { ...v, [field]: val } : v));\n    };\n\n    const handleRemove = (id: number) => {\n        setEnvVars(envVars.filter(v => v.id !== id));\n    };\n    \n    const handleDownload = () => {\n        const envObject = envVars.reduce((acc, v) => {\n            if (v.key) acc[v.key] = v.value;\n            return acc;\n        }, {} as Record<string, string>);\n        downloadEnvFile(envObject);\n    };\n\n    return (\n        <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary\">\n            <header className=\"mb-6\">\n                <h1 className=\"text-3xl font-bold flex items-center\"><DocumentTextIcon /><span className=\"ml-3\">Environment Variable Manager</span></h1>\n                <p className=\"text-text-secondary mt-1\">Create and manage your `.env` files with a simple interface.</p>\n            </header>\n            <div className=\"flex-grow bg-surface p-6 rounded-lg border border-border w-full max-w-4xl mx-auto overflow-y-auto\">\n                <div className=\"space-y-3\">\n                    <div className=\"grid grid-cols-12 gap-4 font-semibold text-sm text-text-secondary px-2\">\n                        <div className=\"col-span-5\">Key</div>\n                        <div className=\"col-span-6\">Value</div>\n                        <div className=\"col-span-1\"></div>\n                    </div>\n                    {envVars.map((v, index) => (\n                        <div key={v.id} className=\"grid grid-cols-12 gap-4 items-center\">\n                            <div className=\"col-span-5\">\n                                <input\n                                    type=\"text\"\n                                    value={v.key}\n                                    onChange={e => handleUpdate(v.id, 'key', e.target.value)}\n                                    placeholder={`KEY_${index + 1}`}\n                                    className=\"w-full p-2 bg-background border border-border rounded-md font-mono text-sm\"\n                                />\n                            </div>\n                            <div className=\"col-span-6\">\n                                <input\n                                    type=\"text\"\n                                    value={v.value}\n                                    onChange={e => handleUpdate(v.id, 'value', e.target.value)}\n                                    placeholder=\"value\"\n                                    className=\"w-full p-2 bg-background border border-border rounded-md font-mono text-sm\"\n                                />\n                            </div>\n                            <div className=\"col-span-1\">\n                                <button onClick={() => handleRemove(v.id)} className=\"p-2 text-text-secondary hover:text-red-500 rounded-md\"><TrashIcon /></button>\n                            </div>\n                        </div>\n                    ))}\n                </div>\n                 <div className=\"mt-4 pt-4 border-t border-border flex justify-between items-center\">\n                    <button onClick={handleAdd} className=\"flex items-center gap-2 px-4 py-2 bg-gray-100 text-sm font-semibold rounded-md hover:bg-gray-200\">\n                        <PlusIcon /> Add Variable\n                    </button>\n                    <button onClick={handleDownload} disabled={envVars.length === 0} className=\"btn-primary flex items-center gap-2 px-4 py-2\">\n                        <ArrowDownTrayIcon /> Download .env File\n                    </button>\n                </div>\n            </div>\n        </div>\n    );\n};\n"],"names":["EnvManager","envVars","setEnvVars","useState","handleAdd","handleUpdate","id","field","val","v","handleRemove","handleDownload","envObject","acc","downloadEnvFile","jsxs","jsx","DocumentTextIcon","index","e","TrashIcon","PlusIcon","ArrowDownTrayIcon"],"mappings":"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"}