@salla.sa/ui-ai-kit-core 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.
Files changed (147) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/ai-card.cjs.entry.js +25 -0
  3. package/dist/cjs/ai-chat-container.cjs.entry.js +138 -0
  4. package/dist/cjs/ai-chat-header.cjs.entry.js +79 -0
  5. package/dist/cjs/ai-chat-message.cjs.entry.js +164 -0
  6. package/dist/cjs/ai-icon.cjs.entry.js +25 -0
  7. package/dist/cjs/ai-link.cjs.entry.js +34 -0
  8. package/dist/cjs/ai-loading.cjs.entry.js +77 -0
  9. package/dist/cjs/ai-message-input.cjs.entry.js +65 -0
  10. package/dist/cjs/ai-rating.cjs.entry.js +57 -0
  11. package/dist/cjs/ai-suggestion.cjs.entry.js +31 -0
  12. package/dist/cjs/ai-voice-input.cjs.entry.js +233 -0
  13. package/dist/cjs/icon-registry-dmfLA-Dj.js +82 -0
  14. package/dist/cjs/index-DLJcLHFH.js +1622 -0
  15. package/dist/cjs/index.cjs.js +7 -0
  16. package/dist/cjs/loader.cjs.js +12 -0
  17. package/dist/cjs/ui-ai-kit.cjs.js +24 -0
  18. package/dist/collection/collection-manifest.json +23 -0
  19. package/dist/collection/components/ai-card/ai-card.css +40 -0
  20. package/dist/collection/components/ai-card/ai-card.js +70 -0
  21. package/dist/collection/components/ai-card/ai-card.stories.js +52 -0
  22. package/dist/collection/components/ai-chat-container/ai-chat-container.css +137 -0
  23. package/dist/collection/components/ai-chat-container/ai-chat-container.js +270 -0
  24. package/dist/collection/components/ai-chat-container/ai-chat-container.stories.js +160 -0
  25. package/dist/collection/components/ai-chat-header/ai-chat-header.css +186 -0
  26. package/dist/collection/components/ai-chat-header/ai-chat-header.js +311 -0
  27. package/dist/collection/components/ai-chat-header/ai-chat-header.stories.js +138 -0
  28. package/dist/collection/components/ai-chat-message/ai-chat-message.css +304 -0
  29. package/dist/collection/components/ai-chat-message/ai-chat-message.js +379 -0
  30. package/dist/collection/components/ai-chat-message/ai-chat-message.stories.js +164 -0
  31. package/dist/collection/components/ai-icon/ai-icon.css +9 -0
  32. package/dist/collection/components/ai-icon/ai-icon.js +76 -0
  33. package/dist/collection/components/ai-link/ai-link.css +62 -0
  34. package/dist/collection/components/ai-link/ai-link.js +119 -0
  35. package/dist/collection/components/ai-link/ai-link.stories.js +79 -0
  36. package/dist/collection/components/ai-loading/ai-loading.css +202 -0
  37. package/dist/collection/components/ai-loading/ai-loading.js +244 -0
  38. package/dist/collection/components/ai-loading/ai-loading.stories.js +145 -0
  39. package/dist/collection/components/ai-message-input/ai-message-input.css +175 -0
  40. package/dist/collection/components/ai-message-input/ai-message-input.js +192 -0
  41. package/dist/collection/components/ai-message-input/ai-message-input.stories.js +125 -0
  42. package/dist/collection/components/ai-rating/ai-rating.css +145 -0
  43. package/dist/collection/components/ai-rating/ai-rating.js +176 -0
  44. package/dist/collection/components/ai-rating/ai-rating.stories.js +78 -0
  45. package/dist/collection/components/ai-suggestion/ai-suggestion.css +69 -0
  46. package/dist/collection/components/ai-suggestion/ai-suggestion.js +93 -0
  47. package/dist/collection/components/ai-suggestion/ai-suggestion.stories.js +62 -0
  48. package/dist/collection/components/ai-voice-input/ai-voice-input.css +136 -0
  49. package/dist/collection/components/ai-voice-input/ai-voice-input.js +341 -0
  50. package/dist/collection/components/ai-voice-input/ai-voice-input.stories.js +118 -0
  51. package/dist/collection/index.js +10 -0
  52. package/dist/collection/utils/icon-registry.js +78 -0
  53. package/dist/collection/utils/utils.js +3 -0
  54. package/dist/components/ai-card.d.ts +11 -0
  55. package/dist/components/ai-card.js +1 -0
  56. package/dist/components/ai-chat-container.d.ts +11 -0
  57. package/dist/components/ai-chat-container.js +1 -0
  58. package/dist/components/ai-chat-header.d.ts +11 -0
  59. package/dist/components/ai-chat-header.js +1 -0
  60. package/dist/components/ai-chat-message.d.ts +11 -0
  61. package/dist/components/ai-chat-message.js +1 -0
  62. package/dist/components/ai-icon.d.ts +11 -0
  63. package/dist/components/ai-icon.js +1 -0
  64. package/dist/components/ai-link.d.ts +11 -0
  65. package/dist/components/ai-link.js +1 -0
  66. package/dist/components/ai-loading.d.ts +11 -0
  67. package/dist/components/ai-loading.js +1 -0
  68. package/dist/components/ai-message-input.d.ts +11 -0
  69. package/dist/components/ai-message-input.js +1 -0
  70. package/dist/components/ai-rating.d.ts +11 -0
  71. package/dist/components/ai-rating.js +1 -0
  72. package/dist/components/ai-suggestion.d.ts +11 -0
  73. package/dist/components/ai-suggestion.js +1 -0
  74. package/dist/components/ai-voice-input.d.ts +11 -0
  75. package/dist/components/ai-voice-input.js +1 -0
  76. package/dist/components/index.d.ts +35 -0
  77. package/dist/components/index.js +1 -0
  78. package/dist/components/p-CWjXxYJI.js +1 -0
  79. package/dist/components/p-CY6emva2.js +1 -0
  80. package/dist/components/p-DYv5ef4M.js +1 -0
  81. package/dist/esm/ai-card.entry.js +23 -0
  82. package/dist/esm/ai-chat-container.entry.js +136 -0
  83. package/dist/esm/ai-chat-header.entry.js +77 -0
  84. package/dist/esm/ai-chat-message.entry.js +162 -0
  85. package/dist/esm/ai-icon.entry.js +23 -0
  86. package/dist/esm/ai-link.entry.js +32 -0
  87. package/dist/esm/ai-loading.entry.js +75 -0
  88. package/dist/esm/ai-message-input.entry.js +63 -0
  89. package/dist/esm/ai-rating.entry.js +55 -0
  90. package/dist/esm/ai-suggestion.entry.js +29 -0
  91. package/dist/esm/ai-voice-input.entry.js +231 -0
  92. package/dist/esm/icon-registry-DYv5ef4M.js +80 -0
  93. package/dist/esm/index-7hrZ8FOQ.js +1612 -0
  94. package/dist/esm/index.js +5 -0
  95. package/dist/esm/loader.js +10 -0
  96. package/dist/esm/ui-ai-kit.js +20 -0
  97. package/dist/index.cjs.js +1 -0
  98. package/dist/index.js +1 -0
  99. package/dist/types/components/ai-card/ai-card.d.ts +7 -0
  100. package/dist/types/components/ai-card/ai-card.stories.d.ts +7 -0
  101. package/dist/types/components/ai-chat-container/ai-chat-container.d.ts +28 -0
  102. package/dist/types/components/ai-chat-container/ai-chat-container.stories.d.ts +7 -0
  103. package/dist/types/components/ai-chat-header/ai-chat-header.d.ts +38 -0
  104. package/dist/types/components/ai-chat-header/ai-chat-header.stories.d.ts +8 -0
  105. package/dist/types/components/ai-chat-message/ai-chat-message.d.ts +27 -0
  106. package/dist/types/components/ai-chat-message/ai-chat-message.stories.d.ts +10 -0
  107. package/dist/types/components/ai-icon/ai-icon.d.ts +8 -0
  108. package/dist/types/components/ai-link/ai-link.d.ts +12 -0
  109. package/dist/types/components/ai-link/ai-link.stories.d.ts +8 -0
  110. package/dist/types/components/ai-loading/ai-loading.d.ts +33 -0
  111. package/dist/types/components/ai-loading/ai-loading.stories.d.ts +10 -0
  112. package/dist/types/components/ai-message-input/ai-message-input.d.ts +22 -0
  113. package/dist/types/components/ai-message-input/ai-message-input.stories.d.ts +13 -0
  114. package/dist/types/components/ai-rating/ai-rating.d.ts +17 -0
  115. package/dist/types/components/ai-rating/ai-rating.stories.d.ts +8 -0
  116. package/dist/types/components/ai-suggestion/ai-suggestion.d.ts +10 -0
  117. package/dist/types/components/ai-suggestion/ai-suggestion.stories.d.ts +8 -0
  118. package/dist/types/components/ai-voice-input/ai-voice-input.d.ts +43 -0
  119. package/dist/types/components/ai-voice-input/ai-voice-input.stories.d.ts +9 -0
  120. package/dist/types/components.d.ts +860 -0
  121. package/dist/types/index.d.ts +11 -0
  122. package/dist/types/stencil-public-runtime.d.ts +1860 -0
  123. package/dist/types/utils/icon-registry.d.ts +5 -0
  124. package/dist/types/utils/utils.d.ts +1 -0
  125. package/dist/ui-ai-kit/index.esm.js +1 -0
  126. package/dist/ui-ai-kit/p-11facfad.entry.js +1 -0
  127. package/dist/ui-ai-kit/p-128a2ed4.entry.js +1 -0
  128. package/dist/ui-ai-kit/p-227bdb8f.entry.js +1 -0
  129. package/dist/ui-ai-kit/p-455daa17.entry.js +1 -0
  130. package/dist/ui-ai-kit/p-56163e8c.entry.js +1 -0
  131. package/dist/ui-ai-kit/p-6d21d0fd.entry.js +1 -0
  132. package/dist/ui-ai-kit/p-6ddcd77b.entry.js +1 -0
  133. package/dist/ui-ai-kit/p-7hrZ8FOQ.js +2 -0
  134. package/dist/ui-ai-kit/p-8e90143e.entry.js +1 -0
  135. package/dist/ui-ai-kit/p-9938c277.entry.js +1 -0
  136. package/dist/ui-ai-kit/p-DYv5ef4M.js +1 -0
  137. package/dist/ui-ai-kit/p-dc5b4a7f.entry.js +1 -0
  138. package/dist/ui-ai-kit/p-fb1702de.entry.js +1 -0
  139. package/dist/ui-ai-kit/ui-ai-kit.css +1 -0
  140. package/dist/ui-ai-kit/ui-ai-kit.esm.js +1 -0
  141. package/loader/cdn.js +1 -0
  142. package/loader/index.cjs.js +1 -0
  143. package/loader/index.d.ts +24 -0
  144. package/loader/index.es2017.js +1 -0
  145. package/loader/index.js +2 -0
  146. package/package.json +77 -0
  147. package/readme.md +111 -0
@@ -0,0 +1,341 @@
1
+ import { Host, h } from "@stencil/core";
2
+ const MAX_RECORDING_TIME = 60; // seconds
3
+ export class VoiceInput {
4
+ /** Whether the voice input is disabled */
5
+ disabled = false;
6
+ /** Whether to show the waveform animation */
7
+ showWaveform = true;
8
+ /** Whether to auto-start recording on mount */
9
+ autoStart = false;
10
+ /** Internal state */
11
+ state = 'idle';
12
+ error = null;
13
+ recordingDuration = 0;
14
+ /** Event emitted when audio blob is ready */
15
+ audioRecorded;
16
+ /** Event emitted when recording is canceled */
17
+ recordingCancel;
18
+ // Private refs
19
+ streamRef = null;
20
+ audioContextRef = null;
21
+ analyserRef = null;
22
+ mediaRecorderRef = null;
23
+ audioChunks = [];
24
+ recordingStartTime = 0;
25
+ recordingTimer = null;
26
+ maxTimeoutRef = null;
27
+ canvasRef;
28
+ animationFrameId = 0;
29
+ prevHeights = [];
30
+ componentDidLoad() {
31
+ if (this.autoStart) {
32
+ this.startRecording();
33
+ }
34
+ }
35
+ disconnectedCallback() {
36
+ this.cleanup();
37
+ }
38
+ cleanup = () => {
39
+ if (this.recordingTimer) {
40
+ clearInterval(this.recordingTimer);
41
+ this.recordingTimer = null;
42
+ }
43
+ if (this.maxTimeoutRef) {
44
+ clearTimeout(this.maxTimeoutRef);
45
+ this.maxTimeoutRef = null;
46
+ }
47
+ if (this.animationFrameId) {
48
+ cancelAnimationFrame(this.animationFrameId);
49
+ this.animationFrameId = 0;
50
+ }
51
+ if (this.mediaRecorderRef && this.mediaRecorderRef.state !== 'inactive') {
52
+ this.mediaRecorderRef.stop();
53
+ this.mediaRecorderRef = null;
54
+ }
55
+ if (this.audioContextRef) {
56
+ this.audioContextRef.close();
57
+ this.audioContextRef = null;
58
+ }
59
+ if (this.analyserRef) {
60
+ this.analyserRef = null;
61
+ }
62
+ if (this.streamRef) {
63
+ this.streamRef.getTracks().forEach(track => track.stop());
64
+ this.streamRef = null;
65
+ }
66
+ };
67
+ startRecording = async () => {
68
+ try {
69
+ this.error = null;
70
+ this.audioChunks = [];
71
+ // Get microphone access
72
+ const stream = await navigator.mediaDevices.getUserMedia({
73
+ audio: {
74
+ echoCancellation: true,
75
+ noiseSuppression: true,
76
+ autoGainControl: true,
77
+ },
78
+ });
79
+ this.streamRef = stream;
80
+ // Create audio context for waveform
81
+ const audioContext = new AudioContext();
82
+ this.audioContextRef = audioContext;
83
+ // Setup analyser for waveform
84
+ if (this.showWaveform) {
85
+ const analyser = audioContext.createAnalyser();
86
+ analyser.fftSize = 256;
87
+ analyser.smoothingTimeConstant = 0.8;
88
+ this.analyserRef = analyser;
89
+ const source = audioContext.createMediaStreamSource(stream);
90
+ source.connect(analyser);
91
+ }
92
+ // Setup MediaRecorder
93
+ this.setupMediaRecorder(stream);
94
+ // Start recording
95
+ this.recordingStartTime = Date.now();
96
+ this.recordingDuration = 0;
97
+ this.prevHeights = [];
98
+ this.state = 'recording';
99
+ // Start waveform animation after state change and canvas is rendered
100
+ if (this.showWaveform) {
101
+ requestAnimationFrame(() => {
102
+ this.drawWaveform();
103
+ });
104
+ }
105
+ // Start timer
106
+ this.recordingTimer = window.setInterval(() => {
107
+ this.recordingDuration = Math.floor((Date.now() - this.recordingStartTime) / 1000);
108
+ }, 100);
109
+ // Auto-stop after max time
110
+ this.maxTimeoutRef = window.setTimeout(() => {
111
+ this.stopRecording();
112
+ }, MAX_RECORDING_TIME * 1000);
113
+ }
114
+ catch (err) {
115
+ console.error('Error starting recording:', err);
116
+ this.error = 'Microphone access denied';
117
+ this.state = 'idle';
118
+ }
119
+ };
120
+ setupMediaRecorder = (stream) => {
121
+ const mediaRecorder = new MediaRecorder(stream, {
122
+ mimeType: 'audio/webm',
123
+ });
124
+ mediaRecorder.ondataavailable = e => {
125
+ if (e.data.size > 0) {
126
+ this.audioChunks.push(e.data);
127
+ }
128
+ };
129
+ mediaRecorder.onstop = () => {
130
+ const audioBlob = new Blob(this.audioChunks, { type: 'audio/webm' });
131
+ this.audioRecorded.emit({ blob: audioBlob, duration: this.recordingDuration });
132
+ };
133
+ this.mediaRecorderRef = mediaRecorder;
134
+ mediaRecorder.start(100); // Collect data every 100ms
135
+ };
136
+ stopRecording = () => {
137
+ if (this.recordingTimer) {
138
+ clearInterval(this.recordingTimer);
139
+ this.recordingTimer = null;
140
+ }
141
+ if (this.maxTimeoutRef) {
142
+ clearTimeout(this.maxTimeoutRef);
143
+ this.maxTimeoutRef = null;
144
+ }
145
+ // Stop media recorder and cleanup
146
+ this.cleanup();
147
+ this.state = 'idle';
148
+ };
149
+ cancelRecording = () => {
150
+ // Don't emit audio when canceling
151
+ if (this.mediaRecorderRef && this.mediaRecorderRef.state !== 'inactive') {
152
+ this.mediaRecorderRef.ondataavailable = null;
153
+ this.mediaRecorderRef.onstop = null;
154
+ }
155
+ this.cleanup();
156
+ this.state = 'idle';
157
+ this.recordingCancel.emit();
158
+ };
159
+ drawWaveform = () => {
160
+ if (!this.canvasRef || !this.analyserRef)
161
+ return;
162
+ const canvas = this.canvasRef;
163
+ const ctx = canvas.getContext('2d');
164
+ if (!ctx)
165
+ return;
166
+ const barCount = 100;
167
+ const barWidth = 1;
168
+ const gap = 2;
169
+ const bufferLength = this.analyserRef.frequencyBinCount;
170
+ const dataArray = new Uint8Array(bufferLength);
171
+ const binsPerBar = Math.max(1, Math.floor(bufferLength / barCount));
172
+ const minHeight = 4;
173
+ // Initialize lerp state
174
+ if (this.prevHeights.length !== barCount) {
175
+ this.prevHeights = new Array(barCount).fill(minHeight);
176
+ }
177
+ const draw = () => {
178
+ if (this.state !== 'recording')
179
+ return;
180
+ this.animationFrameId = requestAnimationFrame(draw);
181
+ this.analyserRef.getByteFrequencyData(dataArray);
182
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
183
+ const centerY = canvas.height / 2;
184
+ const totalWidth = barCount * (barWidth + gap);
185
+ const startX = (canvas.width - totalWidth) / 2;
186
+ const maxHeight = canvas.height - 4;
187
+ for (let i = 0; i < barCount; i++) {
188
+ // Average frequency bins for this bar
189
+ let sum = 0;
190
+ for (let j = 0; j < binsPerBar; j++) {
191
+ const binIndex = i * binsPerBar + j;
192
+ if (binIndex < bufferLength)
193
+ sum += dataArray[binIndex];
194
+ }
195
+ const avg = sum / binsPerBar;
196
+ const normalizedValue = Math.min(1, avg / 255);
197
+ const targetHeight = minHeight + normalizedValue * (maxHeight - minHeight);
198
+ // Lerp toward target for smooth animation
199
+ this.prevHeights[i] = this.prevHeights[i] * 0.7 + targetHeight * 0.3;
200
+ const barHeight = this.prevHeights[i];
201
+ const x = startX + i * (barWidth + gap);
202
+ const y = centerY - barHeight / 2;
203
+ ctx.fillStyle = '#9ca3af';
204
+ ctx.beginPath();
205
+ ctx.roundRect(x, y, barWidth, barHeight, barWidth / 2);
206
+ ctx.fill();
207
+ }
208
+ };
209
+ draw();
210
+ };
211
+ formatDuration = (seconds) => {
212
+ const mins = Math.floor(seconds / 60);
213
+ const secs = seconds % 60;
214
+ return `${mins}:${secs.toString().padStart(2, '0')}`;
215
+ };
216
+ render() {
217
+ const remaining = MAX_RECORDING_TIME - this.recordingDuration;
218
+ return (h(Host, { key: 'c8bfc86b0c3951460ec23b66e6e018d25c8fa950' }, h("div", { key: '114eae0be8e5ebcbda11cdff7fd0714221c0e27a', class: "wrapper" }, this.state === 'recording' && h("div", { key: '203008d77352bd2fda62a2f7728f061ea4b1ea4f', class: "glow", "aria-hidden": "true" }), h("div", { key: 'a92db7f67500d731faca57e1634aec4a383a9ab7', class: "input-container" }, this.state === 'idle' ? (h("div", { class: "recording-row" }, h("button", { type: "button", class: "submit-button", onClick: this.startRecording, disabled: this.disabled, "aria-label": "Start recording" }, h("ai-icon", { name: "mic", size: 16 })), this.error && (h("div", { class: "error-message", role: "alert" }, this.error)))) : (h("div", { class: "recording-row" }, h("button", { type: "button", class: "cancel-button", onClick: this.cancelRecording, "aria-label": "Cancel" }, h("ai-icon", { name: "cancel", size: 14 })), h("div", { class: `timer${remaining <= 5 ? ' warning' : ''}` }, this.formatDuration(this.recordingDuration)), this.showWaveform && h("canvas", { ref: el => (this.canvasRef = el), class: "waveform", width: "260", height: "32" }), h("button", { type: "button", class: "submit-button", onClick: this.stopRecording, "aria-label": "Send" }, h("ai-icon", { name: "arrow-up", size: 14 }))))))));
219
+ }
220
+ static get is() { return "ai-voice-input"; }
221
+ static get encapsulation() { return "shadow"; }
222
+ static get originalStyleUrls() {
223
+ return {
224
+ "$": ["ai-voice-input.css"]
225
+ };
226
+ }
227
+ static get styleUrls() {
228
+ return {
229
+ "$": ["ai-voice-input.css"]
230
+ };
231
+ }
232
+ static get properties() {
233
+ return {
234
+ "disabled": {
235
+ "type": "boolean",
236
+ "mutable": false,
237
+ "complexType": {
238
+ "original": "boolean",
239
+ "resolved": "boolean",
240
+ "references": {}
241
+ },
242
+ "required": false,
243
+ "optional": false,
244
+ "docs": {
245
+ "tags": [],
246
+ "text": "Whether the voice input is disabled"
247
+ },
248
+ "getter": false,
249
+ "setter": false,
250
+ "reflect": false,
251
+ "attribute": "disabled",
252
+ "defaultValue": "false"
253
+ },
254
+ "showWaveform": {
255
+ "type": "boolean",
256
+ "mutable": false,
257
+ "complexType": {
258
+ "original": "boolean",
259
+ "resolved": "boolean",
260
+ "references": {}
261
+ },
262
+ "required": false,
263
+ "optional": false,
264
+ "docs": {
265
+ "tags": [],
266
+ "text": "Whether to show the waveform animation"
267
+ },
268
+ "getter": false,
269
+ "setter": false,
270
+ "reflect": false,
271
+ "attribute": "show-waveform",
272
+ "defaultValue": "true"
273
+ },
274
+ "autoStart": {
275
+ "type": "boolean",
276
+ "mutable": false,
277
+ "complexType": {
278
+ "original": "boolean",
279
+ "resolved": "boolean",
280
+ "references": {}
281
+ },
282
+ "required": false,
283
+ "optional": false,
284
+ "docs": {
285
+ "tags": [],
286
+ "text": "Whether to auto-start recording on mount"
287
+ },
288
+ "getter": false,
289
+ "setter": false,
290
+ "reflect": false,
291
+ "attribute": "auto-start",
292
+ "defaultValue": "false"
293
+ }
294
+ };
295
+ }
296
+ static get states() {
297
+ return {
298
+ "state": {},
299
+ "error": {},
300
+ "recordingDuration": {}
301
+ };
302
+ }
303
+ static get events() {
304
+ return [{
305
+ "method": "audioRecorded",
306
+ "name": "audioRecorded",
307
+ "bubbles": true,
308
+ "cancelable": true,
309
+ "composed": true,
310
+ "docs": {
311
+ "tags": [],
312
+ "text": "Event emitted when audio blob is ready"
313
+ },
314
+ "complexType": {
315
+ "original": "{ blob: Blob; duration: number }",
316
+ "resolved": "{ blob: Blob; duration: number; }",
317
+ "references": {
318
+ "Blob": {
319
+ "location": "global",
320
+ "id": "global::Blob"
321
+ }
322
+ }
323
+ }
324
+ }, {
325
+ "method": "recordingCancel",
326
+ "name": "recordingCancel",
327
+ "bubbles": true,
328
+ "cancelable": true,
329
+ "composed": true,
330
+ "docs": {
331
+ "tags": [],
332
+ "text": "Event emitted when recording is canceled"
333
+ },
334
+ "complexType": {
335
+ "original": "void",
336
+ "resolved": "void",
337
+ "references": {}
338
+ }
339
+ }];
340
+ }
341
+ }
@@ -0,0 +1,118 @@
1
+ import { html } from "lit";
2
+ const meta = {
3
+ title: 'Chat/Voice Input',
4
+ component: 'ai-voice-input',
5
+ tags: ['autodocs'],
6
+ argTypes: {
7
+ disabled: {
8
+ control: 'boolean',
9
+ description: 'Whether the component is disabled',
10
+ },
11
+ showWaveform: {
12
+ control: 'boolean',
13
+ description: 'Show the waveform visualization while recording',
14
+ },
15
+ autoStart: {
16
+ control: 'boolean',
17
+ description: 'Start recording immediately on mount',
18
+ },
19
+ },
20
+ parameters: {
21
+ docs: {
22
+ description: {
23
+ component: `
24
+ A standalone voice recorder designed to visually replace \`ai-message-input\` while the user records.
25
+ It shares the same pill shape, glow, colors, and sizing as the message input.
26
+
27
+ ## Events
28
+ - \`audioRecorded\` — emitted with \`{ blob: Blob, duration: number }\` when the user submits the recording
29
+ - \`recordingCancel\` — emitted when the user cancels
30
+
31
+ ## Props
32
+ - \`autoStart\` — start recording immediately on mount (use this when swapping in from the message input)
33
+ - \`showWaveform\` — toggle the frequency bar visualization
34
+ - \`disabled\` — disable the start button
35
+
36
+ ## Typical usage with \`ai-message-input\`
37
+ \`\`\`html
38
+ <ai-message-input id="msg" @voiceButtonClick=\${showVoice}></ai-message-input>
39
+ <ai-voice-input id="voice" auto-start style="display:none"
40
+ @audioRecorded=\${onAudio} @recordingCancel=\${hideVoice}></ai-voice-input>
41
+ \`\`\`
42
+ `,
43
+ },
44
+ },
45
+ },
46
+ };
47
+ export default meta;
48
+ export const Default = {
49
+ render: args => html `
50
+ <ai-voice-input
51
+ ?disabled=${args.disabled}
52
+ ?show-waveform=${args.showWaveform !== false}
53
+ ?auto-start=${args.autoStart}
54
+ @audioRecorded=${(e) => console.log('audioRecorded:', e.detail)}
55
+ @recordingCancel=${() => console.log('recordingCancel')}
56
+ ></ai-voice-input>
57
+ `,
58
+ args: {
59
+ disabled: false,
60
+ showWaveform: true,
61
+ autoStart: false,
62
+ },
63
+ };
64
+ export const AutoStart = {
65
+ name: 'Auto Start',
66
+ render: () => html `
67
+ <ai-voice-input
68
+ auto-start
69
+ @audioRecorded=${(e) => console.log('audioRecorded:', e.detail)}
70
+ @recordingCancel=${() => console.log('recordingCancel')}
71
+ ></ai-voice-input>
72
+ `,
73
+ parameters: {
74
+ docs: {
75
+ description: { story: 'Starts recording immediately on mount — the typical mode when toggled from `ai-message-input`.' },
76
+ },
77
+ },
78
+ };
79
+ export const WithoutWaveform = {
80
+ name: 'Without Waveform',
81
+ render: () => html `
82
+ <ai-voice-input
83
+ auto-start
84
+ ?show-waveform=${false}
85
+ @audioRecorded=${(e) => console.log('audioRecorded:', e.detail)}
86
+ @recordingCancel=${() => console.log('recordingCancel')}
87
+ ></ai-voice-input>
88
+ `,
89
+ };
90
+ export const Disabled = {
91
+ render: () => html `<ai-voice-input disabled></ai-voice-input>`,
92
+ };
93
+ export const WithEventHandlers = {
94
+ name: 'With Event Handlers',
95
+ render: () => html `
96
+ <div style="max-width:600px;">
97
+ <ai-voice-input
98
+ auto-start
99
+ @audioRecorded=${(e) => {
100
+ const log = document.getElementById('voice-log');
101
+ if (log)
102
+ log.innerHTML += `<div style="color:#8b5cf6;">🎤 Audio recorded — ${e.detail.duration}s / ${(e.detail.blob.size / 1024).toFixed(1)} KB</div>`;
103
+ }}
104
+ @recordingCancel=${() => {
105
+ const log = document.getElementById('voice-log');
106
+ if (log)
107
+ log.innerHTML += `<div style="color:#737373;">✕ Cancelled</div>`;
108
+ }}
109
+ ></ai-voice-input>
110
+ <div
111
+ id="voice-log"
112
+ style="margin-top:1rem;padding:1rem;background:#f5f5f5;border-radius:8px;font-family:monospace;font-size:13px;min-height:80px;max-height:200px;overflow-y:auto;"
113
+ >
114
+ <div style="color:#666;font-weight:bold;margin-bottom:4px;">Event log:</div>
115
+ </div>
116
+ </div>
117
+ `,
118
+ };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @fileoverview entry point for your component library
3
+ *
4
+ * This is the entry point for your component library. Use this file to export utilities,
5
+ * constants or data structure that accompany your components.
6
+ *
7
+ * DO NOT use this file to export your components. Instead, use the recommended approaches
8
+ * to consume components of this package as outlined in the `README.md`.
9
+ */
10
+ export { format } from './utils/utils';
@@ -0,0 +1,78 @@
1
+ export const iconRegistry = {
2
+ 'send': {
3
+ viewBox: '0 0 16 16',
4
+ content: '<mask id="mask-send" fill="white"><path d="M7.43997 8.78393C7.40797 8.7626 7.3813 8.74126 7.35997 8.71993C7.26397 8.67726 7.13597 8.6346 6.97597 8.59193C6.8373 8.54926 6.53864 8.47993 6.07997 8.38393H6.04797L5.66397 8.30393C4.90664 8.14393 4.28797 7.9946 3.80797 7.85593C3.07197 7.63193 2.49597 7.3866 2.07997 7.11993C1.47197 6.72526 1.16797 6.25593 1.16797 5.71193C1.16797 5.50926 1.24264 5.3066 1.39197 5.10393C1.49864 4.96526 1.64264 4.8266 1.82397 4.68793C2.14397 4.43193 2.59197 4.15993 3.16797 3.87193C4.26664 3.3066 5.59464 2.7786 7.15197 2.28793C8.7733 1.76526 10.1973 1.4186 11.424 1.24793C12.096 1.1626 12.6666 1.14126 13.136 1.18393C13.712 1.24793 14.1306 1.41593 14.392 1.68793C14.6533 1.95993 14.8 2.38926 14.832 2.97593C14.8533 3.4346 14.8106 4.00526 14.704 4.68793C14.512 5.9146 14.144 7.33326 13.6 8.94393C13.0666 10.4906 12.5173 11.8026 11.952 12.8799C11.664 13.4453 11.392 13.8826 11.136 14.1919C10.9866 14.3839 10.848 14.5279 10.72 14.6239C10.5173 14.7733 10.3146 14.8426 10.112 14.8319C9.7493 14.8213 9.43997 14.6453 9.18397 14.3039C8.99197 14.0586 8.81064 13.6906 8.63997 13.1999C8.5013 12.8053 8.35197 12.2666 8.19197 11.5839C8.0853 11.1573 7.91997 10.4213 7.69597 9.37593L7.67997 9.35993C7.61597 9.07193 7.55197 8.8906 7.48797 8.81593L7.43997 8.78393ZM2.19197 5.71193C2.1813 5.7226 2.17597 5.73326 2.17597 5.74393C2.1973 5.9146 2.34664 6.09593 2.62397 6.28793C2.95464 6.50126 3.4453 6.70393 4.09597 6.89593C4.54397 7.02393 5.13597 7.16793 5.87197 7.32793L6.22397 7.39193C6.73597 7.4986 7.0773 7.57326 7.24797 7.61593C7.3653 7.6586 7.47197 7.69593 7.56797 7.72793L9.64797 5.64793C9.74397 5.55193 9.8613 5.50393 9.99997 5.50393C10.1386 5.50393 10.256 5.55193 10.352 5.64793C10.448 5.74393 10.496 5.86126 10.496 5.99993C10.496 6.1386 10.448 6.25593 10.352 6.35193L8.36797 8.33593C8.4853 8.52793 8.5813 8.79993 8.65597 9.15193C8.89064 10.1866 9.05597 10.9173 9.15197 11.3439C9.31197 12.0053 9.45597 12.5199 9.58397 12.8879C9.71197 13.2559 9.83997 13.5253 9.96797 13.6959C10.0213 13.7599 10.0693 13.8026 10.112 13.8239C10.1866 13.7706 10.2666 13.6853 10.352 13.5679C10.5653 13.3119 10.8053 12.9279 11.072 12.4159C11.616 11.3813 12.1386 10.1173 12.64 8.62393C13.1733 7.0666 13.5306 5.70126 13.712 4.52793C13.808 3.91993 13.8453 3.42393 13.824 3.03993C13.8026 2.68793 13.7493 2.46393 13.664 2.36793C13.5786 2.27193 13.3706 2.21326 13.04 2.19193C12.656 2.14926 12.16 2.16526 11.552 2.23993C10.3893 2.39993 9.02397 2.7306 7.45597 3.23193C5.95197 3.71193 4.67197 4.22393 3.61597 4.76793C3.10397 5.02393 2.71464 5.2586 2.44797 5.47193C2.33064 5.56793 2.2453 5.64793 2.19197 5.71193Z"/></mask><path d="M7.43997 8.78393C7.40797 8.7626 7.3813 8.74126 7.35997 8.71993C7.26397 8.67726 7.13597 8.6346 6.97597 8.59193C6.8373 8.54926 6.53864 8.47993 6.07997 8.38393H6.04797L5.66397 8.30393C4.90664 8.14393 4.28797 7.9946 3.80797 7.85593C3.07197 7.63193 2.49597 7.3866 2.07997 7.11993C1.47197 6.72526 1.16797 6.25593 1.16797 5.71193C1.16797 5.50926 1.24264 5.3066 1.39197 5.10393C1.49864 4.96526 1.64264 4.8266 1.82397 4.68793C2.14397 4.43193 2.59197 4.15993 3.16797 3.87193C4.26664 3.3066 5.59464 2.7786 7.15197 2.28793C8.7733 1.76526 10.1973 1.4186 11.424 1.24793C12.096 1.1626 12.6666 1.14126 13.136 1.18393C13.712 1.24793 14.1306 1.41593 14.392 1.68793C14.6533 1.95993 14.8 2.38926 14.832 2.97593C14.8533 3.4346 14.8106 4.00526 14.704 4.68793C14.512 5.9146 14.144 7.33326 13.6 8.94393C13.0666 10.4906 12.5173 11.8026 11.952 12.8799C11.664 13.4453 11.392 13.8826 11.136 14.1919C10.9866 14.3839 10.848 14.5279 10.72 14.6239C10.5173 14.7733 10.3146 14.8426 10.112 14.8319C9.7493 14.8213 9.43997 14.6453 9.18397 14.3039C8.99197 14.0586 8.81064 13.6906 8.63997 13.1999C8.5013 12.8053 8.35197 12.2666 8.19197 11.5839C8.0853 11.1573 7.91997 10.4213 7.69597 9.37593L7.67997 9.35993C7.61597 9.07193 7.55197 8.8906 7.48797 8.81593L7.43997 8.78393ZM2.19197 5.71193C2.1813 5.7226 2.17597 5.73326 2.17597 5.74393C2.1973 5.9146 2.34664 6.09593 2.62397 6.28793C2.95464 6.50126 3.4453 6.70393 4.09597 6.89593C4.54397 7.02393 5.13597 7.16793 5.87197 7.32793L6.22397 7.39193C6.73597 7.4986 7.0773 7.57326 7.24797 7.61593C7.3653 7.6586 7.47197 7.69593 7.56797 7.72793L9.64797 5.64793C9.74397 5.55193 9.8613 5.50393 9.99997 5.50393C10.1386 5.50393 10.256 5.55193 10.352 5.64793C10.448 5.74393 10.496 5.86126 10.496 5.99993C10.496 6.1386 10.448 6.25593 10.352 6.35193L8.36797 8.33593C8.4853 8.52793 8.5813 8.79993 8.65597 9.15193C8.89064 10.1866 9.05597 10.9173 9.15197 11.3439C9.31197 12.0053 9.45597 12.5199 9.58397 12.8879C9.71197 13.2559 9.83997 13.5253 9.96797 13.6959C10.0213 13.7599 10.0693 13.8026 10.112 13.8239C10.1866 13.7706 10.2666 13.6853 10.352 13.5679C10.5653 13.3119 10.8053 12.9279 11.072 12.4159C11.616 11.3813 12.1386 10.1173 12.64 8.62393C13.1733 7.0666 13.5306 5.70126 13.712 4.52793C13.808 3.91993 13.8453 3.42393 13.824 3.03993C13.8026 2.68793 13.7493 2.46393 13.664 2.36793C13.5786 2.27193 13.3706 2.21326 13.04 2.19193C12.656 2.14926 12.16 2.16526 11.552 2.23993C10.3893 2.39993 9.02397 2.7306 7.45597 3.23193C5.95197 3.71193 4.67197 4.22393 3.61597 4.76793C3.10397 5.02393 2.71464 5.2586 2.44797 5.47193C2.33064 5.56793 2.2453 5.64793 2.19197 5.71193Z" fill="currentColor" stroke="currentColor" stroke-width="2" mask="url(#mask-send)"/>',
5
+ },
6
+ 'cancel': {
7
+ viewBox: '0 0 24 24',
8
+ content: '<path d="M18 6L6 18M6 6l12 12" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/>',
9
+ },
10
+ 'arrow-up': {
11
+ viewBox: '0 0 24 24',
12
+ content: '<path d="M12 19V5M5 12l7-7 7 7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/>',
13
+ },
14
+ 'watermark': {
15
+ viewBox: '0 0 133 133',
16
+ content: '<g clip-path="url(#clip0_wm)"><g filter="url(#filter0_wm)"><circle cx="66.415" cy="66.415" r="66.415" fill="#FCFCFC"/></g><g filter="url(#filter1_wm)"><path d="M66.4159 27.6729C67.2429 27.6729 67.9427 27.9591 68.5152 28.5317C69.0878 29.1042 69.3741 29.804 69.3741 30.631C69.3741 36.5473 70.869 42.05 73.859 47.1393C76.7853 52.1014 80.7295 56.0455 85.6915 58.9719C90.7808 61.9618 96.2836 63.4568 102.2 63.4568C103.027 63.4568 103.727 63.7431 104.299 64.3156C104.872 64.8882 105.158 65.5879 105.158 66.4149C105.158 67.2419 104.872 67.9417 104.299 68.5143C103.727 69.0868 103.027 69.3731 102.2 69.3731C96.2836 69.3731 90.7808 70.868 85.6915 73.858C80.7295 76.7843 76.7853 80.7285 73.859 85.6906C70.869 90.7798 69.3741 96.2826 69.3741 102.199C69.3741 103.026 69.0878 103.726 68.5152 104.298C67.9427 104.871 67.2429 105.157 66.4159 105.157C65.5889 105.157 64.8891 104.871 64.3166 104.298C63.744 103.726 63.4578 103.026 63.4578 102.199C63.4578 96.2826 61.9628 90.7798 58.9729 85.6906C56.0465 80.7285 52.1023 76.7843 47.1403 73.858C42.051 70.868 36.5482 69.3731 30.632 69.3731C29.805 69.3731 29.1052 69.0868 28.5326 68.5143C27.9601 67.9417 27.6738 67.2419 27.6738 66.4149C27.6738 65.5879 27.9601 64.8882 28.5326 64.3156C29.1052 63.7431 29.805 63.4568 30.632 63.4568C36.5482 63.4568 42.051 61.9618 47.1403 58.9719C52.1023 56.0455 56.0465 52.1014 58.9729 47.1393C61.9628 42.05 63.4578 36.5473 63.4578 30.631C63.4578 29.804 63.744 29.1042 64.3166 28.5317C64.8891 27.9591 65.5889 27.6729 66.4159 27.6729Z" fill="#FAFAFA"/></g></g><defs><filter id="filter0_wm" x="0" y="0" width="132.83" height="135.83" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/><feOffset dy="3"/><feGaussianBlur stdDeviation="3"/><feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/><feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06 0"/><feBlend mode="normal" in2="shape" result="effect1_innerShadow_wm"/></filter><filter id="filter1_wm" x="27.6738" y="27.6729" width="77.4844" height="79.4844" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/><feOffset dy="2"/><feGaussianBlur stdDeviation="2"/><feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/><feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06 0"/><feBlend mode="normal" in2="shape" result="effect1_innerShadow_wm"/></filter><clipPath id="clip0_wm"><path d="M0 66.415C0 29.735 29.735 0 66.415 0C103.095 0 132.83 29.735 132.83 66.415C132.83 103.095 103.095 132.83 66.415 132.83C29.735 132.83 0 103.095 0 66.415Z" fill="currentColor"/></clipPath></defs>',
17
+ },
18
+ 'drag': {
19
+ viewBox: '0 0 11 15',
20
+ content: '<path d="M0 7.248C0 6.896 0.124 6.6 0.372 6.36C0.62 6.12 0.912 6 1.248 6H1.272C1.608 6 1.9 6.12 2.148 6.36C2.396 6.6 2.52 6.896 2.52 7.248C2.52 7.6 2.396 7.896 2.148 8.136C1.9 8.376 1.608 8.496 1.272 8.496H1.248C0.912 8.496 0.62 8.376 0.372 8.136C0.124 7.896 0 7.6 0 7.248ZM0 13.248C0 12.896 0.124 12.6 0.372 12.36C0.62 12.12 0.912 12 1.248 12H1.272C1.608 12 1.9 12.12 2.148 12.36C2.396 12.6 2.52 12.896 2.52 13.248C2.52 13.6 2.396 13.896 2.148 14.136C1.9 14.376 1.608 14.496 1.272 14.496H1.248C0.912 14.496 0.62 14.376 0.372 14.136C0.124 13.896 0 13.6 0 13.248ZM0 1.248C0 0.896 0.124 0.6 0.372 0.36C0.62 0.12 0.912 0 1.248 0H1.272C1.608 0 1.9 0.12 2.148 0.36C2.396 0.6 2.52 0.896 2.52 1.248C2.52 1.6 2.396 1.896 2.148 2.136C1.9 2.376 1.608 2.496 1.272 2.496H1.248C0.912 2.496 0.62 2.376 0.372 2.136C0.124 1.896 0 1.6 0 1.248ZM7.992 7.248C7.992 6.896 8.116 6.6 8.364 6.36C8.612 6.12 8.904 6 9.24 6H9.264C9.6 6 9.892 6.12 10.14 6.36C10.388 6.6 10.512 6.896 10.512 7.248C10.512 7.6 10.388 7.896 10.14 8.136C9.892 8.376 9.6 8.496 9.264 8.496H9.24C8.904 8.496 8.612 8.376 8.364 8.136C8.116 7.896 7.992 7.6 7.992 7.248ZM7.992 13.248C7.992 12.896 8.116 12.6 8.364 12.36C8.612 12.12 8.904 12 9.24 12H9.264C9.6 12 9.892 12.12 10.14 12.36C10.388 12.6 10.512 12.896 10.512 13.248C10.512 13.6 10.388 13.896 10.14 14.136C9.892 14.376 9.6 14.496 9.264 14.496H9.24C8.904 14.496 8.612 14.376 8.364 14.136C8.116 13.896 7.992 13.6 7.992 13.248ZM7.992 1.248C7.992 0.896 8.116 0.6 8.364 0.36C8.612 0.12 8.904 0 9.24 0H9.264C9.6 0 9.892 0.12 10.14 0.36C10.388 0.6 10.512 0.896 10.512 1.248C10.512 1.6 10.388 1.896 10.14 2.136C9.892 2.376 9.6 2.496 9.264 2.496H9.24C8.904 2.496 8.612 2.376 8.364 2.136C8.116 1.896 7.992 1.6 7.992 1.248Z" fill="currentColor"/>',
21
+ },
22
+ 'hand': {
23
+ viewBox: '0 0 22 22',
24
+ content: '<mask id="mask-hand" fill="white"><path d="M9.81187 12.8481C9.81187 12.9801 9.77154 13.1048 9.69087 13.2221C9.6102 13.3394 9.50754 13.4238 9.38287 13.4751C9.2582 13.5264 9.1262 13.5374 8.98687 13.5081C8.84754 13.4788 8.72654 13.4128 8.62387 13.3101L7.12787 11.7041C6.65854 11.1321 6.24787 10.8974 5.89587 11.0001C5.76387 11.0441 5.63554 11.1431 5.51087 11.2971C5.3862 11.4511 5.29454 11.6234 5.23587 11.8141C5.1772 12.0048 5.2652 12.2541 5.49987 12.5621L8.99787 17.2481C9.45254 17.8641 9.67987 18.5534 9.67987 19.3161V20.1741C9.67987 20.3648 9.61387 20.5261 9.48187 20.6581C9.34987 20.7901 9.18854 20.8561 8.99787 20.8561C8.8072 20.8561 8.64587 20.7901 8.51387 20.6581C8.38187 20.5261 8.31587 20.3648 8.31587 20.1741V19.3161C8.31587 18.8468 8.17654 18.4288 7.89787 18.0621L4.39987 13.3981C3.9012 12.7234 3.73987 12.0781 3.91587 11.4621C4.01854 11.0661 4.20187 10.7141 4.46587 10.4061C4.74454 10.0541 5.08187 9.81945 5.47787 9.70211C5.9472 9.55545 6.41287 9.57745 6.87487 9.76811C7.33687 9.95878 7.7732 10.3108 8.18387 10.8241L8.44787 11.1101V3.25611C8.4772 2.65478 8.7192 2.15611 9.17387 1.76011C9.58454 1.40811 10.0612 1.21011 10.6039 1.16611C11.1905 1.10745 11.7039 1.24678 12.1439 1.58411C12.6279 1.95078 12.9139 2.49345 13.0019 3.21211L13.0239 8.03011C13.3905 8.04478 13.7865 8.08878 14.2119 8.16211C15.1945 8.32345 16.0819 8.58011 16.8739 8.93211C17.9152 9.38678 18.6999 9.96611 19.2279 10.6701C19.8879 11.5501 20.0859 12.5621 19.8219 13.7061L19.6899 14.3001C19.5872 14.7988 19.4039 15.3634 19.1399 15.9941C18.8465 16.7128 18.5459 17.2994 18.2379 17.7541C18.0472 18.0181 17.9445 18.4214 17.9299 18.9641V19.5801L17.9519 19.6901C17.9519 19.9688 17.9445 20.1668 17.9299 20.2841C17.9005 20.4748 17.8089 20.6251 17.6549 20.7351C17.5009 20.8451 17.3285 20.8818 17.1379 20.8451C16.9472 20.8084 16.7969 20.7131 16.6869 20.5591C16.5769 20.4051 16.5365 20.2401 16.5659 20.0641V19.6461C16.5512 19.3381 16.5512 19.0961 16.5659 18.9201C16.5805 18.0988 16.7565 17.4461 17.0939 16.9621C17.3579 16.5954 17.6145 16.1041 17.8639 15.4881C18.0985 14.9161 18.2599 14.4174 18.3479 13.9921L18.4799 13.3981C18.6559 12.6794 18.5385 12.0414 18.1279 11.4841C17.7465 10.9854 17.1452 10.5528 16.3239 10.1861C15.6345 9.89278 14.8572 9.67278 13.9919 9.52611C13.2879 9.40878 12.7599 9.37211 12.4079 9.41611C12.2025 9.44545 12.0229 9.39045 11.8689 9.25111C11.7149 9.11178 11.6379 8.93945 11.6379 8.73411V3.34411C11.5939 3.03611 11.4875 2.81611 11.3189 2.68411C11.1502 2.55211 10.9449 2.49711 10.7029 2.51911C10.4609 2.54111 10.2555 2.62911 10.0869 2.78311C9.9182 2.93711 9.82654 3.11678 9.81187 3.32211V12.8481ZM16.8519 1.40811C16.9692 1.26145 17.1195 1.17711 17.3029 1.15511C17.4862 1.13311 17.6585 1.18078 17.8199 1.29811L18.0179 1.45211C18.4139 1.74545 18.7145 1.98745 18.9199 2.17811C19.1839 2.39811 19.3892 2.60345 19.5359 2.79411C19.6385 2.91145 19.7192 3.02878 19.7779 3.14611C19.8659 3.32211 19.9099 3.49445 19.9099 3.66311C19.9099 3.83178 19.8659 4.00411 19.7779 4.18011C19.7192 4.29745 19.6385 4.42211 19.5359 4.55411C19.3892 4.74478 19.1839 4.95011 18.9199 5.17011C18.7145 5.34611 18.4139 5.58811 18.0179 5.89611L17.8199 6.05011C17.6585 6.16745 17.4862 6.21511 17.3029 6.19311C17.1195 6.17111 16.9692 6.08311 16.8519 5.92911C16.7345 5.77511 16.6869 5.60278 16.7089 5.41211C16.7309 5.22145 16.8152 5.06745 16.9619 4.95011L17.2039 4.77411L17.7539 4.35611H15.5539C15.3632 4.35611 15.2019 4.29011 15.0699 4.15811C14.9379 4.02611 14.8719 3.86478 14.8719 3.67411C14.8719 3.48345 14.9379 3.31845 15.0699 3.17911C15.2019 3.03978 15.3632 2.97011 15.5539 2.97011H17.7539L16.9619 2.37611C16.8152 2.25878 16.7309 2.10478 16.7089 1.91411C16.6869 1.72345 16.7345 1.55478 16.8519 1.40811ZM5.12587 1.40811C5.2432 1.55478 5.29087 1.72345 5.26887 1.91411C5.24687 2.10478 5.1552 2.25878 4.99387 2.37611L4.22387 2.97011H6.40187C6.59254 2.97011 6.75754 3.03978 6.89687 3.17911C7.0362 3.31845 7.10587 3.48345 7.10587 3.67411C7.10587 3.86478 7.0362 4.02611 6.89687 4.15811C6.75754 4.29011 6.59254 4.35611 6.40187 4.35611H4.22387L4.99387 4.95011C5.1552 5.06745 5.24687 5.22145 5.26887 5.41211C5.29087 5.60278 5.2432 5.77511 5.12587 5.92911C5.00854 6.08311 4.85454 6.17111 4.66387 6.19311C4.4732 6.21511 4.30454 6.16745 4.15787 6.05011L3.95987 5.89611C3.5492 5.58811 3.2412 5.34611 3.03587 5.17011C2.78654 4.95011 2.58854 4.74478 2.44187 4.55411C2.3392 4.42211 2.25854 4.29745 2.19987 4.18011C2.11187 4.00411 2.06787 3.83178 2.06787 3.66311C2.06787 3.49445 2.11187 3.32211 2.19987 3.14611C2.25854 3.02878 2.3392 2.91145 2.44187 2.79411C2.58854 2.60345 2.78654 2.39811 3.03587 2.17811C3.2412 1.98745 3.5492 1.74545 3.95987 1.45211V1.43011L4.15787 1.29811C4.30454 1.18078 4.4732 1.13311 4.66387 1.15511C4.85454 1.17711 5.00854 1.26145 5.12587 1.40811Z"/></mask><path d="M9.81187 12.8481C9.81187 12.9801 9.77154 13.1048 9.69087 13.2221C9.6102 13.3394 9.50754 13.4238 9.38287 13.4751C9.2582 13.5264 9.1262 13.5374 8.98687 13.5081C8.84754 13.4788 8.72654 13.4128 8.62387 13.3101L7.12787 11.7041C6.65854 11.1321 6.24787 10.8974 5.89587 11.0001C5.76387 11.0441 5.63554 11.1431 5.51087 11.2971C5.3862 11.4511 5.29454 11.6234 5.23587 11.8141C5.1772 12.0048 5.2652 12.2541 5.49987 12.5621L8.99787 17.2481C9.45254 17.8641 9.67987 18.5534 9.67987 19.3161V20.1741C9.67987 20.3648 9.61387 20.5261 9.48187 20.6581C9.34987 20.7901 9.18854 20.8561 8.99787 20.8561C8.8072 20.8561 8.64587 20.7901 8.51387 20.6581C8.38187 20.5261 8.31587 20.3648 8.31587 20.1741V19.3161C8.31587 18.8468 8.17654 18.4288 7.89787 18.0621L4.39987 13.3981C3.9012 12.7234 3.73987 12.0781 3.91587 11.4621C4.01854 11.0661 4.20187 10.7141 4.46587 10.4061C4.74454 10.0541 5.08187 9.81945 5.47787 9.70211C5.9472 9.55545 6.41287 9.57745 6.87487 9.76811C7.33687 9.95878 7.7732 10.3108 8.18387 10.8241L8.44787 11.1101V3.25611C8.4772 2.65478 8.7192 2.15611 9.17387 1.76011C9.58454 1.40811 10.0612 1.21011 10.6039 1.16611C11.1905 1.10745 11.7039 1.24678 12.1439 1.58411C12.6279 1.95078 12.9139 2.49345 13.0019 3.21211L13.0239 8.03011C13.3905 8.04478 13.7865 8.08878 14.2119 8.16211C15.1945 8.32345 16.0819 8.58011 16.8739 8.93211C17.9152 9.38678 18.6999 9.96611 19.2279 10.6701C19.8879 11.5501 20.0859 12.5621 19.8219 13.7061L19.6899 14.3001C19.5872 14.7988 19.4039 15.3634 19.1399 15.9941C18.8465 16.7128 18.5459 17.2994 18.2379 17.7541C18.0472 18.0181 17.9445 18.4214 17.9299 18.9641V19.5801L17.9519 19.6901C17.9519 19.9688 17.9445 20.1668 17.9299 20.2841C17.9005 20.4748 17.8089 20.6251 17.6549 20.7351C17.5009 20.8451 17.3285 20.8818 17.1379 20.8451C16.9472 20.8084 16.7969 20.7131 16.6869 20.5591C16.5769 20.4051 16.5365 20.2401 16.5659 20.0641V19.6461C16.5512 19.3381 16.5512 19.0961 16.5659 18.9201C16.5805 18.0988 16.7565 17.4461 17.0939 16.9621C17.3579 16.5954 17.6145 16.1041 17.8639 15.4881C18.0985 14.9161 18.2599 14.4174 18.3479 13.9921L18.4799 13.3981C18.6559 12.6794 18.5385 12.0414 18.1279 11.4841C17.7465 10.9854 17.1452 10.5528 16.3239 10.1861C15.6345 9.89278 14.8572 9.67278 13.9919 9.52611C13.2879 9.40878 12.7599 9.37211 12.4079 9.41611C12.2025 9.44545 12.0229 9.39045 11.8689 9.25111C11.7149 9.11178 11.6379 8.93945 11.6379 8.73411V3.34411C11.5939 3.03611 11.4875 2.81611 11.3189 2.68411C11.1502 2.55211 10.9449 2.49711 10.7029 2.51911C10.4609 2.54111 10.2555 2.62911 10.0869 2.78311C9.9182 2.93711 9.82654 3.11678 9.81187 3.32211V12.8481ZM16.8519 1.40811C16.9692 1.26145 17.1195 1.17711 17.3029 1.15511C17.4862 1.13311 17.6585 1.18078 17.8199 1.29811L18.0179 1.45211C18.4139 1.74545 18.7145 1.98745 18.9199 2.17811C19.1839 2.39811 19.3892 2.60345 19.5359 2.79411C19.6385 2.91145 19.7192 3.02878 19.7779 3.14611C19.8659 3.32211 19.9099 3.49445 19.9099 3.66311C19.9099 3.83178 19.8659 4.00411 19.7779 4.18011C19.7192 4.29745 19.6385 4.42211 19.5359 4.55411C19.3892 4.74478 19.1839 4.95011 18.9199 5.17011C18.7145 5.34611 18.4139 5.58811 18.0179 5.89611L17.8199 6.05011C17.6585 6.16745 17.4862 6.21511 17.3029 6.19311C17.1195 6.17111 16.9692 6.08311 16.8519 5.92911C16.7345 5.77511 16.6869 5.60278 16.7089 5.41211C16.7309 5.22145 16.8152 5.06745 16.9619 4.95011L17.2039 4.77411L17.7539 4.35611H15.5539C15.3632 4.35611 15.2019 4.29011 15.0699 4.15811C14.9379 4.02611 14.8719 3.86478 14.8719 3.67411C14.8719 3.48345 14.9379 3.31845 15.0699 3.17911C15.2019 3.03978 15.3632 2.97011 15.5539 2.97011H17.7539L16.9619 2.37611C16.8152 2.25878 16.7309 2.10478 16.7089 1.91411C16.6869 1.72345 16.7345 1.55478 16.8519 1.40811ZM5.12587 1.40811C5.2432 1.55478 5.29087 1.72345 5.26887 1.91411C5.24687 2.10478 5.1552 2.25878 4.99387 2.37611L4.22387 2.97011H6.40187C6.59254 2.97011 6.75754 3.03978 6.89687 3.17911C7.0362 3.31845 7.10587 3.48345 7.10587 3.67411C7.10587 3.86478 7.0362 4.02611 6.89687 4.15811C6.75754 4.29011 6.59254 4.35611 6.40187 4.35611H4.22387L4.99387 4.95011C5.1552 5.06745 5.24687 5.22145 5.26887 5.41211C5.29087 5.60278 5.2432 5.77511 5.12587 5.92911C5.00854 6.08311 4.85454 6.17111 4.66387 6.19311C4.4732 6.21511 4.30454 6.16745 4.15787 6.05011L3.95987 5.89611C3.5492 5.58811 3.2412 5.34611 3.03587 5.17011C2.78654 4.95011 2.58854 4.74478 2.44187 4.55411C2.3392 4.42211 2.25854 4.29745 2.19987 4.18011C2.11187 4.00411 2.06787 3.83178 2.06787 3.66311C2.06787 3.49445 2.11187 3.32211 2.19987 3.14611C2.25854 3.02878 2.3392 2.91145 2.44187 2.79411C2.58854 2.60345 2.78654 2.39811 3.03587 2.17811C3.2412 1.98745 3.5492 1.74545 3.95987 1.45211V1.43011L4.15787 1.29811C4.30454 1.18078 4.4732 1.13311 4.66387 1.15511C4.85454 1.17711 5.00854 1.26145 5.12587 1.40811Z" fill="currentColor" stroke="currentColor" stroke-width="2.29167" mask="url(#mask-hand)"/>',
25
+ },
26
+ 'pencil-edit': {
27
+ viewBox: '0 0 22 22',
28
+ content: '<path d="M10.9561 2.64062H11C11.0422 2.64062 11.0572 2.64902 11.0791 2.6709C11.1011 2.69291 11.1094 2.70764 11.1094 2.75C11.1094 2.79236 11.1011 2.80709 11.0791 2.8291C11.0572 2.85098 11.0422 2.85938 11 2.85938C10.3987 2.85938 9.88344 2.86056 9.45508 2.86426L8.43164 2.88086C7.84183 2.89211 7.32538 2.92047 6.88574 2.9668L6.47559 3.01855C5.93572 3.09568 5.46497 3.20757 5.07812 3.3623C4.68146 3.52104 4.33229 3.74584 4.03906 4.03906C3.74582 4.33236 3.52101 4.68137 3.3623 5.07812C3.20806 5.46373 3.09663 5.93203 3.01953 6.46973C2.9411 6.98739 2.89684 7.64441 2.88184 8.43164C2.86691 8.93966 2.85938 9.7977 2.85938 11C2.85938 11.6013 2.86154 12.1165 2.86523 12.5449L2.88184 13.5684C2.89684 14.3553 2.94115 15.0117 3.01953 15.5293C3.09663 16.0674 3.20797 16.536 3.3623 16.9219C3.52101 17.3186 3.74582 17.6676 4.03906 17.9609C4.33229 18.2542 4.68146 18.479 5.07812 18.6377C5.46497 18.7924 5.93572 18.9043 6.47559 18.9814V18.9805C6.9924 19.0584 7.64708 19.1032 8.43164 19.1182V19.1191C8.93957 19.1341 9.79762 19.1406 11 19.1406C12.202 19.1406 13.0603 19.1331 13.5684 19.1182C14.3529 19.1032 15.0075 19.0584 15.5244 18.9805L15.5254 18.9814C16.0652 18.9043 16.5351 18.7924 16.9219 18.6377C17.3187 18.479 17.6686 18.2543 17.9619 17.9609C18.2551 17.6677 18.48 17.3186 18.6387 16.9219C18.7934 16.5351 18.9043 16.0651 18.9814 15.5254L18.9805 15.5244C19.0584 15.0076 19.1042 14.3529 19.1191 13.5684C19.1341 13.0603 19.1416 12.2023 19.1416 11C19.1416 10.9576 19.1499 10.9429 19.1719 10.9209C19.1937 10.8992 19.2081 10.8907 19.25 10.8906C19.2922 10.8906 19.3072 10.899 19.3291 10.9209C19.3511 10.9429 19.3594 10.9576 19.3594 11V11.0439C19.3594 12.2464 19.3523 13.0972 19.3379 13.6016V13.6074C19.3271 14.2028 19.2997 14.7131 19.2578 15.1406L19.2109 15.541C19.1273 16.1404 19.0037 16.6378 18.8477 17.041C18.6698 17.4691 18.4299 17.8299 18.1299 18.1299C17.8292 18.4306 17.4676 18.6707 17.0381 18.8486C16.7363 18.9652 16.382 19.0637 15.9717 19.1406L15.541 19.2109C15.0442 19.2799 14.402 19.3225 13.6084 19.3369H13.6016C13.0971 19.3513 12.2461 19.3594 11.0439 19.3594H10.9561C9.75374 19.3594 8.90278 19.3513 8.39844 19.3369H8.39258C7.599 19.3225 6.95679 19.2799 6.45996 19.2109C5.86182 19.1275 5.36468 19.0042 4.96191 18.8486C4.53262 18.6707 4.17074 18.4305 3.87012 18.1299C3.60547 17.8652 3.38752 17.5533 3.21777 17.1895L3.14844 17.0303C3.03323 16.7302 2.93568 16.3784 2.85938 15.9717L2.79004 15.541C2.72102 15.044 2.67752 14.4015 2.66309 13.6074V13.6016L2.64648 12.585C2.64284 12.1588 2.6416 11.6453 2.6416 11.0439V10.9561C2.6416 9.75364 2.64868 8.90283 2.66309 8.39844V8.39258C2.67391 7.79719 2.70124 7.28688 2.74316 6.85938L2.79004 6.45898C2.87293 5.865 2.99436 5.37097 3.14844 4.96973C3.32671 4.53695 3.56768 4.1726 3.87012 3.87012C4.17082 3.56942 4.53247 3.32838 4.96191 3.15039C5.36462 2.99485 5.86198 2.8725 6.45996 2.78906L6.45898 2.78809C6.95593 2.71907 7.59856 2.67753 8.39258 2.66309H8.39844C8.90278 2.64868 9.75374 2.64063 10.9561 2.64062ZM16.9297 2.69922C17.2601 2.61376 17.5918 2.61354 17.9326 2.7002C18.2629 2.78423 18.5494 2.94793 18.8008 3.19922C19.0523 3.4507 19.2158 3.73788 19.2998 4.06836C19.3864 4.40907 19.3862 4.73997 19.3008 5.07031C19.2174 5.39271 19.0541 5.67739 18.8008 5.93066L12.6416 12.0908C12.1181 12.6143 11.7509 12.972 11.5381 13.1709C11.2109 13.4422 10.9177 13.6526 10.6562 13.8057C10.4829 13.9071 10.192 14.0271 9.76367 14.1602L9.28906 14.2969C8.89674 14.3985 8.25702 14.5578 7.36816 14.7764C7.3279 14.7855 7.31288 14.7807 7.31152 14.7803C7.30853 14.7794 7.29076 14.7741 7.25879 14.7422C7.22517 14.7086 7.22023 14.6902 7.21973 14.6885C7.21915 14.6865 7.21347 14.671 7.22266 14.6309C7.44214 13.7383 7.60255 13.0968 7.7041 12.7051C7.89185 12.013 8.0595 11.5753 8.19434 11.3447C8.3484 11.0815 8.55998 10.7849 8.83398 10.4551C9.03398 10.2414 9.39077 9.87779 9.90918 9.35938L16.0693 3.19922C16.3226 2.94594 16.6073 2.7826 16.9297 2.69922ZM14.4668 5.13867L10.1553 9.45117C9.61628 9.99016 9.24363 10.3701 9.04395 10.585C8.77405 10.8707 8.55481 11.1542 8.40527 11.4346C8.25692 11.7127 8.0963 12.1761 7.9209 12.7754L7.91699 12.7861L7.91406 12.7969L7.7168 13.5889L7.48535 14.5156L8.41113 14.2842L9.20312 14.0859L9.21484 14.083L9.22559 14.0801C9.82478 13.9047 10.2883 13.744 10.5664 13.5957C10.8455 13.4468 11.1276 13.2283 11.4121 12.96C11.6263 12.761 12.0079 12.3867 12.5498 11.8447L17.2666 7.12793L14.8721 4.7334L14.4668 5.13867ZM17.4355 2.85938C16.9707 2.85938 16.5565 3.02762 16.2275 3.35645L16.2217 3.3623L15.4297 4.17676L15.0361 4.58105L15.4355 4.98145L17.4189 6.96484L17.8242 6.57031L18.6377 5.77832L18.6436 5.77344C18.9725 5.44448 19.1415 5.03023 19.1416 4.56543C19.1416 4.10046 18.9726 3.68551 18.6436 3.35645C18.3146 3.02754 17.9004 2.85942 17.4355 2.85938Z" fill="currentColor" stroke="currentColor" stroke-width="1.14583"/>',
29
+ },
30
+ 'chevron-down': {
31
+ viewBox: '0 0 24 24',
32
+ content: '<path d="M6.59969 8.54418C6.88769 8.92818 7.11969 9.24018 7.29569 9.48018C7.88769 10.2162 8.44769 10.8882 8.97569 11.4962C9.71169 12.3442 10.3517 13.0162 10.8957 13.5122C11.1997 13.7682 11.4557 13.9602 11.6637 14.0882C11.8077 14.1842 11.9197 14.2402 11.9997 14.2562L12.0957 14.2322C12.1597 14.2002 12.2397 14.1522 12.3357 14.0882C12.5437 13.9602 12.7997 13.7682 13.1037 13.5122C13.6477 13.0322 14.2877 12.3602 15.0237 11.4962C15.5517 10.8882 16.1117 10.2162 16.7037 9.48018L17.3997 8.54418C17.5117 8.38418 17.6717 8.28818 17.8797 8.25618C18.0877 8.22418 18.2757 8.27218 18.4437 8.40018C18.6117 8.52818 18.7117 8.69218 18.7437 8.89218C18.7757 9.09218 18.7277 9.28018 18.5997 9.45618L17.8797 10.3922C17.2877 11.1602 16.7117 11.8642 16.1517 12.5042C15.3677 13.4002 14.6877 14.1042 14.1117 14.6162C13.7277 14.9522 13.3917 15.2082 13.1037 15.3842C12.7037 15.6242 12.3357 15.7442 11.9997 15.7442C11.6637 15.7442 11.2957 15.6242 10.8957 15.3842C10.5917 15.2082 10.2557 14.9522 9.88769 14.6162C9.31169 14.1042 8.63169 13.4002 7.84769 12.5042C7.28769 11.8642 6.71169 11.1602 6.11969 10.3922L5.39969 9.45618C5.27169 9.28018 5.22369 9.09218 5.25569 8.89218C5.28769 8.69218 5.38769 8.52818 5.55569 8.40018C5.72369 8.27218 5.90769 8.22418 6.10769 8.25618C6.30769 8.28818 6.47169 8.38418 6.59969 8.54418Z" fill="currentColor"/>',
33
+ },
34
+ 'arrow-right': {
35
+ viewBox: '0 0 24 24',
36
+ content: '<path d="M8.95801 5.66748C9.03839 5.65473 9.11451 5.66864 9.20605 5.73389L10.1377 6.45068V6.44971C10.8998 7.03715 11.5968 7.60803 12.2295 8.16162L12.2324 8.16455C13.1197 8.9251 13.8073 9.59004 14.3008 10.1606L14.3076 10.1694C14.6307 10.5233 14.8662 10.8344 15.0225 11.104C15.2429 11.486 15.3271 11.7813 15.3271 12.0005C15.3271 12.2195 15.2433 12.5136 15.0234 12.895C14.8672 13.1649 14.6311 13.4773 14.3076 13.8315L14.3008 13.8394C13.8073 14.4099 13.1197 15.0749 12.2324 15.8354L12.2295 15.8384C11.5969 16.3919 10.8997 16.9629 10.1377 17.5503L9.20605 18.2651C9.11421 18.3308 9.03859 18.3453 8.95801 18.3325C8.86866 18.3182 8.7976 18.2786 8.73145 18.1919C8.66935 18.1104 8.65399 18.0404 8.66699 17.9585C8.6802 17.876 8.71831 17.8053 8.8125 17.7368L8.98438 17.6128V17.5903L9.72852 17.0386L9.73633 17.0327C10.4774 16.4527 11.1628 15.8868 11.793 15.3374C12.6478 14.5954 13.3265 13.9424 13.8232 13.3794L13.8242 13.3804L13.8301 13.3726C14.0902 13.0636 14.2997 12.7967 14.4541 12.5737L14.4658 12.5562L14.4756 12.5386C14.5597 12.3871 14.6348 12.2279 14.6641 12.0815L14.6826 11.9897L14.6602 11.8989L14.6357 11.8032L14.625 11.7583L14.6045 11.7183L14.4844 11.478L14.4707 11.4517L14.4541 11.4272L14.1816 11.0601C14.0775 10.9268 13.9602 10.782 13.8301 10.6274L13.8242 10.6206L13.417 10.1812C12.9763 9.72506 12.4343 9.21823 11.793 8.66162C11.1791 8.12854 10.4936 7.56459 9.7373 6.96924L9.73242 6.96533L8.82031 6.26904L8.80664 6.2583L8.79102 6.24854C8.71765 6.20176 8.68192 6.1473 8.66797 6.05713C8.65325 5.96146 8.67179 5.88741 8.73145 5.80908C8.79767 5.72216 8.86856 5.68179 8.95801 5.66748Z" fill="currentColor" stroke="currentColor" stroke-width="0.833333"/>',
37
+ },
38
+ 'online-dot': {
39
+ viewBox: '0 0 10 10',
40
+ content: '<circle cx="5" cy="5" r="4.5" fill="#00AF6C" stroke="currentColor" stroke-width="1"/>',
41
+ },
42
+ 'eclipse': {
43
+ viewBox: '0 0 10 10',
44
+ content: '<circle cx="5" cy="5" r="3" fill="currentColor"/>',
45
+ },
46
+ 'copy': {
47
+ viewBox: '0 0 16 16',
48
+ content: '<path d="M5.5 4V2.5A1.5 1.5 0 0 1 7 1h6.5A1.5 1.5 0 0 1 15 2.5V9A1.5 1.5 0 0 1 13.5 10.5H12M1 7a1.5 1.5 0 0 1 1.5-1.5H9A1.5 1.5 0 0 1 10.5 7v6.5A1.5 1.5 0 0 1 9 15H2.5A1.5 1.5 0 0 1 1 13.5V7Z" stroke="currentColor" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round" fill="none"/>',
49
+ },
50
+ 'thumbs-up': {
51
+ viewBox: '0 0 16 16',
52
+ content: '<path d="M5 14H3.5A1.5 1.5 0 0 1 2 12.5v-4A1.5 1.5 0 0 1 3.5 7H5m0 7V7m0 7h6.5a1.25 1.25 0 0 0 1.23-1.02l1-4A1.25 1.25 0 0 0 12.5 6.5H9.5V3.5a1.5 1.5 0 0 0-3 0V6L5 7" stroke="currentColor" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round" fill="none"/>',
53
+ },
54
+ 'thumbs-down': {
55
+ viewBox: '0 0 16 16',
56
+ content: '<path d="M11 2h1.5A1.5 1.5 0 0 1 14 3.5v4A1.5 1.5 0 0 1 12.5 9H11M11 2V9m0-7H4.5A1.25 1.25 0 0 0 3.27 3.02l-1 4A1.25 1.25 0 0 0 3.5 9.5H6.5V12.5a1.5 1.5 0 0 0 3 0V10l1.5-1" stroke="currentColor" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round" fill="none"/>',
57
+ },
58
+ 'sparkle': {
59
+ viewBox: '0 0 16 16',
60
+ content: '<path d="M8 1C8 4.6 9.4 6.4 11 8C9.4 9.6 8 11.4 8 15C8 11.4 6.6 9.6 5 8C6.6 6.4 8 4.6 8 1Z" fill="currentColor"/><path d="M8 1C8 4.6 9.4 6.4 11 8C9.4 9.6 8 11.4 8 15C8 11.4 6.6 9.6 5 8C6.6 6.4 8 4.6 8 1Z" fill="currentColor" transform="rotate(90 8 8)"/>',
61
+ },
62
+ 'check': {
63
+ viewBox: '0 0 20 20',
64
+ content: '<path d="M4 10.5L8 14.5L16 6.5" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/>',
65
+ },
66
+ 'share': {
67
+ viewBox: '0 0 16 16',
68
+ content: '<path d="M10.656 10.112C10.336 10.016 10.1174 9.79197 10 9.43997C9.92537 9.2053 9.89336 8.89064 9.90403 8.49597L9.48803 8.47997C8.8587 8.4693 8.38403 8.4693 8.06403 8.47997C7.54136 8.49064 7.09336 8.54397 6.72003 8.63997C6.36803 8.7253 5.9947 8.86397 5.60003 9.05597C5.36537 9.18397 5.0187 9.39197 4.56003 9.67997L4.25603 9.85597C4.18136 9.9093 4.0987 9.93597 4.00803 9.93597C3.91736 9.93597 3.83203 9.91464 3.75203 9.87197C3.67203 9.8293 3.6107 9.76797 3.56803 9.68797C3.52536 9.60797 3.50403 9.5253 3.50403 9.43997C3.50403 7.97864 3.86403 6.79997 4.58403 5.90397C5.30403 5.00797 6.33603 4.4533 7.68003 4.23997C7.98937 4.18664 8.34136 4.15464 8.73603 4.14397H9.77603L9.90403 4.15997C9.89336 3.7653 9.92537 3.45064 10 3.21597C10.1174 2.86397 10.336 2.63997 10.656 2.54397C10.8694 2.47997 11.072 2.47997 11.264 2.54397C11.4347 2.58664 11.6214 2.68264 11.824 2.83197C11.9414 2.9173 12.1334 3.08264 12.4 3.32797L13.92 4.63997C14.4 5.05597 14.7094 5.3493 14.848 5.51997C15.0614 5.78664 15.168 6.05864 15.168 6.33597C15.168 6.6133 15.0614 6.87997 14.848 7.13597C14.7094 7.30664 14.4054 7.59997 13.936 8.01597L12.752 9.02397L12.32 9.42397C12.032 9.67997 11.8187 9.85597 11.68 9.95197C11.456 10.1013 11.2374 10.176 11.024 10.176C10.9067 10.176 10.784 10.1546 10.656 10.112ZM1.90403 13.76C1.5627 13.4186 1.31203 12.992 1.15203 12.48C1.0027 12.0213 0.912031 11.408 0.880031 10.64C0.848031 10.1493 0.832031 9.2693 0.832031 7.99997C0.832031 6.73064 0.848031 5.85064 0.880031 5.35997C0.912031 4.59197 1.0027 3.97864 1.15203 3.51997C1.31203 3.00797 1.5627 2.5813 1.90403 2.23997C2.2347 1.9093 2.64003 1.66397 3.12003 1.50397C3.5467 1.3653 4.10136 1.2693 4.78403 1.21597C5.26403 1.18397 6.01603 1.16797 7.04003 1.16797C7.1787 1.16797 7.2987 1.21597 7.40003 1.31197C7.50136 1.40797 7.55203 1.5253 7.55203 1.66397C7.55203 1.80264 7.50136 1.91997 7.40003 2.01597C7.2987 2.11197 7.1787 2.15997 7.04003 2.15997C6.10136 2.17064 5.39736 2.18664 4.92803 2.20797C4.3307 2.25064 3.85336 2.32797 3.49603 2.43997C3.1387 2.55197 2.8427 2.71997 2.60803 2.94397C2.3627 3.19997 2.18136 3.5413 2.06403 3.96797C1.95736 4.36264 1.88803 4.90664 1.85603 5.59997C1.84536 6.0373 1.83736 6.8373 1.83203 7.99997C1.8267 9.16264 1.8347 9.96264 1.85603 10.4C1.88803 11.0933 1.95736 11.6373 2.06403 12.032C2.18136 12.4586 2.36536 12.7973 2.61603 13.048C2.8667 13.2986 3.2107 13.4826 3.64803 13.6C4.03203 13.7066 4.57603 13.776 5.28003 13.808C5.71736 13.8293 6.51736 13.84 7.68003 13.84C8.8427 13.84 9.6427 13.8293 10.08 13.808C10.7734 13.776 11.3174 13.7066 11.712 13.6C12.1494 13.4826 12.4907 13.3013 12.736 13.056C12.9814 12.8106 13.1627 12.48 13.28 12.064C13.3974 11.648 13.472 11.0666 13.504 10.32C13.504 10.1813 13.552 10.0666 13.648 9.97597C13.744 9.8853 13.8614 9.83997 14 9.83997H14.016C14.1547 9.83997 14.272 9.89064 14.368 9.99197C14.464 10.0933 14.5067 10.2133 14.496 10.352C14.464 11.184 14.3787 11.8453 14.24 12.336C14.08 12.912 13.8134 13.3866 13.44 13.76C13.0987 14.1013 12.6774 14.352 12.176 14.512C11.7067 14.6613 11.088 14.7573 10.32 14.8C9.82936 14.8213 8.94936 14.832 7.68003 14.832C6.4107 14.832 5.5307 14.8213 5.04003 14.8C4.26136 14.7573 3.6427 14.6613 3.18403 14.512C2.6827 14.352 2.25603 14.1013 1.90403 13.76ZM11.632 8.68797C11.824 8.5173 11.9787 8.37864 12.096 8.27197L13.28 7.26397C13.5894 6.98664 13.7974 6.79464 13.904 6.68797C14.0747 6.5173 14.16 6.3973 14.16 6.32797C14.16 6.25864 14.0747 6.13864 13.904 5.96797C13.7867 5.8613 13.5734 5.6693 13.264 5.39197L11.744 4.06397C11.52 3.87197 11.3654 3.73864 11.28 3.66397C11.1307 3.5573 11.0294 3.50397 10.976 3.50397H10.96C10.896 3.59997 10.88 3.8933 10.912 4.38397L10.928 4.65597C10.928 4.79464 10.88 4.91197 10.784 5.00797C10.688 5.10397 10.5707 5.15197 10.432 5.15197H9.77603C9.3387 5.1413 9.01336 5.1413 8.80003 5.15197C8.43737 5.15197 8.11736 5.17864 7.84003 5.23197C5.92003 5.5413 4.8267 6.6293 4.56003 8.49597C4.90136 8.30397 5.20536 8.14397 5.47203 8.01597C5.81336 7.85597 6.14936 7.73864 6.48003 7.66397C6.91737 7.5573 7.4187 7.4933 7.98403 7.47197C8.32537 7.4613 8.83203 7.46664 9.50403 7.48797L10.432 7.50397C10.5707 7.50397 10.688 7.55197 10.784 7.64797C10.88 7.74397 10.928 7.8613 10.928 7.99997L10.912 8.27197C10.88 8.7733 10.9014 9.06664 10.976 9.15197C11.0187 9.1733 11.0827 9.15464 11.168 9.09597C11.2534 9.0373 11.408 8.9013 11.632 8.68797Z" fill="currentColor"/>',
69
+ },
70
+ 'mic': {
71
+ viewBox: '0 0 16 16',
72
+ content: '<mask id="mask-mic" fill="white"><path d="M7.9999 11.168C7.33857 11.168 6.72524 10.9947 6.1599 10.648C5.59457 10.3014 5.14657 9.8347 4.8159 9.24803C4.48524 8.66136 4.3199 8.02136 4.3199 7.32803V4.67203C4.3199 3.9787 4.48524 3.3387 4.8159 2.75203C5.14657 2.16536 5.59457 1.6987 6.1599 1.35203C6.72524 1.00536 7.33857 0.832031 7.9999 0.832031C8.66124 0.832031 9.27457 1.00536 9.8399 1.35203C10.4052 1.6987 10.8532 2.16536 11.1839 2.75203C11.5146 3.3387 11.6799 3.9787 11.6799 4.67203V7.32803C11.6799 8.02136 11.5146 8.66136 11.1839 9.24803C10.8532 9.8347 10.4052 10.3014 9.8399 10.648C9.27457 10.9947 8.66124 11.168 7.9999 11.168ZM7.9999 1.84003C7.50924 1.84003 7.0559 1.96536 6.6399 2.21603C6.2239 2.4667 5.89324 2.8107 5.6479 3.24803C5.40257 3.68536 5.2799 4.16003 5.2799 4.67203V7.32803C5.2799 7.84003 5.40257 8.3147 5.6479 8.75203C5.89324 9.18936 6.2239 9.53336 6.6399 9.78403C7.0559 10.0347 7.50924 10.16 7.9999 10.16C8.43724 10.16 8.8479 10.0587 9.2319 9.85603C9.6159 9.65336 9.93324 9.37603 10.1839 9.02403C10.4346 8.67203 10.5972 8.27736 10.6719 7.84003H9.2799C9.1519 7.84003 9.0399 7.78936 8.9439 7.68803C8.8479 7.5867 8.7999 7.4667 8.7999 7.32803C8.7999 7.18936 8.8479 7.07203 8.9439 6.97603C9.0399 6.88003 9.1519 6.83203 9.2799 6.83203H10.7199V5.16803H9.2799C9.1519 5.16803 9.0399 5.12003 8.9439 5.02403C8.8479 4.92803 8.7999 4.8107 8.7999 4.67203C8.7999 4.53336 8.8479 4.41336 8.9439 4.31203C9.0399 4.2107 9.1519 4.16003 9.2799 4.16003H10.6719C10.5972 3.7227 10.4346 3.32803 10.1839 2.97603C9.93324 2.62403 9.6159 2.3467 9.2319 2.14403C8.8479 1.94136 8.43724 1.84003 7.9999 1.84003ZM3.3599 7.32803C3.3599 8.2027 3.57324 9.0187 3.9999 9.77603C4.40524 10.5014 4.9599 11.0774 5.6639 11.504C6.37857 11.9414 7.15724 12.16 7.9999 12.16C8.84257 12.16 9.62124 11.9414 10.3359 11.504C11.0399 11.0774 11.5946 10.5014 11.9999 9.77603C12.4266 9.0187 12.6399 8.2027 12.6399 7.32803C12.6399 7.18936 12.6879 7.07203 12.7839 6.97603C12.8799 6.88003 12.9919 6.83203 13.1199 6.83203C13.2479 6.83203 13.3599 6.88003 13.4559 6.97603C13.5519 7.07203 13.5999 7.18936 13.5999 7.32803C13.5999 8.3307 13.3706 9.26936 12.9119 10.144C12.4639 10.9867 11.8506 11.6774 11.0719 12.216C10.2932 12.7547 9.42923 13.0667 8.4799 13.152V14.16H9.9199C10.0479 14.16 10.1599 14.2107 10.2559 14.312C10.3519 14.4134 10.3999 14.5334 10.3999 14.672C10.3999 14.8107 10.3519 14.928 10.2559 15.024C10.1599 15.12 10.0479 15.168 9.9199 15.168H6.0799C5.9519 15.168 5.8399 15.12 5.7439 15.024C5.6479 14.928 5.5999 14.8107 5.5999 14.672C5.5999 14.5334 5.6479 14.4134 5.7439 14.312C5.8399 14.2107 5.9519 14.16 6.0799 14.16H7.5199V13.152C6.57057 13.0667 5.70657 12.7547 4.9279 12.216C4.14924 11.6774 3.5359 10.9867 3.0879 10.144C2.62924 9.26936 2.3999 8.3307 2.3999 7.32803C2.3999 7.18936 2.4479 7.07203 2.5439 6.97603C2.6399 6.88003 2.7519 6.83203 2.8799 6.83203C3.0079 6.83203 3.1199 6.88003 3.2159 6.97603C3.3119 7.07203 3.3599 7.18936 3.3599 7.32803Z"/></mask><path d="M7.9999 11.168C7.33857 11.168 6.72524 10.9947 6.1599 10.648C5.59457 10.3014 5.14657 9.8347 4.8159 9.24803C4.48524 8.66136 4.3199 8.02136 4.3199 7.32803V4.67203C4.3199 3.9787 4.48524 3.3387 4.8159 2.75203C5.14657 2.16536 5.59457 1.6987 6.1599 1.35203C6.72524 1.00536 7.33857 0.832031 7.9999 0.832031C8.66124 0.832031 9.27457 1.00536 9.8399 1.35203C10.4052 1.6987 10.8532 2.16536 11.1839 2.75203C11.5146 3.3387 11.6799 3.9787 11.6799 4.67203V7.32803C11.6799 8.02136 11.5146 8.66136 11.1839 9.24803C10.8532 9.8347 10.4052 10.3014 9.8399 10.648C9.27457 10.9947 8.66124 11.168 7.9999 11.168ZM7.9999 1.84003C7.50924 1.84003 7.0559 1.96536 6.6399 2.21603C6.2239 2.4667 5.89324 2.8107 5.6479 3.24803C5.40257 3.68536 5.2799 4.16003 5.2799 4.67203V7.32803C5.2799 7.84003 5.40257 8.3147 5.6479 8.75203C5.89324 9.18936 6.2239 9.53336 6.6399 9.78403C7.0559 10.0347 7.50924 10.16 7.9999 10.16C8.43724 10.16 8.8479 10.0587 9.2319 9.85603C9.6159 9.65336 9.93324 9.37603 10.1839 9.02403C10.4346 8.67203 10.5972 8.27736 10.6719 7.84003H9.2799C9.1519 7.84003 9.0399 7.78936 8.9439 7.68803C8.8479 7.5867 8.7999 7.4667 8.7999 7.32803C8.7999 7.18936 8.8479 7.07203 8.9439 6.97603C9.0399 6.88003 9.1519 6.83203 9.2799 6.83203H10.7199V5.16803H9.2799C9.1519 5.16803 9.0399 5.12003 8.9439 5.02403C8.8479 4.92803 8.7999 4.8107 8.7999 4.67203C8.7999 4.53336 8.8479 4.41336 8.9439 4.31203C9.0399 4.2107 9.1519 4.16003 9.2799 4.16003H10.6719C10.5972 3.7227 10.4346 3.32803 10.1839 2.97603C9.93324 2.62403 9.6159 2.3467 9.2319 2.14403C8.8479 1.94136 8.43724 1.84003 7.9999 1.84003ZM3.3599 7.32803C3.3599 8.2027 3.57324 9.0187 3.9999 9.77603C4.40524 10.5014 4.9599 11.0774 5.6639 11.504C6.37857 11.9414 7.15724 12.16 7.9999 12.16C8.84257 12.16 9.62124 11.9414 10.3359 11.504C11.0399 11.0774 11.5946 10.5014 11.9999 9.77603C12.4266 9.0187 12.6399 8.2027 12.6399 7.32803C12.6399 7.18936 12.6879 7.07203 12.7839 6.97603C12.8799 6.88003 12.9919 6.83203 13.1199 6.83203C13.2479 6.83203 13.3599 6.88003 13.4559 6.97603C13.5519 7.07203 13.5999 7.18936 13.5999 7.32803C13.5999 8.3307 13.3706 9.26936 12.9119 10.144C12.4639 10.9867 11.8506 11.6774 11.0719 12.216C10.2932 12.7547 9.42923 13.0667 8.4799 13.152V14.16H9.9199C10.0479 14.16 10.1599 14.2107 10.2559 14.312C10.3519 14.4134 10.3999 14.5334 10.3999 14.672C10.3999 14.8107 10.3519 14.928 10.2559 15.024C10.1599 15.12 10.0479 15.168 9.9199 15.168H6.0799C5.9519 15.168 5.8399 15.12 5.7439 15.024C5.6479 14.928 5.5999 14.8107 5.5999 14.672C5.5999 14.5334 5.6479 14.4134 5.7439 14.312C5.8399 14.2107 5.9519 14.16 6.0799 14.16H7.5199V13.152C6.57057 13.0667 5.70657 12.7547 4.9279 12.216C4.14924 11.6774 3.5359 10.9867 3.0879 10.144C2.62924 9.26936 2.3999 8.3307 2.3999 7.32803C2.3999 7.18936 2.4479 7.07203 2.5439 6.97603C2.6399 6.88003 2.7519 6.83203 2.8799 6.83203C3.0079 6.83203 3.1199 6.88003 3.2159 6.97603C3.3119 7.07203 3.3599 7.18936 3.3599 7.32803Z" fill="currentColor" stroke="currentColor" stroke-width="2" mask="url(#mask-mic)"/>',
73
+ },
74
+ 'reload': {
75
+ viewBox: '0 0 24 24',
76
+ content: ` <path d="M15.1667 0.999756L15.7646 2.11753C16.1689 2.87322 16.371 3.25107 16.2374 3.41289C16.1037 3.57471 15.6635 3.44402 14.7831 3.18264C13.9029 2.92131 12.9684 2.78071 12 2.78071C6.75329 2.78071 2.5 6.90822 2.5 11.9998C2.5 13.6789 2.96262 15.2533 3.77093 16.6093M8.83333 22.9998L8.23536 21.882C7.83108 21.1263 7.62894 20.7484 7.7626 20.5866C7.89627 20.4248 8.33649 20.5555 9.21689 20.8169C10.0971 21.0782 11.0316 21.2188 12 21.2188C17.2467 21.2188 21.5 17.0913 21.5 11.9998C21.5 10.3206 21.0374 8.74623 20.2291 7.39023" stroke="currentColor" />`,
77
+ },
78
+ };
@@ -0,0 +1,3 @@
1
+ export function format(first, middle, last) {
2
+ return (first || '') + (middle ? ` ${middle}` : '') + (last ? ` ${last}` : '');
3
+ }
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface AiCard extends Components.AiCard, HTMLElement {}
4
+ export const AiCard: {
5
+ prototype: AiCard;
6
+ new (): AiCard;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1 @@
1
+ import{p as a,t as d,H as r,h as e,c as i}from"./p-CWjXxYJI.js";const o=a(class extends r{constructor(a){super(),!1!==a&&this.__registerHost(),this.__attachShadow()}noPadding=!1;noShadow=!1;render(){return e(i,{key:"4805b02b4eee8e01d0233de788a58770a85db2aa"},e("div",{key:"75576f8a791fc49c3a750d491b0e835d0e5ce8cb",class:{card:!0,"card--no-padding":this.noPadding,"card--no-shadow":this.noShadow}},e("slot",{key:"e16cdb10e803451fdd47006a98656168fe2495f4"})))}static get style(){return":host{--ai-card-bg:var(--ai-bg-card, #ffffff);--ai-card-border:1px solid var(--ai-border-default, #eeeeee);--ai-card-radius:16px;--ai-card-padding:16px;--ai-card-gap:12px;--ai-card-shadow:0px 1px 2px 0px rgba(18, 18, 23, 0.05);--ai-text-color:var(--ai-text-primary, #333333);display:block;direction:rtl}.card{background:var(--ai-card-bg);border:var(--ai-card-border);border-radius:var(--ai-card-radius);padding:var(--ai-card-padding);box-shadow:var(--ai-card-shadow);box-sizing:border-box;overflow:hidden;color:var(--ai-text-color);width:100%;display:flex;flex-direction:column;gap:var(--ai-card-gap);text-align:right;font-size:14px;line-height:20px}.card--no-padding{padding:0}.card--no-shadow{box-shadow:none}"}},[769,"ai-card",{noPadding:[4,"no-padding"],noShadow:[4,"no-shadow"]}]),c=o,n=function(){"undefined"!=typeof customElements&&["ai-card"].forEach((a=>{"ai-card"===a&&(customElements.get(d(a))||customElements.define(d(a),o))}))};export{c as AiCard,n as defineCustomElement}