@dora-cell/sdk-react 0.1.1-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.4/node_modules/shared/src/utils.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.4/node_modules/lucide-react/src/defaultAttributes.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.4/node_modules/lucide-react/src/Icon.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.4/node_modules/lucide-react/src/createLucideIcon.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.4/node_modules/lucide-react/src/icons/arrow-down-left.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.4/node_modules/lucide-react/src/icons/arrow-up-right.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.4/node_modules/lucide-react/src/icons/delete.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.4/node_modules/lucide-react/src/icons/maximize.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.4/node_modules/lucide-react/src/icons/mic-off.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.4/node_modules/lucide-react/src/icons/mic.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.4/node_modules/lucide-react/src/icons/minimize-2.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.4/node_modules/lucide-react/src/icons/phone.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.4/node_modules/lucide-react/src/icons/user.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.4/node_modules/lucide-react/src/icons/x.ts","../src/components/CallInterface.tsx","../src/components/Dialpad.tsx","../src/index.tsx"],"names":["forwardRef","createElement","__iconNode","useState","jsxs","jsx","useRef","useEffect","call"],"mappings":"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","file":"index.mjs","sourcesContent":["import { CamelToPascal } from './utility-types';\n\n/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n\n/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = <T extends string>(string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n\n/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n\n/**\n * Is empty string\n *\n * @param {unknown} value\n * @returns {boolean} Whether the value is an empty string\n */\nexport const isEmptyString = (value: unknown): boolean => value === '';\n\n/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record<string, any>) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n};\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef<SVGSVGElement, LucideProps>(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M17 7 7 17', key: '15tmo1' }],\n ['path', { d: 'M17 17H7V7', key: '1org7z' }],\n];\n\n/**\n * @component @name ArrowDownLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTcgNyA3IDE3IiAvPgogIDxwYXRoIGQ9Ik0xNyAxN0g3VjciIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/arrow-down-left\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ArrowDownLeft = createLucideIcon('arrow-down-left', __iconNode);\n\nexport default ArrowDownLeft;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M7 7h10v10', key: '1tivn9' }],\n ['path', { d: 'M7 17 17 7', key: '1vkiza' }],\n];\n\n/**\n * @component @name ArrowUpRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNyA3aDEwdjEwIiAvPgogIDxwYXRoIGQ9Ik03IDE3IDE3IDciIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/arrow-up-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ArrowUpRight = createLucideIcon('arrow-up-right', __iconNode);\n\nexport default ArrowUpRight;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M10 5a2 2 0 0 0-1.344.519l-6.328 5.74a1 1 0 0 0 0 1.481l6.328 5.741A2 2 0 0 0 10 19h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2z',\n key: '1yo7s0',\n },\n ],\n ['path', { d: 'm12 9 6 6', key: 'anjzzh' }],\n ['path', { d: 'm18 9-6 6', key: '1fp51s' }],\n];\n\n/**\n * @component @name Delete\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTAgNWEyIDIgMCAwIDAtMS4zNDQuNTE5bC02LjMyOCA1Ljc0YTEgMSAwIDAgMCAwIDEuNDgxbDYuMzI4IDUuNzQxQTIgMiAwIDAgMCAxMCAxOWgxMGEyIDIgMCAwIDAgMi0yVjdhMiAyIDAgMCAwLTItMnoiIC8+CiAgPHBhdGggZD0ibTEyIDkgNiA2IiAvPgogIDxwYXRoIGQ9Im0xOCA5LTYgNiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/delete\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Delete = createLucideIcon('delete', __iconNode);\n\nexport default Delete;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M8 3H5a2 2 0 0 0-2 2v3', key: '1dcmit' }],\n ['path', { d: 'M21 8V5a2 2 0 0 0-2-2h-3', key: '1e4gt3' }],\n ['path', { d: 'M3 16v3a2 2 0 0 0 2 2h3', key: 'wsl5sc' }],\n ['path', { d: 'M16 21h3a2 2 0 0 0 2-2v-3', key: '18trek' }],\n];\n\n/**\n * @component @name Maximize\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNOCAzSDVhMiAyIDAgMCAwLTIgMnYzIiAvPgogIDxwYXRoIGQ9Ik0yMSA4VjVhMiAyIDAgMCAwLTItMmgtMyIgLz4KICA8cGF0aCBkPSJNMyAxNnYzYTIgMiAwIDAgMCAyIDJoMyIgLz4KICA8cGF0aCBkPSJNMTYgMjFoM2EyIDIgMCAwIDAgMi0ydi0zIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/maximize\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Maximize = createLucideIcon('maximize', __iconNode);\n\nexport default Maximize;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 19v3', key: 'npa21l' }],\n ['path', { d: 'M15 9.34V5a3 3 0 0 0-5.68-1.33', key: '1gzdoj' }],\n ['path', { d: 'M16.95 16.95A7 7 0 0 1 5 12v-2', key: 'cqa7eg' }],\n ['path', { d: 'M18.89 13.23A7 7 0 0 0 19 12v-2', key: '16hl24' }],\n ['path', { d: 'm2 2 20 20', key: '1ooewy' }],\n ['path', { d: 'M9 9v3a3 3 0 0 0 5.12 2.12', key: 'r2i35w' }],\n];\n\n/**\n * @component @name MicOff\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgMTl2MyIgLz4KICA8cGF0aCBkPSJNMTUgOS4zNFY1YTMgMyAwIDAgMC01LjY4LTEuMzMiIC8+CiAgPHBhdGggZD0iTTE2Ljk1IDE2Ljk1QTcgNyAwIDAgMSA1IDEydi0yIiAvPgogIDxwYXRoIGQ9Ik0xOC44OSAxMy4yM0E3IDcgMCAwIDAgMTkgMTJ2LTIiIC8+CiAgPHBhdGggZD0ibTIgMiAyMCAyMCIgLz4KICA8cGF0aCBkPSJNOSA5djNhMyAzIDAgMCAwIDUuMTIgMi4xMiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/mic-off\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst MicOff = createLucideIcon('mic-off', __iconNode);\n\nexport default MicOff;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 19v3', key: 'npa21l' }],\n ['path', { d: 'M19 10v2a7 7 0 0 1-14 0v-2', key: '1vc78b' }],\n ['rect', { x: '9', y: '2', width: '6', height: '13', rx: '3', key: 's6n7sd' }],\n];\n\n/**\n * @component @name Mic\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgMTl2MyIgLz4KICA8cGF0aCBkPSJNMTkgMTB2MmE3IDcgMCAwIDEtMTQgMHYtMiIgLz4KICA8cmVjdCB4PSI5IiB5PSIyIiB3aWR0aD0iNiIgaGVpZ2h0PSIxMyIgcng9IjMiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/mic\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Mic = createLucideIcon('mic', __iconNode);\n\nexport default Mic;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm14 10 7-7', key: 'oa77jy' }],\n ['path', { d: 'M20 10h-6V4', key: 'mjg0md' }],\n ['path', { d: 'm3 21 7-7', key: 'tjx5ai' }],\n ['path', { d: 'M4 14h6v6', key: 'rmj7iw' }],\n];\n\n/**\n * @component @name Minimize2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTQgMTAgNy03IiAvPgogIDxwYXRoIGQ9Ik0yMCAxMGgtNlY0IiAvPgogIDxwYXRoIGQ9Im0zIDIxIDctNyIgLz4KICA8cGF0aCBkPSJNNCAxNGg2djYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/minimize-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Minimize2 = createLucideIcon('minimize-2', __iconNode);\n\nexport default Minimize2;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384',\n key: '9njp5v',\n },\n ],\n];\n\n/**\n * @component @name Phone\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTMuODMyIDE2LjU2OGExIDEgMCAwIDAgMS4yMTMtLjMwM2wuMzU1LS40NjVBMiAyIDAgMCAxIDE3IDE1aDNhMiAyIDAgMCAxIDIgMnYzYTIgMiAwIDAgMS0yIDJBMTggMTggMCAwIDEgMiA0YTIgMiAwIDAgMSAyLTJoM2EyIDIgMCAwIDEgMiAydjNhMiAyIDAgMCAxLS44IDEuNmwtLjQ2OC4zNTFhMSAxIDAgMCAwLS4yOTIgMS4yMzMgMTQgMTQgMCAwIDAgNi4zOTIgNi4zODQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/phone\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Phone = createLucideIcon('phone', __iconNode);\n\nexport default Phone;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2', key: '975kel' }],\n ['circle', { cx: '12', cy: '7', r: '4', key: '17ys0d' }],\n];\n\n/**\n * @component @name User\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTkgMjF2LTJhNCA0IDAgMCAwLTQtNEg5YTQgNCAwIDAgMC00IDR2MiIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjciIHI9IjQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/user\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst User = createLucideIcon('user', __iconNode);\n\nexport default User;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M18 6 6 18', key: '1bl5f8' }],\n ['path', { d: 'm6 6 12 12', key: 'd8bk6v' }],\n];\n\n/**\n * @component @name X\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTggNiA2IDE4IiAvPgogIDxwYXRoIGQ9Im02IDYgMTIgMTIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/x\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst X = createLucideIcon('x', __iconNode);\n\nexport default X;\n","'use client';\n\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useCall } from '../index';\nimport {\n Phone,\n Mic,\n MicOff,\n Maximize,\n Minimize2,\n ArrowUpRight,\n ArrowDownLeft,\n} from 'lucide-react';\n\ninterface CallInterfaceProps {\n /**\n * Whether the interface is open/visible\n */\n isOpen?: boolean;\n /**\n * Callback when visibility changes\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * Callback when call ends (useful for invalidating queries)\n */\n onCallEnded?: () => void;\n /**\n * Custom maximize icon component\n */\n maximizeIcon?: React.ReactNode;\n /**\n * Custom minimize icon component\n */\n minimizeIcon?: React.ReactNode;\n}\n\nexport function CallInterface({\n isOpen = false,\n onOpenChange,\n onCallEnded,\n maximizeIcon,\n minimizeIcon,\n}: CallInterfaceProps) {\n const {\n callStatus,\n currentCall,\n callDuration,\n isMuted,\n hangup,\n answerCall,\n toggleMute,\n } = useCall();\n\n const [isMinimized, setIsMinimized] = useState(false);\n const [localMuted, setLocalMuted] = useState(false);\n const [wasConnected, setWasConnected] = useState(false);\n const [closeCountdown, setCloseCountdown] = useState<number | null>(null);\n const [connectingCountdown, setConnectingCountdown] = useState<number | null>(null);\n\n const audioRef = useRef<HTMLAudioElement | null>(null);\n const ringtoneRef = useRef<HTMLAudioElement | null>(null);\n\n const isIncoming = currentCall?.direction === 'inbound';\n const remoteNumber = currentCall?.remoteNumber || 'Unknown';\n // const displayName = currentCall?.remoteIdentity?.display_name || remoteNumber; // Assuming this might be added to SDK later\n const displayName = remoteNumber;\n\n // Handle audio stream\n useEffect(() => {\n if (!audioRef.current) return;\n\n // In a real SDK implementation, we'd need to expose the remote stream via context\n // For now, we assume the underlying JsSIP handles the audio element via standard WebRTC behavior\n // or we need to expose the stream in the useCall hook. \n // NOTE: The current SDK exposes 'call' object but we need the stream. \n // For this port, we'll assume audio handling is done by the core SDK or browser defaults for now,\n // but typically you'd attach the stream here.\n }, [currentCall]);\n\n // Handle automatic opening for incoming calls\n useEffect(() => {\n if (callStatus === 'ringing' && isIncoming) {\n onOpenChange?.(true);\n if (ringtoneRef.current) {\n ringtoneRef.current.play().catch(() => { });\n }\n } else {\n if (ringtoneRef.current) {\n ringtoneRef.current.pause();\n ringtoneRef.current.currentTime = 0;\n }\n }\n }, [callStatus, isIncoming, onOpenChange]);\n\n // Track if call ever reached \"ongoing\" state\n useEffect(() => {\n if (callStatus === 'ongoing') {\n setWasConnected(true);\n }\n }, [callStatus]);\n\n // Auto-close modal with countdown after call ends\n useEffect(() => {\n if (isOpen && callStatus === 'ended') {\n onCallEnded?.();\n\n const closeDelay = wasConnected ? 1000 : 5000;\n const countdownStart = Date.now();\n\n const countdownInterval = setInterval(() => {\n const elapsed = Date.now() - countdownStart;\n const remaining = Math.max(0, closeDelay - elapsed);\n const seconds = Math.ceil(remaining / 1000);\n setCloseCountdown(seconds);\n\n if (remaining <= 0) {\n clearInterval(countdownInterval);\n onOpenChange?.(false);\n }\n }, 100);\n\n return () => clearInterval(countdownInterval);\n } else {\n setCloseCountdown(null);\n }\n }, [callStatus, isOpen, onOpenChange, wasConnected, onCallEnded]);\n\n // Call Connecting countdown for outgoing calls\n useEffect(() => {\n let interval: ReturnType<typeof setInterval>;\n const isConnecting = callStatus === 'connecting';\n\n if (isOpen && isConnecting && !isIncoming) {\n setConnectingCountdown(60);\n interval = setInterval(() => {\n setConnectingCountdown((prev) => {\n if (prev === null || prev <= 0) {\n clearInterval(interval);\n hangup();\n return 0;\n }\n return prev - 1;\n });\n }, 1000);\n } else {\n setConnectingCountdown(null);\n }\n return () => clearInterval(interval);\n }, [callStatus, isOpen, isIncoming, hangup]);\n\n if (!isOpen && callStatus === 'idle') return null;\n\n return (\n <div\n role=\"dialog\"\n aria-label=\"Call interface\"\n className={`fixed top-14 md:top-16 right-0 md:right-4 z-50 transform transition-all duration-300 ease-in-out bg-[#1E1E1E] shadow-xl ${isOpen ? 'translate-x-0' : 'translate-x-[110%]'\n } ${isMinimized\n ? 'w-48 h-20 rounded-2xl p-4 flex items-center justify-between'\n : 'w-full sm:w-96 md:max-w-sm max-h-[calc(100vh-3.5rem)] md:max-h-[calc(100vh-4rem)] rounded-none md:rounded-2xl'\n }`}\n >\n {/* Audio Elements */}\n <audio ref={audioRef} autoPlay className=\"hidden\" />\n <audio\n ref={ringtoneRef}\n src=\"https://assets.mixkit.co/active_storage/sfx/2358/2358-preview.mp3\"\n loop\n preload=\"auto\"\n className=\"hidden\"\n />\n\n {isMinimized ? (\n <div className=\"flex items-center justify-between w-full h-full\">\n {/* Maximize Button */}\n <button\n onClick={() => setIsMinimized(false)}\n className=\"w-10 h-10 rounded-full bg-[#2A2A2A] flex items-center justify-center text-slate-400 hover:text-white transition-colors\"\n aria-label=\"Maximize call interface\"\n >\n {maximizeIcon || <Maximize size={18} />}\n </button>\n\n {/* Grouped Avatar and Hangup */}\n <div className=\"relative flex items-center\">\n <div className=\"w-11 h-11 rounded-full bg-white flex items-center justify-center -mr-3\">\n <span className=\"text-xl text-slate-900 font-bold\">\n {displayName.charAt(0).toUpperCase()}\n </span>\n </div>\n <button\n onClick={hangup}\n className=\"w-11 h-11 rounded-full bg-red-500 text-white flex items-center justify-center shadow-lg hover:bg-red-600 transition-colors z-10\"\n aria-label=\"End call\"\n >\n <Phone size={18} className=\"transform rotate-135\" />\n </button>\n </div>\n </div>\n ) : (\n <div className=\"flex flex-col py-4 md:py-6 gap-2.5 md:gap-3.5 px-3 md:px-5 relative\">\n {/* Minimize Button */}\n <button\n onClick={() => setIsMinimized(true)}\n className=\"absolute top-2 right-2 text-slate-500 hover:text-white transition-colors\"\n aria-label=\"Minimize\"\n >\n {minimizeIcon || <Minimize2 size={16} />}\n </button>\n\n <div className=\"flex justify-between gap-2 items-start md:items-center\">\n {/* Customer Info */}\n <div className=\"flex items-center gap-2.5 md:gap-4 min-w-0\">\n <div className=\"w-9 md:w-11 h-9 md:h-11 rounded-full bg-white flex items-center justify-center shrink-0\">\n <span className=\"text-lg md:text-2xl text-slate-900 font-bold\">\n {displayName.charAt(0).toUpperCase()}\n </span>\n </div>\n\n <div className=\"min-w-0 flex-1\">\n <h2 className=\"text-base md:text-xl font-normal text-white truncate\">\n {isIncoming ? displayName : (displayName === 'Unknown' ? 'Outgoing Call' : displayName)}\n </h2>\n <p className=\"text-slate-400 text-xs md:text-sm truncate\">\n {remoteNumber} •{' '}\n {isMuted ? (\n <span className=\"text-xs text-[#F99578]\">Call mute</span>\n ) : (\n <>\n {(callStatus === 'connecting' || callStatus === 'ringing') && (\n <span>\n {isIncoming\n ? 'Incoming Call...'\n : callStatus === 'connecting'\n ? 'Connecting...'\n : 'Ringing...'}\n </span>\n )}\n {callStatus === 'ongoing' && <span>On Call</span>}\n </>\n )}\n </p>\n </div>\n </div>\n\n {/* Controls */}\n <div className=\"flex items-center justify-center gap-1.5 md:gap-3 shrink-0\">\n {/* Answer Button (Incoming only) */}\n {isIncoming && callStatus === 'ringing' && (\n <button\n onClick={answerCall}\n className=\"rounded-full bg-green-500 text-white hover:bg-green-600 transition-colors w-8 md:w-9 h-8 md:h-9 flex items-center justify-center shrink-0\"\n aria-label=\"Answer call\"\n >\n <Phone size={18} />\n </button>\n )}\n\n {/* Mute Button */}\n {(callStatus === 'ongoing' || (isIncoming && callStatus === 'ringing')) && (\n <button\n onClick={() => {\n toggleMute();\n setLocalMuted((s) => !s);\n }}\n className={`rounded-full transition-colors w-8 md:w-9 h-8 md:h-9 flex items-center justify-center shrink-0 bg-slate-700 hover:bg-slate-600 ${isMuted ? 'text-white ' : ' text-slate-400 '\n }`}\n aria-label=\"Toggle mute\"\n >\n {isMuted ? <MicOff size={18} /> : <Mic size={18} />}\n </button>\n )}\n\n {/* End Call / Decline Button */}\n <button\n onClick={hangup}\n className=\"rounded-full bg-red-600 text-white hover:bg-red-700 transition-colors w-8 md:w-9 h-8 md:h-9 flex items-center justify-center shrink-0\"\n aria-label={isIncoming && callStatus === 'ringing' ? 'Decline call' : 'End call'}\n >\n <Phone size={18} className=\"transform rotate-135\" />\n </button>\n </div>\n </div>\n\n {/* Spacer */}\n <div className=\"flex-1 border border-[#282828]\" />\n\n {/* Error Message */}\n {/* Note: Error handling needs to be exposed from SDK hook properly */}\n\n {/* Call Status */}\n <div className=\"flex justify-between items-center\">\n <div className=\"text-slate-400 text-xs md:text-sm font-light tracking-wide flex items-center gap-1\">\n <div>\n {(callStatus === 'connecting' || callStatus === 'ringing') && (\n <span>{isIncoming ? 'Incoming call' : 'Outgoing call'}</span>\n )}\n\n {callStatus === 'ongoing' && <span>Ongoing</span>}\n {callStatus === 'ended' && <span>Call ended</span>}\n </div>\n\n {(callStatus === 'connecting' || callStatus === 'ringing' || callStatus === 'ongoing') && (\n isIncoming ? (\n <ArrowDownLeft className=\"inline-block ml-1 text-green-400\" size={16} />\n ) : (\n <ArrowUpRight className=\"inline-block ml-1 text-blue-400\" size={16} />\n )\n )}\n </div>\n\n {callStatus === 'ongoing' && (\n <div className=\"bg-[#272727] h-6 md:h-7.5 rounded-full px-3 md:px-4.5 text-white font-normal text-xs md:text-sm flex items-center justify-center\">\n <span> {callDuration} </span>\n </div>\n )}\n\n {(connectingCountdown !== null || callStatus === 'ringing') && !isIncoming && callStatus !== 'ongoing' && (\n <div className=\"bg-[#272727] h-8 rounded-full px-3 md:px-4 text-white font-normal text-xs md:text-sm flex items-center justify-center gap-2\">\n <span className=\"text-[#F99578] whitespace-nowrap\">\n {callStatus === 'ringing' ? 'Ringing...' : 'Call connecting...'}\n </span>\n {callStatus === 'connecting' && connectingCountdown && (\n <span className=\"font-mono ml-1\">\n {Math.floor(connectingCountdown / 60)}:\n {String(connectingCountdown % 60).padStart(2, '0')}\n </span>\n )}\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n );\n}\n","'use client';\n\nimport React, { useState } from 'react';\nimport { useCall } from '../index';\nimport { Phone, Delete, X, User } from 'lucide-react';\n\ninterface DialpadProps {\n /**\n * Callback when call is initiated\n */\n onCallInitiated?: (number: string) => void;\n /**\n * Initial number to populate\n */\n initialNumber?: string;\n /**\n * Whether to show the dialpad keys (0-9)\n */\n showKeys?: boolean;\n /**\n * Custom class name for the container\n */\n className?: string;\n\n availableExtensions?: Array<{ label: string; value: string }>;\n\n selectedExtension?: string;\n\n onExtensionChange?: (ext: string) => void;\n}\n\nexport function Dialpad({\n onCallInitiated,\n initialNumber = '',\n showKeys = true,\n className = '',\n availableExtensions = [],\n selectedExtension,\n onExtensionChange,\n}: DialpadProps) {\n const { call, callStatus } = useCall();\n const [number, setNumber] = useState(initialNumber);\n const [keysVisible, setKeysVisible] = useState(showKeys);\n\n const append = (digit: string) => setNumber((s) => s + digit);\n const backspace = () => setNumber((s) => s.slice(0, -1));\n\n const handleCall = async () => {\n if (!number || number.trim() === '') return;\n\n try {\n await call(number, selectedExtension);\n onCallInitiated?.(number);\n } catch (e) {\n console.error('Call failed', e);\n }\n };\n\n const isCallDisabled =\n !number ||\n number.trim() === '' ||\n callStatus === 'ringing' ||\n callStatus === 'ongoing' ||\n callStatus === 'connecting';\n\n return (\n <div className={`space-y-4 ${className}`}>\n\n {/* Caller ID Selection (Optional) */}\n {availableExtensions.length > 0 && (\n <div className=\"gap-2 bg-[#F6F7F9] rounded-lg flex items-center justify-between p-2 md:p-2.5 mb-4\">\n <div className=\"text-xs md:text-sm text-neutral-500 font-normal whitespace-nowrap\">\n Caller ID\n </div>\n <select\n className=\"bg-transparent text-sm font-medium outline-none\"\n value={selectedExtension}\n onChange={(e) => onExtensionChange?.(e.target.value)}\n >\n {availableExtensions.map((ext) => (\n <option key={ext.value} value={ext.value}>\n {ext.label}\n </option>\n ))}\n </select>\n </div>\n )}\n\n <div className=\"space-y-2 md:space-y-3 bg-[#F6F7F9] p-2 md:p-2.5 rounded-lg\">\n <div className=\"flex items-center gap-2 md:gap-3\">\n <div className=\"flex-1 min-w-0 flex items-center bg-white rounded-md px-3 h-10 border border-transparent focus-within:border-green-500 transition-colors\">\n <User className=\"text-gray-400 mr-2\" size={18} />\n <input\n type=\"tel\"\n placeholder=\"Enter number\"\n value={number}\n onChange={(e) => setNumber(e.target.value)}\n className=\"bg-transparent border-none outline-none w-full text-base\"\n />\n </div>\n\n <div>\n <button\n disabled={isCallDisabled}\n className=\"bg-green-500 text-white hover:bg-green-600 rounded-lg h-9 md:h-10 w-9 md:w-11 flex items-center justify-center disabled:opacity-50 disabled:cursor-not-allowed transition-colors\"\n onClick={handleCall}\n title=\"Place Call\"\n >\n <Phone size={16} fill=\"currentColor\" />\n </button>\n </div>\n </div>\n\n <div>\n {keysVisible ? (\n <div className=\"pt-3\">\n <div className=\"flex items-center gap-3 mb-3\">\n <button\n onClick={() => setKeysVisible(false)}\n className=\"px-2 md:px-2.5 h-8 bg-white rounded-full shadow text-neutral-500 flex items-center gap-1.5 md:gap-2 text-xs md:text-sm font-normal hover:bg-gray-50 transition-colors\"\n >\n <X color=\"red\" size={16} /> Close keypad\n </button>\n </div>\n\n <div className=\"grid grid-cols-3 gap-2 md:gap-3\">\n {['1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '0', 'del'].map(\n (d) => (\n <button\n key={d}\n onClick={() => (d === 'del' ? backspace() : append(d))}\n className=\"h-10 md:h-12 bg-white rounded-xl shadow flex items-center justify-center text-base md:text-lg font-medium hover:bg-gray-50 active:bg-gray-100 transition-colors\"\n aria-label={d === 'del' ? 'Delete' : `Dial ${d}`}\n >\n {d === 'del' ? <Delete size={18} /> : d}\n </button>\n )\n )}\n </div>\n </div>\n ) : (\n <div className=\"pt-2 md:pt-3\">\n <button\n onClick={() => setKeysVisible(true)}\n className=\"rounded-full bg-[#EDEEF1] h-9 md:h-10 flex justify-center items-center px-3 md:px-4 w-full text-xs md:text-sm hover:bg-[#E3E4E8] transition-colors\"\n >\n <span className=\"mr-2\">🔢</span>\n <span className=\"text-xs md:text-sm text-neutral-500 font-normal ml-1.5\">\n Open dialer\n </span>\n </button>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}\n","/**\n * React bindings for Dora Cell SDK\n * Provides React Context and hooks for easy integration\n */\n\n'use client';\n\nimport React, { createContext, useContext, useEffect, useState, useRef } from 'react';\nimport { DoraCell } from '@dora-cell/sdk';\nimport type {\n DoraCellConfig,\n Call,\n CallStatus,\n ConnectionStatus,\n ConnectionState,\n} from '@dora-cell/sdk';\n\ninterface DoraCellContextValue {\n sdk: DoraCell | null;\n connectionStatus: ConnectionStatus;\n currentCall: Call | null;\n callStatus: CallStatus;\n callDuration: string;\n isMuted: boolean;\n isInitialized: boolean;\n error: Error | null;\n\n // Methods\n call: (phoneNumber: string, extension?: string) => Promise<void>;\n hangup: () => void;\n toggleMute: () => void;\n answerCall: () => void;\n}\n\nconst DoraCellContext = createContext<DoraCellContextValue | undefined>(undefined);\n\nexport interface DoraCellProviderProps {\n config: DoraCellConfig;\n children: React.ReactNode;\n autoInitialize?: boolean;\n}\n\nexport function DoraCellProvider({\n config,\n children,\n autoInitialize = true,\n}: DoraCellProviderProps) {\n const [sdk] = useState(() => new DoraCell(config));\n const [isInitialized, setIsInitialized] = useState(false);\n const [connectionStatus, setConnectionStatus] = useState<ConnectionStatus>('disconnected');\n const [currentCall, setCurrentCall] = useState<Call | null>(null);\n const [callStatus, setCallStatus] = useState<CallStatus>('idle');\n const [callDuration, setCallDuration] = useState('00:00');\n const [isMuted, setIsMuted] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const durationIntervalRef = useRef<number | null>(null);\n\n // Initialize SDK\n useEffect(() => {\n if (!autoInitialize) return;\n\n const initializeSdk = async () => {\n try {\n await sdk.initialize();\n setIsInitialized(true);\n } catch (err) {\n setError(err instanceof Error ? err : new Error('Failed to initialize SDK'));\n }\n };\n\n initializeSdk();\n\n return () => {\n sdk.destroy();\n };\n }, [sdk, autoInitialize]);\n\n // Set up event listeners\n useEffect(() => {\n if (!sdk) return;\n\n const handleConnectionStatus = (state: ConnectionState) => {\n setConnectionStatus(state.status);\n if (state.error) {\n setError(new Error(state.error));\n }\n };\n\n const handleIncomingCall = (call: Call) => {\n setCurrentCall(call);\n setCallStatus('ringing');\n };\n\n const handleOutgoingCall = (call: Call) => {\n setCurrentCall(call);\n setCallStatus('connecting');\n };\n\n const handleCallRinging = (call: Call) => {\n setCallStatus('ringing');\n };\n\n const handleCallConnected = (call: Call) => {\n setCallStatus('ongoing');\n };\n\n const handleCallEnded = (call: Call) => {\n setCallStatus('ended');\n setCurrentCall(null);\n setIsMuted(false);\n\n // Reset to idle after a delay\n setTimeout(() => {\n setCallStatus('idle');\n }, 3000);\n };\n\n const handleCallFailed = (call: Call, errorMsg: string) => {\n setError(new Error(errorMsg));\n setCallStatus('ended');\n setCurrentCall(null);\n };\n\n const handleError = (err: Error) => {\n setError(err);\n };\n\n sdk.on('connection:status', handleConnectionStatus);\n sdk.on('call:incoming', handleIncomingCall);\n sdk.on('call:outgoing', handleOutgoingCall);\n sdk.on('call:ringing', handleCallRinging);\n sdk.on('call:connected', handleCallConnected);\n sdk.on('call:ended', handleCallEnded);\n sdk.on('call:failed', handleCallFailed);\n sdk.on('error', handleError);\n\n return () => {\n sdk.off('connection:status', handleConnectionStatus);\n sdk.off('call:incoming', handleIncomingCall);\n sdk.off('call:outgoing', handleOutgoingCall);\n sdk.off('call:ringing', handleCallRinging);\n sdk.off('call:connected', handleCallConnected);\n sdk.off('call:ended', handleCallEnded);\n sdk.off('call:failed', handleCallFailed);\n sdk.off('error', handleError);\n };\n }, [sdk]);\n\n // Update call duration\n useEffect(() => {\n if (callStatus === 'ongoing' && currentCall) {\n durationIntervalRef.current = window.setInterval(() => {\n const duration = currentCall.duration;\n const mm = String(Math.floor(duration / 60)).padStart(2, '0');\n const ss = String(duration % 60).padStart(2, '0');\n setCallDuration(`${mm}:${ss}`);\n }, 1000);\n } else {\n setCallDuration('00:00');\n if (durationIntervalRef.current) {\n clearInterval(durationIntervalRef.current);\n durationIntervalRef.current = null;\n }\n }\n\n return () => {\n if (durationIntervalRef.current) {\n clearInterval(durationIntervalRef.current);\n }\n };\n }, [callStatus, currentCall]);\n\n // Methods\n const call = async (phoneNumber: string, extension?: string) => {\n try {\n setError(null);\n await sdk.call(phoneNumber, { extension });\n } catch (err) {\n setError(err instanceof Error ? err : new Error('Failed to make call'));\n throw err;\n }\n };\n\n const hangup = () => {\n try {\n sdk.hangup();\n } catch (err) {\n setError(err instanceof Error ? err : new Error('Failed to hang up'));\n }\n };\n\n const toggleMute = () => {\n if (!currentCall) return;\n\n if (isMuted) {\n currentCall.unmute();\n setIsMuted(false);\n } else {\n currentCall.mute();\n setIsMuted(true);\n }\n };\n\n const answerCall = () => {\n try {\n sdk.answerCall();\n } catch (err) {\n setError(err instanceof Error ? err : new Error('Failed to answer call'));\n }\n };\n\n const contextValue: DoraCellContextValue = {\n sdk,\n connectionStatus,\n currentCall,\n callStatus,\n callDuration,\n isMuted,\n isInitialized,\n error,\n call,\n hangup,\n toggleMute,\n answerCall,\n };\n\n return (\n <DoraCellContext.Provider value={contextValue}>\n {children}\n </DoraCellContext.Provider>\n );\n}\n\n/**\n * Hook to access Dora Cell SDK context\n */\nexport function useDoraCell(): DoraCellContextValue {\n const context = useContext(DoraCellContext);\n if (!context) {\n throw new Error('useDoraCell must be used within DoraCellProvider');\n }\n return context;\n}\n\n/**\n * Hook for making calls\n */\nexport function useCall() {\n const { call, hangup, toggleMute, answerCall, callStatus, callDuration, isMuted, currentCall } = useDoraCell();\n\n return {\n call,\n hangup,\n toggleMute,\n answerCall,\n callStatus,\n callDuration,\n isMuted,\n currentCall,\n };\n}\n\n/**\n * Hook for connection status\n */\nexport function useConnectionStatus() {\n const { connectionStatus, isInitialized, error } = useDoraCell();\n\n return {\n connectionStatus,\n isInitialized,\n isConnected: connectionStatus === 'registered',\n error,\n };\n}\n\nexport * from './components';\n"]}
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@dora-cell/sdk-react",
3
+ "version": "0.1.1-beta.10",
4
+ "description": "React bindings for Dora Cell SDK",
5
+ "main": "./dist/index.cjs",
6
+ "module": "./dist/index.mjs",
7
+ "types": "./dist/index.d.ts",
8
+ "publishConfig": {
9
+ "access": "public"
10
+ },
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/index.d.ts",
14
+ "import": "./dist/index.mjs",
15
+ "require": "./dist/index.cjs"
16
+ }
17
+ },
18
+ "files": [
19
+ "dist",
20
+ "README.md"
21
+ ],
22
+ "scripts": {
23
+ "build": "tsup",
24
+ "dev": "tsup --watch",
25
+ "type-check": "tsc --noEmit"
26
+ },
27
+ "keywords": [
28
+ "voip",
29
+ "react",
30
+ "hooks",
31
+ "dora-cell"
32
+ ],
33
+ "author": "Dora Cell",
34
+ "license": "MIT",
35
+ "peerDependencies": {
36
+ "@dora-cell/sdk": "^0.1.1-beta.13",
37
+ "react": "^18.0.0 || ^19.0.0",
38
+ "react-dom": "^18.0.0 || ^19.0.0"
39
+ },
40
+ "devDependencies": {
41
+ "@types/react": "^19.0.0",
42
+ "@types/react-dom": "^19.0.0",
43
+ "react": "^19.0.0",
44
+ "react-dom": "^19.0.0",
45
+ "tsup": "^8.0.0",
46
+ "typescript": "^5.3.0"
47
+ }
48
+ }