@dora-cell/sdk-react 0.1.1-beta.9 → 1.0.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 +66 -295
- package/dist/index.d.mts +1 -27
- package/dist/index.d.ts +1 -27
- package/dist/index.js +156 -119
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +156 -119
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +3 -0
- package/package.json +18 -7
package/dist/index.mjs.map
CHANGED
|
@@ -1 +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  - 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  - 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  - 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  - 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  - 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  - 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  - 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  - 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  - 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  - 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"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/shared/src/utils.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/src/defaultAttributes.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/src/Icon.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/src/createLucideIcon.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/src/icons/arrow-down-left.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/src/icons/arrow-up-right.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/src/icons/delete.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/src/icons/maximize.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/src/icons/mic-off.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/src/icons/mic.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/src/icons/minimize-2.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/src/icons/phone.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/src/icons/user.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/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  - 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  - 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  - 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  - 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  - 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  - 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  - 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  - 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  - 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  - 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 isOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n onCallEnded?: () => void;\n maximizeIcon?: React.ReactNode;\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 callError,\n } = useCall();\n\n const [isMinimized, setIsMinimized] = 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 = remoteNumber;\n\n // Attach remote stream to audio element\n useEffect(() => {\n if (currentCall && audioRef.current) {\n const stream = currentCall.getRemoteStream();\n if (stream && audioRef.current.srcObject !== stream) {\n audioRef.current.srcObject = stream;\n }\n }\n }, [currentCall, callStatus]);\n\n // Play ringtone for incoming calls\n useEffect(() => {\n if (callStatus === 'ringing' && isIncoming) {\n onOpenChange?.(true);\n ringtoneRef.current?.play().catch(() => { });\n } else {\n if (ringtoneRef.current) {\n ringtoneRef.current.pause();\n ringtoneRef.current.currentTime = 0;\n }\n }\n }, [callStatus, isIncoming, onOpenChange]);\n\n // Track connection state\n useEffect(() => {\n if (callStatus === 'connecting' || callStatus === 'ringing') {\n setWasConnected(false); // Reset on new call\n }\n if (callStatus === 'ongoing') {\n setWasConnected(true);\n }\n }, [callStatus]);\n\n // Handle call ended state and auto-close\n useEffect(() => {\n if (isOpen && callStatus === 'ended') {\n onCallEnded?.();\n const closeDelay = wasConnected ? 1500 : 3000;\n const start = Date.now();\n const iv = setInterval(() => {\n const remaining = Math.max(0, closeDelay - (Date.now() - start));\n setCloseCountdown(Math.ceil(remaining / 1000));\n\n if (remaining <= 0) {\n clearInterval(iv);\n onOpenChange?.(false);\n // Reset minimized state for the next call\n setIsMinimized(false);\n }\n }, 100);\n return () => clearInterval(iv);\n } else {\n setCloseCountdown(null);\n }\n }, [callStatus, isOpen, onOpenChange, wasConnected, onCallEnded]);\n\n // 60-second connection timeout for outbound calls\n useEffect(() => {\n let iv: ReturnType<typeof setInterval>;\n if (isOpen && callStatus === 'connecting' && !isIncoming) {\n setConnectingCountdown(60);\n iv = setInterval(() => {\n setConnectingCountdown((prev) => {\n if (prev === null || prev <= 0) {\n clearInterval(iv);\n if (callStatus === 'connecting') hangup();\n return 0;\n }\n return prev - 1;\n });\n }, 1000);\n } else {\n setConnectingCountdown(null);\n }\n return () => clearInterval(iv);\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={`dora-fixed dora-top-14 md:dora-top-16 dora-right-0 md:dora-right-4 dora-z-50 dora-transform dora-transition-all dora-duration-300 dora-ease-in-out dora-bg-[#1E1E1E] dora-shadow-xl ${isOpen ? 'dora-translate-x-0' : 'dora-translate-x-[110%]'\n } ${isMinimized\n ? 'dora-w-48 dora-h-20 dora-rounded-2xl dora-p-4 dora-flex dora-items-center dora-justify-between'\n : 'dora-w-full sm:dora-w-96 md:dora-max-w-sm max-h-[calc(100vh-3.5rem)] md:dora-max-h-[calc(100vh-4rem)] dora-rounded-none md:dora-rounded-2xl'\n }`}\n >\n <audio ref={audioRef} autoPlay className=\"dora-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=\"dora-hidden\"\n />\n\n {isMinimized ? (\n <div className=\"dora-flex dora-items-center dora-justify-between dora-w-full dora-h-full\">\n <button\n onClick={() => setIsMinimized(false)}\n className=\"dora-w-10 dora-h-10 dora-rounded-full dora-bg-[#2A2A2A] dora-flex dora-items-center dora-justify-center dora-text-slate-400 hover:dora-text-white dora-transition-colors\"\n aria-label=\"Maximize\"\n >\n {maximizeIcon || <Maximize size={18} />}\n </button>\n <div className=\"dora-relative dora-flex dora-items-center\">\n <div className=\"dora-w-11 dora-h-11 dora-rounded-full dora-bg-white dora-flex dora-items-center dora-justify-center dora--mr-3\">\n <span className=\"dora-text-xl dora-text-slate-900 dora-font-bold\">\n {displayName.charAt(0).toUpperCase()}\n </span>\n </div>\n <button\n onClick={hangup}\n className=\"dora-w-11 dora-h-11 dora-rounded-full dora-bg-red-500 dora-text-white dora-flex dora-items-center dora-justify-center dora-shadow-lg hover:dora-bg-red-600 dora-transition-colors dora-z-10\"\n aria-label=\"End call\"\n >\n <Phone size={18} className=\"dora-transform dora-rotate-[135deg]\" />\n </button>\n </div>\n </div>\n ) : (\n <div className=\"dora-flex dora-flex-col dora-py-4 md:dora-py-6 dora-gap-2.5 md:dora-gap-3.5 dora-px-3 md:dora-px-5 dora-relative\">\n <button\n onClick={() => setIsMinimized(true)}\n className=\"dora-absolute dora-top-2 dora-right-2 dora-text-slate-500 hover:dora-text-white dora-transition-colors\"\n aria-label=\"Minimize\"\n >\n {minimizeIcon || <Minimize2 size={16} />}\n </button>\n\n <div className=\"dora-flex dora-justify-between dora-gap-2 dora-items-start md:dora-items-center\">\n <div className=\"dora-flex dora-items-center dora-gap-2.5 md:dora-gap-4 dora-min-w-0\">\n <div className=\"dora-w-9 md:dora-w-11 dora-h-9 md:dora-h-11 dora-rounded-full dora-bg-white dora-flex dora-items-center dora-justify-center dora-shrink-0\">\n <span className=\"dora-text-lg md:dora-text-2xl dora-text-slate-900 dora-font-bold\">\n {displayName.charAt(0).toUpperCase()}\n </span>\n </div>\n <div className=\"dora-min-w-0 dora-flex-1\">\n <h2 className=\"dora-text-base md:dora-text-xl dora-font-normal dora-text-white dora-truncate\">\n {isIncoming ? displayName : (displayName === 'Unknown' ? 'Outgoing Call' : displayName)}\n </h2>\n <p className=\"dora-text-slate-400 dora-text-xs md:dora-text-sm dora-truncate\">\n {remoteNumber} •{' '}\n {isMuted ? (\n <span className=\"dora-text-[#F99578]\">Call muted</span>\n ) : (\n <>\n {(callStatus === 'connecting' || callStatus === 'ringing') && (\n <span>\n {isIncoming ? 'Incoming Call...' : callStatus === 'connecting' ? 'Connecting...' : 'Ringing...'}\n </span>\n )}\n {callStatus === 'ongoing' && <span>On Call</span>}\n {callStatus === 'ended' && <span>Call Ended</span>}\n </>\n )}\n </p>\n </div>\n </div>\n\n <div className=\"dora-flex dora-items-center dora-justify-center dora-gap-1.5 md:dora-gap-3 dora-shrink-0\">\n {isIncoming && callStatus === 'ringing' && (\n <button\n onClick={answerCall}\n className=\"dora-rounded-full dora-bg-green-500 dora-text-white hover:dora-bg-green-600 dora-transition-colors dora-w-8 md:dora-w-9 dora-h-8 md:dora-h-9 dora-flex dora-items-center dora-justify-center dora-shrink-0\"\n aria-label=\"Answer\"\n >\n <Phone size={18} />\n </button>\n )}\n\n {(callStatus === 'ongoing' || (isIncoming && callStatus === 'ringing')) && (\n <button\n onClick={toggleMute}\n className={`dora-rounded-full dora-transition-colors dora-w-8 md:dora-w-9 dora-h-8 md:dora-h-9 dora-flex dora-items-center dora-justify-center dora-shrink-0 ${isMuted ? 'dora-bg-slate-700 hover:dora-bg-slate-600 dora-text-white' : 'dora-bg-[#2A2A2A] hover:dora-bg-[#333333] dora-text-slate-400'\n }`}\n aria-label=\"Toggle mute\"\n >\n {isMuted ? <MicOff size={18} /> : <Mic size={18} />}\n </button>\n )}\n\n <button\n onClick={hangup}\n className=\"dora-rounded-full dora-bg-red-600 dora-text-white hover:dora-bg-red-700 dora-transition-colors dora-w-8 md:dora-w-9 dora-h-8 md:dora-h-9 dora-flex dora-items-center dora-justify-center dora-shrink-0\"\n aria-label={isIncoming && callStatus === 'ringing' ? 'Decline' : 'End call'}\n >\n <Phone size={18} className=\"dora-transform dora-rotate-[135deg]\" />\n </button>\n </div>\n </div>\n\n <div className=\"dora-flex-1 dora-border-t dora-border-[#282828] dora-mt-2 dora-mb-2\" />\n\n {callError && callStatus === 'ended' && (\n <div className=\"dora-bg-red-900/20 dora-border dora-border-red-500/30 dora-rounded-lg dora-p-2 md:dora-p-3 dora-mb-2 md:dora-mb-3\">\n <p className=\"dora-text-red-400 dora-text-xs md:dora-text-sm dora-font-medium\">\n Call Failed\n </p>\n <p className=\"dora-text-red-300 dora-text-xs dora-mt-0.5 md:dora-mt-1\">\n {callError}\n </p>\n {closeCountdown !== null && (\n <div className=\"dora-mt-1.5 md:dora-mt-2\">\n <div className=\"dora-w-full dora-bg-red-900/30 dora-rounded-full dora-h-1.5 dora-overflow-hidden\">\n <div\n className=\"dora-bg-red-500 dora-h-full dora-transition-all dora-duration-100\"\n style={{\n width: `${Math.max(\n 0,\n (closeCountdown / (wasConnected ? 1 : 5)) * 100,\n )}%`,\n }}\n />\n </div>\n <p className=\"dora-text-xs dora-text-red-300 dora-mt-0.5 md:dora-mt-1 dora-text-center\">\n Closing in {closeCountdown}s\n </p>\n </div>\n )}\n </div>\n )}\n\n <div className=\"dora-flex dora-justify-between dora-items-center\">\n <div className=\"dora-text-slate-400 dora-text-xs md:dora-text-sm dora-font-light dora-tracking-wide dora-flex dora-items-center dora-gap-1\">\n {(callStatus === 'connecting' || callStatus === 'ringing') && (\n <span>{isIncoming ? 'Incoming call' : 'Outgoing call'}</span>\n )}\n {callStatus === 'ongoing' && <span>Ongoing</span>}\n {callStatus === 'ended' && <span>Call ended</span>}\n {(callStatus === 'connecting' || callStatus === 'ringing' || callStatus === 'ongoing') && (\n isIncoming\n ? <ArrowDownLeft className=\"dora-inline-block dora-ml-1 dora-text-green-400\" size={16} />\n : <ArrowUpRight className=\"dora-inline-block dora-ml-1 dora-text-blue-400\" size={16} />\n )}\n </div>\n\n {callStatus === 'ongoing' && (\n <div className=\"dora-bg-[#272727] dora-h-6 md:dora-h-7 dora-rounded-full dora-px-3 md:dora-px-4 dora-text-white dora-font-normal dora-text-xs md:dora-text-sm dora-flex dora-items-center dora-justify-center\">\n <span>{callDuration}</span>\n </div>\n )}\n\n {callStatus === 'ended' && closeCountdown !== null && (\n <div className=\"dora-bg-[#272727] dora-h-6 md:dora-h-7 dora-rounded-full dora-px-3 md:dora-px-4 dora-text-slate-400 dora-font-normal dora-text-xs dora-flex dora-items-center dora-justify-center dora-gap-1\">\n <span>Closing in {closeCountdown}s</span>\n </div>\n )}\n\n {(connectingCountdown !== null || callStatus === 'ringing') && !isIncoming && callStatus !== 'ongoing' && callStatus !== 'ended' && (\n <div className=\"dora-bg-[#272727] dora-h-8 dora-rounded-full dora-px-3 md:dora-px-4 dora-text-white dora-font-normal dora-text-xs md:dora-text-sm dora-flex dora-items-center dora-justify-center dora-gap-2\">\n <span className=\"dora-text-[#F99578] dora-whitespace-nowrap\">\n {callStatus === 'ringing' ? 'Ringing...' : 'Connecting...'}\n </span>\n {callStatus === 'connecting' && connectingCountdown && (\n <span className=\"dora-font-mono dora-ml-1 dora-text-slate-400\">\n {Math.floor(connectingCountdown / 60)}:{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, useConnectionStatus } from \"../index\";\nimport { Phone, Delete, X, User } from \"lucide-react\";\n\ninterface DialpadProps {\n onCallInitiated?: (number: string) => void;\n initialNumber?: string;\n showKeys?: boolean;\n className?: string;\n availableExtensions?: Array<{ label: string; value: string }>;\n selectedExtension?: string;\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 { isConnected } = useConnectionStatus();\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 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 !isConnected ||\n callStatus === \"ringing\" ||\n callStatus === \"ongoing\" ||\n callStatus === \"connecting\";\n\n return (\n <div className={`dora-space-y-4 ${className}`}>\n {availableExtensions.length > 0 && (\n <div className=\"dora-gap-2 dora-bg-[#F6F7F9] dora-rounded-lg dora-flex dora-items-center dora-justify-between dora-p-2 md:dora-p-2.5 dora-mb-4\">\n <div className=\"dora-text-xs md:dora-text-sm dora-text-neutral-500 dora-font-normal dora-whitespace-nowrap\">\n Caller ID\n </div>\n <select\n className=\"dora-bg-transparent dora-text-sm dora-font-medium dora-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=\"dora-space-y-2 md:dora-space-y-3 dora-bg-[#F6F7F9] dora-p-2 md:dora-p-2.5 dora-rounded-lg\">\n <div className=\"dora-flex dora-items-center dora-gap-2 md:dora-gap-3\">\n <div className=\"dora-flex-1 dora-min-w-0 dora-flex dora-items-center dora-bg-white dora-rounded-md dora-px-3 dora-h-10 dora-border dora-border-transparent focus-within:dora-border-green-500 dora-transition-colors\">\n <User className=\"dora-text-gray-400 dora-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=\"dora-bg-transparent dora-border-none dora-outline-none dora-w-full dora-text-base dora-text-black\"\n />\n </div>\n <button\n disabled={isCallDisabled}\n onClick={handleCall}\n title=\"Place Call\"\n className=\"dora-bg-green-500 dora-text-white hover:dora-bg-green-600 dora-rounded-lg dora-h-9 md:dora-h-10 dora-w-9 md:dora-w-11 dora-flex dora-items-center dora-justify-center disabled:dora-opacity-50 disabled:dora-cursor-not-allowed dora-transition-colors\"\n >\n <Phone size={16} fill=\"currentColor\" />\n </button>\n </div>\n\n <div>\n {keysVisible ? (\n <div className=\"dora-pt-3\">\n <div className=\"dora-flex dora-items-center dora-gap-3 dora-mb-3\">\n <button\n onClick={() => setKeysVisible(false)}\n className=\"dora-px-2 md:dora-px-2.5 dora-h-8 dora-bg-white dora-rounded-full dora-shadow dora-text-neutral-500 dora-flex dora-items-center dora-gap-1.5 md:dora-gap-2 dora-text-xs md:dora-text-sm dora-font-normal hover:dora-bg-gray-50 dora-transition-colors\"\n >\n <X color=\"red\" size={16} /> Close keypad\n </button>\n </div>\n <div className=\"dora-grid dora-grid-cols-3 dora-gap-2 md:dora-gap-3\">\n {[\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n \"5\",\n \"6\",\n \"7\",\n \"8\",\n \"9\",\n \"+\",\n \"0\",\n \"del\",\n ].map((d) => (\n <button\n key={d}\n onClick={() => (d === \"del\" ? backspace() : append(d))}\n className=\"dora-h-10 md:dora-h-12 dora-bg-white dora-rounded-xl dora-shadow dora-flex dora-items-center dora-justify-center dora-text-base md:dora-text-lg dora-font-medium dora-text-slate-900 hover:dora-bg-gray-50 active:dora-bg-gray-100 dora-transition-colors\"\n aria-label={d === \"del\" ? \"Delete\" : `Dial ${d}`}\n >\n {d === \"del\" ? <Delete size={18} /> : d}\n </button>\n ))}\n </div>\n </div>\n ) : (\n <div className=\"dora-pt-2 md:dora-pt-3\">\n <button\n onClick={() => setKeysVisible(true)}\n className=\"dora-rounded-full dora-bg-[#EDEEF1] dora-h-9 md:dora-h-10 dora-flex dora-justify-center dora-items-center dora-px-3 md:dora-px-4 dora-w-full dora-text-xs md:dora-text-sm hover:dora-bg-[#E3E4E8] dora-transition-colors\"\n >\n <span className=\"dora-mr-2\">🔢</span>\n <span className=\"dora-text-xs md:dora-text-sm dora-text-neutral-500 dora-font-normal dora-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, error } = useDoraCell();\n\n return {\n call,\n hangup,\n toggleMute,\n answerCall,\n callStatus,\n callDuration,\n isMuted,\n currentCall,\n callError: error?.message,\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/dist/styles.css
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }
|
|
2
|
+
|
|
3
|
+
/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}.dora-fixed{position:fixed}.dora-absolute{position:absolute}.dora-relative{position:relative}.dora-right-0{right:0}.dora-right-2{right:.5rem}.dora-top-14{top:3.5rem}.dora-top-2{top:.5rem}.dora-z-10{z-index:10}.dora-z-50{z-index:50}.dora--mr-3{margin-right:-.75rem}.dora-mb-2{margin-bottom:.5rem}.dora-mb-3{margin-bottom:.75rem}.dora-mb-4{margin-bottom:1rem}.dora-ml-1{margin-left:.25rem}.dora-ml-1\.5{margin-left:.375rem}.dora-mr-2{margin-right:.5rem}.dora-mt-0\.5{margin-top:.125rem}.dora-mt-1\.5{margin-top:.375rem}.dora-mt-2{margin-top:.5rem}.dora-inline-block{display:inline-block}.dora-flex{display:flex}.dora-grid{display:grid}.dora-hidden{display:none}.dora-h-1\.5{height:.375rem}.dora-h-10{height:2.5rem}.dora-h-11{height:2.75rem}.dora-h-20{height:5rem}.dora-h-6{height:1.5rem}.dora-h-8{height:2rem}.dora-h-9{height:2.25rem}.dora-h-full{height:100%}.dora-w-10{width:2.5rem}.dora-w-11{width:2.75rem}.dora-w-48{width:12rem}.dora-w-8{width:2rem}.dora-w-9{width:2.25rem}.dora-w-full{width:100%}.dora-min-w-0{min-width:0}.dora-flex-1{flex:1 1 0%}.dora-shrink-0{flex-shrink:0}.dora-translate-x-0{--tw-translate-x:0px}.dora-translate-x-0,.dora-translate-x-\[110\%\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dora-translate-x-\[110\%\]{--tw-translate-x:110%}.dora-rotate-\[135deg\]{--tw-rotate:135deg}.dora-rotate-\[135deg\],.dora-transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dora-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.dora-flex-col{flex-direction:column}.dora-items-start{align-items:flex-start}.dora-items-center{align-items:center}.dora-justify-center{justify-content:center}.dora-justify-between{justify-content:space-between}.dora-gap-1{gap:.25rem}.dora-gap-1\.5{gap:.375rem}.dora-gap-2{gap:.5rem}.dora-gap-2\.5{gap:.625rem}.dora-gap-3{gap:.75rem}.dora-space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.dora-space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.dora-overflow-hidden{overflow:hidden}.dora-truncate{overflow:hidden;text-overflow:ellipsis}.dora-truncate,.dora-whitespace-nowrap{white-space:nowrap}.dora-rounded-2xl{border-radius:1rem}.dora-rounded-full{border-radius:9999px}.dora-rounded-lg{border-radius:.5rem}.dora-rounded-md{border-radius:.375rem}.dora-rounded-none{border-radius:0}.dora-rounded-xl{border-radius:.75rem}.dora-border{border-width:1px}.dora-border-t{border-top-width:1px}.dora-border-none{border-style:none}.dora-border-\[\#282828\]{--tw-border-opacity:1;border-color:rgb(40 40 40/var(--tw-border-opacity,1))}.dora-border-red-500\/30{border-color:rgba(239,68,68,.3)}.dora-border-transparent{border-color:transparent}.dora-bg-\[\#1E1E1E\]{--tw-bg-opacity:1;background-color:rgb(30 30 30/var(--tw-bg-opacity,1))}.dora-bg-\[\#272727\]{--tw-bg-opacity:1;background-color:rgb(39 39 39/var(--tw-bg-opacity,1))}.dora-bg-\[\#2A2A2A\]{--tw-bg-opacity:1;background-color:rgb(42 42 42/var(--tw-bg-opacity,1))}.dora-bg-\[\#EDEEF1\]{--tw-bg-opacity:1;background-color:rgb(237 238 241/var(--tw-bg-opacity,1))}.dora-bg-\[\#F6F7F9\]{--tw-bg-opacity:1;background-color:rgb(246 247 249/var(--tw-bg-opacity,1))}.dora-bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.dora-bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.dora-bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.dora-bg-red-900\/20{background-color:rgba(127,29,29,.2)}.dora-bg-red-900\/30{background-color:rgba(127,29,29,.3)}.dora-bg-slate-700{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity,1))}.dora-bg-transparent{background-color:transparent}.dora-bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.dora-p-2{padding:.5rem}.dora-p-4{padding:1rem}.dora-px-2{padding-left:.5rem;padding-right:.5rem}.dora-px-3{padding-left:.75rem;padding-right:.75rem}.dora-py-4{padding-bottom:1rem;padding-top:1rem}.dora-pt-2{padding-top:.5rem}.dora-pt-3{padding-top:.75rem}.dora-text-center{text-align:center}.dora-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.dora-text-base{font-size:1rem;line-height:1.5rem}.dora-text-lg{font-size:1.125rem;line-height:1.75rem}.dora-text-sm{font-size:.875rem;line-height:1.25rem}.dora-text-xl{font-size:1.25rem;line-height:1.75rem}.dora-text-xs{font-size:.75rem;line-height:1rem}.dora-font-bold{font-weight:700}.dora-font-light{font-weight:300}.dora-font-medium{font-weight:500}.dora-font-normal{font-weight:400}.dora-tracking-wide{letter-spacing:.025em}.dora-text-\[\#F99578\]{--tw-text-opacity:1;color:rgb(249 149 120/var(--tw-text-opacity,1))}.dora-text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.dora-text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.dora-text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.dora-text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.dora-text-neutral-500{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity,1))}.dora-text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.dora-text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.dora-text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.dora-text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.dora-text-slate-900{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.dora-text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.dora-shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.dora-shadow,.dora-shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.dora-shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.dora-shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.dora-outline-none{outline:2px solid transparent;outline-offset:2px}.dora-transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dora-transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dora-duration-100{transition-duration:.1s}.dora-duration-300{transition-duration:.3s}.dora-ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.focus-within\:dora-border-green-500:focus-within{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.hover\:dora-bg-\[\#333333\]:hover{--tw-bg-opacity:1;background-color:rgb(51 51 51/var(--tw-bg-opacity,1))}.hover\:dora-bg-\[\#E3E4E8\]:hover{--tw-bg-opacity:1;background-color:rgb(227 228 232/var(--tw-bg-opacity,1))}.hover\:dora-bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.hover\:dora-bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.hover\:dora-bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.hover\:dora-bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.hover\:dora-bg-slate-600:hover{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity,1))}.hover\:dora-text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.active\:dora-bg-gray-100:active{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.disabled\:dora-cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:dora-opacity-50:disabled{opacity:.5}@media (min-width:640px){.sm\:dora-w-96{width:24rem}}@media (min-width:768px){.md\:dora-right-4{right:1rem}.md\:dora-top-16{top:4rem}.md\:dora-mb-3{margin-bottom:.75rem}.md\:dora-mt-1{margin-top:.25rem}.md\:dora-mt-2{margin-top:.5rem}.md\:dora-h-10{height:2.5rem}.md\:dora-h-11{height:2.75rem}.md\:dora-h-12{height:3rem}.md\:dora-h-7{height:1.75rem}.md\:dora-h-9{height:2.25rem}.md\:dora-max-h-\[calc\(100vh-4rem\)\]{max-height:calc(100vh - 4rem)}.md\:dora-w-11{width:2.75rem}.md\:dora-w-9{width:2.25rem}.md\:dora-max-w-sm{max-width:24rem}.md\:dora-items-center{align-items:center}.md\:dora-gap-2{gap:.5rem}.md\:dora-gap-3{gap:.75rem}.md\:dora-gap-3\.5{gap:.875rem}.md\:dora-gap-4{gap:1rem}.md\:dora-space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.md\:dora-rounded-2xl{border-radius:1rem}.md\:dora-p-2\.5{padding:.625rem}.md\:dora-p-3{padding:.75rem}.md\:dora-px-2\.5{padding-left:.625rem;padding-right:.625rem}.md\:dora-px-4{padding-left:1rem;padding-right:1rem}.md\:dora-px-5{padding-left:1.25rem;padding-right:1.25rem}.md\:dora-py-6{padding-bottom:1.5rem;padding-top:1.5rem}.md\:dora-pt-3{padding-top:.75rem}.md\:dora-text-2xl{font-size:1.5rem;line-height:2rem}.md\:dora-text-lg{font-size:1.125rem;line-height:1.75rem}.md\:dora-text-sm{font-size:.875rem;line-height:1.25rem}.md\:dora-text-xl{font-size:1.25rem;line-height:1.75rem}}
|
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dora-cell/sdk-react",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "React bindings for Dora Cell SDK",
|
|
5
|
-
"main": "./dist/index.
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "React bindings for Dora Cell SDK — includes self-contained, prefixed CSS",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
8
|
+
"style": "./dist/styles.css",
|
|
8
9
|
"publishConfig": {
|
|
9
10
|
"access": "public"
|
|
10
11
|
},
|
|
@@ -12,16 +13,21 @@
|
|
|
12
13
|
".": {
|
|
13
14
|
"types": "./dist/index.d.ts",
|
|
14
15
|
"import": "./dist/index.mjs",
|
|
15
|
-
"require": "./dist/index.
|
|
16
|
-
}
|
|
16
|
+
"require": "./dist/index.js"
|
|
17
|
+
},
|
|
18
|
+
"./styles.css": "./dist/styles.css",
|
|
19
|
+
"./dist/styles.css": "./dist/styles.css"
|
|
17
20
|
},
|
|
18
21
|
"files": [
|
|
19
22
|
"dist",
|
|
20
23
|
"README.md"
|
|
21
24
|
],
|
|
22
25
|
"scripts": {
|
|
23
|
-
"build": "tsup",
|
|
26
|
+
"build:js": "tsup",
|
|
27
|
+
"build:css": "node scripts/build-css.js --minify",
|
|
28
|
+
"build": "pnpm build:js && pnpm build:css",
|
|
24
29
|
"dev": "tsup --watch",
|
|
30
|
+
"dev:css": "node scripts/build-css.js",
|
|
25
31
|
"type-check": "tsc --noEmit"
|
|
26
32
|
},
|
|
27
33
|
"keywords": [
|
|
@@ -33,15 +39,20 @@
|
|
|
33
39
|
"author": "Dora Cell",
|
|
34
40
|
"license": "MIT",
|
|
35
41
|
"peerDependencies": {
|
|
36
|
-
"@dora-cell/sdk": "^
|
|
42
|
+
"@dora-cell/sdk": "^1.0.0",
|
|
37
43
|
"react": "^18.0.0 || ^19.0.0",
|
|
38
44
|
"react-dom": "^18.0.0 || ^19.0.0"
|
|
39
45
|
},
|
|
40
46
|
"devDependencies": {
|
|
41
47
|
"@types/react": "^19.0.0",
|
|
42
48
|
"@types/react-dom": "^19.0.0",
|
|
49
|
+
"autoprefixer": "^10.4.24",
|
|
50
|
+
"cssnano": "^7.1.2",
|
|
51
|
+
"postcss": "^8.5.6",
|
|
52
|
+
"postcss-cli": "^11.0.1",
|
|
43
53
|
"react": "^19.0.0",
|
|
44
54
|
"react-dom": "^19.0.0",
|
|
55
|
+
"tailwindcss": "^3.4.19",
|
|
45
56
|
"tsup": "^8.0.0",
|
|
46
57
|
"typescript": "^5.3.0"
|
|
47
58
|
}
|