stillmade-sdk 0.1.44 → 0.1.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +3 -3
- package/INTERFACE_DESIGN.md +3 -1
- package/PASTE_TO_LLM.md +4 -4
- package/SDK.md +29 -25
- package/UI_AESTHETIC.md +7 -0
- package/docs/build/block-builder-contract.md +3 -3
- package/docs/build/custom-interface.md +18 -16
- package/docs/build/interface-design.md +3 -1
- package/docs/reference/authoring-guide.md +1 -1
- package/docs/tools/llm.md +4 -4
- package/package.json +1 -1
- package/packages/block-platform/project-type-composer.js +5 -0
- package/packages/block-platform/segment-runner.js +9 -3
- package/packages/block-platform/step-groups.js +5 -2
- package/packages/block-sdk/builder-contract.js +4 -4
- package/packages/block-sdk/collaboration-admission.js +5 -4
- package/packages/block-sdk/shared-agent-controls.js +14 -5
- package/packages/block-sdk/shared-controls.js +61 -3
- package/packages/block-sdk/view-design.js +1 -1
- package/packages/design-system/block-kit.css +9 -1
|
@@ -48,7 +48,7 @@ export const BLOCK_INTERFACE_PRINCIPLES=Object.freeze([
|
|
|
48
48
|
'Status sits beside the action it describes (`sm-status`), in a few words.',
|
|
49
49
|
'Keep the page in normal scroll flow; no sticky media or control strips unless the editing task needs them.',
|
|
50
50
|
'Use the width: from 860px wide the kit puts the controls on the left at a reading width (300–380px) and the result (`sm-stage`) fills the right, in its real shape; under that everything stacks in the page\'s order: the inputs, the action in normal flow (never pinned), then the result\'s place under it, so put `sm-stage` after `sm-actions`. Extra width goes to the result, never to wider text fields. Before there is a result, the stage previews what will be made from the inputs. `data-layout="stack"` opts out.',
|
|
51
|
-
'Size with the kit, never fixed sizes: no fixed pixel widths or heights for the workspace or stage, no 100vh, no position:fixed panels. StillMade zooms a Block\'s screen to fill the space it has (up to 150%, never down to a phone layout on a computer), so a Block laid out with the kit\'s spacing fills its Step without empty space, and it centers a standard view narrower than its Step. An app that lays itself out (full-size canvas or WebGL, its own scroll, pan or zoom, its own Ctrl/Cmd +/- keys) puts `data-stillmade-layout="own"` on its outermost element, and StillMade then never centers, zooms or takes those keys.',
|
|
51
|
+
'Size with the kit, never fixed sizes: no fixed pixel widths or heights for the workspace or stage, no 100vh, no position:fixed panels. StillMade zooms a Block\'s screen to fill the space it has (up to 150%, never down to a phone layout on a computer), so a Block laid out with the kit\'s spacing fills its Step without empty space, and it centers a standard view narrower than its Step. The kit\'s `sm-stage` shows what it holds in its middle as one group (a caption stays with its picture), and several results in a stage fill its width as one row; the pages StillMade draws follow the same rule. An app that lays itself out (full-size canvas or WebGL, its own scroll, pan or zoom, its own Ctrl/Cmd +/- keys) puts `data-stillmade-layout="own"` on its outermost element, and StillMade then never centers, zooms or takes those keys.',
|
|
52
52
|
'Group what the person sets in one `sm-fields` (or `sm-settings` for short ones): the kit gives the group its own surface, so the inputs, the settings and the result read as separate parts. Settings sit side by side (`sm-settings`), next to what they change. Three or four short options are one segmented row (`data-segmented`), not a row of big tiles.',
|
|
53
53
|
'Lists fill the width at a small size: input files are small tiles (`sm-gallery data-size="small"`), many items are one line each (`sm-list`): a thumbnail, one line of text, a short fact. Tapping an item opens all of its fields in place. Extra width means more items per row, never bigger cards.',
|
|
54
54
|
'On a phone chip and segment rows scroll sideways instead of wrapping; long lists show their first three with "N more" (`data-peek`) and long text five lines until tapped (`sm-clamp`).',
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
/* ---------- The stage: the object being made gets the main surface ---------- */
|
|
54
|
-
:where(.sm-stage){position:relative;display:grid;place-items:center;min-height:220px;padding:var(--s-3,12px);border-radius:var(--r-3,8px);background:var(--bg-inset);overflow:hidden}
|
|
54
|
+
:where(.sm-stage){position:relative;display:grid;place-items:center;align-content:center;min-height:220px;padding:var(--s-3,12px);border-radius:var(--r-3,8px);background:var(--bg-inset);overflow:hidden}
|
|
55
55
|
:where(.sm-stage:is([data-ratio="16:9"],[data-ratio="16/9"])){aspect-ratio:16/9;min-height:0}
|
|
56
56
|
:where(.sm-stage:is([data-ratio="9:16"],[data-ratio="9/16"])){aspect-ratio:9/16;min-height:0;max-height:70vh;justify-self:center;width:auto;height:min(70vh,640px)}
|
|
57
57
|
:where(.sm-stage:is([data-ratio="1:1"],[data-ratio="1/1"])){aspect-ratio:1;min-height:0}
|
|
@@ -59,6 +59,14 @@
|
|
|
59
59
|
:where(.sm-stage[data-fill]) > :where(img,video,canvas){width:100%;height:100%;object-fit:cover}
|
|
60
60
|
/* A picture the view has not filled yet draws nothing, never a broken-image icon (November 3, 2026). */
|
|
61
61
|
:where(.sm-stage) :where(img:not([src]),img[src=""]){display:none}
|
|
62
|
+
/* November 4, 2026 (owner: "make that the rule for the SDK"): what a stage shows sits in its middle as one group, a caption
|
|
63
|
+
with its picture, and several results fill the stage's width as one row instead of leaving empty columns. A Block that
|
|
64
|
+
lays itself out (data-stillmade-layout="own") keeps its own placement. */
|
|
65
|
+
:where(.sm-stage) > :where(.sm-gallery){width:100%;grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--sm-tile,140px)),1fr))}
|
|
66
|
+
:where(.sm-stage) > :where(.sm-gallery:not(:has(> :nth-child(5)))){grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}
|
|
67
|
+
:where(.sm-stage) > :where(figcaption,small,.sm-caption){justify-self:center;text-align:center}
|
|
68
|
+
:where([data-stillmade-layout="own"]) :where(.sm-stage){align-content:normal}
|
|
69
|
+
:where([data-stillmade-layout="own"]) :where(.sm-stage) > :where(.sm-gallery){width:auto;grid-template-columns:repeat(auto-fill,minmax(min(100%,var(--sm-tile,140px)),1fr));grid-auto-flow:row}
|
|
62
70
|
|
|
63
71
|
/* ---------- Empty state: a picture and a few words, never a paragraph ---------- */
|
|
64
72
|
:where(.sm-empty){display:grid;justify-items:center;gap:var(--s-3,12px);padding:var(--s-5,24px) var(--s-4,16px);text-align:center;color:var(--fg-muted)}
|