@almadar/ui 2.13.0 → 2.13.2

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.
@@ -12254,6 +12254,7 @@ var DataGrid = ({
12254
12254
  Box,
12255
12255
  {
12256
12256
  "data-entity-row": true,
12257
+ "data-entity-id": id,
12257
12258
  className: cn(
12258
12259
  "bg-[var(--color-card)] rounded-[var(--radius-lg)]",
12259
12260
  "border border-[var(--color-border)]",
@@ -12272,6 +12273,7 @@ var DataGrid = ({
12272
12273
  Box,
12273
12274
  {
12274
12275
  "data-entity-row": true,
12276
+ "data-entity-id": id,
12275
12277
  className: cn(
12276
12278
  "bg-[var(--color-card)] rounded-[var(--radius-lg)]",
12277
12279
  "border border-[var(--color-border)]",
@@ -12581,7 +12583,7 @@ var DataList = ({
12581
12583
  const renderItem = (itemData, index, isLast) => {
12582
12584
  if (hasRenderProp) {
12583
12585
  const id2 = itemData.id || String(index);
12584
- return /* @__PURE__ */ jsxs(Box, { "data-entity-row": true, children: [
12586
+ return /* @__PURE__ */ jsxs(Box, { "data-entity-row": true, "data-entity-id": id2, children: [
12585
12587
  /* @__PURE__ */ jsxs(
12586
12588
  Box,
12587
12589
  {
@@ -12628,7 +12630,7 @@ var DataList = ({
12628
12630
  }
12629
12631
  const id = itemData.id || String(index);
12630
12632
  const titleValue = getNestedValue(itemData, titleField?.name ?? "");
12631
- return /* @__PURE__ */ jsxs(Box, { "data-entity-row": true, children: [
12633
+ return /* @__PURE__ */ jsxs(Box, { "data-entity-row": true, "data-entity-id": id, children: [
12632
12634
  /* @__PURE__ */ jsxs(
12633
12635
  Box,
12634
12636
  {
@@ -1,4 +1,4 @@
1
- import { SuspenseConfigProvider } from './chunk-2GI2TR4Y.js';
1
+ import { SuspenseConfigProvider } from './chunk-77CBR3Z7.js';
2
2
  import { ThemeProvider } from './chunk-DKQN5FVU.js';
3
3
  import { SelectionProvider, EntityDataProvider } from './chunk-Y7IHEYYE.js';
4
4
  import { useEventBus, EventBusProvider } from './chunk-YXZM3WCF.js';
@@ -8751,8 +8751,36 @@ type GameAction = {
8751
8751
  } | {
8752
8752
  type: 'EXECUTE_TRAITS';
8753
8753
  };
8754
+ /**
8755
+ * Create the initial game state with board and units.
8756
+ *
8757
+ * @param {number} width - Board width in tiles
8758
+ * @param {number} height - Board height in tiles
8759
+ * @param {GameUnit[]} units - Initial units to place on the board
8760
+ * @param {string} [defaultTerrain] - Default terrain type for empty tiles
8761
+ * @returns {GameState} The initialized game state
8762
+ */
8754
8763
  declare function createInitialGameState(width: number, height: number, units: GameUnit[], defaultTerrain?: string): GameState;
8764
+ /**
8765
+ * Calculate valid movement positions for a unit.
8766
+ *
8767
+ * Returns all tiles within the unit's movement range that are
8768
+ * not blocked and don't contain other units.
8769
+ *
8770
+ * @param {GameState} state - Current game state
8771
+ * @param {string} unitId - ID of the unit to calculate moves for
8772
+ * @returns {Position[]} Array of valid move positions
8773
+ */
8755
8774
  declare function calculateValidMoves(state: GameState, unitId: string): Position[];
8775
+ /**
8776
+ * Calculate valid attack targets for a unit.
8777
+ *
8778
+ * Returns adjacent positions containing enemy units that can be attacked.
8779
+ *
8780
+ * @param {GameState} state - Current game state
8781
+ * @param {string} unitId - ID of the unit to calculate targets for
8782
+ * @returns {Position[]} Array of valid attack target positions
8783
+ */
8756
8784
  declare function calculateAttackTargets(state: GameState, unitId: string): Position[];
8757
8785
 
8758
8786
  /**
@@ -8782,6 +8810,16 @@ interface CombatEffect {
8782
8810
  sound?: string;
8783
8811
  }
8784
8812
  declare const combatEffects: Record<string, CombatEffect>;
8813
+ /**
8814
+ * Apply a temporary combat effect to an HTML element.
8815
+ *
8816
+ * Adds the effect's CSS class to the element and removes it after
8817
+ * the effect duration completes.
8818
+ *
8819
+ * @param {HTMLElement} element - The DOM element to apply the effect to
8820
+ * @param {CombatEffect} effect - The combat effect to apply
8821
+ * @param {() => void} [onComplete] - Optional callback when effect completes
8822
+ */
8785
8823
  declare function applyTemporaryEffect(element: HTMLElement, effect: CombatEffect, onComplete?: () => void): void;
8786
8824
  interface DamageResult {
8787
8825
  baseDamage: number;
@@ -8790,6 +8828,15 @@ interface DamageResult {
8790
8828
  isBlocked: boolean;
8791
8829
  damageReduction: number;
8792
8830
  }
8831
+ /**
8832
+ * Calculate combat damage with defense and critical hit mechanics.
8833
+ *
8834
+ * @param {number} attack - Attacker's attack power
8835
+ * @param {number} defense - Defender's defense power
8836
+ * @param {boolean} [isDefending] - Whether defender is in defend stance (doubles defense)
8837
+ * @param {number} [criticalChance] - Probability of critical hit (0-1, default 0.1)
8838
+ * @returns {DamageResult} Calculated damage with critical/block info
8839
+ */
8793
8840
  declare function calculateDamage(attack: number, defense: number, isDefending?: boolean, criticalChance?: number): DamageResult;
8794
8841
  type CombatEventType = 'attack' | 'critical' | 'defend' | 'heal' | 'defeat' | 'level_up' | 'state_change';
8795
8842
  interface CombatEventData {
@@ -4,8 +4,8 @@ export { ENTITY_EVENTS, useAgentChat, useAuthContext, useCompile, useConnectGitH
4
4
  export { clearEntities, getAllEntities, getByType, getEntity, getSingleton, removeEntity, spawnEntity, updateEntity, updateSingleton } from '../chunk-N7MVUW4R.js';
5
5
  import { subscribeToTraitChanges, getAllTraits } from '../chunk-42YQ6JVR.js';
6
6
  import '../chunk-3HJHHULT.js';
7
- import { VStack, HStack, Typography, Button, Icon, Box, Card, Avatar, Badge, SearchInput, Checkbox, Menu as Menu$1, Pagination, LoadingState, EmptyState, Modal, ErrorState, QuizBlock, CodeBlock, ScaledDiagram, MarkdownContent, Divider, ProgressBar, isoToScreen, IsometricCanvas_default, Stack, Select, Drawer, Toast, Tabs, Input, ThemeToggle, TILE_WIDTH, EntityDisplayEvents, StateIndicator, Accordion, ButtonGroup, Container } from '../chunk-2GI2TR4Y.js';
8
- export { ALL_PRESETS, Accordion, ActionButton, ActionButtons, Card2 as ActionCard, Alert, AnimatedCounter, Avatar, Badge, Box, Breadcrumb, Button, ButtonGroup, CalendarGrid, CanvasEffect, Card, CardBody, CardContent, CardFooter, CardGrid, CardHeader, CardTitle, Carousel, Center, Chart, ChartLegend, Checkbox, ChoiceButton, CodeBlock, CombatLog, ComboCounter, ConditionalWrapper, ConfettiEffect, Container, ControlButton, CraftingRecipe, DIAMOND_TOP_Y, DPad, DamageNumber, DataGrid, DataList, DataTable, DateRangeSelector, DayCell, DetailPanel, DialogueBox, DialogueBubble, Divider, Drawer, EmptyState, EnemyPlate, EntityDisplayEvents, ErrorBoundary, ErrorState, FEATURE_COLORS, FLOOR_HEIGHT, FilterGroup, Flex, FlipCard, FlipContainer, FloatingActionButton, Form, FormField, FormSectionHeader, GameCanvas2D, GameHud, GameMenu, GameOverScreen, GraphView, Grid, HStack, Heading, HealthBar, HealthPanel, Icon, InfiniteScrollSentinel, Input, InputGroup, InventoryGrid, InventoryPanel, IsometricCanvas, ItemSlot, Label, LawReferenceTooltip, Lightbox, LineChart, LoadingState, MapView, MarkdownContent, MasterDetail, Menu, Meter, MiniMap, Modal, NumberStepper, Overlay, PageHeader, Pagination, PlatformerCanvas, Popover, PowerupSlots, ProgressBar, ProgressDots, PullToRefresh, QuestTracker, QuizBlock, Radio, RangeSlider, RelationSelect, RepeatableFormSection, ResourceBar, ResourceCounter, ScaledDiagram, ScoreBoard, ScoreDisplay, SearchInput, Select, SidePanel, SimpleGrid, SimulationCanvas, SimulationControls, SimulationGraph, Skeleton, SlotContentRenderer, SortableList, Spacer, Spinner, Sprite, Stack, StarRating, StatBadge, StatCard, StatDisplay, StateIndicator, StatusDot, StatusEffect, SwipeableRow, Switch, TILE_HEIGHT, TILE_WIDTH, Tabs, Text, TextHighlight, Textarea, ThemeSelector, ThemeToggle, TimeSlotCell, TimerDisplay, Toast, Tooltip, TrendIndicator, TurnIndicator, TurnPanel, TypewriterText, Typography, UISlotComponent, UISlotRenderer, UnitCommandBar, UploadDropZone, VStack, ViolationAlert, WaypointMarker, WizardNavigation, WizardProgress, XPBar, drawSprite, isoToScreen, pendulum, projectileMotion, screenToIso, springOscillator, useCamera, useImageCache } from '../chunk-2GI2TR4Y.js';
7
+ import { VStack, HStack, Typography, Button, Icon, Box, Card, Avatar, Badge, SearchInput, Checkbox, Menu as Menu$1, Pagination, LoadingState, EmptyState, Modal, ErrorState, QuizBlock, CodeBlock, ScaledDiagram, MarkdownContent, Divider, ProgressBar, isoToScreen, IsometricCanvas_default, Stack, Select, Drawer, Toast, Tabs, Input, ThemeToggle, TILE_WIDTH, EntityDisplayEvents, StateIndicator, Accordion, ButtonGroup, Container } from '../chunk-77CBR3Z7.js';
8
+ export { ALL_PRESETS, Accordion, ActionButton, ActionButtons, Card2 as ActionCard, Alert, AnimatedCounter, Avatar, Badge, Box, Breadcrumb, Button, ButtonGroup, CalendarGrid, CanvasEffect, Card, CardBody, CardContent, CardFooter, CardGrid, CardHeader, CardTitle, Carousel, Center, Chart, ChartLegend, Checkbox, ChoiceButton, CodeBlock, CombatLog, ComboCounter, ConditionalWrapper, ConfettiEffect, Container, ControlButton, CraftingRecipe, DIAMOND_TOP_Y, DPad, DamageNumber, DataGrid, DataList, DataTable, DateRangeSelector, DayCell, DetailPanel, DialogueBox, DialogueBubble, Divider, Drawer, EmptyState, EnemyPlate, EntityDisplayEvents, ErrorBoundary, ErrorState, FEATURE_COLORS, FLOOR_HEIGHT, FilterGroup, Flex, FlipCard, FlipContainer, FloatingActionButton, Form, FormField, FormSectionHeader, GameCanvas2D, GameHud, GameMenu, GameOverScreen, GraphView, Grid, HStack, Heading, HealthBar, HealthPanel, Icon, InfiniteScrollSentinel, Input, InputGroup, InventoryGrid, InventoryPanel, IsometricCanvas, ItemSlot, Label, LawReferenceTooltip, Lightbox, LineChart, LoadingState, MapView, MarkdownContent, MasterDetail, Menu, Meter, MiniMap, Modal, NumberStepper, Overlay, PageHeader, Pagination, PlatformerCanvas, Popover, PowerupSlots, ProgressBar, ProgressDots, PullToRefresh, QuestTracker, QuizBlock, Radio, RangeSlider, RelationSelect, RepeatableFormSection, ResourceBar, ResourceCounter, ScaledDiagram, ScoreBoard, ScoreDisplay, SearchInput, Select, SidePanel, SimpleGrid, SimulationCanvas, SimulationControls, SimulationGraph, Skeleton, SlotContentRenderer, SortableList, Spacer, Spinner, Sprite, Stack, StarRating, StatBadge, StatCard, StatDisplay, StateIndicator, StatusDot, StatusEffect, SwipeableRow, Switch, TILE_HEIGHT, TILE_WIDTH, Tabs, Text, TextHighlight, Textarea, ThemeSelector, ThemeToggle, TimeSlotCell, TimerDisplay, Toast, Tooltip, TrendIndicator, TurnIndicator, TurnPanel, TypewriterText, Typography, UISlotComponent, UISlotRenderer, UnitCommandBar, UploadDropZone, VStack, ViolationAlert, WaypointMarker, WizardNavigation, WizardProgress, XPBar, drawSprite, isoToScreen, pendulum, projectileMotion, screenToIso, springOscillator, useCamera, useImageCache } from '../chunk-77CBR3Z7.js';
9
9
  import '../chunk-DKQN5FVU.js';
10
10
  import { useTranslate } from '../chunk-Y7IHEYYE.js';
11
11
  export { EntityDataProvider, I18nProvider, createTranslate, entityDataKeys, parseQueryBinding, useDragReorder, useEntity, useEntityDataAdapter, useEntityDetail, useEntityList, useEntityListSuspense, useEntitySuspense, useInfiniteScroll, useLongPress, usePullToRefresh, useQuerySingleton, useSwipeGesture, useTranslate } from '../chunk-Y7IHEYYE.js';
@@ -1,5 +1,5 @@
1
- export { FetchedDataContext, FetchedDataProvider, OfflineModeProvider, OrbitalProvider, VerificationProvider, useFetchedData, useFetchedDataContext, useFetchedEntity, useOfflineMode, useOptionalOfflineMode } from '../chunk-UYR7S2DP.js';
2
- import '../chunk-2GI2TR4Y.js';
1
+ export { FetchedDataContext, FetchedDataProvider, OfflineModeProvider, OrbitalProvider, VerificationProvider, useFetchedData, useFetchedDataContext, useFetchedEntity, useOfflineMode, useOptionalOfflineMode } from '../chunk-ZW5N4AUU.js';
2
+ import '../chunk-77CBR3Z7.js';
3
3
  import '../chunk-DKQN5FVU.js';
4
4
  export { SelectionContext, SelectionProvider, useSelection, useSelectionOptional } from '../chunk-Y7IHEYYE.js';
5
5
  export { EventBusContext, EventBusProvider } from '../chunk-YXZM3WCF.js';
@@ -2,8 +2,8 @@ import '../chunk-PERGHHON.js';
2
2
  import '../chunk-N7MVUW4R.js';
3
3
  import { registerTrait, unregisterTrait, updateTraitState } from '../chunk-42YQ6JVR.js';
4
4
  import '../chunk-3HJHHULT.js';
5
- import { useFetchedDataContext } from '../chunk-UYR7S2DP.js';
6
- import '../chunk-2GI2TR4Y.js';
5
+ import { useFetchedDataContext } from '../chunk-ZW5N4AUU.js';
6
+ import '../chunk-77CBR3Z7.js';
7
7
  import '../chunk-DKQN5FVU.js';
8
8
  import '../chunk-Y7IHEYYE.js';
9
9
  import { useEventBus } from '../chunk-YXZM3WCF.js';
@@ -107,6 +107,8 @@ function useTraitStateMachine(traitBindings, slotsActions, options) {
107
107
  const [traitStates, setTraitStates] = useState(() => {
108
108
  return manager.getAllStates();
109
109
  });
110
+ const eventQueueRef = useRef([]);
111
+ const processingRef = useRef(false);
110
112
  const traitBindingsRef = useRef(traitBindings);
111
113
  const managerRef = useRef(manager);
112
114
  const slotsActionsRef = useRef(slotsActions);
@@ -311,7 +313,7 @@ function useTraitStateMachine(traitBindings, slotsActions, options) {
311
313
  for (const id of intervals) clearInterval(id);
312
314
  };
313
315
  }, [traitBindings, runTickEffects]);
314
- const processEvent = useCallback((eventKey, payload) => {
316
+ const processEventQueued = useCallback(async (eventKey, payload) => {
315
317
  const normalizedEvent = normalizeEventKey(eventKey);
316
318
  const bindings = traitBindingsRef.current;
317
319
  const currentManager = managerRef.current;
@@ -443,7 +445,8 @@ function useTraitStateMachine(traitBindings, slotsActions, options) {
443
445
  entityId
444
446
  };
445
447
  const executor = new EffectExecutor({ handlers, bindings: bindingCtx, context: effectContext });
446
- executor.executeAll(result.effects).then(() => {
448
+ try {
449
+ await executor.executeAll(result.effects);
447
450
  console.log(
448
451
  "[TraitStateMachine] After executeAll, pendingSlots:",
449
452
  Object.fromEntries(pendingSlots.entries())
@@ -464,14 +467,14 @@ function useTraitStateMachine(traitBindings, slotsActions, options) {
464
467
  fetchedDataContext.setData({ [linkedEntity]: updated });
465
468
  }
466
469
  }
467
- }).catch((error) => {
470
+ } catch (error) {
468
471
  console.error(
469
472
  "[TraitStateMachine] Effect execution error:",
470
473
  error,
471
474
  "| effects:",
472
475
  JSON.stringify(result.effects)
473
476
  );
474
- });
477
+ }
475
478
  } else if (!result.executed) {
476
479
  if (result.guardResult === false) {
477
480
  console.log(
@@ -533,9 +536,28 @@ function useTraitStateMachine(traitBindings, slotsActions, options) {
533
536
  onEventProcessed(normalizedEvent, payload);
534
537
  }
535
538
  }, [entities, fetchedDataContext, eventBus]);
539
+ const drainEventQueue = useCallback(async () => {
540
+ if (processingRef.current) return;
541
+ processingRef.current = true;
542
+ try {
543
+ while (eventQueueRef.current.length > 0) {
544
+ const entry = eventQueueRef.current.shift();
545
+ await processEventQueued(entry.eventKey, entry.payload);
546
+ }
547
+ } finally {
548
+ processingRef.current = false;
549
+ }
550
+ }, [processEventQueued]);
551
+ const enqueueAndDrain = useCallback((eventKey, payload) => {
552
+ eventQueueRef.current.push({ eventKey, payload });
553
+ void drainEventQueue();
554
+ }, [drainEventQueue]);
555
+ useCallback((eventKey, payload) => {
556
+ enqueueAndDrain(eventKey, payload);
557
+ }, [enqueueAndDrain]);
536
558
  const sendEvent = useCallback((eventKey, payload) => {
537
- processEvent(eventKey, payload);
538
- }, [processEvent]);
559
+ enqueueAndDrain(eventKey, payload);
560
+ }, [enqueueAndDrain]);
539
561
  const getTraitState = useCallback((traitName) => {
540
562
  return managerRef.current.getState(traitName);
541
563
  }, []);
@@ -561,7 +583,7 @@ function useTraitStateMachine(traitBindings, slotsActions, options) {
561
583
  }
562
584
  const unsub = eventBus.on(`UI:${eventKey}`, (event) => {
563
585
  console.log("[TraitStateMachine] Received event:", `UI:${eventKey}`, event);
564
- processEvent(eventKey, event.payload);
586
+ enqueueAndDrain(eventKey, event.payload);
565
587
  });
566
588
  unsubscribes.push(unsub);
567
589
  }
@@ -570,7 +592,7 @@ function useTraitStateMachine(traitBindings, slotsActions, options) {
570
592
  unsub();
571
593
  }
572
594
  };
573
- }, [traitBindings, eventBus, processEvent]);
595
+ }, [traitBindings, eventBus, enqueueAndDrain]);
574
596
  return {
575
597
  traitStates,
576
598
  sendEvent,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@almadar/ui",
3
- "version": "2.13.0",
3
+ "version": "2.13.2",
4
4
  "description": "React UI components, hooks, and providers for Almadar",
5
5
  "type": "module",
6
6
  "main": "./dist/components/index.js",
package/themes/arctic.css CHANGED
@@ -25,8 +25,8 @@
25
25
  /* Border radius - Precise, clean */
26
26
  --radius-none: 0px;
27
27
  --radius-sm: 4px;
28
- --radius-md: 6px;
29
- --radius-lg: 10px;
28
+ --radius-md: 8px;
29
+ --radius-lg: 12px;
30
30
  --radius-xl: 14px;
31
31
  --radius-full: 9999px;
32
32
 
@@ -71,7 +71,7 @@
71
71
 
72
72
  /* Typography */
73
73
  --font-family:
74
- "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
74
+ "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
75
75
  --font-weight-normal: 400;
76
76
  --font-weight-medium: 500;
77
77
  --font-weight-bold: 600;
@@ -119,8 +119,8 @@
119
119
  /* Border radius - Precise, clean */
120
120
  --radius-none: 0px;
121
121
  --radius-sm: 4px;
122
- --radius-md: 6px;
123
- --radius-lg: 10px;
122
+ --radius-md: 8px;
123
+ --radius-lg: 12px;
124
124
  --radius-xl: 14px;
125
125
  --radius-full: 9999px;
126
126
 
@@ -165,7 +165,7 @@
165
165
 
166
166
  /* Typography */
167
167
  --font-family:
168
- "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
168
+ "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
169
169
  --font-weight-normal: 400;
170
170
  --font-weight-medium: 500;
171
171
  --font-weight-bold: 600;
package/themes/copper.css CHANGED
@@ -71,7 +71,7 @@
71
71
 
72
72
  /* Typography - Heavier weights, functional */
73
73
  --font-family:
74
- "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
74
+ "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
75
75
  --font-weight-normal: 500;
76
76
  --font-weight-medium: 600;
77
77
  --font-weight-bold: 700;
@@ -165,7 +165,7 @@
165
165
 
166
166
  /* Typography - Heavier weights, functional */
167
167
  --font-family:
168
- "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
168
+ "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
169
169
  --font-weight-normal: 500;
170
170
  --font-weight-medium: 600;
171
171
  --font-weight-bold: 700;
package/themes/ember.css CHANGED
@@ -26,8 +26,8 @@
26
26
  /* Border radius - Controlled, not too rounded */
27
27
  --radius-none: 0px;
28
28
  --radius-sm: 4px;
29
- --radius-md: 6px;
30
- --radius-lg: 8px;
29
+ --radius-md: 8px;
30
+ --radius-lg: 12px;
31
31
  --radius-xl: 12px;
32
32
  --radius-full: 9999px;
33
33
 
@@ -72,7 +72,7 @@
72
72
 
73
73
  /* Typography - Bold, heavy */
74
74
  --font-family:
75
- "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
75
+ "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
76
76
  --font-weight-normal: 500;
77
77
  --font-weight-medium: 600;
78
78
  --font-weight-bold: 800;
@@ -122,8 +122,8 @@
122
122
  /* Border radius - Controlled, not too rounded */
123
123
  --radius-none: 0px;
124
124
  --radius-sm: 4px;
125
- --radius-md: 6px;
126
- --radius-lg: 8px;
125
+ --radius-md: 8px;
126
+ --radius-lg: 12px;
127
127
  --radius-xl: 12px;
128
128
  --radius-full: 9999px;
129
129
 
@@ -168,7 +168,7 @@
168
168
 
169
169
  /* Typography - Bold, heavy */
170
170
  --font-family:
171
- "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
171
+ "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
172
172
  --font-weight-normal: 500;
173
173
  --font-weight-medium: 600;
174
174
  --font-weight-bold: 800;
package/themes/forest.css CHANGED
@@ -72,7 +72,7 @@
72
72
 
73
73
  /* Typography - Natural, grounded */
74
74
  --font-family:
75
- "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
75
+ "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
76
76
  --font-weight-normal: 400;
77
77
  --font-weight-medium: 500;
78
78
  --font-weight-bold: 600;
@@ -168,7 +168,7 @@
168
168
 
169
169
  /* Typography - Natural, grounded */
170
170
  --font-family:
171
- "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
171
+ "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
172
172
  --font-weight-normal: 400;
173
173
  --font-weight-medium: 500;
174
174
  --font-weight-bold: 600;
@@ -69,7 +69,7 @@
69
69
 
70
70
  /* Typography - Clean, slightly loose */
71
71
  --font-family:
72
- "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
72
+ "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
73
73
  --font-weight-normal: 400;
74
74
  --font-weight-medium: 500;
75
75
  --font-weight-bold: 600;
@@ -163,7 +163,7 @@
163
163
 
164
164
  /* Typography */
165
165
  --font-family:
166
- "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
166
+ "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
167
167
  --font-weight-normal: 400;
168
168
  --font-weight-medium: 500;
169
169
  --font-weight-bold: 600;
@@ -70,7 +70,7 @@
70
70
 
71
71
  /* Typography - Wide, elegant */
72
72
  --font-family:
73
- "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
73
+ "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
74
74
  --font-weight-normal: 300;
75
75
  --font-weight-medium: 450;
76
76
  --font-weight-bold: 600;
@@ -164,7 +164,7 @@
164
164
 
165
165
  /* Typography */
166
166
  --font-family:
167
- "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
167
+ "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
168
168
  --font-weight-normal: 300;
169
169
  --font-weight-medium: 450;
170
170
  --font-weight-bold: 600;
@@ -23,8 +23,8 @@
23
23
  /* Border radius - Gentle curves */
24
24
  --radius-none: 0px;
25
25
  --radius-sm: 4px;
26
- --radius-md: 8px;
27
- --radius-lg: 12px;
26
+ --radius-md: 10px;
27
+ --radius-lg: 14px;
28
28
  --radius-xl: 16px;
29
29
  --radius-full: 9999px;
30
30
 
@@ -48,7 +48,7 @@
48
48
  --color-muted: #f4f4f5;
49
49
  --color-muted-foreground: #71717a;
50
50
 
51
- --color-background: #ffffff;
51
+ --color-background: #f8fafc;
52
52
  --color-foreground: #18181b;
53
53
  --color-card: #ffffff;
54
54
  --color-card-foreground: #18181b;
@@ -69,7 +69,7 @@
69
69
 
70
70
  /* Typography - Light, elegant */
71
71
  --font-family:
72
- "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
72
+ "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
73
73
  --font-weight-normal: 400;
74
74
  --font-weight-medium: 500;
75
75
  --font-weight-bold: 600;
@@ -117,8 +117,8 @@
117
117
  /* Border radius - Gentle curves */
118
118
  --radius-none: 0px;
119
119
  --radius-sm: 4px;
120
- --radius-md: 8px;
121
- --radius-lg: 12px;
120
+ --radius-md: 10px;
121
+ --radius-lg: 14px;
122
122
  --radius-xl: 16px;
123
123
  --radius-full: 9999px;
124
124
 
@@ -163,7 +163,7 @@
163
163
 
164
164
  /* Typography */
165
165
  --font-family:
166
- "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
166
+ "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
167
167
  --font-weight-normal: 400;
168
168
  --font-weight-medium: 500;
169
169
  --font-weight-bold: 600;
package/themes/neon.css CHANGED
@@ -26,8 +26,8 @@
26
26
  /* Border radius - Sharp, tech aesthetic */
27
27
  --radius-none: 0px;
28
28
  --radius-sm: 2px;
29
- --radius-md: 4px;
30
- --radius-lg: 6px;
29
+ --radius-md: 6px;
30
+ --radius-lg: 10px;
31
31
  --radius-xl: 6px;
32
32
  --radius-full: 9999px;
33
33
 
@@ -72,7 +72,7 @@
72
72
 
73
73
  /* Typography - Wide, tech */
74
74
  --font-family:
75
- "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
75
+ "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
76
76
  --font-weight-normal: 500;
77
77
  --font-weight-medium: 600;
78
78
  --font-weight-bold: 800;
@@ -124,8 +124,8 @@
124
124
  /* Border radius - Sharp, tech aesthetic */
125
125
  --radius-none: 0px;
126
126
  --radius-sm: 2px;
127
- --radius-md: 4px;
128
- --radius-lg: 6px;
127
+ --radius-md: 6px;
128
+ --radius-lg: 10px;
129
129
  --radius-xl: 6px;
130
130
  --radius-full: 9999px;
131
131
 
@@ -170,7 +170,7 @@
170
170
 
171
171
  /* Typography - Wide, tech */
172
172
  --font-family:
173
- "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
173
+ "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
174
174
  --font-weight-normal: 500;
175
175
  --font-weight-medium: 600;
176
176
  --font-weight-bold: 800;
package/themes/ocean.css CHANGED
@@ -72,7 +72,7 @@
72
72
 
73
73
  /* Typography - Clean, spacious */
74
74
  --font-family:
75
- "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
75
+ "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
76
76
  --font-weight-normal: 400;
77
77
  --font-weight-medium: 500;
78
78
  --font-weight-bold: 600;
@@ -168,7 +168,7 @@
168
168
 
169
169
  /* Typography - Clean, spacious */
170
170
  --font-family:
171
- "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
171
+ "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
172
172
  --font-weight-normal: 400;
173
173
  --font-weight-medium: 500;
174
174
  --font-weight-bold: 600;
package/themes/rose.css CHANGED
@@ -69,7 +69,7 @@
69
69
 
70
70
  /* Typography - Light, elegant */
71
71
  --font-family:
72
- "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
72
+ "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
73
73
  --font-weight-normal: 300;
74
74
  --font-weight-medium: 450;
75
75
  --font-weight-bold: 600;
@@ -163,7 +163,7 @@
163
163
 
164
164
  /* Typography */
165
165
  --font-family:
166
- "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
166
+ "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
167
167
  --font-weight-normal: 300;
168
168
  --font-weight-medium: 450;
169
169
  --font-weight-bold: 600;
package/themes/sand.css CHANGED
@@ -24,8 +24,8 @@
24
24
  /* Border radius - Natural, soft */
25
25
  --radius-none: 0px;
26
26
  --radius-sm: 6px;
27
- --radius-md: 8px;
28
- --radius-lg: 12px;
27
+ --radius-md: 10px;
28
+ --radius-lg: 14px;
29
29
  --radius-xl: 16px;
30
30
  --radius-full: 9999px;
31
31
 
@@ -70,7 +70,7 @@
70
70
 
71
71
  /* Typography */
72
72
  --font-family:
73
- "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
73
+ "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
74
74
  --font-weight-normal: 400;
75
75
  --font-weight-medium: 500;
76
76
  --font-weight-bold: 600;
@@ -118,8 +118,8 @@
118
118
  /* Border radius - Natural, soft */
119
119
  --radius-none: 0px;
120
120
  --radius-sm: 6px;
121
- --radius-md: 8px;
122
- --radius-lg: 12px;
121
+ --radius-md: 10px;
122
+ --radius-lg: 14px;
123
123
  --radius-xl: 16px;
124
124
  --radius-full: 9999px;
125
125
 
@@ -164,7 +164,7 @@
164
164
 
165
165
  /* Typography */
166
166
  --font-family:
167
- "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
167
+ "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
168
168
  --font-weight-normal: 400;
169
169
  --font-weight-medium: 500;
170
170
  --font-weight-bold: 600;
package/themes/slate.css CHANGED
@@ -24,8 +24,8 @@
24
24
  /* Border radius - Almost sharp, corporate */
25
25
  --radius-none: 0px;
26
26
  --radius-sm: 2px;
27
- --radius-md: 4px;
28
- --radius-lg: 6px;
27
+ --radius-md: 6px;
28
+ --radius-lg: 10px;
29
29
  --radius-xl: 8px;
30
30
  --radius-full: 9999px;
31
31
 
@@ -70,7 +70,7 @@
70
70
 
71
71
  /* Typography */
72
72
  --font-family:
73
- "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
73
+ "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
74
74
  --font-weight-normal: 400;
75
75
  --font-weight-medium: 500;
76
76
  --font-weight-bold: 700;
@@ -117,8 +117,8 @@
117
117
  /* Border radius - Almost sharp, corporate */
118
118
  --radius-none: 0px;
119
119
  --radius-sm: 2px;
120
- --radius-md: 4px;
121
- --radius-lg: 6px;
120
+ --radius-md: 6px;
121
+ --radius-lg: 10px;
122
122
  --radius-xl: 8px;
123
123
  --radius-full: 9999px;
124
124
 
@@ -163,7 +163,7 @@
163
163
 
164
164
  /* Typography */
165
165
  --font-family:
166
- "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
166
+ "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
167
167
  --font-weight-normal: 400;
168
168
  --font-weight-medium: 500;
169
169
  --font-weight-bold: 700;
package/themes/sunset.css CHANGED
@@ -72,7 +72,7 @@
72
72
 
73
73
  /* Typography - Tight, expressive */
74
74
  --font-family:
75
- "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
75
+ "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
76
76
  --font-weight-normal: 400;
77
77
  --font-weight-medium: 500;
78
78
  --font-weight-bold: 600;
@@ -168,7 +168,7 @@
168
168
 
169
169
  /* Typography - Tight, expressive */
170
170
  --font-family:
171
- "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
171
+ "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
172
172
  --font-weight-normal: 400;
173
173
  --font-weight-medium: 500;
174
174
  --font-weight-bold: 600;