diff --git a/components/IconSvg/IconSvg.vue b/components/IconSvg/IconSvg.vue
index 2a0b3bf0..b3868912 100644
--- a/components/IconSvg/IconSvg.vue
+++ b/components/IconSvg/IconSvg.vue
@@ -426,6 +426,11 @@
+
diff --git a/components/IconSvg/collapsed.svg b/components/IconSvg/collapsed.svg
new file mode 100644
index 00000000..64752c90
--- /dev/null
+++ b/components/IconSvg/collapsed.svg
@@ -0,0 +1,3 @@
+
diff --git a/components/RayDumpPreview/RayTypesPreview/MailablePayload.stories.ts b/components/RayDumpPreview/RayTypesPreview/MailablePayload.stories.ts
new file mode 100644
index 00000000..08352965
--- /dev/null
+++ b/components/RayDumpPreview/RayTypesPreview/MailablePayload.stories.ts
@@ -0,0 +1,23 @@
+import { Meta, Story } from "@storybook/vue3";
+import { normalizeRayDumpEvent } from "~/utils/normalize-event";
+import eventMock from '~/mocks/ray-laravel-mailable.json';
+import MailablePayload from "~/components/RayDumpPreview/RayTypesPreview/MailablePayload.vue";
+
+export default {
+ title: "RayDump/Types/Mailable",
+ component: MailablePayload
+} as Meta;
+
+const Template: Story = (args) => ({
+ components: { MailablePayload},
+ setup() {
+ return {
+ args,
+ };
+ },
+ template: ``,
+});
+
+export const Mailable = Template.bind({});
+Mailable.args = {payload: normalizeRayDumpEvent(eventMock).payload.payload.payloads[0]};
+
diff --git a/components/RayDumpPreview/RayTypesPreview/MailablePayload.vue b/components/RayDumpPreview/RayTypesPreview/MailablePayload.vue
new file mode 100644
index 00000000..2293ff7b
--- /dev/null
+++ b/components/RayDumpPreview/RayTypesPreview/MailablePayload.vue
@@ -0,0 +1,94 @@
+
+
+
+
+ {{ eventValue.subject }}
+
+
+ {{ eventValue.mailable_class }}
+
+
+ {{getValuesField(eventValue.from)}}
+
+
+ {{getValuesField(eventValue.to)}}
+
+
+ {{getValuesField(eventValue.cc)}}
+
+
+ {{getValuesField(eventValue.bcc)}}
+
+
+ {{getValuesField(eventValue.reply_to)}}
+
+
+
+
+
+
+
+
+
diff --git a/components/RayDumpTypeMapper/RayDumpTypeMapper.vue b/components/RayDumpTypeMapper/RayDumpTypeMapper.vue
index 6d27422d..585a0ae0 100644
--- a/components/RayDumpTypeMapper/RayDumpTypeMapper.vue
+++ b/components/RayDumpTypeMapper/RayDumpTypeMapper.vue
@@ -17,6 +17,7 @@ import ViewsPayload from "~/components/RayDumpPreview/RayTypesPreview/ViewsPaylo
import EventPayload from "~/components/RayDumpPreview/RayTypesPreview/EventPayload.vue";
import JobPayload from "~/components/RayDumpPreview/RayTypesPreview/JobPayload.vue";
import LockPayload from "~/components/RayDumpPreview/RayTypesPreview/LockPayload.vue";
+import MailablePayload from "~/components/RayDumpPreview/RayTypesPreview/MailablePayload.vue";
export default defineComponent({
props: {
@@ -55,6 +56,8 @@ export default defineComponent({
h(JobPayload, {payload}),
[RAY_EVENT_TYPES.LOCK]: (payload: RayPayload) =>
h(LockPayload, {payload}),
+ [RAY_EVENT_TYPES.MAILABLE]: (payload: RayPayload) =>
+ h(MailablePayload, {payload}),
};
if (this.payload.type === 'hide') {
diff --git a/config/constants.ts b/config/constants.ts
index 85bf5e04..e9288f4d 100644
--- a/config/constants.ts
+++ b/config/constants.ts
@@ -21,6 +21,7 @@ export const RAY_EVENT_TYPES = {
//HIDE: "hide",
MEASURE: "measure",
//NOTIFY: "notify",
+ MAILABLE: "mailable",
TABLE: "table",
TRACE: "trace",
QUERY: "executed_query",