@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
package/src/index.tsx DELETED
@@ -1,149 +0,0 @@
1
- /**
2
- * ObjectUI
3
- * Copyright (c) 2024-present ObjectStack Inc.
4
- *
5
- * This source code is licensed under the MIT license found in the
6
- * LICENSE file in the root directory of this source tree.
7
- */
8
-
9
- import { ComponentRegistry } from '@object-ui/core';
10
- import { DetailView } from './DetailView';
11
- import { DetailSection } from './DetailSection';
12
- import { DetailTabs } from './DetailTabs';
13
- import { RelatedList } from './RelatedList';
14
- import type { DetailViewSchema } from '@object-ui/types';
15
-
16
- export { DetailView, DetailSection, DetailTabs, RelatedList };
17
- export { SectionGroup } from './SectionGroup';
18
- export { HeaderHighlight } from './HeaderHighlight';
19
- export { inferDetailColumns, isWideFieldType, applyAutoSpan, applyDetailAutoLayout } from './autoLayout';
20
- export { useDetailTranslation, DETAIL_DEFAULT_TRANSLATIONS, createSafeTranslationHook } from './useDetailTranslation';
21
- export { RecordComments } from './RecordComments';
22
- export { ActivityTimeline } from './ActivityTimeline';
23
- export { InlineCreateRelated } from './InlineCreateRelated';
24
- export { RichTextCommentInput } from './RichTextCommentInput';
25
- export { DiffView } from './DiffView';
26
- export { RecordNavigationEnhanced } from './RecordNavigationEnhanced';
27
- export { RelationshipGraph } from './RelationshipGraph';
28
- export { CommentAttachment } from './CommentAttachment';
29
- export { PointInTimeRestore } from './PointInTimeRestore';
30
- export { RecordActivityTimeline } from './RecordActivityTimeline';
31
- export { RecordChatterPanel } from './RecordChatterPanel';
32
- export { CommentInput } from './CommentInput';
33
- export { FieldChangeItem } from './FieldChangeItem';
34
- export { MentionAutocomplete, createMentionFromSuggestion } from './MentionAutocomplete';
35
- export { SubscriptionToggle } from './SubscriptionToggle';
36
- export { ReactionPicker } from './ReactionPicker';
37
- export { ThreadedReplies } from './ThreadedReplies';
38
- export type { DetailViewProps } from './DetailView';
39
- export type { DetailSectionProps, VirtualScrollOptions } from './DetailSection';
40
- export type { DetailTabsProps } from './DetailTabs';
41
- export type { RelatedListProps } from './RelatedList';
42
- export type { SectionGroupProps } from './SectionGroup';
43
- export type { HeaderHighlightProps } from './HeaderHighlight';
44
- export type { RecordCommentsProps } from './RecordComments';
45
- export type { ActivityTimelineProps, ActivityFilterType } from './ActivityTimeline';
46
- export type { InlineCreateRelatedProps, RelatedFieldDefinition, RelatedRecordOption } from './InlineCreateRelated';
47
- export type { RichTextCommentInputProps, MentionSuggestion } from './RichTextCommentInput';
48
- export type { DiffViewProps, DiffFieldType, DiffMode, DiffLine } from './DiffView';
49
- export type { RecordNavigationEnhancedProps } from './RecordNavigationEnhanced';
50
- export type { RelationshipGraphProps, GraphNode } from './RelationshipGraph';
51
- export type { CommentAttachmentProps, Attachment } from './CommentAttachment';
52
- export type { PointInTimeRestoreProps, RevisionEntry } from './PointInTimeRestore';
53
- export type { RecordActivityTimelineProps, FeedFilterMode } from './RecordActivityTimeline';
54
- export type { RecordChatterPanelProps } from './RecordChatterPanel';
55
- export type { CommentInputProps } from './CommentInput';
56
- export type { FieldChangeItemProps } from './FieldChangeItem';
57
- export type { MentionAutocompleteProps, MentionSuggestionItem } from './MentionAutocomplete';
58
- export type { SubscriptionToggleProps } from './SubscriptionToggle';
59
- export type { ReactionPickerProps } from './ReactionPicker';
60
- export type { ThreadedRepliesProps } from './ThreadedReplies';
61
-
62
- // Register DetailView component
63
- ComponentRegistry.register('detail-view', DetailView, {
64
- namespace: 'plugin-detail',
65
- label: 'Detail View',
66
- category: 'Views',
67
- icon: 'FileText',
68
- inputs: [
69
- { name: 'title', type: 'string', label: 'Title' },
70
- { name: 'objectName', type: 'string', label: 'Object Name' },
71
- { name: 'resourceId', type: 'string', label: 'Resource ID' },
72
- { name: 'api', type: 'string', label: 'API Endpoint' },
73
- { name: 'data', type: 'object', label: 'Data' },
74
- { name: 'layout', type: 'enum', label: 'Layout Mode', enum: ['vertical', 'horizontal', 'grid'] },
75
- { name: 'columns', type: 'number', label: 'Grid Columns' },
76
- { name: 'sections', type: 'array', label: 'Sections' },
77
- { name: 'fields', type: 'array', label: 'Fields' },
78
- { name: 'tabs', type: 'array', label: 'Tabs' },
79
- { name: 'related', type: 'array', label: 'Related Lists' },
80
- { name: 'actions', type: 'array', label: 'Actions' },
81
- { name: 'showBack', type: 'boolean', label: 'Show Back Button', defaultValue: true },
82
- { name: 'backUrl', type: 'string', label: 'Back URL' },
83
- { name: 'showEdit', type: 'boolean', label: 'Show Edit Button', defaultValue: false },
84
- { name: 'editUrl', type: 'string', label: 'Edit URL' },
85
- { name: 'showDelete', type: 'boolean', label: 'Show Delete Button', defaultValue: false },
86
- { name: 'deleteConfirmation', type: 'string', label: 'Delete Confirmation Message' },
87
- { name: 'loading', type: 'boolean', label: 'Show Loading State' },
88
- { name: 'header', type: 'object', label: 'Custom Header' },
89
- { name: 'footer', type: 'object', label: 'Custom Footer' },
90
- ],
91
- defaultProps: {
92
- title: 'Detail View',
93
- showBack: true,
94
- showEdit: false,
95
- showDelete: false,
96
- sections: [],
97
- fields: [],
98
- tabs: [],
99
- related: [],
100
- }
101
- });
102
-
103
- // Register DetailSection component
104
- ComponentRegistry.register('detail-section', DetailSection, {
105
- namespace: 'plugin-detail',
106
- label: 'Detail Section',
107
- category: 'Detail Components',
108
- inputs: [
109
- { name: 'title', type: 'string', label: 'Title' },
110
- { name: 'description', type: 'string', label: 'Description' },
111
- { name: 'fields', type: 'array', label: 'Fields', required: true },
112
- { name: 'collapsible', type: 'boolean', label: 'Collapsible', defaultValue: false },
113
- { name: 'defaultCollapsed', type: 'boolean', label: 'Default Collapsed', defaultValue: false },
114
- { name: 'columns', type: 'number', label: 'Columns', defaultValue: 2 },
115
- { name: 'showBorder', type: 'boolean', label: 'Show Border', defaultValue: true },
116
- { name: 'headerColor', type: 'string', label: 'Header Color' },
117
- ],
118
- });
119
-
120
- // Register RelatedList component
121
- ComponentRegistry.register('related-list', RelatedList, {
122
- namespace: 'plugin-detail',
123
- label: 'Related List',
124
- category: 'Detail Components',
125
- inputs: [
126
- { name: 'title', type: 'string', label: 'Title', required: true },
127
- { name: 'type', type: 'enum', label: 'Type', enum: [
128
- { label: 'List', value: 'list' },
129
- { label: 'Grid', value: 'grid' },
130
- { label: 'Table', value: 'table' }
131
- ], defaultValue: 'table' },
132
- { name: 'api', type: 'string', label: 'API Endpoint' },
133
- { name: 'data', type: 'array', label: 'Data' },
134
- { name: 'columns', type: 'array', label: 'Columns' },
135
- ],
136
- });
137
-
138
- // Alias for generic view
139
- ComponentRegistry.register('detail', DetailView, {
140
- namespace: 'view',
141
- category: 'view',
142
- label: 'Detail',
143
- icon: 'FileText',
144
- inputs: [
145
- { name: 'objectName', type: 'string', label: 'Object Name', required: true },
146
- { name: 'recordId', type: 'string', label: 'Record ID' },
147
- { name: 'fields', type: 'array', label: 'Fields' },
148
- ]
149
- });
@@ -1,114 +0,0 @@
1
- /**
2
- * ObjectUI
3
- * Copyright (c) 2024-present ObjectStack Inc.
4
- *
5
- * This source code is licensed under the MIT license found in the
6
- * LICENSE file in the root directory of this source tree.
7
- */
8
-
9
- import { useObjectTranslation } from '@object-ui/react';
10
-
11
- /**
12
- * Create a safe translation hook with fallback to defaults.
13
- * Follows the same pattern as useGridTranslation / useListViewTranslation.
14
- *
15
- * @param defaults - Fallback English translations keyed by i18n key
16
- * @param testKey - A key to test if i18n is properly configured
17
- */
18
- export function createSafeTranslationHook(
19
- defaults: Record<string, string>,
20
- testKey: string,
21
- ) {
22
- return function useSafeTranslation() {
23
- try {
24
- const result = useObjectTranslation();
25
- const testValue = result.t(testKey);
26
- if (testValue === testKey) {
27
- return {
28
- t: (key: string, options?: Record<string, unknown>) => {
29
- let value = defaults[key] || key;
30
- if (options) {
31
- for (const [k, v] of Object.entries(options)) {
32
- value = value.replace(`{{${k}}}`, String(v));
33
- }
34
- }
35
- return value;
36
- },
37
- };
38
- }
39
- return { t: result.t };
40
- } catch {
41
- return {
42
- t: (key: string, options?: Record<string, unknown>) => {
43
- let value = defaults[key] || key;
44
- if (options) {
45
- for (const [k, v] of Object.entries(options)) {
46
- value = value.replace(`{{${k}}}`, String(v));
47
- }
48
- }
49
- return value;
50
- },
51
- };
52
- }
53
- };
54
- }
55
-
56
- /**
57
- * Default English translations for detail view components.
58
- * Used as fallback when no I18nProvider is available.
59
- */
60
- export const DETAIL_DEFAULT_TRANSLATIONS: Record<string, string> = {
61
- 'detail.back': 'Back',
62
- 'detail.edit': 'Edit',
63
- 'detail.editInline': 'Edit inline',
64
- 'detail.save': 'Save',
65
- 'detail.saveChanges': 'Save changes',
66
- 'detail.editFieldsInline': 'Edit fields inline',
67
- 'detail.share': 'Share',
68
- 'detail.duplicate': 'Duplicate',
69
- 'detail.export': 'Export',
70
- 'detail.viewHistory': 'View history',
71
- 'detail.delete': 'Delete',
72
- 'detail.moreActions': 'More actions',
73
- 'detail.addToFavorites': 'Add to favorites',
74
- 'detail.removeFromFavorites': 'Remove from favorites',
75
- 'detail.previousRecord': 'Previous record',
76
- 'detail.nextRecord': 'Next record',
77
- 'detail.recordOf': '{{current}} of {{total}}',
78
- 'detail.recordNotFound': 'Record not found',
79
- 'detail.recordNotFoundDescription': 'The record you are looking for does not exist or may have been deleted.',
80
- 'detail.goBack': 'Go back',
81
- 'detail.details': 'Details',
82
- 'detail.related': 'Related',
83
- 'detail.relatedRecords': '{{count}} records',
84
- 'detail.relatedRecordOne': '{{count}} record',
85
- 'detail.noRelatedRecords': 'No related records found',
86
- 'detail.loading': 'Loading...',
87
- 'detail.copyToClipboard': 'Copy to clipboard',
88
- 'detail.copied': 'Copied!',
89
- 'detail.deleteConfirmation': 'Are you sure you want to delete this record?',
90
- 'detail.editRecord': 'Edit record',
91
- 'detail.viewAll': 'View All',
92
- 'detail.new': 'New',
93
- 'detail.emptyValue': '—',
94
- 'detail.activity': 'Activity',
95
- 'detail.editRow': 'Edit',
96
- 'detail.deleteRow': 'Delete',
97
- 'detail.deleteRowConfirmation': 'Are you sure you want to delete this record?',
98
- 'detail.actions': 'Actions',
99
- 'detail.previousPage': 'Previous',
100
- 'detail.nextPage': 'Next',
101
- 'detail.pageOf': 'Page {{current}} of {{total}}',
102
- 'detail.sortBy': 'Sort by',
103
- 'detail.filterPlaceholder': 'Filter...',
104
- 'detail.highlightFields': 'Key Fields',
105
- };
106
-
107
- /**
108
- * Translation hook for detail view components.
109
- * Falls back to DETAIL_DEFAULT_TRANSLATIONS when no I18nProvider is available.
110
- */
111
- export const useDetailTranslation = createSafeTranslationHook(
112
- DETAIL_DEFAULT_TRANSLATIONS,
113
- 'detail.back',
114
- );
package/tsconfig.json DELETED
@@ -1,18 +0,0 @@
1
- {
2
- "extends": "../../tsconfig.json",
3
- "compilerOptions": {
4
- "outDir": "dist",
5
- "jsx": "react-jsx",
6
- "baseUrl": ".",
7
- "paths": {
8
- "@/*": ["src/*"]
9
- },
10
- "noEmit": false,
11
- "declaration": true,
12
- "composite": true,
13
- "declarationMap": true,
14
- "skipLibCheck": true
15
- },
16
- "include": ["src"],
17
- "exclude": ["node_modules", "dist", "**/*.test.ts", "**/*.test.tsx"]
18
- }
package/vite.config.ts DELETED
@@ -1,56 +0,0 @@
1
- import { defineConfig } from 'vite';
2
- import react from '@vitejs/plugin-react';
3
- import dts from 'vite-plugin-dts';
4
- import { resolve } from 'path';
5
-
6
- export default defineConfig({
7
- plugins: [
8
- react(),
9
- dts({
10
- insertTypesEntry: true,
11
- outDir: 'dist',
12
- tsconfigPath: './tsconfig.json',
13
- }),
14
- ],
15
- resolve: {
16
- alias: {
17
- '@': resolve(__dirname, './src'),
18
- '@object-ui/core': resolve(__dirname, '../core/src'),
19
- '@object-ui/types': resolve(__dirname, '../types/src'),
20
- '@object-ui/react': resolve(__dirname, '../react/src'),
21
- '@object-ui/components': resolve(__dirname, '../components/src'),
22
- '@object-ui/fields': resolve(__dirname, '../fields/src'),
23
- '@object-ui/plugin-dashboard': resolve(__dirname, '../plugin-dashboard/src'),
24
- '@object-ui/plugin-grid': resolve(__dirname, '../plugin-grid/src'),
25
- },
26
- },
27
- build: {
28
- lib: {
29
- entry: resolve(__dirname, 'src/index.tsx'),
30
- name: 'ObjectUIPluginDetail',
31
- formats: ['es', 'umd'],
32
- fileName: (format) => `index.${format === 'es' ? 'js' : 'umd.cjs'}`,
33
- },
34
- rollupOptions: {
35
- external: ['react', 'react-dom', 'react/jsx-runtime'],
36
- output: {
37
- globals: {
38
- react: 'React',
39
- 'react-dom': 'ReactDOM',
40
- 'react/jsx-runtime': 'jsxRuntime',
41
- },
42
- },
43
- },
44
- },
45
- test: {
46
- globals: true,
47
- environment: 'happy-dom',
48
- setupFiles: ['../../vitest.setup.tsx'],
49
- passWithNoTests: true,
50
- css: {
51
- modules: {
52
- classNameStrategy: 'non-scoped',
53
- },
54
- },
55
- },
56
- });
package/vitest.config.ts DELETED
@@ -1,13 +0,0 @@
1
- /// <reference types="vitest" />
2
- import { defineConfig } from 'vite';
3
- import react from '@vitejs/plugin-react';
4
- import path from 'path';
5
-
6
- export default defineConfig({
7
- plugins: [react()],
8
- test: {
9
- environment: 'happy-dom',
10
- globals: true,
11
- setupFiles: ['./vitest.setup.ts'],
12
- },
13
- });
package/vitest.setup.ts DELETED
@@ -1 +0,0 @@
1
- import '@testing-library/jest-dom';