@campxdev/react-native-blueprint 0.1.23 → 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 +77 -129
  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 +71 -157
  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,193 @@
1
+ import figma from '@figma/code-connect';
2
+ import { AccountPattern } from './AccountPattern';
3
+
4
+ const FIGMA_URL =
5
+ 'https://www.figma.com/design/YTb27Onq7Zk8OV16fHptxJ/Campx-App?node-id=417-194764';
6
+
7
+ /**
8
+ * AccountPattern - Account/Profile screen layout pattern
9
+ *
10
+ * Use cases:
11
+ * - User account and profile management screens
12
+ * - Settings and preferences pages
13
+ * - Account information dashboards
14
+ * - Categorized account options (Academics, Finance, Utilities)
15
+ *
16
+ * Features:
17
+ * - User profile card at the top with name and ID
18
+ * - Multiple grouped sections with data list items
19
+ * - Support for custom sections (Academics, Finance, Utilities, etc.)
20
+ * - Full customization of section items and properties
21
+ * - Scrollable layout for long content
22
+ * - All sections independently configurable
23
+ *
24
+ * Customization:
25
+ * - Show/hide profile card
26
+ * - Customize user profile information
27
+ * - Add, remove, or customize sections
28
+ * - Configure each item's visibility toggles and actions
29
+ * - Set up callbacks for profile and item interactions
30
+ * - Adapt content based on user role or backend data
31
+ */
32
+ figma.connect(AccountPattern, FIGMA_URL, {
33
+ example: () => (
34
+ <AccountPattern
35
+ showProfileCard={true}
36
+ userName="Marshall Mathers"
37
+ userID="3472732323"
38
+ avatarInitials="MM"
39
+ avatarType="image"
40
+ sections={[
41
+ {
42
+ id: 'academics',
43
+ title: 'Academics',
44
+ items: [
45
+ {
46
+ id: '1',
47
+ title: 'Data List Row Title',
48
+ subtitle: 'Data List Row Subtitle',
49
+ meta: 'Meta Content',
50
+ density: 'comfortable',
51
+ state: 'default',
52
+ showSubtitle: true,
53
+ showLeading: true,
54
+ showTrailing: true,
55
+ showDivider: true,
56
+ leadingImage: { uri: 'https://example.com/avatar.png' },
57
+ },
58
+ {
59
+ id: '2',
60
+ title: 'Data List Row Title',
61
+ subtitle: 'Data List Row Subtitle',
62
+ meta: 'Meta Content',
63
+ density: 'comfortable',
64
+ state: 'default',
65
+ showSubtitle: true,
66
+ showLeading: true,
67
+ showTrailing: true,
68
+ showDivider: true,
69
+ leadingImage: { uri: 'https://example.com/avatar.png' },
70
+ },
71
+ {
72
+ id: '3',
73
+ title: 'Data List Row Title',
74
+ subtitle: 'Data List Row Subtitle',
75
+ meta: 'Meta Content',
76
+ density: 'comfortable',
77
+ state: 'default',
78
+ showSubtitle: true,
79
+ showLeading: true,
80
+ showTrailing: true,
81
+ showDivider: true,
82
+ leadingImage: { uri: 'https://example.com/avatar.png' },
83
+ },
84
+ {
85
+ id: '4',
86
+ title: 'Data List Row Title',
87
+ subtitle: 'Data List Row Subtitle',
88
+ meta: 'Meta Content',
89
+ density: 'comfortable',
90
+ state: 'default',
91
+ showSubtitle: true,
92
+ showLeading: true,
93
+ showTrailing: true,
94
+ showDivider: true,
95
+ leadingImage: { uri: 'https://example.com/avatar.png' },
96
+ },
97
+ ],
98
+ },
99
+ {
100
+ id: 'finance',
101
+ title: 'Finance',
102
+ items: [
103
+ {
104
+ id: '5',
105
+ title: 'Data List Row Title',
106
+ subtitle: 'Data List Row Subtitle',
107
+ meta: 'Meta Content',
108
+ density: 'comfortable',
109
+ state: 'default',
110
+ showSubtitle: true,
111
+ showLeading: true,
112
+ showTrailing: true,
113
+ showDivider: true,
114
+ leadingImage: { uri: 'https://example.com/avatar.png' },
115
+ },
116
+ {
117
+ id: '6',
118
+ title: 'Data List Row Title',
119
+ subtitle: 'Data List Row Subtitle',
120
+ meta: 'Meta Content',
121
+ density: 'comfortable',
122
+ state: 'default',
123
+ showSubtitle: true,
124
+ showLeading: true,
125
+ showTrailing: true,
126
+ showDivider: true,
127
+ leadingImage: { uri: 'https://example.com/avatar.png' },
128
+ },
129
+ {
130
+ id: '7',
131
+ title: 'Data List Row Title',
132
+ subtitle: 'Data List Row Subtitle',
133
+ meta: 'Meta Content',
134
+ density: 'comfortable',
135
+ state: 'default',
136
+ showSubtitle: true,
137
+ showLeading: true,
138
+ showTrailing: true,
139
+ showDivider: true,
140
+ leadingImage: { uri: 'https://example.com/avatar.png' },
141
+ },
142
+ ],
143
+ },
144
+ {
145
+ id: 'utilities',
146
+ title: 'Utilities',
147
+ items: [
148
+ {
149
+ id: '8',
150
+ title: 'Data List Row Title',
151
+ subtitle: 'Data List Row Subtitle',
152
+ meta: 'Meta Content',
153
+ density: 'comfortable',
154
+ state: 'default',
155
+ showSubtitle: true,
156
+ showLeading: true,
157
+ showTrailing: true,
158
+ showDivider: true,
159
+ leadingImage: { uri: 'https://example.com/avatar.png' },
160
+ },
161
+ {
162
+ id: '9',
163
+ title: 'Data List Row Title',
164
+ subtitle: 'Data List Row Subtitle',
165
+ meta: 'Meta Content',
166
+ density: 'comfortable',
167
+ state: 'default',
168
+ showSubtitle: true,
169
+ showLeading: true,
170
+ showTrailing: true,
171
+ showDivider: true,
172
+ leadingImage: { uri: 'https://example.com/avatar.png' },
173
+ },
174
+ {
175
+ id: '10',
176
+ title: 'Data List Row Title',
177
+ subtitle: 'Data List Row Subtitle',
178
+ meta: 'Meta Content',
179
+ density: 'comfortable',
180
+ state: 'default',
181
+ showSubtitle: true,
182
+ showLeading: true,
183
+ showTrailing: true,
184
+ showDivider: true,
185
+ leadingImage: { uri: 'https://example.com/avatar.png' },
186
+ },
187
+ ],
188
+ },
189
+ ]}
190
+ onProfilePress={() => console.log('Profile pressed')}
191
+ />
192
+ ),
193
+ });
@@ -0,0 +1,301 @@
1
+ // @ts-nocheck
2
+ import { View, ScrollView, type StyleProp, type ViewStyle } from 'react-native';
3
+
4
+ import { ProfileCard } from '../../../components/DataDisplay/ProfileCard/ProfileCard';
5
+ import { DataListItem } from '../../../components/DataDisplay/DataListItem/DataListItem';
6
+ import { Text } from '../../../components/Input/Text/Text';
7
+
8
+ /* ============================================================================
9
+ * Types
10
+ * ============================================================================ */
11
+
12
+ export type AccountSectionItem = {
13
+ id: string;
14
+ title: string;
15
+ subtitle: string;
16
+ meta?: string;
17
+ density?: 'comfortable' | 'compact';
18
+ state?: 'default' | 'pressed' | 'selected' | 'disabled';
19
+ showSubtitle?: boolean;
20
+ showLeading?: boolean;
21
+ showTrailing?: boolean;
22
+ showDivider?: boolean;
23
+ leadingImage?: { uri: string };
24
+ leadingIcon?: any;
25
+ };
26
+
27
+ export type AccountSection = {
28
+ id: string;
29
+ title: string;
30
+ items: AccountSectionItem[];
31
+ };
32
+
33
+ export type AccountPatternProps = {
34
+ // Profile section
35
+ showProfileCard?: boolean;
36
+ userName?: string;
37
+ userID?: string;
38
+ avatarInitials?: string;
39
+ avatarType?: 'image' | 'initials';
40
+ onProfilePress?: () => void;
41
+
42
+ // Sections
43
+ sections?: AccountSection[];
44
+
45
+ // Styling
46
+ style?: StyleProp<ViewStyle>;
47
+ testID?: string;
48
+ className?: never;
49
+ };
50
+
51
+ /* ============================================================================
52
+ * Component
53
+ * ============================================================================ */
54
+
55
+ /**
56
+ * AccountPattern Component
57
+ *
58
+ * A comprehensive account/profile layout pattern that displays:
59
+ * - User profile card at the top with name and ID
60
+ * - Multiple grouped sections with DataList items
61
+ * - Support for Academics, Finance, Utilities, and custom sections
62
+ * - Full customization of sections and items
63
+ *
64
+ * @example
65
+ * ```tsx
66
+ * <AccountPattern
67
+ * showProfileCard={true}
68
+ * userName="Marshall Mathers"
69
+ * userID="3472732323"
70
+ * sections={[...]}
71
+ * />
72
+ * ```
73
+ */
74
+ export function AccountPattern({
75
+ // Profile section
76
+ showProfileCard = true,
77
+ userName = 'Marshall Mathers',
78
+ userID = '3472732323',
79
+ avatarInitials = 'MM',
80
+ avatarType = 'image',
81
+ onProfilePress,
82
+
83
+ // Sections
84
+ sections = [
85
+ {
86
+ id: 'academics',
87
+ title: 'Academics',
88
+ items: [
89
+ {
90
+ id: '1',
91
+ title: 'Data List Row Title',
92
+ subtitle: 'Data List Row Subtitle',
93
+ meta: 'Meta Content',
94
+ density: 'comfortable',
95
+ state: 'default',
96
+ showSubtitle: true,
97
+ showLeading: true,
98
+ showTrailing: true,
99
+ showDivider: true,
100
+ leadingImage: { uri: 'https://example.com/avatar.png' },
101
+ },
102
+ {
103
+ id: '2',
104
+ title: 'Data List Row Title',
105
+ subtitle: 'Data List Row Subtitle',
106
+ meta: 'Meta Content',
107
+ density: 'comfortable',
108
+ state: 'default',
109
+ showSubtitle: true,
110
+ showLeading: true,
111
+ showTrailing: true,
112
+ showDivider: true,
113
+ leadingImage: { uri: 'https://example.com/avatar.png' },
114
+ },
115
+ {
116
+ id: '3',
117
+ title: 'Data List Row Title',
118
+ subtitle: 'Data List Row Subtitle',
119
+ meta: 'Meta Content',
120
+ density: 'comfortable',
121
+ state: 'default',
122
+ showSubtitle: true,
123
+ showLeading: true,
124
+ showTrailing: true,
125
+ showDivider: true,
126
+ leadingImage: { uri: 'https://example.com/avatar.png' },
127
+ },
128
+ {
129
+ id: '4',
130
+ title: 'Data List Row Title',
131
+ subtitle: 'Data List Row Subtitle',
132
+ meta: 'Meta Content',
133
+ density: 'comfortable',
134
+ state: 'default',
135
+ showSubtitle: true,
136
+ showLeading: true,
137
+ showTrailing: true,
138
+ showDivider: true,
139
+ leadingImage: { uri: 'https://example.com/avatar.png' },
140
+ },
141
+ ],
142
+ },
143
+ {
144
+ id: 'finance',
145
+ title: 'Finance',
146
+ items: [
147
+ {
148
+ id: '5',
149
+ title: 'Data List Row Title',
150
+ subtitle: 'Data List Row Subtitle',
151
+ meta: 'Meta Content',
152
+ density: 'comfortable',
153
+ state: 'default',
154
+ showSubtitle: true,
155
+ showLeading: true,
156
+ showTrailing: true,
157
+ showDivider: true,
158
+ leadingImage: { uri: 'https://example.com/avatar.png' },
159
+ },
160
+ {
161
+ id: '6',
162
+ title: 'Data List Row Title',
163
+ subtitle: 'Data List Row Subtitle',
164
+ meta: 'Meta Content',
165
+ density: 'comfortable',
166
+ state: 'default',
167
+ showSubtitle: true,
168
+ showLeading: true,
169
+ showTrailing: true,
170
+ showDivider: true,
171
+ leadingImage: { uri: 'https://example.com/avatar.png' },
172
+ },
173
+ {
174
+ id: '7',
175
+ title: 'Data List Row Title',
176
+ subtitle: 'Data List Row Subtitle',
177
+ meta: 'Meta Content',
178
+ density: 'comfortable',
179
+ state: 'default',
180
+ showSubtitle: true,
181
+ showLeading: true,
182
+ showTrailing: true,
183
+ showDivider: true,
184
+ leadingImage: { uri: 'https://example.com/avatar.png' },
185
+ },
186
+ ],
187
+ },
188
+ {
189
+ id: 'utilities',
190
+ title: 'Utilities',
191
+ items: [
192
+ {
193
+ id: '8',
194
+ title: 'Data List Row Title',
195
+ subtitle: 'Data List Row Subtitle',
196
+ meta: 'Meta Content',
197
+ density: 'comfortable',
198
+ state: 'default',
199
+ showSubtitle: true,
200
+ showLeading: true,
201
+ showTrailing: true,
202
+ showDivider: true,
203
+ leadingImage: { uri: 'https://example.com/avatar.png' },
204
+ },
205
+ {
206
+ id: '9',
207
+ title: 'Data List Row Title',
208
+ subtitle: 'Data List Row Subtitle',
209
+ meta: 'Meta Content',
210
+ density: 'comfortable',
211
+ state: 'default',
212
+ showSubtitle: true,
213
+ showLeading: true,
214
+ showTrailing: true,
215
+ showDivider: true,
216
+ leadingImage: { uri: 'https://example.com/avatar.png' },
217
+ },
218
+ {
219
+ id: '10',
220
+ title: 'Data List Row Title',
221
+ subtitle: 'Data List Row Subtitle',
222
+ meta: 'Meta Content',
223
+ density: 'comfortable',
224
+ state: 'default',
225
+ showSubtitle: true,
226
+ showLeading: true,
227
+ showTrailing: true,
228
+ showDivider: true,
229
+ leadingImage: { uri: 'https://example.com/avatar.png' },
230
+ },
231
+ ],
232
+ },
233
+ ],
234
+
235
+ // Styling
236
+ style,
237
+ testID,
238
+ }: AccountPatternProps) {
239
+ return (
240
+ <ScrollView
241
+ testID={testID ?? 'account-pattern'}
242
+ style={[{ flex: 1, backgroundColor: '#f7f8fa' }, style]}
243
+ showsVerticalScrollIndicator={false}
244
+ contentContainerStyle={{ paddingVertical: 20 }}
245
+ >
246
+ <View className="gap-8 px-5">
247
+ {/* Profile Card Section */}
248
+ {showProfileCard && (
249
+ <View>
250
+ <ProfileCard
251
+ userName={userName}
252
+ userID={userID}
253
+ avatarInitials={avatarInitials}
254
+ avatarType={avatarType}
255
+ onPress={onProfilePress}
256
+ />
257
+ </View>
258
+ )}
259
+
260
+ {/* Sections */}
261
+ {sections.map((section) => (
262
+ <View key={section.id} className="gap-2">
263
+ {/* Section Title */}
264
+ <Text className="text-sm font-semibold text-text-secondary px-5">
265
+ {section.title}
266
+ </Text>
267
+
268
+ {/* Section Items */}
269
+ <View className="gap-3 px-5">
270
+ {section.items.map((item) => (
271
+ <View key={item.id}>
272
+ <DataListItem
273
+ title={item.title}
274
+ subtitle={item.subtitle}
275
+ meta={item.meta}
276
+ density={item.density || 'comfortable'}
277
+ state={item.state || 'default'}
278
+ showSubtitle={item.showSubtitle}
279
+ showLeading={item.showLeading}
280
+ showTrailing={item.showTrailing}
281
+ showDivider={item.showDivider}
282
+ leadingImage={item.leadingImage}
283
+ leadingIcon={item.leadingIcon}
284
+ onPress={() => {}}
285
+ />
286
+ </View>
287
+ ))}
288
+ </View>
289
+ </View>
290
+ ))}
291
+
292
+ {/* Bottom Spacer */}
293
+ <View style={{ height: 150 }} />
294
+ </View>
295
+ </ScrollView>
296
+ );
297
+ }
298
+
299
+ AccountPattern.displayName = 'AccountPattern';
300
+
301
+ export type { AccountPatternProps };
@@ -0,0 +1 @@
1
+ export * from './AccountPattern';
@@ -3,7 +3,7 @@ import figma from '@figma/code-connect';
3
3
  import { CalendarPattern } from './CalendarPattern';
4
4
 
5
5
  const FIGMA_URL =
6
- 'https://www.figma.com/design/66WaqopqU3WXgwVtyQuTUf/React-Native-Blueprint-Library?node-id=314-6537';
6
+ 'https://www.figma.com/design/66WaqopqU3WXgwVtyQuTUf/React-Native-Blueprint-Library?node-id=416-3544';
7
7
 
8
8
  /**
9
9
  * CalendarPattern - Daily schedule calendar view pattern
@@ -53,11 +53,8 @@ export interface CardListPatternProps {
53
53
  /** Data for CardList */
54
54
  data: CardItem[];
55
55
 
56
- /** Card density variant */
57
- cardDensity?: CardProps['density'];
58
-
59
- /** Card tone variant */
60
- cardTone?: CardProps['tone'];
56
+ /** Card size variant */
57
+ cardSize?: CardProps['size'];
61
58
  }
62
59
 
63
60
  /* -----------------------------------------------------
@@ -97,8 +94,7 @@ export const CardListPattern = ({
97
94
  chips = [],
98
95
  banners = [],
99
96
  data,
100
- cardDensity = 'comfortable',
101
- cardTone = 'default',
97
+ cardSize = 'lg',
102
98
  }: CardListPatternProps) => {
103
99
  return (
104
100
  <View style={{ flex: 1, gap: 16 }}>
@@ -111,6 +107,7 @@ export const CardListPattern = ({
111
107
  {data.map((item) => (
112
108
  <Card
113
109
  key={item.id}
110
+ size={cardSize}
114
111
  title={item.title}
115
112
  subtitle={item.subtitle}
116
113
  body={item.body}
@@ -124,8 +121,6 @@ export const CardListPattern = ({
124
121
  showFooterActions={item.showFooterActions ?? true}
125
122
  showLeading={item.showLeading ?? true}
126
123
  showOverflowMenu={item.showOverflowMenu ?? true}
127
- density={cardDensity}
128
- tone={cardTone}
129
124
  onPrimaryActionPress={item.onPrimaryActionPress}
130
125
  onSecondaryActionPress={item.onSecondaryActionPress}
131
126
  onOverflowPress={item.onOverflowPress}
@@ -0,0 +1,146 @@
1
+ import figma from '@figma/code-connect';
2
+ import { FeedPattern } from './FeedPattern';
3
+
4
+ const FIGMA_URL =
5
+ 'https://www.figma.com/design/YTb27Onq7Zk8OV16fHptxJ/Campx-App?node-id=347-117374';
6
+
7
+ /**
8
+ * FeedPattern - Social feed layout pattern
9
+ *
10
+ * Use cases:
11
+ * - Social media feeds (announcements, posts, updates)
12
+ * - News feeds and content discovery
13
+ * - Community boards and discussion forums
14
+ * - Activity feeds for notifications and updates
15
+ * - Multiple content type feeds (announcements, posts, events)
16
+ *
17
+ * Features:
18
+ * - Horizontal scrollable chips filter for content categories
19
+ * - Vertical scrollable feed with multiple content types
20
+ * - Multiple FeedCard variations (with/without media, badges, actions)
21
+ * - Support for both announcement and post types
22
+ * - Floating action button for creating new content
23
+ * - Fully customizable feed items and chip filters
24
+ * - All sections independently configurable
25
+ *
26
+ * Customization:
27
+ * - Show/hide chips filter and floating action button
28
+ * - Customize chip labels and selection state
29
+ * - Add, remove, or customize feed items
30
+ * - Configure each feed item's visibility toggles
31
+ * - Set up callbacks for chip selection and item interaction
32
+ * - Adapt content based on user selection or backend data
33
+ */
34
+ figma.connect(FeedPattern, FIGMA_URL, {
35
+ example: () => (
36
+ <FeedPattern
37
+ showChipsFilter={true}
38
+ chips={[
39
+ { id: '1', label: 'Announcements', state: 'selected' as const },
40
+ { id: '2', label: 'Posts', state: 'default' as const },
41
+ { id: '3', label: 'Events', state: 'default' as const },
42
+ { id: '4', label: 'Updates', state: 'default' as const },
43
+ ]}
44
+ showFloatingActionButton={true}
45
+ feedItems={[
46
+ {
47
+ id: '1',
48
+ type: 'announcement',
49
+ authorName: 'Author Name',
50
+ postTitle: 'Post Title',
51
+ subtitle: 'Subtitle of the card goes here',
52
+ postContent:
53
+ 'The card may contain body content which can be truncated to 1-2 lines. Swap Content in Props.',
54
+ showHeader: true,
55
+ showPostContent: true,
56
+ showBody: true,
57
+ showBadges: true,
58
+ showFooterActions: true,
59
+ showLeading: true,
60
+ showSubtitle: true,
61
+ showSecondaryButton: true,
62
+ },
63
+ {
64
+ id: '2',
65
+ type: 'post',
66
+ authorName: 'Author Name',
67
+ postTitle: 'Post Title',
68
+ subtitle: 'Subtitle of the card goes here',
69
+ postContent:
70
+ 'The card may contain body content which can be truncated to 1-2 lines. Swap Content in Props.',
71
+ showMedia: true,
72
+ showHeader: true,
73
+ showPostContent: true,
74
+ showBadges: true,
75
+ showLeading: true,
76
+ showSubtitle: true,
77
+ showSecondaryButton: true,
78
+ },
79
+ {
80
+ id: '3',
81
+ type: 'announcement',
82
+ authorName: 'Author Name',
83
+ postTitle: 'Post Title',
84
+ subtitle: 'Subtitle of the card goes here',
85
+ postContent:
86
+ 'The card may contain body content which can be truncated to 1-2 lines. Swap Content in Props.',
87
+ showPostContent: true,
88
+ showBody: true,
89
+ showLeading: true,
90
+ showSubtitle: true,
91
+ showSecondaryButton: true,
92
+ },
93
+ {
94
+ id: '4',
95
+ type: 'post',
96
+ authorName: 'Author Name',
97
+ postTitle: 'Post Title',
98
+ subtitle: 'Subtitle of the card goes here',
99
+ postContent:
100
+ 'The card may contain body content which can be truncated to 1-2 lines. Swap Content in Props.',
101
+ showMedia: true,
102
+ showHeader: true,
103
+ showBadges: true,
104
+ showLeading: true,
105
+ showSubtitle: true,
106
+ showSecondaryButton: true,
107
+ },
108
+ {
109
+ id: '5',
110
+ type: 'announcement',
111
+ authorName: 'Author Name',
112
+ postTitle: 'Post Title',
113
+ subtitle: 'Subtitle of the card goes here',
114
+ postContent:
115
+ 'The card may contain body content which can be truncated to 1-2 lines. Swap Content in Props.',
116
+ showHeader: true,
117
+ showPostContent: true,
118
+ showBody: true,
119
+ showBadges: true,
120
+ showFooterActions: true,
121
+ showLeading: true,
122
+ showSubtitle: true,
123
+ showSecondaryButton: true,
124
+ },
125
+ {
126
+ id: '6',
127
+ type: 'post',
128
+ authorName: 'Author Name',
129
+ postTitle: 'Post Title',
130
+ subtitle: 'Subtitle of the card goes here',
131
+ postContent:
132
+ 'The card may contain body content which can be truncated to 1-2 lines. Swap Content in Props.',
133
+ showMedia: true,
134
+ showHeader: true,
135
+ showPostContent: true,
136
+ showBody: true,
137
+ showBadges: true,
138
+ showFooterActions: true,
139
+ showLeading: true,
140
+ showSubtitle: true,
141
+ showSecondaryButton: true,
142
+ },
143
+ ]}
144
+ />
145
+ ),
146
+ });