Skip to content

History / DeclarativeSurface

Revisions

  • docs: Material Symbols, responsive panes, the code face, and the SSR theme mode Four things preview.7 ships, each written where someone would look for it rather than in a changelog. Icons: the pack table gains Material Symbols, and the page finally says what an icon package IS — a catalog of IconGlyph, drawn with `Glyph`, not `Icon`. With the number that matters: a page naming two glyphs emits 627 bytes out of a catalog whose source is ~8 MB, so pack size is a build cost, not a download. DeclarativeSurface: `Glyph` joins `Gap` and `DotBadge` in the named-factory table, with the reason it differs — `Icon` has two constructors and a mirrored factory can only be one of them, so a pack glyph could only be drawn with `new`, in the one place the framework promises you never need it. WriteOnceComponents: `Flexible` with a basis, which is what makes a responsive two-pane layout expressible. The example is the constructor + initializer form because `Wrap` is an init property — the first draft used a `with` expression on a class, which does not compile, and this one was compiled in a scaffolded app before being written down. Styling and ServerIntegration: `--eq-font-mono` (and why the measurer reads the same variable — a caret lands beside its character otherwise), and `UseInitialThemeMode`, including why applying on the server is inert.

    @equantictech equantictech committed Aug 10, 2026
  • docs: authoring without `new`, including your own components The factory surface had no page of its own: the README showed it, the template used it, and anyone asking "why does this compile without a `new`?" had nowhere to look. Worse, the answer everyone reaches for — "that must be a framework-only trick" — is wrong, and nothing said so. DeclarativeSurface covers the contract (named like the type, mirrors a constructor, no overloads, `children` last), how an app's own components join it through the generator, the widest-constructor rule and `[UiFactory]`, EQ3101 and EQ3102, and the one sharp edge: a factory shadows its type, but only for types that arrive through a `using` — so your own are never shadowed, and `Gap` and `DotBadge` exist for the framework's two that are. Also the `dotnet clean` note for a renamed generator, because eqc reads the generated FILES and the compiler never removes what a generator stopped writing.

    @equantictech equantictech committed Aug 9, 2026