You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
svelte-kit-vice/src/uix/eidos/components/picker-shell
dev 725f7abe37
perf(eidos): code-split 16 picker-family recipes (Phase 3, batch 4)
4 months ago
..
README.md refactor(picker-shell): close as INTERNAL primitive (audit P1 #5) 5 months ago
index.ts feat(picker-shell): extend to Root + Header + Body + Footer layout 5 months ago
picker-shell-body.svelte feat(picker-shell): extend to Root + Header + Body + Footer layout 5 months ago
picker-shell-cancel.svelte fix(eidos): use ActiveEidos.require() instead of getActiveUix() in 15 components 5 months ago
picker-shell-clear.svelte fix(eidos): use ActiveEidos.require() instead of getActiveUix() in 15 components 5 months ago
picker-shell-close.svelte fix(eidos): use ActiveEidos.require() instead of getActiveUix() in 15 components 5 months ago
picker-shell-footer.svelte feat(picker-shell): extract shared Footer/Clear/Cancel/Close + apply to color-picker 5 months ago
picker-shell-header.svelte feat(picker-shell): extend to Root + Header + Body + Footer layout 5 months ago
picker-shell.css feat(eidos): Button + 9 demo rebuilds + picker recipe polish 5 months ago
picker-shell.svelte perf(eidos): code-split 16 picker-family recipes (Phase 3, batch 4) 4 months ago
types.ts feat(picker-shell): extend to Root + Header + Body + Footer layout 5 months ago

README.md

PickerShell (INTERNAL primitive)

Status: Internal layout primitive. Not a public component.

PickerShell is the shared layout chrome used by the five composite pickers:

  • DatePicker
  • DateRangePicker
  • TimePicker
  • TimeRangePicker
  • ColorPicker

Each of those re-exports the picker-shell parts under its own namespace, so apps write <DatePicker.Footer> / <ColorPicker.Clear> / etc., never <PickerShell> directly. The main $uix/eidos barrel intentionally does not export PickerShell.

Why internal

  • Zero standalone semantics — no events, no state, no morfo contract beyond a single Provider stub.
  • All meaningful behaviour (Clear / Cancel / Close actions) flows through pickerShellContext registered by the host picker's provider in soma.
  • The contract surface that matters for apps is each individual picker's namespace, not the shell.

What lives where

  • Morfo declaration: src/uix/morfo/internal/picker-shell.ts — outside morfo/components/ so the component audit (which walks public components) does not flag it for the public-artefact ruleset (demo, texts.label, public README requirements).
  • Soma: src/uix/soma/components/picker-shell/ — the PickerShellHandle + context machinery the five pickers register against.
  • Eidos parts (this directory):
    • picker-shell.svelte — Root
    • picker-shell-header.svelte — Header zone
    • picker-shell-body.svelte — Body zone (where the picker's payload lives)
    • picker-shell-footer.svelte — Footer (action row)
    • picker-shell-clear.svelte — Clear action
    • picker-shell-cancel.svelte — Cancel action
    • picker-shell-close.svelte — Close action

Adding a new composite picker

  1. Soma provider registers a PickerShellHandle via pickerShellContext.
  2. Eidos picker barrel re-exports the shell parts under its namespace:
import Footer from '../picker-shell/picker-shell-footer.svelte';
import Clear from '../picker-shell/picker-shell-clear.svelte';
// …
MyPicker.Footer = Footer;
MyPicker.Clear = Clear;
  1. Apps use <MyPicker.Footer> / <MyPicker.Clear> like any other picker.

Closes

audit-codex-full-1.md P1 #5 — "picker-shell existe pero no esta cerrado como pieza de sistema". Closed as INTERNAL primitive per the audit's own recommendation: "Si es interna, no deberia salir como demo publica ni Morfo publico incompleto."

Powered by TurnKey Linux.