@bitrise/bitkit-v2 0.3.393 → 0.3.395
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +10 -9
- package/dist/components/BitkitDialog/BitkitDialog.d.ts +8 -2
- package/dist/components/BitkitDialog/BitkitDialog.js +6 -3
- package/dist/components/BitkitDialog/BitkitDialog.js.map +1 -1
- package/dist/components/BitkitDialog/BitkitFormDialog.d.ts +2 -1
- package/dist/components/BitkitDialog/BitkitFormDialog.js +6 -3
- package/dist/components/BitkitDialog/BitkitFormDialog.js.map +1 -1
- package/dist/components/BitkitDialog/{BitkitStepperDialog.d.ts → BitkitStepsDialog.d.ts} +17 -10
- package/dist/components/BitkitDialog/{BitkitStepperDialog.js → BitkitStepsDialog.js} +27 -16
- package/dist/components/BitkitDialog/BitkitStepsDialog.js.map +1 -0
- package/dist/components/BitkitDialog/{BitkitStepperDialogStep.d.ts → BitkitStepsDialogStep.d.ts} +5 -5
- package/dist/components/BitkitDialog/{BitkitStepperDialogStep.js → BitkitStepsDialogStep.js} +6 -6
- package/dist/components/BitkitDialog/BitkitStepsDialogStep.js.map +1 -0
- package/dist/components/BitkitDialog/DialogInner.d.ts +6 -5
- package/dist/components/BitkitDialog/DialogInner.js +9 -6
- package/dist/components/BitkitDialog/DialogInner.js.map +1 -1
- package/dist/components/BitkitDialog/DialogShell.d.ts +7 -4
- package/dist/components/BitkitDialog/DialogShell.js +6 -4
- package/dist/components/BitkitDialog/DialogShell.js.map +1 -1
- package/dist/components/BitkitDialog/{StepperContext.d.ts → StepsDialogContext.d.ts} +3 -3
- package/dist/components/BitkitDialog/StepsDialogContext.js +11 -0
- package/dist/components/BitkitDialog/StepsDialogContext.js.map +1 -0
- package/dist/components/index.d.ts +2 -2
- package/dist/icons/IconCopilot.d.ts +8 -0
- package/dist/icons/IconCopilot.js +31 -0
- package/dist/icons/IconCopilot.js.map +1 -0
- package/dist/icons/IconCursor.d.ts +8 -0
- package/dist/icons/IconCursor.js +31 -0
- package/dist/icons/IconCursor.js.map +1 -0
- package/dist/icons/IconKiroColor.d.ts +9 -0
- package/dist/icons/IconKiroColor.js +31 -0
- package/dist/icons/IconKiroColor.js.map +1 -0
- package/dist/icons/IconMcp.d.ts +8 -0
- package/dist/icons/IconMcp.js +31 -0
- package/dist/icons/IconMcp.js.map +1 -0
- package/dist/icons/IconTabPlus.d.ts +8 -0
- package/dist/icons/IconTabPlus.js +31 -0
- package/dist/icons/IconTabPlus.js.map +1 -0
- package/dist/icons/IconTerminalFilled.d.ts +8 -0
- package/dist/icons/IconTerminalFilled.js +31 -0
- package/dist/icons/IconTerminalFilled.js.map +1 -0
- package/dist/icons/IconVsCode.d.ts +8 -0
- package/dist/icons/IconVsCode.js +31 -0
- package/dist/icons/IconVsCode.js.map +1 -0
- package/dist/icons/IconWindsurf.d.ts +8 -0
- package/dist/icons/IconWindsurf.js +31 -0
- package/dist/icons/IconWindsurf.js.map +1 -0
- package/dist/icons/index.d.ts +8 -0
- package/dist/main.js +11 -3
- package/dist/svgs/16x16/icon-copilot-16.js +25 -0
- package/dist/svgs/16x16/icon-copilot-16.js.map +1 -0
- package/dist/svgs/16x16/icon-cursor-16.js +23 -0
- package/dist/svgs/16x16/icon-cursor-16.js.map +1 -0
- package/dist/svgs/16x16/icon-kiro-color-16.js +31 -0
- package/dist/svgs/16x16/icon-kiro-color-16.js.map +1 -0
- package/dist/svgs/16x16/icon-mcp-16.js +21 -0
- package/dist/svgs/16x16/icon-mcp-16.js.map +1 -0
- package/dist/svgs/16x16/icon-more-horizontal-16.js +1 -1
- package/dist/svgs/16x16/icon-more-horizontal-16.js.map +1 -1
- package/dist/svgs/16x16/icon-more-vertical-16.js +1 -1
- package/dist/svgs/16x16/icon-more-vertical-16.js.map +1 -1
- package/dist/svgs/16x16/icon-tab-plus-16.js +21 -0
- package/dist/svgs/16x16/icon-tab-plus-16.js.map +1 -0
- package/dist/svgs/16x16/icon-terminal-filled-16.js +25 -0
- package/dist/svgs/16x16/icon-terminal-filled-16.js.map +1 -0
- package/dist/svgs/16x16/icon-vs-code-16.js +23 -0
- package/dist/svgs/16x16/icon-vs-code-16.js.map +1 -0
- package/dist/svgs/16x16/icon-windsurf-16.js +21 -0
- package/dist/svgs/16x16/icon-windsurf-16.js.map +1 -0
- package/dist/svgs/24x24/icon-copilot-24.js +25 -0
- package/dist/svgs/24x24/icon-copilot-24.js.map +1 -0
- package/dist/svgs/24x24/icon-cursor-24.js +23 -0
- package/dist/svgs/24x24/icon-cursor-24.js.map +1 -0
- package/dist/svgs/24x24/icon-kiro-color-24.js +31 -0
- package/dist/svgs/24x24/icon-kiro-color-24.js.map +1 -0
- package/dist/svgs/24x24/icon-mcp-24.js +21 -0
- package/dist/svgs/24x24/icon-mcp-24.js.map +1 -0
- package/dist/svgs/24x24/icon-more-horizontal-24.js +1 -1
- package/dist/svgs/24x24/icon-more-horizontal-24.js.map +1 -1
- package/dist/svgs/24x24/icon-more-vertical-24.js +1 -1
- package/dist/svgs/24x24/icon-more-vertical-24.js.map +1 -1
- package/dist/svgs/24x24/icon-tab-plus-24.js +21 -0
- package/dist/svgs/24x24/icon-tab-plus-24.js.map +1 -0
- package/dist/svgs/24x24/icon-terminal-filled-24.js +25 -0
- package/dist/svgs/24x24/icon-terminal-filled-24.js.map +1 -0
- package/dist/svgs/24x24/icon-vs-code-24.js +23 -0
- package/dist/svgs/24x24/icon-vs-code-24.js.map +1 -0
- package/dist/svgs/24x24/icon-windsurf-24.js +21 -0
- package/dist/svgs/24x24/icon-windsurf-24.js.map +1 -0
- package/docs/v1-to-v2-migration-guide.md +27 -3
- package/package.json +1 -1
- package/dist/components/BitkitDialog/BitkitStepperDialog.js.map +0 -1
- package/dist/components/BitkitDialog/BitkitStepperDialogStep.js.map +0 -1
- package/dist/components/BitkitDialog/StepperContext.js +0 -11
- package/dist/components/BitkitDialog/StepperContext.js.map +0 -1
|
@@ -154,14 +154,38 @@ Other prop mappings:
|
|
|
154
154
|
|
|
155
155
|
| v1 | v2 |
|
|
156
156
|
|----|----|
|
|
157
|
-
| `isClosable={false}` | `
|
|
157
|
+
| `isClosable={false}` | `dismissible={false}` |
|
|
158
|
+
| `isClosable={!isLoading}` (toggled during an async action) | `state="loading"` |
|
|
158
159
|
| `onCloseComplete={fn}` | `onExitComplete={fn}` (fires when the close animation finishes) |
|
|
159
160
|
|
|
160
|
-
`
|
|
161
|
+
`dismissible={false}` goes one step further than v1: the header close button is **not rendered at all** (v1 kept it in place, disabled) and **ESC is blocked**. Overlay/outside clicks are ignored regardless of `dismissible`, because the dialog always sets `closeOnInteractOutside={false}` internally. With `dismissible={false}` the only way to dismiss the dialog is through an explicit footer action.
|
|
162
|
+
|
|
163
|
+
**Which of the two you want.** v1 had a single `isClosable`, so a dialog that merely had to survive an in-flight request used the same flag as one that can never be dismissed. v2 splits them:
|
|
164
|
+
|
|
165
|
+
- `dismissible={false}` is a property of the dialog itself: it can never be dismissed, so it carries no close button at all. Use it when the only way out is an explicit footer action, e.g. an acknowledgement or a forced choice.
|
|
166
|
+
- `state="loading"` is temporary: something is running and the dialog must not be abandoned halfway. The close button stays where it is but goes disabled, ESC is blocked, and the dialog gets `aria-busy`. Set it together with the footer button's own `state="loading"`, and disable the other footer buttons for as long as it runs.
|
|
167
|
+
|
|
168
|
+
A v1 `isClosable={!isLoading}` is the second case, not the first. Mapping it to `dismissible` would make the close button vanish when the request starts and reappear when it finishes, where v1 only greyed it out.
|
|
161
169
|
|
|
162
170
|
```tsx
|
|
163
171
|
// Acknowledge-only dialog
|
|
164
|
-
<BitkitDialog
|
|
172
|
+
<BitkitDialog dismissible={false} open={open} onOpenChange={…} title="Action required">…</BitkitDialog>
|
|
173
|
+
|
|
174
|
+
// Locked while a request is in flight (v1: isClosable={!isSaving})
|
|
175
|
+
<BitkitDialog
|
|
176
|
+
footerButtons={
|
|
177
|
+
<>
|
|
178
|
+
<BitkitButton state={isSaving ? 'disabled' : undefined} variant="secondary" onClick={close}>Cancel</BitkitButton>
|
|
179
|
+
<BitkitButton state={isSaving ? 'loading' : undefined} variant="primary" onClick={save}>Save</BitkitButton>
|
|
180
|
+
</>
|
|
181
|
+
}
|
|
182
|
+
open={open}
|
|
183
|
+
state={isSaving ? 'loading' : undefined}
|
|
184
|
+
title="Save changes"
|
|
185
|
+
onOpenChange={…}
|
|
186
|
+
>
|
|
187
|
+
…
|
|
188
|
+
</BitkitDialog>
|
|
165
189
|
|
|
166
190
|
// Run code after the close animation completes (e.g. navigation, focus restoration)
|
|
167
191
|
<BitkitDialog open={open} onOpenChange={…} onExitComplete={() => navigate('/next')} title="…">
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BitkitStepperDialog.js","names":[],"sources":["../../../lib/components/BitkitDialog/BitkitStepperDialog.tsx"],"sourcesContent":["import { Dialog } from '@chakra-ui/react/dialog';\nimport { type ReactElement, type ReactNode, useCallback, useMemo, useState } from 'react';\n\nimport { type BitkitDataAttributes } from '../../utilities/dataAttributes';\nimport { flattenChildren } from '../../utilities/flattenChildren';\nimport { withSubComponents } from '../../utilities/withSubComponents';\nimport BitkitSteps from '../BitkitSteps/BitkitSteps';\nimport BitkitStepperDialogStep, { type BitkitStepperDialogStepProps } from './BitkitStepperDialogStep';\nimport DialogInner from './DialogInner';\nimport DialogShell, { type DialogShellProps } from './DialogShell';\nimport { StepperDialogProvider } from './StepperContext';\n\nexport { useStepperDialog } from './StepperContext';\n\nexport type BitkitStepperDialogProps = {\n /** `BitkitStepperDialog.Step` children, one per step. */\n children: ReactNode;\n closable?: boolean;\n /** Initial step when uncontrolled. Resets to this when the dialog closes. */\n defaultStep?: number;\n /** Element to focus when the dialog opens, instead of the first focusable one. */\n initialFocusEl?: DialogShellProps['initialFocusEl'];\n /**\n * Footer content rendered raw. Stepper footers are space-between (Cancel left, Prev/Next right),\n * so build the nav row here with `useStepperDialog()` — there is no `footerButtons` slot, which\n * would force right-alignment.\n */\n footerContent?: ReactNode;\n headerLabel?: string;\n maxHeight?: string;\n onExitComplete?: () => void;\n onOpenChange?: (details: { open: boolean }) => void;\n /** Called whenever the active step changes (controlled or uncontrolled). */\n onStepChange?: (step: number) => void;\n open?: boolean;\n preventScroll?: boolean;\n scrollBehavior?: 'inside' | 'outside';\n showScrollGradient?: boolean;\n size?: 'sm' | 'md' | 'lg' | 'full';\n /** Controlled active step. Omit for uncontrolled (see `defaultStep`). */\n step?: number;\n title: ReactNode;\n trigger?: ReactNode;\n variant?: 'overflowContent';\n // Data attributes are forwarded to the element carrying `role=\"dialog\"`, and nothing else is —\n // style props, `className` and `id` don't pass through.\n} & BitkitDataAttributes;\n\n/**\n * A dialog that walks through a sequence of `BitkitStepperDialog.Step` children. It owns the step\n * state, auto-renders the steps header, and shows only the active step's body. Footer navigation is\n * wired by the consumer through the `useStepperDialog()` hook.\n */\nconst BitkitStepperDialog = ({\n children,\n closable = true,\n defaultStep = 0,\n initialFocusEl,\n footerContent,\n headerLabel,\n maxHeight,\n onExitComplete,\n onOpenChange,\n onStepChange,\n open,\n preventScroll,\n scrollBehavior,\n showScrollGradient,\n size,\n step: stepProp,\n title,\n trigger,\n variant,\n ...dataAttributes\n}: BitkitStepperDialogProps) => {\n const [internalStep, setInternalStep] = useState(defaultStep);\n const isControlled = stepProp !== undefined;\n const rawStep = (isControlled ? stepProp : internalStep) ?? 0;\n const steps = flattenChildren(children).filter(\n (child): child is ReactElement<BitkitStepperDialogStepProps> => child.type === BitkitStepperDialogStep,\n );\n const totalSteps = steps.length;\n const step = Math.max(0, Math.min(rawStep, Math.max(0, totalSteps - 1)));\n\n const setStep = useCallback(\n (next: number) => {\n const clamped = Math.max(0, Math.min(next, totalSteps - 1));\n if (!isControlled) setInternalStep(clamped);\n onStepChange?.(clamped);\n },\n [isControlled, onStepChange, totalSteps],\n );\n\n const ctx = useMemo(\n () => ({\n goTo: setStep,\n isFirst: step === 0,\n isLast: step === totalSteps - 1,\n next: () => setStep(step + 1),\n prev: () => setStep(step - 1),\n setStep,\n step,\n totalSteps,\n }),\n [setStep, step, totalSteps],\n );\n\n const handleOpenChange = (details: { open: boolean }) => {\n if (!details.open && !isControlled) setInternalStep(defaultStep);\n onOpenChange?.(details);\n };\n\n const stepsHeader = (\n <BitkitSteps step={step}>\n {steps.map((child, index) => (\n <BitkitSteps.Item key={index} label={child.props.label} />\n ))}\n </BitkitSteps>\n );\n\n return (\n <StepperDialogProvider value={ctx}>\n <DialogShell\n closable={closable}\n initialFocusEl={initialFocusEl}\n onExitComplete={onExitComplete}\n onOpenChange={handleOpenChange}\n open={open}\n preventScroll={preventScroll}\n scrollBehavior={scrollBehavior}\n size={size}\n trigger={trigger}\n variant={variant}\n >\n <Dialog.Content maxHeight={maxHeight} {...dataAttributes}>\n <DialogInner\n closable={closable}\n footerContent={footerContent}\n headerExtra={stepsHeader}\n headerLabel={headerLabel}\n scrollBehavior={scrollBehavior}\n showScrollGradient={showScrollGradient}\n title={title}\n variant={variant}\n >\n {steps[step]}\n </DialogInner>\n </Dialog.Content>\n </DialogShell>\n </StepperDialogProvider>\n );\n};\n\nBitkitStepperDialog.displayName = 'BitkitStepperDialog';\n\nexport default withSubComponents(BitkitStepperDialog, {\n ActionTrigger: Dialog.ActionTrigger,\n Step: BitkitStepperDialogStep,\n});\n"],"mappings":";;;;;;;;;;;;;;;;AAqDA,IAAM,uBAAuB,EAC3B,UACA,WAAW,MACX,cAAc,GACd,gBACA,eACA,aACA,WACA,gBACA,cACA,cACA,MACA,eACA,gBACA,oBACA,MACA,MAAM,UACN,OACA,SACA,SACA,GAAG,qBAC2B;CAC9B,MAAM,CAAC,cAAc,mBAAmB,SAAS,WAAW;CAC5D,MAAM,eAAe,aAAa,KAAA;CAClC,MAAM,WAAW,eAAe,WAAW,iBAAiB;CAC5D,MAAM,QAAQ,gBAAgB,QAAQ,CAAC,CAAC,QACrC,UAA+D,MAAM,SAAS,uBACjF;CACA,MAAM,aAAa,MAAM;CACzB,MAAM,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,SAAS,KAAK,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC;CAEvE,MAAM,UAAU,aACb,SAAiB;EAChB,MAAM,UAAU,KAAK,IAAI,GAAG,KAAK,IAAI,MAAM,aAAa,CAAC,CAAC;EAC1D,IAAI,CAAC,cAAc,gBAAgB,OAAO;EAC1C,eAAe,OAAO;CACxB,GACA;EAAC;EAAc;EAAc;CAAU,CACzC;CAEA,MAAM,MAAM,eACH;EACL,MAAM;EACN,SAAS,SAAS;EAClB,QAAQ,SAAS,aAAa;EAC9B,YAAY,QAAQ,OAAO,CAAC;EAC5B,YAAY,QAAQ,OAAO,CAAC;EAC5B;EACA;EACA;CACF,IACA;EAAC;EAAS;EAAM;CAAU,CAC5B;CAEA,MAAM,oBAAoB,YAA+B;EACvD,IAAI,CAAC,QAAQ,QAAQ,CAAC,cAAc,gBAAgB,WAAW;EAC/D,eAAe,OAAO;CACxB;CAEA,MAAM,cACJ,oBAAC,qBAAD;EAAmB;EAChB,UAAA,MAAM,KAAK,OAAO,UACjB,oBAAC,oBAAY,MAAb,EAA8B,OAAO,MAAM,MAAM,MAAQ,GAAlC,KAAkC,CAC1D;CACU,CAAA;CAGf,OACE,oBAAC,uBAAD;EAAuB,OAAO;EAC5B,UAAA,oBAAC,aAAD;GACY;GACM;GACA;GAChB,cAAc;GACR;GACS;GACC;GACV;GACG;GACA;GAET,UAAA,oBAAC,OAAO,SAAR;IAA2B;IAAW,GAAI;IACxC,UAAA,oBAAC,aAAD;KACY;KACK;KACf,aAAa;KACA;KACG;KACI;KACb;KACE;KAER,UAAA,MAAM;IACI,CAAA;GACC,CAAA;EACL,CAAA;CACQ,CAAA;AAE3B;AAEA,oBAAoB,cAAc;AAElC,IAAA,8BAAe,kBAAkB,qBAAqB;CACpD,eAAe,OAAO;CACtB,MAAM;AACR,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BitkitStepperDialogStep.js","names":[],"sources":["../../../lib/components/BitkitDialog/BitkitStepperDialogStep.tsx"],"sourcesContent":["import { useDialogStyles } from '@chakra-ui/react/dialog';\nimport { chakra } from '@chakra-ui/react/styled-system';\nimport { type ReactNode } from 'react';\n\nexport interface BitkitStepperDialogStepProps {\n /** Body content for this step. */\n children?: ReactNode;\n /** Optional subtitle shown under the step's body title. */\n description?: string;\n /** Short label shown in the steps header. */\n label: string;\n /** Heading shown at the top of the step's body. */\n title: string;\n}\n\n/**\n * A single step of a {@link BitkitStepperDialog}. Renders its `title`/`description` typography\n * followed by `children`. The parent only mounts the active step, so this never self-gates.\n */\nconst BitkitStepperDialogStep = ({ children, description, title }: BitkitStepperDialogStepProps) => {\n const styles = useDialogStyles();\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\nBitkitStepperDialogStep.displayName = 'BitkitStepperDialogStep';\n\nexport default BitkitStepperDialogStep;\n"],"mappings":";;;;;;;;AAmBA,IAAM,2BAA2B,EAAE,UAAU,aAAa,YAA0C;CAClG,MAAM,SAAS,gBAAgB;CAE/B,OACE,qBAAA,UAAA,EAAA,UAAA,CACE,qBAAC,OAAO,KAAR;EAAY,KAAK,OAAO;EAAxB,UAAA,CACE,oBAAC,OAAO,GAAR;GAAU,KAAK,OAAO;GAAY,UAAA;EAAgB,CAAA,GACjD,eAAe,oBAAC,OAAO,GAAR;GAAU,KAAK,OAAO;GAAkB,UAAA;EAAsB,CAAA,CACpE;CACX,CAAA,GAAA,QACD,EAAA,CAAA;AAEN;AAEA,wBAAwB,cAAc"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { createContext } from "@chakra-ui/react";
|
|
2
|
-
//#region lib/components/BitkitDialog/StepperContext.ts
|
|
3
|
-
var [StepperDialogProvider, useStepperDialog] = createContext({
|
|
4
|
-
hookName: "useStepperDialog",
|
|
5
|
-
name: "StepperDialogContext",
|
|
6
|
-
providerName: "<BitkitStepperDialog />"
|
|
7
|
-
});
|
|
8
|
-
//#endregion
|
|
9
|
-
export { StepperDialogProvider, useStepperDialog };
|
|
10
|
-
|
|
11
|
-
//# sourceMappingURL=StepperContext.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StepperContext.js","names":[],"sources":["../../../lib/components/BitkitDialog/StepperContext.ts"],"sourcesContent":["// eslint-disable-next-line no-restricted-imports\nimport { createContext } from '@chakra-ui/react';\n\nexport interface StepperDialogContextValue {\n /** Jump to an arbitrary (clamped) step. */\n goTo: (step: number) => void;\n isFirst: boolean;\n isLast: boolean;\n /** Advance to the next step (clamped to the last). */\n next: () => void;\n /** Go back to the previous step (clamped to the first). */\n prev: () => void;\n /** Alias of {@link goTo}. */\n setStep: (step: number) => void;\n step: number;\n totalSteps: number;\n}\n\nconst [StepperDialogProvider, useStepperDialog] = createContext<StepperDialogContextValue>({\n hookName: 'useStepperDialog',\n name: 'StepperDialogContext',\n providerName: '<BitkitStepperDialog />',\n});\n\nexport { StepperDialogProvider, useStepperDialog };\n"],"mappings":";;AAkBA,IAAM,CAAC,uBAAuB,oBAAoB,cAAyC;CACzF,UAAU;CACV,MAAM;CACN,cAAc;AAChB,CAAC"}
|