@campxdev/react-native-blueprint 0.1.20 → 0.1.24

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 (126) hide show
  1. package/global.css +3 -3
  2. package/lib/global.css +1 -1
  3. package/lib/module/assets/icons/Image.png +0 -0
  4. package/lib/module/components/DataDisplay/Avatar/Avatar.js +1 -1
  5. package/lib/module/components/DataDisplay/Avatar/Avatar.js.map +1 -1
  6. package/lib/module/components/DataDisplay/Banner/Banner.figma.js +17 -3
  7. package/lib/module/components/DataDisplay/Banner/Banner.figma.js.map +1 -1
  8. package/lib/module/components/DataDisplay/Banner/Banner.js +138 -34
  9. package/lib/module/components/DataDisplay/Banner/Banner.js.map +1 -1
  10. package/lib/module/components/DataDisplay/CalendarItem/CalendarItem.js +2 -2
  11. package/lib/module/components/DataDisplay/CalendarItem/CalendarItem.js.map +1 -1
  12. package/lib/module/components/DataDisplay/Card/Card.figma.js +11 -4
  13. package/lib/module/components/DataDisplay/Card/Card.figma.js.map +1 -1
  14. package/lib/module/components/DataDisplay/Card/Card.js +119 -65
  15. package/lib/module/components/DataDisplay/Card/Card.js.map +1 -1
  16. package/lib/module/components/DataDisplay/ChatBubble/ChatBubble.figma.js +54 -0
  17. package/lib/module/components/DataDisplay/ChatBubble/ChatBubble.figma.js.map +1 -0
  18. package/lib/module/components/DataDisplay/ChatBubble/ChatBubble.js +318 -0
  19. package/lib/module/components/DataDisplay/ChatBubble/ChatBubble.js.map +1 -0
  20. package/lib/module/components/DataDisplay/ChatBubble/index.js +4 -0
  21. package/lib/module/components/DataDisplay/ChatBubble/index.js.map +1 -0
  22. package/lib/module/components/DataDisplay/FeedCard/AttachmentDetails.js +69 -0
  23. package/lib/module/components/DataDisplay/FeedCard/AttachmentDetails.js.map +1 -0
  24. package/lib/module/components/DataDisplay/FeedCard/FeedCard.figma.js +19 -17
  25. package/lib/module/components/DataDisplay/FeedCard/FeedCard.figma.js.map +1 -1
  26. package/lib/module/components/DataDisplay/FeedCard/FeedCard.js +30 -19
  27. package/lib/module/components/DataDisplay/FeedCard/FeedCard.js.map +1 -1
  28. package/lib/module/components/DataDisplay/Greeting/Greeting.figma.js +5 -5
  29. package/lib/module/components/DataDisplay/Greeting/Greeting.figma.js.map +1 -1
  30. package/lib/module/components/DataDisplay/Greeting/Greeting.js +46 -70
  31. package/lib/module/components/DataDisplay/Greeting/Greeting.js.map +1 -1
  32. package/lib/module/components/DataDisplay/ProfileCard/ProfileCard.figma.js +16 -0
  33. package/lib/module/components/DataDisplay/ProfileCard/ProfileCard.figma.js.map +1 -0
  34. package/lib/module/components/DataDisplay/ProfileCard/ProfileCard.js +111 -0
  35. package/lib/module/components/DataDisplay/ProfileCard/ProfileCard.js.map +1 -0
  36. package/lib/module/components/DataDisplay/ProfileCard/index.js +4 -0
  37. package/lib/module/components/DataDisplay/ProfileCard/index.js.map +1 -0
  38. package/lib/module/components/Input/Button/Button.js +11 -9
  39. package/lib/module/components/Input/Button/Button.js.map +1 -1
  40. package/lib/module/components/Navigation/Appbar/AppBar.figma.js +18 -6
  41. package/lib/module/components/Navigation/Appbar/AppBar.figma.js.map +1 -1
  42. package/lib/module/components/Navigation/Appbar/AppBar.js +36 -9
  43. package/lib/module/components/Navigation/Appbar/AppBar.js.map +1 -1
  44. package/lib/module/components/Navigation/Popover/Popover.js +1 -1
  45. package/lib/module/components/Navigation/Popover/Popover.js.map +1 -1
  46. package/lib/module/components/ui/index.js +2 -0
  47. package/lib/module/components/ui/index.js.map +1 -1
  48. package/lib/module/lib/theme.js +2 -2
  49. package/lib/module/patterns/pattern-components/AccountPattern/AccountPattern.figma.js +196 -0
  50. package/lib/module/patterns/pattern-components/AccountPattern/AccountPattern.figma.js.map +1 -0
  51. package/lib/module/patterns/pattern-components/AccountPattern/AccountPattern.js +255 -0
  52. package/lib/module/patterns/pattern-components/AccountPattern/AccountPattern.js.map +1 -0
  53. package/lib/module/patterns/pattern-components/AccountPattern/index.js +4 -0
  54. package/lib/module/patterns/pattern-components/AccountPattern/index.js.map +1 -0
  55. package/lib/module/patterns/pattern-components/CalendarPattern/CalendarPattern.figma.js +1 -1
  56. package/lib/module/patterns/pattern-components/CardListPattern/CardListPattern.js +2 -4
  57. package/lib/module/patterns/pattern-components/CardListPattern/CardListPattern.js.map +1 -1
  58. package/lib/module/patterns/pattern-components/FeedPattern/FeedPattern.figma.js +144 -0
  59. package/lib/module/patterns/pattern-components/FeedPattern/FeedPattern.figma.js.map +1 -0
  60. package/lib/module/patterns/pattern-components/FeedPattern/FeedPattern.js +213 -0
  61. package/lib/module/patterns/pattern-components/FeedPattern/FeedPattern.js.map +1 -0
  62. package/lib/module/patterns/pattern-components/FeedPattern/index.js +4 -0
  63. package/lib/module/patterns/pattern-components/FeedPattern/index.js.map +1 -0
  64. package/lib/module/patterns/pattern-components/HomeFacultyPattern/HomeFacultyPattern.figma.js +70 -0
  65. package/lib/module/patterns/pattern-components/HomeFacultyPattern/HomeFacultyPattern.figma.js.map +1 -0
  66. package/lib/module/patterns/pattern-components/HomeFacultyPattern/HomeFacultyPattern.js +260 -0
  67. package/lib/module/patterns/pattern-components/HomeFacultyPattern/HomeFacultyPattern.js.map +1 -0
  68. package/lib/module/patterns/pattern-components/HomeFacultyPattern/index.js +4 -0
  69. package/lib/module/patterns/pattern-components/HomeFacultyPattern/index.js.map +1 -0
  70. package/lib/module/patterns/pattern-components/HomeParentPattern/HomeParentPattern.figma.js +82 -0
  71. package/lib/module/patterns/pattern-components/HomeParentPattern/HomeParentPattern.figma.js.map +1 -0
  72. package/lib/module/patterns/pattern-components/HomeParentPattern/HomeParentPattern.js +256 -0
  73. package/lib/module/patterns/pattern-components/HomeParentPattern/HomeParentPattern.js.map +1 -0
  74. package/lib/module/patterns/pattern-components/HomeParentPattern/index.js +4 -0
  75. package/lib/module/patterns/pattern-components/HomeParentPattern/index.js.map +1 -0
  76. package/lib/module/patterns/pattern-components/HomeStudentPattern/HomeStudentPattern.figma.js +73 -0
  77. package/lib/module/patterns/pattern-components/HomeStudentPattern/HomeStudentPattern.figma.js.map +1 -0
  78. package/lib/module/patterns/pattern-components/HomeStudentPattern/HomeStudentPattern.js +283 -0
  79. package/lib/module/patterns/pattern-components/HomeStudentPattern/HomeStudentPattern.js.map +1 -0
  80. package/lib/module/patterns/pattern-components/HomeStudentPattern/index.js +4 -0
  81. package/lib/module/patterns/pattern-components/HomeStudentPattern/index.js.map +1 -0
  82. package/lib/module/patterns/pattern-components/index.js +5 -0
  83. package/lib/module/patterns/pattern-components/index.js.map +1 -1
  84. package/package.json +27 -1
  85. package/src/assets/icons/Image.png +0 -0
  86. package/src/components/DataDisplay/Avatar/Avatar.tsx +24 -21
  87. package/src/components/DataDisplay/Banner/Banner.figma.tsx +18 -3
  88. package/src/components/DataDisplay/Banner/Banner.tsx +153 -26
  89. package/src/components/DataDisplay/CalendarItem/CalendarItem.tsx +2 -2
  90. package/src/components/DataDisplay/Card/Card.figma.tsx +7 -3
  91. package/src/components/DataDisplay/Card/Card.tsx +152 -101
  92. package/src/components/DataDisplay/ChatBubble/ChatBubble.figma.tsx +54 -0
  93. package/src/components/DataDisplay/ChatBubble/ChatBubble.tsx +404 -0
  94. package/src/components/DataDisplay/ChatBubble/index.ts +8 -0
  95. package/src/components/DataDisplay/FeedCard/AttachmentDetails.tsx +96 -0
  96. package/src/components/DataDisplay/FeedCard/FeedCard.figma.tsx +17 -15
  97. package/src/components/DataDisplay/FeedCard/FeedCard.tsx +66 -35
  98. package/src/components/DataDisplay/Greeting/Greeting.figma.tsx +5 -5
  99. package/src/components/DataDisplay/Greeting/Greeting.tsx +58 -96
  100. package/src/components/DataDisplay/ProfileCard/ProfileCard.figma.tsx +17 -0
  101. package/src/components/DataDisplay/ProfileCard/ProfileCard.tsx +173 -0
  102. package/src/components/DataDisplay/ProfileCard/index.ts +1 -0
  103. package/src/components/Input/Button/Button.tsx +18 -10
  104. package/src/components/Navigation/Appbar/AppBar.figma.tsx +18 -6
  105. package/src/components/Navigation/Appbar/AppBar.tsx +58 -13
  106. package/src/components/Navigation/Popover/Popover.tsx +3 -3
  107. package/src/components/ui/index.ts +2 -0
  108. package/src/lib/theme.ts +2 -2
  109. package/src/patterns/pattern-components/AccountPattern/AccountPattern.figma.tsx +193 -0
  110. package/src/patterns/pattern-components/AccountPattern/AccountPattern.tsx +301 -0
  111. package/src/patterns/pattern-components/AccountPattern/index.ts +1 -0
  112. package/src/patterns/pattern-components/CalendarPattern/CalendarPattern.figma.tsx +1 -1
  113. package/src/patterns/pattern-components/CardListPattern/CardListPattern.tsx +4 -9
  114. package/src/patterns/pattern-components/FeedPattern/FeedPattern.figma.tsx +146 -0
  115. package/src/patterns/pattern-components/FeedPattern/FeedPattern.tsx +264 -0
  116. package/src/patterns/pattern-components/FeedPattern/index.ts +2 -0
  117. package/src/patterns/pattern-components/HomeFacultyPattern/HomeFacultyPattern.figma.tsx +66 -0
  118. package/src/patterns/pattern-components/HomeFacultyPattern/HomeFacultyPattern.tsx +326 -0
  119. package/src/patterns/pattern-components/HomeFacultyPattern/index.ts +2 -0
  120. package/src/patterns/pattern-components/HomeParentPattern/HomeParentPattern.figma.tsx +75 -0
  121. package/src/patterns/pattern-components/HomeParentPattern/HomeParentPattern.tsx +328 -0
  122. package/src/patterns/pattern-components/HomeParentPattern/index.ts +2 -0
  123. package/src/patterns/pattern-components/HomeStudentPattern/HomeStudentPattern.figma.tsx +66 -0
  124. package/src/patterns/pattern-components/HomeStudentPattern/HomeStudentPattern.tsx +355 -0
  125. package/src/patterns/pattern-components/HomeStudentPattern/index.ts +2 -0
  126. package/src/patterns/pattern-components/index.ts +5 -0
@@ -0,0 +1,355 @@
1
+ // @ts-nocheck
2
+ import { View, ScrollView, type StyleProp, type ViewStyle } from 'react-native';
3
+
4
+ import { Greeting } from '../../../components/DataDisplay/Greeting/Greeting';
5
+ import { Banner } from '../../../components/DataDisplay/Banner/Banner';
6
+ import { Card } from '../../../components/DataDisplay/Card/Card';
7
+ import { FeedCard } from '../../../components/DataDisplay/FeedCard/FeedCard';
8
+ import { Text } from '../../../components/Input/Text/Text';
9
+ import { Button } from '../../../components/Input/Button/Button';
10
+
11
+ /* ============================================================================
12
+ * Types
13
+ * ============================================================================ */
14
+
15
+ export type HomeStudentPatternProps = {
16
+ // Header section
17
+ showGreeting?: boolean;
18
+ greetingUserName?: string;
19
+ greetingText?: string;
20
+ greetingSubtitle?: string;
21
+ showScheduleButton?: boolean;
22
+ onSchedulePress?: () => void;
23
+
24
+ // Action Center section
25
+ showActionCenter?: boolean;
26
+ actionCenterTitle?: string;
27
+ actionCenterSubtitle?: string;
28
+ actionCenterItems?: string[];
29
+
30
+ // Next Class section
31
+ showNextClass?: boolean;
32
+ nextClassTitle?: string;
33
+ nextClassTime?: string;
34
+ showCourseButton?: boolean;
35
+ showResourcesButton?: boolean;
36
+
37
+ // Quick Access section
38
+ showQuickAccess?: boolean;
39
+ quickAccessItems?: Array<{
40
+ title: string;
41
+ subtitle: string;
42
+ }>;
43
+
44
+ // Campus Life section
45
+ showCampusLife?: boolean;
46
+
47
+ // Mentor section
48
+ showMentor?: boolean;
49
+ mentorName?: string;
50
+ mentorTitle?: string;
51
+
52
+ // Announcements section
53
+ showAnnouncements?: boolean;
54
+ announcementTitle?: string;
55
+ announcementAuthor?: string;
56
+ announcementContent?: string;
57
+
58
+ // Styling
59
+ style?: StyleProp<ViewStyle>;
60
+ testID?: string;
61
+ className?: never;
62
+ };
63
+
64
+ /* ============================================================================
65
+ * Component
66
+ * ============================================================================ */
67
+
68
+ /**
69
+ * HomeStudentPattern Component
70
+ *
71
+ * A comprehensive student home screen layout pattern that displays:
72
+ * - Personalized greeting with schedule quick access
73
+ * - Action center for pending items
74
+ * - Next class preparation section
75
+ * - Quick access dashboard (Attendance, Payments, Scores, Services)
76
+ * - Campus life shortcuts (Clubs, Events)
77
+ * - Mentor information
78
+ * - Announcements feed
79
+ *
80
+ * @example
81
+ * ```tsx
82
+ * <HomeStudentPattern
83
+ * showGreeting={true}
84
+ * showActionCenter={true}
85
+ * showNextClass={true}
86
+ * showQuickAccess={true}
87
+ * showAnnouncements={true}
88
+ * />
89
+ * ```
90
+ */
91
+ export function HomeStudentPattern({
92
+ // Header section
93
+ showGreeting = true,
94
+ greetingUserName = 'Marshall',
95
+ greetingText = 'Good Morning',
96
+ greetingSubtitle = 'You have 3 Classes today',
97
+ _showScheduleButton = true,
98
+ onSchedulePress,
99
+
100
+ // Action Center section
101
+ showActionCenter = true,
102
+ actionCenterTitle = 'Action Center',
103
+ actionCenterSubtitle = 'Actions that need your attention',
104
+ actionCenterItems = ['Fee Due', 'Feedback Submission Pending'],
105
+
106
+ // Next Class section
107
+ showNextClass = true,
108
+ nextClassTitle = 'Microprocessors Lab',
109
+ nextClassTime = '10:00 AM - 11:00 AM',
110
+ showCourseButton = true,
111
+ showResourcesButton = true,
112
+
113
+ // Quick Access section
114
+ showQuickAccess = true,
115
+ quickAccessItems = [
116
+ { title: 'Attendance', subtitle: '84.6 %' },
117
+ { title: 'Payments', subtitle: 'No Dues' },
118
+ { title: 'Exam Scores', subtitle: 'CGPA : 7.2' },
119
+ { title: 'Services', subtitle: '1 Active' },
120
+ ],
121
+
122
+ // Campus Life section
123
+ showCampusLife = true,
124
+
125
+ // Mentor section
126
+ showMentor = true,
127
+ mentorName = 'Dr. Dre',
128
+ mentorTitle = 'Professor, CSE Department',
129
+
130
+ // Announcements section
131
+ showAnnouncements = true,
132
+ announcementTitle = 'Examination Timetable Out',
133
+ announcementAuthor = 'CSE HOD',
134
+ announcementContent = 'Examination Timetable has been updated and Published. Students are requested to register before 24th of this Month.',
135
+
136
+ // Styling
137
+ style,
138
+ testID,
139
+ }: HomeStudentPatternProps) {
140
+ return (
141
+ <ScrollView
142
+ testID={testID ?? 'home-student-pattern'}
143
+ style={style}
144
+ className="flex-1 bg-surface-page"
145
+ showsVerticalScrollIndicator={false}
146
+ >
147
+ <View className="gap-8 py-5 px-5">
148
+ {/* Header Section: Greeting */}
149
+ {showGreeting && (
150
+ <View className="gap-4">
151
+ <Greeting
152
+ userName={greetingUserName}
153
+ greetingText={greetingText}
154
+ subtitle={greetingSubtitle}
155
+ ctaLayout="icon"
156
+ showNextUp={false}
157
+ onSchedulePress={onSchedulePress}
158
+ />
159
+ </View>
160
+ )}
161
+
162
+ {/* Action Center Section */}
163
+ {showActionCenter && (
164
+ <View className="gap-4">
165
+ <Banner
166
+ style="solid"
167
+ title={actionCenterTitle}
168
+ subtitle={actionCenterSubtitle}
169
+ showBadge={true}
170
+ badge1Text={`${actionCenterItems.length}`}
171
+ actionItem1={actionCenterItems[0] || 'Fee Due'}
172
+ showActionItem2={actionCenterItems.length > 1}
173
+ actionItem2={
174
+ actionCenterItems[1] || 'Feedback Submission Pending'
175
+ }
176
+ showMoreLabel={actionCenterItems.length > 2}
177
+ moreLabel={`+ ${actionCenterItems.length - 2} more`}
178
+ showActionItems={true}
179
+ showTrailing={true}
180
+ />
181
+ </View>
182
+ )}
183
+
184
+ {/* Next Class Section */}
185
+ {showNextClass && (
186
+ <View className="gap-2">
187
+ <Text className="text-sm font-semibold text-text-secondary px-5">
188
+ Prep for Next Class
189
+ </Text>
190
+
191
+ <View className="gap-2 px-5">
192
+ <Card
193
+ size="lg"
194
+ title={nextClassTitle}
195
+ subtitle={nextClassTime}
196
+ showSubtitle={true}
197
+ showMedia={false}
198
+ showLeading={false}
199
+ showBadges={false}
200
+ showFooterActions={false}
201
+ />
202
+
203
+ <View className="flex-row gap-2">
204
+ {showCourseButton && (
205
+ <Button variant="default" size="default" className="flex-1">
206
+ Open Course
207
+ </Button>
208
+ )}
209
+ {showResourcesButton && (
210
+ <Button variant="secondary" size="default" className="flex-1">
211
+ Resources
212
+ </Button>
213
+ )}
214
+ </View>
215
+
216
+ <Text className="text-center text-sm font-semibold text-text-primary py-3">
217
+ View All Courses →
218
+ </Text>
219
+ </View>
220
+ </View>
221
+ )}
222
+
223
+ {/* Quick Access Section */}
224
+ {showQuickAccess && (
225
+ <View className="gap-2">
226
+ <Text className="text-sm font-semibold text-text-secondary px-5">
227
+ Quick Access
228
+ </Text>
229
+
230
+ <View className="flex-row flex-wrap gap-2 px-5 justify-between">
231
+ {quickAccessItems.map((item, index) => (
232
+ <View key={index} style={{ width: '48%' }}>
233
+ <Card
234
+ size="sm"
235
+ title={item.title}
236
+ subtitle={item.subtitle}
237
+ showSubtitle={true}
238
+ showMedia={false}
239
+ showLeading={true}
240
+ showBadges={false}
241
+ showFooterActions={false}
242
+ leadingType="avatar"
243
+ avatarInitials={item.title.slice(0, 2).toUpperCase()}
244
+ />
245
+ </View>
246
+ ))}
247
+ </View>
248
+ </View>
249
+ )}
250
+
251
+ {/* Campus Life Section */}
252
+ {showCampusLife && (
253
+ <View className="gap-2">
254
+ <Text className="text-sm font-semibold text-text-secondary px-5">
255
+ Campus Life
256
+ </Text>
257
+
258
+ <View className="flex-row gap-2 px-5">
259
+ <View style={{ flex: 1 }}>
260
+ <Card
261
+ size="sm"
262
+ title="Clubs"
263
+ subtitle="22 Clubs Available"
264
+ showSubtitle={true}
265
+ showMedia={false}
266
+ showLeading={true}
267
+ showBadges={false}
268
+ showFooterActions={false}
269
+ leadingType="avatar"
270
+ avatarInitials="CL"
271
+ />
272
+ </View>
273
+
274
+ <View style={{ flex: 1 }}>
275
+ <Card
276
+ size="sm"
277
+ title="Events"
278
+ subtitle="2 New Events"
279
+ showSubtitle={true}
280
+ showMedia={false}
281
+ showLeading={true}
282
+ showBadges={false}
283
+ showFooterActions={false}
284
+ leadingType="avatar"
285
+ avatarInitials="EV"
286
+ />
287
+ </View>
288
+ </View>
289
+ </View>
290
+ )}
291
+
292
+ {/* Mentor Section */}
293
+ {showMentor && (
294
+ <View className="gap-2">
295
+ <Text className="text-sm font-semibold text-text-secondary px-5">
296
+ Mentor
297
+ </Text>
298
+
299
+ <View className="px-5">
300
+ <Card
301
+ size="sm"
302
+ title={mentorName}
303
+ subtitle={mentorTitle}
304
+ showSubtitle={true}
305
+ showMedia={false}
306
+ showLeading={true}
307
+ showBadges={false}
308
+ showFooterActions={false}
309
+ leadingType="avatar"
310
+ avatarInitials={mentorName.slice(0, 2).toUpperCase()}
311
+ />
312
+ </View>
313
+ </View>
314
+ )}
315
+
316
+ {/* Announcements Section */}
317
+ {showAnnouncements && (
318
+ <View className="gap-2">
319
+ <View className="flex-row justify-between items-center px-5">
320
+ <Text className="text-sm font-semibold text-text-secondary">
321
+ Announcements
322
+ </Text>
323
+ <Text className="text-xs">→</Text>
324
+ </View>
325
+
326
+ <View className="px-5">
327
+ <FeedCard
328
+ type="announcement"
329
+ authorName={announcementAuthor}
330
+ postTitle={announcementTitle}
331
+ postContent={announcementContent}
332
+ showMedia={true}
333
+ showHeader={true}
334
+ showPostContent={true}
335
+ showBody={true}
336
+ showFooterActions={true}
337
+ showLeading={true}
338
+ showSubtitle={false}
339
+ showBadges={false}
340
+ showSecondaryButton={false}
341
+ />
342
+ </View>
343
+ </View>
344
+ )}
345
+
346
+ {/* Bottom Spacer */}
347
+ <View style={{ height: 96 }} />
348
+ </View>
349
+ </ScrollView>
350
+ );
351
+ }
352
+
353
+ HomeStudentPattern.displayName = 'HomeStudentPattern';
354
+
355
+ export type { HomeStudentPatternProps };
@@ -0,0 +1,2 @@
1
+ export { HomeStudentPattern } from './HomeStudentPattern';
2
+ export type { HomeStudentPatternProps } from './HomeStudentPattern';
@@ -14,3 +14,8 @@ export * from './EntityPatternStructured';
14
14
  export * from './EntityPatternGuided';
15
15
  export * from './CalendarPattern';
16
16
  export * from './MonthlyCalendarPattern';
17
+ export * from './HomeStudentPattern';
18
+ export * from './HomeFacultyPattern';
19
+ export * from './HomeParentPattern';
20
+ export * from './FeedPattern';
21
+ export * from './AccountPattern';