alouette 20.2.0 → 20.4.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 (69) hide show
  1. package/bin/install-skills.mjs +72 -0
  2. package/dist/definitions/animationDurationsMs.d.ts +3 -0
  3. package/dist/definitions/animationDurationsMs.d.ts.map +1 -1
  4. package/dist/definitions/core/useColorToken.d.ts +9 -0
  5. package/dist/definitions/core/useColorToken.d.ts.map +1 -0
  6. package/dist/definitions/index.d.ts +8 -0
  7. package/dist/definitions/index.d.ts.map +1 -1
  8. package/dist/definitions/ui/containers/AlertDialog.d.ts +78 -0
  9. package/dist/definitions/ui/containers/AlertDialog.d.ts.map +1 -0
  10. package/dist/definitions/ui/containers/AlertDialog.stories.d.ts +33 -0
  11. package/dist/definitions/ui/containers/AlertDialog.stories.d.ts.map +1 -0
  12. package/dist/definitions/ui/containers/Modal.d.ts +66 -0
  13. package/dist/definitions/ui/containers/Modal.d.ts.map +1 -0
  14. package/dist/definitions/ui/containers/Modal.stories.d.ts +31 -0
  15. package/dist/definitions/ui/containers/Modal.stories.d.ts.map +1 -0
  16. package/dist/definitions/ui/feedback/CircularProgress.d.ts +21 -0
  17. package/dist/definitions/ui/feedback/CircularProgress.d.ts.map +1 -0
  18. package/dist/definitions/ui/feedback/CircularProgress.stories.d.ts +38 -0
  19. package/dist/definitions/ui/feedback/CircularProgress.stories.d.ts.map +1 -0
  20. package/dist/definitions/ui/feedback/LinearProgress.d.ts +21 -0
  21. package/dist/definitions/ui/feedback/LinearProgress.d.ts.map +1 -0
  22. package/dist/definitions/ui/feedback/LinearProgress.stories.d.ts +38 -0
  23. package/dist/definitions/ui/feedback/LinearProgress.stories.d.ts.map +1 -0
  24. package/dist/definitions/ui/feedback/RingCircle.d.ts +16 -0
  25. package/dist/definitions/ui/feedback/RingCircle.d.ts.map +1 -0
  26. package/dist/definitions/ui/feedback/RingCircle.web.d.ts +4 -0
  27. package/dist/definitions/ui/feedback/RingCircle.web.d.ts.map +1 -0
  28. package/dist/definitions/ui/feedback/useSimulatedProgress.d.ts +5 -0
  29. package/dist/definitions/ui/feedback/useSimulatedProgress.d.ts.map +1 -0
  30. package/dist/definitions/ui/primitives/Icon.d.ts +2 -1
  31. package/dist/definitions/ui/primitives/Icon.d.ts.map +1 -1
  32. package/dist/definitions/ui/story-components/IndeterminateToggleDemo.d.ts +7 -0
  33. package/dist/definitions/ui/story-components/IndeterminateToggleDemo.d.ts.map +1 -0
  34. package/dist/index-browser.es.js +380 -32
  35. package/dist/index-browser.es.js.map +1 -1
  36. package/dist/index-node22.cjs +411 -28
  37. package/dist/index-node22.cjs.map +1 -1
  38. package/dist/index-node22.mjs +407 -32
  39. package/dist/index-node22.mjs.map +1 -1
  40. package/dist/index-react-native.cjs.js +411 -28
  41. package/dist/index-react-native.cjs.js.map +1 -1
  42. package/dist/index-react-native.es.js +407 -32
  43. package/dist/index-react-native.es.js.map +1 -1
  44. package/package.json +6 -2
  45. package/src/animationDurationsMs.ts +4 -1
  46. package/src/config/defaultColorScales.ts +1 -1
  47. package/src/core/useColorToken.ts +31 -0
  48. package/src/global.css +21 -12
  49. package/src/index.ts +25 -0
  50. package/src/themeVariables.ts +6 -6
  51. package/src/ui/containers/AlertDialog.stories.tsx +425 -0
  52. package/src/ui/containers/AlertDialog.tsx +211 -0
  53. package/src/ui/containers/Box.tsx +1 -1
  54. package/src/ui/containers/Modal.stories.tsx +231 -0
  55. package/src/ui/containers/Modal.tsx +197 -0
  56. package/src/ui/feedback/CircularProgress.stories.tsx +100 -0
  57. package/src/ui/feedback/CircularProgress.tsx +118 -0
  58. package/src/ui/feedback/ConnectionState.tsx +2 -2
  59. package/src/ui/feedback/LinearProgress.stories.tsx +101 -0
  60. package/src/ui/feedback/LinearProgress.tsx +77 -0
  61. package/src/ui/feedback/RingCircle.tsx +83 -0
  62. package/src/ui/feedback/RingCircle.web.tsx +39 -0
  63. package/src/ui/feedback/useSimulatedProgress.ts +66 -0
  64. package/src/ui/inputs/InputText.tsx +1 -1
  65. package/src/ui/inputs/Select.shared.tsx +1 -1
  66. package/src/ui/inputs/Select.web.tsx +2 -2
  67. package/src/ui/inputs/Switch.web.tsx +2 -2
  68. package/src/ui/primitives/Icon.tsx +4 -22
  69. package/src/ui/story-components/IndeterminateToggleDemo.tsx +29 -0
@@ -0,0 +1,72 @@
1
+ #!/usr/bin/env node
2
+ // Symlinks alouette's packages/alouette/skills/* into the consuming
3
+ // project's .claude/skills/ so AI coding agents pick them up.
4
+ //
5
+ // Usage: npx alouette-install-skills
6
+
7
+ import {
8
+ existsSync,
9
+ lstatSync,
10
+ mkdirSync,
11
+ readdirSync,
12
+ readlinkSync,
13
+ rmSync,
14
+ symlinkSync,
15
+ } from "node:fs";
16
+ import { dirname, join, relative } from "node:path";
17
+ import { fileURLToPath } from "node:url";
18
+
19
+ // Names of skills retired from packages/alouette/skills. Listed here so
20
+ // `alouette-install-skills` removes their leftover symlinks from projects
21
+ // that installed an earlier version. Add a name the same release its
22
+ // skills/<name> directory is deleted.
23
+ const REMOVED_SKILLS = [];
24
+
25
+ const packageRoot = join(dirname(fileURLToPath(import.meta.url)), "..");
26
+ const sourceSkillsDir = join(packageRoot, "skills");
27
+ const targetSkillsDir = join(process.cwd(), ".claude", "skills");
28
+
29
+ if (!existsSync(sourceSkillsDir)) {
30
+ console.error(`No skills directory found at ${sourceSkillsDir}`);
31
+ process.exit(1);
32
+ }
33
+
34
+ mkdirSync(targetSkillsDir, { recursive: true });
35
+
36
+ for (const name of readdirSync(sourceSkillsDir)) {
37
+ const source = join(sourceSkillsDir, name);
38
+ if (!lstatSync(source).isDirectory()) continue;
39
+
40
+ const target = join(targetSkillsDir, name);
41
+ const link = relative(targetSkillsDir, source);
42
+ const stat = lstatSync(target, { throwIfNoEntry: false });
43
+
44
+ if (stat) {
45
+ if (stat.isSymbolicLink() && readlinkSync(target) === link) {
46
+ console.log(`up to date: ${name}`);
47
+ continue;
48
+ }
49
+ if (!stat.isSymbolicLink()) {
50
+ console.warn(
51
+ `skipping ${name}: ${target} already exists and is not a symlink`,
52
+ );
53
+ continue;
54
+ }
55
+ rmSync(target);
56
+ }
57
+
58
+ symlinkSync(link, target, "dir");
59
+ console.log(`linked: ${name}`);
60
+ }
61
+
62
+ for (const name of REMOVED_SKILLS) {
63
+ const target = join(targetSkillsDir, name);
64
+ const stat = lstatSync(target, { throwIfNoEntry: false });
65
+ if (!stat) continue;
66
+ if (!stat.isSymbolicLink()) {
67
+ console.warn(`skipping removal of ${name}: ${target} is not a symlink`);
68
+ continue;
69
+ }
70
+ rmSync(target);
71
+ console.log(`removed (retired): ${name}`);
72
+ }
@@ -6,5 +6,8 @@
6
6
  export declare const animationDurationsMs: {
7
7
  readonly slide: 600;
8
8
  readonly collapse: 800;
9
+ readonly progress: 300;
10
+ readonly fade: 300;
11
+ readonly fast: 200;
9
12
  };
10
13
  //# sourceMappingURL=animationDurationsMs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"animationDurationsMs.d.ts","sourceRoot":"","sources":["../../src/animationDurationsMs.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;;;CAGvB,CAAC"}
1
+ {"version":3,"file":"animationDurationsMs.d.ts","sourceRoot":"","sources":["../../src/animationDurationsMs.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;;;;;;CAMvB,CAAC"}
@@ -0,0 +1,9 @@
1
+ export type ColorClassName = string | "text-accent" | "text-disabled-muted" | "text-disabled" | "text-muted" | "text-on-accent-muted" | "text-on-accent" | "text-sharp";
2
+ /**
3
+ * Resolves a `text-*` Tailwind className (e.g. `"text-accent"`) to its
4
+ * concrete `--color-*` token value for the active theme. For native SVG
5
+ * props (`color`, `stroke`, `fill`) that can't take a className directly and
6
+ * so can't rely on CSS `currentColor` the way web SVG can.
7
+ */
8
+ export declare function useColorToken(className: ColorClassName): string | undefined;
9
+ //# sourceMappingURL=useColorToken.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useColorToken.d.ts","sourceRoot":"","sources":["../../../src/core/useColorToken.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GACtB,MAAM,GAEN,aAAa,GAEb,qBAAqB,GAErB,eAAe,GAEf,YAAY,GAEZ,sBAAsB,GAEtB,gBAAgB,GAEhB,YAAY,CAAC;AACjB;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAM3E"}
@@ -40,6 +40,10 @@ export { PresenceList, PresenceOne } from "./ui/containers/Presence";
40
40
  export { animationDurationsMs } from "./animationDurationsMs";
41
41
  export type { SurfaceProps } from "./ui/containers/Surface";
42
42
  export { Surface } from "./ui/containers/Surface";
43
+ export type { ModalProps } from "./ui/containers/Modal";
44
+ export { Modal } from "./ui/containers/Modal";
45
+ export type { AlertDialogProps, AlertDialogUsageProps, } from "./ui/containers/AlertDialog";
46
+ export { AlertDialog, InfoAlertDialog, QuestionAlertDialog, SuccessAlertDialog, WarningAlertDialog, } from "./ui/containers/AlertDialog";
43
47
  export type { IconProps, SVGIconElement } from "./ui/primitives/Icon";
44
48
  export { Icon } from "./ui/primitives/Icon";
45
49
  export type { PressableBoxProps } from "./ui/data/PressableBox";
@@ -60,6 +64,10 @@ export type { BadgeProps } from "./ui/feedback/Badge";
60
64
  export { Badge } from "./ui/feedback/Badge";
61
65
  export type { ConnectionStateProps, ConnectionStateStatus, } from "./ui/feedback/ConnectionState";
62
66
  export { ConnectionState } from "./ui/feedback/ConnectionState";
67
+ export type { IndeterminateLinearProgressProps, LinearProgressProps, LinearProgressSize, } from "./ui/feedback/LinearProgress";
68
+ export { LinearProgress } from "./ui/feedback/LinearProgress";
69
+ export type { CircularProgressProps, CircularProgressSize, IndeterminateCircularProgressProps, } from "./ui/feedback/CircularProgress";
70
+ export { CircularProgress } from "./ui/feedback/CircularProgress";
63
71
  export type { MessageProps } from "./ui/feedback/Message";
64
72
  export { ConfirmationMessage, InfoMessage, Message, WarningMessage, } from "./ui/feedback/Message";
65
73
  export type { PressableListItemProps } from "./ui/data/PressableListItem";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ import { type ReactNode } from "react";
2
+ import type { Accent } from "../../core/AlouetteConfig";
3
+ import type { SVGIconElement } from "../primitives/Icon";
4
+ import { type ModalProps } from "./Modal";
5
+ interface AlertDialogBaseProps extends Pick<ModalProps, "size" | "testID"> {
6
+ /** Whether the dialog is shown. */
7
+ visible: boolean;
8
+ /** Heading; also labels the dialog for assistive tech. */
9
+ title: string;
10
+ /** Body copy describing the situation or the consequence of confirming. */
11
+ children?: ReactNode;
12
+ /** Themes the icon and the primary button. Defaults to "danger". */
13
+ accent?: Accent;
14
+ /**
15
+ * Icon shown in the header, signalling the nature of the dialog. Prefer a
16
+ * usage component ({@link QuestionAlertDialog}, {@link WarningAlertDialog},
17
+ * {@link InfoAlertDialog}, {@link SuccessAlertDialog}) which supplies it.
18
+ */
19
+ icon: SVGIconElement;
20
+ }
21
+ interface ConfirmAlertDialogProps extends AlertDialogBaseProps {
22
+ /**
23
+ * "confirm" (default) offers a cancel and a confirm action — for decisions,
24
+ * typically destructive ones.
25
+ */
26
+ variant?: "confirm";
27
+ /** Called when the user confirms the action. */
28
+ onConfirm: () => void;
29
+ /**
30
+ * Called when the user rejects the action — cancel button, backdrop, Escape,
31
+ * or the Android back button.
32
+ */
33
+ onCancel: () => void;
34
+ /** Confirm button label. Defaults to "Confirm". */
35
+ confirmText?: ReactNode;
36
+ /** Cancel button label. Defaults to "Cancel". */
37
+ cancelText?: ReactNode;
38
+ /** Disables the confirm button (e.g. while an async action is pending). */
39
+ confirmDisabled?: boolean;
40
+ }
41
+ interface AcknowledgeAlertDialogProps extends AlertDialogBaseProps {
42
+ /**
43
+ * "alert" offers a single acknowledge action — for interruptions that only
44
+ * need to be read and dismissed.
45
+ */
46
+ variant: "alert";
47
+ /**
48
+ * Called when the user dismisses the dialog — acknowledge button, backdrop,
49
+ * Escape, or the Android back button.
50
+ */
51
+ onClose: () => void;
52
+ /** Acknowledge button label. Defaults to "OK". */
53
+ closeText?: ReactNode;
54
+ }
55
+ interface RequiredAlertDialogProps extends AlertDialogBaseProps {
56
+ /**
57
+ * "required" offers a single action and cannot be dismissed by the backdrop,
58
+ * Escape, or the Android back button — the user must respond (e.g. accept
59
+ * updated terms, a forced sign-out).
60
+ */
61
+ variant: "required";
62
+ /** Called when the user takes the required action. */
63
+ onConfirm: () => void;
64
+ /** Action button label. Defaults to "OK". */
65
+ confirmText?: ReactNode;
66
+ /** Disables the action button (e.g. while an async action is pending). */
67
+ confirmDisabled?: boolean;
68
+ }
69
+ export type AlertDialogProps = AcknowledgeAlertDialogProps | ConfirmAlertDialogProps | RequiredAlertDialogProps;
70
+ export declare function AlertDialog(props: AlertDialogProps): ReactNode;
71
+ type DistributiveOmit<T, K extends PropertyKey> = T extends unknown ? Omit<T, K> : never;
72
+ export type AlertDialogUsageProps = DistributiveOmit<AlertDialogProps, "icon">;
73
+ export declare function QuestionAlertDialog(props: AlertDialogUsageProps): ReactNode;
74
+ export declare function WarningAlertDialog(props: AlertDialogUsageProps): ReactNode;
75
+ export declare function InfoAlertDialog(props: AlertDialogUsageProps): ReactNode;
76
+ export declare function SuccessAlertDialog(props: AlertDialogUsageProps): ReactNode;
77
+ export {};
78
+ //# sourceMappingURL=AlertDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AlertDialog.d.ts","sourceRoot":"","sources":["../../../../src/ui/containers/AlertDialog.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAS,MAAM,OAAO,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAS,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAEjD,UAAU,oBAAqB,SAAQ,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC;IACxE,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,IAAI,EAAE,cAAc,CAAC;CACtB;AAED,UAAU,uBAAwB,SAAQ,oBAAoB;IAC5D;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,gDAAgD;IAChD,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB;;;OAGG;IACH,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,mDAAmD;IACnD,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,iDAAiD;IACjD,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,2EAA2E;IAC3E,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,UAAU,2BAA4B,SAAQ,oBAAoB;IAChE;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,kDAAkD;IAClD,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,UAAU,wBAAyB,SAAQ,oBAAoB;IAC7D;;;;OAIG;IACH,OAAO,EAAE,UAAU,CAAC;IACpB,sDAAsD;IACtD,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,0EAA0E;IAC1E,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,MAAM,gBAAgB,GACxB,2BAA2B,GAC3B,uBAAuB,GACvB,wBAAwB,CAAC;AAsE7B,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,SAAS,CAkC9D;AAGD,KAAK,gBAAgB,CAAC,CAAC,EAAE,CAAC,SAAS,WAAW,IAAI,CAAC,SAAS,OAAO,GAC/D,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GACV,KAAK,CAAC;AAGV,MAAM,MAAM,qBAAqB,GAAG,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAE/E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,SAAS,CAE3E;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,qBAAqB,GAAG,SAAS,CAE1E;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,qBAAqB,GAAG,SAAS,CAEvE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,qBAAqB,GAAG,SAAS,CAE1E"}
@@ -0,0 +1,33 @@
1
+ import type { StoryObj } from "@storybook/react-vite";
2
+ import type { Accent } from "../../core/AlouetteConfig";
3
+ import { AlertDialog } from "./AlertDialog";
4
+ type ThisStory = StoryObj<typeof AlertDialog>;
5
+ declare const _default: {
6
+ title: string;
7
+ component: typeof AlertDialog;
8
+ parameters: {
9
+ componentSubtitle: string;
10
+ };
11
+ argTypes: {
12
+ title: {
13
+ control: "text";
14
+ };
15
+ variant: {
16
+ control: "inline-radio";
17
+ options: string[];
18
+ };
19
+ size: {
20
+ control: "select";
21
+ options: string[];
22
+ };
23
+ accent: {
24
+ control: "select";
25
+ options: Accent[];
26
+ };
27
+ };
28
+ };
29
+ export default _default;
30
+ export declare const PreviewAlertDialogStory: ThisStory;
31
+ export declare const Variants: ThisStory;
32
+ export declare const Tests: StoryObj<typeof AlertDialog>;
33
+ //# sourceMappingURL=AlertDialog.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AlertDialog.stories.d.ts","sourceRoot":"","sources":["../../../../src/ui/containers/AlertDialog.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAI5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAIxD,OAAO,EACL,WAAW,EAOZ,MAAM,eAAe,CAAC;AAEvB,KAAK,SAAS,GAAG,QAAQ,CAAC,OAAO,WAAW,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;AAoH9C,wBAgBqC;AAErC,eAAO,MAAM,uBAAuB,EAAE,SAiBrC,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,SAmKtB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,WAAW,CAuF9C,CAAC"}
@@ -0,0 +1,66 @@
1
+ import { type ReactNode } from "react";
2
+ import { type VariantProps } from "tailwind-variants";
3
+ import type { Accent } from "../../core/AlouetteConfig";
4
+ import { type SVGIconElement } from "../primitives/Icon";
5
+ declare const panelVariants: import("tailwind-variants").TVReturnType<{
6
+ size: {
7
+ sm: string;
8
+ md: string;
9
+ lg: string;
10
+ };
11
+ }, undefined, "w-full", {
12
+ size: {
13
+ sm: string;
14
+ md: string;
15
+ lg: string;
16
+ };
17
+ }, undefined, import("tailwind-variants").TVReturnType<{
18
+ size: {
19
+ sm: string;
20
+ md: string;
21
+ lg: string;
22
+ };
23
+ }, undefined, "w-full", unknown, unknown, undefined>>;
24
+ type PanelVariantProps = VariantProps<typeof panelVariants>;
25
+ interface ModalBaseProps {
26
+ /** Whether the modal is shown. */
27
+ visible: boolean;
28
+ /**
29
+ * Called when the user dismisses the modal — backdrop press, close button, the
30
+ * Android back button, or the Escape key (web).
31
+ */
32
+ onClose: () => void;
33
+ children: ReactNode;
34
+ /** Accent-tinted icon rendered before the title in the header. */
35
+ icon?: SVGIconElement;
36
+ /** Actions row rendered below the body (e.g. Cancel/Confirm buttons). */
37
+ footer?: ReactNode;
38
+ accent?: Accent;
39
+ size?: PanelVariantProps["size"];
40
+ /** Hide the header close button (the modal stays dismissible otherwise). */
41
+ hideCloseButton?: boolean;
42
+ /** Accessible label for the close button. */
43
+ closeButtonAriaLabel?: string;
44
+ /**
45
+ * `alertdialog` for interruptions that require an explicit response
46
+ * (destructive confirmation, errors). Defaults to `dialog`.
47
+ */
48
+ role?: "alertdialog" | "dialog";
49
+ /** ID of the element describing the dialog (announced by assistive tech). */
50
+ "aria-describedby"?: string;
51
+ testID?: string;
52
+ }
53
+ interface ModalWithTitleProps extends ModalBaseProps {
54
+ /** Heading rendered in the header; also labels the dialog for assistive tech. */
55
+ title: string;
56
+ "aria-label"?: string;
57
+ }
58
+ interface ModalWithoutTitleProps extends ModalBaseProps {
59
+ title?: undefined;
60
+ /** Required when there is no `title`, so the dialog is still labelled. */
61
+ "aria-label": string;
62
+ }
63
+ export type ModalProps = ModalWithoutTitleProps | ModalWithTitleProps;
64
+ export declare function Modal({ visible, onClose, children, icon, footer, accent, size, title, hideCloseButton, closeButtonAriaLabel, role, "aria-describedby": ariaDescribedby, testID, "aria-label": ariaLabel, }: ModalProps): ReactNode;
65
+ export {};
66
+ //# sourceMappingURL=Modal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../../src/ui/containers/Modal.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAS,MAAM,OAAO,CAAC;AAE9C,OAAO,EAAE,KAAK,YAAY,EAAM,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAQ/D,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;qDAelB,CAAC;AAEF,KAAK,iBAAiB,GAAG,YAAY,CAAC,OAAO,aAAa,CAAC,CAAC;AAqB5D,UAAU,cAAc;IACtB,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,kEAAkE;IAClE,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,yEAAyE;IACzE,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACjC,4EAA4E;IAC5E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,6CAA6C;IAC7C,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,IAAI,CAAC,EAAE,aAAa,GAAG,QAAQ,CAAC;IAChC,6EAA6E;IAC7E,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,mBAAoB,SAAQ,cAAc;IAClD,iFAAiF;IACjF,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,sBAAuB,SAAQ,cAAc;IACrD,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,0EAA0E;IAC1E,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,UAAU,GAAG,sBAAsB,GAAG,mBAAmB,CAAC;AAEtE,wBAAgB,KAAK,CAAC,EACpB,OAAO,EACP,OAAO,EACP,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,MAAM,EACN,IAAW,EACX,KAAK,EACL,eAAuB,EACvB,oBAA8B,EAC9B,IAAe,EACf,kBAAkB,EAAE,eAAe,EACnC,MAAM,EACN,YAAY,EAAE,SAAS,GACxB,EAAE,UAAU,GAAG,SAAS,CAsFxB"}
@@ -0,0 +1,31 @@
1
+ import type { StoryObj } from "@storybook/react-vite";
2
+ import { Modal } from "./Modal";
3
+ type ThisStory = StoryObj<typeof Modal>;
4
+ declare const _default: {
5
+ title: string;
6
+ component: typeof Modal;
7
+ parameters: {
8
+ componentSubtitle: string;
9
+ };
10
+ argTypes: {
11
+ title: {
12
+ control: "text";
13
+ };
14
+ size: {
15
+ control: "select";
16
+ options: string[];
17
+ };
18
+ accent: {
19
+ control: "select";
20
+ options: import("../..").Accent[];
21
+ };
22
+ hideCloseButton: {
23
+ control: "boolean";
24
+ };
25
+ };
26
+ };
27
+ export default _default;
28
+ export declare const PreviewModalStory: ThisStory;
29
+ export declare const Variants: ThisStory;
30
+ export declare const Tests: StoryObj<typeof Modal>;
31
+ //# sourceMappingURL=Modal.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Modal.stories.d.ts","sourceRoot":"","sources":["../../../../src/ui/containers/Modal.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAM5D,OAAO,EAAE,KAAK,EAAmB,MAAM,SAAS,CAAC;AAEjD,KAAK,SAAS,GAAG,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;AAsCxC,wBAa+B;AAE/B,eAAO,MAAM,iBAAiB,EAAE,SAqB/B,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,SAwGtB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,KAAK,CAuCxC,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { ReactNode } from "react";
2
+ import type { Accent } from "../../core/AlouetteConfig";
3
+ export type CircularProgressSize = "lg" | "md" | "sm" | "xs";
4
+ export interface CircularProgressProps {
5
+ /** Known completion percentage, 0-100. For an unknown percentage (e.g.
6
+ * reconnecting, page transitions), use `IndeterminateCircularProgress` instead. */
7
+ progress: number;
8
+ hidden?: boolean;
9
+ accent?: Accent;
10
+ size?: CircularProgressSize;
11
+ }
12
+ export declare function CircularProgress({ progress, hidden, accent, size, }: CircularProgressProps): ReactNode;
13
+ export interface IndeterminateCircularProgressProps {
14
+ /** Whether an operation is in progress. The ring creeps toward 100% while
15
+ * `true`, then completes and fades out once `false`. */
16
+ loading: boolean;
17
+ accent?: Accent;
18
+ size?: CircularProgressSize;
19
+ }
20
+ export declare function IndeterminateCircularProgress({ loading, accent, size, }: IndeterminateCircularProgressProps): ReactNode;
21
+ //# sourceMappingURL=CircularProgress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CircularProgress.d.ts","sourceRoot":"","sources":["../../../../src/ui/feedback/CircularProgress.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAOxD,MAAM,MAAM,oBAAoB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AA2B7D,MAAM,WAAW,qBAAqB;IACpC;uFACmF;IACnF,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,oBAAoB,CAAC;CAC7B;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,MAAc,EACd,MAAgB,EAChB,IAAW,GACZ,EAAE,qBAAqB,GAAG,SAAS,CA0CnC;AAED,MAAM,WAAW,kCAAkC;IACjD;4DACwD;IACxD,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,oBAAoB,CAAC;CAC7B;AAED,wBAAgB,6BAA6B,CAAC,EAC5C,OAAO,EACP,MAAM,EACN,IAAI,GACL,EAAE,kCAAkC,GAAG,SAAS,CAWhD"}
@@ -0,0 +1,38 @@
1
+ import type { StoryObj } from "@storybook/react-vite";
2
+ import { CircularProgress } from "./CircularProgress";
3
+ type ThisStory = StoryObj<typeof CircularProgress>;
4
+ declare const _default: {
5
+ title: string;
6
+ component: typeof CircularProgress;
7
+ parameters: {
8
+ componentSubtitle: string;
9
+ };
10
+ argTypes: {
11
+ progress: {
12
+ description: string;
13
+ control: {
14
+ type: "range";
15
+ min: number;
16
+ max: number;
17
+ };
18
+ };
19
+ hidden: {
20
+ description: string;
21
+ control: "boolean";
22
+ };
23
+ accent: {
24
+ description: string;
25
+ control: "select";
26
+ options: string[];
27
+ };
28
+ size: {
29
+ description: string;
30
+ control: "select";
31
+ options: string[];
32
+ };
33
+ };
34
+ };
35
+ export default _default;
36
+ export declare const CircularProgressPreviewStory: ThisStory;
37
+ export declare const CircularProgressVariantsStory: ThisStory;
38
+ //# sourceMappingURL=CircularProgress.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CircularProgress.stories.d.ts","sourceRoot":"","sources":["../../../../src/ui/feedback/CircularProgress.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAK5D,OAAO,EACL,gBAAgB,EAEjB,MAAM,oBAAoB,CAAC;AAE5B,KAAK,SAAS,GAAG,QAAQ,CAAC,OAAO,gBAAgB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEnD,wBA2B0C;AAE1C,eAAO,MAAM,4BAA4B,EAAE,SAuB1C,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,SAgC3C,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { ReactNode } from "react";
2
+ import type { Accent } from "../../core/AlouetteConfig";
3
+ export type LinearProgressSize = "lg" | "md" | "sm" | "xs";
4
+ export interface LinearProgressProps {
5
+ /** Known completion percentage, 0-100. For an unknown percentage (e.g.
6
+ * reconnecting, page transitions), use `IndeterminateLinearProgress` instead. */
7
+ progress: number;
8
+ hidden?: boolean;
9
+ accent?: Accent;
10
+ size?: LinearProgressSize;
11
+ }
12
+ export declare function LinearProgress({ progress, hidden, accent, size, }: LinearProgressProps): ReactNode;
13
+ export interface IndeterminateLinearProgressProps {
14
+ /** Whether an operation is in progress. The bar creeps toward 100% while
15
+ * `true`, then completes and fades out once `false`. */
16
+ loading: boolean;
17
+ accent?: Accent;
18
+ size?: LinearProgressSize;
19
+ }
20
+ export declare function IndeterminateLinearProgress({ loading, accent, size, }: IndeterminateLinearProgressProps): ReactNode;
21
+ //# sourceMappingURL=LinearProgress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LinearProgress.d.ts","sourceRoot":"","sources":["../../../../src/ui/feedback/LinearProgress.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAKxD,MAAM,MAAM,kBAAkB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAmB3D,MAAM,WAAW,mBAAmB;IAClC;qFACiF;IACjF,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,kBAAkB,CAAC;CAC3B;AAED,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,MAAc,EACd,MAAgB,EAChB,IAAW,GACZ,EAAE,mBAAmB,GAAG,SAAS,CAWjC;AAED,MAAM,WAAW,gCAAgC;IAC/C;4DACwD;IACxD,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,kBAAkB,CAAC;CAC3B;AAED,wBAAgB,2BAA2B,CAAC,EAC1C,OAAO,EACP,MAAM,EACN,IAAI,GACL,EAAE,gCAAgC,GAAG,SAAS,CAW9C"}
@@ -0,0 +1,38 @@
1
+ import type { StoryObj } from "@storybook/react-vite";
2
+ import { LinearProgress } from "./LinearProgress";
3
+ type ThisStory = StoryObj<typeof LinearProgress>;
4
+ declare const _default: {
5
+ title: string;
6
+ component: typeof LinearProgress;
7
+ parameters: {
8
+ componentSubtitle: string;
9
+ };
10
+ argTypes: {
11
+ progress: {
12
+ description: string;
13
+ control: {
14
+ type: "range";
15
+ min: number;
16
+ max: number;
17
+ };
18
+ };
19
+ hidden: {
20
+ description: string;
21
+ control: "boolean";
22
+ };
23
+ accent: {
24
+ description: string;
25
+ control: "select";
26
+ options: string[];
27
+ };
28
+ size: {
29
+ description: string;
30
+ control: "select";
31
+ options: string[];
32
+ };
33
+ };
34
+ };
35
+ export default _default;
36
+ export declare const LinearProgressPreviewStory: ThisStory;
37
+ export declare const LinearProgressVariantsStory: ThisStory;
38
+ //# sourceMappingURL=LinearProgress.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LinearProgress.stories.d.ts","sourceRoot":"","sources":["../../../../src/ui/feedback/LinearProgress.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAI5D,OAAO,EAA+B,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE/E,KAAK,SAAS,GAAG,QAAQ,CAAC,OAAO,cAAc,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEjD,wBA2BwC;AAExC,eAAO,MAAM,0BAA0B,EAAE,SAQxC,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,SAqDzC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { ReactNode } from "react";
2
+ export interface RingCircleProps {
3
+ center: number;
4
+ radius: number;
5
+ strokeWidth: number;
6
+ strokeDasharray?: number;
7
+ strokeDashoffset?: number;
8
+ /** Injected by the native `Icon` via `cloneElement`, resolved from a `useColorToken` string. */
9
+ color?: string;
10
+ /** Injected by the web `Icon` via `cloneElement` — the `text-*` class itself, resolved through CSS `currentColor`. */
11
+ className?: string;
12
+ width?: number;
13
+ height?: number;
14
+ }
15
+ export declare function RingCircle({ center, radius, strokeWidth, strokeDasharray, strokeDashoffset, color, width, height, }: RingCircleProps): ReactNode;
16
+ //# sourceMappingURL=RingCircle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RingCircle.d.ts","sourceRoot":"","sources":["../../../../src/ui/feedback/RingCircle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAWvC,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gGAAgG;IAChG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sHAAsH;IACtH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAOD,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,MAAM,EACN,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,KAAK,EACL,KAAK,EACL,MAAM,GACP,EAAE,eAAe,GAAG,SAAS,CA2C7B"}
@@ -0,0 +1,4 @@
1
+ import type { ReactNode } from "react";
2
+ import type { RingCircleProps } from "./RingCircle";
3
+ export declare function RingCircle({ center, radius, strokeWidth, strokeDasharray, strokeDashoffset, className, width, height, }: RingCircleProps): ReactNode;
4
+ //# sourceMappingURL=RingCircle.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RingCircle.web.d.ts","sourceRoot":"","sources":["../../../../src/ui/feedback/RingCircle.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,MAAM,EACN,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,SAAS,EACT,KAAK,EACL,MAAM,GACP,EAAE,eAAe,GAAG,SAAS,CA0B7B"}
@@ -0,0 +1,5 @@
1
+ export declare function useSimulatedProgress(loading: boolean): {
2
+ progress: number;
3
+ hidden: boolean;
4
+ };
5
+ //# sourceMappingURL=useSimulatedProgress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSimulatedProgress.d.ts","sourceRoot":"","sources":["../../../../src/ui/feedback/useSimulatedProgress.ts"],"names":[],"mappings":"AAuBA,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB,CAuCA"}
@@ -1,4 +1,5 @@
1
1
  import { type ReactElement, type ReactNode, type SVGProps } from "react";
2
+ import type { ColorClassName } from "../../core/useColorToken";
2
3
  export type SVGIconElement = ReactElement<SVGProps<SVGSVGElement>>;
3
4
  export interface IconProps {
4
5
  icon: SVGIconElement;
@@ -9,7 +10,7 @@ export interface IconProps {
9
10
  * `text-muted`, `text-accent`, `text-on-accent`, `text-disabled-muted`.
10
11
  * Defaults to `text-sharp`.
11
12
  */
12
- className?: string | "text-accent" | "text-disabled-muted" | "text-disabled" | "text-muted" | "text-on-accent-muted" | "text-on-accent" | "text-sharp";
13
+ className?: ColorClassName;
13
14
  }
14
15
  export declare function Icon({ icon, size, className, }: IconProps): ReactNode;
15
16
  //# sourceMappingURL=Icon.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../../../src/ui/primitives/Icon.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,QAAQ,EAEd,MAAM,OAAO,CAAC;AAGf,MAAM,MAAM,cAAc,GAAG,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;AAEnE,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,cAAc,CAAC;IACrB,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,SAAS,CAAC,EACN,MAAM,GAEN,aAAa,GAEb,qBAAqB,GAErB,eAAe,GAEf,YAAY,GAEZ,sBAAsB,GAEtB,gBAAgB,GAEhB,YAAY,CAAC;CAClB;AAED,wBAAgB,IAAI,CAAC,EACnB,IAAI,EACJ,IAAS,EACT,SAAwB,GACzB,EAAE,SAAS,GAAG,SAAS,CAavB"}
1
+ {"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../../../src/ui/primitives/Icon.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,QAAQ,EAEd,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG/D,MAAM,MAAM,cAAc,GAAG,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;AAEnE,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,cAAc,CAAC;IACrB,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;CAC5B;AAED,wBAAgB,IAAI,CAAC,EACnB,IAAI,EACJ,IAAS,EACT,SAAwB,GACzB,EAAE,SAAS,GAAG,SAAS,CASvB"}
@@ -0,0 +1,7 @@
1
+ import type { ReactNode } from "react";
2
+ export interface IndeterminateToggleDemoProps {
3
+ boxClassName: string;
4
+ children: (loading: boolean) => ReactNode;
5
+ }
6
+ export declare function IndeterminateToggleDemo({ boxClassName, children, }: IndeterminateToggleDemoProps): ReactNode;
7
+ //# sourceMappingURL=IndeterminateToggleDemo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndeterminateToggleDemo.d.ts","sourceRoot":"","sources":["../../../../src/ui/story-components/IndeterminateToggleDemo.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,WAAW,4BAA4B;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,SAAS,CAAC;CAC3C;AAED,wBAAgB,uBAAuB,CAAC,EACtC,YAAY,EACZ,QAAQ,GACT,EAAE,4BAA4B,GAAG,SAAS,CAc1C"}