Presentational, DI-free display primitives shared across the AI configuration pages: badges, the
titled section container, the empty-state placeholder, the "Add …" action, the markdown description
host, the in-list filter input and the item detail header. Grouped here (rather than one file per
component) so that the small, stateless building blocks live together. Controls that edit a
preference value live in ai-configuration-controls.tsx, and larger composites (item rows, setting
rows and cards) keep their own files.
All classes are prefixed ai-configuration- and are styled in ai-configuration-components.css.
Presentational, DI-free display primitives shared across the AI configuration pages: badges, the titled section container, the empty-state placeholder, the "Add …" action, the markdown description host, the in-list filter input and the item detail header. Grouped here (rather than one file per component) so that the small, stateless building blocks live together. Controls that edit a preference value live in
ai-configuration-controls.tsx, and larger composites (item rows, setting rows and cards) keep their own files.All classes are prefixed
ai-configuration-and are styled inai-configuration-components.css.