{"ast":null,"code":"var _jsxFileName = \"/Users/dwindown/CascadeProjects/developer-tools/src/pages/Home.js\",\n _s = $RefreshSig$();\nimport React, { useState } from 'react';\nimport { Search, Code, Link2, FileText, Hash, RefreshCw, GitCompare, Database } from 'lucide-react';\nimport ToolCard from '../components/ToolCard';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nconst Home = () => {\n _s();\n const [searchTerm, setSearchTerm] = useState('');\n const tools = [{\n icon: Code,\n title: 'JSON Encoder/Decoder',\n description: 'Format, validate, and minify JSON data with syntax highlighting',\n path: '/json',\n tags: ['JSON', 'Format', 'Validate']\n }, {\n icon: Database,\n title: 'Serialize Encoder/Decoder',\n description: 'Encode and decode serialized data (PHP serialize format)',\n path: '/serialize',\n tags: ['PHP', 'Serialize', 'Unserialize']\n }, {\n icon: Link2,\n title: 'URL Encoder/Decoder',\n description: 'Encode and decode URLs and query parameters',\n path: '/url',\n tags: ['URL', 'Encode', 'Decode']\n }, {\n icon: Hash,\n title: 'Base64 Encoder/Decoder',\n description: 'Convert text to Base64 and back with support for files',\n path: '/base64',\n tags: ['Base64', 'Encode', 'Binary']\n }, {\n icon: RefreshCw,\n title: 'CSV ↔ JSON Converter',\n description: 'Convert between CSV and JSON formats with custom delimiters',\n path: '/csv-json',\n tags: ['CSV', 'JSON', 'Convert']\n }, {\n icon: FileText,\n title: 'Code Beautifier/Minifier',\n description: 'Format and minify JSON, XML, SQL, CSS, and HTML code',\n path: '/beautifier',\n tags: ['Format', 'Minify', 'Beautify']\n }, {\n icon: GitCompare,\n title: 'Text Diff Checker',\n description: 'Compare two texts and highlight differences line by line',\n path: '/diff',\n tags: ['Diff', 'Compare', 'Text']\n }];\n const filteredTools = tools.filter(tool => tool.title.toLowerCase().includes(searchTerm.toLowerCase()) || tool.description.toLowerCase().includes(searchTerm.toLowerCase()) || tool.tags.some(tag => tag.toLowerCase().includes(searchTerm.toLowerCase())));\n return /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"max-w-6xl mx-auto\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"text-center mb-12\",\n children: [/*#__PURE__*/_jsxDEV(\"h1\", {\n className: \"text-4xl font-bold text-gray-900 dark:text-white mb-4\",\n children: \"Developer Tools\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 70,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"text-xl text-gray-600 dark:text-gray-300 mb-8\",\n children: \"Essential utilities for web developers - fast, local, and easy to use\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 73,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"relative max-w-md mx-auto\",\n children: [/*#__PURE__*/_jsxDEV(Search, {\n className: \"absolute left-3 top-1/2 transform -translate-y-1/2 h-5 w-5 text-gray-400\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 79,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"input\", {\n type: \"text\",\n placeholder: \"Search tools...\",\n value: searchTerm,\n onChange: e => setSearchTerm(e.target.value),\n className: \"w-full pl-10 pr-4 py-3 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 focus:ring-2 focus:ring-primary-500 focus:border-transparent\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 80,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 78,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 69,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\",\n children: filteredTools.map((tool, index) => /*#__PURE__*/_jsxDEV(ToolCard, {\n icon: tool.icon,\n title: tool.title,\n description: tool.description,\n path: tool.path,\n tags: tool.tags\n }, index, false, {\n fileName: _jsxFileName,\n lineNumber: 93,\n columnNumber: 11\n }, this))\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 91,\n columnNumber: 7\n }, this), filteredTools.length === 0 && /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"text-center py-12\",\n children: /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"text-gray-500 dark:text-gray-400 text-lg\",\n children: [\"No tools found matching \\\"\", searchTerm, \"\\\"\"]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 107,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 106,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"mt-16 grid grid-cols-1 md:grid-cols-3 gap-8\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"text-center\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"bg-primary-100 dark:bg-primary-900 rounded-full w-16 h-16 flex items-center justify-center mx-auto mb-4\",\n children: /*#__PURE__*/_jsxDEV(RefreshCw, {\n className: \"h-8 w-8 text-primary-600\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 117,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 116,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"h3\", {\n className: \"text-lg font-semibold text-gray-900 dark:text-white mb-2\",\n children: \"Lightning Fast\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 119,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"text-gray-600 dark:text-gray-300\",\n children: \"All processing happens locally in your browser for maximum speed and privacy\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 122,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 115,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"text-center\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"bg-primary-100 dark:bg-primary-900 rounded-full w-16 h-16 flex items-center justify-center mx-auto mb-4\",\n children: /*#__PURE__*/_jsxDEV(FileText, {\n className: \"h-8 w-8 text-primary-600\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 129,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 128,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"h3\", {\n className: \"text-lg font-semibold text-gray-900 dark:text-white mb-2\",\n children: \"Handle Large Files\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 131,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"text-gray-600 dark:text-gray-300\",\n children: \"Process large text files and data with ease, no size limitations\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 134,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 127,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"text-center\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"bg-primary-100 dark:bg-primary-900 rounded-full w-16 h-16 flex items-center justify-center mx-auto mb-4\",\n children: /*#__PURE__*/_jsxDEV(Code, {\n className: \"h-8 w-8 text-primary-600\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 141,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 140,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"h3\", {\n className: \"text-lg font-semibold text-gray-900 dark:text-white mb-2\",\n children: \"Developer Friendly\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 143,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"text-gray-600 dark:text-gray-300\",\n children: \"Clean interface with syntax highlighting and easy copy-paste functionality\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 146,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 139,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 114,\n columnNumber: 7\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 67,\n columnNumber: 5\n }, this);\n};\n_s(Home, \"a1cMJ8t0eYFnsCEdGcHtaGJdbCM=\");\n_c = Home;\nexport default Home;\nvar _c;\n$RefreshReg$(_c, \"Home\");","map":{"version":3,"names":["React","useState","Search","Code","Link2","FileText","Hash","RefreshCw","GitCompare","Database","ToolCard","jsxDEV","_jsxDEV","Home","_s","searchTerm","setSearchTerm","tools","icon","title","description","path","tags","filteredTools","filter","tool","toLowerCase","includes","some","tag","className","children","fileName","_jsxFileName","lineNumber","columnNumber","type","placeholder","value","onChange","e","target","map","index","length","_c","$RefreshReg$"],"sources":["/Users/dwindown/CascadeProjects/developer-tools/src/pages/Home.js"],"sourcesContent":["import React, { useState } from 'react';\nimport { Search, Code, Link2, FileText, Hash, RefreshCw, GitCompare, Database } from 'lucide-react';\nimport ToolCard from '../components/ToolCard';\n\nconst Home = () => {\n const [searchTerm, setSearchTerm] = useState('');\n\n const tools = [\n {\n icon: Code,\n title: 'JSON Encoder/Decoder',\n description: 'Format, validate, and minify JSON data with syntax highlighting',\n path: '/json',\n tags: ['JSON', 'Format', 'Validate']\n },\n {\n icon: Database,\n title: 'Serialize Encoder/Decoder',\n description: 'Encode and decode serialized data (PHP serialize format)',\n path: '/serialize',\n tags: ['PHP', 'Serialize', 'Unserialize']\n },\n {\n icon: Link2,\n title: 'URL Encoder/Decoder',\n description: 'Encode and decode URLs and query parameters',\n path: '/url',\n tags: ['URL', 'Encode', 'Decode']\n },\n {\n icon: Hash,\n title: 'Base64 Encoder/Decoder',\n description: 'Convert text to Base64 and back with support for files',\n path: '/base64',\n tags: ['Base64', 'Encode', 'Binary']\n },\n {\n icon: RefreshCw,\n title: 'CSV ↔ JSON Converter',\n description: 'Convert between CSV and JSON formats with custom delimiters',\n path: '/csv-json',\n tags: ['CSV', 'JSON', 'Convert']\n },\n {\n icon: FileText,\n title: 'Code Beautifier/Minifier',\n description: 'Format and minify JSON, XML, SQL, CSS, and HTML code',\n path: '/beautifier',\n tags: ['Format', 'Minify', 'Beautify']\n },\n {\n icon: GitCompare,\n title: 'Text Diff Checker',\n description: 'Compare two texts and highlight differences line by line',\n path: '/diff',\n tags: ['Diff', 'Compare', 'Text']\n }\n ];\n\n const filteredTools = tools.filter(tool =>\n tool.title.toLowerCase().includes(searchTerm.toLowerCase()) ||\n tool.description.toLowerCase().includes(searchTerm.toLowerCase()) ||\n tool.tags.some(tag => tag.toLowerCase().includes(searchTerm.toLowerCase()))\n );\n\n return (\n
\n Essential utilities for web developers - fast, local, and easy to use\n
\n \n {/* Search */}\n\n No tools found matching \"{searchTerm}\"\n
\n\n All processing happens locally in your browser for maximum speed and privacy\n
\n\n Process large text files and data with ease, no size limitations\n
\n\n \n Clean interface with syntax highlighting and easy copy-paste functionality\n
\n