@baseline-ui/core 1.1.0 → 2.0.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.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import React__default, { ReactNode, AriaAttributes, DOMAttributes as DOMAttributes$1, AriaRole, CSSProperties, HTMLAttributeAnchorTarget, HTMLAttributeReferrerPolicy, ClipboardEventHandler, CompositionEventHandler, ReactEventHandler, FormEventHandler, MouseEventHandler, TouchEventHandler, PointerEventHandler, UIEventHandler, WheelEventHandler, AnimationEventHandler, TransitionEventHandler, ReactElement, MouseEvent, FocusEvent, SyntheticEvent, KeyboardEvent as KeyboardEvent$2, JSX, HTMLAttributes, RefObject as RefObject$1, LabelHTMLAttributes, ElementType, JSXElementConstructor, ButtonHTMLAttributes, AnchorHTMLAttributes, InputHTMLAttributes, SVGProps, Ref, MutableRefObject, Key as Key$1, KeyboardEventHandler, Dispatch, SetStateAction } from 'react';
3
+ import { CalendarDate, CalendarDateTime, ZonedDateTime, DateDuration, CalendarIdentifier, Calendar as Calendar$1, Time, DateFormatter } from '@internationalized/date';
3
4
  import { Theme, Sprinkles } from '@baseline-ui/tokens';
4
5
  import { PanelImperativeHandle, PanelProps as PanelProps$1, SeparatorProps as SeparatorProps$2 } from 'react-resizable-panels';
5
6
  import * as react_jsx_runtime from 'react/jsx-runtime';
@@ -1705,369 +1706,6 @@ declare function useButton(props: AriaButtonOptions<'input'>, ref: RefObject$1<H
1705
1706
  declare function useButton(props: AriaButtonOptions<'span'>, ref: RefObject$1<HTMLSpanElement | null>): ButtonAria<HTMLAttributes<HTMLSpanElement>>;
1706
1707
  declare function useButton(props: AriaButtonOptions<ElementType>, ref: RefObject$1<Element | null>): ButtonAria<DOMAttributes>;
1707
1708
 
1708
- /** A CalendarDate represents a date without any time components in a specific calendar system. */
1709
- declare class CalendarDate {
1710
- #private;
1711
- /** The calendar system associated with this date, e.g. Gregorian. */
1712
- readonly calendar: Calendar$1;
1713
- /** The calendar era for this date, e.g. "BC" or "AD". */
1714
- readonly era: string;
1715
- /** The year of this date within the era. */
1716
- readonly year: number;
1717
- /**
1718
- * The month number within the year. Note that some calendar systems such as Hebrew
1719
- * may have a variable number of months per year. Therefore, month numbers may not
1720
- * always correspond to the same month names in different years.
1721
- */
1722
- readonly month: number;
1723
- /** The day number within the month. */
1724
- readonly day: number;
1725
- constructor(year: number, month: number, day: number);
1726
- constructor(era: string, year: number, month: number, day: number);
1727
- constructor(calendar: Calendar$1, year: number, month: number, day: number);
1728
- constructor(calendar: Calendar$1, era: string, year: number, month: number, day: number);
1729
- /** Returns a copy of this date. */
1730
- copy(): CalendarDate;
1731
- /** Returns a new `CalendarDate` with the given duration added to it. */
1732
- add(duration: DateDuration): CalendarDate;
1733
- /** Returns a new `CalendarDate` with the given duration subtracted from it. */
1734
- subtract(duration: DateDuration): CalendarDate;
1735
- /**
1736
- * Returns a new `CalendarDate` with the given fields set to the provided values. Other fields
1737
- * will be constrained accordingly.
1738
- */
1739
- set(fields: DateFields): CalendarDate;
1740
- /**
1741
- * Returns a new `CalendarDate` with the given field adjusted by a specified amount.
1742
- * When the resulting value reaches the limits of the field, it wraps around.
1743
- */
1744
- cycle(field: DateField$1, amount: number, options?: CycleOptions): CalendarDate;
1745
- /**
1746
- * Converts the date to a native JavaScript Date object, with the time set to midnight in the
1747
- * given time zone.
1748
- */
1749
- toDate(timeZone: string): Date;
1750
- /** Converts the date to an ISO 8601 formatted string. */
1751
- toString(): string;
1752
- /**
1753
- * Compares this date with another. A negative result indicates that this date is before the given
1754
- * one, and a positive date indicates that it is after.
1755
- */
1756
- compare(b: AnyCalendarDate): number;
1757
- }
1758
- /** A Time represents a clock time without any date components. */
1759
- declare class Time {
1760
- #private;
1761
- /** The hour, numbered from 0 to 23. */
1762
- readonly hour: number;
1763
- /** The minute in the hour. */
1764
- readonly minute: number;
1765
- /** The second in the minute. */
1766
- readonly second: number;
1767
- /** The millisecond in the second. */
1768
- readonly millisecond: number;
1769
- constructor(hour?: number, minute?: number, second?: number, millisecond?: number);
1770
- /** Returns a copy of this time. */
1771
- copy(): Time;
1772
- /** Returns a new `Time` with the given duration added to it. */
1773
- add(duration: TimeDuration): Time;
1774
- /** Returns a new `Time` with the given duration subtracted from it. */
1775
- subtract(duration: TimeDuration): Time;
1776
- /**
1777
- * Returns a new `Time` with the given fields set to the provided values. Other fields will be
1778
- * constrained accordingly.
1779
- */
1780
- set(fields: TimeFields): Time;
1781
- /**
1782
- * Returns a new `Time` with the given field adjusted by a specified amount.
1783
- * When the resulting value reaches the limits of the field, it wraps around.
1784
- */
1785
- cycle(field: TimeField$1, amount: number, options?: CycleTimeOptions): Time;
1786
- /** Converts the time to an ISO 8601 formatted string. */
1787
- toString(): string;
1788
- /**
1789
- * Compares this time with another. A negative result indicates that this time is before the given
1790
- * one, and a positive time indicates that it is after.
1791
- */
1792
- compare(b: AnyTime): number;
1793
- }
1794
- /** A CalendarDateTime represents a date and time without a time zone, in a specific calendar system. */
1795
- declare class CalendarDateTime {
1796
- #private;
1797
- /** The calendar system associated with this date, e.g. Gregorian. */
1798
- readonly calendar: Calendar$1;
1799
- /** The calendar era for this date, e.g. "BC" or "AD". */
1800
- readonly era: string;
1801
- /** The year of this date within the era. */
1802
- readonly year: number;
1803
- /**
1804
- * The month number within the year. Note that some calendar systems such as Hebrew
1805
- * may have a variable number of months per year. Therefore, month numbers may not
1806
- * always correspond to the same month names in different years.
1807
- */
1808
- readonly month: number;
1809
- /** The day number within the month. */
1810
- readonly day: number;
1811
- /** The hour in the day, numbered from 0 to 23. */
1812
- readonly hour: number;
1813
- /** The minute in the hour. */
1814
- readonly minute: number;
1815
- /** The second in the minute. */
1816
- readonly second: number;
1817
- /** The millisecond in the second. */
1818
- readonly millisecond: number;
1819
- constructor(year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);
1820
- constructor(era: string, year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);
1821
- constructor(calendar: Calendar$1, year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);
1822
- constructor(calendar: Calendar$1, era: string, year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);
1823
- /** Returns a copy of this date. */
1824
- copy(): CalendarDateTime;
1825
- /** Returns a new `CalendarDateTime` with the given duration added to it. */
1826
- add(duration: DateTimeDuration): CalendarDateTime;
1827
- /** Returns a new `CalendarDateTime` with the given duration subtracted from it. */
1828
- subtract(duration: DateTimeDuration): CalendarDateTime;
1829
- /**
1830
- * Returns a new `CalendarDateTime` with the given fields set to the provided values. Other fields
1831
- * will be constrained accordingly.
1832
- */
1833
- set(fields: DateFields & TimeFields): CalendarDateTime;
1834
- /**
1835
- * Returns a new `CalendarDateTime` with the given field adjusted by a specified amount.
1836
- * When the resulting value reaches the limits of the field, it wraps around.
1837
- */
1838
- cycle(field: DateField$1 | TimeField$1, amount: number, options?: CycleTimeOptions): CalendarDateTime;
1839
- /** Converts the date to a native JavaScript Date object in the given time zone. */
1840
- toDate(timeZone: string, disambiguation?: Disambiguation): Date;
1841
- /** Converts the date to an ISO 8601 formatted string. */
1842
- toString(): string;
1843
- /**
1844
- * Compares this date with another. A negative result indicates that this date is before the given
1845
- * one, and a positive date indicates that it is after.
1846
- */
1847
- compare(b: CalendarDate | CalendarDateTime | ZonedDateTime): number;
1848
- }
1849
- /** A ZonedDateTime represents a date and time in a specific time zone and calendar system. */
1850
- declare class ZonedDateTime {
1851
- #private;
1852
- /** The calendar system associated with this date, e.g. Gregorian. */
1853
- readonly calendar: Calendar$1;
1854
- /** The calendar era for this date, e.g. "BC" or "AD". */
1855
- readonly era: string;
1856
- /** The year of this date within the era. */
1857
- readonly year: number;
1858
- /**
1859
- * The month number within the year. Note that some calendar systems such as Hebrew
1860
- * may have a variable number of months per year. Therefore, month numbers may not
1861
- * always correspond to the same month names in different years.
1862
- */
1863
- readonly month: number;
1864
- /** The day number within the month. */
1865
- readonly day: number;
1866
- /** The hour in the day, numbered from 0 to 23. */
1867
- readonly hour: number;
1868
- /** The minute in the hour. */
1869
- readonly minute: number;
1870
- /** The second in the minute. */
1871
- readonly second: number;
1872
- /** The millisecond in the second. */
1873
- readonly millisecond: number;
1874
- /** The IANA time zone identifier that this date and time is represented in. */
1875
- readonly timeZone: string;
1876
- /** The UTC offset for this time, in milliseconds. */
1877
- readonly offset: number;
1878
- constructor(year: number, month: number, day: number, timeZone: string, offset: number, hour?: number, minute?: number, second?: number, millisecond?: number);
1879
- constructor(era: string, year: number, month: number, day: number, timeZone: string, offset: number, hour?: number, minute?: number, second?: number, millisecond?: number);
1880
- constructor(calendar: Calendar$1, year: number, month: number, day: number, timeZone: string, offset: number, hour?: number, minute?: number, second?: number, millisecond?: number);
1881
- constructor(calendar: Calendar$1, era: string, year: number, month: number, day: number, timeZone: string, offset: number, hour?: number, minute?: number, second?: number, millisecond?: number);
1882
- /** Returns a copy of this date. */
1883
- copy(): ZonedDateTime;
1884
- /** Returns a new `ZonedDateTime` with the given duration added to it. */
1885
- add(duration: DateTimeDuration): ZonedDateTime;
1886
- /** Returns a new `ZonedDateTime` with the given duration subtracted from it. */
1887
- subtract(duration: DateTimeDuration): ZonedDateTime;
1888
- /**
1889
- * Returns a new `ZonedDateTime` with the given fields set to the provided values. Other fields
1890
- * will be constrained accordingly.
1891
- */
1892
- set(fields: DateFields & TimeFields, disambiguation?: Disambiguation): ZonedDateTime;
1893
- /**
1894
- * Returns a new `ZonedDateTime` with the given field adjusted by a specified amount.
1895
- * When the resulting value reaches the limits of the field, it wraps around.
1896
- */
1897
- cycle(field: DateField$1 | TimeField$1, amount: number, options?: CycleTimeOptions): ZonedDateTime;
1898
- /** Converts the date to a native JavaScript Date object. */
1899
- toDate(): Date;
1900
- /**
1901
- * Converts the date to an ISO 8601 formatted string, including the UTC offset and time zone
1902
- * identifier.
1903
- */
1904
- toString(): string;
1905
- /** Converts the date to an ISO 8601 formatted string in UTC. */
1906
- toAbsoluteString(): string;
1907
- /**
1908
- * Compares this date with another. A negative result indicates that this date is before the given
1909
- * one, and a positive date indicates that it is after.
1910
- */
1911
- compare(b: CalendarDate | CalendarDateTime | ZonedDateTime): number;
1912
- }
1913
-
1914
- /** An interface that is compatible with any object with date fields. */
1915
- interface AnyCalendarDate {
1916
- readonly calendar: Calendar$1;
1917
- readonly era: string;
1918
- readonly year: number;
1919
- readonly month: number;
1920
- readonly day: number;
1921
- copy(): this;
1922
- }
1923
- /** An interface that is compatible with any object with time fields. */
1924
- interface AnyTime {
1925
- readonly hour: number;
1926
- readonly minute: number;
1927
- readonly second: number;
1928
- readonly millisecond: number;
1929
- copy(): this;
1930
- }
1931
- type CalendarIdentifier = 'gregory' | 'buddhist' | 'chinese' | 'coptic' | 'dangi' | 'ethioaa' | 'ethiopic' | 'hebrew' | 'indian' | 'islamic' | 'islamic-umalqura' | 'islamic-tbla' | 'islamic-civil' | 'islamic-rgsa' | 'iso8601' | 'japanese' | 'persian' | 'roc';
1932
- /**
1933
- * The Calendar interface represents a calendar system, including information
1934
- * about how days, months, years, and eras are organized, and methods to perform
1935
- * arithmetic on dates.
1936
- */
1937
- interface Calendar$1 {
1938
- /**
1939
- * A string identifier for the calendar, as defined by Unicode CLDR. See
1940
- * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/supportedValuesOf#supported_calendar_types).
1941
- */
1942
- identifier: CalendarIdentifier;
1943
- /** Creates a CalendarDate in this calendar from the given Julian day number. */
1944
- fromJulianDay(jd: number): CalendarDate;
1945
- /** Converts a date in this calendar to a Julian day number. */
1946
- toJulianDay(date: AnyCalendarDate): number;
1947
- /** Returns the number of days in the month of the given date. */
1948
- getDaysInMonth(date: AnyCalendarDate): number;
1949
- /** Returns the number of months in the year of the given date. */
1950
- getMonthsInYear(date: AnyCalendarDate): number;
1951
- /** Returns the number of years in the era of the given date. */
1952
- getYearsInEra(date: AnyCalendarDate): number;
1953
- /** Returns a list of era identifiers for the calendar. */
1954
- getEras(): string[];
1955
- /**
1956
- * Returns the minimum month number of the given date's year.
1957
- * Normally, this is 1, but in some calendars such as the Japanese,
1958
- * eras may begin in the middle of a year.
1959
- */
1960
- getMinimumMonthInYear?(date: AnyCalendarDate): number;
1961
- /**
1962
- * Returns the minimum day number of the given date's month.
1963
- * Normally, this is 1, but in some calendars such as the Japanese,
1964
- * eras may begin in the middle of a month.
1965
- */
1966
- getMinimumDayInMonth?(date: AnyCalendarDate): number;
1967
- /** Returns the maximum months across all years. */
1968
- getMaximumMonthsInYear(): number;
1969
- /** Returns the maximum days across all months. */
1970
- getMaximumDaysInMonth(): number;
1971
- /**
1972
- * Returns a date that is the first day of the month for the given date.
1973
- * This is used to determine the month that the given date falls in, if
1974
- * the calendar has months that do not align with the standard calendar months
1975
- * (e.g. fiscal calendars).
1976
- */
1977
- getFormattableMonth?(date: AnyCalendarDate): CalendarDate;
1978
- /** Returns whether the given calendar is the same as this calendar. */
1979
- isEqual?(calendar: Calendar$1): boolean;
1980
- /** @private */
1981
- balanceDate?(date: AnyCalendarDate): void;
1982
- /** @private */
1983
- balanceYearMonth?(date: AnyCalendarDate, previousDate: AnyCalendarDate): void;
1984
- /** @private */
1985
- constrainDate?(date: AnyCalendarDate): void;
1986
- /** @private */
1987
- isInverseEra?(date: AnyCalendarDate): boolean;
1988
- }
1989
- /** Represents an amount of time in calendar-specific units, for use when performing arithmetic. */
1990
- interface DateDuration {
1991
- /** The number of years to add or subtract. */
1992
- years?: number;
1993
- /** The number of months to add or subtract. */
1994
- months?: number;
1995
- /** The number of weeks to add or subtract. */
1996
- weeks?: number;
1997
- /** The number of days to add or subtract. */
1998
- days?: number;
1999
- }
2000
- /** Represents an amount of time, for use whe performing arithmetic. */
2001
- interface TimeDuration {
2002
- /** The number of hours to add or subtract. */
2003
- hours?: number;
2004
- /** The number of minutes to add or subtract. */
2005
- minutes?: number;
2006
- /** The number of seconds to add or subtract. */
2007
- seconds?: number;
2008
- /** The number of milliseconds to add or subtract. */
2009
- milliseconds?: number;
2010
- }
2011
- /**
2012
- * Represents an amount of time with both date and time components, for use when performing
2013
- * arithmetic.
2014
- */
2015
- interface DateTimeDuration extends DateDuration, TimeDuration {
2016
- }
2017
- interface DateFields {
2018
- era?: string;
2019
- year?: number;
2020
- month?: number;
2021
- day?: number;
2022
- }
2023
- interface TimeFields {
2024
- hour?: number;
2025
- minute?: number;
2026
- second?: number;
2027
- millisecond?: number;
2028
- }
2029
- type DateField$1 = keyof DateFields;
2030
- type TimeField$1 = keyof TimeFields;
2031
- type Disambiguation = 'compatible' | 'earlier' | 'later' | 'reject';
2032
- interface CycleOptions {
2033
- /** Whether to round the field value to the nearest interval of the amount. */
2034
- round?: boolean;
2035
- }
2036
- interface CycleTimeOptions extends CycleOptions {
2037
- /**
2038
- * Whether to use 12 or 24 hour time. If 12 hour time is chosen, the resulting value
2039
- * will remain in the same day period as the original value (e.g. if the value is AM,
2040
- * the resulting value also be AM).
2041
- *
2042
- * @default 24
2043
- */
2044
- hourCycle?: 12 | 24;
2045
- }
2046
-
2047
- interface DateRangeFormatPart extends Intl.DateTimeFormatPart {
2048
- source: 'startRange' | 'endRange' | 'shared';
2049
- }
2050
- /** A wrapper around Intl.DateTimeFormat that fixes various browser bugs, and polyfills new features. */
2051
- declare class DateFormatter implements Intl.DateTimeFormat {
2052
- private formatter;
2053
- private options;
2054
- private resolvedHourCycle;
2055
- constructor(locale: string, options?: Intl.DateTimeFormatOptions);
2056
- /**
2057
- * Formats a date as a string according to the locale and format options passed to the
2058
- * constructor.
2059
- */
2060
- format(value: Date): string;
2061
- /** Formats a date to an array of parts such as separators, numbers, punctuation, and more. */
2062
- formatToParts(value: Date): Intl.DateTimeFormatPart[];
2063
- /** Formats a date range as a string. */
2064
- formatRange(start: Date, end: Date): string;
2065
- /** Formats a date range as an array of parts. */
2066
- formatRangeToParts(start: Date, end: Date): DateRangeFormatPart[];
2067
- /** Returns the resolved formatting options based on the values passed to the constructor. */
2068
- resolvedOptions(): Intl.ResolvedDateTimeFormatOptions;
2069
- }
2070
-
2071
1709
  type DateValue$1 = CalendarDate | CalendarDateTime | ZonedDateTime;
2072
1710
  type MappedDateValue$1<T> = T extends ZonedDateTime ? ZonedDateTime : T extends CalendarDateTime ? CalendarDateTime : T extends CalendarDate ? CalendarDate : never;
2073
1711
  type PageBehavior = 'single' | 'visible';
@@ -3240,7 +2878,7 @@ interface DraggableCollectionStateOpts<T = object> extends Omit<DraggableCollect
3240
2878
  interface DragHooks<T = object> {
3241
2879
  useDraggableCollectionState?: (props: DraggableCollectionStateOpts<T>) => DraggableCollectionState;
3242
2880
  useDraggableCollection?: (props: DraggableCollectionOptions, state: DraggableCollectionState, ref: RefObject<HTMLElement | null>) => void;
3243
- useDraggableItem?: (props: DraggableItemProps, state: DraggableCollectionState) => DraggableItemResult;
2881
+ useDraggableItem?: (props: DraggableItemProps, state: DraggableCollectionState, ref?: RefObject<HTMLElement | null>) => DraggableItemResult;
3244
2882
  DragPreview?: typeof DragPreview;
3245
2883
  renderDragPreview?: (items: DragItem[]) => JSX.Element | {
3246
2884
  element: JSX.Element;
@@ -6417,8 +6055,8 @@ declare function calculateFontSizeToFitWidth({ text, maxWidth, initialFontSize,
6417
6055
  declare function isFocusableElement(element: HTMLElement): boolean;
6418
6056
  declare function findFocusableElements(element: HTMLElement): NodeListOf<Element>;
6419
6057
  /**
6420
- * Returns the active element of the given node, resolving through a shadow root
6421
- * when the node lives in one.
6058
+ * Returns the active element of the given node. A closed shadow root cannot be
6059
+ * pierced, so focus held inside one resolves to its host.
6422
6060
  */
6423
6061
  declare function getActiveElement(node?: Node): Element | null;
6424
6062
  /**
@@ -6560,16 +6198,7 @@ declare const getPlainText: (text: string) => string;
6560
6198
  */
6561
6199
  declare function isInIframe(el: Node): boolean;
6562
6200
 
6563
- /**
6564
- * Checks whether a given node is inside a Shadow DOM.
6565
- *
6566
- * This function uses `getRootNode()` to determine if the node's root is a
6567
- * `ShadowRoot`, which indicates that the node is part of a shadow tree.
6568
- *
6569
- * @param {Node} node - The DOM node to check.
6570
- * @returns {boolean} `true` if the node is inside a Shadow DOM, `false`
6571
- * otherwise.
6572
- */
6201
+ /** Checks whether a given node is inside a Shadow DOM. */
6573
6202
  declare function isInShadowDOM(element: Node | null | undefined): boolean;
6574
6203
 
6575
6204
  /**
@@ -6901,8 +6530,10 @@ interface ListBoxProps extends StylingProps, Omit<AriaListBoxProps<ListItem> & A
6901
6530
  *
6902
6531
  * @param section ListSection
6903
6532
  * @param ref React.RefObject<HTMLDivElement>
6533
+ * @param headingProps ARIA props for the heading element — spread these onto the header's
6534
+ * root (and attach `ref`) so the section group's `aria-labelledby` resolves to it.
6904
6535
  */
6905
- renderSectionHeader?: (section: Node$1<ListItem>, ref: React__default.Ref<HTMLSpanElement>) => React__default.ReactNode;
6536
+ renderSectionHeader?: (section: Node$1<ListItem>, ref: React__default.Ref<HTMLSpanElement>, headingProps?: React__default.HTMLAttributes<HTMLElement>) => React__default.ReactNode;
6906
6537
  /** Whether to show the selected checkmark icon. */
6907
6538
  showSelectedIcon?: boolean;
6908
6539
  /** The label for the listbox. */
@@ -7195,13 +6826,20 @@ declare const Popover: React__default.FC<PopoverProps>;
7195
6826
 
7196
6827
  type MenuOption = Omit<ListOption, "description"> & {
7197
6828
  keyboardShortcut?: string;
6829
+ /**
6830
+ * Nested menu items. When present, this option becomes a submenu trigger that
6831
+ * opens a nested menu instead of acting as a leaf action. Recursive: a submenu
6832
+ * may itself contain leaf options, sections, or deeper submenus.
6833
+ */
6834
+ items?: MenuItem[];
7198
6835
  };
7199
6836
  type MenuSection = Omit<ListSection, "children"> & {
7200
- children: MenuOption[];
6837
+ children: Omit<MenuOption, "items">[];
7201
6838
  };
7202
6839
  type MenuItem = MenuOption | MenuSection;
7203
6840
  type MenuPopoverProps = Pick<PopoverContentProps, "isNonModal" | "placement" | "shouldUpdatePosition" | "shouldFlip" | "boundaryElement" | "boundaryAxis" | "horizontalBoundaryBehavior" | "crossOffset" | "offset" | "portalContainer">;
7204
- interface MenuProps extends MenuPopoverProps, MenuTriggerProps, Omit<AriaMenuProps<MenuItem>, "children">, Omit<AriaMenuTriggerProps, "type"> {
6841
+ type MenuSelectionKeys = "selectionMode" | "selectedKeys" | "defaultSelectedKeys" | "onSelectionChange";
6842
+ interface MenuPropsBase extends MenuPopoverProps, MenuTriggerProps, Omit<AriaMenuProps<MenuItem>, "children" | MenuSelectionKeys>, Omit<AriaMenuTriggerProps, "type"> {
7205
6843
  /** The `className` property assigned to the root element of the component. */
7206
6844
  className?: string;
7207
6845
  /** The `className` property assigned to the content element of the component. */
@@ -7209,34 +6847,15 @@ interface MenuProps extends MenuPopoverProps, MenuTriggerProps, Omit<AriaMenuPro
7209
6847
  /** The `className` property assigned to the item element of the component. */
7210
6848
  itemClassName?: string;
7211
6849
  /**
7212
- * A list of items to render in the menu. Items have the following shape:
6850
+ * A list of items to render in the menu. See `MenuItem`.
7213
6851
  *
7214
- * ```ts
7215
- * export type MenuOption = {
7216
- * id: string;
7217
- * label: string;
7218
- * keyboardShortcut?: string;
7219
- * icon?: React.FC<IconProps>;
7220
- * };
7221
- *
7222
- * export type MenuSection = {
7223
- * id: string;
7224
- * title?: string;
7225
- * type: "section";
7226
- * children: MenuOption[];
7227
- * };
7228
- *
7229
- * export type MenuItem = MenuOption | MenuSection;
7230
- * ```
6852
+ * A `MenuSection` may opt into independent selection by listing its id in the
6853
+ * object form of `selectionMode` (e.g. `selectionMode={{ view: "single" }}`).
7231
6854
  */
7232
6855
  items: MenuItem[];
7233
6856
  /**
7234
6857
  * A function that renders the trigger element of the component. The default
7235
6858
  * implementation renders an `ActionButton` component.
7236
- *
7237
- * ```tsx
7238
- * <Menu renderTrigger={({ buttonProps, ref }) => <ActionButton {...buttonProps} label="Label" ref={ref} />
7239
- * ```
7240
6859
  */
7241
6860
  renderTrigger?: (options: {
7242
6861
  buttonProps: ActionButtonProps & {
@@ -7250,6 +6869,30 @@ interface MenuProps extends MenuPopoverProps, MenuTriggerProps, Omit<AriaMenuPro
7250
6869
  */
7251
6870
  triggerLabel?: React__default.ReactNode | ((isOpen: boolean) => React__default.ReactNode);
7252
6871
  }
6872
+ interface MenuProps extends MenuPropsBase {
6873
+ /**
6874
+ * `"single"`/`"multiple"` select the whole menu. A record keyed by section id
6875
+ * makes each listed section an independent selection group.
6876
+ */
6877
+ selectionMode?: "none" | "single" | "multiple" | Record<string, "single" | "multiple">;
6878
+ /**
6879
+ * A menu-wide selection (`"all"` or an iterable of keys) or a per-section
6880
+ * record of `Selection`. The iterable form preserves the pre-existing
6881
+ * `AriaMenuProps.selectedKeys` shape (arrays stay assignable).
6882
+ */
6883
+ selectedKeys?: "all" | Iterable<Key> | Record<string, Selection$1>;
6884
+ /** Initial selection, in the same flat-or-per-section shape as `selectedKeys`. */
6885
+ defaultSelectedKeys?: "all" | Iterable<Key> | Record<string, "all" | Iterable<Key>>;
6886
+ /**
6887
+ * Fires on user selection. In per-section mode, the second argument carries
6888
+ * the `sectionId` of the section whose selection changed; it is `undefined`
6889
+ * in menu-wide mode. Typed optional so existing one-arg handlers stay
6890
+ * assignable.
6891
+ */
6892
+ onSelectionChange?: (keys: Selection$1, meta?: {
6893
+ sectionId: string;
6894
+ }) => void;
6895
+ }
7253
6896
 
7254
6897
  declare const DefaultListOption: React__default.ForwardRefExoticComponent<DefaultListOptionProps & React__default.RefAttributes<HTMLLIElement>>;
7255
6898
  interface DefaultListOptionProps {
@@ -7522,19 +7165,19 @@ interface ColorInputProps extends OverlayTriggerProps$1, StylingProps, Pick<Colo
7522
7165
  /**
7523
7166
  * The label to show on the add color button.
7524
7167
  *
7525
- * @default Add color
7168
+ * @default Add Color
7526
7169
  */
7527
7170
  addColorButtonLabel?: string;
7528
7171
  /**
7529
7172
  * The label to show on the remove color button.
7530
7173
  *
7531
- * @default Remove color
7174
+ * @default Remove Color
7532
7175
  */
7533
7176
  removeColorButtonLabel?: string;
7534
7177
  /**
7535
7178
  * The label to show on the custom colors section.
7536
7179
  *
7537
- * @default Custom colors
7180
+ * @default Custom Colors
7538
7181
  */
7539
7182
  customColorsLabel?: string;
7540
7183
  /**
@@ -7843,7 +7486,7 @@ interface InputMessage {
7843
7486
  /** The warning message to display when the input is in a warning state. */
7844
7487
  warningMessage?: string;
7845
7488
  }
7846
- interface TextInputProps extends Omit<AriaTextFieldProps, "validationState" | "isInvalid" | "description" | "errorMessage">, StylingProps, InputMessage, Pick<SharedInputProps, "validationState" | "variant" | "labelPosition" | "isMultiLine"> {
7489
+ interface TextInputBaseProps extends StylingProps, InputMessage, Pick<SharedInputProps, "validationState" | "variant" | "labelPosition"> {
7847
7490
  /** The style object to apply to the input element */
7848
7491
  inputStyle?: React__default.CSSProperties;
7849
7492
  /** The class name to apply to the input element */
@@ -7854,8 +7497,29 @@ interface TextInputProps extends Omit<AriaTextFieldProps, "validationState" | "i
7854
7497
  */
7855
7498
  rows?: number;
7856
7499
  }
7500
+ interface SingleLineTextInputProps extends Omit<AriaTextFieldProps, "validationState" | "isInvalid" | "description" | "errorMessage">, TextInputBaseProps {
7501
+ /**
7502
+ * Whether the input renders as a resizable multi-line `<textarea>` instead of
7503
+ * a single-line `<input>`. Relaxes the fixed single-line height and top-aligns
7504
+ * the status icon.
7505
+ *
7506
+ * @default false
7507
+ */
7508
+ isMultiLine?: false;
7509
+ }
7510
+ interface MultiLineTextInputProps extends Omit<AriaTextFieldProps<HTMLTextAreaElement>, "validationState" | "isInvalid" | "description" | "errorMessage">, TextInputBaseProps {
7511
+ /**
7512
+ * Whether the input renders as a resizable multi-line `<textarea>` instead of
7513
+ * a single-line `<input>`. Relaxes the fixed single-line height and top-aligns
7514
+ * the status icon.
7515
+ */
7516
+ isMultiLine: true;
7517
+ }
7518
+ type TextInputProps = SingleLineTextInputProps | MultiLineTextInputProps;
7857
7519
 
7858
7520
  interface FileInputProps extends InputMessage, FileTriggerProps, Pick<SharedInputProps, "validationState" | "labelPosition"> {
7521
+ /** The id applied to the root element of the component. */
7522
+ id?: string;
7859
7523
  /** The className applied to the root element of the component. */
7860
7524
  className?: string;
7861
7525
  /** The style applied to the root element of the component. */
@@ -8056,7 +7720,12 @@ interface I18nProviderProps extends I18nProviderProps$1 {
8056
7720
  children: React__default.ReactNode;
8057
7721
  locale?: string;
8058
7722
  /**
8059
- * @default true
7723
+ * Whether to `console.warn` about message ids that resolve through the
7724
+ * deprecated bare-id fallback or fall all the way through to their
7725
+ * `defaultMessage`. These warnings are development guidance, so they are off
7726
+ * in production builds — pass `true` to opt back in.
7727
+ *
7728
+ * @default process.env.NODE_ENV !== "production"
8060
7729
  */
8061
7730
  shouldLogMissingMessages?: boolean;
8062
7731
  }
@@ -8239,25 +7908,53 @@ interface CollectionOptionRenderProps {
8239
7908
  /**
8240
7909
  * The custom render function for the listbox options.
8241
7910
  *
7911
+ * Reading component state here works, at the cost of rebuilding every cached option and
7912
+ * section whenever the function's identity changes — see {@link UNSAFE_ListBoxProps.items}
7913
+ * for when that cost applies.
7914
+ *
8242
7915
  * @param item ListOption
8243
7916
  * @param options ListBoxItemRenderProps
8244
7917
  */
8245
7918
  renderOption?: (item: ListOption, options: ListBoxItemRenderProps) => React__default.ReactNode;
8246
- /** The CSS class name for the option. */
7919
+ /**
7920
+ * The CSS class name for the option.
7921
+ *
7922
+ * Compared by identity, so an inline function or an unmemoized value rebuilds every
7923
+ * cached option and section on each render. A plain string is compared by value.
7924
+ */
8247
7925
  optionClassName?: string | ((item: ListOption, renderProps: ListBoxItemRenderProps) => string | undefined);
8248
- /** The style of the option. */
7926
+ /**
7927
+ * The style of the option.
7928
+ *
7929
+ * Compared by identity, so an inline function or object literal rebuilds every cached
7930
+ * option and section on each render — memoize it to avoid that.
7931
+ */
8249
7932
  optionStyle?: React__default.CSSProperties | ((item: ListOption, renderProps: ListBoxItemRenderProps) => React__default.CSSProperties | undefined);
8250
7933
  }
8251
7934
  interface CollectionSectionRenderProps {
8252
7935
  /**
8253
7936
  * The custom render function for the listbox sections.
8254
7937
  *
7938
+ * Reading component state here works, at the cost of rebuilding every cached option and
7939
+ * section whenever the function's identity changes — see {@link UNSAFE_ListBoxProps.items}
7940
+ * for when that cost applies.
7941
+ *
8255
7942
  * @param section ListSection
8256
7943
  */
8257
7944
  renderSectionHeader?: (section: ListSection) => React__default.ReactNode;
8258
- /** The CSS class name for the section. */
7945
+ /**
7946
+ * The CSS class name for the section.
7947
+ *
7948
+ * Compared by identity, so an inline function or an unmemoized value rebuilds every
7949
+ * cached option and section on each render. A plain string is compared by value.
7950
+ */
8259
7951
  sectionClassName?: string | ((section: ListSection) => string | undefined);
8260
- /** The style of the section. */
7952
+ /**
7953
+ * The style of the section.
7954
+ *
7955
+ * Compared by identity, so an inline function or object literal rebuilds every cached
7956
+ * option and section on each render — memoize it to avoid that.
7957
+ */
8261
7958
  sectionStyle?: React__default.CSSProperties | ((section: ListSection) => React__default.CSSProperties | undefined);
8262
7959
  /**
8263
7960
  * Whether to show each section title when provided.
@@ -8273,7 +7970,7 @@ interface CollectionSectionRenderProps {
8273
7970
  withSectionHeaderPadding?: boolean;
8274
7971
  }
8275
7972
  type CollectionRenderProps = CollectionOptionRenderProps & CollectionSectionRenderProps;
8276
- interface UNSAFE_ListBoxProps extends StylingProps, Omit<AriaListBoxProps<ListItem> & AriaListBoxOptions<ListItem>, "children" | "linkBehavior" | "isVirtualized" | "keyboardDelegate" | "items">, Pick<ListBoxProps$1<ListItem>, "dragAndDropHooks" | "orientation" | "layout">, CollectionRenderProps {
7973
+ interface UNSAFE_ListBoxProps extends StylingProps, Omit<AriaListBoxProps<ListItem> & AriaListBoxOptions<ListItem>, "children" | "linkBehavior" | "isVirtualized" | "keyboardDelegate" | "items">, Pick<ListBoxProps$1<ListItem>, "dragAndDropHooks" | "orientation" | "layout" | "dependencies">, CollectionRenderProps {
8277
7974
  /**
8278
7975
  * The items to render in the listbox. Items have the following shape:
8279
7976
  *
@@ -8294,6 +7991,11 @@ interface UNSAFE_ListBoxProps extends StylingProps, Omit<AriaListBoxProps<ListIt
8294
7991
  *
8295
7992
  * type ListItem = ListOption | ListSection;
8296
7993
  * ```
7994
+ *
7995
+ * Rendered options and sections are cached per item object. Building this array inline
7996
+ * (`items={data.map(...)}`) produces new item objects every render, so nothing is ever
7997
+ * reused and the customisation props cost nothing; memoize it and the cache applies,
7998
+ * which is when their identity starts to matter.
8297
7999
  */
8298
8000
  items?: ListItem[];
8299
8001
  /** The label for the listbox. */
@@ -8684,7 +8386,7 @@ type FreehandCanvasPoint = [x: number, y: number, pressure?: number];
8684
8386
 
8685
8387
  declare const FreehandCanvas: React__default.ForwardRefExoticComponent<FreehandCanvasProps & React__default.RefAttributes<HTMLDivElement>>;
8686
8388
 
8687
- type TextProps<T extends keyof React__default.JSX.IntrinsicElements = "span"> = StylingProps & React__default.ComponentProps<T> & {
8389
+ type TextProps<T extends keyof React__default.JSX.IntrinsicElements = "span"> = StylingProps & Omit<React__default.ComponentProps<T>, "slot"> & {
8688
8390
  /**
8689
8391
  * The type of text to render.
8690
8392
  *
@@ -8705,6 +8407,13 @@ type TextProps<T extends keyof React__default.JSX.IntrinsicElements = "span"> =
8705
8407
  * @default "span"
8706
8408
  */
8707
8409
  elementType?: React__default.ElementType;
8410
+ /**
8411
+ * A slot name that wires this text into a parent container's context —
8412
+ * e.g. `slot="description"` or `slot="label"` — so the container can
8413
+ * associate it via `aria-describedby` / `aria-labelledby` without manually
8414
+ * threading an `id`. Pass `null` to opt out of an ambient slot.
8415
+ */
8416
+ slot?: string | null;
8708
8417
  };
8709
8418
 
8710
8419
  declare const Text: React__default.ForwardRefExoticComponent<Omit<TextProps, "ref"> & React__default.RefAttributes<HTMLSpanElement>>;
@@ -9922,7 +9631,11 @@ interface ImageGalleryProps extends StylingProps, Omit<UNSAFE_ListBoxProps, "ite
9922
9631
  }) => React__default.JSX.Element;
9923
9632
  /** The dimensions of the grid. */
9924
9633
  imageContainerStyle?: React__default.CSSProperties;
9925
- /** The dimensions of the image. */
9634
+ /**
9635
+ * The dimensions of the image.
9636
+ *
9637
+ * @default { width: imageWidth, aspectRatio }
9638
+ */
9926
9639
  imageDimensions?: Dimension | ((item: Item, options: {
9927
9640
  isSelected: boolean;
9928
9641
  }) => Dimension);
@@ -9987,7 +9700,7 @@ interface ButtonSelectProps extends StylingProps, Pick<SelectProps<"single">, "i
9987
9700
 
9988
9701
  declare const ButtonSelect: React__default.ForwardRefExoticComponent<ButtonSelectProps & React__default.RefAttributes<HTMLDivElement>>;
9989
9702
 
9990
- interface ComboBoxProps extends StylingProps, Omit<AriaComboBoxOptions<ListItem>, "items" | "children" | "inputRef" | "popoverRef" | "listBoxRef" | "buttonRef" | "validationState" | "errorMessage" | "description">, Omit<AriaComboBoxProps<ListItem>, "items" | "children" | "errorMessage" | "description" | "validationState">, Omit<UNSAFE_ListBoxProps, "autoFocus" | "onBlur" | "onFocus" | "onSelectionChange" | "selectionBehavior" | "selectionMode" | "selectedKeys" | "defaultSelectedKeys" | "renderDropIndicator" | "renderDragPreview" | "dropIndicatorClassName" | "dropIndicatorStyle" | "dragAndDropHooks" | "orientation" | "layout" | "renderSectionHeader" | "showSectionHeader" | "withSectionHeaderPadding" | "listBoxHandle" | "sectionClassName" | "sectionStyle">, AriaValidationProps, Omit<ComboBoxStateOptions<ListItem>, "items" | "children" | "errorMessage" | "description" | "validationState" | "selectedKey">, InputMessage, Pick<ActionIconButtonProps, "tooltip">, Pick<ColorInputProps, "onTriggerPress"> {
9703
+ interface ComboBoxProps extends StylingProps, Omit<AriaComboBoxOptions<ListItem>, "items" | "children" | "inputRef" | "popoverRef" | "listBoxRef" | "buttonRef" | "validationState" | "errorMessage" | "description">, Omit<AriaComboBoxProps<ListItem>, "items" | "children" | "errorMessage" | "description" | "validationState">, Omit<UNSAFE_ListBoxProps, "autoFocus" | "onBlur" | "onFocus" | "onSelectionChange" | "selectionBehavior" | "selectionMode" | "selectedKeys" | "defaultSelectedKeys" | "renderDropIndicator" | "renderDragPreview" | "dropIndicatorClassName" | "dropIndicatorStyle" | "dragAndDropHooks" | "dependencies" | "orientation" | "layout" | "renderSectionHeader" | "showSectionHeader" | "withSectionHeaderPadding" | "listBoxHandle" | "sectionClassName" | "sectionStyle">, AriaValidationProps, Omit<ComboBoxStateOptions<ListItem>, "items" | "children" | "errorMessage" | "description" | "validationState" | "selectedKey">, InputMessage, Pick<ActionIconButtonProps, "tooltip">, Pick<ColorInputProps, "onTriggerPress"> {
9991
9704
  /** ID of the initially selected item */
9992
9705
  defaultSelectedKey?: string;
9993
9706
  /**
@@ -10014,7 +9727,12 @@ interface ComboBoxProps extends StylingProps, Omit<AriaComboBoxOptions<ListItem>
10014
9727
  inputStyle?: React__default.CSSProperties;
10015
9728
  /** The class name to apply to the input element */
10016
9729
  inputClassName?: string;
10017
- /** Optional label for the toggle button */
9730
+ /**
9731
+ * Accessible name for the toggle button. Not rendered visually.
9732
+ *
9733
+ * A blank string is treated as unset, keeping the built-in name. Setting this
9734
+ * overrides any `aria-labelledby` the toggle would otherwise inherit.
9735
+ */
10018
9736
  toggleLabel?: string;
10019
9737
  filterItems?: boolean;
10020
9738
  onInputChange?: (value: string) => void;
@@ -10056,18 +9774,32 @@ interface ComboBoxProps extends StylingProps, Omit<AriaComboBoxOptions<ListItem>
10056
9774
  */
10057
9775
  inputType?: "text" | "number";
10058
9776
  /**
10059
- * The minimum value for the input field. This is only valid when `inputType`
10060
- * is set to `number`.
9777
+ * The minimum value for the input field. Only applies when `inputType="number"`.
9778
+ *
9779
+ * Requires `onValueChange` or `onInputSubmit` to receive and apply the clamped value.
10061
9780
  */
10062
9781
  minValue?: number;
10063
9782
  /**
10064
- * The maximum value for the input field. This is only valid when `inputType`
10065
- * is set to `number`.
9783
+ * The maximum value for the input field. Only applies when `inputType="number"`.
9784
+ *
9785
+ * Requires `onValueChange` or `onInputSubmit` to receive and apply the clamped value.
10066
9786
  */
10067
9787
  maxValue?: number;
10068
9788
  /** Listener to call when the input value is submitted */
10069
9789
  onInputSubmit?: (value: string) => void;
10070
- /** Listener to call when the selected value changes */
9790
+ /**
9791
+ * Listener to call when the selected value changes.
9792
+ *
9793
+ * Also called when the selected item's label changes after selection (e.g. the consumer
9794
+ * relabels the item, or an async collection resolves), so the reported `value` converges on
9795
+ * the item's current label once the field settles. While the user has unsubmitted text, a
9796
+ * label-only change is deferred; it is reported on the next selection, submit, or blur that
9797
+ * settles the input back onto the selection. With a controlled `inputValue` the consumer owns
9798
+ * that sync, so a deferred label is only reported once they settle the input themselves.
9799
+ *
9800
+ * Do not relabel the selected item from inside this callback — the new label re-triggers the
9801
+ * listener, which loops unless the relabel is idempotent.
9802
+ */
10071
9803
  onValueChange?: (option: {
10072
9804
  value?: string;
10073
9805
  key?: string | null;
@@ -10269,7 +10001,7 @@ interface ColorSwatchPickerProps extends StylingProps, Pick<RadioGroupProps, "op
10269
10001
 
10270
10002
  declare const ColorSwatchPicker: React__default.ForwardRefExoticComponent<ColorSwatchPickerProps & React__default.RefAttributes<HTMLDivElement>>;
10271
10003
 
10272
- declare const TimeField: React__default.ForwardRefExoticComponent<StylingProps & Omit<Omit<TimeFieldStateOptions<TimeValue>, "locale"> & AriaTimeFieldProps<TimeValue>, "validationState" | "isRequired" | "validate" | "isInvalid"> & Pick<SharedInputProps, "label" | "variant" | "validationState" | "labelPosition"> & InputMessage & React__default.RefAttributes<HTMLDivElement>>;
10004
+ declare const TimeField: React__default.ForwardRefExoticComponent<StylingProps & Omit<Omit<TimeFieldStateOptions<TimeValue>, "locale"> & AriaTimeFieldProps<TimeValue>, "isRequired" | "validate" | "validationState" | "isInvalid"> & Pick<SharedInputProps, "label" | "validationState" | "labelPosition" | "variant"> & InputMessage & React__default.RefAttributes<HTMLDivElement>>;
10273
10005
 
10274
10006
  type TimeFieldProps = StylingProps & Omit<Omit<TimeFieldStateOptions, "locale"> & AriaTimeFieldProps<TimeValue>, "validationState" | "isInvalid" | "isRequired" | "validate"> & Pick<SharedInputProps, "variant" | "labelPosition" | "validationState" | "label"> & InputMessage;
10275
10007
 
@@ -10520,7 +10252,7 @@ type DateFieldProps = StylingProps & Omit<Omit<DateFieldStateOptions, "locale">
10520
10252
  pickerType?: DateFieldPickerType;
10521
10253
  };
10522
10254
 
10523
- declare const DateField: React__default.ForwardRefExoticComponent<StylingProps & Omit<Omit<DateFieldStateOptions<DateValue>, "locale"> & AriaDateFieldProps<DateValue>, "validationState" | "isRequired" | "validate" | "isInvalid" | "createCalendar"> & Pick<SharedInputProps, "label" | "variant" | "validationState" | "labelPosition"> & InputMessage & {
10255
+ declare const DateField: React__default.ForwardRefExoticComponent<StylingProps & Omit<Omit<DateFieldStateOptions<DateValue>, "locale"> & AriaDateFieldProps<DateValue>, "isRequired" | "validate" | "validationState" | "isInvalid" | "createCalendar"> & Pick<SharedInputProps, "label" | "validationState" | "labelPosition" | "variant"> & InputMessage & {
10524
10256
  pickerType?: DateFieldPickerType;
10525
10257
  } & React__default.RefAttributes<HTMLDivElement>>;
10526
10258
 
@@ -11316,6 +11048,11 @@ interface I18nResult<T extends LocalizedStrings[keyof LocalizedStrings]> {
11316
11048
  interface MessageDescriptor {
11317
11049
  id: string;
11318
11050
  defaultMessage?: string;
11051
+ /**
11052
+ * Translator context. Build-time only — the published bundle is stripped of
11053
+ * it, and nothing reads it at runtime.
11054
+ */
11055
+ description?: string;
11319
11056
  }
11320
11057
  /**
11321
11058
  * Defines a set of messages for use with the `useI18n` hook.
@@ -11323,10 +11060,10 @@ interface MessageDescriptor {
11323
11060
  * @param messages An object containing message descriptors.
11324
11061
  * @returns An object containing the message descriptors with their keys as
11325
11062
  * property names.
11063
+ * @remarks Registers each `defaultMessage` so the no-catalog path can format it
11064
+ * as ICU rather than rendering the template verbatim.
11326
11065
  */
11327
- declare const defineMessages: <T extends Record<string, {
11328
- id: string;
11329
- }>>(messages: T) => T;
11066
+ declare const defineMessages: <T extends Record<string, MessageDescriptor>>(messages: T) => T;
11330
11067
 
11331
11068
  /**
11332
11069
  * A hook that uses a MutationObserver to watch for changes to the DOM.
@@ -11469,6 +11206,47 @@ declare function usePreventFocus({ ref, isDisabled, }: {
11469
11206
  isDisabled?: boolean;
11470
11207
  }): void;
11471
11208
 
11209
+ /**
11210
+ * Every message id Baseline UI can ask an `I18nProvider` to resolve.
11211
+ *
11212
+ * Use it to derive translation coverage instead of maintaining a hand-written
11213
+ * copy that goes stale on each upgrade:
11214
+ *
11215
+ * @example
11216
+ * ```ts
11217
+ * import { messageIds } from "@baseline-ui/core";
11218
+ *
11219
+ * const uncovered = messageIds.filter((id) => !(id in ourCatalog.en));
11220
+ * ```;
11221
+ */
11222
+ declare const messageIds: readonly ["bui.alertDialog.close", "bui.audioPlayer.audioTimeline", "bui.audioPlayer.pause", "bui.audioPlayer.play", "bui.buttonSelect.more", "bui.buttonSelect.moreWithLabel", "bui.calendar.nextMonth", "bui.calendar.nextYear", "bui.calendar.previousMonth", "bui.calendar.previousYear", "bui.calendar.selectMonth", "bui.calendar.selectYear", "bui.colorInput.add", "bui.colorInput.addColor", "bui.colorInput.cancel", "bui.colorInput.colorFormat", "bui.colorInput.colorPresets", "bui.colorInput.customColors", "bui.colorInput.indeterminate", "bui.colorInput.newColor", "bui.colorInput.noColor", "bui.colorInput.removeColor", "bui.colorInput.transparent", "bui.colorSwatch.none", "bui.dateField.openCalendar", "bui.drawer.close", "bui.editor.action", "bui.editor.addLink", "bui.editor.backgroundColor", "bui.editor.bold", "bui.editor.cancel", "bui.editor.close", "bui.editor.copy", "bui.editor.cut", "bui.editor.editLink", "bui.editor.fontColor", "bui.editor.help", "bui.editor.italic", "bui.editor.linkAnnotation", "bui.editor.mention", "bui.editor.openHelpDialog", "bui.editor.paste", "bui.editor.redo", "bui.editor.removeLink", "bui.editor.save", "bui.editor.selectAll", "bui.editor.shortcut", "bui.editor.submit", "bui.editor.toolbarFocus", "bui.editor.underline", "bui.editor.undo", "bui.fileList.loading", "bui.fileList.removeHint", "bui.freehandCanvas.redo", "bui.freehandCanvas.undo", "bui.imageDropZone.selectImage", "bui.imageGallery.cancel", "bui.imageGallery.delete", "bui.imageGallery.loading", "bui.inlineAlert.close", "bui.pagination.goToPage", "bui.pagination.nextPage", "bui.pagination.pageXofY", "bui.pagination.prevPage", "bui.select.clear", "bui.select.more", "bui.select.search", "bui.select.selectAll", "bui.stepper.completed", "bui.stepper.label", "bui.stepper.step", "bui.table.loading", "bui.toolbar.more", "bui.treeView.collapse", "bui.treeView.expand", "bui.treeView.rename", "bui.useMedia.paused", "bui.useMedia.playing"];
11223
+ type MessageId = (typeof messageIds)[number];
11224
+ /**
11225
+ * Maps each deprecated bare id — the last dot-segment of a namespaced id — to
11226
+ * every id that claims it, so a catalog keyed the old way can be re-keyed
11227
+ * mechanically. Each key is kept alongside the ids it maps to: a bare key may
11228
+ * also be one your own app looks up, and the namespaced entry is what Baseline
11229
+ * UI resolves against either way.
11230
+ *
11231
+ * @example
11232
+ * ```ts
11233
+ * import { legacyMessageIdMap } from "@baseline-ui/core";
11234
+ *
11235
+ * const migrated = Object.fromEntries(
11236
+ * Object.entries(oldCatalog).flatMap(([key, value]) => [
11237
+ * [key, value],
11238
+ * ...(legacyMessageIdMap[key] ?? []).map((id) => [id, value]),
11239
+ * ]),
11240
+ * );
11241
+ * ```;
11242
+ *
11243
+ * @remarks An entry with more than one id is ambiguous: overriding that bare id
11244
+ * overrides every component listed, which forecloses any language where the
11245
+ * word inflects differently per context. Those need a per-id translation.
11246
+ * The bare-id fallback is deprecated and will be removed in a future major.
11247
+ */
11248
+ declare const legacyMessageIdMap: Readonly<Partial<Record<string, readonly MessageId[]>>>;
11249
+
11472
11250
  type Assertiveness = 'assertive' | 'polite';
11473
11251
  type Message = string | {
11474
11252
  'aria-labelledby': string;
@@ -11535,5 +11313,5 @@ declare namespace reactStately {
11535
11313
  export type { reactStately_Color as Color, reactStately_ListData as ListData, reactStately_TreeData as TreeData };
11536
11314
  }
11537
11315
 
11538
- export { Accordion, AccordionItem, ActionButton, ActionGroup, ActionGroupItem, ActionIconButton, Actionable, AlertDialog, AudioPlayer, Autocomplete, Avatar, Box, ButtonSelect, Calendar, Cell, Checkbox, Code, ColorInput, ColorSwatch, ColorSwatchPicker, Column, ComboBox, DateField, DateFormat, DefaultListOption, DeviceProvider, DeviceProviderContext, Dialog, DialogTitle, Disclosure, DomNodeRenderer, Drawer, EMPTY_SELECTION_STATE, Editor, EditorCore, EditorProvider, FileInput, FileList$1 as FileList, FileUploader, FocusScope, Focusable, FrameProvider, FreehandCanvas, GlobalToastRegion, GridLayout, GridList, Group, I18nProvider, Icon, IconColorInput, IconColorInputButton, IconSelect, IconSlider, ImageDropZone, ImageGallery, InlineAlert, Kbd, Link, ListBox, ListLayout, LocaleAwareGridLayout, Markdown, Menu, MessageFormat, Modal, ModalClose, ModalContent, ModalTrigger, NumberFormat, NumberInput, Pagination, Panel, PanelGroup, PanelResizeHandle, PointPicker, PointPickerContent, PointPickerDisplay, Popover, PopoverContent, PopoverTrigger, Portal, PortalContainerProvider, Pressable, Preview, ProgressBar, ProgressSpinner, REACT_ARIA_INCOMPATIBLE_KEYS, RadioGroup, RangeCalendar, Reaction, Row, ScrollControlButton, SearchInput, Select, Separator, Size, Skeleton, Slider, StatusCard, Stepper, Switch, TabItem, Table, TableBody, TableHeader, TableLayout, Tabs, Tag, TagGroup, TaggedPagination, Text, TextInput, ThemeProvider, TimeField, ToastQueue, ToggleButton, ToggleIconButton, Toolbar, Tooltip, TreeView, UNSAFE_ListBox, reactAria as UNSAFE_aria, reactStately as UNSAFE_stately, VIRTUALIZER_LAYOUT_DEFAULT_OPTIONS, Virtualizer, VisuallyHidden, WaterfallLayout, announce, areColorsEqual, booleanOrObjectToConfig, calculateFontSizeToFitWidth, capitalize, clamp, classNames, cleanKeyFromGlobImport, clearAnnouncer, defineMessages, destroyAnnouncer, devWarnOnce, directionVar, disableAnimations, enableAnimations, filterDOMProps, filterTruthyValues, findFocusableElements, getAbsoluteBounds, getAbsolutePosition, getActiveElement, getHTMLElement, getOsSpecificKeyboardShortcutLabel, getOwnerDocument, getPlainText, getSvgPathFromStroke, getTextDimensions, handleEditorShortcut, iconMap, invariant, isFocusableElement, isInIframe, isInShadowDOM, isInputThatOpensKeyboard, isInsideOverlayContent, isRect, isUrl, lightenColor, mergeProps, mergeRefs, onDropOrPaste, parseColor, safeSpreadProps, useCollator, useDateFormatter, useDevice, useDragAndDrop, useEditable, useEditor, useEditorContext, useFilter, useFocusRing, useFocusVisible, useFrameDimensions, useI18n, useId, useImage, useInteractionModality, useIntersectionObserver, useIsFirstRender, useKeyboard, useListData, useLiveInteractionModality, useLocalStorage, useLocale, useMutationObserver, useNumberFormatter, useObjectRef, usePointProximity, usePortalContainer, usePreventFocus, useResizeObserver, useTableDragAndDrop, useTextSelection, useUndoRedo, useUserPreferences };
11539
- export type { AccordionItemProps, AccordionProps, ActionButtonProps, ActionGroupProps, ActionIconButtonProps, ActionableProps, ActiveMarks, AlertDialogProps, AudioPlayerProps, AutocompleteProps, AvatarProps, BlockProps, BoundaryAxis, BoxProps, ButtonSelectProps, CalendarHeaderVariant, CalendarProps, CalendarSize, CellProps, CheckboxProps, CodeProps, ColorInputProps, ColorPreset, ColorSwatchPickerProps, ColorSwatchProps, ColumnProps, ComboBoxProps, CommandArgs, CommandName, DateFieldPickerType, DateFieldProps, DateFormatProps, Device, DeviceProviderProps, DialogProps, DialogTitleProps, DisclosureProps, DomNodeRendererProps, DrawerProps, EditableProps, EditorCoreOptions, EditorHandle, EditorProps, EditorProviderProps, EditorState, FileInputProps, FileListItem, FileListProps, FileUploaderProps, FocusableProps, FrameProviderProps, FreehandCanvasProps, GridListProps, GroupProps, HorizontalBoundaryBehavior, I18nProviderProps, I18nResult, IconColorInputProps, IconComponentProps$1 as IconComponentProps, IconProps, IconSelectProps, IconSliderProps, ImageDropZoneProps, ImageGalleryProps, ImperativePanelGroupHandle, ImperativePanelHandle, InlineAlertProps, IntersectionObserverOptions, KbdProps, Key, LinkProps, ListBoxProps, ListHandle$1 as ListHandle, ListOption, MarkName, MarkdownProps, MenuItem, MenuProps, MessageDescriptor, MessageFormatProps, MessageFormatter, ModalContentProps, ModalProps, ModelPoint, ModelRange, NumberFormatProps, NumberInputProps, PaginationProps, PanelGroupProps, PanelProps, PanelResizeHandleProps, PointPickerContentProps, PointPickerDisplayProps, PointPickerProps, PopoverContentHandle, PopoverContentProps, PopoverProps, PopoverTriggerProps, PortalProps, PressEvent, PreviewProps, ProgressBarProps, ProgressSpinnerProps, RadioGroupProps, RangeCalendarProps, ReactAriaIncompatibleKey, ReactionProps, Rect, ResizeObserverOptions, RichTextEditorDoc, RichTextEditorInline, RichTextEditorLink, RichTextEditorMention, RichTextEditorMentionInput, RichTextEditorParagraph, RichTextEditorText, RowProps, SVGRProps, SafeDOMAttributes, ScrollControlButtonProps, SearchInputProps, SelectProps, SelectionState, SeparatorProps, SetValue, SkeletonProps, SliderProps, StatusCardProps, StepperItem, StepperProps, StylingProps, SwitchProps, TabItemProps, TableBodyProps, TableHeaderProps, TableProps, TabsProps, TagGroupProps, TagProps, TagVariant, TaggedPaginationProps, TextInputProps, TextProps, TextSelectionProps, ThemeProviderProps, TimeFieldProps, ToastProps, ToggleButtonProps, ToggleIconButtonProps, ToolbarProps, TooltipProps, TreeListItem, TreeViewProps, UNSAFE_ListBoxProps, UseEditableOptions, UseEditorOptions, UseTableDragAndDropOptions, VirtualizerProps };
11316
+ export { Accordion, AccordionItem, ActionButton, ActionGroup, ActionGroupItem, ActionIconButton, Actionable, AlertDialog, AudioPlayer, Autocomplete, Avatar, Box, ButtonSelect, Calendar, Cell, Checkbox, Code, ColorInput, ColorSwatch, ColorSwatchPicker, Column, ComboBox, DateField, DateFormat, DefaultListOption, DeviceProvider, DeviceProviderContext, Dialog, DialogTitle, Disclosure, DomNodeRenderer, Drawer, EMPTY_SELECTION_STATE, Editor, EditorCore, EditorProvider, FileInput, FileList$1 as FileList, FileUploader, FocusScope, Focusable, FrameProvider, FreehandCanvas, GlobalToastRegion, GridLayout, GridList, Group, I18nProvider, Icon, IconColorInput, IconColorInputButton, IconSelect, IconSlider, ImageDropZone, ImageGallery, InlineAlert, Kbd, Link, ListBox, ListLayout, LocaleAwareGridLayout, Markdown, Menu, MessageFormat, Modal, ModalClose, ModalContent, ModalTrigger, NumberFormat, NumberInput, Pagination, Panel, PanelGroup, PanelResizeHandle, PointPicker, PointPickerContent, PointPickerDisplay, Popover, PopoverContent, PopoverTrigger, Portal, PortalContainerProvider, Pressable, Preview, ProgressBar, ProgressSpinner, REACT_ARIA_INCOMPATIBLE_KEYS, RadioGroup, RangeCalendar, Reaction, Row, ScrollControlButton, SearchInput, Select, Separator, Size, Skeleton, Slider, StatusCard, Stepper, Switch, TabItem, Table, TableBody, TableHeader, TableLayout, Tabs, Tag, TagGroup, TaggedPagination, Text, TextInput, ThemeProvider, TimeField, ToastQueue, ToggleButton, ToggleIconButton, Toolbar, Tooltip, TreeView, UNSAFE_ListBox, reactAria as UNSAFE_aria, reactStately as UNSAFE_stately, VIRTUALIZER_LAYOUT_DEFAULT_OPTIONS, Virtualizer, VisuallyHidden, WaterfallLayout, announce, areColorsEqual, booleanOrObjectToConfig, calculateFontSizeToFitWidth, capitalize, clamp, classNames, cleanKeyFromGlobImport, clearAnnouncer, defineMessages, destroyAnnouncer, devWarnOnce, directionVar, disableAnimations, enableAnimations, filterDOMProps, filterTruthyValues, findFocusableElements, getAbsoluteBounds, getAbsolutePosition, getActiveElement, getHTMLElement, getOsSpecificKeyboardShortcutLabel, getOwnerDocument, getPlainText, getSvgPathFromStroke, getTextDimensions, handleEditorShortcut, iconMap, invariant, isFocusableElement, isInIframe, isInShadowDOM, isInputThatOpensKeyboard, isInsideOverlayContent, isRect, isUrl, legacyMessageIdMap, lightenColor, mergeProps, mergeRefs, messageIds, onDropOrPaste, parseColor, safeSpreadProps, useCollator, useDateFormatter, useDevice, useDragAndDrop, useEditable, useEditor, useEditorContext, useFilter, useFocusRing, useFocusVisible, useFrameDimensions, useI18n, useId, useImage, useInteractionModality, useIntersectionObserver, useIsFirstRender, useKeyboard, useListData, useLiveInteractionModality, useLocalStorage, useLocale, useMutationObserver, useNumberFormatter, useObjectRef, usePointProximity, usePortalContainer, usePreventFocus, useResizeObserver, useTableDragAndDrop, useTextSelection, useUndoRedo, useUserPreferences };
11317
+ export type { AccordionItemProps, AccordionProps, ActionButtonProps, ActionGroupProps, ActionIconButtonProps, ActionableProps, ActiveMarks, AlertDialogProps, AudioPlayerProps, AutocompleteProps, AvatarProps, BlockProps, BoundaryAxis, BoxProps, ButtonSelectProps, CalendarHeaderVariant, CalendarProps, CalendarSize, CellProps, CheckboxProps, CodeProps, ColorInputProps, ColorPreset, ColorSwatchPickerProps, ColorSwatchProps, ColumnProps, ComboBoxProps, CommandArgs, CommandName, DateFieldPickerType, DateFieldProps, DateFormatProps, Device, DeviceProviderProps, DialogProps, DialogTitleProps, DisclosureProps, DomNodeRendererProps, DrawerProps, EditableProps, EditorCoreOptions, EditorHandle, EditorProps, EditorProviderProps, EditorState, FileInputProps, FileListItem, FileListProps, FileUploaderProps, FocusableProps, FrameProviderProps, FreehandCanvasProps, GridListProps, GroupProps, HorizontalBoundaryBehavior, I18nProviderProps, I18nResult, IconColorInputProps, IconComponentProps$1 as IconComponentProps, IconProps, IconSelectProps, IconSliderProps, ImageDropZoneProps, ImageGalleryProps, ImperativePanelGroupHandle, ImperativePanelHandle, InlineAlertProps, IntersectionObserverOptions, KbdProps, Key, LinkProps, ListBoxProps, ListHandle$1 as ListHandle, ListOption, MarkName, MarkdownProps, MenuItem, MenuProps, MessageDescriptor, MessageFormatProps, MessageFormatter, MessageId, ModalContentProps, ModalProps, ModelPoint, ModelRange, NumberFormatProps, NumberInputProps, PaginationProps, PanelGroupProps, PanelProps, PanelResizeHandleProps, PointPickerContentProps, PointPickerDisplayProps, PointPickerProps, PopoverContentHandle, PopoverContentProps, PopoverProps, PopoverTriggerProps, PortalProps, PressEvent, PreviewProps, ProgressBarProps, ProgressSpinnerProps, RadioGroupProps, RangeCalendarProps, ReactAriaIncompatibleKey, ReactionProps, Rect, ResizeObserverOptions, RichTextEditorDoc, RichTextEditorInline, RichTextEditorLink, RichTextEditorMention, RichTextEditorMentionInput, RichTextEditorParagraph, RichTextEditorText, RowProps, SVGRProps, SafeDOMAttributes, ScrollControlButtonProps, SearchInputProps, SelectProps, SelectionState, SeparatorProps, SetValue, SkeletonProps, SliderProps, StatusCardProps, StepperItem, StepperProps, StylingProps, SwitchProps, TabItemProps, TableBodyProps, TableHeaderProps, TableProps, TabsProps, TagGroupProps, TagProps, TagVariant, TaggedPaginationProps, TextInputProps, TextProps, TextSelectionProps, ThemeProviderProps, TimeFieldProps, ToastProps, ToggleButtonProps, ToggleIconButtonProps, ToolbarProps, TooltipProps, TreeListItem, TreeViewProps, UNSAFE_ListBoxProps, UseEditableOptions, UseEditorOptions, UseTableDragAndDropOptions, VirtualizerProps };