Implement Modern Theme System from solid-chat
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 25/100
- Type d'issue
- Fonctionnalité
- Clarté
- À clarifier
- Activité
- À l'abandon
- Stack technique
- css, typescript
Piste de recherche
Commencez par comparer les points d’entrée actuels du style dans src/style.js et src/styleConstants.js avec les thèmes de solid-chat et la documentation sur le theming. Examinez les zones concernées sous src/chat/, src/widgets/, src/acl/, src/login/ et src/header/ avant de choisir une option de migration. La tâche est terminée lorsqu’une stratégie de thèmes approuvée, des composants migrés, un changement à l’exécution, des attentes en matière de compatibilité et des exemples Storybook mis à jour sont disponibles.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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
- Langage dominant
- TypeScript
- Étoiles
- 153
- Forks
- 46
- Merge moyen
- 1 j 8 h
- PR mergées (30 j)
- 7
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de SolidOS/solid-ui
-
enhancement
-
enhancement
-
Vite warning Ouverteenhancement
Difficulté 3/5 1-2 jours Accessibilité débutants 64/100
-
enhancement
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
-
enhancement
Toutes les issues de SolidOS/solid-ui
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
receptron/mulmoterminal#2264 ·
-
documentation
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
components-web-app/docs#96 ·
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
simonsobs/tileviewer#114 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100