@almadar/ui 4.57.5 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/avl/index.cjs +2499 -1903
- package/dist/avl/index.js +1111 -518
- package/dist/components/atoms/Icon.d.ts +7 -4
- package/dist/components/index.cjs +2064 -1636
- package/dist/components/index.js +905 -480
- package/dist/components/molecules/Breadcrumb.d.ts +4 -4
- package/dist/components/molecules/EmptyState.d.ts +1 -1
- package/dist/components/templates/DashboardLayout.d.ts +1 -1
- package/dist/context/index.cjs +199 -0
- package/dist/context/index.js +199 -0
- package/dist/context/themeTokens.d.ts +1 -1
- package/dist/docs/index.cjs +456 -98
- package/dist/docs/index.d.cts +7 -4
- package/dist/docs/index.js +429 -74
- package/dist/lib/iconFamily.d.ts +41 -0
- package/dist/marketing/index.cjs +480 -124
- package/dist/marketing/index.d.cts +7 -4
- package/dist/marketing/index.js +446 -93
- package/dist/providers/index.cjs +1933 -1505
- package/dist/providers/index.js +909 -484
- package/dist/runtime/index.cjs +2130 -1534
- package/dist/runtime/index.js +1071 -478
- package/package.json +5 -2
- package/tailwind-preset.cjs +118 -3
- package/themes/_contract.md +198 -0
- package/themes/almadar-website.css +212 -0
- package/themes/almadar.css +210 -0
- package/themes/arctic.css +210 -0
- package/themes/atelier.css +427 -0
- package/themes/copper.css +210 -0
- package/themes/ember.css +210 -0
- package/themes/forest.css +210 -0
- package/themes/gazette.css +411 -0
- package/themes/index.css +12 -0
- package/themes/kiosk.css +412 -0
- package/themes/lavender.css +210 -0
- package/themes/midnight.css +210 -0
- package/themes/minimalist.css +210 -0
- package/themes/neon.css +210 -0
- package/themes/ocean.css +210 -0
- package/themes/prism.css +406 -0
- package/themes/rose.css +210 -0
- package/themes/sand.css +210 -0
- package/themes/slate.css +210 -0
- package/themes/sunset.css +210 -0
- package/themes/terminal.css +422 -0
- package/themes/trait-wars.css +210 -0
- package/themes/wireframe.css +216 -0
package/dist/components/index.js
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import * as
|
|
3
|
-
import
|
|
2
|
+
import * as React80 from 'react';
|
|
3
|
+
import React80__default, { useContext, useMemo, useRef, useEffect, useCallback, createContext, Suspense, useState, lazy, useSyncExternalStore, useLayoutEffect, useId } from 'react';
|
|
4
4
|
import { clsx } from 'clsx';
|
|
5
5
|
import { twMerge } from 'tailwind-merge';
|
|
6
6
|
import { EventBusContext, useTraitScope, TraitScopeProvider } from '@almadar/ui/providers';
|
|
7
7
|
import { createLogger, isLogLevelEnabled } from '@almadar/logger';
|
|
8
|
-
import * as
|
|
9
|
-
import { Loader2, X,
|
|
8
|
+
import * as LucideIcons2 from 'lucide-react';
|
|
9
|
+
import { Loader2, X, List, Printer, ChevronRight, ChevronLeft, CheckCircle, XCircle, Wrench, RotateCcw, Send, Code, FileText, WrapText, Check, Copy, AlertTriangle, Trash2, Search, ChevronUp, ChevronDown, MoreHorizontal, Bug, ZoomOut, ZoomIn, Download, Menu as Menu$1, Package, Calendar, Pencil, Eye, Image as Image$1, Upload, ArrowRight, ArrowLeft, Eraser, Pause, Play, SkipForward, TrendingUp, TrendingDown, Minus, ArrowUp, ArrowDown, MoreVertical, AlertCircle, Circle, Clock, CheckCircle2, HelpCircle, Type, Heading1, Heading2, Heading3, ListOrdered, Quote, GitBranch, Plus, Trash, Tag, User, DollarSign, Zap, Sword, Move, Heart, Shield } from 'lucide-react';
|
|
10
|
+
import * as PhosphorIcons from '@phosphor-icons/react';
|
|
11
|
+
import * as TablerIcons from '@tabler/icons-react';
|
|
12
|
+
import * as FaIcons from 'react-icons/fa';
|
|
10
13
|
import { evaluate, createMinimalContext } from '@almadar/evaluator';
|
|
11
14
|
import { createPortal } from 'react-dom';
|
|
12
15
|
import { Link, Outlet, useLocation } from 'react-router-dom';
|
|
@@ -206,7 +209,7 @@ var init_SvgFlow = __esm({
|
|
|
206
209
|
opacity = 1,
|
|
207
210
|
className
|
|
208
211
|
}) => {
|
|
209
|
-
const markerId =
|
|
212
|
+
const markerId = React80__default.useMemo(() => {
|
|
210
213
|
flowIdCounter += 1;
|
|
211
214
|
return `almadar-flow-arrow-${flowIdCounter}`;
|
|
212
215
|
}, []);
|
|
@@ -749,7 +752,7 @@ var init_SvgRing = __esm({
|
|
|
749
752
|
className,
|
|
750
753
|
label
|
|
751
754
|
}) => {
|
|
752
|
-
const gradientId =
|
|
755
|
+
const gradientId = React80__default.useMemo(() => {
|
|
753
756
|
ringIdCounter += 1;
|
|
754
757
|
return `almadar-ring-glow-${ringIdCounter}`;
|
|
755
758
|
}, []);
|
|
@@ -1084,12 +1087,378 @@ var init_useEventBus = __esm({
|
|
|
1084
1087
|
useEventBus_default = useEventBus;
|
|
1085
1088
|
}
|
|
1086
1089
|
});
|
|
1090
|
+
function getCurrentIconFamily() {
|
|
1091
|
+
if (typeof window === "undefined" || typeof document === "undefined") {
|
|
1092
|
+
return DEFAULT_FAMILY;
|
|
1093
|
+
}
|
|
1094
|
+
const raw = getComputedStyle(document.documentElement).getPropertyValue("--icon-family").trim().replace(/^["']|["']$/g, "");
|
|
1095
|
+
return VALID_FAMILIES.includes(raw) ? raw : DEFAULT_FAMILY;
|
|
1096
|
+
}
|
|
1097
|
+
function ensureObserver() {
|
|
1098
|
+
if (typeof window === "undefined" || observer) return;
|
|
1099
|
+
observer = new MutationObserver(() => {
|
|
1100
|
+
const next = getCurrentIconFamily();
|
|
1101
|
+
if (next !== cachedFamily) {
|
|
1102
|
+
cachedFamily = next;
|
|
1103
|
+
listeners.forEach((fn) => fn());
|
|
1104
|
+
}
|
|
1105
|
+
});
|
|
1106
|
+
observer.observe(document.documentElement, {
|
|
1107
|
+
attributes: true,
|
|
1108
|
+
attributeFilter: ["data-theme", "style"]
|
|
1109
|
+
});
|
|
1110
|
+
cachedFamily = getCurrentIconFamily();
|
|
1111
|
+
}
|
|
1112
|
+
function subscribeIconFamily(notify2) {
|
|
1113
|
+
ensureObserver();
|
|
1114
|
+
listeners.add(notify2);
|
|
1115
|
+
return () => {
|
|
1116
|
+
listeners.delete(notify2);
|
|
1117
|
+
};
|
|
1118
|
+
}
|
|
1119
|
+
function getIconFamilySnapshot() {
|
|
1120
|
+
if (cachedFamily !== null) return cachedFamily;
|
|
1121
|
+
cachedFamily = getCurrentIconFamily();
|
|
1122
|
+
return cachedFamily;
|
|
1123
|
+
}
|
|
1124
|
+
function getIconFamilyServerSnapshot() {
|
|
1125
|
+
return DEFAULT_FAMILY;
|
|
1126
|
+
}
|
|
1127
|
+
function useIconFamily() {
|
|
1128
|
+
return useSyncExternalStore(
|
|
1129
|
+
subscribeIconFamily,
|
|
1130
|
+
getIconFamilySnapshot,
|
|
1131
|
+
getIconFamilyServerSnapshot
|
|
1132
|
+
);
|
|
1133
|
+
}
|
|
1087
1134
|
function kebabToPascal(name) {
|
|
1088
1135
|
return name.split("-").map((part) => {
|
|
1089
1136
|
if (/^\d+$/.test(part)) return part;
|
|
1090
1137
|
return part.charAt(0).toUpperCase() + part.slice(1);
|
|
1091
1138
|
}).join("");
|
|
1092
1139
|
}
|
|
1140
|
+
function resolveLucide(name) {
|
|
1141
|
+
if (lucideAliases[name]) return lucideAliases[name];
|
|
1142
|
+
const pascal = kebabToPascal(name);
|
|
1143
|
+
const lucideMap = LucideIcons2;
|
|
1144
|
+
const direct = lucideMap[pascal];
|
|
1145
|
+
if (direct && typeof direct === "object") return direct;
|
|
1146
|
+
const asIs = lucideMap[name];
|
|
1147
|
+
if (asIs && typeof asIs === "object") return asIs;
|
|
1148
|
+
return LucideIcons2.HelpCircle;
|
|
1149
|
+
}
|
|
1150
|
+
function resolvePhosphor(name, weight) {
|
|
1151
|
+
const target = phosphorAliases[name] ?? kebabToPascal(name);
|
|
1152
|
+
const map = PhosphorIcons;
|
|
1153
|
+
const PhosphorComp = map[target];
|
|
1154
|
+
if (!PhosphorComp || typeof PhosphorComp !== "object") return null;
|
|
1155
|
+
const Component = PhosphorComp;
|
|
1156
|
+
const Adapter = (props) => /* @__PURE__ */ jsx(
|
|
1157
|
+
Component,
|
|
1158
|
+
{
|
|
1159
|
+
weight,
|
|
1160
|
+
className: props.className,
|
|
1161
|
+
style: props.style,
|
|
1162
|
+
size: props.size ?? "1em"
|
|
1163
|
+
}
|
|
1164
|
+
);
|
|
1165
|
+
Adapter.displayName = `Phosphor.${target}.${weight}`;
|
|
1166
|
+
return Adapter;
|
|
1167
|
+
}
|
|
1168
|
+
function resolveTabler(name) {
|
|
1169
|
+
const suffix = tablerAliases[name] ?? kebabToPascal(name);
|
|
1170
|
+
const target = `Icon${suffix}`;
|
|
1171
|
+
const map = TablerIcons;
|
|
1172
|
+
const TablerComp = map[target];
|
|
1173
|
+
if (!TablerComp || typeof TablerComp !== "object") return null;
|
|
1174
|
+
const Component = TablerComp;
|
|
1175
|
+
const Adapter = (props) => /* @__PURE__ */ jsx(
|
|
1176
|
+
Component,
|
|
1177
|
+
{
|
|
1178
|
+
stroke: props.strokeWidth ?? 1.5,
|
|
1179
|
+
className: props.className,
|
|
1180
|
+
style: props.style,
|
|
1181
|
+
size: props.size ?? 24
|
|
1182
|
+
}
|
|
1183
|
+
);
|
|
1184
|
+
Adapter.displayName = `Tabler.${target}`;
|
|
1185
|
+
return Adapter;
|
|
1186
|
+
}
|
|
1187
|
+
function resolveFa(name) {
|
|
1188
|
+
const suffix = faAliases[name] ?? kebabToPascal(name);
|
|
1189
|
+
const target = `Fa${suffix}`;
|
|
1190
|
+
const map = FaIcons;
|
|
1191
|
+
const FaComp = map[target];
|
|
1192
|
+
if (!FaComp || typeof FaComp !== "function") return null;
|
|
1193
|
+
const Component = FaComp;
|
|
1194
|
+
const Adapter = (props) => /* @__PURE__ */ jsx(
|
|
1195
|
+
Component,
|
|
1196
|
+
{
|
|
1197
|
+
className: props.className,
|
|
1198
|
+
style: props.style,
|
|
1199
|
+
size: props.size ?? "1em"
|
|
1200
|
+
}
|
|
1201
|
+
);
|
|
1202
|
+
Adapter.displayName = `Fa.${target}`;
|
|
1203
|
+
return Adapter;
|
|
1204
|
+
}
|
|
1205
|
+
function warnFallback(name, family) {
|
|
1206
|
+
const key = `${family}::${name}`;
|
|
1207
|
+
if (warned.has(key)) return;
|
|
1208
|
+
warned.add(key);
|
|
1209
|
+
if (typeof console !== "undefined") {
|
|
1210
|
+
console.warn(
|
|
1211
|
+
`[iconFamily] No '${name}' mapping in family '${family}'; falling back to lucide. Add an alias in lib/iconFamily.ts.`
|
|
1212
|
+
);
|
|
1213
|
+
}
|
|
1214
|
+
}
|
|
1215
|
+
function makeLucideAdapter(name) {
|
|
1216
|
+
const LucideComp = resolveLucide(name);
|
|
1217
|
+
const Adapter = (props) => /* @__PURE__ */ jsx(
|
|
1218
|
+
LucideComp,
|
|
1219
|
+
{
|
|
1220
|
+
className: props.className,
|
|
1221
|
+
strokeWidth: props.strokeWidth,
|
|
1222
|
+
style: props.style,
|
|
1223
|
+
size: props.size
|
|
1224
|
+
}
|
|
1225
|
+
);
|
|
1226
|
+
Adapter.displayName = `Lucide.${name}`;
|
|
1227
|
+
return Adapter;
|
|
1228
|
+
}
|
|
1229
|
+
function resolveIconForFamily(name, family) {
|
|
1230
|
+
switch (family) {
|
|
1231
|
+
case "lucide":
|
|
1232
|
+
return makeLucideAdapter(name);
|
|
1233
|
+
case "phosphor-outline": {
|
|
1234
|
+
const p2 = resolvePhosphor(name, "regular");
|
|
1235
|
+
if (p2) return p2;
|
|
1236
|
+
warnFallback(name, family);
|
|
1237
|
+
return makeLucideAdapter(name);
|
|
1238
|
+
}
|
|
1239
|
+
case "phosphor-fill": {
|
|
1240
|
+
const p2 = resolvePhosphor(name, "fill");
|
|
1241
|
+
if (p2) return p2;
|
|
1242
|
+
warnFallback(name, family);
|
|
1243
|
+
return makeLucideAdapter(name);
|
|
1244
|
+
}
|
|
1245
|
+
case "phosphor-duotone": {
|
|
1246
|
+
const p2 = resolvePhosphor(name, "duotone");
|
|
1247
|
+
if (p2) return p2;
|
|
1248
|
+
warnFallback(name, family);
|
|
1249
|
+
return makeLucideAdapter(name);
|
|
1250
|
+
}
|
|
1251
|
+
case "tabler": {
|
|
1252
|
+
const t = resolveTabler(name);
|
|
1253
|
+
if (t) return t;
|
|
1254
|
+
warnFallback(name, family);
|
|
1255
|
+
return makeLucideAdapter(name);
|
|
1256
|
+
}
|
|
1257
|
+
case "fa-solid": {
|
|
1258
|
+
const f3 = resolveFa(name);
|
|
1259
|
+
if (f3) return f3;
|
|
1260
|
+
warnFallback(name, family);
|
|
1261
|
+
return makeLucideAdapter(name);
|
|
1262
|
+
}
|
|
1263
|
+
}
|
|
1264
|
+
}
|
|
1265
|
+
var DEFAULT_FAMILY, VALID_FAMILIES, cachedFamily, listeners, observer, lucideAliases, phosphorAliases, tablerAliases, faAliases, warned;
|
|
1266
|
+
var init_iconFamily = __esm({
|
|
1267
|
+
"lib/iconFamily.tsx"() {
|
|
1268
|
+
"use client";
|
|
1269
|
+
DEFAULT_FAMILY = "lucide";
|
|
1270
|
+
VALID_FAMILIES = [
|
|
1271
|
+
"lucide",
|
|
1272
|
+
"phosphor-outline",
|
|
1273
|
+
"phosphor-fill",
|
|
1274
|
+
"phosphor-duotone",
|
|
1275
|
+
"tabler",
|
|
1276
|
+
"fa-solid"
|
|
1277
|
+
];
|
|
1278
|
+
cachedFamily = null;
|
|
1279
|
+
listeners = /* @__PURE__ */ new Set();
|
|
1280
|
+
observer = null;
|
|
1281
|
+
lucideAliases = {
|
|
1282
|
+
close: LucideIcons2.X,
|
|
1283
|
+
trash: LucideIcons2.Trash2,
|
|
1284
|
+
loader: LucideIcons2.Loader2,
|
|
1285
|
+
stop: LucideIcons2.Square,
|
|
1286
|
+
volume: LucideIcons2.Volume2,
|
|
1287
|
+
"volume-off": LucideIcons2.VolumeX,
|
|
1288
|
+
refresh: LucideIcons2.RefreshCw,
|
|
1289
|
+
share: LucideIcons2.Share2,
|
|
1290
|
+
"sort-asc": LucideIcons2.ArrowUpNarrowWide,
|
|
1291
|
+
"sort-desc": LucideIcons2.ArrowDownNarrowWide
|
|
1292
|
+
};
|
|
1293
|
+
phosphorAliases = {
|
|
1294
|
+
// lucide name → phosphor PascalCase name
|
|
1295
|
+
search: "MagnifyingGlass",
|
|
1296
|
+
close: "X",
|
|
1297
|
+
loader: "CircleNotch",
|
|
1298
|
+
refresh: "ArrowsClockwise",
|
|
1299
|
+
"sort-asc": "SortAscending",
|
|
1300
|
+
"sort-desc": "SortDescending",
|
|
1301
|
+
"chevron-down": "CaretDown",
|
|
1302
|
+
"chevron-up": "CaretUp",
|
|
1303
|
+
"chevron-left": "CaretLeft",
|
|
1304
|
+
"chevron-right": "CaretRight",
|
|
1305
|
+
"help-circle": "Question",
|
|
1306
|
+
"alert-triangle": "Warning",
|
|
1307
|
+
"alert-circle": "WarningCircle",
|
|
1308
|
+
"check-circle": "CheckCircle",
|
|
1309
|
+
"x-circle": "XCircle",
|
|
1310
|
+
edit: "PencilSimple",
|
|
1311
|
+
pencil: "PencilSimple",
|
|
1312
|
+
trash: "Trash",
|
|
1313
|
+
send: "PaperPlaneRight",
|
|
1314
|
+
external: "ArrowSquareOut",
|
|
1315
|
+
"external-link": "ArrowSquareOut",
|
|
1316
|
+
plus: "Plus",
|
|
1317
|
+
minus: "Minus",
|
|
1318
|
+
x: "X",
|
|
1319
|
+
check: "Check",
|
|
1320
|
+
star: "Star",
|
|
1321
|
+
heart: "Heart",
|
|
1322
|
+
home: "House",
|
|
1323
|
+
user: "User",
|
|
1324
|
+
users: "Users",
|
|
1325
|
+
settings: "Gear",
|
|
1326
|
+
menu: "List",
|
|
1327
|
+
"arrow-up": "ArrowUp",
|
|
1328
|
+
"arrow-down": "ArrowDown",
|
|
1329
|
+
"arrow-left": "ArrowLeft",
|
|
1330
|
+
"arrow-right": "ArrowRight",
|
|
1331
|
+
copy: "Copy",
|
|
1332
|
+
download: "DownloadSimple",
|
|
1333
|
+
upload: "UploadSimple",
|
|
1334
|
+
filter: "Funnel",
|
|
1335
|
+
calendar: "Calendar",
|
|
1336
|
+
clock: "Clock",
|
|
1337
|
+
bell: "Bell",
|
|
1338
|
+
mail: "Envelope",
|
|
1339
|
+
envelope: "Envelope",
|
|
1340
|
+
lock: "Lock",
|
|
1341
|
+
unlock: "LockOpen",
|
|
1342
|
+
eye: "Eye",
|
|
1343
|
+
"eye-off": "EyeSlash",
|
|
1344
|
+
more: "DotsThree",
|
|
1345
|
+
"more-vertical": "DotsThreeVertical",
|
|
1346
|
+
info: "Info",
|
|
1347
|
+
warning: "Warning",
|
|
1348
|
+
error: "WarningCircle"
|
|
1349
|
+
};
|
|
1350
|
+
tablerAliases = {
|
|
1351
|
+
// lucide name → tabler suffix (after the `Icon` prefix)
|
|
1352
|
+
search: "Search",
|
|
1353
|
+
close: "X",
|
|
1354
|
+
loader: "Loader2",
|
|
1355
|
+
refresh: "Refresh",
|
|
1356
|
+
"sort-asc": "SortAscending",
|
|
1357
|
+
"sort-desc": "SortDescending",
|
|
1358
|
+
"chevron-down": "ChevronDown",
|
|
1359
|
+
"chevron-up": "ChevronUp",
|
|
1360
|
+
"chevron-left": "ChevronLeft",
|
|
1361
|
+
"chevron-right": "ChevronRight",
|
|
1362
|
+
"help-circle": "HelpCircle",
|
|
1363
|
+
"alert-triangle": "AlertTriangle",
|
|
1364
|
+
"alert-circle": "AlertCircle",
|
|
1365
|
+
"check-circle": "CircleCheck",
|
|
1366
|
+
"x-circle": "CircleX",
|
|
1367
|
+
edit: "Pencil",
|
|
1368
|
+
trash: "Trash",
|
|
1369
|
+
send: "Send",
|
|
1370
|
+
external: "ExternalLink",
|
|
1371
|
+
plus: "Plus",
|
|
1372
|
+
x: "X",
|
|
1373
|
+
check: "Check",
|
|
1374
|
+
star: "Star",
|
|
1375
|
+
heart: "Heart",
|
|
1376
|
+
home: "Home",
|
|
1377
|
+
user: "User",
|
|
1378
|
+
users: "Users",
|
|
1379
|
+
settings: "Settings",
|
|
1380
|
+
menu: "Menu2",
|
|
1381
|
+
copy: "Copy",
|
|
1382
|
+
download: "Download",
|
|
1383
|
+
upload: "Upload",
|
|
1384
|
+
filter: "Filter",
|
|
1385
|
+
calendar: "Calendar",
|
|
1386
|
+
clock: "Clock",
|
|
1387
|
+
bell: "Bell",
|
|
1388
|
+
mail: "Mail",
|
|
1389
|
+
envelope: "Mail",
|
|
1390
|
+
lock: "Lock",
|
|
1391
|
+
unlock: "LockOpen",
|
|
1392
|
+
eye: "Eye",
|
|
1393
|
+
"eye-off": "EyeOff",
|
|
1394
|
+
more: "Dots",
|
|
1395
|
+
"more-vertical": "DotsVertical",
|
|
1396
|
+
info: "InfoCircle"
|
|
1397
|
+
};
|
|
1398
|
+
faAliases = {
|
|
1399
|
+
// lucide name → fa-solid suffix (after the `Fa` prefix)
|
|
1400
|
+
search: "Search",
|
|
1401
|
+
close: "Times",
|
|
1402
|
+
x: "Times",
|
|
1403
|
+
loader: "Spinner",
|
|
1404
|
+
refresh: "Sync",
|
|
1405
|
+
"sort-asc": "SortAmountUp",
|
|
1406
|
+
"sort-desc": "SortAmountDown",
|
|
1407
|
+
"chevron-down": "ChevronDown",
|
|
1408
|
+
"chevron-up": "ChevronUp",
|
|
1409
|
+
"chevron-left": "ChevronLeft",
|
|
1410
|
+
"chevron-right": "ChevronRight",
|
|
1411
|
+
"help-circle": "QuestionCircle",
|
|
1412
|
+
"alert-triangle": "ExclamationTriangle",
|
|
1413
|
+
"alert-circle": "ExclamationCircle",
|
|
1414
|
+
"check-circle": "CheckCircle",
|
|
1415
|
+
"x-circle": "TimesCircle",
|
|
1416
|
+
edit: "Edit",
|
|
1417
|
+
pencil: "Pencil",
|
|
1418
|
+
trash: "Trash",
|
|
1419
|
+
send: "PaperPlane",
|
|
1420
|
+
external: "ExternalLinkAlt",
|
|
1421
|
+
plus: "Plus",
|
|
1422
|
+
minus: "Minus",
|
|
1423
|
+
check: "Check",
|
|
1424
|
+
star: "Star",
|
|
1425
|
+
heart: "Heart",
|
|
1426
|
+
home: "Home",
|
|
1427
|
+
user: "User",
|
|
1428
|
+
users: "Users",
|
|
1429
|
+
settings: "Cog",
|
|
1430
|
+
menu: "Bars",
|
|
1431
|
+
"arrow-up": "ArrowUp",
|
|
1432
|
+
"arrow-down": "ArrowDown",
|
|
1433
|
+
"arrow-left": "ArrowLeft",
|
|
1434
|
+
"arrow-right": "ArrowRight",
|
|
1435
|
+
copy: "Copy",
|
|
1436
|
+
download: "Download",
|
|
1437
|
+
upload: "Upload",
|
|
1438
|
+
filter: "Filter",
|
|
1439
|
+
calendar: "Calendar",
|
|
1440
|
+
clock: "Clock",
|
|
1441
|
+
bell: "Bell",
|
|
1442
|
+
mail: "Envelope",
|
|
1443
|
+
envelope: "Envelope",
|
|
1444
|
+
lock: "Lock",
|
|
1445
|
+
unlock: "LockOpen",
|
|
1446
|
+
eye: "Eye",
|
|
1447
|
+
"eye-off": "EyeSlash",
|
|
1448
|
+
more: "EllipsisH",
|
|
1449
|
+
"more-vertical": "EllipsisV",
|
|
1450
|
+
info: "InfoCircle",
|
|
1451
|
+
warning: "ExclamationTriangle"
|
|
1452
|
+
};
|
|
1453
|
+
warned = /* @__PURE__ */ new Set();
|
|
1454
|
+
}
|
|
1455
|
+
});
|
|
1456
|
+
function kebabToPascal2(name) {
|
|
1457
|
+
return name.split("-").map((part) => {
|
|
1458
|
+
if (/^\d+$/.test(part)) return part;
|
|
1459
|
+
return part.charAt(0).toUpperCase() + part.slice(1);
|
|
1460
|
+
}).join("");
|
|
1461
|
+
}
|
|
1093
1462
|
function resolveIcon(name) {
|
|
1094
1463
|
const cached = resolvedCache.get(name);
|
|
1095
1464
|
if (cached) return cached;
|
|
@@ -1099,28 +1468,30 @@ function resolveIcon(name) {
|
|
|
1099
1468
|
}
|
|
1100
1469
|
function doResolve(name) {
|
|
1101
1470
|
if (iconAliases[name]) return iconAliases[name];
|
|
1102
|
-
const pascalName =
|
|
1103
|
-
const directLookup =
|
|
1471
|
+
const pascalName = kebabToPascal2(name);
|
|
1472
|
+
const directLookup = LucideIcons2[pascalName];
|
|
1104
1473
|
if (directLookup && typeof directLookup === "object") return directLookup;
|
|
1105
|
-
const asIs =
|
|
1474
|
+
const asIs = LucideIcons2[name];
|
|
1106
1475
|
if (asIs && typeof asIs === "object") return asIs;
|
|
1107
|
-
return
|
|
1476
|
+
return LucideIcons2.HelpCircle;
|
|
1108
1477
|
}
|
|
1109
1478
|
var iconAliases, resolvedCache, sizeClasses, animationClasses, Icon;
|
|
1110
1479
|
var init_Icon = __esm({
|
|
1111
1480
|
"components/atoms/Icon.tsx"() {
|
|
1481
|
+
"use client";
|
|
1112
1482
|
init_cn();
|
|
1483
|
+
init_iconFamily();
|
|
1113
1484
|
iconAliases = {
|
|
1114
|
-
"close":
|
|
1115
|
-
"trash":
|
|
1116
|
-
"loader":
|
|
1117
|
-
"stop":
|
|
1118
|
-
"volume":
|
|
1119
|
-
"volume-off":
|
|
1120
|
-
"refresh":
|
|
1121
|
-
"share":
|
|
1122
|
-
"sort-asc":
|
|
1123
|
-
"sort-desc":
|
|
1485
|
+
"close": LucideIcons2.X,
|
|
1486
|
+
"trash": LucideIcons2.Trash2,
|
|
1487
|
+
"loader": LucideIcons2.Loader2,
|
|
1488
|
+
"stop": LucideIcons2.Square,
|
|
1489
|
+
"volume": LucideIcons2.Volume2,
|
|
1490
|
+
"volume-off": LucideIcons2.VolumeX,
|
|
1491
|
+
"refresh": LucideIcons2.RefreshCw,
|
|
1492
|
+
"share": LucideIcons2.Share2,
|
|
1493
|
+
"sort-asc": LucideIcons2.ArrowUpNarrowWide,
|
|
1494
|
+
"sort-desc": LucideIcons2.ArrowDownNarrowWide
|
|
1124
1495
|
};
|
|
1125
1496
|
resolvedCache = /* @__PURE__ */ new Map();
|
|
1126
1497
|
sizeClasses = {
|
|
@@ -1145,22 +1516,50 @@ var init_Icon = __esm({
|
|
|
1145
1516
|
strokeWidth,
|
|
1146
1517
|
style
|
|
1147
1518
|
}) => {
|
|
1148
|
-
const
|
|
1519
|
+
const family = useIconFamily();
|
|
1520
|
+
const RenderedComponent = React80__default.useMemo(() => {
|
|
1521
|
+
if (icon) return null;
|
|
1522
|
+
return name ? resolveIconForFamily(name, family) : null;
|
|
1523
|
+
}, [icon, name, family]);
|
|
1149
1524
|
const effectiveStrokeWidth = strokeWidth ?? void 0;
|
|
1525
|
+
const inlineStyle = {
|
|
1526
|
+
...effectiveStrokeWidth === void 0 ? { strokeWidth: "var(--icon-stroke-width, 2)" } : {},
|
|
1527
|
+
...style
|
|
1528
|
+
};
|
|
1529
|
+
const composedClassName = cn(
|
|
1530
|
+
sizeClasses[size],
|
|
1531
|
+
animationClasses[animation],
|
|
1532
|
+
color ? color : "text-current",
|
|
1533
|
+
className
|
|
1534
|
+
);
|
|
1535
|
+
if (icon) {
|
|
1536
|
+
const Direct = icon;
|
|
1537
|
+
return /* @__PURE__ */ jsx(
|
|
1538
|
+
Direct,
|
|
1539
|
+
{
|
|
1540
|
+
className: composedClassName,
|
|
1541
|
+
strokeWidth: effectiveStrokeWidth,
|
|
1542
|
+
style: inlineStyle
|
|
1543
|
+
}
|
|
1544
|
+
);
|
|
1545
|
+
}
|
|
1546
|
+
if (RenderedComponent) {
|
|
1547
|
+
return /* @__PURE__ */ jsx(
|
|
1548
|
+
RenderedComponent,
|
|
1549
|
+
{
|
|
1550
|
+
className: composedClassName,
|
|
1551
|
+
strokeWidth: effectiveStrokeWidth,
|
|
1552
|
+
style: inlineStyle
|
|
1553
|
+
}
|
|
1554
|
+
);
|
|
1555
|
+
}
|
|
1556
|
+
const Fallback = LucideIcons2.HelpCircle;
|
|
1150
1557
|
return /* @__PURE__ */ jsx(
|
|
1151
|
-
|
|
1558
|
+
Fallback,
|
|
1152
1559
|
{
|
|
1153
|
-
className:
|
|
1154
|
-
sizeClasses[size],
|
|
1155
|
-
animationClasses[animation],
|
|
1156
|
-
color ? color : "text-current",
|
|
1157
|
-
className
|
|
1158
|
-
),
|
|
1560
|
+
className: composedClassName,
|
|
1159
1561
|
strokeWidth: effectiveStrokeWidth,
|
|
1160
|
-
style:
|
|
1161
|
-
...effectiveStrokeWidth === void 0 ? { strokeWidth: "var(--icon-stroke-width, 2)" } : {},
|
|
1162
|
-
...style
|
|
1163
|
-
}
|
|
1562
|
+
style: inlineStyle
|
|
1164
1563
|
}
|
|
1165
1564
|
);
|
|
1166
1565
|
};
|
|
@@ -1170,14 +1569,13 @@ var init_Icon = __esm({
|
|
|
1170
1569
|
function resolveIconProp(value, sizeClass) {
|
|
1171
1570
|
if (!value) return null;
|
|
1172
1571
|
if (typeof value === "string") {
|
|
1173
|
-
|
|
1174
|
-
return Resolved ? /* @__PURE__ */ jsx(Resolved, { className: sizeClass }) : null;
|
|
1572
|
+
return /* @__PURE__ */ jsx(Icon, { name: value, className: sizeClass });
|
|
1175
1573
|
}
|
|
1176
1574
|
if (typeof value === "function") {
|
|
1177
1575
|
const IconComp = value;
|
|
1178
1576
|
return /* @__PURE__ */ jsx(IconComp, { className: sizeClass });
|
|
1179
1577
|
}
|
|
1180
|
-
if (
|
|
1578
|
+
if (React80__default.isValidElement(value)) {
|
|
1181
1579
|
return value;
|
|
1182
1580
|
}
|
|
1183
1581
|
if (typeof value === "object" && value !== null && "render" in value) {
|
|
@@ -1250,10 +1648,10 @@ var init_Button = __esm({
|
|
|
1250
1648
|
};
|
|
1251
1649
|
iconSizeStyles = {
|
|
1252
1650
|
sm: "h-3.5 w-3.5",
|
|
1253
|
-
md: "h-
|
|
1651
|
+
md: "h-icon-default w-icon-default",
|
|
1254
1652
|
lg: "h-5 w-5"
|
|
1255
1653
|
};
|
|
1256
|
-
Button =
|
|
1654
|
+
Button = React80__default.forwardRef(
|
|
1257
1655
|
({
|
|
1258
1656
|
className,
|
|
1259
1657
|
variant = "primary",
|
|
@@ -1303,7 +1701,7 @@ var init_Button = __esm({
|
|
|
1303
1701
|
...props,
|
|
1304
1702
|
"data-testid": props["data-testid"] ?? (action ? `action-${action}` : void 0),
|
|
1305
1703
|
children: [
|
|
1306
|
-
isLoading ? /* @__PURE__ */ jsx(Loader2, { className: "h-
|
|
1704
|
+
isLoading ? /* @__PURE__ */ jsx(Loader2, { className: "h-icon-default w-icon-default animate-spin" }) : resolvedLeftIcon && /* @__PURE__ */ jsx("span", { className: "flex-shrink-0", children: resolvedLeftIcon }),
|
|
1307
1705
|
children || label,
|
|
1308
1706
|
resolvedRightIcon && !isLoading && /* @__PURE__ */ jsx("span", { className: "flex-shrink-0", children: resolvedRightIcon })
|
|
1309
1707
|
]
|
|
@@ -1318,7 +1716,8 @@ var Input;
|
|
|
1318
1716
|
var init_Input = __esm({
|
|
1319
1717
|
"components/atoms/Input.tsx"() {
|
|
1320
1718
|
init_cn();
|
|
1321
|
-
|
|
1719
|
+
init_Icon();
|
|
1720
|
+
Input = React80__default.forwardRef(
|
|
1322
1721
|
({
|
|
1323
1722
|
className,
|
|
1324
1723
|
inputType,
|
|
@@ -1336,7 +1735,7 @@ var init_Input = __esm({
|
|
|
1336
1735
|
...props
|
|
1337
1736
|
}, ref) => {
|
|
1338
1737
|
const type = inputType || htmlType || "text";
|
|
1339
|
-
const resolvedLeftIcon = leftIcon || IconComponent && /* @__PURE__ */ jsx(IconComponent, { className: "h-
|
|
1738
|
+
const resolvedLeftIcon = leftIcon || IconComponent && /* @__PURE__ */ jsx(IconComponent, { className: "h-icon-default w-icon-default" });
|
|
1340
1739
|
const showClearButton = clearable && value && String(value).length > 0;
|
|
1341
1740
|
const baseClassName = cn(
|
|
1342
1741
|
"block w-full rounded-sm transition-all duration-[var(--transition-fast)]",
|
|
@@ -1368,7 +1767,7 @@ var init_Input = __esm({
|
|
|
1368
1767
|
]
|
|
1369
1768
|
}
|
|
1370
1769
|
),
|
|
1371
|
-
/* @__PURE__ */ jsx("div", { className: "absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none text-muted-foreground", children: /* @__PURE__ */ jsx(
|
|
1770
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none text-muted-foreground", children: /* @__PURE__ */ jsx(Icon, { name: "chevron-down", className: "h-icon-default w-icon-default" }) })
|
|
1372
1771
|
] });
|
|
1373
1772
|
}
|
|
1374
1773
|
if (type === "textarea") {
|
|
@@ -1422,7 +1821,7 @@ var init_Input = __esm({
|
|
|
1422
1821
|
type: "button",
|
|
1423
1822
|
onClick: onClear,
|
|
1424
1823
|
className: "absolute inset-y-0 right-0 pr-3 flex items-center text-muted-foreground hover:text-foreground",
|
|
1425
|
-
children: /* @__PURE__ */ jsx(
|
|
1824
|
+
children: /* @__PURE__ */ jsx(Icon, { name: "x", className: "h-icon-default w-icon-default" })
|
|
1426
1825
|
}
|
|
1427
1826
|
),
|
|
1428
1827
|
rightIcon && !showClearButton && /* @__PURE__ */ jsx("div", { className: "absolute inset-y-0 right-0 pr-3 flex items-center text-muted-foreground", children: rightIcon })
|
|
@@ -1436,7 +1835,7 @@ var Label;
|
|
|
1436
1835
|
var init_Label = __esm({
|
|
1437
1836
|
"components/atoms/Label.tsx"() {
|
|
1438
1837
|
init_cn();
|
|
1439
|
-
Label =
|
|
1838
|
+
Label = React80__default.forwardRef(
|
|
1440
1839
|
({ className, required, children, ...props }, ref) => {
|
|
1441
1840
|
return /* @__PURE__ */ jsxs(
|
|
1442
1841
|
"label",
|
|
@@ -1462,7 +1861,7 @@ var Textarea;
|
|
|
1462
1861
|
var init_Textarea = __esm({
|
|
1463
1862
|
"components/atoms/Textarea.tsx"() {
|
|
1464
1863
|
init_cn();
|
|
1465
|
-
Textarea =
|
|
1864
|
+
Textarea = React80__default.forwardRef(
|
|
1466
1865
|
({ className, error, ...props }, ref) => {
|
|
1467
1866
|
return /* @__PURE__ */ jsx(
|
|
1468
1867
|
"textarea",
|
|
@@ -1491,7 +1890,8 @@ var Select;
|
|
|
1491
1890
|
var init_Select = __esm({
|
|
1492
1891
|
"components/atoms/Select.tsx"() {
|
|
1493
1892
|
init_cn();
|
|
1494
|
-
|
|
1893
|
+
init_Icon();
|
|
1894
|
+
Select = React80__default.forwardRef(
|
|
1495
1895
|
({ className, options, placeholder, error, ...props }, ref) => {
|
|
1496
1896
|
return /* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
1497
1897
|
/* @__PURE__ */ jsxs(
|
|
@@ -1522,7 +1922,7 @@ var init_Select = __esm({
|
|
|
1522
1922
|
]
|
|
1523
1923
|
}
|
|
1524
1924
|
),
|
|
1525
|
-
/* @__PURE__ */ jsx("div", { className: "absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none", children: /* @__PURE__ */ jsx(
|
|
1925
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none", children: /* @__PURE__ */ jsx(Icon, { name: "chevron-down", className: "h-icon-default w-icon-default text-foreground" }) })
|
|
1526
1926
|
] });
|
|
1527
1927
|
}
|
|
1528
1928
|
);
|
|
@@ -1533,7 +1933,7 @@ var Checkbox;
|
|
|
1533
1933
|
var init_Checkbox = __esm({
|
|
1534
1934
|
"components/atoms/Checkbox.tsx"() {
|
|
1535
1935
|
init_cn();
|
|
1536
|
-
Checkbox =
|
|
1936
|
+
Checkbox = React80__default.forwardRef(
|
|
1537
1937
|
({ className, label, id, ...props }, ref) => {
|
|
1538
1938
|
const inputId = id || `checkbox-${Math.random().toString(36).substr(2, 9)}`;
|
|
1539
1939
|
return /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [
|
|
@@ -1575,23 +1975,23 @@ var init_Card = __esm({
|
|
|
1575
1975
|
default: [
|
|
1576
1976
|
"bg-card",
|
|
1577
1977
|
"border-[length:var(--border-width)] border-border",
|
|
1578
|
-
"shadow-
|
|
1978
|
+
"shadow-elevation-card",
|
|
1579
1979
|
"transition-all duration-[var(--transition-normal)]",
|
|
1580
|
-
"hover:shadow-
|
|
1980
|
+
"hover:shadow-elevation-dialog hover:-translate-y-0.5"
|
|
1581
1981
|
].join(" "),
|
|
1582
1982
|
bordered: [
|
|
1583
1983
|
"bg-card",
|
|
1584
1984
|
"border-[length:var(--border-width)] border-border",
|
|
1585
|
-
"shadow-
|
|
1985
|
+
"shadow-elevation-card",
|
|
1586
1986
|
"transition-all duration-[var(--transition-normal)]",
|
|
1587
|
-
"hover:shadow-
|
|
1987
|
+
"hover:shadow-elevation-dialog hover:-translate-y-0.5"
|
|
1588
1988
|
].join(" "),
|
|
1589
1989
|
elevated: [
|
|
1590
1990
|
"bg-card",
|
|
1591
1991
|
"border-[length:var(--border-width)] border-border",
|
|
1592
1992
|
"shadow",
|
|
1593
1993
|
"transition-all duration-[var(--transition-normal)]",
|
|
1594
|
-
"hover:shadow-
|
|
1994
|
+
"hover:shadow-elevation-dialog hover:-translate-y-0.5"
|
|
1595
1995
|
].join(" "),
|
|
1596
1996
|
// Interactive variant with theme-specific hover effects
|
|
1597
1997
|
interactive: [
|
|
@@ -1600,22 +2000,22 @@ var init_Card = __esm({
|
|
|
1600
2000
|
"shadow",
|
|
1601
2001
|
"cursor-pointer",
|
|
1602
2002
|
"transition-all duration-[var(--transition-normal)]",
|
|
1603
|
-
"hover:shadow-
|
|
2003
|
+
"hover:shadow-elevation-dialog"
|
|
1604
2004
|
].join(" ")
|
|
1605
2005
|
};
|
|
1606
2006
|
paddingStyles = {
|
|
1607
2007
|
none: "",
|
|
1608
|
-
sm: "p-
|
|
1609
|
-
md: "p-
|
|
1610
|
-
lg: "p-
|
|
2008
|
+
sm: "p-card-sm",
|
|
2009
|
+
md: "p-card-md",
|
|
2010
|
+
lg: "p-card-lg"
|
|
1611
2011
|
};
|
|
1612
2012
|
shadowStyles = {
|
|
1613
2013
|
none: "shadow-none",
|
|
1614
|
-
sm: "shadow-
|
|
2014
|
+
sm: "shadow-elevation-card",
|
|
1615
2015
|
md: "shadow",
|
|
1616
|
-
lg: "shadow-
|
|
2016
|
+
lg: "shadow-elevation-dialog"
|
|
1617
2017
|
};
|
|
1618
|
-
Card =
|
|
2018
|
+
Card = React80__default.forwardRef(
|
|
1619
2019
|
({
|
|
1620
2020
|
className,
|
|
1621
2021
|
variant = "bordered",
|
|
@@ -1631,7 +2031,7 @@ var init_Card = __esm({
|
|
|
1631
2031
|
{
|
|
1632
2032
|
ref,
|
|
1633
2033
|
className: cn(
|
|
1634
|
-
"rounded-
|
|
2034
|
+
"rounded-container",
|
|
1635
2035
|
"transition-all duration-[var(--transition-normal)]",
|
|
1636
2036
|
variantStyles2[variant],
|
|
1637
2037
|
paddingStyles[padding],
|
|
@@ -1651,9 +2051,9 @@ var init_Card = __esm({
|
|
|
1651
2051
|
}
|
|
1652
2052
|
);
|
|
1653
2053
|
Card.displayName = "Card";
|
|
1654
|
-
CardHeader =
|
|
2054
|
+
CardHeader = React80__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("mb-4", className), ...props }));
|
|
1655
2055
|
CardHeader.displayName = "CardHeader";
|
|
1656
|
-
CardTitle =
|
|
2056
|
+
CardTitle = React80__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1657
2057
|
"h3",
|
|
1658
2058
|
{
|
|
1659
2059
|
ref,
|
|
@@ -1666,11 +2066,11 @@ var init_Card = __esm({
|
|
|
1666
2066
|
}
|
|
1667
2067
|
));
|
|
1668
2068
|
CardTitle.displayName = "CardTitle";
|
|
1669
|
-
CardContent =
|
|
2069
|
+
CardContent = React80__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("", className), ...props }));
|
|
1670
2070
|
CardContent.displayName = "CardContent";
|
|
1671
2071
|
CardBody = CardContent;
|
|
1672
2072
|
CardBody.displayName = "CardBody";
|
|
1673
|
-
CardFooter =
|
|
2073
|
+
CardFooter = React80__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1674
2074
|
"div",
|
|
1675
2075
|
{
|
|
1676
2076
|
ref,
|
|
@@ -1723,13 +2123,10 @@ var init_Badge = __esm({
|
|
|
1723
2123
|
md: "px-2.5 py-1 text-sm",
|
|
1724
2124
|
lg: "px-3 py-1.5 text-base"
|
|
1725
2125
|
};
|
|
1726
|
-
Badge =
|
|
2126
|
+
Badge = React80__default.forwardRef(
|
|
1727
2127
|
({ className, variant = "default", size = "sm", amount, label, icon, children, onRemove, removeLabel, ...props }, ref) => {
|
|
1728
2128
|
const iconSizes3 = { sm: "w-3 h-3", md: "w-3.5 h-3.5", lg: "w-4 h-4" };
|
|
1729
|
-
const resolvedIcon = typeof icon === "string" ? (
|
|
1730
|
-
const I = resolveIcon(icon);
|
|
1731
|
-
return I ? /* @__PURE__ */ jsx(I, { className: iconSizes3[size] }) : null;
|
|
1732
|
-
})() : icon;
|
|
2129
|
+
const resolvedIcon = typeof icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: icon, className: iconSizes3[size] }) : icon;
|
|
1733
2130
|
return /* @__PURE__ */ jsxs(
|
|
1734
2131
|
"span",
|
|
1735
2132
|
{
|
|
@@ -1815,7 +2212,7 @@ var init_FilterPill = __esm({
|
|
|
1815
2212
|
md: "w-3.5 h-3.5",
|
|
1816
2213
|
lg: "w-4 h-4"
|
|
1817
2214
|
};
|
|
1818
|
-
FilterPill =
|
|
2215
|
+
FilterPill = React80__default.forwardRef(
|
|
1819
2216
|
({
|
|
1820
2217
|
className,
|
|
1821
2218
|
variant = "default",
|
|
@@ -1840,17 +2237,13 @@ var init_FilterPill = __esm({
|
|
|
1840
2237
|
onRemove?.();
|
|
1841
2238
|
if (removeEvent) eventBus.emit(`UI:${removeEvent}`, { label: payloadLabel });
|
|
1842
2239
|
}, [onRemove, removeEvent, eventBus, payloadLabel]);
|
|
1843
|
-
const
|
|
1844
|
-
const resolvedIcon = typeof icon === "string" ? (() => {
|
|
1845
|
-
const I = resolveIcon(icon);
|
|
1846
|
-
return I ? /* @__PURE__ */ jsx(I, { className: iconSizes[size] }) : null;
|
|
1847
|
-
})() : icon;
|
|
2240
|
+
const resolvedIcon = typeof icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: icon, className: iconSizes[size] }) : icon;
|
|
1848
2241
|
return /* @__PURE__ */ jsxs(
|
|
1849
2242
|
"span",
|
|
1850
2243
|
{
|
|
1851
2244
|
ref,
|
|
1852
2245
|
className: cn(
|
|
1853
|
-
"inline-flex items-center gap-1 font-bold rounded-
|
|
2246
|
+
"inline-flex items-center gap-1 font-bold rounded-pill",
|
|
1854
2247
|
variantStyles4[variant],
|
|
1855
2248
|
sizeStyles3[size],
|
|
1856
2249
|
(onClick || clickEvent) && "cursor-pointer",
|
|
@@ -1873,7 +2266,7 @@ var init_FilterPill = __esm({
|
|
|
1873
2266
|
className: cn(
|
|
1874
2267
|
"ml-0.5 rounded-full hover:bg-foreground/10 transition-colors flex items-center justify-center"
|
|
1875
2268
|
),
|
|
1876
|
-
children:
|
|
2269
|
+
children: /* @__PURE__ */ jsx(Icon, { name: "x", className: iconSizes[size] })
|
|
1877
2270
|
}
|
|
1878
2271
|
)
|
|
1879
2272
|
]
|
|
@@ -1888,13 +2281,14 @@ var sizeStyles4, Spinner;
|
|
|
1888
2281
|
var init_Spinner = __esm({
|
|
1889
2282
|
"components/atoms/Spinner.tsx"() {
|
|
1890
2283
|
init_cn();
|
|
2284
|
+
init_Icon();
|
|
1891
2285
|
sizeStyles4 = {
|
|
1892
2286
|
xs: "h-3 w-3",
|
|
1893
2287
|
sm: "h-4 w-4",
|
|
1894
2288
|
md: "h-6 w-6",
|
|
1895
2289
|
lg: "h-8 w-8"
|
|
1896
2290
|
};
|
|
1897
|
-
Spinner =
|
|
2291
|
+
Spinner = React80__default.forwardRef(
|
|
1898
2292
|
({ className, size = "md", ...props }, ref) => {
|
|
1899
2293
|
return /* @__PURE__ */ jsx(
|
|
1900
2294
|
"div",
|
|
@@ -1902,7 +2296,7 @@ var init_Spinner = __esm({
|
|
|
1902
2296
|
ref,
|
|
1903
2297
|
className: cn("text-foreground", className),
|
|
1904
2298
|
...props,
|
|
1905
|
-
children: /* @__PURE__ */ jsx(
|
|
2299
|
+
children: /* @__PURE__ */ jsx(Icon, { name: "loader", className: cn("animate-spin", sizeStyles4[size]) })
|
|
1906
2300
|
}
|
|
1907
2301
|
);
|
|
1908
2302
|
}
|
|
@@ -1921,6 +2315,7 @@ var sizeClasses2, iconSizeClasses, statusSizeClasses, statusClasses, badgeSizeCl
|
|
|
1921
2315
|
var init_Avatar = __esm({
|
|
1922
2316
|
"components/atoms/Avatar.tsx"() {
|
|
1923
2317
|
"use client";
|
|
2318
|
+
init_Icon();
|
|
1924
2319
|
init_cn();
|
|
1925
2320
|
init_useEventBus();
|
|
1926
2321
|
sizeClasses2 = {
|
|
@@ -1951,8 +2346,8 @@ var init_Avatar = __esm({
|
|
|
1951
2346
|
busy: "bg-error"
|
|
1952
2347
|
};
|
|
1953
2348
|
badgeSizeClasses = {
|
|
1954
|
-
xs: "w-3 h-3 text-
|
|
1955
|
-
sm: "w-4 h-4 text-
|
|
2349
|
+
xs: "w-3 h-3 text-xs",
|
|
2350
|
+
sm: "w-4 h-4 text-xs",
|
|
1956
2351
|
md: "w-5 h-5 text-xs",
|
|
1957
2352
|
lg: "w-6 h-6 text-sm",
|
|
1958
2353
|
xl: "w-7 h-7 text-base"
|
|
@@ -1962,7 +2357,7 @@ var init_Avatar = __esm({
|
|
|
1962
2357
|
alt,
|
|
1963
2358
|
name,
|
|
1964
2359
|
initials: providedInitials,
|
|
1965
|
-
icon:
|
|
2360
|
+
icon: IconComponent,
|
|
1966
2361
|
size = "md",
|
|
1967
2362
|
status,
|
|
1968
2363
|
badge,
|
|
@@ -1975,7 +2370,7 @@ var init_Avatar = __esm({
|
|
|
1975
2370
|
const initials = providedInitials ?? (name ? generateInitials(name) : void 0);
|
|
1976
2371
|
const hasImage = !!src;
|
|
1977
2372
|
const hasInitials = !!initials;
|
|
1978
|
-
const hasIcon = !!
|
|
2373
|
+
const hasIcon = !!IconComponent;
|
|
1979
2374
|
const getInitialsBackground = () => "bg-primary text-primary-foreground";
|
|
1980
2375
|
const isClickable = action || onClick;
|
|
1981
2376
|
const handleClick = () => {
|
|
@@ -2019,8 +2414,8 @@ var init_Avatar = __esm({
|
|
|
2019
2414
|
),
|
|
2020
2415
|
children: initials.substring(0, 2).toUpperCase()
|
|
2021
2416
|
}
|
|
2022
|
-
) : hasIcon ? /* @__PURE__ */ jsx(
|
|
2023
|
-
|
|
2417
|
+
) : hasIcon && IconComponent ? /* @__PURE__ */ jsx(
|
|
2418
|
+
IconComponent,
|
|
2024
2419
|
{
|
|
2025
2420
|
className: cn(
|
|
2026
2421
|
"text-foreground",
|
|
@@ -2028,8 +2423,9 @@ var init_Avatar = __esm({
|
|
|
2028
2423
|
)
|
|
2029
2424
|
}
|
|
2030
2425
|
) : /* @__PURE__ */ jsx(
|
|
2031
|
-
|
|
2426
|
+
Icon,
|
|
2032
2427
|
{
|
|
2428
|
+
name: "user",
|
|
2033
2429
|
className: cn(
|
|
2034
2430
|
"text-foreground",
|
|
2035
2431
|
iconSizeClasses[size]
|
|
@@ -2175,7 +2571,7 @@ var init_Box = __esm({
|
|
|
2175
2571
|
fixed: "fixed",
|
|
2176
2572
|
sticky: "sticky"
|
|
2177
2573
|
};
|
|
2178
|
-
Box =
|
|
2574
|
+
Box = React80__default.forwardRef(
|
|
2179
2575
|
({
|
|
2180
2576
|
padding,
|
|
2181
2577
|
paddingX,
|
|
@@ -2225,7 +2621,7 @@ var init_Box = __esm({
|
|
|
2225
2621
|
onMouseLeave?.(e);
|
|
2226
2622
|
}, [hoverEvent, eventBus, onMouseLeave]);
|
|
2227
2623
|
const isClickable = action || onClick;
|
|
2228
|
-
return
|
|
2624
|
+
return React80__default.createElement(
|
|
2229
2625
|
Component,
|
|
2230
2626
|
{
|
|
2231
2627
|
ref,
|
|
@@ -2418,7 +2814,7 @@ var init_ProgressBar = __esm({
|
|
|
2418
2814
|
"div",
|
|
2419
2815
|
{
|
|
2420
2816
|
className: cn(
|
|
2421
|
-
"h-full transition-all duration-
|
|
2817
|
+
"h-full transition-all duration-normal ease-emphasized",
|
|
2422
2818
|
colorClasses[effectiveColor]
|
|
2423
2819
|
),
|
|
2424
2820
|
style: { width: `${percentage}%` },
|
|
@@ -2474,7 +2870,7 @@ var init_ProgressBar = __esm({
|
|
|
2474
2870
|
strokeDashoffset: offset,
|
|
2475
2871
|
strokeLinecap: "round",
|
|
2476
2872
|
className: cn(
|
|
2477
|
-
"transition-all duration-
|
|
2873
|
+
"transition-all duration-normal ease-emphasized",
|
|
2478
2874
|
colorClasses[effectiveColor]
|
|
2479
2875
|
)
|
|
2480
2876
|
}
|
|
@@ -2513,7 +2909,7 @@ var init_ProgressBar = __esm({
|
|
|
2513
2909
|
"div",
|
|
2514
2910
|
{
|
|
2515
2911
|
className: cn(
|
|
2516
|
-
"h-full transition-all duration-
|
|
2912
|
+
"h-full transition-all duration-normal ease-emphasized",
|
|
2517
2913
|
(isActive || isPartial) && colorClasses[effectiveColor]
|
|
2518
2914
|
),
|
|
2519
2915
|
style: {
|
|
@@ -2536,7 +2932,7 @@ var Radio;
|
|
|
2536
2932
|
var init_Radio = __esm({
|
|
2537
2933
|
"components/atoms/Radio.tsx"() {
|
|
2538
2934
|
init_cn();
|
|
2539
|
-
Radio =
|
|
2935
|
+
Radio = React80__default.forwardRef(
|
|
2540
2936
|
({
|
|
2541
2937
|
label,
|
|
2542
2938
|
helperText,
|
|
@@ -2708,7 +3104,7 @@ var init_Switch = __esm({
|
|
|
2708
3104
|
"components/atoms/Switch.tsx"() {
|
|
2709
3105
|
"use client";
|
|
2710
3106
|
init_cn();
|
|
2711
|
-
Switch =
|
|
3107
|
+
Switch = React80.forwardRef(
|
|
2712
3108
|
({
|
|
2713
3109
|
checked,
|
|
2714
3110
|
defaultChecked = false,
|
|
@@ -2719,10 +3115,10 @@ var init_Switch = __esm({
|
|
|
2719
3115
|
name,
|
|
2720
3116
|
className
|
|
2721
3117
|
}, ref) => {
|
|
2722
|
-
const [isChecked, setIsChecked] =
|
|
3118
|
+
const [isChecked, setIsChecked] = React80.useState(
|
|
2723
3119
|
checked !== void 0 ? checked : defaultChecked
|
|
2724
3120
|
);
|
|
2725
|
-
|
|
3121
|
+
React80.useEffect(() => {
|
|
2726
3122
|
if (checked !== void 0) {
|
|
2727
3123
|
setIsChecked(checked);
|
|
2728
3124
|
}
|
|
@@ -3259,6 +3655,37 @@ var init_ThemeContext = __esm({
|
|
|
3259
3655
|
displayName: "Copper",
|
|
3260
3656
|
hasLightMode: true,
|
|
3261
3657
|
hasDarkMode: true
|
|
3658
|
+
},
|
|
3659
|
+
// Layer 1 skin axes — truly-unique themes (compact tech / editorial / brutalist dense / display-heavy / touch-first)
|
|
3660
|
+
{
|
|
3661
|
+
name: "prism",
|
|
3662
|
+
displayName: "Prism",
|
|
3663
|
+
hasLightMode: true,
|
|
3664
|
+
hasDarkMode: true
|
|
3665
|
+
},
|
|
3666
|
+
{
|
|
3667
|
+
name: "gazette",
|
|
3668
|
+
displayName: "Gazette",
|
|
3669
|
+
hasLightMode: true,
|
|
3670
|
+
hasDarkMode: true
|
|
3671
|
+
},
|
|
3672
|
+
{
|
|
3673
|
+
name: "terminal",
|
|
3674
|
+
displayName: "Terminal",
|
|
3675
|
+
hasLightMode: true,
|
|
3676
|
+
hasDarkMode: true
|
|
3677
|
+
},
|
|
3678
|
+
{
|
|
3679
|
+
name: "atelier",
|
|
3680
|
+
displayName: "Atelier",
|
|
3681
|
+
hasLightMode: true,
|
|
3682
|
+
hasDarkMode: true
|
|
3683
|
+
},
|
|
3684
|
+
{
|
|
3685
|
+
name: "kiosk",
|
|
3686
|
+
displayName: "Kiosk",
|
|
3687
|
+
hasLightMode: true,
|
|
3688
|
+
hasDarkMode: true
|
|
3262
3689
|
}
|
|
3263
3690
|
];
|
|
3264
3691
|
ThemeContext = createContext(void 0);
|
|
@@ -3268,6 +3695,7 @@ var sizeClasses3, iconSizes2, ThemeToggle;
|
|
|
3268
3695
|
var init_ThemeToggle = __esm({
|
|
3269
3696
|
"components/atoms/ThemeToggle.tsx"() {
|
|
3270
3697
|
"use client";
|
|
3698
|
+
init_Icon();
|
|
3271
3699
|
init_cn();
|
|
3272
3700
|
init_ThemeContext();
|
|
3273
3701
|
sizeClasses3 = {
|
|
@@ -3297,7 +3725,7 @@ var init_ThemeToggle = __esm({
|
|
|
3297
3725
|
"text-foreground",
|
|
3298
3726
|
"hover:bg-muted border-[length:var(--border-width)] border-transparent hover:border-border",
|
|
3299
3727
|
"focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
|
|
3300
|
-
"transition-colors duration-
|
|
3728
|
+
"transition-colors duration-fast",
|
|
3301
3729
|
sizeClasses3[size],
|
|
3302
3730
|
className
|
|
3303
3731
|
),
|
|
@@ -3305,13 +3733,15 @@ var init_ThemeToggle = __esm({
|
|
|
3305
3733
|
title: isDark ? "Switch to light mode" : "Switch to dark mode",
|
|
3306
3734
|
children: [
|
|
3307
3735
|
isDark ? /* @__PURE__ */ jsx(
|
|
3308
|
-
|
|
3736
|
+
Icon,
|
|
3309
3737
|
{
|
|
3738
|
+
name: "sun",
|
|
3310
3739
|
className: cn(iconSizes2[size], "text-foreground")
|
|
3311
3740
|
}
|
|
3312
3741
|
) : /* @__PURE__ */ jsx(
|
|
3313
|
-
|
|
3742
|
+
Icon,
|
|
3314
3743
|
{
|
|
3744
|
+
name: "moon",
|
|
3315
3745
|
className: cn(iconSizes2[size], "text-foreground")
|
|
3316
3746
|
}
|
|
3317
3747
|
),
|
|
@@ -3523,7 +3953,7 @@ var init_FlipContainer = __esm({
|
|
|
3523
3953
|
children: /* @__PURE__ */ jsx(
|
|
3524
3954
|
Box,
|
|
3525
3955
|
{
|
|
3526
|
-
className: "relative w-full h-full transition-transform duration-
|
|
3956
|
+
className: "relative w-full h-full transition-transform duration-slow",
|
|
3527
3957
|
style: {
|
|
3528
3958
|
transformStyle: "preserve-3d",
|
|
3529
3959
|
transform: flipped ? "rotateY(180deg)" : "rotateY(0deg)"
|
|
@@ -3541,7 +3971,7 @@ var Dialog;
|
|
|
3541
3971
|
var init_Dialog = __esm({
|
|
3542
3972
|
"components/atoms/Dialog.tsx"() {
|
|
3543
3973
|
init_cn();
|
|
3544
|
-
Dialog =
|
|
3974
|
+
Dialog = React80__default.forwardRef(
|
|
3545
3975
|
({
|
|
3546
3976
|
role = "dialog",
|
|
3547
3977
|
"aria-modal": ariaModal = true,
|
|
@@ -3567,7 +3997,7 @@ var Aside;
|
|
|
3567
3997
|
var init_Aside = __esm({
|
|
3568
3998
|
"components/atoms/Aside.tsx"() {
|
|
3569
3999
|
init_cn();
|
|
3570
|
-
Aside =
|
|
4000
|
+
Aside = React80__default.forwardRef(
|
|
3571
4001
|
({ className, children, ...rest }, ref) => /* @__PURE__ */ jsx("aside", { ref, className: cn(className), ...rest, children })
|
|
3572
4002
|
);
|
|
3573
4003
|
Aside.displayName = "Aside";
|
|
@@ -3607,7 +4037,7 @@ var init_ConditionalWrapper = __esm({
|
|
|
3607
4037
|
Box,
|
|
3608
4038
|
{
|
|
3609
4039
|
overflow: "hidden",
|
|
3610
|
-
className: `transition-all duration-
|
|
4040
|
+
className: `transition-all duration-fast ${isVisible ? "opacity-100 max-h-[1000px]" : "opacity-0 max-h-0"}`,
|
|
3611
4041
|
children: isVisible ? children : fallback
|
|
3612
4042
|
}
|
|
3613
4043
|
);
|
|
@@ -3644,8 +4074,8 @@ var init_LawReferenceTooltip = __esm({
|
|
|
3644
4074
|
position = "top",
|
|
3645
4075
|
className
|
|
3646
4076
|
}) => {
|
|
3647
|
-
const [isVisible, setIsVisible] =
|
|
3648
|
-
const timeoutRef =
|
|
4077
|
+
const [isVisible, setIsVisible] = React80__default.useState(false);
|
|
4078
|
+
const timeoutRef = React80__default.useRef(null);
|
|
3649
4079
|
const handleMouseEnter = () => {
|
|
3650
4080
|
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
3651
4081
|
timeoutRef.current = setTimeout(() => setIsVisible(true), 200);
|
|
@@ -3654,7 +4084,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
3654
4084
|
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
3655
4085
|
setIsVisible(false);
|
|
3656
4086
|
};
|
|
3657
|
-
|
|
4087
|
+
React80__default.useEffect(() => {
|
|
3658
4088
|
return () => {
|
|
3659
4089
|
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
3660
4090
|
};
|
|
@@ -3864,7 +4294,7 @@ var init_StatusDot = __esm({
|
|
|
3864
4294
|
md: "w-2.5 h-2.5",
|
|
3865
4295
|
lg: "w-3 h-3"
|
|
3866
4296
|
};
|
|
3867
|
-
StatusDot =
|
|
4297
|
+
StatusDot = React80__default.forwardRef(
|
|
3868
4298
|
({ className, status = "offline", pulse = false, size = "md", label, ...props }, ref) => {
|
|
3869
4299
|
return /* @__PURE__ */ jsx(
|
|
3870
4300
|
"span",
|
|
@@ -3903,21 +4333,22 @@ function resolveColor(dir, invert) {
|
|
|
3903
4333
|
const isGood = invert ? !isPositive : isPositive;
|
|
3904
4334
|
return isGood ? "text-success" : "text-error";
|
|
3905
4335
|
}
|
|
3906
|
-
var sizeStyles7,
|
|
4336
|
+
var sizeStyles7, iconNameMap, TrendIndicator;
|
|
3907
4337
|
var init_TrendIndicator = __esm({
|
|
3908
4338
|
"components/atoms/TrendIndicator.tsx"() {
|
|
4339
|
+
init_Icon();
|
|
3909
4340
|
init_cn();
|
|
3910
4341
|
sizeStyles7 = {
|
|
3911
4342
|
sm: { icon: "w-3 h-3", text: "text-xs" },
|
|
3912
4343
|
md: { icon: "w-4 h-4", text: "text-sm" },
|
|
3913
4344
|
lg: { icon: "w-5 h-5", text: "text-base" }
|
|
3914
4345
|
};
|
|
3915
|
-
|
|
3916
|
-
up:
|
|
3917
|
-
down:
|
|
3918
|
-
flat:
|
|
4346
|
+
iconNameMap = {
|
|
4347
|
+
up: "trending-up",
|
|
4348
|
+
down: "trending-down",
|
|
4349
|
+
flat: "arrow-right"
|
|
3919
4350
|
};
|
|
3920
|
-
TrendIndicator =
|
|
4351
|
+
TrendIndicator = React80__default.forwardRef(
|
|
3921
4352
|
({
|
|
3922
4353
|
className,
|
|
3923
4354
|
value,
|
|
@@ -3930,7 +4361,7 @@ var init_TrendIndicator = __esm({
|
|
|
3930
4361
|
}, ref) => {
|
|
3931
4362
|
const dir = resolveDirection(value, direction);
|
|
3932
4363
|
const colorClass = resolveColor(dir, invert);
|
|
3933
|
-
const
|
|
4364
|
+
const iconName = iconNameMap[dir];
|
|
3934
4365
|
const styles = sizeStyles7[size];
|
|
3935
4366
|
const formattedValue = value !== void 0 ? `${value > 0 ? "+" : ""}${value}%` : void 0;
|
|
3936
4367
|
const ariaLabel = label ?? (formattedValue ? `${dir} ${formattedValue}` : dir);
|
|
@@ -3948,7 +4379,7 @@ var init_TrendIndicator = __esm({
|
|
|
3948
4379
|
"aria-label": ariaLabel,
|
|
3949
4380
|
...props,
|
|
3950
4381
|
children: [
|
|
3951
|
-
/* @__PURE__ */ jsx(
|
|
4382
|
+
/* @__PURE__ */ jsx(Icon, { name: iconName, className: styles.icon }),
|
|
3952
4383
|
showValue && formattedValue && /* @__PURE__ */ jsx("span", { children: formattedValue })
|
|
3953
4384
|
]
|
|
3954
4385
|
}
|
|
@@ -3984,7 +4415,7 @@ var init_RangeSlider = __esm({
|
|
|
3984
4415
|
md: "w-4 h-4",
|
|
3985
4416
|
lg: "w-5 h-5"
|
|
3986
4417
|
};
|
|
3987
|
-
RangeSlider =
|
|
4418
|
+
RangeSlider = React80__default.forwardRef(
|
|
3988
4419
|
({
|
|
3989
4420
|
className,
|
|
3990
4421
|
min = 0,
|
|
@@ -4580,7 +5011,7 @@ var init_ContentSection = __esm({
|
|
|
4580
5011
|
md: "py-16",
|
|
4581
5012
|
lg: "py-24"
|
|
4582
5013
|
};
|
|
4583
|
-
ContentSection =
|
|
5014
|
+
ContentSection = React80__default.forwardRef(
|
|
4584
5015
|
({ children, background = "default", padding = "lg", id, className }, ref) => {
|
|
4585
5016
|
return /* @__PURE__ */ jsx(
|
|
4586
5017
|
Box,
|
|
@@ -5114,7 +5545,7 @@ var init_AnimatedReveal = __esm({
|
|
|
5114
5545
|
"scale-up": { opacity: 1, transform: "scale(1) translateY(0)" },
|
|
5115
5546
|
"none": {}
|
|
5116
5547
|
};
|
|
5117
|
-
AnimatedReveal =
|
|
5548
|
+
AnimatedReveal = React80__default.forwardRef(
|
|
5118
5549
|
({
|
|
5119
5550
|
trigger = "scroll",
|
|
5120
5551
|
animation = "fade-up",
|
|
@@ -5144,7 +5575,7 @@ var init_AnimatedReveal = __esm({
|
|
|
5144
5575
|
if (trigger !== "scroll") return;
|
|
5145
5576
|
const el = internalRef.current;
|
|
5146
5577
|
if (!el) return;
|
|
5147
|
-
const
|
|
5578
|
+
const observer2 = new IntersectionObserver(
|
|
5148
5579
|
([entry]) => {
|
|
5149
5580
|
if (entry.isIntersecting) {
|
|
5150
5581
|
if (once && hasAnimated.current) return;
|
|
@@ -5156,8 +5587,8 @@ var init_AnimatedReveal = __esm({
|
|
|
5156
5587
|
},
|
|
5157
5588
|
{ threshold }
|
|
5158
5589
|
);
|
|
5159
|
-
|
|
5160
|
-
return () =>
|
|
5590
|
+
observer2.observe(el);
|
|
5591
|
+
return () => observer2.disconnect();
|
|
5161
5592
|
}, [trigger, threshold, once]);
|
|
5162
5593
|
const handleMouseEnter = trigger === "hover" ? () => setIsAnimated(true) : void 0;
|
|
5163
5594
|
const handleMouseLeave = trigger === "hover" ? () => {
|
|
@@ -5274,7 +5705,7 @@ var init_AnimatedGraphic = __esm({
|
|
|
5274
5705
|
"components/atoms/AnimatedGraphic.tsx"() {
|
|
5275
5706
|
"use client";
|
|
5276
5707
|
init_cn();
|
|
5277
|
-
AnimatedGraphic =
|
|
5708
|
+
AnimatedGraphic = React80__default.forwardRef(
|
|
5278
5709
|
({
|
|
5279
5710
|
src,
|
|
5280
5711
|
svgContent,
|
|
@@ -5297,7 +5728,7 @@ var init_AnimatedGraphic = __esm({
|
|
|
5297
5728
|
const fetchedSvg = useFetchedSvg(svgContent ? void 0 : src);
|
|
5298
5729
|
const resolvedSvg = svgContent ?? fetchedSvg;
|
|
5299
5730
|
const prevAnimateRef = useRef(animate);
|
|
5300
|
-
const setRef =
|
|
5731
|
+
const setRef = React80__default.useCallback(
|
|
5301
5732
|
(node) => {
|
|
5302
5733
|
containerRef.current = node;
|
|
5303
5734
|
if (typeof ref === "function") ref(node);
|
|
@@ -5510,7 +5941,7 @@ var init_Modal = __esm({
|
|
|
5510
5941
|
// Reset browser-default dialog chrome — we own styling.
|
|
5511
5942
|
"m-0 p-0 border-0 bg-transparent",
|
|
5512
5943
|
// Pre-existing dialog frame
|
|
5513
|
-
"pointer-events-auto w-full flex flex-col bg-surface border shadow-
|
|
5944
|
+
"pointer-events-auto w-full flex flex-col bg-surface border shadow-elevation-dialog rounded-container",
|
|
5514
5945
|
// Desktop sizing + viewport-aware floor.
|
|
5515
5946
|
sizeClasses5[size],
|
|
5516
5947
|
minWidthClasses[size],
|
|
@@ -5570,7 +6001,7 @@ var init_Modal = __esm({
|
|
|
5570
6001
|
{
|
|
5571
6002
|
variant: "ghost",
|
|
5572
6003
|
size: "sm",
|
|
5573
|
-
icon:
|
|
6004
|
+
icon: "x",
|
|
5574
6005
|
onClick: handleClose,
|
|
5575
6006
|
"data-event": "CLOSE",
|
|
5576
6007
|
"aria-label": "Close modal"
|
|
@@ -5727,7 +6158,7 @@ var init_Drawer = __esm({
|
|
|
5727
6158
|
{
|
|
5728
6159
|
variant: "ghost",
|
|
5729
6160
|
size: "sm",
|
|
5730
|
-
icon:
|
|
6161
|
+
icon: "x",
|
|
5731
6162
|
onClick: handleClose,
|
|
5732
6163
|
"aria-label": "Close drawer",
|
|
5733
6164
|
className: cn(!title && "ml-auto")
|
|
@@ -5779,7 +6210,7 @@ var init_Drawer = __esm({
|
|
|
5779
6210
|
Drawer.displayName = "Drawer";
|
|
5780
6211
|
}
|
|
5781
6212
|
});
|
|
5782
|
-
var variantClasses,
|
|
6213
|
+
var variantClasses, iconMap, iconColors, Toast;
|
|
5783
6214
|
var init_Toast = __esm({
|
|
5784
6215
|
"components/molecules/Toast.tsx"() {
|
|
5785
6216
|
"use client";
|
|
@@ -5796,11 +6227,11 @@ var init_Toast = __esm({
|
|
|
5796
6227
|
info: "bg-card border-[length:var(--border-width)] border-info",
|
|
5797
6228
|
warning: "bg-card border-[length:var(--border-width)] border-warning"
|
|
5798
6229
|
};
|
|
5799
|
-
|
|
5800
|
-
success:
|
|
5801
|
-
error:
|
|
5802
|
-
info:
|
|
5803
|
-
warning:
|
|
6230
|
+
iconMap = {
|
|
6231
|
+
success: "check-circle",
|
|
6232
|
+
error: "alert-circle",
|
|
6233
|
+
info: "info",
|
|
6234
|
+
warning: "alert-triangle"
|
|
5804
6235
|
};
|
|
5805
6236
|
iconColors = {
|
|
5806
6237
|
success: "text-success",
|
|
@@ -5847,7 +6278,7 @@ var init_Toast = __esm({
|
|
|
5847
6278
|
// `min-w-[300px]` only kicks in at `sm:` and above so a phone
|
|
5848
6279
|
// viewport doesn't get a toast wider than the screen near the
|
|
5849
6280
|
// edge. `max-w-[calc(100vw-2rem)]` clamps to viewport too.
|
|
5850
|
-
"border-l-4 p-4 shadow min-w-0 sm:min-w-[300px] max-w-md max-w-[calc(100vw-2rem)]",
|
|
6281
|
+
"border-l-4 p-4 shadow-elevation-toast min-w-0 sm:min-w-[300px] max-w-md max-w-[calc(100vw-2rem)]",
|
|
5851
6282
|
"rounded-sm",
|
|
5852
6283
|
variantClasses[variant],
|
|
5853
6284
|
className
|
|
@@ -5857,7 +6288,7 @@ var init_Toast = __esm({
|
|
|
5857
6288
|
/* @__PURE__ */ jsx(Box, { className: "flex-shrink-0 mt-0.5", children: /* @__PURE__ */ jsx(
|
|
5858
6289
|
Icon,
|
|
5859
6290
|
{
|
|
5860
|
-
|
|
6291
|
+
name: iconMap[variant],
|
|
5861
6292
|
size: "md",
|
|
5862
6293
|
className: iconColors[variant]
|
|
5863
6294
|
}
|
|
@@ -5874,7 +6305,7 @@ var init_Toast = __esm({
|
|
|
5874
6305
|
{
|
|
5875
6306
|
variant: "ghost",
|
|
5876
6307
|
size: "sm",
|
|
5877
|
-
icon:
|
|
6308
|
+
icon: "x",
|
|
5878
6309
|
onClick: handleDismiss,
|
|
5879
6310
|
"aria-label": "Dismiss toast",
|
|
5880
6311
|
className: "flex-shrink-0"
|
|
@@ -6055,6 +6486,7 @@ var init_ErrorState = __esm({
|
|
|
6055
6486
|
init_Box();
|
|
6056
6487
|
init_Stack();
|
|
6057
6488
|
init_Typography();
|
|
6489
|
+
init_Icon();
|
|
6058
6490
|
init_useEventBus();
|
|
6059
6491
|
init_useTranslate();
|
|
6060
6492
|
ErrorState = ({
|
|
@@ -6082,7 +6514,7 @@ var init_ErrorState = __esm({
|
|
|
6082
6514
|
className
|
|
6083
6515
|
),
|
|
6084
6516
|
children: [
|
|
6085
|
-
/* @__PURE__ */ jsx(Box, { className: "mb-4 rounded-full bg-error/10 p-3", children: /* @__PURE__ */ jsx(
|
|
6517
|
+
/* @__PURE__ */ jsx(Box, { className: "mb-4 rounded-full bg-error/10 p-3", children: /* @__PURE__ */ jsx(Icon, { name: "alert-circle", className: "h-8 w-8 text-error" }) }),
|
|
6086
6518
|
/* @__PURE__ */ jsx(Typography, { variant: "h3", className: "text-lg font-medium text-foreground", children: resolvedTitle }),
|
|
6087
6519
|
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "mt-1 text-muted-foreground max-w-sm", children: resolvedMessage }),
|
|
6088
6520
|
(onRetry || retryEvent) && /* @__PURE__ */ jsx(Button, { variant: "secondary", className: "mt-4", onClick: handleRetry, children: t("error.retry") })
|
|
@@ -6099,7 +6531,7 @@ var init_ErrorBoundary = __esm({
|
|
|
6099
6531
|
"use client";
|
|
6100
6532
|
init_cn();
|
|
6101
6533
|
init_ErrorState();
|
|
6102
|
-
ErrorBoundary = class extends
|
|
6534
|
+
ErrorBoundary = class extends React80__default.Component {
|
|
6103
6535
|
constructor(props) {
|
|
6104
6536
|
super(props);
|
|
6105
6537
|
__publicField(this, "reset", () => {
|
|
@@ -6443,7 +6875,7 @@ var init_InstallBox = __esm({
|
|
|
6443
6875
|
/* @__PURE__ */ jsx(
|
|
6444
6876
|
Box,
|
|
6445
6877
|
{
|
|
6446
|
-
className: "bg-surface rounded-
|
|
6878
|
+
className: "bg-surface rounded-container border-[length:var(--border-width)] border-border",
|
|
6447
6879
|
padding: "md",
|
|
6448
6880
|
children: /* @__PURE__ */ jsxs(Box, { className: "flex items-center gap-3", children: [
|
|
6449
6881
|
/* @__PURE__ */ jsx(
|
|
@@ -6997,7 +7429,7 @@ var init_AboutPageTemplate = __esm({
|
|
|
6997
7429
|
AboutPageTemplate.displayName = "AboutPageTemplate";
|
|
6998
7430
|
}
|
|
6999
7431
|
});
|
|
7000
|
-
var variantBorderClasses, variantIconColors,
|
|
7432
|
+
var variantBorderClasses, variantIconColors, iconMap2, Alert;
|
|
7001
7433
|
var init_Alert = __esm({
|
|
7002
7434
|
"components/molecules/Alert.tsx"() {
|
|
7003
7435
|
"use client";
|
|
@@ -7018,11 +7450,11 @@ var init_Alert = __esm({
|
|
|
7018
7450
|
warning: "text-warning",
|
|
7019
7451
|
error: "text-error"
|
|
7020
7452
|
};
|
|
7021
|
-
|
|
7022
|
-
info:
|
|
7023
|
-
success:
|
|
7024
|
-
warning:
|
|
7025
|
-
error:
|
|
7453
|
+
iconMap2 = {
|
|
7454
|
+
info: "info",
|
|
7455
|
+
success: "check-circle",
|
|
7456
|
+
warning: "alert-triangle",
|
|
7457
|
+
error: "alert-circle"
|
|
7026
7458
|
};
|
|
7027
7459
|
Alert = ({
|
|
7028
7460
|
children,
|
|
@@ -7057,7 +7489,7 @@ var init_Alert = __esm({
|
|
|
7057
7489
|
/* @__PURE__ */ jsx("div", { className: "flex-shrink-0 mt-0.5", children: /* @__PURE__ */ jsx(
|
|
7058
7490
|
Icon,
|
|
7059
7491
|
{
|
|
7060
|
-
|
|
7492
|
+
name: iconMap2[variant],
|
|
7061
7493
|
size: "md",
|
|
7062
7494
|
className: variantIconColors[variant]
|
|
7063
7495
|
}
|
|
@@ -7077,7 +7509,7 @@ var init_Alert = __esm({
|
|
|
7077
7509
|
"hover:bg-muted"
|
|
7078
7510
|
),
|
|
7079
7511
|
"aria-label": "Dismiss alert",
|
|
7080
|
-
children: /* @__PURE__ */ jsx(Icon, {
|
|
7512
|
+
children: /* @__PURE__ */ jsx(Icon, { name: "x", size: "sm" })
|
|
7081
7513
|
}
|
|
7082
7514
|
)
|
|
7083
7515
|
] })
|
|
@@ -7153,8 +7585,8 @@ var init_Tooltip = __esm({
|
|
|
7153
7585
|
if (hideTimeoutRef.current) clearTimeout(hideTimeoutRef.current);
|
|
7154
7586
|
};
|
|
7155
7587
|
}, []);
|
|
7156
|
-
const triggerElement =
|
|
7157
|
-
const trigger =
|
|
7588
|
+
const triggerElement = React80__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
|
|
7589
|
+
const trigger = React80__default.cloneElement(triggerElement, {
|
|
7158
7590
|
ref: triggerRef,
|
|
7159
7591
|
onMouseEnter: handleMouseEnter,
|
|
7160
7592
|
onMouseLeave: handleMouseLeave,
|
|
@@ -7168,7 +7600,7 @@ var init_Tooltip = __esm({
|
|
|
7168
7600
|
className: cn(
|
|
7169
7601
|
"fixed z-50 px-3 py-2 max-w-xs",
|
|
7170
7602
|
"bg-primary text-primary-foreground",
|
|
7171
|
-
"shadow-
|
|
7603
|
+
"shadow-elevation-popover rounded-sm",
|
|
7172
7604
|
"text-sm pointer-events-none",
|
|
7173
7605
|
"break-words whitespace-normal",
|
|
7174
7606
|
"h-auto min-h-fit",
|
|
@@ -7309,8 +7741,8 @@ var init_Popover = __esm({
|
|
|
7309
7741
|
onMouseEnter: handleOpen,
|
|
7310
7742
|
onMouseLeave: handleClose
|
|
7311
7743
|
};
|
|
7312
|
-
const childElement =
|
|
7313
|
-
const triggerElement =
|
|
7744
|
+
const childElement = React80__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
|
|
7745
|
+
const triggerElement = React80__default.cloneElement(
|
|
7314
7746
|
childElement,
|
|
7315
7747
|
{
|
|
7316
7748
|
ref: triggerRef,
|
|
@@ -7323,7 +7755,7 @@ var init_Popover = __esm({
|
|
|
7323
7755
|
ref: popoverRef,
|
|
7324
7756
|
className: cn(
|
|
7325
7757
|
"fixed z-50 p-4",
|
|
7326
|
-
"bg-card border-2 border-border shadow-
|
|
7758
|
+
"bg-card border-2 border-border shadow-elevation-popover",
|
|
7327
7759
|
positionClasses2[position],
|
|
7328
7760
|
className
|
|
7329
7761
|
),
|
|
@@ -7426,8 +7858,8 @@ var init_Menu = __esm({
|
|
|
7426
7858
|
"bottom-start": "top-full left-0 mt-2",
|
|
7427
7859
|
"bottom-end": "top-full right-0 mt-2"
|
|
7428
7860
|
};
|
|
7429
|
-
const triggerChild =
|
|
7430
|
-
const triggerElement =
|
|
7861
|
+
const triggerChild = React80__default.isValidElement(trigger) ? trigger : /* @__PURE__ */ jsx(Typography, { variant: "small", as: "span", children: trigger });
|
|
7862
|
+
const triggerElement = React80__default.cloneElement(
|
|
7431
7863
|
triggerChild,
|
|
7432
7864
|
{
|
|
7433
7865
|
ref: triggerRef,
|
|
@@ -7437,7 +7869,7 @@ var init_Menu = __esm({
|
|
|
7437
7869
|
const menuContainerStyles = cn(
|
|
7438
7870
|
"bg-card",
|
|
7439
7871
|
"border-[length:var(--border-width)] border-border",
|
|
7440
|
-
"shadow",
|
|
7872
|
+
"shadow-elevation-popover",
|
|
7441
7873
|
"rounded-sm",
|
|
7442
7874
|
"min-w-0 sm:min-w-[200px] max-w-[calc(100vw-1rem)] py-1"
|
|
7443
7875
|
);
|
|
@@ -7472,7 +7904,7 @@ var init_Menu = __esm({
|
|
|
7472
7904
|
}
|
|
7473
7905
|
),
|
|
7474
7906
|
item.badge !== void 0 && /* @__PURE__ */ jsx(Badge, { variant: "default", size: "sm", children: item.badge }),
|
|
7475
|
-
hasSubMenu && /* @__PURE__ */ jsx(Icon, {
|
|
7907
|
+
hasSubMenu && /* @__PURE__ */ jsx(Icon, { name: "chevron-right", size: "sm", className: "flex-shrink-0" })
|
|
7476
7908
|
] })
|
|
7477
7909
|
},
|
|
7478
7910
|
itemId
|
|
@@ -7605,7 +8037,7 @@ var init_Accordion = __esm({
|
|
|
7605
8037
|
"w-full flex items-center justify-between px-4 py-3",
|
|
7606
8038
|
"bg-card",
|
|
7607
8039
|
"hover:bg-muted",
|
|
7608
|
-
"transition-colors duration-
|
|
8040
|
+
"transition-colors duration-fast",
|
|
7609
8041
|
"focus:outline-none focus:ring-2 focus:ring-ring focus:ring-inset",
|
|
7610
8042
|
"disabled:opacity-50 disabled:cursor-not-allowed",
|
|
7611
8043
|
isOpen && "bg-muted font-bold"
|
|
@@ -7617,10 +8049,10 @@ var init_Accordion = __esm({
|
|
|
7617
8049
|
/* @__PURE__ */ jsx(
|
|
7618
8050
|
Icon,
|
|
7619
8051
|
{
|
|
7620
|
-
|
|
8052
|
+
name: "chevron-down",
|
|
7621
8053
|
size: "sm",
|
|
7622
8054
|
className: cn(
|
|
7623
|
-
"transition-transform duration-
|
|
8055
|
+
"transition-transform duration-fast",
|
|
7624
8056
|
isOpen && "transform rotate-180"
|
|
7625
8057
|
)
|
|
7626
8058
|
}
|
|
@@ -7642,15 +8074,6 @@ var init_Accordion = __esm({
|
|
|
7642
8074
|
Accordion.displayName = "Accordion";
|
|
7643
8075
|
}
|
|
7644
8076
|
});
|
|
7645
|
-
function resolveIcon2(name) {
|
|
7646
|
-
const pascalName = name.split(/[-_]/).map((part) => part.charAt(0).toUpperCase() + part.slice(1).toLowerCase()).join("");
|
|
7647
|
-
const icons = LucideIcons;
|
|
7648
|
-
const icon = icons[pascalName];
|
|
7649
|
-
if (icon) {
|
|
7650
|
-
return icon;
|
|
7651
|
-
}
|
|
7652
|
-
return Plus;
|
|
7653
|
-
}
|
|
7654
8077
|
var FloatingActionButton;
|
|
7655
8078
|
var init_FloatingActionButton = __esm({
|
|
7656
8079
|
"components/molecules/FloatingActionButton.tsx"() {
|
|
@@ -7676,7 +8099,7 @@ var init_FloatingActionButton = __esm({
|
|
|
7676
8099
|
const eventBus = useEventBus();
|
|
7677
8100
|
const { t } = useTranslate();
|
|
7678
8101
|
const resolvedAction = icon ? {
|
|
7679
|
-
icon
|
|
8102
|
+
icon,
|
|
7680
8103
|
onClick: () => {
|
|
7681
8104
|
if (action) eventBus.emit(`UI:${action}`, actionPayload ?? {});
|
|
7682
8105
|
onClick?.();
|
|
@@ -7750,7 +8173,7 @@ var init_FloatingActionButton = __esm({
|
|
|
7750
8173
|
{
|
|
7751
8174
|
align: "center",
|
|
7752
8175
|
gap: "sm",
|
|
7753
|
-
className: "transition-all duration-
|
|
8176
|
+
className: "transition-all duration-fast",
|
|
7754
8177
|
style: {
|
|
7755
8178
|
opacity: isExpanded ? 1 : 0,
|
|
7756
8179
|
transform: isExpanded ? "translateY(0)" : "translateY(10px)",
|
|
@@ -7786,9 +8209,9 @@ var init_FloatingActionButton = __esm({
|
|
|
7786
8209
|
{
|
|
7787
8210
|
variant: isExpanded ? "secondary" : "primary",
|
|
7788
8211
|
size: "lg",
|
|
7789
|
-
icon: isExpanded ?
|
|
8212
|
+
icon: isExpanded ? "x" : "plus",
|
|
7790
8213
|
onClick: handleMainClick,
|
|
7791
|
-
className: "rounded-full shadow-lg transition-all duration-
|
|
8214
|
+
className: "rounded-full shadow-lg transition-all duration-normal",
|
|
7792
8215
|
"aria-label": isExpanded ? "Close actions" : "Open actions",
|
|
7793
8216
|
"aria-expanded": isExpanded,
|
|
7794
8217
|
children: /* @__PURE__ */ jsx(Typography, { as: "span", className: "sr-only", children: isExpanded ? t("common.close") : t("common.open") })
|
|
@@ -7843,13 +8266,13 @@ var init_MapView = __esm({
|
|
|
7843
8266
|
shadowSize: [41, 41]
|
|
7844
8267
|
});
|
|
7845
8268
|
L.Marker.prototype.options.icon = defaultIcon;
|
|
7846
|
-
const { useEffect:
|
|
8269
|
+
const { useEffect: useEffect72, useRef: useRef66, useCallback: useCallback127, useState: useState110 } = React80__default;
|
|
7847
8270
|
const { Typography: Typography2 } = await Promise.resolve().then(() => (init_Typography(), Typography_exports));
|
|
7848
8271
|
const { useEventBus: useEventBus2 } = await Promise.resolve().then(() => (init_useEventBus(), useEventBus_exports));
|
|
7849
8272
|
function MapUpdater({ centerLat, centerLng, zoom }) {
|
|
7850
8273
|
const map = useMap();
|
|
7851
8274
|
const prevRef = useRef66({ centerLat, centerLng, zoom });
|
|
7852
|
-
|
|
8275
|
+
useEffect72(() => {
|
|
7853
8276
|
const prev = prevRef.current;
|
|
7854
8277
|
if (prev.centerLat !== centerLat || prev.centerLng !== centerLng || prev.zoom !== zoom) {
|
|
7855
8278
|
map.setView([centerLat, centerLng], zoom);
|
|
@@ -7860,7 +8283,7 @@ var init_MapView = __esm({
|
|
|
7860
8283
|
}
|
|
7861
8284
|
function MapClickHandler({ onMapClick }) {
|
|
7862
8285
|
const map = useMap();
|
|
7863
|
-
|
|
8286
|
+
useEffect72(() => {
|
|
7864
8287
|
if (!onMapClick) return;
|
|
7865
8288
|
const handler = (e) => {
|
|
7866
8289
|
onMapClick(e.latlng.lat, e.latlng.lng);
|
|
@@ -7888,7 +8311,7 @@ var init_MapView = __esm({
|
|
|
7888
8311
|
showAttribution = true
|
|
7889
8312
|
}) {
|
|
7890
8313
|
const eventBus = useEventBus2();
|
|
7891
|
-
const [clickedPosition, setClickedPosition] =
|
|
8314
|
+
const [clickedPosition, setClickedPosition] = useState110(null);
|
|
7892
8315
|
const handleMapClick = useCallback127((lat, lng) => {
|
|
7893
8316
|
if (showClickedPin) {
|
|
7894
8317
|
setClickedPosition({ lat, lng });
|
|
@@ -8089,7 +8512,7 @@ function InputPattern({
|
|
|
8089
8512
|
fieldName
|
|
8090
8513
|
}) {
|
|
8091
8514
|
const { emit } = useEventBus();
|
|
8092
|
-
const [localValue, setLocalValue] =
|
|
8515
|
+
const [localValue, setLocalValue] = React80__default.useState(value);
|
|
8093
8516
|
const handleChange = (e) => {
|
|
8094
8517
|
setLocalValue(e.target.value);
|
|
8095
8518
|
if (onChange) {
|
|
@@ -8127,7 +8550,7 @@ function TextareaPattern({
|
|
|
8127
8550
|
fieldName
|
|
8128
8551
|
}) {
|
|
8129
8552
|
const { emit } = useEventBus();
|
|
8130
|
-
const [localValue, setLocalValue] =
|
|
8553
|
+
const [localValue, setLocalValue] = React80__default.useState(value);
|
|
8131
8554
|
const handleChange = (e) => {
|
|
8132
8555
|
setLocalValue(e.target.value);
|
|
8133
8556
|
if (onChange) {
|
|
@@ -8159,7 +8582,7 @@ function SelectPattern({
|
|
|
8159
8582
|
fieldName
|
|
8160
8583
|
}) {
|
|
8161
8584
|
const { emit } = useEventBus();
|
|
8162
|
-
const [localValue, setLocalValue] =
|
|
8585
|
+
const [localValue, setLocalValue] = React80__default.useState(value);
|
|
8163
8586
|
const handleChange = (e) => {
|
|
8164
8587
|
setLocalValue(e.target.value);
|
|
8165
8588
|
if (onChange) {
|
|
@@ -8188,7 +8611,7 @@ function CheckboxPattern({
|
|
|
8188
8611
|
className
|
|
8189
8612
|
}) {
|
|
8190
8613
|
const { emit } = useEventBus();
|
|
8191
|
-
const [localChecked, setLocalChecked] =
|
|
8614
|
+
const [localChecked, setLocalChecked] = React80__default.useState(checked);
|
|
8192
8615
|
const handleChange = (e) => {
|
|
8193
8616
|
setLocalChecked(e.target.checked);
|
|
8194
8617
|
if (onChange) {
|
|
@@ -8501,9 +8924,9 @@ function ControlButton({
|
|
|
8501
8924
|
className
|
|
8502
8925
|
}) {
|
|
8503
8926
|
const eventBus = useEventBus();
|
|
8504
|
-
const [isPressed, setIsPressed] =
|
|
8927
|
+
const [isPressed, setIsPressed] = React80.useState(false);
|
|
8505
8928
|
const actualPressed = pressed ?? isPressed;
|
|
8506
|
-
const handlePointerDown =
|
|
8929
|
+
const handlePointerDown = React80.useCallback(
|
|
8507
8930
|
(e) => {
|
|
8508
8931
|
e.preventDefault();
|
|
8509
8932
|
if (disabled) return;
|
|
@@ -8513,7 +8936,7 @@ function ControlButton({
|
|
|
8513
8936
|
},
|
|
8514
8937
|
[disabled, pressEvent, eventBus, onPress]
|
|
8515
8938
|
);
|
|
8516
|
-
const handlePointerUp =
|
|
8939
|
+
const handlePointerUp = React80.useCallback(
|
|
8517
8940
|
(e) => {
|
|
8518
8941
|
e.preventDefault();
|
|
8519
8942
|
if (disabled) return;
|
|
@@ -8523,7 +8946,7 @@ function ControlButton({
|
|
|
8523
8946
|
},
|
|
8524
8947
|
[disabled, releaseEvent, eventBus, onRelease]
|
|
8525
8948
|
);
|
|
8526
|
-
const handlePointerLeave =
|
|
8949
|
+
const handlePointerLeave = React80.useCallback(
|
|
8527
8950
|
(e) => {
|
|
8528
8951
|
if (isPressed) {
|
|
8529
8952
|
setIsPressed(false);
|
|
@@ -8600,8 +9023,8 @@ function ActionButtons({
|
|
|
8600
9023
|
disabled
|
|
8601
9024
|
}) {
|
|
8602
9025
|
const eventBus = useEventBus();
|
|
8603
|
-
const [activeButtons, setActiveButtons] =
|
|
8604
|
-
const handlePress =
|
|
9026
|
+
const [activeButtons, setActiveButtons] = React80.useState(/* @__PURE__ */ new Set());
|
|
9027
|
+
const handlePress = React80.useCallback(
|
|
8605
9028
|
(id) => {
|
|
8606
9029
|
setActiveButtons((prev) => new Set(prev).add(id));
|
|
8607
9030
|
if (actionEvent) eventBus.emit(`UI:${actionEvent}`, { id, pressed: true });
|
|
@@ -8609,7 +9032,7 @@ function ActionButtons({
|
|
|
8609
9032
|
},
|
|
8610
9033
|
[actionEvent, eventBus, onAction]
|
|
8611
9034
|
);
|
|
8612
|
-
const handleRelease =
|
|
9035
|
+
const handleRelease = React80.useCallback(
|
|
8613
9036
|
(id) => {
|
|
8614
9037
|
setActiveButtons((prev) => {
|
|
8615
9038
|
const next = new Set(prev);
|
|
@@ -9339,7 +9762,7 @@ function IsometricCanvas({
|
|
|
9339
9762
|
const el = containerRef.current;
|
|
9340
9763
|
if (!el) return;
|
|
9341
9764
|
if (typeof ResizeObserver === "undefined") return;
|
|
9342
|
-
const
|
|
9765
|
+
const observer2 = new ResizeObserver((entries) => {
|
|
9343
9766
|
const entry = entries[0];
|
|
9344
9767
|
if (entry) {
|
|
9345
9768
|
const w = Math.round(entry.contentRect.width) || 800;
|
|
@@ -9350,8 +9773,8 @@ function IsometricCanvas({
|
|
|
9350
9773
|
});
|
|
9351
9774
|
}
|
|
9352
9775
|
});
|
|
9353
|
-
|
|
9354
|
-
return () =>
|
|
9776
|
+
observer2.observe(el);
|
|
9777
|
+
return () => observer2.disconnect();
|
|
9355
9778
|
}, []);
|
|
9356
9779
|
const units = useMemo(
|
|
9357
9780
|
() => unitsProp.map((u) => u.position ? u : { ...u, position: { x: u.x ?? 0, y: u.y ?? 0 } }),
|
|
@@ -11371,7 +11794,7 @@ var init_MarkdownContent = __esm({
|
|
|
11371
11794
|
init_Box();
|
|
11372
11795
|
init_useTranslate();
|
|
11373
11796
|
init_cn();
|
|
11374
|
-
MarkdownContent =
|
|
11797
|
+
MarkdownContent = React80__default.memo(
|
|
11375
11798
|
({ content, direction, className }) => {
|
|
11376
11799
|
const { t: _t } = useTranslate();
|
|
11377
11800
|
const safeContent = typeof content === "string" ? content : String(content ?? "");
|
|
@@ -11517,6 +11940,7 @@ var init_CodeBlock = __esm({
|
|
|
11517
11940
|
init_Badge();
|
|
11518
11941
|
init_Stack();
|
|
11519
11942
|
init_Textarea();
|
|
11943
|
+
init_Icon();
|
|
11520
11944
|
init_useEventBus();
|
|
11521
11945
|
init_useTranslate();
|
|
11522
11946
|
SyntaxHighlighter.registerLanguage("json", langJson);
|
|
@@ -11589,7 +12013,7 @@ var init_CodeBlock = __esm({
|
|
|
11589
12013
|
log5 = createLogger("almadar:ui:markdown-code");
|
|
11590
12014
|
LINE_PROPS_FN = (n) => ({ "data-line": String(n - 1) });
|
|
11591
12015
|
HIDDEN_LINE_NUMBERS = { display: "none" };
|
|
11592
|
-
CodeBlock =
|
|
12016
|
+
CodeBlock = React80__default.memo(
|
|
11593
12017
|
({
|
|
11594
12018
|
code: rawCode,
|
|
11595
12019
|
language = "text",
|
|
@@ -11807,7 +12231,7 @@ var init_CodeBlock = __esm({
|
|
|
11807
12231
|
onClick: handleCopy,
|
|
11808
12232
|
className: "opacity-0 group-hover:opacity-100 focus:opacity-100 transition-opacity text-muted-foreground hover:text-white",
|
|
11809
12233
|
"aria-label": "Copy code",
|
|
11810
|
-
children: copied ? /* @__PURE__ */ jsx(
|
|
12234
|
+
children: copied ? /* @__PURE__ */ jsx(Icon, { name: "check", className: "w-4 h-4 text-green-400" }) : /* @__PURE__ */ jsx(Icon, { name: "copy", className: "w-4 h-4" })
|
|
11811
12235
|
}
|
|
11812
12236
|
)
|
|
11813
12237
|
]
|
|
@@ -12043,8 +12467,8 @@ function Card2({
|
|
|
12043
12467
|
className: `
|
|
12044
12468
|
bg-card
|
|
12045
12469
|
border border-border
|
|
12046
|
-
rounded-
|
|
12047
|
-
${isClickable ? "cursor-pointer hover:shadow-
|
|
12470
|
+
rounded-container shadow-elevation-card
|
|
12471
|
+
${isClickable ? "cursor-pointer hover:shadow-elevation-dialog transition-shadow" : ""}
|
|
12048
12472
|
${className}
|
|
12049
12473
|
`,
|
|
12050
12474
|
onClick: isClickable ? handleClick : void 0,
|
|
@@ -12138,7 +12562,7 @@ var init_QuizBlock = __esm({
|
|
|
12138
12562
|
className: "self-start ml-7",
|
|
12139
12563
|
children: /* @__PURE__ */ jsxs(HStack, { gap: "xs", align: "center", children: [
|
|
12140
12564
|
/* @__PURE__ */ jsx(Typography, { variant: "caption", children: revealed ? t("quiz.hideAnswer") : t("quiz.showAnswer") }),
|
|
12141
|
-
revealed ? /* @__PURE__ */ jsx(
|
|
12565
|
+
revealed ? /* @__PURE__ */ jsx(Icon, { name: "chevron-up", className: "w-3.5 h-3.5" }) : /* @__PURE__ */ jsx(Icon, { name: "chevron-down", className: "w-3.5 h-3.5" })
|
|
12142
12566
|
] })
|
|
12143
12567
|
}
|
|
12144
12568
|
)
|
|
@@ -12898,7 +13322,7 @@ var init_StateMachineView = __esm({
|
|
|
12898
13322
|
style: { top: title ? 30 : 0 },
|
|
12899
13323
|
children: [
|
|
12900
13324
|
entity && /* @__PURE__ */ jsx(EntityBox, { entity, config }),
|
|
12901
|
-
states.map((state) => renderStateNode ? /* @__PURE__ */ jsx(
|
|
13325
|
+
states.map((state) => renderStateNode ? /* @__PURE__ */ jsx(React80__default.Fragment, { children: renderStateNode(state, config) }, state.id) : /* @__PURE__ */ jsx(
|
|
12902
13326
|
StateNode,
|
|
12903
13327
|
{
|
|
12904
13328
|
state,
|
|
@@ -14046,28 +14470,22 @@ var init_BookTableOfContents = __esm({
|
|
|
14046
14470
|
BookTableOfContents.displayName = "BookTableOfContents";
|
|
14047
14471
|
}
|
|
14048
14472
|
});
|
|
14049
|
-
var
|
|
14473
|
+
var ICON_NAME_ALIASES, EmptyState;
|
|
14050
14474
|
var init_EmptyState = __esm({
|
|
14051
14475
|
"components/molecules/EmptyState.tsx"() {
|
|
14052
14476
|
"use client";
|
|
14053
14477
|
init_cn();
|
|
14054
14478
|
init_atoms();
|
|
14055
14479
|
init_Box();
|
|
14480
|
+
init_Icon();
|
|
14056
14481
|
init_Stack();
|
|
14057
14482
|
init_Typography();
|
|
14058
14483
|
init_useEventBus();
|
|
14059
14484
|
init_useTranslate();
|
|
14060
|
-
|
|
14061
|
-
"check-circle"
|
|
14062
|
-
|
|
14063
|
-
"
|
|
14064
|
-
error: XCircle,
|
|
14065
|
-
"alert-circle": AlertCircle,
|
|
14066
|
-
warning: AlertCircle,
|
|
14067
|
-
info: Info,
|
|
14068
|
-
search: Search,
|
|
14069
|
-
inbox: Inbox,
|
|
14070
|
-
"file-question": FileQuestion
|
|
14485
|
+
ICON_NAME_ALIASES = {
|
|
14486
|
+
check: "check-circle",
|
|
14487
|
+
error: "x-circle",
|
|
14488
|
+
warning: "alert-circle"
|
|
14071
14489
|
};
|
|
14072
14490
|
EmptyState = ({
|
|
14073
14491
|
icon,
|
|
@@ -14087,7 +14505,9 @@ var init_EmptyState = __esm({
|
|
|
14087
14505
|
if (actionEvent) eventBus.emit(`UI:${actionEvent}`, {});
|
|
14088
14506
|
onAction?.();
|
|
14089
14507
|
};
|
|
14090
|
-
const
|
|
14508
|
+
const iconName = typeof icon === "string" ? ICON_NAME_ALIASES[icon] ?? icon : void 0;
|
|
14509
|
+
const iconComponent = typeof icon === "function" ? icon : void 0;
|
|
14510
|
+
const hasIcon = Boolean(iconName || iconComponent);
|
|
14091
14511
|
const isDestructive = destructive || variant === "error";
|
|
14092
14512
|
const isSuccess = variant === "success";
|
|
14093
14513
|
const displayText = title || message || t("empty.noItems");
|
|
@@ -14100,7 +14520,7 @@ var init_EmptyState = __esm({
|
|
|
14100
14520
|
className
|
|
14101
14521
|
),
|
|
14102
14522
|
children: [
|
|
14103
|
-
|
|
14523
|
+
hasIcon && /* @__PURE__ */ jsx(
|
|
14104
14524
|
Box,
|
|
14105
14525
|
{
|
|
14106
14526
|
className: cn(
|
|
@@ -14108,8 +14528,9 @@ var init_EmptyState = __esm({
|
|
|
14108
14528
|
isDestructive ? "bg-error/10" : isSuccess ? "bg-success/10" : "bg-muted"
|
|
14109
14529
|
),
|
|
14110
14530
|
children: /* @__PURE__ */ jsx(
|
|
14111
|
-
|
|
14531
|
+
Icon,
|
|
14112
14532
|
{
|
|
14533
|
+
...iconName ? { name: iconName } : { icon: iconComponent },
|
|
14113
14534
|
className: cn(
|
|
14114
14535
|
"h-8 w-8",
|
|
14115
14536
|
isDestructive ? "text-error" : isSuccess ? "text-success" : "text-muted-foreground"
|
|
@@ -14479,7 +14900,7 @@ var init_Grid = __esm({
|
|
|
14479
14900
|
as: Component = "div"
|
|
14480
14901
|
}) => {
|
|
14481
14902
|
const mergedStyle = rows ? { gridTemplateRows: `repeat(${rows}, minmax(0, 1fr))`, ...style } : style;
|
|
14482
|
-
return
|
|
14903
|
+
return React80__default.createElement(
|
|
14483
14904
|
Component,
|
|
14484
14905
|
{
|
|
14485
14906
|
className: cn(
|
|
@@ -14849,7 +15270,7 @@ var init_BranchingLogicBuilder = __esm({
|
|
|
14849
15270
|
const height = PADDING * 2 + items.length * (NODE_HEIGHT + NODE_GAP_Y);
|
|
14850
15271
|
return { items, positions, width, height };
|
|
14851
15272
|
}, [questions]);
|
|
14852
|
-
return /* @__PURE__ */ jsx(Box, { className: "overflow-auto rounded-
|
|
15273
|
+
return /* @__PURE__ */ jsx(Box, { className: "overflow-auto rounded-container border border-border bg-card p-2", children: /* @__PURE__ */ jsxs(
|
|
14853
15274
|
"svg",
|
|
14854
15275
|
{
|
|
14855
15276
|
width: layout.width,
|
|
@@ -15092,7 +15513,7 @@ var init_Breadcrumb = __esm({
|
|
|
15092
15513
|
init_useEventBus();
|
|
15093
15514
|
Breadcrumb = ({
|
|
15094
15515
|
items,
|
|
15095
|
-
separator =
|
|
15516
|
+
separator = "chevron-right",
|
|
15096
15517
|
maxItems,
|
|
15097
15518
|
className
|
|
15098
15519
|
}) => {
|
|
@@ -15121,7 +15542,7 @@ var init_Breadcrumb = __esm({
|
|
|
15121
15542
|
),
|
|
15122
15543
|
"aria-current": isLast ? "page" : void 0,
|
|
15123
15544
|
children: [
|
|
15124
|
-
item.icon && /* @__PURE__ */ jsx(Icon, { icon: item.icon, size: "sm" }),
|
|
15545
|
+
item.icon && (typeof item.icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: item.icon, size: "sm" }) : /* @__PURE__ */ jsx(Icon, { icon: item.icon, size: "sm" })),
|
|
15125
15546
|
/* @__PURE__ */ jsx(
|
|
15126
15547
|
Typography,
|
|
15127
15548
|
{
|
|
@@ -15148,7 +15569,7 @@ var init_Breadcrumb = __esm({
|
|
|
15148
15569
|
"aria-current": isLast ? "page" : void 0,
|
|
15149
15570
|
disabled: isLast,
|
|
15150
15571
|
children: [
|
|
15151
|
-
item.icon && /* @__PURE__ */ jsx(Icon, { icon: item.icon, size: "sm" }),
|
|
15572
|
+
item.icon && (typeof item.icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: item.icon, size: "sm" }) : /* @__PURE__ */ jsx(Icon, { icon: item.icon, size: "sm" })),
|
|
15152
15573
|
/* @__PURE__ */ jsx(
|
|
15153
15574
|
Typography,
|
|
15154
15575
|
{
|
|
@@ -15160,14 +15581,7 @@ var init_Breadcrumb = __esm({
|
|
|
15160
15581
|
]
|
|
15161
15582
|
}
|
|
15162
15583
|
),
|
|
15163
|
-
!isLast && /* @__PURE__ */ jsx(
|
|
15164
|
-
Icon,
|
|
15165
|
-
{
|
|
15166
|
-
icon: separator,
|
|
15167
|
-
size: "sm",
|
|
15168
|
-
className: "text-muted-foreground"
|
|
15169
|
-
}
|
|
15170
|
-
)
|
|
15584
|
+
!isLast && (typeof separator === "string" ? /* @__PURE__ */ jsx(Icon, { name: separator, size: "sm", className: "text-muted-foreground" }) : /* @__PURE__ */ jsx(Icon, { icon: separator, size: "sm", className: "text-muted-foreground" }))
|
|
15171
15585
|
] }, index);
|
|
15172
15586
|
}) })
|
|
15173
15587
|
}
|
|
@@ -15688,7 +16102,7 @@ function CalendarGrid({
|
|
|
15688
16102
|
{
|
|
15689
16103
|
variant: "ghost",
|
|
15690
16104
|
size: "sm",
|
|
15691
|
-
icon:
|
|
16105
|
+
icon: "chevron-left",
|
|
15692
16106
|
onClick: stepPrev,
|
|
15693
16107
|
"aria-disabled": !canPrev || void 0,
|
|
15694
16108
|
"aria-label": "Previous days",
|
|
@@ -15701,7 +16115,7 @@ function CalendarGrid({
|
|
|
15701
16115
|
{
|
|
15702
16116
|
variant: "ghost",
|
|
15703
16117
|
size: "sm",
|
|
15704
|
-
iconRight:
|
|
16118
|
+
iconRight: "chevron-right",
|
|
15705
16119
|
onClick: stepNext,
|
|
15706
16120
|
"aria-disabled": !canNext || void 0,
|
|
15707
16121
|
"aria-label": "Next days",
|
|
@@ -17747,7 +18161,7 @@ var init_Carousel = __esm({
|
|
|
17747
18161
|
Box,
|
|
17748
18162
|
{
|
|
17749
18163
|
className: cn(
|
|
17750
|
-
"rounded-full cursor-pointer transition-all duration-
|
|
18164
|
+
"rounded-full cursor-pointer transition-all duration-fast"
|
|
17751
18165
|
),
|
|
17752
18166
|
style: {
|
|
17753
18167
|
width: isActive ? 10 : 8,
|
|
@@ -18885,7 +19299,7 @@ var init_CodeExample = __esm({
|
|
|
18885
19299
|
{
|
|
18886
19300
|
className: cn(
|
|
18887
19301
|
"bg-foreground",
|
|
18888
|
-
"rounded-
|
|
19302
|
+
"rounded-container",
|
|
18889
19303
|
"border-[length:var(--border-width)] border-border",
|
|
18890
19304
|
"overflow-hidden",
|
|
18891
19305
|
className
|
|
@@ -19718,7 +20132,7 @@ function CounterMinimal({
|
|
|
19718
20132
|
size: sizeStyles9[size].button,
|
|
19719
20133
|
onClick: onDecrement,
|
|
19720
20134
|
disabled: resolved.decrementDisabled,
|
|
19721
|
-
icon:
|
|
20135
|
+
icon: "minus",
|
|
19722
20136
|
children: resolved.decrementLabel
|
|
19723
20137
|
}
|
|
19724
20138
|
),
|
|
@@ -19740,7 +20154,7 @@ function CounterMinimal({
|
|
|
19740
20154
|
size: sizeStyles9[size].button,
|
|
19741
20155
|
onClick: onIncrement,
|
|
19742
20156
|
disabled: resolved.incrementDisabled,
|
|
19743
|
-
icon:
|
|
20157
|
+
icon: "plus",
|
|
19744
20158
|
children: resolved.incrementLabel
|
|
19745
20159
|
}
|
|
19746
20160
|
)
|
|
@@ -19786,7 +20200,7 @@ function CounterStandard({
|
|
|
19786
20200
|
size: sizeStyles9[size].button,
|
|
19787
20201
|
onClick: onDecrement,
|
|
19788
20202
|
disabled: resolved.decrementDisabled,
|
|
19789
|
-
icon:
|
|
20203
|
+
icon: "minus"
|
|
19790
20204
|
}
|
|
19791
20205
|
),
|
|
19792
20206
|
/* @__PURE__ */ jsx(
|
|
@@ -19796,7 +20210,7 @@ function CounterStandard({
|
|
|
19796
20210
|
size: sizeStyles9[size].button,
|
|
19797
20211
|
onClick: onIncrement,
|
|
19798
20212
|
disabled: resolved.incrementDisabled,
|
|
19799
|
-
icon:
|
|
20213
|
+
icon: "plus"
|
|
19800
20214
|
}
|
|
19801
20215
|
)
|
|
19802
20216
|
] }),
|
|
@@ -19806,7 +20220,7 @@ function CounterStandard({
|
|
|
19806
20220
|
variant: "ghost",
|
|
19807
20221
|
size: "sm",
|
|
19808
20222
|
onClick: onReset,
|
|
19809
|
-
icon:
|
|
20223
|
+
icon: "rotate-ccw",
|
|
19810
20224
|
children: "Reset"
|
|
19811
20225
|
}
|
|
19812
20226
|
)
|
|
@@ -19855,7 +20269,7 @@ function CounterFull({
|
|
|
19855
20269
|
size: sizeStyles9[size].button,
|
|
19856
20270
|
onClick: onDecrement,
|
|
19857
20271
|
disabled: resolved.decrementDisabled,
|
|
19858
|
-
icon:
|
|
20272
|
+
icon: "minus",
|
|
19859
20273
|
children: resolved.decrementLabel
|
|
19860
20274
|
}
|
|
19861
20275
|
),
|
|
@@ -19866,7 +20280,7 @@ function CounterFull({
|
|
|
19866
20280
|
size: sizeStyles9[size].button,
|
|
19867
20281
|
onClick: onIncrement,
|
|
19868
20282
|
disabled: resolved.incrementDisabled,
|
|
19869
|
-
icon:
|
|
20283
|
+
icon: "plus",
|
|
19870
20284
|
children: resolved.incrementLabel
|
|
19871
20285
|
}
|
|
19872
20286
|
)
|
|
@@ -19877,7 +20291,7 @@ function CounterFull({
|
|
|
19877
20291
|
variant: "ghost",
|
|
19878
20292
|
size: "sm",
|
|
19879
20293
|
onClick: onReset,
|
|
19880
|
-
icon:
|
|
20294
|
+
icon: "rotate-ccw",
|
|
19881
20295
|
children: "Reset to 0"
|
|
19882
20296
|
}
|
|
19883
20297
|
)
|
|
@@ -20000,7 +20414,7 @@ function CraftingRecipe({
|
|
|
20000
20414
|
className
|
|
20001
20415
|
}) {
|
|
20002
20416
|
const eventBus = useEventBus();
|
|
20003
|
-
const handleCraft =
|
|
20417
|
+
const handleCraft = React80.useCallback(() => {
|
|
20004
20418
|
onCraft?.();
|
|
20005
20419
|
if (craftEvent) {
|
|
20006
20420
|
eventBus.emit(craftEvent, { output: output.label });
|
|
@@ -20017,7 +20431,7 @@ function CraftingRecipe({
|
|
|
20017
20431
|
children: [
|
|
20018
20432
|
/* @__PURE__ */ jsx(HStack, { gap: "xs", className: "flex-wrap items-center", children: inputs.map((ingredient, index) => {
|
|
20019
20433
|
const hasSufficient = ingredient.available >= ingredient.required;
|
|
20020
|
-
return /* @__PURE__ */ jsxs(
|
|
20434
|
+
return /* @__PURE__ */ jsxs(React80.Fragment, { children: [
|
|
20021
20435
|
/* @__PURE__ */ jsx(Box, { className: "relative", children: /* @__PURE__ */ jsx(
|
|
20022
20436
|
ItemSlot,
|
|
20023
20437
|
{
|
|
@@ -20080,8 +20494,8 @@ function DPad({
|
|
|
20080
20494
|
}) {
|
|
20081
20495
|
const eventBus = useEventBus();
|
|
20082
20496
|
const sizes = sizeMap6[size];
|
|
20083
|
-
const [activeDirections, setActiveDirections] =
|
|
20084
|
-
const handlePress =
|
|
20497
|
+
const [activeDirections, setActiveDirections] = React80.useState(/* @__PURE__ */ new Set());
|
|
20498
|
+
const handlePress = React80.useCallback(
|
|
20085
20499
|
(direction) => {
|
|
20086
20500
|
setActiveDirections((prev) => new Set(prev).add(direction));
|
|
20087
20501
|
if (directionEvent) eventBus.emit(`UI:${directionEvent}`, { direction, pressed: true });
|
|
@@ -20089,7 +20503,7 @@ function DPad({
|
|
|
20089
20503
|
},
|
|
20090
20504
|
[directionEvent, eventBus, onDirection]
|
|
20091
20505
|
);
|
|
20092
|
-
const handleRelease =
|
|
20506
|
+
const handleRelease = React80.useCallback(
|
|
20093
20507
|
(direction) => {
|
|
20094
20508
|
setActiveDirections((prev) => {
|
|
20095
20509
|
const next = new Set(prev);
|
|
@@ -20407,7 +20821,7 @@ var init_DashboardLayout = __esm({
|
|
|
20407
20821
|
variant: "ghost",
|
|
20408
20822
|
className: "@lg/dashboard:hidden p-2 rounded-md hover:bg-muted dark:hover:bg-muted text-muted-foreground dark:text-muted-foreground",
|
|
20409
20823
|
onClick: () => setSidebarOpen(false),
|
|
20410
|
-
children: /* @__PURE__ */ jsx(
|
|
20824
|
+
children: /* @__PURE__ */ jsx(Icon, { name: "x", className: "h-5 w-5" })
|
|
20411
20825
|
}
|
|
20412
20826
|
)
|
|
20413
20827
|
]
|
|
@@ -20453,7 +20867,7 @@ var init_DashboardLayout = __esm({
|
|
|
20453
20867
|
className: "@lg/dashboard:hidden p-2 rounded-md hover:bg-muted dark:hover:bg-muted text-muted-foreground dark:text-muted-foreground touch-manipulation min-h-[44px] min-w-[44px] flex items-center justify-center",
|
|
20454
20868
|
onClick: () => setSidebarOpen(true),
|
|
20455
20869
|
"aria-label": "Open sidebar",
|
|
20456
|
-
children: /* @__PURE__ */ jsx(
|
|
20870
|
+
children: /* @__PURE__ */ jsx(Icon, { name: "menu", className: "h-5 w-5" })
|
|
20457
20871
|
}
|
|
20458
20872
|
),
|
|
20459
20873
|
isTopNav && /* @__PURE__ */ jsxs(
|
|
@@ -20496,7 +20910,7 @@ var init_DashboardLayout = __esm({
|
|
|
20496
20910
|
}
|
|
20497
20911
|
),
|
|
20498
20912
|
searchEnabled && /* @__PURE__ */ jsx(Box, { className: "hidden @sm/dashboard:block flex-1 min-w-0 @xl/dashboard:max-w-md", children: /* @__PURE__ */ jsxs(Box, { className: "relative", children: [
|
|
20499
|
-
/* @__PURE__ */ jsx(
|
|
20913
|
+
/* @__PURE__ */ jsx(Icon, { name: "search", className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground dark:text-muted-foreground" }),
|
|
20500
20914
|
/* @__PURE__ */ jsx(
|
|
20501
20915
|
Input,
|
|
20502
20916
|
{
|
|
@@ -20547,7 +20961,7 @@ var init_DashboardLayout = __esm({
|
|
|
20547
20961
|
onClick: handleNotificationClick,
|
|
20548
20962
|
"aria-label": t("common.notifications"),
|
|
20549
20963
|
children: [
|
|
20550
|
-
/* @__PURE__ */ jsx(
|
|
20964
|
+
/* @__PURE__ */ jsx(Icon, { name: "bell", className: "h-5 w-5 text-muted-foreground dark:text-muted-foreground" }),
|
|
20551
20965
|
unreadCount > 0 && /* @__PURE__ */ jsx(
|
|
20552
20966
|
Box,
|
|
20553
20967
|
{
|
|
@@ -20585,7 +20999,7 @@ var init_DashboardLayout = __esm({
|
|
|
20585
20999
|
children: user.name
|
|
20586
21000
|
}
|
|
20587
21001
|
),
|
|
20588
|
-
/* @__PURE__ */ jsx(
|
|
21002
|
+
/* @__PURE__ */ jsx(Icon, { name: "chevron-down", className: "hidden @sm/dashboard:block h-4 w-4 text-muted-foreground dark:text-muted-foreground" })
|
|
20589
21003
|
]
|
|
20590
21004
|
}
|
|
20591
21005
|
),
|
|
@@ -20628,7 +21042,7 @@ var init_DashboardLayout = __esm({
|
|
|
20628
21042
|
},
|
|
20629
21043
|
className: "w-full flex items-center gap-2 px-4 py-2 text-sm text-error dark:text-error hover:bg-error/10 dark:hover:bg-error/20",
|
|
20630
21044
|
children: [
|
|
20631
|
-
/* @__PURE__ */ jsx(
|
|
21045
|
+
/* @__PURE__ */ jsx(Icon, { name: "log-out", className: "h-4 w-4" }),
|
|
20632
21046
|
t("auth.signOut")
|
|
20633
21047
|
]
|
|
20634
21048
|
}
|
|
@@ -20810,14 +21224,14 @@ function useDataDnd(args) {
|
|
|
20810
21224
|
const isZone = Boolean(dragGroup || accepts || sortable);
|
|
20811
21225
|
const enabled = isZone || Boolean(dndRoot);
|
|
20812
21226
|
const eventBus = useEventBus();
|
|
20813
|
-
const parentRoot =
|
|
21227
|
+
const parentRoot = React80__default.useContext(RootCtx);
|
|
20814
21228
|
const isRoot = enabled && parentRoot === null;
|
|
20815
|
-
const zoneId =
|
|
21229
|
+
const zoneId = React80__default.useId();
|
|
20816
21230
|
const ownGroup = dragGroup ?? accepts ?? zoneId;
|
|
20817
|
-
const [optimisticOrders, setOptimisticOrders] =
|
|
20818
|
-
const optimisticOrdersRef =
|
|
21231
|
+
const [optimisticOrders, setOptimisticOrders] = React80__default.useState(() => /* @__PURE__ */ new Map());
|
|
21232
|
+
const optimisticOrdersRef = React80__default.useRef(optimisticOrders);
|
|
20819
21233
|
optimisticOrdersRef.current = optimisticOrders;
|
|
20820
|
-
const clearOptimisticOrder =
|
|
21234
|
+
const clearOptimisticOrder = React80__default.useCallback((group) => {
|
|
20821
21235
|
setOptimisticOrders((prev) => {
|
|
20822
21236
|
if (!prev.has(group)) return prev;
|
|
20823
21237
|
const next = new Map(prev);
|
|
@@ -20842,7 +21256,7 @@ function useDataDnd(args) {
|
|
|
20842
21256
|
const raw = it[dndItemIdField];
|
|
20843
21257
|
return String(raw ?? `__idx_${idx}`);
|
|
20844
21258
|
}).join("|");
|
|
20845
|
-
const itemIds =
|
|
21259
|
+
const itemIds = React80__default.useMemo(
|
|
20846
21260
|
() => orderedItems.map((it, idx) => {
|
|
20847
21261
|
const raw = it[dndItemIdField];
|
|
20848
21262
|
return raw ?? `__idx_${idx}`;
|
|
@@ -20850,7 +21264,7 @@ function useDataDnd(args) {
|
|
|
20850
21264
|
[itemIdsSignature]
|
|
20851
21265
|
);
|
|
20852
21266
|
const itemsContentSig = items.map((it, idx) => String(it[dndItemIdField] ?? `__${idx}`)).join("|");
|
|
20853
|
-
|
|
21267
|
+
React80__default.useEffect(() => {
|
|
20854
21268
|
const root = isRoot ? null : parentRoot;
|
|
20855
21269
|
if (root) {
|
|
20856
21270
|
root.clearOptimisticOrder(ownGroup);
|
|
@@ -20858,20 +21272,20 @@ function useDataDnd(args) {
|
|
|
20858
21272
|
clearOptimisticOrder(ownGroup);
|
|
20859
21273
|
}
|
|
20860
21274
|
}, [itemsContentSig, ownGroup]);
|
|
20861
|
-
const zonesRef =
|
|
20862
|
-
const registerZone =
|
|
21275
|
+
const zonesRef = React80__default.useRef(/* @__PURE__ */ new Map());
|
|
21276
|
+
const registerZone = React80__default.useCallback((zoneId2, meta2) => {
|
|
20863
21277
|
zonesRef.current.set(zoneId2, meta2);
|
|
20864
21278
|
}, []);
|
|
20865
|
-
const unregisterZone =
|
|
21279
|
+
const unregisterZone = React80__default.useCallback((zoneId2) => {
|
|
20866
21280
|
zonesRef.current.delete(zoneId2);
|
|
20867
21281
|
}, []);
|
|
20868
|
-
const [activeDrag, setActiveDrag] =
|
|
20869
|
-
const [overZoneGroup, setOverZoneGroup] =
|
|
20870
|
-
const meta =
|
|
21282
|
+
const [activeDrag, setActiveDrag] = React80__default.useState(null);
|
|
21283
|
+
const [overZoneGroup, setOverZoneGroup] = React80__default.useState(null);
|
|
21284
|
+
const meta = React80__default.useMemo(
|
|
20871
21285
|
() => ({ group: ownGroup, dropEvent, reorderEvent, positionEvent, itemIds, rawItems: items, idField: dndItemIdField }),
|
|
20872
21286
|
[ownGroup, dropEvent, reorderEvent, positionEvent, itemIds, items, dndItemIdField]
|
|
20873
21287
|
);
|
|
20874
|
-
|
|
21288
|
+
React80__default.useEffect(() => {
|
|
20875
21289
|
const target = isRoot ? null : parentRoot;
|
|
20876
21290
|
if (!target) {
|
|
20877
21291
|
zonesRef.current.set(zoneId, meta);
|
|
@@ -20890,7 +21304,7 @@ function useDataDnd(args) {
|
|
|
20890
21304
|
}, [parentRoot, isRoot, zoneId, meta]);
|
|
20891
21305
|
const sensors = useAlmadarDndSensors(true);
|
|
20892
21306
|
const collisionDetection = almadarDndCollisionDetection;
|
|
20893
|
-
const findZoneByItem =
|
|
21307
|
+
const findZoneByItem = React80__default.useCallback(
|
|
20894
21308
|
(id) => {
|
|
20895
21309
|
for (const z of zonesRef.current.values()) {
|
|
20896
21310
|
if (z.itemIds.includes(id)) return z;
|
|
@@ -20899,7 +21313,7 @@ function useDataDnd(args) {
|
|
|
20899
21313
|
},
|
|
20900
21314
|
[]
|
|
20901
21315
|
);
|
|
20902
|
-
|
|
21316
|
+
React80__default.useCallback(
|
|
20903
21317
|
(group) => {
|
|
20904
21318
|
for (const z of zonesRef.current.values()) {
|
|
20905
21319
|
if (z.group === group) return z;
|
|
@@ -20908,7 +21322,7 @@ function useDataDnd(args) {
|
|
|
20908
21322
|
},
|
|
20909
21323
|
[]
|
|
20910
21324
|
);
|
|
20911
|
-
const handleDragEnd =
|
|
21325
|
+
const handleDragEnd = React80__default.useCallback(
|
|
20912
21326
|
(event) => {
|
|
20913
21327
|
const { active, over } = event;
|
|
20914
21328
|
const activeIdStr = String(active.id);
|
|
@@ -20999,12 +21413,12 @@ function useDataDnd(args) {
|
|
|
20999
21413
|
},
|
|
21000
21414
|
[eventBus]
|
|
21001
21415
|
);
|
|
21002
|
-
const sortableData =
|
|
21003
|
-
const SortableItem =
|
|
21416
|
+
const sortableData = React80__default.useMemo(() => ({ dndGroup: ownGroup }), [ownGroup]);
|
|
21417
|
+
const SortableItem = React80__default.useCallback(
|
|
21004
21418
|
({ id, children }) => {
|
|
21005
21419
|
const {
|
|
21006
21420
|
attributes,
|
|
21007
|
-
listeners:
|
|
21421
|
+
listeners: listeners8,
|
|
21008
21422
|
setNodeRef,
|
|
21009
21423
|
transform,
|
|
21010
21424
|
transition,
|
|
@@ -21027,7 +21441,7 @@ function useDataDnd(args) {
|
|
|
21027
21441
|
ref: setNodeRef,
|
|
21028
21442
|
style,
|
|
21029
21443
|
...attributes,
|
|
21030
|
-
...
|
|
21444
|
+
...listeners8,
|
|
21031
21445
|
children
|
|
21032
21446
|
}
|
|
21033
21447
|
);
|
|
@@ -21040,7 +21454,7 @@ function useDataDnd(args) {
|
|
|
21040
21454
|
id: droppableId,
|
|
21041
21455
|
data: sortableData
|
|
21042
21456
|
});
|
|
21043
|
-
const ctx =
|
|
21457
|
+
const ctx = React80__default.useContext(RootCtx);
|
|
21044
21458
|
const activeDrag2 = ctx?.activeDrag ?? null;
|
|
21045
21459
|
const overZoneGroup2 = ctx?.overZoneGroup ?? null;
|
|
21046
21460
|
const isThisZoneOver = overZoneGroup2 === ownGroup;
|
|
@@ -21055,7 +21469,7 @@ function useDataDnd(args) {
|
|
|
21055
21469
|
showForeignPlaceholder,
|
|
21056
21470
|
ctxAvailable: ctx != null
|
|
21057
21471
|
});
|
|
21058
|
-
|
|
21472
|
+
React80__default.useEffect(() => {
|
|
21059
21473
|
dndLog.info("dropzone:isOver:change", { droppableId, group: ownGroup, isOver, isThisZoneOver, showForeignPlaceholder, activeDragSourceGroup: activeDrag2?.sourceGroup ?? null });
|
|
21060
21474
|
}, [droppableId, isOver, isThisZoneOver, showForeignPlaceholder]);
|
|
21061
21475
|
return /* @__PURE__ */ jsx(
|
|
@@ -21069,11 +21483,11 @@ function useDataDnd(args) {
|
|
|
21069
21483
|
}
|
|
21070
21484
|
);
|
|
21071
21485
|
};
|
|
21072
|
-
const rootContextValue =
|
|
21486
|
+
const rootContextValue = React80__default.useMemo(
|
|
21073
21487
|
() => ({ registerZone, unregisterZone, activeDrag, overZoneGroup, optimisticOrders, clearOptimisticOrder }),
|
|
21074
21488
|
[registerZone, unregisterZone, activeDrag, overZoneGroup, optimisticOrders, clearOptimisticOrder]
|
|
21075
21489
|
);
|
|
21076
|
-
const handleDragStart =
|
|
21490
|
+
const handleDragStart = React80__default.useCallback((event) => {
|
|
21077
21491
|
const sourceZone = findZoneByItem(event.active.id);
|
|
21078
21492
|
const rect = event.active.rect.current.initial;
|
|
21079
21493
|
const height = rect?.height && rect.height > 0 ? rect.height : 64;
|
|
@@ -21092,7 +21506,7 @@ function useDataDnd(args) {
|
|
|
21092
21506
|
isRoot
|
|
21093
21507
|
});
|
|
21094
21508
|
}, [findZoneByItem, isRoot, zoneId]);
|
|
21095
|
-
const handleDragOver =
|
|
21509
|
+
const handleDragOver = React80__default.useCallback((event) => {
|
|
21096
21510
|
const { active, over } = event;
|
|
21097
21511
|
const overData = over?.data?.current;
|
|
21098
21512
|
const overGroup = overData?.dndGroup ?? null;
|
|
@@ -21162,7 +21576,7 @@ function useDataDnd(args) {
|
|
|
21162
21576
|
return next;
|
|
21163
21577
|
});
|
|
21164
21578
|
}, []);
|
|
21165
|
-
const handleDragCancel =
|
|
21579
|
+
const handleDragCancel = React80__default.useCallback((event) => {
|
|
21166
21580
|
setActiveDrag(null);
|
|
21167
21581
|
setOverZoneGroup(null);
|
|
21168
21582
|
dndLog.warn("dragCancel", {
|
|
@@ -21170,12 +21584,12 @@ function useDataDnd(args) {
|
|
|
21170
21584
|
reason: "dnd-kit cancelled the drag (escape key, pointer interrupted, or external)"
|
|
21171
21585
|
});
|
|
21172
21586
|
}, []);
|
|
21173
|
-
const handleDragEndWithCleanup =
|
|
21587
|
+
const handleDragEndWithCleanup = React80__default.useCallback((event) => {
|
|
21174
21588
|
handleDragEnd(event);
|
|
21175
21589
|
setActiveDrag(null);
|
|
21176
21590
|
setOverZoneGroup(null);
|
|
21177
21591
|
}, [handleDragEnd]);
|
|
21178
|
-
const wrapContainer =
|
|
21592
|
+
const wrapContainer = React80__default.useCallback(
|
|
21179
21593
|
(children) => {
|
|
21180
21594
|
if (!enabled) return children;
|
|
21181
21595
|
const strategy = layout === "grid" ? rectSortingStrategy : verticalListSortingStrategy;
|
|
@@ -21229,7 +21643,7 @@ var init_useDataDnd = __esm({
|
|
|
21229
21643
|
init_useAlmadarDndCollision();
|
|
21230
21644
|
init_Box();
|
|
21231
21645
|
dndLog = createLogger("almadar:ui:dnd");
|
|
21232
|
-
RootCtx =
|
|
21646
|
+
RootCtx = React80__default.createContext(null);
|
|
21233
21647
|
}
|
|
21234
21648
|
});
|
|
21235
21649
|
function fieldLabel2(key) {
|
|
@@ -21451,7 +21865,7 @@ function DataGrid({
|
|
|
21451
21865
|
className: cn(
|
|
21452
21866
|
"bg-card rounded-lg",
|
|
21453
21867
|
"border border-border",
|
|
21454
|
-
"shadow-
|
|
21868
|
+
"shadow-elevation-card hover:shadow-elevation-dialog",
|
|
21455
21869
|
"hover:border-primary transition-all",
|
|
21456
21870
|
"flex flex-col",
|
|
21457
21871
|
isSelected && "ring-2 ring-primary border-primary"
|
|
@@ -21718,7 +22132,7 @@ function DataList({
|
|
|
21718
22132
|
}) {
|
|
21719
22133
|
const eventBus = useEventBus();
|
|
21720
22134
|
const { t } = useTranslate();
|
|
21721
|
-
const [visibleCount, setVisibleCount] =
|
|
22135
|
+
const [visibleCount, setVisibleCount] = React80__default.useState(pageSize || Infinity);
|
|
21722
22136
|
const fieldDefs = fields ?? columns ?? [];
|
|
21723
22137
|
const allDataRaw = Array.isArray(entity) ? entity : entity ? [entity] : [];
|
|
21724
22138
|
const dnd = useDataDnd({
|
|
@@ -21737,7 +22151,7 @@ function DataList({
|
|
|
21737
22151
|
const data = pageSize > 0 ? allData.slice(0, visibleCount) : allData;
|
|
21738
22152
|
const hasMoreLocal = pageSize > 0 && visibleCount < allData.length;
|
|
21739
22153
|
const hasRenderProp = typeof children === "function";
|
|
21740
|
-
|
|
22154
|
+
React80__default.useEffect(() => {
|
|
21741
22155
|
const renderItemTypeOf = typeof schemaRenderItem;
|
|
21742
22156
|
const childrenTypeOf = typeof children;
|
|
21743
22157
|
if (data.length > 0 && !hasRenderProp) {
|
|
@@ -21794,7 +22208,7 @@ function DataList({
|
|
|
21794
22208
|
const items2 = data.map((item) => item);
|
|
21795
22209
|
const groups2 = groupBy ? groupData(items2, groupBy) : [{ label: "", items: items2 }];
|
|
21796
22210
|
const contentField = titleField?.name ?? fieldDefs[0]?.name ?? "";
|
|
21797
|
-
return /* @__PURE__ */ jsx(VStack, { gap: "sm", className: cn("py-2", className), children: groups2.map((group, gi) => /* @__PURE__ */ jsxs(
|
|
22211
|
+
return /* @__PURE__ */ jsx(VStack, { gap: "sm", className: cn("py-2", className), children: groups2.map((group, gi) => /* @__PURE__ */ jsxs(React80__default.Fragment, { children: [
|
|
21798
22212
|
group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: "my-2" }),
|
|
21799
22213
|
group.items.map((itemData, index) => {
|
|
21800
22214
|
const id = itemData.id || `${gi}-${index}`;
|
|
@@ -21825,7 +22239,7 @@ function DataList({
|
|
|
21825
22239
|
{
|
|
21826
22240
|
variant: "caption",
|
|
21827
22241
|
className: cn(
|
|
21828
|
-
"mt-1 text-
|
|
22242
|
+
"mt-1 text-xs",
|
|
21829
22243
|
isSent ? "opacity-70" : "text-muted-foreground"
|
|
21830
22244
|
),
|
|
21831
22245
|
children: formatDate3(timestamp)
|
|
@@ -21890,7 +22304,7 @@ function DataList({
|
|
|
21890
22304
|
Box,
|
|
21891
22305
|
{
|
|
21892
22306
|
className: cn(
|
|
21893
|
-
"group flex items-center gap-4 transition-all duration-
|
|
22307
|
+
"group flex items-center gap-4 transition-all duration-fast",
|
|
21894
22308
|
isCompact ? "px-4 py-2" : "px-6 py-4",
|
|
21895
22309
|
"hover:bg-muted/80",
|
|
21896
22310
|
!isCard && !isCompact && "rounded-lg border border-transparent hover:border-border"
|
|
@@ -21977,12 +22391,12 @@ function DataList({
|
|
|
21977
22391
|
Box,
|
|
21978
22392
|
{
|
|
21979
22393
|
className: cn(
|
|
21980
|
-
isCard && "bg-card rounded-xl border border-border shadow-
|
|
22394
|
+
isCard && "bg-card rounded-xl border border-border shadow-elevation-dialog overflow-hidden",
|
|
21981
22395
|
!isCard && gapClass,
|
|
21982
22396
|
className
|
|
21983
22397
|
),
|
|
21984
22398
|
children: [
|
|
21985
|
-
groups.map((group, gi) => /* @__PURE__ */ jsxs(
|
|
22399
|
+
groups.map((group, gi) => /* @__PURE__ */ jsxs(React80__default.Fragment, { children: [
|
|
21986
22400
|
group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: gi > 0 ? "mt-4" : "mt-0" }),
|
|
21987
22401
|
group.items.map(
|
|
21988
22402
|
(itemData, index) => renderItem(itemData, index, gi === groups.length - 1 && index === group.items.length - 1)
|
|
@@ -22119,7 +22533,7 @@ var init_FileTree = __esm({
|
|
|
22119
22533
|
Typography,
|
|
22120
22534
|
{
|
|
22121
22535
|
variant: "caption",
|
|
22122
|
-
className: `truncate font-mono text-
|
|
22536
|
+
className: `truncate font-mono text-xs !text-inherit ${isSelected ? "font-semibold" : ""}`,
|
|
22123
22537
|
children: node.name
|
|
22124
22538
|
}
|
|
22125
22539
|
),
|
|
@@ -22280,6 +22694,7 @@ var init_FilterGroup = __esm({
|
|
|
22280
22694
|
init_Select();
|
|
22281
22695
|
init_Badge();
|
|
22282
22696
|
init_Stack();
|
|
22697
|
+
init_Icon();
|
|
22283
22698
|
init_useEventBus();
|
|
22284
22699
|
init_useQuerySingleton();
|
|
22285
22700
|
resolveFilterType = (filter) => filter.filterType ?? filter.type;
|
|
@@ -22348,7 +22763,7 @@ var init_FilterGroup = __esm({
|
|
|
22348
22763
|
const activeFilterCount = Object.keys(selectedValues).length;
|
|
22349
22764
|
if (variant === "pills") {
|
|
22350
22765
|
return /* @__PURE__ */ jsxs(HStack, { gap: "md", align: "center", className: cn("flex-wrap", className), children: [
|
|
22351
|
-
showIcon && /* @__PURE__ */ jsx(
|
|
22766
|
+
showIcon && /* @__PURE__ */ jsx(Icon, { name: "filter", className: "h-4 w-4 text-muted-foreground" }),
|
|
22352
22767
|
filters.map((filter) => /* @__PURE__ */ jsxs(HStack, { gap: "xs", align: "center", children: [
|
|
22353
22768
|
/* @__PURE__ */ jsxs("span", { className: "text-sm font-[var(--font-weight-medium)] text-muted-foreground", children: [
|
|
22354
22769
|
filter.label,
|
|
@@ -22396,7 +22811,7 @@ var init_FilterGroup = __esm({
|
|
|
22396
22811
|
variant: "ghost",
|
|
22397
22812
|
size: "sm",
|
|
22398
22813
|
onClick: handleClearAll,
|
|
22399
|
-
leftIcon: /* @__PURE__ */ jsx(
|
|
22814
|
+
leftIcon: /* @__PURE__ */ jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
22400
22815
|
children: "Clear"
|
|
22401
22816
|
}
|
|
22402
22817
|
)
|
|
@@ -22405,7 +22820,7 @@ var init_FilterGroup = __esm({
|
|
|
22405
22820
|
if (variant === "vertical") {
|
|
22406
22821
|
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-4", className), children: [
|
|
22407
22822
|
showIcon && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-muted-foreground", children: [
|
|
22408
|
-
/* @__PURE__ */ jsx(
|
|
22823
|
+
/* @__PURE__ */ jsx(Icon, { name: "filter", className: "h-4 w-4" }),
|
|
22409
22824
|
/* @__PURE__ */ jsx("span", { className: "text-sm font-[var(--font-weight-bold)] uppercase tracking-wide", children: "Filters" })
|
|
22410
22825
|
] }),
|
|
22411
22826
|
filters.map((filter) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
@@ -22478,7 +22893,7 @@ var init_FilterGroup = __esm({
|
|
|
22478
22893
|
variant: "ghost",
|
|
22479
22894
|
size: "sm",
|
|
22480
22895
|
onClick: handleClearAll,
|
|
22481
|
-
leftIcon: /* @__PURE__ */ jsx(
|
|
22896
|
+
leftIcon: /* @__PURE__ */ jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
22482
22897
|
className: "self-start",
|
|
22483
22898
|
children: "Clear all"
|
|
22484
22899
|
}
|
|
@@ -22487,7 +22902,7 @@ var init_FilterGroup = __esm({
|
|
|
22487
22902
|
}
|
|
22488
22903
|
if (variant === "compact") {
|
|
22489
22904
|
return /* @__PURE__ */ jsxs(HStack, { gap: "sm", align: "center", className: cn("flex-wrap", className), children: [
|
|
22490
|
-
showIcon && /* @__PURE__ */ jsx(
|
|
22905
|
+
showIcon && /* @__PURE__ */ jsx(Icon, { name: "filter", className: "h-4 w-4 text-muted-foreground" }),
|
|
22491
22906
|
filters.map((filter) => /* @__PURE__ */ jsx("div", { className: "min-w-[120px]", children: resolveFilterType(filter) === "date" ? /* @__PURE__ */ jsx(
|
|
22492
22907
|
Input,
|
|
22493
22908
|
{
|
|
@@ -22563,7 +22978,7 @@ var init_FilterGroup = __esm({
|
|
|
22563
22978
|
filterDef?.label,
|
|
22564
22979
|
": ",
|
|
22565
22980
|
value,
|
|
22566
|
-
/* @__PURE__ */ jsx(
|
|
22981
|
+
/* @__PURE__ */ jsx(Icon, { name: "x", className: "ml-1 h-3 w-3" })
|
|
22567
22982
|
]
|
|
22568
22983
|
},
|
|
22569
22984
|
field
|
|
@@ -22577,7 +22992,7 @@ var init_FilterGroup = __esm({
|
|
|
22577
22992
|
"div",
|
|
22578
22993
|
{
|
|
22579
22994
|
className: cn(
|
|
22580
|
-
"p-4 rounded-
|
|
22995
|
+
"p-4 rounded-container",
|
|
22581
22996
|
"bg-card",
|
|
22582
22997
|
"border-[length:var(--border-width)] border-border",
|
|
22583
22998
|
className
|
|
@@ -22590,7 +23005,7 @@ var init_FilterGroup = __esm({
|
|
|
22590
23005
|
align: "center",
|
|
22591
23006
|
className: "text-muted-foreground",
|
|
22592
23007
|
children: [
|
|
22593
|
-
/* @__PURE__ */ jsx(
|
|
23008
|
+
/* @__PURE__ */ jsx(Icon, { name: "filter", className: "h-4 w-4" }),
|
|
22594
23009
|
/* @__PURE__ */ jsx("span", { className: "text-sm font-[var(--font-weight-bold)] uppercase tracking-wide", children: "Filters" })
|
|
22595
23010
|
]
|
|
22596
23011
|
}
|
|
@@ -22676,7 +23091,7 @@ var init_FilterGroup = __esm({
|
|
|
22676
23091
|
variant: "ghost",
|
|
22677
23092
|
size: "sm",
|
|
22678
23093
|
onClick: handleClearAll,
|
|
22679
|
-
leftIcon: /* @__PURE__ */ jsx(
|
|
23094
|
+
leftIcon: /* @__PURE__ */ jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
22680
23095
|
children: "Clear all"
|
|
22681
23096
|
}
|
|
22682
23097
|
)
|
|
@@ -22893,6 +23308,7 @@ var init_RelationSelect = __esm({
|
|
|
22893
23308
|
"use client";
|
|
22894
23309
|
init_cn();
|
|
22895
23310
|
init_Box();
|
|
23311
|
+
init_Icon();
|
|
22896
23312
|
init_Stack();
|
|
22897
23313
|
init_Input();
|
|
22898
23314
|
init_Button();
|
|
@@ -23036,12 +23452,13 @@ var init_RelationSelect = __esm({
|
|
|
23036
23452
|
as: "button",
|
|
23037
23453
|
className: "p-0.5 hover:bg-muted rounded cursor-pointer",
|
|
23038
23454
|
onClick: handleClear,
|
|
23039
|
-
children: /* @__PURE__ */ jsx(
|
|
23455
|
+
children: /* @__PURE__ */ jsx(Icon, { name: "x", className: "h-4 w-4 text-muted-foreground" })
|
|
23040
23456
|
}
|
|
23041
23457
|
),
|
|
23042
23458
|
/* @__PURE__ */ jsx(
|
|
23043
|
-
|
|
23459
|
+
Icon,
|
|
23044
23460
|
{
|
|
23461
|
+
name: "chevron-down",
|
|
23045
23462
|
className: cn(
|
|
23046
23463
|
"h-4 w-4 text-muted-foreground transition-transform",
|
|
23047
23464
|
isOpen && "transform rotate-180"
|
|
@@ -23259,7 +23676,7 @@ var init_SidePanel = __esm({
|
|
|
23259
23676
|
"border-l-2 border-border",
|
|
23260
23677
|
position === "left" && "border-l-0 border-r-2",
|
|
23261
23678
|
"flex flex-col",
|
|
23262
|
-
"transition-transform duration-
|
|
23679
|
+
"transition-transform duration-normal ease-standard",
|
|
23263
23680
|
width,
|
|
23264
23681
|
position === "right" ? "right-0" : "left-0",
|
|
23265
23682
|
className
|
|
@@ -23272,7 +23689,7 @@ var init_SidePanel = __esm({
|
|
|
23272
23689
|
{
|
|
23273
23690
|
variant: "ghost",
|
|
23274
23691
|
size: "sm",
|
|
23275
|
-
icon:
|
|
23692
|
+
icon: "x",
|
|
23276
23693
|
onClick: handleClose,
|
|
23277
23694
|
"aria-label": "Close panel",
|
|
23278
23695
|
children: /* @__PURE__ */ jsx(Typography, { variant: "small", as: "span", className: "sr-only", children: "Close" })
|
|
@@ -23330,7 +23747,7 @@ var init_WizardProgress = __esm({
|
|
|
23330
23747
|
children: /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: normalizedSteps.map((step, index) => {
|
|
23331
23748
|
const isActive = index === currentStep;
|
|
23332
23749
|
const isCompleted = index < currentStep;
|
|
23333
|
-
return /* @__PURE__ */ jsxs(
|
|
23750
|
+
return /* @__PURE__ */ jsxs(React80__default.Fragment, { children: [
|
|
23334
23751
|
/* @__PURE__ */ jsx(
|
|
23335
23752
|
"button",
|
|
23336
23753
|
{
|
|
@@ -23344,7 +23761,7 @@ var init_WizardProgress = __esm({
|
|
|
23344
23761
|
isCompleted && "bg-foreground text-background cursor-pointer hover:bg-muted-foreground",
|
|
23345
23762
|
!isActive && !isCompleted && "bg-card text-foreground"
|
|
23346
23763
|
),
|
|
23347
|
-
children: isCompleted ? /* @__PURE__ */ jsx(Icon, {
|
|
23764
|
+
children: isCompleted ? /* @__PURE__ */ jsx(Icon, { name: "check", size: "sm" }) : index + 1
|
|
23348
23765
|
}
|
|
23349
23766
|
),
|
|
23350
23767
|
!compact && /* @__PURE__ */ jsx(
|
|
@@ -23463,13 +23880,13 @@ var init_WizardNavigation = __esm({
|
|
|
23463
23880
|
),
|
|
23464
23881
|
children: [
|
|
23465
23882
|
showBack ? /* @__PURE__ */ jsxs(Button, { variant: "secondary", onClick: handleBack, disabled: isFirstStep, children: [
|
|
23466
|
-
/* @__PURE__ */ jsx(Icon, {
|
|
23883
|
+
/* @__PURE__ */ jsx(Icon, { name: "chevron-left", size: "sm" }),
|
|
23467
23884
|
resolvedBackLabel
|
|
23468
23885
|
] }) : /* @__PURE__ */ jsx(Box, {}),
|
|
23469
23886
|
/* @__PURE__ */ jsx(HStack, { align: "center", gap: "sm", children: /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-neutral-500", children: t("wizard.stepOf", { current: String(currentStep + 1), total: String(totalSteps) }) }) }),
|
|
23470
23887
|
isLastStep && showComplete ? /* @__PURE__ */ jsx(Button, { variant: "primary", onClick: handleComplete, disabled: !isValid, children: resolvedCompleteLabel }) : showNext ? /* @__PURE__ */ jsxs(Button, { variant: "primary", onClick: handleNext, disabled: !isValid, children: [
|
|
23471
23888
|
resolvedNextLabel,
|
|
23472
|
-
/* @__PURE__ */ jsx(Icon, {
|
|
23889
|
+
/* @__PURE__ */ jsx(Icon, { name: "chevron-right", size: "sm" })
|
|
23473
23890
|
] }) : /* @__PURE__ */ jsx(Box, {})
|
|
23474
23891
|
]
|
|
23475
23892
|
}
|
|
@@ -23661,7 +24078,7 @@ var init_ViolationAlert = __esm({
|
|
|
23661
24078
|
Box,
|
|
23662
24079
|
{
|
|
23663
24080
|
className: cn(
|
|
23664
|
-
"px-3 py-2 rounded-
|
|
24081
|
+
"px-3 py-2 rounded-container border",
|
|
23665
24082
|
bgColor,
|
|
23666
24083
|
className
|
|
23667
24084
|
),
|
|
@@ -23922,7 +24339,7 @@ var init_FlipCard = __esm({
|
|
|
23922
24339
|
/* @__PURE__ */ jsx(
|
|
23923
24340
|
Box,
|
|
23924
24341
|
{
|
|
23925
|
-
className: "absolute inset-0 w-full h-full rounded-lg shadow-
|
|
24342
|
+
className: "absolute inset-0 w-full h-full rounded-lg shadow-elevation-dialog flex items-center justify-center p-6",
|
|
23926
24343
|
style: { backfaceVisibility: "hidden", transform: "rotateY(0deg)" },
|
|
23927
24344
|
children: front
|
|
23928
24345
|
}
|
|
@@ -23930,7 +24347,7 @@ var init_FlipCard = __esm({
|
|
|
23930
24347
|
/* @__PURE__ */ jsx(
|
|
23931
24348
|
Box,
|
|
23932
24349
|
{
|
|
23933
|
-
className: "absolute inset-0 w-full h-full rounded-lg shadow-
|
|
24350
|
+
className: "absolute inset-0 w-full h-full rounded-lg shadow-elevation-dialog flex items-center justify-center p-6",
|
|
23934
24351
|
style: { backfaceVisibility: "hidden", transform: "rotateY(180deg)" },
|
|
23935
24352
|
children: back
|
|
23936
24353
|
}
|
|
@@ -24275,7 +24692,7 @@ var init_ProgressDots = __esm({
|
|
|
24275
24692
|
Box,
|
|
24276
24693
|
{
|
|
24277
24694
|
className: cn(
|
|
24278
|
-
"rounded-full transition-all duration-
|
|
24695
|
+
"rounded-full transition-all duration-fast",
|
|
24279
24696
|
onDotClick && "cursor-pointer"
|
|
24280
24697
|
),
|
|
24281
24698
|
style: {
|
|
@@ -24377,9 +24794,9 @@ function ScoreDisplay({
|
|
|
24377
24794
|
...rest
|
|
24378
24795
|
}) {
|
|
24379
24796
|
const resolvedValue = typeof value === "number" && !Number.isNaN(value) ? value : typeof rest.score === "number" && !Number.isNaN(rest.score) ? rest.score : 0;
|
|
24380
|
-
const [displayValue, setDisplayValue] =
|
|
24381
|
-
const [isAnimating, setIsAnimating] =
|
|
24382
|
-
|
|
24797
|
+
const [displayValue, setDisplayValue] = React80.useState(resolvedValue);
|
|
24798
|
+
const [isAnimating, setIsAnimating] = React80.useState(false);
|
|
24799
|
+
React80.useEffect(() => {
|
|
24383
24800
|
if (!animated || displayValue === resolvedValue) {
|
|
24384
24801
|
setDisplayValue(resolvedValue);
|
|
24385
24802
|
return;
|
|
@@ -24458,10 +24875,7 @@ function StatBadge({
|
|
|
24458
24875
|
className
|
|
24459
24876
|
),
|
|
24460
24877
|
children: [
|
|
24461
|
-
icon && /* @__PURE__ */ jsx("span", { className: "flex-shrink-0 text-lg", children: typeof icon === "string" ? (
|
|
24462
|
-
const I = resolveIcon(icon);
|
|
24463
|
-
return I ? /* @__PURE__ */ jsx(I, { className: "w-4 h-4" }) : icon;
|
|
24464
|
-
})() : icon }),
|
|
24878
|
+
icon && /* @__PURE__ */ jsx("span", { className: "flex-shrink-0 text-lg", children: typeof icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: icon, className: "w-4 h-4" }) : icon }),
|
|
24465
24879
|
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground font-medium", children: label }),
|
|
24466
24880
|
format === "hearts" && max && /* @__PURE__ */ jsx(
|
|
24467
24881
|
HealthBar,
|
|
@@ -24529,7 +24943,7 @@ function InventoryGrid({
|
|
|
24529
24943
|
const eventBus = useEventBus();
|
|
24530
24944
|
const slotCount = totalSlots ?? items.length;
|
|
24531
24945
|
const emptySlotCount = Math.max(0, slotCount - items.length);
|
|
24532
|
-
const handleSelect =
|
|
24946
|
+
const handleSelect = React80.useCallback(
|
|
24533
24947
|
(id) => {
|
|
24534
24948
|
onSelect?.(id);
|
|
24535
24949
|
if (selectEvent) {
|
|
@@ -24811,15 +25225,15 @@ function GameCanvas2D({
|
|
|
24811
25225
|
fps = 60,
|
|
24812
25226
|
className
|
|
24813
25227
|
}) {
|
|
24814
|
-
const canvasRef =
|
|
24815
|
-
const rafRef =
|
|
24816
|
-
const frameRef =
|
|
24817
|
-
const lastTimeRef =
|
|
24818
|
-
const onDrawRef =
|
|
25228
|
+
const canvasRef = React80.useRef(null);
|
|
25229
|
+
const rafRef = React80.useRef(0);
|
|
25230
|
+
const frameRef = React80.useRef(0);
|
|
25231
|
+
const lastTimeRef = React80.useRef(0);
|
|
25232
|
+
const onDrawRef = React80.useRef(onDraw);
|
|
24819
25233
|
onDrawRef.current = onDraw;
|
|
24820
|
-
const onTickRef =
|
|
25234
|
+
const onTickRef = React80.useRef(onTick);
|
|
24821
25235
|
onTickRef.current = onTick;
|
|
24822
|
-
|
|
25236
|
+
React80.useEffect(() => {
|
|
24823
25237
|
const canvas = canvasRef.current;
|
|
24824
25238
|
if (!canvas) return;
|
|
24825
25239
|
const ctx = canvas.getContext("2d");
|
|
@@ -25160,7 +25574,7 @@ function TurnPanel({
|
|
|
25160
25574
|
className
|
|
25161
25575
|
}) {
|
|
25162
25576
|
const eventBus = useEventBus();
|
|
25163
|
-
const handleAction =
|
|
25577
|
+
const handleAction = React80.useCallback(
|
|
25164
25578
|
(event) => {
|
|
25165
25579
|
if (event) {
|
|
25166
25580
|
eventBus.emit(event, { turn: currentTurn, phase, activeTeam });
|
|
@@ -25306,7 +25720,7 @@ function UnitCommandBar({
|
|
|
25306
25720
|
className
|
|
25307
25721
|
}) {
|
|
25308
25722
|
const eventBus = useEventBus();
|
|
25309
|
-
const handleCommand =
|
|
25723
|
+
const handleCommand = React80.useCallback(
|
|
25310
25724
|
(event) => {
|
|
25311
25725
|
if (event) {
|
|
25312
25726
|
eventBus.emit(event, { unitId: selectedUnitId });
|
|
@@ -25791,7 +26205,7 @@ function GameMenu({
|
|
|
25791
26205
|
} catch {
|
|
25792
26206
|
}
|
|
25793
26207
|
const eventBus = eventBusProp || eventBusFromHook;
|
|
25794
|
-
const handleOptionClick =
|
|
26208
|
+
const handleOptionClick = React80.useCallback(
|
|
25795
26209
|
(option) => {
|
|
25796
26210
|
if (option.event && eventBus) {
|
|
25797
26211
|
eventBus.emit(`UI:${option.event}`, { option });
|
|
@@ -25905,7 +26319,7 @@ function GameOverScreen({
|
|
|
25905
26319
|
} catch {
|
|
25906
26320
|
}
|
|
25907
26321
|
const eventBus = eventBusProp || eventBusFromHook;
|
|
25908
|
-
const handleActionClick =
|
|
26322
|
+
const handleActionClick = React80.useCallback(
|
|
25909
26323
|
(action) => {
|
|
25910
26324
|
if (action.event && eventBus) {
|
|
25911
26325
|
eventBus.emit(`UI:${action.event}`, { action });
|
|
@@ -26635,6 +27049,7 @@ var init_NumberStepper = __esm({
|
|
|
26635
27049
|
"components/molecules/NumberStepper.tsx"() {
|
|
26636
27050
|
"use client";
|
|
26637
27051
|
init_cn();
|
|
27052
|
+
init_Icon();
|
|
26638
27053
|
init_useEventBus();
|
|
26639
27054
|
sizeStyles10 = {
|
|
26640
27055
|
sm: {
|
|
@@ -26753,7 +27168,7 @@ var init_NumberStepper = __esm({
|
|
|
26753
27168
|
styles.button
|
|
26754
27169
|
),
|
|
26755
27170
|
"aria-label": "Decrease",
|
|
26756
|
-
children: /* @__PURE__ */ jsx(
|
|
27171
|
+
children: /* @__PURE__ */ jsx(Icon, { name: "minus", className: styles.icon })
|
|
26757
27172
|
}
|
|
26758
27173
|
),
|
|
26759
27174
|
/* @__PURE__ */ jsx(
|
|
@@ -26794,7 +27209,7 @@ var init_NumberStepper = __esm({
|
|
|
26794
27209
|
styles.button
|
|
26795
27210
|
),
|
|
26796
27211
|
"aria-label": "Increase",
|
|
26797
|
-
children: /* @__PURE__ */ jsx(
|
|
27212
|
+
children: /* @__PURE__ */ jsx(Icon, { name: "plus", className: styles.icon })
|
|
26798
27213
|
}
|
|
26799
27214
|
)
|
|
26800
27215
|
]
|
|
@@ -26819,6 +27234,7 @@ var init_StarRating = __esm({
|
|
|
26819
27234
|
"components/molecules/StarRating.tsx"() {
|
|
26820
27235
|
"use client";
|
|
26821
27236
|
init_cn();
|
|
27237
|
+
init_Icon();
|
|
26822
27238
|
init_useEventBus();
|
|
26823
27239
|
sizeStyles11 = {
|
|
26824
27240
|
sm: { star: "w-4 h-4", gap: "gap-0.5" },
|
|
@@ -26905,8 +27321,9 @@ var init_StarRating = __esm({
|
|
|
26905
27321
|
},
|
|
26906
27322
|
children: [
|
|
26907
27323
|
/* @__PURE__ */ jsx(
|
|
26908
|
-
|
|
27324
|
+
Icon,
|
|
26909
27325
|
{
|
|
27326
|
+
name: "star",
|
|
26910
27327
|
className: cn(
|
|
26911
27328
|
styles.star,
|
|
26912
27329
|
"text-muted",
|
|
@@ -26916,8 +27333,9 @@ var init_StarRating = __esm({
|
|
|
26916
27333
|
}
|
|
26917
27334
|
),
|
|
26918
27335
|
(isFull || isHalf) && /* @__PURE__ */ jsx(
|
|
26919
|
-
|
|
27336
|
+
Icon,
|
|
26920
27337
|
{
|
|
27338
|
+
name: "star",
|
|
26921
27339
|
className: cn(
|
|
26922
27340
|
styles.star,
|
|
26923
27341
|
"absolute inset-0",
|
|
@@ -27109,7 +27527,7 @@ var init_UploadDropZone = __esm({
|
|
|
27109
27527
|
"aria-hidden": "true"
|
|
27110
27528
|
}
|
|
27111
27529
|
),
|
|
27112
|
-
error ? /* @__PURE__ */ jsx(Icon, {
|
|
27530
|
+
error ? /* @__PURE__ */ jsx(Icon, { name: "file-warning", size: "lg", className: "text-error mb-2" }) : /* @__PURE__ */ jsx(Icon, { name: "upload", size: "lg", className: "text-muted-foreground mb-2" }),
|
|
27113
27531
|
/* @__PURE__ */ jsx(Typography, { variant: "body1", className: "text-center font-medium mb-1", children: isDragOver ? "Drop files here" : label }),
|
|
27114
27532
|
error ? /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "error", className: "text-center", children: error }) : /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "muted", className: "text-center", children: description ?? defaultDescription })
|
|
27115
27533
|
]
|
|
@@ -27133,6 +27551,7 @@ var Lightbox;
|
|
|
27133
27551
|
var init_Lightbox = __esm({
|
|
27134
27552
|
"components/molecules/Lightbox.tsx"() {
|
|
27135
27553
|
"use client";
|
|
27554
|
+
init_Icon();
|
|
27136
27555
|
init_cn();
|
|
27137
27556
|
init_useEventBus();
|
|
27138
27557
|
Lightbox = ({
|
|
@@ -27240,7 +27659,7 @@ var init_Lightbox = __esm({
|
|
|
27240
27659
|
"focus:outline-none focus:ring-2 focus:ring-white"
|
|
27241
27660
|
),
|
|
27242
27661
|
"aria-label": "Close",
|
|
27243
|
-
children: /* @__PURE__ */ jsx(
|
|
27662
|
+
children: /* @__PURE__ */ jsx(Icon, { name: "x", className: "w-6 h-6" })
|
|
27244
27663
|
}
|
|
27245
27664
|
),
|
|
27246
27665
|
hasPrev && safeImages.length > 1 && /* @__PURE__ */ jsx(
|
|
@@ -27259,7 +27678,7 @@ var init_Lightbox = __esm({
|
|
|
27259
27678
|
"focus:outline-none focus:ring-2 focus:ring-white"
|
|
27260
27679
|
),
|
|
27261
27680
|
"aria-label": "Previous image",
|
|
27262
|
-
children: /* @__PURE__ */ jsx(
|
|
27681
|
+
children: /* @__PURE__ */ jsx(Icon, { name: "chevron-left", className: "w-8 h-8" })
|
|
27263
27682
|
}
|
|
27264
27683
|
),
|
|
27265
27684
|
/* @__PURE__ */ jsx(
|
|
@@ -27296,7 +27715,7 @@ var init_Lightbox = __esm({
|
|
|
27296
27715
|
"focus:outline-none focus:ring-2 focus:ring-white"
|
|
27297
27716
|
),
|
|
27298
27717
|
"aria-label": "Next image",
|
|
27299
|
-
children: /* @__PURE__ */ jsx(
|
|
27718
|
+
children: /* @__PURE__ */ jsx(Icon, { name: "chevron-right", className: "w-8 h-8" })
|
|
27300
27719
|
}
|
|
27301
27720
|
),
|
|
27302
27721
|
/* @__PURE__ */ jsxs("div", { className: "absolute bottom-4 left-0 right-0 text-center", children: [
|
|
@@ -27580,7 +27999,7 @@ var init_Meter = __esm({
|
|
|
27580
27999
|
strokeDasharray: circumference,
|
|
27581
28000
|
strokeDashoffset: offset,
|
|
27582
28001
|
strokeLinecap: "round",
|
|
27583
|
-
className: "transition-all duration-
|
|
28002
|
+
className: "transition-all duration-slow ease-emphasized"
|
|
27584
28003
|
}
|
|
27585
28004
|
)
|
|
27586
28005
|
]
|
|
@@ -27623,7 +28042,7 @@ var init_Meter = __esm({
|
|
|
27623
28042
|
Box,
|
|
27624
28043
|
{
|
|
27625
28044
|
className: cn(
|
|
27626
|
-
"h-2 flex-1 rounded-sm transition-all duration-
|
|
28045
|
+
"h-2 flex-1 rounded-sm transition-all duration-normal",
|
|
27627
28046
|
!isActive && "bg-muted"
|
|
27628
28047
|
),
|
|
27629
28048
|
style: isActive ? { backgroundColor: segColor } : void 0
|
|
@@ -27642,7 +28061,7 @@ var init_Meter = __esm({
|
|
|
27642
28061
|
/* @__PURE__ */ jsx(Box, { className: "w-full h-3 bg-muted rounded-full overflow-hidden", children: /* @__PURE__ */ jsx(
|
|
27643
28062
|
Box,
|
|
27644
28063
|
{
|
|
27645
|
-
className: "h-full rounded-full transition-all duration-
|
|
28064
|
+
className: "h-full rounded-full transition-all duration-slow ease-emphasized",
|
|
27646
28065
|
style: {
|
|
27647
28066
|
width: `${percentage}%`,
|
|
27648
28067
|
backgroundColor: activeColor
|
|
@@ -28168,7 +28587,7 @@ var init_PullToRefresh = __esm({
|
|
|
28168
28587
|
className: cn(
|
|
28169
28588
|
"top-0 left-0 right-0 z-10",
|
|
28170
28589
|
"items-center justify-center",
|
|
28171
|
-
"transition-opacity duration-
|
|
28590
|
+
"transition-opacity duration-fast",
|
|
28172
28591
|
showIndicator ? "opacity-100" : "opacity-0"
|
|
28173
28592
|
),
|
|
28174
28593
|
style: {
|
|
@@ -28354,7 +28773,7 @@ var init_PricingCard = __esm({
|
|
|
28354
28773
|
"hover:-translate-y-1 transition-all",
|
|
28355
28774
|
highlighted && [
|
|
28356
28775
|
"border-[length:2px] border-primary",
|
|
28357
|
-
"shadow-
|
|
28776
|
+
"shadow-elevation-dialog",
|
|
28358
28777
|
"scale-[1.05]",
|
|
28359
28778
|
"ring-2 ring-primary"
|
|
28360
28779
|
],
|
|
@@ -28377,7 +28796,7 @@ var init_PricingCard = __esm({
|
|
|
28377
28796
|
/* @__PURE__ */ jsx(
|
|
28378
28797
|
Icon,
|
|
28379
28798
|
{
|
|
28380
|
-
|
|
28799
|
+
name: "check",
|
|
28381
28800
|
size: "sm",
|
|
28382
28801
|
className: "flex-shrink-0 text-success"
|
|
28383
28802
|
}
|
|
@@ -28595,7 +29014,7 @@ var init_StepFlow = __esm({
|
|
|
28595
29014
|
className
|
|
28596
29015
|
}) => {
|
|
28597
29016
|
if (orientation === "vertical") {
|
|
28598
|
-
return /* @__PURE__ */ jsx(VStack, { gap: "none", className: cn("w-full", className), children: steps.map((step, index) => /* @__PURE__ */ jsx(
|
|
29017
|
+
return /* @__PURE__ */ jsx(VStack, { gap: "none", className: cn("w-full", className), children: steps.map((step, index) => /* @__PURE__ */ jsx(React80__default.Fragment, { children: /* @__PURE__ */ jsxs(HStack, { gap: "md", align: "start", className: "w-full", children: [
|
|
28599
29018
|
/* @__PURE__ */ jsxs(VStack, { gap: "none", align: "center", children: [
|
|
28600
29019
|
/* @__PURE__ */ jsx(StepCircle, { step, index }),
|
|
28601
29020
|
showConnectors && index < steps.length - 1 && /* @__PURE__ */ jsx(Box, { className: "w-px h-8 bg-border" })
|
|
@@ -28606,7 +29025,7 @@ var init_StepFlow = __esm({
|
|
|
28606
29025
|
] })
|
|
28607
29026
|
] }) }, index)) });
|
|
28608
29027
|
}
|
|
28609
|
-
return /* @__PURE__ */ jsx(Box, { className: cn("w-full flex flex-col md:flex-row items-start gap-0", className), children: steps.map((step, index) => /* @__PURE__ */ jsxs(
|
|
29028
|
+
return /* @__PURE__ */ jsx(Box, { className: cn("w-full flex flex-col md:flex-row items-start gap-0", className), children: steps.map((step, index) => /* @__PURE__ */ jsxs(React80__default.Fragment, { children: [
|
|
28610
29029
|
/* @__PURE__ */ jsxs(VStack, { gap: "sm", align: "center", className: "flex-1 w-full md:w-auto", children: [
|
|
28611
29030
|
/* @__PURE__ */ jsx(StepCircle, { step, index }),
|
|
28612
29031
|
/* @__PURE__ */ jsx(Typography, { variant: "h4", className: "text-center", children: step.title }),
|
|
@@ -29420,6 +29839,7 @@ var init_VoteStack = __esm({
|
|
|
29420
29839
|
"components/molecules/VoteStack.tsx"() {
|
|
29421
29840
|
"use client";
|
|
29422
29841
|
init_cn();
|
|
29842
|
+
init_Icon();
|
|
29423
29843
|
init_useEventBus();
|
|
29424
29844
|
sizeStyles12 = {
|
|
29425
29845
|
sm: {
|
|
@@ -29501,7 +29921,7 @@ var init_VoteStack = __esm({
|
|
|
29501
29921
|
"focus:outline-none focus:ring-[length:var(--focus-ring-width)] focus:ring-ring focus:ring-inset",
|
|
29502
29922
|
styles.button
|
|
29503
29923
|
),
|
|
29504
|
-
children: /* @__PURE__ */ jsx(
|
|
29924
|
+
children: /* @__PURE__ */ jsx(Icon, { name: "chevron-up", className: styles.icon })
|
|
29505
29925
|
}
|
|
29506
29926
|
),
|
|
29507
29927
|
/* @__PURE__ */ jsx(
|
|
@@ -29538,7 +29958,7 @@ var init_VoteStack = __esm({
|
|
|
29538
29958
|
"focus:outline-none focus:ring-[length:var(--focus-ring-width)] focus:ring-ring focus:ring-inset",
|
|
29539
29959
|
styles.button
|
|
29540
29960
|
),
|
|
29541
|
-
children: /* @__PURE__ */ jsx(
|
|
29961
|
+
children: /* @__PURE__ */ jsx(Icon, { name: "chevron-down", className: styles.icon })
|
|
29542
29962
|
}
|
|
29543
29963
|
)
|
|
29544
29964
|
]
|
|
@@ -29580,7 +30000,7 @@ var init_LikertScale = __esm({
|
|
|
29580
30000
|
md: "text-base",
|
|
29581
30001
|
lg: "text-lg"
|
|
29582
30002
|
};
|
|
29583
|
-
LikertScale =
|
|
30003
|
+
LikertScale = React80__default.forwardRef(
|
|
29584
30004
|
({
|
|
29585
30005
|
question,
|
|
29586
30006
|
options = DEFAULT_LIKERT_OPTIONS,
|
|
@@ -29592,7 +30012,7 @@ var init_LikertScale = __esm({
|
|
|
29592
30012
|
variant = "radios",
|
|
29593
30013
|
className
|
|
29594
30014
|
}, ref) => {
|
|
29595
|
-
const groupId =
|
|
30015
|
+
const groupId = React80__default.useId();
|
|
29596
30016
|
const eventBus = useEventBus();
|
|
29597
30017
|
const handleSelect = useCallback(
|
|
29598
30018
|
(next) => {
|
|
@@ -29872,6 +30292,7 @@ var init_QrScanner = __esm({
|
|
|
29872
30292
|
"use client";
|
|
29873
30293
|
init_cn();
|
|
29874
30294
|
init_atoms();
|
|
30295
|
+
init_Icon();
|
|
29875
30296
|
init_useEventBus();
|
|
29876
30297
|
QrScanner = ({
|
|
29877
30298
|
onScan,
|
|
@@ -30022,7 +30443,7 @@ var init_QrScanner = __esm({
|
|
|
30022
30443
|
padding: "lg",
|
|
30023
30444
|
className: "inset-0 flex-col items-center justify-center gap-2 bg-black bg-opacity-80 text-center",
|
|
30024
30445
|
children: [
|
|
30025
|
-
/* @__PURE__ */ jsx(
|
|
30446
|
+
/* @__PURE__ */ jsx(Icon, { name: "camera", className: "h-8 w-8 text-white", "aria-hidden": "true" }),
|
|
30026
30447
|
/* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-white", children: "Camera unavailable" }),
|
|
30027
30448
|
/* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-white opacity-70", children: cameraError.message })
|
|
30028
30449
|
]
|
|
@@ -30054,7 +30475,7 @@ var init_QrScanner = __esm({
|
|
|
30054
30475
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
30055
30476
|
),
|
|
30056
30477
|
"aria-label": isPaused ? "Resume scanning" : "Pause scanning",
|
|
30057
|
-
children: isPaused ? /* @__PURE__ */ jsx(
|
|
30478
|
+
children: isPaused ? /* @__PURE__ */ jsx(Icon, { name: "play", className: "h-4 w-4" }) : /* @__PURE__ */ jsx(Icon, { name: "pause", className: "h-4 w-4" })
|
|
30058
30479
|
}
|
|
30059
30480
|
),
|
|
30060
30481
|
/* @__PURE__ */ jsx(
|
|
@@ -30067,7 +30488,7 @@ var init_QrScanner = __esm({
|
|
|
30067
30488
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
30068
30489
|
),
|
|
30069
30490
|
"aria-label": `Switch to ${currentFacing === "environment" ? "front" : "rear"} camera`,
|
|
30070
|
-
children: /* @__PURE__ */ jsx(
|
|
30491
|
+
children: /* @__PURE__ */ jsx(Icon, { name: "refresh-cw", className: "h-4 w-4" })
|
|
30071
30492
|
}
|
|
30072
30493
|
),
|
|
30073
30494
|
/* @__PURE__ */ jsx(
|
|
@@ -30283,11 +30704,11 @@ function getShapeClasses(shape) {
|
|
|
30283
30704
|
function getStatusIcon(status) {
|
|
30284
30705
|
switch (status) {
|
|
30285
30706
|
case "seated":
|
|
30286
|
-
return /* @__PURE__ */ jsx(
|
|
30707
|
+
return /* @__PURE__ */ jsx(Icon, { name: "users", className: "w-4 h-4" });
|
|
30287
30708
|
case "ordered":
|
|
30288
|
-
return /* @__PURE__ */ jsx(
|
|
30709
|
+
return /* @__PURE__ */ jsx(Icon, { name: "coffee", className: "w-4 h-4" });
|
|
30289
30710
|
case "awaiting-bill":
|
|
30290
|
-
return /* @__PURE__ */ jsx(
|
|
30711
|
+
return /* @__PURE__ */ jsx(Icon, { name: "alert-circle", className: "w-4 h-4" });
|
|
30291
30712
|
default:
|
|
30292
30713
|
return null;
|
|
30293
30714
|
}
|
|
@@ -30299,6 +30720,7 @@ var init_PositionedCanvas = __esm({
|
|
|
30299
30720
|
init_cn();
|
|
30300
30721
|
init_useEventBus();
|
|
30301
30722
|
init_atoms();
|
|
30723
|
+
init_Icon();
|
|
30302
30724
|
STATUS_CLASSES = {
|
|
30303
30725
|
empty: "bg-surface border-border text-foreground",
|
|
30304
30726
|
seated: "bg-surface border-success text-success",
|
|
@@ -30411,7 +30833,7 @@ var init_PositionedCanvas = __esm({
|
|
|
30411
30833
|
{
|
|
30412
30834
|
ref: containerRef,
|
|
30413
30835
|
"data-testid": "positioned-canvas",
|
|
30414
|
-
className: "relative bg-background border border-border rounded-
|
|
30836
|
+
className: "relative bg-background border border-border rounded-container overflow-hidden",
|
|
30415
30837
|
style: { width, height },
|
|
30416
30838
|
onClick: handleContainerClick,
|
|
30417
30839
|
children: items.map((item) => {
|
|
@@ -30603,7 +31025,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
30603
31025
|
"transition-opacity"
|
|
30604
31026
|
),
|
|
30605
31027
|
onClick: () => setOpen((v) => !v),
|
|
30606
|
-
children: /* @__PURE__ */ jsx(
|
|
31028
|
+
children: /* @__PURE__ */ jsx(Icon, { name: "more-horizontal", className: "w-3.5 h-3.5" })
|
|
30607
31029
|
}
|
|
30608
31030
|
),
|
|
30609
31031
|
open && /* @__PURE__ */ jsxs(
|
|
@@ -30612,7 +31034,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
30612
31034
|
role: "menu",
|
|
30613
31035
|
className: cn(
|
|
30614
31036
|
"absolute right-0 z-10 mt-1 w-44",
|
|
30615
|
-
"rounded-
|
|
31037
|
+
"rounded-container border border-border bg-popover shadow-elevation-popover",
|
|
30616
31038
|
"py-1 text-sm"
|
|
30617
31039
|
),
|
|
30618
31040
|
children: [
|
|
@@ -30629,7 +31051,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
30629
31051
|
setOpen(false);
|
|
30630
31052
|
},
|
|
30631
31053
|
children: [
|
|
30632
|
-
/* @__PURE__ */ jsx(
|
|
31054
|
+
/* @__PURE__ */ jsx(Icon, { name: "plus", className: "w-3.5 h-3.5" }),
|
|
30633
31055
|
" Duplicate"
|
|
30634
31056
|
]
|
|
30635
31057
|
}
|
|
@@ -30646,7 +31068,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
|
|
|
30646
31068
|
setOpen(false);
|
|
30647
31069
|
},
|
|
30648
31070
|
children: [
|
|
30649
|
-
/* @__PURE__ */ jsx(
|
|
31071
|
+
/* @__PURE__ */ jsx(Icon, { name: "trash", className: "w-3.5 h-3.5" }),
|
|
30650
31072
|
" Delete"
|
|
30651
31073
|
]
|
|
30652
31074
|
}
|
|
@@ -30875,7 +31297,7 @@ function BlockRow({
|
|
|
30875
31297
|
"text-sm text-muted-foreground"
|
|
30876
31298
|
),
|
|
30877
31299
|
children: [
|
|
30878
|
-
/* @__PURE__ */ jsx(
|
|
31300
|
+
/* @__PURE__ */ jsx(Icon, { name: "image", className: "mr-2 w-4 h-4" }),
|
|
30879
31301
|
" No image URL set"
|
|
30880
31302
|
]
|
|
30881
31303
|
}
|
|
@@ -30949,7 +31371,7 @@ function BlockRow({
|
|
|
30949
31371
|
"opacity-0 group-hover/item:opacity-100 hover:bg-muted hover:text-foreground"
|
|
30950
31372
|
),
|
|
30951
31373
|
onClick: () => removeListItem(child.id),
|
|
30952
|
-
children: /* @__PURE__ */ jsx(
|
|
31374
|
+
children: /* @__PURE__ */ jsx(Icon, { name: "trash", className: "w-3 h-3" })
|
|
30953
31375
|
}
|
|
30954
31376
|
)
|
|
30955
31377
|
] }, child.id)),
|
|
@@ -30964,7 +31386,7 @@ function BlockRow({
|
|
|
30964
31386
|
),
|
|
30965
31387
|
onClick: addListItem,
|
|
30966
31388
|
children: [
|
|
30967
|
-
/* @__PURE__ */ jsx(
|
|
31389
|
+
/* @__PURE__ */ jsx(Icon, { name: "plus", className: "w-3 h-3" }),
|
|
30968
31390
|
" Add item"
|
|
30969
31391
|
]
|
|
30970
31392
|
}
|
|
@@ -31013,7 +31435,7 @@ function BlockRow({
|
|
|
31013
31435
|
"transition-opacity"
|
|
31014
31436
|
),
|
|
31015
31437
|
onClick: () => onInsertAfter("paragraph"),
|
|
31016
|
-
children: /* @__PURE__ */ jsx(
|
|
31438
|
+
children: /* @__PURE__ */ jsx(Icon, { name: "plus", className: "w-3.5 h-3.5" })
|
|
31017
31439
|
}
|
|
31018
31440
|
),
|
|
31019
31441
|
/* @__PURE__ */ jsx(
|
|
@@ -31043,6 +31465,7 @@ var init_RichBlockEditor = __esm({
|
|
|
31043
31465
|
init_Box();
|
|
31044
31466
|
init_Divider();
|
|
31045
31467
|
init_Input();
|
|
31468
|
+
init_Icon();
|
|
31046
31469
|
init_useEventBus();
|
|
31047
31470
|
TOOLBAR_ENTRIES = [
|
|
31048
31471
|
{ type: "paragraph", label: "Text", icon: Type },
|
|
@@ -31286,7 +31709,7 @@ var init_ReplyTree = __esm({
|
|
|
31286
31709
|
onClick: handleToggle,
|
|
31287
31710
|
"aria-label": isCollapsed ? "Expand replies" : "Collapse replies",
|
|
31288
31711
|
"aria-expanded": !isCollapsed,
|
|
31289
|
-
leftIcon: isCollapsed ?
|
|
31712
|
+
leftIcon: isCollapsed ? "chevron-right" : "chevron-down",
|
|
31290
31713
|
className: cn(
|
|
31291
31714
|
"w-6 h-6 p-0 min-w-0",
|
|
31292
31715
|
"rounded-sm text-muted-foreground",
|
|
@@ -31333,7 +31756,7 @@ var init_ReplyTree = __esm({
|
|
|
31333
31756
|
{
|
|
31334
31757
|
variant: "ghost",
|
|
31335
31758
|
size: "sm",
|
|
31336
|
-
leftIcon:
|
|
31759
|
+
leftIcon: "message-square",
|
|
31337
31760
|
onClick: handleReply,
|
|
31338
31761
|
"aria-label": `Reply to ${node.authorName}`,
|
|
31339
31762
|
children: "Reply"
|
|
@@ -31344,7 +31767,7 @@ var init_ReplyTree = __esm({
|
|
|
31344
31767
|
{
|
|
31345
31768
|
variant: "ghost",
|
|
31346
31769
|
size: "sm",
|
|
31347
|
-
leftIcon:
|
|
31770
|
+
leftIcon: "flag",
|
|
31348
31771
|
onClick: handleFlag,
|
|
31349
31772
|
"aria-label": `Flag reply by ${node.authorName}`,
|
|
31350
31773
|
children: "Flag"
|
|
@@ -31357,7 +31780,7 @@ var init_ReplyTree = __esm({
|
|
|
31357
31780
|
variant: "ghost",
|
|
31358
31781
|
size: "sm",
|
|
31359
31782
|
onClick: handleContinue,
|
|
31360
|
-
rightIcon:
|
|
31783
|
+
rightIcon: "chevron-right",
|
|
31361
31784
|
className: cn(
|
|
31362
31785
|
"self-start gap-1 px-0 h-auto",
|
|
31363
31786
|
"text-sm text-primary hover:underline hover:bg-transparent"
|
|
@@ -31598,7 +32021,7 @@ var init_VersionDiff = __esm({
|
|
|
31598
32021
|
className: "px-4 py-2 border-b border-border bg-muted/30 flex-wrap",
|
|
31599
32022
|
children: [
|
|
31600
32023
|
/* @__PURE__ */ jsxs(HStack, { gap: "sm", align: "center", className: "flex-wrap", children: [
|
|
31601
|
-
/* @__PURE__ */ jsx(Icon, {
|
|
32024
|
+
/* @__PURE__ */ jsx(Icon, { name: "git-commit", size: "sm", className: "text-muted-foreground" }),
|
|
31602
32025
|
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "whitespace-nowrap", children: "Compare" }),
|
|
31603
32026
|
/* @__PURE__ */ jsx(Box, { className: "min-w-0 md:min-w-[160px]", children: /* @__PURE__ */ jsx(
|
|
31604
32027
|
Select,
|
|
@@ -31635,7 +32058,7 @@ var init_VersionDiff = __esm({
|
|
|
31635
32058
|
{
|
|
31636
32059
|
variant: "ghost",
|
|
31637
32060
|
size: "sm",
|
|
31638
|
-
icon: activeView === "side-by-side" ?
|
|
32061
|
+
icon: activeView === "side-by-side" ? "align-left" : "columns",
|
|
31639
32062
|
onClick: handleViewToggle,
|
|
31640
32063
|
"aria-label": activeView === "side-by-side" ? "Switch to inline view" : "Switch to side-by-side view"
|
|
31641
32064
|
}
|
|
@@ -31645,7 +32068,7 @@ var init_VersionDiff = __esm({
|
|
|
31645
32068
|
{
|
|
31646
32069
|
variant: "ghost",
|
|
31647
32070
|
size: "sm",
|
|
31648
|
-
icon:
|
|
32071
|
+
icon: "rotate-ccw",
|
|
31649
32072
|
onClick: handleRevert,
|
|
31650
32073
|
children: "Revert"
|
|
31651
32074
|
}
|
|
@@ -31822,7 +32245,7 @@ var init_DocBreadcrumb = __esm({
|
|
|
31822
32245
|
"aria-label": "Breadcrumb",
|
|
31823
32246
|
children: /* @__PURE__ */ jsx(HStack, { gap: "xs", align: "center", wrap: true, children: items.map((item, idx) => {
|
|
31824
32247
|
const isLast = idx === items.length - 1;
|
|
31825
|
-
return /* @__PURE__ */ jsxs(
|
|
32248
|
+
return /* @__PURE__ */ jsxs(React80__default.Fragment, { children: [
|
|
31826
32249
|
idx > 0 && /* @__PURE__ */ jsx(
|
|
31827
32250
|
Icon,
|
|
31828
32251
|
{
|
|
@@ -31888,7 +32311,7 @@ function DocCodeBlock({
|
|
|
31888
32311
|
Box,
|
|
31889
32312
|
{
|
|
31890
32313
|
className: cn(
|
|
31891
|
-
"rounded-
|
|
32314
|
+
"rounded-container border border-border overflow-hidden",
|
|
31892
32315
|
className
|
|
31893
32316
|
),
|
|
31894
32317
|
position: "relative",
|
|
@@ -32047,11 +32470,11 @@ var init_DocPagination = __esm({
|
|
|
32047
32470
|
init_Typography();
|
|
32048
32471
|
linkCardStyles = [
|
|
32049
32472
|
"border border-border",
|
|
32050
|
-
"rounded-
|
|
32473
|
+
"rounded-container",
|
|
32051
32474
|
"p-4",
|
|
32052
32475
|
"transition-all",
|
|
32053
32476
|
"hover:border-primary",
|
|
32054
|
-
"hover:shadow-
|
|
32477
|
+
"hover:shadow-elevation-dialog",
|
|
32055
32478
|
"no-underline",
|
|
32056
32479
|
"flex-1",
|
|
32057
32480
|
"min-w-0",
|
|
@@ -32188,7 +32611,7 @@ function DocSearch({
|
|
|
32188
32611
|
Box,
|
|
32189
32612
|
{
|
|
32190
32613
|
position: "absolute",
|
|
32191
|
-
className: "top-full left-0 right-0 mt-1 z-50 bg-card border border-border rounded-
|
|
32614
|
+
className: "top-full left-0 right-0 mt-1 z-50 bg-card border border-border rounded-container shadow-elevation-popover max-h-80 overflow-y-auto",
|
|
32192
32615
|
children: /* @__PURE__ */ jsx(VStack, { gap: "none", children: results.map((result, index) => /* @__PURE__ */ jsx(
|
|
32193
32616
|
Box,
|
|
32194
32617
|
{
|
|
@@ -32781,7 +33204,7 @@ var init_MiniStateMachine = __esm({
|
|
|
32781
33204
|
const x = 2 + i * (NODE_W + GAP + ARROW_W + GAP);
|
|
32782
33205
|
const tc = transitionCounts[s.name] ?? 0;
|
|
32783
33206
|
const role = getStateRole(s.name, s.isInitial, s.isTerminal, tc, maxTC);
|
|
32784
|
-
return /* @__PURE__ */ jsxs(
|
|
33207
|
+
return /* @__PURE__ */ jsxs(React80__default.Fragment, { children: [
|
|
32785
33208
|
/* @__PURE__ */ jsx(
|
|
32786
33209
|
AvlState,
|
|
32787
33210
|
{
|
|
@@ -34297,7 +34720,7 @@ var init_DocumentViewer = __esm({
|
|
|
34297
34720
|
}
|
|
34298
34721
|
});
|
|
34299
34722
|
function extractTitle(children) {
|
|
34300
|
-
if (!
|
|
34723
|
+
if (!React80__default.isValidElement(children)) return void 0;
|
|
34301
34724
|
const props = children.props;
|
|
34302
34725
|
if (typeof props.title === "string") {
|
|
34303
34726
|
return props.title;
|
|
@@ -34409,7 +34832,7 @@ function LinearView({
|
|
|
34409
34832
|
/* @__PURE__ */ jsx(HStack, { className: "flex-wrap items-center", gap: "xs", children: trait.states.map((state, i) => {
|
|
34410
34833
|
const isDone = i < currentIdx;
|
|
34411
34834
|
const isCurrent = i === currentIdx;
|
|
34412
|
-
return /* @__PURE__ */ jsxs(
|
|
34835
|
+
return /* @__PURE__ */ jsxs(React80__default.Fragment, { children: [
|
|
34413
34836
|
i > 0 && /* @__PURE__ */ jsx(
|
|
34414
34837
|
Typography,
|
|
34415
34838
|
{
|
|
@@ -35310,12 +35733,12 @@ var init_Form = __esm({
|
|
|
35310
35733
|
const isSchemaEntity = isOrbitalEntitySchema(entity);
|
|
35311
35734
|
const resolvedEntity = isSchemaEntity ? entity : void 0;
|
|
35312
35735
|
const entityName = typeof entity === "string" ? entity : resolvedEntity?.name;
|
|
35313
|
-
const normalizedInitialData =
|
|
35736
|
+
const normalizedInitialData = React80__default.useMemo(() => {
|
|
35314
35737
|
const entityRowAsInitial = isPlainEntityRow(entity) ? entity : void 0;
|
|
35315
35738
|
const callerInitial = initialData !== null && typeof initialData === "object" && !Array.isArray(initialData) ? initialData : {};
|
|
35316
35739
|
return entityRowAsInitial !== void 0 ? { ...entityRowAsInitial, ...callerInitial } : callerInitial;
|
|
35317
35740
|
}, [entity, initialData]);
|
|
35318
|
-
const entityDerivedFields =
|
|
35741
|
+
const entityDerivedFields = React80__default.useMemo(() => {
|
|
35319
35742
|
if (fields && fields.length > 0) return void 0;
|
|
35320
35743
|
if (!resolvedEntity) return void 0;
|
|
35321
35744
|
return resolvedEntity.fields.map(
|
|
@@ -35324,26 +35747,27 @@ var init_Form = __esm({
|
|
|
35324
35747
|
type: f3.type,
|
|
35325
35748
|
required: f3.required,
|
|
35326
35749
|
defaultValue: f3.default,
|
|
35327
|
-
values
|
|
35750
|
+
// EntityField is a discriminated union — `values` lives on Scalar/Enum, `relation` lives on Relation.
|
|
35751
|
+
values: "values" in f3 ? f3.values : void 0,
|
|
35328
35752
|
min: f3.min,
|
|
35329
35753
|
max: f3.max,
|
|
35330
|
-
relation:
|
|
35754
|
+
relation: "relation" in f3 ? { entity: f3.relation.entity } : void 0
|
|
35331
35755
|
})
|
|
35332
35756
|
);
|
|
35333
35757
|
}, [entity, fields]);
|
|
35334
35758
|
const conditionalFields = typeof conditionalFieldsRaw === "boolean" ? {} : conditionalFieldsRaw;
|
|
35335
35759
|
const hiddenCalculations = typeof hiddenCalculationsRaw === "boolean" ? [] : hiddenCalculationsRaw;
|
|
35336
35760
|
const violationTriggers = typeof violationTriggersRaw === "boolean" ? [] : violationTriggersRaw;
|
|
35337
|
-
const [formData, setFormData] =
|
|
35761
|
+
const [formData, setFormData] = React80__default.useState(
|
|
35338
35762
|
normalizedInitialData
|
|
35339
35763
|
);
|
|
35340
|
-
const [collapsedSections, setCollapsedSections] =
|
|
35764
|
+
const [collapsedSections, setCollapsedSections] = React80__default.useState(
|
|
35341
35765
|
/* @__PURE__ */ new Set()
|
|
35342
35766
|
);
|
|
35343
|
-
const [submitError, setSubmitError] =
|
|
35344
|
-
const formRef =
|
|
35767
|
+
const [submitError, setSubmitError] = React80__default.useState(null);
|
|
35768
|
+
const formRef = React80__default.useRef(null);
|
|
35345
35769
|
const formMode = props.mode;
|
|
35346
|
-
const mountedRef =
|
|
35770
|
+
const mountedRef = React80__default.useRef(false);
|
|
35347
35771
|
if (!mountedRef.current) {
|
|
35348
35772
|
mountedRef.current = true;
|
|
35349
35773
|
debug("forms", "mount", {
|
|
@@ -35356,7 +35780,7 @@ var init_Form = __esm({
|
|
|
35356
35780
|
});
|
|
35357
35781
|
}
|
|
35358
35782
|
const shouldShowCancel = showCancel ?? (fields && fields.length > 0);
|
|
35359
|
-
const evalContext =
|
|
35783
|
+
const evalContext = React80__default.useMemo(
|
|
35360
35784
|
() => ({
|
|
35361
35785
|
formValues: formData,
|
|
35362
35786
|
globalVariables: externalContext?.globalVariables ?? {},
|
|
@@ -35365,7 +35789,7 @@ var init_Form = __esm({
|
|
|
35365
35789
|
}),
|
|
35366
35790
|
[formData, externalContext]
|
|
35367
35791
|
);
|
|
35368
|
-
|
|
35792
|
+
React80__default.useEffect(() => {
|
|
35369
35793
|
debug("forms", "initialData-sync", {
|
|
35370
35794
|
mode: formMode,
|
|
35371
35795
|
normalizedInitialData,
|
|
@@ -35376,7 +35800,7 @@ var init_Form = __esm({
|
|
|
35376
35800
|
setFormData(normalizedInitialData);
|
|
35377
35801
|
}
|
|
35378
35802
|
}, [normalizedInitialData]);
|
|
35379
|
-
const processCalculations =
|
|
35803
|
+
const processCalculations = React80__default.useCallback(
|
|
35380
35804
|
(changedFieldId, newFormData) => {
|
|
35381
35805
|
if (!hiddenCalculations.length) return;
|
|
35382
35806
|
const context = {
|
|
@@ -35401,7 +35825,7 @@ var init_Form = __esm({
|
|
|
35401
35825
|
},
|
|
35402
35826
|
[hiddenCalculations, externalContext, eventBus]
|
|
35403
35827
|
);
|
|
35404
|
-
const checkViolations =
|
|
35828
|
+
const checkViolations = React80__default.useCallback(
|
|
35405
35829
|
(changedFieldId, newFormData) => {
|
|
35406
35830
|
if (!violationTriggers.length) return;
|
|
35407
35831
|
const context = {
|
|
@@ -35439,7 +35863,7 @@ var init_Form = __esm({
|
|
|
35439
35863
|
processCalculations(name, newFormData);
|
|
35440
35864
|
checkViolations(name, newFormData);
|
|
35441
35865
|
};
|
|
35442
|
-
const isFieldVisible =
|
|
35866
|
+
const isFieldVisible = React80__default.useCallback(
|
|
35443
35867
|
(fieldName) => {
|
|
35444
35868
|
const condition = conditionalFields[fieldName];
|
|
35445
35869
|
if (!condition) return true;
|
|
@@ -35447,7 +35871,7 @@ var init_Form = __esm({
|
|
|
35447
35871
|
},
|
|
35448
35872
|
[conditionalFields, evalContext]
|
|
35449
35873
|
);
|
|
35450
|
-
const isSectionVisible =
|
|
35874
|
+
const isSectionVisible = React80__default.useCallback(
|
|
35451
35875
|
(section) => {
|
|
35452
35876
|
if (!section.condition) return true;
|
|
35453
35877
|
return Boolean(evaluateFormExpression(section.condition, evalContext));
|
|
@@ -35523,7 +35947,7 @@ var init_Form = __esm({
|
|
|
35523
35947
|
eventBus.emit(`UI:${onCancel}`);
|
|
35524
35948
|
}
|
|
35525
35949
|
};
|
|
35526
|
-
const renderField =
|
|
35950
|
+
const renderField = React80__default.useCallback(
|
|
35527
35951
|
(field) => {
|
|
35528
35952
|
const fieldName = field.name || field.field;
|
|
35529
35953
|
if (!fieldName) return null;
|
|
@@ -35544,7 +35968,7 @@ var init_Form = __esm({
|
|
|
35544
35968
|
[formData, isFieldVisible, relationsData, relationsLoading, isLoading]
|
|
35545
35969
|
);
|
|
35546
35970
|
const effectiveFields = entityDerivedFields ?? fields;
|
|
35547
|
-
const normalizedFields =
|
|
35971
|
+
const normalizedFields = React80__default.useMemo(() => {
|
|
35548
35972
|
if (!effectiveFields || effectiveFields.length === 0) return [];
|
|
35549
35973
|
return effectiveFields.map((field) => {
|
|
35550
35974
|
if (typeof field === "string") {
|
|
@@ -35555,10 +35979,11 @@ var init_Form = __esm({
|
|
|
35555
35979
|
type: entityField.type,
|
|
35556
35980
|
required: entityField.required,
|
|
35557
35981
|
defaultValue: entityField.default,
|
|
35558
|
-
values
|
|
35982
|
+
// EntityField is a discriminated union — `values` lives on Scalar/Enum, `relation` lives on Relation.
|
|
35983
|
+
values: "values" in entityField ? entityField.values : void 0,
|
|
35559
35984
|
min: entityField.min,
|
|
35560
35985
|
max: entityField.max,
|
|
35561
|
-
relation:
|
|
35986
|
+
relation: "relation" in entityField ? { entity: entityField.relation.entity } : void 0
|
|
35562
35987
|
};
|
|
35563
35988
|
}
|
|
35564
35989
|
return { name: field, type: "string" };
|
|
@@ -35566,7 +35991,7 @@ var init_Form = __esm({
|
|
|
35566
35991
|
return field;
|
|
35567
35992
|
});
|
|
35568
35993
|
}, [effectiveFields, resolvedEntity]);
|
|
35569
|
-
const schemaFields =
|
|
35994
|
+
const schemaFields = React80__default.useMemo(() => {
|
|
35570
35995
|
if (normalizedFields.length === 0) return null;
|
|
35571
35996
|
if (isDebugEnabled()) {
|
|
35572
35997
|
debugGroup(`Form: ${entityName || "unknown"}`);
|
|
@@ -35576,7 +36001,7 @@ var init_Form = __esm({
|
|
|
35576
36001
|
}
|
|
35577
36002
|
return normalizedFields.map(renderField).filter(Boolean);
|
|
35578
36003
|
}, [normalizedFields, renderField, entityName, conditionalFields]);
|
|
35579
|
-
const sectionElements =
|
|
36004
|
+
const sectionElements = React80__default.useMemo(() => {
|
|
35580
36005
|
if (!sections || sections.length === 0) return null;
|
|
35581
36006
|
return sections.map((section) => {
|
|
35582
36007
|
if (!isSectionVisible(section)) {
|
|
@@ -36281,7 +36706,7 @@ var init_GameTemplate = __esm({
|
|
|
36281
36706
|
{
|
|
36282
36707
|
variant: "secondary",
|
|
36283
36708
|
size: "sm",
|
|
36284
|
-
icon:
|
|
36709
|
+
icon: "pause",
|
|
36285
36710
|
onClick: controls.onPause,
|
|
36286
36711
|
children: "Pause"
|
|
36287
36712
|
}
|
|
@@ -36290,7 +36715,7 @@ var init_GameTemplate = __esm({
|
|
|
36290
36715
|
{
|
|
36291
36716
|
variant: "primary",
|
|
36292
36717
|
size: "sm",
|
|
36293
|
-
icon:
|
|
36718
|
+
icon: "play",
|
|
36294
36719
|
onClick: controls.onPlay,
|
|
36295
36720
|
children: "Play"
|
|
36296
36721
|
}
|
|
@@ -36300,7 +36725,7 @@ var init_GameTemplate = __esm({
|
|
|
36300
36725
|
{
|
|
36301
36726
|
variant: "ghost",
|
|
36302
36727
|
size: "sm",
|
|
36303
|
-
icon:
|
|
36728
|
+
icon: "rotate-ccw",
|
|
36304
36729
|
onClick: controls.onReset,
|
|
36305
36730
|
children: "Reset"
|
|
36306
36731
|
}
|
|
@@ -37302,7 +37727,7 @@ var init_List = __esm({
|
|
|
37302
37727
|
if (entity && typeof entity === "object" && "id" in entity) return [entity];
|
|
37303
37728
|
return [];
|
|
37304
37729
|
}, [entity]);
|
|
37305
|
-
const getItemActions =
|
|
37730
|
+
const getItemActions = React80__default.useCallback(
|
|
37306
37731
|
(item) => {
|
|
37307
37732
|
if (!itemActions) return [];
|
|
37308
37733
|
if (typeof itemActions === "function") {
|
|
@@ -37775,7 +38200,7 @@ var init_MediaGallery = __esm({
|
|
|
37775
38200
|
[selectable, selectedItems, selectionEvent, eventBus]
|
|
37776
38201
|
);
|
|
37777
38202
|
const entityData = Array.isArray(entity) ? entity : [];
|
|
37778
|
-
const items =
|
|
38203
|
+
const items = React80__default.useMemo(() => {
|
|
37779
38204
|
if (propItems) return propItems;
|
|
37780
38205
|
if (entityData.length === 0) return [];
|
|
37781
38206
|
return entityData.map((record, idx) => ({
|
|
@@ -37948,9 +38373,9 @@ function MiniMap({
|
|
|
37948
38373
|
viewportRect,
|
|
37949
38374
|
className
|
|
37950
38375
|
}) {
|
|
37951
|
-
const canvasRef =
|
|
37952
|
-
const frameRef =
|
|
37953
|
-
|
|
38376
|
+
const canvasRef = React80.useRef(null);
|
|
38377
|
+
const frameRef = React80.useRef(0);
|
|
38378
|
+
React80.useEffect(() => {
|
|
37954
38379
|
const canvas = canvasRef.current;
|
|
37955
38380
|
if (!canvas) return;
|
|
37956
38381
|
const ctx = canvas.getContext("2d");
|
|
@@ -38032,7 +38457,7 @@ var init_MiniMap = __esm({
|
|
|
38032
38457
|
}
|
|
38033
38458
|
});
|
|
38034
38459
|
function extractTitle2(children) {
|
|
38035
|
-
if (!
|
|
38460
|
+
if (!React80__default.isValidElement(children)) return void 0;
|
|
38036
38461
|
const props = children.props;
|
|
38037
38462
|
if (typeof props.title === "string") {
|
|
38038
38463
|
return props.title;
|
|
@@ -38745,7 +39170,7 @@ var init_PageHeader = __esm({
|
|
|
38745
39170
|
info: "bg-info/10 text-info"
|
|
38746
39171
|
};
|
|
38747
39172
|
return /* @__PURE__ */ jsxs(Box, { className: cn("mb-6", className), children: [
|
|
38748
|
-
breadcrumbs && breadcrumbs.length > 0 && /* @__PURE__ */ jsx(Box, { as: "nav", className: "mb-4", children: /* @__PURE__ */ jsx(Box, { as: "ol", className: "flex items-center gap-2 text-sm", children: breadcrumbs.map((crumb, idx) => /* @__PURE__ */ jsxs(
|
|
39173
|
+
breadcrumbs && breadcrumbs.length > 0 && /* @__PURE__ */ jsx(Box, { as: "nav", className: "mb-4", children: /* @__PURE__ */ jsx(Box, { as: "ol", className: "flex items-center gap-2 text-sm", children: breadcrumbs.map((crumb, idx) => /* @__PURE__ */ jsxs(React80__default.Fragment, { children: [
|
|
38749
39174
|
idx > 0 && /* @__PURE__ */ jsx(Typography, { variant: "small", color: "muted", children: "/" }),
|
|
38750
39175
|
crumb.href ? /* @__PURE__ */ jsx(
|
|
38751
39176
|
"a",
|
|
@@ -39005,14 +39430,14 @@ function getAllTraits() {
|
|
|
39005
39430
|
return Array.from(traits.values());
|
|
39006
39431
|
}
|
|
39007
39432
|
function subscribeToTraitChanges(listener) {
|
|
39008
|
-
|
|
39009
|
-
return () =>
|
|
39433
|
+
listeners2.add(listener);
|
|
39434
|
+
return () => listeners2.delete(listener);
|
|
39010
39435
|
}
|
|
39011
|
-
var traits,
|
|
39436
|
+
var traits, listeners2;
|
|
39012
39437
|
var init_traitRegistry = __esm({
|
|
39013
39438
|
"lib/traitRegistry.ts"() {
|
|
39014
39439
|
traits = /* @__PURE__ */ new Map();
|
|
39015
|
-
|
|
39440
|
+
listeners2 = /* @__PURE__ */ new Set();
|
|
39016
39441
|
}
|
|
39017
39442
|
});
|
|
39018
39443
|
|
|
@@ -39021,14 +39446,14 @@ function getAllTicks() {
|
|
|
39021
39446
|
return Array.from(ticks.values());
|
|
39022
39447
|
}
|
|
39023
39448
|
function subscribeToTickChanges(listener) {
|
|
39024
|
-
|
|
39025
|
-
return () =>
|
|
39449
|
+
listeners3.add(listener);
|
|
39450
|
+
return () => listeners3.delete(listener);
|
|
39026
39451
|
}
|
|
39027
|
-
var ticks,
|
|
39452
|
+
var ticks, listeners3;
|
|
39028
39453
|
var init_tickRegistry = __esm({
|
|
39029
39454
|
"lib/tickRegistry.ts"() {
|
|
39030
39455
|
ticks = /* @__PURE__ */ new Map();
|
|
39031
|
-
|
|
39456
|
+
listeners3 = /* @__PURE__ */ new Set();
|
|
39032
39457
|
}
|
|
39033
39458
|
});
|
|
39034
39459
|
|
|
@@ -39037,14 +39462,14 @@ function getGuardHistory() {
|
|
|
39037
39462
|
return [...guardHistory];
|
|
39038
39463
|
}
|
|
39039
39464
|
function subscribeToGuardChanges(listener) {
|
|
39040
|
-
|
|
39041
|
-
return () =>
|
|
39465
|
+
listeners4.add(listener);
|
|
39466
|
+
return () => listeners4.delete(listener);
|
|
39042
39467
|
}
|
|
39043
|
-
var guardHistory,
|
|
39468
|
+
var guardHistory, listeners4;
|
|
39044
39469
|
var init_guardRegistry = __esm({
|
|
39045
39470
|
"lib/guardRegistry.ts"() {
|
|
39046
39471
|
guardHistory = [];
|
|
39047
|
-
|
|
39472
|
+
listeners4 = /* @__PURE__ */ new Set();
|
|
39048
39473
|
}
|
|
39049
39474
|
});
|
|
39050
39475
|
|
|
@@ -39075,18 +39500,18 @@ function getDebugEvents() {
|
|
|
39075
39500
|
return [...events];
|
|
39076
39501
|
}
|
|
39077
39502
|
function subscribeToDebugEvents(listener) {
|
|
39078
|
-
|
|
39079
|
-
return () =>
|
|
39503
|
+
listeners5.add(listener);
|
|
39504
|
+
return () => listeners5.delete(listener);
|
|
39080
39505
|
}
|
|
39081
|
-
var events,
|
|
39506
|
+
var events, listeners5;
|
|
39082
39507
|
var init_debugRegistry = __esm({
|
|
39083
39508
|
"lib/debugRegistry.ts"() {
|
|
39084
39509
|
events = [];
|
|
39085
|
-
|
|
39510
|
+
listeners5 = /* @__PURE__ */ new Set();
|
|
39086
39511
|
}
|
|
39087
39512
|
});
|
|
39088
39513
|
function useDebugData() {
|
|
39089
|
-
const [data, setData] =
|
|
39514
|
+
const [data, setData] = React80.useState(() => ({
|
|
39090
39515
|
traits: [],
|
|
39091
39516
|
ticks: [],
|
|
39092
39517
|
guards: [],
|
|
@@ -39100,7 +39525,7 @@ function useDebugData() {
|
|
|
39100
39525
|
},
|
|
39101
39526
|
lastUpdate: Date.now()
|
|
39102
39527
|
}));
|
|
39103
|
-
|
|
39528
|
+
React80.useEffect(() => {
|
|
39104
39529
|
const updateData = () => {
|
|
39105
39530
|
setData({
|
|
39106
39531
|
traits: getAllTraits(),
|
|
@@ -39159,14 +39584,14 @@ function isDebugEnabled2() {
|
|
|
39159
39584
|
return localStorage.getItem(DEBUG_STORAGE_KEY) === "true";
|
|
39160
39585
|
}
|
|
39161
39586
|
function onDebugToggle(listener) {
|
|
39162
|
-
|
|
39163
|
-
return () =>
|
|
39587
|
+
listeners6.add(listener);
|
|
39588
|
+
return () => listeners6.delete(listener);
|
|
39164
39589
|
}
|
|
39165
|
-
var DEBUG_STORAGE_KEY,
|
|
39590
|
+
var DEBUG_STORAGE_KEY, listeners6;
|
|
39166
39591
|
var init_debugUtils = __esm({
|
|
39167
39592
|
"lib/debugUtils.ts"() {
|
|
39168
39593
|
DEBUG_STORAGE_KEY = "orbital-debug";
|
|
39169
|
-
|
|
39594
|
+
listeners6 = /* @__PURE__ */ new Set();
|
|
39170
39595
|
}
|
|
39171
39596
|
});
|
|
39172
39597
|
function layoutGraph(states, transitions, initialState, width, height) {
|
|
@@ -39209,12 +39634,12 @@ function layoutGraph(states, transitions, initialState, width, height) {
|
|
|
39209
39634
|
return positions;
|
|
39210
39635
|
}
|
|
39211
39636
|
function WalkMinimap() {
|
|
39212
|
-
const [walkStep, setWalkStep] =
|
|
39213
|
-
const [traits2, setTraits] =
|
|
39214
|
-
const [coveredEdges, setCoveredEdges] =
|
|
39215
|
-
const [completedTraits, setCompletedTraits] =
|
|
39216
|
-
const prevTraitRef =
|
|
39217
|
-
|
|
39637
|
+
const [walkStep, setWalkStep] = React80.useState(null);
|
|
39638
|
+
const [traits2, setTraits] = React80.useState([]);
|
|
39639
|
+
const [coveredEdges, setCoveredEdges] = React80.useState([]);
|
|
39640
|
+
const [completedTraits, setCompletedTraits] = React80.useState(/* @__PURE__ */ new Set());
|
|
39641
|
+
const prevTraitRef = React80.useRef(null);
|
|
39642
|
+
React80.useEffect(() => {
|
|
39218
39643
|
const interval = setInterval(() => {
|
|
39219
39644
|
const w = window;
|
|
39220
39645
|
const step = w.__orbitalWalkStep;
|
|
@@ -39661,15 +40086,15 @@ var init_EntitiesTab = __esm({
|
|
|
39661
40086
|
}
|
|
39662
40087
|
});
|
|
39663
40088
|
function EventFlowTab({ events: events2 }) {
|
|
39664
|
-
const [filter, setFilter] =
|
|
39665
|
-
const containerRef =
|
|
39666
|
-
const [autoScroll, setAutoScroll] =
|
|
39667
|
-
|
|
40089
|
+
const [filter, setFilter] = React80.useState("all");
|
|
40090
|
+
const containerRef = React80.useRef(null);
|
|
40091
|
+
const [autoScroll, setAutoScroll] = React80.useState(true);
|
|
40092
|
+
React80.useEffect(() => {
|
|
39668
40093
|
if (autoScroll && containerRef.current) {
|
|
39669
40094
|
containerRef.current.scrollTop = containerRef.current.scrollHeight;
|
|
39670
40095
|
}
|
|
39671
40096
|
}, [events2.length, autoScroll]);
|
|
39672
|
-
const filteredEvents =
|
|
40097
|
+
const filteredEvents = React80.useMemo(() => {
|
|
39673
40098
|
if (filter === "all") return events2;
|
|
39674
40099
|
return events2.filter((e) => e.type === filter);
|
|
39675
40100
|
}, [events2, filter]);
|
|
@@ -39788,7 +40213,7 @@ var init_EventFlowTab = __esm({
|
|
|
39788
40213
|
}
|
|
39789
40214
|
});
|
|
39790
40215
|
function GuardsPanel({ guards }) {
|
|
39791
|
-
const [filter, setFilter] =
|
|
40216
|
+
const [filter, setFilter] = React80.useState("all");
|
|
39792
40217
|
if (guards.length === 0) {
|
|
39793
40218
|
return /* @__PURE__ */ jsx(
|
|
39794
40219
|
EmptyState,
|
|
@@ -39801,7 +40226,7 @@ function GuardsPanel({ guards }) {
|
|
|
39801
40226
|
}
|
|
39802
40227
|
const passedCount = guards.filter((g) => g.result).length;
|
|
39803
40228
|
const failedCount = guards.length - passedCount;
|
|
39804
|
-
const filteredGuards =
|
|
40229
|
+
const filteredGuards = React80.useMemo(() => {
|
|
39805
40230
|
if (filter === "all") return guards;
|
|
39806
40231
|
if (filter === "passed") return guards.filter((g) => g.result);
|
|
39807
40232
|
return guards.filter((g) => !g.result);
|
|
@@ -39962,10 +40387,10 @@ function EffectBadge({ effect }) {
|
|
|
39962
40387
|
] });
|
|
39963
40388
|
}
|
|
39964
40389
|
function TransitionTimeline({ transitions }) {
|
|
39965
|
-
const containerRef =
|
|
39966
|
-
const [autoScroll, setAutoScroll] =
|
|
39967
|
-
const [expandedId, setExpandedId] =
|
|
39968
|
-
|
|
40390
|
+
const containerRef = React80.useRef(null);
|
|
40391
|
+
const [autoScroll, setAutoScroll] = React80.useState(true);
|
|
40392
|
+
const [expandedId, setExpandedId] = React80.useState(null);
|
|
40393
|
+
React80.useEffect(() => {
|
|
39969
40394
|
if (autoScroll && containerRef.current) {
|
|
39970
40395
|
containerRef.current.scrollTop = containerRef.current.scrollHeight;
|
|
39971
40396
|
}
|
|
@@ -40251,9 +40676,9 @@ function getAllEvents(traits2) {
|
|
|
40251
40676
|
}
|
|
40252
40677
|
function EventDispatcherTab({ traits: traits2, schema }) {
|
|
40253
40678
|
const eventBus = useEventBus();
|
|
40254
|
-
const [log18, setLog] =
|
|
40255
|
-
const prevStatesRef =
|
|
40256
|
-
|
|
40679
|
+
const [log18, setLog] = React80.useState([]);
|
|
40680
|
+
const prevStatesRef = React80.useRef(/* @__PURE__ */ new Map());
|
|
40681
|
+
React80.useEffect(() => {
|
|
40257
40682
|
for (const trait of traits2) {
|
|
40258
40683
|
const prev = prevStatesRef.current.get(trait.id);
|
|
40259
40684
|
if (prev && prev !== trait.currentState) {
|
|
@@ -40423,10 +40848,10 @@ function VerifyModePanel({
|
|
|
40423
40848
|
serverCount,
|
|
40424
40849
|
localCount
|
|
40425
40850
|
}) {
|
|
40426
|
-
const [expanded, setExpanded] =
|
|
40427
|
-
const scrollRef =
|
|
40428
|
-
const prevCountRef =
|
|
40429
|
-
|
|
40851
|
+
const [expanded, setExpanded] = React80.useState(true);
|
|
40852
|
+
const scrollRef = React80.useRef(null);
|
|
40853
|
+
const prevCountRef = React80.useRef(0);
|
|
40854
|
+
React80.useEffect(() => {
|
|
40430
40855
|
if (expanded && transitions.length > prevCountRef.current && scrollRef.current) {
|
|
40431
40856
|
scrollRef.current.scrollTop = scrollRef.current.scrollHeight;
|
|
40432
40857
|
}
|
|
@@ -40492,10 +40917,10 @@ function RuntimeDebugger({
|
|
|
40492
40917
|
defaultTab,
|
|
40493
40918
|
schema
|
|
40494
40919
|
}) {
|
|
40495
|
-
const [isCollapsed, setIsCollapsed] =
|
|
40496
|
-
const [isVisible, setIsVisible] =
|
|
40920
|
+
const [isCollapsed, setIsCollapsed] = React80.useState(mode === "verify" ? true : defaultCollapsed);
|
|
40921
|
+
const [isVisible, setIsVisible] = React80.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
|
|
40497
40922
|
const debugData = useDebugData();
|
|
40498
|
-
|
|
40923
|
+
React80.useEffect(() => {
|
|
40499
40924
|
if (mode === "inline") return;
|
|
40500
40925
|
return onDebugToggle((enabled) => {
|
|
40501
40926
|
setIsVisible(enabled);
|
|
@@ -40504,7 +40929,7 @@ function RuntimeDebugger({
|
|
|
40504
40929
|
}
|
|
40505
40930
|
});
|
|
40506
40931
|
}, [mode]);
|
|
40507
|
-
|
|
40932
|
+
React80.useEffect(() => {
|
|
40508
40933
|
if (mode === "inline") return;
|
|
40509
40934
|
const handleKeyDown = (e) => {
|
|
40510
40935
|
if (e.key === "`" && isVisible) {
|
|
@@ -41053,7 +41478,7 @@ function SequenceBar({
|
|
|
41053
41478
|
onSlotRemove(index);
|
|
41054
41479
|
}, [onSlotRemove, playing]);
|
|
41055
41480
|
const paddedSlots = Array.from({ length: maxSlots }, (_, i) => slots[i]);
|
|
41056
|
-
return /* @__PURE__ */ jsx(HStack, { className: cn("items-center", className), gap: "sm", children: paddedSlots.map((slot, i) => /* @__PURE__ */ jsxs(
|
|
41481
|
+
return /* @__PURE__ */ jsx(HStack, { className: cn("items-center", className), gap: "sm", children: paddedSlots.map((slot, i) => /* @__PURE__ */ jsxs(React80__default.Fragment, { children: [
|
|
41057
41482
|
i > 0 && /* @__PURE__ */ jsx(
|
|
41058
41483
|
Typography,
|
|
41059
41484
|
{
|
|
@@ -42566,7 +42991,7 @@ var init_StatCard = __esm({
|
|
|
42566
42991
|
const labelToUse = propLabel ?? propTitle;
|
|
42567
42992
|
const eventBus = useEventBus();
|
|
42568
42993
|
const { t } = useTranslate();
|
|
42569
|
-
const handleActionClick =
|
|
42994
|
+
const handleActionClick = React80__default.useCallback(() => {
|
|
42570
42995
|
if (action?.event) {
|
|
42571
42996
|
eventBus.emit(`UI:${action.event}`, {});
|
|
42572
42997
|
}
|
|
@@ -42577,7 +43002,7 @@ var init_StatCard = __esm({
|
|
|
42577
43002
|
const data = Array.isArray(entity) ? entity : entity ? [entity] : [];
|
|
42578
43003
|
const isLoading = externalLoading ?? false;
|
|
42579
43004
|
const error = externalError;
|
|
42580
|
-
const computeMetricValue =
|
|
43005
|
+
const computeMetricValue = React80__default.useCallback(
|
|
42581
43006
|
(metric, items) => {
|
|
42582
43007
|
if (metric.value !== void 0) {
|
|
42583
43008
|
return metric.value;
|
|
@@ -42616,7 +43041,7 @@ var init_StatCard = __esm({
|
|
|
42616
43041
|
},
|
|
42617
43042
|
[]
|
|
42618
43043
|
);
|
|
42619
|
-
const schemaStats =
|
|
43044
|
+
const schemaStats = React80__default.useMemo(() => {
|
|
42620
43045
|
if (!metrics || metrics.length === 0) return null;
|
|
42621
43046
|
return metrics.map((metric) => ({
|
|
42622
43047
|
label: metric.label,
|
|
@@ -42624,7 +43049,7 @@ var init_StatCard = __esm({
|
|
|
42624
43049
|
format: metric.format
|
|
42625
43050
|
}));
|
|
42626
43051
|
}, [metrics, data, computeMetricValue]);
|
|
42627
|
-
const calculatedTrend =
|
|
43052
|
+
const calculatedTrend = React80__default.useMemo(() => {
|
|
42628
43053
|
if (manualTrend !== void 0) return manualTrend;
|
|
42629
43054
|
if (previousValue === void 0 || currentValue === void 0)
|
|
42630
43055
|
return void 0;
|
|
@@ -43806,7 +44231,7 @@ var init_Timeline = __esm({
|
|
|
43806
44231
|
}) => {
|
|
43807
44232
|
const { t } = useTranslate();
|
|
43808
44233
|
const entityData = Array.isArray(entity) ? entity : [];
|
|
43809
|
-
const items =
|
|
44234
|
+
const items = React80__default.useMemo(() => {
|
|
43810
44235
|
if (propItems) return propItems;
|
|
43811
44236
|
if (entityData.length === 0) return [];
|
|
43812
44237
|
return entityData.map((record, idx) => {
|
|
@@ -43963,7 +44388,7 @@ var init_TimerDisplay = __esm({
|
|
|
43963
44388
|
}
|
|
43964
44389
|
});
|
|
43965
44390
|
function extractToastProps(children) {
|
|
43966
|
-
if (!
|
|
44391
|
+
if (!React80__default.isValidElement(children)) {
|
|
43967
44392
|
if (typeof children === "string") {
|
|
43968
44393
|
return { message: children };
|
|
43969
44394
|
}
|
|
@@ -44001,7 +44426,7 @@ var init_ToastSlot = __esm({
|
|
|
44001
44426
|
eventBus.emit("UI:CLOSE");
|
|
44002
44427
|
};
|
|
44003
44428
|
if (!isVisible) return null;
|
|
44004
|
-
const isCustomContent =
|
|
44429
|
+
const isCustomContent = React80__default.isValidElement(children) && !message;
|
|
44005
44430
|
return /* @__PURE__ */ jsx(Box, { className: "fixed bottom-4 right-4 z-50", children: isCustomContent ? children : /* @__PURE__ */ jsx(
|
|
44006
44431
|
Toast,
|
|
44007
44432
|
{
|
|
@@ -44270,7 +44695,7 @@ var init_WizardContainer = __esm({
|
|
|
44270
44695
|
const isCompleted = index < currentStep;
|
|
44271
44696
|
const stepKey = step.id ?? step.tabId ?? `step-${index}`;
|
|
44272
44697
|
const stepTitle = step.title ?? step.name ?? `Step ${index + 1}`;
|
|
44273
|
-
return /* @__PURE__ */ jsxs(
|
|
44698
|
+
return /* @__PURE__ */ jsxs(React80__default.Fragment, { children: [
|
|
44274
44699
|
/* @__PURE__ */ jsx(
|
|
44275
44700
|
Button,
|
|
44276
44701
|
{
|
|
@@ -44720,12 +45145,12 @@ var init_XPBar = __esm({
|
|
|
44720
45145
|
}
|
|
44721
45146
|
});
|
|
44722
45147
|
function lazyThree(name, loader) {
|
|
44723
|
-
const Lazy =
|
|
45148
|
+
const Lazy = React80__default.lazy(() => loader().then((m) => ({ default: m[name] })));
|
|
44724
45149
|
function ThreeWrapper(props) {
|
|
44725
|
-
return
|
|
44726
|
-
|
|
45150
|
+
return React80__default.createElement(
|
|
45151
|
+
React80__default.Suspense,
|
|
44727
45152
|
{ fallback: null },
|
|
44728
|
-
|
|
45153
|
+
React80__default.createElement(Lazy, props)
|
|
44729
45154
|
);
|
|
44730
45155
|
}
|
|
44731
45156
|
ThreeWrapper.displayName = `Lazy(${name})`;
|
|
@@ -45341,7 +45766,7 @@ function SuspenseConfigProvider({
|
|
|
45341
45766
|
config,
|
|
45342
45767
|
children
|
|
45343
45768
|
}) {
|
|
45344
|
-
return
|
|
45769
|
+
return React80__default.createElement(
|
|
45345
45770
|
SuspenseConfigContext.Provider,
|
|
45346
45771
|
{ value: config },
|
|
45347
45772
|
children
|
|
@@ -45824,7 +46249,7 @@ function renderPatternChildren(children, onDismiss, parentId = "root", parentPat
|
|
|
45824
46249
|
const key = `${parentId}-${index}-trait:${traitName}`;
|
|
45825
46250
|
return /* @__PURE__ */ jsx(TraitFrame, { traitName }, key);
|
|
45826
46251
|
}
|
|
45827
|
-
return /* @__PURE__ */ jsx(
|
|
46252
|
+
return /* @__PURE__ */ jsx(React80__default.Fragment, { children: child }, `${parentId}-${index}`);
|
|
45828
46253
|
}
|
|
45829
46254
|
if (!child || typeof child !== "object") return null;
|
|
45830
46255
|
const childId = `${parentId}-${index}`;
|
|
@@ -45861,14 +46286,14 @@ function isPatternConfig(value) {
|
|
|
45861
46286
|
if (value === null || value === void 0) return false;
|
|
45862
46287
|
if (typeof value !== "object") return false;
|
|
45863
46288
|
if (Array.isArray(value)) return false;
|
|
45864
|
-
if (
|
|
46289
|
+
if (React80__default.isValidElement(value)) return false;
|
|
45865
46290
|
if (value instanceof Date) return false;
|
|
45866
46291
|
if (typeof value === "function") return false;
|
|
45867
46292
|
const record = value;
|
|
45868
46293
|
return "type" in record && typeof record.type === "string";
|
|
45869
46294
|
}
|
|
45870
46295
|
function isPlainConfigObject(value) {
|
|
45871
|
-
if (
|
|
46296
|
+
if (React80__default.isValidElement(value)) return false;
|
|
45872
46297
|
if (value instanceof Date) return false;
|
|
45873
46298
|
const proto = Object.getPrototypeOf(value);
|
|
45874
46299
|
return proto === Object.prototype || proto === null;
|
|
@@ -46316,7 +46741,7 @@ var FormSection = ({
|
|
|
46316
46741
|
columns = 1,
|
|
46317
46742
|
className
|
|
46318
46743
|
}) => {
|
|
46319
|
-
const [collapsed, setCollapsed] =
|
|
46744
|
+
const [collapsed, setCollapsed] = React80__default.useState(defaultCollapsed);
|
|
46320
46745
|
const { t } = useTranslate();
|
|
46321
46746
|
const eventBus = useEventBus();
|
|
46322
46747
|
const gridClass = {
|
|
@@ -46324,7 +46749,7 @@ var FormSection = ({
|
|
|
46324
46749
|
2: "grid-cols-1 md:grid-cols-2",
|
|
46325
46750
|
3: "grid-cols-1 md:grid-cols-2 lg:grid-cols-3"
|
|
46326
46751
|
}[columns];
|
|
46327
|
-
|
|
46752
|
+
React80__default.useCallback(() => {
|
|
46328
46753
|
if (collapsible) {
|
|
46329
46754
|
setCollapsed((prev) => !prev);
|
|
46330
46755
|
eventBus.emit("UI:TOGGLE_COLLAPSE", { collapsed: !collapsed });
|
|
@@ -48858,14 +49283,14 @@ init_useQuerySingleton();
|
|
|
48858
49283
|
|
|
48859
49284
|
// stores/entityStore.ts
|
|
48860
49285
|
var entities = /* @__PURE__ */ new Map();
|
|
48861
|
-
var
|
|
49286
|
+
var listeners7 = /* @__PURE__ */ new Set();
|
|
48862
49287
|
var idCounter2 = 0;
|
|
48863
49288
|
function subscribe(listener) {
|
|
48864
|
-
|
|
48865
|
-
return () =>
|
|
49289
|
+
listeners7.add(listener);
|
|
49290
|
+
return () => listeners7.delete(listener);
|
|
48866
49291
|
}
|
|
48867
49292
|
function notify() {
|
|
48868
|
-
|
|
49293
|
+
listeners7.forEach((listener) => listener());
|
|
48869
49294
|
}
|
|
48870
49295
|
function getEntity(id) {
|
|
48871
49296
|
return entities.get(id);
|