@declarion/react 0.1.0

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 (136) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +21 -0
  3. package/dist-lib/JsonEditor-C5NOzsey.js +71 -0
  4. package/dist-lib/JsonEditor-C5NOzsey.js.map +1 -0
  5. package/dist-lib/api/auth.d.ts +11 -0
  6. package/dist-lib/api/client.d.ts +3 -0
  7. package/dist-lib/api/data.d.ts +28 -0
  8. package/dist-lib/api/entities.d.ts +75 -0
  9. package/dist-lib/api/events.d.ts +9 -0
  10. package/dist-lib/api/params.d.ts +3 -0
  11. package/dist-lib/api/properties.d.ts +3 -0
  12. package/dist-lib/api/schema.d.ts +2 -0
  13. package/dist-lib/api/status.d.ts +2 -0
  14. package/dist-lib/app.d.ts +1 -0
  15. package/dist-lib/components/columns/ColumnPicker.d.ts +15 -0
  16. package/dist-lib/components/detail-layout/AssociatedBlock.d.ts +8 -0
  17. package/dist-lib/components/detail-layout/AssociatedToolbar.d.ts +13 -0
  18. package/dist-lib/components/detail-layout/ChildrenBlock.d.ts +15 -0
  19. package/dist-lib/components/detail-layout/ChildrenCards.d.ts +2 -0
  20. package/dist-lib/components/detail-layout/ChildrenList.d.ts +2 -0
  21. package/dist-lib/components/detail-layout/ChildrenTable.d.ts +2 -0
  22. package/dist-lib/components/detail-layout/ChildrenTimeline.d.ts +2 -0
  23. package/dist-lib/components/detail-layout/DraggableChildrenTable.d.ts +15 -0
  24. package/dist-lib/components/detail-layout/EditableChildrenTable.d.ts +15 -0
  25. package/dist-lib/components/detail-layout/FieldsBlock.d.ts +7 -0
  26. package/dist-lib/components/detail-layout/LayoutColumn.d.ts +9 -0
  27. package/dist-lib/components/detail-layout/LayoutRenderer.d.ts +42 -0
  28. package/dist-lib/components/detail-layout/LayoutRow.d.ts +8 -0
  29. package/dist-lib/components/detail-layout/LayoutTabs.d.ts +8 -0
  30. package/dist-lib/components/detail-layout/PropertiesBlock.d.ts +8 -0
  31. package/dist-lib/components/detail-layout/QuickAddForm.d.ts +10 -0
  32. package/dist-lib/components/detail-layout/SectionBlock.d.ts +8 -0
  33. package/dist-lib/components/detail-layout/StatusesBlock.d.ts +8 -0
  34. package/dist-lib/components/detail-layout/TimelineComposer.d.ts +10 -0
  35. package/dist-lib/components/detail-layout/index.d.ts +18 -0
  36. package/dist-lib/components/detail-layout/useQuickAdd.d.ts +17 -0
  37. package/dist-lib/components/fields/BoolField.d.ts +2 -0
  38. package/dist-lib/components/fields/EmailField.d.ts +2 -0
  39. package/dist-lib/components/fields/EnumField.d.ts +2 -0
  40. package/dist-lib/components/fields/IntArrayField.d.ts +2 -0
  41. package/dist-lib/components/fields/JsonEditor.d.ts +9 -0
  42. package/dist-lib/components/fields/JsonField.d.ts +2 -0
  43. package/dist-lib/components/fields/MultilangField.d.ts +2 -0
  44. package/dist-lib/components/fields/MultilangTextField.d.ts +2 -0
  45. package/dist-lib/components/fields/NumberField.d.ts +2 -0
  46. package/dist-lib/components/fields/PasswordField.d.ts +2 -0
  47. package/dist-lib/components/fields/RefField.d.ts +2 -0
  48. package/dist-lib/components/fields/SecretField.d.ts +2 -0
  49. package/dist-lib/components/fields/StringArrayField.d.ts +2 -0
  50. package/dist-lib/components/fields/StringField.d.ts +2 -0
  51. package/dist-lib/components/fields/StructureField.d.ts +2 -0
  52. package/dist-lib/components/fields/TextField.d.ts +2 -0
  53. package/dist-lib/components/fields/TimestampField.d.ts +2 -0
  54. package/dist-lib/components/fields/UrlField.d.ts +2 -0
  55. package/dist-lib/components/fields/index.d.ts +16 -0
  56. package/dist-lib/components/filters/FilterChips.d.ts +16 -0
  57. package/dist-lib/components/filters/FilterDrawer.d.ts +27 -0
  58. package/dist-lib/components/layout/Layout.d.ts +1 -0
  59. package/dist-lib/components/layout/Sidebar.d.ts +1 -0
  60. package/dist-lib/components/layout/TabBar.d.ts +1 -0
  61. package/dist-lib/components/layout/ThemeToggle.d.ts +1 -0
  62. package/dist-lib/components/layout/TopBar.d.ts +1 -0
  63. package/dist-lib/components/pages/AdminCatalogPage.d.ts +1 -0
  64. package/dist-lib/components/pages/LoginPage.d.ts +1 -0
  65. package/dist-lib/components/pages/NotFoundPage.d.ts +1 -0
  66. package/dist-lib/components/pages/SSOCallbackPage.d.ts +1 -0
  67. package/dist-lib/components/pages/SignupPage.d.ts +1 -0
  68. package/dist-lib/components/pages/SmartDetailPage.d.ts +5 -0
  69. package/dist-lib/components/pages/SmartListPage.d.ts +5 -0
  70. package/dist-lib/components/pages/SmartRecordListPage.d.ts +5 -0
  71. package/dist-lib/components/shared/ActionButton.d.ts +24 -0
  72. package/dist-lib/components/shared/ActionConfirmDialog.d.ts +10 -0
  73. package/dist-lib/components/shared/ActionDialog.d.ts +22 -0
  74. package/dist-lib/components/shared/ActionResultDialog.d.ts +18 -0
  75. package/dist-lib/components/shared/AssociationTabs.d.ts +9 -0
  76. package/dist-lib/components/shared/BatchActionProgress.d.ts +18 -0
  77. package/dist-lib/components/shared/ConfirmDialog.d.ts +11 -0
  78. package/dist-lib/components/shared/DynamicIcon.d.ts +6 -0
  79. package/dist-lib/components/shared/EmptyState.d.ts +9 -0
  80. package/dist-lib/components/shared/ErrorBoundary.d.ts +22 -0
  81. package/dist-lib/components/shared/LoadingSkeleton.d.ts +5 -0
  82. package/dist-lib/components/shared/PageHeader.d.ts +8 -0
  83. package/dist-lib/components/shared/RowActionItem.d.ts +11 -0
  84. package/dist-lib/components/shared/StatusGroupsDisplay.d.ts +11 -0
  85. package/dist-lib/components/ui/alert-dialog.d.ts +14 -0
  86. package/dist-lib/components/ui/badge.d.ts +9 -0
  87. package/dist-lib/components/ui/button.d.ts +11 -0
  88. package/dist-lib/components/ui/card.d.ts +8 -0
  89. package/dist-lib/components/ui/dialog.d.ts +13 -0
  90. package/dist-lib/components/ui/dropdown-menu.d.ts +24 -0
  91. package/dist-lib/components/ui/input.d.ts +3 -0
  92. package/dist-lib/components/ui/label.d.ts +5 -0
  93. package/dist-lib/components/ui/select.d.ts +13 -0
  94. package/dist-lib/components/ui/separator.d.ts +4 -0
  95. package/dist-lib/components/ui/skeleton.d.ts +2 -0
  96. package/dist-lib/components/ui/table.d.ts +10 -0
  97. package/dist-lib/components/ui/textarea.d.ts +3 -0
  98. package/dist-lib/components/views/ViewSwitcher.d.ts +27 -0
  99. package/dist-lib/hooks/useAssociatedData.d.ts +10 -0
  100. package/dist-lib/hooks/useAuth.d.ts +21 -0
  101. package/dist-lib/hooks/useChildrenData.d.ts +3 -0
  102. package/dist-lib/hooks/useColumns.d.ts +13 -0
  103. package/dist-lib/hooks/useDebounce.d.ts +1 -0
  104. package/dist-lib/hooks/useEntity.d.ts +2 -0
  105. package/dist-lib/hooks/useEntityData.d.ts +2 -0
  106. package/dist-lib/hooks/useEntityItem.d.ts +2 -0
  107. package/dist-lib/hooks/useFilters.d.ts +11 -0
  108. package/dist-lib/hooks/useMutations.d.ts +13 -0
  109. package/dist-lib/hooks/useObjectStatus.d.ts +5 -0
  110. package/dist-lib/hooks/useParams.d.ts +2 -0
  111. package/dist-lib/hooks/useProperties.d.ts +5 -0
  112. package/dist-lib/hooks/useSSE.d.ts +1 -0
  113. package/dist-lib/hooks/useSchema.d.ts +1 -0
  114. package/dist-lib/hooks/useScreen.d.ts +2 -0
  115. package/dist-lib/hooks/useTabNavigate.d.ts +8 -0
  116. package/dist-lib/hooks/useViews.d.ts +6 -0
  117. package/dist-lib/index.d.ts +37 -0
  118. package/dist-lib/index.js +8424 -0
  119. package/dist-lib/index.js.map +1 -0
  120. package/dist-lib/lib/actions.d.ts +43 -0
  121. package/dist-lib/lib/child-config.d.ts +23 -0
  122. package/dist-lib/lib/children-validation.d.ts +3 -0
  123. package/dist-lib/lib/filters.d.ts +42 -0
  124. package/dist-lib/lib/quick-add.d.ts +2 -0
  125. package/dist-lib/lib/size-value.d.ts +16 -0
  126. package/dist-lib/lib/theme-utils.d.ts +3 -0
  127. package/dist-lib/lib/timestamp.d.ts +8 -0
  128. package/dist-lib/lib/utils.d.ts +2 -0
  129. package/dist-lib/main.d.ts +1 -0
  130. package/dist-lib/stores/auth.d.ts +15 -0
  131. package/dist-lib/stores/screen-registry.d.ts +3 -0
  132. package/dist-lib/stores/tabs.d.ts +21 -0
  133. package/dist-lib/stores/theme.d.ts +10 -0
  134. package/dist-lib/types/api.d.ts +178 -0
  135. package/dist-lib/types/schema.d.ts +380 -0
  136. package/package.json +85 -0
@@ -0,0 +1,380 @@
1
+ export type LocalizedString = Record<string, string>;
2
+ export declare function loc(ls: LocalizedString | undefined, lang?: string): string;
3
+ export declare function fieldDisplayName(field: EntityField, fieldName: string, entities?: Record<string, Entity>): string;
4
+ export interface RefDisplay {
5
+ field: string;
6
+ }
7
+ export interface RefConfig {
8
+ entity: string;
9
+ field?: string;
10
+ display?: RefDisplay;
11
+ fields?: string[];
12
+ }
13
+ export interface UnitConfig {
14
+ storage: string;
15
+ display?: string;
16
+ }
17
+ export interface EntityField {
18
+ type: string;
19
+ required?: boolean;
20
+ primary?: boolean;
21
+ auto?: boolean;
22
+ timezone?: string;
23
+ precision?: number;
24
+ scale?: number;
25
+ unit?: UnitConfig;
26
+ default?: unknown;
27
+ display?: {
28
+ name: LocalizedString;
29
+ width?: number;
30
+ widget?: string;
31
+ is_listable?: boolean;
32
+ is_filterable?: boolean;
33
+ ref_display_field?: string;
34
+ span?: number | "full";
35
+ };
36
+ values?: Array<{
37
+ code: string;
38
+ name: LocalizedString;
39
+ description?: LocalizedString;
40
+ color?: string;
41
+ }>;
42
+ enum?: string;
43
+ ref?: RefConfig;
44
+ structure?: string;
45
+ array?: boolean;
46
+ }
47
+ export interface StructureDef {
48
+ name: LocalizedString;
49
+ description?: LocalizedString;
50
+ fields: Record<string, EntityField>;
51
+ field_order: string[];
52
+ }
53
+ export type ChildDisplayMode = "table" | "timeline" | "list" | "cards";
54
+ export interface TimelineConfig {
55
+ type_field?: string;
56
+ time_field?: string;
57
+ summary_field?: string;
58
+ content_field?: string;
59
+ author_field?: string;
60
+ scroll?: boolean;
61
+ auto_scroll?: "none" | "bottom" | "top";
62
+ }
63
+ export interface CardsConfig {
64
+ columns_count?: number;
65
+ header_field?: string;
66
+ badge_field?: string;
67
+ }
68
+ export interface ChildQuickAdd {
69
+ fields: string[];
70
+ defaults?: Record<string, unknown>;
71
+ placeholder?: LocalizedString;
72
+ }
73
+ export interface ChildDisplay {
74
+ name: LocalizedString;
75
+ icon?: string;
76
+ mode?: ChildDisplayMode;
77
+ columns?: string[];
78
+ sort?: string;
79
+ limit?: number;
80
+ timeline?: TimelineConfig;
81
+ cards?: CardsConfig;
82
+ editable?: boolean;
83
+ searchable?: boolean;
84
+ filters?: string[];
85
+ position_field?: string;
86
+ }
87
+ export interface ChildRelation {
88
+ entity: string;
89
+ foreign_key: string | string[];
90
+ display?: ChildDisplay;
91
+ quick_add?: ChildQuickAdd;
92
+ }
93
+ export interface StatusDef {
94
+ code: string;
95
+ name: LocalizedString;
96
+ description?: LocalizedString;
97
+ color?: string;
98
+ is_final?: boolean;
99
+ }
100
+ export interface StatusGroupDef {
101
+ name: LocalizedString;
102
+ description?: LocalizedString;
103
+ is_main?: boolean;
104
+ initial: string;
105
+ statuses: StatusDef[];
106
+ transitions?: Record<string, string[]>;
107
+ }
108
+ export interface PropertyDef {
109
+ name: LocalizedString;
110
+ description?: LocalizedString;
111
+ type: string;
112
+ display?: EntityField["display"];
113
+ values?: EntityField["values"];
114
+ enum?: string;
115
+ ref?: RefConfig;
116
+ structure?: string;
117
+ readonly?: boolean;
118
+ }
119
+ export declare function propertyToField(prop: PropertyDef): EntityField;
120
+ export interface EnumDef {
121
+ name: LocalizedString;
122
+ description?: LocalizedString;
123
+ values: Array<{
124
+ code: string;
125
+ name: LocalizedString;
126
+ description?: LocalizedString;
127
+ color?: string;
128
+ }>;
129
+ }
130
+ export interface ParameterDef {
131
+ name: LocalizedString;
132
+ description?: LocalizedString;
133
+ type: string;
134
+ default?: unknown;
135
+ is_public?: boolean;
136
+ category?: string;
137
+ }
138
+ export interface AssociationDisplay {
139
+ name?: LocalizedString;
140
+ icon?: string;
141
+ }
142
+ export interface AssociationDef {
143
+ target: string;
144
+ display?: AssociationDisplay;
145
+ source: string;
146
+ code: string;
147
+ }
148
+ export interface Entity {
149
+ table: string;
150
+ primary_key?: string[];
151
+ virtual?: boolean;
152
+ readonly?: boolean;
153
+ default_timezone?: string;
154
+ display: {
155
+ name: LocalizedString;
156
+ name_plural: LocalizedString;
157
+ description?: LocalizedString;
158
+ icon: string;
159
+ display_field?: string;
160
+ };
161
+ fields: Record<string, EntityField>;
162
+ field_order: string[];
163
+ soft_delete?: string;
164
+ tenant_key?: string;
165
+ children?: ChildRelation[];
166
+ status_groups?: Record<string, StatusGroupDef>;
167
+ properties?: Record<string, PropertyDef>;
168
+ search_fields?: string[];
169
+ actions?: Record<string, Action>;
170
+ handlers?: Record<string, HandlerDef>;
171
+ associations?: Record<string, AssociationDef>;
172
+ }
173
+ export declare function getPrimaryKeyFields(entity: Entity): string[];
174
+ export type PkValues = Record<string, string>;
175
+ export declare function extractPkValues(entity: Entity, record: Record<string, unknown>): PkValues;
176
+ export declare function pkValuesToId(pkValues: PkValues): string;
177
+ export declare function isCompositePk(entity: Entity): boolean;
178
+ export type SizeValue = string;
179
+ export interface SectionNode {
180
+ name: LocalizedString;
181
+ items: LayoutNode[];
182
+ collapsed?: boolean;
183
+ columns?: number;
184
+ }
185
+ export interface RowConfig {
186
+ items: LayoutNode[];
187
+ gap?: number;
188
+ resizable?: boolean;
189
+ stack_below?: number | "never";
190
+ width?: SizeValue;
191
+ height?: SizeValue;
192
+ }
193
+ export interface ColumnConfig {
194
+ items: LayoutNode[];
195
+ gap?: number;
196
+ width?: SizeValue;
197
+ height?: SizeValue;
198
+ }
199
+ export interface TabsConfig {
200
+ items: LayoutNode[];
201
+ }
202
+ export interface LayoutNode {
203
+ row?: RowConfig;
204
+ column?: ColumnConfig;
205
+ tabs?: TabsConfig;
206
+ section?: SectionNode;
207
+ children?: string;
208
+ associated?: string;
209
+ properties?: true | string[];
210
+ statuses?: true | string[];
211
+ fields?: string[];
212
+ width?: SizeValue;
213
+ height?: SizeValue;
214
+ min_width?: string;
215
+ max_width?: string;
216
+ label?: LocalizedString;
217
+ icon?: string;
218
+ mode?: ChildDisplayMode;
219
+ columns?: string[];
220
+ sort?: string;
221
+ limit?: number;
222
+ quick_add?: ChildQuickAdd;
223
+ timeline?: TimelineConfig;
224
+ cards?: CardsConfig;
225
+ editable?: boolean;
226
+ searchable?: boolean;
227
+ filters?: string[];
228
+ position_field?: string;
229
+ }
230
+ export interface Screen {
231
+ type: "list" | "detail" | "custom" | "record_list";
232
+ entity?: string;
233
+ route: string;
234
+ component?: string;
235
+ display?: {
236
+ name: LocalizedString;
237
+ icon: string;
238
+ };
239
+ columns?: string[];
240
+ default_columns?: string[];
241
+ filters?: string[];
242
+ default_filters?: string[];
243
+ search_fields?: string[];
244
+ sort_default?: string;
245
+ actions?: string[];
246
+ row_actions?: string[];
247
+ items?: LayoutNode[];
248
+ sidebar?: LayoutNode[];
249
+ sidebar_width?: string;
250
+ self?: boolean;
251
+ list_width?: string;
252
+ list_resizable?: boolean;
253
+ fixed_filters?: Record<string, unknown>;
254
+ views?: ViewDefinition[];
255
+ }
256
+ /** System view (preset) defined in screen YAML. Read-only. */
257
+ export interface ViewDefinition {
258
+ code: string;
259
+ name: LocalizedString;
260
+ icon?: string;
261
+ filters?: Array<{
262
+ field: string;
263
+ op: string;
264
+ value?: unknown;
265
+ }>;
266
+ columns?: string[];
267
+ sort?: string;
268
+ }
269
+ export interface NavNode {
270
+ screen?: string;
271
+ name?: LocalizedString;
272
+ icon?: string;
273
+ items?: NavNode[];
274
+ }
275
+ export interface HandlerParamDisplay {
276
+ name?: LocalizedString;
277
+ description?: LocalizedString;
278
+ widget?: string;
279
+ }
280
+ export interface HandlerParam {
281
+ type?: string;
282
+ required?: boolean;
283
+ default?: unknown;
284
+ hidden?: boolean;
285
+ enum?: string;
286
+ values?: Array<{
287
+ code: string;
288
+ name: LocalizedString;
289
+ description?: LocalizedString;
290
+ color?: string;
291
+ }>;
292
+ ref?: string;
293
+ display?: HandlerParamDisplay;
294
+ }
295
+ export interface ActionCondition {
296
+ status?: string[];
297
+ field?: string;
298
+ op?: string;
299
+ value?: unknown;
300
+ }
301
+ export interface Action {
302
+ handler?: string;
303
+ type?: string;
304
+ association?: string;
305
+ scope?: string;
306
+ batch_mode?: string;
307
+ entity?: string;
308
+ display: {
309
+ name: LocalizedString;
310
+ icon: string;
311
+ };
312
+ visibility?: string[];
313
+ confirmation?: LocalizedString;
314
+ conditions?: ActionCondition[];
315
+ resolved_params?: Record<string, HandlerParam>;
316
+ resolved_param_order?: string[];
317
+ }
318
+ export interface LanguageDef {
319
+ code: string;
320
+ name: LocalizedString;
321
+ }
322
+ export interface HandlerDef {
323
+ code: string;
324
+ type: string;
325
+ entity?: string;
326
+ display?: {
327
+ name?: LocalizedString;
328
+ icon?: string;
329
+ };
330
+ params?: Record<string, HandlerParam>;
331
+ param_order?: string[];
332
+ success_event?: string;
333
+ }
334
+ export interface Branding {
335
+ app_name?: string;
336
+ app_logo?: string;
337
+ app_initial?: string;
338
+ accent_color?: string;
339
+ }
340
+ export interface ThemeDef {
341
+ extends?: string;
342
+ background?: string;
343
+ foreground?: string;
344
+ card?: string;
345
+ card_foreground?: string;
346
+ popover?: string;
347
+ popover_foreground?: string;
348
+ primary?: string;
349
+ primary_foreground?: string;
350
+ secondary?: string;
351
+ secondary_foreground?: string;
352
+ muted?: string;
353
+ muted_foreground?: string;
354
+ accent?: string;
355
+ accent_foreground?: string;
356
+ destructive?: string;
357
+ destructive_foreground?: string;
358
+ border?: string;
359
+ input?: string;
360
+ ring?: string;
361
+ sidebar?: string;
362
+ sidebar_foreground?: string;
363
+ sidebar_border?: string;
364
+ sidebar_accent?: string;
365
+ sidebar_muted?: string;
366
+ radius?: string;
367
+ }
368
+ export interface Schema {
369
+ languages: LanguageDef[];
370
+ structures: Record<string, StructureDef>;
371
+ entities: Record<string, Entity>;
372
+ screens: Record<string, Screen>;
373
+ navigation: NavNode[];
374
+ actions: Record<string, Action>;
375
+ handlers?: Record<string, HandlerDef>;
376
+ enums: Record<string, EnumDef>;
377
+ parameters: Record<string, ParameterDef>;
378
+ branding?: Branding;
379
+ themes?: Record<string, ThemeDef>;
380
+ }
package/package.json ADDED
@@ -0,0 +1,85 @@
1
+ {
2
+ "name": "@declarion/react",
3
+ "version": "0.1.0",
4
+ "private": false,
5
+ "license": "MIT",
6
+ "description": "React SDK for Declarion, the schema-driven business apps platform.",
7
+ "homepage": "https://declarion.io",
8
+ "type": "module",
9
+ "main": "./dist-lib/index.js",
10
+ "module": "./dist-lib/index.js",
11
+ "types": "./dist-lib/index.d.ts",
12
+ "exports": {
13
+ ".": {
14
+ "types": "./dist-lib/index.d.ts",
15
+ "import": "./dist-lib/index.js",
16
+ "default": "./dist-lib/index.js"
17
+ },
18
+ "./styles.css": "./dist-lib/declarion-react.css"
19
+ },
20
+ "files": [
21
+ "dist-lib",
22
+ "LICENSE",
23
+ "README.md"
24
+ ],
25
+ "publishConfig": {
26
+ "access": "public"
27
+ },
28
+ "peerDependencies": {
29
+ "react": "^19.0.0",
30
+ "react-dom": "^19.0.0"
31
+ },
32
+ "dependencies": {
33
+ "@dnd-kit/core": "^6.3.1",
34
+ "@dnd-kit/sortable": "^10.0.0",
35
+ "@dnd-kit/utilities": "^3.2.2",
36
+ "@radix-ui/react-alert-dialog": "^1.1.0",
37
+ "@radix-ui/react-dialog": "^1.1.0",
38
+ "@radix-ui/react-dropdown-menu": "^2.1.0",
39
+ "@radix-ui/react-label": "^2.1.0",
40
+ "@radix-ui/react-select": "^2.1.0",
41
+ "@radix-ui/react-separator": "^1.1.0",
42
+ "@radix-ui/react-slot": "^1.1.0",
43
+ "@tanstack/react-query": "^5.62.0",
44
+ "@tanstack/react-table": "^8.20.0",
45
+ "@tanstack/react-virtual": "^3.11.0",
46
+ "class-variance-authority": "^0.7.0",
47
+ "clsx": "^2.1.0",
48
+ "lucide-react": "^0.468.0",
49
+ "react-markdown": "^10.1.0",
50
+ "react-router-dom": "^6.28.0",
51
+ "recharts": "^2.15.0",
52
+ "remark-breaks": "^4.0.0",
53
+ "sonner": "^1.7.0",
54
+ "tailwind-merge": "^2.6.0",
55
+ "vanilla-jsoneditor": "^3.11.0",
56
+ "zustand": "^5.0.0"
57
+ },
58
+ "devDependencies": {
59
+ "@tailwindcss/typography": "^0.5.19",
60
+ "@tailwindcss/vite": "^4.0.0",
61
+ "@testing-library/dom": "^10.4.1",
62
+ "@testing-library/jest-dom": "^6.9.1",
63
+ "@testing-library/react": "^16.3.2",
64
+ "@testing-library/user-event": "^14.6.1",
65
+ "@types/react": "^19.0.0",
66
+ "@types/react-dom": "^19.0.0",
67
+ "@vitejs/plugin-react": "^4.3.0",
68
+ "jsdom": "^29.0.1",
69
+ "msw": "^2.12.14",
70
+ "react": "^19.0.0",
71
+ "react-dom": "^19.0.0",
72
+ "tailwindcss": "^4.0.0",
73
+ "typescript": "^5.7.0",
74
+ "vite": "^6.0.0",
75
+ "vitest": "^4.1.0"
76
+ },
77
+ "scripts": {
78
+ "dev": "vite",
79
+ "build": "tsc --noEmit && vite build",
80
+ "build:lib": "vite build --config vite.lib.config.ts && tsc -p tsconfig.lib.json",
81
+ "lint": "tsc --noEmit",
82
+ "test": "vitest run",
83
+ "preview": "vite preview"
84
+ }
85
+ }