@voxel51/voodo 0.0.27 → 0.0.29

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 (68) hide show
  1. package/README.md +0 -41
  2. package/dist/components/Collapsible/Collapsible.d.ts +78 -0
  3. package/dist/components/Collapsible/Collapsible.d.ts.map +1 -0
  4. package/dist/components/Collapsible/index.d.ts +3 -0
  5. package/dist/components/Collapsible/index.d.ts.map +1 -0
  6. package/dist/components/Drawer/Drawer.d.ts +68 -0
  7. package/dist/components/Drawer/Drawer.d.ts.map +1 -0
  8. package/dist/components/Drawer/index.d.ts +3 -0
  9. package/dist/components/Drawer/index.d.ts.map +1 -0
  10. package/dist/components/Dropdown/Dropdown.d.ts +94 -0
  11. package/dist/components/Dropdown/Dropdown.d.ts.map +1 -0
  12. package/dist/components/Dropdown/DropdownTrigger.d.ts +26 -0
  13. package/dist/components/Dropdown/DropdownTrigger.d.ts.map +1 -0
  14. package/dist/components/Dropdown/index.d.ts +3 -0
  15. package/dist/components/Dropdown/index.d.ts.map +1 -0
  16. package/dist/components/Menu/MenuCheckItem.d.ts +35 -0
  17. package/dist/components/Menu/MenuCheckItem.d.ts.map +1 -0
  18. package/dist/components/Menu/MenuIconTextItem.d.ts +43 -0
  19. package/dist/components/Menu/MenuIconTextItem.d.ts.map +1 -0
  20. package/dist/components/Menu/MenuSectionTitle.d.ts +26 -0
  21. package/dist/components/Menu/MenuSectionTitle.d.ts.map +1 -0
  22. package/dist/components/Menu/MenuSeparator.d.ts +23 -0
  23. package/dist/components/Menu/MenuSeparator.d.ts.map +1 -0
  24. package/dist/components/Menu/MenuTextItem.d.ts +30 -0
  25. package/dist/components/Menu/MenuTextItem.d.ts.map +1 -0
  26. package/dist/components/Menu/index.d.ts +7 -0
  27. package/dist/components/Menu/index.d.ts.map +1 -0
  28. package/dist/components/Menu/styles.d.ts +8 -0
  29. package/dist/components/Menu/styles.d.ts.map +1 -0
  30. package/dist/components/Select/Select.d.ts.map +1 -1
  31. package/dist/components/index.d.ts +4 -0
  32. package/dist/components/index.d.ts.map +1 -1
  33. package/dist/index.cjs +6 -6
  34. package/dist/index.cjs.map +1 -1
  35. package/dist/index.d.ts +6 -0
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +6857 -6225
  38. package/dist/index.js.map +1 -1
  39. package/dist/theme/index.d.ts +0 -1
  40. package/dist/theme/index.d.ts.map +1 -1
  41. package/dist/theme/tokens/index.d.ts +30 -0
  42. package/dist/theme/tokens/index.d.ts.map +1 -1
  43. package/dist/theme/tokens/transitions.d.ts +74 -0
  44. package/dist/theme/tokens/transitions.d.ts.map +1 -0
  45. package/dist/types/index.d.ts +1 -0
  46. package/dist/types/index.d.ts.map +1 -1
  47. package/dist/types/transition.d.ts +127 -0
  48. package/dist/types/transition.d.ts.map +1 -0
  49. package/dist/util/useControllableState.d.ts +44 -0
  50. package/dist/util/useControllableState.d.ts.map +1 -0
  51. package/dist/util/useDisclosure.d.ts +44 -0
  52. package/dist/util/useDisclosure.d.ts.map +1 -0
  53. package/dist/util/useDragDelta.d.ts +58 -0
  54. package/dist/util/useDragDelta.d.ts.map +1 -0
  55. package/dist/util/useElementSize.d.ts +29 -0
  56. package/dist/util/useElementSize.d.ts.map +1 -0
  57. package/dist/util/useLatest.d.ts +24 -0
  58. package/dist/util/useLatest.d.ts.map +1 -0
  59. package/dist/util/useResizableDrawer.d.ts +69 -0
  60. package/dist/util/useResizableDrawer.d.ts.map +1 -0
  61. package/dist/voodo.css +1 -1
  62. package/package.json +2 -6
  63. package/dist/theme/mui/components.d.ts +0 -9
  64. package/dist/theme/mui/components.d.ts.map +0 -1
  65. package/dist/theme/mui/index.d.ts +0 -3
  66. package/dist/theme/mui/index.d.ts.map +0 -1
  67. package/dist/theme/mui/theme-config.d.ts +0 -31
  68. package/dist/theme/mui/theme-config.d.ts.map +0 -1
package/README.md CHANGED
@@ -59,43 +59,6 @@ application.
59
59
  import "@voxel51/voodo/theme.css";
60
60
  ```
61
61
 
62
- #### Usage with MUI
63
-
64
- This library also exports theme configuration (in the form of a Material `ThemeConfig`)
65
- which can be used to generate an MUI theme.
66
-
67
- ```typescript jsx
68
-
69
- import { createTheme, ThemeProvider } from '@mui/material/styles';
70
- import { defaultMUIThemeConfig, createMUIThemeConfig } from '@voxel51/voodo';
71
-
72
- // Option 1: Use default (dark mode)
73
- const theme = createTheme(defaultMUIThemeConfig);
74
-
75
- // Option 2: Create light mode
76
- const lightTheme = createTheme(createMUIThemeConfig({ mode: 'light' }));
77
-
78
- // Option 3: With overrides
79
- const customTheme = createTheme(
80
- createMUIThemeConfig({
81
- mode: 'dark',
82
- overrides: {
83
- palette: {
84
- primary: { main: '#custom-color' },
85
- },
86
- },
87
- })
88
- );
89
-
90
- function App() {
91
- return (
92
- <ThemeProvider theme={theme}>
93
- {/* Your app */}
94
- </ThemeProvider>
95
- );
96
- }
97
- ```
98
-
99
62
  ## Contributing
100
63
 
101
64
  This library is based on [HeadlessUI](https://headlessui.com/) and [Tailwind](https://tailwindcss.com/).
@@ -111,10 +74,6 @@ General rules of thumb:
111
74
  ## Publishing
112
75
 
113
76
  This library is published to NPM via GitHub Actions workflows.
114
- Releases are triggered by tagging a commit with a `v<version>` tag, where `<version>`
115
- should match the `version` property in `package.json`. For example, the initial release has the tag `v0.0.1`.
116
-
117
- Once a release is tagged and published, the `version` property in `package.json` should receive a patch bump.
118
77
 
119
78
  This library is currently in a pre-release state, with versions matching `0.x.y`.
120
79
  Standard semantic versioning will be enforced starting with version `1.0.0`.
@@ -0,0 +1,78 @@
1
+ import { default as React } from 'react';
2
+ import { UseDisclosureOptions } from '../../util/useDisclosure';
3
+ /**
4
+ * Snapshot of open/close state passed to the `header` render prop so the
5
+ * caller can style the trigger element (e.g. rotate a chevron icon).
6
+ */
7
+ export interface CollapsibleState {
8
+ /** Whether the content area is currently open. */
9
+ open: boolean;
10
+ /** Toggles the open state. Calls `onOpenChange` when in controlled mode. */
11
+ toggle: () => void;
12
+ }
13
+ /**
14
+ * Props for {@link Collapsible}.
15
+ *
16
+ * Extends {@link UseDisclosureOptions} so the component supports both
17
+ * uncontrolled (`defaultOpen`) and controlled (`open` + `onOpenChange`) usage.
18
+ */
19
+ export interface CollapsibleProps extends UseDisclosureOptions {
20
+ /**
21
+ * Render prop for the clickable header. Receives the current
22
+ * {@link CollapsibleState} so the caller can wire up the toggle and reflect
23
+ * open state in the trigger UI.
24
+ *
25
+ * @example
26
+ * ```tsx
27
+ * <Collapsible header={({ open, toggle }) => (
28
+ * <button onClick={toggle}>{open ? "Hide" : "Show"}</button>
29
+ * )}>
30
+ * content
31
+ * </Collapsible>
32
+ * ```
33
+ */
34
+ header?: (state: CollapsibleState) => React.ReactNode;
35
+ /**
36
+ * When `true` (default), the content area expands and collapses with a CSS
37
+ * `max-height` transition so the DOM node stays mounted and accessible while
38
+ * collapsed. When `false`, children are unmounted immediately with no animation.
39
+ * @default true
40
+ */
41
+ animated?: boolean;
42
+ /** Content to show or hide. */
43
+ children?: React.ReactNode;
44
+ /** Additional class name applied to the root element. */
45
+ className?: string;
46
+ /** Inline styles applied to the root element. */
47
+ style?: React.CSSProperties;
48
+ }
49
+ /**
50
+ * A vertically collapsible container with an optional header trigger.
51
+ *
52
+ * Supports uncontrolled and controlled open state via {@link useDisclosure}.
53
+ * When `animated` is true, content visibility is driven by a CSS `max-height`
54
+ * transition so the DOM node stays mounted and accessible while collapsed.
55
+ *
56
+ * @example
57
+ * ```tsx
58
+ * // Uncontrolled — starts open
59
+ * <Collapsible
60
+ * header={({ open, toggle }) => (
61
+ * <button onClick={toggle}>{open ? "Collapse" : "Expand"}</button>
62
+ * )}
63
+ * >
64
+ * <p>Hidden content</p>
65
+ * </Collapsible>
66
+ *
67
+ * // Controlled
68
+ * const [open, setOpen] = useState(false);
69
+ * <Collapsible open={open} onOpenChange={setOpen} header={({ toggle }) => (
70
+ * <button onClick={toggle}>Toggle</button>
71
+ * )}>
72
+ * <p>Controlled content</p>
73
+ * </Collapsible>
74
+ * ```
75
+ */
76
+ declare const Collapsible: React.FC<CollapsibleProps>;
77
+ export default Collapsible;
78
+ //# sourceMappingURL=Collapsible.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Collapsible.d.ts","sourceRoot":"","sources":["../../../src/components/Collapsible/Collapsible.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAiB,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAI3E;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kDAAkD;IAClD,IAAI,EAAE,OAAO,CAAC;IACd,4EAA4E;IAC5E,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAiB,SAAQ,oBAAoB;IAC5D;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,KAAK,CAAC,SAAS,CAAC;IACtD;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA4B3C,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { default as Collapsible } from './Collapsible';
2
+ export type { CollapsibleProps, CollapsibleState } from './Collapsible';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Collapsible/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,68 @@
1
+ import { default as React } from 'react';
2
+ import { UseDisclosureOptions } from '../../util/useDisclosure';
3
+ /**
4
+ * Edge of the viewport the drawer is anchored to. Determines both the
5
+ * drag axis (`left`/`right` resize horizontally; `top`/`bottom` resize
6
+ * vertically) and the direction the drawer expands when opened.
7
+ */
8
+ export type DrawerSide = "left" | "right" | "top" | "bottom";
9
+ /**
10
+ * State passed to the {@link DrawerProps.header} render prop so callers
11
+ * can react to and control the drawer's open/closed state from within
12
+ * their header content (e.g. a toggle button).
13
+ */
14
+ export interface DrawerHeaderState {
15
+ /** Whether the drawer is currently expanded. */
16
+ open: boolean;
17
+ /** Flip the drawer between open and closed. */
18
+ toggle: () => void;
19
+ }
20
+ /**
21
+ * Props for the {@link Drawer} component. Extends `UseDisclosureOptions`
22
+ * so callers can drive the open state in either controlled
23
+ * (`open` + `onOpenChange`) or uncontrolled (`defaultOpen`) mode.
24
+ */
25
+ export interface DrawerProps extends UseDisclosureOptions {
26
+ /** Edge the drawer is anchored to. Defaults to `"bottom"`. */
27
+ side?: DrawerSide;
28
+ /** Size (in px) the drawer opens to when first rendered or re-opened. */
29
+ defaultSize: number;
30
+ /** Minimum size (in px) the user can drag the drawer down to while open. */
31
+ minSize: number;
32
+ /** Maximum size (in px) the user can drag the drawer up to. */
33
+ maxSize: number;
34
+ /**
35
+ * How the drawer relates to surrounding layout.
36
+ * - `"push"` (default): the drawer occupies space and pushes siblings.
37
+ * - `"float"`: the drawer overlays content without affecting layout.
38
+ */
39
+ mode?: "push" | "float";
40
+ /**
41
+ * Render prop for the always-visible header area. Receives open state and
42
+ * toggle. Everything the caller renders here stays visible when collapsed —
43
+ * toggle button, ruler, pinned rows, etc. Its height is measured and used
44
+ * as the drawer's closed size automatically.
45
+ */
46
+ header?: (state: DrawerHeaderState) => React.ReactNode;
47
+ /** Called whenever the user finishes resizing the drawer. */
48
+ onSizeChange?: (size: number) => void;
49
+ /** Ref forwarded to the scrollable body element wrapping `children`. */
50
+ bodyRef?: React.RefObject<HTMLDivElement | null>;
51
+ /** Drawer body content, rendered inside the scrollable area. */
52
+ children?: React.ReactNode;
53
+ /** Additional class name applied to the drawer root. */
54
+ className?: string;
55
+ /** Inline styles merged into the drawer root (after the sizing style). */
56
+ style?: React.CSSProperties;
57
+ }
58
+ /**
59
+ * Resizable, collapsible drawer anchored to one edge of its container.
60
+ *
61
+ * The drawer is draggable along its perpendicular axis between `minSize`
62
+ * and `maxSize`, and collapses to the measured height of its `header`
63
+ * render prop (plus the drag handle) when closed. Open state can be
64
+ * controlled or uncontrolled via the inherited disclosure props.
65
+ */
66
+ declare const Drawer: React.FC<DrawerProps>;
67
+ export default Drawer;
68
+ //# sourceMappingURL=Drawer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drawer.d.ts","sourceRoot":"","sources":["../../../src/components/Drawer/Drawer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAMjE;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;AAE7D;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,gDAAgD;IAChD,IAAI,EAAE,OAAO,CAAC;IACd,+CAA+C;IAC/C,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAcD;;;;GAIG;AACH,MAAM,WAAW,WAAY,SAAQ,oBAAoB;IACvD,8DAA8D;IAC9D,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,KAAK,CAAC,SAAS,CAAC;IACvD,6DAA6D;IAC7D,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,wEAAwE;IACxE,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACjD,gEAAgE;IAChE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,QAAA,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAqEjC,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { default as Drawer } from './Drawer';
2
+ export type { DrawerProps, DrawerSide, DrawerHeaderState } from './Drawer';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Drawer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,94 @@
1
+ import { FC, HTMLAttributes, ReactNode } from 'react';
2
+ import { ZIndex } from '../../types';
3
+ /**
4
+ * Position of the dropdown menu panel relative to its trigger.
5
+ * Values follow the `<edge> <alignment>` convention used by HeadlessUI's
6
+ * floating UI — e.g. `BottomStart` opens the menu below the trigger,
7
+ * left-aligned with it.
8
+ */
9
+ export declare enum DropdownAnchor {
10
+ /** Below the trigger, horizontally centered. */
11
+ Bottom = "bottom",
12
+ /** Below the trigger, aligned with its leading (start) edge. */
13
+ BottomStart = "bottom start",
14
+ /** Below the trigger, aligned with its trailing (end) edge. */
15
+ BottomEnd = "bottom end",
16
+ /** Above the trigger, horizontally centered. */
17
+ Top = "top",
18
+ /** Above the trigger, aligned with its leading (start) edge. */
19
+ TopStart = "top start",
20
+ /** Above the trigger, aligned with its trailing (end) edge. */
21
+ TopEnd = "top end"
22
+ }
23
+ /**
24
+ * Props for {@link Dropdown}.
25
+ */
26
+ export interface DropdownProps extends HTMLAttributes<HTMLDivElement> {
27
+ /**
28
+ * The element that opens the dropdown when clicked.
29
+ * Rendered inside a `MenuButton` wrapper — any focusable element works.
30
+ */
31
+ trigger: ReactNode;
32
+ /** Menu content. Use the Menu* primitive components as children. */
33
+ children: ReactNode;
34
+ /** Position of the menu panel relative to the trigger. */
35
+ anchor?: DropdownAnchor;
36
+ /**
37
+ * Renders the menu panel in a portal so it escapes overflow-hidden
38
+ * ancestors and stacks above complex layouts (modals, mosaic grids,
39
+ * scrollable regions). Defaults to `true` — opt out by passing `false`
40
+ * when the menu must stay inside its trigger's DOM subtree (e.g. tightly
41
+ * scoped to a virtualized list).
42
+ * @default true
43
+ */
44
+ portal?: boolean;
45
+ /** Explicit z-index override for the menu panel. */
46
+ zIndex?: ZIndex;
47
+ /**
48
+ * If `true`, the trigger cannot open the menu. Also inferred automatically
49
+ * when the `trigger` element has `disabled` set on its props.
50
+ */
51
+ disabled?: boolean;
52
+ }
53
+ /**
54
+ * A click-triggered menu component. Composes with the Menu primitives:
55
+ * {@link MenuTextItem}, {@link MenuIconTextItem}, {@link MenuCheckItem},
56
+ * {@link MenuSectionTitle}, and {@link MenuSeparator}.
57
+ *
58
+ * Built on HeadlessUI's `Menu`, providing full keyboard navigation
59
+ * (arrow keys, Enter, Escape) and ARIA `role="menu"` semantics automatically.
60
+ *
61
+ * @example
62
+ * ```tsx
63
+ * <Dropdown trigger={<DropdownTrigger>Actions</DropdownTrigger>}>
64
+ * <MenuSectionTitle>Actions</MenuSectionTitle>
65
+ * <MenuIconTextItem
66
+ * icon={IconName.ImageSearch}
67
+ * text="Sort by similarity"
68
+ * subtext="Find visually similar"
69
+ * onClick={() => {}}
70
+ * />
71
+ * <MenuIconTextItem
72
+ * icon={IconName.Embeddings}
73
+ * text="Run embeddings"
74
+ * subtext="Compute vector embeddings"
75
+ * onClick={() => {}}
76
+ * />
77
+ * <MenuSeparator />
78
+ * <MenuTextItem destructive onClick={() => {}}>
79
+ * Delete
80
+ * </MenuTextItem>
81
+ * </Dropdown>
82
+ * ```
83
+ *
84
+ * @param trigger The trigger element that opens the menu.
85
+ * @param children Menu content — use the Menu* primitive components.
86
+ * @param anchor Position of the menu panel relative to the trigger. See {@link DropdownAnchor}.
87
+ * @param portal If `true`, renders the panel in a portal with a high z-index.
88
+ * @param zIndex Explicit z-index for the panel.
89
+ * @param disabled If `true`, the menu cannot be opened.
90
+ * @param className `class` overrides for the root wrapper.
91
+ * @param props Additional HTML properties for the root wrapper.
92
+ */
93
+ export declare const Dropdown: FC<DropdownProps>;
94
+ //# sourceMappingURL=Dropdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dropdown.d.ts","sourceRoot":"","sources":["../../../src/components/Dropdown/Dropdown.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,EAAE,EACP,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,EAAE,MAAM,EAAgB,MAAM,SAAS,CAAC;AAG/C;;;;;GAKG;AACH,oBAAY,cAAc;IACxB,gDAAgD;IAChD,MAAM,WAAW;IACjB,gEAAgE;IAChE,WAAW,iBAAiB;IAC5B,+DAA+D;IAC/D,SAAS,eAAe;IACxB,gDAAgD;IAChD,GAAG,QAAQ;IACX,gEAAgE;IAChE,QAAQ,cAAc;IACtB,+DAA+D;IAC/D,MAAM,YAAY;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,cAAc,CAAC,cAAc,CAAC;IACnE;;;OAGG;IACH,OAAO,EAAE,SAAS,CAAC;IACnB,oEAAoE;IACpE,QAAQ,EAAE,SAAS,CAAC;IACpB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,aAAa,CA0CtC,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { FC } from 'react';
2
+ import { ButtonProps } from '../Button';
3
+ /**
4
+ * Props for {@link DropdownTrigger}. Accepts {@link ButtonProps} except
5
+ * `variant` and `trailingIcon`, which are fixed by the trigger preset
6
+ * (secondary variant + caret-down icon).
7
+ */
8
+ export type DropdownTriggerProps = Omit<ButtonProps, "variant" | "trailingIcon">;
9
+ /**
10
+ * The standard trigger button for a {@link Dropdown}.
11
+ * Always renders as a secondary button with a trailing caret-down icon
12
+ * so users know the element opens a menu.
13
+ *
14
+ * @example
15
+ * ```tsx
16
+ * <Dropdown trigger={<DropdownTrigger>Actions</DropdownTrigger>}>
17
+ * <DropdownTextItem onClick={() => {}}>Edit</DropdownTextItem>
18
+ * </Dropdown>
19
+ * ```
20
+ *
21
+ * @param children Button label.
22
+ * @param size Button size. Defaults to {@link Size.Sm}.
23
+ * @param props Additional {@link ButtonProps} (excluding `variant` and `trailingIcon`).
24
+ */
25
+ export declare const DropdownTrigger: FC<DropdownTriggerProps>;
26
+ //# sourceMappingURL=DropdownTrigger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DropdownTrigger.d.ts","sourceRoot":"","sources":["../../../src/components/Dropdown/DropdownTrigger.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAG/D;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,WAAW,EACX,SAAS,GAAG,cAAc,CAC3B,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,oBAAoB,CAapD,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './Dropdown';
2
+ export * from './DropdownTrigger';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Dropdown/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { FC, HTMLAttributes } from 'react';
2
+ /**
3
+ * Props for {@link MenuCheckItem}.
4
+ */
5
+ export interface MenuCheckItemProps extends HTMLAttributes<HTMLButtonElement> {
6
+ /** Whether this item is currently checked/selected. */
7
+ checked?: boolean;
8
+ /** If `true`, the item cannot be interacted with and is rendered in a muted style. */
9
+ disabled?: boolean;
10
+ }
11
+ /**
12
+ * A selectable menu item with a leading checkmark indicator.
13
+ * The checkmark is shown when `checked` is `true`; otherwise the slot is empty
14
+ * but reserved so that text alignment stays consistent across items.
15
+ *
16
+ * @example
17
+ * ```tsx
18
+ * <Dropdown trigger={<DropdownTrigger>Sort</DropdownTrigger>}>
19
+ * <MenuCheckItem checked={sort === "asc"} onClick={() => setSort("asc")}>
20
+ * Ascending
21
+ * </MenuCheckItem>
22
+ * <MenuCheckItem checked={sort === "desc"} onClick={() => setSort("desc")}>
23
+ * Descending
24
+ * </MenuCheckItem>
25
+ * </Dropdown>
26
+ * ```
27
+ *
28
+ * @param checked If `true`, a checkmark is shown in the leading slot.
29
+ * @param disabled If `true`, the item cannot be interacted with.
30
+ * @param children The label text.
31
+ * @param className `class` overrides to apply to the component.
32
+ * @param props Additional HTML properties to apply to the component.
33
+ */
34
+ export declare const MenuCheckItem: FC<MenuCheckItemProps>;
35
+ //# sourceMappingURL=MenuCheckItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuCheckItem.d.ts","sourceRoot":"","sources":["../../../src/components/Menu/MenuCheckItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAiBhD;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,cAAc,CAAC,iBAAiB,CAAC;IAC3E,uDAAuD;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sFAAsF;IACtF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CAgDhD,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { FC, HTMLAttributes, ReactNode } from 'react';
2
+ import { IconName } from '../../types';
3
+ /**
4
+ * Props for {@link MenuIconTextItem}.
5
+ */
6
+ export interface MenuIconTextItemProps extends HTMLAttributes<HTMLButtonElement> {
7
+ /** Icon to display to the left of the text content. */
8
+ icon: IconName | ReactNode;
9
+ /** Primary label text. */
10
+ text: string;
11
+ /** Optional secondary description shown below the primary text. */
12
+ subtext?: string;
13
+ /** If `true`, the item cannot be interacted with and is rendered in a muted style. */
14
+ disabled?: boolean;
15
+ /** If `true`, renders text and icon in the destructive color palette. */
16
+ destructive?: boolean;
17
+ }
18
+ /**
19
+ * A menu item displaying an icon alongside primary text and an optional subtext description.
20
+ * Matches the layout shown for action menus such as "Sort by similarity / Find visually similar".
21
+ *
22
+ * @example
23
+ * ```tsx
24
+ * <Dropdown trigger={<DropdownTrigger>Open</DropdownTrigger>}>
25
+ * <MenuIconTextItem
26
+ * icon={IconName.ImageSearch}
27
+ * text="Sort by similarity"
28
+ * subtext="Find visually similar"
29
+ * onClick={() => {}}
30
+ * />
31
+ * </Dropdown>
32
+ * ```
33
+ *
34
+ * @param icon An {@link IconName} or a custom ReactNode rendered in the leading slot.
35
+ * @param text The primary label for the item.
36
+ * @param subtext An optional secondary line rendered below the primary text in muted color.
37
+ * @param disabled If `true`, the item cannot be interacted with.
38
+ * @param destructive If `true`, renders text colors in the destructive palette.
39
+ * @param className `class` overrides to apply to the component.
40
+ * @param props Additional HTML properties to apply to the component.
41
+ */
42
+ export declare const MenuIconTextItem: FC<MenuIconTextItemProps>;
43
+ //# sourceMappingURL=MenuIconTextItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuIconTextItem.d.ts","sourceRoot":"","sources":["../../../src/components/Menu/MenuIconTextItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAK3D,OAAO,EAKL,QAAQ,EAKT,MAAM,SAAS,CAAC;AAGjB;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,cAAc,CAAC,iBAAiB,CAAC;IAC9E,uDAAuD;IACvD,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3B,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sFAAsF;IACtF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yEAAyE;IACzE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CA+DtD,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { FC, HTMLAttributes } from 'react';
2
+ /**
3
+ * Props for {@link MenuSectionTitle}.
4
+ */
5
+ export interface MenuSectionTitleProps extends HTMLAttributes<HTMLDivElement> {
6
+ /** The section title text. Rendered as an uppercase muted label. */
7
+ children: string;
8
+ }
9
+ /**
10
+ * A non-interactive section title within a menu (e.g. {@link Dropdown}).
11
+ * Renders as an uppercase label above a group of items.
12
+ *
13
+ * @example
14
+ * ```tsx
15
+ * <Dropdown trigger={<DropdownTrigger>Open</DropdownTrigger>}>
16
+ * <MenuSectionTitle>Actions</MenuSectionTitle>
17
+ * <MenuIconTextItem icon={IconName.Edit} text="Edit" />
18
+ * </Dropdown>
19
+ * ```
20
+ *
21
+ * @param children The section title text.
22
+ * @param className `class` overrides to apply to the component.
23
+ * @param props Additional HTML properties to apply to the component.
24
+ */
25
+ export declare const MenuSectionTitle: FC<MenuSectionTitleProps>;
26
+ //# sourceMappingURL=MenuSectionTitle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuSectionTitle.d.ts","sourceRoot":"","sources":["../../../src/components/Menu/MenuSectionTitle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAMhD;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,cAAc,CAAC,cAAc,CAAC;IAC3E,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CAgBtD,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { FC, HTMLAttributes } from 'react';
2
+ /**
3
+ * Props for {@link MenuSeparator}. Accepts any standard div HTML attributes.
4
+ */
5
+ export type MenuSeparatorProps = HTMLAttributes<HTMLDivElement>;
6
+ /**
7
+ * A horizontal rule separator within a menu (e.g. {@link Dropdown}).
8
+ * Used to visually divide groups of items.
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * <Dropdown trigger={<DropdownTrigger>Open</DropdownTrigger>}>
13
+ * <MenuTextItem onClick={() => {}}>First group</MenuTextItem>
14
+ * <MenuSeparator />
15
+ * <MenuTextItem onClick={() => {}}>Second group</MenuTextItem>
16
+ * </Dropdown>
17
+ * ```
18
+ *
19
+ * @param className `class` overrides to apply to the component.
20
+ * @param props Additional HTML properties to apply to the component.
21
+ */
22
+ export declare const MenuSeparator: FC<MenuSeparatorProps>;
23
+ //# sourceMappingURL=MenuSeparator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuSeparator.d.ts","sourceRoot":"","sources":["../../../src/components/Menu/MenuSeparator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAKhD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;AAEhE;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CAehD,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { FC, HTMLAttributes } from 'react';
2
+ /**
3
+ * Props for {@link MenuTextItem}.
4
+ */
5
+ export interface MenuTextItemProps extends HTMLAttributes<HTMLButtonElement> {
6
+ /** If `true`, the item cannot be interacted with and is rendered in a muted style. */
7
+ disabled?: boolean;
8
+ /** If `true`, renders the label in the destructive text color (e.g. for "Delete"). */
9
+ destructive?: boolean;
10
+ }
11
+ /**
12
+ * A simple text-only item within a menu (e.g. {@link Dropdown}).
13
+ *
14
+ * @example
15
+ * ```tsx
16
+ * <Dropdown trigger={<DropdownTrigger>Open</DropdownTrigger>}>
17
+ * <MenuTextItem onClick={() => console.log("clicked")}>
18
+ * Delete item
19
+ * </MenuTextItem>
20
+ * </Dropdown>
21
+ * ```
22
+ *
23
+ * @param children The label text.
24
+ * @param disabled If `true`, the item cannot be interacted with.
25
+ * @param destructive If `true`, renders the label in the destructive text color.
26
+ * @param className `class` overrides to apply to the component.
27
+ * @param props Additional HTML properties to apply to the component.
28
+ */
29
+ export declare const MenuTextItem: FC<MenuTextItemProps>;
30
+ //# sourceMappingURL=MenuTextItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuTextItem.d.ts","sourceRoot":"","sources":["../../../src/components/Menu/MenuTextItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAchD;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,cAAc,CAAC,iBAAiB,CAAC;IAC1E,sFAAsF;IACtF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sFAAsF;IACtF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,CAoC9C,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from './MenuCheckItem';
2
+ export * from './MenuIconTextItem';
3
+ export * from './MenuSectionTitle';
4
+ export * from './MenuSeparator';
5
+ export * from './MenuTextItem';
6
+ export * from './styles';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Menu/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Shared visual styles for menu panels (Dropdown, ContextMenu, etc.).
3
+ *
4
+ * Provides the popover background, padding, max-width cap, radius, shadow,
5
+ * and focus outline reset that define the menu's visual identity.
6
+ */
7
+ export declare const menuPanelStyles: () => string;
8
+ //# sourceMappingURL=styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/components/Menu/styles.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,eAAO,MAAM,eAAe,QAAO,MAQhC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../src/components/Select/Select.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,EAAE,EACF,cAAc,EACd,SAAS,EAKV,MAAM,OAAO,CAAC;AAOf,OAAO,EACL,UAAU,EAMV,MAAM,EAEP,MAAM,SAAS,CAAC;AAKjB,oBAAY,YAAY;IACtB,MAAM,WAAW;IACjB,WAAW,iBAAiB;IAC5B,SAAS,eAAe;IACxB,GAAG,QAAQ;IACX,QAAQ,cAAc;IACtB,MAAM,YAAY;CACnB;AAED,MAAM,WAAW,WAAY,SAAQ,IAAI,CACvC,cAAc,CAAC,cAAc,CAAC,EAC9B,UAAU,CACX;IACC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IACrD,OAAO,CAAC,EAAE,UAAU,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC,EAAE,CAAC;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC3B;AAsBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AACH,eAAO,MAAM,MAAM,EAAE,EAAE,CAAC,WAAW,CAoIlC,CAAC"}
1
+ {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../src/components/Select/Select.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,EAAE,EACF,cAAc,EACd,SAAS,EAMV,MAAM,OAAO,CAAC;AAOf,OAAO,EACL,UAAU,EAMV,MAAM,EAEP,MAAM,SAAS,CAAC;AAKjB,oBAAY,YAAY;IACtB,MAAM,WAAW;IACjB,WAAW,iBAAiB;IAC5B,SAAS,eAAe;IACxB,GAAG,QAAQ;IACX,QAAQ,cAAc;IACtB,MAAM,YAAY;CACnB;AAED,MAAM,WAAW,WAAY,SAAQ,IAAI,CACvC,cAAc,CAAC,cAAc,CAAC,EAC9B,UAAU,CACX;IACC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IACrD,OAAO,CAAC,EAAE,UAAU,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC,EAAE,CAAC;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC3B;AAsBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AACH,eAAO,MAAM,MAAM,EAAE,EAAE,CAAC,WAAW,CA4IlC,CAAC"}
@@ -3,8 +3,11 @@ export * from './Button';
3
3
  export * from './Card';
4
4
  export * from './Checkbox';
5
5
  export * from './Clickable';
6
+ export * from './Collapsible';
6
7
  export * from './Datepicker';
7
8
  export * from './Divider';
9
+ export * from './Drawer';
10
+ export * from './Dropdown';
8
11
  export * from './EmptyState';
9
12
  export * from './FormField';
10
13
  export * from './FormFieldGroup';
@@ -13,6 +16,7 @@ export * from './Icons';
13
16
  export * from './ImageList';
14
17
  export * from './Input';
15
18
  export * from './ListItem';
19
+ export * from './Menu';
16
20
  export * from './Pill';
17
21
  export * from './Radio';
18
22
  export * from './RichButton';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"}