@platned/ui 0.5.1 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1149 -835
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +101 -1
- package/dist/index.d.ts +101 -1
- package/dist/index.js +838 -532
- package/dist/index.js.map +1 -1
- package/dist/sidebar.cjs +1 -1
- package/dist/sidebar.cjs.map +1 -1
- package/dist/sidebar.js +1 -1
- package/dist/sidebar.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1644,7 +1644,7 @@ var SelectControl = forwardRef7(
|
|
|
1644
1644
|
"aria-required": field["aria-required"],
|
|
1645
1645
|
"aria-invalid": field["aria-invalid"],
|
|
1646
1646
|
style: { ...floatingStyles, width: "var(--panel-anchor-width)" },
|
|
1647
|
-
className: clsx14("z-
|
|
1647
|
+
className: clsx14("z-popover", OVERLAY_PANEL, OVERLAY_PANEL_SCROLL),
|
|
1648
1648
|
...roving.containerProps,
|
|
1649
1649
|
onKeyDown: (event) => {
|
|
1650
1650
|
roving.containerProps.onKeyDown(event);
|
|
@@ -2835,7 +2835,7 @@ function Combobox({
|
|
|
2835
2835
|
role: "listbox",
|
|
2836
2836
|
"aria-label": label,
|
|
2837
2837
|
style: { ...floatingStyles, width: "var(--panel-anchor-width)" },
|
|
2838
|
-
className: clsx25("z-
|
|
2838
|
+
className: clsx25("z-popover", OVERLAY_PANEL, OVERLAY_PANEL_SCROLL),
|
|
2839
2839
|
children: [
|
|
2840
2840
|
matches.length === 0 && /* @__PURE__ */ jsx22("p", { className: "px-2.5 py-2 text-body-xs text-default-secondary", children: emptyMessage }),
|
|
2841
2841
|
matches.map((option, index) => {
|
|
@@ -2929,11 +2929,128 @@ function RoleComboBox({
|
|
|
2929
2929
|
);
|
|
2930
2930
|
}
|
|
2931
2931
|
|
|
2932
|
+
// src/components/forms/country-select.tsx
|
|
2933
|
+
import { useMemo as useMemo3 } from "react";
|
|
2934
|
+
import { jsx as jsx24 } from "react/jsx-runtime";
|
|
2935
|
+
var ISO_3166_ALPHA_2 = "AD AE AF AG AI AL AM AO AQ AR AS AT AU AW AX AZ BA BB BD BE BF BG BH BI BJ BL BM BN BO BQ BR BS BT BV BW BY BZ CA CC CD CF CG CH CI CK CL CM CN CO CR CU CV CW CX CY CZ DE DJ DK DM DO DZ EC EE EG EH ER ES ET FI FJ FK FM FO FR GA GB GD GE GF GG GH GI GL GM GN GP GQ GR GS GT GU GW GY HK HM HN HR HT HU ID IE IL IM IN IO IQ IR IS IT JE JM JO JP KE KG KH KI KM KN KP KR KW KY KZ LA LB LC LI LK LR LS LT LU LV LY MA MC MD ME MF MG MH MK ML MM MN MO MP MQ MR MS MT MU MV MW MX MY MZ NA NC NE NF NG NI NL NO NP NR NU NZ OM PA PE PF PG PH PK PL PM PN PR PS PT PW PY QA RE RO RS RU RW SA SB SC SD SE SG SH SI SJ SK SL SM SN SO SR SS ST SV SX SY SZ TC TD TF TG TH TJ TK TL TM TN TO TR TT TV TW TZ UA UG UM US UY UZ VA VC VE VG VI VN VU WF WS YE YT ZA ZM ZW";
|
|
2936
|
+
var COUNTRY_CODES = ISO_3166_ALPHA_2.split(" ");
|
|
2937
|
+
function countryOptions(codes = COUNTRY_CODES, locale) {
|
|
2938
|
+
let names = null;
|
|
2939
|
+
try {
|
|
2940
|
+
names = new Intl.DisplayNames(locale ? [locale] : void 0, { type: "region" });
|
|
2941
|
+
} catch {
|
|
2942
|
+
}
|
|
2943
|
+
return codes.map((code) => ({ value: code, label: names?.of(code) ?? code, description: code })).sort((a, b) => a.label.localeCompare(b.label, locale));
|
|
2944
|
+
}
|
|
2945
|
+
function CountrySelect({
|
|
2946
|
+
countries,
|
|
2947
|
+
locale,
|
|
2948
|
+
placeholder = "Select a country\u2026",
|
|
2949
|
+
emptyMessage = "No countries match",
|
|
2950
|
+
...props
|
|
2951
|
+
}) {
|
|
2952
|
+
const keep = [props.value, props.defaultValue].filter((v) => !!v);
|
|
2953
|
+
const keepKey = keep.join("|");
|
|
2954
|
+
const options = useMemo3(() => {
|
|
2955
|
+
const list = countryOptions(countries, locale);
|
|
2956
|
+
const missing = keep.filter((v) => !list.some((o) => o.value === v));
|
|
2957
|
+
return [...countryOptions(missing, locale), ...list];
|
|
2958
|
+
}, [countries, locale, keepKey]);
|
|
2959
|
+
return /* @__PURE__ */ jsx24(
|
|
2960
|
+
Combobox,
|
|
2961
|
+
{
|
|
2962
|
+
...props,
|
|
2963
|
+
options,
|
|
2964
|
+
placeholder,
|
|
2965
|
+
emptyMessage,
|
|
2966
|
+
filter: (option, query) => {
|
|
2967
|
+
const q = query.trim().toLowerCase();
|
|
2968
|
+
return option.label.toLowerCase().includes(q) || option.value.toLowerCase() === q;
|
|
2969
|
+
}
|
|
2970
|
+
}
|
|
2971
|
+
);
|
|
2972
|
+
}
|
|
2973
|
+
|
|
2974
|
+
// src/components/forms/time-zone-select.tsx
|
|
2975
|
+
import { useMemo as useMemo4 } from "react";
|
|
2976
|
+
import { jsx as jsx25 } from "react/jsx-runtime";
|
|
2977
|
+
var RENAMED = {
|
|
2978
|
+
"America/Godthab": "America/Nuuk",
|
|
2979
|
+
"Asia/Calcutta": "Asia/Kolkata",
|
|
2980
|
+
"Asia/Katmandu": "Asia/Kathmandu",
|
|
2981
|
+
"Asia/Rangoon": "Asia/Yangon",
|
|
2982
|
+
"Asia/Saigon": "Asia/Ho_Chi_Minh",
|
|
2983
|
+
"Atlantic/Faeroe": "Atlantic/Faroe",
|
|
2984
|
+
"Europe/Kiev": "Europe/Kyiv",
|
|
2985
|
+
"Pacific/Enderbury": "Pacific/Kanton",
|
|
2986
|
+
"Pacific/Ponape": "Pacific/Pohnpei",
|
|
2987
|
+
"Pacific/Truk": "Pacific/Chuuk"
|
|
2988
|
+
};
|
|
2989
|
+
var currentZoneName = (zone) => RENAMED[zone] ?? zone;
|
|
2990
|
+
function supportedTimeZones() {
|
|
2991
|
+
const intl = Intl;
|
|
2992
|
+
try {
|
|
2993
|
+
const zones = intl.supportedValuesOf?.("timeZone");
|
|
2994
|
+
if (zones && zones.length > 0) return zones;
|
|
2995
|
+
} catch {
|
|
2996
|
+
}
|
|
2997
|
+
return ["UTC"];
|
|
2998
|
+
}
|
|
2999
|
+
function timeZoneOffset(timeZone, at = /* @__PURE__ */ new Date()) {
|
|
3000
|
+
try {
|
|
3001
|
+
const part = new Intl.DateTimeFormat("en-US", { timeZone, timeZoneName: "longOffset" }).formatToParts(at).find((p) => p.type === "timeZoneName")?.value;
|
|
3002
|
+
const match = part?.match(/GMT([+-])(\d{2}):(\d{2})/);
|
|
3003
|
+
if (!match) return { label: "+00:00", minutes: 0 };
|
|
3004
|
+
const [, sign, hh, mm] = match;
|
|
3005
|
+
const minutes = (Number(hh) * 60 + Number(mm)) * (sign === "-" ? -1 : 1);
|
|
3006
|
+
return { label: `${sign}${hh}:${mm}`, minutes };
|
|
3007
|
+
} catch {
|
|
3008
|
+
return { label: "+00:00", minutes: 0 };
|
|
3009
|
+
}
|
|
3010
|
+
}
|
|
3011
|
+
function timeZoneOptions(zones = supportedTimeZones(), at = /* @__PURE__ */ new Date()) {
|
|
3012
|
+
return Array.from(new Set(zones.map(currentZoneName))).map((zone) => ({ zone, minutes: timeZoneOffset(zone, at).minutes })).sort((a, b) => a.minutes - b.minutes || a.zone.localeCompare(b.zone)).map(({ zone }) => zoneOption(zone, at));
|
|
3013
|
+
}
|
|
3014
|
+
var zoneOption = (zone, at) => ({
|
|
3015
|
+
value: zone,
|
|
3016
|
+
label: `(UTC${timeZoneOffset(zone, at).label}) ${zone.replace(/_/g, " ")}`
|
|
3017
|
+
});
|
|
3018
|
+
function TimeZoneSelect({
|
|
3019
|
+
timeZones,
|
|
3020
|
+
at,
|
|
3021
|
+
placeholder = "Select a time zone\u2026",
|
|
3022
|
+
emptyMessage = "No time zones match",
|
|
3023
|
+
...props
|
|
3024
|
+
}) {
|
|
3025
|
+
const atTime = at?.getTime();
|
|
3026
|
+
const keep = [props.value, props.defaultValue].filter((v) => !!v);
|
|
3027
|
+
const keepKey = keep.join("|");
|
|
3028
|
+
const options = useMemo4(() => {
|
|
3029
|
+
const when = atTime === void 0 ? /* @__PURE__ */ new Date() : new Date(atTime);
|
|
3030
|
+
const list = timeZoneOptions(timeZones, when);
|
|
3031
|
+
const missing = keep.filter((v) => !list.some((o) => o.value === v));
|
|
3032
|
+
return [...missing.map((v) => zoneOption(v, when)), ...list];
|
|
3033
|
+
}, [timeZones, atTime, keepKey]);
|
|
3034
|
+
return /* @__PURE__ */ jsx25(
|
|
3035
|
+
Combobox,
|
|
3036
|
+
{
|
|
3037
|
+
...props,
|
|
3038
|
+
options,
|
|
3039
|
+
placeholder,
|
|
3040
|
+
emptyMessage,
|
|
3041
|
+
filter: (option, query) => {
|
|
3042
|
+
const q = query.trim().toLowerCase();
|
|
3043
|
+
return option.label.toLowerCase().includes(q) || option.value.toLowerCase().includes(q);
|
|
3044
|
+
}
|
|
3045
|
+
}
|
|
3046
|
+
);
|
|
3047
|
+
}
|
|
3048
|
+
|
|
2932
3049
|
// src/components/forms/command.tsx
|
|
2933
|
-
import { useEffect as useEffect7, useId as useId6, useMemo as
|
|
3050
|
+
import { useEffect as useEffect7, useId as useId6, useMemo as useMemo5, useRef as useRef11, useState as useState9 } from "react";
|
|
2934
3051
|
import clsx26 from "clsx";
|
|
2935
3052
|
import { LuSearch } from "react-icons/lu";
|
|
2936
|
-
import { jsx as
|
|
3053
|
+
import { jsx as jsx26, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
2937
3054
|
function Command({
|
|
2938
3055
|
items,
|
|
2939
3056
|
label = "Command palette",
|
|
@@ -2949,7 +3066,7 @@ function Command({
|
|
|
2949
3066
|
const listboxId = `${baseId}-listbox`;
|
|
2950
3067
|
const optionId = (index) => `${baseId}-option-${index}`;
|
|
2951
3068
|
const listRef = useRef11(null);
|
|
2952
|
-
const matches =
|
|
3069
|
+
const matches = useMemo5(() => {
|
|
2953
3070
|
if (!query) return items;
|
|
2954
3071
|
const q = query.toLowerCase();
|
|
2955
3072
|
return items.filter((item) => {
|
|
@@ -2986,8 +3103,8 @@ function Command({
|
|
|
2986
3103
|
let renderedGroup;
|
|
2987
3104
|
return /* @__PURE__ */ jsxs18("div", { className: clsx26("flex w-full flex-col", className), children: [
|
|
2988
3105
|
/* @__PURE__ */ jsxs18("div", { className: "flex items-center gap-2 border-b border-default px-3.5 py-3", children: [
|
|
2989
|
-
/* @__PURE__ */
|
|
2990
|
-
/* @__PURE__ */
|
|
3106
|
+
/* @__PURE__ */ jsx26(LuSearch, { "aria-hidden": true, className: "size-4 shrink-0 text-icon-default-secondary" }),
|
|
3107
|
+
/* @__PURE__ */ jsx26(
|
|
2991
3108
|
"input",
|
|
2992
3109
|
{
|
|
2993
3110
|
role: "combobox",
|
|
@@ -3043,13 +3160,13 @@ function Command({
|
|
|
3043
3160
|
"aria-label": label,
|
|
3044
3161
|
className: clsx26("max-h-80 overflow-y-auto p-1.5", SCROLLBAR_CLASSES),
|
|
3045
3162
|
children: [
|
|
3046
|
-
matches.length === 0 && /* @__PURE__ */
|
|
3163
|
+
matches.length === 0 && /* @__PURE__ */ jsx26("p", { className: "px-2.5 py-6 text-center text-body-sm text-default-secondary", children: emptyMessage }),
|
|
3047
3164
|
matches.map((item, index) => {
|
|
3048
3165
|
const isActive = index === activeIndex;
|
|
3049
3166
|
const groupHeading = item.group !== renderedGroup ? item.group : void 0;
|
|
3050
3167
|
renderedGroup = item.group;
|
|
3051
3168
|
return /* @__PURE__ */ jsxs18("div", { children: [
|
|
3052
|
-
groupHeading && /* @__PURE__ */
|
|
3169
|
+
groupHeading && /* @__PURE__ */ jsx26(
|
|
3053
3170
|
"div",
|
|
3054
3171
|
{
|
|
3055
3172
|
role: "presentation",
|
|
@@ -3074,12 +3191,12 @@ function Command({
|
|
|
3074
3191
|
item.disabled ? "cursor-not-allowed text-disabled" : isActive ? clsx26(OVERLAY_ITEM_ACTIVE, "text-default") : "text-default"
|
|
3075
3192
|
),
|
|
3076
3193
|
children: [
|
|
3077
|
-
item.icon && /* @__PURE__ */
|
|
3194
|
+
item.icon && /* @__PURE__ */ jsx26("span", { "aria-hidden": true, className: "flex size-4 shrink-0 items-center justify-center", children: item.icon }),
|
|
3078
3195
|
/* @__PURE__ */ jsxs18("span", { className: "min-w-0 flex-1", children: [
|
|
3079
|
-
/* @__PURE__ */
|
|
3080
|
-
item.description && /* @__PURE__ */
|
|
3196
|
+
/* @__PURE__ */ jsx26("span", { className: "block truncate", children: item.label }),
|
|
3197
|
+
item.description && /* @__PURE__ */ jsx26("span", { className: "block truncate text-body-tiny text-default-secondary", children: item.description })
|
|
3081
3198
|
] }),
|
|
3082
|
-
item.shortcut && /* @__PURE__ */
|
|
3199
|
+
item.shortcut && /* @__PURE__ */ jsx26("span", { className: "ml-auto flex shrink-0 items-center gap-1", children: item.shortcut })
|
|
3083
3200
|
]
|
|
3084
3201
|
}
|
|
3085
3202
|
)
|
|
@@ -3088,13 +3205,13 @@ function Command({
|
|
|
3088
3205
|
]
|
|
3089
3206
|
}
|
|
3090
3207
|
),
|
|
3091
|
-
/* @__PURE__ */
|
|
3208
|
+
/* @__PURE__ */ jsx26("span", { "aria-live": "polite", className: "sr-only", children: `${matches.length} ${matches.length === 1 ? "result" : "results"}` })
|
|
3092
3209
|
] });
|
|
3093
3210
|
}
|
|
3094
3211
|
|
|
3095
3212
|
// src/components/status/status-badge.tsx
|
|
3096
3213
|
import clsx27 from "clsx";
|
|
3097
|
-
import { jsx as
|
|
3214
|
+
import { jsx as jsx27, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
3098
3215
|
var TONE_STYLES2 = {
|
|
3099
3216
|
neutral: "bg-status-neutral text-status-neutral",
|
|
3100
3217
|
info: "bg-status-info text-status-info",
|
|
@@ -3135,7 +3252,7 @@ function StatusBadge({
|
|
|
3135
3252
|
className
|
|
3136
3253
|
),
|
|
3137
3254
|
children: [
|
|
3138
|
-
icon ? /* @__PURE__ */
|
|
3255
|
+
icon ? /* @__PURE__ */ jsx27("span", { className: "shrink-0", children: icon }) : dot && /* @__PURE__ */ jsx27("span", { className: clsx27("size-1.5 shrink-0 rounded-full", DOT_STYLES[tone]) }),
|
|
3139
3256
|
label
|
|
3140
3257
|
]
|
|
3141
3258
|
}
|
|
@@ -3144,7 +3261,7 @@ function StatusBadge({
|
|
|
3144
3261
|
|
|
3145
3262
|
// src/components/status/status-dot.tsx
|
|
3146
3263
|
import clsx28 from "clsx";
|
|
3147
|
-
import { jsx as
|
|
3264
|
+
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
3148
3265
|
var dotTones = {
|
|
3149
3266
|
brand: "bg-brand",
|
|
3150
3267
|
positive: "bg-positive",
|
|
@@ -3154,7 +3271,7 @@ var dotTones = {
|
|
|
3154
3271
|
default: "bg-default-tertiary"
|
|
3155
3272
|
};
|
|
3156
3273
|
function StatusDot({ tone = "default", color, className }) {
|
|
3157
|
-
return /* @__PURE__ */
|
|
3274
|
+
return /* @__PURE__ */ jsx28(
|
|
3158
3275
|
"span",
|
|
3159
3276
|
{
|
|
3160
3277
|
className: clsx28("inline-block size-1.5 shrink-0 rounded-full", !color && dotTones[tone], className),
|
|
@@ -3165,7 +3282,7 @@ function StatusDot({ tone = "default", color, className }) {
|
|
|
3165
3282
|
|
|
3166
3283
|
// src/components/status/status-chip.tsx
|
|
3167
3284
|
import clsx29 from "clsx";
|
|
3168
|
-
import { jsx as
|
|
3285
|
+
import { jsx as jsx29, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
3169
3286
|
function StatusChip({ label, count, tone = "default", dotColor, bg, className }) {
|
|
3170
3287
|
return /* @__PURE__ */ jsxs20(
|
|
3171
3288
|
"span",
|
|
@@ -3177,9 +3294,9 @@ function StatusChip({ label, count, tone = "default", dotColor, bg, className })
|
|
|
3177
3294
|
),
|
|
3178
3295
|
style: bg ? { backgroundColor: bg } : void 0,
|
|
3179
3296
|
children: [
|
|
3180
|
-
/* @__PURE__ */
|
|
3181
|
-
/* @__PURE__ */
|
|
3182
|
-
/* @__PURE__ */
|
|
3297
|
+
/* @__PURE__ */ jsx29(StatusDot, { tone, color: dotColor }),
|
|
3298
|
+
/* @__PURE__ */ jsx29("span", { className: "text-body-xs font-medium text-default", children: count }),
|
|
3299
|
+
/* @__PURE__ */ jsx29("span", { className: "text-body-xs text-default-secondary", children: label })
|
|
3183
3300
|
]
|
|
3184
3301
|
}
|
|
3185
3302
|
);
|
|
@@ -3187,7 +3304,7 @@ function StatusChip({ label, count, tone = "default", dotColor, bg, className })
|
|
|
3187
3304
|
|
|
3188
3305
|
// src/components/status/count-badge.tsx
|
|
3189
3306
|
import clsx30 from "clsx";
|
|
3190
|
-
import { jsx as
|
|
3307
|
+
import { jsx as jsx30, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
3191
3308
|
function CountBadge({ count, label, tone = "positive", className }) {
|
|
3192
3309
|
return /* @__PURE__ */ jsxs21(
|
|
3193
3310
|
"span",
|
|
@@ -3197,9 +3314,9 @@ function CountBadge({ count, label, tone = "positive", className }) {
|
|
|
3197
3314
|
className
|
|
3198
3315
|
),
|
|
3199
3316
|
children: [
|
|
3200
|
-
/* @__PURE__ */
|
|
3317
|
+
/* @__PURE__ */ jsx30(StatusDot, { tone }),
|
|
3201
3318
|
count,
|
|
3202
|
-
label && /* @__PURE__ */
|
|
3319
|
+
label && /* @__PURE__ */ jsx30("span", { className: "text-default-secondary", children: label })
|
|
3203
3320
|
]
|
|
3204
3321
|
}
|
|
3205
3322
|
);
|
|
@@ -3207,7 +3324,7 @@ function CountBadge({ count, label, tone = "positive", className }) {
|
|
|
3207
3324
|
|
|
3208
3325
|
// src/components/status/tag-pill.tsx
|
|
3209
3326
|
import clsx31 from "clsx";
|
|
3210
|
-
import { jsx as
|
|
3327
|
+
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
3211
3328
|
var toneStyles = {
|
|
3212
3329
|
default: "bg-default-secondary text-default-secondary",
|
|
3213
3330
|
brand: "bg-brand-tertiary text-brand",
|
|
@@ -3216,7 +3333,7 @@ var toneStyles = {
|
|
|
3216
3333
|
danger: "bg-danger-tertiary text-danger"
|
|
3217
3334
|
};
|
|
3218
3335
|
function TagPill({ label, tone = "default", bg, color, className }) {
|
|
3219
|
-
return /* @__PURE__ */
|
|
3336
|
+
return /* @__PURE__ */ jsx31(
|
|
3220
3337
|
"span",
|
|
3221
3338
|
{
|
|
3222
3339
|
className: clsx31(
|
|
@@ -3235,7 +3352,7 @@ function TagPill({ label, tone = "default", bg, color, className }) {
|
|
|
3235
3352
|
|
|
3236
3353
|
// src/components/status/trail-chip.tsx
|
|
3237
3354
|
import clsx32 from "clsx";
|
|
3238
|
-
import { jsx as
|
|
3355
|
+
import { jsx as jsx32, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
3239
3356
|
var DOT = {
|
|
3240
3357
|
neutral: "bg-status-dot-neutral",
|
|
3241
3358
|
info: "bg-status-dot-info",
|
|
@@ -3254,22 +3371,22 @@ function TrailChip({ label, value, tone = "info", dotColor, className }) {
|
|
|
3254
3371
|
className
|
|
3255
3372
|
),
|
|
3256
3373
|
children: [
|
|
3257
|
-
/* @__PURE__ */
|
|
3374
|
+
/* @__PURE__ */ jsx32(
|
|
3258
3375
|
"span",
|
|
3259
3376
|
{
|
|
3260
3377
|
className: clsx32("size-1.5 shrink-0 rounded-full", !dotColor && DOT[tone]),
|
|
3261
3378
|
style: dotColor ? { backgroundColor: dotColor } : void 0
|
|
3262
3379
|
}
|
|
3263
3380
|
),
|
|
3264
|
-
/* @__PURE__ */
|
|
3265
|
-
/* @__PURE__ */
|
|
3381
|
+
/* @__PURE__ */ jsx32("span", { className: "text-body-tiny font-semibold uppercase tracking-wide text-default-secondary", children: label }),
|
|
3382
|
+
/* @__PURE__ */ jsx32("span", { className: "text-body-xs font-medium text-default", children: value })
|
|
3266
3383
|
]
|
|
3267
3384
|
}
|
|
3268
3385
|
);
|
|
3269
3386
|
}
|
|
3270
3387
|
|
|
3271
3388
|
// src/components/status/user-status-pill.tsx
|
|
3272
|
-
import { jsx as
|
|
3389
|
+
import { jsx as jsx33 } from "react/jsx-runtime";
|
|
3273
3390
|
var STATUS_META = {
|
|
3274
3391
|
active: { label: "Active", tone: "positive" },
|
|
3275
3392
|
// `caution` (pale yellow), not `warning` (orange) — Pending is one step below a
|
|
@@ -3279,13 +3396,13 @@ var STATUS_META = {
|
|
|
3279
3396
|
};
|
|
3280
3397
|
function UserStatusPill({ status }) {
|
|
3281
3398
|
const { label, tone } = STATUS_META[status];
|
|
3282
|
-
return /* @__PURE__ */
|
|
3399
|
+
return /* @__PURE__ */ jsx33(StatusBadge, { label, tone });
|
|
3283
3400
|
}
|
|
3284
3401
|
|
|
3285
3402
|
// src/components/status/check-indicator.tsx
|
|
3286
3403
|
import clsx33 from "clsx";
|
|
3287
3404
|
import { LuCheck as LuCheck5, LuCircleAlert, LuLoaderCircle, LuMinus, LuX as LuX2 } from "react-icons/lu";
|
|
3288
|
-
import { jsx as
|
|
3405
|
+
import { jsx as jsx34 } from "react/jsx-runtime";
|
|
3289
3406
|
var STATUS_STYLES = {
|
|
3290
3407
|
passed: "bg-status-check-passed border-status-check-passed text-status-check-passed",
|
|
3291
3408
|
in_progress: "bg-status-check-progress border-status-check-progress text-status-check-progress",
|
|
@@ -3297,21 +3414,21 @@ var STATUS_STYLES = {
|
|
|
3297
3414
|
function StatusGlyph({ status }) {
|
|
3298
3415
|
switch (status) {
|
|
3299
3416
|
case "passed":
|
|
3300
|
-
return /* @__PURE__ */
|
|
3417
|
+
return /* @__PURE__ */ jsx34(LuCheck5, { className: "size-3", strokeWidth: 3, "aria-hidden": true });
|
|
3301
3418
|
case "failed":
|
|
3302
|
-
return /* @__PURE__ */
|
|
3419
|
+
return /* @__PURE__ */ jsx34(LuX2, { className: "size-3", strokeWidth: 3, "aria-hidden": true });
|
|
3303
3420
|
case "waived":
|
|
3304
|
-
return /* @__PURE__ */
|
|
3421
|
+
return /* @__PURE__ */ jsx34(LuMinus, { className: "size-3", strokeWidth: 3, "aria-hidden": true });
|
|
3305
3422
|
case "in_progress":
|
|
3306
|
-
return /* @__PURE__ */
|
|
3423
|
+
return /* @__PURE__ */ jsx34(LuLoaderCircle, { className: "size-3", strokeWidth: 3, "aria-hidden": true });
|
|
3307
3424
|
case "action_required":
|
|
3308
|
-
return /* @__PURE__ */
|
|
3425
|
+
return /* @__PURE__ */ jsx34(LuCircleAlert, { className: "size-3.5", strokeWidth: 2.5, "aria-hidden": true });
|
|
3309
3426
|
case "pending":
|
|
3310
3427
|
return null;
|
|
3311
3428
|
}
|
|
3312
3429
|
}
|
|
3313
3430
|
function CheckIndicator({ status, label, className }) {
|
|
3314
|
-
return /* @__PURE__ */
|
|
3431
|
+
return /* @__PURE__ */ jsx34(
|
|
3315
3432
|
"div",
|
|
3316
3433
|
{
|
|
3317
3434
|
className: clsx33(
|
|
@@ -3322,14 +3439,14 @@ function CheckIndicator({ status, label, className }) {
|
|
|
3322
3439
|
role: label ? "img" : void 0,
|
|
3323
3440
|
"aria-label": label,
|
|
3324
3441
|
"aria-hidden": label ? void 0 : true,
|
|
3325
|
-
children: /* @__PURE__ */
|
|
3442
|
+
children: /* @__PURE__ */ jsx34(StatusGlyph, { status })
|
|
3326
3443
|
}
|
|
3327
3444
|
);
|
|
3328
3445
|
}
|
|
3329
3446
|
|
|
3330
3447
|
// src/components/status/entity-icon-badge.tsx
|
|
3331
3448
|
import clsx34 from "clsx";
|
|
3332
|
-
import { jsx as
|
|
3449
|
+
import { jsx as jsx35 } from "react/jsx-runtime";
|
|
3333
3450
|
var sizeStyles4 = {
|
|
3334
3451
|
sm: "size-8",
|
|
3335
3452
|
md: "size-10"
|
|
@@ -3347,7 +3464,7 @@ var toneStyles2 = {
|
|
|
3347
3464
|
neutral: "bg-neutral-tertiary text-icon-neutral"
|
|
3348
3465
|
};
|
|
3349
3466
|
function EntityIconBadge({ size: size2 = "sm", tone = "default", shape = "square", bg, iconColor, children, className }) {
|
|
3350
|
-
return /* @__PURE__ */
|
|
3467
|
+
return /* @__PURE__ */ jsx35(
|
|
3351
3468
|
"span",
|
|
3352
3469
|
{
|
|
3353
3470
|
className: clsx34(
|
|
@@ -3373,7 +3490,7 @@ import clsx36 from "clsx";
|
|
|
3373
3490
|
// src/components/forms/check-control.tsx
|
|
3374
3491
|
import clsx35 from "clsx";
|
|
3375
3492
|
import { LuCheck as LuCheck6, LuMinus as LuMinus2 } from "react-icons/lu";
|
|
3376
|
-
import { jsx as
|
|
3493
|
+
import { jsx as jsx36 } from "react/jsx-runtime";
|
|
3377
3494
|
var CHECK_SIZE = {
|
|
3378
3495
|
sm: { box: "size-4", glyph: "size-2.5", dot: "size-1.5" },
|
|
3379
3496
|
md: { box: "size-[18px]", glyph: "size-3", dot: "size-2" }
|
|
@@ -3388,7 +3505,7 @@ function CheckControl({
|
|
|
3388
3505
|
}) {
|
|
3389
3506
|
const s = CHECK_SIZE[size2];
|
|
3390
3507
|
const on = checked || indeterminate;
|
|
3391
|
-
return /* @__PURE__ */
|
|
3508
|
+
return /* @__PURE__ */ jsx36(
|
|
3392
3509
|
"span",
|
|
3393
3510
|
{
|
|
3394
3511
|
"aria-hidden": true,
|
|
@@ -3401,13 +3518,13 @@ function CheckControl({
|
|
|
3401
3518
|
"peer-focus-visible:ring-2 peer-focus-visible:ring-brand peer-focus-visible:ring-offset-1 peer-focus-visible:ring-offset-default",
|
|
3402
3519
|
disabled ? on ? "border-disabled bg-disabled text-disabled-on-disabled" : "border-disabled bg-disabled" : on ? "border-brand-emphasis bg-brand text-brand-on-brand" : invalid ? "border-danger bg-default" : "border-default-secondary bg-default"
|
|
3403
3520
|
),
|
|
3404
|
-
children: type === "checkbox" ? indeterminate ? /* @__PURE__ */
|
|
3521
|
+
children: type === "checkbox" ? indeterminate ? /* @__PURE__ */ jsx36(LuMinus2, { className: s.glyph, strokeWidth: 3 }) : checked ? /* @__PURE__ */ jsx36(LuCheck6, { className: s.glyph, strokeWidth: 3 }) : null : checked ? /* @__PURE__ */ jsx36("span", { className: clsx35("rounded-full bg-current", s.dot) }) : null
|
|
3405
3522
|
}
|
|
3406
3523
|
);
|
|
3407
3524
|
}
|
|
3408
3525
|
|
|
3409
3526
|
// src/components/forms/checkbox.tsx
|
|
3410
|
-
import { jsx as
|
|
3527
|
+
import { jsx as jsx37, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
3411
3528
|
var LABEL_TEXT2 = {
|
|
3412
3529
|
sm: "text-body-tiny",
|
|
3413
3530
|
md: "text-body-xs"
|
|
@@ -3448,7 +3565,7 @@ var Checkbox = forwardRef12(function Checkbox2({
|
|
|
3448
3565
|
disabled ? "cursor-not-allowed opacity-60" : "cursor-pointer"
|
|
3449
3566
|
),
|
|
3450
3567
|
children: [
|
|
3451
|
-
/* @__PURE__ */
|
|
3568
|
+
/* @__PURE__ */ jsx37(
|
|
3452
3569
|
"input",
|
|
3453
3570
|
{
|
|
3454
3571
|
ref: composeRefs(inputRef, ref),
|
|
@@ -3463,7 +3580,7 @@ var Checkbox = forwardRef12(function Checkbox2({
|
|
|
3463
3580
|
...props
|
|
3464
3581
|
}
|
|
3465
3582
|
),
|
|
3466
|
-
/* @__PURE__ */
|
|
3583
|
+
/* @__PURE__ */ jsx37(
|
|
3467
3584
|
CheckControl,
|
|
3468
3585
|
{
|
|
3469
3586
|
type: "checkbox",
|
|
@@ -3474,11 +3591,11 @@ var Checkbox = forwardRef12(function Checkbox2({
|
|
|
3474
3591
|
size: size2
|
|
3475
3592
|
}
|
|
3476
3593
|
),
|
|
3477
|
-
label && /* @__PURE__ */
|
|
3594
|
+
label && /* @__PURE__ */ jsx37("span", { className: clsx36(LABEL_TEXT2[size2], "text-default"), children: label })
|
|
3478
3595
|
]
|
|
3479
3596
|
}
|
|
3480
3597
|
),
|
|
3481
|
-
description && /* @__PURE__ */
|
|
3598
|
+
description && /* @__PURE__ */ jsx37(
|
|
3482
3599
|
"span",
|
|
3483
3600
|
{
|
|
3484
3601
|
id: descriptionId,
|
|
@@ -3501,7 +3618,7 @@ import {
|
|
|
3501
3618
|
useId as useId8
|
|
3502
3619
|
} from "react";
|
|
3503
3620
|
import clsx37 from "clsx";
|
|
3504
|
-
import { jsx as
|
|
3621
|
+
import { jsx as jsx38, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
3505
3622
|
var RadioGroupContext = createContext4(null);
|
|
3506
3623
|
var RadioGroup = forwardRef13(function RadioGroup2({
|
|
3507
3624
|
children,
|
|
@@ -3524,7 +3641,7 @@ var RadioGroup = forwardRef13(function RadioGroup2({
|
|
|
3524
3641
|
defaultValue,
|
|
3525
3642
|
onChange: onValueChange
|
|
3526
3643
|
});
|
|
3527
|
-
return /* @__PURE__ */
|
|
3644
|
+
return /* @__PURE__ */ jsx38(
|
|
3528
3645
|
RadioGroupContext.Provider,
|
|
3529
3646
|
{
|
|
3530
3647
|
value: {
|
|
@@ -3535,7 +3652,7 @@ var RadioGroup = forwardRef13(function RadioGroup2({
|
|
|
3535
3652
|
disabled,
|
|
3536
3653
|
invalid
|
|
3537
3654
|
},
|
|
3538
|
-
children: /* @__PURE__ */
|
|
3655
|
+
children: /* @__PURE__ */ jsx38(
|
|
3539
3656
|
"div",
|
|
3540
3657
|
{
|
|
3541
3658
|
ref,
|
|
@@ -3579,7 +3696,7 @@ var Radio = forwardRef13(function Radio2({ value, label, description, disabled,
|
|
|
3579
3696
|
isDisabled ? "cursor-not-allowed opacity-60" : "cursor-pointer"
|
|
3580
3697
|
),
|
|
3581
3698
|
children: [
|
|
3582
|
-
/* @__PURE__ */
|
|
3699
|
+
/* @__PURE__ */ jsx38(
|
|
3583
3700
|
"input",
|
|
3584
3701
|
{
|
|
3585
3702
|
ref,
|
|
@@ -3595,7 +3712,7 @@ var Radio = forwardRef13(function Radio2({ value, label, description, disabled,
|
|
|
3595
3712
|
...props
|
|
3596
3713
|
}
|
|
3597
3714
|
),
|
|
3598
|
-
/* @__PURE__ */
|
|
3715
|
+
/* @__PURE__ */ jsx38(
|
|
3599
3716
|
CheckControl,
|
|
3600
3717
|
{
|
|
3601
3718
|
type: "radio",
|
|
@@ -3605,11 +3722,11 @@ var Radio = forwardRef13(function Radio2({ value, label, description, disabled,
|
|
|
3605
3722
|
size: group.size
|
|
3606
3723
|
}
|
|
3607
3724
|
),
|
|
3608
|
-
label && /* @__PURE__ */
|
|
3725
|
+
label && /* @__PURE__ */ jsx38("span", { className: clsx37(LABEL_TEXT3[group.size], "text-default"), children: label })
|
|
3609
3726
|
]
|
|
3610
3727
|
}
|
|
3611
3728
|
),
|
|
3612
|
-
description && /* @__PURE__ */
|
|
3729
|
+
description && /* @__PURE__ */ jsx38(
|
|
3613
3730
|
"span",
|
|
3614
3731
|
{
|
|
3615
3732
|
id: descriptionId,
|
|
@@ -3626,7 +3743,7 @@ var Radio = forwardRef13(function Radio2({ value, label, description, disabled,
|
|
|
3626
3743
|
|
|
3627
3744
|
// src/components/forms/segmented-control.tsx
|
|
3628
3745
|
import clsx38 from "clsx";
|
|
3629
|
-
import { jsx as
|
|
3746
|
+
import { jsx as jsx39 } from "react/jsx-runtime";
|
|
3630
3747
|
function SegmentedControl({
|
|
3631
3748
|
options,
|
|
3632
3749
|
value: valueProp,
|
|
@@ -3649,7 +3766,7 @@ function SegmentedControl({
|
|
|
3649
3766
|
loop: true,
|
|
3650
3767
|
defaultIndex: selectedIndex
|
|
3651
3768
|
});
|
|
3652
|
-
return /* @__PURE__ */
|
|
3769
|
+
return /* @__PURE__ */ jsx39(
|
|
3653
3770
|
"div",
|
|
3654
3771
|
{
|
|
3655
3772
|
role: "radiogroup",
|
|
@@ -3665,7 +3782,7 @@ function SegmentedControl({
|
|
|
3665
3782
|
disabled: option.disabled,
|
|
3666
3783
|
label: option.label
|
|
3667
3784
|
});
|
|
3668
|
-
return /* @__PURE__ */
|
|
3785
|
+
return /* @__PURE__ */ jsx39(
|
|
3669
3786
|
"button",
|
|
3670
3787
|
{
|
|
3671
3788
|
type: "button",
|
|
@@ -3697,7 +3814,7 @@ function SegmentedControl({
|
|
|
3697
3814
|
// src/components/forms/slider.tsx
|
|
3698
3815
|
import { forwardRef as forwardRef14, useId as useId9 } from "react";
|
|
3699
3816
|
import clsx39 from "clsx";
|
|
3700
|
-
import { jsx as
|
|
3817
|
+
import { jsx as jsx40, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
3701
3818
|
var Slider = forwardRef14(function Slider2({
|
|
3702
3819
|
value,
|
|
3703
3820
|
defaultValue,
|
|
@@ -3721,7 +3838,7 @@ var Slider = forwardRef14(function Slider2({
|
|
|
3721
3838
|
const display = formatValue ? formatValue(current) : String(current);
|
|
3722
3839
|
return /* @__PURE__ */ jsxs25("div", { className: clsx39("flex w-full flex-col gap-1.5", className), children: [
|
|
3723
3840
|
(label || showValue) && /* @__PURE__ */ jsxs25("div", { className: "flex items-baseline justify-between gap-2", children: [
|
|
3724
|
-
label && /* @__PURE__ */
|
|
3841
|
+
label && /* @__PURE__ */ jsx40(
|
|
3725
3842
|
"label",
|
|
3726
3843
|
{
|
|
3727
3844
|
htmlFor: controlId,
|
|
@@ -3729,9 +3846,9 @@ var Slider = forwardRef14(function Slider2({
|
|
|
3729
3846
|
children: label
|
|
3730
3847
|
}
|
|
3731
3848
|
),
|
|
3732
|
-
showValue && /* @__PURE__ */
|
|
3849
|
+
showValue && /* @__PURE__ */ jsx40("span", { className: "text-body-sm font-medium tabular-nums text-default", children: display })
|
|
3733
3850
|
] }),
|
|
3734
|
-
description && /* @__PURE__ */
|
|
3851
|
+
description && /* @__PURE__ */ jsx40(
|
|
3735
3852
|
"p",
|
|
3736
3853
|
{
|
|
3737
3854
|
id: descriptionId,
|
|
@@ -3739,7 +3856,7 @@ var Slider = forwardRef14(function Slider2({
|
|
|
3739
3856
|
children: description
|
|
3740
3857
|
}
|
|
3741
3858
|
),
|
|
3742
|
-
/* @__PURE__ */
|
|
3859
|
+
/* @__PURE__ */ jsx40(
|
|
3743
3860
|
"input",
|
|
3744
3861
|
{
|
|
3745
3862
|
ref,
|
|
@@ -3780,7 +3897,7 @@ var Slider = forwardRef14(function Slider2({
|
|
|
3780
3897
|
// src/components/forms/label.tsx
|
|
3781
3898
|
import { forwardRef as forwardRef15 } from "react";
|
|
3782
3899
|
import clsx40 from "clsx";
|
|
3783
|
-
import { jsx as
|
|
3900
|
+
import { jsx as jsx41 } from "react/jsx-runtime";
|
|
3784
3901
|
var SIZE6 = {
|
|
3785
3902
|
lg: "text-body",
|
|
3786
3903
|
md: "text-body-sm",
|
|
@@ -3789,7 +3906,7 @@ var SIZE6 = {
|
|
|
3789
3906
|
var Label = forwardRef15(function Label2({ children, size: size2, className, htmlFor, ...rest }, ref) {
|
|
3790
3907
|
const field = useFieldContext();
|
|
3791
3908
|
const resolvedSize = size2 ?? field?.size ?? "md";
|
|
3792
|
-
return /* @__PURE__ */
|
|
3909
|
+
return /* @__PURE__ */ jsx41(
|
|
3793
3910
|
"label",
|
|
3794
3911
|
{
|
|
3795
3912
|
ref,
|
|
@@ -3812,13 +3929,13 @@ import {
|
|
|
3812
3929
|
useCallback as useCallback4,
|
|
3813
3930
|
useEffect as useEffect9,
|
|
3814
3931
|
useId as useId10,
|
|
3815
|
-
useMemo as
|
|
3932
|
+
useMemo as useMemo6,
|
|
3816
3933
|
useRef as useRef13,
|
|
3817
3934
|
useState as useState10
|
|
3818
3935
|
} from "react";
|
|
3819
3936
|
import clsx41 from "clsx";
|
|
3820
3937
|
import { LuChevronLeft, LuChevronRight as LuChevronRight2 } from "react-icons/lu";
|
|
3821
|
-
import { jsx as
|
|
3938
|
+
import { jsx as jsx42, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
3822
3939
|
var startOfDay = (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate());
|
|
3823
3940
|
var sameDay = (a, b) => !!a && !!b && a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
|
|
3824
3941
|
var addDays = (d, n) => new Date(d.getFullYear(), d.getMonth(), d.getDate() + n);
|
|
@@ -3848,7 +3965,7 @@ function Calendar({
|
|
|
3848
3965
|
className,
|
|
3849
3966
|
...rest
|
|
3850
3967
|
}) {
|
|
3851
|
-
const today =
|
|
3968
|
+
const today = useMemo6(() => startOfDay(/* @__PURE__ */ new Date()), []);
|
|
3852
3969
|
const gridId = useId10();
|
|
3853
3970
|
const [month, setMonth] = useState10(
|
|
3854
3971
|
() => defaultMonth ?? value ?? range?.from ?? today
|
|
@@ -3857,15 +3974,15 @@ function Calendar({
|
|
|
3857
3974
|
() => value ?? range?.from ?? today
|
|
3858
3975
|
);
|
|
3859
3976
|
const cellRefs = useRef13(/* @__PURE__ */ new Map());
|
|
3860
|
-
const monthFormatter =
|
|
3977
|
+
const monthFormatter = useMemo6(
|
|
3861
3978
|
() => new Intl.DateTimeFormat(locale, { month: "long", year: "numeric" }),
|
|
3862
3979
|
[locale]
|
|
3863
3980
|
);
|
|
3864
|
-
const dayNameFormatter =
|
|
3981
|
+
const dayNameFormatter = useMemo6(
|
|
3865
3982
|
() => new Intl.DateTimeFormat(locale, { weekday: "short" }),
|
|
3866
3983
|
[locale]
|
|
3867
3984
|
);
|
|
3868
|
-
const fullDateFormatter =
|
|
3985
|
+
const fullDateFormatter = useMemo6(
|
|
3869
3986
|
() => new Intl.DateTimeFormat(locale, { weekday: "long", day: "numeric", month: "long", year: "numeric" }),
|
|
3870
3987
|
[locale]
|
|
3871
3988
|
);
|
|
@@ -3935,7 +4052,7 @@ function Calendar({
|
|
|
3935
4052
|
...rest,
|
|
3936
4053
|
children: [
|
|
3937
4054
|
/* @__PURE__ */ jsxs26("div", { className: "mb-2 flex items-center justify-between gap-2", children: [
|
|
3938
|
-
/* @__PURE__ */
|
|
4055
|
+
/* @__PURE__ */ jsx42(
|
|
3939
4056
|
IconButton,
|
|
3940
4057
|
{
|
|
3941
4058
|
variant: "subtle",
|
|
@@ -3943,11 +4060,11 @@ function Calendar({
|
|
|
3943
4060
|
"aria-label": "Previous month",
|
|
3944
4061
|
disabled: !!min && isBefore(addMonths(month, -1), new Date(min.getFullYear(), min.getMonth(), 1)),
|
|
3945
4062
|
onClick: () => setMonth(addMonths(month, -1)),
|
|
3946
|
-
children: /* @__PURE__ */
|
|
4063
|
+
children: /* @__PURE__ */ jsx42(LuChevronLeft, { "aria-hidden": true, size: 16 })
|
|
3947
4064
|
}
|
|
3948
4065
|
),
|
|
3949
|
-
/* @__PURE__ */
|
|
3950
|
-
/* @__PURE__ */
|
|
4066
|
+
/* @__PURE__ */ jsx42("span", { "aria-live": "polite", className: "text-body-sm font-semibold text-default", children: monthFormatter.format(month) }),
|
|
4067
|
+
/* @__PURE__ */ jsx42(
|
|
3951
4068
|
IconButton,
|
|
3952
4069
|
{
|
|
3953
4070
|
variant: "subtle",
|
|
@@ -3955,7 +4072,7 @@ function Calendar({
|
|
|
3955
4072
|
"aria-label": "Next month",
|
|
3956
4073
|
disabled: !!max && isAfter(addMonths(month, 1), new Date(max.getFullYear(), max.getMonth(), 1)),
|
|
3957
4074
|
onClick: () => setMonth(addMonths(month, 1)),
|
|
3958
|
-
children: /* @__PURE__ */
|
|
4075
|
+
children: /* @__PURE__ */ jsx42(LuChevronRight2, { "aria-hidden": true, size: 16 })
|
|
3959
4076
|
}
|
|
3960
4077
|
)
|
|
3961
4078
|
] }),
|
|
@@ -3968,7 +4085,7 @@ function Calendar({
|
|
|
3968
4085
|
tabIndex: -1,
|
|
3969
4086
|
onKeyDown,
|
|
3970
4087
|
children: [
|
|
3971
|
-
/* @__PURE__ */
|
|
4088
|
+
/* @__PURE__ */ jsx42("div", { role: "row", className: "mb-1 grid grid-cols-7", children: weekdayNames.map((name) => /* @__PURE__ */ jsx42(
|
|
3972
4089
|
"div",
|
|
3973
4090
|
{
|
|
3974
4091
|
role: "columnheader",
|
|
@@ -3977,13 +4094,13 @@ function Calendar({
|
|
|
3977
4094
|
},
|
|
3978
4095
|
name
|
|
3979
4096
|
)) }),
|
|
3980
|
-
Array.from({ length: 6 }, (_, week) => /* @__PURE__ */
|
|
4097
|
+
Array.from({ length: 6 }, (_, week) => /* @__PURE__ */ jsx42("div", { role: "row", className: "grid grid-cols-7", children: days.slice(week * 7, week * 7 + 7).map((date) => {
|
|
3981
4098
|
const outside = date.getMonth() !== month.getMonth();
|
|
3982
4099
|
const isDisabled = disabled(date);
|
|
3983
4100
|
const selected = mode === "single" ? sameDay(date, value) : sameDay(date, range?.from) || sameDay(date, range?.to);
|
|
3984
4101
|
const between = mode === "range" && range?.from && range?.to ? inRange(date, range.from, range.to) : false;
|
|
3985
4102
|
const isFocused = sameDay(date, focusedDate);
|
|
3986
|
-
return /* @__PURE__ */
|
|
4103
|
+
return /* @__PURE__ */ jsx42("div", { role: "gridcell", "aria-selected": selected || void 0, children: /* @__PURE__ */ jsx42(
|
|
3987
4104
|
"button",
|
|
3988
4105
|
{
|
|
3989
4106
|
ref: (node) => {
|
|
@@ -4022,7 +4139,7 @@ function Calendar({
|
|
|
4022
4139
|
import { forwardRef as forwardRef16 } from "react";
|
|
4023
4140
|
import clsx42 from "clsx";
|
|
4024
4141
|
import { LuSearch as LuSearch2, LuX as LuX3 } from "react-icons/lu";
|
|
4025
|
-
import { jsx as
|
|
4142
|
+
import { jsx as jsx43, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
4026
4143
|
var HEIGHT2 = {
|
|
4027
4144
|
lg: "h-12 text-body",
|
|
4028
4145
|
md: "h-9 text-body-sm",
|
|
@@ -4035,7 +4152,7 @@ var PAD = {
|
|
|
4035
4152
|
};
|
|
4036
4153
|
var InputGroup = forwardRef16(function InputGroup2({ children, size: sizeProp, invalid = false, disabled = false, className, ...rest }, ref) {
|
|
4037
4154
|
const size2 = useControlSize(sizeProp);
|
|
4038
|
-
return /* @__PURE__ */
|
|
4155
|
+
return /* @__PURE__ */ jsx43(
|
|
4039
4156
|
"div",
|
|
4040
4157
|
{
|
|
4041
4158
|
ref,
|
|
@@ -4060,7 +4177,7 @@ var InputGroup = forwardRef16(function InputGroup2({ children, size: sizeProp, i
|
|
|
4060
4177
|
var InputGroupInput = forwardRef16(
|
|
4061
4178
|
function InputGroupInput2({ className, ...props }, ref) {
|
|
4062
4179
|
const field = useFieldControl();
|
|
4063
|
-
return /* @__PURE__ */
|
|
4180
|
+
return /* @__PURE__ */ jsx43(
|
|
4064
4181
|
"input",
|
|
4065
4182
|
{
|
|
4066
4183
|
ref,
|
|
@@ -4078,7 +4195,7 @@ var InputGroupInput = forwardRef16(
|
|
|
4078
4195
|
);
|
|
4079
4196
|
var InputGroupAddon = forwardRef16(
|
|
4080
4197
|
function InputGroupAddon2({ children, align = "inline-start", decorative = true, className, ...rest }, ref) {
|
|
4081
|
-
return /* @__PURE__ */
|
|
4198
|
+
return /* @__PURE__ */ jsx43(
|
|
4082
4199
|
"span",
|
|
4083
4200
|
{
|
|
4084
4201
|
ref,
|
|
@@ -4099,7 +4216,7 @@ var InputGroupAddon = forwardRef16(
|
|
|
4099
4216
|
);
|
|
4100
4217
|
var InputGroupText = forwardRef16(
|
|
4101
4218
|
function InputGroupText2({ children, className, ...rest }, ref) {
|
|
4102
|
-
return /* @__PURE__ */
|
|
4219
|
+
return /* @__PURE__ */ jsx43(
|
|
4103
4220
|
"span",
|
|
4104
4221
|
{
|
|
4105
4222
|
ref,
|
|
@@ -4114,8 +4231,8 @@ var SearchInput = forwardRef16(function SearchInput2({ size: sizeProp, onClear,
|
|
|
4114
4231
|
const size2 = useControlSize(sizeProp);
|
|
4115
4232
|
const hasValue = value !== void 0 && value !== "";
|
|
4116
4233
|
return /* @__PURE__ */ jsxs27(InputGroup, { size: size2, disabled, className, children: [
|
|
4117
|
-
/* @__PURE__ */
|
|
4118
|
-
/* @__PURE__ */
|
|
4234
|
+
/* @__PURE__ */ jsx43(InputGroupAddon, { children: /* @__PURE__ */ jsx43(LuSearch2, { className: size2 === "sm" ? "size-3" : "size-4" }) }),
|
|
4235
|
+
/* @__PURE__ */ jsx43(
|
|
4119
4236
|
InputGroupInput,
|
|
4120
4237
|
{
|
|
4121
4238
|
ref,
|
|
@@ -4127,7 +4244,7 @@ var SearchInput = forwardRef16(function SearchInput2({ size: sizeProp, onClear,
|
|
|
4127
4244
|
...props
|
|
4128
4245
|
}
|
|
4129
4246
|
),
|
|
4130
|
-
onClear && hasValue && /* @__PURE__ */
|
|
4247
|
+
onClear && hasValue && /* @__PURE__ */ jsx43(InputGroupAddon, { align: "inline-end", decorative: false, children: /* @__PURE__ */ jsx43(
|
|
4131
4248
|
"button",
|
|
4132
4249
|
{
|
|
4133
4250
|
type: "button",
|
|
@@ -4135,7 +4252,7 @@ var SearchInput = forwardRef16(function SearchInput2({ size: sizeProp, onClear,
|
|
|
4135
4252
|
onClick: onClear,
|
|
4136
4253
|
disabled,
|
|
4137
4254
|
className: "flex items-center justify-center rounded transition-colors hover:text-default focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand",
|
|
4138
|
-
children: /* @__PURE__ */
|
|
4255
|
+
children: /* @__PURE__ */ jsx43(LuX3, { "aria-hidden": true, className: size2 === "sm" ? "size-3" : "size-4" })
|
|
4139
4256
|
}
|
|
4140
4257
|
) })
|
|
4141
4258
|
] });
|
|
@@ -4151,7 +4268,7 @@ import {
|
|
|
4151
4268
|
useState as useState11
|
|
4152
4269
|
} from "react";
|
|
4153
4270
|
import { LuCircleCheckBig, LuInfo, LuOctagonAlert, LuTriangleAlert, LuX as LuX4 } from "react-icons/lu";
|
|
4154
|
-
import { jsx as
|
|
4271
|
+
import { jsx as jsx44, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
4155
4272
|
var SIZE7 = {
|
|
4156
4273
|
sm: "sm:max-w-[420px]",
|
|
4157
4274
|
md: "sm:max-w-[540px]",
|
|
@@ -4159,10 +4276,10 @@ var SIZE7 = {
|
|
|
4159
4276
|
xl: "sm:max-w-[800px]"
|
|
4160
4277
|
};
|
|
4161
4278
|
var TONE_ICON = {
|
|
4162
|
-
info: /* @__PURE__ */
|
|
4163
|
-
positive: /* @__PURE__ */
|
|
4164
|
-
warning: /* @__PURE__ */
|
|
4165
|
-
danger: /* @__PURE__ */
|
|
4279
|
+
info: /* @__PURE__ */ jsx44(LuInfo, { "aria-hidden": true, className: "size-5" }),
|
|
4280
|
+
positive: /* @__PURE__ */ jsx44(LuCircleCheckBig, { "aria-hidden": true, className: "size-5" }),
|
|
4281
|
+
warning: /* @__PURE__ */ jsx44(LuTriangleAlert, { "aria-hidden": true, className: "size-5" }),
|
|
4282
|
+
danger: /* @__PURE__ */ jsx44(LuOctagonAlert, { "aria-hidden": true, className: "size-5" })
|
|
4166
4283
|
};
|
|
4167
4284
|
var TONE_BADGE = {
|
|
4168
4285
|
info: "brand",
|
|
@@ -4178,7 +4295,7 @@ var FOOTER_ALIGN = {
|
|
|
4178
4295
|
var ModalNaming = createContext5(null);
|
|
4179
4296
|
function Modal(props) {
|
|
4180
4297
|
if (!props.open) return null;
|
|
4181
|
-
return /* @__PURE__ */
|
|
4298
|
+
return /* @__PURE__ */ jsx44(Portal, { children: /* @__PURE__ */ jsx44(ModalShell, { ...props }) });
|
|
4182
4299
|
}
|
|
4183
4300
|
function ModalShell({
|
|
4184
4301
|
onOpenChange,
|
|
@@ -4205,7 +4322,7 @@ function ModalShell({
|
|
|
4205
4322
|
onEscapeKeyDown,
|
|
4206
4323
|
onInteractOutside
|
|
4207
4324
|
});
|
|
4208
|
-
return /* @__PURE__ */
|
|
4325
|
+
return /* @__PURE__ */ jsx44(
|
|
4209
4326
|
"div",
|
|
4210
4327
|
{
|
|
4211
4328
|
className: cn(
|
|
@@ -4232,7 +4349,7 @@ function ModalShell({
|
|
|
4232
4349
|
className
|
|
4233
4350
|
),
|
|
4234
4351
|
children: [
|
|
4235
|
-
showClose && /* @__PURE__ */
|
|
4352
|
+
showClose && /* @__PURE__ */ jsx44(
|
|
4236
4353
|
IconButton,
|
|
4237
4354
|
{
|
|
4238
4355
|
variant: "subtle",
|
|
@@ -4240,10 +4357,10 @@ function ModalShell({
|
|
|
4240
4357
|
"aria-label": "Close dialog",
|
|
4241
4358
|
onClick: () => onOpenChange(false),
|
|
4242
4359
|
className: "absolute right-6 top-5 z-raised",
|
|
4243
|
-
children: /* @__PURE__ */
|
|
4360
|
+
children: /* @__PURE__ */ jsx44(LuX4, { size: 16, "aria-hidden": true })
|
|
4244
4361
|
}
|
|
4245
4362
|
),
|
|
4246
|
-
/* @__PURE__ */
|
|
4363
|
+
/* @__PURE__ */ jsx44(
|
|
4247
4364
|
ModalNaming.Provider,
|
|
4248
4365
|
{
|
|
4249
4366
|
value: {
|
|
@@ -4280,8 +4397,8 @@ function ModalHeader({
|
|
|
4280
4397
|
),
|
|
4281
4398
|
...rest,
|
|
4282
4399
|
children: [
|
|
4283
|
-
tone !== "default" && /* @__PURE__ */
|
|
4284
|
-
/* @__PURE__ */
|
|
4400
|
+
tone !== "default" && /* @__PURE__ */ jsx44(EntityIconBadge, { size: "md", shape: "circle", tone: TONE_BADGE[tone], children: TONE_ICON[tone] }),
|
|
4401
|
+
/* @__PURE__ */ jsx44("div", { className: "min-w-0 flex-1", children })
|
|
4285
4402
|
]
|
|
4286
4403
|
}
|
|
4287
4404
|
);
|
|
@@ -4292,7 +4409,7 @@ function ModalTitle({ children, className, id, ...rest }) {
|
|
|
4292
4409
|
naming?.registerTitle(true);
|
|
4293
4410
|
return () => naming?.registerTitle(false);
|
|
4294
4411
|
}, [naming]);
|
|
4295
|
-
return /* @__PURE__ */
|
|
4412
|
+
return /* @__PURE__ */ jsx44(
|
|
4296
4413
|
"h2",
|
|
4297
4414
|
{
|
|
4298
4415
|
id: id ?? naming?.titleId,
|
|
@@ -4308,7 +4425,7 @@ function ModalDescription({ children, className, id, ...rest }) {
|
|
|
4308
4425
|
naming?.registerDescription(true);
|
|
4309
4426
|
return () => naming?.registerDescription(false);
|
|
4310
4427
|
}, [naming]);
|
|
4311
|
-
return /* @__PURE__ */
|
|
4428
|
+
return /* @__PURE__ */ jsx44(
|
|
4312
4429
|
"p",
|
|
4313
4430
|
{
|
|
4314
4431
|
id: id ?? naming?.descriptionId,
|
|
@@ -4319,7 +4436,7 @@ function ModalDescription({ children, className, id, ...rest }) {
|
|
|
4319
4436
|
);
|
|
4320
4437
|
}
|
|
4321
4438
|
function ModalBody({ children, className, ...rest }) {
|
|
4322
|
-
return /* @__PURE__ */
|
|
4439
|
+
return /* @__PURE__ */ jsx44("div", { className: cn("px-6 py-5", className), ...rest, children });
|
|
4323
4440
|
}
|
|
4324
4441
|
function ModalFooter({
|
|
4325
4442
|
children,
|
|
@@ -4328,7 +4445,7 @@ function ModalFooter({
|
|
|
4328
4445
|
className,
|
|
4329
4446
|
...rest
|
|
4330
4447
|
}) {
|
|
4331
|
-
return /* @__PURE__ */
|
|
4448
|
+
return /* @__PURE__ */ jsx44(
|
|
4332
4449
|
"div",
|
|
4333
4450
|
{
|
|
4334
4451
|
className: cn(
|
|
@@ -4354,7 +4471,7 @@ import {
|
|
|
4354
4471
|
useState as useState12
|
|
4355
4472
|
} from "react";
|
|
4356
4473
|
import clsx43 from "clsx";
|
|
4357
|
-
import { Fragment as Fragment6, jsx as
|
|
4474
|
+
import { Fragment as Fragment6, jsx as jsx45, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
4358
4475
|
function Tooltip({
|
|
4359
4476
|
children,
|
|
4360
4477
|
title,
|
|
@@ -4446,7 +4563,7 @@ function Tooltip({
|
|
|
4446
4563
|
});
|
|
4447
4564
|
return /* @__PURE__ */ jsxs29(Fragment6, { children: [
|
|
4448
4565
|
trigger,
|
|
4449
|
-
(open || association === "labelledby") && /* @__PURE__ */
|
|
4566
|
+
(open || association === "labelledby") && /* @__PURE__ */ jsx45(Portal, { children: /* @__PURE__ */ jsxs29(
|
|
4450
4567
|
"div",
|
|
4451
4568
|
{
|
|
4452
4569
|
ref: refs.setFloating,
|
|
@@ -4460,8 +4577,8 @@ function Tooltip({
|
|
|
4460
4577
|
className
|
|
4461
4578
|
),
|
|
4462
4579
|
children: [
|
|
4463
|
-
title && /* @__PURE__ */
|
|
4464
|
-
body && /* @__PURE__ */
|
|
4580
|
+
title && /* @__PURE__ */ jsx45("p", { className: "font-semibold", children: title }),
|
|
4581
|
+
body && /* @__PURE__ */ jsx45("p", { className: clsx43(title && "mt-0.5 opacity-80"), children: body })
|
|
4465
4582
|
]
|
|
4466
4583
|
}
|
|
4467
4584
|
) })
|
|
@@ -4474,12 +4591,12 @@ import {
|
|
|
4474
4591
|
useContext as useContext6,
|
|
4475
4592
|
useEffect as useEffect12,
|
|
4476
4593
|
useId as useId13,
|
|
4477
|
-
useMemo as
|
|
4594
|
+
useMemo as useMemo7,
|
|
4478
4595
|
useRef as useRef16,
|
|
4479
4596
|
useState as useState13
|
|
4480
4597
|
} from "react";
|
|
4481
4598
|
import clsx44 from "clsx";
|
|
4482
|
-
import { jsx as
|
|
4599
|
+
import { jsx as jsx46 } from "react/jsx-runtime";
|
|
4483
4600
|
var PopoverContext = createContext6(null);
|
|
4484
4601
|
function usePopover(part) {
|
|
4485
4602
|
const value = useContext6(PopoverContext);
|
|
@@ -4500,7 +4617,7 @@ function Popover({
|
|
|
4500
4617
|
});
|
|
4501
4618
|
const baseId = useId13();
|
|
4502
4619
|
const [triggerNode, setTriggerNode] = useState13(null);
|
|
4503
|
-
const context =
|
|
4620
|
+
const context = useMemo7(
|
|
4504
4621
|
() => ({
|
|
4505
4622
|
open,
|
|
4506
4623
|
setOpen,
|
|
@@ -4512,7 +4629,7 @@ function Popover({
|
|
|
4512
4629
|
}),
|
|
4513
4630
|
[open, setOpen, baseId, triggerNode, modal]
|
|
4514
4631
|
);
|
|
4515
|
-
return /* @__PURE__ */
|
|
4632
|
+
return /* @__PURE__ */ jsx46(PopoverContext.Provider, { value: context, children });
|
|
4516
4633
|
}
|
|
4517
4634
|
function PopoverTrigger({
|
|
4518
4635
|
children,
|
|
@@ -4532,9 +4649,9 @@ function PopoverTrigger({
|
|
|
4532
4649
|
...rest
|
|
4533
4650
|
};
|
|
4534
4651
|
if (asChild) {
|
|
4535
|
-
return /* @__PURE__ */
|
|
4652
|
+
return /* @__PURE__ */ jsx46(Slot, { ref: composeRefs(popover.setTriggerNode), ...triggerProps, children });
|
|
4536
4653
|
}
|
|
4537
|
-
return /* @__PURE__ */
|
|
4654
|
+
return /* @__PURE__ */ jsx46(
|
|
4538
4655
|
"button",
|
|
4539
4656
|
{
|
|
4540
4657
|
ref: composeRefs(popover.setTriggerNode),
|
|
@@ -4576,7 +4693,7 @@ function PopoverContent({
|
|
|
4576
4693
|
inertBackground: popover.modal
|
|
4577
4694
|
});
|
|
4578
4695
|
if (!popover.open) return null;
|
|
4579
|
-
return /* @__PURE__ */
|
|
4696
|
+
return /* @__PURE__ */ jsx46(Portal, { children: /* @__PURE__ */ jsx46(
|
|
4580
4697
|
"div",
|
|
4581
4698
|
{
|
|
4582
4699
|
ref: composeRefs(panelRef, refs.setFloating),
|
|
@@ -4607,7 +4724,7 @@ import {
|
|
|
4607
4724
|
useState as useState14
|
|
4608
4725
|
} from "react";
|
|
4609
4726
|
import clsx45 from "clsx";
|
|
4610
|
-
import { Fragment as Fragment7, jsx as
|
|
4727
|
+
import { Fragment as Fragment7, jsx as jsx47, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
4611
4728
|
function HoverCard({
|
|
4612
4729
|
children,
|
|
4613
4730
|
content,
|
|
@@ -4692,7 +4809,7 @@ function HoverCard({
|
|
|
4692
4809
|
});
|
|
4693
4810
|
return /* @__PURE__ */ jsxs30(Fragment7, { children: [
|
|
4694
4811
|
trigger,
|
|
4695
|
-
open && /* @__PURE__ */
|
|
4812
|
+
open && /* @__PURE__ */ jsx47(Portal, { children: /* @__PURE__ */ jsx47(
|
|
4696
4813
|
"div",
|
|
4697
4814
|
{
|
|
4698
4815
|
ref: refs.setFloating,
|
|
@@ -4717,7 +4834,7 @@ import {
|
|
|
4717
4834
|
createContext as createContext8,
|
|
4718
4835
|
useContext as useContext8,
|
|
4719
4836
|
useEffect as useEffect14,
|
|
4720
|
-
useMemo as
|
|
4837
|
+
useMemo as useMemo9,
|
|
4721
4838
|
useRef as useRef19,
|
|
4722
4839
|
useState as useState15
|
|
4723
4840
|
} from "react";
|
|
@@ -4729,12 +4846,12 @@ import {
|
|
|
4729
4846
|
useCallback as useCallback7,
|
|
4730
4847
|
useContext as useContext7,
|
|
4731
4848
|
useId as useId15,
|
|
4732
|
-
useMemo as
|
|
4849
|
+
useMemo as useMemo8,
|
|
4733
4850
|
useRef as useRef18
|
|
4734
4851
|
} from "react";
|
|
4735
4852
|
import clsx46 from "clsx";
|
|
4736
4853
|
import { LuCheck as LuCheck7 } from "react-icons/lu";
|
|
4737
|
-
import { jsx as
|
|
4854
|
+
import { jsx as jsx48, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
4738
4855
|
var MenuContext = createContext7(null);
|
|
4739
4856
|
function useMenu(part) {
|
|
4740
4857
|
const context = useContext7(MenuContext);
|
|
@@ -4757,7 +4874,7 @@ function useMenuState({ open, setOpen }) {
|
|
|
4757
4874
|
const resetIndices = useCallback7(() => {
|
|
4758
4875
|
cursor.current = 0;
|
|
4759
4876
|
}, []);
|
|
4760
|
-
return
|
|
4877
|
+
return useMemo8(
|
|
4761
4878
|
() => ({
|
|
4762
4879
|
open,
|
|
4763
4880
|
setOpen,
|
|
@@ -4817,12 +4934,12 @@ function MenuItem({
|
|
|
4817
4934
|
},
|
|
4818
4935
|
...rest,
|
|
4819
4936
|
children: [
|
|
4820
|
-
icon && /* @__PURE__ */
|
|
4937
|
+
icon && /* @__PURE__ */ jsx48("span", { "aria-hidden": true, className: "mt-0.5 flex size-4 shrink-0 items-center justify-center", children: icon }),
|
|
4821
4938
|
/* @__PURE__ */ jsxs31("span", { className: "min-w-0 flex-1", children: [
|
|
4822
|
-
/* @__PURE__ */
|
|
4823
|
-
description && /* @__PURE__ */
|
|
4939
|
+
/* @__PURE__ */ jsx48("span", { className: "block truncate", children }),
|
|
4940
|
+
description && /* @__PURE__ */ jsx48("span", { id: descriptionId, className: "mt-0.5 block text-body-tiny text-default-secondary", children: description })
|
|
4824
4941
|
] }),
|
|
4825
|
-
shortcut && /* @__PURE__ */
|
|
4942
|
+
shortcut && /* @__PURE__ */ jsx48("span", { className: "ml-auto shrink-0 pl-4 text-body-tiny text-default-tertiary", children: shortcut })
|
|
4826
4943
|
]
|
|
4827
4944
|
}
|
|
4828
4945
|
);
|
|
@@ -4867,17 +4984,17 @@ function MenuCheckboxItem({
|
|
|
4867
4984
|
},
|
|
4868
4985
|
...rest,
|
|
4869
4986
|
children: [
|
|
4870
|
-
/* @__PURE__ */
|
|
4871
|
-
/* @__PURE__ */
|
|
4872
|
-
shortcut && /* @__PURE__ */
|
|
4987
|
+
/* @__PURE__ */ jsx48("span", { "aria-hidden": true, className: "flex size-4 shrink-0 items-center justify-center", children: checked && /* @__PURE__ */ jsx48(LuCheck7, { className: "size-3.5", strokeWidth: 3 }) }),
|
|
4988
|
+
/* @__PURE__ */ jsx48("span", { className: "min-w-0 flex-1 truncate", children }),
|
|
4989
|
+
shortcut && /* @__PURE__ */ jsx48("span", { className: "ml-auto shrink-0 pl-4 text-body-tiny text-default-tertiary", children: shortcut })
|
|
4873
4990
|
]
|
|
4874
4991
|
}
|
|
4875
4992
|
);
|
|
4876
4993
|
}
|
|
4877
4994
|
var MenuRadioContext = createContext7(null);
|
|
4878
4995
|
function MenuRadioGroup({ children, value, onValueChange }) {
|
|
4879
|
-
const context =
|
|
4880
|
-
return /* @__PURE__ */
|
|
4996
|
+
const context = useMemo8(() => ({ value, onValueChange }), [value, onValueChange]);
|
|
4997
|
+
return /* @__PURE__ */ jsx48(MenuRadioContext.Provider, { value: context, children: /* @__PURE__ */ jsx48("div", { role: "group", children }) });
|
|
4881
4998
|
}
|
|
4882
4999
|
function MenuRadioItem({
|
|
4883
5000
|
children,
|
|
@@ -4920,8 +5037,8 @@ function MenuRadioItem({
|
|
|
4920
5037
|
},
|
|
4921
5038
|
...rest,
|
|
4922
5039
|
children: [
|
|
4923
|
-
/* @__PURE__ */
|
|
4924
|
-
/* @__PURE__ */
|
|
5040
|
+
/* @__PURE__ */ jsx48("span", { "aria-hidden": true, className: "flex size-4 shrink-0 items-center justify-center", children: checked && /* @__PURE__ */ jsx48("span", { className: "size-1.5 rounded-full bg-current" }) }),
|
|
5041
|
+
/* @__PURE__ */ jsx48("span", { className: "min-w-0 flex-1 truncate", children })
|
|
4925
5042
|
]
|
|
4926
5043
|
}
|
|
4927
5044
|
);
|
|
@@ -4930,15 +5047,15 @@ var HEADING_CLASSES = OVERLAY_HEADING;
|
|
|
4930
5047
|
function MenuGroup({ children, label, className, ...rest }) {
|
|
4931
5048
|
const labelId = useId15();
|
|
4932
5049
|
return /* @__PURE__ */ jsxs31("div", { role: "group", "aria-labelledby": label ? labelId : void 0, className, ...rest, children: [
|
|
4933
|
-
label && /* @__PURE__ */
|
|
5050
|
+
label && /* @__PURE__ */ jsx48("div", { id: labelId, className: HEADING_CLASSES, children: label }),
|
|
4934
5051
|
children
|
|
4935
5052
|
] });
|
|
4936
5053
|
}
|
|
4937
5054
|
function MenuLabel({ children, className, ...rest }) {
|
|
4938
|
-
return /* @__PURE__ */
|
|
5055
|
+
return /* @__PURE__ */ jsx48("div", { className: clsx46(HEADING_CLASSES, className), ...rest, children });
|
|
4939
5056
|
}
|
|
4940
5057
|
function MenuSeparator({ className, ...rest }) {
|
|
4941
|
-
return /* @__PURE__ */
|
|
5058
|
+
return /* @__PURE__ */ jsx48(
|
|
4942
5059
|
"div",
|
|
4943
5060
|
{
|
|
4944
5061
|
role: "separator",
|
|
@@ -4949,7 +5066,7 @@ function MenuSeparator({ className, ...rest }) {
|
|
|
4949
5066
|
);
|
|
4950
5067
|
}
|
|
4951
5068
|
function MenuShortcut({ children, className, ...rest }) {
|
|
4952
|
-
return /* @__PURE__ */
|
|
5069
|
+
return /* @__PURE__ */ jsx48(
|
|
4953
5070
|
"span",
|
|
4954
5071
|
{
|
|
4955
5072
|
className: clsx46("ml-auto pl-4 text-body-tiny text-default-tertiary", className),
|
|
@@ -4960,7 +5077,7 @@ function MenuShortcut({ children, className, ...rest }) {
|
|
|
4960
5077
|
}
|
|
4961
5078
|
|
|
4962
5079
|
// src/components/overlays/context-menu.tsx
|
|
4963
|
-
import { jsx as
|
|
5080
|
+
import { jsx as jsx49 } from "react/jsx-runtime";
|
|
4964
5081
|
var PositionContext = createContext8(null);
|
|
4965
5082
|
function usePosition() {
|
|
4966
5083
|
const value = useContext8(PositionContext);
|
|
@@ -4980,8 +5097,8 @@ function ContextMenu({
|
|
|
4980
5097
|
});
|
|
4981
5098
|
const menu = useMenuState({ open, setOpen });
|
|
4982
5099
|
const [point, setPoint] = useState15(null);
|
|
4983
|
-
const position =
|
|
4984
|
-
return /* @__PURE__ */
|
|
5100
|
+
const position = useMemo9(() => ({ point, setPoint }), [point]);
|
|
5101
|
+
return /* @__PURE__ */ jsx49(MenuContext.Provider, { value: menu, children: /* @__PURE__ */ jsx49(PositionContext.Provider, { value: position, children }) });
|
|
4985
5102
|
}
|
|
4986
5103
|
function ContextMenuTrigger({
|
|
4987
5104
|
children,
|
|
@@ -5003,7 +5120,7 @@ function ContextMenuTrigger({
|
|
|
5003
5120
|
// (see the note on `ContextMenu`), and a tab stop here would put an unexplained one in
|
|
5004
5121
|
// the middle of a table row.
|
|
5005
5122
|
// eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
5006
|
-
/* @__PURE__ */
|
|
5123
|
+
/* @__PURE__ */ jsx49(
|
|
5007
5124
|
"div",
|
|
5008
5125
|
{
|
|
5009
5126
|
"data-slot": "context-menu-trigger",
|
|
@@ -5065,7 +5182,7 @@ function ContextMenuContent({
|
|
|
5065
5182
|
});
|
|
5066
5183
|
}, [panelNode, position.point, collisionPadding]);
|
|
5067
5184
|
if (!menu.open || !position.point) return null;
|
|
5068
|
-
return /* @__PURE__ */
|
|
5185
|
+
return /* @__PURE__ */ jsx49(Portal, { children: /* @__PURE__ */ jsx49(
|
|
5069
5186
|
"div",
|
|
5070
5187
|
{
|
|
5071
5188
|
ref: composeRefs(panelRef, (node) => setPanelNode(node)),
|
|
@@ -5096,12 +5213,12 @@ import {
|
|
|
5096
5213
|
useContext as useContext9,
|
|
5097
5214
|
useEffect as useEffect15,
|
|
5098
5215
|
useId as useId16,
|
|
5099
|
-
useMemo as
|
|
5216
|
+
useMemo as useMemo10,
|
|
5100
5217
|
useRef as useRef20,
|
|
5101
5218
|
useState as useState16
|
|
5102
5219
|
} from "react";
|
|
5103
5220
|
import clsx48 from "clsx";
|
|
5104
|
-
import { jsx as
|
|
5221
|
+
import { jsx as jsx50 } from "react/jsx-runtime";
|
|
5105
5222
|
var MenubarContext = createContext9(null);
|
|
5106
5223
|
function useMenubar(part) {
|
|
5107
5224
|
const value = useContext9(MenubarContext);
|
|
@@ -5117,7 +5234,7 @@ function Menubar({ children, label, className, ...rest }) {
|
|
|
5117
5234
|
loop: true,
|
|
5118
5235
|
onEscape: () => setOpenValue(null)
|
|
5119
5236
|
});
|
|
5120
|
-
const context =
|
|
5237
|
+
const context = useMemo10(
|
|
5121
5238
|
() => ({
|
|
5122
5239
|
openValue,
|
|
5123
5240
|
setOpenValue,
|
|
@@ -5131,7 +5248,7 @@ function Menubar({ children, label, className, ...rest }) {
|
|
|
5131
5248
|
[openValue, barRoving, baseId]
|
|
5132
5249
|
);
|
|
5133
5250
|
context.resetMenuIndices();
|
|
5134
|
-
return /* @__PURE__ */
|
|
5251
|
+
return /* @__PURE__ */ jsx50(MenubarContext.Provider, { value: context, children: /* @__PURE__ */ jsx50(
|
|
5135
5252
|
"div",
|
|
5136
5253
|
{
|
|
5137
5254
|
role: "menubar",
|
|
@@ -5153,8 +5270,8 @@ function MenubarMenu({ children, value }) {
|
|
|
5153
5270
|
open,
|
|
5154
5271
|
setOpen: (next) => bar.setOpenValue(next ? value : null)
|
|
5155
5272
|
});
|
|
5156
|
-
const scope =
|
|
5157
|
-
return /* @__PURE__ */
|
|
5273
|
+
const scope = useMemo10(() => ({ value, index }), [value, index]);
|
|
5274
|
+
return /* @__PURE__ */ jsx50(MenuContext.Provider, { value: menu, children: /* @__PURE__ */ jsx50(MenubarMenuScope.Provider, { value: scope, children }) });
|
|
5158
5275
|
}
|
|
5159
5276
|
var MenubarMenuScope = createContext9(null);
|
|
5160
5277
|
function useMenubarMenu(part) {
|
|
@@ -5176,7 +5293,7 @@ function MenubarTrigger({ children, className, ...rest }) {
|
|
|
5176
5293
|
triggerNodes.delete(scope.value);
|
|
5177
5294
|
};
|
|
5178
5295
|
}, [scope.value, node]);
|
|
5179
|
-
return /* @__PURE__ */
|
|
5296
|
+
return /* @__PURE__ */ jsx50(
|
|
5180
5297
|
"button",
|
|
5181
5298
|
{
|
|
5182
5299
|
ref: composeRefs(setNode, rovingRef),
|
|
@@ -5256,7 +5373,7 @@ function MenubarContent({ children, className, ...rest }) {
|
|
|
5256
5373
|
if (!menu.open) wasOpen.current = false;
|
|
5257
5374
|
}, [menu.open, panelNode, menu.roving, menu.pendingEdge]);
|
|
5258
5375
|
if (!menu.open) return null;
|
|
5259
|
-
return /* @__PURE__ */
|
|
5376
|
+
return /* @__PURE__ */ jsx50(Portal, { children: /* @__PURE__ */ jsx50(
|
|
5260
5377
|
"div",
|
|
5261
5378
|
{
|
|
5262
5379
|
ref: composeRefs(panelRef, (node) => setPanelNode(node), refs.setFloating),
|
|
@@ -5266,7 +5383,7 @@ function MenubarContent({ children, className, ...rest }) {
|
|
|
5266
5383
|
"aria-orientation": "vertical",
|
|
5267
5384
|
"aria-labelledby": menu.triggerId,
|
|
5268
5385
|
style: floatingStyles,
|
|
5269
|
-
className: clsx48("z-
|
|
5386
|
+
className: clsx48("z-popover", MENU_PANEL_CLASSES, className),
|
|
5270
5387
|
...menu.roving.containerProps,
|
|
5271
5388
|
onKeyDown: (event) => {
|
|
5272
5389
|
menu.roving.containerProps.onKeyDown(event);
|
|
@@ -5294,7 +5411,7 @@ import { LuX as LuX5 } from "react-icons/lu";
|
|
|
5294
5411
|
// src/components/cards/scroll-area.tsx
|
|
5295
5412
|
import { forwardRef as forwardRef17, useEffect as useEffect16, useRef as useRef21, useState as useState17 } from "react";
|
|
5296
5413
|
import clsx49 from "clsx";
|
|
5297
|
-
import { jsx as
|
|
5414
|
+
import { jsx as jsx51 } from "react/jsx-runtime";
|
|
5298
5415
|
var OVERFLOW = {
|
|
5299
5416
|
vertical: "overflow-y-auto overflow-x-hidden",
|
|
5300
5417
|
horizontal: "overflow-x-auto overflow-y-hidden",
|
|
@@ -5320,7 +5437,7 @@ var ScrollArea = forwardRef17(function ScrollArea2({ children, axis = "vertical"
|
|
|
5320
5437
|
if (node.firstElementChild) observer.observe(node.firstElementChild);
|
|
5321
5438
|
return () => observer.disconnect();
|
|
5322
5439
|
}, [axis, children]);
|
|
5323
|
-
return /* @__PURE__ */
|
|
5440
|
+
return /* @__PURE__ */ jsx51(
|
|
5324
5441
|
"div",
|
|
5325
5442
|
{
|
|
5326
5443
|
ref: composeRefs(localRef, ref),
|
|
@@ -5341,10 +5458,10 @@ var ScrollArea = forwardRef17(function ScrollArea2({ children, axis = "vertical"
|
|
|
5341
5458
|
});
|
|
5342
5459
|
|
|
5343
5460
|
// src/components/overlays/drawer.tsx
|
|
5344
|
-
import { jsx as
|
|
5461
|
+
import { jsx as jsx52, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
5345
5462
|
function Drawer(props) {
|
|
5346
5463
|
if (!props.open) return null;
|
|
5347
|
-
return /* @__PURE__ */
|
|
5464
|
+
return /* @__PURE__ */ jsx52(Portal, { children: /* @__PURE__ */ jsx52(DrawerShell, { ...props }) });
|
|
5348
5465
|
}
|
|
5349
5466
|
function DrawerShell({
|
|
5350
5467
|
onOpenChange,
|
|
@@ -5368,7 +5485,7 @@ function DrawerShell({
|
|
|
5368
5485
|
onEscapeKeyDown,
|
|
5369
5486
|
onInteractOutside
|
|
5370
5487
|
});
|
|
5371
|
-
return /* @__PURE__ */
|
|
5488
|
+
return /* @__PURE__ */ jsx52(
|
|
5372
5489
|
"div",
|
|
5373
5490
|
{
|
|
5374
5491
|
className: clsx50(
|
|
@@ -5386,20 +5503,20 @@ function DrawerShell({
|
|
|
5386
5503
|
className: clsx50("relative flex h-full flex-col bg-default shadow-500", width, className),
|
|
5387
5504
|
children: [
|
|
5388
5505
|
/* @__PURE__ */ jsxs32("div", { className: "flex items-start justify-between gap-3 border-b border-default p-6", children: [
|
|
5389
|
-
/* @__PURE__ */
|
|
5390
|
-
/* @__PURE__ */
|
|
5506
|
+
/* @__PURE__ */ jsx52("div", { className: "min-w-0", children: header }),
|
|
5507
|
+
/* @__PURE__ */ jsx52(
|
|
5391
5508
|
IconButton,
|
|
5392
5509
|
{
|
|
5393
5510
|
variant: "subtle",
|
|
5394
5511
|
size: "sm",
|
|
5395
5512
|
"aria-label": "Close",
|
|
5396
5513
|
onClick: () => onOpenChange(false),
|
|
5397
|
-
children: /* @__PURE__ */
|
|
5514
|
+
children: /* @__PURE__ */ jsx52(LuX5, { size: 18, "aria-hidden": true })
|
|
5398
5515
|
}
|
|
5399
5516
|
)
|
|
5400
5517
|
] }),
|
|
5401
|
-
/* @__PURE__ */
|
|
5402
|
-
footer && /* @__PURE__ */
|
|
5518
|
+
/* @__PURE__ */ jsx52(ScrollArea, { axis: "vertical", label, className: "min-h-0 flex-1", children: /* @__PURE__ */ jsx52("div", { className: "space-y-6 p-6", children }) }),
|
|
5519
|
+
footer && /* @__PURE__ */ jsx52(
|
|
5403
5520
|
"div",
|
|
5404
5521
|
{
|
|
5405
5522
|
className: clsx50(
|
|
@@ -5417,7 +5534,7 @@ function DrawerShell({
|
|
|
5417
5534
|
}
|
|
5418
5535
|
|
|
5419
5536
|
// src/components/overlays/confirm-dialog.tsx
|
|
5420
|
-
import { jsx as
|
|
5537
|
+
import { jsx as jsx53, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
5421
5538
|
function ConfirmDialog({
|
|
5422
5539
|
open,
|
|
5423
5540
|
title,
|
|
@@ -5448,13 +5565,13 @@ function ConfirmDialog({
|
|
|
5448
5565
|
className,
|
|
5449
5566
|
children: [
|
|
5450
5567
|
/* @__PURE__ */ jsxs33(ModalHeader, { tone, divider: Boolean(children), children: [
|
|
5451
|
-
/* @__PURE__ */
|
|
5452
|
-
subtitle && /* @__PURE__ */
|
|
5568
|
+
/* @__PURE__ */ jsx53(ModalTitle, { children: title }),
|
|
5569
|
+
subtitle && /* @__PURE__ */ jsx53(ModalDescription, { children: subtitle })
|
|
5453
5570
|
] }),
|
|
5454
|
-
children && /* @__PURE__ */
|
|
5571
|
+
children && /* @__PURE__ */ jsx53(ModalBody, { children }),
|
|
5455
5572
|
/* @__PURE__ */ jsxs33(ModalFooter, { children: [
|
|
5456
|
-
/* @__PURE__ */
|
|
5457
|
-
/* @__PURE__ */
|
|
5573
|
+
/* @__PURE__ */ jsx53(Button, { variant: "neutral", size: "md", onClick: () => onOpenChange(false), children: cancelLabel }),
|
|
5574
|
+
/* @__PURE__ */ jsx53(Button, { variant: confirmVariant, size: "md", disabled: isConfirming, onClick: onConfirm, children: isConfirming ? confirmingLabel : confirmLabel })
|
|
5458
5575
|
] })
|
|
5459
5576
|
]
|
|
5460
5577
|
}
|
|
@@ -5464,10 +5581,10 @@ function ConfirmDialog({
|
|
|
5464
5581
|
|
|
5465
5582
|
// src/components/overlays/note-confirm-modal.tsx
|
|
5466
5583
|
import { useState as useState18 } from "react";
|
|
5467
|
-
import { jsx as
|
|
5584
|
+
import { jsx as jsx54, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
5468
5585
|
function NoteConfirmModal({ open, ...rest }) {
|
|
5469
5586
|
if (!open) return null;
|
|
5470
|
-
return /* @__PURE__ */
|
|
5587
|
+
return /* @__PURE__ */ jsx54(NoteConfirmModalShell, { ...rest });
|
|
5471
5588
|
}
|
|
5472
5589
|
function NoteConfirmModalShell({
|
|
5473
5590
|
title,
|
|
@@ -5504,10 +5621,10 @@ function NoteConfirmModalShell({
|
|
|
5504
5621
|
onInteractOutside: guardDiscard,
|
|
5505
5622
|
children: [
|
|
5506
5623
|
/* @__PURE__ */ jsxs34(ModalHeader, { tone, children: [
|
|
5507
|
-
/* @__PURE__ */
|
|
5508
|
-
subtitle && /* @__PURE__ */
|
|
5624
|
+
/* @__PURE__ */ jsx54(ModalTitle, { children: title }),
|
|
5625
|
+
subtitle && /* @__PURE__ */ jsx54(ModalDescription, { children: subtitle })
|
|
5509
5626
|
] }),
|
|
5510
|
-
/* @__PURE__ */
|
|
5627
|
+
/* @__PURE__ */ jsx54(ModalBody, { children: /* @__PURE__ */ jsx54(
|
|
5511
5628
|
Textarea,
|
|
5512
5629
|
{
|
|
5513
5630
|
value: note,
|
|
@@ -5517,8 +5634,8 @@ function NoteConfirmModalShell({
|
|
|
5517
5634
|
}
|
|
5518
5635
|
) }),
|
|
5519
5636
|
/* @__PURE__ */ jsxs34(ModalFooter, { children: [
|
|
5520
|
-
/* @__PURE__ */
|
|
5521
|
-
/* @__PURE__ */
|
|
5637
|
+
/* @__PURE__ */ jsx54(Button, { variant: "neutral", size: "md", onClick: () => onOpenChange(false), children: cancelLabel }),
|
|
5638
|
+
/* @__PURE__ */ jsx54(Button, { variant: confirmVariant, size: "md", disabled, onClick: () => onConfirm(note.trim()), children: isSubmitting ? submittingLabel : confirmLabel })
|
|
5522
5639
|
] })
|
|
5523
5640
|
]
|
|
5524
5641
|
}
|
|
@@ -5530,13 +5647,13 @@ import {
|
|
|
5530
5647
|
createContext as createContext10,
|
|
5531
5648
|
useContext as useContext10,
|
|
5532
5649
|
useEffect as useEffect17,
|
|
5533
|
-
useMemo as
|
|
5650
|
+
useMemo as useMemo11,
|
|
5534
5651
|
useRef as useRef23,
|
|
5535
5652
|
useState as useState19
|
|
5536
5653
|
} from "react";
|
|
5537
5654
|
import clsx51 from "clsx";
|
|
5538
5655
|
import { LuEllipsis } from "react-icons/lu";
|
|
5539
|
-
import { jsx as
|
|
5656
|
+
import { jsx as jsx55 } from "react/jsx-runtime";
|
|
5540
5657
|
var TriggerNodeContext = createContext10(null);
|
|
5541
5658
|
function useTriggerNode() {
|
|
5542
5659
|
const value = useContext10(TriggerNodeContext);
|
|
@@ -5556,8 +5673,8 @@ function DropdownMenu({
|
|
|
5556
5673
|
});
|
|
5557
5674
|
const menu = useMenuState({ open, setOpen });
|
|
5558
5675
|
const [triggerNode, setTriggerNode] = useState19(null);
|
|
5559
|
-
const anchor =
|
|
5560
|
-
return /* @__PURE__ */
|
|
5676
|
+
const anchor = useMemo11(() => ({ triggerNode, setTriggerNode }), [triggerNode]);
|
|
5677
|
+
return /* @__PURE__ */ jsx55(MenuContext.Provider, { value: menu, children: /* @__PURE__ */ jsx55(TriggerNodeContext.Provider, { value: anchor, children }) });
|
|
5561
5678
|
}
|
|
5562
5679
|
function DropdownMenuTrigger({
|
|
5563
5680
|
children,
|
|
@@ -5589,9 +5706,9 @@ function DropdownMenuTrigger({
|
|
|
5589
5706
|
...rest
|
|
5590
5707
|
};
|
|
5591
5708
|
if (asChild) {
|
|
5592
|
-
return /* @__PURE__ */
|
|
5709
|
+
return /* @__PURE__ */ jsx55(Slot, { ref: composeRefs(anchor.setTriggerNode), ...triggerProps, children });
|
|
5593
5710
|
}
|
|
5594
|
-
return /* @__PURE__ */
|
|
5711
|
+
return /* @__PURE__ */ jsx55(
|
|
5595
5712
|
IconButton,
|
|
5596
5713
|
{
|
|
5597
5714
|
ref: composeRefs(anchor.setTriggerNode),
|
|
@@ -5599,7 +5716,7 @@ function DropdownMenuTrigger({
|
|
|
5599
5716
|
size: "sm",
|
|
5600
5717
|
"aria-label": label,
|
|
5601
5718
|
...triggerProps,
|
|
5602
|
-
children: children ?? /* @__PURE__ */
|
|
5719
|
+
children: children ?? /* @__PURE__ */ jsx55(LuEllipsis, { className: "size-4", "aria-hidden": true })
|
|
5603
5720
|
}
|
|
5604
5721
|
);
|
|
5605
5722
|
}
|
|
@@ -5649,7 +5766,7 @@ function DropdownMenuContent({
|
|
|
5649
5766
|
if (!menu.open) wasOpen.current = false;
|
|
5650
5767
|
}, [menu.open, panelNode, menu.roving, menu.pendingEdge]);
|
|
5651
5768
|
if (!menu.open) return null;
|
|
5652
|
-
return /* @__PURE__ */
|
|
5769
|
+
return /* @__PURE__ */ jsx55(Portal, { children: /* @__PURE__ */ jsx55(
|
|
5653
5770
|
"div",
|
|
5654
5771
|
{
|
|
5655
5772
|
ref: composeRefs(
|
|
@@ -5663,7 +5780,7 @@ function DropdownMenuContent({
|
|
|
5663
5780
|
"aria-orientation": "vertical",
|
|
5664
5781
|
"aria-labelledby": menu.triggerId,
|
|
5665
5782
|
style: floatingStyles,
|
|
5666
|
-
className: clsx51("z-
|
|
5783
|
+
className: clsx51("z-popover", MENU_PANEL_CLASSES, className),
|
|
5667
5784
|
...menu.roving.containerProps,
|
|
5668
5785
|
onKeyDown: (event) => {
|
|
5669
5786
|
menu.roving.containerProps.onKeyDown(event);
|
|
@@ -5677,7 +5794,7 @@ function DropdownMenuContent({
|
|
|
5677
5794
|
|
|
5678
5795
|
// src/components/cards/card.tsx
|
|
5679
5796
|
import { createContext as createContext11, useContext as useContext11 } from "react";
|
|
5680
|
-
import { jsx as
|
|
5797
|
+
import { jsx as jsx56 } from "react/jsx-runtime";
|
|
5681
5798
|
var RADIUS = {
|
|
5682
5799
|
lg: "rounded-lg",
|
|
5683
5800
|
xl: "rounded-xl",
|
|
@@ -5720,7 +5837,7 @@ var FOOTER_ALIGN2 = {
|
|
|
5720
5837
|
};
|
|
5721
5838
|
var CardHeaderContext = createContext11("md");
|
|
5722
5839
|
function Card({ children, radius = "2xl", tone = "default", className, ...rest }) {
|
|
5723
|
-
return /* @__PURE__ */
|
|
5840
|
+
return /* @__PURE__ */ jsx56(
|
|
5724
5841
|
"div",
|
|
5725
5842
|
{
|
|
5726
5843
|
"data-slot": "card",
|
|
@@ -5737,7 +5854,7 @@ function CardHeader({
|
|
|
5737
5854
|
className,
|
|
5738
5855
|
...rest
|
|
5739
5856
|
}) {
|
|
5740
|
-
return /* @__PURE__ */
|
|
5857
|
+
return /* @__PURE__ */ jsx56(CardHeaderContext.Provider, { value: size2, children: /* @__PURE__ */ jsx56(
|
|
5741
5858
|
"div",
|
|
5742
5859
|
{
|
|
5743
5860
|
"data-slot": "card-header",
|
|
@@ -5754,7 +5871,7 @@ function CardHeader({
|
|
|
5754
5871
|
) });
|
|
5755
5872
|
}
|
|
5756
5873
|
function CardTitle({ children, size: size2 = "md", as: Tag = "p", className, ...rest }) {
|
|
5757
|
-
return /* @__PURE__ */
|
|
5874
|
+
return /* @__PURE__ */ jsx56(
|
|
5758
5875
|
Tag,
|
|
5759
5876
|
{
|
|
5760
5877
|
"data-slot": "card-title",
|
|
@@ -5766,7 +5883,7 @@ function CardTitle({ children, size: size2 = "md", as: Tag = "p", className, ...
|
|
|
5766
5883
|
}
|
|
5767
5884
|
function CardDescription({ children, size: size2, className, ...rest }) {
|
|
5768
5885
|
const inherited = useContext11(CardHeaderContext);
|
|
5769
|
-
return /* @__PURE__ */
|
|
5886
|
+
return /* @__PURE__ */ jsx56(
|
|
5770
5887
|
"p",
|
|
5771
5888
|
{
|
|
5772
5889
|
"data-slot": "card-description",
|
|
@@ -5781,7 +5898,7 @@ function CardDescription({ children, size: size2, className, ...rest }) {
|
|
|
5781
5898
|
);
|
|
5782
5899
|
}
|
|
5783
5900
|
function CardAction({ children, className, ...rest }) {
|
|
5784
|
-
return /* @__PURE__ */
|
|
5901
|
+
return /* @__PURE__ */ jsx56(
|
|
5785
5902
|
"div",
|
|
5786
5903
|
{
|
|
5787
5904
|
"data-slot": "card-action",
|
|
@@ -5792,7 +5909,7 @@ function CardAction({ children, className, ...rest }) {
|
|
|
5792
5909
|
);
|
|
5793
5910
|
}
|
|
5794
5911
|
function CardBody({ children, size: size2 = "md", className, ...rest }) {
|
|
5795
|
-
return /* @__PURE__ */
|
|
5912
|
+
return /* @__PURE__ */ jsx56("div", { "data-slot": "card-body", className: cn("flex flex-col", BODY_BOX[size2], className), ...rest, children });
|
|
5796
5913
|
}
|
|
5797
5914
|
function CardFooter({
|
|
5798
5915
|
children,
|
|
@@ -5802,7 +5919,7 @@ function CardFooter({
|
|
|
5802
5919
|
className,
|
|
5803
5920
|
...rest
|
|
5804
5921
|
}) {
|
|
5805
|
-
return /* @__PURE__ */
|
|
5922
|
+
return /* @__PURE__ */ jsx56(
|
|
5806
5923
|
"div",
|
|
5807
5924
|
{
|
|
5808
5925
|
"data-slot": "card-footer",
|
|
@@ -5825,12 +5942,12 @@ import {
|
|
|
5825
5942
|
useCallback as useCallback8,
|
|
5826
5943
|
useContext as useContext12,
|
|
5827
5944
|
useId as useId17,
|
|
5828
|
-
useMemo as
|
|
5945
|
+
useMemo as useMemo12,
|
|
5829
5946
|
useRef as useRef24
|
|
5830
5947
|
} from "react";
|
|
5831
5948
|
import clsx52 from "clsx";
|
|
5832
5949
|
import { LuChevronDown as LuChevronDown3 } from "react-icons/lu";
|
|
5833
|
-
import { jsx as
|
|
5950
|
+
import { jsx as jsx57, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
5834
5951
|
var AccordionContext = createContext12(null);
|
|
5835
5952
|
var AccordionItemContext = createContext12(null);
|
|
5836
5953
|
function useAccordion(part) {
|
|
@@ -5875,11 +5992,11 @@ function Accordion({
|
|
|
5875
5992
|
const roving = useRovingFocus({ orientation: "vertical", loop: true });
|
|
5876
5993
|
cursor.current = 0;
|
|
5877
5994
|
const claimIndex = useCallback8(() => cursor.current++, []);
|
|
5878
|
-
const context =
|
|
5995
|
+
const context = useMemo12(
|
|
5879
5996
|
() => ({ isOpen, toggle, baseId, claimIndex, roving, headingLevel }),
|
|
5880
5997
|
[isOpen, toggle, baseId, claimIndex, roving, headingLevel]
|
|
5881
5998
|
);
|
|
5882
|
-
return /* @__PURE__ */
|
|
5999
|
+
return /* @__PURE__ */ jsx57(AccordionContext.Provider, { value: context, children: /* @__PURE__ */ jsx57(
|
|
5883
6000
|
"div",
|
|
5884
6001
|
{
|
|
5885
6002
|
"data-slot": "accordion",
|
|
@@ -5898,8 +6015,8 @@ function AccordionItem({
|
|
|
5898
6015
|
...rest
|
|
5899
6016
|
}) {
|
|
5900
6017
|
const ctx = useAccordion("AccordionItem");
|
|
5901
|
-
const itemContext =
|
|
5902
|
-
return /* @__PURE__ */
|
|
6018
|
+
const itemContext = useMemo12(() => ({ value, disabled }), [value, disabled]);
|
|
6019
|
+
return /* @__PURE__ */ jsx57(AccordionItemContext.Provider, { value: itemContext, children: /* @__PURE__ */ jsx57(
|
|
5903
6020
|
"div",
|
|
5904
6021
|
{
|
|
5905
6022
|
"data-slot": "accordion-item",
|
|
@@ -5929,7 +6046,7 @@ function AccordionTrigger({
|
|
|
5929
6046
|
return (
|
|
5930
6047
|
// The heading carries no styling of its own — it exists so the accordion shows up in
|
|
5931
6048
|
// the document outline, which is how screen reader users navigate between sections.
|
|
5932
|
-
/* @__PURE__ */
|
|
6049
|
+
/* @__PURE__ */ jsx57(Heading2, { className: "m-0", children: /* @__PURE__ */ jsxs35(
|
|
5933
6050
|
"button",
|
|
5934
6051
|
{
|
|
5935
6052
|
type: "button",
|
|
@@ -5950,8 +6067,8 @@ function AccordionTrigger({
|
|
|
5950
6067
|
),
|
|
5951
6068
|
...rest,
|
|
5952
6069
|
children: [
|
|
5953
|
-
/* @__PURE__ */
|
|
5954
|
-
!hideIndicator && /* @__PURE__ */
|
|
6070
|
+
/* @__PURE__ */ jsx57("span", { className: "min-w-0 flex-1", children }),
|
|
6071
|
+
!hideIndicator && /* @__PURE__ */ jsx57(
|
|
5955
6072
|
LuChevronDown3,
|
|
5956
6073
|
{
|
|
5957
6074
|
"aria-hidden": true,
|
|
@@ -5971,7 +6088,7 @@ function AccordionContent({ children, className, ...rest }) {
|
|
|
5971
6088
|
const item = useContext12(AccordionItemContext);
|
|
5972
6089
|
if (!item) throw new Error("<AccordionContent> must be used inside <AccordionItem>");
|
|
5973
6090
|
if (!ctx.isOpen(item.value)) return null;
|
|
5974
|
-
return /* @__PURE__ */
|
|
6091
|
+
return /* @__PURE__ */ jsx57(
|
|
5975
6092
|
"div",
|
|
5976
6093
|
{
|
|
5977
6094
|
id: `${ctx.baseId}-content-${item.value}`,
|
|
@@ -5991,7 +6108,7 @@ import {
|
|
|
5991
6108
|
useContext as useContext13,
|
|
5992
6109
|
useId as useId18
|
|
5993
6110
|
} from "react";
|
|
5994
|
-
import { jsx as
|
|
6111
|
+
import { jsx as jsx58 } from "react/jsx-runtime";
|
|
5995
6112
|
var CollapsibleContext = createContext13(null);
|
|
5996
6113
|
function useCollapsible(part) {
|
|
5997
6114
|
const context = useContext13(CollapsibleContext);
|
|
@@ -6013,7 +6130,7 @@ function Collapsible({
|
|
|
6013
6130
|
onChange: onOpenChange
|
|
6014
6131
|
});
|
|
6015
6132
|
const baseId = useId18();
|
|
6016
|
-
return /* @__PURE__ */
|
|
6133
|
+
return /* @__PURE__ */ jsx58(
|
|
6017
6134
|
CollapsibleContext.Provider,
|
|
6018
6135
|
{
|
|
6019
6136
|
value: {
|
|
@@ -6023,7 +6140,7 @@ function Collapsible({
|
|
|
6023
6140
|
contentId: `${baseId}-content`,
|
|
6024
6141
|
disabled
|
|
6025
6142
|
},
|
|
6026
|
-
children: /* @__PURE__ */
|
|
6143
|
+
children: /* @__PURE__ */ jsx58("div", { "data-slot": "collapsible", "data-state": open ? "open" : "closed", className, ...rest, children })
|
|
6027
6144
|
}
|
|
6028
6145
|
);
|
|
6029
6146
|
}
|
|
@@ -6044,9 +6161,9 @@ function CollapsibleTrigger({
|
|
|
6044
6161
|
...rest
|
|
6045
6162
|
};
|
|
6046
6163
|
if (asChild) {
|
|
6047
|
-
return /* @__PURE__ */
|
|
6164
|
+
return /* @__PURE__ */ jsx58(Slot, { "aria-disabled": ctx.disabled || void 0, ...triggerProps, children });
|
|
6048
6165
|
}
|
|
6049
|
-
return /* @__PURE__ */
|
|
6166
|
+
return /* @__PURE__ */ jsx58("button", { type: "button", disabled: ctx.disabled, ...triggerProps, children });
|
|
6050
6167
|
}
|
|
6051
6168
|
function CollapsibleContent({
|
|
6052
6169
|
children,
|
|
@@ -6056,7 +6173,7 @@ function CollapsibleContent({
|
|
|
6056
6173
|
}) {
|
|
6057
6174
|
const ctx = useCollapsible("CollapsibleContent");
|
|
6058
6175
|
if (!ctx.open && !keepMounted) return null;
|
|
6059
|
-
return /* @__PURE__ */
|
|
6176
|
+
return /* @__PURE__ */ jsx58(
|
|
6060
6177
|
"div",
|
|
6061
6178
|
{
|
|
6062
6179
|
id: ctx.contentId,
|
|
@@ -6074,9 +6191,9 @@ function CollapsibleContent({
|
|
|
6074
6191
|
// src/components/cards/aspect-ratio.tsx
|
|
6075
6192
|
import { forwardRef as forwardRef18 } from "react";
|
|
6076
6193
|
import clsx53 from "clsx";
|
|
6077
|
-
import { jsx as
|
|
6194
|
+
import { jsx as jsx59 } from "react/jsx-runtime";
|
|
6078
6195
|
var AspectRatio = forwardRef18(function AspectRatio2({ children, ratio = 1, className, style, ...rest }, ref) {
|
|
6079
|
-
return /* @__PURE__ */
|
|
6196
|
+
return /* @__PURE__ */ jsx59(
|
|
6080
6197
|
"div",
|
|
6081
6198
|
{
|
|
6082
6199
|
ref,
|
|
@@ -6096,13 +6213,13 @@ import {
|
|
|
6096
6213
|
useContext as useContext14,
|
|
6097
6214
|
useEffect as useEffect18,
|
|
6098
6215
|
useId as useId19,
|
|
6099
|
-
useMemo as
|
|
6216
|
+
useMemo as useMemo13,
|
|
6100
6217
|
useRef as useRef25,
|
|
6101
6218
|
useState as useState20
|
|
6102
6219
|
} from "react";
|
|
6103
6220
|
import clsx54 from "clsx";
|
|
6104
6221
|
import { LuChevronLeft as LuChevronLeft2, LuChevronRight as LuChevronRight3 } from "react-icons/lu";
|
|
6105
|
-
import { jsx as
|
|
6222
|
+
import { jsx as jsx60, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
6106
6223
|
var CarouselContext = createContext14(null);
|
|
6107
6224
|
function useCarousel(part) {
|
|
6108
6225
|
const value = useContext14(CarouselContext);
|
|
@@ -6131,7 +6248,7 @@ function Carousel({
|
|
|
6131
6248
|
const [paused, setPaused] = useState20(false);
|
|
6132
6249
|
const [userTookControl, setUserTookControl] = useState20(false);
|
|
6133
6250
|
const hasAutoplay = autoplayInterval !== void 0 && autoplayInterval > 0;
|
|
6134
|
-
const context =
|
|
6251
|
+
const context = useMemo13(
|
|
6135
6252
|
() => ({
|
|
6136
6253
|
index,
|
|
6137
6254
|
setIndex: (next) => {
|
|
@@ -6160,7 +6277,7 @@ function Carousel({
|
|
|
6160
6277
|
}, autoplayInterval);
|
|
6161
6278
|
return () => clearInterval(timer);
|
|
6162
6279
|
}, [hasAutoplay, paused, userTookControl, autoplayInterval, index, count, loop, setIndex]);
|
|
6163
|
-
return /* @__PURE__ */
|
|
6280
|
+
return /* @__PURE__ */ jsx60(CarouselContext.Provider, { value: context, children: /* @__PURE__ */ jsx60(
|
|
6164
6281
|
"div",
|
|
6165
6282
|
{
|
|
6166
6283
|
role: "region",
|
|
@@ -6193,7 +6310,7 @@ function Carousel({
|
|
|
6193
6310
|
}
|
|
6194
6311
|
function CarouselViewport({ children, className, ...rest }) {
|
|
6195
6312
|
const carousel = useCarousel("CarouselViewport");
|
|
6196
|
-
return /* @__PURE__ */
|
|
6313
|
+
return /* @__PURE__ */ jsx60(
|
|
6197
6314
|
"div",
|
|
6198
6315
|
{
|
|
6199
6316
|
id: `${carousel.baseId}-viewport`,
|
|
@@ -6208,7 +6325,7 @@ function CarouselSlide({ children, className, ...rest }) {
|
|
|
6208
6325
|
const carousel = useCarousel("CarouselSlide");
|
|
6209
6326
|
const slideIndex = carousel.registerSlide();
|
|
6210
6327
|
const active = slideIndex === carousel.index;
|
|
6211
|
-
return /* @__PURE__ */
|
|
6328
|
+
return /* @__PURE__ */ jsx60(
|
|
6212
6329
|
"div",
|
|
6213
6330
|
{
|
|
6214
6331
|
role: "group",
|
|
@@ -6238,7 +6355,7 @@ function CarouselControls({ showDots = true, className, ...rest }) {
|
|
|
6238
6355
|
className: clsx54("mt-3 flex items-center justify-between gap-3", className),
|
|
6239
6356
|
...rest,
|
|
6240
6357
|
children: [
|
|
6241
|
-
/* @__PURE__ */
|
|
6358
|
+
/* @__PURE__ */ jsx60(
|
|
6242
6359
|
IconButton,
|
|
6243
6360
|
{
|
|
6244
6361
|
variant: "neutral",
|
|
@@ -6247,10 +6364,10 @@ function CarouselControls({ showDots = true, className, ...rest }) {
|
|
|
6247
6364
|
"aria-controls": `${carousel.baseId}-viewport`,
|
|
6248
6365
|
disabled: !loop && index === 0,
|
|
6249
6366
|
onClick: () => go(index - 1),
|
|
6250
|
-
children: /* @__PURE__ */
|
|
6367
|
+
children: /* @__PURE__ */ jsx60(LuChevronLeft2, { "aria-hidden": true, size: 16 })
|
|
6251
6368
|
}
|
|
6252
6369
|
),
|
|
6253
|
-
showDots && /* @__PURE__ */
|
|
6370
|
+
showDots && /* @__PURE__ */ jsx60("div", { role: "group", "aria-label": `Slide ${index + 1} of ${count}`, className: "flex items-center gap-2", children: Array.from({ length: count }, (_, i) => /* @__PURE__ */ jsx60(
|
|
6254
6371
|
"button",
|
|
6255
6372
|
{
|
|
6256
6373
|
type: "button",
|
|
@@ -6266,17 +6383,17 @@ function CarouselControls({ showDots = true, className, ...rest }) {
|
|
|
6266
6383
|
i
|
|
6267
6384
|
)) }),
|
|
6268
6385
|
/* @__PURE__ */ jsxs36("div", { className: "flex items-center gap-1.5", children: [
|
|
6269
|
-
carousel.hasAutoplay && /* @__PURE__ */
|
|
6386
|
+
carousel.hasAutoplay && /* @__PURE__ */ jsx60(
|
|
6270
6387
|
IconButton,
|
|
6271
6388
|
{
|
|
6272
6389
|
variant: "neutral",
|
|
6273
6390
|
size: "sm",
|
|
6274
6391
|
"aria-label": carousel.paused ? "Start automatic slide show" : "Stop automatic slide show",
|
|
6275
6392
|
onClick: () => carousel.setPaused(!carousel.paused),
|
|
6276
|
-
children: /* @__PURE__ */
|
|
6393
|
+
children: /* @__PURE__ */ jsx60("span", { "aria-hidden": true, className: "text-body-tiny font-semibold", children: carousel.paused ? "\u25B6" : "\u275A\u275A" })
|
|
6277
6394
|
}
|
|
6278
6395
|
),
|
|
6279
|
-
/* @__PURE__ */
|
|
6396
|
+
/* @__PURE__ */ jsx60(
|
|
6280
6397
|
IconButton,
|
|
6281
6398
|
{
|
|
6282
6399
|
variant: "neutral",
|
|
@@ -6285,7 +6402,7 @@ function CarouselControls({ showDots = true, className, ...rest }) {
|
|
|
6285
6402
|
"aria-controls": `${carousel.baseId}-viewport`,
|
|
6286
6403
|
disabled: !loop && index === count - 1,
|
|
6287
6404
|
onClick: () => go(index + 1),
|
|
6288
|
-
children: /* @__PURE__ */
|
|
6405
|
+
children: /* @__PURE__ */ jsx60(LuChevronRight3, { "aria-hidden": true, size: 16 })
|
|
6289
6406
|
}
|
|
6290
6407
|
)
|
|
6291
6408
|
] })
|
|
@@ -6301,12 +6418,12 @@ import {
|
|
|
6301
6418
|
useContext as useContext15,
|
|
6302
6419
|
useEffect as useEffect19,
|
|
6303
6420
|
useId as useId20,
|
|
6304
|
-
useMemo as
|
|
6421
|
+
useMemo as useMemo14,
|
|
6305
6422
|
useRef as useRef26,
|
|
6306
6423
|
useState as useState21
|
|
6307
6424
|
} from "react";
|
|
6308
6425
|
import clsx55 from "clsx";
|
|
6309
|
-
import { jsx as
|
|
6426
|
+
import { jsx as jsx61, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
6310
6427
|
var ResizableContext = createContext15(null);
|
|
6311
6428
|
function useResizable(part) {
|
|
6312
6429
|
const value = useContext15(ResizableContext);
|
|
@@ -6332,7 +6449,7 @@ function Resizable({
|
|
|
6332
6449
|
const containerRef = useRef26(null);
|
|
6333
6450
|
const baseId = useId20();
|
|
6334
6451
|
const [dragging, setDragging] = useState21(false);
|
|
6335
|
-
const context =
|
|
6452
|
+
const context = useMemo14(
|
|
6336
6453
|
() => ({
|
|
6337
6454
|
direction,
|
|
6338
6455
|
size: size2,
|
|
@@ -6346,7 +6463,7 @@ function Resizable({
|
|
|
6346
6463
|
}),
|
|
6347
6464
|
[direction, size2, setSize, min, max, baseId, dragging]
|
|
6348
6465
|
);
|
|
6349
|
-
return /* @__PURE__ */
|
|
6466
|
+
return /* @__PURE__ */ jsx61(ResizableContext.Provider, { value: context, children: /* @__PURE__ */ jsx61(
|
|
6350
6467
|
"div",
|
|
6351
6468
|
{
|
|
6352
6469
|
ref: containerRef,
|
|
@@ -6370,7 +6487,7 @@ function ResizablePanel({ children, which, className, ...rest }) {
|
|
|
6370
6487
|
return (
|
|
6371
6488
|
// A panel holds arbitrary content, which may be entirely static — so it needs the tab
|
|
6372
6489
|
// stop `ScrollArea` adds while overflowing, not just the scrollbar styling.
|
|
6373
|
-
/* @__PURE__ */
|
|
6490
|
+
/* @__PURE__ */ jsx61(
|
|
6374
6491
|
ScrollArea,
|
|
6375
6492
|
{
|
|
6376
6493
|
axis: "both",
|
|
@@ -6474,14 +6591,14 @@ function ResizableHandle({
|
|
|
6474
6591
|
),
|
|
6475
6592
|
...rest,
|
|
6476
6593
|
children: [
|
|
6477
|
-
/* @__PURE__ */
|
|
6594
|
+
/* @__PURE__ */ jsx61(
|
|
6478
6595
|
"span",
|
|
6479
6596
|
{
|
|
6480
6597
|
"aria-hidden": true,
|
|
6481
6598
|
className: clsx55("absolute", horizontal ? "inset-y-0 -inset-x-1.5" : "-inset-y-1.5 inset-x-0")
|
|
6482
6599
|
}
|
|
6483
6600
|
),
|
|
6484
|
-
withGrip && /* @__PURE__ */
|
|
6601
|
+
withGrip && /* @__PURE__ */ jsx61(
|
|
6485
6602
|
"span",
|
|
6486
6603
|
{
|
|
6487
6604
|
"aria-hidden": true,
|
|
@@ -6490,7 +6607,7 @@ function ResizableHandle({
|
|
|
6490
6607
|
"opacity-0 transition-opacity group-hover:opacity-100 group-focus-visible:opacity-100",
|
|
6491
6608
|
horizontal ? "h-6 w-2.5" : "h-2.5 w-6"
|
|
6492
6609
|
),
|
|
6493
|
-
children: /* @__PURE__ */
|
|
6610
|
+
children: /* @__PURE__ */ jsx61("span", { className: clsx55("rounded-full bg-default-tertiary", horizontal ? "h-2.5 w-px" : "h-px w-2.5") })
|
|
6494
6611
|
}
|
|
6495
6612
|
)
|
|
6496
6613
|
]
|
|
@@ -6501,7 +6618,7 @@ function ResizableHandle({
|
|
|
6501
6618
|
|
|
6502
6619
|
// src/components/chrome/page-heading.tsx
|
|
6503
6620
|
import clsx56 from "clsx";
|
|
6504
|
-
import { jsx as
|
|
6621
|
+
import { jsx as jsx62, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
6505
6622
|
var TITLE = {
|
|
6506
6623
|
// `text-2xl` was stock Tailwind rather than the design tokens. Same 24px, now on-token.
|
|
6507
6624
|
page: "text-heading font-semibold text-default",
|
|
@@ -6527,25 +6644,25 @@ function PageHeading({
|
|
|
6527
6644
|
}) {
|
|
6528
6645
|
const Tag = as ?? (size2 === "section" ? "h2" : "h1");
|
|
6529
6646
|
const heading = /* @__PURE__ */ jsxs38("div", { className: "flex min-w-0 flex-col gap-0.5", children: [
|
|
6530
|
-
/* @__PURE__ */
|
|
6531
|
-
subtitle && /* @__PURE__ */
|
|
6647
|
+
/* @__PURE__ */ jsx62(Tag, { className: clsx56(TITLE[size2], truncateTitle && "truncate"), children: title }),
|
|
6648
|
+
subtitle && /* @__PURE__ */ jsx62("p", { className: SUBTITLE[size2], children: subtitle })
|
|
6532
6649
|
] });
|
|
6533
|
-
if (!actions) return className ? /* @__PURE__ */
|
|
6650
|
+
if (!actions) return className ? /* @__PURE__ */ jsx62("div", { className, children: heading }) : heading;
|
|
6534
6651
|
return /* @__PURE__ */ jsxs38("div", { className: clsx56("flex items-start justify-between gap-4", className), children: [
|
|
6535
6652
|
heading,
|
|
6536
|
-
/* @__PURE__ */
|
|
6653
|
+
/* @__PURE__ */ jsx62("div", { className: "flex shrink-0 items-center gap-2", children: actions })
|
|
6537
6654
|
] });
|
|
6538
6655
|
}
|
|
6539
6656
|
|
|
6540
6657
|
// src/components/chrome/page-toolbar.tsx
|
|
6541
6658
|
import clsx57 from "clsx";
|
|
6542
|
-
import { jsx as
|
|
6659
|
+
import { jsx as jsx63 } from "react/jsx-runtime";
|
|
6543
6660
|
var SIZE8 = {
|
|
6544
6661
|
sm: "min-h-[56px] px-4 py-3 md:px-7",
|
|
6545
6662
|
md: "min-h-[72px] px-4 py-4 md:px-7"
|
|
6546
6663
|
};
|
|
6547
6664
|
function PageToolbar({ children, wrap, size: size2 = "md", className }) {
|
|
6548
|
-
return /* @__PURE__ */
|
|
6665
|
+
return /* @__PURE__ */ jsx63(
|
|
6549
6666
|
"div",
|
|
6550
6667
|
{
|
|
6551
6668
|
className: clsx57(
|
|
@@ -6561,22 +6678,22 @@ function PageToolbar({ children, wrap, size: size2 = "md", className }) {
|
|
|
6561
6678
|
|
|
6562
6679
|
// src/components/chrome/filter-bar.tsx
|
|
6563
6680
|
import clsx58 from "clsx";
|
|
6564
|
-
import { jsx as
|
|
6681
|
+
import { jsx as jsx64, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
6565
6682
|
var GAP2 = {
|
|
6566
6683
|
sm: "gap-2",
|
|
6567
6684
|
md: "gap-3"
|
|
6568
6685
|
};
|
|
6569
6686
|
function FilterBar({ children, trailing, size: size2 = "md", className }) {
|
|
6570
|
-
return /* @__PURE__ */
|
|
6687
|
+
return /* @__PURE__ */ jsx64(ControlSizeProvider, { size: size2, children: /* @__PURE__ */ jsxs39("div", { className: clsx58("flex flex-wrap items-center", GAP2[size2], className), children: [
|
|
6571
6688
|
children,
|
|
6572
|
-
trailing && /* @__PURE__ */
|
|
6689
|
+
trailing && /* @__PURE__ */ jsx64("div", { className: clsx58("ml-auto flex items-center", GAP2[size2]), children: trailing })
|
|
6573
6690
|
] }) });
|
|
6574
6691
|
}
|
|
6575
6692
|
|
|
6576
6693
|
// src/components/chrome/tabs.tsx
|
|
6577
6694
|
import { useId as useId21 } from "react";
|
|
6578
6695
|
import clsx59 from "clsx";
|
|
6579
|
-
import { jsx as
|
|
6696
|
+
import { jsx as jsx65, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
6580
6697
|
var SIZE9 = {
|
|
6581
6698
|
underline: {
|
|
6582
6699
|
sm: { strip: "gap-4", tab: "px-0.5 py-1.5 text-body-xs" },
|
|
@@ -6620,7 +6737,7 @@ function Tabs({
|
|
|
6620
6737
|
loop: true,
|
|
6621
6738
|
defaultIndex: selectedIndex
|
|
6622
6739
|
});
|
|
6623
|
-
return /* @__PURE__ */
|
|
6740
|
+
return /* @__PURE__ */ jsx65(
|
|
6624
6741
|
"div",
|
|
6625
6742
|
{
|
|
6626
6743
|
role: "tablist",
|
|
@@ -6675,7 +6792,7 @@ function Tabs({
|
|
|
6675
6792
|
),
|
|
6676
6793
|
children: [
|
|
6677
6794
|
tab.label,
|
|
6678
|
-
tab.count !== void 0 && /* @__PURE__ */
|
|
6795
|
+
tab.count !== void 0 && /* @__PURE__ */ jsx65(
|
|
6679
6796
|
"span",
|
|
6680
6797
|
{
|
|
6681
6798
|
className: clsx59(
|
|
@@ -6703,7 +6820,7 @@ function TabsPanel({
|
|
|
6703
6820
|
...rest
|
|
6704
6821
|
}) {
|
|
6705
6822
|
if (!active && !keepMounted) return null;
|
|
6706
|
-
return /* @__PURE__ */
|
|
6823
|
+
return /* @__PURE__ */ jsx65(
|
|
6707
6824
|
"div",
|
|
6708
6825
|
{
|
|
6709
6826
|
role: "tabpanel",
|
|
@@ -6720,7 +6837,7 @@ function TabsPanel({
|
|
|
6720
6837
|
|
|
6721
6838
|
// src/components/chrome/nav-item.tsx
|
|
6722
6839
|
import clsx60 from "clsx";
|
|
6723
|
-
import { Fragment as Fragment8, jsx as
|
|
6840
|
+
import { Fragment as Fragment8, jsx as jsx66, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
6724
6841
|
var SIZE10 = {
|
|
6725
6842
|
sm: { box: "h-9 gap-2 rounded-lg px-3 py-1.5", label: "text-body-xs", square: "w-9" },
|
|
6726
6843
|
md: { box: "h-11 gap-3 rounded-xl px-3.5 py-2.5", label: "text-body-sm", square: "w-11" }
|
|
@@ -6799,13 +6916,13 @@ function NavItem({
|
|
|
6799
6916
|
...rest
|
|
6800
6917
|
};
|
|
6801
6918
|
const content = /* @__PURE__ */ jsxs41(Fragment8, { children: [
|
|
6802
|
-
icon != null ? /* @__PURE__ */
|
|
6919
|
+
icon != null ? /* @__PURE__ */ jsx66("span", { "aria-hidden": true, className: "shrink-0 [&_svg]:size-4", children: icon }) : (
|
|
6803
6920
|
// Icons are optional, but the collapsed rail hides the label — so a row with neither
|
|
6804
6921
|
// renders as an empty box. Through 0.5.0 that is exactly what a nav without icons
|
|
6805
6922
|
// collapsed to, the docs site's own 36-row sidebar included. The monogram is
|
|
6806
6923
|
// decorative in the same way the icon is: the `sr-only` label below still names the
|
|
6807
6924
|
// row.
|
|
6808
|
-
collapsed && /* @__PURE__ */
|
|
6925
|
+
collapsed && /* @__PURE__ */ jsx66(
|
|
6809
6926
|
"span",
|
|
6810
6927
|
{
|
|
6811
6928
|
"aria-hidden": true,
|
|
@@ -6814,7 +6931,7 @@ function NavItem({
|
|
|
6814
6931
|
}
|
|
6815
6932
|
)
|
|
6816
6933
|
),
|
|
6817
|
-
/* @__PURE__ */
|
|
6934
|
+
/* @__PURE__ */ jsx66(
|
|
6818
6935
|
"span",
|
|
6819
6936
|
{
|
|
6820
6937
|
className: clsx60(
|
|
@@ -6825,7 +6942,7 @@ function NavItem({
|
|
|
6825
6942
|
children: label
|
|
6826
6943
|
}
|
|
6827
6944
|
),
|
|
6828
|
-
indicator && /* @__PURE__ */
|
|
6945
|
+
indicator && /* @__PURE__ */ jsx66(
|
|
6829
6946
|
"span",
|
|
6830
6947
|
{
|
|
6831
6948
|
role: "status",
|
|
@@ -6835,16 +6952,16 @@ function NavItem({
|
|
|
6835
6952
|
)
|
|
6836
6953
|
] });
|
|
6837
6954
|
if (asChild) {
|
|
6838
|
-
return /* @__PURE__ */
|
|
6955
|
+
return /* @__PURE__ */ jsx66(Slot, { wrapChildren: () => content, ...rootProps, children });
|
|
6839
6956
|
}
|
|
6840
|
-
return /* @__PURE__ */
|
|
6957
|
+
return /* @__PURE__ */ jsx66("span", { ...rootProps, children: content });
|
|
6841
6958
|
}
|
|
6842
6959
|
|
|
6843
6960
|
// src/components/chrome/eyebrow-label.tsx
|
|
6844
6961
|
import clsx61 from "clsx";
|
|
6845
|
-
import { jsx as
|
|
6962
|
+
import { jsx as jsx67 } from "react/jsx-runtime";
|
|
6846
6963
|
function EyebrowLabel({ children, variant = "uppercase", className }) {
|
|
6847
|
-
return /* @__PURE__ */
|
|
6964
|
+
return /* @__PURE__ */ jsx67(
|
|
6848
6965
|
"p",
|
|
6849
6966
|
{
|
|
6850
6967
|
className: clsx61(
|
|
@@ -6860,9 +6977,9 @@ function EyebrowLabel({ children, variant = "uppercase", className }) {
|
|
|
6860
6977
|
// src/components/chrome/separator.tsx
|
|
6861
6978
|
import { forwardRef as forwardRef19 } from "react";
|
|
6862
6979
|
import clsx62 from "clsx";
|
|
6863
|
-
import { jsx as
|
|
6980
|
+
import { jsx as jsx68 } from "react/jsx-runtime";
|
|
6864
6981
|
var Separator = forwardRef19(function Separator2({ orientation = "horizontal", decorative = true, className, ...rest }, ref) {
|
|
6865
|
-
return /* @__PURE__ */
|
|
6982
|
+
return /* @__PURE__ */ jsx68(
|
|
6866
6983
|
"div",
|
|
6867
6984
|
{
|
|
6868
6985
|
ref,
|
|
@@ -6882,13 +6999,13 @@ var Separator = forwardRef19(function Separator2({ orientation = "horizontal", d
|
|
|
6882
6999
|
// src/components/chrome/kbd.tsx
|
|
6883
7000
|
import { forwardRef as forwardRef20 } from "react";
|
|
6884
7001
|
import clsx63 from "clsx";
|
|
6885
|
-
import { jsx as
|
|
7002
|
+
import { jsx as jsx69 } from "react/jsx-runtime";
|
|
6886
7003
|
var SIZE11 = {
|
|
6887
7004
|
sm: "h-4 min-w-4 px-1 text-body-tiny",
|
|
6888
7005
|
md: "h-5 min-w-5 px-1.5 text-body-xs"
|
|
6889
7006
|
};
|
|
6890
7007
|
var Kbd = forwardRef20(function Kbd2({ children, size: size2 = "md", className, ...rest }, ref) {
|
|
6891
|
-
return /* @__PURE__ */
|
|
7008
|
+
return /* @__PURE__ */ jsx69(
|
|
6892
7009
|
"kbd",
|
|
6893
7010
|
{
|
|
6894
7011
|
ref,
|
|
@@ -6909,15 +7026,15 @@ var Kbd = forwardRef20(function Kbd2({ children, size: size2 = "md", className,
|
|
|
6909
7026
|
import { forwardRef as forwardRef21 } from "react";
|
|
6910
7027
|
import clsx64 from "clsx";
|
|
6911
7028
|
import { LuChevronRight as LuChevronRight4 } from "react-icons/lu";
|
|
6912
|
-
import { jsx as
|
|
7029
|
+
import { jsx as jsx70, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
6913
7030
|
var Breadcrumb = forwardRef21(function Breadcrumb2({ children, label = "Breadcrumb", className, ...rest }, ref) {
|
|
6914
|
-
return /* @__PURE__ */
|
|
7031
|
+
return /* @__PURE__ */ jsx70("nav", { ref, "aria-label": label, "data-slot": "breadcrumb", ...rest, children: /* @__PURE__ */ jsx70("ol", { className: clsx64("flex flex-wrap items-center gap-1.5 p-0 text-body-xs", className), children }) });
|
|
6915
7032
|
});
|
|
6916
7033
|
var BreadcrumbItem = forwardRef21(
|
|
6917
7034
|
function BreadcrumbItem2({ children, current = false, asChild = false, first = false, className, ...rest }, ref) {
|
|
6918
7035
|
return /* @__PURE__ */ jsxs42("li", { className: "flex items-center gap-1.5", children: [
|
|
6919
|
-
!first && /* @__PURE__ */
|
|
6920
|
-
current ? /* @__PURE__ */
|
|
7036
|
+
!first && /* @__PURE__ */ jsx70(LuChevronRight4, { "aria-hidden": true, className: "size-3.5 shrink-0 text-icon-default-tertiary" }),
|
|
7037
|
+
current ? /* @__PURE__ */ jsx70("span", { "aria-current": "page", className: clsx64("font-medium text-default", className), children }) : asChild ? /* @__PURE__ */ jsx70(
|
|
6921
7038
|
Slot,
|
|
6922
7039
|
{
|
|
6923
7040
|
className: clsx64(
|
|
@@ -6928,7 +7045,7 @@ var BreadcrumbItem = forwardRef21(
|
|
|
6928
7045
|
...rest,
|
|
6929
7046
|
children
|
|
6930
7047
|
}
|
|
6931
|
-
) : /* @__PURE__ */
|
|
7048
|
+
) : /* @__PURE__ */ jsx70(
|
|
6932
7049
|
"a",
|
|
6933
7050
|
{
|
|
6934
7051
|
ref,
|
|
@@ -6947,8 +7064,8 @@ var BreadcrumbItem = forwardRef21(
|
|
|
6947
7064
|
var BreadcrumbEllipsis = forwardRef21(
|
|
6948
7065
|
function BreadcrumbEllipsis2({ className, ...rest }, ref) {
|
|
6949
7066
|
return /* @__PURE__ */ jsxs42("li", { className: "flex items-center gap-1.5", children: [
|
|
6950
|
-
/* @__PURE__ */
|
|
6951
|
-
/* @__PURE__ */
|
|
7067
|
+
/* @__PURE__ */ jsx70(LuChevronRight4, { "aria-hidden": true, className: "size-3.5 shrink-0 text-icon-default-tertiary" }),
|
|
7068
|
+
/* @__PURE__ */ jsx70(
|
|
6952
7069
|
"span",
|
|
6953
7070
|
{
|
|
6954
7071
|
ref,
|
|
@@ -6966,7 +7083,7 @@ var BreadcrumbEllipsis = forwardRef21(
|
|
|
6966
7083
|
import { forwardRef as forwardRef22 } from "react";
|
|
6967
7084
|
import clsx65 from "clsx";
|
|
6968
7085
|
import { LuChevronLeft as LuChevronLeft3, LuChevronRight as LuChevronRight5 } from "react-icons/lu";
|
|
6969
|
-
import { jsx as
|
|
7086
|
+
import { jsx as jsx71, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
6970
7087
|
var GAP3 = "\u2026";
|
|
6971
7088
|
function paginationRange(page, pageCount, siblingCount = 1) {
|
|
6972
7089
|
const totalSlots = siblingCount * 2 + 5;
|
|
@@ -7023,7 +7140,7 @@ var Pagination = forwardRef22(function Pagination2({
|
|
|
7023
7140
|
className: clsx65("flex items-center gap-1.5", className),
|
|
7024
7141
|
...rest,
|
|
7025
7142
|
children: [
|
|
7026
|
-
/* @__PURE__ */
|
|
7143
|
+
/* @__PURE__ */ jsx71(
|
|
7027
7144
|
"button",
|
|
7028
7145
|
{
|
|
7029
7146
|
type: "button",
|
|
@@ -7031,19 +7148,19 @@ var Pagination = forwardRef22(function Pagination2({
|
|
|
7031
7148
|
disabled: page <= 1,
|
|
7032
7149
|
onClick: () => go(page - 1),
|
|
7033
7150
|
className: ARROW_BASE,
|
|
7034
|
-
children: /* @__PURE__ */
|
|
7151
|
+
children: /* @__PURE__ */ jsx71(LuChevronLeft3, { "aria-hidden": true, className: "size-4" })
|
|
7035
7152
|
}
|
|
7036
7153
|
),
|
|
7037
7154
|
type === "dots" ? (
|
|
7038
7155
|
// The dots form has no room for numbers, so the list itself is the only place the
|
|
7039
7156
|
// position can be stated — hence the live-region-free but explicitly named group.
|
|
7040
|
-
/* @__PURE__ */
|
|
7157
|
+
/* @__PURE__ */ jsx71(
|
|
7041
7158
|
"span",
|
|
7042
7159
|
{
|
|
7043
7160
|
role: "group",
|
|
7044
7161
|
"aria-label": `Page ${page} of ${pageCount}`,
|
|
7045
7162
|
className: "flex items-center gap-2 px-2",
|
|
7046
|
-
children: Array.from({ length: pageCount }, (_, i) => i + 1).map((n) => /* @__PURE__ */
|
|
7163
|
+
children: Array.from({ length: pageCount }, (_, i) => i + 1).map((n) => /* @__PURE__ */ jsx71(
|
|
7047
7164
|
"button",
|
|
7048
7165
|
{
|
|
7049
7166
|
type: "button",
|
|
@@ -7061,7 +7178,7 @@ var Pagination = forwardRef22(function Pagination2({
|
|
|
7061
7178
|
}
|
|
7062
7179
|
)
|
|
7063
7180
|
) : paginationRange(page, pageCount, siblingCount).map(
|
|
7064
|
-
(entry, index) => entry === GAP3 ? /* @__PURE__ */
|
|
7181
|
+
(entry, index) => entry === GAP3 ? /* @__PURE__ */ jsx71(
|
|
7065
7182
|
"span",
|
|
7066
7183
|
{
|
|
7067
7184
|
"aria-hidden": true,
|
|
@@ -7069,7 +7186,7 @@ var Pagination = forwardRef22(function Pagination2({
|
|
|
7069
7186
|
children: GAP3
|
|
7070
7187
|
},
|
|
7071
7188
|
`gap-${index}`
|
|
7072
|
-
) : /* @__PURE__ */
|
|
7189
|
+
) : /* @__PURE__ */ jsx71(
|
|
7073
7190
|
"button",
|
|
7074
7191
|
{
|
|
7075
7192
|
type: "button",
|
|
@@ -7086,7 +7203,7 @@ var Pagination = forwardRef22(function Pagination2({
|
|
|
7086
7203
|
entry
|
|
7087
7204
|
)
|
|
7088
7205
|
),
|
|
7089
|
-
/* @__PURE__ */
|
|
7206
|
+
/* @__PURE__ */ jsx71(
|
|
7090
7207
|
"button",
|
|
7091
7208
|
{
|
|
7092
7209
|
type: "button",
|
|
@@ -7094,7 +7211,7 @@ var Pagination = forwardRef22(function Pagination2({
|
|
|
7094
7211
|
disabled: page >= pageCount,
|
|
7095
7212
|
onClick: () => go(page + 1),
|
|
7096
7213
|
className: ARROW_BASE,
|
|
7097
|
-
children: /* @__PURE__ */
|
|
7214
|
+
children: /* @__PURE__ */ jsx71(LuChevronRight5, { "aria-hidden": true, className: "size-4" })
|
|
7098
7215
|
}
|
|
7099
7216
|
)
|
|
7100
7217
|
]
|
|
@@ -7105,10 +7222,10 @@ var Pagination = forwardRef22(function Pagination2({
|
|
|
7105
7222
|
// src/components/chrome/navigation-menu.tsx
|
|
7106
7223
|
import { forwardRef as forwardRef23 } from "react";
|
|
7107
7224
|
import clsx66 from "clsx";
|
|
7108
|
-
import { Fragment as Fragment9, jsx as
|
|
7225
|
+
import { Fragment as Fragment9, jsx as jsx72, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
7109
7226
|
var NavigationMenu = forwardRef23(
|
|
7110
7227
|
function NavigationMenu2({ children, orientation = "horizontal", label, className, ...rest }, ref) {
|
|
7111
|
-
return /* @__PURE__ */
|
|
7228
|
+
return /* @__PURE__ */ jsx72("nav", { ref, "aria-label": label, "data-slot": "navigation-menu", ...rest, children: /* @__PURE__ */ jsx72(
|
|
7112
7229
|
"ul",
|
|
7113
7230
|
{
|
|
7114
7231
|
className: clsx66(
|
|
@@ -7124,8 +7241,8 @@ var NavigationMenu = forwardRef23(
|
|
|
7124
7241
|
var NavigationMenuItem = forwardRef23(
|
|
7125
7242
|
function NavigationMenuItem2({ children, active = false, variant = "pill", asChild = false, icon, className, ...rest }, ref) {
|
|
7126
7243
|
const content = /* @__PURE__ */ jsxs44(Fragment9, { children: [
|
|
7127
|
-
icon && /* @__PURE__ */
|
|
7128
|
-
/* @__PURE__ */
|
|
7244
|
+
icon && /* @__PURE__ */ jsx72("span", { "aria-hidden": true, className: "shrink-0 [&_svg]:size-4", children: icon }),
|
|
7245
|
+
/* @__PURE__ */ jsx72("span", { className: "min-w-0 truncate", children })
|
|
7129
7246
|
] });
|
|
7130
7247
|
const linkProps = {
|
|
7131
7248
|
"aria-current": active ? "page" : void 0,
|
|
@@ -7143,18 +7260,18 @@ var NavigationMenuItem = forwardRef23(
|
|
|
7143
7260
|
),
|
|
7144
7261
|
...rest
|
|
7145
7262
|
};
|
|
7146
|
-
return /* @__PURE__ */
|
|
7263
|
+
return /* @__PURE__ */ jsx72("li", { children: asChild ? /* @__PURE__ */ jsx72(Slot, { wrapChildren: () => content, ...linkProps, children }) : /* @__PURE__ */ jsx72("a", { ref, ...linkProps, children: content }) });
|
|
7147
7264
|
}
|
|
7148
7265
|
);
|
|
7149
7266
|
|
|
7150
7267
|
// src/components/chrome/typography.tsx
|
|
7151
7268
|
import { forwardRef as forwardRef24 } from "react";
|
|
7152
7269
|
import clsx67 from "clsx";
|
|
7153
|
-
import { jsx as
|
|
7270
|
+
import { jsx as jsx73 } from "react/jsx-runtime";
|
|
7154
7271
|
function textComponent(displayName, defaultElement, classes) {
|
|
7155
7272
|
const Component = forwardRef24(function TextComponent({ children, asChild = false, className, ...rest }, ref) {
|
|
7156
7273
|
const Root = asChild ? Slot : defaultElement;
|
|
7157
|
-
return /* @__PURE__ */
|
|
7274
|
+
return /* @__PURE__ */ jsx73(Root, { ref, className: clsx67(classes, className), ...rest, children });
|
|
7158
7275
|
});
|
|
7159
7276
|
Component.displayName = displayName;
|
|
7160
7277
|
return Component;
|
|
@@ -7176,7 +7293,7 @@ var Heading = textComponent("Heading", "h2", "text-heading font-semibold text-de
|
|
|
7176
7293
|
var Subheading = textComponent("Subheading", "h3", "text-subheading text-default");
|
|
7177
7294
|
var TextLink = forwardRef24(function TextLink2({ children, asChild = false, className, ...rest }, ref) {
|
|
7178
7295
|
const Root = asChild ? Slot : "a";
|
|
7179
|
-
return /* @__PURE__ */
|
|
7296
|
+
return /* @__PURE__ */ jsx73(
|
|
7180
7297
|
Root,
|
|
7181
7298
|
{
|
|
7182
7299
|
ref,
|
|
@@ -7198,7 +7315,7 @@ var LIST_MARKER = {
|
|
|
7198
7315
|
};
|
|
7199
7316
|
var TextList = forwardRef24(function TextList2({ children, variant = "bulleted", density = "default", className, ...rest }, ref) {
|
|
7200
7317
|
const Root = variant === "numbered" ? "ol" : "ul";
|
|
7201
|
-
return /* @__PURE__ */
|
|
7318
|
+
return /* @__PURE__ */ jsx73(
|
|
7202
7319
|
Root,
|
|
7203
7320
|
{
|
|
7204
7321
|
ref,
|
|
@@ -7214,7 +7331,7 @@ var TextList = forwardRef24(function TextList2({ children, variant = "bulleted",
|
|
|
7214
7331
|
);
|
|
7215
7332
|
});
|
|
7216
7333
|
var TextListItem = forwardRef24(function TextListItem2({ children, className, ...rest }, ref) {
|
|
7217
|
-
return /* @__PURE__ */
|
|
7334
|
+
return /* @__PURE__ */ jsx73("li", { ref, className: clsx67("text-body text-default", className), ...rest, children });
|
|
7218
7335
|
});
|
|
7219
7336
|
|
|
7220
7337
|
// src/components/widgets/widget-header.tsx
|
|
@@ -7222,7 +7339,7 @@ import clsx69 from "clsx";
|
|
|
7222
7339
|
|
|
7223
7340
|
// src/components/widgets/widget-title.tsx
|
|
7224
7341
|
import clsx68 from "clsx";
|
|
7225
|
-
import { jsx as
|
|
7342
|
+
import { jsx as jsx74 } from "react/jsx-runtime";
|
|
7226
7343
|
var sizeStyles5 = {
|
|
7227
7344
|
sm: "text-subheading-sm font-semibold leading-none",
|
|
7228
7345
|
// Was `text-[18px]`, which had no step on the type scale (Scale 04 = 16, Scale 05 = 20).
|
|
@@ -7232,11 +7349,11 @@ var sizeStyles5 = {
|
|
|
7232
7349
|
lg: "text-subheading font-semibold leading-[1.2]"
|
|
7233
7350
|
};
|
|
7234
7351
|
function WidgetTitle({ children, size: size2 = "sm", className }) {
|
|
7235
|
-
return /* @__PURE__ */
|
|
7352
|
+
return /* @__PURE__ */ jsx74("h3", { className: clsx68(sizeStyles5[size2], "text-default", className), children });
|
|
7236
7353
|
}
|
|
7237
7354
|
|
|
7238
7355
|
// src/components/widgets/widget-header.tsx
|
|
7239
|
-
import { jsx as
|
|
7356
|
+
import { jsx as jsx75, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
7240
7357
|
var eyebrowStyles = {
|
|
7241
7358
|
uppercase: "text-body-tiny font-medium uppercase tracking-[0.66px] text-default-secondary",
|
|
7242
7359
|
plain: "text-body-xs leading-[1.4] text-default-secondary"
|
|
@@ -7253,9 +7370,9 @@ function WidgetHeader({
|
|
|
7253
7370
|
}) {
|
|
7254
7371
|
return /* @__PURE__ */ jsxs45("div", { className: clsx69("flex items-start justify-between gap-2", className), children: [
|
|
7255
7372
|
/* @__PURE__ */ jsxs45("div", { className: "min-w-0 flex-1", children: [
|
|
7256
|
-
eyebrow && /* @__PURE__ */
|
|
7257
|
-
/* @__PURE__ */
|
|
7258
|
-
subtitle && /* @__PURE__ */
|
|
7373
|
+
eyebrow && /* @__PURE__ */ jsx75("p", { className: eyebrowStyles[eyebrowVariant], children: eyebrow }),
|
|
7374
|
+
/* @__PURE__ */ jsx75(WidgetTitle, { size: titleSize, children: title }),
|
|
7375
|
+
subtitle && /* @__PURE__ */ jsx75("p", { className: "mt-1 text-body-xs text-default-secondary leading-snug", children: subtitle })
|
|
7259
7376
|
] }),
|
|
7260
7377
|
/* @__PURE__ */ jsxs45("div", { className: "flex shrink-0 items-center gap-2", children: [
|
|
7261
7378
|
badge,
|
|
@@ -7266,23 +7383,23 @@ function WidgetHeader({
|
|
|
7266
7383
|
|
|
7267
7384
|
// src/components/widgets/widget-footer.tsx
|
|
7268
7385
|
import clsx70 from "clsx";
|
|
7269
|
-
import { jsx as
|
|
7386
|
+
import { jsx as jsx76, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
7270
7387
|
function WidgetFooter({ caption, subcaption, action, className }) {
|
|
7271
7388
|
return /* @__PURE__ */ jsxs46("div", { className: clsx70("flex items-center gap-3", className), children: [
|
|
7272
7389
|
caption && /* @__PURE__ */ jsxs46("div", { className: "flex items-stretch gap-3 flex-1 min-w-0", children: [
|
|
7273
|
-
/* @__PURE__ */
|
|
7390
|
+
/* @__PURE__ */ jsx76("div", { className: "w-0.5 shrink-0 self-stretch rounded-full bg-brand" }),
|
|
7274
7391
|
/* @__PURE__ */ jsxs46("div", { className: "min-w-0", children: [
|
|
7275
|
-
/* @__PURE__ */
|
|
7276
|
-
subcaption && /* @__PURE__ */
|
|
7392
|
+
/* @__PURE__ */ jsx76("p", { className: "text-body-sm font-medium text-default leading-snug", children: caption }),
|
|
7393
|
+
subcaption && /* @__PURE__ */ jsx76("p", { className: "mt-0.5 text-body-xs text-default-secondary", children: subcaption })
|
|
7277
7394
|
] })
|
|
7278
7395
|
] }),
|
|
7279
|
-
action && /* @__PURE__ */
|
|
7396
|
+
action && /* @__PURE__ */ jsx76("div", { className: "ml-auto shrink-0", children: action })
|
|
7280
7397
|
] });
|
|
7281
7398
|
}
|
|
7282
7399
|
|
|
7283
7400
|
// src/components/stats/stat-tile.tsx
|
|
7284
7401
|
import clsx71 from "clsx";
|
|
7285
|
-
import { jsx as
|
|
7402
|
+
import { jsx as jsx77, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
7286
7403
|
var DOT_TONE = {
|
|
7287
7404
|
neutral: "bg-status-dot-neutral",
|
|
7288
7405
|
info: "bg-status-dot-info",
|
|
@@ -7303,16 +7420,16 @@ function StatTile({ label, value, tone, dotColor, className }) {
|
|
|
7303
7420
|
),
|
|
7304
7421
|
children: [
|
|
7305
7422
|
/* @__PURE__ */ jsxs47("div", { className: "flex items-center gap-1.5", children: [
|
|
7306
|
-
showDot && /* @__PURE__ */
|
|
7423
|
+
showDot && /* @__PURE__ */ jsx77(
|
|
7307
7424
|
"span",
|
|
7308
7425
|
{
|
|
7309
7426
|
className: clsx71("size-2 shrink-0 rounded-full", tone && DOT_TONE[tone]),
|
|
7310
7427
|
style: tone ? void 0 : { backgroundColor: dotColor }
|
|
7311
7428
|
}
|
|
7312
7429
|
),
|
|
7313
|
-
/* @__PURE__ */
|
|
7430
|
+
/* @__PURE__ */ jsx77("span", { className: "text-body-xs font-medium text-default-secondary whitespace-nowrap", children: label })
|
|
7314
7431
|
] }),
|
|
7315
|
-
/* @__PURE__ */
|
|
7432
|
+
/* @__PURE__ */ jsx77("span", { className: "text-heading font-semibold text-default leading-none", children: value })
|
|
7316
7433
|
]
|
|
7317
7434
|
}
|
|
7318
7435
|
);
|
|
@@ -7320,7 +7437,7 @@ function StatTile({ label, value, tone, dotColor, className }) {
|
|
|
7320
7437
|
|
|
7321
7438
|
// src/components/stats/stat-number.tsx
|
|
7322
7439
|
import clsx72 from "clsx";
|
|
7323
|
-
import { jsx as
|
|
7440
|
+
import { jsx as jsx78, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
7324
7441
|
var sizeStyles6 = {
|
|
7325
7442
|
sm: "text-subtitle",
|
|
7326
7443
|
md: "text-subtitle-lg",
|
|
@@ -7338,7 +7455,7 @@ function StatNumber({ value, unit, size: size2 = "md", weight = "bold", color, c
|
|
|
7338
7455
|
style: color ? { color } : void 0,
|
|
7339
7456
|
children: [
|
|
7340
7457
|
value,
|
|
7341
|
-
unit && /* @__PURE__ */
|
|
7458
|
+
unit && /* @__PURE__ */ jsx78("span", { className: "ml-1 text-subheading font-medium text-default-secondary", children: unit })
|
|
7342
7459
|
]
|
|
7343
7460
|
}
|
|
7344
7461
|
);
|
|
@@ -7346,7 +7463,7 @@ function StatNumber({ value, unit, size: size2 = "md", weight = "bold", color, c
|
|
|
7346
7463
|
|
|
7347
7464
|
// src/components/stats/score-value.tsx
|
|
7348
7465
|
import clsx73 from "clsx";
|
|
7349
|
-
import { jsx as
|
|
7466
|
+
import { jsx as jsx79, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
7350
7467
|
var DEFAULT_SCORE_THRESHOLDS = { danger: 80, warning: 65, neutral: 50 };
|
|
7351
7468
|
function getScoreTone(score, {
|
|
7352
7469
|
direction = "higher-is-worse",
|
|
@@ -7391,14 +7508,14 @@ function ScoreValue({
|
|
|
7391
7508
|
const numeric = typeof value === "number" ? value : Number(value);
|
|
7392
7509
|
const resolved = tone === "auto" ? Number.isFinite(numeric) ? getScoreTone(numeric, { direction, thresholds }) : "default" : tone;
|
|
7393
7510
|
return /* @__PURE__ */ jsxs49("span", { className: clsx73("inline-flex items-baseline gap-1", className), children: [
|
|
7394
|
-
/* @__PURE__ */
|
|
7395
|
-
label && /* @__PURE__ */
|
|
7511
|
+
/* @__PURE__ */ jsx79("span", { className: clsx73(SIZE12[size2], WEIGHT[weight], TONE2[resolved]), children: value }),
|
|
7512
|
+
label && /* @__PURE__ */ jsx79("span", { className: "text-body-xs text-default-secondary whitespace-nowrap", children: label })
|
|
7396
7513
|
] });
|
|
7397
7514
|
}
|
|
7398
7515
|
|
|
7399
7516
|
// src/components/stats/tile-grid.tsx
|
|
7400
7517
|
import clsx74 from "clsx";
|
|
7401
|
-
import { jsx as
|
|
7518
|
+
import { jsx as jsx80 } from "react/jsx-runtime";
|
|
7402
7519
|
var COLUMNS = {
|
|
7403
7520
|
sm: {
|
|
7404
7521
|
2: "grid-cols-2",
|
|
@@ -7428,7 +7545,7 @@ function TileGrid({
|
|
|
7428
7545
|
at = "lg",
|
|
7429
7546
|
className
|
|
7430
7547
|
}) {
|
|
7431
|
-
return /* @__PURE__ */
|
|
7548
|
+
return /* @__PURE__ */ jsx80("div", { className: clsx74("grid gap-3", COLUMNS[at][columns], className), children });
|
|
7432
7549
|
}
|
|
7433
7550
|
|
|
7434
7551
|
// src/components/charts/chart-tone.ts
|
|
@@ -7450,7 +7567,7 @@ function resolveChartColor(color, tone, index = 0) {
|
|
|
7450
7567
|
|
|
7451
7568
|
// src/components/charts/bar-chart.tsx
|
|
7452
7569
|
import clsx75 from "clsx";
|
|
7453
|
-
import { jsx as
|
|
7570
|
+
import { jsx as jsx81, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
7454
7571
|
var SIZE13 = {
|
|
7455
7572
|
sm: { band: 14, gap: 6, label: "text-body-tiny" },
|
|
7456
7573
|
md: { band: 20, gap: 8, label: "text-body-xs" },
|
|
@@ -7477,7 +7594,7 @@ function BarChart({
|
|
|
7477
7594
|
);
|
|
7478
7595
|
const max = Math.max(...categoryTotals, 1);
|
|
7479
7596
|
const horizontal = orientation === "horizontal";
|
|
7480
|
-
return /* @__PURE__ */
|
|
7597
|
+
return /* @__PURE__ */ jsx81(
|
|
7481
7598
|
"div",
|
|
7482
7599
|
{
|
|
7483
7600
|
className: clsx75("flex w-full min-w-0", horizontal ? "flex-col gap-2" : "flex-row items-end gap-3", className),
|
|
@@ -7496,14 +7613,14 @@ function BarChart({
|
|
|
7496
7613
|
className: clsx75("flex min-w-0", horizontal ? "flex-col gap-1" : "h-full flex-col justify-end gap-1.5"),
|
|
7497
7614
|
style: horizontal ? void 0 : { width: perCategory },
|
|
7498
7615
|
children: [
|
|
7499
|
-
showLabels && horizontal && /* @__PURE__ */
|
|
7616
|
+
showLabels && horizontal && /* @__PURE__ */ jsx81("span", { className: clsx75("truncate text-default-secondary", labelClass2), children: category }),
|
|
7500
7617
|
/* @__PURE__ */ jsxs50(
|
|
7501
7618
|
"div",
|
|
7502
7619
|
{
|
|
7503
7620
|
className: clsx75("flex", horizontal ? "items-center gap-2" : "w-full flex-1 items-end justify-center"),
|
|
7504
7621
|
style: horizontal ? void 0 : { height: length },
|
|
7505
7622
|
children: [
|
|
7506
|
-
/* @__PURE__ */
|
|
7623
|
+
/* @__PURE__ */ jsx81(
|
|
7507
7624
|
"div",
|
|
7508
7625
|
{
|
|
7509
7626
|
className: clsx75("flex min-w-0", stacked ? "gap-0" : ""),
|
|
@@ -7516,7 +7633,7 @@ function BarChart({
|
|
|
7516
7633
|
},
|
|
7517
7634
|
children: bars.map((bar) => {
|
|
7518
7635
|
const extent = `${bar.value / max * 100}%`;
|
|
7519
|
-
return /* @__PURE__ */
|
|
7636
|
+
return /* @__PURE__ */ jsx81(
|
|
7520
7637
|
"div",
|
|
7521
7638
|
{
|
|
7522
7639
|
title: `${category} \xB7 ${bar.key}: ${bar.value}`,
|
|
@@ -7532,11 +7649,11 @@ function BarChart({
|
|
|
7532
7649
|
})
|
|
7533
7650
|
}
|
|
7534
7651
|
),
|
|
7535
|
-
showValues && horizontal && /* @__PURE__ */
|
|
7652
|
+
showValues && horizontal && /* @__PURE__ */ jsx81("span", { className: clsx75("shrink-0 tabular-nums text-default-secondary", labelClass2), children: categoryTotals[ci] })
|
|
7536
7653
|
]
|
|
7537
7654
|
}
|
|
7538
7655
|
),
|
|
7539
|
-
showLabels && !horizontal && /* @__PURE__ */
|
|
7656
|
+
showLabels && !horizontal && /* @__PURE__ */ jsx81("span", { className: clsx75("truncate text-center text-default-secondary", labelClass2), children: category })
|
|
7540
7657
|
]
|
|
7541
7658
|
},
|
|
7542
7659
|
category
|
|
@@ -7548,7 +7665,7 @@ function BarChart({
|
|
|
7548
7665
|
|
|
7549
7666
|
// src/components/charts/donut-chart.tsx
|
|
7550
7667
|
import clsx76 from "clsx";
|
|
7551
|
-
import { jsx as
|
|
7668
|
+
import { jsx as jsx82, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
7552
7669
|
var SIZE14 = {
|
|
7553
7670
|
sm: { box: 88, thickness: 10 },
|
|
7554
7671
|
md: { box: 128, thickness: 14 },
|
|
@@ -7584,7 +7701,7 @@ function DonutChart({
|
|
|
7584
7701
|
"aria-hidden": label ? void 0 : true,
|
|
7585
7702
|
className: "block -rotate-90",
|
|
7586
7703
|
children: [
|
|
7587
|
-
/* @__PURE__ */
|
|
7704
|
+
/* @__PURE__ */ jsx82("circle", { cx: box / 2, cy: box / 2, r: radius, fill: "none", stroke: CHART_TRACK, strokeWidth: ring }),
|
|
7588
7705
|
total > 0 && segments.map((segment, i) => {
|
|
7589
7706
|
const fraction = Math.max(0, segment.value) / total;
|
|
7590
7707
|
const length = Math.max(0, fraction * circumference - gapLength);
|
|
@@ -7592,7 +7709,7 @@ function DonutChart({
|
|
|
7592
7709
|
const thisOffset = offset2;
|
|
7593
7710
|
offset2 += fraction * circumference;
|
|
7594
7711
|
if (segment.value <= 0) return null;
|
|
7595
|
-
return /* @__PURE__ */
|
|
7712
|
+
return /* @__PURE__ */ jsx82(
|
|
7596
7713
|
"circle",
|
|
7597
7714
|
{
|
|
7598
7715
|
cx: box / 2,
|
|
@@ -7612,15 +7729,15 @@ function DonutChart({
|
|
|
7612
7729
|
}
|
|
7613
7730
|
),
|
|
7614
7731
|
(centerValue != null || centerLabel != null) && /* @__PURE__ */ jsxs51("div", { className: "absolute inset-0 flex flex-col items-center justify-center text-center", children: [
|
|
7615
|
-
centerValue != null && /* @__PURE__ */
|
|
7616
|
-
centerLabel != null && /* @__PURE__ */
|
|
7732
|
+
centerValue != null && /* @__PURE__ */ jsx82("span", { className: "text-subheading-sm font-bold leading-none text-default", children: centerValue }),
|
|
7733
|
+
centerLabel != null && /* @__PURE__ */ jsx82("span", { className: "mt-0.5 text-body-tiny text-default-secondary", children: centerLabel })
|
|
7617
7734
|
] })
|
|
7618
7735
|
] });
|
|
7619
7736
|
}
|
|
7620
7737
|
|
|
7621
7738
|
// src/components/charts/radial-gauge.tsx
|
|
7622
7739
|
import clsx77 from "clsx";
|
|
7623
|
-
import { jsx as
|
|
7740
|
+
import { jsx as jsx83, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
7624
7741
|
var SIZE15 = {
|
|
7625
7742
|
sm: { box: 72, thickness: 8, value: "text-body-sm" },
|
|
7626
7743
|
md: { box: 104, thickness: 11, value: "text-subheading-sm" },
|
|
@@ -7662,7 +7779,7 @@ function RadialGauge({
|
|
|
7662
7779
|
className: "block",
|
|
7663
7780
|
style: { transform: `rotate(${rotation}deg)` },
|
|
7664
7781
|
children: [
|
|
7665
|
-
/* @__PURE__ */
|
|
7782
|
+
/* @__PURE__ */ jsx83(
|
|
7666
7783
|
"circle",
|
|
7667
7784
|
{
|
|
7668
7785
|
cx: box / 2,
|
|
@@ -7675,7 +7792,7 @@ function RadialGauge({
|
|
|
7675
7792
|
strokeLinecap: "round"
|
|
7676
7793
|
}
|
|
7677
7794
|
),
|
|
7678
|
-
/* @__PURE__ */
|
|
7795
|
+
/* @__PURE__ */ jsx83(
|
|
7679
7796
|
"circle",
|
|
7680
7797
|
{
|
|
7681
7798
|
cx: box / 2,
|
|
@@ -7693,8 +7810,8 @@ function RadialGauge({
|
|
|
7693
7810
|
}
|
|
7694
7811
|
),
|
|
7695
7812
|
/* @__PURE__ */ jsxs52("div", { className: "absolute inset-0 flex flex-col items-center justify-center text-center", children: [
|
|
7696
|
-
children === void 0 ? /* @__PURE__ */
|
|
7697
|
-
centerLabel != null && /* @__PURE__ */
|
|
7813
|
+
children === void 0 ? /* @__PURE__ */ jsx83("span", { className: clsx77("font-bold leading-none text-default", preset.value), children: value }) : children,
|
|
7814
|
+
centerLabel != null && /* @__PURE__ */ jsx83("span", { className: "mt-0.5 text-body-tiny text-default-secondary", children: centerLabel })
|
|
7698
7815
|
] })
|
|
7699
7816
|
] });
|
|
7700
7817
|
}
|
|
@@ -7702,7 +7819,7 @@ function RadialGauge({
|
|
|
7702
7819
|
// src/components/charts/sparkline.tsx
|
|
7703
7820
|
import { useId as useId22 } from "react";
|
|
7704
7821
|
import clsx78 from "clsx";
|
|
7705
|
-
import { Fragment as Fragment10, jsx as
|
|
7822
|
+
import { Fragment as Fragment10, jsx as jsx84, jsxs as jsxs53 } from "react/jsx-runtime";
|
|
7706
7823
|
var SIZE16 = {
|
|
7707
7824
|
sm: { width: 80, height: 24 },
|
|
7708
7825
|
md: { width: 120, height: 36 },
|
|
@@ -7754,13 +7871,13 @@ function Sparkline({
|
|
|
7754
7871
|
className: clsx78("block", stretch ? "h-full w-full" : "shrink-0", className),
|
|
7755
7872
|
children: [
|
|
7756
7873
|
variant === "area" && /* @__PURE__ */ jsxs53(Fragment10, { children: [
|
|
7757
|
-
/* @__PURE__ */
|
|
7758
|
-
/* @__PURE__ */
|
|
7759
|
-
/* @__PURE__ */
|
|
7874
|
+
/* @__PURE__ */ jsx84("defs", { children: /* @__PURE__ */ jsxs53("linearGradient", { id: gradientId, x1: "0", y1: "0", x2: "0", y2: "1", children: [
|
|
7875
|
+
/* @__PURE__ */ jsx84("stop", { offset: "0%", stopColor: stroke, stopOpacity: 0.24 }),
|
|
7876
|
+
/* @__PURE__ */ jsx84("stop", { offset: "100%", stopColor: stroke, stopOpacity: 0 })
|
|
7760
7877
|
] }) }),
|
|
7761
|
-
/* @__PURE__ */
|
|
7878
|
+
/* @__PURE__ */ jsx84("path", { d: areaPath, fill: `url(#${gradientId})` })
|
|
7762
7879
|
] }),
|
|
7763
|
-
/* @__PURE__ */
|
|
7880
|
+
/* @__PURE__ */ jsx84(
|
|
7764
7881
|
"polyline",
|
|
7765
7882
|
{
|
|
7766
7883
|
points,
|
|
@@ -7772,7 +7889,7 @@ function Sparkline({
|
|
|
7772
7889
|
fill: "none"
|
|
7773
7890
|
}
|
|
7774
7891
|
),
|
|
7775
|
-
showEndDot && /* @__PURE__ */
|
|
7892
|
+
showEndDot && /* @__PURE__ */ jsx84(
|
|
7776
7893
|
"circle",
|
|
7777
7894
|
{
|
|
7778
7895
|
cx: last.x,
|
|
@@ -7790,7 +7907,7 @@ function Sparkline({
|
|
|
7790
7907
|
|
|
7791
7908
|
// src/components/charts/mini-bar-chart.tsx
|
|
7792
7909
|
import clsx79 from "clsx";
|
|
7793
|
-
import { jsx as
|
|
7910
|
+
import { jsx as jsx85 } from "react/jsx-runtime";
|
|
7794
7911
|
var SIZE17 = {
|
|
7795
7912
|
sm: { width: 80, height: 32, gap: 2 },
|
|
7796
7913
|
md: { width: 120, height: 48, gap: 3 },
|
|
@@ -7826,7 +7943,7 @@ function MiniBarChart({
|
|
|
7826
7943
|
const span = vertical ? w : h;
|
|
7827
7944
|
const extent = vertical ? h : w;
|
|
7828
7945
|
const barThickness = (span - g * (bars.length - 1)) / bars.length;
|
|
7829
|
-
return /* @__PURE__ */
|
|
7946
|
+
return /* @__PURE__ */ jsx85(
|
|
7830
7947
|
"svg",
|
|
7831
7948
|
{
|
|
7832
7949
|
width: stretch ? void 0 : w,
|
|
@@ -7841,7 +7958,7 @@ function MiniBarChart({
|
|
|
7841
7958
|
children: bars.map((v, i) => {
|
|
7842
7959
|
const magnitude = Math.max(2, v / max * extent);
|
|
7843
7960
|
const offset2 = i * (barThickness + g);
|
|
7844
|
-
return /* @__PURE__ */
|
|
7961
|
+
return /* @__PURE__ */ jsx85(
|
|
7845
7962
|
"rect",
|
|
7846
7963
|
{
|
|
7847
7964
|
x: (vertical ? offset2 : 0).toFixed(2),
|
|
@@ -7863,14 +7980,14 @@ import clsx81 from "clsx";
|
|
|
7863
7980
|
|
|
7864
7981
|
// src/components/charts/legend-dot.tsx
|
|
7865
7982
|
import clsx80 from "clsx";
|
|
7866
|
-
import { jsx as
|
|
7983
|
+
import { jsx as jsx86 } from "react/jsx-runtime";
|
|
7867
7984
|
var SHAPE = {
|
|
7868
7985
|
dot: { sm: "size-1.5 rounded-full", md: "size-2 rounded-full" },
|
|
7869
7986
|
square: { sm: "size-1.5 rounded-[2px]", md: "size-2 rounded-[3px]" },
|
|
7870
7987
|
line: { sm: "h-0.5 w-3 rounded-full", md: "h-0.5 w-4 rounded-full" }
|
|
7871
7988
|
};
|
|
7872
7989
|
function LegendDot({ tone, color, size: size2 = "md", shape = "dot", className }) {
|
|
7873
|
-
return /* @__PURE__ */
|
|
7990
|
+
return /* @__PURE__ */ jsx86(
|
|
7874
7991
|
"span",
|
|
7875
7992
|
{
|
|
7876
7993
|
className: clsx80("inline-block shrink-0", SHAPE[shape][size2], className),
|
|
@@ -7881,7 +7998,7 @@ function LegendDot({ tone, color, size: size2 = "md", shape = "dot", className }
|
|
|
7881
7998
|
}
|
|
7882
7999
|
|
|
7883
8000
|
// src/components/charts/chart-legend.tsx
|
|
7884
|
-
import { jsx as
|
|
8001
|
+
import { jsx as jsx87, jsxs as jsxs54 } from "react/jsx-runtime";
|
|
7885
8002
|
function ChartLegend({
|
|
7886
8003
|
items,
|
|
7887
8004
|
orientation = "vertical",
|
|
@@ -7890,7 +8007,7 @@ function ChartLegend({
|
|
|
7890
8007
|
className
|
|
7891
8008
|
}) {
|
|
7892
8009
|
const horizontal = orientation === "horizontal";
|
|
7893
|
-
return /* @__PURE__ */
|
|
8010
|
+
return /* @__PURE__ */ jsx87(
|
|
7894
8011
|
"div",
|
|
7895
8012
|
{
|
|
7896
8013
|
className: clsx81(
|
|
@@ -7903,10 +8020,10 @@ function ChartLegend({
|
|
|
7903
8020
|
className: clsx81("flex items-center gap-2", horizontal ? "min-w-0" : "justify-between"),
|
|
7904
8021
|
children: [
|
|
7905
8022
|
/* @__PURE__ */ jsxs54("div", { className: "flex min-w-0 items-center gap-2", children: [
|
|
7906
|
-
/* @__PURE__ */
|
|
7907
|
-
/* @__PURE__ */
|
|
8023
|
+
/* @__PURE__ */ jsx87(LegendDot, { color: resolveChartColor(item.color, item.tone, i), size: size2, shape }),
|
|
8024
|
+
/* @__PURE__ */ jsx87("span", { className: "truncate text-body-xs text-default-secondary", children: item.label })
|
|
7908
8025
|
] }),
|
|
7909
|
-
item.count != null && /* @__PURE__ */
|
|
8026
|
+
item.count != null && /* @__PURE__ */ jsx87("span", { className: "shrink-0 text-body-xs font-semibold tabular-nums text-default", children: item.count })
|
|
7910
8027
|
]
|
|
7911
8028
|
},
|
|
7912
8029
|
item.label
|
|
@@ -7918,7 +8035,7 @@ function ChartLegend({
|
|
|
7918
8035
|
// src/components/charts/trend-label.tsx
|
|
7919
8036
|
import clsx82 from "clsx";
|
|
7920
8037
|
import { LuTrendingDown, LuTrendingUp } from "react-icons/lu";
|
|
7921
|
-
import { jsx as
|
|
8038
|
+
import { jsx as jsx88, jsxs as jsxs55 } from "react/jsx-runtime";
|
|
7922
8039
|
var SIZE18 = {
|
|
7923
8040
|
sm: "text-body-xs",
|
|
7924
8041
|
md: "text-body-sm",
|
|
@@ -7964,7 +8081,7 @@ function TrendLabel({
|
|
|
7964
8081
|
),
|
|
7965
8082
|
style: color ? { color } : void 0,
|
|
7966
8083
|
children: [
|
|
7967
|
-
showArrow && !flat && /* @__PURE__ */
|
|
8084
|
+
showArrow && !flat && /* @__PURE__ */ jsx88(Arrow, { className: clsx82("shrink-0", ICON_SIZE[size2]), "aria-hidden": true }),
|
|
7968
8085
|
rising ? "+" : "",
|
|
7969
8086
|
value,
|
|
7970
8087
|
suffix
|
|
@@ -7975,7 +8092,7 @@ function TrendLabel({
|
|
|
7975
8092
|
|
|
7976
8093
|
// src/components/lists/list-row.tsx
|
|
7977
8094
|
import clsx83 from "clsx";
|
|
7978
|
-
import { jsx as
|
|
8095
|
+
import { jsx as jsx89, jsxs as jsxs56 } from "react/jsx-runtime";
|
|
7979
8096
|
var DENSITY = {
|
|
7980
8097
|
default: {
|
|
7981
8098
|
pad: "py-4",
|
|
@@ -8037,19 +8154,19 @@ function ListRow({
|
|
|
8037
8154
|
hasTitleLine && /* @__PURE__ */ jsxs56("div", { className: "flex items-center justify-between gap-2", children: [
|
|
8038
8155
|
/* @__PURE__ */ jsxs56("div", { className: "flex min-w-0 items-center gap-2", children: [
|
|
8039
8156
|
leading,
|
|
8040
|
-
title != null && /* @__PURE__ */
|
|
8041
|
-
titleMeta && /* @__PURE__ */
|
|
8157
|
+
title != null && /* @__PURE__ */ jsx89("span", { className: clsx83("truncate", d.title), children: title }),
|
|
8158
|
+
titleMeta && /* @__PURE__ */ jsx89("span", { className: "shrink-0", children: titleMeta })
|
|
8042
8159
|
] }),
|
|
8043
|
-
meta && /* @__PURE__ */
|
|
8160
|
+
meta && /* @__PURE__ */ jsx89("span", { className: "shrink-0", children: meta })
|
|
8044
8161
|
] }),
|
|
8045
|
-
description && /* @__PURE__ */
|
|
8162
|
+
description && /* @__PURE__ */ jsx89("p", { className: d.description, children: description }),
|
|
8046
8163
|
footer && // These two wrappers are propagation barriers, not controls — they add no
|
|
8047
8164
|
// behaviour of their own and must not be focusable or take a role.
|
|
8048
8165
|
// eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
8049
|
-
/* @__PURE__ */
|
|
8166
|
+
/* @__PURE__ */ jsx89("div", { onClick: stopIfInteractive, onKeyDown: stopIfInteractive, children: footer })
|
|
8050
8167
|
] }),
|
|
8051
8168
|
trailing && // eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
8052
|
-
/* @__PURE__ */
|
|
8169
|
+
/* @__PURE__ */ jsx89(
|
|
8053
8170
|
"div",
|
|
8054
8171
|
{
|
|
8055
8172
|
className: "ml-3 flex shrink-0 items-center self-center",
|
|
@@ -8068,9 +8185,9 @@ function stopIfInteractive(event) {
|
|
|
8068
8185
|
|
|
8069
8186
|
// src/components/lists/file-row.tsx
|
|
8070
8187
|
import clsx84 from "clsx";
|
|
8071
|
-
import { jsx as
|
|
8188
|
+
import { jsx as jsx90, jsxs as jsxs57 } from "react/jsx-runtime";
|
|
8072
8189
|
function FileTypeBadge({ type }) {
|
|
8073
|
-
return /* @__PURE__ */
|
|
8190
|
+
return /* @__PURE__ */ jsx90("span", { className: "flex size-[34px] shrink-0 items-center justify-center rounded-md bg-brand-tertiary text-body-tiny font-semibold text-brand", children: type });
|
|
8074
8191
|
}
|
|
8075
8192
|
function FileRow({
|
|
8076
8193
|
name,
|
|
@@ -8082,7 +8199,7 @@ function FileRow({
|
|
|
8082
8199
|
actions,
|
|
8083
8200
|
className
|
|
8084
8201
|
}) {
|
|
8085
|
-
const lead = leading ?? (fileType ? /* @__PURE__ */
|
|
8202
|
+
const lead = leading ?? (fileType ? /* @__PURE__ */ jsx90(FileTypeBadge, { type: fileType }) : null);
|
|
8086
8203
|
return /* @__PURE__ */ jsxs57(
|
|
8087
8204
|
"div",
|
|
8088
8205
|
{
|
|
@@ -8093,11 +8210,11 @@ function FileRow({
|
|
|
8093
8210
|
children: [
|
|
8094
8211
|
lead,
|
|
8095
8212
|
/* @__PURE__ */ jsxs57("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [
|
|
8096
|
-
/* @__PURE__ */
|
|
8097
|
-
detail && /* @__PURE__ */
|
|
8213
|
+
/* @__PURE__ */ jsx90("span", { className: "truncate text-body-sm font-medium text-default", children: name }),
|
|
8214
|
+
detail && /* @__PURE__ */ jsx90("span", { className: "text-body-xs text-default-secondary", children: detail })
|
|
8098
8215
|
] }),
|
|
8099
8216
|
(onDownload || actions) && /* @__PURE__ */ jsxs57("div", { className: "flex shrink-0 items-center gap-3", children: [
|
|
8100
|
-
onDownload && /* @__PURE__ */
|
|
8217
|
+
onDownload && /* @__PURE__ */ jsx90(
|
|
8101
8218
|
"button",
|
|
8102
8219
|
{
|
|
8103
8220
|
type: "button",
|
|
@@ -8115,7 +8232,7 @@ function FileRow({
|
|
|
8115
8232
|
|
|
8116
8233
|
// src/components/lists/scored-row.tsx
|
|
8117
8234
|
import clsx85 from "clsx";
|
|
8118
|
-
import { jsx as
|
|
8235
|
+
import { jsx as jsx91, jsxs as jsxs58 } from "react/jsx-runtime";
|
|
8119
8236
|
var GAP4 = {
|
|
8120
8237
|
sm: "gap-2",
|
|
8121
8238
|
md: "gap-3",
|
|
@@ -8156,13 +8273,13 @@ function ScoredRow({
|
|
|
8156
8273
|
children: [
|
|
8157
8274
|
leading,
|
|
8158
8275
|
/* @__PURE__ */ jsxs58("div", { className: "min-w-0 flex-1", children: [
|
|
8159
|
-
/* @__PURE__ */
|
|
8160
|
-
subtitle && /* @__PURE__ */
|
|
8276
|
+
/* @__PURE__ */ jsx91("p", { className: "truncate text-body-sm font-medium leading-none text-default", children: title }),
|
|
8277
|
+
subtitle && /* @__PURE__ */ jsx91("p", { className: "mt-0.5 truncate text-body-xs text-default-secondary", children: subtitle })
|
|
8161
8278
|
] })
|
|
8162
8279
|
]
|
|
8163
8280
|
}
|
|
8164
8281
|
),
|
|
8165
|
-
aside && /* @__PURE__ */
|
|
8282
|
+
aside && /* @__PURE__ */ jsx91(
|
|
8166
8283
|
"div",
|
|
8167
8284
|
{
|
|
8168
8285
|
className: clsx85("min-w-0", asideWidth ? "shrink-0" : "flex-1"),
|
|
@@ -8170,7 +8287,7 @@ function ScoredRow({
|
|
|
8170
8287
|
children: aside
|
|
8171
8288
|
}
|
|
8172
8289
|
),
|
|
8173
|
-
meter && /* @__PURE__ */
|
|
8290
|
+
meter && /* @__PURE__ */ jsx91(
|
|
8174
8291
|
"div",
|
|
8175
8292
|
{
|
|
8176
8293
|
className: clsx85("min-w-0", meterWidth ? "shrink-0" : "flex-1"),
|
|
@@ -8178,7 +8295,7 @@ function ScoredRow({
|
|
|
8178
8295
|
children: meter
|
|
8179
8296
|
}
|
|
8180
8297
|
),
|
|
8181
|
-
trailing && /* @__PURE__ */
|
|
8298
|
+
trailing && /* @__PURE__ */ jsx91("div", { className: "shrink-0 text-right", style: trailingWidth ? { width: trailingWidth } : void 0, children: trailing })
|
|
8182
8299
|
] });
|
|
8183
8300
|
}
|
|
8184
8301
|
|
|
@@ -8187,7 +8304,7 @@ import clsx86 from "clsx";
|
|
|
8187
8304
|
|
|
8188
8305
|
// src/components/feedback/progress-bar.tsx
|
|
8189
8306
|
import { useId as useId23 } from "react";
|
|
8190
|
-
import { jsx as
|
|
8307
|
+
import { jsx as jsx92, jsxs as jsxs59 } from "react/jsx-runtime";
|
|
8191
8308
|
var SIZE19 = {
|
|
8192
8309
|
xs: "h-1",
|
|
8193
8310
|
sm: "h-1.5",
|
|
@@ -8214,7 +8331,7 @@ function ProgressBar({
|
|
|
8214
8331
|
const clamped = Math.min(100, Math.max(0, value));
|
|
8215
8332
|
const rounded = radius ? void 0 : "rounded-full";
|
|
8216
8333
|
const labelId = useId23();
|
|
8217
|
-
const track = /* @__PURE__ */
|
|
8334
|
+
const track = /* @__PURE__ */ jsx92(
|
|
8218
8335
|
"div",
|
|
8219
8336
|
{
|
|
8220
8337
|
role: "progressbar",
|
|
@@ -8225,7 +8342,7 @@ function ProgressBar({
|
|
|
8225
8342
|
"aria-label": label ? void 0 : ariaLabel,
|
|
8226
8343
|
className: cn("w-full overflow-hidden bg-default-tertiary", SIZE19[size2], rounded, className),
|
|
8227
8344
|
style: radius ? { borderRadius: radius } : void 0,
|
|
8228
|
-
children: /* @__PURE__ */
|
|
8345
|
+
children: /* @__PURE__ */ jsx92(
|
|
8229
8346
|
"div",
|
|
8230
8347
|
{
|
|
8231
8348
|
className: cn("h-full transition-all", rounded, FILL[tone]),
|
|
@@ -8237,7 +8354,7 @@ function ProgressBar({
|
|
|
8237
8354
|
if (!label && !showValue) return track;
|
|
8238
8355
|
return /* @__PURE__ */ jsxs59("div", { children: [
|
|
8239
8356
|
/* @__PURE__ */ jsxs59("div", { className: "mb-1.5 flex items-center justify-between gap-2", children: [
|
|
8240
|
-
label && /* @__PURE__ */
|
|
8357
|
+
label && /* @__PURE__ */ jsx92("span", { id: labelId, className: "text-body-xs text-default-secondary", children: label }),
|
|
8241
8358
|
showValue && /* @__PURE__ */ jsxs59("span", { className: "ml-auto text-body-xs font-medium tabular-nums text-default", children: [
|
|
8242
8359
|
Math.round(clamped),
|
|
8243
8360
|
"%"
|
|
@@ -8248,7 +8365,7 @@ function ProgressBar({
|
|
|
8248
8365
|
}
|
|
8249
8366
|
|
|
8250
8367
|
// src/components/lists/numbered-list.tsx
|
|
8251
|
-
import { jsx as
|
|
8368
|
+
import { jsx as jsx93, jsxs as jsxs60 } from "react/jsx-runtime";
|
|
8252
8369
|
var GAP5 = {
|
|
8253
8370
|
sm: "gap-2",
|
|
8254
8371
|
md: "gap-3"
|
|
@@ -8262,18 +8379,18 @@ function NumberedList({
|
|
|
8262
8379
|
gap = "md",
|
|
8263
8380
|
className
|
|
8264
8381
|
}) {
|
|
8265
|
-
return /* @__PURE__ */
|
|
8382
|
+
return /* @__PURE__ */ jsx93("ol", { className: clsx86("flex list-none flex-col p-0", GAP5[gap], className), children: items.map((item, index) => {
|
|
8266
8383
|
const tone = !item.tone || item.tone === "auto" ? getScoreTone(item.score, { direction }) : item.tone;
|
|
8267
8384
|
return /* @__PURE__ */ jsxs60("li", { className: "flex w-full shrink-0 flex-col gap-1.5", children: [
|
|
8268
8385
|
/* @__PURE__ */ jsxs60("div", { className: "flex w-full items-center justify-between", children: [
|
|
8269
8386
|
/* @__PURE__ */ jsxs60("div", { className: "flex min-w-0 items-center gap-2.5", children: [
|
|
8270
|
-
/* @__PURE__ */
|
|
8387
|
+
/* @__PURE__ */ jsx93("span", { className: "w-[14px] shrink-0 text-body-xs font-bold text-default-secondary", children: startAt + index }),
|
|
8271
8388
|
/* @__PURE__ */ jsxs60("div", { className: "flex min-w-0 flex-col gap-px", children: [
|
|
8272
|
-
/* @__PURE__ */
|
|
8273
|
-
item.subtitle && /* @__PURE__ */
|
|
8389
|
+
/* @__PURE__ */ jsx93("span", { className: "truncate text-body-sm font-medium leading-none text-default", children: item.title }),
|
|
8390
|
+
item.subtitle && /* @__PURE__ */ jsx93("span", { className: "text-body-tiny text-default-tertiary", children: item.subtitle })
|
|
8274
8391
|
] })
|
|
8275
8392
|
] }),
|
|
8276
|
-
/* @__PURE__ */
|
|
8393
|
+
/* @__PURE__ */ jsx93(
|
|
8277
8394
|
ScoreValue,
|
|
8278
8395
|
{
|
|
8279
8396
|
value: item.score,
|
|
@@ -8284,20 +8401,20 @@ function NumberedList({
|
|
|
8284
8401
|
}
|
|
8285
8402
|
)
|
|
8286
8403
|
] }),
|
|
8287
|
-
/* @__PURE__ */
|
|
8404
|
+
/* @__PURE__ */ jsx93(ProgressBar, { value: item.score, tone, "aria-label": `${item.title} score` })
|
|
8288
8405
|
] }, `${item.title}-${index}`);
|
|
8289
8406
|
}) });
|
|
8290
8407
|
}
|
|
8291
8408
|
|
|
8292
8409
|
// src/components/lists/icon-text-row.tsx
|
|
8293
8410
|
import clsx87 from "clsx";
|
|
8294
|
-
import { jsx as
|
|
8411
|
+
import { jsx as jsx94, jsxs as jsxs61 } from "react/jsx-runtime";
|
|
8295
8412
|
function IconTextRow({ icon, title, detail, className }) {
|
|
8296
8413
|
return /* @__PURE__ */ jsxs61("div", { className: clsx87("flex items-start gap-3", className), children: [
|
|
8297
|
-
/* @__PURE__ */
|
|
8414
|
+
/* @__PURE__ */ jsx94("span", { className: "flex size-9 shrink-0 items-center justify-center rounded-full bg-brand-tertiary text-brand", children: icon }),
|
|
8298
8415
|
/* @__PURE__ */ jsxs61("div", { className: "min-w-0", children: [
|
|
8299
|
-
/* @__PURE__ */
|
|
8300
|
-
/* @__PURE__ */
|
|
8416
|
+
/* @__PURE__ */ jsx94("p", { className: "text-body-sm font-semibold text-default", children: title }),
|
|
8417
|
+
/* @__PURE__ */ jsx94("p", { className: "mt-0.5 text-body-xs text-default-secondary", children: detail })
|
|
8301
8418
|
] })
|
|
8302
8419
|
] });
|
|
8303
8420
|
}
|
|
@@ -8305,10 +8422,10 @@ function IconTextRow({ icon, title, detail, className }) {
|
|
|
8305
8422
|
// src/components/lists/checklist-row.tsx
|
|
8306
8423
|
import clsx88 from "clsx";
|
|
8307
8424
|
import { LuCheck as LuCheck8 } from "react-icons/lu";
|
|
8308
|
-
import { jsx as
|
|
8425
|
+
import { jsx as jsx95, jsxs as jsxs62 } from "react/jsx-runtime";
|
|
8309
8426
|
function ChecklistRow({ label, state, className }) {
|
|
8310
8427
|
return /* @__PURE__ */ jsxs62("li", { className: clsx88("flex items-center gap-3", className), children: [
|
|
8311
|
-
/* @__PURE__ */
|
|
8428
|
+
/* @__PURE__ */ jsx95("span", { className: "flex size-5 shrink-0 items-center justify-center", children: state === "done" ? /* @__PURE__ */ jsx95(LuCheck8, { className: "size-4 text-positive", strokeWidth: 2.5, "aria-hidden": true }) : /* @__PURE__ */ jsx95(
|
|
8312
8429
|
"span",
|
|
8313
8430
|
{
|
|
8314
8431
|
className: clsx88(
|
|
@@ -8317,7 +8434,7 @@ function ChecklistRow({ label, state, className }) {
|
|
|
8317
8434
|
)
|
|
8318
8435
|
}
|
|
8319
8436
|
) }),
|
|
8320
|
-
/* @__PURE__ */
|
|
8437
|
+
/* @__PURE__ */ jsx95(
|
|
8321
8438
|
"span",
|
|
8322
8439
|
{
|
|
8323
8440
|
className: clsx88(
|
|
@@ -8332,13 +8449,13 @@ function ChecklistRow({ label, state, className }) {
|
|
|
8332
8449
|
|
|
8333
8450
|
// src/components/lists/steps-list.tsx
|
|
8334
8451
|
import clsx89 from "clsx";
|
|
8335
|
-
import { jsx as
|
|
8452
|
+
import { jsx as jsx96, jsxs as jsxs63 } from "react/jsx-runtime";
|
|
8336
8453
|
function StepsList({ steps, className }) {
|
|
8337
|
-
return /* @__PURE__ */
|
|
8454
|
+
return /* @__PURE__ */ jsx96("ol", { className: clsx89("flex flex-col gap-1.5", className), children: steps.map((step, i) => (
|
|
8338
8455
|
// `text-[12px]` was off the type scale; 12 sits midway between Scale 01 (11) and
|
|
8339
8456
|
// Scale 02 (13), so it rounds up to 13 like every other snap in this pass.
|
|
8340
8457
|
/* @__PURE__ */ jsxs63("li", { className: "flex items-start gap-2 text-body-xs text-default", children: [
|
|
8341
|
-
/* @__PURE__ */
|
|
8458
|
+
/* @__PURE__ */ jsx96("span", { className: "mt-0.5 flex size-4 shrink-0 items-center justify-center rounded-full bg-brand-tertiary text-[9px] font-bold text-brand", children: i + 1 }),
|
|
8342
8459
|
step
|
|
8343
8460
|
] }, i)
|
|
8344
8461
|
)) });
|
|
@@ -8346,7 +8463,7 @@ function StepsList({ steps, className }) {
|
|
|
8346
8463
|
|
|
8347
8464
|
// src/components/lists/detail-item.tsx
|
|
8348
8465
|
import clsx90 from "clsx";
|
|
8349
|
-
import { jsx as
|
|
8466
|
+
import { jsx as jsx97, jsxs as jsxs64 } from "react/jsx-runtime";
|
|
8350
8467
|
var SPAN = {
|
|
8351
8468
|
1: "",
|
|
8352
8469
|
2: "sm:col-span-2",
|
|
@@ -8364,17 +8481,17 @@ function DetailItem({
|
|
|
8364
8481
|
const shown = value === null || value === void 0 || value === "" ? "\u2014" : value;
|
|
8365
8482
|
if (layout === "inline") {
|
|
8366
8483
|
return /* @__PURE__ */ jsxs64("div", { className: clsx90("flex gap-3 text-body-xs", SPAN[span], className), children: [
|
|
8367
|
-
/* @__PURE__ */
|
|
8484
|
+
/* @__PURE__ */ jsx97("span", { className: clsx90("shrink-0 text-default-secondary", labelWidth), children: label }),
|
|
8368
8485
|
/* @__PURE__ */ jsxs64("span", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [
|
|
8369
|
-
/* @__PURE__ */
|
|
8370
|
-
detail && /* @__PURE__ */
|
|
8486
|
+
/* @__PURE__ */ jsx97("span", { className: "text-default", children: shown }),
|
|
8487
|
+
detail && /* @__PURE__ */ jsx97("span", { className: "text-default-secondary", children: detail })
|
|
8371
8488
|
] })
|
|
8372
8489
|
] });
|
|
8373
8490
|
}
|
|
8374
8491
|
return /* @__PURE__ */ jsxs64("div", { className: clsx90("flex min-w-0 flex-col gap-0.5", SPAN[span], className), children: [
|
|
8375
|
-
/* @__PURE__ */
|
|
8376
|
-
/* @__PURE__ */
|
|
8377
|
-
detail && /* @__PURE__ */
|
|
8492
|
+
/* @__PURE__ */ jsx97("p", { className: "text-body-tiny font-medium text-default-secondary", children: label }),
|
|
8493
|
+
/* @__PURE__ */ jsx97("p", { className: "text-body-sm font-medium text-default", children: shown }),
|
|
8494
|
+
detail && /* @__PURE__ */ jsx97("p", { className: "text-body-xs text-default-secondary", children: detail })
|
|
8378
8495
|
] });
|
|
8379
8496
|
}
|
|
8380
8497
|
var COLUMNS2 = {
|
|
@@ -8385,13 +8502,13 @@ var COLUMNS2 = {
|
|
|
8385
8502
|
4: "grid-cols-2 sm:grid-cols-3 lg:grid-cols-4"
|
|
8386
8503
|
};
|
|
8387
8504
|
function DetailGrid({ children, columns = "auto", className }) {
|
|
8388
|
-
return /* @__PURE__ */
|
|
8505
|
+
return /* @__PURE__ */ jsx97("div", { className: clsx90("grid gap-x-4 gap-y-4", COLUMNS2[columns], className), children });
|
|
8389
8506
|
}
|
|
8390
8507
|
|
|
8391
8508
|
// src/components/lists/checked-group-list.tsx
|
|
8392
8509
|
import clsx91 from "clsx";
|
|
8393
8510
|
import { LuCheck as LuCheck9 } from "react-icons/lu";
|
|
8394
|
-
import { jsx as
|
|
8511
|
+
import { jsx as jsx98, jsxs as jsxs65 } from "react/jsx-runtime";
|
|
8395
8512
|
var COLUMNS3 = {
|
|
8396
8513
|
1: "columns-1",
|
|
8397
8514
|
2: "columns-2",
|
|
@@ -8405,23 +8522,204 @@ function CheckedGroupList({
|
|
|
8405
8522
|
className
|
|
8406
8523
|
}) {
|
|
8407
8524
|
if (groups.length === 0) {
|
|
8408
|
-
return /* @__PURE__ */
|
|
8525
|
+
return /* @__PURE__ */ jsx98("p", { className: clsx91("text-body-xs text-default-secondary", className), children: emptyLabel });
|
|
8409
8526
|
}
|
|
8410
|
-
const glyph = icon === void 0 ? /* @__PURE__ */
|
|
8411
|
-
return /* @__PURE__ */
|
|
8412
|
-
/* @__PURE__ */
|
|
8413
|
-
/* @__PURE__ */
|
|
8414
|
-
glyph && /* @__PURE__ */
|
|
8527
|
+
const glyph = icon === void 0 ? /* @__PURE__ */ jsx98(LuCheck9, { className: "size-3.5", strokeWidth: 2.5, "aria-hidden": true }) : icon;
|
|
8528
|
+
return /* @__PURE__ */ jsx98("div", { className: clsx91(COLUMNS3[columns], "gap-x-6", className), children: groups.map((group) => /* @__PURE__ */ jsxs65("div", { className: "mb-5 break-inside-avoid last:mb-0", children: [
|
|
8529
|
+
/* @__PURE__ */ jsx98("p", { className: "mb-2 text-body-tiny font-semibold uppercase tracking-wide text-default-secondary", children: group.label }),
|
|
8530
|
+
/* @__PURE__ */ jsx98("ul", { className: "space-y-1.5", children: group.items.map((item) => /* @__PURE__ */ jsxs65("li", { className: "flex items-center gap-2 text-body-xs text-default", children: [
|
|
8531
|
+
glyph && /* @__PURE__ */ jsx98("span", { className: "shrink-0", children: glyph }),
|
|
8415
8532
|
item
|
|
8416
8533
|
] }, item)) })
|
|
8417
8534
|
] }, group.label)) });
|
|
8418
8535
|
}
|
|
8419
8536
|
|
|
8537
|
+
// src/components/lists/tree-view.tsx
|
|
8538
|
+
import { useMemo as useMemo15, useRef as useRef27, useState as useState22 } from "react";
|
|
8539
|
+
import clsx92 from "clsx";
|
|
8540
|
+
import { LuChevronRight as LuChevronRight6 } from "react-icons/lu";
|
|
8541
|
+
import { jsx as jsx99, jsxs as jsxs66 } from "react/jsx-runtime";
|
|
8542
|
+
var ROW = {
|
|
8543
|
+
sm: "min-h-8 py-1 text-body-xs",
|
|
8544
|
+
md: "min-h-10 py-2 text-body-sm"
|
|
8545
|
+
};
|
|
8546
|
+
var INDENT = 18;
|
|
8547
|
+
function TreeView({
|
|
8548
|
+
items,
|
|
8549
|
+
getId,
|
|
8550
|
+
getChildren,
|
|
8551
|
+
renderItem,
|
|
8552
|
+
label,
|
|
8553
|
+
expanded: expandedProp,
|
|
8554
|
+
defaultExpanded = [],
|
|
8555
|
+
onExpandedChange,
|
|
8556
|
+
selected: selectedProp,
|
|
8557
|
+
defaultSelected = null,
|
|
8558
|
+
onSelect,
|
|
8559
|
+
size: size2 = "md",
|
|
8560
|
+
className
|
|
8561
|
+
}) {
|
|
8562
|
+
const [expanded, setExpanded] = useControllableState({
|
|
8563
|
+
value: expandedProp,
|
|
8564
|
+
defaultValue: defaultExpanded,
|
|
8565
|
+
onChange: onExpandedChange
|
|
8566
|
+
});
|
|
8567
|
+
const [selected, setSelected] = useControllableState({
|
|
8568
|
+
value: selectedProp,
|
|
8569
|
+
defaultValue: defaultSelected
|
|
8570
|
+
});
|
|
8571
|
+
const [focusedId, setFocusedId] = useState22(null);
|
|
8572
|
+
const rowRefs = useRef27(/* @__PURE__ */ new Map());
|
|
8573
|
+
const expandedSet = useMemo15(() => new Set(expanded), [expanded]);
|
|
8574
|
+
const visible = useMemo15(() => {
|
|
8575
|
+
const out = [];
|
|
8576
|
+
const walk = (nodes, level, parentId) => {
|
|
8577
|
+
for (const item of nodes) {
|
|
8578
|
+
const id = getId(item);
|
|
8579
|
+
const children = getChildren?.(item) ?? [];
|
|
8580
|
+
const isOpen = children.length > 0 && expandedSet.has(id);
|
|
8581
|
+
out.push({ id, item, level, parentId, hasChildren: children.length > 0, expanded: isOpen });
|
|
8582
|
+
if (isOpen) walk(children, level + 1, id);
|
|
8583
|
+
}
|
|
8584
|
+
};
|
|
8585
|
+
walk(items, 1, null);
|
|
8586
|
+
return out;
|
|
8587
|
+
}, [items, getId, getChildren, expandedSet]);
|
|
8588
|
+
const tabStop = visible.find((n) => n.id === focusedId)?.id ?? visible.find((n) => n.id === selected)?.id ?? visible[0]?.id;
|
|
8589
|
+
const focus = (id) => {
|
|
8590
|
+
if (!id) return;
|
|
8591
|
+
setFocusedId(id);
|
|
8592
|
+
rowRefs.current.get(id)?.focus();
|
|
8593
|
+
};
|
|
8594
|
+
const toggle = (id, open) => {
|
|
8595
|
+
setExpanded((prev) => open ? [...prev.filter((x) => x !== id), id] : prev.filter((x) => x !== id));
|
|
8596
|
+
};
|
|
8597
|
+
const choose = (node) => {
|
|
8598
|
+
setSelected(node.id);
|
|
8599
|
+
onSelect?.(node.id, node.item);
|
|
8600
|
+
};
|
|
8601
|
+
const onKeyDown = (event, node) => {
|
|
8602
|
+
const index = visible.findIndex((n) => n.id === node.id);
|
|
8603
|
+
switch (event.key) {
|
|
8604
|
+
case "ArrowDown":
|
|
8605
|
+
event.preventDefault();
|
|
8606
|
+
focus(visible[index + 1]?.id);
|
|
8607
|
+
break;
|
|
8608
|
+
case "ArrowUp":
|
|
8609
|
+
event.preventDefault();
|
|
8610
|
+
focus(visible[index - 1]?.id);
|
|
8611
|
+
break;
|
|
8612
|
+
case "ArrowRight":
|
|
8613
|
+
event.preventDefault();
|
|
8614
|
+
if (node.hasChildren && !node.expanded) toggle(node.id, true);
|
|
8615
|
+
else if (node.expanded) focus(visible[index + 1]?.id);
|
|
8616
|
+
break;
|
|
8617
|
+
case "ArrowLeft":
|
|
8618
|
+
event.preventDefault();
|
|
8619
|
+
if (node.expanded) toggle(node.id, false);
|
|
8620
|
+
else if (node.parentId) focus(node.parentId);
|
|
8621
|
+
break;
|
|
8622
|
+
case "Home":
|
|
8623
|
+
event.preventDefault();
|
|
8624
|
+
focus(visible[0]?.id);
|
|
8625
|
+
break;
|
|
8626
|
+
case "End":
|
|
8627
|
+
event.preventDefault();
|
|
8628
|
+
focus(visible[visible.length - 1]?.id);
|
|
8629
|
+
break;
|
|
8630
|
+
case "Enter":
|
|
8631
|
+
case " ":
|
|
8632
|
+
event.preventDefault();
|
|
8633
|
+
choose(node);
|
|
8634
|
+
break;
|
|
8635
|
+
default:
|
|
8636
|
+
break;
|
|
8637
|
+
}
|
|
8638
|
+
};
|
|
8639
|
+
const renderLevel = (nodes, level) => nodes.map((item, i) => {
|
|
8640
|
+
const id = getId(item);
|
|
8641
|
+
const node = visible.find((n) => n.id === id);
|
|
8642
|
+
if (!node) return null;
|
|
8643
|
+
const children = getChildren?.(item) ?? [];
|
|
8644
|
+
const isSelected = selected === id;
|
|
8645
|
+
return /* @__PURE__ */ jsxs66(
|
|
8646
|
+
"li",
|
|
8647
|
+
{
|
|
8648
|
+
role: "treeitem",
|
|
8649
|
+
"aria-level": level,
|
|
8650
|
+
"aria-setsize": nodes.length,
|
|
8651
|
+
"aria-posinset": i + 1,
|
|
8652
|
+
"aria-expanded": node.hasChildren ? node.expanded : void 0,
|
|
8653
|
+
"aria-selected": isSelected,
|
|
8654
|
+
tabIndex: tabStop === id ? 0 : -1,
|
|
8655
|
+
ref: (el) => {
|
|
8656
|
+
if (el) rowRefs.current.set(id, el);
|
|
8657
|
+
else rowRefs.current.delete(id);
|
|
8658
|
+
},
|
|
8659
|
+
onFocus: (event) => {
|
|
8660
|
+
if (event.target === event.currentTarget) setFocusedId(id);
|
|
8661
|
+
},
|
|
8662
|
+
onKeyDown: (event) => {
|
|
8663
|
+
if (event.target === event.currentTarget) onKeyDown(event, node);
|
|
8664
|
+
},
|
|
8665
|
+
className: "outline-none [&:focus-visible>div]:ring-2 [&:focus-visible>div]:ring-inset [&:focus-visible>div]:ring-brand",
|
|
8666
|
+
children: [
|
|
8667
|
+
/* @__PURE__ */ jsxs66(
|
|
8668
|
+
"div",
|
|
8669
|
+
{
|
|
8670
|
+
onClick: () => {
|
|
8671
|
+
focus(id);
|
|
8672
|
+
choose(node);
|
|
8673
|
+
},
|
|
8674
|
+
style: { paddingLeft: 8 + (level - 1) * INDENT },
|
|
8675
|
+
className: clsx92(
|
|
8676
|
+
"flex w-full cursor-pointer items-center gap-1.5 rounded-md pr-2 transition-colors",
|
|
8677
|
+
ROW[size2],
|
|
8678
|
+
isSelected ? "bg-brand-secondary text-default" : "text-default hover:bg-default-secondary"
|
|
8679
|
+
),
|
|
8680
|
+
children: [
|
|
8681
|
+
node.hasChildren ? (
|
|
8682
|
+
// Not a button: the treeitem is the one tab stop, and Left/Right already toggle.
|
|
8683
|
+
// A pointer user still needs a target that toggles without selecting.
|
|
8684
|
+
// eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions
|
|
8685
|
+
/* @__PURE__ */ jsx99(
|
|
8686
|
+
"span",
|
|
8687
|
+
{
|
|
8688
|
+
"aria-hidden": true,
|
|
8689
|
+
"data-tree-toggle": "",
|
|
8690
|
+
onClick: (event) => {
|
|
8691
|
+
event.stopPropagation();
|
|
8692
|
+
toggle(id, !node.expanded);
|
|
8693
|
+
focus(id);
|
|
8694
|
+
},
|
|
8695
|
+
className: "flex size-5 shrink-0 items-center justify-center rounded text-icon-default-secondary hover:bg-default-tertiary",
|
|
8696
|
+
children: /* @__PURE__ */ jsx99(LuChevronRight6, { className: clsx92("size-3.5 transition-transform", node.expanded && "rotate-90") })
|
|
8697
|
+
}
|
|
8698
|
+
)
|
|
8699
|
+
) : /* @__PURE__ */ jsx99("span", { "aria-hidden": true, className: "size-5 shrink-0" }),
|
|
8700
|
+
/* @__PURE__ */ jsx99("div", { className: "min-w-0 flex-1", children: renderItem(item, {
|
|
8701
|
+
level,
|
|
8702
|
+
hasChildren: node.hasChildren,
|
|
8703
|
+
expanded: node.expanded,
|
|
8704
|
+
selected: isSelected
|
|
8705
|
+
}) })
|
|
8706
|
+
]
|
|
8707
|
+
}
|
|
8708
|
+
),
|
|
8709
|
+
node.expanded && /* @__PURE__ */ jsx99("ul", { role: "group", className: "m-0 list-none p-0", children: renderLevel(children, level + 1) })
|
|
8710
|
+
]
|
|
8711
|
+
},
|
|
8712
|
+
id
|
|
8713
|
+
);
|
|
8714
|
+
});
|
|
8715
|
+
return /* @__PURE__ */ jsx99("ul", { role: "tree", "aria-label": label, className: clsx92("m-0 flex list-none flex-col p-0", className), children: renderLevel(items, 1) });
|
|
8716
|
+
}
|
|
8717
|
+
|
|
8420
8718
|
// src/components/lists/table.tsx
|
|
8421
8719
|
import { forwardRef as forwardRef25 } from "react";
|
|
8422
|
-
import
|
|
8720
|
+
import clsx93 from "clsx";
|
|
8423
8721
|
import { LuChevronDown as LuChevronDown4, LuChevronsUpDown, LuChevronUp } from "react-icons/lu";
|
|
8424
|
-
import { jsx as
|
|
8722
|
+
import { jsx as jsx100, jsxs as jsxs67 } from "react/jsx-runtime";
|
|
8425
8723
|
var Table = forwardRef25(function Table2({ label, density = "default", fixed = false, className, children, ...rest }, ref) {
|
|
8426
8724
|
return (
|
|
8427
8725
|
// The scroll container is separate from the table so the header stays inside the
|
|
@@ -8429,7 +8727,7 @@ var Table = forwardRef25(function Table2({ label, density = "default", fixed = f
|
|
|
8429
8727
|
// header.
|
|
8430
8728
|
// The scroll wrapper is required for a <table>, which cannot itself scroll, so this
|
|
8431
8729
|
// takes the scrollbar styling rather than ScrollArea.
|
|
8432
|
-
/* @__PURE__ */
|
|
8730
|
+
/* @__PURE__ */ jsx100("div", { className: clsx93("w-full overflow-x-auto", SCROLLBAR_CLASSES), children: /* @__PURE__ */ jsx100(
|
|
8433
8731
|
"table",
|
|
8434
8732
|
{
|
|
8435
8733
|
ref,
|
|
@@ -8445,7 +8743,7 @@ var Table = forwardRef25(function Table2({ label, density = "default", fixed = f
|
|
|
8445
8743
|
});
|
|
8446
8744
|
var TableCaption = forwardRef25(
|
|
8447
8745
|
function TableCaption2({ className, ...rest }, ref) {
|
|
8448
|
-
return /* @__PURE__ */
|
|
8746
|
+
return /* @__PURE__ */ jsx100(
|
|
8449
8747
|
"caption",
|
|
8450
8748
|
{
|
|
8451
8749
|
ref,
|
|
@@ -8457,17 +8755,17 @@ var TableCaption = forwardRef25(
|
|
|
8457
8755
|
);
|
|
8458
8756
|
var TableHeader = forwardRef25(
|
|
8459
8757
|
function TableHeader2({ className, ...rest }, ref) {
|
|
8460
|
-
return /* @__PURE__ */
|
|
8758
|
+
return /* @__PURE__ */ jsx100("thead", { ref, className: cn("border-b border-default", className), ...rest });
|
|
8461
8759
|
}
|
|
8462
8760
|
);
|
|
8463
8761
|
var TableBody = forwardRef25(
|
|
8464
8762
|
function TableBody2({ className, ...rest }, ref) {
|
|
8465
|
-
return /* @__PURE__ */
|
|
8763
|
+
return /* @__PURE__ */ jsx100("tbody", { ref, className, ...rest });
|
|
8466
8764
|
}
|
|
8467
8765
|
);
|
|
8468
8766
|
var TableFooter = forwardRef25(
|
|
8469
8767
|
function TableFooter2({ className, ...rest }, ref) {
|
|
8470
|
-
return /* @__PURE__ */
|
|
8768
|
+
return /* @__PURE__ */ jsx100(
|
|
8471
8769
|
"tfoot",
|
|
8472
8770
|
{
|
|
8473
8771
|
ref,
|
|
@@ -8478,7 +8776,7 @@ var TableFooter = forwardRef25(
|
|
|
8478
8776
|
}
|
|
8479
8777
|
);
|
|
8480
8778
|
var TableRow = forwardRef25(function TableRow2({ selected, className, ...rest }, ref) {
|
|
8481
|
-
return /* @__PURE__ */
|
|
8779
|
+
return /* @__PURE__ */ jsx100(
|
|
8482
8780
|
"tr",
|
|
8483
8781
|
{
|
|
8484
8782
|
ref,
|
|
@@ -8496,7 +8794,7 @@ var TableRow = forwardRef25(function TableRow2({ selected, className, ...rest },
|
|
|
8496
8794
|
var ALIGN2 = { left: "text-left", center: "text-center", right: "text-right" };
|
|
8497
8795
|
var TableHead = forwardRef25(function TableHead2({ sort, onSort, align = "left", sticky = false, className, children, ...rest }, ref) {
|
|
8498
8796
|
const sortable = sort !== void 0 && onSort !== void 0;
|
|
8499
|
-
return /* @__PURE__ */
|
|
8797
|
+
return /* @__PURE__ */ jsx100(
|
|
8500
8798
|
"th",
|
|
8501
8799
|
{
|
|
8502
8800
|
ref,
|
|
@@ -8509,18 +8807,18 @@ var TableHead = forwardRef25(function TableHead2({ sort, onSort, align = "left",
|
|
|
8509
8807
|
className
|
|
8510
8808
|
),
|
|
8511
8809
|
...rest,
|
|
8512
|
-
children: sortable ? /* @__PURE__ */
|
|
8810
|
+
children: sortable ? /* @__PURE__ */ jsxs67(
|
|
8513
8811
|
"button",
|
|
8514
8812
|
{
|
|
8515
8813
|
type: "button",
|
|
8516
8814
|
onClick: onSort,
|
|
8517
|
-
className:
|
|
8815
|
+
className: clsx93(
|
|
8518
8816
|
"inline-flex items-center gap-1.5 rounded transition-colors hover:text-default",
|
|
8519
8817
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand focus-visible:ring-offset-1 focus-visible:ring-offset-default"
|
|
8520
8818
|
),
|
|
8521
8819
|
children: [
|
|
8522
8820
|
children,
|
|
8523
|
-
sort === false ? /* @__PURE__ */
|
|
8821
|
+
sort === false ? /* @__PURE__ */ jsx100(LuChevronsUpDown, { "aria-hidden": true, className: "size-3.5 opacity-50" }) : sort === "ascending" ? /* @__PURE__ */ jsx100(LuChevronUp, { "aria-hidden": true, className: "size-3.5" }) : /* @__PURE__ */ jsx100(LuChevronDown4, { "aria-hidden": true, className: "size-3.5" })
|
|
8524
8822
|
]
|
|
8525
8823
|
}
|
|
8526
8824
|
) : children
|
|
@@ -8529,7 +8827,7 @@ var TableHead = forwardRef25(function TableHead2({ sort, onSort, align = "left",
|
|
|
8529
8827
|
});
|
|
8530
8828
|
var TableCell = forwardRef25(function TableCell2({ align = "left", density = "default", header = false, className, ...rest }, ref) {
|
|
8531
8829
|
const Tag = header ? "th" : "td";
|
|
8532
|
-
return /* @__PURE__ */
|
|
8830
|
+
return /* @__PURE__ */ jsx100(
|
|
8533
8831
|
Tag,
|
|
8534
8832
|
{
|
|
8535
8833
|
ref,
|
|
@@ -8547,8 +8845,8 @@ var TableCell = forwardRef25(function TableCell2({ align = "left", density = "de
|
|
|
8547
8845
|
});
|
|
8548
8846
|
|
|
8549
8847
|
// src/components/lists/data-table.tsx
|
|
8550
|
-
import
|
|
8551
|
-
import { jsx as
|
|
8848
|
+
import clsx94 from "clsx";
|
|
8849
|
+
import { jsx as jsx101, jsxs as jsxs68 } from "react/jsx-runtime";
|
|
8552
8850
|
var DENSITY2 = {
|
|
8553
8851
|
default: {
|
|
8554
8852
|
headerCell: "px-4 py-3",
|
|
@@ -8577,29 +8875,29 @@ function DataTable({
|
|
|
8577
8875
|
}) {
|
|
8578
8876
|
const d = DENSITY2[density];
|
|
8579
8877
|
const minWidth = columns.length ? `calc(${columns.map((c) => c.width).join(" + ")})` : void 0;
|
|
8580
|
-
return /* @__PURE__ */
|
|
8878
|
+
return /* @__PURE__ */ jsx101("div", { className: clsx94(
|
|
8581
8879
|
// A wrapper element here is load-bearing for the table layout, and the rows are
|
|
8582
8880
|
// focusable when clickable, so this takes the scrollbar styling rather than ScrollArea.
|
|
8583
|
-
|
|
8881
|
+
clsx94("overflow-x-auto rounded-xl border border-default bg-default", SCROLLBAR_CLASSES),
|
|
8584
8882
|
className
|
|
8585
|
-
), children: /* @__PURE__ */
|
|
8586
|
-
/* @__PURE__ */
|
|
8883
|
+
), children: /* @__PURE__ */ jsxs68("table", { className: "w-full table-fixed border-collapse text-left", style: { minWidth }, children: [
|
|
8884
|
+
/* @__PURE__ */ jsx101("colgroup", { children: columns.map((col) => (
|
|
8587
8885
|
// A grow column gets no width, so table-fixed hands it the leftover space.
|
|
8588
8886
|
// Its floor is already counted in the table's min-width.
|
|
8589
|
-
/* @__PURE__ */
|
|
8887
|
+
/* @__PURE__ */ jsx101("col", { style: col.grow ? void 0 : { width: col.width } }, col.key)
|
|
8590
8888
|
)) }),
|
|
8591
|
-
/* @__PURE__ */
|
|
8592
|
-
/* @__PURE__ */
|
|
8889
|
+
/* @__PURE__ */ jsx101("thead", { children: /* @__PURE__ */ jsx101("tr", { className: "bg-default-secondary", children: columns.map((col) => /* @__PURE__ */ jsx101("th", { scope: "col", className: clsx94("overflow-hidden", d.headerCell, d.headerText), children: col.header }, col.key)) }) }),
|
|
8890
|
+
/* @__PURE__ */ jsx101("tbody", { children: rows.length === 0 ? emptyLabel && /* @__PURE__ */ jsx101("tr", { children: /* @__PURE__ */ jsx101(
|
|
8593
8891
|
"td",
|
|
8594
8892
|
{
|
|
8595
8893
|
colSpan: columns.length,
|
|
8596
|
-
className:
|
|
8894
|
+
className: clsx94(d.bodyCell, "text-center text-body-sm text-default-secondary"),
|
|
8597
8895
|
children: emptyLabel
|
|
8598
8896
|
}
|
|
8599
|
-
) }) : rows.map((row, i) => /* @__PURE__ */
|
|
8897
|
+
) }) : rows.map((row, i) => /* @__PURE__ */ jsx101(
|
|
8600
8898
|
"tr",
|
|
8601
8899
|
{
|
|
8602
|
-
className:
|
|
8900
|
+
className: clsx94(
|
|
8603
8901
|
"transition-colors hover:bg-default-secondary/50",
|
|
8604
8902
|
i > 0 && "border-t border-default",
|
|
8605
8903
|
// outline, not ring: `ring-*` compiles to box-shadow, which browsers
|
|
@@ -8614,28 +8912,28 @@ function DataTable({
|
|
|
8614
8912
|
onRowClick(row);
|
|
8615
8913
|
}
|
|
8616
8914
|
} : void 0,
|
|
8617
|
-
children: columns.map((col) => /* @__PURE__ */
|
|
8915
|
+
children: columns.map((col) => /* @__PURE__ */ jsx101("td", { className: clsx94("overflow-hidden", d.bodyCell, ALIGN3[align]), children: col.render(row) }, col.key))
|
|
8618
8916
|
},
|
|
8619
8917
|
getRowKey(row, i)
|
|
8620
8918
|
)) })
|
|
8621
8919
|
] }) });
|
|
8622
8920
|
}
|
|
8623
8921
|
function TableCellLeadText({ primary, secondary, size: size2 = "md", className }) {
|
|
8624
|
-
return /* @__PURE__ */
|
|
8625
|
-
/* @__PURE__ */
|
|
8922
|
+
return /* @__PURE__ */ jsxs68("div", { className: clsx94("flex flex-col gap-0.5", className), children: [
|
|
8923
|
+
/* @__PURE__ */ jsx101(
|
|
8626
8924
|
"span",
|
|
8627
8925
|
{
|
|
8628
|
-
className:
|
|
8926
|
+
className: clsx94(
|
|
8629
8927
|
"font-medium leading-snug text-default",
|
|
8630
8928
|
size2 === "sm" ? "text-body-xs" : "text-body-sm"
|
|
8631
8929
|
),
|
|
8632
8930
|
children: primary
|
|
8633
8931
|
}
|
|
8634
8932
|
),
|
|
8635
|
-
secondary && /* @__PURE__ */
|
|
8933
|
+
secondary && /* @__PURE__ */ jsx101(
|
|
8636
8934
|
"span",
|
|
8637
8935
|
{
|
|
8638
|
-
className:
|
|
8936
|
+
className: clsx94(
|
|
8639
8937
|
"font-normal leading-tight text-default-secondary",
|
|
8640
8938
|
size2 === "sm" ? "text-body-tiny" : "text-body-xs"
|
|
8641
8939
|
),
|
|
@@ -8651,10 +8949,10 @@ function TableCellText({
|
|
|
8651
8949
|
truncate = false,
|
|
8652
8950
|
className
|
|
8653
8951
|
}) {
|
|
8654
|
-
return /* @__PURE__ */
|
|
8952
|
+
return /* @__PURE__ */ jsx101(
|
|
8655
8953
|
"span",
|
|
8656
8954
|
{
|
|
8657
|
-
className:
|
|
8955
|
+
className: clsx94(
|
|
8658
8956
|
"font-normal leading-snug",
|
|
8659
8957
|
size2 === "sm" ? "text-body-tiny" : "text-body-xs",
|
|
8660
8958
|
truncate ? "block truncate" : "whitespace-nowrap",
|
|
@@ -8666,10 +8964,10 @@ function TableCellText({
|
|
|
8666
8964
|
);
|
|
8667
8965
|
}
|
|
8668
8966
|
function TableCellBadge({ label, className }) {
|
|
8669
|
-
return /* @__PURE__ */
|
|
8967
|
+
return /* @__PURE__ */ jsx101(
|
|
8670
8968
|
"span",
|
|
8671
8969
|
{
|
|
8672
|
-
className:
|
|
8970
|
+
className: clsx94(
|
|
8673
8971
|
"inline-flex items-center rounded-md border border-default bg-default-secondary px-2 py-0.5 text-body-tiny font-medium text-default-secondary whitespace-nowrap",
|
|
8674
8972
|
className
|
|
8675
8973
|
),
|
|
@@ -8684,8 +8982,8 @@ function TableCellProgress({
|
|
|
8684
8982
|
className
|
|
8685
8983
|
}) {
|
|
8686
8984
|
const clamped = Math.min(100, Math.max(0, percent));
|
|
8687
|
-
return /* @__PURE__ */
|
|
8688
|
-
/* @__PURE__ */
|
|
8985
|
+
return /* @__PURE__ */ jsxs68("div", { className: clsx94("flex flex-col gap-1", className), children: [
|
|
8986
|
+
/* @__PURE__ */ jsx101(
|
|
8689
8987
|
ProgressBar,
|
|
8690
8988
|
{
|
|
8691
8989
|
value: clamped,
|
|
@@ -8695,7 +8993,7 @@ function TableCellProgress({
|
|
|
8695
8993
|
"aria-label": `${clamped}%`
|
|
8696
8994
|
}
|
|
8697
8995
|
),
|
|
8698
|
-
/* @__PURE__ */
|
|
8996
|
+
/* @__PURE__ */ jsxs68("span", { className: "text-body-tiny leading-none text-default-secondary", children: [
|
|
8699
8997
|
percent,
|
|
8700
8998
|
"%"
|
|
8701
8999
|
] })
|
|
@@ -8703,9 +9001,9 @@ function TableCellProgress({
|
|
|
8703
9001
|
}
|
|
8704
9002
|
|
|
8705
9003
|
// src/components/feedback/inline-alert.tsx
|
|
8706
|
-
import
|
|
9004
|
+
import clsx95 from "clsx";
|
|
8707
9005
|
import { LuCircleCheckBig as LuCircleCheckBig2, LuInfo as LuInfo2, LuTriangleAlert as LuTriangleAlert2 } from "react-icons/lu";
|
|
8708
|
-
import { jsx as
|
|
9006
|
+
import { jsx as jsx102, jsxs as jsxs69 } from "react/jsx-runtime";
|
|
8709
9007
|
var toneStyles3 = {
|
|
8710
9008
|
info: "border-brand-tertiary bg-brand-tertiary text-brand",
|
|
8711
9009
|
warning: "border-warning-tertiary bg-warning-tertiary text-warning",
|
|
@@ -8713,33 +9011,33 @@ var toneStyles3 = {
|
|
|
8713
9011
|
positive: "border-positive-tertiary bg-positive-tertiary text-positive"
|
|
8714
9012
|
};
|
|
8715
9013
|
var toneIcons = {
|
|
8716
|
-
info: /* @__PURE__ */
|
|
8717
|
-
warning: /* @__PURE__ */
|
|
8718
|
-
danger: /* @__PURE__ */
|
|
8719
|
-
positive: /* @__PURE__ */
|
|
9014
|
+
info: /* @__PURE__ */ jsx102(LuInfo2, { className: "size-4" }),
|
|
9015
|
+
warning: /* @__PURE__ */ jsx102(LuTriangleAlert2, { className: "size-4" }),
|
|
9016
|
+
danger: /* @__PURE__ */ jsx102(LuTriangleAlert2, { className: "size-4" }),
|
|
9017
|
+
positive: /* @__PURE__ */ jsx102(LuCircleCheckBig2, { className: "size-4" })
|
|
8720
9018
|
};
|
|
8721
9019
|
function InlineAlert({ tone, children, icon, className }) {
|
|
8722
9020
|
const glyph = icon === void 0 ? toneIcons[tone] : icon;
|
|
8723
|
-
return /* @__PURE__ */
|
|
9021
|
+
return /* @__PURE__ */ jsxs69(
|
|
8724
9022
|
"div",
|
|
8725
9023
|
{
|
|
8726
9024
|
role: tone === "danger" ? "alert" : "status",
|
|
8727
|
-
className:
|
|
9025
|
+
className: clsx95(
|
|
8728
9026
|
"flex items-start gap-3 rounded-xl border p-4 text-body-xs",
|
|
8729
9027
|
toneStyles3[tone],
|
|
8730
9028
|
className
|
|
8731
9029
|
),
|
|
8732
9030
|
children: [
|
|
8733
|
-
glyph && /* @__PURE__ */
|
|
8734
|
-
/* @__PURE__ */
|
|
9031
|
+
glyph && /* @__PURE__ */ jsx102("span", { "aria-hidden": true, className: "mt-px shrink-0", children: glyph }),
|
|
9032
|
+
/* @__PURE__ */ jsx102("div", { className: "min-w-0", children })
|
|
8735
9033
|
]
|
|
8736
9034
|
}
|
|
8737
9035
|
);
|
|
8738
9036
|
}
|
|
8739
9037
|
|
|
8740
9038
|
// src/components/feedback/empty-state.tsx
|
|
8741
|
-
import
|
|
8742
|
-
import { jsx as
|
|
9039
|
+
import clsx96 from "clsx";
|
|
9040
|
+
import { jsx as jsx103, jsxs as jsxs70 } from "react/jsx-runtime";
|
|
8743
9041
|
var SIZES = {
|
|
8744
9042
|
sm: "py-8",
|
|
8745
9043
|
md: "py-12",
|
|
@@ -8758,10 +9056,10 @@ function EmptyState({
|
|
|
8758
9056
|
action,
|
|
8759
9057
|
className
|
|
8760
9058
|
}) {
|
|
8761
|
-
return /* @__PURE__ */
|
|
9059
|
+
return /* @__PURE__ */ jsxs70(
|
|
8762
9060
|
"div",
|
|
8763
9061
|
{
|
|
8764
|
-
className:
|
|
9062
|
+
className: clsx96(
|
|
8765
9063
|
"flex flex-col items-center justify-center gap-2 px-4 text-center text-body-sm",
|
|
8766
9064
|
SIZES[size2],
|
|
8767
9065
|
TONES[variant],
|
|
@@ -8769,8 +9067,8 @@ function EmptyState({
|
|
|
8769
9067
|
),
|
|
8770
9068
|
"aria-live": variant === "empty" ? void 0 : "polite",
|
|
8771
9069
|
children: [
|
|
8772
|
-
icon && /* @__PURE__ */
|
|
8773
|
-
/* @__PURE__ */
|
|
9070
|
+
icon && /* @__PURE__ */ jsx103("span", { className: "text-default-tertiary", children: icon }),
|
|
9071
|
+
/* @__PURE__ */ jsx103("p", { children: message }),
|
|
8774
9072
|
action
|
|
8775
9073
|
]
|
|
8776
9074
|
}
|
|
@@ -8779,8 +9077,8 @@ function EmptyState({
|
|
|
8779
9077
|
|
|
8780
9078
|
// src/components/feedback/skeleton.tsx
|
|
8781
9079
|
import { forwardRef as forwardRef26 } from "react";
|
|
8782
|
-
import
|
|
8783
|
-
import { jsx as
|
|
9080
|
+
import clsx97 from "clsx";
|
|
9081
|
+
import { jsx as jsx104 } from "react/jsx-runtime";
|
|
8784
9082
|
var SHAPE2 = {
|
|
8785
9083
|
line: "h-4 rounded",
|
|
8786
9084
|
block: "h-full w-full rounded-lg",
|
|
@@ -8788,10 +9086,10 @@ var SHAPE2 = {
|
|
|
8788
9086
|
};
|
|
8789
9087
|
var Skeleton = forwardRef26(function Skeleton2({ shape = "line", lines = 1, className, ...rest }, ref) {
|
|
8790
9088
|
if (shape === "line" && lines > 1) {
|
|
8791
|
-
return /* @__PURE__ */
|
|
9089
|
+
return /* @__PURE__ */ jsx104("div", { ref, "aria-hidden": true, "data-slot": "skeleton-group", className: "flex flex-col gap-2", ...rest, children: Array.from({ length: lines }, (_, index) => /* @__PURE__ */ jsx104(
|
|
8792
9090
|
"div",
|
|
8793
9091
|
{
|
|
8794
|
-
className:
|
|
9092
|
+
className: clsx97(
|
|
8795
9093
|
"animate-pulse bg-default-tertiary",
|
|
8796
9094
|
SHAPE2.line,
|
|
8797
9095
|
// A ragged last line reads as a paragraph rather than a solid slab.
|
|
@@ -8802,13 +9100,13 @@ var Skeleton = forwardRef26(function Skeleton2({ shape = "line", lines = 1, clas
|
|
|
8802
9100
|
index
|
|
8803
9101
|
)) });
|
|
8804
9102
|
}
|
|
8805
|
-
return /* @__PURE__ */
|
|
9103
|
+
return /* @__PURE__ */ jsx104(
|
|
8806
9104
|
"div",
|
|
8807
9105
|
{
|
|
8808
9106
|
ref,
|
|
8809
9107
|
"aria-hidden": true,
|
|
8810
9108
|
"data-slot": "skeleton",
|
|
8811
|
-
className:
|
|
9109
|
+
className: clsx97("animate-pulse bg-default-tertiary", SHAPE2[shape], className),
|
|
8812
9110
|
...rest
|
|
8813
9111
|
}
|
|
8814
9112
|
);
|
|
@@ -8816,9 +9114,9 @@ var Skeleton = forwardRef26(function Skeleton2({ shape = "line", lines = 1, clas
|
|
|
8816
9114
|
|
|
8817
9115
|
// src/components/feedback/banner.tsx
|
|
8818
9116
|
import { forwardRef as forwardRef27, useId as useId24 } from "react";
|
|
8819
|
-
import
|
|
9117
|
+
import clsx98 from "clsx";
|
|
8820
9118
|
import { LuCircleCheckBig as LuCircleCheckBig3, LuInfo as LuInfo3, LuTriangleAlert as LuTriangleAlert3, LuX as LuX6 } from "react-icons/lu";
|
|
8821
|
-
import { jsx as
|
|
9119
|
+
import { jsx as jsx105, jsxs as jsxs71 } from "react/jsx-runtime";
|
|
8822
9120
|
var TONE_STYLES3 = {
|
|
8823
9121
|
info: "border-brand-tertiary bg-brand-tertiary text-default",
|
|
8824
9122
|
positive: "border-positive-tertiary bg-positive-tertiary text-default",
|
|
@@ -8832,10 +9130,10 @@ var TONE_ICON_COLOR = {
|
|
|
8832
9130
|
danger: "text-icon-danger"
|
|
8833
9131
|
};
|
|
8834
9132
|
var TONE_ICON2 = {
|
|
8835
|
-
info: /* @__PURE__ */
|
|
8836
|
-
positive: /* @__PURE__ */
|
|
8837
|
-
warning: /* @__PURE__ */
|
|
8838
|
-
danger: /* @__PURE__ */
|
|
9133
|
+
info: /* @__PURE__ */ jsx105(LuInfo3, { "aria-hidden": true, className: "size-5" }),
|
|
9134
|
+
positive: /* @__PURE__ */ jsx105(LuCircleCheckBig3, { "aria-hidden": true, className: "size-5" }),
|
|
9135
|
+
warning: /* @__PURE__ */ jsx105(LuTriangleAlert3, { "aria-hidden": true, className: "size-5" }),
|
|
9136
|
+
danger: /* @__PURE__ */ jsx105(LuTriangleAlert3, { "aria-hidden": true, className: "size-5" })
|
|
8839
9137
|
};
|
|
8840
9138
|
var Banner = forwardRef27(function Banner2({
|
|
8841
9139
|
title,
|
|
@@ -8850,27 +9148,27 @@ var Banner = forwardRef27(function Banner2({
|
|
|
8850
9148
|
}, ref) {
|
|
8851
9149
|
const titleId = useId24();
|
|
8852
9150
|
const glyph = icon === void 0 ? TONE_ICON2[tone] : icon;
|
|
8853
|
-
return /* @__PURE__ */
|
|
9151
|
+
return /* @__PURE__ */ jsxs71(
|
|
8854
9152
|
"div",
|
|
8855
9153
|
{
|
|
8856
9154
|
ref,
|
|
8857
9155
|
role: variant === "alert" ? "alert" : "status",
|
|
8858
9156
|
"aria-labelledby": titleId,
|
|
8859
9157
|
"data-slot": "banner",
|
|
8860
|
-
className:
|
|
9158
|
+
className: clsx98(
|
|
8861
9159
|
"flex w-full items-start gap-3 rounded-xl border p-4",
|
|
8862
9160
|
TONE_STYLES3[tone],
|
|
8863
9161
|
className
|
|
8864
9162
|
),
|
|
8865
9163
|
...rest,
|
|
8866
9164
|
children: [
|
|
8867
|
-
glyph && /* @__PURE__ */
|
|
8868
|
-
/* @__PURE__ */
|
|
8869
|
-
/* @__PURE__ */
|
|
8870
|
-
children && /* @__PURE__ */
|
|
8871
|
-
action && /* @__PURE__ */
|
|
9165
|
+
glyph && /* @__PURE__ */ jsx105("span", { "aria-hidden": true, className: clsx98("mt-px shrink-0", TONE_ICON_COLOR[tone]), children: glyph }),
|
|
9166
|
+
/* @__PURE__ */ jsxs71("div", { className: "min-w-0 flex-1", children: [
|
|
9167
|
+
/* @__PURE__ */ jsx105("p", { id: titleId, className: "text-body-sm font-semibold text-default", children: title }),
|
|
9168
|
+
children && /* @__PURE__ */ jsx105("div", { className: "mt-1 text-body-xs text-default-secondary", children }),
|
|
9169
|
+
action && /* @__PURE__ */ jsx105("div", { className: "mt-3 flex items-center gap-2", children: action })
|
|
8872
9170
|
] }),
|
|
8873
|
-
onDismiss && /* @__PURE__ */
|
|
9171
|
+
onDismiss && /* @__PURE__ */ jsx105(
|
|
8874
9172
|
IconButton,
|
|
8875
9173
|
{
|
|
8876
9174
|
variant: "subtle",
|
|
@@ -8878,7 +9176,7 @@ var Banner = forwardRef27(function Banner2({
|
|
|
8878
9176
|
"aria-label": typeof title === "string" ? `Dismiss: ${title}` : "Dismiss",
|
|
8879
9177
|
onClick: onDismiss,
|
|
8880
9178
|
className: "-mr-1 -mt-1 shrink-0",
|
|
8881
|
-
children: /* @__PURE__ */
|
|
9179
|
+
children: /* @__PURE__ */ jsx105(LuX6, { "aria-hidden": true, size: 16 })
|
|
8882
9180
|
}
|
|
8883
9181
|
)
|
|
8884
9182
|
]
|
|
@@ -8892,13 +9190,13 @@ import {
|
|
|
8892
9190
|
useCallback as useCallback11,
|
|
8893
9191
|
useContext as useContext16,
|
|
8894
9192
|
useEffect as useEffect20,
|
|
8895
|
-
useMemo as
|
|
8896
|
-
useRef as
|
|
8897
|
-
useState as
|
|
9193
|
+
useMemo as useMemo16,
|
|
9194
|
+
useRef as useRef28,
|
|
9195
|
+
useState as useState23
|
|
8898
9196
|
} from "react";
|
|
8899
|
-
import
|
|
9197
|
+
import clsx99 from "clsx";
|
|
8900
9198
|
import { LuCircleCheckBig as LuCircleCheckBig4, LuInfo as LuInfo4, LuTriangleAlert as LuTriangleAlert4, LuX as LuX7 } from "react-icons/lu";
|
|
8901
|
-
import { jsx as
|
|
9199
|
+
import { jsx as jsx106, jsxs as jsxs72 } from "react/jsx-runtime";
|
|
8902
9200
|
var ToastContext = createContext16(null);
|
|
8903
9201
|
function useToast() {
|
|
8904
9202
|
const context = useContext16(ToastContext);
|
|
@@ -8906,10 +9204,10 @@ function useToast() {
|
|
|
8906
9204
|
return context;
|
|
8907
9205
|
}
|
|
8908
9206
|
var TONE_ICON3 = {
|
|
8909
|
-
info: /* @__PURE__ */
|
|
8910
|
-
positive: /* @__PURE__ */
|
|
8911
|
-
warning: /* @__PURE__ */
|
|
8912
|
-
danger: /* @__PURE__ */
|
|
9207
|
+
info: /* @__PURE__ */ jsx106(LuInfo4, { "aria-hidden": true, className: "size-4" }),
|
|
9208
|
+
positive: /* @__PURE__ */ jsx106(LuCircleCheckBig4, { "aria-hidden": true, className: "size-4" }),
|
|
9209
|
+
warning: /* @__PURE__ */ jsx106(LuTriangleAlert4, { "aria-hidden": true, className: "size-4" }),
|
|
9210
|
+
danger: /* @__PURE__ */ jsx106(LuTriangleAlert4, { "aria-hidden": true, className: "size-4" })
|
|
8913
9211
|
};
|
|
8914
9212
|
var TONE_ICON_COLOR2 = {
|
|
8915
9213
|
info: "text-icon-brand",
|
|
@@ -8931,9 +9229,9 @@ function Toaster({
|
|
|
8931
9229
|
max = 4,
|
|
8932
9230
|
duration = 5e3
|
|
8933
9231
|
}) {
|
|
8934
|
-
const [toasts, setToasts] =
|
|
8935
|
-
const timers =
|
|
8936
|
-
const counter =
|
|
9232
|
+
const [toasts, setToasts] = useState23([]);
|
|
9233
|
+
const timers = useRef28(/* @__PURE__ */ new Map());
|
|
9234
|
+
const counter = useRef28(0);
|
|
8937
9235
|
const dismiss = useCallback11((id) => {
|
|
8938
9236
|
const timer = timers.current.get(id);
|
|
8939
9237
|
if (timer) {
|
|
@@ -8970,41 +9268,41 @@ function Toaster({
|
|
|
8970
9268
|
map.clear();
|
|
8971
9269
|
};
|
|
8972
9270
|
}, []);
|
|
8973
|
-
const context =
|
|
8974
|
-
return /* @__PURE__ */
|
|
9271
|
+
const context = useMemo16(() => ({ toast, dismiss, dismissAll }), [toast, dismiss, dismissAll]);
|
|
9272
|
+
return /* @__PURE__ */ jsxs72(ToastContext.Provider, { value: context, children: [
|
|
8975
9273
|
children,
|
|
8976
|
-
/* @__PURE__ */
|
|
9274
|
+
/* @__PURE__ */ jsx106(Portal, { children: /* @__PURE__ */ jsx106(
|
|
8977
9275
|
"div",
|
|
8978
9276
|
{
|
|
8979
9277
|
"aria-live": "polite",
|
|
8980
9278
|
"aria-atomic": "false",
|
|
8981
|
-
className:
|
|
9279
|
+
className: clsx99(
|
|
8982
9280
|
"pointer-events-none fixed z-toast flex w-full max-w-[380px] flex-col gap-2",
|
|
8983
9281
|
POSITION[position]
|
|
8984
9282
|
),
|
|
8985
|
-
children: toasts.map((entry) => /* @__PURE__ */
|
|
9283
|
+
children: toasts.map((entry) => /* @__PURE__ */ jsx106(ToastItem, { toast: entry, onDismiss: () => dismiss(entry.id) }, entry.id))
|
|
8986
9284
|
}
|
|
8987
9285
|
) })
|
|
8988
9286
|
] });
|
|
8989
9287
|
}
|
|
8990
9288
|
function ToastItem({ toast, onDismiss }) {
|
|
8991
9289
|
const tone = toast.tone ?? "info";
|
|
8992
|
-
return /* @__PURE__ */
|
|
9290
|
+
return /* @__PURE__ */ jsxs72(
|
|
8993
9291
|
"div",
|
|
8994
9292
|
{
|
|
8995
9293
|
role: tone === "danger" ? "alert" : "status",
|
|
8996
|
-
className:
|
|
9294
|
+
className: clsx99(
|
|
8997
9295
|
"pointer-events-auto flex w-full items-start gap-3 rounded-xl border border-default",
|
|
8998
9296
|
"bg-default p-4 shadow-400"
|
|
8999
9297
|
),
|
|
9000
9298
|
children: [
|
|
9001
|
-
/* @__PURE__ */
|
|
9002
|
-
/* @__PURE__ */
|
|
9003
|
-
/* @__PURE__ */
|
|
9004
|
-
toast.description && /* @__PURE__ */
|
|
9005
|
-
toast.action && /* @__PURE__ */
|
|
9299
|
+
/* @__PURE__ */ jsx106("span", { "aria-hidden": true, className: clsx99("mt-px shrink-0", TONE_ICON_COLOR2[tone]), children: TONE_ICON3[tone] }),
|
|
9300
|
+
/* @__PURE__ */ jsxs72("div", { className: "min-w-0 flex-1", children: [
|
|
9301
|
+
/* @__PURE__ */ jsx106("p", { className: "text-body-sm font-semibold text-default", children: toast.title }),
|
|
9302
|
+
toast.description && /* @__PURE__ */ jsx106("p", { className: "mt-0.5 text-body-xs text-default-secondary", children: toast.description }),
|
|
9303
|
+
toast.action && /* @__PURE__ */ jsx106("div", { className: "mt-2 flex items-center gap-2", children: toast.action })
|
|
9006
9304
|
] }),
|
|
9007
|
-
/* @__PURE__ */
|
|
9305
|
+
/* @__PURE__ */ jsx106(
|
|
9008
9306
|
IconButton,
|
|
9009
9307
|
{
|
|
9010
9308
|
variant: "subtle",
|
|
@@ -9012,7 +9310,7 @@ function ToastItem({ toast, onDismiss }) {
|
|
|
9012
9310
|
"aria-label": typeof toast.title === "string" ? `Dismiss: ${toast.title}` : "Dismiss",
|
|
9013
9311
|
onClick: onDismiss,
|
|
9014
9312
|
className: "-mr-1 -mt-1 shrink-0",
|
|
9015
|
-
children: /* @__PURE__ */
|
|
9313
|
+
children: /* @__PURE__ */ jsx106(LuX7, { "aria-hidden": true, size: 14 })
|
|
9016
9314
|
}
|
|
9017
9315
|
)
|
|
9018
9316
|
]
|
|
@@ -9021,25 +9319,25 @@ function ToastItem({ toast, onDismiss }) {
|
|
|
9021
9319
|
}
|
|
9022
9320
|
|
|
9023
9321
|
// src/components/forms/password-input.tsx
|
|
9024
|
-
import { forwardRef as forwardRef28, useState as
|
|
9322
|
+
import { forwardRef as forwardRef28, useState as useState24 } from "react";
|
|
9025
9323
|
import { LuEye, LuEyeOff } from "react-icons/lu";
|
|
9026
|
-
import { jsx as
|
|
9324
|
+
import { jsx as jsx107 } from "react/jsx-runtime";
|
|
9027
9325
|
var PasswordInput = forwardRef28(function PasswordInput2(props, ref) {
|
|
9028
|
-
const [visible, setVisible] =
|
|
9029
|
-
return /* @__PURE__ */
|
|
9326
|
+
const [visible, setVisible] = useState24(false);
|
|
9327
|
+
return /* @__PURE__ */ jsx107(
|
|
9030
9328
|
Input,
|
|
9031
9329
|
{
|
|
9032
9330
|
ref,
|
|
9033
9331
|
...props,
|
|
9034
9332
|
type: visible ? "text" : "password",
|
|
9035
|
-
trailingAction: /* @__PURE__ */
|
|
9333
|
+
trailingAction: /* @__PURE__ */ jsx107(
|
|
9036
9334
|
"button",
|
|
9037
9335
|
{
|
|
9038
9336
|
type: "button",
|
|
9039
9337
|
"aria-label": visible ? "Hide password" : "Show password",
|
|
9040
9338
|
onClick: () => setVisible((v) => !v),
|
|
9041
9339
|
className: "flex items-center justify-center rounded transition-colors hover:text-default focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand",
|
|
9042
|
-
children: visible ? /* @__PURE__ */
|
|
9340
|
+
children: visible ? /* @__PURE__ */ jsx107(LuEyeOff, { "aria-hidden": true, className: "size-4" }) : /* @__PURE__ */ jsx107(LuEye, { "aria-hidden": true, className: "size-4" })
|
|
9043
9341
|
}
|
|
9044
9342
|
)
|
|
9045
9343
|
}
|
|
@@ -9047,31 +9345,31 @@ var PasswordInput = forwardRef28(function PasswordInput2(props, ref) {
|
|
|
9047
9345
|
});
|
|
9048
9346
|
|
|
9049
9347
|
// src/components/ai/ai-chat-bar.tsx
|
|
9050
|
-
import
|
|
9348
|
+
import clsx100 from "clsx";
|
|
9051
9349
|
import { LuArrowRight as LuArrowRight2, LuSearch as LuSearch3 } from "react-icons/lu";
|
|
9052
|
-
import { jsx as
|
|
9350
|
+
import { jsx as jsx108, jsxs as jsxs73 } from "react/jsx-runtime";
|
|
9053
9351
|
function AIChatBar({
|
|
9054
9352
|
placeholder = "Ask Intelligence about any entity, supplier, or risk\u2026",
|
|
9055
9353
|
className
|
|
9056
9354
|
}) {
|
|
9057
|
-
return /* @__PURE__ */
|
|
9355
|
+
return /* @__PURE__ */ jsxs73(
|
|
9058
9356
|
"div",
|
|
9059
9357
|
{
|
|
9060
|
-
className:
|
|
9358
|
+
className: clsx100(
|
|
9061
9359
|
"flex h-16 items-center gap-3 rounded-2xl border border-default bg-default px-6 shadow-panel",
|
|
9062
9360
|
className
|
|
9063
9361
|
),
|
|
9064
9362
|
children: [
|
|
9065
|
-
/* @__PURE__ */
|
|
9066
|
-
/* @__PURE__ */
|
|
9067
|
-
/* @__PURE__ */
|
|
9363
|
+
/* @__PURE__ */ jsx108("span", { "aria-hidden": true, className: "shrink-0 text-icon-default-secondary", children: /* @__PURE__ */ jsx108(LuSearch3, { className: "size-4" }) }),
|
|
9364
|
+
/* @__PURE__ */ jsx108("p", { className: "flex-1 text-body-sm text-default-tertiary truncate", children: placeholder }),
|
|
9365
|
+
/* @__PURE__ */ jsxs73(
|
|
9068
9366
|
"button",
|
|
9069
9367
|
{
|
|
9070
9368
|
type: "button",
|
|
9071
9369
|
className: "inline-flex shrink-0 items-center gap-2 rounded-xl bg-brand px-4 py-3 text-body-sm font-semibold text-brand-on-brand hover:bg-brand-hover transition-colors",
|
|
9072
9370
|
children: [
|
|
9073
9371
|
"Ask",
|
|
9074
|
-
/* @__PURE__ */
|
|
9372
|
+
/* @__PURE__ */ jsx108(LuArrowRight2, { "aria-hidden": true, className: "size-4" })
|
|
9075
9373
|
]
|
|
9076
9374
|
}
|
|
9077
9375
|
)
|
|
@@ -9081,42 +9379,42 @@ function AIChatBar({
|
|
|
9081
9379
|
}
|
|
9082
9380
|
|
|
9083
9381
|
// src/components/ai/ai-suggestion-chip.tsx
|
|
9084
|
-
import
|
|
9382
|
+
import clsx101 from "clsx";
|
|
9085
9383
|
import { LuArrowRight as LuArrowRight3, LuCpu } from "react-icons/lu";
|
|
9086
|
-
import { jsx as
|
|
9384
|
+
import { jsx as jsx109, jsxs as jsxs74 } from "react/jsx-runtime";
|
|
9087
9385
|
function AISuggestionChip({ prompt, onClick, className }) {
|
|
9088
|
-
return /* @__PURE__ */
|
|
9386
|
+
return /* @__PURE__ */ jsxs74(
|
|
9089
9387
|
"button",
|
|
9090
9388
|
{
|
|
9091
9389
|
type: "button",
|
|
9092
9390
|
onClick,
|
|
9093
|
-
className:
|
|
9391
|
+
className: clsx101(
|
|
9094
9392
|
"flex h-12 w-full items-center gap-3 rounded-xl border border-default bg-default px-3 text-left hover:bg-default-hover transition-colors",
|
|
9095
9393
|
className
|
|
9096
9394
|
),
|
|
9097
9395
|
children: [
|
|
9098
|
-
/* @__PURE__ */
|
|
9099
|
-
/* @__PURE__ */
|
|
9100
|
-
/* @__PURE__ */
|
|
9396
|
+
/* @__PURE__ */ jsx109("span", { "aria-hidden": true, className: "shrink-0 text-icon-brand", children: /* @__PURE__ */ jsx109(LuCpu, { className: "size-4" }) }),
|
|
9397
|
+
/* @__PURE__ */ jsx109("span", { className: "flex-1 text-body-sm text-default truncate", children: prompt }),
|
|
9398
|
+
/* @__PURE__ */ jsx109("span", { "aria-hidden": true, className: "shrink-0 text-icon-default-secondary", children: /* @__PURE__ */ jsx109(LuArrowRight3, { className: "size-3.5", strokeWidth: 2.5 }) })
|
|
9101
9399
|
]
|
|
9102
9400
|
}
|
|
9103
9401
|
);
|
|
9104
9402
|
}
|
|
9105
9403
|
|
|
9106
9404
|
// src/components/ai/quick-actions-bar.tsx
|
|
9107
|
-
import
|
|
9108
|
-
import { jsx as
|
|
9405
|
+
import clsx102 from "clsx";
|
|
9406
|
+
import { jsx as jsx110 } from "react/jsx-runtime";
|
|
9109
9407
|
function QuickActionsBar({ actions, active, onSelect, className }) {
|
|
9110
|
-
return /* @__PURE__ */
|
|
9408
|
+
return /* @__PURE__ */ jsx110("div", { className: clsx102("flex flex-wrap items-center gap-3", className), children: actions.map((action) => {
|
|
9111
9409
|
const isActive = active === action.value;
|
|
9112
|
-
return /* @__PURE__ */
|
|
9410
|
+
return /* @__PURE__ */ jsx110(
|
|
9113
9411
|
"button",
|
|
9114
9412
|
{
|
|
9115
9413
|
type: "button",
|
|
9116
9414
|
"aria-pressed": isActive,
|
|
9117
9415
|
onClick: () => onSelect?.(action.value),
|
|
9118
9416
|
className: "rounded-full focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand focus-visible:ring-offset-1 focus-visible:ring-offset-default",
|
|
9119
|
-
children: /* @__PURE__ */
|
|
9417
|
+
children: /* @__PURE__ */ jsx110(TagPill, { label: action.label, tone: isActive ? "brand" : "default" })
|
|
9120
9418
|
},
|
|
9121
9419
|
action.value
|
|
9122
9420
|
);
|
|
@@ -9124,14 +9422,14 @@ function QuickActionsBar({ actions, active, onSelect, className }) {
|
|
|
9124
9422
|
}
|
|
9125
9423
|
|
|
9126
9424
|
// src/components/decorative/aurora-backdrop.tsx
|
|
9127
|
-
import { jsx as
|
|
9425
|
+
import { jsx as jsx111, jsxs as jsxs75 } from "react/jsx-runtime";
|
|
9128
9426
|
function AuroraBackdrop() {
|
|
9129
|
-
return /* @__PURE__ */
|
|
9130
|
-
/* @__PURE__ */
|
|
9131
|
-
/* @__PURE__ */
|
|
9132
|
-
/* @__PURE__ */
|
|
9133
|
-
/* @__PURE__ */
|
|
9134
|
-
/* @__PURE__ */
|
|
9427
|
+
return /* @__PURE__ */ jsxs75("div", { className: "pointer-events-none absolute inset-0", "aria-hidden": true, children: [
|
|
9428
|
+
/* @__PURE__ */ jsx111("div", { className: "absolute -left-24 -top-28", style: { width: 380, height: 380, background: "radial-gradient(ellipse, rgba(249,133,133,0.45) 0%, transparent 70%)" } }),
|
|
9429
|
+
/* @__PURE__ */ jsx111("div", { className: "absolute -top-24 right-[-4%]", style: { width: 320, height: 320, background: "radial-gradient(ellipse, rgba(254,160,160,0.4) 0%, transparent 70%)" } }),
|
|
9430
|
+
/* @__PURE__ */ jsx111("div", { className: "absolute bottom-[-10%] right-[14%]", style: { width: 420, height: 420, background: "radial-gradient(ellipse, rgba(196,181,253,0.3) 0%, transparent 70%)" } }),
|
|
9431
|
+
/* @__PURE__ */ jsx111("div", { className: "absolute bottom-[-6%] left-[4%]", style: { width: 280, height: 280, background: "radial-gradient(ellipse, rgba(147,197,253,0.25) 0%, transparent 70%)" } }),
|
|
9432
|
+
/* @__PURE__ */ jsx111("div", { className: "absolute left-[20%] top-[30%]", style: { width: 240, height: 240, background: "radial-gradient(ellipse, rgba(173,216,255,0.18) 0%, transparent 70%)" } })
|
|
9135
9433
|
] });
|
|
9136
9434
|
}
|
|
9137
9435
|
export {
|
|
@@ -9157,6 +9455,7 @@ export {
|
|
|
9157
9455
|
CHART_SEQUENCE,
|
|
9158
9456
|
CHART_TONE,
|
|
9159
9457
|
CHART_TRACK,
|
|
9458
|
+
COUNTRY_CODES,
|
|
9160
9459
|
Calendar,
|
|
9161
9460
|
Card,
|
|
9162
9461
|
CardAction,
|
|
@@ -9193,6 +9492,7 @@ export {
|
|
|
9193
9492
|
ContextMenuTrigger,
|
|
9194
9493
|
ControlSizeProvider,
|
|
9195
9494
|
CountBadge,
|
|
9495
|
+
CountrySelect,
|
|
9196
9496
|
DEFAULT_SCORE_THRESHOLDS,
|
|
9197
9497
|
DataTable,
|
|
9198
9498
|
DatePicker,
|
|
@@ -9340,6 +9640,7 @@ export {
|
|
|
9340
9640
|
Textarea,
|
|
9341
9641
|
TextareaControl,
|
|
9342
9642
|
TileGrid,
|
|
9643
|
+
TimeZoneSelect,
|
|
9343
9644
|
TitleHero,
|
|
9344
9645
|
TitlePage,
|
|
9345
9646
|
Toaster,
|
|
@@ -9348,17 +9649,22 @@ export {
|
|
|
9348
9649
|
ToggleGroupItem,
|
|
9349
9650
|
Tooltip,
|
|
9350
9651
|
TrailChip,
|
|
9652
|
+
TreeView,
|
|
9351
9653
|
TrendLabel,
|
|
9352
9654
|
UserStatusPill,
|
|
9353
9655
|
WidgetFooter,
|
|
9354
9656
|
WidgetHeader,
|
|
9355
9657
|
WidgetTitle,
|
|
9356
9658
|
cn,
|
|
9659
|
+
countryOptions,
|
|
9660
|
+
currentZoneName,
|
|
9357
9661
|
getScoreTone,
|
|
9358
9662
|
paginationRange,
|
|
9359
9663
|
resolveChartColor,
|
|
9360
9664
|
tabId,
|
|
9361
9665
|
tabPanelId,
|
|
9666
|
+
timeZoneOffset,
|
|
9667
|
+
timeZoneOptions,
|
|
9362
9668
|
useControlSize,
|
|
9363
9669
|
useFieldContext,
|
|
9364
9670
|
useFieldControl,
|