pi-kiosk-shared 2.2.89 → 2.2.92

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 (33) hide show
  1. package/README.md +3 -3
  2. package/dist/barcode-scanner.d.ts +1 -1
  3. package/dist/barcode-scanner.d.ts.map +1 -1
  4. package/dist/barcode-scanner.js +1 -1
  5. package/dist/barcode-scanner.js.map +1 -1
  6. package/dist/hooks/scannerCameraConstraints.d.ts +43 -4
  7. package/dist/hooks/scannerCameraConstraints.d.ts.map +1 -1
  8. package/dist/hooks/scannerCameraConstraints.js +161 -22
  9. package/dist/hooks/scannerCameraConstraints.js.map +1 -1
  10. package/dist/hooks/scannerScanPasses.d.ts +21 -0
  11. package/dist/hooks/scannerScanPasses.d.ts.map +1 -0
  12. package/dist/hooks/scannerScanPasses.js +59 -0
  13. package/dist/hooks/scannerScanPasses.js.map +1 -0
  14. package/dist/hooks/selectEngine.d.ts +5 -6
  15. package/dist/hooks/selectEngine.d.ts.map +1 -1
  16. package/dist/hooks/useBarcodeScanner.d.ts +21 -9
  17. package/dist/hooks/useBarcodeScanner.d.ts.map +1 -1
  18. package/dist/hooks/useBarcodeScanner.js +143 -168
  19. package/dist/hooks/useBarcodeScanner.js.map +1 -1
  20. package/dist/hooks/zxingJsSensitiveDecode.d.ts +13 -0
  21. package/dist/hooks/zxingJsSensitiveDecode.d.ts.map +1 -0
  22. package/dist/hooks/zxingJsSensitiveDecode.js +54 -0
  23. package/dist/hooks/zxingJsSensitiveDecode.js.map +1 -0
  24. package/dist/index.d.ts +2 -2
  25. package/dist/index.js +2 -2
  26. package/dist/ui/Switch/Switch.d.ts.map +1 -1
  27. package/dist/ui/Switch/Switch.js +10 -3
  28. package/dist/ui/Switch/Switch.js.map +1 -1
  29. package/package.json +3 -5
  30. package/dist/hooks/zxingWasmEngine.d.ts +0 -66
  31. package/dist/hooks/zxingWasmEngine.d.ts.map +0 -1
  32. package/dist/hooks/zxingWasmEngine.js +0 -203
  33. package/dist/hooks/zxingWasmEngine.js.map +0 -1
@@ -3,29 +3,38 @@ import { BrowserMultiFormatReader } from '@zxing/browser';
3
3
  import { DecodeHintType } from '@zxing/library';
4
4
  import './scannerNativeTypes.js';
5
5
  import { resolveScannerFormatConfig, } from './scannerFormats.js';
6
- import { applyScannerTrackEnhancements, SCANNER_VIDEO_CONSTRAINTS, } from './scannerCameraConstraints.js';
7
- import { buildSensitiveReaderOptions, decodeVideoFrameWithZxingWasm, ensureZXingWasmPrepared, isZXingWasmConfigured, } from './zxingWasmEngine.js';
8
- /** ~30 fps decode budget — multi-pass zoom is heavier; still prefer hit rate. */
9
- const WASM_MIN_FRAME_INTERVAL_MS = 32;
10
- /** G4 — consecutive hard decode rejects before abandoning zxing-wasm for native/@zxing.
11
- * Only after successful WASM instantiate; unloadable WASM is G3 bootstrap error. */
12
- const WASM_HARD_FAIL_BOUND = 8;
6
+ import { applyScannerTrackEnhancements, openScannerMediaStream, } from './scannerCameraConstraints.js';
7
+ import { createSensitiveZxingReader, decodeVideoFrameWithZxingJs, } from './zxingJsSensitiveDecode.js';
8
+ function isInsecureCameraContext() {
9
+ return typeof window !== 'undefined' && window.isSecureContext === false;
10
+ }
11
+ function isPermissionDeniedError(err) {
12
+ return (err instanceof DOMException &&
13
+ (err.name === 'NotAllowedError' || err.name === 'PermissionDeniedError'));
14
+ }
15
+ function isSecurityPolicyError(err) {
16
+ return err instanceof DOMException && err.name === 'SecurityError';
17
+ }
18
+ function isCameraInUseError(err) {
19
+ return (err instanceof DOMException &&
20
+ (err.name === 'NotReadableError' || err.name === 'AbortError'));
21
+ }
22
+ /** Multi-pass @zxing decode budget (~20–25 attempts/s). */
23
+ const ZXING_MIN_FRAME_INTERVAL_MS = 40;
13
24
  /**
14
25
  * Live camera barcode/QR decode.
15
26
  *
16
- * Runtime cascade (single SoT — no selectBarcodeScannerEngine helper):
17
- * 1. Configured ZXing-C++ WASM (required for sensitivity upgrade; missing URL /
18
- * unloadable asset / instantiate fail → G3 `wasmBootstrapFailed`, no weaker-engine fallthrough)
19
- * 2. After WASM is successfully instantiated and running: ≥{@link WASM_HARD_FAIL_BOUND}
20
- * consecutive hard decode rejects → native BarcodeDetector (G4 only — not bootstrap)
21
- * 3. then pure-JS @zxing/browser
27
+ * Primary: pure-JS @zxing/browser `decodeFromStream` (former working engine)
28
+ * plus parallel multi-pass digital zoom + TRY_HARDER for distant / small codes.
29
+ * If stream fails but a canvas exists, multi-pass alone is the sensitive path.
30
+ * G5: never start native BarcodeDetector alone (no TRY_HARDER / distance assist) —
31
+ * hard-fail with recovery copy when neither @zxing path can start.
22
32
  */
23
33
  export function useBarcodeScanner(options) {
24
34
  const { enabled, videoRef, onDecode, messages, formatProfile = 'retail', onBackgroundStop, } = options;
25
35
  const [status, setStatus] = useState('idle');
26
36
  const [engine, setEngine] = useState(null);
27
37
  const [errorMessage, setErrorMessage] = useState(null);
28
- /** Latches after background release until parent sets `enabled` false (G7 / G10). */
29
38
  const [heldOffByBackground, setHeldOffByBackground] = useState(false);
30
39
  const onDecodeRef = useRef(onDecode);
31
40
  useEffect(() => {
@@ -61,7 +70,6 @@ export function useBarcodeScanner(options) {
61
70
  stopRef.current = null;
62
71
  }
63
72
  }, []);
64
- // G7 — release camera on background; do not auto-restart on visible.
65
73
  useEffect(() => {
66
74
  if (typeof document === 'undefined') {
67
75
  return;
@@ -100,13 +108,20 @@ export function useBarcodeScanner(options) {
100
108
  let cancelled = false;
101
109
  let stream = null;
102
110
  let zxingControls = null;
103
- let nativeFrameHandle = null;
104
- let wasmFrameHandle = null;
105
- let wasmBusy = false;
106
- let wasmAbandoned = false;
107
- let consecutiveWasmHardFails = 0;
111
+ let zxingFrameHandle = null;
108
112
  const formatConfig = resolveScannerFormatConfig(formatProfile);
109
- const wasmCanvas = typeof document !== 'undefined' ? document.createElement('canvas') : null;
113
+ // G5: multi-pass needs a canvas; if creation fails, hard-fail later (never native-only).
114
+ const decodeCanvas = (() => {
115
+ if (typeof document === 'undefined') {
116
+ return null;
117
+ }
118
+ try {
119
+ return document.createElement('canvas');
120
+ }
121
+ catch {
122
+ return null;
123
+ }
124
+ })();
110
125
  const cleanup = () => {
111
126
  if (zxingControls !== null) {
112
127
  try {
@@ -117,13 +132,9 @@ export function useBarcodeScanner(options) {
117
132
  }
118
133
  zxingControls = null;
119
134
  }
120
- if (nativeFrameHandle !== null) {
121
- cancelAnimationFrame(nativeFrameHandle);
122
- nativeFrameHandle = null;
123
- }
124
- if (wasmFrameHandle !== null) {
125
- cancelAnimationFrame(wasmFrameHandle);
126
- wasmFrameHandle = null;
135
+ if (zxingFrameHandle !== null) {
136
+ cancelAnimationFrame(zxingFrameHandle);
137
+ zxingFrameHandle = null;
127
138
  }
128
139
  if (stream !== null) {
129
140
  for (const track of stream.getTracks()) {
@@ -145,6 +156,14 @@ export function useBarcodeScanner(options) {
145
156
  void (async () => {
146
157
  setStatus('starting');
147
158
  setErrorMessage(null);
159
+ if (isInsecureCameraContext()) {
160
+ if (!cancelled) {
161
+ setStatus('error');
162
+ setErrorMessage(messagesRef.current.insecureContext ?? messagesRef.current.noCamera);
163
+ }
164
+ return;
165
+ }
166
+ // Missing MediaDevices (secure context prep for G3): prefer noCamera only.
148
167
  if (typeof navigator === 'undefined' || navigator.mediaDevices === undefined) {
149
168
  if (!cancelled) {
150
169
  setStatus('error');
@@ -153,20 +172,31 @@ export function useBarcodeScanner(options) {
153
172
  return;
154
173
  }
155
174
  try {
156
- stream = await navigator.mediaDevices.getUserMedia({
157
- video: SCANNER_VIDEO_CONSTRAINTS,
158
- audio: false,
159
- });
175
+ stream = await openScannerMediaStream(navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices));
160
176
  }
161
177
  catch (err) {
162
178
  if (cancelled) {
163
179
  return;
164
180
  }
165
- const isPermissionDenied = err instanceof DOMException &&
166
- (err.name === 'NotAllowedError' || err.name === 'PermissionDeniedError');
167
- if (isPermissionDenied) {
168
- setStatus('denied');
169
- setErrorMessage(messagesRef.current.permissionDenied);
181
+ if (isPermissionDeniedError(err)) {
182
+ // Android Chrome often throws NotAllowedError on plain HTTP LAN URLs;
183
+ // prefer the HTTPS recovery copy when the context is still insecure.
184
+ if (isInsecureCameraContext()) {
185
+ setStatus('error');
186
+ setErrorMessage(messagesRef.current.insecureContext ?? messagesRef.current.noCamera);
187
+ }
188
+ else {
189
+ setStatus('denied');
190
+ setErrorMessage(messagesRef.current.permissionDenied);
191
+ }
192
+ }
193
+ else if (isSecurityPolicyError(err)) {
194
+ setStatus('error');
195
+ setErrorMessage(messagesRef.current.policyBlocked ?? messagesRef.current.error);
196
+ }
197
+ else if (isCameraInUseError(err)) {
198
+ setStatus('error');
199
+ setErrorMessage(messagesRef.current.cameraInUse ?? messagesRef.current.error);
170
200
  }
171
201
  else {
172
202
  setStatus('error');
@@ -175,14 +205,28 @@ export function useBarcodeScanner(options) {
175
205
  cleanup();
176
206
  return;
177
207
  }
208
+ // G5: cancel/unmount after GUM — release before enhance/play.
209
+ if (cancelled) {
210
+ cleanup();
211
+ return;
212
+ }
178
213
  const activeStream = stream;
179
214
  const [primaryTrack] = activeStream.getVideoTracks();
180
215
  if (primaryTrack !== undefined) {
181
216
  await applyScannerTrackEnhancements(primaryTrack);
182
217
  }
218
+ if (cancelled) {
219
+ cleanup();
220
+ return;
221
+ }
183
222
  const video = videoRef.current;
184
223
  if (video === null) {
224
+ // G4: successful GUM but video element gone — surface error, release tracks.
185
225
  cleanup();
226
+ if (!cancelled) {
227
+ setStatus('error');
228
+ setErrorMessage(messagesRef.current.error);
229
+ }
186
230
  return;
187
231
  }
188
232
  video.setAttribute('playsinline', 'true');
@@ -198,44 +242,7 @@ export function useBarcodeScanner(options) {
198
242
  cleanup();
199
243
  return;
200
244
  }
201
- const startNativeLoop = () => {
202
- if (window.BarcodeDetector === undefined) {
203
- return false;
204
- }
205
- const detector = new window.BarcodeDetector({
206
- formats: [...formatConfig.nativeFormats],
207
- });
208
- const tick = async () => {
209
- if (cancelled || video.readyState < 2) {
210
- nativeFrameHandle = requestAnimationFrame(() => {
211
- void tick();
212
- });
213
- return;
214
- }
215
- try {
216
- const results = await detector.detect(video);
217
- if (results.length > 0) {
218
- const first = results[0];
219
- if (first !== undefined) {
220
- onDecodeRef.current(first.rawValue);
221
- }
222
- }
223
- }
224
- catch {
225
- // unstable frames may throw; keep scanning
226
- }
227
- if (!cancelled) {
228
- nativeFrameHandle = requestAnimationFrame(() => {
229
- void tick();
230
- });
231
- }
232
- };
233
- nativeFrameHandle = requestAnimationFrame(() => {
234
- void tick();
235
- });
236
- return true;
237
- };
238
- const startZxingJsFallback = async () => {
245
+ const startZxingStreamFallback = async () => {
239
246
  const hints = new Map();
240
247
  hints.set(DecodeHintType.POSSIBLE_FORMATS, [...formatConfig.zxingFormats]);
241
248
  hints.set(DecodeHintType.TRY_HARDER, true);
@@ -256,112 +263,80 @@ export function useBarcodeScanner(options) {
256
263
  return false;
257
264
  }
258
265
  };
259
- const failAllEngines = () => {
260
- if (!cancelled) {
261
- setStatus('error');
262
- setErrorMessage(messagesRef.current.error);
266
+ const startZxingMultiPassLoop = () => {
267
+ if (decodeCanvas === null) {
268
+ return false;
263
269
  }
264
- cleanup();
265
- };
266
- const fallThroughFromWasm = async () => {
267
- if (cancelled) {
268
- return;
270
+ let reader;
271
+ try {
272
+ reader = createSensitiveZxingReader(formatConfig.zxingFormats);
269
273
  }
270
- if (startNativeLoop()) {
274
+ catch {
275
+ // Reader/bootstrap failure — do not pretend multi-pass started.
276
+ return false;
277
+ }
278
+ let lastAttemptMs = 0;
279
+ let busy = false;
280
+ const tick = () => {
281
+ if (cancelled) {
282
+ return;
283
+ }
284
+ const now = performance.now();
285
+ if (!busy &&
286
+ video.readyState >= 2 &&
287
+ now - lastAttemptMs >= ZXING_MIN_FRAME_INTERVAL_MS) {
288
+ lastAttemptMs = now;
289
+ busy = true;
290
+ try {
291
+ const text = decodeVideoFrameWithZxingJs(video, decodeCanvas, reader);
292
+ if (!cancelled && text !== null) {
293
+ onDecodeRef.current(text);
294
+ }
295
+ }
296
+ catch {
297
+ // keep scanning
298
+ }
299
+ finally {
300
+ busy = false;
301
+ }
302
+ }
271
303
  if (!cancelled) {
272
- setEngine('native-detector');
273
- setStatus('running');
304
+ zxingFrameHandle = requestAnimationFrame(tick);
274
305
  }
275
- return;
276
- }
277
- const jsOk = await startZxingJsFallback();
278
- if (cancelled) {
279
- return;
280
- }
281
- if (jsOk) {
282
- setEngine('zxing');
283
- setStatus('running');
284
- return;
285
- }
286
- failAllEngines();
306
+ };
307
+ zxingFrameHandle = requestAnimationFrame(tick);
308
+ return true;
287
309
  };
288
- const failWasmBootstrap = () => {
289
- if (!cancelled) {
290
- setStatus('error');
291
- setErrorMessage(messagesRef.current.wasmBootstrapFailed);
292
- }
310
+ // G5 engine order (max sensitivity — never native-only):
311
+ // 1) @zxing decodeFromStream (+ TRY_HARDER); if OK also start multi-pass
312
+ // 2) Else multi-pass canvas alone (when canvas exists)
313
+ // 3) Else hard-fail — do not start weak native BarcodeDetector alone
314
+ const streamOk = await startZxingStreamFallback();
315
+ // G5: if cancelled after controls assigned, stop them + release stream.
316
+ if (cancelled) {
293
317
  cleanup();
294
- };
295
- // G3 — WASM is required for the sensitivity upgrade; never silently start a weaker engine.
296
- // Unloadable / instantiate failure → wasmBootstrapFailed (not G4 fallthrough).
297
- // G4 ≥8 fallthrough is ONLY for post-start decode rejects after successful instantiate.
298
- if (!isZXingWasmConfigured() || wasmCanvas === null) {
299
- failWasmBootstrap();
300
318
  return;
301
319
  }
302
- try {
303
- await ensureZXingWasmPrepared();
304
- }
305
- catch {
306
- failWasmBootstrap();
320
+ if (streamOk) {
321
+ startZxingMultiPassLoop();
322
+ if (!cancelled) {
323
+ setEngine('zxing');
324
+ setStatus('running');
325
+ }
307
326
  return;
308
327
  }
309
- const readerOptions = buildSensitiveReaderOptions(formatProfile);
310
- let lastAttemptMs = 0;
311
- const abandonWasmAndFallThrough = () => {
312
- if (wasmAbandoned || cancelled) {
313
- return;
314
- }
315
- wasmAbandoned = true;
316
- if (wasmFrameHandle !== null) {
317
- cancelAnimationFrame(wasmFrameHandle);
318
- wasmFrameHandle = null;
319
- }
320
- void fallThroughFromWasm();
321
- };
322
- const tick = () => {
323
- if (cancelled || wasmAbandoned) {
324
- return;
325
- }
326
- const now = performance.now();
327
- if (!wasmBusy &&
328
- video.readyState >= 2 &&
329
- now - lastAttemptMs >= WASM_MIN_FRAME_INTERVAL_MS) {
330
- lastAttemptMs = now;
331
- wasmBusy = true;
332
- void decodeVideoFrameWithZxingWasm(video, wasmCanvas, readerOptions)
333
- .then((text) => {
334
- if (cancelled || wasmAbandoned) {
335
- return;
336
- }
337
- // G4 — null/empty = non-fatal; reset consecutive hard-fail counter.
338
- consecutiveWasmHardFails = 0;
339
- if (text !== null) {
340
- onDecodeRef.current(text);
341
- }
342
- })
343
- .catch(() => {
344
- if (cancelled || wasmAbandoned) {
345
- return;
346
- }
347
- consecutiveWasmHardFails += 1;
348
- if (consecutiveWasmHardFails >= WASM_HARD_FAIL_BOUND) {
349
- abandonWasmAndFallThrough();
350
- }
351
- })
352
- .finally(() => {
353
- wasmBusy = false;
354
- });
355
- }
356
- if (!cancelled && !wasmAbandoned) {
357
- wasmFrameHandle = requestAnimationFrame(tick);
328
+ if (startZxingMultiPassLoop()) {
329
+ if (!cancelled) {
330
+ setEngine('zxing');
331
+ setStatus('running');
358
332
  }
359
- };
360
- wasmFrameHandle = requestAnimationFrame(tick);
333
+ return;
334
+ }
361
335
  if (!cancelled) {
362
- setEngine('zxing-wasm');
363
- setStatus('running');
336
+ setStatus('error');
337
+ setErrorMessage(messagesRef.current.error);
364
338
  }
339
+ cleanup();
365
340
  })();
366
341
  return () => {
367
342
  cancelled = true;
@@ -1 +1 @@
1
- {"version":3,"file":"useBarcodeScanner.js","sourceRoot":"","sources":["../../src/hooks/useBarcodeScanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useBarcodeScanner.js","sourceRoot":"","sources":["../../src/hooks/useBarcodeScanner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * High-sensitivity pure-JS @zxing decode (the library that previously worked).
3
+ * Multi-pass digital zoom + TRY_HARDER for distant / small codes.
4
+ */
5
+ import { BrowserMultiFormatReader } from '@zxing/browser';
6
+ import { BarcodeFormat } from '@zxing/library';
7
+ export declare function createSensitiveZxingReader(formats: readonly BarcodeFormat[]): BrowserMultiFormatReader;
8
+ /**
9
+ * Decode one video frame via multi-pass canvas crops → @zxing decodeFromCanvas.
10
+ * Returns the first payload or null when nothing is found.
11
+ */
12
+ export declare function decodeVideoFrameWithZxingJs(video: HTMLVideoElement, canvas: HTMLCanvasElement, reader: BrowserMultiFormatReader): string | null;
13
+ //# sourceMappingURL=zxingJsSensitiveDecode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zxingJsSensitiveDecode.d.ts","sourceRoot":"","sources":["../../src/hooks/zxingJsSensitiveDecode.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAkB,MAAM,gBAAgB,CAAC;AAG/D,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,SAAS,aAAa,EAAE,GAChC,wBAAwB,CAK1B;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,gBAAgB,EACvB,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,wBAAwB,GAC/B,MAAM,GAAG,IAAI,CAwCf"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * High-sensitivity pure-JS @zxing decode (the library that previously worked).
3
+ * Multi-pass digital zoom + TRY_HARDER for distant / small codes.
4
+ */
5
+ import { BrowserMultiFormatReader } from '@zxing/browser';
6
+ import { DecodeHintType } from '@zxing/library';
7
+ import { buildMaxSensitivityScanPasses } from './scannerScanPasses.js';
8
+ export function createSensitiveZxingReader(formats) {
9
+ const hints = new Map();
10
+ hints.set(DecodeHintType.POSSIBLE_FORMATS, [...formats]);
11
+ hints.set(DecodeHintType.TRY_HARDER, true);
12
+ return new BrowserMultiFormatReader(hints);
13
+ }
14
+ /**
15
+ * Decode one video frame via multi-pass canvas crops → @zxing decodeFromCanvas.
16
+ * Returns the first payload or null when nothing is found.
17
+ */
18
+ export function decodeVideoFrameWithZxingJs(video, canvas, reader) {
19
+ const width = video.videoWidth;
20
+ const height = video.videoHeight;
21
+ if (width < 2 || height < 2) {
22
+ return null;
23
+ }
24
+ const ctx = canvas.getContext('2d', { willReadFrequently: true });
25
+ if (ctx === null) {
26
+ return null;
27
+ }
28
+ ctx.imageSmoothingEnabled = false;
29
+ const passes = buildMaxSensitivityScanPasses(width, height);
30
+ for (const pass of passes) {
31
+ const outW = Math.max(2, Math.floor(pass.sw * pass.scale));
32
+ const outH = Math.max(2, Math.floor(pass.sh * pass.scale));
33
+ if (canvas.width !== outW) {
34
+ canvas.width = outW;
35
+ }
36
+ if (canvas.height !== outH) {
37
+ canvas.height = outH;
38
+ }
39
+ ctx.clearRect(0, 0, outW, outH);
40
+ ctx.drawImage(video, pass.sx, pass.sy, pass.sw, pass.sh, 0, 0, outW, outH);
41
+ try {
42
+ const result = reader.decodeFromCanvas(canvas);
43
+ const text = result.getText();
44
+ if (text.length > 0) {
45
+ return text;
46
+ }
47
+ }
48
+ catch {
49
+ // NotFoundException / checksum — try next pass
50
+ }
51
+ }
52
+ return null;
53
+ }
54
+ //# sourceMappingURL=zxingJsSensitiveDecode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zxingJsSensitiveDecode.js","sourceRoot":"","sources":["../../src/hooks/zxingJsSensitiveDecode.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAiB,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AAEvE,MAAM,UAAU,0BAA0B,CACxC,OAAiC;IAEjC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;IACxB,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IACzD,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC3C,OAAO,IAAI,wBAAwB,CAAC,KAAK,CAAC,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,KAAuB,EACvB,MAAyB,EACzB,MAAgC;IAEhC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC;IAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC;IACjC,IAAI,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC;IAElC,MAAM,MAAM,GAAG,6BAA6B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC5D,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3D,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1B,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;QACvB,CAAC;QAED,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAChC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAE3E,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,+CAA+C;QACjD,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
package/dist/index.d.ts CHANGED
@@ -6,8 +6,8 @@
6
6
  *
7
7
  * Main barrel is Node-safe (no React UI). Runtime JS (not `.d.ts`):
8
8
  * - `tsx watch` and `node dist/server.js` both resolve `node_modules/pi-kiosk-shared`
9
- * after `ensureDist.mjs` overlays this `dist` (monorepo sibling `../shared` @ 2.2.86;
10
- * consumers pin ^2.2.86 matching shared/package.json — confirm registry at deploy time).
9
+ * after `ensureDist.mjs` overlays this `dist` (monorepo sibling `../shared` @ 2.2.91;
10
+ * consumers pin ^2.2.91 matching shared/package.json — confirm registry at deploy time).
11
11
  * React UI is `pi-kiosk-shared/ui`.
12
12
  *
13
13
  * Note: relative imports use explicit `.js` extensions so the compiled
package/dist/index.js CHANGED
@@ -6,8 +6,8 @@
6
6
  *
7
7
  * Main barrel is Node-safe (no React UI). Runtime JS (not `.d.ts`):
8
8
  * - `tsx watch` and `node dist/server.js` both resolve `node_modules/pi-kiosk-shared`
9
- * after `ensureDist.mjs` overlays this `dist` (monorepo sibling `../shared` @ 2.2.86;
10
- * consumers pin ^2.2.86 matching shared/package.json — confirm registry at deploy time).
9
+ * after `ensureDist.mjs` overlays this `dist` (monorepo sibling `../shared` @ 2.2.91;
10
+ * consumers pin ^2.2.91 matching shared/package.json — confirm registry at deploy time).
11
11
  * React UI is `pi-kiosk-shared/ui`.
12
12
  *
13
13
  * Note: relative imports use explicit `.js` extensions so the compiled
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../../src/ui/Switch/Switch.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAkC9D,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC,GAAG;IACpF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACvD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,MAAM;sBATC,OAAO;+BACE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI;qDAuBtD,CAAC"}
1
+ {"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../../src/ui/Switch/Switch.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAyC9D,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC,GAAG;IACpF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACvD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,MAAM;sBATC,OAAO;+BACE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI;qDAuBtD,CAAC"}
@@ -4,14 +4,21 @@ import { tv } from '../tvShim.js';
4
4
  const switchTrack = tv({
5
5
  base: [
6
6
  'relative inline-flex h-[1.55rem] w-[2.85rem] shrink-0 cursor-pointer rounded-full',
7
- 'bg-[var(--color-border,var(--color-an-border,#cbd5e1))] transition-[background-color] duration-150',
7
+ /* OFF: muted inactive — avoid bright slate that reads as "on" on dark surfaces. */
8
+ 'bg-[color-mix(in_srgb,var(--color-an-text-muted,var(--color-text-secondary,#71717a))_42%,var(--color-an-surface,var(--color-surface,#fff)))]',
9
+ 'shadow-[inset_0_0_0_1px_color-mix(in_srgb,var(--color-an-border,var(--color-border,#cbd5e1))_70%,transparent)]',
10
+ 'transition-[background-color,box-shadow] duration-150',
8
11
  'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2',
9
12
  'focus-visible:outline-[var(--color-focus-ring,var(--color-an-primary))]',
10
13
  'disabled:cursor-not-allowed disabled:opacity-55',
11
14
  ].join(' '),
12
15
  variants: {
13
16
  checked: {
14
- true: 'bg-[var(--color-action-primary,var(--color-an-primary))]',
17
+ true: [
18
+ /* ON: success green — clear true/false when brand primary is monochrome. */
19
+ 'bg-[var(--color-an-success,var(--color-success,#16a34a))]',
20
+ 'shadow-[inset_0_0_0_1px_color-mix(in_srgb,var(--color-an-success,var(--color-success,#16a34a))_55%,transparent)]',
21
+ ].join(' '),
15
22
  false: '',
16
23
  },
17
24
  },
@@ -20,7 +27,7 @@ const switchTrack = tv({
20
27
  const switchKnob = tv({
21
28
  base: [
22
29
  'pointer-events-none absolute left-[2px] top-[2px] h-5 w-5 rounded-full bg-white',
23
- 'shadow-[0_1px_3px_rgba(15,23,42,0.18)] transition-transform duration-150',
30
+ 'shadow-[0_1px_3px_rgba(15,23,42,0.45)] transition-transform duration-150',
24
31
  ].join(' '),
25
32
  variants: {
26
33
  checked: {
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.js","sourceRoot":"","sources":["../../../src/ui/Switch/Switch.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAA6B,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,MAAM,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,EAAE;QACJ,mFAAmF;QACnF,oGAAoG;QACpG,8EAA8E;QAC9E,yEAAyE;QACzE,iDAAiD;KAClD,CAAC,IAAI,CAAC,GAAG,CAAC;IACX,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,IAAI,EAAE,0DAA0D;YAChE,KAAK,EAAE,EAAE;SACV;KACF;IACD,eAAe,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;CACpC,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,EAAE;QACJ,iFAAiF;QACjF,0EAA0E;KAC3E,CAAC,IAAI,CAAC,GAAG,CAAC;IACX,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,IAAI,EAAE,sBAAsB;YAC5B,KAAK,EAAE,EAAE;SACV;KACF;IACD,eAAe,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;CACpC,CAAC,CAAC;AAOH;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAC9B,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACnE,iBACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,QAAQ,kBACC,OAAO,EACrB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAC9C,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,KACtC,IAAI,YAER,eAAM,SAAS,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,iBAAc,MAAM,GAAG,GACxD,CACV,CACF,CAAC;AACF,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC"}
1
+ {"version":3,"file":"Switch.js","sourceRoot":"","sources":["../../../src/ui/Switch/Switch.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAA6B,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,MAAM,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,EAAE;QACJ,mFAAmF;QACnF,mFAAmF;QACnF,8IAA8I;QAC9I,gHAAgH;QAChH,uDAAuD;QACvD,8EAA8E;QAC9E,yEAAyE;QACzE,iDAAiD;KAClD,CAAC,IAAI,CAAC,GAAG,CAAC;IACX,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,IAAI,EAAE;gBACJ,4EAA4E;gBAC5E,2DAA2D;gBAC3D,kHAAkH;aACnH,CAAC,IAAI,CAAC,GAAG,CAAC;YACX,KAAK,EAAE,EAAE;SACV;KACF;IACD,eAAe,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;CACpC,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,EAAE;QACJ,iFAAiF;QACjF,0EAA0E;KAC3E,CAAC,IAAI,CAAC,GAAG,CAAC;IACX,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,IAAI,EAAE,sBAAsB;YAC5B,KAAK,EAAE,EAAE;SACV;KACF;IACD,eAAe,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;CACpC,CAAC,CAAC;AAOH;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAC9B,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACnE,iBACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,QAAQ,kBACC,OAAO,EACrB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAC9C,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,KACtC,IAAI,YAER,eAAM,SAAS,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,iBAAc,MAAM,GAAG,GACxD,CACV,CACF,CAAC;AACF,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-kiosk-shared",
3
- "version": "2.2.89",
3
+ "version": "2.2.92",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "description": "Shared types, API contracts, and error classes for Pi Kiosk system",
@@ -307,8 +307,7 @@
307
307
  }
308
308
  },
309
309
  "dependencies": {
310
- "tailwind-variants": "^0.3.0",
311
- "zxing-wasm": "^3.1.3"
310
+ "tailwind-variants": "^0.3.0"
312
311
  },
313
312
  "scripts": {
314
313
  "build": "tsc",
@@ -379,8 +378,7 @@
379
378
  "storybook": "^9.1.20",
380
379
  "ts-jest": "^29.4.11",
381
380
  "typescript": "^5.0.0",
382
- "vite": "^6.4.3",
383
- "zxing-wasm": "^3.1.3"
381
+ "vite": "^6.4.3"
384
382
  },
385
383
  "overrides": {
386
384
  "babel-plugin-istanbul": "^8.0.2",