@bitrise/bitkit-v2 0.3.267-beta.1792 → 0.3.267

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 (57) hide show
  1. package/AGENTS.md +2 -15
  2. package/dist/components/BitkitDialog/BitkitDialog.d.ts +16 -3
  3. package/dist/components/BitkitDialog/BitkitDialog.js +46 -23
  4. package/dist/components/BitkitDialog/BitkitDialog.js.map +1 -1
  5. package/dist/components/BitkitDialog/BitkitDialogBody.d.ts +9 -0
  6. package/dist/components/BitkitDialog/{DialogBodyContext.js → BitkitDialogBody.js} +12 -11
  7. package/dist/components/BitkitDialog/BitkitDialogBody.js.map +1 -0
  8. package/dist/components/BitkitDialog/BitkitDialogButtons.d.ts +4 -0
  9. package/dist/components/BitkitDialog/BitkitDialogButtons.js +17 -0
  10. package/dist/components/BitkitDialog/BitkitDialogButtons.js.map +1 -0
  11. package/dist/components/BitkitDialog/BitkitDialogContent.d.ts +27 -0
  12. package/dist/components/BitkitDialog/BitkitDialogContent.js +57 -0
  13. package/dist/components/BitkitDialog/BitkitDialogContent.js.map +1 -0
  14. package/dist/components/BitkitDialog/BitkitDialogFormContent.d.ts +6 -0
  15. package/dist/components/BitkitDialog/BitkitDialogFormContent.js +30 -0
  16. package/dist/components/BitkitDialog/BitkitDialogFormContent.js.map +1 -0
  17. package/dist/components/BitkitDialog/BitkitDialogHeader.d.ts +9 -0
  18. package/dist/components/BitkitDialog/BitkitDialogHeader.js +8 -0
  19. package/dist/components/BitkitDialog/BitkitDialogHeader.js.map +1 -0
  20. package/dist/components/BitkitDialog/BitkitDialogRoot.d.ts +6 -0
  21. package/dist/components/BitkitDialog/BitkitDialogRoot.js +12 -0
  22. package/dist/components/BitkitDialog/BitkitDialogRoot.js.map +1 -0
  23. package/dist/components/BitkitDialog/BitkitDialogStep.d.ts +11 -0
  24. package/dist/components/BitkitDialog/{BitkitStepperDialogStep.js → BitkitDialogStep.js} +9 -9
  25. package/dist/components/BitkitDialog/BitkitDialogStep.js.map +1 -0
  26. package/dist/components/BitkitDialog/BitkitDialogStepContext.d.ts +5 -0
  27. package/dist/components/BitkitDialog/BitkitDialogStepContext.js +7 -0
  28. package/dist/components/BitkitDialog/BitkitDialogStepContext.js.map +1 -0
  29. package/dist/components/BitkitOverflowContent/BitkitOverflowContent.js +2 -1
  30. package/dist/components/BitkitOverflowContent/BitkitOverflowContent.js.map +1 -1
  31. package/dist/components/index.d.ts +7 -3
  32. package/dist/main.js +9 -5
  33. package/dist/theme/slot-recipes/Dialog.recipe.d.ts +2 -16
  34. package/dist/theme/slot-recipes/Dialog.recipe.js +1 -13
  35. package/dist/theme/slot-recipes/Dialog.recipe.js.map +1 -1
  36. package/dist/theme/slot-recipes/MarkdownCard.recipe.d.ts +1 -1
  37. package/dist/theme/slot-recipes/index.d.ts +3 -17
  38. package/package.json +1 -1
  39. package/dist/components/BitkitDialog/BitkitFormDialog.d.ts +0 -9
  40. package/dist/components/BitkitDialog/BitkitFormDialog.js +0 -53
  41. package/dist/components/BitkitDialog/BitkitFormDialog.js.map +0 -1
  42. package/dist/components/BitkitDialog/BitkitStepperDialog.d.ts +0 -46
  43. package/dist/components/BitkitDialog/BitkitStepperDialog.js +0 -91
  44. package/dist/components/BitkitDialog/BitkitStepperDialog.js.map +0 -1
  45. package/dist/components/BitkitDialog/BitkitStepperDialogStep.d.ts +0 -20
  46. package/dist/components/BitkitDialog/BitkitStepperDialogStep.js.map +0 -1
  47. package/dist/components/BitkitDialog/DialogBodyContext.d.ts +0 -12
  48. package/dist/components/BitkitDialog/DialogBodyContext.js.map +0 -1
  49. package/dist/components/BitkitDialog/DialogInner.d.ts +0 -25
  50. package/dist/components/BitkitDialog/DialogInner.js +0 -66
  51. package/dist/components/BitkitDialog/DialogInner.js.map +0 -1
  52. package/dist/components/BitkitDialog/DialogShell.d.ts +0 -24
  53. package/dist/components/BitkitDialog/DialogShell.js +0 -32
  54. package/dist/components/BitkitDialog/DialogShell.js.map +0 -1
  55. package/dist/components/BitkitDialog/StepperContext.d.ts +0 -16
  56. package/dist/components/BitkitDialog/StepperContext.js +0 -11
  57. package/dist/components/BitkitDialog/StepperContext.js.map +0 -1
package/AGENTS.md CHANGED
@@ -113,20 +113,7 @@ Bitkit components use consistent prop names across the library:
113
113
  <BitkitActionMenu.Item href="https://example.com" isExternal value="docs">Open docs</BitkitActionMenu.Item>
114
114
  ```
115
115
  - **Form components are flat** — `BitkitTextInput`, `BitkitSelect`, `BitkitCombobox`, etc. expose `label`, `errorText`, `helperText`, etc. directly as props. No need to wrap in a separate field component.
116
- - **Three dialog components, one shell** — pick by intent, never reach for low-level dialog primitives (there are none exported):
117
- - `BitkitDialog` — header (title + close) + body (`children`) + footer. The body is the dialog's `children`. The footer is two slot props: `footerButtons` (action buttons, auto-wrapped in the standard right-aligned row — no manual wrapper) and `footerContent` (arbitrary content rendered raw, e.g. an inline `BitkitAlert`). Both can be combined (content first, then buttons); omit both for a passive dialog with no footer.
118
- - `BitkitFormDialog` — same API as `BitkitDialog`, but the whole content is a `<form>`, so a `type="submit"` button in `footerButtons` submits natively. Accepts form props (`onSubmit`, `method`, …).
119
- - `BitkitStepperDialog` — a multi-step dialog. Pass `BitkitStepperDialog.Step` children (each with `label` for the steps header, `title`/`description` for the step body). It owns the step state and auto-renders the steps header; wire footer navigation via the `useStepperDialog()` hook (`{ step, setStep, next, prev, goTo, isFirst, isLast, totalSteps }`) from a component rendered in the footer slot. Controlled via `step`/`onStepChange`, or uncontrolled via `defaultStep`.
120
- ```tsx
121
- <BitkitDialog footerButtons={<><Button variant="secondary">Cancel</Button><Button variant="primary">Save</Button></>} open={open} onOpenChange={…} title="Title">Body</BitkitDialog>
122
- <BitkitFormDialog onSubmit={handleSubmit} open={open} onOpenChange={…} title="Edit" footerButtons={<Button type="submit">Save</Button>}>…fields…</BitkitFormDialog>
123
- <BitkitStepperDialog footerContent={<StepperNav />} title="Wizard" trigger={<Button>Open</Button>}>
124
- <BitkitStepperDialog.Step label="Account" title="Create account">…</BitkitStepperDialog.Step>
125
- <BitkitStepperDialog.Step label="Confirm" title="Confirm">…</BitkitStepperDialog.Step>
126
- </BitkitStepperDialog>
127
- ```
128
- For closing on click, use controlled `open`/`onOpenChange`, or wrap a button in Chakra's `Dialog.ActionTrigger`. For a fully custom dialog, compose raw Chakra `Dialog.*` atoms directly.
129
- - **Dialog non-dismissible + post-close callback** — works on all three: pass `closable={false}` to make the dialog fully non-dismissible (the close button is rendered but disabled, ESC is blocked, outside clicks are ignored — the only way out is an explicit footer action). Pass `onExitComplete` to run code after the close animation finishes (navigation, focus restoration, cleanup):
116
+ - **`BitkitDialog` non-dismissible + post-close callback** — pass `closable={false}` to make the dialog fully non-dismissible: the close button is rendered but disabled (kept for layout consistency), ESC is blocked, and outside clicks are ignored. The only way out is an explicit footer action. Pass `onExitComplete` to run code after the close animation finishes (navigation, focus restoration, cleanup):
130
117
  ```tsx
131
118
  <BitkitDialog closable={false} open={open} onOpenChange={…} title="Action required">…</BitkitDialog>
132
119
  <BitkitDialog open={open} onExitComplete={() => navigate('/next')} onOpenChange={…} title="…">…</BitkitDialog>
@@ -158,7 +145,7 @@ Bitkit components use consistent prop names across the library:
158
145
  This holds for form fields (`BitkitTextInput`, `BitkitSelect`, `BitkitNativeSelect`, `BitkitCombobox`, etc.), buttons (`BitkitButton`, `BitkitIconButton`, etc.), and most other components — they all forward Chakra style props through to the rendered root element.
159
146
 
160
147
  **Exceptions** — a few component groups intentionally own their own layout and don't accept arbitrary style props from outside:
161
- - Page-level overlays: `BitkitDialog`, `BitkitFormDialog`, `BitkitStepperDialog`, `BitkitDrawer`, `BitkitCalendar` — use the component's own sizing API (`size`, `maxHeight`, etc.).
148
+ - Page-level overlays: `BitkitDialog`, `BitkitDrawer`, `BitkitCalendar` — use the component's own sizing API (`size`, `maxHeight`, etc.).
162
149
  - Floating positioned components: `BitkitTooltip`, `BitkitLabelTooltip`, `BitkitDefinitionTooltip`, `BitkitOverflowTooltip`, `BitkitToast`, `BitkitSelectMenu`, `BitkitMultiselectMenu` — their layout is positioned automatically; pass styling via the component's own props instead of a wrapper.
163
150
 
164
151
  > **For everything else, if a style prop doesn't take effect on a Bitkit component, that's a bug in the component, not a styling task.** Stop, tell the user something looks off in Bitkit so they can flag it to the Bitkit team — don't quietly add a `<Box>` workaround. Each silent workaround hides a regression and bakes the wrapper pattern into the codebase.
@@ -1,10 +1,9 @@
1
1
  import { Dialog } from '@chakra-ui/react/dialog';
2
2
  import { ReactNode } from 'react';
3
+ import { BitkitDialogHeaderProps } from './BitkitDialogHeader';
3
4
  export interface BitkitDialogProps {
4
5
  children?: ReactNode;
5
6
  closable?: boolean;
6
- footerButtons?: ReactNode;
7
- footerContent?: ReactNode;
8
7
  headerLabel?: string;
9
8
  maxHeight?: string;
10
9
  onExitComplete?: () => void;
@@ -16,14 +15,28 @@ export interface BitkitDialogProps {
16
15
  scrollBehavior?: 'inside' | 'outside';
17
16
  showScrollGradient?: boolean;
18
17
  size?: 'sm' | 'md' | 'lg' | 'full';
18
+ step?: number;
19
19
  title: ReactNode;
20
20
  trigger?: ReactNode;
21
21
  variant?: 'overflowContent';
22
22
  }
23
23
  declare const _default: {
24
- ({ children, closable, footerButtons, footerContent, headerLabel, maxHeight, onExitComplete, onOpenChange, open, preventScroll, scrollBehavior, showScrollGradient, size, title, trigger, variant, }: BitkitDialogProps): import("react").JSX.Element;
24
+ ({ children, closable, headerLabel, maxHeight, onExitComplete, onOpenChange, open, preventScroll, scrollBehavior: scrollBehaviorProp, showScrollGradient, size, step, title, trigger, variant, }: BitkitDialogProps): import("react").JSX.Element;
25
25
  displayName: string;
26
26
  } & {
27
27
  ActionTrigger: import('react').ForwardRefExoticComponent<Dialog.ActionTriggerProps & import('react').RefAttributes<HTMLButtonElement>>;
28
+ Body: ({ children, ...rest }: import('./BitkitDialogBody').BitkitDialogBodyProps) => import("react").JSX.Element;
29
+ Buttons: import('react').ForwardRefExoticComponent<import('@chakra-ui/react').BoxProps & import('react').RefAttributes<HTMLDivElement>>;
30
+ Content: ({ maxHeight, ...inner }: import('./BitkitDialogContent').BitkitDialogContentProps) => import("react").JSX.Element;
31
+ Footer: import('react').ForwardRefExoticComponent<Dialog.FooterProps & import('react').RefAttributes<HTMLDivElement>>;
32
+ FormContent: import('react').ForwardRefExoticComponent<import('./BitkitDialogFormContent').BitkitDialogFormContentProps & import('react').RefAttributes<HTMLFormElement>>;
33
+ Header: {
34
+ ({ children }: BitkitDialogHeaderProps): import("react").JSX.Element;
35
+ displayName: string;
36
+ };
37
+ Step: {
38
+ (props: import('./BitkitDialogStep').BitkitDialogStepProps): import("react").JSX.Element | null;
39
+ displayName: string;
40
+ };
28
41
  };
29
42
  export default _default;
@@ -1,36 +1,59 @@
1
1
  import { withSubComponents } from "../../utilities/withSubComponents.js";
2
- import DialogInner from "./DialogInner.js";
3
- import DialogShell from "./DialogShell.js";
4
- import { jsx } from "react/jsx-runtime";
2
+ import BitkitDialogStep from "./BitkitDialogStep.js";
3
+ import BitkitDialogBody from "./BitkitDialogBody.js";
4
+ import BitkitDialogButtons from "./BitkitDialogButtons.js";
5
+ import BitkitDialogContent from "./BitkitDialogContent.js";
6
+ import BitkitDialogFormContent from "./BitkitDialogFormContent.js";
7
+ import BitkitDialogHeader from "./BitkitDialogHeader.js";
8
+ import BitkitDialogRoot from "./BitkitDialogRoot.js";
9
+ import { Children, isValidElement } from "react";
10
+ import { jsx, jsxs } from "react/jsx-runtime";
11
+ import { Portal } from "@chakra-ui/react/portal";
5
12
  import { Dialog } from "@chakra-ui/react/dialog";
6
13
  //#region lib/components/BitkitDialog/BitkitDialog.tsx
7
- var BitkitDialog = ({ children, closable = true, footerButtons, footerContent, headerLabel, maxHeight, onExitComplete, onOpenChange, open, preventScroll, scrollBehavior, showScrollGradient, size, title, trigger, variant }) => /* @__PURE__ */ jsx(DialogShell, {
8
- closable,
9
- onExitComplete,
10
- onOpenChange,
11
- open,
12
- preventScroll,
13
- scrollBehavior,
14
- size,
15
- trigger,
16
- variant,
17
- children: /* @__PURE__ */ jsx(Dialog.Content, {
18
- maxHeight,
19
- children: /* @__PURE__ */ jsx(DialogInner, {
14
+ var BitkitDialog = ({ children, closable = true, headerLabel, maxHeight, onExitComplete, onOpenChange, open, preventScroll, scrollBehavior: scrollBehaviorProp, showScrollGradient, size, step = 0, title, trigger, variant }) => {
15
+ const scrollBehavior = variant === "overflowContent" ? "inside" : scrollBehaviorProp;
16
+ const childrenArray = Children.toArray(children);
17
+ const headerChild = childrenArray.find((child) => isValidElement(child) && child.type === BitkitDialogHeader);
18
+ const bodyChildren = childrenArray.filter((child) => !(isValidElement(child) && child.type === BitkitDialogHeader));
19
+ const stepHeader = isValidElement(headerChild) ? headerChild.props.children : void 0;
20
+ return /* @__PURE__ */ jsxs(BitkitDialogRoot, {
21
+ closeOnEscape: closable,
22
+ onExitComplete,
23
+ onOpenChange,
24
+ open,
25
+ preventScroll,
26
+ scrollBehavior,
27
+ size,
28
+ variant,
29
+ children: [trigger && /* @__PURE__ */ jsx(Dialog.Trigger, {
30
+ asChild: true,
31
+ children: trigger
32
+ }), /* @__PURE__ */ jsxs(Portal, { children: [/* @__PURE__ */ jsx(Dialog.Backdrop, {}), /* @__PURE__ */ jsx(Dialog.Positioner, { children: /* @__PURE__ */ jsx(BitkitDialogContent, {
20
33
  closable,
21
- footerButtons,
22
- footerContent,
23
34
  headerLabel,
35
+ maxHeight,
24
36
  scrollBehavior,
25
37
  showScrollGradient,
38
+ step,
39
+ stepHeader,
26
40
  title,
27
41
  variant,
28
- children
29
- })
30
- })
31
- });
42
+ children: bodyChildren
43
+ }) })] })]
44
+ });
45
+ };
32
46
  BitkitDialog.displayName = "BitkitDialog";
33
- var BitkitDialog_default = withSubComponents(BitkitDialog, { ActionTrigger: Dialog.ActionTrigger });
47
+ var BitkitDialog_default = withSubComponents(BitkitDialog, {
48
+ ActionTrigger: Dialog.ActionTrigger,
49
+ Body: BitkitDialogBody,
50
+ Buttons: BitkitDialogButtons,
51
+ Content: BitkitDialogContent,
52
+ Footer: Dialog.Footer,
53
+ FormContent: BitkitDialogFormContent,
54
+ Header: BitkitDialogHeader,
55
+ Step: BitkitDialogStep
56
+ });
34
57
  //#endregion
35
58
  export { BitkitDialog_default as default };
36
59
 
@@ -1 +1 @@
1
- {"version":3,"file":"BitkitDialog.js","names":[],"sources":["../../../lib/components/BitkitDialog/BitkitDialog.tsx"],"sourcesContent":["import { Dialog } from '@chakra-ui/react/dialog';\nimport { type ReactNode } from 'react';\n\nimport { withSubComponents } from '../../utilities/withSubComponents';\nimport DialogInner from './DialogInner';\nimport DialogShell from './DialogShell';\n\nexport interface BitkitDialogProps {\n children?: ReactNode;\n closable?: boolean;\n footerButtons?: ReactNode;\n footerContent?: ReactNode;\n headerLabel?: string;\n maxHeight?: string;\n onExitComplete?: () => void;\n onOpenChange?: (details: { open: boolean }) => void;\n open?: boolean;\n preventScroll?: boolean;\n scrollBehavior?: 'inside' | 'outside';\n showScrollGradient?: boolean;\n size?: 'sm' | 'md' | 'lg' | 'full';\n title: ReactNode;\n trigger?: ReactNode;\n variant?: 'overflowContent';\n}\n\nconst BitkitDialog = ({\n children,\n closable = true,\n footerButtons,\n footerContent,\n headerLabel,\n maxHeight,\n onExitComplete,\n onOpenChange,\n open,\n preventScroll,\n scrollBehavior,\n showScrollGradient,\n size,\n title,\n trigger,\n variant,\n}: BitkitDialogProps) => (\n <DialogShell\n closable={closable}\n onExitComplete={onExitComplete}\n onOpenChange={onOpenChange}\n open={open}\n preventScroll={preventScroll}\n scrollBehavior={scrollBehavior}\n size={size}\n trigger={trigger}\n variant={variant}\n >\n <Dialog.Content maxHeight={maxHeight}>\n <DialogInner\n closable={closable}\n footerButtons={footerButtons}\n footerContent={footerContent}\n headerLabel={headerLabel}\n scrollBehavior={scrollBehavior}\n showScrollGradient={showScrollGradient}\n title={title}\n variant={variant}\n >\n {children}\n </DialogInner>\n </Dialog.Content>\n </DialogShell>\n);\n\nBitkitDialog.displayName = 'BitkitDialog';\n\nexport default withSubComponents(BitkitDialog, { ActionTrigger: Dialog.ActionTrigger });\n"],"mappings":";;;;;;AA0BA,IAAM,gBAAgB,EACpB,UACA,WAAW,MACX,eACA,eACA,aACA,WACA,gBACA,cACA,MACA,eACA,gBACA,oBACA,MACA,OACA,SACA,cAEA,oBAAC,aAAD;CACY;CACM;CACF;CACR;CACS;CACC;CACV;CACG;CACA;WAET,oBAAC,OAAO,SAAR;EAA2B;YACzB,oBAAC,aAAD;GACY;GACK;GACA;GACF;GACG;GACI;GACb;GACE;GAER;EACU,CAAA;CACC,CAAA;AACL,CAAA;AAGf,aAAa,cAAc;AAE3B,IAAA,uBAAe,kBAAkB,cAAc,EAAE,eAAe,OAAO,cAAc,CAAC"}
1
+ {"version":3,"file":"BitkitDialog.js","names":[],"sources":["../../../lib/components/BitkitDialog/BitkitDialog.tsx"],"sourcesContent":["import { Dialog } from '@chakra-ui/react/dialog';\nimport { Portal } from '@chakra-ui/react/portal';\nimport { Children, isValidElement, type ReactNode } from 'react';\n\nimport { withSubComponents } from '../../utilities/withSubComponents';\nimport BitkitDialogBody from './BitkitDialogBody';\nimport BitkitDialogButtons from './BitkitDialogButtons';\nimport BitkitDialogContent from './BitkitDialogContent';\nimport BitkitDialogFormContent from './BitkitDialogFormContent';\nimport BitkitDialogHeader, { type BitkitDialogHeaderProps } from './BitkitDialogHeader';\nimport BitkitDialogRoot from './BitkitDialogRoot';\nimport BitkitDialogStep from './BitkitDialogStep';\n\nexport interface BitkitDialogProps {\n children?: ReactNode;\n closable?: boolean;\n headerLabel?: string;\n maxHeight?: string;\n onExitComplete?: () => void;\n onOpenChange?: (details: { open: boolean }) => void;\n open?: boolean;\n preventScroll?: boolean;\n scrollBehavior?: 'inside' | 'outside';\n showScrollGradient?: boolean;\n size?: 'sm' | 'md' | 'lg' | 'full';\n step?: number;\n title: ReactNode;\n trigger?: ReactNode;\n variant?: 'overflowContent';\n}\n\nconst BitkitDialog = ({\n children,\n closable = true,\n headerLabel,\n maxHeight,\n onExitComplete,\n onOpenChange,\n open,\n preventScroll,\n scrollBehavior: scrollBehaviorProp,\n showScrollGradient,\n size,\n step = 0,\n title,\n trigger,\n variant,\n}: BitkitDialogProps) => {\n const scrollBehavior = variant === 'overflowContent' ? 'inside' : scrollBehaviorProp;\n\n const childrenArray = Children.toArray(children);\n const headerChild = childrenArray.find((child) => isValidElement(child) && child.type === BitkitDialogHeader);\n const bodyChildren = childrenArray.filter((child) => !(isValidElement(child) && child.type === BitkitDialogHeader));\n const stepHeader = isValidElement(headerChild) ? (headerChild.props as BitkitDialogHeaderProps).children : undefined;\n\n return (\n <BitkitDialogRoot\n closeOnEscape={closable}\n onExitComplete={onExitComplete}\n onOpenChange={onOpenChange}\n open={open}\n preventScroll={preventScroll}\n scrollBehavior={scrollBehavior}\n size={size}\n variant={variant}\n >\n {trigger && <Dialog.Trigger asChild>{trigger}</Dialog.Trigger>}\n <Portal>\n <Dialog.Backdrop />\n <Dialog.Positioner>\n <BitkitDialogContent\n closable={closable}\n headerLabel={headerLabel}\n maxHeight={maxHeight}\n scrollBehavior={scrollBehavior}\n showScrollGradient={showScrollGradient}\n step={step}\n stepHeader={stepHeader}\n title={title}\n variant={variant}\n >\n {bodyChildren}\n </BitkitDialogContent>\n </Dialog.Positioner>\n </Portal>\n </BitkitDialogRoot>\n );\n};\n\nBitkitDialog.displayName = 'BitkitDialog';\n\nexport default withSubComponents(BitkitDialog, {\n ActionTrigger: Dialog.ActionTrigger,\n Body: BitkitDialogBody,\n Buttons: BitkitDialogButtons,\n Content: BitkitDialogContent,\n Footer: Dialog.Footer,\n FormContent: BitkitDialogFormContent,\n Header: BitkitDialogHeader,\n Step: BitkitDialogStep,\n});\n"],"mappings":";;;;;;;;;;;;;AA+BA,IAAM,gBAAgB,EACpB,UACA,WAAW,MACX,aACA,WACA,gBACA,cACA,MACA,eACA,gBAAgB,oBAChB,oBACA,MACA,OAAO,GACP,OACA,SACA,cACuB;CACvB,MAAM,iBAAiB,YAAY,oBAAoB,WAAW;CAElE,MAAM,gBAAgB,SAAS,QAAQ,QAAQ;CAC/C,MAAM,cAAc,cAAc,MAAM,UAAU,eAAe,KAAK,KAAK,MAAM,SAAS,kBAAkB;CAC5G,MAAM,eAAe,cAAc,QAAQ,UAAU,EAAE,eAAe,KAAK,KAAK,MAAM,SAAS,mBAAmB;CAClH,MAAM,aAAa,eAAe,WAAW,IAAK,YAAY,MAAkC,WAAW,KAAA;CAE3G,OACE,qBAAC,kBAAD;EACE,eAAe;EACC;EACF;EACR;EACS;EACC;EACV;EACG;YARX,CAUG,WAAW,oBAAC,OAAO,SAAR;GAAgB,SAAA;aAAS;EAAwB,CAAA,GAC7D,qBAAC,QAAD,EAAA,UAAA,CACE,oBAAC,OAAO,UAAR,CAAkB,CAAA,GAClB,oBAAC,OAAO,YAAR,EAAA,UACE,oBAAC,qBAAD;GACY;GACG;GACF;GACK;GACI;GACd;GACM;GACL;GACE;aAER;EACkB,CAAA,EACJ,CAAA,CACb,EAAA,CAAA,CACQ;;AAEtB;AAEA,aAAa,cAAc;AAE3B,IAAA,uBAAe,kBAAkB,cAAc;CAC7C,eAAe,OAAO;CACtB,MAAM;CACN,SAAS;CACT,SAAS;CACT,QAAQ,OAAO;CACf,aAAa;CACb,QAAQ;CACR,MAAM;AACR,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { Dialog } from '@chakra-ui/react/dialog';
2
+ interface DialogBodyContext {
3
+ scrollBehavior: 'inside' | 'outside';
4
+ showScrollGradient: boolean;
5
+ }
6
+ export type BitkitDialogBodyProps = Dialog.BodyProps;
7
+ export declare const DialogBodyContext: import('react').Context<DialogBodyContext>;
8
+ declare const BitkitDialogBody: ({ children, ...rest }: BitkitDialogBodyProps) => import("react").JSX.Element;
9
+ export default BitkitDialogBody;
@@ -1,10 +1,11 @@
1
1
  import IconArrowDown from "../../icons/IconArrowDown.js";
2
+ import BitkitDialogStep from "./BitkitDialogStep.js";
2
3
  import { Box } from "@chakra-ui/react/box";
3
4
  import { chakra } from "@chakra-ui/react/styled-system";
4
- import { createContext, useCallback, useContext, useEffect, useRef, useState } from "react";
5
+ import { Children, cloneElement, createContext, isValidElement, useCallback, useContext, useEffect, useRef, useState } from "react";
5
6
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
6
7
  import { Dialog, useDialogContext, useDialogStyles } from "@chakra-ui/react/dialog";
7
- //#region lib/components/BitkitDialog/DialogBodyContext.tsx
8
+ //#region lib/components/BitkitDialog/BitkitDialogBody.tsx
8
9
  var DialogBodyContext = createContext({
9
10
  scrollBehavior: "outside",
10
11
  showScrollGradient: true
@@ -57,22 +58,22 @@ var ScrollableDialogBody = ({ children, ...props }) => {
57
58
  })] })]
58
59
  });
59
60
  };
60
- /**
61
- * Scroll-aware dialog body. Reads {@link DialogBodyContext} to decide whether the body scrolls
62
- * internally (`inside` → scroll button + optional gradient) or the whole dialog scrolls (`outside`).
63
- */
64
- var DialogBody = ({ children, ...rest }) => {
61
+ var BitkitDialogBody = ({ children, ...rest }) => {
65
62
  const { scrollBehavior } = useContext(DialogBodyContext);
63
+ const mappedChildren = Children.map(children, (child, index) => {
64
+ if (isValidElement(child) && child.type === BitkitDialogStep) return cloneElement(child, { _index: index });
65
+ return child;
66
+ });
66
67
  if (scrollBehavior === "inside") return /* @__PURE__ */ jsx(ScrollableDialogBody, {
67
68
  ...rest,
68
- children
69
+ children: mappedChildren
69
70
  });
70
71
  return /* @__PURE__ */ jsx(Dialog.Body, {
71
72
  ...rest,
72
- children
73
+ children: mappedChildren
73
74
  });
74
75
  };
75
76
  //#endregion
76
- export { DialogBodyContext, DialogBody as default };
77
+ export { DialogBodyContext, BitkitDialogBody as default };
77
78
 
78
- //# sourceMappingURL=DialogBodyContext.js.map
79
+ //# sourceMappingURL=BitkitDialogBody.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BitkitDialogBody.js","names":[],"sources":["../../../lib/components/BitkitDialog/BitkitDialogBody.tsx"],"sourcesContent":["import { Box } from '@chakra-ui/react/box';\nimport { Dialog, useDialogContext, useDialogStyles } from '@chakra-ui/react/dialog';\nimport { chakra } from '@chakra-ui/react/styled-system';\nimport {\n Children,\n cloneElement,\n createContext,\n isValidElement,\n type ReactElement,\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport { IconArrowDown } from '../../icons';\nimport BitkitDialogStep from './BitkitDialogStep';\n\ninterface DialogBodyContext {\n scrollBehavior: 'inside' | 'outside';\n showScrollGradient: boolean;\n}\n\nexport type BitkitDialogBodyProps = Dialog.BodyProps;\n\nexport const DialogBodyContext = createContext<DialogBodyContext>({\n scrollBehavior: 'outside',\n showScrollGradient: true,\n});\n\nconst ScrollableDialogBody = ({ children, ...props }: Dialog.BodyProps) => {\n const { showScrollGradient } = useContext(DialogBodyContext);\n const styles = useDialogStyles();\n const { open } = useDialogContext();\n const contentRef = useRef<HTMLDivElement>(null);\n const [isScrollButtonVisible, setIsScrollButtonVisible] = useState(false);\n\n const updateScrollButtonVisibility = useCallback(() => {\n const content = contentRef.current;\n if (!content) {\n setIsScrollButtonVisible(false);\n return;\n }\n const didScrollToBottom = content.scrollTop >= content.scrollHeight - content.offsetHeight - 1;\n setIsScrollButtonVisible(!didScrollToBottom);\n }, []);\n\n useEffect(() => {\n const content = contentRef.current;\n if (!open || !content) return;\n\n content.addEventListener('scroll', updateScrollButtonVisibility);\n const resizeObserver = new ResizeObserver(updateScrollButtonVisibility);\n resizeObserver.observe(content);\n\n return () => {\n content.removeEventListener('scroll', updateScrollButtonVisibility);\n resizeObserver.disconnect();\n };\n }, [open, updateScrollButtonVisibility]);\n\n return (\n <Box css={styles.scrollBody}>\n <Dialog.Body ref={contentRef} {...props}>\n {children}\n </Dialog.Body>\n {isScrollButtonVisible && (\n <>\n {showScrollGradient && <Box css={styles.scrollGradient} />}\n <chakra.button\n aria-label=\"Scroll to bottom\"\n css={styles.scrollButton}\n type=\"button\"\n onClick={() => {\n contentRef.current?.scrollTo({ top: contentRef.current.scrollHeight, behavior: 'smooth' });\n }}\n >\n <IconArrowDown color=\"icon/tertiary\" size=\"16\" />\n </chakra.button>\n </>\n )}\n </Box>\n );\n};\n\nconst BitkitDialogBody = ({ children, ...rest }: BitkitDialogBodyProps) => {\n const { scrollBehavior } = useContext(DialogBodyContext);\n\n const mappedChildren = Children.map(children, (child, index) => {\n if (isValidElement(child) && child.type === BitkitDialogStep) {\n return cloneElement(child as ReactElement<{ _index?: number }>, { _index: index });\n }\n return child;\n });\n\n if (scrollBehavior === 'inside') {\n return <ScrollableDialogBody {...rest}>{mappedChildren}</ScrollableDialogBody>;\n }\n return <Dialog.Body {...rest}>{mappedChildren}</Dialog.Body>;\n};\n\nexport default BitkitDialogBody;\n"],"mappings":";;;;;;;;AA0BA,IAAa,oBAAoB,cAAiC;CAChE,gBAAgB;CAChB,oBAAoB;AACtB,CAAC;AAED,IAAM,wBAAwB,EAAE,UAAU,GAAG,YAA8B;CACzE,MAAM,EAAE,uBAAuB,WAAW,iBAAiB;CAC3D,MAAM,SAAS,gBAAgB;CAC/B,MAAM,EAAE,SAAS,iBAAiB;CAClC,MAAM,aAAa,OAAuB,IAAI;CAC9C,MAAM,CAAC,uBAAuB,4BAA4B,SAAS,KAAK;CAExE,MAAM,+BAA+B,kBAAkB;EACrD,MAAM,UAAU,WAAW;EAC3B,IAAI,CAAC,SAAS;GACZ,yBAAyB,KAAK;GAC9B;EACF;EAEA,yBAAyB,EADC,QAAQ,aAAa,QAAQ,eAAe,QAAQ,eAAe,EAClD;CAC7C,GAAG,CAAC,CAAC;CAEL,gBAAgB;EACd,MAAM,UAAU,WAAW;EAC3B,IAAI,CAAC,QAAQ,CAAC,SAAS;EAEvB,QAAQ,iBAAiB,UAAU,4BAA4B;EAC/D,MAAM,iBAAiB,IAAI,eAAe,4BAA4B;EACtE,eAAe,QAAQ,OAAO;EAE9B,aAAa;GACX,QAAQ,oBAAoB,UAAU,4BAA4B;GAClE,eAAe,WAAW;EAC5B;CACF,GAAG,CAAC,MAAM,4BAA4B,CAAC;CAEvC,OACE,qBAAC,KAAD;EAAK,KAAK,OAAO;YAAjB,CACE,oBAAC,OAAO,MAAR;GAAa,KAAK;GAAY,GAAI;GAC/B;EACU,CAAA,GACZ,yBACC,qBAAA,YAAA,EAAA,UAAA,CACG,sBAAsB,oBAAC,KAAD,EAAK,KAAK,OAAO,eAAiB,CAAA,GACzD,oBAAC,OAAO,QAAR;GACE,cAAW;GACX,KAAK,OAAO;GACZ,MAAK;GACL,eAAe;IACb,WAAW,SAAS,SAAS;KAAE,KAAK,WAAW,QAAQ;KAAc,UAAU;IAAS,CAAC;GAC3F;aAEA,oBAAC,eAAD;IAAe,OAAM;IAAgB,MAAK;GAAM,CAAA;EACnC,CAAA,CACf,EAAA,CAAA,CAED;;AAET;AAEA,IAAM,oBAAoB,EAAE,UAAU,GAAG,WAAkC;CACzE,MAAM,EAAE,mBAAmB,WAAW,iBAAiB;CAEvD,MAAM,iBAAiB,SAAS,IAAI,WAAW,OAAO,UAAU;EAC9D,IAAI,eAAe,KAAK,KAAK,MAAM,SAAS,kBAC1C,OAAO,aAAa,OAA4C,EAAE,QAAQ,MAAM,CAAC;EAEnF,OAAO;CACT,CAAC;CAED,IAAI,mBAAmB,UACrB,OAAO,oBAAC,sBAAD;EAAsB,GAAI;YAAO;CAAqC,CAAA;CAE/E,OAAO,oBAAC,OAAO,MAAR;EAAa,GAAI;YAAO;CAA4B,CAAA;AAC7D"}
@@ -0,0 +1,4 @@
1
+ import { BoxProps } from '@chakra-ui/react/box';
2
+ export type BitkitDialogButtonsProps = BoxProps;
3
+ declare const BitkitDialogButtons: import('react').ForwardRefExoticComponent<BoxProps & import('react').RefAttributes<HTMLDivElement>>;
4
+ export default BitkitDialogButtons;
@@ -0,0 +1,17 @@
1
+ import { Box } from "@chakra-ui/react/box";
2
+ import { forwardRef } from "react";
3
+ import { jsx } from "react/jsx-runtime";
4
+ //#region lib/components/BitkitDialog/BitkitDialogButtons.tsx
5
+ var BitkitDialogButtons = forwardRef((props, ref) => /* @__PURE__ */ jsx(Box, {
6
+ ref,
7
+ display: "flex",
8
+ gap: "16",
9
+ justifyContent: "flex-end",
10
+ paddingBlockStart: "24",
11
+ ...props
12
+ }));
13
+ BitkitDialogButtons.displayName = "BitkitDialogButtons";
14
+ //#endregion
15
+ export { BitkitDialogButtons as default };
16
+
17
+ //# sourceMappingURL=BitkitDialogButtons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BitkitDialogButtons.js","names":[],"sources":["../../../lib/components/BitkitDialog/BitkitDialogButtons.tsx"],"sourcesContent":["import { Box, type BoxProps } from '@chakra-ui/react/box';\nimport { forwardRef } from 'react';\n\nexport type BitkitDialogButtonsProps = BoxProps;\n\nconst BitkitDialogButtons = forwardRef<HTMLDivElement, BitkitDialogButtonsProps>((props, ref) => (\n <Box ref={ref} display=\"flex\" gap=\"16\" justifyContent=\"flex-end\" paddingBlockStart=\"24\" {...props} />\n));\n\nBitkitDialogButtons.displayName = 'BitkitDialogButtons';\n\nexport default BitkitDialogButtons;\n"],"mappings":";;;;AAKA,IAAM,sBAAsB,YAAsD,OAAO,QACvF,oBAAC,KAAD;CAAU;CAAK,SAAQ;CAAO,KAAI;CAAK,gBAAe;CAAW,mBAAkB;CAAK,GAAI;AAAQ,CAAA,CACrG;AAED,oBAAoB,cAAc"}
@@ -0,0 +1,27 @@
1
+ import { ReactNode } from 'react';
2
+ interface DialogContentInnerProps {
3
+ children?: ReactNode;
4
+ closable?: boolean;
5
+ headerLabel?: string;
6
+ scrollBehavior?: 'inside' | 'outside';
7
+ showScrollGradient?: boolean;
8
+ step?: number;
9
+ stepHeader?: ReactNode;
10
+ title: ReactNode;
11
+ variant?: 'overflowContent';
12
+ }
13
+ export declare const DialogContentInner: ({ children, closable, headerLabel, scrollBehavior: scrollBehaviorProp, showScrollGradient, step, stepHeader, title, variant, }: DialogContentInnerProps) => import("react").JSX.Element;
14
+ export interface BitkitDialogContentProps {
15
+ children?: ReactNode;
16
+ closable?: boolean;
17
+ headerLabel?: string;
18
+ maxHeight?: string;
19
+ scrollBehavior?: 'inside' | 'outside';
20
+ showScrollGradient?: boolean;
21
+ step?: number;
22
+ stepHeader?: ReactNode;
23
+ title: ReactNode;
24
+ variant?: 'overflowContent';
25
+ }
26
+ declare const BitkitDialogContent: ({ maxHeight, ...inner }: BitkitDialogContentProps) => import("react").JSX.Element;
27
+ export default BitkitDialogContent;
@@ -0,0 +1,57 @@
1
+ import BitkitCloseButton from "../BitkitCloseButton/BitkitCloseButton.js";
2
+ import BitkitPortalContext from "../../utilities/BitkitPortalContext.js";
3
+ import { BitkitDialogStepProvider } from "./BitkitDialogStepContext.js";
4
+ import { DialogBodyContext } from "./BitkitDialogBody.js";
5
+ import { Box } from "@chakra-ui/react/box";
6
+ import { chakra } from "@chakra-ui/react/styled-system";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ import { Dialog, useDialogStyles } from "@chakra-ui/react/dialog";
9
+ //#region lib/components/BitkitDialog/BitkitDialogContent.tsx
10
+ var PORTAL_DISABLED = { disablePortal: true };
11
+ var DialogContentInner = ({ children, closable = true, headerLabel, scrollBehavior: scrollBehaviorProp = "outside", showScrollGradient = true, step = 0, stepHeader, title, variant }) => {
12
+ const scrollBehavior = variant === "overflowContent" ? "inside" : scrollBehaviorProp;
13
+ const styles = useDialogStyles();
14
+ return /* @__PURE__ */ jsx(BitkitPortalContext.Provider, {
15
+ value: PORTAL_DISABLED,
16
+ children: /* @__PURE__ */ jsx(BitkitDialogStepProvider, {
17
+ value: { step },
18
+ children: /* @__PURE__ */ jsxs(DialogBodyContext.Provider, {
19
+ value: {
20
+ scrollBehavior,
21
+ showScrollGradient
22
+ },
23
+ children: [/* @__PURE__ */ jsxs(Dialog.Header, { children: [
24
+ /* @__PURE__ */ jsxs(Box, {
25
+ display: "flex",
26
+ flexDirection: "column",
27
+ gap: "4",
28
+ children: [headerLabel && /* @__PURE__ */ jsx(chakra.p, {
29
+ css: styles.label,
30
+ children: headerLabel
31
+ }), /* @__PURE__ */ jsx(Dialog.Title, { children: title })]
32
+ }),
33
+ !!stepHeader && /* @__PURE__ */ jsx(Box, {
34
+ css: styles.stepHeader,
35
+ children: stepHeader
36
+ }),
37
+ /* @__PURE__ */ jsx(Dialog.CloseTrigger, {
38
+ asChild: true,
39
+ children: /* @__PURE__ */ jsx(BitkitCloseButton, {
40
+ disabled: !closable,
41
+ size: variant === "overflowContent" ? "xs" : "md",
42
+ type: "button"
43
+ })
44
+ })
45
+ ] }), children]
46
+ })
47
+ })
48
+ });
49
+ };
50
+ var BitkitDialogContent = ({ maxHeight, ...inner }) => /* @__PURE__ */ jsx(Dialog.Content, {
51
+ maxHeight,
52
+ children: /* @__PURE__ */ jsx(DialogContentInner, { ...inner })
53
+ });
54
+ //#endregion
55
+ export { DialogContentInner, BitkitDialogContent as default };
56
+
57
+ //# sourceMappingURL=BitkitDialogContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BitkitDialogContent.js","names":[],"sources":["../../../lib/components/BitkitDialog/BitkitDialogContent.tsx"],"sourcesContent":["import { Box } from '@chakra-ui/react/box';\nimport { Dialog, useDialogStyles } from '@chakra-ui/react/dialog';\nimport { chakra } from '@chakra-ui/react/styled-system';\nimport { type ReactNode } from 'react';\n\nimport BitkitPortalContext from '../../utilities/BitkitPortalContext';\nimport BitkitCloseButton from '../BitkitCloseButton/BitkitCloseButton';\n\nconst PORTAL_DISABLED = { disablePortal: true };\nimport { DialogBodyContext } from './BitkitDialogBody';\nimport { BitkitDialogStepProvider } from './BitkitDialogStepContext';\n\ninterface DialogContentInnerProps {\n children?: ReactNode;\n closable?: boolean;\n headerLabel?: string;\n scrollBehavior?: 'inside' | 'outside';\n showScrollGradient?: boolean;\n step?: number;\n stepHeader?: ReactNode;\n title: ReactNode;\n variant?: 'overflowContent';\n}\n\nexport const DialogContentInner = ({\n children,\n closable = true,\n headerLabel,\n scrollBehavior: scrollBehaviorProp = 'outside',\n showScrollGradient = true,\n step = 0,\n stepHeader,\n title,\n variant,\n}: DialogContentInnerProps) => {\n const scrollBehavior = variant === 'overflowContent' ? 'inside' : scrollBehaviorProp;\n const styles = useDialogStyles();\n\n return (\n <BitkitPortalContext.Provider value={PORTAL_DISABLED}>\n <BitkitDialogStepProvider value={{ step }}>\n <DialogBodyContext.Provider value={{ scrollBehavior, showScrollGradient }}>\n <Dialog.Header>\n <Box display=\"flex\" flexDirection=\"column\" gap=\"4\">\n {headerLabel && <chakra.p css={styles.label}>{headerLabel}</chakra.p>}\n <Dialog.Title>{title}</Dialog.Title>\n </Box>\n {!!stepHeader && <Box css={styles.stepHeader}>{stepHeader}</Box>}\n <Dialog.CloseTrigger asChild>\n <BitkitCloseButton\n disabled={!closable}\n size={variant === 'overflowContent' ? 'xs' : 'md'}\n type=\"button\"\n />\n </Dialog.CloseTrigger>\n </Dialog.Header>\n {children}\n </DialogBodyContext.Provider>\n </BitkitDialogStepProvider>\n </BitkitPortalContext.Provider>\n );\n};\n\nexport interface BitkitDialogContentProps {\n children?: ReactNode;\n closable?: boolean;\n headerLabel?: string;\n maxHeight?: string;\n scrollBehavior?: 'inside' | 'outside';\n showScrollGradient?: boolean;\n step?: number;\n stepHeader?: ReactNode;\n title: ReactNode;\n variant?: 'overflowContent';\n}\n\nconst BitkitDialogContent = ({ maxHeight, ...inner }: BitkitDialogContentProps) => (\n <Dialog.Content maxHeight={maxHeight}>\n <DialogContentInner {...inner} />\n </Dialog.Content>\n);\n\nexport default BitkitDialogContent;\n"],"mappings":";;;;;;;;;AAQA,IAAM,kBAAkB,EAAE,eAAe,KAAK;AAgB9C,IAAa,sBAAsB,EACjC,UACA,WAAW,MACX,aACA,gBAAgB,qBAAqB,WACrC,qBAAqB,MACrB,OAAO,GACP,YACA,OACA,cAC6B;CAC7B,MAAM,iBAAiB,YAAY,oBAAoB,WAAW;CAClE,MAAM,SAAS,gBAAgB;CAE/B,OACE,oBAAC,oBAAoB,UAArB;EAA8B,OAAO;YACnC,oBAAC,0BAAD;GAA0B,OAAO,EAAE,KAAK;aACtC,qBAAC,kBAAkB,UAAnB;IAA4B,OAAO;KAAE;KAAgB;IAAmB;cAAxE,CACE,qBAAC,OAAO,QAAR,EAAA,UAAA;KACE,qBAAC,KAAD;MAAK,SAAQ;MAAO,eAAc;MAAS,KAAI;gBAA/C,CACG,eAAe,oBAAC,OAAO,GAAR;OAAU,KAAK,OAAO;iBAAQ;MAAsB,CAAA,GACpE,oBAAC,OAAO,OAAR,EAAA,UAAe,MAAoB,CAAA,CAChC;;KACJ,CAAC,CAAC,cAAc,oBAAC,KAAD;MAAK,KAAK,OAAO;gBAAa;KAAgB,CAAA;KAC/D,oBAAC,OAAO,cAAR;MAAqB,SAAA;gBACnB,oBAAC,mBAAD;OACE,UAAU,CAAC;OACX,MAAM,YAAY,oBAAoB,OAAO;OAC7C,MAAK;MACN,CAAA;KACkB,CAAA;IACR,EAAA,CAAA,GACd,QACyB;;EACJ,CAAA;CACE,CAAA;AAElC;AAeA,IAAM,uBAAuB,EAAE,WAAW,GAAG,YAC3C,oBAAC,OAAO,SAAR;CAA2B;WACzB,oBAAC,oBAAD,EAAoB,GAAI,MAAQ,CAAA;AAClB,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { HTMLChakraProps } from '@chakra-ui/react/styled-system';
2
+ import { BitkitDialogContentProps } from './BitkitDialogContent';
3
+ export interface BitkitDialogFormContentProps extends BitkitDialogContentProps, Omit<HTMLChakraProps<'form'>, keyof BitkitDialogContentProps> {
4
+ }
5
+ declare const BitkitDialogFormContent: import('react').ForwardRefExoticComponent<BitkitDialogFormContentProps & import('react').RefAttributes<HTMLFormElement>>;
6
+ export default BitkitDialogFormContent;
@@ -0,0 +1,30 @@
1
+ import { DialogContentInner } from "./BitkitDialogContent.js";
2
+ import { chakra } from "@chakra-ui/react/styled-system";
3
+ import { forwardRef } from "react";
4
+ import { jsx } from "react/jsx-runtime";
5
+ import { Dialog } from "@chakra-ui/react/dialog";
6
+ //#region lib/components/BitkitDialog/BitkitDialogFormContent.tsx
7
+ var BitkitDialogFormContent = forwardRef(({ children, closable, headerLabel, maxHeight, scrollBehavior, showScrollGradient, step, stepHeader, title, variant, ...formProps }, ref) => /* @__PURE__ */ jsx(Dialog.Content, {
8
+ asChild: true,
9
+ maxHeight,
10
+ children: /* @__PURE__ */ jsx(chakra.form, {
11
+ ref,
12
+ ...formProps,
13
+ children: /* @__PURE__ */ jsx(DialogContentInner, {
14
+ closable,
15
+ headerLabel,
16
+ scrollBehavior,
17
+ showScrollGradient,
18
+ step,
19
+ stepHeader,
20
+ title,
21
+ variant,
22
+ children
23
+ })
24
+ })
25
+ }));
26
+ BitkitDialogFormContent.displayName = "BitkitDialogFormContent";
27
+ //#endregion
28
+ export { BitkitDialogFormContent as default };
29
+
30
+ //# sourceMappingURL=BitkitDialogFormContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BitkitDialogFormContent.js","names":[],"sources":["../../../lib/components/BitkitDialog/BitkitDialogFormContent.tsx"],"sourcesContent":["import { Dialog } from '@chakra-ui/react/dialog';\nimport { chakra, type HTMLChakraProps } from '@chakra-ui/react/styled-system';\nimport { forwardRef } from 'react';\n\nimport { type BitkitDialogContentProps, DialogContentInner } from './BitkitDialogContent';\n\nexport interface BitkitDialogFormContentProps\n extends BitkitDialogContentProps, Omit<HTMLChakraProps<'form'>, keyof BitkitDialogContentProps> {}\n\nconst BitkitDialogFormContent = forwardRef<HTMLFormElement, BitkitDialogFormContentProps>(\n (\n {\n children,\n closable,\n headerLabel,\n maxHeight,\n scrollBehavior,\n showScrollGradient,\n step,\n stepHeader,\n title,\n variant,\n ...formProps\n },\n ref,\n ) => (\n <Dialog.Content asChild maxHeight={maxHeight}>\n <chakra.form ref={ref} {...formProps}>\n <DialogContentInner\n closable={closable}\n headerLabel={headerLabel}\n scrollBehavior={scrollBehavior}\n showScrollGradient={showScrollGradient}\n step={step}\n stepHeader={stepHeader}\n title={title}\n variant={variant}\n >\n {children}\n </DialogContentInner>\n </chakra.form>\n </Dialog.Content>\n ),\n);\n\nBitkitDialogFormContent.displayName = 'BitkitDialogFormContent';\n\nexport default BitkitDialogFormContent;\n"],"mappings":";;;;;;AASA,IAAM,0BAA0B,YAE5B,EACE,UACA,UACA,aACA,WACA,gBACA,oBACA,MACA,YACA,OACA,SACA,GAAG,aAEL,QAEA,oBAAC,OAAO,SAAR;CAAgB,SAAA;CAAmB;WACjC,oBAAC,OAAO,MAAR;EAAkB;EAAK,GAAI;YACzB,oBAAC,oBAAD;GACY;GACG;GACG;GACI;GACd;GACM;GACL;GACE;GAER;EACiB,CAAA;CACT,CAAA;AACC,CAAA,CAEpB;AAEA,wBAAwB,cAAc"}
@@ -0,0 +1,9 @@
1
+ import { ReactNode } from 'react';
2
+ export interface BitkitDialogHeaderProps {
3
+ children: ReactNode;
4
+ }
5
+ declare const BitkitDialogHeader: {
6
+ ({ children }: BitkitDialogHeaderProps): import("react").JSX.Element;
7
+ displayName: string;
8
+ };
9
+ export default BitkitDialogHeader;
@@ -0,0 +1,8 @@
1
+ import { Fragment, jsx } from "react/jsx-runtime";
2
+ //#region lib/components/BitkitDialog/BitkitDialogHeader.tsx
3
+ var BitkitDialogHeader = ({ children }) => /* @__PURE__ */ jsx(Fragment, { children });
4
+ BitkitDialogHeader.displayName = "BitkitDialogHeader";
5
+ //#endregion
6
+ export { BitkitDialogHeader as default };
7
+
8
+ //# sourceMappingURL=BitkitDialogHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BitkitDialogHeader.js","names":[],"sources":["../../../lib/components/BitkitDialog/BitkitDialogHeader.tsx"],"sourcesContent":["import { type ReactNode } from 'react';\n\nexport interface BitkitDialogHeaderProps {\n children: ReactNode;\n}\n\nconst BitkitDialogHeader = ({ children }: BitkitDialogHeaderProps) => <>{children}</>;\nBitkitDialogHeader.displayName = 'BitkitDialogHeader';\nexport default BitkitDialogHeader;\n"],"mappings":";;AAMA,IAAM,sBAAsB,EAAE,eAAwC,oBAAA,UAAA,EAAG,SAAW,CAAA;AACpF,mBAAmB,cAAc"}
@@ -0,0 +1,6 @@
1
+ import { Dialog } from '@chakra-ui/react/dialog';
2
+ export type BitkitDialogRootProps = Dialog.RootProps & {
3
+ variant?: 'overflowContent';
4
+ };
5
+ declare const BitkitDialogRoot: ({ closeOnInteractOutside, preventScroll, ...props }: BitkitDialogRootProps) => import("react").JSX.Element;
6
+ export default BitkitDialogRoot;
@@ -0,0 +1,12 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { Dialog } from "@chakra-ui/react/dialog";
3
+ //#region lib/components/BitkitDialog/BitkitDialogRoot.tsx
4
+ var BitkitDialogRoot = ({ closeOnInteractOutside = false, preventScroll = true, ...props }) => /* @__PURE__ */ jsx(Dialog.Root, {
5
+ closeOnInteractOutside,
6
+ preventScroll,
7
+ ...props
8
+ });
9
+ //#endregion
10
+ export { BitkitDialogRoot as default };
11
+
12
+ //# sourceMappingURL=BitkitDialogRoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BitkitDialogRoot.js","names":[],"sources":["../../../lib/components/BitkitDialog/BitkitDialogRoot.tsx"],"sourcesContent":["import { Dialog } from '@chakra-ui/react/dialog';\n\nexport type BitkitDialogRootProps = Dialog.RootProps & {\n variant?: 'overflowContent';\n};\n\nconst BitkitDialogRoot = ({\n closeOnInteractOutside = false,\n preventScroll = true,\n ...props\n}: BitkitDialogRootProps) => (\n <Dialog.Root closeOnInteractOutside={closeOnInteractOutside} preventScroll={preventScroll} {...props} />\n);\n\nexport default BitkitDialogRoot;\n"],"mappings":";;;AAMA,IAAM,oBAAoB,EACxB,yBAAyB,OACzB,gBAAgB,MAChB,GAAG,YAEH,oBAAC,OAAO,MAAR;CAAqC;CAAuC;CAAe,GAAI;AAAQ,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { ReactNode } from 'react';
2
+ export interface BitkitDialogStepProps {
3
+ children?: ReactNode;
4
+ description?: string;
5
+ title: string;
6
+ }
7
+ declare const BitkitDialogStep: {
8
+ (props: BitkitDialogStepProps): import("react").JSX.Element | null;
9
+ displayName: string;
10
+ };
11
+ export default BitkitDialogStep;
@@ -1,13 +1,13 @@
1
+ import { useBitkitDialogStepContext } from "./BitkitDialogStepContext.js";
1
2
  import { chakra } from "@chakra-ui/react/styled-system";
2
3
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
4
  import { useDialogStyles } from "@chakra-ui/react/dialog";
4
- //#region lib/components/BitkitDialog/BitkitStepperDialogStep.tsx
5
- /**
6
- * A single step of a {@link BitkitStepperDialog}. Renders its `title`/`description` typography
7
- * followed by `children`. The parent only mounts the active step, so this never self-gates.
8
- */
9
- var BitkitStepperDialogStep = ({ children, description, title }) => {
5
+ //#region lib/components/BitkitDialog/BitkitDialogStep.tsx
6
+ var BitkitDialogStep = (props) => {
7
+ const { _index = 0, children, description, title } = props;
8
+ const step = useBitkitDialogStepContext()?.step ?? 0;
10
9
  const styles = useDialogStyles();
10
+ if (_index !== step) return null;
11
11
  return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs(chakra.div, {
12
12
  css: styles.stepTitleGroup,
13
13
  children: [/* @__PURE__ */ jsx(chakra.p, {
@@ -19,8 +19,8 @@ var BitkitStepperDialogStep = ({ children, description, title }) => {
19
19
  })]
20
20
  }), children] });
21
21
  };
22
- BitkitStepperDialogStep.displayName = "BitkitStepperDialogStep";
22
+ BitkitDialogStep.displayName = "BitkitDialogStep";
23
23
  //#endregion
24
- export { BitkitStepperDialogStep as default };
24
+ export { BitkitDialogStep as default };
25
25
 
26
- //# sourceMappingURL=BitkitStepperDialogStep.js.map
26
+ //# sourceMappingURL=BitkitDialogStep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BitkitDialogStep.js","names":[],"sources":["../../../lib/components/BitkitDialog/BitkitDialogStep.tsx"],"sourcesContent":["import { useDialogStyles } from '@chakra-ui/react/dialog';\nimport { chakra } from '@chakra-ui/react/styled-system';\nimport { type ReactNode } from 'react';\n\nimport { useBitkitDialogStepContext } from './BitkitDialogStepContext';\n\nexport interface BitkitDialogStepProps {\n children?: ReactNode;\n description?: string;\n title: string;\n}\n\ninterface BitkitDialogStepInternalProps extends BitkitDialogStepProps {\n _index?: number;\n}\n\nconst BitkitDialogStep = (props: BitkitDialogStepProps) => {\n const { _index = 0, children, description, title } = props as BitkitDialogStepInternalProps;\n const ctx = useBitkitDialogStepContext();\n const step = ctx?.step ?? 0;\n const styles = useDialogStyles();\n\n if (_index !== step) return null;\n\n return (\n <>\n <chakra.div css={styles.stepTitleGroup}>\n <chakra.p css={styles.stepTitle}>{title}</chakra.p>\n {description && <chakra.p css={styles.stepDescription}>{description}</chakra.p>}\n </chakra.div>\n {children}\n </>\n );\n};\n\nBitkitDialogStep.displayName = 'BitkitDialogStep';\nexport default BitkitDialogStep;\n"],"mappings":";;;;;AAgBA,IAAM,oBAAoB,UAAiC;CACzD,MAAM,EAAE,SAAS,GAAG,UAAU,aAAa,UAAU;CAErD,MAAM,OADM,2BACC,GAAK,QAAQ;CAC1B,MAAM,SAAS,gBAAgB;CAE/B,IAAI,WAAW,MAAM,OAAO;CAE5B,OACE,qBAAA,UAAA,EAAA,UAAA,CACE,qBAAC,OAAO,KAAR;EAAY,KAAK,OAAO;YAAxB,CACE,oBAAC,OAAO,GAAR;GAAU,KAAK,OAAO;aAAY;EAAgB,CAAA,GACjD,eAAe,oBAAC,OAAO,GAAR;GAAU,KAAK,OAAO;aAAkB;EAAsB,CAAA,CACpE;KACX,QACD,EAAA,CAAA;AAEN;AAEA,iBAAiB,cAAc"}
@@ -0,0 +1,5 @@
1
+ interface BitkitDialogStepContextValue {
2
+ step: number;
3
+ }
4
+ declare const BitkitDialogStepProvider: import('react').Provider<BitkitDialogStepContextValue>, useBitkitDialogStepContext: () => BitkitDialogStepContextValue;
5
+ export { BitkitDialogStepProvider, useBitkitDialogStepContext };
@@ -0,0 +1,7 @@
1
+ import { createContext } from "@chakra-ui/react";
2
+ //#region lib/components/BitkitDialog/BitkitDialogStepContext.ts
3
+ var [BitkitDialogStepProvider, useBitkitDialogStepContext] = createContext({ name: "BitkitDialogStepContext" });
4
+ //#endregion
5
+ export { BitkitDialogStepProvider, useBitkitDialogStepContext };
6
+
7
+ //# sourceMappingURL=BitkitDialogStepContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BitkitDialogStepContext.js","names":[],"sources":["../../../lib/components/BitkitDialog/BitkitDialogStepContext.ts"],"sourcesContent":["// eslint-disable-next-line no-restricted-imports\nimport { createContext } from '@chakra-ui/react';\n\ninterface BitkitDialogStepContextValue {\n step: number;\n}\n\nconst [BitkitDialogStepProvider, useBitkitDialogStepContext] = createContext<BitkitDialogStepContextValue>({\n name: 'BitkitDialogStepContext',\n});\n\nexport { BitkitDialogStepProvider, useBitkitDialogStepContext };\n"],"mappings":";;AAOA,IAAM,CAAC,0BAA0B,8BAA8B,cAA4C,EACzG,MAAM,0BACR,CAAC"}
@@ -1,3 +1,4 @@
1
+ import BitkitDialogBody from "../BitkitDialog/BitkitDialogBody.js";
1
2
  import BitkitDialog_default from "../BitkitDialog/BitkitDialog.js";
2
3
  import BitkitLinkButton from "../BitkitLinkButton/BitkitLinkButton.js";
3
4
  import { Box } from "@chakra-ui/react/box";
@@ -31,7 +32,7 @@ var BitkitOverflowContent = forwardRef((props, ref) => {
31
32
  title,
32
33
  variant: "overflowContent",
33
34
  onOpenChange: ({ open: isOpen }) => setOpen(isOpen),
34
- children
35
+ children: /* @__PURE__ */ jsx(BitkitDialogBody, { children })
35
36
  })] });
36
37
  });
37
38
  BitkitOverflowContent.displayName = "BitkitOverflowContent";
@@ -1 +1 @@
1
- {"version":3,"file":"BitkitOverflowContent.js","names":[],"sources":["../../../lib/components/BitkitOverflowContent/BitkitOverflowContent.tsx"],"sourcesContent":["import { Box, type BoxProps } from '@chakra-ui/react/box';\nimport { useSlotRecipe } from '@chakra-ui/react/styled-system';\nimport { Text, type TextProps } from '@chakra-ui/react/text';\nimport { forwardRef, type ReactNode, useState } from 'react';\n\nimport BitkitDialog from '../BitkitDialog/BitkitDialog';\nimport BitkitLinkButton, { type BitkitLinkButtonProps } from '../BitkitLinkButton/BitkitLinkButton';\n\nexport interface BitkitOverflowContentProps extends Omit<BoxProps, 'children' | 'title'> {\n buttonSize?: BitkitLinkButtonProps['size'];\n children: ReactNode;\n previewText?: string;\n textStyle?: TextProps['textStyle'];\n title: string;\n}\n\nconst BitkitOverflowContent = forwardRef<HTMLDivElement, BitkitOverflowContentProps>((props, ref) => {\n const { buttonSize = 'md', children, previewText, textStyle, title, ...rest } = props;\n const [open, setOpen] = useState(false);\n const recipe = useSlotRecipe({ key: 'overflowContent' });\n const styles = recipe();\n const preview = previewText || (typeof children === 'string' ? children : 'Click to view content');\n\n return (\n <>\n <Box ref={ref} css={styles.root} {...rest}>\n <Text css={styles.preview} textStyle={textStyle}>\n {preview}\n </Text>\n <BitkitLinkButton {...styles.action} onClick={() => setOpen(true)} size={buttonSize}>\n {`View ${title.toLowerCase()}`}\n </BitkitLinkButton>\n </Box>\n <BitkitDialog\n open={open}\n size=\"sm\"\n title={title}\n variant=\"overflowContent\"\n onOpenChange={({ open: isOpen }) => setOpen(isOpen)}\n >\n {children}\n </BitkitDialog>\n </>\n );\n});\n\nBitkitOverflowContent.displayName = 'BitkitOverflowContent';\n\nexport default BitkitOverflowContent;\n"],"mappings":";;;;;;;;AAgBA,IAAM,wBAAwB,YAAwD,OAAO,QAAQ;CACnG,MAAM,EAAE,aAAa,MAAM,UAAU,aAAa,WAAW,OAAO,GAAG,SAAS;CAChF,MAAM,CAAC,MAAM,WAAW,SAAS,KAAK;CAEtC,MAAM,SADS,cAAc,EAAE,KAAK,kBAAkB,CACvC,EAAO;CACtB,MAAM,UAAU,gBAAgB,OAAO,aAAa,WAAW,WAAW;CAE1E,OACE,qBAAA,YAAA,EAAA,UAAA,CACE,qBAAC,KAAD;EAAU;EAAK,KAAK,OAAO;EAAM,GAAI;YAArC,CACE,oBAAC,MAAD;GAAM,KAAK,OAAO;GAAoB;aACnC;EACG,CAAA,GACN,oBAAC,kBAAD;GAAkB,GAAI,OAAO;GAAQ,eAAe,QAAQ,IAAI;GAAG,MAAM;aACtE,QAAQ,MAAM,YAAY;EACX,CAAA,CACf;KACL,oBAAC,sBAAD;EACQ;EACN,MAAK;EACE;EACP,SAAQ;EACR,eAAe,EAAE,MAAM,aAAa,QAAQ,MAAM;EAEjD;CACW,CAAA,CACd,EAAA,CAAA;AAEN,CAAC;AAED,sBAAsB,cAAc"}
1
+ {"version":3,"file":"BitkitOverflowContent.js","names":[],"sources":["../../../lib/components/BitkitOverflowContent/BitkitOverflowContent.tsx"],"sourcesContent":["import { Box, type BoxProps } from '@chakra-ui/react/box';\nimport { useSlotRecipe } from '@chakra-ui/react/styled-system';\nimport { Text, type TextProps } from '@chakra-ui/react/text';\nimport { forwardRef, type ReactNode, useState } from 'react';\n\nimport BitkitDialog from '../BitkitDialog/BitkitDialog';\nimport BitkitDialogBody from '../BitkitDialog/BitkitDialogBody';\nimport BitkitLinkButton, { type BitkitLinkButtonProps } from '../BitkitLinkButton/BitkitLinkButton';\n\nexport interface BitkitOverflowContentProps extends Omit<BoxProps, 'children' | 'title'> {\n buttonSize?: BitkitLinkButtonProps['size'];\n children: ReactNode;\n previewText?: string;\n textStyle?: TextProps['textStyle'];\n title: string;\n}\n\nconst BitkitOverflowContent = forwardRef<HTMLDivElement, BitkitOverflowContentProps>((props, ref) => {\n const { buttonSize = 'md', children, previewText, textStyle, title, ...rest } = props;\n const [open, setOpen] = useState(false);\n const recipe = useSlotRecipe({ key: 'overflowContent' });\n const styles = recipe();\n const preview = previewText || (typeof children === 'string' ? children : 'Click to view content');\n\n return (\n <>\n <Box ref={ref} css={styles.root} {...rest}>\n <Text css={styles.preview} textStyle={textStyle}>\n {preview}\n </Text>\n <BitkitLinkButton {...styles.action} onClick={() => setOpen(true)} size={buttonSize}>\n {`View ${title.toLowerCase()}`}\n </BitkitLinkButton>\n </Box>\n <BitkitDialog\n open={open}\n size=\"sm\"\n title={title}\n variant=\"overflowContent\"\n onOpenChange={({ open: isOpen }) => setOpen(isOpen)}\n >\n <BitkitDialogBody>{children}</BitkitDialogBody>\n </BitkitDialog>\n </>\n );\n});\n\nBitkitOverflowContent.displayName = 'BitkitOverflowContent';\n\nexport default BitkitOverflowContent;\n"],"mappings":";;;;;;;;;AAiBA,IAAM,wBAAwB,YAAwD,OAAO,QAAQ;CACnG,MAAM,EAAE,aAAa,MAAM,UAAU,aAAa,WAAW,OAAO,GAAG,SAAS;CAChF,MAAM,CAAC,MAAM,WAAW,SAAS,KAAK;CAEtC,MAAM,SADS,cAAc,EAAE,KAAK,kBAAkB,CACvC,EAAO;CACtB,MAAM,UAAU,gBAAgB,OAAO,aAAa,WAAW,WAAW;CAE1E,OACE,qBAAA,YAAA,EAAA,UAAA,CACE,qBAAC,KAAD;EAAU;EAAK,KAAK,OAAO;EAAM,GAAI;YAArC,CACE,oBAAC,MAAD;GAAM,KAAK,OAAO;GAAoB;aACnC;EACG,CAAA,GACN,oBAAC,kBAAD;GAAkB,GAAI,OAAO;GAAQ,eAAe,QAAQ,IAAI;GAAG,MAAM;aACtE,QAAQ,MAAM,YAAY;EACX,CAAA,CACf;KACL,oBAAC,sBAAD;EACQ;EACN,MAAK;EACE;EACP,SAAQ;EACR,eAAe,EAAE,MAAM,aAAa,QAAQ,MAAM;YAElD,oBAAC,kBAAD,EAAmB,SAA2B,CAAA;CAClC,CAAA,CACd,EAAA,CAAA;AAEN,CAAC;AAED,sBAAsB,cAAc"}
@@ -18,9 +18,13 @@ export { default as BitkitControlButton, type BitkitControlButtonProps, } from '
18
18
  export { default as BitkitDataWidget, type BitkitDataWidgetProps } from './BitkitDataWidget/BitkitDataWidget';
19
19
  export { default as BitkitDefinitionTooltip, type BitkitDefinitionTooltipProps, } from './BitkitDefinitionTooltip/BitkitDefinitionTooltip';
20
20
  export { default as BitkitDialog, type BitkitDialogProps } from './BitkitDialog/BitkitDialog';
21
- export { default as BitkitFormDialog, type BitkitFormDialogProps } from './BitkitDialog/BitkitFormDialog';
22
- export { default as BitkitStepperDialog, type BitkitStepperDialogProps, useStepperDialog, } from './BitkitDialog/BitkitStepperDialog';
23
- export { type BitkitStepperDialogStepProps } from './BitkitDialog/BitkitStepperDialogStep';
21
+ export { default as BitkitDialogBody, type BitkitDialogBodyProps } from './BitkitDialog/BitkitDialogBody';
22
+ export { default as BitkitDialogButtons, type BitkitDialogButtonsProps } from './BitkitDialog/BitkitDialogButtons';
23
+ export { default as BitkitDialogContent, type BitkitDialogContentProps } from './BitkitDialog/BitkitDialogContent';
24
+ export { default as BitkitDialogFormContent, type BitkitDialogFormContentProps, } from './BitkitDialog/BitkitDialogFormContent';
25
+ export { default as BitkitDialogHeader, type BitkitDialogHeaderProps } from './BitkitDialog/BitkitDialogHeader';
26
+ export { default as BitkitDialogRoot, type BitkitDialogRootProps } from './BitkitDialog/BitkitDialogRoot';
27
+ export { default as BitkitDialogStep, type BitkitDialogStepProps } from './BitkitDialog/BitkitDialogStep';
24
28
  export { default as BitkitDraggableCard, type BitkitDraggableCardProps, } from './BitkitDraggableCard/BitkitDraggableCard';
25
29
  export { default as BitkitDrawer, type BitkitDrawerActionTriggerProps, type BitkitDrawerBackdropProps, type BitkitDrawerBodyProps, type BitkitDrawerCloseButtonProps, type BitkitDrawerContentProps, type BitkitDrawerDescriptionProps, type BitkitDrawerFooterProps, type BitkitDrawerHeaderProps, type BitkitDrawerPositionerProps, type BitkitDrawerRootProps, type BitkitDrawerTitleProps, type BitkitDrawerTriggerProps, } from './BitkitDrawer/BitkitDrawer';
26
30
  export { default as BitkitEmptyState, type BitkitEmptyStateProps } from './BitkitEmptyState/BitkitEmptyState';