@prosophia/personal-portfolio 0.0.2 → 0.0.4

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,424 @@
1
+ // src/schemas/profile.ts
2
+ var profile = {
3
+ name: "profile",
4
+ title: "Profile",
5
+ type: "document",
6
+ fields: [
7
+ {
8
+ name: "name",
9
+ title: "Name",
10
+ type: "string",
11
+ validation: (Rule) => Rule.required()
12
+ },
13
+ {
14
+ name: "title",
15
+ title: "Title",
16
+ type: "string",
17
+ description: 'e.g., "PhD Candidate", "Software Engineer"'
18
+ },
19
+ {
20
+ name: "institution",
21
+ title: "Institution",
22
+ type: "string",
23
+ description: 'e.g., "MIT", "Google"'
24
+ },
25
+ {
26
+ name: "profileImage",
27
+ title: "Profile Image",
28
+ type: "image",
29
+ options: {
30
+ hotspot: true
31
+ }
32
+ },
33
+ {
34
+ name: "headline",
35
+ title: "Headline",
36
+ type: "object",
37
+ fields: [
38
+ { name: "beforeHighlight", title: "Text Before Highlight", type: "string" },
39
+ { name: "highlight", title: "Highlighted Text", type: "string" },
40
+ { name: "afterHighlight", title: "Text After Highlight", type: "string" }
41
+ ]
42
+ },
43
+ {
44
+ name: "bio",
45
+ title: "Bio",
46
+ type: "array",
47
+ of: [{ type: "block" }]
48
+ },
49
+ {
50
+ name: "availabilityBadge",
51
+ title: "Availability Badge",
52
+ type: "string",
53
+ description: 'e.g., "Available for 2024 Roles"'
54
+ }
55
+ ]
56
+ };
57
+
58
+ // src/schemas/siteSettings.ts
59
+ var siteSettings = {
60
+ name: "siteSettings",
61
+ title: "Site Settings",
62
+ type: "document",
63
+ fields: [
64
+ {
65
+ name: "resumeUrl",
66
+ title: "Resume URL",
67
+ type: "url",
68
+ description: "Link to your resume/CV"
69
+ },
70
+ {
71
+ name: "contactEmail",
72
+ title: "Contact Email",
73
+ type: "string"
74
+ },
75
+ {
76
+ name: "footerText",
77
+ title: "Footer Text",
78
+ type: "string",
79
+ description: "Custom footer text"
80
+ },
81
+ {
82
+ name: "socialLinks",
83
+ title: "Social Links",
84
+ type: "object",
85
+ fields: [
86
+ { name: "twitter", title: "Twitter URL", type: "url" },
87
+ { name: "linkedin", title: "LinkedIn URL", type: "url" },
88
+ { name: "github", title: "GitHub URL", type: "url" },
89
+ { name: "googleScholar", title: "Google Scholar URL", type: "url" }
90
+ ]
91
+ },
92
+ {
93
+ name: "themeColor",
94
+ title: "Theme Color",
95
+ type: "object",
96
+ fields: [
97
+ {
98
+ name: "preset",
99
+ title: "Color Preset",
100
+ type: "string",
101
+ options: {
102
+ list: [
103
+ { title: "Violet", value: "violet" },
104
+ { title: "Blue", value: "blue" },
105
+ { title: "Emerald", value: "emerald" },
106
+ { title: "Rose", value: "rose" },
107
+ { title: "Amber", value: "amber" },
108
+ { title: "Cyan", value: "cyan" },
109
+ { title: "Custom", value: "custom" }
110
+ ]
111
+ }
112
+ },
113
+ {
114
+ name: "customColor",
115
+ title: "Custom Color",
116
+ type: "string",
117
+ description: "Hex color code (e.g., #8b5cf6)"
118
+ }
119
+ ]
120
+ },
121
+ {
122
+ name: "fontFamily",
123
+ title: "Font Family",
124
+ type: "object",
125
+ fields: [
126
+ {
127
+ name: "heading",
128
+ title: "Heading Font",
129
+ type: "string",
130
+ options: {
131
+ list: [
132
+ { title: "Inter", value: "inter" },
133
+ { title: "Roboto", value: "roboto" },
134
+ { title: "Poppins", value: "poppins" },
135
+ { title: "Montserrat", value: "montserrat" },
136
+ { title: "Playfair Display", value: "playfair-display" }
137
+ ]
138
+ }
139
+ },
140
+ {
141
+ name: "body",
142
+ title: "Body Font",
143
+ type: "string",
144
+ options: {
145
+ list: [
146
+ { title: "Inter", value: "inter" },
147
+ { title: "Roboto", value: "roboto" },
148
+ { title: "Open Sans", value: "open-sans" },
149
+ { title: "Lato", value: "lato" },
150
+ { title: "Source Sans Pro", value: "source-sans-pro" }
151
+ ]
152
+ }
153
+ }
154
+ ]
155
+ }
156
+ ]
157
+ };
158
+
159
+ // src/schemas/update.ts
160
+ var update = {
161
+ name: "update",
162
+ title: "Update",
163
+ type: "document",
164
+ fields: [
165
+ {
166
+ name: "title",
167
+ title: "Title",
168
+ type: "string",
169
+ validation: (Rule) => Rule.required()
170
+ },
171
+ {
172
+ name: "date",
173
+ title: "Date",
174
+ type: "date",
175
+ validation: (Rule) => Rule.required()
176
+ },
177
+ {
178
+ name: "description",
179
+ title: "Description",
180
+ type: "text"
181
+ }
182
+ ],
183
+ orderings: [
184
+ {
185
+ title: "Date, Newest",
186
+ name: "dateDesc",
187
+ by: [{ field: "date", direction: "desc" }]
188
+ }
189
+ ]
190
+ };
191
+
192
+ // src/schemas/experience.ts
193
+ var experience = {
194
+ name: "experience",
195
+ title: "Experience",
196
+ type: "document",
197
+ fields: [
198
+ {
199
+ name: "title",
200
+ title: "Title/Role",
201
+ type: "string",
202
+ validation: (Rule) => Rule.required()
203
+ },
204
+ {
205
+ name: "organization",
206
+ title: "Organization",
207
+ type: "string",
208
+ validation: (Rule) => Rule.required()
209
+ },
210
+ {
211
+ name: "period",
212
+ title: "Period",
213
+ type: "string",
214
+ description: 'e.g., "2021 - Present" or "Summer 2023"'
215
+ },
216
+ {
217
+ name: "description",
218
+ title: "Description",
219
+ type: "text"
220
+ },
221
+ {
222
+ name: "isCurrent",
223
+ title: "Is Current Position",
224
+ type: "boolean",
225
+ initialValue: false
226
+ },
227
+ {
228
+ name: "type",
229
+ title: "Type",
230
+ type: "string",
231
+ options: {
232
+ list: [
233
+ { title: "Education", value: "education" },
234
+ { title: "Work", value: "work" },
235
+ { title: "Internship", value: "internship" },
236
+ { title: "Research", value: "research" }
237
+ ]
238
+ }
239
+ },
240
+ {
241
+ name: "order",
242
+ title: "Display Order",
243
+ type: "number",
244
+ description: "Lower numbers appear first"
245
+ }
246
+ ],
247
+ orderings: [
248
+ {
249
+ title: "Order",
250
+ name: "orderAsc",
251
+ by: [{ field: "order", direction: "asc" }]
252
+ }
253
+ ]
254
+ };
255
+
256
+ // src/schemas/project.ts
257
+ var project = {
258
+ name: "project",
259
+ title: "Project",
260
+ type: "document",
261
+ fields: [
262
+ {
263
+ name: "title",
264
+ title: "Title",
265
+ type: "string",
266
+ validation: (Rule) => Rule.required()
267
+ },
268
+ {
269
+ name: "slug",
270
+ title: "Slug",
271
+ type: "slug",
272
+ options: {
273
+ source: "title",
274
+ maxLength: 96
275
+ }
276
+ },
277
+ {
278
+ name: "shortDescription",
279
+ title: "Short Description",
280
+ type: "text",
281
+ description: "Brief description shown in project cards"
282
+ },
283
+ {
284
+ name: "description",
285
+ title: "Full Description",
286
+ type: "array",
287
+ of: [{ type: "block" }]
288
+ },
289
+ {
290
+ name: "image",
291
+ title: "Cover Image",
292
+ type: "image",
293
+ options: {
294
+ hotspot: true
295
+ }
296
+ },
297
+ {
298
+ name: "tags",
299
+ title: "Tags",
300
+ type: "array",
301
+ of: [{ type: "string" }],
302
+ options: {
303
+ layout: "tags"
304
+ }
305
+ },
306
+ {
307
+ name: "link",
308
+ title: "Project Link",
309
+ type: "url"
310
+ },
311
+ {
312
+ name: "github",
313
+ title: "GitHub URL",
314
+ type: "url"
315
+ },
316
+ {
317
+ name: "order",
318
+ title: "Display Order",
319
+ type: "number"
320
+ }
321
+ ],
322
+ orderings: [
323
+ {
324
+ title: "Order",
325
+ name: "orderAsc",
326
+ by: [{ field: "order", direction: "asc" }]
327
+ }
328
+ ]
329
+ };
330
+
331
+ // src/schemas/publication.ts
332
+ var publication = {
333
+ name: "publication",
334
+ title: "Publication",
335
+ type: "document",
336
+ fields: [
337
+ {
338
+ name: "title",
339
+ title: "Title",
340
+ type: "string",
341
+ validation: (Rule) => Rule.required()
342
+ },
343
+ {
344
+ name: "authors",
345
+ title: "Authors",
346
+ type: "array",
347
+ of: [
348
+ {
349
+ type: "object",
350
+ fields: [
351
+ { name: "name", title: "Name", type: "string" },
352
+ { name: "isMe", title: "Is Me", type: "boolean", initialValue: false }
353
+ ]
354
+ }
355
+ ]
356
+ },
357
+ {
358
+ name: "venue",
359
+ title: "Venue",
360
+ type: "string",
361
+ description: 'e.g., "CVPR 2024", "NeurIPS 2023"'
362
+ },
363
+ {
364
+ name: "year",
365
+ title: "Year",
366
+ type: "string"
367
+ },
368
+ {
369
+ name: "highlight",
370
+ title: "Highlight",
371
+ type: "string",
372
+ description: 'e.g., "Oral Presentation", "Best Paper Award"'
373
+ },
374
+ {
375
+ name: "pdfUrl",
376
+ title: "PDF URL",
377
+ type: "url"
378
+ },
379
+ {
380
+ name: "pdfFile",
381
+ title: "PDF File",
382
+ type: "file",
383
+ options: {
384
+ accept: ".pdf"
385
+ }
386
+ },
387
+ {
388
+ name: "codeUrl",
389
+ title: "Code URL",
390
+ type: "url"
391
+ },
392
+ {
393
+ name: "order",
394
+ title: "Display Order",
395
+ type: "number"
396
+ }
397
+ ],
398
+ orderings: [
399
+ {
400
+ title: "Year, Newest",
401
+ name: "yearDesc",
402
+ by: [{ field: "year", direction: "desc" }]
403
+ }
404
+ ]
405
+ };
406
+
407
+ // src/schemas/index.ts
408
+ var schemas = [
409
+ profile,
410
+ siteSettings,
411
+ update,
412
+ experience,
413
+ project,
414
+ publication
415
+ ];
416
+ export {
417
+ experience,
418
+ profile,
419
+ project,
420
+ publication,
421
+ schemas,
422
+ siteSettings,
423
+ update
424
+ };
@@ -0,0 +1 @@
1
+ /* Global styles */
package/package.json CHANGED
@@ -1,32 +1,44 @@
1
1
  {
2
2
  "name": "@prosophia/personal-portfolio",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "description": "Personal portfolio template for Prosophia",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
7
7
  "types": "./dist/index.d.ts",
8
8
  "exports": {
9
9
  ".": {
10
+ "types": "./dist/index.d.ts",
10
11
  "import": "./dist/index.mjs",
11
- "require": "./dist/index.js",
12
- "types": "./dist/index.d.ts"
12
+ "require": "./dist/index.js"
13
13
  },
14
- "./styles": "./dist/styles/index.css"
14
+ "./schemas": {
15
+ "types": "./dist/schemas/index.d.ts",
16
+ "import": "./dist/schemas/index.mjs",
17
+ "require": "./dist/schemas/index.js"
18
+ },
19
+ "./layouts": {
20
+ "types": "./dist/layouts/index.d.ts",
21
+ "import": "./dist/layouts/index.mjs",
22
+ "require": "./dist/layouts/index.js"
23
+ },
24
+ "./styles": "./dist/styles/globals.css"
15
25
  },
16
- "files": [
17
- "dist"
18
- ],
26
+ "files": ["dist"],
19
27
  "scripts": {
20
28
  "build": "tsup",
21
29
  "dev": "tsup --watch",
22
30
  "lint": "eslint src/"
23
31
  },
24
32
  "peerDependencies": {
33
+ "@portabletext/react": ">=3.0.0",
34
+ "@sanity/image-url": ">=1.0.0",
35
+ "framer-motion": ">=10.0.0",
25
36
  "next": ">=14.0.0",
26
37
  "react": ">=18.0.0",
27
38
  "react-dom": ">=18.0.0"
28
39
  },
29
40
  "devDependencies": {
41
+ "@sanity/image-url": "^1.0.0",
30
42
  "@types/react": "^18.0.0",
31
43
  "@types/react-dom": "^18.0.0",
32
44
  "tsup": "^8.0.0",