@visns-studio/visns-components 5.15.3 → 5.15.5

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.
@@ -0,0 +1,185 @@
1
+ // Additional styles for Verkada camera modal
2
+ .cameraSpec {
3
+ font-size: 12px;
4
+ color: #6b7280;
5
+ margin-bottom: 4px;
6
+ line-height: 1.4;
7
+ }
8
+
9
+ .noModel {
10
+ color: #ef4444;
11
+ font-style: italic;
12
+ font-size: 13px;
13
+ margin-bottom: 8px;
14
+ }
15
+
16
+ .cameraPreview {
17
+ background: #f9fafb;
18
+ border: 1px solid #e5e7eb;
19
+ border-radius: 8px;
20
+ padding: 16px;
21
+ margin: 16px 0;
22
+
23
+ h4 {
24
+ margin: 0 0 12px 0;
25
+ color: #374151;
26
+ font-size: 16px;
27
+ font-weight: 600;
28
+ }
29
+ }
30
+
31
+ .cameraSpecs {
32
+ display: flex;
33
+ flex-direction: column;
34
+ gap: 6px;
35
+ }
36
+
37
+ .specRow {
38
+ display: flex;
39
+ font-size: 13px;
40
+ line-height: 1.4;
41
+ color: #4b5563;
42
+
43
+ strong {
44
+ width: 100px;
45
+ flex-shrink: 0;
46
+ color: #374151;
47
+ font-weight: 500;
48
+ }
49
+ }
50
+
51
+ .directionHelper {
52
+ font-size: 11px;
53
+ color: #9ca3af;
54
+ margin-top: 4px;
55
+ text-align: center;
56
+ }
57
+
58
+ .directionControl {
59
+ background: #f8fafc;
60
+ border: 1px solid #e2e8f0;
61
+ border-radius: 6px;
62
+ padding: 12px;
63
+ margin: 8px 0;
64
+
65
+ label {
66
+ display: block;
67
+ font-size: 13px;
68
+ font-weight: 500;
69
+ color: #374151;
70
+ margin-bottom: 8px;
71
+ }
72
+ }
73
+
74
+ .directionSlider {
75
+ width: 100%;
76
+ height: 6px;
77
+ border-radius: 3px;
78
+ background: #e2e8f0;
79
+ outline: none;
80
+ opacity: 0.7;
81
+ transition: opacity 0.2s;
82
+ margin-bottom: 8px;
83
+
84
+ &:hover {
85
+ opacity: 1;
86
+ }
87
+
88
+ &::-webkit-slider-thumb {
89
+ appearance: none;
90
+ width: 20px;
91
+ height: 20px;
92
+ border-radius: 50%;
93
+ background: #3b82f6;
94
+ cursor: pointer;
95
+ box-shadow: 0 2px 6px rgba(59, 130, 246, 0.4);
96
+ transition: all 0.2s ease;
97
+
98
+ &:hover {
99
+ background: #2563eb;
100
+ transform: scale(1.1);
101
+ }
102
+ }
103
+
104
+ &::-moz-range-thumb {
105
+ width: 20px;
106
+ height: 20px;
107
+ border-radius: 50%;
108
+ background: #3b82f6;
109
+ cursor: pointer;
110
+ border: none;
111
+ box-shadow: 0 2px 6px rgba(59, 130, 246, 0.4);
112
+ }
113
+ }
114
+
115
+ .cameraModelName {
116
+ font-size: 14px;
117
+ color: #1f2937;
118
+ margin-bottom: 12px;
119
+ padding-bottom: 8px;
120
+ border-bottom: 1px solid #e5e7eb;
121
+
122
+ strong {
123
+ font-weight: 600;
124
+ }
125
+ }
126
+
127
+ .cameraSpecGrid {
128
+ display: grid;
129
+ grid-template-columns: 1fr 1fr;
130
+ gap: 8px;
131
+ margin-bottom: 12px;
132
+ }
133
+
134
+ .specItem {
135
+ display: flex;
136
+ flex-direction: column;
137
+ gap: 2px;
138
+ }
139
+
140
+ .specLabel {
141
+ font-size: 11px;
142
+ font-weight: 500;
143
+ color: #6b7280;
144
+ text-transform: uppercase;
145
+ letter-spacing: 0.05em;
146
+ }
147
+
148
+ .specValue {
149
+ font-size: 12px;
150
+ color: #374151;
151
+ font-weight: 500;
152
+
153
+ &.indoor {
154
+ color: #059669;
155
+ }
156
+
157
+ &.outdoor {
158
+ color: #d97706;
159
+ }
160
+ }
161
+
162
+ .cameraFeatures {
163
+ margin-bottom: 12px;
164
+
165
+ .specLabel {
166
+ display: block;
167
+ margin-bottom: 6px;
168
+ }
169
+ }
170
+
171
+ .featuresList {
172
+ display: flex;
173
+ flex-wrap: wrap;
174
+ gap: 4px;
175
+ }
176
+
177
+ .featureTag {
178
+ background: #f1f5f9;
179
+ color: #475569;
180
+ font-size: 10px;
181
+ font-weight: 500;
182
+ padding: 2px 6px;
183
+ border-radius: 4px;
184
+ border: 1px solid #e2e8f0;
185
+ }
@@ -246,10 +246,10 @@
246
246
  background: white;
247
247
  border-radius: 12px;
248
248
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
249
- width: 95%;
250
- max-width: 1400px;
251
- height: 90vh;
252
- max-height: 90vh;
249
+ width: 98%;
250
+ max-width: 1600px;
251
+ height: 95vh;
252
+ max-height: 95vh;
253
253
  display: flex;
254
254
  flex-direction: column;
255
255
  overflow: hidden;
@@ -313,7 +313,7 @@
313
313
 
314
314
  .contentEditorBody {
315
315
  flex: 1;
316
- padding: 20px;
316
+ padding: 12px;
317
317
  overflow: hidden;
318
318
  background: var(--tertiary-color);
319
319
  display: flex;
@@ -374,7 +374,8 @@
374
374
  flex: 1; /* Take all remaining space */
375
375
  display: flex;
376
376
  flex-direction: column;
377
- min-height: 0; /* Allow flex shrinking */
377
+ min-height: 500px; /* Ensure minimum height for editor */
378
+ height: 100%; /* Fill available height */
378
379
 
379
380
  /* TinyMCE overrides */
380
381
  :global(.tox-tinymce) {
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+
3
+ // Wrapper component to render Lucide icons for cameras
4
+ const CameraIcon = ({ icon: IconComponent, size = 16, className = '', ...props }) => {
5
+ if (!IconComponent) {
6
+ return null;
7
+ }
8
+
9
+ return (
10
+ <IconComponent
11
+ size={size}
12
+ className={className}
13
+ {...props}
14
+ />
15
+ );
16
+ };
17
+
18
+ export default CameraIcon;
package/src/index.js CHANGED
@@ -15,6 +15,7 @@ import Autocomplete from './components/Autocomplete';
15
15
  import Breadcrumb from './components/Breadcrumb';
16
16
  import BusinessCardOcr from './components/BusinessCardOcr';
17
17
  import Call from './components/Call';
18
+ import CameraPlacement from './components/CameraPlacement';
18
19
  import ClientAssociationManager from './components/ClientAssociationManager';
19
20
  import CustomFetch from './components/Fetch';
20
21
  import Download from './components/Download';
@@ -93,6 +94,7 @@ export {
93
94
  Breadcrumb,
94
95
  BusinessCardOcr,
95
96
  Call,
97
+ CameraPlacement,
96
98
  CellWithTooltip,
97
99
  ClientAssociationManager,
98
100
  ClientLogin,