@xenosystem/blocks 0.13.4 → 0.13.5

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.
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import * as react from 'react';
2
2
  import { ReactNode } from 'react';
3
3
  import { PanelModule, PanelManifest, BlockDeclaration } from '@xenosystem/block-sdk';
4
4
  import { PanelTone } from '@xenosystem/components/chrome';
@@ -314,7 +314,7 @@ interface AuthGateViewProps {
314
314
  heroSrc?: string;
315
315
  now?: () => number;
316
316
  }
317
- declare function AuthGateView$1({ controller, productName, children, heroSrc, now }: AuthGateViewProps): React.JSX.Element;
317
+ declare function AuthGateView$1({ controller, productName, children, heroSrc, now }: AuthGateViewProps): react.JSX.Element;
318
318
 
319
319
  /**
320
320
  * The auth gate AS A DECLARATION — the first block written the way `xeno-apps/SPEC.md` §8d says every
@@ -1,9 +1,12 @@
1
1
  import {
2
2
  Svg,
3
- XGlyph
4
- } from "./chunk-GQWAIPDF.js";
3
+ XGlyph,
4
+ fromElement
5
+ } from "./chunk-YTSBYJVH.js";
5
6
 
6
7
  // src/edit/layers/react/icons.tsx
8
+ import Eye from "@xenosystem/elements/elements/eye";
9
+ import EyeOff from "@xenosystem/elements/elements/eye-off";
7
10
  import { jsx, jsxs } from "react/jsx-runtime";
8
11
  var base = (size) => ({
9
12
  width: size,
@@ -16,19 +19,8 @@ var base = (size) => ({
16
19
  strokeLinejoin: "round",
17
20
  "aria-hidden": true
18
21
  });
19
- function EyeIcon({ size = 12, className }) {
20
- return /* @__PURE__ */ jsxs("svg", { ...base(size), className, children: [
21
- /* @__PURE__ */ jsx("path", { d: "M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7-10-7-10-7Z" }),
22
- /* @__PURE__ */ jsx("path", { d: "M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" })
23
- ] });
24
- }
25
- function EyeOffIcon({ size = 12, className }) {
26
- return /* @__PURE__ */ jsxs("svg", { ...base(size), className, children: [
27
- /* @__PURE__ */ jsx("path", { d: "M10.7 5.1A11 11 0 0 1 12 5c6.5 0 10 7 10 7a18 18 0 0 1-2.4 3.4M6.6 6.6A18 18 0 0 0 2 12s3.5 7 10 7a10.9 10.9 0 0 0 5.4-1.4" }),
28
- /* @__PURE__ */ jsx("path", { d: "M14.1 14.1a3 3 0 1 1-4.2-4.2" }),
29
- /* @__PURE__ */ jsx("path", { d: "m2 2 20 20" })
30
- ] });
31
- }
22
+ var EyeIcon = fromElement(Eye, 12);
23
+ var EyeOffIcon = fromElement(EyeOff, 12);
32
24
  function LockIcon({ size = 12, className }) {
33
25
  return /* @__PURE__ */ jsxs("svg", { ...base(size), className, children: [
34
26
  /* @__PURE__ */ jsx("rect", { width: "14", height: "10", x: "5", y: "11", rx: "2" }),
@@ -52,6 +44,7 @@ function LockStateIcon({ locked, size }) {
52
44
  }
53
45
 
54
46
  // src/edit/inspector/react/icons.tsx
47
+ import Link from "@xenosystem/elements/elements/link";
55
48
  import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
56
49
  var base2 = (size) => ({
57
50
  width: size,
@@ -80,12 +73,7 @@ function PrevIcon({ size = 9 }) {
80
73
  function NextIcon({ size = 9 }) {
81
74
  return /* @__PURE__ */ jsx2("svg", { ...base2(size), children: /* @__PURE__ */ jsx2("path", { d: "m9 18 6-6-6-6" }) });
82
75
  }
83
- function LinkIcon({ size = 10 }) {
84
- return /* @__PURE__ */ jsxs2("svg", { ...base2(size), children: [
85
- /* @__PURE__ */ jsx2("path", { d: "M10 13a5 5 0 0 0 7.5.5l3-3a5 5 0 0 0-7-7l-1.8 1.7" }),
86
- /* @__PURE__ */ jsx2("path", { d: "M14 11a5 5 0 0 0-7.5-.5l-3 3a5 5 0 0 0 7 7l1.8-1.7" })
87
- ] });
88
- }
76
+ var LinkIcon = fromElement(Link, 10);
89
77
  function ResetIcon({ size = 10 }) {
90
78
  return /* @__PURE__ */ jsxs2("svg", { ...base2(size), children: [
91
79
  /* @__PURE__ */ jsx2("path", { d: "M3 12a9 9 0 1 0 3-6.7L3 8" }),
@@ -100,6 +88,7 @@ function XIcon({ size = 10 }) {
100
88
  }
101
89
 
102
90
  // src/edit/history/react/icons.tsx
91
+ import Trash from "@xenosystem/elements/elements/trash";
103
92
  import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
104
93
  var svgBase = (size) => ({
105
94
  width: size,
@@ -150,13 +139,7 @@ function EntryIcon({ name, size = 11 }) {
150
139
  function XIcon2({ size = 10 }) {
151
140
  return /* @__PURE__ */ jsx3(XGlyph, { size });
152
141
  }
153
- function TrashIcon({ size = 11 }) {
154
- return /* @__PURE__ */ jsxs3("svg", { ...svgBase(size), children: [
155
- /* @__PURE__ */ jsx3("path", { d: "M3 6h18" }),
156
- /* @__PURE__ */ jsx3("path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6" }),
157
- /* @__PURE__ */ jsx3("path", { d: "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" })
158
- ] });
159
- }
142
+ var TrashIcon = fromElement(Trash);
160
143
  function UndoIcon({ size = 11 }) {
161
144
  return /* @__PURE__ */ jsxs3("svg", { ...svgBase(size), children: [
162
145
  /* @__PURE__ */ jsx3("path", { d: "M9 14 4 9l5-5" }),
@@ -0,0 +1,115 @@
1
+ // src/icons/glyphs.tsx
2
+ import Copy from "@xenosystem/elements/elements/copy";
3
+ import Download from "@xenosystem/elements/elements/download";
4
+ import Plus from "@xenosystem/elements/elements/plus";
5
+ import Refresh from "@xenosystem/elements/elements/refresh";
6
+ import X from "@xenosystem/elements/elements/x";
7
+
8
+ // src/icons/elements.tsx
9
+ import { XenoElement } from "@xenosystem/elements-react";
10
+ import { jsx } from "react/jsx-runtime";
11
+ var GLYPH_STROKE_WIDTH = 1.5;
12
+ function fromElement(decl, defaultSize = 11, state) {
13
+ const Glyph = ({ size = defaultSize, className }) => /* @__PURE__ */ jsx(XenoElement, { decl, state, size, strokeWidth: GLYPH_STROKE_WIDTH, className, "aria-hidden": "true", role: void 0, "aria-label": void 0 });
14
+ Glyph.displayName = `Element(${decl.id})`;
15
+ return Glyph;
16
+ }
17
+
18
+ // src/icons/glyphs.tsx
19
+ import { jsx as jsx2, jsxs } from "react/jsx-runtime";
20
+ function Svg({ children, size = 11 }) {
21
+ return /* @__PURE__ */ jsx2("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children });
22
+ }
23
+ var RefreshGlyph = fromElement(Refresh);
24
+ var XGlyph = fromElement(X);
25
+ var PlusGlyph = fromElement(Plus);
26
+ function ChevronGlyph({ direction = "right", size } = {}) {
27
+ const d = direction === "left" ? "m15 18-6-6 6-6" : direction === "up" ? "m18 15-6-6-6 6" : direction === "down" ? "m6 9 6 6 6-6" : "m9 18 6-6-6-6";
28
+ return /* @__PURE__ */ jsx2(Svg, { size, children: /* @__PURE__ */ jsx2("path", { d }) });
29
+ }
30
+ var DownloadGlyph = fromElement(Download);
31
+ function PlugGlyph({ size } = {}) {
32
+ return /* @__PURE__ */ jsxs(Svg, { size, children: [
33
+ /* @__PURE__ */ jsx2("path", { d: "M12 22v-5" }),
34
+ /* @__PURE__ */ jsx2("path", { d: "M9 8V2M15 8V2" }),
35
+ /* @__PURE__ */ jsx2("path", { d: "M18 8v3a6 6 0 0 1-12 0V8Z" })
36
+ ] });
37
+ }
38
+ function SortAscGlyph({ size = 9 } = {}) {
39
+ return /* @__PURE__ */ jsxs(Svg, { size, children: [
40
+ /* @__PURE__ */ jsx2("path", { d: "m5 12 7-7 7 7" }),
41
+ /* @__PURE__ */ jsx2("path", { d: "M12 19V5" })
42
+ ] });
43
+ }
44
+ function SortDescGlyph({ size = 9 } = {}) {
45
+ return /* @__PURE__ */ jsxs(Svg, { size, children: [
46
+ /* @__PURE__ */ jsx2("path", { d: "M12 5v14" }),
47
+ /* @__PURE__ */ jsx2("path", { d: "m19 12-7 7-7-7" })
48
+ ] });
49
+ }
50
+ function ExpandGlyph({ size } = {}) {
51
+ return /* @__PURE__ */ jsxs(Svg, { size, children: [
52
+ /* @__PURE__ */ jsx2("path", { d: "M12 22v-6" }),
53
+ /* @__PURE__ */ jsx2("path", { d: "M12 8V2" }),
54
+ /* @__PURE__ */ jsx2("path", { d: "m9 5 3-3 3 3" }),
55
+ /* @__PURE__ */ jsx2("path", { d: "m9 19 3 3 3-3" }),
56
+ /* @__PURE__ */ jsx2("path", { d: "M4 12H2" }),
57
+ /* @__PURE__ */ jsx2("path", { d: "M10 12H8" }),
58
+ /* @__PURE__ */ jsx2("path", { d: "M16 12h-2" }),
59
+ /* @__PURE__ */ jsx2("path", { d: "M22 12h-2" })
60
+ ] });
61
+ }
62
+ function CollapseGlyph({ size } = {}) {
63
+ return /* @__PURE__ */ jsxs(Svg, { size, children: [
64
+ /* @__PURE__ */ jsx2("path", { d: "M12 22v-6" }),
65
+ /* @__PURE__ */ jsx2("path", { d: "M12 8V2" }),
66
+ /* @__PURE__ */ jsx2("path", { d: "m9 13 3 3 3-3" }),
67
+ /* @__PURE__ */ jsx2("path", { d: "m9 11 3-3 3 3" }),
68
+ /* @__PURE__ */ jsx2("path", { d: "M4 12H2" }),
69
+ /* @__PURE__ */ jsx2("path", { d: "M22 12h-2" })
70
+ ] });
71
+ }
72
+ var CopyGlyph = fromElement(Copy);
73
+ function ClearGlyph({ size } = {}) {
74
+ return /* @__PURE__ */ jsxs(Svg, { size, children: [
75
+ /* @__PURE__ */ jsx2("rect", { x: "3", y: "3", width: "18", height: "18", rx: "3" }),
76
+ /* @__PURE__ */ jsx2("path", { d: "m6 6 12 12" })
77
+ ] });
78
+ }
79
+ function CancelGlyph({ size } = {}) {
80
+ return /* @__PURE__ */ jsx2(Svg, { size, children: /* @__PURE__ */ jsx2("rect", { x: "5", y: "5", width: "14", height: "14", rx: "2" }) });
81
+ }
82
+ function RetryGlyph({ size } = {}) {
83
+ return /* @__PURE__ */ jsxs(Svg, { size, children: [
84
+ /* @__PURE__ */ jsx2("path", { d: "M21 12a9 9 0 1 1-3.36-7" }),
85
+ /* @__PURE__ */ jsx2("path", { d: "M21 3v6h-6" })
86
+ ] });
87
+ }
88
+ function CaseGlyph({ size = 12 } = {}) {
89
+ return /* @__PURE__ */ jsxs(Svg, { size, children: [
90
+ /* @__PURE__ */ jsx2("path", { d: "m3 15 4-8 4 8" }),
91
+ /* @__PURE__ */ jsx2("path", { d: "M4 13h6" }),
92
+ /* @__PURE__ */ jsx2("rect", { x: "15", y: "9", width: "6", height: "6", rx: "1.5" }),
93
+ /* @__PURE__ */ jsx2("path", { d: "M21 9v6" })
94
+ ] });
95
+ }
96
+
97
+ export {
98
+ fromElement,
99
+ Svg,
100
+ RefreshGlyph,
101
+ XGlyph,
102
+ PlusGlyph,
103
+ ChevronGlyph,
104
+ DownloadGlyph,
105
+ PlugGlyph,
106
+ SortAscGlyph,
107
+ SortDescGlyph,
108
+ ExpandGlyph,
109
+ CollapseGlyph,
110
+ CopyGlyph,
111
+ ClearGlyph,
112
+ CancelGlyph,
113
+ RetryGlyph,
114
+ CaseGlyph
115
+ };
@@ -1,4 +1,11 @@
1
+ import {
2
+ fromElement
3
+ } from "./chunk-YTSBYJVH.js";
4
+
1
5
  // src/time/transport/react/icons.tsx
6
+ import Pause from "@xenosystem/elements/elements/pause";
7
+ import Play from "@xenosystem/elements/elements/play";
8
+ import Stop from "@xenosystem/elements/elements/stop";
2
9
  import { jsx, jsxs } from "react/jsx-runtime";
3
10
  var base = (size) => ({
4
11
  width: size,
@@ -11,18 +18,9 @@ var base = (size) => ({
11
18
  strokeLinejoin: "round",
12
19
  "aria-hidden": true
13
20
  });
14
- function PlayIcon({ size = 12 }) {
15
- return /* @__PURE__ */ jsx("svg", { ...base(size), fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M7 4.5v15l13-7.5z" }) });
16
- }
17
- function PauseIcon({ size = 12 }) {
18
- return /* @__PURE__ */ jsxs("svg", { ...base(size), fill: "currentColor", stroke: "none", children: [
19
- /* @__PURE__ */ jsx("rect", { x: "6", y: "4", width: "4", height: "16", rx: "1" }),
20
- /* @__PURE__ */ jsx("rect", { x: "14", y: "4", width: "4", height: "16", rx: "1" })
21
- ] });
22
- }
23
- function StopIcon({ size = 11 }) {
24
- return /* @__PURE__ */ jsx("svg", { ...base(size), fill: "currentColor", stroke: "none", children: /* @__PURE__ */ jsx("rect", { x: "5", y: "5", width: "14", height: "14", rx: "2" }) });
25
- }
21
+ var PlayIcon = fromElement(Play, 12);
22
+ var PauseIcon = fromElement(Pause, 12);
23
+ var StopIcon = fromElement(Stop);
26
24
  function RecordIcon({ size = 11 }) {
27
25
  return /* @__PURE__ */ jsx("svg", { ...base(size), fill: "currentColor", stroke: "none", children: /* @__PURE__ */ jsx("rect", { x: "6", y: "6", width: "12", height: "12", rx: "3" }) });
28
26
  }
@@ -15,7 +15,7 @@ import {
15
15
  SortAscGlyph,
16
16
  SortDescGlyph,
17
17
  XGlyph
18
- } from "../chunk-GQWAIPDF.js";
18
+ } from "../chunk-YTSBYJVH.js";
19
19
  import "../chunk-2KG3PWR4.js";
20
20
 
21
21
  // src/data/table/panel.ts
@@ -1,7 +1,7 @@
1
1
  import { PanelHost, PanelModule, PanelManifest, BlockDeclaration } from '@xenosystem/block-sdk';
2
2
  import { FlatRow as FlatRow$1, DropTarget, ThrottleClock, VirtualWindow, DropPosition } from '@xenosystem/tree-core';
3
3
  export { DropPosition, DropTarget } from '@xenosystem/tree-core';
4
- import * as React from 'react';
4
+ import * as react from 'react';
5
5
  import { ReactElement, ReactNode } from 'react';
6
6
  import { XenoTimebase, XenoTick } from '@xenosystem/time-core';
7
7
 
@@ -735,7 +735,7 @@ declare function LayersPanelView({ controller }: LayersPanelViewProps): ReactEle
735
735
  */
736
736
  /** The unit names the runtime supplies for this block — what a host's registry check must accept beside the shared families. */
737
737
  declare const LAYERS_RUNTIME_UNITS: readonly ["layers/Scroller", "layers/RenameField", "layers/Thumbnail"];
738
- declare function layersRuntimeComponents(controller: LayersPanelController): Record<(typeof LAYERS_RUNTIME_UNITS)[number], React.ComponentType<any>>;
738
+ declare function layersRuntimeComponents(controller: LayersPanelController): Record<(typeof LAYERS_RUNTIME_UNITS)[number], react.ComponentType<any>>;
739
739
 
740
740
  /**
741
741
  * The layers panel AS A DECLARATION — the seventh block written the §8d way (auth gate, agent,
@@ -1755,7 +1755,7 @@ declare function InspectorPanelView({ controller }: InspectorPanelViewProps): Re
1755
1755
  */
1756
1756
  /** The unit names the runtime supplies for this block — what a host's registry check must accept beside the shared families. */
1757
1757
  declare const INSPECTOR_RUNTIME_UNITS: readonly ["inspector/FieldWidget", "inspector/Properties", "inspector/ActionGlyph"];
1758
- declare function inspectorRuntimeComponents(controller: InspectorPanelController): Record<(typeof INSPECTOR_RUNTIME_UNITS)[number], React.ComponentType<any>>;
1758
+ declare function inspectorRuntimeComponents(controller: InspectorPanelController): Record<(typeof INSPECTOR_RUNTIME_UNITS)[number], react.ComponentType<any>>;
1759
1759
 
1760
1760
  /**
1761
1761
  * The canonical History wire contract (union spec §3): `XenoHistoryState` in,
@@ -2241,7 +2241,7 @@ declare function HistoryPanelView({ controller }: HistoryPanelViewProps): ReactE
2241
2241
  */
2242
2242
  /** The unit names the runtime supplies for this block — what a host's registry check must accept beside the shared families. */
2243
2243
  declare const HISTORY_RUNTIME_UNITS: readonly ["history/Scroller", "history/CancelButton"];
2244
- declare function historyRuntimeComponents(controller: HistoryPanelController): Record<(typeof HISTORY_RUNTIME_UNITS)[number], React.ComponentType<any>>;
2244
+ declare function historyRuntimeComponents(controller: HistoryPanelController): Record<(typeof HISTORY_RUNTIME_UNITS)[number], react.ComponentType<any>>;
2245
2245
 
2246
2246
  /**
2247
2247
  * The history panel AS A DECLARATION — the sixth block written the §8d way (auth gate, agent, account,
@@ -2803,7 +2803,7 @@ declare function ColorPanelView({ controller }: ColorPanelViewProps): ReactEleme
2803
2803
  /** The units the runtime registers for `COLOR_DECLARATION`, bound to ITS controller: the picker and the glyphs. */
2804
2804
  /** The unit names the runtime supplies for this block — what a host's registry check must accept beside the shared families. */
2805
2805
  declare const COLOR_RUNTIME_UNITS: readonly ["color/Picker"];
2806
- declare function colorRuntimeComponents(controller: ColorPanelController): Record<(typeof COLOR_RUNTIME_UNITS)[number], React.ComponentType<any>>;
2806
+ declare function colorRuntimeComponents(controller: ColorPanelController): Record<(typeof COLOR_RUNTIME_UNITS)[number], react.ComponentType<any>>;
2807
2807
 
2808
2808
  /**
2809
2809
  * The color panel AS A DECLARATION — the eighth block written the §8d way (auth gate, agent, account,
@@ -17,14 +17,14 @@ import {
17
17
  VisibilityIcon,
18
18
  XIcon,
19
19
  XIcon2
20
- } from "../chunk-SFSCCISX.js";
20
+ } from "../chunk-UGA6G7IN.js";
21
21
  import {
22
22
  CaseGlyph,
23
23
  ChevronGlyph,
24
24
  CollapseGlyph,
25
25
  ExpandGlyph,
26
26
  RefreshGlyph
27
- } from "../chunk-GQWAIPDF.js";
27
+ } from "../chunk-YTSBYJVH.js";
28
28
  import "../chunk-2KG3PWR4.js";
29
29
 
30
30
  // src/edit/layers/panel.ts
@@ -1,17 +1,5 @@
1
1
  import { ReactNode, ComponentType } from 'react';
2
2
 
3
- /**
4
- * The shared glyphs — ONE source for the strokes that used to be copied per block (`Refresh` was
5
- * byte-identical in three files, `X` in three, `Plus` in two). Lucide geometry at strokeWidth 1.5,
6
- * rectangles and lines only: no circles anywhere (DESIGN_SYSTEM §3). Every block-local `icons.tsx`
7
- * re-exports from here under its own name, so no view changed when the copies collapsed.
8
- *
9
- * Interim, like the registry beside it: when `@xenosystem/elements-react` ships the icon set, this
10
- * file becomes re-exports and the blocks are untouched.
11
- *
12
- * @module
13
- */
14
-
15
3
  /** The frame every glyph draws in. */
16
4
  declare function Svg({ children, size }: {
17
5
  children: ReactNode;
@@ -12,7 +12,7 @@ import {
12
12
  StepBackIcon,
13
13
  StepForwardIcon,
14
14
  StopIcon
15
- } from "../chunk-BP4EYOCQ.js";
15
+ } from "../chunk-YZYFDQIY.js";
16
16
  import {
17
17
  DiamondIcon,
18
18
  EntryIcon,
@@ -30,7 +30,7 @@ import {
30
30
  TreeIcon,
31
31
  UndoIcon,
32
32
  VisibilityIcon
33
- } from "../chunk-SFSCCISX.js";
33
+ } from "../chunk-UGA6G7IN.js";
34
34
  import {
35
35
  CancelGlyph,
36
36
  CaseGlyph,
@@ -48,7 +48,7 @@ import {
48
48
  SortDescGlyph,
49
49
  Svg,
50
50
  XGlyph
51
- } from "../chunk-GQWAIPDF.js";
51
+ } from "../chunk-YTSBYJVH.js";
52
52
  import "../chunk-2KG3PWR4.js";
53
53
 
54
54
  // src/icons/index.ts
package/dist/ops/index.js CHANGED
@@ -11,7 +11,7 @@ import {
11
11
  ClearGlyph,
12
12
  CopyGlyph,
13
13
  RetryGlyph
14
- } from "../chunk-GQWAIPDF.js";
14
+ } from "../chunk-YTSBYJVH.js";
15
15
  import "../chunk-2KG3PWR4.js";
16
16
 
17
17
  // src/ops/console/panel.ts
@@ -1,9 +1,34 @@
1
1
  import { PanelHost, PanelModule, PanelManifest, BlockDeclaration } from '@xenosystem/block-sdk';
2
2
  import { ThrottleClock, XenoPlayheadClock, XenoTimebase, XenoTransportState, XenoTick, XenoStepUnit, XenoLoopRange } from '@xenosystem/time-core';
3
3
  export { BAR_SUBDIVISION, BarsBeats, DEFAULT_TIMEBASE, DISPLAY_CYCLE, ExtrapolateInput, IDLE_CLOCK, ThrottleClock, Throttled, XenoLoopRange, XenoPlayheadClock, XenoStepUnit, XenoTempoEntry, XenoTick, XenoTimeDisplay, XenoTimeSignature, XenoTimebase, XenoTransportIntent, XenoTransportState, clampTick, clockAt, createThrottle, displayLabel, effectiveFps, extrapolateTick, formatBars, formatFrames, formatSeconds, formatTick, formatTimecode, frameToTick, isAnimating, nextDisplay, normalizeClock, normalizeTimebase, secondsToTicks, tickToFrame, ticksToBarsBeats, ticksToSeconds, toTick, wrapIntoLoop } from '@xenosystem/time-core';
4
+ import * as react from 'react';
4
5
  import { ReactElement, ReactNode } from 'react';
5
6
  import { XenoValue, XenoRow, XenoResultSet, XenoColumn } from '@xenosystem/data-core';
6
7
 
8
+ /**
9
+ * THE SWAP POINT, in use — a glyph drawn by `@xenosystem/elements` (rung 1), rendered by
10
+ * `@xenosystem/elements-react`, wearing the family's glyph contract (`test/icons.contract.test.tsx`).
11
+ *
12
+ * `@xenosystem/elements@0.0.1` ships 101 element declarations and ONE renderer parameterised by data
13
+ * (`<XenoElement decl>`; no barrel, imported per id). Every `icons/*` name whose meaning the set
14
+ * already carries resolves here; the rest stay hand-drawn in `glyphs.tsx` and the block files until
15
+ * the set names them. The contract does not care which — that is the point of having written it.
16
+ *
17
+ * Two deliberate adaptations, both measured on 2026-09-18:
18
+ * - `strokeWidth` is pinned to **1.5**: the renderer's `regular` weight is 1.75 (its own comment:
19
+ * "the value the foundry workbench shipped and the design approved") while `DESIGN_SYSTEM.md`
20
+ * §6 still says 1.5 and every hand-drawn glyph beside these draws 1.5. Two weights in one toolbar
21
+ * is the visible defect; which number is right is the design owner's call
22
+ * (`orchestrator/briefs/2026-09-18-icon-stroke-weight-1.5-vs-1.75.md`) and flips in ONE place.
23
+ * - `role`/`aria-label` are removed and `aria-hidden` set: a glyph is never a name; the unit that
24
+ * mounts it (`IconButton.label`, a Row's label) is.
25
+ */
26
+
27
+ interface ElementGlyphProps {
28
+ size?: number;
29
+ className?: string;
30
+ }
31
+
7
32
  /**
8
33
  * `TransportPanelController` — the framework-free brain of the Transport panel.
9
34
  *
@@ -260,23 +285,9 @@ interface TransportPanelViewProps {
260
285
  }
261
286
  declare function TransportPanelView({ controller }: TransportPanelViewProps): ReactElement;
262
287
 
263
- /**
264
- * Inline transport glyphs at lucide geometry, **strokeWidth 1.5** (DESIGN_SYSTEM §6). Zero runtime
265
- * dependencies — no `lucide-react` import. Shapes are rectangles and triangles only; the record
266
- * glyph is a rounded SQUARE, never a circle (§3 "no circles anywhere").
267
- *
268
- * @module
269
- */
270
-
271
288
  interface IconProps {
272
289
  size?: number;
273
290
  }
274
- /** lucide `play` (filled for weight at small sizes). */
275
- declare function PlayIcon({ size }: IconProps): ReactElement;
276
- /** lucide `pause`. */
277
- declare function PauseIcon({ size }: IconProps): ReactElement;
278
- /** lucide `square` — stop. */
279
- declare function StopIcon({ size }: IconProps): ReactElement;
280
291
  /** Record — a rounded SQUARE (the XENO shape language has no circles). */
281
292
  declare function RecordIcon({ size }: IconProps): ReactElement;
282
293
  /** lucide `skip-back` — go to start. */
@@ -305,10 +316,10 @@ declare function PlayPauseIcon({ playing, size }: {
305
316
  * elements icon set lands, then these resolve to `icons/*` and this map goes.
306
317
  */
307
318
  declare const TRANSPORT_ICONS: {
308
- 'transport/PlayIcon': typeof PlayIcon;
309
- 'transport/PauseIcon': typeof PauseIcon;
319
+ 'transport/PlayIcon': react.ComponentType<ElementGlyphProps>;
320
+ 'transport/PauseIcon': react.ComponentType<ElementGlyphProps>;
310
321
  'transport/PlayPauseIcon': typeof PlayPauseIcon;
311
- 'transport/StopIcon': typeof StopIcon;
322
+ 'transport/StopIcon': react.ComponentType<ElementGlyphProps>;
312
323
  'transport/RecordIcon': typeof RecordIcon;
313
324
  'transport/StartIcon': typeof StartIcon;
314
325
  'transport/EndIcon': typeof EndIcon;
@@ -12,10 +12,10 @@ import {
12
12
  StopIcon,
13
13
  TRANSPORT_ICONS,
14
14
  TRANSPORT_RUNTIME_UNITS
15
- } from "../chunk-BP4EYOCQ.js";
15
+ } from "../chunk-YZYFDQIY.js";
16
16
  import {
17
17
  ChevronGlyph
18
- } from "../chunk-GQWAIPDF.js";
18
+ } from "../chunk-YTSBYJVH.js";
19
19
  import {
20
20
  __reExport
21
21
  } from "../chunk-2KG3PWR4.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xenosystem/blocks",
3
- "version": "0.13.4",
3
+ "version": "0.13.5",
4
4
  "description": "XENO Blocks — rung 3 of the front ladder: components composed into a contract-bearing unit (manifest: ports, intents, commands, agent surface), rendered by @xenosystem/workbench. ONE package, one subpath per family (/auth, /edit, /data, /time, /ops, /trust, /agent), one named export per block — XENO PACKAGE NAMING - STANDARD.md.",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
@@ -66,6 +66,7 @@
66
66
  "@xenosystem/block-sdk": ">=0.3.4 <1",
67
67
  "@xenosystem/components": ">=0.18.0 <1",
68
68
  "@xenosystem/data-core": "^0.1.0",
69
+ "@xenosystem/elements": ">=0.0.1",
69
70
  "@xenosystem/elements-react": ">=0.0.1",
70
71
  "@xenosystem/time-core": "^0.1.0",
71
72
  "@xenosystem/tree-core": "^0.1.0",
@@ -82,6 +83,7 @@
82
83
  "@xenosystem/block-sdk": "^0.3.4",
83
84
  "@xenosystem/components": "^0.18.0",
84
85
  "@xenosystem/data-core": "^0.1.0",
86
+ "@xenosystem/elements": "0.0.1",
85
87
  "@xenosystem/elements-react": "0.0.1",
86
88
  "@xenosystem/time-core": "^0.1.0",
87
89
  "@xenosystem/tree-core": "^0.1.0",
@@ -1,125 +0,0 @@
1
- // src/icons/glyphs.tsx
2
- import { jsx, jsxs } from "react/jsx-runtime";
3
- function Svg({ children, size = 11 }) {
4
- return /* @__PURE__ */ jsx("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children });
5
- }
6
- function RefreshGlyph({ size } = {}) {
7
- return /* @__PURE__ */ jsxs(Svg, { size, children: [
8
- /* @__PURE__ */ jsx("path", { d: "M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8" }),
9
- /* @__PURE__ */ jsx("path", { d: "M3 3v5h5" }),
10
- /* @__PURE__ */ jsx("path", { d: "M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16" }),
11
- /* @__PURE__ */ jsx("path", { d: "M16 16h5v5" })
12
- ] });
13
- }
14
- function XGlyph({ size } = {}) {
15
- return /* @__PURE__ */ jsxs(Svg, { size, children: [
16
- /* @__PURE__ */ jsx("path", { d: "M18 6 6 18" }),
17
- /* @__PURE__ */ jsx("path", { d: "m6 6 12 12" })
18
- ] });
19
- }
20
- function PlusGlyph({ size } = {}) {
21
- return /* @__PURE__ */ jsxs(Svg, { size, children: [
22
- /* @__PURE__ */ jsx("path", { d: "M12 5v14" }),
23
- /* @__PURE__ */ jsx("path", { d: "M5 12h14" })
24
- ] });
25
- }
26
- function ChevronGlyph({ direction = "right", size } = {}) {
27
- const d = direction === "left" ? "m15 18-6-6 6-6" : direction === "up" ? "m18 15-6-6-6 6" : direction === "down" ? "m6 9 6 6 6-6" : "m9 18 6-6-6-6";
28
- return /* @__PURE__ */ jsx(Svg, { size, children: /* @__PURE__ */ jsx("path", { d }) });
29
- }
30
- function DownloadGlyph({ size } = {}) {
31
- return /* @__PURE__ */ jsxs(Svg, { size, children: [
32
- /* @__PURE__ */ jsx("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }),
33
- /* @__PURE__ */ jsx("path", { d: "M7 10l5 5 5-5" }),
34
- /* @__PURE__ */ jsx("path", { d: "M12 15V3" })
35
- ] });
36
- }
37
- function PlugGlyph({ size } = {}) {
38
- return /* @__PURE__ */ jsxs(Svg, { size, children: [
39
- /* @__PURE__ */ jsx("path", { d: "M12 22v-5" }),
40
- /* @__PURE__ */ jsx("path", { d: "M9 8V2M15 8V2" }),
41
- /* @__PURE__ */ jsx("path", { d: "M18 8v3a6 6 0 0 1-12 0V8Z" })
42
- ] });
43
- }
44
- function SortAscGlyph({ size = 9 } = {}) {
45
- return /* @__PURE__ */ jsxs(Svg, { size, children: [
46
- /* @__PURE__ */ jsx("path", { d: "m5 12 7-7 7 7" }),
47
- /* @__PURE__ */ jsx("path", { d: "M12 19V5" })
48
- ] });
49
- }
50
- function SortDescGlyph({ size = 9 } = {}) {
51
- return /* @__PURE__ */ jsxs(Svg, { size, children: [
52
- /* @__PURE__ */ jsx("path", { d: "M12 5v14" }),
53
- /* @__PURE__ */ jsx("path", { d: "m19 12-7 7-7-7" })
54
- ] });
55
- }
56
- function ExpandGlyph({ size } = {}) {
57
- return /* @__PURE__ */ jsxs(Svg, { size, children: [
58
- /* @__PURE__ */ jsx("path", { d: "M12 22v-6" }),
59
- /* @__PURE__ */ jsx("path", { d: "M12 8V2" }),
60
- /* @__PURE__ */ jsx("path", { d: "m9 5 3-3 3 3" }),
61
- /* @__PURE__ */ jsx("path", { d: "m9 19 3 3 3-3" }),
62
- /* @__PURE__ */ jsx("path", { d: "M4 12H2" }),
63
- /* @__PURE__ */ jsx("path", { d: "M10 12H8" }),
64
- /* @__PURE__ */ jsx("path", { d: "M16 12h-2" }),
65
- /* @__PURE__ */ jsx("path", { d: "M22 12h-2" })
66
- ] });
67
- }
68
- function CollapseGlyph({ size } = {}) {
69
- return /* @__PURE__ */ jsxs(Svg, { size, children: [
70
- /* @__PURE__ */ jsx("path", { d: "M12 22v-6" }),
71
- /* @__PURE__ */ jsx("path", { d: "M12 8V2" }),
72
- /* @__PURE__ */ jsx("path", { d: "m9 13 3 3 3-3" }),
73
- /* @__PURE__ */ jsx("path", { d: "m9 11 3-3 3 3" }),
74
- /* @__PURE__ */ jsx("path", { d: "M4 12H2" }),
75
- /* @__PURE__ */ jsx("path", { d: "M22 12h-2" })
76
- ] });
77
- }
78
- function CopyGlyph({ size } = {}) {
79
- return /* @__PURE__ */ jsxs(Svg, { size, children: [
80
- /* @__PURE__ */ jsx("rect", { x: "9", y: "9", width: "12", height: "12", rx: "2" }),
81
- /* @__PURE__ */ jsx("path", { d: "M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" })
82
- ] });
83
- }
84
- function ClearGlyph({ size } = {}) {
85
- return /* @__PURE__ */ jsxs(Svg, { size, children: [
86
- /* @__PURE__ */ jsx("rect", { x: "3", y: "3", width: "18", height: "18", rx: "3" }),
87
- /* @__PURE__ */ jsx("path", { d: "m6 6 12 12" })
88
- ] });
89
- }
90
- function CancelGlyph({ size } = {}) {
91
- return /* @__PURE__ */ jsx(Svg, { size, children: /* @__PURE__ */ jsx("rect", { x: "5", y: "5", width: "14", height: "14", rx: "2" }) });
92
- }
93
- function RetryGlyph({ size } = {}) {
94
- return /* @__PURE__ */ jsxs(Svg, { size, children: [
95
- /* @__PURE__ */ jsx("path", { d: "M21 12a9 9 0 1 1-3.36-7" }),
96
- /* @__PURE__ */ jsx("path", { d: "M21 3v6h-6" })
97
- ] });
98
- }
99
- function CaseGlyph({ size = 12 } = {}) {
100
- return /* @__PURE__ */ jsxs(Svg, { size, children: [
101
- /* @__PURE__ */ jsx("path", { d: "m3 15 4-8 4 8" }),
102
- /* @__PURE__ */ jsx("path", { d: "M4 13h6" }),
103
- /* @__PURE__ */ jsx("rect", { x: "15", y: "9", width: "6", height: "6", rx: "1.5" }),
104
- /* @__PURE__ */ jsx("path", { d: "M21 9v6" })
105
- ] });
106
- }
107
-
108
- export {
109
- Svg,
110
- RefreshGlyph,
111
- XGlyph,
112
- PlusGlyph,
113
- ChevronGlyph,
114
- DownloadGlyph,
115
- PlugGlyph,
116
- SortAscGlyph,
117
- SortDescGlyph,
118
- ExpandGlyph,
119
- CollapseGlyph,
120
- CopyGlyph,
121
- ClearGlyph,
122
- CancelGlyph,
123
- RetryGlyph,
124
- CaseGlyph
125
- };