diff --git a/src/lib/components/RecordPanel/RecordPanel.svelte b/src/lib/components/RecordPanel/RecordPanel.svelte
new file mode 100644
index 0000000..a2b2a6a
--- /dev/null
+++ b/src/lib/components/RecordPanel/RecordPanel.svelte
@@ -0,0 +1,92 @@
+
+
+
+ {#each $records as record (record.timestamp)}
+
+ {/each}
+
+ {#if $readingRecord}
+
+ {/if}
+
+
+
diff --git a/src/lib/components/RecordPanel/components/ChatBubble.svelte b/src/lib/components/RecordPanel/components/ChatBubble.svelte
new file mode 100644
index 0000000..5b973c5
--- /dev/null
+++ b/src/lib/components/RecordPanel/components/ChatBubble.svelte
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+ {#if currentDisplay === 'hex'}
+ {bufferToHexFormat(record.data)}
+ {:else if currentDisplay === 'ascii'}
+ {bufferToString(record.data)}
+ {:else}
+ {bufferToDecString(record.data)}
+ {/if}
+
+
+
diff --git a/src/lib/components/RecordPanel/components/ChatBubble.variant.ts b/src/lib/components/RecordPanel/components/ChatBubble.variant.ts
new file mode 100644
index 0000000..4b6c27f
--- /dev/null
+++ b/src/lib/components/RecordPanel/components/ChatBubble.variant.ts
@@ -0,0 +1,5 @@
+export const POSITION_MAP = {
+ read: 'chat-start',
+ write: 'chat-end',
+ system: 'chat-start',
+};