refactor: consolidate 12 near-identical SVG icon components into one pattern
Maintainer thường phản hồi trong vòng 1 ngày
@Talha12Shiekh đang làm issue này rồi.
Từ ngày 28/7/2026.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 48/100
- Loại issue
- Tái cấu trúc
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Ít trao đổi
- Công nghệ
- javascript, react
- Lĩnh vực
- frontend
Hướng nghiên cứu
So sánh SearchSvg.js, CancelSvg.js, ThumbsUpSvg.js, ThumbsDownSvg.js, MicSvg.js, MuteSvg.js, ListenSvg.js, AutofillSvg.js, DownloadSvg.js, CustomSvg.js và Icons.js, bắt đầu với wrapper dùng chung, propTypes và cấu trúc component của chúng. Quyết định giữa các cách tiếp cận registry và sprite, sau đó xác minh rằng tất cả các icon hiện có vẫn khả dụng mà không có boilerplate bị trùng lặp.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Problem
The shared components directory has 12 individual SVG components, each with:
- The same styled wrapper import (
@emotion/styled) - The same propTypes declaration
- The same React component structure
- Only the SVG
<path>data differs
Files: SearchSvg.js, CancelSvg.js, ThumbsUpSvg.js, ThumbsDownSvg.js, MicSvg.js, MuteSvg.js, ListenSvg.js (523 lines!), AutofillSvg.js, DownloadSvg.js, CustomSvg.js, Icons.js (has 4 more icons)
~83% of each file is duplicated boilerplate.
Suggested Fix
Option A: A single icons.js registry mapping icon names to SVG path data, with one shared Icon component.
Option B: A sprite-based approach using <symbol> definitions with <use> references.
Severity
Medium — codebase bloat, ~600 lines of duplication
- Ngôn ngữ chính
- JavaScript
- Star
- 4.9k
- Fork
- 479
- Merge trung bình
- 4 ngày 10 giờ
- Pull request đã merge (30 ngày)
- 4
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của appbaseio/reactivesearch
-
ci: add Node.js version matrix, caching, and lint step to test workflowCó thể đã có người làm @Talha12Shiekh đã nhận 69 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
appbaseio/reactivesearch#2322 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
chore: add Dependabot config for automated dependency updatesCó thể đã có người làm @Talha12Shiekh đã nhận 69 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
appbaseio/reactivesearch#2321 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
security: user-controlled URL params injected directly into Redux store via JSON.parseCó thể đã có người làm @Talha12Shiekh đã nhận 69 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
appbaseio/reactivesearch#2319 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
refactor: SearchBox.js is 2692 lines — extract subcomponents for maintainabilityCó thể đã có người làm @Talha12Shiekh đã nhận 69 ngày trước. Đang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 55/100
appbaseio/reactivesearch#2323 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug: image src attributes not validated for javascript: protocol URLsCó thể đã có người làm @Talha12Shiekh đã nhận 69 ngày trước. Đang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 55/100
appbaseio/reactivesearch#2320 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của appbaseio/reactivesearch
Issue tương tự
-
triage-needed
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
MicrosoftDocs/edge-developer#3970 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
agent/scanner hive/hosted-available-lke648397-260827-5n31 quality testing
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
Maintainer thường phản hồi trong vòng 1 ngày
-
PWA stores a grouped number entry 1000x too small in German localeCó thể đã có người làm @Minhal128 đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Add: YRF MusicĐang mởcheck:passed feeds:add
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
iptv-org/database#37102 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 9 ngày
-
[workshop-sim] Repair: Add a fallback sample .lock.yml to the Agentic Workflows Intro Activity 1Đang mởfeedback simulation workshop
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
githubnext/gh-aw-workshop#4328 ·
Maintainer thường phản hồi trong vòng 1 ngày