docthub-core-components 2.99.0 → 2.99.2

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.
@@ -38,7 +38,9 @@ interface AutocompleteProps<T> {
38
38
  value: string | number;
39
39
  text: string;
40
40
  };
41
+ /** Shown in the dropdown when the filtered option list is empty (includes freeSolo / multiple freeSolo). */
41
42
  noOptionsText?: string;
43
+ /** Alias for `noOptionsText` when you prefer "empty state" wording in consuming code. */
42
44
  emptyMessage?: string;
43
45
  className?: string;
44
46
  inputClassName?: string;
@@ -1,6 +1,16 @@
1
1
  import { DayPickerSingleProps } from 'react-day-picker';
2
2
  import * as React from "react";
3
3
  export type DateFormat = "MM/DD/YYYY" | "DD/MM/YYYY" | "YYYY-MM-DD" | "DD-MM-YYYY" | "DD MMM YYYY";
4
+ /** Half-span for the calendar year dropdown: selectable years are `today ± CALENDAR_YEAR_HALF_SPAN` (inclusive), intersected with `minDate` / `maxDate` when set. */
5
+ export declare const CALENDAR_YEAR_HALF_SPAN = 100;
6
+ /**
7
+ * Effective min/max calendar years for the picker UI and manual validation,
8
+ * matching the year dropdown options.
9
+ */
10
+ export declare function getEffectiveCalendarYearBounds(minDate?: Date, maxDate?: Date, now?: Date): {
11
+ minYear: number;
12
+ maxYear: number;
13
+ };
4
14
  export interface DatePickerFieldProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onSelect" | "onChange"> {
5
15
  label?: string;
6
16
  placeholder?: string;
@@ -23,6 +23,7 @@ export interface DateRangePickerFieldProps extends Omit<React.HTMLAttributes<HTM
23
23
  displayFormat?: string;
24
24
  inputClassName?: string;
25
25
  error?: string;
26
+ /** When set, shows days from adjacent months in each month grid (react-day-picker `showOutsideDays`). Overrides `dayPickerProps.showOutsideDays`. */
26
27
  showOutsideDays?: boolean;
27
28
  clearable?: boolean;
28
29
  month?: Date;
@@ -0,0 +1,21 @@
1
+ import { DateRange, Matcher } from 'react-day-picker';
2
+ /** First instant of the calendar month containing `date` (for `startMonth` / `endMonth`). */
3
+ export declare function calendarMonthAnchor(date: Date): Date;
4
+ /** Local midnight for the calendar day containing `date` (inclusive min bound for that whole day). */
5
+ export declare function startOfDayLocal(date: Date): Date;
6
+ /** Local end-of-day for the calendar day containing `date` (inclusive max bound for that whole day). */
7
+ export declare function endOfDayLocal(date: Date): Date;
8
+ /**
9
+ * `true` if `date` falls on a calendar day allowed by `minDate` / `maxDate` (ignores time-of-day on bounds).
10
+ * Use with calendar-year checks where needed.
11
+ */
12
+ export declare function isDateWithinMinMaxLocalDay(date: Date, minDate?: Date, maxDate?: Date): boolean;
13
+ /** Both ends of a range (when present) must sit within min/max calendar days. */
14
+ export declare function isRangeWithinMinMaxLocalDay(range: DateRange | undefined, minDate?: Date, maxDate?: Date): boolean;
15
+ /**
16
+ * Disabled-day matchers: days before `minDate`'s calendar day / after `maxDate`'s calendar day.
17
+ * Uses start/end of local day so `minDate={new Date()}` still allows today (cells use midnight).
18
+ */
19
+ export declare function minMaxDisabledMatchers(minDate?: Date, maxDate?: Date): Matcher[];
20
+ /** Combine min/max bounds with optional `disabled` matchers from `dayPickerProps`. */
21
+ export declare function mergeDisabledMatchers(bounds: Matcher[], user?: Matcher | Matcher[]): Matcher | Matcher[] | undefined;
@@ -39,22 +39,62 @@ type DialogContentProps = React.ComponentPropsWithoutRef<"div"> & {
39
39
  size?: keyof typeof sizeClasses;
40
40
  showCloseButton?: boolean;
41
41
  closeOnEscape?: boolean;
42
+ /**
43
+ * `insideScroll` — keeps the dialog within the viewport with a fixed header/footer; scroll the
44
+ * main body with `DialogScrollableBody` (matches Base UI “Inside scroll” dialog pattern).
45
+ *
46
+ * `outsideScroll` — `Dialog.Viewport` is the scroll container; the popup can extend past the
47
+ * bottom edge and the user scrolls the overlay layer (Base UI “Outside scroll” dialog pattern).
48
+ */
49
+ layout?: "default" | "insideScroll" | "outsideScroll";
42
50
  };
43
51
  declare const DialogContent: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
44
52
  closeOnOutsideClick?: boolean;
45
53
  size?: keyof typeof sizeClasses;
46
54
  showCloseButton?: boolean;
47
55
  closeOnEscape?: boolean;
56
+ /**
57
+ * `insideScroll` — keeps the dialog within the viewport with a fixed header/footer; scroll the
58
+ * main body with `DialogScrollableBody` (matches Base UI “Inside scroll” dialog pattern).
59
+ *
60
+ * `outsideScroll` — `Dialog.Viewport` is the scroll container; the popup can extend past the
61
+ * bottom edge and the user scrolls the overlay layer (Base UI “Outside scroll” dialog pattern).
62
+ */
63
+ layout?: "default" | "insideScroll" | "outsideScroll";
48
64
  } & React.RefAttributes<HTMLDivElement>>;
49
65
  declare const DialogHeader: {
50
66
  ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
51
67
  displayName: string;
52
68
  };
53
- declare const DialogFooter: {
54
- ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
55
- displayName: string;
69
+ type DialogFooterProps = React.ComponentPropsWithoutRef<"div"> & {
70
+ /**
71
+ * Renders an inset top border (`mx-6`, same gutter as content); padding sits below the line so
72
+ * actions do not touch the divider (use with `layout="insideScroll"`).
73
+ */
74
+ withTopBorder?: boolean;
56
75
  };
76
+ declare const DialogFooter: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
77
+ /**
78
+ * Renders an inset top border (`mx-6`, same gutter as content); padding sits below the line so
79
+ * actions do not touch the divider (use with `layout="insideScroll"`).
80
+ */
81
+ withTopBorder?: boolean;
82
+ } & React.RefAttributes<HTMLDivElement>>;
83
+ type DialogScrollableBodyProps = React.ComponentPropsWithoutRef<"div"> & {
84
+ /**
85
+ * Renders an inset top border (`mx-6`, same gutter as content); scroll padding lives in the
86
+ * scroller below the line (use with `layout="insideScroll"`).
87
+ */
88
+ withTopBorder?: boolean;
89
+ };
90
+ declare const DialogScrollableBody: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
91
+ /**
92
+ * Renders an inset top border (`mx-6`, same gutter as content); scroll padding lives in the
93
+ * scroller below the line (use with `layout="insideScroll"`).
94
+ */
95
+ withTopBorder?: boolean;
96
+ } & React.RefAttributes<HTMLDivElement>>;
57
97
  declare const DialogTitle: React.ForwardRefExoticComponent<Omit<Omit<import('@base-ui/react').AlertDialogTitleProps, "ref"> & React.RefAttributes<HTMLHeadingElement>, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
58
98
  declare const DialogDescription: React.ForwardRefExoticComponent<Omit<Omit<import('@base-ui/react').AlertDialogDescriptionProps, "ref"> & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
59
- export type { DialogContentProps, DialogProps };
60
- export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, };
99
+ export type { DialogContentProps, DialogFooterProps, DialogProps, DialogScrollableBodyProps };
100
+ export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogScrollableBody, DialogTitle, DialogTrigger, };
@@ -1,20 +1,36 @@
1
1
  import { Popover as BasePopover } from '@base-ui/react/popover';
2
2
  import * as React from "react";
3
3
  declare const Popover: typeof BasePopover.Root;
4
- interface PopoverTriggerProps extends React.ComponentPropsWithoutRef<"button"> {
4
+ type PopoverTriggerProps = React.ComponentProps<typeof BasePopover.Trigger> & {
5
+ /**
6
+ * Renders the child with Base UI’s `render` prop (equivalent to `render={child}`).
7
+ * Prefer the Base UI `render` prop in new code — see
8
+ * [shadcn Popover (Base UI)](https://ui.shadcn.com/docs/components/base/popover).
9
+ */
5
10
  asChild?: boolean;
6
- render?: React.ReactElement;
7
- }
8
- declare const PopoverTrigger: React.ForwardRefExoticComponent<PopoverTriggerProps & React.RefAttributes<HTMLButtonElement>>;
9
- declare const PopoverAnchor: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
10
- interface PopoverContentProps extends React.ComponentPropsWithoutRef<"div"> {
11
- sideOffset?: number;
12
- side?: "top" | "bottom" | "left" | "right";
13
- align?: "start" | "center" | "end";
14
- /** When set, positions against this element instead of the trigger (see Base UI `Popover.Positioner`). */
15
- anchor?: React.ComponentProps<typeof BasePopover.Positioner>["anchor"];
16
- /** Controls collision behavior (e.g. disable perpendicular side fallback). */
17
- collisionAvoidance?: React.ComponentProps<typeof BasePopover.Positioner>["collisionAvoidance"];
18
- }
19
- declare const PopoverContent: React.ForwardRefExoticComponent<PopoverContentProps & React.RefAttributes<HTMLDivElement>>;
20
- export { Popover, PopoverAnchor, PopoverContent, PopoverTrigger };
11
+ };
12
+ declare const PopoverTrigger: React.ForwardRefExoticComponent<Omit<PopoverTriggerProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
13
+ type PopoverPositionerProps = React.ComponentPropsWithoutRef<typeof BasePopover.Positioner>;
14
+ type PopoverPopupProps = React.ComponentPropsWithoutRef<typeof BasePopover.Popup>;
15
+ type PositionerConfig = Pick<PopoverPositionerProps, "anchor" | "side" | "sideOffset" | "align" | "alignOffset" | "collisionBoundary" | "collisionPadding" | "sticky" | "positionMethod" | "arrowPadding" | "disableAnchorTracking" | "collisionAvoidance">;
16
+ /**
17
+ * [Base UI Popover](https://base-ui.com/react/components/popover) `Portal` `Positioner` + `Popup`.
18
+ * - Positioning/anchor options map to `Popover.Positioner` (and `className` on the popup maps to `Popover.Popup`).
19
+ * - `positionerClassName` is applied to `Positioner` (e.g. z-index); `className` styles the popover surface.
20
+ */
21
+ export type PopoverContentProps = Omit<PopoverPopupProps, "ref"> & PositionerConfig & {
22
+ positionerClassName?: string;
23
+ keepMounted?: boolean;
24
+ };
25
+ declare const PopoverContent: React.ForwardRefExoticComponent<Omit<Omit<Omit<import('@base-ui/react').PopoverPopupProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "ref"> & PositionerConfig & {
26
+ positionerClassName?: string;
27
+ keepMounted?: boolean;
28
+ } & React.RefAttributes<HTMLDivElement>>;
29
+ declare const PopoverTitle: React.ForwardRefExoticComponent<Omit<Omit<import('@base-ui/react').PopoverTitleProps, "ref"> & React.RefAttributes<HTMLHeadingElement>, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
30
+ declare const PopoverDescription: React.ForwardRefExoticComponent<Omit<Omit<import('@base-ui/react').PopoverDescriptionProps, "ref"> & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
31
+ declare const PopoverHeader: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
32
+ declare const PopoverClose: React.ForwardRefExoticComponent<Omit<Omit<import('@base-ui/react').PopoverCloseProps, "ref"> & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
33
+ declare const PopoverArrow: React.ForwardRefExoticComponent<Omit<Omit<import('@base-ui/react').PopoverArrowProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
34
+ declare const PopoverBackdrop: React.ForwardRefExoticComponent<Omit<Omit<import('@base-ui/react').PopoverBackdropProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
35
+ declare const PopoverViewport: React.ForwardRefExoticComponent<Omit<BasePopover.Viewport.Props, "ref"> & React.RefAttributes<HTMLDivElement>>;
36
+ export { Popover, PopoverArrow, PopoverBackdrop, PopoverClose, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, PopoverViewport, };
@@ -52,6 +52,11 @@ declare const SelectTrigger: React.ForwardRefExoticComponent<SelectTriggerProps
52
52
  declare const SelectScrollUpButton: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
53
53
  declare const SelectScrollDownButton: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
54
54
  interface SelectContentProps extends React.ComponentPropsWithoutRef<"div"> {
55
+ /**
56
+ * `popper` — anchor-based placement with Floating UI collision handling (side flip, shift).
57
+ * `item-aligned` — Base UI `alignItemWithTrigger`: selected item lines up with the trigger text
58
+ * (may use a different overflow strategy).
59
+ */
55
60
  position?: "item-aligned" | "popper";
56
61
  }
57
62
  declare const SelectContent: React.ForwardRefExoticComponent<SelectContentProps & React.RefAttributes<HTMLDivElement>>;
@@ -10,6 +10,11 @@ export interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {
10
10
  width?: number | string;
11
11
  /** Height (CSS value or number for pixels) */
12
12
  height?: number | string;
13
+ /**
14
+ * When set, layout size is inferred from this content (hidden) while the skeleton overlay shows.
15
+ * Matches Material UI’s pattern for sizing circular placeholders to an avatar, etc.
16
+ */
17
+ children?: React.ReactNode;
13
18
  }
14
- declare function Skeleton({ className, variant, animation, width, height, style, ...props }: SkeletonProps): import("react/jsx-runtime").JSX.Element;
19
+ declare function Skeleton({ className, variant, animation, width, height, style, children, ...props }: SkeletonProps): import("react/jsx-runtime").JSX.Element;
15
20
  export { Skeleton };
@@ -5,7 +5,6 @@ export interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextArea
5
5
  errorText?: string;
6
6
  error?: string;
7
7
  required?: boolean;
8
- resize?: "none" | "vertical" | "horizontal" | "both";
9
8
  showCharCount?: boolean;
10
9
  characterLimit?: number;
11
10
  onValueChange?: (value: string) => void;
@@ -1,10 +1,12 @@
1
1
  import { ToasterProps as SonnerToasterProps } from 'sonner';
2
2
  import type * as React from "react";
3
- export type ToastVariant = "error" | "info" | "warning" | "success";
3
+ export type ToastVariant = "default" | "error" | "info" | "success" | "warning";
4
4
  export type ToastPosition = "top-right" | "top-center" | "top-left" | "bottom-right" | "bottom-center" | "bottom-left";
5
5
  export interface ToastOptions {
6
6
  description?: string;
7
7
  variant?: ToastVariant;
8
+ /** Viewport position; overrides `<Toaster position />` for this toast. */
9
+ position?: ToastPosition;
8
10
  action?: {
9
11
  label: string;
10
12
  onClick: () => void;
@@ -13,8 +15,16 @@ export interface ToastOptions {
13
15
  icon?: React.ReactNode;
14
16
  iconPosition?: "left" | "right";
15
17
  }
16
- export declare const toast: (message: string, options?: ToastOptions) => string | number;
18
+ type ToastId = string | number;
19
+ export declare const toast: ((message: string, options?: ToastOptions) => ToastId) & {
20
+ default: (message: string, options?: Omit<ToastOptions, "variant">) => ToastId;
21
+ success: (message: string, options?: Omit<ToastOptions, "variant">) => ToastId;
22
+ info: (message: string, options?: Omit<ToastOptions, "variant">) => ToastId;
23
+ warning: (message: string, options?: Omit<ToastOptions, "variant">) => ToastId;
24
+ error: (message: string, options?: Omit<ToastOptions, "variant">) => ToastId;
25
+ };
17
26
  export interface ToasterProps extends Omit<SonnerToasterProps, "position"> {
18
27
  position?: ToastPosition;
19
28
  }
20
29
  export declare function Toaster(props: ToasterProps): import("react/jsx-runtime").JSX.Element;
30
+ export {};
@@ -30,17 +30,19 @@ export { Calendar as DoctCalendar, CalendarDayButton } from './components/ui/cal
30
30
  export { Checkbox as DoctCheckbox } from './components/ui/checkbox';
31
31
  export { Collapsible as DoctCollapsible, CollapsibleContent as DoctCollapsibleContent, CollapsibleTrigger as DoctCollapsibleTrigger, } from './components/ui/collapsible';
32
32
  export { Command as DoctCommand, CommandDialog as DoctCommandDialog, CommandEmpty as DoctCommandEmpty, CommandGroup as DoctCommandGroup, CommandInput as DoctCommandInput, CommandItem as DoctCommandItem, CommandList as DoctCommandList, CommandSeparator as DoctCommandSeparator, CommandShortcut as DoctCommandShortcut, } from './components/ui/command';
33
- export { Dialog as DoctDialog, DialogClose as DoctDialogClose, DialogContent as DoctDialogContent, DialogDescription as DoctDialogDescription, DialogFooter as DoctDialogFooter, DialogHeader as DoctDialogHeader, DialogTitle as DoctDialogTitle, DialogTrigger as DoctDialogTrigger, } from './components/ui/dialog';
33
+ export { Dialog as DoctDialog, DialogClose as DoctDialogClose, DialogContent as DoctDialogContent, DialogDescription as DoctDialogDescription, DialogFooter as DoctDialogFooter, DialogHeader as DoctDialogHeader, DialogScrollableBody as DoctDialogScrollableBody, DialogTitle as DoctDialogTitle, DialogTrigger as DoctDialogTrigger, } from './components/ui/dialog';
34
34
  export { Drawer as DoctDrawer, DrawerClose as DoctDrawerClose, DrawerContent as DoctDrawerContent, DrawerDescription as DoctDrawerDescription, DrawerFooter as DoctDrawerFooter, DrawerHeader as DoctDrawerHeader, DrawerTitle as DoctDrawerTitle, DrawerTrigger as DoctDrawerTrigger, } from './components/ui/drawer';
35
35
  export { DropdownMenu as DoctDropdownMenu, DropdownMenuCheckboxItem as DoctDropdownMenuCheckboxItem, DropdownMenuContent as DoctDropdownMenuContent, DropdownMenuGroup as DoctDropdownMenuGroup, DropdownMenuItem as DoctDropdownMenuItem, DropdownMenuLabel as DoctDropdownMenuLabel, DropdownMenuRadioGroup as DoctDropdownMenuRadioGroup, DropdownMenuRadioItem as DoctDropdownMenuRadioItem, DropdownMenuSeparator as DoctDropdownMenuSeparator, DropdownMenuShortcut as DoctDropdownMenuShortcut, DropdownMenuSub as DoctDropdownMenuSub, DropdownMenuSubContent as DoctDropdownMenuSubContent, DropdownMenuSubTrigger as DoctDropdownMenuSubTrigger, DropdownMenuTrigger as DoctDropdownMenuTrigger, } from './components/ui/dropdown-menu';
36
36
  export { Input as DoctInput, type InputProps } from './components/ui/input';
37
37
  export { Label as DoctLabel } from './components/ui/label';
38
- export { Popover as DoctPopover, PopoverContent as DoctPopoverContent, PopoverTrigger as DoctPopoverTrigger, } from './components/ui/popover';
38
+ export type { PopoverContentProps } from './components/ui/popover';
39
+ export { Popover as DoctPopover, PopoverArrow as DoctPopoverArrow, PopoverBackdrop as DoctPopoverBackdrop, PopoverClose as DoctPopoverClose, PopoverContent as DoctPopoverContent, PopoverDescription as DoctPopoverDescription, PopoverHeader as DoctPopoverHeader, PopoverTitle as DoctPopoverTitle, PopoverTrigger as DoctPopoverTrigger, PopoverViewport as DoctPopoverViewport, } from './components/ui/popover';
39
40
  export { Progress as DoctProgress } from './components/ui/progress';
40
41
  export { RadioGroup as DoctRadioGroup, RadioGroupItem as DoctRadioGroupItem, } from './components/ui/radio-group';
41
42
  export { Skeleton as DoctSkeleton } from './components/ui/skeleton';
42
43
  export { Tabs as DoctTabs, Tabs as DoctCustomTabs, TabsContent as DoctTabsContent, TabsContent as DoctCustomTabsContent, TabsList as DoctTabsList, TabsList as DoctCustomTabsList, TabsTrigger as DoctTabsTrigger, TabsTrigger as DoctCustomTabsTrigger, } from './components/ui/tabs';
43
- export { Toaster as DoctToaster, toast as DoctToast, } from './components/ui/toast';
44
+ export type { ToastOptions, ToastPosition, ToastVariant } from './components/ui/toast';
45
+ export { Toaster as DoctToaster, toast as DoctToast } from './components/ui/toast';
44
46
  export { Tooltip as DoctTooltip, TooltipContent as DoctTooltipContent, TooltipProvider as DoctTooltipProvider, TooltipTrigger as DoctTooltipTrigger, } from './components/ui/tooltip';
45
47
  export { useAutocompleteCheckbox } from './hooks/useAutocompleteCheckbox';
46
48
  export { DoctFooter, type DoctFooterProps, type FooterAppLink, type FooterBrand, type FooterColumn, type FooterLink, type FooterSection, type FooterSocialLink, } from './components/overrides/ui/footer';