@maxhealth.tech/prefab 0.2.17 → 0.2.18
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 +129 -20
- package/dist/app.d.ts +19 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +19 -1
- package/dist/app.js.map +1 -1
- package/dist/auto/form.d.ts +48 -0
- package/dist/auto/form.d.ts.map +1 -1
- package/dist/auto/form.js +77 -0
- package/dist/auto/form.js.map +1 -1
- package/dist/auto/index.d.ts +1 -1
- package/dist/auto/index.d.ts.map +1 -1
- package/dist/auto/index.js +1 -1
- package/dist/auto/index.js.map +1 -1
- package/dist/components/alert/index.d.ts +1 -1
- package/dist/components/alert/index.d.ts.map +1 -1
- package/dist/components/card/index.d.ts +5 -1
- package/dist/components/card/index.d.ts.map +1 -1
- package/dist/components/card/index.js +5 -1
- package/dist/components/card/index.js.map +1 -1
- package/dist/components/control/index.d.ts +23 -2
- package/dist/components/control/index.d.ts.map +1 -1
- package/dist/components/control/index.js +37 -2
- package/dist/components/control/index.js.map +1 -1
- package/dist/components/layout/index.d.ts +7 -3
- package/dist/components/layout/index.d.ts.map +1 -1
- package/dist/components/layout/index.js +22 -5
- package/dist/components/layout/index.js.map +1 -1
- package/dist/components/media/index.d.ts +14 -1
- package/dist/components/media/index.d.ts.map +1 -1
- package/dist/components/media/index.js +20 -4
- package/dist/components/media/index.js.map +1 -1
- package/dist/mcp/display.d.ts +78 -0
- package/dist/mcp/display.d.ts.map +1 -1
- package/dist/mcp/display.js +90 -3
- package/dist/mcp/display.js.map +1 -1
- package/dist/mcp/index.d.ts +2 -2
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +1 -1
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/types.d.ts +2 -0
- package/dist/mcp/types.d.ts.map +1 -1
- package/dist/prefab.css +16 -0
- package/dist/renderer/index.js +3 -7
- package/dist/renderer/index.js.map +1 -1
- package/dist/renderer.auto.min.js +3 -3
- package/dist/renderer.min.js +3 -3
- package/package.json +1 -1
|
@@ -10,12 +10,47 @@ export function ForEach(props) {
|
|
|
10
10
|
});
|
|
11
11
|
return c;
|
|
12
12
|
}
|
|
13
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Conditional rendering.
|
|
15
|
+
*
|
|
16
|
+
* @example Full props form:
|
|
17
|
+
* ```ts
|
|
18
|
+
* If({ condition: '$count > 0', children: [Text({ text: 'Has items' })] })
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @example Shorthand (condition + children):
|
|
22
|
+
* ```ts
|
|
23
|
+
* If('$count > 0', [Text({ text: 'Has items' })])
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export function If(propsOrCondition, children) {
|
|
27
|
+
if (typeof propsOrCondition === 'string' || typeof propsOrCondition === 'object' && 'subscribe' in propsOrCondition) {
|
|
28
|
+
const c = new ContainerComponent('If', { children });
|
|
29
|
+
const condition = propsOrCondition;
|
|
30
|
+
c.getProps = () => ({ condition: String(condition) });
|
|
31
|
+
return c;
|
|
32
|
+
}
|
|
33
|
+
const props = propsOrCondition;
|
|
14
34
|
const c = new ContainerComponent('If', props);
|
|
15
35
|
c.getProps = () => ({ condition: String(props.condition) });
|
|
16
36
|
return c;
|
|
17
37
|
}
|
|
18
|
-
|
|
38
|
+
/**
|
|
39
|
+
* Else-if conditional rendering.
|
|
40
|
+
*
|
|
41
|
+
* @example Shorthand:
|
|
42
|
+
* ```ts
|
|
43
|
+
* Elif('$count === 0', [Text({ text: 'Empty' })])
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export function Elif(propsOrCondition, children) {
|
|
47
|
+
if (typeof propsOrCondition === 'string' || typeof propsOrCondition === 'object' && 'subscribe' in propsOrCondition) {
|
|
48
|
+
const c = new ContainerComponent('Elif', { children });
|
|
49
|
+
const condition = propsOrCondition;
|
|
50
|
+
c.getProps = () => ({ condition: String(condition) });
|
|
51
|
+
return c;
|
|
52
|
+
}
|
|
53
|
+
const props = propsOrCondition;
|
|
19
54
|
const c = new ContainerComponent('Elif', props);
|
|
20
55
|
c.getProps = () => ({ condition: String(props.condition) });
|
|
21
56
|
return c;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/control/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAUvE,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,MAAM,CAAC,GAAG,IAAI,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IAClD,CAAC,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;QACpC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;KACrC,CAAC,CAAA;IACF,OAAO,CAAC,CAAA;AACV,CAAC;AAQD,MAAM,UAAU,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/control/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,15 +4,19 @@
|
|
|
4
4
|
import { ContainerComponent, type Component } from '../../core/component.js';
|
|
5
5
|
import type { ContainerProps, RxStr } from '../../core/component.js';
|
|
6
6
|
import type { Ref } from '../../rx/collection.js';
|
|
7
|
+
/** Semantic gap tokens → numeric values (matching Tailwind spacing scale). */
|
|
8
|
+
export type GapToken = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
|
|
9
|
+
/** Accepts a numeric gap OR a semantic token. Resolves to a number. */
|
|
10
|
+
export type Gap = number | GapToken;
|
|
7
11
|
export interface ColumnProps extends ContainerProps {
|
|
8
|
-
gap?:
|
|
12
|
+
gap?: Gap;
|
|
9
13
|
align?: string;
|
|
10
14
|
}
|
|
11
15
|
export declare function Column(props: ColumnProps & {
|
|
12
16
|
children?: Component[];
|
|
13
17
|
}): ContainerComponent;
|
|
14
18
|
export interface RowProps extends ContainerProps {
|
|
15
|
-
gap?:
|
|
19
|
+
gap?: Gap;
|
|
16
20
|
align?: string;
|
|
17
21
|
}
|
|
18
22
|
export declare function Row(props: RowProps & {
|
|
@@ -20,7 +24,7 @@ export declare function Row(props: RowProps & {
|
|
|
20
24
|
}): ContainerComponent;
|
|
21
25
|
export interface GridProps extends ContainerProps {
|
|
22
26
|
columns?: number | Record<string, number>;
|
|
23
|
-
gap?:
|
|
27
|
+
gap?: Gap;
|
|
24
28
|
minColumnWidth?: string;
|
|
25
29
|
align?: string;
|
|
26
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/layout/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACpE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAA;AAIjD,MAAM,WAAW,WAAY,SAAQ,cAAc;IACjD,GAAG,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/layout/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,9 +2,25 @@
|
|
|
2
2
|
* Layout components — Column, Row, Grid, Container, Div, Span, etc.
|
|
3
3
|
*/
|
|
4
4
|
import { ContainerComponent } from '../../core/component.js';
|
|
5
|
+
const GAP_MAP = {
|
|
6
|
+
none: 0,
|
|
7
|
+
xs: 1,
|
|
8
|
+
sm: 2,
|
|
9
|
+
md: 3,
|
|
10
|
+
lg: 4,
|
|
11
|
+
xl: 6,
|
|
12
|
+
'2xl': 8,
|
|
13
|
+
};
|
|
14
|
+
function resolveGap(gap) {
|
|
15
|
+
if (gap === undefined)
|
|
16
|
+
return undefined;
|
|
17
|
+
if (typeof gap === 'number')
|
|
18
|
+
return gap;
|
|
19
|
+
return GAP_MAP[gap];
|
|
20
|
+
}
|
|
5
21
|
export function Column(props) {
|
|
6
|
-
|
|
7
|
-
const gapClass =
|
|
22
|
+
const numGap = resolveGap(props.gap);
|
|
23
|
+
const gapClass = numGap !== undefined ? `gap-${numGap}` : undefined;
|
|
8
24
|
const mergedCss = [props.cssClass, gapClass].filter(Boolean).join(' ') || undefined;
|
|
9
25
|
const c = new ContainerComponent('Column', { ...props, cssClass: mergedCss });
|
|
10
26
|
Object.assign(c, { _gap: props.gap, _align: props.align });
|
|
@@ -16,8 +32,8 @@ export function Column(props) {
|
|
|
16
32
|
return c;
|
|
17
33
|
}
|
|
18
34
|
export function Row(props) {
|
|
19
|
-
|
|
20
|
-
const gapClass =
|
|
35
|
+
const numGap = resolveGap(props.gap);
|
|
36
|
+
const gapClass = numGap !== undefined ? `gap-${numGap}` : undefined;
|
|
21
37
|
const mergedCss = [props.cssClass, gapClass].filter(Boolean).join(' ') || undefined;
|
|
22
38
|
const c = new ContainerComponent('Row', { ...props, cssClass: mergedCss });
|
|
23
39
|
c.getProps = () => ({
|
|
@@ -26,10 +42,11 @@ export function Row(props) {
|
|
|
26
42
|
return c;
|
|
27
43
|
}
|
|
28
44
|
export function Grid(props) {
|
|
45
|
+
const numGap = resolveGap(props.gap);
|
|
29
46
|
const c = new ContainerComponent('Grid', props);
|
|
30
47
|
c.getProps = () => ({
|
|
31
48
|
...(props.columns !== undefined && { columns: props.columns }),
|
|
32
|
-
...(
|
|
49
|
+
...(numGap !== undefined && { gap: numGap }),
|
|
33
50
|
...(props.minColumnWidth && { minColumnWidth: props.minColumnWidth }),
|
|
34
51
|
...(props.align && { align: props.align }),
|
|
35
52
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/layout/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAkB,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/layout/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,20 @@ export interface ImageProps extends ComponentProps {
|
|
|
7
7
|
src: string;
|
|
8
8
|
alt?: string;
|
|
9
9
|
}
|
|
10
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Image component.
|
|
12
|
+
*
|
|
13
|
+
* @example Positional (consistent with Audio, Video, Embed):
|
|
14
|
+
* ```ts
|
|
15
|
+
* Image('https://example.com/photo.jpg', { alt: 'Photo' })
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* @example Props form:
|
|
19
|
+
* ```ts
|
|
20
|
+
* Image({ src: 'https://example.com/photo.jpg', alt: 'Photo' })
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export declare function Image(srcOrProps: string | ImageProps, opts?: Omit<ImageProps, 'src'>): Component;
|
|
11
24
|
export declare function Audio(src: string, props?: ComponentProps): Component;
|
|
12
25
|
export declare function Video(src: string, props?: ComponentProps): Component;
|
|
13
26
|
export declare function Embed(src: string, props?: ComponentProps): Component;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/media/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAE7D,MAAM,WAAW,UAAW,SAAQ,cAAc;IAChD,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,wBAAgB,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/media/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAE7D,MAAM,WAAW,UAAW,SAAQ,cAAc;IAChD,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,SAAS,CAUhG;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,cAAc,GAAG,SAAS,CAIpE;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,cAAc,GAAG,SAAS,CAIpE;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,cAAc,GAAG,SAAS,CAIpE;AAED,wBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,cAAc,GAAG,SAAS,CAItE;AAED,wBAAgB,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,SAAS,CAE1D;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,cAAc,GAAG,SAAS,CAI1E"}
|
|
@@ -2,11 +2,27 @@
|
|
|
2
2
|
* Media components — Image, Audio, Video, Embed, Svg, DropZone, Mermaid
|
|
3
3
|
*/
|
|
4
4
|
import { Component } from '../../core/component.js';
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Image component.
|
|
7
|
+
*
|
|
8
|
+
* @example Positional (consistent with Audio, Video, Embed):
|
|
9
|
+
* ```ts
|
|
10
|
+
* Image('https://example.com/photo.jpg', { alt: 'Photo' })
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @example Props form:
|
|
14
|
+
* ```ts
|
|
15
|
+
* Image({ src: 'https://example.com/photo.jpg', alt: 'Photo' })
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export function Image(srcOrProps, opts) {
|
|
19
|
+
const src = typeof srcOrProps === 'string' ? srcOrProps : srcOrProps.src;
|
|
20
|
+
const alt = typeof srcOrProps === 'string' ? opts?.alt : srcOrProps.alt;
|
|
21
|
+
const baseProps = typeof srcOrProps === 'string' ? opts : srcOrProps;
|
|
22
|
+
const c = new Component('Image', baseProps);
|
|
7
23
|
c.getProps = () => ({
|
|
8
|
-
src
|
|
9
|
-
...(
|
|
24
|
+
src,
|
|
25
|
+
...(alt && { alt }),
|
|
10
26
|
});
|
|
11
27
|
return c;
|
|
12
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/media/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAQnD,MAAM,UAAU,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/media/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAQnD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,KAAK,CAAC,UAA+B,EAAE,IAA8B;IACnF,MAAM,GAAG,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAA;IACxE,MAAM,GAAG,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAA;IACvE,MAAM,SAAS,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAA;IACpE,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IAC3C,CAAC,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC;QAClB,GAAG;QACH,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC;KACpB,CAAC,CAAA;IACF,OAAO,CAAC,CAAA;AACV,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAW,EAAE,KAAsB;IACvD,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IACvC,CAAC,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;IAC5B,OAAO,CAAC,CAAA;AACV,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAW,EAAE,KAAsB;IACvD,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IACvC,CAAC,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;IAC5B,OAAO,CAAC,CAAA;AACV,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAW,EAAE,KAAsB;IACvD,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IACvC,CAAC,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;IAC5B,OAAO,CAAC,CAAA;AACV,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,KAAsB;IACzD,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IACrC,CAAC,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;IAChC,OAAO,CAAC,CAAA;AACV,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAsB;IAC7C,OAAO,IAAI,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,OAAe,EAAE,KAAsB;IAC7D,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IACzC,CAAC,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;IAChC,OAAO,CAAC,CAAA;AACV,CAAC"}
|
package/dist/mcp/display.d.ts
CHANGED
|
@@ -99,7 +99,85 @@ export interface DisplayErrorOptions {
|
|
|
99
99
|
* @returns MCP tool result with error UI and isError flag.
|
|
100
100
|
*/
|
|
101
101
|
export declare function display_error(title: string, message: string, options?: DisplayErrorOptions): McpToolResult;
|
|
102
|
+
export interface DisplaySuccessOptions {
|
|
103
|
+
/** Additional detail text below the message. */
|
|
104
|
+
detail?: string;
|
|
105
|
+
/** Theme overrides. */
|
|
106
|
+
theme?: Theme;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Return a standardized success view as an MCP tool result.
|
|
110
|
+
*
|
|
111
|
+
* Renders a success Alert with title + message, optional detail text.
|
|
112
|
+
*
|
|
113
|
+
* @returns MCP tool result with success UI.
|
|
114
|
+
*/
|
|
115
|
+
export declare function display_success(title: string, message: string, options?: DisplaySuccessOptions): McpToolResult;
|
|
102
116
|
export declare const displayForm: typeof display_form;
|
|
103
117
|
export declare const displayUpdate: typeof display_update;
|
|
104
118
|
export declare const displayError: typeof display_error;
|
|
119
|
+
export declare const displaySuccess: typeof display_success;
|
|
120
|
+
/** CSP configuration for MCP Apps resources. */
|
|
121
|
+
export interface McpAppCsp {
|
|
122
|
+
/** Origins allowed for scripts, styles, images, fonts, media. */
|
|
123
|
+
resourceDomains?: string[];
|
|
124
|
+
/** Origins allowed for fetch/XHR/WebSocket. */
|
|
125
|
+
connectDomains?: string[];
|
|
126
|
+
/** Origins allowed for nested iframes. */
|
|
127
|
+
frameDomains?: string[];
|
|
128
|
+
/** Additional allowed base URIs. */
|
|
129
|
+
baseUriDomains?: string[];
|
|
130
|
+
}
|
|
131
|
+
/** Permission Policy requests for MCP Apps resources. */
|
|
132
|
+
export interface McpAppPermissions {
|
|
133
|
+
/** Request camera access (video capture, QR scanning). */
|
|
134
|
+
camera?: boolean;
|
|
135
|
+
/** Request microphone access (audio recording, voice input). */
|
|
136
|
+
microphone?: boolean;
|
|
137
|
+
/** Request geolocation access (location-aware apps, maps). */
|
|
138
|
+
geolocation?: boolean;
|
|
139
|
+
/** Request clipboard write access (copy-to-clipboard). */
|
|
140
|
+
clipboardWrite?: boolean;
|
|
141
|
+
}
|
|
142
|
+
export interface ResourceMetaOptions {
|
|
143
|
+
/** CSP domains configuration. */
|
|
144
|
+
csp?: McpAppCsp;
|
|
145
|
+
/** Permission Policy requests (camera, mic, etc.). */
|
|
146
|
+
permissions?: McpAppPermissions;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Generate the `_meta` object for MCP Apps `ui://` resource registration.
|
|
150
|
+
*
|
|
151
|
+
* Includes CSP and Permission Policy configuration per the MCP Apps spec.
|
|
152
|
+
* Use on both the resource listing AND the content item (VS Code reads
|
|
153
|
+
* only the content item; other hosts may read either).
|
|
154
|
+
*
|
|
155
|
+
* @example
|
|
156
|
+
* ```ts
|
|
157
|
+
* const meta = resourceMeta({
|
|
158
|
+
* csp: { resourceDomains: ['https://cdn.jsdelivr.net'] },
|
|
159
|
+
* permissions: { camera: true },
|
|
160
|
+
* })
|
|
161
|
+
*
|
|
162
|
+
* mcp.resource('viewer', 'ui://my/viewer', {
|
|
163
|
+
* mimeType: 'text/html;profile=mcp-app',
|
|
164
|
+
* _meta: meta,
|
|
165
|
+
* }, async (uri) => ({
|
|
166
|
+
* contents: [{ uri: uri.toString(), mimeType: 'text/html;profile=mcp-app', text: html, _meta: meta }],
|
|
167
|
+
* }))
|
|
168
|
+
* ```
|
|
169
|
+
*/
|
|
170
|
+
export declare function resourceMeta(options?: ResourceMetaOptions): {
|
|
171
|
+
ui: {
|
|
172
|
+
csp?: McpAppCsp;
|
|
173
|
+
permissions?: McpAppPermissions;
|
|
174
|
+
};
|
|
175
|
+
};
|
|
176
|
+
/** Default CSP meta for prefab apps using jsDelivr CDN. */
|
|
177
|
+
export declare const PREFAB_CDN_META: {
|
|
178
|
+
ui: {
|
|
179
|
+
csp?: McpAppCsp;
|
|
180
|
+
permissions?: McpAppPermissions;
|
|
181
|
+
};
|
|
182
|
+
};
|
|
105
183
|
//# sourceMappingURL=display.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../src/mcp/display.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAI/C,MAAM,WAAW,cAAc;IAC7B,wBAAwB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,kCAAkC;IAClC,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAChC,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC3B,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAA;IAC/C,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CACrB,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,OAAO,CAAC,EAAE,cAAc,GACvB,aAAa,
|
|
1
|
+
{"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../src/mcp/display.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/display.js
CHANGED
|
@@ -39,8 +39,10 @@ export function display(viewOrApp, options) {
|
|
|
39
39
|
keyBindings: options?.keyBindings,
|
|
40
40
|
cssClass: options?.cssClass,
|
|
41
41
|
});
|
|
42
|
+
const wire = app.toJSON();
|
|
42
43
|
return {
|
|
43
|
-
content: [{ type: 'text', text: JSON.stringify(
|
|
44
|
+
content: [{ type: 'text', text: JSON.stringify(wire) }],
|
|
45
|
+
structuredContent: wire,
|
|
44
46
|
};
|
|
45
47
|
}
|
|
46
48
|
// ── display_form() ───────────────────────────────────────────────────────────
|
|
@@ -62,8 +64,10 @@ export function display_form(fields, submitTool, options) {
|
|
|
62
64
|
state: options?.state,
|
|
63
65
|
theme: options?.theme,
|
|
64
66
|
});
|
|
67
|
+
const wire = app.toJSON();
|
|
65
68
|
return {
|
|
66
|
-
content: [{ type: 'text', text: JSON.stringify(
|
|
69
|
+
content: [{ type: 'text', text: JSON.stringify(wire) }],
|
|
70
|
+
structuredContent: wire,
|
|
67
71
|
};
|
|
68
72
|
}
|
|
69
73
|
/**
|
|
@@ -81,6 +85,7 @@ export function display_update(state) {
|
|
|
81
85
|
};
|
|
82
86
|
return {
|
|
83
87
|
content: [{ type: 'text', text: JSON.stringify(payload) }],
|
|
88
|
+
structuredContent: payload,
|
|
84
89
|
};
|
|
85
90
|
}
|
|
86
91
|
// ── display_error() ──────────────────────────────────────────────────────────
|
|
@@ -116,13 +121,95 @@ export function display_error(title, message, options) {
|
|
|
116
121
|
view,
|
|
117
122
|
theme: options?.theme,
|
|
118
123
|
});
|
|
124
|
+
const wire = app.toJSON();
|
|
119
125
|
return {
|
|
120
|
-
content: [{ type: 'text', text: JSON.stringify(
|
|
126
|
+
content: [{ type: 'text', text: JSON.stringify(wire) }],
|
|
127
|
+
structuredContent: wire,
|
|
121
128
|
isError: true,
|
|
122
129
|
};
|
|
123
130
|
}
|
|
131
|
+
/**
|
|
132
|
+
* Return a standardized success view as an MCP tool result.
|
|
133
|
+
*
|
|
134
|
+
* Renders a success Alert with title + message, optional detail text.
|
|
135
|
+
*
|
|
136
|
+
* @returns MCP tool result with success UI.
|
|
137
|
+
*/
|
|
138
|
+
export function display_success(title, message, options) {
|
|
139
|
+
const alertChildren = [
|
|
140
|
+
AlertTitle(title),
|
|
141
|
+
AlertDescription(message),
|
|
142
|
+
];
|
|
143
|
+
const bodyChildren = [
|
|
144
|
+
Alert({ variant: 'success', icon: 'CheckCircle', children: alertChildren }),
|
|
145
|
+
];
|
|
146
|
+
if (options?.detail) {
|
|
147
|
+
bodyChildren.push(Muted(options.detail));
|
|
148
|
+
}
|
|
149
|
+
const view = Column({ gap: 4, cssClass: 'p-6 max-w-2xl', children: bodyChildren });
|
|
150
|
+
const app = new PrefabApp({
|
|
151
|
+
title: 'Success',
|
|
152
|
+
view,
|
|
153
|
+
theme: options?.theme,
|
|
154
|
+
});
|
|
155
|
+
const wire = app.toJSON();
|
|
156
|
+
return {
|
|
157
|
+
content: [{ type: 'text', text: JSON.stringify(wire) }],
|
|
158
|
+
structuredContent: wire,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
124
161
|
// ── camelCase aliases (TS convention) ────────────────────────────────────────
|
|
125
162
|
export const displayForm = display_form;
|
|
126
163
|
export const displayUpdate = display_update;
|
|
127
164
|
export const displayError = display_error;
|
|
165
|
+
export const displaySuccess = display_success;
|
|
166
|
+
/**
|
|
167
|
+
* Generate the `_meta` object for MCP Apps `ui://` resource registration.
|
|
168
|
+
*
|
|
169
|
+
* Includes CSP and Permission Policy configuration per the MCP Apps spec.
|
|
170
|
+
* Use on both the resource listing AND the content item (VS Code reads
|
|
171
|
+
* only the content item; other hosts may read either).
|
|
172
|
+
*
|
|
173
|
+
* @example
|
|
174
|
+
* ```ts
|
|
175
|
+
* const meta = resourceMeta({
|
|
176
|
+
* csp: { resourceDomains: ['https://cdn.jsdelivr.net'] },
|
|
177
|
+
* permissions: { camera: true },
|
|
178
|
+
* })
|
|
179
|
+
*
|
|
180
|
+
* mcp.resource('viewer', 'ui://my/viewer', {
|
|
181
|
+
* mimeType: 'text/html;profile=mcp-app',
|
|
182
|
+
* _meta: meta,
|
|
183
|
+
* }, async (uri) => ({
|
|
184
|
+
* contents: [{ uri: uri.toString(), mimeType: 'text/html;profile=mcp-app', text: html, _meta: meta }],
|
|
185
|
+
* }))
|
|
186
|
+
* ```
|
|
187
|
+
*/
|
|
188
|
+
export function resourceMeta(options) {
|
|
189
|
+
const ui = {};
|
|
190
|
+
if (options?.csp) {
|
|
191
|
+
ui.csp = {
|
|
192
|
+
resourceDomains: options.csp.resourceDomains ?? [],
|
|
193
|
+
connectDomains: options.csp.connectDomains ?? [],
|
|
194
|
+
frameDomains: options.csp.frameDomains ?? [],
|
|
195
|
+
baseUriDomains: options.csp.baseUriDomains ?? [],
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
if (options?.permissions) {
|
|
199
|
+
ui.permissions = {};
|
|
200
|
+
if (options.permissions.camera)
|
|
201
|
+
ui.permissions.camera = true;
|
|
202
|
+
if (options.permissions.microphone)
|
|
203
|
+
ui.permissions.microphone = true;
|
|
204
|
+
if (options.permissions.geolocation)
|
|
205
|
+
ui.permissions.geolocation = true;
|
|
206
|
+
if (options.permissions.clipboardWrite)
|
|
207
|
+
ui.permissions.clipboardWrite = true;
|
|
208
|
+
}
|
|
209
|
+
return { ui };
|
|
210
|
+
}
|
|
211
|
+
/** Default CSP meta for prefab apps using jsDelivr CDN. */
|
|
212
|
+
export const PREFAB_CDN_META = resourceMeta({
|
|
213
|
+
csp: { resourceDomains: ['https://cdn.jsdelivr.net'] },
|
|
214
|
+
});
|
|
128
215
|
//# sourceMappingURL=display.js.map
|
package/dist/mcp/display.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display.js","sourceRoot":"","sources":["../../src/mcp/display.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAkB,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAwBrC;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CACrB,SAAgC,EAChC,OAAwB;IAExB,MAAM,GAAG,GAAG,SAAS,YAAY,SAAS;QACxC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,IAAI,SAAS,CAAC;YACZ,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,QAAQ;YACjC,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,OAAO,EAAE,KAAK;YACrB,KAAK,EAAE,OAAO,EAAE,KAAK;YACrB,IAAI,EAAE,OAAO,EAAE,IAAI;YACnB,OAAO,EAAE,OAAO,EAAE,OAAO;YACzB,WAAW,EAAE,OAAO,EAAE,WAAW;YACjC,QAAQ,EAAE,OAAO,EAAE,QAAQ;SAC5B,CAAC,CAAA;IAEN,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"display.js","sourceRoot":"","sources":["../../src/mcp/display.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* MCP display helpers — return prefab UIs as MCP tool results.
|
|
3
3
|
*/
|
|
4
|
-
export { display, display_form, display_update, display_error, displayForm, displayUpdate, displayError } from './display.js';
|
|
5
|
-
export type { DisplayOptions, DisplayFormOptions, DisplayErrorOptions, StateUpdate, PrefabUpdateWire, } from './display.js';
|
|
4
|
+
export { display, display_form, display_update, display_error, display_success, displayForm, displayUpdate, displayError, displaySuccess, resourceMeta, PREFAB_CDN_META } from './display.js';
|
|
5
|
+
export type { DisplayOptions, DisplayFormOptions, DisplayErrorOptions, DisplaySuccessOptions, StateUpdate, PrefabUpdateWire, McpAppCsp, McpAppPermissions, ResourceMetaOptions, } from './display.js';
|
|
6
6
|
export type { McpToolResult, McpContent, McpTextContent, McpImageContent, McpResourceContent } from './types.js';
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/mcp/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC7L,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,cAAc,CAAA;AACrB,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA"}
|
package/dist/mcp/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* MCP display helpers — return prefab UIs as MCP tool results.
|
|
3
3
|
*/
|
|
4
|
-
export { display, display_form, display_update, display_error, displayForm, displayUpdate, displayError } from './display.js';
|
|
4
|
+
export { display, display_form, display_update, display_error, display_success, displayForm, displayUpdate, displayError, displaySuccess, resourceMeta, PREFAB_CDN_META } from './display.js';
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
package/dist/mcp/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA"}
|
package/dist/mcp/types.d.ts
CHANGED
|
@@ -30,6 +30,8 @@ export type McpContent = McpTextContent | McpImageContent | McpResourceContent;
|
|
|
30
30
|
/** MCP tool result — returned from tool handlers */
|
|
31
31
|
export interface McpToolResult {
|
|
32
32
|
content: McpContent[];
|
|
33
|
+
/** Structured payload forwarded to MCP Apps iframes via ui/notifications/tool-result. */
|
|
34
|
+
structuredContent?: Record<string, unknown>;
|
|
33
35
|
isError?: boolean;
|
|
34
36
|
}
|
|
35
37
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/mcp/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,6BAA6B;AAC7B,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,8BAA8B;AAC9B,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,0CAA0C;AAC1C,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,UAAU,CAAA;IAChB,QAAQ,EAAE;QACR,GAAG,EAAE,MAAM,CAAA;QACX,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;CACF;AAED,4BAA4B;AAC5B,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,eAAe,GAAG,kBAAkB,CAAA;AAE9E,oDAAoD;AACpD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,UAAU,EAAE,CAAA;IACrB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,6BAA6B;AAC7B,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,8BAA8B;AAC9B,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,0CAA0C;AAC1C,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,UAAU,CAAA;IAChB,QAAQ,EAAE;QACR,GAAG,EAAE,MAAM,CAAA;QACX,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;CACF;AAED,4BAA4B;AAC5B,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,eAAe,GAAG,kBAAkB,CAAA;AAE9E,oDAAoD;AACpD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,UAAU,EAAE,CAAA;IACrB,yFAAyF;IACzF,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB"}
|
package/dist/prefab.css
CHANGED
|
@@ -872,6 +872,22 @@
|
|
|
872
872
|
box-shadow: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1);
|
|
873
873
|
max-width: 24rem;
|
|
874
874
|
}
|
|
875
|
+
.pf-toast--success {
|
|
876
|
+
border-color: var(--success, #22c55e);
|
|
877
|
+
background: color-mix(in srgb, var(--success, #22c55e) 10%, var(--card));
|
|
878
|
+
}
|
|
879
|
+
.pf-toast--error {
|
|
880
|
+
border-color: var(--destructive);
|
|
881
|
+
background: color-mix(in srgb, var(--destructive) 10%, var(--card));
|
|
882
|
+
}
|
|
883
|
+
.pf-toast--warning {
|
|
884
|
+
border-color: var(--warning, #f59e0b);
|
|
885
|
+
background: color-mix(in srgb, var(--warning, #f59e0b) 10%, var(--card));
|
|
886
|
+
}
|
|
887
|
+
.pf-toast--info {
|
|
888
|
+
border-color: var(--primary);
|
|
889
|
+
background: color-mix(in srgb, var(--primary) 10%, var(--card));
|
|
890
|
+
}
|
|
875
891
|
|
|
876
892
|
/* ═══════════════════════════════════════════════════════════════════════════
|
|
877
893
|
20. UTILITY — Tailwind-style gap/padding helpers used in cssClass
|
package/dist/renderer/index.js
CHANGED
|
@@ -209,13 +209,9 @@ function defaultToastHandler(toast) {
|
|
|
209
209
|
return;
|
|
210
210
|
const container = getOrCreateToastContainer();
|
|
211
211
|
const toastEl = document.createElement('div');
|
|
212
|
-
|
|
213
|
-
toastEl.
|
|
214
|
-
toastEl.
|
|
215
|
-
toastEl.style.borderRadius = '8px';
|
|
216
|
-
toastEl.style.backgroundColor = 'var(--card, #fff)';
|
|
217
|
-
toastEl.style.border = '1px solid var(--border, #e5e7eb)';
|
|
218
|
-
toastEl.style.boxShadow = '0 4px 12px rgb(0 0 0 / 0.15)';
|
|
212
|
+
const variant = toast.variant ?? 'default';
|
|
213
|
+
toastEl.className = `pf-toast${variant !== 'default' ? ` pf-toast--${variant}` : ''}`;
|
|
214
|
+
toastEl.setAttribute('data-variant', variant);
|
|
219
215
|
toastEl.style.marginBottom = '8px';
|
|
220
216
|
toastEl.style.transition = 'opacity 0.3s ease';
|
|
221
217
|
const msg = document.createElement('div');
|