@pagamio/frontend-commons-lib 0.8.287 → 0.8.288
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/lib/components/ecommerce/BundleCard.d.ts +11 -0
- package/lib/components/ecommerce/BundleCard.js +40 -0
- package/lib/components/ecommerce/CartItemCard.d.ts +11 -0
- package/lib/components/ecommerce/CartItemCard.js +11 -0
- package/lib/components/ecommerce/CheckoutStepper.d.ts +10 -0
- package/lib/components/ecommerce/CheckoutStepper.js +12 -0
- package/lib/components/ecommerce/FloatingCartButton.d.ts +8 -0
- package/lib/components/ecommerce/FloatingCartButton.js +8 -0
- package/lib/components/ecommerce/OrderSummary.d.ts +23 -0
- package/lib/components/ecommerce/OrderSummary.js +9 -0
- package/lib/components/ecommerce/ProductCard.d.ts +21 -0
- package/lib/components/ecommerce/ProductCard.js +62 -0
- package/lib/components/ecommerce/ProductCardSkeleton.d.ts +1 -0
- package/lib/components/ecommerce/ProductCardSkeleton.js +5 -0
- package/lib/components/ecommerce/ProductGrid.d.ts +17 -0
- package/lib/components/ecommerce/ProductGrid.js +14 -0
- package/lib/components/ecommerce/index.d.ts +16 -0
- package/lib/components/ecommerce/index.js +9 -0
- package/lib/components/ecommerce/types.d.ts +113 -0
- package/lib/components/ecommerce/types.js +6 -0
- package/lib/components/index.d.ts +1 -0
- package/lib/components/index.js +1 -0
- package/lib/components/layout/Navbar.d.ts +18 -0
- package/lib/components/layout/Navbar.js +3 -3
- package/lib/components/layout/NavbarActionsDropdown.d.ts +11 -0
- package/lib/components/layout/NavbarActionsDropdown.js +12 -0
- package/lib/components/layout/index.d.ts +1 -0
- package/lib/components/layout/index.js +1 -0
- package/lib/components/sidebar-v2/NavbarV2.js +4 -4
- package/lib/components/ui/AnimatedBackground.d.ts +8 -0
- package/lib/components/ui/AnimatedBackground.js +15 -0
- package/lib/components/ui/Badge.d.ts +7 -0
- package/lib/components/ui/Badge.js +13 -0
- package/lib/components/ui/BarcodeImageDisplay.d.ts +11 -0
- package/lib/components/ui/BarcodeImageDisplay.js +47 -0
- package/lib/components/ui/CardInputForm.d.ts +16 -0
- package/lib/components/ui/CardInputForm.js +112 -0
- package/lib/components/ui/CartDrawer.d.ts +13 -0
- package/lib/components/ui/CartDrawer.js +6 -0
- package/lib/components/ui/Command.d.ts +2 -2
- package/lib/components/ui/CustomAttributeBuilder.d.ts +12 -0
- package/lib/components/ui/CustomAttributeBuilder.js +28 -0
- package/lib/components/ui/InlineLoginForm.d.ts +10 -0
- package/lib/components/ui/InlineLoginForm.js +33 -0
- package/lib/components/ui/InlineRegisterForm.d.ts +20 -0
- package/lib/components/ui/InlineRegisterForm.js +49 -0
- package/lib/components/ui/ProgressIndicatorButton.d.ts +19 -0
- package/lib/components/ui/ProgressIndicatorButton.js +19 -0
- package/lib/components/ui/RadioPillGroup.d.ts +12 -0
- package/lib/components/ui/RadioPillGroup.js +16 -0
- package/lib/components/ui/Sheet.d.ts +1 -1
- package/lib/components/ui/SidebarHeader.d.ts +9 -0
- package/lib/components/ui/SidebarHeader.js +21 -0
- package/lib/components/ui/StatCard.d.ts +2 -2
- package/lib/components/ui/StepIndicator.d.ts +7 -0
- package/lib/components/ui/StepIndicator.js +5 -0
- package/lib/components/ui/StepProgress.d.ts +13 -0
- package/lib/components/ui/StepProgress.js +18 -0
- package/lib/components/ui/TierConfigBuilder.d.ts +13 -0
- package/lib/components/ui/TierConfigBuilder.js +131 -0
- package/lib/components/ui/index.d.ts +28 -0
- package/lib/components/ui/index.js +27 -0
- package/lib/helpers/validations.d.ts +6 -6
- package/lib/styles.css +475 -0
- package/package.json +1 -1
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '../../helpers/utils';
|
|
3
|
+
import { useSidebar } from '../sidebar-v2';
|
|
4
|
+
import Loader from './Loader';
|
|
5
|
+
const colorMap = {
|
|
6
|
+
warning: { bg: 'bg-warning/15', bgExpanded: 'bg-warning/10', text: 'text-warning' },
|
|
7
|
+
success: { bg: 'bg-success/15', bgExpanded: 'bg-success/10', text: 'text-success' },
|
|
8
|
+
primary: { bg: 'bg-primary/15', bgExpanded: 'bg-primary/10', text: 'text-primary' },
|
|
9
|
+
destructive: { bg: 'bg-destructive/15', bgExpanded: 'bg-destructive/10', text: 'text-destructive' },
|
|
10
|
+
};
|
|
11
|
+
export function SidebarPortalBadge({ icon: Icon, label, color = 'primary', isLoading = false, }) {
|
|
12
|
+
const { open } = useSidebar();
|
|
13
|
+
const colors = colorMap[color];
|
|
14
|
+
if (isLoading) {
|
|
15
|
+
return (_jsx("div", { className: "flex items-center justify-center p-4", children: _jsx(Loader, { size: "md" }) }));
|
|
16
|
+
}
|
|
17
|
+
if (!open) {
|
|
18
|
+
return (_jsx("div", { className: "flex items-center justify-center p-2", children: _jsx("div", { className: cn('rounded-md p-2', colors.bg), children: _jsx(Icon, { className: cn('h-5 w-5', colors.text) }) }) }));
|
|
19
|
+
}
|
|
20
|
+
return (_jsx("div", { className: "p-2", children: _jsx("div", { className: cn('rounded-md border px-3 py-2', colors.bgExpanded), children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Icon, { className: cn('h-4 w-4', colors.text) }), _jsx("span", { className: cn('text-sm font-semibold', colors.text), children: label })] }) }) }));
|
|
21
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { type VariantProps } from 'class-variance-authority';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
declare const statCardVariants: (props?: ({
|
|
4
|
-
variant?: "
|
|
4
|
+
variant?: "green" | "orange" | "teal" | "dark" | "light" | "primary" | "light-orange" | "light-teal" | "light-green" | null | undefined;
|
|
5
5
|
size?: "sm" | "md" | "lg" | null | undefined;
|
|
6
6
|
} & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
|
|
7
7
|
declare const iconContainerVariants: (props?: ({
|
|
8
|
-
variant?: "
|
|
8
|
+
variant?: "green" | "orange" | "teal" | "dark" | "light" | "primary" | "light-orange" | "light-teal" | "light-green" | null | undefined;
|
|
9
9
|
size?: "sm" | "md" | "lg" | null | undefined;
|
|
10
10
|
} & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
|
|
11
11
|
declare const changeIndicatorVariants: (props?: ({
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '../../helpers/utils';
|
|
3
|
+
export function StepIndicator({ stepNumber, title, className }) {
|
|
4
|
+
return (_jsxs("div", { className: cn('flex items-center gap-2', className), children: [_jsx("div", { className: "flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-primary text-xs font-bold text-primary-foreground", children: stepNumber }), _jsx("h3", { className: "text-sm font-semibold text-foreground", children: title })] }));
|
|
5
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface StepProgressItem {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
icon: React.ComponentType<{
|
|
5
|
+
className?: string;
|
|
6
|
+
}>;
|
|
7
|
+
}
|
|
8
|
+
export interface StepProgressProps {
|
|
9
|
+
steps: StepProgressItem[];
|
|
10
|
+
currentStepIndex: number;
|
|
11
|
+
className?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function StepProgress({ steps, currentStepIndex, className }: StepProgressProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { HiCheck } from 'react-icons/hi';
|
|
3
|
+
import { Fragment } from 'react';
|
|
4
|
+
import { cn } from '../../helpers/utils';
|
|
5
|
+
export function StepProgress({ steps, currentStepIndex, className }) {
|
|
6
|
+
return (_jsx("nav", { "aria-label": "Progress", className: cn('mx-auto w-full max-w-lg px-6 py-4', className), children: _jsx("ol", { role: "list", className: "flex w-full items-start", children: steps.map((step, stepIdx) => {
|
|
7
|
+
const status = stepIdx < currentStepIndex ? 'complete' : stepIdx === currentStepIndex ? 'current' : 'upcoming';
|
|
8
|
+
return (_jsxs(Fragment, { children: [_jsxs("li", { className: "flex flex-col items-center gap-1.5", children: [_jsx("div", { className: cn('flex h-10 w-10 items-center justify-center rounded-full transition-all', status === 'complete'
|
|
9
|
+
? 'bg-primary'
|
|
10
|
+
: status === 'current'
|
|
11
|
+
? 'border-2 border-primary/30 bg-primary/10 ring-4 ring-primary/20'
|
|
12
|
+
: 'bg-muted'), children: status === 'complete' ? (_jsx(HiCheck, { className: "h-5 w-5 text-white", "aria-hidden": "true" })) : (_jsx(step.icon, { className: cn('h-5 w-5', status === 'current' ? 'text-primary' : 'text-muted-foreground'), "aria-hidden": "true" })) }), _jsx("span", { className: cn('whitespace-nowrap text-xs font-medium transition-colors', status === 'current'
|
|
13
|
+
? 'text-primary'
|
|
14
|
+
: status === 'complete'
|
|
15
|
+
? 'text-foreground'
|
|
16
|
+
: 'text-muted-foreground'), children: step.name })] }), stepIdx !== steps.length - 1 && (_jsx("div", { className: "mt-5 flex flex-1 items-center px-2", children: _jsx("div", { className: cn('h-0.5 w-full rounded-full transition-all', status === 'complete' ? 'bg-primary' : 'bg-muted') }) }))] }, step.id));
|
|
17
|
+
}) }) }));
|
|
18
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface TierLevel {
|
|
2
|
+
name: string;
|
|
3
|
+
threshold: number;
|
|
4
|
+
multiplier: number;
|
|
5
|
+
benefits: string[];
|
|
6
|
+
}
|
|
7
|
+
export type TierConfig = Omit<TierLevel, 'name'>;
|
|
8
|
+
interface TierConfigBuilderProps {
|
|
9
|
+
value: Record<string, TierConfig> | null;
|
|
10
|
+
onChange: (config: Record<string, TierConfig>) => void;
|
|
11
|
+
}
|
|
12
|
+
export default function TierConfigBuilder({ value, onChange }: TierConfigBuilderProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { HiPlus, HiTrash } from 'react-icons/hi';
|
|
3
|
+
import { useRef, useState } from 'react';
|
|
4
|
+
import Button from './Button';
|
|
5
|
+
import { Card } from './Card';
|
|
6
|
+
import Input from './Input';
|
|
7
|
+
const DEFAULT_TIERS = [
|
|
8
|
+
{
|
|
9
|
+
name: 'BRONZE',
|
|
10
|
+
threshold: 0,
|
|
11
|
+
multiplier: 1,
|
|
12
|
+
benefits: ['Birthday discount', 'Email updates'],
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
name: 'SILVER',
|
|
16
|
+
threshold: 5000,
|
|
17
|
+
multiplier: 1.25,
|
|
18
|
+
benefits: ['Bronze benefits', 'Early sale access', 'Free shipping on orders over R500'],
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
name: 'GOLD',
|
|
22
|
+
threshold: 15000,
|
|
23
|
+
multiplier: 1.5,
|
|
24
|
+
benefits: ['Silver benefits', 'Priority customer support', 'Exclusive member events'],
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'PLATINUM',
|
|
28
|
+
threshold: 50000,
|
|
29
|
+
multiplier: 2,
|
|
30
|
+
benefits: ['Gold benefits', 'Personal account manager', 'VIP lounge access'],
|
|
31
|
+
},
|
|
32
|
+
];
|
|
33
|
+
export default function TierConfigBuilder({ value, onChange }) {
|
|
34
|
+
// Ref to scroll to the last tier card after adding a new one
|
|
35
|
+
const lastTierRef = useRef(null);
|
|
36
|
+
const [isAdding, setIsAdding] = useState(false);
|
|
37
|
+
// Convert value object to array for easier manipulation
|
|
38
|
+
const [tiers, setTiers] = useState(() => {
|
|
39
|
+
if (!value || Object.keys(value).length === 0) {
|
|
40
|
+
return DEFAULT_TIERS;
|
|
41
|
+
}
|
|
42
|
+
return Object.entries(value).map(([name, config]) => ({
|
|
43
|
+
name,
|
|
44
|
+
...config,
|
|
45
|
+
}));
|
|
46
|
+
});
|
|
47
|
+
const handleTierChange = (index, field, val) => {
|
|
48
|
+
const updated = [...tiers];
|
|
49
|
+
if (field === 'benefits') {
|
|
50
|
+
updated[index][field] = val;
|
|
51
|
+
}
|
|
52
|
+
else if (field === 'threshold' || field === 'multiplier') {
|
|
53
|
+
// Allow empty string for editing, will be converted to 0 on blur
|
|
54
|
+
updated[index] = { ...updated[index], [field]: val === '' ? 0 : val };
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
updated[index] = { ...updated[index], [field]: val };
|
|
58
|
+
}
|
|
59
|
+
setTiers(updated);
|
|
60
|
+
// Convert back to object format for parent
|
|
61
|
+
const configObject = updated.reduce((acc, tier) => {
|
|
62
|
+
const { name, ...rest } = tier;
|
|
63
|
+
acc[name] = rest;
|
|
64
|
+
return acc;
|
|
65
|
+
}, {});
|
|
66
|
+
onChange(configObject);
|
|
67
|
+
};
|
|
68
|
+
const handleAddTier = () => {
|
|
69
|
+
setIsAdding(true);
|
|
70
|
+
const newTier = {
|
|
71
|
+
name: `TIER_${tiers.length + 1}`,
|
|
72
|
+
threshold: 0,
|
|
73
|
+
multiplier: 1,
|
|
74
|
+
benefits: [],
|
|
75
|
+
};
|
|
76
|
+
const updated = [...tiers, newTier];
|
|
77
|
+
setTiers(updated);
|
|
78
|
+
// Scroll to the new tier after a brief delay to allow rendering
|
|
79
|
+
setTimeout(() => {
|
|
80
|
+
lastTierRef.current?.scrollIntoView({
|
|
81
|
+
behavior: 'smooth',
|
|
82
|
+
block: 'nearest',
|
|
83
|
+
});
|
|
84
|
+
setIsAdding(false);
|
|
85
|
+
}, 100);
|
|
86
|
+
};
|
|
87
|
+
const handleRemoveTier = (index) => {
|
|
88
|
+
const updated = tiers.filter((_, i) => i !== index);
|
|
89
|
+
setTiers(updated);
|
|
90
|
+
const configObject = updated.reduce((acc, tier) => {
|
|
91
|
+
const { name, ...rest } = tier;
|
|
92
|
+
acc[name] = rest;
|
|
93
|
+
return acc;
|
|
94
|
+
}, {});
|
|
95
|
+
onChange(configObject);
|
|
96
|
+
};
|
|
97
|
+
const handleBenefitChange = (tierIndex, benefitIndex, value) => {
|
|
98
|
+
const updated = [...tiers];
|
|
99
|
+
updated[tierIndex].benefits[benefitIndex] = value;
|
|
100
|
+
setTiers(updated);
|
|
101
|
+
const configObject = updated.reduce((acc, tier) => {
|
|
102
|
+
const { name, ...rest } = tier;
|
|
103
|
+
acc[name] = rest;
|
|
104
|
+
return acc;
|
|
105
|
+
}, {});
|
|
106
|
+
onChange(configObject);
|
|
107
|
+
};
|
|
108
|
+
const handleAddBenefit = (tierIndex) => {
|
|
109
|
+
const updated = [...tiers];
|
|
110
|
+
updated[tierIndex].benefits.push('');
|
|
111
|
+
setTiers(updated);
|
|
112
|
+
};
|
|
113
|
+
const handleRemoveBenefit = (tierIndex, benefitIndex) => {
|
|
114
|
+
const updated = [...tiers];
|
|
115
|
+
updated[tierIndex].benefits = updated[tierIndex].benefits.filter((_, i) => i !== benefitIndex);
|
|
116
|
+
setTiers(updated);
|
|
117
|
+
const configObject = updated.reduce((acc, tier) => {
|
|
118
|
+
const { name, ...rest } = tier;
|
|
119
|
+
acc[name] = rest;
|
|
120
|
+
return acc;
|
|
121
|
+
}, {});
|
|
122
|
+
onChange(configObject);
|
|
123
|
+
};
|
|
124
|
+
return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { children: [_jsx("h3", { className: "text-sm font-medium text-foreground", children: "Customer Tiers" }), _jsx("p", { className: "text-xs text-muted-foreground", children: "Define tier levels based on lifetime spending" })] }), _jsxs(Button, { onClick: handleAddTier, color: "light", size: "md", disabled: isAdding, children: [_jsx(HiPlus, { className: "mr-1 h-4 w-4" }), isAdding ? 'Adding...' : 'Add Tier'] })] }), _jsx("div", { className: "space-y-3", children: tiers.map((tier, tierIndex) => (_jsx(Card, { ref: tierIndex === tiers.length - 1 ? lastTierRef : null, children: _jsxs("div", { className: "space-y-3 p-4", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx(Input, { value: tier.name, onChange: (e) => handleTierChange(tierIndex, 'name', e.target.value.toUpperCase()), placeholder: "TIER NAME", className: "w-40 font-medium uppercase" }), tiers.length > 1 && (_jsx(Button, { variant: "ghost", size: "icon", onClick: () => handleRemoveTier(tierIndex), className: "text-destructive hover:text-destructive", type: "button", children: _jsx(HiTrash, { className: "h-4 w-4" }) }))] }), _jsxs("div", { className: "grid grid-cols-2 gap-3", children: [_jsxs("div", { children: [_jsx("label", { className: "mb-1 block text-xs font-medium text-foreground", children: "Minimum Spending Threshold" }), _jsx(Input, { type: "number", value: tier.threshold === 0 ? '' : tier.threshold.toString(), onChange: (e) => {
|
|
125
|
+
const value = e.target.value;
|
|
126
|
+
handleTierChange(tierIndex, 'threshold', value === '' ? 0 : Number(value));
|
|
127
|
+
}, placeholder: "0", min: "0" })] }), _jsxs("div", { children: [_jsx("label", { className: "mb-1 block text-xs font-medium text-foreground", children: "Points Multiplier" }), _jsx(Input, { type: "number", step: "0.1", value: tier.multiplier === 0 ? '' : tier.multiplier.toString(), onChange: (e) => {
|
|
128
|
+
const value = e.target.value;
|
|
129
|
+
handleTierChange(tierIndex, 'multiplier', value === '' ? 0 : Number(value));
|
|
130
|
+
}, placeholder: "1.0", min: "0.1" })] })] }), _jsxs("div", { children: [_jsxs("div", { className: "mb-2 flex items-center justify-between", children: [_jsx("label", { className: "text-xs font-medium text-foreground", children: "Benefits" }), _jsxs(Button, { onClick: () => handleAddBenefit(tierIndex), color: "light", size: "sm", type: "button", children: [_jsx(HiPlus, { className: "mr-1 h-3 w-3" }), "Add Benefit"] })] }), _jsxs("div", { className: "space-y-2", children: [tier.benefits.map((benefit, benefitIndex) => (_jsxs("div", { className: "flex gap-2", children: [_jsx(Input, { value: benefit, onChange: (e) => handleBenefitChange(tierIndex, benefitIndex, e.target.value), placeholder: "Enter benefit description", className: "flex-1" }), _jsx(Button, { variant: "ghost", size: "icon", onClick: () => handleRemoveBenefit(tierIndex, benefitIndex), className: "text-muted-foreground hover:text-destructive", type: "button", children: _jsx(HiTrash, { className: "h-4 w-4" }) })] }, benefitIndex))), tier.benefits.length === 0 && (_jsx("p", { className: "text-xs italic text-muted-foreground", children: "No benefits defined" }))] })] })] }) }, tier.name))) })] }));
|
|
131
|
+
}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
export { AnimatedBackground, default as AnimatedBackgroundDefault } from './AnimatedBackground';
|
|
2
|
+
export type { AnimatedBackgroundProps } from './AnimatedBackground';
|
|
3
|
+
export { CartDrawer } from './CartDrawer';
|
|
4
|
+
export type { CartDrawerProps } from './CartDrawer';
|
|
1
5
|
export * from './Avatar';
|
|
2
6
|
export * from './Command';
|
|
3
7
|
export * from './Dialog';
|
|
@@ -59,3 +63,27 @@ export type { NotificationModalProps } from './NotificationModal';
|
|
|
59
63
|
export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } from './Tooltip';
|
|
60
64
|
export { default as TimerBadge } from './TimerBadge';
|
|
61
65
|
export type { TimerBadgeProps } from './TimerBadge';
|
|
66
|
+
export { Badge, default as BadgeDefault } from './Badge';
|
|
67
|
+
export type { BadgeProps } from './Badge';
|
|
68
|
+
export { RadioPillGroup } from './RadioPillGroup';
|
|
69
|
+
export type { RadioPillGroupProps, RadioPillOption } from './RadioPillGroup';
|
|
70
|
+
export { StepIndicator } from './StepIndicator';
|
|
71
|
+
export type { StepIndicatorProps } from './StepIndicator';
|
|
72
|
+
export { default as BarcodeImageDisplay } from './BarcodeImageDisplay';
|
|
73
|
+
export type { BarcodeImageDisplayProps } from './BarcodeImageDisplay';
|
|
74
|
+
export { default as CustomAttributeBuilder } from './CustomAttributeBuilder';
|
|
75
|
+
export type { CustomAttributeBuilderProps, CustomAttribute } from './CustomAttributeBuilder';
|
|
76
|
+
export { default as TierConfigBuilder } from './TierConfigBuilder';
|
|
77
|
+
export type { TierLevel, TierConfig } from './TierConfigBuilder';
|
|
78
|
+
export { InlineLoginForm } from './InlineLoginForm';
|
|
79
|
+
export type { InlineLoginFormProps } from './InlineLoginForm';
|
|
80
|
+
export { InlineRegisterForm } from './InlineRegisterForm';
|
|
81
|
+
export type { InlineRegisterFormProps, RegisterFormData, RegisterResult } from './InlineRegisterForm';
|
|
82
|
+
export { StepProgress } from './StepProgress';
|
|
83
|
+
export type { StepProgressProps, StepProgressItem } from './StepProgress';
|
|
84
|
+
export { ProgressIndicatorButton } from './ProgressIndicatorButton';
|
|
85
|
+
export type { ProgressIndicatorButtonProps, ProgressIndicatorItem } from './ProgressIndicatorButton';
|
|
86
|
+
export { SidebarPortalBadge } from './SidebarHeader';
|
|
87
|
+
export type { SidebarPortalBadgeProps } from './SidebarHeader';
|
|
88
|
+
export { default as CardInputForm } from './CardInputForm';
|
|
89
|
+
export type { CardInputFormProps, CardDetails } from './CardInputForm';
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
export { AnimatedBackground, default as AnimatedBackgroundDefault } from './AnimatedBackground';
|
|
2
|
+
// CartDrawer - generic slide-out cart shell
|
|
3
|
+
export { CartDrawer } from './CartDrawer';
|
|
1
4
|
export * from './Avatar';
|
|
2
5
|
export * from './Command';
|
|
3
6
|
export * from './Dialog';
|
|
@@ -59,3 +62,27 @@ export { default as NotificationModal } from './NotificationModal';
|
|
|
59
62
|
export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } from './Tooltip';
|
|
60
63
|
// TimerBadge - elapsed time with urgency coloring (green → amber → red)
|
|
61
64
|
export { default as TimerBadge } from './TimerBadge';
|
|
65
|
+
// Badge - styled pill/tag component
|
|
66
|
+
export { Badge, default as BadgeDefault } from './Badge';
|
|
67
|
+
// RadioPillGroup - selectable pill grid
|
|
68
|
+
export { RadioPillGroup } from './RadioPillGroup';
|
|
69
|
+
// StepIndicator - numbered step display
|
|
70
|
+
export { StepIndicator } from './StepIndicator';
|
|
71
|
+
// BarcodeImageDisplay - barcode viewer with download
|
|
72
|
+
export { default as BarcodeImageDisplay } from './BarcodeImageDisplay';
|
|
73
|
+
// CustomAttributeBuilder - dynamic key-value form builder
|
|
74
|
+
export { default as CustomAttributeBuilder } from './CustomAttributeBuilder';
|
|
75
|
+
// TierConfigBuilder - loyalty tier configuration form
|
|
76
|
+
export { default as TierConfigBuilder } from './TierConfigBuilder';
|
|
77
|
+
// InlineLoginForm - embeddable login form
|
|
78
|
+
export { InlineLoginForm } from './InlineLoginForm';
|
|
79
|
+
// InlineRegisterForm - embeddable registration form
|
|
80
|
+
export { InlineRegisterForm } from './InlineRegisterForm';
|
|
81
|
+
// StepProgress - icon step progress bar (onboarding, wizards)
|
|
82
|
+
export { StepProgress } from './StepProgress';
|
|
83
|
+
// ProgressIndicatorButton - navbar progress badge with tooltip
|
|
84
|
+
export { ProgressIndicatorButton } from './ProgressIndicatorButton';
|
|
85
|
+
// SidebarPortalBadge - sidebar portal badge with icon/label/color
|
|
86
|
+
export { SidebarPortalBadge } from './SidebarHeader';
|
|
87
|
+
// CardInputForm - credit/debit card input with validation
|
|
88
|
+
export { default as CardInputForm } from './CardInputForm';
|
|
@@ -27,8 +27,8 @@ export declare const signupFormSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
|
|
|
27
27
|
password: string;
|
|
28
28
|
firstName: string;
|
|
29
29
|
lastName: string;
|
|
30
|
-
emailAddress: string;
|
|
31
30
|
confirmPassword: string;
|
|
31
|
+
emailAddress: string;
|
|
32
32
|
profile: string;
|
|
33
33
|
role?: string | undefined;
|
|
34
34
|
}, {
|
|
@@ -36,8 +36,8 @@ export declare const signupFormSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
|
|
|
36
36
|
password: string;
|
|
37
37
|
firstName: string;
|
|
38
38
|
lastName: string;
|
|
39
|
-
emailAddress: string;
|
|
40
39
|
confirmPassword: string;
|
|
40
|
+
emailAddress: string;
|
|
41
41
|
profile: string;
|
|
42
42
|
role?: string | undefined;
|
|
43
43
|
}>, {
|
|
@@ -45,8 +45,8 @@ export declare const signupFormSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
|
|
|
45
45
|
password: string;
|
|
46
46
|
firstName: string;
|
|
47
47
|
lastName: string;
|
|
48
|
-
emailAddress: string;
|
|
49
48
|
confirmPassword: string;
|
|
49
|
+
emailAddress: string;
|
|
50
50
|
profile: string;
|
|
51
51
|
role?: string | undefined;
|
|
52
52
|
}, {
|
|
@@ -54,8 +54,8 @@ export declare const signupFormSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
|
|
|
54
54
|
password: string;
|
|
55
55
|
firstName: string;
|
|
56
56
|
lastName: string;
|
|
57
|
-
emailAddress: string;
|
|
58
57
|
confirmPassword: string;
|
|
58
|
+
emailAddress: string;
|
|
59
59
|
profile: string;
|
|
60
60
|
role?: string | undefined;
|
|
61
61
|
}>, {
|
|
@@ -63,8 +63,8 @@ export declare const signupFormSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
|
|
|
63
63
|
password: string;
|
|
64
64
|
firstName: string;
|
|
65
65
|
lastName: string;
|
|
66
|
-
emailAddress: string;
|
|
67
66
|
confirmPassword: string;
|
|
67
|
+
emailAddress: string;
|
|
68
68
|
profile: string;
|
|
69
69
|
role?: string | undefined;
|
|
70
70
|
}, {
|
|
@@ -72,8 +72,8 @@ export declare const signupFormSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
|
|
|
72
72
|
password: string;
|
|
73
73
|
firstName: string;
|
|
74
74
|
lastName: string;
|
|
75
|
-
emailAddress: string;
|
|
76
75
|
confirmPassword: string;
|
|
76
|
+
emailAddress: string;
|
|
77
77
|
profile: string;
|
|
78
78
|
role?: string | undefined;
|
|
79
79
|
}>;
|