Core reference
@beemvp/beeui-core holds the platform-free logic the components are built on: calendar-date arithmetic, anchored-overlay positioning, and the overlay-runtime primitives. It has no React dependency and renders nothing.
Most applications never import it directly — the components already do. Reach for it when you are building a surface BeeUI does not provide and you want the same date semantics or positioning maths behind it, which is why most of this surface is classified advanced-consumer rather than consumer.
The Classification column carries exactly two values on this page. advanced-consumer means public and supported, but intended for building a surface BeeUI does not provide — not something a typical application imports. normal-consumer means ordinary application API. cn is the only entry in the second group: it merges class strings. The calendar-date utilities are the same ones Dates and times documents behaviourally.
Values (25)
Section titled “Values (25)”| Name | Signature | Description | Classification | Source |
|---|---|---|---|---|
addCalendarDays |
(date: CalendarDate, amount: number): CalendarDate |
Adds (or subtracts, for a negative amount) whole days, normalizing month/year overflow. |
advanced-consumer | packages/core/src/utils/calendar-date.ts |
addCalendarMonths |
(date: CalendarDate, amount: number): CalendarDate |
Adds (or subtracts) whole calendar months. | advanced-consumer | packages/core/src/utils/calendar-date.ts |
addCalendarYears |
(date: CalendarDate, amount: number): CalendarDate |
Adds (or subtracts) whole years, clamping Feb 29 to Feb 28 in a non-leap target year. | advanced-consumer | packages/core/src/utils/calendar-date.ts |
clampCalendarDate |
(date: CalendarDate, min?: CalendarDate | null, max?: CalendarDate | null): CalendarDate |
Clamps a date into an inclusive [min, max] range, returning the nearer bound when the date falls outside it and the date unchanged otherwise. | advanced-consumer | packages/core/src/utils/calendar-date.ts |
clockTimeFromLocalDate |
(date: Date): ClockTime |
The ClockTime counterpart to fromLocalDate: reads local-timezone getHours()/getMinutes() only — the exact reverse of passing a time argument to toLocalDate. |
advanced-consumer | packages/core/src/utils/calendar-date.ts |
cn |
(...inputs: ClassValue[]): string |
Merges class-name inputs (strings, arrays, conditional objects) into one deduplicated Tailwind/Uniwind class string, later classes winning on conflict. | normal-consumer | packages/core/src/utils/cn.ts |
compareCalendarDates |
(a: CalendarDate, b: CalendarDate): number |
Field-order comparator: negative when a is earlier, positive when later, 0 when equal. |
advanced-consumer | packages/core/src/utils/calendar-date.ts |
constrainOverlayViewportToKeyboard |
(viewportRect: AnchoredOverlayRect, keyboardRect?: AnchoredOverlayRect | null): AnchoredOverlayRect |
Shrinks the usable viewport rect to exclude the area the on-screen keyboard covers, so an anchored overlay repositions above it instead of behind it. | advanced-consumer | packages/core/src/utils/overlay-runtime.ts |
createOverlayDismissStack |
(): OverlayDismissStack |
Creates an empty, mutable dismiss stack an application-root overlay runtime pushes/pops open overlay scopes onto, so global dismissal (Escape/outside-press) always targets the topmost one. | advanced-consumer | packages/core/src/utils/overlay-runtime.ts |
fromLocalDate |
(date: Date): CalendarDate |
The sole sanctioned Date → CalendarDate boundary (ADR-008): reads local-timezone getters only, the exact reverse of toLocalDate. |
advanced-consumer | packages/core/src/utils/calendar-date.ts |
getCalendarDayOfWeek |
(date: CalendarDate): number |
0 = Sunday … 6 = Saturday (matches Date.prototype.getUTCDay()/Intl day-index convention). |
advanced-consumer | packages/core/src/utils/calendar-date.ts |
getCalendarMonthGrid |
(options: CalendarMonthGridOptions): CalendarMonthGridDay[][] |
Generates the full-week grid for a month: one array per week, each with exactly 7 CalendarMonthGridDay cells (Sunday/Monday-first per weekStartsOn). |
advanced-consumer | packages/core/src/utils/calendar-date.ts |
getDaysInMonth |
(year: number, month: number): number |
month must be an integer 1–12. |
advanced-consumer | packages/core/src/utils/calendar-date.ts |
getSafeAreaCollisionPadding |
(hostRect: AnchoredOverlayRect, windowRect: AnchoredOverlayRect, safeAreaInsets: Partial<AnchoredOverlayInsets>): AnchoredOverlayInsets |
Combines a host rect, the window rect and the platform safe-area insets into the collision padding the anchored-overlay kernel needs to keep clear of notches, home indicators and status bars. | advanced-consumer | packages/core/src/utils/overlay-runtime.ts |
isCalendarDateDisabled |
(date: CalendarDate, options: CalendarDateDisabledOptions = {}): boolean |
Reports whether a date falls outside the supplied min/max range or matches a disabled-dates predicate. | advanced-consumer | packages/core/src/utils/calendar-date.ts |
isCalendarDateWithinRange |
(date: CalendarDate, min?: CalendarDate | null, max?: CalendarDate | null): boolean |
Reports whether a date falls within an inclusive [min, max] range; a missing bound is treated as unbounded on that side. | advanced-consumer | packages/core/src/utils/calendar-date.ts |
isLeapYear |
(year: number): boolean |
Reports whether the given year is a leap year using the standard Gregorian rule (divisible by 4, not by 100 unless also by 400). | advanced-consumer | packages/core/src/utils/calendar-date.ts |
isSameCalendarDate |
(a: CalendarDate | null | undefined, b: CalendarDate | null | undefined): boolean |
Reports whether two calendar dates (or null/undefined) represent the exact same day; two null/undefined values are not considered the same date. | advanced-consumer | packages/core/src/utils/calendar-date.ts |
isValidCalendarDate |
(date: CalendarDate): boolean |
Reports whether a value is a structurally valid CalendarDate (real year/month/day combination, not just the right shape). | advanced-consumer | packages/core/src/utils/calendar-date.ts |
mergeOverlayCollisionPadding |
(first: AnchoredOverlayCollisionPadding | undefined, second: AnchoredOverlayCollisionPadding | undefined): AnchoredOverlayInsets |
Merges two partial collision-padding objects, the second overriding the first per edge, with an default of 0 for an edge neither one sets. | advanced-consumer | packages/core/src/utils/overlay-runtime.ts |
parseISODateString |
(iso: string): CalendarDate | null |
Parses a "YYYY-MM-DD" string by splitting/regex-matching its fields directly. |
advanced-consumer | packages/core/src/utils/calendar-date.ts |
resolveAnchoredOverlayPosition |
(options: ResolveAnchoredOverlayPositionOptions): AnchoredOverlayPosition |
Computes the anchored overlay’s final placement (side, alignment, coordinates) from the anchor rect, viewport, and collision/flip/shift options passed in. | advanced-consumer | packages/core/src/utils/anchored-overlay.ts |
toISODateString |
(date: CalendarDate): string |
Never round-trips through Date/Date.parse — direct field formatting only. |
advanced-consumer | packages/core/src/utils/calendar-date.ts |
toLocalDate |
(date: CalendarDate, time?: ClockTime): Date |
The sole sanctioned CalendarDate → Date boundary (ADR-008): constructs via the local-timezone Date constructor, so a date-only value always lands on local midnight (or the given local wall-clock time) of the same… |
advanced-consumer | packages/core/src/utils/calendar-date.ts |
windowRectToHostRect |
(rect: AnchoredOverlayRect, hostRect: AnchoredOverlayRect): AnchoredOverlayRect |
Converts a rect expressed in window coordinates into one expressed relative to the given host element’s rect, for overlays rendered inside a scrollable or transformed host. | advanced-consumer | packages/core/src/utils/overlay-runtime.ts |
Types (20)
Section titled “Types (20)”| Name | Signature | Description | Source |
|---|---|---|---|
AnchoredOverlayAlign |
'start' | 'center' | 'end' |
— | packages/core/src/utils/anchored-overlay.ts |
AnchoredOverlayAvailableSpace |
AnchoredOverlayInsets |
— | packages/core/src/utils/anchored-overlay.ts |
AnchoredOverlayCollisionPadding |
number | Partial<AnchoredOverlayInsets> |
— | packages/core/src/utils/anchored-overlay.ts |
AnchoredOverlayDirection |
'ltr' | 'rtl' |
— | packages/core/src/utils/anchored-overlay.ts |
AnchoredOverlayInsets |
{ top: number; right: number; bottom: number; left: number; } |
— | packages/core/src/utils/anchored-overlay.ts |
AnchoredOverlayOverflow |
AnchoredOverlayInsets & { total: number; } |
— | packages/core/src/utils/anchored-overlay.ts |
AnchoredOverlayPlacement |
'top' | 'right' | 'bottom' | 'left' |
— | packages/core/src/utils/anchored-overlay.ts |
AnchoredOverlayPosition |
{ x: number; y: number; placement: AnchoredOverlayPlacement; align: AnchoredOverlayAlign; flipped: boolean; shifted: boolean; placementOverflow: AnchoredOverlayOverflow; overflow: AnchoredOverlayOverflow; availableSpace: AnchoredOverlayAva… |
— | packages/core/src/utils/anchored-overlay.ts |
AnchoredOverlayRect |
{ x: number; y: number; width: number; height: number; } |
— | packages/core/src/utils/anchored-overlay.ts |
AnchoredOverlaySize |
{ width: number; height: number; } |
— | packages/core/src/utils/anchored-overlay.ts |
CalendarDate |
{ year: number; month: number; day: number; } |
A plain, timezone-free calendar day. | packages/core/src/utils/calendar-date.ts |
CalendarDateDisabledOptions |
{ isDateDisabled?: (date: CalendarDate) => boolean; max?: CalendarDate | null; min?: CalendarDate | null; } |
— | packages/core/src/utils/calendar-date.ts |
CalendarMonthGridDay |
{ date: CalendarDate; isCurrentMonth: boolean; } |
— | packages/core/src/utils/calendar-date.ts |
CalendarMonthGridOptions |
{ month: number; weekStartsOn?: CalendarWeekStartsOn; year: number; } |
— | packages/core/src/utils/calendar-date.ts |
CalendarWeekStartsOn |
1 | 2 | 3 | 4 | 5 | 6 | 7 |
ISO 8601 / Intl weekInfo convention: 1 = Monday … 7 = Sunday. |
packages/core/src/utils/calendar-date.ts |
ClockTime |
{ hour: number; minute: number; } |
A plain, timezone-free wall-clock time. | packages/core/src/utils/calendar-date.ts |
OverlayDismissHandler |
(reason: OverlayDismissReason) => void |
— | packages/core/src/utils/overlay-runtime.ts |
OverlayDismissReason |
'back' | 'escape' | 'outside-press' | 'anchor-unmount' |
— | packages/core/src/utils/overlay-runtime.ts |
OverlayDismissStack |
{ register: (id: string, handler: OverlayDismissHandler) => void; unregister: (id: string) => void; isTopmost: (id: string) => boolean; dismissTop: (reason: OverlayDismissReason) => boolean; dismissIfTopmost: (id: string, reason: OverlayDi… |
— | packages/core/src/utils/overlay-runtime.ts |
ResolveAnchoredOverlayPositionOptions |
{ anchorRect: AnchoredOverlayRect; overlaySize: AnchoredOverlaySize; viewportRect: AnchoredOverlayRect; placement?: AnchoredOverlayPlacement; align?: AnchoredOverlayAlign; direction?: AnchoredOverlayDirection; sideOffset?: number; alignOff… |
— | packages/core/src/utils/anchored-overlay.ts |