@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
@@ -1 +0,0 @@
1
- {"version":3,"file":"param-editor-field-Cu4pto_a.js","sources":["../src/components/overlays/attachment-chip.tsx","../src/components/param-editor/param-editor-label.tsx","../src/components/param-editor/param-editor-control-item.tsx","../src/components/primitives/chip.tsx","../public/font/css/prompt-studio-icons.css?raw","../src/components/primitives/glyph-icon.tsx","../src/components/primitives/icon-options.tsx","../src/components/primitives/switch.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 { Switch as ChakraSwitch } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\nexport interface SwitchProps extends ChakraSwitch.RootProps {\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n rootRef?: React.RefObject<HTMLLabelElement | null>;\n trackLabel?: { on: React.ReactNode; off: React.ReactNode };\n thumbLabel?: { on: React.ReactNode; off: React.ReactNode };\n}\n\nexport const Switch = React.forwardRef<HTMLInputElement, SwitchProps>(function Switch(props, ref) {\n const { inputProps, children, rootRef, trackLabel, thumbLabel, disabled = false, ...rest } = props;\n const interactiveCursor = disabled ? \"not-allowed\" : \"pointer\";\n\n return (\n <ChakraSwitch.Root ref={rootRef} disabled={disabled} cursor={interactiveCursor} {...rest}>\n <ChakraSwitch.HiddenInput ref={ref} {...inputProps} />\n <ChakraSwitch.Control cursor={interactiveCursor}>\n <ChakraSwitch.Thumb>\n {thumbLabel && (\n <ChakraSwitch.ThumbIndicator fallback={thumbLabel?.off}>{thumbLabel?.on}</ChakraSwitch.ThumbIndicator>\n )}\n </ChakraSwitch.Thumb>\n {trackLabel && <ChakraSwitch.Indicator fallback={trackLabel.off}>{trackLabel.on}</ChakraSwitch.Indicator>}\n </ChakraSwitch.Control>\n {children != null && <ChakraSwitch.Label cursor={interactiveCursor}>{children}</ChakraSwitch.Label>}\n </ChakraSwitch.Root>\n );\n});\n","import { 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 className=\"nodrag\"\n readOnly={readOnly}\n flex=\"1\"\n maxW=\"12.5rem\"\n size={size}\n type=\"text\"\n placeholder={hideLabel ? name : undefined}\n value={value}\n onClick={handleClick}\n onChange={(e) => handleChange(e.target.value)}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n </Flex>\n ) : (\n <Box\n position=\"absolute\"\n top=\"0\"\n left=\"0\"\n right=\"0\"\n zIndex=\"10\"\n bg=\"bg\"\n borderWidth=\"1px\"\n borderStyle=\"solid\"\n borderColor=\"border\"\n borderRadius=\"lg\"\n p=\"2\"\n transition=\"border-color 0.2s ease-in-out\"\n boxShadow=\"none\"\n _hover={{ borderColor: \"border.accent-light\" }}\n _active={{ borderColor: \"border.accent-light\" }}\n _focusWithin={{ borderColor: \"border.accent-light\", boxShadow: \"none\" }}\n >\n {!hideLabel && (\n <Box mb=\"sm\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n <Textarea\n className=\"nodrag\"\n readOnly={readOnly}\n width=\"100%\"\n size={size}\n placeholder={hideLabel ? name : undefined}\n value={value}\n onChange={(e) => handleChange(e.target.value)}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n rows={3}\n resize=\"vertical\"\n autoFocus\n />\n </Box>\n )}\n </Box>\n </Box>\n );\n};\n","import { Box, Flex, Input, Stack } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport { LazyMarkdownEditor } from \"@/components/rich-text\";\nimport { ParamEditorFieldLabel } from \"../param-editor-field-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface MarkdownInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: string;\n placeholder?: string;\n onChange: (id: string, value: string) => void;\n readOnly?: boolean;\n presentation?: \"stacked\" | \"horizontal\";\n size?: \"xs\" | \"sm\";\n}\n\nexport const MarkdownInput = (props: MarkdownInputProps) => {\n const {\n id,\n name,\n description,\n defaultValue,\n placeholder,\n onChange,\n readOnly,\n presentation = \"stacked\",\n size = \"sm\",\n } = props;\n const [value, setValue] = useState(defaultValue);\n const [isExpanded, setIsExpanded] = useState(false);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const commit = (next: string) => {\n setValue(next);\n onChange(id, next);\n };\n\n const editor = (editorValue: string) => (\n <Box borderWidth=\"1px\" borderColor=\"border\" borderRadius=\"xs\" minH=\"7rem\" minW=\"0\" overflow=\"visible\" width=\"full\">\n <LazyMarkdownEditor\n defaultState={editorValue}\n isEditable={!readOnly}\n placeholder={placeholder}\n scrollable={false}\n onChange={commit}\n />\n </Box>\n );\n const label = <ParamEditorFieldLabel name={name} description={description} />;\n\n if (presentation === \"horizontal\") {\n if (readOnly) {\n return (\n <Box position=\"relative\" flex=\"1\" minW=\"12.5rem\">\n <Flex alignItems=\"center\" minHeight=\"2rem\">\n <ParamEditorReadOnlyValue preserveWhitespace>{value}</ParamEditorReadOnlyValue>\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box position=\"relative\" flex=\"1\" minW=\"12.5rem\">\n <Box position=\"relative\" minHeight=\"2rem\">\n {!isExpanded ? (\n <Input\n className=\"nodrag\"\n flex=\"1\"\n maxW=\"12.5rem\"\n size={size}\n type=\"text\"\n placeholder={name}\n value={value}\n onClick={() => {\n setIsExpanded(true);\n }}\n onChange={(event) => commit(event.target.value)}\n />\n ) : (\n <Box\n position=\"absolute\"\n top=\"0\"\n left=\"0\"\n right=\"0\"\n zIndex=\"10\"\n bg=\"bg\"\n borderWidth=\"1px\"\n borderColor=\"border\"\n borderRadius=\"lg\"\n p=\"2\"\n transition=\"border-color 0.2s ease-in-out\"\n _hover={{ borderColor: \"border.accent-light\" }}\n _focusWithin={{ borderColor: \"border.accent-light\" }}\n onKeyDown={(event) => {\n if (event.key === \"Escape\") {\n setIsExpanded(false);\n event.preventDefault();\n }\n }}\n >\n {editor(value)}\n </Box>\n )}\n </Box>\n </Box>\n );\n }\n\n return (\n <Stack gap=\"xs\" minW=\"0\" width=\"full\">\n {label}\n {editor(value)}\n </Stack>\n );\n};\n","import { Slider as ChakraSlider } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\nexport interface SliderProps extends ChakraSlider.RootProps {}\n\nexport const Slider = React.forwardRef<HTMLDivElement, SliderProps>(function Slider(props, ref) {\n const { children, ...rest } = props;\n\n return (\n <ChakraSlider.Root ref={ref} variant=\"solid\" {...rest}>\n <ChakraSlider.Control>\n <ChakraSlider.Track height=\"2px\" borderRadius=\"0\" bg=\"bg.muted\">\n <ChakraSlider.Range bg=\"fg\" />\n </ChakraSlider.Track>\n <ChakraSlider.Thumbs\n boxSize=\"0.5rem\"\n bg=\"fg\"\n borderWidth=\"1px\"\n borderColor=\"bg\"\n borderRadius=\"none\"\n boxShadow=\"none\"\n transition=\"width 0.12s ease, height 0.12s ease, border-color 0.2s ease-in-out\"\n _hover={{ boxSize: \"0.75rem\", borderColor: \"border.accent-light\" }}\n _active={{ boxSize: \"0.875rem\", borderColor: \"border.accent-light\" }}\n _focusVisible={{ borderColor: \"border.accent-light\", outline: \"none\", boxShadow: \"none\" }}\n />\n </ChakraSlider.Control>\n {children}\n </ChakraSlider.Root>\n );\n});\n","import { Box, Flex, type NumberInputValueChangeDetails, type SliderValueChangeDetails } from \"@chakra-ui/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { NumberInputField, NumberInputRoot } from \"@/components/primitives/number-input\";\nimport { Slider } from \"@/components/primitives/slider\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface NumberInputProps {\n id: string;\n defaultValue: number;\n name: string;\n step?: number;\n min?: number;\n max?: number;\n onChange: (id: string, value: number) => void;\n description: string;\n readOnly?: boolean;\n hideLabel?: boolean;\n hideSlider?: boolean;\n tooltipPlacement?: \"top\" | \"right\" | \"bottom\" | \"left\";\n fullWidth?: boolean;\n size?: \"xs\" | \"sm\";\n}\n\nexport const NumberInput = (props: NumberInputProps) => {\n const {\n id,\n defaultValue,\n name,\n step = 1,\n min,\n max,\n onChange,\n description,\n readOnly,\n hideLabel = false,\n hideSlider = false,\n fullWidth = false,\n size = \"sm\",\n } = props;\n const [value, setValue] = useState(defaultValue);\n const isRange = min !== undefined && max !== undefined;\n const showSlider = isRange && !hideSlider;\n const useFullWidthLayout = fullWidth && !showSlider;\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const scheduleChange = (nextValue: number) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, nextValue), 540);\n };\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n if (readOnly) {\n const valueElement = <ParamEditorReadOnlyValue>{value}</ParamEditorReadOnlyValue>;\n\n if (fullWidth) {\n return (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {valueElement}\n </Box>\n );\n }\n\n return (\n <Box>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n {valueElement}\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box>\n {useFullWidthLayout ? (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n <NumberInputRoot\n disabled={readOnly}\n width=\"100%\"\n size={size}\n value={`${value}`}\n step={step}\n min={min}\n max={max}\n onValueChange={(details: NumberInputValueChangeDetails) => {\n const next = Number.isNaN(details.valueAsNumber) ? (min ?? 0) : details.valueAsNumber;\n setValue(next);\n scheduleChange(next);\n }}\n >\n <NumberInputField\n className=\"nodrag\"\n readOnly={readOnly}\n placeholder={hideLabel ? name : undefined}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n </NumberInputRoot>\n </Box>\n ) : (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n <NumberInputRoot\n disabled={readOnly}\n width=\"5rem\"\n size={size}\n value={`${value}`}\n step={step}\n min={min}\n max={max}\n onValueChange={(details: NumberInputValueChangeDetails) => {\n const next = Number.isNaN(details.valueAsNumber) ? (min ?? 0) : details.valueAsNumber;\n setValue(next);\n scheduleChange(next);\n }}\n >\n <NumberInputField\n className=\"nodrag\"\n readOnly={readOnly}\n placeholder={hideLabel ? name : undefined}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n </NumberInputRoot>\n </Flex>\n )}\n {showSlider && (\n <Slider\n disabled={readOnly}\n value={[value]}\n step={step}\n min={min}\n max={max}\n onValueChange={(details: SliderValueChangeDetails) => {\n setValue(details.value[0]);\n }}\n onValueChangeEnd={(details: SliderValueChangeDetails) => {\n onChange(id, details.value[0]);\n }}\n />\n )}\n </Box>\n );\n};\n","/** Clamp `value` into the inclusive range, tolerating an inverted min/max. */\nexport const clampToRange = (value: number, min: number, max: number) => {\n const lower = Math.min(min, max);\n const upper = Math.max(min, max);\n if (value < lower) return lower;\n if (value > upper) return upper;\n return value;\n};\n\n/** Snap `value` to the nearest multiple of `step` measured from `origin`. */\nexport const snapToStep = (value: number, step: number, origin = 0) => {\n if (!(step > 0)) return value;\n const steps = Math.round((value - origin) / step);\n return origin + steps * step;\n};\n\n/** Format a number with an optional unit suffix, trimming float noise. */\nexport const formatUnitValue = (value: number, unit?: string) => {\n const rounded = Number.isInteger(value) ? `${value}` : `${Number(value.toFixed(3))}`;\n return unit ? `${rounded}${unit}` : rounded;\n};\n","import type { RangeValue } from \"../param-editor.types\";\nimport { clampToRange, snapToStep } from \"./numeric-value\";\n\n/** Order both handles and clamp (and optionally snap) them into `[min, max]`. */\nexport const normalizeRange = (value: RangeValue, min: number, max: number, step?: number): RangeValue => {\n const first = clampToRange(value[0], min, max);\n const second = clampToRange(value[1], min, max);\n let start = Math.min(first, second);\n let end = Math.max(first, second);\n if (step && step > 0) {\n start = clampToRange(snapToStep(start, step, min), min, max);\n end = clampToRange(snapToStep(end, step, min), min, max);\n }\n return [start, end];\n};\n\n/** Replace a single handle, keeping the pair ordered. */\nexport const updateRangeHandle = (\n value: RangeValue,\n index: 0 | 1,\n next: number,\n min: number,\n max: number,\n step?: number,\n): RangeValue => {\n const draft: RangeValue = index === 0 ? [next, value[1]] : [value[0], next];\n return normalizeRange(draft, min, max, step);\n};\n","import { Box, Flex } from \"@chakra-ui/react\";\n\ninterface SliderMarksProps {\n count?: number;\n}\n\n// Evenly-spaced tick marks rendered under a slider track. Purely decorative.\nexport const SliderMarks = (props: SliderMarksProps) => {\n const { count } = props;\n if (!count || count < 2) return null;\n const positions = Array.from({ length: count }, (_, index) => index / (count - 1));\n\n return (\n <Flex justifyContent=\"space-between\" mt=\"2xs\" aria-hidden=\"true\">\n {positions.map((position) => (\n <Box key={position} width=\"1px\" height=\"0.375rem\" bg=\"border.subtle\" />\n ))}\n </Flex>\n );\n};\n","import { Box, Button, Flex, Icon, Popover, type SliderValueChangeDetails, Stack, Text } from \"@chakra-ui/react\";\nimport { ChevronDown } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport { Slider } from \"@/components/primitives/slider\";\nimport type { RangeValue } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\nimport { formatUnitValue } from \"./numeric-value\";\nimport { normalizeRange } from \"./range-value\";\nimport { SliderMarks } from \"./slider-marks\";\n\ninterface RangeInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: RangeValue;\n min: number;\n max: number;\n step?: number;\n unit?: string;\n markerCount?: number;\n onChange: (id: string, value: RangeValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n presentation?: \"stacked\" | \"horizontal\";\n}\n\nexport const RangeInput = (props: RangeInputProps) => {\n const {\n id,\n name,\n description,\n defaultValue,\n min,\n max,\n step = 1,\n unit,\n markerCount,\n onChange,\n readOnly,\n fullWidth,\n presentation = \"stacked\",\n } = props;\n\n const [value, setValue] = useState<RangeValue>(() => normalizeRange(defaultValue, min, max, step));\n\n useEffect(() => {\n setValue(normalizeRange(defaultValue, min, max, step));\n }, [defaultValue, min, max, step]);\n\n const label = `${formatUnitValue(value[0], unit)} – ${formatUnitValue(value[1], unit)}`;\n const horizontal = presentation === \"horizontal\";\n\n if (readOnly) {\n if (horizontal) {\n return <ParamEditorReadOnlyValue>{label}</ParamEditorReadOnlyValue>;\n }\n\n return (\n <ParamEditorControlItem name={name} description={description} fullWidth={fullWidth}>\n <ParamEditorReadOnlyValue>{label}</ParamEditorReadOnlyValue>\n </ParamEditorControlItem>\n );\n }\n\n const trailing = (\n <Text textStyle=\"label/S/regular\" color=\"fg.muted\" whiteSpace=\"nowrap\">\n {label}\n </Text>\n );\n const slider = (\n <Box>\n <Slider\n size=\"sm\"\n value={value}\n min={min}\n max={max}\n step={step}\n onValueChange={(details: SliderValueChangeDetails) =>\n setValue(normalizeRange(details.value as RangeValue, min, max, step))\n }\n onValueChangeEnd={(details: SliderValueChangeDetails) => {\n const next = normalizeRange(details.value as RangeValue, min, max, step);\n setValue(next);\n onChange(id, next);\n }}\n />\n <SliderMarks count={markerCount} />\n </Box>\n );\n\n if (horizontal) {\n return (\n <Popover.Root positioning={{ placement: \"bottom-start\", offset: { mainAxis: 4 } }}>\n <Popover.Trigger asChild>\n <Button size=\"xs\" variant=\"ghost\" aria-label={`${name}: ${label}`}>\n {label}\n <Icon as={ChevronDown} boxSize=\"14px\" />\n </Button>\n </Popover.Trigger>\n <Popover.Positioner>\n <Popover.Content width=\"60\" padding=\"sm\" background=\"bg\">\n <Stack gap=\"xs\">\n <Flex alignItems=\"center\" justifyContent=\"space-between\" gap=\"xs\">\n <Text textStyle=\"label/S/medium\">{name}</Text>\n {trailing}\n </Flex>\n {slider}\n </Stack>\n </Popover.Content>\n </Popover.Positioner>\n </Popover.Root>\n );\n }\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation=\"stacked\" labelTrailing={trailing}>\n {slider}\n </ParamEditorControlItem>\n );\n};\n","import { Icon, Text, Wrap } from \"@chakra-ui/react\";\nimport { Chip } from \"../../primitives/chip\";\nimport { getIconComponent } from \"../../primitives/icon-options\";\nimport { ResourceBadge } from \"../../primitives/resource-badge\";\nimport type { ResourceOption, ResourceRefValue } from \"../param-editor.types\";\n\nconst optionIcon = (option: ResourceOption) => (\n <Icon as={getIconComponent(option.icon)} boxSize=\"14px\" color={option.color ? `${option.color}.500` : \"fg.muted\"} />\n);\n\nconst openExternal = (href: string) => window.open(href, \"_blank\", \"noreferrer\");\n\nconst copyToClipboard = (text: string) => void navigator.clipboard?.writeText(text).catch(() => undefined);\n\ninterface ResourceChipProps {\n option: ResourceOption;\n onOpenResource?: (ref: ResourceRefValue) => void;\n onRemove?: () => void;\n}\n\n// A chip opens its external href in a new tab, opens its internal ref via the host, or\n// copies its text to the clipboard — whichever the option declares.\nexport const ResourceChip = (props: ResourceChipProps) => {\n const { option, onOpenResource, onRemove } = props;\n const isReference = Boolean(option.href || option.ref || option.copyText);\n\n if (!isReference) {\n return <Chip>{option.name}</Chip>;\n }\n\n const handleSelect =\n option.href && option.href.length > 0\n ? () => openExternal(option.href!)\n : option.ref && onOpenResource\n ? () => onOpenResource(option.ref!)\n : option.copyText\n ? () => copyToClipboard(option.copyText!)\n : undefined;\n\n return (\n <ResourceBadge\n fileName={option.name}\n icon={optionIcon(option)}\n size=\"md\"\n onSelect={handleSelect ? () => handleSelect() : undefined}\n onRemove={onRemove ? () => onRemove() : undefined}\n />\n );\n};\n\ninterface ResourceChipListProps {\n options: ResourceOption[];\n onOpenResource?: (ref: ResourceRefValue) => void;\n onRemove?: (optionId: string) => void;\n emptyText?: string;\n}\n\nexport const ResourceChipList = (props: ResourceChipListProps) => {\n const { options, onOpenResource, onRemove, emptyText } = props;\n\n if (options.length === 0) {\n return (\n <Text textStyle=\"label/S/regular\" color=\"fg.muted\">\n {emptyText ?? \"None\"}\n </Text>\n );\n }\n\n return (\n <Wrap gap=\"2xs\">\n {options.map((option) => (\n <ResourceChip\n key={option.id}\n option={option}\n onOpenResource={onOpenResource}\n onRemove={onRemove ? () => onRemove(option.id) : undefined}\n />\n ))}\n </Wrap>\n );\n};\n","import { Box, Flex, Icon, Stack } from \"@chakra-ui/react\";\nimport { Plus } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { getIconComponent } from \"../../primitives/icon-options\";\nimport type { ResourceOption, ResourceRefValue } from \"../param-editor.types\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ResourceChipList } from \"./resource-input-chips\";\nimport { SelectionMenu } from \"./selection-menu\";\n\ninterface ResourceInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: string | string[];\n options: ResourceOption[];\n onChange: (id: string, value: string | string[]) => void;\n onOpenResource?: (ref: ResourceRefValue) => void;\n readOnly?: boolean;\n editable?: boolean;\n multiSelect?: boolean;\n placeholder?: string;\n emptyText?: string;\n fullWidth?: boolean;\n presentation?: \"stacked\" | \"horizontal\";\n size?: \"xs\" | \"sm\";\n}\n\nconst toIds = (value: string | string[]) => {\n if (Array.isArray(value)) return value;\n return value ? [value] : [];\n};\n\nconst resolveOptions = (ids: string[], options: ResourceOption[]) =>\n ids\n .map((id) => options.find((option) => option.id === id))\n .filter((option): option is ResourceOption => Boolean(option));\n\ninterface FieldShellProps {\n fullWidth: boolean;\n label: ReactNode;\n control: ReactNode;\n presentation: \"stacked\" | \"horizontal\";\n}\n\nconst FieldShell = (props: FieldShellProps) => {\n const { fullWidth, label, control, presentation } = props;\n\n if (presentation === \"horizontal\") {\n return (\n <Stack gap=\"2xs\" alignItems=\"start\" minW=\"0\">\n {label}\n {control}\n </Stack>\n );\n }\n\n if (fullWidth) {\n return (\n <Box>\n <Box mb=\"xs\">{label}</Box>\n {control}\n </Box>\n );\n }\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {label}\n {control}\n </Flex>\n );\n};\n\ninterface ResourceSelectMenuProps {\n triggerLabel: ReactNode;\n options: ResourceOption[];\n selectedIds: string[];\n multiSelect: boolean;\n triggerVariant?: \"button\" | \"icon\";\n triggerAriaLabel?: string;\n size?: \"xs\" | \"sm\";\n onToggle: (optionId: string) => void;\n}\n\n// Resource params share the editor's one dropdown, so a ticket property and a\n// command param cannot drift into two looks.\nconst ResourceSelectMenu = (props: ResourceSelectMenuProps) => {\n const { triggerLabel, options, selectedIds, multiSelect, triggerVariant, triggerAriaLabel, size, onToggle } = props;\n\n return (\n <SelectionMenu\n triggerLabel={triggerLabel}\n options={options}\n selectedIds={selectedIds}\n multiSelect={multiSelect}\n triggerVariant={triggerVariant}\n triggerAriaLabel={triggerAriaLabel}\n size={size}\n onToggle={onToggle}\n />\n );\n};\n\nexport const ResourceInput = (props: ResourceInputProps) => {\n const {\n id,\n name,\n description,\n defaultValue,\n options,\n onChange,\n onOpenResource,\n readOnly,\n editable = false,\n multiSelect = false,\n placeholder,\n emptyText,\n fullWidth = false,\n presentation = \"stacked\",\n size = \"sm\",\n } = props;\n\n const [value, setValue] = useState(defaultValue);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const emitChange = (next: string | string[]) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n onChange(id, next);\n };\n\n // Debounce multi-select toggles so a burst of menu clicks makes one update call.\n const scheduleChange = (next: string | string[]) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, next), 540);\n };\n\n const selectedIds = toIds(value);\n const selectedOptions = resolveOptions(selectedIds, options);\n const interactive = editable && !readOnly;\n\n const label = <ParamEditorLabel name={name} description={description} compact={presentation === \"horizontal\"} />;\n\n if (!interactive) {\n return (\n <FieldShell\n fullWidth={fullWidth}\n label={label}\n presentation={presentation}\n control={<ResourceChipList options={selectedOptions} onOpenResource={onOpenResource} emptyText={emptyText} />}\n />\n );\n }\n\n const toggleOption = (optionId: string) => {\n if (multiSelect) {\n const next = selectedIds.includes(optionId)\n ? selectedIds.filter((entry) => entry !== optionId)\n : [...selectedIds, optionId];\n setValue(next);\n scheduleChange(next);\n return;\n }\n // Re-picking the selected option clears it.\n const next = selectedIds.includes(optionId) ? \"\" : optionId;\n setValue(next);\n emitChange(next);\n };\n\n const removeOption = (optionId: string) => {\n const next = selectedIds.filter((entry) => entry !== optionId);\n setValue(next);\n scheduleChange(next);\n };\n\n if (multiSelect) {\n const control = (\n <Flex gap=\"2xs\" alignItems=\"center\" flexWrap=\"wrap\" minW=\"0\">\n {selectedOptions.length > 0 ? (\n <ResourceChipList\n options={selectedOptions}\n onOpenResource={onOpenResource}\n onRemove={removeOption}\n emptyText={emptyText}\n />\n ) : null}\n <ResourceSelectMenu\n triggerLabel={<Icon as={Plus} boxSize=\"12px\" />}\n options={options}\n selectedIds={selectedIds}\n multiSelect\n triggerVariant=\"icon\"\n triggerAriaLabel={placeholder ?? `Add ${name}`}\n size={size}\n onToggle={toggleOption}\n />\n </Flex>\n );\n\n return <FieldShell fullWidth={fullWidth} label={label} control={control} presentation={presentation} />;\n }\n\n const selected = selectedOptions[0];\n const triggerLabel = selected ? (\n <Flex align=\"center\" gap=\"2xs\" minW=\"0\">\n <Icon\n as={getIconComponent(selected.icon)}\n boxSize=\"14px\"\n color={selected.color ? `${selected.color}.500` : \"fg.muted\"}\n />\n {selected.name}\n </Flex>\n ) : (\n (placeholder ?? \"Select\")\n );\n\n return (\n <FieldShell\n fullWidth={fullWidth}\n label={label}\n presentation={presentation}\n control={\n <ResourceSelectMenu\n triggerLabel={triggerLabel}\n options={options}\n selectedIds={selectedIds}\n multiSelect={false}\n size={size}\n onToggle={toggleOption}\n />\n }\n />\n );\n};\n","import { Box, Button, Group } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport type { SegmentedOption } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\nimport { SelectionMenu } from \"./selection-menu\";\n\ninterface SegmentedInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: string;\n options: SegmentedOption[];\n variant?: \"default\" | \"dots\";\n onChange: (id: string, value: string) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n presentation?: \"stacked\" | \"horizontal\";\n}\n\nexport const SegmentedInput = (props: SegmentedInputProps) => {\n const {\n id,\n name,\n description,\n defaultValue,\n options,\n variant = \"default\",\n onChange,\n readOnly,\n fullWidth,\n presentation = \"stacked\",\n } = props;\n const [value, setValue] = useState(defaultValue);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const select = (next: string) => {\n setValue(next);\n onChange(id, next);\n };\n\n const selectedName = options.find((option) => option.id === value)?.name ?? value;\n const horizontal = presentation === \"horizontal\";\n\n if (readOnly) {\n return (\n <ParamEditorControlItem name={name} description={description} hideLabel={horizontal} fullWidth={fullWidth}>\n <ParamEditorReadOnlyValue>{selectedName}</ParamEditorReadOnlyValue>\n </ParamEditorControlItem>\n );\n }\n\n if (horizontal) {\n return (\n <SelectionMenu\n triggerLabel={selectedName}\n options={options}\n selectedIds={[value]}\n multiSelect={false}\n onToggle={select}\n />\n );\n }\n\n const group = (\n <Group\n attached\n width=\"full\"\n borderWidth=\"1px\"\n borderColor=\"border\"\n borderRadius=\"xs\"\n overflow=\"hidden\"\n transition=\"border-color 0.2s ease-in-out\"\n _hover={{ borderColor: \"border.accent-light\" }}\n _active={{ borderColor: \"border.accent-light\" }}\n _focusWithin={{ borderColor: \"border.accent-light\", boxShadow: \"none\" }}\n >\n {options.map((option) => {\n const selected = option.id === value;\n return (\n <Button\n key={option.id}\n flex=\"1\"\n size=\"xs\"\n variant={selected ? \"subtle\" : \"ghost\"}\n borderRadius=\"0\"\n aria-pressed={selected}\n onClick={() => select(option.id)}\n >\n {variant === \"dots\" ? (\n <Box boxSize=\"0.5rem\" borderRadius=\"full\" bg={option.indicatorColor ?? \"fg.muted\"} mr=\"1\" />\n ) : null}\n {option.name}\n </Button>\n );\n })}\n </Group>\n );\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation=\"stacked\">\n {group}\n </ParamEditorControlItem>\n );\n};\n","import { Box, Flex } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport type { SelectionGroup } from \"../param-editor.types\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\nimport { SelectionMenu, type SelectionMenuOption, selectionOptionIcon } from \"./selection-menu\";\n\ninterface SelectionInputProps {\n id: string;\n defaultValue: string | string[];\n name: string;\n options: SelectionMenuOption[];\n onChange: (id: string, value: string | string[]) => void;\n description: string;\n readOnly?: boolean;\n hideLabel?: boolean;\n multiSelect?: boolean;\n tooltipPlacement?: \"top\" | \"right\" | \"bottom\" | \"left\";\n placeholder?: string;\n fullWidth?: boolean;\n /** Re-picking the selected option clears it. */\n clearable?: boolean;\n /** Inert, but still rendered as a control. */\n disabled?: boolean;\n searchable?: boolean;\n searchPlaceholder?: string;\n emptyText?: string;\n group?: SelectionGroup;\n size?: \"xs\" | \"sm\";\n}\n\nexport const SelectionInput = (props: SelectionInputProps) => {\n const {\n id,\n defaultValue,\n name,\n options,\n onChange,\n description,\n readOnly,\n hideLabel = false,\n multiSelect = false,\n placeholder,\n fullWidth = false,\n clearable = false,\n disabled = false,\n searchable = false,\n searchPlaceholder,\n emptyText,\n group,\n size = \"sm\",\n } = props;\n const [value, setValue] = useState(defaultValue);\n const [groupValue, setGroupValue] = useState(group?.defaultValue ?? \"\");\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n useEffect(() => {\n setGroupValue(group?.defaultValue ?? \"\");\n }, [group?.defaultValue]);\n\n const selectedIds = multiSelect\n ? Array.isArray(value)\n ? value\n : []\n : typeof value === \"string\" && value\n ? [value]\n : [];\n\n const getDisplayText = () => {\n const names = selectedIds\n .map((selectedId) => options.find((option) => option.id === selectedId)?.name)\n .filter((optionName): optionName is string => Boolean(optionName));\n\n if (names.length === 0) return placeholder || \"Select\";\n if (names.length <= 3) return names.join(\", \");\n return `${names.slice(0, 3).join(\", \")} +${(names.length - 3).toString()}`;\n };\n\n const commit = (nextValue: string | string[]) => {\n setValue(nextValue);\n onChange(id, nextValue);\n };\n\n const handleToggle = (optionId: string) => {\n if (!multiSelect) {\n // Re-picking the selected option clears it, so a single-select needs no\n // extra \"none\" row cluttering the list.\n commit(clearable && selectedIds.includes(optionId) ? \"\" : optionId);\n return;\n }\n commit(\n selectedIds.includes(optionId) ? selectedIds.filter((item) => item !== optionId) : [...selectedIds, optionId],\n );\n };\n\n const handleGroupChange = (optionId: string) => {\n if (!group || optionId === groupValue) return;\n setGroupValue(optionId);\n onChange(group.id, optionId);\n };\n\n // Only a lone selection can colour the trigger; a multi-pick has no single icon.\n const triggerOption = selectedIds.length === 1 ? options.find((option) => option.id === selectedIds[0]) : undefined;\n const label = !hideLabel ? <ParamEditorLabel name={name} description={description} /> : null;\n\n if (readOnly) {\n const valueElement = <ParamEditorReadOnlyValue>{getDisplayText()}</ParamEditorReadOnlyValue>;\n\n if (fullWidth)\n return (\n <Box>\n {label ? <Box mb=\"xs\">{label}</Box> : null}\n {valueElement}\n </Box>\n );\n\n return (\n <Box>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {label}\n {valueElement}\n </Flex>\n </Box>\n );\n }\n\n const menu = (\n <SelectionMenu\n triggerLabel={\n <>\n {selectionOptionIcon(triggerOption, \"14px\")}\n {getDisplayText()}\n </>\n }\n options={options}\n selectedIds={selectedIds}\n multiSelect={multiSelect}\n disabled={disabled}\n searchable={searchable}\n searchPlaceholder={searchPlaceholder}\n emptyText={emptyText}\n group={group ? { ...group, defaultValue: groupValue } : undefined}\n fullWidth={fullWidth}\n size={size}\n onToggle={handleToggle}\n onGroupChange={handleGroupChange}\n />\n );\n\n if (fullWidth)\n return (\n <Box>\n {label ? <Box mb=\"xs\">{label}</Box> : null}\n {menu}\n </Box>\n );\n\n return (\n <Box>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {label}\n {menu}\n </Flex>\n </Box>\n );\n};\n","import { Box, Flex, Input, Textarea } from \"@chakra-ui/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface TextInputProps {\n id: string;\n defaultValue: string;\n name: string;\n onChange: (id: string, value: string) => void;\n description: string;\n readOnly?: boolean;\n singleLine?: boolean;\n hideLabel?: boolean;\n fullWidth?: boolean;\n size?: \"xs\" | \"sm\";\n}\n\nexport const TextInput = (props: TextInputProps) => {\n const {\n id,\n defaultValue,\n name,\n onChange,\n description,\n readOnly,\n singleLine = true,\n hideLabel = false,\n fullWidth = false,\n size = \"sm\",\n } = props;\n const [value, setValue] = useState(defaultValue);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const scheduleChange = (nextValue: string) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, nextValue), 540);\n };\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const handleChange = (newValue: string) => {\n setValue(newValue);\n scheduleChange(newValue);\n };\n\n // Leaving the field is a commit: a form submitted inside the debounce window\n // would otherwise send the value as it was before the last keystrokes.\n const handleBlur = () => {\n if (!timeoutRef.current) return;\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n onChange(id, value);\n };\n\n if (readOnly) {\n const valueElement = <ParamEditorReadOnlyValue preserveWhitespace={!singleLine}>{value}</ParamEditorReadOnlyValue>;\n\n if (singleLine && !fullWidth) {\n return (\n <Box>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n {valueElement}\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {valueElement}\n </Box>\n );\n }\n\n return (\n <Box>\n {singleLine && !fullWidth ? (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n <Input\n className=\"nodrag\"\n readOnly={readOnly}\n flex=\"1\"\n maxW=\"12.5rem\"\n size={size}\n type=\"text\"\n placeholder={hideLabel ? name : undefined}\n value={value}\n onChange={(e) => handleChange(e.target.value)}\n onBlur={handleBlur}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n </Flex>\n ) : (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {singleLine ? (\n <Input\n className=\"nodrag\"\n readOnly={readOnly}\n width=\"100%\"\n size={size}\n type=\"text\"\n placeholder={hideLabel ? name : undefined}\n value={value}\n onChange={(e) => handleChange(e.target.value)}\n onBlur={handleBlur}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n ) : (\n <Textarea\n className=\"nodrag\"\n readOnly={readOnly}\n width=\"100%\"\n size={size}\n placeholder={hideLabel ? name : undefined}\n value={value}\n onChange={(e) => handleChange(e.target.value)}\n onBlur={handleBlur}\n rows={3}\n resize=\"vertical\"\n />\n )}\n </Box>\n )}\n </Box>\n );\n};\n","import { Flex, type FlexProps } from \"@chakra-ui/react\";\n\ninterface ParamEditorInlineGroupProps extends FlexProps {}\n\n// A horizontal row of controls that share a line (e.g. paired x/y inputs).\nexport const ParamEditorInlineGroup = (props: ParamEditorInlineGroupProps) => {\n const { children, ...rest } = props;\n\n return (\n <Flex alignItems=\"center\" gap=\"xs\" minW=\"0\" {...rest}>\n {children}\n </Flex>\n );\n};\n","import type { VectorValue } from \"../param-editor.types\";\nimport { clampToRange } from \"./numeric-value\";\n\nexport interface VectorBounds {\n min?: number;\n max?: number;\n}\n\nconst clampAxis = (value: number, bounds: VectorBounds) => {\n if (bounds.min === undefined && bounds.max === undefined) return value;\n const min = bounds.min ?? Number.NEGATIVE_INFINITY;\n const max = bounds.max ?? Number.POSITIVE_INFINITY;\n return clampToRange(value, min, max);\n};\n\n/** Update a single axis without dropping the other, clamping into optional bounds. */\nexport const updateVectorAxis = (\n value: VectorValue,\n axis: \"x\" | \"y\",\n next: number,\n bounds: VectorBounds = {},\n): VectorValue => {\n const clamped = clampAxis(next, bounds);\n return axis === \"x\" ? { x: clamped, y: value.y } : { x: value.x, y: clamped };\n};\n","import { Flex, Text } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport type { VectorValue } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { ParamEditorInlineGroup } from \"../param-editor-inline-group\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\nimport { NumberInput } from \"./number-input\";\nimport { updateVectorAxis } from \"./vector-value\";\n\ninterface VectorInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: VectorValue;\n xLabel?: string;\n yLabel?: string;\n min?: number;\n max?: number;\n step?: number;\n onChange: (id: string, value: VectorValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n}\n\ninterface VectorAxisFieldProps {\n label: string;\n fieldId: string;\n value: number;\n min?: number;\n max?: number;\n step?: number;\n onCommit: (value: number) => void;\n}\n\n// A single axis: the shared NumberInput (label/slider hidden) prefixed with its axis letter.\nconst VectorAxisField = (props: VectorAxisFieldProps) => {\n const { label, fieldId, value, min, max, step, onCommit } = props;\n\n return (\n <Flex alignItems=\"center\" gap=\"1\" flexShrink={0}>\n <Text textStyle=\"label/XS/regular\" color=\"fg.muted\" width=\"1rem\" flexShrink={0}>\n {label}\n </Text>\n <NumberInput\n id={fieldId}\n name={label}\n description=\"\"\n defaultValue={value}\n min={min}\n max={max}\n step={step}\n hideLabel\n hideSlider\n onChange={(_, next) => onCommit(next)}\n />\n </Flex>\n );\n};\n\nexport const VectorInput = (props: VectorInputProps) => {\n const {\n id,\n name,\n description,\n defaultValue,\n xLabel = \"X\",\n yLabel = \"Y\",\n min,\n max,\n step = 1,\n onChange,\n readOnly,\n } = props;\n const [value, setValue] = useState<VectorValue>(defaultValue);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const commitAxis = (axis: \"x\" | \"y\", next: number) => {\n const updated = updateVectorAxis(value, axis, next, { min, max });\n setValue(updated);\n onChange(id, updated);\n };\n\n if (readOnly) {\n return (\n <ParamEditorControlItem name={name} description={description}>\n <ParamEditorReadOnlyValue>{`${value.x}, ${value.y}`}</ParamEditorReadOnlyValue>\n </ParamEditorControlItem>\n );\n }\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation=\"stacked\">\n <ParamEditorInlineGroup>\n <VectorAxisField\n label={xLabel}\n fieldId={`${id}.x`}\n value={value.x}\n min={min}\n max={max}\n step={step}\n onCommit={(next) => commitAxis(\"x\", next)}\n />\n <VectorAxisField\n label={yLabel}\n fieldId={`${id}.y`}\n value={value.y}\n min={min}\n max={max}\n step={step}\n onCommit={(next) => commitAxis(\"y\", next)}\n />\n </ParamEditorInlineGroup>\n </ParamEditorControlItem>\n );\n};\n","import type { ParamValueMap } from \"./param-editor.types\";\n\nexport const resolveParamValue = <T>(defaultValues: ParamValueMap, paramId: string, fallback: T) =>\n defaultValues[paramId] === undefined ? fallback : (defaultValues[paramId] as T);\n","import { ActionInput } from \"./inputs/action-input\";\nimport { AnchorGridInput } from \"./inputs/anchor-grid-input\";\nimport { FileUploadInput } from \"./inputs/file-upload-input\";\nimport { RangeInput } from \"./inputs/range-input\";\nimport { SegmentedInput } from \"./inputs/segmented-input\";\nimport { VectorInput } from \"./inputs/vector-input\";\nimport type { Param, ParamValue, ParamValueMap } from \"./param-editor.types\";\nimport { resolveParamValue } from \"./resolve-param-value\";\n\ntype AdvancedParam = Extract<\n Param,\n { type: \"range\" | \"segmented\" | \"actions\" | \"anchorGrid\" | \"vector\" | \"fileUpload\" }\n>;\n\ninterface ParamEditorAdvancedFieldProps {\n param: AdvancedParam;\n defaultValues: ParamValueMap;\n onChange: (id: string, value: ParamValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n presentation: \"stacked\" | \"horizontal\";\n}\n\nexport const ParamEditorAdvancedField = (props: ParamEditorAdvancedFieldProps) => {\n const { param, defaultValues, onChange, readOnly, fullWidth, presentation } = props;\n const common = {\n id: param.id,\n readOnly: readOnly || param.readOnly,\n onChange,\n fullWidth: presentation === \"horizontal\" ? false : fullWidth,\n };\n\n switch (param.type) {\n case \"range\":\n return (\n <RangeInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n min={param.min}\n max={param.max}\n step={param.step}\n unit={param.unit}\n markerCount={param.markerCount}\n presentation={presentation}\n />\n );\n case \"segmented\":\n return (\n <SegmentedInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n options={param.options}\n variant={param.variant}\n presentation={presentation}\n />\n );\n case \"actions\":\n return (\n <ActionInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n options={param.options}\n presentation={presentation}\n />\n );\n case \"anchorGrid\":\n if (presentation === \"horizontal\") return null;\n return (\n <AnchorGridInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n />\n );\n case \"vector\":\n return (\n <VectorInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n xLabel={param.xLabel}\n yLabel={param.yLabel}\n min={param.min}\n max={param.max}\n step={param.step}\n />\n );\n case \"fileUpload\":\n return (\n <FileUploadInput\n id={param.id}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n accept={param.accept}\n multiple={param.multiple}\n uploadLabel={param.uploadLabel}\n readOnly={common.readOnly}\n presentation={presentation}\n onChange={onChange}\n />\n );\n }\n};\n","import type { Param } from \"./param-editor.types\";\n\nexport const isParamEditorRichControl = (param: Param) => param.type === \"fileUpload\";\n\nexport const isParamEditorHorizontalControl = (param: Param) => param.type !== \"anchorGrid\";\n","import { Badge, HStack, Image } from \"@chakra-ui/react\";\nimport type { Param } from \"./param-editor.types\";\nimport { ParamEditorControlItem } from \"./param-editor-control-item\";\nimport { ParamEditorReadOnlyValue } from \"./param-editor-read-only-value\";\n\ninterface ParamEditorReadOnlyFieldProps {\n param: Extract<Param, { type: \"readOnly\" }>;\n fullWidth?: boolean;\n}\n\nconst formatPrimitive = (value: string | number | boolean | null) => {\n if (value === null || value === \"\") return \"Not provided\";\n return String(value);\n};\n\nconst ReadOnlyContent = (props: Pick<ParamEditorReadOnlyFieldProps[\"param\"], \"value\">) => {\n const { value } = props;\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return <ParamEditorReadOnlyValue color=\"fg.muted\">None</ParamEditorReadOnlyValue>;\n }\n\n return (\n <HStack gap=\"2xs\" flexWrap=\"wrap\">\n {value.map((item, index) => (\n <Badge key={`${String(item)}-${index}`} variant=\"subtle\" colorPalette=\"gray\">\n {formatPrimitive(item)}\n </Badge>\n ))}\n </HStack>\n );\n }\n\n if (typeof value === \"object\" && value !== null) {\n const images = value.type === \"image\" ? [{ src: value.src, alt: value.alt }] : value.images;\n return (\n <HStack gap=\"2xs\" flexWrap=\"wrap\">\n {images.map((image) => (\n <Image\n key={`${image.src}-${image.alt}`}\n src={image.src}\n alt={image.alt}\n width=\"96px\"\n height=\"72px\"\n borderRadius=\"sm\"\n borderWidth=\"1px\"\n borderColor=\"border.subtle\"\n objectFit=\"cover\"\n />\n ))}\n </HStack>\n );\n }\n\n if (typeof value === \"boolean\") {\n return <ParamEditorReadOnlyValue>{formatPrimitive(value)}</ParamEditorReadOnlyValue>;\n }\n\n return (\n <ParamEditorReadOnlyValue color={value === null || value === \"\" ? \"fg.muted\" : \"fg\"}>\n {formatPrimitive(value)}\n </ParamEditorReadOnlyValue>\n );\n};\n\nexport const ParamEditorReadOnlyField = (props: ParamEditorReadOnlyFieldProps) => {\n const { param, fullWidth } = props;\n\n return (\n <ParamEditorControlItem name={param.name} description={param.description} fullWidth={fullWidth}>\n <ReadOnlyContent value={param.value} />\n </ParamEditorControlItem>\n );\n};\n","import { Box, Flex } from \"@chakra-ui/react\";\nimport { BooleanInput } from \"./inputs/boolean-input\";\nimport { ColorInput } from \"./inputs/color-input\";\nimport { DateInput } from \"./inputs/date-input\";\nimport { HorizontalTextInput } from \"./inputs/horizontal-text-input\";\nimport { MarkdownInput } from \"./inputs/markdown-input\";\nimport { NumberInput } from \"./inputs/number-input\";\nimport { ResourceInput } from \"./inputs/resource-input\";\nimport { SelectionInput } from \"./inputs/selection-input\";\nimport { TextInput } from \"./inputs/text-input\";\nimport type { Param, ParamValue, ParamValueMap, ResourceRefValue } from \"./param-editor.types\";\nimport { ParamEditorAdvancedField } from \"./param-editor-advanced-field\";\nimport { ParamEditorLabel } from \"./param-editor-label\";\nimport { isParamEditorRichControl } from \"./param-editor-presentation\";\nimport { ParamEditorReadOnlyField } from \"./param-editor-read-only-field\";\nimport { ParamEditorReadOnlyValue } from \"./param-editor-read-only-value\";\nimport { resolveParamValue } from \"./resolve-param-value\";\n\ninterface ParamEditorFieldProps {\n param: Param;\n defaultValues: ParamValueMap;\n onChange: (id: string, value: ParamValue) => void;\n onOpenResource?: (ref: ResourceRefValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n presentation?: \"stacked\" | \"horizontal\";\n size?: \"xs\" | \"sm\";\n}\n\nconst PropertyField = (props: { param: Extract<Param, { type: \"property\" }>; fullWidth?: boolean }) => {\n const { param, fullWidth } = props;\n\n if (fullWidth) {\n return (\n <Box>\n <Box mb=\"xs\">\n <ParamEditorLabel name={param.name} description={param.description} />\n </Box>\n <ParamEditorReadOnlyValue>{param.value}</ParamEditorReadOnlyValue>\n </Box>\n );\n }\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n <ParamEditorLabel name={param.name} description={param.description} />\n <ParamEditorReadOnlyValue>{param.value}</ParamEditorReadOnlyValue>\n </Flex>\n );\n};\n\nexport const ParamEditorField = (props: ParamEditorFieldProps) => {\n const {\n param,\n defaultValues,\n onChange,\n onOpenResource,\n readOnly,\n fullWidth = false,\n presentation = \"stacked\",\n size = \"sm\",\n } = props;\n const horizontal = presentation === \"horizontal\";\n const richControl = isParamEditorRichControl(param);\n const common = {\n id: param.id,\n readOnly: readOnly || param.readOnly,\n onChange,\n fullWidth: horizontal ? richControl : fullWidth,\n size,\n };\n\n switch (param.type) {\n case \"number\":\n return (\n <NumberInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n min={param.min}\n max={param.max}\n step={param.step}\n hideLabel={horizontal}\n hideSlider={horizontal}\n />\n );\n case \"boolean\":\n return (\n <BooleanInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n hideLabel={horizontal}\n />\n );\n case \"text\":\n if (horizontal) {\n return (\n <HorizontalTextInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n hideLabel\n />\n );\n }\n return (\n <TextInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n singleLine={param.singleLine}\n />\n );\n case \"markdown\":\n return (\n <MarkdownInput\n id={param.id}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n placeholder={param.placeholder}\n readOnly={common.readOnly}\n presentation={presentation}\n size={size}\n onChange={onChange}\n />\n );\n case \"selection\":\n return (\n <SelectionInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n options={param.options}\n multiSelect={param.multiSelect}\n placeholder={param.placeholder}\n clearable={param.clearable}\n disabled={param.disabled}\n searchable={param.searchable}\n searchPlaceholder={param.searchPlaceholder}\n emptyText={param.emptyText}\n group={\n param.group\n ? {\n ...param.group,\n defaultValue: resolveParamValue(defaultValues, param.group.id, param.group.defaultValue),\n }\n : undefined\n }\n hideLabel={horizontal}\n />\n );\n case \"date\":\n return (\n <DateInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n min={param.min}\n max={param.max}\n hideLabel={horizontal}\n />\n );\n case \"color\":\n return (\n <ColorInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n hideLabel={horizontal}\n />\n );\n case \"property\":\n return <PropertyField param={param} fullWidth={horizontal ? false : fullWidth} />;\n case \"readOnly\":\n return <ParamEditorReadOnlyField param={param} fullWidth={horizontal ? false : fullWidth} />;\n case \"resource\":\n return (\n <ResourceInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n options={param.options}\n multiSelect={param.multiSelect}\n editable={param.editable}\n placeholder={param.placeholder}\n emptyText={param.emptyText}\n onOpenResource={onOpenResource}\n presentation={presentation}\n />\n );\n case \"range\":\n case \"segmented\":\n case \"actions\":\n case \"anchorGrid\":\n case \"vector\":\n case \"fileUpload\":\n return (\n <ParamEditorAdvancedField\n param={param}\n defaultValues={defaultValues}\n onChange={onChange}\n readOnly={readOnly}\n fullWidth={fullWidth}\n presentation={presentation}\n />\n );\n default:\n return null;\n }\n};\n"],"names":["isImage","file","type","startsWith","formatSize","bytes","toString","Math","round","toFixed","AttachmentChip","props","$","_c","removeLabel","disabled","onRemove","previewUrl","setPreviewUrl","useState","t0","t1","url","URL","createObjectURL","revokeObjectURL","useEffect","t2","name","jsx","Text","t3","jsxs","Popover","placement","chakra","Image","t4","size","t5","t6","Symbol","for","X","t7","IconButton","t8","Badge","ParamEditorLabel","description","compact","undefined","Tooltip","Icon","CircleHelp","HStack","ParamEditorControlItem","hideLabel","fullWidth","orientation","labelTrailing","children","ParamEditorFieldLabel","label","header","Flex","Box","Chip","generatedGlyphStyles","GLYPH_RULE","glyphContent","Map","Array","from","matchAll","content","GLYPH_OPTICAL_SIZE","GLYPH_BASELINE_OFFSET","GlyphRoot","glyphStyles","fontSize","position","display","verticalAlign","flexShrink","boxSize","lineHeight","containerType","inset","fontFamily","fontStyle","fontWeight","textAlign","transform","createGlyphIcon","glyph","options","styles","get","scale","GlyphIcon","displayName","optionColors","value","icon","levelGlyph","optionIcons","Ban","Flag","Bug","Sparkles","BookOpen","Wrench","Zap","Feather","Scale","Layers","Star","Flame","Lightbulb","Shield","Eye","Timer","Tag","Code","Rocket","Heart","Bookmark","Target","Bell","Hash","Ticket","GitBranch","Bot","Puzzle","Workflow","Kanban","MessageSquare","Folder","FileText","History","Play","Terminal","Cpu","Users","Component","SquareKanban","GitCommitHorizontal","Inbox","ListChecks","Archive","Link","Settings","getIconComponent","iconOptions","normalizedName","replace","toLowerCase","find","Circle","Switch","React","forwardRef","ref","inputProps","rest","rootRef","thumbLabel","trackLabel","interactiveCursor","ChakraSwitch","off","on","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","ColorInput","open","setOpen","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","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":"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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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"}