react-wizard-engine 0.1.4 → 0.1.6
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/CHANGELOG.md +12 -0
- package/dist/{chunk-5ZSA2PNS.js → chunk-NDYZHURP.js} +19 -5
- package/dist/chunk-NDYZHURP.js.map +1 -0
- package/dist/{chunk-XNH2LQZL.cjs → chunk-OV74AMBZ.cjs} +19 -5
- package/dist/chunk-OV74AMBZ.cjs.map +1 -0
- package/dist/index.cjs +40 -40
- package/dist/index.js +1 -1
- package/dist/shadcn/index.cjs +11 -11
- package/dist/shadcn/index.cjs.map +1 -1
- package/dist/shadcn/index.d.cts +2 -3
- package/dist/shadcn/index.d.ts +2 -3
- package/dist/shadcn/index.js +5 -5
- package/dist/shadcn/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/chunk-5ZSA2PNS.js.map +0 -1
- package/dist/chunk-XNH2LQZL.cjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# react-wizard-engine
|
|
2
2
|
|
|
3
|
+
## 0.1.6
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Internal: `pnpm typecheck` now uses `tsconfig.build.json` (excludes spec files), removing jest-dom matcher false positives. Wrap `WizardLayout` in `forwardRef` so refs attach correctly on React 18 (peer dep allows `>=18`). Add `afterEach(cleanup)` to remaining hook/component specs to fix happy-dom test isolation.
|
|
8
|
+
|
|
9
|
+
## 0.1.5
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Internal: drop unused `_asChild`/`_variant`/`_size` from the headless `FallbackButton` destructure; replace `any` on `defaultButton`'s component-type cast with `ElementType`. No behavior change; clears CI lint.
|
|
14
|
+
|
|
3
15
|
## 0.1.4
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
|
@@ -21,10 +21,24 @@ var WizardResolverError = class extends WizardError {
|
|
|
21
21
|
// src/react/components-provider.tsx
|
|
22
22
|
import { createContext, useContext } from "react";
|
|
23
23
|
import { jsx } from "react/jsx-runtime";
|
|
24
|
-
var FallbackButton = (
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
var FallbackButton = ({
|
|
25
|
+
children,
|
|
26
|
+
className,
|
|
27
|
+
disabled,
|
|
28
|
+
onClick,
|
|
29
|
+
type,
|
|
30
|
+
"aria-label": ariaLabel
|
|
31
|
+
}) => /* @__PURE__ */ jsx(
|
|
32
|
+
"button",
|
|
33
|
+
{
|
|
34
|
+
"aria-label": ariaLabel,
|
|
35
|
+
className,
|
|
36
|
+
disabled,
|
|
37
|
+
onClick,
|
|
38
|
+
type: type ?? "button",
|
|
39
|
+
children
|
|
40
|
+
}
|
|
41
|
+
);
|
|
28
42
|
var FallbackBackArrowIcon = ({ className }) => /* @__PURE__ */ jsx("svg", { className, width: "16", height: "16", viewBox: "0 0 16 16", fill: "currentColor", "aria-hidden": true, children: /* @__PURE__ */ jsx("path", { d: "M10 4 L6 8 L10 12", stroke: "currentColor", strokeWidth: "1.5", fill: "none" }) });
|
|
29
43
|
var defaults = { Button: FallbackButton, BackArrowIcon: FallbackBackArrowIcon };
|
|
30
44
|
var WizardComponentsContext = createContext(defaults);
|
|
@@ -73,4 +87,4 @@ export {
|
|
|
73
87
|
useWizard,
|
|
74
88
|
cn
|
|
75
89
|
};
|
|
76
|
-
//# sourceMappingURL=chunk-
|
|
90
|
+
//# sourceMappingURL=chunk-NDYZHURP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/errors/wizard.error.ts","../src/react/components-provider.tsx","../src/react/context.ts","../src/react/use-wizard.ts","../src/utils/cn.ts"],"sourcesContent":["export class WizardError extends Error {\n\tpublic override readonly name: string = 'WizardError';\n\n\tconstructor(message?: string) {\n\t\tsuper(message);\n\t\tObject.setPrototypeOf(this, new.target.prototype);\n\t}\n}\n\nexport class WizardInitializationError extends WizardError {\n\tpublic override readonly name: string = 'WizardInitializationError';\n}\n\nexport class WizardNavigationError extends WizardError {\n\tpublic override readonly name: string = 'WizardNavigationError';\n}\n\nexport class WizardResolverError extends WizardError {\n\tpublic override readonly name: string = 'WizardResolverError';\n}\n","'use client';\n\nimport { type ComponentType, createContext, type ReactNode, useContext } from 'react';\n\nexport interface IWizardButtonProps {\n\tasChild?: boolean;\n\tchildren?: ReactNode;\n\tclassName?: string;\n\tdisabled?: boolean;\n\tonClick?: () => void;\n\ttype?: 'button' | 'submit';\n\tvariant?: 'default' | 'ghost';\n\tsize?: 'default' | 'icon-sm';\n\t'aria-label'?: string;\n}\n\nexport interface IWizardBackArrowIconProps {\n\tclassName?: string;\n}\n\nexport interface IWizardComponents {\n\tButton: ComponentType<IWizardButtonProps>;\n\tBackArrowIcon: ComponentType<IWizardBackArrowIconProps>;\n}\n\nconst FallbackButton: ComponentType<IWizardButtonProps> = ({\n\tchildren,\n\tclassName,\n\tdisabled,\n\tonClick,\n\ttype,\n\t'aria-label': ariaLabel,\n}) => (\n\t<button\n\t\taria-label={ariaLabel}\n\t\tclassName={className}\n\t\tdisabled={disabled}\n\t\tonClick={onClick}\n\t\ttype={type ?? 'button'}\n\t>\n\t\t{children}\n\t</button>\n);\n\nconst FallbackBackArrowIcon: ComponentType<IWizardBackArrowIconProps> = ({ className }) => (\n\t<svg className={className} width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\" aria-hidden>\n\t\t<path d=\"M10 4 L6 8 L10 12\" stroke=\"currentColor\" strokeWidth=\"1.5\" fill=\"none\" />\n\t</svg>\n);\n\nconst defaults: IWizardComponents = { Button: FallbackButton, BackArrowIcon: FallbackBackArrowIcon };\n\nconst WizardComponentsContext = createContext<IWizardComponents>(defaults);\n\nexport function WizardComponentsProvider(props: {\n\tButton?: ComponentType<IWizardButtonProps>;\n\tBackArrowIcon?: ComponentType<IWizardBackArrowIconProps>;\n\tchildren: ReactNode;\n}) {\n\tconst { Button, BackArrowIcon, children } = props;\n\tconst value: IWizardComponents = {\n\t\tButton: Button ?? defaults.Button,\n\t\tBackArrowIcon: BackArrowIcon ?? defaults.BackArrowIcon,\n\t};\n\treturn <WizardComponentsContext.Provider value={value}>{children}</WizardComponentsContext.Provider>;\n}\n\nexport function useWizardComponents(): IWizardComponents {\n\treturn useContext(WizardComponentsContext);\n}\n","'use client';\n\nimport { createContext } from 'react';\n\nimport type { WizardEngine } from '../core/wizard-engine';\n\n/**\n * React context exposing the active `WizardEngine` instance to descendants.\n * `null` outside a `<WizardProvider>` — `useWizard()` throws a clear error.\n */\nexport const WizardEngineContext = createContext<null | WizardEngine<string, string, string>>(null);\n","'use client';\n\nimport { useContext, useSyncExternalStore } from 'react';\n\nimport type { WizardEngine } from '../core/wizard-engine';\n\nimport { WizardError } from '../core/errors';\nimport { WizardEngineContext } from './context';\n\n/**\n * Returns the active `WizardEngine` instance and re-renders the consumer on\n * every tree change. Throws if used outside a `<WizardProvider>`.\n *\n * Engine identity is stable across renders.\n */\nexport function useWizard<Step extends string, Category extends string, Branch extends string = string>(): WizardEngine<\n\tStep,\n\tCategory,\n\tBranch\n> {\n\tconst engine = useContext(WizardEngineContext) as null | WizardEngine<Step, Category, Branch>;\n\tif (!engine) {\n\t\tthrow new WizardError('useWizard must be used inside <WizardProvider>');\n\t}\n\tuseSyncExternalStore(engine.subscribe, engine.getTreeSnapshot, engine.getTreeSnapshot);\n\treturn engine;\n}\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(...inputs));\n}\n"],"mappings":";;;AAAO,IAAM,cAAN,cAA0B,MAAM;AAAA,EACb,OAAe;AAAA,EAExC,YAAY,SAAkB;AAC7B,UAAM,OAAO;AACb,WAAO,eAAe,MAAM,WAAW,SAAS;AAAA,EACjD;AACD;AAEO,IAAM,4BAAN,cAAwC,YAAY;AAAA,EACjC,OAAe;AACzC;AAEO,IAAM,wBAAN,cAAoC,YAAY;AAAA,EAC7B,OAAe;AACzC;AAEO,IAAM,sBAAN,cAAkC,YAAY;AAAA,EAC3B,OAAe;AACzC;;;ACjBA,SAA6B,eAA+B,kBAAkB;AA+B7E;AARD,IAAM,iBAAoD,CAAC;AAAA,EAC1D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AACf,MACC;AAAA,EAAC;AAAA;AAAA,IACA,cAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM,QAAQ;AAAA,IAEb;AAAA;AACF;AAGD,IAAM,wBAAkE,CAAC,EAAE,UAAU,MACpF,oBAAC,SAAI,WAAsB,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,gBAAe,eAAW,MACpG,8BAAC,UAAK,GAAE,qBAAoB,QAAO,gBAAe,aAAY,OAAM,MAAK,QAAO,GACjF;AAGD,IAAM,WAA8B,EAAE,QAAQ,gBAAgB,eAAe,sBAAsB;AAEnG,IAAM,0BAA0B,cAAiC,QAAQ;AAElE,SAAS,yBAAyB,OAItC;AACF,QAAM,EAAE,QAAQ,eAAe,SAAS,IAAI;AAC5C,QAAM,QAA2B;AAAA,IAChC,QAAQ,UAAU,SAAS;AAAA,IAC3B,eAAe,iBAAiB,SAAS;AAAA,EAC1C;AACA,SAAO,oBAAC,wBAAwB,UAAxB,EAAiC,OAAe,UAAS;AAClE;AAEO,SAAS,sBAAyC;AACxD,SAAO,WAAW,uBAAuB;AAC1C;;;ACnEA,SAAS,iBAAAA,sBAAqB;AAQvB,IAAM,sBAAsBA,eAA2D,IAAI;;;ACRlG,SAAS,cAAAC,aAAY,4BAA4B;AAa1C,SAAS,YAId;AACD,QAAM,SAASC,YAAW,mBAAmB;AAC7C,MAAI,CAAC,QAAQ;AACZ,UAAM,IAAI,YAAY,gDAAgD;AAAA,EACvE;AACA,uBAAqB,OAAO,WAAW,OAAO,iBAAiB,OAAO,eAAe;AACrF,SAAO;AACR;;;AC1BA,SAAS,YAA6B;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAA8B;AAClD,SAAO,QAAQ,KAAK,GAAG,MAAM,CAAC;AAChC;","names":["createContext","useContext","useContext"]}
|
|
@@ -21,10 +21,24 @@ var WizardResolverError = (_class4 = class extends WizardError {constructor(...a
|
|
|
21
21
|
// src/react/components-provider.tsx
|
|
22
22
|
var _react = require('react');
|
|
23
23
|
var _jsxruntime = require('react/jsx-runtime');
|
|
24
|
-
var FallbackButton = (
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
var FallbackButton = ({
|
|
25
|
+
children,
|
|
26
|
+
className,
|
|
27
|
+
disabled,
|
|
28
|
+
onClick,
|
|
29
|
+
type,
|
|
30
|
+
"aria-label": ariaLabel
|
|
31
|
+
}) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32
|
+
"button",
|
|
33
|
+
{
|
|
34
|
+
"aria-label": ariaLabel,
|
|
35
|
+
className,
|
|
36
|
+
disabled,
|
|
37
|
+
onClick,
|
|
38
|
+
type: _nullishCoalesce(type, () => ( "button")),
|
|
39
|
+
children
|
|
40
|
+
}
|
|
41
|
+
);
|
|
28
42
|
var FallbackBackArrowIcon = ({ className }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "svg", { className, width: "16", height: "16", viewBox: "0 0 16 16", fill: "currentColor", "aria-hidden": true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { d: "M10 4 L6 8 L10 12", stroke: "currentColor", strokeWidth: "1.5", fill: "none" }) });
|
|
29
43
|
var defaults = { Button: FallbackButton, BackArrowIcon: FallbackBackArrowIcon };
|
|
30
44
|
var WizardComponentsContext = _react.createContext.call(void 0, defaults);
|
|
@@ -73,4 +87,4 @@ function cn(...inputs) {
|
|
|
73
87
|
|
|
74
88
|
|
|
75
89
|
exports.WizardError = WizardError; exports.WizardInitializationError = WizardInitializationError; exports.WizardNavigationError = WizardNavigationError; exports.WizardResolverError = WizardResolverError; exports.WizardComponentsProvider = WizardComponentsProvider; exports.useWizardComponents = useWizardComponents; exports.WizardEngineContext = WizardEngineContext; exports.useWizard = useWizard; exports.cn = cn;
|
|
76
|
-
//# sourceMappingURL=chunk-
|
|
90
|
+
//# sourceMappingURL=chunk-OV74AMBZ.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/knazark/work/extract-tmp/perks-extract/dist/chunk-OV74AMBZ.cjs","../src/core/errors/wizard.error.ts","../src/react/components-provider.tsx","../src/react/context.ts","../src/react/use-wizard.ts","../src/utils/cn.ts"],"names":["createContext","useContext"],"mappings":"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","file":"/Users/knazark/work/extract-tmp/perks-extract/dist/chunk-OV74AMBZ.cjs","sourcesContent":[null,"export class WizardError extends Error {\n\tpublic override readonly name: string = 'WizardError';\n\n\tconstructor(message?: string) {\n\t\tsuper(message);\n\t\tObject.setPrototypeOf(this, new.target.prototype);\n\t}\n}\n\nexport class WizardInitializationError extends WizardError {\n\tpublic override readonly name: string = 'WizardInitializationError';\n}\n\nexport class WizardNavigationError extends WizardError {\n\tpublic override readonly name: string = 'WizardNavigationError';\n}\n\nexport class WizardResolverError extends WizardError {\n\tpublic override readonly name: string = 'WizardResolverError';\n}\n","'use client';\n\nimport { type ComponentType, createContext, type ReactNode, useContext } from 'react';\n\nexport interface IWizardButtonProps {\n\tasChild?: boolean;\n\tchildren?: ReactNode;\n\tclassName?: string;\n\tdisabled?: boolean;\n\tonClick?: () => void;\n\ttype?: 'button' | 'submit';\n\tvariant?: 'default' | 'ghost';\n\tsize?: 'default' | 'icon-sm';\n\t'aria-label'?: string;\n}\n\nexport interface IWizardBackArrowIconProps {\n\tclassName?: string;\n}\n\nexport interface IWizardComponents {\n\tButton: ComponentType<IWizardButtonProps>;\n\tBackArrowIcon: ComponentType<IWizardBackArrowIconProps>;\n}\n\nconst FallbackButton: ComponentType<IWizardButtonProps> = ({\n\tchildren,\n\tclassName,\n\tdisabled,\n\tonClick,\n\ttype,\n\t'aria-label': ariaLabel,\n}) => (\n\t<button\n\t\taria-label={ariaLabel}\n\t\tclassName={className}\n\t\tdisabled={disabled}\n\t\tonClick={onClick}\n\t\ttype={type ?? 'button'}\n\t>\n\t\t{children}\n\t</button>\n);\n\nconst FallbackBackArrowIcon: ComponentType<IWizardBackArrowIconProps> = ({ className }) => (\n\t<svg className={className} width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\" aria-hidden>\n\t\t<path d=\"M10 4 L6 8 L10 12\" stroke=\"currentColor\" strokeWidth=\"1.5\" fill=\"none\" />\n\t</svg>\n);\n\nconst defaults: IWizardComponents = { Button: FallbackButton, BackArrowIcon: FallbackBackArrowIcon };\n\nconst WizardComponentsContext = createContext<IWizardComponents>(defaults);\n\nexport function WizardComponentsProvider(props: {\n\tButton?: ComponentType<IWizardButtonProps>;\n\tBackArrowIcon?: ComponentType<IWizardBackArrowIconProps>;\n\tchildren: ReactNode;\n}) {\n\tconst { Button, BackArrowIcon, children } = props;\n\tconst value: IWizardComponents = {\n\t\tButton: Button ?? defaults.Button,\n\t\tBackArrowIcon: BackArrowIcon ?? defaults.BackArrowIcon,\n\t};\n\treturn <WizardComponentsContext.Provider value={value}>{children}</WizardComponentsContext.Provider>;\n}\n\nexport function useWizardComponents(): IWizardComponents {\n\treturn useContext(WizardComponentsContext);\n}\n","'use client';\n\nimport { createContext } from 'react';\n\nimport type { WizardEngine } from '../core/wizard-engine';\n\n/**\n * React context exposing the active `WizardEngine` instance to descendants.\n * `null` outside a `<WizardProvider>` — `useWizard()` throws a clear error.\n */\nexport const WizardEngineContext = createContext<null | WizardEngine<string, string, string>>(null);\n","'use client';\n\nimport { useContext, useSyncExternalStore } from 'react';\n\nimport type { WizardEngine } from '../core/wizard-engine';\n\nimport { WizardError } from '../core/errors';\nimport { WizardEngineContext } from './context';\n\n/**\n * Returns the active `WizardEngine` instance and re-renders the consumer on\n * every tree change. Throws if used outside a `<WizardProvider>`.\n *\n * Engine identity is stable across renders.\n */\nexport function useWizard<Step extends string, Category extends string, Branch extends string = string>(): WizardEngine<\n\tStep,\n\tCategory,\n\tBranch\n> {\n\tconst engine = useContext(WizardEngineContext) as null | WizardEngine<Step, Category, Branch>;\n\tif (!engine) {\n\t\tthrow new WizardError('useWizard must be used inside <WizardProvider>');\n\t}\n\tuseSyncExternalStore(engine.subscribe, engine.getTreeSnapshot, engine.getTreeSnapshot);\n\treturn engine;\n}\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(...inputs));\n}\n"]}
|
package/dist/index.cjs
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _chunkOV74AMBZcjs = require('./chunk-OV74AMBZ.cjs');
|
|
13
13
|
|
|
14
14
|
// src/enums/wizard-event-type.enum.ts
|
|
15
15
|
var WizardEventType = /* @__PURE__ */ ((WizardEventType2) => {
|
|
@@ -229,7 +229,7 @@ var WizardRule = class {
|
|
|
229
229
|
var WizardActiveStepRule = class extends WizardRule {
|
|
230
230
|
verify({ lastActiveStep }) {
|
|
231
231
|
if (!lastActiveStep) {
|
|
232
|
-
throw new (0,
|
|
232
|
+
throw new (0, _chunkOV74AMBZcjs.WizardError)("[WizardActiveStepRule]: There are no available active step in tree state.");
|
|
233
233
|
}
|
|
234
234
|
}
|
|
235
235
|
};
|
|
@@ -241,7 +241,7 @@ var WizardPassedPrevCategoriesRule = class extends WizardRule {
|
|
|
241
241
|
const hasUnpassedPrevCategories = prevCategories.some((prevCategory) => !prevCategory.isPassed);
|
|
242
242
|
if (hasUnpassedPrevCategories) {
|
|
243
243
|
const prevCategoryNames = prevCategories.map((prevCategory) => prevCategory.id).join(",");
|
|
244
|
-
throw new (0,
|
|
244
|
+
throw new (0, _chunkOV74AMBZcjs.WizardError)(
|
|
245
245
|
`[WizardPassedPrevCategoriesRule]: Active category "${activeCategory.id}" has neither completed nor skipped prev categories. Please, skip or complete categories: "${prevCategoryNames}".`
|
|
246
246
|
);
|
|
247
247
|
}
|
|
@@ -255,7 +255,7 @@ var WizardPassedPrevStepsRule = class extends WizardRule {
|
|
|
255
255
|
const prevUnpassedSteps = prevSteps.filter((prevStep) => !prevStep.isCompleted && !prevStep.isSkipped);
|
|
256
256
|
if (prevUnpassedSteps.length) {
|
|
257
257
|
const prevStepNames = prevUnpassedSteps.map((prevStep) => prevStep.id).join(",");
|
|
258
|
-
throw new (0,
|
|
258
|
+
throw new (0, _chunkOV74AMBZcjs.WizardError)(
|
|
259
259
|
`[WizardPassedPrevStepsRule]: Last active step "${activeCategory.lastActiveStep.id}" has not completed steps before. Please, complete or hide steps: "${prevStepNames}".`
|
|
260
260
|
);
|
|
261
261
|
}
|
|
@@ -266,7 +266,7 @@ var WizardPassedPrevStepsRule = class extends WizardRule {
|
|
|
266
266
|
var WizardShownActiveCategoryRule = class extends WizardRule {
|
|
267
267
|
verify({ activeCategory }) {
|
|
268
268
|
if (!activeCategory.isShow) {
|
|
269
|
-
throw new (0,
|
|
269
|
+
throw new (0, _chunkOV74AMBZcjs.WizardError)(
|
|
270
270
|
`[WizardShownActiveCategoryRule]: Active category is hidden. Please, show category "${activeCategory.id}" to be able to activate it.`
|
|
271
271
|
);
|
|
272
272
|
}
|
|
@@ -278,7 +278,7 @@ var WizardSingleActiveCategoryRule = class extends WizardRule {
|
|
|
278
278
|
verify({ activeBranch }) {
|
|
279
279
|
if (activeBranch.activeCategories.length > 1) {
|
|
280
280
|
const activeCategoryNames = activeBranch.activeCategories.map((c) => c.id).join(",");
|
|
281
|
-
throw new (0,
|
|
281
|
+
throw new (0, _chunkOV74AMBZcjs.WizardError)(
|
|
282
282
|
`[WizardSingleActiveCategoryRule]: There are 2 active categories at the same time: ${activeCategoryNames}.`
|
|
283
283
|
);
|
|
284
284
|
}
|
|
@@ -659,7 +659,7 @@ var WizardInitializerService = class {
|
|
|
659
659
|
if (!activeBranch) return;
|
|
660
660
|
if (!htmlTree.branchMap[activeBranch]) {
|
|
661
661
|
const branchIds = htmlTree.branches.map((branch) => branch.id).join(",");
|
|
662
|
-
throw new (0,
|
|
662
|
+
throw new (0, _chunkOV74AMBZcjs.WizardError)(
|
|
663
663
|
`[WizardInitializerService02]: There is no branch with id "${activeBranch}". List of available branches: ${branchIds}.`
|
|
664
664
|
);
|
|
665
665
|
}
|
|
@@ -672,7 +672,7 @@ var WizardInitializerService = class {
|
|
|
672
672
|
else seen.add(s.id);
|
|
673
673
|
}
|
|
674
674
|
if (duplicates.length > 0) {
|
|
675
|
-
throw new (0,
|
|
675
|
+
throw new (0, _chunkOV74AMBZcjs.WizardInitializationError)(
|
|
676
676
|
`[WizardInitializerService01]: There are steps with the same ID: ${duplicates.join(",")}.`
|
|
677
677
|
);
|
|
678
678
|
}
|
|
@@ -841,7 +841,7 @@ var WizardNavigationService = (_class17 = class {
|
|
|
841
841
|
if (this.isAbortReason(e, abort.signal)) {
|
|
842
842
|
return false;
|
|
843
843
|
}
|
|
844
|
-
if (e instanceof
|
|
844
|
+
if (e instanceof _chunkOV74AMBZcjs.WizardResolverError) {
|
|
845
845
|
this.emitter.emit(new WizardNavigationCancelledEvent(navigation, "resolver"));
|
|
846
846
|
return false;
|
|
847
847
|
}
|
|
@@ -931,7 +931,7 @@ var WizardNavigationService = (_class17 = class {
|
|
|
931
931
|
const result = await Promise.race([Promise.resolve(resolver(navigation)), abortPromise]);
|
|
932
932
|
if (signal.aborted) throw new DOMException("aborted", "AbortError");
|
|
933
933
|
if (!result) {
|
|
934
|
-
throw new (0,
|
|
934
|
+
throw new (0, _chunkOV74AMBZcjs.WizardResolverError)(`Resolver rejected navigation ${navigation.id}`);
|
|
935
935
|
}
|
|
936
936
|
}
|
|
937
937
|
isAbortReason(error, signal) {
|
|
@@ -1001,7 +1001,7 @@ var WizardStateService = class {
|
|
|
1001
1001
|
const toCategoryIndex = toCategoryBranch.getShownCategoryIndex(toCategory);
|
|
1002
1002
|
const activeCategoryIndex = toCategoryBranch.getShownCategoryIndex(activeCategory);
|
|
1003
1003
|
if (activeBranch !== toCategoryBranch && toCategoryIndex > activeCategoryIndex) {
|
|
1004
|
-
throw new (0,
|
|
1004
|
+
throw new (0, _chunkOV74AMBZcjs.WizardError)(
|
|
1005
1005
|
`[State02]: Trying to switch to category "${categoryId}" in different branch "${toCategoryBranch.id}" from current active branch "${activeBranch.id}", but new category has uncompleted prev category in new branch.`
|
|
1006
1006
|
);
|
|
1007
1007
|
}
|
|
@@ -1038,7 +1038,7 @@ var WizardStateService = class {
|
|
|
1038
1038
|
const nextCategory = nextBranch.nextCategory;
|
|
1039
1039
|
const nextStep = activeCategory.nextStep;
|
|
1040
1040
|
if (activeBranch.activeCategory !== nextBranch.activeCategory) {
|
|
1041
|
-
throw new (0,
|
|
1041
|
+
throw new (0, _chunkOV74AMBZcjs.WizardError)(
|
|
1042
1042
|
`[State01]: In order to move to the "${branch}" branch, you need to have common category between 2 branches`
|
|
1043
1043
|
);
|
|
1044
1044
|
}
|
|
@@ -1063,7 +1063,7 @@ var WizardStateService = class {
|
|
|
1063
1063
|
const activeStep = activeCategory.lastActiveStep;
|
|
1064
1064
|
const nextCategory = nextBranch.nextCategory;
|
|
1065
1065
|
if (activeBranch.activeCategory !== nextBranch.activeCategory) {
|
|
1066
|
-
throw new (0,
|
|
1066
|
+
throw new (0, _chunkOV74AMBZcjs.WizardError)(
|
|
1067
1067
|
`[State01]: In order to move to the "${branch}" branch, you need to have common category between 2 branches`
|
|
1068
1068
|
);
|
|
1069
1069
|
}
|
|
@@ -1381,7 +1381,7 @@ var WizardLog = class {
|
|
|
1381
1381
|
}
|
|
1382
1382
|
|
|
1383
1383
|
error(e) {
|
|
1384
|
-
if (!(e instanceof
|
|
1384
|
+
if (!(e instanceof _chunkOV74AMBZcjs.WizardError)) {
|
|
1385
1385
|
console.error(e);
|
|
1386
1386
|
return;
|
|
1387
1387
|
}
|
|
@@ -1422,7 +1422,7 @@ var WizardStore = (_class20 = class {
|
|
|
1422
1422
|
}
|
|
1423
1423
|
getTreeSnapshot() {
|
|
1424
1424
|
if (!this.current) {
|
|
1425
|
-
throw new (0,
|
|
1425
|
+
throw new (0, _chunkOV74AMBZcjs.WizardInitializationError)("[WizardStore] getTreeSnapshot called before init");
|
|
1426
1426
|
}
|
|
1427
1427
|
return this.current;
|
|
1428
1428
|
}
|
|
@@ -1440,7 +1440,7 @@ var WizardStore = (_class20 = class {
|
|
|
1440
1440
|
setState(tree) {
|
|
1441
1441
|
if (this.disposed) return;
|
|
1442
1442
|
if (!this.initialTree) {
|
|
1443
|
-
throw new (0,
|
|
1443
|
+
throw new (0, _chunkOV74AMBZcjs.WizardInitializationError)("[WizardStore] setState called before init");
|
|
1444
1444
|
}
|
|
1445
1445
|
if (this.current === tree) return;
|
|
1446
1446
|
this.current = tree;
|
|
@@ -1690,7 +1690,7 @@ var WizardCategoryDirection = /* @__PURE__ */ ((WizardCategoryDirection2) => {
|
|
|
1690
1690
|
var _reactslot = require('@radix-ui/react-slot');
|
|
1691
1691
|
var _jsxruntime = require('react/jsx-runtime');
|
|
1692
1692
|
function WizardActionButton(props) {
|
|
1693
|
-
const { Button } =
|
|
1693
|
+
const { Button } = _chunkOV74AMBZcjs.useWizardComponents.call(void 0, );
|
|
1694
1694
|
if (props.asChild) {
|
|
1695
1695
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactslot.Slot, { className: props.className, onClick: props.onClick, children: props.children });
|
|
1696
1696
|
}
|
|
@@ -1700,7 +1700,7 @@ function WizardActionButton(props) {
|
|
|
1700
1700
|
// src/react/components/wizard-back.tsx
|
|
1701
1701
|
|
|
1702
1702
|
function WizardBack(props) {
|
|
1703
|
-
const wizard =
|
|
1703
|
+
const wizard = _chunkOV74AMBZcjs.useWizard.call(void 0, );
|
|
1704
1704
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1705
1705
|
WizardActionButton,
|
|
1706
1706
|
{
|
|
@@ -1717,7 +1717,7 @@ function WizardBack(props) {
|
|
|
1717
1717
|
// src/react/components/wizard-category.tsx
|
|
1718
1718
|
|
|
1719
1719
|
function WizardCategory(props) {
|
|
1720
|
-
const wizard =
|
|
1720
|
+
const wizard = _chunkOV74AMBZcjs.useWizard.call(void 0, );
|
|
1721
1721
|
if (wizard.tree.activeCategory.id !== props.categoryId) return null;
|
|
1722
1722
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: props.children });
|
|
1723
1723
|
}
|
|
@@ -1734,7 +1734,7 @@ function WizardStepperDot(props) {
|
|
|
1734
1734
|
{
|
|
1735
1735
|
"aria-current": state === "active" ? "step" : void 0,
|
|
1736
1736
|
"aria-label": _nullishCoalesce(label, () => ( state)),
|
|
1737
|
-
className:
|
|
1737
|
+
className: _chunkOV74AMBZcjs.cn.call(void 0,
|
|
1738
1738
|
"relative flex size-3 shrink-0 items-center justify-center rounded-full border-2 transition-colors",
|
|
1739
1739
|
state === "pending" && "border-border bg-background",
|
|
1740
1740
|
state === "active" && "border-success-text bg-success-text ring-2 ring-success-border/40 ring-offset-2 ring-offset-background",
|
|
@@ -1759,7 +1759,7 @@ function WizardStepperDot(props) {
|
|
|
1759
1759
|
label && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1760
1760
|
"span",
|
|
1761
1761
|
{
|
|
1762
|
-
className:
|
|
1762
|
+
className: _chunkOV74AMBZcjs.cn.call(void 0,
|
|
1763
1763
|
"absolute -top-6 left-0 -translate-x-[calc(50%-0.375rem)] text-sm font-semibold whitespace-nowrap",
|
|
1764
1764
|
state === "active" && "text-success-text",
|
|
1765
1765
|
state !== "active" && "text-muted-foreground"
|
|
@@ -1805,7 +1805,7 @@ function getDotState(category, progress) {
|
|
|
1805
1805
|
// src/react/components/wizard-header.tsx
|
|
1806
1806
|
|
|
1807
1807
|
function WizardHeader() {
|
|
1808
|
-
const wizard =
|
|
1808
|
+
const wizard = _chunkOV74AMBZcjs.useWizard.call(void 0, );
|
|
1809
1809
|
const tree = wizard.tree;
|
|
1810
1810
|
const config = wizard.configOptions;
|
|
1811
1811
|
if (!config.isShowWizardHeader) return null;
|
|
@@ -1836,7 +1836,7 @@ function WizardHeader() {
|
|
|
1836
1836
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1837
1837
|
"header",
|
|
1838
1838
|
{
|
|
1839
|
-
className:
|
|
1839
|
+
className: _chunkOV74AMBZcjs.cn.call(void 0,
|
|
1840
1840
|
"relative mb-8 flex items-center gap-4 border-b border-border bg-background px-4 py-3",
|
|
1841
1841
|
config.stickyHeader && "sticky top-0 z-10"
|
|
1842
1842
|
),
|
|
@@ -1861,7 +1861,7 @@ function WizardHeader() {
|
|
|
1861
1861
|
// src/react/components/wizard-next.tsx
|
|
1862
1862
|
|
|
1863
1863
|
function WizardNext(props) {
|
|
1864
|
-
const wizard =
|
|
1864
|
+
const wizard = _chunkOV74AMBZcjs.useWizard.call(void 0, );
|
|
1865
1865
|
const defaultLabel = !props.asChild && props.children === void 0 ? getNextLabel(wizard) : "";
|
|
1866
1866
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1867
1867
|
WizardActionButton,
|
|
@@ -1891,7 +1891,7 @@ function getNextLabel(wizard) {
|
|
|
1891
1891
|
// src/react/hooks/use-wizard-categories-view.ts
|
|
1892
1892
|
var EMPTY_SUB_STEPS = [];
|
|
1893
1893
|
function useWizardCategoriesView() {
|
|
1894
|
-
const wizard =
|
|
1894
|
+
const wizard = _chunkOV74AMBZcjs.useWizard.call(void 0, );
|
|
1895
1895
|
return wizard.tree.activeBranch.shownCategories.map((category) => projectCategory(category));
|
|
1896
1896
|
}
|
|
1897
1897
|
function getCategoryState(category) {
|
|
@@ -1915,11 +1915,11 @@ function projectCategory(category) {
|
|
|
1915
1915
|
|
|
1916
1916
|
function WizardRail(props) {
|
|
1917
1917
|
const { canAccessCategory, className, headerI18n, subStepLabels } = props;
|
|
1918
|
-
const wizard =
|
|
1918
|
+
const wizard = _chunkOV74AMBZcjs.useWizard.call(void 0, );
|
|
1919
1919
|
const view = useWizardCategoriesView();
|
|
1920
1920
|
const labels = _nullishCoalesce(headerI18n, () => ( wizard.configOptions.headerI18n));
|
|
1921
1921
|
const isClickable = (category) => _nullishCoalesce(_optionalChain([canAccessCategory, 'optionalCall', _39 => _39(category)]), () => ( defaultClickable(category.state)));
|
|
1922
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "nav", { "aria-label": "Wizard steps", className:
|
|
1922
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "nav", { "aria-label": "Wizard steps", className: _chunkOV74AMBZcjs.cn.call(void 0, "flex flex-col gap-1", className), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "ol", { className: "relative flex flex-col gap-1", children: view.map((category, idx) => {
|
|
1923
1923
|
const label = _nullishCoalesce(_optionalChain([labels, 'optionalAccess', _40 => _40[category.id]]), () => ( String(category.id)));
|
|
1924
1924
|
const clickable = isClickable(category);
|
|
1925
1925
|
const isLast = idx === view.length - 1;
|
|
@@ -1929,7 +1929,7 @@ function WizardRail(props) {
|
|
|
1929
1929
|
"span",
|
|
1930
1930
|
{
|
|
1931
1931
|
"aria-hidden": true,
|
|
1932
|
-
className:
|
|
1932
|
+
className: _chunkOV74AMBZcjs.cn.call(void 0,
|
|
1933
1933
|
"pointer-events-none absolute top-7 -bottom-2 left-5 w-px -translate-x-1/2 transition-colors duration-200",
|
|
1934
1934
|
isPassed ? "bg-success-border" : "bg-border"
|
|
1935
1935
|
)
|
|
@@ -1939,7 +1939,7 @@ function WizardRail(props) {
|
|
|
1939
1939
|
"button",
|
|
1940
1940
|
{
|
|
1941
1941
|
"aria-current": category.isActive ? "step" : void 0,
|
|
1942
|
-
className:
|
|
1942
|
+
className: _chunkOV74AMBZcjs.cn.call(void 0,
|
|
1943
1943
|
"group flex w-full items-center gap-3 rounded-md px-3 py-2 text-left text-sm font-medium transition-[color,background-color,transform] duration-200 ease-(--ease-out-strong)",
|
|
1944
1944
|
category.state === "active" && "bg-success-bg/60 text-success-text",
|
|
1945
1945
|
category.state === "completed" && "text-foreground",
|
|
@@ -1963,7 +1963,7 @@ function WizardRail(props) {
|
|
|
1963
1963
|
"li",
|
|
1964
1964
|
{
|
|
1965
1965
|
"aria-current": step.isActive ? "step" : void 0,
|
|
1966
|
-
className:
|
|
1966
|
+
className: _chunkOV74AMBZcjs.cn.call(void 0,
|
|
1967
1967
|
"rounded px-2 py-1 text-sm",
|
|
1968
1968
|
step.isActive ? "text-success-text font-medium" : "text-muted-foreground"
|
|
1969
1969
|
),
|
|
@@ -1982,7 +1982,7 @@ function RailDot({ state }) {
|
|
|
1982
1982
|
"span",
|
|
1983
1983
|
{
|
|
1984
1984
|
"aria-hidden": true,
|
|
1985
|
-
className:
|
|
1985
|
+
className: _chunkOV74AMBZcjs.cn.call(void 0,
|
|
1986
1986
|
"flex size-4 shrink-0 items-center justify-center rounded-full border-2 transition-colors",
|
|
1987
1987
|
state === "pending" && "border-border bg-background",
|
|
1988
1988
|
state === "active" && "border-success-border bg-success-bg",
|
|
@@ -1998,9 +1998,9 @@ function RailDot({ state }) {
|
|
|
1998
1998
|
var _react = require('react');
|
|
1999
1999
|
|
|
2000
2000
|
function WizardStep(props) {
|
|
2001
|
-
const engine = _react.useContext.call(void 0,
|
|
2001
|
+
const engine = _react.useContext.call(void 0, _chunkOV74AMBZcjs.WizardEngineContext);
|
|
2002
2002
|
if (!engine) {
|
|
2003
|
-
throw new (0,
|
|
2003
|
+
throw new (0, _chunkOV74AMBZcjs.WizardError)("WizardStep must be used inside <WizardProvider>");
|
|
2004
2004
|
}
|
|
2005
2005
|
const getSnapshot = _react.useCallback.call(void 0, () => engine.isStepVisible(props.id), [engine, props.id]);
|
|
2006
2006
|
const isVisible = _react.useSyncExternalStore.call(void 0, engine.subscribe, getSnapshot, getSnapshot);
|
|
@@ -2045,7 +2045,7 @@ function WizardProvider(props) {
|
|
|
2045
2045
|
if (!engine) {
|
|
2046
2046
|
return null;
|
|
2047
2047
|
}
|
|
2048
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2048
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOV74AMBZcjs.WizardEngineContext.Provider, { value: engine, children });
|
|
2049
2049
|
}
|
|
2050
2050
|
|
|
2051
2051
|
// src/react/use-wizard-engine-ref.ts
|
|
@@ -2056,7 +2056,7 @@ function useWizardEngineRef() {
|
|
|
2056
2056
|
function WizardEngineRefCapture({
|
|
2057
2057
|
engineRef
|
|
2058
2058
|
}) {
|
|
2059
|
-
const wizard =
|
|
2059
|
+
const wizard = _chunkOV74AMBZcjs.useWizard.call(void 0, );
|
|
2060
2060
|
_react.useEffect.call(void 0, () => {
|
|
2061
2061
|
engineRef.current = wizard;
|
|
2062
2062
|
return () => {
|
|
@@ -2069,9 +2069,9 @@ function WizardEngineRefCapture({
|
|
|
2069
2069
|
// src/react/use-wizard-event.ts
|
|
2070
2070
|
|
|
2071
2071
|
function useWizardEvent(type, handler) {
|
|
2072
|
-
const engine = _react.useContext.call(void 0,
|
|
2072
|
+
const engine = _react.useContext.call(void 0, _chunkOV74AMBZcjs.WizardEngineContext);
|
|
2073
2073
|
if (!engine) {
|
|
2074
|
-
throw new (0,
|
|
2074
|
+
throw new (0, _chunkOV74AMBZcjs.WizardError)("useWizardEvent must be used inside <WizardProvider>");
|
|
2075
2075
|
}
|
|
2076
2076
|
const handlerRef = _react.useRef.call(void 0, handler);
|
|
2077
2077
|
_react.useEffect.call(void 0, () => {
|
|
@@ -2085,9 +2085,9 @@ function useWizardEvent(type, handler) {
|
|
|
2085
2085
|
// src/react/use-wizard-step.ts
|
|
2086
2086
|
|
|
2087
2087
|
function useWizardStep(stepId) {
|
|
2088
|
-
const engine = _react.useContext.call(void 0,
|
|
2088
|
+
const engine = _react.useContext.call(void 0, _chunkOV74AMBZcjs.WizardEngineContext);
|
|
2089
2089
|
if (!engine) {
|
|
2090
|
-
throw new (0,
|
|
2090
|
+
throw new (0, _chunkOV74AMBZcjs.WizardError)("useWizardStep must be used inside <WizardProvider>");
|
|
2091
2091
|
}
|
|
2092
2092
|
const lastRef = _react.useRef.call(void 0, null);
|
|
2093
2093
|
const getSnapshot = _react.useCallback.call(void 0, () => {
|
|
@@ -2185,5 +2185,5 @@ function useWizardStep(stepId) {
|
|
|
2185
2185
|
|
|
2186
2186
|
|
|
2187
2187
|
|
|
2188
|
-
exports.TypedEmitter = TypedEmitter; exports.WizardActiveProgressStrategy = WizardActiveProgressStrategy; exports.WizardActiveStepRule = WizardActiveStepRule; exports.WizardBack = WizardBack; exports.WizardCategory = WizardCategory; exports.WizardCategoryDirection = WizardCategoryDirection; exports.WizardCompleteEvent = WizardCompleteEvent; exports.WizardCompleteTreeState = WizardCompleteTreeState; exports.WizardComponentsProvider =
|
|
2188
|
+
exports.TypedEmitter = TypedEmitter; exports.WizardActiveProgressStrategy = WizardActiveProgressStrategy; exports.WizardActiveStepRule = WizardActiveStepRule; exports.WizardBack = WizardBack; exports.WizardCategory = WizardCategory; exports.WizardCategoryDirection = WizardCategoryDirection; exports.WizardCompleteEvent = WizardCompleteEvent; exports.WizardCompleteTreeState = WizardCompleteTreeState; exports.WizardComponentsProvider = _chunkOV74AMBZcjs.WizardComponentsProvider; exports.WizardConfig = WizardConfig; exports.WizardDefaultInitializer = WizardDefaultInitializer; exports.WizardDefaultVisibilityStrategy = WizardDefaultVisibilityStrategy; exports.WizardEngine = WizardEngine; exports.WizardEngineContext = _chunkOV74AMBZcjs.WizardEngineContext; exports.WizardEngineRefCapture = WizardEngineRefCapture; exports.WizardError = _chunkOV74AMBZcjs.WizardError; exports.WizardEvent = WizardEvent; exports.WizardEventType = WizardEventType; exports.WizardExitEvent = WizardExitEvent; exports.WizardExitTreeState = WizardExitTreeState; exports.WizardHeader = WizardHeader; exports.WizardInitializationError = _chunkOV74AMBZcjs.WizardInitializationError; exports.WizardInitializer = WizardInitializer; exports.WizardInitializerService = WizardInitializerService; exports.WizardLastActiveVisibilityStrategy = WizardLastActiveVisibilityStrategy; exports.WizardListener = WizardListener; exports.WizardLog = WizardLog; exports.WizardNavigation = WizardNavigation; exports.WizardNavigationCancelledEvent = WizardNavigationCancelledEvent; exports.WizardNavigationEndEvent = WizardNavigationEndEvent; exports.WizardNavigationError = _chunkOV74AMBZcjs.WizardNavigationError; exports.WizardNavigationErrorEvent = WizardNavigationErrorEvent; exports.WizardNavigationIgnoredEvent = WizardNavigationIgnoredEvent; exports.WizardNavigationService = WizardNavigationService; exports.WizardNavigationStartEvent = WizardNavigationStartEvent; exports.WizardNext = WizardNext; exports.WizardPassedPrevCategoriesRule = WizardPassedPrevCategoriesRule; exports.WizardPassedPrevStepsRule = WizardPassedPrevStepsRule; exports.WizardProgressStrategy = WizardProgressStrategy; exports.WizardProvider = WizardProvider; exports.WizardRail = WizardRail; exports.WizardResolveEndEvent = WizardResolveEndEvent; exports.WizardResolveStartEvent = WizardResolveStartEvent; exports.WizardResolverError = _chunkOV74AMBZcjs.WizardResolverError; exports.WizardRule = WizardRule; exports.WizardScrollEndEvent = WizardScrollEndEvent; exports.WizardScrollStartEvent = WizardScrollStartEvent; exports.WizardScrollStrategy = WizardScrollStrategy; exports.WizardShownActiveCategoryRule = WizardShownActiveCategoryRule; exports.WizardSingleActiveCategoryRule = WizardSingleActiveCategoryRule; exports.WizardSmoothScrollStrategy = WizardSmoothScrollStrategy; exports.WizardStateService = WizardStateService; exports.WizardStep = WizardStep; exports.WizardStepHideEvent = WizardStepHideEvent; exports.WizardStepShowEvent = WizardStepShowEvent; exports.WizardStepper = WizardStepper; exports.WizardStepperDot = WizardStepperDot; exports.WizardStore = WizardStore; exports.WizardTreeStateBuilder = WizardTreeStateBuilder; exports.WizardVisibilityStrategy = WizardVisibilityStrategy; exports.buildWizardBranchState = buildWizardBranchState; exports.buildWizardCategoryState = buildWizardCategoryState; exports.buildWizardTreeState = buildWizardTreeState; exports.composeWizardProviders = composeWizardProviders; exports.scrollToStep = scrollToStep; exports.useWizard = _chunkOV74AMBZcjs.useWizard; exports.useWizardCategoriesView = useWizardCategoriesView; exports.useWizardComponents = _chunkOV74AMBZcjs.useWizardComponents; exports.useWizardEngineRef = useWizardEngineRef; exports.useWizardEvent = useWizardEvent; exports.useWizardStep = useWizardStep; exports.withConfig = withConfig; exports.withInitializer = withInitializer; exports.withListener = withListener; exports.withProgressStrategy = withProgressStrategy; exports.withScrollContainer = withScrollContainer; exports.withScrollStrategy = withScrollStrategy; exports.withVisibilityStrategy = withVisibilityStrategy; exports.wizardDefaultBranch = wizardDefaultBranch; exports.wizardDefaultConfig = wizardDefaultConfig; exports.wizardDefaultState = wizardDefaultState; exports.wizardRules = wizardRules;
|
|
2189
2189
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.js
CHANGED
package/dist/shadcn/index.cjs
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
var
|
|
7
|
+
var _chunkOV74AMBZcjs = require('../chunk-OV74AMBZ.cjs');
|
|
8
8
|
|
|
9
9
|
// src/shadcn/default-back-arrow-icon.tsx
|
|
10
10
|
var _jsxruntime = require('react/jsx-runtime');
|
|
@@ -12,7 +12,7 @@ function defaultBackArrowIcon({ className, ...rest }) {
|
|
|
12
12
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
13
13
|
"svg",
|
|
14
14
|
{
|
|
15
|
-
className:
|
|
15
|
+
className: _chunkOV74AMBZcjs.cn.call(void 0,
|
|
16
16
|
"h-4 w-4 transition-transform duration-150 group-hover:-translate-x-0.5",
|
|
17
17
|
className
|
|
18
18
|
),
|
|
@@ -60,7 +60,7 @@ var defaultButton = _react.forwardRef.call(void 0, function DefaultButton({ asCh
|
|
|
60
60
|
{
|
|
61
61
|
ref,
|
|
62
62
|
type: asChild ? void 0 : _nullishCoalesce(type, () => ( "button")),
|
|
63
|
-
className:
|
|
63
|
+
className: _chunkOV74AMBZcjs.cn.call(void 0, buttonVariants({ size, variant }), className),
|
|
64
64
|
...rest
|
|
65
65
|
}
|
|
66
66
|
);
|
|
@@ -69,7 +69,7 @@ var defaultButton = _react.forwardRef.call(void 0, function DefaultButton({ asCh
|
|
|
69
69
|
// src/shadcn/components-provider-with-defaults.tsx
|
|
70
70
|
|
|
71
71
|
function WizardComponentsProviderWithDefaults({ children }) {
|
|
72
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
72
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOV74AMBZcjs.WizardComponentsProvider, { Button: defaultButton, BackArrowIcon: defaultBackArrowIcon, children });
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
// src/shadcn/wizard-layout.tsx
|
|
@@ -82,12 +82,12 @@ var WizardLayoutContext = _react.createContext.call(void 0, null);
|
|
|
82
82
|
|
|
83
83
|
// src/shadcn/wizard-layout.tsx
|
|
84
84
|
|
|
85
|
-
|
|
86
|
-
const { children, className, defaultRailTitle = "Wizard steps", rail, railTitle,
|
|
85
|
+
var WizardLayout = _react.forwardRef.call(void 0, function WizardLayout2(props, ref) {
|
|
86
|
+
const { children, className, defaultRailTitle = "Wizard steps", rail, railTitle, topBar } = props;
|
|
87
87
|
const [mobileSheetOpen, setMobileSheetOpen] = _react.useState.call(void 0, false);
|
|
88
88
|
const closeMobileSheet = () => setMobileSheetOpen(false);
|
|
89
89
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, WizardLayoutContext.Provider, { value: { mobileSheetOpen, setMobileSheetOpen }, children: [
|
|
90
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className:
|
|
90
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkOV74AMBZcjs.cn.call(void 0, "flex h-full min-h-0 w-full flex-1 bg-sidebar", className), "data-slot": "wizard-layout-outer", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
91
91
|
"div",
|
|
92
92
|
{
|
|
93
93
|
className: "flex flex-1 overflow-hidden bg-background text-foreground shadow-sm ring-1 ring-foreground/10 md:rounded-xl",
|
|
@@ -134,7 +134,7 @@ function WizardLayout(props) {
|
|
|
134
134
|
)
|
|
135
135
|
] }) })
|
|
136
136
|
] });
|
|
137
|
-
}
|
|
137
|
+
});
|
|
138
138
|
|
|
139
139
|
// src/shadcn/wizard-top-bar.tsx
|
|
140
140
|
var _lucidereact = require('lucide-react');
|
|
@@ -142,9 +142,9 @@ var _lucidereact = require('lucide-react');
|
|
|
142
142
|
|
|
143
143
|
function WizardTopBar(props) {
|
|
144
144
|
const { backLabel, className, closeLabel, disabled, extraActions, finishLabel, menuLabel, nextLabel, onClose } = props;
|
|
145
|
-
const wizard =
|
|
145
|
+
const wizard = _chunkOV74AMBZcjs.useWizard.call(void 0, );
|
|
146
146
|
const layout = _react.useContext.call(void 0, WizardLayoutContext);
|
|
147
|
-
const { Button, BackArrowIcon } =
|
|
147
|
+
const { Button, BackArrowIcon } = _chunkOV74AMBZcjs.useWizardComponents.call(void 0, );
|
|
148
148
|
const config = wizard.configOptions;
|
|
149
149
|
const tree = wizard.tree;
|
|
150
150
|
const isFirstStep = tree.activeBranch.prevCategory == null && tree.activeCategory.prevStep == null;
|
|
@@ -157,7 +157,7 @@ function WizardTopBar(props) {
|
|
|
157
157
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
158
158
|
"div",
|
|
159
159
|
{
|
|
160
|
-
className:
|
|
160
|
+
className: _chunkOV74AMBZcjs.cn.call(void 0, "flex h-14 items-center gap-3 border-b border-border bg-background px-4 sm:px-6", className),
|
|
161
161
|
"data-slot": "wizard-top-bar",
|
|
162
162
|
children: [
|
|
163
163
|
layout && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/knazark/work/extract-tmp/perks-extract/dist/shadcn/index.cjs","../../src/shadcn/default-back-arrow-icon.tsx","../../src/shadcn/default-button.tsx","../../src/shadcn/components-provider-with-defaults.tsx","../../src/shadcn/wizard-layout.tsx","../../src/shadcn/wizard-layout.context.ts","../../src/shadcn/wizard-top-bar.tsx"],"names":["jsx","jsxs"],"mappings":"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","file":"/Users/knazark/work/extract-tmp/perks-extract/dist/shadcn/index.cjs","sourcesContent":[null,"'use client';\n\nimport { type ComponentProps } from 'react';\n\nimport { cn } from '~/utils/cn';\n\n/** Animated back-arrow icon. The arrow translates -2px on the parent's group-hover. */\nexport function defaultBackArrowIcon({ className, ...rest }: ComponentProps<'svg'>) {\n\treturn (\n\t\t<svg\n\t\t\tclassName={cn(\n\t\t\t\t'h-4 w-4 transition-transform duration-150 group-hover:-translate-x-0.5',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tfill=\"none\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tstrokeWidth={1.75}\n\t\t\tstrokeLinecap=\"round\"\n\t\t\tstrokeLinejoin=\"round\"\n\t\t\tviewBox=\"0 0 16 16\"\n\t\t\taria-hidden\n\t\t\t{...rest}\n\t\t>\n\t\t\t<path d=\"M10 4 L6 8 L10 12\" />\n\t\t</svg>\n\t);\n}\n","'use client';\n\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { forwardRef, type ReactNode } from 'react';\n\nimport { cn } from '~/utils/cn';\nimport { type IWizardButtonProps } from '../react/components-provider';\n\nconst buttonVariants = cva(\n\t'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: 'bg-primary text-primary-foreground hover:bg-primary/90',\n\t\t\t\tghost: 'hover:bg-accent hover:text-accent-foreground',\n\t\t\t},\n\t\t\tsize: {\n\t\t\t\tdefault: 'h-9 px-4 py-2',\n\t\t\t\t'icon-sm': 'h-8 w-8',\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: 'default',\n\t\t\tsize: 'default',\n\t\t},\n\t}\n);\n\ntype InternalProps = Omit<IWizardButtonProps, 'size' | 'variant'> &\n\tVariantProps<typeof buttonVariants> & {\n\t\tchildren?: ReactNode;\n\t};\n\nexport const defaultButton = forwardRef<HTMLButtonElement, InternalProps>(function DefaultButton(\n\t{ asChild, className, size, variant, type, ...rest },\n\tref\n) {\n\tconst Comp: any = asChild ? Slot : 'button';\n\treturn (\n\t\t<Comp\n\t\t\tref={ref}\n\t\t\ttype={asChild ? undefined : (type ?? 'button')}\n\t\t\tclassName={cn(buttonVariants({ size, variant }), className)}\n\t\t\t{...rest}\n\t\t/>\n\t);\n});\n","'use client';\n\nimport { type ReactNode } from 'react';\n\nimport { WizardComponentsProvider } from '../react/components-provider';\nimport { defaultBackArrowIcon } from './default-back-arrow-icon';\nimport { defaultButton } from './default-button';\n\n/**\n * Convenience wrapper around `WizardComponentsProvider` that wires in the\n * package-shipped `defaultButton` and `defaultBackArrowIcon`. Use this if\n * you want the styled adapter out of the box; use `WizardComponentsProvider`\n * directly if you want to pass your own.\n */\nexport function WizardComponentsProviderWithDefaults({ children }: { children: ReactNode }) {\n\treturn (\n\t\t<WizardComponentsProvider Button={defaultButton} BackArrowIcon={defaultBackArrowIcon}>\n\t\t\t{children}\n\t\t</WizardComponentsProvider>\n\t);\n}\n","'use client';\n\nimport * as Dialog from '@radix-ui/react-dialog';\nimport { type ReactNode, type Ref, useState } from 'react';\n\nimport { cn } from '~/utils/cn';\nimport { WizardLayoutContext } from './wizard-layout.context';\n\ninterface IWizardLayoutProps {\n\tchildren: ReactNode;\n\tclassName?: string;\n\tdefaultRailTitle?: string;\n\trail: ReactNode;\n\trailTitle?: ReactNode;\n\tref?: Ref<HTMLDivElement>;\n\ttopBar: ReactNode;\n}\n\n/**\n * Full-page wizard shell. Renders a top bar across the right column on\n * desktop, a vertical rail on the left, and a scrollable content area for\n * the active step. Below the `md` breakpoint the rail collapses into a\n * left-side dialog whose open state is exposed via `WizardLayoutContext`\n * so the top bar's hamburger button can drive it.\n */\nexport function WizardLayout(props: IWizardLayoutProps) {\n\tconst { children, className, defaultRailTitle = 'Wizard steps', rail, railTitle, ref, topBar } = props;\n\tconst [mobileSheetOpen, setMobileSheetOpen] = useState(false);\n\n\tconst closeMobileSheet = () => setMobileSheetOpen(false);\n\n\treturn (\n\t\t<WizardLayoutContext.Provider value={{ mobileSheetOpen, setMobileSheetOpen }}>\n\t\t\t<div className={cn('flex h-full min-h-0 w-full flex-1 bg-sidebar', className)} data-slot=\"wizard-layout-outer\">\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"flex flex-1 overflow-hidden bg-background text-foreground shadow-sm ring-1 ring-foreground/10 md:rounded-xl\"\n\t\t\t\t\tdata-slot=\"wizard-layout\"\n\t\t\t\t>\n\t\t\t\t\t<aside\n\t\t\t\t\t\tclassName=\"hidden w-[280px] shrink-0 flex-col gap-4 border-r border-border px-4 py-6 md:flex\"\n\t\t\t\t\t\tdata-slot=\"wizard-layout-rail\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{railTitle && <div className=\"px-3 text-base font-semibold text-foreground\">{railTitle}</div>}\n\t\t\t\t\t\t{rail}\n\t\t\t\t\t</aside>\n\n\t\t\t\t\t<div className=\"flex min-w-0 flex-1 flex-col\">\n\t\t\t\t\t\t{topBar}\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"min-h-0 flex-1 overflow-y-auto px-4 py-6 sm:px-8\"\n\t\t\t\t\t\t\tdata-slot=\"wizard-layout-scroll\"\n\t\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<Dialog.Root onOpenChange={setMobileSheetOpen} open={mobileSheetOpen}>\n\t\t\t\t<Dialog.Portal>\n\t\t\t\t\t<Dialog.Overlay className=\"fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\" />\n\t\t\t\t\t<Dialog.Content\n\t\t\t\t\t\taria-describedby={undefined}\n\t\t\t\t\t\tclassName=\"fixed inset-y-0 left-0 z-50 flex w-3/4 max-w-sm flex-col gap-4 border-r border-border bg-background px-4 py-6 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Dialog.Title className=\"px-3 text-base font-semibold\">{railTitle ?? defaultRailTitle}</Dialog.Title>\n\t\t\t\t\t\t<div onClickCapture={closeMobileSheet}>{rail}</div>\n\t\t\t\t\t</Dialog.Content>\n\t\t\t\t</Dialog.Portal>\n\t\t\t</Dialog.Root>\n\t\t</WizardLayoutContext.Provider>\n\t);\n}\n","'use client';\n\nimport { createContext } from 'react';\n\nexport interface IWizardLayoutContextValue {\n\tmobileSheetOpen: boolean;\n\tsetMobileSheetOpen: (open: boolean) => void;\n}\n\n/**\n * Communicates the rail's mobile-Sheet open state from `WizardLayout` to\n * `WizardTopBar`. Null outside a layout — consumers (top bar's hamburger\n * button) silently no-op when context is missing, so the top bar stays usable\n * outside `WizardLayout`.\n */\nexport const WizardLayoutContext = createContext<IWizardLayoutContextValue | null>(null);\n","'use client';\n\nimport { MenuIcon, XIcon } from 'lucide-react';\nimport { type ReactNode, useContext } from 'react';\n\nimport { useWizardComponents } from '../react/components-provider';\nimport { useWizard } from '../react/use-wizard';\nimport { cn } from '~/utils/cn';\nimport { WizardLayoutContext } from './wizard-layout.context';\n\ninterface IWizardTopBarProps {\n\tbackLabel?: ReactNode;\n\tclassName?: string;\n\tcloseLabel?: string;\n\tdisabled?: boolean;\n\textraActions?: ReactNode;\n\tfinishLabel?: ReactNode;\n\tmenuLabel?: string;\n\tnextLabel?: ReactNode;\n\tonClose: () => void;\n}\n\n/**\n * Header bar for full-page wizard layouts. Renders Back / primary action /\n * extras / close X. Reads `useWizard` for first/last-step detection. The\n * primary action is `type=\"submit\"` on the last step (lets the parent form\n * own submission) and dispatches `wizard.next()` otherwise. Hamburger only\n * surfaces when wrapped by a `WizardLayout`.\n */\nexport function WizardTopBar(props: IWizardTopBarProps) {\n\tconst { backLabel, className, closeLabel, disabled, extraActions, finishLabel, menuLabel, nextLabel, onClose } =\n\t\tprops;\n\tconst wizard = useWizard();\n\tconst layout = useContext(WizardLayoutContext);\n\tconst { Button, BackArrowIcon } = useWizardComponents();\n\n\tconst config = wizard.configOptions;\n\tconst tree = wizard.tree;\n\tconst isFirstStep = tree.activeBranch.prevCategory == null && tree.activeCategory.prevStep == null;\n\tconst isLastStep = tree.activeBranch.nextCategory == null && tree.activeCategory.nextStep == null;\n\n\tconst resolvedBackLabel = backLabel ?? config.backBtnText;\n\tconst resolvedFinishLabel = finishLabel ?? config.finishText;\n\tconst resolvedNextLabel = nextLabel ?? config.nextBtnText;\n\tconst resolvedMenuLabel = menuLabel ?? 'Open wizard steps';\n\tconst resolvedCloseLabel = closeLabel ?? 'Close';\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn('flex h-14 items-center gap-3 border-b border-border bg-background px-4 sm:px-6', className)}\n\t\t\tdata-slot=\"wizard-top-bar\"\n\t\t>\n\t\t\t{layout && (\n\t\t\t\t<Button\n\t\t\t\t\taria-label={resolvedMenuLabel}\n\t\t\t\t\tclassName=\"md:hidden\"\n\t\t\t\t\tonClick={() => layout.setMobileSheetOpen(true)}\n\t\t\t\t\tsize=\"icon-sm\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t>\n\t\t\t\t\t<MenuIcon />\n\t\t\t\t</Button>\n\t\t\t)}\n\n\t\t\t{!isFirstStep && (\n\t\t\t\t<button\n\t\t\t\t\taria-label={typeof resolvedBackLabel === 'string' ? resolvedBackLabel : undefined}\n\t\t\t\t\tclassName=\"group inline-flex items-center gap-1 rounded-md py-1 pr-2.5 pl-3.5 text-sm font-normal text-muted-foreground transition-colors duration-150 hover:bg-muted hover:text-foreground\"\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\tvoid wizard.back();\n\t\t\t\t\t}}\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t>\n\t\t\t\t\t<BackArrowIcon />\n\t\t\t\t\t<span>{resolvedBackLabel}</span>\n\t\t\t\t</button>\n\t\t\t)}\n\n\t\t\t<div className=\"flex flex-1 items-center justify-end gap-2\">\n\t\t\t\t{extraActions}\n\t\t\t\t{isLastStep ? (\n\t\t\t\t\t<Button disabled={disabled} key=\"wizard-finish\" type=\"submit\" variant=\"default\">\n\t\t\t\t\t\t{resolvedFinishLabel}\n\t\t\t\t\t</Button>\n\t\t\t\t) : (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tkey=\"wizard-next\"\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\tvoid wizard.next();\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"default\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{resolvedNextLabel}\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t\t<Button aria-label={resolvedCloseLabel} onClick={onClose} size=\"icon-sm\" type=\"button\" variant=\"ghost\">\n\t\t\t\t\t<XIcon />\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["/Users/knazark/work/extract-tmp/perks-extract/dist/shadcn/index.cjs","../../src/shadcn/default-back-arrow-icon.tsx","../../src/shadcn/default-button.tsx","../../src/shadcn/components-provider-with-defaults.tsx","../../src/shadcn/wizard-layout.tsx","../../src/shadcn/wizard-layout.context.ts","../../src/shadcn/wizard-top-bar.tsx"],"names":["jsx","forwardRef","WizardLayout","jsxs"],"mappings":"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","file":"/Users/knazark/work/extract-tmp/perks-extract/dist/shadcn/index.cjs","sourcesContent":[null,"'use client';\n\nimport { type ComponentProps } from 'react';\n\nimport { cn } from '~/utils/cn';\n\n/** Animated back-arrow icon. The arrow translates -2px on the parent's group-hover. */\nexport function defaultBackArrowIcon({ className, ...rest }: ComponentProps<'svg'>) {\n\treturn (\n\t\t<svg\n\t\t\tclassName={cn(\n\t\t\t\t'h-4 w-4 transition-transform duration-150 group-hover:-translate-x-0.5',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tfill=\"none\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tstrokeWidth={1.75}\n\t\t\tstrokeLinecap=\"round\"\n\t\t\tstrokeLinejoin=\"round\"\n\t\t\tviewBox=\"0 0 16 16\"\n\t\t\taria-hidden\n\t\t\t{...rest}\n\t\t>\n\t\t\t<path d=\"M10 4 L6 8 L10 12\" />\n\t\t</svg>\n\t);\n}\n","'use client';\n\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { type ElementType, forwardRef, type ReactNode } from 'react';\n\nimport { cn } from '~/utils/cn';\nimport { type IWizardButtonProps } from '../react/components-provider';\n\nconst buttonVariants = cva(\n\t'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: 'bg-primary text-primary-foreground hover:bg-primary/90',\n\t\t\t\tghost: 'hover:bg-accent hover:text-accent-foreground',\n\t\t\t},\n\t\t\tsize: {\n\t\t\t\tdefault: 'h-9 px-4 py-2',\n\t\t\t\t'icon-sm': 'h-8 w-8',\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: 'default',\n\t\t\tsize: 'default',\n\t\t},\n\t}\n);\n\ntype InternalProps = Omit<IWizardButtonProps, 'size' | 'variant'> &\n\tVariantProps<typeof buttonVariants> & {\n\t\tchildren?: ReactNode;\n\t};\n\nexport const defaultButton = forwardRef<HTMLButtonElement, InternalProps>(function DefaultButton(\n\t{ asChild, className, size, variant, type, ...rest },\n\tref\n) {\n\tconst Comp: ElementType = asChild ? Slot : 'button';\n\treturn (\n\t\t<Comp\n\t\t\tref={ref}\n\t\t\ttype={asChild ? undefined : (type ?? 'button')}\n\t\t\tclassName={cn(buttonVariants({ size, variant }), className)}\n\t\t\t{...rest}\n\t\t/>\n\t);\n});\n","'use client';\n\nimport { type ReactNode } from 'react';\n\nimport { WizardComponentsProvider } from '../react/components-provider';\nimport { defaultBackArrowIcon } from './default-back-arrow-icon';\nimport { defaultButton } from './default-button';\n\n/**\n * Convenience wrapper around `WizardComponentsProvider` that wires in the\n * package-shipped `defaultButton` and `defaultBackArrowIcon`. Use this if\n * you want the styled adapter out of the box; use `WizardComponentsProvider`\n * directly if you want to pass your own.\n */\nexport function WizardComponentsProviderWithDefaults({ children }: { children: ReactNode }) {\n\treturn (\n\t\t<WizardComponentsProvider Button={defaultButton} BackArrowIcon={defaultBackArrowIcon}>\n\t\t\t{children}\n\t\t</WizardComponentsProvider>\n\t);\n}\n","'use client';\n\nimport * as Dialog from '@radix-ui/react-dialog';\nimport { forwardRef, type ReactNode, useState } from 'react';\n\nimport { cn } from '~/utils/cn';\nimport { WizardLayoutContext } from './wizard-layout.context';\n\ninterface IWizardLayoutProps {\n\tchildren: ReactNode;\n\tclassName?: string;\n\tdefaultRailTitle?: string;\n\trail: ReactNode;\n\trailTitle?: ReactNode;\n\ttopBar: ReactNode;\n}\n\n/**\n * Full-page wizard shell. Renders a top bar across the right column on\n * desktop, a vertical rail on the left, and a scrollable content area for\n * the active step. Below the `md` breakpoint the rail collapses into a\n * left-side dialog whose open state is exposed via `WizardLayoutContext`\n * so the top bar's hamburger button can drive it.\n */\nexport const WizardLayout = forwardRef<HTMLDivElement, IWizardLayoutProps>(function WizardLayout(props, ref) {\n\tconst { children, className, defaultRailTitle = 'Wizard steps', rail, railTitle, topBar } = props;\n\tconst [mobileSheetOpen, setMobileSheetOpen] = useState(false);\n\n\tconst closeMobileSheet = () => setMobileSheetOpen(false);\n\n\treturn (\n\t\t<WizardLayoutContext.Provider value={{ mobileSheetOpen, setMobileSheetOpen }}>\n\t\t\t<div className={cn('flex h-full min-h-0 w-full flex-1 bg-sidebar', className)} data-slot=\"wizard-layout-outer\">\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"flex flex-1 overflow-hidden bg-background text-foreground shadow-sm ring-1 ring-foreground/10 md:rounded-xl\"\n\t\t\t\t\tdata-slot=\"wizard-layout\"\n\t\t\t\t>\n\t\t\t\t\t<aside\n\t\t\t\t\t\tclassName=\"hidden w-[280px] shrink-0 flex-col gap-4 border-r border-border px-4 py-6 md:flex\"\n\t\t\t\t\t\tdata-slot=\"wizard-layout-rail\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{railTitle && <div className=\"px-3 text-base font-semibold text-foreground\">{railTitle}</div>}\n\t\t\t\t\t\t{rail}\n\t\t\t\t\t</aside>\n\n\t\t\t\t\t<div className=\"flex min-w-0 flex-1 flex-col\">\n\t\t\t\t\t\t{topBar}\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"min-h-0 flex-1 overflow-y-auto px-4 py-6 sm:px-8\"\n\t\t\t\t\t\t\tdata-slot=\"wizard-layout-scroll\"\n\t\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<Dialog.Root onOpenChange={setMobileSheetOpen} open={mobileSheetOpen}>\n\t\t\t\t<Dialog.Portal>\n\t\t\t\t\t<Dialog.Overlay className=\"fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\" />\n\t\t\t\t\t<Dialog.Content\n\t\t\t\t\t\taria-describedby={undefined}\n\t\t\t\t\t\tclassName=\"fixed inset-y-0 left-0 z-50 flex w-3/4 max-w-sm flex-col gap-4 border-r border-border bg-background px-4 py-6 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Dialog.Title className=\"px-3 text-base font-semibold\">{railTitle ?? defaultRailTitle}</Dialog.Title>\n\t\t\t\t\t\t<div onClickCapture={closeMobileSheet}>{rail}</div>\n\t\t\t\t\t</Dialog.Content>\n\t\t\t\t</Dialog.Portal>\n\t\t\t</Dialog.Root>\n\t\t</WizardLayoutContext.Provider>\n\t);\n});\n","'use client';\n\nimport { createContext } from 'react';\n\nexport interface IWizardLayoutContextValue {\n\tmobileSheetOpen: boolean;\n\tsetMobileSheetOpen: (open: boolean) => void;\n}\n\n/**\n * Communicates the rail's mobile-Sheet open state from `WizardLayout` to\n * `WizardTopBar`. Null outside a layout — consumers (top bar's hamburger\n * button) silently no-op when context is missing, so the top bar stays usable\n * outside `WizardLayout`.\n */\nexport const WizardLayoutContext = createContext<IWizardLayoutContextValue | null>(null);\n","'use client';\n\nimport { MenuIcon, XIcon } from 'lucide-react';\nimport { type ReactNode, useContext } from 'react';\n\nimport { useWizardComponents } from '../react/components-provider';\nimport { useWizard } from '../react/use-wizard';\nimport { cn } from '~/utils/cn';\nimport { WizardLayoutContext } from './wizard-layout.context';\n\ninterface IWizardTopBarProps {\n\tbackLabel?: ReactNode;\n\tclassName?: string;\n\tcloseLabel?: string;\n\tdisabled?: boolean;\n\textraActions?: ReactNode;\n\tfinishLabel?: ReactNode;\n\tmenuLabel?: string;\n\tnextLabel?: ReactNode;\n\tonClose: () => void;\n}\n\n/**\n * Header bar for full-page wizard layouts. Renders Back / primary action /\n * extras / close X. Reads `useWizard` for first/last-step detection. The\n * primary action is `type=\"submit\"` on the last step (lets the parent form\n * own submission) and dispatches `wizard.next()` otherwise. Hamburger only\n * surfaces when wrapped by a `WizardLayout`.\n */\nexport function WizardTopBar(props: IWizardTopBarProps) {\n\tconst { backLabel, className, closeLabel, disabled, extraActions, finishLabel, menuLabel, nextLabel, onClose } =\n\t\tprops;\n\tconst wizard = useWizard();\n\tconst layout = useContext(WizardLayoutContext);\n\tconst { Button, BackArrowIcon } = useWizardComponents();\n\n\tconst config = wizard.configOptions;\n\tconst tree = wizard.tree;\n\tconst isFirstStep = tree.activeBranch.prevCategory == null && tree.activeCategory.prevStep == null;\n\tconst isLastStep = tree.activeBranch.nextCategory == null && tree.activeCategory.nextStep == null;\n\n\tconst resolvedBackLabel = backLabel ?? config.backBtnText;\n\tconst resolvedFinishLabel = finishLabel ?? config.finishText;\n\tconst resolvedNextLabel = nextLabel ?? config.nextBtnText;\n\tconst resolvedMenuLabel = menuLabel ?? 'Open wizard steps';\n\tconst resolvedCloseLabel = closeLabel ?? 'Close';\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn('flex h-14 items-center gap-3 border-b border-border bg-background px-4 sm:px-6', className)}\n\t\t\tdata-slot=\"wizard-top-bar\"\n\t\t>\n\t\t\t{layout && (\n\t\t\t\t<Button\n\t\t\t\t\taria-label={resolvedMenuLabel}\n\t\t\t\t\tclassName=\"md:hidden\"\n\t\t\t\t\tonClick={() => layout.setMobileSheetOpen(true)}\n\t\t\t\t\tsize=\"icon-sm\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t>\n\t\t\t\t\t<MenuIcon />\n\t\t\t\t</Button>\n\t\t\t)}\n\n\t\t\t{!isFirstStep && (\n\t\t\t\t<button\n\t\t\t\t\taria-label={typeof resolvedBackLabel === 'string' ? resolvedBackLabel : undefined}\n\t\t\t\t\tclassName=\"group inline-flex items-center gap-1 rounded-md py-1 pr-2.5 pl-3.5 text-sm font-normal text-muted-foreground transition-colors duration-150 hover:bg-muted hover:text-foreground\"\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\tvoid wizard.back();\n\t\t\t\t\t}}\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t>\n\t\t\t\t\t<BackArrowIcon />\n\t\t\t\t\t<span>{resolvedBackLabel}</span>\n\t\t\t\t</button>\n\t\t\t)}\n\n\t\t\t<div className=\"flex flex-1 items-center justify-end gap-2\">\n\t\t\t\t{extraActions}\n\t\t\t\t{isLastStep ? (\n\t\t\t\t\t<Button disabled={disabled} key=\"wizard-finish\" type=\"submit\" variant=\"default\">\n\t\t\t\t\t\t{resolvedFinishLabel}\n\t\t\t\t\t</Button>\n\t\t\t\t) : (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tkey=\"wizard-next\"\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\tvoid wizard.next();\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"default\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{resolvedNextLabel}\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t\t<Button aria-label={resolvedCloseLabel} onClick={onClose} size=\"icon-sm\" type=\"button\" variant=\"ghost\">\n\t\t\t\t\t<XIcon />\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"]}
|
package/dist/shadcn/index.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import * as react from 'react';
|
|
3
|
-
import { ReactNode, ComponentProps
|
|
3
|
+
import { ReactNode, ComponentProps } from 'react';
|
|
4
4
|
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
5
5
|
import { VariantProps } from 'class-variance-authority';
|
|
6
6
|
import { a as IWizardButtonProps } from '../components-provider-bC3_zfyb.cjs';
|
|
@@ -31,7 +31,6 @@ interface IWizardLayoutProps {
|
|
|
31
31
|
defaultRailTitle?: string;
|
|
32
32
|
rail: ReactNode;
|
|
33
33
|
railTitle?: ReactNode;
|
|
34
|
-
ref?: Ref<HTMLDivElement>;
|
|
35
34
|
topBar: ReactNode;
|
|
36
35
|
}
|
|
37
36
|
/**
|
|
@@ -41,7 +40,7 @@ interface IWizardLayoutProps {
|
|
|
41
40
|
* left-side dialog whose open state is exposed via `WizardLayoutContext`
|
|
42
41
|
* so the top bar's hamburger button can drive it.
|
|
43
42
|
*/
|
|
44
|
-
declare
|
|
43
|
+
declare const WizardLayout: react.ForwardRefExoticComponent<IWizardLayoutProps & react.RefAttributes<HTMLDivElement>>;
|
|
45
44
|
|
|
46
45
|
interface IWizardLayoutContextValue {
|
|
47
46
|
mobileSheetOpen: boolean;
|
package/dist/shadcn/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import * as react from 'react';
|
|
3
|
-
import { ReactNode, ComponentProps
|
|
3
|
+
import { ReactNode, ComponentProps } from 'react';
|
|
4
4
|
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
5
5
|
import { VariantProps } from 'class-variance-authority';
|
|
6
6
|
import { a as IWizardButtonProps } from '../components-provider-bC3_zfyb.js';
|
|
@@ -31,7 +31,6 @@ interface IWizardLayoutProps {
|
|
|
31
31
|
defaultRailTitle?: string;
|
|
32
32
|
rail: ReactNode;
|
|
33
33
|
railTitle?: ReactNode;
|
|
34
|
-
ref?: Ref<HTMLDivElement>;
|
|
35
34
|
topBar: ReactNode;
|
|
36
35
|
}
|
|
37
36
|
/**
|
|
@@ -41,7 +40,7 @@ interface IWizardLayoutProps {
|
|
|
41
40
|
* left-side dialog whose open state is exposed via `WizardLayoutContext`
|
|
42
41
|
* so the top bar's hamburger button can drive it.
|
|
43
42
|
*/
|
|
44
|
-
declare
|
|
43
|
+
declare const WizardLayout: react.ForwardRefExoticComponent<IWizardLayoutProps & react.RefAttributes<HTMLDivElement>>;
|
|
45
44
|
|
|
46
45
|
interface IWizardLayoutContextValue {
|
|
47
46
|
mobileSheetOpen: boolean;
|
package/dist/shadcn/index.js
CHANGED
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
cn,
|
|
5
5
|
useWizard,
|
|
6
6
|
useWizardComponents
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-NDYZHURP.js";
|
|
8
8
|
|
|
9
9
|
// src/shadcn/default-back-arrow-icon.tsx
|
|
10
10
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -74,7 +74,7 @@ function WizardComponentsProviderWithDefaults({ children }) {
|
|
|
74
74
|
|
|
75
75
|
// src/shadcn/wizard-layout.tsx
|
|
76
76
|
import * as Dialog from "@radix-ui/react-dialog";
|
|
77
|
-
import { useState } from "react";
|
|
77
|
+
import { forwardRef as forwardRef2, useState } from "react";
|
|
78
78
|
|
|
79
79
|
// src/shadcn/wizard-layout.context.ts
|
|
80
80
|
import { createContext } from "react";
|
|
@@ -82,8 +82,8 @@ var WizardLayoutContext = createContext(null);
|
|
|
82
82
|
|
|
83
83
|
// src/shadcn/wizard-layout.tsx
|
|
84
84
|
import { jsx as jsx4, jsxs } from "react/jsx-runtime";
|
|
85
|
-
|
|
86
|
-
const { children, className, defaultRailTitle = "Wizard steps", rail, railTitle,
|
|
85
|
+
var WizardLayout = forwardRef2(function WizardLayout2(props, ref) {
|
|
86
|
+
const { children, className, defaultRailTitle = "Wizard steps", rail, railTitle, topBar } = props;
|
|
87
87
|
const [mobileSheetOpen, setMobileSheetOpen] = useState(false);
|
|
88
88
|
const closeMobileSheet = () => setMobileSheetOpen(false);
|
|
89
89
|
return /* @__PURE__ */ jsxs(WizardLayoutContext.Provider, { value: { mobileSheetOpen, setMobileSheetOpen }, children: [
|
|
@@ -134,7 +134,7 @@ function WizardLayout(props) {
|
|
|
134
134
|
)
|
|
135
135
|
] }) })
|
|
136
136
|
] });
|
|
137
|
-
}
|
|
137
|
+
});
|
|
138
138
|
|
|
139
139
|
// src/shadcn/wizard-top-bar.tsx
|
|
140
140
|
import { MenuIcon, XIcon } from "lucide-react";
|
package/dist/shadcn/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/shadcn/default-back-arrow-icon.tsx","../../src/shadcn/default-button.tsx","../../src/shadcn/components-provider-with-defaults.tsx","../../src/shadcn/wizard-layout.tsx","../../src/shadcn/wizard-layout.context.ts","../../src/shadcn/wizard-top-bar.tsx"],"sourcesContent":["'use client';\n\nimport { type ComponentProps } from 'react';\n\nimport { cn } from '~/utils/cn';\n\n/** Animated back-arrow icon. The arrow translates -2px on the parent's group-hover. */\nexport function defaultBackArrowIcon({ className, ...rest }: ComponentProps<'svg'>) {\n\treturn (\n\t\t<svg\n\t\t\tclassName={cn(\n\t\t\t\t'h-4 w-4 transition-transform duration-150 group-hover:-translate-x-0.5',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tfill=\"none\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tstrokeWidth={1.75}\n\t\t\tstrokeLinecap=\"round\"\n\t\t\tstrokeLinejoin=\"round\"\n\t\t\tviewBox=\"0 0 16 16\"\n\t\t\taria-hidden\n\t\t\t{...rest}\n\t\t>\n\t\t\t<path d=\"M10 4 L6 8 L10 12\" />\n\t\t</svg>\n\t);\n}\n","'use client';\n\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { forwardRef, type ReactNode } from 'react';\n\nimport { cn } from '~/utils/cn';\nimport { type IWizardButtonProps } from '../react/components-provider';\n\nconst buttonVariants = cva(\n\t'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: 'bg-primary text-primary-foreground hover:bg-primary/90',\n\t\t\t\tghost: 'hover:bg-accent hover:text-accent-foreground',\n\t\t\t},\n\t\t\tsize: {\n\t\t\t\tdefault: 'h-9 px-4 py-2',\n\t\t\t\t'icon-sm': 'h-8 w-8',\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: 'default',\n\t\t\tsize: 'default',\n\t\t},\n\t}\n);\n\ntype InternalProps = Omit<IWizardButtonProps, 'size' | 'variant'> &\n\tVariantProps<typeof buttonVariants> & {\n\t\tchildren?: ReactNode;\n\t};\n\nexport const defaultButton = forwardRef<HTMLButtonElement, InternalProps>(function DefaultButton(\n\t{ asChild, className, size, variant, type, ...rest },\n\tref\n) {\n\tconst Comp: any = asChild ? Slot : 'button';\n\treturn (\n\t\t<Comp\n\t\t\tref={ref}\n\t\t\ttype={asChild ? undefined : (type ?? 'button')}\n\t\t\tclassName={cn(buttonVariants({ size, variant }), className)}\n\t\t\t{...rest}\n\t\t/>\n\t);\n});\n","'use client';\n\nimport { type ReactNode } from 'react';\n\nimport { WizardComponentsProvider } from '../react/components-provider';\nimport { defaultBackArrowIcon } from './default-back-arrow-icon';\nimport { defaultButton } from './default-button';\n\n/**\n * Convenience wrapper around `WizardComponentsProvider` that wires in the\n * package-shipped `defaultButton` and `defaultBackArrowIcon`. Use this if\n * you want the styled adapter out of the box; use `WizardComponentsProvider`\n * directly if you want to pass your own.\n */\nexport function WizardComponentsProviderWithDefaults({ children }: { children: ReactNode }) {\n\treturn (\n\t\t<WizardComponentsProvider Button={defaultButton} BackArrowIcon={defaultBackArrowIcon}>\n\t\t\t{children}\n\t\t</WizardComponentsProvider>\n\t);\n}\n","'use client';\n\nimport * as Dialog from '@radix-ui/react-dialog';\nimport { type ReactNode, type Ref, useState } from 'react';\n\nimport { cn } from '~/utils/cn';\nimport { WizardLayoutContext } from './wizard-layout.context';\n\ninterface IWizardLayoutProps {\n\tchildren: ReactNode;\n\tclassName?: string;\n\tdefaultRailTitle?: string;\n\trail: ReactNode;\n\trailTitle?: ReactNode;\n\tref?: Ref<HTMLDivElement>;\n\ttopBar: ReactNode;\n}\n\n/**\n * Full-page wizard shell. Renders a top bar across the right column on\n * desktop, a vertical rail on the left, and a scrollable content area for\n * the active step. Below the `md` breakpoint the rail collapses into a\n * left-side dialog whose open state is exposed via `WizardLayoutContext`\n * so the top bar's hamburger button can drive it.\n */\nexport function WizardLayout(props: IWizardLayoutProps) {\n\tconst { children, className, defaultRailTitle = 'Wizard steps', rail, railTitle, ref, topBar } = props;\n\tconst [mobileSheetOpen, setMobileSheetOpen] = useState(false);\n\n\tconst closeMobileSheet = () => setMobileSheetOpen(false);\n\n\treturn (\n\t\t<WizardLayoutContext.Provider value={{ mobileSheetOpen, setMobileSheetOpen }}>\n\t\t\t<div className={cn('flex h-full min-h-0 w-full flex-1 bg-sidebar', className)} data-slot=\"wizard-layout-outer\">\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"flex flex-1 overflow-hidden bg-background text-foreground shadow-sm ring-1 ring-foreground/10 md:rounded-xl\"\n\t\t\t\t\tdata-slot=\"wizard-layout\"\n\t\t\t\t>\n\t\t\t\t\t<aside\n\t\t\t\t\t\tclassName=\"hidden w-[280px] shrink-0 flex-col gap-4 border-r border-border px-4 py-6 md:flex\"\n\t\t\t\t\t\tdata-slot=\"wizard-layout-rail\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{railTitle && <div className=\"px-3 text-base font-semibold text-foreground\">{railTitle}</div>}\n\t\t\t\t\t\t{rail}\n\t\t\t\t\t</aside>\n\n\t\t\t\t\t<div className=\"flex min-w-0 flex-1 flex-col\">\n\t\t\t\t\t\t{topBar}\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"min-h-0 flex-1 overflow-y-auto px-4 py-6 sm:px-8\"\n\t\t\t\t\t\t\tdata-slot=\"wizard-layout-scroll\"\n\t\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<Dialog.Root onOpenChange={setMobileSheetOpen} open={mobileSheetOpen}>\n\t\t\t\t<Dialog.Portal>\n\t\t\t\t\t<Dialog.Overlay className=\"fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\" />\n\t\t\t\t\t<Dialog.Content\n\t\t\t\t\t\taria-describedby={undefined}\n\t\t\t\t\t\tclassName=\"fixed inset-y-0 left-0 z-50 flex w-3/4 max-w-sm flex-col gap-4 border-r border-border bg-background px-4 py-6 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Dialog.Title className=\"px-3 text-base font-semibold\">{railTitle ?? defaultRailTitle}</Dialog.Title>\n\t\t\t\t\t\t<div onClickCapture={closeMobileSheet}>{rail}</div>\n\t\t\t\t\t</Dialog.Content>\n\t\t\t\t</Dialog.Portal>\n\t\t\t</Dialog.Root>\n\t\t</WizardLayoutContext.Provider>\n\t);\n}\n","'use client';\n\nimport { createContext } from 'react';\n\nexport interface IWizardLayoutContextValue {\n\tmobileSheetOpen: boolean;\n\tsetMobileSheetOpen: (open: boolean) => void;\n}\n\n/**\n * Communicates the rail's mobile-Sheet open state from `WizardLayout` to\n * `WizardTopBar`. Null outside a layout — consumers (top bar's hamburger\n * button) silently no-op when context is missing, so the top bar stays usable\n * outside `WizardLayout`.\n */\nexport const WizardLayoutContext = createContext<IWizardLayoutContextValue | null>(null);\n","'use client';\n\nimport { MenuIcon, XIcon } from 'lucide-react';\nimport { type ReactNode, useContext } from 'react';\n\nimport { useWizardComponents } from '../react/components-provider';\nimport { useWizard } from '../react/use-wizard';\nimport { cn } from '~/utils/cn';\nimport { WizardLayoutContext } from './wizard-layout.context';\n\ninterface IWizardTopBarProps {\n\tbackLabel?: ReactNode;\n\tclassName?: string;\n\tcloseLabel?: string;\n\tdisabled?: boolean;\n\textraActions?: ReactNode;\n\tfinishLabel?: ReactNode;\n\tmenuLabel?: string;\n\tnextLabel?: ReactNode;\n\tonClose: () => void;\n}\n\n/**\n * Header bar for full-page wizard layouts. Renders Back / primary action /\n * extras / close X. Reads `useWizard` for first/last-step detection. The\n * primary action is `type=\"submit\"` on the last step (lets the parent form\n * own submission) and dispatches `wizard.next()` otherwise. Hamburger only\n * surfaces when wrapped by a `WizardLayout`.\n */\nexport function WizardTopBar(props: IWizardTopBarProps) {\n\tconst { backLabel, className, closeLabel, disabled, extraActions, finishLabel, menuLabel, nextLabel, onClose } =\n\t\tprops;\n\tconst wizard = useWizard();\n\tconst layout = useContext(WizardLayoutContext);\n\tconst { Button, BackArrowIcon } = useWizardComponents();\n\n\tconst config = wizard.configOptions;\n\tconst tree = wizard.tree;\n\tconst isFirstStep = tree.activeBranch.prevCategory == null && tree.activeCategory.prevStep == null;\n\tconst isLastStep = tree.activeBranch.nextCategory == null && tree.activeCategory.nextStep == null;\n\n\tconst resolvedBackLabel = backLabel ?? config.backBtnText;\n\tconst resolvedFinishLabel = finishLabel ?? config.finishText;\n\tconst resolvedNextLabel = nextLabel ?? config.nextBtnText;\n\tconst resolvedMenuLabel = menuLabel ?? 'Open wizard steps';\n\tconst resolvedCloseLabel = closeLabel ?? 'Close';\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn('flex h-14 items-center gap-3 border-b border-border bg-background px-4 sm:px-6', className)}\n\t\t\tdata-slot=\"wizard-top-bar\"\n\t\t>\n\t\t\t{layout && (\n\t\t\t\t<Button\n\t\t\t\t\taria-label={resolvedMenuLabel}\n\t\t\t\t\tclassName=\"md:hidden\"\n\t\t\t\t\tonClick={() => layout.setMobileSheetOpen(true)}\n\t\t\t\t\tsize=\"icon-sm\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t>\n\t\t\t\t\t<MenuIcon />\n\t\t\t\t</Button>\n\t\t\t)}\n\n\t\t\t{!isFirstStep && (\n\t\t\t\t<button\n\t\t\t\t\taria-label={typeof resolvedBackLabel === 'string' ? resolvedBackLabel : undefined}\n\t\t\t\t\tclassName=\"group inline-flex items-center gap-1 rounded-md py-1 pr-2.5 pl-3.5 text-sm font-normal text-muted-foreground transition-colors duration-150 hover:bg-muted hover:text-foreground\"\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\tvoid wizard.back();\n\t\t\t\t\t}}\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t>\n\t\t\t\t\t<BackArrowIcon />\n\t\t\t\t\t<span>{resolvedBackLabel}</span>\n\t\t\t\t</button>\n\t\t\t)}\n\n\t\t\t<div className=\"flex flex-1 items-center justify-end gap-2\">\n\t\t\t\t{extraActions}\n\t\t\t\t{isLastStep ? (\n\t\t\t\t\t<Button disabled={disabled} key=\"wizard-finish\" type=\"submit\" variant=\"default\">\n\t\t\t\t\t\t{resolvedFinishLabel}\n\t\t\t\t\t</Button>\n\t\t\t\t) : (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tkey=\"wizard-next\"\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\tvoid wizard.next();\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"default\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{resolvedNextLabel}\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t\t<Button aria-label={resolvedCloseLabel} onClick={onClose} size=\"icon-sm\" type=\"button\" variant=\"ghost\">\n\t\t\t\t\t<XIcon />\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"],"mappings":"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","names":["jsx","jsx","jsx","jsx","jsxs"]}
|
|
1
|
+
{"version":3,"sources":["../../src/shadcn/default-back-arrow-icon.tsx","../../src/shadcn/default-button.tsx","../../src/shadcn/components-provider-with-defaults.tsx","../../src/shadcn/wizard-layout.tsx","../../src/shadcn/wizard-layout.context.ts","../../src/shadcn/wizard-top-bar.tsx"],"sourcesContent":["'use client';\n\nimport { type ComponentProps } from 'react';\n\nimport { cn } from '~/utils/cn';\n\n/** Animated back-arrow icon. The arrow translates -2px on the parent's group-hover. */\nexport function defaultBackArrowIcon({ className, ...rest }: ComponentProps<'svg'>) {\n\treturn (\n\t\t<svg\n\t\t\tclassName={cn(\n\t\t\t\t'h-4 w-4 transition-transform duration-150 group-hover:-translate-x-0.5',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tfill=\"none\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tstrokeWidth={1.75}\n\t\t\tstrokeLinecap=\"round\"\n\t\t\tstrokeLinejoin=\"round\"\n\t\t\tviewBox=\"0 0 16 16\"\n\t\t\taria-hidden\n\t\t\t{...rest}\n\t\t>\n\t\t\t<path d=\"M10 4 L6 8 L10 12\" />\n\t\t</svg>\n\t);\n}\n","'use client';\n\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { type ElementType, forwardRef, type ReactNode } from 'react';\n\nimport { cn } from '~/utils/cn';\nimport { type IWizardButtonProps } from '../react/components-provider';\n\nconst buttonVariants = cva(\n\t'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: 'bg-primary text-primary-foreground hover:bg-primary/90',\n\t\t\t\tghost: 'hover:bg-accent hover:text-accent-foreground',\n\t\t\t},\n\t\t\tsize: {\n\t\t\t\tdefault: 'h-9 px-4 py-2',\n\t\t\t\t'icon-sm': 'h-8 w-8',\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: 'default',\n\t\t\tsize: 'default',\n\t\t},\n\t}\n);\n\ntype InternalProps = Omit<IWizardButtonProps, 'size' | 'variant'> &\n\tVariantProps<typeof buttonVariants> & {\n\t\tchildren?: ReactNode;\n\t};\n\nexport const defaultButton = forwardRef<HTMLButtonElement, InternalProps>(function DefaultButton(\n\t{ asChild, className, size, variant, type, ...rest },\n\tref\n) {\n\tconst Comp: ElementType = asChild ? Slot : 'button';\n\treturn (\n\t\t<Comp\n\t\t\tref={ref}\n\t\t\ttype={asChild ? undefined : (type ?? 'button')}\n\t\t\tclassName={cn(buttonVariants({ size, variant }), className)}\n\t\t\t{...rest}\n\t\t/>\n\t);\n});\n","'use client';\n\nimport { type ReactNode } from 'react';\n\nimport { WizardComponentsProvider } from '../react/components-provider';\nimport { defaultBackArrowIcon } from './default-back-arrow-icon';\nimport { defaultButton } from './default-button';\n\n/**\n * Convenience wrapper around `WizardComponentsProvider` that wires in the\n * package-shipped `defaultButton` and `defaultBackArrowIcon`. Use this if\n * you want the styled adapter out of the box; use `WizardComponentsProvider`\n * directly if you want to pass your own.\n */\nexport function WizardComponentsProviderWithDefaults({ children }: { children: ReactNode }) {\n\treturn (\n\t\t<WizardComponentsProvider Button={defaultButton} BackArrowIcon={defaultBackArrowIcon}>\n\t\t\t{children}\n\t\t</WizardComponentsProvider>\n\t);\n}\n","'use client';\n\nimport * as Dialog from '@radix-ui/react-dialog';\nimport { forwardRef, type ReactNode, useState } from 'react';\n\nimport { cn } from '~/utils/cn';\nimport { WizardLayoutContext } from './wizard-layout.context';\n\ninterface IWizardLayoutProps {\n\tchildren: ReactNode;\n\tclassName?: string;\n\tdefaultRailTitle?: string;\n\trail: ReactNode;\n\trailTitle?: ReactNode;\n\ttopBar: ReactNode;\n}\n\n/**\n * Full-page wizard shell. Renders a top bar across the right column on\n * desktop, a vertical rail on the left, and a scrollable content area for\n * the active step. Below the `md` breakpoint the rail collapses into a\n * left-side dialog whose open state is exposed via `WizardLayoutContext`\n * so the top bar's hamburger button can drive it.\n */\nexport const WizardLayout = forwardRef<HTMLDivElement, IWizardLayoutProps>(function WizardLayout(props, ref) {\n\tconst { children, className, defaultRailTitle = 'Wizard steps', rail, railTitle, topBar } = props;\n\tconst [mobileSheetOpen, setMobileSheetOpen] = useState(false);\n\n\tconst closeMobileSheet = () => setMobileSheetOpen(false);\n\n\treturn (\n\t\t<WizardLayoutContext.Provider value={{ mobileSheetOpen, setMobileSheetOpen }}>\n\t\t\t<div className={cn('flex h-full min-h-0 w-full flex-1 bg-sidebar', className)} data-slot=\"wizard-layout-outer\">\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"flex flex-1 overflow-hidden bg-background text-foreground shadow-sm ring-1 ring-foreground/10 md:rounded-xl\"\n\t\t\t\t\tdata-slot=\"wizard-layout\"\n\t\t\t\t>\n\t\t\t\t\t<aside\n\t\t\t\t\t\tclassName=\"hidden w-[280px] shrink-0 flex-col gap-4 border-r border-border px-4 py-6 md:flex\"\n\t\t\t\t\t\tdata-slot=\"wizard-layout-rail\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{railTitle && <div className=\"px-3 text-base font-semibold text-foreground\">{railTitle}</div>}\n\t\t\t\t\t\t{rail}\n\t\t\t\t\t</aside>\n\n\t\t\t\t\t<div className=\"flex min-w-0 flex-1 flex-col\">\n\t\t\t\t\t\t{topBar}\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"min-h-0 flex-1 overflow-y-auto px-4 py-6 sm:px-8\"\n\t\t\t\t\t\t\tdata-slot=\"wizard-layout-scroll\"\n\t\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<Dialog.Root onOpenChange={setMobileSheetOpen} open={mobileSheetOpen}>\n\t\t\t\t<Dialog.Portal>\n\t\t\t\t\t<Dialog.Overlay className=\"fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\" />\n\t\t\t\t\t<Dialog.Content\n\t\t\t\t\t\taria-describedby={undefined}\n\t\t\t\t\t\tclassName=\"fixed inset-y-0 left-0 z-50 flex w-3/4 max-w-sm flex-col gap-4 border-r border-border bg-background px-4 py-6 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Dialog.Title className=\"px-3 text-base font-semibold\">{railTitle ?? defaultRailTitle}</Dialog.Title>\n\t\t\t\t\t\t<div onClickCapture={closeMobileSheet}>{rail}</div>\n\t\t\t\t\t</Dialog.Content>\n\t\t\t\t</Dialog.Portal>\n\t\t\t</Dialog.Root>\n\t\t</WizardLayoutContext.Provider>\n\t);\n});\n","'use client';\n\nimport { createContext } from 'react';\n\nexport interface IWizardLayoutContextValue {\n\tmobileSheetOpen: boolean;\n\tsetMobileSheetOpen: (open: boolean) => void;\n}\n\n/**\n * Communicates the rail's mobile-Sheet open state from `WizardLayout` to\n * `WizardTopBar`. Null outside a layout — consumers (top bar's hamburger\n * button) silently no-op when context is missing, so the top bar stays usable\n * outside `WizardLayout`.\n */\nexport const WizardLayoutContext = createContext<IWizardLayoutContextValue | null>(null);\n","'use client';\n\nimport { MenuIcon, XIcon } from 'lucide-react';\nimport { type ReactNode, useContext } from 'react';\n\nimport { useWizardComponents } from '../react/components-provider';\nimport { useWizard } from '../react/use-wizard';\nimport { cn } from '~/utils/cn';\nimport { WizardLayoutContext } from './wizard-layout.context';\n\ninterface IWizardTopBarProps {\n\tbackLabel?: ReactNode;\n\tclassName?: string;\n\tcloseLabel?: string;\n\tdisabled?: boolean;\n\textraActions?: ReactNode;\n\tfinishLabel?: ReactNode;\n\tmenuLabel?: string;\n\tnextLabel?: ReactNode;\n\tonClose: () => void;\n}\n\n/**\n * Header bar for full-page wizard layouts. Renders Back / primary action /\n * extras / close X. Reads `useWizard` for first/last-step detection. The\n * primary action is `type=\"submit\"` on the last step (lets the parent form\n * own submission) and dispatches `wizard.next()` otherwise. Hamburger only\n * surfaces when wrapped by a `WizardLayout`.\n */\nexport function WizardTopBar(props: IWizardTopBarProps) {\n\tconst { backLabel, className, closeLabel, disabled, extraActions, finishLabel, menuLabel, nextLabel, onClose } =\n\t\tprops;\n\tconst wizard = useWizard();\n\tconst layout = useContext(WizardLayoutContext);\n\tconst { Button, BackArrowIcon } = useWizardComponents();\n\n\tconst config = wizard.configOptions;\n\tconst tree = wizard.tree;\n\tconst isFirstStep = tree.activeBranch.prevCategory == null && tree.activeCategory.prevStep == null;\n\tconst isLastStep = tree.activeBranch.nextCategory == null && tree.activeCategory.nextStep == null;\n\n\tconst resolvedBackLabel = backLabel ?? config.backBtnText;\n\tconst resolvedFinishLabel = finishLabel ?? config.finishText;\n\tconst resolvedNextLabel = nextLabel ?? config.nextBtnText;\n\tconst resolvedMenuLabel = menuLabel ?? 'Open wizard steps';\n\tconst resolvedCloseLabel = closeLabel ?? 'Close';\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn('flex h-14 items-center gap-3 border-b border-border bg-background px-4 sm:px-6', className)}\n\t\t\tdata-slot=\"wizard-top-bar\"\n\t\t>\n\t\t\t{layout && (\n\t\t\t\t<Button\n\t\t\t\t\taria-label={resolvedMenuLabel}\n\t\t\t\t\tclassName=\"md:hidden\"\n\t\t\t\t\tonClick={() => layout.setMobileSheetOpen(true)}\n\t\t\t\t\tsize=\"icon-sm\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t>\n\t\t\t\t\t<MenuIcon />\n\t\t\t\t</Button>\n\t\t\t)}\n\n\t\t\t{!isFirstStep && (\n\t\t\t\t<button\n\t\t\t\t\taria-label={typeof resolvedBackLabel === 'string' ? resolvedBackLabel : undefined}\n\t\t\t\t\tclassName=\"group inline-flex items-center gap-1 rounded-md py-1 pr-2.5 pl-3.5 text-sm font-normal text-muted-foreground transition-colors duration-150 hover:bg-muted hover:text-foreground\"\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\tvoid wizard.back();\n\t\t\t\t\t}}\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t>\n\t\t\t\t\t<BackArrowIcon />\n\t\t\t\t\t<span>{resolvedBackLabel}</span>\n\t\t\t\t</button>\n\t\t\t)}\n\n\t\t\t<div className=\"flex flex-1 items-center justify-end gap-2\">\n\t\t\t\t{extraActions}\n\t\t\t\t{isLastStep ? (\n\t\t\t\t\t<Button disabled={disabled} key=\"wizard-finish\" type=\"submit\" variant=\"default\">\n\t\t\t\t\t\t{resolvedFinishLabel}\n\t\t\t\t\t</Button>\n\t\t\t\t) : (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tkey=\"wizard-next\"\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\tvoid wizard.next();\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"default\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{resolvedNextLabel}\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t\t<Button aria-label={resolvedCloseLabel} onClick={onClose} size=\"icon-sm\" type=\"button\" variant=\"ghost\">\n\t\t\t\t\t<XIcon />\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"],"mappings":"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","names":["jsx","jsx","forwardRef","jsx","forwardRef","WizardLayout","jsx","jsxs"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-wizard-engine",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Multi-step flow engine for React: steps, categories, branches, pluggable strategies, async navigation with cancellation.",
|
|
6
6
|
"keywords": [
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"test": "vitest run",
|
|
48
48
|
"test:watch": "vitest",
|
|
49
49
|
"lint": "eslint .",
|
|
50
|
-
"typecheck": "tsc --noEmit",
|
|
50
|
+
"typecheck": "tsc -p tsconfig.build.json --noEmit",
|
|
51
51
|
"release": "changeset publish",
|
|
52
52
|
"prepublishOnly": "pnpm build"
|
|
53
53
|
},
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/errors/wizard.error.ts","../src/react/components-provider.tsx","../src/react/context.ts","../src/react/use-wizard.ts","../src/utils/cn.ts"],"sourcesContent":["export class WizardError extends Error {\n\tpublic override readonly name: string = 'WizardError';\n\n\tconstructor(message?: string) {\n\t\tsuper(message);\n\t\tObject.setPrototypeOf(this, new.target.prototype);\n\t}\n}\n\nexport class WizardInitializationError extends WizardError {\n\tpublic override readonly name: string = 'WizardInitializationError';\n}\n\nexport class WizardNavigationError extends WizardError {\n\tpublic override readonly name: string = 'WizardNavigationError';\n}\n\nexport class WizardResolverError extends WizardError {\n\tpublic override readonly name: string = 'WizardResolverError';\n}\n","'use client';\n\nimport { type ComponentType, createContext, type ReactNode, useContext } from 'react';\n\nexport interface IWizardButtonProps {\n\tasChild?: boolean;\n\tchildren?: ReactNode;\n\tclassName?: string;\n\tdisabled?: boolean;\n\tonClick?: () => void;\n\ttype?: 'button' | 'submit';\n\tvariant?: 'default' | 'ghost';\n\tsize?: 'default' | 'icon-sm';\n\t'aria-label'?: string;\n}\n\nexport interface IWizardBackArrowIconProps {\n\tclassName?: string;\n}\n\nexport interface IWizardComponents {\n\tButton: ComponentType<IWizardButtonProps>;\n\tBackArrowIcon: ComponentType<IWizardBackArrowIconProps>;\n}\n\nconst FallbackButton: ComponentType<IWizardButtonProps> = (props) => {\n\tconst { children, asChild: _asChild, variant: _variant, size: _size, ...rest } = props;\n\treturn (\n\t\t<button {...rest} type={props.type ?? 'button'}>\n\t\t\t{children}\n\t\t</button>\n\t);\n};\n\nconst FallbackBackArrowIcon: ComponentType<IWizardBackArrowIconProps> = ({ className }) => (\n\t<svg className={className} width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\" aria-hidden>\n\t\t<path d=\"M10 4 L6 8 L10 12\" stroke=\"currentColor\" strokeWidth=\"1.5\" fill=\"none\" />\n\t</svg>\n);\n\nconst defaults: IWizardComponents = { Button: FallbackButton, BackArrowIcon: FallbackBackArrowIcon };\n\nconst WizardComponentsContext = createContext<IWizardComponents>(defaults);\n\nexport function WizardComponentsProvider(props: {\n\tButton?: ComponentType<IWizardButtonProps>;\n\tBackArrowIcon?: ComponentType<IWizardBackArrowIconProps>;\n\tchildren: ReactNode;\n}) {\n\tconst { Button, BackArrowIcon, children } = props;\n\tconst value: IWizardComponents = {\n\t\tButton: Button ?? defaults.Button,\n\t\tBackArrowIcon: BackArrowIcon ?? defaults.BackArrowIcon,\n\t};\n\treturn <WizardComponentsContext.Provider value={value}>{children}</WizardComponentsContext.Provider>;\n}\n\nexport function useWizardComponents(): IWizardComponents {\n\treturn useContext(WizardComponentsContext);\n}\n","'use client';\n\nimport { createContext } from 'react';\n\nimport type { WizardEngine } from '../core/wizard-engine';\n\n/**\n * React context exposing the active `WizardEngine` instance to descendants.\n * `null` outside a `<WizardProvider>` — `useWizard()` throws a clear error.\n */\nexport const WizardEngineContext = createContext<null | WizardEngine<string, string, string>>(null);\n","'use client';\n\nimport { useContext, useSyncExternalStore } from 'react';\n\nimport type { WizardEngine } from '../core/wizard-engine';\n\nimport { WizardError } from '../core/errors';\nimport { WizardEngineContext } from './context';\n\n/**\n * Returns the active `WizardEngine` instance and re-renders the consumer on\n * every tree change. Throws if used outside a `<WizardProvider>`.\n *\n * Engine identity is stable across renders.\n */\nexport function useWizard<Step extends string, Category extends string, Branch extends string = string>(): WizardEngine<\n\tStep,\n\tCategory,\n\tBranch\n> {\n\tconst engine = useContext(WizardEngineContext) as null | WizardEngine<Step, Category, Branch>;\n\tif (!engine) {\n\t\tthrow new WizardError('useWizard must be used inside <WizardProvider>');\n\t}\n\tuseSyncExternalStore(engine.subscribe, engine.getTreeSnapshot, engine.getTreeSnapshot);\n\treturn engine;\n}\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(...inputs));\n}\n"],"mappings":";;;AAAO,IAAM,cAAN,cAA0B,MAAM;AAAA,EACb,OAAe;AAAA,EAExC,YAAY,SAAkB;AAC7B,UAAM,OAAO;AACb,WAAO,eAAe,MAAM,WAAW,SAAS;AAAA,EACjD;AACD;AAEO,IAAM,4BAAN,cAAwC,YAAY;AAAA,EACjC,OAAe;AACzC;AAEO,IAAM,wBAAN,cAAoC,YAAY;AAAA,EAC7B,OAAe;AACzC;AAEO,IAAM,sBAAN,cAAkC,YAAY;AAAA,EAC3B,OAAe;AACzC;;;ACjBA,SAA6B,eAA+B,kBAAkB;AA0B5E;AAHF,IAAM,iBAAoD,CAAC,UAAU;AACpE,QAAM,EAAE,UAAU,SAAS,UAAU,SAAS,UAAU,MAAM,OAAO,GAAG,KAAK,IAAI;AACjF,SACC,oBAAC,YAAQ,GAAG,MAAM,MAAM,MAAM,QAAQ,UACpC,UACF;AAEF;AAEA,IAAM,wBAAkE,CAAC,EAAE,UAAU,MACpF,oBAAC,SAAI,WAAsB,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,gBAAe,eAAW,MACpG,8BAAC,UAAK,GAAE,qBAAoB,QAAO,gBAAe,aAAY,OAAM,MAAK,QAAO,GACjF;AAGD,IAAM,WAA8B,EAAE,QAAQ,gBAAgB,eAAe,sBAAsB;AAEnG,IAAM,0BAA0B,cAAiC,QAAQ;AAElE,SAAS,yBAAyB,OAItC;AACF,QAAM,EAAE,QAAQ,eAAe,SAAS,IAAI;AAC5C,QAAM,QAA2B;AAAA,IAChC,QAAQ,UAAU,SAAS;AAAA,IAC3B,eAAe,iBAAiB,SAAS;AAAA,EAC1C;AACA,SAAO,oBAAC,wBAAwB,UAAxB,EAAiC,OAAe,UAAS;AAClE;AAEO,SAAS,sBAAyC;AACxD,SAAO,WAAW,uBAAuB;AAC1C;;;ACzDA,SAAS,iBAAAA,sBAAqB;AAQvB,IAAM,sBAAsBA,eAA2D,IAAI;;;ACRlG,SAAS,cAAAC,aAAY,4BAA4B;AAa1C,SAAS,YAId;AACD,QAAM,SAASC,YAAW,mBAAmB;AAC7C,MAAI,CAAC,QAAQ;AACZ,UAAM,IAAI,YAAY,gDAAgD;AAAA,EACvE;AACA,uBAAqB,OAAO,WAAW,OAAO,iBAAiB,OAAO,eAAe;AACrF,SAAO;AACR;;;AC1BA,SAAS,YAA6B;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAA8B;AAClD,SAAO,QAAQ,KAAK,GAAG,MAAM,CAAC;AAChC;","names":["createContext","useContext","useContext"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/knazark/work/extract-tmp/perks-extract/dist/chunk-XNH2LQZL.cjs","../src/core/errors/wizard.error.ts","../src/react/components-provider.tsx","../src/react/context.ts","../src/react/use-wizard.ts","../src/utils/cn.ts"],"names":["createContext","useContext"],"mappings":"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","file":"/Users/knazark/work/extract-tmp/perks-extract/dist/chunk-XNH2LQZL.cjs","sourcesContent":[null,"export class WizardError extends Error {\n\tpublic override readonly name: string = 'WizardError';\n\n\tconstructor(message?: string) {\n\t\tsuper(message);\n\t\tObject.setPrototypeOf(this, new.target.prototype);\n\t}\n}\n\nexport class WizardInitializationError extends WizardError {\n\tpublic override readonly name: string = 'WizardInitializationError';\n}\n\nexport class WizardNavigationError extends WizardError {\n\tpublic override readonly name: string = 'WizardNavigationError';\n}\n\nexport class WizardResolverError extends WizardError {\n\tpublic override readonly name: string = 'WizardResolverError';\n}\n","'use client';\n\nimport { type ComponentType, createContext, type ReactNode, useContext } from 'react';\n\nexport interface IWizardButtonProps {\n\tasChild?: boolean;\n\tchildren?: ReactNode;\n\tclassName?: string;\n\tdisabled?: boolean;\n\tonClick?: () => void;\n\ttype?: 'button' | 'submit';\n\tvariant?: 'default' | 'ghost';\n\tsize?: 'default' | 'icon-sm';\n\t'aria-label'?: string;\n}\n\nexport interface IWizardBackArrowIconProps {\n\tclassName?: string;\n}\n\nexport interface IWizardComponents {\n\tButton: ComponentType<IWizardButtonProps>;\n\tBackArrowIcon: ComponentType<IWizardBackArrowIconProps>;\n}\n\nconst FallbackButton: ComponentType<IWizardButtonProps> = (props) => {\n\tconst { children, asChild: _asChild, variant: _variant, size: _size, ...rest } = props;\n\treturn (\n\t\t<button {...rest} type={props.type ?? 'button'}>\n\t\t\t{children}\n\t\t</button>\n\t);\n};\n\nconst FallbackBackArrowIcon: ComponentType<IWizardBackArrowIconProps> = ({ className }) => (\n\t<svg className={className} width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\" aria-hidden>\n\t\t<path d=\"M10 4 L6 8 L10 12\" stroke=\"currentColor\" strokeWidth=\"1.5\" fill=\"none\" />\n\t</svg>\n);\n\nconst defaults: IWizardComponents = { Button: FallbackButton, BackArrowIcon: FallbackBackArrowIcon };\n\nconst WizardComponentsContext = createContext<IWizardComponents>(defaults);\n\nexport function WizardComponentsProvider(props: {\n\tButton?: ComponentType<IWizardButtonProps>;\n\tBackArrowIcon?: ComponentType<IWizardBackArrowIconProps>;\n\tchildren: ReactNode;\n}) {\n\tconst { Button, BackArrowIcon, children } = props;\n\tconst value: IWizardComponents = {\n\t\tButton: Button ?? defaults.Button,\n\t\tBackArrowIcon: BackArrowIcon ?? defaults.BackArrowIcon,\n\t};\n\treturn <WizardComponentsContext.Provider value={value}>{children}</WizardComponentsContext.Provider>;\n}\n\nexport function useWizardComponents(): IWizardComponents {\n\treturn useContext(WizardComponentsContext);\n}\n","'use client';\n\nimport { createContext } from 'react';\n\nimport type { WizardEngine } from '../core/wizard-engine';\n\n/**\n * React context exposing the active `WizardEngine` instance to descendants.\n * `null` outside a `<WizardProvider>` — `useWizard()` throws a clear error.\n */\nexport const WizardEngineContext = createContext<null | WizardEngine<string, string, string>>(null);\n","'use client';\n\nimport { useContext, useSyncExternalStore } from 'react';\n\nimport type { WizardEngine } from '../core/wizard-engine';\n\nimport { WizardError } from '../core/errors';\nimport { WizardEngineContext } from './context';\n\n/**\n * Returns the active `WizardEngine` instance and re-renders the consumer on\n * every tree change. Throws if used outside a `<WizardProvider>`.\n *\n * Engine identity is stable across renders.\n */\nexport function useWizard<Step extends string, Category extends string, Branch extends string = string>(): WizardEngine<\n\tStep,\n\tCategory,\n\tBranch\n> {\n\tconst engine = useContext(WizardEngineContext) as null | WizardEngine<Step, Category, Branch>;\n\tif (!engine) {\n\t\tthrow new WizardError('useWizard must be used inside <WizardProvider>');\n\t}\n\tuseSyncExternalStore(engine.subscribe, engine.getTreeSnapshot, engine.getTreeSnapshot);\n\treturn engine;\n}\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(...inputs));\n}\n"]}
|