@almadar/ui 5.36.0 → 5.37.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.
@@ -7,9 +7,6 @@ var tailwindMerge = require('tailwind-merge');
7
7
  var providers = require('@almadar/ui/providers');
8
8
  var logger = require('@almadar/logger');
9
9
  var LucideIcons2 = require('lucide-react');
10
- var PhosphorIcons = require('@phosphor-icons/react');
11
- var TablerIcons = require('@tabler/icons-react');
12
- var FaIcons = require('react-icons/fa');
13
10
  var hooks = require('@almadar/ui/hooks');
14
11
  var evaluator = require('@almadar/evaluator');
15
12
  var reactDom = require('react-dom');
@@ -68,9 +65,6 @@ function _interopNamespace(e) {
68
65
 
69
66
  var React77__namespace = /*#__PURE__*/_interopNamespace(React77);
70
67
  var LucideIcons2__namespace = /*#__PURE__*/_interopNamespace(LucideIcons2);
71
- var PhosphorIcons__namespace = /*#__PURE__*/_interopNamespace(PhosphorIcons);
72
- var TablerIcons__namespace = /*#__PURE__*/_interopNamespace(TablerIcons);
73
- var FaIcons__namespace = /*#__PURE__*/_interopNamespace(FaIcons);
74
68
  var ELK__default = /*#__PURE__*/_interopDefault(ELK);
75
69
  var SyntaxHighlighter__default = /*#__PURE__*/_interopDefault(SyntaxHighlighter);
76
70
  var dark__default = /*#__PURE__*/_interopDefault(dark);
@@ -1274,6 +1268,41 @@ function kebabToPascal(name) {
1274
1268
  return part.charAt(0).toUpperCase() + part.slice(1);
1275
1269
  }).join("");
1276
1270
  }
1271
+ function loadLib(key, importer) {
1272
+ let p2 = libPromises.get(key);
1273
+ if (!p2) {
1274
+ p2 = importer().then((m) => m);
1275
+ libPromises.set(key, p2);
1276
+ }
1277
+ return p2;
1278
+ }
1279
+ function lazyFamilyIcon(libKey, importer, pick, fallbackName, family) {
1280
+ const Lazy = React77__namespace.default.lazy(async () => {
1281
+ const lib = await loadLib(libKey, importer);
1282
+ const Comp = pick(lib);
1283
+ if (!Comp) {
1284
+ warnFallback(fallbackName, family);
1285
+ return { default: makeLucideAdapter(fallbackName, true) };
1286
+ }
1287
+ return { default: Comp };
1288
+ });
1289
+ const Wrapped = (props) => /* @__PURE__ */ jsxRuntime.jsx(
1290
+ React77__namespace.default.Suspense,
1291
+ {
1292
+ fallback: /* @__PURE__ */ jsxRuntime.jsx(
1293
+ "span",
1294
+ {
1295
+ "aria-hidden": true,
1296
+ className: props.className,
1297
+ style: { display: "inline-block", ...props.style }
1298
+ }
1299
+ ),
1300
+ children: /* @__PURE__ */ jsxRuntime.jsx(Lazy, { ...props })
1301
+ }
1302
+ );
1303
+ Wrapped.displayName = `Lazy.${libKey}.${fallbackName}`;
1304
+ return Wrapped;
1305
+ }
1277
1306
  function resolveLucide(name) {
1278
1307
  if (lucideAliases[name]) return lucideAliases[name];
1279
1308
  const pascal = kebabToPascal(name);
@@ -1284,60 +1313,81 @@ function resolveLucide(name) {
1284
1313
  if (asIs && typeof asIs === "object") return asIs;
1285
1314
  return LucideIcons2__namespace.HelpCircle;
1286
1315
  }
1287
- function resolvePhosphor(name, weight) {
1316
+ function resolvePhosphor(name, weight, family) {
1288
1317
  const target = phosphorAliases[name] ?? kebabToPascal(name);
1289
- const map = PhosphorIcons__namespace;
1290
- const PhosphorComp = map[target];
1291
- if (!PhosphorComp || typeof PhosphorComp !== "object") return null;
1292
- const Component = PhosphorComp;
1293
- const Adapter = (props) => /* @__PURE__ */ jsxRuntime.jsx(
1294
- Component,
1295
- {
1296
- weight,
1297
- className: props.className,
1298
- style: props.style,
1299
- size: props.size ?? "1em"
1300
- }
1318
+ return lazyFamilyIcon(
1319
+ "phosphor",
1320
+ () => import('@phosphor-icons/react'),
1321
+ (lib) => {
1322
+ const PhosphorComp = lib[target];
1323
+ if (!PhosphorComp || typeof PhosphorComp !== "object") return null;
1324
+ const Component = PhosphorComp;
1325
+ const Adapter = (props) => /* @__PURE__ */ jsxRuntime.jsx(
1326
+ Component,
1327
+ {
1328
+ weight,
1329
+ className: props.className,
1330
+ style: props.style,
1331
+ size: props.size ?? "1em"
1332
+ }
1333
+ );
1334
+ Adapter.displayName = `Phosphor.${target}.${weight}`;
1335
+ return Adapter;
1336
+ },
1337
+ name,
1338
+ family
1301
1339
  );
1302
- Adapter.displayName = `Phosphor.${target}.${weight}`;
1303
- return Adapter;
1304
1340
  }
1305
- function resolveTabler(name) {
1341
+ function resolveTabler(name, family) {
1306
1342
  const suffix = tablerAliases[name] ?? kebabToPascal(name);
1307
1343
  const target = `Icon${suffix}`;
1308
- const map = TablerIcons__namespace;
1309
- const TablerComp = map[target];
1310
- if (!TablerComp || typeof TablerComp !== "object") return null;
1311
- const Component = TablerComp;
1312
- const Adapter = (props) => /* @__PURE__ */ jsxRuntime.jsx(
1313
- Component,
1314
- {
1315
- stroke: props.strokeWidth ?? 1.5,
1316
- className: props.className,
1317
- style: props.style,
1318
- size: props.size ?? 24
1319
- }
1344
+ return lazyFamilyIcon(
1345
+ "tabler",
1346
+ () => import('@tabler/icons-react'),
1347
+ (lib) => {
1348
+ const TablerComp = lib[target];
1349
+ if (!TablerComp || typeof TablerComp !== "object") return null;
1350
+ const Component = TablerComp;
1351
+ const Adapter = (props) => /* @__PURE__ */ jsxRuntime.jsx(
1352
+ Component,
1353
+ {
1354
+ stroke: props.strokeWidth ?? 1.5,
1355
+ className: props.className,
1356
+ style: props.style,
1357
+ size: props.size ?? 24
1358
+ }
1359
+ );
1360
+ Adapter.displayName = `Tabler.${target}`;
1361
+ return Adapter;
1362
+ },
1363
+ name,
1364
+ family
1320
1365
  );
1321
- Adapter.displayName = `Tabler.${target}`;
1322
- return Adapter;
1323
1366
  }
1324
- function resolveFa(name) {
1367
+ function resolveFa(name, family) {
1325
1368
  const suffix = faAliases[name] ?? kebabToPascal(name);
1326
1369
  const target = `Fa${suffix}`;
1327
- const map = FaIcons__namespace;
1328
- const FaComp = map[target];
1329
- if (!FaComp || typeof FaComp !== "function") return null;
1330
- const Component = FaComp;
1331
- const Adapter = (props) => /* @__PURE__ */ jsxRuntime.jsx(
1332
- Component,
1333
- {
1334
- className: props.className,
1335
- style: props.style,
1336
- size: props.size ?? "1em"
1337
- }
1370
+ return lazyFamilyIcon(
1371
+ "fa",
1372
+ () => import('react-icons/fa'),
1373
+ (lib) => {
1374
+ const FaComp = lib[target];
1375
+ if (!FaComp || typeof FaComp !== "function") return null;
1376
+ const Component = FaComp;
1377
+ const Adapter = (props) => /* @__PURE__ */ jsxRuntime.jsx(
1378
+ Component,
1379
+ {
1380
+ className: props.className,
1381
+ style: props.style,
1382
+ size: props.size ?? "1em"
1383
+ }
1384
+ );
1385
+ Adapter.displayName = `Fa.${target}`;
1386
+ return Adapter;
1387
+ },
1388
+ name,
1389
+ family
1338
1390
  );
1339
- Adapter.displayName = `Fa.${target}`;
1340
- return Adapter;
1341
1391
  }
1342
1392
  function warnFallback(name, family) {
1343
1393
  const key = `${family}::${name}`;
@@ -1371,39 +1421,22 @@ function resolveIconForFamily(name, family) {
1371
1421
  switch (family) {
1372
1422
  case "lucide":
1373
1423
  return makeLucideAdapter(name, false);
1374
- case "phosphor-outline": {
1375
- const p2 = resolvePhosphor(name, "regular");
1376
- if (p2) return p2;
1377
- warnFallback(name, family);
1378
- return makeLucideAdapter(name, true);
1379
- }
1380
- case "phosphor-fill": {
1381
- const p2 = resolvePhosphor(name, "fill");
1382
- if (p2) return p2;
1383
- warnFallback(name, family);
1384
- return makeLucideAdapter(name, true);
1385
- }
1386
- case "phosphor-duotone": {
1387
- const p2 = resolvePhosphor(name, "duotone");
1388
- if (p2) return p2;
1389
- warnFallback(name, family);
1390
- return makeLucideAdapter(name, true);
1391
- }
1392
- case "tabler": {
1393
- const t = resolveTabler(name);
1394
- if (t) return t;
1395
- warnFallback(name, family);
1396
- return makeLucideAdapter(name, true);
1397
- }
1398
- case "fa-solid": {
1399
- const f3 = resolveFa(name);
1400
- if (f3) return f3;
1401
- warnFallback(name, family);
1402
- return makeLucideAdapter(name, true);
1403
- }
1404
- }
1405
- }
1406
- var DEFAULT_FAMILY, VALID_FAMILIES, cachedFamily, listeners, observer, lucideAliases, phosphorAliases, tablerAliases, faAliases, warned;
1424
+ // Non-lucide families resolve to a lazy, Suspense-wrapped component that
1425
+ // dynamic-imports the library on first render and falls back to lucide
1426
+ // internally when the family lacks the icon (see lazyFamilyIcon).
1427
+ case "phosphor-outline":
1428
+ return resolvePhosphor(name, "regular", family);
1429
+ case "phosphor-fill":
1430
+ return resolvePhosphor(name, "fill", family);
1431
+ case "phosphor-duotone":
1432
+ return resolvePhosphor(name, "duotone", family);
1433
+ case "tabler":
1434
+ return resolveTabler(name, family);
1435
+ case "fa-solid":
1436
+ return resolveFa(name, family);
1437
+ }
1438
+ }
1439
+ var DEFAULT_FAMILY, VALID_FAMILIES, cachedFamily, listeners, observer, libPromises, lucideAliases, phosphorAliases, tablerAliases, faAliases, warned;
1407
1440
  var init_iconFamily = __esm({
1408
1441
  "lib/iconFamily.tsx"() {
1409
1442
  "use client";
@@ -1419,6 +1452,7 @@ var init_iconFamily = __esm({
1419
1452
  cachedFamily = null;
1420
1453
  listeners = /* @__PURE__ */ new Set();
1421
1454
  observer = null;
1455
+ libPromises = /* @__PURE__ */ new Map();
1422
1456
  lucideAliases = {
1423
1457
  close: LucideIcons2__namespace.X,
1424
1458
  trash: LucideIcons2__namespace.Trash2,
@@ -23343,7 +23377,7 @@ var init_FormSection = __esm({
23343
23377
  exports.FormActions.displayName = "FormActions";
23344
23378
  }
23345
23379
  });
23346
- var ALL_CATEGORY; exports.GridPicker = void 0;
23380
+ var ALL_CATEGORY, MAX_RENDERED; exports.GridPicker = void 0;
23347
23381
  var init_GridPicker = __esm({
23348
23382
  "components/core/molecules/GridPicker.tsx"() {
23349
23383
  "use client";
@@ -23352,6 +23386,7 @@ var init_GridPicker = __esm({
23352
23386
  init_Badge();
23353
23387
  init_Stack();
23354
23388
  ALL_CATEGORY = "__all__";
23389
+ MAX_RENDERED = 300;
23355
23390
  exports.GridPicker = ({
23356
23391
  items,
23357
23392
  value,
@@ -23381,6 +23416,8 @@ var init_GridPicker = __esm({
23381
23416
  return matchesCategory && matchesSearch;
23382
23417
  });
23383
23418
  }, [items, search, activeCategory]);
23419
+ const visible = React77.useMemo(() => filtered.slice(0, MAX_RENDERED), [filtered]);
23420
+ const truncated = filtered.length - visible.length;
23384
23421
  const select = React77.useCallback(
23385
23422
  (item) => {
23386
23423
  onChange(item.id);
@@ -23482,7 +23519,7 @@ var init_GridPicker = __esm({
23482
23519
  style: {
23483
23520
  gridTemplateColumns: `repeat(auto-fill, minmax(${cellSize}px, 1fr))`
23484
23521
  },
23485
- children: filtered.map((item, index) => {
23522
+ children: visible.map((item, index) => {
23486
23523
  const selected = item.id === value;
23487
23524
  return /* @__PURE__ */ jsxRuntime.jsx(
23488
23525
  "button",
@@ -23509,7 +23546,8 @@ var init_GridPicker = __esm({
23509
23546
  );
23510
23547
  })
23511
23548
  }
23512
- )
23549
+ ),
23550
+ truncated > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-1 text-xs text-muted-foreground", children: `+${truncated} more \u2014 refine your search` })
23513
23551
  ] });
23514
23552
  };
23515
23553
  exports.GridPicker.displayName = "GridPicker";
@@ -7,9 +7,6 @@ import { EventBusContext, useTraitScope, TraitScopeProvider } from '@almadar/ui/
7
7
  import { createLogger, isLogLevelEnabled } from '@almadar/logger';
8
8
  import * as LucideIcons2 from 'lucide-react';
9
9
  import { Loader2, X, List, Printer, ChevronRight, ChevronLeft, CheckCircle, XCircle, Wrench, RotateCcw, Send, Play, Terminal, Search, ChevronUp, ChevronDown, MoreHorizontal, Bug, Package, Calendar, Pencil, Eye, Image as Image$1, Upload, ZoomIn, ArrowRight, Pause, SkipForward, TrendingUp, TrendingDown, Minus, AlertCircle, Circle, Clock, CheckCircle2, Code, FileText, WrapText, Check, Copy, HelpCircle, Type, Heading1, Heading2, Heading3, ListOrdered, Quote, GitBranch, Plus, Trash, ArrowLeft, Menu as Menu$1, AlertTriangle, Trash2, Eraser, ZoomOut, Download, Lightbulb, PauseCircle, Link2, 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';
13
10
  import { useTranslate } from '@almadar/ui/hooks';
14
11
  export * from '@almadar/ui/hooks';
15
12
  import { evaluate, createMinimalContext } from '@almadar/evaluator';
@@ -1226,6 +1223,41 @@ function kebabToPascal(name) {
1226
1223
  return part.charAt(0).toUpperCase() + part.slice(1);
1227
1224
  }).join("");
1228
1225
  }
1226
+ function loadLib(key, importer) {
1227
+ let p2 = libPromises.get(key);
1228
+ if (!p2) {
1229
+ p2 = importer().then((m) => m);
1230
+ libPromises.set(key, p2);
1231
+ }
1232
+ return p2;
1233
+ }
1234
+ function lazyFamilyIcon(libKey, importer, pick, fallbackName, family) {
1235
+ const Lazy = React77__default.lazy(async () => {
1236
+ const lib = await loadLib(libKey, importer);
1237
+ const Comp = pick(lib);
1238
+ if (!Comp) {
1239
+ warnFallback(fallbackName, family);
1240
+ return { default: makeLucideAdapter(fallbackName, true) };
1241
+ }
1242
+ return { default: Comp };
1243
+ });
1244
+ const Wrapped = (props) => /* @__PURE__ */ jsx(
1245
+ React77__default.Suspense,
1246
+ {
1247
+ fallback: /* @__PURE__ */ jsx(
1248
+ "span",
1249
+ {
1250
+ "aria-hidden": true,
1251
+ className: props.className,
1252
+ style: { display: "inline-block", ...props.style }
1253
+ }
1254
+ ),
1255
+ children: /* @__PURE__ */ jsx(Lazy, { ...props })
1256
+ }
1257
+ );
1258
+ Wrapped.displayName = `Lazy.${libKey}.${fallbackName}`;
1259
+ return Wrapped;
1260
+ }
1229
1261
  function resolveLucide(name) {
1230
1262
  if (lucideAliases[name]) return lucideAliases[name];
1231
1263
  const pascal = kebabToPascal(name);
@@ -1236,60 +1268,81 @@ function resolveLucide(name) {
1236
1268
  if (asIs && typeof asIs === "object") return asIs;
1237
1269
  return LucideIcons2.HelpCircle;
1238
1270
  }
1239
- function resolvePhosphor(name, weight) {
1271
+ function resolvePhosphor(name, weight, family) {
1240
1272
  const target = phosphorAliases[name] ?? kebabToPascal(name);
1241
- const map = PhosphorIcons;
1242
- const PhosphorComp = map[target];
1243
- if (!PhosphorComp || typeof PhosphorComp !== "object") return null;
1244
- const Component = PhosphorComp;
1245
- const Adapter = (props) => /* @__PURE__ */ jsx(
1246
- Component,
1247
- {
1248
- weight,
1249
- className: props.className,
1250
- style: props.style,
1251
- size: props.size ?? "1em"
1252
- }
1273
+ return lazyFamilyIcon(
1274
+ "phosphor",
1275
+ () => import('@phosphor-icons/react'),
1276
+ (lib) => {
1277
+ const PhosphorComp = lib[target];
1278
+ if (!PhosphorComp || typeof PhosphorComp !== "object") return null;
1279
+ const Component = PhosphorComp;
1280
+ const Adapter = (props) => /* @__PURE__ */ jsx(
1281
+ Component,
1282
+ {
1283
+ weight,
1284
+ className: props.className,
1285
+ style: props.style,
1286
+ size: props.size ?? "1em"
1287
+ }
1288
+ );
1289
+ Adapter.displayName = `Phosphor.${target}.${weight}`;
1290
+ return Adapter;
1291
+ },
1292
+ name,
1293
+ family
1253
1294
  );
1254
- Adapter.displayName = `Phosphor.${target}.${weight}`;
1255
- return Adapter;
1256
1295
  }
1257
- function resolveTabler(name) {
1296
+ function resolveTabler(name, family) {
1258
1297
  const suffix = tablerAliases[name] ?? kebabToPascal(name);
1259
1298
  const target = `Icon${suffix}`;
1260
- const map = TablerIcons;
1261
- const TablerComp = map[target];
1262
- if (!TablerComp || typeof TablerComp !== "object") return null;
1263
- const Component = TablerComp;
1264
- const Adapter = (props) => /* @__PURE__ */ jsx(
1265
- Component,
1266
- {
1267
- stroke: props.strokeWidth ?? 1.5,
1268
- className: props.className,
1269
- style: props.style,
1270
- size: props.size ?? 24
1271
- }
1299
+ return lazyFamilyIcon(
1300
+ "tabler",
1301
+ () => import('@tabler/icons-react'),
1302
+ (lib) => {
1303
+ const TablerComp = lib[target];
1304
+ if (!TablerComp || typeof TablerComp !== "object") return null;
1305
+ const Component = TablerComp;
1306
+ const Adapter = (props) => /* @__PURE__ */ jsx(
1307
+ Component,
1308
+ {
1309
+ stroke: props.strokeWidth ?? 1.5,
1310
+ className: props.className,
1311
+ style: props.style,
1312
+ size: props.size ?? 24
1313
+ }
1314
+ );
1315
+ Adapter.displayName = `Tabler.${target}`;
1316
+ return Adapter;
1317
+ },
1318
+ name,
1319
+ family
1272
1320
  );
1273
- Adapter.displayName = `Tabler.${target}`;
1274
- return Adapter;
1275
1321
  }
1276
- function resolveFa(name) {
1322
+ function resolveFa(name, family) {
1277
1323
  const suffix = faAliases[name] ?? kebabToPascal(name);
1278
1324
  const target = `Fa${suffix}`;
1279
- const map = FaIcons;
1280
- const FaComp = map[target];
1281
- if (!FaComp || typeof FaComp !== "function") return null;
1282
- const Component = FaComp;
1283
- const Adapter = (props) => /* @__PURE__ */ jsx(
1284
- Component,
1285
- {
1286
- className: props.className,
1287
- style: props.style,
1288
- size: props.size ?? "1em"
1289
- }
1325
+ return lazyFamilyIcon(
1326
+ "fa",
1327
+ () => import('react-icons/fa'),
1328
+ (lib) => {
1329
+ const FaComp = lib[target];
1330
+ if (!FaComp || typeof FaComp !== "function") return null;
1331
+ const Component = FaComp;
1332
+ const Adapter = (props) => /* @__PURE__ */ jsx(
1333
+ Component,
1334
+ {
1335
+ className: props.className,
1336
+ style: props.style,
1337
+ size: props.size ?? "1em"
1338
+ }
1339
+ );
1340
+ Adapter.displayName = `Fa.${target}`;
1341
+ return Adapter;
1342
+ },
1343
+ name,
1344
+ family
1290
1345
  );
1291
- Adapter.displayName = `Fa.${target}`;
1292
- return Adapter;
1293
1346
  }
1294
1347
  function warnFallback(name, family) {
1295
1348
  const key = `${family}::${name}`;
@@ -1323,39 +1376,22 @@ function resolveIconForFamily(name, family) {
1323
1376
  switch (family) {
1324
1377
  case "lucide":
1325
1378
  return makeLucideAdapter(name, false);
1326
- case "phosphor-outline": {
1327
- const p2 = resolvePhosphor(name, "regular");
1328
- if (p2) return p2;
1329
- warnFallback(name, family);
1330
- return makeLucideAdapter(name, true);
1331
- }
1332
- case "phosphor-fill": {
1333
- const p2 = resolvePhosphor(name, "fill");
1334
- if (p2) return p2;
1335
- warnFallback(name, family);
1336
- return makeLucideAdapter(name, true);
1337
- }
1338
- case "phosphor-duotone": {
1339
- const p2 = resolvePhosphor(name, "duotone");
1340
- if (p2) return p2;
1341
- warnFallback(name, family);
1342
- return makeLucideAdapter(name, true);
1343
- }
1344
- case "tabler": {
1345
- const t = resolveTabler(name);
1346
- if (t) return t;
1347
- warnFallback(name, family);
1348
- return makeLucideAdapter(name, true);
1349
- }
1350
- case "fa-solid": {
1351
- const f3 = resolveFa(name);
1352
- if (f3) return f3;
1353
- warnFallback(name, family);
1354
- return makeLucideAdapter(name, true);
1355
- }
1356
- }
1357
- }
1358
- var DEFAULT_FAMILY, VALID_FAMILIES, cachedFamily, listeners, observer, lucideAliases, phosphorAliases, tablerAliases, faAliases, warned;
1379
+ // Non-lucide families resolve to a lazy, Suspense-wrapped component that
1380
+ // dynamic-imports the library on first render and falls back to lucide
1381
+ // internally when the family lacks the icon (see lazyFamilyIcon).
1382
+ case "phosphor-outline":
1383
+ return resolvePhosphor(name, "regular", family);
1384
+ case "phosphor-fill":
1385
+ return resolvePhosphor(name, "fill", family);
1386
+ case "phosphor-duotone":
1387
+ return resolvePhosphor(name, "duotone", family);
1388
+ case "tabler":
1389
+ return resolveTabler(name, family);
1390
+ case "fa-solid":
1391
+ return resolveFa(name, family);
1392
+ }
1393
+ }
1394
+ var DEFAULT_FAMILY, VALID_FAMILIES, cachedFamily, listeners, observer, libPromises, lucideAliases, phosphorAliases, tablerAliases, faAliases, warned;
1359
1395
  var init_iconFamily = __esm({
1360
1396
  "lib/iconFamily.tsx"() {
1361
1397
  "use client";
@@ -1371,6 +1407,7 @@ var init_iconFamily = __esm({
1371
1407
  cachedFamily = null;
1372
1408
  listeners = /* @__PURE__ */ new Set();
1373
1409
  observer = null;
1410
+ libPromises = /* @__PURE__ */ new Map();
1374
1411
  lucideAliases = {
1375
1412
  close: LucideIcons2.X,
1376
1413
  trash: LucideIcons2.Trash2,
@@ -23295,7 +23332,7 @@ var init_FormSection = __esm({
23295
23332
  FormActions.displayName = "FormActions";
23296
23333
  }
23297
23334
  });
23298
- var ALL_CATEGORY, GridPicker;
23335
+ var ALL_CATEGORY, MAX_RENDERED, GridPicker;
23299
23336
  var init_GridPicker = __esm({
23300
23337
  "components/core/molecules/GridPicker.tsx"() {
23301
23338
  "use client";
@@ -23304,6 +23341,7 @@ var init_GridPicker = __esm({
23304
23341
  init_Badge();
23305
23342
  init_Stack();
23306
23343
  ALL_CATEGORY = "__all__";
23344
+ MAX_RENDERED = 300;
23307
23345
  GridPicker = ({
23308
23346
  items,
23309
23347
  value,
@@ -23333,6 +23371,8 @@ var init_GridPicker = __esm({
23333
23371
  return matchesCategory && matchesSearch;
23334
23372
  });
23335
23373
  }, [items, search, activeCategory]);
23374
+ const visible = useMemo(() => filtered.slice(0, MAX_RENDERED), [filtered]);
23375
+ const truncated = filtered.length - visible.length;
23336
23376
  const select = useCallback(
23337
23377
  (item) => {
23338
23378
  onChange(item.id);
@@ -23434,7 +23474,7 @@ var init_GridPicker = __esm({
23434
23474
  style: {
23435
23475
  gridTemplateColumns: `repeat(auto-fill, minmax(${cellSize}px, 1fr))`
23436
23476
  },
23437
- children: filtered.map((item, index) => {
23477
+ children: visible.map((item, index) => {
23438
23478
  const selected = item.id === value;
23439
23479
  return /* @__PURE__ */ jsx(
23440
23480
  "button",
@@ -23461,7 +23501,8 @@ var init_GridPicker = __esm({
23461
23501
  );
23462
23502
  })
23463
23503
  }
23464
- )
23504
+ ),
23505
+ truncated > 0 && /* @__PURE__ */ jsx("div", { className: "px-1 text-xs text-muted-foreground", children: `+${truncated} more \u2014 refine your search` })
23465
23506
  ] });
23466
23507
  };
23467
23508
  GridPicker.displayName = "GridPicker";