@geomak/ui 4.0.0 → 5.0.1

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
@@ -1919,68 +1919,71 @@ interface FileInputProps {
1919
1919
  */
1920
1920
  declare function FileInput({ allowMultiple, onChange, name, accept, }: FileInputProps): react_jsx_runtime.JSX.Element;
1921
1921
 
1922
- /** ─────────────────── DatePicker ─────────────────── */
1923
1922
  interface DatePickerProps {
1924
- value: Date;
1925
- onChange: (e: {
1926
- target: {
1927
- value: Date;
1928
- id?: string;
1929
- name?: string;
1930
- };
1931
- }) => void;
1932
- layout?: 'horizontal' | 'vertical';
1923
+ /** Current date. `null` / `undefined` means "no date selected". */
1924
+ value?: Date | null;
1925
+ /** Fires with the next date (or `null` if cleared via the clear button). */
1926
+ onChange?: (date: Date | null) => void;
1933
1927
  label?: React$1.ReactNode;
1928
+ /** Text shown in the trigger when no date is selected. Default `"Select a date…"`. */
1929
+ placeholder?: string;
1934
1930
  htmlFor?: string;
1935
1931
  name?: string;
1936
- style?: React$1.CSSProperties;
1937
- errorMessage?: React$1.ReactNode;
1938
- disableBefore?: Date | string;
1939
- disableAfter?: Date | string;
1932
+ /** Label/trigger orientation. Defaults to `'horizontal'`. */
1933
+ layout?: 'horizontal' | 'vertical';
1940
1934
  disabled?: boolean;
1941
- }
1942
- /**
1943
- * Custom calendar date picker.
1944
- *
1945
- * @example
1946
- * <DatePicker.DatePicker
1947
- * label="Report date"
1948
- * value={form.date}
1949
- * onChange={({ target }) => setField('date', target.value)}
1950
- * disableAfter={new Date()}
1951
- * />
1952
- */
1953
- declare function DatePickerBase({ value, onChange, layout, label, htmlFor, name, style, errorMessage, disableBefore, disableAfter, disabled, }: DatePickerProps): react_jsx_runtime.JSX.Element;
1954
- /** ─────────────────── TemporalPicker (year/number scroll) ─────────────────── */
1955
- interface TemporalPickerProps {
1956
- value: number;
1957
- onChange: (e: {
1958
- target: {
1959
- value: number;
1960
- };
1961
- }) => void;
1962
- type?: 'year';
1963
- upperLimit?: number;
1964
- lowerLimit?: number;
1965
1935
  errorMessage?: React$1.ReactNode;
1966
- label?: React$1.ReactNode;
1967
- layout?: string;
1936
+ /** Earliest selectable date. Dates before this render disabled. */
1937
+ min?: Date;
1938
+ /** Latest selectable date. Dates after this render disabled. */
1939
+ max?: Date;
1968
1940
  style?: React$1.CSSProperties;
1941
+ /**
1942
+ * Custom formatter for the trigger display. Defaults to
1943
+ * `YYYY-MM-DD` via `toISOString().slice(0, 10)`.
1944
+ */
1945
+ format?: (date: Date) => string;
1946
+ /** 0 = Sunday, 1 = Monday. Default `0`. */
1947
+ weekStartsOn?: 0 | 1;
1948
+ /** Allow the user to clear the date with a button in the popover. Default `true`. */
1949
+ clearable?: boolean;
1969
1950
  }
1970
- declare function TemporalPickerBase({ value, onChange, lowerLimit, upperLimit, errorMessage, label, layout, style, }: TemporalPickerProps): react_jsx_runtime.JSX.Element;
1971
- /** ─────────────────── Namespace export ─────────────────── */
1951
+ type TemporalPickerProps = DatePickerProps;
1972
1952
  /**
1973
- * Temporal date/time picker namespace.
1953
+ * Calendar date picker built on `@radix-ui/react-popover`.
1974
1954
  *
1975
- * @example
1976
- * import Temporal from '@geomak/ui'
1955
+ * Renders the calendar as a real `<table role="grid">` with weekday `<th>`
1956
+ * headers and per-day `<td role="gridcell">` cells, so screen readers get
1957
+ * proper row/column context.
1958
+ *
1959
+ * **Keyboard model** (focus is anywhere inside the grid):
1960
+ * - `←` `→` — previous / next day
1961
+ * - `↑` `↓` — previous / next week
1962
+ * - `PageUp` / `PageDown` — previous / next month
1963
+ * - `Home` / `End` — first / last day of the current week
1964
+ * - `Enter` / `Space` — select the focused day
1965
+ * - `Esc` — close the popover
1977
1966
  *
1978
- * <Temporal.DatePicker value={date} onChange={handleChange} label="Date" />
1979
- * <Temporal.TemporalPicker value={year} type="year" lowerLimit={2018} upperLimit={2026} onChange={handleChange} />
1967
+ * @example Required date
1968
+ * ```tsx
1969
+ * const [date, setDate] = useState<Date | null>(null)
1970
+ * <DatePicker
1971
+ * label="Report date"
1972
+ * value={date}
1973
+ * onChange={setDate}
1974
+ * max={new Date()}
1975
+ * />
1976
+ * ```
1977
+ *
1978
+ * @example Custom format
1979
+ * ```tsx
1980
+ * <DatePicker
1981
+ * value={date}
1982
+ * onChange={setDate}
1983
+ * format={(d) => new Intl.DateTimeFormat('en-GB', { dateStyle: 'long' }).format(d)}
1984
+ * />
1985
+ * ```
1980
1986
  */
1981
- declare const Temporal: {
1982
- DatePicker: typeof DatePickerBase;
1983
- TemporalPicker: typeof TemporalPickerBase;
1984
- };
1987
+ declare function DatePicker({ value, onChange, label, placeholder, htmlFor, name: _name, layout, disabled, errorMessage, min, max, style, format, weekStartsOn, clearable, }: DatePickerProps): react_jsx_runtime.JSX.Element;
1985
1988
 
1986
- export { AppShell, type AppShellProps, AutoComplete, type AutoCompleteProps, Button, type ButtonProps, Catalog, CatalogCarousel, type CatalogCarouselProps, CatalogGrid, type CatalogGridProps, type CatalogProps, Checkbox, type CheckboxProps, ContextMenu, type ContextMenuActionItem, type ContextMenuPosition, type ContextMenuProps, type DatePickerProps, Drawer, type DrawerProps, Dropdown, type DropdownItem, DropdownPill, type DropdownPillProps, type DropdownProps, type ExpandRowOptions, FadingBase, type FadingBaseProps, FileInput, type FileInputProps, GridCard, type GridCardItem, type GridCardProps, Icon, IconButton, type IconButtonProps, List, type ListItem, type ListProps, LoadingSpinner, type LoadingSpinnerProps, MenuBar, MenuBarItem, type MenuBarItemConfig, type MenuBarItemProps, type MenuBarProps, Modal, type ModalProps, type NotificationPayload, NotificationProvider, NumberInput, type NumberInputProps, OpaqueGridCard, type OpaqueGridCardProps, type PaginationOptions, Password, type PasswordProps, Portal, type PortalProps, ScalableContainer, type ScalableContainerProps, SearchInput, type SearchInputProps, Sidebar, type SidebarItem, type SidebarProps, type SidebarSection, SkeletonBox, type SkeletonBoxProps, SkeletonCard, type SkeletonCardProps, SkeletonCircle, type SkeletonCircleProps, SkeletonText, type SkeletonTextProps, Switch, type SwitchInputProps, type TabItem, Table, type TableColumn, type TableProps, Tabs, type TabsProps, Temporal, type TemporalPickerProps, TextInput, type TextInputProps, type ThemeColors, type ThemeConfig, type ThemeDensity, type ThemeMotion, ThemeProvider, type ThemeProviderProps, type ThemeRadius, type ThemeShadows, ThemeSwitch, type ThemeSwitchProps, type ThemeTypography, ToggleButton, type ToggleButtonProps, type ToggleItem, Tooltip, type TooltipProps, TooltipProvider, TopBar, type TopBarProps, Tree, type TreeItemClickPayload, type TreeNode, type TreeProps, TreeSelect, type TreeSelectProps, Wizard, type WizardProps, type WizardStep, useNotification };
1989
+ export { AppShell, type AppShellProps, AutoComplete, type AutoCompleteProps, Button, type ButtonProps, Catalog, CatalogCarousel, type CatalogCarouselProps, CatalogGrid, type CatalogGridProps, type CatalogProps, Checkbox, type CheckboxProps, ContextMenu, type ContextMenuActionItem, type ContextMenuPosition, type ContextMenuProps, type DatePickerProps, Drawer, type DrawerProps, Dropdown, type DropdownItem, DropdownPill, type DropdownPillProps, type DropdownProps, type ExpandRowOptions, FadingBase, type FadingBaseProps, FileInput, type FileInputProps, GridCard, type GridCardItem, type GridCardProps, Icon, IconButton, type IconButtonProps, List, type ListItem, type ListProps, LoadingSpinner, type LoadingSpinnerProps, MenuBar, MenuBarItem, type MenuBarItemConfig, type MenuBarItemProps, type MenuBarProps, Modal, type ModalProps, type NotificationPayload, NotificationProvider, NumberInput, type NumberInputProps, OpaqueGridCard, type OpaqueGridCardProps, type PaginationOptions, Password, type PasswordProps, Portal, type PortalProps, ScalableContainer, type ScalableContainerProps, SearchInput, type SearchInputProps, Sidebar, type SidebarItem, type SidebarProps, type SidebarSection, SkeletonBox, type SkeletonBoxProps, SkeletonCard, type SkeletonCardProps, SkeletonCircle, type SkeletonCircleProps, SkeletonText, type SkeletonTextProps, Switch, type SwitchInputProps, type TabItem, Table, type TableColumn, type TableProps, Tabs, type TabsProps, DatePicker as Temporal, type TemporalPickerProps, TextInput, type TextInputProps, type ThemeColors, type ThemeConfig, type ThemeDensity, type ThemeMotion, ThemeProvider, type ThemeProviderProps, type ThemeRadius, type ThemeShadows, ThemeSwitch, type ThemeSwitchProps, type ThemeTypography, ToggleButton, type ToggleButtonProps, type ToggleItem, Tooltip, type TooltipProps, TooltipProvider, TopBar, type TopBarProps, Tree, type TreeItemClickPayload, type TreeNode, type TreeProps, TreeSelect, type TreeSelectProps, Wizard, type WizardProps, type WizardStep, useNotification };
package/dist/index.d.ts CHANGED
@@ -1919,68 +1919,71 @@ interface FileInputProps {
1919
1919
  */
1920
1920
  declare function FileInput({ allowMultiple, onChange, name, accept, }: FileInputProps): react_jsx_runtime.JSX.Element;
1921
1921
 
1922
- /** ─────────────────── DatePicker ─────────────────── */
1923
1922
  interface DatePickerProps {
1924
- value: Date;
1925
- onChange: (e: {
1926
- target: {
1927
- value: Date;
1928
- id?: string;
1929
- name?: string;
1930
- };
1931
- }) => void;
1932
- layout?: 'horizontal' | 'vertical';
1923
+ /** Current date. `null` / `undefined` means "no date selected". */
1924
+ value?: Date | null;
1925
+ /** Fires with the next date (or `null` if cleared via the clear button). */
1926
+ onChange?: (date: Date | null) => void;
1933
1927
  label?: React$1.ReactNode;
1928
+ /** Text shown in the trigger when no date is selected. Default `"Select a date…"`. */
1929
+ placeholder?: string;
1934
1930
  htmlFor?: string;
1935
1931
  name?: string;
1936
- style?: React$1.CSSProperties;
1937
- errorMessage?: React$1.ReactNode;
1938
- disableBefore?: Date | string;
1939
- disableAfter?: Date | string;
1932
+ /** Label/trigger orientation. Defaults to `'horizontal'`. */
1933
+ layout?: 'horizontal' | 'vertical';
1940
1934
  disabled?: boolean;
1941
- }
1942
- /**
1943
- * Custom calendar date picker.
1944
- *
1945
- * @example
1946
- * <DatePicker.DatePicker
1947
- * label="Report date"
1948
- * value={form.date}
1949
- * onChange={({ target }) => setField('date', target.value)}
1950
- * disableAfter={new Date()}
1951
- * />
1952
- */
1953
- declare function DatePickerBase({ value, onChange, layout, label, htmlFor, name, style, errorMessage, disableBefore, disableAfter, disabled, }: DatePickerProps): react_jsx_runtime.JSX.Element;
1954
- /** ─────────────────── TemporalPicker (year/number scroll) ─────────────────── */
1955
- interface TemporalPickerProps {
1956
- value: number;
1957
- onChange: (e: {
1958
- target: {
1959
- value: number;
1960
- };
1961
- }) => void;
1962
- type?: 'year';
1963
- upperLimit?: number;
1964
- lowerLimit?: number;
1965
1935
  errorMessage?: React$1.ReactNode;
1966
- label?: React$1.ReactNode;
1967
- layout?: string;
1936
+ /** Earliest selectable date. Dates before this render disabled. */
1937
+ min?: Date;
1938
+ /** Latest selectable date. Dates after this render disabled. */
1939
+ max?: Date;
1968
1940
  style?: React$1.CSSProperties;
1941
+ /**
1942
+ * Custom formatter for the trigger display. Defaults to
1943
+ * `YYYY-MM-DD` via `toISOString().slice(0, 10)`.
1944
+ */
1945
+ format?: (date: Date) => string;
1946
+ /** 0 = Sunday, 1 = Monday. Default `0`. */
1947
+ weekStartsOn?: 0 | 1;
1948
+ /** Allow the user to clear the date with a button in the popover. Default `true`. */
1949
+ clearable?: boolean;
1969
1950
  }
1970
- declare function TemporalPickerBase({ value, onChange, lowerLimit, upperLimit, errorMessage, label, layout, style, }: TemporalPickerProps): react_jsx_runtime.JSX.Element;
1971
- /** ─────────────────── Namespace export ─────────────────── */
1951
+ type TemporalPickerProps = DatePickerProps;
1972
1952
  /**
1973
- * Temporal date/time picker namespace.
1953
+ * Calendar date picker built on `@radix-ui/react-popover`.
1974
1954
  *
1975
- * @example
1976
- * import Temporal from '@geomak/ui'
1955
+ * Renders the calendar as a real `<table role="grid">` with weekday `<th>`
1956
+ * headers and per-day `<td role="gridcell">` cells, so screen readers get
1957
+ * proper row/column context.
1958
+ *
1959
+ * **Keyboard model** (focus is anywhere inside the grid):
1960
+ * - `←` `→` — previous / next day
1961
+ * - `↑` `↓` — previous / next week
1962
+ * - `PageUp` / `PageDown` — previous / next month
1963
+ * - `Home` / `End` — first / last day of the current week
1964
+ * - `Enter` / `Space` — select the focused day
1965
+ * - `Esc` — close the popover
1977
1966
  *
1978
- * <Temporal.DatePicker value={date} onChange={handleChange} label="Date" />
1979
- * <Temporal.TemporalPicker value={year} type="year" lowerLimit={2018} upperLimit={2026} onChange={handleChange} />
1967
+ * @example Required date
1968
+ * ```tsx
1969
+ * const [date, setDate] = useState<Date | null>(null)
1970
+ * <DatePicker
1971
+ * label="Report date"
1972
+ * value={date}
1973
+ * onChange={setDate}
1974
+ * max={new Date()}
1975
+ * />
1976
+ * ```
1977
+ *
1978
+ * @example Custom format
1979
+ * ```tsx
1980
+ * <DatePicker
1981
+ * value={date}
1982
+ * onChange={setDate}
1983
+ * format={(d) => new Intl.DateTimeFormat('en-GB', { dateStyle: 'long' }).format(d)}
1984
+ * />
1985
+ * ```
1980
1986
  */
1981
- declare const Temporal: {
1982
- DatePicker: typeof DatePickerBase;
1983
- TemporalPicker: typeof TemporalPickerBase;
1984
- };
1987
+ declare function DatePicker({ value, onChange, label, placeholder, htmlFor, name: _name, layout, disabled, errorMessage, min, max, style, format, weekStartsOn, clearable, }: DatePickerProps): react_jsx_runtime.JSX.Element;
1985
1988
 
1986
- export { AppShell, type AppShellProps, AutoComplete, type AutoCompleteProps, Button, type ButtonProps, Catalog, CatalogCarousel, type CatalogCarouselProps, CatalogGrid, type CatalogGridProps, type CatalogProps, Checkbox, type CheckboxProps, ContextMenu, type ContextMenuActionItem, type ContextMenuPosition, type ContextMenuProps, type DatePickerProps, Drawer, type DrawerProps, Dropdown, type DropdownItem, DropdownPill, type DropdownPillProps, type DropdownProps, type ExpandRowOptions, FadingBase, type FadingBaseProps, FileInput, type FileInputProps, GridCard, type GridCardItem, type GridCardProps, Icon, IconButton, type IconButtonProps, List, type ListItem, type ListProps, LoadingSpinner, type LoadingSpinnerProps, MenuBar, MenuBarItem, type MenuBarItemConfig, type MenuBarItemProps, type MenuBarProps, Modal, type ModalProps, type NotificationPayload, NotificationProvider, NumberInput, type NumberInputProps, OpaqueGridCard, type OpaqueGridCardProps, type PaginationOptions, Password, type PasswordProps, Portal, type PortalProps, ScalableContainer, type ScalableContainerProps, SearchInput, type SearchInputProps, Sidebar, type SidebarItem, type SidebarProps, type SidebarSection, SkeletonBox, type SkeletonBoxProps, SkeletonCard, type SkeletonCardProps, SkeletonCircle, type SkeletonCircleProps, SkeletonText, type SkeletonTextProps, Switch, type SwitchInputProps, type TabItem, Table, type TableColumn, type TableProps, Tabs, type TabsProps, Temporal, type TemporalPickerProps, TextInput, type TextInputProps, type ThemeColors, type ThemeConfig, type ThemeDensity, type ThemeMotion, ThemeProvider, type ThemeProviderProps, type ThemeRadius, type ThemeShadows, ThemeSwitch, type ThemeSwitchProps, type ThemeTypography, ToggleButton, type ToggleButtonProps, type ToggleItem, Tooltip, type TooltipProps, TooltipProvider, TopBar, type TopBarProps, Tree, type TreeItemClickPayload, type TreeNode, type TreeProps, TreeSelect, type TreeSelectProps, Wizard, type WizardProps, type WizardStep, useNotification };
1989
+ export { AppShell, type AppShellProps, AutoComplete, type AutoCompleteProps, Button, type ButtonProps, Catalog, CatalogCarousel, type CatalogCarouselProps, CatalogGrid, type CatalogGridProps, type CatalogProps, Checkbox, type CheckboxProps, ContextMenu, type ContextMenuActionItem, type ContextMenuPosition, type ContextMenuProps, type DatePickerProps, Drawer, type DrawerProps, Dropdown, type DropdownItem, DropdownPill, type DropdownPillProps, type DropdownProps, type ExpandRowOptions, FadingBase, type FadingBaseProps, FileInput, type FileInputProps, GridCard, type GridCardItem, type GridCardProps, Icon, IconButton, type IconButtonProps, List, type ListItem, type ListProps, LoadingSpinner, type LoadingSpinnerProps, MenuBar, MenuBarItem, type MenuBarItemConfig, type MenuBarItemProps, type MenuBarProps, Modal, type ModalProps, type NotificationPayload, NotificationProvider, NumberInput, type NumberInputProps, OpaqueGridCard, type OpaqueGridCardProps, type PaginationOptions, Password, type PasswordProps, Portal, type PortalProps, ScalableContainer, type ScalableContainerProps, SearchInput, type SearchInputProps, Sidebar, type SidebarItem, type SidebarProps, type SidebarSection, SkeletonBox, type SkeletonBoxProps, SkeletonCard, type SkeletonCardProps, SkeletonCircle, type SkeletonCircleProps, SkeletonText, type SkeletonTextProps, Switch, type SwitchInputProps, type TabItem, Table, type TableColumn, type TableProps, Tabs, type TabsProps, DatePicker as Temporal, type TemporalPickerProps, TextInput, type TextInputProps, type ThemeColors, type ThemeConfig, type ThemeDensity, type ThemeMotion, ThemeProvider, type ThemeProviderProps, type ThemeRadius, type ThemeShadows, ThemeSwitch, type ThemeSwitchProps, type ThemeTypography, ToggleButton, type ToggleButtonProps, type ToggleItem, Tooltip, type TooltipProps, TooltipProvider, TopBar, type TopBarProps, Tree, type TreeItemClickPayload, type TreeNode, type TreeProps, TreeSelect, type TreeSelectProps, Wizard, type WizardProps, type WizardStep, useNotification };