You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
CLI templates and package components drift apart #52
Every component exists in up to three copies: the NuGet package (src/ShellUI.Components), the CLI templates (src/ShellUI.Templates) and the demo app. They have drifted: about 50 components differ between package and template, and the APIs don't always match. Examples:
Pagination: the template raises OnPageChange, the package CurrentPageChanged.
Sheet / Drawer: the CLI version needs Compositional="true", the package detects it.
Code written against the docs can then work with one install method and not the other.
Proposal
Reconcile the differences component by component, keeping the better of each copy (worst offenders: AppSidebar, Toast, DatePicker, Carousel, HoverCard, ThemeToggle, TimePicker, Select, Popover, Stepper, Pagination, Tabs).
Generate the CLI templates from the package components at build time, with rules for the namespace, the JS path (module import vs window.ShellUI) and the ClassName alias.
Have the demo install everything through the CLI.
Extend TemplateSyncTests to every component, with an explicit allowed-drift list.
This is large; it can be split into one PR per group of components.
Done in #63, #65, #66 and #68. 210 of 217 package components now match their CLI templates. The other 7 are recorded as allowed drift in TemplateSyncTests (CopyButton, CommandPalette, InputOTP and SidebarProvider reach JS differently; AppSidebar is the dashboard block; Resizable is #67), plus ShellUILogo, which has no template. The sync tests cover every reconciled component, so new drift fails CI.
Activity
fix: reconcile package and CLI template drift (batch 1) (#63)
fix: reconcile package and CLI template drift (batch 2) (#65)
fix: reconcile package and CLI template drift (batch 3) (#66)
fix: bring the Stepper, Input, Textarea, Sheet and Drawer templates u…
Shewart commentedon Oct 18, 2026
Done in #63, #65, #66 and #68. 210 of 217 package components now match their CLI templates. The other 7 are recorded as allowed drift in TemplateSyncTests (CopyButton, CommandPalette, InputOTP and SidebarProvider reach JS differently; AppSidebar is the dashboard block; Resizable is #67), plus ShellUILogo, which has no template. The sync tests cover every reconciled component, so new drift fails CI.