@miethe/ui 0.2.0 → 0.3.0
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/CHANGELOG.md +14 -0
- package/README.md +87 -0
- package/dist/primitives/BatchReadinessPill.d.ts +22 -0
- package/dist/primitives/BatchReadinessPill.d.ts.map +1 -0
- package/dist/primitives/BatchReadinessPill.js +20 -0
- package/dist/primitives/BatchReadinessPill.js.map +1 -0
- package/dist/primitives/EffectiveStatusChips.d.ts +43 -0
- package/dist/primitives/EffectiveStatusChips.d.ts.map +1 -0
- package/dist/primitives/EffectiveStatusChips.js +23 -0
- package/dist/primitives/EffectiveStatusChips.js.map +1 -0
- package/dist/primitives/MismatchBadge.d.ts +34 -0
- package/dist/primitives/MismatchBadge.d.ts.map +1 -0
- package/dist/primitives/MismatchBadge.js +28 -0
- package/dist/primitives/MismatchBadge.js.map +1 -0
- package/dist/primitives/PlanningNodeTypeIcon.d.ts +33 -0
- package/dist/primitives/PlanningNodeTypeIcon.d.ts.map +1 -0
- package/dist/primitives/PlanningNodeTypeIcon.js +35 -0
- package/dist/primitives/PlanningNodeTypeIcon.js.map +1 -0
- package/dist/primitives/StatusChip.d.ts +17 -0
- package/dist/primitives/StatusChip.d.ts.map +1 -0
- package/dist/primitives/StatusChip.js +22 -0
- package/dist/primitives/StatusChip.js.map +1 -0
- package/dist/primitives/index.d.ts +12 -0
- package/dist/primitives/index.d.ts.map +1 -1
- package/dist/primitives/index.js +7 -0
- package/dist/primitives/index.js.map +1 -1
- package/dist/primitives/variants.d.ts +18 -0
- package/dist/primitives/variants.d.ts.map +1 -0
- package/dist/primitives/variants.js +33 -0
- package/dist/primitives/variants.js.map +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.3.0] - 2026-04-17
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **Planning Primitives** (`@miethe/ui/primitives`) — extracted from CCDash Planning Control Plane (PCP-709)
|
|
15
|
+
- `StatusChip`: Five-variant status chip (neutral/ok/warn/error/info) with optional tooltip. Pure presentational; accepts `label`, `variant`, `tooltip` props.
|
|
16
|
+
- `EffectiveStatusChips`: Composes `StatusChip` to render raw + effective status pair with hover provenance tooltip. Shows `eff:` chip only when statuses differ.
|
|
17
|
+
- `MismatchBadge`: Amber mismatch indicator in two modes — compact inline chip and full banner with evidence chips. Accepts `state`, `reason`, `evidenceLabels`, `compact` props.
|
|
18
|
+
- `BatchReadinessPill`: Wraps `StatusChip` for batch readiness state (`ready`/`blocked`/`waiting`/`unknown`) with optional blocking node/task ID display.
|
|
19
|
+
- `PlanningNodeTypeIcon`: Maps `PlanningNodeType` string to a lucide-react icon. Supports 7 node types: `design_spec`, `prd`, `implementation_plan`, `progress`, `context`, `tracker`, `report`.
|
|
20
|
+
- `variants.ts`: Exported helper types (`StatusChipVariant`, `ReadinessVariant`) and mapping functions (`statusVariant()`, `readinessVariant()`) for domain status → chip variant conversion.
|
|
21
|
+
- Supporting types: `PlanningStatusProvenance`, `PlanningStatusProvenanceSource`, `PlanningStatusEvidence`, `PlanningPhaseBatchReadinessState`, `PlanningNodeType`.
|
|
22
|
+
- 43 new unit tests across 5 test files covering all variants, prop forwarding, edge cases, and SVG rendering.
|
|
23
|
+
|
|
10
24
|
## [0.2.0] - 2026-04-16
|
|
11
25
|
|
|
12
26
|
### Added
|
package/README.md
CHANGED
|
@@ -797,6 +797,93 @@ import { LockIcon } from '@miethe/ui/primitives';
|
|
|
797
797
|
</div>
|
|
798
798
|
```
|
|
799
799
|
|
|
800
|
+
## Planning Primitives (`@miethe/ui/primitives`)
|
|
801
|
+
|
|
802
|
+
Five status and metadata display primitives extracted from the CCDash Planning Control Plane (PCP-709). These are generic enough to be reused across any planning-adjacent feature.
|
|
803
|
+
|
|
804
|
+
### StatusChip
|
|
805
|
+
|
|
806
|
+
Five-variant status chip (neutral / ok / warn / error / info) as an inline-flex badge. Accepts an optional `tooltip` rendered as a `title` attribute.
|
|
807
|
+
|
|
808
|
+
```typescript
|
|
809
|
+
import { StatusChip } from '@miethe/ui/primitives';
|
|
810
|
+
|
|
811
|
+
<StatusChip label="pending" variant="warn" tooltip="Waiting on upstream" />
|
|
812
|
+
```
|
|
813
|
+
|
|
814
|
+
**Variants:** `neutral` (slate) | `ok` (emerald) | `warn` (amber) | `error` (rose) | `info` (blue)
|
|
815
|
+
|
|
816
|
+
### EffectiveStatusChips
|
|
817
|
+
|
|
818
|
+
Renders a raw status chip plus an optional effective status chip when the two differ. The raw chip gains a hover tooltip showing provenance source and reason when `provenance` is supplied.
|
|
819
|
+
|
|
820
|
+
```typescript
|
|
821
|
+
import { EffectiveStatusChips } from '@miethe/ui/primitives';
|
|
822
|
+
|
|
823
|
+
<EffectiveStatusChips
|
|
824
|
+
rawStatus="pending"
|
|
825
|
+
effectiveStatus="blocked"
|
|
826
|
+
isMismatch
|
|
827
|
+
provenance={{ source: 'derived', reason: 'Blocked by upstream task', evidence: [] }}
|
|
828
|
+
/>
|
|
829
|
+
```
|
|
830
|
+
|
|
831
|
+
### MismatchBadge
|
|
832
|
+
|
|
833
|
+
Amber mismatch indicator in two modes: compact inline chip or full banner with title, reason, and evidence label chips.
|
|
834
|
+
|
|
835
|
+
```typescript
|
|
836
|
+
import { MismatchBadge } from '@miethe/ui/primitives';
|
|
837
|
+
|
|
838
|
+
// Compact inline chip (for card/list contexts)
|
|
839
|
+
<MismatchBadge state="stale" reason="Status diverged from progress" compact />
|
|
840
|
+
|
|
841
|
+
// Full banner (for detail headers)
|
|
842
|
+
<MismatchBadge
|
|
843
|
+
state="mismatched"
|
|
844
|
+
reason="Progress says done but PRD is pending"
|
|
845
|
+
evidenceLabels={['PRD-outdated', 'progress-diverged']}
|
|
846
|
+
/>
|
|
847
|
+
```
|
|
848
|
+
|
|
849
|
+
### BatchReadinessPill
|
|
850
|
+
|
|
851
|
+
Wraps `StatusChip` to show batch readiness state (`ready` / `blocked` / `waiting` / `unknown`) with optional blocking node/task IDs displayed below the chip.
|
|
852
|
+
|
|
853
|
+
```typescript
|
|
854
|
+
import { BatchReadinessPill } from '@miethe/ui/primitives';
|
|
855
|
+
|
|
856
|
+
<BatchReadinessPill
|
|
857
|
+
readinessState="blocked"
|
|
858
|
+
blockingNodeIds={['prd-auth', 'prd-onboarding']}
|
|
859
|
+
blockingTaskIds={['TASK-2.1']}
|
|
860
|
+
/>
|
|
861
|
+
```
|
|
862
|
+
|
|
863
|
+
### PlanningNodeTypeIcon
|
|
864
|
+
|
|
865
|
+
Maps a `PlanningNodeType` string to a lucide-react icon. Supports 7 node types: `design_spec`, `prd`, `implementation_plan`, `progress`, `context`, `tracker`, `report`. Accepts `size` (default 13) and `className` props.
|
|
866
|
+
|
|
867
|
+
```typescript
|
|
868
|
+
import { PlanningNodeTypeIcon } from '@miethe/ui/primitives';
|
|
869
|
+
import type { PlanningNodeType } from '@miethe/ui/primitives';
|
|
870
|
+
|
|
871
|
+
<PlanningNodeTypeIcon type="prd" size={16} className="text-blue-400" />
|
|
872
|
+
```
|
|
873
|
+
|
|
874
|
+
### Variant Helpers
|
|
875
|
+
|
|
876
|
+
```typescript
|
|
877
|
+
import { statusVariant, readinessVariant } from '@miethe/ui/primitives';
|
|
878
|
+
import type { StatusChipVariant, ReadinessVariant } from '@miethe/ui/primitives';
|
|
879
|
+
|
|
880
|
+
// Map any status string to a StatusChip variant
|
|
881
|
+
const variant = statusVariant('in_progress'); // → 'ok'
|
|
882
|
+
const readiness = readinessVariant('blocked'); // → 'error'
|
|
883
|
+
```
|
|
884
|
+
|
|
885
|
+
---
|
|
886
|
+
|
|
800
887
|
## Filters API (`@miethe/ui/filters`)
|
|
801
888
|
|
|
802
889
|
Reusable filter components for building toolbar filter bars. All components are pure presentational — consumers provide data via props.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** Readiness state of a planning phase batch. */
|
|
2
|
+
export type PlanningPhaseBatchReadinessState = 'ready' | 'blocked' | 'waiting' | 'unknown';
|
|
3
|
+
export interface BatchReadinessPillProps {
|
|
4
|
+
readinessState: PlanningPhaseBatchReadinessState | string;
|
|
5
|
+
blockingNodeIds?: string[];
|
|
6
|
+
blockingTaskIds?: string[];
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Renders the batch readiness chip with optional blocker details shown inline
|
|
10
|
+
* below the chip when blockingNodeIds or blockingTaskIds are present.
|
|
11
|
+
*
|
|
12
|
+
* Extracted from CCDash Planning primitives (PCP-709).
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* <BatchReadinessPill
|
|
16
|
+
* readinessState="blocked"
|
|
17
|
+
* blockingNodeIds={['prd-auth', 'prd-onboarding']}
|
|
18
|
+
* blockingTaskIds={['TASK-2.1']}
|
|
19
|
+
* />
|
|
20
|
+
*/
|
|
21
|
+
export declare function BatchReadinessPill({ readinessState, blockingNodeIds, blockingTaskIds, }: BatchReadinessPillProps): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
//# sourceMappingURL=BatchReadinessPill.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BatchReadinessPill.d.ts","sourceRoot":"","sources":["../../src/primitives/BatchReadinessPill.tsx"],"names":[],"mappings":"AAGA,iDAAiD;AACjD,MAAM,MAAM,gCAAgC,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE3F,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,gCAAgC,GAAG,MAAM,CAAC;IAC1D,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,cAAc,EACd,eAAe,EACf,eAAe,GAChB,EAAE,uBAAuB,2CAgBzB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { StatusChip } from './StatusChip';
|
|
3
|
+
import { readinessVariant } from './variants';
|
|
4
|
+
/**
|
|
5
|
+
* Renders the batch readiness chip with optional blocker details shown inline
|
|
6
|
+
* below the chip when blockingNodeIds or blockingTaskIds are present.
|
|
7
|
+
*
|
|
8
|
+
* Extracted from CCDash Planning primitives (PCP-709).
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* <BatchReadinessPill
|
|
12
|
+
* readinessState="blocked"
|
|
13
|
+
* blockingNodeIds={['prd-auth', 'prd-onboarding']}
|
|
14
|
+
* blockingTaskIds={['TASK-2.1']}
|
|
15
|
+
* />
|
|
16
|
+
*/
|
|
17
|
+
export function BatchReadinessPill({ readinessState, blockingNodeIds, blockingTaskIds, }) {
|
|
18
|
+
return (_jsxs("div", { className: "inline-flex flex-col gap-1", children: [_jsx(StatusChip, { label: readinessState, variant: readinessVariant(readinessState) }), blockingNodeIds && blockingNodeIds.length > 0 && (_jsxs("div", { className: "text-[10px] text-rose-400/80 truncate", children: ["Blocking nodes: ", blockingNodeIds.join(', ')] })), blockingTaskIds && blockingTaskIds.length > 0 && (_jsxs("div", { className: "text-[10px] text-rose-400/80 truncate", children: ["Blocking tasks: ", blockingTaskIds.join(', ')] }))] }));
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=BatchReadinessPill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BatchReadinessPill.js","sourceRoot":"","sources":["../../src/primitives/BatchReadinessPill.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAW9C;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAAC,EACjC,cAAc,EACd,eAAe,EACf,eAAe,GACS;IACxB,OAAO,CACL,eAAK,SAAS,EAAC,4BAA4B,aACzC,KAAC,UAAU,IAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,gBAAgB,CAAC,cAAc,CAAC,GAAI,EAC/E,eAAe,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,CAChD,eAAK,SAAS,EAAC,uCAAuC,iCACnC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IACvC,CACP,EACA,eAAe,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,CAChD,eAAK,SAAS,EAAC,uCAAuC,iCACnC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IACvC,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/** Source of a planning status computation. */
|
|
2
|
+
export type PlanningStatusProvenanceSource = 'raw' | 'derived' | 'inferred_complete' | 'unknown';
|
|
3
|
+
/** A single piece of status evidence (e.g. a linked document or task). */
|
|
4
|
+
export interface PlanningStatusEvidence {
|
|
5
|
+
id: string;
|
|
6
|
+
label: string;
|
|
7
|
+
detail: string;
|
|
8
|
+
sourceType: string;
|
|
9
|
+
sourceId: string;
|
|
10
|
+
sourcePath: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Provenance record attached to a planning node's effective status.
|
|
14
|
+
* Describes how the status was derived and what evidence supports it.
|
|
15
|
+
*/
|
|
16
|
+
export interface PlanningStatusProvenance {
|
|
17
|
+
source: PlanningStatusProvenanceSource;
|
|
18
|
+
reason: string;
|
|
19
|
+
evidence: PlanningStatusEvidence[];
|
|
20
|
+
}
|
|
21
|
+
export interface EffectiveStatusChipsProps {
|
|
22
|
+
rawStatus: string;
|
|
23
|
+
effectiveStatus?: string;
|
|
24
|
+
isMismatch?: boolean;
|
|
25
|
+
provenance?: PlanningStatusProvenance;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Renders the raw status chip plus an optional `eff:` chip when rawStatus and
|
|
29
|
+
* effectiveStatus differ. Wraps the raw chip in a hover tooltip showing
|
|
30
|
+
* provenance source and reason when provenance is supplied.
|
|
31
|
+
*
|
|
32
|
+
* Extracted from CCDash Planning primitives (PCP-709).
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* <EffectiveStatusChips
|
|
36
|
+
* rawStatus="pending"
|
|
37
|
+
* effectiveStatus="blocked"
|
|
38
|
+
* isMismatch
|
|
39
|
+
* provenance={{ source: 'derived', reason: 'Blocked by upstream task', evidence: [] }}
|
|
40
|
+
* />
|
|
41
|
+
*/
|
|
42
|
+
export declare function EffectiveStatusChips({ rawStatus, effectiveStatus, isMismatch, provenance, }: EffectiveStatusChipsProps): import("react/jsx-runtime").JSX.Element;
|
|
43
|
+
//# sourceMappingURL=EffectiveStatusChips.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EffectiveStatusChips.d.ts","sourceRoot":"","sources":["../../src/primitives/EffectiveStatusChips.tsx"],"names":[],"mappings":"AAGA,+CAA+C;AAC/C,MAAM,MAAM,8BAA8B,GAAG,KAAK,GAAG,SAAS,GAAG,mBAAmB,GAAG,SAAS,CAAC;AAEjG,0EAA0E;AAC1E,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,8BAA8B,CAAC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,sBAAsB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,wBAAwB,CAAC;CACvC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,SAAS,EACT,eAAe,EACf,UAAkB,EAClB,UAAU,GACX,EAAE,yBAAyB,2CA2B3B"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { StatusChip } from './StatusChip';
|
|
3
|
+
import { statusVariant } from './variants';
|
|
4
|
+
/**
|
|
5
|
+
* Renders the raw status chip plus an optional `eff:` chip when rawStatus and
|
|
6
|
+
* effectiveStatus differ. Wraps the raw chip in a hover tooltip showing
|
|
7
|
+
* provenance source and reason when provenance is supplied.
|
|
8
|
+
*
|
|
9
|
+
* Extracted from CCDash Planning primitives (PCP-709).
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* <EffectiveStatusChips
|
|
13
|
+
* rawStatus="pending"
|
|
14
|
+
* effectiveStatus="blocked"
|
|
15
|
+
* isMismatch
|
|
16
|
+
* provenance={{ source: 'derived', reason: 'Blocked by upstream task', evidence: [] }}
|
|
17
|
+
* />
|
|
18
|
+
*/
|
|
19
|
+
export function EffectiveStatusChips({ rawStatus, effectiveStatus, isMismatch = false, provenance, }) {
|
|
20
|
+
const showEff = Boolean(effectiveStatus && effectiveStatus !== rawStatus);
|
|
21
|
+
return (_jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("div", { className: "group relative", children: [_jsx(StatusChip, { label: `raw: ${rawStatus}`, variant: statusVariant(rawStatus) }), provenance && (_jsxs("div", { className: "pointer-events-none absolute right-0 top-full z-10 mt-1.5 hidden w-64 rounded-lg border border-panel-border bg-slate-900 p-3 shadow-xl group-hover:block", children: [_jsx("p", { className: "text-[10px] font-semibold text-muted-foreground uppercase mb-1", children: "Provenance" }), _jsxs("p", { className: "text-xs text-panel-foreground", children: ["Source: ", provenance.source] }), provenance.reason && (_jsx("p", { className: "mt-0.5 text-xs text-muted-foreground", children: provenance.reason }))] }))] }), showEff && (_jsx(StatusChip, { label: `eff: ${effectiveStatus}`, variant: isMismatch ? 'warn' : statusVariant(effectiveStatus) }))] }));
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=EffectiveStatusChips.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EffectiveStatusChips.js","sourceRoot":"","sources":["../../src/primitives/EffectiveStatusChips.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAgC3C;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,oBAAoB,CAAC,EACnC,SAAS,EACT,eAAe,EACf,UAAU,GAAG,KAAK,EAClB,UAAU,GACgB;IAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,IAAI,eAAe,KAAK,SAAS,CAAC,CAAC;IAE1E,OAAO,CACL,eAAK,SAAS,EAAC,yBAAyB,aACtC,eAAK,SAAS,EAAC,gBAAgB,aAC7B,KAAC,UAAU,IAAC,KAAK,EAAE,QAAQ,SAAS,EAAE,EAAE,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,GAAI,EAC5E,UAAU,IAAI,CACb,eAAK,SAAS,EAAC,0JAA0J,aACvK,YAAG,SAAS,EAAC,gEAAgE,2BAEzE,EACJ,aAAG,SAAS,EAAC,+BAA+B,yBAAU,UAAU,CAAC,MAAM,IAAK,EAC3E,UAAU,CAAC,MAAM,IAAI,CACpB,YAAG,SAAS,EAAC,sCAAsC,YAAE,UAAU,CAAC,MAAM,GAAK,CAC5E,IACG,CACP,IACG,EACL,OAAO,IAAI,CACV,KAAC,UAAU,IACT,KAAK,EAAE,QAAQ,eAAe,EAAE,EAChC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,eAAgB,CAAC,GAC9D,CACH,IACG,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export interface MismatchBadgeProps {
|
|
2
|
+
/** The mismatch state string (e.g. "mismatched", "reversed", "stale"). */
|
|
3
|
+
state: string;
|
|
4
|
+
/** Human-readable explanation for the mismatch. */
|
|
5
|
+
reason: string;
|
|
6
|
+
/** Optional evidence labels rendered as small inner chips (banner mode only). */
|
|
7
|
+
evidenceLabels?: string[];
|
|
8
|
+
/**
|
|
9
|
+
* When true, renders a compact inline amber badge suited for card / list
|
|
10
|
+
* contexts. When false (default), renders the full banner variant for headers.
|
|
11
|
+
*/
|
|
12
|
+
compact?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Renders an amber mismatch indicator in two forms:
|
|
16
|
+
* - `compact=true` — a small inline chip with icon + state label.
|
|
17
|
+
* - `compact=false` — the full banner with title, reason, and evidence chips.
|
|
18
|
+
*
|
|
19
|
+
* Extracted from CCDash Planning primitives (PCP-709).
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* // Compact inline chip
|
|
23
|
+
* <MismatchBadge state="stale" reason="Status diverged from progress" compact />
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* // Full banner
|
|
27
|
+
* <MismatchBadge
|
|
28
|
+
* state="mismatched"
|
|
29
|
+
* reason="Progress says done but PRD is pending"
|
|
30
|
+
* evidenceLabels={['PRD-outdated', 'progress-diverged']}
|
|
31
|
+
* />
|
|
32
|
+
*/
|
|
33
|
+
export declare function MismatchBadge({ state, reason, evidenceLabels, compact, }: MismatchBadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
34
|
+
//# sourceMappingURL=MismatchBadge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MismatchBadge.d.ts","sourceRoot":"","sources":["../../src/primitives/MismatchBadge.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,kBAAkB;IACjC,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,MAAM,EACN,cAAmB,EACnB,OAAe,GAChB,EAAE,kBAAkB,2CAkCpB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { AlertTriangle } from 'lucide-react';
|
|
3
|
+
/**
|
|
4
|
+
* Renders an amber mismatch indicator in two forms:
|
|
5
|
+
* - `compact=true` — a small inline chip with icon + state label.
|
|
6
|
+
* - `compact=false` — the full banner with title, reason, and evidence chips.
|
|
7
|
+
*
|
|
8
|
+
* Extracted from CCDash Planning primitives (PCP-709).
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* // Compact inline chip
|
|
12
|
+
* <MismatchBadge state="stale" reason="Status diverged from progress" compact />
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* // Full banner
|
|
16
|
+
* <MismatchBadge
|
|
17
|
+
* state="mismatched"
|
|
18
|
+
* reason="Progress says done but PRD is pending"
|
|
19
|
+
* evidenceLabels={['PRD-outdated', 'progress-diverged']}
|
|
20
|
+
* />
|
|
21
|
+
*/
|
|
22
|
+
export function MismatchBadge({ state, reason, evidenceLabels = [], compact = false, }) {
|
|
23
|
+
if (compact) {
|
|
24
|
+
return (_jsxs("span", { className: "inline-flex items-center gap-1 rounded border border-amber-500/30 bg-amber-500/10 px-2 py-0.5 text-xs font-medium text-amber-300", title: reason, children: [_jsx(AlertTriangle, { size: 11, className: "shrink-0 text-amber-400" }), state] }));
|
|
25
|
+
}
|
|
26
|
+
return (_jsxs("div", { className: "flex items-start gap-3 rounded-lg border border-amber-500/30 bg-amber-500/10 px-4 py-3", children: [_jsx(AlertTriangle, { size: 15, className: "mt-0.5 shrink-0 text-amber-400" }), _jsxs("div", { className: "flex-1 min-w-0", children: [_jsx("p", { className: "text-sm font-medium text-amber-300", children: "Status mismatch detected" }), _jsx("p", { className: "mt-0.5 text-xs text-amber-300/80", children: reason }), evidenceLabels.length > 0 && (_jsx("div", { className: "mt-1.5 flex flex-wrap gap-1", children: evidenceLabels.map((label, i) => (_jsx("span", { className: "rounded px-1.5 py-0.5 text-[10px] font-medium bg-amber-500/20 text-amber-300", children: label }, i))) }))] })] }));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=MismatchBadge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MismatchBadge.js","sourceRoot":"","sources":["../../src/primitives/MismatchBadge.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAgB7C;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,KAAK,EACL,MAAM,EACN,cAAc,GAAG,EAAE,EACnB,OAAO,GAAG,KAAK,GACI;IACnB,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CACL,gBACE,SAAS,EAAC,kIAAkI,EAC5I,KAAK,EAAE,MAAM,aAEb,KAAC,aAAa,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,yBAAyB,GAAG,EAC9D,KAAK,IACD,CACR,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAC,wFAAwF,aACrG,KAAC,aAAa,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,gCAAgC,GAAG,EACtE,eAAK,SAAS,EAAC,gBAAgB,aAC7B,YAAG,SAAS,EAAC,oCAAoC,yCAA6B,EAC9E,YAAG,SAAS,EAAC,kCAAkC,YAAE,MAAM,GAAK,EAC3D,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAC5B,cAAK,SAAS,EAAC,6BAA6B,YACzC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAChC,eAEE,SAAS,EAAC,8EAA8E,YAEvF,KAAK,IAHD,CAAC,CAID,CACR,CAAC,GACE,CACP,IACG,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The set of planning node type identifiers supported by the planning control plane.
|
|
3
|
+
* Each maps to a distinct lucide-react icon.
|
|
4
|
+
*/
|
|
5
|
+
export type PlanningNodeType = 'design_spec' | 'prd' | 'implementation_plan' | 'progress' | 'context' | 'tracker' | 'report';
|
|
6
|
+
export interface PlanningNodeTypeIconProps {
|
|
7
|
+
type: PlanningNodeType;
|
|
8
|
+
/** Icon size in pixels. Defaults to 13. */
|
|
9
|
+
size?: number;
|
|
10
|
+
/** Additional className applied to the icon element. */
|
|
11
|
+
className?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Reusable icon component for PlanningNodeType values. Matches the inline
|
|
15
|
+
* NodeTypeIcon used in PlanningNodeDetail and PlanningGraphPanel.
|
|
16
|
+
*
|
|
17
|
+
* Extracted from CCDash Planning primitives (PCP-709).
|
|
18
|
+
*
|
|
19
|
+
* Icon map:
|
|
20
|
+
* - design_spec → FolderSearch
|
|
21
|
+
* - prd → FileText
|
|
22
|
+
* - implementation_plan → FileCheck2
|
|
23
|
+
* - progress → BookOpen
|
|
24
|
+
* - context → Tag
|
|
25
|
+
* - tracker → AlertCircle
|
|
26
|
+
* - report → FileText
|
|
27
|
+
* - (default) → FileText
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* <PlanningNodeTypeIcon type="prd" size={16} className="text-blue-400" />
|
|
31
|
+
*/
|
|
32
|
+
export declare function PlanningNodeTypeIcon({ type, size, className, }: PlanningNodeTypeIconProps): import("react/jsx-runtime").JSX.Element;
|
|
33
|
+
//# sourceMappingURL=PlanningNodeTypeIcon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlanningNodeTypeIcon.d.ts","sourceRoot":"","sources":["../../src/primitives/PlanningNodeTypeIcon.tsx"],"names":[],"mappings":"AASA;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GACxB,aAAa,GACb,KAAK,GACL,qBAAqB,GACrB,UAAU,GACV,SAAS,GACT,SAAS,GACT,QAAQ,CAAC;AAEb,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,gBAAgB,CAAC;IACvB,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,IAAI,EACJ,IAAS,EACT,SAA4C,GAC7C,EAAE,yBAAyB,2CAY3B"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { AlertCircle, BookOpen, FileCheck2, FileText, FolderSearch, Tag, } from 'lucide-react';
|
|
3
|
+
/**
|
|
4
|
+
* Reusable icon component for PlanningNodeType values. Matches the inline
|
|
5
|
+
* NodeTypeIcon used in PlanningNodeDetail and PlanningGraphPanel.
|
|
6
|
+
*
|
|
7
|
+
* Extracted from CCDash Planning primitives (PCP-709).
|
|
8
|
+
*
|
|
9
|
+
* Icon map:
|
|
10
|
+
* - design_spec → FolderSearch
|
|
11
|
+
* - prd → FileText
|
|
12
|
+
* - implementation_plan → FileCheck2
|
|
13
|
+
* - progress → BookOpen
|
|
14
|
+
* - context → Tag
|
|
15
|
+
* - tracker → AlertCircle
|
|
16
|
+
* - report → FileText
|
|
17
|
+
* - (default) → FileText
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* <PlanningNodeTypeIcon type="prd" size={16} className="text-blue-400" />
|
|
21
|
+
*/
|
|
22
|
+
export function PlanningNodeTypeIcon({ type, size = 13, className = 'shrink-0 text-muted-foreground', }) {
|
|
23
|
+
const p = { size, className };
|
|
24
|
+
switch (type) {
|
|
25
|
+
case 'design_spec': return _jsx(FolderSearch, { ...p });
|
|
26
|
+
case 'prd': return _jsx(FileText, { ...p });
|
|
27
|
+
case 'implementation_plan': return _jsx(FileCheck2, { ...p });
|
|
28
|
+
case 'progress': return _jsx(BookOpen, { ...p });
|
|
29
|
+
case 'context': return _jsx(Tag, { ...p });
|
|
30
|
+
case 'tracker': return _jsx(AlertCircle, { ...p });
|
|
31
|
+
case 'report': return _jsx(FileText, { ...p });
|
|
32
|
+
default: return _jsx(FileText, { ...p });
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=PlanningNodeTypeIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlanningNodeTypeIcon.js","sourceRoot":"","sources":["../../src/primitives/PlanningNodeTypeIcon.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,WAAW,EACX,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,GAAG,GACJ,MAAM,cAAc,CAAC;AAuBtB;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,oBAAoB,CAAC,EACnC,IAAI,EACJ,IAAI,GAAG,EAAE,EACT,SAAS,GAAG,gCAAgC,GAClB;IAC1B,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC9B,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,aAAa,CAAC,CAAS,OAAO,KAAC,YAAY,OAAK,CAAC,GAAI,CAAC;QAC3D,KAAK,KAAK,CAAC,CAAiB,OAAO,KAAC,QAAQ,OAAK,CAAC,GAAI,CAAC;QACvD,KAAK,qBAAqB,CAAC,CAAC,OAAO,KAAC,UAAU,OAAK,CAAC,GAAI,CAAC;QACzD,KAAK,UAAU,CAAC,CAAY,OAAO,KAAC,QAAQ,OAAK,CAAC,GAAI,CAAC;QACvD,KAAK,SAAS,CAAC,CAAa,OAAO,KAAC,GAAG,OAAK,CAAC,GAAI,CAAC;QAClD,KAAK,SAAS,CAAC,CAAa,OAAO,KAAC,WAAW,OAAK,CAAC,GAAI,CAAC;QAC1D,KAAK,QAAQ,CAAC,CAAc,OAAO,KAAC,QAAQ,OAAK,CAAC,GAAI,CAAC;QACvD,OAAO,CAAC,CAAoB,OAAO,KAAC,QAAQ,OAAK,CAAC,GAAI,CAAC;IACzD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { StatusChipVariant } from './variants';
|
|
2
|
+
export interface StatusChipProps {
|
|
3
|
+
label: string;
|
|
4
|
+
variant?: StatusChipVariant;
|
|
5
|
+
tooltip?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Reusable slate badge rendering the five planning status variants
|
|
9
|
+
* (neutral / ok / warn / error / info).
|
|
10
|
+
*
|
|
11
|
+
* Extracted from CCDash Planning primitives (PCP-709).
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* <StatusChip label="pending" variant="warn" tooltip="Waiting on upstream" />
|
|
15
|
+
*/
|
|
16
|
+
export declare function StatusChip({ label, variant, tooltip }: StatusChipProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
//# sourceMappingURL=StatusChip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusChip.d.ts","sourceRoot":"","sources":["../../src/primitives/StatusChip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAYD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,OAAmB,EAAE,OAAO,EAAE,EAAE,eAAe,2CAMlF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
const BASE = 'inline-flex items-center rounded px-2 py-0.5 text-xs font-medium';
|
|
3
|
+
const COLORS = {
|
|
4
|
+
neutral: 'bg-slate-700/60 text-slate-300',
|
|
5
|
+
ok: 'bg-emerald-600/20 text-emerald-400',
|
|
6
|
+
warn: 'bg-amber-600/20 text-amber-400',
|
|
7
|
+
error: 'bg-rose-600/20 text-rose-400',
|
|
8
|
+
info: 'bg-blue-600/20 text-blue-400',
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Reusable slate badge rendering the five planning status variants
|
|
12
|
+
* (neutral / ok / warn / error / info).
|
|
13
|
+
*
|
|
14
|
+
* Extracted from CCDash Planning primitives (PCP-709).
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* <StatusChip label="pending" variant="warn" tooltip="Waiting on upstream" />
|
|
18
|
+
*/
|
|
19
|
+
export function StatusChip({ label, variant = 'neutral', tooltip }) {
|
|
20
|
+
return (_jsx("span", { className: `${BASE} ${COLORS[variant]}`, title: tooltip, children: label }));
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=StatusChip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusChip.js","sourceRoot":"","sources":["../../src/primitives/StatusChip.tsx"],"names":[],"mappings":";AAQA,MAAM,IAAI,GAAG,kEAAkE,CAAC;AAEhF,MAAM,MAAM,GAAsC;IAChD,OAAO,EAAE,gCAAgC;IACzC,EAAE,EAAO,oCAAoC;IAC7C,IAAI,EAAK,gCAAgC;IACzC,KAAK,EAAI,8BAA8B;IACvC,IAAI,EAAK,8BAA8B;CACxC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,SAAS,EAAE,OAAO,EAAmB;IACjF,OAAO,CACL,eAAM,SAAS,EAAE,GAAG,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,YAC1D,KAAK,GACD,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -35,4 +35,16 @@ export { LockIcon } from './LockIcon';
|
|
|
35
35
|
export type { LockIconProps } from './LockIcon';
|
|
36
36
|
export { WizardShell } from './WizardShell';
|
|
37
37
|
export type { WizardShellProps, WizardStep } from './WizardShell';
|
|
38
|
+
export { StatusChip } from './StatusChip';
|
|
39
|
+
export type { StatusChipProps } from './StatusChip';
|
|
40
|
+
export { statusVariant, readinessVariant } from './variants';
|
|
41
|
+
export type { StatusChipVariant, ReadinessVariant } from './variants';
|
|
42
|
+
export { EffectiveStatusChips } from './EffectiveStatusChips';
|
|
43
|
+
export type { EffectiveStatusChipsProps, PlanningStatusProvenance, PlanningStatusProvenanceSource, PlanningStatusEvidence, } from './EffectiveStatusChips';
|
|
44
|
+
export { MismatchBadge } from './MismatchBadge';
|
|
45
|
+
export type { MismatchBadgeProps } from './MismatchBadge';
|
|
46
|
+
export { BatchReadinessPill } from './BatchReadinessPill';
|
|
47
|
+
export type { BatchReadinessPillProps, PlanningPhaseBatchReadinessState } from './BatchReadinessPill';
|
|
48
|
+
export { PlanningNodeTypeIcon } from './PlanningNodeTypeIcon';
|
|
49
|
+
export type { PlanningNodeTypeIconProps, PlanningNodeType } from './PlanningNodeTypeIcon';
|
|
38
50
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/primitives/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/C,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EACL,MAAM,EACN,YAAY,EACZ,aAAa,EACb,WAAW,EACX,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,GAAG,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACvG,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EACV,sBAAsB,EACtB,aAAa,EACb,kBAAkB,EAClB,QAAQ,GACT,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACjG,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACrF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,YAAY,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACjG,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/primitives/index.ts"],"names":[],"mappings":"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"}
|
package/dist/primitives/index.js
CHANGED
|
@@ -21,4 +21,11 @@ export { GroupedSelect } from './GroupedSelect';
|
|
|
21
21
|
export { EnterpriseOwnerBadge } from './EnterpriseOwnerBadge';
|
|
22
22
|
export { LockIcon } from './LockIcon';
|
|
23
23
|
export { WizardShell } from './WizardShell';
|
|
24
|
+
// Planning Primitives — extracted from CCDash (PCP-709)
|
|
25
|
+
export { StatusChip } from './StatusChip';
|
|
26
|
+
export { statusVariant, readinessVariant } from './variants';
|
|
27
|
+
export { EffectiveStatusChips } from './EffectiveStatusChips';
|
|
28
|
+
export { MismatchBadge } from './MismatchBadge';
|
|
29
|
+
export { BatchReadinessPill } from './BatchReadinessPill';
|
|
30
|
+
export { PlanningNodeTypeIcon } from './PlanningNodeTypeIcon';
|
|
24
31
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/primitives/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EACL,MAAM,EACN,YAAY,EACZ,aAAa,EACb,WAAW,EACX,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAOxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACjG,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACrF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/primitives/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EACL,MAAM,EACN,YAAY,EACZ,aAAa,EACb,WAAW,EACX,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAOxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACjG,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACrF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,wDAAwD;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAO9D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Variant helper functions for planning status chips and readiness pills.
|
|
3
|
+
* These map domain status strings to the badge variant tokens used by StatusChip
|
|
4
|
+
* and BatchReadinessPill.
|
|
5
|
+
*
|
|
6
|
+
* Extracted from CCDash Planning primitives (PCP-709).
|
|
7
|
+
*/
|
|
8
|
+
export type StatusChipVariant = 'neutral' | 'ok' | 'warn' | 'error' | 'info';
|
|
9
|
+
export type ReadinessVariant = 'ok' | 'warn' | 'error' | 'neutral';
|
|
10
|
+
/**
|
|
11
|
+
* Map a planning node rawStatus / effectiveStatus string to a StatusChip variant.
|
|
12
|
+
*/
|
|
13
|
+
export declare function statusVariant(status: string): StatusChipVariant;
|
|
14
|
+
/**
|
|
15
|
+
* Map a PlanningPhaseBatchReadinessState string to a StatusChip variant.
|
|
16
|
+
*/
|
|
17
|
+
export declare function readinessVariant(r: string): ReadinessVariant;
|
|
18
|
+
//# sourceMappingURL=variants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variants.d.ts","sourceRoot":"","sources":["../../src/primitives/variants.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAC7E,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAEnE;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAM/D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAK5D"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Variant helper functions for planning status chips and readiness pills.
|
|
3
|
+
* These map domain status strings to the badge variant tokens used by StatusChip
|
|
4
|
+
* and BatchReadinessPill.
|
|
5
|
+
*
|
|
6
|
+
* Extracted from CCDash Planning primitives (PCP-709).
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Map a planning node rawStatus / effectiveStatus string to a StatusChip variant.
|
|
10
|
+
*/
|
|
11
|
+
export function statusVariant(status) {
|
|
12
|
+
const s = status.toLowerCase();
|
|
13
|
+
if (['complete', 'completed', 'done', 'active', 'in_progress'].some(v => s.includes(v)))
|
|
14
|
+
return 'ok';
|
|
15
|
+
if (['blocked', 'stale', 'reversed', 'mismatch'].some(v => s.includes(v)))
|
|
16
|
+
return 'error';
|
|
17
|
+
if (['pending', 'waiting', 'deferred'].some(v => s.includes(v)))
|
|
18
|
+
return 'warn';
|
|
19
|
+
return 'neutral';
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Map a PlanningPhaseBatchReadinessState string to a StatusChip variant.
|
|
23
|
+
*/
|
|
24
|
+
export function readinessVariant(r) {
|
|
25
|
+
if (r === 'ready')
|
|
26
|
+
return 'ok';
|
|
27
|
+
if (r === 'blocked')
|
|
28
|
+
return 'error';
|
|
29
|
+
if (r === 'waiting')
|
|
30
|
+
return 'warn';
|
|
31
|
+
return 'neutral';
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=variants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variants.js","sourceRoot":"","sources":["../../src/primitives/variants.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAC/B,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACrG,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC;IAC1F,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC;IAC/E,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,CAAS;IACxC,IAAI,CAAC,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IACpC,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACnC,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@miethe/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Reusable UI components for file trees, content viewing, diff, editors, and entity management — extracted from SkillMeat",
|
|
5
5
|
"author": "Nick Miethe <miethe.dev@gmail.com>",
|
|
6
6
|
"license": "MIT",
|