@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.
- package/CHANGELOG.md +65 -0
- package/README.md +863 -9
- package/dist/components/content-viewer/ArticleViewer.d.ts +42 -0
- package/dist/components/content-viewer/ArticleViewer.d.ts.map +1 -0
- package/dist/components/content-viewer/ArticleViewer.js +321 -0
- package/dist/components/content-viewer/ArticleViewer.js.map +1 -0
- package/dist/components/content-viewer/FrontmatterHeader.d.ts +32 -0
- package/dist/components/content-viewer/FrontmatterHeader.d.ts.map +1 -0
- package/dist/components/content-viewer/FrontmatterHeader.js +95 -0
- package/dist/components/content-viewer/FrontmatterHeader.js.map +1 -0
- package/dist/components/content-viewer/callouts/Callout.d.ts +43 -0
- package/dist/components/content-viewer/callouts/Callout.d.ts.map +1 -0
- package/dist/components/content-viewer/callouts/Callout.js +86 -0
- package/dist/components/content-viewer/callouts/Callout.js.map +1 -0
- package/dist/components/content-viewer/callouts/index.d.ts +2 -0
- package/dist/components/content-viewer/callouts/index.d.ts.map +1 -0
- package/dist/components/content-viewer/callouts/index.js +2 -0
- package/dist/components/content-viewer/callouts/index.js.map +1 -0
- package/dist/components/content-viewer/index.d.ts +21 -0
- package/dist/components/content-viewer/index.d.ts.map +1 -0
- package/dist/components/content-viewer/index.js +29 -0
- package/dist/components/content-viewer/index.js.map +1 -0
- package/dist/components/content-viewer/plugins/index.d.ts +5 -0
- package/dist/components/content-viewer/plugins/index.d.ts.map +1 -0
- package/dist/components/content-viewer/plugins/index.js +5 -0
- package/dist/components/content-viewer/plugins/index.js.map +1 -0
- package/dist/components/content-viewer/plugins/lowlightLoader.d.ts +63 -0
- package/dist/components/content-viewer/plugins/lowlightLoader.d.ts.map +1 -0
- package/dist/components/content-viewer/plugins/lowlightLoader.js +120 -0
- package/dist/components/content-viewer/plugins/lowlightLoader.js.map +1 -0
- package/dist/components/content-viewer/plugins/rehypeCodeHighlight.d.ts +44 -0
- package/dist/components/content-viewer/plugins/rehypeCodeHighlight.d.ts.map +1 -0
- package/dist/components/content-viewer/plugins/rehypeCodeHighlight.js +122 -0
- package/dist/components/content-viewer/plugins/rehypeCodeHighlight.js.map +1 -0
- package/dist/components/content-viewer/plugins/rehypeExternalLinks.d.ts +59 -0
- package/dist/components/content-viewer/plugins/rehypeExternalLinks.d.ts.map +1 -0
- package/dist/components/content-viewer/plugins/rehypeExternalLinks.js +79 -0
- package/dist/components/content-viewer/plugins/rehypeExternalLinks.js.map +1 -0
- package/dist/components/content-viewer/plugins/rehypeHeadingIds.d.ts +37 -0
- package/dist/components/content-viewer/plugins/rehypeHeadingIds.d.ts.map +1 -0
- package/dist/components/content-viewer/plugins/rehypeHeadingIds.js +82 -0
- package/dist/components/content-viewer/plugins/rehypeHeadingIds.js.map +1 -0
- package/dist/components/content-viewer/plugins/remarkCallouts.d.ts +39 -0
- package/dist/components/content-viewer/plugins/remarkCallouts.d.ts.map +1 -0
- package/dist/components/content-viewer/plugins/remarkCallouts.js +77 -0
- package/dist/components/content-viewer/plugins/remarkCallouts.js.map +1 -0
- package/dist/components/content-viewer/plugins/slugify.d.ts +24 -0
- package/dist/components/content-viewer/plugins/slugify.d.ts.map +1 -0
- package/dist/components/content-viewer/plugins/slugify.js +31 -0
- package/dist/components/content-viewer/plugins/slugify.js.map +1 -0
- package/dist/components/content-viewer/sanitize.d.ts +75 -0
- package/dist/components/content-viewer/sanitize.d.ts.map +1 -0
- package/dist/components/content-viewer/sanitize.js +252 -0
- package/dist/components/content-viewer/sanitize.js.map +1 -0
- package/dist/components/content-viewer/types.d.ts +315 -0
- package/dist/components/content-viewer/types.d.ts.map +1 -0
- package/dist/components/content-viewer/types.js +8 -0
- package/dist/components/content-viewer/types.js.map +1 -0
- package/dist/components/content-viewer/variants.d.ts +71 -0
- package/dist/components/content-viewer/variants.d.ts.map +1 -0
- package/dist/components/content-viewer/variants.js +105 -0
- package/dist/components/content-viewer/variants.js.map +1 -0
- package/dist/content-viewer/ContentPane.d.ts +44 -1
- package/dist/content-viewer/ContentPane.d.ts.map +1 -1
- package/dist/content-viewer/ContentPane.js +139 -5
- package/dist/content-viewer/ContentPane.js.map +1 -1
- package/dist/content-viewer/FileTree.d.ts +23 -1
- package/dist/content-viewer/FileTree.d.ts.map +1 -1
- package/dist/content-viewer/FileTree.js +20 -5
- package/dist/content-viewer/FileTree.js.map +1 -1
- package/dist/content-viewer/index.d.ts +2 -0
- package/dist/content-viewer/index.d.ts.map +1 -1
- package/dist/content-viewer/index.js +2 -0
- package/dist/content-viewer/index.js.map +1 -1
- package/dist/diff/DiffViewer.js +3 -3
- package/dist/diff/DiffViewer.js.map +1 -1
- package/dist/discovery/discovery-card.d.ts +25 -0
- package/dist/discovery/discovery-card.d.ts.map +1 -0
- package/dist/discovery/discovery-card.js +265 -0
- package/dist/discovery/discovery-card.js.map +1 -0
- package/dist/discovery/index.d.ts +3 -0
- package/dist/discovery/index.d.ts.map +1 -0
- package/dist/discovery/index.js +3 -0
- package/dist/discovery/index.js.map +1 -0
- package/dist/display/ContextInfoCard.d.ts +61 -0
- package/dist/display/ContextInfoCard.d.ts.map +1 -0
- package/dist/display/ContextInfoCard.js +45 -0
- package/dist/display/ContextInfoCard.js.map +1 -0
- package/dist/display/index.d.ts +2 -0
- package/dist/display/index.d.ts.map +1 -1
- package/dist/display/index.js +1 -0
- package/dist/display/index.js.map +1 -1
- package/dist/editor/CodeEditor.d.ts +39 -0
- package/dist/editor/CodeEditor.d.ts.map +1 -0
- package/dist/editor/CodeEditor.js +114 -0
- package/dist/editor/CodeEditor.js.map +1 -0
- package/dist/editor/MarkdownEditor.d.ts +3 -2
- package/dist/editor/MarkdownEditor.d.ts.map +1 -1
- package/dist/editor/MarkdownEditor.js +32 -80
- package/dist/editor/MarkdownEditor.js.map +1 -1
- package/dist/editor/SplitPreview.d.ts +10 -1
- package/dist/editor/SplitPreview.d.ts.map +1 -1
- package/dist/editor/SplitPreview.js +4 -2
- package/dist/editor/SplitPreview.js.map +1 -1
- package/dist/editor/codeLanguages.d.ts +28 -0
- package/dist/editor/codeLanguages.d.ts.map +1 -0
- package/dist/editor/codeLanguages.js +54 -0
- package/dist/editor/codeLanguages.js.map +1 -0
- package/dist/editor/index.d.ts +2 -0
- package/dist/editor/index.d.ts.map +1 -1
- package/dist/editor/index.js +6 -0
- package/dist/editor/index.js.map +1 -1
- package/dist/editor/theme.d.ts +16 -0
- package/dist/editor/theme.d.ts.map +1 -0
- package/dist/editor/theme.js +82 -0
- package/dist/editor/theme.js.map +1 -0
- package/dist/filters/filter-bar.d.ts +14 -0
- package/dist/filters/filter-bar.d.ts.map +1 -0
- package/dist/filters/filter-bar.js +47 -0
- package/dist/filters/filter-bar.js.map +1 -0
- package/dist/filters/filter-slot-config.d.ts +239 -0
- package/dist/filters/filter-slot-config.d.ts.map +1 -0
- package/dist/filters/filter-slot-config.js +24 -0
- package/dist/filters/filter-slot-config.js.map +1 -0
- package/dist/filters/index.d.ts +2 -0
- package/dist/filters/index.d.ts.map +1 -1
- package/dist/filters/index.js +1 -0
- package/dist/filters/index.js.map +1 -1
- 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/Card.d.ts +28 -0
- package/dist/primitives/Card.d.ts.map +1 -0
- package/dist/primitives/Card.js +30 -0
- package/dist/primitives/Card.js.map +1 -0
- package/dist/primitives/CollectionPicker.d.ts +47 -0
- package/dist/primitives/CollectionPicker.d.ts.map +1 -0
- package/dist/primitives/CollectionPicker.js +105 -0
- package/dist/primitives/CollectionPicker.js.map +1 -0
- package/dist/primitives/CreateEntityDialog.d.ts +144 -0
- package/dist/primitives/CreateEntityDialog.d.ts.map +1 -0
- package/dist/primitives/CreateEntityDialog.js +379 -0
- package/dist/primitives/CreateEntityDialog.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/FormField.d.ts +29 -0
- package/dist/primitives/FormField.d.ts.map +1 -0
- package/dist/primitives/FormField.js +27 -0
- package/dist/primitives/FormField.js.map +1 -0
- package/dist/primitives/Label.d.ts +20 -0
- package/dist/primitives/Label.d.ts.map +1 -0
- package/dist/primitives/Label.js +21 -0
- package/dist/primitives/Label.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/SecretField.d.ts +28 -0
- package/dist/primitives/SecretField.d.ts.map +1 -0
- package/dist/primitives/SecretField.js +65 -0
- package/dist/primitives/SecretField.js.map +1 -0
- package/dist/primitives/Spinner.d.ts +16 -0
- package/dist/primitives/Spinner.d.ts.map +1 -0
- package/dist/primitives/Spinner.js +34 -0
- package/dist/primitives/Spinner.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/Switch.d.ts +32 -0
- package/dist/primitives/Switch.d.ts.map +1 -0
- package/dist/primitives/Switch.js +43 -0
- package/dist/primitives/Switch.js.map +1 -0
- package/dist/primitives/index.d.ts +28 -0
- package/dist/primitives/index.d.ts.map +1 -1
- package/dist/primitives/index.js +16 -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/dist/utils/type-colors.d.ts.map +1 -1
- package/dist/utils/type-colors.js +4 -0
- package/dist/utils/type-colors.js.map +1 -1
- 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":"AAAA,YAAY,CAAC;;AAEb;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AA6B7B,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,SAAS,WAAW,CAAC,EACnB,KAAK,EACL,KAAK,EACL,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,WAAW,EACX,KAAK,GACY;IACjB,0EAA0E;IAC1E,oDAAoD;IACpD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExD,yEAAyE;IACzE,8EAA8E;IAC9E,sEAAsE;IACtE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEvD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE1D,0EAA0E;IAC1E,kDAAkD;IAClD,MAAM,SAAS,GAAG,CAAC,KAAK,IAAI,SAAS,CAAC;IAEtC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;QAC9C,IAAI,CAAC,UAAU,IAAI,UAAU;YAAE,OAAO;QACtC,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;gBAAS,CAAC;YACT,0EAA0E;YAC1E,aAAa,CAAC,EAAE,CAAC,CAAC;YAClB,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IAEvC,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC1C,oEAAoE;QACpE,aAAa,CAAC,EAAE,CAAC,CAAC;QAClB,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CACrC,CAAC,CAAsB,EAAE,EAAE;QACzB,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;YACtB,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,KAAK,UAAU,EAAE,CAAC;QACpB,CAAC;QACD,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YACvB,YAAY,EAAE,CAAC;QACjB,CAAC;IACH,CAAC,EACD,CAAC,UAAU,EAAE,YAAY,CAAC,CAC3B,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,4BAA4B,aAExC,KAAK,IAAI,CAAC,SAAS,IAAI,CACtB,eAAK,SAAS,EAAC,yBAAyB,aAEtC,KAAC,KAAK,IAAC,OAAO,EAAC,WAAW,EAAC,SAAS,EAAC,qBAAqB,2BAElD,EACR,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EACjC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,EAAE,CACX,wFAAwF,EACxF,qGAAqG,EACrG,kDAAkD,EAClD,mBAAmB,CACpB,wBAGM,IACL,CACP,EAGA,SAAS,IAAI,CACZ,eAAK,SAAS,EAAC,qBAAqB,aAClC,KAAC,iBAAiB,IAChB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,aAAa,EACvB,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,cAAc,EACnE,QAAQ,EAAE,QAAQ,IAAI,UAAU,GAChC,EAGF,eAAK,SAAS,EAAC,yBAAyB,aACtC,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,UAAU,EAAE,EAChC,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,QAAQ,IAAI,UAAU,IAAI,CAAC,UAAU,EAC/C,SAAS,EAAE,EAAE,CACX,iFAAiF,EACjF,2CAA2C,EAC3C,qBAAqB,EACrB,yEAAyE,EACzE,kDAAkD,EAClD,mBAAmB,CACpB,YAEA,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,GACzB,EAGR,KAAK,IAAI,SAAS,IAAI,CACrB,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,QAAQ,IAAI,UAAU,EAChC,SAAS,EAAE,EAAE,CACX,iFAAiF,EACjF,mDAAmD,EACnD,8CAA8C,EAC9C,yEAAyE,EACzE,kDAAkD,EAClD,mBAAmB,CACpB,uBAGM,CACV,IACG,IACF,CACP,EAGA,WAAW,IAAI,CACd,YAAG,SAAS,EAAC,+BAA+B,YAAE,WAAW,GAAK,CAC/D,EAGA,KAAK,IAAI,CACR,YAAG,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,sCAAsC,YAC7D,KAAK,GACJ,CACL,IACG,CACP,CAAC;AACJ,CAAC;AAED,WAAW,CAAC,WAAW,GAAG,aAAa,CAAC;AAExC,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -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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"}
|
package/dist/primitives/index.js
CHANGED
|
@@ -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
|