@duckcodeailabs/dql-ui 1.6.20 → 1.6.22

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/dist/index.d.ts CHANGED
@@ -8,6 +8,7 @@ export { PanelFrame, PanelSection, PanelCard, StatusPill, PanelEmpty, PanelToolb
8
8
  export { Shell, TopBar, CanvasBody, LeftPanel, RightPanel, BottomDrawer, StatusBar, type ShellProps, type TopBarProps, type CanvasBodyProps, type StatusBarProps, } from './primitives/Shell.js';
9
9
  export { SegmentedControl, type SegmentedControlProps, type SegmentedControlOption, } from './primitives/SegmentedControl.js';
10
10
  export { TrustBadge, type TrustBadgeProps, type TrustState } from './primitives/TrustBadge.js';
11
+ export { DerivationWalkPanel, type DerivationWalkPanelProps, type DerivationWalk, type DerivationStep, type DerivationStepKind, } from './primitives/DerivationWalkPanel.js';
11
12
  export { CellChrome, type CellChromeProps } from './primitives/CellChrome.js';
12
13
  export { PublishedCellChrome, type PublishedCellChromeProps } from './primitives/PublishedCellChrome.js';
13
14
  export { Kbd, type KbdProps } from './primitives/Kbd.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,OAAO,EACP,KAAK,EACL,MAAM,EACN,QAAQ,EACR,UAAU,EACV,UAAU,EACV,IAAI,EACJ,CAAC,EACD,UAAU,EACV,WAAW,EACX,MAAM,EACN,aAAa,EACb,cAAc,EACd,MAAM,EACN,KAAK,WAAW,EAChB,KAAK,SAAS,GACf,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG5F,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,KAAK,wBAAwB,GAC9B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,OAAO,EACP,cAAc,EACd,aAAa,EACb,cAAc,EACd,YAAY,EACZ,KAAK,mBAAmB,GACzB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,UAAU,EACV,YAAY,EACZ,SAAS,EACT,UAAU,EACV,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,MAAM,GACZ,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACL,KAAK,EACL,MAAM,EACN,UAAU,EACV,SAAS,EACT,UAAU,EACV,YAAY,EACZ,SAAS,EACT,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,GAC5B,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAG/F,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAG9E,OAAO,EAAE,mBAAmB,EAAE,KAAK,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAGzG,OAAO,EAAE,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,OAAO,EACP,KAAK,EACL,MAAM,EACN,QAAQ,EACR,UAAU,EACV,UAAU,EACV,IAAI,EACJ,CAAC,EACD,UAAU,EACV,WAAW,EACX,MAAM,EACN,aAAa,EACb,cAAc,EACd,MAAM,EACN,KAAK,WAAW,EAChB,KAAK,SAAS,GACf,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG5F,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,KAAK,wBAAwB,GAC9B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,OAAO,EACP,cAAc,EACd,aAAa,EACb,cAAc,EACd,YAAY,EACZ,KAAK,mBAAmB,GACzB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,UAAU,EACV,YAAY,EACZ,SAAS,EACT,UAAU,EACV,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,MAAM,GACZ,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACL,KAAK,EACL,MAAM,EACN,UAAU,EACV,SAAS,EACT,UAAU,EACV,YAAY,EACZ,SAAS,EACT,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,GAC5B,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAG/F,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,kBAAkB,GACxB,MAAM,qCAAqC,CAAC;AAG7C,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAG9E,OAAO,EAAE,mBAAmB,EAAE,KAAK,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAGzG,OAAO,EAAE,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -16,6 +16,8 @@ export { Shell, TopBar, CanvasBody, LeftPanel, RightPanel, BottomDrawer, StatusB
16
16
  export { SegmentedControl, } from './primitives/SegmentedControl.js';
17
17
  // TrustBadge (v1.3 Track 4 — v1.4 plug slot)
18
18
  export { TrustBadge } from './primitives/TrustBadge.js';
19
+ // DerivationWalkPanel — consumer-facing "Why?" / show-your-work derivation panel
20
+ export { DerivationWalkPanel, } from './primitives/DerivationWalkPanel.js';
19
21
  // CellChrome (v1.3 Track 6 — Hex-style cell card wrapper)
20
22
  export { CellChrome } from './primitives/CellChrome.js';
21
23
  // PublishedCellChrome (v1.3 Track 11 — read-only card shared by App mode + dashboard emitter)
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAE1C,SAAS;AACT,OAAO,EACL,OAAO,EACP,KAAK,EACL,MAAM,EACN,QAAQ,EACR,UAAU,EACV,UAAU,EACV,IAAI,EACJ,CAAC,EACD,UAAU,EACV,WAAW,EACX,MAAM,EACN,aAAa,EACb,cAAc,EACd,MAAM,GAGP,MAAM,mBAAmB,CAAC;AAE3B,QAAQ;AACR,OAAO,EAAE,aAAa,EAAE,QAAQ,EAA2B,MAAM,0BAA0B,CAAC;AAE5F,aAAa;AACb,OAAO,EAAE,OAAO,EAAE,eAAe,EAAqB,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAoB,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,GAElB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,OAAO,EACP,cAAc,EACd,aAAa,EACb,cAAc,EACd,YAAY,GAEb,MAAM,yBAAyB,CAAC;AAEjC,0CAA0C;AAC1C,OAAO,EACL,UAAU,EACV,YAAY,EACZ,SAAS,EACT,UAAU,EACV,UAAU,EACV,YAAY,EACZ,YAAY,GASb,MAAM,4BAA4B,CAAC;AAEpC,yCAAyC;AACzC,OAAO,EACL,KAAK,EACL,MAAM,EACN,UAAU,EACV,SAAS,EACT,UAAU,EACV,YAAY,EACZ,SAAS,GAKV,MAAM,uBAAuB,CAAC;AAE/B,yEAAyE;AACzE,OAAO,EACL,gBAAgB,GAGjB,MAAM,kCAAkC,CAAC;AAE1C,6CAA6C;AAC7C,OAAO,EAAE,UAAU,EAAyC,MAAM,4BAA4B,CAAC;AAE/F,0DAA0D;AAC1D,OAAO,EAAE,UAAU,EAAwB,MAAM,4BAA4B,CAAC;AAE9E,8FAA8F;AAC9F,OAAO,EAAE,mBAAmB,EAAiC,MAAM,qCAAqC,CAAC;AAEzG,+CAA+C;AAC/C,OAAO,EAAE,GAAG,EAAiB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAE1C,SAAS;AACT,OAAO,EACL,OAAO,EACP,KAAK,EACL,MAAM,EACN,QAAQ,EACR,UAAU,EACV,UAAU,EACV,IAAI,EACJ,CAAC,EACD,UAAU,EACV,WAAW,EACX,MAAM,EACN,aAAa,EACb,cAAc,EACd,MAAM,GAGP,MAAM,mBAAmB,CAAC;AAE3B,QAAQ;AACR,OAAO,EAAE,aAAa,EAAE,QAAQ,EAA2B,MAAM,0BAA0B,CAAC;AAE5F,aAAa;AACb,OAAO,EAAE,OAAO,EAAE,eAAe,EAAqB,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAoB,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,GAElB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,OAAO,EACP,cAAc,EACd,aAAa,EACb,cAAc,EACd,YAAY,GAEb,MAAM,yBAAyB,CAAC;AAEjC,0CAA0C;AAC1C,OAAO,EACL,UAAU,EACV,YAAY,EACZ,SAAS,EACT,UAAU,EACV,UAAU,EACV,YAAY,EACZ,YAAY,GASb,MAAM,4BAA4B,CAAC;AAEpC,yCAAyC;AACzC,OAAO,EACL,KAAK,EACL,MAAM,EACN,UAAU,EACV,SAAS,EACT,UAAU,EACV,YAAY,EACZ,SAAS,GAKV,MAAM,uBAAuB,CAAC;AAE/B,yEAAyE;AACzE,OAAO,EACL,gBAAgB,GAGjB,MAAM,kCAAkC,CAAC;AAE1C,6CAA6C;AAC7C,OAAO,EAAE,UAAU,EAAyC,MAAM,4BAA4B,CAAC;AAE/F,iFAAiF;AACjF,OAAO,EACL,mBAAmB,GAKpB,MAAM,qCAAqC,CAAC;AAE7C,0DAA0D;AAC1D,OAAO,EAAE,UAAU,EAAwB,MAAM,4BAA4B,CAAC;AAE9E,8FAA8F;AAC9F,OAAO,EAAE,mBAAmB,EAAiC,MAAM,qCAAqC,CAAC;AAEzG,+CAA+C;AAC/C,OAAO,EAAE,GAAG,EAAiB,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,30 @@
1
+ import React from 'react';
2
+ export type DerivationStepKind = 'value' | 'block' | 'term' | 'metric' | 'dimension' | 'model' | 'source' | 'consumer';
3
+ export interface DerivationStep {
4
+ kind: DerivationStepKind;
5
+ name: string;
6
+ owner?: string;
7
+ status?: string;
8
+ detail?: string;
9
+ }
10
+ export interface DerivationWalk {
11
+ value?: string;
12
+ summary: string;
13
+ steps: DerivationStep[];
14
+ trustLabel?: string;
15
+ freshness?: string;
16
+ caveats?: string[];
17
+ }
18
+ export interface DerivationWalkPanelProps {
19
+ walk: DerivationWalk;
20
+ /** Start expanded. Defaults to false — the "Why?" affordance is collapsed. */
21
+ defaultOpen?: boolean;
22
+ /** Label for the collapsed affordance. Defaults to "Why?". */
23
+ triggerLabel?: React.ReactNode;
24
+ }
25
+ /**
26
+ * Progressive-disclosure derivation panel. Depth is collapsed by default;
27
+ * opening reveals the steps one level at a time via "Show more".
28
+ */
29
+ export declare function DerivationWalkPanel({ walk, defaultOpen, triggerLabel }: DerivationWalkPanelProps): import("react/jsx-runtime").JSX.Element;
30
+ //# sourceMappingURL=DerivationWalkPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DerivationWalkPanel.d.ts","sourceRoot":"","sources":["../../src/primitives/DerivationWalkPanel.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,MAAM,kBAAkB,GAC1B,OAAO,GACP,OAAO,GACP,MAAM,GACN,QAAQ,GACR,WAAW,GACX,OAAO,GACP,QAAQ,GACR,UAAU,CAAC;AAEf,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,kBAAkB,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,cAAc,CAAC;IACrB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAChC;AAqBD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,IAAI,EAAE,WAAmB,EAAE,YAAY,EAAE,EAAE,wBAAwB,2CAiKxG"}
@@ -0,0 +1,113 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // "Show your work" — consumer-facing derivation walk panel.
3
+ //
4
+ // Renders the plain-language story of how a certified (or generated) answer was
5
+ // derived: value → block (owner / status / review) → terms → metrics → dbt
6
+ // model / source, plus caveats and an optional trust/freshness line.
7
+ //
8
+ // It deliberately HIDES depth. The walk is collapsed behind a "Why?" affordance
9
+ // and, once opened, reveals one step at a time (progressive disclosure) so a
10
+ // non-technical consumer is never shown the raw lineage graph. The component is
11
+ // presentational and dependency-free: the host assembles the `DerivationWalk`
12
+ // payload (via dql-core's `buildDerivationWalk`) and passes it in.
13
+ import React from 'react';
14
+ import { StatusPill } from './PanelFrame.js';
15
+ const STEP_LABEL = {
16
+ value: 'Value',
17
+ block: 'Certified block',
18
+ term: 'Business term',
19
+ metric: 'Metric',
20
+ dimension: 'Dimension',
21
+ model: 'dbt model',
22
+ source: 'Source table',
23
+ consumer: 'Used by',
24
+ };
25
+ function statusTone(status) {
26
+ const value = (status ?? '').toLowerCase();
27
+ if (value === 'certified')
28
+ return 'success';
29
+ if (value === 'deprecated')
30
+ return 'neutral';
31
+ if (value.includes('review') || value === 'draft' || value === 'pending')
32
+ return 'warning';
33
+ return 'neutral';
34
+ }
35
+ /**
36
+ * Progressive-disclosure derivation panel. Depth is collapsed by default;
37
+ * opening reveals the steps one level at a time via "Show more".
38
+ */
39
+ export function DerivationWalkPanel({ walk, defaultOpen = false, triggerLabel }) {
40
+ const [open, setOpen] = React.useState(defaultOpen);
41
+ // Reveal one step at a time. Start by showing the value + block (the first
42
+ // two steps); each "Show more" reveals the next single level.
43
+ const initialVisible = Math.min(walk.steps.length, 2);
44
+ const [visible, setVisible] = React.useState(initialVisible);
45
+ const reset = () => setVisible(initialVisible);
46
+ const shownSteps = walk.steps.slice(0, visible);
47
+ const remaining = walk.steps.length - visible;
48
+ return (_jsxs("div", { style: {
49
+ border: '1px solid var(--border-subtle, rgba(127,127,127,0.25))',
50
+ borderRadius: 8,
51
+ background: 'var(--bg-1, transparent)',
52
+ overflow: 'hidden',
53
+ }, children: [_jsxs("button", { type: "button", "aria-expanded": open, onClick: () => {
54
+ setOpen((value) => !value);
55
+ if (open)
56
+ reset();
57
+ }, style: {
58
+ width: '100%',
59
+ display: 'flex',
60
+ alignItems: 'center',
61
+ justifyContent: 'space-between',
62
+ gap: 8,
63
+ border: 0,
64
+ background: 'transparent',
65
+ color: 'var(--text-secondary, inherit)',
66
+ cursor: 'pointer',
67
+ padding: '8px 11px',
68
+ font: 'inherit',
69
+ fontSize: 12,
70
+ fontWeight: 700,
71
+ }, children: [_jsxs("span", { style: { display: 'flex', alignItems: 'center', gap: 7 }, children: [_jsx("span", { "aria-hidden": true, style: { transform: open ? 'rotate(90deg)' : 'none', transition: 'transform 120ms', display: 'inline-block' }, children: "\u25B8" }), triggerLabel ?? 'Why?'] }), _jsx("span", { style: { fontSize: 11, color: 'var(--text-tertiary, inherit)', fontWeight: 600 }, children: open ? 'Hide derivation' : 'Show how this was derived' })] }), open && (_jsxs("div", { style: { padding: '2px 11px 11px', display: 'flex', flexDirection: 'column', gap: 10 }, children: [_jsx("div", { style: { fontSize: 12.5, lineHeight: 1.5, color: 'var(--text-primary, inherit)' }, children: walk.summary }), (walk.trustLabel || walk.freshness) && (_jsxs("div", { style: { display: 'flex', gap: 6, flexWrap: 'wrap', alignItems: 'center' }, children: [walk.trustLabel && _jsx(StatusPill, { tone: statusTone(walk.trustLabel), children: formatLabel(walk.trustLabel) }), walk.freshness && (_jsxs("span", { style: { fontSize: 11, color: 'var(--text-tertiary, inherit)' }, children: ["Fresh as of ", formatFreshness(walk.freshness)] }))] })), _jsx("ol", { style: { listStyle: 'none', margin: 0, padding: 0, display: 'flex', flexDirection: 'column', gap: 7 }, children: shownSteps.map((step, index) => (_jsxs("li", { style: {
72
+ display: 'flex',
73
+ gap: 9,
74
+ alignItems: 'flex-start',
75
+ paddingLeft: 2,
76
+ }, children: [_jsx("span", { "aria-hidden": true, style: {
77
+ marginTop: 3,
78
+ width: 7,
79
+ height: 7,
80
+ borderRadius: 999,
81
+ flexShrink: 0,
82
+ background: 'var(--accent, currentColor)',
83
+ opacity: 0.7,
84
+ } }), _jsxs("div", { style: { minWidth: 0, display: 'flex', flexDirection: 'column', gap: 2 }, children: [_jsxs("div", { style: { display: 'flex', gap: 6, alignItems: 'center', flexWrap: 'wrap' }, children: [_jsx("span", { style: { fontSize: 10, fontWeight: 700, textTransform: 'uppercase', letterSpacing: '0.04em', color: 'var(--text-tertiary, inherit)' }, children: STEP_LABEL[step.kind] }), _jsx("span", { style: { fontSize: 12.5, fontWeight: 700, color: 'var(--text-primary, inherit)', overflowWrap: 'anywhere' }, children: step.name }), step.status && _jsx(StatusPill, { tone: statusTone(step.status), children: formatLabel(step.status) })] }), (step.owner || step.detail) && (_jsxs("div", { style: { fontSize: 11.5, color: 'var(--text-secondary, inherit)', lineHeight: 1.45 }, children: [step.owner && _jsxs("span", { children: ["Owner: ", step.owner, ". "] }), step.detail] }))] })] }, `${step.kind}-${step.name}-${index}`))) }), remaining > 0 && (_jsxs("button", { type: "button", onClick: () => setVisible((value) => Math.min(walk.steps.length, value + 1)), style: {
85
+ alignSelf: 'flex-start',
86
+ border: '1px solid var(--border-default, rgba(127,127,127,0.3))',
87
+ borderRadius: 6,
88
+ background: 'transparent',
89
+ color: 'var(--accent, inherit)',
90
+ cursor: 'pointer',
91
+ padding: '4px 9px',
92
+ fontSize: 11,
93
+ fontWeight: 700,
94
+ }, children: ["Show next step (", remaining, " more)"] })), walk.caveats && walk.caveats.length > 0 && (_jsxs("div", { style: {
95
+ borderLeft: '3px solid var(--status-warning, #d29922)',
96
+ background: 'var(--status-warning-bg, rgba(210,153,34,0.08))',
97
+ borderRadius: 6,
98
+ padding: '8px 10px',
99
+ display: 'flex',
100
+ flexDirection: 'column',
101
+ gap: 4,
102
+ }, children: [_jsx("span", { style: { fontSize: 10, fontWeight: 800, textTransform: 'uppercase', letterSpacing: '0.04em', color: 'var(--status-warning, inherit)' }, children: "Caveats" }), walk.caveats.map((caveat, index) => (_jsx("span", { style: { fontSize: 11.5, color: 'var(--text-secondary, inherit)', lineHeight: 1.45 }, children: caveat }, index)))] }))] }))] }));
103
+ }
104
+ function formatLabel(value) {
105
+ return value.replace(/[_-]+/g, ' ').replace(/\b\w/g, (char) => char.toUpperCase());
106
+ }
107
+ function formatFreshness(value) {
108
+ const date = new Date(value);
109
+ if (Number.isNaN(date.getTime()))
110
+ return value;
111
+ return date.toLocaleDateString();
112
+ }
113
+ //# sourceMappingURL=DerivationWalkPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DerivationWalkPanel.js","sourceRoot":"","sources":["../../src/primitives/DerivationWalkPanel.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PublishedCellChrome.d.ts","sourceRoot":"","sources":["../../src/primitives/PublishedCellChrome.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,WAAW,wBAAwB;IACvC,8DAA8D;IAC9D,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,oEAAoE;IACpE,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,6EAA6E;IAC7E,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,+CAA+C;IAC/C,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAEzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAaD,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,OAAO,EACP,UAAU,EACV,QAAQ,EACR,MAAM,EACN,UAAU,EACV,UAAU,EACV,SAAS,EACT,KAAK,GACN,EAAE,wBAAwB,2CAkF1B"}
1
+ {"version":3,"file":"PublishedCellChrome.d.ts","sourceRoot":"","sources":["../../src/primitives/PublishedCellChrome.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,WAAW,wBAAwB;IACvC,8DAA8D;IAC9D,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,oEAAoE;IACpE,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,6EAA6E;IAC7E,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,+CAA+C;IAC/C,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAEzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAkBD,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,OAAO,EACP,UAAU,EACV,QAAQ,EACR,MAAM,EACN,UAAU,EACV,UAAU,EACV,SAAS,EACT,KAAK,GACN,EAAE,wBAAwB,2CAkF1B"}
@@ -1,10 +1,15 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  const TRUST_DOT = {
3
+ // Canonical vocabulary (mirrors dql-core).
4
+ certified: 'var(--color-accent-green, #3fb950)',
5
+ reviewed: 'var(--color-accent-blue, #58a6ff)',
6
+ ai_generated: 'var(--color-accent-yellow, #e3b341)',
7
+ insufficient_context: 'var(--color-text-muted, #9aa4b2)',
8
+ conflict: 'var(--color-accent-red, #f85149)',
9
+ // Legacy lifecycle states.
3
10
  draft: 'var(--color-text-muted, #9aa4b2)',
4
11
  pending: 'var(--color-accent-yellow, #e3b341)',
5
12
  review: 'var(--color-accent-yellow, #e3b341)',
6
- certified: 'var(--color-accent-green, #3fb950)',
7
- ai_generated: 'var(--color-accent-yellow, #e3b341)',
8
13
  uncertified: 'var(--color-accent-yellow, #e3b341)',
9
14
  deprecated: 'var(--color-accent-red, #f85149)',
10
15
  no_answer: 'var(--color-accent-red, #f85149)',
@@ -1 +1 @@
1
- {"version":3,"file":"PublishedCellChrome.js","sourceRoot":"","sources":["../../src/primitives/PublishedCellChrome.tsx"],"names":[],"mappings":";AA4BA,MAAM,SAAS,GAA4C;IACzD,KAAK,EAAE,kCAAkC;IACzC,OAAO,EAAE,qCAAqC;IAC9C,MAAM,EAAE,qCAAqC;IAC7C,SAAS,EAAE,oCAAoC;IAC/C,YAAY,EAAE,qCAAqC;IACnD,WAAW,EAAE,qCAAqC;IAClD,UAAU,EAAE,kCAAkC;IAC9C,SAAS,EAAE,kCAAkC;CAC9C,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,EAClC,KAAK,EACL,OAAO,EACP,UAAU,EACV,QAAQ,EACR,MAAM,EACN,UAAU,EACV,UAAU,EACV,SAAS,EACT,KAAK,GACoB;IACzB,MAAM,EAAE,GAAG,UAAU,IAAI,uCAAuC,CAAC;IACjE,MAAM,MAAM,GAAG,UAAU,IAAI,oDAAoD,CAAC;IAElF,OAAO,CACL,eACE,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE;YACL,YAAY,EAAE,CAAC;YACf,MAAM,EAAE,aAAa,MAAM,EAAE;YAC7B,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,QAAQ;YAClB,GAAG,KAAK;SACT,aAEA,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,CAC/D,eACE,KAAK,EAAE;oBACL,OAAO,EAAE,MAAM;oBACf,UAAU,EAAE,QAAQ;oBACpB,GAAG,EAAE,CAAC;oBACN,OAAO,EAAE,WAAW;oBACpB,YAAY,EAAE,aAAa,MAAM,EAAE;iBACpC,aAEA,UAAU,IAAI,CACb,eACE,KAAK,EAAE,UAAU,gBACL,gBAAgB,UAAU,EAAE,EACxC,KAAK,EAAE;4BACL,KAAK,EAAE,CAAC;4BACR,MAAM,EAAE,CAAC;4BACT,YAAY,EAAE,KAAK;4BACnB,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC;4BACjC,UAAU,EAAE,CAAC;yBACd,GACD,CACH,EACD,eAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,aACjC,KAAK,KAAK,SAAS,IAAI,CACtB,cACE,KAAK,EAAE;oCACL,QAAQ,EAAE,EAAE;oCACZ,UAAU,EAAE,GAAG;oCACf,KAAK,EAAE,oCAAoC;oCAC3C,QAAQ,EAAE,QAAQ;oCAClB,YAAY,EAAE,UAAU;oCACxB,UAAU,EAAE,QAAQ;iCACrB,YAEA,KAAK,GACF,CACP,EACA,OAAO,KAAK,SAAS,IAAI,CACxB,cACE,KAAK,EAAE;oCACL,QAAQ,EAAE,EAAE;oCACZ,KAAK,EAAE,kCAAkC;oCACzC,SAAS,EAAE,CAAC;iCACb,YAEA,OAAO,GACJ,CACP,IACG,IACF,CACP,EACD,cAAK,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,YAAG,QAAQ,GAAO,EAC5C,MAAM,KAAK,SAAS,IAAI,CACvB,cACE,KAAK,EAAE;oBACL,OAAO,EAAE,UAAU;oBACnB,SAAS,EAAE,aAAa,MAAM,EAAE;oBAChC,QAAQ,EAAE,EAAE;oBACZ,KAAK,EAAE,kCAAkC;iBAC1C,YAEA,MAAM,GACH,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"PublishedCellChrome.js","sourceRoot":"","sources":["../../src/primitives/PublishedCellChrome.tsx"],"names":[],"mappings":";AA4BA,MAAM,SAAS,GAA4C;IACzD,2CAA2C;IAC3C,SAAS,EAAE,oCAAoC;IAC/C,QAAQ,EAAE,mCAAmC;IAC7C,YAAY,EAAE,qCAAqC;IACnD,oBAAoB,EAAE,kCAAkC;IACxD,QAAQ,EAAE,kCAAkC;IAC5C,2BAA2B;IAC3B,KAAK,EAAE,kCAAkC;IACzC,OAAO,EAAE,qCAAqC;IAC9C,MAAM,EAAE,qCAAqC;IAC7C,WAAW,EAAE,qCAAqC;IAClD,UAAU,EAAE,kCAAkC;IAC9C,SAAS,EAAE,kCAAkC;CAC9C,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,EAClC,KAAK,EACL,OAAO,EACP,UAAU,EACV,QAAQ,EACR,MAAM,EACN,UAAU,EACV,UAAU,EACV,SAAS,EACT,KAAK,GACoB;IACzB,MAAM,EAAE,GAAG,UAAU,IAAI,uCAAuC,CAAC;IACjE,MAAM,MAAM,GAAG,UAAU,IAAI,oDAAoD,CAAC;IAElF,OAAO,CACL,eACE,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE;YACL,YAAY,EAAE,CAAC;YACf,MAAM,EAAE,aAAa,MAAM,EAAE;YAC7B,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,QAAQ;YAClB,GAAG,KAAK;SACT,aAEA,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,CAC/D,eACE,KAAK,EAAE;oBACL,OAAO,EAAE,MAAM;oBACf,UAAU,EAAE,QAAQ;oBACpB,GAAG,EAAE,CAAC;oBACN,OAAO,EAAE,WAAW;oBACpB,YAAY,EAAE,aAAa,MAAM,EAAE;iBACpC,aAEA,UAAU,IAAI,CACb,eACE,KAAK,EAAE,UAAU,gBACL,gBAAgB,UAAU,EAAE,EACxC,KAAK,EAAE;4BACL,KAAK,EAAE,CAAC;4BACR,MAAM,EAAE,CAAC;4BACT,YAAY,EAAE,KAAK;4BACnB,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC;4BACjC,UAAU,EAAE,CAAC;yBACd,GACD,CACH,EACD,eAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,aACjC,KAAK,KAAK,SAAS,IAAI,CACtB,cACE,KAAK,EAAE;oCACL,QAAQ,EAAE,EAAE;oCACZ,UAAU,EAAE,GAAG;oCACf,KAAK,EAAE,oCAAoC;oCAC3C,QAAQ,EAAE,QAAQ;oCAClB,YAAY,EAAE,UAAU;oCACxB,UAAU,EAAE,QAAQ;iCACrB,YAEA,KAAK,GACF,CACP,EACA,OAAO,KAAK,SAAS,IAAI,CACxB,cACE,KAAK,EAAE;oCACL,QAAQ,EAAE,EAAE;oCACZ,KAAK,EAAE,kCAAkC;oCACzC,SAAS,EAAE,CAAC;iCACb,YAEA,OAAO,GACJ,CACP,IACG,IACF,CACP,EACD,cAAK,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,YAAG,QAAQ,GAAO,EAC5C,MAAM,KAAK,SAAS,IAAI,CACvB,cACE,KAAK,EAAE;oBACL,OAAO,EAAE,UAAU;oBACnB,SAAS,EAAE,aAAa,MAAM,EAAE;oBAChC,QAAQ,EAAE,EAAE;oBACZ,KAAK,EAAE,kCAAkC;iBAC1C,YAEA,MAAM,GACH,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -1,8 +1,35 @@
1
1
  import React from 'react';
2
- export type TrustState = 'draft' | 'pending' | 'review' | 'certified' | 'deprecated' | 'ai_generated' | 'uncertified' | 'no_answer';
2
+ /**
3
+ * Canonical trust-label vocabulary.
4
+ *
5
+ * This MIRRORS the single source of truth in
6
+ * `@duckcodeailabs/dql-core` (`src/trust/labels.ts`): the same five base
7
+ * labels (Certified · Reviewed · AI-Generated · Insufficient-Context ·
8
+ * Conflict), each with a base label + optional qualifier shape and a color
9
+ * token. `dql-ui` is a browser-only leaf package with no DQL workspace
10
+ * dependencies, so it cannot import dql-core (which carries node-only deps)
11
+ * without bloating the UI bundle — hence this intentional mirror. Keep the two
12
+ * in sync; the ids and base labels must match exactly.
13
+ *
14
+ * Color tokens map to `StatusPill` tones here. Unknown labels degrade to a
15
+ * safe default rather than throwing, matching dql-core's `resolveTrustLabel`.
16
+ */
17
+ export type CanonicalTrustLabelId = 'certified' | 'reviewed' | 'ai_generated' | 'insufficient_context' | 'conflict';
18
+ /**
19
+ * Legacy lifecycle states, retained for backward compatibility. Existing
20
+ * callers passing these keep working; new code should prefer the canonical ids.
21
+ */
22
+ export type LegacyTrustState = 'draft' | 'pending' | 'review' | 'deprecated' | 'uncertified' | 'no_answer';
23
+ export type TrustState = CanonicalTrustLabelId | LegacyTrustState;
3
24
  export interface TrustBadgeProps {
4
25
  state?: TrustState;
26
+ /**
27
+ * Optional downgrade/composition qualifier appended as `base · qualifier`,
28
+ * e.g. `state="certified" qualifier="invariant violated"` →
29
+ * "Certified · invariant violated". Ignored when an explicit `label` is set.
30
+ */
31
+ qualifier?: string;
5
32
  label?: React.ReactNode;
6
33
  }
7
- export declare function TrustBadge({ state, label }: TrustBadgeProps): import("react/jsx-runtime").JSX.Element | null;
34
+ export declare function TrustBadge({ state, qualifier, label }: TrustBadgeProps): import("react/jsx-runtime").JSX.Element | null;
8
35
  //# sourceMappingURL=TrustBadge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TrustBadge.d.ts","sourceRoot":"","sources":["../../src/primitives/TrustBadge.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,MAAM,UAAU,GAClB,OAAO,GACP,SAAS,GACT,QAAQ,GACR,WAAW,GACX,YAAY,GACZ,cAAc,GACd,aAAa,GACb,WAAW,CAAC;AAEhB,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACzB;AAED,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,eAAe,kDAK3D"}
1
+ {"version":3,"file":"TrustBadge.d.ts","sourceRoot":"","sources":["../../src/primitives/TrustBadge.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,qBAAqB,GAC7B,WAAW,GACX,UAAU,GACV,cAAc,GACd,sBAAsB,GACtB,UAAU,CAAC;AAYf;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GACxB,OAAO,GACP,SAAS,GACT,QAAQ,GACR,YAAY,GACZ,aAAa,GACb,WAAW,CAAC;AAEhB,MAAM,MAAM,UAAU,GAAG,qBAAqB,GAAG,gBAAgB,CAAC;AAElE,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACzB;AAED,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,eAAe,kDAMtE"}
@@ -1,17 +1,31 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { StatusPill } from './PanelFrame.js';
3
- export function TrustBadge({ state, label }) {
3
+ const CANONICAL_TRUST_LABELS = {
4
+ certified: { base: 'Certified', tone: 'success' },
5
+ reviewed: { base: 'Reviewed', tone: 'info' },
6
+ ai_generated: { base: 'AI-Generated', tone: 'warning' },
7
+ insufficient_context: { base: 'Insufficient-Context', tone: 'neutral' },
8
+ conflict: { base: 'Conflict', tone: 'error' },
9
+ };
10
+ const DEFAULT_CANONICAL_TRUST_LABEL_ID = 'insufficient_context';
11
+ export function TrustBadge({ state, qualifier, label }) {
4
12
  if (!state)
5
13
  return null;
6
- const config = TRUST_BADGE_CONFIG[state] ?? TRUST_BADGE_CONFIG.draft;
7
- return _jsx(StatusPill, { tone: config.tone, children: label ?? config.label });
14
+ const config = TRUST_BADGE_CONFIG[state] ?? TRUST_BADGE_CONFIG[DEFAULT_CANONICAL_TRUST_LABEL_ID];
15
+ const composed = qualifier ? `${config.label} · ${qualifier}` : config.label;
16
+ return _jsx(StatusPill, { tone: config.tone, children: label ?? composed });
8
17
  }
9
18
  const TRUST_BADGE_CONFIG = {
10
- certified: { tone: 'success', label: 'Certified' },
19
+ // Canonical vocabulary (mirrors dql-core).
20
+ certified: { tone: CANONICAL_TRUST_LABELS.certified.tone, label: CANONICAL_TRUST_LABELS.certified.base },
21
+ reviewed: { tone: CANONICAL_TRUST_LABELS.reviewed.tone, label: CANONICAL_TRUST_LABELS.reviewed.base },
22
+ ai_generated: { tone: CANONICAL_TRUST_LABELS.ai_generated.tone, label: CANONICAL_TRUST_LABELS.ai_generated.base },
23
+ insufficient_context: { tone: CANONICAL_TRUST_LABELS.insufficient_context.tone, label: CANONICAL_TRUST_LABELS.insufficient_context.base },
24
+ conflict: { tone: CANONICAL_TRUST_LABELS.conflict.tone, label: CANONICAL_TRUST_LABELS.conflict.base },
25
+ // Legacy lifecycle states (unchanged behavior).
11
26
  draft: { tone: 'warning', label: 'Draft' },
12
27
  pending: { tone: 'warning', label: 'Pending review' },
13
28
  review: { tone: 'warning', label: 'Review' },
14
- ai_generated: { tone: 'warning', label: 'AI draft' },
15
29
  uncertified: { tone: 'warning', label: 'Uncertified' },
16
30
  deprecated: { tone: 'neutral', label: 'Deprecated' },
17
31
  no_answer: { tone: 'error', label: 'No answer' },
@@ -1 +1 @@
1
- {"version":3,"file":"TrustBadge.js","sourceRoot":"","sources":["../../src/primitives/TrustBadge.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAiB7C,MAAM,UAAU,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,EAAmB;IAC1D,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC;IACrE,OAAO,KAAC,UAAU,IAAC,IAAI,EAAE,MAAM,CAAC,IAAI,YAAG,KAAK,IAAI,MAAM,CAAC,KAAK,GAAc,CAAC;AAC7E,CAAC;AAED,MAAM,kBAAkB,GAAiG;IACvH,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE;IAClD,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE;IAC1C,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE;IACrD,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC5C,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE;IACpD,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE;IACtD,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE;IACpD,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE;CACjD,CAAC"}
1
+ {"version":3,"file":"TrustBadge.js","sourceRoot":"","sources":["../../src/primitives/TrustBadge.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AA0B7C,MAAM,sBAAsB,GAAgE;IAC1F,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;IACjD,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE;IAC5C,YAAY,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE;IACvD,oBAAoB,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,SAAS,EAAE;IACvE,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE;CAC9C,CAAC;AAEF,MAAM,gCAAgC,GAA0B,sBAAsB,CAAC;AA2BvF,MAAM,UAAU,UAAU,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAmB;IACrE,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,kBAAkB,CAAC,gCAAgC,CAAC,CAAC;IACjG,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,MAAM,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;IAC7E,OAAO,KAAC,UAAU,IAAC,IAAI,EAAE,MAAM,CAAC,IAAI,YAAG,KAAK,IAAI,QAAQ,GAAc,CAAC;AACzE,CAAC;AAED,MAAM,kBAAkB,GAAsD;IAC5E,2CAA2C;IAC3C,SAAS,EAAE,EAAE,IAAI,EAAE,sBAAsB,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,sBAAsB,CAAC,SAAS,CAAC,IAAI,EAAE;IACxG,QAAQ,EAAE,EAAE,IAAI,EAAE,sBAAsB,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,sBAAsB,CAAC,QAAQ,CAAC,IAAI,EAAE;IACrG,YAAY,EAAE,EAAE,IAAI,EAAE,sBAAsB,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,sBAAsB,CAAC,YAAY,CAAC,IAAI,EAAE;IACjH,oBAAoB,EAAE,EAAE,IAAI,EAAE,sBAAsB,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,sBAAsB,CAAC,oBAAoB,CAAC,IAAI,EAAE;IACzI,QAAQ,EAAE,EAAE,IAAI,EAAE,sBAAsB,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,sBAAsB,CAAC,QAAQ,CAAC,IAAI,EAAE;IACrG,gDAAgD;IAChD,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE;IAC1C,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE;IACrD,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC5C,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE;IACtD,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE;IACpD,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE;CACjD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duckcodeailabs/dql-ui",
3
- "version": "1.6.20",
3
+ "version": "1.6.22",
4
4
  "description": "Design tokens, theme provider, and headless primitives for the DQL notebook + dashboard shell",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",