@chekinapp/ui 0.0.99 → 0.0.100

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.
package/dist/index.js CHANGED
@@ -8834,7 +8834,7 @@ var VALUE_PART = 1;
8834
8834
  var getSidebarState = (stateName) => document.cookie.split("; ").find((row) => row.startsWith(`${stateName}=`))?.split("=")[VALUE_PART] === "true";
8835
8835
 
8836
8836
  // src/signature-canvas/SignatureCanvas.tsx
8837
- import { forwardRef as forwardRef41, useEffect as useEffect29, useRef as useRef21 } from "react";
8837
+ import { forwardRef as forwardRef41, useEffect as useEffect29, useRef as useRef21, useState as useState32, useCallback as useCallback24 } from "react";
8838
8838
  import { Trans, useTranslation as useTranslation17 } from "react-i18next";
8839
8839
  import ReactSignatureCanvas from "react-signature-pad-wrapper";
8840
8840
 
@@ -8852,21 +8852,37 @@ var sign_finger_default = SvgSignFinger;
8852
8852
 
8853
8853
  // src/signature-canvas/SignatureCanvas.tsx
8854
8854
  import { jsx as jsx107, jsxs as jsxs66 } from "react/jsx-runtime";
8855
- var CANVAS_PROPS = {
8856
- width: "250px",
8857
- height: "174px"
8858
- };
8859
8855
  var SIGNATURE_PROPS = {
8860
8856
  penColor: "#161643",
8861
8857
  minWidth: 1.5,
8862
8858
  maxWidth: 1.5,
8863
8859
  dotSize: 1
8864
8860
  };
8861
+ var ASPECT_RATIO = 330 / 190;
8865
8862
  var SignatureCanvas = forwardRef41(
8866
8863
  ({ onClear, hasSignature, onEnd, onEnable, className, enabled }, ref) => {
8867
8864
  const { t } = useTranslation17();
8868
8865
  const internalRef = useRef21(null);
8866
+ const containerRef = useRef21(null);
8869
8867
  const combinedRef = useCombinedRef(ref, internalRef);
8868
+ const [size, setSize] = useState32({ width: 330, height: 190 });
8869
+ const calculateSize = useCallback24((containerWidth) => {
8870
+ const width = Math.min(containerWidth, 646);
8871
+ const height = Math.round(width / ASPECT_RATIO);
8872
+ setSize({ width, height });
8873
+ }, []);
8874
+ useEffect29(() => {
8875
+ const container = containerRef.current;
8876
+ if (!container) return;
8877
+ const observer = new ResizeObserver((entries) => {
8878
+ const entry = entries[0];
8879
+ if (entry) {
8880
+ calculateSize(entry.contentRect.width);
8881
+ }
8882
+ });
8883
+ observer.observe(container);
8884
+ return () => observer.disconnect();
8885
+ }, [calculateSize]);
8870
8886
  useEffect29(() => {
8871
8887
  if (!onEnd) return;
8872
8888
  const signPad = internalRef.current?.instance;
@@ -8875,73 +8891,85 @@ var SignatureCanvas = forwardRef41(
8875
8891
  signPad?.removeEventListener("endStroke", onEnd);
8876
8892
  };
8877
8893
  }, [onEnd]);
8878
- return /* @__PURE__ */ jsxs66("div", { className: cn("relative inline-flex flex-col", className), children: [
8879
- !enabled && /* @__PURE__ */ jsxs66(
8880
- "button",
8881
- {
8882
- type: "button",
8883
- className: cn(
8884
- "absolute left-0 top-0 z-10 flex h-[174px] w-[250px] flex-col items-center",
8885
- "justify-between rounded border-0 bg-[var(--signature-canvas-placeholder-bg)] px-0 pb-7 pt-10",
8886
- "cursor-pointer select-none"
8887
- ),
8888
- onClick: onEnable,
8889
- "data-testid": "signature-placeholder",
8890
- children: [
8891
- /* @__PURE__ */ jsx107(SvgIcon, { as: sign_finger_default, size: 41, className: "w-[37px] opacity-[0.55]" }),
8892
- /* @__PURE__ */ jsx107(
8893
- "span",
8894
- {
8895
- className: cn(
8896
- "mx-auto mt-2 max-w-[154px] break-words text-center text-sm font-medium uppercase",
8897
- "text-[var(--signature-canvas-placeholder-text)] opacity-[0.55]"
8898
- ),
8899
- children: /* @__PURE__ */ jsx107(Trans, { i18nKey: "signature_placeholder_text" })
8900
- }
8901
- )
8902
- ]
8903
- }
8904
- ),
8905
- /* @__PURE__ */ jsx107(
8906
- "div",
8907
- {
8908
- className: cn(
8909
- "inline-flex h-[174px] w-[250px] cursor-pointer justify-center rounded border",
8910
- "border-[var(--signature-canvas-border)] shadow-[var(--signature-canvas-shadow)]",
8911
- "box-border max-[320px]:overflow-hidden"
8912
- ),
8913
- children: /* @__PURE__ */ jsx107(
8914
- ReactSignatureCanvas,
8894
+ return /* @__PURE__ */ jsxs66(
8895
+ "div",
8896
+ {
8897
+ ref: containerRef,
8898
+ className: cn("relative flex w-full flex-col items-center", className),
8899
+ children: [
8900
+ !enabled && /* @__PURE__ */ jsxs66(
8901
+ "button",
8915
8902
  {
8916
- ref: combinedRef,
8917
- "data-testid": "canvas",
8918
- ...SIGNATURE_PROPS,
8919
- canvasProps: CANVAS_PROPS
8903
+ type: "button",
8904
+ className: cn(
8905
+ "absolute left-1/2 top-0 z-10 flex -translate-x-1/2 flex-col items-center",
8906
+ "justify-center rounded-xl border-2 border-[var(--signature-canvas-border)] bg-transparent",
8907
+ "cursor-pointer select-none"
8908
+ ),
8909
+ style: { width: size.width, height: size.height },
8910
+ onClick: onEnable,
8911
+ "data-testid": "signature-placeholder",
8912
+ children: [
8913
+ /* @__PURE__ */ jsx107(SvgIcon, { as: sign_finger_default, size: 41, className: "w-[37px] opacity-55" }),
8914
+ /* @__PURE__ */ jsx107(
8915
+ "span",
8916
+ {
8917
+ className: cn(
8918
+ "mx-auto mt-4 max-w-[200px] break-words text-center text-base font-medium",
8919
+ "text-[var(--signature-canvas-placeholder-text)] opacity-55"
8920
+ ),
8921
+ children: /* @__PURE__ */ jsx107(Trans, { i18nKey: "tap_here_to_sign" })
8922
+ }
8923
+ )
8924
+ ]
8920
8925
  }
8921
- )
8922
- }
8923
- ),
8924
- /* @__PURE__ */ jsx107(
8925
- "div",
8926
- {
8927
- className: cn("text-right", {
8928
- invisible: !enabled || !hasSignature
8929
- }),
8930
- children: /* @__PURE__ */ jsx107(
8931
- Button,
8926
+ ),
8927
+ /* @__PURE__ */ jsx107(
8928
+ "div",
8932
8929
  {
8933
- variant: "link",
8934
8930
  className: cn(
8935
- "ml-auto mt-2 h-[30px] min-w-[70px] select-none rounded-sm px-2 py-0.5 text-right",
8936
- "text-xs uppercase hover:opacity-[0.88] active:opacity-100"
8931
+ "inline-flex cursor-pointer justify-center rounded-xl border-2",
8932
+ "border-[var(--signature-canvas-border)] bg-[var(--signature-canvas-bg)]",
8933
+ { hidden: !enabled }
8937
8934
  ),
8938
- onClick: onClear,
8939
- children: t("clear")
8935
+ style: { width: size.width, height: size.height },
8936
+ children: /* @__PURE__ */ jsx107(
8937
+ ReactSignatureCanvas,
8938
+ {
8939
+ ref: combinedRef,
8940
+ "data-testid": "canvas",
8941
+ options: SIGNATURE_PROPS,
8942
+ canvasProps: {
8943
+ style: { width: `${size.width}px`, height: `${size.height}px` }
8944
+ }
8945
+ }
8946
+ )
8947
+ }
8948
+ ),
8949
+ /* @__PURE__ */ jsx107(
8950
+ "div",
8951
+ {
8952
+ className: cn("w-full text-right", {
8953
+ invisible: !enabled || !hasSignature
8954
+ }),
8955
+ style: { maxWidth: size.width },
8956
+ children: /* @__PURE__ */ jsx107(
8957
+ Button,
8958
+ {
8959
+ variant: "link",
8960
+ className: cn(
8961
+ "ml-auto mt-2 h-[30px] min-w-[70px] select-none rounded-sm px-2 py-0.5 text-right",
8962
+ "text-xs uppercase hover:opacity-[0.88] active:opacity-100"
8963
+ ),
8964
+ onClick: onClear,
8965
+ children: t("clear")
8966
+ }
8967
+ )
8940
8968
  }
8941
8969
  )
8942
- }
8943
- )
8944
- ] });
8970
+ ]
8971
+ }
8972
+ );
8945
8973
  }
8946
8974
  );
8947
8975
  SignatureCanvas.displayName = "SignatureCanvas";
@@ -9965,11 +9993,11 @@ function TimelineDescription({ className, asChild, ...props }) {
9965
9993
  import { Toaster, toast as toast2 } from "sonner";
9966
9994
 
9967
9995
  // src/toaster/useUpdateToast.ts
9968
- import { useCallback as useCallback25, useRef as useRef22 } from "react";
9996
+ import { useCallback as useCallback26, useRef as useRef22 } from "react";
9969
9997
  import { toast } from "sonner";
9970
9998
  function useUpdateToast({ id }) {
9971
9999
  const toastIdRef = useRef22("");
9972
- const getToastOptions = useCallback25(
10000
+ const getToastOptions = useCallback26(
9973
10001
  (options) => ({
9974
10002
  id: toastIdRef.current,
9975
10003
  dismissible: false,
@@ -10314,7 +10342,7 @@ function UploadedFilesList({
10314
10342
  }
10315
10343
 
10316
10344
  // src/vertical-tabs/VerticalTabs.tsx
10317
- import { useState as useState33 } from "react";
10345
+ import { useState as useState34 } from "react";
10318
10346
  import { jsx as jsx133, jsxs as jsxs81 } from "react/jsx-runtime";
10319
10347
  function getKey(index, key) {
10320
10348
  return `${key || "step"}_${index}`;
@@ -10326,7 +10354,7 @@ function VerticalTabs({
10326
10354
  className
10327
10355
  }) {
10328
10356
  const defaultValue = getKey(0, stepKey);
10329
- const [value, setValue] = useState33(defaultValue);
10357
+ const [value, setValue] = useState34(defaultValue);
10330
10358
  const hasImages = steps.every((step) => step.images?.length);
10331
10359
  return /* @__PURE__ */ jsxs81(
10332
10360
  "div",
@@ -10485,7 +10513,7 @@ function VideoModal({
10485
10513
  }
10486
10514
 
10487
10515
  // src/video-player/VideoPlayer.tsx
10488
- import { useEffect as useEffect33, useRef as useRef24, useState as useState34 } from "react";
10516
+ import { useEffect as useEffect33, useRef as useRef24, useState as useState35 } from "react";
10489
10517
  import { useTranslation as useTranslation22 } from "react-i18next";
10490
10518
  import {
10491
10519
  Loader2 as Loader23,
@@ -10512,15 +10540,15 @@ function VideoPlayer({
10512
10540
  const videoRef = useRef24(null);
10513
10541
  const iframeRef = useRef24(null);
10514
10542
  const containerRef = useRef24(null);
10515
- const [isPlaying, setIsPlaying] = useState34(false);
10516
- const [isMuted, setIsMuted] = useState34(false);
10517
- const [currentTime, setCurrentTime] = useState34(0);
10518
- const [duration, setDuration] = useState34(0);
10519
- const [isFullScreenMode, setIsFullScreenMode] = useState34(isFullScreen);
10520
- const [isLoading, setIsLoading] = useState34(true);
10521
- const [videoSource, setVideoSource] = useState34("file");
10522
- const [youtubeEmbedUrl, setYoutubeEmbedUrl] = useState34("");
10523
- const [vimeoEmbedUrl, setVimeoEmbedUrl] = useState34("");
10543
+ const [isPlaying, setIsPlaying] = useState35(false);
10544
+ const [isMuted, setIsMuted] = useState35(false);
10545
+ const [currentTime, setCurrentTime] = useState35(0);
10546
+ const [duration, setDuration] = useState35(0);
10547
+ const [isFullScreenMode, setIsFullScreenMode] = useState35(isFullScreen);
10548
+ const [isLoading, setIsLoading] = useState35(true);
10549
+ const [videoSource, setVideoSource] = useState35("file");
10550
+ const [youtubeEmbedUrl, setYoutubeEmbedUrl] = useState35("");
10551
+ const [vimeoEmbedUrl, setVimeoEmbedUrl] = useState35("");
10524
10552
  useClickEscape({ enabled: isFullScreenMode, onClick: onClose });
10525
10553
  useEffect33(() => {
10526
10554
  const youtubeRegex = /(?:youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/embed\/)([a-zA-Z0-9_-]{11})/;
@@ -10804,11 +10832,11 @@ function VideoPlayer({
10804
10832
  import {
10805
10833
  forwardRef as forwardRef54,
10806
10834
  memo as memo7,
10807
- useCallback as useCallback27,
10835
+ useCallback as useCallback28,
10808
10836
  useImperativeHandle,
10809
10837
  useMemo as useMemo7,
10810
10838
  useRef as useRef25,
10811
- useState as useState35
10839
+ useState as useState36
10812
10840
  } from "react";
10813
10841
  import { isFirefox, isMobile as isMobile2 } from "react-device-detect";
10814
10842
  import ReactWebcam from "react-webcam";
@@ -10863,7 +10891,7 @@ async function compressImage(image) {
10863
10891
  }
10864
10892
 
10865
10893
  // src/webcam/useErrorHandler.ts
10866
- import { useCallback as useCallback26 } from "react";
10894
+ import { useCallback as useCallback27 } from "react";
10867
10895
  import { useTranslation as useTranslation23 } from "react-i18next";
10868
10896
  import { isSafari as isSafari2 } from "react-device-detect";
10869
10897
 
@@ -11029,7 +11057,7 @@ var GET_USER_MEDIA_ERROR = "getUserMedia is not implemented in this browser";
11029
11057
  function useErrorHandler({ onError }) {
11030
11058
  const { t } = useTranslation23();
11031
11059
  const handleError = useEvent(onError);
11032
- const handleUserMediaError = useCallback26(
11060
+ const handleUserMediaError = useCallback27(
11033
11061
  (error) => {
11034
11062
  console.error(error);
11035
11063
  let errorText = "";
@@ -11124,10 +11152,10 @@ var Webcam = memo7(
11124
11152
  onError,
11125
11153
  ...props
11126
11154
  }, ref) => {
11127
- const [minScreenshotHeight, setMinScreenshotHeight] = useState35();
11128
- const [minScreenshotWidth, setMinScreenshotWidth] = useState35();
11129
- const [useReducedConstraints, setUseReducedConstraints] = useState35(false);
11130
- const [numberOfCameras, setNumberOfCameras] = useState35(0);
11155
+ const [minScreenshotHeight, setMinScreenshotHeight] = useState36();
11156
+ const [minScreenshotWidth, setMinScreenshotWidth] = useState36();
11157
+ const [useReducedConstraints, setUseReducedConstraints] = useState36(false);
11158
+ const [numberOfCameras, setNumberOfCameras] = useState36(0);
11131
11159
  const constraints = useMemo7(() => {
11132
11160
  if (videoConstraints) {
11133
11161
  return videoConstraints;
@@ -11159,7 +11187,7 @@ var Webcam = memo7(
11159
11187
  onError(errorDetails);
11160
11188
  }
11161
11189
  });
11162
- const handleUserMediaErrorWithFallback = useCallback27(
11190
+ const handleUserMediaErrorWithFallback = useCallback28(
11163
11191
  (error) => {
11164
11192
  if (error instanceof DOMException && error.name === "OverconstrainedError" && !useReducedConstraints && !videoConstraints) {
11165
11193
  console.warn("Camera constraints failed, trying reduced constraints:", error);
@@ -11209,7 +11237,7 @@ var Webcam = memo7(
11209
11237
  ...webcamRef.current
11210
11238
  })
11211
11239
  );
11212
- const handleUserMediaSuccess = useCallback27(
11240
+ const handleUserMediaSuccess = useCallback28(
11213
11241
  (stream) => {
11214
11242
  if (!isMobile2) {
11215
11243
  const track = stream.getVideoTracks()[0];
@@ -11300,17 +11328,17 @@ Webcam.displayName = "Webcam";
11300
11328
 
11301
11329
  // src/mobile-webcam/MobileWebcam.tsx
11302
11330
  import { Camera, ChevronLeft as ChevronLeft4 } from "lucide-react";
11303
- import { forwardRef as forwardRef55, useCallback as useCallback29 } from "react";
11331
+ import { forwardRef as forwardRef55, useCallback as useCallback30 } from "react";
11304
11332
  import { createPortal } from "react-dom";
11305
11333
  import { useTranslation as useTranslation25 } from "react-i18next";
11306
11334
 
11307
11335
  // src/mobile-webcam/DeviceCamera/DeviceCamera.tsx
11308
- import { useCallback as useCallback28 } from "react";
11336
+ import { useCallback as useCallback29 } from "react";
11309
11337
  import { useTranslation as useTranslation24 } from "react-i18next";
11310
11338
  import { jsx as jsx137, jsxs as jsxs85 } from "react/jsx-runtime";
11311
11339
  function DeviceCamera({ onChange, facingMode, className }) {
11312
11340
  const { t } = useTranslation24();
11313
- const handleNativeScreenshot = useCallback28(
11341
+ const handleNativeScreenshot = useCallback29(
11314
11342
  (event) => {
11315
11343
  const file = event.target.files?.[0];
11316
11344
  onChange(file ? compressImage(file) : void 0);
@@ -11326,7 +11354,7 @@ function DeviceCamera({ onChange, facingMode, className }) {
11326
11354
  ),
11327
11355
  children: [
11328
11356
  /* @__PURE__ */ jsx137("div", { children: t("camera_errors.experiencing_camera_issues") }),
11329
- /* @__PURE__ */ jsxs85("label", { className: "text-[16px] font-semibold uppercase leading-6 text-[var(--text-button-color)]", children: [
11357
+ /* @__PURE__ */ jsxs85("label", { className: "text-[16px] font-semibold uppercase leading-6", children: [
11330
11358
  t("open_devices_camera"),
11331
11359
  /* @__PURE__ */ jsx137(
11332
11360
  "input",
@@ -11358,7 +11386,7 @@ var MobileWebcam = forwardRef55(
11358
11386
  ({ onScreenshot, onBack, title, text, disabled, className, ...props }, ref) => {
11359
11387
  const rootElement = getDocument()?.body;
11360
11388
  const { t } = useTranslation25();
11361
- const handleNativeScreenshot = useCallback29(
11389
+ const handleNativeScreenshot = useCallback30(
11362
11390
  (photo) => onScreenshot({ isNative: true, photo }),
11363
11391
  [onScreenshot]
11364
11392
  );
@@ -18056,7 +18084,7 @@ AirbnbPhoneField.displayName = "AirbnbPhoneField";
18056
18084
  import * as React72 from "react";
18057
18085
  import { ChevronDown as ChevronDown6, Search as Search3 } from "lucide-react";
18058
18086
  import { useVirtualizer as useVirtualizer3 } from "@tanstack/react-virtual";
18059
- import { useCallback as useCallback49 } from "react";
18087
+ import { useCallback as useCallback50 } from "react";
18060
18088
  import { jsx as jsx179, jsxs as jsxs119 } from "react/jsx-runtime";
18061
18089
  var ROW_HEIGHT = 48;
18062
18090
  var DESKTOP_LIST_HEIGHT = 280;
@@ -18135,7 +18163,7 @@ var AirbnbSearchableSelectInternal = ({
18135
18163
  isDisabled: !open || isMobile3
18136
18164
  });
18137
18165
  const handleOnOpenChange = useEvent(onOpenChange);
18138
- const setSelectOpen = useCallback49(
18166
+ const setSelectOpen = useCallback50(
18139
18167
  (nextOpen, options2) => {
18140
18168
  setOpen(nextOpen);
18141
18169
  handleOnOpenChange?.(nextOpen);