@camstack/addon-admin-ui 0.1.2 → 0.1.3

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 (127) hide show
  1. package/dist/assets/index-DjELGD4R.css +1 -0
  2. package/dist/assets/index-w55PwKyu.js +598 -0
  3. package/{index.html → dist/index.html} +3 -1
  4. package/dist/server/addon.d.ts +11 -0
  5. package/dist/server/addon.js +50 -0
  6. package/dist/server/addon.js.map +1 -0
  7. package/package.json +4 -1
  8. package/src/App.tsx +0 -71
  9. package/src/components/addons/AddonCard.tsx +0 -355
  10. package/src/components/addons/AddonUploadZone.tsx +0 -69
  11. package/src/components/addons/CapabilityBadge.tsx +0 -55
  12. package/src/components/addons/CapabilityMap.tsx +0 -133
  13. package/src/components/addons/UpdatesList.tsx +0 -108
  14. package/src/components/agents/AgentCard.tsx +0 -281
  15. package/src/components/agents/AgentLogs.tsx +0 -231
  16. package/src/components/agents/ProcessList.tsx +0 -127
  17. package/src/components/agents/ProcessTree.tsx +0 -369
  18. package/src/components/agents/TaskList.tsx +0 -68
  19. package/src/components/cameras/CameraCard.tsx +0 -60
  20. package/src/components/cameras/LiveEventsPanel.tsx +0 -91
  21. package/src/components/cameras/ProviderSection.tsx +0 -50
  22. package/src/components/cameras/StreamArea.tsx +0 -107
  23. package/src/components/cameras/tabs/AddonsTab.tsx +0 -113
  24. package/src/components/cameras/tabs/CameraEventsTab.tsx +0 -129
  25. package/src/components/cameras/tabs/PipelineTab.tsx +0 -118
  26. package/src/components/cameras/tabs/StreamsTab.tsx +0 -114
  27. package/src/components/dashboard/BlockPicker.tsx +0 -54
  28. package/src/components/dashboard/BlockWrapper.tsx +0 -97
  29. package/src/components/dashboard/DashboardGrid.tsx +0 -160
  30. package/src/components/dashboard/block-registry.ts +0 -15
  31. package/src/components/dashboard/blocks/PipelineStagesBlock.tsx +0 -39
  32. package/src/components/dashboard/blocks/StorageBlock.tsx +0 -66
  33. package/src/components/dashboard/blocks/SystemStatusBlock.tsx +0 -67
  34. package/src/components/dashboard/blocks/index.ts +0 -32
  35. package/src/components/device/DeviceHeader.tsx +0 -116
  36. package/src/components/device/FloatingPanel.tsx +0 -132
  37. package/src/components/device/FloatingPanelManager.tsx +0 -167
  38. package/src/components/device/PanelContent.tsx +0 -196
  39. package/src/components/device/QuickConfigWizard.tsx +0 -507
  40. package/src/components/device/tabs/DetectionConfigTab.tsx +0 -96
  41. package/src/components/device/tabs/EventsTab.tsx +0 -19
  42. package/src/components/device/tabs/LogsTab.tsx +0 -22
  43. package/src/components/device/tabs/OverviewTab.tsx +0 -104
  44. package/src/components/device/tabs/ProviderSettingsTab.tsx +0 -34
  45. package/src/components/device/tabs/RecordingTab.tsx +0 -47
  46. package/src/components/device/tabs/ReplTab.tsx +0 -153
  47. package/src/components/device/tabs/TrackTrailTab.tsx +0 -49
  48. package/src/components/device/tabs/ZonesTab.tsx +0 -98
  49. package/src/components/device/zone-editor/ZoneCanvas.tsx +0 -354
  50. package/src/components/device/zone-editor/ZoneForm.tsx +0 -128
  51. package/src/components/device/zone-editor/ZoneList.tsx +0 -150
  52. package/src/components/form-builder/FormBuilder.tsx +0 -135
  53. package/src/components/form-builder/FormField.tsx +0 -732
  54. package/src/components/form-builder/ModelSelector.tsx +0 -239
  55. package/src/components/integrations/AddDeviceDialog.tsx +0 -205
  56. package/src/components/integrations/CompactDeviceCard.tsx +0 -35
  57. package/src/components/integrations/DeviceCard.tsx +0 -29
  58. package/src/components/integrations/DeviceDiscoveryStep.tsx +0 -105
  59. package/src/components/integrations/DeviceGrid.tsx +0 -79
  60. package/src/components/integrations/DeviceGroupHeader.tsx +0 -17
  61. package/src/components/integrations/DiscoveredDeviceCard.tsx +0 -26
  62. package/src/components/integrations/IntegrationCard.tsx +0 -40
  63. package/src/components/integrations/IntegrationWizard.tsx +0 -172
  64. package/src/components/integrations/ProviderConfigForm.tsx +0 -89
  65. package/src/components/integrations/ProviderPicker.tsx +0 -91
  66. package/src/components/integrations/SnapshotPopover.tsx +0 -68
  67. package/src/components/metrics/AgentLoad.tsx +0 -105
  68. package/src/components/metrics/IntegrationUsage.tsx +0 -73
  69. package/src/components/metrics/PipelineStatus.tsx +0 -74
  70. package/src/components/metrics/ProcessResources.tsx +0 -123
  71. package/src/components/pipeline/PhaseSettings.tsx +0 -131
  72. package/src/components/shared/CapabilityBadges.tsx +0 -30
  73. package/src/components/shared/ProviderIcon.tsx +0 -42
  74. package/src/components/shared/StatusBadge.tsx +0 -23
  75. package/src/components/shared/WebRtcPlayer.tsx +0 -211
  76. package/src/components/timeline/EventMarker.tsx +0 -32
  77. package/src/components/timeline/TimelineBar.tsx +0 -131
  78. package/src/components/ui/ConfirmDialog.tsx +0 -115
  79. package/src/components/ui/ToastContainer.tsx +0 -92
  80. package/src/contexts/auth-context.tsx +0 -91
  81. package/src/hooks/useBackendClient.ts +0 -6
  82. package/src/hooks/useTheme.ts +0 -1
  83. package/src/i18n/en.json +0 -164
  84. package/src/i18n/index.ts +0 -29
  85. package/src/i18n/it.json +0 -164
  86. package/src/index.css +0 -63
  87. package/src/layouts/AddonPageLoader.tsx +0 -120
  88. package/src/layouts/AppLayout.tsx +0 -254
  89. package/src/layouts/ProtectedRoute.tsx +0 -25
  90. package/src/lib/addon-page-context.ts +0 -29
  91. package/src/lib/backend.ts +0 -16
  92. package/src/main.tsx +0 -21
  93. package/src/pages/AccessDenied.tsx +0 -22
  94. package/src/pages/Cameras.tsx +0 -127
  95. package/src/pages/Dashboard.tsx +0 -6
  96. package/src/pages/DeviceDetail.tsx +0 -175
  97. package/src/pages/IntegrationDetail.tsx +0 -222
  98. package/src/pages/Integrations.tsx +0 -333
  99. package/src/pages/Login.tsx +0 -106
  100. package/src/pages/Metrics.tsx +0 -18
  101. package/src/pages/PipelineConfig.tsx +0 -282
  102. package/src/pages/Showroom.tsx +0 -351
  103. package/src/pages/Timeline.tsx +0 -269
  104. package/src/pages/system/Addons.tsx +0 -396
  105. package/src/pages/system/Agents.tsx +0 -362
  106. package/src/pages/system/Logs.tsx +0 -131
  107. package/src/pages/system/Models.tsx +0 -102
  108. package/src/pages/system/Processes.tsx +0 -129
  109. package/src/pages/system/Repl.tsx +0 -148
  110. package/src/pages/system/Settings.tsx +0 -168
  111. package/src/pages/system/Users.tsx +0 -174
  112. package/src/server/addon.ts +0 -54
  113. package/src/types/config-ui.ts +0 -28
  114. package/src/types/dashboard.ts +0 -39
  115. package/tsconfig.json +0 -29
  116. package/tsconfig.server.json +0 -16
  117. package/tsup.config.ts +0 -20
  118. package/vite.config.ts +0 -68
  119. /package/{public → dist}/brand/logo-dark.svg +0 -0
  120. /package/{public → dist}/brand/logo-horizontal-dark.svg +0 -0
  121. /package/{public → dist}/brand/logo-horizontal-light.svg +0 -0
  122. /package/{public → dist}/brand/logo-light.svg +0 -0
  123. /package/{public → dist}/brand/logo-wide-dark.svg +0 -0
  124. /package/{public → dist}/brand/logo-wide-light.svg +0 -0
  125. /package/{public → dist}/favicon.svg +0 -0
  126. /package/{public → dist}/vendor/react-jsx-runtime.mjs +0 -0
  127. /package/{public → dist}/vendor/react.mjs +0 -0
@@ -1,135 +0,0 @@
1
- import { useState } from 'react'
2
- import type { ConfigUISchema, ConfigSection } from '../../types/config-ui'
3
- import { FormField } from './FormField'
4
-
5
- // ---------------------------------------------------------------------------
6
- // Translation support
7
- // ---------------------------------------------------------------------------
8
-
9
- /**
10
- * Optional function that resolves an i18n key to a translated string.
11
- * When provided, labels and descriptions that look like i18n keys
12
- * (contain at least one dot, e.g. 'addon.settings.title') are passed
13
- * through this function. Plain text labels are returned as-is.
14
- */
15
- export type TranslationFn = (key: string) => string
16
-
17
- /** Returns true if the string looks like an i18n key (contains a dot separator) */
18
- function isI18nKey(value: string): boolean {
19
- return /^[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)+$/.test(value)
20
- }
21
-
22
- /** Resolve a label/description through the translation function if applicable */
23
- export function resolveLabel(value: string | undefined, t?: TranslationFn): string | undefined {
24
- if (value === undefined) return undefined
25
- if (t && isI18nKey(value)) return t(value)
26
- return value
27
- }
28
-
29
- // ---------------------------------------------------------------------------
30
- // Props
31
- // ---------------------------------------------------------------------------
32
-
33
- interface FormBuilderProps {
34
- schema: ConfigUISchema
35
- values: Record<string, unknown>
36
- onChange: (values: Record<string, unknown>) => void
37
- disabled?: boolean
38
- /** Optional translation function for resolving i18n keys in labels and descriptions */
39
- translationFn?: TranslationFn
40
- }
41
-
42
- // ---------------------------------------------------------------------------
43
- // Section renderer
44
- // ---------------------------------------------------------------------------
45
-
46
- function SectionCard({
47
- section,
48
- values,
49
- onChange,
50
- disabled,
51
- translationFn,
52
- }: {
53
- section: ConfigSection
54
- values: Record<string, unknown>
55
- onChange: (key: string, value: unknown) => void
56
- disabled?: boolean
57
- translationFn?: TranslationFn
58
- }) {
59
- const [collapsed, setCollapsed] = useState(section.defaultCollapsed ?? false)
60
- const isAccordion = section.style === 'accordion'
61
-
62
- const columns = section.columns ?? 2
63
- const gridClass =
64
- columns === 1
65
- ? 'grid-cols-1'
66
- : columns === 3
67
- ? 'grid-cols-3'
68
- : columns === 4
69
- ? 'grid-cols-4'
70
- : 'grid-cols-2'
71
-
72
- return (
73
- <div className="rounded-lg border border-border bg-surface p-4">
74
- <div
75
- className={[
76
- 'flex items-center justify-between mb-3',
77
- isAccordion ? 'cursor-pointer' : '',
78
- ].join(' ')}
79
- onClick={isAccordion ? () => setCollapsed((c) => !c) : undefined}
80
- >
81
- <div>
82
- <h3 className="text-xs font-semibold text-foreground-subtle uppercase tracking-wider">
83
- {resolveLabel(section.title, translationFn)}
84
- </h3>
85
- {section.description && (
86
- <p className="text-[10px] text-foreground-subtle mt-0.5">{resolveLabel(section.description, translationFn)}</p>
87
- )}
88
- </div>
89
- {isAccordion && (
90
- <span className="text-foreground-subtle text-xs ml-2">{collapsed ? '▸' : '▾'}</span>
91
- )}
92
- </div>
93
-
94
- {!collapsed && (
95
- <div className={`grid ${gridClass} gap-x-4 gap-y-3`}>
96
- {section.fields.map((field) => (
97
- <FormField
98
- key={field.key}
99
- field={field}
100
- values={values}
101
- onChange={onChange}
102
- disabled={disabled}
103
- translationFn={translationFn}
104
- />
105
- ))}
106
- </div>
107
- )}
108
- </div>
109
- )
110
- }
111
-
112
- // ---------------------------------------------------------------------------
113
- // FormBuilder
114
- // ---------------------------------------------------------------------------
115
-
116
- export function FormBuilder({ schema, values, onChange, disabled, translationFn }: FormBuilderProps) {
117
- const handleFieldChange = (key: string, value: unknown) => {
118
- onChange({ ...values, [key]: value })
119
- }
120
-
121
- return (
122
- <div className="space-y-4">
123
- {schema.sections.map((section) => (
124
- <SectionCard
125
- key={section.id}
126
- section={section}
127
- values={values}
128
- onChange={handleFieldChange}
129
- disabled={disabled}
130
- translationFn={translationFn}
131
- />
132
- ))}
133
- </div>
134
- )
135
- }