@almadar/ui 4.51.15 → 4.52.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.
@@ -14,6 +14,12 @@ export interface CalendarEvent {
14
14
  endTime?: string | Date;
15
15
  color?: string;
16
16
  }
17
+ /**
18
+ * Number of day columns rendered at once. Matches the responsiveness-
19
+ * audit tiers exactly: 1 day on mobile (≤640), 3 on tablet (641–1024),
20
+ * 7 on laptop+ (≥1025).
21
+ */
22
+ export type CalendarDayWindow = 1 | 3 | 7;
17
23
  export interface CalendarGridProps {
18
24
  /** Start of the week (defaults to current week's Monday) */
19
25
  weekStart?: Date;
@@ -40,8 +46,15 @@ export interface CalendarGridProps {
40
46
  swipeLeftEvent?: EventEmit<Record<string, never>>;
41
47
  /** Event emitted on swipe right (prev week): UI:{swipeRightEvent} */
42
48
  swipeRightEvent?: EventEmit<Record<string, never>>;
49
+ /**
50
+ * Override the viewport-driven day window. `'auto'` (default) tracks
51
+ * `window.innerWidth` — 1 day on mobile, 3 on tablet, 7 on laptop+.
52
+ * Pass an explicit number to force a fixed window (useful for print
53
+ * layouts or screenshot tests).
54
+ */
55
+ dayWindow?: CalendarDayWindow | 'auto';
43
56
  }
44
- export declare function CalendarGrid({ weekStart, timeSlots, events, onSlotClick, onDayClick, onEventClick, className, longPressEvent, longPressPayload, swipeLeftEvent, swipeRightEvent, }: CalendarGridProps): React.JSX.Element;
57
+ export declare function CalendarGrid({ weekStart, timeSlots, events, onSlotClick, onDayClick, onEventClick, className, longPressEvent, longPressPayload, swipeLeftEvent, swipeRightEvent, dayWindow, }: CalendarGridProps): React.JSX.Element;
45
58
  export declare namespace CalendarGrid {
46
59
  var displayName: string;
47
60
  }
@@ -24,8 +24,13 @@ export interface SidePanelProps {
24
24
  */
25
25
  onClose: () => void;
26
26
  /**
27
- * Panel width
28
- * @default 'w-96'
27
+ * Panel width as Tailwind class string. Default fills the viewport on
28
+ * mobile and snaps to `w-96` (384 px) at `sm:` and above so phones
29
+ * don't lose content to a fixed 384 px column. Consumers passing a
30
+ * custom value should include a `w-full` mobile fallback in the same
31
+ * string (e.g. `"w-full sm:w-[480px]"`) — Tailwind's JIT can't see
32
+ * dynamically-concatenated class names.
33
+ * @default 'w-full sm:w-96'
29
34
  */
30
35
  width?: string;
31
36
  /**
@@ -8,8 +8,16 @@ import React from 'react';
8
8
  import type { LucideIcon } from 'lucide-react';
9
9
  import type { EventEmit } from '@almadar/core';
10
10
  export interface TabItem {
11
- /** Tab ID */
12
- id: string;
11
+ /**
12
+ * Tab ID. Optional — schema-driven callers may pass `value` instead;
13
+ * it gets normalized to `id` at the call boundary.
14
+ */
15
+ id?: string;
16
+ /**
17
+ * Alternative key when `id` isn't set. Used by `.orb` schema-driven
18
+ * call sites that emit `{ value, label }` for tab items.
19
+ */
20
+ value?: string;
13
21
  /** Tab label */
14
22
  label: string;
15
23
  /** Tab content - optional for event-driven tabs */
@@ -10,15 +10,36 @@
10
10
  import type { Expression, UISlot } from '@almadar/core';
11
11
  /** The two navigation levels of the FlowCanvas. */
12
12
  export type ViewLevel = 'overview' | 'expanded';
13
- /** Screen size preset for OrbPreview rendering inside nodes. */
14
- export type ScreenSize = 'mobile' | 'tablet' | 'desktop';
15
- /** Width for each screen size preset. Height is auto (expands to fit content). */
13
+ /**
14
+ * Screen size preset for OrbPreview rendering inside nodes.
15
+ *
16
+ * Aligned with the four-breakpoint responsiveness audit:
17
+ * mobile — phone portrait (≤640px)
18
+ * tablet — iPad / small landscape (641–1024px)
19
+ * laptop — 13–15" notebook (1025–1440px)
20
+ * wide — desktop / monitor (≥1441px)
21
+ *
22
+ * Preset widths are representative viewport widths within each range; the
23
+ * preview renders at exactly this width so the embedded UI experiences
24
+ * the same media-query / container-query behavior it would at the real
25
+ * viewport. `minHeight` only floors the preview frame; vertical sizing is
26
+ * content-driven (BrowserPlayground height="auto").
27
+ */
28
+ export type ScreenSize = 'mobile' | 'tablet' | 'laptop' | 'wide';
16
29
  export declare const SCREEN_SIZE_PRESETS: Record<ScreenSize, {
17
30
  width: number;
18
31
  minHeight: number;
19
32
  label: string;
20
33
  icon: string;
21
34
  }>;
35
+ /**
36
+ * Map a raw viewport width (px) to the nearest preset. Used by FlowCanvas
37
+ * to auto-pick the default ScreenSize based on the user's actual canvas
38
+ * pane width on mount + on window resize. The breakpoint edges match the
39
+ * responsiveness-audit tiers exactly (640 / 1024 / 1440) so what the
40
+ * preview renders matches the tier the audit graded against.
41
+ */
42
+ export declare function detectScreenSize(viewportWidth: number): ScreenSize;
22
43
  /**
23
44
  * An interactive element inside a render-ui pattern that fires an event.
24
45
  * For example, a button with `event: "CHECKOUT"` is an event source.