@tensor_1/react 2.32.0 → 2.34.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.
package/dist/index.d.cts CHANGED
@@ -570,8 +570,117 @@ declare function schedulingGridDays(anchorDate: string, view: 'month' | 'week',
570
570
  * (never a UTC date). `days` are the grid's date keys, a whole number of weeks.
571
571
  */
572
572
  declare function layoutMonthSpans(spans: readonly MonthSpanInput[], days: readonly string[], options: LayoutMonthSpansOptions): MonthSpanLayout;
573
+ /** How far past its first local midnight an entry may run and still be drawn in the grid (operator decision E12). */
574
+ declare const TOP_LANE_CROSS_MIDNIGHT_MINUTES = 360;
575
+ interface TimeGridEntryInput {
576
+ id: string;
577
+ /** Half-open `[start, end)` instants (ISO 8601, epoch ms or Date). */
578
+ start: string | number | Date;
579
+ end: string | number | Date;
580
+ /** An entry with no time of day: always drawn in the top lane. */
581
+ allDay?: boolean;
582
+ }
583
+ /**
584
+ * Whether an entry is drawn in the top lane of the time grid instead of in the day columns:
585
+ * it is all-day, it is longer than one day (it ends after the same wall-clock time on the
586
+ * next day), or it runs more than `crossMidnightMinutes` past its first local midnight. A
587
+ * shorter midnight-crosser stays in the grid as a start segment and a continuation segment.
588
+ */
589
+ declare function placesInTopLane(entry: Pick<TimeGridEntryInput, 'start' | 'end' | 'allDay'>, timeZone: string, options?: {
590
+ crossMidnightMinutes?: number;
591
+ }): boolean;
592
+ /** Which part of an entry a grid segment is: all of it, its first day, or the rest on the next day. */
593
+ type TimeGridPart = 'whole' | 'start' | 'continuation';
594
+ interface TimeGridSegment {
595
+ id: string;
596
+ part: TimeGridPart;
597
+ /** The segment, clipped to the day (epoch ms). */
598
+ start: number;
599
+ end: number;
600
+ /** Real hours from the start of the day to the segment. Multiply by the hour height. */
601
+ offsetHours: number;
602
+ /** The length of the segment in real hours. */
603
+ lengthHours: number;
604
+ /** 0-based lane inside its overlap cluster. */
605
+ lane: number;
606
+ /** Lanes its cluster uses: the segment is this fraction of the column wide. */
607
+ laneCount: number;
608
+ }
609
+ interface TimeGridDayLayout {
610
+ date: string;
611
+ /** The first instant of the day (epoch ms) and its length in real hours. */
612
+ dayStart: number;
613
+ dayHours: number;
614
+ /** One per entry part that got a lane, by start. */
615
+ segments: TimeGridSegment[];
616
+ /** Entries on this day that got no lane, by start. */
617
+ hidden: string[];
618
+ }
619
+ /**
620
+ * Lays one day column out: every entry that is not in the top lane and touches the day, clipped
621
+ * to it and packed into at most `maxLanes` lanes with `packLanes`. An entry that crosses
622
+ * midnight gives a `'start'` segment on its first day and a `'continuation'` on the next.
623
+ */
624
+ declare function layoutTimeGridDay(entries: readonly TimeGridEntryInput[], date: string, timeZone: string, options?: {
625
+ maxLanes?: number;
626
+ crossMidnightMinutes?: number;
627
+ }): TimeGridDayLayout;
628
+ interface PlacedDaySpan {
629
+ id: string;
630
+ lane: number;
631
+ /** First and last column (inclusive) of `days` the span covers. */
632
+ startCol: number;
633
+ endCol: number;
634
+ continuesBefore: boolean;
635
+ continuesAfter: boolean;
636
+ }
637
+ interface DaySpanLayout {
638
+ placed: PlacedDaySpan[];
639
+ /** Ids that got no lane, in input order. */
640
+ hidden: string[];
641
+ /** The first day a hidden span covers, when there is one. */
642
+ firstHiddenDay?: string;
643
+ }
644
+ /**
645
+ * Places spans over one row of consecutive `days` (a week, or the single day of the Day
646
+ * view), in the order given, in at most `laneCap` lanes. Day membership is the end-exclusive
647
+ * zoned span. The time grid uses it for its top lane and its window strip.
648
+ */
649
+ declare function layoutDaySpans(spans: readonly MonthSpanInput[], days: readonly string[], options: {
650
+ timeZone: string;
651
+ laneCap?: number;
652
+ }): DaySpanLayout;
653
+ /** A move the user asks for. The component never applies it: the consumer decides. */
654
+ interface MoveProposal {
655
+ /** ISO 8601 instants of the proposed window. */
656
+ start: string;
657
+ end: string;
658
+ /** `'gap_forward'` when the wall-clock time asked for does not exist that day and moved past the gap. */
659
+ adjusted: 'gap_forward' | null;
660
+ }
661
+ /**
662
+ * The window `[start, end)` moved by `minutes` of real time and then by `days` calendar days.
663
+ * A day move keeps the wall-clock start and end (`addZonedDays`), whatever the length of the
664
+ * days in between. Compute it from the original window every time, so that a time falling in
665
+ * a clock-change gap moves forward once, never twice. When a clock change on the target day
666
+ * would put the wall-clock end at or before the start (a window that sits on the skipped or
667
+ * repeated hour), the end keeps the real length of the window instead.
668
+ */
669
+ declare function proposeMove(span: {
670
+ start: string | number | Date;
671
+ end: string | number | Date;
672
+ }, delta: {
673
+ days?: number;
674
+ minutes?: number;
675
+ }, timeZone: string): MoveProposal;
676
+
677
+ interface TimeGridEntryContext {
678
+ /** Whole text lines that fit in the item: 0 shows the markers only. */
679
+ availableLines: number;
680
+ }
573
681
 
574
- type SchedulingCalendarView = 'month' | 'week' | 'agenda';
682
+ /** `day` is one column of the time grid. `week` is the time grid when `timeGrid` is set, else seven day cells. */
683
+ type SchedulingCalendarView = 'month' | 'week' | 'day' | 'agenda';
575
684
  /**
576
685
  * @deprecated Use `band`, `status` and `markers` on the entry: they carry no product
577
686
  * vocabulary and the consumer supplies every word. The values keep working in 2.x.
@@ -596,9 +705,10 @@ type SchedulingOverlayPattern = 'diagonal' | 'cross' | 'dotted' | 'solid';
596
705
  * Which date text a `formatDate` call is for (TENSOR B1/C9, HAR-1347):
597
706
  * `day` names one day (each day cell's accessible name, the week-range title);
598
707
  * `weekday` is the short column header (the date is any day of that weekday);
599
- * `month` is the month-view title (the date is the first of the month).
708
+ * `month` is the month-view title (the date is the first of the month);
709
+ * `column` heads one day column of the time grid (weekday and date, e.g. "Wed 07.10").
600
710
  */
601
- type SchedulingDatePart = 'day' | 'weekday' | 'month';
711
+ type SchedulingDatePart = 'day' | 'weekday' | 'month' | 'column';
602
712
  /** A shape or icon with text. The text is always in the accessible name; a marker never relies on colour. */
603
713
  interface SchedulingMarker {
604
714
  id: string;
@@ -620,6 +730,10 @@ interface SchedulingCalendarEntry {
620
730
  markers?: SchedulingMarker[];
621
731
  /** The complete accessible name, built by the consumer from its own words. Replaces `labels.entry`. */
622
732
  accessibleName?: string;
733
+ /** No time of day. In the time grid the entry is drawn in the top lane. */
734
+ allDay?: boolean;
735
+ /** `false` keeps this entry where it is when the grid allows moves (`canMove`). */
736
+ movable?: boolean;
623
737
  }
624
738
  interface SchedulingCalendarOverlay {
625
739
  id: string;
@@ -650,6 +764,20 @@ interface SchedulingCalendarDay {
650
764
  label?: string;
651
765
  markers?: SchedulingMarker[];
652
766
  }
767
+ /** One day of the agenda, built by the consumer. The calendar renders the groups and their rows in the order given. */
768
+ interface SchedulingAgendaGroup {
769
+ /** The day the group is for (`YYYY-MM-DD`). */
770
+ date: string;
771
+ /** Replaces the heading text. Default: the date through `formatDate(date, 'day')`. */
772
+ heading?: ReactNode;
773
+ /** Windows that touch the day: one note each beside the heading, never one per row. */
774
+ annotations?: SchedulingCalendarOverlay[];
775
+ rows: SchedulingCalendarEntry[];
776
+ /** Entries of the day that are not in `rows`. Shows "N not shown — open day", which calls `onShowMore`. */
777
+ hiddenCount?: number;
778
+ /** Entries that go on into this day and are listed under an earlier one. */
779
+ continuesCount?: number;
780
+ }
653
781
  interface SchedulingLegendItem {
654
782
  id: string;
655
783
  label: string;
@@ -675,9 +803,12 @@ interface SchedulingCalendarLabels {
675
803
  /** Also names the agenda's step, which moves by a week. */
676
804
  previousWeek?: string;
677
805
  nextWeek?: string;
806
+ previousDay?: string;
807
+ nextDay?: string;
678
808
  viewGroup: string;
679
809
  viewMonth: string;
680
810
  viewWeek: string;
811
+ viewDay?: string;
681
812
  viewAgenda: string;
682
813
  loading: string;
683
814
  retry: string;
@@ -704,6 +835,32 @@ interface SchedulingCalendarLabels {
704
835
  states: Record<SchedulingEntryState, string>;
705
836
  /** The words for `status`, used in the default accessible name and the agenda. */
706
837
  statuses?: Partial<Record<SchedulingStatus, string>>;
838
+ /** The header of the hour axis: it names the display zone. `{timeZone}` placeholder. */
839
+ timeZone?: string;
840
+ /** Names the strip of windows above the time grid. */
841
+ windows?: string;
842
+ /** "+N windows" when the strip has more windows than lanes. `{count}` placeholder. */
843
+ moreWindows?: string;
844
+ /** Accessible name of that control. `{count}` and `{date}` (the first day with a hidden window). */
845
+ moreWindowsLabel?: string;
846
+ /** Names the lane above the hours that holds all-day and long entries. */
847
+ topLane?: string;
848
+ /** The cue on the second-day part of an entry that crosses midnight. `{time}` is its start. */
849
+ continuesFrom?: string;
850
+ /** The time text of an agenda row whose entry has no time of day (`allDay`). */
851
+ allDay?: string;
852
+ /** Under an agenda day whose rows are not all listed. `{count}` placeholder. */
853
+ hiddenInDay?: string;
854
+ /** Under an agenda day that entries from an earlier day run into. `{count}` placeholder. */
855
+ continuesInDay?: string;
856
+ /** Read after an item's name when it can be moved. */
857
+ moveHint?: string;
858
+ /** Announced for a pending move. `{start}` and `{end}` placeholders. */
859
+ moveProposed?: string;
860
+ /** Announced when a pending move is dropped. */
861
+ moveCancelled?: string;
862
+ /** Announced when the time asked for does not exist that day. `{time}` is the time used instead. */
863
+ gapForward?: string;
707
864
  }
708
865
  declare const DEFAULT_SCHEDULING_CALENDAR_LABELS: SchedulingCalendarLabels;
709
866
  interface SchedulingCalendarProps {
@@ -724,8 +881,12 @@ interface SchedulingCalendarProps {
724
881
  /** Called by a click or Enter on a window span. */
725
882
  onSelectOverlay?: (overlay: SchedulingCalendarOverlay) => void;
726
883
  filter?: (entry: SchedulingCalendarEntry) => boolean;
727
- /** Replaces a chip's content. The default is the start time in `timeZone` (24 h) and the title. */
728
- renderEntry?: (entry: SchedulingCalendarEntry) => ReactNode;
884
+ /**
885
+ * Replaces a chip's content. The default is the start time in `timeZone` (24 h) and the title.
886
+ * In the time grid the second argument says how many text lines fit in the item (0: show the
887
+ * markers only); elsewhere it is not passed.
888
+ */
889
+ renderEntry?: (entry: SchedulingCalendarEntry, context?: TimeGridEntryContext) => ReactNode;
729
890
  locale?: string;
730
891
  /** First column of the month and week grids: 0 = Sunday … 6 = Saturday. Defaults to 1 (Monday). */
731
892
  weekStartsOn?: CalendarWeekday;
@@ -797,6 +958,49 @@ interface SchedulingCalendarProps {
797
958
  emptyNote?: ReactNode;
798
959
  /** Called by a click or Enter on a day number. */
799
960
  onSelectDate?: (date: string) => void;
961
+ /**
962
+ * The agenda as day groups built by the consumer: which entry is listed under which day,
963
+ * in which order, and how many are left out. When set, `view="agenda"` renders exactly
964
+ * these, each day under a heading, and never sorts, groups or counts. Unset keeps the flat
965
+ * list sorted by start.
966
+ */
967
+ agendaGroups?: SchedulingAgendaGroup[];
968
+ /** The heading level of an agenda day. Default 3. */
969
+ agendaHeadingLevel?: 2 | 3 | 4 | 5 | 6;
970
+ /** Above this many agenda rows only the rows near the viewport are mounted. Default 200. */
971
+ virtualizeAbove?: number;
972
+ /**
973
+ * `'counts'` draws each month cell with the consumer's `days[date].count` and markers
974
+ * only: no chips and no entry bars, and narrower columns, for a narrow screen. Windows keep
975
+ * their bar and name. Default `'full'`.
976
+ */
977
+ monthDensity?: 'full' | 'counts';
978
+ /**
979
+ * Draws `view="week"` as a time grid: seven day columns on an hour axis. `view="day"` is
980
+ * always a time grid. Default `false`: the week stays seven day cells.
981
+ */
982
+ timeGrid?: boolean;
983
+ /** An instant (ISO 8601). The time grid draws one line at it, in the column of its day. The component keeps no clock. */
984
+ now?: string;
985
+ /**
986
+ * Lets the user ask for a move in the time grid (drag, or Shift and an arrow key, then
987
+ * Enter). Without it, or without `onProposeMove`, items have no move affordance at all.
988
+ */
989
+ canMove?: boolean;
990
+ /** Minutes a move snaps to. Default 15. */
991
+ step?: number;
992
+ /**
993
+ * Called once per finished gesture with the window the user asks for. The calendar never
994
+ * moves the item: it draws entries where the props say, so an entry whose props do not
995
+ * change is back where it was. Return a promise to keep the outline until it settles.
996
+ */
997
+ onProposeMove?: (id: string, proposal: MoveProposal) => void | Promise<unknown>;
998
+ /** An entry running more than this many minutes past its first local midnight goes to the top lane. Default 360. */
999
+ topLaneCrossMidnightMinutes?: number;
1000
+ /** Rows of the top lane of the time grid. Default 3. */
1001
+ topLaneCap?: number;
1002
+ /** Lanes side by side in one day column of the time grid, at most. Fewer are used when the column is narrow. Default 4. */
1003
+ maxLanes?: number;
800
1004
  loading?: boolean;
801
1005
  error?: string;
802
1006
  onRetry?: () => void;
@@ -804,7 +1008,7 @@ interface SchedulingCalendarProps {
804
1008
  labels?: Partial<SchedulingCalendarLabels>;
805
1009
  }
806
1010
  /** Month/week/agenda calendar for UTC ranges rendered in an explicit IANA time zone. */
807
- declare function SchedulingCalendar({ entries, anchorDate, timeZone, view: controlledView, onViewChange, onAnchorDateChange, onSelectEntry, overlays, onSelectOverlay, filter, renderEntry, locale, weekStartsOn, formatDate, formatInstant: formatInstantProp, maxEntriesPerDay, onShowMore, renderDayBadge, days: dayInfo, dayEntries, spanLayout, windowLaneCap, spanLaneCap, legend, legendCaption, showHeader, notice, emptyNote, onSelectDate, loading, error, onRetry, className, labels: labelOverrides, }: SchedulingCalendarProps): react.JSX.Element;
1011
+ declare function SchedulingCalendar({ entries, anchorDate, timeZone, view: controlledView, onViewChange, onAnchorDateChange, onSelectEntry, overlays, onSelectOverlay, filter, renderEntry, locale, weekStartsOn, formatDate, formatInstant: formatInstantProp, maxEntriesPerDay, onShowMore, renderDayBadge, days: dayInfo, dayEntries, spanLayout, windowLaneCap, spanLaneCap, legend, legendCaption, showHeader, notice, emptyNote, onSelectDate, agendaGroups, agendaHeadingLevel, virtualizeAbove, monthDensity, timeGrid, now, canMove, step, onProposeMove, topLaneCrossMidnightMinutes, topLaneCap, maxLanes, loading, error, onRetry, className, labels: labelOverrides, }: SchedulingCalendarProps): react.JSX.Element;
808
1012
 
809
1013
  /**
810
1014
  * Every word the picker renders or announces (TENSOR RX-125, UIX-13). `{start}` and
@@ -5089,4 +5293,4 @@ declare function hsvToHex(value: HsvColor): string;
5089
5293
  declare function contrastRatio(background: string, foreground: string): number | undefined;
5090
5294
  declare function meetsContrast(background: string, foreground: string, minimum?: number): boolean;
5091
5295
 
5092
- export { type AccessStateProps, Alert, type AlertProps, type AlertTone, AppShell, type AppShellProps, type AppliedBrandProfileSnapshot, type AsyncOperationState, AsyncOperationStatus, type AsyncOperationStatusProps, Attachment, type AttachmentLabels, AttachmentList, type AttachmentListProps, type AttachmentProps, Avatar, AvatarGroup, type AvatarGroupProps, type AvatarProps, type BoundedRelationshipGraph, type BrandProfile, BrandProfileEditor, type BrandProfileEditorLabels, type BrandProfileEditorProps, type BrandProfileLogo, type BrandProfileTypography, BrandProfiles, type BreadcrumbItem, Breadcrumbs, type BreadcrumbsProps, BuilderCanvas, type BuilderCanvasItem, type BuilderCanvasLabels, type BuilderCanvasProps, type BuilderPaletteItem, BulkBar, type BulkBarProps, Button, ButtonGroup, type ButtonGroupProps, ButtonLink, type ButtonLinkProps, type ButtonProps, type ButtonSize, type ButtonVariant, type CalendarDay, type CalendarWeekday, Card, CardLink, type CardLinkProps, type CardProps, CellStrong, CellSub, Checkbox, type CheckboxProps, Chip, ChipGroup, type ChipGroupProps, type ChipProps, CollapsibleSection, type CollapsibleSectionProps, ColorPicker, type ColorPickerLabels, type ColorPickerProps, type ColumnFilter, Combobox, type ComboboxOption, type ComboboxProps, CommandGroup, type CommandGroupProps, CommandItem, type CommandItemProps, CommandPalette, type CommandPaletteProps, Comment, type CommentProps, Comments, type CommentsProps, Composer, ComposerBar, type ComposerBarProps, type ComposerProps, ConfirmDialog, type ConfirmDialogProps, ContentList, ContentListItem, type ContentListItemProps, type ContentListProps, CopyButton, type CopyButtonProps, DAY, DEFAULT_ATTACHMENT_LABELS, DEFAULT_BRAND_PROFILE_EDITOR_LABELS, DEFAULT_BUILDER_CANVAS_LABELS, DEFAULT_COLOR_PICKER_LABELS, DEFAULT_DATE_RANGE_PICKER_LABELS, DEFAULT_DIFF_VIEWER_LABELS, DEFAULT_ENTITY_PICKER_LABELS, DEFAULT_FILE_UPLOAD_LABELS, DEFAULT_FILTER_EDITOR_LABELS, DEFAULT_FILTER_SUMMARY_LABELS, DEFAULT_LIGHTBOX_LABELS, DEFAULT_MATCH_REVIEW_LABELS, DEFAULT_PAGINATION_LABELS, DEFAULT_RELATIONSHIP_GRAPH_LABELS, DEFAULT_RULE_BUILDER_LABELS, DEFAULT_RULE_SUMMARY_WORDS, DEFAULT_RULE_VALIDATION_MESSAGES, DEFAULT_SAVE_STATUS_LABELS, DEFAULT_SCHEDULING_CALENDAR_LABELS, DEFAULT_SCHEDULING_TIMELINE_LABELS, DEFAULT_STEP_STATE_LABELS, DEFAULT_TEXT_DIFF_LABELS, DashboardGrid, type DashboardGridBreakpoint, type DashboardGridColumnCount, type DashboardGridColumns, type DashboardGridGap, DashboardGridItem, type DashboardGridItemProps, type DashboardGridProps, type DashboardGridSpan, DateRangePicker, type DateRangePickerLabels, type DateRangePickerProps, type DateRangeValue, DescriptionItem, type DescriptionItemProps, DescriptionList, type DescriptionListItem, type DescriptionListProps, DetailLayout, type DetailLayoutProps, DetailPage, type DetailPageLinkProps, type DetailPageMetric, type DetailPageProps, type DetailPageTab, type DiffEntry, type DiffKind, type DiffResolution, type DiffSummary, DiffViewer, type DiffViewerLabels, type DiffViewerProps, Drawer, type DrawerProps, EmptyState, type EmptyStateProps, EntityPicker, type EntityPickerLabels, type EntityPickerProps, ErrorState, type ErrorStateProps, EventRow, type EventRowProps, ExpandToggle, type ExpandToggleProps, FeaturedRundown, FeaturedRundownItem, type FeaturedRundownItemProps, type FeaturedRundownProps, FeaturedStage, type FeaturedStageProps, Field, type FieldProps, type FileRejection, type FileRejectionReason, type FileSizeFormatter, type FileSizeOptions, FileUpload, type FileUploadItem, type FileUploadLabels, type FileUploadProps, type FileUploadStatus, type FilterChoice, FilterEditor, type FilterEditorLabels, type FilterEditorProps, type FilterField, type FilterKind, type FilterOp, type FilterOption, FilterPopover, type FilterPopoverProps, type FilterPreset, type FilterSummaryLabels, type FilterValue, type FilterValueKind, FilteredEmptyState, type FlatNode, Flow, FlowNode, type FlowNodeProps, type FlowNodeState, type FlowProps, type FlowVariant, type FoldedText, ForbiddenState, HOUR, Heartbeat, type HeartbeatProps, type HeartbeatState, Highlighted, type HighlightedProps, type HsvColor, Inbox, InboxDetail, type InboxDetailProps, InboxItem, type InboxItemProps, InboxList, type InboxListProps, type InboxProps, InfoTip, type InfoTipProps, Input, InputGroup, type InputGroupProps, type InputProps, type JsonPrimitive, type JsonValue, Kanban, KanbanCard, type KanbanCardProps, KanbanColumn, type KanbanColumnProps, type KanbanMoveDirection, type KanbanProps, Kbd, KbdCombo, type KbdComboProps, type KbdPlatform, type KbdProps, Label, type LabelProps, type LaneCluster, type LaneInterval, type LanePlacement, type LayeredColumn, type LayeredEdgeClassification, type LayeredEdgeKind, type LayeredItem, type LayeredLayout, type LayeredLayoutOptions, type LayeredNavigationKey, type LayoutMonthSpansOptions, LicensePositionBar, type LicensePositionBarProps, Lightbox, type LightboxItem, type LightboxLabels, type LightboxProps, List, ListItem, type ListItemProps, type ListProps, LiveIndicator, type LiveIndicatorProps, LoadingState, type LoadingStateProps, Mark, type MarkProps, type MatchBulkResult, MatchReview, type MatchReviewAction, type MatchReviewCandidate, type MatchReviewField, type MatchReviewLabels, type MatchReviewProps, Menu, MenuGroup, type MenuGroupProps, MenuItem, type MenuItemAttributes, MenuItemCheckbox, type MenuItemCheckboxProps, type MenuItemProps, MenuItemRadio, type MenuItemRadioProps, type MenuProps, MenuRadioGroup, type MenuRadioGroupProps, MenuSeparator, Meter, type MeterProps, type MeterTone, MetricInput, type MetricInputProps, Modal, type ModalProps, type MonthSpanGroup, type MonthSpanInput, type MonthSpanLayout, NUMBER_FILTER_OPERATORS, type NavFavouriteItem, NavFavourites, type NavFavouritesLabels, type NavFavouritesProps, NavGroup, type NavGroupProps, NavItem, type NavItemProps, NewsLead, type NewsLeadProps, NotFoundState, Note, type NoteProps, type NoteTone, NoticeQueue, type NoticeQueueProps, type NumberFilterOperator, type PackLanesOptions, type PackedLanes, PageHeader, type PageHeaderProps, PageIntro, type PageIntroProps, Pagination, type PaginationLabels, type PaginationProps, Peek, type PeekProps, type PillSize, type PillTone, type PillTreatment, Pipeline, type PipelineProps, PipelineStage, type PipelineStageProps, type PipelineStageState, type PlacedMonthSpan, type PlacedSpan, Placement, Popconfirm, type PopconfirmProps, Popover, type PopoverProps, type PositionedRelationshipNode, type Primitive, Progress, type ProgressProps, PromptDialog, type PromptDialogProps, Prose, type ProseProps, Radio, RadioGroup, type RadioGroupProps, type RadioProps, type RelatedLinkItem, RelatedLinks, type RelatedLinksProps, RelationshipGraph, type RelationshipGraphArrow, type RelationshipGraphCluster, type RelationshipGraphEdge, type RelationshipGraphLabels, type RelationshipGraphLegendItem, type RelationshipGraphNode, type RelationshipGraphProps, RelativeTime, type RelativeTimeFormatContext, type RelativeTimeProps, type RelativeTimeUnit, type RelativeTimeValue, ResourceGrid, type ResourceGridProps, type RgbColor, type RoutedEdge, type Row, RowAction, type RowActionProps, RowActions, type RowActionsProps, type RuleAction, type RuleActionDefinition, RuleBuilder, type RuleBuilderLabels, type RuleBuilderProps, type RuleCheck, type RuleCondition, type RuleDefinition, type RuleFieldDefinition, type RuleGroup, type RuleOperatorDefinition, type RuleSummaryWords, type RuleValidationIssue, type RuleValidationOptions, type RuleValueEditorProps, SaveStatus, type SaveStatusLabels, type SaveStatusProps, type SaveStatusState, type SavedViewItem, SavedViewMenu, type SavedViewMenuProps, type SavedViewSection, type SchedulingBand, SchedulingCalendar, type SchedulingCalendarDay, type SchedulingCalendarEntry, type SchedulingCalendarLabels, type SchedulingCalendarOverlay, type SchedulingCalendarProps, type SchedulingCalendarView, type SchedulingDatePart, type SchedulingEntryState, type SchedulingLegendItem, type SchedulingMarker, type SchedulingMarkerEmphasis, type SchedulingOverlayKind, type SchedulingOverlayPattern, type SchedulingStatus, SchedulingTimeline, type SchedulingTimelineItem, type SchedulingTimelineLabels, type SchedulingTimelineLane, type SchedulingTimelineMarker, type SchedulingTimelineOverlay, type SchedulingTimelineOverlayKind, type SchedulingTimelineProps, type SearchSegment, SearchSuggest, type SearchSuggestAction, type SearchSuggestOption, type SearchSuggestProps, SectionHead, type SectionHeadProps, type Segment, Segmented, SegmentedOption, type SegmentedOptionProps, type SegmentedProps, Select, type SelectAllState, type SelectGroup, type SelectLabels, type SelectOption, type SelectProps, type ShellNav, Sidebar, type SidebarProps, SidebarSection, type SidebarSectionProps, Skeleton, type SkeletonProps, type SortDir, type SortDirection, type SortKey, Spinner, type SpinnerProps, StarButton, type StarButtonProps, Stat, StatLine, type StatLineItem, type StatLineProps, type StatProps, type StatTrend, type StateVariant, StatusPill, type StatusPillProps, StatusRow, type StatusRowProps, Step, type StepProps, type StepState, type StepStateLabels, Steps, type StepsProps, SubNavItem, type SubNavItemProps, type SummarizeFilterOptions, Switch, type SwitchProps, TEXT_FILTER_OPERATORS, TOAST_LEAVE_MS, Tab, TabPanel, type TabPanelProps, type TabProps, Table, type TableDensity, type TableProps, TableWrap, type TableWrapProps, Tabs, type TabsProps, Td, type TdProps, TextDiff, type TextDiffGranularity, type TextDiffLabels, type TextDiffLine, type TextDiffOp, type TextDiffOptions, type TextDiffProps, type TextDiffResult, type TextDiffRow, type TextDiffSegment, type TextFilterOperator, Textarea, type TextareaProps, Th, type ThProps, Timeline, TimelineItem, type TimelineItemProps, type TimelineProps, type TimelineRange, type TimelineScale, type TimelineSpan, type TimelineTick, Toast, type ToastAction, type ToastApi, type ToastDismissReason, type ToastKind, type ToastOptions, type ToastPromiseMessages, type ToastProps, type ToastRecord, type ToastStore, type ToastTone, Toaster, type ToasterProps, ToggleRow, type ToggleRowProps, Tooltip, type TooltipProps, Tr, type TrProps, Tree, type TreeLike, type TreeNavAction, type TreeNodeData, type TreeNodeProps, type TreeProps, type UixLabels, UixLabelsProvider, type UixLabelsProviderProps, type UixLinkProps, type UixRenderLink, type UndoableToastOptions, type UseAnchoredPositionOptions, type UseTableOptions, type UseTableResult, type UseVirtualRowsOptions, type UseVirtualRowsResult, UserChip, type UserChipProps, ViewMenu, type ViewMenuColumn, type ViewMenuColumnLabels, type ViewMenuProps, type ViewState, type VirtualWindow, type ZonedDateSpan, type ZonedDayBounds, type ZonedDayShift, type ZonedDaySpan, type ZonedHourSlot, addCalendarDays, addCalendarMonths, addZonedDays, appendRuleNode, applyBrandProfile, applyFilters, boundRelationshipGraph, buildMonthGrid, buildThreeWayDiff, cachedDateTimeFormat, clampMetricValue, clampWidth, classifyLayeredEdges, clusterIdFor, contrastRatio, createToastApi, createToastStore, cx, dashboardGridClassName, dashboardGridItemClassName, defaultTimelineStep, diffText, diffTokens, emptyFilterValue, enumerateDateKeys, enumerateDateSpan, fileKind, fileMatchesAccept, filterComboboxOptions, findRuleNodeDepth, flattenTree, foldForSearch, formatFileSize, hexToRgb, highlightSegments, hsvToHex, hsvToRgb, isDateInRange, isDateUnavailable, isFilterEmpty, isRuleGroup, itemDaySpan, layeredNeighbor, layoutLane, layoutLayeredGraph, layoutMonthSpans, layoutRelationshipGraph, mapRuleGroup, matchFilter, matchFilterPreset, meetsContrast, mergePinned, moveRuleNode, multiSort, nextSortDir, normalizeHex, packLanes, parseDateValue, parseMetricValue, parseView, partitionFiles, pixelsToMs, placeSpan, rankOverflow, relationshipNeighbors, relativeTimeValue, removeRuleNode, renderPlainLink, reorder, restoreBrandProfile, rgbToHex, rgbToHsv, ruleDepth, schedulingGridDays, searchRows, searchSegments, selectAllState, selectRangeDate, serializeView, setRuleCombinator, shiftSpan, shouldVirtualize, snapToStep, startOfMonth, stepMetricValue, summarizeDiff, summarizeFilter, summarizeRule, textDiffRows, timelineTicks, toDateKey, toast, toggleId, togglePage, toggleSort, tokenizeText, traverseRelationshipNode, treeNav, useAnchoredPosition, useDialog, useTable, useUixLabels, useVirtualRows, validateRuleDefinition, virtualWindow, wrapEdgeLabel, zonedDateKey, zonedDateSpan, zonedDayBounds, zonedDaySpan, zonedHourSlots, zonedTimeOfDay };
5296
+ export { type AccessStateProps, Alert, type AlertProps, type AlertTone, AppShell, type AppShellProps, type AppliedBrandProfileSnapshot, type AsyncOperationState, AsyncOperationStatus, type AsyncOperationStatusProps, Attachment, type AttachmentLabels, AttachmentList, type AttachmentListProps, type AttachmentProps, Avatar, AvatarGroup, type AvatarGroupProps, type AvatarProps, type BoundedRelationshipGraph, type BrandProfile, BrandProfileEditor, type BrandProfileEditorLabels, type BrandProfileEditorProps, type BrandProfileLogo, type BrandProfileTypography, BrandProfiles, type BreadcrumbItem, Breadcrumbs, type BreadcrumbsProps, BuilderCanvas, type BuilderCanvasItem, type BuilderCanvasLabels, type BuilderCanvasProps, type BuilderPaletteItem, BulkBar, type BulkBarProps, Button, ButtonGroup, type ButtonGroupProps, ButtonLink, type ButtonLinkProps, type ButtonProps, type ButtonSize, type ButtonVariant, type CalendarDay, type CalendarWeekday, Card, CardLink, type CardLinkProps, type CardProps, CellStrong, CellSub, Checkbox, type CheckboxProps, Chip, ChipGroup, type ChipGroupProps, type ChipProps, CollapsibleSection, type CollapsibleSectionProps, ColorPicker, type ColorPickerLabels, type ColorPickerProps, type ColumnFilter, Combobox, type ComboboxOption, type ComboboxProps, CommandGroup, type CommandGroupProps, CommandItem, type CommandItemProps, CommandPalette, type CommandPaletteProps, Comment, type CommentProps, Comments, type CommentsProps, Composer, ComposerBar, type ComposerBarProps, type ComposerProps, ConfirmDialog, type ConfirmDialogProps, ContentList, ContentListItem, type ContentListItemProps, type ContentListProps, CopyButton, type CopyButtonProps, DAY, DEFAULT_ATTACHMENT_LABELS, DEFAULT_BRAND_PROFILE_EDITOR_LABELS, DEFAULT_BUILDER_CANVAS_LABELS, DEFAULT_COLOR_PICKER_LABELS, DEFAULT_DATE_RANGE_PICKER_LABELS, DEFAULT_DIFF_VIEWER_LABELS, DEFAULT_ENTITY_PICKER_LABELS, DEFAULT_FILE_UPLOAD_LABELS, DEFAULT_FILTER_EDITOR_LABELS, DEFAULT_FILTER_SUMMARY_LABELS, DEFAULT_LIGHTBOX_LABELS, DEFAULT_MATCH_REVIEW_LABELS, DEFAULT_PAGINATION_LABELS, DEFAULT_RELATIONSHIP_GRAPH_LABELS, DEFAULT_RULE_BUILDER_LABELS, DEFAULT_RULE_SUMMARY_WORDS, DEFAULT_RULE_VALIDATION_MESSAGES, DEFAULT_SAVE_STATUS_LABELS, DEFAULT_SCHEDULING_CALENDAR_LABELS, DEFAULT_SCHEDULING_TIMELINE_LABELS, DEFAULT_STEP_STATE_LABELS, DEFAULT_TEXT_DIFF_LABELS, DashboardGrid, type DashboardGridBreakpoint, type DashboardGridColumnCount, type DashboardGridColumns, type DashboardGridGap, DashboardGridItem, type DashboardGridItemProps, type DashboardGridProps, type DashboardGridSpan, DateRangePicker, type DateRangePickerLabels, type DateRangePickerProps, type DateRangeValue, type DaySpanLayout, DescriptionItem, type DescriptionItemProps, DescriptionList, type DescriptionListItem, type DescriptionListProps, DetailLayout, type DetailLayoutProps, DetailPage, type DetailPageLinkProps, type DetailPageMetric, type DetailPageProps, type DetailPageTab, type DiffEntry, type DiffKind, type DiffResolution, type DiffSummary, DiffViewer, type DiffViewerLabels, type DiffViewerProps, Drawer, type DrawerProps, EmptyState, type EmptyStateProps, EntityPicker, type EntityPickerLabels, type EntityPickerProps, ErrorState, type ErrorStateProps, EventRow, type EventRowProps, ExpandToggle, type ExpandToggleProps, FeaturedRundown, FeaturedRundownItem, type FeaturedRundownItemProps, type FeaturedRundownProps, FeaturedStage, type FeaturedStageProps, Field, type FieldProps, type FileRejection, type FileRejectionReason, type FileSizeFormatter, type FileSizeOptions, FileUpload, type FileUploadItem, type FileUploadLabels, type FileUploadProps, type FileUploadStatus, type FilterChoice, FilterEditor, type FilterEditorLabels, type FilterEditorProps, type FilterField, type FilterKind, type FilterOp, type FilterOption, FilterPopover, type FilterPopoverProps, type FilterPreset, type FilterSummaryLabels, type FilterValue, type FilterValueKind, FilteredEmptyState, type FlatNode, Flow, FlowNode, type FlowNodeProps, type FlowNodeState, type FlowProps, type FlowVariant, type FoldedText, ForbiddenState, HOUR, Heartbeat, type HeartbeatProps, type HeartbeatState, Highlighted, type HighlightedProps, type HsvColor, Inbox, InboxDetail, type InboxDetailProps, InboxItem, type InboxItemProps, InboxList, type InboxListProps, type InboxProps, InfoTip, type InfoTipProps, Input, InputGroup, type InputGroupProps, type InputProps, type JsonPrimitive, type JsonValue, Kanban, KanbanCard, type KanbanCardProps, KanbanColumn, type KanbanColumnProps, type KanbanMoveDirection, type KanbanProps, Kbd, KbdCombo, type KbdComboProps, type KbdPlatform, type KbdProps, Label, type LabelProps, type LaneCluster, type LaneInterval, type LanePlacement, type LayeredColumn, type LayeredEdgeClassification, type LayeredEdgeKind, type LayeredItem, type LayeredLayout, type LayeredLayoutOptions, type LayeredNavigationKey, type LayoutMonthSpansOptions, LicensePositionBar, type LicensePositionBarProps, Lightbox, type LightboxItem, type LightboxLabels, type LightboxProps, List, ListItem, type ListItemProps, type ListProps, LiveIndicator, type LiveIndicatorProps, LoadingState, type LoadingStateProps, Mark, type MarkProps, type MatchBulkResult, MatchReview, type MatchReviewAction, type MatchReviewCandidate, type MatchReviewField, type MatchReviewLabels, type MatchReviewProps, Menu, MenuGroup, type MenuGroupProps, MenuItem, type MenuItemAttributes, MenuItemCheckbox, type MenuItemCheckboxProps, type MenuItemProps, MenuItemRadio, type MenuItemRadioProps, type MenuProps, MenuRadioGroup, type MenuRadioGroupProps, MenuSeparator, Meter, type MeterProps, type MeterTone, MetricInput, type MetricInputProps, Modal, type ModalProps, type MonthSpanGroup, type MonthSpanInput, type MonthSpanLayout, type MoveProposal, NUMBER_FILTER_OPERATORS, type NavFavouriteItem, NavFavourites, type NavFavouritesLabels, type NavFavouritesProps, NavGroup, type NavGroupProps, NavItem, type NavItemProps, NewsLead, type NewsLeadProps, NotFoundState, Note, type NoteProps, type NoteTone, NoticeQueue, type NoticeQueueProps, type NumberFilterOperator, type PackLanesOptions, type PackedLanes, PageHeader, type PageHeaderProps, PageIntro, type PageIntroProps, Pagination, type PaginationLabels, type PaginationProps, Peek, type PeekProps, type PillSize, type PillTone, type PillTreatment, Pipeline, type PipelineProps, PipelineStage, type PipelineStageProps, type PipelineStageState, type PlacedDaySpan, type PlacedMonthSpan, type PlacedSpan, Placement, Popconfirm, type PopconfirmProps, Popover, type PopoverProps, type PositionedRelationshipNode, type Primitive, Progress, type ProgressProps, PromptDialog, type PromptDialogProps, Prose, type ProseProps, Radio, RadioGroup, type RadioGroupProps, type RadioProps, type RelatedLinkItem, RelatedLinks, type RelatedLinksProps, RelationshipGraph, type RelationshipGraphArrow, type RelationshipGraphCluster, type RelationshipGraphEdge, type RelationshipGraphLabels, type RelationshipGraphLegendItem, type RelationshipGraphNode, type RelationshipGraphProps, RelativeTime, type RelativeTimeFormatContext, type RelativeTimeProps, type RelativeTimeUnit, type RelativeTimeValue, ResourceGrid, type ResourceGridProps, type RgbColor, type RoutedEdge, type Row, RowAction, type RowActionProps, RowActions, type RowActionsProps, type RuleAction, type RuleActionDefinition, RuleBuilder, type RuleBuilderLabels, type RuleBuilderProps, type RuleCheck, type RuleCondition, type RuleDefinition, type RuleFieldDefinition, type RuleGroup, type RuleOperatorDefinition, type RuleSummaryWords, type RuleValidationIssue, type RuleValidationOptions, type RuleValueEditorProps, SaveStatus, type SaveStatusLabels, type SaveStatusProps, type SaveStatusState, type SavedViewItem, SavedViewMenu, type SavedViewMenuProps, type SavedViewSection, type SchedulingAgendaGroup, type SchedulingBand, SchedulingCalendar, type SchedulingCalendarDay, type SchedulingCalendarEntry, type SchedulingCalendarLabels, type SchedulingCalendarOverlay, type SchedulingCalendarProps, type SchedulingCalendarView, type SchedulingDatePart, type SchedulingEntryState, type SchedulingLegendItem, type SchedulingMarker, type SchedulingMarkerEmphasis, type SchedulingOverlayKind, type SchedulingOverlayPattern, type SchedulingStatus, SchedulingTimeline, type SchedulingTimelineItem, type SchedulingTimelineLabels, type SchedulingTimelineLane, type SchedulingTimelineMarker, type SchedulingTimelineOverlay, type SchedulingTimelineOverlayKind, type SchedulingTimelineProps, type SearchSegment, SearchSuggest, type SearchSuggestAction, type SearchSuggestOption, type SearchSuggestProps, SectionHead, type SectionHeadProps, type Segment, Segmented, SegmentedOption, type SegmentedOptionProps, type SegmentedProps, Select, type SelectAllState, type SelectGroup, type SelectLabels, type SelectOption, type SelectProps, type ShellNav, Sidebar, type SidebarProps, SidebarSection, type SidebarSectionProps, Skeleton, type SkeletonProps, type SortDir, type SortDirection, type SortKey, Spinner, type SpinnerProps, StarButton, type StarButtonProps, Stat, StatLine, type StatLineItem, type StatLineProps, type StatProps, type StatTrend, type StateVariant, StatusPill, type StatusPillProps, StatusRow, type StatusRowProps, Step, type StepProps, type StepState, type StepStateLabels, Steps, type StepsProps, SubNavItem, type SubNavItemProps, type SummarizeFilterOptions, Switch, type SwitchProps, TEXT_FILTER_OPERATORS, TOAST_LEAVE_MS, TOP_LANE_CROSS_MIDNIGHT_MINUTES, Tab, TabPanel, type TabPanelProps, type TabProps, Table, type TableDensity, type TableProps, TableWrap, type TableWrapProps, Tabs, type TabsProps, Td, type TdProps, TextDiff, type TextDiffGranularity, type TextDiffLabels, type TextDiffLine, type TextDiffOp, type TextDiffOptions, type TextDiffProps, type TextDiffResult, type TextDiffRow, type TextDiffSegment, type TextFilterOperator, Textarea, type TextareaProps, Th, type ThProps, type TimeGridDayLayout, type TimeGridEntryContext, type TimeGridEntryInput, type TimeGridPart, type TimeGridSegment, Timeline, TimelineItem, type TimelineItemProps, type TimelineProps, type TimelineRange, type TimelineScale, type TimelineSpan, type TimelineTick, Toast, type ToastAction, type ToastApi, type ToastDismissReason, type ToastKind, type ToastOptions, type ToastPromiseMessages, type ToastProps, type ToastRecord, type ToastStore, type ToastTone, Toaster, type ToasterProps, ToggleRow, type ToggleRowProps, Tooltip, type TooltipProps, Tr, type TrProps, Tree, type TreeLike, type TreeNavAction, type TreeNodeData, type TreeNodeProps, type TreeProps, type UixLabels, UixLabelsProvider, type UixLabelsProviderProps, type UixLinkProps, type UixRenderLink, type UndoableToastOptions, type UseAnchoredPositionOptions, type UseTableOptions, type UseTableResult, type UseVirtualRowsOptions, type UseVirtualRowsResult, UserChip, type UserChipProps, ViewMenu, type ViewMenuColumn, type ViewMenuColumnLabels, type ViewMenuProps, type ViewState, type VirtualWindow, type ZonedDateSpan, type ZonedDayBounds, type ZonedDayShift, type ZonedDaySpan, type ZonedHourSlot, addCalendarDays, addCalendarMonths, addZonedDays, appendRuleNode, applyBrandProfile, applyFilters, boundRelationshipGraph, buildMonthGrid, buildThreeWayDiff, cachedDateTimeFormat, clampMetricValue, clampWidth, classifyLayeredEdges, clusterIdFor, contrastRatio, createToastApi, createToastStore, cx, dashboardGridClassName, dashboardGridItemClassName, defaultTimelineStep, diffText, diffTokens, emptyFilterValue, enumerateDateKeys, enumerateDateSpan, fileKind, fileMatchesAccept, filterComboboxOptions, findRuleNodeDepth, flattenTree, foldForSearch, formatFileSize, hexToRgb, highlightSegments, hsvToHex, hsvToRgb, isDateInRange, isDateUnavailable, isFilterEmpty, isRuleGroup, itemDaySpan, layeredNeighbor, layoutDaySpans, layoutLane, layoutLayeredGraph, layoutMonthSpans, layoutRelationshipGraph, layoutTimeGridDay, mapRuleGroup, matchFilter, matchFilterPreset, meetsContrast, mergePinned, moveRuleNode, multiSort, nextSortDir, normalizeHex, packLanes, parseDateValue, parseMetricValue, parseView, partitionFiles, pixelsToMs, placeSpan, placesInTopLane, proposeMove, rankOverflow, relationshipNeighbors, relativeTimeValue, removeRuleNode, renderPlainLink, reorder, restoreBrandProfile, rgbToHex, rgbToHsv, ruleDepth, schedulingGridDays, searchRows, searchSegments, selectAllState, selectRangeDate, serializeView, setRuleCombinator, shiftSpan, shouldVirtualize, snapToStep, startOfMonth, stepMetricValue, summarizeDiff, summarizeFilter, summarizeRule, textDiffRows, timelineTicks, toDateKey, toast, toggleId, togglePage, toggleSort, tokenizeText, traverseRelationshipNode, treeNav, useAnchoredPosition, useDialog, useTable, useUixLabels, useVirtualRows, validateRuleDefinition, virtualWindow, wrapEdgeLabel, zonedDateKey, zonedDateSpan, zonedDayBounds, zonedDaySpan, zonedHourSlots, zonedTimeOfDay };
package/dist/index.d.ts CHANGED
@@ -90,8 +90,8 @@ export { JsonPrimitive, JsonValue } from './json-value.js';
90
90
  export { DEFAULT_RULE_BUILDER_LABELS, RuleActionDefinition, RuleBuilder, RuleBuilderLabels, RuleBuilderProps, RuleFieldDefinition, RuleOperatorDefinition, RuleValueEditorProps } from './components/RuleBuilder.js';
91
91
  export { DEFAULT_RULE_SUMMARY_WORDS, DEFAULT_RULE_VALIDATION_MESSAGES, RuleAction, RuleCheck, RuleCondition, RuleDefinition, RuleGroup, RuleSummaryWords, RuleValidationIssue, RuleValidationOptions, appendRuleNode, findRuleNodeDepth, isRuleGroup, mapRuleGroup, moveRuleNode, removeRuleNode, ruleDepth, setRuleCombinator, summarizeRule, validateRuleDefinition } from './rule-builder-model.js';
92
92
  export { BuilderCanvas, BuilderCanvasItem, BuilderCanvasLabels, BuilderCanvasProps, BuilderPaletteItem, DEFAULT_BUILDER_CANVAS_LABELS } from './components/BuilderCanvas.js';
93
- export { DEFAULT_SCHEDULING_CALENDAR_LABELS, SchedulingBand, SchedulingCalendar, SchedulingCalendarDay, SchedulingCalendarEntry, SchedulingCalendarLabels, SchedulingCalendarOverlay, SchedulingCalendarProps, SchedulingCalendarView, SchedulingDatePart, SchedulingEntryState, SchedulingLegendItem, SchedulingMarker, SchedulingMarkerEmphasis, SchedulingOverlayKind, SchedulingOverlayPattern, SchedulingStatus } from './components/SchedulingCalendar.js';
94
- export { LayoutMonthSpansOptions, MonthSpanGroup, MonthSpanInput, MonthSpanLayout, PlacedMonthSpan, itemDaySpan, layoutMonthSpans, schedulingGridDays } from './scheduling-calendar-model.js';
93
+ export { D as DEFAULT_SCHEDULING_CALENDAR_LABELS, S as SchedulingAgendaGroup, a as SchedulingBand, b as SchedulingCalendar, c as SchedulingCalendarDay, d as SchedulingCalendarEntry, e as SchedulingCalendarLabels, f as SchedulingCalendarOverlay, g as SchedulingCalendarProps, h as SchedulingCalendarView, i as SchedulingDatePart, j as SchedulingEntryState, k as SchedulingLegendItem, l as SchedulingMarker, m as SchedulingMarkerEmphasis, n as SchedulingOverlayKind, o as SchedulingOverlayPattern, p as SchedulingStatus, T as TimeGridEntryContext } from './SchedulingCalendar-DSLQ6AY5.js';
94
+ export { DaySpanLayout, LayoutMonthSpansOptions, MonthSpanGroup, MonthSpanInput, MonthSpanLayout, MoveProposal, PlacedDaySpan, PlacedMonthSpan, TOP_LANE_CROSS_MIDNIGHT_MINUTES, TimeGridDayLayout, TimeGridEntryInput, TimeGridPart, TimeGridSegment, itemDaySpan, layoutDaySpans, layoutMonthSpans, layoutTimeGridDay, placesInTopLane, proposeMove, schedulingGridDays } from './scheduling-calendar-model.js';
95
95
  export { DEFAULT_SCHEDULING_TIMELINE_LABELS, SchedulingTimeline, SchedulingTimelineItem, SchedulingTimelineLabels, SchedulingTimelineLane, SchedulingTimelineMarker, SchedulingTimelineOverlay, SchedulingTimelineOverlayKind, SchedulingTimelineProps } from './components/SchedulingTimeline.js';
96
96
  export { DAY, HOUR, PlacedSpan, TimelineRange, TimelineScale, TimelineSpan, TimelineTick, defaultTimelineStep, layoutLane, pixelsToMs, placeSpan, shiftSpan, snapToStep, timelineTicks } from './scheduling-timeline-model.js';
97
97
  export { DEFAULT_DATE_RANGE_PICKER_LABELS, DateRangePicker, DateRangePickerLabels, DateRangePickerProps } from './components/DateRangePicker.js';
package/dist/index.js CHANGED
@@ -139,7 +139,16 @@ import {
139
139
  } from "./rule-builder-model.js";
140
140
  import { BuilderCanvas, DEFAULT_BUILDER_CANVAS_LABELS } from "./components/BuilderCanvas.js";
141
141
  import { DEFAULT_SCHEDULING_CALENDAR_LABELS, SchedulingCalendar } from "./components/SchedulingCalendar.js";
142
- import { itemDaySpan, layoutMonthSpans, schedulingGridDays } from "./scheduling-calendar-model.js";
142
+ import {
143
+ TOP_LANE_CROSS_MIDNIGHT_MINUTES,
144
+ itemDaySpan,
145
+ layoutDaySpans,
146
+ layoutMonthSpans,
147
+ layoutTimeGridDay,
148
+ placesInTopLane,
149
+ proposeMove,
150
+ schedulingGridDays
151
+ } from "./scheduling-calendar-model.js";
143
152
  import { DEFAULT_SCHEDULING_TIMELINE_LABELS, SchedulingTimeline } from "./components/SchedulingTimeline.js";
144
153
  import {
145
154
  DAY,
@@ -359,6 +368,7 @@ export {
359
368
  Switch,
360
369
  TEXT_FILTER_OPERATORS,
361
370
  TOAST_LEAVE_MS,
371
+ TOP_LANE_CROSS_MIDNIGHT_MINUTES,
362
372
  Tab,
363
373
  TabPanel,
364
374
  Table,
@@ -420,10 +430,12 @@ export {
420
430
  isRuleGroup,
421
431
  itemDaySpan,
422
432
  layeredNeighbor,
433
+ layoutDaySpans,
423
434
  layoutLane,
424
435
  layoutLayeredGraph,
425
436
  layoutMonthSpans,
426
437
  layoutRelationshipGraph,
438
+ layoutTimeGridDay,
427
439
  mapRuleGroup,
428
440
  matchFilterPreset,
429
441
  meetsContrast,
@@ -435,6 +447,8 @@ export {
435
447
  partitionFiles,
436
448
  pixelsToMs,
437
449
  placeSpan,
450
+ placesInTopLane,
451
+ proposeMove,
438
452
  rankOverflow,
439
453
  relationshipNeighbors,
440
454
  relativeTimeValue,
@@ -1,7 +1,7 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode } from 'react';
3
3
  import { PaginationLabels } from './components/Pagination.js';
4
- import { SchedulingCalendarLabels } from './components/SchedulingCalendar.js';
4
+ import { e as SchedulingCalendarLabels } from './SchedulingCalendar-DSLQ6AY5.js';
5
5
  import { DateRangePickerLabels } from './components/DateRangePicker.js';
6
6
  import { SchedulingTimelineLabels } from './components/SchedulingTimeline.js';
7
7
  import { TextDiffLabels } from './components/TextDiff.js';
@@ -62,5 +62,108 @@ declare function schedulingGridDays(anchorDate: string, view: 'month' | 'week',
62
62
  * (never a UTC date). `days` are the grid's date keys, a whole number of weeks.
63
63
  */
64
64
  declare function layoutMonthSpans(spans: readonly MonthSpanInput[], days: readonly string[], options: LayoutMonthSpansOptions): MonthSpanLayout;
65
+ /** How far past its first local midnight an entry may run and still be drawn in the grid (operator decision E12). */
66
+ declare const TOP_LANE_CROSS_MIDNIGHT_MINUTES = 360;
67
+ interface TimeGridEntryInput {
68
+ id: string;
69
+ /** Half-open `[start, end)` instants (ISO 8601, epoch ms or Date). */
70
+ start: string | number | Date;
71
+ end: string | number | Date;
72
+ /** An entry with no time of day: always drawn in the top lane. */
73
+ allDay?: boolean;
74
+ }
75
+ /**
76
+ * Whether an entry is drawn in the top lane of the time grid instead of in the day columns:
77
+ * it is all-day, it is longer than one day (it ends after the same wall-clock time on the
78
+ * next day), or it runs more than `crossMidnightMinutes` past its first local midnight. A
79
+ * shorter midnight-crosser stays in the grid as a start segment and a continuation segment.
80
+ */
81
+ declare function placesInTopLane(entry: Pick<TimeGridEntryInput, 'start' | 'end' | 'allDay'>, timeZone: string, options?: {
82
+ crossMidnightMinutes?: number;
83
+ }): boolean;
84
+ /** Which part of an entry a grid segment is: all of it, its first day, or the rest on the next day. */
85
+ type TimeGridPart = 'whole' | 'start' | 'continuation';
86
+ interface TimeGridSegment {
87
+ id: string;
88
+ part: TimeGridPart;
89
+ /** The segment, clipped to the day (epoch ms). */
90
+ start: number;
91
+ end: number;
92
+ /** Real hours from the start of the day to the segment. Multiply by the hour height. */
93
+ offsetHours: number;
94
+ /** The length of the segment in real hours. */
95
+ lengthHours: number;
96
+ /** 0-based lane inside its overlap cluster. */
97
+ lane: number;
98
+ /** Lanes its cluster uses: the segment is this fraction of the column wide. */
99
+ laneCount: number;
100
+ }
101
+ interface TimeGridDayLayout {
102
+ date: string;
103
+ /** The first instant of the day (epoch ms) and its length in real hours. */
104
+ dayStart: number;
105
+ dayHours: number;
106
+ /** One per entry part that got a lane, by start. */
107
+ segments: TimeGridSegment[];
108
+ /** Entries on this day that got no lane, by start. */
109
+ hidden: string[];
110
+ }
111
+ /**
112
+ * Lays one day column out: every entry that is not in the top lane and touches the day, clipped
113
+ * to it and packed into at most `maxLanes` lanes with `packLanes`. An entry that crosses
114
+ * midnight gives a `'start'` segment on its first day and a `'continuation'` on the next.
115
+ */
116
+ declare function layoutTimeGridDay(entries: readonly TimeGridEntryInput[], date: string, timeZone: string, options?: {
117
+ maxLanes?: number;
118
+ crossMidnightMinutes?: number;
119
+ }): TimeGridDayLayout;
120
+ interface PlacedDaySpan {
121
+ id: string;
122
+ lane: number;
123
+ /** First and last column (inclusive) of `days` the span covers. */
124
+ startCol: number;
125
+ endCol: number;
126
+ continuesBefore: boolean;
127
+ continuesAfter: boolean;
128
+ }
129
+ interface DaySpanLayout {
130
+ placed: PlacedDaySpan[];
131
+ /** Ids that got no lane, in input order. */
132
+ hidden: string[];
133
+ /** The first day a hidden span covers, when there is one. */
134
+ firstHiddenDay?: string;
135
+ }
136
+ /**
137
+ * Places spans over one row of consecutive `days` (a week, or the single day of the Day
138
+ * view), in the order given, in at most `laneCap` lanes. Day membership is the end-exclusive
139
+ * zoned span. The time grid uses it for its top lane and its window strip.
140
+ */
141
+ declare function layoutDaySpans(spans: readonly MonthSpanInput[], days: readonly string[], options: {
142
+ timeZone: string;
143
+ laneCap?: number;
144
+ }): DaySpanLayout;
145
+ /** A move the user asks for. The component never applies it: the consumer decides. */
146
+ interface MoveProposal {
147
+ /** ISO 8601 instants of the proposed window. */
148
+ start: string;
149
+ end: string;
150
+ /** `'gap_forward'` when the wall-clock time asked for does not exist that day and moved past the gap. */
151
+ adjusted: 'gap_forward' | null;
152
+ }
153
+ /**
154
+ * The window `[start, end)` moved by `minutes` of real time and then by `days` calendar days.
155
+ * A day move keeps the wall-clock start and end (`addZonedDays`), whatever the length of the
156
+ * days in between. Compute it from the original window every time, so that a time falling in
157
+ * a clock-change gap moves forward once, never twice. When a clock change on the target day
158
+ * would put the wall-clock end at or before the start (a window that sits on the skipped or
159
+ * repeated hour), the end keeps the real length of the window instead.
160
+ */
161
+ declare function proposeMove(span: {
162
+ start: string | number | Date;
163
+ end: string | number | Date;
164
+ }, delta: {
165
+ days?: number;
166
+ minutes?: number;
167
+ }, timeZone: string): MoveProposal;
65
168
 
66
- export { type LayoutMonthSpansOptions, type MonthSpanGroup, type MonthSpanInput, type MonthSpanLayout, type PlacedMonthSpan, itemDaySpan, layoutMonthSpans, schedulingGridDays };
169
+ export { type DaySpanLayout, type LayoutMonthSpansOptions, type MonthSpanGroup, type MonthSpanInput, type MonthSpanLayout, type MoveProposal, type PlacedDaySpan, type PlacedMonthSpan, TOP_LANE_CROSS_MIDNIGHT_MINUTES, type TimeGridDayLayout, type TimeGridEntryInput, type TimeGridPart, type TimeGridSegment, itemDaySpan, layoutDaySpans, layoutMonthSpans, layoutTimeGridDay, placesInTopLane, proposeMove, schedulingGridDays };
@@ -1,4 +1,4 @@
1
- import { addCalendarDays, buildMonthGrid, packLanes, startOfMonth, zonedDateKey, zonedDaySpan } from "./calendar-model.js";
1
+ import { addCalendarDays, addZonedDays, buildMonthGrid, packLanes, startOfMonth, zonedDateKey, zonedDayBounds, zonedDaySpan } from "./calendar-model.js";
2
2
  const DEFAULT_LANE_CAP = 2;
3
3
  function itemDaySpan(start, end, timeZone) {
4
4
  const from = new Date(start);
@@ -75,8 +75,102 @@ function layoutMonthSpans(spans, days, options) {
75
75
  }
76
76
  return { placed, hiddenByRow, firstHiddenDayByRow };
77
77
  }
78
+ const MINUTE_MS = 6e4;
79
+ const HOUR_MS = 36e5;
80
+ const instantMs = (value) => new Date(value).getTime();
81
+ const TOP_LANE_CROSS_MIDNIGHT_MINUTES = 360;
82
+ function placesInTopLane(entry, timeZone, options = {}) {
83
+ if (entry.allDay) return true;
84
+ const start = instantMs(entry.start);
85
+ const end = instantMs(entry.end);
86
+ if (!(end > start)) return false;
87
+ if (end > addZonedDays(new Date(start), 1, timeZone).instant.getTime()) return true;
88
+ const firstMidnight = zonedDayBounds(zonedDateKey(new Date(start), timeZone), timeZone).end.getTime();
89
+ return end > firstMidnight + (options.crossMidnightMinutes ?? TOP_LANE_CROSS_MIDNIGHT_MINUTES) * MINUTE_MS;
90
+ }
91
+ function layoutTimeGridDay(entries, date, timeZone, options = {}) {
92
+ const bounds = zonedDayBounds(date, timeZone);
93
+ const dayStart = bounds.start.getTime();
94
+ const dayEnd = bounds.end.getTime();
95
+ const parts = /* @__PURE__ */ new Map();
96
+ for (const entry of entries) {
97
+ const start = instantMs(entry.start);
98
+ const end = Math.max(instantMs(entry.end), start);
99
+ const touches = end > start ? start < dayEnd && end > dayStart : start >= dayStart && start < dayEnd;
100
+ if (!touches || placesInTopLane(entry, timeZone, options)) continue;
101
+ parts.set(entry.id, {
102
+ start: Math.max(start, dayStart),
103
+ end: Math.min(end, dayEnd),
104
+ part: start < dayStart ? "continuation" : end > dayEnd ? "start" : "whole"
105
+ });
106
+ }
107
+ const packed = packLanes([...parts].map(([id, part]) => ({ id, start: part.start, end: part.end })), options.maxLanes ?? Infinity);
108
+ const segments = [];
109
+ const hidden = [];
110
+ for (const cluster of packed.clusters) {
111
+ for (const id of cluster.ids) {
112
+ const part = parts.get(id);
113
+ const lane = packed.lanes[id].lane;
114
+ if (lane === null) {
115
+ hidden.push(id);
116
+ continue;
117
+ }
118
+ segments.push({
119
+ id,
120
+ part: part.part,
121
+ start: part.start,
122
+ end: part.end,
123
+ offsetHours: (part.start - dayStart) / HOUR_MS,
124
+ lengthHours: (part.end - part.start) / HOUR_MS,
125
+ lane,
126
+ laneCount: Math.max(cluster.laneCount, 1)
127
+ });
128
+ }
129
+ }
130
+ return { date, dayStart, dayHours: (dayEnd - dayStart) / HOUR_MS, segments, hidden };
131
+ }
132
+ function layoutDaySpans(spans, days, options) {
133
+ if (days.length === 0) throw new RangeError("layoutDaySpans: days is empty");
134
+ const rowStart = days[0];
135
+ const rowEnd = addCalendarDays(days[days.length - 1], 1);
136
+ const seen = /* @__PURE__ */ new Set();
137
+ const inRow = spans.filter((span) => seen.has(span.id) ? false : (seen.add(span.id), true)).map((span) => ({ id: span.id, days: itemDaySpan(span.start, instantMs(span.end) < instantMs(span.start) ? span.start : span.end, options.timeZone) })).filter((span) => span.days.start < rowEnd && span.days.end > rowStart).map((span) => {
138
+ const from = span.days.start > rowStart ? span.days.start : rowStart;
139
+ const to = span.days.end < rowEnd ? span.days.end : rowEnd;
140
+ return { span, from, startCol: days.indexOf(from), endCol: days.indexOf(addCalendarDays(to, -1)) };
141
+ });
142
+ const packed = packLanes(inRow.map(({ span, startCol, endCol }) => ({ id: span.id, start: startCol, end: endCol + 1 })), options.laneCap ?? Infinity, { order: "given" });
143
+ const layout = { placed: [], hidden: [] };
144
+ for (const { span, from, startCol, endCol } of inRow) {
145
+ const lane = packed.lanes[span.id].lane;
146
+ if (lane === null) {
147
+ layout.hidden.push(span.id);
148
+ if (layout.firstHiddenDay === void 0 || from < layout.firstHiddenDay) layout.firstHiddenDay = from;
149
+ continue;
150
+ }
151
+ layout.placed.push({ id: span.id, lane, startCol, endCol, continuesBefore: span.days.start < rowStart, continuesAfter: span.days.end > rowEnd });
152
+ }
153
+ return layout;
154
+ }
155
+ function proposeMove(span, delta, timeZone) {
156
+ const shift = (delta.minutes ?? 0) * MINUTE_MS;
157
+ const start = new Date(instantMs(span.start) + shift);
158
+ const end = new Date(instantMs(span.end) + shift);
159
+ if (!delta.days) return { start: start.toISOString(), end: end.toISOString(), adjusted: null };
160
+ const movedStart = addZonedDays(start, delta.days, timeZone);
161
+ const movedEnd = addZonedDays(end, delta.days, timeZone);
162
+ const length = end.getTime() - start.getTime();
163
+ const collapsed = length > 0 && movedEnd.instant.getTime() <= movedStart.instant.getTime();
164
+ const proposedEnd = collapsed ? new Date(movedStart.instant.getTime() + length) : movedEnd.instant;
165
+ return { start: movedStart.instant.toISOString(), end: proposedEnd.toISOString(), adjusted: movedStart.adjusted ?? movedEnd.adjusted };
166
+ }
78
167
  export {
168
+ TOP_LANE_CROSS_MIDNIGHT_MINUTES,
79
169
  itemDaySpan,
170
+ layoutDaySpans,
80
171
  layoutMonthSpans,
172
+ layoutTimeGridDay,
173
+ placesInTopLane,
174
+ proposeMove,
81
175
  schedulingGridDays
82
176
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tensor_1/react",
3
- "version": "2.32.0",
3
+ "version": "2.34.0",
4
4
  "description": "Thin React wrappers over the UIx v2 CSS component library.",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",