cobrowse-agent-ui 1.4.2 → 1.6.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.
- package/README.md +6 -8
- package/dist/cobrowse-agent-ui.css +1 -1
- package/dist/cobrowse-agent-ui.d.ts +140 -6
- package/dist/cobrowse-agent-ui.js +436 -173
- package/dist/cobrowse-agent-ui.js.map +1 -1
- package/dist/index-fBWDR3rY.js +1337 -0
- package/dist/index-fBWDR3rY.js.map +1 -0
- package/dist/integrations.d.ts +22 -6
- package/dist/integrations.js +116 -80
- package/dist/integrations.js.map +1 -1
- package/dist/session/demo-session.html +111 -0
- package/package.json +5 -4
- package/dist/index-CvPSmCSB.js +0 -839
- package/dist/index-CvPSmCSB.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-fBWDR3rY.js","sources":["../lib/i18n/instance.ts","../lib/i18n/react.tsx","../lib/components/CodeEntry/index.tsx","../lib/components/Button/index.tsx","../lib/icons/globe.svg?react","../lib/icons/apple.svg?react","../lib/icons/android.svg?react","../lib/icons/browser-chrome.svg?react","../lib/icons/browser-edge.svg?react","../lib/icons/browser-firefox.svg?react","../lib/icons/browser-opera.svg?react","../lib/icons/browser-safari.svg?react","../lib/icons/browser-samsung-internet.svg?react","../lib/icons/windows.svg?react","../lib/components/PlatformIcon/index.tsx","../lib/hooks/useDeviceType.ts","../lib/components/Device/index.tsx","../lib/components/Stopwatch/index.tsx","../lib/icons/clock.svg?react","../lib/components/Session/index.tsx","../lib/components/SmartConnectButton/index.tsx","../lib/icons/refresh.svg?react","../lib/components/RefreshButton/index.tsx","../lib/components/Loader/index.tsx"],"sourcesContent":["import { createInstance } from 'i18next'\nimport { initReactI18next } from 'react-i18next'\nimport { formatDistanceToNow } from 'date-fns'\nimport type { Locale } from 'date-fns'\nimport {\n enUS, ar, cs, da, de, es, et, fi, fr, hi, it, ja, ko, lt, ms, nl, pl, pt, ro, ru, sk, sl, sv, th, uk, vi, zhCN\n} from 'date-fns/locale'\nimport localeEnUS from '../locales/en-us/translation.json'\nimport localeAr from '../locales/ar/translation.json'\nimport localeCs from '../locales/cs/translation.json'\nimport localeDa from '../locales/da/translation.json'\nimport localeDe from '../locales/de/translation.json'\nimport localeEs from '../locales/es/translation.json'\nimport localeEt from '../locales/et/translation.json'\nimport localeFi from '../locales/fi/translation.json'\nimport localeFr from '../locales/fr/translation.json'\nimport localeHi from '../locales/hi/translation.json'\nimport localeIt from '../locales/it/translation.json'\nimport localeJa from '../locales/ja/translation.json'\nimport localeKk from '../locales/kk/translation.json'\nimport localeKo from '../locales/ko/translation.json'\nimport localeLt from '../locales/lt/translation.json'\nimport localeMr from '../locales/mr/translation.json'\nimport localeMs from '../locales/ms/translation.json'\nimport localeNl from '../locales/nl/translation.json'\nimport localePl from '../locales/pl/translation.json'\nimport localePt from '../locales/pt/translation.json'\nimport localeRo from '../locales/ro/translation.json'\nimport localeRu from '../locales/ru/translation.json'\nimport localeSk from '../locales/sk/translation.json'\nimport localeSl from '../locales/sl/translation.json'\nimport localeSv from '../locales/sv/translation.json'\nimport localeTh from '../locales/th/translation.json'\nimport localeUk from '../locales/uk/translation.json'\nimport localeVi from '../locales/vi/translation.json'\nimport localeZh from '../locales/zh/translation.json'\n\nconst englishUS = 'en-us'\n\nconst dateLocales: Record<string, Locale> = {\n [englishUS]: enUS,\n ar,\n cs,\n da,\n de,\n es,\n et,\n fi,\n fr,\n hi,\n it,\n ja,\n ko,\n lt,\n ms,\n nl,\n pl,\n pt,\n ro,\n ru,\n sk,\n sl,\n sv,\n th,\n uk,\n vi,\n zh: zhCN\n}\n\nconst i18n = createInstance({\n fallbackLng: englishUS,\n debug: import.meta.env.DEV,\n lowerCaseLng: true,\n interpolation: {\n escapeValue: false,\n format: (value: unknown, format?: string, lng?: string) => {\n if (format === 'dateRelative' && value instanceof Date) {\n if (Math.abs(Date.now() - value.getTime()) < 60_000) {\n return i18n.t('Just now', { lng })\n }\n\n const { [lng ?? englishUS]: locale } = dateLocales\n return formatDistanceToNow(value, { addSuffix: true, locale })\n }\n\n return String(value)\n }\n },\n detection: {\n caches: [],\n order: []\n },\n resources: {\n [englishUS]: {\n translation: localeEnUS\n },\n ar: {\n translation: localeAr\n },\n cs: {\n translation: localeCs\n },\n da: {\n translation: localeDa\n },\n de: {\n translation: localeDe\n },\n es: {\n translation: localeEs\n },\n et: {\n translation: localeEt\n },\n fi: {\n translation: localeFi\n },\n fr: {\n translation: localeFr\n },\n hi: {\n translation: localeHi\n },\n it: {\n translation: localeIt\n },\n ja: {\n translation: localeJa\n },\n kk: {\n translation: localeKk\n },\n ko: {\n translation: localeKo\n },\n lt: {\n translation: localeLt\n },\n mr: {\n translation: localeMr\n },\n ms: {\n translation: localeMs\n },\n nl: {\n translation: localeNl\n },\n pl: {\n translation: localePl\n },\n pt: {\n translation: localePt\n },\n ro: {\n translation: localeRo\n },\n ru: {\n translation: localeRu\n },\n sk: {\n translation: localeSk\n },\n sl: {\n translation: localeSl\n },\n sv: {\n translation: localeSv\n },\n th: {\n translation: localeTh\n },\n uk: {\n translation: localeUk\n },\n vi: {\n translation: localeVi\n },\n zh: {\n translation: localeZh\n }\n }\n})\n\nvoid i18n\n .use(initReactI18next)\n .init()\n\nexport default i18n\n","import type { ComponentProps } from 'react'\nimport {\n Trans as ReactI18nextTrans,\n useTranslation as useReactI18nextTranslation\n} from 'react-i18next'\nimport i18n from './instance'\n\ntype TransProps = ComponentProps<typeof ReactI18nextTrans>\n\nexport const useTranslation = () => useReactI18nextTranslation(undefined, { i18n })\n\nexport const Trans = (props: TransProps) => (\n <ReactI18nextTrans i18n={i18n} {...props} />\n)\n","import {\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n type ForwardedRef,\n type ReactNode,\n type ClipboardEvent,\n type ChangeEvent,\n type KeyboardEvent\n} from 'react'\nimport clsx from 'clsx'\nimport { useTranslation } from '@/i18n'\nimport styles from './CodeEntry.module.css'\n\nexport interface CodeEntryHandle {\n clear: () => void\n focus: (index: number) => void\n}\n\nexport interface CodeEntryProps {\n ref?: ForwardedRef<CodeEntryHandle>\n className?: string\n inputClassName?: string\n focusOnRender?: boolean\n onCode?: (code: string) => Promise<boolean> | boolean\n label?: ReactNode | false\n children?: ReactNode\n}\n\nconst CODE_LENGTH = 6\nconst EMTPY_STATE = Array<string>(CODE_LENGTH).fill('')\nconst KEY_BACKSPACE = 'Backspace'\nconst KEY_ARROW_LEFT = 'ArrowLeft'\nconst KEY_ARROW_RIGHT = 'ArrowRight'\n\nconst getElementIndex = (refsArr: Array<HTMLInputElement | null>, elem: HTMLInputElement) =>\n refsArr.findIndex((el) => el === elem)\n\nconst focusPreviousInput = (refsArr: Array<HTMLInputElement | null>, elem: HTMLInputElement) => {\n refsArr[Math.max(getElementIndex(refsArr, elem) - 1, 0)]?.focus()\n}\n\nconst focusNextInput = (refsArr: Array<HTMLInputElement | null>, elem: HTMLInputElement) => {\n refsArr[Math.min(getElementIndex(refsArr, elem) + 1, CODE_LENGTH - 1)]?.focus()\n}\n\nconst moveFocusForArrowKey = (\n refsArr: Array<HTMLInputElement | null>,\n elem: HTMLInputElement,\n key: typeof KEY_ARROW_LEFT | typeof KEY_ARROW_RIGHT\n) => {\n const isRTL = getComputedStyle(elem).direction === 'rtl'\n const movesToPrevious = key === KEY_ARROW_LEFT ? !isRTL : isRTL\n\n if (movesToPrevious) {\n focusPreviousInput(refsArr, elem)\n } else {\n focusNextInput(refsArr, elem)\n }\n}\n\nconst CodeEntry = ({ ref, className, inputClassName, focusOnRender = false, onCode, label, children }: CodeEntryProps) => {\n const { t } = useTranslation()\n const [validating, setValidating] = useState(false)\n const [code, setCode] = useState(EMTPY_STATE)\n const refs = useRef<Array<HTMLInputElement | null>>([])\n\n useImperativeHandle(ref, () => ({\n clear () {\n setCode(EMTPY_STATE)\n },\n focus (index) {\n refs.current[index]?.focus()\n }\n }), [])\n\n const getCode = useCallback(() => code.join('').substring(0, CODE_LENGTH), [code])\n\n const focusFirstEmptyInput = useCallback(() => {\n const firstEmptyIndex = code.findIndex((digit) => digit === '')\n const targetIndex = firstEmptyIndex === -1 ? CODE_LENGTH - 1 : firstEmptyIndex\n\n refs.current[targetIndex]?.focus()\n }, [code])\n\n const tryComplete = useCallback(async (codeValue: string) => {\n setValidating(true)\n\n try {\n const isValid = await onCode?.(codeValue)\n\n if (isValid) {\n setCode(EMTPY_STATE)\n\n if (refs.current[0]) {\n setTimeout(() => refs.current[0]?.focus(), 0)\n }\n } else {\n setTimeout(() => refs.current[CODE_LENGTH - 1]?.focus(), 0)\n }\n } catch (e) {\n if (refs.current[CODE_LENGTH - 1]) {\n setTimeout(() => refs.current[CODE_LENGTH - 1]?.focus(), 0)\n }\n\n throw e\n } finally {\n setValidating(false)\n }\n }, [onCode])\n\n // Run the tryComplete function when the code state changes\n useEffect(() => {\n const code = getCode()\n\n if (code.length !== CODE_LENGTH) {\n return\n }\n\n void tryComplete(code)\n }, [getCode, tryComplete])\n\n const setDigit = useCallback((digit: number, value: string) => {\n if (digit > (CODE_LENGTH - 1)) {\n return\n }\n\n setCode((code) => {\n const updatedCode = [...code]\n\n updatedCode[digit] = value\n\n return updatedCode\n })\n }, [])\n\n const handlePaste = useCallback((event: ClipboardEvent<HTMLInputElement>) => {\n if (validating) {\n return\n }\n\n const { clipboardData } = event\n const pastedData = clipboardData.getData('Text').trim()\n\n // Exit early if the pasted data contains anything other than just digits\n if (!/^[0-9]+$/.test(pastedData)) {\n event.preventDefault()\n\n return\n }\n\n const digits = pastedData.split('')\n // Start pasting from the first digit if the clipboard holds a full code,\n // otherwise just paste from the currently selected input onwards\n let digit = pastedData.length === CODE_LENGTH\n ? 0\n : parseInt(event.currentTarget.getAttribute('data-digit') ?? '0', 10)\n\n digits.forEach((value) => {\n setDigit(digit, value)\n\n digit += 1\n })\n\n refs.current[Math.min(digit, CODE_LENGTH - 1)]?.focus()\n\n event.preventDefault()\n }, [setDigit, validating])\n\n const handleOnChange = useCallback((event: ChangeEvent<HTMLInputElement>) => {\n const { target, target: { value } } = event\n const digit = parseInt(target.getAttribute('data-digit') ?? '0', 10)\n const digits = value.match(/[0-9]/g) ?? []\n\n if (digits.length === 0) {\n setDigit(digit, '')\n\n return\n }\n\n if (digits.length === 1) {\n setDigit(digit, digits[0])\n focusNextInput(refs.current, target)\n }\n }, [setDigit])\n\n const handleKeyDown = useCallback((event: KeyboardEvent<HTMLInputElement>) => {\n const { key, currentTarget, metaKey, ctrlKey } = event\n\n // On backspace on empty node go back to previous\n if (currentTarget.value.length === 0 && key === KEY_BACKSPACE) {\n focusPreviousInput(refs.current, currentTarget)\n } else if (key === KEY_ARROW_LEFT || key === KEY_ARROW_RIGHT) {\n // Move focus according to visual direction\n moveFocusForArrowKey(refs.current, currentTarget, key)\n event.preventDefault()\n } else if (!metaKey && !ctrlKey && key.length === 1 && !/^[0-9]$/.test(key)) {\n // Prevent non-numeric characters that might appear in numbers (e.g 'e')\n // but allow backspaces too\n event.preventDefault()\n }\n }, [])\n\n const handleKeyUp = useCallback((event: KeyboardEvent<HTMLInputElement>) => {\n const { currentTarget, repeat } = event\n const { value } = currentTarget\n\n if (!repeat && /[0-9]/.test(value)) {\n focusNextInput(refs.current, currentTarget)\n }\n }, [])\n\n const invalid = !validating && getCode().length === CODE_LENGTH\n\n return (\n <fieldset\n className={clsx(styles.root, className)}\n >\n {label !== false && (\n <legend\n className={styles.legend}\n onClick={focusFirstEmptyInput}\n >\n <span>{label ?? t('Support code')}</span>\n </legend>\n )}\n <div className={clsx(styles.digits, invalid && styles.invalid)} role='group'>\n {code.map((value, index) => (\n <input\n key={index}\n inputMode='numeric'\n className={clsx(styles.input, inputClassName)}\n disabled={validating}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n onChange={handleOnChange}\n onPaste={handlePaste}\n value={value}\n data-digit={index}\n ref={(el) => { refs.current[index] = el }}\n autoFocus={focusOnRender && index === 0}\n aria-label={t('Digit {{digit}}', { digit: index + 1 })}\n />\n ))}\n {children}\n </div>\n </fieldset>\n )\n}\n\nexport default CodeEntry\n","import clsx from 'clsx'\nimport type { ComponentPropsWithoutRef, ElementType } from 'react'\nimport styles from './Button.module.css'\n\nconst DEFAULT_TAG = 'button' as const\n\ntype PropsOf<T extends ElementType> = ComponentPropsWithoutRef<T>\n\ninterface BaseButtonProps {\n className?: string\n}\n\nexport type ButtonProps<TElement extends ElementType = typeof DEFAULT_TAG> =\n BaseButtonProps &\n PropsOf<TElement> & {\n as?: TElement\n }\n\nconst Button = <TElement extends ElementType = typeof DEFAULT_TAG>({\n as,\n className,\n ...props\n}: ButtonProps<TElement>) => {\n const Tag: ElementType = as ?? DEFAULT_TAG\n const tagProps = props as PropsOf<ElementType> & { type?: string }\n\n return (\n <Tag\n type={Tag === DEFAULT_TAG ? 'button' : undefined}\n className={clsx(styles.root, className)}\n {...tagProps}\n />\n )\n}\n\nexport default Button\n","import * as React from \"react\";\nconst SvgGlobe = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M14.9167 14.4917C14.7001 13.8251 14.0751 13.3334 13.3334 13.3334H12.5001V10.8334C12.5001 10.6124 12.4123 10.4004 12.256 10.2442C12.0997 10.0879 11.8878 10.0001 11.6667 10.0001H6.66675V8.33341H8.33341C8.55443 8.33341 8.76639 8.24562 8.92267 8.08934C9.07895 7.93306 9.16675 7.7211 9.16675 7.50008V5.83341H10.8334C11.2754 5.83341 11.6994 5.65782 12.0119 5.34526C12.3245 5.0327 12.5001 4.60878 12.5001 4.16675V3.82508C13.4971 4.22705 14.382 4.86464 15.0788 5.68328C15.7756 6.50191 16.2637 7.4772 16.5012 8.52567C16.7387 9.57414 16.7187 10.6646 16.4427 11.7036C16.1668 12.7426 15.6432 13.6993 14.9167 14.4917ZM9.16675 16.6084C5.87508 16.2001 3.33341 13.4001 3.33341 10.0001C3.33341 9.48341 3.40008 8.98341 3.50841 8.50841L7.50008 12.5001V13.3334C7.50008 13.7754 7.67568 14.1994 7.98824 14.5119C8.3008 14.8245 8.72472 15.0001 9.16675 15.0001M10.0001 1.66675C8.90573 1.66675 7.8221 1.8823 6.81105 2.30109C5.80001 2.71987 4.88135 3.3337 4.10752 4.10752C2.54472 5.67033 1.66675 7.78994 1.66675 10.0001C1.66675 12.2102 2.54472 14.3298 4.10752 15.8926C4.88135 16.6665 5.80001 17.2803 6.81105 17.6991C7.8221 18.1179 8.90573 18.3334 10.0001 18.3334C12.2102 18.3334 14.3298 17.4554 15.8926 15.8926C17.4554 14.3298 18.3334 12.2102 18.3334 10.0001C18.3334 8.90573 18.1179 7.8221 17.6991 6.81105C17.2803 5.80001 16.6665 4.88135 15.8926 4.10752C15.1188 3.3337 14.2002 2.71987 13.1891 2.30109C12.1781 1.8823 11.0944 1.66675 10.0001 1.66675Z\", fill: \"currentColor\" }));\nexport default SvgGlobe;\n","import * as React from \"react\";\nconst SvgApple = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M14.2084 16.9C13.3917 17.6917 12.5001 17.5667 11.6417 17.1917C10.7334 16.8083 9.90005 16.7917 8.94172 17.1917C7.74172 17.7083 7.10839 17.5583 6.39172 16.9C2.32506 12.7083 2.92506 6.325 7.54172 6.09167C8.66672 6.15 9.45006 6.70833 10.1084 6.75833C11.0917 6.55833 12.0334 5.98333 13.0834 6.05833C14.3417 6.15833 15.2917 6.65833 15.9167 7.55833C13.3167 9.11667 13.9334 12.5417 16.3167 13.5C15.8417 14.75 15.2251 15.9917 14.2001 16.9083L14.2084 16.9ZM10.0251 6.04167C9.90005 4.18333 11.4084 2.65 13.1417 2.5C13.3834 4.65 11.1917 6.25 10.0251 6.04167Z\", fill: \"currentColor\" }));\nexport default SvgApple;\n","import * as React from \"react\";\nconst SvgAndroid = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M0.833252 15C0.958252 13.5139 1.41325 12.1458 2.19825 10.8958C2.98325 9.64583 4.02825 8.65278 5.33325 7.91667L3.79159 5.25C3.70825 5.125 3.68742 4.99306 3.72909 4.85417C3.77075 4.71528 3.86103 4.61111 3.99992 4.54167C4.11103 4.47222 4.23603 4.45833 4.37492 4.5C4.51381 4.54167 4.62492 4.625 4.70825 4.75L6.24992 7.41667C7.44436 6.91667 8.69436 6.66667 9.99992 6.66667C11.3055 6.66667 12.5555 6.91667 13.7499 7.41667L15.2916 4.75C15.3749 4.625 15.486 4.54167 15.6249 4.5C15.7638 4.45833 15.8888 4.47222 15.9999 4.54167C16.1388 4.61111 16.2291 4.71528 16.2708 4.85417C16.3124 4.99306 16.2916 5.125 16.2083 5.25L14.6666 7.91667C15.9721 8.65278 17.0171 9.64583 17.8016 10.8958C18.586 12.1458 19.041 13.5139 19.1666 15H0.833252ZM5.83325 12.7083C6.12492 12.7083 6.37159 12.6075 6.57325 12.4058C6.77492 12.2042 6.87547 11.9578 6.87492 11.6667C6.87492 11.375 6.77409 11.1283 6.57242 10.9267C6.37075 10.725 6.12436 10.6244 5.83325 10.625C5.54159 10.625 5.29492 10.7258 5.09325 10.9275C4.89159 11.1292 4.79103 11.3756 4.79159 11.6667C4.79159 11.9583 4.89242 12.205 5.09409 12.4067C5.29575 12.6083 5.54214 12.7089 5.83325 12.7083ZM14.1666 12.7083C14.4583 12.7083 14.7049 12.6075 14.9066 12.4058C15.1083 12.2042 15.2088 11.9578 15.2083 11.6667C15.2083 11.375 15.1074 11.1283 14.9058 10.9267C14.7041 10.725 14.4577 10.6244 14.1666 10.625C13.8749 10.625 13.6283 10.7258 13.4266 10.9275C13.2249 11.1292 13.1244 11.3756 13.1249 11.6667C13.1249 11.9583 13.2258 12.205 13.4274 12.4067C13.6291 12.6083 13.8755 12.7089 14.1666 12.7083Z\", fill: \"currentColor\" }));\nexport default SvgAndroid;\n","import * as React from \"react\";\nconst SvgBrowserChrome = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"-10 -10 276 276\", ...props }, /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"chrome-a\", x1: 145, x2: 34, y1: 253, y2: 61, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { offset: 0, stopColor: \"#1e8e3e\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#34a853\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"chrome-b\", x1: 111, x2: 222, y1: 254, y2: 62, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { offset: 0, stopColor: \"#fcc934\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#fbbc04\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"chrome-c\", x1: 17, x2: 239, y1: 80, y2: 80, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { offset: 0, stopColor: \"#d93025\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#ea4335\" })), /* @__PURE__ */ React.createElement(\"circle\", { cx: 128, cy: 128, r: 64, fill: \"#fff\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#chrome-a)\", d: \"M96 183.4A63.7 63.7 0 0 1 72.6 160L17.2 64A128 128 0 0 0 128 256l55.4-96A64 64 0 0 1 96 183.4Z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#chrome-b)\", d: \"M192 128a63.7 63.7 0 0 1-8.6 32L128 256A128 128 0 0 0 238.9 64h-111a64 64 0 0 1 64 64Z\" }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 128, cy: 128, r: 52, fill: \"#1a73e8\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#chrome-c)\", d: \"M96 72.6a63.7 63.7 0 0 1 32-8.6h110.8a128 128 0 0 0-221.7 0l55.5 96A64 64 0 0 1 96 72.6Z\" }));\nexport default SvgBrowserChrome;\n","import * as React from \"react\";\nconst SvgBrowserEdge = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 256 256\", ...props }, /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"radialGradient\", { id: \"edge-b\", cx: 161.8, cy: 68.9, r: 95.4, gradientTransform: \"matrix(1 0 0 -.95 0 248.8)\", gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { offset: 0.7, stopOpacity: 0 }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 0.9, stopOpacity: 0.5 }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1 })), /* @__PURE__ */ React.createElement(\"radialGradient\", { id: \"edge-d\", cx: -340.3, cy: 63, r: 143.2, gradientTransform: \"matrix(.15 -.99 -.8 -.12 176.6 -125.4)\", gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { offset: 0.8, stopOpacity: 0 }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 0.9, stopOpacity: 0.5 }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1 })), /* @__PURE__ */ React.createElement(\"radialGradient\", { id: \"edge-e\", cx: 113.4, cy: 570.2, r: 202.4, gradientTransform: \"matrix(-.04 1 2.13 .08 -1179.5 -106.7)\", gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { offset: 0, stopColor: \"#35c1f1\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 0.1, stopColor: \"#34c1ed\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 0.2, stopColor: \"#2fc2df\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 0.3, stopColor: \"#2bc3d2\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 0.7, stopColor: \"#36c752\" })), /* @__PURE__ */ React.createElement(\"radialGradient\", { id: \"edge-f\", cx: 376.5, cy: 568, r: 97.3, gradientTransform: \"matrix(.28 .96 .78 -.23 -303.8 -148.5)\", gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { offset: 0, stopColor: \"#66eb6e\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#66eb6e\", stopOpacity: 0 })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"edge-a\", x1: 63.3, y1: 84, x2: 241.7, y2: 84, gradientTransform: \"matrix(1 0 0 -1 0 266)\", gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { offset: 0, stopColor: \"#0c59a4\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#114a8b\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"edge-c\", x1: 157.3, y1: 161.4, x2: 46, y2: 40.1, gradientTransform: \"matrix(1 0 0 -1 0 266)\", gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { offset: 0, stopColor: \"#1b9de2\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 0.2, stopColor: \"#1595df\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 0.7, stopColor: \"#0680d7\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#0078d4\" }))), /* @__PURE__ */ React.createElement(\"path\", { d: \"M235.7 195.5a93.7 93.7 0 0 1-10.6 4.7 101.9 101.9 0 0 1-35.9 6.4c-47.3 0-88.5-32.5-88.5-74.3a31.5 31.5 0 0 1 16.4-27.3c-42.8 1.8-53.8 46.4-53.8 72.5 0 74 68.1 81.4 82.8 81.4 7.9 0 19.8-2.3 27-4.6l1.3-.4a128.3 128.3 0 0 0 66.6-52.8 4 4 0 0 0-5.3-5.6Z\", transform: \"translate(-4.6 -5)\", style: {\n fill: \"url(#edge-a)\"\n} }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M235.7 195.5a93.7 93.7 0 0 1-10.6 4.7 101.9 101.9 0 0 1-35.9 6.4c-47.3 0-88.5-32.5-88.5-74.3a31.5 31.5 0 0 1 16.4-27.3c-42.8 1.8-53.8 46.4-53.8 72.5 0 74 68.1 81.4 82.8 81.4 7.9 0 19.8-2.3 27-4.6l1.3-.4a128.3 128.3 0 0 0 66.6-52.8 4 4 0 0 0-5.3-5.6Z\", transform: \"translate(-4.6 -5)\", style: {\n isolation: \"isolate\",\n opacity: 0.35,\n fill: \"url(#edge-b)\"\n} }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M110.3 246.3A79.2 79.2 0 0 1 87.6 225a80.7 80.7 0 0 1 29.5-120c3.2-1.5 8.5-4.1 15.6-4a32.4 32.4 0 0 1 25.7 13 31.9 31.9 0 0 1 6.3 18.7c0-.2 24.5-79.6-80-79.6-43.9 0-80 41.6-80 78.2a130.2 130.2 0 0 0 12.1 56 128 128 0 0 0 156.4 67 75.5 75.5 0 0 1-62.8-8Z\", transform: \"translate(-4.6 -5)\", style: {\n fill: \"url(#edge-c)\"\n} }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M110.3 246.3A79.2 79.2 0 0 1 87.6 225a80.7 80.7 0 0 1 29.5-120c3.2-1.5 8.5-4.1 15.6-4a32.4 32.4 0 0 1 25.7 13 31.9 31.9 0 0 1 6.3 18.7c0-.2 24.5-79.6-80-79.6-43.9 0-80 41.6-80 78.2a130.2 130.2 0 0 0 12.1 56 128 128 0 0 0 156.4 67 75.5 75.5 0 0 1-62.8-8Z\", transform: \"translate(-4.6 -5)\", style: {\n opacity: 0.41,\n fill: \"url(#edge-d)\",\n isolation: \"isolate\"\n} }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M157 153.8c-.9 1-3.4 2.5-3.4 5.6 0 2.6 1.7 5.2 4.8 7.3 14.3 10 41.4 8.6 41.5 8.6a59.6 59.6 0 0 0 30.3-8.3 61.4 61.4 0 0 0 30.4-52.9c.3-22.4-8-37.3-11.3-43.9C228 28.8 182.3 5 132.6 5a128 128 0 0 0-128 126.2c.5-36.5 36.8-66 80-66 3.5 0 23.5.3 42 10a72.6 72.6 0 0 1 30.9 29.3c6.1 10.6 7.2 24.1 7.2 29.5s-2.7 13.3-7.8 19.9Z\", transform: \"translate(-4.6 -5)\", style: {\n fill: \"url(#edge-e)\"\n} }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M157 153.8c-.9 1-3.4 2.5-3.4 5.6 0 2.6 1.7 5.2 4.8 7.3 14.3 10 41.4 8.6 41.5 8.6a59.6 59.6 0 0 0 30.3-8.3 61.4 61.4 0 0 0 30.4-52.9c.3-22.4-8-37.3-11.3-43.9C228 28.8 182.3 5 132.6 5a128 128 0 0 0-128 126.2c.5-36.5 36.8-66 80-66 3.5 0 23.5.3 42 10a72.6 72.6 0 0 1 30.9 29.3c6.1 10.6 7.2 24.1 7.2 29.5s-2.7 13.3-7.8 19.9Z\", transform: \"translate(-4.6 -5)\", style: {\n fill: \"url(#edge-f)\"\n} }));\nexport default SvgBrowserEdge;\n","import * as React from \"react\";\nconst SvgBrowserFirefox = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 77.42, height: 79.97, viewBox: \"0 0 77.42 79.97\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"title\", null, \"Firefox Browser logo\"), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"ff-a\", x1: 70.79, x2: 6.447, y1: 12.39, y2: 74.47, gradientTransform: \"translate(-1.3 -.004086)\", gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#fff44f\", offset: 0.048 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ffe847\", offset: 0.111 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ffc830\", offset: 0.225 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ff980e\", offset: 0.368 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ff8b16\", offset: 0.401 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ff672a\", offset: 0.462 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ff3647\", offset: 0.534 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#e31587\", offset: 0.705 })), /* @__PURE__ */ React.createElement(\"radialGradient\", { id: \"ff-b\", cx: -7907, cy: -8515, r: 80.8, gradientTransform: \"translate(7974,8524)\", gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ffbd4f\", offset: 0.129 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ffac31\", offset: 0.186 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ff9d17\", offset: 0.247 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ff980e\", offset: 0.283 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ff563b\", offset: 0.403 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ff3750\", offset: 0.467 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#f5156c\", offset: 0.71 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#eb0878\", offset: 0.782 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#e50080\", offset: 0.86 })), /* @__PURE__ */ React.createElement(\"radialGradient\", { id: \"ff-c\", cx: -7937, cy: -8482, r: 80.8, gradientTransform: \"translate(7974,8524)\", gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#960e18\", offset: 0.3 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#b11927\", stopOpacity: 0.74, offset: 0.351 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#db293d\", stopOpacity: 0.343, offset: 0.435 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#f5334b\", stopOpacity: 0.094, offset: 0.497 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ff3750\", stopOpacity: 0, offset: 0.53 })), /* @__PURE__ */ React.createElement(\"radialGradient\", { id: \"ff-d\", cx: -7927, cy: -8533, r: 58.53, gradientTransform: \"translate(7974,8524)\", gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#fff44f\", offset: 0.132 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ffdc3e\", offset: 0.252 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ff9d12\", offset: 0.506 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ff980e\", offset: 0.526 })), /* @__PURE__ */ React.createElement(\"radialGradient\", { id: \"ff-e\", cx: -7946, cy: -8461, r: 38.47, gradientTransform: \"translate(7974,8524)\", gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#3a8ee6\", offset: 0.353 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#5c79f0\", offset: 0.472 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#9059ff\", offset: 0.669 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#c139e6\", offset: 1 })), /* @__PURE__ */ React.createElement(\"radialGradient\", { id: \"ff-f\", cx: -7936, cy: -8492, r: 20.4, gradientTransform: \"matrix(.972 -.235 .275 1.138 10090 7834)\", gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#9059ff\", stopOpacity: 0, offset: 0.206 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#8c4ff3\", stopOpacity: 0.064, offset: 0.278 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#7716a8\", stopOpacity: 0.45, offset: 0.747 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#6e008b\", stopOpacity: 0.6, offset: 0.975 })), /* @__PURE__ */ React.createElement(\"radialGradient\", { id: \"ff-g\", cx: -7938, cy: -8518, r: 27.68, gradientTransform: \"translate(7974,8524)\", gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ffe226\", offset: 0 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ffdb27\", offset: 0.121 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ffc82a\", offset: 0.295 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ffa930\", offset: 0.502 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ff7e37\", offset: 0.732 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ff7139\", offset: 0.792 })), /* @__PURE__ */ React.createElement(\"radialGradient\", { id: \"ff-h\", cx: -7916, cy: -8536, r: 118.1, gradientTransform: \"translate(7974,8524)\", gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#fff44f\", offset: 0.113 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ff980e\", offset: 0.456 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ff5634\", offset: 0.622 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ff3647\", offset: 0.716 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#e31587\", offset: 0.904 })), /* @__PURE__ */ React.createElement(\"radialGradient\", { id: \"ff-i\", cx: -7927, cy: -8523, r: 86.5, gradientTransform: \"matrix(.105 .995 -.653 .069 -4685 8470)\", gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#fff44f\", offset: 0 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ffe847\", offset: 0.06 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ffc830\", offset: 0.168 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ff980e\", offset: 0.304 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ff8b16\", offset: 0.356 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ff672a\", offset: 0.455 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ff3647\", offset: 0.57 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#e31587\", offset: 0.737 })), /* @__PURE__ */ React.createElement(\"radialGradient\", { id: \"ff-j\", cx: -7938, cy: -8508, r: 73.72, gradientTransform: \"translate(7974,8524)\", gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#fff44f\", offset: 0.137 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ff980e\", offset: 0.48 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ff5634\", offset: 0.592 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ff3647\", offset: 0.655 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#e31587\", offset: 0.904 })), /* @__PURE__ */ React.createElement(\"radialGradient\", { id: \"ff-k\", cx: -7919, cy: -8504, r: 80.69, gradientTransform: \"translate(7974,8524)\", gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#fff44f\", offset: 0.094 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ffe141\", offset: 0.231 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ffaf1e\", offset: 0.509 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#ff980e\", offset: 0.626 })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"ff-l\", x1: 70.01, x2: 15.27, y1: 12.06, y2: 66.81, gradientTransform: \"translate(-1.3 -.004086)\", gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#fff44f\", stopOpacity: 0.8, offset: 0.167 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#fff44f\", stopOpacity: 0.634, offset: 0.266 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#fff44f\", stopOpacity: 0.217, offset: 0.489 }), /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#fff44f\", stopOpacity: 0, offset: 0.6 }))), /* @__PURE__ */ React.createElement(\"g\", { transform: \"matrix(.9819843 0 0 .9819843 .6974849 .7199239)\" }, /* @__PURE__ */ React.createElement(\"path\", { d: \"m74.62 26.83c-1.684-4.052-5.1-8.427-7.775-9.81a40.27 40.27 0 0 1 3.925 11.76l7e-3 0.065c-4.382-10.92-11.81-15.33-17.88-24.92-0.307-0.485-0.614-0.971-0.913-1.484-0.171-0.293-0.308-0.557-0.427-0.8a7.053 7.053 0 0 1-0.578-1.535 0.1 0.1 0 0 0-0.088-0.1 0.138 0.138 0 0 0-0.073 0c-5e-3 0-0.013 9e-3 -0.019 0.011s-0.019 0.011-0.028 0.015l0.015-0.026c-9.735 5.7-13.04 16.25-13.34 21.53a19.39 19.39 0 0 0-10.67 4.111 11.59 11.59 0 0 0-1-0.758 17.97 17.97 0 0 1-0.109-9.473 28.7 28.7 0 0 0-9.329 7.21h-0.018c-1.536-1.947-1.428-8.367-1.34-9.708a6.928 6.928 0 0 0-1.294 0.687 28.22 28.22 0 0 0-3.788 3.245 33.84 33.84 0 0 0-3.623 4.347v6e-3 -7e-3a32.73 32.73 0 0 0-5.2 11.74l-0.052 0.256c-0.073 0.341-0.336 2.049-0.381 2.42 0 0.029-6e-3 0.056-9e-3 0.085a36.94 36.94 0 0 0-0.629 5.343v0.2a38.76 38.76 0 0 0 76.95 6.554c0.065-0.5 0.118-0.995 0.176-1.5a39.86 39.86 0 0 0-2.514-19.47zm-44.67 30.34c0.181 0.087 0.351 0.181 0.537 0.264l0.027 0.017q-0.282-0.135-0.564-0.281zm8.878-23.38m31.95-4.934v-0.037l7e-3 0.041z\", fill: \"url(#ff-a)\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m74.62 26.83c-1.684-4.052-5.1-8.427-7.775-9.81a40.27 40.27 0 0 1 3.925 11.76v0.037l7e-3 0.041a35.1 35.1 0 0 1-1.206 26.16c-4.442 9.531-15.19 19.3-32.02 18.82-18.18-0.515-34.2-14.01-37.19-31.68-0.545-2.787 0-4.2 0.274-6.465a28.88 28.88 0 0 0-0.623 5.348v0.2a38.76 38.76 0 0 0 76.95 6.554c0.065-0.5 0.118-0.995 0.176-1.5a39.86 39.86 0 0 0-2.514-19.47z\", fill: \"url(#ff-b)\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m74.62 26.83c-1.684-4.052-5.1-8.427-7.775-9.81a40.27 40.27 0 0 1 3.925 11.76v0.037l7e-3 0.041a35.1 35.1 0 0 1-1.206 26.16c-4.442 9.531-15.19 19.3-32.02 18.82-18.18-0.515-34.2-14.01-37.19-31.68-0.545-2.787 0-4.2 0.274-6.465a28.88 28.88 0 0 0-0.623 5.348v0.2a38.76 38.76 0 0 0 76.95 6.554c0.065-0.5 0.118-0.995 0.176-1.5a39.86 39.86 0 0 0-2.514-19.47z\", fill: \"url(#ff-c)\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m55.78 31.38c0.084 0.059 0.162 0.118 0.241 0.177a21.1 21.1 0 0 0-3.6-4.695c-12.05-12.05-3.157-26.12-1.658-26.84l0.015-0.022c-9.735 5.7-13.04 16.25-13.34 21.53 0.452-0.031 0.9-0.069 1.362-0.069a19.56 19.56 0 0 1 16.98 9.917z\", fill: \"url(#ff-d)\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m38.82 33.79c-0.064 0.964-3.47 4.289-4.661 4.289-11.02 0-12.81 6.667-12.81 6.667 0.488 5.614 4.4 10.24 9.129 12.68 0.216 0.112 0.435 0.213 0.654 0.312q0.569 0.252 1.138 0.466a17.24 17.24 0 0 0 5.043 0.973c19.32 0.906 23.06-23.1 9.119-30.07a13.38 13.38 0 0 1 9.345 2.269 19.56 19.56 0 0 0-16.98-9.917c-0.46 0-0.91 0.038-1.362 0.069a19.39 19.39 0 0 0-10.67 4.111c0.591 0.5 1.258 1.168 2.663 2.553 2.63 2.591 9.375 5.275 9.39 5.59z\", fill: \"url(#ff-e)\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m38.82 33.79c-0.064 0.964-3.47 4.289-4.661 4.289-11.02 0-12.81 6.667-12.81 6.667 0.488 5.614 4.4 10.24 9.129 12.68 0.216 0.112 0.435 0.213 0.654 0.312q0.569 0.252 1.138 0.466a17.24 17.24 0 0 0 5.043 0.973c19.32 0.906 23.06-23.1 9.119-30.07a13.38 13.38 0 0 1 9.345 2.269 19.56 19.56 0 0 0-16.98-9.917c-0.46 0-0.91 0.038-1.362 0.069a19.39 19.39 0 0 0-10.67 4.111c0.591 0.5 1.258 1.168 2.663 2.553 2.63 2.591 9.375 5.275 9.39 5.59z\", fill: \"url(#ff-f)\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m24.96 24.36c0.314 0.2 0.573 0.374 0.8 0.531a17.97 17.97 0 0 1-0.109-9.473 28.7 28.7 0 0 0-9.329 7.21c0.189-5e-3 5.811-0.106 8.638 1.732z\", fill: \"url(#ff-g)\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m0.354 42.16c2.991 17.67 19.01 31.17 37.19 31.68 16.83 0.476 27.58-9.294 32.02-18.82a35.1 35.1 0 0 0 1.206-26.16v-0.037c0-0.029-6e-3 -0.046 0-0.037l7e-3 0.065c1.375 8.977-3.191 17.67-10.33 23.56l-0.022 0.05c-13.91 11.33-27.22 6.834-29.91 5q-0.282-0.135-0.564-0.281c-8.109-3.876-11.46-11.26-10.74-17.6a9.953 9.953 0 0 1-9.181-5.775 14.62 14.62 0 0 1 14.25-0.572 19.3 19.3 0 0 0 14.55 0.572c-0.015-0.315-6.76-3-9.39-5.59-1.405-1.385-2.072-2.052-2.663-2.553a11.59 11.59 0 0 0-1-0.758c-0.23-0.157-0.489-0.327-0.8-0.531-2.827-1.838-8.449-1.737-8.635-1.732h-0.018c-1.536-1.947-1.428-8.367-1.34-9.708a6.928 6.928 0 0 0-1.294 0.687 28.22 28.22 0 0 0-3.788 3.245 33.84 33.84 0 0 0-3.638 4.337v6e-3 -7e-3a32.73 32.73 0 0 0-5.2 11.74c-0.019 0.079-1.396 6.099-0.717 9.221z\", fill: \"url(#ff-h)\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m52.42 26.86a21.1 21.1 0 0 1 3.6 4.7c0.213 0.161 0.412 0.321 0.581 0.476 8.787 8.1 4.183 19.55 3.84 20.36 7.138-5.881 11.7-14.58 10.33-23.56-4.384-10.93-11.82-15.34-17.88-24.93-0.307-0.485-0.614-0.971-0.913-1.484-0.171-0.293-0.308-0.557-0.427-0.8a7.053 7.053 0 0 1-0.578-1.535 0.1 0.1 0 0 0-0.088-0.1 0.138 0.138 0 0 0-0.073 0c-5e-3 0-0.013 9e-3 -0.019 0.011s-0.019 0.011-0.028 0.015c-1.499 0.711-10.39 14.79 1.66 26.83z\", fill: \"url(#ff-i)\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m56.6 32.04c-0.169-0.155-0.368-0.315-0.581-0.476-0.079-0.059-0.157-0.118-0.241-0.177a13.38 13.38 0 0 0-9.345-2.269c13.94 6.97 10.2 30.97-9.119 30.07a17.24 17.24 0 0 1-5.043-0.973q-0.569-0.213-1.138-0.466c-0.219-0.1-0.438-0.2-0.654-0.312l0.027 0.017c2.694 1.839 16 6.332 29.91-5l0.022-0.05c0.347-0.81 4.951-12.26-3.84-20.36z\", fill: \"url(#ff-j)\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m21.35 44.74s1.789-6.667 12.81-6.667c1.191 0 4.6-3.325 4.661-4.289a19.3 19.3 0 0 1-14.55-0.572 14.62 14.62 0 0 0-14.25 0.572 9.953 9.953 0 0 0 9.181 5.775c-0.718 6.337 2.632 13.72 10.74 17.6 0.181 0.087 0.351 0.181 0.537 0.264-4.733-2.445-8.641-7.069-9.129-12.68z\", fill: \"url(#ff-k)\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m74.62 26.83c-1.684-4.052-5.1-8.427-7.775-9.81a40.27 40.27 0 0 1 3.925 11.76l7e-3 0.065c-4.382-10.92-11.81-15.33-17.88-24.92-0.307-0.485-0.614-0.971-0.913-1.484-0.171-0.293-0.308-0.557-0.427-0.8a7.053 7.053 0 0 1-0.578-1.535 0.1 0.1 0 0 0-0.088-0.1 0.138 0.138 0 0 0-0.073 0c-5e-3 0-0.013 9e-3 -0.019 0.011s-0.019 0.011-0.028 0.015l0.015-0.026c-9.735 5.7-13.04 16.25-13.34 21.53 0.452-0.031 0.9-0.069 1.362-0.069a19.56 19.56 0 0 1 16.98 9.917 13.38 13.38 0 0 0-9.345-2.269c13.94 6.97 10.2 30.97-9.119 30.07a17.24 17.24 0 0 1-5.043-0.973q-0.569-0.213-1.138-0.466c-0.219-0.1-0.438-0.2-0.654-0.312l0.027 0.017q-0.282-0.135-0.564-0.281c0.181 0.087 0.351 0.181 0.537 0.264-4.733-2.446-8.641-7.07-9.129-12.68 0 0 1.789-6.667 12.81-6.667 1.191 0 4.6-3.325 4.661-4.289-0.015-0.315-6.76-3-9.39-5.59-1.405-1.385-2.072-2.052-2.663-2.553a11.59 11.59 0 0 0-1-0.758 17.97 17.97 0 0 1-0.109-9.473 28.7 28.7 0 0 0-9.329 7.21h-0.018c-1.536-1.947-1.428-8.367-1.34-9.708a6.928 6.928 0 0 0-1.294 0.687 28.22 28.22 0 0 0-3.788 3.245 33.84 33.84 0 0 0-3.623 4.347v6e-3 -7e-3a32.73 32.73 0 0 0-5.2 11.74l-0.052 0.256c-0.073 0.341-0.4 2.073-0.447 2.445a45.09 45.09 0 0 0-0.572 5.403v0.2a38.76 38.76 0 0 0 76.95 6.554c0.065-0.5 0.118-0.995 0.176-1.5a39.86 39.86 0 0 0-2.514-19.47zm-3.845 1.991 7e-3 0.041z\", fill: \"url(#ff-l)\" })));\nexport default SvgBrowserFirefox;\n","import * as React from \"react\";\nconst SvgBrowserOpera = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 1090 1090\", ...props }, /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"opera-a\", x1: 461, x2: 461, y1: 59, y2: 1033, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { offset: 0.6, stopColor: \"#ff1b2d\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#a70014\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"opera-b\", x1: 714, x2: 714, y1: 116, y2: 978, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { offset: 0, stopColor: \"#9c0000\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 0.7, stopColor: \"#ff4b4b\" })), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#opera-a)\", d: \"M545 42.5a502.5 502.5 0 10334.9 877.1 362.4 362.4 0 01-201.4 61.5c-119.7 0-226.8-59.4-299-153-55.6-65.6-91.5-162.5-94-271.3V533c2.5-108.8 38.4-205.8 94-271.3 72-93.6 179.3-153 299-153 73.6 0 142.5 22.5 201.4 61.6a500.8 500.8 0 00-333-127.9h-2z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#opera-b)\", d: \"M379.6 261.8c46-54.4 105.7-87.3 170.7-87.3 146.3 0 265 166 265 370.4 0 204.6-118.6 370.4-265 370.4-65 0-124.6-32.8-170.7-87.2 72 93.6 179.2 153 299 153A363 363 0 00880 919.6 501 501 0 001047.5 545a501.1 501.1 0 00-167.6-374.6 362.4 362.4 0 00-201.4-61.5c-119.7 0-226.8 59.4-299 153\" }));\nexport default SvgBrowserOpera;\n","import * as React from \"react\";\nconst SvgBrowserSafari = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 5120 5120\", ...props }, /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"safari-a\", x2: 0, y2: \"100%\" }, /* @__PURE__ */ React.createElement(\"stop\", { offset: 0, stopColor: \"#19d7ff\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#1e64f0\" })), /* @__PURE__ */ React.createElement(\"g\", { fill: \"#fff\" }, /* @__PURE__ */ React.createElement(\"rect\", { width: 5130, height: 5120, rx: 1050 }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 2560, cy: 2560, r: 2240, fill: \"url(#safari-a)\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"red\", d: \"M4090 1020 2370 2370l4e2 4e2z\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M1020 4090l1350-1720 4e2 4e2z\" })), /* @__PURE__ */ React.createElement(\"path\", { stroke: \"#fff\", strokeWidth: 30, d: \"M2560 540v330m0 3370v330m350-4e3-57 325m-586 3318-57 327M3250 662l-113 310M1984 4138l-113 310m339-3878 57 325m586 3318 57 327M1870 662l113 310m1152 3166 113 310M1552 810l166 286m1685 2918 165 286M1265 1010l212 253m2166 2582 212 253M1015 1258l253 212m2582 2168 253 212M813 1548l286 165m2920 1685 286 165M665 1866l310 113m3166 1150 310 113M574 2202l326 58m3320 588 325 57M545 2555h330m3370 0h330M575 2905l325-57m3320-586 325-57M668 3245l310-113m3165-1152 310-113M815 3563l286-165m2920-1685 286-165M1016 3850l253-212m2580-2166 253-212M1262 41e2l212-253m2166-2582 212-253M1552 43e2l166-286m1685-2918 165-286M2384 548l16 180m320 3656 16 180M2038 610l47 174m950 3544 47 174M1708 730l76 163m1550 3326 77 163M1404 904l103 148m2106 3006 103 148M1135 1130l127 127m2596 2596 127 127M910 14e2l148 103m3006 2107 146 1e2M734 1703l163 76m3326 1550 163 77M614 2033l174 47m3544 950 174 47M553 2380l180 16m3656 320 180 16m-4014 0 180-16m3656-320 180-16M614 3077l174-47m3544-950 174-47M734 3407l163-76m3326-1550 163-76M910 3710l148-103m3006-2107 146-1e2M1404 4206l103-148m2105-3006 104-148M1708 4380l77-163M3335 890l77-163M2038 45e2l47-174m950-3544 47-174m-698 3952 16-180m320-3656 16-180\" }));\nexport default SvgBrowserSafari;\n","import * as React from \"react\";\nconst SvgBrowserSamsungInternet = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 525 525\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fill: \"#7882ff\", d: \"M203 0h120c111 0 202 90 202 203v120c0 111-90 202-203 202H202C92 525 0 435 0 322V202C0 92 90 0 203 0z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"#4d5cc1\", d: \"M402 263l-1-17-5-10c33 30 50 62 40 87-8 23-36 36-74 38-37 2-83-6-130-24a323 323 0 01-113-69c-27-27-39-55-30-78 9-24 40-36 81-37h1a142 142 0 00-42 55c9 25 44 55 113 84 56 23 122 35 151 16h2c4-15 7-30 7-45z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"#fff\", d: \"M401 246a143 143 0 01-6 61c-29 20-96 9-153-15-69-30-104-59-112-84a142 142 0 0141-55l1-1a142 142 0 01229 94zM261 404a142 142 0 01-142-136 344 344 0 00243 93 141 141 0 01-102 43z\" }));\nexport default SvgBrowserSamsungInternet;\n","import * as React from \"react\";\nconst SvgWindows = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 37 36\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { id: \"Device Icon\" }, /* @__PURE__ */ React.createElement(\"path\", { id: \"Vector\", d: \"M5.21561 8.2185L16.2811 6.6945V17.385H5.21411V8.22L5.21561 8.2185ZM5.21561 27.7815L16.2811 29.307V18.747H5.21411L5.21561 27.7815ZM17.4976 29.469L32.2156 31.5V18.747H17.4976V29.469ZM17.4976 6.531V17.385H32.2156V4.5L17.4976 6.531Z\", fill: \"currentColor\" })));\nexport default SvgWindows;\n","import clsx from 'clsx'\nimport parser from 'ua-parser-js'\nimport IconGlobe from '@/icons/globe.svg?react'\nimport IconApple from '@/icons/apple.svg?react'\nimport IconAndroid from '@/icons/android.svg?react'\nimport IconBrowserChrome from '@/icons/browser-chrome.svg?react'\nimport IconBrowserEdge from '@/icons/browser-edge.svg?react'\nimport IconBrowserFirefox from '@/icons/browser-firefox.svg?react'\nimport IconBrowserOpera from '@/icons/browser-opera.svg?react'\nimport IconBrowserSafari from '@/icons/browser-safari.svg?react'\nimport IconBrowserSamsungInternet from '@/icons/browser-samsung-internet.svg?react'\nimport IconWindows from '@/icons/windows.svg?react'\nimport type { DeviceInfo } from '@/hooks/useDeviceType'\nimport styles from './PlatformIcon.module.css'\nimport type { ComponentType, SVGProps } from 'react'\n\ntype IconComponent = ComponentType<SVGProps<SVGSVGElement>>\n\nconst PLATFORM_ICONS: Record<Exclude<DeviceInfo['platform'], 'web'>, IconComponent> = {\n ios: IconApple,\n macos: IconApple,\n android: IconAndroid,\n windows: IconWindows\n}\n\nconst BROWSER_ICONS: Record<string, IconComponent> = {\n chrome: IconBrowserChrome,\n edge: IconBrowserEdge,\n firefox: IconBrowserFirefox,\n opera: IconBrowserOpera,\n safari: IconBrowserSafari,\n 'samsung-internet': IconBrowserSamsungInternet,\n globe: IconGlobe\n}\n\nconst getBrowserKey = (userAgent: string) => parser(userAgent).browser.name\n ?.toLowerCase()\n .replace(/ /g, '-')\n .replace('mobile-', '')\n\nexport interface PlatformIconProps extends SVGProps<SVGSVGElement> {\n device: DeviceInfo\n className?: string\n}\n\nconst PlatformIcon = ({ device, className, ...props }: PlatformIconProps) => {\n const Icon = device.platform === 'web'\n ? BROWSER_ICONS[getBrowserKey(device.device) ?? 'globe']\n : PLATFORM_ICONS[device.platform]\n\n return (\n <Icon\n {...props}\n className={clsx(styles.root, className)}\n />\n )\n}\n\nexport default PlatformIcon\n","import type { DeviceInfo as FullDeviceInfo } from 'cobrowse-agent-sdk'\nimport parser from 'ua-parser-js'\nimport { useTranslation } from '@/i18n'\n\nexport type DeviceInfo = Pick<FullDeviceInfo, 'platform' | 'device'>\n\nconst PLATFORM_LABELS: Record<Exclude<DeviceInfo['platform'], 'web'>, string> = {\n ios: 'iOS',\n android: 'Android',\n windows: 'Windows',\n macos: 'macOS'\n}\n\nconst useDeviceType = ({ device, platform }: DeviceInfo) => {\n const { t } = useTranslation()\n\n if (platform === 'web') {\n const ua = parser(device)\n\n return t('{{browser}} on {{os}}', {\n browser: ua.browser.name,\n os: ua.os.name\n })\n }\n\n return t('{{device}} Device', { device: PLATFORM_LABELS[platform] })\n}\n\nexport default useDeviceType\n","import type { CSSProperties, ReactNode } from 'react'\nimport type { Device as FullDevice } from 'cobrowse-agent-sdk'\nimport useDeviceType, { type DeviceInfo } from '@/hooks/useDeviceType'\nimport clsx from 'clsx'\nimport PlatformIcon from '@/components/PlatformIcon'\nimport { useTranslation } from '@/i18n'\nimport styles from './Device.module.css'\n\nexport type DeviceData = Pick<FullDevice, 'id' | 'online' | 'connectable' | 'last_active'> & { device: DeviceInfo }\n\nexport interface DeviceProps<T extends DeviceData = DeviceData> {\n style?: CSSProperties\n className?: string\n device: T\n children?: ReactNode\n}\n\nconst LastSeen = ({ device }: { device: DeviceData }) => {\n const { t } = useTranslation()\n\n return (\n <div className={styles.lastSeen}>\n {device.online\n ? (\n <span className={styles.onlineStatus}>\n <span className={styles.onlineIndicator}></span>\n {t('Online')}\n </span>\n )\n : t('Last seen {{date, dateRelative}}', {\n date: new Date(device.last_active)\n })}\n </div>\n )\n}\n\nconst Device = <T extends DeviceData = DeviceData>({ style, className, device, children }: DeviceProps<T>) => {\n const deviceType = useDeviceType(device.device)\n\n return (\n <div\n style={style}\n className={clsx(\n styles.root,\n device.online && styles.online,\n device.connectable && styles.connectable,\n className\n )}\n >\n <div className={styles.deviceStatus}>\n <PlatformIcon\n device={device.device}\n className={styles.platformIcon}\n />\n </div>\n <div className={styles.details}>\n <div className={styles.deviceType}>{deviceType}</div>\n <LastSeen device={device} />\n </div>\n {children}\n </div>\n )\n}\n\nexport default Device\n","import { differenceInMilliseconds, intervalToDuration, format } from 'date-fns'\nimport type { CSSProperties } from 'react'\n\nexport interface StopwatchProps {\n start: Date | number | string\n end?: Date | number | string\n style?: CSSProperties\n className?: string\n}\n\nconst Stopwatch = ({ start: startProp, end: endProp, style, className }: StopwatchProps) => {\n const start = new Date(startProp)\n const end = endProp ? new Date(endProp) : new Date()\n const ms = differenceInMilliseconds(end, start)\n const duration = intervalToDuration({ start, end })\n\n return (\n <span style={style} className={className}>\n {duration.hours && duration.hours > 0 ? <span>{duration.hours}<span>:</span></span> : null}\n <span>{format(new Date(ms), 'mm:ss')}</span>\n </span>\n )\n}\n\nexport default Stopwatch\n","import * as React from \"react\";\nconst SvgClock = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 20, viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M16.75 10C16.75 9.11363 16.5755 8.2359 16.2363 7.41699C15.8971 6.59805 15.4002 5.85336 14.7734 5.22656C14.1466 4.59977 13.402 4.10289 12.583 3.76367C11.7641 3.42449 10.8864 3.25 10 3.25C9.11363 3.25 8.2359 3.42449 7.41699 3.76367C6.59804 4.10289 5.85336 4.59977 5.22656 5.22656C4.59977 5.85336 4.10289 6.59804 3.76367 7.41699C3.42449 8.2359 3.25 9.11363 3.25 10C3.25 10.8864 3.42449 11.7641 3.76367 12.583C4.10289 13.402 4.59977 14.1466 5.22656 14.7734C5.85336 15.4002 6.59804 15.8971 7.41699 16.2363C8.2359 16.5755 9.11363 16.75 10 16.75C10.8864 16.75 11.7641 16.5755 12.583 16.2363C13.402 15.8971 14.1466 15.4002 14.7734 14.7734C15.4002 14.1466 15.8971 13.402 16.2363 12.583C16.5755 11.7641 16.75 10.8864 16.75 10ZM9.25 5.83301C9.25018 5.41894 9.58589 5.08301 10 5.08301C10.4141 5.08301 10.7498 5.41894 10.75 5.83301V9.25H12.917C13.3311 9.25018 13.667 9.5859 13.667 10C13.667 10.4141 13.3311 10.7498 12.917 10.75H10C9.58579 10.75 9.25 10.4142 9.25 10V5.83301ZM18.25 10C18.25 11.0834 18.0367 12.1563 17.6221 13.1572C17.2075 14.1581 16.6001 15.0679 15.834 15.834C15.0679 16.6001 14.1581 17.2075 13.1572 17.6221C12.1563 18.0367 11.0834 18.25 10 18.25C8.91659 18.25 7.84371 18.0367 6.84277 17.6221C5.84186 17.2075 4.93209 16.6001 4.16602 15.834C3.39995 15.0679 2.79253 14.1581 2.37793 13.1572C1.96333 12.1563 1.75 11.0834 1.75 10C1.75 8.91659 1.96333 7.84371 2.37793 6.84277C2.79253 5.84186 3.39995 4.93209 4.16602 4.16602C4.93209 3.39995 5.84186 2.79253 6.84277 2.37793C7.84371 1.96333 8.91659 1.75 10 1.75C11.0834 1.75 12.1563 1.96333 13.1572 2.37793C14.1581 2.79253 15.0679 3.39995 15.834 4.16602C16.6001 4.93209 17.2075 5.84186 17.6221 6.84277C18.0367 7.84371 18.25 8.91659 18.25 10Z\", fill: \"currentColor\" }));\nexport default SvgClock;\n","import type { ElementType, ComponentPropsWithoutRef, ReactNode } from 'react'\nimport type { Session as FullSession } from 'cobrowse-agent-sdk'\nimport useDeviceType, { type DeviceInfo } from '@/hooks/useDeviceType'\nimport clsx from 'clsx'\nimport Stopwatch from '@/components/Stopwatch'\nimport PlatformIcon from '@/components/PlatformIcon'\nimport ClockIcon from '@/icons/clock.svg?react'\nimport { useTranslation } from '@/i18n'\nimport styles from './Session.module.css'\n\nconst DEFAULT_TAG = 'div' as const\n\ntype PropsOf<T extends ElementType> = ComponentPropsWithoutRef<T>\n\nexport type SessionData = Pick<FullSession, 'id' | 'state' | 'recorded' | 'activated' | 'ended' | 'getRecording' | 'recording'> & { device: DeviceInfo }\n\ninterface BaseSessionProps<TSession extends SessionData = SessionData> {\n session: TSession\n className?: string\n joinSessionButtonClassName?: string\n children?: ReactNode\n}\n\nexport type SessionProps<TSession extends SessionData = SessionData, TElement extends ElementType = typeof DEFAULT_TAG> =\n BaseSessionProps<TSession> &\n Omit<PropsOf<TElement>, 'onClick'> & {\n as?: TElement\n onClick?: (session: TSession) => void\n }\n\nconst Session = <TSession extends SessionData = SessionData, TElement extends ElementType = typeof DEFAULT_TAG>({\n as,\n session,\n onClick,\n className,\n joinSessionButtonClassName,\n children,\n ...props\n}: SessionProps<TSession, TElement>) => {\n const { t } = useTranslation()\n const deviceType = useDeviceType(session.device)\n const isClickable = typeof onClick === 'function'\n const Tag = as ?? isClickable ? 'button' : DEFAULT_TAG\n\n return (\n <Tag\n onClick={isClickable ? () => { onClick(session) } : undefined}\n className={clsx(styles.root, isClickable && styles.clickable, className)}\n {...props}\n >\n <span className={styles.details}>\n <span className={styles.deviceType}>\n <PlatformIcon device={session.device} />\n {deviceType}\n </span>\n <span className={styles.subdetails}>\n {session.state === 'ended'\n ? (\n <span className={styles.activated}>\n {t('{{date, dateRelative}}', {\n date: new Date(session.activated)\n })}\n <span className={styles.duration}>\n <ClockIcon />\n <Stopwatch\n start={new Date(session.activated)}\n end={session.ended ? new Date(session.ended) : undefined}\n />\n </span>\n </span>\n )\n : (\n <span className={styles.active}>\n <span className={styles.activeIndicator}></span>\n {t('Active')}\n </span>\n )\n }\n </span>\n </span>\n {children}\n </Tag>\n )\n}\n\nexport default Session\n","import type { ComponentPropsWithoutRef, ReactNode } from 'react'\nimport clsx from 'clsx'\nimport Button from '@/components/Button'\nimport styles from './SmartConnectButton.module.css'\nimport type { DeviceData } from '@/components/Device'\nimport { useTranslation } from '@/i18n'\n\nexport interface SmartConnectButtonProps<T extends DeviceData = DeviceData> extends Omit<ComponentPropsWithoutRef<'button'>, 'onClick'> {\n device: T\n onClick?: (device: T) => void\n children?: ReactNode\n}\n\nconst SmartConnectButton = <T extends DeviceData = DeviceData>({ device, onClick: onClickCallback, className, children, ...props }: SmartConnectButtonProps<T>) => {\n const { t } = useTranslation()\n\n const handleClick = () => {\n if (device.connectable) onClickCallback?.(device)\n }\n\n const isDisabled = !device.connectable\n\n return (\n <Button\n type='button'\n disabled={isDisabled}\n className={clsx(\n device.connectable && styles.connectable,\n className\n )}\n onClick={handleClick}\n {...props}\n >\n {children ?? t('Connect')}\n </Button>\n )\n}\n\nexport default SmartConnectButton\n","import * as React from \"react\";\nconst SvgRefresh = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", className: \"lucide lucide-refresh-cw-icon lucide-refresh-cw\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M21 3v5h-5\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M8 16H3v5\" }));\nexport default SvgRefresh;\n","import clsx from 'clsx'\nimport type { ComponentPropsWithoutRef } from 'react'\nimport Button from '@/components/Button'\nimport RefreshIcon from '@/icons/refresh.svg?react'\nimport styles from './RefreshButton.module.css'\n\nexport interface RefreshButtonProps extends ComponentPropsWithoutRef<'button'> {}\n\nconst RefreshButton = ({ className, children, ...props }: RefreshButtonProps) => (\n <Button className={clsx(styles.root, className)} {...props}>\n {children ?? <RefreshIcon className={styles.icon} />}\n </Button>\n)\n\nexport default RefreshButton\n","import type { ReactNode } from 'react'\nimport { useTranslation } from '@/i18n'\nimport styles from './Loader.module.css'\n\nexport interface LoaderProps {\n children?: ReactNode\n}\n\nconst Loader = ({ children }: LoaderProps) => {\n const { t } = useTranslation()\n\n return (\n <div role='status' aria-label={t('Loading...')} className={styles.root}>\n {children ?? <div className={styles.spinner} />}\n </div>\n )\n}\n\nexport default Loader\n"],"names":["englishUS","dateLocales","enUS","ar","cs","da","de","es","et","fi","fr","hi","it","ja","ko","lt","ms","nl","pl","pt","ro","ru","sk","sl","sv","th","uk","vi","zhCN","i18n","createInstance","value","format","lng","locale","formatDistanceToNow","localeEnUS","localeAr","localeCs","localeDa","localeDe","localeEs","localeEt","localeFi","localeFr","localeHi","localeIt","localeJa","localeKk","localeKo","localeLt","localeMr","localeMs","localeNl","localePl","localePt","localeRo","localeRu","localeSk","localeSl","localeSv","localeTh","localeUk","localeVi","localeZh","initReactI18next","useTranslation","useReactI18nextTranslation","Trans","props","ReactI18nextTrans","__spreadValues","CODE_LENGTH","EMTPY_STATE","KEY_BACKSPACE","KEY_ARROW_LEFT","KEY_ARROW_RIGHT","getElementIndex","refsArr","elem","el","focusPreviousInput","_a","focusNextInput","moveFocusForArrowKey","key","isRTL","CodeEntry","ref","className","inputClassName","focusOnRender","onCode","label","children","t","validating","setValidating","useState","code","setCode","refs","useRef","useImperativeHandle","index","getCode","useCallback","focusFirstEmptyInput","firstEmptyIndex","digit","targetIndex","tryComplete","codeValue","__async","e","useEffect","setDigit","updatedCode","handlePaste","event","clipboardData","pastedData","digits","_b","handleOnChange","target","handleKeyDown","currentTarget","metaKey","ctrlKey","handleKeyUp","repeat","invalid","jsxs","clsx","styles","jsx","DEFAULT_TAG","Button","as","__objRest","Tag","tagProps","SvgGlobe","React","SvgApple","SvgAndroid","SvgBrowserChrome","SvgBrowserEdge","SvgBrowserFirefox","SvgBrowserOpera","SvgBrowserSafari","SvgBrowserSamsungInternet","SvgWindows","PLATFORM_ICONS","IconApple","IconAndroid","IconWindows","BROWSER_ICONS","IconBrowserChrome","IconBrowserEdge","IconBrowserFirefox","IconBrowserOpera","IconBrowserSafari","IconBrowserSamsungInternet","IconGlobe","getBrowserKey","userAgent","parser","PlatformIcon","device","Icon","__spreadProps","PLATFORM_LABELS","useDeviceType","platform","ua","LastSeen","Device","style","deviceType","Stopwatch","startProp","endProp","start","end","differenceInMilliseconds","duration","intervalToDuration","SvgClock","Session","session","onClick","joinSessionButtonClassName","isClickable","ClockIcon","SmartConnectButton","onClickCallback","handleClick","isDisabled","SvgRefresh","RefreshButton","RefreshIcon","Loader"],"mappings":"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"}
|
package/dist/integrations.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ComponentPropsWithoutRef } from 'react';
|
|
2
2
|
import { Device } from 'cobrowse-agent-sdk';
|
|
3
3
|
import { DeviceInfo as DeviceInfo_2 } from 'cobrowse-agent-sdk';
|
|
4
|
+
import { ForwardedRef } from 'react';
|
|
4
5
|
import { JSX } from 'react/jsx-runtime';
|
|
5
6
|
import { ReactNode } from 'react';
|
|
6
7
|
import { Session } from 'cobrowse-agent-sdk';
|
|
@@ -9,10 +10,24 @@ declare interface BasePanelProps {
|
|
|
9
10
|
loader?: ReactNode;
|
|
10
11
|
}
|
|
11
12
|
|
|
12
|
-
export declare const
|
|
13
|
+
export declare const CodeEntry: ({ helpText, className, ...props }: CodeEntryProps) => JSX.Element;
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
declare interface CodeEntryHandle {
|
|
16
|
+
clear: () => void;
|
|
17
|
+
focus: (index: number) => void;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export declare interface CodeEntryProps extends CodeEntryProps_2 {
|
|
21
|
+
helpText?: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
declare interface CodeEntryProps_2 {
|
|
25
|
+
ref?: ForwardedRef<CodeEntryHandle>;
|
|
26
|
+
className?: string;
|
|
27
|
+
inputClassName?: string;
|
|
28
|
+
focusOnRender?: boolean;
|
|
29
|
+
onCode?: (code: string) => Promise<boolean> | boolean;
|
|
30
|
+
label?: ReactNode | false;
|
|
16
31
|
children?: ReactNode;
|
|
17
32
|
}
|
|
18
33
|
|
|
@@ -31,18 +46,19 @@ declare interface DevicesPanelProps<T extends DeviceData = DeviceData> extends B
|
|
|
31
46
|
declare interface RefreshButtonProps extends ComponentPropsWithoutRef<'button'> {
|
|
32
47
|
}
|
|
33
48
|
|
|
34
|
-
declare type SessionData = Pick<Session, 'id' | 'state' | 'recorded' | 'activated' | 'ended'> & {
|
|
49
|
+
declare type SessionData = Pick<Session, 'id' | 'state' | 'recorded' | 'activated' | 'ended' | 'getRecording' | 'recording'> & {
|
|
35
50
|
device: DeviceInfo;
|
|
36
51
|
};
|
|
37
52
|
|
|
38
53
|
declare interface SessionsPanelProps<T extends SessionData = SessionData> extends BasePanelProps {
|
|
39
54
|
sessions: T[] | null;
|
|
40
55
|
onSessionClick?: (session: T) => void;
|
|
56
|
+
sessionButtonClassName?: string;
|
|
41
57
|
}
|
|
42
58
|
|
|
43
|
-
export declare const Tabs: <TDevice extends DeviceData = DeviceData, TSession extends SessionData = SessionData>({ devices, sessions, onConnectClick, onSessionClick, onRefreshClick, smartConnectButtonClassName, loader, refresh, className, headerClassName, tabListClassName, tabClassName, tabHoverClassName, tabActiveClassName, tabPanelsClassName, refreshButtonClassName }: TabsProps<TDevice, TSession>) => JSX.Element;
|
|
59
|
+
export declare const Tabs: <TDevice extends DeviceData = DeviceData, TSession extends SessionData = SessionData>({ devices, sessions, onConnectClick, onSessionClick, onRefreshClick, smartConnectButtonClassName, sessionButtonClassName, loader, refresh, className, headerClassName, tabListClassName, tabClassName, tabHoverClassName, tabActiveClassName, tabPanelsClassName, refreshButtonClassName }: TabsProps<TDevice, TSession>) => JSX.Element;
|
|
44
60
|
|
|
45
|
-
declare interface TabsPanelProps<TDevice extends DeviceData, TSession extends SessionData> extends Pick<DevicesPanelProps<TDevice>, 'devices' | 'onConnectClick' | 'smartConnectButtonClassName' | 'loader'>, Pick<SessionsPanelProps<TSession>, 'sessions' | 'onSessionClick' | 'loader'> {
|
|
61
|
+
declare interface TabsPanelProps<TDevice extends DeviceData, TSession extends SessionData> extends Pick<DevicesPanelProps<TDevice>, 'devices' | 'onConnectClick' | 'smartConnectButtonClassName' | 'loader'>, Pick<SessionsPanelProps<TSession>, 'sessions' | 'onSessionClick' | 'sessionButtonClassName' | 'loader'> {
|
|
46
62
|
}
|
|
47
63
|
|
|
48
64
|
export declare interface TabsProps<TDevice extends DeviceData = DeviceData, TSession extends SessionData = SessionData> extends TabsPanelProps<TDevice, TSession> {
|
package/dist/integrations.js
CHANGED
|
@@ -1,103 +1,139 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
var J = Object.defineProperty;
|
|
2
|
+
var u = Object.getOwnPropertySymbols;
|
|
3
|
+
var T = Object.prototype.hasOwnProperty, y = Object.prototype.propertyIsEnumerable;
|
|
4
|
+
var N = (e, t, r) => t in e ? J(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r, h = (e, t) => {
|
|
5
|
+
for (var r in t || (t = {}))
|
|
6
|
+
T.call(t, r) && N(e, r, t[r]);
|
|
7
|
+
if (u)
|
|
8
|
+
for (var r of u(t))
|
|
9
|
+
y.call(t, r) && N(e, r, t[r]);
|
|
10
|
+
return e;
|
|
11
|
+
};
|
|
12
|
+
var P = (e, t) => {
|
|
13
|
+
var r = {};
|
|
14
|
+
for (var n in e)
|
|
15
|
+
T.call(e, n) && t.indexOf(n) < 0 && (r[n] = e[n]);
|
|
16
|
+
if (e != null && u)
|
|
17
|
+
for (var n of u(e))
|
|
18
|
+
t.indexOf(n) < 0 && y.call(e, n) && (r[n] = e[n]);
|
|
19
|
+
return r;
|
|
20
|
+
};
|
|
21
|
+
import { jsx as o, Fragment as B, jsxs as d } from "react/jsx-runtime";
|
|
22
|
+
import l from "clsx";
|
|
23
|
+
import { TabGroup as $, TabList as M, Tab as g, TabPanels as Z, TabPanel as A } from "@headlessui/react";
|
|
24
|
+
import { u as m, L as H, D as F, a as z, B as G, S as Q, R as W, C as X, T as Y } from "./index-fBWDR3rY.js";
|
|
25
|
+
import * as I from "react";
|
|
26
|
+
const q = "Tabs-module__root__vrPV-", K = "Tabs-module__header__ZVkH2", O = "Tabs-module__tabList__thjbJ", U = "Tabs-module__tab__HyAQH focus-module__focusRing__rvgPB", k = "Tabs-module__tabHover__yC8x3", e1 = "Tabs-module__tabActive__4FIE-", t1 = "Tabs-module__tabPanels__xvxyl", r1 = "Tabs-module__panelItem__jS1PJ", o1 = "Tabs-module__refresh__MV7Wh", c = {
|
|
27
|
+
root: q,
|
|
28
|
+
header: K,
|
|
29
|
+
tabList: O,
|
|
30
|
+
tab: U,
|
|
31
|
+
tabHover: k,
|
|
32
|
+
tabActive: e1,
|
|
33
|
+
tabPanels: t1,
|
|
34
|
+
panelItem: r1,
|
|
35
|
+
refresh: o1
|
|
36
|
+
}, n1 = ({ devices: e, onConnectClick: t, smartConnectButtonClassName: r, loader: n }) => {
|
|
37
|
+
const { t: s } = m();
|
|
38
|
+
return e === null ? /* @__PURE__ */ o(H, { children: n }) : e.length === 0 ? /* @__PURE__ */ o("p", { children: s("No devices") }) : /* @__PURE__ */ o(B, { children: e.map((a) => /* @__PURE__ */ o(F, { device: a, className: c.panelItem, children: /* @__PURE__ */ o(
|
|
39
|
+
z,
|
|
10
40
|
{
|
|
11
41
|
device: a,
|
|
12
|
-
className:
|
|
13
|
-
onClick:
|
|
14
|
-
children:
|
|
42
|
+
className: r,
|
|
43
|
+
onClick: t,
|
|
44
|
+
children: s("Connect")
|
|
15
45
|
}
|
|
16
46
|
) }, a.id)) });
|
|
17
|
-
},
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
},
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
},
|
|
30
|
-
|
|
31
|
-
sessions:
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
47
|
+
}, a1 = (e) => /* @__PURE__ */ I.createElement("svg", h({ width: 24, height: 24, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, e), /* @__PURE__ */ I.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M6.72639 2.00445C7.20298 1.96123 7.68299 2.03264 8.12635 2.21273C8.16943 2.23023 8.21124 2.25071 8.25148 2.27403L20.4937 9.36953C20.9584 9.62883 21.3458 10.0071 21.6161 10.4656C21.8882 10.9272 22.0318 11.4533 22.0318 11.9892C22.0318 12.5251 21.8882 13.0512 21.6161 13.5128C21.3458 13.9713 20.9584 14.3496 20.4938 14.6089L8.25148 21.7044C8.21084 21.728 8.16859 21.7486 8.12505 21.7662C7.6713 21.9498 7.17953 22.0195 6.69263 21.9694C6.20574 21.9193 5.7385 21.7507 5.33169 21.4785C4.92488 21.2063 4.59085 20.8388 4.35874 20.4078C4.12663 19.9769 4.00348 19.4957 4.00005 19.0062L4.00002 18.9992V4.99921C4.00002 4.98093 4.00051 4.96277 4.00148 4.94473C3.99957 4.90948 3.99949 4.87378 4.00135 4.83773C4.02599 4.35982 4.1646 3.89474 4.4056 3.48132C4.64661 3.06789 4.98302 2.71812 5.38674 2.4612C5.79047 2.20429 6.2498 2.04768 6.72639 2.00445ZM5.99852 4.94397C5.99952 4.96226 6.00002 4.98068 6.00002 4.99921V18.9951C6.00163 19.1573 6.04265 19.3166 6.11956 19.4594C6.19693 19.603 6.30828 19.7256 6.44388 19.8163C6.57948 19.907 6.73523 19.9632 6.89753 19.9799C7.04039 19.9946 7.18452 19.9784 7.32015 19.9325L19.4986 12.874L19.5159 12.8642C19.6722 12.7777 19.8025 12.651 19.8932 12.4971C19.9839 12.3432 20.0318 12.1678 20.0318 11.9892C20.0318 11.8106 19.9839 11.6352 19.8932 11.4813C19.8025 11.3275 19.6722 11.2007 19.5159 11.1142L19.4986 11.1044L7.31943 4.04547C7.18713 4.00046 7.04665 3.98361 6.90704 3.99628C6.74818 4.01068 6.59507 4.06289 6.4605 4.14853C6.32592 4.23417 6.21378 4.35076 6.13345 4.48856C6.05311 4.62637 6.00691 4.7814 5.9987 4.9407C5.99864 4.94179 5.99858 4.94288 5.99852 4.94397Z", fill: "currentColor" })), s1 = "SessionAction-module__recorded__wCyhA", c1 = "SessionAction-module__recordedIcon__clzY-", w = {
|
|
48
|
+
recorded: s1,
|
|
49
|
+
recordedIcon: c1
|
|
50
|
+
}, l1 = ({ session: e, className: t, onClick: r }) => {
|
|
51
|
+
const { t: n } = m(), s = e.state === "ended" && e.recorded, a = e.state === "active";
|
|
52
|
+
return !s && !a ? null : /* @__PURE__ */ d(G, { onClick: r, className: t, children: [
|
|
53
|
+
s && /* @__PURE__ */ d("span", { className: w.recorded, children: [
|
|
54
|
+
/* @__PURE__ */ o(a1, { className: w.recordedIcon }),
|
|
55
|
+
n("Recording")
|
|
56
|
+
] }),
|
|
57
|
+
a && n("Join session")
|
|
58
|
+
] });
|
|
59
|
+
}, d1 = ({ sessions: e, onSessionClick: t, sessionButtonClassName: r, loader: n }) => {
|
|
60
|
+
const { t: s } = m();
|
|
61
|
+
return e === null ? /* @__PURE__ */ o(H, { children: n }) : e.length === 0 ? /* @__PURE__ */ o("p", { children: s("No sessions") }) : /* @__PURE__ */ o(B, { children: e.map((a, b) => /* @__PURE__ */ o(Q, { session: a, className: c.panelItem, children: /* @__PURE__ */ o(l1, { session: a, onClick: () => t == null ? void 0 : t(a), className: r }) }, b)) });
|
|
62
|
+
}, p1 = ({
|
|
63
|
+
devices: e,
|
|
64
|
+
sessions: t,
|
|
65
|
+
onConnectClick: r,
|
|
66
|
+
onSessionClick: n,
|
|
67
|
+
onRefreshClick: s,
|
|
35
68
|
smartConnectButtonClassName: a,
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
69
|
+
sessionButtonClassName: b,
|
|
70
|
+
loader: C,
|
|
71
|
+
refresh: R,
|
|
72
|
+
className: S,
|
|
73
|
+
headerClassName: x,
|
|
74
|
+
tabListClassName: V,
|
|
75
|
+
tabClassName: p,
|
|
76
|
+
tabHoverClassName: v,
|
|
77
|
+
tabActiveClassName: f,
|
|
78
|
+
tabPanelsClassName: j,
|
|
79
|
+
refreshButtonClassName: D
|
|
46
80
|
}) => {
|
|
47
|
-
const { t:
|
|
48
|
-
return /* @__PURE__ */ d(
|
|
49
|
-
/* @__PURE__ */ d("div", { className: c
|
|
50
|
-
/* @__PURE__ */ d(
|
|
51
|
-
/* @__PURE__ */
|
|
52
|
-
|
|
81
|
+
const { t: L } = m();
|
|
82
|
+
return /* @__PURE__ */ d($, { className: l(c.root, S), children: [
|
|
83
|
+
/* @__PURE__ */ d("div", { className: l(c.header, x), children: [
|
|
84
|
+
/* @__PURE__ */ d(M, { className: l(c.tabList, V), children: [
|
|
85
|
+
/* @__PURE__ */ o(
|
|
86
|
+
g,
|
|
53
87
|
{
|
|
54
|
-
className: ({ selected: i, hover: _ }) =>
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
_ &&
|
|
58
|
-
_ &&
|
|
59
|
-
i &&
|
|
60
|
-
i &&
|
|
88
|
+
className: ({ selected: i, hover: _ }) => l(
|
|
89
|
+
c.tab,
|
|
90
|
+
p,
|
|
91
|
+
_ && c.tabHover,
|
|
92
|
+
_ && v,
|
|
93
|
+
i && c.tabActive,
|
|
94
|
+
i && f
|
|
61
95
|
),
|
|
62
|
-
children:
|
|
96
|
+
children: L("Devices")
|
|
63
97
|
}
|
|
64
98
|
),
|
|
65
|
-
/* @__PURE__ */
|
|
66
|
-
|
|
99
|
+
/* @__PURE__ */ o(
|
|
100
|
+
g,
|
|
67
101
|
{
|
|
68
|
-
className: ({ selected: i, hover: _ }) =>
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
_ &&
|
|
72
|
-
_ &&
|
|
73
|
-
i &&
|
|
74
|
-
i &&
|
|
102
|
+
className: ({ selected: i, hover: _ }) => l(
|
|
103
|
+
c.tab,
|
|
104
|
+
p,
|
|
105
|
+
_ && c.tabHover,
|
|
106
|
+
_ && v,
|
|
107
|
+
i && c.tabActive,
|
|
108
|
+
i && f
|
|
75
109
|
),
|
|
76
|
-
children:
|
|
110
|
+
children: L("Sessions")
|
|
77
111
|
}
|
|
78
112
|
)
|
|
79
113
|
] }),
|
|
80
|
-
|
|
114
|
+
s && /* @__PURE__ */ o(W, { className: l(c.refresh, D), onClick: s, children: R })
|
|
81
115
|
] }),
|
|
82
|
-
/* @__PURE__ */ d(
|
|
83
|
-
/* @__PURE__ */
|
|
84
|
-
/* @__PURE__ */
|
|
116
|
+
/* @__PURE__ */ d(Z, { className: l(c.tabPanels, j), children: [
|
|
117
|
+
/* @__PURE__ */ o(A, { children: /* @__PURE__ */ o(n1, { devices: e, onConnectClick: r, smartConnectButtonClassName: a, loader: C }) }),
|
|
118
|
+
/* @__PURE__ */ o(A, { children: /* @__PURE__ */ o(d1, { sessions: t, onSessionClick: n, sessionButtonClassName: b, loader: C }) })
|
|
85
119
|
] })
|
|
86
120
|
] });
|
|
87
|
-
},
|
|
88
|
-
root:
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
const { t:
|
|
93
|
-
return /* @__PURE__ */ d("div", { className:
|
|
94
|
-
/* @__PURE__ */
|
|
95
|
-
|
|
96
|
-
|
|
121
|
+
}, i1 = "CodeEntry-module__root__XlJve", _1 = "CodeEntry-module__supportLabel__4nBLA", E = {
|
|
122
|
+
root: i1,
|
|
123
|
+
supportLabel: _1
|
|
124
|
+
}, v1 = (n) => {
|
|
125
|
+
var s = n, { helpText: e, className: t } = s, r = P(s, ["helpText", "className"]);
|
|
126
|
+
const { t: a } = m();
|
|
127
|
+
return /* @__PURE__ */ d("div", { className: l(E.root, t), children: [
|
|
128
|
+
/* @__PURE__ */ o(X, h({ label: /* @__PURE__ */ d(Y, { children: [
|
|
129
|
+
/* @__PURE__ */ o("span", { className: E.supportLabel, children: "Support " }),
|
|
130
|
+
"Code"
|
|
131
|
+
] }) }, r)),
|
|
132
|
+
/* @__PURE__ */ o("p", { children: e != null ? e : a("Enter a support code, or connect to a device from the list below.") })
|
|
97
133
|
] });
|
|
98
134
|
};
|
|
99
135
|
export {
|
|
100
|
-
|
|
101
|
-
|
|
136
|
+
v1 as CodeEntry,
|
|
137
|
+
p1 as Tabs
|
|
102
138
|
};
|
|
103
139
|
//# sourceMappingURL=integrations.js.map
|
package/dist/integrations.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrations.js","sources":["../lib/integrations/components/Tabs/DevicesPanel.tsx","../lib/integrations/components/Tabs/SessionsPanel.tsx","../lib/integrations/components/Tabs/index.tsx","../lib/integrations/components/BlockingError/index.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport Device, { type DeviceData } from '@/components/Device'\nimport SmartConnectButton from '@/components/SmartConnectButton'\nimport Loader from '@/components/Loader'\nimport type { BasePanelProps } from './BasePanel'\n\nexport interface DevicesPanelProps<T extends DeviceData = DeviceData> extends BasePanelProps {\n devices: T[] | null\n onConnectClick?: (device: T) => void\n smartConnectButtonClassName?: string\n}\n\nconst DevicesPanel = <T extends DeviceData = DeviceData>({ devices, onConnectClick, smartConnectButtonClassName, loader }: DevicesPanelProps<T>) => {\n const { t } = useTranslation()\n\n if (devices === null) {\n return (\n <Loader>{loader}</Loader>\n )\n }\n\n if (devices.length === 0) {\n return <p>{t('No devices')}</p>\n }\n\n return (\n <>\n {devices.map((device) => (\n <Device key={device.id} device={device}>\n <SmartConnectButton\n device={device}\n className={smartConnectButtonClassName}\n onClick={onConnectClick}\n >\n {t('Connect')}\n </SmartConnectButton>\n </Device>\n ))}\n </>\n )\n}\n\nexport default DevicesPanel\n","import { useTranslation } from 'react-i18next'\nimport Session, { type SessionData } from '@/components/Session'\nimport Loader from '@/components/Loader'\nimport type { BasePanelProps } from './BasePanel'\n\nexport interface SessionsPanelProps<T extends SessionData = SessionData> extends BasePanelProps {\n sessions: T[] | null\n onSessionClick?: (session: T) => void\n}\n\nconst SessionsPanel = <T extends SessionData = SessionData>({ sessions, onSessionClick, loader }: SessionsPanelProps<T>) => {\n const { t } = useTranslation()\n\n if (sessions === null) {\n return (\n <Loader>{loader}</Loader>\n )\n }\n\n if (sessions.length === 0) {\n return <p>{t('No sessions')}</p>\n }\n\n return (\n <>\n {sessions.map((session, index) => (\n <Session key={index} session={session} onClick={onSessionClick} />\n ))}\n </>\n )\n}\n\nexport default SessionsPanel\n","import clsx from 'clsx'\nimport type { ReactNode } from 'react'\nimport {\n Tab as HeadlessTab,\n TabGroup as HeadlessTabGroup,\n TabList as HeadlessTabList,\n TabPanels as HeadlessTabPanels,\n TabPanel as HeadlessTabPanel\n} from '@headlessui/react'\nimport { useTranslation } from 'react-i18next'\nimport DevicesPanel, { type DevicesPanelProps } from './DevicesPanel'\nimport SessionsPanel, { type SessionsPanelProps } from './SessionsPanel'\nimport type { DeviceData } from '@/components/Device'\nimport type { SessionData } from '@/components/Session'\nimport RefreshButton, { type RefreshButtonProps } from '@/components/RefreshButton'\nimport styles from './Tabs.module.css'\n\ninterface TabsPanelProps<TDevice extends DeviceData, TSession extends SessionData>\n extends Pick<DevicesPanelProps<TDevice>, 'devices' | 'onConnectClick' | 'smartConnectButtonClassName' | 'loader'>,\n Pick<SessionsPanelProps<TSession>, 'sessions' | 'onSessionClick' | 'loader'> {}\n\nexport interface TabsProps<TDevice extends DeviceData = DeviceData, TSession extends SessionData = SessionData>\n extends TabsPanelProps<TDevice, TSession> {\n onRefreshClick?: RefreshButtonProps['onClick']\n refresh?: ReactNode\n className?: string\n headerClassName?: string\n tabListClassName?: string\n tabClassName?: string\n tabHoverClassName?: string\n tabActiveClassName?: string\n tabPanelsClassName?: string\n refreshButtonClassName?: string\n}\n\nconst Tabs = <TDevice extends DeviceData = DeviceData, TSession extends SessionData = SessionData>({\n devices,\n sessions,\n onConnectClick,\n onSessionClick,\n onRefreshClick,\n smartConnectButtonClassName,\n loader,\n refresh,\n className,\n headerClassName,\n tabListClassName,\n tabClassName,\n tabHoverClassName,\n tabActiveClassName,\n tabPanelsClassName,\n refreshButtonClassName\n}: TabsProps<TDevice, TSession>) => {\n const { t } = useTranslation()\n\n return (\n <HeadlessTabGroup className={clsx(styles.root, className)}>\n <div className={clsx(styles.header, headerClassName)}>\n <HeadlessTabList className={clsx(styles.tabList, tabListClassName)}>\n <HeadlessTab\n className={({ selected, hover }) =>\n clsx(\n styles.tab,\n tabClassName,\n hover && styles.tabHover,\n hover && tabHoverClassName,\n selected && styles.tabActive,\n selected && tabActiveClassName\n )\n }\n >\n {t('Devices')}\n </HeadlessTab>\n <HeadlessTab\n className={({ selected, hover }) =>\n clsx(\n styles.tab,\n tabClassName,\n hover && styles.tabHover,\n hover && tabHoverClassName,\n selected && styles.tabActive,\n selected && tabActiveClassName\n )\n }\n >\n {t('Sessions')}\n </HeadlessTab>\n </HeadlessTabList>\n {onRefreshClick && (\n <RefreshButton className={clsx(styles.refresh, refreshButtonClassName)} onClick={onRefreshClick}>{refresh}</RefreshButton>\n )}\n </div>\n <HeadlessTabPanels className={clsx(styles.tabPanels, tabPanelsClassName)}>\n <HeadlessTabPanel>\n <DevicesPanel devices={devices} onConnectClick={onConnectClick} smartConnectButtonClassName={smartConnectButtonClassName} loader={loader} />\n </HeadlessTabPanel>\n <HeadlessTabPanel>\n <SessionsPanel sessions={sessions} onSessionClick={onSessionClick} loader={loader} />\n </HeadlessTabPanel>\n </HeadlessTabPanels>\n </HeadlessTabGroup>\n )\n}\n\nexport default Tabs\n","import type { ReactNode } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport styles from './BlockingError.module.css'\n\nexport interface BlockingErrorProps {\n message?: string\n children?: ReactNode\n}\n\nconst BlockingError = ({ message, children }: BlockingErrorProps) => {\n const { t } = useTranslation()\n\n return (\n <div className={styles.root}>\n <p className={styles.heading}>{t('Sorry, something went wrong.')}</p>\n {message && <p className={styles.message}>{message}</p>}\n {children}\n </div>\n )\n}\n\nexport default BlockingError\n"],"names":["DevicesPanel","devices","onConnectClick","smartConnectButtonClassName","loader","t","useTranslation","jsx","Loader","device","Device","SmartConnectButton","SessionsPanel","sessions","onSessionClick","Fragment","session","index","Session","Tabs","onRefreshClick","refresh","className","headerClassName","tabListClassName","tabClassName","tabHoverClassName","tabActiveClassName","tabPanelsClassName","refreshButtonClassName","HeadlessTabGroup","clsx","styles","jsxs","HeadlessTabList","HeadlessTab","selected","hover","RefreshButton","HeadlessTabPanels","HeadlessTabPanel","BlockingError","message","children"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"integrations.js","sources":["../lib/integrations/components/Tabs/DevicesPanel.tsx","../lib/icons/play.svg?react","../lib/integrations/components/Tabs/SessionAction.tsx","../lib/integrations/components/Tabs/SessionsPanel.tsx","../lib/integrations/components/Tabs/index.tsx","../lib/integrations/components/CodeEntry/index.tsx"],"sourcesContent":["import Device, { type DeviceData } from '@/components/Device'\nimport SmartConnectButton from '@/components/SmartConnectButton'\nimport Loader from '@/components/Loader'\nimport { useTranslation } from '@/i18n'\nimport type { BasePanelProps } from './BasePanel'\nimport styles from './Tabs.module.css'\n\nexport interface DevicesPanelProps<T extends DeviceData = DeviceData> extends BasePanelProps {\n devices: T[] | null\n onConnectClick?: (device: T) => void\n smartConnectButtonClassName?: string\n}\n\nconst DevicesPanel = <T extends DeviceData = DeviceData>({ devices, onConnectClick, smartConnectButtonClassName, loader }: DevicesPanelProps<T>) => {\n const { t } = useTranslation()\n\n if (devices === null) {\n return (\n <Loader>{loader}</Loader>\n )\n }\n\n if (devices.length === 0) {\n return <p>{t('No devices')}</p>\n }\n\n return (\n <>\n {devices.map((device) => (\n <Device key={device.id} device={device} className={styles.panelItem}>\n <SmartConnectButton\n device={device}\n className={smartConnectButtonClassName}\n onClick={onConnectClick}\n >\n {t('Connect')}\n </SmartConnectButton>\n </Device>\n ))}\n </>\n )\n}\n\nexport default DevicesPanel\n","import * as React from \"react\";\nconst SvgPlay = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M6.72639 2.00445C7.20298 1.96123 7.68299 2.03264 8.12635 2.21273C8.16943 2.23023 8.21124 2.25071 8.25148 2.27403L20.4937 9.36953C20.9584 9.62883 21.3458 10.0071 21.6161 10.4656C21.8882 10.9272 22.0318 11.4533 22.0318 11.9892C22.0318 12.5251 21.8882 13.0512 21.6161 13.5128C21.3458 13.9713 20.9584 14.3496 20.4938 14.6089L8.25148 21.7044C8.21084 21.728 8.16859 21.7486 8.12505 21.7662C7.6713 21.9498 7.17953 22.0195 6.69263 21.9694C6.20574 21.9193 5.7385 21.7507 5.33169 21.4785C4.92488 21.2063 4.59085 20.8388 4.35874 20.4078C4.12663 19.9769 4.00348 19.4957 4.00005 19.0062L4.00002 18.9992V4.99921C4.00002 4.98093 4.00051 4.96277 4.00148 4.94473C3.99957 4.90948 3.99949 4.87378 4.00135 4.83773C4.02599 4.35982 4.1646 3.89474 4.4056 3.48132C4.64661 3.06789 4.98302 2.71812 5.38674 2.4612C5.79047 2.20429 6.2498 2.04768 6.72639 2.00445ZM5.99852 4.94397C5.99952 4.96226 6.00002 4.98068 6.00002 4.99921V18.9951C6.00163 19.1573 6.04265 19.3166 6.11956 19.4594C6.19693 19.603 6.30828 19.7256 6.44388 19.8163C6.57948 19.907 6.73523 19.9632 6.89753 19.9799C7.04039 19.9946 7.18452 19.9784 7.32015 19.9325L19.4986 12.874L19.5159 12.8642C19.6722 12.7777 19.8025 12.651 19.8932 12.4971C19.9839 12.3432 20.0318 12.1678 20.0318 11.9892C20.0318 11.8106 19.9839 11.6352 19.8932 11.4813C19.8025 11.3275 19.6722 11.2007 19.5159 11.1142L19.4986 11.1044L7.31943 4.04547C7.18713 4.00046 7.04665 3.98361 6.90704 3.99628C6.74818 4.01068 6.59507 4.06289 6.4605 4.14853C6.32592 4.23417 6.21378 4.35076 6.13345 4.48856C6.05311 4.62637 6.00691 4.7814 5.9987 4.9407C5.99864 4.94179 5.99858 4.94288 5.99852 4.94397Z\", fill: \"currentColor\" }));\nexport default SvgPlay;\n","import type { SessionData } from '@/components/Session'\nimport Button, { type ButtonProps } from '@/components/Button'\nimport { useTranslation } from '@/i18n'\nimport PlayIcon from '@/icons/play.svg?react'\nimport styles from './SessionAction.module.css'\n\nexport interface SessionActionProps {\n session: SessionData\n className?: string\n onClick: ButtonProps['onClick']\n}\n\nconst SessionAction = ({ session, className, onClick }: SessionActionProps) => {\n const { t } = useTranslation()\n\n const isRecorded = session.state === 'ended' && session.recorded\n const isActive = session.state === 'active'\n\n if (!isRecorded && !isActive) {\n return null\n }\n\n return (\n <Button onClick={onClick} className={className}>\n {isRecorded && (\n <span className={styles.recorded}>\n <PlayIcon className={styles.recordedIcon} />\n {t('Recording')}\n </span>\n )}\n {isActive && t('Join session')}\n </Button>\n )\n}\n\nexport default SessionAction\n","import Session, { type SessionData } from '@/components/Session'\nimport Loader from '@/components/Loader'\nimport { useTranslation } from '@/i18n'\nimport type { BasePanelProps } from './BasePanel'\nimport SessionAction from './SessionAction'\nimport styles from './Tabs.module.css'\n\nexport interface SessionsPanelProps<T extends SessionData = SessionData> extends BasePanelProps {\n sessions: T[] | null\n onSessionClick?: (session: T) => void\n sessionButtonClassName?: string\n}\n\nconst SessionsPanel = <T extends SessionData = SessionData>({ sessions, onSessionClick, sessionButtonClassName, loader }: SessionsPanelProps<T>) => {\n const { t } = useTranslation()\n\n if (sessions === null) {\n return (\n <Loader>{loader}</Loader>\n )\n }\n\n if (sessions.length === 0) {\n return <p>{t('No sessions')}</p>\n }\n\n return (\n <>\n {sessions.map((session, index) => (\n <Session key={index} session={session} className={styles.panelItem}>\n <SessionAction session={session} onClick={() => onSessionClick?.(session)} className={sessionButtonClassName} />\n </Session>\n ))}\n </>\n )\n}\n\nexport default SessionsPanel\n","import clsx from 'clsx'\nimport type { ReactNode } from 'react'\nimport {\n Tab as HeadlessTab,\n TabGroup as HeadlessTabGroup,\n TabList as HeadlessTabList,\n TabPanels as HeadlessTabPanels,\n TabPanel as HeadlessTabPanel\n} from '@headlessui/react'\nimport DevicesPanel, { type DevicesPanelProps } from './DevicesPanel'\nimport SessionsPanel, { type SessionsPanelProps } from './SessionsPanel'\nimport type { DeviceData } from '@/components/Device'\nimport type { SessionData } from '@/components/Session'\nimport RefreshButton, { type RefreshButtonProps } from '@/components/RefreshButton'\nimport { useTranslation } from '@/i18n'\nimport styles from './Tabs.module.css'\n\ninterface TabsPanelProps<TDevice extends DeviceData, TSession extends SessionData>\n extends Pick<DevicesPanelProps<TDevice>, 'devices' | 'onConnectClick' | 'smartConnectButtonClassName' | 'loader'>,\n Pick<SessionsPanelProps<TSession>, 'sessions' | 'onSessionClick' | 'sessionButtonClassName' | 'loader'> {}\n\nexport interface TabsProps<TDevice extends DeviceData = DeviceData, TSession extends SessionData = SessionData>\n extends TabsPanelProps<TDevice, TSession> {\n onRefreshClick?: RefreshButtonProps['onClick']\n refresh?: ReactNode\n className?: string\n headerClassName?: string\n tabListClassName?: string\n tabClassName?: string\n tabHoverClassName?: string\n tabActiveClassName?: string\n tabPanelsClassName?: string\n refreshButtonClassName?: string\n}\n\nconst Tabs = <TDevice extends DeviceData = DeviceData, TSession extends SessionData = SessionData>({\n devices,\n sessions,\n onConnectClick,\n onSessionClick,\n onRefreshClick,\n smartConnectButtonClassName,\n sessionButtonClassName,\n loader,\n refresh,\n className,\n headerClassName,\n tabListClassName,\n tabClassName,\n tabHoverClassName,\n tabActiveClassName,\n tabPanelsClassName,\n refreshButtonClassName\n}: TabsProps<TDevice, TSession>) => {\n const { t } = useTranslation()\n\n return (\n <HeadlessTabGroup className={clsx(styles.root, className)}>\n <div className={clsx(styles.header, headerClassName)}>\n <HeadlessTabList className={clsx(styles.tabList, tabListClassName)}>\n <HeadlessTab\n className={({ selected, hover }) =>\n clsx(\n styles.tab,\n tabClassName,\n hover && styles.tabHover,\n hover && tabHoverClassName,\n selected && styles.tabActive,\n selected && tabActiveClassName\n )\n }\n >\n {t('Devices')}\n </HeadlessTab>\n <HeadlessTab\n className={({ selected, hover }) =>\n clsx(\n styles.tab,\n tabClassName,\n hover && styles.tabHover,\n hover && tabHoverClassName,\n selected && styles.tabActive,\n selected && tabActiveClassName\n )\n }\n >\n {t('Sessions')}\n </HeadlessTab>\n </HeadlessTabList>\n {onRefreshClick && (\n <RefreshButton className={clsx(styles.refresh, refreshButtonClassName)} onClick={onRefreshClick}>{refresh}</RefreshButton>\n )}\n </div>\n <HeadlessTabPanels className={clsx(styles.tabPanels, tabPanelsClassName)}>\n <HeadlessTabPanel>\n <DevicesPanel devices={devices} onConnectClick={onConnectClick} smartConnectButtonClassName={smartConnectButtonClassName} loader={loader} />\n </HeadlessTabPanel>\n <HeadlessTabPanel>\n <SessionsPanel sessions={sessions} onSessionClick={onSessionClick} sessionButtonClassName={sessionButtonClassName} loader={loader} />\n </HeadlessTabPanel>\n </HeadlessTabPanels>\n </HeadlessTabGroup>\n )\n}\n\nexport default Tabs\n","import BaseCodeEntry, { type CodeEntryProps as BaseCodeEntryProps } from '@/components/CodeEntry'\nimport clsx from 'clsx'\nimport { Trans, useTranslation } from '@/i18n'\nimport styles from './CodeEntry.module.css'\n\nexport interface CodeEntryProps extends BaseCodeEntryProps {\n helpText?: string\n}\n\nconst CodeEntry = ({ helpText, className, ...props }: CodeEntryProps) => {\n const { t } = useTranslation()\n\n return (\n <div className={clsx(styles.root, className)}>\n <BaseCodeEntry label={<Trans><span className={styles.supportLabel}>Support </span>Code</Trans>} {...props} />\n <p>{helpText ?? t('Enter a support code, or connect to a device from the list below.')}</p>\n </div>\n )\n}\n\nexport default CodeEntry\n"],"names":["DevicesPanel","devices","onConnectClick","smartConnectButtonClassName","loader","t","useTranslation","jsx","Loader","Fragment","device","Device","styles","SmartConnectButton","SvgPlay","props","React","__spreadValues","SessionAction","session","className","onClick","isRecorded","isActive","jsxs","Button","PlayIcon","SessionsPanel","sessions","onSessionClick","sessionButtonClassName","index","Session","Tabs","onRefreshClick","refresh","headerClassName","tabListClassName","tabClassName","tabHoverClassName","tabActiveClassName","tabPanelsClassName","refreshButtonClassName","HeadlessTabGroup","clsx","HeadlessTabList","HeadlessTab","selected","hover","RefreshButton","HeadlessTabPanels","HeadlessTabPanel","CodeEntry","_a","_b","helpText","__objRest","BaseCodeEntry","Trans"],"mappings":"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"}
|