@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.
Files changed (65) hide show
  1. package/lib/components/ecommerce/BundleCard.d.ts +11 -0
  2. package/lib/components/ecommerce/BundleCard.js +40 -0
  3. package/lib/components/ecommerce/CartItemCard.d.ts +11 -0
  4. package/lib/components/ecommerce/CartItemCard.js +11 -0
  5. package/lib/components/ecommerce/CheckoutStepper.d.ts +10 -0
  6. package/lib/components/ecommerce/CheckoutStepper.js +12 -0
  7. package/lib/components/ecommerce/FloatingCartButton.d.ts +8 -0
  8. package/lib/components/ecommerce/FloatingCartButton.js +8 -0
  9. package/lib/components/ecommerce/OrderSummary.d.ts +23 -0
  10. package/lib/components/ecommerce/OrderSummary.js +9 -0
  11. package/lib/components/ecommerce/ProductCard.d.ts +21 -0
  12. package/lib/components/ecommerce/ProductCard.js +62 -0
  13. package/lib/components/ecommerce/ProductCardSkeleton.d.ts +1 -0
  14. package/lib/components/ecommerce/ProductCardSkeleton.js +5 -0
  15. package/lib/components/ecommerce/ProductGrid.d.ts +17 -0
  16. package/lib/components/ecommerce/ProductGrid.js +14 -0
  17. package/lib/components/ecommerce/index.d.ts +16 -0
  18. package/lib/components/ecommerce/index.js +9 -0
  19. package/lib/components/ecommerce/types.d.ts +113 -0
  20. package/lib/components/ecommerce/types.js +6 -0
  21. package/lib/components/index.d.ts +1 -0
  22. package/lib/components/index.js +1 -0
  23. package/lib/components/layout/Navbar.d.ts +18 -0
  24. package/lib/components/layout/Navbar.js +3 -3
  25. package/lib/components/layout/NavbarActionsDropdown.d.ts +11 -0
  26. package/lib/components/layout/NavbarActionsDropdown.js +12 -0
  27. package/lib/components/layout/index.d.ts +1 -0
  28. package/lib/components/layout/index.js +1 -0
  29. package/lib/components/sidebar-v2/NavbarV2.js +4 -4
  30. package/lib/components/ui/AnimatedBackground.d.ts +8 -0
  31. package/lib/components/ui/AnimatedBackground.js +15 -0
  32. package/lib/components/ui/Badge.d.ts +7 -0
  33. package/lib/components/ui/Badge.js +13 -0
  34. package/lib/components/ui/BarcodeImageDisplay.d.ts +11 -0
  35. package/lib/components/ui/BarcodeImageDisplay.js +47 -0
  36. package/lib/components/ui/CardInputForm.d.ts +16 -0
  37. package/lib/components/ui/CardInputForm.js +112 -0
  38. package/lib/components/ui/CartDrawer.d.ts +13 -0
  39. package/lib/components/ui/CartDrawer.js +6 -0
  40. package/lib/components/ui/Command.d.ts +2 -2
  41. package/lib/components/ui/CustomAttributeBuilder.d.ts +12 -0
  42. package/lib/components/ui/CustomAttributeBuilder.js +28 -0
  43. package/lib/components/ui/InlineLoginForm.d.ts +10 -0
  44. package/lib/components/ui/InlineLoginForm.js +33 -0
  45. package/lib/components/ui/InlineRegisterForm.d.ts +20 -0
  46. package/lib/components/ui/InlineRegisterForm.js +49 -0
  47. package/lib/components/ui/ProgressIndicatorButton.d.ts +19 -0
  48. package/lib/components/ui/ProgressIndicatorButton.js +19 -0
  49. package/lib/components/ui/RadioPillGroup.d.ts +12 -0
  50. package/lib/components/ui/RadioPillGroup.js +16 -0
  51. package/lib/components/ui/Sheet.d.ts +1 -1
  52. package/lib/components/ui/SidebarHeader.d.ts +9 -0
  53. package/lib/components/ui/SidebarHeader.js +21 -0
  54. package/lib/components/ui/StatCard.d.ts +2 -2
  55. package/lib/components/ui/StepIndicator.d.ts +7 -0
  56. package/lib/components/ui/StepIndicator.js +5 -0
  57. package/lib/components/ui/StepProgress.d.ts +13 -0
  58. package/lib/components/ui/StepProgress.js +18 -0
  59. package/lib/components/ui/TierConfigBuilder.d.ts +13 -0
  60. package/lib/components/ui/TierConfigBuilder.js +131 -0
  61. package/lib/components/ui/index.d.ts +28 -0
  62. package/lib/components/ui/index.js +27 -0
  63. package/lib/helpers/validations.d.ts +6 -6
  64. package/lib/styles.css +475 -0
  65. 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?: "primary" | "light" | "dark" | "green" | "teal" | "orange" | "light-orange" | "light-teal" | "light-green" | null | undefined;
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?: "primary" | "light" | "dark" | "green" | "teal" | "orange" | "light-orange" | "light-teal" | "light-green" | null | undefined;
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,7 @@
1
+ export interface StepIndicatorProps {
2
+ stepNumber: number;
3
+ title: string;
4
+ subtitle?: string;
5
+ className?: string;
6
+ }
7
+ export declare function StepIndicator({ stepNumber, title, className }: StepIndicatorProps): import("react/jsx-runtime").JSX.Element;
@@ -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
  }>;