@pstdio/ui 0.18.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/dist/chat-ui.js +941 -899
  2. package/dist/chat-ui.js.map +1 -1
  3. package/dist/components/chat-ui/components/chat-message-list-items.d.ts +17 -0
  4. package/dist/components/chat-ui/components/message-types.d.ts +1 -0
  5. package/dist/components/chat-ui/components/timeline.d.ts +2 -0
  6. package/dist/components/chat-ui/tool-rendering/default-renderers.d.ts +1 -0
  7. package/dist/components/chat-ui/tool-rendering/shared.d.ts +3 -2
  8. package/dist/components/chat-ui/tool-rendering/standard-renderers.d.ts +1 -0
  9. package/dist/components/data-table/data-table-skeleton.d.ts +13 -0
  10. package/dist/components/data-table/index.d.ts +2 -0
  11. package/dist/components/overlays/dialog-accept-shortcut.d.ts +12 -0
  12. package/dist/components/overlays/index.d.ts +1 -0
  13. package/dist/components/param-editor/index.d.ts +3 -1
  14. package/dist/components/param-editor/inputs/selection-input.d.ts +5 -0
  15. package/dist/components/param-editor/inputs/selection-menu.d.ts +6 -0
  16. package/dist/components/param-editor/param-editor-row.d.ts +17 -0
  17. package/dist/components/param-editor/param-editor.types.d.ts +18 -0
  18. package/dist/components/primitives/glyph-icon.d.ts +16 -0
  19. package/dist/components/primitives/icon-color-picker.d.ts +3 -13
  20. package/dist/components/primitives/icon-options.d.ts +301 -0
  21. package/dist/components/primitives/index.d.ts +10 -3
  22. package/dist/components/primitives/segmented-control.d.ts +20 -0
  23. package/dist/components/primitives/tag-swatch.d.ts +10 -0
  24. package/dist/components/tag-editor/index.d.ts +4 -0
  25. package/dist/components/tag-editor/tag-editor-heading.d.ts +11 -0
  26. package/dist/components/tag-editor/tag-editor-row.d.ts +1 -1
  27. package/dist/components/tag-editor/tag-editor-save-bar.d.ts +13 -0
  28. package/dist/components/tag-editor/tag-editor.types.d.ts +11 -11
  29. package/dist/components/tag-editor/tag-settings-panel.d.ts +3 -1
  30. package/dist/data-table.js +564 -522
  31. package/dist/data-table.js.map +1 -1
  32. package/dist/dialog-accept-shortcut-DAEBsoWW.js +7 -0
  33. package/dist/dialog-accept-shortcut-DAEBsoWW.js.map +1 -0
  34. package/dist/diff.js +2 -2
  35. package/dist/font/css/prompt-studio-icons.css +36 -6
  36. package/dist/font/prompt-studio-icons.eot +0 -0
  37. package/dist/font/prompt-studio-icons.svg +1 -1
  38. package/dist/font/prompt-studio-icons.ttf +0 -0
  39. package/dist/font/prompt-studio-icons.woff +0 -0
  40. package/dist/font/prompt-studio-icons.woff2 +0 -0
  41. package/dist/index.d.ts +2 -2
  42. package/dist/index.js +1978 -1712
  43. package/dist/index.js.map +1 -1
  44. package/dist/{kanban-renderer-toolbar-Db1mIWWd.js → kanban-renderer-toolbar-Bcj_N1qr.js} +66 -66
  45. package/dist/kanban-renderer-toolbar-Bcj_N1qr.js.map +1 -0
  46. package/dist/kanban-renderer.js +138 -135
  47. package/dist/kanban-renderer.js.map +1 -1
  48. package/dist/list-row-BtoVJpFs.js +821 -0
  49. package/dist/list-row-BtoVJpFs.js.map +1 -0
  50. package/dist/param-editor-XRjSu6MT.js +161 -0
  51. package/dist/param-editor-XRjSu6MT.js.map +1 -0
  52. package/dist/param-editor-field-B9lEPq8c.js +3028 -0
  53. package/dist/param-editor-field-B9lEPq8c.js.map +1 -0
  54. package/dist/style.css +1 -1
  55. package/dist/theme/primitives/sizes.d.ts +59 -0
  56. package/dist/theme/recipes/segmented-control.d.ts +22 -0
  57. package/dist/theme/recipes/switch.d.ts +1 -0
  58. package/dist/theme/recipes/tabs.d.ts +11 -0
  59. package/dist/{theme-poQlUgt0.js → theme-7PDdD9OD.js} +200 -120
  60. package/dist/theme-7PDdD9OD.js.map +1 -0
  61. package/dist/theme.js +1 -1
  62. package/dist/{tree-list-BAja2eXU.js → tree-list-B2L0cTj2.js} +2 -2
  63. package/dist/{tree-list-BAja2eXU.js.map → tree-list-B2L0cTj2.js.map} +1 -1
  64. package/package.json +2 -2
  65. package/dist/kanban-renderer-toolbar-Db1mIWWd.js.map +0 -1
  66. package/dist/list-row-BYWwcbGK.js +0 -823
  67. package/dist/list-row-BYWwcbGK.js.map +0 -1
  68. package/dist/param-editor-BCZOw5Gt.js +0 -140
  69. package/dist/param-editor-BCZOw5Gt.js.map +0 -1
  70. package/dist/param-editor-field-ZzZwgjZ_.js +0 -2094
  71. package/dist/param-editor-field-ZzZwgjZ_.js.map +0 -1
  72. package/dist/theme-poQlUgt0.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"param-editor-field-B9lEPq8c.js","sources":["../src/components/overlays/attachment-chip.tsx","../src/components/param-editor/param-editor-label.tsx","../src/components/param-editor/param-editor-control-item.tsx","../src/components/primitives/chip.tsx","../public/font/css/prompt-studio-icons.css?raw","../src/components/primitives/glyph-icon.tsx","../src/components/primitives/icon-options.tsx","../src/components/primitives/session-indicator.tsx","../src/components/primitives/switch.tsx","../src/components/primitives/workspace-badge.tsx","../src/components/param-editor/inputs/selection-menu.tsx","../src/components/param-editor/inputs/action-input.tsx","../src/components/param-editor/inputs/anchor-grid.ts","../src/components/param-editor/param-editor-read-only-value.tsx","../src/components/param-editor/inputs/anchor-grid-input.tsx","../src/components/param-editor/inputs/boolean-input.tsx","../src/components/param-editor/inputs/color-input.tsx","../src/components/param-editor/inputs/date-input.tsx","../src/components/param-editor/inputs/file-upload-value.ts","../src/components/param-editor/inputs/file-upload-input.tsx","../src/components/param-editor/inputs/horizontal-text-input.tsx","../src/components/param-editor/inputs/markdown-input.tsx","../src/components/primitives/number-input.tsx","../src/components/primitives/slider.tsx","../src/components/param-editor/inputs/number-input.tsx","../src/components/param-editor/inputs/numeric-value.ts","../src/components/param-editor/inputs/range-value.ts","../src/components/param-editor/inputs/slider-marks.tsx","../src/components/param-editor/inputs/range-input.tsx","../src/components/param-editor/inputs/resource-input-chips.tsx","../src/components/param-editor/inputs/resource-input.tsx","../src/components/param-editor/inputs/segmented-input.tsx","../src/components/param-editor/inputs/selection-input.tsx","../src/components/param-editor/inputs/text-input.tsx","../src/components/param-editor/param-editor-inline-group.tsx","../src/components/param-editor/inputs/vector-value.ts","../src/components/param-editor/inputs/vector-input.tsx","../src/components/param-editor/resolve-param-value.ts","../src/components/param-editor/param-editor-advanced-field.tsx","../src/components/param-editor/param-editor-presentation.ts","../src/components/param-editor/param-editor-read-only-field.tsx","../src/components/param-editor/param-editor-field.tsx"],"sourcesContent":["import { Badge, chakra, IconButton, Image, Popover, Text } from \"@chakra-ui/react\";\nimport { X } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\n\nexport interface AttachmentChipProps {\n file: File;\n /** Accessible label for the remove control; the caller owns translation. */\n removeLabel: string;\n disabled?: boolean;\n onRemove: () => void;\n}\n\nconst isImage = (file: File) => file.type.startsWith(\"image/\");\n\nconst formatSize = (bytes: number) => {\n if (bytes < 1024) return `${bytes.toString()} B`;\n if (bytes < 1024 * 1024) return `${Math.round(bytes / 1024).toString()} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n};\n\n/**\n * A file queued for upload, before the resource it belongs to exists. Removal\n * lives on the chip because there is no other surface between picking a file\n * and submitting where a mistaken attachment can be taken back.\n */\nexport const AttachmentChip = (props: AttachmentChipProps) => {\n const { file, removeLabel, disabled, onRemove } = props;\n const [previewUrl, setPreviewUrl] = useState<string | null>(null);\n\n // Object URLs are only needed for image previews; revoke on unmount/file swap\n // so we don't leak blobs while the dialog is open.\n useEffect(() => {\n if (!isImage(file)) return;\n const url = URL.createObjectURL(file);\n setPreviewUrl(url);\n return () => URL.revokeObjectURL(url);\n }, [file]);\n\n const name = (\n <Text as=\"span\" textStyle=\"label/XS/medium\" lineClamp={1} maxW=\"180px\">\n {file.name}\n </Text>\n );\n\n return (\n <Badge variant=\"chip\" gap=\"2xs\" pr=\"2xs\">\n {previewUrl ? (\n <Popover.Root positioning={{ placement: \"top\" }}>\n <Popover.Trigger asChild>\n <chakra.button type=\"button\" cursor=\"pointer\" minW=\"0\" display=\"inline-flex\">\n {name}\n </chakra.button>\n </Popover.Trigger>\n <Popover.Positioner>\n <Popover.Content w=\"auto\" p=\"2xs\" bg=\"bg\">\n <Image src={previewUrl} alt={file.name} maxW=\"240px\" maxH=\"240px\" borderRadius=\"sm\" />\n </Popover.Content>\n </Popover.Positioner>\n </Popover.Root>\n ) : (\n name\n )}\n <Text as=\"span\" textStyle=\"label/XS/regular\" color=\"fg.subtle\">\n {formatSize(file.size)}\n </Text>\n <IconButton size=\"2xs\" variant=\"ghost\" aria-label={removeLabel} disabled={disabled} onClick={onRemove}>\n <X size={12} />\n </IconButton>\n </Badge>\n );\n};\n","import { HStack, Icon, Text } from \"@chakra-ui/react\";\nimport { CircleHelp } from \"lucide-react\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\n\ninterface ParamEditorLabelProps {\n name: string;\n description?: string;\n compact?: boolean;\n}\n\nexport const ParamEditorLabel = (props: ParamEditorLabelProps) => {\n const { name, description, compact = false } = props;\n\n return (\n <HStack gap=\"1\" alignItems=\"center\" minW=\"0\">\n <Text\n textStyle={compact ? \"label/XS/medium\" : \"label/S/medium\"}\n color=\"fg.muted\"\n letterSpacing={compact ? \"0.08em\" : undefined}\n textTransform={compact ? \"uppercase\" : undefined}\n truncate\n >\n {name}\n </Text>\n {description ? (\n <Tooltip content={description}>\n <Icon as={CircleHelp} boxSize=\"12px\" color=\"fg.muted\" opacity={0.6} cursor=\"help\" flexShrink={0} />\n </Tooltip>\n ) : null}\n </HStack>\n );\n};\n","import { Box, Flex } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\nimport { ParamEditorFieldLabel } from \"./param-editor-field-label\";\n\ntype ControlItemOrientation = \"auto\" | \"inline\" | \"stacked\";\n\ninterface ParamEditorControlItemProps {\n name?: string;\n description?: string;\n hideLabel?: boolean;\n fullWidth?: boolean;\n /** `auto` renders inline when compact and stacked when full-width. */\n orientation?: ControlItemOrientation;\n /** Rendered on the label row, right-aligned (e.g. an editable value readout). */\n labelTrailing?: ReactNode;\n children: ReactNode;\n}\n\n// Shared row scaffold for control layouts: a labelled control that renders either\n// inline (label left / control right) or stacked (label above the control).\nexport const ParamEditorControlItem = (props: ParamEditorControlItemProps) => {\n const {\n name,\n description,\n hideLabel = false,\n fullWidth = false,\n orientation = \"auto\",\n labelTrailing,\n children,\n } = props;\n\n const label = hideLabel || !name ? null : <ParamEditorFieldLabel name={name} description={description} />;\n const resolved = orientation === \"auto\" ? (fullWidth ? \"stacked\" : \"inline\") : orientation;\n\n if (resolved === \"stacked\") {\n const header = label || labelTrailing;\n return (\n <Box minW=\"0\">\n {header ? (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" gap=\"xs\" mb=\"xs\" minW=\"0\">\n {label}\n {labelTrailing}\n </Flex>\n ) : null}\n {children}\n </Box>\n );\n }\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\" minW=\"0\">\n {label}\n <Flex alignItems=\"center\" gap=\"xs\" minW=\"0\">\n {labelTrailing}\n {children}\n </Flex>\n </Flex>\n );\n};\n","import type { BadgeProps } from \"@chakra-ui/react\";\nimport { Badge } from \"@chakra-ui/react\";\n\nexport interface ChipProps extends Omit<BadgeProps, \"size\" | \"variant\"> {}\n\nexport const Chip = (props: ChipProps) => <Badge size=\"sm\" variant=\"chip\" {...props} />;\n","export default \"@font-face {\\n font-family: \\\"prompt-studio-icons\\\";\\n src: url(\\\"$fonts/prompt-studio-icons.eot?959122fb\\\");\\n src:\\n url(\\\"$fonts/prompt-studio-icons.eot?959122fb#iefix\\\") format(\\\"embedded-opentype\\\"),\\n url(\\\"$fonts/prompt-studio-icons.woff2?959122fb\\\") format(\\\"woff2\\\"),\\n url(\\\"$fonts/prompt-studio-icons.woff?959122fb\\\") format(\\\"woff\\\"),\\n url(\\\"$fonts/prompt-studio-icons.ttf?959122fb\\\") format(\\\"truetype\\\"),\\n url(\\\"$fonts/prompt-studio-icons.svg?959122fb#prompt-studio-icons\\\") format(\\\"svg\\\");\\n font-weight: normal;\\n font-style: normal;\\n font-display: block;\\n}\\n\\n[class^=\\\"icon-\\\"]::before,\\n[class*=\\\" icon-\\\"]::before {\\n font-family: \\\"prompt-studio-icons\\\", sans-serif;\\n font-style: normal;\\n font-weight: normal;\\n speak: never;\\n display: inline-block;\\n text-decoration: inherit;\\n width: 1em;\\n margin-right: 0.2em;\\n text-align: center;\\n font-variant: normal;\\n text-transform: none;\\n line-height: 1em;\\n margin-left: 0.2em;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n\\n.icon-cloud-add::before {\\n content: \\\"\\\\e800\\\";\\n}\\n.icon-credit-usage-50::before {\\n content: \\\"\\\\e801\\\";\\n}\\n.icon-history::before {\\n content: \\\"\\\\e802\\\";\\n}\\n.icon-data-string::before {\\n content: \\\"\\\\e803\\\";\\n}\\n.icon-data-object::before {\\n content: \\\"\\\\e804\\\";\\n}\\n.icon-data-integer::before {\\n content: \\\"\\\\e805\\\";\\n}\\n.icon-data-double::before {\\n content: \\\"\\\\e806\\\";\\n}\\n.icon-add::before {\\n content: \\\"\\\\e807\\\";\\n}\\n.icon-add-circle::before {\\n content: \\\"\\\\e808\\\";\\n}\\n.icon-data-boolean::before {\\n content: \\\"\\\\e809\\\";\\n}\\n.icon-add-square::before {\\n content: \\\"\\\\e80a\\\";\\n}\\n.icon-data-array::before {\\n content: \\\"\\\\e80b\\\";\\n}\\n.icon-status-backlog::before {\\n content: \\\"\\\\e80c\\\";\\n}\\n.icon-metrics::before {\\n content: \\\"\\\\e80d\\\";\\n}\\n.icon-pie-donut::before {\\n content: \\\"\\\\e80e\\\";\\n}\\n.icon-area-plot::before {\\n content: \\\"\\\\e80f\\\";\\n}\\n.icon-treemap::before {\\n content: \\\"\\\\e810\\\";\\n}\\n.icon-align-bottom::before {\\n content: \\\"\\\\e811\\\";\\n}\\n.icon-align-horizontally::before {\\n content: \\\"\\\\e812\\\";\\n}\\n.icon-align-left::before {\\n content: \\\"\\\\e813\\\";\\n}\\n.icon-align-right::before {\\n content: \\\"\\\\e814\\\";\\n}\\n.icon-align-vertically::before {\\n content: \\\"\\\\e815\\\";\\n}\\n.icon-radar-column-chart::before {\\n content: \\\"\\\\e816\\\";\\n}\\n.icon-pie-full::before {\\n content: \\\"\\\\e817\\\";\\n}\\n.icon-archive-1::before {\\n content: \\\"\\\\e818\\\";\\n}\\n.icon-archive-2::before {\\n content: \\\"\\\\e819\\\";\\n}\\n.icon-archive-add::before {\\n content: \\\"\\\\e81a\\\";\\n}\\n.icon-ct::before {\\n content: \\\"\\\\e81b\\\";\\n}\\n.icon-archive-minus::before {\\n content: \\\"\\\\e81c\\\";\\n}\\n.icon-archive-slash::before {\\n content: \\\"\\\\e81d\\\";\\n}\\n.icon-archive-tick::before {\\n content: \\\"\\\\e81e\\\";\\n}\\n.icon-min::before {\\n content: \\\"\\\\e81f\\\";\\n}\\n.icon-ctd::before {\\n content: \\\"\\\\e820\\\";\\n}\\n.icon-std::before {\\n content: \\\"\\\\e821\\\";\\n}\\n.icon-var::before {\\n content: \\\"\\\\e822\\\";\\n}\\n.icon-max::before {\\n content: \\\"\\\\e823\\\";\\n}\\n.icon-sum::before {\\n content: \\\"\\\\e824\\\";\\n}\\n.icon-status-todo::before {\\n content: \\\"\\\\e825\\\";\\n}\\n.icon-status-progress::before {\\n content: \\\"\\\\e826\\\";\\n}\\n.icon-status-review::before {\\n content: \\\"\\\\e827\\\";\\n}\\n.icon-status-done::before {\\n content: \\\"\\\\e828\\\";\\n}\\n.icon-status-canceled::before {\\n content: \\\"\\\\e829\\\";\\n}\\n.icon-level-low::before {\\n content: \\\"\\\\e82a\\\";\\n}\\n.icon-arrow-down::before {\\n content: \\\"\\\\e82b\\\";\\n}\\n.icon-arrow-down-1::before {\\n content: \\\"\\\\e82c\\\";\\n}\\n.icon-level-mid::before {\\n content: \\\"\\\\e82d\\\";\\n}\\n.icon-arrow-left::before {\\n content: \\\"\\\\e82e\\\";\\n}\\n.icon-level-high::before {\\n content: \\\"\\\\e82f\\\";\\n}\\n.icon-arrow-left-2::before {\\n content: \\\"\\\\e830\\\";\\n}\\n.icon-level-xhigh::before {\\n content: \\\"\\\\e831\\\";\\n}\\n.icon-arrow-right::before {\\n content: \\\"\\\\e832\\\";\\n}\\n.icon-arrow-right-1::before {\\n content: \\\"\\\\e833\\\";\\n}\\n.icon-arrow-right-3::before {\\n content: \\\"\\\\e835\\\";\\n}\\n.icon-arrow-right-4::before {\\n content: \\\"\\\\e836\\\";\\n}\\n.icon-arrow-square-down::before {\\n content: \\\"\\\\e838\\\";\\n}\\n.icon-arrow-square-left::before {\\n content: \\\"\\\\e839\\\";\\n}\\n.icon-arrow-square-up::before {\\n content: \\\"\\\\e83a\\\";\\n}\\n.icon-arrow-up-2::before {\\n content: \\\"\\\\e83f\\\";\\n}\\n.icon-arrow-up-3::before {\\n content: \\\"\\\\e840\\\";\\n}\\n.icon-book::before {\\n content: \\\"\\\\e868\\\";\\n}\\n.icon-book-1::before {\\n content: \\\"\\\\e869\\\";\\n}\\n.icon-box::before {\\n content: \\\"\\\\e86e\\\";\\n}\\n.icon-pointing-arrow::before {\\n content: \\\"\\\\e87d\\\";\\n}\\n.icon-data-structure::before {\\n content: \\\"\\\\e87e\\\";\\n}\\n.icon-brush-4::before {\\n content: \\\"\\\\e87f\\\";\\n}\\n.icon-folder::before {\\n content: \\\"\\\\e880\\\";\\n}\\n.icon-import-2::before {\\n content: \\\"\\\\e881\\\";\\n}\\n.icon-refresh::before {\\n content: \\\"\\\\e882\\\";\\n}\\n.icon-message-text-1::before {\\n content: \\\"\\\\e883\\\";\\n}\\n.icon-messages-2::before {\\n content: \\\"\\\\e884\\\";\\n}\\n.icon-global::before {\\n content: \\\"\\\\e885\\\";\\n}\\n.icon-briefcase::before {\\n content: \\\"\\\\e886\\\";\\n}\\n.icon-row-vertical::before {\\n content: \\\"\\\\e887\\\";\\n}\\n.icon-format-square::before {\\n content: \\\"\\\\e888\\\";\\n}\\n.icon-document-copy::before {\\n content: \\\"\\\\e889\\\";\\n}\\n.icon-document-forward::before {\\n content: \\\"\\\\e88a\\\";\\n}\\n.icon-tick-circle-1::before {\\n content: \\\"\\\\e88b\\\";\\n}\\n.icon-data-timestamp::before {\\n content: \\\"\\\\e88c\\\";\\n}\\n.icon-more-2::before {\\n content: \\\"\\\\e88d\\\";\\n}\\n.icon-notification::before {\\n content: \\\"\\\\e88e\\\";\\n}\\n.icon-search-normal-1::before {\\n content: \\\"\\\\e890\\\";\\n}\\n.icon-home-1::before {\\n content: \\\"\\\\e891\\\";\\n}\\n.icon-brush-1::before {\\n content: \\\"\\\\e892\\\";\\n}\\n.icon-paperclip-2::before {\\n content: \\\"\\\\e893\\\";\\n}\\n.icon-grid-4::before {\\n content: \\\"\\\\e894\\\";\\n}\\n.icon-mouse-circle::before {\\n content: \\\"\\\\e895\\\";\\n}\\n.icon-message-question::before {\\n content: \\\"\\\\e896\\\";\\n}\\n.icon-saving::before {\\n content: \\\"\\\\e898\\\";\\n}\\n.icon-chevron-double::before {\\n content: \\\"\\\\e899\\\";\\n}\\n.icon-close::before {\\n content: \\\"\\\\e89a\\\";\\n}\\n.icon-more-info::before {\\n content: \\\"\\\\e89b\\\";\\n}\\n.icon-arrow-up::before {\\n content: \\\"\\\\e89c\\\";\\n}\\n.icon-reorder::before {\\n content: \\\"\\\\e89d\\\";\\n}\\n.icon-refresh-1::before {\\n content: \\\"\\\\e89e\\\";\\n}\\n.icon-text-variable::before {\\n content: \\\"\\\\e89f\\\";\\n}\\n.icon-header-horizontal::before {\\n content: \\\"\\\\e8a0\\\";\\n}\\n.icon-edit-1::before {\\n content: \\\"\\\\e8a1\\\";\\n}\\n.icon-credit-usage-0::before {\\n content: \\\"\\\\e8a2\\\";\\n}\\n.icon-credit-usage-25::before {\\n content: \\\"\\\\e8a3\\\";\\n}\\n.icon-credit-usage-75::before {\\n content: \\\"\\\\e8a4\\\";\\n}\\n.icon-card::before {\\n content: \\\"\\\\e8a5\\\";\\n}\\n.icon-credit-usage-100::before {\\n content: \\\"\\\\e8a6\\\";\\n}\\n.icon-coding-language::before {\\n content: \\\"\\\\e8ab\\\";\\n}\\n.icon-table::before {\\n content: \\\"\\\\e8ad\\\";\\n}\\n.icon-check::before {\\n content: \\\"\\\\e8ae\\\";\\n}\\n.icon-logo-google::before {\\n content: \\\"\\\\e8af\\\";\\n}\\n.icon-data-date::before {\\n content: \\\"\\\\e8b0\\\";\\n}\\n.icon-llms::before {\\n content: \\\"\\\\e8b1\\\";\\n}\\n.icon-logo-openai::before {\\n content: \\\"\\\\e8b2\\\";\\n}\\n.icon-logo-anthropic::before {\\n content: \\\"\\\\e8b3\\\";\\n}\\n.icon-logo-meta::before {\\n content: \\\"\\\\e8b4\\\";\\n}\\n.icon-data-variant::before {\\n content: \\\"\\\\e8b5\\\";\\n}\\n.icon-chart-1::before {\\n content: \\\"\\\\e8b6\\\";\\n}\\n.icon-schema::before {\\n content: \\\"\\\\e8b7\\\";\\n}\\n.icon-ascending::before {\\n content: \\\"\\\\e8b8\\\";\\n}\\n.icon-bar-chart-100stacked::before {\\n content: \\\"\\\\e8ba\\\";\\n}\\n.icon-results::before {\\n content: \\\"\\\\e8bc\\\";\\n}\\n.icon-bar-chart::before {\\n content: \\\"\\\\e8be\\\";\\n}\\n.icon-descending::before {\\n content: \\\"\\\\e8bf\\\";\\n}\\n.icon-bar-chart-vertical::before {\\n content: \\\"\\\\e8c0\\\";\\n}\\n.icon-step-before-points::before {\\n content: \\\"\\\\e8c4\\\";\\n}\\n.icon-step-after-points::before {\\n content: \\\"\\\\e8c6\\\";\\n}\\n.icon-line-rounded::before {\\n content: \\\"\\\\e8c9\\\";\\n}\\n.icon-line-sharp::before {\\n content: \\\"\\\\e8cb\\\";\\n}\\n.icon-bar-chart-simple::before {\\n content: \\\"\\\\e8cc\\\";\\n}\\n.icon-pie-chart::before {\\n content: \\\"\\\\e8cd\\\";\\n}\\n.icon-bar-chart-stacked::before {\\n content: \\\"\\\\e8ce\\\";\\n}\\n.icon-map::before {\\n content: \\\"\\\\e8cf\\\";\\n}\\n.icon-radar-bar-chart::before {\\n content: \\\"\\\\e8d0\\\";\\n}\\n.icon-radar-chart::before {\\n content: \\\"\\\\e8d1\\\";\\n}\\n.icon-metric::before {\\n content: \\\"\\\\e8d2\\\";\\n}\\n.icon-area-plot-1::before {\\n content: \\\"\\\\e8d3\\\";\\n}\\n.icon-avg::before {\\n content: \\\"\\\\e8d4\\\";\\n}\\n.icon-area-plot-stacked100::before {\\n content: \\\"\\\\e8d5\\\";\\n}\\n.icon-scatter-bubbles::before {\\n content: \\\"\\\\e8d6\\\";\\n}\\n.icon-code::before {\\n content: \\\"\\\\e8d7\\\";\\n}\\n.icon-code-1::before {\\n content: \\\"\\\\e8d8\\\";\\n}\\n.icon-code-circle::before {\\n content: \\\"\\\\e8d9\\\";\\n}\\n.icon-scatter-plot::before {\\n content: \\\"\\\\e8db\\\";\\n}\\n.icon-scatter-dots::before {\\n content: \\\"\\\\e8dc\\\";\\n}\\n.icon-med::before {\\n content: \\\"\\\\e8dd\\\";\\n}\\n.icon-command-square::before {\\n content: \\\"\\\\e8e1\\\";\\n}\\n.icon-component::before {\\n content: \\\"\\\\e8e2\\\";\\n}\\n.icon-copy::before {\\n content: \\\"\\\\e8e9\\\";\\n}\\n.icon-danger::before {\\n content: \\\"\\\\e8f5\\\";\\n}\\n.icon-visualization::before {\\n content: \\\"\\\\e8fc\\\";\\n}\\n.icon-document-1::before {\\n content: \\\"\\\\e911\\\";\\n}\\n.icon-document-code::before {\\n content: \\\"\\\\e913\\\";\\n}\\n.icon-document-download::before {\\n content: \\\"\\\\e916\\\";\\n}\\n.icon-document-text-1::before {\\n content: \\\"\\\\e91f\\\";\\n}\\n.icon-document-upload::before {\\n content: \\\"\\\\e920\\\";\\n}\\n.icon-edit::before {\\n content: \\\"\\\\e927\\\";\\n}\\n.icon-edit-2::before {\\n content: \\\"\\\\e928\\\";\\n}\\n.icon-eraser-1::before {\\n content: \\\"\\\\e939\\\";\\n}\\n.icon-export-1::before {\\n content: \\\"\\\\e93b\\\";\\n}\\n.icon-export-3::before {\\n content: \\\"\\\\e93d\\\";\\n}\\n.icon-eye::before {\\n content: \\\"\\\\e93f\\\";\\n}\\n.icon-eye-slash::before {\\n content: \\\"\\\\e940\\\";\\n}\\n.icon-flash-1::before {\\n content: \\\"\\\\e950\\\";\\n}\\n.icon-folder-2::before {\\n content: \\\"\\\\e955\\\";\\n}\\n.icon-glass::before {\\n content: \\\"\\\\e97c\\\";\\n}\\n.icon-home-2::before {\\n content: \\\"\\\\e9aa\\\";\\n}\\n.icon-import-1::before {\\n content: \\\"\\\\e9b5\\\";\\n}\\n.icon-info-circle::before {\\n content: \\\"\\\\e9b7\\\";\\n}\\n.icon-key::before {\\n content: \\\"\\\\e9bc\\\";\\n}\\n.icon-data::before {\\n content: \\\"\\\\e9c7\\\";\\n}\\n.icon-link-2::before {\\n content: \\\"\\\\e9d1\\\";\\n}\\n.icon-location::before {\\n content: \\\"\\\\e9d5\\\";\\n}\\n.icon-location-slash::before {\\n content: \\\"\\\\e9d9\\\";\\n}\\n.icon-login-1::before {\\n content: \\\"\\\\e9e0\\\";\\n}\\n.icon-logout-1::before {\\n content: \\\"\\\\e9e2\\\";\\n}\\n.icon-magicpen::before {\\n content: \\\"\\\\e9e4\\\";\\n}\\n.icon-maximize-2::before {\\n content: \\\"\\\\e9f0\\\";\\n}\\n.icon-maximize-4::before {\\n content: \\\"\\\\e9f2\\\";\\n}\\n.icon-maximize-21::before {\\n content: \\\"\\\\e9f3\\\";\\n}\\n.icon-menu-1::before {\\n content: \\\"\\\\e9f8\\\";\\n}\\n.icon-message::before {\\n content: \\\"\\\\e9fa\\\";\\n}\\n.icon-messages::before {\\n content: \\\"\\\\ea06\\\";\\n}\\n.icon-microphone-2::before {\\n content: \\\"\\\\ea11\\\";\\n}\\n.icon-minus-cirlce::before {\\n content: \\\"\\\\ea18\\\";\\n}\\n.icon-moon::before {\\n content: \\\"\\\\ea2e\\\";\\n}\\n.icon-more::before {\\n content: \\\"\\\\ea2f\\\";\\n}\\n.icon-note::before {\\n content: \\\"\\\\ea44\\\";\\n}\\n.icon-paperclip::before {\\n content: \\\"\\\\ea56\\\";\\n}\\n.icon-play::before {\\n content: \\\"\\\\ea6a\\\";\\n}\\n.icon-presention-chart::before {\\n content: \\\"\\\\ea6f\\\";\\n}\\n.icon-redo::before {\\n content: \\\"\\\\ea9c\\\";\\n}\\n.icon-rotate-left::before {\\n content: \\\"\\\\eaa8\\\";\\n}\\n.icon-rotate-right::before {\\n content: \\\"\\\\eaaa\\\";\\n}\\n.icon-search-zoom-in-1::before {\\n content: \\\"\\\\eac8\\\";\\n}\\n.icon-search-zoom-out::before {\\n content: \\\"\\\\eac9\\\";\\n}\\n.icon-send-1::before {\\n content: \\\"\\\\ead1\\\";\\n}\\n.icon-setting-2::before {\\n content: \\\"\\\\ead6\\\";\\n}\\n.icon-setting-4::before {\\n content: \\\"\\\\ead8\\\";\\n}\\n.icon-setting-5::before {\\n content: \\\"\\\\ead9\\\";\\n}\\n.icon-shuffle::before {\\n content: \\\"\\\\eae9\\\";\\n}\\n.icon-sidebar-bottom::before {\\n content: \\\"\\\\eaea\\\";\\n}\\n.icon-sidebar-left::before {\\n content: \\\"\\\\eaeb\\\";\\n}\\n.icon-sidebar-right::before {\\n content: \\\"\\\\eaec\\\";\\n}\\n.icon-sidebar-top::before {\\n content: \\\"\\\\eaed\\\";\\n}\\n.icon-slash::before {\\n content: \\\"\\\\eaf3\\\";\\n}\\n.icon-smallcaps::before {\\n content: \\\"\\\\eaf9\\\";\\n}\\n.icon-sms::before {\\n content: \\\"\\\\eafd\\\";\\n}\\n.icon-star::before {\\n content: \\\"\\\\eb07\\\";\\n}\\n.icon-stop::before {\\n content: \\\"\\\\eb0e\\\";\\n}\\n.icon-sun-1::before {\\n content: \\\"\\\\eb15\\\";\\n}\\n.icon-tag-cross::before {\\n content: \\\"\\\\eb19\\\";\\n}\\n.icon-task::before {\\n content: \\\"\\\\eb1c\\\";\\n}\\n.icon-task-square::before {\\n content: \\\"\\\\eb1d\\\";\\n}\\n.icon-teacher::before {\\n content: \\\"\\\\eb1e\\\";\\n}\\n.icon-text::before {\\n content: \\\"\\\\eb1f\\\";\\n}\\n.icon-textalign-center::before {\\n content: \\\"\\\\eb20\\\";\\n}\\n.icon-textalign-justifycenter::before {\\n content: \\\"\\\\eb21\\\";\\n}\\n.icon-textalign-left::before {\\n content: \\\"\\\\eb24\\\";\\n}\\n.icon-textalign-right::before {\\n content: \\\"\\\\eb25\\\";\\n}\\n.icon-text-block::before {\\n content: \\\"\\\\eb26\\\";\\n}\\n.icon-text-bold::before {\\n content: \\\"\\\\eb27\\\";\\n}\\n.icon-text-italic::before {\\n content: \\\"\\\\eb28\\\";\\n}\\n.icon-text-underline::before {\\n content: \\\"\\\\eb29\\\";\\n}\\n.icon-tick-circle::before {\\n content: \\\"\\\\eb2a\\\";\\n}\\n.icon-timer-1::before {\\n content: \\\"\\\\eb32\\\";\\n}\\n.icon-trash::before {\\n content: \\\"\\\\eb3c\\\";\\n}\\n.icon-undo::before {\\n content: \\\"\\\\eb47\\\";\\n}\\n.icon-user::before {\\n content: \\\"\\\\eb4a\\\";\\n}\\n.icon-video-vertical::before {\\n content: \\\"\\\\eb61\\\";\\n}\\n.icon-wallet-2::before {\\n content: \\\"\\\\eb6d\\\";\\n}\\n.icon-wifi::before {\\n content: \\\"\\\\eb7b\\\";\\n}\\n.icon-stockholm::before {\\n content: \\\"\\\\eb81\\\";\\n}\\n.icon-perplexity-ai::before {\\n content: \\\"\\\\eb82\\\";\\n}\\n\"","import { chakra } from \"@chakra-ui/react\";\nimport type { ComponentType, HTMLAttributes } from \"react\";\n// Package-relative on purpose: every host that resolves `@pstdio/ui` from source\n// would otherwise need its own `$fonts` alias.\nimport generatedGlyphStyles from \"../../../public/font/css/prompt-studio-icons.css?raw\";\nimport \"./glyph-icon.css\";\n\n// The generated stylesheet is the source of truth for glyph codepoints; reading\n// them here keeps `@pstdio/ui` from bundling its legacy @font-face formats.\nconst GLYPH_RULE = /\\.icon-([\\w-]+)::before\\s*\\{\\s*content:\\s*\"(\\\\[0-9a-f]+)\"/g;\n\nconst glyphContent = new Map(\n Array.from(generatedGlyphStyles.matchAll(GLYPH_RULE), ([, name, content]) => [name, content]),\n);\n\n// Glyphs are painted through a ::before pseudo element sized by font-size, so the\n// wrapper turns its own box into a size container. That lets the glyph track\n// whatever box the caller gives it (`boxSize` on a Chakra `Icon`, say) exactly\n// like a lucide SVG would.\n//\n// Everything is applied through the `css` prop rather than a `chakra()` base:\n// factory base styles sit in a lower cascade layer than the `chakra-icon` recipe\n// and the global reset, which silently blockified the wrapper and, with it, threw\n// away the `vertical-align` that keeps an icon on the text's centre line.\n//\n// The ::before is taken out of flow and stretched over the wrapper so its geometry\n// never depends on the wrapper's own layout mode. Within that box the font builder\n// normalises every glyph's ink to a 1024-unit box sitting 47 units above the\n// baseline of a 1000-unit em (ascent 850 / descent -150), so the ink renders larger\n// than the em and half its overhang above centre: 89.5% of the container lands it\n// on lucide's 22-of-24 optical size, and 0.209em — measured against the glyph's own\n// font size, so it follows any optical scale — drops it onto the centre line.\nconst GLYPH_OPTICAL_SIZE = 89.5;\nconst GLYPH_BASELINE_OFFSET = \"0.209em\";\n\nconst GlyphRoot = chakra(\"span\");\n\nconst glyphStyles = (content: string, fontSize: string) => ({\n position: \"relative\",\n display: \"inline-block\",\n verticalAlign: \"middle\",\n flexShrink: 0,\n boxSize: \"1em\",\n lineHeight: 1,\n containerType: \"size\",\n \"&::before\": {\n content,\n fontSize,\n position: \"absolute\",\n inset: 0,\n fontFamily: '\"prompt-studio-icons\", sans-serif',\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n lineHeight: \"100cqmin\",\n textAlign: \"center\",\n transform: `translateY(${GLYPH_BASELINE_OFFSET})`,\n },\n});\n\ntype GlyphIconProps = Omit<HTMLAttributes<HTMLSpanElement>, \"children\">;\n\nexport interface GlyphIconOptions {\n /**\n * Optical size relative to a round glyph. Every glyph is normalised to the same\n * ink box, so square marks such as the level bars need trimming to carry the\n * same visual weight as the status rings.\n */\n scale?: number;\n}\n\n/**\n * Builds a component for one `prompt-studio-icons` glyph so lucide icons and\n * font glyphs share a single component type in the icon registry.\n */\nexport const createGlyphIcon = (glyph: string, options: GlyphIconOptions = {}): ComponentType<GlyphIconProps> => {\n const styles = glyphStyles(\n `\"${glyphContent.get(glyph) ?? \"\"}\"`,\n `${(GLYPH_OPTICAL_SIZE * (options.scale ?? 1)).toFixed(1)}cqmin`,\n );\n\n const GlyphIcon = (props: GlyphIconProps) => <GlyphRoot aria-hidden {...props} css={styles} />;\n\n GlyphIcon.displayName = `GlyphIcon(${glyph})`;\n return GlyphIcon;\n};\n","import {\n Archive,\n Ban,\n Bell,\n Bookmark,\n BookOpen,\n Bot,\n Bug,\n Circle,\n Code,\n Component,\n Cpu,\n Eye,\n Feather,\n FileText,\n Flag,\n Flame,\n Folder,\n GitBranch,\n GitCommitHorizontal,\n Hash,\n Heart,\n History,\n Inbox,\n Kanban,\n Layers,\n Lightbulb,\n Link,\n ListChecks,\n MessageSquare,\n Play,\n Puzzle,\n Rocket,\n Scale,\n Settings,\n Shield,\n Sparkles,\n SquareKanban,\n Star,\n Tag,\n Target,\n Terminal,\n Ticket,\n Timer,\n Users,\n Workflow,\n Wrench,\n Zap,\n} from \"lucide-react\";\nimport type { ComponentType } from \"react\";\nimport { createGlyphIcon } from \"./glyph-icon\";\n\nexport interface IconColorPickerIconOption {\n value: string | null;\n label: string;\n icon: ComponentType;\n}\n\nexport const optionColors = [\n \"gray\",\n \"red\",\n \"orange\",\n \"yellow\",\n \"green\",\n \"teal\",\n \"blue\",\n \"cyan\",\n \"purple\",\n \"pink\",\n] as const;\n\nconst glyph = (name: string, label: string) => ({ value: name, label, icon: createGlyphIcon(name) });\n\n// Level bars fill their ink box as a solid square, so they read heavier than the\n// round status glyphs at the same size; lucide's own bar marks sit at 18-of-24.\nconst levelGlyph = (name: string, label: string) => ({\n value: name,\n label,\n icon: createGlyphIcon(name, { scale: 0.82 }),\n});\n\n// Ordered exactly like the `cmp/TagAppearancePopover` grid in the design system:\n// a leading \"none\" cell, generic icons, then status rings, levels and concepts.\n// Status rings and level bars have no lucide equivalent and ship as glyphs in\n// the `prompt-studio-icons` font.\nexport const optionIcons = [\n { value: null, label: \"none\", icon: Ban },\n { value: \"flag\", label: \"flag\", icon: Flag },\n { value: \"bug\", label: \"bug\", icon: Bug },\n { value: \"sparkles\", label: \"sparkles\", icon: Sparkles },\n { value: \"book-open\", label: \"book open\", icon: BookOpen },\n { value: \"wrench\", label: \"wrench\", icon: Wrench },\n { value: \"zap\", label: \"zap\", icon: Zap },\n { value: \"feather\", label: \"feather\", icon: Feather },\n { value: \"scale\", label: \"scale\", icon: Scale },\n { value: \"layers\", label: \"layers\", icon: Layers },\n { value: \"star\", label: \"star\", icon: Star },\n { value: \"flame\", label: \"flame\", icon: Flame },\n { value: \"lightbulb\", label: \"lightbulb\", icon: Lightbulb },\n { value: \"shield\", label: \"shield\", icon: Shield },\n { value: \"eye\", label: \"eye\", icon: Eye },\n // The design draws the clock cell with lucide's timer.\n { value: \"clock\", label: \"clock\", icon: Timer },\n { value: \"tag\", label: \"tag\", icon: Tag },\n { value: \"code\", label: \"code\", icon: Code },\n { value: \"rocket\", label: \"rocket\", icon: Rocket },\n { value: \"heart\", label: \"heart\", icon: Heart },\n { value: \"bookmark\", label: \"bookmark\", icon: Bookmark },\n { value: \"target\", label: \"target\", icon: Target },\n { value: \"bell\", label: \"bell\", icon: Bell },\n { value: \"hash\", label: \"hash\", icon: Hash },\n glyph(\"status-backlog\", \"status backlog\"),\n glyph(\"status-todo\", \"status todo\"),\n glyph(\"status-progress\", \"status in progress\"),\n glyph(\"status-review\", \"status in review\"),\n glyph(\"status-done\", \"status done\"),\n glyph(\"status-canceled\", \"status canceled\"),\n { value: \"ticket\", label: \"ticket\", icon: Ticket },\n { value: \"git-branch\", label: \"git branch\", icon: GitBranch },\n levelGlyph(\"level-low\", \"level low\"),\n levelGlyph(\"level-mid\", \"level medium\"),\n levelGlyph(\"level-high\", \"level high\"),\n levelGlyph(\"level-xhigh\", \"level very high\"),\n { value: \"bot\", label: \"bot\", icon: Bot },\n { value: \"puzzle\", label: \"puzzle\", icon: Puzzle },\n { value: \"workflow\", label: \"workflow\", icon: Workflow },\n { value: \"kanban\", label: \"kanban\", icon: Kanban },\n { value: \"message-square\", label: \"message square\", icon: MessageSquare },\n { value: \"folder\", label: \"folder\", icon: Folder },\n { value: \"file-text\", label: \"file text\", icon: FileText },\n { value: \"history\", label: \"history\", icon: History },\n { value: \"play\", label: \"play\", icon: Play },\n { value: \"terminal\", label: \"terminal\", icon: Terminal },\n { value: \"cpu\", label: \"CPU\", icon: Cpu },\n { value: \"users\", label: \"users\", icon: Users },\n // Prompt Studio concepts: the icons its own tickets, boards, workspaces and\n // notifications are drawn with.\n { value: \"component\", label: \"ticket\", icon: Component },\n { value: \"square-kanban\", label: \"board\", icon: SquareKanban },\n { value: \"git-commit-horizontal\", label: \"workspace\", icon: GitCommitHorizontal },\n { value: \"inbox\", label: \"notifications\", icon: Inbox },\n { value: \"list-checks\", label: \"checklist\", icon: ListChecks },\n { value: \"archive\", label: \"archive\", icon: Archive },\n { value: \"link\", label: \"link\", icon: Link },\n { value: \"settings\", label: \"settings\", icon: Settings },\n] satisfies IconColorPickerIconOption[];\n\nexport const getIconComponent = (\n name: string | null | undefined,\n iconOptions: readonly IconColorPickerIconOption[] = optionIcons,\n): ComponentType => {\n const normalizedName = (name ?? \"circle\")\n .replace(/([a-z0-9])([A-Z])/g, \"$1-$2\")\n .replace(/([a-zA-Z])([0-9])/g, \"$1-$2\")\n .toLowerCase();\n const entry = iconOptions.find((icon) => icon.value === normalizedName);\n return entry?.icon ?? Circle;\n};\n","import { Icon } from \"@chakra-ui/react\";\nimport {\n CircleAlert,\n CircleCheck,\n CircleDashed,\n CircleDot,\n CirclePause,\n CircleStop,\n ClockAlert,\n LoaderCircle,\n} from \"lucide-react\";\nimport type { ComponentProps } from \"react\";\n\nexport const sessionCompletionStatuses = [\n \"in_progress\",\n \"awaiting_input\",\n \"queued\",\n \"completed\",\n \"failed\",\n \"cancelled\",\n \"disconnected\",\n] as const;\n\nexport type SessionCompletionStatus = (typeof sessionCompletionStatuses)[number];\n\nexport const resolveSessionIndicatorIcon = (status: SessionCompletionStatus | undefined) => {\n if (status === \"in_progress\") return LoaderCircle;\n if (status === \"completed\") return CircleCheck;\n if (status === \"failed\") return CircleAlert;\n if (status === \"cancelled\") return CircleStop;\n if (status === \"disconnected\") return CirclePause;\n if (status === \"queued\") return ClockAlert;\n if (status === \"awaiting_input\") return CircleDot;\n return CircleDashed;\n};\n\nexport const resolveSessionIndicatorColor = (status: SessionCompletionStatus | undefined) => {\n if (status === \"in_progress\") return \"fg.info\";\n if (status === \"completed\") return \"fg.success\";\n if (status === \"failed\") return \"fg.error\";\n if (status === \"cancelled\") return \"fg.warning\";\n if (status === \"disconnected\") return \"fg.warning\";\n if (status === \"queued\") return \"fg.info\";\n if (status === \"awaiting_input\") return \"fg.warning\";\n return \"fg.muted\";\n};\n\ninterface SessionIndicatorProps {\n status?: SessionCompletionStatus;\n boxSize?: ComponentProps<typeof Icon>[\"boxSize\"];\n ariaLabel?: string;\n cursor?: ComponentProps<typeof Icon>[\"cursor\"];\n onClick?: ComponentProps<typeof Icon>[\"onClick\"];\n}\n\nexport const SessionIndicator = (props: SessionIndicatorProps) => {\n const { status, boxSize = \"14px\", ariaLabel = \"Session status\", cursor, onClick } = props;\n\n return (\n <Icon\n as={resolveSessionIndicatorIcon(status)}\n boxSize={boxSize}\n color={resolveSessionIndicatorColor(status)}\n aria-label={ariaLabel}\n cursor={cursor}\n onClick={onClick}\n />\n );\n};\n","import { Switch as ChakraSwitch } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\nexport interface SwitchProps extends ChakraSwitch.RootProps {\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n rootRef?: React.RefObject<HTMLLabelElement | null>;\n trackLabel?: { on: React.ReactNode; off: React.ReactNode };\n thumbLabel?: { on: React.ReactNode; off: React.ReactNode };\n}\n\nexport const Switch = React.forwardRef<HTMLInputElement, SwitchProps>(function Switch(props, ref) {\n const { inputProps, children, rootRef, trackLabel, thumbLabel, disabled = false, ...rest } = props;\n const interactiveCursor = disabled ? \"not-allowed\" : \"pointer\";\n\n return (\n <ChakraSwitch.Root ref={rootRef} disabled={disabled} cursor={interactiveCursor} {...rest}>\n <ChakraSwitch.HiddenInput ref={ref} {...inputProps} />\n <ChakraSwitch.Control cursor={interactiveCursor}>\n <ChakraSwitch.Thumb>\n {thumbLabel && (\n <ChakraSwitch.ThumbIndicator fallback={thumbLabel?.off}>{thumbLabel?.on}</ChakraSwitch.ThumbIndicator>\n )}\n </ChakraSwitch.Thumb>\n {trackLabel && <ChakraSwitch.Indicator fallback={trackLabel.off}>{trackLabel.on}</ChakraSwitch.Indicator>}\n </ChakraSwitch.Control>\n {children != null && <ChakraSwitch.Label cursor={interactiveCursor}>{children}</ChakraSwitch.Label>}\n </ChakraSwitch.Root>\n );\n});\n","import { Badge, Box, HStack, Icon, Spinner, Text } from \"@chakra-ui/react\";\nimport { ChevronDown, GitBranchIcon, GitCommitIcon } from \"lucide-react\";\nimport type { MouseEvent } from \"react\";\nimport { type SessionCompletionStatus, SessionIndicator } from \"@/components/primitives/session-indicator\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\n\ninterface WorkspaceAttemptStatus {\n name: string;\n color: string;\n description?: string | null;\n}\n\nconst ATTEMPT_STATUS_COLOR_ALIASES: Record<string, string> = {\n amber: \"yellow\",\n};\n\nconst CHAKRA_COLOR_PALETTES = new Set([\n \"gray\",\n \"red\",\n \"orange\",\n \"yellow\",\n \"green\",\n \"teal\",\n \"blue\",\n \"cyan\",\n \"purple\",\n \"pink\",\n]);\n\nconst workspaceBadgeSurfaceProps = {\n bg: { _light: \"bg.muted\", _dark: \"bg.subtle\" },\n color: \"fg.muted\",\n _hover: { bg: { _light: \"bg.subtle\", _dark: \"bg.hover\" } },\n} as const;\n\nexport interface WorkspaceBadgeProps {\n workspaceType: \"worktree\" | \"current_branch\";\n initializing?: boolean;\n label?: string;\n shorthand?: string;\n attemptStatus?: WorkspaceAttemptStatus;\n sessionStatus?: SessionCompletionStatus;\n showLeadingSessionIndicator?: boolean;\n diffAdditions?: number;\n diffDeletions?: number;\n hasMultipleWorkspaces?: boolean;\n onClick?: () => void;\n onDropdownClick?: () => void;\n onSessionIndicatorClick?: () => void;\n}\n\nconst resolveWorkspaceIcon = (workspaceType: WorkspaceBadgeProps[\"workspaceType\"]) => {\n if (workspaceType === \"current_branch\") {\n return GitCommitIcon;\n }\n\n return GitBranchIcon;\n};\n\nconst resolveAttemptStatusColor = (color: string) => {\n if (color.startsWith(\"#\") || color.startsWith(\"rgb\") || color.startsWith(\"hsl\") || color.startsWith(\"var(\")) {\n return color;\n }\n\n const resolvedColor = ATTEMPT_STATUS_COLOR_ALIASES[color] ?? color;\n if (CHAKRA_COLOR_PALETTES.has(resolvedColor)) {\n return `var(--chakra-colors-${resolvedColor}-500)`;\n }\n\n return resolvedColor;\n};\n\nconst buildAttemptStatusTooltip = (attemptStatus: WorkspaceAttemptStatus | undefined) => {\n if (!attemptStatus) return null;\n\n if (attemptStatus.description) {\n return `${attemptStatus.name}: ${attemptStatus.description}`;\n }\n\n return attemptStatus.name;\n};\n\nconst handleIconClick = (event: MouseEvent<SVGSVGElement>, onClick: (() => void) | undefined) => {\n event.stopPropagation();\n onClick?.();\n};\n\nconst handleBadgeClick = (event: MouseEvent<HTMLSpanElement>, onClick: (() => void) | undefined) => {\n event.stopPropagation();\n onClick?.();\n};\n\nconst LeadingSessionIndicator = (props: {\n sessionStatus?: SessionCompletionStatus;\n onSessionIndicatorClick?: () => void;\n}) => {\n const { sessionStatus, onSessionIndicatorClick } = props;\n\n if (!sessionStatus) {\n return null;\n }\n\n const sessionTooltip = onSessionIndicatorClick ? \"Open latest session\" : \"Latest session status\";\n\n return (\n <Tooltip content={sessionTooltip}>\n <SessionIndicator\n status={sessionStatus}\n boxSize=\"12px\"\n ariaLabel={sessionTooltip}\n cursor=\"pointer\"\n onClick={onSessionIndicatorClick ? (event) => handleIconClick(event, onSessionIndicatorClick) : undefined}\n />\n </Tooltip>\n );\n};\n\nconst WorkspaceTypeIndicator = (props: {\n workspaceType: WorkspaceBadgeProps[\"workspaceType\"];\n initializing: boolean;\n label?: string;\n shorthand?: string;\n}) => {\n const { workspaceType, initializing, label, shorthand } = props;\n const WorkspaceTypeIcon = resolveWorkspaceIcon(workspaceType);\n const displayLabel = label ?? shorthand;\n\n return (\n <HStack as=\"span\" gap=\"2xs\" alignItems=\"center\" color=\"fg.muted\" minW=\"0\">\n <Icon\n as={WorkspaceTypeIcon}\n boxSize=\"3.5\"\n flexShrink={0}\n aria-label={workspaceType === \"worktree\" ? \"Worktree\" : \"Current branch\"}\n />\n {initializing ? <Spinner size=\"xs\" color=\"fg.muted\" /> : null}\n {displayLabel ? (\n <Text as=\"span\" textStyle=\"label/XS/medium\" color=\"fg.muted\" minW=\"0\" maxW=\"10rem\" truncate>\n {displayLabel}\n </Text>\n ) : null}\n </HStack>\n );\n};\n\nconst WorkspaceAttemptStatusIndicator = (props: { attemptStatus?: WorkspaceAttemptStatus }) => {\n const { attemptStatus } = props;\n\n if (!attemptStatus) {\n return null;\n }\n\n return (\n <Tooltip content={buildAttemptStatusTooltip(attemptStatus)}>\n <Box\n as=\"span\"\n boxSize=\"8px\"\n borderRadius=\"full\"\n backgroundColor={resolveAttemptStatusColor(attemptStatus.color)}\n flexShrink={0}\n aria-label={`Attempt status ${attemptStatus.name}`}\n data-testid=\"workspace-attempt-status\"\n />\n </Tooltip>\n );\n};\n\nconst WorkspaceDiffTotals = (props: { diffAdditions?: number; diffDeletions?: number }) => {\n const { diffAdditions, diffDeletions } = props;\n\n if (typeof diffAdditions !== \"number\" || typeof diffDeletions !== \"number\") {\n return null;\n }\n\n return (\n <HStack as=\"span\" gap=\"3xs\" flexShrink={0}>\n <Text as=\"span\" textStyle=\"label/XS/medium\" color=\"fg.success\">\n +{diffAdditions}\n </Text>\n <Text as=\"span\" textStyle=\"label/XS/medium\" color=\"fg.error\">\n -{diffDeletions}\n </Text>\n </HStack>\n );\n};\n\nconst WorkspaceDropdownTrigger = (props: { hasMultipleWorkspaces: boolean; onDropdownClick?: () => void }) => {\n const { hasMultipleWorkspaces, onDropdownClick } = props;\n\n if (!hasMultipleWorkspaces) {\n return null;\n }\n\n return (\n <Icon\n as={ChevronDown}\n boxSize=\"12px\"\n color=\"fg.muted\"\n cursor={onDropdownClick ? \"pointer\" : \"default\"}\n aria-label=\"Workspace selector\"\n onClick={onDropdownClick ? (event) => handleIconClick(event, onDropdownClick) : undefined}\n />\n );\n};\n\nexport const WorkspaceBadge = (props: WorkspaceBadgeProps) => {\n const {\n workspaceType,\n initializing = false,\n label,\n shorthand,\n attemptStatus,\n sessionStatus,\n showLeadingSessionIndicator = true,\n diffAdditions,\n diffDeletions,\n hasMultipleWorkspaces = false,\n onClick,\n onDropdownClick,\n onSessionIndicatorClick,\n } = props;\n\n return (\n <Badge\n as=\"span\"\n display=\"inline-flex\"\n gap=\"2xs\"\n alignItems=\"center\"\n minW=\"0\"\n maxW=\"100%\"\n variant=\"subtle\"\n {...workspaceBadgeSurfaceProps}\n textStyle=\"label/XS/medium\"\n cursor={onClick || onDropdownClick || hasMultipleWorkspaces ? \"pointer\" : \"default\"}\n transition=\"background-color 0.2s ease-in-out\"\n onClick={onClick ? (event) => handleBadgeClick(event, onClick) : undefined}\n data-testid=\"workspace-badge\"\n >\n {showLeadingSessionIndicator ? (\n <LeadingSessionIndicator sessionStatus={sessionStatus} onSessionIndicatorClick={onSessionIndicatorClick} />\n ) : null}\n <WorkspaceTypeIndicator\n workspaceType={workspaceType}\n initializing={initializing}\n label={label}\n shorthand={shorthand}\n />\n <WorkspaceAttemptStatusIndicator attemptStatus={attemptStatus} />\n <WorkspaceDiffTotals diffAdditions={diffAdditions} diffDeletions={diffDeletions} />\n <WorkspaceDropdownTrigger hasMultipleWorkspaces={hasMultipleWorkspaces} onDropdownClick={onDropdownClick} />\n </Badge>\n );\n};\n","import { Button, Flex, Icon, IconButton, Menu } from \"@chakra-ui/react\";\nimport { Check, ChevronDown, Square, SquareCheck } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\nimport { ListRow } from \"../../list-row/list-row\";\nimport { SearchableMenu, type SearchableMenuItem } from \"../../overlays/searchable-menu\";\nimport { getIconComponent } from \"../../primitives\";\nimport type { SelectionGroup } from \"../param-editor.types\";\n\nexport interface SelectionMenuOption {\n id: string;\n name: string;\n icon?: string;\n /** Palette key (e.g. \"blue\") applied to the option's icon. */\n color?: string;\n description?: string;\n disabled?: boolean;\n}\n\nexport interface SelectionMenuProps {\n triggerLabel: ReactNode;\n options: SelectionMenuOption[];\n selectedIds: string[];\n multiSelect: boolean;\n disabled?: boolean;\n searchable?: boolean;\n searchPlaceholder?: string;\n emptyText?: string;\n group?: SelectionGroup;\n fullWidth?: boolean;\n triggerVariant?: \"button\" | \"icon\";\n triggerAriaLabel?: string;\n size?: \"xs\" | \"sm\";\n onToggle: (optionId: string) => void;\n onGroupChange?: (optionId: string) => void;\n}\n\nexport const selectionIndicator = (multiSelect: boolean, selected: boolean) => {\n if (multiSelect)\n return <Icon as={selected ? SquareCheck : Square} boxSize=\"14px\" color={selected ? \"fg\" : \"fg.muted\"} />;\n return selected ? <Icon as={Check} boxSize=\"14px\" color=\"fg\" /> : null;\n};\n\nexport const selectionOptionIcon = (option: SelectionMenuOption | undefined, boxSize: string) => {\n if (!option) return null;\n return (\n <Icon\n as={getIconComponent(option.icon ?? null)}\n boxSize={boxSize}\n color={option.color ? `${option.color}.500` : \"fg.muted\"}\n />\n );\n};\n\n/**\n * The single dropdown behind every option picker in the editor — selection\n * params and editable resource params alike. Sharing it is what keeps a\n * resource attribute and a command param from drifting into two looks.\n *\n * Single-selects clear by re-picking the selected option; a dedicated \"none\"\n * row would read as just another value to choose.\n */\nexport const SelectionMenu = (props: SelectionMenuProps) => {\n const {\n triggerLabel,\n options,\n selectedIds,\n multiSelect,\n disabled,\n searchable = false,\n searchPlaceholder = \"Search options…\",\n emptyText = \"No options found\",\n group,\n fullWidth,\n triggerVariant = \"button\",\n triggerAriaLabel,\n size = \"sm\",\n onToggle,\n onGroupChange,\n } = props;\n const trigger =\n triggerVariant === \"icon\" ? (\n <IconButton aria-label={triggerAriaLabel ?? \"Open options\"} size=\"2xs\" variant=\"ghost\" disabled={disabled}>\n {triggerLabel}\n </IconButton>\n ) : (\n <Button\n size={size}\n borderWidth=\"1px\"\n borderStyle=\"solid\"\n borderColor=\"border\"\n disabled={disabled}\n textStyle={size === \"xs\" ? \"label/XS\" : \"label/S/regular\"}\n width={fullWidth ? \"100%\" : undefined}\n _hover={{ bg: \"bg.hover\", borderColor: \"border.accent-light\" }}\n _active={{ bg: \"bg.active\", borderColor: \"border.accent-light\" }}\n _expanded={{ bg: \"bg.active\", borderColor: \"border.accent-light\" }}\n _focusVisible={{ borderColor: \"border.accent-light\", outline: \"none\", boxShadow: \"none\" }}\n >\n <Flex alignItems=\"center\" justifyContent=\"space-between\" gap=\"xs\" w={fullWidth ? \"full\" : undefined}>\n <Flex alignItems=\"center\" gap=\"xs\">\n {triggerLabel}\n </Flex>\n <ChevronDown size={14} />\n </Flex>\n </Button>\n );\n\n if (searchable || group) {\n const items: SearchableMenuItem[] = options.map((option) => ({\n id: option.id,\n label: option.name,\n searchText: [option.id, option.description].filter(Boolean).join(\" \"),\n secondaryLabel: option.description,\n icon: getIconComponent(option.icon),\n isDisabled: option.disabled,\n isSelected: selectedIds.includes(option.id),\n onSelect: () => onToggle(option.id),\n }));\n const selectedGroup = group?.options.find((option) => option.id === group.defaultValue);\n\n return (\n <SearchableMenu\n trigger={trigger}\n items={items}\n listId={group?.defaultValue}\n showSearch={searchable}\n searchPlaceholder={searchPlaceholder}\n closeOnSelect={!multiSelect}\n emptyState={\n <Menu.Item value=\"empty\" disabled asChild>\n <ListRow asChild variant=\"full-width\" id=\"empty\" label={emptyText} disabled />\n </Menu.Item>\n }\n parentList={\n group\n ? {\n items: group.options.map((option) => ({\n id: option.id,\n label: option.name,\n searchText: [option.id, option.description].filter(Boolean).join(\" \"),\n secondaryLabel: option.description,\n icon: getIconComponent(option.icon),\n isDisabled: option.disabled,\n isSelected: option.id === group.defaultValue,\n })),\n selectedLabel: selectedGroup?.name ?? group.placeholder ?? `Select ${group.name.toLowerCase()}`,\n selectedIcon: selectedGroup ? getIconComponent(selectedGroup.icon) : undefined,\n ariaLabel: group.name,\n disabled: group.disabled || group.options.length <= 1,\n showSearch: group.searchable,\n searchPlaceholder: group.searchPlaceholder ?? `Search ${group.name.toLowerCase()}…`,\n emptyState: (\n <Menu.Item value=\"group-empty\" disabled asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n id=\"group-empty\"\n label={group.emptyText ?? `No ${group.name.toLowerCase()} found`}\n disabled\n />\n </Menu.Item>\n ),\n onSelect: (item) => onGroupChange?.(item.id),\n }\n : undefined\n }\n />\n );\n }\n\n return (\n <Menu.Root closeOnSelect={!multiSelect}>\n <Menu.Trigger asChild>{trigger}</Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content>\n {options.map((option) => {\n const selected = selectedIds.includes(option.id);\n return (\n <Menu.Item key={option.id} value={option.id} disabled={option.disabled} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n role={multiSelect ? \"menuitemcheckbox\" : \"menuitemradio\"}\n aria-checked={selected}\n id={option.id}\n label={option.name}\n icon={selectionOptionIcon(option, \"16px\")}\n tooltip={option.description}\n disabled={option.disabled}\n isSelected={selected}\n endContent={selectionIndicator(multiSelect, selected)}\n onActivate={() => onToggle(option.id)}\n />\n </Menu.Item>\n );\n })}\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\n );\n};\n","import { Button, Flex } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport type { ActionOption } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { SelectionMenu } from \"./selection-menu\";\n\ninterface ActionInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue?: string;\n options: ActionOption[];\n onChange: (id: string, value: string) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n presentation?: \"stacked\" | \"horizontal\";\n}\n\nexport const ActionInput = (props: ActionInputProps) => {\n const { id, name, description, defaultValue, options, onChange, readOnly, presentation = \"stacked\" } = props;\n const [active, setActive] = useState(defaultValue);\n\n useEffect(() => {\n setActive(defaultValue);\n }, [defaultValue]);\n\n const run = (optionId: string) => {\n setActive(optionId);\n onChange(id, optionId);\n };\n const horizontal = presentation === \"horizontal\";\n const selectedName = options.find((option) => option.id === active)?.name ?? name;\n\n if (horizontal) {\n return (\n <SelectionMenu\n triggerLabel={selectedName}\n options={options}\n selectedIds={active ? [active] : []}\n multiSelect={false}\n disabled={readOnly}\n onToggle={run}\n />\n );\n }\n\n const row = (\n <Flex gap=\"xs\" wrap=\"wrap\">\n {options.map((option) => (\n <Button\n key={option.id}\n size=\"xs\"\n variant={active === option.id ? \"subtle\" : \"outline\"}\n disabled={option.disabled || readOnly}\n _hover={{ bg: \"bg.hover\", borderColor: \"border.accent-light\" }}\n _active={{ bg: \"bg.active\", borderColor: \"border.accent-light\" }}\n _focusVisible={{ borderColor: \"border.accent-light\", outline: \"none\", boxShadow: \"none\" }}\n onClick={() => run(option.id)}\n >\n {option.name}\n </Button>\n ))}\n </Flex>\n );\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation=\"stacked\">\n {row}\n </ParamEditorControlItem>\n );\n};\n","import type { AnchorGridValue } from \"../param-editor.types\";\n\n/** The nine anchors in row-major order (top-left → bottom-right). */\nexport const ANCHOR_GRID_VALUES: AnchorGridValue[] = [\n \"top-left\",\n \"top\",\n \"top-right\",\n \"left\",\n \"center\",\n \"right\",\n \"bottom-left\",\n \"bottom\",\n \"bottom-right\",\n];\n\nexport const isAnchorGridValue = (value: unknown): value is AnchorGridValue =>\n typeof value === \"string\" && (ANCHOR_GRID_VALUES as string[]).includes(value);\n","import { Box, type BoxProps } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\ninterface ParamEditorReadOnlyValueProps extends Omit<BoxProps, \"children\"> {\n children: ReactNode;\n preserveWhitespace?: boolean;\n}\n\nexport const ParamEditorReadOnlyValue = (props: ParamEditorReadOnlyValueProps) => {\n const { children, preserveWhitespace = false, ...boxProps } = props;\n\n return (\n <Box minW=\"0\" textStyle=\"label/S/regular\" whiteSpace={preserveWhitespace ? \"pre-wrap\" : undefined} {...boxProps}>\n {children}\n </Box>\n );\n};\n","import { Box, Grid, IconButton } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport type { AnchorGridValue } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\nimport { ANCHOR_GRID_VALUES } from \"./anchor-grid\";\n\ninterface AnchorGridInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: AnchorGridValue;\n onChange: (id: string, value: AnchorGridValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n}\n\nexport const AnchorGridInput = (props: AnchorGridInputProps) => {\n const { id, name, description, defaultValue, onChange, readOnly, fullWidth } = props;\n const [value, setValue] = useState<AnchorGridValue>(defaultValue);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const select = (next: AnchorGridValue) => {\n setValue(next);\n onChange(id, next);\n };\n\n if (readOnly) {\n return (\n <ParamEditorControlItem name={name} description={description} fullWidth={fullWidth}>\n <ParamEditorReadOnlyValue>{value}</ParamEditorReadOnlyValue>\n </ParamEditorControlItem>\n );\n }\n\n const grid = (\n <Grid\n templateColumns=\"repeat(3, 1.5rem)\"\n gap=\"1px\"\n width=\"fit-content\"\n bg=\"border.subtle\"\n p=\"1px\"\n borderRadius=\"sm\"\n overflow=\"hidden\"\n >\n {ANCHOR_GRID_VALUES.map((anchor) => {\n const selected = anchor === value;\n return (\n <IconButton\n key={anchor}\n aria-label={anchor}\n aria-pressed={selected}\n size=\"2xs\"\n variant=\"ghost\"\n bg={selected ? \"fg\" : \"bg\"}\n _hover={{ bg: selected ? \"fg\" : \"bg.muted\" }}\n borderRadius=\"0\"\n onClick={() => select(anchor)}\n >\n <Box boxSize=\"0.375rem\" borderRadius=\"full\" bg={selected ? \"bg\" : \"fg.muted\"} />\n </IconButton>\n );\n })}\n </Grid>\n );\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation={fullWidth ? \"stacked\" : \"inline\"}>\n {grid}\n </ParamEditorControlItem>\n );\n};\n","import { useEffect, useState } from \"react\";\nimport { Switch } from \"@/components/primitives/switch\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface BooleanInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: boolean;\n onChange: (id: string, value: boolean) => void;\n readOnly?: boolean;\n hideLabel?: boolean;\n fullWidth?: boolean;\n size?: \"xs\" | \"sm\";\n}\n\nexport const BooleanInput = (props: BooleanInputProps) => {\n const { id, name, description, defaultValue, onChange, readOnly, hideLabel, fullWidth, size = \"sm\" } = props;\n const [value, setValue] = useState(defaultValue);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n if (readOnly) {\n return (\n <ParamEditorControlItem\n name={name}\n description={description}\n hideLabel={hideLabel}\n fullWidth={fullWidth}\n orientation=\"inline\"\n >\n <ParamEditorReadOnlyValue>{String(value)}</ParamEditorReadOnlyValue>\n </ParamEditorControlItem>\n );\n }\n\n return (\n <ParamEditorControlItem\n name={name}\n description={description}\n hideLabel={hideLabel}\n fullWidth={fullWidth}\n orientation=\"inline\"\n >\n <Switch\n size={size}\n checked={value}\n inputProps={{ \"aria-label\": name }}\n onCheckedChange={(details) => {\n setValue(details.checked);\n onChange(id, details.checked);\n }}\n />\n </ParamEditorControlItem>\n );\n};\n","import { Box, ColorPicker, type ColorPickerValueChangeDetails, Flex, parseColor } from \"@chakra-ui/react\";\nimport { type FocusEvent as ReactFocusEvent, useEffect, useRef, useState } from \"react\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface ColorInputProps {\n id: string;\n defaultValue: string;\n name: string;\n onChange: (id: string, value: string) => void;\n description: string;\n readOnly?: boolean;\n hideLabel?: boolean;\n tooltipPlacement?: \"top\" | \"right\" | \"bottom\" | \"left\";\n fullWidth?: boolean;\n size?: \"xs\" | \"sm\";\n}\n\nexport const ColorInput = (props: ColorInputProps) => {\n const {\n id,\n defaultValue,\n name,\n onChange,\n description,\n readOnly,\n hideLabel = false,\n fullWidth = false,\n size = \"sm\",\n } = props;\n const [value, setValue] = useState(defaultValue);\n const [open, setOpen] = useState(false);\n const rootRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const scheduleChange = (nextColor: string) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, nextColor), 540);\n };\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n useEffect(() => {\n if (!open) return;\n\n const isInsidePicker = (target: EventTarget | null) => {\n const node = target as Node;\n return rootRef.current?.contains(node) || contentRef.current?.contains(node);\n };\n\n const handleOutsideInteraction = (event: FocusEvent | PointerEvent) => {\n if (isInsidePicker(event.target)) return;\n\n setOpen(false);\n };\n\n document.addEventListener(\"focusin\", handleOutsideInteraction, true);\n document.addEventListener(\"pointerdown\", handleOutsideInteraction, true);\n document.addEventListener(\"click\", handleOutsideInteraction, true);\n\n return () => {\n document.removeEventListener(\"focusin\", handleOutsideInteraction, true);\n document.removeEventListener(\"pointerdown\", handleOutsideInteraction, true);\n document.removeEventListener(\"click\", handleOutsideInteraction, true);\n };\n }, [open]);\n\n const handleChange = (newColor: string) => {\n setValue(newColor);\n scheduleChange(newColor);\n };\n\n const handleBlur = (event: ReactFocusEvent<HTMLDivElement>) => {\n const root = event.currentTarget;\n\n setTimeout(() => {\n if (!root.contains(root.ownerDocument.activeElement)) setOpen(false);\n });\n };\n\n if (readOnly) {\n const valueElement = (\n <ParamEditorReadOnlyValue>\n <Flex alignItems=\"center\" gap=\"xs\">\n <Box boxSize=\"0.75rem\" borderRadius=\"xs\" bg={value} />\n <Box as=\"span\">{value}</Box>\n </Flex>\n </ParamEditorReadOnlyValue>\n );\n\n if (fullWidth) {\n return (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {valueElement}\n </Box>\n );\n }\n\n return (\n <Box>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n {valueElement}\n </Flex>\n </Box>\n );\n }\n\n const rootProps = {\n value: parseColor(value),\n open,\n onOpenChange: (details: { open: boolean }) => setOpen(details.open),\n onFocusOutside: () => setOpen(false),\n onInteractOutside: () => setOpen(false),\n onBlur: handleBlur,\n onValueChange: (details: ColorPickerValueChangeDetails) => handleChange(details.value.toString(\"hex\")),\n disabled: readOnly,\n };\n\n const picker = (\n <ColorPicker.Root ref={rootRef} {...rootProps} size={size} width={fullWidth ? \"100%\" : \"8.75rem\"} maxW=\"100%\">\n <ColorPicker.HiddenInput />\n <ColorPicker.Label srOnly>{name}</ColorPicker.Label>\n <ColorPicker.Control>\n <ColorPicker.Input readOnly={readOnly} onFocus={() => setOpen(false)} />\n <ColorPicker.Trigger />\n </ColorPicker.Control>\n <ColorPicker.Positioner>\n <ColorPicker.Content ref={contentRef} onBlur={handleBlur}>\n <ColorPicker.Area />\n <ColorPicker.Sliders />\n <ColorPicker.SwatchGroup>\n <ColorPicker.SwatchTrigger value={value}>\n <ColorPicker.Swatch value={value} />\n </ColorPicker.SwatchTrigger>\n </ColorPicker.SwatchGroup>\n </ColorPicker.Content>\n </ColorPicker.Positioner>\n </ColorPicker.Root>\n );\n\n return (\n <Box>\n {fullWidth ? (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {picker}\n </Box>\n ) : (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n {picker}\n </Flex>\n )}\n </Box>\n );\n};\n","import { Box, Flex, Input } from \"@chakra-ui/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface DateInputProps {\n id: string;\n defaultValue: string;\n name: string;\n min?: string;\n max?: string;\n onChange: (id: string, value: string) => void;\n description: string;\n readOnly?: boolean;\n hideLabel?: boolean;\n tooltipPlacement?: \"top\" | \"right\" | \"bottom\" | \"left\";\n fullWidth?: boolean;\n size?: \"xs\" | \"sm\";\n}\n\nexport const DateInput = (props: DateInputProps) => {\n const {\n id,\n defaultValue,\n name,\n min,\n max,\n onChange,\n description,\n readOnly,\n hideLabel = false,\n fullWidth = false,\n size = \"sm\",\n } = props;\n const [value, setValue] = useState(defaultValue);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const scheduleChange = (nextValue: string) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, nextValue), 540);\n };\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const handleChange = (newValue: string) => {\n setValue(newValue);\n scheduleChange(newValue);\n };\n\n if (readOnly) {\n const valueElement = <ParamEditorReadOnlyValue>{value}</ParamEditorReadOnlyValue>;\n\n if (fullWidth) {\n return (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {valueElement}\n </Box>\n );\n }\n\n return (\n <Box>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n {valueElement}\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box>\n {fullWidth ? (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n <Input\n className=\"nodrag\"\n readOnly={readOnly}\n width=\"100%\"\n size={size}\n type=\"date\"\n placeholder={hideLabel ? name : undefined}\n value={value}\n min={min}\n max={max}\n onChange={(e) => handleChange(e.target.value)}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n </Box>\n ) : (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n <Input\n className=\"nodrag\"\n readOnly={readOnly}\n width=\"8.75rem\"\n size={size}\n type=\"date\"\n placeholder={hideLabel ? name : undefined}\n value={value}\n min={min}\n max={max}\n onChange={(e) => handleChange(e.target.value)}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n </Flex>\n )}\n </Box>\n );\n};\n","import type { FileUploadValue } from \"../param-editor.types\";\n\nexport type FileUploadSummaryState = \"empty\" | \"queued\" | \"uploading\" | \"complete\" | \"error\";\n\nconst valueId = (file: File, index: number) =>\n `${file.name}-${file.size.toString()}-${file.lastModified.toString()}-${index.toString()}`;\n\nexport const createFileUploadValues = (\n files: File[],\n existing: FileUploadValue[],\n multiple: boolean,\n): FileUploadValue[] => {\n const offset = multiple ? existing.length : 0;\n const selected = files.map((file, index) => ({\n id: valueId(file, offset + index),\n file,\n status: \"queued\" as const,\n }));\n\n return multiple ? [...existing, ...selected] : selected.slice(0, 1);\n};\n\nexport const getFileUploadSummary = (values: FileUploadValue[]) => {\n const states: FileUploadSummaryState[] = [\"uploading\", \"error\", \"queued\", \"complete\"];\n const state = states.find((candidate) => values.some((value) => value.status === candidate)) ?? \"empty\";\n const count = state === \"empty\" ? 0 : values.filter((value) => value.status === state).length;\n\n return { state, count };\n};\n","import { Button, Flex, Icon, Spinner, Stack, Text, Wrap } from \"@chakra-ui/react\";\nimport { CircleAlert, CircleCheck, Clock3, Paperclip } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { AttachmentChip } from \"@/components/overlays/attachment-chip\";\nimport type { FileUploadValue } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { createFileUploadValues, getFileUploadSummary } from \"./file-upload-value\";\n\ninterface FileUploadInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: FileUploadValue[];\n accept?: string;\n multiple?: boolean;\n uploadLabel?: string;\n onChange: (id: string, value: FileUploadValue[]) => void;\n readOnly?: boolean;\n presentation?: \"stacked\" | \"horizontal\";\n}\n\nconst UploadStatus = (props: { values: FileUploadValue[] }) => {\n const { values } = props;\n const summary = getFileUploadSummary(values);\n if (summary.state === \"empty\") return null;\n\n const noun = summary.count === 1 ? \"file\" : \"files\";\n const labels = {\n queued: `${summary.count.toString()} ${noun} queued`,\n uploading: `Uploading ${summary.count.toString()} ${noun}`,\n complete: `${summary.count.toString()} ${noun} uploaded`,\n error: `${summary.count.toString()} ${noun} failed`,\n empty: \"\",\n };\n const icon =\n summary.state === \"uploading\" ? (\n <Spinner boxSize=\"12px\" borderWidth=\"1px\" />\n ) : (\n <Icon\n as={summary.state === \"error\" ? CircleAlert : summary.state === \"complete\" ? CircleCheck : Clock3}\n boxSize=\"12px\"\n />\n );\n\n return (\n <Flex alignItems=\"center\" gap=\"2xs\" color={summary.state === \"error\" ? \"fg.error\" : \"fg.muted\"}>\n {icon}\n <Text textStyle=\"label/XS/medium\">{labels[summary.state]}</Text>\n </Flex>\n );\n};\n\nconst UploadQueue = (props: { readOnly?: boolean; values: FileUploadValue[]; onRemove: (valueId: string) => void }) => {\n const { readOnly, values, onRemove } = props;\n if (values.length === 0) return null;\n\n return (\n <Stack gap=\"2xs\" minW=\"0\">\n <UploadStatus values={values} />\n <Wrap gap=\"2xs\">\n {values.map((value) => (\n <AttachmentChip\n key={value.id}\n file={value.file}\n disabled={readOnly}\n removeLabel={`Remove ${value.file.name}`}\n onRemove={() => onRemove(value.id)}\n />\n ))}\n </Wrap>\n </Stack>\n );\n};\n\nexport const FileUploadInput = (props: FileUploadInputProps) => {\n const {\n id,\n name,\n description,\n defaultValue,\n accept,\n multiple = true,\n uploadLabel = \"Attach files\",\n onChange,\n readOnly,\n presentation = \"stacked\",\n } = props;\n const [values, setValues] = useState(defaultValue);\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n setValues(defaultValue);\n }, [defaultValue]);\n\n const commit = (next: FileUploadValue[]) => {\n setValues(next);\n onChange(id, next);\n };\n const remove = (valueId: string) => commit(values.filter((value) => value.id !== valueId));\n const button = readOnly ? null : (\n <Button size=\"xs\" variant=\"ghost\" flexShrink={0} onClick={() => inputRef.current?.click()}>\n <Icon as={Paperclip} boxSize=\"14px\" />\n {uploadLabel}\n </Button>\n );\n const input = (\n <input\n ref={inputRef}\n hidden\n type=\"file\"\n accept={accept}\n multiple={multiple}\n onChange={(event) => {\n commit(createFileUploadValues(Array.from(event.currentTarget.files ?? []), values, multiple));\n event.currentTarget.value = \"\";\n }}\n />\n );\n\n if (presentation === \"horizontal\") {\n return (\n <Flex alignItems=\"center\" gap=\"sm\" minW=\"0\" width=\"full\">\n {input}\n {button}\n <UploadQueue readOnly={readOnly} values={values} onRemove={remove} />\n </Flex>\n );\n }\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation=\"stacked\">\n <Stack alignItems=\"start\" gap=\"xs\" minW=\"0\">\n {input}\n {button}\n <UploadQueue readOnly={readOnly} values={values} onRemove={remove} />\n </Stack>\n </ParamEditorControlItem>\n );\n};\n","import { Box, Flex, Input, Textarea } from \"@chakra-ui/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface HorizontalTextInputProps {\n id: string;\n defaultValue: string;\n name: string;\n onChange: (id: string, value: string) => void;\n description: string;\n readOnly?: boolean;\n hideLabel?: boolean;\n tooltipPlacement?: \"top\" | \"right\" | \"bottom\" | \"left\";\n size?: \"xs\" | \"sm\";\n}\n\nexport const HorizontalTextInput = (props: HorizontalTextInputProps) => {\n const { id, defaultValue, name, onChange, description, readOnly, hideLabel = false, size = \"sm\" } = props;\n const [value, setValue] = useState(defaultValue);\n const [isExpanded, setIsExpanded] = useState(false);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const scheduleChange = (nextValue: string) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, nextValue), 540);\n };\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const handleChange = (newValue: string) => {\n setValue(newValue);\n scheduleChange(newValue);\n };\n\n const handleClick = () => {\n if (!readOnly) {\n setIsExpanded(true);\n }\n };\n\n const handleBlur = () => {\n // Only collapse if the value is empty\n if (value.trim().length === 0) {\n setIsExpanded(false);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n // Allow users to collapse with Escape key\n if (e.key === \"Escape\") {\n setIsExpanded(false);\n e.preventDefault();\n }\n };\n\n if (readOnly) {\n return (\n <Box position=\"relative\" flex=\"1\" minW=\"12.5rem\">\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n <ParamEditorReadOnlyValue preserveWhitespace>{value}</ParamEditorReadOnlyValue>\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box position=\"relative\" flex=\"1\" minW=\"12.5rem\">\n <Box position=\"relative\" minHeight=\"2rem\">\n {!isExpanded ? (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" height=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n <Input\n className=\"nodrag\"\n readOnly={readOnly}\n flex=\"1\"\n maxW=\"12.5rem\"\n size={size}\n type=\"text\"\n placeholder={hideLabel ? name : undefined}\n value={value}\n onClick={handleClick}\n onChange={(e) => handleChange(e.target.value)}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n </Flex>\n ) : (\n <Box\n position=\"absolute\"\n top=\"0\"\n left=\"0\"\n right=\"0\"\n zIndex=\"10\"\n bg=\"bg\"\n borderWidth=\"1px\"\n borderStyle=\"solid\"\n borderColor=\"border\"\n borderRadius=\"lg\"\n p=\"2\"\n transition=\"border-color 0.2s ease-in-out\"\n boxShadow=\"none\"\n _hover={{ borderColor: \"border.accent-light\" }}\n _active={{ borderColor: \"border.accent-light\" }}\n _focusWithin={{ borderColor: \"border.accent-light\", boxShadow: \"none\" }}\n >\n {!hideLabel && (\n <Box mb=\"sm\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n <Textarea\n className=\"nodrag\"\n readOnly={readOnly}\n width=\"100%\"\n size={size}\n placeholder={hideLabel ? name : undefined}\n value={value}\n onChange={(e) => handleChange(e.target.value)}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n rows={3}\n resize=\"vertical\"\n autoFocus\n />\n </Box>\n )}\n </Box>\n </Box>\n );\n};\n","import { Box, Flex, Input, Stack } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport { LazyMarkdownEditor } from \"@/components/rich-text\";\nimport { ParamEditorFieldLabel } from \"../param-editor-field-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface MarkdownInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: string;\n placeholder?: string;\n onChange: (id: string, value: string) => void;\n readOnly?: boolean;\n presentation?: \"stacked\" | \"horizontal\";\n size?: \"xs\" | \"sm\";\n}\n\nexport const MarkdownInput = (props: MarkdownInputProps) => {\n const {\n id,\n name,\n description,\n defaultValue,\n placeholder,\n onChange,\n readOnly,\n presentation = \"stacked\",\n size = \"sm\",\n } = props;\n const [value, setValue] = useState(defaultValue);\n const [isExpanded, setIsExpanded] = useState(false);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const commit = (next: string) => {\n setValue(next);\n onChange(id, next);\n };\n\n const editor = (editorValue: string) => (\n <Box borderWidth=\"1px\" borderColor=\"border\" borderRadius=\"xs\" minH=\"7rem\" minW=\"0\" overflow=\"visible\" width=\"full\">\n <LazyMarkdownEditor\n defaultState={editorValue}\n isEditable={!readOnly}\n placeholder={placeholder}\n scrollable={false}\n onChange={commit}\n />\n </Box>\n );\n const label = <ParamEditorFieldLabel name={name} description={description} />;\n\n if (presentation === \"horizontal\") {\n if (readOnly) {\n return (\n <Box position=\"relative\" flex=\"1\" minW=\"12.5rem\">\n <Flex alignItems=\"center\" minHeight=\"2rem\">\n <ParamEditorReadOnlyValue preserveWhitespace>{value}</ParamEditorReadOnlyValue>\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box position=\"relative\" flex=\"1\" minW=\"12.5rem\">\n <Box position=\"relative\" minHeight=\"2rem\">\n {!isExpanded ? (\n <Input\n className=\"nodrag\"\n flex=\"1\"\n maxW=\"12.5rem\"\n size={size}\n type=\"text\"\n placeholder={name}\n value={value}\n onClick={() => {\n setIsExpanded(true);\n }}\n onChange={(event) => commit(event.target.value)}\n />\n ) : (\n <Box\n position=\"absolute\"\n top=\"0\"\n left=\"0\"\n right=\"0\"\n zIndex=\"10\"\n bg=\"bg\"\n borderWidth=\"1px\"\n borderColor=\"border\"\n borderRadius=\"lg\"\n p=\"2\"\n transition=\"border-color 0.2s ease-in-out\"\n _hover={{ borderColor: \"border.accent-light\" }}\n _focusWithin={{ borderColor: \"border.accent-light\" }}\n onKeyDown={(event) => {\n if (event.key === \"Escape\") {\n setIsExpanded(false);\n event.preventDefault();\n }\n }}\n >\n {editor(value)}\n </Box>\n )}\n </Box>\n </Box>\n );\n }\n\n return (\n <Stack gap=\"xs\" minW=\"0\" width=\"full\">\n {label}\n {editor(value)}\n </Stack>\n );\n};\n","import { NumberInput as ChakraNumberInput } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\nexport interface NumberInputProps extends ChakraNumberInput.RootProps {}\n\nexport const NumberInputRoot = React.forwardRef<HTMLDivElement, NumberInputProps>(function NumberInput(props, ref) {\n const { children, ...rest } = props;\n return (\n <ChakraNumberInput.Root ref={ref} variant=\"outline\" {...rest}>\n {children}\n <ChakraNumberInput.Control>\n <ChakraNumberInput.IncrementTrigger />\n <ChakraNumberInput.DecrementTrigger />\n </ChakraNumberInput.Control>\n </ChakraNumberInput.Root>\n );\n});\n\nexport const NumberInputField = ChakraNumberInput.Input;\n","import { Slider as ChakraSlider } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\nexport interface SliderProps extends ChakraSlider.RootProps {}\n\nexport const Slider = React.forwardRef<HTMLDivElement, SliderProps>(function Slider(props, ref) {\n const { children, ...rest } = props;\n\n return (\n <ChakraSlider.Root ref={ref} variant=\"solid\" {...rest}>\n <ChakraSlider.Control>\n <ChakraSlider.Track height=\"2px\" borderRadius=\"0\" bg=\"bg.muted\">\n <ChakraSlider.Range bg=\"fg\" />\n </ChakraSlider.Track>\n <ChakraSlider.Thumbs\n boxSize=\"0.5rem\"\n bg=\"fg\"\n borderWidth=\"1px\"\n borderColor=\"bg\"\n borderRadius=\"none\"\n boxShadow=\"none\"\n transition=\"width 0.12s ease, height 0.12s ease, border-color 0.2s ease-in-out\"\n _hover={{ boxSize: \"0.75rem\", borderColor: \"border.accent-light\" }}\n _active={{ boxSize: \"0.875rem\", borderColor: \"border.accent-light\" }}\n _focusVisible={{ borderColor: \"border.accent-light\", outline: \"none\", boxShadow: \"none\" }}\n />\n </ChakraSlider.Control>\n {children}\n </ChakraSlider.Root>\n );\n});\n","import { Box, Flex, type NumberInputValueChangeDetails, type SliderValueChangeDetails } from \"@chakra-ui/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { NumberInputField, NumberInputRoot } from \"@/components/primitives/number-input\";\nimport { Slider } from \"@/components/primitives/slider\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface NumberInputProps {\n id: string;\n defaultValue: number;\n name: string;\n step?: number;\n min?: number;\n max?: number;\n onChange: (id: string, value: number) => void;\n description: string;\n readOnly?: boolean;\n hideLabel?: boolean;\n hideSlider?: boolean;\n tooltipPlacement?: \"top\" | \"right\" | \"bottom\" | \"left\";\n fullWidth?: boolean;\n size?: \"xs\" | \"sm\";\n}\n\nexport const NumberInput = (props: NumberInputProps) => {\n const {\n id,\n defaultValue,\n name,\n step = 1,\n min,\n max,\n onChange,\n description,\n readOnly,\n hideLabel = false,\n hideSlider = false,\n fullWidth = false,\n size = \"sm\",\n } = props;\n const [value, setValue] = useState(defaultValue);\n const isRange = min !== undefined && max !== undefined;\n const showSlider = isRange && !hideSlider;\n const useFullWidthLayout = fullWidth && !showSlider;\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const scheduleChange = (nextValue: number) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, nextValue), 540);\n };\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n if (readOnly) {\n const valueElement = <ParamEditorReadOnlyValue>{value}</ParamEditorReadOnlyValue>;\n\n if (fullWidth) {\n return (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {valueElement}\n </Box>\n );\n }\n\n return (\n <Box>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n {valueElement}\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box>\n {useFullWidthLayout ? (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n <NumberInputRoot\n disabled={readOnly}\n width=\"100%\"\n size={size}\n value={`${value}`}\n step={step}\n min={min}\n max={max}\n onValueChange={(details: NumberInputValueChangeDetails) => {\n const next = Number.isNaN(details.valueAsNumber) ? (min ?? 0) : details.valueAsNumber;\n setValue(next);\n scheduleChange(next);\n }}\n >\n <NumberInputField\n className=\"nodrag\"\n readOnly={readOnly}\n placeholder={hideLabel ? name : undefined}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n </NumberInputRoot>\n </Box>\n ) : (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n <NumberInputRoot\n disabled={readOnly}\n width=\"5rem\"\n size={size}\n value={`${value}`}\n step={step}\n min={min}\n max={max}\n onValueChange={(details: NumberInputValueChangeDetails) => {\n const next = Number.isNaN(details.valueAsNumber) ? (min ?? 0) : details.valueAsNumber;\n setValue(next);\n scheduleChange(next);\n }}\n >\n <NumberInputField\n className=\"nodrag\"\n readOnly={readOnly}\n placeholder={hideLabel ? name : undefined}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n </NumberInputRoot>\n </Flex>\n )}\n {showSlider && (\n <Slider\n disabled={readOnly}\n value={[value]}\n step={step}\n min={min}\n max={max}\n onValueChange={(details: SliderValueChangeDetails) => {\n setValue(details.value[0]);\n }}\n onValueChangeEnd={(details: SliderValueChangeDetails) => {\n onChange(id, details.value[0]);\n }}\n />\n )}\n </Box>\n );\n};\n","/** Clamp `value` into the inclusive range, tolerating an inverted min/max. */\nexport const clampToRange = (value: number, min: number, max: number) => {\n const lower = Math.min(min, max);\n const upper = Math.max(min, max);\n if (value < lower) return lower;\n if (value > upper) return upper;\n return value;\n};\n\n/** Snap `value` to the nearest multiple of `step` measured from `origin`. */\nexport const snapToStep = (value: number, step: number, origin = 0) => {\n if (!(step > 0)) return value;\n const steps = Math.round((value - origin) / step);\n return origin + steps * step;\n};\n\n/** Format a number with an optional unit suffix, trimming float noise. */\nexport const formatUnitValue = (value: number, unit?: string) => {\n const rounded = Number.isInteger(value) ? `${value}` : `${Number(value.toFixed(3))}`;\n return unit ? `${rounded}${unit}` : rounded;\n};\n","import type { RangeValue } from \"../param-editor.types\";\nimport { clampToRange, snapToStep } from \"./numeric-value\";\n\n/** Order both handles and clamp (and optionally snap) them into `[min, max]`. */\nexport const normalizeRange = (value: RangeValue, min: number, max: number, step?: number): RangeValue => {\n const first = clampToRange(value[0], min, max);\n const second = clampToRange(value[1], min, max);\n let start = Math.min(first, second);\n let end = Math.max(first, second);\n if (step && step > 0) {\n start = clampToRange(snapToStep(start, step, min), min, max);\n end = clampToRange(snapToStep(end, step, min), min, max);\n }\n return [start, end];\n};\n\n/** Replace a single handle, keeping the pair ordered. */\nexport const updateRangeHandle = (\n value: RangeValue,\n index: 0 | 1,\n next: number,\n min: number,\n max: number,\n step?: number,\n): RangeValue => {\n const draft: RangeValue = index === 0 ? [next, value[1]] : [value[0], next];\n return normalizeRange(draft, min, max, step);\n};\n","import { Box, Flex } from \"@chakra-ui/react\";\n\ninterface SliderMarksProps {\n count?: number;\n}\n\n// Evenly-spaced tick marks rendered under a slider track. Purely decorative.\nexport const SliderMarks = (props: SliderMarksProps) => {\n const { count } = props;\n if (!count || count < 2) return null;\n const positions = Array.from({ length: count }, (_, index) => index / (count - 1));\n\n return (\n <Flex justifyContent=\"space-between\" mt=\"2xs\" aria-hidden=\"true\">\n {positions.map((position) => (\n <Box key={position} width=\"1px\" height=\"0.375rem\" bg=\"border.subtle\" />\n ))}\n </Flex>\n );\n};\n","import { Box, Button, Flex, Icon, Popover, type SliderValueChangeDetails, Stack, Text } from \"@chakra-ui/react\";\nimport { ChevronDown } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport { Slider } from \"@/components/primitives/slider\";\nimport type { RangeValue } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\nimport { formatUnitValue } from \"./numeric-value\";\nimport { normalizeRange } from \"./range-value\";\nimport { SliderMarks } from \"./slider-marks\";\n\ninterface RangeInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: RangeValue;\n min: number;\n max: number;\n step?: number;\n unit?: string;\n markerCount?: number;\n onChange: (id: string, value: RangeValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n presentation?: \"stacked\" | \"horizontal\";\n}\n\nexport const RangeInput = (props: RangeInputProps) => {\n const {\n id,\n name,\n description,\n defaultValue,\n min,\n max,\n step = 1,\n unit,\n markerCount,\n onChange,\n readOnly,\n fullWidth,\n presentation = \"stacked\",\n } = props;\n\n const [value, setValue] = useState<RangeValue>(() => normalizeRange(defaultValue, min, max, step));\n\n useEffect(() => {\n setValue(normalizeRange(defaultValue, min, max, step));\n }, [defaultValue, min, max, step]);\n\n const label = `${formatUnitValue(value[0], unit)} – ${formatUnitValue(value[1], unit)}`;\n const horizontal = presentation === \"horizontal\";\n\n if (readOnly) {\n if (horizontal) {\n return <ParamEditorReadOnlyValue>{label}</ParamEditorReadOnlyValue>;\n }\n\n return (\n <ParamEditorControlItem name={name} description={description} fullWidth={fullWidth}>\n <ParamEditorReadOnlyValue>{label}</ParamEditorReadOnlyValue>\n </ParamEditorControlItem>\n );\n }\n\n const trailing = (\n <Text textStyle=\"label/S/regular\" color=\"fg.muted\" whiteSpace=\"nowrap\">\n {label}\n </Text>\n );\n const slider = (\n <Box>\n <Slider\n size=\"sm\"\n value={value}\n min={min}\n max={max}\n step={step}\n onValueChange={(details: SliderValueChangeDetails) =>\n setValue(normalizeRange(details.value as RangeValue, min, max, step))\n }\n onValueChangeEnd={(details: SliderValueChangeDetails) => {\n const next = normalizeRange(details.value as RangeValue, min, max, step);\n setValue(next);\n onChange(id, next);\n }}\n />\n <SliderMarks count={markerCount} />\n </Box>\n );\n\n if (horizontal) {\n return (\n <Popover.Root positioning={{ placement: \"bottom-start\", offset: { mainAxis: 4 } }}>\n <Popover.Trigger asChild>\n <Button size=\"xs\" variant=\"ghost\" aria-label={`${name}: ${label}`}>\n {label}\n <Icon as={ChevronDown} boxSize=\"14px\" />\n </Button>\n </Popover.Trigger>\n <Popover.Positioner>\n <Popover.Content width=\"60\" padding=\"sm\" background=\"bg\">\n <Stack gap=\"xs\">\n <Flex alignItems=\"center\" justifyContent=\"space-between\" gap=\"xs\">\n <Text textStyle=\"label/S/medium\">{name}</Text>\n {trailing}\n </Flex>\n {slider}\n </Stack>\n </Popover.Content>\n </Popover.Positioner>\n </Popover.Root>\n );\n }\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation=\"stacked\" labelTrailing={trailing}>\n {slider}\n </ParamEditorControlItem>\n );\n};\n","import { Icon, Text, Wrap } from \"@chakra-ui/react\";\nimport { Chip } from \"../../primitives/chip\";\nimport { getIconComponent } from \"../../primitives/icon-options\";\nimport { ResourceBadge } from \"../../primitives/resource-badge\";\nimport type { ResourceOption, ResourceRefValue } from \"../param-editor.types\";\n\nconst optionIcon = (option: ResourceOption) => (\n <Icon as={getIconComponent(option.icon)} boxSize=\"14px\" color={option.color ? `${option.color}.500` : \"fg.muted\"} />\n);\n\nconst openExternal = (href: string) => window.open(href, \"_blank\", \"noreferrer\");\n\nconst copyToClipboard = (text: string) => void navigator.clipboard?.writeText(text).catch(() => undefined);\n\ninterface ResourceChipProps {\n option: ResourceOption;\n onOpenResource?: (ref: ResourceRefValue) => void;\n onRemove?: () => void;\n}\n\n// A chip opens its external href in a new tab, opens its internal ref via the host, or\n// copies its text to the clipboard — whichever the option declares.\nexport const ResourceChip = (props: ResourceChipProps) => {\n const { option, onOpenResource, onRemove } = props;\n const isReference = Boolean(option.href || option.ref || option.copyText);\n\n if (!isReference) {\n return <Chip>{option.name}</Chip>;\n }\n\n const handleSelect =\n option.href && option.href.length > 0\n ? () => openExternal(option.href!)\n : option.ref && onOpenResource\n ? () => onOpenResource(option.ref!)\n : option.copyText\n ? () => copyToClipboard(option.copyText!)\n : undefined;\n\n return (\n <ResourceBadge\n fileName={option.name}\n icon={optionIcon(option)}\n size=\"md\"\n onSelect={handleSelect ? () => handleSelect() : undefined}\n onRemove={onRemove ? () => onRemove() : undefined}\n />\n );\n};\n\ninterface ResourceChipListProps {\n options: ResourceOption[];\n onOpenResource?: (ref: ResourceRefValue) => void;\n onRemove?: (optionId: string) => void;\n emptyText?: string;\n}\n\nexport const ResourceChipList = (props: ResourceChipListProps) => {\n const { options, onOpenResource, onRemove, emptyText } = props;\n\n if (options.length === 0) {\n return (\n <Text textStyle=\"label/S/regular\" color=\"fg.muted\">\n {emptyText ?? \"None\"}\n </Text>\n );\n }\n\n return (\n <Wrap gap=\"2xs\">\n {options.map((option) => (\n <ResourceChip\n key={option.id}\n option={option}\n onOpenResource={onOpenResource}\n onRemove={onRemove ? () => onRemove(option.id) : undefined}\n />\n ))}\n </Wrap>\n );\n};\n","import { Box, Flex, Icon, Stack } from \"@chakra-ui/react\";\nimport { Plus } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { getIconComponent } from \"../../primitives/icon-options\";\nimport type { ResourceOption, ResourceRefValue } from \"../param-editor.types\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ResourceChipList } from \"./resource-input-chips\";\nimport { SelectionMenu } from \"./selection-menu\";\n\ninterface ResourceInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: string | string[];\n options: ResourceOption[];\n onChange: (id: string, value: string | string[]) => void;\n onOpenResource?: (ref: ResourceRefValue) => void;\n readOnly?: boolean;\n editable?: boolean;\n multiSelect?: boolean;\n placeholder?: string;\n emptyText?: string;\n fullWidth?: boolean;\n presentation?: \"stacked\" | \"horizontal\";\n size?: \"xs\" | \"sm\";\n}\n\nconst toIds = (value: string | string[]) => {\n if (Array.isArray(value)) return value;\n return value ? [value] : [];\n};\n\nconst resolveOptions = (ids: string[], options: ResourceOption[]) =>\n ids\n .map((id) => options.find((option) => option.id === id))\n .filter((option): option is ResourceOption => Boolean(option));\n\ninterface FieldShellProps {\n fullWidth: boolean;\n label: ReactNode;\n control: ReactNode;\n presentation: \"stacked\" | \"horizontal\";\n}\n\nconst FieldShell = (props: FieldShellProps) => {\n const { fullWidth, label, control, presentation } = props;\n\n if (presentation === \"horizontal\") {\n return (\n <Stack gap=\"2xs\" alignItems=\"start\" minW=\"0\">\n {label}\n {control}\n </Stack>\n );\n }\n\n if (fullWidth) {\n return (\n <Box>\n <Box mb=\"xs\">{label}</Box>\n {control}\n </Box>\n );\n }\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {label}\n {control}\n </Flex>\n );\n};\n\ninterface ResourceSelectMenuProps {\n triggerLabel: ReactNode;\n options: ResourceOption[];\n selectedIds: string[];\n multiSelect: boolean;\n triggerVariant?: \"button\" | \"icon\";\n triggerAriaLabel?: string;\n size?: \"xs\" | \"sm\";\n onToggle: (optionId: string) => void;\n}\n\n// Resource params share the editor's one dropdown, so a ticket property and a\n// command param cannot drift into two looks.\nconst ResourceSelectMenu = (props: ResourceSelectMenuProps) => {\n const { triggerLabel, options, selectedIds, multiSelect, triggerVariant, triggerAriaLabel, size, onToggle } = props;\n\n return (\n <SelectionMenu\n triggerLabel={triggerLabel}\n options={options}\n selectedIds={selectedIds}\n multiSelect={multiSelect}\n triggerVariant={triggerVariant}\n triggerAriaLabel={triggerAriaLabel}\n size={size}\n onToggle={onToggle}\n />\n );\n};\n\nexport const ResourceInput = (props: ResourceInputProps) => {\n const {\n id,\n name,\n description,\n defaultValue,\n options,\n onChange,\n onOpenResource,\n readOnly,\n editable = false,\n multiSelect = false,\n placeholder,\n emptyText,\n fullWidth = false,\n presentation = \"stacked\",\n size = \"sm\",\n } = props;\n\n const [value, setValue] = useState(defaultValue);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const emitChange = (next: string | string[]) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n onChange(id, next);\n };\n\n // Debounce multi-select toggles so a burst of menu clicks makes one update call.\n const scheduleChange = (next: string | string[]) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, next), 540);\n };\n\n const selectedIds = toIds(value);\n const selectedOptions = resolveOptions(selectedIds, options);\n const interactive = editable && !readOnly;\n\n const label = <ParamEditorLabel name={name} description={description} compact={presentation === \"horizontal\"} />;\n\n if (!interactive) {\n return (\n <FieldShell\n fullWidth={fullWidth}\n label={label}\n presentation={presentation}\n control={<ResourceChipList options={selectedOptions} onOpenResource={onOpenResource} emptyText={emptyText} />}\n />\n );\n }\n\n const toggleOption = (optionId: string) => {\n if (multiSelect) {\n const next = selectedIds.includes(optionId)\n ? selectedIds.filter((entry) => entry !== optionId)\n : [...selectedIds, optionId];\n setValue(next);\n scheduleChange(next);\n return;\n }\n // Re-picking the selected option clears it.\n const next = selectedIds.includes(optionId) ? \"\" : optionId;\n setValue(next);\n emitChange(next);\n };\n\n const removeOption = (optionId: string) => {\n const next = selectedIds.filter((entry) => entry !== optionId);\n setValue(next);\n scheduleChange(next);\n };\n\n if (multiSelect) {\n const control = (\n <Flex gap=\"2xs\" alignItems=\"center\" flexWrap=\"wrap\" minW=\"0\">\n {selectedOptions.length > 0 ? (\n <ResourceChipList\n options={selectedOptions}\n onOpenResource={onOpenResource}\n onRemove={removeOption}\n emptyText={emptyText}\n />\n ) : null}\n <ResourceSelectMenu\n triggerLabel={<Icon as={Plus} boxSize=\"12px\" />}\n options={options}\n selectedIds={selectedIds}\n multiSelect\n triggerVariant=\"icon\"\n triggerAriaLabel={placeholder ?? `Add ${name}`}\n size={size}\n onToggle={toggleOption}\n />\n </Flex>\n );\n\n return <FieldShell fullWidth={fullWidth} label={label} control={control} presentation={presentation} />;\n }\n\n const selected = selectedOptions[0];\n const triggerLabel = selected ? (\n <Flex align=\"center\" gap=\"2xs\" minW=\"0\">\n <Icon\n as={getIconComponent(selected.icon)}\n boxSize=\"14px\"\n color={selected.color ? `${selected.color}.500` : \"fg.muted\"}\n />\n {selected.name}\n </Flex>\n ) : (\n (placeholder ?? \"Select\")\n );\n\n return (\n <FieldShell\n fullWidth={fullWidth}\n label={label}\n presentation={presentation}\n control={\n <ResourceSelectMenu\n triggerLabel={triggerLabel}\n options={options}\n selectedIds={selectedIds}\n multiSelect={false}\n size={size}\n onToggle={toggleOption}\n />\n }\n />\n );\n};\n","import { Box, Button, Group } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport type { SegmentedOption } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\nimport { SelectionMenu } from \"./selection-menu\";\n\ninterface SegmentedInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: string;\n options: SegmentedOption[];\n variant?: \"default\" | \"dots\";\n onChange: (id: string, value: string) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n presentation?: \"stacked\" | \"horizontal\";\n}\n\nexport const SegmentedInput = (props: SegmentedInputProps) => {\n const {\n id,\n name,\n description,\n defaultValue,\n options,\n variant = \"default\",\n onChange,\n readOnly,\n fullWidth,\n presentation = \"stacked\",\n } = props;\n const [value, setValue] = useState(defaultValue);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const select = (next: string) => {\n setValue(next);\n onChange(id, next);\n };\n\n const selectedName = options.find((option) => option.id === value)?.name ?? value;\n const horizontal = presentation === \"horizontal\";\n\n if (readOnly) {\n return (\n <ParamEditorControlItem name={name} description={description} hideLabel={horizontal} fullWidth={fullWidth}>\n <ParamEditorReadOnlyValue>{selectedName}</ParamEditorReadOnlyValue>\n </ParamEditorControlItem>\n );\n }\n\n if (horizontal) {\n return (\n <SelectionMenu\n triggerLabel={selectedName}\n options={options}\n selectedIds={[value]}\n multiSelect={false}\n onToggle={select}\n />\n );\n }\n\n const group = (\n <Group\n attached\n width=\"full\"\n borderWidth=\"1px\"\n borderColor=\"border\"\n borderRadius=\"xs\"\n overflow=\"hidden\"\n transition=\"border-color 0.2s ease-in-out\"\n _hover={{ borderColor: \"border.accent-light\" }}\n _active={{ borderColor: \"border.accent-light\" }}\n _focusWithin={{ borderColor: \"border.accent-light\", boxShadow: \"none\" }}\n >\n {options.map((option) => {\n const selected = option.id === value;\n return (\n <Button\n key={option.id}\n flex=\"1\"\n size=\"xs\"\n variant={selected ? \"subtle\" : \"ghost\"}\n borderRadius=\"0\"\n aria-pressed={selected}\n onClick={() => select(option.id)}\n >\n {variant === \"dots\" ? (\n <Box boxSize=\"0.5rem\" borderRadius=\"full\" bg={option.indicatorColor ?? \"fg.muted\"} mr=\"1\" />\n ) : null}\n {option.name}\n </Button>\n );\n })}\n </Group>\n );\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation=\"stacked\">\n {group}\n </ParamEditorControlItem>\n );\n};\n","import { Box, Flex } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport type { SelectionGroup } from \"../param-editor.types\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\nimport { SelectionMenu, type SelectionMenuOption, selectionOptionIcon } from \"./selection-menu\";\n\ninterface SelectionInputProps {\n id: string;\n defaultValue: string | string[];\n name: string;\n options: SelectionMenuOption[];\n onChange: (id: string, value: string | string[]) => void;\n description: string;\n readOnly?: boolean;\n hideLabel?: boolean;\n multiSelect?: boolean;\n tooltipPlacement?: \"top\" | \"right\" | \"bottom\" | \"left\";\n placeholder?: string;\n fullWidth?: boolean;\n /** Re-picking the selected option clears it. */\n clearable?: boolean;\n /** Inert, but still rendered as a control. */\n disabled?: boolean;\n searchable?: boolean;\n searchPlaceholder?: string;\n emptyText?: string;\n group?: SelectionGroup;\n size?: \"xs\" | \"sm\";\n}\n\nexport const SelectionInput = (props: SelectionInputProps) => {\n const {\n id,\n defaultValue,\n name,\n options,\n onChange,\n description,\n readOnly,\n hideLabel = false,\n multiSelect = false,\n placeholder,\n fullWidth = false,\n clearable = false,\n disabled = false,\n searchable = false,\n searchPlaceholder,\n emptyText,\n group,\n size = \"sm\",\n } = props;\n const [value, setValue] = useState(defaultValue);\n const [groupValue, setGroupValue] = useState(group?.defaultValue ?? \"\");\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n useEffect(() => {\n setGroupValue(group?.defaultValue ?? \"\");\n }, [group?.defaultValue]);\n\n const selectedIds = multiSelect\n ? Array.isArray(value)\n ? value\n : []\n : typeof value === \"string\" && value\n ? [value]\n : [];\n\n const getDisplayText = () => {\n const names = selectedIds\n .map((selectedId) => options.find((option) => option.id === selectedId)?.name)\n .filter((optionName): optionName is string => Boolean(optionName));\n\n if (names.length === 0) return placeholder || \"Select\";\n if (names.length <= 3) return names.join(\", \");\n return `${names.slice(0, 3).join(\", \")} +${(names.length - 3).toString()}`;\n };\n\n const commit = (nextValue: string | string[]) => {\n setValue(nextValue);\n onChange(id, nextValue);\n };\n\n const handleToggle = (optionId: string) => {\n if (!multiSelect) {\n // Re-picking the selected option clears it, so a single-select needs no\n // extra \"none\" row cluttering the list.\n commit(clearable && selectedIds.includes(optionId) ? \"\" : optionId);\n return;\n }\n commit(\n selectedIds.includes(optionId) ? selectedIds.filter((item) => item !== optionId) : [...selectedIds, optionId],\n );\n };\n\n const handleGroupChange = (optionId: string) => {\n if (!group || optionId === groupValue) return;\n setGroupValue(optionId);\n onChange(group.id, optionId);\n };\n\n // Only a lone selection can colour the trigger; a multi-pick has no single icon.\n const triggerOption = selectedIds.length === 1 ? options.find((option) => option.id === selectedIds[0]) : undefined;\n const label = !hideLabel ? <ParamEditorLabel name={name} description={description} /> : null;\n\n if (readOnly) {\n const valueElement = <ParamEditorReadOnlyValue>{getDisplayText()}</ParamEditorReadOnlyValue>;\n\n if (fullWidth)\n return (\n <Box>\n {label ? <Box mb=\"xs\">{label}</Box> : null}\n {valueElement}\n </Box>\n );\n\n return (\n <Box>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {label}\n {valueElement}\n </Flex>\n </Box>\n );\n }\n\n const menu = (\n <SelectionMenu\n triggerLabel={\n <>\n {selectionOptionIcon(triggerOption, \"14px\")}\n {getDisplayText()}\n </>\n }\n options={options}\n selectedIds={selectedIds}\n multiSelect={multiSelect}\n disabled={disabled}\n searchable={searchable}\n searchPlaceholder={searchPlaceholder}\n emptyText={emptyText}\n group={group ? { ...group, defaultValue: groupValue } : undefined}\n fullWidth={fullWidth}\n size={size}\n onToggle={handleToggle}\n onGroupChange={handleGroupChange}\n />\n );\n\n if (fullWidth)\n return (\n <Box>\n {label ? <Box mb=\"xs\">{label}</Box> : null}\n {menu}\n </Box>\n );\n\n return (\n <Box>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {label}\n {menu}\n </Flex>\n </Box>\n );\n};\n","import { Box, Flex, Input, Textarea } from \"@chakra-ui/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface TextInputProps {\n id: string;\n defaultValue: string;\n name: string;\n onChange: (id: string, value: string) => void;\n description: string;\n readOnly?: boolean;\n singleLine?: boolean;\n hideLabel?: boolean;\n fullWidth?: boolean;\n size?: \"xs\" | \"sm\";\n}\n\nexport const TextInput = (props: TextInputProps) => {\n const {\n id,\n defaultValue,\n name,\n onChange,\n description,\n readOnly,\n singleLine = true,\n hideLabel = false,\n fullWidth = false,\n size = \"sm\",\n } = props;\n const [value, setValue] = useState(defaultValue);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const scheduleChange = (nextValue: string) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, nextValue), 540);\n };\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const handleChange = (newValue: string) => {\n setValue(newValue);\n scheduleChange(newValue);\n };\n\n // Leaving the field is a commit: a form submitted inside the debounce window\n // would otherwise send the value as it was before the last keystrokes.\n const handleBlur = () => {\n if (!timeoutRef.current) return;\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n onChange(id, value);\n };\n\n if (readOnly) {\n const valueElement = <ParamEditorReadOnlyValue preserveWhitespace={!singleLine}>{value}</ParamEditorReadOnlyValue>;\n\n if (singleLine && !fullWidth) {\n return (\n <Box>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n {valueElement}\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {valueElement}\n </Box>\n );\n }\n\n return (\n <Box>\n {singleLine && !fullWidth ? (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n <Input\n className=\"nodrag\"\n readOnly={readOnly}\n flex=\"1\"\n maxW=\"12.5rem\"\n size={size}\n type=\"text\"\n placeholder={hideLabel ? name : undefined}\n value={value}\n onChange={(e) => handleChange(e.target.value)}\n onBlur={handleBlur}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n </Flex>\n ) : (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {singleLine ? (\n <Input\n className=\"nodrag\"\n readOnly={readOnly}\n width=\"100%\"\n size={size}\n type=\"text\"\n placeholder={hideLabel ? name : undefined}\n value={value}\n onChange={(e) => handleChange(e.target.value)}\n onBlur={handleBlur}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n ) : (\n <Textarea\n className=\"nodrag\"\n readOnly={readOnly}\n width=\"100%\"\n size={size}\n placeholder={hideLabel ? name : undefined}\n value={value}\n onChange={(e) => handleChange(e.target.value)}\n onBlur={handleBlur}\n rows={3}\n resize=\"vertical\"\n />\n )}\n </Box>\n )}\n </Box>\n );\n};\n","import { Flex, type FlexProps } from \"@chakra-ui/react\";\n\ninterface ParamEditorInlineGroupProps extends FlexProps {}\n\n// A horizontal row of controls that share a line (e.g. paired x/y inputs).\nexport const ParamEditorInlineGroup = (props: ParamEditorInlineGroupProps) => {\n const { children, ...rest } = props;\n\n return (\n <Flex alignItems=\"center\" gap=\"xs\" minW=\"0\" {...rest}>\n {children}\n </Flex>\n );\n};\n","import type { VectorValue } from \"../param-editor.types\";\nimport { clampToRange } from \"./numeric-value\";\n\nexport interface VectorBounds {\n min?: number;\n max?: number;\n}\n\nconst clampAxis = (value: number, bounds: VectorBounds) => {\n if (bounds.min === undefined && bounds.max === undefined) return value;\n const min = bounds.min ?? Number.NEGATIVE_INFINITY;\n const max = bounds.max ?? Number.POSITIVE_INFINITY;\n return clampToRange(value, min, max);\n};\n\n/** Update a single axis without dropping the other, clamping into optional bounds. */\nexport const updateVectorAxis = (\n value: VectorValue,\n axis: \"x\" | \"y\",\n next: number,\n bounds: VectorBounds = {},\n): VectorValue => {\n const clamped = clampAxis(next, bounds);\n return axis === \"x\" ? { x: clamped, y: value.y } : { x: value.x, y: clamped };\n};\n","import { Flex, Text } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport type { VectorValue } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { ParamEditorInlineGroup } from \"../param-editor-inline-group\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\nimport { NumberInput } from \"./number-input\";\nimport { updateVectorAxis } from \"./vector-value\";\n\ninterface VectorInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: VectorValue;\n xLabel?: string;\n yLabel?: string;\n min?: number;\n max?: number;\n step?: number;\n onChange: (id: string, value: VectorValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n}\n\ninterface VectorAxisFieldProps {\n label: string;\n fieldId: string;\n value: number;\n min?: number;\n max?: number;\n step?: number;\n onCommit: (value: number) => void;\n}\n\n// A single axis: the shared NumberInput (label/slider hidden) prefixed with its axis letter.\nconst VectorAxisField = (props: VectorAxisFieldProps) => {\n const { label, fieldId, value, min, max, step, onCommit } = props;\n\n return (\n <Flex alignItems=\"center\" gap=\"1\" flexShrink={0}>\n <Text textStyle=\"label/XS/regular\" color=\"fg.muted\" width=\"1rem\" flexShrink={0}>\n {label}\n </Text>\n <NumberInput\n id={fieldId}\n name={label}\n description=\"\"\n defaultValue={value}\n min={min}\n max={max}\n step={step}\n hideLabel\n hideSlider\n onChange={(_, next) => onCommit(next)}\n />\n </Flex>\n );\n};\n\nexport const VectorInput = (props: VectorInputProps) => {\n const {\n id,\n name,\n description,\n defaultValue,\n xLabel = \"X\",\n yLabel = \"Y\",\n min,\n max,\n step = 1,\n onChange,\n readOnly,\n } = props;\n const [value, setValue] = useState<VectorValue>(defaultValue);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const commitAxis = (axis: \"x\" | \"y\", next: number) => {\n const updated = updateVectorAxis(value, axis, next, { min, max });\n setValue(updated);\n onChange(id, updated);\n };\n\n if (readOnly) {\n return (\n <ParamEditorControlItem name={name} description={description}>\n <ParamEditorReadOnlyValue>{`${value.x}, ${value.y}`}</ParamEditorReadOnlyValue>\n </ParamEditorControlItem>\n );\n }\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation=\"stacked\">\n <ParamEditorInlineGroup>\n <VectorAxisField\n label={xLabel}\n fieldId={`${id}.x`}\n value={value.x}\n min={min}\n max={max}\n step={step}\n onCommit={(next) => commitAxis(\"x\", next)}\n />\n <VectorAxisField\n label={yLabel}\n fieldId={`${id}.y`}\n value={value.y}\n min={min}\n max={max}\n step={step}\n onCommit={(next) => commitAxis(\"y\", next)}\n />\n </ParamEditorInlineGroup>\n </ParamEditorControlItem>\n );\n};\n","import type { ParamValueMap } from \"./param-editor.types\";\n\nexport const resolveParamValue = <T>(defaultValues: ParamValueMap, paramId: string, fallback: T) =>\n defaultValues[paramId] === undefined ? fallback : (defaultValues[paramId] as T);\n","import { ActionInput } from \"./inputs/action-input\";\nimport { AnchorGridInput } from \"./inputs/anchor-grid-input\";\nimport { FileUploadInput } from \"./inputs/file-upload-input\";\nimport { RangeInput } from \"./inputs/range-input\";\nimport { SegmentedInput } from \"./inputs/segmented-input\";\nimport { VectorInput } from \"./inputs/vector-input\";\nimport type { Param, ParamValue, ParamValueMap } from \"./param-editor.types\";\nimport { resolveParamValue } from \"./resolve-param-value\";\n\ntype AdvancedParam = Extract<\n Param,\n { type: \"range\" | \"segmented\" | \"actions\" | \"anchorGrid\" | \"vector\" | \"fileUpload\" }\n>;\n\ninterface ParamEditorAdvancedFieldProps {\n param: AdvancedParam;\n defaultValues: ParamValueMap;\n onChange: (id: string, value: ParamValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n presentation: \"stacked\" | \"horizontal\";\n}\n\nexport const ParamEditorAdvancedField = (props: ParamEditorAdvancedFieldProps) => {\n const { param, defaultValues, onChange, readOnly, fullWidth, presentation } = props;\n const common = {\n id: param.id,\n readOnly: readOnly || param.readOnly,\n onChange,\n fullWidth: presentation === \"horizontal\" ? false : fullWidth,\n };\n\n switch (param.type) {\n case \"range\":\n return (\n <RangeInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n min={param.min}\n max={param.max}\n step={param.step}\n unit={param.unit}\n markerCount={param.markerCount}\n presentation={presentation}\n />\n );\n case \"segmented\":\n return (\n <SegmentedInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n options={param.options}\n variant={param.variant}\n presentation={presentation}\n />\n );\n case \"actions\":\n return (\n <ActionInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n options={param.options}\n presentation={presentation}\n />\n );\n case \"anchorGrid\":\n if (presentation === \"horizontal\") return null;\n return (\n <AnchorGridInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n />\n );\n case \"vector\":\n return (\n <VectorInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n xLabel={param.xLabel}\n yLabel={param.yLabel}\n min={param.min}\n max={param.max}\n step={param.step}\n />\n );\n case \"fileUpload\":\n return (\n <FileUploadInput\n id={param.id}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n accept={param.accept}\n multiple={param.multiple}\n uploadLabel={param.uploadLabel}\n readOnly={common.readOnly}\n presentation={presentation}\n onChange={onChange}\n />\n );\n }\n};\n","import type { Param } from \"./param-editor.types\";\n\nexport const isParamEditorRichControl = (param: Param) => param.type === \"fileUpload\";\n\nexport const isParamEditorHorizontalControl = (param: Param) => param.type !== \"anchorGrid\";\n","import { Badge, HStack, Image } from \"@chakra-ui/react\";\nimport type { Param } from \"./param-editor.types\";\nimport { ParamEditorControlItem } from \"./param-editor-control-item\";\nimport { ParamEditorReadOnlyValue } from \"./param-editor-read-only-value\";\n\ninterface ParamEditorReadOnlyFieldProps {\n param: Extract<Param, { type: \"readOnly\" }>;\n fullWidth?: boolean;\n}\n\nconst formatPrimitive = (value: string | number | boolean | null) => {\n if (value === null || value === \"\") return \"Not provided\";\n return String(value);\n};\n\nconst ReadOnlyContent = (props: Pick<ParamEditorReadOnlyFieldProps[\"param\"], \"value\">) => {\n const { value } = props;\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return <ParamEditorReadOnlyValue color=\"fg.muted\">None</ParamEditorReadOnlyValue>;\n }\n\n return (\n <HStack gap=\"2xs\" flexWrap=\"wrap\">\n {value.map((item, index) => (\n <Badge key={`${String(item)}-${index}`} variant=\"subtle\" colorPalette=\"gray\">\n {formatPrimitive(item)}\n </Badge>\n ))}\n </HStack>\n );\n }\n\n if (typeof value === \"object\" && value !== null) {\n const images = value.type === \"image\" ? [{ src: value.src, alt: value.alt }] : value.images;\n return (\n <HStack gap=\"2xs\" flexWrap=\"wrap\">\n {images.map((image) => (\n <Image\n key={`${image.src}-${image.alt}`}\n src={image.src}\n alt={image.alt}\n width=\"96px\"\n height=\"72px\"\n borderRadius=\"sm\"\n borderWidth=\"1px\"\n borderColor=\"border.subtle\"\n objectFit=\"cover\"\n />\n ))}\n </HStack>\n );\n }\n\n if (typeof value === \"boolean\") {\n return <ParamEditorReadOnlyValue>{formatPrimitive(value)}</ParamEditorReadOnlyValue>;\n }\n\n return (\n <ParamEditorReadOnlyValue color={value === null || value === \"\" ? \"fg.muted\" : \"fg\"}>\n {formatPrimitive(value)}\n </ParamEditorReadOnlyValue>\n );\n};\n\nexport const ParamEditorReadOnlyField = (props: ParamEditorReadOnlyFieldProps) => {\n const { param, fullWidth } = props;\n\n return (\n <ParamEditorControlItem name={param.name} description={param.description} fullWidth={fullWidth}>\n <ReadOnlyContent value={param.value} />\n </ParamEditorControlItem>\n );\n};\n","import { Box, Flex } from \"@chakra-ui/react\";\nimport { BooleanInput } from \"./inputs/boolean-input\";\nimport { ColorInput } from \"./inputs/color-input\";\nimport { DateInput } from \"./inputs/date-input\";\nimport { HorizontalTextInput } from \"./inputs/horizontal-text-input\";\nimport { MarkdownInput } from \"./inputs/markdown-input\";\nimport { NumberInput } from \"./inputs/number-input\";\nimport { ResourceInput } from \"./inputs/resource-input\";\nimport { SelectionInput } from \"./inputs/selection-input\";\nimport { TextInput } from \"./inputs/text-input\";\nimport type { Param, ParamValue, ParamValueMap, ResourceRefValue } from \"./param-editor.types\";\nimport { ParamEditorAdvancedField } from \"./param-editor-advanced-field\";\nimport { ParamEditorLabel } from \"./param-editor-label\";\nimport { isParamEditorRichControl } from \"./param-editor-presentation\";\nimport { ParamEditorReadOnlyField } from \"./param-editor-read-only-field\";\nimport { ParamEditorReadOnlyValue } from \"./param-editor-read-only-value\";\nimport { resolveParamValue } from \"./resolve-param-value\";\n\ninterface ParamEditorFieldProps {\n param: Param;\n defaultValues: ParamValueMap;\n onChange: (id: string, value: ParamValue) => void;\n onOpenResource?: (ref: ResourceRefValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n presentation?: \"stacked\" | \"horizontal\";\n size?: \"xs\" | \"sm\";\n}\n\nconst PropertyField = (props: { param: Extract<Param, { type: \"property\" }>; fullWidth?: boolean }) => {\n const { param, fullWidth } = props;\n\n if (fullWidth) {\n return (\n <Box>\n <Box mb=\"xs\">\n <ParamEditorLabel name={param.name} description={param.description} />\n </Box>\n <ParamEditorReadOnlyValue>{param.value}</ParamEditorReadOnlyValue>\n </Box>\n );\n }\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n <ParamEditorLabel name={param.name} description={param.description} />\n <ParamEditorReadOnlyValue>{param.value}</ParamEditorReadOnlyValue>\n </Flex>\n );\n};\n\nexport const ParamEditorField = (props: ParamEditorFieldProps) => {\n const {\n param,\n defaultValues,\n onChange,\n onOpenResource,\n readOnly,\n fullWidth = false,\n presentation = \"stacked\",\n size = \"sm\",\n } = props;\n const horizontal = presentation === \"horizontal\";\n const richControl = isParamEditorRichControl(param);\n const common = {\n id: param.id,\n readOnly: readOnly || param.readOnly,\n onChange,\n fullWidth: horizontal ? richControl : fullWidth,\n size,\n };\n\n switch (param.type) {\n case \"number\":\n return (\n <NumberInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n min={param.min}\n max={param.max}\n step={param.step}\n hideLabel={horizontal}\n hideSlider={horizontal}\n />\n );\n case \"boolean\":\n return (\n <BooleanInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n hideLabel={horizontal}\n />\n );\n case \"text\":\n if (horizontal) {\n return (\n <HorizontalTextInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n hideLabel\n />\n );\n }\n return (\n <TextInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n singleLine={param.singleLine}\n />\n );\n case \"markdown\":\n return (\n <MarkdownInput\n id={param.id}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n placeholder={param.placeholder}\n readOnly={common.readOnly}\n presentation={presentation}\n size={size}\n onChange={onChange}\n />\n );\n case \"selection\":\n return (\n <SelectionInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n options={param.options}\n multiSelect={param.multiSelect}\n placeholder={param.placeholder}\n clearable={param.clearable}\n disabled={param.disabled}\n searchable={param.searchable}\n searchPlaceholder={param.searchPlaceholder}\n emptyText={param.emptyText}\n group={\n param.group\n ? {\n ...param.group,\n defaultValue: resolveParamValue(defaultValues, param.group.id, param.group.defaultValue),\n }\n : undefined\n }\n hideLabel={horizontal}\n />\n );\n case \"date\":\n return (\n <DateInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n min={param.min}\n max={param.max}\n hideLabel={horizontal}\n />\n );\n case \"color\":\n return (\n <ColorInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n hideLabel={horizontal}\n />\n );\n case \"property\":\n return <PropertyField param={param} fullWidth={horizontal ? false : fullWidth} />;\n case \"readOnly\":\n return <ParamEditorReadOnlyField param={param} fullWidth={horizontal ? false : fullWidth} />;\n case \"resource\":\n return (\n <ResourceInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n options={param.options}\n multiSelect={param.multiSelect}\n editable={param.editable}\n placeholder={param.placeholder}\n emptyText={param.emptyText}\n onOpenResource={onOpenResource}\n presentation={presentation}\n />\n );\n case \"range\":\n case \"segmented\":\n case \"actions\":\n case \"anchorGrid\":\n case \"vector\":\n case \"fileUpload\":\n return (\n <ParamEditorAdvancedField\n param={param}\n defaultValues={defaultValues}\n onChange={onChange}\n readOnly={readOnly}\n fullWidth={fullWidth}\n presentation={presentation}\n />\n );\n default:\n return null;\n }\n};\n"],"names":["isImage","file","type","startsWith","formatSize","bytes","toString","Math","round","toFixed","AttachmentChip","props","$","_c","removeLabel","disabled","onRemove","previewUrl","setPreviewUrl","useState","t0","t1","url","URL","createObjectURL","revokeObjectURL","useEffect","t2","name","jsx","Text","t3","jsxs","Popover","placement","chakra","Image","t4","size","t5","t6","Symbol","for","X","t7","IconButton","t8","Badge","ParamEditorLabel","description","compact","undefined","Tooltip","Icon","CircleHelp","HStack","ParamEditorControlItem","hideLabel","fullWidth","orientation","labelTrailing","children","ParamEditorFieldLabel","label","header","Flex","Box","Chip","generatedGlyphStyles","GLYPH_RULE","glyphContent","Map","Array","from","matchAll","content","GLYPH_OPTICAL_SIZE","GLYPH_BASELINE_OFFSET","GlyphRoot","glyphStyles","fontSize","position","display","verticalAlign","flexShrink","boxSize","lineHeight","containerType","inset","fontFamily","fontStyle","fontWeight","textAlign","transform","createGlyphIcon","glyph","options","styles","get","scale","GlyphIcon","displayName","optionColors","value","icon","levelGlyph","optionIcons","Ban","Flag","Bug","Sparkles","BookOpen","Wrench","Zap","Feather","Scale","Layers","Star","Flame","Lightbulb","Shield","Eye","Timer","Tag","Code","Rocket","Heart","Bookmark","Target","Bell","Hash","Ticket","GitBranch","Bot","Puzzle","Workflow","Kanban","MessageSquare","Folder","FileText","History","Play","Terminal","Cpu","Users","Component","SquareKanban","GitCommitHorizontal","Inbox","ListChecks","Archive","Link","Settings","getIconComponent","iconOptions","normalizedName","replace","toLowerCase","find","Circle","sessionCompletionStatuses","resolveSessionIndicatorIcon","status","LoaderCircle","CircleCheck","CircleAlert","CircleStop","CirclePause","ClockAlert","CircleDot","CircleDashed","resolveSessionIndicatorColor","SessionIndicator","ariaLabel","cursor","onClick","Switch","React","forwardRef","ref","inputProps","rest","rootRef","thumbLabel","trackLabel","interactiveCursor","ChakraSwitch","off","on","ATTEMPT_STATUS_COLOR_ALIASES","amber","CHAKRA_COLOR_PALETTES","Set","workspaceBadgeSurfaceProps","bg","_light","_dark","color","_hover","resolveWorkspaceIcon","workspaceType","GitCommitIcon","GitBranchIcon","resolveAttemptStatusColor","resolvedColor","has","buildAttemptStatusTooltip","attemptStatus","handleIconClick","event","stopPropagation","handleBadgeClick","LeadingSessionIndicator","sessionStatus","onSessionIndicatorClick","sessionTooltip","WorkspaceTypeIndicator","initializing","shorthand","WorkspaceTypeIcon","displayLabel","Spinner","WorkspaceAttemptStatusIndicator","WorkspaceDiffTotals","diffAdditions","diffDeletions","WorkspaceDropdownTrigger","hasMultipleWorkspaces","onDropdownClick","ChevronDown","WorkspaceBadge","showLeadingSessionIndicator","t9","t10","selectionIndicator","multiSelect","selected","SquareCheck","Square","Check","selectionOptionIcon","option","SelectionMenu","triggerLabel","selectedIds","searchable","searchPlaceholder","emptyText","group","triggerVariant","triggerAriaLabel","onToggle","onGroupChange","Button","borderColor","outline","boxShadow","trigger","id","searchText","filter","Boolean","join","secondaryLabel","isDisabled","isSelected","includes","onSelect","map","items","selectedGroup","option_0","defaultValue","ListRow","SearchableMenu","option_1","selectedLabel","placeholder","selectedIcon","length","showSearch","emptyState","Menu","item","option_2","ActionInput","onChange","readOnly","presentation","active","setActive","optionId","run","horizontal","selectedName","row","ANCHOR_GRID_VALUES","isAnchorGridValue","ParamEditorReadOnlyValue","boxProps","preserveWhitespace","AnchorGridInput","setValue","next","select","anchor","Grid","grid","BooleanInput","String","details","checked","ColorInput","open","setOpen","useRef","contentRef","timeoutRef","nextColor","current","clearTimeout","setTimeout","scheduleChange","isInsidePicker","target","node","contains","handleOutsideInteraction","document","addEventListener","removeEventListener","newColor","handleChange","event_0","root","currentTarget","ownerDocument","activeElement","handleBlur","valueElement","t11","t12","parseColor","t13","t14","details_0","t15","onOpenChange","onFocusOutside","onInteractOutside","onBlur","onValueChange","rootProps","t16","t17","ColorPicker","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","picker","t28","DateInput","min","max","nextValue","newValue","Input","e","_temp","e_1","_temp2","e_0","key","blur","e_2","valueId","index","lastModified","createFileUploadValues","files","existing","multiple","offset","slice","getFileUploadSummary","values","state","candidate","some","count","UploadStatus","noun","summary","bb0","queued","uploading","complete","error","empty","labels","Clock3","UploadQueue","Wrap","Stack","FileUploadInput","accept","uploadLabel","setValues","inputRef","commit","remove","click","Paperclip","button","input","HorizontalTextInput","isExpanded","setIsExpanded","handleClick","trim","preventDefault","handleKeyDown","Textarea","MarkdownInput","editorValue","LazyMarkdownEditor","editor","NumberInputRoot","ChakraNumberInput","NumberInputField","Slider","ChakraSlider","NumberInput","step","hideSlider","showSlider","useFullWidthLayout","Number","isNaN","valueAsNumber","next_0","details_1","details_2","clampToRange","lower","upper","snapToStep","origin","steps","formatUnitValue","unit","rounded","isInteger","normalizeRange","first","second","start","end","SliderMarks","_","positions","RangeInput","markerCount","trailing","slider","mainAxis","optionIcon","openExternal","href","window","copyToClipboard","text","navigator","clipboard","writeText","catch","ResourceChip","onOpenResource","copyText","handleSelect","ResourceBadge","ResourceChipList","toIds","isArray","resolveOptions","ids","FieldShell","control","ResourceSelectMenu","ResourceInput","editable","emitChange","selectedOptions","interactive","toggleOption","next_1","entry","next_2","removeOption","optionId_0","next_3","entry_0","Plus","SegmentedInput","variant","indicatorColor","Group","SelectionInput","clearable","groupValue","setGroupValue","names","selectedId","getDisplayText","handleToggle","handleGroupChange","T0","triggerOption","menu","optionName","TextInput","singleLine","e_3","ParamEditorInlineGroup","clampAxis","bounds","NEGATIVE_INFINITY","POSITIVE_INFINITY","updateVectorAxis","axis","clamped","x","y","VectorAxisField","fieldId","onCommit","VectorInput","xLabel","yLabel","updated","commitAxis","resolveParamValue","defaultValues","paramId","fallback","ParamEditorAdvancedField","param","common","isParamEditorRichControl","isParamEditorHorizontalControl","formatPrimitive","ReadOnlyContent","alt","images","src","ParamEditorReadOnlyField","image","PropertyField","ParamEditorField","richControl"],"mappings":"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AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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"}