@object-ui/plugin-detail 3.1.5 → 3.3.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.
Files changed (209) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +21 -1
  3. package/dist/AddressField-LgHnO2Lk.js +98 -0
  4. package/dist/AutoNumberField-xZCrU0eW.js +14 -0
  5. package/dist/{AvatarField-YGj51ozd.js → AvatarField-Dy2XGlPz.js} +16 -15
  6. package/dist/{BooleanField-CaA898Tk.js → BooleanField-C0Clfka5.js} +11 -10
  7. package/dist/CodeField-CHUa07B6.js +23 -0
  8. package/dist/ColorField-vxHqEhcS.js +38 -0
  9. package/dist/CurrencyField-DiWjYWDo.js +49 -0
  10. package/dist/DateField-DGaRPM4P.js +22 -0
  11. package/dist/DateTimeField-8QnpsI_h.js +30 -0
  12. package/dist/EmailField-CkVgMbpI.js +26 -0
  13. package/dist/FileField-5UPV7uek.js +149 -0
  14. package/dist/FormulaField-BUgt6-Pi.js +17 -0
  15. package/dist/GeolocationField-D9T_jgG6.js +118 -0
  16. package/dist/GridField-DE_HwiIN.js +49 -0
  17. package/dist/ImageField-Dswnqtzf.js +73 -0
  18. package/dist/LocationField-gjqbE6na.js +36 -0
  19. package/dist/LookupField-BcS3LRKc.js +901 -0
  20. package/dist/{MasterDetailField-I1A9oEGC.js → MasterDetailField-BF6_-X3A.js} +20 -19
  21. package/dist/NumberField-Dj2rYmrS.js +27 -0
  22. package/dist/ObjectField-BymIojwd.js +50 -0
  23. package/dist/{PasswordField-DBtluGJ1.js → PasswordField-ED_Xgqz-.js} +8 -7
  24. package/dist/PercentField-D-JKOxKC.js +61 -0
  25. package/dist/PhoneField-DSCaGYq7.js +26 -0
  26. package/dist/QRCodeField-CtcOUapi.js +73 -0
  27. package/dist/{RatingField-B_Mnr63i.js → RatingField-BDnyQFWy.js} +10 -9
  28. package/dist/RichTextField-CH6LVZQA.js +33 -0
  29. package/dist/SelectField-DE4dpkMV.js +36 -0
  30. package/dist/{SignatureField-CddhEK9u.js → SignatureField-B1wh3f5A.js} +18 -17
  31. package/dist/{SliderField-Df5hMzNc.js → SliderField-zoTCKh9n.js} +2 -1
  32. package/dist/SummaryField-BeBVT6VN.js +22 -0
  33. package/dist/TextAreaField-rfUGrRxh.js +37 -0
  34. package/dist/TextField-C_yM7ATQ.js +30 -0
  35. package/dist/TimeField-BcQmBZi9.js +22 -0
  36. package/dist/UrlField-BakaF6NI.js +31 -0
  37. package/dist/UserField-zS7y3eKb.js +76 -0
  38. package/dist/VectorField-CTZ4myDM.js +34 -0
  39. package/dist/index.d.ts +1 -1
  40. package/dist/index.js +1741 -1504
  41. package/dist/index.umd.cjs +43 -51
  42. package/dist/packages/plugin-detail/src/ActivityTimeline.d.ts.map +1 -0
  43. package/dist/packages/plugin-detail/src/CommentAttachment.d.ts.map +1 -0
  44. package/dist/packages/plugin-detail/src/CommentInput.d.ts.map +1 -0
  45. package/dist/packages/plugin-detail/src/DetailSection.d.ts.map +1 -0
  46. package/dist/packages/plugin-detail/src/DetailTabs.d.ts.map +1 -0
  47. package/dist/packages/plugin-detail/src/DetailView.d.ts +47 -0
  48. package/dist/packages/plugin-detail/src/DetailView.d.ts.map +1 -0
  49. package/dist/packages/plugin-detail/src/DetailView.stories.d.ts.map +1 -0
  50. package/dist/packages/plugin-detail/src/DiffView.d.ts.map +1 -0
  51. package/dist/packages/plugin-detail/src/FieldChangeItem.d.ts.map +1 -0
  52. package/dist/packages/plugin-detail/src/HeaderHighlight.d.ts.map +1 -0
  53. package/dist/packages/plugin-detail/src/InlineCreateRelated.d.ts.map +1 -0
  54. package/dist/packages/plugin-detail/src/MentionAutocomplete.d.ts.map +1 -0
  55. package/dist/packages/plugin-detail/src/PointInTimeRestore.d.ts.map +1 -0
  56. package/dist/packages/plugin-detail/src/ReactionPicker.d.ts.map +1 -0
  57. package/dist/packages/plugin-detail/src/RecordActivityTimeline.d.ts.map +1 -0
  58. package/dist/packages/plugin-detail/src/RecordChatterPanel.d.ts.map +1 -0
  59. package/dist/packages/plugin-detail/src/RecordComments.d.ts.map +1 -0
  60. package/dist/packages/plugin-detail/src/RecordNavigationEnhanced.d.ts.map +1 -0
  61. package/dist/{src → packages/plugin-detail/src}/RelatedList.d.ts +8 -0
  62. package/dist/packages/plugin-detail/src/RelatedList.d.ts.map +1 -0
  63. package/dist/packages/plugin-detail/src/RelationshipGraph.d.ts.map +1 -0
  64. package/dist/packages/plugin-detail/src/RichTextCommentInput.d.ts.map +1 -0
  65. package/dist/packages/plugin-detail/src/SectionGroup.d.ts.map +1 -0
  66. package/dist/packages/plugin-detail/src/SubscriptionToggle.d.ts.map +1 -0
  67. package/dist/packages/plugin-detail/src/ThreadedReplies.d.ts.map +1 -0
  68. package/dist/packages/plugin-detail/src/autoLayout.d.ts.map +1 -0
  69. package/dist/packages/plugin-detail/src/index.d.ts.map +1 -0
  70. package/dist/packages/plugin-detail/src/useDetailTranslation.d.ts.map +1 -0
  71. package/dist/plugin-detail.css +1 -2
  72. package/dist/rolldown-runtime-DnwLefa7.js +23 -0
  73. package/dist/{src-CXr1-vVl.js → src-DyUKLvMN.js} +29788 -37711
  74. package/dist/useFieldTranslation-BRgjC1oq.js +9 -0
  75. package/package.json +34 -12
  76. package/.turbo/turbo-build.log +0 -61
  77. package/dist/AddressField-DBkEyMcG.js +0 -93
  78. package/dist/AutoNumberField-Baa191z-.js +0 -14
  79. package/dist/CodeField-BU51nl1L.js +0 -22
  80. package/dist/ColorField-Cnf6ZM7c.js +0 -37
  81. package/dist/CurrencyField-Wg-XOId2.js +0 -51
  82. package/dist/DateField-Cth1ky_m.js +0 -21
  83. package/dist/DateTimeField-B0m6FhHL.js +0 -32
  84. package/dist/EmailField-Do7qT_L_.js +0 -28
  85. package/dist/FileField-aRJAdbQb.js +0 -151
  86. package/dist/FormulaField-DTMkagFx.js +0 -14
  87. package/dist/GeolocationField-RqpHWTEv.js +0 -113
  88. package/dist/GridField-D4IH0cpo.js +0 -51
  89. package/dist/ImageField-BYCFajjr.js +0 -75
  90. package/dist/LocationField-Bi_ew9sd.js +0 -35
  91. package/dist/LookupField-BjwlDPtt.js +0 -902
  92. package/dist/NumberField-D_NucQlp.js +0 -26
  93. package/dist/ObjectField-CG-LaM65.js +0 -52
  94. package/dist/PercentField-B6sO_J3i.js +0 -63
  95. package/dist/PhoneField-CcQAWwR6.js +0 -28
  96. package/dist/QRCodeField-CEjWs-J5.js +0 -72
  97. package/dist/RichTextField-qOEJl5Ai.js +0 -32
  98. package/dist/SelectField-C8hWu3gm.js +0 -30
  99. package/dist/SummaryField-DgiFm-Cr.js +0 -19
  100. package/dist/TextAreaField-DuriTqsD.js +0 -36
  101. package/dist/TextField-CGNSl7RU.js +0 -29
  102. package/dist/TimeField-YO58ctFg.js +0 -21
  103. package/dist/UrlField-1-BMM1jn.js +0 -33
  104. package/dist/UserField-B6GqxP_S.js +0 -78
  105. package/dist/VectorField-BkEjbSt0.js +0 -36
  106. package/dist/src/ActivityTimeline.d.ts.map +0 -1
  107. package/dist/src/CommentAttachment.d.ts.map +0 -1
  108. package/dist/src/CommentInput.d.ts.map +0 -1
  109. package/dist/src/DetailSection.d.ts.map +0 -1
  110. package/dist/src/DetailTabs.d.ts.map +0 -1
  111. package/dist/src/DetailView.d.ts +0 -23
  112. package/dist/src/DetailView.d.ts.map +0 -1
  113. package/dist/src/DetailView.stories.d.ts.map +0 -1
  114. package/dist/src/DiffView.d.ts.map +0 -1
  115. package/dist/src/FieldChangeItem.d.ts.map +0 -1
  116. package/dist/src/HeaderHighlight.d.ts.map +0 -1
  117. package/dist/src/InlineCreateRelated.d.ts.map +0 -1
  118. package/dist/src/MentionAutocomplete.d.ts.map +0 -1
  119. package/dist/src/PointInTimeRestore.d.ts.map +0 -1
  120. package/dist/src/ReactionPicker.d.ts.map +0 -1
  121. package/dist/src/RecordActivityTimeline.d.ts.map +0 -1
  122. package/dist/src/RecordChatterPanel.d.ts.map +0 -1
  123. package/dist/src/RecordComments.d.ts.map +0 -1
  124. package/dist/src/RecordNavigationEnhanced.d.ts.map +0 -1
  125. package/dist/src/RelatedList.d.ts.map +0 -1
  126. package/dist/src/RelationshipGraph.d.ts.map +0 -1
  127. package/dist/src/RichTextCommentInput.d.ts.map +0 -1
  128. package/dist/src/SectionGroup.d.ts.map +0 -1
  129. package/dist/src/SubscriptionToggle.d.ts.map +0 -1
  130. package/dist/src/ThreadedReplies.d.ts.map +0 -1
  131. package/dist/src/autoLayout.d.ts.map +0 -1
  132. package/dist/src/index.d.ts.map +0 -1
  133. package/dist/src/useDetailTranslation.d.ts.map +0 -1
  134. package/src/ActivityTimeline.tsx +0 -184
  135. package/src/CommentAttachment.tsx +0 -192
  136. package/src/CommentInput.tsx +0 -81
  137. package/src/DetailSection.tsx +0 -340
  138. package/src/DetailTabs.tsx +0 -73
  139. package/src/DetailView.stories.tsx +0 -334
  140. package/src/DetailView.tsx +0 -823
  141. package/src/DiffView.tsx +0 -231
  142. package/src/FieldChangeItem.tsx +0 -46
  143. package/src/HeaderHighlight.tsx +0 -88
  144. package/src/InlineCreateRelated.tsx +0 -291
  145. package/src/MentionAutocomplete.tsx +0 -123
  146. package/src/PointInTimeRestore.tsx +0 -261
  147. package/src/ReactionPicker.tsx +0 -106
  148. package/src/RecordActivityTimeline.tsx +0 -429
  149. package/src/RecordChatterPanel.tsx +0 -207
  150. package/src/RecordComments.tsx +0 -215
  151. package/src/RecordNavigationEnhanced.tsx +0 -211
  152. package/src/RelatedList.tsx +0 -413
  153. package/src/RelationshipGraph.tsx +0 -286
  154. package/src/RichTextCommentInput.tsx +0 -348
  155. package/src/SectionGroup.tsx +0 -101
  156. package/src/SubscriptionToggle.tsx +0 -60
  157. package/src/ThreadedReplies.tsx +0 -161
  158. package/src/__tests__/ActivityTimeline.test.tsx +0 -119
  159. package/src/__tests__/ActivityTimelineFiltering.test.tsx +0 -143
  160. package/src/__tests__/CommentInput.test.tsx +0 -57
  161. package/src/__tests__/DetailSection.test.tsx +0 -490
  162. package/src/__tests__/DetailView.test.tsx +0 -694
  163. package/src/__tests__/FieldChangeItem.test.tsx +0 -119
  164. package/src/__tests__/HeaderHighlight.test.tsx +0 -213
  165. package/src/__tests__/MentionAutocomplete.test.tsx +0 -97
  166. package/src/__tests__/ReactionPicker.test.tsx +0 -113
  167. package/src/__tests__/RecordActivityTimeline.test.tsx +0 -395
  168. package/src/__tests__/RecordChatterPanel.test.tsx +0 -265
  169. package/src/__tests__/RecordComments.test.tsx +0 -96
  170. package/src/__tests__/RecordCommentsPinSearch.test.tsx +0 -133
  171. package/src/__tests__/RelatedList.test.tsx +0 -160
  172. package/src/__tests__/SectionGroup.test.tsx +0 -101
  173. package/src/__tests__/SubscriptionToggle.test.tsx +0 -84
  174. package/src/__tests__/ThreadedReplies.test.tsx +0 -212
  175. package/src/__tests__/autoLayout.test.ts +0 -228
  176. package/src/__tests__/phase12-features.test.tsx +0 -583
  177. package/src/__tests__/roadmap-features.test.tsx +0 -478
  178. package/src/autoLayout.ts +0 -128
  179. package/src/index.tsx +0 -149
  180. package/src/useDetailTranslation.ts +0 -114
  181. package/tsconfig.json +0 -18
  182. package/vite.config.ts +0 -56
  183. package/vitest.config.ts +0 -13
  184. package/vitest.setup.ts +0 -1
  185. /package/dist/{src → packages/plugin-detail/src}/ActivityTimeline.d.ts +0 -0
  186. /package/dist/{src → packages/plugin-detail/src}/CommentAttachment.d.ts +0 -0
  187. /package/dist/{src → packages/plugin-detail/src}/CommentInput.d.ts +0 -0
  188. /package/dist/{src → packages/plugin-detail/src}/DetailSection.d.ts +0 -0
  189. /package/dist/{src → packages/plugin-detail/src}/DetailTabs.d.ts +0 -0
  190. /package/dist/{src → packages/plugin-detail/src}/DetailView.stories.d.ts +0 -0
  191. /package/dist/{src → packages/plugin-detail/src}/DiffView.d.ts +0 -0
  192. /package/dist/{src → packages/plugin-detail/src}/FieldChangeItem.d.ts +0 -0
  193. /package/dist/{src → packages/plugin-detail/src}/HeaderHighlight.d.ts +0 -0
  194. /package/dist/{src → packages/plugin-detail/src}/InlineCreateRelated.d.ts +0 -0
  195. /package/dist/{src → packages/plugin-detail/src}/MentionAutocomplete.d.ts +0 -0
  196. /package/dist/{src → packages/plugin-detail/src}/PointInTimeRestore.d.ts +0 -0
  197. /package/dist/{src → packages/plugin-detail/src}/ReactionPicker.d.ts +0 -0
  198. /package/dist/{src → packages/plugin-detail/src}/RecordActivityTimeline.d.ts +0 -0
  199. /package/dist/{src → packages/plugin-detail/src}/RecordChatterPanel.d.ts +0 -0
  200. /package/dist/{src → packages/plugin-detail/src}/RecordComments.d.ts +0 -0
  201. /package/dist/{src → packages/plugin-detail/src}/RecordNavigationEnhanced.d.ts +0 -0
  202. /package/dist/{src → packages/plugin-detail/src}/RelationshipGraph.d.ts +0 -0
  203. /package/dist/{src → packages/plugin-detail/src}/RichTextCommentInput.d.ts +0 -0
  204. /package/dist/{src → packages/plugin-detail/src}/SectionGroup.d.ts +0 -0
  205. /package/dist/{src → packages/plugin-detail/src}/SubscriptionToggle.d.ts +0 -0
  206. /package/dist/{src → packages/plugin-detail/src}/ThreadedReplies.d.ts +0 -0
  207. /package/dist/{src → packages/plugin-detail/src}/autoLayout.d.ts +0 -0
  208. /package/dist/{src → packages/plugin-detail/src}/index.d.ts +0 -0
  209. /package/dist/{src → packages/plugin-detail/src}/useDetailTranslation.d.ts +0 -0
@@ -1,334 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/react';
2
- import { SchemaRenderer } from '@object-ui/react';
3
- import type { BaseSchema } from '@object-ui/types';
4
- import { Building2, User } from 'lucide-react';
5
-
6
- const meta = {
7
- title: 'Plugins/DetailView',
8
- component: SchemaRenderer,
9
- parameters: {
10
- layout: 'padded',
11
- docs: {
12
- description: {
13
- component: 'Enhanced detail view component with Airtable-inspired features: tooltips, functional menus, collapsible sections, and copy-to-clipboard.',
14
- },
15
- },
16
- },
17
- tags: ['autodocs'],
18
- argTypes: {
19
- schema: { table: { disable: true } },
20
- },
21
- } satisfies Meta<any>;
22
-
23
- export default meta;
24
- type Story = StoryObj<typeof meta>;
25
-
26
- const renderStory = (args: any) => <SchemaRenderer schema={args as unknown as BaseSchema} />;
27
-
28
- export const Default: Story = {
29
- render: renderStory,
30
- args: {
31
- type: 'detail-view',
32
- title: 'Employee Details',
33
- data: {
34
- name: 'Sarah Connor',
35
- email: 'sarah.connor@example.com',
36
- phone: '+1 (555) 867-5309',
37
- department: 'Engineering',
38
- role: 'Tech Lead',
39
- location: 'Austin, TX',
40
- },
41
- fields: [
42
- { name: 'name', label: 'Full Name' },
43
- { name: 'email', label: 'Email' },
44
- { name: 'phone', label: 'Phone' },
45
- { name: 'department', label: 'Department' },
46
- { name: 'role', label: 'Role' },
47
- { name: 'location', label: 'Location' },
48
- ],
49
- showBack: true,
50
- showEdit: true,
51
- showDelete: true,
52
- } as any,
53
- };
54
-
55
- export const WithSections: Story = {
56
- render: renderStory,
57
- args: {
58
- type: 'detail-view',
59
- title: 'Account: TechCorp Inc.',
60
- data: {
61
- name: 'TechCorp Inc.',
62
- industry: 'Software',
63
- website: 'https://techcorp.io',
64
- employees: '200-500',
65
- revenue: '$25M - $50M',
66
- street: '456 Innovation Blvd',
67
- city: 'Seattle',
68
- state: 'WA',
69
- zipcode: '98101',
70
- country: 'USA',
71
- },
72
- sections: [
73
- {
74
- title: 'Company Info',
75
- icon: '🏢',
76
- fields: [
77
- { name: 'name', label: 'Company Name' },
78
- { name: 'industry', label: 'Industry' },
79
- { name: 'website', label: 'Website' },
80
- { name: 'employees', label: 'Employees' },
81
- { name: 'revenue', label: 'Annual Revenue' },
82
- ],
83
- columns: 2,
84
- },
85
- {
86
- title: 'Address',
87
- icon: '📍',
88
- collapsible: true,
89
- fields: [
90
- { name: 'street', label: 'Street' },
91
- { name: 'city', label: 'City' },
92
- { name: 'state', label: 'State' },
93
- { name: 'zipcode', label: 'Zip Code' },
94
- { name: 'country', label: 'Country' },
95
- ],
96
- columns: 2,
97
- },
98
- ],
99
- showBack: true,
100
- showEdit: true,
101
- showDelete: true,
102
- } as any,
103
- };
104
-
105
- export const WithRelatedLists: Story = {
106
- render: renderStory,
107
- args: {
108
- type: 'detail-view',
109
- title: 'Account: TechCorp Inc.',
110
- data: {
111
- name: 'TechCorp Inc.',
112
- industry: 'Software',
113
- },
114
- fields: [
115
- { name: 'name', label: 'Account Name' },
116
- { name: 'industry', label: 'Industry' },
117
- ],
118
- related: [
119
- {
120
- title: 'Contacts',
121
- type: 'table',
122
- data: [
123
- { id: '1', name: 'Mike Ross', email: 'mike@techcorp.io', title: 'VP Engineering' },
124
- { id: '2', name: 'Lisa Chen', email: 'lisa@techcorp.io', title: 'Product Manager' },
125
- ],
126
- columns: ['name', 'email', 'title'],
127
- },
128
- {
129
- title: 'Opportunities',
130
- type: 'table',
131
- data: [
132
- { id: '1', name: 'Enterprise License', amount: '$120,000', stage: 'Negotiation' },
133
- { id: '2', name: 'Support Contract', amount: '$45,000', stage: 'Proposal' },
134
- ],
135
- columns: ['name', 'amount', 'stage'],
136
- },
137
- ],
138
- showBack: true,
139
- showEdit: true,
140
- showDelete: true,
141
- } as any,
142
- };
143
-
144
- /**
145
- * Enhanced view showcasing new Airtable-inspired features
146
- */
147
- export const EnhancedAirtableStyle: Story = {
148
- render: renderStory,
149
- args: {
150
- type: 'detail-view',
151
- title: 'Sarah Johnson',
152
- objectName: 'Contact',
153
- resourceId: 'CNT-001',
154
- showEdit: true,
155
- showDelete: true,
156
- showBack: true,
157
- data: {
158
- name: 'Sarah Johnson',
159
- email: 'sarah.johnson@example.com',
160
- phone: '+1 (555) 123-4567',
161
- company: 'Acme Corporation',
162
- title: 'Senior Product Manager',
163
- department: 'Product',
164
- location: 'San Francisco, CA',
165
- website: 'https://example.com',
166
- notes: 'Key decision maker for enterprise deals. Prefers email communication.',
167
- linkedin: 'linkedin.com/in/sarahjohnson',
168
- twitter: '@sarahjohnson',
169
- status: 'Active',
170
- lead_source: 'Website',
171
- },
172
- sections: [
173
- {
174
- title: 'Contact Information',
175
- description: 'Primary contact details',
176
- collapsible: false,
177
- columns: 2,
178
- fields: [
179
- { name: 'email', label: 'Email' },
180
- { name: 'phone', label: 'Phone' },
181
- { name: 'title', label: 'Job Title' },
182
- { name: 'department', label: 'Department' },
183
- { name: 'location', label: 'Location' },
184
- { name: 'website', label: 'Website' },
185
- ],
186
- },
187
- {
188
- title: 'Company Details',
189
- collapsible: true,
190
- defaultCollapsed: false,
191
- columns: 2,
192
- fields: [
193
- { name: 'company', label: 'Company Name' },
194
- { name: 'status', label: 'Status' },
195
- { name: 'lead_source', label: 'Lead Source' },
196
- ],
197
- },
198
- {
199
- title: 'Social Media',
200
- collapsible: true,
201
- defaultCollapsed: true,
202
- columns: 1,
203
- fields: [
204
- { name: 'linkedin', label: 'LinkedIn' },
205
- { name: 'twitter', label: 'Twitter' },
206
- ],
207
- },
208
- ],
209
- } as any,
210
- };
211
-
212
- /**
213
- * View with field count badges in section headers
214
- */
215
- export const WithFieldCounts: Story = {
216
- render: renderStory,
217
- args: {
218
- type: 'detail-view',
219
- title: 'Deal Overview',
220
- objectName: 'Deal',
221
- resourceId: 'DEAL-456',
222
- showEdit: true,
223
- data: {
224
- name: 'Enterprise License',
225
- amount: '$120,000',
226
- stage: 'Negotiation',
227
- probability: '75%',
228
- close_date: '2024-03-31',
229
- owner: 'Sarah Johnson',
230
- account: 'TechCorp Inc.',
231
- contact: 'Mike Ross',
232
- created: '2024-01-15',
233
- },
234
- sections: [
235
- {
236
- title: 'Deal Information',
237
- columns: 2,
238
- fields: [
239
- { name: 'name', label: 'Deal Name', span: 2 },
240
- { name: 'amount', label: 'Amount' },
241
- { name: 'stage', label: 'Stage' },
242
- { name: 'probability', label: 'Win Probability' },
243
- { name: 'close_date', label: 'Expected Close' },
244
- ],
245
- },
246
- {
247
- title: 'Related Records',
248
- collapsible: true,
249
- columns: 2,
250
- fields: [
251
- { name: 'account', label: 'Account' },
252
- { name: 'contact', label: 'Primary Contact' },
253
- { name: 'owner', label: 'Deal Owner' },
254
- ],
255
- },
256
- ],
257
- } as any,
258
- };
259
-
260
- /**
261
- * Primary Field + Summary Badges — record name as header, key attributes as badges
262
- */
263
- export const PrimaryFieldWithBadges: Story = {
264
- render: renderStory,
265
- args: {
266
- type: 'detail-view',
267
- title: 'Contact',
268
- primaryField: 'name',
269
- summaryFields: ['status', 'department'],
270
- objectName: 'Contact',
271
- resourceId: 'CNT-042',
272
- showBack: true,
273
- showEdit: true,
274
- data: {
275
- name: 'Sarah Johnson',
276
- email: 'sarah@example.com',
277
- phone: '+1 (555) 123-4567',
278
- status: 'Active',
279
- department: 'Engineering',
280
- title: 'Senior Engineer',
281
- },
282
- fields: [
283
- { name: 'email', label: 'Email' },
284
- { name: 'phone', label: 'Phone' },
285
- { name: 'title', label: 'Job Title' },
286
- { name: 'status', label: 'Status' },
287
- { name: 'department', label: 'Department' },
288
- ],
289
- } as any,
290
- };
291
-
292
- /**
293
- * Hide Empty Fields — sections with hideEmpty filter out null/undefined/empty fields
294
- */
295
- export const HideEmptyFields: Story = {
296
- render: renderStory,
297
- args: {
298
- type: 'detail-view',
299
- title: 'Contact',
300
- primaryField: 'name',
301
- showBack: true,
302
- data: {
303
- name: 'Mike Ross',
304
- email: 'mike@techcorp.io',
305
- phone: null,
306
- department: '',
307
- title: 'VP Engineering',
308
- website: undefined,
309
- linkedin: 'linkedin.com/in/mikeross',
310
- },
311
- sections: [
312
- {
313
- title: 'Contact Info',
314
- hideEmpty: true,
315
- fields: [
316
- { name: 'email', label: 'Email' },
317
- { name: 'phone', label: 'Phone' },
318
- { name: 'title', label: 'Job Title' },
319
- { name: 'department', label: 'Department' },
320
- { name: 'website', label: 'Website' },
321
- { name: 'linkedin', label: 'LinkedIn' },
322
- ],
323
- },
324
- {
325
- title: 'Empty Section (hidden)',
326
- hideEmpty: true,
327
- fields: [
328
- { name: 'fax', label: 'Fax' },
329
- { name: 'pager', label: 'Pager' },
330
- ],
331
- },
332
- ],
333
- } as any,
334
- };