1 line
18 KiB
JSON
1 line
18 KiB
JSON
{"ast":null,"code":"var _jsxFileName = \"/home/magh/Documents/landing_page_experimental/src/App.jsx\",\n _s = $RefreshSig$();\nimport React, { useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport './App.css';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nfunction App() {\n _s();\n const [query, setQuery] = useState('');\n // We still store multiple selected categories in an array.\n const [selectedCategories, setSelectedCategories] = useState(['science']);\n // Controls whether our custom drop-down is open.\n const [dropdownOpen, setDropdownOpen] = useState(false);\n const navigate = useNavigate();\n\n // Extended your existing maps with a \"multi\" entry for multi-category selections:\n const imageMap = {\n science: '/main.png',\n philosophy: '/philosophy.png',\n tech: '/tech.png',\n discover: '/web.png',\n multi: '/multi.png' // displayed when more than one category is selected\n };\n const headerMap = {\n science: '/header.png',\n philosophy: '/header_philosophy.png',\n tech: '/header_tech.png',\n discover: '/header_web.png',\n multi: '/header_multi.png' // displayed when more than one category is selected\n };\n const appBgMap = {\n science: '#fcfcff',\n philosophy: '#ffffff',\n tech: '#ffffff',\n discover: '#ffffff',\n multi: '#f0f0f0' // background for multi-category mode\n };\n const headerBgMap = {\n science: '#f8f8f8',\n philosophy: '#ffffff',\n tech: '#ffffff',\n discover: '#ffffff',\n multi: '#cccccc' // header background for multi-category mode\n };\n\n // If multiple categories are selected, we use 'multi' for the images and colors.\n const currentCategory = selectedCategories.length > 1 ? 'multi' : selectedCategories[0];\n\n // Called when user submits the form: pass selected categories as comma-separated\n const handleSubmit = e => {\n e.preventDefault();\n navigate(`/results?q=${encodeURIComponent(query)}&cat=${selectedCategories.join(\",\")}`);\n };\n\n // Single-click toggling logic: if category is selected, remove it; otherwise add it.\n const handleCategoryToggle = cat => {\n setSelectedCategories(prev => {\n if (prev.includes(cat)) {\n return prev.filter(c => c !== cat);\n } else {\n return [...prev, cat];\n }\n });\n };\n return /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"App\",\n style: {\n backgroundColor: appBgMap[currentCategory]\n },\n children: [/*#__PURE__*/_jsxDEV(\"header\", {\n className: \"header-bar\",\n style: {\n backgroundColor: headerBgMap[currentCategory]\n },\n children: /*#__PURE__*/_jsxDEV(\"img\", {\n src: headerMap[currentCategory],\n alt: \"Header\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 70,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 69,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(\"main\", {\n className: \"main-content\",\n children: [/*#__PURE__*/_jsxDEV(\"img\", {\n id: \"mascot-img\",\n src: imageMap[currentCategory],\n alt: \"Mascot\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 73,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n id: \"tagline\",\n children: \"a search engine for the rest of us\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 74,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"form\", {\n className: \"search-form\",\n onSubmit: handleSubmit,\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"search-container\",\n children: /*#__PURE__*/_jsxDEV(\"input\", {\n type: \"text\",\n name: \"search\",\n placeholder: \"Search...\",\n value: query,\n onChange: e => setQuery(e.target.value)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 77,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 76,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"custom-dropdown\",\n style: {\n marginTop: '1rem'\n },\n children: [/*#__PURE__*/_jsxDEV(\"button\", {\n type: \"button\",\n className: \"dropdown-button\",\n onClick: () => setDropdownOpen(!dropdownOpen),\n children: selectedCategories.length === 1 ? selectedCategories[0].charAt(0).toUpperCase() + selectedCategories[0].slice(1) : 'Multiple categories'\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 88,\n columnNumber: 13\n }, this), dropdownOpen && /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"dropdown-menu\",\n children: [\"science\", \"philosophy\", \"tech\", \"discover\"].sort((a, b) => {\n // Keep the first selected category on top, then alphabetical\n if (a === selectedCategories[0]) return -1;\n if (b === selectedCategories[0]) return 1;\n return a.localeCompare(b);\n }).map(cat => {\n const isSelected = selectedCategories.includes(cat);\n return /*#__PURE__*/_jsxDEV(\"div\", {\n className: `dropdown-item ${isSelected ? 'dropdown-item-selected' : ''}`,\n onClick: () => handleCategoryToggle(cat),\n children: cat.charAt(0).toUpperCase() + cat.slice(1)\n }, cat, false, {\n fileName: _jsxFileName,\n lineNumber: 109,\n columnNumber: 23\n }, this);\n })\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 98,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 87,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 75,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 72,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(\"footer\", {\n className: \"footer\",\n children: [/*#__PURE__*/_jsxDEV(\"a\", {\n href: \"https://git.tsugutsugugo.com/explore/repos\",\n children: \"Source\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 124,\n columnNumber: 9\n }, this), \" |\", ' ', /*#__PURE__*/_jsxDEV(\"a\", {\n href: \"https://docs.tsugutsugugo.com/\",\n children: \"Docs\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 125,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 123,\n columnNumber: 7\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 68,\n columnNumber: 5\n }, this);\n}\n_s(App, \"577N32u0rtPZsQnQ932sol5bpHM=\", false, function () {\n return [useNavigate];\n});\n_c = App;\nexport default App;\nvar _c;\n$RefreshReg$(_c, \"App\");","map":{"version":3,"names":["React","useState","useNavigate","jsxDEV","_jsxDEV","App","_s","query","setQuery","selectedCategories","setSelectedCategories","dropdownOpen","setDropdownOpen","navigate","imageMap","science","philosophy","tech","discover","multi","headerMap","appBgMap","headerBgMap","currentCategory","length","handleSubmit","e","preventDefault","encodeURIComponent","join","handleCategoryToggle","cat","prev","includes","filter","c","className","style","backgroundColor","children","src","alt","fileName","_jsxFileName","lineNumber","columnNumber","id","onSubmit","type","name","placeholder","value","onChange","target","marginTop","onClick","charAt","toUpperCase","slice","sort","a","b","localeCompare","map","isSelected","href","_c","$RefreshReg$"],"sources":["/home/magh/Documents/landing_page_experimental/src/App.jsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport './App.css';\n\nfunction App() {\n const [query, setQuery] = useState('');\n // We still store multiple selected categories in an array.\n const [selectedCategories, setSelectedCategories] = useState(['science']);\n // Controls whether our custom drop-down is open.\n const [dropdownOpen, setDropdownOpen] = useState(false);\n\n const navigate = useNavigate();\n\n // Extended your existing maps with a \"multi\" entry for multi-category selections:\n const imageMap = {\n science: '/main.png',\n philosophy: '/philosophy.png',\n tech: '/tech.png',\n discover: '/web.png',\n multi: '/multi.png', // displayed when more than one category is selected\n };\n\n const headerMap = {\n science: '/header.png',\n philosophy: '/header_philosophy.png',\n tech: '/header_tech.png',\n discover: '/header_web.png',\n multi: '/header_multi.png', // displayed when more than one category is selected\n };\n\n const appBgMap = {\n science: '#fcfcff',\n philosophy: '#ffffff',\n tech: '#ffffff',\n discover: '#ffffff',\n multi: '#f0f0f0', // background for multi-category mode\n };\n\n const headerBgMap = {\n science: '#f8f8f8',\n philosophy: '#ffffff',\n tech: '#ffffff',\n discover: '#ffffff',\n multi: '#cccccc', // header background for multi-category mode\n };\n\n // If multiple categories are selected, we use 'multi' for the images and colors.\n const currentCategory = selectedCategories.length > 1 ? 'multi' : selectedCategories[0];\n\n // Called when user submits the form: pass selected categories as comma-separated\n const handleSubmit = (e) => {\n e.preventDefault();\n navigate(`/results?q=${encodeURIComponent(query)}&cat=${selectedCategories.join(\",\")}`);\n };\n\n // Single-click toggling logic: if category is selected, remove it; otherwise add it.\n const handleCategoryToggle = (cat) => {\n setSelectedCategories((prev) => {\n if (prev.includes(cat)) {\n return prev.filter((c) => c !== cat);\n } else {\n return [...prev, cat];\n }\n });\n };\n\n return (\n <div className=\"App\" style={{ backgroundColor: appBgMap[currentCategory] }}>\n <header className=\"header-bar\" style={{ backgroundColor: headerBgMap[currentCategory] }}>\n <img src={headerMap[currentCategory]} alt=\"Header\" />\n </header>\n <main className=\"main-content\">\n <img id=\"mascot-img\" src={imageMap[currentCategory]} alt=\"Mascot\" />\n <div id=\"tagline\">a search engine for the rest of us</div>\n <form className=\"search-form\" onSubmit={handleSubmit}>\n <div className=\"search-container\">\n <input\n type=\"text\"\n name=\"search\"\n placeholder=\"Search...\"\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n />\n </div>\n\n {/* Custom drop-down: single line by default, expands downward on click */}\n <div className=\"custom-dropdown\" style={{ marginTop: '1rem' }}>\n <button\n type=\"button\"\n className=\"dropdown-button\"\n onClick={() => setDropdownOpen(!dropdownOpen)}\n >\n {selectedCategories.length === 1\n ? selectedCategories[0].charAt(0).toUpperCase() + selectedCategories[0].slice(1)\n : 'Multiple categories'}\n </button>\n {dropdownOpen && (\n <div className=\"dropdown-menu\">\n {[\"science\", \"philosophy\", \"tech\", \"discover\"]\n .sort((a, b) => {\n // Keep the first selected category on top, then alphabetical\n if (a === selectedCategories[0]) return -1;\n if (b === selectedCategories[0]) return 1;\n return a.localeCompare(b);\n })\n .map((cat) => {\n const isSelected = selectedCategories.includes(cat);\n return (\n <div\n key={cat}\n className={`dropdown-item ${isSelected ? 'dropdown-item-selected' : ''}`}\n onClick={() => handleCategoryToggle(cat)}\n >\n {cat.charAt(0).toUpperCase() + cat.slice(1)}\n </div>\n );\n })}\n </div>\n )}\n </div>\n </form>\n </main>\n <footer className=\"footer\">\n <a href=\"https://git.tsugutsugugo.com/explore/repos\">Source</a> |{' '}\n <a href=\"https://docs.tsugutsugugo.com/\">Docs</a>\n </footer>\n </div>\n );\n}\n\nexport default App;\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]} |