@seedgrid/fe-components 2026.3.19 → 2026.3.26
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/dist/buttons/SgFloatActionButton.d.ts.map +1 -1
- package/dist/buttons/SgFloatActionButton.js +5 -26
- package/dist/buttons/SgSplitButton.d.ts.map +1 -1
- package/dist/buttons/SgSplitButton.js +3 -1
- package/dist/buttons/fab-helpers.d.ts +6 -0
- package/dist/buttons/fab-helpers.d.ts.map +1 -0
- package/dist/buttons/fab-helpers.js +29 -0
- package/dist/commons/SgAvatar.d.ts.map +1 -1
- package/dist/commons/SgAvatar.js +6 -3
- package/dist/commons/SgBadge.d.ts.map +1 -1
- package/dist/commons/SgBadge.js +5 -2
- package/dist/commons/SgToast.d.ts.map +1 -1
- package/dist/commons/SgToast.js +3 -1
- package/dist/commons/SgToaster.d.ts.map +1 -1
- package/dist/commons/SgToaster.js +3 -1
- package/dist/environment/SgEnvironmentProvider.d.ts.map +1 -1
- package/dist/environment/SgEnvironmentProvider.js +10 -15
- package/dist/environment/persistent-state.d.ts +22 -0
- package/dist/environment/persistent-state.d.ts.map +1 -0
- package/dist/environment/persistent-state.js +33 -0
- package/dist/gadgets/calendar/SgCalendar.d.ts.map +1 -1
- package/dist/gadgets/calendar/SgCalendar.js +5 -23
- package/dist/gadgets/clock/SgClock.d.ts.map +1 -1
- package/dist/gadgets/clock/SgClock.js +12 -10
- package/dist/gadgets/clock/themes/SgClockThemePicker.d.ts +2 -1
- package/dist/gadgets/clock/themes/SgClockThemePicker.d.ts.map +1 -1
- package/dist/gadgets/clock/themes/SgClockThemePicker.js +23 -28
- package/dist/gadgets/clock/themes/search.d.ts +9 -0
- package/dist/gadgets/clock/themes/search.d.ts.map +1 -0
- package/dist/gadgets/clock/themes/search.js +15 -0
- package/dist/gadgets/gauge/SgLinearGauge.d.ts.map +1 -1
- package/dist/gadgets/gauge/SgLinearGauge.js +39 -28
- package/dist/gadgets/gauge/SgRadialGauge.d.ts.map +1 -1
- package/dist/gadgets/gauge/SgRadialGauge.js +44 -37
- package/dist/gadgets/gauge/math.d.ts +90 -0
- package/dist/gadgets/gauge/math.d.ts.map +1 -0
- package/dist/gadgets/gauge/math.js +81 -0
- package/dist/gadgets/qr-code/SgQRCode.d.ts.map +1 -1
- package/dist/gadgets/qr-code/SgQRCode.js +3 -1
- package/dist/i18n/en-US.d.ts.map +1 -1
- package/dist/i18n/en-US.js +97 -1
- package/dist/i18n/es.d.ts.map +1 -1
- package/dist/i18n/es.js +153 -57
- package/dist/i18n/fr.d.ts +3 -0
- package/dist/i18n/fr.d.ts.map +1 -0
- package/dist/i18n/fr.js +206 -0
- package/dist/i18n/index.d.ts +5 -1
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +50 -14
- package/dist/i18n/pt-BR.d.ts.map +1 -1
- package/dist/i18n/pt-BR.js +97 -1
- package/dist/i18n/pt-PT.d.ts.map +1 -1
- package/dist/i18n/pt-PT.js +97 -1
- package/dist/index.d.ts +12 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -2
- package/dist/inputs/SgAutocomplete.d.ts +1 -1
- package/dist/inputs/SgAutocomplete.d.ts.map +1 -1
- package/dist/inputs/SgAutocomplete.js +7 -4
- package/dist/inputs/SgCheckboxGroup.d.ts +2 -6
- package/dist/inputs/SgCheckboxGroup.d.ts.map +1 -1
- package/dist/inputs/SgCheckboxGroup.js +6 -6
- package/dist/inputs/SgCombobox.d.ts.map +1 -1
- package/dist/inputs/SgCombobox.js +11 -2
- package/dist/inputs/SgInputBirthDate.d.ts.map +1 -1
- package/dist/inputs/SgInputBirthDate.js +6 -1
- package/dist/inputs/SgInputCNPJ.d.ts +3 -1
- package/dist/inputs/SgInputCNPJ.d.ts.map +1 -1
- package/dist/inputs/SgInputCNPJ.js +4 -3
- package/dist/inputs/SgInputCPF.d.ts +3 -1
- package/dist/inputs/SgInputCPF.d.ts.map +1 -1
- package/dist/inputs/SgInputCPF.js +8 -3
- package/dist/inputs/SgInputCPFCNPJ.d.ts +3 -1
- package/dist/inputs/SgInputCPFCNPJ.d.ts.map +1 -1
- package/dist/inputs/SgInputCPFCNPJ.js +8 -3
- package/dist/inputs/SgInputCurrency.d.ts +3 -7
- package/dist/inputs/SgInputCurrency.d.ts.map +1 -1
- package/dist/inputs/SgInputCurrency.js +5 -2
- package/dist/inputs/SgInputDate.d.ts.map +1 -1
- package/dist/inputs/SgInputDate.js +6 -1
- package/dist/inputs/SgInputEmail.d.ts.map +1 -1
- package/dist/inputs/SgInputEmail.js +1 -1
- package/dist/inputs/SgInputNumber.d.ts +3 -7
- package/dist/inputs/SgInputNumber.d.ts.map +1 -1
- package/dist/inputs/SgInputNumber.js +5 -2
- package/dist/inputs/SgInputOTP.d.ts +5 -12
- package/dist/inputs/SgInputOTP.d.ts.map +1 -1
- package/dist/inputs/SgInputOTP.js +7 -4
- package/dist/inputs/SgInputPassword.d.ts.map +1 -1
- package/dist/inputs/SgInputPassword.js +1 -1
- package/dist/inputs/SgInputPhone.d.ts +3 -1
- package/dist/inputs/SgInputPhone.d.ts.map +1 -1
- package/dist/inputs/SgInputPhone.js +2 -1
- package/dist/inputs/SgInputPostalCode.d.ts.map +1 -1
- package/dist/inputs/SgInputPostalCode.js +2 -1
- package/dist/inputs/SgInputSelect.d.ts +4 -2
- package/dist/inputs/SgInputSelect.d.ts.map +1 -1
- package/dist/inputs/SgInputSelect.js +38 -3
- package/dist/inputs/SgInputText.d.ts +3 -7
- package/dist/inputs/SgInputText.d.ts.map +1 -1
- package/dist/inputs/SgInputText.js +5 -2
- package/dist/inputs/SgInputTextArea.d.ts +4 -2
- package/dist/inputs/SgInputTextArea.d.ts.map +1 -1
- package/dist/inputs/SgInputTextArea.js +37 -2
- package/dist/inputs/SgOrderList.d.ts +3 -1
- package/dist/inputs/SgOrderList.d.ts.map +1 -1
- package/dist/inputs/SgOrderList.js +19 -3
- package/dist/inputs/SgPickList.d.ts +3 -1
- package/dist/inputs/SgPickList.d.ts.map +1 -1
- package/dist/inputs/SgPickList.js +20 -4
- package/dist/inputs/SgRadioGroup.d.ts +2 -6
- package/dist/inputs/SgRadioGroup.d.ts.map +1 -1
- package/dist/inputs/SgRadioGroup.js +6 -6
- package/dist/inputs/SgRating.d.ts +2 -10
- package/dist/inputs/SgRating.d.ts.map +1 -1
- package/dist/inputs/SgRating.js +6 -3
- package/dist/inputs/SgSlider.d.ts +8 -2
- package/dist/inputs/SgSlider.d.ts.map +1 -1
- package/dist/inputs/SgSlider.js +62 -10
- package/dist/inputs/SgStepperInput.d.ts +8 -2
- package/dist/inputs/SgStepperInput.d.ts.map +1 -1
- package/dist/inputs/SgStepperInput.js +62 -8
- package/dist/inputs/SgTextEditor.d.ts +3 -1
- package/dist/inputs/SgTextEditor.d.ts.map +1 -1
- package/dist/inputs/SgTextEditor.js +24 -11
- package/dist/inputs/SgToggleSwitch.d.ts +3 -7
- package/dist/inputs/SgToggleSwitch.d.ts.map +1 -1
- package/dist/inputs/SgToggleSwitch.js +6 -3
- package/dist/layout/SgBreadcrumb.d.ts.map +1 -1
- package/dist/layout/SgBreadcrumb.js +7 -3
- package/dist/layout/SgCard.d.ts.map +1 -1
- package/dist/layout/SgCard.js +3 -1
- package/dist/layout/SgCarousel.d.ts.map +1 -1
- package/dist/layout/SgCarousel.js +3 -1
- package/dist/layout/SgExpandablePanel.d.ts.map +1 -1
- package/dist/layout/SgExpandablePanel.js +3 -1
- package/dist/layout/SgMenu.d.ts.map +1 -1
- package/dist/layout/SgMenu.js +173 -297
- package/dist/layout/SgPageControl.d.ts.map +1 -1
- package/dist/layout/SgPageControl.js +7 -3
- package/dist/layout/SgToolBar.d.ts.map +1 -1
- package/dist/layout/SgToolBar.js +19 -55
- package/dist/layout/SgTreeView.d.ts.map +1 -1
- package/dist/layout/SgTreeView.js +7 -3
- package/dist/layout/drag-position.d.ts +7 -0
- package/dist/layout/drag-position.d.ts.map +1 -0
- package/dist/layout/drag-position.js +30 -0
- package/dist/layout/menu-logic.d.ts +187 -0
- package/dist/layout/menu-logic.d.ts.map +1 -0
- package/dist/layout/menu-logic.js +349 -0
- package/dist/layout/toolbar-logic.d.ts +26 -0
- package/dist/layout/toolbar-logic.d.ts.map +1 -0
- package/dist/layout/toolbar-logic.js +38 -0
- package/dist/menus/SgDockMenu.d.ts.map +1 -1
- package/dist/menus/SgDockMenu.js +44 -120
- package/dist/menus/dock-menu-logic.d.ts +50 -0
- package/dist/menus/dock-menu-logic.d.ts.map +1 -0
- package/dist/menus/dock-menu-logic.js +113 -0
- package/dist/overlay/SgDialog.d.ts.map +1 -1
- package/dist/overlay/SgDialog.js +4 -2
- package/dist/overlay/SgPopup.d.ts.map +1 -1
- package/dist/overlay/SgPopup.js +4 -1
- package/dist/rhf.d.ts +8 -3
- package/dist/rhf.d.ts.map +1 -1
- package/dist/rhf.js +18 -1
- package/dist/sandbox.cjs +60 -60
- package/dist/wizard/SgWizard.d.ts.map +1 -1
- package/dist/wizard/SgWizard.js +20 -32
- package/dist/wizard/logic.d.ts +9 -0
- package/dist/wizard/logic.d.ts.map +1 -0
- package/dist/wizard/logic.js +20 -0
- package/package.json +78 -76
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SgWizard.d.ts","sourceRoot":"","sources":["../../src/wizard/SgWizard.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SgWizard.d.ts","sourceRoot":"","sources":["../../src/wizard/SgWizard.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B,CAAC;AAEF,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,2CAEpD;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;AAE5D,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B,CAAC;AAiFF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,2CA+H5C"}
|
package/dist/wizard/SgWizard.js
CHANGED
|
@@ -2,17 +2,18 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import React from "react";
|
|
4
4
|
import { t, useComponentsI18n } from "../i18n";
|
|
5
|
+
import { canProceedWizardAction, clampWizardStep } from "./logic";
|
|
5
6
|
export function SgWizardPage(props) {
|
|
6
7
|
return _jsx("div", { className: props.className, style: props.style, children: props.children });
|
|
7
8
|
}
|
|
8
9
|
function CheckIcon({ className }) {
|
|
9
10
|
return (_jsx("svg", { className: className, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: _jsx("path", { d: "M20 6 9 17l-5-5" }) }));
|
|
10
11
|
}
|
|
11
|
-
function StepperBar({ pages, currentStep, mode }) {
|
|
12
|
-
return (_jsx("nav", { "aria-label": "
|
|
12
|
+
function StepperBar({ i18n, pages, currentStep, mode }) {
|
|
13
|
+
return (_jsx("nav", { "aria-label": t(i18n, "components.wizard.progress"), className: "mb-8", children: _jsx("ol", { className: "flex items-center", children: pages.map((page, i) => {
|
|
13
14
|
const isCompleted = i < currentStep;
|
|
14
15
|
const isCurrent = i === currentStep;
|
|
15
|
-
const title = page.props.title ??
|
|
16
|
+
const title = page.props.title ?? t(i18n, "components.wizard.step", { step: i + 1 });
|
|
16
17
|
const icon = page.props.icon;
|
|
17
18
|
const isLast = i === pages.length - 1;
|
|
18
19
|
return (_jsxs("li", { className: `flex items-center ${isLast ? "" : "flex-1"}`, children: [_jsxs("div", { className: "flex flex-col items-center", children: [_jsx("div", { className: `flex items-center justify-center rounded-full border-2 transition-colors duration-200 ${isCompleted
|
|
@@ -26,10 +27,7 @@ export function SgWizard(props) {
|
|
|
26
27
|
const i18n = useComponentsI18n();
|
|
27
28
|
const pages = React.Children.toArray(props.children).filter((child) => React.isValidElement(child) && child.type === SgWizardPage);
|
|
28
29
|
const stepper = props.stepper ?? "none";
|
|
29
|
-
const [step, setStep] = React.useState(() =>
|
|
30
|
-
const idx = props.initialStep ?? 0;
|
|
31
|
-
return Math.min(Math.max(idx, 0), Math.max(pages.length - 1, 0));
|
|
32
|
-
});
|
|
30
|
+
const [step, setStep] = React.useState(() => clampWizardStep(props.initialStep, pages.length));
|
|
33
31
|
const [isFinishing, setIsFinishing] = React.useState(false);
|
|
34
32
|
const [isValidating, setIsValidating] = React.useState(false);
|
|
35
33
|
const pageRef = React.useRef(null);
|
|
@@ -64,19 +62,14 @@ export function SgWizard(props) {
|
|
|
64
62
|
return;
|
|
65
63
|
setIsValidating(true);
|
|
66
64
|
try {
|
|
67
|
-
const
|
|
68
|
-
|
|
65
|
+
const ok = await canProceedWizardAction({
|
|
66
|
+
validateCurrentPage,
|
|
67
|
+
validateStep: props.validateStep,
|
|
68
|
+
beforeAction: props.onBeforeNext,
|
|
69
|
+
step
|
|
70
|
+
});
|
|
71
|
+
if (!ok)
|
|
69
72
|
return;
|
|
70
|
-
if (props.validateStep) {
|
|
71
|
-
const ok = await props.validateStep(step);
|
|
72
|
-
if (!ok)
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
if (props.onBeforeNext) {
|
|
76
|
-
const ok = await props.onBeforeNext(step);
|
|
77
|
-
if (!ok)
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
73
|
setStep((prev) => Math.min(prev + 1, pages.length - 1));
|
|
81
74
|
}
|
|
82
75
|
finally {
|
|
@@ -95,19 +88,14 @@ export function SgWizard(props) {
|
|
|
95
88
|
return;
|
|
96
89
|
setIsValidating(true);
|
|
97
90
|
try {
|
|
98
|
-
const
|
|
99
|
-
|
|
91
|
+
const ok = await canProceedWizardAction({
|
|
92
|
+
validateCurrentPage,
|
|
93
|
+
validateStep: props.validateStep,
|
|
94
|
+
beforeAction: props.onBeforeFinish,
|
|
95
|
+
step
|
|
96
|
+
});
|
|
97
|
+
if (!ok)
|
|
100
98
|
return;
|
|
101
|
-
if (props.validateStep) {
|
|
102
|
-
const ok = await props.validateStep(step);
|
|
103
|
-
if (!ok)
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
if (props.onBeforeFinish) {
|
|
107
|
-
const ok = await props.onBeforeFinish(step);
|
|
108
|
-
if (!ok)
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
99
|
}
|
|
112
100
|
finally {
|
|
113
101
|
setIsValidating(false);
|
|
@@ -120,5 +108,5 @@ export function SgWizard(props) {
|
|
|
120
108
|
setIsFinishing(false);
|
|
121
109
|
}
|
|
122
110
|
};
|
|
123
|
-
return (_jsxs("div", { className: props.className, style: props.style, children: [stepper !== "none" ? (_jsx(StepperBar, { pages: pages, currentStep: step, mode: stepper })) : null, _jsx("div", { ref: pageRef, children: pages[step] }), _jsxs("div", { className: "mt-6 flex flex-wrap items-center justify-between gap-3", children: [_jsx("div", { children: !isFirst ? (_jsx("button", { type: "button", onClick: goPrevious, className: "inline-flex h-10 items-center justify-center rounded-full border border-border px-5 text-sm font-semibold text-foreground/80 transition hover:bg-muted/60", children: labels.previous })) : null }), _jsx("div", { className: "flex items-center gap-3", children: !isLast ? (_jsx("button", { type: "button", onClick: goNext, disabled: isValidating, className: "inline-flex h-10 items-center justify-center rounded-full bg-[hsl(var(--primary))] px-5 text-sm font-semibold text-white shadow-lg shadow-[hsl(var(--primary)/0.35)] transition hover:brightness-95 disabled:cursor-not-allowed disabled:opacity-60", children: labels.next })) : (_jsx("button", { type: "button", onClick: handleFinish, disabled: isFinishing || isValidating, className: "inline-flex h-10 items-center justify-center rounded-full bg-[hsl(var(--primary))] px-5 text-sm font-semibold text-white shadow-lg shadow-[hsl(var(--primary)/0.35)] transition hover:brightness-95 disabled:cursor-not-allowed disabled:opacity-60", children: labels.finish })) })] })] }));
|
|
111
|
+
return (_jsxs("div", { className: props.className, style: props.style, children: [stepper !== "none" ? (_jsx(StepperBar, { pages: pages, currentStep: step, mode: stepper, i18n: i18n })) : null, _jsx("div", { ref: pageRef, children: pages[step] }), _jsxs("div", { className: "mt-6 flex flex-wrap items-center justify-between gap-3", children: [_jsx("div", { children: !isFirst ? (_jsx("button", { type: "button", onClick: goPrevious, className: "inline-flex h-10 items-center justify-center rounded-full border border-border px-5 text-sm font-semibold text-foreground/80 transition hover:bg-muted/60", children: labels.previous })) : null }), _jsx("div", { className: "flex items-center gap-3", children: !isLast ? (_jsx("button", { type: "button", onClick: goNext, disabled: isValidating, className: "inline-flex h-10 items-center justify-center rounded-full bg-[hsl(var(--primary))] px-5 text-sm font-semibold text-white shadow-lg shadow-[hsl(var(--primary)/0.35)] transition hover:brightness-95 disabled:cursor-not-allowed disabled:opacity-60", children: labels.next })) : (_jsx("button", { type: "button", onClick: handleFinish, disabled: isFinishing || isValidating, className: "inline-flex h-10 items-center justify-center rounded-full bg-[hsl(var(--primary))] px-5 text-sm font-semibold text-white shadow-lg shadow-[hsl(var(--primary)/0.35)] transition hover:brightness-95 disabled:cursor-not-allowed disabled:opacity-60", children: labels.finish })) })] })] }));
|
|
124
112
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function clampWizardStep(initialStep: number | undefined, pageCount: number): number;
|
|
2
|
+
export type WizardGuardRunner = {
|
|
3
|
+
validateCurrentPage: () => boolean | Promise<boolean>;
|
|
4
|
+
validateStep?: (index: number) => boolean | Promise<boolean>;
|
|
5
|
+
beforeAction?: (index: number) => boolean | Promise<boolean>;
|
|
6
|
+
step: number;
|
|
7
|
+
};
|
|
8
|
+
export declare function canProceedWizardAction(runner: WizardGuardRunner): Promise<boolean>;
|
|
9
|
+
//# sourceMappingURL=logic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logic.d.ts","sourceRoot":"","sources":["../../src/wizard/logic.ts"],"names":[],"mappings":"AAAA,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAG1F;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,mBAAmB,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CAexF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export function clampWizardStep(initialStep, pageCount) {
|
|
2
|
+
const step = initialStep ?? 0;
|
|
3
|
+
return Math.min(Math.max(step, 0), Math.max(pageCount - 1, 0));
|
|
4
|
+
}
|
|
5
|
+
export async function canProceedWizardAction(runner) {
|
|
6
|
+
const pageValid = await runner.validateCurrentPage();
|
|
7
|
+
if (!pageValid)
|
|
8
|
+
return false;
|
|
9
|
+
if (runner.validateStep) {
|
|
10
|
+
const stepValid = await runner.validateStep(runner.step);
|
|
11
|
+
if (!stepValid)
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
if (runner.beforeAction) {
|
|
15
|
+
const allowed = await runner.beforeAction(runner.step);
|
|
16
|
+
if (!allowed)
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
return true;
|
|
20
|
+
}
|
package/package.json
CHANGED
|
@@ -1,78 +1,80 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
},
|
|
23
|
-
"sideEffects": false,
|
|
24
|
-
"files": [
|
|
25
|
-
"dist"
|
|
26
|
-
],
|
|
27
|
-
"scripts": {
|
|
28
|
-
"clean": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"",
|
|
29
|
-
"build": "pnpm run clean && tsc -p tsconfig.json && pnpm run build:sandbox",
|
|
30
|
-
"build:sandbox": "tsup --config tsup.sandbox.config.ts",
|
|
31
|
-
"dev": "tsc -p tsconfig.json --watch --preserveWatchOutput",
|
|
32
|
-
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
33
|
-
},
|
|
34
|
-
"peerDependencies": {
|
|
35
|
-
"@tiptap/core": "^2.9.1",
|
|
36
|
-
"@tiptap/extension-color": "^2.9.1",
|
|
37
|
-
"@tiptap/extension-font-family": "^2.9.1",
|
|
38
|
-
"@tiptap/extension-highlight": "^2.9.1",
|
|
39
|
-
"@tiptap/extension-image": "^2.9.1",
|
|
40
|
-
"@tiptap/extension-link": "^2.9.1",
|
|
41
|
-
"@tiptap/pm": "^2.9.1",
|
|
42
|
-
"@tiptap/extension-subscript": "^2.9.1",
|
|
43
|
-
"@tiptap/extension-superscript": "^2.9.1",
|
|
44
|
-
"@tiptap/extension-text-align": "^2.9.1",
|
|
45
|
-
"@tiptap/extension-text-style": "^2.9.1",
|
|
46
|
-
"@tiptap/extension-underline": "^2.9.1",
|
|
47
|
-
"@tiptap/react": "^2.9.1",
|
|
48
|
-
"@tiptap/starter-kit": "^2.9.1",
|
|
49
|
-
"lucide-react": "^0.468.0",
|
|
50
|
-
"react": "^18.2.0 || ^19.0.0",
|
|
51
|
-
"react-hook-form": "^7.0.0"
|
|
52
|
-
},
|
|
53
|
-
"devDependencies": {
|
|
54
|
-
"tsup": "^8.4.0",
|
|
55
|
-
"@tiptap/core": "^2.9.1",
|
|
56
|
-
"@tiptap/extension-color": "^2.9.1",
|
|
57
|
-
"@tiptap/extension-font-family": "^2.9.1",
|
|
58
|
-
"@tiptap/extension-highlight": "^2.9.1",
|
|
59
|
-
"@tiptap/extension-image": "^2.9.1",
|
|
60
|
-
"@tiptap/extension-link": "^2.9.1",
|
|
61
|
-
"@tiptap/pm": "^2.9.1",
|
|
62
|
-
"@tiptap/extension-subscript": "^2.9.1",
|
|
63
|
-
"@tiptap/extension-superscript": "^2.9.1",
|
|
64
|
-
"@tiptap/extension-text-align": "^2.9.1",
|
|
65
|
-
"@tiptap/extension-text-style": "^2.9.1",
|
|
66
|
-
"@tiptap/extension-underline": "^2.9.1",
|
|
67
|
-
"@tiptap/react": "^2.9.1",
|
|
68
|
-
"@tiptap/starter-kit": "^2.9.1",
|
|
69
|
-
"lucide-react": "^0.468.0",
|
|
70
|
-
"react": "19.0.0",
|
|
71
|
-
"react-dom": "19.0.0",
|
|
72
|
-
"react-hook-form": "^7.0.0"
|
|
73
|
-
},
|
|
74
|
-
"dependencies": {
|
|
75
|
-
"@pqina/flip": "^1.8.4",
|
|
76
|
-
"qrcode.react": "^4.2.0"
|
|
2
|
+
"name": "@seedgrid/fe-components",
|
|
3
|
+
"version": "2026.3.26",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/SeedGrid/seedgrid-fe-components.git",
|
|
9
|
+
"directory": "packages/seedgrid-fe-components"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://github.com/SeedGrid/seedgrid-fe-components/tree/main/packages/seedgrid-fe-components",
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/SeedGrid/seedgrid-fe-components/issues"
|
|
14
|
+
},
|
|
15
|
+
"main": "dist/index.js",
|
|
16
|
+
"types": "dist/index.d.ts",
|
|
17
|
+
"exports": {
|
|
18
|
+
".": {
|
|
19
|
+
"types": "./dist/index.d.ts",
|
|
20
|
+
"default": "./dist/index.js"
|
|
77
21
|
}
|
|
78
|
-
}
|
|
22
|
+
},
|
|
23
|
+
"sideEffects": false,
|
|
24
|
+
"files": [
|
|
25
|
+
"dist"
|
|
26
|
+
],
|
|
27
|
+
"peerDependencies": {
|
|
28
|
+
"@tiptap/core": "^2.9.1",
|
|
29
|
+
"@tiptap/extension-color": "^2.9.1",
|
|
30
|
+
"@tiptap/extension-font-family": "^2.9.1",
|
|
31
|
+
"@tiptap/extension-highlight": "^2.9.1",
|
|
32
|
+
"@tiptap/extension-image": "^2.9.1",
|
|
33
|
+
"@tiptap/extension-link": "^2.9.1",
|
|
34
|
+
"@tiptap/extension-subscript": "^2.9.1",
|
|
35
|
+
"@tiptap/extension-superscript": "^2.9.1",
|
|
36
|
+
"@tiptap/extension-text-align": "^2.9.1",
|
|
37
|
+
"@tiptap/extension-text-style": "^2.9.1",
|
|
38
|
+
"@tiptap/extension-underline": "^2.9.1",
|
|
39
|
+
"@tiptap/pm": "^2.9.1",
|
|
40
|
+
"@tiptap/react": "^2.9.1",
|
|
41
|
+
"@tiptap/starter-kit": "^2.9.1",
|
|
42
|
+
"lucide-react": "^0.468.0",
|
|
43
|
+
"react": "^18.2.0 || ^19.0.0",
|
|
44
|
+
"react-hook-form": "^7.0.0"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@tiptap/core": "^2.9.1",
|
|
48
|
+
"@tiptap/extension-color": "^2.9.1",
|
|
49
|
+
"@tiptap/extension-font-family": "^2.9.1",
|
|
50
|
+
"@tiptap/extension-highlight": "^2.9.1",
|
|
51
|
+
"@tiptap/extension-image": "^2.9.1",
|
|
52
|
+
"@tiptap/extension-link": "^2.9.1",
|
|
53
|
+
"@tiptap/extension-subscript": "^2.9.1",
|
|
54
|
+
"@tiptap/extension-superscript": "^2.9.1",
|
|
55
|
+
"@tiptap/extension-text-align": "^2.9.1",
|
|
56
|
+
"@tiptap/extension-text-style": "^2.9.1",
|
|
57
|
+
"@tiptap/extension-underline": "^2.9.1",
|
|
58
|
+
"@tiptap/pm": "^2.9.1",
|
|
59
|
+
"@tiptap/react": "^2.9.1",
|
|
60
|
+
"@tiptap/starter-kit": "^2.9.1",
|
|
61
|
+
"jsdom": "^29.0.1",
|
|
62
|
+
"lucide-react": "^0.468.0",
|
|
63
|
+
"react": "19.0.0",
|
|
64
|
+
"react-dom": "19.0.0",
|
|
65
|
+
"react-hook-form": "^7.0.0",
|
|
66
|
+
"tsup": "^8.4.0"
|
|
67
|
+
},
|
|
68
|
+
"dependencies": {
|
|
69
|
+
"@pqina/flip": "^1.8.4",
|
|
70
|
+
"qrcode.react": "^4.2.0"
|
|
71
|
+
},
|
|
72
|
+
"scripts": {
|
|
73
|
+
"clean": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"",
|
|
74
|
+
"build": "pnpm run clean && tsc -p tsconfig.json && pnpm run build:sandbox",
|
|
75
|
+
"build:sandbox": "tsup --config tsup.sandbox.config.ts",
|
|
76
|
+
"dev": "tsc -p tsconfig.json --watch --preserveWatchOutput",
|
|
77
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
78
|
+
"test": "pnpm run build && node --test tests/i18n.test.mjs tests/rhf.test.mjs tests/rhf-components-contract.test.mjs tests/i18n-components-contract.test.mjs tests/providers-hooks.test.mjs tests/providers-hooks-dom.test.mjs tests/commons.test.mjs tests/overlay.test.mjs tests/overlay-dom.test.mjs tests/buttons-menus.test.mjs tests/buttons-menus-dom.test.mjs tests/menu-logic.test.mjs tests/inputs-i18n.test.mjs tests/gadgets.test.mjs tests/gadgets-dom.test.mjs tests/gauge-math.test.mjs tests/clock-theme-picker.test.mjs tests/wizard.test.mjs tests/wizard-logic.test.mjs tests/utils.test.mjs"
|
|
79
|
+
}
|
|
80
|
+
}
|