@ds-gn/ui 0.10.0 → 0.11.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 (81) hide show
  1. package/README.md +4 -4
  2. package/custom-elements.json +5511 -2144
  3. package/dist/common/controllers/OverlayDismissController.d.ts +52 -0
  4. package/dist/common/controllers/OverlayPositionController.d.ts +168 -0
  5. package/dist/common/controllers/RovingFocusController.d.ts +99 -0
  6. package/dist/common/helpers/field-control.d.ts +35 -0
  7. package/dist/common/helpers/listbox-navigation.d.ts +50 -0
  8. package/dist/common/props/size/size.props.d.ts +11 -0
  9. package/dist/common/styles/overlay-panel.styles.d.ts +55 -0
  10. package/dist/components/Button/src/Button.d.ts +20 -0
  11. package/dist/components/Button/src/Button.js +28 -0
  12. package/dist/components/DropdownMenu/src/DropdownMenu.d.ts +150 -0
  13. package/dist/components/DropdownMenu/src/DropdownMenu.js +1550 -0
  14. package/dist/components/DropdownMenu/src/DropdownMenu.playground.d.ts +2 -0
  15. package/dist/components/DropdownMenu/src/DropdownMenu.props.d.ts +47 -0
  16. package/dist/components/DropdownMenu/src/DropdownMenu.props.js +54 -0
  17. package/dist/components/DropdownMenu/src/DropdownMenu.styles.d.ts +20 -0
  18. package/dist/components/Field/src/Field.d.ts +39 -0
  19. package/dist/components/Field/src/Field.js +203 -0
  20. package/dist/components/Field/src/Field.playground.d.ts +2 -0
  21. package/dist/components/Field/src/Field.styles.d.ts +6 -0
  22. package/dist/components/Icon/src/Icon.d.ts +5 -0
  23. package/dist/components/Icon/src/Icon.js +3 -0
  24. package/dist/components/Icon/src/icons/arrow-down.d.ts +1 -0
  25. package/dist/components/Icon/src/icons/arrow-down.js +6 -0
  26. package/dist/components/Icon/src/icons/arrow-up.d.ts +1 -0
  27. package/dist/components/Icon/src/icons/arrow-up.js +6 -0
  28. package/dist/components/Icon/src/icons/chevrons-up-down.d.ts +1 -0
  29. package/dist/components/Icon/src/icons/chevrons-up-down.js +6 -0
  30. package/dist/components/Icon/src/icons/cookie.d.ts +1 -0
  31. package/dist/components/Icon/src/icons/cookie.js +6 -0
  32. package/dist/components/Icon/src/icons/icon-names.d.ts +1 -1
  33. package/dist/components/Icon/src/icons/icon-names.js +4 -0
  34. package/dist/components/Icon/src/icons/index.d.ts +4 -0
  35. package/dist/components/Icon/src/icons/index.js +4 -0
  36. package/dist/components/Input/src/Input.d.ts +37 -0
  37. package/dist/components/Input/src/Input.js +300 -143
  38. package/dist/components/Input/src/Input.props.d.ts +2 -1
  39. package/dist/components/Input/src/Input.props.js +12 -6
  40. package/dist/components/Input/src/Input.styles.d.ts +12 -4
  41. package/dist/components/Modal/src/Modal.d.ts +1 -0
  42. package/dist/components/Modal/src/Modal.js +1 -0
  43. package/dist/components/Nav/src/Nav.js +2 -1
  44. package/dist/components/NavLink/src/NavLink.d.ts +14 -30
  45. package/dist/components/NavLink/src/NavLink.js +201 -65
  46. package/dist/components/Select/src/Select.d.ts +157 -0
  47. package/dist/components/Select/src/Select.js +1766 -0
  48. package/dist/components/Select/src/Select.playground.d.ts +2 -0
  49. package/dist/components/Select/src/Select.props.d.ts +19 -0
  50. package/dist/components/Select/src/Select.props.js +40 -0
  51. package/dist/components/Select/src/Select.styles.d.ts +30 -0
  52. package/dist/components/Table/src/Table.d.ts +93 -0
  53. package/dist/components/Table/src/Table.js +1105 -0
  54. package/dist/components/Table/src/Table.playground.d.ts +2 -0
  55. package/dist/components/Table/src/Table.props.d.ts +53 -0
  56. package/dist/components/Table/src/Table.props.js +18 -0
  57. package/dist/components/Table/src/Table.styles.d.ts +33 -0
  58. package/dist/components/Toaster/src/Toaster.d.ts +174 -0
  59. package/dist/components/Toaster/src/Toaster.js +1489 -0
  60. package/dist/components/Toaster/src/Toaster.playground.d.ts +2 -0
  61. package/dist/components/Toaster/src/Toaster.props.d.ts +14 -0
  62. package/dist/components/Toaster/src/Toaster.props.js +81 -0
  63. package/dist/components/Toaster/src/Toaster.styles.d.ts +52 -0
  64. package/dist/components/Toaster/src/toast.d.ts +115 -0
  65. package/dist/components/Toaster/src/toast.js +74 -0
  66. package/dist/playground/types.d.ts +27 -0
  67. package/dist/playground-manifest.d.ts +3 -2
  68. package/dist/playground-manifest.js +507 -7
  69. package/dist/react/DropdownMenu.d.ts +8 -0
  70. package/dist/react/DropdownMenu.js +13 -0
  71. package/dist/react/Field.d.ts +6 -0
  72. package/dist/react/Field.js +13 -0
  73. package/dist/react/Select.d.ts +8 -0
  74. package/dist/react/Select.js +13 -0
  75. package/dist/react/Table.d.ts +8 -0
  76. package/dist/react/Table.js +13 -0
  77. package/dist/react/Toaster.d.ts +8 -0
  78. package/dist/react/Toaster.js +13 -0
  79. package/dist/react/index.d.ts +6 -0
  80. package/dist/react/index.js +6 -0
  81. package/package.json +52 -2
@@ -0,0 +1,2 @@
1
+ import type { PlaygroundDefinition } from '../../../playground/types.js';
2
+ export declare const playground: PlaygroundDefinition;
@@ -0,0 +1,14 @@
1
+ import { type ToastVariantType } from './toast.js';
2
+ export { type ToastAction, type ToastActionAppearanceType, toastActionAppearanceValues, type ToastDismissReasonType, toastDismissReasonValues, type ToastLink, type ToastOptions, type ToastVariantType, toastVariantValues, } from './toast.js';
3
+ /** Toasts shown at once before the rest queue. Persistent toasts don't count. */
4
+ export declare const TOASTER_MAX_VISIBLE = 3;
5
+ /** Default auto-dismiss per variant, in milliseconds; `0` persists. */
6
+ export declare const toastDurations: Readonly<Record<ToastVariantType, number>>;
7
+ /** Gap between toasts when the stack is expanded. */
8
+ export declare const TOAST_GAP = 8;
9
+ /** How far each card behind the front one peeks out, collapsed. */
10
+ export declare const TOAST_PEEK = 10;
11
+ /** Scale of the front card and the two that peek behind it, collapsed. */
12
+ export declare const toastStackScales: readonly [1, 0.94, 0.88];
13
+ /** `{count}` in `queued-label` is replaced with the number waiting. */
14
+ export declare const QUEUED_COUNT_TOKEN = "{count}";
@@ -0,0 +1,81 @@
1
+ // components/Toaster/src/toast.ts
2
+ var toastVariantValues = {
3
+ INFO: "info",
4
+ SUCCESS: "success",
5
+ WARNING: "warning",
6
+ ERROR: "error"
7
+ };
8
+ var toastDismissReasonValues = {
9
+ TIMEOUT: "timeout",
10
+ CLOSE: "close",
11
+ ACTION: "action",
12
+ PROGRAMMATIC: "programmatic"
13
+ };
14
+ var toastActionAppearanceValues = {
15
+ PRIMARY: "primary",
16
+ SECONDARY: "secondary"
17
+ };
18
+ var TOAST_EVENT = "dsgn-toast";
19
+ var TOAST_PENDING_LIMIT = 20;
20
+ var TOAST_PENDING_KEY = Symbol.for("dsgn.toast.pending");
21
+ var TOAST_ID_KEY = Symbol.for("dsgn.toast.counter");
22
+ var nextToastId = () => {
23
+ const store = globalThis;
24
+ const id = (store[TOAST_ID_KEY] ?? 0) + 1;
25
+ store[TOAST_ID_KEY] = id;
26
+ return `dsgn-toast-${id}`;
27
+ };
28
+ var hold = (request) => {
29
+ const store = globalThis;
30
+ const pending = store[TOAST_PENDING_KEY] ?? [];
31
+ if (request.type === "dismiss") {
32
+ store[TOAST_PENDING_KEY] = request.id === undefined ? [] : pending.filter((held) => held.type !== "show" || held.id !== request.id);
33
+ return;
34
+ }
35
+ pending.push(request);
36
+ store[TOAST_PENDING_KEY] = pending.slice(-TOAST_PENDING_LIMIT);
37
+ };
38
+ var send = (request) => {
39
+ if (typeof document === "undefined")
40
+ return;
41
+ const handled = !document.dispatchEvent(new CustomEvent(TOAST_EVENT, { detail: request, cancelable: true }));
42
+ if (!handled)
43
+ hold(request);
44
+ };
45
+ var show = (options) => {
46
+ const id = nextToastId();
47
+ send({ type: "show", id, options });
48
+ return id;
49
+ };
50
+ var shortcut = (variant) => (title, options = {}) => show({ ...options, title, variant });
51
+ var toast = Object.assign(show, {
52
+ info: shortcut(toastVariantValues.INFO),
53
+ success: shortcut(toastVariantValues.SUCCESS),
54
+ warning: shortcut(toastVariantValues.WARNING),
55
+ error: shortcut(toastVariantValues.ERROR),
56
+ dismiss: (id) => send({ type: "dismiss", id })
57
+ });
58
+
59
+ // components/Toaster/src/Toaster.props.ts
60
+ var TOASTER_MAX_VISIBLE = 3;
61
+ var toastDurations = {
62
+ [toastVariantValues.INFO]: 5000,
63
+ [toastVariantValues.SUCCESS]: 5000,
64
+ [toastVariantValues.WARNING]: 7000,
65
+ [toastVariantValues.ERROR]: 0
66
+ };
67
+ var TOAST_GAP = 8;
68
+ var TOAST_PEEK = 10;
69
+ var toastStackScales = [1, 0.94, 0.88];
70
+ var QUEUED_COUNT_TOKEN = "{count}";
71
+ export {
72
+ QUEUED_COUNT_TOKEN,
73
+ TOASTER_MAX_VISIBLE,
74
+ TOAST_GAP,
75
+ TOAST_PEEK,
76
+ toastActionAppearanceValues,
77
+ toastDismissReasonValues,
78
+ toastDurations,
79
+ toastStackScales,
80
+ toastVariantValues
81
+ };
@@ -0,0 +1,52 @@
1
+ import { type ToastVariantType } from './Toaster.props.js';
2
+ /**
3
+ * Both the `dsgn-toaster` host and the region's own container render nothing
4
+ * of their own: the region is fixed to the viewport, in the top layer where
5
+ * the Popover API exists.
6
+ */
7
+ export declare const hostStyles: import("lit").CSSResult;
8
+ /**
9
+ * The labelled region, fixed bottom-end: 24px from the corner and 380px wide,
10
+ * or 16px and the full width less 32px under 640px. `inset-auto`, `m-0`,
11
+ * `p-0`, `border-0`, `bg-transparent` and `overflow-visible` undo the
12
+ * user-agent popover styles. Only the toasts take pointer events, so an empty
13
+ * region never blocks the page.
14
+ */
15
+ export declare const regionClasses: (expanded: boolean) => string;
16
+ export declare const liveRegionClasses: () => string;
17
+ /** The "+N queued · paused" pill above the stack. */
18
+ export declare const queueClasses: () => string;
19
+ /**
20
+ * The stack. Its height is set from the toasts it holds, so the hover area
21
+ * covers the gaps between expanded toasts.
22
+ */
23
+ export declare const listClasses: () => string;
24
+ /**
25
+ * One toast's slot in the stack, pinned to the bottom. Its place is the
26
+ * `translate` and `scale` the toaster writes inline: moves between places
27
+ * are played by the motion engine on `transform`, which composes with them,
28
+ * and only the collapsed scale eases by transition. A card behind the front
29
+ * one is clipped to the front card's height, so only its edge peeks out.
30
+ */
31
+ export declare const itemClasses: () => string;
32
+ /**
33
+ * The popover surface. A title-only toast centres its row and tightens the
34
+ * padding, as in the design's "with action · title only" state.
35
+ */
36
+ export declare const toastClasses: (compact: boolean) => string;
37
+ export declare const iconClasses: (variant: ToastVariantType, compact: boolean) => string;
38
+ export declare const bodyClasses: () => string;
39
+ export declare const titleClasses: () => string;
40
+ export declare const descriptionClasses: () => string;
41
+ export declare const linksClasses: () => string;
42
+ /** The action row: 10px under the text, or inline in a title-only toast. */
43
+ export declare const actionsClasses: (inline: boolean) => string;
44
+ /**
45
+ * Action and dismiss buttons stay 32px but take a 44px hit area on touch
46
+ * screens: a pseudo-element on the `dsgn-button` host, so a press on it lands
47
+ * on the host and activates the button.
48
+ */
49
+ export declare const touchTargetClasses: () => string;
50
+ export declare const dismissClasses: (compact: boolean) => string;
51
+ /** The 2px time-remaining bar; neutral while the timers are paused. */
52
+ export declare const progressClasses: (variant: ToastVariantType, paused: boolean) => string;
@@ -0,0 +1,115 @@
1
+ /**
2
+ * The imperative trigger for `dsgn-toaster`: `toast()` and its helpers only
3
+ * dispatch a `dsgn-toast` event on `document`, and the mounted toaster does the
4
+ * rest. Nothing here imports Lit or touches the DOM at module evaluation, so
5
+ * importing it during a server render is a no-op (see packages/ui/CLAUDE.md,
6
+ * SSR contract); calls made on the server return an id and do nothing.
7
+ *
8
+ * Calls made in the browser before a toaster has connected (a toaster that is
9
+ * still loading behind a client-only boundary, say) are held, up to
10
+ * {@link TOAST_PENDING_LIMIT}, and shown in order when one connects.
11
+ */
12
+ export declare const toastVariantValues: {
13
+ readonly INFO: "info";
14
+ readonly SUCCESS: "success";
15
+ readonly WARNING: "warning";
16
+ readonly ERROR: "error";
17
+ };
18
+ export type ToastVariantType = (typeof toastVariantValues)[keyof typeof toastVariantValues];
19
+ export declare const toastDismissReasonValues: {
20
+ readonly TIMEOUT: "timeout";
21
+ readonly CLOSE: "close";
22
+ readonly ACTION: "action";
23
+ readonly PROGRAMMATIC: "programmatic";
24
+ };
25
+ export type ToastDismissReasonType = (typeof toastDismissReasonValues)[keyof typeof toastDismissReasonValues];
26
+ export declare const toastActionAppearanceValues: {
27
+ readonly PRIMARY: "primary";
28
+ readonly SECONDARY: "secondary";
29
+ };
30
+ export type ToastActionAppearanceType = (typeof toastActionAppearanceValues)[keyof typeof toastActionAppearanceValues];
31
+ /** A button in the toast's action row. Activating it dismisses the toast. */
32
+ export interface ToastAction {
33
+ label: string;
34
+ onClick?: () => void;
35
+ /**
36
+ * `primary` (solid) or `secondary` (outline). Defaults to `primary` for the
37
+ * first of two actions and `secondary` otherwise; give both the same
38
+ * appearance for equal-weight choices.
39
+ */
40
+ appearance?: ToastActionAppearanceType;
41
+ }
42
+ /**
43
+ * A text link under the description. With `href` it navigates; with only
44
+ * `onClick` it is a button. Links do not dismiss the toast.
45
+ */
46
+ export interface ToastLink {
47
+ label: string;
48
+ href?: string;
49
+ onClick?: () => void;
50
+ }
51
+ export interface ToastOptions {
52
+ title: string;
53
+ description?: string;
54
+ /** Default `info`. Errors are announced assertively. */
55
+ variant?: ToastVariantType;
56
+ /**
57
+ * Milliseconds before the toast dismisses itself; `0` keeps it until it is
58
+ * dismissed. Defaults: info and success 5000, warning 7000, error 0.
59
+ */
60
+ duration?: number;
61
+ /** Up to two actions. */
62
+ actions?: ToastAction[];
63
+ links?: ToastLink[];
64
+ /**
65
+ * A registered icon name (see `Icon.registerIcons`) drawn in place of the
66
+ * variant's icon. Unregistered names fall back to the variant's icon.
67
+ */
68
+ icon?: string;
69
+ /** Called once the toast is dismissed, with the reason. */
70
+ onDismiss?: (reason: ToastDismissReasonType) => void;
71
+ }
72
+ export type ToastRequest = {
73
+ type: 'show';
74
+ id: string;
75
+ options: ToastOptions;
76
+ } | {
77
+ type: 'dismiss';
78
+ id?: string;
79
+ };
80
+ /** The document-level transport event a `dsgn-toaster` listens for. */
81
+ export declare const TOAST_EVENT = "dsgn-toast";
82
+ /** How many calls are held while no toaster is connected. */
83
+ export declare const TOAST_PENDING_LIMIT = 20;
84
+ /**
85
+ * Where held calls wait. A global symbol rather than module state, so a
86
+ * toaster and `toast()` loaded from separate bundles still find each other.
87
+ */
88
+ export declare const TOAST_PENDING_KEY: unique symbol;
89
+ /** A fresh toast id. */
90
+ export declare const nextToastId: () => string;
91
+ /** Take every held call, oldest first, leaving none behind. */
92
+ export declare const takePendingToasts: () => ToastRequest[];
93
+ type ToastShortcut = (title: string, options?: Omit<ToastOptions, 'title' | 'variant'>) => string;
94
+ interface Toast {
95
+ (options: ToastOptions): string;
96
+ info: ToastShortcut;
97
+ success: ToastShortcut;
98
+ warning: ToastShortcut;
99
+ error: ToastShortcut;
100
+ /** Dismiss one toast, or every toast (shown and queued) with no id. */
101
+ dismiss: (id?: string) => void;
102
+ }
103
+ /**
104
+ * Show a toast in the page's `dsgn-toaster` and return its id.
105
+ *
106
+ * ```ts
107
+ * toast.success('Changes saved');
108
+ * toast.error('Couldn’t publish', {
109
+ * description: 'The registry rejected the request.',
110
+ * actions: [{ label: 'Retry', onClick: retry }],
111
+ * });
112
+ * ```
113
+ */
114
+ export declare const toast: Toast;
115
+ export {};
@@ -0,0 +1,74 @@
1
+ // components/Toaster/src/toast.ts
2
+ var toastVariantValues = {
3
+ INFO: "info",
4
+ SUCCESS: "success",
5
+ WARNING: "warning",
6
+ ERROR: "error"
7
+ };
8
+ var toastDismissReasonValues = {
9
+ TIMEOUT: "timeout",
10
+ CLOSE: "close",
11
+ ACTION: "action",
12
+ PROGRAMMATIC: "programmatic"
13
+ };
14
+ var toastActionAppearanceValues = {
15
+ PRIMARY: "primary",
16
+ SECONDARY: "secondary"
17
+ };
18
+ var TOAST_EVENT = "dsgn-toast";
19
+ var TOAST_PENDING_LIMIT = 20;
20
+ var TOAST_PENDING_KEY = Symbol.for("dsgn.toast.pending");
21
+ var TOAST_ID_KEY = Symbol.for("dsgn.toast.counter");
22
+ var nextToastId = () => {
23
+ const store = globalThis;
24
+ const id = (store[TOAST_ID_KEY] ?? 0) + 1;
25
+ store[TOAST_ID_KEY] = id;
26
+ return `dsgn-toast-${id}`;
27
+ };
28
+ var takePendingToasts = () => {
29
+ const store = globalThis;
30
+ const pending = store[TOAST_PENDING_KEY] ?? [];
31
+ store[TOAST_PENDING_KEY] = [];
32
+ return pending;
33
+ };
34
+ var hold = (request) => {
35
+ const store = globalThis;
36
+ const pending = store[TOAST_PENDING_KEY] ?? [];
37
+ if (request.type === "dismiss") {
38
+ store[TOAST_PENDING_KEY] = request.id === undefined ? [] : pending.filter((held) => held.type !== "show" || held.id !== request.id);
39
+ return;
40
+ }
41
+ pending.push(request);
42
+ store[TOAST_PENDING_KEY] = pending.slice(-TOAST_PENDING_LIMIT);
43
+ };
44
+ var send = (request) => {
45
+ if (typeof document === "undefined")
46
+ return;
47
+ const handled = !document.dispatchEvent(new CustomEvent(TOAST_EVENT, { detail: request, cancelable: true }));
48
+ if (!handled)
49
+ hold(request);
50
+ };
51
+ var show = (options) => {
52
+ const id = nextToastId();
53
+ send({ type: "show", id, options });
54
+ return id;
55
+ };
56
+ var shortcut = (variant) => (title, options = {}) => show({ ...options, title, variant });
57
+ var toast = Object.assign(show, {
58
+ info: shortcut(toastVariantValues.INFO),
59
+ success: shortcut(toastVariantValues.SUCCESS),
60
+ warning: shortcut(toastVariantValues.WARNING),
61
+ error: shortcut(toastVariantValues.ERROR),
62
+ dismiss: (id) => send({ type: "dismiss", id })
63
+ });
64
+ export {
65
+ TOAST_EVENT,
66
+ TOAST_PENDING_KEY,
67
+ TOAST_PENDING_LIMIT,
68
+ nextToastId,
69
+ takePendingToasts,
70
+ toast,
71
+ toastActionAppearanceValues,
72
+ toastDismissReasonValues,
73
+ toastVariantValues
74
+ };
@@ -19,6 +19,25 @@ export interface PlaygroundNestedComponent {
19
19
  tag: string;
20
20
  slot: string;
21
21
  label: string;
22
+ /**
23
+ * Starting prop values for this use, by prop `name`, overriding the nested
24
+ * component's own playground defaults — a menu's trigger button reads
25
+ * "Actions" with a chevron, not the Button playground's "Get started".
26
+ */
27
+ props?: Readonly<Record<string, boolean | string>>;
28
+ /** Starting slot content, keyed by slot name (`default` for the unnamed slot). */
29
+ slots?: Readonly<Record<string, string>>;
30
+ }
31
+ /**
32
+ * A button under the preview that calls a component's imperative trigger —
33
+ * `toast(options)` for the toaster. The label is the call as code, and the
34
+ * options are JSON: callbacks cannot live in the manifest.
35
+ */
36
+ export interface PlaygroundTrigger {
37
+ label: string;
38
+ options?: Readonly<Record<string, unknown>>;
39
+ /** Clears instead of showing: `toast.dismiss()`. */
40
+ dismiss?: boolean;
22
41
  }
23
42
  export interface PlaygroundDefinition {
24
43
  tag: string;
@@ -26,4 +45,12 @@ export interface PlaygroundDefinition {
26
45
  props: readonly PlaygroundProp[];
27
46
  slots: readonly PlaygroundSlot[];
28
47
  nested?: readonly PlaygroundNestedComponent[];
48
+ /**
49
+ * Fixed DOM properties with no control, for data a component takes as
50
+ * objects or arrays (e.g. a table's `columns` and `rows`). Values must be
51
+ * JSON-serializable: they are written into the generated manifest.
52
+ */
53
+ data?: Readonly<Record<string, unknown>>;
54
+ /** Imperative calls the preview offers as buttons. */
55
+ triggers?: readonly PlaygroundTrigger[];
29
56
  }
@@ -1,6 +1,7 @@
1
1
  export interface PlaygroundProp { name: string; attribute: string; control: 'boolean' | 'select' | 'text'; default: boolean | string; label: string; options?: readonly string[]; includeDefault?: boolean; }
2
2
  export interface PlaygroundSlot { name?: string; default: string; label: string; }
3
- export interface PlaygroundNestedComponent { tag: string; slot: string; label: string; }
4
- export interface PlaygroundDefinition { tag: string; module: string; props: readonly PlaygroundProp[]; slots: readonly PlaygroundSlot[]; nested?: readonly PlaygroundNestedComponent[]; }
3
+ export interface PlaygroundNestedComponent { tag: string; slot: string; label: string; props?: Readonly<Record<string, boolean | string>>; slots?: Readonly<Record<string, string>>; }
4
+ export interface PlaygroundTrigger { label: string; options?: Readonly<Record<string, unknown>>; dismiss?: boolean; }
5
+ export interface PlaygroundDefinition { tag: string; module: string; props: readonly PlaygroundProp[]; slots: readonly PlaygroundSlot[]; nested?: readonly PlaygroundNestedComponent[]; data?: Readonly<Record<string, unknown>>; triggers?: readonly PlaygroundTrigger[]; }
5
6
  export declare const playgroundManifest: PlaygroundDefinition[];
6
7
  export default playgroundManifest;