@pelatform/starter.shared 0.1.1 → 0.2.0

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.
@@ -0,0 +1,107 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as react from 'react';
3
+ import { ComponentType } from 'react';
4
+ export { A as AvatarClassNames, a as AvatarProps, C as CardClassNames, b as CardComponentProps, D as DialogClassNames, c as DialogComponentProps, V as ViewClassNames, d as ViewProps } from './view-B1v2TRLo.js';
5
+ import 'pelatform-ui/default';
6
+ import '@pelatform/starter.utils';
7
+
8
+ declare const socialProviders: readonly [{
9
+ readonly provider: "apple";
10
+ readonly name: "Apple";
11
+ readonly icon: (props: react.HTMLAttributes<SVGElement>) => react_jsx_runtime.JSX.Element;
12
+ }, {
13
+ readonly provider: "discord";
14
+ readonly name: "Discord";
15
+ readonly icon: (props: react.HTMLAttributes<SVGElement>) => react_jsx_runtime.JSX.Element;
16
+ }, {
17
+ readonly provider: "dropbox";
18
+ readonly name: "Dropbox";
19
+ readonly icon: (props: react.HTMLAttributes<SVGElement>) => react_jsx_runtime.JSX.Element;
20
+ }, {
21
+ readonly provider: "facebook";
22
+ readonly name: "Facebook";
23
+ readonly icon: (props: react.HTMLAttributes<SVGElement>) => react_jsx_runtime.JSX.Element;
24
+ }, {
25
+ readonly provider: "github";
26
+ readonly name: "GitHub";
27
+ readonly icon: (props: react.HTMLAttributes<SVGElement>) => react_jsx_runtime.JSX.Element;
28
+ }, {
29
+ readonly provider: "gitlab";
30
+ readonly name: "GitLab";
31
+ readonly icon: (props: react.HTMLAttributes<SVGElement>) => react_jsx_runtime.JSX.Element;
32
+ }, {
33
+ readonly provider: "google";
34
+ readonly name: "Google";
35
+ readonly icon: (props: react.HTMLAttributes<SVGElement>) => react_jsx_runtime.JSX.Element;
36
+ }, {
37
+ readonly provider: "huggingface";
38
+ readonly name: "Hugging Face";
39
+ readonly icon: (props: react.HTMLAttributes<SVGElement>) => react_jsx_runtime.JSX.Element;
40
+ }, {
41
+ readonly provider: "kick";
42
+ readonly name: "Kick";
43
+ readonly icon: (props: react.HTMLAttributes<SVGElement>) => react_jsx_runtime.JSX.Element;
44
+ }, {
45
+ readonly provider: "linear";
46
+ readonly name: "Linear";
47
+ readonly icon: (props: react.HTMLAttributes<SVGElement>) => react_jsx_runtime.JSX.Element;
48
+ }, {
49
+ readonly provider: "linkedin";
50
+ readonly name: "LinkedIn";
51
+ readonly icon: (props: react.HTMLAttributes<SVGElement>) => react_jsx_runtime.JSX.Element;
52
+ }, {
53
+ readonly provider: "microsoft";
54
+ readonly name: "Microsoft";
55
+ readonly icon: (props: react.HTMLAttributes<SVGElement>) => react_jsx_runtime.JSX.Element;
56
+ }, {
57
+ readonly provider: "notion";
58
+ readonly name: "Notion";
59
+ readonly icon: (props: react.HTMLAttributes<SVGElement>) => react_jsx_runtime.JSX.Element;
60
+ }, {
61
+ readonly provider: "reddit";
62
+ readonly name: "Reddit";
63
+ readonly icon: (props: react.HTMLAttributes<SVGElement>) => react_jsx_runtime.JSX.Element;
64
+ }, {
65
+ readonly provider: "roblox";
66
+ readonly name: "Roblox";
67
+ readonly icon: (props: react.HTMLAttributes<SVGElement>) => react_jsx_runtime.JSX.Element;
68
+ }, {
69
+ readonly provider: "slack";
70
+ readonly name: "Slack";
71
+ readonly icon: (props: react.HTMLAttributes<SVGElement>) => react_jsx_runtime.JSX.Element;
72
+ }, {
73
+ readonly provider: "spotify";
74
+ readonly name: "Spotify";
75
+ readonly icon: (props: react.HTMLAttributes<SVGElement>) => react_jsx_runtime.JSX.Element;
76
+ }, {
77
+ readonly provider: "tiktok";
78
+ readonly name: "TikTok";
79
+ readonly icon: (props: react.HTMLAttributes<SVGElement>) => react_jsx_runtime.JSX.Element;
80
+ }, {
81
+ readonly provider: "twitch";
82
+ readonly name: "Twitch";
83
+ readonly icon: (props: react.HTMLAttributes<SVGElement>) => react_jsx_runtime.JSX.Element;
84
+ }, {
85
+ readonly provider: "vk";
86
+ readonly name: "VK";
87
+ readonly icon: (props: react.HTMLAttributes<SVGElement>) => react_jsx_runtime.JSX.Element;
88
+ }, {
89
+ readonly provider: "twitter";
90
+ readonly name: "X";
91
+ readonly icon: (props: react.HTMLAttributes<SVGElement>) => react_jsx_runtime.JSX.Element;
92
+ }, {
93
+ readonly provider: "zoom";
94
+ readonly name: "Zoom";
95
+ readonly icon: (props: react.HTMLAttributes<SVGElement>) => react_jsx_runtime.JSX.Element;
96
+ }];
97
+
98
+ type ProviderIcon = ComponentType<{
99
+ className?: string;
100
+ }>;
101
+ type Provider = {
102
+ provider: string;
103
+ name: string;
104
+ icon?: ProviderIcon;
105
+ };
106
+
107
+ export { type Provider, type ProviderIcon, socialProviders };
package/dist/extend.js ADDED
@@ -0,0 +1,117 @@
1
+ // src/lib/social-providers.ts
2
+ import { Icons } from "pelatform-ui";
3
+ var socialProviders = [
4
+ {
5
+ provider: "apple",
6
+ name: "Apple",
7
+ icon: Icons.Apple
8
+ },
9
+ {
10
+ provider: "discord",
11
+ name: "Discord",
12
+ icon: Icons.Discord
13
+ },
14
+ {
15
+ provider: "dropbox",
16
+ name: "Dropbox",
17
+ icon: Icons.Dropbox
18
+ },
19
+ {
20
+ provider: "facebook",
21
+ name: "Facebook",
22
+ icon: Icons.FacebookColorful
23
+ },
24
+ {
25
+ provider: "github",
26
+ name: "GitHub",
27
+ icon: Icons.Github
28
+ },
29
+ {
30
+ provider: "gitlab",
31
+ name: "GitLab",
32
+ icon: Icons.Gitlab
33
+ },
34
+ {
35
+ provider: "google",
36
+ name: "Google",
37
+ icon: Icons.GoogleColorful
38
+ },
39
+ {
40
+ provider: "huggingface",
41
+ name: "Hugging Face",
42
+ icon: Icons.Huggingface
43
+ },
44
+ {
45
+ provider: "kick",
46
+ name: "Kick",
47
+ icon: Icons.Kick
48
+ },
49
+ {
50
+ provider: "linear",
51
+ name: "Linear",
52
+ icon: Icons.Linear
53
+ },
54
+ {
55
+ provider: "linkedin",
56
+ name: "LinkedIn",
57
+ icon: Icons.LinkedinColorful
58
+ },
59
+ {
60
+ provider: "microsoft",
61
+ name: "Microsoft",
62
+ icon: Icons.Microsoft
63
+ },
64
+ {
65
+ provider: "notion",
66
+ name: "Notion",
67
+ icon: Icons.Notion
68
+ },
69
+ {
70
+ provider: "reddit",
71
+ name: "Reddit",
72
+ icon: Icons.Reddit
73
+ },
74
+ {
75
+ provider: "roblox",
76
+ name: "Roblox",
77
+ icon: Icons.Roblox
78
+ },
79
+ {
80
+ provider: "slack",
81
+ name: "Slack",
82
+ icon: Icons.Slack
83
+ },
84
+ {
85
+ provider: "spotify",
86
+ name: "Spotify",
87
+ icon: Icons.Spotify
88
+ },
89
+ {
90
+ provider: "tiktok",
91
+ name: "TikTok",
92
+ icon: Icons.Tiktok
93
+ },
94
+ {
95
+ provider: "twitch",
96
+ name: "Twitch",
97
+ icon: Icons.Twitch
98
+ },
99
+ {
100
+ provider: "vk",
101
+ name: "VK",
102
+ icon: Icons.Vk
103
+ },
104
+ {
105
+ provider: "twitter",
106
+ name: "X",
107
+ icon: Icons.X
108
+ },
109
+ {
110
+ provider: "zoom",
111
+ name: "Zoom",
112
+ icon: Icons.Zoom
113
+ }
114
+ ];
115
+ export {
116
+ socialProviders
117
+ };
package/dist/index.d.ts CHANGED
@@ -6,8 +6,9 @@ import { NavItem, LanguageSwitcherProps } from 'pelatform-ui/components';
6
6
  export { Logo as LogoDefault } from 'pelatform-ui/components';
7
7
  import { Config } from '@pelatform/starter.config';
8
8
  import { AuthQueryOptions } from '@pelatform/starter.hook';
9
- import { AnyAuthClient, User, Workspace, ApiKey } from '@pelatform/starter.utils';
10
- import { Toaster, Avatar, buttonVariants, Dialog, Card, Button, Input } from 'pelatform-ui/default';
9
+ import { AnyAuthClient, ApiKey } from '@pelatform/starter.utils';
10
+ import { Toaster, Button, Input } from 'pelatform-ui/default';
11
+ import { b as CardComponentProps, c as DialogComponentProps, C as CardClassNames, a as AvatarProps, d as ViewProps } from './view-B1v2TRLo.js';
11
12
  import { LucideIcon } from 'lucide-react';
12
13
 
13
14
  declare function AuthLayout({ children, logo, disableFooter, signInHint, signInHref, }: {
@@ -138,79 +139,6 @@ interface SharedProvidersProps {
138
139
  }
139
140
  declare function SharedProviders({ children, locale, messages, timeZone, sonnerPosition, }: SharedProvidersProps): react_jsx_runtime.JSX.Element;
140
141
 
141
- type AvatarClassNames = {
142
- base?: string;
143
- fallback?: string;
144
- fallbackIcon?: string;
145
- image?: string;
146
- skeleton?: string;
147
- };
148
- interface AvatarProps extends ComponentProps<typeof Avatar> {
149
- className?: string;
150
- classNames?: AvatarClassNames;
151
- image?: string;
152
- isPending?: boolean;
153
- size?: NonNullable<Parameters<typeof buttonVariants>[0]>["size"] | null | undefined;
154
- user?: Partial<User> | null;
155
- workspace?: Partial<Workspace> | null;
156
- }
157
-
158
- type DialogClassNames = {
159
- content?: string;
160
- header?: string;
161
- footer?: string;
162
- };
163
- interface DialogComponentProps extends ComponentProps<typeof Dialog> {
164
- className?: string;
165
- children?: ReactNode;
166
- classNames?: CardClassNames;
167
- title?: string;
168
- description?: string;
169
- disableFooter?: boolean;
170
- cancelButton?: boolean;
171
- cancelButtonDisabled?: boolean;
172
- button?: ReactNode;
173
- }
174
-
175
- type CardClassNames = {
176
- base?: string;
177
- cell?: string;
178
- content?: string;
179
- header?: string;
180
- footer?: string;
181
- grid?: string;
182
- skeleton?: string;
183
- title?: string;
184
- description?: string;
185
- instructions?: string;
186
- error?: string;
187
- label?: string;
188
- input?: string;
189
- checkbox?: string;
190
- icon?: string;
191
- button?: string;
192
- primaryButton?: string;
193
- secondaryButton?: string;
194
- outlineButton?: string;
195
- destructiveButton?: string;
196
- avatar?: AvatarClassNames;
197
- dialog?: DialogClassNames;
198
- };
199
- interface CardComponentProps extends Omit<ComponentProps<typeof Card>, "title" | "variant"> {
200
- className?: string;
201
- children?: ReactNode;
202
- classNames?: CardClassNames;
203
- title?: ReactNode;
204
- description?: ReactNode;
205
- instructions?: ReactNode;
206
- actionLabel?: ReactNode;
207
- action?: () => Promise<unknown> | unknown;
208
- disabled?: boolean;
209
- isDestructive?: boolean;
210
- isPending?: boolean;
211
- isSubmitting?: boolean;
212
- }
213
-
214
142
  declare function CardComponent({ children, className, classNames, title, description, instructions, actionLabel, action, disabled, isDestructive, isPending, isSubmitting, ...props }: CardComponentProps): react_jsx_runtime.JSX.Element;
215
143
  declare function CardHeaderComponent({ className, classNames, title, description, isPending, }: CardComponentProps): react_jsx_runtime.JSX.Element;
216
144
  declare function CardFooterComponent({ className, classNames, instructions, actionLabel, action, disabled, isDestructive, isPending, isSubmitting, }: CardComponentProps): react_jsx_runtime.JSX.Element;
@@ -271,28 +199,10 @@ declare function UserMenu({ hiddenSwitcher }: {
271
199
  hiddenSwitcher?: boolean;
272
200
  }): react_jsx_runtime.JSX.Element;
273
201
 
274
- type ViewClassNames = {
275
- base?: string;
276
- content?: string;
277
- title?: string;
278
- subtitle?: string;
279
- skeleton?: string;
280
- icon?: string;
281
- avatar?: AvatarClassNames;
282
- };
283
- interface ViewProps {
284
- className?: string;
285
- classNames?: ViewClassNames;
286
- isPending?: boolean;
287
- size?: NonNullable<Parameters<typeof buttonVariants>[0]>["size"] | null | undefined;
288
- user?: Partial<User> | null;
289
- workspace?: Partial<Workspace> | null;
290
- }
291
-
292
202
  declare function UserView({ className, classNames, isPending, size, user }: ViewProps): react_jsx_runtime.JSX.Element;
293
203
  declare function ApiKeyView({ className, classNames, apiKey }: ViewProps & {
294
204
  apiKey: ApiKey;
295
205
  }): react_jsx_runtime.JSX.Element;
296
206
  declare function WorkspaceView({ className, classNames, isPending, size, workspace }: ViewProps): react_jsx_runtime.JSX.Element;
297
207
 
298
- export { ApiKeyView, AuthLayout, type AvatarClassNames, type AvatarProps, CardActionComponent, type CardClassNames, CardComponent, type CardComponentProps, CardFooterComponent, CardHeaderComponent, ConfigProvider, type ConfigProviderProps, type DialogClassNames, DialogComponent, type DialogComponentProps, DialogFooterComponent, DisplayIdCard, EmptyState, type EmptyStateProps, Header, HeaderLeft, HeaderRight, HeaderSidebarMobile, LanguageSwitcher, LayoutLoader, LayoutProvider, type LayoutProviderProps, LayoutWrapper, LogoWithHref, LogoWithName, OTPInputGroup, PasswordInput, SharedProviders, type SharedProvidersProps, Sidebar, SidebarContent, SidebarContentMenu, SidebarHeaderBack, SignedInHint, SiteFooter, SiteHeader, SiteHeaderSecondary, SkeletonInputComponent, SkeletonViewComponent, Toolbar, UserAvatar, UserMenu, UserView, type ViewClassNames, type ViewProps, WorkspaceLogo, WorkspaceView };
208
+ export { ApiKeyView, AuthLayout, CardActionComponent, CardComponent, CardFooterComponent, CardHeaderComponent, ConfigProvider, type ConfigProviderProps, DialogComponent, DialogFooterComponent, DisplayIdCard, EmptyState, type EmptyStateProps, Header, HeaderLeft, HeaderRight, HeaderSidebarMobile, LanguageSwitcher, LayoutLoader, LayoutProvider, type LayoutProviderProps, LayoutWrapper, LogoWithHref, LogoWithName, OTPInputGroup, PasswordInput, SharedProviders, type SharedProvidersProps, Sidebar, SidebarContent, SidebarContentMenu, SidebarHeaderBack, SignedInHint, SiteFooter, SiteHeader, SiteHeaderSecondary, SkeletonInputComponent, SkeletonViewComponent, Toolbar, UserAvatar, UserMenu, UserView, WorkspaceLogo, WorkspaceView };
package/dist/index.js CHANGED
@@ -594,19 +594,24 @@ function UserMenu({ hiddenSwitcher = false }) {
594
594
  /* @__PURE__ */ jsx9(DropdownMenuItem, { disabled: true, children: /* @__PURE__ */ jsx9(UserView, { isPending: true }) }),
595
595
  /* @__PURE__ */ jsx9(DropdownMenuSeparator, {})
596
596
  ] }),
597
- deviceSessions?.filter((sessionData) => sessionData.user.id !== user?.id).map(({ session, user: multiUser }) => /* @__PURE__ */ jsxs7(Fragment2, { children: [
598
- /* @__PURE__ */ jsxs7(DropdownMenuItem, { onClick: () => switchAccount(session.token), children: [
599
- /* @__PURE__ */ jsx9(UserAvatar2, { src: multiUser?.image || void 0, alt: getUserName3(multiUser) }),
600
- /* @__PURE__ */ jsxs7("div", { className: "flex min-w-0 flex-1 flex-col items-start", children: [
601
- /* @__PURE__ */ jsx9("span", { className: "truncate font-semibold text-foreground text-xs", children: getUserName3(multiUser) }),
602
- /* @__PURE__ */ jsx9("span", { className: "block w-full truncate text-muted-foreground text-xs", children: multiUser?.email })
603
- ] })
604
- ] }),
605
- /* @__PURE__ */ jsx9(DropdownMenuSeparator, {})
606
- ] }, session.id)),
597
+ deviceSessions?.filter((sessionData) => sessionData.user.id !== user?.id).map(({ session, user: multiUser }) => {
598
+ const userData = multiUser;
599
+ return /* @__PURE__ */ jsxs7(Fragment2, { children: [
600
+ /* @__PURE__ */ jsxs7(DropdownMenuItem, { onClick: () => switchAccount(session.token), children: [
601
+ /* @__PURE__ */ jsx9(UserAvatar2, { src: userData?.image || void 0, alt: getUserName3(userData) }),
602
+ /* @__PURE__ */ jsxs7("div", { className: "flex min-w-0 flex-1 flex-col items-start", children: [
603
+ /* @__PURE__ */ jsx9("span", { className: "truncate font-semibold text-foreground text-xs", children: getUserName3(userData) }),
604
+ /* @__PURE__ */ jsx9("span", { className: "block w-full truncate text-muted-foreground text-xs", children: userData?.email })
605
+ ] })
606
+ ] }),
607
+ /* @__PURE__ */ jsx9(DropdownMenuSeparator, {})
608
+ ] }, session.id);
609
+ }),
607
610
  /* @__PURE__ */ jsx9(DropdownMenuItem, { asChild: true, children: /* @__PURE__ */ jsxs7(Link4, { href: path.auth.SIGN_IN, children: [
608
611
  /* @__PURE__ */ jsx9(PlusCircleIcon, {}),
609
- t("common.actions.addAccount")
612
+ t("common.actions.add"),
613
+ " ",
614
+ t("ui.navigation.account")
610
615
  ] }) })
611
616
  ] })
612
617
  ] })
@@ -0,0 +1,96 @@
1
+ import { ComponentProps, ReactNode } from 'react';
2
+ import { Avatar, buttonVariants, Dialog, Card } from 'pelatform-ui/default';
3
+ import { User, Workspace } from '@pelatform/starter.utils';
4
+
5
+ type AvatarClassNames = {
6
+ base?: string;
7
+ fallback?: string;
8
+ fallbackIcon?: string;
9
+ image?: string;
10
+ skeleton?: string;
11
+ };
12
+ interface AvatarProps extends ComponentProps<typeof Avatar> {
13
+ className?: string;
14
+ classNames?: AvatarClassNames;
15
+ image?: string;
16
+ isPending?: boolean;
17
+ size?: NonNullable<Parameters<typeof buttonVariants>[0]>["size"] | null | undefined;
18
+ user?: Partial<User> | null;
19
+ workspace?: Partial<Workspace> | null;
20
+ }
21
+
22
+ type DialogClassNames = {
23
+ content?: string;
24
+ header?: string;
25
+ footer?: string;
26
+ };
27
+ interface DialogComponentProps extends ComponentProps<typeof Dialog> {
28
+ className?: string;
29
+ children?: ReactNode;
30
+ classNames?: CardClassNames;
31
+ title?: string;
32
+ description?: string;
33
+ disableFooter?: boolean;
34
+ cancelButton?: boolean;
35
+ cancelButtonDisabled?: boolean;
36
+ button?: ReactNode;
37
+ }
38
+
39
+ type CardClassNames = {
40
+ base?: string;
41
+ cell?: string;
42
+ content?: string;
43
+ header?: string;
44
+ footer?: string;
45
+ grid?: string;
46
+ skeleton?: string;
47
+ title?: string;
48
+ description?: string;
49
+ instructions?: string;
50
+ error?: string;
51
+ label?: string;
52
+ input?: string;
53
+ checkbox?: string;
54
+ icon?: string;
55
+ button?: string;
56
+ primaryButton?: string;
57
+ secondaryButton?: string;
58
+ outlineButton?: string;
59
+ destructiveButton?: string;
60
+ avatar?: AvatarClassNames;
61
+ dialog?: DialogClassNames;
62
+ };
63
+ interface CardComponentProps extends Omit<ComponentProps<typeof Card>, "title" | "variant"> {
64
+ className?: string;
65
+ children?: ReactNode;
66
+ classNames?: CardClassNames;
67
+ title?: ReactNode;
68
+ description?: ReactNode;
69
+ instructions?: ReactNode;
70
+ actionLabel?: ReactNode;
71
+ action?: () => Promise<unknown> | unknown;
72
+ disabled?: boolean;
73
+ isDestructive?: boolean;
74
+ isPending?: boolean;
75
+ isSubmitting?: boolean;
76
+ }
77
+
78
+ type ViewClassNames = {
79
+ base?: string;
80
+ content?: string;
81
+ title?: string;
82
+ subtitle?: string;
83
+ skeleton?: string;
84
+ icon?: string;
85
+ avatar?: AvatarClassNames;
86
+ };
87
+ interface ViewProps {
88
+ className?: string;
89
+ classNames?: ViewClassNames;
90
+ isPending?: boolean;
91
+ size?: NonNullable<Parameters<typeof buttonVariants>[0]>["size"] | null | undefined;
92
+ user?: Partial<User> | null;
93
+ workspace?: Partial<Workspace> | null;
94
+ }
95
+
96
+ export type { AvatarClassNames as A, CardClassNames as C, DialogClassNames as D, ViewClassNames as V, AvatarProps as a, CardComponentProps as b, DialogComponentProps as c, ViewProps as d };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pelatform/starter.shared",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "A part of SaaS starter kit for Pelatform applications.",
5
5
  "author": "Pelatform",
6
6
  "license": "MIT",
@@ -13,6 +13,10 @@
13
13
  ".": {
14
14
  "types": "./dist/index.d.ts",
15
15
  "default": "./dist/index.js"
16
+ },
17
+ "./extend": {
18
+ "types": "./dist/extend.d.ts",
19
+ "default": "./dist/extend.js"
16
20
  }
17
21
  },
18
22
  "scripts": {
@@ -35,14 +39,13 @@
35
39
  "@tanstack/react-query-devtools": "^5.91.1"
36
40
  },
37
41
  "devDependencies": {
38
- "@pelatform/starter.config": "0.1.1",
39
- "@pelatform/starter.hook": "0.1.1",
40
- "@pelatform/starter.i18n": "0.1.3",
41
- "@pelatform/starter.utils": "0.1.1",
42
+ "@pelatform/starter.config": "0.2.0",
43
+ "@pelatform/starter.hook": "0.2.0",
44
+ "@pelatform/starter.utils": "0.2.0",
42
45
  "@pelatform/tsconfig": "^0.1.3",
43
46
  "@types/react": "^19.2.7",
44
47
  "lucide-react": "^0.556.0",
45
- "next": "^16.0.7",
48
+ "next": "^16.0.8",
46
49
  "next-intl": "^4.5.8",
47
50
  "pelatform-ui": "^1.1.3",
48
51
  "react": "^19.2.1",
@@ -52,7 +55,6 @@
52
55
  "peerDependencies": {
53
56
  "@pelatform/starter.config": ">=0.1.0",
54
57
  "@pelatform/starter.hook": ">=0.1.0",
55
- "@pelatform/starter.i18n": ">=0.1.0",
56
58
  "@pelatform/starter.utils": ">=0.1.0",
57
59
  "lucide-react": ">=0.55.0",
58
60
  "next": ">=16.0.0",