@almadar/ui 4.45.0 → 4.47.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.
@@ -4427,8 +4427,8 @@ var init_SectionHeader = __esm({
4427
4427
  }
4428
4428
  });
4429
4429
  var sizeClasses4, MarketingStatCard;
4430
- var init_StatCard = __esm({
4431
- "components/atoms/StatCard.tsx"() {
4430
+ var init_MarketingStatCard = __esm({
4431
+ "components/atoms/MarketingStatCard.tsx"() {
4432
4432
  init_cn();
4433
4433
  init_Stack();
4434
4434
  init_Typography();
@@ -8294,7 +8294,7 @@ function ActionButton({
8294
8294
  disabled: isDisabled,
8295
8295
  onClick,
8296
8296
  className: cn(
8297
- "relative inline-flex items-center gap-1.5 rounded-md border font-medium text-[var(--color-foreground)] overflow-hidden transition-colors duration-150",
8297
+ "relative inline-flex items-center gap-1.5 rounded-md border font-medium overflow-hidden transition-colors duration-150",
8298
8298
  sizes.button,
8299
8299
  variantStyles7[variant],
8300
8300
  isDisabled && "opacity-60 cursor-not-allowed",
@@ -8304,7 +8304,7 @@ function ActionButton({
8304
8304
  onCooldown && /* @__PURE__ */ jsx(
8305
8305
  "div",
8306
8306
  {
8307
- className: "absolute inset-0 bg-black/60 pointer-events-none",
8307
+ className: "absolute inset-0 bg-foreground/40 pointer-events-none",
8308
8308
  style: {
8309
8309
  clipPath: `conic-gradient(from 0deg, transparent ${360 - cooldownDeg}deg, black ${360 - cooldownDeg}deg)`,
8310
8310
  WebkitClipPath: `conic-gradient(from 0deg, transparent ${360 - cooldownDeg}deg, black ${360 - cooldownDeg}deg)`,
@@ -8312,13 +8312,16 @@ function ActionButton({
8312
8312
  }
8313
8313
  }
8314
8314
  ),
8315
- icon && /* @__PURE__ */ jsx("span", { className: cn("flex-shrink-0", sizes.icon), children: icon }),
8315
+ icon && /* @__PURE__ */ jsx("span", { className: cn("flex-shrink-0", sizes.icon), children: typeof icon === "string" ? (() => {
8316
+ const I = resolveIcon(icon);
8317
+ return I ? /* @__PURE__ */ jsx(I, { className: "w-4 h-4" }) : null;
8318
+ })() : icon }),
8316
8319
  /* @__PURE__ */ jsx("span", { className: "relative z-10", children: label }),
8317
8320
  hotkey && /* @__PURE__ */ jsx(
8318
8321
  "span",
8319
8322
  {
8320
8323
  className: cn(
8321
- "absolute top-0.5 right-0.5 bg-black/50 text-gray-300 rounded font-mono leading-tight",
8324
+ "absolute top-0.5 right-0.5 bg-foreground/30 text-primary-foreground rounded font-mono leading-tight",
8322
8325
  sizes.hotkey
8323
8326
  ),
8324
8327
  children: hotkey
@@ -8332,15 +8335,16 @@ var sizeMap, variantStyles7;
8332
8335
  var init_ActionButton = __esm({
8333
8336
  "components/atoms/game/ActionButton.tsx"() {
8334
8337
  init_cn();
8338
+ init_Icon();
8335
8339
  sizeMap = {
8336
8340
  sm: { button: "px-3 py-1.5 text-xs", hotkey: "text-[9px] px-1", icon: "text-xs" },
8337
8341
  md: { button: "px-4 py-2 text-sm", hotkey: "text-[10px] px-1.5", icon: "text-sm" },
8338
8342
  lg: { button: "px-5 py-2.5 text-base", hotkey: "text-xs px-2", icon: "text-base" }
8339
8343
  };
8340
8344
  variantStyles7 = {
8341
- primary: "bg-blue-600 hover:bg-blue-500 border-blue-400/40",
8342
- secondary: "bg-gray-700 hover:bg-gray-600 border-gray-500/40",
8343
- danger: "bg-red-700 hover:bg-red-600 border-red-400/40"
8345
+ primary: "bg-primary text-primary-foreground hover:bg-primary-hover border-primary",
8346
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary-hover border-border",
8347
+ danger: "bg-error text-error-foreground hover:bg-error/90 border-error"
8344
8348
  };
8345
8349
  ActionButton.displayName = "ActionButton";
8346
8350
  }
@@ -8409,12 +8413,15 @@ function ControlButton({
8409
8413
  sizeMap2[size] ?? sizeMap2.md,
8410
8414
  shapeMap[shape] ?? shapeMap.circle,
8411
8415
  variantMap[variant] ?? variantMap.secondary,
8412
- actualPressed && "scale-95 brightness-110 border-white",
8416
+ actualPressed && "scale-95 brightness-110 border-foreground",
8413
8417
  disabled && "opacity-50 cursor-not-allowed",
8414
8418
  className
8415
8419
  ),
8416
8420
  children: [
8417
- icon && /* @__PURE__ */ jsx("span", { className: "text-2xl", children: icon }),
8421
+ icon && /* @__PURE__ */ jsx("span", { className: "text-2xl", children: typeof icon === "string" ? (() => {
8422
+ const I = resolveIcon(icon);
8423
+ return I ? /* @__PURE__ */ jsx(I, { className: "w-6 h-6" }) : null;
8424
+ })() : icon }),
8418
8425
  label && !icon && /* @__PURE__ */ jsx("span", { children: label })
8419
8426
  ]
8420
8427
  }
@@ -8426,6 +8433,7 @@ var init_ControlButton = __esm({
8426
8433
  "use client";
8427
8434
  init_cn();
8428
8435
  init_useEventBus();
8436
+ init_Icon();
8429
8437
  sizeMap2 = {
8430
8438
  sm: "w-10 h-10 text-sm",
8431
8439
  md: "w-14 h-14 text-base",
@@ -8438,9 +8446,9 @@ var init_ControlButton = __esm({
8438
8446
  square: "rounded-md"
8439
8447
  };
8440
8448
  variantMap = {
8441
- primary: "bg-blue-600 text-[var(--color-foreground)] border-blue-400 hover:bg-blue-500",
8442
- secondary: "bg-[var(--color-surface,#374151)] text-[var(--color-foreground)] border-gray-500 hover:bg-gray-600",
8443
- ghost: "bg-transparent text-[var(--color-foreground)] border-white/30 hover:bg-white/10"
8449
+ primary: "bg-primary text-primary-foreground border-primary hover:bg-primary-hover",
8450
+ secondary: "bg-secondary text-secondary-foreground border-border hover:bg-secondary-hover",
8451
+ ghost: "bg-transparent text-foreground border-border hover:bg-muted"
8444
8452
  };
8445
8453
  ControlButton.displayName = "ControlButton";
8446
8454
  }
@@ -18060,8 +18068,8 @@ function ChoiceButton({
18060
18068
  className: cn(
18061
18069
  "w-full text-left px-4 py-2.5 rounded-md border transition-all duration-150",
18062
18070
  "flex items-center gap-2",
18063
- selected ? "bg-yellow-500/20 border-yellow-400 text-yellow-300" : "bg-white/5 border-white/10 text-[var(--color-foreground)] hover:bg-white/10 hover:border-white/30",
18064
- disabled && "opacity-40 cursor-not-allowed hover:bg-white/5 hover:border-white/10",
18071
+ selected ? "bg-accent/15 border-accent text-foreground" : "bg-muted/40 border-border text-foreground hover:bg-muted hover:border-border",
18072
+ disabled && "opacity-40 cursor-not-allowed hover:bg-muted/40 hover:border-border",
18065
18073
  className
18066
18074
  ),
18067
18075
  children: [
@@ -18070,7 +18078,7 @@ function ChoiceButton({
18070
18078
  {
18071
18079
  className: cn(
18072
18080
  "flex-shrink-0 font-mono font-bold text-sm",
18073
- selected ? "text-yellow-400" : "text-gray-500"
18081
+ selected ? "text-accent" : "text-muted-foreground"
18074
18082
  ),
18075
18083
  children: [
18076
18084
  index,
@@ -20274,7 +20282,7 @@ function DataGrid({
20274
20282
  onClick: handleActionClick(action, itemData),
20275
20283
  "data-testid": `action-${action.event}`,
20276
20284
  "data-row-id": String(itemData.id),
20277
- className: "text-error hover:bg-error/10 px-2",
20285
+ className: "text-error hover:text-error hover:bg-error/10 px-2",
20278
20286
  children: [
20279
20287
  action.icon && /* @__PURE__ */ jsx(Icon, { name: action.icon, size: "xs" }),
20280
20288
  action.label
@@ -23016,7 +23024,7 @@ function StatBadge({
23016
23024
  const I = resolveIcon(icon);
23017
23025
  return I ? /* @__PURE__ */ jsx(I, { className: "w-4 h-4" }) : icon;
23018
23026
  })() : icon }),
23019
- /* @__PURE__ */ jsx("span", { className: "text-gray-400 font-medium", children: label }),
23027
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground font-medium", children: label }),
23020
23028
  format === "hearts" && max && /* @__PURE__ */ jsx(
23021
23029
  HealthBar,
23022
23030
  {
@@ -23043,7 +23051,7 @@ function StatBadge({
23043
23051
  animated: true
23044
23052
  }
23045
23053
  ),
23046
- format === "text" && /* @__PURE__ */ jsx("span", { className: "font-bold text-[var(--color-foreground)]", children: value })
23054
+ format === "text" && /* @__PURE__ */ jsx("span", { className: "font-bold text-foreground", children: value })
23047
23055
  ]
23048
23056
  }
23049
23057
  );
@@ -23061,11 +23069,11 @@ var init_StatBadge = __esm({
23061
23069
  lg: "text-base px-4 py-2"
23062
23070
  };
23063
23071
  variantMap2 = {
23064
- default: "bg-[var(--color-card)]/80 border-gray-700",
23065
- primary: "bg-blue-900/80 border-blue-700",
23066
- success: "bg-green-900/80 border-green-700",
23067
- warning: "bg-yellow-900/80 border-yellow-700",
23068
- danger: "bg-red-900/80 border-red-700"
23072
+ default: "bg-card/80 border-border text-foreground",
23073
+ primary: "bg-primary/15 border-primary/40 text-foreground",
23074
+ success: "bg-success/15 border-success/40 text-foreground",
23075
+ warning: "bg-warning/15 border-warning/40 text-foreground",
23076
+ danger: "bg-error/15 border-error/40 text-foreground"
23069
23077
  };
23070
23078
  StatBadge.displayName = "StatBadge";
23071
23079
  }
@@ -35974,9 +35982,45 @@ var init_List = __esm({
35974
35982
  List3.displayName = "List";
35975
35983
  }
35976
35984
  });
35977
- var DefaultEmptyDetail, MasterDetail;
35985
+ function MasterDetail({
35986
+ entity,
35987
+ masterFields,
35988
+ detailFields: _detailFields,
35989
+ // Captured but not used here - detail handled separately
35990
+ loading: externalLoading,
35991
+ isLoading: externalIsLoading,
35992
+ error: externalError,
35993
+ className,
35994
+ ...rest
35995
+ }) {
35996
+ const loading = externalLoading ?? false;
35997
+ const isLoading = externalIsLoading ?? false;
35998
+ const error = externalError ?? null;
35999
+ return /* @__PURE__ */ jsx(
36000
+ DataTable,
36001
+ {
36002
+ fields: masterFields,
36003
+ columns: masterFields,
36004
+ entity,
36005
+ isLoading: loading || isLoading,
36006
+ error,
36007
+ className,
36008
+ emptyTitle: "No items found",
36009
+ emptyDescription: "Create your first item to get started.",
36010
+ ...rest
36011
+ }
36012
+ );
36013
+ }
35978
36014
  var init_MasterDetail = __esm({
35979
- "components/organisms/layout/MasterDetail.tsx"() {
36015
+ "components/organisms/MasterDetail.tsx"() {
36016
+ "use client";
36017
+ init_DataTable();
36018
+ MasterDetail.displayName = "MasterDetail";
36019
+ }
36020
+ });
36021
+ var DefaultEmptyDetail, MasterDetailLayout;
36022
+ var init_MasterDetailLayout = __esm({
36023
+ "components/organisms/layout/MasterDetailLayout.tsx"() {
35980
36024
  init_cn();
35981
36025
  init_Typography();
35982
36026
  DefaultEmptyDetail = () => /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center h-full border-2 border-dashed border-border", children: /* @__PURE__ */ jsx(
@@ -35987,7 +36031,7 @@ var init_MasterDetail = __esm({
35987
36031
  children: "Select an item to view details"
35988
36032
  }
35989
36033
  ) });
35990
- MasterDetail = ({
36034
+ MasterDetailLayout = ({
35991
36035
  master,
35992
36036
  detail,
35993
36037
  emptyDetail,
@@ -36022,7 +36066,7 @@ var init_MasterDetail = __esm({
36022
36066
  }
36023
36067
  );
36024
36068
  };
36025
- MasterDetail.displayName = "MasterDetail";
36069
+ MasterDetailLayout.displayName = "MasterDetailLayout";
36026
36070
  }
36027
36071
  });
36028
36072
  var COLUMN_CLASSES, ASPECT_CLASSES, MediaGallery;
@@ -40836,7 +40880,7 @@ var init_Sprite = __esm({
40836
40880
  }
40837
40881
  });
40838
40882
  var StatCard;
40839
- var init_StatCard2 = __esm({
40883
+ var init_StatCard = __esm({
40840
40884
  "components/organisms/StatCard.tsx"() {
40841
40885
  "use client";
40842
40886
  init_cn();
@@ -43196,6 +43240,7 @@ var init_component_registry_generated = __esm({
43196
43240
  init_LoadingState();
43197
43241
  init_MarkdownContent();
43198
43242
  init_MasterDetail();
43243
+ init_MasterDetailLayout();
43199
43244
  init_MatrixQuestion();
43200
43245
  init_MediaGallery();
43201
43246
  init_Meter();
@@ -43263,7 +43308,7 @@ var init_component_registry_generated = __esm({
43263
43308
  init_Stack();
43264
43309
  init_StarRating();
43265
43310
  init_StatBadge();
43266
- init_StatCard2();
43311
+ init_StatCard();
43267
43312
  init_StatDisplay();
43268
43313
  init_StateArchitectBoard();
43269
43314
  init_StateIndicator();
@@ -43490,6 +43535,7 @@ var init_component_registry_generated = __esm({
43490
43535
  "MapViewPattern": MapViewPattern,
43491
43536
  "MarkdownContent": MarkdownContent,
43492
43537
  "MasterDetail": MasterDetail,
43538
+ "MasterDetailLayout": MasterDetailLayout,
43493
43539
  "MatrixQuestion": MatrixQuestion,
43494
43540
  "MediaGallery": MediaGallery,
43495
43541
  "Menu": MenuPattern,
@@ -44589,7 +44635,7 @@ var init_atoms = __esm({
44589
44635
  init_ConfettiEffect();
44590
44636
  init_TypewriterText();
44591
44637
  init_SectionHeader();
44592
- init_StatCard();
44638
+ init_MarketingStatCard();
44593
44639
  init_ContentSection();
44594
44640
  init_PatternTile();
44595
44641
  init_AnimatedReveal();
@@ -44606,7 +44652,7 @@ init_molecules();
44606
44652
  // components/organisms/index.ts
44607
44653
  init_types3();
44608
44654
  init_DataTable();
44609
- init_StatCard2();
44655
+ init_StatCard();
44610
44656
  init_PageHeader();
44611
44657
  init_DetailPanel();
44612
44658
 
@@ -44744,41 +44790,7 @@ init_Split();
44744
44790
  init_Table();
44745
44791
  init_List();
44746
44792
  init_CardGrid();
44747
-
44748
- // components/organisms/MasterDetail.tsx
44749
- init_DataTable();
44750
- function MasterDetail2({
44751
- entity,
44752
- masterFields,
44753
- detailFields: _detailFields,
44754
- // Captured but not used here - detail handled separately
44755
- loading: externalLoading,
44756
- isLoading: externalIsLoading,
44757
- error: externalError,
44758
- className,
44759
- ...rest
44760
- }) {
44761
- const loading = externalLoading ?? false;
44762
- const isLoading = externalIsLoading ?? false;
44763
- const error = externalError ?? null;
44764
- return /* @__PURE__ */ jsx(
44765
- DataTable,
44766
- {
44767
- fields: masterFields,
44768
- columns: masterFields,
44769
- entity,
44770
- isLoading: loading || isLoading,
44771
- error,
44772
- className,
44773
- emptyTitle: "No items found",
44774
- emptyDescription: "Create your first item to get started.",
44775
- ...rest
44776
- }
44777
- );
44778
- }
44779
- MasterDetail2.displayName = "MasterDetail";
44780
-
44781
- // components/organisms/index.ts
44793
+ init_MasterDetail();
44782
44794
  init_ConfirmDialog();
44783
44795
  init_WizardContainer();
44784
44796
  init_OrbitalVisualization();
@@ -44796,6 +44808,7 @@ init_types2();
44796
44808
 
44797
44809
  // components/organisms/layout/index.ts
44798
44810
  init_SplitPane();
44811
+ init_MasterDetailLayout();
44799
44812
  init_DashboardGrid();
44800
44813
  init_TabbedContainer();
44801
44814
 
@@ -47539,4 +47552,4 @@ function useGitHubBranches(owner, repo, enabled = true) {
47539
47552
  });
47540
47553
  }
47541
47554
 
47542
- export { ALL_PRESETS, ALMADAR_DND_MIME, AR_BOOK_FIELDS, AboutPageTemplate, Accordion, ActionButton, ActionButtons, Card2 as ActionCard, ActionPalette, ActionTile, Alert, AnimatedCounter, AnimatedGraphic, AnimatedReveal, ArticleSection, AuthLayout, Avatar, Badge, BattleBoard, BattleTemplate, BehaviorView, BookChapterView, BookCoverPage, BookNavBar, BookTableOfContents, BookViewer, Box, BranchingLogicBuilder, Breadcrumb, BuilderBoard, Button, ButtonGroup, CTABanner, CalendarGrid, CanvasEffect, Card, CardBody, CardContent, CardFooter, CardGrid, CardHeader, CardTitle, Carousel, CaseStudyCard, CaseStudyOrganism, CastleBoard, CastleTemplate, Center, Chart, ChartLegend, Checkbox, ChoiceButton, ClassifierBoard, CodeBlock, CodeExample, CodeView, CodeViewer, CollapsibleSection, CombatLog, ComboCounter, CommunityLinks, ConditionalWrapper, ConfettiEffect, ConfirmDialog, Container, ContentRenderer, ContentSection, ControlButton, CounterTemplate, CraftingRecipe, DEFAULT_LIKERT_OPTIONS, DEFAULT_MATRIX_COLUMNS, DEFAULT_SLOTS, DIAMOND_TOP_Y, DPad, DamageNumber, DashboardGrid, DashboardLayout, DataGrid, DataList, DataTable, DateRangeSelector, DayCell, DebuggerBoard, DetailPanel, DialogueBox, DialogueBubble, Divider, DocBreadcrumb, DocCodeBlock, DocPagination, DocSearch, DocSidebar, DocTOC, DocumentViewer, StateMachineView as DomStateMachineVisualizer, Drawer, DrawerSlot, EdgeDecoration, EditorCheckbox, EditorSelect, EditorSlider, EditorTextInput, EditorToolbar, EmptyState, EnemyPlate, EntityDisplayEvents, ErrorBoundary, ErrorState, EventHandlerBoard, EventLog, FEATURE_COLORS, FEATURE_TYPES, FLOOR_HEIGHT, FeatureCard, FeatureDetailPageTemplate, FeatureGrid, FeatureGridOrganism, FeatureRenderer2 as FeatureRenderer, FileTree, FilterGroup, FilterPill, Flex, FlipCard, FlipContainer, FloatingActionButton, Form, FormActions, FormField, FormLayout, FormSection, FormSectionHeader, GameAudioContext, GameAudioProvider, GameAudioToggle, GameCanvas2D, GameHud, GameMenu, GameOverScreen, GameShell, GameTemplate, GenericAppTemplate, GeometricPattern, GradientDivider, GraphCanvas, GraphView, Grid, HStack, Header, Heading, HealthBar, HealthPanel, HeroOrganism, HeroSection, I18nProvider, IDENTITY_BOOK_FIELDS, Icon, InfiniteScrollSentinel, Input, InputGroup, InstallBox, InventoryGrid, InventoryPanel, IsometricCanvas, ItemSlot, JazariStateMachine, Label, LandingPageTemplate, LawReferenceTooltip, Lightbox, LikertScale, LineChart2 as LineChart, List3 as List, LoadingState, MapView, MarkdownContent, MarketingStatCard, MasterDetail2 as MasterDetail, MatrixQuestion, MediaGallery, Menu, Meter, MiniMap, Modal, ModalSlot, ModuleCard, Navigation, NegotiatorBoard, NotifyListener, NumberStepper, ObjectRulePanel, OptionConstraintGroup, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, Overlay, PageHeader, Pagination, PatternTile, PhysicsManager, PlatformerCanvas, Popover, PositionedCanvas, PowerupSlots, PricingCard, PricingGrid, PricingOrganism, PricingPageTemplate, ProgressBar, ProgressDots, PullQuote, PullToRefresh, QrScanner, QuestTracker, QuizBlock, Radio, RangeSlider, RelationSelect, RepeatableFormSection, ReplyTree, ResourceBar, ResourceCounter, RichBlockEditor, RuleEditor, RuntimeDebugger, SHEET_COLUMNS, SPRITE_SHEET_LAYOUT, ScaledDiagram, ScoreBoard, ScoreDisplay, SearchInput, Section, SectionHeader, Select, SequenceBar, SequencerBoard, ServiceCatalog, ShowcaseCard, ShowcaseOrganism, SidePanel, Sidebar, SignaturePad, SimpleGrid, SimulationCanvas, SimulationControls, SimulationGraph, SimulatorBoard, Skeleton, SlotContentRenderer, SocialProof, SortableList, Spacer, Spinner, Split, SplitPane, SplitSection, Sprite, Stack, StarRating, StatBadge, StatCard, StatDisplay, StateArchitectBoard, StateIndicator, StateMachineView, StateNode2 as StateNode, StatsGrid, StatsOrganism, StatusBar, StatusDot, StatusEffect, StepFlow, StepFlowOrganism, SvgBranch, SvgConnection, SvgFlow, SvgGrid, SvgLobe, SvgMesh, SvgMorph, SvgNode, SvgPulse, SvgRing, SvgShield, SvgStack, SwipeableRow, Switch, TERRAIN_COLORS, TILE_HEIGHT, TILE_WIDTH, TabbedContainer, Table, Tabs, TagCloud, TeamCard, TeamOrganism, TerrainPalette, Text, TextHighlight, Textarea, ThemeSelector, ThemeToggle, TimeSlotCell, Timeline, TimerDisplay, Toast, ToastSlot, Tooltip, TraitFrame, TraitSlot, TraitStateViewer, TransitionArrow, TrendIndicator, TurnIndicator, TurnPanel, TypewriterText, Typography, UISlotComponent, UISlotRenderer, UncontrolledBattleBoard, UnitCommandBar, UploadDropZone, VStack, VariablePanel, VersionDiff, ViolationAlert, VoteStack, WaypointMarker, WizardContainer, WizardNavigation, WizardProgress, WorldMapBoard, WorldMapTemplate, XPBar, applyTemporaryEffect, calculateAttackTargets, calculateDamage, calculateValidMoves, clearEntities, cn, combatAnimations, combatClasses, combatEffects, createInitialGameState, createTranslate, createUnitAnimationState, drawSprite, generateCombatMessage, getAllEntities, getByType, getCurrentFrame, getEntity, getSingleton, getTileDimensions, inferDirection, isoToScreen, mapBookData, parseQueryBinding, pendulum, projectileMotion, removeEntity, resolveFieldMap, resolveFrame, resolveSheetDirection, screenToIso, spawnEntity, springOscillator, tickAnimationState, transitionAnimation, updateEntity, updateSingleton, useAgentChat, useAuthContext, useBattleState, useCamera, useCompile, useConnectGitHub, useDeepAgentGeneration, useDisconnectGitHub, useDragReorder, useDraggable, useDropZone, useEmitEvent, useEntities, useEntitiesByType, useEntity as useEntityById, useEventBus, useEventListener, useExtensions, useFileEditor, useFileSystem, useGameAudio, useGameAudioContext, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, useImageCache, useInfiniteScroll, useInput, useLongPress, useOrbitalHistory, usePhysics, usePhysics2D, usePinchZoom, usePlayer, usePreview, usePullToRefresh, useQuerySingleton, useSingletonEntity, useSpriteAnimations, useSwipeGesture, useTraitListens, useTranslate, useUIEvents, useUISlotManager, useValidation };
47555
+ export { ALL_PRESETS, ALMADAR_DND_MIME, AR_BOOK_FIELDS, AboutPageTemplate, Accordion, ActionButton, ActionButtons, Card2 as ActionCard, ActionPalette, ActionTile, Alert, AnimatedCounter, AnimatedGraphic, AnimatedReveal, ArticleSection, AuthLayout, Avatar, Badge, BattleBoard, BattleTemplate, BehaviorView, BookChapterView, BookCoverPage, BookNavBar, BookTableOfContents, BookViewer, Box, BranchingLogicBuilder, Breadcrumb, BuilderBoard, Button, ButtonGroup, CTABanner, CalendarGrid, CanvasEffect, Card, CardBody, CardContent, CardFooter, CardGrid, CardHeader, CardTitle, Carousel, CaseStudyCard, CaseStudyOrganism, CastleBoard, CastleTemplate, Center, Chart, ChartLegend, Checkbox, ChoiceButton, ClassifierBoard, CodeBlock, CodeExample, CodeView, CodeViewer, CollapsibleSection, CombatLog, ComboCounter, CommunityLinks, ConditionalWrapper, ConfettiEffect, ConfirmDialog, Container, ContentRenderer, ContentSection, ControlButton, CounterTemplate, CraftingRecipe, DEFAULT_LIKERT_OPTIONS, DEFAULT_MATRIX_COLUMNS, DEFAULT_SLOTS, DIAMOND_TOP_Y, DPad, DamageNumber, DashboardGrid, DashboardLayout, DataGrid, DataList, DataTable, DateRangeSelector, DayCell, DebuggerBoard, DetailPanel, DialogueBox, DialogueBubble, Divider, DocBreadcrumb, DocCodeBlock, DocPagination, DocSearch, DocSidebar, DocTOC, DocumentViewer, StateMachineView as DomStateMachineVisualizer, Drawer, DrawerSlot, EdgeDecoration, EditorCheckbox, EditorSelect, EditorSlider, EditorTextInput, EditorToolbar, EmptyState, EnemyPlate, EntityDisplayEvents, ErrorBoundary, ErrorState, EventHandlerBoard, EventLog, FEATURE_COLORS, FEATURE_TYPES, FLOOR_HEIGHT, FeatureCard, FeatureDetailPageTemplate, FeatureGrid, FeatureGridOrganism, FeatureRenderer2 as FeatureRenderer, FileTree, FilterGroup, FilterPill, Flex, FlipCard, FlipContainer, FloatingActionButton, Form, FormActions, FormField, FormLayout, FormSection, FormSectionHeader, GameAudioContext, GameAudioProvider, GameAudioToggle, GameCanvas2D, GameHud, GameMenu, GameOverScreen, GameShell, GameTemplate, GenericAppTemplate, GeometricPattern, GradientDivider, GraphCanvas, GraphView, Grid, HStack, Header, Heading, HealthBar, HealthPanel, HeroOrganism, HeroSection, I18nProvider, IDENTITY_BOOK_FIELDS, Icon, InfiniteScrollSentinel, Input, InputGroup, InstallBox, InventoryGrid, InventoryPanel, IsometricCanvas, ItemSlot, JazariStateMachine, Label, LandingPageTemplate, LawReferenceTooltip, Lightbox, LikertScale, LineChart2 as LineChart, List3 as List, LoadingState, MapView, MarkdownContent, MarketingStatCard, MasterDetail, MasterDetailLayout, MatrixQuestion, MediaGallery, Menu, Meter, MiniMap, Modal, ModalSlot, ModuleCard, Navigation, NegotiatorBoard, NotifyListener, NumberStepper, ObjectRulePanel, OptionConstraintGroup, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, Overlay, PageHeader, Pagination, PatternTile, PhysicsManager, PlatformerCanvas, Popover, PositionedCanvas, PowerupSlots, PricingCard, PricingGrid, PricingOrganism, PricingPageTemplate, ProgressBar, ProgressDots, PullQuote, PullToRefresh, QrScanner, QuestTracker, QuizBlock, Radio, RangeSlider, RelationSelect, RepeatableFormSection, ReplyTree, ResourceBar, ResourceCounter, RichBlockEditor, RuleEditor, RuntimeDebugger, SHEET_COLUMNS, SPRITE_SHEET_LAYOUT, ScaledDiagram, ScoreBoard, ScoreDisplay, SearchInput, Section, SectionHeader, Select, SequenceBar, SequencerBoard, ServiceCatalog, ShowcaseCard, ShowcaseOrganism, SidePanel, Sidebar, SignaturePad, SimpleGrid, SimulationCanvas, SimulationControls, SimulationGraph, SimulatorBoard, Skeleton, SlotContentRenderer, SocialProof, SortableList, Spacer, Spinner, Split, SplitPane, SplitSection, Sprite, Stack, StarRating, StatBadge, StatCard, StatDisplay, StateArchitectBoard, StateIndicator, StateMachineView, StateNode2 as StateNode, StatsGrid, StatsOrganism, StatusBar, StatusDot, StatusEffect, StepFlow, StepFlowOrganism, SvgBranch, SvgConnection, SvgFlow, SvgGrid, SvgLobe, SvgMesh, SvgMorph, SvgNode, SvgPulse, SvgRing, SvgShield, SvgStack, SwipeableRow, Switch, TERRAIN_COLORS, TILE_HEIGHT, TILE_WIDTH, TabbedContainer, Table, Tabs, TagCloud, TeamCard, TeamOrganism, TerrainPalette, Text, TextHighlight, Textarea, ThemeSelector, ThemeToggle, TimeSlotCell, Timeline, TimerDisplay, Toast, ToastSlot, Tooltip, TraitFrame, TraitSlot, TraitStateViewer, TransitionArrow, TrendIndicator, TurnIndicator, TurnPanel, TypewriterText, Typography, UISlotComponent, UISlotRenderer, UncontrolledBattleBoard, UnitCommandBar, UploadDropZone, VStack, VariablePanel, VersionDiff, ViolationAlert, VoteStack, WaypointMarker, WizardContainer, WizardNavigation, WizardProgress, WorldMapBoard, WorldMapTemplate, XPBar, applyTemporaryEffect, calculateAttackTargets, calculateDamage, calculateValidMoves, clearEntities, cn, combatAnimations, combatClasses, combatEffects, createInitialGameState, createTranslate, createUnitAnimationState, drawSprite, generateCombatMessage, getAllEntities, getByType, getCurrentFrame, getEntity, getSingleton, getTileDimensions, inferDirection, isoToScreen, mapBookData, parseQueryBinding, pendulum, projectileMotion, removeEntity, resolveFieldMap, resolveFrame, resolveSheetDirection, screenToIso, spawnEntity, springOscillator, tickAnimationState, transitionAnimation, updateEntity, updateSingleton, useAgentChat, useAuthContext, useBattleState, useCamera, useCompile, useConnectGitHub, useDeepAgentGeneration, useDisconnectGitHub, useDragReorder, useDraggable, useDropZone, useEmitEvent, useEntities, useEntitiesByType, useEntity as useEntityById, useEventBus, useEventListener, useExtensions, useFileEditor, useFileSystem, useGameAudio, useGameAudioContext, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, useImageCache, useInfiniteScroll, useInput, useLongPress, useOrbitalHistory, usePhysics, usePhysics2D, usePinchZoom, usePlayer, usePreview, usePullToRefresh, useQuerySingleton, useSingletonEntity, useSpriteAnimations, useSwipeGesture, useTraitListens, useTranslate, useUIEvents, useUISlotManager, useValidation };
@@ -5,7 +5,7 @@ export interface ResourceBarResource {
5
5
  /** Resource name */
6
6
  label: string;
7
7
  /** Current amount */
8
- value: number;
8
+ value?: number;
9
9
  /** Maximum amount (displays as bar if provided) */
10
10
  max?: number;
11
11
  }
@@ -7,7 +7,7 @@
7
7
  * Uses wireframe theme styling (high contrast, sharp edges).
8
8
  */
9
9
  import React from "react";
10
- export interface MasterDetailProps {
10
+ export interface MasterDetailLayoutProps {
11
11
  /** Master panel content (usually a list) */
12
12
  master: React.ReactNode;
13
13
  /** Detail panel content */
@@ -28,5 +28,5 @@ export interface MasterDetailProps {
28
28
  /**
29
29
  * MasterDetail - List + detail split layout
30
30
  */
31
- export declare const MasterDetail: React.FC<MasterDetailProps>;
32
- export default MasterDetail;
31
+ export declare const MasterDetailLayout: React.FC<MasterDetailLayoutProps>;
32
+ export default MasterDetailLayout;
@@ -4,6 +4,6 @@
4
4
  * Export layout pattern components for adaptive UI.
5
5
  */
6
6
  export { SplitPane, type SplitPaneProps } from './SplitPane';
7
- export { MasterDetail, type MasterDetailProps } from './MasterDetail';
7
+ export { MasterDetailLayout, type MasterDetailLayoutProps } from './MasterDetailLayout';
8
8
  export { DashboardGrid, type DashboardGridProps, type DashboardGridCell } from './DashboardGrid';
9
9
  export { TabbedContainer, type TabbedContainerProps, type TabDefinition } from './TabbedContainer';
@@ -6057,12 +6057,15 @@ function ControlButton({
6057
6057
  sizeMap3[size] ?? sizeMap3.md,
6058
6058
  shapeMap[shape] ?? shapeMap.circle,
6059
6059
  variantMap[variant] ?? variantMap.secondary,
6060
- actualPressed && "scale-95 brightness-110 border-white",
6060
+ actualPressed && "scale-95 brightness-110 border-foreground",
6061
6061
  disabled && "opacity-50 cursor-not-allowed",
6062
6062
  className
6063
6063
  ),
6064
6064
  children: [
6065
- icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-2xl", children: icon }),
6065
+ icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-2xl", children: typeof icon === "string" ? (() => {
6066
+ const I = resolveIcon(icon);
6067
+ return I ? /* @__PURE__ */ jsxRuntime.jsx(I, { className: "w-6 h-6" }) : null;
6068
+ })() : icon }),
6066
6069
  label && !icon && /* @__PURE__ */ jsxRuntime.jsx("span", { children: label })
6067
6070
  ]
6068
6071
  }
@@ -6074,6 +6077,7 @@ var init_ControlButton = __esm({
6074
6077
  "use client";
6075
6078
  init_cn();
6076
6079
  init_useEventBus();
6080
+ init_Icon();
6077
6081
  sizeMap3 = {
6078
6082
  sm: "w-10 h-10 text-sm",
6079
6083
  md: "w-14 h-14 text-base",
@@ -6086,9 +6090,9 @@ var init_ControlButton = __esm({
6086
6090
  square: "rounded-md"
6087
6091
  };
6088
6092
  variantMap = {
6089
- primary: "bg-blue-600 text-[var(--color-foreground)] border-blue-400 hover:bg-blue-500",
6090
- secondary: "bg-[var(--color-surface,#374151)] text-[var(--color-foreground)] border-gray-500 hover:bg-gray-600",
6091
- ghost: "bg-transparent text-[var(--color-foreground)] border-white/30 hover:bg-white/10"
6093
+ primary: "bg-primary text-primary-foreground border-primary hover:bg-primary-hover",
6094
+ secondary: "bg-secondary text-secondary-foreground border-border hover:bg-secondary-hover",
6095
+ ghost: "bg-transparent text-foreground border-border hover:bg-muted"
6092
6096
  };
6093
6097
  ControlButton.displayName = "ControlButton";
6094
6098
  }
@@ -6816,8 +6820,8 @@ function ChoiceButton({
6816
6820
  className: cn(
6817
6821
  "w-full text-left px-4 py-2.5 rounded-md border transition-all duration-150",
6818
6822
  "flex items-center gap-2",
6819
- selected ? "bg-yellow-500/20 border-yellow-400 text-yellow-300" : "bg-white/5 border-white/10 text-[var(--color-foreground)] hover:bg-white/10 hover:border-white/30",
6820
- disabled && "opacity-40 cursor-not-allowed hover:bg-white/5 hover:border-white/10",
6823
+ selected ? "bg-accent/15 border-accent text-foreground" : "bg-muted/40 border-border text-foreground hover:bg-muted hover:border-border",
6824
+ disabled && "opacity-40 cursor-not-allowed hover:bg-muted/40 hover:border-border",
6821
6825
  className
6822
6826
  ),
6823
6827
  children: [
@@ -6826,7 +6830,7 @@ function ChoiceButton({
6826
6830
  {
6827
6831
  className: cn(
6828
6832
  "flex-shrink-0 font-mono font-bold text-sm",
6829
- selected ? "text-yellow-400" : "text-gray-500"
6833
+ selected ? "text-accent" : "text-muted-foreground"
6830
6834
  ),
6831
6835
  children: [
6832
6836
  index,
@@ -6867,7 +6871,7 @@ function ActionButton({
6867
6871
  disabled: isDisabled,
6868
6872
  onClick,
6869
6873
  className: cn(
6870
- "relative inline-flex items-center gap-1.5 rounded-md border font-medium text-[var(--color-foreground)] overflow-hidden transition-colors duration-150",
6874
+ "relative inline-flex items-center gap-1.5 rounded-md border font-medium overflow-hidden transition-colors duration-150",
6871
6875
  sizes.button,
6872
6876
  variantStyles8[variant],
6873
6877
  isDisabled && "opacity-60 cursor-not-allowed",
@@ -6877,7 +6881,7 @@ function ActionButton({
6877
6881
  onCooldown && /* @__PURE__ */ jsxRuntime.jsx(
6878
6882
  "div",
6879
6883
  {
6880
- className: "absolute inset-0 bg-black/60 pointer-events-none",
6884
+ className: "absolute inset-0 bg-foreground/40 pointer-events-none",
6881
6885
  style: {
6882
6886
  clipPath: `conic-gradient(from 0deg, transparent ${360 - cooldownDeg}deg, black ${360 - cooldownDeg}deg)`,
6883
6887
  WebkitClipPath: `conic-gradient(from 0deg, transparent ${360 - cooldownDeg}deg, black ${360 - cooldownDeg}deg)`,
@@ -6885,13 +6889,16 @@ function ActionButton({
6885
6889
  }
6886
6890
  }
6887
6891
  ),
6888
- icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("flex-shrink-0", sizes.icon), children: icon }),
6892
+ icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("flex-shrink-0", sizes.icon), children: typeof icon === "string" ? (() => {
6893
+ const I = resolveIcon(icon);
6894
+ return I ? /* @__PURE__ */ jsxRuntime.jsx(I, { className: "w-4 h-4" }) : null;
6895
+ })() : icon }),
6889
6896
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "relative z-10", children: label }),
6890
6897
  hotkey && /* @__PURE__ */ jsxRuntime.jsx(
6891
6898
  "span",
6892
6899
  {
6893
6900
  className: cn(
6894
- "absolute top-0.5 right-0.5 bg-black/50 text-gray-300 rounded font-mono leading-tight",
6901
+ "absolute top-0.5 right-0.5 bg-foreground/30 text-primary-foreground rounded font-mono leading-tight",
6895
6902
  sizes.hotkey
6896
6903
  ),
6897
6904
  children: hotkey
@@ -6905,15 +6912,16 @@ var sizeMap13, variantStyles8;
6905
6912
  var init_ActionButton = __esm({
6906
6913
  "components/atoms/game/ActionButton.tsx"() {
6907
6914
  init_cn();
6915
+ init_Icon();
6908
6916
  sizeMap13 = {
6909
6917
  sm: { button: "px-3 py-1.5 text-xs", hotkey: "text-[9px] px-1", icon: "text-xs" },
6910
6918
  md: { button: "px-4 py-2 text-sm", hotkey: "text-[10px] px-1.5", icon: "text-sm" },
6911
6919
  lg: { button: "px-5 py-2.5 text-base", hotkey: "text-xs px-2", icon: "text-base" }
6912
6920
  };
6913
6921
  variantStyles8 = {
6914
- primary: "bg-blue-600 hover:bg-blue-500 border-blue-400/40",
6915
- secondary: "bg-gray-700 hover:bg-gray-600 border-gray-500/40",
6916
- danger: "bg-red-700 hover:bg-red-600 border-red-400/40"
6922
+ primary: "bg-primary text-primary-foreground hover:bg-primary-hover border-primary",
6923
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary-hover border-border",
6924
+ danger: "bg-error text-error-foreground hover:bg-error/90 border-error"
6917
6925
  };
6918
6926
  ActionButton.displayName = "ActionButton";
6919
6927
  }
@@ -21565,7 +21573,7 @@ function DataGrid({
21565
21573
  onClick: handleActionClick(action, itemData),
21566
21574
  "data-testid": `action-${action.event}`,
21567
21575
  "data-row-id": String(itemData.id),
21568
- className: "text-error hover:bg-error/10 px-2",
21576
+ className: "text-error hover:text-error hover:bg-error/10 px-2",
21569
21577
  children: [
21570
21578
  action.icon && /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: action.icon, size: "xs" }),
21571
21579
  action.label
@@ -24158,7 +24166,7 @@ function StatBadge({
24158
24166
  const I = resolveIcon(icon);
24159
24167
  return I ? /* @__PURE__ */ jsxRuntime.jsx(I, { className: "w-4 h-4" }) : icon;
24160
24168
  })() : icon }),
24161
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-400 font-medium", children: label }),
24169
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground font-medium", children: label }),
24162
24170
  format === "hearts" && max && /* @__PURE__ */ jsxRuntime.jsx(
24163
24171
  HealthBar,
24164
24172
  {
@@ -24185,7 +24193,7 @@ function StatBadge({
24185
24193
  animated: true
24186
24194
  }
24187
24195
  ),
24188
- format === "text" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-bold text-[var(--color-foreground)]", children: value })
24196
+ format === "text" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-bold text-foreground", children: value })
24189
24197
  ]
24190
24198
  }
24191
24199
  );
@@ -24203,11 +24211,11 @@ var init_StatBadge = __esm({
24203
24211
  lg: "text-base px-4 py-2"
24204
24212
  };
24205
24213
  variantMap2 = {
24206
- default: "bg-[var(--color-card)]/80 border-gray-700",
24207
- primary: "bg-blue-900/80 border-blue-700",
24208
- success: "bg-green-900/80 border-green-700",
24209
- warning: "bg-yellow-900/80 border-yellow-700",
24210
- danger: "bg-red-900/80 border-red-700"
24214
+ default: "bg-card/80 border-border text-foreground",
24215
+ primary: "bg-primary/15 border-primary/40 text-foreground",
24216
+ success: "bg-success/15 border-success/40 text-foreground",
24217
+ warning: "bg-warning/15 border-warning/40 text-foreground",
24218
+ danger: "bg-error/15 border-error/40 text-foreground"
24211
24219
  };
24212
24220
  StatBadge.displayName = "StatBadge";
24213
24221
  }
@@ -36780,9 +36788,45 @@ var init_List = __esm({
36780
36788
  List3.displayName = "List";
36781
36789
  }
36782
36790
  });
36783
- var DefaultEmptyDetail, MasterDetail;
36791
+ function MasterDetail({
36792
+ entity,
36793
+ masterFields,
36794
+ detailFields: _detailFields,
36795
+ // Captured but not used here - detail handled separately
36796
+ loading: externalLoading,
36797
+ isLoading: externalIsLoading,
36798
+ error: externalError,
36799
+ className,
36800
+ ...rest
36801
+ }) {
36802
+ const loading = externalLoading ?? false;
36803
+ const isLoading = externalIsLoading ?? false;
36804
+ const error = externalError ?? null;
36805
+ return /* @__PURE__ */ jsxRuntime.jsx(
36806
+ DataTable,
36807
+ {
36808
+ fields: masterFields,
36809
+ columns: masterFields,
36810
+ entity,
36811
+ isLoading: loading || isLoading,
36812
+ error,
36813
+ className,
36814
+ emptyTitle: "No items found",
36815
+ emptyDescription: "Create your first item to get started.",
36816
+ ...rest
36817
+ }
36818
+ );
36819
+ }
36784
36820
  var init_MasterDetail = __esm({
36785
- "components/organisms/layout/MasterDetail.tsx"() {
36821
+ "components/organisms/MasterDetail.tsx"() {
36822
+ "use client";
36823
+ init_DataTable();
36824
+ MasterDetail.displayName = "MasterDetail";
36825
+ }
36826
+ });
36827
+ var DefaultEmptyDetail, MasterDetailLayout;
36828
+ var init_MasterDetailLayout = __esm({
36829
+ "components/organisms/layout/MasterDetailLayout.tsx"() {
36786
36830
  init_cn();
36787
36831
  init_Typography();
36788
36832
  DefaultEmptyDetail = () => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center h-full border-2 border-dashed border-border", children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -36793,7 +36837,7 @@ var init_MasterDetail = __esm({
36793
36837
  children: "Select an item to view details"
36794
36838
  }
36795
36839
  ) });
36796
- MasterDetail = ({
36840
+ MasterDetailLayout = ({
36797
36841
  master,
36798
36842
  detail,
36799
36843
  emptyDetail,
@@ -36828,7 +36872,7 @@ var init_MasterDetail = __esm({
36828
36872
  }
36829
36873
  );
36830
36874
  };
36831
- MasterDetail.displayName = "MasterDetail";
36875
+ MasterDetailLayout.displayName = "MasterDetailLayout";
36832
36876
  }
36833
36877
  });
36834
36878
  var COLUMN_CLASSES, ASPECT_CLASSES, MediaGallery;
@@ -43564,6 +43608,7 @@ var init_component_registry_generated = __esm({
43564
43608
  init_LoadingState();
43565
43609
  init_MarkdownContent();
43566
43610
  init_MasterDetail();
43611
+ init_MasterDetailLayout();
43567
43612
  init_MatrixQuestion();
43568
43613
  init_MediaGallery();
43569
43614
  init_Meter();
@@ -43858,6 +43903,7 @@ var init_component_registry_generated = __esm({
43858
43903
  "MapViewPattern": MapViewPattern,
43859
43904
  "MarkdownContent": MarkdownContent,
43860
43905
  "MasterDetail": MasterDetail,
43906
+ "MasterDetailLayout": MasterDetailLayout,
43861
43907
  "MatrixQuestion": MatrixQuestion,
43862
43908
  "MediaGallery": MediaGallery,
43863
43909
  "Menu": MenuPattern,