@xenide-io/the-old-ui-theme 0.4.0 → 0.4.3
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/{chunk-KORWJCIO.mjs → chunk-54ZR4VL5.mjs} +691 -1686
- package/dist/chunk-G53YLHVE.mjs +1023 -0
- package/dist/index.mjs +78 -76
- package/dist/suite.js +494 -258
- package/dist/suite.mjs +93 -117
- package/dist/ui.mjs +13 -11
- package/package.json +1 -1
- package/src/suite/components/suite-layout.tsx +3 -5
- package/src/suite/components/suite-sidebar.tsx +11 -4
- package/src/suite/components/suite-user-menu.tsx +56 -75
- package/src/suite/lib/apps.ts +1 -1
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ButtonChrome,
|
|
3
|
+
DropdownMenu,
|
|
4
|
+
DropdownRadioGroup,
|
|
5
|
+
DropdownRadioItem,
|
|
6
|
+
IconArrowDown,
|
|
7
|
+
IconCancel,
|
|
8
|
+
IconCheck,
|
|
9
|
+
IconCheckCircle,
|
|
10
|
+
IconChevronDown,
|
|
11
|
+
IconChevronLeft,
|
|
12
|
+
IconChevronRight,
|
|
13
|
+
IconClose,
|
|
14
|
+
IconCodePreview,
|
|
15
|
+
IconErrorOutline,
|
|
16
|
+
IconExclamation,
|
|
17
|
+
IconInfo,
|
|
18
|
+
IconSearch,
|
|
19
|
+
IconStar,
|
|
20
|
+
IconTuning,
|
|
21
|
+
cn
|
|
22
|
+
} from "./chunk-G53YLHVE.mjs";
|
|
1
23
|
import {
|
|
2
24
|
__objRest,
|
|
3
25
|
__spreadProps,
|
|
@@ -6,25 +28,7 @@ import {
|
|
|
6
28
|
|
|
7
29
|
// src/components/ui/Button.tsx
|
|
8
30
|
import { forwardRef } from "react";
|
|
9
|
-
|
|
10
|
-
// src/components/ui/ButtonChrome.tsx
|
|
11
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
12
|
-
function ButtonChrome({ label, icon, sideIcon, split }) {
|
|
13
|
-
return /* @__PURE__ */ jsxs("span", { className: "ph-btn-chrome", children: [
|
|
14
|
-
icon != null ? /* @__PURE__ */ jsx("span", { className: "ph-btn-icon", children: icon }) : null,
|
|
15
|
-
label != null ? /* @__PURE__ */ jsx("span", { className: "ph-btn-label", children: label }) : null,
|
|
16
|
-
split ? /* @__PURE__ */ jsx("span", { className: "ph-btn-split-divider", "aria-hidden": true }) : null,
|
|
17
|
-
sideIcon != null ? /* @__PURE__ */ jsx("span", { className: "ph-btn-side-icon", children: sideIcon }) : null
|
|
18
|
-
] });
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
// src/lib/cn.ts
|
|
22
|
-
function cn(...parts) {
|
|
23
|
-
return parts.filter(Boolean).join(" ");
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
// src/components/ui/Button.tsx
|
|
27
|
-
import { Fragment, jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
31
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
28
32
|
var variantClass = {
|
|
29
33
|
primary: "ph-btn-primary",
|
|
30
34
|
secondary: "ph-btn-secondary",
|
|
@@ -83,14 +87,14 @@ var Button = forwardRef(function Button2(_a, ref) {
|
|
|
83
87
|
]);
|
|
84
88
|
const usesLemonChrome = !["tertiary", "ghost", "link"].includes(variant);
|
|
85
89
|
const label = loadingLabel != null ? loadingLabel : children;
|
|
86
|
-
const leadingIcon = loading ? /* @__PURE__ */
|
|
87
|
-
const content = usesLemonChrome ? /* @__PURE__ */
|
|
88
|
-
leadingIcon != null ? /* @__PURE__ */
|
|
89
|
-
label != null ? /* @__PURE__ */
|
|
90
|
-
split ? /* @__PURE__ */
|
|
91
|
-
sideIcon != null ? /* @__PURE__ */
|
|
90
|
+
const leadingIcon = loading ? /* @__PURE__ */ jsx("span", { className: "ph-btn-spinner", "aria-hidden": true }) : icon;
|
|
91
|
+
const content = usesLemonChrome ? /* @__PURE__ */ jsx(ButtonChrome, { label, icon: leadingIcon, sideIcon, split }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
92
|
+
leadingIcon != null ? /* @__PURE__ */ jsx("span", { className: "ph-btn-icon", children: leadingIcon }) : null,
|
|
93
|
+
label != null ? /* @__PURE__ */ jsx("span", { className: "ph-btn-label", children: label }) : null,
|
|
94
|
+
split ? /* @__PURE__ */ jsx("span", { className: "ph-btn-split-divider", "aria-hidden": true }) : null,
|
|
95
|
+
sideIcon != null ? /* @__PURE__ */ jsx("span", { className: "ph-btn-side-icon", children: sideIcon }) : null
|
|
92
96
|
] });
|
|
93
|
-
return /* @__PURE__ */
|
|
97
|
+
return /* @__PURE__ */ jsx(
|
|
94
98
|
"button",
|
|
95
99
|
__spreadProps(__spreadValues({
|
|
96
100
|
ref,
|
|
@@ -115,547 +119,8 @@ var Button = forwardRef(function Button2(_a, ref) {
|
|
|
115
119
|
Button.displayName = "Button";
|
|
116
120
|
|
|
117
121
|
// src/components/ui/Alert.tsx
|
|
118
|
-
import { forwardRef as forwardRef5 } from "react";
|
|
119
|
-
|
|
120
|
-
// src/components/icons/IconBase.tsx
|
|
121
122
|
import { forwardRef as forwardRef2 } from "react";
|
|
122
|
-
import { jsx as
|
|
123
|
-
var IconBase = forwardRef2(function IconBase2(_a, ref) {
|
|
124
|
-
var _b = _a, {
|
|
125
|
-
className,
|
|
126
|
-
size,
|
|
127
|
-
children,
|
|
128
|
-
viewBox = "0 0 24 24",
|
|
129
|
-
fill: fill2 = "none",
|
|
130
|
-
xmlns = "http://www.w3.org/2000/svg",
|
|
131
|
-
focusable = "false",
|
|
132
|
-
style,
|
|
133
|
-
role,
|
|
134
|
-
"aria-hidden": ariaHidden,
|
|
135
|
-
"aria-label": ariaLabel,
|
|
136
|
-
"aria-labelledby": ariaLabelledBy
|
|
137
|
-
} = _b, props = __objRest(_b, [
|
|
138
|
-
"className",
|
|
139
|
-
"size",
|
|
140
|
-
"children",
|
|
141
|
-
"viewBox",
|
|
142
|
-
"fill",
|
|
143
|
-
"xmlns",
|
|
144
|
-
"focusable",
|
|
145
|
-
"style",
|
|
146
|
-
"role",
|
|
147
|
-
"aria-hidden",
|
|
148
|
-
"aria-label",
|
|
149
|
-
"aria-labelledby"
|
|
150
|
-
]);
|
|
151
|
-
const hasAccessibleName = Boolean(ariaLabel || ariaLabelledBy);
|
|
152
|
-
return /* @__PURE__ */ jsx3(
|
|
153
|
-
"svg",
|
|
154
|
-
__spreadProps(__spreadValues({
|
|
155
|
-
ref,
|
|
156
|
-
className: cn("ph-icon", className),
|
|
157
|
-
viewBox,
|
|
158
|
-
fill: fill2,
|
|
159
|
-
xmlns,
|
|
160
|
-
focusable,
|
|
161
|
-
role: role != null ? role : hasAccessibleName ? "img" : void 0,
|
|
162
|
-
"aria-hidden": ariaHidden != null ? ariaHidden : hasAccessibleName ? void 0 : true,
|
|
163
|
-
"aria-label": ariaLabel,
|
|
164
|
-
"aria-labelledby": ariaLabelledBy,
|
|
165
|
-
style: __spreadValues({ width: size, height: size }, style)
|
|
166
|
-
}, props), {
|
|
167
|
-
children
|
|
168
|
-
})
|
|
169
|
-
);
|
|
170
|
-
});
|
|
171
|
-
IconBase.displayName = "IconBase";
|
|
172
|
-
|
|
173
|
-
// src/components/icons/createIconBase.tsx
|
|
174
|
-
import { forwardRef as forwardRef3 } from "react";
|
|
175
|
-
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
176
|
-
function createIconBase({ name = "IconGlyph", viewBox = "0 0 24 24", paths }) {
|
|
177
|
-
const IconGlyph = forwardRef3(function IconGlyph2(props, ref) {
|
|
178
|
-
return /* @__PURE__ */ jsx4(IconBase, __spreadProps(__spreadValues({ ref, viewBox }, props), { children: paths }));
|
|
179
|
-
});
|
|
180
|
-
IconGlyph.displayName = name;
|
|
181
|
-
return IconGlyph;
|
|
182
|
-
}
|
|
183
|
-
function createIconBasePath(d, viewBox = "0 0 24 24", name) {
|
|
184
|
-
return createIconBase({
|
|
185
|
-
name,
|
|
186
|
-
viewBox,
|
|
187
|
-
paths: /* @__PURE__ */ jsx4("path", { d, fill: "currentColor" })
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
// src/components/icons/icons.tsx
|
|
192
|
-
import { forwardRef as forwardRef4 } from "react";
|
|
193
|
-
import { Fragment as Fragment2, jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
194
|
-
var fill = (d) => /* @__PURE__ */ jsx5("path", { d, fill: "currentColor" });
|
|
195
|
-
var IconAreaChart = createIconBase({
|
|
196
|
-
paths: fill("M3 20V7l4 3 5-7 5 4h4v13Zm5-3 4-5.5 7 5.45V9h-2.7l-3.9-3.125-4.95 6.95L5 11v3.6Z")
|
|
197
|
-
});
|
|
198
|
-
var IconCumulativeChart = createIconBase({
|
|
199
|
-
paths: fill(
|
|
200
|
-
"M20.8805 7.97408C15.0614 18.7809 6.51281 19.5979 2.71265 18.4578L3.28734 16.5422C6.15384 17.4021 13.7386 17.0191 19.1195 7.02588L20.8805 7.97408Z"
|
|
201
|
-
)
|
|
202
|
-
});
|
|
203
|
-
var IconTableChart = createIconBase({
|
|
204
|
-
paths: fill(
|
|
205
|
-
"M20 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h15c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 2v3H5V5h15zm-5 14h-5v-9h5v9zM5 10h3v9H5v-9zm12 9v-9h3v9h-3z"
|
|
206
|
-
)
|
|
207
|
-
});
|
|
208
|
-
var IconHandClick = createIconBase({
|
|
209
|
-
viewBox: "0 0 18 18",
|
|
210
|
-
paths: fill(
|
|
211
|
-
"M14.9942 7.90164C14.9942 7.82992 14.9583 7.46993 14.6342 7.10993C14.2925 6.71407 13.7524 6.49822 13.05 6.44407C12.9783 6.33579 12.8883 6.22822 12.7442 6.11993C12.3483 5.81407 11.7359 5.65164 10.9442 5.63407C10.8724 5.54407 10.7459 5.43578 10.6024 5.32822C10.2425 5.0765 9.79245 4.93236 9.23416 4.87822V3.41993C9.23416 3.27579 9.25244 2.66407 8.83831 2.23164C8.65831 2.03335 8.31659 1.79993 7.74002 1.79993C7.14587 1.79993 6.80416 2.03407 6.60587 2.23164C6.22759 2.64578 6.22759 3.18578 6.22759 3.31164V8.46C5.88587 8.1 5.50759 7.70414 5.29173 7.56C4.84173 7.21829 3.99587 7.39828 3.51002 7.75829C3.04173 8.1 2.88002 8.62243 3.06002 9.12658C3.38416 10.0266 4.19416 10.9266 4.39173 11.1424C4.57173 11.4841 5.38173 12.9782 6.10173 13.5182C6.48002 13.8065 6.76759 14.9941 6.84002 15.7499L6.87588 16.1457H13.6801V14.364C13.7701 14.1123 13.9859 13.5723 14.2201 13.3199C14.7783 12.7616 14.9583 11.3582 14.9583 10.9257V7.91986L14.9942 7.90164ZM14.1117 10.89C14.1117 11.4117 13.8959 12.4017 13.6259 12.6717C13.1576 13.14 12.87 14.04 12.8517 14.13L12.8335 14.1841V15.2283H7.68583C7.64997 15.03 7.61411 14.7783 7.54169 14.5083C7.32583 13.6441 7.03754 13.0866 6.65998 12.7983C6.13826 12.4024 5.39998 11.1241 5.16583 10.6566L5.09411 10.5484C5.09411 10.5301 4.2124 9.63008 3.90582 8.80251C3.86996 8.69423 3.86996 8.60422 3.99582 8.47836C4.22997 8.26251 4.67997 8.20836 4.78754 8.24422C5.05754 8.46008 5.88582 9.34251 6.35339 9.86422L7.12754 10.7284L7.12824 3.29418V3.25762C7.12824 3.1859 7.14652 2.95176 7.27238 2.82591C7.36238 2.71763 7.52409 2.66419 7.75824 2.66419C7.95652 2.66419 8.09995 2.71833 8.20824 2.80833C8.35238 2.97005 8.36996 3.25833 8.36996 3.36662V8.02826H9.25167V5.7599C10.0617 5.8499 10.2958 6.19161 10.3317 6.24575L10.3675 6.33575V8.02747H11.2492V6.53332C12.0051 6.60504 12.2934 6.83918 12.3651 6.94747V8.65747H13.2468V7.34332C14.021 7.4516 14.1468 7.86504 14.1651 7.95504L14.1658 10.8899L14.1117 10.89Z"
|
|
212
|
-
)
|
|
213
|
-
});
|
|
214
|
-
var IconSurveys = createIconBase({
|
|
215
|
-
paths: fill(
|
|
216
|
-
"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H5.17l-.59.59-.58.58V4h16v12zm-9.5-2H18v-2h-5.5zm3.86-5.87c.2-.2.2-.51 0-.71l-1.77-1.77c-.2-.2-.51-.2-.71 0L6 11.53V14h2.47l5.89-5.87z"
|
|
217
|
-
)
|
|
218
|
-
});
|
|
219
|
-
var IconCohort = createIconBase({
|
|
220
|
-
paths: fill(
|
|
221
|
-
"m4 13c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm1.13 1.1c-.37-.06-.74-.1-1.13-.1-.99 0-1.93.21-2.78.58-.74.32-1.22 1.04-1.22 1.85v1.57h4.5v-1.61c0-.83.23-1.61.63-2.29zm14.87-1.1c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm4 3.43c0-.81-.48-1.53-1.22-1.85-.85-.37-1.79-.58-2.78-.58-.39 0-.76.04-1.13.1.4.68.63 1.46.63 2.29v1.61h4.5zm-7.76-2.78c-1.17-.52-2.61-.9-4.24-.9s-3.07.39-4.24.9c-1.08.48-1.76 1.56-1.76 2.74v1.61h12v-1.61c0-1.18-.68-2.26-1.76-2.74zm-8.17 2.35c.09-.23.13-.39.91-.69.97-.38 1.99-.56 3.02-.56s2.05.18 3.02.56c.77.3.81.46.91.69zm3.93-8c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm0-2c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"
|
|
222
|
-
)
|
|
223
|
-
});
|
|
224
|
-
var IconRecording = createIconBase({
|
|
225
|
-
paths: fill(
|
|
226
|
-
"m10 8v8l5-4zm9-5h-14c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-14c0-1.1-.9-2-2-2zm0 16h-14v-14h14z"
|
|
227
|
-
)
|
|
228
|
-
});
|
|
229
|
-
var IconFlare = createIconBase({
|
|
230
|
-
paths: fill(
|
|
231
|
-
"m7 11h-6v2h6zm2.17-3.24-2.12-2.12-1.41 1.41 2.12 2.12zm3.83-6.76h-2v6h2zm5.36 6.05-1.41-1.41-2.12 2.12 1.41 1.41zm-1.36 3.95v2h6v-2zm-5-2c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zm2.83 7.24 2.12 2.12 1.41-1.41-2.12-2.12zm-9.19.71 1.41 1.41 2.12-2.12-1.41-1.41zm5.36 6.05h2v-6h-2z"
|
|
232
|
-
)
|
|
233
|
-
});
|
|
234
|
-
var IconSelectEvents = createIconBase({
|
|
235
|
-
paths: /* @__PURE__ */ jsxs3(Fragment2, { children: [
|
|
236
|
-
fill("M17.5 9L16.56 6.94L14.5 6L16.56 5.06L17.5 3L18.44 5.06L20.5 6L18.44 6.94L17.5 9Z"),
|
|
237
|
-
fill("M6 12.5L6.94 14.56L9 15.5L6.94 16.44L6 18.5L5.06 16.44L3 15.5L5.06 14.56L6 12.5Z"),
|
|
238
|
-
fill("M6 9L5.06 6.94L3 6L5.06 5.06L6 3L6.94 5.06L9 6L6.94 6.94L6 9Z"),
|
|
239
|
-
fill("M16.23 14.26L20 13L10 10L13 20L14.26 16.23L18.53 20.5L20.51 18.52L16.23 14.26Z")
|
|
240
|
-
] })
|
|
241
|
-
});
|
|
242
|
-
var IconClipboardEdit = createIconBase({
|
|
243
|
-
paths: fill(
|
|
244
|
-
"M21.04 12.13C21.18 12.13 21.31 12.19 21.42 12.3L22.7 13.58C22.92 13.79 22.92 14.14 22.7 14.35L21.7 15.35L19.65 13.3L20.65 12.3C20.76 12.19 20.9 12.13 21.04 12.13M19.07 13.88L21.12 15.93L15.06 22H13V19.94L19.07 13.88M11 19L9 21H5C3.9 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H9.18C9.6 1.84 10.7 1 12 1C13.3 1 14.4 1.84 14.82 3H19C20.1 3 21 3.9 21 5V9L19 11V5H17V7H7V5H5V19H11M12 3C11.45 3 11 3.45 11 4C11 4.55 11.45 5 12 5C12.55 5 13 4.55 13 4C13 3.45 12.55 3 12 3Z"
|
|
245
|
-
)
|
|
246
|
-
});
|
|
247
|
-
var IconQueryEditor = createIconBase({
|
|
248
|
-
paths: fill(
|
|
249
|
-
"M4,14V17C4,19 7.05,20.72 11,21V18.11L11.13,18C7.12,17.76 4,16.06 4,14M12,13C7.58,13 4,11.21 4,9V12C4,14.21 7.58,16 12,16C12.39,16 12.77,16 13.16,16L17,12.12C15.4,12.72 13.71,13 12,13M12,3C7.58,3 4,4.79 4,7C4,9.21 7.58,11 12,11C16.42,11 20,9.21 20,7C20,4.79 16.42,3 12,3M21,11.13C20.85,11.13 20.71,11.19 20.61,11.3L19.61,12.3L21.66,14.3L22.66,13.3C22.87,13.1 22.88,12.76 22.66,12.53L21.42,11.3C21.32,11.19 21.18,11.13 21.04,11.13M19.04,12.88L13,18.94V21H15.06L21.12,14.93L19.04,12.88Z"
|
|
250
|
-
)
|
|
251
|
-
});
|
|
252
|
-
var IconTuning = createIconBase({
|
|
253
|
-
paths: fill(
|
|
254
|
-
"M3,17V19H9V17H3M3,5V7H13V5H3M13,21V19H21V17H13V15H11V21H13M7,9V11H3V13H7V15H9V9H7M21,13V11H11V13H21M15,9H17V7H21V5H17V3H15V9Z"
|
|
255
|
-
)
|
|
256
|
-
});
|
|
257
|
-
var IconSync = createIconBase({
|
|
258
|
-
paths: fill(
|
|
259
|
-
"m12.5 4v-3l-4 4 4 4v-3c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46c.78-1.23 1.24-2.69 1.24-4.26 0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8l-1.46-1.46c-.78 1.23-1.24 2.69-1.24 4.26 0 4.42 3.58 8 8 8v3l4-4-4-4z"
|
|
260
|
-
)
|
|
261
|
-
});
|
|
262
|
-
var IconPlayCircle = createIconBase({
|
|
263
|
-
paths: fill(
|
|
264
|
-
"M12 2C6.48 2 2 6.48 2 12C2 17.52 6.48 22 12 22C17.52 22 22 17.52 22 12C22 6.48 17.52 2 12 2ZM12 20C7.59 20 4 16.41 4 12C4 7.59 7.59 4 12 4C16.41 4 20 7.59 20 12C20 16.41 16.41 20 12 20ZM9.5 16.5L16.5 12L9.5 7.5V16.5Z"
|
|
265
|
-
)
|
|
266
|
-
});
|
|
267
|
-
var IconGridView = createIconBase({
|
|
268
|
-
paths: fill("M3 3v8h8V3H3zm6 6H5V5h4v4zm-6 4v8h8v-8H3zm6 6H5v-4h4v4zm4-16v8h8V3h-8zm6 6h-4V5h4v4zm-6 4v8h8v-8h-8zm6 6h-4v-4h4v4z")
|
|
269
|
-
});
|
|
270
|
-
var IconListView = createIconBase({
|
|
271
|
-
paths: fill(
|
|
272
|
-
"M3,5v14h18V5H3z M7,7v2H5V7H7z M5,13v-2h2v2H5z M5,15h2v2H5V15z M19,17H9v-2h10V17z M19,13H9v-2h10V13z M19,9H9V7h10V9z"
|
|
273
|
-
)
|
|
274
|
-
});
|
|
275
|
-
var IconPremium = createIconBase({
|
|
276
|
-
paths: fill(
|
|
277
|
-
"m9.68 13.69 2.32-1.76 2.31 1.76-.88-2.85 2.32-1.84h-2.84l-.91-2.81-.91 2.81h-2.84l2.31 1.84zm10.32-3.69c0-4.42-3.58-8-8-8s-8 3.58-8 8c0 2.03.76 3.87 2 5.28v7.72l6-2 6 2v-7.72c1.24-1.41 2-3.25 2-5.28zm-8-6c3.31 0 6 2.69 6 6s-2.69 6-6 6-6-2.69-6-6 2.69-6 6-6zm0 15-4 1.02v-3.1c1.18.68 2.54 1.08 4 1.08s2.82-.4 4-1.08v3.1z"
|
|
278
|
-
)
|
|
279
|
-
});
|
|
280
|
-
var IconGift = createIconBase({
|
|
281
|
-
paths: fill(
|
|
282
|
-
"M14.4495 4.55495C15.264 4.31223 15.8631 4.48426 16.1 4.80007C16.4013 5.20182 16.4765 5.57305 16.4336 5.91424C16.3888 6.27088 16.2084 6.63998 15.9211 7.00139C15.3397 7.73275 14.4193 8.30877 13.8244 8.53186C13.598 8.61674 13.4648 8.85138 13.508 9.08924C13.5511 9.32709 13.7582 9.50002 13.9999 9.50002L19.4999 9.50002V12.5H17.9999C17.7237 12.5 17.4999 12.7239 17.4999 13V20.5H6.49988V14.5C6.49988 14.2239 6.27602 14 5.99988 14C5.72374 14 5.49988 14.2239 5.49988 14.5V21C5.49988 21.2762 5.72374 21.5 5.99988 21.5H17.9999C18.276 21.5 18.4999 21.2762 18.4999 21V13.5H19.9999C20.276 13.5 20.4999 13.2762 20.4999 13V9.00002C20.4999 8.86741 20.4472 8.74023 20.3534 8.64646C20.2597 8.5527 20.1325 8.50002 19.9999 8.50002L15.8202 8.50002C16.1407 8.24235 16.4465 7.94742 16.7039 7.62365C17.0625 7.17257 17.3508 6.63541 17.4258 6.03894C17.5027 5.42702 17.3487 4.79826 16.8999 4.20003C16.2882 3.3845 15.1373 3.30652 14.1639 3.5966C13.3806 3.83005 12.5842 4.3279 12.0008 5.07014C11.4285 4.33982 10.6586 3.86464 9.88727 3.64427C8.91382 3.36616 7.82238 3.47045 7.14633 4.14645C6.65753 4.63523 6.41235 5.18234 6.41347 5.75925C6.41457 6.32144 6.64952 6.84016 6.97799 7.28883C7.30058 7.72946 7.7389 8.13769 8.22434 8.50002L3.99988 8.50002C3.86727 8.50002 3.74009 8.5527 3.64632 8.64646C3.55256 8.74023 3.49988 8.86741 3.49988 9.00002V13C3.49988 13.2762 3.72374 13.5 3.99988 13.5H15.4999C15.776 13.5 15.9999 13.2762 15.9999 13C15.9999 12.7239 15.776 12.5 15.4999 12.5H4.49988V9.50002L9.99995 9.50002C10.2318 9.50002 10.4333 9.34058 10.4866 9.1149C10.5398 8.88921 10.431 8.65651 10.2236 8.55281C9.25206 8.06706 8.29723 7.39797 7.78487 6.69811C7.53216 6.35292 7.41402 6.03722 7.41347 5.7573C7.41295 5.49209 7.51758 5.1894 7.85342 4.85358C8.17738 4.52964 8.83597 4.38393 9.61256 4.6058C10.3657 4.82096 11.1212 5.36045 11.5528 6.22359C11.6375 6.39298 11.8106 6.49997 12 6.49997C12.1894 6.49997 12.3625 6.39297 12.4472 6.22358C12.8783 5.36141 13.672 4.78667 14.4495 4.55495Z"
|
|
283
|
-
)
|
|
284
|
-
});
|
|
285
|
-
var IconRobot = createIconBase({
|
|
286
|
-
paths: fill(
|
|
287
|
-
"M17.5 15.5C17.5 16.61 16.61 17.5 15.5 17.5S13.5 16.61 13.5 15.5 14.4 13.5 15.5 13.5 17.5 14.4 17.5 15.5M8.5 13.5C7.4 13.5 6.5 14.4 6.5 15.5S7.4 17.5 8.5 17.5 10.5 16.61 10.5 15.5 9.61 13.5 8.5 13.5M23 15V18C23 18.55 22.55 19 22 19H21V20C21 21.11 20.11 22 19 22H5C3.9 22 3 21.11 3 20V19H2C1.45 19 1 18.55 1 18V15C1 14.45 1.45 14 2 14H3C3 10.13 6.13 7 10 7H11V5.73C10.4 5.39 10 4.74 10 4C10 2.9 10.9 2 12 2S14 2.9 14 4C14 4.74 13.6 5.39 13 5.73V7H14C17.87 7 21 10.13 21 14H22C22.55 14 23 14.45 23 15M21 16H19V14C19 11.24 16.76 9 14 9H10C7.24 9 5 11.24 5 14V16H3V17H5V20H19V17H21V16Z"
|
|
288
|
-
)
|
|
289
|
-
});
|
|
290
|
-
var IconExclamation = createIconBase({
|
|
291
|
-
paths: /* @__PURE__ */ jsxs3("g", { fill: "currentColor", children: [
|
|
292
|
-
/* @__PURE__ */ jsx5("path", { d: "m12 21c1.1046 0 2-.8954 2-2s-.8954-2-2-2-2 .8954-2 2 .8954 2 2 2z" }),
|
|
293
|
-
/* @__PURE__ */ jsx5("path", { d: "m10 3h4v12h-4z" })
|
|
294
|
-
] })
|
|
295
|
-
});
|
|
296
|
-
var IconErrorOutline = createIconBase({
|
|
297
|
-
paths: fill(
|
|
298
|
-
"m11 15h2v2h-2zm0-8h2v6h-2zm.99-5c-5.52 0-9.99 4.48-9.99 10s4.47 10 9.99 10c5.53 0 10.01-4.48 10.01-10s-4.48-10-10.01-10zm.01 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"
|
|
299
|
-
)
|
|
300
|
-
});
|
|
301
|
-
var IconInfo = createIconBase({
|
|
302
|
-
name: "IconInfo",
|
|
303
|
-
paths: fill(
|
|
304
|
-
"M11 10h2v7h-2v-7zm0-3h2v2h-2V7zm1-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"
|
|
305
|
-
)
|
|
306
|
-
});
|
|
307
|
-
var IconCancel = createIconBase({
|
|
308
|
-
paths: fill(
|
|
309
|
-
"m12 2c-5.53 0-10 4.47-10 10s4.47 10 10 10 10-4.47 10-10-4.47-10-10-10zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm3.59-13-3.59 3.59-3.59-3.59-1.41 1.41 3.59 3.59-3.59 3.59 1.41 1.41 3.59-3.59 3.59 3.59 1.41-1.41-3.59-3.59 3.59-3.59z"
|
|
310
|
-
)
|
|
311
|
-
});
|
|
312
|
-
var IconCheckCircle = createIconBase({
|
|
313
|
-
paths: fill(
|
|
314
|
-
"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"
|
|
315
|
-
)
|
|
316
|
-
});
|
|
317
|
-
var IconArrowUp = createIconBase({
|
|
318
|
-
paths: fill("M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z")
|
|
319
|
-
});
|
|
320
|
-
var IconArrowDown = createIconBase({
|
|
321
|
-
paths: fill("M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z")
|
|
322
|
-
});
|
|
323
|
-
var IconChevronLeft = createIconBasePath("M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z");
|
|
324
|
-
var IconChevronRight = createIconBasePath("M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z");
|
|
325
|
-
var IconChevronDown = createIconBasePath("M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z");
|
|
326
|
-
var IconSubArrowRight = createIconBase({
|
|
327
|
-
paths: /* @__PURE__ */ jsx5("g", { transform: "translate(4 5.5)", children: fill("M2 0H0V10H12.01V13L16 9L12.01 5V8H2V0Z") })
|
|
328
|
-
});
|
|
329
|
-
var IconSearch = createIconBasePath(
|
|
330
|
-
"M15.5 14h-.79l-.28-.27A6.471 6.471 0 0 0 16 9.5 6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"
|
|
331
|
-
);
|
|
332
|
-
var IconBell = createIconBasePath(
|
|
333
|
-
"M12 22c1.1 0 2-.9 2-2h-4c0 1.1.89 2 2 2m6-6v-5c0-3.07-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.63 5.36 6 7.92 6 11v5l-2 2v1h16v-1z"
|
|
334
|
-
);
|
|
335
|
-
var IconBellOff = createIconBasePath(
|
|
336
|
-
"M20 18.69 7.84 6.14 5.27 3.49 4 4.76l2.8 2.8v.01c-.52.99-.8 2.16-.8 3.42v5l-2 2v1h13.73l2 2L21 19.72zM12 22c1.11 0 2-.89 2-2h-4c0 1.11.89 2 2 2m6-7.32V11c0-3.08-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68c-.15.03-.29.08-.42.12-.1.03-.2.07-.3.11h-.01c-.01 0-.01 0-.02.01-.23.09-.46.2-.68.31 0 0-.01 0-.01.01z"
|
|
337
|
-
);
|
|
338
|
-
var IconPerson = createIconBasePath(
|
|
339
|
-
"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"
|
|
340
|
-
);
|
|
341
|
-
var IconHome = createIconBasePath("M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z");
|
|
342
|
-
var IconPanelRight = createIconBasePath(
|
|
343
|
-
"M3 5v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2zm12 4h-5v10h5V9zm-7 0H5v10h3V9z"
|
|
344
|
-
);
|
|
345
|
-
var IconPlus = createIconBasePath("M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z");
|
|
346
|
-
var IconCheck = createIconBasePath("M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z");
|
|
347
|
-
var IconClose = createIconBasePath("M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z");
|
|
348
|
-
var IconTrash = createIconBasePath("M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z");
|
|
349
|
-
var IconDownload = createIconBasePath("M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z");
|
|
350
|
-
var IconUpload = createIconBasePath("M9 16h6v-6h4l-7-7-7 7h4v6zm-4 2h14v2H5v-2z");
|
|
351
|
-
var IconSave = createIconBasePath(
|
|
352
|
-
"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zm3-10H5V5h10v4z"
|
|
353
|
-
);
|
|
354
|
-
var IconCopy = createIconBasePath(
|
|
355
|
-
"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"
|
|
356
|
-
);
|
|
357
|
-
var IconEdit = createIconBasePath(
|
|
358
|
-
"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z"
|
|
359
|
-
);
|
|
360
|
-
var IconLogout = createIconBasePath(
|
|
361
|
-
"M17 7l-1.41 1.41L18.17 11H8v2h10.17l-2.58 2.59L17 17l5-5zM4 5h8V3H4c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h8v-2H4V5z"
|
|
362
|
-
);
|
|
363
|
-
var IconStar = createIconBasePath(
|
|
364
|
-
"M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"
|
|
365
|
-
);
|
|
366
|
-
var IconMail = createIconBasePath(
|
|
367
|
-
"M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z"
|
|
368
|
-
);
|
|
369
|
-
var IconShoppingCart = createIconBasePath(
|
|
370
|
-
"M7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zM1 2v2h2l3.6 7.59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.14 0-.25-.11-.25-.25l.03-.12.9-1.63h7.45c.75 0 1.41-.41 1.75-1.03l3.58-6.49c.08-.14.12-.31.12-.48 0-.55-.45-1-1-1H5.21l-.94-2H1zm16 16c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2z"
|
|
371
|
-
);
|
|
372
|
-
var IconMoon = createIconBasePath(
|
|
373
|
-
"M12 3c-4.97 0-9 4.03-9 9s4.03 9 9 9 9-4.03 9-9c0-.46-.04-.92-.1-1.36-.98 1.37-2.58 2.26-4.4 2.26-2.98 0-5.4-2.42-5.4-5.4 0-1.81.89-3.42 2.26-4.4-.44-.06-.9-.1-1.36-.1z"
|
|
374
|
-
);
|
|
375
|
-
var IconSun = createIconBasePath(
|
|
376
|
-
"M6.76 4.84l-1.8-1.79-1.41 1.41 1.79 1.79 1.42-1.41zM4 10.5H1v2h3v-2zm9-9.95h-2V3.5h2V.55zm7.45 3.91l-1.41-1.41-1.79 1.79 1.41 1.41 1.79-1.79zm-3.21 13.7l1.79 1.8 1.41-1.41-1.8-1.79-1.4 1.4zM20 10.5v2h3v-2h-3zm-8-5c-3.31 0-6 2.69-6 6s2.69 6 6 6 6-2.69 6-6-2.69-6-6-6zm-1 16.95h2V19.5h-2v2.95zm-7.45-3.91l1.41 1.41 1.79-1.8-1.41-1.41-1.79 1.8z"
|
|
377
|
-
);
|
|
378
|
-
var IconVolume = createIconBasePath(
|
|
379
|
-
"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z"
|
|
380
|
-
);
|
|
381
|
-
var IconVolumeOff = createIconBasePath(
|
|
382
|
-
"M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z"
|
|
383
|
-
);
|
|
384
|
-
var IconFlag = createIconBasePath("M14.4 6L14 4H5v17h2v-7h5.6l.4 2h7V6h-5.6z");
|
|
385
|
-
var IconDatabase = createIconBasePath(
|
|
386
|
-
"M12 3C7.58 3 4 4.79 4 7s3.58 4 8 4 8-1.79 8-4-3.58-4-8-4zM4 9v3c0 2.21 3.58 4 8 4s8-1.79 8-4V9c0 2.21-3.58 4-8 4s-8-1.79-8-4zm0 5v3c0 2.21 3.58 4 8 4s8-1.79 8-4v-3c0 2.21-3.58 4-8 4s-8-1.79-8-4z"
|
|
387
|
-
);
|
|
388
|
-
var IconLayers = createIconBasePath("M11.99 18.54l-7.37-5.73L3 14.07l9 7 9-7-1.63-1.27-7.38 5.74zM12 16l7.36-5.73L21 9l-9-7-9 7 1.63 1.27L12 16z");
|
|
389
|
-
var IconBox = createIconBasePath(
|
|
390
|
-
"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"
|
|
391
|
-
);
|
|
392
|
-
var IconBolt = createIconBasePath(
|
|
393
|
-
"M11 21h-1l1-7H7.5c-.58 0-.57-.32-.38-.66-.19-.34-.04-.12-.07-.12C8.48 10.94 10.42 7.54 11 7V3h1v4c.58 0 .57.32.38.66-.19-.34-.04-.12-.07-.12-.95 2.28-2.96 5.66-3.31 6.22H13l-1 7h-1z"
|
|
394
|
-
);
|
|
395
|
-
var IconRadar = createIconBasePath(
|
|
396
|
-
"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm-5.5-2.5l7.51-3.49L17.5 6.5 9.99 9.99 6.5 17.5zm5.5-6.6c.61 0 1.1.49 1.1 1.1s-.49 1.1-1.1 1.1-1.1-.49-1.1-1.1.49-1.1 1.1-1.1z"
|
|
397
|
-
);
|
|
398
|
-
var IconToggle = createIconBasePath(
|
|
399
|
-
"M17 7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h10c2.76 0 5-2.24 5-5s-2.24-5-5-5zm0 8H7c-1.66 0-3-1.34-3-3s1.34-3 3-3h10c1.66 0 3 1.34 3 3s-1.34 3-3 3zM7 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"
|
|
400
|
-
);
|
|
401
|
-
var IconRocket = createIconBasePath(
|
|
402
|
-
"M9.19 6.35c-2.04 2.29-3.44 5.58-3.57 5.89L2 10.69l4.05-4.05c.47-.47 1.15-.68 1.81-.55l1.33 1.26zm5.45 8.67l-1.33-1.26c-.66-.13-1.34.08-1.81.55L2 18.31l3.62 3.57c.31-.13 3.6-1.53 5.89-3.57 1.53-1.72 2.52-3.76 2.87-5.02zM12 2c-1.1 0-2 .9-2 2v1.09c2.84.48 5 2.94 5 5.91 0 2.97-2.16 5.43-5 5.91V20c0 1.1.9 2 2 2s2-.9 2-2v-1.09c-2.84-.48-5-2.94-5-5.91 0-2.97 2.16-5.43 5-5.91V4c0-1.1-.9-2-2-2z"
|
|
403
|
-
);
|
|
404
|
-
var IconTerminal = createIconBase({
|
|
405
|
-
name: "IconTerminal",
|
|
406
|
-
paths: /* @__PURE__ */ jsx5(
|
|
407
|
-
"path",
|
|
408
|
-
{
|
|
409
|
-
d: "M3 4v16h18V4H3zm2 2h14v12H5V6zm2 2.2L10.8 12 7 15.8 8.4 17.2l5.2-5.2-5.2-5.2L7 8.2zM13 17h5v-2h-5v2z",
|
|
410
|
-
fill: "currentColor",
|
|
411
|
-
fillRule: "evenodd",
|
|
412
|
-
clipRule: "evenodd"
|
|
413
|
-
}
|
|
414
|
-
)
|
|
415
|
-
});
|
|
416
|
-
var IconOldWindow = createIconBase({
|
|
417
|
-
name: "IconOldWindow",
|
|
418
|
-
paths: /* @__PURE__ */ jsx5(
|
|
419
|
-
"path",
|
|
420
|
-
{
|
|
421
|
-
d: "M3 3v18h18V3H3zm2 7v9h14v-9H5zm1-4h2v1H6V6zm3 0h2v1H9V6z",
|
|
422
|
-
fill: "currentColor",
|
|
423
|
-
fillRule: "evenodd",
|
|
424
|
-
clipRule: "evenodd"
|
|
425
|
-
}
|
|
426
|
-
)
|
|
427
|
-
});
|
|
428
|
-
var IconCommandCursor = createIconBase({
|
|
429
|
-
name: "IconCommandCursor",
|
|
430
|
-
paths: /* @__PURE__ */ jsx5(
|
|
431
|
-
"path",
|
|
432
|
-
{
|
|
433
|
-
d: "M4 3v18h16V3H4zm2 2h12v14H6V5zm1.5 3.5L11 12l-3.5 3.5L9 17l5-5-5-5-1.5 1.5zM13 17h4v-2h-4v2z",
|
|
434
|
-
fill: "currentColor",
|
|
435
|
-
fillRule: "evenodd",
|
|
436
|
-
clipRule: "evenodd"
|
|
437
|
-
}
|
|
438
|
-
)
|
|
439
|
-
});
|
|
440
|
-
var IconDataReel = createIconBase({
|
|
441
|
-
name: "IconDataReel",
|
|
442
|
-
paths: /* @__PURE__ */ jsx5(
|
|
443
|
-
"path",
|
|
444
|
-
{
|
|
445
|
-
d: "M3 5v14h18V5H3zm2 2h14v10H5V7zm3 1a3 3 0 1 0 0 6 3 3 0 0 0 0-6zm8 0a3 3 0 1 0 0 6 3 3 0 0 0 0-6zM10 11h4v1.5h-4V11z",
|
|
446
|
-
fill: "currentColor",
|
|
447
|
-
fillRule: "evenodd",
|
|
448
|
-
clipRule: "evenodd"
|
|
449
|
-
}
|
|
450
|
-
)
|
|
451
|
-
});
|
|
452
|
-
var IconCodePreview = createIconBase({
|
|
453
|
-
name: "IconCodePreview",
|
|
454
|
-
paths: /* @__PURE__ */ jsx5(
|
|
455
|
-
"path",
|
|
456
|
-
{
|
|
457
|
-
d: "M3 3v15h18V3H3zm2 2h14v11H5V5zm3.5 2L5 10.5 8.5 14l1.4-1.4-2.1-2.1 2.1-2.1L8.5 7zm7 0-1.4 1.4 2.1 2.1-2.1 2.1 1.4 1.4 3.5-3.5L15.5 7zM9 20h6v2H9v-2z",
|
|
458
|
-
fill: "currentColor",
|
|
459
|
-
fillRule: "evenodd",
|
|
460
|
-
clipRule: "evenodd"
|
|
461
|
-
}
|
|
462
|
-
)
|
|
463
|
-
});
|
|
464
|
-
var IconInsightBoard = createIconBase({
|
|
465
|
-
name: "IconInsightBoard",
|
|
466
|
-
paths: /* @__PURE__ */ jsx5(
|
|
467
|
-
"path",
|
|
468
|
-
{
|
|
469
|
-
d: "M3 3v18h18V3H3zm2 2h14v3H5V5zm0 5h6v9H5v-9zm8 0h6v4h-6v-4zm0 6h6v3h-6v-3zM6 6h2v1H6V6zm3 0h2v1H9V6z",
|
|
470
|
-
fill: "currentColor",
|
|
471
|
-
fillRule: "evenodd",
|
|
472
|
-
clipRule: "evenodd"
|
|
473
|
-
}
|
|
474
|
-
)
|
|
475
|
-
});
|
|
476
|
-
var IconEventStream = createIconBase({
|
|
477
|
-
name: "IconEventStream",
|
|
478
|
-
paths: /* @__PURE__ */ jsxs3(Fragment2, { children: [
|
|
479
|
-
/* @__PURE__ */ jsx5("path", { d: "M5 4h2v16H5V4z", fill: "currentColor", opacity: "0.45" }),
|
|
480
|
-
fill("M6 3a3 3 0 1 0 0 6 3 3 0 0 0 0-6zm0 8a3 3 0 1 0 0 6 3 3 0 0 0 0-6zm5-6h10v2H11V5zm0 8h7v2h-7v-2zm0 5h10v2H11v-2z")
|
|
481
|
-
] })
|
|
482
|
-
});
|
|
483
|
-
var IconFeatureGate = createIconBase({
|
|
484
|
-
name: "IconFeatureGate",
|
|
485
|
-
paths: /* @__PURE__ */ jsx5(
|
|
486
|
-
"path",
|
|
487
|
-
{
|
|
488
|
-
d: "M4 3h2v18H4V3zm3 2h12l-3 4 3 4H7V5zm4 1-2.2 4H12l-1 4 4.2-5H12l1-3h-2z",
|
|
489
|
-
fill: "currentColor",
|
|
490
|
-
fillRule: "evenodd",
|
|
491
|
-
clipRule: "evenodd"
|
|
492
|
-
}
|
|
493
|
-
)
|
|
494
|
-
});
|
|
495
|
-
var IconReplayFrame = createIconBase({
|
|
496
|
-
name: "IconReplayFrame",
|
|
497
|
-
paths: /* @__PURE__ */ jsx5(
|
|
498
|
-
"path",
|
|
499
|
-
{
|
|
500
|
-
d: "M3 3v18h18V3H3zm2 2h14v11H5V5zm5 2v7l6-3.5L10 7zm-5 11h9v1H5v-1zm11 0h3v1h-3v-1z",
|
|
501
|
-
fill: "currentColor",
|
|
502
|
-
fillRule: "evenodd",
|
|
503
|
-
clipRule: "evenodd"
|
|
504
|
-
}
|
|
505
|
-
)
|
|
506
|
-
});
|
|
507
|
-
var IconQueryStack = createIconBase({
|
|
508
|
-
name: "IconQueryStack",
|
|
509
|
-
paths: fill(
|
|
510
|
-
"M4 5c0-1.66 3.58-3 8-3s8 1.34 8 3-3.58 3-8 3-8-1.34-8-3zm0 3v3c0 1.66 3.58 3 8 3 .7 0 1.38-.04 2-.12V11.8c-.64.13-1.31.2-2 .2-4.42 0-8-1.34-8-3zm0 6v3c0 1.66 3.58 3 8 3 .7 0 1.38-.04 2-.12v-2.08c-.64.13-1.31.2-2 .2-4.42 0-8-1.34-8-3zm12-1 5 4-5 4v-3h-4v-2h4v-3z"
|
|
511
|
-
)
|
|
512
|
-
});
|
|
513
|
-
var IconExperimentSplit = createIconBase({
|
|
514
|
-
name: "IconExperimentSplit",
|
|
515
|
-
paths: fill(
|
|
516
|
-
"M5 3a3 3 0 1 0 0 6 3 3 0 0 0 0-6zm14 0a3 3 0 1 0 0 6 3 3 0 0 0 0-6zM5 15a3 3 0 1 0 0 6 3 3 0 0 0 0-6zm1-6h2c0 2.2 1.8 4 4 4h2.17A3 3 0 0 1 19 11v2a3 3 0 0 1-4.83-2H12a6 6 0 0 1-6-6v4zm0 4a6 6 0 0 0 6-6h2a8 8 0 0 1-8 8v-2z"
|
|
517
|
-
)
|
|
518
|
-
});
|
|
519
|
-
var IconSurveyCard = createIconBase({
|
|
520
|
-
name: "IconSurveyCard",
|
|
521
|
-
paths: /* @__PURE__ */ jsx5(
|
|
522
|
-
"path",
|
|
523
|
-
{
|
|
524
|
-
d: "M3 3v18h18V3H3zm2 2h14v14H5V5zm2 2h7v2H7V7zm0 4h4v2H7v-2zm7-.4-2.5 2.5-1-1-1.4 1.4 2.4 2.4 3.9-3.9-1.4-1.4zM7 16h10v1H7v-1z",
|
|
525
|
-
fill: "currentColor",
|
|
526
|
-
fillRule: "evenodd",
|
|
527
|
-
clipRule: "evenodd"
|
|
528
|
-
}
|
|
529
|
-
)
|
|
530
|
-
});
|
|
531
|
-
var OLD_UI_ICONS = {
|
|
532
|
-
oldWindow: IconOldWindow,
|
|
533
|
-
commandCursor: IconCommandCursor,
|
|
534
|
-
dataReel: IconDataReel,
|
|
535
|
-
codePreview: IconCodePreview,
|
|
536
|
-
insightBoard: IconInsightBoard,
|
|
537
|
-
eventStream: IconEventStream,
|
|
538
|
-
featureGate: IconFeatureGate,
|
|
539
|
-
replayFrame: IconReplayFrame,
|
|
540
|
-
queryStack: IconQueryStack,
|
|
541
|
-
experimentSplit: IconExperimentSplit,
|
|
542
|
-
surveyCard: IconSurveyCard
|
|
543
|
-
};
|
|
544
|
-
var IconActivity = createIconBasePath(
|
|
545
|
-
"M22 12h-4l-3 9L9 3l-3 9H2v2h6.76l2.24-6.72L15 15l2.24-6.72L19 14h3v-2z"
|
|
546
|
-
);
|
|
547
|
-
var IconFlask = createIconBasePath(
|
|
548
|
-
"M19.8 18.4L14 10.67V6.5l1.35-1.35c.39-.39.39-1.02 0-1.41L14.65 2.7a.9959.9959 0 0 0-1.41 0L9.35 6.54c-.39.39-.39 1.02 0 1.41L10.7 9.3v4.17L4.2 18.4C3.53 19.07 4.04 20.25 5 20.25h14c.96 0 1.47-1.18.8-1.85zM6.91 18.25l5.09-5.09 5.09 5.09H6.91z"
|
|
549
|
-
);
|
|
550
|
-
var IconSpinner = forwardRef4(function IconSpinner2(_a, ref) {
|
|
551
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
552
|
-
return /* @__PURE__ */ jsx5(IconSync, __spreadValues({ ref, className: cn("ph-icon-spin", className) }, props));
|
|
553
|
-
});
|
|
554
|
-
IconSpinner.displayName = "IconSpinner";
|
|
555
|
-
var CANONICAL_ICONS = {
|
|
556
|
-
activity: IconActivity,
|
|
557
|
-
areaChart: IconAreaChart,
|
|
558
|
-
arrowDown: IconArrowDown,
|
|
559
|
-
arrowUp: IconArrowUp,
|
|
560
|
-
bell: IconBell,
|
|
561
|
-
bellOff: IconBellOff,
|
|
562
|
-
bolt: IconBolt,
|
|
563
|
-
box: IconBox,
|
|
564
|
-
cancel: IconCancel,
|
|
565
|
-
check: IconCheck,
|
|
566
|
-
checkCircle: IconCheckCircle,
|
|
567
|
-
chevronDown: IconChevronDown,
|
|
568
|
-
chevronLeft: IconChevronLeft,
|
|
569
|
-
chevronRight: IconChevronRight,
|
|
570
|
-
clipboardEdit: IconClipboardEdit,
|
|
571
|
-
close: IconClose,
|
|
572
|
-
codePreview: IconCodePreview,
|
|
573
|
-
cohort: IconCohort,
|
|
574
|
-
commandCursor: IconCommandCursor,
|
|
575
|
-
copy: IconCopy,
|
|
576
|
-
cumulativeChart: IconCumulativeChart,
|
|
577
|
-
dataReel: IconDataReel,
|
|
578
|
-
database: IconDatabase,
|
|
579
|
-
download: IconDownload,
|
|
580
|
-
edit: IconEdit,
|
|
581
|
-
errorOutline: IconErrorOutline,
|
|
582
|
-
eventStream: IconEventStream,
|
|
583
|
-
exclamation: IconExclamation,
|
|
584
|
-
experimentSplit: IconExperimentSplit,
|
|
585
|
-
featureGate: IconFeatureGate,
|
|
586
|
-
flag: IconFlag,
|
|
587
|
-
flare: IconFlare,
|
|
588
|
-
flask: IconFlask,
|
|
589
|
-
gift: IconGift,
|
|
590
|
-
gridView: IconGridView,
|
|
591
|
-
handClick: IconHandClick,
|
|
592
|
-
home: IconHome,
|
|
593
|
-
info: IconInfo,
|
|
594
|
-
insightBoard: IconInsightBoard,
|
|
595
|
-
layers: IconLayers,
|
|
596
|
-
listView: IconListView,
|
|
597
|
-
logout: IconLogout,
|
|
598
|
-
mail: IconMail,
|
|
599
|
-
moon: IconMoon,
|
|
600
|
-
oldWindow: IconOldWindow,
|
|
601
|
-
panelRight: IconPanelRight,
|
|
602
|
-
person: IconPerson,
|
|
603
|
-
playCircle: IconPlayCircle,
|
|
604
|
-
plus: IconPlus,
|
|
605
|
-
premium: IconPremium,
|
|
606
|
-
queryEditor: IconQueryEditor,
|
|
607
|
-
queryStack: IconQueryStack,
|
|
608
|
-
radar: IconRadar,
|
|
609
|
-
recording: IconRecording,
|
|
610
|
-
replayFrame: IconReplayFrame,
|
|
611
|
-
robot: IconRobot,
|
|
612
|
-
rocket: IconRocket,
|
|
613
|
-
save: IconSave,
|
|
614
|
-
search: IconSearch,
|
|
615
|
-
selectEvents: IconSelectEvents,
|
|
616
|
-
shoppingCart: IconShoppingCart,
|
|
617
|
-
spinner: IconSpinner,
|
|
618
|
-
star: IconStar,
|
|
619
|
-
subArrowRight: IconSubArrowRight,
|
|
620
|
-
sun: IconSun,
|
|
621
|
-
surveyCard: IconSurveyCard,
|
|
622
|
-
surveys: IconSurveys,
|
|
623
|
-
sync: IconSync,
|
|
624
|
-
tableChart: IconTableChart,
|
|
625
|
-
terminal: IconTerminal,
|
|
626
|
-
toggle: IconToggle,
|
|
627
|
-
trash: IconTrash,
|
|
628
|
-
tuning: IconTuning,
|
|
629
|
-
upload: IconUpload,
|
|
630
|
-
volume: IconVolume,
|
|
631
|
-
volumeOff: IconVolumeOff
|
|
632
|
-
};
|
|
633
|
-
var PH_ICON_ALIASES = {
|
|
634
|
-
clipboard: IconClipboardEdit,
|
|
635
|
-
grid: IconGridView,
|
|
636
|
-
list: IconListView,
|
|
637
|
-
play: IconPlayCircle,
|
|
638
|
-
settings: IconTuning,
|
|
639
|
-
trendingUp: IconArrowUp,
|
|
640
|
-
warning: IconExclamation,
|
|
641
|
-
xCircle: IconCancel
|
|
642
|
-
};
|
|
643
|
-
var PH_ICONS = __spreadValues(__spreadValues({}, CANONICAL_ICONS), PH_ICON_ALIASES);
|
|
644
|
-
for (const [name, Icon] of Object.entries(CANONICAL_ICONS)) {
|
|
645
|
-
const namedIcon = Icon;
|
|
646
|
-
if (!namedIcon.displayName || namedIcon.displayName === "IconGlyph") {
|
|
647
|
-
namedIcon.displayName = `Icon${name[0].toUpperCase()}${name.slice(1)}`;
|
|
648
|
-
}
|
|
649
|
-
}
|
|
650
|
-
var IconByName = forwardRef4(function IconByName2(_a, ref) {
|
|
651
|
-
var _b = _a, { name } = _b, props = __objRest(_b, ["name"]);
|
|
652
|
-
const Icon = PH_ICONS[name];
|
|
653
|
-
return /* @__PURE__ */ jsx5(Icon, __spreadValues({ ref }, props));
|
|
654
|
-
});
|
|
655
|
-
IconByName.displayName = "IconByName";
|
|
656
|
-
|
|
657
|
-
// src/components/ui/Alert.tsx
|
|
658
|
-
import { jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
123
|
+
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
659
124
|
var statusConfig = {
|
|
660
125
|
info: { icon: IconInfo },
|
|
661
126
|
success: { icon: IconCheckCircle },
|
|
@@ -668,7 +133,7 @@ var statusClassMap = {
|
|
|
668
133
|
warning: "ph-alert-warning",
|
|
669
134
|
danger: "ph-alert-danger"
|
|
670
135
|
};
|
|
671
|
-
var Alert =
|
|
136
|
+
var Alert = forwardRef2(function Alert2(_a, ref) {
|
|
672
137
|
var _b = _a, {
|
|
673
138
|
status = "info",
|
|
674
139
|
title,
|
|
@@ -694,7 +159,7 @@ var Alert = forwardRef5(function Alert2(_a, ref) {
|
|
|
694
159
|
]);
|
|
695
160
|
const config = statusConfig[status];
|
|
696
161
|
const Icon = config.icon;
|
|
697
|
-
return /* @__PURE__ */
|
|
162
|
+
return /* @__PURE__ */ jsxs2(
|
|
698
163
|
"div",
|
|
699
164
|
__spreadProps(__spreadValues({
|
|
700
165
|
ref,
|
|
@@ -703,20 +168,20 @@ var Alert = forwardRef5(function Alert2(_a, ref) {
|
|
|
703
168
|
className: cn("ph-alert", statusClassMap[status], className)
|
|
704
169
|
}, props), {
|
|
705
170
|
children: [
|
|
706
|
-
icon != null ? icon : /* @__PURE__ */
|
|
707
|
-
/* @__PURE__ */
|
|
708
|
-
title && /* @__PURE__ */
|
|
709
|
-
description && /* @__PURE__ */
|
|
171
|
+
icon != null ? icon : /* @__PURE__ */ jsx2(Icon, { className: "ph-alert-icon mt-0.5 h-5 w-5 shrink-0", "aria-hidden": true }),
|
|
172
|
+
/* @__PURE__ */ jsxs2("div", { className: "min-w-0 flex-1", children: [
|
|
173
|
+
title && /* @__PURE__ */ jsx2("p", { className: "font-semibold", children: title }),
|
|
174
|
+
description && /* @__PURE__ */ jsx2("p", { className: "mt-1 text-sm text-ph-subtle", children: description }),
|
|
710
175
|
children
|
|
711
176
|
] }),
|
|
712
|
-
onDismiss && /* @__PURE__ */
|
|
177
|
+
onDismiss && /* @__PURE__ */ jsx2(
|
|
713
178
|
"button",
|
|
714
179
|
{
|
|
715
180
|
type: "button",
|
|
716
181
|
onClick: onDismiss,
|
|
717
182
|
className: "ph-alert-dismiss",
|
|
718
183
|
"aria-label": dismissLabel,
|
|
719
|
-
children: /* @__PURE__ */
|
|
184
|
+
children: /* @__PURE__ */ jsx2(IconClose, { className: "h-4 w-4", "aria-hidden": true })
|
|
720
185
|
}
|
|
721
186
|
)
|
|
722
187
|
]
|
|
@@ -726,8 +191,8 @@ var Alert = forwardRef5(function Alert2(_a, ref) {
|
|
|
726
191
|
Alert.displayName = "Alert";
|
|
727
192
|
|
|
728
193
|
// src/components/ui/Badge.tsx
|
|
729
|
-
import { forwardRef as
|
|
730
|
-
import { jsx as
|
|
194
|
+
import { forwardRef as forwardRef3 } from "react";
|
|
195
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
731
196
|
var variantMap = {
|
|
732
197
|
brand: "ph-badge-brand",
|
|
733
198
|
neutral: "ph-badge-neutral",
|
|
@@ -741,7 +206,7 @@ var sizeMap = {
|
|
|
741
206
|
sm: "text-[10px] px-1.5 py-0.5",
|
|
742
207
|
md: ""
|
|
743
208
|
};
|
|
744
|
-
var Badge =
|
|
209
|
+
var Badge = forwardRef3(function Badge2(_a, ref) {
|
|
745
210
|
var _b = _a, {
|
|
746
211
|
variant = "neutral",
|
|
747
212
|
size = "md",
|
|
@@ -753,7 +218,7 @@ var Badge = forwardRef6(function Badge2(_a, ref) {
|
|
|
753
218
|
"children",
|
|
754
219
|
"className"
|
|
755
220
|
]);
|
|
756
|
-
return /* @__PURE__ */
|
|
221
|
+
return /* @__PURE__ */ jsx3(
|
|
757
222
|
"span",
|
|
758
223
|
__spreadProps(__spreadValues({
|
|
759
224
|
ref,
|
|
@@ -771,15 +236,15 @@ var Badge = forwardRef6(function Badge2(_a, ref) {
|
|
|
771
236
|
Badge.displayName = "Badge";
|
|
772
237
|
|
|
773
238
|
// src/components/ui/Card.tsx
|
|
774
|
-
import { forwardRef as
|
|
775
|
-
import { jsx as
|
|
239
|
+
import { forwardRef as forwardRef4 } from "react";
|
|
240
|
+
import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
776
241
|
var variantMap2 = {
|
|
777
242
|
default: "",
|
|
778
243
|
outlined: "border-2 border-ph-border",
|
|
779
244
|
elevated: "ph-card-elevated",
|
|
780
245
|
highlighted: "ph-card-highlighted"
|
|
781
246
|
};
|
|
782
|
-
var Card =
|
|
247
|
+
var Card = forwardRef4(function Card2(_a, ref) {
|
|
783
248
|
var _b = _a, {
|
|
784
249
|
children,
|
|
785
250
|
title,
|
|
@@ -805,7 +270,7 @@ var Card = forwardRef7(function Card2(_a, ref) {
|
|
|
805
270
|
"interactive",
|
|
806
271
|
"titleAs"
|
|
807
272
|
]);
|
|
808
|
-
return /* @__PURE__ */
|
|
273
|
+
return /* @__PURE__ */ jsxs3(
|
|
809
274
|
"div",
|
|
810
275
|
__spreadProps(__spreadValues({
|
|
811
276
|
ref,
|
|
@@ -817,14 +282,14 @@ var Card = forwardRef7(function Card2(_a, ref) {
|
|
|
817
282
|
)
|
|
818
283
|
}, props), {
|
|
819
284
|
children: [
|
|
820
|
-
media && /* @__PURE__ */
|
|
821
|
-
/* @__PURE__ */
|
|
822
|
-
title && /* @__PURE__ */
|
|
823
|
-
description && /* @__PURE__ */
|
|
285
|
+
media && /* @__PURE__ */ jsx4("div", { className: "ph-card-media", children: media }),
|
|
286
|
+
/* @__PURE__ */ jsxs3("div", { className: cn("ph-card-body", bodyClassName), children: [
|
|
287
|
+
title && /* @__PURE__ */ jsx4(Title2, { className: "ph-card-title", children: title }),
|
|
288
|
+
description && /* @__PURE__ */ jsx4("p", { className: "text-sm text-ph-subtle", children: description }),
|
|
824
289
|
children,
|
|
825
|
-
actions && /* @__PURE__ */
|
|
290
|
+
actions && /* @__PURE__ */ jsx4("div", { className: "ph-card-actions", children: actions })
|
|
826
291
|
] }),
|
|
827
|
-
footer && /* @__PURE__ */
|
|
292
|
+
footer && /* @__PURE__ */ jsx4("div", { className: "border-t border-ph-border px-6 py-4 text-xs text-ph-subtle", children: footer })
|
|
828
293
|
]
|
|
829
294
|
})
|
|
830
295
|
);
|
|
@@ -832,7 +297,7 @@ var Card = forwardRef7(function Card2(_a, ref) {
|
|
|
832
297
|
Card.displayName = "Card";
|
|
833
298
|
|
|
834
299
|
// src/components/ui/Drawer.tsx
|
|
835
|
-
import { Fragment as
|
|
300
|
+
import { Fragment as Fragment2, jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
836
301
|
var sideMap = {
|
|
837
302
|
left: "left-0 border-r",
|
|
838
303
|
right: "right-0 border-l"
|
|
@@ -854,9 +319,9 @@ function Drawer({
|
|
|
854
319
|
showCloseButton = true
|
|
855
320
|
}) {
|
|
856
321
|
if (!open) return null;
|
|
857
|
-
return /* @__PURE__ */
|
|
858
|
-
/* @__PURE__ */
|
|
859
|
-
/* @__PURE__ */
|
|
322
|
+
return /* @__PURE__ */ jsxs4(Fragment2, { children: [
|
|
323
|
+
/* @__PURE__ */ jsx5("div", { className: "fixed inset-0 z-[120] bg-black/45 backdrop-blur-[2px]", role: "presentation", onClick: onClose }),
|
|
324
|
+
/* @__PURE__ */ jsxs4(
|
|
860
325
|
"aside",
|
|
861
326
|
{
|
|
862
327
|
className: cn(
|
|
@@ -866,12 +331,12 @@ function Drawer({
|
|
|
866
331
|
className
|
|
867
332
|
),
|
|
868
333
|
children: [
|
|
869
|
-
(title || showCloseButton) && /* @__PURE__ */
|
|
870
|
-
/* @__PURE__ */
|
|
871
|
-
showCloseButton && onClose && /* @__PURE__ */
|
|
334
|
+
(title || showCloseButton) && /* @__PURE__ */ jsxs4("header", { className: "flex items-center justify-between border-b border-ph-border px-4 py-3", children: [
|
|
335
|
+
/* @__PURE__ */ jsx5("span", { className: "text-sm font-bold text-ph-ink", children: title }),
|
|
336
|
+
showCloseButton && onClose && /* @__PURE__ */ jsx5(Button, { variant: "ghost", className: "ph-btn-circle", onClick: onClose, "aria-label": "Close drawer", children: /* @__PURE__ */ jsx5(IconClose, { className: "h-5 w-5" }) })
|
|
872
337
|
] }),
|
|
873
|
-
/* @__PURE__ */
|
|
874
|
-
footer && /* @__PURE__ */
|
|
338
|
+
/* @__PURE__ */ jsx5("div", { className: "flex-1", children }),
|
|
339
|
+
footer && /* @__PURE__ */ jsx5("footer", { className: "border-t border-ph-border px-4 py-3", children: footer })
|
|
875
340
|
]
|
|
876
341
|
}
|
|
877
342
|
)
|
|
@@ -879,7 +344,7 @@ function Drawer({
|
|
|
879
344
|
}
|
|
880
345
|
|
|
881
346
|
// src/components/ui/Kbd.tsx
|
|
882
|
-
import { jsx as
|
|
347
|
+
import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
883
348
|
var platformLabels = {
|
|
884
349
|
text: {
|
|
885
350
|
command: "Command",
|
|
@@ -938,17 +403,17 @@ function Kbd(_a) {
|
|
|
938
403
|
"aria-label"
|
|
939
404
|
]);
|
|
940
405
|
if (variant === "token") {
|
|
941
|
-
return /* @__PURE__ */
|
|
406
|
+
return /* @__PURE__ */ jsx6("code", __spreadProps(__spreadValues({ className: cn("ph-code-token ph-kbd", className), "aria-label": ariaLabel }, props), { children }));
|
|
942
407
|
}
|
|
943
408
|
const sourceKeys = (keys == null ? void 0 : keys.length) ? keys : children != null ? [children] : [];
|
|
944
409
|
const displayKeys = sourceKeys.map((key) => formatKey(key, platform));
|
|
945
410
|
const accessibleLabel = ariaLabel != null ? ariaLabel : getShortcutLabel(displayKeys);
|
|
946
411
|
if (variant === "key") {
|
|
947
|
-
return /* @__PURE__ */
|
|
412
|
+
return /* @__PURE__ */ jsx6("kbd", __spreadProps(__spreadValues({ className: cn("ph-keycap", className), "aria-label": accessibleLabel }, props), { children: displayKeys[0] }));
|
|
948
413
|
}
|
|
949
|
-
return /* @__PURE__ */
|
|
950
|
-
index > 0 && separator != null ? /* @__PURE__ */
|
|
951
|
-
/* @__PURE__ */
|
|
414
|
+
return /* @__PURE__ */ jsx6("kbd", __spreadProps(__spreadValues({ className: cn("ph-shortcut-group ph-keycap", className), "aria-label": accessibleLabel }, props), { children: displayKeys.map((key, index) => /* @__PURE__ */ jsxs5("span", { className: "contents", children: [
|
|
415
|
+
index > 0 && separator != null ? /* @__PURE__ */ jsx6("span", { className: "ph-shortcut-separator", "aria-hidden": "true", children: separator }) : null,
|
|
416
|
+
/* @__PURE__ */ jsx6("span", { className: "ph-shortcut-key", "aria-hidden": accessibleLabel ? true : void 0, children: key })
|
|
952
417
|
] }, index)) }));
|
|
953
418
|
}
|
|
954
419
|
function formatKey(key, platform) {
|
|
@@ -967,7 +432,7 @@ function getShortcutLabel(keys) {
|
|
|
967
432
|
}
|
|
968
433
|
|
|
969
434
|
// src/components/ui/Loader.tsx
|
|
970
|
-
import { jsx as
|
|
435
|
+
import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
971
436
|
var loaderSizeClass = {
|
|
972
437
|
sm: "ph-loader-sm",
|
|
973
438
|
md: "ph-loader-md",
|
|
@@ -993,7 +458,7 @@ function Loader(_a) {
|
|
|
993
458
|
"label",
|
|
994
459
|
"className"
|
|
995
460
|
]);
|
|
996
|
-
return /* @__PURE__ */
|
|
461
|
+
return /* @__PURE__ */ jsxs6(
|
|
997
462
|
"span",
|
|
998
463
|
__spreadProps(__spreadValues({
|
|
999
464
|
role: "status",
|
|
@@ -1001,20 +466,20 @@ function Loader(_a) {
|
|
|
1001
466
|
className: cn("ph-loader", loaderSizeClass[size], className)
|
|
1002
467
|
}, props), {
|
|
1003
468
|
children: [
|
|
1004
|
-
variant === "spinner" ? /* @__PURE__ */
|
|
1005
|
-
variant === "dots" ? /* @__PURE__ */
|
|
1006
|
-
/* @__PURE__ */
|
|
1007
|
-
/* @__PURE__ */
|
|
1008
|
-
/* @__PURE__ */
|
|
469
|
+
variant === "spinner" ? /* @__PURE__ */ jsx7("span", { className: "ph-loading", "aria-hidden": true }) : null,
|
|
470
|
+
variant === "dots" ? /* @__PURE__ */ jsxs6("span", { className: "ph-loading-dots", "aria-hidden": true, children: [
|
|
471
|
+
/* @__PURE__ */ jsx7("span", {}),
|
|
472
|
+
/* @__PURE__ */ jsx7("span", {}),
|
|
473
|
+
/* @__PURE__ */ jsx7("span", {})
|
|
1009
474
|
] }) : null,
|
|
1010
|
-
variant === "pulse" ? /* @__PURE__ */
|
|
475
|
+
variant === "pulse" ? /* @__PURE__ */ jsx7("span", { className: "ph-loading-pulse", "aria-hidden": true }) : null
|
|
1011
476
|
]
|
|
1012
477
|
})
|
|
1013
478
|
);
|
|
1014
479
|
}
|
|
1015
480
|
function Skeleton(_a) {
|
|
1016
481
|
var _b = _a, { shape = "text", className } = _b, props = __objRest(_b, ["shape", "className"]);
|
|
1017
|
-
return /* @__PURE__ */
|
|
482
|
+
return /* @__PURE__ */ jsx7(
|
|
1018
483
|
"span",
|
|
1019
484
|
__spreadValues({
|
|
1020
485
|
className: cn("ph-skeleton", skeletonShapeClass[shape], className),
|
|
@@ -1038,62 +503,62 @@ function LoadingState(_a) {
|
|
|
1038
503
|
"size",
|
|
1039
504
|
"className"
|
|
1040
505
|
]);
|
|
1041
|
-
return /* @__PURE__ */
|
|
1042
|
-
/* @__PURE__ */
|
|
1043
|
-
/* @__PURE__ */
|
|
1044
|
-
/* @__PURE__ */
|
|
1045
|
-
description ? /* @__PURE__ */
|
|
506
|
+
return /* @__PURE__ */ jsxs6("div", __spreadProps(__spreadValues({ className: cn("ph-loading-state", className), role: "status", "aria-label": label }, props), { children: [
|
|
507
|
+
/* @__PURE__ */ jsx7(Loader, { variant, size, label, "aria-hidden": "true" }),
|
|
508
|
+
/* @__PURE__ */ jsxs6("div", { className: "ph-loading-state__copy", children: [
|
|
509
|
+
/* @__PURE__ */ jsx7("strong", { children: title }),
|
|
510
|
+
description ? /* @__PURE__ */ jsx7("span", { children: description }) : null
|
|
1046
511
|
] })
|
|
1047
512
|
] }));
|
|
1048
513
|
}
|
|
1049
514
|
|
|
1050
515
|
// src/components/ui/AuthLayout.tsx
|
|
1051
516
|
import { useId } from "react";
|
|
1052
|
-
import { jsx as
|
|
517
|
+
import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
1053
518
|
function AuthLayout(_a) {
|
|
1054
519
|
var _b = _a, { brand, footer, aside, children, className } = _b, props = __objRest(_b, ["brand", "footer", "aside", "children", "className"]);
|
|
1055
|
-
return /* @__PURE__ */
|
|
1056
|
-
aside ? /* @__PURE__ */
|
|
1057
|
-
/* @__PURE__ */
|
|
1058
|
-
brand ? /* @__PURE__ */
|
|
520
|
+
return /* @__PURE__ */ jsxs7("div", __spreadProps(__spreadValues({ className: cn("ph-auth-layout", aside != null && "ph-auth-layout--split", className) }, props), { children: [
|
|
521
|
+
aside ? /* @__PURE__ */ jsx8("aside", { className: "ph-auth-layout__aside", children: aside }) : null,
|
|
522
|
+
/* @__PURE__ */ jsx8("div", { className: "ph-auth-layout__main", children: /* @__PURE__ */ jsxs7("div", { className: "ph-auth-layout__column", children: [
|
|
523
|
+
brand ? /* @__PURE__ */ jsx8("div", { className: "ph-auth-layout__brand", children: brand }) : null,
|
|
1059
524
|
children,
|
|
1060
|
-
footer ? /* @__PURE__ */
|
|
525
|
+
footer ? /* @__PURE__ */ jsx8("footer", { className: "ph-auth-layout__footer", children: footer }) : null
|
|
1061
526
|
] }) })
|
|
1062
527
|
] }));
|
|
1063
528
|
}
|
|
1064
529
|
function AuthCard(_a) {
|
|
1065
530
|
var _b = _a, { title, description, footer, children, className } = _b, props = __objRest(_b, ["title", "description", "footer", "children", "className"]);
|
|
1066
531
|
const titleId = useId();
|
|
1067
|
-
return /* @__PURE__ */
|
|
1068
|
-
/* @__PURE__ */
|
|
1069
|
-
/* @__PURE__ */
|
|
1070
|
-
description ? /* @__PURE__ */
|
|
532
|
+
return /* @__PURE__ */ jsxs7("section", __spreadProps(__spreadValues({ className: cn("ph-auth-card", className), "aria-labelledby": titleId }, props), { children: [
|
|
533
|
+
/* @__PURE__ */ jsxs7("header", { className: "ph-auth-card__header", children: [
|
|
534
|
+
/* @__PURE__ */ jsx8("h1", { id: titleId, children: title }),
|
|
535
|
+
description ? /* @__PURE__ */ jsx8("p", { children: description }) : null
|
|
1071
536
|
] }),
|
|
1072
|
-
/* @__PURE__ */
|
|
1073
|
-
footer ? /* @__PURE__ */
|
|
537
|
+
/* @__PURE__ */ jsx8("div", { className: "ph-auth-card__body", children }),
|
|
538
|
+
footer ? /* @__PURE__ */ jsx8("footer", { className: "ph-auth-card__footer", children: footer }) : null
|
|
1074
539
|
] }));
|
|
1075
540
|
}
|
|
1076
541
|
function AuthDivider(_a) {
|
|
1077
542
|
var _b = _a, { children = "or continue with", className } = _b, props = __objRest(_b, ["children", "className"]);
|
|
1078
|
-
return /* @__PURE__ */
|
|
543
|
+
return /* @__PURE__ */ jsx8("div", __spreadProps(__spreadValues({ className: cn("ph-auth-divider", className) }, props), { children: /* @__PURE__ */ jsx8("span", { children }) }));
|
|
1079
544
|
}
|
|
1080
545
|
|
|
1081
546
|
// src/components/ui/SettingsLayout.tsx
|
|
1082
|
-
import { jsx as
|
|
547
|
+
import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
1083
548
|
function SettingsNav(_a) {
|
|
1084
549
|
var _b = _a, { groups, className } = _b, props = __objRest(_b, ["groups", "className"]);
|
|
1085
|
-
return /* @__PURE__ */
|
|
1086
|
-
/* @__PURE__ */
|
|
1087
|
-
/* @__PURE__ */
|
|
550
|
+
return /* @__PURE__ */ jsx9("div", __spreadProps(__spreadValues({ className: cn("ph-settings-nav", className) }, props), { children: groups.map((group, index) => /* @__PURE__ */ jsxs8("div", { className: "ph-settings-nav__group", children: [
|
|
551
|
+
/* @__PURE__ */ jsx9("h3", { children: group.label }),
|
|
552
|
+
/* @__PURE__ */ jsx9("div", { className: "ph-settings-nav__items", children: group.items.map((item) => /* @__PURE__ */ jsxs8(
|
|
1088
553
|
"a",
|
|
1089
554
|
{
|
|
1090
555
|
href: item.href,
|
|
1091
556
|
className: cn("ph-settings-nav__item", item.active && "ph-settings-nav__item--active"),
|
|
1092
557
|
"aria-current": item.active ? "page" : void 0,
|
|
1093
558
|
children: [
|
|
1094
|
-
item.icon ? /* @__PURE__ */
|
|
1095
|
-
/* @__PURE__ */
|
|
1096
|
-
item.badge ? /* @__PURE__ */
|
|
559
|
+
item.icon ? /* @__PURE__ */ jsx9("span", { className: "ph-settings-nav__icon", children: item.icon }) : null,
|
|
560
|
+
/* @__PURE__ */ jsx9("span", { children: item.label }),
|
|
561
|
+
item.badge ? /* @__PURE__ */ jsx9("span", { className: "ph-settings-nav__badge", children: item.badge }) : null
|
|
1097
562
|
]
|
|
1098
563
|
},
|
|
1099
564
|
item.id
|
|
@@ -1118,252 +583,34 @@ function SettingsLayout(_a) {
|
|
|
1118
583
|
"children",
|
|
1119
584
|
"className"
|
|
1120
585
|
]);
|
|
1121
|
-
return /* @__PURE__ */
|
|
1122
|
-
/* @__PURE__ */
|
|
1123
|
-
/* @__PURE__ */
|
|
1124
|
-
/* @__PURE__ */
|
|
1125
|
-
description ? /* @__PURE__ */
|
|
586
|
+
return /* @__PURE__ */ jsxs8("section", __spreadProps(__spreadValues({ className: cn("ph-settings-layout", className) }, props), { children: [
|
|
587
|
+
/* @__PURE__ */ jsxs8("header", { className: "ph-settings-layout__header", children: [
|
|
588
|
+
/* @__PURE__ */ jsxs8("div", { children: [
|
|
589
|
+
/* @__PURE__ */ jsx9("h2", { children: title }),
|
|
590
|
+
description ? /* @__PURE__ */ jsx9("p", { children: description }) : null
|
|
1126
591
|
] }),
|
|
1127
|
-
actions ? /* @__PURE__ */
|
|
592
|
+
actions ? /* @__PURE__ */ jsx9("div", { className: "ph-settings-layout__actions", children: actions }) : null
|
|
1128
593
|
] }),
|
|
1129
|
-
/* @__PURE__ */
|
|
1130
|
-
/* @__PURE__ */
|
|
1131
|
-
/* @__PURE__ */
|
|
594
|
+
/* @__PURE__ */ jsxs8("details", { className: "ph-settings-layout__mobile-nav", children: [
|
|
595
|
+
/* @__PURE__ */ jsxs8("summary", { children: [
|
|
596
|
+
/* @__PURE__ */ jsx9(IconTuning, { className: "h-4 w-4", "aria-hidden": true }),
|
|
1132
597
|
"Settings menu"
|
|
1133
598
|
] }),
|
|
1134
|
-
/* @__PURE__ */
|
|
599
|
+
/* @__PURE__ */ jsx9("nav", { "aria-label": navigationLabel, children: navigation })
|
|
1135
600
|
] }),
|
|
1136
|
-
/* @__PURE__ */
|
|
1137
|
-
/* @__PURE__ */
|
|
1138
|
-
/* @__PURE__ */
|
|
601
|
+
/* @__PURE__ */ jsxs8("div", { className: "ph-settings-layout__grid", children: [
|
|
602
|
+
/* @__PURE__ */ jsx9("aside", { className: "ph-settings-layout__sidebar", children: /* @__PURE__ */ jsx9("nav", { "aria-label": navigationLabel, children: navigation }) }),
|
|
603
|
+
/* @__PURE__ */ jsx9("div", { className: "ph-settings-layout__content", children })
|
|
1139
604
|
] })
|
|
1140
605
|
] }));
|
|
1141
606
|
}
|
|
1142
607
|
|
|
1143
|
-
// src/components/ui/DropdownMenu.tsx
|
|
1144
|
-
import * as DropdownPrimitive from "@radix-ui/react-dropdown-menu";
|
|
1145
|
-
import { jsx as jsx14, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1146
|
-
var sizeClass2 = {
|
|
1147
|
-
xs: "ph-btn-xs",
|
|
1148
|
-
sm: "ph-btn-sm",
|
|
1149
|
-
md: "",
|
|
1150
|
-
lg: "ph-btn-lg"
|
|
1151
|
-
};
|
|
1152
|
-
var variantClass2 = {
|
|
1153
|
-
primary: "ph-btn-primary",
|
|
1154
|
-
secondary: "ph-btn-secondary",
|
|
1155
|
-
accent: "ph-btn-accent"
|
|
1156
|
-
};
|
|
1157
|
-
function DropdownContent({
|
|
1158
|
-
children,
|
|
1159
|
-
align = "start",
|
|
1160
|
-
side = "bottom",
|
|
1161
|
-
sideOffset = 7,
|
|
1162
|
-
alignOffset = 0,
|
|
1163
|
-
collisionPadding = 8,
|
|
1164
|
-
avoidCollisions = true,
|
|
1165
|
-
panelClassName
|
|
1166
|
-
}) {
|
|
1167
|
-
return /* @__PURE__ */ jsx14(DropdownPrimitive.Portal, { children: /* @__PURE__ */ jsxs11(
|
|
1168
|
-
DropdownPrimitive.Content,
|
|
1169
|
-
{
|
|
1170
|
-
className: cn("ph-dropdown-panel", panelClassName),
|
|
1171
|
-
align,
|
|
1172
|
-
side,
|
|
1173
|
-
sideOffset,
|
|
1174
|
-
alignOffset,
|
|
1175
|
-
collisionPadding,
|
|
1176
|
-
avoidCollisions,
|
|
1177
|
-
sticky: "partial",
|
|
1178
|
-
children: [
|
|
1179
|
-
children,
|
|
1180
|
-
/* @__PURE__ */ jsx14(DropdownPrimitive.Arrow, { className: "ph-dropdown-arrow", width: 12, height: 6 })
|
|
1181
|
-
]
|
|
1182
|
-
}
|
|
1183
|
-
) });
|
|
1184
|
-
}
|
|
1185
|
-
function DropdownMenu(_a) {
|
|
1186
|
-
var _b = _a, {
|
|
1187
|
-
trigger,
|
|
1188
|
-
children,
|
|
1189
|
-
align,
|
|
1190
|
-
side,
|
|
1191
|
-
sideOffset,
|
|
1192
|
-
alignOffset,
|
|
1193
|
-
collisionPadding,
|
|
1194
|
-
avoidCollisions,
|
|
1195
|
-
className,
|
|
1196
|
-
panelClassName,
|
|
1197
|
-
"aria-label": ariaLabel,
|
|
1198
|
-
open,
|
|
1199
|
-
defaultOpen,
|
|
1200
|
-
onOpenChange,
|
|
1201
|
-
modal = false,
|
|
1202
|
-
disabled
|
|
1203
|
-
} = _b, props = __objRest(_b, [
|
|
1204
|
-
"trigger",
|
|
1205
|
-
"children",
|
|
1206
|
-
"align",
|
|
1207
|
-
"side",
|
|
1208
|
-
"sideOffset",
|
|
1209
|
-
"alignOffset",
|
|
1210
|
-
"collisionPadding",
|
|
1211
|
-
"avoidCollisions",
|
|
1212
|
-
"className",
|
|
1213
|
-
"panelClassName",
|
|
1214
|
-
"aria-label",
|
|
1215
|
-
"open",
|
|
1216
|
-
"defaultOpen",
|
|
1217
|
-
"onOpenChange",
|
|
1218
|
-
"modal",
|
|
1219
|
-
"disabled"
|
|
1220
|
-
]);
|
|
1221
|
-
return /* @__PURE__ */ jsx14("div", __spreadProps(__spreadValues({ className: cn("ph-dropdown", className) }, props), { children: /* @__PURE__ */ jsxs11(
|
|
1222
|
-
DropdownPrimitive.Root,
|
|
1223
|
-
{
|
|
1224
|
-
open,
|
|
1225
|
-
defaultOpen,
|
|
1226
|
-
onOpenChange,
|
|
1227
|
-
modal,
|
|
1228
|
-
children: [
|
|
1229
|
-
/* @__PURE__ */ jsx14(DropdownPrimitive.Trigger, { asChild: true, disabled, children: /* @__PURE__ */ jsx14("button", { type: "button", className: "ph-dropdown-trigger", "aria-label": ariaLabel, children: trigger }) }),
|
|
1230
|
-
/* @__PURE__ */ jsx14(
|
|
1231
|
-
DropdownContent,
|
|
1232
|
-
{
|
|
1233
|
-
align,
|
|
1234
|
-
side,
|
|
1235
|
-
sideOffset,
|
|
1236
|
-
alignOffset,
|
|
1237
|
-
collisionPadding,
|
|
1238
|
-
avoidCollisions,
|
|
1239
|
-
panelClassName,
|
|
1240
|
-
children
|
|
1241
|
-
}
|
|
1242
|
-
)
|
|
1243
|
-
]
|
|
1244
|
-
}
|
|
1245
|
-
) }));
|
|
1246
|
-
}
|
|
1247
|
-
function DropdownButton(_a) {
|
|
1248
|
-
var _b = _a, {
|
|
1249
|
-
label,
|
|
1250
|
-
variant = "secondary",
|
|
1251
|
-
outline = false,
|
|
1252
|
-
size = "md",
|
|
1253
|
-
split = false,
|
|
1254
|
-
icon,
|
|
1255
|
-
sideIcon,
|
|
1256
|
-
children,
|
|
1257
|
-
align,
|
|
1258
|
-
side,
|
|
1259
|
-
sideOffset,
|
|
1260
|
-
alignOffset,
|
|
1261
|
-
collisionPadding,
|
|
1262
|
-
avoidCollisions,
|
|
1263
|
-
className,
|
|
1264
|
-
panelClassName,
|
|
1265
|
-
"aria-label": ariaLabel,
|
|
1266
|
-
open,
|
|
1267
|
-
defaultOpen,
|
|
1268
|
-
onOpenChange,
|
|
1269
|
-
modal = false,
|
|
1270
|
-
disabled
|
|
1271
|
-
} = _b, props = __objRest(_b, [
|
|
1272
|
-
"label",
|
|
1273
|
-
"variant",
|
|
1274
|
-
"outline",
|
|
1275
|
-
"size",
|
|
1276
|
-
"split",
|
|
1277
|
-
"icon",
|
|
1278
|
-
"sideIcon",
|
|
1279
|
-
"children",
|
|
1280
|
-
"align",
|
|
1281
|
-
"side",
|
|
1282
|
-
"sideOffset",
|
|
1283
|
-
"alignOffset",
|
|
1284
|
-
"collisionPadding",
|
|
1285
|
-
"avoidCollisions",
|
|
1286
|
-
"className",
|
|
1287
|
-
"panelClassName",
|
|
1288
|
-
"aria-label",
|
|
1289
|
-
"open",
|
|
1290
|
-
"defaultOpen",
|
|
1291
|
-
"onOpenChange",
|
|
1292
|
-
"modal",
|
|
1293
|
-
"disabled"
|
|
1294
|
-
]);
|
|
1295
|
-
const trailing = sideIcon != null ? sideIcon : /* @__PURE__ */ jsx14(IconChevronDown, { className: "h-4 w-4", "aria-hidden": true });
|
|
1296
|
-
return /* @__PURE__ */ jsx14("div", __spreadProps(__spreadValues({ className: cn("ph-dropdown", className) }, props), { children: /* @__PURE__ */ jsxs11(
|
|
1297
|
-
DropdownPrimitive.Root,
|
|
1298
|
-
{
|
|
1299
|
-
open,
|
|
1300
|
-
defaultOpen,
|
|
1301
|
-
onOpenChange,
|
|
1302
|
-
modal,
|
|
1303
|
-
children: [
|
|
1304
|
-
/* @__PURE__ */ jsx14(DropdownPrimitive.Trigger, { asChild: true, disabled, children: /* @__PURE__ */ jsx14(
|
|
1305
|
-
"button",
|
|
1306
|
-
{
|
|
1307
|
-
type: "button",
|
|
1308
|
-
disabled,
|
|
1309
|
-
className: cn(
|
|
1310
|
-
"ph-btn ph-btn-raised ph-dropdown-button",
|
|
1311
|
-
variantClass2[variant],
|
|
1312
|
-
outline && "ph-btn-outline",
|
|
1313
|
-
sizeClass2[size],
|
|
1314
|
-
split && "ph-btn-split"
|
|
1315
|
-
),
|
|
1316
|
-
"aria-label": ariaLabel,
|
|
1317
|
-
children: /* @__PURE__ */ jsx14(ButtonChrome, { label, icon, sideIcon: trailing, split })
|
|
1318
|
-
}
|
|
1319
|
-
) }),
|
|
1320
|
-
/* @__PURE__ */ jsx14(
|
|
1321
|
-
DropdownContent,
|
|
1322
|
-
{
|
|
1323
|
-
align,
|
|
1324
|
-
side,
|
|
1325
|
-
sideOffset,
|
|
1326
|
-
alignOffset,
|
|
1327
|
-
collisionPadding,
|
|
1328
|
-
avoidCollisions,
|
|
1329
|
-
panelClassName,
|
|
1330
|
-
children
|
|
1331
|
-
}
|
|
1332
|
-
)
|
|
1333
|
-
]
|
|
1334
|
-
}
|
|
1335
|
-
) }));
|
|
1336
|
-
}
|
|
1337
|
-
function DropdownItem(_a) {
|
|
1338
|
-
var _b = _a, { className, children, disabled } = _b, props = __objRest(_b, ["className", "children", "disabled"]);
|
|
1339
|
-
return /* @__PURE__ */ jsx14(DropdownPrimitive.Item, { asChild: true, disabled, children: /* @__PURE__ */ jsx14(
|
|
1340
|
-
"button",
|
|
1341
|
-
__spreadProps(__spreadValues({
|
|
1342
|
-
type: "button",
|
|
1343
|
-
disabled,
|
|
1344
|
-
className: cn("ph-dropdown-item w-full text-left", className)
|
|
1345
|
-
}, props), {
|
|
1346
|
-
children
|
|
1347
|
-
})
|
|
1348
|
-
) });
|
|
1349
|
-
}
|
|
1350
|
-
function DropdownRadioGroup(props) {
|
|
1351
|
-
return /* @__PURE__ */ jsx14(DropdownPrimitive.RadioGroup, __spreadValues({}, props));
|
|
1352
|
-
}
|
|
1353
|
-
function DropdownRadioItem(_a) {
|
|
1354
|
-
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
1355
|
-
return /* @__PURE__ */ jsxs11(DropdownPrimitive.RadioItem, __spreadProps(__spreadValues({ className: cn("ph-dropdown-item ph-dropdown-radio-item", className) }, props), { children: [
|
|
1356
|
-
/* @__PURE__ */ jsx14("span", { className: "ph-dropdown-item-indicator", "aria-hidden": true, children: /* @__PURE__ */ jsx14(DropdownPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx14(IconCheck, { className: "h-3.5 w-3.5" }) }) }),
|
|
1357
|
-
/* @__PURE__ */ jsx14("span", { children })
|
|
1358
|
-
] }));
|
|
1359
|
-
}
|
|
1360
|
-
|
|
1361
608
|
// src/components/ui/Input.tsx
|
|
1362
|
-
import { forwardRef as
|
|
609
|
+
import { forwardRef as forwardRef5, useId as useId3 } from "react";
|
|
1363
610
|
|
|
1364
611
|
// src/components/ui/FormField.tsx
|
|
1365
612
|
import { useId as useId2 } from "react";
|
|
1366
|
-
import { jsx as
|
|
613
|
+
import { jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1367
614
|
function FormField(_a) {
|
|
1368
615
|
var _b = _a, {
|
|
1369
616
|
controlId,
|
|
@@ -1396,26 +643,26 @@ function FormField(_a) {
|
|
|
1396
643
|
"aria-errormessage": errorId,
|
|
1397
644
|
"aria-invalid": error ? true : void 0
|
|
1398
645
|
};
|
|
1399
|
-
return /* @__PURE__ */
|
|
1400
|
-
label ? /* @__PURE__ */
|
|
646
|
+
return /* @__PURE__ */ jsxs9("div", __spreadProps(__spreadValues({ className: cn("ph-field", className) }, props), { children: [
|
|
647
|
+
label ? /* @__PURE__ */ jsxs9(
|
|
1401
648
|
"label",
|
|
1402
649
|
{
|
|
1403
650
|
htmlFor: id,
|
|
1404
651
|
className: cn("ph-label", hideLabel && "sr-only", disabled && "opacity-50"),
|
|
1405
652
|
children: [
|
|
1406
653
|
label,
|
|
1407
|
-
required ? /* @__PURE__ */
|
|
654
|
+
required ? /* @__PURE__ */ jsx10("span", { "aria-hidden": "true", children: " *" }) : null
|
|
1408
655
|
]
|
|
1409
656
|
}
|
|
1410
657
|
) : null,
|
|
1411
658
|
typeof children === "function" ? children(controlProps) : children,
|
|
1412
|
-
descriptionId ? /* @__PURE__ */
|
|
1413
|
-
errorId ? /* @__PURE__ */
|
|
659
|
+
descriptionId ? /* @__PURE__ */ jsx10("p", { id: descriptionId, className: "mt-1 text-xs text-ph-subtle", children: helperText }) : null,
|
|
660
|
+
errorId ? /* @__PURE__ */ jsx10("p", { id: errorId, className: "mt-1 text-xs font-medium text-ph-danger", children: error }) : null
|
|
1414
661
|
] }));
|
|
1415
662
|
}
|
|
1416
663
|
|
|
1417
664
|
// src/components/ui/Input.tsx
|
|
1418
|
-
import { jsx as
|
|
665
|
+
import { jsx as jsx11, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
1419
666
|
var sizeMap3 = {
|
|
1420
667
|
sm: "ph-input-sm",
|
|
1421
668
|
md: "",
|
|
@@ -1425,7 +672,7 @@ function joinIds(...ids) {
|
|
|
1425
672
|
const value = ids.filter(Boolean).join(" ");
|
|
1426
673
|
return value || void 0;
|
|
1427
674
|
}
|
|
1428
|
-
var Input =
|
|
675
|
+
var Input = forwardRef5(function Input2(_a, ref) {
|
|
1429
676
|
var _b = _a, {
|
|
1430
677
|
id: idProp,
|
|
1431
678
|
label,
|
|
@@ -1456,7 +703,7 @@ var Input = forwardRef8(function Input2(_a, ref) {
|
|
|
1456
703
|
const autoId = useId3();
|
|
1457
704
|
const id = idProp != null ? idProp : autoId;
|
|
1458
705
|
const hasError = Boolean(error);
|
|
1459
|
-
return /* @__PURE__ */
|
|
706
|
+
return /* @__PURE__ */ jsx11(
|
|
1460
707
|
FormField,
|
|
1461
708
|
{
|
|
1462
709
|
controlId: id,
|
|
@@ -1467,7 +714,7 @@ var Input = forwardRef8(function Input2(_a, ref) {
|
|
|
1467
714
|
required,
|
|
1468
715
|
disabled,
|
|
1469
716
|
className: wrapperClassName,
|
|
1470
|
-
children: (fieldProps) => /* @__PURE__ */
|
|
717
|
+
children: (fieldProps) => /* @__PURE__ */ jsx11(
|
|
1471
718
|
"input",
|
|
1472
719
|
__spreadValues(__spreadProps(__spreadValues({}, fieldProps), {
|
|
1473
720
|
ref,
|
|
@@ -1488,7 +735,7 @@ var Input = forwardRef8(function Input2(_a, ref) {
|
|
|
1488
735
|
);
|
|
1489
736
|
});
|
|
1490
737
|
Input.displayName = "Input";
|
|
1491
|
-
var Select =
|
|
738
|
+
var Select = forwardRef5(function Select2(_a, ref) {
|
|
1492
739
|
var _b = _a, {
|
|
1493
740
|
id: idProp,
|
|
1494
741
|
label,
|
|
@@ -1519,7 +766,7 @@ var Select = forwardRef8(function Select2(_a, ref) {
|
|
|
1519
766
|
const autoId = useId3();
|
|
1520
767
|
const id = idProp != null ? idProp : autoId;
|
|
1521
768
|
const hasError = Boolean(error);
|
|
1522
|
-
return /* @__PURE__ */
|
|
769
|
+
return /* @__PURE__ */ jsx11(FormField, { controlId: id, label, hideLabel, helperText, error, required, disabled, className: wrapperClassName, children: (fieldProps) => /* @__PURE__ */ jsx11(
|
|
1523
770
|
"select",
|
|
1524
771
|
__spreadProps(__spreadValues(__spreadProps(__spreadValues({}, fieldProps), {
|
|
1525
772
|
ref,
|
|
@@ -1539,7 +786,7 @@ var Select = forwardRef8(function Select2(_a, ref) {
|
|
|
1539
786
|
) });
|
|
1540
787
|
});
|
|
1541
788
|
Select.displayName = "Select";
|
|
1542
|
-
var Textarea =
|
|
789
|
+
var Textarea = forwardRef5(function Textarea2(_a, ref) {
|
|
1543
790
|
var _b = _a, {
|
|
1544
791
|
id: idProp,
|
|
1545
792
|
label,
|
|
@@ -1568,7 +815,7 @@ var Textarea = forwardRef8(function Textarea2(_a, ref) {
|
|
|
1568
815
|
const autoId = useId3();
|
|
1569
816
|
const id = idProp != null ? idProp : autoId;
|
|
1570
817
|
const hasError = Boolean(error);
|
|
1571
|
-
return /* @__PURE__ */
|
|
818
|
+
return /* @__PURE__ */ jsx11(FormField, { controlId: id, label, hideLabel, helperText, error, required, disabled, className: wrapperClassName, children: (fieldProps) => /* @__PURE__ */ jsx11(
|
|
1572
819
|
"textarea",
|
|
1573
820
|
__spreadValues(__spreadProps(__spreadValues({}, fieldProps), {
|
|
1574
821
|
ref,
|
|
@@ -1586,7 +833,7 @@ var Textarea = forwardRef8(function Textarea2(_a, ref) {
|
|
|
1586
833
|
) });
|
|
1587
834
|
});
|
|
1588
835
|
Textarea.displayName = "Textarea";
|
|
1589
|
-
var Checkbox =
|
|
836
|
+
var Checkbox = forwardRef5(function Checkbox2(_a, ref) {
|
|
1590
837
|
var _b = _a, {
|
|
1591
838
|
id: idProp,
|
|
1592
839
|
label,
|
|
@@ -1611,9 +858,9 @@ var Checkbox = forwardRef8(function Checkbox2(_a, ref) {
|
|
|
1611
858
|
const hasError = Boolean(error);
|
|
1612
859
|
const descriptionId = helperText && !hasError ? `${id}-description` : void 0;
|
|
1613
860
|
const errorId = error ? `${id}-error` : void 0;
|
|
1614
|
-
return /* @__PURE__ */
|
|
1615
|
-
/* @__PURE__ */
|
|
1616
|
-
/* @__PURE__ */
|
|
861
|
+
return /* @__PURE__ */ jsxs10("div", { className: cn("ph-control-row", wrapperClassName), children: [
|
|
862
|
+
/* @__PURE__ */ jsxs10("span", { className: "ph-checkbox-wrap", children: [
|
|
863
|
+
/* @__PURE__ */ jsx11(
|
|
1617
864
|
"input",
|
|
1618
865
|
__spreadValues({
|
|
1619
866
|
ref,
|
|
@@ -1631,17 +878,17 @@ var Checkbox = forwardRef8(function Checkbox2(_a, ref) {
|
|
|
1631
878
|
)
|
|
1632
879
|
}, props)
|
|
1633
880
|
),
|
|
1634
|
-
/* @__PURE__ */
|
|
881
|
+
/* @__PURE__ */ jsx11(IconCheck, { className: "ph-checkbox-icon", "aria-hidden": true })
|
|
1635
882
|
] }),
|
|
1636
|
-
/* @__PURE__ */
|
|
1637
|
-
/* @__PURE__ */
|
|
1638
|
-
descriptionId ? /* @__PURE__ */
|
|
1639
|
-
errorId ? /* @__PURE__ */
|
|
883
|
+
/* @__PURE__ */ jsxs10("div", { className: "ph-control-copy", children: [
|
|
884
|
+
/* @__PURE__ */ jsx11("label", { htmlFor: id, className: cn("cursor-pointer", disabled && "opacity-60"), children: label }),
|
|
885
|
+
descriptionId ? /* @__PURE__ */ jsx11("p", { id: descriptionId, className: "text-xs text-ph-subtle", children: helperText }) : null,
|
|
886
|
+
errorId ? /* @__PURE__ */ jsx11("p", { id: errorId, className: "text-xs font-medium text-ph-danger", children: error }) : null
|
|
1640
887
|
] })
|
|
1641
888
|
] });
|
|
1642
889
|
});
|
|
1643
890
|
Checkbox.displayName = "Checkbox";
|
|
1644
|
-
var Radio =
|
|
891
|
+
var Radio = forwardRef5(function Radio2(_a, ref) {
|
|
1645
892
|
var _b = _a, {
|
|
1646
893
|
id: idProp,
|
|
1647
894
|
label,
|
|
@@ -1657,8 +904,8 @@ var Radio = forwardRef8(function Radio2(_a, ref) {
|
|
|
1657
904
|
]);
|
|
1658
905
|
const autoId = useId3();
|
|
1659
906
|
const id = idProp != null ? idProp : autoId;
|
|
1660
|
-
return /* @__PURE__ */
|
|
1661
|
-
/* @__PURE__ */
|
|
907
|
+
return /* @__PURE__ */ jsxs10("div", { className: cn("ph-control-row", wrapperClassName, disabled && "opacity-60"), children: [
|
|
908
|
+
/* @__PURE__ */ jsx11(
|
|
1662
909
|
"input",
|
|
1663
910
|
__spreadValues({
|
|
1664
911
|
ref,
|
|
@@ -1668,11 +915,11 @@ var Radio = forwardRef8(function Radio2(_a, ref) {
|
|
|
1668
915
|
className: cn("ph-radio", disabled && "cursor-not-allowed", className)
|
|
1669
916
|
}, props)
|
|
1670
917
|
),
|
|
1671
|
-
/* @__PURE__ */
|
|
918
|
+
/* @__PURE__ */ jsx11("label", { htmlFor: id, className: cn("cursor-pointer", disabled && "opacity-60"), children: label })
|
|
1672
919
|
] });
|
|
1673
920
|
});
|
|
1674
921
|
Radio.displayName = "Radio";
|
|
1675
|
-
var Toggle =
|
|
922
|
+
var Toggle = forwardRef5(function Toggle2(_a, ref) {
|
|
1676
923
|
var _b = _a, {
|
|
1677
924
|
id: idProp,
|
|
1678
925
|
label,
|
|
@@ -1688,9 +935,9 @@ var Toggle = forwardRef8(function Toggle2(_a, ref) {
|
|
|
1688
935
|
]);
|
|
1689
936
|
const autoId = useId3();
|
|
1690
937
|
const id = idProp != null ? idProp : autoId;
|
|
1691
|
-
return /* @__PURE__ */
|
|
1692
|
-
/* @__PURE__ */
|
|
1693
|
-
/* @__PURE__ */
|
|
938
|
+
return /* @__PURE__ */ jsxs10("label", { className: cn("ph-control-row-between", wrapperClassName, disabled && "opacity-60"), children: [
|
|
939
|
+
/* @__PURE__ */ jsx11("span", { className: disabled ? "opacity-60" : void 0, children: label }),
|
|
940
|
+
/* @__PURE__ */ jsx11(
|
|
1694
941
|
"input",
|
|
1695
942
|
__spreadValues({
|
|
1696
943
|
ref,
|
|
@@ -1704,7 +951,7 @@ var Toggle = forwardRef8(function Toggle2(_a, ref) {
|
|
|
1704
951
|
] });
|
|
1705
952
|
});
|
|
1706
953
|
Toggle.displayName = "Toggle";
|
|
1707
|
-
var Range =
|
|
954
|
+
var Range = forwardRef5(function Range2(_a, ref) {
|
|
1708
955
|
var _b = _a, {
|
|
1709
956
|
id: idProp,
|
|
1710
957
|
label,
|
|
@@ -1724,18 +971,18 @@ var Range = forwardRef8(function Range2(_a, ref) {
|
|
|
1724
971
|
]);
|
|
1725
972
|
const autoId = useId3();
|
|
1726
973
|
const id = idProp != null ? idProp : autoId;
|
|
1727
|
-
return /* @__PURE__ */
|
|
1728
|
-
label && /* @__PURE__ */
|
|
1729
|
-
/* @__PURE__ */
|
|
1730
|
-
(minLabel || valueLabel || maxLabel) && /* @__PURE__ */
|
|
1731
|
-
/* @__PURE__ */
|
|
1732
|
-
/* @__PURE__ */
|
|
1733
|
-
/* @__PURE__ */
|
|
974
|
+
return /* @__PURE__ */ jsxs10("div", { className: cn("ph-field", wrapperClassName), children: [
|
|
975
|
+
label && /* @__PURE__ */ jsx11("label", { htmlFor: id, className: "ph-label", children: label }),
|
|
976
|
+
/* @__PURE__ */ jsx11("input", __spreadValues({ ref, id, type: "range", className: cn("ph-range", className) }, props)),
|
|
977
|
+
(minLabel || valueLabel || maxLabel) && /* @__PURE__ */ jsxs10("div", { className: "flex justify-between text-xs text-ph-mutedtext", children: [
|
|
978
|
+
/* @__PURE__ */ jsx11("span", { children: minLabel }),
|
|
979
|
+
/* @__PURE__ */ jsx11("span", { children: valueLabel }),
|
|
980
|
+
/* @__PURE__ */ jsx11("span", { children: maxLabel })
|
|
1734
981
|
] })
|
|
1735
982
|
] });
|
|
1736
983
|
});
|
|
1737
984
|
Range.displayName = "Range";
|
|
1738
|
-
var FileUpload =
|
|
985
|
+
var FileUpload = forwardRef5(function FileUpload2(_a, ref) {
|
|
1739
986
|
var _b = _a, {
|
|
1740
987
|
id: idProp,
|
|
1741
988
|
label,
|
|
@@ -1751,10 +998,10 @@ var FileUpload = forwardRef8(function FileUpload2(_a, ref) {
|
|
|
1751
998
|
]);
|
|
1752
999
|
const autoId = useId3();
|
|
1753
1000
|
const id = idProp != null ? idProp : autoId;
|
|
1754
|
-
return /* @__PURE__ */
|
|
1755
|
-
label && /* @__PURE__ */
|
|
1756
|
-
/* @__PURE__ */
|
|
1757
|
-
/* @__PURE__ */
|
|
1001
|
+
return /* @__PURE__ */ jsxs10("div", { className: cn("ph-field", wrapperClassName), children: [
|
|
1002
|
+
label && /* @__PURE__ */ jsx11("label", { htmlFor: id, className: "ph-label", children: label }),
|
|
1003
|
+
/* @__PURE__ */ jsxs10("label", { htmlFor: id, className: "ph-file-upload", children: [
|
|
1004
|
+
/* @__PURE__ */ jsx11("input", __spreadValues({ ref, id, type: "file", className: cn("sr-only", className) }, props)),
|
|
1758
1005
|
prompt
|
|
1759
1006
|
] })
|
|
1760
1007
|
] });
|
|
@@ -1764,7 +1011,7 @@ FileUpload.displayName = "FileUpload";
|
|
|
1764
1011
|
// src/components/ui/Modal.tsx
|
|
1765
1012
|
import * as Dialog from "@radix-ui/react-dialog";
|
|
1766
1013
|
import { useRef } from "react";
|
|
1767
|
-
import { jsx as
|
|
1014
|
+
import { jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1768
1015
|
var sizeMap4 = {
|
|
1769
1016
|
sm: "max-w-sm",
|
|
1770
1017
|
md: "max-w-lg",
|
|
@@ -1788,16 +1035,16 @@ function Modal({
|
|
|
1788
1035
|
}) {
|
|
1789
1036
|
const canDismiss = Boolean(onClose);
|
|
1790
1037
|
const restoreFocusRef = useRef(null);
|
|
1791
|
-
return /* @__PURE__ */
|
|
1038
|
+
return /* @__PURE__ */ jsx12(
|
|
1792
1039
|
Dialog.Root,
|
|
1793
1040
|
{
|
|
1794
1041
|
open,
|
|
1795
1042
|
onOpenChange: (nextOpen) => {
|
|
1796
1043
|
if (!nextOpen) onClose == null ? void 0 : onClose();
|
|
1797
1044
|
},
|
|
1798
|
-
children: /* @__PURE__ */
|
|
1799
|
-
/* @__PURE__ */
|
|
1800
|
-
/* @__PURE__ */
|
|
1045
|
+
children: /* @__PURE__ */ jsxs11(Dialog.Portal, { children: [
|
|
1046
|
+
/* @__PURE__ */ jsx12(Dialog.Overlay, { className: "ph-modal-overlay" }),
|
|
1047
|
+
/* @__PURE__ */ jsxs11(
|
|
1801
1048
|
Dialog.Content,
|
|
1802
1049
|
__spreadProps(__spreadValues({
|
|
1803
1050
|
className: cn("ph-modal-panel", sizeMap4[size], className),
|
|
@@ -1818,16 +1065,16 @@ function Modal({
|
|
|
1818
1065
|
if (!canDismiss || !closeOnOutsideClick) event.preventDefault();
|
|
1819
1066
|
},
|
|
1820
1067
|
children: [
|
|
1821
|
-
title ? null : /* @__PURE__ */
|
|
1822
|
-
title || description || showCloseButton && canDismiss ? /* @__PURE__ */
|
|
1823
|
-
/* @__PURE__ */
|
|
1824
|
-
title ? /* @__PURE__ */
|
|
1825
|
-
description ? /* @__PURE__ */
|
|
1068
|
+
title ? null : /* @__PURE__ */ jsx12(Dialog.Title, { className: "sr-only", children: ariaLabel != null ? ariaLabel : "Dialog" }),
|
|
1069
|
+
title || description || showCloseButton && canDismiss ? /* @__PURE__ */ jsxs11("header", { className: "ph-modal-header", children: [
|
|
1070
|
+
/* @__PURE__ */ jsxs11("div", { className: "min-w-0", children: [
|
|
1071
|
+
title ? /* @__PURE__ */ jsx12(Dialog.Title, { className: "text-lg font-bold text-ph-ink", children: title }) : null,
|
|
1072
|
+
description ? /* @__PURE__ */ jsx12(Dialog.Description, { className: "mt-1 text-sm text-ph-subtle", children: description }) : null
|
|
1826
1073
|
] }),
|
|
1827
|
-
showCloseButton && canDismiss ? /* @__PURE__ */
|
|
1074
|
+
showCloseButton && canDismiss ? /* @__PURE__ */ jsx12(Dialog.Close, { asChild: true, children: /* @__PURE__ */ jsx12("button", { type: "button", className: "ph-modal-close", "aria-label": "Close dialog", children: /* @__PURE__ */ jsx12(IconClose, { className: "h-5 w-5", "aria-hidden": true }) }) }) : null
|
|
1828
1075
|
] }) : null,
|
|
1829
|
-
/* @__PURE__ */
|
|
1830
|
-
footer ? /* @__PURE__ */
|
|
1076
|
+
/* @__PURE__ */ jsx12("div", { className: "ph-modal-body", children }),
|
|
1077
|
+
footer ? /* @__PURE__ */ jsx12("div", { className: "ph-modal-footer", children: footer }) : null
|
|
1831
1078
|
]
|
|
1832
1079
|
})
|
|
1833
1080
|
)
|
|
@@ -1837,11 +1084,11 @@ function Modal({
|
|
|
1837
1084
|
}
|
|
1838
1085
|
|
|
1839
1086
|
// src/components/ui/Navigation.tsx
|
|
1840
|
-
import { jsx as
|
|
1087
|
+
import { jsx as jsx13, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
1841
1088
|
function Breadcrumbs({ items, label = "Breadcrumb", className }) {
|
|
1842
|
-
return /* @__PURE__ */
|
|
1843
|
-
index > 0 ? /* @__PURE__ */
|
|
1844
|
-
item.current || !item.href ? /* @__PURE__ */
|
|
1089
|
+
return /* @__PURE__ */ jsx13("nav", { "aria-label": label, className: cn("ph-breadcrumbs", className), children: items.map((item, index) => /* @__PURE__ */ jsxs12("span", { className: "contents", children: [
|
|
1090
|
+
index > 0 ? /* @__PURE__ */ jsx13("span", { className: "ph-breadcrumb-sep", "aria-hidden": "true", children: "/" }) : null,
|
|
1091
|
+
item.current || !item.href ? /* @__PURE__ */ jsx13("span", { className: "ph-breadcrumb-current", "aria-current": item.current ? "page" : void 0, children: item.label }) : /* @__PURE__ */ jsx13("a", { href: item.href, className: "ph-breadcrumb-link", children: item.label })
|
|
1845
1092
|
] }, `${item.label}-${index}`)) });
|
|
1846
1093
|
}
|
|
1847
1094
|
function Pagination({
|
|
@@ -1854,8 +1101,8 @@ function Pagination({
|
|
|
1854
1101
|
}) {
|
|
1855
1102
|
const pages = compact ? [Math.max(1, page - 1), page, Math.min(totalPages, page + 1)] : [1, 2, 3, totalPages];
|
|
1856
1103
|
const uniquePages = Array.from(new Set(pages)).filter((n) => n >= 1 && n <= totalPages);
|
|
1857
|
-
return /* @__PURE__ */
|
|
1858
|
-
/* @__PURE__ */
|
|
1104
|
+
return /* @__PURE__ */ jsxs12("nav", { "aria-label": label, className: cn("ph-pagination", className), children: [
|
|
1105
|
+
/* @__PURE__ */ jsx13(
|
|
1859
1106
|
"button",
|
|
1860
1107
|
{
|
|
1861
1108
|
type: "button",
|
|
@@ -1863,12 +1110,12 @@ function Pagination({
|
|
|
1863
1110
|
disabled: page <= 1,
|
|
1864
1111
|
"aria-label": "Previous page",
|
|
1865
1112
|
onClick: () => onPageChange == null ? void 0 : onPageChange(page - 1),
|
|
1866
|
-
children: /* @__PURE__ */
|
|
1113
|
+
children: /* @__PURE__ */ jsx13(IconChevronLeft, { className: "mx-auto h-4 w-4", "aria-hidden": true })
|
|
1867
1114
|
}
|
|
1868
1115
|
),
|
|
1869
|
-
uniquePages.map((pageNumber, index) => /* @__PURE__ */
|
|
1870
|
-
!compact && index === uniquePages.length - 1 && pageNumber > 4 ? /* @__PURE__ */
|
|
1871
|
-
/* @__PURE__ */
|
|
1116
|
+
uniquePages.map((pageNumber, index) => /* @__PURE__ */ jsxs12("span", { className: "contents", children: [
|
|
1117
|
+
!compact && index === uniquePages.length - 1 && pageNumber > 4 ? /* @__PURE__ */ jsx13("span", { className: "ph-pagination-ellipsis", "aria-hidden": "true", children: "..." }) : null,
|
|
1118
|
+
/* @__PURE__ */ jsx13(
|
|
1872
1119
|
"button",
|
|
1873
1120
|
{
|
|
1874
1121
|
type: "button",
|
|
@@ -1879,7 +1126,7 @@ function Pagination({
|
|
|
1879
1126
|
}
|
|
1880
1127
|
)
|
|
1881
1128
|
] }, pageNumber)),
|
|
1882
|
-
/* @__PURE__ */
|
|
1129
|
+
/* @__PURE__ */ jsx13(
|
|
1883
1130
|
"button",
|
|
1884
1131
|
{
|
|
1885
1132
|
type: "button",
|
|
@@ -1887,25 +1134,25 @@ function Pagination({
|
|
|
1887
1134
|
disabled: page >= totalPages,
|
|
1888
1135
|
"aria-label": "Next page",
|
|
1889
1136
|
onClick: () => onPageChange == null ? void 0 : onPageChange(page + 1),
|
|
1890
|
-
children: /* @__PURE__ */
|
|
1137
|
+
children: /* @__PURE__ */ jsx13(IconChevronRight, { className: "mx-auto h-4 w-4", "aria-hidden": true })
|
|
1891
1138
|
}
|
|
1892
1139
|
)
|
|
1893
1140
|
] });
|
|
1894
1141
|
}
|
|
1895
1142
|
|
|
1896
1143
|
// src/components/ui/Panel.tsx
|
|
1897
|
-
import { jsx as
|
|
1144
|
+
import { jsx as jsx14, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1898
1145
|
function Panel(_a) {
|
|
1899
1146
|
var _b = _a, { title, description, children, className } = _b, props = __objRest(_b, ["title", "description", "children", "className"]);
|
|
1900
|
-
return /* @__PURE__ */
|
|
1901
|
-
title && /* @__PURE__ */
|
|
1902
|
-
description && /* @__PURE__ */
|
|
1147
|
+
return /* @__PURE__ */ jsxs13("div", __spreadProps(__spreadValues({ className: cn("ph-panel", className) }, props), { children: [
|
|
1148
|
+
title && /* @__PURE__ */ jsx14("h3", { className: "text-sm font-semibold uppercase tracking-wider text-ph-mutedtext", children: title }),
|
|
1149
|
+
description && /* @__PURE__ */ jsx14("p", { className: "text-sm text-ph-subtle", children: description }),
|
|
1903
1150
|
children
|
|
1904
1151
|
] }));
|
|
1905
1152
|
}
|
|
1906
1153
|
|
|
1907
1154
|
// src/components/ui/Rating.tsx
|
|
1908
|
-
import { jsx as
|
|
1155
|
+
import { jsx as jsx15, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1909
1156
|
function Rating(_a) {
|
|
1910
1157
|
var _b = _a, {
|
|
1911
1158
|
label,
|
|
@@ -1925,9 +1172,9 @@ function Rating(_a) {
|
|
|
1925
1172
|
"wrapperClassName"
|
|
1926
1173
|
]);
|
|
1927
1174
|
const stars = Array.from({ length: max }, (_, index) => index + 1);
|
|
1928
|
-
return /* @__PURE__ */
|
|
1929
|
-
label && /* @__PURE__ */
|
|
1930
|
-
/* @__PURE__ */
|
|
1175
|
+
return /* @__PURE__ */ jsxs14("div", { className: cn("ph-field", wrapperClassName), children: [
|
|
1176
|
+
label && /* @__PURE__ */ jsx15("span", { className: "ph-label", children: label }),
|
|
1177
|
+
/* @__PURE__ */ jsx15(
|
|
1931
1178
|
"div",
|
|
1932
1179
|
__spreadProps(__spreadValues({
|
|
1933
1180
|
className: cn("ph-rating flex", className),
|
|
@@ -1937,7 +1184,7 @@ function Rating(_a) {
|
|
|
1937
1184
|
children: stars.map((star) => {
|
|
1938
1185
|
const active = star <= value;
|
|
1939
1186
|
if (readOnly) {
|
|
1940
|
-
return /* @__PURE__ */
|
|
1187
|
+
return /* @__PURE__ */ jsx15(
|
|
1941
1188
|
IconStar,
|
|
1942
1189
|
{
|
|
1943
1190
|
className: cn("h-6 w-6", active ? "text-amber-500" : "text-ph-border"),
|
|
@@ -1946,7 +1193,7 @@ function Rating(_a) {
|
|
|
1946
1193
|
star
|
|
1947
1194
|
);
|
|
1948
1195
|
}
|
|
1949
|
-
return /* @__PURE__ */
|
|
1196
|
+
return /* @__PURE__ */ jsx15(
|
|
1950
1197
|
"button",
|
|
1951
1198
|
{
|
|
1952
1199
|
type: "button",
|
|
@@ -1955,7 +1202,7 @@ function Rating(_a) {
|
|
|
1955
1202
|
"aria-checked": active,
|
|
1956
1203
|
"aria-label": `${star} out of ${max}`,
|
|
1957
1204
|
onClick: () => onChange == null ? void 0 : onChange(star),
|
|
1958
|
-
children: /* @__PURE__ */
|
|
1205
|
+
children: /* @__PURE__ */ jsx15(IconStar, { className: cn("h-6 w-6", active ? "text-amber-500" : "text-ph-border") })
|
|
1959
1206
|
},
|
|
1960
1207
|
star
|
|
1961
1208
|
);
|
|
@@ -1967,7 +1214,7 @@ function Rating(_a) {
|
|
|
1967
1214
|
|
|
1968
1215
|
// src/components/ui/SearchInput.tsx
|
|
1969
1216
|
import { useId as useId4 } from "react";
|
|
1970
|
-
import { jsx as
|
|
1217
|
+
import { jsx as jsx16, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1971
1218
|
function SearchInput(_a) {
|
|
1972
1219
|
var _b = _a, {
|
|
1973
1220
|
id: idProp,
|
|
@@ -1990,10 +1237,10 @@ function SearchInput(_a) {
|
|
|
1990
1237
|
]);
|
|
1991
1238
|
const autoId = useId4();
|
|
1992
1239
|
const id = idProp != null ? idProp : autoId;
|
|
1993
|
-
return /* @__PURE__ */
|
|
1994
|
-
/* @__PURE__ */
|
|
1995
|
-
/* @__PURE__ */
|
|
1996
|
-
shortcut != null ? /* @__PURE__ */
|
|
1240
|
+
return /* @__PURE__ */ jsxs15("div", { className: cn("relative", wrapperClassName), children: [
|
|
1241
|
+
/* @__PURE__ */ jsx16("label", { htmlFor: id, className: hideLabel ? "sr-only" : "ph-label mb-1.5 block", children: label }),
|
|
1242
|
+
/* @__PURE__ */ jsxs15("div", { className: "relative", children: [
|
|
1243
|
+
shortcut != null ? /* @__PURE__ */ jsx16(
|
|
1997
1244
|
"span",
|
|
1998
1245
|
{
|
|
1999
1246
|
className: "ph-shortcut pointer-events-none absolute left-3 top-1/2 z-10 -translate-y-1/2 text-xs",
|
|
@@ -2001,7 +1248,7 @@ function SearchInput(_a) {
|
|
|
2001
1248
|
children: shortcut
|
|
2002
1249
|
}
|
|
2003
1250
|
) : null,
|
|
2004
|
-
/* @__PURE__ */
|
|
1251
|
+
/* @__PURE__ */ jsx16(
|
|
2005
1252
|
"input",
|
|
2006
1253
|
__spreadValues({
|
|
2007
1254
|
id,
|
|
@@ -2037,10 +1284,10 @@ function SearchGroup(_a) {
|
|
|
2037
1284
|
]);
|
|
2038
1285
|
const autoId = useId4();
|
|
2039
1286
|
const id = idProp != null ? idProp : autoId;
|
|
2040
|
-
return /* @__PURE__ */
|
|
2041
|
-
/* @__PURE__ */
|
|
2042
|
-
/* @__PURE__ */
|
|
2043
|
-
/* @__PURE__ */
|
|
1287
|
+
return /* @__PURE__ */ jsxs15("div", { className: cn("ph-field", wrapperClassName), children: [
|
|
1288
|
+
/* @__PURE__ */ jsx16("label", { htmlFor: id, className: "ph-label", children: label }),
|
|
1289
|
+
/* @__PURE__ */ jsxs15("div", { className: "ph-search-group flex w-full max-w-lg min-h-[2.3125rem] items-stretch divide-x divide-ph-border", children: [
|
|
1290
|
+
/* @__PURE__ */ jsx16(
|
|
2044
1291
|
"input",
|
|
2045
1292
|
__spreadValues({
|
|
2046
1293
|
id,
|
|
@@ -2049,12 +1296,12 @@ function SearchGroup(_a) {
|
|
|
2049
1296
|
className: cn("ph-input ph-input-group-field min-w-0 flex-1", className)
|
|
2050
1297
|
}, props)
|
|
2051
1298
|
),
|
|
2052
|
-
/* @__PURE__ */
|
|
1299
|
+
/* @__PURE__ */ jsx16(
|
|
2053
1300
|
Button,
|
|
2054
1301
|
{
|
|
2055
1302
|
type: "submit",
|
|
2056
1303
|
variant: "primary",
|
|
2057
|
-
icon: /* @__PURE__ */
|
|
1304
|
+
icon: /* @__PURE__ */ jsx16(IconSearch, { className: "h-4 w-4", "aria-hidden": true }),
|
|
2058
1305
|
className: "ph-search-group__submit",
|
|
2059
1306
|
"aria-label": submitLabel
|
|
2060
1307
|
}
|
|
@@ -2064,7 +1311,7 @@ function SearchGroup(_a) {
|
|
|
2064
1311
|
}
|
|
2065
1312
|
|
|
2066
1313
|
// src/components/ui/Table.tsx
|
|
2067
|
-
import { jsx as
|
|
1314
|
+
import { jsx as jsx17, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
2068
1315
|
function Table({
|
|
2069
1316
|
data,
|
|
2070
1317
|
columns,
|
|
@@ -2075,15 +1322,15 @@ function Table({
|
|
|
2075
1322
|
className,
|
|
2076
1323
|
caption
|
|
2077
1324
|
}) {
|
|
2078
|
-
return /* @__PURE__ */
|
|
2079
|
-
caption && /* @__PURE__ */
|
|
2080
|
-
/* @__PURE__ */
|
|
2081
|
-
/* @__PURE__ */
|
|
1325
|
+
return /* @__PURE__ */ jsx17("div", { className: cn("ph-table-wrap", compact && "ph-table-compact", className), children: /* @__PURE__ */ jsxs16("table", { className: cn("ph-table", zebra && "ph-table-zebra", ribbon && "ph-table--ribbon"), children: [
|
|
1326
|
+
caption && /* @__PURE__ */ jsx17("caption", { className: "sr-only", children: caption }),
|
|
1327
|
+
/* @__PURE__ */ jsx17("thead", { children: /* @__PURE__ */ jsx17("tr", { children: columns.map((col) => /* @__PURE__ */ jsx17("th", { className: col.className, children: col.header }, col.key)) }) }),
|
|
1328
|
+
/* @__PURE__ */ jsx17("tbody", { children: data.map((row, i) => /* @__PURE__ */ jsx17("tr", { style: getRowStyle == null ? void 0 : getRowStyle(row), children: columns.map((col) => /* @__PURE__ */ jsx17("td", { className: col.className, children: col.cell(row) }, col.key)) }, i)) })
|
|
2082
1329
|
] }) });
|
|
2083
1330
|
}
|
|
2084
1331
|
|
|
2085
1332
|
// src/components/ui/Stat.tsx
|
|
2086
|
-
import { jsx as
|
|
1333
|
+
import { jsx as jsx18, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
2087
1334
|
var toneMap = {
|
|
2088
1335
|
default: "text-ph-ink",
|
|
2089
1336
|
brand: "text-ph-brand",
|
|
@@ -2100,16 +1347,16 @@ var statMap = {
|
|
|
2100
1347
|
};
|
|
2101
1348
|
function Stat(_a) {
|
|
2102
1349
|
var _b = _a, { icon, label, value, footer, tone = "default", className } = _b, props = __objRest(_b, ["icon", "label", "value", "footer", "tone", "className"]);
|
|
2103
|
-
return /* @__PURE__ */
|
|
2104
|
-
icon && /* @__PURE__ */
|
|
2105
|
-
/* @__PURE__ */
|
|
2106
|
-
/* @__PURE__ */
|
|
2107
|
-
footer && /* @__PURE__ */
|
|
1350
|
+
return /* @__PURE__ */ jsxs17("article", __spreadProps(__spreadValues({ className: cn("ph-stat", statMap[tone], className) }, props), { children: [
|
|
1351
|
+
icon && /* @__PURE__ */ jsx18("div", { className: cn("mb-2 h-7 w-7", toneMap[tone]), children: icon }),
|
|
1352
|
+
/* @__PURE__ */ jsx18("div", { className: cn("ph-stat-label", tone === "warning" && toneMap[tone]), children: label }),
|
|
1353
|
+
/* @__PURE__ */ jsx18("div", { className: cn("ph-stat-val", toneMap[tone]), children: value }),
|
|
1354
|
+
footer && /* @__PURE__ */ jsx18("p", { className: "text-xs text-ph-subtle", children: footer })
|
|
2108
1355
|
] }));
|
|
2109
1356
|
}
|
|
2110
1357
|
|
|
2111
1358
|
// src/components/ui/Toast.tsx
|
|
2112
|
-
import { jsx as
|
|
1359
|
+
import { jsx as jsx19, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
2113
1360
|
var statusConfig2 = {
|
|
2114
1361
|
info: { icon: IconErrorOutline, color: "text-ph-info", bg: "ph-toast-info" },
|
|
2115
1362
|
success: { icon: IconCheckCircle, color: "text-ph-success", bg: "ph-toast-success" },
|
|
@@ -2125,33 +1372,33 @@ function Toast({
|
|
|
2125
1372
|
}) {
|
|
2126
1373
|
const config = statusConfig2[status];
|
|
2127
1374
|
const Icon = config.icon;
|
|
2128
|
-
return /* @__PURE__ */
|
|
2129
|
-
/* @__PURE__ */
|
|
2130
|
-
/* @__PURE__ */
|
|
2131
|
-
/* @__PURE__ */
|
|
2132
|
-
description && /* @__PURE__ */
|
|
1375
|
+
return /* @__PURE__ */ jsxs18("div", { className: cn("ph-toast", config.bg, className), children: [
|
|
1376
|
+
/* @__PURE__ */ jsx19(Icon, { className: cn("mt-0.5 h-5 w-5 shrink-0", config.color), "aria-hidden": true }),
|
|
1377
|
+
/* @__PURE__ */ jsxs18("div", { className: "pr-8", children: [
|
|
1378
|
+
/* @__PURE__ */ jsx19("div", { className: "font-semibold", children: title }),
|
|
1379
|
+
description && /* @__PURE__ */ jsx19("p", { className: "mt-1 text-xs text-ph-subtle", children: description })
|
|
2133
1380
|
] }),
|
|
2134
|
-
onDismiss && /* @__PURE__ */
|
|
1381
|
+
onDismiss && /* @__PURE__ */ jsx19(
|
|
2135
1382
|
"button",
|
|
2136
1383
|
{
|
|
2137
1384
|
type: "button",
|
|
2138
1385
|
"aria-label": `Dismiss ${title}`,
|
|
2139
1386
|
className: "absolute right-2 top-2 ph-btn ph-btn-ghost ph-btn-xs ph-btn-circle",
|
|
2140
1387
|
onClick: onDismiss,
|
|
2141
|
-
children: /* @__PURE__ */
|
|
1388
|
+
children: /* @__PURE__ */ jsx19(IconClose, { className: "h-4 w-4" })
|
|
2142
1389
|
}
|
|
2143
1390
|
)
|
|
2144
1391
|
] });
|
|
2145
1392
|
}
|
|
2146
1393
|
function ToastStack({ children, className }) {
|
|
2147
|
-
return /* @__PURE__ */
|
|
1394
|
+
return /* @__PURE__ */ jsx19("div", { className: cn("ph-toast-stack", className), children });
|
|
2148
1395
|
}
|
|
2149
1396
|
|
|
2150
1397
|
// src/components/ui/Tabs.tsx
|
|
2151
|
-
import { jsx as
|
|
1398
|
+
import { jsx as jsx20 } from "react/jsx-runtime";
|
|
2152
1399
|
function Tabs({ items, value, onChange, variant = "pill", className }) {
|
|
2153
1400
|
if (variant === "underline") {
|
|
2154
|
-
return /* @__PURE__ */
|
|
1401
|
+
return /* @__PURE__ */ jsx20("div", { className: cn("flex gap-6 border-b border-ph-border", className), children: items.map((item) => /* @__PURE__ */ jsx20(
|
|
2155
1402
|
"button",
|
|
2156
1403
|
{
|
|
2157
1404
|
type: "button",
|
|
@@ -2165,7 +1412,7 @@ function Tabs({ items, value, onChange, variant = "pill", className }) {
|
|
|
2165
1412
|
item.value
|
|
2166
1413
|
)) });
|
|
2167
1414
|
}
|
|
2168
|
-
return /* @__PURE__ */
|
|
1415
|
+
return /* @__PURE__ */ jsx20("div", { className: cn("ph-tabs-row inline-flex", className), children: items.map((item) => /* @__PURE__ */ jsx20(
|
|
2169
1416
|
"button",
|
|
2170
1417
|
{
|
|
2171
1418
|
type: "button",
|
|
@@ -2437,17 +1684,17 @@ function ThemeDomSync() {
|
|
|
2437
1684
|
|
|
2438
1685
|
// src/components/ui/ThemeManager.tsx
|
|
2439
1686
|
import { useLayoutEffect as useLayoutEffect2 } from "react";
|
|
2440
|
-
import { Fragment as
|
|
1687
|
+
import { Fragment as Fragment3, jsx as jsx21 } from "react/jsx-runtime";
|
|
2441
1688
|
function ThemeManager({ children }) {
|
|
2442
1689
|
useLayoutEffect2(() => {
|
|
2443
1690
|
persistTheme(readStoredTheme());
|
|
2444
1691
|
}, []);
|
|
2445
|
-
return /* @__PURE__ */
|
|
1692
|
+
return /* @__PURE__ */ jsx21(Fragment3, { children });
|
|
2446
1693
|
}
|
|
2447
1694
|
|
|
2448
1695
|
// src/components/ui/ThemeSwitcher.tsx
|
|
2449
1696
|
import { useEffect, useState } from "react";
|
|
2450
|
-
import { jsx as
|
|
1697
|
+
import { jsx as jsx22, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
2451
1698
|
function ThemeSwitcher({ className }) {
|
|
2452
1699
|
const [themeId, setThemeId] = useState("hedgehog-light");
|
|
2453
1700
|
useEffect(() => {
|
|
@@ -2455,9 +1702,9 @@ function ThemeSwitcher({ className }) {
|
|
|
2455
1702
|
persistTheme(id);
|
|
2456
1703
|
setThemeId(id);
|
|
2457
1704
|
}, []);
|
|
2458
|
-
return /* @__PURE__ */
|
|
2459
|
-
/* @__PURE__ */
|
|
2460
|
-
/* @__PURE__ */
|
|
1705
|
+
return /* @__PURE__ */ jsxs19("label", { className: cn("flex min-w-0 items-center gap-2", className), children: [
|
|
1706
|
+
/* @__PURE__ */ jsx22("span", { className: "shrink-0 text-xs font-medium text-ph-mutedtext sm:text-sm", children: "Theme" }),
|
|
1707
|
+
/* @__PURE__ */ jsx22(
|
|
2461
1708
|
"select",
|
|
2462
1709
|
{
|
|
2463
1710
|
className: "ph-select max-w-[11rem] !min-h-[2rem] py-1 pl-2.5 pr-8 text-xs sm:max-w-[14rem] sm:text-sm",
|
|
@@ -2468,7 +1715,7 @@ function ThemeSwitcher({ className }) {
|
|
|
2468
1715
|
persistTheme(next);
|
|
2469
1716
|
setThemeId(next);
|
|
2470
1717
|
},
|
|
2471
|
-
children: THEME_GROUPS.map((group) => /* @__PURE__ */
|
|
1718
|
+
children: THEME_GROUPS.map((group) => /* @__PURE__ */ jsx22("optgroup", { label: group, children: THEMES.filter((theme) => theme.group === group).map((theme) => /* @__PURE__ */ jsx22("option", { value: theme.id, children: theme.name }, theme.id)) }, group))
|
|
2472
1719
|
}
|
|
2473
1720
|
)
|
|
2474
1721
|
] });
|
|
@@ -2476,7 +1723,7 @@ function ThemeSwitcher({ className }) {
|
|
|
2476
1723
|
|
|
2477
1724
|
// src/components/ui/Accordion.tsx
|
|
2478
1725
|
import { useState as useState2 } from "react";
|
|
2479
|
-
import { jsx as
|
|
1726
|
+
import { jsx as jsx23, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
2480
1727
|
function Accordion({
|
|
2481
1728
|
items,
|
|
2482
1729
|
allowMultiple = false,
|
|
@@ -2498,18 +1745,18 @@ function Accordion({
|
|
|
2498
1745
|
return next;
|
|
2499
1746
|
});
|
|
2500
1747
|
};
|
|
2501
|
-
return /* @__PURE__ */
|
|
1748
|
+
return /* @__PURE__ */ jsx23("div", { className: cn("divide-y divide-ph-border rounded-xl border border-ph-border bg-ph-surface", className), children: items.map((item) => {
|
|
2502
1749
|
const isOpen = openItems.has(item.id);
|
|
2503
|
-
return /* @__PURE__ */
|
|
2504
|
-
/* @__PURE__ */
|
|
1750
|
+
return /* @__PURE__ */ jsxs20("div", { className: "first:rounded-t-xl last:rounded-b-xl", children: [
|
|
1751
|
+
/* @__PURE__ */ jsxs20(
|
|
2505
1752
|
"button",
|
|
2506
1753
|
{
|
|
2507
1754
|
type: "button",
|
|
2508
1755
|
onClick: () => toggleItem(item.id),
|
|
2509
1756
|
className: "flex w-full items-center justify-between px-5 py-4 text-left transition hover:bg-ph-muted",
|
|
2510
1757
|
children: [
|
|
2511
|
-
/* @__PURE__ */
|
|
2512
|
-
/* @__PURE__ */
|
|
1758
|
+
/* @__PURE__ */ jsx23("span", { className: "font-semibold text-ph-ink", children: item.title }),
|
|
1759
|
+
/* @__PURE__ */ jsx23(
|
|
2513
1760
|
IconChevronDown,
|
|
2514
1761
|
{
|
|
2515
1762
|
className: cn(
|
|
@@ -2521,14 +1768,14 @@ function Accordion({
|
|
|
2521
1768
|
]
|
|
2522
1769
|
}
|
|
2523
1770
|
),
|
|
2524
|
-
/* @__PURE__ */
|
|
1771
|
+
/* @__PURE__ */ jsx23(
|
|
2525
1772
|
"div",
|
|
2526
1773
|
{
|
|
2527
1774
|
className: cn(
|
|
2528
1775
|
"grid transition-all duration-200",
|
|
2529
1776
|
isOpen ? "grid-rows-[1fr]" : "grid-rows-[0fr]"
|
|
2530
1777
|
),
|
|
2531
|
-
children: /* @__PURE__ */
|
|
1778
|
+
children: /* @__PURE__ */ jsx23("div", { className: "overflow-hidden", children: /* @__PURE__ */ jsx23("div", { className: "px-5 pb-4 text-ph-subtle", children: item.content }) })
|
|
2532
1779
|
}
|
|
2533
1780
|
)
|
|
2534
1781
|
] }, item.id);
|
|
@@ -2536,16 +1783,16 @@ function Accordion({
|
|
|
2536
1783
|
}
|
|
2537
1784
|
|
|
2538
1785
|
// src/components/ui/Stepper.tsx
|
|
2539
|
-
import { jsx as
|
|
1786
|
+
import { jsx as jsx24, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
2540
1787
|
function Stepper({ steps, currentStep, className }) {
|
|
2541
|
-
return /* @__PURE__ */
|
|
1788
|
+
return /* @__PURE__ */ jsx24("div", { className: cn("flex items-start gap-2", className), children: steps.map((step, index) => {
|
|
2542
1789
|
const isCompleted = index < currentStep;
|
|
2543
1790
|
const isCurrent = index === currentStep;
|
|
2544
1791
|
const isPending = index > currentStep;
|
|
2545
1792
|
const isError = step.status === "error";
|
|
2546
|
-
return /* @__PURE__ */
|
|
2547
|
-
/* @__PURE__ */
|
|
2548
|
-
/* @__PURE__ */
|
|
1793
|
+
return /* @__PURE__ */ jsxs21("div", { className: "flex flex-1 items-start gap-2", children: [
|
|
1794
|
+
/* @__PURE__ */ jsxs21("div", { className: "flex flex-1 flex-col items-center", children: [
|
|
1795
|
+
/* @__PURE__ */ jsx24(
|
|
2549
1796
|
"div",
|
|
2550
1797
|
{
|
|
2551
1798
|
className: cn(
|
|
@@ -2555,11 +1802,11 @@ function Stepper({ steps, currentStep, className }) {
|
|
|
2555
1802
|
isCurrent && isError && "bg-ph-danger text-[var(--ph-on-danger)]",
|
|
2556
1803
|
isPending && "bg-ph-muted text-ph-mutedtext"
|
|
2557
1804
|
),
|
|
2558
|
-
children: isCompleted ? /* @__PURE__ */
|
|
1805
|
+
children: isCompleted ? /* @__PURE__ */ jsx24(IconCheck, { className: "h-5 w-5", "aria-hidden": true }) : index + 1
|
|
2559
1806
|
}
|
|
2560
1807
|
),
|
|
2561
|
-
/* @__PURE__ */
|
|
2562
|
-
/* @__PURE__ */
|
|
1808
|
+
/* @__PURE__ */ jsxs21("div", { className: "mt-2 text-center", children: [
|
|
1809
|
+
/* @__PURE__ */ jsx24(
|
|
2563
1810
|
"p",
|
|
2564
1811
|
{
|
|
2565
1812
|
className: cn(
|
|
@@ -2570,10 +1817,10 @@ function Stepper({ steps, currentStep, className }) {
|
|
|
2570
1817
|
children: step.label
|
|
2571
1818
|
}
|
|
2572
1819
|
),
|
|
2573
|
-
step.description && /* @__PURE__ */
|
|
1820
|
+
step.description && /* @__PURE__ */ jsx24("p", { className: "mt-0.5 text-xs text-ph-mutedtext", children: step.description })
|
|
2574
1821
|
] })
|
|
2575
1822
|
] }),
|
|
2576
|
-
index < steps.length - 1 && /* @__PURE__ */
|
|
1823
|
+
index < steps.length - 1 && /* @__PURE__ */ jsx24(
|
|
2577
1824
|
"div",
|
|
2578
1825
|
{
|
|
2579
1826
|
className: cn(
|
|
@@ -2587,16 +1834,16 @@ function Stepper({ steps, currentStep, className }) {
|
|
|
2587
1834
|
}
|
|
2588
1835
|
|
|
2589
1836
|
// src/components/ui/SegmentedControl.tsx
|
|
2590
|
-
import { jsx as
|
|
1837
|
+
import { jsx as jsx25, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
2591
1838
|
function SegmentedControl({ options, value, onChange, className }) {
|
|
2592
|
-
return /* @__PURE__ */
|
|
1839
|
+
return /* @__PURE__ */ jsx25(
|
|
2593
1840
|
"div",
|
|
2594
1841
|
{
|
|
2595
1842
|
className: cn(
|
|
2596
1843
|
"inline-flex rounded-lg bg-ph-muted p-1",
|
|
2597
1844
|
className
|
|
2598
1845
|
),
|
|
2599
|
-
children: options.map((option) => /* @__PURE__ */
|
|
1846
|
+
children: options.map((option) => /* @__PURE__ */ jsxs22(
|
|
2600
1847
|
"button",
|
|
2601
1848
|
{
|
|
2602
1849
|
type: "button",
|
|
@@ -2606,7 +1853,7 @@ function SegmentedControl({ options, value, onChange, className }) {
|
|
|
2606
1853
|
value === option.value ? "bg-ph-surface text-ph-ink shadow-ph" : "text-ph-subtle hover:text-ph-ink"
|
|
2607
1854
|
),
|
|
2608
1855
|
children: [
|
|
2609
|
-
option.icon && /* @__PURE__ */
|
|
1856
|
+
option.icon && /* @__PURE__ */ jsx25("span", { className: "h-4 w-4", children: option.icon }),
|
|
2610
1857
|
option.label
|
|
2611
1858
|
]
|
|
2612
1859
|
},
|
|
@@ -2618,7 +1865,7 @@ function SegmentedControl({ options, value, onChange, className }) {
|
|
|
2618
1865
|
|
|
2619
1866
|
// src/components/ui/CommandPalette.tsx
|
|
2620
1867
|
import { useState as useState3, useEffect as useEffect2, useRef as useRef2 } from "react";
|
|
2621
|
-
import { jsx as
|
|
1868
|
+
import { jsx as jsx26, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
2622
1869
|
function CommandPalette({
|
|
2623
1870
|
items,
|
|
2624
1871
|
isOpen,
|
|
@@ -2667,7 +1914,7 @@ function CommandPalette({
|
|
|
2667
1914
|
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
2668
1915
|
}, [isOpen, filtered, selectedIndex, onClose]);
|
|
2669
1916
|
if (!isOpen) return null;
|
|
2670
|
-
return /* @__PURE__ */
|
|
1917
|
+
return /* @__PURE__ */ jsx26("div", { className: "fixed inset-0 z-50 flex items-start justify-center bg-black/40 pt-[20vh] backdrop-blur-sm", children: /* @__PURE__ */ jsxs23(
|
|
2671
1918
|
"div",
|
|
2672
1919
|
{
|
|
2673
1920
|
className: cn(
|
|
@@ -2675,9 +1922,9 @@ function CommandPalette({
|
|
|
2675
1922
|
className
|
|
2676
1923
|
),
|
|
2677
1924
|
children: [
|
|
2678
|
-
/* @__PURE__ */
|
|
2679
|
-
/* @__PURE__ */
|
|
2680
|
-
/* @__PURE__ */
|
|
1925
|
+
/* @__PURE__ */ jsxs23("div", { className: "flex items-center gap-3 border-b border-ph-border px-4 py-3", children: [
|
|
1926
|
+
/* @__PURE__ */ jsx26(IconSearch, { className: "h-5 w-5 text-ph-mutedtext" }),
|
|
1927
|
+
/* @__PURE__ */ jsx26(
|
|
2681
1928
|
"input",
|
|
2682
1929
|
{
|
|
2683
1930
|
ref: inputRef,
|
|
@@ -2691,9 +1938,9 @@ function CommandPalette({
|
|
|
2691
1938
|
className: "flex-1 bg-transparent text-ph-ink outline-none placeholder:text-ph-mutedtext"
|
|
2692
1939
|
}
|
|
2693
1940
|
),
|
|
2694
|
-
/* @__PURE__ */
|
|
1941
|
+
/* @__PURE__ */ jsx26("kbd", { className: "rounded border border-ph-border bg-ph-muted px-1.5 py-0.5 text-xs text-ph-mutedtext", children: "ESC" })
|
|
2695
1942
|
] }),
|
|
2696
|
-
/* @__PURE__ */
|
|
1943
|
+
/* @__PURE__ */ jsx26("div", { className: "max-h-[50vh] overflow-y-auto py-2", children: filtered.length === 0 ? /* @__PURE__ */ jsx26("div", { className: "px-4 py-8 text-center text-sm text-ph-mutedtext", children: "No results found." }) : filtered.map((item, index) => /* @__PURE__ */ jsxs23(
|
|
2697
1944
|
"button",
|
|
2698
1945
|
{
|
|
2699
1946
|
type: "button",
|
|
@@ -2707,9 +1954,9 @@ function CommandPalette({
|
|
|
2707
1954
|
index === selectedIndex ? "bg-ph-muted text-ph-ink" : "text-ph-subtle"
|
|
2708
1955
|
),
|
|
2709
1956
|
children: [
|
|
2710
|
-
item.icon && /* @__PURE__ */
|
|
2711
|
-
/* @__PURE__ */
|
|
2712
|
-
item.shortcut && /* @__PURE__ */
|
|
1957
|
+
item.icon && /* @__PURE__ */ jsx26("span", { className: "h-5 w-5", children: item.icon }),
|
|
1958
|
+
/* @__PURE__ */ jsx26("span", { className: "flex-1", children: item.label }),
|
|
1959
|
+
item.shortcut && /* @__PURE__ */ jsx26("kbd", { className: "rounded border border-ph-border bg-ph-surface px-1.5 py-0.5 text-xs text-ph-mutedtext", children: item.shortcut })
|
|
2713
1960
|
]
|
|
2714
1961
|
},
|
|
2715
1962
|
item.id
|
|
@@ -2721,7 +1968,7 @@ function CommandPalette({
|
|
|
2721
1968
|
|
|
2722
1969
|
// src/components/ui/Calendar.tsx
|
|
2723
1970
|
import { useState as useState4 } from "react";
|
|
2724
|
-
import { jsx as
|
|
1971
|
+
import { jsx as jsx27, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
2725
1972
|
function Calendar({ value, onChange, className }) {
|
|
2726
1973
|
const [currentMonth, setCurrentMonth] = useState4(value || /* @__PURE__ */ new Date());
|
|
2727
1974
|
const today = /* @__PURE__ */ new Date();
|
|
@@ -2763,37 +2010,37 @@ function Calendar({ value, onChange, className }) {
|
|
|
2763
2010
|
for (let i = 1; i <= daysInMonth; i++) {
|
|
2764
2011
|
days.push(i);
|
|
2765
2012
|
}
|
|
2766
|
-
return /* @__PURE__ */
|
|
2767
|
-
/* @__PURE__ */
|
|
2768
|
-
/* @__PURE__ */
|
|
2013
|
+
return /* @__PURE__ */ jsxs24("div", { className: cn("w-[280px] rounded-xl border border-ph-border bg-ph-surface p-4 shadow-ph", className), children: [
|
|
2014
|
+
/* @__PURE__ */ jsxs24("div", { className: "mb-4 flex items-center justify-between", children: [
|
|
2015
|
+
/* @__PURE__ */ jsx27(
|
|
2769
2016
|
"button",
|
|
2770
2017
|
{
|
|
2771
2018
|
type: "button",
|
|
2772
2019
|
onClick: prevMonth,
|
|
2773
2020
|
"aria-label": "Previous month",
|
|
2774
2021
|
className: "rounded-lg p-1 text-ph-subtle transition hover:bg-ph-muted hover:text-ph-ink",
|
|
2775
|
-
children: /* @__PURE__ */
|
|
2022
|
+
children: /* @__PURE__ */ jsx27(IconChevronLeft, { className: "h-5 w-5", "aria-hidden": true })
|
|
2776
2023
|
}
|
|
2777
2024
|
),
|
|
2778
|
-
/* @__PURE__ */
|
|
2025
|
+
/* @__PURE__ */ jsxs24("span", { className: "text-sm font-semibold text-ph-ink", children: [
|
|
2779
2026
|
monthNames[month],
|
|
2780
2027
|
" ",
|
|
2781
2028
|
year
|
|
2782
2029
|
] }),
|
|
2783
|
-
/* @__PURE__ */
|
|
2030
|
+
/* @__PURE__ */ jsx27(
|
|
2784
2031
|
"button",
|
|
2785
2032
|
{
|
|
2786
2033
|
type: "button",
|
|
2787
2034
|
onClick: nextMonth,
|
|
2788
2035
|
"aria-label": "Next month",
|
|
2789
2036
|
className: "rounded-lg p-1 text-ph-subtle transition hover:bg-ph-muted hover:text-ph-ink",
|
|
2790
|
-
children: /* @__PURE__ */
|
|
2037
|
+
children: /* @__PURE__ */ jsx27(IconChevronRight, { className: "h-5 w-5", "aria-hidden": true })
|
|
2791
2038
|
}
|
|
2792
2039
|
)
|
|
2793
2040
|
] }),
|
|
2794
|
-
/* @__PURE__ */
|
|
2795
|
-
weekDays.map((day) => /* @__PURE__ */
|
|
2796
|
-
days.map((day, index) => /* @__PURE__ */
|
|
2041
|
+
/* @__PURE__ */ jsxs24("div", { className: "grid grid-cols-7 gap-1", children: [
|
|
2042
|
+
weekDays.map((day) => /* @__PURE__ */ jsx27("div", { className: "py-1 text-center text-xs font-medium text-ph-mutedtext", children: day }, day)),
|
|
2043
|
+
days.map((day, index) => /* @__PURE__ */ jsx27("div", { className: "aspect-square", children: day && /* @__PURE__ */ jsx27(
|
|
2797
2044
|
"button",
|
|
2798
2045
|
{
|
|
2799
2046
|
type: "button",
|
|
@@ -2811,10 +2058,10 @@ function Calendar({ value, onChange, className }) {
|
|
|
2811
2058
|
|
|
2812
2059
|
// src/components/ui/HoverCard.tsx
|
|
2813
2060
|
import { useState as useState5 } from "react";
|
|
2814
|
-
import { jsx as
|
|
2061
|
+
import { jsx as jsx28, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
2815
2062
|
function HoverCard({ trigger, children, className }) {
|
|
2816
2063
|
const [isVisible, setIsVisible] = useState5(false);
|
|
2817
|
-
return /* @__PURE__ */
|
|
2064
|
+
return /* @__PURE__ */ jsxs25(
|
|
2818
2065
|
"div",
|
|
2819
2066
|
{
|
|
2820
2067
|
className: "relative inline-block",
|
|
@@ -2822,7 +2069,7 @@ function HoverCard({ trigger, children, className }) {
|
|
|
2822
2069
|
onMouseLeave: () => setIsVisible(false),
|
|
2823
2070
|
children: [
|
|
2824
2071
|
trigger,
|
|
2825
|
-
/* @__PURE__ */
|
|
2072
|
+
/* @__PURE__ */ jsxs25(
|
|
2826
2073
|
"div",
|
|
2827
2074
|
{
|
|
2828
2075
|
className: cn(
|
|
@@ -2831,8 +2078,8 @@ function HoverCard({ trigger, children, className }) {
|
|
|
2831
2078
|
className
|
|
2832
2079
|
),
|
|
2833
2080
|
children: [
|
|
2834
|
-
/* @__PURE__ */
|
|
2835
|
-
/* @__PURE__ */
|
|
2081
|
+
/* @__PURE__ */ jsx28("div", { className: "absolute -top-1.5 left-1/2 h-3 w-3 -translate-x-1/2 rotate-45 border-l border-t border-ph-border bg-ph-surface" }),
|
|
2082
|
+
/* @__PURE__ */ jsx28("div", { className: "relative", children })
|
|
2836
2083
|
]
|
|
2837
2084
|
}
|
|
2838
2085
|
)
|
|
@@ -2841,159 +2088,10 @@ function HoverCard({ trigger, children, className }) {
|
|
|
2841
2088
|
);
|
|
2842
2089
|
}
|
|
2843
2090
|
|
|
2844
|
-
// src/components/ui/Tooltip.tsx
|
|
2845
|
-
import {
|
|
2846
|
-
cloneElement,
|
|
2847
|
-
createContext,
|
|
2848
|
-
useContext,
|
|
2849
|
-
useEffect as useEffect3,
|
|
2850
|
-
useId as useId5,
|
|
2851
|
-
useRef as useRef3,
|
|
2852
|
-
useState as useState6
|
|
2853
|
-
} from "react";
|
|
2854
|
-
import { createPortal } from "react-dom";
|
|
2855
|
-
import { Fragment as Fragment5, jsx as jsx34, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
2856
|
-
var TooltipDelayContext = createContext(0);
|
|
2857
|
-
function TooltipProvider({
|
|
2858
|
-
children,
|
|
2859
|
-
delayDuration = 0
|
|
2860
|
-
}) {
|
|
2861
|
-
return /* @__PURE__ */ jsx34(TooltipDelayContext.Provider, { value: delayDuration, children });
|
|
2862
|
-
}
|
|
2863
|
-
function tooltipPosition(trigger, side, align, offset) {
|
|
2864
|
-
const horizontal = align === "start" ? trigger.left : align === "end" ? trigger.right : trigger.left + trigger.width / 2;
|
|
2865
|
-
const vertical = align === "start" ? trigger.top : align === "end" ? trigger.bottom : trigger.top + trigger.height / 2;
|
|
2866
|
-
if (side === "top")
|
|
2867
|
-
return {
|
|
2868
|
-
left: horizontal,
|
|
2869
|
-
top: trigger.top - offset,
|
|
2870
|
-
transform: "translate(-50%, -100%)"
|
|
2871
|
-
};
|
|
2872
|
-
if (side === "bottom")
|
|
2873
|
-
return {
|
|
2874
|
-
left: horizontal,
|
|
2875
|
-
top: trigger.bottom + offset,
|
|
2876
|
-
transform: "translate(-50%, 0)"
|
|
2877
|
-
};
|
|
2878
|
-
if (side === "left")
|
|
2879
|
-
return {
|
|
2880
|
-
left: trigger.left - offset,
|
|
2881
|
-
top: vertical,
|
|
2882
|
-
transform: "translate(-100%, -50%)"
|
|
2883
|
-
};
|
|
2884
|
-
return {
|
|
2885
|
-
left: trigger.right + offset,
|
|
2886
|
-
top: vertical,
|
|
2887
|
-
transform: "translate(0, -50%)"
|
|
2888
|
-
};
|
|
2889
|
-
}
|
|
2890
|
-
function Tooltip({
|
|
2891
|
-
content,
|
|
2892
|
-
children,
|
|
2893
|
-
side = "top",
|
|
2894
|
-
align = "center",
|
|
2895
|
-
sideOffset = 7,
|
|
2896
|
-
className,
|
|
2897
|
-
open,
|
|
2898
|
-
defaultOpen = false,
|
|
2899
|
-
onOpenChange,
|
|
2900
|
-
delayDuration
|
|
2901
|
-
}) {
|
|
2902
|
-
const providerDelay = useContext(TooltipDelayContext);
|
|
2903
|
-
const generatedId = useId5().replace(/:/g, "");
|
|
2904
|
-
const triggerRef = useRef3(null);
|
|
2905
|
-
const timerRef = useRef3(null);
|
|
2906
|
-
const [internalOpen, setInternalOpen] = useState6(defaultOpen);
|
|
2907
|
-
const [position, setPosition] = useState6(null);
|
|
2908
|
-
const isOpen = open != null ? open : internalOpen;
|
|
2909
|
-
const triggerId = children.props.id;
|
|
2910
|
-
const tooltipId = triggerId ? `${triggerId}-tooltip` : `ph-tooltip-${generatedId}`;
|
|
2911
|
-
function setOpen(next) {
|
|
2912
|
-
if (open === void 0) setInternalOpen(next);
|
|
2913
|
-
onOpenChange == null ? void 0 : onOpenChange(next);
|
|
2914
|
-
}
|
|
2915
|
-
function clearTimer() {
|
|
2916
|
-
if (timerRef.current) clearTimeout(timerRef.current);
|
|
2917
|
-
timerRef.current = null;
|
|
2918
|
-
}
|
|
2919
|
-
function updatePosition() {
|
|
2920
|
-
if (!triggerRef.current) return;
|
|
2921
|
-
setPosition(
|
|
2922
|
-
tooltipPosition(
|
|
2923
|
-
triggerRef.current.getBoundingClientRect(),
|
|
2924
|
-
side,
|
|
2925
|
-
align,
|
|
2926
|
-
sideOffset
|
|
2927
|
-
)
|
|
2928
|
-
);
|
|
2929
|
-
}
|
|
2930
|
-
function show(immediate) {
|
|
2931
|
-
clearTimer();
|
|
2932
|
-
updatePosition();
|
|
2933
|
-
const delay = immediate ? 0 : delayDuration != null ? delayDuration : providerDelay;
|
|
2934
|
-
if (!delay) setOpen(true);
|
|
2935
|
-
else timerRef.current = setTimeout(() => setOpen(true), delay);
|
|
2936
|
-
}
|
|
2937
|
-
function hide() {
|
|
2938
|
-
clearTimer();
|
|
2939
|
-
setOpen(false);
|
|
2940
|
-
}
|
|
2941
|
-
useEffect3(() => {
|
|
2942
|
-
if (!isOpen) return;
|
|
2943
|
-
const reposition = () => updatePosition();
|
|
2944
|
-
window.addEventListener("resize", reposition);
|
|
2945
|
-
window.addEventListener("scroll", reposition, true);
|
|
2946
|
-
return () => {
|
|
2947
|
-
window.removeEventListener("resize", reposition);
|
|
2948
|
-
window.removeEventListener("scroll", reposition, true);
|
|
2949
|
-
};
|
|
2950
|
-
});
|
|
2951
|
-
useEffect3(() => () => clearTimer(), []);
|
|
2952
|
-
const describedBy = [children.props["aria-describedby"], tooltipId].filter(Boolean).join(" ");
|
|
2953
|
-
const trigger = cloneElement(children, { "aria-describedby": describedBy });
|
|
2954
|
-
return /* @__PURE__ */ jsxs29(Fragment5, { children: [
|
|
2955
|
-
/* @__PURE__ */ jsx34(
|
|
2956
|
-
"span",
|
|
2957
|
-
{
|
|
2958
|
-
ref: triggerRef,
|
|
2959
|
-
className: "inline-flex",
|
|
2960
|
-
onMouseEnter: () => show(false),
|
|
2961
|
-
onMouseLeave: hide,
|
|
2962
|
-
onFocusCapture: () => show(true),
|
|
2963
|
-
onBlurCapture: hide,
|
|
2964
|
-
onKeyDown: (event) => {
|
|
2965
|
-
if (event.key === "Escape") hide();
|
|
2966
|
-
},
|
|
2967
|
-
children: trigger
|
|
2968
|
-
}
|
|
2969
|
-
),
|
|
2970
|
-
isOpen && position && typeof document !== "undefined" ? createPortal(
|
|
2971
|
-
/* @__PURE__ */ jsx34(
|
|
2972
|
-
"span",
|
|
2973
|
-
{
|
|
2974
|
-
style: __spreadValues({ position: "fixed" }, position),
|
|
2975
|
-
className: "pointer-events-none z-[200]",
|
|
2976
|
-
children: /* @__PURE__ */ jsx34(
|
|
2977
|
-
"span",
|
|
2978
|
-
{
|
|
2979
|
-
id: tooltipId,
|
|
2980
|
-
role: "tooltip",
|
|
2981
|
-
"data-side": side,
|
|
2982
|
-
className: cn("ph-tooltip-content", className),
|
|
2983
|
-
children: content
|
|
2984
|
-
}
|
|
2985
|
-
)
|
|
2986
|
-
}
|
|
2987
|
-
),
|
|
2988
|
-
document.body
|
|
2989
|
-
) : null
|
|
2990
|
-
] });
|
|
2991
|
-
}
|
|
2992
|
-
|
|
2993
2091
|
// src/components/ui/EmptyState.tsx
|
|
2994
|
-
import { jsx as
|
|
2092
|
+
import { jsx as jsx29, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
2995
2093
|
function EmptyState({ icon, title, description, action, className }) {
|
|
2996
|
-
return /* @__PURE__ */
|
|
2094
|
+
return /* @__PURE__ */ jsxs26(
|
|
2997
2095
|
"div",
|
|
2998
2096
|
{
|
|
2999
2097
|
className: cn(
|
|
@@ -3001,17 +2099,17 @@ function EmptyState({ icon, title, description, action, className }) {
|
|
|
3001
2099
|
className
|
|
3002
2100
|
),
|
|
3003
2101
|
children: [
|
|
3004
|
-
icon && /* @__PURE__ */
|
|
3005
|
-
/* @__PURE__ */
|
|
3006
|
-
description && /* @__PURE__ */
|
|
3007
|
-
action && /* @__PURE__ */
|
|
2102
|
+
icon && /* @__PURE__ */ jsx29("div", { className: "mb-4 flex h-14 w-14 items-center justify-center rounded-full bg-ph-muted text-ph-mutedtext", children: icon }),
|
|
2103
|
+
/* @__PURE__ */ jsx29("h3", { className: "text-base font-semibold text-ph-ink", children: title }),
|
|
2104
|
+
description && /* @__PURE__ */ jsx29("p", { className: "mt-1 max-w-sm text-sm text-ph-subtle", children: description }),
|
|
2105
|
+
action && /* @__PURE__ */ jsx29("div", { className: "mt-4", children: action })
|
|
3008
2106
|
]
|
|
3009
2107
|
}
|
|
3010
2108
|
);
|
|
3011
2109
|
}
|
|
3012
2110
|
|
|
3013
2111
|
// src/components/ui/FilterChips.tsx
|
|
3014
|
-
import { Fragment as
|
|
2112
|
+
import { Fragment as Fragment4, jsx as jsx30, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
3015
2113
|
function FilterChips({
|
|
3016
2114
|
chips,
|
|
3017
2115
|
onToggle,
|
|
@@ -3019,20 +2117,20 @@ function FilterChips({
|
|
|
3019
2117
|
className,
|
|
3020
2118
|
"aria-label": ariaLabel = "Applied filters"
|
|
3021
2119
|
}) {
|
|
3022
|
-
return /* @__PURE__ */
|
|
2120
|
+
return /* @__PURE__ */ jsx30("div", { className: cn("ph-filter-chips", className), role: "group", "aria-label": ariaLabel, children: chips.map((chip) => {
|
|
3023
2121
|
var _a;
|
|
3024
2122
|
const label = (_a = chip.removeLabel) != null ? _a : getChipText(chip);
|
|
3025
|
-
const content = /* @__PURE__ */
|
|
3026
|
-
/* @__PURE__ */
|
|
3027
|
-
chip.value != null ? /* @__PURE__ */
|
|
2123
|
+
const content = /* @__PURE__ */ jsxs27(Fragment4, { children: [
|
|
2124
|
+
/* @__PURE__ */ jsx30("span", { className: "ph-filter-chip__label", children: chip.label }),
|
|
2125
|
+
chip.value != null ? /* @__PURE__ */ jsx30("span", { className: "ph-filter-chip__value", children: chip.value }) : null
|
|
3028
2126
|
] });
|
|
3029
|
-
return /* @__PURE__ */
|
|
2127
|
+
return /* @__PURE__ */ jsxs27(
|
|
3030
2128
|
"span",
|
|
3031
2129
|
{
|
|
3032
2130
|
className: cn("ph-filter-chip", chip.active && "ph-filter-chip--active"),
|
|
3033
2131
|
"data-state": chip.active ? "on" : "off",
|
|
3034
2132
|
children: [
|
|
3035
|
-
onToggle ? /* @__PURE__ */
|
|
2133
|
+
onToggle ? /* @__PURE__ */ jsx30(
|
|
3036
2134
|
"button",
|
|
3037
2135
|
{
|
|
3038
2136
|
type: "button",
|
|
@@ -3041,15 +2139,15 @@ function FilterChips({
|
|
|
3041
2139
|
onClick: () => onToggle(chip.id),
|
|
3042
2140
|
children: content
|
|
3043
2141
|
}
|
|
3044
|
-
) : /* @__PURE__ */
|
|
3045
|
-
chip.active && onRemove ? /* @__PURE__ */
|
|
2142
|
+
) : /* @__PURE__ */ jsx30("span", { className: "ph-filter-chip__main", children: content }),
|
|
2143
|
+
chip.active && onRemove ? /* @__PURE__ */ jsx30(
|
|
3046
2144
|
"button",
|
|
3047
2145
|
{
|
|
3048
2146
|
type: "button",
|
|
3049
2147
|
className: "ph-filter-chip__remove",
|
|
3050
2148
|
"aria-label": `Remove ${label} filter`,
|
|
3051
2149
|
onClick: () => onRemove(chip.id),
|
|
3052
|
-
children: /* @__PURE__ */
|
|
2150
|
+
children: /* @__PURE__ */ jsx30(IconClose, { className: "h-3 w-3", "aria-hidden": true })
|
|
3053
2151
|
}
|
|
3054
2152
|
) : null
|
|
3055
2153
|
]
|
|
@@ -3065,7 +2163,7 @@ function getChipText(chip) {
|
|
|
3065
2163
|
}
|
|
3066
2164
|
|
|
3067
2165
|
// src/components/ui/FilterBar.tsx
|
|
3068
|
-
import { jsx as
|
|
2166
|
+
import { jsx as jsx31, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
3069
2167
|
function FilterBar(_a) {
|
|
3070
2168
|
var _b = _a, {
|
|
3071
2169
|
children,
|
|
@@ -3082,12 +2180,12 @@ function FilterBar(_a) {
|
|
|
3082
2180
|
"resultCount",
|
|
3083
2181
|
"className"
|
|
3084
2182
|
]);
|
|
3085
|
-
return /* @__PURE__ */
|
|
3086
|
-
/* @__PURE__ */
|
|
2183
|
+
return /* @__PURE__ */ jsxs28("div", __spreadProps(__spreadValues({ className: cn("ph-filter-bar", className) }, props), { children: [
|
|
2184
|
+
/* @__PURE__ */ jsxs28("div", { className: "ph-filter-bar__controls", role: "group", "aria-label": label, children: [
|
|
3087
2185
|
children,
|
|
3088
|
-
onClear ? /* @__PURE__ */
|
|
2186
|
+
onClear ? /* @__PURE__ */ jsx31("button", { type: "button", className: "ph-filter-bar__clear", onClick: onClear, children: clearLabel }) : null
|
|
3089
2187
|
] }),
|
|
3090
|
-
resultCount != null ? /* @__PURE__ */
|
|
2188
|
+
resultCount != null ? /* @__PURE__ */ jsx31("output", { className: "ph-filter-bar__results", "aria-live": "polite", children: resultCount }) : null
|
|
3091
2189
|
] }));
|
|
3092
2190
|
}
|
|
3093
2191
|
function FilterMenu({
|
|
@@ -3104,19 +2202,19 @@ function FilterMenu({
|
|
|
3104
2202
|
const selected = options.find((option) => option.value === value);
|
|
3105
2203
|
const displayValue = (_a = selected == null ? void 0 : selected.label) != null ? _a : placeholder;
|
|
3106
2204
|
const accessibleValue = selected ? getOptionText(selected) : String(placeholder);
|
|
3107
|
-
return /* @__PURE__ */
|
|
2205
|
+
return /* @__PURE__ */ jsx31(
|
|
3108
2206
|
DropdownMenu,
|
|
3109
2207
|
{
|
|
3110
2208
|
"aria-label": `${label}: ${accessibleValue}`,
|
|
3111
2209
|
align,
|
|
3112
2210
|
disabled,
|
|
3113
2211
|
className,
|
|
3114
|
-
trigger: /* @__PURE__ */
|
|
3115
|
-
/* @__PURE__ */
|
|
3116
|
-
/* @__PURE__ */
|
|
3117
|
-
/* @__PURE__ */
|
|
2212
|
+
trigger: /* @__PURE__ */ jsxs28("span", { className: cn("ph-filter-menu-trigger", selected && "ph-filter-menu-trigger--active"), children: [
|
|
2213
|
+
/* @__PURE__ */ jsx31(IconTuning, { className: "h-3.5 w-3.5", "aria-hidden": true }),
|
|
2214
|
+
/* @__PURE__ */ jsx31("span", { className: "ph-filter-menu-trigger__label", children: label }),
|
|
2215
|
+
/* @__PURE__ */ jsx31("span", { className: "ph-filter-menu-trigger__value", children: displayValue })
|
|
3118
2216
|
] }),
|
|
3119
|
-
children: /* @__PURE__ */
|
|
2217
|
+
children: /* @__PURE__ */ jsx31(DropdownRadioGroup, { value, onValueChange, children: options.map((option) => /* @__PURE__ */ jsx31(
|
|
3120
2218
|
DropdownRadioItem,
|
|
3121
2219
|
{
|
|
3122
2220
|
value: option.value,
|
|
@@ -3140,25 +2238,25 @@ function SortMenu({
|
|
|
3140
2238
|
className
|
|
3141
2239
|
}) {
|
|
3142
2240
|
const selected = options.find((option) => option.value === value);
|
|
3143
|
-
return /* @__PURE__ */
|
|
2241
|
+
return /* @__PURE__ */ jsx31(
|
|
3144
2242
|
DropdownMenu,
|
|
3145
2243
|
{
|
|
3146
2244
|
"aria-label": `${label}: ${selected ? getOptionText(selected) : "Choose sort order"}`,
|
|
3147
2245
|
align,
|
|
3148
2246
|
disabled,
|
|
3149
2247
|
className,
|
|
3150
|
-
trigger: /* @__PURE__ */
|
|
3151
|
-
/* @__PURE__ */
|
|
2248
|
+
trigger: /* @__PURE__ */ jsxs28("span", { className: "ph-filter-menu-trigger ph-sort-menu-trigger", children: [
|
|
2249
|
+
/* @__PURE__ */ jsx31(
|
|
3152
2250
|
IconArrowDown,
|
|
3153
2251
|
{
|
|
3154
2252
|
className: cn("h-3.5 w-3.5", direction === "ascending" && "rotate-180"),
|
|
3155
2253
|
"aria-hidden": true
|
|
3156
2254
|
}
|
|
3157
2255
|
),
|
|
3158
|
-
/* @__PURE__ */
|
|
3159
|
-
selected ? /* @__PURE__ */
|
|
2256
|
+
/* @__PURE__ */ jsx31("span", { className: "ph-filter-menu-trigger__label", children: label }),
|
|
2257
|
+
selected ? /* @__PURE__ */ jsx31("span", { className: "ph-filter-menu-trigger__value", children: selected.label }) : null
|
|
3160
2258
|
] }),
|
|
3161
|
-
children: /* @__PURE__ */
|
|
2259
|
+
children: /* @__PURE__ */ jsx31(DropdownRadioGroup, { value, onValueChange, children: options.map((option) => /* @__PURE__ */ jsx31(
|
|
3162
2260
|
DropdownRadioItem,
|
|
3163
2261
|
{
|
|
3164
2262
|
value: option.value,
|
|
@@ -3178,7 +2276,7 @@ function getOptionText(option) {
|
|
|
3178
2276
|
}
|
|
3179
2277
|
|
|
3180
2278
|
// src/components/ui/FilterControls.tsx
|
|
3181
|
-
import { jsx as
|
|
2279
|
+
import { jsx as jsx32, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
3182
2280
|
function FilterControls(_a) {
|
|
3183
2281
|
var _b = _a, {
|
|
3184
2282
|
children,
|
|
@@ -3194,33 +2292,33 @@ function FilterControls(_a) {
|
|
|
3194
2292
|
"className"
|
|
3195
2293
|
]);
|
|
3196
2294
|
const hasChips = Boolean(chipsProps == null ? void 0 : chipsProps.chips.length);
|
|
3197
|
-
return /* @__PURE__ */
|
|
3198
|
-
/* @__PURE__ */
|
|
3199
|
-
hasChips && chipsProps ? /* @__PURE__ */
|
|
2295
|
+
return /* @__PURE__ */ jsxs29("div", __spreadProps(__spreadValues({ className: cn("ph-filter-controls", className) }, props), { children: [
|
|
2296
|
+
/* @__PURE__ */ jsx32(FilterBar, __spreadProps(__spreadValues({}, barProps), { children })),
|
|
2297
|
+
hasChips && chipsProps ? /* @__PURE__ */ jsx32(FilterChips, __spreadValues({}, chipsProps)) : emptyState != null ? emptyState : null
|
|
3200
2298
|
] }));
|
|
3201
2299
|
}
|
|
3202
2300
|
|
|
3203
2301
|
// src/components/ui/CodeBlock.tsx
|
|
3204
|
-
import { useState as
|
|
3205
|
-
import { jsx as
|
|
2302
|
+
import { useState as useState6 } from "react";
|
|
2303
|
+
import { jsx as jsx33, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
3206
2304
|
function CodeBlock({ code, language = "tsx", filename, className }) {
|
|
3207
|
-
const [copied, setCopied] =
|
|
2305
|
+
const [copied, setCopied] = useState6(false);
|
|
3208
2306
|
const handleCopy = async () => {
|
|
3209
2307
|
await navigator.clipboard.writeText(code);
|
|
3210
2308
|
setCopied(true);
|
|
3211
2309
|
setTimeout(() => setCopied(false), 2e3);
|
|
3212
2310
|
};
|
|
3213
|
-
return /* @__PURE__ */
|
|
3214
|
-
(filename || language) && /* @__PURE__ */
|
|
3215
|
-
/* @__PURE__ */
|
|
3216
|
-
/* @__PURE__ */
|
|
3217
|
-
/* @__PURE__ */
|
|
3218
|
-
/* @__PURE__ */
|
|
3219
|
-
/* @__PURE__ */
|
|
2311
|
+
return /* @__PURE__ */ jsxs30("div", { className: cn("overflow-hidden rounded-lg border border-ph-border bg-[#1a1a2e]", className), children: [
|
|
2312
|
+
(filename || language) && /* @__PURE__ */ jsxs30("div", { className: "flex items-center justify-between border-b border-white/10 px-4 py-2", children: [
|
|
2313
|
+
/* @__PURE__ */ jsxs30("div", { className: "flex items-center gap-2", children: [
|
|
2314
|
+
/* @__PURE__ */ jsxs30("div", { className: "flex gap-1.5", children: [
|
|
2315
|
+
/* @__PURE__ */ jsx33("div", { className: "h-3 w-3 rounded-full bg-red-400" }),
|
|
2316
|
+
/* @__PURE__ */ jsx33("div", { className: "h-3 w-3 rounded-full bg-amber-400" }),
|
|
2317
|
+
/* @__PURE__ */ jsx33("div", { className: "h-3 w-3 rounded-full bg-emerald-400" })
|
|
3220
2318
|
] }),
|
|
3221
|
-
filename && /* @__PURE__ */
|
|
2319
|
+
filename && /* @__PURE__ */ jsx33("span", { className: "ml-2 text-xs text-white/60", children: filename })
|
|
3222
2320
|
] }),
|
|
3223
|
-
/* @__PURE__ */
|
|
2321
|
+
/* @__PURE__ */ jsx33(
|
|
3224
2322
|
"button",
|
|
3225
2323
|
{
|
|
3226
2324
|
type: "button",
|
|
@@ -3230,35 +2328,35 @@ function CodeBlock({ code, language = "tsx", filename, className }) {
|
|
|
3230
2328
|
}
|
|
3231
2329
|
)
|
|
3232
2330
|
] }),
|
|
3233
|
-
/* @__PURE__ */
|
|
2331
|
+
/* @__PURE__ */ jsx33("pre", { className: "overflow-x-auto p-4 text-sm leading-relaxed", children: /* @__PURE__ */ jsx33("code", { className: "font-mono text-[#e4e4e7]", children: code }) })
|
|
3234
2332
|
] });
|
|
3235
2333
|
}
|
|
3236
2334
|
|
|
3237
2335
|
// src/components/ui/ComponentDocs.tsx
|
|
3238
|
-
import { jsx as
|
|
2336
|
+
import { jsx as jsx34, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
3239
2337
|
function ComponentDocs({ title = "Props & variants", rows, defaultOpen = false, className }) {
|
|
3240
|
-
return /* @__PURE__ */
|
|
3241
|
-
/* @__PURE__ */
|
|
3242
|
-
/* @__PURE__ */
|
|
3243
|
-
/* @__PURE__ */
|
|
3244
|
-
/* @__PURE__ */
|
|
3245
|
-
/* @__PURE__ */
|
|
2338
|
+
return /* @__PURE__ */ jsxs31("details", { className: cn("ph-panel group overflow-hidden p-0", className), open: defaultOpen, children: [
|
|
2339
|
+
/* @__PURE__ */ jsxs31("summary", { className: "flex cursor-pointer list-none items-center justify-between gap-4 border-b border-ph-border px-4 py-3 transition hover:bg-ph-muted/60 [&::-webkit-details-marker]:hidden", children: [
|
|
2340
|
+
/* @__PURE__ */ jsx34("h3", { className: "text-xs font-semibold uppercase tracking-wider text-ph-mutedtext", children: title }),
|
|
2341
|
+
/* @__PURE__ */ jsxs31("span", { className: "rounded-full border border-ph-border bg-ph-surface px-2 py-1 text-[10px] font-semibold uppercase tracking-wider text-ph-mutedtext transition group-open:bg-ph-brand group-open:text-white", children: [
|
|
2342
|
+
/* @__PURE__ */ jsx34("span", { className: "group-open:hidden", children: "Show" }),
|
|
2343
|
+
/* @__PURE__ */ jsx34("span", { className: "hidden group-open:inline", children: "Hide" })
|
|
3246
2344
|
] })
|
|
3247
2345
|
] }),
|
|
3248
|
-
/* @__PURE__ */
|
|
3249
|
-
/* @__PURE__ */
|
|
3250
|
-
/* @__PURE__ */
|
|
3251
|
-
/* @__PURE__ */
|
|
3252
|
-
/* @__PURE__ */
|
|
3253
|
-
/* @__PURE__ */
|
|
2346
|
+
/* @__PURE__ */ jsx34("div", { className: "overflow-x-auto border-t border-ph-border", children: /* @__PURE__ */ jsxs31("table", { className: "w-full text-left text-sm", children: [
|
|
2347
|
+
/* @__PURE__ */ jsx34("thead", { className: "bg-ph-muted text-xs uppercase tracking-wider text-ph-mutedtext", children: /* @__PURE__ */ jsxs31("tr", { children: [
|
|
2348
|
+
/* @__PURE__ */ jsx34("th", { className: "px-4 py-2 font-semibold", children: "Prop" }),
|
|
2349
|
+
/* @__PURE__ */ jsx34("th", { className: "px-4 py-2 font-semibold", children: "Type" }),
|
|
2350
|
+
/* @__PURE__ */ jsx34("th", { className: "px-4 py-2 font-semibold", children: "Default" }),
|
|
2351
|
+
/* @__PURE__ */ jsx34("th", { className: "px-4 py-2 font-semibold", children: "Use" })
|
|
3254
2352
|
] }) }),
|
|
3255
|
-
/* @__PURE__ */
|
|
2353
|
+
/* @__PURE__ */ jsx34("tbody", { className: "divide-y divide-ph-border", children: rows.map((row) => {
|
|
3256
2354
|
var _a, _b;
|
|
3257
|
-
return /* @__PURE__ */
|
|
3258
|
-
/* @__PURE__ */
|
|
3259
|
-
/* @__PURE__ */
|
|
3260
|
-
/* @__PURE__ */
|
|
3261
|
-
/* @__PURE__ */
|
|
2355
|
+
return /* @__PURE__ */ jsxs31("tr", { children: [
|
|
2356
|
+
/* @__PURE__ */ jsx34("td", { className: "px-4 py-3 align-top font-mono text-xs text-ph-ink", children: row.name }),
|
|
2357
|
+
/* @__PURE__ */ jsx34("td", { className: "px-4 py-3 align-top font-mono text-xs text-ph-subtle", children: row.type }),
|
|
2358
|
+
/* @__PURE__ */ jsx34("td", { className: "px-4 py-3 align-top font-mono text-xs text-ph-subtle", children: (_a = row.defaultValue) != null ? _a : "-" }),
|
|
2359
|
+
/* @__PURE__ */ jsx34("td", { className: "px-4 py-3 align-top text-ph-subtle", children: (_b = row.description) != null ? _b : /* @__PURE__ */ jsx34("span", { className: "text-ph-mutedtext", children: "\u2014" }) })
|
|
3262
2360
|
] }, row.name);
|
|
3263
2361
|
}) })
|
|
3264
2362
|
] }) })
|
|
@@ -3266,8 +2364,8 @@ function ComponentDocs({ title = "Props & variants", rows, defaultOpen = false,
|
|
|
3266
2364
|
}
|
|
3267
2365
|
|
|
3268
2366
|
// src/components/ui/ShowcaseWrapper.tsx
|
|
3269
|
-
import { useState as
|
|
3270
|
-
import { jsx as
|
|
2367
|
+
import { useState as useState7 } from "react";
|
|
2368
|
+
import { jsx as jsx35, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
3271
2369
|
function ShowcaseWrapper({
|
|
3272
2370
|
id,
|
|
3273
2371
|
title,
|
|
@@ -3279,13 +2377,13 @@ function ShowcaseWrapper({
|
|
|
3279
2377
|
className
|
|
3280
2378
|
}) {
|
|
3281
2379
|
var _a;
|
|
3282
|
-
const [showCode, setShowCode] =
|
|
2380
|
+
const [showCode, setShowCode] = useState7(false);
|
|
3283
2381
|
const fallbackId = (_a = titleIdMap[title]) != null ? _a : title.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
|
|
3284
|
-
return /* @__PURE__ */
|
|
3285
|
-
/* @__PURE__ */
|
|
3286
|
-
/* @__PURE__ */
|
|
3287
|
-
/* @__PURE__ */
|
|
3288
|
-
/* @__PURE__ */
|
|
2382
|
+
return /* @__PURE__ */ jsxs32("section", { id: id != null ? id : fallbackId, className: cn("scroll-mt-20", className), children: [
|
|
2383
|
+
/* @__PURE__ */ jsxs32("div", { className: "ph-h2-rule mb-8", children: [
|
|
2384
|
+
/* @__PURE__ */ jsxs32("div", { className: "flex items-center gap-1.5", children: [
|
|
2385
|
+
/* @__PURE__ */ jsx35("h2", { children: title }),
|
|
2386
|
+
/* @__PURE__ */ jsx35(
|
|
3289
2387
|
"button",
|
|
3290
2388
|
{
|
|
3291
2389
|
type: "button",
|
|
@@ -3296,15 +2394,15 @@ function ShowcaseWrapper({
|
|
|
3296
2394
|
),
|
|
3297
2395
|
title: showCode ? "Hide code" : "Show code",
|
|
3298
2396
|
"aria-label": showCode ? "Hide code" : "Show code",
|
|
3299
|
-
children: /* @__PURE__ */
|
|
2397
|
+
children: /* @__PURE__ */ jsx35(IconCodePreview, { className: "h-5 w-5", "aria-hidden": true })
|
|
3300
2398
|
}
|
|
3301
2399
|
)
|
|
3302
2400
|
] }),
|
|
3303
|
-
/* @__PURE__ */
|
|
2401
|
+
/* @__PURE__ */ jsx35("hr", {})
|
|
3304
2402
|
] }),
|
|
3305
|
-
description && /* @__PURE__ */
|
|
3306
|
-
docs && /* @__PURE__ */
|
|
3307
|
-
/* @__PURE__ */
|
|
2403
|
+
description && /* @__PURE__ */ jsx35("p", { className: "mb-6 text-sm text-ph-subtle", children: description }),
|
|
2404
|
+
docs && /* @__PURE__ */ jsx35("div", { className: "mb-6", children: docs }),
|
|
2405
|
+
/* @__PURE__ */ jsxs32(
|
|
3308
2406
|
"div",
|
|
3309
2407
|
{
|
|
3310
2408
|
className: cn(
|
|
@@ -3312,15 +2410,15 @@ function ShowcaseWrapper({
|
|
|
3312
2410
|
showCode ? "lg:grid lg:grid-cols-[1fr,minmax(360px,420px)]" : "block"
|
|
3313
2411
|
),
|
|
3314
2412
|
children: [
|
|
3315
|
-
/* @__PURE__ */
|
|
3316
|
-
/* @__PURE__ */
|
|
2413
|
+
/* @__PURE__ */ jsx35("div", { className: cn("min-w-0", showCode && "lg:pr-2"), children }),
|
|
2414
|
+
/* @__PURE__ */ jsx35(
|
|
3317
2415
|
"div",
|
|
3318
2416
|
{
|
|
3319
2417
|
className: cn(
|
|
3320
2418
|
"transition-all duration-300",
|
|
3321
2419
|
showCode ? "block opacity-100" : "hidden opacity-0 lg:hidden"
|
|
3322
2420
|
),
|
|
3323
|
-
children: /* @__PURE__ */
|
|
2421
|
+
children: /* @__PURE__ */ jsx35("div", { className: "sticky top-20", children: /* @__PURE__ */ jsx35(CodeBlock, { code, filename }) })
|
|
3324
2422
|
}
|
|
3325
2423
|
)
|
|
3326
2424
|
]
|
|
@@ -3369,14 +2467,14 @@ var titleIdMap = {
|
|
|
3369
2467
|
};
|
|
3370
2468
|
|
|
3371
2469
|
// src/components/ui/CollapsibleSection.tsx
|
|
3372
|
-
import { useId as
|
|
3373
|
-
import { jsx as
|
|
2470
|
+
import { useId as useId5, useState as useState8 } from "react";
|
|
2471
|
+
import { jsx as jsx36, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
3374
2472
|
function CollapsibleSection({ title, children, defaultOpen = true, id }) {
|
|
3375
|
-
const [isOpen, setIsOpen] =
|
|
3376
|
-
const generatedId =
|
|
2473
|
+
const [isOpen, setIsOpen] = useState8(defaultOpen);
|
|
2474
|
+
const generatedId = useId5();
|
|
3377
2475
|
const contentId = `${id != null ? id : generatedId}-content`;
|
|
3378
|
-
return /* @__PURE__ */
|
|
3379
|
-
/* @__PURE__ */
|
|
2476
|
+
return /* @__PURE__ */ jsxs33("section", { id, className: "scroll-mt-20", children: [
|
|
2477
|
+
/* @__PURE__ */ jsxs33(
|
|
3380
2478
|
"button",
|
|
3381
2479
|
{
|
|
3382
2480
|
type: "button",
|
|
@@ -3385,8 +2483,8 @@ function CollapsibleSection({ title, children, defaultOpen = true, id }) {
|
|
|
3385
2483
|
"aria-controls": contentId,
|
|
3386
2484
|
className: "mb-6 flex w-full items-center justify-between rounded-lg border border-ph-border bg-ph-muted px-5 py-4 text-left transition hover:bg-ph-muted/80",
|
|
3387
2485
|
children: [
|
|
3388
|
-
/* @__PURE__ */
|
|
3389
|
-
/* @__PURE__ */
|
|
2486
|
+
/* @__PURE__ */ jsx36("span", { className: "text-lg font-bold text-ph-ink", children: title }),
|
|
2487
|
+
/* @__PURE__ */ jsx36(
|
|
3390
2488
|
IconChevronDown,
|
|
3391
2489
|
{
|
|
3392
2490
|
className: cn(
|
|
@@ -3399,7 +2497,7 @@ function CollapsibleSection({ title, children, defaultOpen = true, id }) {
|
|
|
3399
2497
|
]
|
|
3400
2498
|
}
|
|
3401
2499
|
),
|
|
3402
|
-
/* @__PURE__ */
|
|
2500
|
+
/* @__PURE__ */ jsx36(
|
|
3403
2501
|
"div",
|
|
3404
2502
|
{
|
|
3405
2503
|
id: contentId,
|
|
@@ -3415,7 +2513,7 @@ function CollapsibleSection({ title, children, defaultOpen = true, id }) {
|
|
|
3415
2513
|
}
|
|
3416
2514
|
|
|
3417
2515
|
// src/components/ui/Typography.tsx
|
|
3418
|
-
import { jsx as
|
|
2516
|
+
import { jsx as jsx37 } from "react/jsx-runtime";
|
|
3419
2517
|
var toneMap2 = {
|
|
3420
2518
|
default: "text-ph-ink",
|
|
3421
2519
|
muted: "text-ph-mutedtext",
|
|
@@ -3444,47 +2542,47 @@ function Display({
|
|
|
3444
2542
|
truncate,
|
|
3445
2543
|
className
|
|
3446
2544
|
}) {
|
|
3447
|
-
return /* @__PURE__ */
|
|
2545
|
+
return /* @__PURE__ */ jsx37("h1", { className: textClass("text-4xl font-extrabold tracking-tight md:text-5xl", tone, weight, truncate, className), children });
|
|
3448
2546
|
}
|
|
3449
2547
|
function H1({ children, tone = "default", weight, truncate, className }) {
|
|
3450
|
-
return /* @__PURE__ */
|
|
2548
|
+
return /* @__PURE__ */ jsx37("h1", { className: textClass("text-3xl font-bold tracking-tight md:text-4xl", tone, weight, truncate, className), children });
|
|
3451
2549
|
}
|
|
3452
2550
|
function H2({ children, tone = "default", weight, truncate, className }) {
|
|
3453
|
-
return /* @__PURE__ */
|
|
2551
|
+
return /* @__PURE__ */ jsx37("h2", { className: textClass("text-2xl font-bold tracking-tight", tone, weight, truncate, className), children });
|
|
3454
2552
|
}
|
|
3455
2553
|
function H3({ children, tone = "default", weight, truncate, className }) {
|
|
3456
|
-
return /* @__PURE__ */
|
|
2554
|
+
return /* @__PURE__ */ jsx37("h3", { className: textClass("text-xl font-semibold", tone, weight, truncate, className), children });
|
|
3457
2555
|
}
|
|
3458
2556
|
function H4({ children, tone = "default", weight, truncate, className }) {
|
|
3459
|
-
return /* @__PURE__ */
|
|
2557
|
+
return /* @__PURE__ */ jsx37("h4", { className: textClass("text-lg font-semibold", tone, weight, truncate, className), children });
|
|
3460
2558
|
}
|
|
3461
2559
|
function H5({ children, tone = "default", weight, truncate, className }) {
|
|
3462
|
-
return /* @__PURE__ */
|
|
2560
|
+
return /* @__PURE__ */ jsx37("h5", { className: textClass("text-base font-semibold", tone, weight, truncate, className), children });
|
|
3463
2561
|
}
|
|
3464
2562
|
function P({ children, tone = "default", weight, truncate, className }) {
|
|
3465
|
-
return /* @__PURE__ */
|
|
2563
|
+
return /* @__PURE__ */ jsx37("p", { className: textClass("text-base leading-relaxed", tone, weight, truncate, className), children });
|
|
3466
2564
|
}
|
|
3467
2565
|
function Small({ children, tone = "default", weight, truncate, className }) {
|
|
3468
|
-
return /* @__PURE__ */
|
|
2566
|
+
return /* @__PURE__ */ jsx37("span", { className: textClass("text-sm leading-relaxed", tone, weight, truncate, className), children });
|
|
3469
2567
|
}
|
|
3470
2568
|
function Caption({ children, tone = "muted", weight, truncate, className }) {
|
|
3471
|
-
return /* @__PURE__ */
|
|
2569
|
+
return /* @__PURE__ */ jsx37("span", { className: textClass("text-[11px] font-medium uppercase tracking-wider", tone, weight, truncate, className), children });
|
|
3472
2570
|
}
|
|
3473
2571
|
function Overline({ children, tone = "muted", weight, truncate, className }) {
|
|
3474
|
-
return /* @__PURE__ */
|
|
2572
|
+
return /* @__PURE__ */ jsx37("span", { className: textClass("text-[10px] font-bold uppercase tracking-[0.15em]", tone, weight, truncate, className), children });
|
|
3475
2573
|
}
|
|
3476
2574
|
function Lead({ children, tone = "subtle", weight, truncate, className }) {
|
|
3477
|
-
return /* @__PURE__ */
|
|
2575
|
+
return /* @__PURE__ */ jsx37("p", { className: textClass("text-lg leading-relaxed", tone, weight, truncate, className), children });
|
|
3478
2576
|
}
|
|
3479
2577
|
function Mono({ children, tone = "default", weight, truncate, className }) {
|
|
3480
|
-
return /* @__PURE__ */
|
|
2578
|
+
return /* @__PURE__ */ jsx37("code", { className: textClass("text-sm font-mono leading-relaxed", tone, weight, truncate, className), children });
|
|
3481
2579
|
}
|
|
3482
2580
|
function Label({ children, tone = "default", weight, truncate, className }) {
|
|
3483
|
-
return /* @__PURE__ */
|
|
2581
|
+
return /* @__PURE__ */ jsx37("label", { className: textClass("text-sm font-medium", tone, weight, truncate, className), children });
|
|
3484
2582
|
}
|
|
3485
2583
|
|
|
3486
2584
|
// src/components/ui/Avatar.tsx
|
|
3487
|
-
import { jsx as
|
|
2585
|
+
import { jsx as jsx38, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
3488
2586
|
var sizeMap5 = {
|
|
3489
2587
|
xs: "h-8 w-8 text-[10px]",
|
|
3490
2588
|
sm: "h-10 w-10 text-xs",
|
|
@@ -3516,8 +2614,8 @@ function Avatar(_a) {
|
|
|
3516
2614
|
"badge",
|
|
3517
2615
|
"className"
|
|
3518
2616
|
]);
|
|
3519
|
-
return /* @__PURE__ */
|
|
3520
|
-
/* @__PURE__ */
|
|
2617
|
+
return /* @__PURE__ */ jsxs34("div", __spreadProps(__spreadValues({ className: cn("relative inline-flex shrink-0", className) }, props), { children: [
|
|
2618
|
+
/* @__PURE__ */ jsx38(
|
|
3521
2619
|
"div",
|
|
3522
2620
|
{
|
|
3523
2621
|
className: cn(
|
|
@@ -3528,7 +2626,7 @@ function Avatar(_a) {
|
|
|
3528
2626
|
children: icon || label
|
|
3529
2627
|
}
|
|
3530
2628
|
),
|
|
3531
|
-
status && /* @__PURE__ */
|
|
2629
|
+
status && /* @__PURE__ */ jsx38(
|
|
3532
2630
|
"span",
|
|
3533
2631
|
{
|
|
3534
2632
|
className: cn(
|
|
@@ -3537,7 +2635,7 @@ function Avatar(_a) {
|
|
|
3537
2635
|
)
|
|
3538
2636
|
}
|
|
3539
2637
|
),
|
|
3540
|
-
badge && /* @__PURE__ */
|
|
2638
|
+
badge && /* @__PURE__ */ jsx38("span", { className: "absolute -bottom-1 -right-1 flex min-w-[22px] items-center justify-center rounded-full bg-ph-brand px-1.5 py-px text-[10px] font-bold text-white", children: badge })
|
|
3541
2639
|
] }));
|
|
3542
2640
|
}
|
|
3543
2641
|
function AvatarGroup(_a) {
|
|
@@ -3545,9 +2643,9 @@ function AvatarGroup(_a) {
|
|
|
3545
2643
|
const items = Array.isArray(children) ? children : [children];
|
|
3546
2644
|
const visible = max ? items.slice(0, max) : items;
|
|
3547
2645
|
const remaining = max ? items.length - max : 0;
|
|
3548
|
-
return /* @__PURE__ */
|
|
2646
|
+
return /* @__PURE__ */ jsxs34("div", __spreadProps(__spreadValues({ className: cn("-space-x-3 flex rtl:space-x-reverse", className) }, props), { children: [
|
|
3549
2647
|
visible,
|
|
3550
|
-
remaining > 0 && /* @__PURE__ */
|
|
2648
|
+
remaining > 0 && /* @__PURE__ */ jsx38(
|
|
3551
2649
|
Avatar,
|
|
3552
2650
|
{
|
|
3553
2651
|
label: `+${remaining}`,
|
|
@@ -3559,7 +2657,7 @@ function AvatarGroup(_a) {
|
|
|
3559
2657
|
}
|
|
3560
2658
|
|
|
3561
2659
|
// src/components/ui/Progress.tsx
|
|
3562
|
-
import { jsx as
|
|
2660
|
+
import { jsx as jsx39, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
3563
2661
|
var sizeMap6 = {
|
|
3564
2662
|
sm: "h-1",
|
|
3565
2663
|
md: "h-2",
|
|
@@ -3584,15 +2682,15 @@ function Progress(_a) {
|
|
|
3584
2682
|
"className"
|
|
3585
2683
|
]);
|
|
3586
2684
|
const percentage = Math.min(100, Math.max(0, value / max * 100));
|
|
3587
|
-
return /* @__PURE__ */
|
|
3588
|
-
(label || showPercentage) && /* @__PURE__ */
|
|
3589
|
-
label && /* @__PURE__ */
|
|
3590
|
-
showPercentage && /* @__PURE__ */
|
|
2685
|
+
return /* @__PURE__ */ jsxs35("div", __spreadProps(__spreadValues({ className: cn("w-full", className) }, props), { children: [
|
|
2686
|
+
(label || showPercentage) && /* @__PURE__ */ jsxs35("div", { className: "mb-1.5 flex justify-between text-sm text-ph-subtle", children: [
|
|
2687
|
+
label && /* @__PURE__ */ jsx39("span", { children: label }),
|
|
2688
|
+
showPercentage && /* @__PURE__ */ jsxs35("span", { className: "tabular-nums", children: [
|
|
3591
2689
|
Math.round(percentage),
|
|
3592
2690
|
"%"
|
|
3593
2691
|
] })
|
|
3594
2692
|
] }),
|
|
3595
|
-
/* @__PURE__ */
|
|
2693
|
+
/* @__PURE__ */ jsx39("div", { className: cn("ph-progress", sizeMap6[size]), children: /* @__PURE__ */ jsx39(
|
|
3596
2694
|
"div",
|
|
3597
2695
|
{
|
|
3598
2696
|
className: cn("ph-progress-bar", color),
|
|
@@ -3607,7 +2705,7 @@ function Progress(_a) {
|
|
|
3607
2705
|
}
|
|
3608
2706
|
|
|
3609
2707
|
// src/components/ui/ChatBubble.tsx
|
|
3610
|
-
import { jsx as
|
|
2708
|
+
import { jsx as jsx40, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
3611
2709
|
function ChatBubble(_a) {
|
|
3612
2710
|
var _b = _a, {
|
|
3613
2711
|
children,
|
|
@@ -3627,7 +2725,7 @@ function ChatBubble(_a) {
|
|
|
3627
2725
|
"className"
|
|
3628
2726
|
]);
|
|
3629
2727
|
const isSelf = variant === "self";
|
|
3630
|
-
return /* @__PURE__ */
|
|
2728
|
+
return /* @__PURE__ */ jsxs36(
|
|
3631
2729
|
"div",
|
|
3632
2730
|
__spreadProps(__spreadValues({
|
|
3633
2731
|
className: cn(
|
|
@@ -3637,9 +2735,9 @@ function ChatBubble(_a) {
|
|
|
3637
2735
|
)
|
|
3638
2736
|
}, props), {
|
|
3639
2737
|
children: [
|
|
3640
|
-
avatar && /* @__PURE__ */
|
|
3641
|
-
/* @__PURE__ */
|
|
3642
|
-
(name || time) && /* @__PURE__ */
|
|
2738
|
+
avatar && /* @__PURE__ */ jsx40("div", { className: "shrink-0", children: avatar }),
|
|
2739
|
+
/* @__PURE__ */ jsxs36("div", { className: cn("min-w-0 flex-1", isSelf && "text-right"), children: [
|
|
2740
|
+
(name || time) && /* @__PURE__ */ jsxs36(
|
|
3643
2741
|
"header",
|
|
3644
2742
|
{
|
|
3645
2743
|
className: cn(
|
|
@@ -3647,12 +2745,12 @@ function ChatBubble(_a) {
|
|
|
3647
2745
|
isSelf && "flex-row-reverse justify-end"
|
|
3648
2746
|
),
|
|
3649
2747
|
children: [
|
|
3650
|
-
name && /* @__PURE__ */
|
|
3651
|
-
time && /* @__PURE__ */
|
|
2748
|
+
name && /* @__PURE__ */ jsx40("span", { className: "font-semibold text-ph-ink", children: name }),
|
|
2749
|
+
time && /* @__PURE__ */ jsx40("span", { children: time })
|
|
3652
2750
|
]
|
|
3653
2751
|
}
|
|
3654
2752
|
),
|
|
3655
|
-
/* @__PURE__ */
|
|
2753
|
+
/* @__PURE__ */ jsx40(
|
|
3656
2754
|
"div",
|
|
3657
2755
|
{
|
|
3658
2756
|
className: cn(
|
|
@@ -3662,7 +2760,7 @@ function ChatBubble(_a) {
|
|
|
3662
2760
|
children
|
|
3663
2761
|
}
|
|
3664
2762
|
),
|
|
3665
|
-
footer && /* @__PURE__ */
|
|
2763
|
+
footer && /* @__PURE__ */ jsx40("footer", { className: "mt-2 text-[11px] text-ph-mutedtext", children: footer })
|
|
3666
2764
|
] })
|
|
3667
2765
|
]
|
|
3668
2766
|
})
|
|
@@ -3670,7 +2768,7 @@ function ChatBubble(_a) {
|
|
|
3670
2768
|
}
|
|
3671
2769
|
|
|
3672
2770
|
// src/components/ui/Terminal.tsx
|
|
3673
|
-
import { Fragment as
|
|
2771
|
+
import { Fragment as Fragment5, jsx as jsx41, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
3674
2772
|
function Terminal(_a) {
|
|
3675
2773
|
var _b = _a, {
|
|
3676
2774
|
title = "sandbox",
|
|
@@ -3683,7 +2781,7 @@ function Terminal(_a) {
|
|
|
3683
2781
|
"children",
|
|
3684
2782
|
"className"
|
|
3685
2783
|
]);
|
|
3686
|
-
return /* @__PURE__ */
|
|
2784
|
+
return /* @__PURE__ */ jsxs37(
|
|
3687
2785
|
"div",
|
|
3688
2786
|
__spreadProps(__spreadValues({
|
|
3689
2787
|
className: cn(
|
|
@@ -3692,18 +2790,18 @@ function Terminal(_a) {
|
|
|
3692
2790
|
)
|
|
3693
2791
|
}, props), {
|
|
3694
2792
|
children: [
|
|
3695
|
-
/* @__PURE__ */
|
|
3696
|
-
/* @__PURE__ */
|
|
3697
|
-
/* @__PURE__ */
|
|
3698
|
-
/* @__PURE__ */
|
|
3699
|
-
title && /* @__PURE__ */
|
|
2793
|
+
/* @__PURE__ */ jsxs37("header", { className: "flex items-center gap-2 border-b border-ph-border bg-ph-muted px-4 py-3", children: [
|
|
2794
|
+
/* @__PURE__ */ jsx41("div", { className: "h-3 w-3 rounded-full bg-red-400" }),
|
|
2795
|
+
/* @__PURE__ */ jsx41("div", { className: "h-3 w-3 rounded-full bg-amber-400" }),
|
|
2796
|
+
/* @__PURE__ */ jsx41("div", { className: "h-3 w-3 rounded-full bg-emerald-400" }),
|
|
2797
|
+
title && /* @__PURE__ */ jsx41("span", { className: "text-xs font-medium text-ph-mutedtext", children: title })
|
|
3700
2798
|
] }),
|
|
3701
|
-
/* @__PURE__ */
|
|
2799
|
+
/* @__PURE__ */ jsx41("div", { className: "ph-code rounded-none border-x-0 border-b-0 text-[13px] leading-relaxed", children: children || /* @__PURE__ */ jsx41(Fragment5, { children: lines == null ? void 0 : lines.map((line, i) => {
|
|
3702
2800
|
const text = typeof line === "string" ? line : line.text;
|
|
3703
2801
|
const color = typeof line === "string" ? void 0 : line.color;
|
|
3704
|
-
return /* @__PURE__ */
|
|
3705
|
-
/* @__PURE__ */
|
|
3706
|
-
i < lines.length - 1 && /* @__PURE__ */
|
|
2802
|
+
return /* @__PURE__ */ jsxs37("span", { children: [
|
|
2803
|
+
/* @__PURE__ */ jsx41("span", { className: color || "text-neutral-600", children: text }),
|
|
2804
|
+
i < lines.length - 1 && /* @__PURE__ */ jsx41("br", {})
|
|
3707
2805
|
] }, i);
|
|
3708
2806
|
}) }) })
|
|
3709
2807
|
]
|
|
@@ -3712,7 +2810,7 @@ function Terminal(_a) {
|
|
|
3712
2810
|
}
|
|
3713
2811
|
|
|
3714
2812
|
// src/components/ui/Indicator.tsx
|
|
3715
|
-
import { jsx as
|
|
2813
|
+
import { jsx as jsx42, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
3716
2814
|
var positionMap = {
|
|
3717
2815
|
"top-right": "-right-[2px] -top-[2px]",
|
|
3718
2816
|
"top-left": "-left-[2px] -top-[2px]",
|
|
@@ -3735,8 +2833,8 @@ function Indicator(_a) {
|
|
|
3735
2833
|
"dot",
|
|
3736
2834
|
"className"
|
|
3737
2835
|
]);
|
|
3738
|
-
return /* @__PURE__ */
|
|
3739
|
-
dot ? /* @__PURE__ */
|
|
2836
|
+
return /* @__PURE__ */ jsxs38("div", __spreadProps(__spreadValues({ className: cn("relative inline-flex items-center justify-center", className) }, props), { children: [
|
|
2837
|
+
dot ? /* @__PURE__ */ jsx42(
|
|
3740
2838
|
"span",
|
|
3741
2839
|
{
|
|
3742
2840
|
className: cn(
|
|
@@ -3745,7 +2843,7 @@ function Indicator(_a) {
|
|
|
3745
2843
|
positionMap[position]
|
|
3746
2844
|
)
|
|
3747
2845
|
}
|
|
3748
|
-
) : badge != null ? /* @__PURE__ */
|
|
2846
|
+
) : badge != null ? /* @__PURE__ */ jsx42(
|
|
3749
2847
|
"span",
|
|
3750
2848
|
{
|
|
3751
2849
|
className: cn(
|
|
@@ -3761,7 +2859,7 @@ function Indicator(_a) {
|
|
|
3761
2859
|
}
|
|
3762
2860
|
|
|
3763
2861
|
// src/components/ui/Timeline.tsx
|
|
3764
|
-
import { jsx as
|
|
2862
|
+
import { jsx as jsx43, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
3765
2863
|
function Timeline(_a) {
|
|
3766
2864
|
var _b = _a, {
|
|
3767
2865
|
events,
|
|
@@ -3772,15 +2870,15 @@ function Timeline(_a) {
|
|
|
3772
2870
|
"alternate",
|
|
3773
2871
|
"className"
|
|
3774
2872
|
]);
|
|
3775
|
-
return /* @__PURE__ */
|
|
2873
|
+
return /* @__PURE__ */ jsx43(
|
|
3776
2874
|
"ol",
|
|
3777
2875
|
__spreadProps(__spreadValues({
|
|
3778
2876
|
className: cn("relative space-y-8", className)
|
|
3779
2877
|
}, props), {
|
|
3780
2878
|
children: events.map((event, idx) => {
|
|
3781
2879
|
const align = alternate && idx % 2 !== 0 ? "lg:flex-row-reverse" : "";
|
|
3782
|
-
return /* @__PURE__ */
|
|
3783
|
-
/* @__PURE__ */
|
|
2880
|
+
return /* @__PURE__ */ jsxs39("li", { className: cn("relative flex gap-6", align), children: [
|
|
2881
|
+
/* @__PURE__ */ jsx43(
|
|
3784
2882
|
"div",
|
|
3785
2883
|
{
|
|
3786
2884
|
className: cn(
|
|
@@ -3790,12 +2888,12 @@ function Timeline(_a) {
|
|
|
3790
2888
|
children: event.icon
|
|
3791
2889
|
}
|
|
3792
2890
|
),
|
|
3793
|
-
/* @__PURE__ */
|
|
3794
|
-
/* @__PURE__ */
|
|
3795
|
-
/* @__PURE__ */
|
|
3796
|
-
event.time && /* @__PURE__ */
|
|
2891
|
+
/* @__PURE__ */ jsxs39("article", { className: "flex-1 rounded-xl border border-ph-border bg-ph-surface p-4 shadow-ph", children: [
|
|
2892
|
+
/* @__PURE__ */ jsxs39("div", { className: "flex flex-wrap items-baseline gap-3", children: [
|
|
2893
|
+
/* @__PURE__ */ jsx43("h4", { className: "text-base font-semibold text-ph-ink", children: event.title }),
|
|
2894
|
+
event.time && /* @__PURE__ */ jsx43("time", { className: "text-[11px] font-semibold uppercase tracking-wide text-ph-mutedtext", children: event.time })
|
|
3797
2895
|
] }),
|
|
3798
|
-
event.description && /* @__PURE__ */
|
|
2896
|
+
event.description && /* @__PURE__ */ jsx43("p", { className: "mt-2 text-sm text-ph-subtle", children: event.description })
|
|
3799
2897
|
] })
|
|
3800
2898
|
] }, event.id);
|
|
3801
2899
|
})
|
|
@@ -3804,8 +2902,8 @@ function Timeline(_a) {
|
|
|
3804
2902
|
}
|
|
3805
2903
|
|
|
3806
2904
|
// src/components/ui/Banner.tsx
|
|
3807
|
-
import { forwardRef as
|
|
3808
|
-
import { jsx as
|
|
2905
|
+
import { forwardRef as forwardRef6 } from "react";
|
|
2906
|
+
import { jsx as jsx44, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
3809
2907
|
var typeClass = {
|
|
3810
2908
|
info: "ph-banner-info",
|
|
3811
2909
|
success: "ph-banner-success",
|
|
@@ -3813,7 +2911,7 @@ var typeClass = {
|
|
|
3813
2911
|
danger: "ph-banner-danger",
|
|
3814
2912
|
ai: "ph-banner-ai"
|
|
3815
2913
|
};
|
|
3816
|
-
var Banner =
|
|
2914
|
+
var Banner = forwardRef6(function Banner2(_a, ref) {
|
|
3817
2915
|
var _b = _a, {
|
|
3818
2916
|
type = "info",
|
|
3819
2917
|
onClose,
|
|
@@ -3833,7 +2931,7 @@ var Banner = forwardRef9(function Banner2(_a, ref) {
|
|
|
3833
2931
|
"className",
|
|
3834
2932
|
"children"
|
|
3835
2933
|
]);
|
|
3836
|
-
return /* @__PURE__ */
|
|
2934
|
+
return /* @__PURE__ */ jsx44(
|
|
3837
2935
|
"div",
|
|
3838
2936
|
__spreadProps(__spreadValues({
|
|
3839
2937
|
ref,
|
|
@@ -3845,11 +2943,11 @@ var Banner = forwardRef9(function Banner2(_a, ref) {
|
|
|
3845
2943
|
className
|
|
3846
2944
|
)
|
|
3847
2945
|
}, props), {
|
|
3848
|
-
children: /* @__PURE__ */
|
|
2946
|
+
children: /* @__PURE__ */ jsxs40("div", { className: "ph-banner__body", children: [
|
|
3849
2947
|
icon,
|
|
3850
|
-
/* @__PURE__ */
|
|
3851
|
-
action && /* @__PURE__ */
|
|
3852
|
-
onClose && /* @__PURE__ */
|
|
2948
|
+
/* @__PURE__ */ jsx44("div", { className: "ph-banner__content", children }),
|
|
2949
|
+
action && /* @__PURE__ */ jsx44("div", { className: "ph-banner__action", children: action }),
|
|
2950
|
+
onClose && /* @__PURE__ */ jsx44("button", { type: "button", onClick: onClose, className: "ph-banner__close", "aria-label": "Dismiss", children: /* @__PURE__ */ jsx44("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: /* @__PURE__ */ jsx44("path", { d: "M4 4l8 8M12 4l-8 8" }) }) })
|
|
3853
2951
|
] })
|
|
3854
2952
|
})
|
|
3855
2953
|
);
|
|
@@ -3857,8 +2955,8 @@ var Banner = forwardRef9(function Banner2(_a, ref) {
|
|
|
3857
2955
|
Banner.displayName = "Banner";
|
|
3858
2956
|
|
|
3859
2957
|
// src/components/ui/Dialog.tsx
|
|
3860
|
-
import { useState as
|
|
3861
|
-
import { jsx as
|
|
2958
|
+
import { useState as useState9 } from "react";
|
|
2959
|
+
import { jsx as jsx45, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
3862
2960
|
function Dialog2(_a) {
|
|
3863
2961
|
var _b = _a, {
|
|
3864
2962
|
isOpen: openProp,
|
|
@@ -3881,7 +2979,7 @@ function Dialog2(_a) {
|
|
|
3881
2979
|
"children",
|
|
3882
2980
|
"title"
|
|
3883
2981
|
]);
|
|
3884
|
-
const [loading, setLoading] =
|
|
2982
|
+
const [loading, setLoading] = useState9(false);
|
|
3885
2983
|
const isOpen = openProp != null ? openProp : true;
|
|
3886
2984
|
const handleConfirm = async () => {
|
|
3887
2985
|
if (!onConfirm) return;
|
|
@@ -3893,15 +2991,15 @@ function Dialog2(_a) {
|
|
|
3893
2991
|
}
|
|
3894
2992
|
onClose == null ? void 0 : onClose();
|
|
3895
2993
|
};
|
|
3896
|
-
return /* @__PURE__ */
|
|
2994
|
+
return /* @__PURE__ */ jsx45(
|
|
3897
2995
|
Modal,
|
|
3898
2996
|
__spreadProps(__spreadValues({
|
|
3899
2997
|
open: isOpen,
|
|
3900
2998
|
onClose,
|
|
3901
2999
|
title,
|
|
3902
|
-
footer: /* @__PURE__ */
|
|
3903
|
-
/* @__PURE__ */
|
|
3904
|
-
onConfirm && /* @__PURE__ */
|
|
3000
|
+
footer: /* @__PURE__ */ jsxs41("div", { className: "flex justify-end gap-2", children: [
|
|
3001
|
+
/* @__PURE__ */ jsx45(Button, __spreadProps(__spreadValues({ variant: "secondary" }, cancelProps), { onClick: onClose, children: cancelText })),
|
|
3002
|
+
onConfirm && /* @__PURE__ */ jsx45(
|
|
3905
3003
|
Button,
|
|
3906
3004
|
__spreadProps(__spreadValues({
|
|
3907
3005
|
variant: "primary",
|
|
@@ -3920,7 +3018,7 @@ function Dialog2(_a) {
|
|
|
3920
3018
|
Dialog2.displayName = "Dialog";
|
|
3921
3019
|
|
|
3922
3020
|
// src/components/ui/Divider.tsx
|
|
3923
|
-
import { jsx as
|
|
3021
|
+
import { jsx as jsx46 } from "react/jsx-runtime";
|
|
3924
3022
|
function Divider(_a) {
|
|
3925
3023
|
var _b = _a, {
|
|
3926
3024
|
vertical = false,
|
|
@@ -3935,7 +3033,7 @@ function Divider(_a) {
|
|
|
3935
3033
|
"label",
|
|
3936
3034
|
"className"
|
|
3937
3035
|
]);
|
|
3938
|
-
return /* @__PURE__ */
|
|
3036
|
+
return /* @__PURE__ */ jsx46(
|
|
3939
3037
|
"div",
|
|
3940
3038
|
__spreadProps(__spreadValues({
|
|
3941
3039
|
role: "separator",
|
|
@@ -3950,15 +3048,15 @@ function Divider(_a) {
|
|
|
3950
3048
|
className
|
|
3951
3049
|
)
|
|
3952
3050
|
}, props), {
|
|
3953
|
-
children: label && /* @__PURE__ */
|
|
3051
|
+
children: label && /* @__PURE__ */ jsx46("span", { className: "ph-divider__label", children: label })
|
|
3954
3052
|
})
|
|
3955
3053
|
);
|
|
3956
3054
|
}
|
|
3957
3055
|
Divider.displayName = "Divider";
|
|
3958
3056
|
|
|
3959
3057
|
// src/components/ui/Tag.tsx
|
|
3960
|
-
import { forwardRef as
|
|
3961
|
-
import { jsx as
|
|
3058
|
+
import { forwardRef as forwardRef7 } from "react";
|
|
3059
|
+
import { jsx as jsx47, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
3962
3060
|
var typeClass2 = {
|
|
3963
3061
|
default: "ph-tag-default",
|
|
3964
3062
|
primary: "ph-tag-primary",
|
|
@@ -3969,7 +3067,7 @@ var typeClass2 = {
|
|
|
3969
3067
|
muted: "ph-tag-muted",
|
|
3970
3068
|
highlight: "ph-tag-highlight"
|
|
3971
3069
|
};
|
|
3972
|
-
var Tag =
|
|
3070
|
+
var Tag = forwardRef7(function Tag2(_a, ref) {
|
|
3973
3071
|
var _b = _a, {
|
|
3974
3072
|
type = "default",
|
|
3975
3073
|
size = "md",
|
|
@@ -3987,7 +3085,7 @@ var Tag = forwardRef10(function Tag2(_a, ref) {
|
|
|
3987
3085
|
"className",
|
|
3988
3086
|
"children"
|
|
3989
3087
|
]);
|
|
3990
|
-
return /* @__PURE__ */
|
|
3088
|
+
return /* @__PURE__ */ jsxs42(
|
|
3991
3089
|
"div",
|
|
3992
3090
|
__spreadProps(__spreadValues({
|
|
3993
3091
|
ref,
|
|
@@ -3999,9 +3097,9 @@ var Tag = forwardRef10(function Tag2(_a, ref) {
|
|
|
3999
3097
|
)
|
|
4000
3098
|
}, props), {
|
|
4001
3099
|
children: [
|
|
4002
|
-
icon && /* @__PURE__ */
|
|
4003
|
-
/* @__PURE__ */
|
|
4004
|
-
closable && /* @__PURE__ */
|
|
3100
|
+
icon && /* @__PURE__ */ jsx47("span", { className: "ph-tag__icon", children: icon }),
|
|
3101
|
+
/* @__PURE__ */ jsx47("span", { className: "ph-tag__text", children }),
|
|
3102
|
+
closable && /* @__PURE__ */ jsx47(
|
|
4005
3103
|
"button",
|
|
4006
3104
|
{
|
|
4007
3105
|
type: "button",
|
|
@@ -4011,7 +3109,7 @@ var Tag = forwardRef10(function Tag2(_a, ref) {
|
|
|
4011
3109
|
},
|
|
4012
3110
|
className: "ph-tag__close",
|
|
4013
3111
|
"aria-label": "Remove",
|
|
4014
|
-
children: /* @__PURE__ */
|
|
3112
|
+
children: /* @__PURE__ */ jsx47("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: /* @__PURE__ */ jsx47("path", { d: "M3 3l6 6M9 3l-6 6" }) })
|
|
4015
3113
|
}
|
|
4016
3114
|
)
|
|
4017
3115
|
]
|
|
@@ -4021,7 +3119,7 @@ var Tag = forwardRef10(function Tag2(_a, ref) {
|
|
|
4021
3119
|
Tag.displayName = "Tag";
|
|
4022
3120
|
|
|
4023
3121
|
// src/components/ui/ProgressCircle.tsx
|
|
4024
|
-
import { jsx as
|
|
3122
|
+
import { jsx as jsx48, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
4025
3123
|
function ProgressCircle(_a) {
|
|
4026
3124
|
var _b = _a, {
|
|
4027
3125
|
progress,
|
|
@@ -4040,7 +3138,7 @@ function ProgressCircle(_a) {
|
|
|
4040
3138
|
const radius = (size - stroke) / 2;
|
|
4041
3139
|
const circumference = 2 * Math.PI * radius;
|
|
4042
3140
|
const offset = circumference - Math.min(1, Math.max(0, progress)) * circumference;
|
|
4043
|
-
return /* @__PURE__ */
|
|
3141
|
+
return /* @__PURE__ */ jsxs43(
|
|
4044
3142
|
"span",
|
|
4045
3143
|
__spreadProps(__spreadValues({
|
|
4046
3144
|
className: cn("ph-progress-circle", className),
|
|
@@ -4051,8 +3149,8 @@ function ProgressCircle(_a) {
|
|
|
4051
3149
|
"aria-valuemax": 100
|
|
4052
3150
|
}, props), {
|
|
4053
3151
|
children: [
|
|
4054
|
-
/* @__PURE__ */
|
|
4055
|
-
/* @__PURE__ */
|
|
3152
|
+
/* @__PURE__ */ jsxs43("svg", { width: size, height: size, children: [
|
|
3153
|
+
/* @__PURE__ */ jsx48(
|
|
4056
3154
|
"circle",
|
|
4057
3155
|
{
|
|
4058
3156
|
cx: size / 2,
|
|
@@ -4064,7 +3162,7 @@ function ProgressCircle(_a) {
|
|
|
4064
3162
|
opacity: 0.15
|
|
4065
3163
|
}
|
|
4066
3164
|
),
|
|
4067
|
-
/* @__PURE__ */
|
|
3165
|
+
/* @__PURE__ */ jsx48(
|
|
4068
3166
|
"circle",
|
|
4069
3167
|
{
|
|
4070
3168
|
cx: size / 2,
|
|
@@ -4081,7 +3179,7 @@ function ProgressCircle(_a) {
|
|
|
4081
3179
|
}
|
|
4082
3180
|
)
|
|
4083
3181
|
] }),
|
|
4084
|
-
children && /* @__PURE__ */
|
|
3182
|
+
children && /* @__PURE__ */ jsx48("span", { className: "ph-progress-circle__content", children })
|
|
4085
3183
|
]
|
|
4086
3184
|
})
|
|
4087
3185
|
);
|
|
@@ -4089,9 +3187,9 @@ function ProgressCircle(_a) {
|
|
|
4089
3187
|
ProgressCircle.displayName = "ProgressCircle";
|
|
4090
3188
|
|
|
4091
3189
|
// src/components/ui/Row.tsx
|
|
4092
|
-
import { forwardRef as
|
|
4093
|
-
import { jsx as
|
|
4094
|
-
var Row =
|
|
3190
|
+
import { forwardRef as forwardRef8 } from "react";
|
|
3191
|
+
import { jsx as jsx49, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
3192
|
+
var Row = forwardRef8(function Row2(_a, ref) {
|
|
4095
3193
|
var _b = _a, {
|
|
4096
3194
|
icon,
|
|
4097
3195
|
sideIcon,
|
|
@@ -4112,7 +3210,7 @@ var Row = forwardRef11(function Row2(_a, ref) {
|
|
|
4112
3210
|
"children"
|
|
4113
3211
|
]);
|
|
4114
3212
|
const symbolic = children === null || children === void 0 || children === false;
|
|
4115
|
-
return /* @__PURE__ */
|
|
3213
|
+
return /* @__PURE__ */ jsx49(
|
|
4116
3214
|
"div",
|
|
4117
3215
|
__spreadProps(__spreadValues({
|
|
4118
3216
|
ref,
|
|
@@ -4127,10 +3225,10 @@ var Row = forwardRef11(function Row2(_a, ref) {
|
|
|
4127
3225
|
className
|
|
4128
3226
|
)
|
|
4129
3227
|
}, props), {
|
|
4130
|
-
children: /* @__PURE__ */
|
|
4131
|
-
icon && /* @__PURE__ */
|
|
4132
|
-
!symbolic && /* @__PURE__ */
|
|
4133
|
-
sideIcon && /* @__PURE__ */
|
|
3228
|
+
children: /* @__PURE__ */ jsxs44("div", { className: "ph-row__main", children: [
|
|
3229
|
+
icon && /* @__PURE__ */ jsx49("span", { className: "ph-row__icon", children: icon }),
|
|
3230
|
+
!symbolic && /* @__PURE__ */ jsx49("div", { className: "ph-row__content", children }),
|
|
3231
|
+
sideIcon && /* @__PURE__ */ jsx49("span", { className: "ph-row__side-icon", children: sideIcon })
|
|
4134
3232
|
] })
|
|
4135
3233
|
})
|
|
4136
3234
|
);
|
|
@@ -4138,23 +3236,23 @@ var Row = forwardRef11(function Row2(_a, ref) {
|
|
|
4138
3236
|
Row.displayName = "Row";
|
|
4139
3237
|
|
|
4140
3238
|
// src/components/ui/Widget.tsx
|
|
4141
|
-
import { jsx as
|
|
3239
|
+
import { jsx as jsx50, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
4142
3240
|
function Widget({ title, onClose, actions, children, className }) {
|
|
4143
|
-
return /* @__PURE__ */
|
|
4144
|
-
/* @__PURE__ */
|
|
4145
|
-
/* @__PURE__ */
|
|
3241
|
+
return /* @__PURE__ */ jsxs45("div", { className: cn("ph-widget", className), children: [
|
|
3242
|
+
/* @__PURE__ */ jsxs45("div", { className: "ph-widget__header", children: [
|
|
3243
|
+
/* @__PURE__ */ jsx50("span", { className: "ph-widget__title", children: title }),
|
|
4146
3244
|
actions,
|
|
4147
|
-
onClose && /* @__PURE__ */
|
|
3245
|
+
onClose && /* @__PURE__ */ jsx50("button", { type: "button", onClick: onClose, className: "ph-widget__close", "aria-label": "Close", children: /* @__PURE__ */ jsx50("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: /* @__PURE__ */ jsx50("path", { d: "M3 3l8 8M11 3l-8 8" }) }) })
|
|
4148
3246
|
] }),
|
|
4149
|
-
/* @__PURE__ */
|
|
3247
|
+
/* @__PURE__ */ jsx50("div", { className: "ph-widget__content", children })
|
|
4150
3248
|
] });
|
|
4151
3249
|
}
|
|
4152
3250
|
Widget.displayName = "Widget";
|
|
4153
3251
|
|
|
4154
3252
|
// src/components/ui/Lettermark.tsx
|
|
4155
|
-
import { forwardRef as
|
|
4156
|
-
import { jsx as
|
|
4157
|
-
var Lettermark =
|
|
3253
|
+
import { forwardRef as forwardRef9 } from "react";
|
|
3254
|
+
import { jsx as jsx51 } from "react/jsx-runtime";
|
|
3255
|
+
var Lettermark = forwardRef9(function Lettermark2(_a, ref) {
|
|
4158
3256
|
var _b = _a, {
|
|
4159
3257
|
name,
|
|
4160
3258
|
index,
|
|
@@ -4171,7 +3269,7 @@ var Lettermark = forwardRef12(function Lettermark2(_a, ref) {
|
|
|
4171
3269
|
"className"
|
|
4172
3270
|
]);
|
|
4173
3271
|
const letter = name ? typeof name === "number" ? String(Math.floor(name)) : String.fromCodePoint(name.codePointAt(0)).toLocaleUpperCase() : "?";
|
|
4174
|
-
return /* @__PURE__ */
|
|
3272
|
+
return /* @__PURE__ */ jsx51(
|
|
4175
3273
|
"div",
|
|
4176
3274
|
__spreadProps(__spreadValues({
|
|
4177
3275
|
ref,
|
|
@@ -4193,7 +3291,7 @@ var Lettermark = forwardRef12(function Lettermark2(_a, ref) {
|
|
|
4193
3291
|
Lettermark.displayName = "Lettermark";
|
|
4194
3292
|
|
|
4195
3293
|
// src/components/ui/Splotch.tsx
|
|
4196
|
-
import { jsx as
|
|
3294
|
+
import { jsx as jsx52 } from "react/jsx-runtime";
|
|
4197
3295
|
var colorMap = {
|
|
4198
3296
|
purple: "ph-splotch--purple",
|
|
4199
3297
|
blue: "ph-splotch--blue",
|
|
@@ -4206,21 +3304,21 @@ var colorMap = {
|
|
|
4206
3304
|
};
|
|
4207
3305
|
function Splotch(_a) {
|
|
4208
3306
|
var _b = _a, { color, className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
4209
|
-
return /* @__PURE__ */
|
|
3307
|
+
return /* @__PURE__ */ jsx52(
|
|
4210
3308
|
"div",
|
|
4211
3309
|
__spreadProps(__spreadValues({
|
|
4212
3310
|
className: cn("ph-splotch", colorMap[color], className),
|
|
4213
3311
|
"aria-hidden": "true"
|
|
4214
3312
|
}, props), {
|
|
4215
|
-
children: /* @__PURE__ */
|
|
3313
|
+
children: /* @__PURE__ */ jsx52("div", { className: "ph-splotch__paint" })
|
|
4216
3314
|
})
|
|
4217
3315
|
);
|
|
4218
3316
|
}
|
|
4219
3317
|
Splotch.displayName = "Splotch";
|
|
4220
3318
|
|
|
4221
3319
|
// src/components/ui/Popover.tsx
|
|
4222
|
-
import { useState as
|
|
4223
|
-
import { jsx as
|
|
3320
|
+
import { useState as useState10, useRef as useRef3, useEffect as useEffect3 } from "react";
|
|
3321
|
+
import { jsx as jsx53, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
4224
3322
|
function Popover(_a) {
|
|
4225
3323
|
var _b = _a, {
|
|
4226
3324
|
trigger,
|
|
@@ -4242,12 +3340,12 @@ function Popover(_a) {
|
|
|
4242
3340
|
"className"
|
|
4243
3341
|
]);
|
|
4244
3342
|
var _a2;
|
|
4245
|
-
const [internalOpen, setInternalOpen] =
|
|
3343
|
+
const [internalOpen, setInternalOpen] = useState10(false);
|
|
4246
3344
|
const isOpen = controlledOpen != null ? controlledOpen : internalOpen;
|
|
4247
3345
|
const setOpen = onOpenChange != null ? onOpenChange : setInternalOpen;
|
|
4248
|
-
const triggerRef =
|
|
4249
|
-
const panelRef =
|
|
4250
|
-
|
|
3346
|
+
const triggerRef = useRef3(null);
|
|
3347
|
+
const panelRef = useRef3(null);
|
|
3348
|
+
useEffect3(() => {
|
|
4251
3349
|
if (!isOpen) return;
|
|
4252
3350
|
const handleClick = (e) => {
|
|
4253
3351
|
if (triggerRef.current && !triggerRef.current.contains(e.target) && panelRef.current && !panelRef.current.contains(e.target)) {
|
|
@@ -4257,8 +3355,8 @@ function Popover(_a) {
|
|
|
4257
3355
|
document.addEventListener("mousedown", handleClick);
|
|
4258
3356
|
return () => document.removeEventListener("mousedown", handleClick);
|
|
4259
3357
|
}, [isOpen, setOpen]);
|
|
4260
|
-
return /* @__PURE__ */
|
|
4261
|
-
/* @__PURE__ */
|
|
3358
|
+
return /* @__PURE__ */ jsxs46("div", __spreadProps(__spreadValues({ className: cn("ph-popover relative inline-flex", className) }, props), { children: [
|
|
3359
|
+
/* @__PURE__ */ jsx53(
|
|
4262
3360
|
"div",
|
|
4263
3361
|
{
|
|
4264
3362
|
ref: triggerRef,
|
|
@@ -4267,7 +3365,7 @@ function Popover(_a) {
|
|
|
4267
3365
|
children: trigger
|
|
4268
3366
|
}
|
|
4269
3367
|
),
|
|
4270
|
-
isOpen && /* @__PURE__ */
|
|
3368
|
+
isOpen && /* @__PURE__ */ jsx53(
|
|
4271
3369
|
"div",
|
|
4272
3370
|
{
|
|
4273
3371
|
ref: panelRef,
|
|
@@ -4286,10 +3384,10 @@ function Popover(_a) {
|
|
|
4286
3384
|
Popover.displayName = "Popover";
|
|
4287
3385
|
|
|
4288
3386
|
// src/components/ui/LoadingBar.tsx
|
|
4289
|
-
import { jsx as
|
|
3387
|
+
import { jsx as jsx54 } from "react/jsx-runtime";
|
|
4290
3388
|
function LoadingBar(_a) {
|
|
4291
3389
|
var _b = _a, { active = true, className } = _b, props = __objRest(_b, ["active", "className"]);
|
|
4292
|
-
return /* @__PURE__ */
|
|
3390
|
+
return /* @__PURE__ */ jsx54(
|
|
4293
3391
|
"div",
|
|
4294
3392
|
__spreadProps(__spreadValues({
|
|
4295
3393
|
className: cn(
|
|
@@ -4300,16 +3398,16 @@ function LoadingBar(_a) {
|
|
|
4300
3398
|
role: "progressbar",
|
|
4301
3399
|
"aria-label": "Loading"
|
|
4302
3400
|
}, props), {
|
|
4303
|
-
children: /* @__PURE__ */
|
|
3401
|
+
children: /* @__PURE__ */ jsx54("div", { className: "ph-loading-bar__fill" })
|
|
4304
3402
|
})
|
|
4305
3403
|
);
|
|
4306
3404
|
}
|
|
4307
3405
|
LoadingBar.displayName = "LoadingBar";
|
|
4308
3406
|
|
|
4309
3407
|
// src/components/ui/Link.tsx
|
|
4310
|
-
import { forwardRef as
|
|
4311
|
-
import { jsx as
|
|
4312
|
-
var Link =
|
|
3408
|
+
import { forwardRef as forwardRef10 } from "react";
|
|
3409
|
+
import { jsx as jsx55 } from "react/jsx-runtime";
|
|
3410
|
+
var Link = forwardRef10(function Link2(_a, ref) {
|
|
4313
3411
|
var _b = _a, {
|
|
4314
3412
|
className,
|
|
4315
3413
|
disabled = false,
|
|
@@ -4319,7 +3417,7 @@ var Link = forwardRef13(function Link2(_a, ref) {
|
|
|
4319
3417
|
"disabled",
|
|
4320
3418
|
"children"
|
|
4321
3419
|
]);
|
|
4322
|
-
return /* @__PURE__ */
|
|
3420
|
+
return /* @__PURE__ */ jsx55(
|
|
4323
3421
|
"a",
|
|
4324
3422
|
__spreadProps(__spreadValues({
|
|
4325
3423
|
ref,
|
|
@@ -4338,10 +3436,10 @@ var Link = forwardRef13(function Link2(_a, ref) {
|
|
|
4338
3436
|
Link.displayName = "Link";
|
|
4339
3437
|
|
|
4340
3438
|
// src/components/ui/Spinner.tsx
|
|
4341
|
-
import { jsx as
|
|
3439
|
+
import { jsx as jsx56, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
4342
3440
|
function Spinner(_a) {
|
|
4343
3441
|
var _b = _a, { size = "sm", textColored = false, className } = _b, props = __objRest(_b, ["size", "textColored", "className"]);
|
|
4344
|
-
return /* @__PURE__ */
|
|
3442
|
+
return /* @__PURE__ */ jsx56(
|
|
4345
3443
|
"span",
|
|
4346
3444
|
__spreadProps(__spreadValues({
|
|
4347
3445
|
className: cn(
|
|
@@ -4353,9 +3451,9 @@ function Spinner(_a) {
|
|
|
4353
3451
|
role: "status",
|
|
4354
3452
|
"aria-label": "Loading"
|
|
4355
3453
|
}, props), {
|
|
4356
|
-
children: /* @__PURE__ */
|
|
4357
|
-
/* @__PURE__ */
|
|
4358
|
-
/* @__PURE__ */
|
|
3454
|
+
children: /* @__PURE__ */ jsxs47("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: "ph-spinner__svg", children: [
|
|
3455
|
+
/* @__PURE__ */ jsx56("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "3", opacity: 0.2 }),
|
|
3456
|
+
/* @__PURE__ */ jsx56("path", { d: "M12 2a10 10 0 0 1 10 10", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round" })
|
|
4359
3457
|
] })
|
|
4360
3458
|
})
|
|
4361
3459
|
);
|
|
@@ -4363,9 +3461,9 @@ function Spinner(_a) {
|
|
|
4363
3461
|
Spinner.displayName = "Spinner";
|
|
4364
3462
|
|
|
4365
3463
|
// src/components/ui/Snack.tsx
|
|
4366
|
-
import { forwardRef as
|
|
4367
|
-
import { jsx as
|
|
4368
|
-
var Snack =
|
|
3464
|
+
import { forwardRef as forwardRef11 } from "react";
|
|
3465
|
+
import { jsx as jsx57, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
3466
|
+
var Snack = forwardRef11(function Snack2(_a, ref) {
|
|
4369
3467
|
var _b = _a, {
|
|
4370
3468
|
type = "regular",
|
|
4371
3469
|
onClose,
|
|
@@ -4379,7 +3477,7 @@ var Snack = forwardRef14(function Snack2(_a, ref) {
|
|
|
4379
3477
|
"className",
|
|
4380
3478
|
"children"
|
|
4381
3479
|
]);
|
|
4382
|
-
return /* @__PURE__ */
|
|
3480
|
+
return /* @__PURE__ */ jsxs48(
|
|
4383
3481
|
"span",
|
|
4384
3482
|
__spreadProps(__spreadValues({
|
|
4385
3483
|
ref,
|
|
@@ -4392,8 +3490,8 @@ var Snack = forwardRef14(function Snack2(_a, ref) {
|
|
|
4392
3490
|
title: typeof children === "string" ? children : void 0
|
|
4393
3491
|
}, props), {
|
|
4394
3492
|
children: [
|
|
4395
|
-
/* @__PURE__ */
|
|
4396
|
-
onClose && /* @__PURE__ */
|
|
3493
|
+
/* @__PURE__ */ jsx57("span", { className: "ph-snack__text", children }),
|
|
3494
|
+
onClose && /* @__PURE__ */ jsx57(
|
|
4397
3495
|
"button",
|
|
4398
3496
|
{
|
|
4399
3497
|
type: "button",
|
|
@@ -4403,7 +3501,7 @@ var Snack = forwardRef14(function Snack2(_a, ref) {
|
|
|
4403
3501
|
},
|
|
4404
3502
|
className: "ph-snack__close",
|
|
4405
3503
|
"aria-label": "Remove",
|
|
4406
|
-
children: /* @__PURE__ */
|
|
3504
|
+
children: /* @__PURE__ */ jsx57("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: /* @__PURE__ */ jsx57("path", { d: "M3 3l6 6M9 3l-6 6" }) })
|
|
4407
3505
|
}
|
|
4408
3506
|
)
|
|
4409
3507
|
]
|
|
@@ -4413,8 +3511,8 @@ var Snack = forwardRef14(function Snack2(_a, ref) {
|
|
|
4413
3511
|
Snack.displayName = "Snack";
|
|
4414
3512
|
|
|
4415
3513
|
// src/components/ui/Combobox.tsx
|
|
4416
|
-
import { useState as
|
|
4417
|
-
import { jsx as
|
|
3514
|
+
import { useState as useState11, useRef as useRef4, useEffect as useEffect4 } from "react";
|
|
3515
|
+
import { jsx as jsx58, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
4418
3516
|
function Combobox({
|
|
4419
3517
|
options,
|
|
4420
3518
|
value = [],
|
|
@@ -4423,10 +3521,10 @@ function Combobox({
|
|
|
4423
3521
|
className,
|
|
4424
3522
|
disabled
|
|
4425
3523
|
}) {
|
|
4426
|
-
const [open, setOpen] =
|
|
4427
|
-
const [search, setSearch] =
|
|
4428
|
-
const inputRef =
|
|
4429
|
-
const containerRef =
|
|
3524
|
+
const [open, setOpen] = useState11(false);
|
|
3525
|
+
const [search, setSearch] = useState11("");
|
|
3526
|
+
const inputRef = useRef4(null);
|
|
3527
|
+
const containerRef = useRef4(null);
|
|
4430
3528
|
const filtered = options.filter(
|
|
4431
3529
|
(o) => o.label.toLowerCase().includes(search.toLowerCase())
|
|
4432
3530
|
);
|
|
@@ -4435,7 +3533,7 @@ function Combobox({
|
|
|
4435
3533
|
const next = selectedSet.has(val) ? value.filter((v) => v !== val) : [...value, val];
|
|
4436
3534
|
onChange == null ? void 0 : onChange(next);
|
|
4437
3535
|
};
|
|
4438
|
-
|
|
3536
|
+
useEffect4(() => {
|
|
4439
3537
|
if (!open) return;
|
|
4440
3538
|
const handle = (e) => {
|
|
4441
3539
|
if (containerRef.current && !containerRef.current.contains(e.target)) {
|
|
@@ -4445,26 +3543,26 @@ function Combobox({
|
|
|
4445
3543
|
document.addEventListener("mousedown", handle);
|
|
4446
3544
|
return () => document.removeEventListener("mousedown", handle);
|
|
4447
3545
|
}, [open]);
|
|
4448
|
-
return /* @__PURE__ */
|
|
4449
|
-
/* @__PURE__ */
|
|
4450
|
-
value.length > 0 && /* @__PURE__ */
|
|
3546
|
+
return /* @__PURE__ */ jsxs49("div", { ref: containerRef, className: cn("ph-combobox relative", className), children: [
|
|
3547
|
+
/* @__PURE__ */ jsxs49("div", { className: "ph-combobox__input-wrap", children: [
|
|
3548
|
+
value.length > 0 && /* @__PURE__ */ jsx58("div", { className: "ph-combobox__chips", children: value.map((v) => {
|
|
4451
3549
|
var _a, _b;
|
|
4452
3550
|
const opt = options.find((o) => o.value === v);
|
|
4453
|
-
return /* @__PURE__ */
|
|
3551
|
+
return /* @__PURE__ */ jsxs49("span", { className: "ph-combobox__chip", children: [
|
|
4454
3552
|
(_a = opt == null ? void 0 : opt.label) != null ? _a : v,
|
|
4455
|
-
/* @__PURE__ */
|
|
3553
|
+
/* @__PURE__ */ jsx58(
|
|
4456
3554
|
"button",
|
|
4457
3555
|
{
|
|
4458
3556
|
type: "button",
|
|
4459
3557
|
onClick: () => toggle(v),
|
|
4460
3558
|
className: "ph-combobox__chip-remove",
|
|
4461
3559
|
"aria-label": `Remove ${(_b = opt == null ? void 0 : opt.label) != null ? _b : v}`,
|
|
4462
|
-
children: /* @__PURE__ */
|
|
3560
|
+
children: /* @__PURE__ */ jsx58("svg", { width: "10", height: "10", viewBox: "0 0 10 10", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: /* @__PURE__ */ jsx58("path", { d: "M2 2l6 6M8 2l-6 6" }) })
|
|
4463
3561
|
}
|
|
4464
3562
|
)
|
|
4465
3563
|
] }, v);
|
|
4466
3564
|
}) }),
|
|
4467
|
-
/* @__PURE__ */
|
|
3565
|
+
/* @__PURE__ */ jsx58(
|
|
4468
3566
|
"input",
|
|
4469
3567
|
{
|
|
4470
3568
|
ref: inputRef,
|
|
@@ -4481,7 +3579,7 @@ function Combobox({
|
|
|
4481
3579
|
}
|
|
4482
3580
|
)
|
|
4483
3581
|
] }),
|
|
4484
|
-
open && filtered.length > 0 && /* @__PURE__ */
|
|
3582
|
+
open && filtered.length > 0 && /* @__PURE__ */ jsx58("div", { className: "ph-combobox__dropdown", children: filtered.map((opt) => /* @__PURE__ */ jsxs49(
|
|
4485
3583
|
"button",
|
|
4486
3584
|
{
|
|
4487
3585
|
type: "button",
|
|
@@ -4491,8 +3589,8 @@ function Combobox({
|
|
|
4491
3589
|
selectedSet.has(opt.value) && "ph-combobox__option--selected"
|
|
4492
3590
|
),
|
|
4493
3591
|
children: [
|
|
4494
|
-
selectedSet.has(opt.value) && /* @__PURE__ */
|
|
4495
|
-
/* @__PURE__ */
|
|
3592
|
+
selectedSet.has(opt.value) && /* @__PURE__ */ jsx58("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsx58("path", { d: "M2.5 6l2.5 2.5 4.5-5" }) }),
|
|
3593
|
+
/* @__PURE__ */ jsx58("span", { children: opt.label })
|
|
4496
3594
|
]
|
|
4497
3595
|
},
|
|
4498
3596
|
opt.value
|
|
@@ -4502,8 +3600,8 @@ function Combobox({
|
|
|
4502
3600
|
Combobox.displayName = "Combobox";
|
|
4503
3601
|
|
|
4504
3602
|
// src/components/ui/Autocomplete.tsx
|
|
4505
|
-
import { useState as
|
|
4506
|
-
import { jsx as
|
|
3603
|
+
import { useState as useState12, useRef as useRef5, useEffect as useEffect5 } from "react";
|
|
3604
|
+
import { jsx as jsx59, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
4507
3605
|
function Autocomplete(_a) {
|
|
4508
3606
|
var _b = _a, {
|
|
4509
3607
|
options,
|
|
@@ -4520,12 +3618,12 @@ function Autocomplete(_a) {
|
|
|
4520
3618
|
"onChange",
|
|
4521
3619
|
"placeholder"
|
|
4522
3620
|
]);
|
|
4523
|
-
const [open, setOpen] =
|
|
4524
|
-
const [search, setSearch] =
|
|
4525
|
-
const [activeIndex, setActiveIndex] =
|
|
4526
|
-
const containerRef =
|
|
4527
|
-
const inputRef =
|
|
4528
|
-
const listRef =
|
|
3621
|
+
const [open, setOpen] = useState12(false);
|
|
3622
|
+
const [search, setSearch] = useState12("");
|
|
3623
|
+
const [activeIndex, setActiveIndex] = useState12(-1);
|
|
3624
|
+
const containerRef = useRef5(null);
|
|
3625
|
+
const inputRef = useRef5(null);
|
|
3626
|
+
const listRef = useRef5(null);
|
|
4529
3627
|
const filtered = options.filter(
|
|
4530
3628
|
(o) => o.label.toLowerCase().includes(search.toLowerCase())
|
|
4531
3629
|
);
|
|
@@ -4534,7 +3632,7 @@ function Autocomplete(_a) {
|
|
|
4534
3632
|
setOpen(false);
|
|
4535
3633
|
onSelect == null ? void 0 : onSelect(opt);
|
|
4536
3634
|
};
|
|
4537
|
-
|
|
3635
|
+
useEffect5(() => {
|
|
4538
3636
|
if (!open) {
|
|
4539
3637
|
setActiveIndex(-1);
|
|
4540
3638
|
return;
|
|
@@ -4568,14 +3666,14 @@ function Autocomplete(_a) {
|
|
|
4568
3666
|
document.removeEventListener("keydown", handleKey);
|
|
4569
3667
|
};
|
|
4570
3668
|
}, [open, filtered, activeIndex]);
|
|
4571
|
-
|
|
3669
|
+
useEffect5(() => {
|
|
4572
3670
|
if (activeIndex >= 0 && listRef.current) {
|
|
4573
3671
|
const el = listRef.current.children[activeIndex];
|
|
4574
3672
|
el == null ? void 0 : el.scrollIntoView({ block: "nearest" });
|
|
4575
3673
|
}
|
|
4576
3674
|
}, [activeIndex]);
|
|
4577
|
-
return /* @__PURE__ */
|
|
4578
|
-
/* @__PURE__ */
|
|
3675
|
+
return /* @__PURE__ */ jsxs50("div", { ref: containerRef, className: cn("ph-autocomplete relative", className), children: [
|
|
3676
|
+
/* @__PURE__ */ jsx59(
|
|
4579
3677
|
"input",
|
|
4580
3678
|
__spreadValues({
|
|
4581
3679
|
ref: inputRef,
|
|
@@ -4591,7 +3689,7 @@ function Autocomplete(_a) {
|
|
|
4591
3689
|
className: "ph-input w-full"
|
|
4592
3690
|
}, inputProps)
|
|
4593
3691
|
),
|
|
4594
|
-
open && filtered.length > 0 && /* @__PURE__ */
|
|
3692
|
+
open && filtered.length > 0 && /* @__PURE__ */ jsx59("div", { ref: listRef, className: "ph-autocomplete__dropdown", role: "listbox", children: filtered.map((opt, i) => /* @__PURE__ */ jsx59(
|
|
4595
3693
|
"button",
|
|
4596
3694
|
{
|
|
4597
3695
|
type: "button",
|
|
@@ -4612,14 +3710,14 @@ function Autocomplete(_a) {
|
|
|
4612
3710
|
Autocomplete.displayName = "Autocomplete";
|
|
4613
3711
|
|
|
4614
3712
|
// src/components/ui/ContextMenu.tsx
|
|
4615
|
-
import { useState as
|
|
4616
|
-
import { jsx as
|
|
3713
|
+
import { useState as useState13, useRef as useRef6, useEffect as useEffect6 } from "react";
|
|
3714
|
+
import { jsx as jsx60, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
4617
3715
|
function ContextMenu(_a) {
|
|
4618
3716
|
var _b = _a, { items, children, className } = _b, props = __objRest(_b, ["items", "children", "className"]);
|
|
4619
|
-
const [open, setOpen] =
|
|
4620
|
-
const [pos, setPos] =
|
|
4621
|
-
const menuRef =
|
|
4622
|
-
|
|
3717
|
+
const [open, setOpen] = useState13(false);
|
|
3718
|
+
const [pos, setPos] = useState13({ x: 0, y: 0 });
|
|
3719
|
+
const menuRef = useRef6(null);
|
|
3720
|
+
useEffect6(() => {
|
|
4623
3721
|
if (!open) return;
|
|
4624
3722
|
const handle = (e) => {
|
|
4625
3723
|
if (menuRef.current && !menuRef.current.contains(e.target)) {
|
|
@@ -4636,7 +3734,7 @@ function ContextMenu(_a) {
|
|
|
4636
3734
|
document.removeEventListener("keydown", handleKey);
|
|
4637
3735
|
};
|
|
4638
3736
|
}, [open]);
|
|
4639
|
-
return /* @__PURE__ */
|
|
3737
|
+
return /* @__PURE__ */ jsxs51(
|
|
4640
3738
|
"div",
|
|
4641
3739
|
__spreadProps(__spreadValues({
|
|
4642
3740
|
className: cn("ph-context-menu", className),
|
|
@@ -4648,14 +3746,14 @@ function ContextMenu(_a) {
|
|
|
4648
3746
|
}, props), {
|
|
4649
3747
|
children: [
|
|
4650
3748
|
children,
|
|
4651
|
-
open && /* @__PURE__ */
|
|
3749
|
+
open && /* @__PURE__ */ jsx60(
|
|
4652
3750
|
"div",
|
|
4653
3751
|
{
|
|
4654
3752
|
ref: menuRef,
|
|
4655
3753
|
className: "ph-context-menu__panel",
|
|
4656
3754
|
style: { left: pos.x, top: pos.y },
|
|
4657
3755
|
children: items.map(
|
|
4658
|
-
(item, i) => item.separator ? /* @__PURE__ */
|
|
3756
|
+
(item, i) => item.separator ? /* @__PURE__ */ jsx60("div", { className: "ph-context-menu__separator" }, i) : /* @__PURE__ */ jsxs51(
|
|
4659
3757
|
"button",
|
|
4660
3758
|
{
|
|
4661
3759
|
type: "button",
|
|
@@ -4667,8 +3765,8 @@ function ContextMenu(_a) {
|
|
|
4667
3765
|
},
|
|
4668
3766
|
className: "ph-context-menu__item",
|
|
4669
3767
|
children: [
|
|
4670
|
-
item.icon && /* @__PURE__ */
|
|
4671
|
-
/* @__PURE__ */
|
|
3768
|
+
item.icon && /* @__PURE__ */ jsx60("span", { className: "ph-context-menu__icon", children: item.icon }),
|
|
3769
|
+
/* @__PURE__ */ jsx60("span", { children: item.label })
|
|
4672
3770
|
]
|
|
4673
3771
|
},
|
|
4674
3772
|
i
|
|
@@ -4683,8 +3781,8 @@ function ContextMenu(_a) {
|
|
|
4683
3781
|
ContextMenu.displayName = "ContextMenu";
|
|
4684
3782
|
|
|
4685
3783
|
// src/components/ui/Resizable.tsx
|
|
4686
|
-
import { useState as
|
|
4687
|
-
import { jsx as
|
|
3784
|
+
import { useState as useState14, useRef as useRef7, useCallback } from "react";
|
|
3785
|
+
import { jsx as jsx61, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
4688
3786
|
function Resizable(_a) {
|
|
4689
3787
|
var _b = _a, {
|
|
4690
3788
|
left,
|
|
@@ -4701,9 +3799,9 @@ function Resizable(_a) {
|
|
|
4701
3799
|
"minRightWidth",
|
|
4702
3800
|
"className"
|
|
4703
3801
|
]);
|
|
4704
|
-
const [leftPercent, setLeftPercent] =
|
|
4705
|
-
const dragging =
|
|
4706
|
-
const containerRef =
|
|
3802
|
+
const [leftPercent, setLeftPercent] = useState14(defaultLeftWidth);
|
|
3803
|
+
const dragging = useRef7(false);
|
|
3804
|
+
const containerRef = useRef7(null);
|
|
4707
3805
|
const handleMouseDown = useCallback((e) => {
|
|
4708
3806
|
e.preventDefault();
|
|
4709
3807
|
dragging.current = true;
|
|
@@ -4724,22 +3822,22 @@ function Resizable(_a) {
|
|
|
4724
3822
|
document.addEventListener("mousemove", handleMove);
|
|
4725
3823
|
document.addEventListener("mouseup", handleUp);
|
|
4726
3824
|
}, [leftPercent, minLeftWidth, minRightWidth]);
|
|
4727
|
-
return /* @__PURE__ */
|
|
3825
|
+
return /* @__PURE__ */ jsxs52(
|
|
4728
3826
|
"div",
|
|
4729
3827
|
__spreadProps(__spreadValues({
|
|
4730
3828
|
ref: containerRef,
|
|
4731
3829
|
className: cn("ph-resizable flex overflow-hidden", className)
|
|
4732
3830
|
}, props), {
|
|
4733
3831
|
children: [
|
|
4734
|
-
/* @__PURE__ */
|
|
4735
|
-
/* @__PURE__ */
|
|
3832
|
+
/* @__PURE__ */ jsx61("div", { className: "ph-resizable__left overflow-auto", style: { width: `${leftPercent}%` }, children: left }),
|
|
3833
|
+
/* @__PURE__ */ jsx61(
|
|
4736
3834
|
"div",
|
|
4737
3835
|
{
|
|
4738
3836
|
className: "ph-resizable__handle cursor-col-resize shrink-0",
|
|
4739
3837
|
onMouseDown: handleMouseDown
|
|
4740
3838
|
}
|
|
4741
3839
|
),
|
|
4742
|
-
/* @__PURE__ */
|
|
3840
|
+
/* @__PURE__ */ jsx61("div", { className: "ph-resizable__right flex-1 overflow-auto", children: right })
|
|
4743
3841
|
]
|
|
4744
3842
|
})
|
|
4745
3843
|
);
|
|
@@ -4747,8 +3845,8 @@ function Resizable(_a) {
|
|
|
4747
3845
|
Resizable.displayName = "Resizable";
|
|
4748
3846
|
|
|
4749
3847
|
// src/components/ui/ScrollArea.tsx
|
|
4750
|
-
import { useRef as
|
|
4751
|
-
import { jsx as
|
|
3848
|
+
import { useRef as useRef8, useState as useState15, useEffect as useEffect7 } from "react";
|
|
3849
|
+
import { jsx as jsx62, jsxs as jsxs53 } from "react/jsx-runtime";
|
|
4752
3850
|
function ScrollArea(_a) {
|
|
4753
3851
|
var _b = _a, {
|
|
4754
3852
|
children,
|
|
@@ -4759,10 +3857,10 @@ function ScrollArea(_a) {
|
|
|
4759
3857
|
"orientation",
|
|
4760
3858
|
"className"
|
|
4761
3859
|
]);
|
|
4762
|
-
const viewportRef =
|
|
4763
|
-
const [showTop, setShowTop] =
|
|
4764
|
-
const [showBottom, setShowBottom] =
|
|
4765
|
-
|
|
3860
|
+
const viewportRef = useRef8(null);
|
|
3861
|
+
const [showTop, setShowTop] = useState15(false);
|
|
3862
|
+
const [showBottom, setShowBottom] = useState15(false);
|
|
3863
|
+
useEffect7(() => {
|
|
4766
3864
|
const el = viewportRef.current;
|
|
4767
3865
|
if (!el) return;
|
|
4768
3866
|
const update = () => {
|
|
@@ -4778,7 +3876,7 @@ function ScrollArea(_a) {
|
|
|
4778
3876
|
ro.disconnect();
|
|
4779
3877
|
};
|
|
4780
3878
|
}, []);
|
|
4781
|
-
return /* @__PURE__ */
|
|
3879
|
+
return /* @__PURE__ */ jsxs53(
|
|
4782
3880
|
"div",
|
|
4783
3881
|
__spreadProps(__spreadValues({
|
|
4784
3882
|
className: cn(
|
|
@@ -4789,9 +3887,9 @@ function ScrollArea(_a) {
|
|
|
4789
3887
|
)
|
|
4790
3888
|
}, props), {
|
|
4791
3889
|
children: [
|
|
4792
|
-
showTop && /* @__PURE__ */
|
|
4793
|
-
/* @__PURE__ */
|
|
4794
|
-
showBottom && /* @__PURE__ */
|
|
3890
|
+
showTop && /* @__PURE__ */ jsx62("div", { className: "ph-scroll-area__shadow-top" }),
|
|
3891
|
+
/* @__PURE__ */ jsx62("div", { ref: viewportRef, className: "ph-scroll-area__viewport overflow-y-auto overscroll-contain", children }),
|
|
3892
|
+
showBottom && /* @__PURE__ */ jsx62("div", { className: "ph-scroll-area__shadow-bottom" })
|
|
4795
3893
|
]
|
|
4796
3894
|
})
|
|
4797
3895
|
);
|
|
@@ -4799,8 +3897,8 @@ function ScrollArea(_a) {
|
|
|
4799
3897
|
ScrollArea.displayName = "ScrollArea";
|
|
4800
3898
|
|
|
4801
3899
|
// src/components/ui/NumberField.tsx
|
|
4802
|
-
import { useState as
|
|
4803
|
-
import { jsx as
|
|
3900
|
+
import { useState as useState16 } from "react";
|
|
3901
|
+
import { jsx as jsx63, jsxs as jsxs54 } from "react/jsx-runtime";
|
|
4804
3902
|
function NumberField(_a) {
|
|
4805
3903
|
var _b = _a, {
|
|
4806
3904
|
value: controlledValue,
|
|
@@ -4823,17 +3921,17 @@ function NumberField(_a) {
|
|
|
4823
3921
|
"disabled",
|
|
4824
3922
|
"defaultValue"
|
|
4825
3923
|
]);
|
|
4826
|
-
const [internal, setInternal] =
|
|
3924
|
+
const [internal, setInternal] = useState16(controlledValue != null ? controlledValue : 0);
|
|
4827
3925
|
const value = controlledValue != null ? controlledValue : internal;
|
|
4828
3926
|
const set = (v) => {
|
|
4829
3927
|
const clamped = Math.max(min != null ? min : -Infinity, Math.min(max != null ? max : Infinity, v));
|
|
4830
3928
|
setInternal(clamped);
|
|
4831
3929
|
onChange == null ? void 0 : onChange(clamped);
|
|
4832
3930
|
};
|
|
4833
|
-
return /* @__PURE__ */
|
|
4834
|
-
label && /* @__PURE__ */
|
|
4835
|
-
/* @__PURE__ */
|
|
4836
|
-
/* @__PURE__ */
|
|
3931
|
+
return /* @__PURE__ */ jsxs54("div", { className: cn("ph-number-field", className), children: [
|
|
3932
|
+
label && /* @__PURE__ */ jsx63("label", { className: "ph-label", children: label }),
|
|
3933
|
+
/* @__PURE__ */ jsxs54("div", { className: "ph-number-field__control", children: [
|
|
3934
|
+
/* @__PURE__ */ jsx63(
|
|
4837
3935
|
"button",
|
|
4838
3936
|
{
|
|
4839
3937
|
type: "button",
|
|
@@ -4841,10 +3939,10 @@ function NumberField(_a) {
|
|
|
4841
3939
|
onClick: () => set(value - step),
|
|
4842
3940
|
className: "ph-number-field__btn",
|
|
4843
3941
|
"aria-label": "Decrease",
|
|
4844
|
-
children: /* @__PURE__ */
|
|
3942
|
+
children: /* @__PURE__ */ jsx63("svg", { width: "12", height: "2", viewBox: "0 0 12 2", fill: "currentColor", children: /* @__PURE__ */ jsx63("rect", { y: "0", width: "12", height: "2", rx: "1" }) })
|
|
4845
3943
|
}
|
|
4846
3944
|
),
|
|
4847
|
-
/* @__PURE__ */
|
|
3945
|
+
/* @__PURE__ */ jsx63(
|
|
4848
3946
|
"input",
|
|
4849
3947
|
__spreadValues({
|
|
4850
3948
|
type: "number",
|
|
@@ -4857,7 +3955,7 @@ function NumberField(_a) {
|
|
|
4857
3955
|
className: "ph-number-field__input"
|
|
4858
3956
|
}, inputProps)
|
|
4859
3957
|
),
|
|
4860
|
-
/* @__PURE__ */
|
|
3958
|
+
/* @__PURE__ */ jsx63(
|
|
4861
3959
|
"button",
|
|
4862
3960
|
{
|
|
4863
3961
|
type: "button",
|
|
@@ -4865,7 +3963,7 @@ function NumberField(_a) {
|
|
|
4865
3963
|
onClick: () => set(value + step),
|
|
4866
3964
|
className: "ph-number-field__btn",
|
|
4867
3965
|
"aria-label": "Increase",
|
|
4868
|
-
children: /* @__PURE__ */
|
|
3966
|
+
children: /* @__PURE__ */ jsx63("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: /* @__PURE__ */ jsx63("path", { d: "M6 2v8M2 6h8" }) })
|
|
4869
3967
|
}
|
|
4870
3968
|
)
|
|
4871
3969
|
] })
|
|
@@ -4874,25 +3972,25 @@ function NumberField(_a) {
|
|
|
4874
3972
|
NumberField.displayName = "NumberField";
|
|
4875
3973
|
|
|
4876
3974
|
// src/components/ui/InputGroup.tsx
|
|
4877
|
-
import { jsx as
|
|
3975
|
+
import { jsx as jsx64 } from "react/jsx-runtime";
|
|
4878
3976
|
function InputGroup(_a) {
|
|
4879
3977
|
var _b = _a, { children, className } = _b, props = __objRest(_b, ["children", "className"]);
|
|
4880
|
-
return /* @__PURE__ */
|
|
3978
|
+
return /* @__PURE__ */ jsx64("div", __spreadProps(__spreadValues({ className: cn("ph-input-group", className) }, props), { children }));
|
|
4881
3979
|
}
|
|
4882
3980
|
InputGroup.displayName = "InputGroup";
|
|
4883
3981
|
|
|
4884
3982
|
// src/components/ui/ButtonGroup.tsx
|
|
4885
|
-
import { jsx as
|
|
3983
|
+
import { jsx as jsx65 } from "react/jsx-runtime";
|
|
4886
3984
|
function ButtonGroup(_a) {
|
|
4887
3985
|
var _b = _a, { children, className } = _b, props = __objRest(_b, ["children", "className"]);
|
|
4888
|
-
return /* @__PURE__ */
|
|
3986
|
+
return /* @__PURE__ */ jsx65("div", __spreadProps(__spreadValues({ className: cn("ph-btn-group", className) }, props), { children }));
|
|
4889
3987
|
}
|
|
4890
3988
|
ButtonGroup.displayName = "ButtonGroup";
|
|
4891
3989
|
|
|
4892
3990
|
// src/components/ui/Toggle.tsx
|
|
4893
|
-
import { forwardRef as
|
|
4894
|
-
import { jsx as
|
|
4895
|
-
var ToggleButton =
|
|
3991
|
+
import { forwardRef as forwardRef12 } from "react";
|
|
3992
|
+
import { jsx as jsx66, jsxs as jsxs55 } from "react/jsx-runtime";
|
|
3993
|
+
var ToggleButton = forwardRef12(function ToggleButton2(_a, ref) {
|
|
4896
3994
|
var _b = _a, {
|
|
4897
3995
|
pressed = false,
|
|
4898
3996
|
onPressedChange,
|
|
@@ -4906,7 +4004,7 @@ var ToggleButton = forwardRef15(function ToggleButton2(_a, ref) {
|
|
|
4906
4004
|
"children",
|
|
4907
4005
|
"className"
|
|
4908
4006
|
]);
|
|
4909
|
-
return /* @__PURE__ */
|
|
4007
|
+
return /* @__PURE__ */ jsxs55(
|
|
4910
4008
|
"button",
|
|
4911
4009
|
__spreadProps(__spreadValues({
|
|
4912
4010
|
ref,
|
|
@@ -4920,7 +4018,7 @@ var ToggleButton = forwardRef15(function ToggleButton2(_a, ref) {
|
|
|
4920
4018
|
)
|
|
4921
4019
|
}, props), {
|
|
4922
4020
|
children: [
|
|
4923
|
-
icon && /* @__PURE__ */
|
|
4021
|
+
icon && /* @__PURE__ */ jsx66("span", { className: "ph-toggle-btn__icon", children: icon }),
|
|
4924
4022
|
children
|
|
4925
4023
|
]
|
|
4926
4024
|
})
|
|
@@ -4934,18 +4032,18 @@ function ToggleGroup({
|
|
|
4934
4032
|
children,
|
|
4935
4033
|
className
|
|
4936
4034
|
}) {
|
|
4937
|
-
return /* @__PURE__ */
|
|
4035
|
+
return /* @__PURE__ */ jsx66("div", { className: cn("ph-toggle-group", className), role: "group", children });
|
|
4938
4036
|
}
|
|
4939
4037
|
ToggleGroup.displayName = "ToggleGroup";
|
|
4940
4038
|
|
|
4941
4039
|
// src/components/ui/Menubar.tsx
|
|
4942
|
-
import { useState as
|
|
4943
|
-
import { jsx as
|
|
4040
|
+
import { useState as useState17, useRef as useRef9, useEffect as useEffect8 } from "react";
|
|
4041
|
+
import { jsx as jsx67, jsxs as jsxs56 } from "react/jsx-runtime";
|
|
4944
4042
|
function Menubar(_a) {
|
|
4945
4043
|
var _b = _a, { items, className } = _b, props = __objRest(_b, ["items", "className"]);
|
|
4946
|
-
const [openIndex, setOpenIndex] =
|
|
4947
|
-
const barRef =
|
|
4948
|
-
|
|
4044
|
+
const [openIndex, setOpenIndex] = useState17(-1);
|
|
4045
|
+
const barRef = useRef9(null);
|
|
4046
|
+
useEffect8(() => {
|
|
4949
4047
|
if (openIndex < 0) return;
|
|
4950
4048
|
const handle = (e) => {
|
|
4951
4049
|
if (barRef.current && !barRef.current.contains(e.target)) {
|
|
@@ -4955,8 +4053,8 @@ function Menubar(_a) {
|
|
|
4955
4053
|
document.addEventListener("mousedown", handle);
|
|
4956
4054
|
return () => document.removeEventListener("mousedown", handle);
|
|
4957
4055
|
}, [openIndex]);
|
|
4958
|
-
return /* @__PURE__ */
|
|
4959
|
-
/* @__PURE__ */
|
|
4056
|
+
return /* @__PURE__ */ jsx67("div", __spreadProps(__spreadValues({ ref: barRef, className: cn("ph-menubar", className) }, props), { children: items.map((item, i) => /* @__PURE__ */ jsxs56("div", { className: "ph-menubar__item", children: [
|
|
4057
|
+
/* @__PURE__ */ jsx67(
|
|
4960
4058
|
"button",
|
|
4961
4059
|
{
|
|
4962
4060
|
type: "button",
|
|
@@ -4965,8 +4063,8 @@ function Menubar(_a) {
|
|
|
4965
4063
|
children: item.label
|
|
4966
4064
|
}
|
|
4967
4065
|
),
|
|
4968
|
-
openIndex === i && item.items && /* @__PURE__ */
|
|
4969
|
-
(sub, j) => sub.separator ? /* @__PURE__ */
|
|
4066
|
+
openIndex === i && item.items && /* @__PURE__ */ jsx67("div", { className: "ph-menubar__dropdown", children: item.items.map(
|
|
4067
|
+
(sub, j) => sub.separator ? /* @__PURE__ */ jsx67("div", { className: "ph-menubar__separator" }, j) : /* @__PURE__ */ jsx67(
|
|
4970
4068
|
"button",
|
|
4971
4069
|
{
|
|
4972
4070
|
type: "button",
|
|
@@ -4987,8 +4085,8 @@ function Menubar(_a) {
|
|
|
4987
4085
|
Menubar.displayName = "Menubar";
|
|
4988
4086
|
|
|
4989
4087
|
// src/components/ui/AlertDialog.tsx
|
|
4990
|
-
import { useState as
|
|
4991
|
-
import { jsx as
|
|
4088
|
+
import { useState as useState18 } from "react";
|
|
4089
|
+
import { jsx as jsx68, jsxs as jsxs57 } from "react/jsx-runtime";
|
|
4992
4090
|
function AlertDialog(_a) {
|
|
4993
4091
|
var _b = _a, {
|
|
4994
4092
|
isOpen: openProp,
|
|
@@ -5011,7 +4109,7 @@ function AlertDialog(_a) {
|
|
|
5011
4109
|
"children",
|
|
5012
4110
|
"title"
|
|
5013
4111
|
]);
|
|
5014
|
-
const [loading, setLoading] =
|
|
4112
|
+
const [loading, setLoading] = useState18(false);
|
|
5015
4113
|
const isOpen = openProp != null ? openProp : true;
|
|
5016
4114
|
const handleConfirm = async () => {
|
|
5017
4115
|
if (!onConfirm) return;
|
|
@@ -5023,15 +4121,15 @@ function AlertDialog(_a) {
|
|
|
5023
4121
|
}
|
|
5024
4122
|
onClose == null ? void 0 : onClose();
|
|
5025
4123
|
};
|
|
5026
|
-
return /* @__PURE__ */
|
|
4124
|
+
return /* @__PURE__ */ jsx68(
|
|
5027
4125
|
Modal,
|
|
5028
4126
|
__spreadProps(__spreadValues({
|
|
5029
4127
|
open: isOpen,
|
|
5030
4128
|
onClose,
|
|
5031
4129
|
title,
|
|
5032
|
-
footer: /* @__PURE__ */
|
|
5033
|
-
/* @__PURE__ */
|
|
5034
|
-
onConfirm && /* @__PURE__ */
|
|
4130
|
+
footer: /* @__PURE__ */ jsxs57("div", { className: "flex justify-end gap-2", children: [
|
|
4131
|
+
/* @__PURE__ */ jsx68(Button, __spreadProps(__spreadValues({ variant: "secondary" }, cancelProps), { onClick: onClose, children: cancelText })),
|
|
4132
|
+
onConfirm && /* @__PURE__ */ jsx68(Button, __spreadProps(__spreadValues({ variant: "primary", loading }, confirmProps), { onClick: handleConfirm, children: confirmText }))
|
|
5035
4133
|
] })
|
|
5036
4134
|
}, modalProps), {
|
|
5037
4135
|
children
|
|
@@ -5041,7 +4139,7 @@ function AlertDialog(_a) {
|
|
|
5041
4139
|
AlertDialog.displayName = "AlertDialog";
|
|
5042
4140
|
|
|
5043
4141
|
// src/components/ui/Dot.tsx
|
|
5044
|
-
import { jsx as
|
|
4142
|
+
import { jsx as jsx69 } from "react/jsx-runtime";
|
|
5045
4143
|
var colorMap2 = {
|
|
5046
4144
|
green: "bg-ph-success",
|
|
5047
4145
|
yellow: "bg-ph-warning",
|
|
@@ -5051,7 +4149,7 @@ var colorMap2 = {
|
|
|
5051
4149
|
};
|
|
5052
4150
|
function Dot(_a) {
|
|
5053
4151
|
var _b = _a, { color = "gray", size = "md", className } = _b, props = __objRest(_b, ["color", "size", "className"]);
|
|
5054
|
-
return /* @__PURE__ */
|
|
4152
|
+
return /* @__PURE__ */ jsx69(
|
|
5055
4153
|
"span",
|
|
5056
4154
|
__spreadValues({
|
|
5057
4155
|
className: cn(
|
|
@@ -5067,8 +4165,8 @@ function Dot(_a) {
|
|
|
5067
4165
|
Dot.displayName = "Dot";
|
|
5068
4166
|
|
|
5069
4167
|
// src/components/ui/Collapsible.tsx
|
|
5070
|
-
import { useState as
|
|
5071
|
-
import { jsx as
|
|
4168
|
+
import { useState as useState19 } from "react";
|
|
4169
|
+
import { jsx as jsx70, jsxs as jsxs58 } from "react/jsx-runtime";
|
|
5072
4170
|
function Collapsible(_a) {
|
|
5073
4171
|
var _b = _a, {
|
|
5074
4172
|
trigger,
|
|
@@ -5083,11 +4181,11 @@ function Collapsible(_a) {
|
|
|
5083
4181
|
"children",
|
|
5084
4182
|
"className"
|
|
5085
4183
|
]);
|
|
5086
|
-
const [internalOpen, setInternalOpen] =
|
|
4184
|
+
const [internalOpen, setInternalOpen] = useState19(false);
|
|
5087
4185
|
const isOpen = controlledOpen != null ? controlledOpen : internalOpen;
|
|
5088
4186
|
const setOpen = onOpenChange != null ? onOpenChange : setInternalOpen;
|
|
5089
|
-
return /* @__PURE__ */
|
|
5090
|
-
/* @__PURE__ */
|
|
4187
|
+
return /* @__PURE__ */ jsxs58("div", __spreadProps(__spreadValues({ className: cn("ph-collapsible", className) }, props), { children: [
|
|
4188
|
+
/* @__PURE__ */ jsxs58(
|
|
5091
4189
|
"button",
|
|
5092
4190
|
{
|
|
5093
4191
|
type: "button",
|
|
@@ -5095,7 +4193,7 @@ function Collapsible(_a) {
|
|
|
5095
4193
|
className: "ph-collapsible__trigger",
|
|
5096
4194
|
"aria-expanded": isOpen,
|
|
5097
4195
|
children: [
|
|
5098
|
-
/* @__PURE__ */
|
|
4196
|
+
/* @__PURE__ */ jsx70(
|
|
5099
4197
|
"svg",
|
|
5100
4198
|
{
|
|
5101
4199
|
className: cn("ph-collapsible__chevron", isOpen && "ph-collapsible__chevron--open"),
|
|
@@ -5106,20 +4204,20 @@ function Collapsible(_a) {
|
|
|
5106
4204
|
stroke: "currentColor",
|
|
5107
4205
|
strokeWidth: "2",
|
|
5108
4206
|
strokeLinecap: "round",
|
|
5109
|
-
children: /* @__PURE__ */
|
|
4207
|
+
children: /* @__PURE__ */ jsx70("path", { d: "M4 5l3 3 3-3" })
|
|
5110
4208
|
}
|
|
5111
4209
|
),
|
|
5112
4210
|
trigger
|
|
5113
4211
|
]
|
|
5114
4212
|
}
|
|
5115
4213
|
),
|
|
5116
|
-
isOpen && /* @__PURE__ */
|
|
4214
|
+
isOpen && /* @__PURE__ */ jsx70("div", { className: "ph-collapsible__content", children })
|
|
5117
4215
|
] }));
|
|
5118
4216
|
}
|
|
5119
4217
|
Collapsible.displayName = "Collapsible";
|
|
5120
4218
|
|
|
5121
4219
|
// src/components/ui/Metric.tsx
|
|
5122
|
-
import { jsx as
|
|
4220
|
+
import { jsx as jsx71, jsxs as jsxs59 } from "react/jsx-runtime";
|
|
5123
4221
|
function Metric(_a) {
|
|
5124
4222
|
var _b = _a, {
|
|
5125
4223
|
value,
|
|
@@ -5136,22 +4234,22 @@ function Metric(_a) {
|
|
|
5136
4234
|
"icon",
|
|
5137
4235
|
"className"
|
|
5138
4236
|
]);
|
|
5139
|
-
return /* @__PURE__ */
|
|
5140
|
-
/* @__PURE__ */
|
|
5141
|
-
icon && /* @__PURE__ */
|
|
5142
|
-
/* @__PURE__ */
|
|
5143
|
-
badge && /* @__PURE__ */
|
|
4237
|
+
return /* @__PURE__ */ jsxs59("div", __spreadProps(__spreadValues({ className: cn("ph-metric", className) }, props), { children: [
|
|
4238
|
+
/* @__PURE__ */ jsxs59("div", { className: "ph-metric__header", children: [
|
|
4239
|
+
icon && /* @__PURE__ */ jsx71("span", { className: "ph-metric__icon", children: icon }),
|
|
4240
|
+
/* @__PURE__ */ jsx71("span", { className: "ph-metric__label", children: label }),
|
|
4241
|
+
badge && /* @__PURE__ */ jsx71("span", { className: "ph-metric__badge", children: badge })
|
|
5144
4242
|
] }),
|
|
5145
|
-
/* @__PURE__ */
|
|
5146
|
-
trend && /* @__PURE__ */
|
|
4243
|
+
/* @__PURE__ */ jsx71("div", { className: "ph-metric__value", children: value }),
|
|
4244
|
+
trend && /* @__PURE__ */ jsx71("div", { className: "ph-metric__trend", children: trend })
|
|
5147
4245
|
] }));
|
|
5148
4246
|
}
|
|
5149
4247
|
Metric.displayName = "Metric";
|
|
5150
4248
|
|
|
5151
4249
|
// src/components/ui/Chip.tsx
|
|
5152
|
-
import { forwardRef as
|
|
5153
|
-
import { jsx as
|
|
5154
|
-
var Chip =
|
|
4250
|
+
import { forwardRef as forwardRef13 } from "react";
|
|
4251
|
+
import { jsx as jsx72, jsxs as jsxs60 } from "react/jsx-runtime";
|
|
4252
|
+
var Chip = forwardRef13(function Chip2(_a, ref) {
|
|
5155
4253
|
var _b = _a, {
|
|
5156
4254
|
selected = false,
|
|
5157
4255
|
onRemove,
|
|
@@ -5163,7 +4261,7 @@ var Chip = forwardRef16(function Chip2(_a, ref) {
|
|
|
5163
4261
|
"children",
|
|
5164
4262
|
"className"
|
|
5165
4263
|
]);
|
|
5166
|
-
return /* @__PURE__ */
|
|
4264
|
+
return /* @__PURE__ */ jsxs60(
|
|
5167
4265
|
"button",
|
|
5168
4266
|
__spreadProps(__spreadValues({
|
|
5169
4267
|
ref,
|
|
@@ -5175,8 +4273,8 @@ var Chip = forwardRef16(function Chip2(_a, ref) {
|
|
|
5175
4273
|
)
|
|
5176
4274
|
}, props), {
|
|
5177
4275
|
children: [
|
|
5178
|
-
/* @__PURE__ */
|
|
5179
|
-
onRemove && /* @__PURE__ */
|
|
4276
|
+
/* @__PURE__ */ jsx72("span", { className: "ph-chip__text", children }),
|
|
4277
|
+
onRemove && /* @__PURE__ */ jsx72(
|
|
5180
4278
|
"span",
|
|
5181
4279
|
{
|
|
5182
4280
|
role: "button",
|
|
@@ -5187,7 +4285,7 @@ var Chip = forwardRef16(function Chip2(_a, ref) {
|
|
|
5187
4285
|
},
|
|
5188
4286
|
className: "ph-chip__remove",
|
|
5189
4287
|
"aria-label": "Remove",
|
|
5190
|
-
children: /* @__PURE__ */
|
|
4288
|
+
children: /* @__PURE__ */ jsx72("svg", { width: "10", height: "10", viewBox: "0 0 10 10", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: /* @__PURE__ */ jsx72("path", { d: "M2 2l6 6M8 2l-6 6" }) })
|
|
5191
4289
|
}
|
|
5192
4290
|
)
|
|
5193
4291
|
]
|
|
@@ -5197,8 +4295,8 @@ var Chip = forwardRef16(function Chip2(_a, ref) {
|
|
|
5197
4295
|
Chip.displayName = "Chip";
|
|
5198
4296
|
|
|
5199
4297
|
// src/components/ui/DataTable.tsx
|
|
5200
|
-
import { useState as
|
|
5201
|
-
import { jsx as
|
|
4298
|
+
import { useState as useState20, useMemo } from "react";
|
|
4299
|
+
import { jsx as jsx73, jsxs as jsxs61 } from "react/jsx-runtime";
|
|
5202
4300
|
function DataTable({
|
|
5203
4301
|
columns,
|
|
5204
4302
|
data,
|
|
@@ -5207,10 +4305,10 @@ function DataTable({
|
|
|
5207
4305
|
searchPlaceholder = "Search...",
|
|
5208
4306
|
className
|
|
5209
4307
|
}) {
|
|
5210
|
-
const [search, setSearch] =
|
|
5211
|
-
const [sortKey, setSortKey] =
|
|
5212
|
-
const [sortDir, setSortDir] =
|
|
5213
|
-
const [page, setPage] =
|
|
4308
|
+
const [search, setSearch] = useState20("");
|
|
4309
|
+
const [sortKey, setSortKey] = useState20(null);
|
|
4310
|
+
const [sortDir, setSortDir] = useState20("asc");
|
|
4311
|
+
const [page, setPage] = useState20(0);
|
|
5214
4312
|
const filtered = useMemo(() => {
|
|
5215
4313
|
let items = data;
|
|
5216
4314
|
if (search) {
|
|
@@ -5239,8 +4337,8 @@ function DataTable({
|
|
|
5239
4337
|
setSortDir("asc");
|
|
5240
4338
|
}
|
|
5241
4339
|
};
|
|
5242
|
-
return /* @__PURE__ */
|
|
5243
|
-
searchable && /* @__PURE__ */
|
|
4340
|
+
return /* @__PURE__ */ jsxs61("div", { className: cn("ph-data-table", className), children: [
|
|
4341
|
+
searchable && /* @__PURE__ */ jsx73("div", { className: "ph-data-table__toolbar", children: /* @__PURE__ */ jsx73(
|
|
5244
4342
|
"input",
|
|
5245
4343
|
{
|
|
5246
4344
|
type: "text",
|
|
@@ -5253,47 +4351,47 @@ function DataTable({
|
|
|
5253
4351
|
className: "ph-input ph-input-sm"
|
|
5254
4352
|
}
|
|
5255
4353
|
) }),
|
|
5256
|
-
/* @__PURE__ */
|
|
5257
|
-
/* @__PURE__ */
|
|
4354
|
+
/* @__PURE__ */ jsx73("div", { className: "ph-table-wrap", children: /* @__PURE__ */ jsxs61("table", { className: "ph-table", children: [
|
|
4355
|
+
/* @__PURE__ */ jsx73("thead", { children: /* @__PURE__ */ jsx73("tr", { children: columns.map((col) => /* @__PURE__ */ jsxs61(
|
|
5258
4356
|
"th",
|
|
5259
4357
|
{
|
|
5260
4358
|
className: cn(col.sortable && "cursor-pointer select-none", col.className),
|
|
5261
4359
|
onClick: () => col.sortable && handleSort(col.key),
|
|
5262
4360
|
children: [
|
|
5263
4361
|
col.label,
|
|
5264
|
-
sortKey === col.key && /* @__PURE__ */
|
|
4362
|
+
sortKey === col.key && /* @__PURE__ */ jsx73("span", { className: "ml-1 inline-block", children: sortDir === "asc" ? "\u2191" : "\u2193" })
|
|
5265
4363
|
]
|
|
5266
4364
|
},
|
|
5267
4365
|
col.key
|
|
5268
4366
|
)) }) }),
|
|
5269
|
-
/* @__PURE__ */
|
|
5270
|
-
paged.map((item, i) => /* @__PURE__ */
|
|
5271
|
-
paged.length === 0 && /* @__PURE__ */
|
|
4367
|
+
/* @__PURE__ */ jsxs61("tbody", { children: [
|
|
4368
|
+
paged.map((item, i) => /* @__PURE__ */ jsx73("tr", { children: columns.map((col) => /* @__PURE__ */ jsx73("td", { className: col.className, children: col.render ? col.render(item) : item[col.key] }, col.key)) }, i)),
|
|
4369
|
+
paged.length === 0 && /* @__PURE__ */ jsx73("tr", { children: /* @__PURE__ */ jsx73("td", { colSpan: columns.length, className: "text-center text-ph-mutedtext py-8", children: "No results" }) })
|
|
5272
4370
|
] })
|
|
5273
4371
|
] }) }),
|
|
5274
|
-
totalPages > 1 && /* @__PURE__ */
|
|
5275
|
-
/* @__PURE__ */
|
|
5276
|
-
/* @__PURE__ */
|
|
4372
|
+
totalPages > 1 && /* @__PURE__ */ jsxs61("div", { className: "ph-data-table__pagination", children: [
|
|
4373
|
+
/* @__PURE__ */ jsx73("button", { disabled: page === 0, onClick: () => setPage((p) => p - 1), className: "ph-data-table__page-btn", children: "Previous" }),
|
|
4374
|
+
/* @__PURE__ */ jsxs61("span", { className: "text-xs text-ph-mutedtext", children: [
|
|
5277
4375
|
"Page ",
|
|
5278
4376
|
page + 1,
|
|
5279
4377
|
" of ",
|
|
5280
4378
|
totalPages
|
|
5281
4379
|
] }),
|
|
5282
|
-
/* @__PURE__ */
|
|
4380
|
+
/* @__PURE__ */ jsx73("button", { disabled: page >= totalPages - 1, onClick: () => setPage((p) => p + 1), className: "ph-data-table__page-btn", children: "Next" })
|
|
5283
4381
|
] })
|
|
5284
4382
|
] });
|
|
5285
4383
|
}
|
|
5286
4384
|
DataTable.displayName = "DataTable";
|
|
5287
4385
|
|
|
5288
4386
|
// src/components/ui/DatePicker.tsx
|
|
5289
|
-
import { useState as
|
|
5290
|
-
import { jsx as
|
|
4387
|
+
import { useState as useState21, useMemo as useMemo2 } from "react";
|
|
4388
|
+
import { jsx as jsx74, jsxs as jsxs62 } from "react/jsx-runtime";
|
|
5291
4389
|
var MONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
|
|
5292
4390
|
var DAYS = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
|
|
5293
4391
|
function DatePicker(_a) {
|
|
5294
4392
|
var _b = _a, { value, onChange, className } = _b, props = __objRest(_b, ["value", "onChange", "className"]);
|
|
5295
|
-
const [open, setOpen] =
|
|
5296
|
-
const [viewDate, setViewDate] =
|
|
4393
|
+
const [open, setOpen] = useState21(false);
|
|
4394
|
+
const [viewDate, setViewDate] = useState21(value != null ? value : /* @__PURE__ */ new Date());
|
|
5297
4395
|
const selected = value;
|
|
5298
4396
|
const days = useMemo2(() => {
|
|
5299
4397
|
const year = viewDate.getFullYear();
|
|
@@ -5322,8 +4420,8 @@ function DatePicker(_a) {
|
|
|
5322
4420
|
setOpen(false);
|
|
5323
4421
|
};
|
|
5324
4422
|
const nav = (delta) => setViewDate(new Date(viewDate.getFullYear(), viewDate.getMonth() + delta, 1));
|
|
5325
|
-
return /* @__PURE__ */
|
|
5326
|
-
/* @__PURE__ */
|
|
4423
|
+
return /* @__PURE__ */ jsxs62("div", { className: cn("ph-datepicker relative", className), children: [
|
|
4424
|
+
/* @__PURE__ */ jsx74(
|
|
5327
4425
|
"input",
|
|
5328
4426
|
__spreadValues({
|
|
5329
4427
|
type: "text",
|
|
@@ -5334,19 +4432,19 @@ function DatePicker(_a) {
|
|
|
5334
4432
|
className: "ph-input w-full cursor-pointer"
|
|
5335
4433
|
}, props)
|
|
5336
4434
|
),
|
|
5337
|
-
open && /* @__PURE__ */
|
|
5338
|
-
/* @__PURE__ */
|
|
5339
|
-
/* @__PURE__ */
|
|
5340
|
-
/* @__PURE__ */
|
|
4435
|
+
open && /* @__PURE__ */ jsxs62("div", { className: "ph-datepicker__dropdown", children: [
|
|
4436
|
+
/* @__PURE__ */ jsxs62("div", { className: "ph-datepicker__nav", children: [
|
|
4437
|
+
/* @__PURE__ */ jsx74("button", { type: "button", onClick: () => nav(-1), className: "ph-datepicker__nav-btn", "aria-label": "Previous month", children: /* @__PURE__ */ jsx74("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: /* @__PURE__ */ jsx74("path", { d: "M7 3L4 6l3 3" }) }) }),
|
|
4438
|
+
/* @__PURE__ */ jsxs62("span", { className: "ph-datepicker__nav-label", children: [
|
|
5341
4439
|
MONTHS[viewDate.getMonth()],
|
|
5342
4440
|
" ",
|
|
5343
4441
|
viewDate.getFullYear()
|
|
5344
4442
|
] }),
|
|
5345
|
-
/* @__PURE__ */
|
|
4443
|
+
/* @__PURE__ */ jsx74("button", { type: "button", onClick: () => nav(1), className: "ph-datepicker__nav-btn", "aria-label": "Next month", children: /* @__PURE__ */ jsx74("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: /* @__PURE__ */ jsx74("path", { d: "M5 3l3 3-3 3" }) }) })
|
|
5346
4444
|
] }),
|
|
5347
|
-
/* @__PURE__ */
|
|
5348
|
-
DAYS.map((d) => /* @__PURE__ */
|
|
5349
|
-
days.map((d, i) => /* @__PURE__ */
|
|
4445
|
+
/* @__PURE__ */ jsxs62("div", { className: "ph-datepicker__grid", children: [
|
|
4446
|
+
DAYS.map((d) => /* @__PURE__ */ jsx74("div", { className: "ph-datepicker__day-header", children: d }, d)),
|
|
4447
|
+
days.map((d, i) => /* @__PURE__ */ jsx74(
|
|
5350
4448
|
"button",
|
|
5351
4449
|
{
|
|
5352
4450
|
type: "button",
|
|
@@ -5368,40 +4466,40 @@ function DatePicker(_a) {
|
|
|
5368
4466
|
DatePicker.displayName = "DatePicker";
|
|
5369
4467
|
|
|
5370
4468
|
// src/components/ui/AppLayout.tsx
|
|
5371
|
-
import { jsx as
|
|
4469
|
+
import { jsx as jsx75, jsxs as jsxs63 } from "react/jsx-runtime";
|
|
5372
4470
|
function AppLayout({ sidebar, children, sidebarWidth = 240, className }) {
|
|
5373
|
-
return /* @__PURE__ */
|
|
4471
|
+
return /* @__PURE__ */ jsxs63(
|
|
5374
4472
|
"div",
|
|
5375
4473
|
{
|
|
5376
4474
|
className: cn("ph-app-layout grid min-h-screen", className),
|
|
5377
4475
|
style: { gridTemplateColumns: `${sidebarWidth}px minmax(0, 1fr)` },
|
|
5378
4476
|
children: [
|
|
5379
|
-
/* @__PURE__ */
|
|
5380
|
-
/* @__PURE__ */
|
|
4477
|
+
/* @__PURE__ */ jsx75("aside", { className: "ph-app-layout__sidebar border-r border-ph-border bg-ph-surface overflow-y-auto", children: sidebar }),
|
|
4478
|
+
/* @__PURE__ */ jsx75("main", { className: "ph-app-layout__content min-w-0 overflow-y-auto bg-ph-canvas", children })
|
|
5381
4479
|
]
|
|
5382
4480
|
}
|
|
5383
4481
|
);
|
|
5384
4482
|
}
|
|
5385
4483
|
|
|
5386
4484
|
// src/components/ui/Sidebar.tsx
|
|
5387
|
-
import { jsx as
|
|
4485
|
+
import { jsx as jsx76, jsxs as jsxs64 } from "react/jsx-runtime";
|
|
5388
4486
|
function Sidebar({ groups, className, header, footer, children, collapsed = false, onCollapse }) {
|
|
5389
|
-
return /* @__PURE__ */
|
|
5390
|
-
header && /* @__PURE__ */
|
|
5391
|
-
/* @__PURE__ */
|
|
4487
|
+
return /* @__PURE__ */ jsxs64("nav", { className: cn("ph-sidebar flex flex-col h-full", collapsed && "ph-sidebar--collapsed", className), children: [
|
|
4488
|
+
header && /* @__PURE__ */ jsx76("div", { className: "ph-sidebar__header px-3 py-3 border-b border-ph-border-subtle", children: header }),
|
|
4489
|
+
/* @__PURE__ */ jsx76("div", { className: "ph-sidebar__body flex-1 overflow-y-auto px-2 py-3 space-y-5", children: groups.map((group) => {
|
|
5392
4490
|
var _a;
|
|
5393
|
-
return /* @__PURE__ */
|
|
5394
|
-
group.label && !collapsed && /* @__PURE__ */
|
|
5395
|
-
/* @__PURE__ */
|
|
4491
|
+
return /* @__PURE__ */ jsxs64("div", { className: "ph-sidebar__group", children: [
|
|
4492
|
+
group.label && !collapsed && /* @__PURE__ */ jsx76("h3", { className: "ph-sidebar__group-label px-2 mb-1 text-[10px] font-semibold uppercase tracking-wider text-ph-mutedtext", children: group.label }),
|
|
4493
|
+
/* @__PURE__ */ jsx76("div", { className: "ph-sidebar__items space-y-0.5", children: group.items.map((item) => /* @__PURE__ */ jsx76(SidebarItem, __spreadProps(__spreadValues({}, item), { collapsed }), item.label)) })
|
|
5396
4494
|
] }, (_a = group.label) != null ? _a : "default");
|
|
5397
4495
|
}) }),
|
|
5398
4496
|
children,
|
|
5399
|
-
footer && /* @__PURE__ */
|
|
4497
|
+
footer && /* @__PURE__ */ jsx76("div", { className: "ph-sidebar__footer px-3 py-3 border-t border-ph-border-subtle", children: footer })
|
|
5400
4498
|
] });
|
|
5401
4499
|
}
|
|
5402
4500
|
function SidebarItem({ label, icon, badge, active, href, onClick, collapsed }) {
|
|
5403
4501
|
const Comp = onClick ? "button" : "a";
|
|
5404
|
-
return /* @__PURE__ */
|
|
4502
|
+
return /* @__PURE__ */ jsxs64(
|
|
5405
4503
|
Comp,
|
|
5406
4504
|
{
|
|
5407
4505
|
type: onClick ? "button" : void 0,
|
|
@@ -5414,9 +4512,9 @@ function SidebarItem({ label, icon, badge, active, href, onClick, collapsed }) {
|
|
|
5414
4512
|
),
|
|
5415
4513
|
title: collapsed ? label : void 0,
|
|
5416
4514
|
children: [
|
|
5417
|
-
icon && /* @__PURE__ */
|
|
5418
|
-
!collapsed && /* @__PURE__ */
|
|
5419
|
-
!collapsed && badge && /* @__PURE__ */
|
|
4515
|
+
icon && /* @__PURE__ */ jsx76("span", { className: cn("ph-sidebar__item-icon shrink-0 flex items-center justify-center", collapsed ? "w-5 h-5" : "w-4 h-4"), children: icon }),
|
|
4516
|
+
!collapsed && /* @__PURE__ */ jsx76("span", { className: "ph-sidebar__item-label truncate flex-1", children: label }),
|
|
4517
|
+
!collapsed && badge && /* @__PURE__ */ jsx76("span", { className: "ph-sidebar__item-badge shrink-0", children: badge })
|
|
5420
4518
|
]
|
|
5421
4519
|
}
|
|
5422
4520
|
);
|
|
@@ -5424,93 +4522,7 @@ function SidebarItem({ label, icon, badge, active, href, onClick, collapsed }) {
|
|
|
5424
4522
|
Sidebar.displayName = "Sidebar";
|
|
5425
4523
|
|
|
5426
4524
|
export {
|
|
5427
|
-
ButtonChrome,
|
|
5428
|
-
cn,
|
|
5429
4525
|
Button,
|
|
5430
|
-
IconBase,
|
|
5431
|
-
createIconBase,
|
|
5432
|
-
createIconBasePath,
|
|
5433
|
-
IconAreaChart,
|
|
5434
|
-
IconCumulativeChart,
|
|
5435
|
-
IconTableChart,
|
|
5436
|
-
IconHandClick,
|
|
5437
|
-
IconSurveys,
|
|
5438
|
-
IconCohort,
|
|
5439
|
-
IconRecording,
|
|
5440
|
-
IconFlare,
|
|
5441
|
-
IconSelectEvents,
|
|
5442
|
-
IconClipboardEdit,
|
|
5443
|
-
IconQueryEditor,
|
|
5444
|
-
IconTuning,
|
|
5445
|
-
IconSync,
|
|
5446
|
-
IconPlayCircle,
|
|
5447
|
-
IconGridView,
|
|
5448
|
-
IconListView,
|
|
5449
|
-
IconPremium,
|
|
5450
|
-
IconGift,
|
|
5451
|
-
IconRobot,
|
|
5452
|
-
IconExclamation,
|
|
5453
|
-
IconErrorOutline,
|
|
5454
|
-
IconInfo,
|
|
5455
|
-
IconCancel,
|
|
5456
|
-
IconCheckCircle,
|
|
5457
|
-
IconArrowUp,
|
|
5458
|
-
IconArrowDown,
|
|
5459
|
-
IconChevronLeft,
|
|
5460
|
-
IconChevronRight,
|
|
5461
|
-
IconChevronDown,
|
|
5462
|
-
IconSubArrowRight,
|
|
5463
|
-
IconSearch,
|
|
5464
|
-
IconBell,
|
|
5465
|
-
IconBellOff,
|
|
5466
|
-
IconPerson,
|
|
5467
|
-
IconHome,
|
|
5468
|
-
IconPanelRight,
|
|
5469
|
-
IconPlus,
|
|
5470
|
-
IconCheck,
|
|
5471
|
-
IconClose,
|
|
5472
|
-
IconTrash,
|
|
5473
|
-
IconDownload,
|
|
5474
|
-
IconUpload,
|
|
5475
|
-
IconSave,
|
|
5476
|
-
IconCopy,
|
|
5477
|
-
IconEdit,
|
|
5478
|
-
IconLogout,
|
|
5479
|
-
IconStar,
|
|
5480
|
-
IconMail,
|
|
5481
|
-
IconShoppingCart,
|
|
5482
|
-
IconMoon,
|
|
5483
|
-
IconSun,
|
|
5484
|
-
IconVolume,
|
|
5485
|
-
IconVolumeOff,
|
|
5486
|
-
IconFlag,
|
|
5487
|
-
IconDatabase,
|
|
5488
|
-
IconLayers,
|
|
5489
|
-
IconBox,
|
|
5490
|
-
IconBolt,
|
|
5491
|
-
IconRadar,
|
|
5492
|
-
IconToggle,
|
|
5493
|
-
IconRocket,
|
|
5494
|
-
IconTerminal,
|
|
5495
|
-
IconOldWindow,
|
|
5496
|
-
IconCommandCursor,
|
|
5497
|
-
IconDataReel,
|
|
5498
|
-
IconCodePreview,
|
|
5499
|
-
IconInsightBoard,
|
|
5500
|
-
IconEventStream,
|
|
5501
|
-
IconFeatureGate,
|
|
5502
|
-
IconReplayFrame,
|
|
5503
|
-
IconQueryStack,
|
|
5504
|
-
IconExperimentSplit,
|
|
5505
|
-
IconSurveyCard,
|
|
5506
|
-
OLD_UI_ICONS,
|
|
5507
|
-
IconActivity,
|
|
5508
|
-
IconFlask,
|
|
5509
|
-
IconSpinner,
|
|
5510
|
-
CANONICAL_ICONS,
|
|
5511
|
-
PH_ICON_ALIASES,
|
|
5512
|
-
PH_ICONS,
|
|
5513
|
-
IconByName,
|
|
5514
4526
|
Alert,
|
|
5515
4527
|
Badge,
|
|
5516
4528
|
Card,
|
|
@@ -5524,11 +4536,6 @@ export {
|
|
|
5524
4536
|
AuthDivider,
|
|
5525
4537
|
SettingsNav,
|
|
5526
4538
|
SettingsLayout,
|
|
5527
|
-
DropdownMenu,
|
|
5528
|
-
DropdownButton,
|
|
5529
|
-
DropdownItem,
|
|
5530
|
-
DropdownRadioGroup,
|
|
5531
|
-
DropdownRadioItem,
|
|
5532
4539
|
FormField,
|
|
5533
4540
|
Input,
|
|
5534
4541
|
Select,
|
|
@@ -5567,8 +4574,6 @@ export {
|
|
|
5567
4574
|
CommandPalette,
|
|
5568
4575
|
Calendar,
|
|
5569
4576
|
HoverCard,
|
|
5570
|
-
TooltipProvider,
|
|
5571
|
-
Tooltip,
|
|
5572
4577
|
EmptyState,
|
|
5573
4578
|
FilterChips,
|
|
5574
4579
|
FilterBar,
|