@motiadev/plugin-states 0.14.0-beta.165-592231 → 0.14.0-beta.165-076789

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.
package/dist/index.css CHANGED
@@ -963,3 +963,6 @@
963
963
  }
964
964
  }
965
965
  }
966
+
967
+
968
+ /*# sourceMappingURL=index.css.map*/
@@ -1 +1 @@
1
- {"version":3,"file":"index.css","names":[],"sources":["../src/styles.css"],"sourcesContent":["export default undefined;"],"mappings":"AAAA"}
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 --color-red-50: oklch(97.1% 0.013 17.38);\n --color-red-200: oklch(88.5% 0.062 18.334);\n --color-red-400: oklch(70.4% 0.191 22.216);\n --color-red-700: oklch(50.5% 0.213 27.518);\n --color-red-800: oklch(44.4% 0.177 26.899);\n --color-red-950: oklch(25.8% 0.092 26.042);\n --color-orange-500: oklch(70.5% 0.213 47.604);\n --color-green-50: oklch(98.2% 0.018 155.826);\n --color-green-200: oklch(92.5% 0.084 155.995);\n --color-green-400: oklch(79.2% 0.209 151.711);\n --color-green-500: oklch(72.3% 0.219 149.579);\n --color-green-700: oklch(52.7% 0.154 150.069);\n --color-green-800: oklch(44.8% 0.119 151.328);\n --color-green-950: oklch(26.6% 0.065 152.934);\n --spacing: 0.25rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --radius-lg: 0.5rem;\n --animate-spin: spin 1s linear infinite;\n --blur-sm: 8px;\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 .sticky {\n position: sticky;\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .top-1\\/2 {\n top: calc(1/2 * 100%);\n }\n .top-2 {\n top: calc(var(--spacing) * 2);\n }\n .right-2 {\n right: calc(var(--spacing) * 2);\n }\n .right-3 {\n right: calc(var(--spacing) * 3);\n }\n .left-3 {\n left: calc(var(--spacing) * 3);\n }\n .mr-1 {\n margin-right: calc(var(--spacing) * 1);\n }\n .flex {\n display: flex;\n }\n .grid {\n display: grid;\n }\n .h-2 {\n height: calc(var(--spacing) * 2);\n }\n .h-3 {\n height: calc(var(--spacing) * 3);\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-2 {\n width: calc(var(--spacing) * 2);\n }\n .w-3 {\n width: calc(var(--spacing) * 3);\n }\n .w-4 {\n width: calc(var(--spacing) * 4);\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 .animate-spin {\n animation: var(--animate-spin);\n }\n .cursor-pointer {\n cursor: pointer;\n }\n .grid-rows-\\[auto_1fr\\] {\n grid-template-rows: auto 1fr;\n }\n .flex-col {\n flex-direction: column;\n }\n .items-center {\n align-items: center;\n }\n .justify-between {\n justify-content: space-between;\n }\n .gap-1 {\n gap: calc(var(--spacing) * 1);\n }\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n .space-y-3 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .rounded {\n border-radius: 0.25rem;\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-lg {\n border-radius: var(--radius-lg);\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\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 .border-green-200 {\n border-color: var(--color-green-200);\n }\n .border-red-200 {\n border-color: var(--color-red-200);\n }\n .bg-background\\/20 {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 20%, transparent);\n }\n }\n .bg-destructive\\/90 {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 90%, transparent);\n }\n }\n .bg-green-50 {\n background-color: var(--color-green-50);\n }\n .bg-green-500 {\n background-color: var(--color-green-500);\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 .bg-orange-500 {\n background-color: var(--color-orange-500);\n }\n .bg-red-50 {\n background-color: var(--color-red-50);\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n .px-9\\! {\n padding-inline: calc(var(--spacing) * 9) !important;\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n .pt-2 {\n padding-top: calc(var(--spacing) * 2);\n }\n .font-mono {\n font-family: var(--font-mono);\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\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 .text-destructive-foreground {\n color: var(--destructive-foreground);\n }\n .text-green-700 {\n color: var(--color-green-700);\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 .text-red-700 {\n color: var(--color-red-700);\n }\n .filter {\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .backdrop-blur-sm {\n --tw-backdrop-blur: blur(var(--blur-sm));\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\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\\:bg-transparent {\n &:hover {\n @media (hover: hover) {\n background-color: transparent;\n }\n }\n }\n .hover\\:text-muted-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--muted-foreground);\n }\n }\n }\n .dark\\:border-green-800 {\n &:is(.dark *) {\n border-color: var(--color-green-800);\n }\n }\n .dark\\:border-red-800 {\n &:is(.dark *) {\n border-color: var(--color-red-800);\n }\n }\n .dark\\:bg-green-950\\/20 {\n &:is(.dark *) {\n background-color: color-mix(in srgb, oklch(26.6% 0.065 152.934) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-green-950) 20%, transparent);\n }\n }\n }\n .dark\\:bg-red-950\\/20 {\n &:is(.dark *) {\n background-color: color-mix(in srgb, oklch(25.8% 0.092 26.042) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-red-950) 20%, transparent);\n }\n }\n }\n .dark\\:text-green-400 {\n &:is(.dark *) {\n color: var(--color-green-400);\n }\n }\n .dark\\:text-red-400 {\n &:is(.dark *) {\n color: var(--color-red-400);\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-space-y-reverse {\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@property --tw-blur {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-brightness {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-contrast {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-grayscale {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-hue-rotate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-invert {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-opacity {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-saturate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-sepia {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-drop-shadow-size {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-blur {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-brightness {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-contrast {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-grayscale {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-hue-rotate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-invert {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-opacity {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-saturate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-sepia {\n syntax: \"*\";\n inherits: false;\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\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-space-y-reverse: 0;\n --tw-border-style: solid;\n --tw-font-weight: initial;\n --tw-blur: initial;\n --tw-brightness: initial;\n --tw-contrast: initial;\n --tw-grayscale: initial;\n --tw-hue-rotate: initial;\n --tw-invert: initial;\n --tw-opacity: initial;\n --tw-saturate: initial;\n --tw-sepia: initial;\n --tw-drop-shadow: initial;\n --tw-drop-shadow-color: initial;\n --tw-drop-shadow-alpha: 100%;\n --tw-drop-shadow-size: initial;\n --tw-backdrop-blur: initial;\n --tw-backdrop-brightness: initial;\n --tw-backdrop-contrast: initial;\n --tw-backdrop-grayscale: initial;\n --tw-backdrop-hue-rotate: initial;\n --tw-backdrop-invert: initial;\n --tw-backdrop-opacity: initial;\n --tw-backdrop-saturate: initial;\n --tw-backdrop-sepia: 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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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 CHANGED
@@ -0,0 +1,706 @@
1
+ import { c } from "react/compiler-runtime";
2
+ import { Button, Checkbox, Input, Sidebar, Table, TableBody, TableCell, TableHead, TableHeader, TableRow, cn, useThemeStore } from "@motiadev/ui";
3
+ import { AlertCircle, Check, Loader2, RefreshCw, Save, Search, Trash, X } from "lucide-react";
4
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
5
+ import { create } from "zustand";
6
+ import JsonView from "react18-json-view";
7
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
+ import Editor, { useMonaco } from "@monaco-editor/react";
9
+
10
+ //#region src/hooks/states-hooks.ts
11
+ const useGetStateItems = () => {
12
+ const $ = c(7);
13
+ let t0;
14
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
15
+ t0 = [];
16
+ $[0] = t0;
17
+ } else t0 = $[0];
18
+ const [items, setItems] = useState(t0);
19
+ let t1;
20
+ if ($[1] === Symbol.for("react.memo_cache_sentinel")) {
21
+ t1 = () => {
22
+ fetch("/__motia/state").then(_temp$2).then(setItems).catch(_temp2$1);
23
+ };
24
+ $[1] = t1;
25
+ } else t1 = $[1];
26
+ const refetch = t1;
27
+ let t2;
28
+ if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
29
+ t2 = (ids) => {
30
+ fetch("/__motia/state/delete", {
31
+ method: "POST",
32
+ headers: { "Content-Type": "application/json" },
33
+ body: JSON.stringify({ ids })
34
+ }).then(() => refetch());
35
+ };
36
+ $[2] = t2;
37
+ } else t2 = $[2];
38
+ const deleteItems = t2;
39
+ let t3;
40
+ let t4;
41
+ if ($[3] === Symbol.for("react.memo_cache_sentinel")) {
42
+ t3 = () => {
43
+ refetch();
44
+ };
45
+ t4 = [refetch];
46
+ $[3] = t3;
47
+ $[4] = t4;
48
+ } else {
49
+ t3 = $[3];
50
+ t4 = $[4];
51
+ }
52
+ useEffect(t3, t4);
53
+ let t5;
54
+ if ($[5] !== items) {
55
+ t5 = {
56
+ items,
57
+ deleteItems,
58
+ refetch
59
+ };
60
+ $[5] = items;
61
+ $[6] = t5;
62
+ } else t5 = $[6];
63
+ return t5;
64
+ };
65
+ async function _temp$2(res) {
66
+ if (res.ok) return res.json();
67
+ else throw await res.json();
68
+ }
69
+ function _temp2$1(err) {
70
+ return console.error(err);
71
+ }
72
+
73
+ //#endregion
74
+ //#region src/stores/use-states-store.ts
75
+ const useStatesStore = create()((set) => ({
76
+ selectedStateId: void 0,
77
+ selectStateId: (stateId) => set({ selectedStateId: stateId })
78
+ }));
79
+
80
+ //#endregion
81
+ //#region src/components/state-details.tsx
82
+ const StateDetails = (t0) => {
83
+ const $ = c(2);
84
+ const { state } = t0;
85
+ let t1;
86
+ if ($[0] !== state.value) {
87
+ t1 = /* @__PURE__ */ jsx(JsonView, {
88
+ src: state.value,
89
+ theme: "default"
90
+ });
91
+ $[0] = state.value;
92
+ $[1] = t1;
93
+ } else t1 = $[1];
94
+ return t1;
95
+ };
96
+
97
+ //#endregion
98
+ //#region src/components/json-editor.tsx
99
+ const JsonEditor = (t0) => {
100
+ const $ = c(23);
101
+ const { value, height: t1, schema, onChange, onValidate, language: t2, readOnly: t3 } = t0;
102
+ const height = t1 === void 0 ? 300 : t1;
103
+ const language = t2 === void 0 ? "json" : t2;
104
+ const readOnly = t3 === void 0 ? false : t3;
105
+ const monaco = useMonaco();
106
+ const editorTheme = useThemeStore(_temp$1) === "dark" ? "vs-dark" : "light";
107
+ let t4;
108
+ if ($[0] !== monaco || $[1] !== schema) {
109
+ t4 = () => {
110
+ if (!monaco) return;
111
+ monaco.languages.typescript.javascriptDefaults.setCompilerOptions({ isolatedModules: true });
112
+ monaco.languages.json.jsonDefaults.setDiagnosticsOptions({ schemas: schema ? [{
113
+ uri: window.location.href,
114
+ fileMatch: ["*"],
115
+ schema
116
+ }] : [] });
117
+ };
118
+ $[0] = monaco;
119
+ $[1] = schema;
120
+ $[2] = t4;
121
+ } else t4 = $[2];
122
+ let t5;
123
+ if ($[3] !== language || $[4] !== monaco || $[5] !== schema) {
124
+ t5 = [
125
+ monaco,
126
+ schema,
127
+ language
128
+ ];
129
+ $[3] = language;
130
+ $[4] = monaco;
131
+ $[5] = schema;
132
+ $[6] = t5;
133
+ } else t5 = $[6];
134
+ useEffect(t4, t5);
135
+ let t6;
136
+ if ($[7] !== onChange || $[8] !== onValidate) {
137
+ t6 = (value_0) => {
138
+ if (!value_0) onValidate?.(false);
139
+ onChange?.(value_0 ?? "");
140
+ };
141
+ $[7] = onChange;
142
+ $[8] = onValidate;
143
+ $[9] = t6;
144
+ } else t6 = $[9];
145
+ let t7;
146
+ if ($[10] !== onValidate) {
147
+ t7 = (markers) => onValidate?.(markers.length === 0);
148
+ $[10] = onValidate;
149
+ $[11] = t7;
150
+ } else t7 = $[11];
151
+ let t8;
152
+ if ($[12] === Symbol.for("react.memo_cache_sentinel")) {
153
+ t8 = { enabled: false };
154
+ $[12] = t8;
155
+ } else t8 = $[12];
156
+ let t9;
157
+ if ($[13] !== readOnly) {
158
+ t9 = {
159
+ readOnly,
160
+ scrollBeyondLastLine: false,
161
+ minimap: t8
162
+ };
163
+ $[13] = readOnly;
164
+ $[14] = t9;
165
+ } else t9 = $[14];
166
+ let t10;
167
+ if ($[15] !== editorTheme || $[16] !== height || $[17] !== language || $[18] !== t6 || $[19] !== t7 || $[20] !== t9 || $[21] !== value) {
168
+ t10 = /* @__PURE__ */ jsx(Editor, {
169
+ "data-testid": "json-editor",
170
+ height,
171
+ language,
172
+ value,
173
+ theme: editorTheme,
174
+ onChange: t6,
175
+ onValidate: t7,
176
+ options: t9
177
+ });
178
+ $[15] = editorTheme;
179
+ $[16] = height;
180
+ $[17] = language;
181
+ $[18] = t6;
182
+ $[19] = t7;
183
+ $[20] = t9;
184
+ $[21] = value;
185
+ $[22] = t10;
186
+ } else t10 = $[22];
187
+ return t10;
188
+ };
189
+ function _temp$1(state) {
190
+ return state.theme;
191
+ }
192
+
193
+ //#endregion
194
+ //#region src/components/state-editor.tsx
195
+ const StateEditor = ({ state }) => {
196
+ const [isRequestLoading, setIsRequestLoading] = useState(false);
197
+ const [isValid, setIsValid] = useState(true);
198
+ const [jsonValue, setJsonValue] = useState(JSON.stringify(state.value, null, 2));
199
+ const [hasChanges, setHasChanges] = useState(false);
200
+ const [saveStatus, setSaveStatus] = useState("idle");
201
+ const lastSavedValue = useRef(JSON.stringify(state.value, null, 2));
202
+ useEffect(() => {
203
+ setJsonValue(JSON.stringify(state.value, null, 2));
204
+ }, [state.value]);
205
+ const handleJsonChange = useCallback((value) => {
206
+ setHasChanges(value !== lastSavedValue.current);
207
+ setJsonValue(value);
208
+ setSaveStatus("idle");
209
+ }, []);
210
+ const handleSave = async () => {
211
+ if (!isValid || !hasChanges) return;
212
+ try {
213
+ setIsRequestLoading(true);
214
+ setSaveStatus("idle");
215
+ const response = await fetch("/__motia/state", {
216
+ method: "POST",
217
+ headers: { "Content-Type": "application/json" },
218
+ body: JSON.stringify({
219
+ key: state.key,
220
+ groupId: state.groupId,
221
+ value: JSON.parse(jsonValue)
222
+ })
223
+ });
224
+ if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);
225
+ lastSavedValue.current = jsonValue;
226
+ setSaveStatus("success");
227
+ setHasChanges(false);
228
+ setTimeout(() => {
229
+ setSaveStatus("idle");
230
+ }, 3e3);
231
+ } catch (error) {
232
+ console.error("Failed to save state:", error);
233
+ setSaveStatus("error");
234
+ } finally {
235
+ setIsRequestLoading(false);
236
+ }
237
+ };
238
+ const resetChanges = useCallback(() => {
239
+ setJsonValue(JSON.stringify(state.value, null, 2));
240
+ setHasChanges(false);
241
+ setSaveStatus("idle");
242
+ }, [state.value]);
243
+ const statusView = useMemo(() => {
244
+ if (saveStatus === "success") return /* @__PURE__ */ jsx("div", {
245
+ className: "bg-green-50 dark:bg-green-950/20 border border-green-200 dark:border-green-800 rounded-lg p-2",
246
+ children: /* @__PURE__ */ jsxs("div", {
247
+ className: "flex items-center gap-2 text-green-700 dark:text-green-400 text-sm",
248
+ children: [/* @__PURE__ */ jsx(Check, { className: "w-4 h-4" }), "State saved successfully!"]
249
+ })
250
+ });
251
+ if (saveStatus === "error") return /* @__PURE__ */ jsx("div", {
252
+ className: "bg-red-50 dark:bg-red-950/20 border border-red-200 dark:border-red-800 rounded-lg p-2",
253
+ children: /* @__PURE__ */ jsxs("div", {
254
+ className: "flex items-center gap-2 text-red-700 dark:text-red-400 text-sm",
255
+ children: [/* @__PURE__ */ jsx(AlertCircle, { className: "w-4 h-4" }), "Failed to save state. Please try again."]
256
+ })
257
+ });
258
+ return /* @__PURE__ */ jsx("div", {
259
+ className: "text-xs text-muted-foreground",
260
+ children: hasChanges ? /* @__PURE__ */ jsxs("span", {
261
+ className: "flex items-center gap-1",
262
+ children: [/* @__PURE__ */ jsx("div", { className: "w-2 h-2 bg-orange-500 rounded-full" }), "Unsaved changes"]
263
+ }) : /* @__PURE__ */ jsxs("span", {
264
+ className: "flex items-center gap-1",
265
+ children: [/* @__PURE__ */ jsx("div", { className: "w-2 h-2 bg-green-500 rounded-full" }), "Up to date"]
266
+ })
267
+ });
268
+ }, [saveStatus, hasChanges]);
269
+ return /* @__PURE__ */ jsxs("div", {
270
+ className: "flex flex-col gap-2 h-full",
271
+ children: [
272
+ /* @__PURE__ */ jsx("p", {
273
+ className: "text-xs text-muted-foreground",
274
+ children: "Modify the state value using the JSON editor below."
275
+ }),
276
+ /* @__PURE__ */ jsx("div", {
277
+ className: "space-y-3 pt-2 flex flex-col",
278
+ children: /* @__PURE__ */ jsxs("div", {
279
+ className: "relative flex-1",
280
+ children: [/* @__PURE__ */ jsx(JsonEditor, {
281
+ value: jsonValue,
282
+ onChange: handleJsonChange,
283
+ onValidate: setIsValid,
284
+ height: "calc(100vh - 300px)"
285
+ }), !isValid && /* @__PURE__ */ jsxs("div", {
286
+ className: "absolute top-2 right-2 bg-destructive/90 text-destructive-foreground px-2 py-1 rounded text-xs flex items-center gap-1",
287
+ children: [/* @__PURE__ */ jsx(AlertCircle, { className: "w-3 h-3" }), "Invalid JSON"]
288
+ })]
289
+ })
290
+ }),
291
+ /* @__PURE__ */ jsxs("div", {
292
+ className: "flex items-center justify-between pt-2",
293
+ children: [statusView, /* @__PURE__ */ jsxs("div", {
294
+ className: "flex items-center gap-2",
295
+ children: [hasChanges && /* @__PURE__ */ jsx(Button, {
296
+ variant: "secondary",
297
+ onClick: resetChanges,
298
+ disabled: isRequestLoading,
299
+ children: "Reset"
300
+ }), /* @__PURE__ */ jsx(Button, {
301
+ onClick: handleSave,
302
+ variant: "accent",
303
+ disabled: isRequestLoading || !isValid || !hasChanges,
304
+ "data-testid": "state-save-button",
305
+ children: isRequestLoading ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Loader2, { className: "w-3 h-3 animate-spin mr-1" }), "Saving..."] }) : /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Save, { className: "w-3 h-3 mr-1" }), "Save Changes"] })
306
+ })]
307
+ })]
308
+ })
309
+ ]
310
+ });
311
+ };
312
+
313
+ //#endregion
314
+ //#region src/components/state-sidebar.tsx
315
+ const StateSidebar = (t0) => {
316
+ const $ = c(14);
317
+ const { state, onClose } = t0;
318
+ let t1;
319
+ if ($[0] !== state) {
320
+ t1 = {
321
+ label: "Overview",
322
+ content: /* @__PURE__ */ jsx(StateDetails, { state })
323
+ };
324
+ $[0] = state;
325
+ $[1] = t1;
326
+ } else t1 = $[1];
327
+ let t2;
328
+ if ($[2] !== state) {
329
+ t2 = {
330
+ label: "Editor",
331
+ content: /* @__PURE__ */ jsx(StateEditor, { state })
332
+ };
333
+ $[2] = state;
334
+ $[3] = t2;
335
+ } else t2 = $[3];
336
+ let t3;
337
+ if ($[4] !== t1 || $[5] !== t2) {
338
+ t3 = [t1, t2];
339
+ $[4] = t1;
340
+ $[5] = t2;
341
+ $[6] = t3;
342
+ } else t3 = $[6];
343
+ let t4;
344
+ if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
345
+ t4 = /* @__PURE__ */ jsx(X, {});
346
+ $[7] = t4;
347
+ } else t4 = $[7];
348
+ let t5;
349
+ if ($[8] !== onClose) {
350
+ t5 = [{
351
+ icon: t4,
352
+ onClick: onClose,
353
+ label: "Close"
354
+ }];
355
+ $[8] = onClose;
356
+ $[9] = t5;
357
+ } else t5 = $[9];
358
+ let t6;
359
+ if ($[10] !== onClose || $[11] !== t3 || $[12] !== t5) {
360
+ t6 = /* @__PURE__ */ jsx(Sidebar, {
361
+ onClose,
362
+ title: "State Details",
363
+ initialWidth: 500,
364
+ tabs: t3,
365
+ actions: t5
366
+ });
367
+ $[10] = onClose;
368
+ $[11] = t3;
369
+ $[12] = t5;
370
+ $[13] = t6;
371
+ } else t6 = $[13];
372
+ return t6;
373
+ };
374
+
375
+ //#endregion
376
+ //#region src/components/states-page.tsx
377
+ const StatesPage = () => {
378
+ const $ = c(70);
379
+ const selectedStateId = useStatesStore(_temp);
380
+ const selectStateId = useStatesStore(_temp2);
381
+ const { items, deleteItems, refetch } = useGetStateItems();
382
+ const [search, setSearch] = useState("");
383
+ let t0;
384
+ if ($[0] !== items || $[1] !== search) {
385
+ let t1$1;
386
+ if ($[3] !== search) {
387
+ t1$1 = (item) => item.groupId.toLowerCase().includes(search.toLowerCase()) || item.key.toLowerCase().includes(search.toLowerCase());
388
+ $[3] = search;
389
+ $[4] = t1$1;
390
+ } else t1$1 = $[4];
391
+ t0 = items.filter(t1$1);
392
+ $[0] = items;
393
+ $[1] = search;
394
+ $[2] = t0;
395
+ } else t0 = $[2];
396
+ const filteredItems = t0;
397
+ let t1;
398
+ if ($[5] !== filteredItems || $[6] !== selectedStateId) {
399
+ t1 = selectedStateId ? filteredItems.find((item_0) => `${item_0.groupId}:${item_0.key}` === selectedStateId) : null;
400
+ $[5] = filteredItems;
401
+ $[6] = selectedStateId;
402
+ $[7] = t1;
403
+ } else t1 = $[7];
404
+ const selectedItem = t1;
405
+ let t2;
406
+ if ($[8] === Symbol.for("react.memo_cache_sentinel")) {
407
+ t2 = /* @__PURE__ */ new Set();
408
+ $[8] = t2;
409
+ } else t2 = $[8];
410
+ const [checkedItems, setCheckedItems] = useState(t2);
411
+ let t3;
412
+ if ($[9] !== selectStateId) {
413
+ t3 = (item_1) => selectStateId(`${item_1.groupId}:${item_1.key}`);
414
+ $[9] = selectStateId;
415
+ $[10] = t3;
416
+ } else t3 = $[10];
417
+ const handleRowClick = t3;
418
+ let t4;
419
+ if ($[11] !== selectStateId) {
420
+ t4 = () => selectStateId(void 0);
421
+ $[11] = selectStateId;
422
+ $[12] = t4;
423
+ } else t4 = $[12];
424
+ const onClose = t4;
425
+ let t5;
426
+ if ($[13] !== checkedItems || $[14] !== deleteItems) {
427
+ t5 = () => {
428
+ deleteItems(Array.from(checkedItems));
429
+ setCheckedItems(/* @__PURE__ */ new Set());
430
+ };
431
+ $[13] = checkedItems;
432
+ $[14] = deleteItems;
433
+ $[15] = t5;
434
+ } else t5 = $[15];
435
+ const deleteStates = t5;
436
+ let t6;
437
+ if ($[16] !== checkedItems) {
438
+ t6 = (item_2) => {
439
+ const isChecked = checkedItems.has(`${item_2.groupId}:${item_2.key}`);
440
+ setCheckedItems((prev) => {
441
+ const newSet = new Set(prev);
442
+ if (isChecked) newSet.delete(`${item_2.groupId}:${item_2.key}`);
443
+ else newSet.add(`${item_2.groupId}:${item_2.key}`);
444
+ return newSet;
445
+ });
446
+ };
447
+ $[16] = checkedItems;
448
+ $[17] = t6;
449
+ } else t6 = $[17];
450
+ const handleCheckboxChange = t6;
451
+ let t7;
452
+ if ($[18] !== filteredItems) {
453
+ t7 = (checked) => {
454
+ setCheckedItems((prev_0) => {
455
+ const newSet_0 = new Set(prev_0);
456
+ if (checked) filteredItems.forEach((item_3) => {
457
+ newSet_0.add(`${item_3.groupId}:${item_3.key}`);
458
+ });
459
+ else filteredItems.forEach((item_4) => {
460
+ newSet_0.delete(`${item_4.groupId}:${item_4.key}`);
461
+ });
462
+ return newSet_0;
463
+ });
464
+ };
465
+ $[18] = filteredItems;
466
+ $[19] = t7;
467
+ } else t7 = $[19];
468
+ const toggleSelectAll = t7;
469
+ let t8;
470
+ if ($[20] !== onClose || $[21] !== selectedItem) {
471
+ t8 = selectedItem && /* @__PURE__ */ jsx(StateSidebar, {
472
+ state: selectedItem,
473
+ onClose
474
+ });
475
+ $[20] = onClose;
476
+ $[21] = selectedItem;
477
+ $[22] = t8;
478
+ } else t8 = $[22];
479
+ let t9;
480
+ if ($[23] === Symbol.for("react.memo_cache_sentinel")) {
481
+ t9 = (e) => setSearch(e.target.value);
482
+ $[23] = t9;
483
+ } else t9 = $[23];
484
+ let t10;
485
+ if ($[24] !== search) {
486
+ t10 = /* @__PURE__ */ jsx(Input, {
487
+ variant: "shade",
488
+ value: search,
489
+ onChange: t9,
490
+ className: "px-9! font-medium",
491
+ placeholder: "Search by Group ID or Key"
492
+ });
493
+ $[24] = search;
494
+ $[25] = t10;
495
+ } else t10 = $[25];
496
+ let t11;
497
+ if ($[26] === Symbol.for("react.memo_cache_sentinel")) {
498
+ t11 = /* @__PURE__ */ jsx(Search, { className: "absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground/50" });
499
+ $[26] = t11;
500
+ } else t11 = $[26];
501
+ let t12;
502
+ if ($[27] === Symbol.for("react.memo_cache_sentinel")) {
503
+ t12 = /* @__PURE__ */ jsx(X, {
504
+ 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",
505
+ onClick: () => setSearch("")
506
+ });
507
+ $[27] = t12;
508
+ } else t12 = $[27];
509
+ let t13;
510
+ if ($[28] !== t10) {
511
+ t13 = /* @__PURE__ */ jsxs("div", {
512
+ className: "flex-1 relative",
513
+ children: [
514
+ t10,
515
+ t11,
516
+ t12
517
+ ]
518
+ });
519
+ $[28] = t10;
520
+ $[29] = t13;
521
+ } else t13 = $[29];
522
+ const t14 = checkedItems.size === 0;
523
+ let t15;
524
+ if ($[30] === Symbol.for("react.memo_cache_sentinel")) {
525
+ t15 = /* @__PURE__ */ jsx(Trash, {});
526
+ $[30] = t15;
527
+ } else t15 = $[30];
528
+ let t16;
529
+ if ($[31] !== deleteStates || $[32] !== t14) {
530
+ t16 = /* @__PURE__ */ jsxs(Button, {
531
+ variant: "default",
532
+ className: "h-[34px]",
533
+ disabled: t14,
534
+ onClick: deleteStates,
535
+ children: [t15, " Delete"]
536
+ });
537
+ $[31] = deleteStates;
538
+ $[32] = t14;
539
+ $[33] = t16;
540
+ } else t16 = $[33];
541
+ let t17;
542
+ if ($[34] === Symbol.for("react.memo_cache_sentinel")) {
543
+ t17 = /* @__PURE__ */ jsx(RefreshCw, { className: "w-4 h-4 text-muted-foreground" });
544
+ $[34] = t17;
545
+ } else t17 = $[34];
546
+ let t18;
547
+ if ($[35] !== refetch) {
548
+ t18 = /* @__PURE__ */ jsx(Button, {
549
+ variant: "default",
550
+ className: "h-[34px]",
551
+ onClick: refetch,
552
+ children: t17
553
+ });
554
+ $[35] = refetch;
555
+ $[36] = t18;
556
+ } else t18 = $[36];
557
+ let t19;
558
+ if ($[37] !== t13 || $[38] !== t16 || $[39] !== t18) {
559
+ t19 = /* @__PURE__ */ jsxs("div", {
560
+ className: "flex p-2 border-b gap-2",
561
+ "data-testid": "logs-search-container",
562
+ children: [
563
+ t13,
564
+ t16,
565
+ t18
566
+ ]
567
+ });
568
+ $[37] = t13;
569
+ $[38] = t16;
570
+ $[39] = t18;
571
+ $[40] = t19;
572
+ } else t19 = $[40];
573
+ let t20;
574
+ if ($[41] !== toggleSelectAll) {
575
+ t20 = /* @__PURE__ */ jsx(TableHead, { children: /* @__PURE__ */ jsx(Checkbox, {
576
+ onClick: _temp3,
577
+ onCheckedChange: toggleSelectAll
578
+ }) });
579
+ $[41] = toggleSelectAll;
580
+ $[42] = t20;
581
+ } else t20 = $[42];
582
+ let t21;
583
+ let t22;
584
+ let t23;
585
+ if ($[43] === Symbol.for("react.memo_cache_sentinel")) {
586
+ t21 = /* @__PURE__ */ jsx(TableHead, {
587
+ className: "rounded-0",
588
+ children: "Group ID"
589
+ });
590
+ t22 = /* @__PURE__ */ jsx(TableHead, { children: "Key" });
591
+ t23 = /* @__PURE__ */ jsx(TableHead, { children: "Type" });
592
+ $[43] = t21;
593
+ $[44] = t22;
594
+ $[45] = t23;
595
+ } else {
596
+ t21 = $[43];
597
+ t22 = $[44];
598
+ t23 = $[45];
599
+ }
600
+ let t24;
601
+ if ($[46] !== t20) {
602
+ t24 = /* @__PURE__ */ jsx(TableHeader, {
603
+ className: "sticky top-0 bg-background/20 backdrop-blur-sm",
604
+ children: /* @__PURE__ */ jsxs(TableRow, { children: [
605
+ t20,
606
+ t21,
607
+ t22,
608
+ t23
609
+ ] })
610
+ });
611
+ $[46] = t20;
612
+ $[47] = t24;
613
+ } else t24 = $[47];
614
+ let t25;
615
+ if ($[48] !== checkedItems || $[49] !== filteredItems || $[50] !== handleCheckboxChange || $[51] !== handleRowClick || $[52] !== selectedItem) {
616
+ let t26$1;
617
+ if ($[54] !== checkedItems || $[55] !== handleCheckboxChange || $[56] !== handleRowClick || $[57] !== selectedItem) {
618
+ t26$1 = (item_5) => /* @__PURE__ */ jsxs(TableRow, {
619
+ "data-testid": `item-${item_5}`,
620
+ onClick: () => handleRowClick(item_5),
621
+ className: cn("font-mono font-semibold cursor-pointer border-0", selectedItem === item_5 ? "bg-muted-foreground/10 hover:bg-muted-foreground/20" : "hover:bg-muted-foreground/10"),
622
+ children: [
623
+ /* @__PURE__ */ jsx(TableCell, {
624
+ onClick: _temp4,
625
+ children: /* @__PURE__ */ jsx(Checkbox, {
626
+ checked: checkedItems.has(`${item_5.groupId}:${item_5.key}`),
627
+ onClick: () => handleCheckboxChange(item_5)
628
+ })
629
+ }),
630
+ /* @__PURE__ */ jsx(TableCell, {
631
+ className: "hover:bg-transparent",
632
+ children: item_5.groupId
633
+ }),
634
+ /* @__PURE__ */ jsx(TableCell, {
635
+ className: "hover:bg-transparent",
636
+ children: item_5.key
637
+ }),
638
+ /* @__PURE__ */ jsx(TableCell, {
639
+ className: "hover:bg-transparent",
640
+ children: item_5.type
641
+ })
642
+ ]
643
+ }, `${item_5.groupId}:${item_5.key}`);
644
+ $[54] = checkedItems;
645
+ $[55] = handleCheckboxChange;
646
+ $[56] = handleRowClick;
647
+ $[57] = selectedItem;
648
+ $[58] = t26$1;
649
+ } else t26$1 = $[58];
650
+ t25 = filteredItems.map(t26$1);
651
+ $[48] = checkedItems;
652
+ $[49] = filteredItems;
653
+ $[50] = handleCheckboxChange;
654
+ $[51] = handleRowClick;
655
+ $[52] = selectedItem;
656
+ $[53] = t25;
657
+ } else t25 = $[53];
658
+ let t26;
659
+ if ($[59] !== t25) {
660
+ t26 = /* @__PURE__ */ jsx(TableBody, { children: t25 });
661
+ $[59] = t25;
662
+ $[60] = t26;
663
+ } else t26 = $[60];
664
+ let t27;
665
+ if ($[61] !== t24 || $[62] !== t26) {
666
+ t27 = /* @__PURE__ */ jsxs(Table, { children: [t24, t26] });
667
+ $[61] = t24;
668
+ $[62] = t26;
669
+ $[63] = t27;
670
+ } else t27 = $[63];
671
+ let t28;
672
+ if ($[64] !== t19 || $[65] !== t27) {
673
+ t28 = /* @__PURE__ */ jsxs("div", {
674
+ className: "grid grid-rows-[auto_1fr] h-full",
675
+ "data-testid": "states-container",
676
+ children: [t19, t27]
677
+ });
678
+ $[64] = t19;
679
+ $[65] = t27;
680
+ $[66] = t28;
681
+ } else t28 = $[66];
682
+ let t29;
683
+ if ($[67] !== t28 || $[68] !== t8) {
684
+ t29 = /* @__PURE__ */ jsxs(Fragment, { children: [t8, t28] });
685
+ $[67] = t28;
686
+ $[68] = t8;
687
+ $[69] = t29;
688
+ } else t29 = $[69];
689
+ return t29;
690
+ };
691
+ function _temp(state) {
692
+ return state.selectedStateId;
693
+ }
694
+ function _temp2(state_0) {
695
+ return state_0.selectStateId;
696
+ }
697
+ function _temp3(evt) {
698
+ return evt.stopPropagation();
699
+ }
700
+ function _temp4(evt_0) {
701
+ return evt_0.stopPropagation();
702
+ }
703
+
704
+ //#endregion
705
+ export { StatesPage };
706
+ //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useCallback","useEffect","useState","StateItem","Output","items","deleteItems","ids","refetch","useGetStateItems","$","_c","$i","Symbol","for","t0","setItems","t1","fetch","then","_temp","catch","_temp2","t2","method","headers","body","JSON","stringify","t3","t4","t5","res","ok","json","err","console","error","create","StatesState","selectedStateId","selectStateId","stateId","useStatesStore","set","undefined","React","JsonView","StateItem","Props","state","StateDetails","FC","t0","$","_c","$i","Symbol","for","t1","value","Editor","useMonaco","useThemeStore","FC","useEffect","useMemo","JsonEditorProps","value","height","schema","Record","onChange","onValidate","isValid","language","readOnly","JsonEditor","t0","$","_c","$i","Symbol","for","t1","t2","t3","undefined","monaco","theme","_temp","editorTheme","t4","languages","typescript","javascriptDefaults","setCompilerOptions","isolatedModules","json","jsonDefaults","setDiagnosticsOptions","schemas","uri","window","location","href","fileMatch","t5","t6","value_0","t7","markers","length","t8","enabled","t9","scrollBeyondLastLine","minimap","t10","state","Button","AlertCircle","Check","Loader2","Save","React","useCallback","useEffect","useMemo","useRef","useState","StateItem","JsonEditor","Props","state","StateEditor","FC","isRequestLoading","setIsRequestLoading","isValid","setIsValid","jsonValue","setJsonValue","JSON","stringify","value","hasChanges","setHasChanges","saveStatus","setSaveStatus","lastSavedValue","handleJsonChange","current","handleSave","response","fetch","method","headers","body","key","groupId","parse","ok","Error","status","setTimeout","error","console","resetChanges","statusView","Sidebar","X","React","StateItem","StateDetails","StateEditor","Props","state","onClose","StateSidebar","FC","t0","$","_c","$i","Symbol","for","t1","label","content","t2","t3","t4","t5","icon","onClick","t6","Button","Checkbox","cn","Input","Table","TableBody","TableCell","TableHead","TableHeader","TableRow","RefreshCw","Search","Trash","X","useMemo","useState","useGetStateItems","useStatesStore","StateItem","StateSidebar","StatesPage","$","_c","$i","Symbol","for","selectedStateId","_temp","selectStateId","_temp2","items","deleteItems","refetch","search","setSearch","t0","t1","item","groupId","toLowerCase","includes","key","filter","filteredItems","find","item_0","selectedItem","t2","Set","checkedItems","setCheckedItems","t3","item_1","handleRowClick","t4","undefined","onClose","t5","Array","from","deleteStates","t6","item_2","isChecked","has","prev","newSet","delete","add","handleCheckboxChange","t7","checked","prev_0","newSet_0","forEach","item_3","item_4","toggleSelectAll","t8","t9","e","target","value","t10","t11","t12","t13","t14","size","t15","t16","t17","t18","t19","t20","_temp3","t21","t22","t23","t24","t25","t26","item_5","_temp4","type","map","t27","t28","t29","state","state_0","evt","stopPropagation","evt_0"],"sources":["../src/hooks/states-hooks.ts","../src/stores/use-states-store.ts","../src/components/state-details.tsx","../src/components/json-editor.tsx","../src/components/state-editor.tsx","../src/components/state-sidebar.tsx","../src/components/states-page.tsx"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react'\nimport type { StateItem } from '../types/state'\n\ntype Output = {\n items: StateItem[]\n deleteItems: (ids: string[]) => void\n refetch: () => void\n}\n\nexport const useGetStateItems = (): Output => {\n const [items, setItems] = useState<StateItem[]>([])\n\n const refetch = useCallback(() => {\n fetch('/__motia/state')\n .then(async (res) => {\n if (res.ok) {\n return res.json()\n } else {\n throw await res.json()\n }\n })\n .then(setItems)\n .catch((err) => console.error(err))\n }, [])\n\n const deleteItems = (ids: string[]) => {\n fetch('/__motia/state/delete', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ ids }),\n }).then(() => refetch())\n }\n\n useEffect(() => {\n refetch()\n }, [refetch])\n\n return { items, deleteItems, refetch }\n}\n","import { create } from 'zustand'\n\nexport type StatesState = {\n selectedStateId?: string\n selectStateId: (stateId?: string) => void\n}\n\nexport const useStatesStore = create<StatesState>()((set) => ({\n selectedStateId: undefined,\n selectStateId: (stateId) => set({ selectedStateId: stateId }),\n}))\n","import type React from 'react'\nimport JsonView from 'react18-json-view'\nimport type { StateItem } from '../types/state'\n\ntype Props = {\n state: StateItem\n}\n\nexport const StateDetails: React.FC<Props> = ({ state }) => <JsonView src={state.value} theme=\"default\" />\n","import Editor, { useMonaco } from '@monaco-editor/react'\nimport { useThemeStore } from '@motiadev/ui'\nimport { type FC, useEffect, useMemo } from 'react'\n\ntype JsonEditorProps = {\n value: string\n height?: number | string\n schema?: Record<string, unknown>\n onChange?: (value: string) => void\n onValidate?: (isValid: boolean) => void\n language?: string\n readOnly?: boolean\n}\n\nexport const JsonEditor: FC<JsonEditorProps> = ({\n value,\n height = 300,\n schema,\n onChange,\n onValidate,\n language = 'json',\n readOnly = false,\n}) => {\n const monaco = useMonaco()\n const theme = useThemeStore((state) => state.theme)\n const editorTheme = useMemo(() => (theme === 'dark' ? 'vs-dark' : 'light'), [theme])\n\n useEffect(() => {\n if (!monaco) return\n\n monaco.languages.typescript.javascriptDefaults.setCompilerOptions({ isolatedModules: true })\n monaco.languages.json.jsonDefaults.setDiagnosticsOptions({\n schemas: schema\n ? [\n {\n uri: window.location.href,\n fileMatch: ['*'],\n schema,\n },\n ]\n : [],\n })\n }, [monaco, schema, language])\n\n return (\n <Editor\n data-testid=\"json-editor\"\n height={height}\n language={language}\n value={value}\n theme={editorTheme}\n onChange={(value) => {\n if (!value) {\n onValidate?.(false)\n }\n onChange?.(value ?? '')\n }}\n onValidate={(markers) => onValidate?.(markers.length === 0)}\n options={{\n readOnly,\n scrollBeyondLastLine: false,\n minimap: { enabled: false },\n }}\n />\n )\n}\n","import { Button } from '@motiadev/ui'\nimport { AlertCircle, Check, Loader2, Save } from 'lucide-react'\nimport type React from 'react'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport type { StateItem } from '../types/state'\nimport { JsonEditor } from './json-editor'\n\ntype Props = {\n state: StateItem\n}\n\nexport const StateEditor: React.FC<Props> = ({ state }) => {\n const [isRequestLoading, setIsRequestLoading] = useState(false)\n const [isValid, setIsValid] = useState(true)\n const [jsonValue, setJsonValue] = useState(JSON.stringify(state.value, null, 2))\n const [hasChanges, setHasChanges] = useState(false)\n const [saveStatus, setSaveStatus] = useState<'idle' | 'success' | 'error'>('idle')\n const lastSavedValue = useRef(JSON.stringify(state.value, null, 2))\n useEffect(() => {\n setJsonValue(JSON.stringify(state.value, null, 2))\n }, [state.value])\n\n const handleJsonChange = useCallback((value: string) => {\n setHasChanges(value !== lastSavedValue.current)\n setJsonValue(value)\n setSaveStatus('idle')\n }, [])\n\n const handleSave = async () => {\n if (!isValid || !hasChanges) return\n\n try {\n setIsRequestLoading(true)\n setSaveStatus('idle')\n\n const response = await fetch('/__motia/state', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n key: state.key,\n groupId: state.groupId,\n value: JSON.parse(jsonValue),\n }),\n })\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`)\n }\n\n lastSavedValue.current = jsonValue\n setSaveStatus('success')\n setHasChanges(false)\n\n setTimeout(() => {\n setSaveStatus('idle')\n }, 3000)\n } catch (error) {\n console.error('Failed to save state:', error)\n setSaveStatus('error')\n } finally {\n setIsRequestLoading(false)\n }\n }\n\n const resetChanges = useCallback(() => {\n setJsonValue(JSON.stringify(state.value, null, 2))\n setHasChanges(false)\n setSaveStatus('idle')\n }, [state.value])\n\n const statusView = useMemo(() => {\n if (saveStatus === 'success') {\n return (\n <div className=\"bg-green-50 dark:bg-green-950/20 border border-green-200 dark:border-green-800 rounded-lg p-2\">\n <div className=\"flex items-center gap-2 text-green-700 dark:text-green-400 text-sm\">\n <Check className=\"w-4 h-4\" />\n State saved successfully!\n </div>\n </div>\n )\n }\n\n if (saveStatus === 'error') {\n return (\n <div className=\"bg-red-50 dark:bg-red-950/20 border border-red-200 dark:border-red-800 rounded-lg p-2\">\n <div className=\"flex items-center gap-2 text-red-700 dark:text-red-400 text-sm\">\n <AlertCircle className=\"w-4 h-4\" />\n Failed to save state. Please try again.\n </div>\n </div>\n )\n }\n\n return (\n <div className=\"text-xs text-muted-foreground\">\n {hasChanges ? (\n <span className=\"flex items-center gap-1\">\n <div className=\"w-2 h-2 bg-orange-500 rounded-full\"></div>\n Unsaved changes\n </span>\n ) : (\n <span className=\"flex items-center gap-1\">\n <div className=\"w-2 h-2 bg-green-500 rounded-full\"></div>\n Up to date\n </span>\n )}\n </div>\n )\n }, [saveStatus, hasChanges])\n\n return (\n <div className=\"flex flex-col gap-2 h-full\">\n <p className=\"text-xs text-muted-foreground\">Modify the state value using the JSON editor below.</p>\n <div className=\"space-y-3 pt-2 flex flex-col\">\n <div className=\"relative flex-1\">\n <JsonEditor\n value={jsonValue}\n onChange={handleJsonChange}\n onValidate={setIsValid}\n height={'calc(100vh - 300px)'}\n />\n\n {!isValid && (\n <div className=\"absolute top-2 right-2 bg-destructive/90 text-destructive-foreground px-2 py-1 rounded text-xs flex items-center gap-1\">\n <AlertCircle className=\"w-3 h-3\" />\n Invalid JSON\n </div>\n )}\n </div>\n </div>\n\n <div className=\"flex items-center justify-between pt-2\">\n {statusView}\n\n <div className=\"flex items-center gap-2\">\n {hasChanges && (\n <Button variant=\"secondary\" onClick={resetChanges} disabled={isRequestLoading}>\n Reset\n </Button>\n )}\n\n <Button\n onClick={handleSave}\n variant=\"accent\"\n disabled={isRequestLoading || !isValid || !hasChanges}\n data-testid=\"state-save-button\"\n >\n {isRequestLoading ? (\n <>\n <Loader2 className=\"w-3 h-3 animate-spin mr-1\" />\n Saving...\n </>\n ) : (\n <>\n <Save className=\"w-3 h-3 mr-1\" />\n Save Changes\n </>\n )}\n </Button>\n </div>\n </div>\n </div>\n )\n}\n","import { Sidebar } from '@motiadev/ui'\nimport { X } from 'lucide-react'\nimport type React from 'react'\nimport type { StateItem } from '../types/state'\nimport { StateDetails } from './state-details'\nimport { StateEditor } from './state-editor'\n\ntype Props = {\n state: StateItem\n onClose: () => void\n}\n\nexport const StateSidebar: React.FC<Props> = ({ state, onClose }) => {\n return (\n <Sidebar\n onClose={onClose}\n title=\"State Details\"\n initialWidth={500}\n tabs={[\n {\n label: 'Overview',\n content: <StateDetails state={state} />,\n },\n {\n label: 'Editor',\n content: <StateEditor state={state} />,\n },\n ]}\n actions={[{ icon: <X />, onClick: onClose, label: 'Close' }]}\n />\n )\n}\n","import {\n Button,\n Checkbox,\n cn,\n Input,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@motiadev/ui'\nimport { RefreshCw, Search, Trash, X } from 'lucide-react'\nimport { useMemo, useState } from 'react'\nimport { useGetStateItems } from '../hooks/states-hooks'\nimport { useStatesStore } from '../stores/use-states-store'\nimport type { StateItem } from '../types/state'\nimport { StateSidebar } from './state-sidebar'\n\nexport const StatesPage = () => {\n const selectedStateId = useStatesStore((state) => state.selectedStateId)\n const selectStateId = useStatesStore((state) => state.selectStateId)\n const { items, deleteItems, refetch } = useGetStateItems()\n const [search, setSearch] = useState('')\n const filteredItems = useMemo(() => {\n return items.filter((item) => {\n return (\n item.groupId.toLowerCase().includes(search.toLowerCase()) ||\n item.key.toLowerCase().includes(search.toLowerCase())\n )\n })\n }, [items, search])\n const selectedItem = useMemo(\n () => (selectedStateId ? filteredItems.find((item) => `${item.groupId}:${item.key}` === selectedStateId) : null),\n [filteredItems, selectedStateId],\n )\n\n const [checkedItems, setCheckedItems] = useState<Set<string>>(new Set())\n const handleRowClick = (item: StateItem) => selectStateId(`${item.groupId}:${item.key}`)\n const onClose = () => selectStateId(undefined)\n const deleteStates = () => {\n deleteItems(Array.from(checkedItems))\n setCheckedItems(new Set())\n }\n\n const handleCheckboxChange = (item: StateItem) => {\n const isChecked = checkedItems.has(`${item.groupId}:${item.key}`)\n\n setCheckedItems((prev) => {\n const newSet = new Set(prev)\n if (isChecked) {\n newSet.delete(`${item.groupId}:${item.key}`)\n } else {\n newSet.add(`${item.groupId}:${item.key}`)\n }\n return newSet\n })\n }\n\n const toggleSelectAll = (checked: boolean) => {\n setCheckedItems((prev) => {\n const newSet = new Set(prev)\n\n if (checked) {\n filteredItems.forEach((item) => {\n newSet.add(`${item.groupId}:${item.key}`)\n })\n } else {\n filteredItems.forEach((item) => {\n newSet.delete(`${item.groupId}:${item.key}`)\n })\n }\n return newSet\n })\n }\n\n return (\n <>\n {selectedItem && <StateSidebar state={selectedItem} onClose={onClose} />}\n <div className=\"grid grid-rows-[auto_1fr] h-full\" data-testid=\"states-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 Group ID or Key\"\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\" className=\"h-[34px]\" disabled={checkedItems.size === 0} onClick={deleteStates}>\n <Trash /> Delete\n </Button>\n <Button variant=\"default\" className=\"h-[34px]\" onClick={refetch}>\n <RefreshCw className=\"w-4 h-4 text-muted-foreground\" />\n </Button>\n </div>\n\n <Table>\n <TableHeader className=\"sticky top-0 bg-background/20 backdrop-blur-sm\">\n <TableRow>\n <TableHead>\n <Checkbox onClick={(evt) => evt.stopPropagation()} onCheckedChange={toggleSelectAll} />\n </TableHead>\n <TableHead className=\"rounded-0\">Group ID</TableHead>\n <TableHead>Key</TableHead>\n <TableHead>Type</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {filteredItems.map((item) => (\n <TableRow\n data-testid={`item-${item}`}\n key={`${item.groupId}:${item.key}`}\n onClick={() => handleRowClick(item)}\n className={cn(\n 'font-mono font-semibold cursor-pointer border-0',\n selectedItem === item\n ? 'bg-muted-foreground/10 hover:bg-muted-foreground/20'\n : 'hover:bg-muted-foreground/10',\n )}\n >\n <TableCell onClick={(evt) => evt.stopPropagation()}>\n <Checkbox\n checked={checkedItems.has(`${item.groupId}:${item.key}`)}\n onClick={() => handleCheckboxChange(item)}\n />\n </TableCell>\n <TableCell className=\"hover:bg-transparent\">{item.groupId}</TableCell>\n <TableCell className=\"hover:bg-transparent\">{item.key}</TableCell>\n <TableCell className=\"hover:bg-transparent\">{item.type}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n </>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["useCallback","useEffect","useState","StateItem","Output","items","deleteItems","ids","refetch","useGetStateItems","$","_c","t0","Symbol","for","setItems","t1","fetch","then","_temp","catch","_temp2","t2","method","headers","body","JSON","stringify","t3","t4","t5","res","ok","json","err","console","error","create","StatesState","selectedStateId","selectStateId","stateId","useStatesStore","set","undefined","React","JsonView","StateItem","Props","state","StateDetails","FC","t0","$","_c","t1","value","Editor","useMonaco","useThemeStore","FC","useEffect","useMemo","JsonEditorProps","value","height","schema","Record","onChange","onValidate","isValid","language","readOnly","JsonEditor","t0","$","_c","t1","t2","t3","undefined","monaco","theme","_temp","editorTheme","t4","languages","typescript","javascriptDefaults","setCompilerOptions","isolatedModules","json","jsonDefaults","setDiagnosticsOptions","schemas","uri","window","location","href","fileMatch","t5","t6","value_0","t7","markers","length","t8","Symbol","for","enabled","t9","scrollBeyondLastLine","minimap","t10","state","Button","AlertCircle","Check","Loader2","Save","React","useCallback","useEffect","useMemo","useRef","useState","StateItem","JsonEditor","Props","state","StateEditor","FC","isRequestLoading","setIsRequestLoading","isValid","setIsValid","jsonValue","setJsonValue","JSON","stringify","value","hasChanges","setHasChanges","saveStatus","setSaveStatus","lastSavedValue","handleJsonChange","current","handleSave","response","fetch","method","headers","body","key","groupId","parse","ok","Error","status","setTimeout","error","console","resetChanges","statusView","Sidebar","X","React","StateItem","StateDetails","StateEditor","Props","state","onClose","StateSidebar","FC","t0","$","_c","t1","label","content","t2","t3","t4","Symbol","for","t5","icon","onClick","t6","Button","Checkbox","cn","Input","Table","TableBody","TableCell","TableHead","TableHeader","TableRow","RefreshCw","Search","Trash","X","useMemo","useState","useGetStateItems","useStatesStore","StateItem","StateSidebar","StatesPage","$","_c","selectedStateId","_temp","selectStateId","_temp2","items","deleteItems","refetch","search","setSearch","t0","t1","item","groupId","toLowerCase","includes","key","filter","filteredItems","find","item_0","selectedItem","t2","Symbol","for","Set","checkedItems","setCheckedItems","t3","item_1","handleRowClick","t4","undefined","onClose","t5","Array","from","deleteStates","t6","item_2","isChecked","has","prev","newSet","delete","add","handleCheckboxChange","t7","checked","prev_0","newSet_0","forEach","item_3","item_4","toggleSelectAll","t8","t9","e","target","value","t10","t11","t12","t13","t14","size","t15","t16","t17","t18","t19","t20","_temp3","t21","t22","t23","t24","t25","t26","item_5","_temp4","type","map","t27","t28","t29","state","state_0","evt","stopPropagation","evt_0"],"sources":["../src/hooks/states-hooks.ts","../src/stores/use-states-store.ts","../src/components/state-details.tsx","../src/components/json-editor.tsx","../src/components/state-editor.tsx","../src/components/state-sidebar.tsx","../src/components/states-page.tsx"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react'\nimport type { StateItem } from '../types/state'\n\ntype Output = {\n items: StateItem[]\n deleteItems: (ids: string[]) => void\n refetch: () => void\n}\n\nexport const useGetStateItems = (): Output => {\n const [items, setItems] = useState<StateItem[]>([])\n\n const refetch = useCallback(() => {\n fetch('/__motia/state')\n .then(async (res) => {\n if (res.ok) {\n return res.json()\n } else {\n throw await res.json()\n }\n })\n .then(setItems)\n .catch((err) => console.error(err))\n }, [])\n\n const deleteItems = (ids: string[]) => {\n fetch('/__motia/state/delete', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ ids }),\n }).then(() => refetch())\n }\n\n useEffect(() => {\n refetch()\n }, [refetch])\n\n return { items, deleteItems, refetch }\n}\n","import { create } from 'zustand'\n\nexport type StatesState = {\n selectedStateId?: string\n selectStateId: (stateId?: string) => void\n}\n\nexport const useStatesStore = create<StatesState>()((set) => ({\n selectedStateId: undefined,\n selectStateId: (stateId) => set({ selectedStateId: stateId }),\n}))\n","import type React from 'react'\nimport JsonView from 'react18-json-view'\nimport type { StateItem } from '../types/state'\n\ntype Props = {\n state: StateItem\n}\n\nexport const StateDetails: React.FC<Props> = ({ state }) => <JsonView src={state.value} theme=\"default\" />\n","import Editor, { useMonaco } from '@monaco-editor/react'\nimport { useThemeStore } from '@motiadev/ui'\nimport { type FC, useEffect, useMemo } from 'react'\n\ntype JsonEditorProps = {\n value: string\n height?: number | string\n schema?: Record<string, unknown>\n onChange?: (value: string) => void\n onValidate?: (isValid: boolean) => void\n language?: string\n readOnly?: boolean\n}\n\nexport const JsonEditor: FC<JsonEditorProps> = ({\n value,\n height = 300,\n schema,\n onChange,\n onValidate,\n language = 'json',\n readOnly = false,\n}) => {\n const monaco = useMonaco()\n const theme = useThemeStore((state) => state.theme)\n const editorTheme = useMemo(() => (theme === 'dark' ? 'vs-dark' : 'light'), [theme])\n\n useEffect(() => {\n if (!monaco) return\n\n monaco.languages.typescript.javascriptDefaults.setCompilerOptions({ isolatedModules: true })\n monaco.languages.json.jsonDefaults.setDiagnosticsOptions({\n schemas: schema\n ? [\n {\n uri: window.location.href,\n fileMatch: ['*'],\n schema,\n },\n ]\n : [],\n })\n }, [monaco, schema, language])\n\n return (\n <Editor\n data-testid=\"json-editor\"\n height={height}\n language={language}\n value={value}\n theme={editorTheme}\n onChange={(value) => {\n if (!value) {\n onValidate?.(false)\n }\n onChange?.(value ?? '')\n }}\n onValidate={(markers) => onValidate?.(markers.length === 0)}\n options={{\n readOnly,\n scrollBeyondLastLine: false,\n minimap: { enabled: false },\n }}\n />\n )\n}\n","import { Button } from '@motiadev/ui'\nimport { AlertCircle, Check, Loader2, Save } from 'lucide-react'\nimport type React from 'react'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport type { StateItem } from '../types/state'\nimport { JsonEditor } from './json-editor'\n\ntype Props = {\n state: StateItem\n}\n\nexport const StateEditor: React.FC<Props> = ({ state }) => {\n const [isRequestLoading, setIsRequestLoading] = useState(false)\n const [isValid, setIsValid] = useState(true)\n const [jsonValue, setJsonValue] = useState(JSON.stringify(state.value, null, 2))\n const [hasChanges, setHasChanges] = useState(false)\n const [saveStatus, setSaveStatus] = useState<'idle' | 'success' | 'error'>('idle')\n const lastSavedValue = useRef(JSON.stringify(state.value, null, 2))\n useEffect(() => {\n setJsonValue(JSON.stringify(state.value, null, 2))\n }, [state.value])\n\n const handleJsonChange = useCallback((value: string) => {\n setHasChanges(value !== lastSavedValue.current)\n setJsonValue(value)\n setSaveStatus('idle')\n }, [])\n\n const handleSave = async () => {\n if (!isValid || !hasChanges) return\n\n try {\n setIsRequestLoading(true)\n setSaveStatus('idle')\n\n const response = await fetch('/__motia/state', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n key: state.key,\n groupId: state.groupId,\n value: JSON.parse(jsonValue),\n }),\n })\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`)\n }\n\n lastSavedValue.current = jsonValue\n setSaveStatus('success')\n setHasChanges(false)\n\n setTimeout(() => {\n setSaveStatus('idle')\n }, 3000)\n } catch (error) {\n console.error('Failed to save state:', error)\n setSaveStatus('error')\n } finally {\n setIsRequestLoading(false)\n }\n }\n\n const resetChanges = useCallback(() => {\n setJsonValue(JSON.stringify(state.value, null, 2))\n setHasChanges(false)\n setSaveStatus('idle')\n }, [state.value])\n\n const statusView = useMemo(() => {\n if (saveStatus === 'success') {\n return (\n <div className=\"bg-green-50 dark:bg-green-950/20 border border-green-200 dark:border-green-800 rounded-lg p-2\">\n <div className=\"flex items-center gap-2 text-green-700 dark:text-green-400 text-sm\">\n <Check className=\"w-4 h-4\" />\n State saved successfully!\n </div>\n </div>\n )\n }\n\n if (saveStatus === 'error') {\n return (\n <div className=\"bg-red-50 dark:bg-red-950/20 border border-red-200 dark:border-red-800 rounded-lg p-2\">\n <div className=\"flex items-center gap-2 text-red-700 dark:text-red-400 text-sm\">\n <AlertCircle className=\"w-4 h-4\" />\n Failed to save state. Please try again.\n </div>\n </div>\n )\n }\n\n return (\n <div className=\"text-xs text-muted-foreground\">\n {hasChanges ? (\n <span className=\"flex items-center gap-1\">\n <div className=\"w-2 h-2 bg-orange-500 rounded-full\"></div>\n Unsaved changes\n </span>\n ) : (\n <span className=\"flex items-center gap-1\">\n <div className=\"w-2 h-2 bg-green-500 rounded-full\"></div>\n Up to date\n </span>\n )}\n </div>\n )\n }, [saveStatus, hasChanges])\n\n return (\n <div className=\"flex flex-col gap-2 h-full\">\n <p className=\"text-xs text-muted-foreground\">Modify the state value using the JSON editor below.</p>\n <div className=\"space-y-3 pt-2 flex flex-col\">\n <div className=\"relative flex-1\">\n <JsonEditor\n value={jsonValue}\n onChange={handleJsonChange}\n onValidate={setIsValid}\n height={'calc(100vh - 300px)'}\n />\n\n {!isValid && (\n <div className=\"absolute top-2 right-2 bg-destructive/90 text-destructive-foreground px-2 py-1 rounded text-xs flex items-center gap-1\">\n <AlertCircle className=\"w-3 h-3\" />\n Invalid JSON\n </div>\n )}\n </div>\n </div>\n\n <div className=\"flex items-center justify-between pt-2\">\n {statusView}\n\n <div className=\"flex items-center gap-2\">\n {hasChanges && (\n <Button variant=\"secondary\" onClick={resetChanges} disabled={isRequestLoading}>\n Reset\n </Button>\n )}\n\n <Button\n onClick={handleSave}\n variant=\"accent\"\n disabled={isRequestLoading || !isValid || !hasChanges}\n data-testid=\"state-save-button\"\n >\n {isRequestLoading ? (\n <>\n <Loader2 className=\"w-3 h-3 animate-spin mr-1\" />\n Saving...\n </>\n ) : (\n <>\n <Save className=\"w-3 h-3 mr-1\" />\n Save Changes\n </>\n )}\n </Button>\n </div>\n </div>\n </div>\n )\n}\n","import { Sidebar } from '@motiadev/ui'\nimport { X } from 'lucide-react'\nimport type React from 'react'\nimport type { StateItem } from '../types/state'\nimport { StateDetails } from './state-details'\nimport { StateEditor } from './state-editor'\n\ntype Props = {\n state: StateItem\n onClose: () => void\n}\n\nexport const StateSidebar: React.FC<Props> = ({ state, onClose }) => {\n return (\n <Sidebar\n onClose={onClose}\n title=\"State Details\"\n initialWidth={500}\n tabs={[\n {\n label: 'Overview',\n content: <StateDetails state={state} />,\n },\n {\n label: 'Editor',\n content: <StateEditor state={state} />,\n },\n ]}\n actions={[{ icon: <X />, onClick: onClose, label: 'Close' }]}\n />\n )\n}\n","import {\n Button,\n Checkbox,\n cn,\n Input,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@motiadev/ui'\nimport { RefreshCw, Search, Trash, X } from 'lucide-react'\nimport { useMemo, useState } from 'react'\nimport { useGetStateItems } from '../hooks/states-hooks'\nimport { useStatesStore } from '../stores/use-states-store'\nimport type { StateItem } from '../types/state'\nimport { StateSidebar } from './state-sidebar'\n\nexport const StatesPage = () => {\n const selectedStateId = useStatesStore((state) => state.selectedStateId)\n const selectStateId = useStatesStore((state) => state.selectStateId)\n const { items, deleteItems, refetch } = useGetStateItems()\n const [search, setSearch] = useState('')\n const filteredItems = useMemo(() => {\n return items.filter((item) => {\n return (\n item.groupId.toLowerCase().includes(search.toLowerCase()) ||\n item.key.toLowerCase().includes(search.toLowerCase())\n )\n })\n }, [items, search])\n const selectedItem = useMemo(\n () => (selectedStateId ? filteredItems.find((item) => `${item.groupId}:${item.key}` === selectedStateId) : null),\n [filteredItems, selectedStateId],\n )\n\n const [checkedItems, setCheckedItems] = useState<Set<string>>(new Set())\n const handleRowClick = (item: StateItem) => selectStateId(`${item.groupId}:${item.key}`)\n const onClose = () => selectStateId(undefined)\n const deleteStates = () => {\n deleteItems(Array.from(checkedItems))\n setCheckedItems(new Set())\n }\n\n const handleCheckboxChange = (item: StateItem) => {\n const isChecked = checkedItems.has(`${item.groupId}:${item.key}`)\n\n setCheckedItems((prev) => {\n const newSet = new Set(prev)\n if (isChecked) {\n newSet.delete(`${item.groupId}:${item.key}`)\n } else {\n newSet.add(`${item.groupId}:${item.key}`)\n }\n return newSet\n })\n }\n\n const toggleSelectAll = (checked: boolean) => {\n setCheckedItems((prev) => {\n const newSet = new Set(prev)\n\n if (checked) {\n filteredItems.forEach((item) => {\n newSet.add(`${item.groupId}:${item.key}`)\n })\n } else {\n filteredItems.forEach((item) => {\n newSet.delete(`${item.groupId}:${item.key}`)\n })\n }\n return newSet\n })\n }\n\n return (\n <>\n {selectedItem && <StateSidebar state={selectedItem} onClose={onClose} />}\n <div className=\"grid grid-rows-[auto_1fr] h-full\" data-testid=\"states-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 Group ID or Key\"\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\" className=\"h-[34px]\" disabled={checkedItems.size === 0} onClick={deleteStates}>\n <Trash /> Delete\n </Button>\n <Button variant=\"default\" className=\"h-[34px]\" onClick={refetch}>\n <RefreshCw className=\"w-4 h-4 text-muted-foreground\" />\n </Button>\n </div>\n\n <Table>\n <TableHeader className=\"sticky top-0 bg-background/20 backdrop-blur-sm\">\n <TableRow>\n <TableHead>\n <Checkbox onClick={(evt) => evt.stopPropagation()} onCheckedChange={toggleSelectAll} />\n </TableHead>\n <TableHead className=\"rounded-0\">Group ID</TableHead>\n <TableHead>Key</TableHead>\n <TableHead>Type</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {filteredItems.map((item) => (\n <TableRow\n data-testid={`item-${item}`}\n key={`${item.groupId}:${item.key}`}\n onClick={() => handleRowClick(item)}\n className={cn(\n 'font-mono font-semibold cursor-pointer border-0',\n selectedItem === item\n ? 'bg-muted-foreground/10 hover:bg-muted-foreground/20'\n : 'hover:bg-muted-foreground/10',\n )}\n >\n <TableCell onClick={(evt) => evt.stopPropagation()}>\n <Checkbox\n checked={checkedItems.has(`${item.groupId}:${item.key}`)}\n onClick={() => handleCheckboxChange(item)}\n />\n </TableCell>\n <TableCell className=\"hover:bg-transparent\">{item.groupId}</TableCell>\n <TableCell className=\"hover:bg-transparent\">{item.key}</TableCell>\n <TableCell className=\"hover:bg-transparent\">{item.type}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n </>\n )\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@motiadev/plugin-states",
3
- "version": "0.14.0-beta.165-592231",
3
+ "version": "0.14.0-beta.165-076789",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -20,14 +20,14 @@
20
20
  "zustand": "^5.0.8"
21
21
  },
22
22
  "peerDependencies": {
23
- "@motiadev/core": "0.14.0-beta.165-592231",
24
- "@motiadev/ui": "0.14.0-beta.165-592231"
23
+ "@motiadev/core": "0.14.0-beta.165-076789",
24
+ "@motiadev/ui": "0.14.0-beta.165-076789"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@bosh-code/tsdown-plugin-inject-css": "^2.0.0",
28
+ "@bosh-code/tsdown-plugin-tailwindcss": "^1.0.1",
28
29
  "@rollup/plugin-babel": "^6.1.0",
29
30
  "@tailwindcss/postcss": "^4.1.17",
30
- "rollup-plugin-postcss": "^4.0.2",
31
31
  "@types/node": "^24.10.1",
32
32
  "@types/react": "^19.2.7",
33
33
  "babel-plugin-react-compiler": "^1.0.0",