1 line
11 KiB
JSON
1 line
11 KiB
JSON
{"ast":null,"code":"var _jsxFileName = \"D:\\\\aiproject\\\\goAgent\\\\todo\\\\client\\\\src\\\\components\\\\TodoItem.js\";\nimport React from 'react';\nimport styled from 'styled-components';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nconst ItemContainer = styled.div`\n display: flex;\n align-items: center;\n padding: 16px;\n background: ${props => props.completed ? '#f8f9fa' : 'white'};\n border: 2px solid ${props => props.completed ? '#e9ecef' : '#f0f0f0'};\n border-radius: 12px;\n transition: all 0.3s ease;\n cursor: pointer;\n opacity: ${props => props.completed ? 0.7 : 1};\n\n &:hover {\n border-color: ${props => props.completed ? '#e9ecef' : '#667eea'};\n box-shadow: ${props => props.completed ? 'none' : '0 4px 12px rgba(102, 126, 234, 0.1)'};\n }\n`;\n_c = ItemContainer;\nconst PriorityIndicator = styled.div`\n width: 12px;\n height: 12px;\n border-radius: 50%;\n background-color: ${props => props.color};\n margin-right: 16px;\n flex-shrink: 0;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n`;\n_c2 = PriorityIndicator;\nconst TodoContent = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 4px;\n`;\n_c3 = TodoContent;\nconst TodoTitle = styled.span`\n font-size: 16px;\n color: ${props => props.completed ? '#6c757d' : '#333'};\n text-decoration: ${props => props.completed ? 'line-through' : 'none'};\n font-weight: 500;\n line-height: 1.4;\n`;\n_c4 = TodoTitle;\nconst PriorityLabel = styled.span`\n font-size: 12px;\n color: ${props => props.color};\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n`;\n_c5 = PriorityLabel;\nconst CheckButton = styled.button`\n width: 24px;\n height: 24px;\n border-radius: 50%;\n border: 2px solid ${props => props.completed ? '#28a745' : '#dee2e6'};\n background: ${props => props.completed ? '#28a745' : 'white'};\n cursor: pointer;\n transition: all 0.3s ease;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n &:hover {\n border-color: #28a745;\n background: ${props => props.completed ? '#28a745' : 'rgba(40, 167, 69, 0.1)'};\n }\n\n &::after {\n content: '✓';\n color: white;\n font-size: 14px;\n font-weight: bold;\n opacity: ${props => props.completed ? 1 : 0};\n transition: opacity 0.3s ease;\n }\n`;\n_c6 = CheckButton;\nconst priorityConfig = {\n low: {\n color: '#95a5a6',\n label: '低'\n },\n medium: {\n color: '#3498db',\n label: '中'\n },\n high: {\n color: '#e67e22',\n label: '高'\n },\n urgent: {\n color: '#e74c3c',\n label: '急'\n }\n};\nfunction TodoItem({\n todo,\n onToggle\n}) {\n const priority = priorityConfig[todo.priority] || priorityConfig.medium;\n const handleClick = () => {\n onToggle(todo.id, !todo.completed);\n };\n return /*#__PURE__*/_jsxDEV(ItemContainer, {\n completed: todo.completed,\n onClick: handleClick,\n children: [/*#__PURE__*/_jsxDEV(PriorityIndicator, {\n color: priority.color\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 98,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(TodoContent, {\n children: [/*#__PURE__*/_jsxDEV(TodoTitle, {\n completed: todo.completed,\n children: todo.title\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 101,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(PriorityLabel, {\n color: priority.color,\n children: [priority.label, \"\\u4F18\\u5148\\u7EA7\"]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 104,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 100,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(CheckButton, {\n completed: todo.completed\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 109,\n columnNumber: 7\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 97,\n columnNumber: 5\n }, this);\n}\n_c7 = TodoItem;\nexport default TodoItem;\nvar _c, _c2, _c3, _c4, _c5, _c6, _c7;\n$RefreshReg$(_c, \"ItemContainer\");\n$RefreshReg$(_c2, \"PriorityIndicator\");\n$RefreshReg$(_c3, \"TodoContent\");\n$RefreshReg$(_c4, \"TodoTitle\");\n$RefreshReg$(_c5, \"PriorityLabel\");\n$RefreshReg$(_c6, \"CheckButton\");\n$RefreshReg$(_c7, \"TodoItem\");","map":{"version":3,"names":["React","styled","jsxDEV","_jsxDEV","ItemContainer","div","props","completed","_c","PriorityIndicator","color","_c2","TodoContent","_c3","TodoTitle","span","_c4","PriorityLabel","_c5","CheckButton","button","_c6","priorityConfig","low","label","medium","high","urgent","TodoItem","todo","onToggle","priority","handleClick","id","onClick","children","fileName","_jsxFileName","lineNumber","columnNumber","title","_c7","$RefreshReg$"],"sources":["D:/aiproject/goAgent/todo/client/src/components/TodoItem.js"],"sourcesContent":["import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst ItemContainer = styled.div`\r\n display: flex;\r\n align-items: center;\r\n padding: 16px;\r\n background: ${props => props.completed ? '#f8f9fa' : 'white'};\r\n border: 2px solid ${props => props.completed ? '#e9ecef' : '#f0f0f0'};\r\n border-radius: 12px;\r\n transition: all 0.3s ease;\r\n cursor: pointer;\r\n opacity: ${props => props.completed ? 0.7 : 1};\r\n\r\n &:hover {\r\n border-color: ${props => props.completed ? '#e9ecef' : '#667eea'};\r\n box-shadow: ${props => props.completed ? 'none' : '0 4px 12px rgba(102, 126, 234, 0.1)'};\r\n }\r\n`;\r\n\r\nconst PriorityIndicator = styled.div`\r\n width: 12px;\r\n height: 12px;\r\n border-radius: 50%;\r\n background-color: ${props => props.color};\r\n margin-right: 16px;\r\n flex-shrink: 0;\r\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\r\n`;\r\n\r\nconst TodoContent = styled.div`\r\n flex: 1;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 4px;\r\n`;\r\n\r\nconst TodoTitle = styled.span`\r\n font-size: 16px;\r\n color: ${props => props.completed ? '#6c757d' : '#333'};\r\n text-decoration: ${props => props.completed ? 'line-through' : 'none'};\r\n font-weight: 500;\r\n line-height: 1.4;\r\n`;\r\n\r\nconst PriorityLabel = styled.span`\r\n font-size: 12px;\r\n color: ${props => props.color};\r\n font-weight: 600;\r\n text-transform: uppercase;\r\n letter-spacing: 0.5px;\r\n`;\r\n\r\nconst CheckButton = styled.button`\r\n width: 24px;\r\n height: 24px;\r\n border-radius: 50%;\r\n border: 2px solid ${props => props.completed ? '#28a745' : '#dee2e6'};\r\n background: ${props => props.completed ? '#28a745' : 'white'};\r\n cursor: pointer;\r\n transition: all 0.3s ease;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-shrink: 0;\r\n\r\n &:hover {\r\n border-color: #28a745;\r\n background: ${props => props.completed ? '#28a745' : 'rgba(40, 167, 69, 0.1)'};\r\n }\r\n\r\n &::after {\r\n content: '✓';\r\n color: white;\r\n font-size: 14px;\r\n font-weight: bold;\r\n opacity: ${props => props.completed ? 1 : 0};\r\n transition: opacity 0.3s ease;\r\n }\r\n`;\r\n\r\nconst priorityConfig = {\r\n low: { color: '#95a5a6', label: '低' },\r\n medium: { color: '#3498db', label: '中' },\r\n high: { color: '#e67e22', label: '高' },\r\n urgent: { color: '#e74c3c', label: '急' }\r\n};\r\n\r\nfunction TodoItem({ todo, onToggle }) {\r\n const priority = priorityConfig[todo.priority] || priorityConfig.medium;\r\n\r\n const handleClick = () => {\r\n onToggle(todo.id, !todo.completed);\r\n };\r\n\r\n return (\r\n <ItemContainer completed={todo.completed} onClick={handleClick}>\r\n <PriorityIndicator color={priority.color} />\r\n \r\n <TodoContent>\r\n <TodoTitle completed={todo.completed}>\r\n {todo.title}\r\n </TodoTitle>\r\n <PriorityLabel color={priority.color}>\r\n {priority.label}优先级\r\n </PriorityLabel>\r\n </TodoContent>\r\n \r\n <CheckButton completed={todo.completed} />\r\n </ItemContainer>\r\n );\r\n}\r\n\r\nexport default TodoItem; "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]} |