@harborclient/sdk 1.6.5 → 1.6.7
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.
- package/CHANGELOG.md +10 -0
- package/dist/components/AnchorMenuPanel/index.js +1 -1
- package/dist/components/Breadcrumb/CrumbSegment.js +1 -1
- package/dist/components/Breadcrumb/EditableSegment.js +2 -2
- package/dist/components/Button/index.js +1 -1
- package/dist/components/CodeEditor/index.d.ts +2 -2
- package/dist/components/CodeEditor/index.js +5 -5
- package/dist/components/CodeEditor/selectionActionToolbar.d.ts +11 -7
- package/dist/components/CodeEditor/selectionActionToolbar.d.ts.map +1 -1
- package/dist/components/CodeEditor/selectionActionToolbar.js +39 -10
- package/dist/components/CopyToChatButton/index.js +1 -1
- package/dist/components/FooterButton/index.js +2 -2
- package/dist/components/FooterIcon/index.js +1 -1
- package/dist/components/FormDataEditor/index.d.ts.map +1 -1
- package/dist/components/FormDataEditor/index.js +2 -2
- package/dist/components/FormGroup/index.js +2 -2
- package/dist/components/KeyValueEditor/index.d.ts.map +1 -1
- package/dist/components/KeyValueEditor/index.js +1 -1
- package/dist/components/MethodSelect/MethodSelectMenu.js +1 -1
- package/dist/components/MethodSelect/MethodSelectOption.js +1 -1
- package/dist/components/MethodSelect/index.js +1 -1
- package/dist/components/Resizable/ResizeHandle.js +1 -1
- package/dist/components/Resizable/footerPanelUtils.d.ts +1 -1
- package/dist/components/Resizable/footerPanelUtils.d.ts.map +1 -1
- package/dist/components/Resizable/footerPanelUtils.js +2 -2
- package/dist/components/RowActionsMenu/Submenu.js +1 -1
- package/dist/components/RowActionsMenu/index.js +1 -1
- package/dist/components/SidebarItem/SidebarBadge.js +2 -2
- package/dist/components/SidebarItem/SidebarCommitItem.js +1 -1
- package/dist/components/SidebarItem/SidebarFolderItem.js +1 -1
- package/dist/components/SidebarItem/SidebarHistoryItem.d.ts +5 -1
- package/dist/components/SidebarItem/SidebarHistoryItem.d.ts.map +1 -1
- package/dist/components/SidebarItem/SidebarHistoryItem.js +3 -2
- package/dist/components/SidebarItem/sidebarItemClasses.d.ts +3 -3
- package/dist/components/SidebarItem/sidebarItemClasses.d.ts.map +1 -1
- package/dist/components/SidebarItem/sidebarItemClasses.js +5 -5
- package/dist/components/SidebarRail/SidebarRailItem.js +1 -1
- package/dist/components/SidebarRail/index.js +2 -2
- package/dist/components/SidebarSection/SectionItem.js +1 -1
- package/dist/components/SortButton/SortMenu.js +1 -1
- package/dist/components/SortButton/SortMenuOption.js +1 -1
- package/dist/components/TabBar/TabBarShell.js +1 -1
- package/dist/components/TabBar/TabContextMenu.js +1 -1
- package/dist/components/TabBar/TabNewButton.js +2 -2
- package/dist/components/TabBar/index.d.ts.map +1 -1
- package/dist/components/TabBar/index.js +2 -2
- package/dist/components/TabCloseButton/index.js +1 -1
- package/dist/components/Toolbar/index.js +2 -2
- package/dist/components/VariableInput/index.d.ts +2 -2
- package/dist/components/VariableInput/index.js +2 -2
- package/dist/components/VariableTooltip/dom.js +2 -2
- package/dist/components/VisibilityMenu/MenuCheckboxItem.js +1 -1
- package/dist/components/VisibilityMenu/index.js +1 -1
- package/dist/components/classes.d.ts +1 -1
- package/dist/components/classes.d.ts.map +1 -1
- package/dist/components/classes.js +5 -5
- package/dist/components/forms/classes.d.ts +1 -1
- package/dist/components/forms/classes.d.ts.map +1 -1
- package/dist/components/forms/classes.js +1 -1
- package/dist/components/rowActionsMenuHelpers.d.ts.map +1 -1
- package/dist/components/rowActionsMenuHelpers.js +1 -1
- package/dist/http/resolveRequest.d.ts +3 -0
- package/dist/http/resolveRequest.d.ts.map +1 -1
- package/dist/http/resolveRequest.js +4 -1
- package/dist/http/substitute.d.ts +1 -0
- package/dist/http/substitute.d.ts.map +1 -1
- package/dist/http/substitute.js +9 -0
- package/dist/types.d.ts +54 -35
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "@harborclient/sdk/jsx-runtime";
|
|
2
|
+
import { Badge } from '../Badge/index.js';
|
|
2
3
|
import { FaIcon } from '../FaIcon/index.js';
|
|
3
4
|
import { SidebarItem } from './SidebarItem.js';
|
|
4
5
|
import { SidebarMethodBadge } from './SidebarMethodBadge.js';
|
|
@@ -7,7 +8,7 @@ import { SIDEBAR_ITEM_BUTTON_CLASS, statusDotClass } from './sidebarItemClasses.
|
|
|
7
8
|
/**
|
|
8
9
|
* Renders a request or run history entry row in the Collections sidebar History section.
|
|
9
10
|
*/
|
|
10
|
-
export function SidebarHistoryItem({ method, name, isRun = false, status, statusText, statusDotVisible = true, methodColors = true, runIcon, selected = false, title, ariaLabel, onContextMenu, onClick, actions, as = 'li', className }) {
|
|
11
|
+
export function SidebarHistoryItem({ method, name, isRun = false, status, statusText, statusDotVisible = true, methodColors = true, corrupt = false, runIcon, selected = false, title, ariaLabel, onContextMenu, onClick, actions, as = 'li', className }) {
|
|
11
12
|
const useListboxOption = as === 'li';
|
|
12
13
|
const optionAriaLabel = !isRun && status != null && statusText != null
|
|
13
14
|
? `${ariaLabel}, responded ${status} ${statusText}`
|
|
@@ -17,5 +18,5 @@ export function SidebarHistoryItem({ method, name, isRun = false, status, status
|
|
|
17
18
|
ariaLabel: optionAriaLabel,
|
|
18
19
|
onClick
|
|
19
20
|
}
|
|
20
|
-
: undefined, children: _jsxs("span", { className: `${SIDEBAR_ITEM_BUTTON_CLASS} py-0.5`, title: title, children: [_jsx(SidebarMethodBadge, { method: method, uppercase: true, methodColors: methodColors }), _jsxs("span", { className: "flex min-w-0 flex-1 items-center gap-1.5 overflow-hidden", children: [_jsx("span", { className: "min-w-0 flex-1 truncate text-text", children: name }), isRun && runIcon != null ? (_jsx(FaIcon, { icon: runIcon, className: "h-3.5 w-3.5 shrink-0 text-muted", "aria-hidden": true })) : null] }), !isRun && status != null && statusText != null ? (_jsx(SidebarStatusDot, { className: statusDotClass(status), visible: statusDotVisible, title: `${status} ${statusText}`, srOnlyLabel: `${status} ${statusText}` })) : null] }) }));
|
|
21
|
+
: undefined, children: _jsxs("span", { className: `${SIDEBAR_ITEM_BUTTON_CLASS} py-0.5`, title: title, children: [_jsx(SidebarMethodBadge, { method: method, uppercase: true, methodColors: methodColors }), _jsxs("span", { className: "flex min-w-0 flex-1 items-center gap-1.5 overflow-hidden", children: [_jsx("span", { className: "min-w-0 flex-1 truncate text-text", children: name }), corrupt ? (_jsx(Badge, { variant: "danger", title: "Stored headers or params JSON for this entry is corrupt", children: "Corrupt" })) : null, isRun && runIcon != null ? (_jsx(FaIcon, { icon: runIcon, className: "h-3.5 w-3.5 shrink-0 text-muted", "aria-hidden": true })) : null] }), !isRun && status != null && statusText != null ? (_jsx(SidebarStatusDot, { className: statusDotClass(status), visible: statusDotVisible, title: `${status} ${statusText}`, srOnlyLabel: `${status} ${statusText}` })) : null] }) }));
|
|
21
22
|
}
|
|
@@ -49,16 +49,16 @@ export declare function statusDotClass(status: number): string;
|
|
|
49
49
|
/**
|
|
50
50
|
* Standard primary button classes for sidebar item label areas.
|
|
51
51
|
*/
|
|
52
|
-
export declare const SIDEBAR_ITEM_BUTTON_CLASS = "flex min-w-0 flex-1 cursor-pointer items-center gap-1.5 border-none bg-transparent py-0 text-left text-inherit
|
|
52
|
+
export declare const SIDEBAR_ITEM_BUTTON_CLASS = "flex min-w-0 flex-1 cursor-pointer items-center gap-1.5 border-none bg-transparent py-0 text-left text-inherit";
|
|
53
53
|
/**
|
|
54
54
|
* Tailwind classes for the sortable row drag handle. Hidden until row hover or handle focus.
|
|
55
55
|
*/
|
|
56
|
-
export declare const SIDEBAR_DRAG_HANDLE_CLASS = "
|
|
56
|
+
export declare const SIDEBAR_DRAG_HANDLE_CLASS = "inline-flex h-4 w-4 shrink-0 cursor-grab items-center justify-center rounded border-none bg-transparent p-0 text-muted opacity-0 hover:text-text focus-visible:opacity-100 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent active:cursor-grabbing group-hover:opacity-100";
|
|
57
57
|
/**
|
|
58
58
|
* Expand/collapse chevron button (collection and folder rows). 16×16 hit target
|
|
59
59
|
* sized to match Cursor’s file explorer twistie.
|
|
60
60
|
*/
|
|
61
|
-
export declare const SIDEBAR_CHEVRON_BUTTON_CLASS = "
|
|
61
|
+
export declare const SIDEBAR_CHEVRON_BUTTON_CLASS = "inline-flex h-4 w-4 shrink-0 cursor-pointer items-center justify-center rounded border-none bg-transparent p-0 text-muted hover:text-text";
|
|
62
62
|
/**
|
|
63
63
|
* Expand/collapse chevron glyph size (12×12), forced past Font Awesome's
|
|
64
64
|
* text-relative dimensions to match Cursor’s explorer carets.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidebarItemClasses.d.ts","sourceRoot":"","sources":["../../../src/components/SidebarItem/sidebarItemClasses.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D;;GAEG;AAEH;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,UAAQ,GAAG,MAAM,CAKpE;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CASjD,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,UAAO,GAAG,MAAM,CAK5E;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,UAAO,GAAG,MAAM,CAE7D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAMjE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;GAEG;AACH,eAAO,MAAM,yBAAyB
|
|
1
|
+
{"version":3,"file":"sidebarItemClasses.d.ts","sourceRoot":"","sources":["../../../src/components/SidebarItem/sidebarItemClasses.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D;;GAEG;AAEH;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,UAAQ,GAAG,MAAM,CAKpE;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CASjD,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,UAAO,GAAG,MAAM,CAK5E;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,UAAO,GAAG,MAAM,CAE7D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAMjE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;GAEG;AACH,eAAO,MAAM,yBAAyB,mHAC4E,CAAC;AAEnH;;GAEG;AACH,eAAO,MAAM,yBAAyB,wUACiS,CAAC;AAExU;;;GAGG;AACH,eAAO,MAAM,4BAA4B,8IACoG,CAAC;AAE9I;;;GAGG;AACH,eAAO,MAAM,0BAA0B,cAAc,CAAC;AAEtD;;;GAGG;AACH,eAAO,MAAM,0BAA0B,kEAC0B,CAAC;AAElE;;;GAGG;AACH,eAAO,MAAM,kCAAkC,WAAW,CAAC"}
|
|
@@ -15,8 +15,8 @@ import { statusDotVariantClass } from '../StatusDot/index.js';
|
|
|
15
15
|
export function sourceRow(selected, compact = false) {
|
|
16
16
|
const py = compact ? 'py-0' : 'py-0.5';
|
|
17
17
|
return selected
|
|
18
|
-
? `group flex items-center gap-1 rounded-md bg-selection pl-1.5 pr-0 ${py}
|
|
19
|
-
: `group flex items-center gap-1 rounded-md pl-1.5 pr-0 ${py} hover:bg-selection/60
|
|
18
|
+
? `group flex items-center gap-1 rounded-md bg-selection pl-1.5 pr-0 ${py}`
|
|
19
|
+
: `group flex items-center gap-1 rounded-md pl-1.5 pr-0 ${py} hover:bg-selection/60`;
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
22
|
* HTTP method color classes keyed by lowercase method name.
|
|
@@ -82,16 +82,16 @@ export function statusDotClass(status) {
|
|
|
82
82
|
/**
|
|
83
83
|
* Standard primary button classes for sidebar item label areas.
|
|
84
84
|
*/
|
|
85
|
-
export const SIDEBAR_ITEM_BUTTON_CLASS = 'flex min-w-0 flex-1 cursor-pointer items-center gap-1.5 border-none bg-transparent py-0 text-left text-inherit
|
|
85
|
+
export const SIDEBAR_ITEM_BUTTON_CLASS = 'flex min-w-0 flex-1 cursor-pointer items-center gap-1.5 border-none bg-transparent py-0 text-left text-inherit';
|
|
86
86
|
/**
|
|
87
87
|
* Tailwind classes for the sortable row drag handle. Hidden until row hover or handle focus.
|
|
88
88
|
*/
|
|
89
|
-
export const SIDEBAR_DRAG_HANDLE_CLASS = '
|
|
89
|
+
export const SIDEBAR_DRAG_HANDLE_CLASS = 'inline-flex h-4 w-4 shrink-0 cursor-grab items-center justify-center rounded border-none bg-transparent p-0 text-muted opacity-0 hover:text-text focus-visible:opacity-100 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent active:cursor-grabbing group-hover:opacity-100';
|
|
90
90
|
/**
|
|
91
91
|
* Expand/collapse chevron button (collection and folder rows). 16×16 hit target
|
|
92
92
|
* sized to match Cursor’s file explorer twistie.
|
|
93
93
|
*/
|
|
94
|
-
export const SIDEBAR_CHEVRON_BUTTON_CLASS = '
|
|
94
|
+
export const SIDEBAR_CHEVRON_BUTTON_CLASS = 'inline-flex h-4 w-4 shrink-0 cursor-pointer items-center justify-center rounded border-none bg-transparent p-0 text-muted hover:text-text';
|
|
95
95
|
/**
|
|
96
96
|
* Expand/collapse chevron glyph size (12×12), forced past Font Awesome's
|
|
97
97
|
* text-relative dimensions to match Cursor’s explorer carets.
|
|
@@ -59,7 +59,7 @@ function railItemSectionClasses(active) {
|
|
|
59
59
|
* @returns Class string for the item button.
|
|
60
60
|
*/
|
|
61
61
|
function railItemButtonClasses(active, expanded) {
|
|
62
|
-
return cn('hc-sidebar-rail-item
|
|
62
|
+
return cn('hc-sidebar-rail-item relative inline-flex min-h-12 w-full shrink-0 cursor-pointer items-center rounded-none border-none bg-transparent py-5', expanded ? 'gap-2 px-3' : 'justify-center', !active && 'hover:bg-sidebar-rail-active', railItemFocusVisible);
|
|
63
63
|
}
|
|
64
64
|
/**
|
|
65
65
|
* Single rail navigation tab: full-width active chrome with an icon button.
|
|
@@ -113,10 +113,10 @@ export function SidebarRail({ items, activeId, onSelect, expanded, onExpandedCha
|
|
|
113
113
|
}, [expanded, onExpandedChange]);
|
|
114
114
|
const expandLabel = expanded ? 'Collapse' : 'Expand';
|
|
115
115
|
const expandAriaLabel = expanded ? 'Collapse sidebar rail' : 'Expand sidebar rail';
|
|
116
|
-
return (_jsxs("div", { ...props, className: cn('hc-sidebar-rail
|
|
116
|
+
return (_jsxs("div", { ...props, className: cn('hc-sidebar-rail flex h-full shrink-0 flex-col bg-sidebar-rail text-sidebar-rail-text', expanded ? 'w-[168px]' : 'w-18', 'transition-[width] duration-200 ease-out motion-reduce:transition-none', className), children: [_jsx("div", { role: "tablist", "aria-orientation": "vertical", "aria-label": ariaLabel, className: "hc-sidebar-rail-items flex min-h-0 flex-1 flex-col items-stretch overflow-x-hidden overflow-y-auto", children: items.flatMap((item, index) => [
|
|
117
117
|
_jsx(SidebarRailItem, { item: item, active: item.id === activeId, expanded: expanded, tabIndex: item.id === activeId ? 0 : -1, panelId: panelId, onSelect: () => onSelect(item.id), onKeyDown: (event) => handleItemKeyDown(event, index), buttonRef: (node) => {
|
|
118
118
|
itemRefs.current[index] = node;
|
|
119
119
|
} }, item.id),
|
|
120
120
|
_jsx(SidebarRailSeparator, {}, `${item.id}-separator`)
|
|
121
|
-
]) }), _jsxs("div", { className: "hc-sidebar-rail-footer shrink-0", children: [footer != null ? _jsx("div", { className: "hc-sidebar-rail-footer-content", children: footer }) : null, _jsxs("button", { type: "button", className: cn('hc-sidebar-rail-expand
|
|
121
|
+
]) }), _jsxs("div", { className: "hc-sidebar-rail-footer shrink-0", children: [footer != null ? _jsx("div", { className: "hc-sidebar-rail-footer-content", children: footer }) : null, _jsxs("button", { type: "button", className: cn('hc-sidebar-rail-expand inline-flex min-h-12 w-full cursor-pointer items-center rounded-none border-none bg-transparent py-3 text-sidebar-rail-text', expanded ? 'gap-2 px-3' : 'justify-center', 'hover:bg-sidebar-rail-active', railExpandFocusVisible), "aria-label": expanded ? undefined : expandAriaLabel, "aria-expanded": expanded, title: expandLabel, onClick: handleToggleExpanded, children: [_jsx(FaIcon, { icon: expanded ? faAnglesLeft : faAnglesRight, className: "h-[18px]! w-[18px]!", "aria-hidden": true }), expanded ? _jsx("span", { className: "min-w-0 truncate text-left", children: expandLabel }) : null] })] })] }));
|
|
122
122
|
}
|
|
@@ -17,7 +17,7 @@ const SectionItem = memo(function SectionItem({ forwardedRef, itemRef, state, to
|
|
|
17
17
|
const [transitionStyle, panelRef] = useHeightTransition(state);
|
|
18
18
|
const itemElementRef = useMergeRef(forwardedRef, itemRef);
|
|
19
19
|
const { status, isMounted, isEnter } = state;
|
|
20
|
-
return (_jsxs("div", { ref: itemElementRef, className: "mb-1", children: [_jsxs("div", { className: `hc-sidebar-section-header flex min-h-8 items-center justify-between gap-2 border-b border-sidebar-rail-separator bg-sidebar-section py-1 pl-0.5 ${flushBody ? 'mb-0' : 'mb-1'}`, children: [_jsxs("button", { ...buttonProps, type: "button", className: "
|
|
20
|
+
return (_jsxs("div", { ref: itemElementRef, className: "mb-1", children: [_jsxs("div", { className: `hc-sidebar-section-header flex min-h-8 items-center justify-between gap-2 border-b border-sidebar-rail-separator bg-sidebar-section py-1 pl-0.5 ${flushBody ? 'mb-0' : 'mb-1'}`, children: [_jsxs("button", { ...buttonProps, type: "button", className: "inline-flex min-w-0 flex-1 cursor-pointer items-center gap-2.5 border-none bg-transparent p-0 text-left", children: [_jsx("span", { className: SIDEBAR_CHEVRON_SLOT_CLASS, children: _jsx(FaIcon, { icon: isEnter ? faChevronDown : faChevronRight, className: `${SIDEBAR_CHEVRON_ICON_CLASS} text-sidebar-section-text` }) }), _jsx("h2", { tabIndex: -1, className: "hc-sidebar-section-label m-0 text-[15px] leading-none font-medium tracking-wide text-sidebar-section-text uppercase", children: title })] }), (headerActions || onAdd) && (_jsxs("div", { className: "hc-sidebar-section-header-actions flex shrink-0 items-center gap-1", children: [headerActions, onAdd ? (_jsx("button", { type: "button", className: "hc-sidebar-add-button inline-flex shrink-0 cursor-pointer items-center justify-center border-none bg-transparent text-muted hover:bg-selection hover:text-text focus-visible:bg-selection focus-visible:text-text", title: addLabel ?? 'Add', "aria-label": addLabel ?? 'Add', onClick: onAdd, children: _jsx(FaIcon, { icon: faPlus, className: "h-3.5 w-3.5" }) })) : null] }))] }), isMounted ? (_jsx("div", { style: {
|
|
21
21
|
display: status === 'exited' ? 'none' : undefined,
|
|
22
22
|
...transitionStyle
|
|
23
23
|
}, className: "transition-[height] duration-200 ease-out motion-reduce:transition-none", children: _jsx("div", { ...panelProps, ref: panelRef, children: children }) })) : null] }));
|
|
@@ -131,7 +131,7 @@ export function SortMenu({ anchorRef, options, value, ariaLabel = 'Sort', onSele
|
|
|
131
131
|
if (position == null) {
|
|
132
132
|
return null;
|
|
133
133
|
}
|
|
134
|
-
return portalToBody(_jsx("div", { ref: listboxRef, id: listboxId, role: "listbox", "aria-label": ariaLabel, className: "hc-sort-menu-listbox
|
|
134
|
+
return portalToBody(_jsx("div", { ref: listboxRef, id: listboxId, role: "listbox", "aria-label": ariaLabel, className: "hc-sort-menu-listbox fixed z-50 max-h-[280px] overflow-y-auto rounded-md border border-separator bg-surface py-1 shadow-md", style: { top: position.y, left: position.x, width: LISTBOX_WIDTH_PX }, onKeyDown: handleListboxKeyDown, children: options.map((option, index) => (_jsx(SortMenuOption, { label: option.label, selected: option.id === value, focused: index === focusedIndex, optionRef: (element) => {
|
|
135
135
|
optionRefs.current[index] = element;
|
|
136
136
|
}, onSelect: () => onSelect(option.id) }, option.id))) }));
|
|
137
137
|
}
|
|
@@ -11,7 +11,7 @@ import { FaIcon } from '../FaIcon/index.js';
|
|
|
11
11
|
* @param onSelect - Called when the option is activated.
|
|
12
12
|
*/
|
|
13
13
|
export function SortMenuOption({ label, selected, focused, optionRef, onSelect }) {
|
|
14
|
-
return (_jsxs("button", { ref: optionRef, type: "button", role: "option", "aria-selected": selected, tabIndex: focused ? 0 : -1, className: "
|
|
14
|
+
return (_jsxs("button", { ref: optionRef, type: "button", role: "option", "aria-selected": selected, tabIndex: focused ? 0 : -1, className: "flex w-full cursor-pointer items-center gap-2 border-none bg-transparent px-3.5 py-1.5 text-left text-[14px] text-text hover:bg-selection", onClick: (event) => {
|
|
15
15
|
event.stopPropagation();
|
|
16
16
|
onSelect();
|
|
17
17
|
}, children: [_jsx("span", { className: "inline-flex w-4 shrink-0 justify-center", "aria-hidden": true, children: selected ? _jsx(FaIcon, { icon: faCheck, className: "h-3 w-3" }) : null }), _jsx("span", { className: "min-w-0 truncate", children: label })] }));
|
|
@@ -30,7 +30,7 @@ export function TabBarShell({ item, tabIndex, sortableId, sortableDisabled = fal
|
|
|
30
30
|
: (event) => {
|
|
31
31
|
event.preventDefault();
|
|
32
32
|
onContextMenu?.(item.id, event);
|
|
33
|
-
}, onKeyDown: exiting ? undefined : handleTabKeyDown, ...(sortableDisabled || exiting ? {} : listeners), children: [_jsx("span", { className: "
|
|
33
|
+
}, onKeyDown: exiting ? undefined : handleTabKeyDown, ...(sortableDisabled || exiting ? {} : listeners), children: [_jsx("span", { className: "flex min-w-0 flex-1 items-center gap-1.5 py-2 text-inherit", children: item.content }), !exiting && (_jsx("span", { className: "flex shrink-0 items-center self-center", onPointerDown: (event) => event.stopPropagation(), children: _jsx(TabCloseButton, { ariaLabel: item.closeAccessibleName, title: item.closeAccessibleName, tabIndex: 0, onClick: (event) => {
|
|
34
34
|
event.stopPropagation();
|
|
35
35
|
onClose(item.id);
|
|
36
36
|
} }) }))] }));
|
|
@@ -104,7 +104,7 @@ export function TabContextMenu({ groups, position, onClose, ariaLabel = 'Tab act
|
|
|
104
104
|
if (flatItems.length === 0) {
|
|
105
105
|
return null;
|
|
106
106
|
}
|
|
107
|
-
return portalToBody(_jsx("div", { ref: menuRef, role: "menu", "aria-label": ariaLabel, className: "hc-tab-context-menu
|
|
107
|
+
return portalToBody(_jsx("div", { ref: menuRef, role: "menu", "aria-label": ariaLabel, className: "hc-tab-context-menu fixed z-[70] min-w-[200px] rounded-md border border-separator bg-surface py-1 shadow-md", style: { left: clampedPosition.x, top: clampedPosition.y }, onKeyDown: handleMenuKeyDown, children: groups.map((group, groupIndex) => {
|
|
108
108
|
let flatIndex = groups
|
|
109
109
|
.slice(0, groupIndex)
|
|
110
110
|
.reduce((count, groupItems) => count + groupItems.length, 0);
|
|
@@ -8,7 +8,7 @@ import { cn } from '../utils.js';
|
|
|
8
8
|
*/
|
|
9
9
|
export function TabNewButton({ ariaLabel, title, wrapped, onClick }) {
|
|
10
10
|
if (wrapped) {
|
|
11
|
-
return (_jsx("div", { className: "flex shrink-0", children: _jsx("button", { type: "button", className: cn('
|
|
11
|
+
return (_jsx("div", { className: "flex shrink-0", children: _jsx("button", { type: "button", className: cn('inline-flex min-h-12 shrink-0 cursor-pointer items-center justify-center self-end rounded-t-lg border border-b-2 px-3 text-[14px]', tabItem(false)), title: title, "aria-label": ariaLabel, onClick: onClick, style: { width: 50 }, children: _jsx(FaIcon, { icon: faPlus, className: "h-3.5 w-3.5" }) }) }));
|
|
12
12
|
}
|
|
13
|
-
return (_jsx("div", { className: "flex shrink-0 items-end px-1", children: _jsx("button", { type: "button", className: "hc-tab-new-button
|
|
13
|
+
return (_jsx("div", { className: "flex shrink-0 items-end px-1", children: _jsx("button", { type: "button", className: "hc-tab-new-button mb-2.5 inline-flex shrink-0 cursor-pointer items-center justify-center border-none bg-transparent px-3 text-[14px] text-muted hover:bg-selection hover:text-text focus-visible:bg-selection focus-visible:text-text", title: title, "aria-label": ariaLabel, onClick: onClick, style: { width: 50 }, children: _jsx(FaIcon, { icon: faPlus, className: "h-3.5 w-3.5" }) }) }));
|
|
14
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/TabBar/index.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAkB,GAAG,EAA6B,SAAS,EAAE,MAAM,OAAO,CAAC;AACvF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAM3D,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAgCjF,UAAU,KAAK,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM;IACzC;;OAEG;IACH,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;IAExB;;OAEG;IACH,QAAQ,EAAE,GAAG,CAAC;IAEd;;OAEG;IACH,IAAI,EAAE,OAAO,CAAC;IAEd;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,MAAM,EAAE,YAAY,CAAC;IAErB;;OAEG;IACH,QAAQ,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;IAE5B;;OAEG;IACH,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;IAE3B;;OAEG;IACH,SAAS,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAEvC;;OAEG;IACH,sBAAsB,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,QAAQ,EAAE,EAAE,CAAC;IAE5E;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAEhC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,OAAO,CAAC;IAE5C;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;IAE/B;;OAEG;IACH,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,SAAS,CAAC;IAEtD;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,cAAc,CAAC,EAAE,oBAAoB,CAAC;IAEtC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAqDD;;;GAGG;AACH,wBAAgB,MAAM,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM,EAAE,EAClD,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,WAAW,EACX,aAAa,EACb,cAAc,EACd,MAAM,EACN,QAAQ,EACR,OAAO,EACP,SAAS,EACT,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,UAAU,EACV,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,SAAS,EACV,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/TabBar/index.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAkB,GAAG,EAA6B,SAAS,EAAE,MAAM,OAAO,CAAC;AACvF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAM3D,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAgCjF,UAAU,KAAK,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM;IACzC;;OAEG;IACH,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;IAExB;;OAEG;IACH,QAAQ,EAAE,GAAG,CAAC;IAEd;;OAEG;IACH,IAAI,EAAE,OAAO,CAAC;IAEd;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,MAAM,EAAE,YAAY,CAAC;IAErB;;OAEG;IACH,QAAQ,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;IAE5B;;OAEG;IACH,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;IAE3B;;OAEG;IACH,SAAS,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAEvC;;OAEG;IACH,sBAAsB,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,QAAQ,EAAE,EAAE,CAAC;IAE5E;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAEhC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,OAAO,CAAC;IAE5C;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;IAE/B;;OAEG;IACH,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,SAAS,CAAC;IAEtD;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,cAAc,CAAC,EAAE,oBAAoB,CAAC;IAEtC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAqDD;;;GAGG;AACH,wBAAgB,MAAM,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM,EAAE,EAClD,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,WAAW,EACX,aAAa,EACb,cAAc,EACd,MAAM,EACN,QAAQ,EACR,OAAO,EACP,SAAS,EACT,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,UAAU,EACV,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,SAAS,EACV,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,OAAO,CAsW1B;AAED,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,KAAK,cAAc,EACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,0BAA0B,CAAC"}
|
|
@@ -254,10 +254,10 @@ export function TabBar({ tabs, activeId, wrap, ariaLabel, tabIdPrefix, panelIdPr
|
|
|
254
254
|
tabIndex: -1,
|
|
255
255
|
sortableDisabled: true,
|
|
256
256
|
exiting: true
|
|
257
|
-
}) }, exitingTab.exitKey)))] }), wrap ? newTabButton : null] }), _jsx(DragOverlay, { children: activeDragTab ? (_jsx("div", { className: "rounded-t-lg border border-separator bg-
|
|
257
|
+
}) }, exitingTab.exitKey)))] }), wrap ? newTabButton : null] }), _jsx(DragOverlay, { children: activeDragTab ? (_jsx("div", { className: "rounded-t-lg border border-separator bg-tab-active px-3 py-2 text-[14px] font-medium shadow-md", children: activeDragTab.dragLabel })) : null })] }), wrap ? null : newTabButton] }));
|
|
258
258
|
const defaultScrollContainer = (row) => (_jsx("div", { className: "min-w-0 flex-1 overflow-x-auto", children: row }));
|
|
259
259
|
const scrollContainer = renderScrollContainer ?? defaultScrollContainer;
|
|
260
|
-
const containerClassName = cn('
|
|
260
|
+
const containerClassName = cn('flex shrink-0 items-end bg-tab-bar pr-2 pl-0', className);
|
|
261
261
|
return (_jsxs("div", { className: containerClassName, children: [wrap ? _jsx("div", { className: "min-w-0 flex-1", children: tabRow }) : scrollContainer(tabRow), contextMenu != null && buildContextMenuGroups != null && (_jsx(TabContextMenu, { groups: contextMenuGroups, position: { x: contextMenu.x, y: contextMenu.y }, onClose: closeContextMenu }))] }));
|
|
262
262
|
}
|
|
263
263
|
export { TabNewButton } from './TabNewButton.js';
|
|
@@ -6,5 +6,5 @@ import { cn } from '../utils.js';
|
|
|
6
6
|
* Close control for document-style tabs in the request editor and AI chat.
|
|
7
7
|
*/
|
|
8
8
|
export function TabCloseButton({ ariaLabel, onClick, title = 'Close tab', tabIndex, className, ...props }) {
|
|
9
|
-
return (_jsx("button", { ...props, type: "button", className: cn('hc-tab-close-button
|
|
9
|
+
return (_jsx("button", { ...props, type: "button", className: cn('hc-tab-close-button inline-flex h-7 w-7 shrink-0 cursor-pointer items-center justify-center self-center rounded-full border-none bg-transparent text-[14px] text-muted hover:bg-selection hover:text-text focus-visible:bg-selection focus-visible:text-text', className), title: title, "aria-label": ariaLabel, tabIndex: tabIndex, onClick: onClick, children: _jsx(FaIcon, { icon: faXmark, className: "hc-tab-close-button-icon h-3.5 w-3.5" }) }));
|
|
10
10
|
}
|
|
@@ -24,7 +24,7 @@ function isToolbarActionActive(action) {
|
|
|
24
24
|
* @returns Class string for the action button.
|
|
25
25
|
*/
|
|
26
26
|
function toolbarActionButtonClasses(active) {
|
|
27
|
-
return cn('hc-toolbar-action
|
|
27
|
+
return cn('hc-toolbar-action inline-flex h-8 w-8 shrink-0 cursor-pointer items-center justify-center rounded-md border-none', active
|
|
28
28
|
? 'bg-sidebar-section text-toolbar-action-active'
|
|
29
29
|
: 'bg-transparent text-text hover:bg-selection focus-visible:bg-selection focus-visible:text-text', 'disabled:cursor-not-allowed disabled:opacity-50');
|
|
30
30
|
}
|
|
@@ -44,5 +44,5 @@ function renderAction(action) {
|
|
|
44
44
|
* Action icons wrap to additional rows when the sidebar is narrower than one row.
|
|
45
45
|
*/
|
|
46
46
|
export function Toolbar({ actions, toggles, ariaLabel = 'Toolbar', className, ...props }) {
|
|
47
|
-
return (_jsxs("div", { ...props, role: "toolbar", "aria-label": ariaLabel, className: cn('hc-toolbar
|
|
47
|
+
return (_jsxs("div", { ...props, role: "toolbar", "aria-label": ariaLabel, className: cn('hc-toolbar flex min-w-0 shrink-0 flex-wrap items-center gap-y-1 border-b border-separator bg-sidebar-toolbar px-2 py-2', className), children: [_jsx("div", { className: "hc-toolbar-actions flex min-w-0 flex-1 flex-wrap items-center gap-1 leading-none", children: actions.map(renderAction) }), toggles && toggles.length > 0 ? (_jsx("div", { className: "hc-toolbar-toggles ml-auto flex shrink-0 items-center gap-1", children: toggles.map(renderAction) })) : null] }));
|
|
48
48
|
}
|
|
@@ -81,8 +81,8 @@ export interface Props extends Omit<ComponentPropsWithoutRef<'div'>, 'children'
|
|
|
81
81
|
* The variable tooltip is portaled to `document.body` so fixed positioning is not
|
|
82
82
|
* trapped under host chrome (for example request tabs above a scroll container).
|
|
83
83
|
*
|
|
84
|
-
* Token highlight color (`text-[#32D2E2]`)
|
|
85
|
-
*
|
|
84
|
+
* Token highlight color (`text-[#32D2E2]`) relies on host styling in HarborClient
|
|
85
|
+
* `styles.css`.
|
|
86
86
|
*/
|
|
87
87
|
export declare function VariableInput({ value, onChange, variables, placeholder, onKeyDown, className, wrapperClassName, onEditVariable, id, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, source, beforeSuggestionsOpen, onSuggestionsOpenChange, onSuggestionSelect, ...props }: Props): JSX.Element;
|
|
88
88
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -19,8 +19,8 @@ const TOOLTIP_HIDE_DELAY_MS = 400;
|
|
|
19
19
|
* The variable tooltip is portaled to `document.body` so fixed positioning is not
|
|
20
20
|
* trapped under host chrome (for example request tabs above a scroll container).
|
|
21
21
|
*
|
|
22
|
-
* Token highlight color (`text-[#32D2E2]`)
|
|
23
|
-
*
|
|
22
|
+
* Token highlight color (`text-[#32D2E2]`) relies on host styling in HarborClient
|
|
23
|
+
* `styles.css`.
|
|
24
24
|
*/
|
|
25
25
|
export function VariableInput({ value, onChange, variables, placeholder, onKeyDown, className = '', wrapperClassName, onEditVariable, id, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, source, beforeSuggestionsOpen, onSuggestionsOpenChange, onSuggestionSelect, ...props }) {
|
|
26
26
|
const safeValue = value ?? '';
|
|
@@ -41,7 +41,7 @@ export function appendVariableTooltipValueRow(parent, value, key, muted) {
|
|
|
41
41
|
}
|
|
42
42
|
const copyBtn = document.createElement('button');
|
|
43
43
|
copyBtn.type = 'button';
|
|
44
|
-
copyBtn.className = 'cm-variable-tooltip-copy
|
|
44
|
+
copyBtn.className = 'cm-variable-tooltip-copy';
|
|
45
45
|
copyBtn.setAttribute('aria-label', `Copy value for ${key}`);
|
|
46
46
|
copyBtn.appendChild(createTooltipIcon(COPY_ICON_PATH));
|
|
47
47
|
/**
|
|
@@ -81,7 +81,7 @@ export function buildVariableTooltipDom(key, variables, onEditVariable) {
|
|
|
81
81
|
const btn = document.createElement('button');
|
|
82
82
|
btn.type = 'button';
|
|
83
83
|
btn.textContent = 'Edit value';
|
|
84
|
-
btn.className = 'cm-variable-tooltip-edit
|
|
84
|
+
btn.className = 'cm-variable-tooltip-edit';
|
|
85
85
|
btn.setAttribute('aria-label', `Edit value for ${key}`);
|
|
86
86
|
btn.addEventListener('mousedown', (event) => {
|
|
87
87
|
event.preventDefault();
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "@harborclient/sdk/jsx-runtime";
|
|
|
2
2
|
import { faCheck } from '@fortawesome/free-solid-svg-icons';
|
|
3
3
|
import { FaIcon } from '../FaIcon/index.js';
|
|
4
4
|
import { cn } from '../utils.js';
|
|
5
|
-
const menuItemClass = 'flex w-full cursor-pointer items-center gap-2 border-none bg-transparent px-3.5 py-1.5 text-left text-[14px] text-text hover:bg-selection
|
|
5
|
+
const menuItemClass = 'flex w-full cursor-pointer items-center gap-2 border-none bg-transparent px-3.5 py-1.5 text-left text-[14px] text-text hover:bg-selection';
|
|
6
6
|
/**
|
|
7
7
|
* Single checkbox-style row in the visibility menu.
|
|
8
8
|
*/
|
|
@@ -129,7 +129,7 @@ export function VisibilityMenu({ items, visibleValues, onToggle }) {
|
|
|
129
129
|
else {
|
|
130
130
|
openMenu(false);
|
|
131
131
|
}
|
|
132
|
-
}, onKeyDown: handleTriggerKeyDown, children: _jsx(FaIcon, { icon: faCaretDown, className: "h-3.5 w-3.5" }) }), isOpen && (_jsx("div", { id: menuElementId, role: "menu", className: "hc-visibility-menu-panel
|
|
132
|
+
}, onKeyDown: handleTriggerKeyDown, children: _jsx(FaIcon, { icon: faCaretDown, className: "h-3.5 w-3.5" }) }), isOpen && (_jsx("div", { id: menuElementId, role: "menu", className: "hc-visibility-menu-panel absolute top-full right-0 z-10 mt-0.5 min-w-[140px] rounded-md border border-separator bg-surface py-1 shadow-md", onKeyDown: handleMenuKeyDown, children: items.map((item, index) => {
|
|
133
133
|
const checked = visibleSet.has(item.value);
|
|
134
134
|
return (_jsx(MenuCheckboxItem, { ref: (element) => {
|
|
135
135
|
itemRefs.current[index] = element;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared macOS-style Tailwind class strings for SDK UI components.
|
|
3
3
|
*/
|
|
4
|
-
export declare const segmentGroup = "flex min-w-0 max-w-full w-full p-3 border-b border-separator shadow-[inset_0_0.5px_1px_rgba(0,0,0,0.06)]
|
|
4
|
+
export declare const segmentGroup = "flex min-w-0 max-w-full w-full p-3 border-b border-separator shadow-[inset_0_0.5px_1px_rgba(0,0,0,0.06)]";
|
|
5
5
|
/**
|
|
6
6
|
* Tailwind classes for a segmented control button.
|
|
7
7
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classes.d.ts","sourceRoot":"","sources":["../../src/components/classes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"classes.d.ts","sourceRoot":"","sources":["../../src/components/classes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,YAAY,6GACmF,CAAC;AAK7G;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAI/C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAI/C"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared macOS-style Tailwind class strings for SDK UI components.
|
|
3
3
|
*/
|
|
4
|
-
export const segmentGroup = 'flex min-w-0 max-w-full w-full p-3 border-b border-separator shadow-[inset_0_0.5px_1px_rgba(0,0,0,0.06)]
|
|
4
|
+
export const segmentGroup = 'flex min-w-0 max-w-full w-full p-3 border-b border-separator shadow-[inset_0_0.5px_1px_rgba(0,0,0,0.06)]';
|
|
5
5
|
const segmentFocusVisible = 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent';
|
|
6
6
|
/**
|
|
7
7
|
* Tailwind classes for a segmented control button.
|
|
@@ -10,8 +10,8 @@ const segmentFocusVisible = 'focus-visible:outline focus-visible:outline-2 focus
|
|
|
10
10
|
*/
|
|
11
11
|
export function segment(active) {
|
|
12
12
|
return active
|
|
13
|
-
? `cursor-pointer rounded-md border-none bg-selection px-3 h-[32px] leading-none text-text
|
|
14
|
-
: `cursor-pointer rounded-md border-none bg-transparent px-3 h-[32px] leading-none text-muted hover:text-text
|
|
13
|
+
? `cursor-pointer rounded-md border-none bg-selection px-3 h-[32px] leading-none text-text ${segmentFocusVisible}`
|
|
14
|
+
: `cursor-pointer rounded-md border-none bg-transparent px-3 h-[32px] leading-none text-muted hover:text-text ${segmentFocusVisible}`;
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
17
17
|
* Active/inactive surface classes for a document-style tab in the tab bar.
|
|
@@ -26,6 +26,6 @@ export function segment(active) {
|
|
|
26
26
|
*/
|
|
27
27
|
export function tabItem(active) {
|
|
28
28
|
return active
|
|
29
|
-
? 'relative z-[1] border-separator/70 border-b-
|
|
30
|
-
: 'border-separator/50 border-b-separator/50 bg-
|
|
29
|
+
? 'relative z-[1] border-separator/70 border-b-tab-active bg-tab-active text-tab-text [border-bottom-width:var(--mac-tab-border-width)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-accent'
|
|
30
|
+
: 'border-separator/50 border-b-separator/50 bg-tab-inactive text-tab-text-inactive [border-bottom-width:var(--mac-tab-border-width)] hover:bg-tab-hover hover:text-tab-text focus-visible:bg-tab-hover focus-visible:text-tab-text focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-accent';
|
|
31
31
|
}
|
|
@@ -7,7 +7,7 @@ export type FieldVariant = 'control' | 'surface' | 'plain';
|
|
|
7
7
|
*/
|
|
8
8
|
export declare const fieldFrame = "overflow-hidden rounded-lg border border-separator bg-field";
|
|
9
9
|
/** Inset control style for standard settings and editor fields. */
|
|
10
|
-
export declare const field = "rounded-lg border border-separator bg-field px-2.5 py-1.5 text-text
|
|
10
|
+
export declare const field = "rounded-lg border border-separator bg-field px-2.5 py-1.5 text-text";
|
|
11
11
|
/** Surface style for modal and Team Hub form fields. */
|
|
12
12
|
export declare const surfaceField = "w-full rounded-lg border border-separator bg-field px-3 py-2.5 text-[15px] text-text";
|
|
13
13
|
/** Transparent overlay checkbox input sized to {@link checkboxBox}. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classes.d.ts","sourceRoot":"","sources":["../../../src/components/forms/classes.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAE3D;;GAEG;AACH,eAAO,MAAM,UAAU,gEAAgE,CAAC;AAExF,mEAAmE;AACnE,eAAO,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"classes.d.ts","sourceRoot":"","sources":["../../../src/components/forms/classes.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAE3D;;GAEG;AACH,eAAO,MAAM,UAAU,gEAAgE,CAAC;AAExF,mEAAmE;AACnE,eAAO,MAAM,KAAK,wEAAwE,CAAC;AAE3F,wDAAwD;AACxD,eAAO,MAAM,YAAY,yFAC+D,CAAC;AAEzF,uEAAuE;AACvE,eAAO,MAAM,aAAa,iGACsE,CAAC;AAEjG,qGAAqG;AACrG,eAAO,MAAM,WAAW,ibACwZ,CAAC;AAEjb,oEAAoE;AACpE,eAAO,MAAM,UAAU,iGACyE,CAAC;AAEjG,kGAAkG;AAClG,eAAO,MAAM,WAAW,8ZACqY,CAAC;AAE9Z,6DAA6D;AAC7D,eAAO,MAAM,QAAQ,8GACwF,CAAC;AAE9G,uEAAuE;AACvE,eAAO,MAAM,WAAW,iGACwE,CAAC;AAEjG,0FAA0F;AAC1F,eAAO,MAAM,WAAW,wcAC+a,CAAC;AAExc,uFAAuF;AACvF,eAAO,MAAM,WAAW,0JACiI,CAAC;AAE1J;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,YAAY,EACrB,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,GAAG,SAAS,CAOpB"}
|
|
@@ -7,7 +7,7 @@ import { cn } from '../utils.js';
|
|
|
7
7
|
*/
|
|
8
8
|
export const fieldFrame = 'overflow-hidden rounded-lg border border-separator bg-field';
|
|
9
9
|
/** Inset control style for standard settings and editor fields. */
|
|
10
|
-
export const field = 'rounded-lg border border-separator bg-field px-2.5 py-1.5 text-text
|
|
10
|
+
export const field = 'rounded-lg border border-separator bg-field px-2.5 py-1.5 text-text';
|
|
11
11
|
/** Surface style for modal and Team Hub form fields. */
|
|
12
12
|
export const surfaceField = 'w-full rounded-lg border border-separator bg-field px-3 py-2.5 text-[15px] text-text';
|
|
13
13
|
/** Transparent overlay checkbox input sized to {@link checkboxBox}. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rowActionsMenuHelpers.d.ts","sourceRoot":"","sources":["../../src/components/rowActionsMenuHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE1D;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"rowActionsMenuHelpers.d.ts","sourceRoot":"","sources":["../../src/components/rowActionsMenuHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE1D;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAYtF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAEzD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,QAAQ,EAAE,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,GAChB,MAAM,GAAG,IAAI,CAWf;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAYvF;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,GACzC,QAAQ,EAAE,EAAE,CAsBd"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* `RowActionsMenu` panel and its flyout `Submenu` panels.
|
|
4
4
|
*/
|
|
5
5
|
export function menuItemClass(variant, disabled) {
|
|
6
|
-
const base = 'flex w-full items-center gap-2 border-none bg-transparent px-3.5 py-1.5 text-left
|
|
6
|
+
const base = 'flex w-full items-center gap-2 border-none bg-transparent px-3.5 py-1.5 text-left';
|
|
7
7
|
if (disabled) {
|
|
8
8
|
return `${base} cursor-not-allowed text-muted opacity-60`;
|
|
9
9
|
}
|
|
@@ -38,7 +38,10 @@ export declare function encodeBasicAuth(username: string, password: string): str
|
|
|
38
38
|
/**
|
|
39
39
|
* Builds the Authorization header value from an auth config.
|
|
40
40
|
*
|
|
41
|
+
* OAuth 2.0 returns null here — token fetch is host-side, not a static header.
|
|
42
|
+
*
|
|
41
43
|
* @param auth - Auth configuration from the request or collection.
|
|
44
|
+
* @returns Header value such as `Basic …` or `Bearer …`, or null when auth is inactive.
|
|
42
45
|
*/
|
|
43
46
|
export declare function buildAuthHeaderValue(auth: AuthConfig): string | null;
|
|
44
47
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveRequest.d.ts","sourceRoot":"","sources":["../../src/http/resolveRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAG/E,KAAK,QAAQ,GAAG;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEhC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAiBD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAW1E;AAED
|
|
1
|
+
{"version":3,"file":"resolveRequest.d.ts","sourceRoot":"","sources":["../../src/http/resolveRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAG/E,KAAK,QAAQ,GAAG;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEhC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAiBD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAW1E;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAiBpE;AA4BD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAwBpE;AAsBD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,YAAY,EACnB,iBAAiB,EAAE,QAAQ,EAAE,EAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA2BxB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,iBAAiB,GAAG,eAAe,CAwB1E"}
|
|
@@ -34,10 +34,13 @@ export function encodeBasicAuth(username, password) {
|
|
|
34
34
|
/**
|
|
35
35
|
* Builds the Authorization header value from an auth config.
|
|
36
36
|
*
|
|
37
|
+
* OAuth 2.0 returns null here — token fetch is host-side, not a static header.
|
|
38
|
+
*
|
|
37
39
|
* @param auth - Auth configuration from the request or collection.
|
|
40
|
+
* @returns Header value such as `Basic …` or `Bearer …`, or null when auth is inactive.
|
|
38
41
|
*/
|
|
39
42
|
export function buildAuthHeaderValue(auth) {
|
|
40
|
-
if (auth.type === 'none') {
|
|
43
|
+
if (auth.type === 'none' || auth.type === 'oauth2') {
|
|
41
44
|
return null;
|
|
42
45
|
}
|
|
43
46
|
if (auth.type === 'basic') {
|
|
@@ -16,6 +16,7 @@ export declare function substituteVariables(text: string, runtimeVars: Record<st
|
|
|
16
16
|
*
|
|
17
17
|
* @param auth - Auth config with raw editor values.
|
|
18
18
|
* @param substitute - Function that resolves placeholders in a string.
|
|
19
|
+
* @returns Auth config with substituted credential fields.
|
|
19
20
|
*/
|
|
20
21
|
export declare function resolveAuthVariables(auth: AuthConfig, substitute: (text: string) => string): AuthConfig;
|
|
21
22
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"substitute.d.ts","sourceRoot":"","sources":["../../src/http/substitute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,KAAK,QAAQ,GAAG;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAE7F;AAED
|
|
1
|
+
{"version":3,"file":"substitute.d.ts","sourceRoot":"","sources":["../../src/http/substitute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,KAAK,QAAQ,GAAG;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAE7F;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GACnC,UAAU,CAmBZ;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,QAAQ,EAAE,EAChB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,QAAQ,EAAE,CAKZ"}
|
package/dist/http/substitute.js
CHANGED
|
@@ -13,6 +13,7 @@ export function substituteVariables(text, runtimeVars) {
|
|
|
13
13
|
*
|
|
14
14
|
* @param auth - Auth config with raw editor values.
|
|
15
15
|
* @param substitute - Function that resolves placeholders in a string.
|
|
16
|
+
* @returns Auth config with substituted credential fields.
|
|
16
17
|
*/
|
|
17
18
|
export function resolveAuthVariables(auth, substitute) {
|
|
18
19
|
return {
|
|
@@ -23,6 +24,14 @@ export function resolveAuthVariables(auth, substitute) {
|
|
|
23
24
|
},
|
|
24
25
|
bearer: {
|
|
25
26
|
token: substitute(auth.bearer.token)
|
|
27
|
+
},
|
|
28
|
+
oauth2: {
|
|
29
|
+
tokenUrl: substitute(auth.oauth2.tokenUrl),
|
|
30
|
+
clientId: substitute(auth.oauth2.clientId),
|
|
31
|
+
clientSecret: substitute(auth.oauth2.clientSecret),
|
|
32
|
+
scope: substitute(auth.oauth2.scope),
|
|
33
|
+
audience: substitute(auth.oauth2.audience),
|
|
34
|
+
clientAuth: auth.oauth2.clientAuth
|
|
26
35
|
}
|
|
27
36
|
};
|
|
28
37
|
}
|