@zentauri-ui/zentauri-components 1.5.21 → 1.5.31
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/README.md +59 -2
- package/cli/registry.json +2 -0
- package/dist/charts/area.js +1 -1
- package/dist/charts/area.js.map +1 -1
- package/dist/charts/area.mjs +1 -1
- package/dist/charts/area.mjs.map +1 -1
- package/dist/charts/bar/Bar.d.ts.map +1 -1
- package/dist/charts/bar.js +2 -1
- package/dist/charts/bar.js.map +1 -1
- package/dist/charts/bar.mjs +2 -1
- package/dist/charts/bar.mjs.map +1 -1
- package/dist/charts/pie/Pie.d.ts +1 -1
- package/dist/charts/pie/Pie.d.ts.map +1 -1
- package/dist/charts/pie.js +10 -7
- package/dist/charts/pie.js.map +1 -1
- package/dist/charts/pie.mjs +10 -7
- package/dist/charts/pie.mjs.map +1 -1
- package/dist/charts/shared/types.d.ts +10 -6
- package/dist/charts/shared/types.d.ts.map +1 -1
- package/dist/chunk-7OHC4ERB.mjs +60 -0
- package/dist/chunk-7OHC4ERB.mjs.map +1 -0
- package/dist/{chunk-2VQJ6OIL.js → chunk-HPN7H5ZM.js} +2 -2
- package/dist/{chunk-2VQJ6OIL.js.map → chunk-HPN7H5ZM.js.map} +1 -1
- package/dist/chunk-JJDANNNL.mjs +71 -0
- package/dist/chunk-JJDANNNL.mjs.map +1 -0
- package/dist/chunk-KXUG4WVW.js +62 -0
- package/dist/chunk-KXUG4WVW.js.map +1 -0
- package/dist/chunk-MEJMX4QI.js +73 -0
- package/dist/chunk-MEJMX4QI.js.map +1 -0
- package/dist/chunk-N6B35KWW.mjs +3 -0
- package/dist/chunk-N6B35KWW.mjs.map +1 -0
- package/dist/{chunk-73VCO5TE.mjs → chunk-NWOE2TZN.mjs} +2 -2
- package/dist/{chunk-73VCO5TE.mjs.map → chunk-NWOE2TZN.mjs.map} +1 -1
- package/dist/chunk-RGOMHX4G.js +4 -0
- package/dist/chunk-RGOMHX4G.js.map +1 -0
- package/dist/hooks/useControllableState.js +3 -2
- package/dist/hooks/useControllableState.mjs +2 -1
- package/dist/hooks/useDisclosure.js +3 -2
- package/dist/hooks/useDisclosure.js.map +1 -1
- package/dist/hooks/useDisclosure.mjs +2 -1
- package/dist/hooks/useDisclosure.mjs.map +1 -1
- package/dist/hooks/useDynamicStepper/index.d.ts +2 -0
- package/dist/hooks/useDynamicStepper/index.d.ts.map +1 -0
- package/dist/hooks/useDynamicStepper/useDynamicStepper.d.ts +9 -0
- package/dist/hooks/useDynamicStepper/useDynamicStepper.d.ts.map +1 -0
- package/dist/hooks/useDynamicStepper.js +14 -0
- package/dist/hooks/useDynamicStepper.js.map +1 -0
- package/dist/hooks/useDynamicStepper.mjs +5 -0
- package/dist/hooks/useDynamicStepper.mjs.map +1 -0
- package/dist/ui/buttons.js +7 -55
- package/dist/ui/buttons.js.map +1 -1
- package/dist/ui/buttons.mjs +2 -58
- package/dist/ui/buttons.mjs.map +1 -1
- package/dist/ui/dynamic-stepper/dynamic-stepper.d.ts +6 -0
- package/dist/ui/dynamic-stepper/dynamic-stepper.d.ts.map +1 -0
- package/dist/ui/dynamic-stepper/index.d.ts +5 -0
- package/dist/ui/dynamic-stepper/index.d.ts.map +1 -0
- package/dist/ui/dynamic-stepper/types.d.ts +61 -0
- package/dist/ui/dynamic-stepper/types.d.ts.map +1 -0
- package/dist/ui/dynamic-stepper/variants.d.ts +21 -0
- package/dist/ui/dynamic-stepper/variants.d.ts.map +1 -0
- package/dist/ui/dynamic-stepper.js +312 -0
- package/dist/ui/dynamic-stepper.js.map +1 -0
- package/dist/ui/dynamic-stepper.mjs +305 -0
- package/dist/ui/dynamic-stepper.mjs.map +1 -0
- package/dist/ui/pagination/pagination.d.ts +5 -16
- package/dist/ui/pagination/pagination.d.ts.map +1 -1
- package/dist/ui/pagination/types.d.ts +2 -2
- package/dist/ui/pagination/types.d.ts.map +1 -1
- package/dist/ui/pagination.js +171 -180
- package/dist/ui/pagination.js.map +1 -1
- package/dist/ui/pagination.mjs +172 -181
- package/dist/ui/pagination.mjs.map +1 -1
- package/dist/ui/typography/blockquote-base.d.ts.map +1 -1
- package/dist/ui/typography/code-block-base.d.ts.map +1 -1
- package/dist/ui/typography/heading-base.d.ts.map +1 -1
- package/dist/ui/typography/inline-code-base.d.ts.map +1 -1
- package/dist/ui/typography.js.map +1 -1
- package/dist/ui/typography.mjs.map +1 -1
- package/package.json +1 -1
- package/src/charts/area/Area.tsx +1 -1
- package/src/charts/bar/Bar.tsx +1 -0
- package/src/charts/pie/Pie.tsx +9 -7
- package/src/charts/shared/types.ts +10 -6
- package/src/hooks/useDynamicStepper/index.ts +3 -0
- package/src/hooks/useDynamicStepper/useDynamicStepper.test.ts +107 -0
- package/src/hooks/useDynamicStepper/useDynamicStepper.ts +91 -0
- package/src/ui/dynamic-stepper/dynamic-stepper.test.tsx +109 -0
- package/src/ui/dynamic-stepper/dynamic-stepper.tsx +173 -0
- package/src/ui/dynamic-stepper/index.ts +24 -0
- package/src/ui/dynamic-stepper/types.ts +85 -0
- package/src/ui/dynamic-stepper/variants.ts +238 -0
- package/src/ui/pagination/pagination.tsx +186 -197
- package/src/ui/pagination/types.ts +2 -2
- package/src/ui/typography/blockquote-base.tsx +0 -2
- package/src/ui/typography/code-block-base.tsx +0 -2
- package/src/ui/typography/heading-base.tsx +0 -2
- package/src/ui/typography/inline-code-base.tsx +0 -2
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { useControllableState } from './chunk-NWOE2TZN.mjs';
|
|
2
|
+
import { useMemo, useCallback } from 'react';
|
|
3
|
+
|
|
4
|
+
function clampDynamicStepperIndex(index, stepCount) {
|
|
5
|
+
if (stepCount <= 0) {
|
|
6
|
+
return 0;
|
|
7
|
+
}
|
|
8
|
+
return Math.min(Math.max(index, 0), stepCount - 1);
|
|
9
|
+
}
|
|
10
|
+
function useDynamicStepper({
|
|
11
|
+
stepCount,
|
|
12
|
+
activeStep: activeStepProp,
|
|
13
|
+
defaultActiveStep = 0,
|
|
14
|
+
onActiveStepChange,
|
|
15
|
+
onPrevious,
|
|
16
|
+
onNext
|
|
17
|
+
}) {
|
|
18
|
+
const [storedStep, setStoredStep] = useControllableState({
|
|
19
|
+
value: activeStepProp,
|
|
20
|
+
defaultValue: clampDynamicStepperIndex(defaultActiveStep, stepCount),
|
|
21
|
+
onChange: onActiveStepChange
|
|
22
|
+
});
|
|
23
|
+
const activeStep = useMemo(
|
|
24
|
+
() => clampDynamicStepperIndex(storedStep, stepCount),
|
|
25
|
+
[storedStep, stepCount]
|
|
26
|
+
);
|
|
27
|
+
const canGoPrevious = stepCount > 0 && activeStep > 0;
|
|
28
|
+
const canGoNext = stepCount > 0 && activeStep < stepCount - 1;
|
|
29
|
+
const setActiveStep = useCallback(
|
|
30
|
+
(next) => {
|
|
31
|
+
const resolved = typeof next === "function" ? next(activeStep) : next;
|
|
32
|
+
setStoredStep(clampDynamicStepperIndex(resolved, stepCount));
|
|
33
|
+
},
|
|
34
|
+
[activeStep, setStoredStep, stepCount]
|
|
35
|
+
);
|
|
36
|
+
const goPrevious = useCallback(() => {
|
|
37
|
+
if (!canGoPrevious) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const nextStep = clampDynamicStepperIndex(activeStep - 1, stepCount);
|
|
41
|
+
setStoredStep(nextStep);
|
|
42
|
+
onPrevious?.(nextStep);
|
|
43
|
+
}, [
|
|
44
|
+
activeStep,
|
|
45
|
+
canGoPrevious,
|
|
46
|
+
onPrevious,
|
|
47
|
+
setStoredStep,
|
|
48
|
+
stepCount
|
|
49
|
+
]);
|
|
50
|
+
const goNext = useCallback(() => {
|
|
51
|
+
if (!canGoNext) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const nextStep = clampDynamicStepperIndex(activeStep + 1, stepCount);
|
|
55
|
+
setStoredStep(nextStep);
|
|
56
|
+
onNext?.(nextStep);
|
|
57
|
+
}, [activeStep, canGoNext, onNext, setStoredStep, stepCount]);
|
|
58
|
+
return {
|
|
59
|
+
activeStep,
|
|
60
|
+
setActiveStep,
|
|
61
|
+
goPrevious,
|
|
62
|
+
goNext,
|
|
63
|
+
canGoPrevious,
|
|
64
|
+
canGoNext,
|
|
65
|
+
stepCount
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export { useDynamicStepper };
|
|
70
|
+
//# sourceMappingURL=chunk-JJDANNNL.mjs.map
|
|
71
|
+
//# sourceMappingURL=chunk-JJDANNNL.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks/useDynamicStepper/useDynamicStepper.ts"],"names":[],"mappings":";;;AAWA,SAAS,wBAAA,CAAyB,OAAe,SAAA,EAA2B;AAC1E,EAAA,IAAI,aAAa,CAAA,EAAG;AAClB,IAAA,OAAO,CAAA;AAAA,EACT;AACA,EAAA,OAAO,IAAA,CAAK,IAAI,IAAA,CAAK,GAAA,CAAI,OAAO,CAAC,CAAA,EAAG,YAAY,CAAC,CAAA;AACnD;AAQO,SAAS,iBAAA,CAAkB;AAAA,EAChC,SAAA;AAAA,EACA,UAAA,EAAY,cAAA;AAAA,EACZ,iBAAA,GAAoB,CAAA;AAAA,EACpB,kBAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAAqD;AACnD,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,oBAAA,CAA6B;AAAA,IAC/D,KAAA,EAAO,cAAA;AAAA,IACP,YAAA,EAAc,wBAAA,CAAyB,iBAAA,EAAmB,SAAS,CAAA;AAAA,IACnE,QAAA,EAAU;AAAA,GACX,CAAA;AAED,EAAA,MAAM,UAAA,GAAa,OAAA;AAAA,IACjB,MAAM,wBAAA,CAAyB,UAAA,EAAY,SAAS,CAAA;AAAA,IACpD,CAAC,YAAY,SAAS;AAAA,GACxB;AAEA,EAAA,MAAM,aAAA,GAAgB,SAAA,GAAY,CAAA,IAAK,UAAA,GAAa,CAAA;AACpD,EAAA,MAAM,SAAA,GAAY,SAAA,GAAY,CAAA,IAAK,UAAA,GAAa,SAAA,GAAY,CAAA;AAE5D,EAAA,MAAM,aAAA,GAAgB,WAAA;AAAA,IACpB,CAAC,IAAA,KAA8C;AAC7C,MAAA,MAAM,WACJ,OAAO,IAAA,KAAS,UAAA,GACX,IAAA,CAAkC,UAAU,CAAA,GAC7C,IAAA;AACN,MAAA,aAAA,CAAc,wBAAA,CAAyB,QAAA,EAAU,SAAS,CAAC,CAAA;AAAA,IAC7D,CAAA;AAAA,IACA,CAAC,UAAA,EAAY,aAAA,EAAe,SAAS;AAAA,GACvC;AAEA,EAAA,MAAM,UAAA,GAAa,YAAY,MAAM;AACnC,IAAA,IAAI,CAAC,aAAA,EAAe;AAClB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,QAAA,GAAW,wBAAA,CAAyB,UAAA,GAAa,CAAA,EAAG,SAAS,CAAA;AACnE,IAAA,aAAA,CAAc,QAAQ,CAAA;AACtB,IAAA,UAAA,GAAa,QAAQ,CAAA;AAAA,EACvB,CAAA,EAAG;AAAA,IACD,UAAA;AAAA,IACA,aAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,MAAM,MAAA,GAAS,YAAY,MAAM;AAC/B,IAAA,IAAI,CAAC,SAAA,EAAW;AACd,MAAA;AAAA,IACF;AACA,IAAA,MAAM,QAAA,GAAW,wBAAA,CAAyB,UAAA,GAAa,CAAA,EAAG,SAAS,CAAA;AACnE,IAAA,aAAA,CAAc,QAAQ,CAAA;AACtB,IAAA,MAAA,GAAS,QAAQ,CAAA;AAAA,EACnB,GAAG,CAAC,UAAA,EAAY,WAAW,MAAA,EAAQ,aAAA,EAAe,SAAS,CAAC,CAAA;AAE5D,EAAA,OAAO;AAAA,IACL,UAAA;AAAA,IACA,aAAA;AAAA,IACA,UAAA;AAAA,IACA,MAAA;AAAA,IACA,aAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF;AACF","file":"chunk-JJDANNNL.mjs","sourcesContent":["\"use client\";\n\nimport { useCallback, useMemo } from \"react\";\n\nimport { useControllableState } from \"../useControllableState/useControllableState\";\n\nimport type {\n UseDynamicStepperParams,\n UseDynamicStepperResult,\n} from \"../../ui/dynamic-stepper/types\";\n\nfunction clampDynamicStepperIndex(index: number, stepCount: number): number {\n if (stepCount <= 0) {\n return 0;\n }\n return Math.min(Math.max(index, 0), stepCount - 1);\n}\n\n/**\n * Headless multi-step index with prev/next navigation.\n *\n * @param params.stepCount - Number of steps (0-based count semantics via indices).\n * @returns Active step, setter, navigation helpers, and boundary flags.\n */\nexport function useDynamicStepper({\n stepCount,\n activeStep: activeStepProp,\n defaultActiveStep = 0,\n onActiveStepChange,\n onPrevious,\n onNext,\n}: UseDynamicStepperParams): UseDynamicStepperResult {\n const [storedStep, setStoredStep] = useControllableState<number>({\n value: activeStepProp,\n defaultValue: clampDynamicStepperIndex(defaultActiveStep, stepCount),\n onChange: onActiveStepChange,\n });\n\n const activeStep = useMemo(\n () => clampDynamicStepperIndex(storedStep, stepCount),\n [storedStep, stepCount],\n );\n\n const canGoPrevious = stepCount > 0 && activeStep > 0;\n const canGoNext = stepCount > 0 && activeStep < stepCount - 1;\n\n const setActiveStep = useCallback(\n (next: number | ((prev: number) => number)) => {\n const resolved =\n typeof next === \"function\"\n ? (next as (prev: number) => number)(activeStep)\n : next;\n setStoredStep(clampDynamicStepperIndex(resolved, stepCount));\n },\n [activeStep, setStoredStep, stepCount],\n );\n\n const goPrevious = useCallback(() => {\n if (!canGoPrevious) {\n return;\n }\n const nextStep = clampDynamicStepperIndex(activeStep - 1, stepCount);\n setStoredStep(nextStep);\n onPrevious?.(nextStep);\n }, [\n activeStep,\n canGoPrevious,\n onPrevious,\n setStoredStep,\n stepCount,\n ]);\n\n const goNext = useCallback(() => {\n if (!canGoNext) {\n return;\n }\n const nextStep = clampDynamicStepperIndex(activeStep + 1, stepCount);\n setStoredStep(nextStep);\n onNext?.(nextStep);\n }, [activeStep, canGoNext, onNext, setStoredStep, stepCount]);\n\n return {\n activeStep,\n setActiveStep,\n goPrevious,\n goNext,\n canGoPrevious,\n canGoNext,\n stepCount,\n };\n}\n"]}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkOB4KJZK2_js = require('./chunk-OB4KJZK2.js');
|
|
4
|
+
var chunkZS5756ZC_js = require('./chunk-ZS5756ZC.js');
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
|
|
7
|
+
var ButtonBase = (props) => {
|
|
8
|
+
if (props.as === "link") {
|
|
9
|
+
const {
|
|
10
|
+
className: className2,
|
|
11
|
+
appearance: appearance2,
|
|
12
|
+
size: size2,
|
|
13
|
+
children: children2,
|
|
14
|
+
ref: ref2,
|
|
15
|
+
href,
|
|
16
|
+
target,
|
|
17
|
+
...rest2
|
|
18
|
+
} = props;
|
|
19
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20
|
+
"a",
|
|
21
|
+
{
|
|
22
|
+
ref: ref2,
|
|
23
|
+
href,
|
|
24
|
+
target,
|
|
25
|
+
rel: target === "_blank" ? "noopener noreferrer" : void 0,
|
|
26
|
+
"data-slot": "button",
|
|
27
|
+
className: chunkZS5756ZC_js.cn(chunkOB4KJZK2_js.buttonVariants({ appearance: appearance2, size: size2 }), className2),
|
|
28
|
+
...rest2,
|
|
29
|
+
children: children2
|
|
30
|
+
}
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
const {
|
|
34
|
+
className,
|
|
35
|
+
appearance,
|
|
36
|
+
size,
|
|
37
|
+
type = "button",
|
|
38
|
+
children,
|
|
39
|
+
ref,
|
|
40
|
+
...rest
|
|
41
|
+
} = props;
|
|
42
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
43
|
+
"button",
|
|
44
|
+
{
|
|
45
|
+
ref,
|
|
46
|
+
type,
|
|
47
|
+
"data-slot": "button",
|
|
48
|
+
className: chunkZS5756ZC_js.cn(chunkOB4KJZK2_js.buttonVariants({ appearance, size }), className),
|
|
49
|
+
...rest,
|
|
50
|
+
children
|
|
51
|
+
}
|
|
52
|
+
);
|
|
53
|
+
};
|
|
54
|
+
ButtonBase.displayName = "Button";
|
|
55
|
+
var Button = (props) => {
|
|
56
|
+
return /* @__PURE__ */ jsxRuntime.jsx(ButtonBase, { ...props });
|
|
57
|
+
};
|
|
58
|
+
Button.displayName = "Button";
|
|
59
|
+
|
|
60
|
+
exports.Button = Button;
|
|
61
|
+
//# sourceMappingURL=chunk-KXUG4WVW.js.map
|
|
62
|
+
//# sourceMappingURL=chunk-KXUG4WVW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ui/buttons/button-base.tsx","../src/ui/buttons/button.tsx"],"names":["className","appearance","size","children","ref","rest","jsx","cn","buttonVariants"],"mappings":";;;;;;AAOO,IAAM,UAAA,GAAa,CAAC,KAAA,KAAuB;AAChD,EAAA,IAAI,KAAA,CAAM,OAAO,MAAA,EAAQ;AACvB,IAAA,MAAM;AAAA,MACJ,SAAA,EAAAA,UAAAA;AAAA,MACA,UAAA,EAAAC,WAAAA;AAAA,MACA,IAAA,EAAAC,KAAAA;AAAA,MACA,QAAA,EAAAC,SAAAA;AAAA,MACA,GAAA,EAAAC,IAAAA;AAAA,MACA,IAAA;AAAA,MACA,MAAA;AAAA,MACA,GAAGC;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,uBACEC,cAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAKF,IAAAA;AAAA,QACL,IAAA;AAAA,QACA,MAAA;AAAA,QACA,GAAA,EAAK,MAAA,KAAW,QAAA,GAAW,qBAAA,GAAwB,MAAA;AAAA,QACnD,WAAA,EAAU,QAAA;AAAA,QACV,SAAA,EAAWG,mBAAA,CAAGC,+BAAA,CAAe,EAAE,UAAA,EAAAP,aAAY,IAAA,EAAAC,KAAAA,EAAM,CAAA,EAAGF,UAAS,CAAA;AAAA,QAC5D,GAAGK,KAAAA;AAAA,QAEH,QAAA,EAAAF;AAAA;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,MAAM;AAAA,IACJ,SAAA;AAAA,IACA,UAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA,GAAO,QAAA;AAAA,IACP,QAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,KAAA;AAEJ,EAAA,uBACEG,cAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA;AAAA,MACA,WAAA,EAAU,QAAA;AAAA,MACV,SAAA,EAAWC,oBAAGC,+BAAA,CAAe,EAAE,YAAY,IAAA,EAAM,GAAG,SAAS,CAAA;AAAA,MAC5D,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAA;AAEA,UAAA,CAAW,WAAA,GAAc,QAAA;ACtDlB,IAAM,MAAA,GAAS,CAAC,KAAA,KAAuB;AAC5C,EAAA,uBAAOF,cAAAA,CAAC,UAAA,EAAA,EAAY,GAAG,KAAA,EAAO,CAAA;AAChC;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA","file":"chunk-KXUG4WVW.js","sourcesContent":["\"use client\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport type { ButtonProps } from \"./types\";\nimport { buttonVariants } from \"./variants\";\n\nexport const ButtonBase = (props: ButtonProps) => {\n if (props.as === \"link\") {\n const {\n className,\n appearance,\n size,\n children,\n ref,\n href,\n target,\n ...rest\n } = props;\n\n return (\n <a\n ref={ref}\n href={href}\n target={target}\n rel={target === \"_blank\" ? \"noopener noreferrer\" : undefined}\n data-slot=\"button\"\n className={cn(buttonVariants({ appearance, size }), className)}\n {...rest}\n >\n {children}\n </a>\n );\n }\n\n const {\n className,\n appearance,\n size,\n type = \"button\",\n children,\n ref,\n ...rest\n } = props;\n\n return (\n <button\n ref={ref}\n type={type}\n data-slot=\"button\"\n className={cn(buttonVariants({ appearance, size }), className)}\n {...rest}\n >\n {children}\n </button>\n );\n};\n\nButtonBase.displayName = \"Button\";\n","// button.tsx — default static entry (no framer-motion)\nimport { ButtonBase } from \"./button-base\";\nimport type { ButtonProps } from \"./types\";\n\nexport const Button = (props: ButtonProps) => {\n return <ButtonBase {...props} />;\n};\n\nButton.displayName = \"Button\";\n"]}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkHPN7H5ZM_js = require('./chunk-HPN7H5ZM.js');
|
|
4
|
+
var react = require('react');
|
|
5
|
+
|
|
6
|
+
function clampDynamicStepperIndex(index, stepCount) {
|
|
7
|
+
if (stepCount <= 0) {
|
|
8
|
+
return 0;
|
|
9
|
+
}
|
|
10
|
+
return Math.min(Math.max(index, 0), stepCount - 1);
|
|
11
|
+
}
|
|
12
|
+
function useDynamicStepper({
|
|
13
|
+
stepCount,
|
|
14
|
+
activeStep: activeStepProp,
|
|
15
|
+
defaultActiveStep = 0,
|
|
16
|
+
onActiveStepChange,
|
|
17
|
+
onPrevious,
|
|
18
|
+
onNext
|
|
19
|
+
}) {
|
|
20
|
+
const [storedStep, setStoredStep] = chunkHPN7H5ZM_js.useControllableState({
|
|
21
|
+
value: activeStepProp,
|
|
22
|
+
defaultValue: clampDynamicStepperIndex(defaultActiveStep, stepCount),
|
|
23
|
+
onChange: onActiveStepChange
|
|
24
|
+
});
|
|
25
|
+
const activeStep = react.useMemo(
|
|
26
|
+
() => clampDynamicStepperIndex(storedStep, stepCount),
|
|
27
|
+
[storedStep, stepCount]
|
|
28
|
+
);
|
|
29
|
+
const canGoPrevious = stepCount > 0 && activeStep > 0;
|
|
30
|
+
const canGoNext = stepCount > 0 && activeStep < stepCount - 1;
|
|
31
|
+
const setActiveStep = react.useCallback(
|
|
32
|
+
(next) => {
|
|
33
|
+
const resolved = typeof next === "function" ? next(activeStep) : next;
|
|
34
|
+
setStoredStep(clampDynamicStepperIndex(resolved, stepCount));
|
|
35
|
+
},
|
|
36
|
+
[activeStep, setStoredStep, stepCount]
|
|
37
|
+
);
|
|
38
|
+
const goPrevious = react.useCallback(() => {
|
|
39
|
+
if (!canGoPrevious) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const nextStep = clampDynamicStepperIndex(activeStep - 1, stepCount);
|
|
43
|
+
setStoredStep(nextStep);
|
|
44
|
+
onPrevious?.(nextStep);
|
|
45
|
+
}, [
|
|
46
|
+
activeStep,
|
|
47
|
+
canGoPrevious,
|
|
48
|
+
onPrevious,
|
|
49
|
+
setStoredStep,
|
|
50
|
+
stepCount
|
|
51
|
+
]);
|
|
52
|
+
const goNext = react.useCallback(() => {
|
|
53
|
+
if (!canGoNext) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const nextStep = clampDynamicStepperIndex(activeStep + 1, stepCount);
|
|
57
|
+
setStoredStep(nextStep);
|
|
58
|
+
onNext?.(nextStep);
|
|
59
|
+
}, [activeStep, canGoNext, onNext, setStoredStep, stepCount]);
|
|
60
|
+
return {
|
|
61
|
+
activeStep,
|
|
62
|
+
setActiveStep,
|
|
63
|
+
goPrevious,
|
|
64
|
+
goNext,
|
|
65
|
+
canGoPrevious,
|
|
66
|
+
canGoNext,
|
|
67
|
+
stepCount
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
exports.useDynamicStepper = useDynamicStepper;
|
|
72
|
+
//# sourceMappingURL=chunk-MEJMX4QI.js.map
|
|
73
|
+
//# sourceMappingURL=chunk-MEJMX4QI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks/useDynamicStepper/useDynamicStepper.ts"],"names":["useControllableState","useMemo","useCallback"],"mappings":";;;;;AAWA,SAAS,wBAAA,CAAyB,OAAe,SAAA,EAA2B;AAC1E,EAAA,IAAI,aAAa,CAAA,EAAG;AAClB,IAAA,OAAO,CAAA;AAAA,EACT;AACA,EAAA,OAAO,IAAA,CAAK,IAAI,IAAA,CAAK,GAAA,CAAI,OAAO,CAAC,CAAA,EAAG,YAAY,CAAC,CAAA;AACnD;AAQO,SAAS,iBAAA,CAAkB;AAAA,EAChC,SAAA;AAAA,EACA,UAAA,EAAY,cAAA;AAAA,EACZ,iBAAA,GAAoB,CAAA;AAAA,EACpB,kBAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAAqD;AACnD,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,qCAAA,CAA6B;AAAA,IAC/D,KAAA,EAAO,cAAA;AAAA,IACP,YAAA,EAAc,wBAAA,CAAyB,iBAAA,EAAmB,SAAS,CAAA;AAAA,IACnE,QAAA,EAAU;AAAA,GACX,CAAA;AAED,EAAA,MAAM,UAAA,GAAaC,aAAA;AAAA,IACjB,MAAM,wBAAA,CAAyB,UAAA,EAAY,SAAS,CAAA;AAAA,IACpD,CAAC,YAAY,SAAS;AAAA,GACxB;AAEA,EAAA,MAAM,aAAA,GAAgB,SAAA,GAAY,CAAA,IAAK,UAAA,GAAa,CAAA;AACpD,EAAA,MAAM,SAAA,GAAY,SAAA,GAAY,CAAA,IAAK,UAAA,GAAa,SAAA,GAAY,CAAA;AAE5D,EAAA,MAAM,aAAA,GAAgBC,iBAAA;AAAA,IACpB,CAAC,IAAA,KAA8C;AAC7C,MAAA,MAAM,WACJ,OAAO,IAAA,KAAS,UAAA,GACX,IAAA,CAAkC,UAAU,CAAA,GAC7C,IAAA;AACN,MAAA,aAAA,CAAc,wBAAA,CAAyB,QAAA,EAAU,SAAS,CAAC,CAAA;AAAA,IAC7D,CAAA;AAAA,IACA,CAAC,UAAA,EAAY,aAAA,EAAe,SAAS;AAAA,GACvC;AAEA,EAAA,MAAM,UAAA,GAAaA,kBAAY,MAAM;AACnC,IAAA,IAAI,CAAC,aAAA,EAAe;AAClB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,QAAA,GAAW,wBAAA,CAAyB,UAAA,GAAa,CAAA,EAAG,SAAS,CAAA;AACnE,IAAA,aAAA,CAAc,QAAQ,CAAA;AACtB,IAAA,UAAA,GAAa,QAAQ,CAAA;AAAA,EACvB,CAAA,EAAG;AAAA,IACD,UAAA;AAAA,IACA,aAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,MAAM,MAAA,GAASA,kBAAY,MAAM;AAC/B,IAAA,IAAI,CAAC,SAAA,EAAW;AACd,MAAA;AAAA,IACF;AACA,IAAA,MAAM,QAAA,GAAW,wBAAA,CAAyB,UAAA,GAAa,CAAA,EAAG,SAAS,CAAA;AACnE,IAAA,aAAA,CAAc,QAAQ,CAAA;AACtB,IAAA,MAAA,GAAS,QAAQ,CAAA;AAAA,EACnB,GAAG,CAAC,UAAA,EAAY,WAAW,MAAA,EAAQ,aAAA,EAAe,SAAS,CAAC,CAAA;AAE5D,EAAA,OAAO;AAAA,IACL,UAAA;AAAA,IACA,aAAA;AAAA,IACA,UAAA;AAAA,IACA,MAAA;AAAA,IACA,aAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF;AACF","file":"chunk-MEJMX4QI.js","sourcesContent":["\"use client\";\n\nimport { useCallback, useMemo } from \"react\";\n\nimport { useControllableState } from \"../useControllableState/useControllableState\";\n\nimport type {\n UseDynamicStepperParams,\n UseDynamicStepperResult,\n} from \"../../ui/dynamic-stepper/types\";\n\nfunction clampDynamicStepperIndex(index: number, stepCount: number): number {\n if (stepCount <= 0) {\n return 0;\n }\n return Math.min(Math.max(index, 0), stepCount - 1);\n}\n\n/**\n * Headless multi-step index with prev/next navigation.\n *\n * @param params.stepCount - Number of steps (0-based count semantics via indices).\n * @returns Active step, setter, navigation helpers, and boundary flags.\n */\nexport function useDynamicStepper({\n stepCount,\n activeStep: activeStepProp,\n defaultActiveStep = 0,\n onActiveStepChange,\n onPrevious,\n onNext,\n}: UseDynamicStepperParams): UseDynamicStepperResult {\n const [storedStep, setStoredStep] = useControllableState<number>({\n value: activeStepProp,\n defaultValue: clampDynamicStepperIndex(defaultActiveStep, stepCount),\n onChange: onActiveStepChange,\n });\n\n const activeStep = useMemo(\n () => clampDynamicStepperIndex(storedStep, stepCount),\n [storedStep, stepCount],\n );\n\n const canGoPrevious = stepCount > 0 && activeStep > 0;\n const canGoNext = stepCount > 0 && activeStep < stepCount - 1;\n\n const setActiveStep = useCallback(\n (next: number | ((prev: number) => number)) => {\n const resolved =\n typeof next === \"function\"\n ? (next as (prev: number) => number)(activeStep)\n : next;\n setStoredStep(clampDynamicStepperIndex(resolved, stepCount));\n },\n [activeStep, setStoredStep, stepCount],\n );\n\n const goPrevious = useCallback(() => {\n if (!canGoPrevious) {\n return;\n }\n const nextStep = clampDynamicStepperIndex(activeStep - 1, stepCount);\n setStoredStep(nextStep);\n onPrevious?.(nextStep);\n }, [\n activeStep,\n canGoPrevious,\n onPrevious,\n setStoredStep,\n stepCount,\n ]);\n\n const goNext = useCallback(() => {\n if (!canGoNext) {\n return;\n }\n const nextStep = clampDynamicStepperIndex(activeStep + 1, stepCount);\n setStoredStep(nextStep);\n onNext?.(nextStep);\n }, [activeStep, canGoNext, onNext, setStoredStep, stepCount]);\n\n return {\n activeStep,\n setActiveStep,\n goPrevious,\n goNext,\n canGoPrevious,\n canGoNext,\n stepCount,\n };\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-N6B35KWW.mjs"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/hooks/useControllableState/useControllableState.ts"],"names":[],"mappings":";;;AAwBO,SAAS,oBAAA,CAAwB;AAAA,EACtC,KAAA,EAAO,SAAA;AAAA,EACP,YAAA;AAAA,EACA;AACF,CAAA,EAA6E;AAC3E,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAS,YAAY,CAAA;AAC7D,EAAA,MAAM,eAAe,SAAA,KAAc,MAAA;AACnC,EAAA,MAAM,KAAA,GAAQ,eAAe,SAAA,GAAY,YAAA;AACzC,EAAA,MAAM,WAAA,GAAc,OAAO,QAAQ,CAAA;AACnC,EAAA,WAAA,CAAY,OAAA,GAAU,QAAA;AAEtB,EAAA,MAAM,QAAA,GAAW,WAAA;AAAA,IACf,CAAC,IAAA,KAA+B;AAC9B,MAAA,MAAM,WACJ,OAAO,IAAA,KAAS,UAAA,GAAc,IAAA,CAAwB,KAAK,CAAA,GAAI,IAAA;AACjE,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,eAAA,CAAgB,QAAQ,CAAA;AAAA,MAC1B;AACA,MAAA,WAAA,CAAY,UAAU,QAAQ,CAAA;AAAA,IAChC,CAAA;AAAA,IACA,CAAC,cAAc,KAAK;AAAA,GACtB;AAEA,EAAA,OAAO,CAAC,OAAO,QAAQ,CAAA;AACzB","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/hooks/useControllableState/useControllableState.ts"],"names":[],"mappings":";;;AAwBO,SAAS,oBAAA,CAAwB;AAAA,EACtC,KAAA,EAAO,SAAA;AAAA,EACP,YAAA;AAAA,EACA;AACF,CAAA,EAA6E;AAC3E,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAS,YAAY,CAAA;AAC7D,EAAA,MAAM,eAAe,SAAA,KAAc,MAAA;AACnC,EAAA,MAAM,KAAA,GAAQ,eAAe,SAAA,GAAY,YAAA;AACzC,EAAA,MAAM,WAAA,GAAc,OAAO,QAAQ,CAAA;AACnC,EAAA,WAAA,CAAY,OAAA,GAAU,QAAA;AAEtB,EAAA,MAAM,QAAA,GAAW,WAAA;AAAA,IACf,CAAC,IAAA,KAA+B;AAC9B,MAAA,MAAM,WACJ,OAAO,IAAA,KAAS,UAAA,GAAc,IAAA,CAAwB,KAAK,CAAA,GAAI,IAAA;AACjE,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,eAAA,CAAgB,QAAQ,CAAA;AAAA,MAC1B;AACA,MAAA,WAAA,CAAY,UAAU,QAAQ,CAAA;AAAA,IAChC,CAAA;AAAA,IACA,CAAC,cAAc,KAAK;AAAA,GACtB;AAEA,EAAA,OAAO,CAAC,OAAO,QAAQ,CAAA;AACzB","file":"chunk-NWOE2TZN.mjs","sourcesContent":["\"use client\";\n\nimport { useCallback, useRef, useState } from \"react\";\n\nexport type UseControllableStateParams<T> = {\n /** When defined, the hook is controlled and this value is returned as state. */\n value?: T;\n /** Initial / fallback value when uncontrolled (`value` is `undefined`). */\n defaultValue: T;\n /** Notified on every `setValue` with the resolved next value (controlled and uncontrolled). */\n onChange?: (next: T) => void;\n};\n\n/**\n * Implements the React “controlled vs uncontrolled” pattern as a single state tuple.\n *\n * - If `value` is `undefined`, internal state mirrors `defaultValue` and updates on `setValue`.\n * - If `value` is defined, returned state follows `value`; `setValue` still calls `onChange` so the parent can update.\n * - `setValue` accepts either the next value or an updater `(prev) => next` (updater uses the current `value` in controlled mode).\n *\n * @typeParam T - State value type.\n * @param params - `value`, `defaultValue`, and optional `onChange`.\n * @returns `[value, setValue]` compatible with `useState`-style usage.\n */\nexport function useControllableState<T>({\n value: valueProp,\n defaultValue,\n onChange,\n}: UseControllableStateParams<T>): [T, (next: T | ((prev: T) => T)) => void] {\n const [uncontrolled, setUncontrolled] = useState(defaultValue);\n const isControlled = valueProp !== undefined;\n const value = isControlled ? valueProp : uncontrolled;\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n const setValue = useCallback(\n (next: T | ((prev: T) => T)) => {\n const resolved =\n typeof next === \"function\" ? (next as (prev: T) => T)(value) : next;\n if (!isControlled) {\n setUncontrolled(resolved);\n }\n onChangeRef.current?.(resolved);\n },\n [isControlled, value],\n );\n\n return [value, setValue];\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-RGOMHX4G.js"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
require('../chunk-RGOMHX4G.js');
|
|
5
|
+
var chunkHPN7H5ZM_js = require('../chunk-HPN7H5ZM.js');
|
|
5
6
|
|
|
6
7
|
|
|
7
8
|
|
|
8
9
|
Object.defineProperty(exports, "useControllableState", {
|
|
9
10
|
enumerable: true,
|
|
10
|
-
get: function () { return
|
|
11
|
+
get: function () { return chunkHPN7H5ZM_js.useControllableState; }
|
|
11
12
|
});
|
|
12
13
|
//# sourceMappingURL=useControllableState.js.map
|
|
13
14
|
//# sourceMappingURL=useControllableState.js.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
|
|
2
|
+
import '../chunk-N6B35KWW.mjs';
|
|
3
|
+
export { useControllableState } from '../chunk-NWOE2TZN.mjs';
|
|
3
4
|
//# sourceMappingURL=useControllableState.mjs.map
|
|
4
5
|
//# sourceMappingURL=useControllableState.mjs.map
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
require('../chunk-RGOMHX4G.js');
|
|
5
|
+
var chunkHPN7H5ZM_js = require('../chunk-HPN7H5ZM.js');
|
|
5
6
|
var react = require('react');
|
|
6
7
|
|
|
7
8
|
function useDisclosure({
|
|
@@ -9,7 +10,7 @@ function useDisclosure({
|
|
|
9
10
|
defaultOpen = false,
|
|
10
11
|
onOpenChange
|
|
11
12
|
} = {}) {
|
|
12
|
-
const [isOpen, setOpenState] =
|
|
13
|
+
const [isOpen, setOpenState] = chunkHPN7H5ZM_js.useControllableState({
|
|
13
14
|
value: openProp,
|
|
14
15
|
defaultValue: defaultOpen,
|
|
15
16
|
onChange: onOpenChange
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/useDisclosure/useDisclosure.ts"],"names":["useControllableState","useCallback","open"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useDisclosure/useDisclosure.ts"],"names":["useControllableState","useCallback","open"],"mappings":";;;;;;AA8BO,SAAS,aAAA,CAAc;AAAA,EAC5B,IAAA,EAAM,QAAA;AAAA,EACN,WAAA,GAAc,KAAA;AAAA,EACd;AACF,CAAA,GAAyB,EAAC,EAAwB;AAChD,EAAA,MAAM,CAAC,MAAA,EAAQ,YAAY,CAAA,GAAIA,qCAAA,CAAqB;AAAA,IAClD,KAAA,EAAO,QAAA;AAAA,IACP,YAAA,EAAc,WAAA;AAAA,IACd,QAAA,EAAU;AAAA,GACX,CAAA;AAED,EAAA,MAAM,OAAA,GAAUC,iBAAA;AAAA,IACd,CAACC,KAAAA,KAAkB;AACjB,MAAA,YAAA,CAAaA,KAAI,CAAA;AAAA,IACnB,CAAA;AAAA,IACA,CAAC,YAAY;AAAA,GACf;AAEA,EAAA,MAAM,IAAA,GAAOD,kBAAY,MAAM;AAC7B,IAAA,YAAA,CAAa,IAAI,CAAA;AAAA,EACnB,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,EAAA,MAAM,KAAA,GAAQA,kBAAY,MAAM;AAC9B,IAAA,YAAA,CAAa,KAAK,CAAA;AAAA,EACpB,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,EAAA,MAAM,MAAA,GAASA,kBAAY,MAAM;AAC/B,IAAA,YAAA,CAAa,CAAC,MAAM,CAAA;AAAA,EACtB,CAAA,EAAG,CAAC,MAAA,EAAQ,YAAY,CAAC,CAAA;AAEzB,EAAA,OAAO,EAAE,MAAA,EAAQ,IAAA,EAAM,KAAA,EAAO,QAAQ,OAAA,EAAQ;AAChD","file":"useDisclosure.js","sourcesContent":["\"use client\";\n\nimport { useCallback } from \"react\";\n\nimport { useControllableState } from \"../useControllableState\";\n\nexport type UseDisclosureParams = {\n /** Controlled open flag; omit for uncontrolled usage with `defaultOpen`. */\n open?: boolean;\n /** Initial open state when uncontrolled. */\n defaultOpen?: boolean;\n /** Fired whenever open state changes from user-driven `setOpen` / `open` / `close` / `toggle`. */\n onOpenChange?: (open: boolean) => void;\n};\n\nexport type UseDisclosureResult = {\n isOpen: boolean;\n open: () => void;\n close: () => void;\n toggle: () => void;\n setOpen: (open: boolean) => void;\n};\n\n/**\n * Boolean open/close state for overlays (dialogs, menus, collapsible regions) with optional control from the parent.\n * Built on {@link useControllableState}; semantics match common headless UI libraries.\n *\n * @param params - Optional `open`, `defaultOpen`, and `onOpenChange`.\n * @returns Helpers `open`, `close`, `toggle`, `setOpen`, and the current `isOpen` flag.\n */\nexport function useDisclosure({\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n}: UseDisclosureParams = {}): UseDisclosureResult {\n const [isOpen, setOpenState] = useControllableState({\n value: openProp,\n defaultValue: defaultOpen,\n onChange: onOpenChange,\n });\n\n const setOpen = useCallback(\n (open: boolean) => {\n setOpenState(open);\n },\n [setOpenState],\n );\n\n const open = useCallback(() => {\n setOpenState(true);\n }, [setOpenState]);\n\n const close = useCallback(() => {\n setOpenState(false);\n }, [setOpenState]);\n\n const toggle = useCallback(() => {\n setOpenState(!isOpen);\n }, [isOpen, setOpenState]);\n\n return { isOpen, open, close, toggle, setOpen };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/useDisclosure/useDisclosure.ts"],"names":["open"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useDisclosure/useDisclosure.ts"],"names":["open"],"mappings":";;;;AA8BO,SAAS,aAAA,CAAc;AAAA,EAC5B,IAAA,EAAM,QAAA;AAAA,EACN,WAAA,GAAc,KAAA;AAAA,EACd;AACF,CAAA,GAAyB,EAAC,EAAwB;AAChD,EAAA,MAAM,CAAC,MAAA,EAAQ,YAAY,CAAA,GAAI,oBAAA,CAAqB;AAAA,IAClD,KAAA,EAAO,QAAA;AAAA,IACP,YAAA,EAAc,WAAA;AAAA,IACd,QAAA,EAAU;AAAA,GACX,CAAA;AAED,EAAA,MAAM,OAAA,GAAU,WAAA;AAAA,IACd,CAACA,KAAAA,KAAkB;AACjB,MAAA,YAAA,CAAaA,KAAI,CAAA;AAAA,IACnB,CAAA;AAAA,IACA,CAAC,YAAY;AAAA,GACf;AAEA,EAAA,MAAM,IAAA,GAAO,YAAY,MAAM;AAC7B,IAAA,YAAA,CAAa,IAAI,CAAA;AAAA,EACnB,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,EAAA,MAAM,KAAA,GAAQ,YAAY,MAAM;AAC9B,IAAA,YAAA,CAAa,KAAK,CAAA;AAAA,EACpB,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,EAAA,MAAM,MAAA,GAAS,YAAY,MAAM;AAC/B,IAAA,YAAA,CAAa,CAAC,MAAM,CAAA;AAAA,EACtB,CAAA,EAAG,CAAC,MAAA,EAAQ,YAAY,CAAC,CAAA;AAEzB,EAAA,OAAO,EAAE,MAAA,EAAQ,IAAA,EAAM,KAAA,EAAO,QAAQ,OAAA,EAAQ;AAChD","file":"useDisclosure.mjs","sourcesContent":["\"use client\";\n\nimport { useCallback } from \"react\";\n\nimport { useControllableState } from \"../useControllableState\";\n\nexport type UseDisclosureParams = {\n /** Controlled open flag; omit for uncontrolled usage with `defaultOpen`. */\n open?: boolean;\n /** Initial open state when uncontrolled. */\n defaultOpen?: boolean;\n /** Fired whenever open state changes from user-driven `setOpen` / `open` / `close` / `toggle`. */\n onOpenChange?: (open: boolean) => void;\n};\n\nexport type UseDisclosureResult = {\n isOpen: boolean;\n open: () => void;\n close: () => void;\n toggle: () => void;\n setOpen: (open: boolean) => void;\n};\n\n/**\n * Boolean open/close state for overlays (dialogs, menus, collapsible regions) with optional control from the parent.\n * Built on {@link useControllableState}; semantics match common headless UI libraries.\n *\n * @param params - Optional `open`, `defaultOpen`, and `onOpenChange`.\n * @returns Helpers `open`, `close`, `toggle`, `setOpen`, and the current `isOpen` flag.\n */\nexport function useDisclosure({\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n}: UseDisclosureParams = {}): UseDisclosureResult {\n const [isOpen, setOpenState] = useControllableState({\n value: openProp,\n defaultValue: defaultOpen,\n onChange: onOpenChange,\n });\n\n const setOpen = useCallback(\n (open: boolean) => {\n setOpenState(open);\n },\n [setOpenState],\n );\n\n const open = useCallback(() => {\n setOpenState(true);\n }, [setOpenState]);\n\n const close = useCallback(() => {\n setOpenState(false);\n }, [setOpenState]);\n\n const toggle = useCallback(() => {\n setOpenState(!isOpen);\n }, [isOpen, setOpenState]);\n\n return { isOpen, open, close, toggle, setOpen };\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDynamicStepper/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAClB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { UseDynamicStepperParams, UseDynamicStepperResult } from "../../ui/dynamic-stepper/types";
|
|
2
|
+
/**
|
|
3
|
+
* Headless multi-step index with prev/next navigation.
|
|
4
|
+
*
|
|
5
|
+
* @param params.stepCount - Number of steps (0-based count semantics via indices).
|
|
6
|
+
* @returns Active step, setter, navigation helpers, and boundary flags.
|
|
7
|
+
*/
|
|
8
|
+
export declare function useDynamicStepper({ stepCount, activeStep: activeStepProp, defaultActiveStep, onActiveStepChange, onPrevious, onNext, }: UseDynamicStepperParams): UseDynamicStepperResult;
|
|
9
|
+
//# sourceMappingURL=useDynamicStepper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDynamicStepper.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDynamicStepper/useDynamicStepper.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,gCAAgC,CAAC;AASxC;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,EACT,UAAU,EAAE,cAAc,EAC1B,iBAAqB,EACrB,kBAAkB,EAClB,UAAU,EACV,MAAM,GACP,EAAE,uBAAuB,GAAG,uBAAuB,CA2DnD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var chunkMEJMX4QI_js = require('../chunk-MEJMX4QI.js');
|
|
5
|
+
require('../chunk-HPN7H5ZM.js');
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
Object.defineProperty(exports, "useDynamicStepper", {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function () { return chunkMEJMX4QI_js.useDynamicStepper; }
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=useDynamicStepper.js.map
|
|
14
|
+
//# sourceMappingURL=useDynamicStepper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"useDynamicStepper.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"useDynamicStepper.mjs"}
|
package/dist/ui/buttons.js
CHANGED
|
@@ -1,67 +1,19 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
+
var chunkKXUG4WVW_js = require('../chunk-KXUG4WVW.js');
|
|
4
5
|
var chunkOB4KJZK2_js = require('../chunk-OB4KJZK2.js');
|
|
5
|
-
|
|
6
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
require('../chunk-ZS5756ZC.js');
|
|
7
7
|
|
|
8
|
-
var ButtonBase = (props) => {
|
|
9
|
-
if (props.as === "link") {
|
|
10
|
-
const {
|
|
11
|
-
className: className2,
|
|
12
|
-
appearance: appearance2,
|
|
13
|
-
size: size2,
|
|
14
|
-
children: children2,
|
|
15
|
-
ref: ref2,
|
|
16
|
-
href,
|
|
17
|
-
target,
|
|
18
|
-
...rest2
|
|
19
|
-
} = props;
|
|
20
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
21
|
-
"a",
|
|
22
|
-
{
|
|
23
|
-
ref: ref2,
|
|
24
|
-
href,
|
|
25
|
-
target,
|
|
26
|
-
rel: target === "_blank" ? "noopener noreferrer" : void 0,
|
|
27
|
-
"data-slot": "button",
|
|
28
|
-
className: chunkZS5756ZC_js.cn(chunkOB4KJZK2_js.buttonVariants({ appearance: appearance2, size: size2 }), className2),
|
|
29
|
-
...rest2,
|
|
30
|
-
children: children2
|
|
31
|
-
}
|
|
32
|
-
);
|
|
33
|
-
}
|
|
34
|
-
const {
|
|
35
|
-
className,
|
|
36
|
-
appearance,
|
|
37
|
-
size,
|
|
38
|
-
type = "button",
|
|
39
|
-
children,
|
|
40
|
-
ref,
|
|
41
|
-
...rest
|
|
42
|
-
} = props;
|
|
43
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
44
|
-
"button",
|
|
45
|
-
{
|
|
46
|
-
ref,
|
|
47
|
-
type,
|
|
48
|
-
"data-slot": "button",
|
|
49
|
-
className: chunkZS5756ZC_js.cn(chunkOB4KJZK2_js.buttonVariants({ appearance, size }), className),
|
|
50
|
-
...rest,
|
|
51
|
-
children
|
|
52
|
-
}
|
|
53
|
-
);
|
|
54
|
-
};
|
|
55
|
-
ButtonBase.displayName = "Button";
|
|
56
|
-
var Button = (props) => {
|
|
57
|
-
return /* @__PURE__ */ jsxRuntime.jsx(ButtonBase, { ...props });
|
|
58
|
-
};
|
|
59
|
-
Button.displayName = "Button";
|
|
60
8
|
|
|
9
|
+
|
|
10
|
+
Object.defineProperty(exports, "Button", {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () { return chunkKXUG4WVW_js.Button; }
|
|
13
|
+
});
|
|
61
14
|
Object.defineProperty(exports, "buttonVariants", {
|
|
62
15
|
enumerable: true,
|
|
63
16
|
get: function () { return chunkOB4KJZK2_js.buttonVariants; }
|
|
64
17
|
});
|
|
65
|
-
exports.Button = Button;
|
|
66
18
|
//# sourceMappingURL=buttons.js.map
|
|
67
19
|
//# sourceMappingURL=buttons.js.map
|
package/dist/ui/buttons.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"buttons.js"}
|
package/dist/ui/buttons.mjs
CHANGED
|
@@ -1,62 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
|
|
2
|
+
export { Button } from '../chunk-7OHC4ERB.mjs';
|
|
3
3
|
export { buttonVariants } from '../chunk-5TV7EL3H.mjs';
|
|
4
|
-
import
|
|
5
|
-
import { jsx } from 'react/jsx-runtime';
|
|
6
|
-
|
|
7
|
-
var ButtonBase = (props) => {
|
|
8
|
-
if (props.as === "link") {
|
|
9
|
-
const {
|
|
10
|
-
className: className2,
|
|
11
|
-
appearance: appearance2,
|
|
12
|
-
size: size2,
|
|
13
|
-
children: children2,
|
|
14
|
-
ref: ref2,
|
|
15
|
-
href,
|
|
16
|
-
target,
|
|
17
|
-
...rest2
|
|
18
|
-
} = props;
|
|
19
|
-
return /* @__PURE__ */ jsx(
|
|
20
|
-
"a",
|
|
21
|
-
{
|
|
22
|
-
ref: ref2,
|
|
23
|
-
href,
|
|
24
|
-
target,
|
|
25
|
-
rel: target === "_blank" ? "noopener noreferrer" : void 0,
|
|
26
|
-
"data-slot": "button",
|
|
27
|
-
className: cn(buttonVariants({ appearance: appearance2, size: size2 }), className2),
|
|
28
|
-
...rest2,
|
|
29
|
-
children: children2
|
|
30
|
-
}
|
|
31
|
-
);
|
|
32
|
-
}
|
|
33
|
-
const {
|
|
34
|
-
className,
|
|
35
|
-
appearance,
|
|
36
|
-
size,
|
|
37
|
-
type = "button",
|
|
38
|
-
children,
|
|
39
|
-
ref,
|
|
40
|
-
...rest
|
|
41
|
-
} = props;
|
|
42
|
-
return /* @__PURE__ */ jsx(
|
|
43
|
-
"button",
|
|
44
|
-
{
|
|
45
|
-
ref,
|
|
46
|
-
type,
|
|
47
|
-
"data-slot": "button",
|
|
48
|
-
className: cn(buttonVariants({ appearance, size }), className),
|
|
49
|
-
...rest,
|
|
50
|
-
children
|
|
51
|
-
}
|
|
52
|
-
);
|
|
53
|
-
};
|
|
54
|
-
ButtonBase.displayName = "Button";
|
|
55
|
-
var Button = (props) => {
|
|
56
|
-
return /* @__PURE__ */ jsx(ButtonBase, { ...props });
|
|
57
|
-
};
|
|
58
|
-
Button.displayName = "Button";
|
|
59
|
-
|
|
60
|
-
export { Button };
|
|
4
|
+
import '../chunk-4D54YOL6.mjs';
|
|
61
5
|
//# sourceMappingURL=buttons.mjs.map
|
|
62
6
|
//# sourceMappingURL=buttons.mjs.map
|
package/dist/ui/buttons.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"buttons.mjs"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { DynamicStepperProps } from "./types";
|
|
2
|
+
export declare const DynamicStepper: {
|
|
3
|
+
({ steps, orientation, buttonAppearance, buttonSize, indicatorSize, indicatorCompleteAppearance, indicatorCurrentAppearance, indicatorUpcomingAppearance, activeStep: activeStepProp, defaultActiveStep, onActiveStepChange, onPrevious, onNext, prevLabel, nextLabel, className, ref, ...rest }: DynamicStepperProps): import("react/jsx-runtime").JSX.Element | null;
|
|
4
|
+
displayName: string;
|
|
5
|
+
};
|
|
6
|
+
//# sourceMappingURL=dynamic-stepper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic-stepper.d.ts","sourceRoot":"","sources":["../../../src/ui/dynamic-stepper/dynamic-stepper.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AASnD,eAAO,MAAM,cAAc;sSAmBxB,mBAAmB;;CAsIrB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { DynamicStepper } from "./dynamic-stepper";
|
|
2
|
+
export type { DynamicStepperButtonAppearance, DynamicStepperButtonSize, DynamicStepperIndicatorSize, DynamicStepperIndicatorToneAppearance, DynamicStepperOrientation, DynamicStepperProps, DynamicStepperStep, UseDynamicStepperParams, UseDynamicStepperResult, } from "./types";
|
|
3
|
+
export { dynamicStepperIndicatorToneClass, dynamicStepperIndicatorVariants, dynamicStepperItemVariants, dynamicStepperMapperVariants, dynamicStepperRootVariants, } from "./variants";
|
|
4
|
+
export type { DynamicStepperIndicatorSemanticState, } from "./variants";
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/dynamic-stepper/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EACV,8BAA8B,EAC9B,wBAAwB,EACxB,2BAA2B,EAC3B,qCAAqC,EACrC,yBAAyB,EACzB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,gCAAgC,EAChC,+BAA+B,EAC/B,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,oCAAoC,GACrC,MAAM,YAAY,CAAC"}
|