@pstdio/ui 0.20.1 → 0.22.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 (116) hide show
  1. package/dist/{MermaidComponent-BVMyKttu.js → MermaidComponent-D92GMhht.js} +3 -3
  2. package/dist/{MermaidComponent-BVMyKttu.js.map → MermaidComponent-D92GMhht.js.map} +1 -1
  3. package/dist/chat-ui.d.ts +2 -0
  4. package/dist/chat-ui.js +3 -7
  5. package/dist/chat-ui.js.map +1 -1
  6. package/dist/components/data-table/build-columns.d.ts +2 -0
  7. package/dist/components/data-table/data-table-column-menu.d.ts +2 -0
  8. package/dist/components/data-table/data-table-row-display.d.ts +11 -0
  9. package/dist/components/data-table/data-table-table-parts.d.ts +1 -0
  10. package/dist/components/data-table/edit-mode-data-table-body.d.ts +1 -0
  11. package/dist/components/data-table/edit-mode-data-table-cell.d.ts +1 -0
  12. package/dist/components/data-table/edit-mode-data-table-header.d.ts +1 -0
  13. package/dist/components/data-table/types.d.ts +1 -0
  14. package/dist/components/diff-viewer/code-editor.d.ts +8 -2
  15. package/dist/components/diff-viewer/index.d.ts +1 -0
  16. package/dist/components/kanban-renderer/collection-badge.d.ts +7 -0
  17. package/dist/components/kanban-renderer/index.d.ts +1 -1
  18. package/dist/components/kanban-renderer/kanban-renderer-helpers.d.ts +2 -1
  19. package/dist/components/kanban-renderer/types.d.ts +20 -1
  20. package/dist/components/list-row/list-row-content.d.ts +1 -0
  21. package/dist/components/param-editor/param-editor-presentation.d.ts +1 -1
  22. package/dist/components/param-editor/param-editor.types.d.ts +5 -193
  23. package/dist/components/rich-text/shared/markdown-ast.d.ts +1 -0
  24. package/dist/components/rich-text/shared/markdown-source-document.d.ts +7 -0
  25. package/dist/components/rich-text/shared/markdown-source-links.d.ts +11 -0
  26. package/dist/components/rich-text/shared/markdown-source-map.d.ts +10 -0
  27. package/dist/components/rich-text/utils/inferResourceType.d.ts +1 -1
  28. package/dist/components/tag-editor/tag-editor-row.d.ts +2 -1
  29. package/dist/components/tag-editor/tag-editor.types.d.ts +13 -0
  30. package/dist/components/tag-editor/tag-settings-panel.d.ts +1 -1
  31. package/dist/components/tree-list/tree-list-drag-provider.d.ts +13 -0
  32. package/dist/components/tree-list/tree-list-order.store.d.ts +4 -1
  33. package/dist/components/tree-list/tree-list-reorder.d.ts +14 -3
  34. package/dist/components/tree-list/tree-list-sortable.d.ts +2 -0
  35. package/dist/components/tree-list/tree-list-visibility-filter.d.ts +2 -2
  36. package/dist/components/tree-list/tree-list.d.ts +3 -0
  37. package/dist/components/tree-list/tree-list.types.d.ts +4 -0
  38. package/dist/data-table.d.ts +2 -0
  39. package/dist/data-table.js +740 -704
  40. package/dist/data-table.js.map +1 -1
  41. package/dist/diff.d.ts +2 -0
  42. package/dist/diff.js +532 -533
  43. package/dist/diff.js.map +1 -1
  44. package/dist/edit-mode-data-table-DGgRuSW3.js +846 -0
  45. package/dist/edit-mode-data-table-DGgRuSW3.js.map +1 -0
  46. package/dist/index.d.ts +2 -0
  47. package/dist/index.js +1603 -1492
  48. package/dist/index.js.map +1 -1
  49. package/dist/{kanban-renderer-toolbar-CpegGbwq.js → kanban-renderer-toolbar-Bl8xXdwU.js} +527 -469
  50. package/dist/kanban-renderer-toolbar-Bl8xXdwU.js.map +1 -0
  51. package/dist/kanban-renderer.d.ts +2 -0
  52. package/dist/kanban-renderer.js +21 -21
  53. package/dist/kanban-renderer.js.map +1 -1
  54. package/dist/lazy-markdown-editor-CCOchoJX.js +235 -0
  55. package/dist/lazy-markdown-editor-CCOchoJX.js.map +1 -0
  56. package/dist/list-row-DCgdza1i.js +812 -0
  57. package/dist/list-row-DCgdza1i.js.map +1 -0
  58. package/dist/markdown-CASvn1Z2.js +1643 -0
  59. package/dist/markdown-CASvn1Z2.js.map +1 -0
  60. package/dist/markdown-editor-C4GCyebp.js +1019 -0
  61. package/dist/markdown-editor-C4GCyebp.js.map +1 -0
  62. package/dist/{mermaid-renderer-H3IhLqnQ.js → mermaid-renderer-CVnuKs-A.js} +2 -2
  63. package/dist/{mermaid-renderer-H3IhLqnQ.js.map → mermaid-renderer-CVnuKs-A.js.map} +1 -1
  64. package/dist/mermaid.d.ts +2 -0
  65. package/dist/mermaid.js +1 -1
  66. package/dist/monaco-browser-CgvlArN7.js +21 -0
  67. package/dist/monaco-browser-CgvlArN7.js.map +1 -0
  68. package/dist/{param-editor-B8Ff9Nm8.js → param-editor-CkDq623X.js} +2 -2
  69. package/dist/{param-editor-B8Ff9Nm8.js.map → param-editor-CkDq623X.js.map} +1 -1
  70. package/dist/param-editor-field-DRgbnL7-.js +2809 -0
  71. package/dist/param-editor-field-DRgbnL7-.js.map +1 -0
  72. package/dist/rich-message-DARuDVOX.js +628 -0
  73. package/dist/{rich-message-DdFYRzTo.js.map → rich-message-DARuDVOX.js.map} +1 -1
  74. package/dist/rich-text.d.ts +2 -0
  75. package/dist/rich-text.js +48 -47
  76. package/dist/rich-text.js.map +1 -1
  77. package/dist/style.css +1 -1
  78. package/dist/terminal.d.ts +2 -0
  79. package/dist/terminal.js +1 -1
  80. package/dist/terminal.js.map +1 -1
  81. package/dist/theme/primitives/sizes.d.ts +9 -0
  82. package/dist/{theme-BH4fSst9.js → theme-B-l5_a6F.js} +69 -50
  83. package/dist/theme-B-l5_a6F.js.map +1 -0
  84. package/dist/theme-preference-Bpobguh4.js +114 -0
  85. package/dist/theme-preference-Bpobguh4.js.map +1 -0
  86. package/dist/theme.d.ts +2 -0
  87. package/dist/theme.js +1 -1
  88. package/dist/tree-list-AlO5ZmxQ.js +1262 -0
  89. package/dist/tree-list-AlO5ZmxQ.js.map +1 -0
  90. package/dist/utils/theme-preference.d.ts +4 -1
  91. package/dist/workspace-badge-BR_GgsAG.js +175 -0
  92. package/dist/workspace-badge-BR_GgsAG.js.map +1 -0
  93. package/package.json +5 -42
  94. package/dist/dialog-accept-shortcut-DAEBsoWW.js +0 -7
  95. package/dist/dialog-accept-shortcut-DAEBsoWW.js.map +0 -1
  96. package/dist/edit-mode-data-table-D6NeiDJx.js +0 -775
  97. package/dist/edit-mode-data-table-D6NeiDJx.js.map +0 -1
  98. package/dist/editor-config-D9OksZ93.js +0 -2416
  99. package/dist/editor-config-D9OksZ93.js.map +0 -1
  100. package/dist/kanban-renderer-toolbar-CpegGbwq.js.map +0 -1
  101. package/dist/lazy-markdown-editor-B7uP2ALS.js +0 -26
  102. package/dist/lazy-markdown-editor-B7uP2ALS.js.map +0 -1
  103. package/dist/list-row-9oxy-F0v.js +0 -796
  104. package/dist/list-row-9oxy-F0v.js.map +0 -1
  105. package/dist/monaco-browser-CO0NxK_Z.js +0 -19
  106. package/dist/monaco-browser-CO0NxK_Z.js.map +0 -1
  107. package/dist/number-input-WUfejtNx.js +0 -343
  108. package/dist/number-input-WUfejtNx.js.map +0 -1
  109. package/dist/param-editor-field-Cu4pto_a.js +0 -2845
  110. package/dist/param-editor-field-Cu4pto_a.js.map +0 -1
  111. package/dist/rich-message-DdFYRzTo.js +0 -658
  112. package/dist/theme-BH4fSst9.js.map +0 -1
  113. package/dist/theme-preference-DyymrYpR.js +0 -123
  114. package/dist/theme-preference-DyymrYpR.js.map +0 -1
  115. package/dist/tree-list-uV4UFj0x.js +0 -1116
  116. package/dist/tree-list-uV4UFj0x.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"param-editor-field-DRgbnL7-.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/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/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 { Button, Flex, Icon, IconButton, Menu, Portal } 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 {/* Portaled like every other menu: rendered inline it is clipped by the\n panel's overflow and can extend past the viewport. */}\n <Portal>\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 </Portal>\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 aria-label={name}\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 aria-label={name}\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 { 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 aria-label={name}\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 aria-label={name}\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 aria-label={name}\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","selectionIndicator","multiSelect","selected","SquareCheck","Square","Check","selectionOptionIcon","option","color","SelectionMenu","triggerLabel","selectedIds","searchable","searchPlaceholder","emptyText","group","triggerVariant","triggerAriaLabel","onToggle","onGroupChange","Button","bg","borderColor","outline","boxShadow","ChevronDown","trigger","id","searchText","filter","Boolean","join","secondaryLabel","isDisabled","isSelected","includes","onSelect","map","items","selectedGroup","option_0","defaultValue","ListRow","SearchableMenu","option_1","selectedLabel","placeholder","selectedIcon","ariaLabel","length","showSearch","emptyState","Menu","item","t9","option_2","Portal","t10","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","Switch","ColorInput","open","setOpen","rootRef","useRef","contentRef","timeoutRef","nextColor","current","clearTimeout","setTimeout","scheduleChange","isInsidePicker","target","node","contains","handleOutsideInteraction","event","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","status","slice","getFileUploadSummary","values","state","candidate","some","count","UploadStatus","noun","summary","bb0","queued","uploading","complete","error","empty","labels","Spinner","CircleAlert","CircleCheck","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","Slider","React","forwardRef","ref","rest","ChakraSlider","NumberInput","step","hideSlider","showSlider","useFullWidthLayout","NumberInputRoot","Number","isNaN","valueAsNumber","NumberInputField","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":";;;;;;;;;;AAYA,MAAMA,KAAUA,CAACC,MAAeA,EAAKC,KAAKC,WAAW,QAAQ,GAEvDC,KAAaA,CAACC,MACdA,IAAQ,OAAa,GAAGA,EAAMC,UAAU,OACxCD,IAAQ,OAAO,OAAa,GAAGE,KAAKC,MAAMH,IAAQ,IAAI,EAAEC,SAAAA,CAAU,QAC/D,IAAID,KAAS,OAAO,OAAOI,QAAQ,CAAC,CAAC,OAQjCC,KAAiBC,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAC5B;AAAA,IAAAZ,MAAAA;AAAAA,IAAAa,aAAAA;AAAAA,IAAAC,UAAAA;AAAAA,IAAAC,UAAAA;AAAAA,EAAAA,IAAkDL,GAClD,CAAAM,GAAAC,CAAA,IAAoCC,EAAwB,IAAI;AAAE,MAAAC,GAAAC;AAAA,EAAAT,SAAAX,KAIxDmB,IAAAA,MAAA;AACR,QAAI,CAACpB,GAAQC,CAAI;AAAC;AAClB,UAAAqB,IAAYC,IAAGC,gBAAiBvB,CAAI;AACpCiB,WAAAA,EAAcI,CAAG,GACV,MAAMC,IAAGE,gBAAiBH,CAAG;AAAA,EAAC,GACpCD,IAAA,CAACpB,CAAI,GAACW,OAAAX,GAAAW,OAAAQ,GAAAR,OAAAS,MAAAD,IAAAR,EAAA,CAAA,GAAAS,IAAAT,EAAA,CAAA,IALTc,GAAUN,GAKPC,CAAM;AAAC,MAAAM;AAAA,EAAAf,EAAA,CAAA,MAAAX,EAAA2B,QAGRD,IAAA,gBAAAE,EAACC,IAAA,EAAQ,IAAA,QAAiB,WAAA,mBAA6B,cAAQ,MAAA,SAC5D7B,UAAAA,EAAI2B,MACP,GAAOhB,EAAA,CAAA,IAAAX,EAAA2B,MAAAhB,OAAAe,KAAAA,IAAAf,EAAA,CAAA;AAHT,QAAAgB,IACED;AAGA,MAAAI;AAAA,EAAAnB,EAAA,CAAA,MAAAX,EAAA2B,QAAAhB,EAAA,CAAA,MAAAgB,KAAAhB,EAAA,CAAA,MAAAK,KAIGc,IAAAd,IACC,gBAAAe,EAAAC,GAAA,MAAA,EAA2B,aAAA;AAAA,IAAAC,WAAa;AAAA,EAAA,GACtC,UAAA;AAAA,IAAA,gBAAAL,EAAAI,GAAA,SAAA,EAAiB,aACf,UAAA,gBAAAJ,EAAAM,GAAA,QAAA,EAAoB,MAAA,UAAgB,QAAA,WAAe,MAAA,KAAY,SAAA,4BAE/D,GACF;AAAA,IACA,gBAAAN,EAAAI,GAAA,YAAA,EACE,UAAA,gBAAAJ,gBAAmB,GAAA,QAAS,GAAA,OAAS,IAAA,MACnC,UAAA,gBAAAA,EAACO,IAAA,EAAWnB,KAAAA,GAAiB,KAAAhB,EAAI2B,MAAY,MAAA,SAAa,MAAA,SAAqB,cAAA,KAAA,CAAI,EAAA,CACrF,EAAA,CACF;AAAA,EAAA,EAAA,CACF,IAZDA,GAeAhB,EAAA,CAAA,IAAAX,EAAA2B,MAAAhB,OAAAgB,GAAAhB,OAAAK,GAAAL,OAAAmB,KAAAA,IAAAnB,EAAA,CAAA;AAAA,MAAAyB;AAAA,EAAAzB,EAAA,CAAA,MAAAX,EAAAqC,QAEED,IAAAjC,GAAWH,EAAIqC,IAAK,GAAC1B,EAAA,CAAA,IAAAX,EAAAqC,MAAA1B,QAAAyB,KAAAA,IAAAzB,EAAA,EAAA;AAAA,MAAA2B;AAAA,EAAA3B,UAAAyB,KADxBE,IAAA,gBAAAV,EAACC,MAAQ,IAAA,QAAiB,WAAA,oBAAyB,OAAA,aAChDO,UAAAA,EAAAA,CACH,GAAOzB,QAAAyB,GAAAzB,QAAA2B,KAAAA,IAAA3B,EAAA,EAAA;AAAA,MAAA4B;AAAA,EAAA5B,EAAA,EAAA,MAAA6B,uBAAAC,IAAA,2BAAA,KAELF,sBAACG,IAAA,EAAQ,MAAA,GAAA,CAAE,GAAI/B,QAAA4B,KAAAA,IAAA5B,EAAA,EAAA;AAAA,MAAAgC;AAAA,EAAAhC,EAAA,EAAA,MAAAG,KAAAH,UAAAI,KAAAJ,EAAA,EAAA,MAAAE,KADjB8B,IAAA,gBAAAf,EAACgB,IAAA,EAAgB,MAAA,OAAc,SAAA,SAAoB/B,cAAAA,GAAuBC,UAAAA,GAAmBC,SAAAA,GAC3FwB,UAAAA,GACF,GAAa5B,QAAAG,GAAAH,QAAAI,GAAAJ,QAAAE,GAAAF,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA;AAAA,MAAAkC;AAAA,SAAAlC,EAAA,EAAA,MAAAmB,KAAAnB,UAAA2B,KAAA3B,EAAA,EAAA,MAAAgC,KAtBfE,sBAACC,IAAA,EAAc,SAAA,QAAW,KAAA,OAAS,IAAA,OAChChB,UAAAA;AAAAA,IAAAA;AAAAA,IAgBDQ;AAAAA,IAGAK;AAAAA,EAAAA,GAGF,GAAQhC,QAAAmB,GAAAnB,QAAA2B,GAAA3B,QAAAgC,GAAAhC,QAAAkC,KAAAA,IAAAlC,EAAA,EAAA,GAvBRkC;AAuBQ,GC1DCE,IAAmBrC,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAC9B;AAAA,IAAAe,MAAAA;AAAAA,IAAAqB,aAAAA;AAAAA,IAAAC,SAAA9B;AAAAA,EAAAA,IAA+CT,GAApBuC,IAAA9B,MAAA+B,SAAA,KAAA/B,GAKVC,IAAA6B,IAAA,oBAAA,kBAEIvB,IAAAuB,IAAA,WAAAC,QACApB,IAAAmB,IAAA,cAAAC;AAAiC,MAAAd;AAAA,EAAAzB,EAAA,CAAA,MAAAgB,KAAAhB,EAAA,CAAA,MAAAS,KAAAT,EAAA,CAAA,MAAAe,KAAAf,SAAAmB,KAJlDM,IAAA,gBAAAR,EAACC,IAAA,EACY,WAAAT,GACL,OAAA,YACS,eAAAM,GACA,eAAAI,GACf,UAAA,IAECH,UAAAA,GACH,GAAOhB,OAAAgB,GAAAhB,OAAAS,GAAAT,OAAAe,GAAAf,OAAAmB,GAAAnB,OAAAyB,KAAAA,IAAAzB,EAAA,CAAA;AAAA,MAAA2B;AAAA,EAAA3B,SAAAqC,KACNV,IAAAU,sBACEG,IAAA,EAAiBH,SAAAA,GAChB,UAAA,gBAAApB,EAACwB,IAAA,EAASC,QAAoB,SAAA,QAAa,OAAA,YAAoB,SAAA,KAAY,QAAA,QAAmB,YAAA,GAAC,GACjG,IAHD,MAIO1C,OAAAqC,GAAArC,OAAA2B,KAAAA,IAAA3B,EAAA,CAAA;AAAA,MAAA4B;AAAA,SAAA5B,EAAA,CAAA,MAAAyB,KAAAzB,SAAA2B,KAdVC,sBAACe,IAAA,EAAW,KAAA,KAAe,YAAA,UAAc,MAAA,KACvClB,UAAAA;AAAAA,IAAAA;AAAAA,IASCE;AAAAA,EAAAA,GAKH,GAAS3B,OAAAyB,GAAAzB,OAAA2B,GAAA3B,OAAA4B,KAAAA,IAAA5B,EAAA,CAAA,GAfT4B;AAeS,GCTAgB,KAAyB7C,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GACpC;AAAA,IAAAe,MAAAA;AAAAA,IAAAqB,aAAAA;AAAAA,IAAAQ,WAAArC;AAAAA,IAAAsC,WAAArC;AAAAA,IAAAsC,aAAAhC;AAAAA,IAAAiC,eAAAA;AAAAA,IAAAC,UAAAA;AAAAA,EAAAA,IAQIlD,GALF8C,IAAArC,MAAA+B,SAAA,KAAA/B,GACAsC,IAAArC,MAAA8B,SAAA,KAAA9B,GACAsC,IAAAhC,MAAAwB,SAAA,SAAAxB;AAAoB,MAAAI;AAAA,EAAAnB,EAAA,CAAA,MAAAqC,KAAArC,SAAA6C,KAAA7C,EAAA,CAAA,MAAAgB,KAKRG,IAAA0B,KAAA,CAAc7B,IAAd,OAA4B,gBAAAC,EAACiC,GAAA,EAA4BlC,MAAAA,GAAmBqB,aAAAA,GAAW,GAAIrC,OAAAqC,GAAArC,OAAA6C,GAAA7C,OAAAgB,GAAAhB,OAAAmB,KAAAA,IAAAnB,EAAA,CAAA;AAAzG,QAAAmD,IAAchC;AAGd,OAFiB4B,MAAgB,SAAUD,IAAA,YAAA,WAA1BC,OAEA,WAAS;AACxB,UAAAK,IAAeD,KAAAH;AAAuB,QAAAvB;AAAA,IAAAzB,EAAA,CAAA,MAAAoD,KAAApD,SAAAmD,KAAAnD,EAAA,CAAA,MAAAgD,KAGjCvB,IAAA2B,IACC,gBAAAhC,EAACiC,GAAA,EAAgB,YAAA,UAAwB,gBAAA,iBAAoB,KAAA,MAAQ,IAAA,MAAU,MAAA,KAC5EF,UAAAA;AAAAA,MAAAA;AAAAA;OAEH,IAJD,MAKOnD,OAAAoD,GAAApD,OAAAmD,GAAAnD,OAAAgD,GAAAhD,OAAAyB,KAAAA,IAAAzB,EAAA,CAAA;AAAA,QAAA2B;AAAA,WAAA3B,EAAA,CAAA,MAAAiD,KAAAjD,SAAAyB,KANVE,IAAA,gBAAAP,EAACkC,GAAA,EAAS,MAAA,KACP7B,UAAAA;AAAAA,MAAAA;AAAAA,MAMAwB;AAAAA,IAAAA,GACH,GAAMjD,OAAAiD,GAAAjD,OAAAyB,GAAAzB,QAAA2B,KAAAA,IAAA3B,EAAA,EAAA,GARN2B;AAAAA,EAQM;AAET,MAAAF;AAAA,EAAAzB,EAAA,EAAA,MAAAiD,KAAAjD,UAAAgD,KAKGvB,sBAAC4B,GAAA,EAAgB,YAAA,UAAa,KAAA,MAAU,MAAA,KACrCL,UAAAA;AAAAA,IAAAA;AAAAA,IACAC;AAAAA,EAAAA,GACH,GAAOjD,QAAAiD,GAAAjD,QAAAgD,GAAAhD,QAAAyB,KAAAA,IAAAzB,EAAA,EAAA;AAAA,MAAA2B;AAAA,SAAA3B,EAAA,EAAA,MAAAmD,KAAAnD,UAAAyB,KALTE,IAAA,gBAAAP,EAACiC,GAAA,EAAgB,YAAA,UAAwB,gBAAA,iBAA0B,WAAA,QAAW,KAAA,MAAU,MAAA,KACrFF,UAAAA;AAAAA,IAAAA;AAAAA,IACD1B;AAAAA,EAAAA,GAIF,GAAOzB,QAAAmD,GAAAnD,QAAAyB,GAAAzB,QAAA2B,KAAAA,IAAA3B,EAAA,EAAA,GANP2B;AAMO,GCnDE4B,KAAOxD,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA;AAAA,MAAAO;AAAA,SAAAR,SAAAD,KAAsBS,sBAAC2B,IAAA,EAAW,MAAA,MAAa,SAAA,QAAM,GAAKpC,GAAK,GAAIC,OAAAD,GAAAC,OAAAQ,KAAAA,IAAAR,EAAA,CAAA,GAA7CQ;AAA6C,GCLvFgD,KAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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"}