feat: add project icon picker component and integrate with project management

- Implemented ProjectIconPicker component for selecting project icons.
- Created ProjectIcon component to display selected icons.
- Updated calendar page to remove unused PageHeading component.
- Modified growth page to enhance UI and improve text clarity.
- Refactored index page to include project icons and improve layout.
- Added mine page for user profile management with avatar selection.
- Introduced projects-sort page for managing project order with drag-and-drop functionality.
- Enhanced projects page to allow icon selection when adding or editing projects.
- Updated record page to streamline user experience and improve form actions.
- Adjusted practice service to support project icon management.
- Added tests for project saving functionality to ensure correct handling of icons.
- Updated global type definitions to support SVG and PNG imports.
This commit is contained in:
yuxuanhui
2026-09-29 18:40:25 +08:00
parent 9644a68d07
commit b0c62d461e
71 changed files with 1305 additions and 125 deletions
+16
View File
@@ -0,0 +1,16 @@
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 128 128" fill="none" role="img" aria-labelledby="title desc">
<title id="title">足髋训练</title>
<desc id="desc">坐姿舞者一腿屈曲外展、一腿向前伸展并勾起脚尖,以足部与髋部的轮廓表达基础训练。</desc>
<g stroke="#9c5268" stroke-width="1.65" stroke-linecap="round" stroke-linejoin="round">
<path d="M16 113H114" stroke="#d8b6bf" stroke-width="1.2"/>
<path d="M48 74C58 74 73 77 80 85C85 91 85 97 79 101L62 108C58 109 56 108 59 106L73 98C76 96 76 93 73 91L51 86Z" fill="#fff4ed"/>
<path d="M41 37C43 41 41 44 38 46C35 55 32 67 30 78L26 94L19 97C17 98 18 100 21 99L30 98C31 98 32 97 32 95L36 79L42 60C44 66 44 70 42 77C40 83 43 88 49 89C62 91 76 99 91 103C97 105 102 106 108 105C111 104 112 101 111 97L112 87C112 85 110 85 109 88L106 96C105 99 103 100 100 99L78 88C68 83 60 80 53 79C56 69 52 60 53 51C52 47 48 44 47 41L47 36Z" fill="#fff4ed"/>
<path d="M39 47C42 50 47 50 50 46L53 51C52 61 56 70 53 79C58 80 61 81 64 82C62 86 59 89 56 91L49 89C43 88 40 83 42 77C44 70 44 66 42 60L37 56Z" fill="#ead1d7"/>
<path d="M51 48C56 53 59 62 62 70L70 82L76 85C78 86 77 88 75 87L68 85C65 81 61 77 58 73C54 67 50 61 48 55" fill="#fff4ed"/>
<path d="M43 75C46 77 50 77 53 77M103 98L108 101" stroke="#bd8292" stroke-width="1.2"/>
<path d="M43 24C39 22 40 18 44 18C48 18 50 21 47 24" fill="#ead1d7"/>
<path d="M39 25C42 22 47 23 49 27C51 32 48 38 44 39C40 39 37 34 37 30C37 28 38 26 39 25Z" fill="#fff4ed"/>
<path d="M37 30C41 30 44 27 45 24C48 26 49 28 49 30" fill="#ead1d7"/>
<path d="M115 95C118 91 118 87 116 83" stroke="#bd8292" stroke-width="1.2"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB