@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.
@@ -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__ */ jsx2("span", { className: "ph-btn-spinner", "aria-hidden": true }) : icon;
87
- const content = usesLemonChrome ? /* @__PURE__ */ jsx2(ButtonChrome, { label, icon: leadingIcon, sideIcon, split }) : /* @__PURE__ */ jsxs2(Fragment, { children: [
88
- leadingIcon != null ? /* @__PURE__ */ jsx2("span", { className: "ph-btn-icon", children: leadingIcon }) : null,
89
- label != null ? /* @__PURE__ */ jsx2("span", { className: "ph-btn-label", children: label }) : null,
90
- split ? /* @__PURE__ */ jsx2("span", { className: "ph-btn-split-divider", "aria-hidden": true }) : null,
91
- sideIcon != null ? /* @__PURE__ */ jsx2("span", { className: "ph-btn-side-icon", children: sideIcon }) : null
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__ */ jsx2(
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 jsx3 } from "react/jsx-runtime";
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 = forwardRef5(function Alert2(_a, ref) {
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__ */ jsxs4(
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__ */ jsx6(Icon, { className: "ph-alert-icon mt-0.5 h-5 w-5 shrink-0", "aria-hidden": true }),
707
- /* @__PURE__ */ jsxs4("div", { className: "min-w-0 flex-1", children: [
708
- title && /* @__PURE__ */ jsx6("p", { className: "font-semibold", children: title }),
709
- description && /* @__PURE__ */ jsx6("p", { className: "mt-1 text-sm text-ph-subtle", children: description }),
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__ */ jsx6(
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__ */ jsx6(IconClose, { className: "h-4 w-4", "aria-hidden": true })
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 forwardRef6 } from "react";
730
- import { jsx as jsx7 } from "react/jsx-runtime";
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 = forwardRef6(function Badge2(_a, ref) {
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__ */ jsx7(
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 forwardRef7 } from "react";
775
- import { jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
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 = forwardRef7(function Card2(_a, ref) {
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__ */ jsxs5(
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__ */ jsx8("div", { className: "ph-card-media", children: media }),
821
- /* @__PURE__ */ jsxs5("div", { className: cn("ph-card-body", bodyClassName), children: [
822
- title && /* @__PURE__ */ jsx8(Title2, { className: "ph-card-title", children: title }),
823
- description && /* @__PURE__ */ jsx8("p", { className: "text-sm text-ph-subtle", children: description }),
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__ */ jsx8("div", { className: "ph-card-actions", children: actions })
290
+ actions && /* @__PURE__ */ jsx4("div", { className: "ph-card-actions", children: actions })
826
291
  ] }),
827
- footer && /* @__PURE__ */ jsx8("div", { className: "border-t border-ph-border px-6 py-4 text-xs text-ph-subtle", children: footer })
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 Fragment3, jsx as jsx9, jsxs as jsxs6 } from "react/jsx-runtime";
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__ */ jsxs6(Fragment3, { children: [
858
- /* @__PURE__ */ jsx9("div", { className: "fixed inset-0 z-[120] bg-black/45 backdrop-blur-[2px]", role: "presentation", onClick: onClose }),
859
- /* @__PURE__ */ jsxs6(
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__ */ jsxs6("header", { className: "flex items-center justify-between border-b border-ph-border px-4 py-3", children: [
870
- /* @__PURE__ */ jsx9("span", { className: "text-sm font-bold text-ph-ink", children: title }),
871
- showCloseButton && onClose && /* @__PURE__ */ jsx9(Button, { variant: "ghost", className: "ph-btn-circle", onClick: onClose, "aria-label": "Close drawer", children: /* @__PURE__ */ jsx9(IconClose, { className: "h-5 w-5" }) })
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__ */ jsx9("div", { className: "flex-1", children }),
874
- footer && /* @__PURE__ */ jsx9("footer", { className: "border-t border-ph-border px-4 py-3", children: footer })
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 jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
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__ */ jsx10("code", __spreadProps(__spreadValues({ className: cn("ph-code-token ph-kbd", className), "aria-label": ariaLabel }, props), { children }));
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__ */ jsx10("kbd", __spreadProps(__spreadValues({ className: cn("ph-keycap", className), "aria-label": accessibleLabel }, props), { children: displayKeys[0] }));
412
+ return /* @__PURE__ */ jsx6("kbd", __spreadProps(__spreadValues({ className: cn("ph-keycap", className), "aria-label": accessibleLabel }, props), { children: displayKeys[0] }));
948
413
  }
949
- return /* @__PURE__ */ jsx10("kbd", __spreadProps(__spreadValues({ className: cn("ph-shortcut-group ph-keycap", className), "aria-label": accessibleLabel }, props), { children: displayKeys.map((key, index) => /* @__PURE__ */ jsxs7("span", { className: "contents", children: [
950
- index > 0 && separator != null ? /* @__PURE__ */ jsx10("span", { className: "ph-shortcut-separator", "aria-hidden": "true", children: separator }) : null,
951
- /* @__PURE__ */ jsx10("span", { className: "ph-shortcut-key", "aria-hidden": accessibleLabel ? true : void 0, children: key })
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 jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
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__ */ jsxs8(
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__ */ jsx11("span", { className: "ph-loading", "aria-hidden": true }) : null,
1005
- variant === "dots" ? /* @__PURE__ */ jsxs8("span", { className: "ph-loading-dots", "aria-hidden": true, children: [
1006
- /* @__PURE__ */ jsx11("span", {}),
1007
- /* @__PURE__ */ jsx11("span", {}),
1008
- /* @__PURE__ */ jsx11("span", {})
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__ */ jsx11("span", { className: "ph-loading-pulse", "aria-hidden": true }) : null
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__ */ jsx11(
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__ */ jsxs8("div", __spreadProps(__spreadValues({ className: cn("ph-loading-state", className), role: "status", "aria-label": label }, props), { children: [
1042
- /* @__PURE__ */ jsx11(Loader, { variant, size, label, "aria-hidden": "true" }),
1043
- /* @__PURE__ */ jsxs8("div", { className: "ph-loading-state__copy", children: [
1044
- /* @__PURE__ */ jsx11("strong", { children: title }),
1045
- description ? /* @__PURE__ */ jsx11("span", { children: description }) : null
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 jsx12, jsxs as jsxs9 } from "react/jsx-runtime";
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__ */ jsxs9("div", __spreadProps(__spreadValues({ className: cn("ph-auth-layout", aside != null && "ph-auth-layout--split", className) }, props), { children: [
1056
- aside ? /* @__PURE__ */ jsx12("aside", { className: "ph-auth-layout__aside", children: aside }) : null,
1057
- /* @__PURE__ */ jsx12("div", { className: "ph-auth-layout__main", children: /* @__PURE__ */ jsxs9("div", { className: "ph-auth-layout__column", children: [
1058
- brand ? /* @__PURE__ */ jsx12("div", { className: "ph-auth-layout__brand", children: brand }) : null,
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__ */ jsx12("footer", { className: "ph-auth-layout__footer", children: footer }) : null
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__ */ jsxs9("section", __spreadProps(__spreadValues({ className: cn("ph-auth-card", className), "aria-labelledby": titleId }, props), { children: [
1068
- /* @__PURE__ */ jsxs9("header", { className: "ph-auth-card__header", children: [
1069
- /* @__PURE__ */ jsx12("h1", { id: titleId, children: title }),
1070
- description ? /* @__PURE__ */ jsx12("p", { children: description }) : null
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__ */ jsx12("div", { className: "ph-auth-card__body", children }),
1073
- footer ? /* @__PURE__ */ jsx12("footer", { className: "ph-auth-card__footer", children: footer }) : null
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__ */ jsx12("div", __spreadProps(__spreadValues({ className: cn("ph-auth-divider", className) }, props), { children: /* @__PURE__ */ jsx12("span", { children }) }));
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 jsx13, jsxs as jsxs10 } from "react/jsx-runtime";
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__ */ jsx13("div", __spreadProps(__spreadValues({ className: cn("ph-settings-nav", className) }, props), { children: groups.map((group, index) => /* @__PURE__ */ jsxs10("div", { className: "ph-settings-nav__group", children: [
1086
- /* @__PURE__ */ jsx13("h3", { children: group.label }),
1087
- /* @__PURE__ */ jsx13("div", { className: "ph-settings-nav__items", children: group.items.map((item) => /* @__PURE__ */ jsxs10(
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__ */ jsx13("span", { className: "ph-settings-nav__icon", children: item.icon }) : null,
1095
- /* @__PURE__ */ jsx13("span", { children: item.label }),
1096
- item.badge ? /* @__PURE__ */ jsx13("span", { className: "ph-settings-nav__badge", children: item.badge }) : null
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__ */ jsxs10("section", __spreadProps(__spreadValues({ className: cn("ph-settings-layout", className) }, props), { children: [
1122
- /* @__PURE__ */ jsxs10("header", { className: "ph-settings-layout__header", children: [
1123
- /* @__PURE__ */ jsxs10("div", { children: [
1124
- /* @__PURE__ */ jsx13("h2", { children: title }),
1125
- description ? /* @__PURE__ */ jsx13("p", { children: description }) : null
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__ */ jsx13("div", { className: "ph-settings-layout__actions", children: actions }) : null
592
+ actions ? /* @__PURE__ */ jsx9("div", { className: "ph-settings-layout__actions", children: actions }) : null
1128
593
  ] }),
1129
- /* @__PURE__ */ jsxs10("details", { className: "ph-settings-layout__mobile-nav", children: [
1130
- /* @__PURE__ */ jsxs10("summary", { children: [
1131
- /* @__PURE__ */ jsx13(IconTuning, { className: "h-4 w-4", "aria-hidden": true }),
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__ */ jsx13("nav", { "aria-label": navigationLabel, children: navigation })
599
+ /* @__PURE__ */ jsx9("nav", { "aria-label": navigationLabel, children: navigation })
1135
600
  ] }),
1136
- /* @__PURE__ */ jsxs10("div", { className: "ph-settings-layout__grid", children: [
1137
- /* @__PURE__ */ jsx13("aside", { className: "ph-settings-layout__sidebar", children: /* @__PURE__ */ jsx13("nav", { "aria-label": navigationLabel, children: navigation }) }),
1138
- /* @__PURE__ */ jsx13("div", { className: "ph-settings-layout__content", children })
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 forwardRef8, useId as useId3 } from "react";
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 jsx15, jsxs as jsxs12 } from "react/jsx-runtime";
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__ */ jsxs12("div", __spreadProps(__spreadValues({ className: cn("ph-field", className) }, props), { children: [
1400
- label ? /* @__PURE__ */ jsxs12(
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__ */ jsx15("span", { "aria-hidden": "true", children: " *" }) : null
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__ */ jsx15("p", { id: descriptionId, className: "mt-1 text-xs text-ph-subtle", children: helperText }) : null,
1413
- errorId ? /* @__PURE__ */ jsx15("p", { id: errorId, className: "mt-1 text-xs font-medium text-ph-danger", children: error }) : null
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 jsx16, jsxs as jsxs13 } from "react/jsx-runtime";
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 = forwardRef8(function Input2(_a, ref) {
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__ */ jsx16(
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__ */ jsx16(
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 = forwardRef8(function Select2(_a, ref) {
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__ */ jsx16(FormField, { controlId: id, label, hideLabel, helperText, error, required, disabled, className: wrapperClassName, children: (fieldProps) => /* @__PURE__ */ jsx16(
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 = forwardRef8(function Textarea2(_a, ref) {
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__ */ jsx16(FormField, { controlId: id, label, hideLabel, helperText, error, required, disabled, className: wrapperClassName, children: (fieldProps) => /* @__PURE__ */ jsx16(
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 = forwardRef8(function Checkbox2(_a, ref) {
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__ */ jsxs13("div", { className: cn("ph-control-row", wrapperClassName), children: [
1615
- /* @__PURE__ */ jsxs13("span", { className: "ph-checkbox-wrap", children: [
1616
- /* @__PURE__ */ jsx16(
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__ */ jsx16(IconCheck, { className: "ph-checkbox-icon", "aria-hidden": true })
881
+ /* @__PURE__ */ jsx11(IconCheck, { className: "ph-checkbox-icon", "aria-hidden": true })
1635
882
  ] }),
1636
- /* @__PURE__ */ jsxs13("div", { className: "ph-control-copy", children: [
1637
- /* @__PURE__ */ jsx16("label", { htmlFor: id, className: cn("cursor-pointer", disabled && "opacity-60"), children: label }),
1638
- descriptionId ? /* @__PURE__ */ jsx16("p", { id: descriptionId, className: "text-xs text-ph-subtle", children: helperText }) : null,
1639
- errorId ? /* @__PURE__ */ jsx16("p", { id: errorId, className: "text-xs font-medium text-ph-danger", children: error }) : null
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 = forwardRef8(function Radio2(_a, ref) {
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__ */ jsxs13("div", { className: cn("ph-control-row", wrapperClassName, disabled && "opacity-60"), children: [
1661
- /* @__PURE__ */ jsx16(
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__ */ jsx16("label", { htmlFor: id, className: cn("cursor-pointer", disabled && "opacity-60"), children: label })
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 = forwardRef8(function Toggle2(_a, ref) {
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__ */ jsxs13("label", { className: cn("ph-control-row-between", wrapperClassName, disabled && "opacity-60"), children: [
1692
- /* @__PURE__ */ jsx16("span", { className: disabled ? "opacity-60" : void 0, children: label }),
1693
- /* @__PURE__ */ jsx16(
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 = forwardRef8(function Range2(_a, ref) {
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__ */ jsxs13("div", { className: cn("ph-field", wrapperClassName), children: [
1728
- label && /* @__PURE__ */ jsx16("label", { htmlFor: id, className: "ph-label", children: label }),
1729
- /* @__PURE__ */ jsx16("input", __spreadValues({ ref, id, type: "range", className: cn("ph-range", className) }, props)),
1730
- (minLabel || valueLabel || maxLabel) && /* @__PURE__ */ jsxs13("div", { className: "flex justify-between text-xs text-ph-mutedtext", children: [
1731
- /* @__PURE__ */ jsx16("span", { children: minLabel }),
1732
- /* @__PURE__ */ jsx16("span", { children: valueLabel }),
1733
- /* @__PURE__ */ jsx16("span", { children: maxLabel })
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 = forwardRef8(function FileUpload2(_a, ref) {
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__ */ jsxs13("div", { className: cn("ph-field", wrapperClassName), children: [
1755
- label && /* @__PURE__ */ jsx16("label", { htmlFor: id, className: "ph-label", children: label }),
1756
- /* @__PURE__ */ jsxs13("label", { htmlFor: id, className: "ph-file-upload", children: [
1757
- /* @__PURE__ */ jsx16("input", __spreadValues({ ref, id, type: "file", className: cn("sr-only", className) }, props)),
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 jsx17, jsxs as jsxs14 } from "react/jsx-runtime";
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__ */ jsx17(
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__ */ jsxs14(Dialog.Portal, { children: [
1799
- /* @__PURE__ */ jsx17(Dialog.Overlay, { className: "ph-modal-overlay" }),
1800
- /* @__PURE__ */ jsxs14(
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__ */ jsx17(Dialog.Title, { className: "sr-only", children: ariaLabel != null ? ariaLabel : "Dialog" }),
1822
- title || description || showCloseButton && canDismiss ? /* @__PURE__ */ jsxs14("header", { className: "ph-modal-header", children: [
1823
- /* @__PURE__ */ jsxs14("div", { className: "min-w-0", children: [
1824
- title ? /* @__PURE__ */ jsx17(Dialog.Title, { className: "text-lg font-bold text-ph-ink", children: title }) : null,
1825
- description ? /* @__PURE__ */ jsx17(Dialog.Description, { className: "mt-1 text-sm text-ph-subtle", children: description }) : null
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__ */ jsx17(Dialog.Close, { asChild: true, children: /* @__PURE__ */ jsx17("button", { type: "button", className: "ph-modal-close", "aria-label": "Close dialog", children: /* @__PURE__ */ jsx17(IconClose, { className: "h-5 w-5", "aria-hidden": true }) }) }) : null
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__ */ jsx17("div", { className: "ph-modal-body", children }),
1830
- footer ? /* @__PURE__ */ jsx17("div", { className: "ph-modal-footer", children: footer }) : null
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 jsx18, jsxs as jsxs15 } from "react/jsx-runtime";
1087
+ import { jsx as jsx13, jsxs as jsxs12 } from "react/jsx-runtime";
1841
1088
  function Breadcrumbs({ items, label = "Breadcrumb", className }) {
1842
- return /* @__PURE__ */ jsx18("nav", { "aria-label": label, className: cn("ph-breadcrumbs", className), children: items.map((item, index) => /* @__PURE__ */ jsxs15("span", { className: "contents", children: [
1843
- index > 0 ? /* @__PURE__ */ jsx18("span", { className: "ph-breadcrumb-sep", "aria-hidden": "true", children: "/" }) : null,
1844
- item.current || !item.href ? /* @__PURE__ */ jsx18("span", { className: "ph-breadcrumb-current", "aria-current": item.current ? "page" : void 0, children: item.label }) : /* @__PURE__ */ jsx18("a", { href: item.href, className: "ph-breadcrumb-link", children: item.label })
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__ */ jsxs15("nav", { "aria-label": label, className: cn("ph-pagination", className), children: [
1858
- /* @__PURE__ */ jsx18(
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__ */ jsx18(IconChevronLeft, { className: "mx-auto h-4 w-4", "aria-hidden": true })
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__ */ jsxs15("span", { className: "contents", children: [
1870
- !compact && index === uniquePages.length - 1 && pageNumber > 4 ? /* @__PURE__ */ jsx18("span", { className: "ph-pagination-ellipsis", "aria-hidden": "true", children: "..." }) : null,
1871
- /* @__PURE__ */ jsx18(
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__ */ jsx18(
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__ */ jsx18(IconChevronRight, { className: "mx-auto h-4 w-4", "aria-hidden": true })
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 jsx19, jsxs as jsxs16 } from "react/jsx-runtime";
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__ */ jsxs16("div", __spreadProps(__spreadValues({ className: cn("ph-panel", className) }, props), { children: [
1901
- title && /* @__PURE__ */ jsx19("h3", { className: "text-sm font-semibold uppercase tracking-wider text-ph-mutedtext", children: title }),
1902
- description && /* @__PURE__ */ jsx19("p", { className: "text-sm text-ph-subtle", children: description }),
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 jsx20, jsxs as jsxs17 } from "react/jsx-runtime";
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__ */ jsxs17("div", { className: cn("ph-field", wrapperClassName), children: [
1929
- label && /* @__PURE__ */ jsx20("span", { className: "ph-label", children: label }),
1930
- /* @__PURE__ */ jsx20(
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__ */ jsx20(
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__ */ jsx20(
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__ */ jsx20(IconStar, { className: cn("h-6 w-6", active ? "text-amber-500" : "text-ph-border") })
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 jsx21, jsxs as jsxs18 } from "react/jsx-runtime";
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__ */ jsxs18("div", { className: cn("relative", wrapperClassName), children: [
1994
- /* @__PURE__ */ jsx21("label", { htmlFor: id, className: hideLabel ? "sr-only" : "ph-label mb-1.5 block", children: label }),
1995
- /* @__PURE__ */ jsxs18("div", { className: "relative", children: [
1996
- shortcut != null ? /* @__PURE__ */ jsx21(
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__ */ jsx21(
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__ */ jsxs18("div", { className: cn("ph-field", wrapperClassName), children: [
2041
- /* @__PURE__ */ jsx21("label", { htmlFor: id, className: "ph-label", children: label }),
2042
- /* @__PURE__ */ jsxs18("div", { className: "ph-search-group flex w-full max-w-lg min-h-[2.3125rem] items-stretch divide-x divide-ph-border", children: [
2043
- /* @__PURE__ */ jsx21(
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__ */ jsx21(
1299
+ /* @__PURE__ */ jsx16(
2053
1300
  Button,
2054
1301
  {
2055
1302
  type: "submit",
2056
1303
  variant: "primary",
2057
- icon: /* @__PURE__ */ jsx21(IconSearch, { className: "h-4 w-4", "aria-hidden": true }),
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 jsx22, jsxs as jsxs19 } from "react/jsx-runtime";
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__ */ jsx22("div", { className: cn("ph-table-wrap", compact && "ph-table-compact", className), children: /* @__PURE__ */ jsxs19("table", { className: cn("ph-table", zebra && "ph-table-zebra", ribbon && "ph-table--ribbon"), children: [
2079
- caption && /* @__PURE__ */ jsx22("caption", { className: "sr-only", children: caption }),
2080
- /* @__PURE__ */ jsx22("thead", { children: /* @__PURE__ */ jsx22("tr", { children: columns.map((col) => /* @__PURE__ */ jsx22("th", { className: col.className, children: col.header }, col.key)) }) }),
2081
- /* @__PURE__ */ jsx22("tbody", { children: data.map((row, i) => /* @__PURE__ */ jsx22("tr", { style: getRowStyle == null ? void 0 : getRowStyle(row), children: columns.map((col) => /* @__PURE__ */ jsx22("td", { className: col.className, children: col.cell(row) }, col.key)) }, i)) })
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 jsx23, jsxs as jsxs20 } from "react/jsx-runtime";
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__ */ jsxs20("article", __spreadProps(__spreadValues({ className: cn("ph-stat", statMap[tone], className) }, props), { children: [
2104
- icon && /* @__PURE__ */ jsx23("div", { className: cn("mb-2 h-7 w-7", toneMap[tone]), children: icon }),
2105
- /* @__PURE__ */ jsx23("div", { className: cn("ph-stat-label", tone === "warning" && toneMap[tone]), children: label }),
2106
- /* @__PURE__ */ jsx23("div", { className: cn("ph-stat-val", toneMap[tone]), children: value }),
2107
- footer && /* @__PURE__ */ jsx23("p", { className: "text-xs text-ph-subtle", children: footer })
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 jsx24, jsxs as jsxs21 } from "react/jsx-runtime";
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__ */ jsxs21("div", { className: cn("ph-toast", config.bg, className), children: [
2129
- /* @__PURE__ */ jsx24(Icon, { className: cn("mt-0.5 h-5 w-5 shrink-0", config.color), "aria-hidden": true }),
2130
- /* @__PURE__ */ jsxs21("div", { className: "pr-8", children: [
2131
- /* @__PURE__ */ jsx24("div", { className: "font-semibold", children: title }),
2132
- description && /* @__PURE__ */ jsx24("p", { className: "mt-1 text-xs text-ph-subtle", children: description })
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__ */ jsx24(
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__ */ jsx24(IconClose, { className: "h-4 w-4" })
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__ */ jsx24("div", { className: cn("ph-toast-stack", className), children });
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 jsx25 } from "react/jsx-runtime";
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__ */ jsx25("div", { className: cn("flex gap-6 border-b border-ph-border", className), children: items.map((item) => /* @__PURE__ */ jsx25(
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__ */ jsx25("div", { className: cn("ph-tabs-row inline-flex", className), children: items.map((item) => /* @__PURE__ */ jsx25(
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 Fragment4, jsx as jsx26 } from "react/jsx-runtime";
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__ */ jsx26(Fragment4, { children });
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 jsx27, jsxs as jsxs22 } from "react/jsx-runtime";
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__ */ jsxs22("label", { className: cn("flex min-w-0 items-center gap-2", className), children: [
2459
- /* @__PURE__ */ jsx27("span", { className: "shrink-0 text-xs font-medium text-ph-mutedtext sm:text-sm", children: "Theme" }),
2460
- /* @__PURE__ */ jsx27(
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__ */ jsx27("optgroup", { label: group, children: THEMES.filter((theme) => theme.group === group).map((theme) => /* @__PURE__ */ jsx27("option", { value: theme.id, children: theme.name }, theme.id)) }, group))
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 jsx28, jsxs as jsxs23 } from "react/jsx-runtime";
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__ */ jsx28("div", { className: cn("divide-y divide-ph-border rounded-xl border border-ph-border bg-ph-surface", className), children: items.map((item) => {
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__ */ jsxs23("div", { className: "first:rounded-t-xl last:rounded-b-xl", children: [
2504
- /* @__PURE__ */ jsxs23(
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__ */ jsx28("span", { className: "font-semibold text-ph-ink", children: item.title }),
2512
- /* @__PURE__ */ jsx28(
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__ */ jsx28(
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__ */ jsx28("div", { className: "overflow-hidden", children: /* @__PURE__ */ jsx28("div", { className: "px-5 pb-4 text-ph-subtle", children: item.content }) })
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 jsx29, jsxs as jsxs24 } from "react/jsx-runtime";
1786
+ import { jsx as jsx24, jsxs as jsxs21 } from "react/jsx-runtime";
2540
1787
  function Stepper({ steps, currentStep, className }) {
2541
- return /* @__PURE__ */ jsx29("div", { className: cn("flex items-start gap-2", className), children: steps.map((step, index) => {
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__ */ jsxs24("div", { className: "flex flex-1 items-start gap-2", children: [
2547
- /* @__PURE__ */ jsxs24("div", { className: "flex flex-1 flex-col items-center", children: [
2548
- /* @__PURE__ */ jsx29(
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__ */ jsx29(IconCheck, { className: "h-5 w-5", "aria-hidden": true }) : index + 1
1805
+ children: isCompleted ? /* @__PURE__ */ jsx24(IconCheck, { className: "h-5 w-5", "aria-hidden": true }) : index + 1
2559
1806
  }
2560
1807
  ),
2561
- /* @__PURE__ */ jsxs24("div", { className: "mt-2 text-center", children: [
2562
- /* @__PURE__ */ jsx29(
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__ */ jsx29("p", { className: "mt-0.5 text-xs text-ph-mutedtext", children: step.description })
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__ */ jsx29(
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 jsx30, jsxs as jsxs25 } from "react/jsx-runtime";
1837
+ import { jsx as jsx25, jsxs as jsxs22 } from "react/jsx-runtime";
2591
1838
  function SegmentedControl({ options, value, onChange, className }) {
2592
- return /* @__PURE__ */ jsx30(
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__ */ jsxs25(
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__ */ jsx30("span", { className: "h-4 w-4", children: option.icon }),
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 jsx31, jsxs as jsxs26 } from "react/jsx-runtime";
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__ */ jsx31("div", { className: "fixed inset-0 z-50 flex items-start justify-center bg-black/40 pt-[20vh] backdrop-blur-sm", children: /* @__PURE__ */ jsxs26(
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__ */ jsxs26("div", { className: "flex items-center gap-3 border-b border-ph-border px-4 py-3", children: [
2679
- /* @__PURE__ */ jsx31(IconSearch, { className: "h-5 w-5 text-ph-mutedtext" }),
2680
- /* @__PURE__ */ jsx31(
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__ */ jsx31("kbd", { className: "rounded border border-ph-border bg-ph-muted px-1.5 py-0.5 text-xs text-ph-mutedtext", children: "ESC" })
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__ */ jsx31("div", { className: "max-h-[50vh] overflow-y-auto py-2", children: filtered.length === 0 ? /* @__PURE__ */ jsx31("div", { className: "px-4 py-8 text-center text-sm text-ph-mutedtext", children: "No results found." }) : filtered.map((item, index) => /* @__PURE__ */ jsxs26(
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__ */ jsx31("span", { className: "h-5 w-5", children: item.icon }),
2711
- /* @__PURE__ */ jsx31("span", { className: "flex-1", children: item.label }),
2712
- item.shortcut && /* @__PURE__ */ jsx31("kbd", { className: "rounded border border-ph-border bg-ph-surface px-1.5 py-0.5 text-xs text-ph-mutedtext", children: item.shortcut })
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 jsx32, jsxs as jsxs27 } from "react/jsx-runtime";
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__ */ jsxs27("div", { className: cn("w-[280px] rounded-xl border border-ph-border bg-ph-surface p-4 shadow-ph", className), children: [
2767
- /* @__PURE__ */ jsxs27("div", { className: "mb-4 flex items-center justify-between", children: [
2768
- /* @__PURE__ */ jsx32(
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__ */ jsx32(IconChevronLeft, { className: "h-5 w-5", "aria-hidden": true })
2022
+ children: /* @__PURE__ */ jsx27(IconChevronLeft, { className: "h-5 w-5", "aria-hidden": true })
2776
2023
  }
2777
2024
  ),
2778
- /* @__PURE__ */ jsxs27("span", { className: "text-sm font-semibold text-ph-ink", children: [
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__ */ jsx32(
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__ */ jsx32(IconChevronRight, { className: "h-5 w-5", "aria-hidden": true })
2037
+ children: /* @__PURE__ */ jsx27(IconChevronRight, { className: "h-5 w-5", "aria-hidden": true })
2791
2038
  }
2792
2039
  )
2793
2040
  ] }),
2794
- /* @__PURE__ */ jsxs27("div", { className: "grid grid-cols-7 gap-1", children: [
2795
- weekDays.map((day) => /* @__PURE__ */ jsx32("div", { className: "py-1 text-center text-xs font-medium text-ph-mutedtext", children: day }, day)),
2796
- days.map((day, index) => /* @__PURE__ */ jsx32("div", { className: "aspect-square", children: day && /* @__PURE__ */ jsx32(
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 jsx33, jsxs as jsxs28 } from "react/jsx-runtime";
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__ */ jsxs28(
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__ */ jsxs28(
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__ */ jsx33("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" }),
2835
- /* @__PURE__ */ jsx33("div", { className: "relative", children })
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 jsx35, jsxs as jsxs30 } from "react/jsx-runtime";
2092
+ import { jsx as jsx29, jsxs as jsxs26 } from "react/jsx-runtime";
2995
2093
  function EmptyState({ icon, title, description, action, className }) {
2996
- return /* @__PURE__ */ jsxs30(
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__ */ jsx35("div", { className: "mb-4 flex h-14 w-14 items-center justify-center rounded-full bg-ph-muted text-ph-mutedtext", children: icon }),
3005
- /* @__PURE__ */ jsx35("h3", { className: "text-base font-semibold text-ph-ink", children: title }),
3006
- description && /* @__PURE__ */ jsx35("p", { className: "mt-1 max-w-sm text-sm text-ph-subtle", children: description }),
3007
- action && /* @__PURE__ */ jsx35("div", { className: "mt-4", children: action })
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 Fragment6, jsx as jsx36, jsxs as jsxs31 } from "react/jsx-runtime";
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__ */ jsx36("div", { className: cn("ph-filter-chips", className), role: "group", "aria-label": ariaLabel, children: chips.map((chip) => {
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__ */ jsxs31(Fragment6, { children: [
3026
- /* @__PURE__ */ jsx36("span", { className: "ph-filter-chip__label", children: chip.label }),
3027
- chip.value != null ? /* @__PURE__ */ jsx36("span", { className: "ph-filter-chip__value", children: chip.value }) : null
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__ */ jsxs31(
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__ */ jsx36(
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__ */ jsx36("span", { className: "ph-filter-chip__main", children: content }),
3045
- chip.active && onRemove ? /* @__PURE__ */ jsx36(
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__ */ jsx36(IconClose, { className: "h-3 w-3", "aria-hidden": true })
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 jsx37, jsxs as jsxs32 } from "react/jsx-runtime";
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__ */ jsxs32("div", __spreadProps(__spreadValues({ className: cn("ph-filter-bar", className) }, props), { children: [
3086
- /* @__PURE__ */ jsxs32("div", { className: "ph-filter-bar__controls", role: "group", "aria-label": label, children: [
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__ */ jsx37("button", { type: "button", className: "ph-filter-bar__clear", onClick: onClear, children: clearLabel }) : null
2186
+ onClear ? /* @__PURE__ */ jsx31("button", { type: "button", className: "ph-filter-bar__clear", onClick: onClear, children: clearLabel }) : null
3089
2187
  ] }),
3090
- resultCount != null ? /* @__PURE__ */ jsx37("output", { className: "ph-filter-bar__results", "aria-live": "polite", children: resultCount }) : null
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__ */ jsx37(
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__ */ jsxs32("span", { className: cn("ph-filter-menu-trigger", selected && "ph-filter-menu-trigger--active"), children: [
3115
- /* @__PURE__ */ jsx37(IconTuning, { className: "h-3.5 w-3.5", "aria-hidden": true }),
3116
- /* @__PURE__ */ jsx37("span", { className: "ph-filter-menu-trigger__label", children: label }),
3117
- /* @__PURE__ */ jsx37("span", { className: "ph-filter-menu-trigger__value", children: displayValue })
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__ */ jsx37(DropdownRadioGroup, { value, onValueChange, children: options.map((option) => /* @__PURE__ */ jsx37(
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__ */ jsx37(
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__ */ jsxs32("span", { className: "ph-filter-menu-trigger ph-sort-menu-trigger", children: [
3151
- /* @__PURE__ */ jsx37(
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__ */ jsx37("span", { className: "ph-filter-menu-trigger__label", children: label }),
3159
- selected ? /* @__PURE__ */ jsx37("span", { className: "ph-filter-menu-trigger__value", children: selected.label }) : null
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__ */ jsx37(DropdownRadioGroup, { value, onValueChange, children: options.map((option) => /* @__PURE__ */ jsx37(
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 jsx38, jsxs as jsxs33 } from "react/jsx-runtime";
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__ */ jsxs33("div", __spreadProps(__spreadValues({ className: cn("ph-filter-controls", className) }, props), { children: [
3198
- /* @__PURE__ */ jsx38(FilterBar, __spreadProps(__spreadValues({}, barProps), { children })),
3199
- hasChips && chipsProps ? /* @__PURE__ */ jsx38(FilterChips, __spreadValues({}, chipsProps)) : emptyState != null ? emptyState : null
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 useState7 } from "react";
3205
- import { jsx as jsx39, jsxs as jsxs34 } from "react/jsx-runtime";
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] = useState7(false);
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__ */ jsxs34("div", { className: cn("overflow-hidden rounded-lg border border-ph-border bg-[#1a1a2e]", className), children: [
3214
- (filename || language) && /* @__PURE__ */ jsxs34("div", { className: "flex items-center justify-between border-b border-white/10 px-4 py-2", children: [
3215
- /* @__PURE__ */ jsxs34("div", { className: "flex items-center gap-2", children: [
3216
- /* @__PURE__ */ jsxs34("div", { className: "flex gap-1.5", children: [
3217
- /* @__PURE__ */ jsx39("div", { className: "h-3 w-3 rounded-full bg-red-400" }),
3218
- /* @__PURE__ */ jsx39("div", { className: "h-3 w-3 rounded-full bg-amber-400" }),
3219
- /* @__PURE__ */ jsx39("div", { className: "h-3 w-3 rounded-full bg-emerald-400" })
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__ */ jsx39("span", { className: "ml-2 text-xs text-white/60", children: filename })
2319
+ filename && /* @__PURE__ */ jsx33("span", { className: "ml-2 text-xs text-white/60", children: filename })
3222
2320
  ] }),
3223
- /* @__PURE__ */ jsx39(
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__ */ jsx39("pre", { className: "overflow-x-auto p-4 text-sm leading-relaxed", children: /* @__PURE__ */ jsx39("code", { className: "font-mono text-[#e4e4e7]", children: code }) })
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 jsx40, jsxs as jsxs35 } from "react/jsx-runtime";
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__ */ jsxs35("details", { className: cn("ph-panel group overflow-hidden p-0", className), open: defaultOpen, children: [
3241
- /* @__PURE__ */ jsxs35("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: [
3242
- /* @__PURE__ */ jsx40("h3", { className: "text-xs font-semibold uppercase tracking-wider text-ph-mutedtext", children: title }),
3243
- /* @__PURE__ */ jsxs35("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: [
3244
- /* @__PURE__ */ jsx40("span", { className: "group-open:hidden", children: "Show" }),
3245
- /* @__PURE__ */ jsx40("span", { className: "hidden group-open:inline", children: "Hide" })
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__ */ jsx40("div", { className: "overflow-x-auto border-t border-ph-border", children: /* @__PURE__ */ jsxs35("table", { className: "w-full text-left text-sm", children: [
3249
- /* @__PURE__ */ jsx40("thead", { className: "bg-ph-muted text-xs uppercase tracking-wider text-ph-mutedtext", children: /* @__PURE__ */ jsxs35("tr", { children: [
3250
- /* @__PURE__ */ jsx40("th", { className: "px-4 py-2 font-semibold", children: "Prop" }),
3251
- /* @__PURE__ */ jsx40("th", { className: "px-4 py-2 font-semibold", children: "Type" }),
3252
- /* @__PURE__ */ jsx40("th", { className: "px-4 py-2 font-semibold", children: "Default" }),
3253
- /* @__PURE__ */ jsx40("th", { className: "px-4 py-2 font-semibold", children: "Use" })
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__ */ jsx40("tbody", { className: "divide-y divide-ph-border", children: rows.map((row) => {
2353
+ /* @__PURE__ */ jsx34("tbody", { className: "divide-y divide-ph-border", children: rows.map((row) => {
3256
2354
  var _a, _b;
3257
- return /* @__PURE__ */ jsxs35("tr", { children: [
3258
- /* @__PURE__ */ jsx40("td", { className: "px-4 py-3 align-top font-mono text-xs text-ph-ink", children: row.name }),
3259
- /* @__PURE__ */ jsx40("td", { className: "px-4 py-3 align-top font-mono text-xs text-ph-subtle", children: row.type }),
3260
- /* @__PURE__ */ jsx40("td", { className: "px-4 py-3 align-top font-mono text-xs text-ph-subtle", children: (_a = row.defaultValue) != null ? _a : "-" }),
3261
- /* @__PURE__ */ jsx40("td", { className: "px-4 py-3 align-top text-ph-subtle", children: (_b = row.description) != null ? _b : /* @__PURE__ */ jsx40("span", { className: "text-ph-mutedtext", children: "\u2014" }) })
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 useState8 } from "react";
3270
- import { jsx as jsx41, jsxs as jsxs36 } from "react/jsx-runtime";
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] = useState8(false);
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__ */ jsxs36("section", { id: id != null ? id : fallbackId, className: cn("scroll-mt-20", className), children: [
3285
- /* @__PURE__ */ jsxs36("div", { className: "ph-h2-rule mb-8", children: [
3286
- /* @__PURE__ */ jsxs36("div", { className: "flex items-center gap-1.5", children: [
3287
- /* @__PURE__ */ jsx41("h2", { children: title }),
3288
- /* @__PURE__ */ jsx41(
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__ */ jsx41(IconCodePreview, { className: "h-5 w-5", "aria-hidden": true })
2397
+ children: /* @__PURE__ */ jsx35(IconCodePreview, { className: "h-5 w-5", "aria-hidden": true })
3300
2398
  }
3301
2399
  )
3302
2400
  ] }),
3303
- /* @__PURE__ */ jsx41("hr", {})
2401
+ /* @__PURE__ */ jsx35("hr", {})
3304
2402
  ] }),
3305
- description && /* @__PURE__ */ jsx41("p", { className: "mb-6 text-sm text-ph-subtle", children: description }),
3306
- docs && /* @__PURE__ */ jsx41("div", { className: "mb-6", children: docs }),
3307
- /* @__PURE__ */ jsxs36(
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__ */ jsx41("div", { className: cn("min-w-0", showCode && "lg:pr-2"), children }),
3316
- /* @__PURE__ */ jsx41(
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__ */ jsx41("div", { className: "sticky top-20", children: /* @__PURE__ */ jsx41(CodeBlock, { code, filename }) })
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 useId6, useState as useState9 } from "react";
3373
- import { jsx as jsx42, jsxs as jsxs37 } from "react/jsx-runtime";
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] = useState9(defaultOpen);
3376
- const generatedId = useId6();
2473
+ const [isOpen, setIsOpen] = useState8(defaultOpen);
2474
+ const generatedId = useId5();
3377
2475
  const contentId = `${id != null ? id : generatedId}-content`;
3378
- return /* @__PURE__ */ jsxs37("section", { id, className: "scroll-mt-20", children: [
3379
- /* @__PURE__ */ jsxs37(
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__ */ jsx42("span", { className: "text-lg font-bold text-ph-ink", children: title }),
3389
- /* @__PURE__ */ jsx42(
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__ */ jsx42(
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 jsx43 } from "react/jsx-runtime";
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__ */ jsx43("h1", { className: textClass("text-4xl font-extrabold tracking-tight md:text-5xl", tone, weight, truncate, className), children });
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__ */ jsx43("h1", { className: textClass("text-3xl font-bold tracking-tight md:text-4xl", tone, weight, truncate, className), children });
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__ */ jsx43("h2", { className: textClass("text-2xl font-bold tracking-tight", tone, weight, truncate, className), children });
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__ */ jsx43("h3", { className: textClass("text-xl font-semibold", tone, weight, truncate, className), children });
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__ */ jsx43("h4", { className: textClass("text-lg font-semibold", tone, weight, truncate, className), children });
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__ */ jsx43("h5", { className: textClass("text-base font-semibold", tone, weight, truncate, className), children });
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__ */ jsx43("p", { className: textClass("text-base leading-relaxed", tone, weight, truncate, className), children });
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__ */ jsx43("span", { className: textClass("text-sm leading-relaxed", tone, weight, truncate, className), children });
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__ */ jsx43("span", { className: textClass("text-[11px] font-medium uppercase tracking-wider", tone, weight, truncate, className), children });
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__ */ jsx43("span", { className: textClass("text-[10px] font-bold uppercase tracking-[0.15em]", tone, weight, truncate, className), children });
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__ */ jsx43("p", { className: textClass("text-lg leading-relaxed", tone, weight, truncate, className), children });
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__ */ jsx43("code", { className: textClass("text-sm font-mono leading-relaxed", tone, weight, truncate, className), children });
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__ */ jsx43("label", { className: textClass("text-sm font-medium", tone, weight, truncate, className), children });
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 jsx44, jsxs as jsxs38 } from "react/jsx-runtime";
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__ */ jsxs38("div", __spreadProps(__spreadValues({ className: cn("relative inline-flex shrink-0", className) }, props), { children: [
3520
- /* @__PURE__ */ jsx44(
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__ */ jsx44(
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__ */ jsx44("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 })
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__ */ jsxs38("div", __spreadProps(__spreadValues({ className: cn("-space-x-3 flex rtl:space-x-reverse", className) }, props), { children: [
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__ */ jsx44(
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 jsx45, jsxs as jsxs39 } from "react/jsx-runtime";
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__ */ jsxs39("div", __spreadProps(__spreadValues({ className: cn("w-full", className) }, props), { children: [
3588
- (label || showPercentage) && /* @__PURE__ */ jsxs39("div", { className: "mb-1.5 flex justify-between text-sm text-ph-subtle", children: [
3589
- label && /* @__PURE__ */ jsx45("span", { children: label }),
3590
- showPercentage && /* @__PURE__ */ jsxs39("span", { className: "tabular-nums", children: [
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__ */ jsx45("div", { className: cn("ph-progress", sizeMap6[size]), children: /* @__PURE__ */ jsx45(
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 jsx46, jsxs as jsxs40 } from "react/jsx-runtime";
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__ */ jsxs40(
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__ */ jsx46("div", { className: "shrink-0", children: avatar }),
3641
- /* @__PURE__ */ jsxs40("div", { className: cn("min-w-0 flex-1", isSelf && "text-right"), children: [
3642
- (name || time) && /* @__PURE__ */ jsxs40(
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__ */ jsx46("span", { className: "font-semibold text-ph-ink", children: name }),
3651
- time && /* @__PURE__ */ jsx46("span", { children: time })
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__ */ jsx46(
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__ */ jsx46("footer", { className: "mt-2 text-[11px] text-ph-mutedtext", children: footer })
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 Fragment7, jsx as jsx47, jsxs as jsxs41 } from "react/jsx-runtime";
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__ */ jsxs41(
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__ */ jsxs41("header", { className: "flex items-center gap-2 border-b border-ph-border bg-ph-muted px-4 py-3", children: [
3696
- /* @__PURE__ */ jsx47("div", { className: "h-3 w-3 rounded-full bg-red-400" }),
3697
- /* @__PURE__ */ jsx47("div", { className: "h-3 w-3 rounded-full bg-amber-400" }),
3698
- /* @__PURE__ */ jsx47("div", { className: "h-3 w-3 rounded-full bg-emerald-400" }),
3699
- title && /* @__PURE__ */ jsx47("span", { className: "text-xs font-medium text-ph-mutedtext", children: title })
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__ */ jsx47("div", { className: "ph-code rounded-none border-x-0 border-b-0 text-[13px] leading-relaxed", children: children || /* @__PURE__ */ jsx47(Fragment7, { children: lines == null ? void 0 : lines.map((line, i) => {
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__ */ jsxs41("span", { children: [
3705
- /* @__PURE__ */ jsx47("span", { className: color || "text-neutral-600", children: text }),
3706
- i < lines.length - 1 && /* @__PURE__ */ jsx47("br", {})
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 jsx48, jsxs as jsxs42 } from "react/jsx-runtime";
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__ */ jsxs42("div", __spreadProps(__spreadValues({ className: cn("relative inline-flex items-center justify-center", className) }, props), { children: [
3739
- dot ? /* @__PURE__ */ jsx48(
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__ */ jsx48(
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 jsx49, jsxs as jsxs43 } from "react/jsx-runtime";
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__ */ jsx49(
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__ */ jsxs43("li", { className: cn("relative flex gap-6", align), children: [
3783
- /* @__PURE__ */ jsx49(
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__ */ jsxs43("article", { className: "flex-1 rounded-xl border border-ph-border bg-ph-surface p-4 shadow-ph", children: [
3794
- /* @__PURE__ */ jsxs43("div", { className: "flex flex-wrap items-baseline gap-3", children: [
3795
- /* @__PURE__ */ jsx49("h4", { className: "text-base font-semibold text-ph-ink", children: event.title }),
3796
- event.time && /* @__PURE__ */ jsx49("time", { className: "text-[11px] font-semibold uppercase tracking-wide text-ph-mutedtext", children: event.time })
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__ */ jsx49("p", { className: "mt-2 text-sm text-ph-subtle", children: event.description })
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 forwardRef9 } from "react";
3808
- import { jsx as jsx50, jsxs as jsxs44 } from "react/jsx-runtime";
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 = forwardRef9(function Banner2(_a, ref) {
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__ */ jsx50(
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__ */ jsxs44("div", { className: "ph-banner__body", children: [
2946
+ children: /* @__PURE__ */ jsxs40("div", { className: "ph-banner__body", children: [
3849
2947
  icon,
3850
- /* @__PURE__ */ jsx50("div", { className: "ph-banner__content", children }),
3851
- action && /* @__PURE__ */ jsx50("div", { className: "ph-banner__action", children: action }),
3852
- onClose && /* @__PURE__ */ jsx50("button", { type: "button", onClick: onClose, className: "ph-banner__close", "aria-label": "Dismiss", children: /* @__PURE__ */ jsx50("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: /* @__PURE__ */ jsx50("path", { d: "M4 4l8 8M12 4l-8 8" }) }) })
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 useState10 } from "react";
3861
- import { jsx as jsx51, jsxs as jsxs45 } from "react/jsx-runtime";
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] = useState10(false);
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__ */ jsx51(
2994
+ return /* @__PURE__ */ jsx45(
3897
2995
  Modal,
3898
2996
  __spreadProps(__spreadValues({
3899
2997
  open: isOpen,
3900
2998
  onClose,
3901
2999
  title,
3902
- footer: /* @__PURE__ */ jsxs45("div", { className: "flex justify-end gap-2", children: [
3903
- /* @__PURE__ */ jsx51(Button, __spreadProps(__spreadValues({ variant: "secondary" }, cancelProps), { onClick: onClose, children: cancelText })),
3904
- onConfirm && /* @__PURE__ */ jsx51(
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 jsx52 } from "react/jsx-runtime";
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__ */ jsx52(
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__ */ jsx52("span", { className: "ph-divider__label", children: label })
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 forwardRef10 } from "react";
3961
- import { jsx as jsx53, jsxs as jsxs46 } from "react/jsx-runtime";
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 = forwardRef10(function Tag2(_a, ref) {
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__ */ jsxs46(
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__ */ jsx53("span", { className: "ph-tag__icon", children: icon }),
4003
- /* @__PURE__ */ jsx53("span", { className: "ph-tag__text", children }),
4004
- closable && /* @__PURE__ */ jsx53(
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__ */ jsx53("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: /* @__PURE__ */ jsx53("path", { d: "M3 3l6 6M9 3l-6 6" }) })
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 jsx54, jsxs as jsxs47 } from "react/jsx-runtime";
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__ */ jsxs47(
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__ */ jsxs47("svg", { width: size, height: size, children: [
4055
- /* @__PURE__ */ jsx54(
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__ */ jsx54(
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__ */ jsx54("span", { className: "ph-progress-circle__content", children })
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 forwardRef11 } from "react";
4093
- import { jsx as jsx55, jsxs as jsxs48 } from "react/jsx-runtime";
4094
- var Row = forwardRef11(function Row2(_a, ref) {
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__ */ jsx55(
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__ */ jsxs48("div", { className: "ph-row__main", children: [
4131
- icon && /* @__PURE__ */ jsx55("span", { className: "ph-row__icon", children: icon }),
4132
- !symbolic && /* @__PURE__ */ jsx55("div", { className: "ph-row__content", children }),
4133
- sideIcon && /* @__PURE__ */ jsx55("span", { className: "ph-row__side-icon", children: sideIcon })
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 jsx56, jsxs as jsxs49 } from "react/jsx-runtime";
3239
+ import { jsx as jsx50, jsxs as jsxs45 } from "react/jsx-runtime";
4142
3240
  function Widget({ title, onClose, actions, children, className }) {
4143
- return /* @__PURE__ */ jsxs49("div", { className: cn("ph-widget", className), children: [
4144
- /* @__PURE__ */ jsxs49("div", { className: "ph-widget__header", children: [
4145
- /* @__PURE__ */ jsx56("span", { className: "ph-widget__title", children: title }),
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__ */ jsx56("button", { type: "button", onClick: onClose, className: "ph-widget__close", "aria-label": "Close", children: /* @__PURE__ */ jsx56("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: /* @__PURE__ */ jsx56("path", { d: "M3 3l8 8M11 3l-8 8" }) }) })
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__ */ jsx56("div", { className: "ph-widget__content", children })
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 forwardRef12 } from "react";
4156
- import { jsx as jsx57 } from "react/jsx-runtime";
4157
- var Lettermark = forwardRef12(function Lettermark2(_a, ref) {
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__ */ jsx57(
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 jsx58 } from "react/jsx-runtime";
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__ */ jsx58(
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__ */ jsx58("div", { className: "ph-splotch__paint" })
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 useState11, useRef as useRef4, useEffect as useEffect4 } from "react";
4223
- import { jsx as jsx59, jsxs as jsxs50 } from "react/jsx-runtime";
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] = useState11(false);
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 = useRef4(null);
4249
- const panelRef = useRef4(null);
4250
- useEffect4(() => {
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__ */ jsxs50("div", __spreadProps(__spreadValues({ className: cn("ph-popover relative inline-flex", className) }, props), { children: [
4261
- /* @__PURE__ */ jsx59(
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__ */ jsx59(
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 jsx60 } from "react/jsx-runtime";
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__ */ jsx60(
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__ */ jsx60("div", { className: "ph-loading-bar__fill" })
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 forwardRef13 } from "react";
4311
- import { jsx as jsx61 } from "react/jsx-runtime";
4312
- var Link = forwardRef13(function Link2(_a, ref) {
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__ */ jsx61(
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 jsx62, jsxs as jsxs51 } from "react/jsx-runtime";
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__ */ jsx62(
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__ */ jsxs51("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: "ph-spinner__svg", children: [
4357
- /* @__PURE__ */ jsx62("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "3", opacity: 0.2 }),
4358
- /* @__PURE__ */ jsx62("path", { d: "M12 2a10 10 0 0 1 10 10", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round" })
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 forwardRef14 } from "react";
4367
- import { jsx as jsx63, jsxs as jsxs52 } from "react/jsx-runtime";
4368
- var Snack = forwardRef14(function Snack2(_a, ref) {
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__ */ jsxs52(
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__ */ jsx63("span", { className: "ph-snack__text", children }),
4396
- onClose && /* @__PURE__ */ jsx63(
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__ */ jsx63("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: /* @__PURE__ */ jsx63("path", { d: "M3 3l6 6M9 3l-6 6" }) })
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 useState12, useRef as useRef5, useEffect as useEffect5 } from "react";
4417
- import { jsx as jsx64, jsxs as jsxs53 } from "react/jsx-runtime";
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] = useState12(false);
4427
- const [search, setSearch] = useState12("");
4428
- const inputRef = useRef5(null);
4429
- const containerRef = useRef5(null);
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
- useEffect5(() => {
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__ */ jsxs53("div", { ref: containerRef, className: cn("ph-combobox relative", className), children: [
4449
- /* @__PURE__ */ jsxs53("div", { className: "ph-combobox__input-wrap", children: [
4450
- value.length > 0 && /* @__PURE__ */ jsx64("div", { className: "ph-combobox__chips", children: value.map((v) => {
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__ */ jsxs53("span", { className: "ph-combobox__chip", children: [
3551
+ return /* @__PURE__ */ jsxs49("span", { className: "ph-combobox__chip", children: [
4454
3552
  (_a = opt == null ? void 0 : opt.label) != null ? _a : v,
4455
- /* @__PURE__ */ jsx64(
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__ */ jsx64("svg", { width: "10", height: "10", viewBox: "0 0 10 10", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: /* @__PURE__ */ jsx64("path", { d: "M2 2l6 6M8 2l-6 6" }) })
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__ */ jsx64(
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__ */ jsx64("div", { className: "ph-combobox__dropdown", children: filtered.map((opt) => /* @__PURE__ */ jsxs53(
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__ */ jsx64("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsx64("path", { d: "M2.5 6l2.5 2.5 4.5-5" }) }),
4495
- /* @__PURE__ */ jsx64("span", { children: opt.label })
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 useState13, useRef as useRef6, useEffect as useEffect6 } from "react";
4506
- import { jsx as jsx65, jsxs as jsxs54 } from "react/jsx-runtime";
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] = useState13(false);
4524
- const [search, setSearch] = useState13("");
4525
- const [activeIndex, setActiveIndex] = useState13(-1);
4526
- const containerRef = useRef6(null);
4527
- const inputRef = useRef6(null);
4528
- const listRef = useRef6(null);
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
- useEffect6(() => {
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
- useEffect6(() => {
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__ */ jsxs54("div", { ref: containerRef, className: cn("ph-autocomplete relative", className), children: [
4578
- /* @__PURE__ */ jsx65(
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__ */ jsx65("div", { ref: listRef, className: "ph-autocomplete__dropdown", role: "listbox", children: filtered.map((opt, i) => /* @__PURE__ */ jsx65(
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 useState14, useRef as useRef7, useEffect as useEffect7 } from "react";
4616
- import { jsx as jsx66, jsxs as jsxs55 } from "react/jsx-runtime";
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] = useState14(false);
4620
- const [pos, setPos] = useState14({ x: 0, y: 0 });
4621
- const menuRef = useRef7(null);
4622
- useEffect7(() => {
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__ */ jsxs55(
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__ */ jsx66(
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__ */ jsx66("div", { className: "ph-context-menu__separator" }, i) : /* @__PURE__ */ jsxs55(
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__ */ jsx66("span", { className: "ph-context-menu__icon", children: item.icon }),
4671
- /* @__PURE__ */ jsx66("span", { children: item.label })
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 useState15, useRef as useRef8, useCallback } from "react";
4687
- import { jsx as jsx67, jsxs as jsxs56 } from "react/jsx-runtime";
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] = useState15(defaultLeftWidth);
4705
- const dragging = useRef8(false);
4706
- const containerRef = useRef8(null);
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__ */ jsxs56(
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__ */ jsx67("div", { className: "ph-resizable__left overflow-auto", style: { width: `${leftPercent}%` }, children: left }),
4735
- /* @__PURE__ */ jsx67(
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__ */ jsx67("div", { className: "ph-resizable__right flex-1 overflow-auto", children: right })
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 useRef9, useState as useState16, useEffect as useEffect8 } from "react";
4751
- import { jsx as jsx68, jsxs as jsxs57 } from "react/jsx-runtime";
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 = useRef9(null);
4763
- const [showTop, setShowTop] = useState16(false);
4764
- const [showBottom, setShowBottom] = useState16(false);
4765
- useEffect8(() => {
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__ */ jsxs57(
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__ */ jsx68("div", { className: "ph-scroll-area__shadow-top" }),
4793
- /* @__PURE__ */ jsx68("div", { ref: viewportRef, className: "ph-scroll-area__viewport overflow-y-auto overscroll-contain", children }),
4794
- showBottom && /* @__PURE__ */ jsx68("div", { className: "ph-scroll-area__shadow-bottom" })
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 useState17 } from "react";
4803
- import { jsx as jsx69, jsxs as jsxs58 } from "react/jsx-runtime";
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] = useState17(controlledValue != null ? controlledValue : 0);
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__ */ jsxs58("div", { className: cn("ph-number-field", className), children: [
4834
- label && /* @__PURE__ */ jsx69("label", { className: "ph-label", children: label }),
4835
- /* @__PURE__ */ jsxs58("div", { className: "ph-number-field__control", children: [
4836
- /* @__PURE__ */ jsx69(
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__ */ jsx69("svg", { width: "12", height: "2", viewBox: "0 0 12 2", fill: "currentColor", children: /* @__PURE__ */ jsx69("rect", { y: "0", width: "12", height: "2", rx: "1" }) })
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__ */ jsx69(
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__ */ jsx69(
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__ */ jsx69("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: /* @__PURE__ */ jsx69("path", { d: "M6 2v8M2 6h8" }) })
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 jsx70 } from "react/jsx-runtime";
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__ */ jsx70("div", __spreadProps(__spreadValues({ className: cn("ph-input-group", className) }, props), { children }));
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 jsx71 } from "react/jsx-runtime";
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__ */ jsx71("div", __spreadProps(__spreadValues({ className: cn("ph-btn-group", className) }, props), { children }));
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 forwardRef15 } from "react";
4894
- import { jsx as jsx72, jsxs as jsxs59 } from "react/jsx-runtime";
4895
- var ToggleButton = forwardRef15(function ToggleButton2(_a, ref) {
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__ */ jsxs59(
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__ */ jsx72("span", { className: "ph-toggle-btn__icon", children: icon }),
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__ */ jsx72("div", { className: cn("ph-toggle-group", className), role: "group", children });
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 useState18, useRef as useRef10, useEffect as useEffect9 } from "react";
4943
- import { jsx as jsx73, jsxs as jsxs60 } from "react/jsx-runtime";
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] = useState18(-1);
4947
- const barRef = useRef10(null);
4948
- useEffect9(() => {
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__ */ jsx73("div", __spreadProps(__spreadValues({ ref: barRef, className: cn("ph-menubar", className) }, props), { children: items.map((item, i) => /* @__PURE__ */ jsxs60("div", { className: "ph-menubar__item", children: [
4959
- /* @__PURE__ */ jsx73(
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__ */ jsx73("div", { className: "ph-menubar__dropdown", children: item.items.map(
4969
- (sub, j) => sub.separator ? /* @__PURE__ */ jsx73("div", { className: "ph-menubar__separator" }, j) : /* @__PURE__ */ jsx73(
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 useState19 } from "react";
4991
- import { jsx as jsx74, jsxs as jsxs61 } from "react/jsx-runtime";
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] = useState19(false);
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__ */ jsx74(
4124
+ return /* @__PURE__ */ jsx68(
5027
4125
  Modal,
5028
4126
  __spreadProps(__spreadValues({
5029
4127
  open: isOpen,
5030
4128
  onClose,
5031
4129
  title,
5032
- footer: /* @__PURE__ */ jsxs61("div", { className: "flex justify-end gap-2", children: [
5033
- /* @__PURE__ */ jsx74(Button, __spreadProps(__spreadValues({ variant: "secondary" }, cancelProps), { onClick: onClose, children: cancelText })),
5034
- onConfirm && /* @__PURE__ */ jsx74(Button, __spreadProps(__spreadValues({ variant: "primary", loading }, confirmProps), { onClick: handleConfirm, children: confirmText }))
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 jsx75 } from "react/jsx-runtime";
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__ */ jsx75(
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 useState20 } from "react";
5071
- import { jsx as jsx76, jsxs as jsxs62 } from "react/jsx-runtime";
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] = useState20(false);
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__ */ jsxs62("div", __spreadProps(__spreadValues({ className: cn("ph-collapsible", className) }, props), { children: [
5090
- /* @__PURE__ */ jsxs62(
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__ */ jsx76(
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__ */ jsx76("path", { d: "M4 5l3 3 3-3" })
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__ */ jsx76("div", { className: "ph-collapsible__content", children })
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 jsx77, jsxs as jsxs63 } from "react/jsx-runtime";
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__ */ jsxs63("div", __spreadProps(__spreadValues({ className: cn("ph-metric", className) }, props), { children: [
5140
- /* @__PURE__ */ jsxs63("div", { className: "ph-metric__header", children: [
5141
- icon && /* @__PURE__ */ jsx77("span", { className: "ph-metric__icon", children: icon }),
5142
- /* @__PURE__ */ jsx77("span", { className: "ph-metric__label", children: label }),
5143
- badge && /* @__PURE__ */ jsx77("span", { className: "ph-metric__badge", children: badge })
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__ */ jsx77("div", { className: "ph-metric__value", children: value }),
5146
- trend && /* @__PURE__ */ jsx77("div", { className: "ph-metric__trend", children: trend })
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 forwardRef16 } from "react";
5153
- import { jsx as jsx78, jsxs as jsxs64 } from "react/jsx-runtime";
5154
- var Chip = forwardRef16(function Chip2(_a, ref) {
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__ */ jsxs64(
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__ */ jsx78("span", { className: "ph-chip__text", children }),
5179
- onRemove && /* @__PURE__ */ jsx78(
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__ */ jsx78("svg", { width: "10", height: "10", viewBox: "0 0 10 10", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: /* @__PURE__ */ jsx78("path", { d: "M2 2l6 6M8 2l-6 6" }) })
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 useState21, useMemo } from "react";
5201
- import { jsx as jsx79, jsxs as jsxs65 } from "react/jsx-runtime";
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] = useState21("");
5211
- const [sortKey, setSortKey] = useState21(null);
5212
- const [sortDir, setSortDir] = useState21("asc");
5213
- const [page, setPage] = useState21(0);
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__ */ jsxs65("div", { className: cn("ph-data-table", className), children: [
5243
- searchable && /* @__PURE__ */ jsx79("div", { className: "ph-data-table__toolbar", children: /* @__PURE__ */ jsx79(
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__ */ jsx79("div", { className: "ph-table-wrap", children: /* @__PURE__ */ jsxs65("table", { className: "ph-table", children: [
5257
- /* @__PURE__ */ jsx79("thead", { children: /* @__PURE__ */ jsx79("tr", { children: columns.map((col) => /* @__PURE__ */ jsxs65(
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__ */ jsx79("span", { className: "ml-1 inline-block", children: sortDir === "asc" ? "\u2191" : "\u2193" })
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__ */ jsxs65("tbody", { children: [
5270
- paged.map((item, i) => /* @__PURE__ */ jsx79("tr", { children: columns.map((col) => /* @__PURE__ */ jsx79("td", { className: col.className, children: col.render ? col.render(item) : item[col.key] }, col.key)) }, i)),
5271
- paged.length === 0 && /* @__PURE__ */ jsx79("tr", { children: /* @__PURE__ */ jsx79("td", { colSpan: columns.length, className: "text-center text-ph-mutedtext py-8", children: "No results" }) })
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__ */ jsxs65("div", { className: "ph-data-table__pagination", children: [
5275
- /* @__PURE__ */ jsx79("button", { disabled: page === 0, onClick: () => setPage((p) => p - 1), className: "ph-data-table__page-btn", children: "Previous" }),
5276
- /* @__PURE__ */ jsxs65("span", { className: "text-xs text-ph-mutedtext", children: [
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__ */ jsx79("button", { disabled: page >= totalPages - 1, onClick: () => setPage((p) => p + 1), className: "ph-data-table__page-btn", children: "Next" })
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 useState22, useMemo as useMemo2 } from "react";
5290
- import { jsx as jsx80, jsxs as jsxs66 } from "react/jsx-runtime";
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] = useState22(false);
5296
- const [viewDate, setViewDate] = useState22(value != null ? value : /* @__PURE__ */ new Date());
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__ */ jsxs66("div", { className: cn("ph-datepicker relative", className), children: [
5326
- /* @__PURE__ */ jsx80(
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__ */ jsxs66("div", { className: "ph-datepicker__dropdown", children: [
5338
- /* @__PURE__ */ jsxs66("div", { className: "ph-datepicker__nav", children: [
5339
- /* @__PURE__ */ jsx80("button", { type: "button", onClick: () => nav(-1), className: "ph-datepicker__nav-btn", "aria-label": "Previous month", children: /* @__PURE__ */ jsx80("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: /* @__PURE__ */ jsx80("path", { d: "M7 3L4 6l3 3" }) }) }),
5340
- /* @__PURE__ */ jsxs66("span", { className: "ph-datepicker__nav-label", children: [
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__ */ jsx80("button", { type: "button", onClick: () => nav(1), className: "ph-datepicker__nav-btn", "aria-label": "Next month", children: /* @__PURE__ */ jsx80("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: /* @__PURE__ */ jsx80("path", { d: "M5 3l3 3-3 3" }) }) })
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__ */ jsxs66("div", { className: "ph-datepicker__grid", children: [
5348
- DAYS.map((d) => /* @__PURE__ */ jsx80("div", { className: "ph-datepicker__day-header", children: d }, d)),
5349
- days.map((d, i) => /* @__PURE__ */ jsx80(
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 jsx81, jsxs as jsxs67 } from "react/jsx-runtime";
4469
+ import { jsx as jsx75, jsxs as jsxs63 } from "react/jsx-runtime";
5372
4470
  function AppLayout({ sidebar, children, sidebarWidth = 240, className }) {
5373
- return /* @__PURE__ */ jsxs67(
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__ */ jsx81("aside", { className: "ph-app-layout__sidebar border-r border-ph-border bg-ph-surface overflow-y-auto", children: sidebar }),
5380
- /* @__PURE__ */ jsx81("main", { className: "ph-app-layout__content min-w-0 overflow-y-auto bg-ph-canvas", children })
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 jsx82, jsxs as jsxs68 } from "react/jsx-runtime";
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__ */ jsxs68("nav", { className: cn("ph-sidebar flex flex-col h-full", collapsed && "ph-sidebar--collapsed", className), children: [
5390
- header && /* @__PURE__ */ jsx82("div", { className: "ph-sidebar__header px-3 py-3 border-b border-ph-border-subtle", children: header }),
5391
- /* @__PURE__ */ jsx82("div", { className: "ph-sidebar__body flex-1 overflow-y-auto px-2 py-3 space-y-5", children: groups.map((group) => {
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__ */ jsxs68("div", { className: "ph-sidebar__group", children: [
5394
- group.label && !collapsed && /* @__PURE__ */ jsx82("h3", { className: "ph-sidebar__group-label px-2 mb-1 text-[10px] font-semibold uppercase tracking-wider text-ph-mutedtext", children: group.label }),
5395
- /* @__PURE__ */ jsx82("div", { className: "ph-sidebar__items space-y-0.5", children: group.items.map((item) => /* @__PURE__ */ jsx82(SidebarItem, __spreadProps(__spreadValues({}, item), { collapsed }), item.label)) })
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__ */ jsx82("div", { className: "ph-sidebar__footer px-3 py-3 border-t border-ph-border-subtle", children: footer })
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__ */ jsxs68(
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__ */ jsx82("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 }),
5418
- !collapsed && /* @__PURE__ */ jsx82("span", { className: "ph-sidebar__item-label truncate flex-1", children: label }),
5419
- !collapsed && badge && /* @__PURE__ */ jsx82("span", { className: "ph-sidebar__item-badge shrink-0", children: badge })
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,