mirror of
https://github.com/The-Low-Code-Foundation/OpenNoodl.git
synced 2026-03-08 01:53:30 +01:00
Covers: hex/rgb color detection, spacing detection, variant candidate threshold logic, toSuggestions ordering, stable IDs, edge cases. Infra note: tests in tests/models/ — use 'npm run test:editor' not 'npx jest' directly (webpack build required by test-editor.ts script). 'npx jest' alone hangs on webpack. Move tests to tests/models/ not tests/services/ — transform config only covers models/ path.
3.8 KiB
3.8 KiB
Phase 9: Styles Overhaul — Richard's Progress
Branch: cline-dev-richard
Sprint 1 — 18 Feb 2026
STYLE-005: Smart Style Suggestion Engine ✅ (committed 05379c9)
Files created:
packages/noodl-editor/src/editor/src/services/StyleAnalyzer/types.ts— TypeScript interfaces:ElementReference,RepeatedValue,VariantCandidate,StyleAnalysisResult,StyleSuggestion,StyleAnalysisOptions,TokenModelLike,SUGGESTION_THRESHOLDSpackages/noodl-editor/src/editor/src/services/StyleAnalyzer/StyleAnalyzer.ts— Static analyzer class:analyzeProject(options?)— scans all visual nodes for repeated raw colors/spacing (threshold: 3) and variant candidates (threshold: 3 overrides)analyzeNode(nodeId)— per-node analysis for property panel integrationtoSuggestions(result)— converts analysis to orderedStyleSuggestion[]TokenModelLikeinjected via options to avoid static singleton coupling
packages/noodl-editor/src/editor/src/services/StyleAnalyzer/SuggestionActionHandler.ts—executeSuggestionAction():- repeated-color/spacing → calls
tokenModel.setToken()+ replaces all occurrences withvar(--token-name) - variant-candidate → sets
_variantparam on node
- repeated-color/spacing → calls
packages/noodl-editor/src/editor/src/services/StyleAnalyzer/index.ts— barrel exportpackages/noodl-core-ui/src/components/StyleSuggestions/SuggestionBanner.tsx— Compact banner UI (accept / ignore / never-show)packages/noodl-core-ui/src/components/StyleSuggestions/SuggestionBanner.module.scss— Styled with CSS tokens onlypackages/noodl-core-ui/src/components/StyleSuggestions/index.ts— barrel exportpackages/noodl-editor/src/editor/src/hooks/useStyleSuggestions.ts— Hook: runs analyzer on mount, exposesactiveSuggestion,pendingCount,dismissSession,dismissPermanent,refresh
Pending (next session):
- Unit tests for
StyleAnalyzer(value detection, threshold logic,toSuggestionsordering) - Wire
SuggestionBannerintoElementStyleSection/ property panel - Consider debounced auto-refresh on
componentAdded/nodeParametersChangedevents
Previously Completed (before Sprint 1)
STYLE-001: Token System Enhancement ✅
StyleTokensModel— CRUD for design tokensTokenResolver— resolves CSS var referencesDEFAULT_TOKENS— baseline token setTOKEN_CATEGORIES/TOKEN_CATEGORY_GROUPS— category definitions
STYLE-002: Element Configs ✅
ElementConfigRegistry— maps node types toElementConfigButtonConfig,GroupConfig,TextConfig,TextInputConfig,CheckboxConfigVariantSelectorcomponent
STYLE-003: Style Presets ✅
StylePresetsModel— manages presets- 5 presets: Modern, Minimal, Playful, Enterprise, Soft
PresetCard,PresetSelectorUI components
STYLE-004: Property Panel Integration ✅
ElementStyleSection— groups style props with token pickerSizePicker— visual size selectorTokenPicker— token autocomplete input- Property panel HTML + TS wired up
Outstanding Issues
| Issue | Status |
|---|---|
StyleTokensModel.setToken() — verify method name matches actual API |
⚠️ Needs verification before action handler is used |
node.setParameter() / node.getParameter() — verify these are valid NodeGraphNode methods |
⚠️ Needs verification |
| StyleAnalyzer unit tests | 📋 Planned |