fix(uix audit): align morfo sema scope + remove Provider leak on 3 eidos namespaces

Section 4.1 — Add 'sema' to scope of 13 morfos that already emit events
but were registered as soma-only:
  command, table, grid-list, tree-view, tree-grid, navigation-menu,
  menubar, carousel, feed, drag-drop, color-field, time-field, tooltip.

Section 4.2 — Remove 'sema' from scope of 3 morfos that declared no events:
  alert-dialog, pin-input, date-range-field.

Section 5.1 — Drop `.Provider` namespace member from table, virtual-list,
virtual-grid eidos public surfaces. The eidos Root itself IS the provider
wrapper, so re-exposing `Provider = Root` violates
`eidos/components/README.md` rule 3. Internal usages of `<Table.Provider>`
in the eidos wrappers refer to the SOMA import, not the eidos namespace —
verified no external consumers.

Test result unchanged: 2391/2397 passing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
active-uix
dev 5 months ago
parent 12a7e5cfd3
commit f13103e9a9

@ -50,7 +50,6 @@ import RowDetailTrigger from './table-row-detail-trigger.svelte';
import SortButton from './table-sort-button.svelte';
type TableNamespace = typeof TableRoot & {
Provider: typeof TableRoot;
Header: typeof Header;
Body: typeof Body;
Footer: typeof Footer;
@ -63,7 +62,6 @@ type TableNamespace = typeof TableRoot & {
};
const Table = TableRoot as TableNamespace;
Table.Provider = TableRoot;
Table.Header = Header;
Table.Body = Body;
Table.Footer = Footer;

@ -4,13 +4,11 @@ import Viewport from './virtual-grid-viewport.svelte';
import Cell from './virtual-grid-cell.svelte';
type VirtualGridNamespace = typeof VirtualGridRoot & {
Provider: typeof VirtualGridRoot;
Viewport: typeof Viewport;
Cell: typeof Cell;
};
const VirtualGrid = VirtualGridRoot as VirtualGridNamespace;
VirtualGrid.Provider = VirtualGridRoot;
VirtualGrid.Viewport = Viewport;
VirtualGrid.Cell = Cell;

@ -5,14 +5,12 @@ import WindowViewport from './virtual-list-window-viewport.svelte';
import Item from './virtual-list-item.svelte';
type VirtualListNamespace = typeof VirtualListRoot & {
Provider: typeof VirtualListRoot;
Viewport: typeof Viewport;
WindowViewport: typeof WindowViewport;
Item: typeof Item;
};
const VirtualList = VirtualListRoot as VirtualListNamespace;
VirtualList.Provider = VirtualListRoot;
VirtualList.Viewport = Viewport;
VirtualList.WindowViewport = WindowViewport;
VirtualList.Item = Item;

@ -8,7 +8,7 @@ export const alertDialogMorfo: Morfo = {
// Sema picks up Action/Cancel button events via the Dialog morfo's
// shared `commit-*` / `close-*` events — alert-dialog's morfo only
// declares the Action + Cancel button parts (Provider is virtual).
scope: ['soma', 'sema', 'eidos'],
scope: ['soma', 'eidos'],
apg: 'https://www.w3.org/WAI/ARIA/apg/patterns/alertdialog/',
texts: {
label: '#?components.alert-dialog.label|Alert Dialog',

@ -4,7 +4,7 @@ import { v } from '../types';
export const carouselMorfo = {
name: 'Carousel',
kebab: 'carousel',
scope: ['soma'],
scope: ['soma', 'sema'],
apg: 'https://www.w3.org/WAI/ARIA/apg/patterns/carousel/',
texts: {
label: '#?components.carousel.label|Carousel',

@ -4,7 +4,7 @@ import { v } from '../types';
export const colorFieldMorfo = {
name: 'ColorField',
kebab: 'color-field',
scope: ['soma'],
scope: ['soma', 'sema'],
apg: 'https://www.w3.org/WAI/ARIA/apg/patterns/spinbutton/',
texts: {
label: '#?components.color-field.label|Color field',

@ -4,7 +4,7 @@ import { v } from '../types';
export const commandMorfo = {
name: 'Command',
kebab: 'command',
scope: ['soma'],
scope: ['soma', 'sema'],
texts: {
label: '#?components.command.label|Command palette',
list: '#?components.command.list|Command palette'

@ -7,7 +7,7 @@ export const dateRangeFieldMorfo = {
// Eidos wrapper added 2026-05-23 (`src/uix/eidos/components/date-range-field/`).
// Sema events forwarded by the composed DateField instances (one per
// endpoint) — no per-component cascade needed at this layer.
scope: ['soma', 'sema', 'eidos'],
scope: ['soma', 'eidos'],
apg: 'https://www.w3.org/WAI/ARIA/apg/patterns/spinbutton/',
texts: {
label: '#?components.date-range-field.label|Date Range Field',

@ -4,7 +4,7 @@ import { v } from '../types';
export const dragDropMorfo = {
name: 'DragDrop',
kebab: 'drag-drop',
scope: ['soma'],
scope: ['soma', 'sema'],
texts: {
label: '#?components.drag-drop.label|Drag and drop',
'drag-started': '#?components.drag-drop.drag-started|Started dragging {{item}}',

@ -4,7 +4,7 @@ import { v } from '../types';
export const feedMorfo = {
name: 'Feed',
kebab: 'feed',
scope: ['soma'],
scope: ['soma', 'sema'],
apg: 'https://www.w3.org/WAI/ARIA/apg/patterns/feed/',
texts: {
label: '#?components.feed.label|Feed'

@ -4,7 +4,7 @@ import { v } from '../types';
export const gridListMorfo = {
name: 'GridList',
kebab: 'grid-list',
scope: ['soma'],
scope: ['soma', 'sema'],
apg: 'https://www.w3.org/WAI/ARIA/apg/patterns/grid/',
texts: {
label: '#?components.grid-list.label|Grid list',

@ -4,7 +4,7 @@ import { v } from '../types';
export const menubarMorfo = {
name: 'Menubar',
kebab: 'menubar',
scope: ['soma'],
scope: ['soma', 'sema'],
apg: 'https://www.w3.org/WAI/ARIA/apg/patterns/menubar/',
texts: {
label: '#?components.menubar.label|Menubar'

@ -4,7 +4,7 @@ import { v } from '../types';
export const navigationMenuMorfo = {
name: 'NavigationMenu',
kebab: 'navigation-menu',
scope: ['soma'],
scope: ['soma', 'sema'],
texts: {
label: '#?components.navigation-menu.label|Main'
},

@ -7,7 +7,7 @@ export const pinInputMorfo = {
// Eidos wrapper added 2026-05-22 (`src/uix/eidos/components/pin-input/`).
// Sound for commit-fill (when the input reaches its length) comes from
// the `commit` family base — no per-component cascade needed.
scope: ['soma', 'sema', 'eidos'],
scope: ['soma', 'eidos'],
apg: 'https://www.w3.org/WAI/ARIA/apg/patterns/textbox/',
texts: {
label: '#?components.pin-input.label|Pin Input',

@ -4,7 +4,7 @@ import { v } from '../types';
export const tableMorfo = {
name: 'Table',
kebab: 'table',
scope: ['soma'],
scope: ['soma', 'sema'],
texts: {
label: '#?components.table.label|Data table',
'toggle-detail': '#?components.table.toggle-detail|Toggle detail',

@ -4,7 +4,7 @@ import { v } from '../types';
export const timeFieldMorfo = {
name: 'TimeField',
kebab: 'time-field',
scope: ['soma'],
scope: ['soma', 'sema'],
apg: 'https://www.w3.org/WAI/ARIA/apg/patterns/spinbutton/',
texts: {
label: '#?components.time-field.label|Time field',

@ -11,7 +11,7 @@ import { v } from '../types';
export const tooltipMorfo = {
name: 'Tooltip',
kebab: 'tooltip',
scope: ['soma', 'eidos'],
scope: ['soma', 'eidos', 'sema'],
apg: 'https://www.w3.org/WAI/ARIA/apg/patterns/tooltip/',
texts: {
label: '#?components.tooltip.label|Tooltip'

@ -4,7 +4,7 @@ import { v } from '../types';
export const treeGridMorfo = {
name: 'TreeGrid',
kebab: 'tree-grid',
scope: ['soma'],
scope: ['soma', 'sema'],
apg: 'https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/',
texts: {
label: '#?components.tree-grid.label|Tree grid',

@ -4,7 +4,7 @@ import { v } from '../types';
export const treeViewMorfo = {
name: 'TreeView',
kebab: 'tree-view',
scope: ['soma'],
scope: ['soma', 'sema'],
apg: 'https://www.w3.org/WAI/ARIA/apg/patterns/treeview/',
texts: {
label: '#?components.tree-view.label|Tree'

Loading…
Cancel
Save

Powered by TurnKey Linux.