@motiadev/plugin-logs 0.13.0-beta.162-850424 → 0.13.0-beta.162-080298

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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.css","names":[],"sources":["../src/styles.css"],"sourcesContent":["/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --font-sans: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\",\n \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace;\n --spacing: 0.25rem;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n --font-weight-500: var(--font-weight-500);\n --font-weight-600: var(--font-weight-600);\n --font-weight-700: var(--font-weight-700);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .absolute {\n position: absolute;\n }\n .relative {\n position: relative;\n }\n .top-1\\/2 {\n top: calc(1/2 * 100%);\n }\n .right-3 {\n right: calc(var(--spacing) * 3);\n }\n .left-3 {\n left: calc(var(--spacing) * 3);\n }\n .flex {\n display: flex;\n }\n .grid {\n display: grid;\n }\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n .h-\\[34px\\] {\n height: 34px;\n }\n .h-full {\n height: 100%;\n }\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n .w-full {\n width: 100%;\n }\n .max-w-\\[500px\\] {\n max-width: 500px;\n }\n .flex-1 {\n flex: 1;\n }\n .-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .cursor-pointer {\n cursor: pointer;\n }\n .grid-rows-\\[auto_1fr\\] {\n grid-template-rows: auto 1fr;\n }\n .items-center {\n align-items: center;\n }\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n .truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .border-0 {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .bg-muted-foreground\\/10 {\n background-color: var(--muted-foreground);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--muted-foreground) 10%, transparent);\n }\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .px-9\\! {\n padding-inline: calc(var(--spacing) * 9) !important;\n }\n .font-mono {\n font-family: var(--font-mono);\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .whitespace-nowrap {\n white-space: nowrap;\n }\n .text-muted-foreground {\n color: var(--muted-foreground);\n }\n .text-muted-foreground\\/50 {\n color: var(--muted-foreground);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--muted-foreground) 50%, transparent);\n }\n }\n .capitalize {\n text-transform: capitalize;\n }\n .hover\\:bg-muted-foreground\\/10 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--muted-foreground);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--muted-foreground) 10%, transparent);\n }\n }\n }\n }\n .hover\\:bg-muted-foreground\\/20 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--muted-foreground);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--muted-foreground) 20%, transparent);\n }\n }\n }\n }\n .hover\\:text-muted-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--muted-foreground);\n }\n }\n }\n .hover\\:text-primary {\n &:hover {\n @media (hover: hover) {\n color: var(--primary);\n }\n }\n }\n}\n:root {\n --default-font-family: \"DM Sans\", ui-sans-serif, sans-serif;\n --font-dm-mono: \"DM Mono\", ui-monospace, monospace;\n line-height: 1.5;\n font-size: 16px;\n color-scheme: light dark;\n font-family: var( --default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" ), serif;\n font-synthesis: none;\n text-rendering: optimizeLegibility;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 100%;\n font-optical-sizing: auto;\n --font-weight-500: 500;\n --font-weight-600: 600;\n --font-weight-700: 700;\n --accent-1000: #2862fe;\n --accent-970: #2862fef7;\n --accent-950: #2862fef2;\n --accent-900: #2862fee5;\n --accent-800: #2862fecc;\n --accent-700: #2862feb2;\n --accent-600: #2862fe99;\n --accent-500: #2862fe80;\n --accent-400: #2862fe66;\n --accent-300: #2862fe4d;\n --accent-200: #2862fe33;\n --accent-100: #2862fe1a;\n --accent-50: #2862fe0d;\n --accent-30: #2862fe08;\n --dark-1000: #0a0a0a;\n --dark-970: #0a0a0af7;\n --dark-950: #0a0a0af2;\n --dark-900: #0a0a0ae5;\n --dark-800: #0a0a0acc;\n --dark-700: #0a0a0ab2;\n --dark-600: #0a0a0a99;\n --dark-500: #0a0a0a80;\n --dark-400: #0a0a0a66;\n --dark-300: #0a0a0a4d;\n --dark-200: #0a0a0a33;\n --dark-100: #0a0a0a1a;\n --dark-50: #0a0a0a0d;\n --dark-30: #0a0a0a08;\n --light-1000: #ffffff;\n --light-970: #fffffff7;\n --light-950: #fffffff2;\n --light-900: #ffffffe5;\n --light-800: #ffffffcc;\n --light-700: #ffffffb2;\n --light-600: #ffffff99;\n --light-500: #ffffff80;\n --light-400: #ffffff66;\n --light-300: #ffffff4d;\n --light-200: #ffffff33;\n --light-100: #ffffff1a;\n --light-50: #ffffff0d;\n --light-30: #ffffff08;\n --error: #d61355;\n --canvas-background: #ebebeb;\n --background: var(--light-1000);\n --foreground: var(--dark-1000);\n --surface-content: var(--dark-30);\n --surface-component: var(--dark-50);\n --surface-light-100: var(--dark-100);\n --surface-light-200: var(--dark-200);\n --border: var(--dark-100);\n --border-accent: var(--accent-1000);\n --states-hover: var(--dark-30);\n --states-selected: var(--dark-100);\n --states-active: var(--accent-1000);\n --text-header: var(--dark-1000);\n --text-body: var(--dark-600);\n --text-placeholder: var(--dark-400);\n --text-accent: var(--accent-1000);\n --text-error: var(--error);\n --icon-active: var(--dark-1000);\n --icon-light: var(--dark-600);\n --icon-component: var(--dark-400);\n --icon-accent: var(--accent-1000);\n --primary: var(--accent-1000);\n --primary-foreground: var(--light-1000);\n --secondary: var(--surface-component);\n --secondary-foreground: var(--text-body);\n --muted: var(--surface-light-100);\n --muted-foreground: var(--text-body);\n --accent: var(--accent-1000);\n --accent-foreground: var(--light-1000);\n --destructive: var(--error);\n --destructive-foreground: var(--light-1000);\n --card: var(--surface-content);\n --card-foreground: var(--foreground);\n --popover: var(--surface-content);\n --popover-foreground: var(--foreground);\n --input: var(--states-hover);\n --ring: var(--border-accent);\n --chart-1: var(--accent-1000);\n --chart-2: var(--accent-800);\n --chart-3: var(--accent-600);\n --chart-4: var(--accent-400);\n --chart-5: var(--accent-200);\n --header: var(--background);\n --header-foreground: var(--text-header);\n --header-primary: var(--primary);\n --header-primary-foreground: var(--primary-foreground);\n --header-accent: var(--surface-component);\n --header-accent-foreground: var(--text-body);\n --header-border: var(--border);\n --header-ring: var(--ring);\n --sidebar: var(--background);\n --sidebar-foreground: var(--text-header);\n --sidebar-primary: var(--primary);\n --sidebar-primary-foreground: var(--primary-foreground);\n --sidebar-accent: var(--surface-component);\n --sidebar-accent-foreground: var(--text-body);\n --sidebar-border: var(--border);\n --sidebar-ring: var(--ring);\n}\n.dark {\n --canvas-background: #030303;\n --background: var(--dark-1000);\n --foreground: var(--light-1000);\n --surface-content: var(--light-30);\n --surface-component: var(--light-50);\n --surface-light-100: var(--light-100);\n --surface-light-200: var(--light-200);\n --border: var(--light-100);\n --states-hover: var(--light-30);\n --states-selected: var(--light-100);\n --text-header: var(--light-1000);\n --text-body: var(--light-600);\n --text-placeholder: var(--light-400);\n --icon-active: var(--light-1000);\n --icon-light: var(--light-600);\n --icon-component: var(--light-400);\n --secondary-foreground: var(--light-600);\n --muted-foreground: var(--light-600);\n --card: var(--surface-content);\n --card-foreground: var(--foreground);\n --popover: var(--surface-content);\n --popover-foreground: var(--foreground);\n --input: var(--states-hover);\n --ring: var(--border-accent);\n --chart-1: var(--accent-1000);\n --chart-2: var(--accent-800);\n --chart-3: var(--accent-600);\n --chart-4: var(--accent-400);\n --chart-5: var(--accent-200);\n --header: var(--background);\n --header-foreground: var(--text-header);\n --header-primary: var(--primary);\n --header-primary-foreground: var(--primary-foreground);\n --header-accent: var(--surface-component);\n --header-accent-foreground: var(--text-body);\n --header-border: var(--border);\n --header-ring: var(--ring);\n --sidebar: var(--background);\n --sidebar-foreground: var(--text-header);\n --sidebar-primary: var(--primary);\n --sidebar-primary-foreground: var(--primary-foreground);\n --sidebar-accent: var(--surface-component);\n --sidebar-accent-foreground: var(--text-body);\n --sidebar-border: var(--border);\n --sidebar-ring: var(--ring);\n}\n@layer base {\n * {\n border-color: var(--border);\n }\n body {\n background-color: var(--background);\n color: var(--foreground);\n }\n}\n@layer theme, base, components, utilities;\n@layer theme;\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities;\n.json-view {\n background-color: transparent !important;\n}\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-border-style: solid;\n --tw-font-weight: initial;\n }\n }\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["LogDetail: React.FC<Props>"],"sources":["../src/stores/use-logs-store.ts","../src/utils/init-log-listener.ts","../src/utils/format-timestamp.ts","../src/components/log-detail.tsx","../src/components/logs-page.tsx","../src/index.ts"],"sourcesContent":["import { create } from 'zustand'\nimport type { Log } from '../types/log'\n\nexport type LogsState = {\n logs: Log[]\n selectedLogId?: string\n addLog: (log: Log) => void\n setLogs: (logs: Log[]) => void\n resetLogs: () => void\n selectLogId: (logId?: string) => void\n}\n\nexport const useLogsStore = create<LogsState>()((set) => ({\n logs: [],\n selectedLogId: undefined,\n addLog: (log) =>\n set((state) => {\n if (state.logs.find((l) => l.id === log.id)) {\n return state\n }\n return {\n logs: [log, ...state.logs],\n }\n }),\n setLogs: (logs) =>\n set({\n logs: [...logs].reverse(),\n }),\n resetLogs: () => {\n set({ logs: [] })\n },\n selectLogId: (logId) => set({ selectedLogId: logId }),\n}))\n","import { Stream } from '@motiadev/stream-client-browser'\nimport { useLogsStore } from '../stores/use-logs-store'\nimport type { Log } from '../types/log'\n\nconst streamName = '__motia.logs'\nconst groupId = 'default'\nconst type = 'log'\n\nexport const initLogListener = () => {\n const stream = new Stream(window.location.origin.replace('http', 'ws'))\n const subscription = stream.subscribeGroup<Log>(streamName, groupId)\n const store = useLogsStore.getState()\n\n subscription.addChangeListener((logs) => {\n if (logs) {\n store.setLogs(logs)\n }\n })\n\n subscription.onEvent(type, store.addLog)\n}\n","export const formatTimestamp = (time: number) => {\n const date = new Date(Number(time))\n return `${date.toLocaleDateString('en-US', { year: undefined, month: 'short', day: '2-digit' })}, ${date.toLocaleTimeString('en-US', { hour: '2-digit', minute: '2-digit', second: '2-digit', hourCycle: 'h24' })}.${date.getMilliseconds().toString().padStart(3, '0')}`\n}\n","import { LevelDot, Sidebar } from '@motiadev/ui'\nimport { X } from 'lucide-react'\nimport type React from 'react'\nimport { useMemo, useState } from 'react'\nimport ReactJson from 'react18-json-view'\nimport 'react18-json-view/src/dark.css'\nimport 'react18-json-view/src/style.css'\nimport type { Log } from '../types/log'\nimport { formatTimestamp } from '../utils/format-timestamp'\n\ntype Props = {\n log?: Log\n onClose: () => void\n}\n\nconst defaultProps = ['id', 'msg', 'time', 'level', 'step', 'flows', 'traceId']\n\nexport const LogDetail: React.FC<Props> = ({ log, onClose }) => {\n const [hasOtherProps, setHasOtherProps] = useState(false)\n\n const otherPropsObject = useMemo(() => {\n if (!log) {\n return null\n }\n\n const otherProps = Object.keys(log ?? {}).filter((key) => !defaultProps.includes(key))\n setHasOtherProps(otherProps.length > 0)\n\n return otherProps.reduce(\n (acc, key) => {\n acc[key] = log[key]\n return acc\n },\n {} as Record<string, unknown>,\n )\n }, [log])\n\n if (!log) {\n return null\n }\n\n return (\n <Sidebar\n onClose={onClose}\n title=\"Logs Details\"\n subtitle=\"Details including custom properties\"\n actions={[{ icon: <X />, onClick: onClose, label: 'Close' }]}\n details={[\n {\n label: 'Level',\n value: (\n <div className=\"flex items-center gap-2\">\n <LevelDot level={log.level} />\n <div className=\"capitalize\">{log.level}</div>\n </div>\n ),\n },\n { label: 'Time', value: formatTimestamp(log.time) },\n { label: 'Step', value: log.step },\n { label: 'Flows', value: log.flows.join(', ') },\n { label: 'Trace ID', value: log.traceId },\n ]}\n >\n {hasOtherProps && <ReactJson src={otherPropsObject} theme=\"default\" enableClipboard />}\n </Sidebar>\n )\n}\n","import { Button, cn, Input, LevelDot, Table, TableBody, TableCell, TableRow } from '@motiadev/ui'\nimport { Search, Trash, X } from 'lucide-react'\nimport { useMemo, useState } from 'react'\nimport { useLogsStore } from '../stores/use-logs-store'\nimport { formatTimestamp } from '../utils/format-timestamp'\nimport { LogDetail } from './log-detail'\n\nexport const LogsPage = () => {\n const logs = useLogsStore((state) => state.logs)\n const resetLogs = useLogsStore((state) => state.resetLogs)\n const selectedLogId = useLogsStore((state) => state.selectedLogId)\n const selectLogId = useLogsStore((state) => state.selectLogId)\n const selectedLog = useMemo(\n () => (selectedLogId ? logs.find((log) => log.id === selectedLogId) : undefined),\n [logs, selectedLogId],\n )\n\n const [search, setSearch] = useState('')\n const filteredLogs = useMemo(() => {\n return logs.filter((log) => {\n return (\n log.msg.toLowerCase().includes(search.toLowerCase()) ||\n log.traceId.toLowerCase().includes(search.toLowerCase()) ||\n log.step.toLowerCase().includes(search.toLowerCase())\n )\n })\n }, [logs, search])\n\n return (\n <>\n <div className=\"grid grid-rows-[auto_1fr] h-full\" data-testid=\"logs-container\">\n <div className=\"flex p-2 border-b gap-2\" data-testid=\"logs-search-container\">\n <div className=\"flex-1 relative\">\n <Input\n variant=\"shade\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"px-9! font-medium\"\n placeholder=\"Search by Trace ID or Message\"\n />\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground/50\" />\n <X\n className=\"cursor-pointer absolute right-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground/50 hover:text-muted-foreground\"\n onClick={() => setSearch('')}\n />\n </div>\n <Button variant=\"default\" onClick={resetLogs} className=\"h-[34px]\">\n <Trash /> Clear\n </Button>\n </div>\n <Table>\n <TableBody className=\"font-mono font-medium\">\n {filteredLogs.map((log, index) => (\n <TableRow\n data-testid=\"log-row\"\n className={cn('font-mono font-semibold cursor-pointer border-0', {\n 'bg-muted-foreground/10 hover:bg-muted-foreground/20': selectedLogId === log.id,\n 'hover:bg-muted-foreground/10': selectedLogId !== log.id,\n })}\n key={index}\n onClick={() => selectLogId(log.id)}\n >\n <TableCell\n data-testid={`time-${index}`}\n className=\"whitespace-nowrap flex items-center gap-2 text-muted-foreground\"\n >\n <LevelDot level={log.level} />\n {formatTimestamp(log.time)}\n </TableCell>\n <TableCell\n data-testid={`trace-${log.traceId}`}\n className=\"whitespace-nowrap cursor-pointer hover:text-primary text-muted-foreground\"\n onClick={() => setSearch(log.traceId)}\n >\n {log.traceId}\n </TableCell>\n <TableCell data-testid={`step-${index}`} aria-label={log.step} className=\"whitespace-nowrap\">\n {log.step}\n </TableCell>\n <TableCell\n data-testid={`msg-${index}`}\n aria-label={log.msg}\n className=\"whitespace-nowrap max-w-[500px] truncate w-full\"\n >\n {log.msg}\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n <LogDetail log={selectedLog} onClose={() => selectLogId(undefined)} />\n </>\n )\n}\n","import './styles.css'\nimport { initLogListener } from './utils/init-log-listener'\n\nexport { LogsPage } from './components/logs-page'\nexport type { Log } from './types/log'\n\ninitLogListener()\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.js","names":[],"sources":["../src/plugin.ts"],"sourcesContent":["import type { MotiaPlugin, MotiaPluginContext } from '@motiadev/core'\n\nexport default function plugin(motia: MotiaPluginContext): MotiaPlugin {\n return {\n workbench: [\n {\n packageName: '@motiadev/plugin-logs',\n label: 'Logs',\n position: 'bottom',\n componentName: 'LogsPage',\n labelIcon: 'logs',\n },\n ],\n }\n}\n"],"mappings":";AAEA,SAAwB,OAAO,OAAwC;AACrE,QAAO,EACL,WAAW,CACT;EACE,aAAa;EACb,OAAO;EACP,UAAU;EACV,eAAe;EACf,WAAW;EACZ,CACF,EACF"}