react-peer-chat 0.11.10 → 0.12.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/dist/style.css ADDED
@@ -0,0 +1,117 @@
1
+ .rpc-font {
2
+ font-family: Trebuchet MS, Lucida Sans Unicode, Lucida Grande, Lucida Sans, Arial, sans-serif;
3
+ }
4
+
5
+ .rpc-main {
6
+ align-items: center;
7
+ column-gap: .5rem;
8
+ display: flex;
9
+ }
10
+
11
+ .rpc-dialog-container, .rpc-notification {
12
+ position: relative;
13
+ }
14
+
15
+ .rpc-notification .rpc-badge {
16
+ aspect-ratio: 1;
17
+ background-color: red;
18
+ border-radius: 100%;
19
+ width: 6px;
20
+ position: absolute;
21
+ top: 0;
22
+ right: 0;
23
+ }
24
+
25
+ .rpc-dialog {
26
+ color: #fff;
27
+ background-color: #000;
28
+ border-radius: .4rem;
29
+ padding: .4rem 0 .25rem;
30
+ font-size: small;
31
+ position: absolute;
32
+ }
33
+
34
+ .rpc-position-left {
35
+ left: .6rem;
36
+ translate: -100%;
37
+ }
38
+
39
+ .rpc-position-center {
40
+ left: .5rem;
41
+ translate: -50%;
42
+ }
43
+
44
+ .rpc-position-right {
45
+ left: .3rem;
46
+ }
47
+
48
+ .rpc-hr {
49
+ border-color: #ffffffb3;
50
+ margin: .25rem 0;
51
+ }
52
+
53
+ .rpc-message-container {
54
+ height: 7rem;
55
+ margin-bottom: .25rem;
56
+ padding-inline: .5rem;
57
+ overflow-y: scroll;
58
+ }
59
+
60
+ .rpc-message-container::-webkit-scrollbar {
61
+ width: 2.5px;
62
+ }
63
+
64
+ .rpc-message-container::-webkit-scrollbar-track {
65
+ background: gray;
66
+ }
67
+
68
+ .rpc-message-container::-webkit-scrollbar-thumb {
69
+ background-color: #fff;
70
+ }
71
+
72
+ .rpc-heading {
73
+ text-align: center;
74
+ padding-inline: .5rem;
75
+ font-size: medium;
76
+ font-weight: bold;
77
+ }
78
+
79
+ .rpc-input-container {
80
+ column-gap: .25rem;
81
+ width: 15rem;
82
+ max-width: 90vw;
83
+ padding: .25rem .5rem;
84
+ display: flex;
85
+ }
86
+
87
+ .rpc-input {
88
+ color: #fff;
89
+ background-color: #000;
90
+ border: none;
91
+ border-radius: .25rem;
92
+ outline: 1px solid #fffc;
93
+ width: 100%;
94
+ padding: .3rem .25rem;
95
+ }
96
+
97
+ .rpc-input::placeholder {
98
+ color: #ffffffb3;
99
+ }
100
+
101
+ .rpc-input:focus {
102
+ outline: 2px solid #fff;
103
+ }
104
+
105
+ .rpc-button {
106
+ all: unset;
107
+ display: flex;
108
+ }
109
+
110
+ .rpc-icon-container {
111
+ align-items: center;
112
+ display: flex;
113
+ }
114
+
115
+ .rpc-invert {
116
+ filter: invert();
117
+ }
@@ -0,0 +1,59 @@
1
+ import { CSSProperties, DetailedHTMLProps, HTMLAttributes, ReactNode, SetStateAction } from "react";
2
+ import { DataConnection, MediaConnection, PeerError, PeerErrorType, PeerOptions } from "peerjs";
3
+
4
+ //#region src/types.d.ts
5
+ type Connection = DataConnection | MediaConnection;
6
+ type Listener = (value: unknown) => void;
7
+ type ChildrenOptions = {
8
+ remotePeers: RemotePeers;
9
+ messages: Message[];
10
+ sendMessage: (message: InputMessage) => void;
11
+ audio: boolean;
12
+ setAudio: (value: SetStateAction<boolean>) => void;
13
+ };
14
+ type ErrorHandler<E = Error> = (error: E) => void;
15
+ type InputMessage = {
16
+ id: string;
17
+ text: string;
18
+ };
19
+ type Message = InputMessage & {
20
+ name: string;
21
+ };
22
+ type MessageEventHandler = (message: Message) => void;
23
+ type PeerErrorHandler = ErrorHandler<PeerError<`${PeerErrorType}`>>;
24
+ type RemotePeerId = string | string[];
25
+ type ResetConnectionType = "all" | "data" | "call";
26
+ type UseChatProps = {
27
+ peerId: string;
28
+ name?: string;
29
+ remotePeerId?: RemotePeerId;
30
+ text?: boolean;
31
+ recoverChat?: boolean;
32
+ audio?: boolean;
33
+ peerOptions?: PeerOptions;
34
+ onError?: ErrorHandler;
35
+ onPeerError?: PeerErrorHandler;
36
+ onNetworkError?: PeerErrorHandler;
37
+ onMessageSent?: MessageEventHandler;
38
+ onMessageReceived?: MessageEventHandler;
39
+ };
40
+ type UseChatReturn = ChildrenOptions & {
41
+ peerId: string;
42
+ };
43
+ type VoidFunction = () => void;
44
+ type IconProps = DetailedHTMLProps<HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>;
45
+ type ChatProps = UseChatProps & {
46
+ dialogOptions?: DialogOptions;
47
+ props?: DivProps;
48
+ children?: Children;
49
+ };
50
+ type Children = (childrenOptions: ChildrenOptions) => ReactNode;
51
+ type DialogOptions = {
52
+ position?: DialogPosition;
53
+ style?: CSSProperties;
54
+ };
55
+ type DialogPosition = "left" | "center" | "right";
56
+ type DivProps = DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>;
57
+ type RemotePeers = Record<string, string>;
58
+ //#endregion
59
+ export { RemotePeers as _, DialogOptions as a, UseChatReturn as b, ErrorHandler as c, Listener as d, Message as f, RemotePeerId as g, PeerOptions as h, Connection as i, IconProps as l, PeerErrorHandler as m, Children as n, DialogPosition as o, MessageEventHandler as p, ChildrenOptions as r, DivProps as s, ChatProps as t, InputMessage as u, ResetConnectionType as v, VoidFunction as x, UseChatProps as y };
@@ -0,0 +1,2 @@
1
+ import { _ as RemotePeers, a as DialogOptions, b as UseChatReturn, c as ErrorHandler, d as Listener, f as Message, g as RemotePeerId, h as PeerOptions, i as Connection, l as IconProps, m as PeerErrorHandler, n as Children, o as DialogPosition, p as MessageEventHandler, r as ChildrenOptions, s as DivProps, t as ChatProps, u as InputMessage, v as ResetConnectionType, x as VoidFunction, y as UseChatProps } from "./types-CwAnkJpd.mjs";
2
+ export { ChatProps, Children, ChildrenOptions, Connection, DialogOptions, DialogPosition, DivProps, ErrorHandler, IconProps, InputMessage, Listener, Message, MessageEventHandler, PeerErrorHandler, PeerOptions, RemotePeerId, RemotePeers, ResetConnectionType, UseChatProps, UseChatReturn, VoidFunction };
package/dist/types.mjs ADDED
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-peer-chat",
3
- "version": "0.11.10",
3
+ "version": "0.12.0",
4
4
  "description": "An easy to use react component for impleting peer-to-peer chatting.",
5
5
  "license": "MIT",
6
6
  "author": "Sahil Aggarwal <aggarwalsahil2004@gmail.com>",
@@ -15,18 +15,18 @@
15
15
  },
16
16
  "type": "module",
17
17
  "exports": {
18
- ".": "./dist/index.js",
19
- "./icons": "./dist/icons.js",
20
- "./types": "./dist/types.js"
18
+ ".": "./dist/index.mjs",
19
+ "./icons": "./dist/icons.mjs",
20
+ "./style.css": "./dist/style.css",
21
+ "./types": "./dist/types.mjs"
21
22
  },
22
- "main": "dist/index.js",
23
23
  "files": [
24
24
  "dist"
25
25
  ],
26
26
  "sideEffects": [
27
27
  "**/*.css"
28
28
  ],
29
- "types": "dist/index.d.ts",
29
+ "types": "./dist/index.d.mts",
30
30
  "dependencies": {
31
31
  "peerjs": "^1.5.5"
32
32
  },
@@ -35,11 +35,12 @@
35
35
  "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0"
36
36
  },
37
37
  "devDependencies": {
38
- "@release-it/conventional-changelog": "^10.0.4",
39
- "@types/react": "^19.2.9",
38
+ "@release-it/conventional-changelog": "^10.0.6",
39
+ "@tsdown/css": "^0.21.2",
40
+ "@types/react": "^19.2.14",
40
41
  "prettier-package-json": "^2.8.0",
41
42
  "release-it": "^19.2.4",
42
- "tsup": "^8.5.1",
43
+ "tsdown": "^0.21.2",
43
44
  "typescript": "^5.9.3"
44
45
  },
45
46
  "keywords": [
@@ -60,8 +61,8 @@
60
61
  ],
61
62
  "scripts": {
62
63
  "build": "pnpm i && pnpm run compile",
63
- "compile": "tsup",
64
- "dev": "tsup --watch",
64
+ "compile": "tsdown",
65
+ "dev": "tsdown --watch",
65
66
  "dry-release": "release-it --ci --dry-run",
66
67
  "prettier": "prettier-package-json --write package.json",
67
68
  "pub": "pnpm login && pnpm publish",
@@ -1,81 +0,0 @@
1
- import { useChat } from './chunk-R74TCSLB.js';
2
- import { BiSolidMessageX, BiSolidMessageDetail, GrSend, BsFillMicFill, BsFillMicMuteFill } from './chunk-QIPTWGEX.js';
3
- import { __objRest, __spreadValues } from './chunk-FZ4QVG4I.js';
4
- import React, { useRef, useState, useEffect } from 'react';
5
-
6
- // src/styles.css
7
- function injectStyle(css) {
8
- if (typeof document === "undefined") return;
9
- const head = document.head || document.getElementsByTagName("head")[0];
10
- const style = document.createElement("style");
11
- style.type = "text/css";
12
- if (head.firstChild) {
13
- head.insertBefore(style, head.firstChild);
14
- } else {
15
- head.appendChild(style);
16
- }
17
- if (style.styleSheet) {
18
- style.styleSheet.cssText = css;
19
- } else {
20
- style.appendChild(document.createTextNode(css));
21
- }
22
- }
23
- injectStyle('.rpc-font {\n font-family:\n "Trebuchet MS",\n "Lucida Sans Unicode",\n "Lucida Grande",\n "Lucida Sans",\n Arial,\n sans-serif;\n}\n.rpc-main {\n display: flex;\n align-items: center;\n column-gap: 0.5rem;\n}\n.rpc-dialog-container {\n position: relative;\n}\n.rpc-notification {\n position: relative;\n}\n.rpc-notification .rpc-badge {\n background-color: red;\n position: absolute;\n top: 0;\n right: 0;\n width: 6px;\n aspect-ratio: 1;\n border-radius: 100%;\n}\n.rpc-dialog {\n position: absolute;\n background-color: black;\n color: white;\n padding: 0.4rem 0 0.25rem 0;\n border-radius: 0.4rem;\n font-size: small;\n}\n.rpc-position-left {\n left: 0.6rem;\n translate: -100%;\n}\n.rpc-position-center {\n left: 0.5rem;\n translate: -50%;\n}\n.rpc-position-right {\n left: 0.3rem;\n}\n.rpc-hr {\n margin: 0.25rem 0;\n border-color: rgba(255, 255, 255, 0.7);\n}\n.rpc-message-container {\n height: 7rem;\n overflow-y: scroll;\n padding-inline: 0.5rem;\n margin-bottom: 0.25rem;\n}\n.rpc-message-container::-webkit-scrollbar {\n width: 2.5px;\n}\n.rpc-message-container::-webkit-scrollbar-track {\n background: gray;\n}\n.rpc-message-container::-webkit-scrollbar-thumb {\n background-color: white;\n}\n.rpc-heading {\n text-align: center;\n font-size: medium;\n font-weight: bold;\n padding-inline: 0.5rem;\n}\n.rpc-input-container {\n display: flex;\n width: 15rem;\n max-width: 90vw;\n column-gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n}\n.rpc-input {\n color: white;\n width: 100%;\n background-color: black;\n border: none;\n outline: 1px solid rgba(255, 255, 255, 0.8);\n border-radius: 0.25rem;\n padding: 0.3rem 0.25rem;\n}\n.rpc-input::placeholder {\n color: rgba(255, 255, 255, 0.7);\n}\n.rpc-input:focus {\n outline: 2px solid white;\n}\n.rpc-button {\n all: unset;\n display: flex;\n}\n.rpc-icon-container {\n display: flex;\n align-items: center;\n}\n.rpc-invert {\n filter: invert(100%);\n}\n');
24
-
25
- // src/components.tsx
26
- function Chat(_a) {
27
- var _b = _a, { text = true, audio = true, onMessageReceived, dialogOptions, props = {}, children } = _b, hookProps = __objRest(_b, ["text", "audio", "onMessageReceived", "dialogOptions", "props", "children"]);
28
- const _a2 = useChat(__spreadValues({
29
- text,
30
- audio,
31
- onMessageReceived: receiveMessageHandler
32
- }, hookProps)), { peerId } = _a2, childrenOptions = __objRest(_a2, ["peerId"]);
33
- const { remotePeers, messages, sendMessage, audio: audioEnabled, setAudio } = childrenOptions;
34
- const containerRef = useRef(null);
35
- const [dialog, setDialog] = useState(false);
36
- const dialogRef = useRef(null);
37
- const inputRef = useRef(null);
38
- const [notification, setNotification] = useState(false);
39
- function receiveMessageHandler(message) {
40
- var _a3;
41
- if (!((_a3 = dialogRef.current) == null ? void 0 : _a3.open)) setNotification(true);
42
- onMessageReceived == null ? void 0 : onMessageReceived(message);
43
- }
44
- useEffect(() => {
45
- var _a3, _b2;
46
- if (dialog) (_a3 = dialogRef.current) == null ? void 0 : _a3.show();
47
- else (_b2 = dialogRef.current) == null ? void 0 : _b2.close();
48
- }, [dialog]);
49
- useEffect(() => {
50
- const container = containerRef.current;
51
- if (container) container.scrollTop = container.scrollHeight;
52
- }, [dialog, remotePeers, messages]);
53
- return /* @__PURE__ */ React.createElement("div", __spreadValues({ className: "rpc-main rpc-font" }, props), typeof children === "function" ? children(childrenOptions) : /* @__PURE__ */ React.createElement(React.Fragment, null, text && /* @__PURE__ */ React.createElement("div", { className: "rpc-dialog-container" }, dialog ? /* @__PURE__ */ React.createElement(BiSolidMessageX, { title: "Close chat", onClick: () => setDialog(false) }) : /* @__PURE__ */ React.createElement("div", { className: "rpc-notification" }, /* @__PURE__ */ React.createElement(
54
- BiSolidMessageDetail,
55
- {
56
- title: "Open chat",
57
- onClick: () => {
58
- setNotification(false);
59
- setDialog(true);
60
- }
61
- }
62
- ), notification && /* @__PURE__ */ React.createElement("span", { className: "rpc-badge" })), /* @__PURE__ */ React.createElement("dialog", { ref: dialogRef, className: `${dialog ? "rpc-dialog" : ""} rpc-position-${(dialogOptions == null ? void 0 : dialogOptions.position) || "center"}`, style: dialogOptions == null ? void 0 : dialogOptions.style }, /* @__PURE__ */ React.createElement("div", { className: "rpc-heading" }, "Chat"), /* @__PURE__ */ React.createElement("hr", { className: "rpc-hr" }), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("div", { ref: containerRef, className: "rpc-message-container" }, messages.map(({ id, name, text: text2 }, i) => /* @__PURE__ */ React.createElement("div", { key: i }, /* @__PURE__ */ React.createElement("strong", null, id === peerId ? "You" : name, ": "), /* @__PURE__ */ React.createElement("span", null, text2)))), /* @__PURE__ */ React.createElement("hr", { className: "rpc-hr" }), /* @__PURE__ */ React.createElement(
63
- "form",
64
- {
65
- className: "rpc-input-container",
66
- onSubmit: (e) => {
67
- var _a3;
68
- e.preventDefault();
69
- const text2 = (_a3 = inputRef.current) == null ? void 0 : _a3.value;
70
- if (text2) {
71
- inputRef.current.value = "";
72
- sendMessage({ id: peerId, text: text2 });
73
- }
74
- }
75
- },
76
- /* @__PURE__ */ React.createElement("input", { ref: inputRef, className: "rpc-input rpc-font", placeholder: "Enter a message" }),
77
- /* @__PURE__ */ React.createElement("button", { type: "submit", className: "rpc-button" }, /* @__PURE__ */ React.createElement(GrSend, { title: "Send message" }))
78
- )))), audio && /* @__PURE__ */ React.createElement("button", { className: "rpc-button", onClick: () => setAudio(!audioEnabled) }, audioEnabled ? /* @__PURE__ */ React.createElement(BsFillMicFill, { title: "Turn mic off" }) : /* @__PURE__ */ React.createElement(BsFillMicMuteFill, { title: "Turn mic on" }))));
79
- }
80
-
81
- export { Chat };
@@ -1,53 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __defProps = Object.defineProperties;
3
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
- var __spreadValues = (a, b) => {
9
- for (var prop in b || (b = {}))
10
- if (__hasOwnProp.call(b, prop))
11
- __defNormalProp(a, prop, b[prop]);
12
- if (__getOwnPropSymbols)
13
- for (var prop of __getOwnPropSymbols(b)) {
14
- if (__propIsEnum.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- }
17
- return a;
18
- };
19
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
- var __objRest = (source, exclude) => {
21
- var target = {};
22
- for (var prop in source)
23
- if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
24
- target[prop] = source[prop];
25
- if (source != null && __getOwnPropSymbols)
26
- for (var prop of __getOwnPropSymbols(source)) {
27
- if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
28
- target[prop] = source[prop];
29
- }
30
- return target;
31
- };
32
- var __async = (__this, __arguments, generator) => {
33
- return new Promise((resolve, reject) => {
34
- var fulfilled = (value) => {
35
- try {
36
- step(generator.next(value));
37
- } catch (e) {
38
- reject(e);
39
- }
40
- };
41
- var rejected = (value) => {
42
- try {
43
- step(generator.throw(value));
44
- } catch (e) {
45
- reject(e);
46
- }
47
- };
48
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
49
- step((generator = generator.apply(__this, __arguments)).next());
50
- });
51
- };
52
-
53
- export { __async, __objRest, __spreadProps, __spreadValues };
@@ -1,46 +0,0 @@
1
- // src/lib/storage.ts
2
- var listeners = /* @__PURE__ */ new Map();
3
- function clearChat() {
4
- removeStorage("rpc-remote-peer", false);
5
- removeStorage("rpc-messages", false);
6
- }
7
- var getStorageInstance = (local) => local ? localStorage : sessionStorage;
8
- var getNamespacedKey = (key, local) => `${local ? "local" : "session"}:${key}`;
9
- function getStorage(key, local, fallbackValue) {
10
- if (typeof window === "undefined") return fallbackValue;
11
- const value = getStorageInstance(local).getItem(key);
12
- if (value) {
13
- try {
14
- return JSON.parse(value);
15
- } catch (e) {
16
- removeStorage(key, local);
17
- }
18
- }
19
- if (fallbackValue !== void 0) setStorage(key, fallbackValue, local);
20
- return fallbackValue;
21
- }
22
- function publish(key, local, value) {
23
- const callbacks = listeners.get(getNamespacedKey(key, local));
24
- if (callbacks) callbacks.forEach((callback) => callback(value));
25
- }
26
- function removeStorage(key, local) {
27
- getStorageInstance(local).removeItem(key);
28
- publish(key, local);
29
- }
30
- function setStorage(key, value, local) {
31
- if (typeof value === "function") value = value(getStorage(key, local));
32
- getStorageInstance(local).setItem(key, JSON.stringify(value));
33
- publish(key, local, value);
34
- }
35
- function subscribeToStorage(key, local, callback) {
36
- key = getNamespacedKey(key, local);
37
- if (!listeners.has(key)) listeners.set(key, /* @__PURE__ */ new Set());
38
- const set = listeners.get(key);
39
- set.add(callback);
40
- return () => {
41
- set.delete(callback);
42
- if (set.size === 0) listeners.delete(key);
43
- };
44
- }
45
-
46
- export { clearChat, getStorage, removeStorage, setStorage, subscribeToStorage };
@@ -1,28 +0,0 @@
1
- import { __spreadValues } from './chunk-FZ4QVG4I.js';
2
- import React from 'react';
3
-
4
- function BiSolidMessageDetail(props) {
5
- return /* @__PURE__ */ React.createElement("span", __spreadValues({ className: "rpc-icon-container" }, props), /* @__PURE__ */ React.createElement("svg", { viewBox: "0 0 24 24", width: "1.25rem", height: "1.25rem" }, /* @__PURE__ */ React.createElement("path", { d: "M20 2H4c-1.103 0-2 .894-2 1.992v12.016C2 17.106 2.897 18 4 18h3v4l6.351-4H20c1.103 0 2-.894 2-1.992V3.992A1.998 1.998 0 0 0 20 2zm-6 11H7v-2h7v2zm3-4H7V7h10v2z" })));
6
- }
7
- function BiSolidMessageX(props) {
8
- return /* @__PURE__ */ React.createElement("span", __spreadValues({ className: "rpc-icon-container" }, props), /* @__PURE__ */ React.createElement("svg", { viewBox: "0 0 24 24", width: "1.25rem", height: "1.25rem" }, /* @__PURE__ */ React.createElement("path", { d: "M20 2H4c-1.103 0-2 .894-2 1.992v12.016C2 17.106 2.897 18 4 18h3v4l6.351-4H20c1.103 0 2-.894 2-1.992V3.992A1.998 1.998 0 0 0 20 2zm-3.293 11.293-1.414 1.414L12 11.414l-3.293 3.293-1.414-1.414L10.586 10 7.293 6.707l1.414-1.414L12 8.586l3.293-3.293 1.414 1.414L13.414 10l3.293 3.293z" })));
9
- }
10
- function GrSend(props) {
11
- return /* @__PURE__ */ React.createElement("span", __spreadValues({ className: "rpc-icon-container" }, props), /* @__PURE__ */ React.createElement("svg", { viewBox: "0 0 24 24", width: "1.25rem", height: "1.25rem", className: "rpc-invert" }, /* @__PURE__ */ React.createElement(
12
- "path",
13
- {
14
- fill: "none",
15
- stroke: "#000",
16
- strokeWidth: 2,
17
- d: "M22,3 L2,11 L20.5,19 L22,3 Z M10,20.5 L13,16 M15.5,9.5 L9,14 L9.85884537,20.0119176 C9.93680292,20.5576204 10.0751625,20.5490248 10.1651297,20.009222 L11,15 L15.5,9.5 Z"
18
- }
19
- )));
20
- }
21
- function BsFillMicFill(props) {
22
- return /* @__PURE__ */ React.createElement("span", __spreadValues({ className: "rpc-icon-container" }, props), /* @__PURE__ */ React.createElement("svg", { viewBox: "0 0 16 16", fill: "currentColor", width: "1.25rem", height: "1.25rem" }, /* @__PURE__ */ React.createElement("path", { d: "M5 3a3 3 0 0 1 6 0v5a3 3 0 0 1-6 0V3z" }), /* @__PURE__ */ React.createElement("path", { d: "M3.5 6.5A.5.5 0 0 1 4 7v1a4 4 0 0 0 8 0V7a.5.5 0 0 1 1 0v1a5 5 0 0 1-4.5 4.975V15h3a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1h3v-2.025A5 5 0 0 1 3 8V7a.5.5 0 0 1 .5-.5z" })));
23
- }
24
- function BsFillMicMuteFill(props) {
25
- return /* @__PURE__ */ React.createElement("span", __spreadValues({ className: "rpc-icon-container" }, props), /* @__PURE__ */ React.createElement("svg", { viewBox: "0 0 16 16", fill: "currentColor", width: "1.25rem", height: "1.25rem" }, /* @__PURE__ */ React.createElement("path", { d: "M13 8c0 .564-.094 1.107-.266 1.613l-.814-.814A4.02 4.02 0 0 0 12 8V7a.5.5 0 0 1 1 0v1zm-5 4c.818 0 1.578-.245 2.212-.667l.718.719a4.973 4.973 0 0 1-2.43.923V15h3a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1h3v-2.025A5 5 0 0 1 3 8V7a.5.5 0 0 1 1 0v1a4 4 0 0 0 4 4zm3-9v4.879L5.158 2.037A3.001 3.001 0 0 1 11 3z" }), /* @__PURE__ */ React.createElement("path", { d: "M9.486 10.607 5 6.12V8a3 3 0 0 0 4.486 2.607zm-7.84-9.253 12 12 .708-.708-12-12-.708.708z" })));
26
- }
27
-
28
- export { BiSolidMessageDetail, BiSolidMessageX, BsFillMicFill, BsFillMicMuteFill, GrSend };