@miethe/ui 0.2.0 → 0.6.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.
Files changed (192) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/README.md +863 -9
  3. package/dist/components/content-viewer/ArticleViewer.d.ts +42 -0
  4. package/dist/components/content-viewer/ArticleViewer.d.ts.map +1 -0
  5. package/dist/components/content-viewer/ArticleViewer.js +321 -0
  6. package/dist/components/content-viewer/ArticleViewer.js.map +1 -0
  7. package/dist/components/content-viewer/FrontmatterHeader.d.ts +32 -0
  8. package/dist/components/content-viewer/FrontmatterHeader.d.ts.map +1 -0
  9. package/dist/components/content-viewer/FrontmatterHeader.js +95 -0
  10. package/dist/components/content-viewer/FrontmatterHeader.js.map +1 -0
  11. package/dist/components/content-viewer/callouts/Callout.d.ts +43 -0
  12. package/dist/components/content-viewer/callouts/Callout.d.ts.map +1 -0
  13. package/dist/components/content-viewer/callouts/Callout.js +86 -0
  14. package/dist/components/content-viewer/callouts/Callout.js.map +1 -0
  15. package/dist/components/content-viewer/callouts/index.d.ts +2 -0
  16. package/dist/components/content-viewer/callouts/index.d.ts.map +1 -0
  17. package/dist/components/content-viewer/callouts/index.js +2 -0
  18. package/dist/components/content-viewer/callouts/index.js.map +1 -0
  19. package/dist/components/content-viewer/index.d.ts +21 -0
  20. package/dist/components/content-viewer/index.d.ts.map +1 -0
  21. package/dist/components/content-viewer/index.js +29 -0
  22. package/dist/components/content-viewer/index.js.map +1 -0
  23. package/dist/components/content-viewer/plugins/index.d.ts +5 -0
  24. package/dist/components/content-viewer/plugins/index.d.ts.map +1 -0
  25. package/dist/components/content-viewer/plugins/index.js +5 -0
  26. package/dist/components/content-viewer/plugins/index.js.map +1 -0
  27. package/dist/components/content-viewer/plugins/lowlightLoader.d.ts +63 -0
  28. package/dist/components/content-viewer/plugins/lowlightLoader.d.ts.map +1 -0
  29. package/dist/components/content-viewer/plugins/lowlightLoader.js +120 -0
  30. package/dist/components/content-viewer/plugins/lowlightLoader.js.map +1 -0
  31. package/dist/components/content-viewer/plugins/rehypeCodeHighlight.d.ts +44 -0
  32. package/dist/components/content-viewer/plugins/rehypeCodeHighlight.d.ts.map +1 -0
  33. package/dist/components/content-viewer/plugins/rehypeCodeHighlight.js +122 -0
  34. package/dist/components/content-viewer/plugins/rehypeCodeHighlight.js.map +1 -0
  35. package/dist/components/content-viewer/plugins/rehypeExternalLinks.d.ts +59 -0
  36. package/dist/components/content-viewer/plugins/rehypeExternalLinks.d.ts.map +1 -0
  37. package/dist/components/content-viewer/plugins/rehypeExternalLinks.js +79 -0
  38. package/dist/components/content-viewer/plugins/rehypeExternalLinks.js.map +1 -0
  39. package/dist/components/content-viewer/plugins/rehypeHeadingIds.d.ts +37 -0
  40. package/dist/components/content-viewer/plugins/rehypeHeadingIds.d.ts.map +1 -0
  41. package/dist/components/content-viewer/plugins/rehypeHeadingIds.js +82 -0
  42. package/dist/components/content-viewer/plugins/rehypeHeadingIds.js.map +1 -0
  43. package/dist/components/content-viewer/plugins/remarkCallouts.d.ts +39 -0
  44. package/dist/components/content-viewer/plugins/remarkCallouts.d.ts.map +1 -0
  45. package/dist/components/content-viewer/plugins/remarkCallouts.js +77 -0
  46. package/dist/components/content-viewer/plugins/remarkCallouts.js.map +1 -0
  47. package/dist/components/content-viewer/plugins/slugify.d.ts +24 -0
  48. package/dist/components/content-viewer/plugins/slugify.d.ts.map +1 -0
  49. package/dist/components/content-viewer/plugins/slugify.js +31 -0
  50. package/dist/components/content-viewer/plugins/slugify.js.map +1 -0
  51. package/dist/components/content-viewer/sanitize.d.ts +75 -0
  52. package/dist/components/content-viewer/sanitize.d.ts.map +1 -0
  53. package/dist/components/content-viewer/sanitize.js +252 -0
  54. package/dist/components/content-viewer/sanitize.js.map +1 -0
  55. package/dist/components/content-viewer/types.d.ts +315 -0
  56. package/dist/components/content-viewer/types.d.ts.map +1 -0
  57. package/dist/components/content-viewer/types.js +8 -0
  58. package/dist/components/content-viewer/types.js.map +1 -0
  59. package/dist/components/content-viewer/variants.d.ts +71 -0
  60. package/dist/components/content-viewer/variants.d.ts.map +1 -0
  61. package/dist/components/content-viewer/variants.js +105 -0
  62. package/dist/components/content-viewer/variants.js.map +1 -0
  63. package/dist/content-viewer/ContentPane.d.ts +44 -1
  64. package/dist/content-viewer/ContentPane.d.ts.map +1 -1
  65. package/dist/content-viewer/ContentPane.js +139 -5
  66. package/dist/content-viewer/ContentPane.js.map +1 -1
  67. package/dist/content-viewer/FileTree.d.ts +23 -1
  68. package/dist/content-viewer/FileTree.d.ts.map +1 -1
  69. package/dist/content-viewer/FileTree.js +20 -5
  70. package/dist/content-viewer/FileTree.js.map +1 -1
  71. package/dist/content-viewer/index.d.ts +2 -0
  72. package/dist/content-viewer/index.d.ts.map +1 -1
  73. package/dist/content-viewer/index.js +2 -0
  74. package/dist/content-viewer/index.js.map +1 -1
  75. package/dist/diff/DiffViewer.js +3 -3
  76. package/dist/diff/DiffViewer.js.map +1 -1
  77. package/dist/discovery/discovery-card.d.ts +25 -0
  78. package/dist/discovery/discovery-card.d.ts.map +1 -0
  79. package/dist/discovery/discovery-card.js +265 -0
  80. package/dist/discovery/discovery-card.js.map +1 -0
  81. package/dist/discovery/index.d.ts +3 -0
  82. package/dist/discovery/index.d.ts.map +1 -0
  83. package/dist/discovery/index.js +3 -0
  84. package/dist/discovery/index.js.map +1 -0
  85. package/dist/display/ContextInfoCard.d.ts +61 -0
  86. package/dist/display/ContextInfoCard.d.ts.map +1 -0
  87. package/dist/display/ContextInfoCard.js +45 -0
  88. package/dist/display/ContextInfoCard.js.map +1 -0
  89. package/dist/display/index.d.ts +2 -0
  90. package/dist/display/index.d.ts.map +1 -1
  91. package/dist/display/index.js +1 -0
  92. package/dist/display/index.js.map +1 -1
  93. package/dist/editor/CodeEditor.d.ts +39 -0
  94. package/dist/editor/CodeEditor.d.ts.map +1 -0
  95. package/dist/editor/CodeEditor.js +114 -0
  96. package/dist/editor/CodeEditor.js.map +1 -0
  97. package/dist/editor/MarkdownEditor.d.ts +3 -2
  98. package/dist/editor/MarkdownEditor.d.ts.map +1 -1
  99. package/dist/editor/MarkdownEditor.js +32 -80
  100. package/dist/editor/MarkdownEditor.js.map +1 -1
  101. package/dist/editor/SplitPreview.d.ts +10 -1
  102. package/dist/editor/SplitPreview.d.ts.map +1 -1
  103. package/dist/editor/SplitPreview.js +4 -2
  104. package/dist/editor/SplitPreview.js.map +1 -1
  105. package/dist/editor/codeLanguages.d.ts +28 -0
  106. package/dist/editor/codeLanguages.d.ts.map +1 -0
  107. package/dist/editor/codeLanguages.js +54 -0
  108. package/dist/editor/codeLanguages.js.map +1 -0
  109. package/dist/editor/index.d.ts +2 -0
  110. package/dist/editor/index.d.ts.map +1 -1
  111. package/dist/editor/index.js +6 -0
  112. package/dist/editor/index.js.map +1 -1
  113. package/dist/editor/theme.d.ts +16 -0
  114. package/dist/editor/theme.d.ts.map +1 -0
  115. package/dist/editor/theme.js +82 -0
  116. package/dist/editor/theme.js.map +1 -0
  117. package/dist/filters/filter-bar.d.ts +14 -0
  118. package/dist/filters/filter-bar.d.ts.map +1 -0
  119. package/dist/filters/filter-bar.js +47 -0
  120. package/dist/filters/filter-bar.js.map +1 -0
  121. package/dist/filters/filter-slot-config.d.ts +239 -0
  122. package/dist/filters/filter-slot-config.d.ts.map +1 -0
  123. package/dist/filters/filter-slot-config.js +24 -0
  124. package/dist/filters/filter-slot-config.js.map +1 -0
  125. package/dist/filters/index.d.ts +2 -0
  126. package/dist/filters/index.d.ts.map +1 -1
  127. package/dist/filters/index.js +1 -0
  128. package/dist/filters/index.js.map +1 -1
  129. package/dist/primitives/BatchReadinessPill.d.ts +22 -0
  130. package/dist/primitives/BatchReadinessPill.d.ts.map +1 -0
  131. package/dist/primitives/BatchReadinessPill.js +20 -0
  132. package/dist/primitives/BatchReadinessPill.js.map +1 -0
  133. package/dist/primitives/Card.d.ts +28 -0
  134. package/dist/primitives/Card.d.ts.map +1 -0
  135. package/dist/primitives/Card.js +30 -0
  136. package/dist/primitives/Card.js.map +1 -0
  137. package/dist/primitives/CollectionPicker.d.ts +47 -0
  138. package/dist/primitives/CollectionPicker.d.ts.map +1 -0
  139. package/dist/primitives/CollectionPicker.js +105 -0
  140. package/dist/primitives/CollectionPicker.js.map +1 -0
  141. package/dist/primitives/CreateEntityDialog.d.ts +144 -0
  142. package/dist/primitives/CreateEntityDialog.d.ts.map +1 -0
  143. package/dist/primitives/CreateEntityDialog.js +379 -0
  144. package/dist/primitives/CreateEntityDialog.js.map +1 -0
  145. package/dist/primitives/EffectiveStatusChips.d.ts +43 -0
  146. package/dist/primitives/EffectiveStatusChips.d.ts.map +1 -0
  147. package/dist/primitives/EffectiveStatusChips.js +23 -0
  148. package/dist/primitives/EffectiveStatusChips.js.map +1 -0
  149. package/dist/primitives/FormField.d.ts +29 -0
  150. package/dist/primitives/FormField.d.ts.map +1 -0
  151. package/dist/primitives/FormField.js +27 -0
  152. package/dist/primitives/FormField.js.map +1 -0
  153. package/dist/primitives/Label.d.ts +20 -0
  154. package/dist/primitives/Label.d.ts.map +1 -0
  155. package/dist/primitives/Label.js +21 -0
  156. package/dist/primitives/Label.js.map +1 -0
  157. package/dist/primitives/MismatchBadge.d.ts +34 -0
  158. package/dist/primitives/MismatchBadge.d.ts.map +1 -0
  159. package/dist/primitives/MismatchBadge.js +28 -0
  160. package/dist/primitives/MismatchBadge.js.map +1 -0
  161. package/dist/primitives/PlanningNodeTypeIcon.d.ts +33 -0
  162. package/dist/primitives/PlanningNodeTypeIcon.d.ts.map +1 -0
  163. package/dist/primitives/PlanningNodeTypeIcon.js +35 -0
  164. package/dist/primitives/PlanningNodeTypeIcon.js.map +1 -0
  165. package/dist/primitives/SecretField.d.ts +28 -0
  166. package/dist/primitives/SecretField.d.ts.map +1 -0
  167. package/dist/primitives/SecretField.js +65 -0
  168. package/dist/primitives/SecretField.js.map +1 -0
  169. package/dist/primitives/Spinner.d.ts +16 -0
  170. package/dist/primitives/Spinner.d.ts.map +1 -0
  171. package/dist/primitives/Spinner.js +34 -0
  172. package/dist/primitives/Spinner.js.map +1 -0
  173. package/dist/primitives/StatusChip.d.ts +17 -0
  174. package/dist/primitives/StatusChip.d.ts.map +1 -0
  175. package/dist/primitives/StatusChip.js +22 -0
  176. package/dist/primitives/StatusChip.js.map +1 -0
  177. package/dist/primitives/Switch.d.ts +32 -0
  178. package/dist/primitives/Switch.d.ts.map +1 -0
  179. package/dist/primitives/Switch.js +43 -0
  180. package/dist/primitives/Switch.js.map +1 -0
  181. package/dist/primitives/index.d.ts +28 -0
  182. package/dist/primitives/index.d.ts.map +1 -1
  183. package/dist/primitives/index.js +16 -0
  184. package/dist/primitives/index.js.map +1 -1
  185. package/dist/primitives/variants.d.ts +18 -0
  186. package/dist/primitives/variants.d.ts.map +1 -0
  187. package/dist/primitives/variants.js +33 -0
  188. package/dist/primitives/variants.js.map +1 -0
  189. package/dist/utils/type-colors.d.ts.map +1 -1
  190. package/dist/utils/type-colors.js +4 -0
  191. package/dist/utils/type-colors.js.map +1 -1
  192. package/package.json +40 -6
@@ -0,0 +1,27 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { cn } from './utils';
4
+ import { Label } from './Label';
5
+ /**
6
+ * Composable form field wrapper that renders an optional label, child control,
7
+ * optional error message, and optional hint text.
8
+ *
9
+ * When `error` is set the error text is wrapped in `role="alert"` so that
10
+ * screen readers announce it immediately. When `required` is set an asterisk
11
+ * is appended to the label (hidden from AT) and `aria-required={true}` is
12
+ * injected directly onto the child control via `React.cloneElement` — so
13
+ * callers do not need to remember to pass `aria-required` themselves. If the
14
+ * child already carries an explicit `aria-required` prop it is preserved.
15
+ */
16
+ function FormField({ label, htmlFor, error, hint, required, children, className, }) {
17
+ // Inject aria-required onto the direct child control when required is true,
18
+ // without overriding an explicit value the caller already set.
19
+ const child = required && React.isValidElement(children)
20
+ ? React.cloneElement(children, {
21
+ 'aria-required': children.props['aria-required'] ?? true,
22
+ })
23
+ : children;
24
+ return (_jsxs("div", { className: cn('flex flex-col gap-1.5', className), children: [label && (_jsxs(Label, { htmlFor: htmlFor, children: [label, required && (_jsx("span", { className: "ml-0.5 text-destructive", "aria-hidden": "true", children: "*" }))] })), _jsx("div", { "data-required": required ? 'true' : undefined, children: child }), error && (_jsx("p", { role: "alert", className: "text-sm font-medium text-destructive", children: error })), hint && !error && (_jsx("p", { className: "text-sm text-muted-foreground", children: hint }))] }));
25
+ }
26
+ export { FormField };
27
+ //# sourceMappingURL=FormField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormField.js","sourceRoot":"","sources":["../../src/primitives/FormField.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAiBhC;;;;;;;;;;GAUG;AACH,SAAS,SAAS,CAAC,EACjB,KAAK,EACL,OAAO,EACP,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,SAAS,GACM;IACf,4EAA4E;IAC5E,+DAA+D;IAC/D,MAAM,KAAK,GACT,QAAQ,IAAI,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;QACxC,CAAC,CAAC,KAAK,CAAC,YAAY,CAChB,QAAuD,EACvD;YACE,eAAe,EACZ,QAAwD,CAAC,KAAK,CAC7D,eAAe,CAChB,IAAI,IAAI;SACZ,CACF;QACH,CAAC,CAAC,QAAQ,CAAC;IAEf,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,uBAAuB,EAAE,SAAS,CAAC,aACnD,KAAK,IAAI,CACR,MAAC,KAAK,IAAC,OAAO,EAAE,OAAO,aACpB,KAAK,EACL,QAAQ,IAAI,CACX,eAAM,SAAS,EAAC,yBAAyB,iBAAa,MAAM,kBAErD,CACR,IACK,CACT,EAED,+BAAoB,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,YAAG,KAAK,GAAO,EAE/D,KAAK,IAAI,CACR,YAAG,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,sCAAsC,YAC7D,KAAK,GACJ,CACL,EAEA,IAAI,IAAI,CAAC,KAAK,IAAI,CACjB,YAAG,SAAS,EAAC,+BAA+B,YAAE,IAAI,GAAK,CACxD,IACG,CACP,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -0,0 +1,20 @@
1
+ import * as React from 'react';
2
+ import { type VariantProps } from 'class-variance-authority';
3
+ declare const labelVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
4
+ export interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement>, VariantProps<typeof labelVariants> {
5
+ }
6
+ /**
7
+ * Accessible form label rendered as a `<label>` element.
8
+ * Pass `htmlFor` matching the target control's `id` to associate them.
9
+ * Automatically dims when the associated control is disabled (via the
10
+ * `peer-disabled` Tailwind variant).
11
+ *
12
+ * @example
13
+ * ```tsx
14
+ * <Label htmlFor="email">Email address</Label>
15
+ * <Input id="email" type="email" />
16
+ * ```
17
+ */
18
+ declare const Label: React.ForwardRefExoticComponent<LabelProps & React.RefAttributes<HTMLLabelElement>>;
19
+ export { Label };
20
+ //# sourceMappingURL=Label.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Label.d.ts","sourceRoot":"","sources":["../../src/primitives/Label.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlE,QAAA,MAAM,aAAa,oFAElB,CAAC;AAEF,MAAM,WAAW,UACf,SAAQ,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EACjD,YAAY,CAAC,OAAO,aAAa,CAAC;CAAG;AAEzC;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,KAAK,qFAIV,CAAC;AAGF,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { cva } from 'class-variance-authority';
4
+ import { cn } from './utils';
5
+ const labelVariants = cva('text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70');
6
+ /**
7
+ * Accessible form label rendered as a `<label>` element.
8
+ * Pass `htmlFor` matching the target control's `id` to associate them.
9
+ * Automatically dims when the associated control is disabled (via the
10
+ * `peer-disabled` Tailwind variant).
11
+ *
12
+ * @example
13
+ * ```tsx
14
+ * <Label htmlFor="email">Email address</Label>
15
+ * <Input id="email" type="email" />
16
+ * ```
17
+ */
18
+ const Label = React.forwardRef(({ className, ...props }, ref) => (_jsx("label", { ref: ref, className: cn(labelVariants(), className), ...props })));
19
+ Label.displayName = 'Label';
20
+ export { Label };
21
+ //# sourceMappingURL=Label.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Label.js","sourceRoot":"","sources":["../../src/primitives/Label.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAE7B,MAAM,aAAa,GAAG,GAAG,CACvB,4FAA4F,CAC7F,CAAC;AAMF;;;;;;;;;;;GAWG;AACH,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAC5B,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,gBAAO,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,aAAa,EAAE,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAC1E,CACF,CAAC;AACF,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC;AAE5B,OAAO,EAAE,KAAK,EAAE,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,28 @@
1
+ export interface SecretFieldProps {
2
+ /** The key/env-var name shown as a label (e.g. "ANTHROPIC_API_KEY"). */
3
+ label: string;
4
+ /**
5
+ * Whether a secret value is already configured on the server.
6
+ * When true, the stored value is NOT passed to this component — only the
7
+ * boolean fact that one exists.
8
+ */
9
+ isSet: boolean;
10
+ /**
11
+ * Called with the new plaintext value entered by the user. Invoked on Save.
12
+ * The component clears its local input state immediately after calling this,
13
+ * so the typed value is never retained beyond the call site.
14
+ */
15
+ onSubmit: (newValue: string) => void | Promise<void>;
16
+ /** Disables all interactive controls. */
17
+ disabled?: boolean;
18
+ /** Supplementary help text rendered below the field. */
19
+ description?: string;
20
+ /** Error message rendered with role="alert" below the field. */
21
+ error?: string;
22
+ }
23
+ declare function SecretField({ label, isSet, onSubmit, disabled, description, error, }: SecretFieldProps): import("react/jsx-runtime").JSX.Element;
24
+ declare namespace SecretField {
25
+ var displayName: string;
26
+ }
27
+ export { SecretField };
28
+ //# sourceMappingURL=SecretField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SecretField.d.ts","sourceRoot":"","sources":["../../src/primitives/SecretField.tsx"],"names":[],"mappings":"AAuBA,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;;;OAIG;IACH,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,yCAAyC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD,iBAAS,WAAW,CAAC,EACnB,KAAK,EACL,KAAK,EACL,QAAQ,EACR,QAAgB,EAChB,WAAW,EACX,KAAK,GACN,EAAE,gBAAgB,2CA2IlB;kBAlJQ,WAAW;;;AAsJpB,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,65 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * SecretField — write-only secret entry implementing DEC-FE-5.
5
+ *
6
+ * SECURITY CONTRACT: this component NEVER receives, holds, or displays the
7
+ * stored secret value. There is no `value` prop and no state that ever holds
8
+ * the existing secret. When `isSet` is true the component only knows a secret
9
+ * exists — it has no access to what that secret is.
10
+ *
11
+ * The only place typed input exists is transient local state (`inputValue`),
12
+ * which is immediately cleared on both Save and Cancel.
13
+ */
14
+ import * as React from 'react';
15
+ import { Badge } from './Badge';
16
+ import { MaskedSecretInput } from './MaskedSecretInput';
17
+ import { cn } from './utils';
18
+ // ---------------------------------------------------------------------------
19
+ // Component
20
+ // ---------------------------------------------------------------------------
21
+ function SecretField({ label, isSet, onSubmit, disabled = false, description, error, }) {
22
+ // `replacing` tracks whether the user has clicked "Replace" to reveal the
23
+ // masked input when a secret is already configured.
24
+ const [replacing, setReplacing] = React.useState(false);
25
+ // Transient typed value — cleared on submit AND cancel. This is the ONLY
26
+ // place a typed secret value exists in this component; it is never persisted,
27
+ // logged, or surfaced to the parent except via the onSubmit callback.
28
+ const [inputValue, setInputValue] = React.useState('');
29
+ const [submitting, setSubmitting] = React.useState(false);
30
+ // Whether to show the masked input: always when no secret is set, or when
31
+ // the user is actively replacing an existing one.
32
+ const showInput = !isSet || replacing;
33
+ const handleSave = React.useCallback(async () => {
34
+ if (!inputValue || submitting)
35
+ return;
36
+ setSubmitting(true);
37
+ try {
38
+ await onSubmit(inputValue);
39
+ }
40
+ finally {
41
+ // Immediately clear the typed value regardless of whether onSubmit threw.
42
+ setInputValue('');
43
+ setSubmitting(false);
44
+ setReplacing(false);
45
+ }
46
+ }, [inputValue, onSubmit, submitting]);
47
+ const handleCancel = React.useCallback(() => {
48
+ // Clear the typed value and collapse back to the "Configured" view.
49
+ setInputValue('');
50
+ setReplacing(false);
51
+ }, []);
52
+ const handleKeyDown = React.useCallback((e) => {
53
+ if (e.key === 'Enter') {
54
+ e.preventDefault();
55
+ void handleSave();
56
+ }
57
+ if (e.key === 'Escape') {
58
+ handleCancel();
59
+ }
60
+ }, [handleSave, handleCancel]);
61
+ return (_jsxs("div", { className: "flex w-full flex-col gap-2", children: [isSet && !replacing && (_jsxs("div", { className: "flex items-center gap-3", children: [_jsx(Badge, { variant: "secondary", className: "text-xs font-medium", children: "Configured" }), _jsx("button", { type: "button", onClick: () => setReplacing(true), disabled: disabled, className: cn('text-sm text-muted-foreground underline-offset-2 hover:text-foreground hover:underline', 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1', 'disabled:pointer-events-none disabled:opacity-40', 'transition-colors'), children: "Replace" })] })), showInput && (_jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(MaskedSecretInput, { label: label, value: inputValue, onChange: setInputValue, placeholder: isSet ? 'Enter new value to replace…' : 'Enter value…', disabled: disabled || submitting }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("button", { type: "button", onClick: () => void handleSave(), onKeyDown: handleKeyDown, disabled: disabled || submitting || !inputValue, className: cn('inline-flex h-8 items-center justify-center rounded-md px-3 text-sm font-medium', 'bg-primary text-primary-foreground shadow', 'hover:bg-primary/90', 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring', 'disabled:pointer-events-none disabled:opacity-40', 'transition-colors'), children: submitting ? 'Saving…' : 'Save' }), isSet && replacing && (_jsx("button", { type: "button", onClick: handleCancel, onKeyDown: handleKeyDown, disabled: disabled || submitting, className: cn('inline-flex h-8 items-center justify-center rounded-md px-3 text-sm font-medium', 'border border-input bg-background text-foreground', 'hover:bg-accent hover:text-accent-foreground', 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring', 'disabled:pointer-events-none disabled:opacity-40', 'transition-colors'), children: "Cancel" }))] })] })), description && (_jsx("p", { className: "text-xs text-muted-foreground", children: description })), error && (_jsx("p", { role: "alert", className: "text-xs font-medium text-destructive", children: error }))] }));
62
+ }
63
+ SecretField.displayName = 'SecretField';
64
+ export { SecretField };
65
+ //# sourceMappingURL=SecretField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SecretField.js","sourceRoot":"","sources":["../../src/primitives/SecretField.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import * as React from 'react';
2
+ import { type VariantProps } from 'class-variance-authority';
3
+ declare const spinnerVariants: (props?: ({
4
+ size?: "sm" | "lg" | "md" | null | undefined;
5
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
+ export interface SpinnerProps extends React.SVGAttributes<SVGSVGElement>, VariantProps<typeof spinnerVariants> {
7
+ /** Accessible label announced to screen readers. Defaults to "Loading". */
8
+ 'aria-label'?: string;
9
+ }
10
+ /**
11
+ * Loading indicator with an accessible `role="status"` wrapper and
12
+ * visually-hidden text for screen readers. Size variants: `sm`, `md`, `lg`.
13
+ */
14
+ declare function Spinner({ className, size, 'aria-label': ariaLabel, ...props }: SpinnerProps): import("react/jsx-runtime").JSX.Element;
15
+ export { Spinner };
16
+ //# sourceMappingURL=Spinner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Spinner.d.ts","sourceRoot":"","sources":["../../src/primitives/Spinner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlE,QAAA,MAAM,eAAe;;8EAWnB,CAAC;AAEH,MAAM,WAAW,YACf,SAAQ,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,EACxC,YAAY,CAAC,OAAO,eAAe,CAAC;IACtC,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,iBAAS,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,SAAqB,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,2CA2ChG;AAED,OAAO,EAAE,OAAO,EAAE,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cva } from 'class-variance-authority';
3
+ import { cn } from './utils';
4
+ const spinnerVariants = cva('animate-spin text-current', {
5
+ variants: {
6
+ size: {
7
+ sm: 'h-4 w-4',
8
+ md: 'h-6 w-6',
9
+ lg: 'h-8 w-8',
10
+ },
11
+ },
12
+ defaultVariants: {
13
+ size: 'md',
14
+ },
15
+ });
16
+ /**
17
+ * Loading indicator with an accessible `role="status"` wrapper and
18
+ * visually-hidden text for screen readers. Size variants: `sm`, `md`, `lg`.
19
+ */
20
+ function Spinner({ className, size, 'aria-label': ariaLabel = 'Loading', ...props }) {
21
+ return (_jsxs("span", { role: "status", children: [_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", "aria-hidden": "true", className: cn(spinnerVariants({ size }), className), ...props, children: [_jsx("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), _jsx("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z" })] }), _jsx("span", { style: {
22
+ position: 'absolute',
23
+ width: '1px',
24
+ height: '1px',
25
+ padding: 0,
26
+ margin: '-1px',
27
+ overflow: 'hidden',
28
+ clip: 'rect(0,0,0,0)',
29
+ whiteSpace: 'nowrap',
30
+ borderWidth: 0,
31
+ }, children: ariaLabel })] }));
32
+ }
33
+ export { Spinner };
34
+ //# sourceMappingURL=Spinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Spinner.js","sourceRoot":"","sources":["../../src/primitives/Spinner.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAE7B,MAAM,eAAe,GAAG,GAAG,CAAC,2BAA2B,EAAE;IACvD,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,EAAE,EAAE,SAAS;YACb,EAAE,EAAE,SAAS;YACb,EAAE,EAAE,SAAS;SACd;KACF;IACD,eAAe,EAAE;QACf,IAAI,EAAE,IAAI;KACX;CACF,CAAC,CAAC;AASH;;;GAGG;AACH,SAAS,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,GAAG,SAAS,EAAE,GAAG,KAAK,EAAgB;IAC/F,OAAO,CACL,gBAAM,IAAI,EAAC,QAAQ,aACjB,eACE,KAAK,EAAC,4BAA4B,EAClC,IAAI,EAAC,MAAM,EACX,OAAO,EAAC,WAAW,iBACP,MAAM,EAClB,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,KAC/C,KAAK,aAET,iBACE,SAAS,EAAC,YAAY,EACtB,EAAE,EAAC,IAAI,EACP,EAAE,EAAC,IAAI,EACP,CAAC,EAAC,IAAI,EACN,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,GAAG,GACf,EACF,eACE,SAAS,EAAC,YAAY,EACtB,IAAI,EAAC,cAAc,EACnB,CAAC,EAAC,6CAA6C,GAC/C,IACE,EAEN,eACE,KAAK,EAAE;oBACL,QAAQ,EAAE,UAAU;oBACpB,KAAK,EAAE,KAAK;oBACZ,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE,CAAC;oBACV,MAAM,EAAE,MAAM;oBACd,QAAQ,EAAE,QAAQ;oBAClB,IAAI,EAAE,eAAe;oBACrB,UAAU,EAAE,QAAQ;oBACpB,WAAW,EAAE,CAAC;iBACf,YAEA,SAAS,GACL,IACF,CACR,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,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"}
@@ -0,0 +1,32 @@
1
+ import * as React from 'react';
2
+ import * as SwitchPrimitive from '@radix-ui/react-switch';
3
+ import { type VariantProps } from 'class-variance-authority';
4
+ declare const switchTrackVariants: (props?: ({
5
+ size?: "sm" | "md" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ /**
8
+ * Props for `Switch`. An accessible name is required: supply either
9
+ * `aria-label` (inline string) or `aria-labelledby` (id of a labelling
10
+ * element). Size variants: `sm` (h-4/w-7) and `md` (h-5/w-9, default).
11
+ */
12
+ export type SwitchProps = React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root> & VariantProps<typeof switchTrackVariants> & ({
13
+ 'aria-label': string;
14
+ 'aria-labelledby'?: string;
15
+ } | {
16
+ 'aria-label'?: string;
17
+ 'aria-labelledby': string;
18
+ });
19
+ /**
20
+ * Accessible toggle switch wrapping Radix UI Switch primitive.
21
+ * Requires an accessible name via `aria-label` or `aria-labelledby`.
22
+ * Supports controlled (`checked` + `onCheckedChange`) and uncontrolled
23
+ * (`defaultChecked`) usage. Size variants: `sm` and `md` (default).
24
+ *
25
+ * @example
26
+ * ```tsx
27
+ * <Switch aria-label="Enable notifications" checked={enabled} onCheckedChange={setEnabled} />
28
+ * ```
29
+ */
30
+ declare const Switch: React.ForwardRefExoticComponent<SwitchProps & React.RefAttributes<HTMLButtonElement>>;
31
+ export { Switch };
32
+ //# sourceMappingURL=Switch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../src/primitives/Switch.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlE,QAAA,MAAM,mBAAmB;;8EAaxB,CAAC;AAiBF;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,GACnF,YAAY,CAAC,OAAO,mBAAmB,CAAC,GAAG,CACvC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,CACvD,CAAC;AAEJ;;;;;;;;;;GAUG;AACH,QAAA,MAAM,MAAM,uFAUX,CAAC;AAGF,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -0,0 +1,43 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import * as React from 'react';
4
+ import * as SwitchPrimitive from '@radix-ui/react-switch';
5
+ import { cva } from 'class-variance-authority';
6
+ import { cn } from './utils';
7
+ const switchTrackVariants = cva('relative inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input', {
8
+ variants: {
9
+ size: {
10
+ sm: 'h-4 w-7',
11
+ md: 'h-5 w-9',
12
+ },
13
+ },
14
+ defaultVariants: {
15
+ size: 'md',
16
+ },
17
+ });
18
+ const switchThumbVariants = cva('pointer-events-none block rounded-full bg-background shadow-lg ring-0 transition-transform', {
19
+ variants: {
20
+ size: {
21
+ sm: 'h-3 w-3 data-[state=checked]:translate-x-3 data-[state=unchecked]:translate-x-0',
22
+ md: 'h-4 w-4 data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0',
23
+ },
24
+ },
25
+ defaultVariants: {
26
+ size: 'md',
27
+ },
28
+ });
29
+ /**
30
+ * Accessible toggle switch wrapping Radix UI Switch primitive.
31
+ * Requires an accessible name via `aria-label` or `aria-labelledby`.
32
+ * Supports controlled (`checked` + `onCheckedChange`) and uncontrolled
33
+ * (`defaultChecked`) usage. Size variants: `sm` and `md` (default).
34
+ *
35
+ * @example
36
+ * ```tsx
37
+ * <Switch aria-label="Enable notifications" checked={enabled} onCheckedChange={setEnabled} />
38
+ * ```
39
+ */
40
+ const Switch = React.forwardRef(({ className, size, ...props }, ref) => (_jsx(SwitchPrimitive.Root, { ref: ref, className: cn(switchTrackVariants({ size }), className), ...props, children: _jsx(SwitchPrimitive.Thumb, { className: switchThumbVariants({ size }) }) })));
41
+ Switch.displayName = 'Switch';
42
+ export { Switch };
43
+ //# sourceMappingURL=Switch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Switch.js","sourceRoot":"","sources":["../../src/primitives/Switch.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAE7B,MAAM,mBAAmB,GAAG,GAAG,CAC7B,+WAA+W,EAC/W;IACE,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,EAAE,EAAE,SAAS;YACb,EAAE,EAAE,SAAS;SACd;KACF;IACD,eAAe,EAAE;QACf,IAAI,EAAE,IAAI;KACX;CACF,CACF,CAAC;AAEF,MAAM,mBAAmB,GAAG,GAAG,CAC7B,4FAA4F,EAC5F;IACE,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,EAAE,EAAE,iFAAiF;YACrF,EAAE,EAAE,iFAAiF;SACtF;KACF;IACD,eAAe,EAAE;QACf,IAAI,EAAE,IAAI;KACX;CACF,CACF,CAAC;AAaF;;;;;;;;;;GAUG;AACH,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAC7B,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACtC,KAAC,eAAe,CAAC,IAAI,IACnB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,KACnD,KAAK,YAET,KAAC,eAAe,CAAC,KAAK,IAAC,SAAS,EAAE,mBAAmB,CAAC,EAAE,IAAI,EAAE,CAAC,GAAI,GAC9C,CACxB,CACF,CAAC;AACF,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -35,4 +35,32 @@ 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 { CreateEntityDialog } from './CreateEntityDialog';
39
+ export type { CreateEntityDialogProps, EntityFormSchema, SimpleFormSchema, TabsFormSchema, CompositeFormSchema, TabDef, FieldDef, FieldType, FieldOption, MemberPickerConfig, CollectionPickerConfig as CreateEntityCollectionPickerConfig, CollectionItem as CreateEntityCollectionItem, } from './CreateEntityDialog';
40
+ export { CollectionPicker } from './CollectionPicker';
41
+ export type { CollectionPickerProps, CollectionPickerConfig, CollectionItem, } from './CollectionPicker';
42
+ export { StatusChip } from './StatusChip';
43
+ export type { StatusChipProps } from './StatusChip';
44
+ export { statusVariant, readinessVariant } from './variants';
45
+ export type { StatusChipVariant, ReadinessVariant } from './variants';
46
+ export { EffectiveStatusChips } from './EffectiveStatusChips';
47
+ export type { EffectiveStatusChipsProps, PlanningStatusProvenance, PlanningStatusProvenanceSource, PlanningStatusEvidence, } from './EffectiveStatusChips';
48
+ export { MismatchBadge } from './MismatchBadge';
49
+ export type { MismatchBadgeProps } from './MismatchBadge';
50
+ export { BatchReadinessPill } from './BatchReadinessPill';
51
+ export type { BatchReadinessPillProps, PlanningPhaseBatchReadinessState } from './BatchReadinessPill';
52
+ export { PlanningNodeTypeIcon } from './PlanningNodeTypeIcon';
53
+ export type { PlanningNodeTypeIconProps, PlanningNodeType } from './PlanningNodeTypeIcon';
54
+ export { Card, CardHeader, CardContent, CardFooter } from './Card';
55
+ export type { CardProps, CardHeaderProps, CardContentProps, CardFooterProps } from './Card';
56
+ export { FormField } from './FormField';
57
+ export type { FormFieldProps } from './FormField';
58
+ export { Label } from './Label';
59
+ export type { LabelProps } from './Label';
60
+ export { Spinner } from './Spinner';
61
+ export type { SpinnerProps } from './Spinner';
62
+ export { Switch } from './Switch';
63
+ export type { SwitchProps } from './Switch';
64
+ export { SecretField } from './SecretField';
65
+ export type { SecretFieldProps } from './SecretField';
38
66
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/primitives/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/primitives/index.ts"],"names":[],"mappings":"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"}
@@ -21,4 +21,20 @@ export { GroupedSelect } from './GroupedSelect';
21
21
  export { EnterpriseOwnerBadge } from './EnterpriseOwnerBadge';
22
22
  export { LockIcon } from './LockIcon';
23
23
  export { WizardShell } from './WizardShell';
24
+ export { CreateEntityDialog } from './CreateEntityDialog';
25
+ export { CollectionPicker } from './CollectionPicker';
26
+ // Planning Primitives — extracted from CCDash (PCP-709)
27
+ export { StatusChip } from './StatusChip';
28
+ export { statusVariant, readinessVariant } from './variants';
29
+ export { EffectiveStatusChips } from './EffectiveStatusChips';
30
+ export { MismatchBadge } from './MismatchBadge';
31
+ export { BatchReadinessPill } from './BatchReadinessPill';
32
+ export { PlanningNodeTypeIcon } from './PlanningNodeTypeIcon';
33
+ // FE-P1 new primitives
34
+ export { Card, CardHeader, CardContent, CardFooter } from './Card';
35
+ export { FormField } from './FormField';
36
+ export { Label } from './Label';
37
+ export { Spinner } from './Spinner';
38
+ export { Switch } from './Switch';
39
+ export { SecretField } from './SecretField';
24
40
  //# sourceMappingURL=index.js.map