polymorph-ui-components 0.1.0 → 0.4.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 (71) hide show
  1. package/dist/Chat/Chat.svelte +144 -0
  2. package/dist/Chat/Chat.svelte.d.ts +4 -0
  3. package/dist/Chat/controller.svelte.d.ts +24 -0
  4. package/dist/Chat/controller.svelte.js +190 -0
  5. package/dist/Chat/properties.d.ts +50 -0
  6. package/dist/Chat/properties.js +1 -0
  7. package/dist/Chat/roles.d.ts +2 -0
  8. package/dist/Chat/roles.js +3 -0
  9. package/dist/Chat/types.d.ts +45 -0
  10. package/dist/Chat/types.js +1 -0
  11. package/dist/ChatBubble/ChatBubble.svelte +418 -0
  12. package/dist/ChatBubble/ChatBubble.svelte.d.ts +4 -0
  13. package/dist/ChatBubble/properties.d.ts +43 -0
  14. package/dist/ChatBubble/properties.js +1 -0
  15. package/dist/ChatComposer/ChatComposer.svelte +284 -0
  16. package/dist/ChatComposer/ChatComposer.svelte.d.ts +4 -0
  17. package/dist/ChatComposer/properties.d.ts +33 -0
  18. package/dist/ChatComposer/properties.js +1 -0
  19. package/dist/ChatHeader/ChatHeader.svelte +165 -0
  20. package/dist/ChatHeader/ChatHeader.svelte.d.ts +4 -0
  21. package/dist/ChatHeader/properties.d.ts +19 -0
  22. package/dist/ChatHeader/properties.js +1 -0
  23. package/dist/ChatMessage/ChatMessage.svelte +325 -0
  24. package/dist/ChatMessage/ChatMessage.svelte.d.ts +4 -0
  25. package/dist/ChatMessage/properties.d.ts +29 -0
  26. package/dist/ChatMessage/properties.js +1 -0
  27. package/dist/ChatMessageList/ChatMessageList.svelte +175 -0
  28. package/dist/ChatMessageList/ChatMessageList.svelte.d.ts +4 -0
  29. package/dist/ChatMessageList/properties.d.ts +21 -0
  30. package/dist/ChatMessageList/properties.js +1 -0
  31. package/dist/ChatSuggestions/ChatSuggestions.svelte +42 -0
  32. package/dist/ChatSuggestions/ChatSuggestions.svelte.d.ts +4 -0
  33. package/dist/ChatSuggestions/properties.d.ts +16 -0
  34. package/dist/ChatSuggestions/properties.js +1 -0
  35. package/dist/ChatToolStatus/ChatToolStatus.svelte +56 -0
  36. package/dist/ChatToolStatus/ChatToolStatus.svelte.d.ts +4 -0
  37. package/dist/ChatToolStatus/properties.d.ts +10 -0
  38. package/dist/ChatToolStatus/properties.js +1 -0
  39. package/dist/Draggable/Draggable.svelte +169 -0
  40. package/dist/Draggable/Draggable.svelte.d.ts +4 -0
  41. package/dist/Draggable/properties.d.ts +25 -0
  42. package/dist/Draggable/properties.js +1 -0
  43. package/dist/MediaPlayer/MediaPlayer.svelte +245 -0
  44. package/dist/MediaPlayer/MediaPlayer.svelte.d.ts +4 -0
  45. package/dist/MediaPlayer/properties.d.ts +27 -0
  46. package/dist/MediaPlayer/properties.js +1 -0
  47. package/dist/MediaUpload/MediaUpload.svelte +524 -0
  48. package/dist/MediaUpload/MediaUpload.svelte.d.ts +4 -0
  49. package/dist/MediaUpload/properties.d.ts +46 -0
  50. package/dist/MediaUpload/properties.js +1 -0
  51. package/dist/Resizable/Resizable.svelte +303 -0
  52. package/dist/Resizable/Resizable.svelte.d.ts +4 -0
  53. package/dist/Resizable/properties.d.ts +27 -0
  54. package/dist/Resizable/properties.js +1 -0
  55. package/dist/assets/add.svg +4 -0
  56. package/dist/assets/attach.svg +3 -0
  57. package/dist/assets/chat.svg +3 -0
  58. package/dist/assets/file.svg +4 -0
  59. package/dist/assets/mic.svg +5 -0
  60. package/dist/assets/mute.svg +5 -0
  61. package/dist/assets/pause.svg +4 -0
  62. package/dist/assets/play.svg +3 -0
  63. package/dist/assets/retry.svg +4 -0
  64. package/dist/assets/send.svg +4 -0
  65. package/dist/assets/stop.svg +3 -0
  66. package/dist/assets/thumb-down.svg +4 -0
  67. package/dist/assets/thumb-up.svg +4 -0
  68. package/dist/assets/volume.svg +5 -0
  69. package/dist/index.d.ts +27 -0
  70. package/dist/index.js +14 -0
  71. package/package.json +1 -1
@@ -0,0 +1,303 @@
1
+ <script lang="ts">
2
+ import type { ResizableProperties, ResizeEdge } from './properties';
3
+
4
+ let {
5
+ width = $bindable(null),
6
+ height = $bindable(null),
7
+ minWidth = 0,
8
+ maxWidth = Number.POSITIVE_INFINITY,
9
+ minHeight = 0,
10
+ maxHeight = Number.POSITIVE_INFINITY,
11
+ handles = ['bottom-right'],
12
+ step = 16,
13
+ disabled = false,
14
+ handleLabel = 'Resize',
15
+ children,
16
+ onresize,
17
+ onresizestart,
18
+ onresizeend,
19
+ testId,
20
+ classes
21
+ }: ResizableProperties = $props();
22
+
23
+ const DIRS: Record<ResizeEdge, { x: -1 | 0 | 1; y: -1 | 0 | 1 }> = {
24
+ top: { x: 0, y: -1 },
25
+ right: { x: 1, y: 0 },
26
+ bottom: { x: 0, y: 1 },
27
+ left: { x: -1, y: 0 },
28
+ 'top-left': { x: -1, y: -1 },
29
+ 'top-right': { x: 1, y: -1 },
30
+ 'bottom-left': { x: -1, y: 1 },
31
+ 'bottom-right': { x: 1, y: 1 }
32
+ };
33
+
34
+ let container: HTMLElement | null = $state(null);
35
+ let active: {
36
+ edge: ResizeEdge;
37
+ pointerId: number;
38
+ startX: number;
39
+ startY: number;
40
+ startW: number;
41
+ startH: number;
42
+ } | null = $state(null);
43
+
44
+ let activeHandles = $derived(disabled ? [] : handles);
45
+
46
+ function clampWidth(value: number): number {
47
+ return Math.min(maxWidth, Math.max(minWidth, value));
48
+ }
49
+
50
+ function clampHeight(value: number): number {
51
+ return Math.min(maxHeight, Math.max(minHeight, value));
52
+ }
53
+
54
+ function measuredWidth(): number {
55
+ return typeof width === 'number' ? width : (container?.offsetWidth ?? 0);
56
+ }
57
+
58
+ function measuredHeight(): number {
59
+ return typeof height === 'number' ? height : (container?.offsetHeight ?? 0);
60
+ }
61
+
62
+ function axisOf(edge: ResizeEdge): 'x' | 'y' | 'both' {
63
+ const dir = DIRS[edge];
64
+ if (dir.x !== 0 && dir.y !== 0) {
65
+ return 'both';
66
+ }
67
+ return dir.x !== 0 ? 'x' : 'y';
68
+ }
69
+
70
+ function orientationOf(edge: ResizeEdge): 'horizontal' | 'vertical' | null {
71
+ const axis = axisOf(edge);
72
+ if (axis === 'x') {
73
+ return 'vertical';
74
+ }
75
+ if (axis === 'y') {
76
+ return 'horizontal';
77
+ }
78
+ return null;
79
+ }
80
+
81
+ function startResize(
82
+ event: PointerEvent & { currentTarget: HTMLElement },
83
+ edge: ResizeEdge
84
+ ): void {
85
+ if (disabled) {
86
+ return;
87
+ }
88
+ event.preventDefault();
89
+ const startW = clampWidth(measuredWidth());
90
+ const startH = clampHeight(measuredHeight());
91
+ width = startW;
92
+ height = startH;
93
+ active = {
94
+ edge,
95
+ pointerId: event.pointerId,
96
+ startX: event.clientX,
97
+ startY: event.clientY,
98
+ startW,
99
+ startH
100
+ };
101
+ event.currentTarget.setPointerCapture(event.pointerId);
102
+ onresizestart?.({ width: startW, height: startH });
103
+ }
104
+
105
+ function moveResize(event: PointerEvent): void {
106
+ if (active === null) {
107
+ return;
108
+ }
109
+ const dir = DIRS[active.edge];
110
+ if (dir.x !== 0) {
111
+ width = clampWidth(active.startW + dir.x * (event.clientX - active.startX));
112
+ }
113
+ if (dir.y !== 0) {
114
+ height = clampHeight(active.startH + dir.y * (event.clientY - active.startY));
115
+ }
116
+ onresize?.({ width: measuredWidth(), height: measuredHeight() });
117
+ }
118
+
119
+ function endResize(event: PointerEvent & { currentTarget: HTMLElement }): void {
120
+ if (active === null) {
121
+ return;
122
+ }
123
+ if (event.currentTarget.hasPointerCapture(event.pointerId)) {
124
+ event.currentTarget.releasePointerCapture(event.pointerId);
125
+ }
126
+ active = null;
127
+ onresizeend?.({ width: measuredWidth(), height: measuredHeight() });
128
+ }
129
+
130
+ function keyResize(event: KeyboardEvent, edge: ResizeEdge): void {
131
+ if (disabled) {
132
+ return;
133
+ }
134
+ const dir = DIRS[edge];
135
+ let nextWidth = measuredWidth();
136
+ let nextHeight = measuredHeight();
137
+ let handled = false;
138
+
139
+ if (dir.x !== 0 && (event.key === 'ArrowRight' || event.key === 'ArrowLeft')) {
140
+ nextWidth = clampWidth(nextWidth + (event.key === 'ArrowRight' ? step : -step));
141
+ handled = true;
142
+ }
143
+ if (dir.y !== 0 && (event.key === 'ArrowDown' || event.key === 'ArrowUp')) {
144
+ nextHeight = clampHeight(nextHeight + (event.key === 'ArrowDown' ? step : -step));
145
+ handled = true;
146
+ }
147
+
148
+ if (handled) {
149
+ event.preventDefault();
150
+ width = nextWidth;
151
+ height = nextHeight;
152
+ onresize?.({ width: nextWidth, height: nextHeight });
153
+ }
154
+ }
155
+
156
+ function valueNow(edge: ResizeEdge): number | null {
157
+ const axis = axisOf(edge);
158
+ if (axis === 'y') {
159
+ return typeof height === 'number' ? height : null;
160
+ }
161
+ return typeof width === 'number' ? width : null;
162
+ }
163
+
164
+ function valueMin(edge: ResizeEdge): number {
165
+ return axisOf(edge) === 'y' ? minHeight : minWidth;
166
+ }
167
+
168
+ function valueMax(edge: ResizeEdge): number | null {
169
+ const max = axisOf(edge) === 'y' ? maxHeight : maxWidth;
170
+ return Number.isFinite(max) ? max : null;
171
+ }
172
+ </script>
173
+
174
+ <div
175
+ class="resizable {classes ?? ''}"
176
+ class:resizing={active !== null}
177
+ data-pw={testId}
178
+ bind:this={container}
179
+ style:width={typeof width === 'number' ? `${width}px` : null}
180
+ style:height={typeof height === 'number' ? `${height}px` : null}
181
+ >
182
+ {#if typeof children === 'function'}
183
+ {@render children()}
184
+ {/if}
185
+
186
+ {#each activeHandles as edge (edge)}
187
+ <!-- svelte-ignore a11y_no_noninteractive_tabindex -->
188
+ <!-- svelte-ignore a11y_no_noninteractive_element_interactions -->
189
+ <div
190
+ class="handle"
191
+ data-edge={edge}
192
+ role="separator"
193
+ tabindex="0"
194
+ aria-label={handleLabel}
195
+ aria-orientation={orientationOf(edge)}
196
+ aria-valuenow={valueNow(edge)}
197
+ aria-valuemin={valueMin(edge)}
198
+ aria-valuemax={valueMax(edge)}
199
+ onpointerdown={(event) => startResize(event, edge)}
200
+ onpointermove={moveResize}
201
+ onpointerup={endResize}
202
+ onkeydown={(event) => keyResize(event, edge)}
203
+ ></div>
204
+ {/each}
205
+ </div>
206
+
207
+ <style>
208
+ .resizable {
209
+ position: relative;
210
+ box-sizing: border-box;
211
+ max-width: var(--resizable-max-width, none);
212
+ max-height: var(--resizable-max-height, none);
213
+ transition: var(--resizable-transition, none);
214
+ }
215
+
216
+ .resizable.resizing {
217
+ user-select: none;
218
+ transition: none;
219
+ }
220
+
221
+ @media (prefers-reduced-motion: reduce) {
222
+ .resizable {
223
+ transition: none;
224
+ }
225
+ }
226
+
227
+ .handle {
228
+ position: absolute;
229
+ touch-action: none;
230
+ z-index: var(--resizable-handle-z-index, 2);
231
+ background: var(--resizable-handle-color, transparent);
232
+ }
233
+
234
+ .handle:focus-visible {
235
+ outline: var(--resizable-handle-focus-outline, 2px solid #3b5bdb);
236
+ outline-offset: var(--resizable-handle-focus-outline-offset, -2px);
237
+ }
238
+
239
+ .handle[data-edge='top'],
240
+ .handle[data-edge='bottom'] {
241
+ left: 0;
242
+ right: 0;
243
+ height: var(--resizable-edge-size, 8px);
244
+ cursor: ns-resize;
245
+ }
246
+
247
+ .handle[data-edge='left'],
248
+ .handle[data-edge='right'] {
249
+ top: 0;
250
+ bottom: 0;
251
+ width: var(--resizable-edge-size, 8px);
252
+ cursor: ew-resize;
253
+ }
254
+
255
+ .handle[data-edge='top'] {
256
+ top: 0;
257
+ }
258
+
259
+ .handle[data-edge='bottom'] {
260
+ bottom: 0;
261
+ }
262
+
263
+ .handle[data-edge='left'] {
264
+ left: 0;
265
+ }
266
+
267
+ .handle[data-edge='right'] {
268
+ right: 0;
269
+ }
270
+
271
+ .handle[data-edge='top-left'],
272
+ .handle[data-edge='top-right'],
273
+ .handle[data-edge='bottom-left'],
274
+ .handle[data-edge='bottom-right'] {
275
+ width: var(--resizable-corner-size, 14px);
276
+ height: var(--resizable-corner-size, 14px);
277
+ z-index: var(--resizable-corner-z-index, 3);
278
+ }
279
+
280
+ .handle[data-edge='top-left'] {
281
+ top: 0;
282
+ left: 0;
283
+ cursor: nwse-resize;
284
+ }
285
+
286
+ .handle[data-edge='top-right'] {
287
+ top: 0;
288
+ right: 0;
289
+ cursor: nesw-resize;
290
+ }
291
+
292
+ .handle[data-edge='bottom-left'] {
293
+ bottom: 0;
294
+ left: 0;
295
+ cursor: nesw-resize;
296
+ }
297
+
298
+ .handle[data-edge='bottom-right'] {
299
+ bottom: 0;
300
+ right: 0;
301
+ cursor: nwse-resize;
302
+ }
303
+ </style>
@@ -0,0 +1,4 @@
1
+ import type { ResizableProperties } from './properties';
2
+ declare const Resizable: import("svelte").Component<ResizableProperties, {}, "width" | "height">;
3
+ type Resizable = ReturnType<typeof Resizable>;
4
+ export default Resizable;
@@ -0,0 +1,27 @@
1
+ import type { Snippet } from 'svelte';
2
+ export type ResizeEdge = 'top' | 'right' | 'bottom' | 'left' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
3
+ export type ResizeSize = {
4
+ width: number;
5
+ height: number;
6
+ };
7
+ export type ResizableProperties = OptionalResizableProperties & ResizableEventProperties;
8
+ export type OptionalResizableProperties = {
9
+ width?: number | null;
10
+ height?: number | null;
11
+ minWidth?: number;
12
+ maxWidth?: number;
13
+ minHeight?: number;
14
+ maxHeight?: number;
15
+ handles?: ResizeEdge[];
16
+ step?: number;
17
+ disabled?: boolean;
18
+ handleLabel?: string;
19
+ children?: Snippet;
20
+ testId?: string;
21
+ classes?: string;
22
+ };
23
+ export type ResizableEventProperties = {
24
+ onresize?: (size: ResizeSize) => void;
25
+ onresizestart?: (size: ResizeSize) => void;
26
+ onresizeend?: (size: ResizeSize) => void;
27
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" xmlns="http://www.w3.org/2000/svg">
2
+ <line x1="12" y1="5" x2="12" y2="19" />
3
+ <line x1="5" y1="12" x2="19" y2="12" />
4
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M16 7v9a4 4 0 0 1-8 0V6.5a2.5 2.5 0 0 1 5 0V15.5" />
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z" />
3
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M14 3v5h5" />
3
+ <path d="M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8l-5-5z" />
4
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">
2
+ <rect x="9" y="2" width="6" height="12" rx="3" />
3
+ <path d="M5 11a7 7 0 0 0 14 0" />
4
+ <line x1="12" y1="18" x2="12" y2="22" />
5
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M4 9v6h4l5 5V4L8 9H4z" fill="currentColor" stroke="none" />
3
+ <line x1="16" y1="9" x2="21" y2="14" />
4
+ <line x1="21" y1="9" x2="16" y2="14" />
5
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
2
+ <rect x="6" y="5" width="4" height="14" rx="1" />
3
+ <rect x="14" y="5" width="4" height="14" rx="1" />
4
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M8 5v14l11-7z" />
3
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">
2
+ <polyline points="23 4 23 10 17 10" />
3
+ <path d="M20.49 15a9 9 0 1 1-2.12-9.36L23 10" />
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M12 19V5" />
3
+ <path d="M6 11l6-6 6 6" />
4
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
2
+ <rect x="7" y="7" width="10" height="10" rx="2" />
3
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3z" />
3
+ <path d="M17 2h3a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2h-3" />
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3z" />
3
+ <path d="M7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3" />
4
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M4 9v6h4l5 5V4L8 9H4z" fill="currentColor" stroke="none" />
3
+ <path d="M16 8.5a4 4 0 0 1 0 7" />
4
+ <path d="M18.5 6a7 7 0 0 1 0 12" />
5
+ </svg>
package/dist/index.d.ts CHANGED
@@ -52,6 +52,20 @@ export { default as Phone } from './Phone/Phone.svelte';
52
52
  export { default as Combobox } from './Combobox/Combobox.svelte';
53
53
  export { default as ColorPicker } from './ColorPicker/ColorPicker.svelte';
54
54
  export { default as SplitInput } from './SplitInput/SplitInput.svelte';
55
+ export { default as MediaPlayer } from './MediaPlayer/MediaPlayer.svelte';
56
+ export { default as MediaUpload } from './MediaUpload/MediaUpload.svelte';
57
+ export { default as Chat } from './Chat/Chat.svelte';
58
+ export { default as ChatMessage } from './ChatMessage/ChatMessage.svelte';
59
+ export { default as ChatMessageList } from './ChatMessageList/ChatMessageList.svelte';
60
+ export { default as ChatComposer } from './ChatComposer/ChatComposer.svelte';
61
+ export { default as ChatHeader } from './ChatHeader/ChatHeader.svelte';
62
+ export { default as ChatToolStatus } from './ChatToolStatus/ChatToolStatus.svelte';
63
+ export { default as ChatSuggestions } from './ChatSuggestions/ChatSuggestions.svelte';
64
+ export { default as Resizable } from './Resizable/Resizable.svelte';
65
+ export { default as Draggable } from './Draggable/Draggable.svelte';
66
+ export { default as ChatBubble } from './ChatBubble/ChatBubble.svelte';
67
+ export { ChatController } from './Chat/controller.svelte';
68
+ export { partyOf } from './Chat/roles';
55
69
  export type * from './Button/properties';
56
70
  export type * from './Modal/properties';
57
71
  export type * from './Input/properties';
@@ -100,4 +114,17 @@ export type * from './Loader/properties';
100
114
  export type * from './Combobox/properties';
101
115
  export type * from './ColorPicker/properties';
102
116
  export type * from './SplitInput/properties';
117
+ export type * from './MediaPlayer/properties';
118
+ export type * from './MediaUpload/properties';
119
+ export type * from './Chat/types';
120
+ export type * from './Chat/properties';
121
+ export type * from './ChatMessage/properties';
122
+ export type * from './ChatMessageList/properties';
123
+ export type * from './ChatComposer/properties';
124
+ export type * from './ChatHeader/properties';
125
+ export type * from './ChatToolStatus/properties';
126
+ export type * from './ChatSuggestions/properties';
127
+ export type * from './Resizable/properties';
128
+ export type * from './Draggable/properties';
129
+ export type * from './ChatBubble/properties';
103
130
  export { validateInput } from './utils';
package/dist/index.js CHANGED
@@ -52,4 +52,18 @@ export { default as Phone } from './Phone/Phone.svelte';
52
52
  export { default as Combobox } from './Combobox/Combobox.svelte';
53
53
  export { default as ColorPicker } from './ColorPicker/ColorPicker.svelte';
54
54
  export { default as SplitInput } from './SplitInput/SplitInput.svelte';
55
+ export { default as MediaPlayer } from './MediaPlayer/MediaPlayer.svelte';
56
+ export { default as MediaUpload } from './MediaUpload/MediaUpload.svelte';
57
+ export { default as Chat } from './Chat/Chat.svelte';
58
+ export { default as ChatMessage } from './ChatMessage/ChatMessage.svelte';
59
+ export { default as ChatMessageList } from './ChatMessageList/ChatMessageList.svelte';
60
+ export { default as ChatComposer } from './ChatComposer/ChatComposer.svelte';
61
+ export { default as ChatHeader } from './ChatHeader/ChatHeader.svelte';
62
+ export { default as ChatToolStatus } from './ChatToolStatus/ChatToolStatus.svelte';
63
+ export { default as ChatSuggestions } from './ChatSuggestions/ChatSuggestions.svelte';
64
+ export { default as Resizable } from './Resizable/Resizable.svelte';
65
+ export { default as Draggable } from './Draggable/Draggable.svelte';
66
+ export { default as ChatBubble } from './ChatBubble/ChatBubble.svelte';
67
+ export { ChatController } from './Chat/controller.svelte';
68
+ export { partyOf } from './Chat/roles';
55
69
  export { validateInput } from './utils';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "polymorph-ui-components",
3
- "version": "0.1.0",
3
+ "version": "0.4.0",
4
4
  "description": "A themeable Svelte 5 UI component library with CSS custom property driven styling",
5
5
  "keywords": [
6
6
  "svelte",