@optimum-intelligence/opti-ui 0.3.0 → 0.5.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/README.md +28 -7
- package/dist/components/accordion/Accordion.d.ts +12 -0
- package/dist/components/accordion/Accordion.js +12 -0
- package/dist/components/accordion/Accordion.js.map +1 -1
- package/dist/components/alert/Alert.d.ts +4 -0
- package/dist/components/alert/Alert.js.map +1 -1
- package/dist/components/app-shell/AppShell.d.ts +96 -5
- package/dist/components/app-shell/AppShell.js +676 -185
- package/dist/components/app-shell/AppShell.js.map +1 -1
- package/dist/components/avatar/Avatar.d.ts +8 -0
- package/dist/components/avatar/Avatar.js +2 -0
- package/dist/components/avatar/Avatar.js.map +1 -1
- package/dist/components/badge/Badge.d.ts +10 -3
- package/dist/components/badge/Badge.js +17 -28
- package/dist/components/badge/Badge.js.map +1 -1
- package/dist/components/breadcrumbs/Breadcrumbs.d.ts +1 -0
- package/dist/components/breadcrumbs/Breadcrumbs.js.map +1 -1
- package/dist/components/button/Button.d.ts +8 -0
- package/dist/components/button/Button.js +6 -0
- package/dist/components/button/Button.js.map +1 -1
- package/dist/components/calendar/Calendar.d.ts +21 -7
- package/dist/components/calendar/Calendar.js +285 -212
- package/dist/components/calendar/Calendar.js.map +1 -1
- package/dist/components/calendar/DateConfig.d.ts +37 -0
- package/dist/components/calendar/DateConfig.js +75 -0
- package/dist/components/calendar/DateConfig.js.map +1 -0
- package/dist/components/calendar/date-utils.d.ts +41 -6
- package/dist/components/calendar/date-utils.js +119 -20
- package/dist/components/calendar/date-utils.js.map +1 -1
- package/dist/components/card/Card.d.ts +13 -0
- package/dist/components/card/Card.js +13 -0
- package/dist/components/card/Card.js.map +1 -1
- package/dist/components/choice/Choice.d.ts +13 -0
- package/dist/components/choice/Choice.js +10 -0
- package/dist/components/choice/Choice.js.map +1 -1
- package/dist/components/combobox/Combobox.d.ts +12 -0
- package/dist/components/combobox/Combobox.js.map +1 -1
- package/dist/components/command-palette/CommandPalette.d.ts +10 -0
- package/dist/components/command-palette/CommandPalette.js.map +1 -1
- package/dist/components/data-table/DataTable.d.ts +4 -0
- package/dist/components/data-table/DataTable.js.map +1 -1
- package/dist/components/data-table/DataTableContent.d.ts +1 -0
- package/dist/components/data-table/DataTableContent.js +3 -3
- package/dist/components/data-table/DataTableContent.js.map +1 -1
- package/dist/components/data-table/DataTableFilters.d.ts +3 -0
- package/dist/components/data-table/DataTableFilters.js.map +1 -1
- package/dist/components/data-table/types.d.ts +16 -0
- package/dist/components/date-picker/DatePicker.d.ts +33 -10
- package/dist/components/date-picker/DatePicker.js +315 -279
- package/dist/components/date-picker/DatePicker.js.map +1 -1
- package/dist/components/date-picker/DateRangePicker.d.ts +12 -4
- package/dist/components/date-picker/DateRangePicker.js +240 -206
- package/dist/components/date-picker/DateRangePicker.js.map +1 -1
- package/dist/components/date-picker/PickerField.d.ts +13 -0
- package/dist/components/date-picker/PickerField.js +1 -1
- package/dist/components/date-picker/PickerField.js.map +1 -1
- package/dist/components/dialog/Dialog.d.ts +5 -0
- package/dist/components/dialog/Dialog.js.map +1 -1
- package/dist/components/drawer/Drawer.d.ts +10 -0
- package/dist/components/drawer/Drawer.js.map +1 -1
- package/dist/components/empty-state/EmptyState.d.ts +5 -0
- package/dist/components/empty-state/EmptyState.js.map +1 -1
- package/dist/components/file-upload/FileUpload.d.ts +21 -0
- package/dist/components/file-upload/FileUpload.js.map +1 -1
- package/dist/components/input/Input.d.ts +7 -0
- package/dist/components/input/Input.js +3 -0
- package/dist/components/input/Input.js.map +1 -1
- package/dist/components/link/Link.d.ts +1 -0
- package/dist/components/link/Link.js.map +1 -1
- package/dist/components/menu/Menu.d.ts +6 -0
- package/dist/components/menu/Menu.js.map +1 -1
- package/dist/components/number-field/NumberField.d.ts +7 -0
- package/dist/components/number-field/NumberField.js.map +1 -1
- package/dist/components/pagination/Pagination.d.ts +4 -0
- package/dist/components/pagination/Pagination.js.map +1 -1
- package/dist/components/popover/Popover.d.ts +4 -0
- package/dist/components/popover/Popover.js.map +1 -1
- package/dist/components/preview-card/PreviewCard.d.ts +4 -0
- package/dist/components/preview-card/PreviewCard.js.map +1 -1
- package/dist/components/progress/Progress.d.ts +8 -0
- package/dist/components/progress/Progress.js.map +1 -1
- package/dist/components/scroll-area/ScrollArea.d.ts +1 -0
- package/dist/components/scroll-area/ScrollArea.js.map +1 -1
- package/dist/components/search-input/SearchInput.d.ts +2 -0
- package/dist/components/search-input/SearchInput.js.map +1 -1
- package/dist/components/select/Select.d.ts +11 -0
- package/dist/components/select/Select.js.map +1 -1
- package/dist/components/separator/Separator.d.ts +1 -0
- package/dist/components/separator/Separator.js +1 -0
- package/dist/components/separator/Separator.js.map +1 -1
- package/dist/components/skeleton/Skeleton.d.ts +7 -0
- package/dist/components/skeleton/Skeleton.js +1 -0
- package/dist/components/skeleton/Skeleton.js.map +1 -1
- package/dist/components/slider/Slider.d.ts +1 -0
- package/dist/components/slider/Slider.js.map +1 -1
- package/dist/components/spinner/Spinner.d.ts +2 -0
- package/dist/components/spinner/Spinner.js +1 -0
- package/dist/components/spinner/Spinner.js.map +1 -1
- package/dist/components/stat-card/StatCard.d.ts +4 -0
- package/dist/components/stat-card/StatCard.js.map +1 -1
- package/dist/components/stepper/Stepper.d.ts +4 -0
- package/dist/components/stepper/Stepper.js.map +1 -1
- package/dist/components/table/Table.d.ts +24 -1
- package/dist/components/table/Table.js +19 -2
- package/dist/components/table/Table.js.map +1 -1
- package/dist/components/tabs/Tabs.d.ts +1 -0
- package/dist/components/tabs/Tabs.js.map +1 -1
- package/dist/components/tag/Tag.d.ts +3 -0
- package/dist/components/tag/Tag.js.map +1 -1
- package/dist/components/toast/Toast.d.ts +2 -0
- package/dist/components/toast/Toast.js.map +1 -1
- package/dist/components/toggle/Toggle.d.ts +7 -0
- package/dist/components/toggle/Toggle.js +1 -0
- package/dist/components/toggle/Toggle.js.map +1 -1
- package/dist/components/tooltip/Tooltip.d.ts +8 -0
- package/dist/components/tooltip/Tooltip.js.map +1 -1
- package/dist/components/typography/Typography.d.ts +5 -0
- package/dist/components/typography/Typography.js +2 -0
- package/dist/components/typography/Typography.js.map +1 -1
- package/dist/components.json +5534 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +4 -3
- package/dist/llms-full.txt +2707 -0
- package/dist/llms.txt +177 -0
- package/dist/opti-ui.css +171 -81
- package/dist/theme/ThemeProvider.d.ts +1 -0
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/utils/portal.d.ts +4 -0
- package/dist/utils/portal.js +4 -0
- package/dist/utils/portal.js.map +1 -1
- package/package.json +7 -3
|
@@ -145,7 +145,7 @@ function PickerField(t0) {
|
|
|
145
145
|
} else t19 = $[31];
|
|
146
146
|
let t20;
|
|
147
147
|
if ($[32] === Symbol.for("react.memo_cache_sentinel")) {
|
|
148
|
-
t20 = () => popupRef.current?.querySelector(".oui-calendar__day[tabindex=\"0\"]") ?? true;
|
|
148
|
+
t20 = () => popupRef.current?.querySelector(".oui-calendar__day[tabindex=\"0\"], .oui-calendar__choice[tabindex=\"0\"]") ?? true;
|
|
149
149
|
$[32] = t20;
|
|
150
150
|
} else t20 = $[32];
|
|
151
151
|
const t21 = typeof contentProps?.className === "string" && contentProps.className;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PickerField.js","names":["React","Popover","BasePopover","cx","CalendarIcon","PopoverContentProps","ControlSize","PickerFieldProps","ref","Ref","HTMLButtonElement","label","ReactNode","description","error","required","disabled","placeholder","size","open","defaultOpen","onOpenChange","id","className","triggerProps","Omit","ComponentProps","Trigger","contentProps","useOpenState","t0","$","_c","t1","undefined","inner","setInner","useState","t2","next","setOpen","t3","t4","const","PickerFieldShellProps","display","children","inputs","PickerField","idProp","generatedId","useId","popupRef","useRef","errorId","describedBy","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","Symbol","for","t19","t20","current","querySelector","t21","t22","t23","t24","t25","t26","t27","_c","BasePopover","Popover"],"sources":["../../../src/components/date-picker/PickerField.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Popover as BasePopover } from '@base-ui/react/popover';\nimport { cx } from '../../utils/cx';\nimport { CalendarIcon } from '../../icons';\nimport { Popover, type PopoverContentProps } from '../popover/Popover';\nimport type { ControlSize } from '../input/Input';\n\n/** Field props shared by the date pickers. */\nexport interface PickerFieldProps {\n ref?: React.Ref<HTMLButtonElement>;\n label?: React.ReactNode;\n description?: React.ReactNode;\n /** Error message. When set, the field is marked invalid. */\n error?: React.ReactNode;\n required?: boolean;\n disabled?: boolean;\n placeholder?: React.ReactNode;\n size?: ControlSize;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n id?: string;\n className?: string;\n /** Props for the trigger button (aria-*, data-*, onBlur…). */\n triggerProps?: Omit<React.ComponentProps<typeof BasePopover.Trigger>, 'children' | 'disabled' | 'id'>;\n contentProps?: Omit<PopoverContentProps, 'children'>;\n}\n\nexport function useOpenState({ open, defaultOpen = false, onOpenChange }: PickerFieldProps) {\n const [inner, setInner] = React.useState(defaultOpen);\n const setOpen = (next: boolean) => {\n setInner(next);\n onOpenChange?.(next);\n };\n return [open ?? inner, setOpen] as const;\n}\n\ninterface PickerFieldShellProps extends Omit<PickerFieldProps, 'open' | 'defaultOpen' | 'onOpenChange'> {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n /** Text for the current value; `null` shows the placeholder. */\n display: React.ReactNode | null;\n /** Popover content. */\n children: React.ReactNode;\n /** Hidden inputs that submit the value with a form. */\n inputs?: React.ReactNode;\n}\n\n/** Label, trigger button, calendar popover, description and error of a date picker. */\nexport function PickerField({\n label,\n description,\n error,\n required,\n disabled,\n placeholder,\n size = 'md',\n open,\n onOpenChange,\n id: idProp,\n className,\n triggerProps,\n contentProps,\n display,\n children,\n inputs,\n ref,\n}: PickerFieldShellProps) {\n const generatedId = React.useId();\n const id = idProp ?? generatedId;\n const popupRef = React.useRef<HTMLDivElement>(null);\n const errorId = error ? `${id}-error` : undefined;\n const describedBy = cx(description != null && `${id}-description`, errorId) || undefined;\n\n return (\n <div\n className={cx('oui-field', 'oui-date-picker', className)}\n data-disabled={disabled || undefined}\n data-invalid={error ? '' : undefined}\n >\n {label != null && (\n <label id={`${id}-label`} htmlFor={id} className=\"oui-field__label\">\n {label}\n {required && (\n <span className=\"oui-field__required\" aria-hidden>\n *\n </span>\n )}\n </label>\n )}\n <Popover.Root open={open} onOpenChange={(next) => onOpenChange(next)}>\n <BasePopover.Trigger\n ref={ref}\n id={id}\n disabled={disabled}\n aria-labelledby={label != null ? `${id}-label ${id}-value` : undefined}\n aria-describedby={describedBy}\n aria-required={required || undefined}\n aria-invalid={error ? true : undefined}\n {...triggerProps}\n className={cx('oui-date-picker__trigger', typeof triggerProps?.className === 'string' && triggerProps.className)}\n data-size={size}\n data-invalid={error ? '' : undefined}\n data-placeholder={display == null ? '' : undefined}\n >\n <span id={`${id}-value`} className=\"oui-date-picker__value\">\n {display ?? placeholder}\n </span>\n <CalendarIcon />\n </BasePopover.Trigger>\n <Popover.Content\n ref={popupRef}\n align=\"start\"\n sideOffset={6}\n initialFocus={() => popupRef.current?.querySelector<HTMLElement>('.oui-calendar__day[tabindex=\"0\"]') ?? true}\n {...contentProps}\n className={cx('oui-date-picker__popup', typeof contentProps?.className === 'string' && contentProps.className)}\n >\n {children}\n </Popover.Content>\n </Popover.Root>\n {inputs}\n {description != null && (\n <p id={`${id}-description`} className=\"oui-field__description\">\n {description}\n </p>\n )}\n {error && (\n <div id={`${id}-error`} className=\"oui-field__error\">\n {error}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PickerField.js","names":["React","Popover","BasePopover","cx","CalendarIcon","PopoverContentProps","ControlSize","PickerFieldProps","ref","Ref","HTMLButtonElement","label","ReactNode","description","error","required","disabled","placeholder","size","open","defaultOpen","onOpenChange","id","className","triggerProps","Omit","ComponentProps","Trigger","contentProps","useOpenState","t0","$","_c","t1","undefined","inner","setInner","useState","t2","next","setOpen","t3","t4","const","PickerFieldShellProps","display","children","inputs","PickerField","idProp","generatedId","useId","popupRef","useRef","errorId","describedBy","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","Symbol","for","t19","t20","current","querySelector","t21","t22","t23","t24","t25","t26","t27","_c","BasePopover","Popover"],"sources":["../../../src/components/date-picker/PickerField.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Popover as BasePopover } from '@base-ui/react/popover';\nimport { cx } from '../../utils/cx';\nimport { CalendarIcon } from '../../icons';\nimport { Popover, type PopoverContentProps } from '../popover/Popover';\nimport type { ControlSize } from '../input/Input';\n\n/** Field props shared by the date pickers. */\nexport interface PickerFieldProps {\n /** Ref to the trigger button. */\n ref?: React.Ref<HTMLButtonElement>;\n /** Visible field label. */\n label?: React.ReactNode;\n /** Help text under the field. */\n description?: React.ReactNode;\n /** Error message. When set, the field is marked invalid. */\n error?: React.ReactNode;\n /** Marks the field required and adds the required indicator to the label. */\n required?: boolean;\n /** Disables the field. */\n disabled?: boolean;\n /** Text shown while no date is selected. */\n placeholder?: React.ReactNode;\n /** Control height. */\n size?: ControlSize;\n /** Whether the calendar popover is open (controlled). */\n open?: boolean;\n /** Initial popover state when uncontrolled. */\n defaultOpen?: boolean;\n /** Called when the popover opens or closes. */\n onOpenChange?: (open: boolean) => void;\n /** Id of the trigger button. Generated when omitted. */\n id?: string;\n /** Class name for the trigger button. */\n className?: string;\n /** Props for the trigger button (aria-*, data-*, onBlur…). */\n triggerProps?: Omit<React.ComponentProps<typeof BasePopover.Trigger>, 'children' | 'disabled' | 'id'>;\n /** Props for the popover content. */\n contentProps?: Omit<PopoverContentProps, 'children'>;\n}\n\nexport function useOpenState({ open, defaultOpen = false, onOpenChange }: PickerFieldProps) {\n const [inner, setInner] = React.useState(defaultOpen);\n const setOpen = (next: boolean) => {\n setInner(next);\n onOpenChange?.(next);\n };\n return [open ?? inner, setOpen] as const;\n}\n\ninterface PickerFieldShellProps extends Omit<PickerFieldProps, 'open' | 'defaultOpen' | 'onOpenChange'> {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n /** Text for the current value; `null` shows the placeholder. */\n display: React.ReactNode | null;\n /** Popover content. */\n children: React.ReactNode;\n /** Hidden inputs that submit the value with a form. */\n inputs?: React.ReactNode;\n}\n\n/** Label, trigger button, calendar popover, description and error of a date picker. */\nexport function PickerField({\n label,\n description,\n error,\n required,\n disabled,\n placeholder,\n size = 'md',\n open,\n onOpenChange,\n id: idProp,\n className,\n triggerProps,\n contentProps,\n display,\n children,\n inputs,\n ref,\n}: PickerFieldShellProps) {\n const generatedId = React.useId();\n const id = idProp ?? generatedId;\n const popupRef = React.useRef<HTMLDivElement>(null);\n const errorId = error ? `${id}-error` : undefined;\n const describedBy = cx(description != null && `${id}-description`, errorId) || undefined;\n\n return (\n <div\n className={cx('oui-field', 'oui-date-picker', className)}\n data-disabled={disabled || undefined}\n data-invalid={error ? '' : undefined}\n >\n {label != null && (\n <label id={`${id}-label`} htmlFor={id} className=\"oui-field__label\">\n {label}\n {required && (\n <span className=\"oui-field__required\" aria-hidden>\n *\n </span>\n )}\n </label>\n )}\n <Popover.Root open={open} onOpenChange={(next) => onOpenChange(next)}>\n <BasePopover.Trigger\n ref={ref}\n id={id}\n disabled={disabled}\n aria-labelledby={label != null ? `${id}-label ${id}-value` : undefined}\n aria-describedby={describedBy}\n aria-required={required || undefined}\n aria-invalid={error ? true : undefined}\n {...triggerProps}\n className={cx('oui-date-picker__trigger', typeof triggerProps?.className === 'string' && triggerProps.className)}\n data-size={size}\n data-invalid={error ? '' : undefined}\n data-placeholder={display == null ? '' : undefined}\n >\n <span id={`${id}-value`} className=\"oui-date-picker__value\">\n {display ?? placeholder}\n </span>\n <CalendarIcon />\n </BasePopover.Trigger>\n <Popover.Content\n ref={popupRef}\n align=\"start\"\n sideOffset={6}\n initialFocus={() => popupRef.current?.querySelector<HTMLElement>('.oui-calendar__day[tabindex=\"0\"], .oui-calendar__choice[tabindex=\"0\"]') ?? true}\n {...contentProps}\n className={cx('oui-date-picker__popup', typeof contentProps?.className === 'string' && contentProps.className)}\n >\n {children}\n </Popover.Content>\n </Popover.Root>\n {inputs}\n {description != null && (\n <p id={`${id}-description`} className=\"oui-field__description\">\n {description}\n </p>\n )}\n {error && (\n <div id={`${id}-error`} className=\"oui-field__error\">\n {error}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -4,11 +4,15 @@ export type DialogSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';
|
|
|
4
4
|
/** `center` is a modal; the edges turn the dialog into a sheet / drawer. */
|
|
5
5
|
export type DialogPlacement = 'center' | 'right' | 'left' | 'bottom';
|
|
6
6
|
export interface DialogContentProps extends BaseDialog.Popup.Props {
|
|
7
|
+
/** Width of a centered dialog, or of a sheet. */
|
|
7
8
|
size?: DialogSize;
|
|
9
|
+
/** `center` modal, or a sheet docked to an edge. */
|
|
8
10
|
placement?: DialogPlacement;
|
|
9
11
|
/** Render the corner close button. */
|
|
10
12
|
showClose?: boolean;
|
|
13
|
+
/** Accessible name of the close button. */
|
|
11
14
|
closeLabel?: string;
|
|
15
|
+
/** Props for the backdrop behind the dialog. */
|
|
12
16
|
backdropProps?: BaseDialog.Backdrop.Props;
|
|
13
17
|
}
|
|
14
18
|
declare function DialogContent({ size, placement, showClose, closeLabel, backdropProps, className, children, ref, ...props }: DialogContentProps): import("react").JSX.Element;
|
|
@@ -41,6 +45,7 @@ export declare const Dialog: {
|
|
|
41
45
|
createHandle: typeof BaseDialog.createHandle;
|
|
42
46
|
};
|
|
43
47
|
export interface AlertDialogContentProps extends BaseAlertDialog.Popup.Props {
|
|
48
|
+
/** Dialog width. */
|
|
44
49
|
size?: Exclude<DialogSize, 'full'>;
|
|
45
50
|
}
|
|
46
51
|
declare function AlertDialogContent({ size, className, ref, ...props }: AlertDialogContentProps): import("react").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog.js","names":["Dialog","BaseDialog","AlertDialog","BaseAlertDialog","withClass","createPrimitive","usePortalContainer","XIcon","DialogSize","DialogPlacement","DialogContentProps","Popup","Props","size","placement","showClose","closeLabel","backdropProps","Backdrop","DialogContent","t0","$","_c","children","className","props","ref","t1","t2","t3","t4","undefined","container","t5","t6","t7","t8","t9","t10","t11","DialogTitle","DialogDescription","DialogHeader","DialogBody","DialogFooter","Root","Trigger","Content","Header","Title","Description","Body","Footer","Close","createHandle","AlertDialogContentProps","Exclude","AlertDialogContent","Symbol","for","AlertDialogTitle","AlertDialogDescription","_c","BaseDialog","Dialog","BaseAlertDialog","AlertDialog"],"sources":["../../../src/components/dialog/Dialog.tsx"],"sourcesContent":["import { Dialog as BaseDialog } from '@base-ui/react/dialog';\nimport { AlertDialog as BaseAlertDialog } from '@base-ui/react/alert-dialog';\nimport { withClass } from '../../utils/cx';\nimport { createPrimitive } from '../../utils/primitive';\nimport { usePortalContainer } from '../../utils/portal';\nimport { XIcon } from '../../icons';\n\nexport type DialogSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n/** `center` is a modal; the edges turn the dialog into a sheet / drawer. */\nexport type DialogPlacement = 'center' | 'right' | 'left' | 'bottom';\n\nexport interface DialogContentProps extends BaseDialog.Popup.Props {\n size?: DialogSize;\n placement?: DialogPlacement;\n /** Render the corner close button. */\n showClose?: boolean;\n closeLabel?: string;\n backdropProps?: BaseDialog.Backdrop.Props;\n}\n\nfunction DialogContent({\n size = 'md',\n placement = 'center',\n showClose = true,\n closeLabel = 'Close',\n backdropProps,\n className,\n children,\n ref,\n ...props\n}: DialogContentProps) {\n const container = usePortalContainer();\n return (\n <BaseDialog.Portal container={container}>\n <BaseDialog.Backdrop {...backdropProps} className={withClass('oui-dialog__backdrop', backdropProps?.className)} />\n <BaseDialog.Popup\n ref={ref}\n className={withClass('oui-dialog', className)}\n data-size={size}\n data-placement={placement}\n {...props}\n >\n {children}\n {showClose && (\n <BaseDialog.Close className=\"oui-dialog__close\" aria-label={closeLabel}>\n <XIcon />\n </BaseDialog.Close>\n )}\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n );\n}\n\nfunction DialogTitle({ className, ref, ...props }: BaseDialog.Title.Props) {\n return <BaseDialog.Title ref={ref} className={withClass('oui-dialog__title', className)} {...props} />;\n}\n\nfunction DialogDescription({ className, ref, ...props }: BaseDialog.Description.Props) {\n return <BaseDialog.Description ref={ref} className={withClass('oui-dialog__description', className)} {...props} />;\n}\n\nconst DialogHeader = createPrimitive('div', 'oui-dialog__header', 'DialogHeader');\nconst DialogBody = createPrimitive('div', 'oui-dialog__body', 'DialogBody');\nconst DialogFooter = createPrimitive('div', 'oui-dialog__footer', 'DialogFooter');\n\n/**\n * Modal dialog and side sheet. Compose:\n * `Dialog.Root` › `Dialog.Trigger` + `Dialog.Content` › `Dialog.Header` (`Title`, `Description`), `Dialog.Body`, `Dialog.Footer`.\n * Use `render={<Button />}` on `Dialog.Trigger` / `Dialog.Close` to style them as buttons.\n */\nexport const Dialog = {\n Root: BaseDialog.Root,\n Trigger: BaseDialog.Trigger,\n Content: DialogContent,\n Header: DialogHeader,\n Title: DialogTitle,\n Description: DialogDescription,\n Body: DialogBody,\n Footer: DialogFooter,\n Close: BaseDialog.Close,\n createHandle: BaseDialog.createHandle,\n};\n\n// ─── Alert dialog ────────────────────────────────────────────────────────────\n\nexport interface AlertDialogContentProps extends BaseAlertDialog.Popup.Props {\n size?: Exclude<DialogSize, 'full'>;\n}\n\nfunction AlertDialogContent({ size = 'sm', className, ref, ...props }: AlertDialogContentProps) {\n const container = usePortalContainer();\n return (\n <BaseAlertDialog.Portal container={container}>\n <BaseAlertDialog.Backdrop className=\"oui-dialog__backdrop\" />\n <BaseAlertDialog.Popup\n ref={ref}\n className={withClass('oui-dialog', className)}\n data-size={size}\n data-placement=\"center\"\n {...props}\n />\n </BaseAlertDialog.Portal>\n );\n}\n\nfunction AlertDialogTitle({ className, ref, ...props }: BaseAlertDialog.Title.Props) {\n return <BaseAlertDialog.Title ref={ref} className={withClass('oui-dialog__title', className)} {...props} />;\n}\n\nfunction AlertDialogDescription({ className, ref, ...props }: BaseAlertDialog.Description.Props) {\n return (\n <BaseAlertDialog.Description ref={ref} className={withClass('oui-dialog__description', className)} {...props} />\n );\n}\n\n/** Confirmation dialog that requires an explicit choice (no outside-click dismissal). */\nexport const AlertDialog = {\n Root: BaseAlertDialog.Root,\n Trigger: BaseAlertDialog.Trigger,\n Content: AlertDialogContent,\n Header: DialogHeader,\n Title: AlertDialogTitle,\n Description: AlertDialogDescription,\n Body: DialogBody,\n Footer: DialogFooter,\n Close: BaseAlertDialog.Close,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Dialog.js","names":["Dialog","BaseDialog","AlertDialog","BaseAlertDialog","withClass","createPrimitive","usePortalContainer","XIcon","DialogSize","DialogPlacement","DialogContentProps","Popup","Props","size","placement","showClose","closeLabel","backdropProps","Backdrop","DialogContent","t0","$","_c","children","className","props","ref","t1","t2","t3","t4","undefined","container","t5","t6","t7","t8","t9","t10","t11","DialogTitle","DialogDescription","DialogHeader","DialogBody","DialogFooter","Root","Trigger","Content","Header","Title","Description","Body","Footer","Close","createHandle","AlertDialogContentProps","Exclude","AlertDialogContent","Symbol","for","AlertDialogTitle","AlertDialogDescription","_c","BaseDialog","Dialog","BaseAlertDialog","AlertDialog"],"sources":["../../../src/components/dialog/Dialog.tsx"],"sourcesContent":["import { Dialog as BaseDialog } from '@base-ui/react/dialog';\nimport { AlertDialog as BaseAlertDialog } from '@base-ui/react/alert-dialog';\nimport { withClass } from '../../utils/cx';\nimport { createPrimitive } from '../../utils/primitive';\nimport { usePortalContainer } from '../../utils/portal';\nimport { XIcon } from '../../icons';\n\nexport type DialogSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n/** `center` is a modal; the edges turn the dialog into a sheet / drawer. */\nexport type DialogPlacement = 'center' | 'right' | 'left' | 'bottom';\n\nexport interface DialogContentProps extends BaseDialog.Popup.Props {\n /** Width of a centered dialog, or of a sheet. */\n size?: DialogSize;\n /** `center` modal, or a sheet docked to an edge. */\n placement?: DialogPlacement;\n /** Render the corner close button. */\n showClose?: boolean;\n /** Accessible name of the close button. */\n closeLabel?: string;\n /** Props for the backdrop behind the dialog. */\n backdropProps?: BaseDialog.Backdrop.Props;\n}\n\nfunction DialogContent({\n size = 'md',\n placement = 'center',\n showClose = true,\n closeLabel = 'Close',\n backdropProps,\n className,\n children,\n ref,\n ...props\n}: DialogContentProps) {\n const container = usePortalContainer();\n return (\n <BaseDialog.Portal container={container}>\n <BaseDialog.Backdrop {...backdropProps} className={withClass('oui-dialog__backdrop', backdropProps?.className)} />\n <BaseDialog.Popup\n ref={ref}\n className={withClass('oui-dialog', className)}\n data-size={size}\n data-placement={placement}\n {...props}\n >\n {children}\n {showClose && (\n <BaseDialog.Close className=\"oui-dialog__close\" aria-label={closeLabel}>\n <XIcon />\n </BaseDialog.Close>\n )}\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n );\n}\n\nfunction DialogTitle({ className, ref, ...props }: BaseDialog.Title.Props) {\n return <BaseDialog.Title ref={ref} className={withClass('oui-dialog__title', className)} {...props} />;\n}\n\nfunction DialogDescription({ className, ref, ...props }: BaseDialog.Description.Props) {\n return <BaseDialog.Description ref={ref} className={withClass('oui-dialog__description', className)} {...props} />;\n}\n\nconst DialogHeader = createPrimitive('div', 'oui-dialog__header', 'DialogHeader');\nconst DialogBody = createPrimitive('div', 'oui-dialog__body', 'DialogBody');\nconst DialogFooter = createPrimitive('div', 'oui-dialog__footer', 'DialogFooter');\n\n/**\n * Modal dialog and side sheet. Compose:\n * `Dialog.Root` › `Dialog.Trigger` + `Dialog.Content` › `Dialog.Header` (`Title`, `Description`), `Dialog.Body`, `Dialog.Footer`.\n * Use `render={<Button />}` on `Dialog.Trigger` / `Dialog.Close` to style them as buttons.\n */\nexport const Dialog = {\n Root: BaseDialog.Root,\n Trigger: BaseDialog.Trigger,\n Content: DialogContent,\n Header: DialogHeader,\n Title: DialogTitle,\n Description: DialogDescription,\n Body: DialogBody,\n Footer: DialogFooter,\n Close: BaseDialog.Close,\n createHandle: BaseDialog.createHandle,\n};\n\n// ─── Alert dialog ────────────────────────────────────────────────────────────\n\nexport interface AlertDialogContentProps extends BaseAlertDialog.Popup.Props {\n /** Dialog width. */\n size?: Exclude<DialogSize, 'full'>;\n}\n\nfunction AlertDialogContent({ size = 'sm', className, ref, ...props }: AlertDialogContentProps) {\n const container = usePortalContainer();\n return (\n <BaseAlertDialog.Portal container={container}>\n <BaseAlertDialog.Backdrop className=\"oui-dialog__backdrop\" />\n <BaseAlertDialog.Popup\n ref={ref}\n className={withClass('oui-dialog', className)}\n data-size={size}\n data-placement=\"center\"\n {...props}\n />\n </BaseAlertDialog.Portal>\n );\n}\n\nfunction AlertDialogTitle({ className, ref, ...props }: BaseAlertDialog.Title.Props) {\n return <BaseAlertDialog.Title ref={ref} className={withClass('oui-dialog__title', className)} {...props} />;\n}\n\nfunction AlertDialogDescription({ className, ref, ...props }: BaseAlertDialog.Description.Props) {\n return (\n <BaseAlertDialog.Description ref={ref} className={withClass('oui-dialog__description', className)} {...props} />\n );\n}\n\n/** Confirmation dialog that requires an explicit choice (no outside-click dismissal). */\nexport const AlertDialog = {\n Root: BaseAlertDialog.Root,\n Trigger: BaseAlertDialog.Trigger,\n Content: AlertDialogContent,\n Header: DialogHeader,\n Title: AlertDialogTitle,\n Description: AlertDialogDescription,\n Body: DialogBody,\n Footer: DialogFooter,\n Close: BaseAlertDialog.Close,\n};\n"],"mappings":"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"}
|
|
@@ -1,20 +1,27 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
export type DrawerSize = 'sm' | 'md' | 'lg' | 'xl';
|
|
3
3
|
export interface DrawerProps {
|
|
4
|
+
/** Ref to the drawer panel. */
|
|
4
5
|
ref?: React.Ref<HTMLDivElement>;
|
|
6
|
+
/** Whether the drawer is open (controlled). */
|
|
5
7
|
open?: boolean;
|
|
8
|
+
/** Initial state when uncontrolled. */
|
|
6
9
|
defaultOpen?: boolean;
|
|
10
|
+
/** Called when the drawer opens or closes. */
|
|
7
11
|
onOpenChange?: (open: boolean) => void;
|
|
8
12
|
/** Element that opens the drawer, e.g. `<Button>Details</Button>`. Omit when `open` is controlled. */
|
|
9
13
|
trigger?: React.ReactElement;
|
|
14
|
+
/** Header title; also the drawer's accessible name. */
|
|
10
15
|
title: React.ReactNode;
|
|
11
16
|
/** Small label above the title, e.g. the record type. */
|
|
12
17
|
eyebrow?: React.ReactNode;
|
|
18
|
+
/** Supporting text under the title. */
|
|
13
19
|
description?: React.ReactNode;
|
|
14
20
|
/** Header content next to the close button (edit, delete, a menu…). */
|
|
15
21
|
actions?: React.ReactNode;
|
|
16
22
|
/** Pinned to the bottom, for form buttons. */
|
|
17
23
|
footer?: React.ReactNode;
|
|
24
|
+
/** Edge the drawer slides in from. */
|
|
18
25
|
side?: 'right' | 'left';
|
|
19
26
|
/** Width: sm 24rem, md 32rem (default), lg 48rem, xl 60rem. Override with `--oui-drawer-width`. */
|
|
20
27
|
size?: DrawerSize;
|
|
@@ -25,10 +32,13 @@ export interface DrawerProps {
|
|
|
25
32
|
dismissible?: boolean;
|
|
26
33
|
/** `false` leaves the page behind interactive and drops the backdrop. */
|
|
27
34
|
modal?: boolean;
|
|
35
|
+
/** Accessible name of the close button. */
|
|
28
36
|
closeLabel?: string;
|
|
37
|
+
/** Class name for the drawer panel. */
|
|
29
38
|
className?: string;
|
|
30
39
|
/** Props for the scrolling content area. */
|
|
31
40
|
bodyProps?: React.HTMLAttributes<HTMLDivElement>;
|
|
41
|
+
/** Drawer body content. */
|
|
32
42
|
children?: React.ReactNode;
|
|
33
43
|
}
|
|
34
44
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Drawer.js","names":["React","Dialog","BaseDialog","cx","usePortalContainer","XIcon","IconButton","DrawerSize","DrawerProps","ref","Ref","HTMLDivElement","open","defaultOpen","onOpenChange","trigger","ReactElement","title","ReactNode","eyebrow","description","actions","footer","side","size","dismissible","modal","closeLabel","className","bodyProps","HTMLAttributes","children","Drawer","t0","$","_c","openProp","t1","t2","t3","t4","t5","t6","undefined","inner","setInner","useState","container","t7","next","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","Symbol","for","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","_c","BaseDialog"],"sources":["../../../src/components/drawer/Drawer.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Dialog as BaseDialog } from '@base-ui/react/dialog';\nimport { cx } from '../../utils/cx';\nimport { usePortalContainer } from '../../utils/portal';\nimport { XIcon } from '../../icons';\nimport { IconButton } from '../button/Button';\n\nexport type DrawerSize = 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface DrawerProps {\n ref?: React.Ref<HTMLDivElement>;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Element that opens the drawer, e.g. `<Button>Details</Button>`. Omit when `open` is controlled. */\n trigger?: React.ReactElement;\n title: React.ReactNode;\n /** Small label above the title, e.g. the record type. */\n eyebrow?: React.ReactNode;\n description?: React.ReactNode;\n /** Header content next to the close button (edit, delete, a menu…). */\n actions?: React.ReactNode;\n /** Pinned to the bottom, for form buttons. */\n footer?: React.ReactNode;\n side?: 'right' | 'left';\n /** Width: sm 24rem, md 32rem (default), lg 48rem, xl 60rem. Override with `--oui-drawer-width`. */\n size?: DrawerSize;\n /**\n * Set to `false` to block Esc, outside clicks and the close button, e.g.\n * while a form inside is saving.\n */\n dismissible?: boolean;\n /** `false` leaves the page behind interactive and drops the backdrop. */\n modal?: boolean;\n closeLabel?: string;\n className?: string;\n /** Props for the scrolling content area. */\n bodyProps?: React.HTMLAttributes<HTMLDivElement>;\n children?: React.ReactNode;\n}\n\n/**\n * Side panel for inspecting or editing a record without leaving the page:\n * pinned header, scrolling body, optional pinned footer. For a free-form\n * sheet use `Dialog.Content` with `placement`.\n */\nexport function Drawer({\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n trigger,\n title,\n eyebrow,\n description,\n actions,\n footer,\n side = 'right',\n size = 'md',\n dismissible = true,\n modal = true,\n closeLabel = 'Close',\n className,\n bodyProps,\n children,\n ref,\n}: DrawerProps) {\n const [inner, setInner] = React.useState(defaultOpen);\n const open = openProp ?? inner;\n const container = usePortalContainer();\n\n return (\n <BaseDialog.Root\n open={open}\n modal={modal}\n onOpenChange={(next) => {\n if (!next && !dismissible) return;\n setInner(next);\n onOpenChange?.(next);\n }}\n >\n {trigger && <BaseDialog.Trigger render={trigger} />}\n <BaseDialog.Portal container={container}>\n {modal && <BaseDialog.Backdrop className=\"oui-dialog__backdrop\" />}\n <BaseDialog.Popup ref={ref} className={cx('oui-drawer', className)} data-side={side} data-size={size}>\n <header className=\"oui-drawer__header\">\n <div className=\"oui-drawer__heading\">\n {eyebrow && <div className=\"oui-drawer__eyebrow\">{eyebrow}</div>}\n <BaseDialog.Title className=\"oui-drawer__title\">{title}</BaseDialog.Title>\n {description && (\n <BaseDialog.Description className=\"oui-drawer__description\">{description}</BaseDialog.Description>\n )}\n </div>\n <div className=\"oui-drawer__actions\">\n {actions}\n <BaseDialog.Close render={<IconButton aria-label={closeLabel} disabled={!dismissible} />}>\n <XIcon />\n </BaseDialog.Close>\n </div>\n </header>\n <div {...bodyProps} className={cx('oui-drawer__body', bodyProps?.className)}>\n {children}\n </div>\n {footer && <footer className=\"oui-drawer__footer\">{footer}</footer>}\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n </BaseDialog.Root>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"Drawer.js","names":["React","Dialog","BaseDialog","cx","usePortalContainer","XIcon","IconButton","DrawerSize","DrawerProps","ref","Ref","HTMLDivElement","open","defaultOpen","onOpenChange","trigger","ReactElement","title","ReactNode","eyebrow","description","actions","footer","side","size","dismissible","modal","closeLabel","className","bodyProps","HTMLAttributes","children","Drawer","t0","$","_c","openProp","t1","t2","t3","t4","t5","t6","undefined","inner","setInner","useState","container","t7","next","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","Symbol","for","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","_c","BaseDialog"],"sources":["../../../src/components/drawer/Drawer.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Dialog as BaseDialog } from '@base-ui/react/dialog';\nimport { cx } from '../../utils/cx';\nimport { usePortalContainer } from '../../utils/portal';\nimport { XIcon } from '../../icons';\nimport { IconButton } from '../button/Button';\n\nexport type DrawerSize = 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface DrawerProps {\n /** Ref to the drawer panel. */\n ref?: React.Ref<HTMLDivElement>;\n /** Whether the drawer is open (controlled). */\n open?: boolean;\n /** Initial state when uncontrolled. */\n defaultOpen?: boolean;\n /** Called when the drawer opens or closes. */\n onOpenChange?: (open: boolean) => void;\n /** Element that opens the drawer, e.g. `<Button>Details</Button>`. Omit when `open` is controlled. */\n trigger?: React.ReactElement;\n /** Header title; also the drawer's accessible name. */\n title: React.ReactNode;\n /** Small label above the title, e.g. the record type. */\n eyebrow?: React.ReactNode;\n /** Supporting text under the title. */\n description?: React.ReactNode;\n /** Header content next to the close button (edit, delete, a menu…). */\n actions?: React.ReactNode;\n /** Pinned to the bottom, for form buttons. */\n footer?: React.ReactNode;\n /** Edge the drawer slides in from. */\n side?: 'right' | 'left';\n /** Width: sm 24rem, md 32rem (default), lg 48rem, xl 60rem. Override with `--oui-drawer-width`. */\n size?: DrawerSize;\n /**\n * Set to `false` to block Esc, outside clicks and the close button, e.g.\n * while a form inside is saving.\n */\n dismissible?: boolean;\n /** `false` leaves the page behind interactive and drops the backdrop. */\n modal?: boolean;\n /** Accessible name of the close button. */\n closeLabel?: string;\n /** Class name for the drawer panel. */\n className?: string;\n /** Props for the scrolling content area. */\n bodyProps?: React.HTMLAttributes<HTMLDivElement>;\n /** Drawer body content. */\n children?: React.ReactNode;\n}\n\n/**\n * Side panel for inspecting or editing a record without leaving the page:\n * pinned header, scrolling body, optional pinned footer. For a free-form\n * sheet use `Dialog.Content` with `placement`.\n */\nexport function Drawer({\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n trigger,\n title,\n eyebrow,\n description,\n actions,\n footer,\n side = 'right',\n size = 'md',\n dismissible = true,\n modal = true,\n closeLabel = 'Close',\n className,\n bodyProps,\n children,\n ref,\n}: DrawerProps) {\n const [inner, setInner] = React.useState(defaultOpen);\n const open = openProp ?? inner;\n const container = usePortalContainer();\n\n return (\n <BaseDialog.Root\n open={open}\n modal={modal}\n onOpenChange={(next) => {\n if (!next && !dismissible) return;\n setInner(next);\n onOpenChange?.(next);\n }}\n >\n {trigger && <BaseDialog.Trigger render={trigger} />}\n <BaseDialog.Portal container={container}>\n {modal && <BaseDialog.Backdrop className=\"oui-dialog__backdrop\" />}\n <BaseDialog.Popup ref={ref} className={cx('oui-drawer', className)} data-side={side} data-size={size}>\n <header className=\"oui-drawer__header\">\n <div className=\"oui-drawer__heading\">\n {eyebrow && <div className=\"oui-drawer__eyebrow\">{eyebrow}</div>}\n <BaseDialog.Title className=\"oui-drawer__title\">{title}</BaseDialog.Title>\n {description && (\n <BaseDialog.Description className=\"oui-drawer__description\">{description}</BaseDialog.Description>\n )}\n </div>\n <div className=\"oui-drawer__actions\">\n {actions}\n <BaseDialog.Close render={<IconButton aria-label={closeLabel} disabled={!dismissible} />}>\n <XIcon />\n </BaseDialog.Close>\n </div>\n </header>\n <div {...bodyProps} className={cx('oui-drawer__body', bodyProps?.className)}>\n {children}\n </div>\n {footer && <footer className=\"oui-drawer__footer\">{footer}</footer>}\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n </BaseDialog.Root>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
export interface EmptyStateProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
3
|
+
/** Ref to the root element. */
|
|
3
4
|
ref?: React.Ref<HTMLDivElement>;
|
|
5
|
+
/** Illustration or icon above the title. */
|
|
4
6
|
icon?: React.ReactNode;
|
|
7
|
+
/** What is missing, e.g. "No vehicles yet". */
|
|
5
8
|
title: React.ReactNode;
|
|
9
|
+
/** Explains why it is empty or what to do next. */
|
|
6
10
|
description?: React.ReactNode;
|
|
11
|
+
/** Buttons for the next step. */
|
|
7
12
|
actions?: React.ReactNode;
|
|
8
13
|
/** Center content (default) or align to start. */
|
|
9
14
|
align?: 'center' | 'start';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyState.js","names":["React","cx","EmptyStateProps","Omit","HTMLAttributes","HTMLDivElement","ref","Ref","icon","ReactNode","title","description","actions","align","EmptyState","t0","$","_c","children","className","props","t1","undefined","t2","t3","t4","t5","t6","t7","_c"],"sources":["../../../src/components/empty-state/EmptyState.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cx } from '../../utils/cx';\n\nexport interface EmptyStateProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n ref?: React.Ref<HTMLDivElement>;\n icon?: React.ReactNode;\n title: React.ReactNode;\n description?: React.ReactNode;\n actions?: React.ReactNode;\n /** Center content (default) or align to start. */\n align?: 'center' | 'start';\n}\n\n/** Placeholder for empty lists, searches without results and first-run screens. */\nexport function EmptyState({\n icon,\n title,\n description,\n actions,\n align = 'center',\n className,\n children,\n ref,\n ...props\n}: EmptyStateProps) {\n return (\n <div ref={ref} className={cx('oui-empty', className)} data-align={align} {...props}>\n {icon && <div className=\"oui-empty__icon\">{icon}</div>}\n <p className=\"oui-empty__title\">{title}</p>\n {description && <p className=\"oui-empty__description\">{description}</p>}\n {children}\n {actions && <div className=\"oui-empty__actions\">{actions}</div>}\n </div>\n );\n}\n"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"EmptyState.js","names":["React","cx","EmptyStateProps","Omit","HTMLAttributes","HTMLDivElement","ref","Ref","icon","ReactNode","title","description","actions","align","EmptyState","t0","$","_c","children","className","props","t1","undefined","t2","t3","t4","t5","t6","t7","_c"],"sources":["../../../src/components/empty-state/EmptyState.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cx } from '../../utils/cx';\n\nexport interface EmptyStateProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Ref to the root element. */\n ref?: React.Ref<HTMLDivElement>;\n /** Illustration or icon above the title. */\n icon?: React.ReactNode;\n /** What is missing, e.g. \"No vehicles yet\". */\n title: React.ReactNode;\n /** Explains why it is empty or what to do next. */\n description?: React.ReactNode;\n /** Buttons for the next step. */\n actions?: React.ReactNode;\n /** Center content (default) or align to start. */\n align?: 'center' | 'start';\n}\n\n/** Placeholder for empty lists, searches without results and first-run screens. */\nexport function EmptyState({\n icon,\n title,\n description,\n actions,\n align = 'center',\n className,\n children,\n ref,\n ...props\n}: EmptyStateProps) {\n return (\n <div ref={ref} className={cx('oui-empty', className)} data-align={align} {...props}>\n {icon && <div className=\"oui-empty__icon\">{icon}</div>}\n <p className=\"oui-empty__title\">{title}</p>\n {description && <p className=\"oui-empty__description\">{description}</p>}\n {children}\n {actions && <div className=\"oui-empty__actions\">{actions}</div>}\n </div>\n );\n}\n"],"mappings":";;;;;;;AAmBA,SAAOc,WAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAL;CAAA,IAAAM;CAAA,IAAAC;CAAA,IAAAR;CAAA,IAAAH;CAAA,IAAAY;CAAA,IAAAd;CAAA,IAAAe;CAAA,IAAAX;CAAA,IAAAM,EAAA,OAAAD,IAAA;EAAoB,CAAA,CAAAP,MAAAE,OAAAC,aAAAC,SAAAC,OAAAQ,IAAAF,WAAAD,UAAAZ,KAAA,GAAAc,SAAAL;EAUTC,EAAA,KAAAD;EAAAC,EAAA,KAAAJ;EAAAI,EAAA,KAAAE;EAAAF,EAAA,KAAAG;EAAAH,EAAA,KAAAL;EAAAK,EAAA,KAAAR;EAAAQ,EAAA,KAAAI;EAAAJ,EAAA,KAAAV;EAAAU,EAAA,KAAAK;EAAAL,EAAA,KAAAN;CAAA,OAAA;EAAAE,UAAAI,EAAA;EAAAE,WAAAF,EAAA;EAAAG,YAAAH,EAAA;EAAAL,cAAAK,EAAA;EAAAR,OAAAQ,EAAA;EAAAI,QAAAJ,EAAA;EAAAV,MAAAU,EAAA;EAAAK,KAAAL,EAAA;EAAAN,QAAAM,EAAA;CAAA;CALhB,MAAAH,QAAAQ,OAAAC,KAAAA,IAAA,WAAAD;CAAgB,IAAAE;CAAA,IAAAP,EAAA,QAAAG,WAAA;EAOYI,KAAAtB,GAAG,aAAakB,SAAS;EAACH,EAAA,MAAAG;EAAAH,EAAA,MAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,IAAAQ;CAAA,IAAAR,EAAA,QAAAR,MAAA;EACjDgB,KAAAhB,QAAQ,oBAAA,OAAA;GAAe,WAAA;GAAmBA,UAAAA;EAAW,CAAA;EAAAQ,EAAA,MAAAR;EAAAQ,EAAA,MAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,IAAAS;CAAA,IAAAT,EAAA,QAAAN,OAAA;EACtDe,KAAA,oBAAA,KAAA;GAAa,WAAA;GAAoBf,UAAAA;EAAU,CAAA;EAAAM,EAAA,MAAAN;EAAAM,EAAA,MAAAS;CAAA,OAAAA,KAAAT,EAAA;CAAA,IAAAU;CAAA,IAAAV,EAAA,QAAAL,aAAA;EAC1Ce,KAAAf,eAAe,oBAAA,KAAA;GAAa,WAAA;GAA0BA,UAAAA;EAAgB,CAAA;EAAAK,EAAA,MAAAL;EAAAK,EAAA,MAAAU;CAAA,OAAAA,KAAAV,EAAA;CAAA,IAAAW;CAAA,IAAAX,EAAA,QAAAJ,SAAA;EAEtEe,KAAAf,WAAW,oBAAA,OAAA;GAAe,WAAA;GAAsBA,UAAAA;EAAc,CAAA;EAAAI,EAAA,MAAAJ;EAAAI,EAAA,MAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,IAAAY;CAAA,IAAAZ,EAAA,QAAAH,SAAAG,EAAA,QAAAE,YAAAF,EAAA,QAAAI,SAAAJ,EAAA,QAAAV,OAAAU,EAAA,QAAAO,MAAAP,EAAA,QAAAQ,MAAAR,EAAA,QAAAS,MAAAT,EAAA,QAAAU,MAAAV,EAAA,QAAAW,IAAA;EALjEC,KAAA,qBAAA,OAAA;GAAUtB;GAAgB,WAAAiB;GAAwCV,cAAAA;GAAK,GAAMO;GAA7E,UAAA;IACGI;IACDC;IACCC;IACAR;IACAS;GACG;;EAAAX,EAAA,MAAAH;EAAAG,EAAA,MAAAE;EAAAF,EAAA,MAAAI;EAAAJ,EAAA,MAAAV;EAAAU,EAAA,MAAAO;EAAAP,EAAA,MAAAQ;EAAAR,EAAA,MAAAS;EAAAT,EAAA,MAAAU;EAAAV,EAAA,MAAAW;EAAAX,EAAA,MAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAAA,OANNY;AAMM"}
|
|
@@ -7,6 +7,7 @@ export interface FileRejection {
|
|
|
7
7
|
/** `1536` → `"1.5 KB"`. */
|
|
8
8
|
export declare function formatFileSize(bytes: number, locale?: string): string;
|
|
9
9
|
export interface DropzoneProps extends Omit<React.LabelHTMLAttributes<HTMLLabelElement>, 'title'> {
|
|
10
|
+
/** Ref to the dropzone element. */
|
|
10
11
|
ref?: React.Ref<HTMLLabelElement>;
|
|
11
12
|
/** Called with the picked or dropped files that pass `accept` and `maxSize`. */
|
|
12
13
|
onFiles?: (files: File[]) => void;
|
|
@@ -14,6 +15,7 @@ export interface DropzoneProps extends Omit<React.LabelHTMLAttributes<HTMLLabelE
|
|
|
14
15
|
onReject?: (rejections: FileRejection[]) => void;
|
|
15
16
|
/** Allowed types, as for `<input accept>`: `".pdf,image/*"`. */
|
|
16
17
|
accept?: string;
|
|
18
|
+
/** Allow choosing several files. */
|
|
17
19
|
multiple?: boolean;
|
|
18
20
|
/** Largest allowed file, in bytes. */
|
|
19
21
|
maxSize?: number;
|
|
@@ -22,11 +24,15 @@ export interface DropzoneProps extends Omit<React.LabelHTMLAttributes<HTMLLabelE
|
|
|
22
24
|
* with a form and `required` validates. Without it the input is emptied after each pick.
|
|
23
25
|
*/
|
|
24
26
|
files?: File[];
|
|
27
|
+
/** Disables picking and dropping. */
|
|
25
28
|
disabled?: boolean;
|
|
29
|
+
/** Shows the error styling. */
|
|
26
30
|
invalid?: boolean;
|
|
27
31
|
/** `sm` is a single compact row. */
|
|
28
32
|
size?: 'sm' | 'md';
|
|
33
|
+
/** Icon shown before the title. Defaults to an upload icon. */
|
|
29
34
|
icon?: React.ReactNode;
|
|
35
|
+
/** Main line. Defaults to "Drop files here or click to browse". */
|
|
30
36
|
title?: React.ReactNode;
|
|
31
37
|
/** Secondary line, e.g. the allowed types and size. */
|
|
32
38
|
hint?: React.ReactNode;
|
|
@@ -37,11 +43,15 @@ export interface DropzoneProps extends Omit<React.LabelHTMLAttributes<HTMLLabelE
|
|
|
37
43
|
export declare function Dropzone({ onFiles, onReject, accept, multiple, maxSize, files, disabled, invalid, size, icon, title, hint, inputProps, className, children, ref, ...props }: DropzoneProps): React.JSX.Element;
|
|
38
44
|
export type FileItemStatus = 'idle' | 'uploading' | 'success' | 'error';
|
|
39
45
|
export interface FileItemProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
46
|
+
/** Ref to the item element. */
|
|
40
47
|
ref?: React.Ref<HTMLDivElement>;
|
|
48
|
+
/** File name. */
|
|
41
49
|
name: string;
|
|
42
50
|
/** Size in bytes. */
|
|
43
51
|
size?: number;
|
|
52
|
+
/** Icon before the name. Defaults to a file icon. */
|
|
44
53
|
icon?: React.ReactNode;
|
|
54
|
+
/** Upload state; sets the progress bar and error styling. */
|
|
45
55
|
status?: FileItemStatus;
|
|
46
56
|
/** Upload progress from 0 to 100, shown while `uploading`. `null` is indeterminate. */
|
|
47
57
|
progress?: number | null;
|
|
@@ -49,6 +59,7 @@ export interface FileItemProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
49
59
|
error?: React.ReactNode;
|
|
50
60
|
/** Adds the remove button. */
|
|
51
61
|
onRemove?: () => void;
|
|
62
|
+
/** Accessible name of the remove button. Defaults to "Remove {name}". */
|
|
52
63
|
removeLabel?: string;
|
|
53
64
|
/** Extra controls before the remove button (download, preview…). */
|
|
54
65
|
actions?: React.ReactNode;
|
|
@@ -61,23 +72,33 @@ export interface FileUploadLabels {
|
|
|
61
72
|
remove: (name: string) => string;
|
|
62
73
|
}
|
|
63
74
|
export interface FileUploadProps extends Pick<DropzoneProps, 'accept' | 'multiple' | 'maxSize' | 'onReject' | 'size' | 'icon' | 'title' | 'hint'> {
|
|
75
|
+
/** Ref to the dropzone element. */
|
|
64
76
|
ref?: React.Ref<HTMLLabelElement>;
|
|
77
|
+
/** Chosen files (controlled). */
|
|
65
78
|
value?: File[];
|
|
79
|
+
/** Initially chosen files when uncontrolled. */
|
|
66
80
|
defaultValue?: File[];
|
|
81
|
+
/** Called with the full list of files after a file is added or removed. */
|
|
67
82
|
onValueChange?: (files: File[]) => void;
|
|
68
83
|
/** Most files allowed when `multiple`. */
|
|
69
84
|
maxFiles?: number;
|
|
70
85
|
/** Upload state of a file, for showing progress and errors in the list. */
|
|
71
86
|
fileState?: (file: File) => Pick<FileItemProps, 'status' | 'progress' | 'error'> | undefined;
|
|
87
|
+
/** Visible field label. */
|
|
72
88
|
label?: React.ReactNode;
|
|
89
|
+
/** Help text under the dropzone. */
|
|
73
90
|
description?: React.ReactNode;
|
|
74
91
|
/** Error message. When set, the field is marked invalid. */
|
|
75
92
|
error?: React.ReactNode;
|
|
93
|
+
/** Requires at least one file before the form submits. */
|
|
76
94
|
required?: boolean;
|
|
95
|
+
/** Disables picking, dropping and removing files. */
|
|
77
96
|
disabled?: boolean;
|
|
78
97
|
/** Submits the files with a form under this name. */
|
|
79
98
|
name?: string;
|
|
99
|
+
/** Id of the file input. Generated when omitted. */
|
|
80
100
|
id?: string;
|
|
101
|
+
/** Class name for the root element. */
|
|
81
102
|
className?: string;
|
|
82
103
|
/** BCP 47 locale for file sizes. */
|
|
83
104
|
locale?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileUpload.js","names":["React","cx","CircleCheckIcon","FileIcon","UploadIcon","XIcon","IconButton","Progress","FileRejection","file","File","reason","formatFileSize","bytes","locale","units","value","unit","length","digits","Intl","NumberFormat","maximumFractionDigits","format","accepts","accept","tokens","split","map","token","trim","toLowerCase","filter","Boolean","name","type","some","startsWith","endsWith","slice","setInputFiles","input","HTMLInputElement","files","DataTransfer","transfer","items","add","DropzoneProps","Omit","LabelHTMLAttributes","HTMLLabelElement","ref","Ref","onFiles","onReject","rejections","multiple","maxSize","disabled","invalid","size","icon","ReactNode","title","hint","inputProps","ComponentProps","Dropzone","t0","$","_c","children","className","props","t1","undefined","dragging","setDragging","useState","inputRef","useRef","t2","t3","current","useEffect","t4","list","accepted","rejected","Array","from","push","take","hasFiles","_temp","t5","t6","t7","t8","t9","event_0","event","t10","t11","Symbol","for","event_1","preventDefault","event_2","currentTarget","contains","relatedTarget","Node","t12","event_3","dataTransfer","t13","t14","t15","t16","event_4","target","t17","t18","t19","t20","t21","t22","t23","t24","types","includes","FileItemStatus","FileItemProps","HTMLAttributes","HTMLDivElement","status","progress","error","onRemove","removeLabel","actions","FileItem","uploading","Math","round","meta","join","FileUploadLabels","remove","defaultLabels","sameFile","a","b","lastModified","FileUploadProps","Pick","defaultValue","onValueChange","maxFiles","fileState","label","description","required","id","labels","Partial","FileUpload","idProp","text","inner","setInner","generatedId","useId","descriptionId","errorId","describedBy","next","commit","added","fresh","existing","room","max","_temp2","file_1","index","_","position","file_0","_c"],"sources":["../../../src/components/file-upload/FileUpload.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cx } from '../../utils/cx';\nimport { CircleCheckIcon, FileIcon, UploadIcon, XIcon } from '../../icons';\nimport { IconButton } from '../button/Button';\nimport { Progress } from '../progress/Progress';\n\nexport interface FileRejection {\n file: File;\n /** `type`: not matched by `accept`. `size`: larger than `maxSize`. `count`: over the file limit. */\n reason: 'type' | 'size' | 'count';\n}\n\n/** `1536` → `\"1.5 KB\"`. */\nexport function formatFileSize(bytes: number, locale?: string): string {\n const units = ['B', 'KB', 'MB', 'GB', 'TB'];\n let value = bytes;\n let unit = 0;\n while (value >= 1024 && unit < units.length - 1) {\n value /= 1024;\n unit += 1;\n }\n const digits = unit > 0 && value < 10 ? 1 : 0;\n return `${new Intl.NumberFormat(locale, { maximumFractionDigits: digits }).format(value)} ${units[unit]}`;\n}\n\n// Dropped files bypass the input's `accept`, so it is checked here too.\nfunction accepts(file: File, accept?: string): boolean {\n const tokens = (accept ?? '')\n .split(',')\n .map((token) => token.trim().toLowerCase())\n .filter(Boolean);\n if (!tokens.length) return true;\n const [name, type] = [file.name.toLowerCase(), file.type.toLowerCase()];\n return tokens.some((token) =>\n token.startsWith('.') ? name.endsWith(token) : token.endsWith('/*') ? type.startsWith(token.slice(0, -1)) : type === token,\n );\n}\n\nfunction setInputFiles(input: HTMLInputElement | null, files: File[] | undefined) {\n if (!input) return;\n if (!files?.length || typeof DataTransfer === 'undefined') {\n input.value = '';\n return;\n }\n const transfer = new DataTransfer();\n for (const file of files) transfer.items.add(file);\n input.files = transfer.files;\n}\n\nexport interface DropzoneProps extends Omit<React.LabelHTMLAttributes<HTMLLabelElement>, 'title'> {\n ref?: React.Ref<HTMLLabelElement>;\n /** Called with the picked or dropped files that pass `accept` and `maxSize`. */\n onFiles?: (files: File[]) => void;\n /** Called with the files that were turned away, and why. */\n onReject?: (rejections: FileRejection[]) => void;\n /** Allowed types, as for `<input accept>`: `\".pdf,image/*\"`. */\n accept?: string;\n multiple?: boolean;\n /** Largest allowed file, in bytes. */\n maxSize?: number;\n /**\n * The current selection. It is kept in the native input, so the files submit\n * with a form and `required` validates. Without it the input is emptied after each pick.\n */\n files?: File[];\n disabled?: boolean;\n invalid?: boolean;\n /** `sm` is a single compact row. */\n size?: 'sm' | 'md';\n icon?: React.ReactNode;\n title?: React.ReactNode;\n /** Secondary line, e.g. the allowed types and size. */\n hint?: React.ReactNode;\n /** Props for the file input (name, id, required, aria-*…). */\n inputProps?: Omit<React.ComponentProps<'input'>, 'ref' | 'type'>;\n}\n\n/** Drop target that also opens the file browser on click, Enter or Space. */\nexport function Dropzone({\n onFiles,\n onReject,\n accept,\n multiple,\n maxSize,\n files,\n disabled,\n invalid,\n size = 'md',\n icon,\n title,\n hint,\n inputProps,\n className,\n children,\n ref,\n ...props\n}: DropzoneProps) {\n const [dragging, setDragging] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n React.useEffect(() => {\n setInputFiles(inputRef.current, files);\n }, [files]);\n\n const take = (list: FileList | null) => {\n const accepted: File[] = [];\n const rejected: FileRejection[] = [];\n for (const file of Array.from(list ?? [])) {\n if (!accepts(file, accept)) rejected.push({ file, reason: 'type' });\n else if (maxSize != null && file.size > maxSize) rejected.push({ file, reason: 'size' });\n else if (!multiple && accepted.length) rejected.push({ file, reason: 'count' });\n else accepted.push(file);\n }\n // Restore the selection (or empty the input, so the same file can be picked again).\n setInputFiles(inputRef.current, files);\n if (accepted.length) onFiles?.(accepted);\n if (rejected.length) onReject?.(rejected);\n };\n\n const hasFiles = (event: React.DragEvent) => event.dataTransfer.types.includes('Files');\n\n return (\n <label\n ref={ref}\n {...props}\n className={cx('oui-dropzone', className)}\n data-size={size}\n data-dragging={dragging ? '' : undefined}\n data-disabled={disabled ? '' : undefined}\n data-invalid={invalid ? '' : undefined}\n onDragEnter={(event) => {\n if (!disabled && hasFiles(event)) setDragging(true);\n }}\n onDragOver={(event) => {\n if (hasFiles(event)) event.preventDefault();\n }}\n onDragLeave={(event) => {\n if (!event.currentTarget.contains(event.relatedTarget as Node | null)) setDragging(false);\n }}\n onDrop={(event) => {\n if (!hasFiles(event)) return;\n event.preventDefault();\n setDragging(false);\n if (!disabled) take(event.dataTransfer.files);\n }}\n >\n <input\n {...inputProps}\n ref={inputRef}\n type=\"file\"\n className={cx('oui-dropzone__input', inputProps?.className)}\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n aria-invalid={invalid || undefined}\n onChange={(event) => take(event.target.files)}\n />\n <span className=\"oui-dropzone__icon\">{icon ?? <UploadIcon />}</span>\n <span className=\"oui-dropzone__text\">\n <span className=\"oui-dropzone__title\">\n {title ?? (multiple ? 'Drop files here or click to browse' : 'Drop a file here or click to browse')}\n </span>\n {hint != null && <span className=\"oui-dropzone__hint\">{hint}</span>}\n </span>\n {children}\n </label>\n );\n}\n\nexport type FileItemStatus = 'idle' | 'uploading' | 'success' | 'error';\n\nexport interface FileItemProps extends React.HTMLAttributes<HTMLDivElement> {\n ref?: React.Ref<HTMLDivElement>;\n name: string;\n /** Size in bytes. */\n size?: number;\n icon?: React.ReactNode;\n status?: FileItemStatus;\n /** Upload progress from 0 to 100, shown while `uploading`. `null` is indeterminate. */\n progress?: number | null;\n /** Message shown in place of the size when `status` is `error`. */\n error?: React.ReactNode;\n /** Adds the remove button. */\n onRemove?: () => void;\n removeLabel?: string;\n /** Extra controls before the remove button (download, preview…). */\n actions?: React.ReactNode;\n /** BCP 47 locale for the size. */\n locale?: string;\n}\n\n/** One file in a list: name, size, upload progress or error, and a remove button. */\nexport function FileItem({\n name,\n size,\n icon,\n status = 'idle',\n progress = null,\n error,\n onRemove,\n removeLabel,\n actions,\n locale,\n className,\n ref,\n ...props\n}: FileItemProps) {\n const uploading = status === 'uploading';\n const meta = [\n size != null && formatFileSize(size, locale),\n uploading && progress != null && `${Math.round(progress)}%`,\n ].filter(Boolean);\n return (\n <div ref={ref} className={cx('oui-file-item', className)} data-status={status} {...props}>\n <span className=\"oui-file-item__icon\">{icon ?? <FileIcon />}</span>\n <div className=\"oui-file-item__body\">\n <span className=\"oui-file-item__name\" title={name}>\n {name}\n </span>\n {status === 'error' && error ? (\n <span className=\"oui-file-item__meta\" role=\"alert\">\n {error}\n </span>\n ) : (\n meta.length > 0 && <span className=\"oui-file-item__meta\">{meta.join(' · ')}</span>\n )}\n {uploading && <Progress size=\"sm\" value={progress} aria-label={name} />}\n </div>\n {status === 'success' && <CircleCheckIcon className=\"oui-file-item__done\" />}\n {actions}\n {onRemove && (\n <IconButton size=\"sm\" aria-label={removeLabel ?? `Remove ${name}`} onClick={onRemove}>\n <XIcon />\n </IconButton>\n )}\n </div>\n );\n}\n\nexport interface FileUploadLabels {\n remove: (name: string) => string;\n}\n\nconst defaultLabels: FileUploadLabels = { remove: (name) => `Remove ${name}` };\n\nconst sameFile = (a: File, b: File) => a.name === b.name && a.size === b.size && a.lastModified === b.lastModified;\n\nexport interface FileUploadProps\n extends Pick<DropzoneProps, 'accept' | 'multiple' | 'maxSize' | 'onReject' | 'size' | 'icon' | 'title' | 'hint'> {\n ref?: React.Ref<HTMLLabelElement>;\n value?: File[];\n defaultValue?: File[];\n onValueChange?: (files: File[]) => void;\n /** Most files allowed when `multiple`. */\n maxFiles?: number;\n /** Upload state of a file, for showing progress and errors in the list. */\n fileState?: (file: File) => Pick<FileItemProps, 'status' | 'progress' | 'error'> | undefined;\n label?: React.ReactNode;\n description?: React.ReactNode;\n /** Error message. When set, the field is marked invalid. */\n error?: React.ReactNode;\n required?: boolean;\n disabled?: boolean;\n /** Submits the files with a form under this name. */\n name?: string;\n id?: string;\n className?: string;\n /** BCP 47 locale for file sizes. */\n locale?: string;\n /** Override texts for localisation. */\n labels?: Partial<FileUploadLabels>;\n}\n\n/**\n * File field: a dropzone plus the list of chosen files. It only collects\n * `File` objects; upload them yourself and report progress through `fileState`.\n */\nexport function FileUpload({\n value,\n defaultValue,\n onValueChange,\n accept,\n multiple,\n maxSize,\n maxFiles,\n onReject,\n fileState,\n size,\n icon,\n title,\n hint,\n label,\n description,\n error,\n required,\n disabled,\n name,\n id: idProp,\n className,\n locale,\n labels,\n ref,\n}: FileUploadProps) {\n const text = { ...defaultLabels, ...labels };\n const [inner, setInner] = React.useState(defaultValue ?? []);\n const files = value ?? inner;\n const generatedId = React.useId();\n const id = idProp ?? generatedId;\n const descriptionId = description != null ? `${id}-description` : null;\n const errorId = error ? `${id}-error` : null;\n const describedBy = cx(descriptionId, errorId) || undefined;\n\n const commit = (next: File[]) => {\n setInner(next);\n onValueChange?.(next);\n };\n\n const add = (added: File[]) => {\n if (!multiple) {\n commit(added.slice(0, 1));\n return;\n }\n const fresh = added.filter((file) => !files.some((existing) => sameFile(existing, file)));\n const room = maxFiles == null ? fresh.length : Math.max(0, maxFiles - files.length);\n if (fresh.length > room) onReject?.(fresh.slice(room).map((file) => ({ file, reason: 'count' })));\n if (room > 0 && fresh.length > 0) commit([...files, ...fresh.slice(0, room)]);\n };\n\n return (\n <div\n className={cx('oui-field', 'oui-file-upload', className)}\n data-disabled={disabled || undefined}\n data-invalid={error ? '' : undefined}\n >\n {label != null && (\n <label htmlFor={id} className=\"oui-field__label\">\n {label}\n {required && (\n <span className=\"oui-field__required\" aria-hidden>\n *\n </span>\n )}\n </label>\n )}\n <Dropzone\n ref={ref}\n files={files}\n onFiles={add}\n onReject={onReject}\n accept={accept}\n multiple={multiple}\n maxSize={maxSize}\n disabled={disabled}\n invalid={Boolean(error)}\n size={size}\n icon={icon}\n title={title}\n hint={hint}\n inputProps={{ id, name, required, 'aria-describedby': describedBy }}\n />\n {files.length > 0 && (\n <ul className=\"oui-file-upload__list\">\n {files.map((file, index) => (\n <li key={`${file.name}-${file.size}-${file.lastModified}`}>\n <FileItem\n name={file.name}\n size={file.size}\n locale={locale}\n removeLabel={text.remove(file.name)}\n onRemove={disabled ? undefined : () => commit(files.filter((_, position) => position !== index))}\n {...fileState?.(file)}\n />\n </li>\n ))}\n </ul>\n )}\n {description != null && (\n <p id={`${id}-description`} className=\"oui-field__description\">\n {description}\n </p>\n )}\n {error && (\n <div id={`${id}-error`} className=\"oui-field__error\">\n {error}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FileUpload.js","names":["React","cx","CircleCheckIcon","FileIcon","UploadIcon","XIcon","IconButton","Progress","FileRejection","file","File","reason","formatFileSize","bytes","locale","units","value","unit","length","digits","Intl","NumberFormat","maximumFractionDigits","format","accepts","accept","tokens","split","map","token","trim","toLowerCase","filter","Boolean","name","type","some","startsWith","endsWith","slice","setInputFiles","input","HTMLInputElement","files","DataTransfer","transfer","items","add","DropzoneProps","Omit","LabelHTMLAttributes","HTMLLabelElement","ref","Ref","onFiles","onReject","rejections","multiple","maxSize","disabled","invalid","size","icon","ReactNode","title","hint","inputProps","ComponentProps","Dropzone","t0","$","_c","children","className","props","t1","undefined","dragging","setDragging","useState","inputRef","useRef","t2","t3","current","useEffect","t4","list","accepted","rejected","Array","from","push","take","hasFiles","_temp","t5","t6","t7","t8","t9","event_0","event","t10","t11","Symbol","for","event_1","preventDefault","event_2","currentTarget","contains","relatedTarget","Node","t12","event_3","dataTransfer","t13","t14","t15","t16","event_4","target","t17","t18","t19","t20","t21","t22","t23","t24","types","includes","FileItemStatus","FileItemProps","HTMLAttributes","HTMLDivElement","status","progress","error","onRemove","removeLabel","actions","FileItem","uploading","Math","round","meta","join","FileUploadLabels","remove","defaultLabels","sameFile","a","b","lastModified","FileUploadProps","Pick","defaultValue","onValueChange","maxFiles","fileState","label","description","required","id","labels","Partial","FileUpload","idProp","text","inner","setInner","generatedId","useId","descriptionId","errorId","describedBy","next","commit","added","fresh","existing","room","max","_temp2","file_1","index","_","position","file_0","_c"],"sources":["../../../src/components/file-upload/FileUpload.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cx } from '../../utils/cx';\nimport { CircleCheckIcon, FileIcon, UploadIcon, XIcon } from '../../icons';\nimport { IconButton } from '../button/Button';\nimport { Progress } from '../progress/Progress';\n\nexport interface FileRejection {\n file: File;\n /** `type`: not matched by `accept`. `size`: larger than `maxSize`. `count`: over the file limit. */\n reason: 'type' | 'size' | 'count';\n}\n\n/** `1536` → `\"1.5 KB\"`. */\nexport function formatFileSize(bytes: number, locale?: string): string {\n const units = ['B', 'KB', 'MB', 'GB', 'TB'];\n let value = bytes;\n let unit = 0;\n while (value >= 1024 && unit < units.length - 1) {\n value /= 1024;\n unit += 1;\n }\n const digits = unit > 0 && value < 10 ? 1 : 0;\n return `${new Intl.NumberFormat(locale, { maximumFractionDigits: digits }).format(value)} ${units[unit]}`;\n}\n\n// Dropped files bypass the input's `accept`, so it is checked here too.\nfunction accepts(file: File, accept?: string): boolean {\n const tokens = (accept ?? '')\n .split(',')\n .map((token) => token.trim().toLowerCase())\n .filter(Boolean);\n if (!tokens.length) return true;\n const [name, type] = [file.name.toLowerCase(), file.type.toLowerCase()];\n return tokens.some((token) =>\n token.startsWith('.') ? name.endsWith(token) : token.endsWith('/*') ? type.startsWith(token.slice(0, -1)) : type === token,\n );\n}\n\nfunction setInputFiles(input: HTMLInputElement | null, files: File[] | undefined) {\n if (!input) return;\n if (!files?.length || typeof DataTransfer === 'undefined') {\n input.value = '';\n return;\n }\n const transfer = new DataTransfer();\n for (const file of files) transfer.items.add(file);\n input.files = transfer.files;\n}\n\nexport interface DropzoneProps extends Omit<React.LabelHTMLAttributes<HTMLLabelElement>, 'title'> {\n /** Ref to the dropzone element. */\n ref?: React.Ref<HTMLLabelElement>;\n /** Called with the picked or dropped files that pass `accept` and `maxSize`. */\n onFiles?: (files: File[]) => void;\n /** Called with the files that were turned away, and why. */\n onReject?: (rejections: FileRejection[]) => void;\n /** Allowed types, as for `<input accept>`: `\".pdf,image/*\"`. */\n accept?: string;\n /** Allow choosing several files. */\n multiple?: boolean;\n /** Largest allowed file, in bytes. */\n maxSize?: number;\n /**\n * The current selection. It is kept in the native input, so the files submit\n * with a form and `required` validates. Without it the input is emptied after each pick.\n */\n files?: File[];\n /** Disables picking and dropping. */\n disabled?: boolean;\n /** Shows the error styling. */\n invalid?: boolean;\n /** `sm` is a single compact row. */\n size?: 'sm' | 'md';\n /** Icon shown before the title. Defaults to an upload icon. */\n icon?: React.ReactNode;\n /** Main line. Defaults to \"Drop files here or click to browse\". */\n title?: React.ReactNode;\n /** Secondary line, e.g. the allowed types and size. */\n hint?: React.ReactNode;\n /** Props for the file input (name, id, required, aria-*…). */\n inputProps?: Omit<React.ComponentProps<'input'>, 'ref' | 'type'>;\n}\n\n/** Drop target that also opens the file browser on click, Enter or Space. */\nexport function Dropzone({\n onFiles,\n onReject,\n accept,\n multiple,\n maxSize,\n files,\n disabled,\n invalid,\n size = 'md',\n icon,\n title,\n hint,\n inputProps,\n className,\n children,\n ref,\n ...props\n}: DropzoneProps) {\n const [dragging, setDragging] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n React.useEffect(() => {\n setInputFiles(inputRef.current, files);\n }, [files]);\n\n const take = (list: FileList | null) => {\n const accepted: File[] = [];\n const rejected: FileRejection[] = [];\n for (const file of Array.from(list ?? [])) {\n if (!accepts(file, accept)) rejected.push({ file, reason: 'type' });\n else if (maxSize != null && file.size > maxSize) rejected.push({ file, reason: 'size' });\n else if (!multiple && accepted.length) rejected.push({ file, reason: 'count' });\n else accepted.push(file);\n }\n // Restore the selection (or empty the input, so the same file can be picked again).\n setInputFiles(inputRef.current, files);\n if (accepted.length) onFiles?.(accepted);\n if (rejected.length) onReject?.(rejected);\n };\n\n const hasFiles = (event: React.DragEvent) => event.dataTransfer.types.includes('Files');\n\n return (\n <label\n ref={ref}\n {...props}\n className={cx('oui-dropzone', className)}\n data-size={size}\n data-dragging={dragging ? '' : undefined}\n data-disabled={disabled ? '' : undefined}\n data-invalid={invalid ? '' : undefined}\n onDragEnter={(event) => {\n if (!disabled && hasFiles(event)) setDragging(true);\n }}\n onDragOver={(event) => {\n if (hasFiles(event)) event.preventDefault();\n }}\n onDragLeave={(event) => {\n if (!event.currentTarget.contains(event.relatedTarget as Node | null)) setDragging(false);\n }}\n onDrop={(event) => {\n if (!hasFiles(event)) return;\n event.preventDefault();\n setDragging(false);\n if (!disabled) take(event.dataTransfer.files);\n }}\n >\n <input\n {...inputProps}\n ref={inputRef}\n type=\"file\"\n className={cx('oui-dropzone__input', inputProps?.className)}\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n aria-invalid={invalid || undefined}\n onChange={(event) => take(event.target.files)}\n />\n <span className=\"oui-dropzone__icon\">{icon ?? <UploadIcon />}</span>\n <span className=\"oui-dropzone__text\">\n <span className=\"oui-dropzone__title\">\n {title ?? (multiple ? 'Drop files here or click to browse' : 'Drop a file here or click to browse')}\n </span>\n {hint != null && <span className=\"oui-dropzone__hint\">{hint}</span>}\n </span>\n {children}\n </label>\n );\n}\n\nexport type FileItemStatus = 'idle' | 'uploading' | 'success' | 'error';\n\nexport interface FileItemProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Ref to the item element. */\n ref?: React.Ref<HTMLDivElement>;\n /** File name. */\n name: string;\n /** Size in bytes. */\n size?: number;\n /** Icon before the name. Defaults to a file icon. */\n icon?: React.ReactNode;\n /** Upload state; sets the progress bar and error styling. */\n status?: FileItemStatus;\n /** Upload progress from 0 to 100, shown while `uploading`. `null` is indeterminate. */\n progress?: number | null;\n /** Message shown in place of the size when `status` is `error`. */\n error?: React.ReactNode;\n /** Adds the remove button. */\n onRemove?: () => void;\n /** Accessible name of the remove button. Defaults to \"Remove {name}\". */\n removeLabel?: string;\n /** Extra controls before the remove button (download, preview…). */\n actions?: React.ReactNode;\n /** BCP 47 locale for the size. */\n locale?: string;\n}\n\n/** One file in a list: name, size, upload progress or error, and a remove button. */\nexport function FileItem({\n name,\n size,\n icon,\n status = 'idle',\n progress = null,\n error,\n onRemove,\n removeLabel,\n actions,\n locale,\n className,\n ref,\n ...props\n}: FileItemProps) {\n const uploading = status === 'uploading';\n const meta = [\n size != null && formatFileSize(size, locale),\n uploading && progress != null && `${Math.round(progress)}%`,\n ].filter(Boolean);\n return (\n <div ref={ref} className={cx('oui-file-item', className)} data-status={status} {...props}>\n <span className=\"oui-file-item__icon\">{icon ?? <FileIcon />}</span>\n <div className=\"oui-file-item__body\">\n <span className=\"oui-file-item__name\" title={name}>\n {name}\n </span>\n {status === 'error' && error ? (\n <span className=\"oui-file-item__meta\" role=\"alert\">\n {error}\n </span>\n ) : (\n meta.length > 0 && <span className=\"oui-file-item__meta\">{meta.join(' · ')}</span>\n )}\n {uploading && <Progress size=\"sm\" value={progress} aria-label={name} />}\n </div>\n {status === 'success' && <CircleCheckIcon className=\"oui-file-item__done\" />}\n {actions}\n {onRemove && (\n <IconButton size=\"sm\" aria-label={removeLabel ?? `Remove ${name}`} onClick={onRemove}>\n <XIcon />\n </IconButton>\n )}\n </div>\n );\n}\n\nexport interface FileUploadLabels {\n remove: (name: string) => string;\n}\n\nconst defaultLabels: FileUploadLabels = { remove: (name) => `Remove ${name}` };\n\nconst sameFile = (a: File, b: File) => a.name === b.name && a.size === b.size && a.lastModified === b.lastModified;\n\nexport interface FileUploadProps\n extends Pick<DropzoneProps, 'accept' | 'multiple' | 'maxSize' | 'onReject' | 'size' | 'icon' | 'title' | 'hint'> {\n /** Ref to the dropzone element. */\n ref?: React.Ref<HTMLLabelElement>;\n /** Chosen files (controlled). */\n value?: File[];\n /** Initially chosen files when uncontrolled. */\n defaultValue?: File[];\n /** Called with the full list of files after a file is added or removed. */\n onValueChange?: (files: File[]) => void;\n /** Most files allowed when `multiple`. */\n maxFiles?: number;\n /** Upload state of a file, for showing progress and errors in the list. */\n fileState?: (file: File) => Pick<FileItemProps, 'status' | 'progress' | 'error'> | undefined;\n /** Visible field label. */\n label?: React.ReactNode;\n /** Help text under the dropzone. */\n description?: React.ReactNode;\n /** Error message. When set, the field is marked invalid. */\n error?: React.ReactNode;\n /** Requires at least one file before the form submits. */\n required?: boolean;\n /** Disables picking, dropping and removing files. */\n disabled?: boolean;\n /** Submits the files with a form under this name. */\n name?: string;\n /** Id of the file input. Generated when omitted. */\n id?: string;\n /** Class name for the root element. */\n className?: string;\n /** BCP 47 locale for file sizes. */\n locale?: string;\n /** Override texts for localisation. */\n labels?: Partial<FileUploadLabels>;\n}\n\n/**\n * File field: a dropzone plus the list of chosen files. It only collects\n * `File` objects; upload them yourself and report progress through `fileState`.\n */\nexport function FileUpload({\n value,\n defaultValue,\n onValueChange,\n accept,\n multiple,\n maxSize,\n maxFiles,\n onReject,\n fileState,\n size,\n icon,\n title,\n hint,\n label,\n description,\n error,\n required,\n disabled,\n name,\n id: idProp,\n className,\n locale,\n labels,\n ref,\n}: FileUploadProps) {\n const text = { ...defaultLabels, ...labels };\n const [inner, setInner] = React.useState(defaultValue ?? []);\n const files = value ?? inner;\n const generatedId = React.useId();\n const id = idProp ?? generatedId;\n const descriptionId = description != null ? `${id}-description` : null;\n const errorId = error ? `${id}-error` : null;\n const describedBy = cx(descriptionId, errorId) || undefined;\n\n const commit = (next: File[]) => {\n setInner(next);\n onValueChange?.(next);\n };\n\n const add = (added: File[]) => {\n if (!multiple) {\n commit(added.slice(0, 1));\n return;\n }\n const fresh = added.filter((file) => !files.some((existing) => sameFile(existing, file)));\n const room = maxFiles == null ? fresh.length : Math.max(0, maxFiles - files.length);\n if (fresh.length > room) onReject?.(fresh.slice(room).map((file) => ({ file, reason: 'count' })));\n if (room > 0 && fresh.length > 0) commit([...files, ...fresh.slice(0, room)]);\n };\n\n return (\n <div\n className={cx('oui-field', 'oui-file-upload', className)}\n data-disabled={disabled || undefined}\n data-invalid={error ? '' : undefined}\n >\n {label != null && (\n <label htmlFor={id} className=\"oui-field__label\">\n {label}\n {required && (\n <span className=\"oui-field__required\" aria-hidden>\n *\n </span>\n )}\n </label>\n )}\n <Dropzone\n ref={ref}\n files={files}\n onFiles={add}\n onReject={onReject}\n accept={accept}\n multiple={multiple}\n maxSize={maxSize}\n disabled={disabled}\n invalid={Boolean(error)}\n size={size}\n icon={icon}\n title={title}\n hint={hint}\n inputProps={{ id, name, required, 'aria-describedby': describedBy }}\n />\n {files.length > 0 && (\n <ul className=\"oui-file-upload__list\">\n {files.map((file, index) => (\n <li key={`${file.name}-${file.size}-${file.lastModified}`}>\n <FileItem\n name={file.name}\n size={file.size}\n locale={locale}\n removeLabel={text.remove(file.name)}\n onRemove={disabled ? undefined : () => commit(files.filter((_, position) => position !== index))}\n {...fileState?.(file)}\n />\n </li>\n ))}\n </ul>\n )}\n {description != null && (\n <p id={`${id}-description`} className=\"oui-field__description\">\n {description}\n </p>\n )}\n {error && (\n <div id={`${id}-error`} className=\"oui-field__error\">\n {error}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -3,17 +3,21 @@ import { Input as BaseInput } from '@base-ui/react/input';
|
|
|
3
3
|
import { Field } from '../field/Field';
|
|
4
4
|
export type ControlSize = 'sm' | 'md' | 'lg';
|
|
5
5
|
export interface InputProps extends Omit<BaseInput.Props, 'size'> {
|
|
6
|
+
/** Control height. */
|
|
6
7
|
size?: ControlSize;
|
|
7
8
|
/** Icon or text rendered inside the box, before the value. */
|
|
8
9
|
startAdornment?: React.ReactNode;
|
|
9
10
|
/** Icon, text or button rendered inside the box, after the value. */
|
|
10
11
|
endAdornment?: React.ReactNode;
|
|
11
12
|
}
|
|
13
|
+
/** Text input, optionally with `startAdornment` / `endAdornment` inside the box. Use `TextField` for a labelled one. */
|
|
12
14
|
export declare function Input({ size, startAdornment, endAdornment, className, ref, ...props }: InputProps): React.JSX.Element;
|
|
13
15
|
export interface PasswordInputProps extends Omit<InputProps, 'type' | 'endAdornment'> {
|
|
14
16
|
/** Whether the value is shown as plain text. */
|
|
15
17
|
visible?: boolean;
|
|
18
|
+
/** Initial visibility when uncontrolled. */
|
|
16
19
|
defaultVisible?: boolean;
|
|
20
|
+
/** Called when the user toggles visibility. */
|
|
17
21
|
onVisibleChange?: (visible: boolean) => void;
|
|
18
22
|
/** Accessible name of the show/hide button. */
|
|
19
23
|
toggleLabel?: string;
|
|
@@ -21,10 +25,12 @@ export interface PasswordInputProps extends Omit<InputProps, 'type' | 'endAdornm
|
|
|
21
25
|
/** Password input with a button that reveals the value. */
|
|
22
26
|
export declare function PasswordInput({ visible, defaultVisible, onVisibleChange, toggleLabel, ...props }: PasswordInputProps): React.JSX.Element;
|
|
23
27
|
export interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {
|
|
28
|
+
/** Ref to the `<textarea>`. */
|
|
24
29
|
ref?: React.Ref<HTMLTextAreaElement>;
|
|
25
30
|
/** Grow with content up to `maxRows` (uses CSS field-sizing where supported). */
|
|
26
31
|
autoResize?: boolean;
|
|
27
32
|
}
|
|
33
|
+
/** Multi-line text input. Use `TextareaField` for a labelled one. */
|
|
28
34
|
export declare function Textarea({ autoResize, className, rows, ref, ...props }: TextareaProps): React.JSX.Element;
|
|
29
35
|
interface FieldShellProps {
|
|
30
36
|
label?: React.ReactNode;
|
|
@@ -45,5 +51,6 @@ export interface PasswordFieldProps extends PasswordInputProps, FieldShellProps
|
|
|
45
51
|
export declare function PasswordField({ label, description, error, required, fieldProps, name, disabled, ref, ...props }: PasswordFieldProps): React.JSX.Element;
|
|
46
52
|
export interface TextareaFieldProps extends TextareaProps, FieldShellProps {
|
|
47
53
|
}
|
|
54
|
+
/** Labelled textarea with description and error message. */
|
|
48
55
|
export declare function TextareaField({ label, description, error, required, fieldProps, name, disabled, ref, ...props }: TextareaFieldProps): React.JSX.Element;
|
|
49
56
|
export {};
|