@uipath/apollo-wind 2.62.0 → 2.64.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/dist/components/forms/aria-ids.cjs +38 -0
  2. package/dist/components/forms/aria-ids.d.ts +2 -0
  3. package/dist/components/forms/aria-ids.js +4 -0
  4. package/dist/components/forms/demo-mocks.cjs +0 -448
  5. package/dist/components/forms/demo-mocks.js +0 -448
  6. package/dist/components/forms/field-control.cjs +21 -17
  7. package/dist/components/forms/field-control.d.ts +3 -1
  8. package/dist/components/forms/field-control.js +21 -17
  9. package/dist/components/forms/field-renderer.cjs +65 -37
  10. package/dist/components/forms/field-renderer.js +66 -38
  11. package/dist/components/forms/form-designer.cjs +204 -3
  12. package/dist/components/forms/form-designer.js +204 -3
  13. package/dist/components/forms/form-examples.cjs +3 -190
  14. package/dist/components/forms/form-examples.d.ts +0 -10
  15. package/dist/components/forms/form-examples.js +3 -184
  16. package/dist/components/forms/form-schema.d.ts +6 -0
  17. package/dist/components/forms/metadata-form.cjs +9 -1
  18. package/dist/components/forms/metadata-form.d.ts +8 -1
  19. package/dist/components/forms/metadata-form.js +9 -1
  20. package/dist/components/forms/mode-aware-field.cjs +11 -6
  21. package/dist/components/forms/mode-aware-field.d.ts +2 -0
  22. package/dist/components/forms/mode-aware-field.js +11 -6
  23. package/dist/components/forms/string-list-field.cjs +5 -4
  24. package/dist/components/forms/string-list-field.d.ts +4 -2
  25. package/dist/components/forms/string-list-field.js +5 -4
  26. package/dist/components/ui/folder-picker/components/folder-breadcrumb.cjs +72 -0
  27. package/dist/components/ui/folder-picker/components/folder-breadcrumb.d.ts +14 -0
  28. package/dist/components/ui/folder-picker/components/folder-breadcrumb.js +38 -0
  29. package/dist/components/ui/folder-picker/components/folder-picker-empty-state.cjs +75 -0
  30. package/dist/components/ui/folder-picker/components/folder-picker-empty-state.d.ts +26 -0
  31. package/dist/components/ui/folder-picker/components/folder-picker-empty-state.js +41 -0
  32. package/dist/components/ui/folder-picker/components/folder-picker-footer.cjs +70 -0
  33. package/dist/components/ui/folder-picker/components/folder-picker-footer.d.ts +20 -0
  34. package/dist/components/ui/folder-picker/components/folder-picker-footer.js +36 -0
  35. package/dist/components/ui/folder-picker/components/folder-picker-search.cjs +79 -0
  36. package/dist/components/ui/folder-picker/components/folder-picker-search.d.ts +14 -0
  37. package/dist/components/ui/folder-picker/components/folder-picker-search.js +45 -0
  38. package/dist/components/ui/folder-picker/components/folder-row.cjs +107 -0
  39. package/dist/components/ui/folder-picker/components/folder-row.d.ts +27 -0
  40. package/dist/components/ui/folder-picker/components/folder-row.js +73 -0
  41. package/dist/components/ui/folder-picker/folder-picker.cjs +465 -0
  42. package/dist/components/ui/folder-picker/folder-picker.d.ts +34 -0
  43. package/dist/components/ui/folder-picker/folder-picker.js +425 -0
  44. package/dist/components/ui/folder-picker/index.cjs +42 -0
  45. package/dist/components/ui/folder-picker/index.d.ts +2 -0
  46. package/dist/components/ui/folder-picker/index.js +2 -0
  47. package/dist/components/ui/folder-picker/types.cjs +44 -0
  48. package/dist/components/ui/folder-picker/types.d.ts +97 -0
  49. package/dist/components/ui/folder-picker/types.js +4 -0
  50. package/dist/components/ui/index.cjs +26 -26
  51. package/dist/components/ui/json-tree-view/JsonTree.types.d.ts +13 -0
  52. package/dist/components/ui/json-tree-view/JsonTreeRow.cjs +2 -1
  53. package/dist/components/ui/json-tree-view/JsonTreeRow.js +2 -1
  54. package/dist/components/ui/json-tree-view/JsonTypeBadge.cjs +43 -6
  55. package/dist/components/ui/json-tree-view/JsonTypeBadge.d.ts +6 -3
  56. package/dist/components/ui/json-tree-view/JsonTypeBadge.js +44 -7
  57. package/dist/components/ui/json-tree-view/index.d.ts +1 -1
  58. package/dist/components/ui/json-tree-view/strings.cjs +1 -0
  59. package/dist/components/ui/json-tree-view/strings.d.ts +10 -2
  60. package/dist/components/ui/json-tree-view/strings.js +1 -0
  61. package/dist/components/ui/prompt-value-control.cjs +3 -1
  62. package/dist/components/ui/prompt-value-control.d.ts +5 -0
  63. package/dist/components/ui/prompt-value-control.js +3 -1
  64. package/dist/components/ui/variable-value-control.cjs +3 -1
  65. package/dist/components/ui/variable-value-control.d.ts +5 -0
  66. package/dist/components/ui/variable-value-control.js +3 -1
  67. package/dist/index.cjs +13 -3
  68. package/dist/index.d.ts +3 -1
  69. package/dist/index.js +2 -1
  70. package/dist/styles.css +41 -0
  71. package/package.json +1 -1
  72. package/dist/templates/Forms/form-builder-example.d.ts +0 -1
@@ -15,7 +15,7 @@ var __webpack_modules__ = {
15
15
  "./avatar" (module) {
16
16
  module.exports = require("./avatar.cjs");
17
17
  },
18
- "./badge" (module) {
18
+ "@/components/ui/badge" (module) {
19
19
  module.exports = require("./badge.cjs");
20
20
  },
21
21
  "./boolean-radio-group" (module) {
@@ -33,16 +33,16 @@ var __webpack_modules__ = {
33
33
  "@/components/ui/calendar" (module) {
34
34
  module.exports = require("./calendar.cjs");
35
35
  },
36
- "./card" (module) {
36
+ "@/components/ui/card" (module) {
37
37
  module.exports = require("./card.cjs");
38
38
  },
39
39
  "./chart" (module) {
40
40
  module.exports = require("./chart.cjs");
41
41
  },
42
- "./checkbox" (module) {
42
+ "@/components/ui/checkbox" (module) {
43
43
  module.exports = require("./checkbox.cjs");
44
44
  },
45
- "./collapsible" (module) {
45
+ "@/components/ui/collapsible" (module) {
46
46
  module.exports = require("./collapsible.cjs");
47
47
  },
48
48
  "./combobox" (module) {
@@ -51,7 +51,7 @@ var __webpack_modules__ = {
51
51
  "@/components/ui/command" (module) {
52
52
  module.exports = require("./command.cjs");
53
53
  },
54
- "./context-menu" (module) {
54
+ "@/components/ui/context-menu" (module) {
55
55
  module.exports = require("./context-menu.cjs");
56
56
  },
57
57
  "./data-table" (module) {
@@ -63,16 +63,16 @@ var __webpack_modules__ = {
63
63
  "./datetime-picker" (module) {
64
64
  module.exports = require("./datetime-picker.cjs");
65
65
  },
66
- "@/components/ui/dialog" (module) {
66
+ "./dialog" (module) {
67
67
  module.exports = require("./dialog.cjs");
68
68
  },
69
69
  "./drawer" (module) {
70
70
  module.exports = require("./drawer.cjs");
71
71
  },
72
- "./dropdown-menu" (module) {
72
+ "@/components/ui/dropdown-menu" (module) {
73
73
  module.exports = require("./dropdown-menu.cjs");
74
74
  },
75
- "./editable-cell" (module) {
75
+ "@/components/ui/editable-cell" (module) {
76
76
  module.exports = require("./editable-cell.cjs");
77
77
  },
78
78
  "./empty-state" (module) {
@@ -93,7 +93,7 @@ var __webpack_modules__ = {
93
93
  "./hover-card" (module) {
94
94
  module.exports = require("./hover-card.cjs");
95
95
  },
96
- "./info-tooltip" (module) {
96
+ "@/components/ui/info-tooltip" (module) {
97
97
  module.exports = require("./info-tooltip.cjs");
98
98
  },
99
99
  "@/components/ui/input-group" (module) {
@@ -108,7 +108,7 @@ var __webpack_modules__ = {
108
108
  "@/components/ui/label" (module) {
109
109
  module.exports = require("./label.cjs");
110
110
  },
111
- "./layout" (module) {
111
+ "@/components/ui/layout" (module) {
112
112
  module.exports = require("./layout/index.cjs");
113
113
  },
114
114
  "./lockable-value-field" (module) {
@@ -183,7 +183,7 @@ var __webpack_modules__ = {
183
183
  "./switch" (module) {
184
184
  module.exports = require("./switch.cjs");
185
185
  },
186
- "./table" (module) {
186
+ "@/components/ui/table" (module) {
187
187
  module.exports = require("./table.cjs");
188
188
  },
189
189
  "./tabs" (module) {
@@ -198,13 +198,13 @@ var __webpack_modules__ = {
198
198
  "@/components/ui/toggle" (module) {
199
199
  module.exports = require("./toggle.cjs");
200
200
  },
201
- "./tooltip" (module) {
201
+ "@/components/ui/tooltip" (module) {
202
202
  module.exports = require("./tooltip.cjs");
203
203
  },
204
204
  "./tree-view" (module) {
205
205
  module.exports = require("./tree-view.cjs");
206
206
  },
207
- "./variable-picker" (module) {
207
+ "@/components/ui/variable-picker" (module) {
208
208
  module.exports = require("./variable-picker/index.cjs");
209
209
  },
210
210
  "./variable-value-control" (module) {
@@ -298,7 +298,7 @@ var __webpack_exports__ = {};
298
298
  "TreeView"
299
299
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_avatar__rspack_import_4[__rspack_import_key];
300
300
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
301
- var _badge__rspack_import_5 = __webpack_require__("./badge");
301
+ var _badge__rspack_import_5 = __webpack_require__("@/components/ui/badge");
302
302
  var __rspack_reexport = {};
303
303
  for(const __rspack_import_key in _badge__rspack_import_5)if ([
304
304
  "default",
@@ -346,7 +346,7 @@ var __webpack_exports__ = {};
346
346
  "TreeView"
347
347
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_calendar__rspack_import_10[__rspack_import_key];
348
348
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
349
- var _card__rspack_import_11 = __webpack_require__("./card");
349
+ var _card__rspack_import_11 = __webpack_require__("@/components/ui/card");
350
350
  var __rspack_reexport = {};
351
351
  for(const __rspack_import_key in _card__rspack_import_11)if ([
352
352
  "default",
@@ -362,7 +362,7 @@ var __webpack_exports__ = {};
362
362
  "TreeView"
363
363
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_chart__rspack_import_12[__rspack_import_key];
364
364
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
365
- var _checkbox__rspack_import_13 = __webpack_require__("./checkbox");
365
+ var _checkbox__rspack_import_13 = __webpack_require__("@/components/ui/checkbox");
366
366
  var __rspack_reexport = {};
367
367
  for(const __rspack_import_key in _checkbox__rspack_import_13)if ([
368
368
  "default",
@@ -370,7 +370,7 @@ var __webpack_exports__ = {};
370
370
  "TreeView"
371
371
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_checkbox__rspack_import_13[__rspack_import_key];
372
372
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
373
- var _collapsible__rspack_import_14 = __webpack_require__("./collapsible");
373
+ var _collapsible__rspack_import_14 = __webpack_require__("@/components/ui/collapsible");
374
374
  var __rspack_reexport = {};
375
375
  for(const __rspack_import_key in _collapsible__rspack_import_14)if ([
376
376
  "default",
@@ -394,7 +394,7 @@ var __webpack_exports__ = {};
394
394
  "TreeView"
395
395
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_command__rspack_import_16[__rspack_import_key];
396
396
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
397
- var _context_menu__rspack_import_17 = __webpack_require__("./context-menu");
397
+ var _context_menu__rspack_import_17 = __webpack_require__("@/components/ui/context-menu");
398
398
  var __rspack_reexport = {};
399
399
  for(const __rspack_import_key in _context_menu__rspack_import_17)if ([
400
400
  "default",
@@ -426,7 +426,7 @@ var __webpack_exports__ = {};
426
426
  "TreeView"
427
427
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_datetime_picker__rspack_import_20[__rspack_import_key];
428
428
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
429
- var _dialog__rspack_import_21 = __webpack_require__("@/components/ui/dialog");
429
+ var _dialog__rspack_import_21 = __webpack_require__("./dialog");
430
430
  var __rspack_reexport = {};
431
431
  for(const __rspack_import_key in _dialog__rspack_import_21)if ([
432
432
  "default",
@@ -442,7 +442,7 @@ var __webpack_exports__ = {};
442
442
  "TreeView"
443
443
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_drawer__rspack_import_22[__rspack_import_key];
444
444
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
445
- var _dropdown_menu__rspack_import_23 = __webpack_require__("./dropdown-menu");
445
+ var _dropdown_menu__rspack_import_23 = __webpack_require__("@/components/ui/dropdown-menu");
446
446
  var __rspack_reexport = {};
447
447
  for(const __rspack_import_key in _dropdown_menu__rspack_import_23)if ([
448
448
  "default",
@@ -450,7 +450,7 @@ var __webpack_exports__ = {};
450
450
  "TreeView"
451
451
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_dropdown_menu__rspack_import_23[__rspack_import_key];
452
452
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
453
- var _editable_cell__rspack_import_24 = __webpack_require__("./editable-cell");
453
+ var _editable_cell__rspack_import_24 = __webpack_require__("@/components/ui/editable-cell");
454
454
  var __rspack_reexport = {};
455
455
  for(const __rspack_import_key in _editable_cell__rspack_import_24)if ([
456
456
  "default",
@@ -506,7 +506,7 @@ var __webpack_exports__ = {};
506
506
  "TreeView"
507
507
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_hover_card__rspack_import_30[__rspack_import_key];
508
508
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
509
- var _info_tooltip__rspack_import_31 = __webpack_require__("./info-tooltip");
509
+ var _info_tooltip__rspack_import_31 = __webpack_require__("@/components/ui/info-tooltip");
510
510
  var __rspack_reexport = {};
511
511
  for(const __rspack_import_key in _info_tooltip__rspack_import_31)if ([
512
512
  "default",
@@ -546,7 +546,7 @@ var __webpack_exports__ = {};
546
546
  "TreeView"
547
547
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_label__rspack_import_35[__rspack_import_key];
548
548
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
549
- var _layout__rspack_import_36 = __webpack_require__("./layout");
549
+ var _layout__rspack_import_36 = __webpack_require__("@/components/ui/layout");
550
550
  var __rspack_reexport = {};
551
551
  for(const __rspack_import_key in _layout__rspack_import_36)if ([
552
552
  "default",
@@ -746,7 +746,7 @@ var __webpack_exports__ = {};
746
746
  "TreeView"
747
747
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_switch__rspack_import_60[__rspack_import_key];
748
748
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
749
- var _table__rspack_import_61 = __webpack_require__("./table");
749
+ var _table__rspack_import_61 = __webpack_require__("@/components/ui/table");
750
750
  var __rspack_reexport = {};
751
751
  for(const __rspack_import_key in _table__rspack_import_61)if ([
752
752
  "default",
@@ -786,7 +786,7 @@ var __webpack_exports__ = {};
786
786
  "TreeView"
787
787
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_toggle_group__rspack_import_65[__rspack_import_key];
788
788
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
789
- var _tooltip__rspack_import_66 = __webpack_require__("./tooltip");
789
+ var _tooltip__rspack_import_66 = __webpack_require__("@/components/ui/tooltip");
790
790
  var __rspack_reexport = {};
791
791
  for(const __rspack_import_key in _tooltip__rspack_import_66)if ([
792
792
  "default",
@@ -796,7 +796,7 @@ var __webpack_exports__ = {};
796
796
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
797
797
  var _tree_view__rspack_import_67 = __webpack_require__("./tree-view");
798
798
  var _tree_view__rspack_import_67_default = /*#__PURE__*/ __webpack_require__.n(_tree_view__rspack_import_67);
799
- var _variable_picker__rspack_import_68 = __webpack_require__("./variable-picker");
799
+ var _variable_picker__rspack_import_68 = __webpack_require__("@/components/ui/variable-picker");
800
800
  var __rspack_reexport = {};
801
801
  for(const __rspack_import_key in _variable_picker__rspack_import_68)if ([
802
802
  "default",
@@ -104,6 +104,19 @@ export interface NodeDecorationBadge {
104
104
  * neutral default, e.g. `'border-info/30 bg-info/10 text-info'`.
105
105
  */
106
106
  className?: string;
107
+ /**
108
+ * Marks the node as a reference to another variable. The badge gets a
109
+ * corner tab with an arrow, and its tooltip names the reference.
110
+ */
111
+ reference?: NodeBadgeReference;
112
+ }
113
+ /** A reference marker on a row's type badge. */
114
+ export interface NodeBadgeReference {
115
+ /**
116
+ * Where the value comes from, shown under the tooltip title
117
+ * (e.g. `'Live from Read customer · output.email'`).
118
+ */
119
+ source?: string;
107
120
  }
108
121
  /** Consumer-provided visual annotation for a tree node. */
109
122
  export interface NodeDecoration {
@@ -151,7 +151,8 @@ function JsonTreeRow({ node, depth }) {
151
151
  /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_JsonTypeBadge_cjs_namespaceObject.JsonTypeBadge, {
152
152
  type: node.type,
153
153
  icon: decoration?.badge?.icon ?? deriveTypeIcon?.(node),
154
- className: decoration?.badge?.className
154
+ className: decoration?.badge?.className,
155
+ reference: decoration?.badge?.reference
155
156
  }),
156
157
  /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_NodeKey_cjs_namespaceObject.NodeKey, {
157
158
  node: node,
@@ -121,7 +121,8 @@ function JsonTreeRow({ node, depth }) {
121
121
  /*#__PURE__*/ jsx(JsonTypeBadge, {
122
122
  type: node.type,
123
123
  icon: decoration?.badge?.icon ?? deriveTypeIcon?.(node),
124
- className: decoration?.badge?.className
124
+ className: decoration?.badge?.className,
125
+ reference: decoration?.badge?.reference
125
126
  }),
126
127
  /*#__PURE__*/ jsx(NodeKey, {
127
128
  node: node,
@@ -27,9 +27,10 @@ __webpack_require__.d(__webpack_exports__, {
27
27
  JsonTypeBadge: ()=>JsonTypeBadge
28
28
  });
29
29
  const jsx_runtime_namespaceObject = require("react/jsx-runtime");
30
- const index_cjs_namespaceObject = require("../../../lib/index.cjs");
31
30
  const external_lucide_react_namespaceObject = require("lucide-react");
31
+ const index_cjs_namespaceObject = require("../../../lib/index.cjs");
32
32
  const external_JsonTreeTooltip_cjs_namespaceObject = require("./JsonTreeTooltip.cjs");
33
+ const external_strings_cjs_namespaceObject = require("./strings.cjs");
33
34
  const TYPE_ICON = {
34
35
  string: external_lucide_react_namespaceObject.Type,
35
36
  number: external_lucide_react_namespaceObject.Hash,
@@ -46,18 +47,54 @@ const TYPE_LABEL = {
46
47
  array: 'Array',
47
48
  null: 'Null'
48
49
  };
49
- function JsonTypeBadge({ type, icon, className, tooltip }) {
50
+ function JsonTypeBadge({ type, icon, className, tooltip, reference }) {
51
+ const strings = (0, external_strings_cjs_namespaceObject.useJsonTreeViewStrings)();
50
52
  const DefaultIcon = TYPE_ICON[type];
51
- return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_JsonTreeTooltip_cjs_namespaceObject.JsonTreeTooltip, {
53
+ const box = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
54
+ className: (0, index_cjs_namespaceObject.cn)('inline-flex h-4.5 min-w-4.5 shrink-0 items-center justify-center rounded border border-border bg-surface-overlay px-0.5 text-foreground-muted [&_svg]:size-2.75', className),
55
+ children: icon ?? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(DefaultIcon, {})
56
+ });
57
+ if (!reference) return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_JsonTreeTooltip_cjs_namespaceObject.JsonTreeTooltip, {
52
58
  content: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
53
59
  className: "break-all font-mono text-xs font-semibold leading-4",
54
60
  children: tooltip ?? TYPE_LABEL[type]
55
61
  }),
56
62
  placement: "top",
57
63
  delay: true,
58
- children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
59
- className: (0, index_cjs_namespaceObject.cn)('inline-flex h-4.5 min-w-4.5 shrink-0 items-center justify-center rounded border border-border bg-surface-overlay px-0.5 text-foreground-muted [&_svg]:size-2.75', className),
60
- children: icon ?? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(DefaultIcon, {})
64
+ children: box
65
+ });
66
+ const title = strings.referenceType(TYPE_LABEL[type]);
67
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_JsonTreeTooltip_cjs_namespaceObject.JsonTreeTooltip, {
68
+ content: tooltip ?? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("span", {
69
+ className: "flex flex-col gap-0.5 leading-4",
70
+ children: [
71
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
72
+ className: "text-xs font-semibold",
73
+ children: title
74
+ }),
75
+ reference.source && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
76
+ className: "break-all text-xs text-foreground-muted",
77
+ children: reference.source
78
+ })
79
+ ]
80
+ }),
81
+ placement: "top",
82
+ delay: true,
83
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("span", {
84
+ className: "relative inline-flex shrink-0 rounded outline-none focus-visible:ring-2 focus-visible:ring-ring",
85
+ role: "img",
86
+ tabIndex: 0,
87
+ "aria-label": reference.source ? `${title}, ${reference.source}` : title,
88
+ children: [
89
+ box,
90
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
91
+ className: "absolute -right-1 -bottom-1 grid size-3 place-items-center rounded-[3px] border border-border bg-surface-overlay text-foreground-muted",
92
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_lucide_react_namespaceObject.ArrowUpRight, {
93
+ className: "size-2.5",
94
+ strokeWidth: 3
95
+ })
96
+ })
97
+ ]
61
98
  })
62
99
  });
63
100
  }
@@ -1,5 +1,5 @@
1
1
  import type { ReactNode } from 'react';
2
- import type { JsonTreeNodeType } from './JsonTree.types';
2
+ import type { JsonTreeNodeType, NodeBadgeReference } from './JsonTree.types';
3
3
  export interface JsonTypeBadgeProps {
4
4
  type: JsonTreeNodeType;
5
5
  /** Replaces the default type icon (e.g. a paperclip for file nodes). */
@@ -8,10 +8,13 @@ export interface JsonTypeBadgeProps {
8
8
  className?: string;
9
9
  /** Tooltip content on hover. Defaults to the capitalized type name. */
10
10
  tooltip?: ReactNode;
11
+ /** Marks the value as a reference: adds a corner tab with an arrow. */
12
+ reference?: NodeBadgeReference;
11
13
  }
12
14
  /**
13
15
  * Compact badge for a JSON value type. Deliberately neutral: the value text
14
16
  * carries the color coding, the badge only carries the type icon. Hovering it
15
- * shows the type name (override via `tooltip`).
17
+ * shows the type name (override via `tooltip`). A `reference` adds a corner
18
+ * tab with an arrow; it has no hover state of its own, only the tooltip.
16
19
  */
17
- export declare function JsonTypeBadge({ type, icon, className, tooltip }: JsonTypeBadgeProps): import("react/jsx-runtime").JSX.Element;
20
+ export declare function JsonTypeBadge({ type, icon, className, tooltip, reference }: JsonTypeBadgeProps): import("react/jsx-runtime").JSX.Element;
@@ -1,7 +1,8 @@
1
- import { jsx } from "react/jsx-runtime";
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { ArrowUpRight, Braces, Brackets, CircleSlash2, Hash, ToggleLeft, Type } from "lucide-react";
2
3
  import { cn } from "../../../lib/index.js";
3
- import { Braces, Brackets, CircleSlash2, Hash, ToggleLeft, Type } from "lucide-react";
4
4
  import { JsonTreeTooltip } from "./JsonTreeTooltip.js";
5
+ import { useJsonTreeViewStrings } from "./strings.js";
5
6
  const TYPE_ICON = {
6
7
  string: Type,
7
8
  number: Hash,
@@ -18,18 +19,54 @@ const TYPE_LABEL = {
18
19
  array: 'Array',
19
20
  null: 'Null'
20
21
  };
21
- function JsonTypeBadge({ type, icon, className, tooltip }) {
22
+ function JsonTypeBadge({ type, icon, className, tooltip, reference }) {
23
+ const strings = useJsonTreeViewStrings();
22
24
  const DefaultIcon = TYPE_ICON[type];
23
- return /*#__PURE__*/ jsx(JsonTreeTooltip, {
25
+ const box = /*#__PURE__*/ jsx("span", {
26
+ className: cn('inline-flex h-4.5 min-w-4.5 shrink-0 items-center justify-center rounded border border-border bg-surface-overlay px-0.5 text-foreground-muted [&_svg]:size-2.75', className),
27
+ children: icon ?? /*#__PURE__*/ jsx(DefaultIcon, {})
28
+ });
29
+ if (!reference) return /*#__PURE__*/ jsx(JsonTreeTooltip, {
24
30
  content: /*#__PURE__*/ jsx("span", {
25
31
  className: "break-all font-mono text-xs font-semibold leading-4",
26
32
  children: tooltip ?? TYPE_LABEL[type]
27
33
  }),
28
34
  placement: "top",
29
35
  delay: true,
30
- children: /*#__PURE__*/ jsx("span", {
31
- className: cn('inline-flex h-4.5 min-w-4.5 shrink-0 items-center justify-center rounded border border-border bg-surface-overlay px-0.5 text-foreground-muted [&_svg]:size-2.75', className),
32
- children: icon ?? /*#__PURE__*/ jsx(DefaultIcon, {})
36
+ children: box
37
+ });
38
+ const title = strings.referenceType(TYPE_LABEL[type]);
39
+ return /*#__PURE__*/ jsx(JsonTreeTooltip, {
40
+ content: tooltip ?? /*#__PURE__*/ jsxs("span", {
41
+ className: "flex flex-col gap-0.5 leading-4",
42
+ children: [
43
+ /*#__PURE__*/ jsx("span", {
44
+ className: "text-xs font-semibold",
45
+ children: title
46
+ }),
47
+ reference.source && /*#__PURE__*/ jsx("span", {
48
+ className: "break-all text-xs text-foreground-muted",
49
+ children: reference.source
50
+ })
51
+ ]
52
+ }),
53
+ placement: "top",
54
+ delay: true,
55
+ children: /*#__PURE__*/ jsxs("span", {
56
+ className: "relative inline-flex shrink-0 rounded outline-none focus-visible:ring-2 focus-visible:ring-ring",
57
+ role: "img",
58
+ tabIndex: 0,
59
+ "aria-label": reference.source ? `${title}, ${reference.source}` : title,
60
+ children: [
61
+ box,
62
+ /*#__PURE__*/ jsx("span", {
63
+ className: "absolute -right-1 -bottom-1 grid size-3 place-items-center rounded-[3px] border border-border bg-surface-overlay text-foreground-muted",
64
+ children: /*#__PURE__*/ jsx(ArrowUpRight, {
65
+ className: "size-2.5",
66
+ strokeWidth: 3
67
+ })
68
+ })
69
+ ]
33
70
  })
34
71
  });
35
72
  }
@@ -7,4 +7,4 @@ export * from './JsonTree';
7
7
  export * from './JsonTree.types';
8
8
  export * from './JsonTreeToolbar';
9
9
  export * from './JsonTypeBadge';
10
- export { DEFAULT_JSON_TREE_VIEW_STRINGS, type JsonTreeViewStrings, JsonTreeViewProvider, type JsonTreeViewProviderProps, useJsonTreeViewStrings, } from './strings';
10
+ export { DEFAULT_JSON_TREE_VIEW_STRINGS, type JsonTreeViewStrings, JsonTreeViewProvider, type JsonTreeViewProviderProps, type ResolvedJsonTreeViewStrings, useJsonTreeViewStrings, } from './strings';
@@ -41,6 +41,7 @@ const DEFAULT_JSON_TREE_VIEW_STRINGS = {
41
41
  itemCount: (count)=>1 === count ? '1 item' : `${count} items`,
42
42
  keyCount: (count)=>1 === count ? '1 key' : `${count} keys`,
43
43
  requiredMarker: 'required',
44
+ referenceType: (typeLabel)=>`${typeLabel} · reference`,
44
45
  pathCopied: 'Path copied',
45
46
  copyPathHint: 'Click to copy this path',
46
47
  copyPathFor: (path)=>`Copy path for ${path}`,
@@ -16,6 +16,12 @@ export interface JsonTreeViewStrings {
16
16
  keyCount: (count: number) => string;
17
17
  /** Screen-reader text for the required-field marker. */
18
18
  requiredMarker: string;
19
+ /**
20
+ * Type badge tooltip title for a reference, given the type name (e.g. "String").
21
+ * Optional so catalogs written before it was added still type-check; falls
22
+ * back to the English default.
23
+ */
24
+ referenceType?: (typeLabel: string) => string;
19
25
  pathCopied: string;
20
26
  copyPathHint: string;
21
27
  copyPathFor: (path: string) => string;
@@ -48,7 +54,9 @@ export interface JsonTreeViewStrings {
48
54
  expandAll: string;
49
55
  collapseAll: string;
50
56
  }
51
- export declare const DEFAULT_JSON_TREE_VIEW_STRINGS: JsonTreeViewStrings;
57
+ /** Strings with every optional key filled in, as the tree parts read them. */
58
+ export type ResolvedJsonTreeViewStrings = Required<JsonTreeViewStrings>;
59
+ export declare const DEFAULT_JSON_TREE_VIEW_STRINGS: ResolvedJsonTreeViewStrings;
52
60
  export interface JsonTreeViewProviderProps {
53
61
  /** Overrides merged over any outer provider's strings, then the English defaults. */
54
62
  strings?: Partial<JsonTreeViewStrings>;
@@ -61,5 +69,5 @@ export interface JsonTreeViewProviderProps {
61
69
  * including the toolbar and editors when they are rendered on their own.
62
70
  */
63
71
  export declare function JsonTreeViewProvider({ strings, tooltipContentClassName, children, }: JsonTreeViewProviderProps): import("react/jsx-runtime").JSX.Element;
64
- export declare function useJsonTreeViewStrings(): JsonTreeViewStrings;
72
+ export declare function useJsonTreeViewStrings(): ResolvedJsonTreeViewStrings;
65
73
  export declare function useJsonTreeViewTooltipClassName(): string | undefined;
@@ -10,6 +10,7 @@ const DEFAULT_JSON_TREE_VIEW_STRINGS = {
10
10
  itemCount: (count)=>1 === count ? '1 item' : `${count} items`,
11
11
  keyCount: (count)=>1 === count ? '1 key' : `${count} keys`,
12
12
  requiredMarker: 'required',
13
+ referenceType: (typeLabel)=>`${typeLabel} · reference`,
13
14
  pathCopied: 'Path copied',
14
15
  copyPathHint: 'Click to copy this path',
15
16
  copyPathFor: (path)=>`Copy path for ${path}`,
@@ -28,10 +28,11 @@ __webpack_require__.d(__webpack_exports__, {
28
28
  });
29
29
  const jsx_runtime_namespaceObject = require("react/jsx-runtime");
30
30
  const external_react_namespaceObject = require("react");
31
+ const aria_ids_cjs_namespaceObject = require("../forms/aria-ids.cjs");
31
32
  const value_mode_strings_cjs_namespaceObject = require("./field-addons/value-mode-strings.cjs");
32
33
  const external_textarea_cjs_namespaceObject = require("./textarea.cjs");
33
34
  const index_cjs_namespaceObject = require("../../lib/index.cjs");
34
- const PromptValueControl = /*#__PURE__*/ external_react_namespaceObject.forwardRef(({ id, name, value, onChange, onBlur, inputRef, disabled, placeholder, strings, className, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy }, ref)=>{
35
+ const PromptValueControl = /*#__PURE__*/ external_react_namespaceObject.forwardRef(({ id, name, value, onChange, onBlur, inputRef, disabled, placeholder, strings, className, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, 'aria-describedby': ariaDescribedBy, controlProps }, ref)=>{
35
36
  const text = {
36
37
  ...value_mode_strings_cjs_namespaceObject.DEFAULT_VALUE_MODE_STRINGS,
37
38
  ...strings
@@ -55,6 +56,7 @@ const PromptValueControl = /*#__PURE__*/ external_react_namespaceObject.forwardR
55
56
  className: className,
56
57
  "aria-label": ariaLabel,
57
58
  "aria-labelledby": ariaLabelledBy,
59
+ "aria-describedby": (0, aria_ids_cjs_namespaceObject.joinIds)(ariaDescribedBy, controlProps?.['aria-describedby']),
58
60
  rows: 1,
59
61
  minRows: 1,
60
62
  maxRows: 6
@@ -17,6 +17,11 @@ export interface PromptValueControlProps {
17
17
  className?: string;
18
18
  'aria-label'?: string;
19
19
  'aria-labelledby'?: string;
20
+ 'aria-describedby'?: string;
21
+ /** The value-mode wiring; its `aria-describedby` joins the control's own. */
22
+ controlProps?: {
23
+ 'aria-describedby'?: string;
24
+ };
20
25
  }
21
26
  /**
22
27
  * A prompt an agent fills the value from: a textarea that starts one line tall and grows to six.
@@ -1,9 +1,10 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { forwardRef, useCallback, useMemo } from "react";
3
+ import { joinIds } from "../forms/aria-ids.js";
3
4
  import { DEFAULT_VALUE_MODE_STRINGS } from "./field-addons/value-mode-strings.js";
4
5
  import { Textarea } from "./textarea.js";
5
6
  import { composeRefs } from "../../lib/index.js";
6
- const PromptValueControl = /*#__PURE__*/ forwardRef(({ id, name, value, onChange, onBlur, inputRef, disabled, placeholder, strings, className, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy }, ref)=>{
7
+ const PromptValueControl = /*#__PURE__*/ forwardRef(({ id, name, value, onChange, onBlur, inputRef, disabled, placeholder, strings, className, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, 'aria-describedby': ariaDescribedBy, controlProps }, ref)=>{
7
8
  const text = {
8
9
  ...DEFAULT_VALUE_MODE_STRINGS,
9
10
  ...strings
@@ -27,6 +28,7 @@ const PromptValueControl = /*#__PURE__*/ forwardRef(({ id, name, value, onChange
27
28
  className: className,
28
29
  "aria-label": ariaLabel,
29
30
  "aria-labelledby": ariaLabelledBy,
31
+ "aria-describedby": joinIds(ariaDescribedBy, controlProps?.['aria-describedby']),
30
32
  rows: 1,
31
33
  minRows: 1,
32
34
  maxRows: 6
@@ -28,12 +28,13 @@ __webpack_require__.d(__webpack_exports__, {
28
28
  });
29
29
  const jsx_runtime_namespaceObject = require("react/jsx-runtime");
30
30
  const external_react_namespaceObject = require("react");
31
+ const aria_ids_cjs_namespaceObject = require("../forms/aria-ids.cjs");
31
32
  const value_mode_strings_cjs_namespaceObject = require("./field-addons/value-mode-strings.cjs");
32
33
  const external_input_group_cjs_namespaceObject = require("./input-group.cjs");
33
34
  const external_popover_cjs_namespaceObject = require("./popover.cjs");
34
35
  const index_cjs_namespaceObject = require("./variable-picker/index.cjs");
35
36
  const external_lib_index_cjs_namespaceObject = require("../../lib/index.cjs");
36
- const VariableValueControl = /*#__PURE__*/ external_react_namespaceObject.forwardRef(({ id, value, onChange, onBlur, inputRef, variables, disabled, placeholder, strings, className, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy }, ref)=>{
37
+ const VariableValueControl = /*#__PURE__*/ external_react_namespaceObject.forwardRef(({ id, value, onChange, onBlur, inputRef, variables, disabled, placeholder, strings, className, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, 'aria-describedby': ariaDescribedBy, controlProps }, ref)=>{
37
38
  const text = {
38
39
  ...value_mode_strings_cjs_namespaceObject.DEFAULT_VALUE_MODE_STRINGS,
39
40
  ...strings
@@ -70,6 +71,7 @@ const VariableValueControl = /*#__PURE__*/ external_react_namespaceObject.forwar
70
71
  className: className,
71
72
  "aria-label": ariaLabel,
72
73
  "aria-labelledby": ariaLabelledBy,
74
+ "aria-describedby": (0, aria_ids_cjs_namespaceObject.joinIds)(ariaDescribedBy, controlProps?.['aria-describedby']),
73
75
  children: reference && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
74
76
  className: "truncate font-mono text-sm",
75
77
  children: reference
@@ -24,6 +24,11 @@ export interface VariableValueControlProps {
24
24
  className?: string;
25
25
  'aria-label'?: string;
26
26
  'aria-labelledby'?: string;
27
+ 'aria-describedby'?: string;
28
+ /** The value-mode wiring; its `aria-describedby` joins the control's own. */
29
+ controlProps?: {
30
+ 'aria-describedby'?: string;
31
+ };
27
32
  }
28
33
  /**
29
34
  * A value bound to a variable, for an `InputGroup`: the whole control is a picker whose trigger
@@ -1,11 +1,12 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { forwardRef, useCallback, useMemo, useState } from "react";
3
+ import { joinIds } from "../forms/aria-ids.js";
3
4
  import { DEFAULT_VALUE_MODE_STRINGS } from "./field-addons/value-mode-strings.js";
4
5
  import { InputGroupPopoverTrigger } from "./input-group.js";
5
6
  import { Popover, PopoverContent } from "./popover.js";
6
7
  import { VariablePickerContent } from "./variable-picker/index.js";
7
8
  import { composeRefs } from "../../lib/index.js";
8
- const VariableValueControl = /*#__PURE__*/ forwardRef(({ id, value, onChange, onBlur, inputRef, variables, disabled, placeholder, strings, className, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy }, ref)=>{
9
+ const VariableValueControl = /*#__PURE__*/ forwardRef(({ id, value, onChange, onBlur, inputRef, variables, disabled, placeholder, strings, className, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, 'aria-describedby': ariaDescribedBy, controlProps }, ref)=>{
9
10
  const text = {
10
11
  ...DEFAULT_VALUE_MODE_STRINGS,
11
12
  ...strings
@@ -42,6 +43,7 @@ const VariableValueControl = /*#__PURE__*/ forwardRef(({ id, value, onChange, on
42
43
  className: className,
43
44
  "aria-label": ariaLabel,
44
45
  "aria-labelledby": ariaLabelledBy,
46
+ "aria-describedby": joinIds(ariaDescribedBy, controlProps?.['aria-describedby']),
45
47
  children: reference && /*#__PURE__*/ jsx("span", {
46
48
  className: "truncate font-mono text-sm",
47
49
  children: reference