@umituz/web-dashboard 2.0.3 → 2.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/onboarding/components/AppFocusStep.d.ts +26 -0
  2. package/dist/onboarding/components/AppFocusStep.js +86 -0
  3. package/dist/onboarding/components/AppFocusStep.js.map +1 -0
  4. package/dist/onboarding/components/OnboardingWizard.d.ts +13 -0
  5. package/dist/onboarding/components/OnboardingWizard.js +332 -0
  6. package/dist/onboarding/components/OnboardingWizard.js.map +1 -0
  7. package/dist/onboarding/components/PlanStep.d.ts +21 -0
  8. package/dist/onboarding/components/PlanStep.js +167 -0
  9. package/dist/onboarding/components/PlanStep.js.map +1 -0
  10. package/dist/onboarding/components/PlatformsStep.d.ts +26 -0
  11. package/dist/onboarding/components/PlatformsStep.js +86 -0
  12. package/dist/onboarding/components/PlatformsStep.js.map +1 -0
  13. package/dist/onboarding/components/UserTypeStep.d.ts +30 -0
  14. package/dist/onboarding/components/UserTypeStep.js +93 -0
  15. package/dist/onboarding/components/UserTypeStep.js.map +1 -0
  16. package/dist/onboarding/components/index.d.ts +9 -0
  17. package/dist/onboarding/components/index.js +738 -0
  18. package/dist/onboarding/components/index.js.map +1 -0
  19. package/dist/onboarding/hooks/index.d.ts +4 -0
  20. package/dist/onboarding/hooks/index.js +100 -0
  21. package/dist/onboarding/hooks/index.js.map +1 -0
  22. package/dist/onboarding/hooks/useOnboarding.d.ts +50 -0
  23. package/dist/onboarding/hooks/useOnboarding.js +100 -0
  24. package/dist/onboarding/hooks/useOnboarding.js.map +1 -0
  25. package/dist/onboarding/index.d.ts +11 -0
  26. package/dist/onboarding/index.js +913 -0
  27. package/dist/onboarding/index.js.map +1 -0
  28. package/dist/onboarding/types/index.d.ts +3 -0
  29. package/dist/onboarding/types/index.js +2 -0
  30. package/dist/onboarding/types/index.js.map +1 -0
  31. package/dist/onboarding/types/onboarding.d.ts +209 -0
  32. package/dist/onboarding/types/onboarding.js +2 -0
  33. package/dist/onboarding/types/onboarding.js.map +1 -0
  34. package/dist/onboarding/utils/index.d.ts +4 -0
  35. package/dist/onboarding/utils/index.js +83 -0
  36. package/dist/onboarding/utils/index.js.map +1 -0
  37. package/dist/onboarding/utils/onboarding.d.ts +106 -0
  38. package/dist/onboarding/utils/onboarding.js +83 -0
  39. package/dist/onboarding/utils/onboarding.js.map +1 -0
  40. package/package.json +45 -23
@@ -0,0 +1,167 @@
1
+ "use client";
2
+
3
+ // src/domains/onboarding/components/PlanStep.tsx
4
+ import { Check } from "lucide-react";
5
+ import { cn } from "@umituz/web-design-system/utils";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ var PlanStep = ({
8
+ state,
9
+ updateState,
10
+ plans
11
+ }) => {
12
+ const defaultPlans = [
13
+ {
14
+ id: "standard",
15
+ name: "Standard",
16
+ badge: "Most Popular",
17
+ badgeColor: "bg-muted text-muted-foreground",
18
+ description: "Perfect for individuals and small businesses",
19
+ price: 12,
20
+ features: [
21
+ { text: "3 Social Accounts", bold: true },
22
+ "100 posts per month",
23
+ "Basic Analytics",
24
+ "Email Support"
25
+ ]
26
+ },
27
+ {
28
+ id: "pro",
29
+ name: "Pro",
30
+ badge: "Best Value",
31
+ badgeColor: "bg-primary text-primary-foreground",
32
+ description: "For growing businesses and teams",
33
+ price: 29,
34
+ features: [
35
+ { text: "15 Social Accounts", bold: true },
36
+ "Unlimited posts",
37
+ "Advanced Analytics",
38
+ "AI Caption Suggestions",
39
+ { text: "5 Team Members", bold: true },
40
+ "Priority Support"
41
+ ],
42
+ highlight: true
43
+ },
44
+ {
45
+ id: "enterprise",
46
+ name: "Enterprise",
47
+ badge: "Custom",
48
+ badgeColor: "bg-purple-600 text-white",
49
+ description: "For large organizations with custom needs",
50
+ price: 99,
51
+ features: [
52
+ { text: "Unlimited Accounts", bold: true },
53
+ "Unlimited everything",
54
+ "Custom Integrations",
55
+ "Dedicated Account Manager",
56
+ "24/7 Phone Support",
57
+ "SLA Guarantee"
58
+ ]
59
+ }
60
+ ];
61
+ const planOptions = plans || defaultPlans;
62
+ const getPlanPrice = (plan) => {
63
+ const basePrice = plan.price;
64
+ return state.billingCycle === "yearly" ? basePrice * 12 * 0.8 : basePrice;
65
+ };
66
+ return /* @__PURE__ */ jsxs("div", { className: "w-full max-w-5xl", children: [
67
+ /* @__PURE__ */ jsxs("div", { className: "text-center mb-8", children: [
68
+ /* @__PURE__ */ jsx("h1", { className: "text-3xl md:text-4xl font-extrabold text-foreground mb-3", children: "Choose your plan" }),
69
+ /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-lg", children: "Start with a 14-day free trial - no credit card required" })
70
+ ] }),
71
+ /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center gap-2 mb-12", children: /* @__PURE__ */ jsxs("div", { className: "flex bg-muted rounded-full p-1.5 border border-border", children: [
72
+ /* @__PURE__ */ jsx(
73
+ "button",
74
+ {
75
+ onClick: () => updateState({ billingCycle: "monthly" }),
76
+ className: cn(
77
+ "px-6 py-2 rounded-full text-sm font-bold transition-all",
78
+ state.billingCycle === "monthly" ? "bg-primary text-primary-foreground shadow-lg shadow-primary/20" : "text-muted-foreground hover:text-foreground"
79
+ ),
80
+ children: "Monthly"
81
+ }
82
+ ),
83
+ /* @__PURE__ */ jsxs(
84
+ "button",
85
+ {
86
+ onClick: () => updateState({ billingCycle: "yearly" }),
87
+ className: cn(
88
+ "px-6 py-2 rounded-full text-sm font-bold transition-all flex items-center gap-2",
89
+ state.billingCycle === "yearly" ? "bg-primary text-primary-foreground shadow-lg shadow-primary/20" : "text-muted-foreground hover:text-foreground"
90
+ ),
91
+ children: [
92
+ "Yearly",
93
+ /* @__PURE__ */ jsx(
94
+ "span",
95
+ {
96
+ className: cn(
97
+ "text-[10px] px-1.5 py-0.5 rounded-full transition-colors",
98
+ state.billingCycle === "yearly" ? "bg-white/20 text-white" : "bg-green-500/10 text-green-600"
99
+ ),
100
+ children: "Save 20%"
101
+ }
102
+ )
103
+ ]
104
+ }
105
+ )
106
+ ] }) }),
107
+ /* @__PURE__ */ jsx("div", { className: "grid md:grid-cols-3 gap-8", children: planOptions.map((plan) => {
108
+ const isSelected = state.selectedPlan === plan.id;
109
+ const planPrice = getPlanPrice(plan);
110
+ return /* @__PURE__ */ jsxs(
111
+ "button",
112
+ {
113
+ onClick: () => updateState({ selectedPlan: plan.id }),
114
+ className: cn(
115
+ "bg-background border-2 rounded-[32px] p-8 text-left transition-all hover:translate-y-[-4px] relative",
116
+ isSelected ? "border-primary ring-4 ring-primary/10" : "border-border hover:border-primary/40",
117
+ plan.highlight && "shadow-xl"
118
+ ),
119
+ children: [
120
+ plan.highlight && /* @__PURE__ */ jsx("div", { className: "absolute -top-3 left-1/2 -translate-x-1/2 bg-gradient-to-r from-primary to-purple-600 text-white text-[10px] font-black uppercase tracking-widest px-4 py-1 rounded-full", children: "Recommended" }),
121
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between mb-4", children: [
122
+ /* @__PURE__ */ jsx("h3", { className: "text-2xl font-black text-foreground", children: plan.name }),
123
+ plan.badge && /* @__PURE__ */ jsx(
124
+ "div",
125
+ {
126
+ className: cn(
127
+ "text-[10px] font-black uppercase tracking-widest px-3 py-1 rounded-full",
128
+ plan.badgeColor
129
+ ),
130
+ children: plan.badge
131
+ }
132
+ )
133
+ ] }),
134
+ /* @__PURE__ */ jsx("p", { className: "text-muted-foreground mb-8 font-medium", children: plan.description }),
135
+ /* @__PURE__ */ jsxs("div", { className: "flex items-baseline gap-1 mb-8", children: [
136
+ /* @__PURE__ */ jsxs("span", { className: "text-5xl font-black text-foreground", children: [
137
+ "$",
138
+ Math.round(planPrice)
139
+ ] }),
140
+ /* @__PURE__ */ jsx("span", { className: "text-lg font-bold text-muted-foreground", children: "/mo" })
141
+ ] }),
142
+ /* @__PURE__ */ jsx("ul", { className: "space-y-4", children: plan.features.map((feature, i) => {
143
+ const text = typeof feature === "string" ? feature : feature.text;
144
+ const bold = typeof feature !== "string" && feature.bold;
145
+ return /* @__PURE__ */ jsxs("li", { className: "flex items-start gap-3 text-sm font-medium", children: [
146
+ /* @__PURE__ */ jsx("div", { className: "w-5 h-5 rounded-full bg-primary/10 flex items-center justify-center shrink-0 mt-0.5", children: /* @__PURE__ */ jsx(Check, { className: "h-3 w-3 text-primary" }) }),
147
+ /* @__PURE__ */ jsx("span", { className: cn("text-foreground/90", bold && "font-black"), children: text })
148
+ ] }, i);
149
+ }) })
150
+ ]
151
+ },
152
+ plan.id
153
+ );
154
+ }) }),
155
+ state.selectedPlan && /* @__PURE__ */ jsxs("p", { className: "mt-8 text-center text-sm text-muted-foreground animate-in fade-in", children: [
156
+ "\u2728 Great choice! You selected the ",
157
+ planOptions.find((p) => p.id === state.selectedPlan)?.name,
158
+ " plan"
159
+ ] })
160
+ ] });
161
+ };
162
+ var PlanStep_default = PlanStep;
163
+ export {
164
+ PlanStep,
165
+ PlanStep_default as default
166
+ };
167
+ //# sourceMappingURL=PlanStep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/domains/onboarding/components/PlanStep.tsx"],"sourcesContent":["import { Check } from \"lucide-react\";\nimport { cn } from \"@umituz/web-design-system/utils\";\nimport type { OnboardingState, PlanOption } from \"../types/onboarding\";\n\ninterface PlanStepProps {\n /** Current onboarding state */\n state: OnboardingState;\n /** Update state function */\n updateState: (updates: Partial<OnboardingState>) => void;\n /** Plan options */\n plans?: PlanOption[];\n}\n\n/**\n * Plan Selection Step\n *\n * Fourth step - select subscription plan\n */\nexport const PlanStep = ({\n state,\n updateState,\n plans,\n}: PlanStepProps) => {\n // Default plans\n const defaultPlans: PlanOption[] = [\n {\n id: \"standard\",\n name: \"Standard\",\n badge: \"Most Popular\",\n badgeColor: \"bg-muted text-muted-foreground\",\n description: \"Perfect for individuals and small businesses\",\n price: 12,\n features: [\n { text: \"3 Social Accounts\", bold: true },\n \"100 posts per month\",\n \"Basic Analytics\",\n \"Email Support\",\n ],\n },\n {\n id: \"pro\",\n name: \"Pro\",\n badge: \"Best Value\",\n badgeColor: \"bg-primary text-primary-foreground\",\n description: \"For growing businesses and teams\",\n price: 29,\n features: [\n { text: \"15 Social Accounts\", bold: true },\n \"Unlimited posts\",\n \"Advanced Analytics\",\n \"AI Caption Suggestions\",\n { text: \"5 Team Members\", bold: true },\n \"Priority Support\",\n ],\n highlight: true,\n },\n {\n id: \"enterprise\",\n name: \"Enterprise\",\n badge: \"Custom\",\n badgeColor: \"bg-purple-600 text-white\",\n description: \"For large organizations with custom needs\",\n price: 99,\n features: [\n { text: \"Unlimited Accounts\", bold: true },\n \"Unlimited everything\",\n \"Custom Integrations\",\n \"Dedicated Account Manager\",\n \"24/7 Phone Support\",\n \"SLA Guarantee\",\n ],\n },\n ];\n\n const planOptions = plans || defaultPlans;\n\n // Calculate price with billing cycle discount\n const getPlanPrice = (plan: PlanOption) => {\n const basePrice = plan.price;\n return state.billingCycle === \"yearly\" ? basePrice * 12 * 0.8 : basePrice; // 20% discount\n };\n\n return (\n <div className=\"w-full max-w-5xl\">\n <div className=\"text-center mb-8\">\n <h1 className=\"text-3xl md:text-4xl font-extrabold text-foreground mb-3\">\n Choose your plan\n </h1>\n <p className=\"text-muted-foreground text-lg\">\n Start with a 14-day free trial - no credit card required\n </p>\n </div>\n\n {/* Billing Cycle Toggle */}\n <div className=\"flex items-center justify-center gap-2 mb-12\">\n <div className=\"flex bg-muted rounded-full p-1.5 border border-border\">\n <button\n onClick={() => updateState({ billingCycle: \"monthly\" })}\n className={cn(\n \"px-6 py-2 rounded-full text-sm font-bold transition-all\",\n state.billingCycle === \"monthly\"\n ? \"bg-primary text-primary-foreground shadow-lg shadow-primary/20\"\n : \"text-muted-foreground hover:text-foreground\"\n )}\n >\n Monthly\n </button>\n <button\n onClick={() => updateState({ billingCycle: \"yearly\" })}\n className={cn(\n \"px-6 py-2 rounded-full text-sm font-bold transition-all flex items-center gap-2\",\n state.billingCycle === \"yearly\"\n ? \"bg-primary text-primary-foreground shadow-lg shadow-primary/20\"\n : \"text-muted-foreground hover:text-foreground\"\n )}\n >\n Yearly\n <span\n className={cn(\n \"text-[10px] px-1.5 py-0.5 rounded-full transition-colors\",\n state.billingCycle === \"yearly\" ? \"bg-white/20 text-white\" : \"bg-green-500/10 text-green-600\"\n )}\n >\n Save 20%\n </span>\n </button>\n </div>\n </div>\n\n {/* Plans Grid */}\n <div className=\"grid md:grid-cols-3 gap-8\">\n {planOptions.map((plan) => {\n const isSelected = state.selectedPlan === plan.id;\n const planPrice = getPlanPrice(plan);\n\n return (\n <button\n key={plan.id}\n onClick={() => updateState({ selectedPlan: plan.id })}\n className={cn(\n \"bg-background border-2 rounded-[32px] p-8 text-left transition-all hover:translate-y-[-4px] relative\",\n isSelected\n ? \"border-primary ring-4 ring-primary/10\"\n : \"border-border hover:border-primary/40\",\n plan.highlight && \"shadow-xl\"\n )}\n >\n {plan.highlight && (\n <div className=\"absolute -top-3 left-1/2 -translate-x-1/2 bg-gradient-to-r from-primary to-purple-600 text-white text-[10px] font-black uppercase tracking-widest px-4 py-1 rounded-full\">\n Recommended\n </div>\n )}\n\n <div className=\"flex items-center justify-between mb-4\">\n <h3 className=\"text-2xl font-black text-foreground\">{plan.name}</h3>\n {plan.badge && (\n <div\n className={cn(\n \"text-[10px] font-black uppercase tracking-widest px-3 py-1 rounded-full\",\n plan.badgeColor\n )}\n >\n {plan.badge}\n </div>\n )}\n </div>\n\n <p className=\"text-muted-foreground mb-8 font-medium\">{plan.description}</p>\n\n <div className=\"flex items-baseline gap-1 mb-8\">\n <span className=\"text-5xl font-black text-foreground\">\n ${Math.round(planPrice)}\n </span>\n <span className=\"text-lg font-bold text-muted-foreground\">/mo</span>\n </div>\n\n <ul className=\"space-y-4\">\n {plan.features.map((feature, i) => {\n const text = typeof feature === \"string\" ? feature : feature.text;\n const bold = typeof feature !== \"string\" && feature.bold;\n\n return (\n <li key={i} className=\"flex items-start gap-3 text-sm font-medium\">\n <div className=\"w-5 h-5 rounded-full bg-primary/10 flex items-center justify-center shrink-0 mt-0.5\">\n <Check className=\"h-3 w-3 text-primary\" />\n </div>\n <span className={cn(\"text-foreground/90\", bold && \"font-black\")}>\n {text}\n </span>\n </li>\n );\n })}\n </ul>\n </button>\n );\n })}\n </div>\n\n {state.selectedPlan && (\n <p className=\"mt-8 text-center text-sm text-muted-foreground animate-in fade-in\">\n ✨ Great choice! You selected the {planOptions.find((p) => p.id === state.selectedPlan)?.name} plan\n </p>\n )}\n </div>\n );\n};\n\nexport default PlanStep;\n"],"mappings":"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","names":[]}
@@ -0,0 +1,26 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { OnboardingState } from '../types/onboarding.js';
3
+ import 'lucide-react';
4
+ import 'react';
5
+
6
+ interface PlatformsStepProps {
7
+ /** Current onboarding state */
8
+ state: OnboardingState;
9
+ /** Update state function */
10
+ updateState: (updates: Partial<OnboardingState>) => void;
11
+ /** Platform options */
12
+ platforms?: Array<{
13
+ id: string;
14
+ name: string;
15
+ icon: string;
16
+ color?: string;
17
+ }>;
18
+ }
19
+ /**
20
+ * Platform Selection Step
21
+ *
22
+ * Third step - select social media platforms to connect
23
+ */
24
+ declare const PlatformsStep: ({ state, updateState, platforms, }: PlatformsStepProps) => react_jsx_runtime.JSX.Element;
25
+
26
+ export { PlatformsStep, PlatformsStep as default };
@@ -0,0 +1,86 @@
1
+ "use client";
2
+
3
+ // src/domains/onboarding/components/PlatformsStep.tsx
4
+ import { cn } from "@umituz/web-design-system/utils";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ var PlatformsStep = ({
7
+ state,
8
+ updateState,
9
+ platforms
10
+ }) => {
11
+ const defaultPlatforms = [
12
+ { id: "instagram", name: "Instagram", icon: "\u{1F4F8}", color: "bg-gradient-to-br from-purple-500 to-pink-500" },
13
+ { id: "twitter", name: "Twitter / X", icon: "\u{1F426}", color: "bg-black" },
14
+ { id: "facebook", name: "Facebook", icon: "\u{1F44D}", color: "bg-blue-600" },
15
+ { id: "linkedin", name: "LinkedIn", icon: "\u{1F4BC}", color: "bg-blue-700" },
16
+ { id: "tiktok", name: "TikTok", icon: "\u{1F3B5}", color: "bg-black" },
17
+ { id: "youtube", name: "YouTube", icon: "\u{1F4FA}", color: "bg-red-600" },
18
+ { id: "pinterest", name: "Pinterest", icon: "\u{1F4CC}", color: "bg-red-700" },
19
+ { id: "threads", name: "Threads", icon: "\u{1F9F5}", color: "bg-black" }
20
+ ];
21
+ const platformOptions = platforms || defaultPlatforms;
22
+ const togglePlatform = (id) => {
23
+ const isConnected = state.connectedPlatforms.includes(id);
24
+ updateState({
25
+ connectedPlatforms: isConnected ? state.connectedPlatforms.filter((p) => p !== id) : [...state.connectedPlatforms, id]
26
+ });
27
+ };
28
+ return /* @__PURE__ */ jsxs("div", { className: "w-full max-w-4xl", children: [
29
+ /* @__PURE__ */ jsxs("div", { className: "text-center mb-10", children: [
30
+ /* @__PURE__ */ jsx("h1", { className: "text-3xl md:text-4xl font-extrabold text-foreground mb-3", children: "Connect your platforms" }),
31
+ /* @__PURE__ */ jsx("p", { className: "text-muted-foreground", children: "Select the platforms you want to manage - you can add more later" })
32
+ ] }),
33
+ /* @__PURE__ */ jsx("div", { className: "grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-4", children: platformOptions.map((platform) => {
34
+ const isConnected = state.connectedPlatforms.includes(platform.id);
35
+ return /* @__PURE__ */ jsxs(
36
+ "button",
37
+ {
38
+ onClick: () => togglePlatform(platform.id),
39
+ className: cn(
40
+ "group bg-background border rounded-2xl p-6 flex flex-col items-center gap-4 transition-all hover:scale-[1.02]",
41
+ isConnected ? "border-primary ring-2 ring-primary/20 bg-primary/5" : "border-border hover:border-primary/40"
42
+ ),
43
+ children: [
44
+ /* @__PURE__ */ jsx(
45
+ "div",
46
+ {
47
+ className: cn(
48
+ "w-12 h-12 rounded-2xl bg-muted flex items-center justify-center text-2xl group-hover:scale-110 transition-transform",
49
+ platform.color
50
+ ),
51
+ children: platform.icon
52
+ }
53
+ ),
54
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center", children: [
55
+ /* @__PURE__ */ jsx("span", { className: "font-bold text-foreground text-sm", children: platform.name }),
56
+ /* @__PURE__ */ jsx(
57
+ "span",
58
+ {
59
+ className: cn(
60
+ "text-[10px] font-bold uppercase tracking-wider mt-1 transition-colors",
61
+ isConnected ? "text-primary" : "text-muted-foreground"
62
+ ),
63
+ children: isConnected ? "Connected" : "Connect"
64
+ }
65
+ )
66
+ ] })
67
+ ]
68
+ },
69
+ platform.id
70
+ );
71
+ }) }),
72
+ state.connectedPlatforms.length > 0 && /* @__PURE__ */ jsxs("p", { className: "mt-8 text-center text-sm text-muted-foreground animate-in fade-in", children: [
73
+ "\u2728 ",
74
+ state.connectedPlatforms.length,
75
+ " platform",
76
+ state.connectedPlatforms.length > 1 ? "s" : "",
77
+ " selected"
78
+ ] })
79
+ ] });
80
+ };
81
+ var PlatformsStep_default = PlatformsStep;
82
+ export {
83
+ PlatformsStep,
84
+ PlatformsStep_default as default
85
+ };
86
+ //# sourceMappingURL=PlatformsStep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/domains/onboarding/components/PlatformsStep.tsx"],"sourcesContent":["import { cn } from \"@umituz/web-design-system/utils\";\nimport type { OnboardingState } from \"../types/onboarding\";\n\ninterface PlatformsStepProps {\n /** Current onboarding state */\n state: OnboardingState;\n /** Update state function */\n updateState: (updates: Partial<OnboardingState>) => void;\n /** Platform options */\n platforms?: Array<{\n id: string;\n name: string;\n icon: string;\n color?: string;\n }>;\n}\n\n/**\n * Platform Selection Step\n *\n * Third step - select social media platforms to connect\n */\nexport const PlatformsStep = ({\n state,\n updateState,\n platforms,\n}: PlatformsStepProps) => {\n // Default platforms\n const defaultPlatforms = [\n { id: \"instagram\", name: \"Instagram\", icon: \"📸\", color: \"bg-gradient-to-br from-purple-500 to-pink-500\" },\n { id: \"twitter\", name: \"Twitter / X\", icon: \"🐦\", color: \"bg-black\" },\n { id: \"facebook\", name: \"Facebook\", icon: \"👍\", color: \"bg-blue-600\" },\n { id: \"linkedin\", name: \"LinkedIn\", icon: \"💼\", color: \"bg-blue-700\" },\n { id: \"tiktok\", name: \"TikTok\", icon: \"🎵\", color: \"bg-black\" },\n { id: \"youtube\", name: \"YouTube\", icon: \"📺\", color: \"bg-red-600\" },\n { id: \"pinterest\", name: \"Pinterest\", icon: \"📌\", color: \"bg-red-700\" },\n { id: \"threads\", name: \"Threads\", icon: \"🧵\", color: \"bg-black\" },\n ];\n\n const platformOptions = platforms || defaultPlatforms;\n\n const togglePlatform = (id: string) => {\n const isConnected = state.connectedPlatforms.includes(id);\n updateState({\n connectedPlatforms: isConnected\n ? state.connectedPlatforms.filter((p) => p !== id)\n : [...state.connectedPlatforms, id],\n });\n };\n\n return (\n <div className=\"w-full max-w-4xl\">\n <div className=\"text-center mb-10\">\n <h1 className=\"text-3xl md:text-4xl font-extrabold text-foreground mb-3\">\n Connect your platforms\n </h1>\n <p className=\"text-muted-foreground\">\n Select the platforms you want to manage - you can add more later\n </p>\n </div>\n\n <div className=\"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-4\">\n {platformOptions.map((platform) => {\n const isConnected = state.connectedPlatforms.includes(platform.id);\n\n return (\n <button\n key={platform.id}\n onClick={() => togglePlatform(platform.id)}\n className={cn(\n \"group bg-background border rounded-2xl p-6 flex flex-col items-center gap-4 transition-all hover:scale-[1.02]\",\n isConnected ? \"border-primary ring-2 ring-primary/20 bg-primary/5\" : \"border-border hover:border-primary/40\"\n )}\n >\n <div\n className={cn(\n \"w-12 h-12 rounded-2xl bg-muted flex items-center justify-center text-2xl group-hover:scale-110 transition-transform\",\n platform.color\n )}\n >\n {platform.icon}\n </div>\n\n <div className=\"flex flex-col items-center\">\n <span className=\"font-bold text-foreground text-sm\">{platform.name}</span>\n <span\n className={cn(\n \"text-[10px] font-bold uppercase tracking-wider mt-1 transition-colors\",\n isConnected ? \"text-primary\" : \"text-muted-foreground\"\n )}\n >\n {isConnected ? \"Connected\" : \"Connect\"}\n </span>\n </div>\n </button>\n );\n })}\n </div>\n\n {state.connectedPlatforms.length > 0 && (\n <p className=\"mt-8 text-center text-sm text-muted-foreground animate-in fade-in\">\n ✨ {state.connectedPlatforms.length} platform{state.connectedPlatforms.length > 1 ? \"s\" : \"\"} selected\n </p>\n )}\n </div>\n );\n};\n\nexport default PlatformsStep;\n"],"mappings":";;;AAAA,SAAS,UAAU;AAoDb,SACE,KADF;AA9BC,IAAM,gBAAgB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AACF,MAA0B;AAExB,QAAM,mBAAmB;AAAA,IACvB,EAAE,IAAI,aAAa,MAAM,aAAa,MAAM,aAAM,OAAO,gDAAgD;AAAA,IACzG,EAAE,IAAI,WAAW,MAAM,eAAe,MAAM,aAAM,OAAO,WAAW;AAAA,IACpE,EAAE,IAAI,YAAY,MAAM,YAAY,MAAM,aAAM,OAAO,cAAc;AAAA,IACrE,EAAE,IAAI,YAAY,MAAM,YAAY,MAAM,aAAM,OAAO,cAAc;AAAA,IACrE,EAAE,IAAI,UAAU,MAAM,UAAU,MAAM,aAAM,OAAO,WAAW;AAAA,IAC9D,EAAE,IAAI,WAAW,MAAM,WAAW,MAAM,aAAM,OAAO,aAAa;AAAA,IAClE,EAAE,IAAI,aAAa,MAAM,aAAa,MAAM,aAAM,OAAO,aAAa;AAAA,IACtE,EAAE,IAAI,WAAW,MAAM,WAAW,MAAM,aAAM,OAAO,WAAW;AAAA,EAClE;AAEA,QAAM,kBAAkB,aAAa;AAErC,QAAM,iBAAiB,CAAC,OAAe;AACrC,UAAM,cAAc,MAAM,mBAAmB,SAAS,EAAE;AACxD,gBAAY;AAAA,MACV,oBAAoB,cAChB,MAAM,mBAAmB,OAAO,CAAC,MAAM,MAAM,EAAE,IAC/C,CAAC,GAAG,MAAM,oBAAoB,EAAE;AAAA,IACtC,CAAC;AAAA,EACH;AAEA,SACE,qBAAC,SAAI,WAAU,oBACb;AAAA,yBAAC,SAAI,WAAU,qBACb;AAAA,0BAAC,QAAG,WAAU,4DAA2D,oCAEzE;AAAA,MACA,oBAAC,OAAE,WAAU,yBAAwB,8EAErC;AAAA,OACF;AAAA,IAEA,oBAAC,SAAI,WAAU,wDACZ,0BAAgB,IAAI,CAAC,aAAa;AACjC,YAAM,cAAc,MAAM,mBAAmB,SAAS,SAAS,EAAE;AAEjE,aACE;AAAA,QAAC;AAAA;AAAA,UAEC,SAAS,MAAM,eAAe,SAAS,EAAE;AAAA,UACzC,WAAW;AAAA,YACT;AAAA,YACA,cAAc,uDAAuD;AAAA,UACvE;AAAA,UAEA;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC,WAAW;AAAA,kBACT;AAAA,kBACA,SAAS;AAAA,gBACX;AAAA,gBAEC,mBAAS;AAAA;AAAA,YACZ;AAAA,YAEA,qBAAC,SAAI,WAAU,8BACb;AAAA,kCAAC,UAAK,WAAU,qCAAqC,mBAAS,MAAK;AAAA,cACnE;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAW;AAAA,oBACT;AAAA,oBACA,cAAc,iBAAiB;AAAA,kBACjC;AAAA,kBAEC,wBAAc,cAAc;AAAA;AAAA,cAC/B;AAAA,eACF;AAAA;AAAA;AAAA,QA1BK,SAAS;AAAA,MA2BhB;AAAA,IAEJ,CAAC,GACH;AAAA,IAEC,MAAM,mBAAmB,SAAS,KACjC,qBAAC,OAAE,WAAU,qEAAoE;AAAA;AAAA,MAC5E,MAAM,mBAAmB;AAAA,MAAO;AAAA,MAAU,MAAM,mBAAmB,SAAS,IAAI,MAAM;AAAA,MAAG;AAAA,OAC9F;AAAA,KAEJ;AAEJ;AAEA,IAAO,wBAAQ;","names":[]}
@@ -0,0 +1,30 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { OnboardingState } from '../types/onboarding.js';
3
+ import { ComponentType } from 'react';
4
+ import 'lucide-react';
5
+
6
+ interface UserTypeOption {
7
+ id: string;
8
+ label: string;
9
+ description: string;
10
+ icon?: ComponentType<{
11
+ className?: string;
12
+ }>;
13
+ badge?: string;
14
+ }
15
+ interface UserTypeStepProps {
16
+ /** Current onboarding state */
17
+ state: OnboardingState;
18
+ /** Update state function */
19
+ updateState: (updates: Partial<OnboardingState>) => void;
20
+ /** User type options */
21
+ options?: UserTypeOption[];
22
+ }
23
+ /**
24
+ * User Type Selection Step
25
+ *
26
+ * First step of onboarding - select user type/category
27
+ */
28
+ declare const UserTypeStep: ({ state, updateState, options, }: UserTypeStepProps) => react_jsx_runtime.JSX.Element;
29
+
30
+ export { UserTypeStep, UserTypeStep as default };
@@ -0,0 +1,93 @@
1
+ "use client";
2
+
3
+ // src/domains/onboarding/components/UserTypeStep.tsx
4
+ import { Check } from "lucide-react";
5
+ import { cn } from "@umituz/web-design-system/utils";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ var UserTypeStep = ({
8
+ state,
9
+ updateState,
10
+ options = []
11
+ }) => {
12
+ const defaultOptions = [
13
+ {
14
+ id: "founder",
15
+ label: "Founder",
16
+ description: "Building your own startup or business"
17
+ },
18
+ {
19
+ id: "creator",
20
+ label: "Content Creator",
21
+ description: "Creating content for social media and platforms"
22
+ },
23
+ {
24
+ id: "agency",
25
+ label: "Agency",
26
+ description: "Managing multiple client accounts"
27
+ },
28
+ {
29
+ id: "enterprise",
30
+ label: "Enterprise",
31
+ description: "Large scale organization with teams"
32
+ },
33
+ {
34
+ id: "small-business",
35
+ label: "Small Business",
36
+ description: "Local or niche business owner"
37
+ },
38
+ {
39
+ id: "personal",
40
+ label: "Personal",
41
+ description: "Individual looking to grow personal brand"
42
+ }
43
+ ];
44
+ const userTypeOptions = options.length > 0 ? options : defaultOptions;
45
+ return /* @__PURE__ */ jsxs("div", { className: "w-full max-w-xl", children: [
46
+ /* @__PURE__ */ jsxs("div", { className: "text-center mb-10", children: [
47
+ /* @__PURE__ */ jsx("h1", { className: "text-3xl md:text-4xl font-extrabold text-foreground mb-3", children: "What describes you best?" }),
48
+ /* @__PURE__ */ jsx("p", { className: "text-muted-foreground", children: "Select the option that best describes your situation" })
49
+ ] }),
50
+ /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-3", children: userTypeOptions.map((option) => {
51
+ const isSelected = state.selectedUserType === option.id;
52
+ const hasBadge = option.badge != null;
53
+ const hasIcon = option.icon != null;
54
+ return /* @__PURE__ */ jsxs(
55
+ "button",
56
+ {
57
+ onClick: () => updateState({ selectedUserType: option.id }),
58
+ className: cn(
59
+ "w-full flex items-center gap-4 p-5 rounded-2xl border bg-background text-left transition-all group",
60
+ isSelected ? "border-primary ring-2 ring-primary/20 bg-primary/5" : "border-border hover:border-primary/40 hover:bg-muted/50"
61
+ ),
62
+ children: [
63
+ /* @__PURE__ */ jsx(
64
+ "div",
65
+ {
66
+ className: cn(
67
+ "w-6 h-6 rounded-full border-2 flex items-center justify-center shrink-0 transition-colors",
68
+ isSelected ? "border-primary bg-primary text-white" : "border-muted-foreground/30"
69
+ ),
70
+ children: isSelected && /* @__PURE__ */ jsx(Check, { className: "h-4 w-4" })
71
+ }
72
+ ),
73
+ /* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
74
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
75
+ /* @__PURE__ */ jsx("p", { className: "font-bold text-foreground", children: option.label }),
76
+ hasBadge && /* @__PURE__ */ jsx("span", { className: "text-[10px] font-bold uppercase tracking-wider px-2 py-0.5 rounded-full bg-primary/10 text-primary", children: option.badge })
77
+ ] }),
78
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground mt-0.5", children: option.description })
79
+ ] }),
80
+ hasIcon && option.icon && /* @__PURE__ */ jsx("div", { className: "w-10 h-10 rounded-xl bg-muted flex items-center justify-center shrink-0", children: /* @__PURE__ */ jsx(option.icon, { className: "h-5 w-5 text-muted-foreground" }) })
81
+ ]
82
+ },
83
+ option.id
84
+ );
85
+ }) })
86
+ ] });
87
+ };
88
+ var UserTypeStep_default = UserTypeStep;
89
+ export {
90
+ UserTypeStep,
91
+ UserTypeStep_default as default
92
+ };
93
+ //# sourceMappingURL=UserTypeStep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/domains/onboarding/components/UserTypeStep.tsx"],"sourcesContent":["import { Check } from \"lucide-react\";\nimport { cn } from \"@umituz/web-design-system/utils\";\nimport type { OnboardingState } from \"../types/onboarding\";\nimport type { ComponentType } from \"react\";\n\ninterface UserTypeOption {\n id: string;\n label: string;\n description: string;\n icon?: ComponentType<{ className?: string }>;\n badge?: string;\n}\n\ninterface UserTypeStepProps {\n /** Current onboarding state */\n state: OnboardingState;\n /** Update state function */\n updateState: (updates: Partial<OnboardingState>) => void;\n /** User type options */\n options?: UserTypeOption[];\n}\n\n/**\n * User Type Selection Step\n *\n * First step of onboarding - select user type/category\n */\nexport const UserTypeStep = ({\n state,\n updateState,\n options = [],\n}: UserTypeStepProps) => {\n // Default options if not provided\n const defaultOptions: UserTypeOption[] = [\n {\n id: \"founder\",\n label: \"Founder\",\n description: \"Building your own startup or business\",\n },\n {\n id: \"creator\",\n label: \"Content Creator\",\n description: \"Creating content for social media and platforms\",\n },\n {\n id: \"agency\",\n label: \"Agency\",\n description: \"Managing multiple client accounts\",\n },\n {\n id: \"enterprise\",\n label: \"Enterprise\",\n description: \"Large scale organization with teams\",\n },\n {\n id: \"small-business\",\n label: \"Small Business\",\n description: \"Local or niche business owner\",\n },\n {\n id: \"personal\",\n label: \"Personal\",\n description: \"Individual looking to grow personal brand\",\n },\n ];\n\n const userTypeOptions = options.length > 0 ? options : defaultOptions;\n\n return (\n <div className=\"w-full max-w-xl\">\n <div className=\"text-center mb-10\">\n <h1 className=\"text-3xl md:text-4xl font-extrabold text-foreground mb-3\">\n What describes you best?\n </h1>\n <p className=\"text-muted-foreground\">\n Select the option that best describes your situation\n </p>\n </div>\n\n <div className=\"grid grid-cols-1 gap-3\">\n {userTypeOptions.map((option) => {\n const isSelected = state.selectedUserType === option.id;\n const hasBadge = option.badge != null;\n const hasIcon = option.icon != null;\n\n return (\n <button\n key={option.id}\n onClick={() => updateState({ selectedUserType: option.id })}\n className={cn(\n \"w-full flex items-center gap-4 p-5 rounded-2xl border bg-background text-left transition-all group\",\n isSelected\n ? \"border-primary ring-2 ring-primary/20 bg-primary/5\"\n : \"border-border hover:border-primary/40 hover:bg-muted/50\"\n )}\n >\n <div\n className={cn(\n \"w-6 h-6 rounded-full border-2 flex items-center justify-center shrink-0 transition-colors\",\n isSelected\n ? \"border-primary bg-primary text-white\"\n : \"border-muted-foreground/30\"\n )}\n >\n {isSelected && <Check className=\"h-4 w-4\" />}\n </div>\n\n <div className=\"flex-1\">\n <div className=\"flex items-center gap-2\">\n <p className=\"font-bold text-foreground\">{option.label}</p>\n {hasBadge && (\n <span className=\"text-[10px] font-bold uppercase tracking-wider px-2 py-0.5 rounded-full bg-primary/10 text-primary\">\n {option.badge}\n </span>\n )}\n </div>\n <p className=\"text-sm text-muted-foreground mt-0.5\">\n {option.description}\n </p>\n </div>\n\n {hasIcon && option.icon && (\n <div className=\"w-10 h-10 rounded-xl bg-muted flex items-center justify-center shrink-0\">\n <option.icon className=\"h-5 w-5 text-muted-foreground\" />\n </div>\n )}\n </button>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default UserTypeStep;\n"],"mappings":";;;AAAA,SAAS,aAAa;AACtB,SAAS,UAAU;AAqEb,SACE,KADF;AA3CC,IAAM,eAAe,CAAC;AAAA,EAC3B;AAAA,EACA;AAAA,EACA,UAAU,CAAC;AACb,MAAyB;AAEvB,QAAM,iBAAmC;AAAA,IACvC;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,EACF;AAEA,QAAM,kBAAkB,QAAQ,SAAS,IAAI,UAAU;AAEvD,SACE,qBAAC,SAAI,WAAU,mBACb;AAAA,yBAAC,SAAI,WAAU,qBACb;AAAA,0BAAC,QAAG,WAAU,4DAA2D,sCAEzE;AAAA,MACA,oBAAC,OAAE,WAAU,yBAAwB,kEAErC;AAAA,OACF;AAAA,IAEA,oBAAC,SAAI,WAAU,0BACZ,0BAAgB,IAAI,CAAC,WAAW;AAC/B,YAAM,aAAa,MAAM,qBAAqB,OAAO;AACrD,YAAM,WAAW,OAAO,SAAS;AACjC,YAAM,UAAU,OAAO,QAAQ;AAE/B,aACE;AAAA,QAAC;AAAA;AAAA,UAEC,SAAS,MAAM,YAAY,EAAE,kBAAkB,OAAO,GAAG,CAAC;AAAA,UAC1D,WAAW;AAAA,YACT;AAAA,YACA,aACI,uDACA;AAAA,UACN;AAAA,UAEA;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC,WAAW;AAAA,kBACT;AAAA,kBACA,aACI,yCACA;AAAA,gBACN;AAAA,gBAEC,wBAAc,oBAAC,SAAM,WAAU,WAAU;AAAA;AAAA,YAC5C;AAAA,YAEA,qBAAC,SAAI,WAAU,UACb;AAAA,mCAAC,SAAI,WAAU,2BACb;AAAA,oCAAC,OAAE,WAAU,6BAA6B,iBAAO,OAAM;AAAA,gBACtD,YACC,oBAAC,UAAK,WAAU,sGACb,iBAAO,OACV;AAAA,iBAEJ;AAAA,cACA,oBAAC,OAAE,WAAU,wCACV,iBAAO,aACV;AAAA,eACF;AAAA,YAEC,WAAW,OAAO,QACjB,oBAAC,SAAI,WAAU,2EACb,8BAAC,OAAO,MAAP,EAAY,WAAU,iCAAgC,GACzD;AAAA;AAAA;AAAA,QArCG,OAAO;AAAA,MAuCd;AAAA,IAEJ,CAAC,GACH;AAAA,KACF;AAEJ;AAEA,IAAO,uBAAQ;","names":[]}
@@ -0,0 +1,9 @@
1
+ export { OnboardingWizard } from './OnboardingWizard.js';
2
+ export { UserTypeStep } from './UserTypeStep.js';
3
+ export { AppFocusStep } from './AppFocusStep.js';
4
+ export { PlatformsStep } from './PlatformsStep.js';
5
+ export { PlanStep } from './PlanStep.js';
6
+ import 'react/jsx-runtime';
7
+ import '../types/onboarding.js';
8
+ import 'lucide-react';
9
+ import 'react';