Implement Modern Theme System from solid-chat
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- css, typescript
Hướng nghiên cứu
Bắt đầu bằng cách so sánh các điểm vào styling hiện tại trong src/style.js và src/styleConstants.js với các theme của solid-chat và tài liệu về theming. Xem xét các khu vực bị ảnh hưởng trong src/chat/, src/widgets/, src/acl/, src/login/ và src/header/ trước khi chọn một phương án migration. Để được xem là hoàn tất, cần có chiến lược theme đã được thống nhất, các component đã migration, khả năng chuyển đổi khi runtime, các kỳ vọng về compatibility và các ví dụ Storybook đã được cập nhật.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Implement Modern Theme System from solid-chat
Summary
Modernize solid-ui's styling architecture by adopting the theme system from solid-chat. This would replace the current inline JavaScript style approach with CSS variables and runtime theme switching.
Current State
solid-ui (Current)
- Method: Inline JavaScript style strings (
src/style.js) - Theming: None - hard-coded colors
- Colors: Legacy palette (
#3B5998,#eef,#888) - Pattern:
style.textInputStyle = 'background-color: #eef; padding: 0.5em; ...'
solid-chat (Target)
- Method: External CSS files with CSS variables
- Theming: 4 themes (Solid, Wave, Telegram, Signal) with runtime switching
- Colors: Modern palette with gradients and shadows
- Pattern: CSS custom properties (
--gradient-start,--text,--border)
Proposed Changes
Phase 1: Foundation
- Create
src/themes/directory - Add base
default.csswith CSS variables - Create theme loader utility
- Add CSS injection capability
Phase 2: Migration
- Convert
style.jsto reference CSS variables instead of hard-coded values - Update chat components (
chat/infinite.js,chat/message.js) - Update form components and widgets
- Maintain backward compatibility
Phase 3: Theme System
- Port solid-chat themes (Wave, Telegram, Signal)
- Add theme switcher widget
- Save preference to localStorage
- Update Storybook examples
Benefits
✅ Modern appearance - Gradients, shadows, better spacing
✅ User customization - Runtime theme switching
✅ Maintainability - CSS variables easier to manage than JS strings
✅ Performance - CSS over inline styles
✅ Consistency - Align with solid-chat visual design
Design Decisions Needed
-
Breaking changes?
- Option A: v4.0.0 (full migration, breaking)
- Option B: v3.1.0 (hybrid approach, backward compatible)
-
Default theme?
- Solid purple gradient or keep current colors initially?
-
Migration strategy?
- All at once or gradual component-by-component?
Implementation Options
Option 1: Full CSS Variable Migration (Recommended)
- Effort: 2-3 weeks
- Benefits: Best long-term solution, full theming support
- Risk: Medium - requires testing all components
Option 2: Hybrid Approach
- Effort: 1-2 weeks
- Benefits: Backward compatible, gradual migration
- Risk: Low - existing code continues to work
Option 3: Extract Key Improvements Only
- Effort: 3-5 days
- Benefits: Quick visual wins on specific components
- Risk: Very low - minimal changes
Example Theme Structure
/* src/themes/default.css */
:root {
/* Primary colors */
--theme-primary: #805ad5;
--theme-accent: #9f7aea;
--theme-gradient-start: #667eea;
--theme-gradient-end: #9f7aea;
/* Backgrounds */
--bg: #f7f8fc;
--bg-panel: #ffffff;
/* Text */
--text: #2d3748;
--text-secondary: #4a5568;
--text-muted: #a0aec0;
/* Borders */
--border: #e2e8f0;
/* Effects */
--shadow: 0 4px 20px rgba(102, 126, 234, 0.3);
--border-radius: 0.5em;
}
References
- solid-chat themes: https://github.com/bourgeoa/solid-chat/tree/gh-pages/themes
- solid-chat theming docs: https://github.com/bourgeoa/solid-chat/blob/gh-pages/themes/README.md
- Current solid-ui styles:
src/style.js,src/styleConstants.js
Related Components
The following components would benefit most from this update:
src/chat/- Chat messages and UIsrc/widgets/- Buttons, inputs, formssrc/acl/- Access control UIsrc/login/- Login formssrc/header/- Header and navigation
Questions
- Should we maintain 100% backward compatibility or accept breaking changes for v4.0?
- Which theme should be the default - current colors or new solid-chat style?
- Should theme switching be opt-in or enabled by default?
- How should this integrate with existing apps (Mashlib, etc.)?
Next Steps
- Get community feedback on approach
- Choose implementation option
- Create detailed implementation plan
- Begin with Phase 1 (foundation)
Labels: enhancement, design, breaking-change (maybe), help-wanted
Milestone: v4.0.0 or v3.1.0
- Ngôn ngữ chính
- TypeScript
- Star
- 153
- Fork
- 46
- Merge trung bình
- 1 ngày 8 giờ
- Pull request đã merge (30 ngày)
- 7
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
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 SolidOS/solid-ui
-
enhancement
-
enhancement
-
Vite warning Đang mởenhancement
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 64/100
-
enhancement
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
-
enhancement
Tất cả issue của SolidOS/solid-ui
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
0xMiden/bridge-portal#132 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
-
area:tools bug good first issue help wanted priority:P2
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 90/100
TaewoooPark/Motifcode#14 ·
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
newrelic-experimental/preflight#793 · 1 bình luận ·