@uipath/apollo-wind 2.60.1 → 2.61.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 (152) hide show
  1. package/dist/components/forms/field-actions.cjs +181 -0
  2. package/dist/components/forms/field-actions.d.ts +131 -0
  3. package/dist/components/forms/field-actions.js +129 -0
  4. package/dist/components/forms/field-control.cjs +415 -0
  5. package/dist/components/forms/field-control.d.ts +52 -0
  6. package/dist/components/forms/field-control.js +372 -0
  7. package/dist/components/forms/field-renderer.cjs +77 -420
  8. package/dist/components/forms/field-renderer.d.ts +2 -3
  9. package/dist/components/forms/field-renderer.js +78 -421
  10. package/dist/components/forms/form-designer.cjs +7 -1
  11. package/dist/components/forms/form-designer.js +7 -1
  12. package/dist/components/forms/form-schema.d.ts +121 -2
  13. package/dist/components/forms/form-strings.cjs +67 -0
  14. package/dist/components/forms/form-strings.d.ts +30 -0
  15. package/dist/components/forms/form-strings.js +30 -0
  16. package/dist/components/forms/index.cjs +53 -9
  17. package/dist/components/forms/index.d.ts +6 -1
  18. package/dist/components/forms/index.js +6 -1
  19. package/dist/components/forms/literal-value-context.cjs +37 -0
  20. package/dist/components/forms/literal-value-context.d.ts +5 -0
  21. package/dist/components/forms/literal-value-context.js +3 -0
  22. package/dist/components/forms/metadata-form.cjs +100 -21
  23. package/dist/components/forms/metadata-form.d.ts +5 -0
  24. package/dist/components/forms/metadata-form.js +101 -22
  25. package/dist/components/forms/mode-aware-field.cjs +589 -0
  26. package/dist/components/forms/mode-aware-field.d.ts +15 -0
  27. package/dist/components/forms/mode-aware-field.js +555 -0
  28. package/dist/components/forms/opaque-value.cjs +44 -0
  29. package/dist/components/forms/opaque-value.d.ts +7 -0
  30. package/dist/components/forms/opaque-value.js +7 -0
  31. package/dist/components/forms/rules-engine.cjs +13 -0
  32. package/dist/components/forms/rules-engine.js +13 -0
  33. package/dist/components/forms/schema-serializer.cjs +8 -0
  34. package/dist/components/forms/schema-serializer.js +8 -0
  35. package/dist/components/forms/string-list-field.cjs +36 -18
  36. package/dist/components/forms/string-list-field.d.ts +6 -0
  37. package/dist/components/forms/string-list-field.js +35 -20
  38. package/dist/components/forms/validation-converter.cjs +32 -2
  39. package/dist/components/forms/validation-converter.d.ts +17 -1
  40. package/dist/components/forms/validation-converter.js +30 -3
  41. package/dist/components/forms/value-modes.cjs +253 -0
  42. package/dist/components/forms/value-modes.d.ts +236 -0
  43. package/dist/components/forms/value-modes.js +180 -0
  44. package/dist/components/ui/avatar.d.ts +1 -1
  45. package/dist/components/ui/badge.d.ts +1 -1
  46. package/dist/components/ui/boolean-radio-group.cjs +114 -0
  47. package/dist/components/ui/boolean-radio-group.d.ts +24 -0
  48. package/dist/components/ui/boolean-radio-group.js +77 -0
  49. package/dist/components/ui/button.d.ts +2 -2
  50. package/dist/components/ui/command.d.ts +7 -7
  51. package/dist/components/ui/field-addons/field-menu.cjs +1 -0
  52. package/dist/components/ui/field-addons/field-menu.d.ts +2 -0
  53. package/dist/components/ui/field-addons/field-menu.js +1 -0
  54. package/dist/components/ui/field-addons/index.cjs +4 -0
  55. package/dist/components/ui/field-addons/index.d.ts +1 -0
  56. package/dist/components/ui/field-addons/index.js +2 -1
  57. package/dist/components/ui/field-addons/value-mode-strings.cjs +7 -1
  58. package/dist/components/ui/field-addons/value-mode-strings.d.ts +9 -0
  59. package/dist/components/ui/field-addons/value-mode-strings.js +7 -1
  60. package/dist/components/ui/field-addons/value-mode-switch-dialog.cjs +73 -0
  61. package/dist/components/ui/field-addons/value-mode-switch-dialog.d.ts +16 -0
  62. package/dist/components/ui/field-addons/value-mode-switch-dialog.js +39 -0
  63. package/dist/components/ui/form-field.cjs +2 -1
  64. package/dist/components/ui/form-field.d.ts +2 -0
  65. package/dist/components/ui/form-field.js +2 -1
  66. package/dist/components/ui/index.cjs +230 -186
  67. package/dist/components/ui/index.d.ts +4 -0
  68. package/dist/components/ui/index.js +4 -0
  69. package/dist/components/ui/input-group.cjs +6 -3
  70. package/dist/components/ui/input-group.d.ts +6 -5
  71. package/dist/components/ui/input-group.js +6 -3
  72. package/dist/components/ui/json-tree-view/DecorationChip.cjs +81 -0
  73. package/dist/components/ui/json-tree-view/DecorationChip.d.ts +4 -0
  74. package/dist/components/ui/json-tree-view/DecorationChip.js +47 -0
  75. package/dist/components/ui/json-tree-view/EditorChrome.cjs +88 -0
  76. package/dist/components/ui/json-tree-view/EditorChrome.d.ts +21 -0
  77. package/dist/components/ui/json-tree-view/EditorChrome.js +51 -0
  78. package/dist/components/ui/json-tree-view/JsonContainerEditor.cjs +95 -0
  79. package/dist/components/ui/json-tree-view/JsonContainerEditor.d.ts +18 -0
  80. package/dist/components/ui/json-tree-view/JsonContainerEditor.js +61 -0
  81. package/dist/components/ui/json-tree-view/JsonLeafValueEditor.cjs +86 -0
  82. package/dist/components/ui/json-tree-view/JsonLeafValueEditor.d.ts +12 -0
  83. package/dist/components/ui/json-tree-view/JsonLeafValueEditor.js +52 -0
  84. package/dist/components/ui/json-tree-view/JsonMultilineLeafEditor.cjs +74 -0
  85. package/dist/components/ui/json-tree-view/JsonMultilineLeafEditor.d.ts +13 -0
  86. package/dist/components/ui/json-tree-view/JsonMultilineLeafEditor.js +40 -0
  87. package/dist/components/ui/json-tree-view/JsonTree.cjs +253 -0
  88. package/dist/components/ui/json-tree-view/JsonTree.d.ts +81 -0
  89. package/dist/components/ui/json-tree-view/JsonTree.js +219 -0
  90. package/dist/components/ui/json-tree-view/JsonTree.types.cjs +18 -0
  91. package/dist/components/ui/json-tree-view/JsonTree.types.d.ts +253 -0
  92. package/dist/components/ui/json-tree-view/JsonTree.types.js +0 -0
  93. package/dist/components/ui/json-tree-view/JsonTreeRow.cjs +284 -0
  94. package/dist/components/ui/json-tree-view/JsonTreeRow.d.ts +50 -0
  95. package/dist/components/ui/json-tree-view/JsonTreeRow.js +244 -0
  96. package/dist/components/ui/json-tree-view/JsonTreeToolbar.cjs +209 -0
  97. package/dist/components/ui/json-tree-view/JsonTreeToolbar.d.ts +35 -0
  98. package/dist/components/ui/json-tree-view/JsonTreeToolbar.js +175 -0
  99. package/dist/components/ui/json-tree-view/JsonTreeTooltip.cjs +84 -0
  100. package/dist/components/ui/json-tree-view/JsonTreeTooltip.d.ts +21 -0
  101. package/dist/components/ui/json-tree-view/JsonTreeTooltip.js +47 -0
  102. package/dist/components/ui/json-tree-view/JsonTypeBadge.cjs +70 -0
  103. package/dist/components/ui/json-tree-view/JsonTypeBadge.d.ts +17 -0
  104. package/dist/components/ui/json-tree-view/JsonTypeBadge.js +36 -0
  105. package/dist/components/ui/json-tree-view/NodeKey.cjs +77 -0
  106. package/dist/components/ui/json-tree-view/NodeKey.d.ts +16 -0
  107. package/dist/components/ui/json-tree-view/NodeKey.js +43 -0
  108. package/dist/components/ui/json-tree-view/RowActions.cjs +120 -0
  109. package/dist/components/ui/json-tree-view/RowActions.d.ts +15 -0
  110. package/dist/components/ui/json-tree-view/RowActions.js +86 -0
  111. package/dist/components/ui/json-tree-view/ScalarValueCell.cjs +112 -0
  112. package/dist/components/ui/json-tree-view/ScalarValueCell.d.ts +18 -0
  113. package/dist/components/ui/json-tree-view/ScalarValueCell.js +75 -0
  114. package/dist/components/ui/json-tree-view/buildJsonTree.cjs +324 -0
  115. package/dist/components/ui/json-tree-view/buildJsonTree.d.ts +75 -0
  116. package/dist/components/ui/json-tree-view/buildJsonTree.js +257 -0
  117. package/dist/components/ui/json-tree-view/clipboard.cjs +63 -0
  118. package/dist/components/ui/json-tree-view/clipboard.d.ts +6 -0
  119. package/dist/components/ui/json-tree-view/clipboard.js +29 -0
  120. package/dist/components/ui/json-tree-view/index.cjs +175 -0
  121. package/dist/components/ui/json-tree-view/index.d.ts +10 -0
  122. package/dist/components/ui/json-tree-view/index.js +11 -0
  123. package/dist/components/ui/json-tree-view/leafEditTypes.cjs +74 -0
  124. package/dist/components/ui/json-tree-view/leafEditTypes.d.ts +12 -0
  125. package/dist/components/ui/json-tree-view/leafEditTypes.js +34 -0
  126. package/dist/components/ui/json-tree-view/strings.cjs +122 -0
  127. package/dist/components/ui/json-tree-view/strings.d.ts +65 -0
  128. package/dist/components/ui/json-tree-view/strings.js +79 -0
  129. package/dist/components/ui/prompt-value-control.cjs +70 -0
  130. package/dist/components/ui/prompt-value-control.d.ts +28 -0
  131. package/dist/components/ui/prompt-value-control.js +36 -0
  132. package/dist/components/ui/sheet.d.ts +1 -1
  133. package/dist/components/ui/spinner.d.ts +1 -1
  134. package/dist/components/ui/switch.d.ts +2 -2
  135. package/dist/components/ui/textarea.cjs +1 -1
  136. package/dist/components/ui/textarea.js +1 -1
  137. package/dist/components/ui/toggle-group.d.ts +2 -2
  138. package/dist/components/ui/toggle.d.ts +2 -2
  139. package/dist/components/ui/variable-value-control.cjs +98 -0
  140. package/dist/components/ui/variable-value-control.d.ts +35 -0
  141. package/dist/components/ui/variable-value-control.js +64 -0
  142. package/dist/index.cjs +145 -16
  143. package/dist/index.d.ts +21 -3
  144. package/dist/index.js +11 -2
  145. package/dist/lib/index.cjs +4 -1
  146. package/dist/lib/index.d.ts +1 -1
  147. package/dist/lib/index.js +2 -2
  148. package/dist/lib/utils.cjs +21 -1
  149. package/dist/lib/utils.d.ts +8 -0
  150. package/dist/lib/utils.js +18 -1
  151. package/dist/styles.css +225 -0
  152. package/package.json +1 -1
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ JsonTreeToolbar: ()=>JsonTreeToolbar
28
+ });
29
+ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
30
+ const external_button_cjs_namespaceObject = require("../button.cjs");
31
+ const index_cjs_namespaceObject = require("../../../lib/index.cjs");
32
+ const external_dropdown_menu_cjs_namespaceObject = require("../dropdown-menu.cjs");
33
+ const external_input_cjs_namespaceObject = require("../input.cjs");
34
+ const external_lucide_react_namespaceObject = require("lucide-react");
35
+ const external_react_namespaceObject = require("react");
36
+ const external_strings_cjs_namespaceObject = require("./strings.cjs");
37
+ const external_JsonTreeTooltip_cjs_namespaceObject = require("./JsonTreeTooltip.cjs");
38
+ const ALL_FILTER_VALUE = '__all__';
39
+ function JsonTreeToolbar({ strings, tooltipContentClassName, ...props }) {
40
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_strings_cjs_namespaceObject.JsonTreeViewProvider, {
41
+ strings: strings,
42
+ tooltipContentClassName: tooltipContentClassName,
43
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(JsonTreeToolbarContent, {
44
+ ...props
45
+ })
46
+ });
47
+ }
48
+ function JsonTreeToolbarContent({ query, onQueryChange, searchPlaceholder, filters, activeFilterId = null, onFilterChange, allCollapsed = false, onToggleAll, leading, controlsHidden = false, className }) {
49
+ const strings = (0, external_strings_cjs_namespaceObject.useJsonTreeViewStrings)();
50
+ const [searchOpen, setSearchOpen] = (0, external_react_namespaceObject.useState)(false);
51
+ const activeFilter = filters?.find((f)=>f.id === activeFilterId);
52
+ const resolvedSearchPlaceholder = searchPlaceholder ?? strings.searchFields;
53
+ const filterLabel = activeFilter ? strings.filterActive(activeFilter.label) : strings.filter;
54
+ const searchActionLabel = strings.searchFieldsAction;
55
+ const toggleAllLabel = allCollapsed ? strings.expandAll : strings.collapseAll;
56
+ const closeSearch = ()=>{
57
+ onQueryChange('');
58
+ setSearchOpen(false);
59
+ };
60
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
61
+ className: (0, index_cjs_namespaceObject.cn)('flex items-center gap-1.5', className),
62
+ children: [
63
+ leading,
64
+ !controlsHidden && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(jsx_runtime_namespaceObject.Fragment, {
65
+ children: [
66
+ searchOpen ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
67
+ className: "relative flex min-w-0 flex-1 items-center overflow-hidden",
68
+ children: [
69
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_lucide_react_namespaceObject.Search, {
70
+ size: 13,
71
+ className: "pointer-events-none absolute left-2 text-foreground-subtle"
72
+ }),
73
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_input_cjs_namespaceObject.Input, {
74
+ autoFocus: true,
75
+ type: "text",
76
+ variant: "ghost",
77
+ size: "xs",
78
+ value: query,
79
+ onChange: (e)=>onQueryChange(e.target.value),
80
+ onKeyDown: (e)=>{
81
+ if ('Escape' === e.key) closeSearch();
82
+ },
83
+ "aria-label": resolvedSearchPlaceholder,
84
+ placeholder: resolvedSearchPlaceholder,
85
+ style: {
86
+ paddingLeft: '1.75rem',
87
+ paddingRight: '1.5rem'
88
+ },
89
+ className: "h-6 w-full text-foreground placeholder:text-foreground-subtle focus-visible:ring-0"
90
+ }),
91
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("button", {
92
+ type: "button",
93
+ onClick: closeSearch,
94
+ "aria-label": strings.clearSearch,
95
+ className: "absolute right-1.5 grid size-4 place-items-center text-foreground-subtle transition hover:text-foreground",
96
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_lucide_react_namespaceObject.X, {
97
+ size: 12
98
+ })
99
+ })
100
+ ]
101
+ }) : /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(jsx_runtime_namespaceObject.Fragment, {
102
+ children: [
103
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
104
+ className: "flex-1"
105
+ }),
106
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_JsonTreeTooltip_cjs_namespaceObject.JsonTreeTooltip, {
107
+ content: searchActionLabel,
108
+ placement: "top",
109
+ delay: true,
110
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_button_cjs_namespaceObject.Button, {
111
+ variant: "ghost",
112
+ size: "3xs",
113
+ icon: true,
114
+ onClick: ()=>setSearchOpen(true),
115
+ "aria-label": searchActionLabel,
116
+ className: "rounded text-foreground-subtle hover:bg-surface-overlay hover:text-foreground",
117
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_lucide_react_namespaceObject.Search, {
118
+ size: 14
119
+ })
120
+ })
121
+ })
122
+ ]
123
+ }),
124
+ !!filters?.length && onFilterChange && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(external_dropdown_menu_cjs_namespaceObject.DropdownMenu, {
125
+ children: [
126
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_JsonTreeTooltip_cjs_namespaceObject.JsonTreeTooltip, {
127
+ content: filterLabel,
128
+ placement: "top",
129
+ delay: true,
130
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_dropdown_menu_cjs_namespaceObject.DropdownMenuTrigger, {
131
+ asChild: true,
132
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(external_button_cjs_namespaceObject.Button, {
133
+ variant: "ghost",
134
+ size: "3xs",
135
+ icon: true,
136
+ "aria-label": filterLabel,
137
+ className: "relative rounded text-foreground-subtle hover:bg-surface-overlay hover:text-foreground",
138
+ children: [
139
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_lucide_react_namespaceObject.Filter, {
140
+ size: 14
141
+ }),
142
+ activeFilter && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
143
+ className: "absolute right-0.5 top-0.5 size-1.5 rounded-full bg-primary ring-1 ring-surface"
144
+ })
145
+ ]
146
+ })
147
+ })
148
+ }),
149
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_dropdown_menu_cjs_namespaceObject.DropdownMenuContent, {
150
+ align: "end",
151
+ className: "w-52",
152
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(external_dropdown_menu_cjs_namespaceObject.DropdownMenuRadioGroup, {
153
+ value: activeFilterId ?? ALL_FILTER_VALUE,
154
+ onValueChange: (value)=>onFilterChange(value === ALL_FILTER_VALUE ? null : value),
155
+ children: [
156
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_dropdown_menu_cjs_namespaceObject.DropdownMenuRadioItem, {
157
+ value: ALL_FILTER_VALUE,
158
+ className: "text-[11px] [&>span:first-child]:text-foreground-accent",
159
+ children: strings.filterAll
160
+ }),
161
+ filters.map((filter)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(external_dropdown_menu_cjs_namespaceObject.DropdownMenuRadioItem, {
162
+ value: filter.id,
163
+ className: "text-[11px] [&>span:first-child]:text-foreground-accent",
164
+ children: [
165
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
166
+ className: "flex-1 truncate",
167
+ children: filter.label
168
+ }),
169
+ void 0 !== filter.count && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
170
+ className: "ml-3 rounded bg-surface-overlay px-1.5 py-0.5 font-mono text-[10px] font-medium leading-none text-foreground-muted",
171
+ children: filter.count
172
+ })
173
+ ]
174
+ }, filter.id))
175
+ ]
176
+ })
177
+ })
178
+ ]
179
+ }),
180
+ onToggleAll && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_JsonTreeTooltip_cjs_namespaceObject.JsonTreeTooltip, {
181
+ content: toggleAllLabel,
182
+ placement: "top",
183
+ delay: true,
184
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_button_cjs_namespaceObject.Button, {
185
+ variant: "ghost",
186
+ size: "3xs",
187
+ icon: true,
188
+ onClick: onToggleAll,
189
+ "aria-label": toggleAllLabel,
190
+ className: "rounded text-foreground-subtle hover:bg-surface-overlay hover:text-foreground",
191
+ children: allCollapsed ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_lucide_react_namespaceObject.ChevronsUpDown, {
192
+ size: 14
193
+ }) : /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_lucide_react_namespaceObject.ChevronsDownUp, {
194
+ size: 14
195
+ })
196
+ })
197
+ })
198
+ ]
199
+ })
200
+ ]
201
+ });
202
+ }
203
+ exports.JsonTreeToolbar = __webpack_exports__.JsonTreeToolbar;
204
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
205
+ "JsonTreeToolbar"
206
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
207
+ Object.defineProperty(exports, '__esModule', {
208
+ value: true
209
+ });
@@ -0,0 +1,35 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type JsonTreeViewStrings } from './strings';
3
+ import type { JsonTreeFilterOption } from './JsonTree.types';
4
+ export interface JsonTreeToolbarProps {
5
+ /** Current search query (controlled). */
6
+ query: string;
7
+ onQueryChange: (query: string) => void;
8
+ searchPlaceholder?: string;
9
+ /** Consumer-provided filter options. Omit or pass empty to hide the filter control. */
10
+ filters?: JsonTreeFilterOption[];
11
+ /** Id of the active filter, or null for "All". */
12
+ activeFilterId?: string | null;
13
+ onFilterChange?: (id: string | null) => void;
14
+ /** Collapse-all toggle state. Omit `onToggleAll` to hide the control. */
15
+ allCollapsed?: boolean;
16
+ onToggleAll?: () => void;
17
+ /**
18
+ * Content rendered at the start of the row, before the flexible spacer (e.g.
19
+ * a tab switcher). The tree controls (search / filter / collapse) stay pinned
20
+ * to the end.
21
+ */
22
+ leading?: ReactNode;
23
+ /**
24
+ * Hides the search / filter / collapse controls, keeping only `leading`.
25
+ * Use when a non-tree tab is active and the controls would be inert.
26
+ */
27
+ controlsHidden?: boolean;
28
+ /** String overrides; see `JsonTreeViewProps.strings`. */
29
+ strings?: Partial<JsonTreeViewStrings>;
30
+ /** Extra classes for every tooltip panel (e.g. a z-index above a host's overlays). */
31
+ tooltipContentClassName?: string;
32
+ className?: string;
33
+ }
34
+ /** Leading slot + search, filter, and collapse-all controls for a `JsonTreeView`. */
35
+ export declare function JsonTreeToolbar({ strings, tooltipContentClassName, ...props }: JsonTreeToolbarProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,175 @@
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import { Button } from "../button.js";
3
+ import { cn } from "../../../lib/index.js";
4
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuTrigger } from "../dropdown-menu.js";
5
+ import { Input } from "../input.js";
6
+ import { ChevronsDownUp, ChevronsUpDown, Filter, Search, X } from "lucide-react";
7
+ import { useState } from "react";
8
+ import { JsonTreeViewProvider, useJsonTreeViewStrings } from "./strings.js";
9
+ import { JsonTreeTooltip } from "./JsonTreeTooltip.js";
10
+ const ALL_FILTER_VALUE = '__all__';
11
+ function JsonTreeToolbar({ strings, tooltipContentClassName, ...props }) {
12
+ return /*#__PURE__*/ jsx(JsonTreeViewProvider, {
13
+ strings: strings,
14
+ tooltipContentClassName: tooltipContentClassName,
15
+ children: /*#__PURE__*/ jsx(JsonTreeToolbarContent, {
16
+ ...props
17
+ })
18
+ });
19
+ }
20
+ function JsonTreeToolbarContent({ query, onQueryChange, searchPlaceholder, filters, activeFilterId = null, onFilterChange, allCollapsed = false, onToggleAll, leading, controlsHidden = false, className }) {
21
+ const strings = useJsonTreeViewStrings();
22
+ const [searchOpen, setSearchOpen] = useState(false);
23
+ const activeFilter = filters?.find((f)=>f.id === activeFilterId);
24
+ const resolvedSearchPlaceholder = searchPlaceholder ?? strings.searchFields;
25
+ const filterLabel = activeFilter ? strings.filterActive(activeFilter.label) : strings.filter;
26
+ const searchActionLabel = strings.searchFieldsAction;
27
+ const toggleAllLabel = allCollapsed ? strings.expandAll : strings.collapseAll;
28
+ const closeSearch = ()=>{
29
+ onQueryChange('');
30
+ setSearchOpen(false);
31
+ };
32
+ return /*#__PURE__*/ jsxs("div", {
33
+ className: cn('flex items-center gap-1.5', className),
34
+ children: [
35
+ leading,
36
+ !controlsHidden && /*#__PURE__*/ jsxs(Fragment, {
37
+ children: [
38
+ searchOpen ? /*#__PURE__*/ jsxs("div", {
39
+ className: "relative flex min-w-0 flex-1 items-center overflow-hidden",
40
+ children: [
41
+ /*#__PURE__*/ jsx(Search, {
42
+ size: 13,
43
+ className: "pointer-events-none absolute left-2 text-foreground-subtle"
44
+ }),
45
+ /*#__PURE__*/ jsx(Input, {
46
+ autoFocus: true,
47
+ type: "text",
48
+ variant: "ghost",
49
+ size: "xs",
50
+ value: query,
51
+ onChange: (e)=>onQueryChange(e.target.value),
52
+ onKeyDown: (e)=>{
53
+ if ('Escape' === e.key) closeSearch();
54
+ },
55
+ "aria-label": resolvedSearchPlaceholder,
56
+ placeholder: resolvedSearchPlaceholder,
57
+ style: {
58
+ paddingLeft: '1.75rem',
59
+ paddingRight: '1.5rem'
60
+ },
61
+ className: "h-6 w-full text-foreground placeholder:text-foreground-subtle focus-visible:ring-0"
62
+ }),
63
+ /*#__PURE__*/ jsx("button", {
64
+ type: "button",
65
+ onClick: closeSearch,
66
+ "aria-label": strings.clearSearch,
67
+ className: "absolute right-1.5 grid size-4 place-items-center text-foreground-subtle transition hover:text-foreground",
68
+ children: /*#__PURE__*/ jsx(X, {
69
+ size: 12
70
+ })
71
+ })
72
+ ]
73
+ }) : /*#__PURE__*/ jsxs(Fragment, {
74
+ children: [
75
+ /*#__PURE__*/ jsx("div", {
76
+ className: "flex-1"
77
+ }),
78
+ /*#__PURE__*/ jsx(JsonTreeTooltip, {
79
+ content: searchActionLabel,
80
+ placement: "top",
81
+ delay: true,
82
+ children: /*#__PURE__*/ jsx(Button, {
83
+ variant: "ghost",
84
+ size: "3xs",
85
+ icon: true,
86
+ onClick: ()=>setSearchOpen(true),
87
+ "aria-label": searchActionLabel,
88
+ className: "rounded text-foreground-subtle hover:bg-surface-overlay hover:text-foreground",
89
+ children: /*#__PURE__*/ jsx(Search, {
90
+ size: 14
91
+ })
92
+ })
93
+ })
94
+ ]
95
+ }),
96
+ !!filters?.length && onFilterChange && /*#__PURE__*/ jsxs(DropdownMenu, {
97
+ children: [
98
+ /*#__PURE__*/ jsx(JsonTreeTooltip, {
99
+ content: filterLabel,
100
+ placement: "top",
101
+ delay: true,
102
+ children: /*#__PURE__*/ jsx(DropdownMenuTrigger, {
103
+ asChild: true,
104
+ children: /*#__PURE__*/ jsxs(Button, {
105
+ variant: "ghost",
106
+ size: "3xs",
107
+ icon: true,
108
+ "aria-label": filterLabel,
109
+ className: "relative rounded text-foreground-subtle hover:bg-surface-overlay hover:text-foreground",
110
+ children: [
111
+ /*#__PURE__*/ jsx(Filter, {
112
+ size: 14
113
+ }),
114
+ activeFilter && /*#__PURE__*/ jsx("span", {
115
+ className: "absolute right-0.5 top-0.5 size-1.5 rounded-full bg-primary ring-1 ring-surface"
116
+ })
117
+ ]
118
+ })
119
+ })
120
+ }),
121
+ /*#__PURE__*/ jsx(DropdownMenuContent, {
122
+ align: "end",
123
+ className: "w-52",
124
+ children: /*#__PURE__*/ jsxs(DropdownMenuRadioGroup, {
125
+ value: activeFilterId ?? ALL_FILTER_VALUE,
126
+ onValueChange: (value)=>onFilterChange(value === ALL_FILTER_VALUE ? null : value),
127
+ children: [
128
+ /*#__PURE__*/ jsx(DropdownMenuRadioItem, {
129
+ value: ALL_FILTER_VALUE,
130
+ className: "text-[11px] [&>span:first-child]:text-foreground-accent",
131
+ children: strings.filterAll
132
+ }),
133
+ filters.map((filter)=>/*#__PURE__*/ jsxs(DropdownMenuRadioItem, {
134
+ value: filter.id,
135
+ className: "text-[11px] [&>span:first-child]:text-foreground-accent",
136
+ children: [
137
+ /*#__PURE__*/ jsx("span", {
138
+ className: "flex-1 truncate",
139
+ children: filter.label
140
+ }),
141
+ void 0 !== filter.count && /*#__PURE__*/ jsx("span", {
142
+ className: "ml-3 rounded bg-surface-overlay px-1.5 py-0.5 font-mono text-[10px] font-medium leading-none text-foreground-muted",
143
+ children: filter.count
144
+ })
145
+ ]
146
+ }, filter.id))
147
+ ]
148
+ })
149
+ })
150
+ ]
151
+ }),
152
+ onToggleAll && /*#__PURE__*/ jsx(JsonTreeTooltip, {
153
+ content: toggleAllLabel,
154
+ placement: "top",
155
+ delay: true,
156
+ children: /*#__PURE__*/ jsx(Button, {
157
+ variant: "ghost",
158
+ size: "3xs",
159
+ icon: true,
160
+ onClick: onToggleAll,
161
+ "aria-label": toggleAllLabel,
162
+ className: "rounded text-foreground-subtle hover:bg-surface-overlay hover:text-foreground",
163
+ children: allCollapsed ? /*#__PURE__*/ jsx(ChevronsUpDown, {
164
+ size: 14
165
+ }) : /*#__PURE__*/ jsx(ChevronsDownUp, {
166
+ size: 14
167
+ })
168
+ })
169
+ })
170
+ ]
171
+ })
172
+ ]
173
+ });
174
+ }
175
+ export { JsonTreeToolbar };
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ JsonTreeTooltip: ()=>JsonTreeTooltip,
28
+ JsonTreeTooltipProvider: ()=>JsonTreeTooltipProvider
29
+ });
30
+ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
31
+ const external_react_namespaceObject = require("react");
32
+ const external_tooltip_cjs_namespaceObject = require("../tooltip.cjs");
33
+ const index_cjs_namespaceObject = require("../../../lib/index.cjs");
34
+ const external_strings_cjs_namespaceObject = require("./strings.cjs");
35
+ const HasTooltipProviderContext = /*#__PURE__*/ (0, external_react_namespaceObject.createContext)(false);
36
+ function JsonTreeTooltipProvider({ children }) {
37
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_tooltip_cjs_namespaceObject.TooltipProvider, {
38
+ delayDuration: 300,
39
+ skipDelayDuration: 100,
40
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(HasTooltipProviderContext.Provider, {
41
+ value: true,
42
+ children: children
43
+ })
44
+ });
45
+ }
46
+ function JsonTreeTooltip({ content, placement = 'top', delay = false, hide = false, children }) {
47
+ const [open, setOpen] = (0, external_react_namespaceObject.useState)(false);
48
+ const contentClassName = (0, external_strings_cjs_namespaceObject.useJsonTreeViewTooltipClassName)();
49
+ const hasProvider = (0, external_react_namespaceObject.useContext)(HasTooltipProviderContext);
50
+ const isEmpty = null == content || false === content || 'string' == typeof content && !content.trim();
51
+ const tooltip = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(external_tooltip_cjs_namespaceObject.Tooltip, {
52
+ open: open && !hide && !isEmpty,
53
+ onOpenChange: setOpen,
54
+ delayDuration: delay ? 700 : 200,
55
+ children: [
56
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_tooltip_cjs_namespaceObject.TooltipTrigger, {
57
+ asChild: true,
58
+ children: children
59
+ }),
60
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_tooltip_cjs_namespaceObject.TooltipPortal, {
61
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_tooltip_cjs_namespaceObject.TooltipContent, {
62
+ side: placement,
63
+ className: (0, index_cjs_namespaceObject.cn)('max-w-xs wrap-break-word', contentClassName),
64
+ children: content
65
+ })
66
+ })
67
+ ]
68
+ });
69
+ if (hasProvider) return tooltip;
70
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_tooltip_cjs_namespaceObject.TooltipProvider, {
71
+ delayDuration: 200,
72
+ skipDelayDuration: 100,
73
+ children: tooltip
74
+ });
75
+ }
76
+ exports.JsonTreeTooltip = __webpack_exports__.JsonTreeTooltip;
77
+ exports.JsonTreeTooltipProvider = __webpack_exports__.JsonTreeTooltipProvider;
78
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
79
+ "JsonTreeTooltip",
80
+ "JsonTreeTooltipProvider"
81
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
82
+ Object.defineProperty(exports, '__esModule', {
83
+ value: true
84
+ });
@@ -0,0 +1,21 @@
1
+ import { type ReactElement, type ReactNode } from 'react';
2
+ /**
3
+ * One shared Radix provider for every tooltip below it, so each
4
+ * `JsonTreeTooltip` skips mounting its own fallback provider.
5
+ */
6
+ export declare function JsonTreeTooltipProvider({ children }: {
7
+ children: ReactNode;
8
+ }): import("react/jsx-runtime").JSX.Element;
9
+ interface JsonTreeTooltipProps {
10
+ content: ReactNode;
11
+ placement?: 'top' | 'bottom' | 'left' | 'right';
12
+ /** Waits the longer 700ms before opening, for dense controls. */
13
+ delay?: boolean;
14
+ /** Keeps the tooltip closed (e.g. while the trigger's own menu is open). */
15
+ hide?: boolean;
16
+ /** A single element; it becomes the trigger without an extra wrapper. */
17
+ children: ReactElement;
18
+ }
19
+ /** Hover tooltip for the tree's controls, built on apollo-wind's Tooltip. */
20
+ export declare function JsonTreeTooltip({ content, placement, delay, hide, children, }: JsonTreeTooltipProps): import("react/jsx-runtime").JSX.Element;
21
+ export {};
@@ -0,0 +1,47 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { createContext, useContext, useState } from "react";
3
+ import { Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger } from "../tooltip.js";
4
+ import { cn } from "../../../lib/index.js";
5
+ import { useJsonTreeViewTooltipClassName } from "./strings.js";
6
+ const HasTooltipProviderContext = /*#__PURE__*/ createContext(false);
7
+ function JsonTreeTooltipProvider({ children }) {
8
+ return /*#__PURE__*/ jsx(TooltipProvider, {
9
+ delayDuration: 300,
10
+ skipDelayDuration: 100,
11
+ children: /*#__PURE__*/ jsx(HasTooltipProviderContext.Provider, {
12
+ value: true,
13
+ children: children
14
+ })
15
+ });
16
+ }
17
+ function JsonTreeTooltip({ content, placement = 'top', delay = false, hide = false, children }) {
18
+ const [open, setOpen] = useState(false);
19
+ const contentClassName = useJsonTreeViewTooltipClassName();
20
+ const hasProvider = useContext(HasTooltipProviderContext);
21
+ const isEmpty = null == content || false === content || 'string' == typeof content && !content.trim();
22
+ const tooltip = /*#__PURE__*/ jsxs(Tooltip, {
23
+ open: open && !hide && !isEmpty,
24
+ onOpenChange: setOpen,
25
+ delayDuration: delay ? 700 : 200,
26
+ children: [
27
+ /*#__PURE__*/ jsx(TooltipTrigger, {
28
+ asChild: true,
29
+ children: children
30
+ }),
31
+ /*#__PURE__*/ jsx(TooltipPortal, {
32
+ children: /*#__PURE__*/ jsx(TooltipContent, {
33
+ side: placement,
34
+ className: cn('max-w-xs wrap-break-word', contentClassName),
35
+ children: content
36
+ })
37
+ })
38
+ ]
39
+ });
40
+ if (hasProvider) return tooltip;
41
+ return /*#__PURE__*/ jsx(TooltipProvider, {
42
+ delayDuration: 200,
43
+ skipDelayDuration: 100,
44
+ children: tooltip
45
+ });
46
+ }
47
+ export { JsonTreeTooltip, JsonTreeTooltipProvider };
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ JsonTypeBadge: ()=>JsonTypeBadge
28
+ });
29
+ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
30
+ const index_cjs_namespaceObject = require("../../../lib/index.cjs");
31
+ const external_lucide_react_namespaceObject = require("lucide-react");
32
+ const external_JsonTreeTooltip_cjs_namespaceObject = require("./JsonTreeTooltip.cjs");
33
+ const TYPE_ICON = {
34
+ string: external_lucide_react_namespaceObject.Type,
35
+ number: external_lucide_react_namespaceObject.Hash,
36
+ boolean: external_lucide_react_namespaceObject.ToggleLeft,
37
+ object: external_lucide_react_namespaceObject.Braces,
38
+ array: external_lucide_react_namespaceObject.Brackets,
39
+ null: external_lucide_react_namespaceObject.CircleSlash2
40
+ };
41
+ const TYPE_LABEL = {
42
+ string: 'String',
43
+ number: 'Number',
44
+ boolean: 'Boolean',
45
+ object: 'Object',
46
+ array: 'Array',
47
+ null: 'Null'
48
+ };
49
+ function JsonTypeBadge({ type, icon, className, tooltip }) {
50
+ const DefaultIcon = TYPE_ICON[type];
51
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_JsonTreeTooltip_cjs_namespaceObject.JsonTreeTooltip, {
52
+ content: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
53
+ className: "break-all font-mono text-xs font-semibold leading-4",
54
+ children: tooltip ?? TYPE_LABEL[type]
55
+ }),
56
+ placement: "top",
57
+ 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, {})
61
+ })
62
+ });
63
+ }
64
+ exports.JsonTypeBadge = __webpack_exports__.JsonTypeBadge;
65
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
66
+ "JsonTypeBadge"
67
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
68
+ Object.defineProperty(exports, '__esModule', {
69
+ value: true
70
+ });