azamat-ui-kit 0.1.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.
Files changed (131) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +323 -0
  3. package/dist/cli/index.js +725 -0
  4. package/dist/components/actions/action-menu.d.ts +26 -0
  5. package/dist/components/actions/copy-button.d.ts +13 -0
  6. package/dist/components/actions/index.d.ts +3 -0
  7. package/dist/components/actions/quick-action-grid.d.ts +27 -0
  8. package/dist/components/calendar/calendar.d.ts +28 -0
  9. package/dist/components/calendar/date-picker.d.ts +15 -0
  10. package/dist/components/calendar/date-range-picker.d.ts +18 -0
  11. package/dist/components/calendar/date-utils.d.ts +12 -0
  12. package/dist/components/calendar/index.d.ts +4 -0
  13. package/dist/components/command/command-palette.d.ts +54 -0
  14. package/dist/components/command/index.d.ts +1 -0
  15. package/dist/components/data-table/data-table-actions-column.d.ts +16 -0
  16. package/dist/components/data-table/data-table-bulk-actions.d.ts +17 -0
  17. package/dist/components/data-table/data-table-column-visibility-menu.d.ts +14 -0
  18. package/dist/components/data-table/data-table-pagination.d.ts +21 -0
  19. package/dist/components/data-table/data-table-row-actions.d.ts +13 -0
  20. package/dist/components/data-table/data-table-select-column.d.ts +13 -0
  21. package/dist/components/data-table/data-table-sortable-header.d.ts +11 -0
  22. package/dist/components/data-table/data-table-toolbar.d.ts +14 -0
  23. package/dist/components/data-table/data-table-view-presets.d.ts +27 -0
  24. package/dist/components/data-table/data-table.d.ts +86 -0
  25. package/dist/components/data-table/index.d.ts +10 -0
  26. package/dist/components/display/activity-feed.d.ts +25 -0
  27. package/dist/components/display/avatar.d.ts +26 -0
  28. package/dist/components/display/data-state.d.ts +16 -0
  29. package/dist/components/display/description-list.d.ts +31 -0
  30. package/dist/components/display/index.d.ts +10 -0
  31. package/dist/components/display/info-card.d.ts +18 -0
  32. package/dist/components/display/metric-grid.d.ts +22 -0
  33. package/dist/components/display/progress.d.ts +35 -0
  34. package/dist/components/display/result.d.ts +18 -0
  35. package/dist/components/display/status-legend.d.ts +27 -0
  36. package/dist/components/display/timeline.d.ts +25 -0
  37. package/dist/components/feedback/empty-state.d.ts +11 -0
  38. package/dist/components/feedback/index.d.ts +3 -0
  39. package/dist/components/feedback/loading-state.d.ts +8 -0
  40. package/dist/components/feedback/status-badge.d.ts +9 -0
  41. package/dist/components/filters/filter-bar.d.ts +14 -0
  42. package/dist/components/filters/filter-chips.d.ts +18 -0
  43. package/dist/components/filters/index.d.ts +2 -0
  44. package/dist/components/form/form-async-select.d.ts +12 -0
  45. package/dist/components/form/form-date-input.d.ts +12 -0
  46. package/dist/components/form/form-date-picker.d.ts +12 -0
  47. package/dist/components/form/form-date-range-input.d.ts +12 -0
  48. package/dist/components/form/form-date-range-picker.d.ts +15 -0
  49. package/dist/components/form/form-field-shell.d.ts +26 -0
  50. package/dist/components/form/form-input.d.ts +13 -0
  51. package/dist/components/form/form-number-input.d.ts +12 -0
  52. package/dist/components/form/form-password-input.d.ts +11 -0
  53. package/dist/components/form/form-phone-input.d.ts +13 -0
  54. package/dist/components/form/form-search-input.d.ts +11 -0
  55. package/dist/components/form/form-select.d.ts +12 -0
  56. package/dist/components/form/form-switch.d.ts +14 -0
  57. package/dist/components/form/form-textarea.d.ts +13 -0
  58. package/dist/components/form/index.d.ts +14 -0
  59. package/dist/components/inputs/async-select.d.ts +106 -0
  60. package/dist/components/inputs/clearable-input.d.ts +16 -0
  61. package/dist/components/inputs/combobox.d.ts +20 -0
  62. package/dist/components/inputs/date-input.d.ts +9 -0
  63. package/dist/components/inputs/date-range-input.d.ts +18 -0
  64. package/dist/components/inputs/index.d.ts +14 -0
  65. package/dist/components/inputs/masked-input.d.ts +11 -0
  66. package/dist/components/inputs/money-input.d.ts +13 -0
  67. package/dist/components/inputs/number-input.d.ts +16 -0
  68. package/dist/components/inputs/password-input.d.ts +17 -0
  69. package/dist/components/inputs/phone-input.d.ts +10 -0
  70. package/dist/components/inputs/quantity-input.d.ts +15 -0
  71. package/dist/components/inputs/search-input.d.ts +7 -0
  72. package/dist/components/inputs/simple-select.d.ts +20 -0
  73. package/dist/components/inputs/tag-input.d.ts +15 -0
  74. package/dist/components/layout/app-header.d.ts +10 -0
  75. package/dist/components/layout/app-shell.d.ts +32 -0
  76. package/dist/components/layout/app-sidebar.d.ts +28 -0
  77. package/dist/components/layout/breadcrumbs.d.ts +18 -0
  78. package/dist/components/layout/index.d.ts +8 -0
  79. package/dist/components/layout/page-container.d.ts +7 -0
  80. package/dist/components/layout/page-header.d.ts +12 -0
  81. package/dist/components/layout/sidebar-nav.d.ts +25 -0
  82. package/dist/components/layout/stat-card.d.ts +18 -0
  83. package/dist/components/navigation/index.d.ts +3 -0
  84. package/dist/components/navigation/page-tabs.d.ts +18 -0
  85. package/dist/components/navigation/pagination.d.ts +21 -0
  86. package/dist/components/navigation/stepper-tabs.d.ts +19 -0
  87. package/dist/components/notifications/index.d.ts +1 -0
  88. package/dist/components/notifications/toast.d.ts +42 -0
  89. package/dist/components/overlay/confirm-dialog.d.ts +17 -0
  90. package/dist/components/overlay/dialog-actions.d.ts +14 -0
  91. package/dist/components/overlay/index.d.ts +4 -0
  92. package/dist/components/overlay/modal-shell.d.ts +20 -0
  93. package/dist/components/overlay/sheet-shell.d.ts +34 -0
  94. package/dist/components/patterns/form-builder-presets.d.ts +23 -0
  95. package/dist/components/patterns/form-builder.d.ts +95 -0
  96. package/dist/components/patterns/index.d.ts +4 -0
  97. package/dist/components/patterns/resource-detail-page.d.ts +39 -0
  98. package/dist/components/patterns/resource-page.d.ts +34 -0
  99. package/dist/components/ui/badge.d.ts +7 -0
  100. package/dist/components/ui/button.d.ts +8 -0
  101. package/dist/components/ui/card.d.ts +11 -0
  102. package/dist/components/ui/checkbox.d.ts +13 -0
  103. package/dist/components/ui/component-preview.d.ts +10 -0
  104. package/dist/components/ui/dialog.d.ts +17 -0
  105. package/dist/components/ui/dropdown-menu.d.ts +29 -0
  106. package/dist/components/ui/input.d.ts +3 -0
  107. package/dist/components/ui/popover.d.ts +9 -0
  108. package/dist/components/ui/select.d.ts +15 -0
  109. package/dist/components/ui/switch.d.ts +12 -0
  110. package/dist/components/ui/table.d.ts +10 -0
  111. package/dist/components/ui/tabs.d.ts +6 -0
  112. package/dist/components/ui/textarea.d.ts +3 -0
  113. package/dist/components/upload/file-upload.d.ts +61 -0
  114. package/dist/components/upload/image-upload.d.ts +14 -0
  115. package/dist/components/upload/index.d.ts +2 -0
  116. package/dist/components/wizard/index.d.ts +2 -0
  117. package/dist/components/wizard/stepper.d.ts +16 -0
  118. package/dist/components/wizard/wizard.d.ts +17 -0
  119. package/dist/hooks/index.d.ts +6 -0
  120. package/dist/hooks/use-before-unload-when-dirty.d.ts +2 -0
  121. package/dist/hooks/use-data-table-view-state.d.ts +20 -0
  122. package/dist/hooks/use-debounce.d.ts +3 -0
  123. package/dist/hooks/use-disclosure.d.ts +13 -0
  124. package/dist/hooks/use-is-mobile.d.ts +3 -0
  125. package/dist/hooks/use-session-storage-state.d.ts +8 -0
  126. package/dist/index.cjs +9 -0
  127. package/dist/index.d.ts +34 -0
  128. package/dist/index.js +23213 -0
  129. package/dist/lib/utils.d.ts +2 -0
  130. package/package.json +118 -0
  131. package/registry.json +185 -0
@@ -0,0 +1,95 @@
1
+ import * as React from "react";
2
+ import type { Control, FieldPath, FieldValues } from "react-hook-form";
3
+ import { type FormInputProps } from "@/components/form/form-input";
4
+ import { type FormTextareaProps } from "@/components/form/form-textarea";
5
+ import { type FormSelectProps } from "@/components/form/form-select";
6
+ import { type FormAsyncSelectProps } from "@/components/form/form-async-select";
7
+ import { type FormSwitchProps } from "@/components/form/form-switch";
8
+ import { type FormNumberInputProps } from "@/components/form/form-number-input";
9
+ import { type FormPhoneInputProps } from "@/components/form/form-phone-input";
10
+ import { type FormDateInputProps } from "@/components/form/form-date-input";
11
+ import { type FormDateRangeInputProps } from "@/components/form/form-date-range-input";
12
+ export type FormBuilderLayout = "grid" | "stack";
13
+ export type FormBuilderDensity = "compact" | "default" | "comfortable";
14
+ export type FormBuilderFieldRenderContext<TFieldValues extends FieldValues> = {
15
+ control: Control<TFieldValues>;
16
+ disabled?: boolean;
17
+ readOnly?: boolean;
18
+ };
19
+ type BaseFormBuilderField = {
20
+ id: string;
21
+ hidden?: boolean;
22
+ className?: string;
23
+ colSpan?: 1 | 2 | 3 | 4 | "full";
24
+ };
25
+ export type FormBuilderCustomField<TFieldValues extends FieldValues> = BaseFormBuilderField & {
26
+ type: "custom";
27
+ render: (context: FormBuilderFieldRenderContext<TFieldValues>) => React.ReactNode;
28
+ };
29
+ export type FormBuilderInputField<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = BaseFormBuilderField & {
30
+ type: "input";
31
+ props: Omit<FormInputProps<TFieldValues, TName>, "control">;
32
+ };
33
+ export type FormBuilderTextareaField<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = BaseFormBuilderField & {
34
+ type: "textarea";
35
+ props: Omit<FormTextareaProps<TFieldValues, TName>, "control">;
36
+ };
37
+ export type FormBuilderSelectField<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = BaseFormBuilderField & {
38
+ type: "select";
39
+ props: Omit<FormSelectProps<TFieldValues, TName>, "control">;
40
+ };
41
+ export type FormBuilderAsyncSelectField<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = BaseFormBuilderField & {
42
+ type: "async-select";
43
+ props: Omit<FormAsyncSelectProps<TFieldValues, TName>, "control">;
44
+ };
45
+ export type FormBuilderSwitchField<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = BaseFormBuilderField & {
46
+ type: "switch";
47
+ props: Omit<FormSwitchProps<TFieldValues, TName>, "control">;
48
+ };
49
+ export type FormBuilderNumberField<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = BaseFormBuilderField & {
50
+ type: "number";
51
+ props: Omit<FormNumberInputProps<TFieldValues, TName>, "control">;
52
+ };
53
+ export type FormBuilderPhoneField<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = BaseFormBuilderField & {
54
+ type: "phone";
55
+ props: Omit<FormPhoneInputProps<TFieldValues, TName>, "control">;
56
+ };
57
+ export type FormBuilderDateField<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = BaseFormBuilderField & {
58
+ type: "date";
59
+ props: Omit<FormDateInputProps<TFieldValues, TName>, "control">;
60
+ };
61
+ export type FormBuilderDateRangeField<TFieldValues extends FieldValues, TFromName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>, TToName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = BaseFormBuilderField & {
62
+ type: "date-range";
63
+ props: Omit<FormDateRangeInputProps<TFieldValues, TFromName, TToName>, "control">;
64
+ };
65
+ export type FormBuilderField<TFieldValues extends FieldValues> = FormBuilderCustomField<TFieldValues> | FormBuilderInputField<TFieldValues> | FormBuilderTextareaField<TFieldValues> | FormBuilderSelectField<TFieldValues> | FormBuilderAsyncSelectField<TFieldValues> | FormBuilderSwitchField<TFieldValues> | FormBuilderNumberField<TFieldValues> | FormBuilderPhoneField<TFieldValues> | FormBuilderDateField<TFieldValues> | FormBuilderDateRangeField<TFieldValues>;
66
+ export type FormBuilderSection<TFieldValues extends FieldValues> = {
67
+ id: string;
68
+ title?: React.ReactNode;
69
+ description?: React.ReactNode;
70
+ actions?: React.ReactNode;
71
+ hidden?: boolean;
72
+ className?: string;
73
+ fields: FormBuilderField<TFieldValues>[];
74
+ };
75
+ export type FormBuilderProps<TFieldValues extends FieldValues> = Omit<React.ComponentProps<"form">, "children"> & {
76
+ control: Control<TFieldValues>;
77
+ fields?: FormBuilderField<TFieldValues>[];
78
+ sections?: FormBuilderSection<TFieldValues>[];
79
+ layout?: FormBuilderLayout;
80
+ density?: FormBuilderDensity;
81
+ columns?: 1 | 2 | 3 | 4;
82
+ disabled?: boolean;
83
+ readOnly?: boolean;
84
+ footer?: React.ReactNode;
85
+ submitLabel?: React.ReactNode;
86
+ resetLabel?: React.ReactNode;
87
+ onResetClick?: () => void;
88
+ isSubmitting?: boolean;
89
+ sectionClassName?: string;
90
+ fieldClassName?: string;
91
+ footerClassName?: string;
92
+ };
93
+ declare function renderFormBuilderField<TFieldValues extends FieldValues>(field: FormBuilderField<TFieldValues>, context: FormBuilderFieldRenderContext<TFieldValues>): string | number | bigint | boolean | React.JSX.Element | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null | undefined;
94
+ declare function FormBuilder<TFieldValues extends FieldValues>({ className, control, fields, sections, layout, density, columns, disabled, readOnly, footer, submitLabel, resetLabel, onResetClick, isSubmitting, sectionClassName, fieldClassName, footerClassName, ...props }: FormBuilderProps<TFieldValues>): React.JSX.Element;
95
+ export { FormBuilder, renderFormBuilderField };
@@ -0,0 +1,4 @@
1
+ export * from "./resource-page";
2
+ export * from "./resource-detail-page";
3
+ export * from "./form-builder";
4
+ export * from "./form-builder-presets";
@@ -0,0 +1,39 @@
1
+ import * as React from "react";
2
+ import { type DescriptionListItem } from "@/components/display/description-list";
3
+ import { type PageHeaderProps } from "@/components/layout/page-header";
4
+ export type ResourceDetailPageDensity = "default" | "compact" | "comfortable";
5
+ export type ResourceDetailPageSection = {
6
+ id: string;
7
+ title?: React.ReactNode;
8
+ description?: React.ReactNode;
9
+ actions?: React.ReactNode;
10
+ hidden?: boolean;
11
+ className?: string;
12
+ bodyClassName?: string;
13
+ items?: DescriptionListItem[];
14
+ children?: React.ReactNode;
15
+ };
16
+ export type ResourceDetailPageProps = Omit<React.ComponentProps<"div">, "children"> & {
17
+ title?: React.ReactNode;
18
+ description?: React.ReactNode;
19
+ eyebrow?: React.ReactNode;
20
+ actions?: React.ReactNode;
21
+ breadcrumbs?: React.ReactNode;
22
+ status?: React.ReactNode;
23
+ summary?: React.ReactNode;
24
+ meta?: React.ReactNode;
25
+ sections?: ResourceDetailPageSection[];
26
+ children?: React.ReactNode;
27
+ aside?: React.ReactNode;
28
+ footer?: React.ReactNode;
29
+ backLabel?: React.ReactNode;
30
+ onBack?: () => void;
31
+ headerProps?: Omit<PageHeaderProps, "title" | "description" | "actions" | "eyebrow">;
32
+ density?: ResourceDetailPageDensity;
33
+ pageHeaderClassName?: string;
34
+ contentClassName?: string;
35
+ asideClassName?: string;
36
+ sectionClassName?: string;
37
+ };
38
+ declare function ResourceDetailPage({ className, title, description, eyebrow, actions, breadcrumbs, status, summary, meta, sections, children, aside, footer, backLabel, onBack, headerProps, density, pageHeaderClassName, contentClassName, asideClassName, sectionClassName, ...props }: ResourceDetailPageProps): React.JSX.Element;
39
+ export { ResourceDetailPage };
@@ -0,0 +1,34 @@
1
+ import * as React from "react";
2
+ import { type DataTableProps } from "@/components/data-table/data-table";
3
+ import { type PageHeaderProps } from "@/components/layout/page-header";
4
+ export type ResourcePageDensity = "default" | "compact" | "comfortable";
5
+ export type ResourcePageSectionProps = React.ComponentProps<"section"> & {
6
+ title?: React.ReactNode;
7
+ description?: React.ReactNode;
8
+ actions?: React.ReactNode;
9
+ headerClassName?: string;
10
+ bodyClassName?: string;
11
+ };
12
+ declare function ResourcePageSection({ className, title, description, actions, headerClassName, bodyClassName, children, ...props }: ResourcePageSectionProps): React.JSX.Element;
13
+ export type ResourcePageProps<TData, TValue = unknown> = Omit<React.ComponentProps<"div">, "children"> & {
14
+ title?: React.ReactNode;
15
+ description?: React.ReactNode;
16
+ eyebrow?: React.ReactNode;
17
+ actions?: React.ReactNode;
18
+ breadcrumbs?: React.ReactNode;
19
+ stats?: React.ReactNode;
20
+ filters?: React.ReactNode;
21
+ tabs?: React.ReactNode;
22
+ table?: DataTableProps<TData, TValue>;
23
+ children?: React.ReactNode;
24
+ aside?: React.ReactNode;
25
+ footer?: React.ReactNode;
26
+ headerProps?: Omit<PageHeaderProps, "title" | "description" | "actions" | "eyebrow">;
27
+ density?: ResourcePageDensity;
28
+ pageHeaderClassName?: string;
29
+ toolbarClassName?: string;
30
+ contentClassName?: string;
31
+ asideClassName?: string;
32
+ };
33
+ declare function ResourcePage<TData, TValue = unknown>({ className, title, description, eyebrow, actions, breadcrumbs, stats, filters, tabs, table, children, aside, footer, headerProps, density, pageHeaderClassName, toolbarClassName, contentClassName, asideClassName, ...props }: ResourcePageProps<TData, TValue>): React.JSX.Element;
34
+ export { ResourcePage, ResourcePageSection };
@@ -0,0 +1,7 @@
1
+ import { useRender } from "@base-ui/react/use-render";
2
+ import { type VariantProps } from "class-variance-authority";
3
+ declare const badgeVariants: (props?: ({
4
+ variant?: "default" | "outline" | "secondary" | "ghost" | "destructive" | "link" | null | undefined;
5
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
+ declare function Badge({ className, variant, render, ...props }: useRender.ComponentProps<"span"> & VariantProps<typeof badgeVariants>): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
7
+ export { Badge, badgeVariants };
@@ -0,0 +1,8 @@
1
+ import { Button as ButtonPrimitive } from "@base-ui/react/button";
2
+ import { type VariantProps } from "class-variance-authority";
3
+ declare const buttonVariants: (props?: ({
4
+ variant?: "default" | "outline" | "secondary" | "ghost" | "destructive" | "link" | null | undefined;
5
+ size?: "default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ declare function Button({ className, variant, size, ...props }: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>): import("react").JSX.Element;
8
+ export { Button, buttonVariants };
@@ -0,0 +1,11 @@
1
+ import * as React from "react";
2
+ declare function Card({ className, size, ...props }: React.ComponentProps<"div"> & {
3
+ size?: "default" | "sm";
4
+ }): React.JSX.Element;
5
+ declare function CardHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
6
+ declare function CardTitle({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
7
+ declare function CardDescription({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
8
+ declare function CardAction({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
9
+ declare function CardContent({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
10
+ declare function CardFooter({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
11
+ export { Card, CardHeader, CardFooter, CardTitle, CardAction, CardDescription, CardContent, };
@@ -0,0 +1,13 @@
1
+ import * as React from "react";
2
+ export type CheckboxCheckedState = boolean | "indeterminate";
3
+ export type CheckboxProps = Omit<React.ComponentPropsWithoutRef<"button">, "checked" | "defaultChecked" | "onChange" | "value"> & {
4
+ checked?: CheckboxCheckedState;
5
+ defaultChecked?: CheckboxCheckedState;
6
+ onCheckedChange?: (checked: boolean) => void;
7
+ };
8
+ declare const Checkbox: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref">, "defaultChecked" | "value" | "onChange" | "checked"> & {
9
+ checked?: CheckboxCheckedState;
10
+ defaultChecked?: CheckboxCheckedState;
11
+ onCheckedChange?: (checked: boolean) => void;
12
+ } & React.RefAttributes<HTMLButtonElement>>;
13
+ export { Checkbox };
@@ -0,0 +1,10 @@
1
+ import * as React from "react";
2
+ export interface ComponentPreviewProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title" | "description"> {
3
+ code: string;
4
+ language?: string;
5
+ title?: React.ReactNode;
6
+ description?: React.ReactNode;
7
+ dependencies?: string[];
8
+ children: React.ReactNode;
9
+ }
10
+ export declare function ComponentPreview({ code, language, title, description, dependencies, children, className, ...props }: ComponentPreviewProps): React.JSX.Element;
@@ -0,0 +1,17 @@
1
+ import * as React from "react";
2
+ import { Dialog as DialogPrimitive } from "@base-ui/react/dialog";
3
+ declare function Dialog({ ...props }: DialogPrimitive.Root.Props): React.JSX.Element;
4
+ declare function DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props): React.JSX.Element;
5
+ declare function DialogPortal({ ...props }: DialogPrimitive.Portal.Props): React.JSX.Element;
6
+ declare function DialogClose({ ...props }: DialogPrimitive.Close.Props): React.JSX.Element;
7
+ declare function DialogOverlay({ className, ...props }: DialogPrimitive.Backdrop.Props): React.JSX.Element;
8
+ declare function DialogContent({ className, children, showCloseButton, ...props }: DialogPrimitive.Popup.Props & {
9
+ showCloseButton?: boolean;
10
+ }): React.JSX.Element;
11
+ declare function DialogHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
12
+ declare function DialogFooter({ className, showCloseButton, children, ...props }: React.ComponentProps<"div"> & {
13
+ showCloseButton?: boolean;
14
+ }): React.JSX.Element;
15
+ declare function DialogTitle({ className, ...props }: DialogPrimitive.Title.Props): React.JSX.Element;
16
+ declare function DialogDescription({ className, ...props }: DialogPrimitive.Description.Props): React.JSX.Element;
17
+ export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, };
@@ -0,0 +1,29 @@
1
+ import * as React from "react";
2
+ import { Menu as MenuPrimitive } from "@base-ui/react/menu";
3
+ declare function DropdownMenu({ ...props }: MenuPrimitive.Root.Props): React.JSX.Element;
4
+ declare function DropdownMenuPortal({ ...props }: MenuPrimitive.Portal.Props): React.JSX.Element;
5
+ declare function DropdownMenuTrigger({ ...props }: MenuPrimitive.Trigger.Props): React.JSX.Element;
6
+ declare function DropdownMenuContent({ align, alignOffset, side, sideOffset, className, ...props }: MenuPrimitive.Popup.Props & Pick<MenuPrimitive.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset">): React.JSX.Element;
7
+ declare function DropdownMenuGroup({ ...props }: MenuPrimitive.Group.Props): React.JSX.Element;
8
+ declare function DropdownMenuLabel({ className, inset, ...props }: React.ComponentProps<"div"> & {
9
+ inset?: boolean;
10
+ }): React.JSX.Element;
11
+ declare function DropdownMenuItem({ className, inset, variant, ...props }: MenuPrimitive.Item.Props & {
12
+ inset?: boolean;
13
+ variant?: "default" | "destructive";
14
+ }): React.JSX.Element;
15
+ declare function DropdownMenuSub({ ...props }: MenuPrimitive.SubmenuRoot.Props): React.JSX.Element;
16
+ declare function DropdownMenuSubTrigger({ className, inset, children, ...props }: MenuPrimitive.SubmenuTrigger.Props & {
17
+ inset?: boolean;
18
+ }): React.JSX.Element;
19
+ declare function DropdownMenuSubContent({ align, alignOffset, side, sideOffset, className, ...props }: React.ComponentProps<typeof DropdownMenuContent>): React.JSX.Element;
20
+ declare function DropdownMenuCheckboxItem({ className, children, checked, inset, ...props }: MenuPrimitive.CheckboxItem.Props & {
21
+ inset?: boolean;
22
+ }): React.JSX.Element;
23
+ declare function DropdownMenuRadioGroup({ ...props }: MenuPrimitive.RadioGroup.Props): React.JSX.Element;
24
+ declare function DropdownMenuRadioItem({ className, children, inset, ...props }: MenuPrimitive.RadioItem.Props & {
25
+ inset?: boolean;
26
+ }): React.JSX.Element;
27
+ declare function DropdownMenuSeparator({ className, ...props }: MenuPrimitive.Separator.Props): React.JSX.Element;
28
+ declare function DropdownMenuShortcut({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
29
+ export { DropdownMenu, DropdownMenuPortal, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent, };
@@ -0,0 +1,3 @@
1
+ import * as React from "react";
2
+ declare function Input({ className, type, ...props }: React.ComponentProps<"input">): React.JSX.Element;
3
+ export { Input };
@@ -0,0 +1,9 @@
1
+ import * as React from "react";
2
+ import { Popover as PopoverPrimitive } from "@base-ui/react/popover";
3
+ declare function Popover({ ...props }: PopoverPrimitive.Root.Props): React.JSX.Element;
4
+ declare function PopoverTrigger({ ...props }: PopoverPrimitive.Trigger.Props): React.JSX.Element;
5
+ declare function PopoverContent({ className, align, alignOffset, side, sideOffset, ...props }: PopoverPrimitive.Popup.Props & Pick<PopoverPrimitive.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset">): React.JSX.Element;
6
+ declare function PopoverHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
7
+ declare function PopoverTitle({ className, ...props }: PopoverPrimitive.Title.Props): React.JSX.Element;
8
+ declare function PopoverDescription({ className, ...props }: PopoverPrimitive.Description.Props): React.JSX.Element;
9
+ export { Popover, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, };
@@ -0,0 +1,15 @@
1
+ import * as React from "react";
2
+ import { Select as SelectPrimitive } from "@base-ui/react/select";
3
+ declare const Select: typeof SelectPrimitive.Root;
4
+ declare function SelectGroup({ className, ...props }: SelectPrimitive.Group.Props): React.JSX.Element;
5
+ declare function SelectValue({ className, ...props }: SelectPrimitive.Value.Props): React.JSX.Element;
6
+ declare function SelectTrigger({ className, size, children, ...props }: SelectPrimitive.Trigger.Props & {
7
+ size?: "sm" | "default";
8
+ }): React.JSX.Element;
9
+ declare function SelectContent({ className, children, side, sideOffset, align, alignOffset, alignItemWithTrigger, ...props }: SelectPrimitive.Popup.Props & Pick<SelectPrimitive.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset" | "alignItemWithTrigger">): React.JSX.Element;
10
+ declare function SelectLabel({ className, ...props }: SelectPrimitive.GroupLabel.Props): React.JSX.Element;
11
+ declare function SelectItem({ className, children, ...props }: SelectPrimitive.Item.Props): React.JSX.Element;
12
+ declare function SelectSeparator({ className, ...props }: SelectPrimitive.Separator.Props): React.JSX.Element;
13
+ declare function SelectScrollUpButton({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>): React.JSX.Element;
14
+ declare function SelectScrollDownButton({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>): React.JSX.Element;
15
+ export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, };
@@ -0,0 +1,12 @@
1
+ import * as React from "react";
2
+ export type SwitchProps = Omit<React.ComponentPropsWithoutRef<"button">, "onChange" | "value"> & {
3
+ checked?: boolean;
4
+ defaultChecked?: boolean;
5
+ onCheckedChange?: (checked: boolean) => void;
6
+ };
7
+ declare const Switch: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref">, "value" | "onChange"> & {
8
+ checked?: boolean;
9
+ defaultChecked?: boolean;
10
+ onCheckedChange?: (checked: boolean) => void;
11
+ } & React.RefAttributes<HTMLButtonElement>>;
12
+ export { Switch };
@@ -0,0 +1,10 @@
1
+ import * as React from "react";
2
+ declare function Table({ className, ...props }: React.ComponentProps<"table">): React.JSX.Element;
3
+ declare function TableHeader({ className, ...props }: React.ComponentProps<"thead">): React.JSX.Element;
4
+ declare function TableBody({ className, ...props }: React.ComponentProps<"tbody">): React.JSX.Element;
5
+ declare function TableFooter({ className, ...props }: React.ComponentProps<"tfoot">): React.JSX.Element;
6
+ declare function TableRow({ className, ...props }: React.ComponentProps<"tr">): React.JSX.Element;
7
+ declare function TableHead({ className, ...props }: React.ComponentProps<"th">): React.JSX.Element;
8
+ declare function TableCell({ className, ...props }: React.ComponentProps<"td">): React.JSX.Element;
9
+ declare function TableCaption({ className, ...props }: React.ComponentProps<"caption">): React.JSX.Element;
10
+ export { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption, };
@@ -0,0 +1,6 @@
1
+ import * as React from "react";
2
+ declare const Tabs: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").TabsRootProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
3
+ declare const TabsList: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").TabsListProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
4
+ declare const TabsTrigger: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").TabsTabProps, "ref"> & React.RefAttributes<HTMLElement>, "ref"> & React.RefAttributes<HTMLElement>>;
5
+ declare const TabsContent: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").TabsPanelProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
6
+ export { Tabs, TabsList, TabsTrigger, TabsContent };
@@ -0,0 +1,3 @@
1
+ import * as React from "react";
2
+ declare function Textarea({ className, ...props }: React.ComponentProps<"textarea">): React.JSX.Element;
3
+ export { Textarea };
@@ -0,0 +1,61 @@
1
+ import * as React from "react";
2
+ export type FileUploadRejectReason = "max-files" | "max-size" | "type";
3
+ export type FileUploadRejectedFile = {
4
+ file: File;
5
+ reason: FileUploadRejectReason;
6
+ message: string;
7
+ };
8
+ export type FileUploadRenderFileState = {
9
+ file: File;
10
+ index: number;
11
+ progress?: number;
12
+ remove: () => void;
13
+ removeLabel?: string;
14
+ };
15
+ export type FileUploadRenderRejectedFileState = {
16
+ rejectedFile: FileUploadRejectedFile;
17
+ index: number;
18
+ };
19
+ type NativeFileInputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, "type" | "value" | "onChange" | "className" | "children" | "onDragEnter" | "onDragLeave" | "onDragOver" | "onDrop">;
20
+ export type FileUploadProps = NativeFileInputProps & {
21
+ files?: File[];
22
+ onFilesChange?: (files: File[]) => void;
23
+ rejectedFiles?: FileUploadRejectedFile[];
24
+ onRejectedFilesChange?: (files: FileUploadRejectedFile[]) => void;
25
+ onDragEnter?: React.DragEventHandler<HTMLDivElement>;
26
+ onDragLeave?: React.DragEventHandler<HTMLDivElement>;
27
+ onDragOver?: React.DragEventHandler<HTMLDivElement>;
28
+ onDrop?: React.DragEventHandler<HTMLDivElement>;
29
+ buttonLabel?: React.ReactNode;
30
+ dropzoneLabel?: React.ReactNode;
31
+ dropzoneDescription?: React.ReactNode;
32
+ dragActiveLabel?: React.ReactNode;
33
+ helperText?: React.ReactNode;
34
+ clearLabel?: React.ReactNode;
35
+ removeLabel?: string;
36
+ maxFiles?: number;
37
+ maxSize?: number;
38
+ appendFiles?: boolean;
39
+ showFileList?: boolean;
40
+ showClearButton?: boolean;
41
+ loading?: boolean;
42
+ progress?: number | Record<string, number>;
43
+ renderFile?: (state: FileUploadRenderFileState) => React.ReactNode;
44
+ renderRejectedFile?: (state: FileUploadRenderRejectedFileState) => React.ReactNode;
45
+ renderActions?: (state: {
46
+ openFileDialog: () => void;
47
+ clearFiles: () => void;
48
+ files: File[];
49
+ }) => React.ReactNode;
50
+ className?: string;
51
+ inputClassName?: string;
52
+ dropzoneClassName?: string;
53
+ fileListClassName?: string;
54
+ fileItemClassName?: string;
55
+ rejectedListClassName?: string;
56
+ };
57
+ declare function formatBytes(bytes: number): string;
58
+ declare function fileMatchesAccept(file: File, accept?: string): boolean;
59
+ declare function getFileKey(file: File): string;
60
+ declare function FileUpload({ files, onFilesChange, rejectedFiles, onRejectedFilesChange, buttonLabel, dropzoneLabel, dropzoneDescription, dragActiveLabel, helperText, clearLabel, removeLabel, maxFiles, maxSize, appendFiles, showFileList, showClearButton, loading, progress, renderFile, renderRejectedFile, renderActions, className, inputClassName, dropzoneClassName, fileListClassName, fileItemClassName, rejectedListClassName, accept, multiple, disabled, onDragEnter, onDragLeave, onDragOver, onDrop, ...props }: FileUploadProps): React.JSX.Element;
61
+ export { FileUpload, fileMatchesAccept, formatBytes, getFileKey };
@@ -0,0 +1,14 @@
1
+ import * as React from "react";
2
+ import { type FileUploadProps, type FileUploadRenderFileState } from "@/components/upload/file-upload";
3
+ export type ImageUploadProps = Omit<FileUploadProps, "accept" | "renderFile"> & {
4
+ accept?: string;
5
+ preview?: boolean;
6
+ previewClassName?: string;
7
+ imageClassName?: string;
8
+ renderImageFile?: (state: FileUploadRenderFileState & {
9
+ previewUrl?: string;
10
+ }) => React.ReactNode;
11
+ };
12
+ declare function useImagePreviewUrls(files: File[], enabled?: boolean): Record<string, string>;
13
+ declare function ImageUpload({ accept, buttonLabel, dropzoneLabel, preview, previewClassName, imageClassName, files, renderImageFile, ...props }: ImageUploadProps): React.JSX.Element;
14
+ export { ImageUpload, useImagePreviewUrls };
@@ -0,0 +1,2 @@
1
+ export { FileUpload } from "./file-upload";
2
+ export { ImageUpload } from "./image-upload";
@@ -0,0 +1,2 @@
1
+ export * from "./stepper";
2
+ export * from "./wizard";
@@ -0,0 +1,16 @@
1
+ import * as React from "react";
2
+ export type StepperStep = {
3
+ id: string;
4
+ title: React.ReactNode;
5
+ description?: React.ReactNode;
6
+ disabled?: boolean;
7
+ completed?: boolean;
8
+ };
9
+ export type StepperProps = React.ComponentProps<"div"> & {
10
+ steps: StepperStep[];
11
+ currentStep: string;
12
+ onStepChange?: (stepId: string) => void;
13
+ orientation?: "horizontal" | "vertical";
14
+ };
15
+ declare function Stepper({ className, steps, currentStep, onStepChange, orientation, ...props }: StepperProps): React.JSX.Element;
16
+ export { Stepper };
@@ -0,0 +1,17 @@
1
+ import * as React from "react";
2
+ import { type StepperStep } from "@/components/wizard/stepper";
3
+ export type WizardProps = React.ComponentProps<"div"> & {
4
+ steps: StepperStep[];
5
+ currentStep: string;
6
+ onStepChange?: (stepId: string) => void;
7
+ onNext?: () => void;
8
+ onPrevious?: () => void;
9
+ onFinish?: () => void;
10
+ nextLabel?: React.ReactNode;
11
+ previousLabel?: React.ReactNode;
12
+ finishLabel?: React.ReactNode;
13
+ children?: React.ReactNode;
14
+ footer?: React.ReactNode;
15
+ };
16
+ declare function Wizard({ className, steps, currentStep, onStepChange, onNext, onPrevious, onFinish, nextLabel, previousLabel, finishLabel, children, footer, ...props }: WizardProps): React.JSX.Element;
17
+ export { Wizard };
@@ -0,0 +1,6 @@
1
+ export * from "./use-session-storage-state";
2
+ export * from "./use-before-unload-when-dirty";
3
+ export * from "./use-is-mobile";
4
+ export * from "./use-disclosure";
5
+ export * from "./use-debounce";
6
+ export * from "./use-data-table-view-state";
@@ -0,0 +1,2 @@
1
+ declare function useBeforeUnloadWhenDirty(isDirty: boolean, message?: string): void;
2
+ export { useBeforeUnloadWhenDirty };
@@ -0,0 +1,20 @@
1
+ export type DataTableViewStorage = "local" | "session" | "memory";
2
+ export type UseDataTableViewStateOptions<TValue extends string> = {
3
+ key: string;
4
+ defaultValue?: TValue;
5
+ allowedValues?: readonly TValue[];
6
+ storage?: DataTableViewStorage;
7
+ syncAcrossTabs?: boolean;
8
+ serialize?: (value: TValue) => string;
9
+ deserialize?: (value: string) => TValue;
10
+ onValueChange?: (value: TValue | undefined) => void;
11
+ };
12
+ export type UseDataTableViewStateReturn<TValue extends string> = {
13
+ value: TValue | undefined;
14
+ setValue: (value: TValue | undefined) => void;
15
+ clearValue: () => void;
16
+ resetValue: () => void;
17
+ isDefaultValue: boolean;
18
+ };
19
+ declare function useDataTableViewState<TValue extends string>({ key, defaultValue, allowedValues, storage, syncAcrossTabs, serialize, deserialize, onValueChange, }: UseDataTableViewStateOptions<TValue>): UseDataTableViewStateReturn<TValue>;
20
+ export { useDataTableViewState };
@@ -0,0 +1,3 @@
1
+ declare function useDebouncedValue<TValue>(value: TValue, delay?: number): TValue;
2
+ declare function useDebouncedCallback<TArgs extends unknown[]>(callback: (...args: TArgs) => void, delay?: number): (...args: TArgs) => void;
3
+ export { useDebouncedCallback, useDebouncedValue };
@@ -0,0 +1,13 @@
1
+ export type UseDisclosureOptions = {
2
+ defaultOpen?: boolean;
3
+ open?: boolean;
4
+ onOpenChange?: (open: boolean) => void;
5
+ };
6
+ declare function useDisclosure({ defaultOpen, open, onOpenChange }?: UseDisclosureOptions): {
7
+ readonly open: boolean;
8
+ readonly setOpen: (nextOpen: boolean) => void;
9
+ readonly openDisclosure: () => void;
10
+ readonly closeDisclosure: () => void;
11
+ readonly toggleDisclosure: () => void;
12
+ };
13
+ export { useDisclosure };
@@ -0,0 +1,3 @@
1
+ declare const DEFAULT_MOBILE_BREAKPOINT = 768;
2
+ declare function useIsMobile(breakpoint?: number): boolean;
3
+ export { useIsMobile, DEFAULT_MOBILE_BREAKPOINT };
@@ -0,0 +1,8 @@
1
+ type SessionStorageOptions<T> = {
2
+ serialize?: (value: T) => string;
3
+ deserialize?: (value: string) => T;
4
+ };
5
+ type SetSessionStorageStateAction<T> = T | ((previousValue: T) => T);
6
+ declare function useSessionStorageState<T>(key: string, initialValue: T | (() => T), options?: SessionStorageOptions<T>): readonly [T, (value: SetSessionStorageStateAction<T>) => void, () => void];
7
+ export { useSessionStorageState };
8
+ export type { SessionStorageOptions, SetSessionStorageStateAction };