@adecore/ui 0.44.3 → 0.45.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.
- package/dist/ProjectSwitcher.d.ts +2 -1
- package/dist/ProjectSwitcher.js +23 -20
- package/dist/ZoomControls.d.ts +4 -1
- package/dist/ZoomControls.js +226 -199
- package/package.json +1 -1
- package/src/ProjectSwitcher.tsx +3 -0
- package/src/ZoomControls.tsx +23 -6
|
@@ -20,11 +20,12 @@ export interface ProjectSwitcherProps<Item extends ProjectSwitcherItem = Project
|
|
|
20
20
|
children?: ReactNode;
|
|
21
21
|
label?: string;
|
|
22
22
|
disabled?: boolean;
|
|
23
|
+
tabIndex?: number;
|
|
23
24
|
open?: boolean;
|
|
24
25
|
defaultOpen?: boolean;
|
|
25
26
|
onOpenChange?: ComponentProps<typeof Menu.Root>['onOpenChange'];
|
|
26
27
|
className?: string;
|
|
27
28
|
ref?: Ref<HTMLButtonElement>;
|
|
28
29
|
}
|
|
29
|
-
export declare function ProjectSwitcher<Item extends ProjectSwitcherItem>({ current, projects, recentProjects, onSelect, leading, before, children, label, disabled, open, defaultOpen, onOpenChange, className, ref }: ProjectSwitcherProps<Item>): import("react").JSX.Element;
|
|
30
|
+
export declare function ProjectSwitcher<Item extends ProjectSwitcherItem>({ current, projects, recentProjects, onSelect, leading, before, children, label, disabled, tabIndex, open, defaultOpen, onOpenChange, className, ref }: ProjectSwitcherProps<Item>): import("react").JSX.Element;
|
|
30
31
|
export declare function ProjectSwitcherGroups<Item extends ProjectSwitcherItem>({ projects, recentProjects, before, children, onSelect }: Pick<ProjectSwitcherProps<Item>, 'projects' | 'recentProjects' | 'before' | 'children' | 'onSelect'>): import("react").JSX.Element;
|
package/dist/ProjectSwitcher.js
CHANGED
|
@@ -7,7 +7,7 @@ import * as Menu from './menu/index.parts.js';
|
|
|
7
7
|
import { ProjectSwitcherRow } from "./project-switcher-row.js";
|
|
8
8
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
9
9
|
export function ProjectSwitcher(t0) {
|
|
10
|
-
const $ = _c(
|
|
10
|
+
const $ = _c(29);
|
|
11
11
|
const {
|
|
12
12
|
current,
|
|
13
13
|
projects,
|
|
@@ -18,6 +18,7 @@ export function ProjectSwitcher(t0) {
|
|
|
18
18
|
children,
|
|
19
19
|
label,
|
|
20
20
|
disabled,
|
|
21
|
+
tabIndex,
|
|
21
22
|
open,
|
|
22
23
|
defaultOpen,
|
|
23
24
|
onOpenChange,
|
|
@@ -71,10 +72,11 @@ export function ProjectSwitcher(t0) {
|
|
|
71
72
|
t7 = $[7];
|
|
72
73
|
}
|
|
73
74
|
let t8;
|
|
74
|
-
if ($[8] !== disabled || $[9] !== leading || $[10] !== ref || $[11] !== t2 || $[12] !== t3 || $[13] !== t4 || $[14] !== t6) {
|
|
75
|
+
if ($[8] !== disabled || $[9] !== leading || $[10] !== ref || $[11] !== t2 || $[12] !== t3 || $[13] !== t4 || $[14] !== t6 || $[15] !== tabIndex) {
|
|
75
76
|
t8 = /*#__PURE__*/_jsxs(Menu.Trigger, {
|
|
76
77
|
ref: ref,
|
|
77
78
|
disabled: disabled,
|
|
79
|
+
tabIndex: tabIndex,
|
|
78
80
|
"aria-label": t2,
|
|
79
81
|
className: t3,
|
|
80
82
|
children: [leading, t4, t6, t7]
|
|
@@ -86,12 +88,13 @@ export function ProjectSwitcher(t0) {
|
|
|
86
88
|
$[12] = t3;
|
|
87
89
|
$[13] = t4;
|
|
88
90
|
$[14] = t6;
|
|
89
|
-
$[15] =
|
|
91
|
+
$[15] = tabIndex;
|
|
92
|
+
$[16] = t8;
|
|
90
93
|
} else {
|
|
91
|
-
t8 = $[
|
|
94
|
+
t8 = $[16];
|
|
92
95
|
}
|
|
93
96
|
let t9;
|
|
94
|
-
if ($[
|
|
97
|
+
if ($[17] !== before || $[18] !== children || $[19] !== onSelect || $[20] !== projects || $[21] !== recentProjects) {
|
|
95
98
|
t9 = /*#__PURE__*/_jsx(Menu.Popup, {
|
|
96
99
|
className: "min-w-60",
|
|
97
100
|
children: /*#__PURE__*/_jsx(ProjectSwitcherGroups, {
|
|
@@ -102,31 +105,31 @@ export function ProjectSwitcher(t0) {
|
|
|
102
105
|
children: children
|
|
103
106
|
})
|
|
104
107
|
});
|
|
105
|
-
$[
|
|
106
|
-
$[
|
|
107
|
-
$[
|
|
108
|
-
$[
|
|
109
|
-
$[
|
|
110
|
-
$[
|
|
108
|
+
$[17] = before;
|
|
109
|
+
$[18] = children;
|
|
110
|
+
$[19] = onSelect;
|
|
111
|
+
$[20] = projects;
|
|
112
|
+
$[21] = recentProjects;
|
|
113
|
+
$[22] = t9;
|
|
111
114
|
} else {
|
|
112
|
-
t9 = $[
|
|
115
|
+
t9 = $[22];
|
|
113
116
|
}
|
|
114
117
|
let t10;
|
|
115
|
-
if ($[
|
|
118
|
+
if ($[23] !== defaultOpen || $[24] !== onOpenChange || $[25] !== open || $[26] !== t8 || $[27] !== t9) {
|
|
116
119
|
t10 = /*#__PURE__*/_jsxs(Menu.Root, {
|
|
117
120
|
open: open,
|
|
118
121
|
defaultOpen: defaultOpen,
|
|
119
122
|
onOpenChange: onOpenChange,
|
|
120
123
|
children: [t8, t9]
|
|
121
124
|
});
|
|
122
|
-
$[
|
|
123
|
-
$[
|
|
124
|
-
$[
|
|
125
|
-
$[
|
|
126
|
-
$[
|
|
127
|
-
$[
|
|
125
|
+
$[23] = defaultOpen;
|
|
126
|
+
$[24] = onOpenChange;
|
|
127
|
+
$[25] = open;
|
|
128
|
+
$[26] = t8;
|
|
129
|
+
$[27] = t9;
|
|
130
|
+
$[28] = t10;
|
|
128
131
|
} else {
|
|
129
|
-
t10 = $[
|
|
132
|
+
t10 = $[28];
|
|
130
133
|
}
|
|
131
134
|
return t10;
|
|
132
135
|
}
|
package/dist/ZoomControls.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Ref } from 'react';
|
|
2
|
+
import { type IconButtonSize } from './IconButton.tsx';
|
|
2
3
|
import type { Shortcut } from './shortcut.ts';
|
|
3
4
|
export interface ZoomSelection {
|
|
4
5
|
label: string;
|
|
@@ -24,7 +25,9 @@ export interface ZoomControlsProps {
|
|
|
24
25
|
fitAll?: Shortcut;
|
|
25
26
|
};
|
|
26
27
|
selection?: ZoomSelection;
|
|
28
|
+
size?: Extract<IconButtonSize, 'md' | 'sm'>;
|
|
29
|
+
side?: 'top' | 'bottom';
|
|
27
30
|
className?: string;
|
|
28
31
|
ref?: Ref<HTMLDivElement>;
|
|
29
32
|
}
|
|
30
|
-
export declare function ZoomControls({ zoom, onZoomChange, onFitAll, presets, labels, shortcuts, selection, className, ref }: ZoomControlsProps): import("react").JSX.Element;
|
|
33
|
+
export declare function ZoomControls({ zoom, onZoomChange, onFitAll, presets, labels, shortcuts, selection, size, side, className, ref }: ZoomControlsProps): import("react").JSX.Element;
|
package/dist/ZoomControls.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { c as _c } from "react/compiler-runtime";
|
|
2
|
+
import clsx from 'clsx';
|
|
2
3
|
import { Maximize, Minus, Plus, Scan } from 'lucide-react';
|
|
3
4
|
import { useTranslation } from 'react-i18next';
|
|
4
5
|
import { ButtonGroup } from "./ButtonGroup.js";
|
|
@@ -8,7 +9,12 @@ import { Kbd } from "./Kbd.js";
|
|
|
8
9
|
import { MenuItem, MenuPopup, MenuRadioGroup, MenuRadioItem, MenuRoot, MenuSeparator, MenuTrigger } from "./menu/parts.js";
|
|
9
10
|
import { Tooltip } from "./Tooltip.js";
|
|
10
11
|
import { activeZoomPreset, steppedZoom, ZOOM_PRESETS } from './zoom.js';
|
|
12
|
+
/* The percentage between the buttons, at the height and radius of the buttons beside it. */
|
|
11
13
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
|
+
const TRIGGER_SIZE = {
|
|
15
|
+
md: 'h-8 min-w-14 rounded-lg',
|
|
16
|
+
sm: 'h-7 min-w-12 rounded-md'
|
|
17
|
+
};
|
|
12
18
|
function MenuIcon(t0) {
|
|
13
19
|
const $ = _c(2);
|
|
14
20
|
const {
|
|
@@ -31,7 +37,7 @@ function MenuIcon(t0) {
|
|
|
31
37
|
return t1;
|
|
32
38
|
}
|
|
33
39
|
export function ZoomControls(t0) {
|
|
34
|
-
const $ = _c(
|
|
40
|
+
const $ = _c(87);
|
|
35
41
|
const {
|
|
36
42
|
zoom,
|
|
37
43
|
onZoomChange,
|
|
@@ -40,125 +46,141 @@ export function ZoomControls(t0) {
|
|
|
40
46
|
labels: t2,
|
|
41
47
|
shortcuts: t3,
|
|
42
48
|
selection,
|
|
49
|
+
size: t4,
|
|
50
|
+
side: t5,
|
|
43
51
|
className,
|
|
44
52
|
ref
|
|
45
53
|
} = t0;
|
|
46
54
|
const presets = t1 === undefined ? ZOOM_PRESETS : t1;
|
|
47
|
-
let
|
|
55
|
+
let t6;
|
|
48
56
|
if ($[0] !== t2) {
|
|
49
|
-
|
|
57
|
+
t6 = t2 === undefined ? {} : t2;
|
|
50
58
|
$[0] = t2;
|
|
51
|
-
$[1] =
|
|
59
|
+
$[1] = t6;
|
|
52
60
|
} else {
|
|
53
|
-
|
|
61
|
+
t6 = $[1];
|
|
54
62
|
}
|
|
55
|
-
const labels =
|
|
56
|
-
let
|
|
63
|
+
const labels = t6;
|
|
64
|
+
let t7;
|
|
57
65
|
if ($[2] !== t3) {
|
|
58
|
-
|
|
66
|
+
t7 = t3 === undefined ? {} : t3;
|
|
59
67
|
$[2] = t3;
|
|
60
|
-
$[3] =
|
|
68
|
+
$[3] = t7;
|
|
61
69
|
} else {
|
|
62
|
-
|
|
70
|
+
t7 = $[3];
|
|
63
71
|
}
|
|
64
|
-
const shortcuts =
|
|
72
|
+
const shortcuts = t7;
|
|
73
|
+
const size = t4 === undefined ? "md" : t4;
|
|
74
|
+
const side = t5 === undefined ? "top" : t5;
|
|
65
75
|
const {
|
|
66
76
|
t
|
|
67
77
|
} = useTranslation("ui");
|
|
68
|
-
let
|
|
78
|
+
let t8;
|
|
69
79
|
if ($[4] !== presets || $[5] !== zoom) {
|
|
70
|
-
|
|
80
|
+
t8 = activeZoomPreset(zoom, presets);
|
|
71
81
|
$[4] = presets;
|
|
72
82
|
$[5] = zoom;
|
|
73
|
-
$[6] =
|
|
83
|
+
$[6] = t8;
|
|
74
84
|
} else {
|
|
75
|
-
|
|
85
|
+
t8 = $[6];
|
|
76
86
|
}
|
|
77
|
-
const preset =
|
|
78
|
-
let
|
|
87
|
+
const preset = t8;
|
|
88
|
+
let t9;
|
|
79
89
|
if ($[7] !== labels.out || $[8] !== t) {
|
|
80
|
-
|
|
90
|
+
t9 = labels.out ?? t("zoom.out");
|
|
81
91
|
$[7] = labels.out;
|
|
82
92
|
$[8] = t;
|
|
83
|
-
$[9] =
|
|
93
|
+
$[9] = t9;
|
|
84
94
|
} else {
|
|
85
|
-
|
|
95
|
+
t9 = $[9];
|
|
86
96
|
}
|
|
87
|
-
let
|
|
97
|
+
let t10;
|
|
88
98
|
if ($[10] !== onZoomChange || $[11] !== zoom) {
|
|
89
|
-
|
|
99
|
+
t10 = () => onZoomChange(steppedZoom(zoom, -10));
|
|
90
100
|
$[10] = onZoomChange;
|
|
91
101
|
$[11] = zoom;
|
|
92
|
-
$[12] =
|
|
102
|
+
$[12] = t10;
|
|
93
103
|
} else {
|
|
94
|
-
|
|
104
|
+
t10 = $[12];
|
|
95
105
|
}
|
|
96
|
-
let
|
|
97
|
-
if ($[13] !==
|
|
98
|
-
|
|
106
|
+
let t11;
|
|
107
|
+
if ($[13] !== size || $[14] !== t10 || $[15] !== t9) {
|
|
108
|
+
t11 = /*#__PURE__*/_jsx(IconButton, {
|
|
99
109
|
icon: Minus,
|
|
100
|
-
|
|
101
|
-
|
|
110
|
+
size: size,
|
|
111
|
+
label: t9,
|
|
112
|
+
onClick: t10
|
|
102
113
|
});
|
|
103
|
-
$[13] =
|
|
104
|
-
$[14] =
|
|
114
|
+
$[13] = size;
|
|
115
|
+
$[14] = t10;
|
|
105
116
|
$[15] = t9;
|
|
117
|
+
$[16] = t11;
|
|
106
118
|
} else {
|
|
107
|
-
|
|
119
|
+
t11 = $[16];
|
|
108
120
|
}
|
|
109
|
-
let
|
|
110
|
-
if ($[
|
|
111
|
-
|
|
112
|
-
$[
|
|
113
|
-
$[
|
|
114
|
-
$[
|
|
121
|
+
let t12;
|
|
122
|
+
if ($[17] !== labels.presets || $[18] !== t) {
|
|
123
|
+
t12 = labels.presets ?? t("zoom.presets");
|
|
124
|
+
$[17] = labels.presets;
|
|
125
|
+
$[18] = t;
|
|
126
|
+
$[19] = t12;
|
|
115
127
|
} else {
|
|
116
|
-
|
|
128
|
+
t12 = $[19];
|
|
117
129
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
$[20] =
|
|
130
|
+
const t13 = TRIGGER_SIZE[size];
|
|
131
|
+
let t14;
|
|
132
|
+
if ($[20] !== t13) {
|
|
133
|
+
t14 = clsx(t13, "px-1 text-xs text-text-muted tabular-nums hover:bg-surface-hover hover:text-text data-[popup-open]:bg-surface-active data-[popup-open]:text-text");
|
|
134
|
+
$[20] = t13;
|
|
135
|
+
$[21] = t14;
|
|
123
136
|
} else {
|
|
124
|
-
|
|
137
|
+
t14 = $[21];
|
|
125
138
|
}
|
|
126
|
-
let
|
|
127
|
-
if ($[
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
139
|
+
let t15;
|
|
140
|
+
if ($[22] !== zoom) {
|
|
141
|
+
t15 = Math.round(zoom * 100);
|
|
142
|
+
$[22] = zoom;
|
|
143
|
+
$[23] = t15;
|
|
144
|
+
} else {
|
|
145
|
+
t15 = $[23];
|
|
146
|
+
}
|
|
147
|
+
let t16;
|
|
148
|
+
if ($[24] !== t14 || $[25] !== t15) {
|
|
149
|
+
t16 = /*#__PURE__*/_jsxs(MenuTrigger, {
|
|
150
|
+
className: t14,
|
|
151
|
+
children: [t15, "%"]
|
|
131
152
|
});
|
|
132
|
-
$[
|
|
133
|
-
$[
|
|
153
|
+
$[24] = t14;
|
|
154
|
+
$[25] = t15;
|
|
155
|
+
$[26] = t16;
|
|
134
156
|
} else {
|
|
135
|
-
|
|
157
|
+
t16 = $[26];
|
|
136
158
|
}
|
|
137
|
-
let
|
|
138
|
-
if ($[
|
|
139
|
-
|
|
140
|
-
label:
|
|
141
|
-
children:
|
|
159
|
+
let t17;
|
|
160
|
+
if ($[27] !== t12 || $[28] !== t16) {
|
|
161
|
+
t17 = /*#__PURE__*/_jsx(Tooltip, {
|
|
162
|
+
label: t12,
|
|
163
|
+
children: t16
|
|
142
164
|
});
|
|
143
|
-
$[
|
|
144
|
-
$[
|
|
145
|
-
$[
|
|
165
|
+
$[27] = t12;
|
|
166
|
+
$[28] = t16;
|
|
167
|
+
$[29] = t17;
|
|
146
168
|
} else {
|
|
147
|
-
|
|
169
|
+
t17 = $[29];
|
|
148
170
|
}
|
|
149
|
-
let
|
|
150
|
-
if ($[
|
|
151
|
-
|
|
152
|
-
$[
|
|
153
|
-
$[
|
|
171
|
+
let t18;
|
|
172
|
+
if ($[30] !== onZoomChange) {
|
|
173
|
+
t18 = value => onZoomChange(value / 100);
|
|
174
|
+
$[30] = onZoomChange;
|
|
175
|
+
$[31] = t18;
|
|
154
176
|
} else {
|
|
155
|
-
|
|
177
|
+
t18 = $[31];
|
|
156
178
|
}
|
|
157
|
-
let
|
|
158
|
-
if ($[
|
|
159
|
-
let
|
|
160
|
-
if ($[
|
|
161
|
-
|
|
179
|
+
let t19;
|
|
180
|
+
if ($[32] !== presets || $[33] !== shortcuts.zoomReset) {
|
|
181
|
+
let t20;
|
|
182
|
+
if ($[35] !== shortcuts.zoomReset) {
|
|
183
|
+
t20 = percent => /*#__PURE__*/_jsxs(MenuRadioItem, {
|
|
162
184
|
value: percent,
|
|
163
185
|
children: [/*#__PURE__*/_jsxs("span", {
|
|
164
186
|
className: "tabular-nums",
|
|
@@ -167,83 +189,83 @@ export function ZoomControls(t0) {
|
|
|
167
189
|
shortcut: shortcuts.zoomReset
|
|
168
190
|
})]
|
|
169
191
|
}, percent);
|
|
170
|
-
$[
|
|
171
|
-
$[
|
|
192
|
+
$[35] = shortcuts.zoomReset;
|
|
193
|
+
$[36] = t20;
|
|
172
194
|
} else {
|
|
173
|
-
|
|
195
|
+
t20 = $[36];
|
|
174
196
|
}
|
|
175
|
-
|
|
176
|
-
$[
|
|
177
|
-
$[
|
|
178
|
-
$[
|
|
197
|
+
t19 = presets.map(t20);
|
|
198
|
+
$[32] = presets;
|
|
199
|
+
$[33] = shortcuts.zoomReset;
|
|
200
|
+
$[34] = t19;
|
|
179
201
|
} else {
|
|
180
|
-
|
|
202
|
+
t19 = $[34];
|
|
181
203
|
}
|
|
182
|
-
let
|
|
183
|
-
if ($[
|
|
184
|
-
|
|
204
|
+
let t20;
|
|
205
|
+
if ($[37] !== preset || $[38] !== t18 || $[39] !== t19) {
|
|
206
|
+
t20 = /*#__PURE__*/_jsx(MenuRadioGroup, {
|
|
185
207
|
value: preset,
|
|
186
|
-
onValueChange:
|
|
187
|
-
children:
|
|
208
|
+
onValueChange: t18,
|
|
209
|
+
children: t19
|
|
188
210
|
});
|
|
189
|
-
$[
|
|
190
|
-
$[
|
|
191
|
-
$[
|
|
192
|
-
$[
|
|
211
|
+
$[37] = preset;
|
|
212
|
+
$[38] = t18;
|
|
213
|
+
$[39] = t19;
|
|
214
|
+
$[40] = t20;
|
|
193
215
|
} else {
|
|
194
|
-
|
|
216
|
+
t20 = $[40];
|
|
195
217
|
}
|
|
196
|
-
let
|
|
197
|
-
if ($[
|
|
198
|
-
|
|
199
|
-
$[
|
|
218
|
+
let t21;
|
|
219
|
+
if ($[41] === Symbol.for("react.memo_cache_sentinel")) {
|
|
220
|
+
t21 = /*#__PURE__*/_jsx(MenuSeparator, {});
|
|
221
|
+
$[41] = t21;
|
|
200
222
|
} else {
|
|
201
|
-
|
|
223
|
+
t21 = $[41];
|
|
202
224
|
}
|
|
203
|
-
let
|
|
204
|
-
if ($[
|
|
205
|
-
|
|
225
|
+
let t22;
|
|
226
|
+
if ($[42] === Symbol.for("react.memo_cache_sentinel")) {
|
|
227
|
+
t22 = /*#__PURE__*/_jsx(MenuIcon, {
|
|
206
228
|
icon: Maximize
|
|
207
229
|
});
|
|
208
|
-
$[
|
|
230
|
+
$[42] = t22;
|
|
209
231
|
} else {
|
|
210
|
-
|
|
232
|
+
t22 = $[42];
|
|
211
233
|
}
|
|
212
|
-
let
|
|
213
|
-
if ($[
|
|
214
|
-
|
|
215
|
-
$[
|
|
216
|
-
$[
|
|
217
|
-
$[
|
|
234
|
+
let t23;
|
|
235
|
+
if ($[43] !== labels.fit || $[44] !== t) {
|
|
236
|
+
t23 = labels.fit ?? t("zoom.fit");
|
|
237
|
+
$[43] = labels.fit;
|
|
238
|
+
$[44] = t;
|
|
239
|
+
$[45] = t23;
|
|
218
240
|
} else {
|
|
219
|
-
|
|
241
|
+
t23 = $[45];
|
|
220
242
|
}
|
|
221
|
-
let
|
|
222
|
-
if ($[
|
|
223
|
-
|
|
243
|
+
let t24;
|
|
244
|
+
if ($[46] !== shortcuts.fitAll) {
|
|
245
|
+
t24 = shortcuts.fitAll && /*#__PURE__*/_jsx(Kbd, {
|
|
224
246
|
shortcut: shortcuts.fitAll
|
|
225
247
|
});
|
|
226
|
-
$[
|
|
227
|
-
$[
|
|
248
|
+
$[46] = shortcuts.fitAll;
|
|
249
|
+
$[47] = t24;
|
|
228
250
|
} else {
|
|
229
|
-
|
|
251
|
+
t24 = $[47];
|
|
230
252
|
}
|
|
231
|
-
let
|
|
232
|
-
if ($[
|
|
233
|
-
|
|
253
|
+
let t25;
|
|
254
|
+
if ($[48] !== onFitAll || $[49] !== t23 || $[50] !== t24) {
|
|
255
|
+
t25 = /*#__PURE__*/_jsxs(MenuItem, {
|
|
234
256
|
onClick: onFitAll,
|
|
235
|
-
children: [
|
|
257
|
+
children: [t22, t23, " ", t24]
|
|
236
258
|
});
|
|
237
|
-
$[
|
|
238
|
-
$[
|
|
239
|
-
$[
|
|
240
|
-
$[
|
|
259
|
+
$[48] = onFitAll;
|
|
260
|
+
$[49] = t23;
|
|
261
|
+
$[50] = t24;
|
|
262
|
+
$[51] = t25;
|
|
241
263
|
} else {
|
|
242
|
-
|
|
264
|
+
t25 = $[51];
|
|
243
265
|
}
|
|
244
|
-
let
|
|
245
|
-
if ($[
|
|
246
|
-
|
|
266
|
+
let t26;
|
|
267
|
+
if ($[52] !== selection) {
|
|
268
|
+
t26 = selection && /*#__PURE__*/_jsxs(MenuItem, {
|
|
247
269
|
disabled: !selection.enabled,
|
|
248
270
|
onClick: selection.onZoom,
|
|
249
271
|
children: [/*#__PURE__*/_jsx(MenuIcon, {
|
|
@@ -252,109 +274,114 @@ export function ZoomControls(t0) {
|
|
|
252
274
|
shortcut: selection.shortcut
|
|
253
275
|
})]
|
|
254
276
|
});
|
|
255
|
-
$[
|
|
256
|
-
$[
|
|
277
|
+
$[52] = selection;
|
|
278
|
+
$[53] = t26;
|
|
257
279
|
} else {
|
|
258
|
-
|
|
280
|
+
t26 = $[53];
|
|
259
281
|
}
|
|
260
|
-
let
|
|
261
|
-
if ($[
|
|
262
|
-
|
|
263
|
-
side:
|
|
282
|
+
let t27;
|
|
283
|
+
if ($[54] !== side || $[55] !== t20 || $[56] !== t25 || $[57] !== t26) {
|
|
284
|
+
t27 = /*#__PURE__*/_jsxs(MenuPopup, {
|
|
285
|
+
side: side,
|
|
264
286
|
sideOffset: 10,
|
|
265
287
|
align: "center",
|
|
266
288
|
className: "min-w-44",
|
|
267
|
-
children: [
|
|
289
|
+
children: [t20, t21, t25, t26]
|
|
268
290
|
});
|
|
269
|
-
$[
|
|
270
|
-
$[
|
|
271
|
-
$[
|
|
272
|
-
$[
|
|
291
|
+
$[54] = side;
|
|
292
|
+
$[55] = t20;
|
|
293
|
+
$[56] = t25;
|
|
294
|
+
$[57] = t26;
|
|
295
|
+
$[58] = t27;
|
|
273
296
|
} else {
|
|
274
|
-
|
|
297
|
+
t27 = $[58];
|
|
275
298
|
}
|
|
276
|
-
let
|
|
277
|
-
if ($[
|
|
278
|
-
|
|
279
|
-
children: [
|
|
299
|
+
let t28;
|
|
300
|
+
if ($[59] !== t17 || $[60] !== t27) {
|
|
301
|
+
t28 = /*#__PURE__*/_jsxs(MenuRoot, {
|
|
302
|
+
children: [t17, t27]
|
|
280
303
|
});
|
|
281
|
-
$[
|
|
282
|
-
$[
|
|
283
|
-
$[
|
|
304
|
+
$[59] = t17;
|
|
305
|
+
$[60] = t27;
|
|
306
|
+
$[61] = t28;
|
|
284
307
|
} else {
|
|
285
|
-
|
|
308
|
+
t28 = $[61];
|
|
286
309
|
}
|
|
287
|
-
let
|
|
288
|
-
if ($[
|
|
289
|
-
|
|
290
|
-
$[
|
|
291
|
-
$[
|
|
292
|
-
$[
|
|
310
|
+
let t29;
|
|
311
|
+
if ($[62] !== labels.in || $[63] !== t) {
|
|
312
|
+
t29 = labels.in ?? t("zoom.in");
|
|
313
|
+
$[62] = labels.in;
|
|
314
|
+
$[63] = t;
|
|
315
|
+
$[64] = t29;
|
|
293
316
|
} else {
|
|
294
|
-
|
|
317
|
+
t29 = $[64];
|
|
295
318
|
}
|
|
296
|
-
let
|
|
297
|
-
if ($[
|
|
298
|
-
|
|
299
|
-
$[
|
|
300
|
-
$[
|
|
301
|
-
$[
|
|
319
|
+
let t30;
|
|
320
|
+
if ($[65] !== onZoomChange || $[66] !== zoom) {
|
|
321
|
+
t30 = () => onZoomChange(steppedZoom(zoom, 10));
|
|
322
|
+
$[65] = onZoomChange;
|
|
323
|
+
$[66] = zoom;
|
|
324
|
+
$[67] = t30;
|
|
302
325
|
} else {
|
|
303
|
-
|
|
326
|
+
t30 = $[67];
|
|
304
327
|
}
|
|
305
|
-
let
|
|
306
|
-
if ($[
|
|
307
|
-
|
|
328
|
+
let t31;
|
|
329
|
+
if ($[68] !== size || $[69] !== t29 || $[70] !== t30) {
|
|
330
|
+
t31 = /*#__PURE__*/_jsx(IconButton, {
|
|
308
331
|
icon: Plus,
|
|
309
|
-
|
|
310
|
-
|
|
332
|
+
size: size,
|
|
333
|
+
label: t29,
|
|
334
|
+
onClick: t30
|
|
311
335
|
});
|
|
312
|
-
$[
|
|
313
|
-
$[
|
|
314
|
-
$[
|
|
336
|
+
$[68] = size;
|
|
337
|
+
$[69] = t29;
|
|
338
|
+
$[70] = t30;
|
|
339
|
+
$[71] = t31;
|
|
315
340
|
} else {
|
|
316
|
-
|
|
341
|
+
t31 = $[71];
|
|
317
342
|
}
|
|
318
|
-
let
|
|
319
|
-
if ($[
|
|
320
|
-
|
|
321
|
-
$[
|
|
322
|
-
$[
|
|
323
|
-
$[
|
|
343
|
+
let t32;
|
|
344
|
+
if ($[72] !== labels.fitEverything || $[73] !== t) {
|
|
345
|
+
t32 = labels.fitEverything ?? t("zoom.fitEverything");
|
|
346
|
+
$[72] = labels.fitEverything;
|
|
347
|
+
$[73] = t;
|
|
348
|
+
$[74] = t32;
|
|
324
349
|
} else {
|
|
325
|
-
|
|
350
|
+
t32 = $[74];
|
|
326
351
|
}
|
|
327
|
-
let
|
|
328
|
-
if ($[
|
|
329
|
-
|
|
352
|
+
let t33;
|
|
353
|
+
if ($[75] !== onFitAll || $[76] !== shortcuts.fitAll || $[77] !== size || $[78] !== t32) {
|
|
354
|
+
t33 = /*#__PURE__*/_jsx(IconButton, {
|
|
330
355
|
icon: Maximize,
|
|
331
|
-
|
|
356
|
+
size: size,
|
|
357
|
+
label: t32,
|
|
332
358
|
kbd: shortcuts.fitAll,
|
|
333
359
|
onClick: onFitAll
|
|
334
360
|
});
|
|
335
|
-
$[
|
|
336
|
-
$[
|
|
337
|
-
$[
|
|
338
|
-
$[
|
|
361
|
+
$[75] = onFitAll;
|
|
362
|
+
$[76] = shortcuts.fitAll;
|
|
363
|
+
$[77] = size;
|
|
364
|
+
$[78] = t32;
|
|
365
|
+
$[79] = t33;
|
|
339
366
|
} else {
|
|
340
|
-
|
|
367
|
+
t33 = $[79];
|
|
341
368
|
}
|
|
342
|
-
let
|
|
343
|
-
if ($[
|
|
344
|
-
|
|
369
|
+
let t34;
|
|
370
|
+
if ($[80] !== className || $[81] !== ref || $[82] !== t11 || $[83] !== t28 || $[84] !== t31 || $[85] !== t33) {
|
|
371
|
+
t34 = /*#__PURE__*/_jsxs(ButtonGroup, {
|
|
345
372
|
ref: ref,
|
|
346
373
|
className: className,
|
|
347
|
-
children: [
|
|
374
|
+
children: [t11, t28, t31, t33]
|
|
348
375
|
});
|
|
349
|
-
$[
|
|
350
|
-
$[
|
|
351
|
-
$[
|
|
352
|
-
$[
|
|
353
|
-
$[
|
|
354
|
-
$[
|
|
355
|
-
$[
|
|
376
|
+
$[80] = className;
|
|
377
|
+
$[81] = ref;
|
|
378
|
+
$[82] = t11;
|
|
379
|
+
$[83] = t28;
|
|
380
|
+
$[84] = t31;
|
|
381
|
+
$[85] = t33;
|
|
382
|
+
$[86] = t34;
|
|
356
383
|
} else {
|
|
357
|
-
|
|
384
|
+
t34 = $[86];
|
|
358
385
|
}
|
|
359
|
-
return
|
|
386
|
+
return t34;
|
|
360
387
|
}
|
package/package.json
CHANGED
package/src/ProjectSwitcher.tsx
CHANGED
|
@@ -45,6 +45,7 @@ export interface ProjectSwitcherProps<Item extends ProjectSwitcherItem = Project
|
|
|
45
45
|
label?: string;
|
|
46
46
|
|
|
47
47
|
disabled?: boolean;
|
|
48
|
+
tabIndex?: number;
|
|
48
49
|
open?: boolean;
|
|
49
50
|
defaultOpen?: boolean;
|
|
50
51
|
onOpenChange?: ComponentProps<typeof Menu.Root>['onOpenChange'];
|
|
@@ -62,6 +63,7 @@ export function ProjectSwitcher<Item extends ProjectSwitcherItem>({
|
|
|
62
63
|
children,
|
|
63
64
|
label,
|
|
64
65
|
disabled,
|
|
66
|
+
tabIndex,
|
|
65
67
|
open,
|
|
66
68
|
defaultOpen,
|
|
67
69
|
onOpenChange,
|
|
@@ -76,6 +78,7 @@ export function ProjectSwitcher<Item extends ProjectSwitcherItem>({
|
|
|
76
78
|
<Menu.Trigger
|
|
77
79
|
ref={ref}
|
|
78
80
|
disabled={disabled}
|
|
81
|
+
tabIndex={tabIndex}
|
|
79
82
|
aria-label={current === null ? empty : label === undefined ? current.name : `${label}: ${current.name}`}
|
|
80
83
|
className={clsx('project-switcher-trigger', className)}
|
|
81
84
|
>
|
package/src/ZoomControls.tsx
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { Ref } from 'react';
|
|
2
|
+
import clsx from 'clsx';
|
|
2
3
|
import { Maximize, Minus, Plus, Scan, type LucideIcon } from 'lucide-react';
|
|
3
4
|
import { useTranslation } from 'react-i18next';
|
|
4
5
|
import { ButtonGroup } from './ButtonGroup.tsx';
|
|
5
6
|
import { Icon } from './Icon.tsx';
|
|
6
|
-
import { IconButton } from './IconButton.tsx';
|
|
7
|
+
import { IconButton, type IconButtonSize } from './IconButton.tsx';
|
|
7
8
|
import { Kbd } from './Kbd.tsx';
|
|
8
9
|
import { MenuItem, MenuPopup, MenuRadioGroup, MenuRadioItem, MenuRoot, MenuSeparator, MenuTrigger } from './menu/parts.tsx';
|
|
9
10
|
import type { Shortcut } from './shortcut.ts';
|
|
@@ -42,10 +43,19 @@ export interface ZoomControlsProps {
|
|
|
42
43
|
/* Left out by a surface with nothing to select. */
|
|
43
44
|
selection?: ZoomSelection;
|
|
44
45
|
|
|
46
|
+
/* `md` beside the controls of a dock, `sm` beside the small buttons of a toolbar. */
|
|
47
|
+
size?: Extract<IconButtonSize, 'md' | 'sm'>;
|
|
48
|
+
|
|
49
|
+
/* Where the presets open: above a dock at the bottom, below a toolbar at the top. */
|
|
50
|
+
side?: 'top' | 'bottom';
|
|
51
|
+
|
|
45
52
|
className?: string;
|
|
46
53
|
ref?: Ref<HTMLDivElement>;
|
|
47
54
|
}
|
|
48
55
|
|
|
56
|
+
/* The percentage between the buttons, at the height and radius of the buttons beside it. */
|
|
57
|
+
const TRIGGER_SIZE = { md: 'h-8 min-w-14 rounded-lg', sm: 'h-7 min-w-12 rounded-md' } as const;
|
|
58
|
+
|
|
49
59
|
function MenuIcon({ icon }: { icon: LucideIcon }) {
|
|
50
60
|
return (
|
|
51
61
|
<span className="grid h-4 w-4 place-items-center">
|
|
@@ -62,6 +72,8 @@ export function ZoomControls({
|
|
|
62
72
|
labels = {},
|
|
63
73
|
shortcuts = {},
|
|
64
74
|
selection,
|
|
75
|
+
size = 'md',
|
|
76
|
+
side = 'top',
|
|
65
77
|
className,
|
|
66
78
|
ref
|
|
67
79
|
}: ZoomControlsProps) {
|
|
@@ -70,14 +82,19 @@ export function ZoomControls({
|
|
|
70
82
|
|
|
71
83
|
return (
|
|
72
84
|
<ButtonGroup ref={ref} className={className}>
|
|
73
|
-
<IconButton icon={Minus} label={labels.out ?? t('zoom.out')} onClick={() => onZoomChange(steppedZoom(zoom, -10))} />
|
|
85
|
+
<IconButton icon={Minus} size={size} label={labels.out ?? t('zoom.out')} onClick={() => onZoomChange(steppedZoom(zoom, -10))} />
|
|
74
86
|
<MenuRoot>
|
|
75
87
|
<Tooltip label={labels.presets ?? t('zoom.presets')}>
|
|
76
|
-
<MenuTrigger
|
|
88
|
+
<MenuTrigger
|
|
89
|
+
className={clsx(
|
|
90
|
+
TRIGGER_SIZE[size],
|
|
91
|
+
'px-1 text-xs text-text-muted tabular-nums hover:bg-surface-hover hover:text-text data-[popup-open]:bg-surface-active data-[popup-open]:text-text'
|
|
92
|
+
)}
|
|
93
|
+
>
|
|
77
94
|
{Math.round(zoom * 100)}%
|
|
78
95
|
</MenuTrigger>
|
|
79
96
|
</Tooltip>
|
|
80
|
-
<MenuPopup side=
|
|
97
|
+
<MenuPopup side={side} sideOffset={10} align="center" className="min-w-44">
|
|
81
98
|
<MenuRadioGroup value={preset} onValueChange={(value: number) => onZoomChange(value / 100)}>
|
|
82
99
|
{presets.map((percent) => (
|
|
83
100
|
<MenuRadioItem key={percent} value={percent}>
|
|
@@ -99,8 +116,8 @@ export function ZoomControls({
|
|
|
99
116
|
)}
|
|
100
117
|
</MenuPopup>
|
|
101
118
|
</MenuRoot>
|
|
102
|
-
<IconButton icon={Plus} label={labels.in ?? t('zoom.in')} onClick={() => onZoomChange(steppedZoom(zoom, 10))} />
|
|
103
|
-
<IconButton icon={Maximize} label={labels.fitEverything ?? t('zoom.fitEverything')} kbd={shortcuts.fitAll} onClick={onFitAll} />
|
|
119
|
+
<IconButton icon={Plus} size={size} label={labels.in ?? t('zoom.in')} onClick={() => onZoomChange(steppedZoom(zoom, 10))} />
|
|
120
|
+
<IconButton icon={Maximize} size={size} label={labels.fitEverything ?? t('zoom.fitEverything')} kbd={shortcuts.fitAll} onClick={onFitAll} />
|
|
104
121
|
</ButtonGroup>
|
|
105
122
|
);
|
|
106
123
|
}
|