react-wizard-engine 0.1.5 → 0.1.7

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.
@@ -4,7 +4,7 @@
4
4
 
5
5
 
6
6
 
7
- var _chunkOV74AMBZcjs = require('../chunk-OV74AMBZ.cjs');
7
+ var _chunk5BUIFXZYcjs = require('../chunk-5BUIFXZY.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: _chunkOV74AMBZcjs.cn.call(void 0,
15
+ className: _chunk5BUIFXZYcjs.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
  ),
@@ -40,7 +40,8 @@ var buttonVariants = _classvarianceauthority.cva.call(void 0,
40
40
  variants: {
41
41
  variant: {
42
42
  default: "bg-primary text-primary-foreground hover:bg-primary/90",
43
- ghost: "hover:bg-accent hover:text-accent-foreground"
43
+ ghost: "hover:bg-accent hover:text-accent-foreground",
44
+ outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground"
44
45
  },
45
46
  size: {
46
47
  default: "h-9 px-4 py-2",
@@ -60,7 +61,7 @@ var defaultButton = _react.forwardRef.call(void 0, function DefaultButton({ asCh
60
61
  {
61
62
  ref,
62
63
  type: asChild ? void 0 : _nullishCoalesce(type, () => ( "button")),
63
- className: _chunkOV74AMBZcjs.cn.call(void 0, buttonVariants({ size, variant }), className),
64
+ className: _chunk5BUIFXZYcjs.cn.call(void 0, buttonVariants({ size, variant }), className),
64
65
  ...rest
65
66
  }
66
67
  );
@@ -69,7 +70,7 @@ var defaultButton = _react.forwardRef.call(void 0, function DefaultButton({ asCh
69
70
  // src/shadcn/components-provider-with-defaults.tsx
70
71
 
71
72
  function WizardComponentsProviderWithDefaults({ children }) {
72
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOV74AMBZcjs.WizardComponentsProvider, { Button: defaultButton, BackArrowIcon: defaultBackArrowIcon, children });
73
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5BUIFXZYcjs.WizardComponentsProvider, { Button: defaultButton, BackArrowIcon: defaultBackArrowIcon, children });
73
74
  }
74
75
 
75
76
  // src/shadcn/wizard-layout.tsx
@@ -82,12 +83,12 @@ var WizardLayoutContext = _react.createContext.call(void 0, null);
82
83
 
83
84
  // src/shadcn/wizard-layout.tsx
84
85
 
85
- function WizardLayout(props) {
86
- const { children, className, defaultRailTitle = "Wizard steps", rail, railTitle, ref, topBar } = props;
86
+ var WizardLayout = _react.forwardRef.call(void 0, function WizardLayout2(props, ref) {
87
+ const { children, className, defaultRailTitle = "Wizard steps", rail, railTitle, topBar } = props;
87
88
  const [mobileSheetOpen, setMobileSheetOpen] = _react.useState.call(void 0, false);
88
89
  const closeMobileSheet = () => setMobileSheetOpen(false);
89
90
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, WizardLayoutContext.Provider, { value: { mobileSheetOpen, setMobileSheetOpen }, children: [
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
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk5BUIFXZYcjs.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
92
  "div",
92
93
  {
93
94
  className: "flex flex-1 overflow-hidden bg-background text-foreground shadow-sm ring-1 ring-foreground/10 md:rounded-xl",
@@ -134,7 +135,7 @@ function WizardLayout(props) {
134
135
  )
135
136
  ] }) })
136
137
  ] });
137
- }
138
+ });
138
139
 
139
140
  // src/shadcn/wizard-top-bar.tsx
140
141
  var _lucidereact = require('lucide-react');
@@ -142,9 +143,9 @@ var _lucidereact = require('lucide-react');
142
143
 
143
144
  function WizardTopBar(props) {
144
145
  const { backLabel, className, closeLabel, disabled, extraActions, finishLabel, menuLabel, nextLabel, onClose } = props;
145
- const wizard = _chunkOV74AMBZcjs.useWizard.call(void 0, );
146
+ const wizard = _chunk5BUIFXZYcjs.useWizard.call(void 0, );
146
147
  const layout = _react.useContext.call(void 0, WizardLayoutContext);
147
- const { Button, BackArrowIcon } = _chunkOV74AMBZcjs.useWizardComponents.call(void 0, );
148
+ const { Button, BackArrowIcon } = _chunk5BUIFXZYcjs.useWizardComponents.call(void 0, );
148
149
  const config = wizard.configOptions;
149
150
  const tree = wizard.tree;
150
151
  const isFirstStep = tree.activeBranch.prevCategory == null && tree.activeCategory.prevStep == null;
@@ -157,7 +158,7 @@ function WizardTopBar(props) {
157
158
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
158
159
  "div",
159
160
  {
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
+ className: _chunk5BUIFXZYcjs.cn.call(void 0, "flex h-14 items-center gap-3 border-b border-border bg-background px-4 sm:px-6", className),
161
162
  "data-slot": "wizard-top-bar",
162
163
  children: [
163
164
  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 { 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 { 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\toutline: 'border border-input bg-background 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"]}
@@ -1,9 +1,9 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as react from 'react';
3
- import { ReactNode, ComponentProps, Ref } from 'react';
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
- import { a as IWizardButtonProps } from '../components-provider-bC3_zfyb.cjs';
6
+ import { a as IWizardButtonProps } from '../components-provider-CDmp3NL9.cjs';
7
7
 
8
8
  /**
9
9
  * Convenience wrapper around `WizardComponentsProvider` that wires in the
@@ -19,7 +19,7 @@ declare function WizardComponentsProviderWithDefaults({ children }: {
19
19
  declare function defaultBackArrowIcon({ className, ...rest }: ComponentProps<'svg'>): react_jsx_runtime.JSX.Element;
20
20
 
21
21
  declare const defaultButton: react.ForwardRefExoticComponent<Omit<IWizardButtonProps, "variant" | "size"> & VariantProps<(props?: ({
22
- variant?: "default" | "ghost" | null | undefined;
22
+ variant?: "default" | "ghost" | "outline" | null | undefined;
23
23
  size?: "default" | "icon-sm" | null | undefined;
24
24
  } & class_variance_authority_types.ClassProp) | undefined) => string> & {
25
25
  children?: ReactNode;
@@ -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 function WizardLayout(props: IWizardLayoutProps): react_jsx_runtime.JSX.Element;
43
+ declare const WizardLayout: react.ForwardRefExoticComponent<IWizardLayoutProps & react.RefAttributes<HTMLDivElement>>;
45
44
 
46
45
  interface IWizardLayoutContextValue {
47
46
  mobileSheetOpen: boolean;
@@ -1,9 +1,9 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as react from 'react';
3
- import { ReactNode, ComponentProps, Ref } from 'react';
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
- import { a as IWizardButtonProps } from '../components-provider-bC3_zfyb.js';
6
+ import { a as IWizardButtonProps } from '../components-provider-CDmp3NL9.js';
7
7
 
8
8
  /**
9
9
  * Convenience wrapper around `WizardComponentsProvider` that wires in the
@@ -19,7 +19,7 @@ declare function WizardComponentsProviderWithDefaults({ children }: {
19
19
  declare function defaultBackArrowIcon({ className, ...rest }: ComponentProps<'svg'>): react_jsx_runtime.JSX.Element;
20
20
 
21
21
  declare const defaultButton: react.ForwardRefExoticComponent<Omit<IWizardButtonProps, "variant" | "size"> & VariantProps<(props?: ({
22
- variant?: "default" | "ghost" | null | undefined;
22
+ variant?: "default" | "ghost" | "outline" | null | undefined;
23
23
  size?: "default" | "icon-sm" | null | undefined;
24
24
  } & class_variance_authority_types.ClassProp) | undefined) => string> & {
25
25
  children?: ReactNode;
@@ -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 function WizardLayout(props: IWizardLayoutProps): react_jsx_runtime.JSX.Element;
43
+ declare const WizardLayout: react.ForwardRefExoticComponent<IWizardLayoutProps & react.RefAttributes<HTMLDivElement>>;
45
44
 
46
45
  interface IWizardLayoutContextValue {
47
46
  mobileSheetOpen: boolean;
@@ -4,7 +4,7 @@ import {
4
4
  cn,
5
5
  useWizard,
6
6
  useWizardComponents
7
- } from "../chunk-NDYZHURP.js";
7
+ } from "../chunk-VXJ5MZUG.js";
8
8
 
9
9
  // src/shadcn/default-back-arrow-icon.tsx
10
10
  import { jsx } from "react/jsx-runtime";
@@ -40,7 +40,8 @@ var buttonVariants = cva(
40
40
  variants: {
41
41
  variant: {
42
42
  default: "bg-primary text-primary-foreground hover:bg-primary/90",
43
- ghost: "hover:bg-accent hover:text-accent-foreground"
43
+ ghost: "hover:bg-accent hover:text-accent-foreground",
44
+ outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground"
44
45
  },
45
46
  size: {
46
47
  default: "h-9 px-4 py-2",
@@ -74,7 +75,7 @@ function WizardComponentsProviderWithDefaults({ children }) {
74
75
 
75
76
  // src/shadcn/wizard-layout.tsx
76
77
  import * as Dialog from "@radix-ui/react-dialog";
77
- import { useState } from "react";
78
+ import { forwardRef as forwardRef2, useState } from "react";
78
79
 
79
80
  // src/shadcn/wizard-layout.context.ts
80
81
  import { createContext } from "react";
@@ -82,8 +83,8 @@ var WizardLayoutContext = createContext(null);
82
83
 
83
84
  // src/shadcn/wizard-layout.tsx
84
85
  import { jsx as jsx4, jsxs } from "react/jsx-runtime";
85
- function WizardLayout(props) {
86
- const { children, className, defaultRailTitle = "Wizard steps", rail, railTitle, ref, topBar } = props;
86
+ var WizardLayout = forwardRef2(function WizardLayout2(props, ref) {
87
+ const { children, className, defaultRailTitle = "Wizard steps", rail, railTitle, topBar } = props;
87
88
  const [mobileSheetOpen, setMobileSheetOpen] = useState(false);
88
89
  const closeMobileSheet = () => setMobileSheetOpen(false);
89
90
  return /* @__PURE__ */ jsxs(WizardLayoutContext.Provider, { value: { mobileSheetOpen, setMobileSheetOpen }, children: [
@@ -134,7 +135,7 @@ function WizardLayout(props) {
134
135
  )
135
136
  ] }) })
136
137
  ] });
137
- }
138
+ });
138
139
 
139
140
  // src/shadcn/wizard-top-bar.tsx
140
141
  import { MenuIcon, XIcon } from "lucide-react";
@@ -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 { 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 { 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\toutline: 'border border-input bg-background 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.5",
3
+ "version": "0.1.7",
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> = ({\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"]}
@@ -1 +0,0 @@
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"]}