@almadar/ui 2.1.5 → 2.1.7

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.
@@ -1,7 +1,7 @@
1
1
  import { useTheme, useUISlots } from './chunk-BTXQJGFB.js';
2
- import { cn, debugGroup, debug, debugGroupEnd, getNestedValue, isDebugEnabled } from './chunk-KKCVDUK7.js';
3
2
  import { useTranslate, useQuerySingleton } from './chunk-JLEMVREZ.js';
4
3
  import { useEventBus } from './chunk-YXZM3WCF.js';
4
+ import { cn, debugGroup, debug, debugGroupEnd, getNestedValue, isDebugEnabled } from './chunk-KKCVDUK7.js';
5
5
  import { __publicField } from './chunk-PKBMQBKP.js';
6
6
  import * as React41 from 'react';
7
7
  import React41__default, { useCallback, useRef, useState, useLayoutEffect, useEffect, createContext, useMemo, useContext, Suspense } from 'react';
@@ -7208,13 +7208,14 @@ var DetailPanel = ({
7208
7208
  error
7209
7209
  }) => {
7210
7210
  const eventBus = useEventBus();
7211
+ const { t } = useTranslate();
7211
7212
  const isFieldDefArray = (arr) => {
7212
7213
  if (!arr || arr.length === 0) return false;
7213
7214
  const first = arr[0];
7214
7215
  return typeof first === "string" || typeof first === "object" && first !== null && "key" in first;
7215
7216
  };
7216
7217
  const effectiveFieldNames = isFieldDefArray(propFields) ? normalizeFieldDefs(propFields) : fieldNames;
7217
- const handleActionClick = useCallback(
7218
+ useCallback(
7218
7219
  (action, data2) => {
7219
7220
  if (action.navigatesTo) {
7220
7221
  const url = action.navigatesTo.replace(
@@ -7359,9 +7360,9 @@ var DetailPanel = ({
7359
7360
  return /* @__PURE__ */ jsx(
7360
7361
  ErrorState,
7361
7362
  {
7362
- title: "Error loading data",
7363
- message: error.message || "An error occurred while loading the data.",
7364
- onRetry: () => window.location.reload(),
7363
+ title: t("error.loadingData"),
7364
+ message: error.message || t("error.genericLoad"),
7365
+ retryEvent: "RETRY",
7365
7366
  className
7366
7367
  }
7367
7368
  );
@@ -7424,7 +7425,8 @@ var DetailPanel = ({
7424
7425
  Button,
7425
7426
  {
7426
7427
  variant: action.variant || "secondary",
7427
- onClick: () => handleActionClick(action, normalizedData),
7428
+ action: action.event,
7429
+ actionPayload: { row: normalizedData },
7428
7430
  icon: action.icon,
7429
7431
  children: action.label
7430
7432
  },
@@ -9227,11 +9229,26 @@ function UISlotComponent({
9227
9229
  slot,
9228
9230
  portal = false,
9229
9231
  position,
9230
- className
9232
+ className,
9233
+ children,
9234
+ pattern,
9235
+ sourceTrait
9231
9236
  }) {
9232
9237
  const { slots, clear } = useUISlots();
9233
9238
  const suspenseConfig = useContext(SuspenseConfigContext);
9234
9239
  const content = slots[slot];
9240
+ if (children !== void 0) {
9241
+ return /* @__PURE__ */ jsx(
9242
+ Box,
9243
+ {
9244
+ id: `slot-${slot}`,
9245
+ className: cn("ui-slot", `ui-slot-${slot}`, className),
9246
+ "data-pattern": pattern,
9247
+ "data-source-trait": sourceTrait,
9248
+ children
9249
+ }
9250
+ );
9251
+ }
9235
9252
  if (!content) {
9236
9253
  if (!portal) {
9237
9254
  return /* @__PURE__ */ jsx(
@@ -1,4 +1,4 @@
1
- /* ../../node_modules/.pnpm/katex@0.16.28/node_modules/katex/dist/katex.min.css */
1
+ /* node_modules/.pnpm/katex@0.16.33/node_modules/katex/dist/katex.min.css */
2
2
  @font-face {
3
3
  font-display: block;
4
4
  font-family: KaTeX_AMS;
@@ -213,7 +213,7 @@
213
213
  border-color: currentColor;
214
214
  }
215
215
  .katex .katex-version:after {
216
- content: "0.16.28";
216
+ content: "0.16.33";
217
217
  }
218
218
  .katex .katex-mathml {
219
219
  clip: rect(1px, 1px, 1px, 1px);
@@ -988,6 +988,15 @@
988
988
  .katex svg {
989
989
  fill: currentColor;
990
990
  stroke: currentColor;
991
+ display: block;
992
+ height: inherit;
993
+ position: absolute;
994
+ width: 100%;
995
+ }
996
+ .katex svg path {
997
+ stroke: none;
998
+ }
999
+ .katex svg {
991
1000
  fill-rule: nonzero;
992
1001
  fill-opacity: 1;
993
1002
  stroke-width: 1;
@@ -997,13 +1006,6 @@
997
1006
  stroke-dasharray: none;
998
1007
  stroke-dashoffset: 0;
999
1008
  stroke-opacity: 1;
1000
- display: block;
1001
- height: inherit;
1002
- position: absolute;
1003
- width: 100%;
1004
- }
1005
- .katex svg path {
1006
- stroke: none;
1007
1009
  }
1008
1010
  .katex img {
1009
1011
  border-style: none;
@@ -2809,10 +2809,16 @@ interface DetailPanelProps extends EntityDisplayProps {
2809
2809
  position?: "left" | "right";
2810
2810
  /** Panel width (CSS value, e.g., '400px', '50%') */
2811
2811
  width?: string;
2812
+ /** Entity ID for fetching specific entity */
2813
+ entityId?: string;
2814
+ /** Display fields (alias for fields) */
2815
+ displayFields?: readonly string[];
2816
+ /** Show actions flag */
2817
+ showActions?: boolean;
2812
2818
  }
2813
2819
  declare const DetailPanel: React__default.FC<DetailPanelProps>;
2814
2820
 
2815
- interface FormSectionProps {
2821
+ interface FormSectionProps extends EntityDisplayProps {
2816
2822
  /** Section title */
2817
2823
  title?: string;
2818
2824
  /** Section description */
@@ -2827,47 +2833,28 @@ interface FormSectionProps {
2827
2833
  card?: boolean;
2828
2834
  /** Grid columns for fields */
2829
2835
  columns?: 1 | 2 | 3;
2830
- className?: string;
2831
- /** Loading state */
2832
- isLoading?: boolean;
2833
- /** Error state */
2834
- error?: Error | null;
2835
- /** Entity name */
2836
- entity?: string;
2836
+ /** Entity ID for fetching specific entity */
2837
+ entityId?: string;
2837
2838
  }
2838
2839
  declare const FormSection$1: React__default.FC<FormSectionProps>;
2839
2840
  /**
2840
2841
  * Form layout with multiple sections
2841
2842
  */
2842
- interface FormLayoutProps {
2843
+ interface FormLayoutProps extends EntityDisplayProps {
2843
2844
  children: React__default.ReactNode;
2844
2845
  /** Show section dividers */
2845
2846
  dividers?: boolean;
2846
- className?: string;
2847
- /** Loading state */
2848
- isLoading?: boolean;
2849
- /** Error state */
2850
- error?: Error | null;
2851
- /** Entity name */
2852
- entity?: string;
2853
2847
  }
2854
2848
  declare const FormLayout: React__default.FC<FormLayoutProps>;
2855
2849
  /**
2856
2850
  * Form actions bar (submit/cancel buttons)
2857
2851
  */
2858
- interface FormActionsProps {
2852
+ interface FormActionsProps extends EntityDisplayProps {
2859
2853
  children: React__default.ReactNode;
2860
2854
  /** Sticky at bottom */
2861
2855
  sticky?: boolean;
2862
2856
  /** Alignment */
2863
2857
  align?: "left" | "right" | "between" | "center";
2864
- className?: string;
2865
- /** Loading state */
2866
- isLoading?: boolean;
2867
- /** Error state */
2868
- error?: Error | null;
2869
- /** Entity name */
2870
- entity?: string;
2871
2858
  }
2872
2859
  declare const FormActions: React__default.FC<FormActionsProps>;
2873
2860
 
@@ -7183,13 +7170,19 @@ interface UISlotComponentProps {
7183
7170
  isLoading?: boolean;
7184
7171
  error?: Error | null;
7185
7172
  entity?: string;
7173
+ /** Compiled mode: render children directly instead of resolving from context */
7174
+ children?: React__default.ReactNode;
7175
+ /** Pattern type for data-pattern attribute (compiled mode) */
7176
+ pattern?: string;
7177
+ /** Source trait name for data-source-trait attribute (compiled mode) */
7178
+ sourceTrait?: string;
7186
7179
  }
7187
7180
  /**
7188
7181
  * Individual slot renderer.
7189
7182
  *
7190
7183
  * Handles different slot types with appropriate wrappers.
7191
7184
  */
7192
- declare function UISlotComponent({ slot, portal, position, className, }: UISlotComponentProps): React__default.ReactElement | null;
7185
+ declare function UISlotComponent({ slot, portal, position, className, children, pattern, sourceTrait, }: UISlotComponentProps): React__default.ReactElement | null;
7193
7186
  interface SlotContentRendererProps {
7194
7187
  content: SlotContent;
7195
7188
  onDismiss: () => void;
@@ -1,21 +1,21 @@
1
- import { DEFAULT_CONFIG, renderStateMachineToDomData, parseContentSegments } from '../chunk-N6DJVKZ6.js';
2
1
  import { useAuthContext } from '../chunk-6OACETQB.js';
3
2
  export { ENTITY_EVENTS, useAgentChat, useAuthContext, useCompile, useConnectGitHub, useCreateEntity, useDeepAgentGeneration, useDeleteEntity, useDisconnectGitHub, useEntities, useEntitiesByType, useEntity as useEntityById, useEntityMutations, useExtensions, useFileEditor, useFileSystem, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, useInput, useOrbitalHistory, useOrbitalMutations, usePhysics, usePlayer, usePreview, useResolvedEntity, useSelectedEntity, useSendOrbitalEvent, useSingletonEntity, useUIEvents, useUpdateEntity, useValidation } from '../chunk-6OACETQB.js';
3
+ import { DEFAULT_CONFIG, renderStateMachineToDomData, parseContentSegments } from '../chunk-N6DJVKZ6.js';
4
4
  import '../chunk-3HJHHULT.js';
5
- 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, Stack, Select, Drawer, Toast, Tabs, Input, ThemeToggle, HealthBar, ScoreDisplay, StateIndicator, Container, EntityDisplayEvents } from '../chunk-Y7AFNUT2.js';
6
- export { Accordion, Card2 as ActionCard, Alert, Avatar, Badge, Box, Breadcrumb, Button, ButtonGroup, Card, CardBody, CardContent, CardFooter, CardGrid, CardHeader, CardTitle, Center, Checkbox, CodeBlock, ConditionalWrapper, Container, ControlButton, DataTable, DetailPanel, Divider, Drawer, EmptyState, EntityDisplayEvents, ErrorBoundary, ErrorState, FilterGroup, Flex, FloatingActionButton, Form, FormField, FormSectionHeader, Grid, HStack, Heading, HealthBar, Icon, Input, InputGroup, Label, LawReferenceTooltip, LoadingState, MarkdownContent, MasterDetail, Menu, Modal, Overlay, PageHeader, Pagination, Popover, ProgressBar, QuizBlock, Radio, RelationSelect, RepeatableFormSection, ScaledDiagram, ScoreDisplay, SearchInput, Select, SidePanel, SimpleGrid, Skeleton, SlotContentRenderer, Spacer, Spinner, Sprite, Stack, StatCard, StateIndicator, Switch, Tabs, Text, TextHighlight, Textarea, ThemeSelector, ThemeToggle, Toast, Tooltip, Typography, UISlotComponent, UISlotRenderer, VStack, ViolationAlert, WizardNavigation, WizardProgress, drawSprite } from '../chunk-Y7AFNUT2.js';
5
+ 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, Stack, Select, Drawer, Toast, Tabs, Input, ThemeToggle, HealthBar, ScoreDisplay, StateIndicator, Container, EntityDisplayEvents } from '../chunk-5Z55L5V7.js';
6
+ export { Accordion, Card2 as ActionCard, Alert, Avatar, Badge, Box, Breadcrumb, Button, ButtonGroup, Card, CardBody, CardContent, CardFooter, CardGrid, CardHeader, CardTitle, Center, Checkbox, CodeBlock, ConditionalWrapper, Container, ControlButton, DataTable, DetailPanel, Divider, Drawer, EmptyState, EntityDisplayEvents, ErrorBoundary, ErrorState, FilterGroup, Flex, FloatingActionButton, Form, FormField, FormSectionHeader, Grid, HStack, Heading, HealthBar, Icon, Input, InputGroup, Label, LawReferenceTooltip, LoadingState, MarkdownContent, MasterDetail, Menu, Modal, Overlay, PageHeader, Pagination, Popover, ProgressBar, QuizBlock, Radio, RelationSelect, RepeatableFormSection, ScaledDiagram, ScoreDisplay, SearchInput, Select, SidePanel, SimpleGrid, Skeleton, SlotContentRenderer, Spacer, Spinner, Sprite, Stack, StatCard, StateIndicator, Switch, Tabs, Text, TextHighlight, Textarea, ThemeSelector, ThemeToggle, Toast, Tooltip, Typography, UISlotComponent, UISlotRenderer, VStack, ViolationAlert, WizardNavigation, WizardProgress, drawSprite } from '../chunk-5Z55L5V7.js';
7
7
  import '../chunk-BTXQJGFB.js';
8
- import { cn, getNestedValue } from '../chunk-KKCVDUK7.js';
9
- export { cn } from '../chunk-KKCVDUK7.js';
10
8
  import { useTranslate } from '../chunk-JLEMVREZ.js';
11
9
  export { EntityDataProvider, I18nProvider, createTranslate, entityDataKeys, parseQueryBinding, useEntity, useEntityDataAdapter, useEntityDetail, useEntityList, useEntityListSuspense, useEntitySuspense, useQuerySingleton, useTranslate } from '../chunk-JLEMVREZ.js';
12
10
  import { useEventBus, useEventListener } from '../chunk-YXZM3WCF.js';
13
11
  export { useEmitEvent, useEventBus, useEventListener } from '../chunk-YXZM3WCF.js';
14
12
  export { DEFAULT_SLOTS, useUISlotManager } from '../chunk-7NEWMNNU.js';
13
+ import { cn, getNestedValue } from '../chunk-KKCVDUK7.js';
14
+ export { cn } from '../chunk-KKCVDUK7.js';
15
15
  export { clearEntities, getAllEntities, getByType, getEntity, getSingleton, removeEntity, spawnEntity, updateEntity, updateSingleton } from '../chunk-N7MVUW4R.js';
16
16
  import { __publicField } from '../chunk-PKBMQBKP.js';
17
- import * as React42 from 'react';
18
- import React42__default, { createContext, useState, useCallback, useMemo, useEffect, useRef, useContext } from 'react';
17
+ import * as React from 'react';
18
+ import React__default, { createContext, useState, useCallback, useMemo, useEffect, useRef, useContext } from 'react';
19
19
  import { ChevronDown, X, Menu, ChevronRight, ChevronLeft, ArrowUp, ArrowDown, MoreVertical, Package, Check, AlertTriangle, Trash2, List as List$1, Printer, CheckCircle, XCircle, Play, RotateCcw, Send, Wrench, Bug, ArrowRight, Pause, SkipForward, Zap, Sword, Move, Heart, Shield, AlertCircle, Circle, Clock, CheckCircle2, Image as Image$1, Upload, ZoomIn, Eraser, FileText, ZoomOut, Download, Code, WrapText, Copy, Settings, Search, Bell, LogOut, Calendar, Pencil, Eye, MoreHorizontal, Minus, Plus } from 'lucide-react';
20
20
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
21
21
  import { createPortal } from 'react-dom';
@@ -31,12 +31,20 @@ var FormSection = ({
31
31
  columns = 1,
32
32
  className
33
33
  }) => {
34
- const [collapsed, setCollapsed] = React42__default.useState(defaultCollapsed);
34
+ const [collapsed, setCollapsed] = React__default.useState(defaultCollapsed);
35
+ const { t } = useTranslate();
36
+ const eventBus = useEventBus();
35
37
  const gridClass = {
36
38
  1: "grid-cols-1",
37
39
  2: "grid-cols-1 md:grid-cols-2",
38
40
  3: "grid-cols-1 md:grid-cols-2 lg:grid-cols-3"
39
41
  }[columns];
42
+ React__default.useCallback(() => {
43
+ if (collapsible) {
44
+ setCollapsed((prev) => !prev);
45
+ eventBus.emit("UI:TOGGLE_COLLAPSE", { collapsed: !collapsed });
46
+ }
47
+ }, [collapsible, collapsed, eventBus]);
40
48
  const content = /* @__PURE__ */ jsxs(Fragment, { children: [
41
49
  (title || description) && /* @__PURE__ */ jsxs(VStack, { gap: "xs", className: "mb-4", children: [
42
50
  title && /* @__PURE__ */ jsxs(
@@ -45,7 +53,7 @@ var FormSection = ({
45
53
  justify: "between",
46
54
  align: "center",
47
55
  className: cn(collapsible && "cursor-pointer"),
48
- onClick: () => collapsible && setCollapsed(!collapsed),
56
+ action: collapsible ? "TOGGLE_COLLAPSE" : void 0,
49
57
  children: [
50
58
  /* @__PURE__ */ jsx(Typography, { variant: "h3", weight: "semibold", children: title }),
51
59
  collapsible && /* @__PURE__ */ jsx(
@@ -53,7 +61,7 @@ var FormSection = ({
53
61
  {
54
62
  variant: "ghost",
55
63
  size: "sm",
56
- onClick: () => setCollapsed(!collapsed),
64
+ action: "TOGGLE_COLLAPSE",
57
65
  children: /* @__PURE__ */ jsx(
58
66
  Icon,
59
67
  {
@@ -1028,7 +1036,7 @@ var List = ({
1028
1036
  if (entity && typeof entity === "object" && "id" in entity) return [entity];
1029
1037
  return [];
1030
1038
  }, [entity]);
1031
- const getItemActions = React42__default.useCallback(
1039
+ const getItemActions = React__default.useCallback(
1032
1040
  (item) => {
1033
1041
  if (!itemActions) return [];
1034
1042
  if (typeof itemActions === "function") {
@@ -1530,7 +1538,7 @@ var WizardContainer = ({
1530
1538
  const isCompleted = index < currentStep;
1531
1539
  const stepKey = step.id ?? step.tabId ?? `step-${index}`;
1532
1540
  const stepTitle = step.title ?? step.name ?? `Step ${index + 1}`;
1533
- return /* @__PURE__ */ jsxs(React42__default.Fragment, { children: [
1541
+ return /* @__PURE__ */ jsxs(React__default.Fragment, { children: [
1534
1542
  /* @__PURE__ */ jsx(
1535
1543
  Button,
1536
1544
  {
@@ -2754,7 +2762,7 @@ var StateMachineView = ({
2754
2762
  style: { top: title ? 30 : 0 },
2755
2763
  children: [
2756
2764
  entity && /* @__PURE__ */ jsx(EntityBox, { entity, config }),
2757
- states.map((state) => renderStateNode ? /* @__PURE__ */ jsx(React42__default.Fragment, { children: renderStateNode(state, config) }, state.id) : /* @__PURE__ */ jsx(
2765
+ states.map((state) => renderStateNode ? /* @__PURE__ */ jsx(React__default.Fragment, { children: renderStateNode(state, config) }, state.id) : /* @__PURE__ */ jsx(
2758
2766
  StateNode,
2759
2767
  {
2760
2768
  state,
@@ -6769,7 +6777,7 @@ function GameMenu({
6769
6777
  } catch {
6770
6778
  }
6771
6779
  const eventBus = eventBusProp || eventBusFromHook;
6772
- const handleOptionClick = React42.useCallback(
6780
+ const handleOptionClick = React.useCallback(
6773
6781
  (option) => {
6774
6782
  if (option.event && eventBus) {
6775
6783
  eventBus.emit(`UI:${option.event}`, { option });
@@ -6892,7 +6900,7 @@ function GameOverScreen({
6892
6900
  } catch {
6893
6901
  }
6894
6902
  const eventBus = eventBusProp || eventBusFromHook;
6895
- const handleActionClick = React42.useCallback(
6903
+ const handleActionClick = React.useCallback(
6896
6904
  (action) => {
6897
6905
  if (action.event && eventBus) {
6898
6906
  eventBus.emit(`UI:${action.event}`, { action });
@@ -8159,7 +8167,7 @@ function LinearView({
8159
8167
  /* @__PURE__ */ jsx(HStack, { className: "flex-wrap items-center", gap: "xs", children: trait.states.map((state, i) => {
8160
8168
  const isDone = i < currentIdx;
8161
8169
  const isCurrent = i === currentIdx;
8162
- return /* @__PURE__ */ jsxs(React42__default.Fragment, { children: [
8170
+ return /* @__PURE__ */ jsxs(React__default.Fragment, { children: [
8163
8171
  i > 0 && /* @__PURE__ */ jsx(
8164
8172
  Typography,
8165
8173
  {
@@ -8813,7 +8821,7 @@ function SequenceBar({
8813
8821
  onSlotRemove(index);
8814
8822
  }, [onSlotRemove, playing]);
8815
8823
  const paddedSlots = Array.from({ length: maxSlots }, (_, i) => slots[i]);
8816
- return /* @__PURE__ */ jsx(HStack, { className: cn("items-center", className), gap: "sm", children: paddedSlots.map((slot, i) => /* @__PURE__ */ jsxs(React42__default.Fragment, { children: [
8824
+ return /* @__PURE__ */ jsx(HStack, { className: cn("items-center", className), gap: "sm", children: paddedSlots.map((slot, i) => /* @__PURE__ */ jsxs(React__default.Fragment, { children: [
8817
8825
  i > 0 && /* @__PURE__ */ jsx(
8818
8826
  Typography,
8819
8827
  {
@@ -11113,7 +11121,7 @@ function generateCombatMessage(event) {
11113
11121
  return event.message;
11114
11122
  }
11115
11123
  function extractTitle(children) {
11116
- if (!React42__default.isValidElement(children)) return void 0;
11124
+ if (!React__default.isValidElement(children)) return void 0;
11117
11125
  const props = children.props;
11118
11126
  if (typeof props.title === "string") {
11119
11127
  return props.title;
@@ -11148,7 +11156,7 @@ var ModalSlot = ({
11148
11156
  };
11149
11157
  ModalSlot.displayName = "ModalSlot";
11150
11158
  function extractTitle2(children) {
11151
- if (!React42__default.isValidElement(children)) return void 0;
11159
+ if (!React__default.isValidElement(children)) return void 0;
11152
11160
  const props = children.props;
11153
11161
  if (typeof props.title === "string") {
11154
11162
  return props.title;
@@ -11185,7 +11193,7 @@ var DrawerSlot = ({
11185
11193
  };
11186
11194
  DrawerSlot.displayName = "DrawerSlot";
11187
11195
  function extractToastProps(children) {
11188
- if (!React42__default.isValidElement(children)) {
11196
+ if (!React__default.isValidElement(children)) {
11189
11197
  if (typeof children === "string") {
11190
11198
  return { message: children };
11191
11199
  }
@@ -11216,7 +11224,7 @@ var ToastSlot = ({
11216
11224
  eventBus.emit("UI:CLOSE");
11217
11225
  };
11218
11226
  if (!isVisible) return null;
11219
- const isCustomContent = React42__default.isValidElement(children) && !message;
11227
+ const isCustomContent = React__default.isValidElement(children) && !message;
11220
11228
  return /* @__PURE__ */ jsx(Box, { className: "fixed bottom-4 right-4 z-50", children: isCustomContent ? children : /* @__PURE__ */ jsx(
11221
11229
  Toast,
11222
11230
  {
@@ -11721,7 +11729,7 @@ var Timeline = ({
11721
11729
  }) => {
11722
11730
  const { t } = useTranslate();
11723
11731
  const entityData = Array.isArray(entity) ? entity : [];
11724
- const items = React42__default.useMemo(() => {
11732
+ const items = React__default.useMemo(() => {
11725
11733
  if (propItems) return propItems;
11726
11734
  if (entityData.length === 0) return [];
11727
11735
  return entityData.map((record, idx) => {
@@ -11862,7 +11870,7 @@ var MediaGallery = ({
11862
11870
  [selectable, selectedItems, selectionEvent, eventBus]
11863
11871
  );
11864
11872
  const entityData = Array.isArray(entity) ? entity : [];
11865
- const items = React42__default.useMemo(() => {
11873
+ const items = React__default.useMemo(() => {
11866
11874
  if (propItems) return propItems;
11867
11875
  if (entityData.length === 0) return [];
11868
11876
  return entityData.map((record, idx) => ({
@@ -1,4 +1,4 @@
1
- /* ../../node_modules/.pnpm/katex@0.16.28/node_modules/katex/dist/katex.min.css */
1
+ /* node_modules/.pnpm/katex@0.16.33/node_modules/katex/dist/katex.min.css */
2
2
  @font-face {
3
3
  font-display: block;
4
4
  font-family: KaTeX_AMS;
@@ -213,7 +213,7 @@
213
213
  border-color: currentColor;
214
214
  }
215
215
  .katex .katex-version:after {
216
- content: "0.16.28";
216
+ content: "0.16.33";
217
217
  }
218
218
  .katex .katex-mathml {
219
219
  clip: rect(1px, 1px, 1px, 1px);
@@ -988,6 +988,15 @@
988
988
  .katex svg {
989
989
  fill: currentColor;
990
990
  stroke: currentColor;
991
+ display: block;
992
+ height: inherit;
993
+ position: absolute;
994
+ width: 100%;
995
+ }
996
+ .katex svg path {
997
+ stroke: none;
998
+ }
999
+ .katex svg {
991
1000
  fill-rule: nonzero;
992
1001
  fill-opacity: 1;
993
1002
  stroke-width: 1;
@@ -997,13 +1006,6 @@
997
1006
  stroke-dasharray: none;
998
1007
  stroke-dashoffset: 0;
999
1008
  stroke-opacity: 1;
1000
- display: block;
1001
- height: inherit;
1002
- position: absolute;
1003
- width: 100%;
1004
- }
1005
- .katex svg path {
1006
- stroke: none;
1007
1009
  }
1008
1010
  .katex img {
1009
1011
  border-style: none;
@@ -1,12 +1,12 @@
1
- import { SuspenseConfigProvider } from '../chunk-Y7AFNUT2.js';
1
+ import { SuspenseConfigProvider } from '../chunk-5Z55L5V7.js';
2
2
  import { ThemeProvider } from '../chunk-BTXQJGFB.js';
3
- import { recordTransition, registerCheck, bindEventBus, bindTraitStateGetter } from '../chunk-45CTDYBT.js';
4
- import '../chunk-KKCVDUK7.js';
5
3
  import { SelectionProvider, EntityDataProvider } from '../chunk-JLEMVREZ.js';
6
4
  export { SelectionContext, SelectionProvider, useSelection, useSelectionOptional } from '../chunk-JLEMVREZ.js';
7
5
  import { useEventBus, EventBusProvider } from '../chunk-YXZM3WCF.js';
8
6
  export { EventBusContext, EventBusProvider } from '../chunk-YXZM3WCF.js';
9
7
  import '../chunk-7NEWMNNU.js';
8
+ import { recordTransition, registerCheck, bindEventBus, bindTraitStateGetter } from '../chunk-45CTDYBT.js';
9
+ import '../chunk-KKCVDUK7.js';
10
10
  import { useOfflineExecutor } from '../chunk-PL7MD6GF.js';
11
11
  import '../chunk-PKBMQBKP.js';
12
12
  import { createContext, useState, useCallback, useMemo, useContext, useRef, useEffect } from 'react';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@almadar/ui",
3
- "version": "2.1.5",
3
+ "version": "2.1.7",
4
4
  "description": "React UI components, hooks, and providers for Almadar",
5
5
  "type": "module",
6
6
  "main": "./dist/components/index.js",
@@ -117,6 +117,7 @@
117
117
  "vitest": "^1.4.0",
118
118
  "@testing-library/react": "^14.2.0",
119
119
  "@testing-library/jest-dom": "^6.4.0",
120
+ "@testing-library/user-event": "^14.5.0",
120
121
  "@vitest/ui": "^1.4.0",
121
122
  "jsdom": "^24.0.0",
122
123
  "@storybook/addon-docs": "^10.2.6",