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
+14
View File
@@ -0,0 +1,14 @@
<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">Arabesque · 阿拉贝斯克</title>
<desc id="desc">修长的灰玫瑰线描舞者,侧身单腿站立,后腿伸直,手臂与脚尖以自然收细的曲线舒展。</desc>
<g stroke="#9c5268" stroke-width="1.65" stroke-linecap="round" stroke-linejoin="round">
<path d="M51 39C64 39 78 34 91 29L97 26C99 26 98 28 96 29C84 36 68 44 53 46Z" fill="#fff4ed"/>
<path d="M43 31C44 35 43 38 40 39C31 39 23 36 15 33L9 30C7 29 7 31 9 32C17 39 28 43 39 44C43 44 46 45 48 48C51 52 51 58 54 63C55 66 55 68 54 72C52 81 55 91 56 98C57 104 57 110 56 115L49 118C47 119 47 120 50 120H59C61 120 61 119 60 117C60 111 60 104 61 98C62 88 65 80 62 73C72 72 83 66 94 62C103 59 112 54 119 51C121 50 121 49 119 49L108 53C97 56 87 59 78 61C71 63 66 66 62 63C58 59 57 53 55 48C53 43 48 39 48 35L48 30Z" fill="#fff4ed"/>
<path d="M42 39C45 43 49 43 51 40C53 43 54 47 55 50C56 56 58 60 62 64L65 67C64 70 63 73 60 75C57 71 54 70 53 66C52 61 52 56 50 52C48 48 46 46 42 45Z" fill="#ead1d7"/>
<path d="M52 62C55 62 58 63 60 65" stroke="#bd8292" stroke-width="1.2"/>
<path d="M47 18C43 16 39 18 38 22L38 25L36 27C35 28 37 28 38 28C38 32 40 34 43 34C47 33 50 29 50 25C50 22 49 19 47 18Z" fill="#fff4ed"/>
<path d="M38 23C42 23 45 21 45 18C49 18 51 21 50 25" fill="#ead1d7"/>
<path d="M49 19C52 20 55 18 54 15C53 12 49 13 48 16" fill="#ead1d7"/>
<path d="M56 114L60 115M106 54L108 57" stroke-width="1.2"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB