@pelatform/starter.shared 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/extend.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { Metadata } from 'next';
1
2
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
3
  import * as react from 'react';
3
4
  import { ComponentType } from 'react';
@@ -5,6 +6,35 @@ export { A as AvatarClassNames, a as AvatarProps, C as CardClassNames, b as Card
5
6
  import 'pelatform-ui/default';
6
7
  import '@pelatform/starter.utils';
7
8
 
9
+ declare function mapLocale(locale?: string): string | undefined;
10
+
11
+ type metadataProps = {
12
+ baseUrl?: string;
13
+ title?: string;
14
+ fullTitle?: string;
15
+ description?: string;
16
+ icons?: Metadata["icons"];
17
+ url?: string;
18
+ image?: string | null;
19
+ video?: string | null;
20
+ openGraph?: {
21
+ type?: "website" | "article" | "book" | "profile" | "music.song" | "music.album" | "music.playlist" | "music.radio_station" | "video.movie" | "video.episode" | "video.tv_show" | "video.other";
22
+ locale?: string;
23
+ name?: string;
24
+ };
25
+ twitter?: {
26
+ site?: string;
27
+ creator?: string;
28
+ };
29
+ canonicalUrl?: string;
30
+ alternateLanguages?: Record<string, string>;
31
+ noIndex?: boolean;
32
+ noArchive?: boolean;
33
+ noSnippet?: boolean;
34
+ manifest?: string | URL | null;
35
+ };
36
+ declare function constructMetadata({ baseUrl, title, fullTitle, description, icons, image, video, url, openGraph, twitter, canonicalUrl, alternateLanguages, noIndex, noArchive, noSnippet, manifest, }: metadataProps): Metadata;
37
+
8
38
  declare const socialProviders: readonly [{
9
39
  readonly provider: "apple";
10
40
  readonly name: "Apple";
@@ -104,4 +134,4 @@ type Provider = {
104
134
  icon?: ProviderIcon;
105
135
  };
106
136
 
107
- export { type Provider, type ProviderIcon, socialProviders };
137
+ export { type Provider, type ProviderIcon, constructMetadata, mapLocale, type metadataProps, socialProviders };
package/dist/extend.js CHANGED
@@ -1,3 +1,202 @@
1
+ // src/lib/locale.ts
2
+ function mapLocale(locale) {
3
+ if (!locale) return "en_US";
4
+ const mapping = {
5
+ af: "af_ZA",
6
+ // Afrikaans - South Africa
7
+ am: "am_ET",
8
+ // Amharic - Ethiopia
9
+ ar: "ar_AR",
10
+ // Arabic - Saudi Arabia
11
+ bn: "bn_BD",
12
+ // Bengali - Bangladesh
13
+ bg: "bg_BG",
14
+ // Bulgarian - Bulgaria
15
+ cs: "cs_CZ",
16
+ // Czech - Czech Republic
17
+ da: "da_DK",
18
+ // Danish - Denmark
19
+ de: "de_DE",
20
+ // German - Germany
21
+ el: "el_GR",
22
+ // Greek - Greece
23
+ en: "en_US",
24
+ // English - United States
25
+ en_uk: "en_GB",
26
+ // English - United Kingdom
27
+ es: "es_ES",
28
+ // Spanish - Spain
29
+ es_mx: "es_MX",
30
+ // Spanish - Mexico
31
+ fa: "fa_IR",
32
+ // Persian/Farsi - Iran
33
+ fi: "fi_FI",
34
+ // Finnish - Finland
35
+ fr: "fr_FR",
36
+ // French - France
37
+ fr_ca: "fr_CA",
38
+ // French - Canada
39
+ he: "he_IL",
40
+ // Hebrew - Israel
41
+ hi: "hi_IN",
42
+ // Hindi - India
43
+ hr: "hr_HR",
44
+ // Croatian - Croatia
45
+ hu: "hu_HU",
46
+ // Hungarian - Hungary
47
+ id: "id_ID",
48
+ // Indonesian - Indonesia
49
+ it: "it_IT",
50
+ // Italian - Italy
51
+ ja: "ja_JP",
52
+ // Japanese - Japan
53
+ ko: "ko_KR",
54
+ // Korean - South Korea
55
+ ms: "ms_MY",
56
+ // Malay - Malaysia
57
+ nl: "nl_NL",
58
+ // Dutch - Netherlands
59
+ no: "nb_NO",
60
+ // Norwegian Bokmål - Norway
61
+ pl: "pl_PL",
62
+ // Polish - Poland
63
+ pt: "pt_PT",
64
+ // Portuguese - Portugal
65
+ pt_br: "pt_BR",
66
+ // Portuguese - Brazil
67
+ ro: "ro_RO",
68
+ // Romanian - Romania
69
+ ru: "ru_RU",
70
+ // Russian - Russia
71
+ sk: "sk_SK",
72
+ // Slovak - Slovakia
73
+ sr: "sr_RS",
74
+ // Serbian - Serbia
75
+ sv: "sv_SE",
76
+ // Swedish - Sweden
77
+ sw: "sw_KE",
78
+ // Swahili - Kenya
79
+ th: "th_TH",
80
+ // Thai - Thailand
81
+ tl: "tl_PH",
82
+ // Filipino/Tagalog - Philippines
83
+ tr: "tr_TR",
84
+ // Turkish - Türkiye
85
+ uk: "uk_UA",
86
+ // Ukrainian - Ukraine
87
+ ur: "ur_PK",
88
+ // Urdu - Pakistan
89
+ vi: "vi_VN",
90
+ // Vietnamese - Vietnam
91
+ zh: "zh_CN",
92
+ // Chinese (Simplified) - China
93
+ zh_hk: "zh_HK",
94
+ // Chinese (Traditional) - Hong Kong
95
+ zh_tw: "zh_TW"
96
+ // Chinese (Traditional) - Taiwan
97
+ };
98
+ return mapping[locale] || locale;
99
+ }
100
+
101
+ // src/lib/metadata.ts
102
+ import { getAssetsUrl } from "pelatform-ui";
103
+ function constructMetadata({
104
+ baseUrl,
105
+ title,
106
+ fullTitle,
107
+ description,
108
+ icons = [
109
+ {
110
+ rel: "apple-touch-icon",
111
+ sizes: "32x32",
112
+ url: getAssetsUrl("favicon/apple-touch-icon.png")
113
+ },
114
+ {
115
+ rel: "icon",
116
+ type: "image/png",
117
+ sizes: "32x32",
118
+ url: getAssetsUrl("favicon/favicon-32x32.png")
119
+ },
120
+ {
121
+ rel: "icon",
122
+ type: "image/png",
123
+ sizes: "16x16",
124
+ url: getAssetsUrl("favicon/favicon-16x16.png")
125
+ }
126
+ ],
127
+ image,
128
+ video,
129
+ url,
130
+ openGraph = {
131
+ type: "website",
132
+ locale: "en_US"
133
+ },
134
+ twitter = {},
135
+ canonicalUrl,
136
+ alternateLanguages,
137
+ noIndex = false,
138
+ noArchive = false,
139
+ noSnippet = false,
140
+ manifest
141
+ }) {
142
+ return {
143
+ metadataBase: baseUrl ? new URL(baseUrl) : void 0,
144
+ title: fullTitle || title,
145
+ description,
146
+ icons,
147
+ openGraph: {
148
+ title,
149
+ description,
150
+ type: openGraph.type ?? "website",
151
+ locale: mapLocale(openGraph.locale),
152
+ ...openGraph.name && {
153
+ siteName: openGraph.name
154
+ },
155
+ url,
156
+ ...image && {
157
+ images: image
158
+ },
159
+ ...video && {
160
+ videos: video
161
+ }
162
+ },
163
+ twitter: {
164
+ title,
165
+ description,
166
+ ...image && {
167
+ card: "summary_large_image",
168
+ images: [image]
169
+ },
170
+ ...video && {
171
+ player: video
172
+ },
173
+ ...twitter.site && {
174
+ site: twitter.site
175
+ },
176
+ ...twitter.creator && {
177
+ creator: twitter.creator
178
+ }
179
+ },
180
+ ...(url || canonicalUrl || alternateLanguages) && {
181
+ alternates: {
182
+ ...url || canonicalUrl ? { canonical: url || canonicalUrl } : {},
183
+ ...alternateLanguages ? { languages: alternateLanguages } : {}
184
+ }
185
+ },
186
+ ...(noIndex || noArchive || noSnippet) && {
187
+ robots: {
188
+ ...noIndex ? { index: false, follow: false } : {},
189
+ ...noArchive ? { noarchive: true } : {},
190
+ ...noSnippet ? { nosnippet: true } : {}
191
+ }
192
+ },
193
+ ...manifest && {
194
+ manifest
195
+ },
196
+ creator: "lukmanaviccena"
197
+ };
198
+ }
199
+
1
200
  // src/lib/social-providers.ts
2
201
  import { Icons } from "pelatform-ui";
3
202
  var socialProviders = [
@@ -113,5 +312,7 @@ var socialProviders = [
113
312
  }
114
313
  ];
115
314
  export {
315
+ constructMetadata,
316
+ mapLocale,
116
317
  socialProviders
117
318
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pelatform/starter.shared",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "A part of SaaS starter kit for Pelatform applications.",
5
5
  "author": "Pelatform",
6
6
  "license": "MIT",
@@ -39,12 +39,12 @@
39
39
  "@tanstack/react-query-devtools": "^5.91.1"
40
40
  },
41
41
  "devDependencies": {
42
- "@pelatform/starter.config": "0.2.0",
43
- "@pelatform/starter.hook": "0.2.0",
44
- "@pelatform/starter.utils": "0.2.0",
42
+ "@pelatform/starter.config": "0.2.1",
43
+ "@pelatform/starter.hook": "0.2.1",
44
+ "@pelatform/starter.utils": "0.2.1",
45
45
  "@pelatform/tsconfig": "^0.1.3",
46
46
  "@types/react": "^19.2.7",
47
- "lucide-react": "^0.556.0",
47
+ "lucide-react": "^0.557.0",
48
48
  "next": "^16.0.8",
49
49
  "next-intl": "^4.5.8",
50
50
  "pelatform-ui": "^1.1.3",
@@ -53,9 +53,9 @@
53
53
  "tsup": "^8.5.1"
54
54
  },
55
55
  "peerDependencies": {
56
- "@pelatform/starter.config": ">=0.1.0",
57
- "@pelatform/starter.hook": ">=0.1.0",
58
- "@pelatform/starter.utils": ">=0.1.0",
56
+ "@pelatform/starter.config": ">=0.2.0",
57
+ "@pelatform/starter.hook": ">=0.2.0",
58
+ "@pelatform/starter.utils": ">=0.2.0",
59
59
  "lucide-react": ">=0.55.0",
60
60
  "next": ">=16.0.0",
61
61
  "next-intl": ">=4.5.0",